mir.pe (일반/어두운 화면)
최근 수정 시각 : 2024-03-01 20:33:39

MIPS(ISA)



파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는
문서의 r94
, 번 문단
에서 가져왔습니다. 이전 역사 보러 가기
파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
[ 펼치기 · 접기 ]
문서의 r94 ( 이전 역사)
문서의 r ( 이전 역사)

명령어 집합
CISC AMD64 x86 · M68K · 68xx · Z80 · 8080 · MOS 65xx · VAX
RISC AArch64 ARM · RISC-V · MIPS · DEC Alpha · POWER PowerPC · CELL-BE
LoongArch · OpenRISC · PA-RISC · SPARC · Blackfin · SuperH · AVR32 AVR
VLIW
EPIC
E2K · IA-64 · Crusoe

1. 개요2. 역사
2.1. 마이크로아키텍처 목록
3. MIPS 아키텍처
3.1. MIPS32 (32-bit)3.2. MIPS64 (64-bit)
4. 이전 버전
4.1. MIPS I (32-bit)4.2. MIPS II (32-bit)4.3. MIPS III (64-bit)4.4. MIPS IV (64-bit)4.5. MIPS V (64-bit)
5. MIPS ABI
5.1. 호출 규약
6. 명령어 목록7. CPU 목록

1. 개요

MIPS(Microprocessor without Interlocked Pipeline Stages)란 MIPS Technologies에서 개발한 RISC 계열의 명령어 집합 체계이다.

MIPS 명령어 체계는 굉장히 깔끔하게 설계되어 있기 때문에 많은 대학교의 컴퓨터 아키텍처 과목에서 가르치고 있다.

2021년에는 개발사가 개발 중단을 선언하고 RISC-V로 이주를 발표했다.

2. 역사

최초의 MIPS 명령어 체계는 1986년 1월 MIPS Computer Systems(현 MIPS Technologies)에서 발표한 R2000 마이크로프로세서와 함께 <MIPS>이라는 이름으로 발표되었다. R2000은 RISC 기반의 명령어가 처음으로 적용되어 상용화된 CPU이다. 그 당시에 R2000은 모토로라 68000 인텔 80386 시리즈와 경쟁했다. 이 버전은 이후 MIPS II가 발표되며 구분을 위해 MIPS I로 불리게 된다.

1990년 R6000과 함께 MIPS II가 발표되었다.

1992년 64비트 레지스터와 정수 연산이 지원되는 MIPS III가 발표되었다. 1992년 실리콘 그래픽스가 인수했다.

1994년에는 MIPS IV가 발표되었다.

1996년에 MIPS V가 발표되었다. 현존하는 MIPS 명령어 체계는 전부 MIPS V를 기반으로 개선이 이루어지고 있는 상태이다.

최신 버전의 MIPS 명령어 체계는 MIPS V를 기반으로 한 MIPS32/MIPS64 release 6로, 2014년에 발표되었다. Release 6은 하위 호환성을 거의 유지하지만 일부 명령어가 변경되어 필요시 trap을 사용하여 에뮬레이트해야 한다.

MIPS Technologies는 1998년 실리콘 그래픽스가 인텔 아이태니엄 시리즈로 이전하기로 결정해 분사하면서 2000년에 매각했으며, 2000년대 중종반부터 뛰어난 전력효율을 기반으로 스마트 시대와 맞물려 시장을 넓혀온 ARM에 입지를 잃어가다가 결국 2012년 말에 Apple iOS 기기용 GPU PowerVR 시리즈로 유명한 이미지네이션 테크놀로지에 인수되었다. 관련기사 그러나 이를 인수한 이미지네이션이 애플의 GPU 공급을 주력으로 잘 하다가 끊기면서 파산위기에 몰리고, 결국 2017년에 중국계 사모 투자 기업인 Canyon Bridge Capital Partners에서 6억 7500만 달러로 인수되면서, MIPS Technologies는 별도로 다른 중국계 사모 투자 기업인 Tallwood Venture Capital에 6500만 달러에 팔았다.

이후, 이듬해인 2018년 6월 16일에 AI 스타트업 기업인 웨이브 컴퓨팅이 사모 투자 기업에게서 사들여 자회사로 만들었다. 그러나 2020년 4월 30일 웨이브 컴퓨팅은 법원에 챕터 11 파산 보호(한국의 법인회생제도에 상당)를 신청했다. # 그리고 2021년 3월 1일 파산 보호 상태에서 벗어난 웨이브 컴퓨팅은 8세대 아키텍처부터 MIPS 아키텍처가 아닌 RISC-V 아키텍처를 개발할 것이며, 그럼에도 불구하고 MIPS 아키텍처 라이선스 사업은 계속될 것이라고 한다. #

다만 이를 두고 MIPS가 완전히 죽었다고 말하기에는 아직 시기상조인데, 임베디드 환경에서는 아직도 구형 MIPS 설계가 꽤 사용되고 있기 때문이다. 대표적으로는 라링크/ 미디어텍, 퀄컴 아데로스, 시스코 등이 네트워크 프로세서에 MIPS를 꾸준히 사용하였다. 물론 이런 분야에서도 천천히 Arm, RISC-V에 밀려나고 있어 시한부 신세이기는 하지만, 당분간은 어느 정도의 존재감을 가지고 있을 것으로 보인다.

MIPS 아키텍처의 전반적인 침체에도 불구하고, 2020년까지 중국 Loongson(龙芯)에서 MIPS ISA의 새로운 CPU를 설계, 제조하였다. IT 기술이 미국에 종속되는 것을 경계하고 미국산 CPU에 백도어가 들어있지 않을까 의심하는 중국에서 국책 사업으로 밀어주고 있기 때문. 2019년에 출시된 Loongson 3A4000이 대충 AMD 엑스카베이터와 비슷하다고 평가받았으니 미국과의 기술격차는 대충 10년 정도로 추정된다. 성능은 느리고 ( 규모의 경제를 할 수 없으니) 가격은 비싼데다, 운영체제로는 중국산 리눅스 배포판만 쓸 수 있고 프로그램은 태부족하니 애국심, 국산을 강조해도 민간 판매가 잘 될 리가 없어서, 주로 관용, 군용 납품으로 들어가고 있다. 웨이브 컴퓨팅이 MIPS 개발 중단을 선언하자, 2021년 Loongson은 LoongArch라는 자체 아키텍처를 급조하였으나, 기존에 판매된 MIPS64 Loongson CPU가 어디 사라지는 것은 아니기 때문에...

러시아 바이칼(Baikal)사도 비슷한 이유로 MIPS 프로세서를 밀고있다. 바이칼은 원래 Arm을 라이선스해서 CPU를 설계해왔지만 미국의 제재로 이것이 막히면서 MIPS P5600 설계를 대신 구매해 사용하였다. 이는 ISA만 들여오고 마이크로아키텍처는 자체개발한 중국 Loongson에 비하면 뒤떨어지는 감이 있었고, 자국내에서도 소련 시절부터 ISA와 마이크로아키텍처까지 자체적으로 만든 러시아의 모스크바 스팍연구소의 옐브루스 프로세서와 달리 바이칼사는 원천기술이 없는 회사였기 때문이다. 결국 라이선스를 추가로 구매해 Arm으로 전향하였지만 ARM에서도 A57같은 구형 아키텍처만 사올 수 있었고 덕분에 VLIW라는 한계가 있지만 성능은 그럭저럭 나오는 옐브루스 프로세서와 달리 바이칼의 CPU 성능은 처참하게 떨어졌다.[1] 게다가 러시아-우크라이나 전쟁에 따른 국제사회의 제재로 Arm 라이선스와 TSMC 팹을 사용할 수 없게 되어 바이칼사의 반도체 독립 야망은 물건너가고 말았다. 모스크바 스팍연구소는 러시아 자국 파운드리 회사에서 CPU를 생산해본 경험이 있지만[2] 바이칼사는 TSMC 같은 외국회사에만 의존했기 때문이다.[3] 이 때문에 모스크바 스팍연구소는 여전히 건제한 반면 바이칼사는 결국 2023년 파산하고 만다. #

2.1. 마이크로아키텍처 목록

마이크로아키텍처 출시 연도 ISA 파이프라인 비고
ISA 버전 비트 폭 너비 단계 수
MIPS R2000 1986 MIPS I 32 1 5
MIPS R3000 1988 MIPS I 32 1 5
MIPS R6000 1991 MIPS II 32 1 5
MIPS R4000 1991 MIPS III 64 1 8 고클럭 최적화
MIPS R4200 1993 MIPS III 64 1 5 저전력 최적화
MIPS R8000 1994 MIPS IV 64 4 5
MIPS R5000 1996 MIPS IV 64 2 5
MIPS R10000 1996 MIPS IV 64 4 5-7 비순차적 실행 도입
MIPS R12000 1998 MIPS IV 64 4 6-8

3. MIPS 아키텍처

MIPS ISA는 MIPS V(Release 1) 이후로 32비트/64비트 여부에 따라 MIPS32/MIPS64로 구분된다. 현재 최신 버전은 Release 6이다.
MIPS 명령어 체계를 확장한 명령어 체계로는 MCU, SmartMIPS, MDMX, MIPS-3D, microMIPS, nanoMIPS, MIPS16e등이 있다.

MIPS 명령어 체계는 크게 3가지 종류의 명령어로 구성되어 있다. 들어가기에 앞서 opcode라는 개념에 대해서 알아야 할 필요가 있다. opcode는 해당 명령어가 실행할 연산의 종류를 정의한다.

3.1. MIPS32 (32-bit)

32bit MIPS32 명령어는 크게 R타입 명령어, I타입 명령어, J타입 명령어로 나뉘어진다. 32bit MIPS는 총 32bit의 길이를 가지게 되며, 일반적으로 32개의 레지스터를 사용하기 때문에 5bit로 레지스터 주소를 표현하게 된다. 명령어 타입별로 각각 살펴보면
R타입 명령어
6bit opcode 5bit rs 5bit rt 5bit rd 5bit shamt[4] 6bit funct
I타입 명령어
6bit opcode 5bit rs 5bit rt 16bit immediate
J타입 명령어
6bit opcode 26bit address
로 이루어져 있다.

3.2. MIPS64 (64-bit)

4. 이전 버전

4.1. MIPS I (32-bit)

MIPS I는 다음 명령어를 지원한다:

4.2. MIPS II (32-bit)

MIPS II에서는 다음 명령어가 추가되었다:

4.3. MIPS III (64-bit)

4.4. MIPS IV (64-bit)

4.5. MIPS V (64-bit)

5. MIPS ABI

5.1. 호출 규약

MIPS 레지스터의 호출 규약은 일반적으로 사용되는 O32 ABI와 N64/N32 ABI로 나뉘어진다. O32 ABI는 32bit CPU를 위한 레지스터 호출 규약이며, N64/N32 ABI는 64bit CPU를 위한 레지스터 호출 규약이다. 기본적인 레지스터 호출 규약은 다음과 같다.
이름 레지스터 번호 용도
$zero $0 항상 0을 출력하는 레지스터. 이 레지스터의 값은 바꿀 수 없다
$at $1 의사 명령어(특정 조건 만족시 분기 명령어) 계산 결과를 위해 예약된 레지스터
$v0 ~ $v1 $2 ~ $3 함수로부터 반환된 값을 저장하는 레지스터
$a0 ~ $a3 $4 ~ $7 함수 인수 저장용 레지스터
$t0 ~ $t7 $8 ~ $15 어셈블러나 어셈블리 언어에서 값을 임시로 저장할 때 사용하는 레지스터
$s0 ~ $s7 $16 ~ $23 오랫동안 지속되는 값을 저장할 때 사용하는 레지스터
$t8 ~ $t9 $24 ~ $25 어셈블러나 어셈블리 언어에서 값을 임시로 저장할 때 사용하는 레지스터
$k0 ~ $k1 $26 ~ $27 OS 커널을 위해 예약된 레지스터
$gp $28 전역 포인터의 값을 저장하는 레지스터
$sp $29 스택 포인터의 값을 저장하는 레지스터
$fp $30 프레임 포인터의 값을 저장하는 레지스터
$ra $31 주소 반환값을 저장하는 레지스터

6. 명령어 목록

파일:상세 내용 아이콘.svg   자세한 내용은 MIPS(ISA)/명령어 목록 문서
번 문단을
부분을
참고하십시오.

7. CPU 목록

위키백과 문서 참고

VR로 시작하는 것은 NEC에서 만든 커스텀 칩이고, TX로 시작하는 것은 도시바에서 만든 커스텀 칩이다.

7.1. 32비트

7.2. 64비트


[1] 국내에서도 몇번 리뷰된 성능 덜떠러진 러시아산 PC들이 이 바이칼사의 Arm CPU가 장착된 PC들이다. # 48코어짜리 서버용 A75 CPU가 있긴 하지만 2019년 나온 제온 수준의 성능밖에 안된다. [2] 옐브루스-2S, 옐브루스-4 [3] 다만 모스크바 스팍연구소도 서버나 PC에 사용되는 고성능 CPU들은 TSMC에서 생산했다. 자국 파운드리 회사는 산업용이나 군사용등 러시아 내수용 제품만 생산했기 때문에 2020년에서야 65nm 공정 반도체를 생산했기 때문이다. [4] shift amout의 약자. 비트 시프트 연산용이다.