MIPS 아키텍처
MIPS architecture디자이너 | MIPS 테크놀로지, 이미지 테크놀로지 |
---|---|
비트 | 64비트(32→64) |
소개했다 | 전 ( |
버전 | MIPS32/64 릴리즈 6 (2014) |
설계. | RISC |
유형 | 등록-등록 |
부호화 | 고정된. |
분기 | 분기 상태 점검 후 명령 지연이 1인 상태에서 비교 및 분기합니다. |
엔디안니스 | Bi |
페이지 크기 | 4 KB |
내선번호 | MDMX, MIPS-3D |
열다. | 부분적으로. R12000 프로세서는 20년 이상 시장에 나와 있기 때문에 특허 클레임의 대상이 될 수 없습니다.따라서 R12000 이후의 프로세서는 완전히 열려 있습니다. |
레지스터 | |
범용 | 32 |
부동 소수점 | 32 |
MIPS(Interlocked Pipelined [1]Stage 없는 마이크로프로세서)는 MIPS Computer Systems(현 MIPS Technologies)가 개발한 RISC(Reduced Instruction Set Computer) 명령 세트 아키텍처(ISA)[2]: A-1 [3]: 19 패밀리입니다.
MIPS에는 MIPS I, II, III, IV, V 등 여러 버전이 있으며 MIPS32/64 릴리즈(각각 32비트 및 64비트 구현용)도 있습니다.초기 MIPS 아키텍처는 32비트였지만 64비트 버전은 나중에 개발되었습니다.2017년 4월 현재 MIPS의 현재 버전은 MIPS32/64 Release [4][5]6입니다.MIPS32/64는 주로 사용자 모드아키텍처와 더불어 특권 커널모드의 System Control Coprocessor를 정의함으로써 MIPS I-V와 다릅니다.
MIPS 아키텍처에는 몇 가지 옵션 확장 기능이 있습니다.부동 소수 점 단일 명령 다중 데이터 명령은 흔한 3Dtasks,[6]MDMX(MaDMaX)에 바쳐지의 MIPS-3D은 간단한 세트 더 광범위한 정수 단일 명령 다중 데이터 명령은 명령 스트림에 프로그램 덜 room,[7]과 MIPSMT, multithreading capa을 추가를 데리고 가 버릴 압박을 추가 64비트 부동 소수 점 레지스터, MIPS16e 사용하여.bility를 클릭합니다.[8]
대학이나 기술학교의 컴퓨터 아키텍처 코스는 MIPS [9]아키텍처를 공부하는 경우가 많습니다.이 아키텍처는 Alpha와 같은 이후의 RISC 아키텍처에 큰 영향을 미쳤습니다.2021년 3월 MIPS는 회사가 RISC-V로 [10]전환함에 따라 MIPS 아키텍처의 개발이 종료되었다고 발표했습니다.
역사
![]() | 이 섹션은 확장해야 합니다.추가해서 도와주시면 됩니다. (2020년 2월) |
MIPS 아키텍처의 첫 번째 버전은 MIPS Computer Systems에 의해 R2000 마이크로프로세서용으로 설계되었으며, MIPS의 첫 번째 구현입니다.MIPS와 R2000은 [citation needed]모두 1985년에 함께 도입되었습니다.MIPS II가 도입되었을 때 MIPS는 새로운 [3]: 32 버전과 구별하기 위해 MIPS I로 이름이 변경되었습니다.
MIPS Computer Systems의 R6000 마이크로프로세서(1989)는 최초의 MIPS II 구현이었습니다.[3]: 8 서버용으로 설계된 R6000은 Bipolar Integrated Technology에 의해 제조 및 판매되었지만 상업적으로는 실패했습니다.1990년대 중반, 임베디드 시스템의 많은 새로운 32비트 MIPS 프로세서는 MIPS II 구현이었습니다.이는 1991년 64비트 MIPS III 아키텍처의 도입으로 1999년 [3]: 19 MIPS32가 도입될 때까지 MIPS II가 최신 32비트 MIPS 아키텍처로 남게 되었기 때문입니다.
MIPS Computer Systems의 R4000 마이크로프로세서(1991)는 최초의 MIPS III 구현이었다.개인용, 워크스테이션 및 서버 컴퓨터에서 사용하도록 설계되었습니다.MIPS Computer Systems는 MIPS 아키텍처와 R4000을 적극적으로 홍보하고 Advanced Computing Environment(ACE) 컨소시엄을 설립하여 MIPS를 주요 퍼스널 컴퓨팅 플랫폼으로 확립하는 것을 목표로 한 ARC(Advanced RISC Computing) 표준을 발전시켰습니다.ARC는 개인용 컴퓨터에서는 거의 성공을 거두지 못했지만, R4000(및 R4400 파생 모델)은 워크스테이션과 서버 컴퓨터, 특히 가장 큰 사용자인 실리콘 그래픽스(Silicon Graphics)에 의해 널리 사용되었다.R4000의 다른 용도로는 하이엔드 임베디드 시스템과 슈퍼컴퓨터가 있습니다.MIPS III는 결국 많은 내장 마이크로프로세서에 의해 구현되었습니다.Quantum Effect Design의 R4600(1993)과 그 파생 모델은 하이엔드 임베디드 시스템, 로우엔드 워크스테이션 및 서버에 널리 사용되었습니다.MIPS 테크놀로지스의 R4200(1994)은 임베디드 시스템, 노트북 및 퍼스널 컴퓨터용으로 설계되었습니다.NEC전자가 제작한 파생 모델인 R4300i는 닌텐도 64 게임기에 사용되었다.닌텐도 64는 플레이스테이션과 함께 1990년대 중반 MIPS 아키텍처 프로세서의 가장 많은 사용자 중 하나였다.
최초의 MIPS IV 실장은 MIPS Technologies R8000 마이크로프로세서 칩셋(1994)이었습니다.R8000의 설계는 Silicon Graphics, Inc.에서 시작되었으며 대규모 부동 소수점 워크로드에서 고성능이 중요한 과학 및 기술 애플리케이션용 하이엔드 워크스테이션 및 서버에서만 사용되었습니다.그 후의 실장은 MIPS 테크놀로지 R10000(1996)과 Quantum Effect Devices R5000(1996)과 RM7000(1998)이었습니다.NEC Electronics와 Toshiba가 제조 및 판매한 R10000과 그 파생 모델은 워크스테이션, 서버 및 슈퍼컴퓨터에서 NEC, Pyramid Technology, Silicon Graphics 및 Tandem Computers(특히 탠덤 컴퓨터)에 의해 사용되었습니다.R5000 및 R7000은 하이엔드 임베디드 시스템, 퍼스널 컴퓨터, 로우엔드 워크스테이션 및 서버에서 사용되었습니다.도시바의 R5000의 파생 모델인 R5900은 플레이스테이션2 게임기를 작동시킨 소니 컴퓨터 엔터테인먼트의 Emotion Engine에 사용되었다.
1996년 10월 21일 MIPS Digital Media Extensions(MDMX) 확장과 함께 Microprocessor Forum 1996에서 발표된 MIPS V는 3D 그래픽 [11]변환의 성능을 향상시키도록 설계되었습니다.1990년대 중반, 비임베디드 MIPS 마이크로 프로세서의 주요 용도는 실리콘 그래픽스의 그래픽 워크스테이션이었습니다.MIPS V는 정수 전용 [12]MDMX 확장에 의해 완성되어 3D 그래픽 애플리케이션의 성능을 향상시키는 완전한 시스템을 제공합니다.MIPS V의 실장은 도입되지 않았습니다.1997년 5월 12일, Silicon Graphics는 H1 ("Beast") 및 H2 ("Capitan") 마이크로프로세서를 발표했습니다.전자는 MIPS V의 첫 번째 구현으로,[13] 1999년 상반기에 도입될 예정이었습니다.H1과 H2 프로젝트는 나중에 합쳐졌고 결국 1998년에 취소되었다.MIPS V의 실장은 없었지만, MIPS64 Release 1(1999)은 MIPS V를 베이스로 하고 있어 페어링 싱글이라고 불리는 옵션의 코프로세서 1(FPU) 기능으로서 모든 기능을 유지하고 있습니다.
1998년 MIPS 테크놀로지가 실리콘 그래픽스에서 분사되면서 임베디드 시장에 다시 초점을 맞췄다.MIPS V를 통해 각 후속 버전은 이전 버전의 엄격한 슈퍼셋이었지만 이 속성에 [citation needed]문제가 있음을 알게 되었고 아키텍처 정의(MIPS32 및 MIPS64)가 변경되어 32비트 및 64비트아키텍처를 정의하도록 변경되었습니다.둘 다 [14]1999년에 도입되었습니다.MIPS32는 MIPS III, MIPS IV 및 MIPS V의 일부 추가 기능을 갖춘 MIPS II를 기반으로 하며, MIPS64는 발표 즉시 MIPS64의 라이선스를 취득한 MIPS V.[14] NEC, 도시바 및 SiByte(나중에 Broadcom에 의해 취득됨)를 기반으로 합니다.필립스, LSI로직, IDT, 라자마이크로일렉트로닉스, 카비움, 룽슨테크놀로지, 잉제닉반도체 등이 그 후 합류했다.MIPS32/MIPS64 릴리즈 5는 2012년 [15]12월 6일에 발표되었습니다.숫자 4는 많은 아시아 [16]문화권에서 불길한 것으로 인식되기 때문에 릴리즈 4는 생략되었다.
2018년 12월, MIPS 아키텍처의 새로운 소유자인 Wave Computing은 MIPS ISA가 MIPS Open [17]Initiative라는 프로그램에서 오픈 소스될 것이라고 발표했습니다.이 프로그램은 32비트 및 64비트 설계의 최신 버전에 대한 접근을 개방하여 라이선스 비용이나 로열티 비용 없이 사용할 수 있도록 할 뿐만 아니라 기존 MIPS [18][19][20]특허에 대한 라이선스를 참가자에게 부여하는 것을 목적으로 하고 있습니다.
2019년 3월에 로열티 프리 라이선스로 아키텍처의 한 버전을 [21]이용할 수 있게 되었지만, 그 해 말 이 프로그램은 다시 [22]종료되었다.
2021년 3월, Wave Computing은 MIPS 아키텍처의 개발이 중단되었다고 발표했습니다.동사는, RISC-V 재단에 참가하고 있습니다.향후 프로세서 설계는 RISC-V [10][23]아키텍처를 기반으로 합니다.그럼에도 불구하고 Loongson과 같은 일부 라이센스 계약자는 MIPS 호환 ISA의 새로운 확장을 [24]계속하고 있습니다.
설계.
![]() | 이 섹션은 확장해야 합니다.추가해서 도와주시면 됩니다. (2020년 2월) |
MIPS는 최대 4개의 코프로세서(CP0/1/2/3)를 지원하는 모듈러 아키텍처입니다.MIPS 용어에서 CP0은 시스템 제어 코프로세서(MIPS I-V에서 구현 정의되어 있는 프로세서의 필수 부분), CP1은 옵션의 부동소수점 유닛(FPU), CP2/3은 옵션의 구현 정의 코프로세서(MIPS III에서 제거된 CP3 및 기타 운영 코프로세서)입니다.예를 들어 PlayStation 비디오 게임 콘솔에서 CP2는 GTE(Geometry Transformation Engine)로, 3D 컴퓨터 그래픽의 지오메트리 처리를 가속화합니다.
버전
MIPS I
MIPS는 로드/스토어 아키텍처(레지스터 아키텍처라고도 함)입니다.메모리에 액세스하기 위해서 사용되는 로드/스토어 명령을 제외하고, 모든 명령은 레지스터로 동작합니다.
레지스터
MIPS I에는 32비트 General Purpose Register(GPR; 범용 레지스터)가 32개 있습니다.Register $0은 0에 유선 연결되어 있으며, 이 0에 대한 쓰기는 폐기됩니다.레지스터 $31은 링크 레지스터입니다.다른 명령에서 비동기적으로 실행되는 정수 곱셈 및 나눗셈 명령의 경우 32비트 레지스터 쌍인 HI와 LO가 제공됩니다.범용 레지스터와 HI/LO 레지스터 사이에 데이터를 복사하기 위한 작은 명령 세트가 있습니다.
프로그램 카운터에는 32비트가 있다.MIPS I 명령어는 32비트 길이로 자연스러운 단어 경계에 맞춰져 있기 때문에 2개의 하위 비트에는 항상 0이 포함됩니다.
명령 형식
명령은 R(레지스터), I(즉시), J(점프)의 3가지 유형으로 나뉩니다.모든 명령어는 6비트 opcode로 시작합니다.opcode와 더불어 R형 명령은 3개의 레지스터,[25] 시프트량 필드 및 함수 필드를 지정하고, I형 명령은 2개의 레지스터와 16비트 즉시 값을 지정하며, J형 명령은 26비트 점프 [2]: A-174 타깃을 가진 opcode를 따릅니다.
코어 명령 세트에 사용되는 3가지 형식은 다음과 같습니다.
유형 | -31- 포맷(비트) -0- | |||||
---|---|---|---|---|---|---|
R | opcode(6) | rs(5) | rt(5) | rd(5) | 모조품(5) | 기능(6) |
I | opcode(6) | rs(5) | rt(5) | 즉시(16) | ||
J | opcode(6) | 주소(26) |
CPU 명령
MIPS I에는 8비트바이트, 16비트 하프워드 및 32비트 워드를 로드 및 저장하는 명령이 있습니다.주소 지정 모드는 베이스 + 변위 중 하나만 지원됩니다.MIPS I은 32비트 아키텍처이기 때문에 32비트 미만의 수량을 로드하려면 32비트로의 부호 확장 또는 제로 확장 중 하나가 필요합니다."서명되지 않음"이 부가된 로드 명령은 0 확장을 수행합니다. 그렇지 않으면 부호 확장이 수행됩니다.로드 명령은 GPR(rs)의 내용에서 베이스를 소스하고 결과를 다른 GPR(rt)에 씁니다.스토어 명령은 GPR(rs)의 내용 및 스토어 데이터를 다른 GPR(rt)에서 소스로 합니다.모든 로드 및 저장 명령은 부호 확장 16비트를 즉시 사용하여 기본 값을 합산하여 메모리 주소를 계산합니다.MIPS I에서는 모든 메모리액세스를 그 자연스러운 단어 경계에 맞춰야 합니다.그렇지 않으면 예외가 발생합니다.효율적인 비정렬 메모리 액세스를 지원하기 위해 "왼쪽" 또는 "오른쪽"이 붙은 로드/저장 명령이 있습니다.모든 로드 지침은 로드 지연 슬롯에 따릅니다.로드 지연 슬롯의 명령은 로드 명령에 의해 로드된 데이터를 사용할 수 없습니다.로드 지연 슬롯은 부하에 의존하지 않는 명령으로 채워질 수 있습니다.이 명령을 찾을 수 없는 경우 nop이 대체됩니다.
MIPS I에는 더하기 및 빼기를 수행하는 지침이 있습니다.이 명령어는 2개의 GPR(rs와 rt)에서 오퍼랜드를 소스하고 결과를 3번째 GPR(rd)에 씁니다.또는 addition에 의해 오퍼랜드 중 하나가 즉시 16비트(32비트로 부호 확장됨)에서 송신될 수 있습니다.덧셈 및 뺄셈 명령에는 두 가지 종류가 있습니다.기본적으로 결과가 오버플로우하면 예외가 표시되며, "서명되지 않은" 접미사가 있는 명령은 예외가 표시되지 않습니다.오버플로우 검사는 결과를 32비트 2의 보완 정수로 해석합니다.MIPS I에는 비트 논리 AND, OR, XOR 및 NOR을 실행하는 명령이 있습니다.이들 명령어는 2개의 GPR에서 오퍼랜드를 소스로 하여 결과를 3번째 GPR에 씁니다.AND, OR 및 XOR 명령에서는 오퍼랜드 중 하나를 즉시 16비트(확장이 32비트로 제로)에서 송신할 수 있습니다.Set on relation 명령은 지정된 관계가 참 또는 거짓일 경우 수신인 레지스터에 1 또는 0을 기록합니다.이들 명령어는 2개의 GPR 또는1개의 GPR 및 16비트 즉시(32비트로 부호 확장)에서 오퍼랜드를 송신하고 결과를 3번째 GPR에 씁니다.디폴트로는 오퍼랜드는 부호 있는 정수로 해석됩니다."unsigned"가 붙은 이러한 명령어의 변형은 오퍼랜드를 부호 없는 정수(부호 확장 16비트에서 오퍼랜드를 발신하는 것도 마찬가지)로 해석합니다.
Load Immediate Upper 명령은 GPR의 상위 16비트에 16비트를 복사합니다.이 명령어는 Or Immediate 명령과 함께 32비트를 레지스터에 로드하기 위해 사용됩니다.
MIPS I에는 왼쪽 및 오른쪽 논리 시프트와 오른쪽 산술 시프트를 수행하는 지침이 있습니다.피연산자는 GPR(rt)에서 취득되며, 결과는 다른 GPR(rd)에 기입된다.시프트 거리는 GPR(rs) 또는 5비트 "시프트 양"("sa" 필드)에서 구합니다.
MIPS I에는 부호 있는 정수 및 부호 없는 정수 곱셈 및 나눗셈 명령이 있습니다.이들 명령어는 2개의 GPR에서 오퍼랜드를 소스하여 HI 및 LO라고 하는32비트 레지스터 쌍에 결과를 씁니다.이는 다른 CPU 명령과는 별도로(및 동시에) 실행할 수 있기 때문입니다.곱셈의 경우 64비트 제품의 상위 반쪽과 하위 반쪽이 각각 HI와 LO에 쓰여집니다.나눗셈의 경우 몫은 LO에 쓰고 나머지는 HI에 씁니다.결과에 액세스하기 위해 HI 또는 LO의 내용을 GPR에 복사하기 위한 지침 쌍(Move from HI 및 Move from LO)이 제공됩니다.이러한 지침은 연동됩니다. HI 및 LO의 판독은 HI 및 LO에 쓸 미완료 산술 명령을 지나가지 않습니다.또 다른 지침 쌍(Move to HI 또는 Move to LO)은 GPR의 내용을 HI 및 LO로 복사합니다.이 지침은 예외 처리 후 HI 및 LO를 원래 상태로 복원하는 데 사용됩니다.HI 또는 LO로 표시된 지침은 HI 또는 LO로 기록되지 않는 두 가지 지침으로 구분해야 합니다.
모든 MIPS I 제어 흐름명령에는 분기 지연 슬롯이 따릅니다.분기 지연 슬롯이 유용한 작업을 수행하는 명령에 의해 채워지지 않는 한 nop이 대체된다.MIPS I 브랜치명령어는 GPR(rs)의 내용을 0 또는 다른 GPR(rt)과 비교합니다.지정된 조건이 참일 경우 부호 있는 정수 및 브랜치입니다.제어는 프로그램 카운터(지시 주소)와10 8의 합계에 16비트 오프셋을 2비트 이동시켜 18비트 결과를 부호 확장해 32비트 부호 확장 결과를 가산함으로써 연산된 주소로 이행된다.점프에는 absolute와 register-interdirect의 두 가지 버전이 있습니다.절대점프('점프' 및 '점프 및 링크')는 26비트의 instr_index를 2비트로 이동하고 28비트의 결과를 분기 지연 슬롯 내의 명령 주소의 상위 4비트와 연결함으로써 주소 제어가 전송되는 것으로 계산한다.register-indirect는 GPR(rs)에서 발신된 주소의 명령으로 전송 제어를 점프합니다.GPR에서 발신된 주소는 워드 정렬이어야 합니다.그렇지 않으면 브랜치 지연 슬롯의 명령이 실행된 후에 예외가 시그널링됩니다.링크하는 분기 및 점프 명령('점프 및 링크 레지스터' 제외)은 반환 주소를 GPR 31에 저장합니다."Jump and Link Register" 명령을 사용하면 리턴 주소를 쓰기 가능한 GPR에 저장할 수 있습니다.
MIPS I에는 예외를 시그널링하기 위한 소프트웨어에 관한2가지 지침이 있습니다.시스템 콜과 브레이크 포인트시스템 호출은 사용자 모드 소프트웨어에 의해 커널 호출에 사용되며 브레이크포인트는 커널의 예외 핸들러를 통해 디버거에 제어 권한을 전송하기 위해 사용됩니다.두 명령 모두 예외 핸들러의 작동 환경 고유 정보를 포함할 수 있는 20비트 코드 필드가 있습니다.
MIPS에는 32개의 부동소수점 레지스터가 있습니다.2개의 레지스터는 2배의 정밀도를 가지기 위해 쌍으로 구성되어 있습니다.홀수 번호 레지스터는 이중 정밀 레지스터 쌍의 일부로 산술 또는 분기에 사용할 수 없으므로 대부분의 명령에 16개의 레지스터를 사용할 수 있습니다(이동/복사 및 로드/스토어는 영향을 받지 않음).
단일 정밀도는 .s 서픽스로 나타내며 이중 정밀도는 .d 서픽스로 나타냅니다.
MIPS II
MIPS II는 로드 지연[3]: 41 슬롯을 삭제하고 몇 가지 명령을 추가했습니다.공유 메모리 멀티프로세싱에서는 [공유 메모리 동기화(Synchronize Shared Memory)], [링크드워드 로드(Load Linked Word)] 및 [조건어 저장(Store Conditional Word)]의 각 명령이 추가되었습니다.일련의 Trap-on-Condition 명령이 추가되었습니다.이러한 지시로 인해 평가된 조건이 참일 경우 예외가 발생했습니다.기존의 모든 브랜치명령어에는 브랜치를 [3]: 40 취득한 경우에만 브랜치 지연 슬롯에서 명령을 실행하는 브랜치와 같은 버전이 할당되어 있습니다.이러한 순서는, 브랜치 [3]: 212 지연 슬롯을 채울 수 있도록 하는 것으로써, 경우에 따라서는 퍼포먼스가 향상됩니다.COP1-3에 대한 이중 단어 로드 및 저장 명령이 추가되었습니다.다른 메모리 액세스 명령과 마찬가지로 이러한 로드 및 저장 장치에서는 이중 워드를 자연스럽게 정렬해야 합니다.
부동소수점 코프로세서의 명령어 세트에는 몇 가지 명령어가 추가되었습니다.IEEE 754 준거 부동 소수점 제곱근 명령이 추가되었습니다.단정도 오퍼랜드와 배정도 오퍼랜드가 모두 지원되었습니다.단정도 및 배정도 부동소수점 숫자를 32비트 단어로 변환하는 일련의 명령이 추가되었습니다.이들은 플로팅 소수점 제어 및 상태 레지스터 대신 명령으로 IEEE 반올림 모드를 지정할 수 있도록 함으로써 기존 변환 명령을 보완했습니다.
MIPS III
MIPS III는 MIPS II의 하위 호환 확장으로 64비트 메모리 어드레싱 및 정수 조작 지원이 추가되었습니다.64비트 데이터형은 더블워드라고 불리며 MIPS III는 이를 지원하기 위해 범용 레지스터, HI/LO 레지스터 및 프로그램카운터를 64비트로 확장했습니다.새로운 명령들과 가게를 로드하 doublewords 있도록 하고, 그들에 대한 작업하며 doubleword은 GPRs과 HI/LO 레지스터 사이에서 움직일 정수 덧셈, 뺄셈, 곱셈, 나누기를 수행할 추가되었다.기존 지침은 원래 32비트 단어로 작동하도록 정의된, 필요하면 32비트 결과 단어와 doublewords 똑같이 대부분의 지침에 의해 다뤄질 수 있도록 sign-extend에 새로웠다.해당 지침에서 부하 워드를 재정립했다.MIPSIII에서는 64비트 단어 sign-extends.하중 워드, zero-extends 추가된 버전 보완하기 위해.
R 명령 포맷은 64비트 시프트의 풀 시프트 거리를 지정할 수 없기 때문에(5비트 시프트량 필드가 너무 좁아서 이중 워드의 시프트 거리를 지정할 수 없습니다) MIPS III는 각 MIPS I 시프트 명령의 64비트 버전을 3개 제공해야 합니다.첫 번째 버전은 원래 시프트 명령의 64비트 버전으로, 0~31비트의 일정한 시프트 거리를 지정하는 데 사용됩니다.두 번째 버전은 첫 번째 버전과 유사하지만, 32–64비트의 일정한 시프트 거리를 지정할 수 있도록 시프트 양 필드의 값을 추가합니다10.세 번째 버전은 GPR의 6개의 하위 비트로부터 시프트 거리를 구합니다.
MIPS III는 기존 커널과 사용자 특권 수준 사이에 슈퍼바이저 특권 수준을 추가했습니다.이 기능은 구현 정의 시스템 제어 프로세서(코프로세서 0)에만 영향을 줍니다.
MIPS III는 코프로세서 3(CP3)의 지원 명령을 삭제하고 그 opcode를 새로운 더블워드 명령에 재사용했습니다.나머지 코프로세서는 코프로세서 레지스터와 GPR 사이에서 이중 워드를 이동시키는 명령을 얻었습니다.Floating General Register(FGR; 플로팅 일반 레지스터)가 64비트로 확장되어 짝수 레지스터만을 사용하는 명령이 필요 없게 되었습니다.이는 이전 버전의 아키텍처와 호환되지 않습니다.부동소수점 제어/상태 레지스터의 비트는 MIPS III 부동소수점 유닛(FPU)을 MIPS I 및 II 호환 모드로 동작시키기 위해 사용됩니다.호환성을 위해 부동 소수점 제어 레지스터가 확장되지 않았습니다.추가된 유일한 새로운 부동소수점 명령어는 CPU와 FPU 간에 이중어를 복사하여 단정도 부동소수점 숫자와 이중정도 부동소수점 숫자를 이중어 정수로 변환하는 명령과 그 반대도 마찬가지입니다.
MIPS IV
MIPS IV는 아키텍처의 네 번째 버전입니다.MIPS III의 슈퍼셋으로 기존의 모든 버전의 MIPS와 호환성이 있습니다.MIPS IV는 주로 부동소수점(FP) 성능을 향상시키도록 설계되었습니다.오퍼랜드에 대한 접근을 개선하기 위해 FP 로드 및 스토어의 인덱스 어드레싱 모드(베이스 + 인덱스, 양쪽 모두 GPR에서 발신)가 추가되었습니다.메모리 프리페치를 실행하고 캐시 힌트를 지정하기 위한 프리페치 명령(베이스 + 오프셋 및 베이스 + 인덱스어드레싱 모드 모두 지원)이 추가되었습니다.
MIPS IV는 명령 수준의 병렬 처리를 개선하기 위해 몇 가지 기능을 추가했습니다.단일 조건 비트로 인한 병목 현상을 완화하기 위해 부동 소수점 제어 및 상태 레지스터에 7개의 조건 코드 비트가 추가되어 총 8개가 되었습니다.FP 비교 및 브랜치명령어는 각각 어떤 조건 비트가 기입 또는 읽혔는지 지정할 수 있도록 재정의되었습니다.또, 이전의 FP 비교에 의해서 기입된 조건 비트를 읽어낸 FP 브랜치간의 지연 슬롯은 삭제되었습니다.GPR과 FPR 양쪽에 대해 조건부 이동 명령 형식으로 부분 프레딕션 지원이 추가되었습니다.또한 구현에서는 IEEE 754 트랩에 대한 정확한 예외와 부정확한 예외 중 하나를 선택할 수 있습니다.
MIPS IV는 단정도 및 배정도 양쪽 FPN에 대해 fused-multiply add 또는 뺄셈, requerative 및 requerative square-root이라는 새로운 FP 연산 명령을 추가했습니다.FP fused-multiply 덧셈 또는 뺄셈 명령은 IEEE 754 정확도 요건(각각)을 초과하거나 충족하기 위해 1개 또는2개의 라운딩(실장 정의)을 수행합니다.FP의 역제곱근 명령 및 역제곱근 명령은 IEEE 754 정밀도 요건에 준거하지 않으며, 필요한 정확도와는 1개 또는 2개씩 차이가 납니다(실장 정의).이러한 명령은 정확도보다 명령 지연 시간이 더 중요한 애플리케이션에 적용됩니다.
MIPS V
MIPS V는 기존 64비트 부동소수점 레지스터에 저장된 2개의 단정도(32비트) 부동소수점 숫자로 구성된 PS(Paired Single)라는 새로운 데이터 유형을 추가했습니다.산술, 비교 및 조건부 이동을 위한 기존 부동 소수점 명령의 변형이 이 데이터 유형에 SIMD 방식으로 작동하도록 추가되었습니다.PS 데이터의 [3]: 426–429 로드, 재배치, 변환에 관한 새로운 명령이 추가되었습니다.기존 [12]리소스로 부동소수점 SIMD를 이용하는 첫 번째 명령 세트입니다.
MIPS32/MIPS64
MIPS II에 기반한 MIPS32의 첫 번째 릴리스에서는 64비트 프로세서의 [14]R4000 및 R5000 패밀리에서 조건부 이동, 프리페치 명령 및 기타 기능이 추가되었습니다.MIPS64의 첫 번째 릴리스에서는 32비트코드를 [14]실행하기 위한 MIPS32 모드가 추가되었습니다.이전에 일부 구현에서 사용 가능했던 MUL 및 MADD(멀티 추가) 명령이 캐시 제어 [14]명령과 마찬가지로 MIPS32 및 MIPS64 사양에 추가되었습니다.
2014년 MIPS32/MIPS64 Release 6에는 [26]다음이 추가되었습니다.
- 지연 슬롯이 없는 새로운 브랜치 패밀리:
- 26비트 오프셋을 가진 무조건 브랜치(BC) 및 브랜치앤링크(BALC)
- 제로/비제로의 조건부 브랜치(21비트 오프셋 포함),
- 서명된 조건 분기와 서명되지 않은 조건 분기의 전체 집합은 두 레지스터(예: BGTC) 또는 레지스터를 0에 대해 비교한다(예: BGTZC).
- 레지스터를 0과 비교하는 분기 및 링크의 전체 세트(예: BGTZALC).
- 큰 절대 주소를 지원하도록 설계된 지연 슬롯이 없는 인덱스 점프 명령입니다.
- 비트 위치 16, 32 또는 48에서 16비트를 즉시 로드하는 명령을 사용하면 큰 상수를 쉽게 생성할 수 있습니다.
- PC 상대 로드 명령 및 대규모(PC 상대) 오프셋을 가진 주소 생성.
- 비트 반전 및 바이트 정렬 명령(이전에는 DSP 확장자에서만 사용 가능)
- 결과에 단일 레지스터를 사용하도록 재정의된 명령을 곱하고 나눕니다.)
- true 값을 생성하는 명령은 0비트를 삭제/설정하는 대신 모든 0 또는 모든 0을 생성합니다.
- true 값을 사용하는 명령어는 0비트만 보는 것이 아니라 모두0을 false로 해석합니다.
자주 사용하지 않는 순서 삭제:
- 몇 가지 조건부 움직임
- branch 명령(이전 릴리스에서는 권장되지 않음)을 참조해 주세요.
- 16비트 즉시에서의 정수 오버플로우 트랩 명령
- 정수 어큐뮬레이터 명령(HI/LO 레지스터와 함께 DSP 애플리케이션별 확장으로 이동)
- 정렬되지 않은 로드 명령(LWL 및 LWR) (대부분의 일반 로드 및 저장소가 트랩을 통해 잘못 정렬된 액세스를 지원해야 하며 새 명령(BALIGN)을 추가할 수 있음)
명령 인코딩을 재구성하여 향후 확장을 위한 공간을 확보했습니다.
마이크로 MIPS
microMIPS32/64 아키텍처는 MIPS16e ASE를 대체하도록 설계된 MIPS32 아키텍처 및 MIPS64 아키텍처의 슈퍼셋입니다.MIPS16e의 단점은 16비트 명령을 처리하기 전에 모드스위치가 필요하다는 것입니다.마이크로MIPS는 가장 자주 사용되는 32비트 명령 버전을 16비트 명령으로 인코딩합니다.이것에 의해, 프로그램을 16비트 명령과 32비트 명령의 혼재가 가능하게 됩니다.microMIPS는 MIPS32/64 릴리스 3과 함께 도입되어 MIPS32/64의 후속 릴리스마다 대응하는 microMIPS32/64 버전이 있습니다.프로세서는 마이크로MIPS32/64 또는 마이크로MIPS32/64와 대응하는 MIPS32/64 서브셋을 실장할 수 있다.MIPS32/64 Release 6 이후 MIPS16e 지원은 종료되었으며 microMIPS는 MIPS에서의 유일한 코드 압축 형식입니다.
응용 프로그램 고유의 확장 기능
기본 MIPS32 및 MIPS64 아키텍처는 다수의 옵션 아키텍처 확장으로 보완할 수 있습니다.이러한 확장 기능을 집합적으로 Application-Specific Extensions(ASE; 애플리케이션 고유 확장)라고 부릅니다.이러한 ASE는 디지털 신호 처리와 같은 특정 워크로드의 효율성과 성능을 향상시키는 기능을 제공합니다.
- MIPS MCU
- 마이크로컨트롤러 어플리케이션의 확장 기능.MCU ASE(어플리케이션 고유 확장)는 인터럽트 컨트롤러 지원을 확장하고 인터럽트 지연 시간을 줄이며 마이크로 컨트롤러 시스템 설계에 일반적으로 필요한 I/O 페리페럴 제어 기능을 강화하기 위해 개발되었습니다.
- 개별 우선순위 및 벡터 생성
- EIC(External Interrupt Controller) 모드에서 최대 256개의 인터럽트 및 8개의 하드웨어 인터럽트 핀 지원
- 16비트 벡터 오프셋 주소 제공
- 인터럽트 예외 벡터의 프리페치
- 자동 인터럽트 프롤로그– 하드웨어 추가로 인터럽트 처리 루틴 전에 시스템 상태 저장 및 업데이트
- Automated Interrupt Epilogue – 인터럽트에서 복귀하기 위해 이전에 스택에 저장되어 있던 시스템 상태를 복원합니다.
- 인터럽트 체인– 초기 인터럽트 루틴을 종료할 필요 없이 보류 중인 인터럽트 서비스를 지원하므로 여러 활성 인터럽트를 저장 및 복원하는 데 필요한 사이클을 절약할 수 있습니다.
- 인터럽트 벡터주소의 투기적인 프리페치를 서포트합니다.파이프라인 플래시 및 예외 우선 순위 지정과 메모리 액세스를 중복하여 인터럽트 서비스 사이클 수를 줄입니다.
- 일반적으로 외부 주변기기의 기능을 감시 또는 제어하기 위해 사용되는 I/O 레지스터 내의 비트를 중단 없이 변경할 수 있도록 하여 액션을 안전하게 수행할 수 있도록 하는 원자 비트 설정/삭제 명령을 포함합니다.
- MIPS16
- MIPS16은 LSI Logic 및 MIPS Technologies가 1996년 10월 21일 첫 번째 구현인 LSI Logic Tiny와 함께 설계한 MIPS I to V의 애플리케이션별 확장입니다.RISC [27]프로세서MIPS16은 그 후 NEC 전자, Philips Semiconductors, Toshiba 등으로부터 라이선스를 취득해, MIPS I, II 아키텍처의 확장으로서 실장되었습니다.MIPS16은 32비트 명령이 아닌 16비트 명령을 사용하여 애플리케이션 크기를 최대 40% 줄일 수 있으며 전력 효율과 명령 캐시 적중률을 향상시켜 기본 [28]아키텍처와 동등한 성능을 제공합니다.MIPS Technologies 및 기타 프로바이더의 하드웨어 및 소프트웨어 개발 도구에 의해 지원됩니다.MIPS16e는 MIPS32 및 MIPS64 Release 1에서 최초로 지원되는 MIPS16의 개량판입니다.MIPS16e2는 MIPS32 및 MIPS64(Release 5까지)에서 지원되는 MIPS16의 개량판입니다.릴리스 6은 마이크로MIPS로 대체되었습니다.
- MIPS 디지털 신호 처리(DSP)
- DSP ASE는 MIPS32/MIPS64 Release 2 및 새로운 명령어세트에 대한 옵션 확장으로 광범위한 "미디어" 연산(특히 오디오와 비디오)을 고속화할 수 있습니다.DSP 모듈은 정수 파이프라인 내의 일련의 명령과 상태로 구성되며 MIPS 프로세서코어에 구현하기 위해 최소한의 추가 로직이 필요합니다.ASE의 개정 2는 2006년 하반기에 도입되었다.이 개정판은 원래 ASE에 추가 명령을 추가하지만, 그 외에는 [29]ASE와 역호환됩니다.대부분의 MIPS 아키텍처와는 달리 매우 불규칙한 일련의 조작으로, 일부 키 알고리즘과의 특정 관련성을 위해 선택됩니다.주요 특징 (오리지널 MIPS32와 비교)[30] :
- 포화 산술(계산이 오버플로우되면 오버플로우되지 않은 답변에 가장 가까운 표현 가능한 숫자를 전달한다.)
- -1 ~ +1 범위의 부호 있는 32비트 및 16비트 고정 소수점 분수에 대한 고정 소수점 산술(이것들은 "Q31" 및 "Q15"로 널리 불립니다.
- 기존의 정수 곱셈 및 곱셈 명령으로, 결과를 더블 사이즈 어큐뮬레이터(MIPS32 CPU에서는 「hi/lo」라고 불리며 64비트)로 전달합니다.DSP ASE는 세 개의 축전지 및 몇 가지 다른 맛의 다중 축적을 추가합니다.
- 32비트 레지스터에 4개의 부호 없는 바이트 또는 2개의 16비트 값으로 동작하는 SIMD 명령(DSP ASE의 64비트 바리안트도 더 큰 벡터를 지원합니다).
- SIMD 연산은 기본적인 산술, 시프트 및 일부 다중 누적형 연산으로 이루어집니다.
- MIPS SIMD 아키텍처(MSA)
- 멀티미디어를 고속화하기 위해 설계된 명령 집합 확장입니다.
- 16 x 8 비트, 8 x 16 비트, 4 x 32 비트 및 2 x 64 비트 벡터 요소의 32 벡터 레지스터
- 정수, 고정 소수점 및 부동 소수점 데이터에 대한 효율적인 벡터 병렬 연산
- 절대값 오퍼랜드에 대한 연산
- 반올림 및 포화 옵션 사용 가능
- 완전 정밀 곱셈 및 곱셈 추가
- 정수, 부동 소수점 및 고정 소수점 데이터 간 변환
- 조건 플래그 없이 벡터 레벨 비교 및 분기 명령의 전체 세트
- 벡터(1D) 및 어레이(2D) 셔플 조작
- 엔디안 독립 작동을 위한 입력된 로드 및 저장 지침
- IEEE 부동소수점 연산 754-2008 준거 규격
- 요소 정밀 부동소수점 예외 시그널링
- 게이트/트랜지스터가 더 많은 칩을 위한 사전 정의된 확장 확장 기능
- 범용 컴파일러 지원 활용과 함께 처리 부하가 높은 애플리케이션 고속화
- 전용 하드웨어가 적용되지 않는 가전 애플리케이션 또는 기능을 위한 소프트웨어 프로그램 가능한 솔루션
- 새로운 데이터 마이닝, 기능 추출, 이미지 및 비디오 처리, 인간과 컴퓨터의 상호작용 애플리케이션
- 고성능 과학 컴퓨팅
- MIPS 가상화
- 하드웨어가 지원하는 가상화 테크놀로지.
- MIPS 멀티스레딩
- 각 멀티 스레드 MIPS 코어는 최대 2개의 VPE(Virtual Processing Elements)를 지원할 수 있습니다.VPE는 단일 파이프라인 및 기타 하드웨어 리소스를 공유합니다.단, 각 VPE에는 소프트웨어 시스템에서 볼 수 있는 프로세서 상태의 완전한 복사가 포함되어 있기 때문에 각 VPE는 SMP Linux 운영체제에서는 완전한 스탠드아론 프로세서로 인식됩니다.보다 세밀한 스레드 처리 애플리케이션의 경우, 각 VPE는 2개의 VPE에 할당되어 있는 최대 9개의 TC를 지원할 수 있습니다.TC는 공통 실행 유닛을 공유하지만, 각각 자체 프로그램 카운터 및 코어 레지스터 파일을 가지고 있어 소프트웨어에서 스레드를 처리할 수 있습니다.MIPS MT 아키텍처에서는 프로세서사이클을 스레드에 할당할 수도 있습니다.또한 옵션의 Quality of Service(QoS) 매니저 블록을 사용하여 상대적인 스레드priority를 설정합니다.이것에 의해, 버스간의 정보 플로우를 결정하는 2개의 priority 매커니즘이 유효하게 됩니다.첫 번째 메커니즘에서는 사용자가 어떤 스레드를 다른 스레드보다 우선시할 수 있습니다.두 번째 메커니즘은 시간 경과에 따른 특정 쓰레드에 지정된 사이클 비율을 할당하기 위해 사용됩니다.두 메커니즘을 조합하여 사용하면 스레드 세트에 대역폭을 효율적으로 할당하고 지연을 보다 효과적으로 제어할 수 있습니다.실시간 시스템에서는 시스템 수준의 결정론이 매우 중요하며, QoS 블록은 시스템의 예측 가능성을 개선하는 데 도움이 됩니다.고급 시스템의 하드웨어 설계자는 MIPS 테크놀로지가 제공하는 표준 QoS 블록을 용도에 맞게 특별히 조정된 블록으로 대체할 수 있습니다.
- 스마트 MIPS
- SmartMIPS는 Gemplus International과 MIPS Technologies가 스마트 카드 소프트웨어의 성능을 향상시키고 메모리 소비를 줄이기 위해 설계한 ASE(Application-Specific Extension)입니다.스마트 카드는 MIPS64 프로세서의 기능을 필요로 하지 않기 때문에 MIPS32에서만 지원됩니다.SmartMIPS를 사용하는 스마트카드는 거의 없습니다.
- MIPS 디지털 미디어 eXtension (MDMX)
- RISC 및 CISC 시스템에서 1990년대에 일반적이던 멀티미디어 애플리케이션 액셀러레이션.
- MIPS-3D
- 3D 그래픽스 응용 프로그램의 성능을 향상시키기 위한 추가 지침
호출 규칙
MIPS에는 특히 32비트플랫폼에서 몇 가지 호출규칙이 있습니다.
O32 ABI는 MIPS의 [31][32]원래 시스템 V ABI로서의 지위를 가지고 있기 때문에 가장 일반적으로 사용되는 ABI입니다.이것은 엄밀하게 스택 기반이며 인수를 전달하기 위해 사용할 수 있는 레지스터 $a0~$a3는 4개뿐입니다.착신측이 인수를 보존할 필요가 있는 경우, 스택상의 공간은 예약되어 있습니다만, 발신자에 의해서 레지스터가 보존되어 있지 않습니다.반환값은 레지스터 $v0에 저장되며 두 번째 반환값은 $v1에 저장될 수 있습니다.ABI는 1990년에 구체화되었고 1994년에 마지막으로 갱신되었다.이러한 느린 인식은 16개의 레지스터만 있는 고풍스러운 부동 소수점 모델과 함께 다른 많은 호출 규칙의 확산을 촉진했습니다.32비트 MIPS에만 정의되어 있는데 GCC는 O64라고 [33]하는64비트 베리에이션을 작성했습니다.
64비트의 경우 N64 ABI by Silicon Graphics가 가장 일반적으로 사용됩니다.가장 중요한 개선점은 8개의 레지스터를 인수 전달에 사용할 수 있다는 것입니다.또한 부동소수점 레지스터의 수를 32개로 늘립니다.또한 N32라고 불리는 ILP32 버전도 있는데, 이 버전은 x32 ABI와 유사한 작은 코드에 32비트 포인터를 사용합니다.둘 다 [33]CPU의 64비트 모드로 동작합니다.N32와 N64 ABI는 레지스터 $a0-$a7의 함수에 처음 8개의 인수를 전달하고, 후속 인수는 스택 상에서 전달된다.반환값(또는 반환값 포인터)은 레지스터 $v0에 저장됩니다.두 번째 반환값은 $v1에 저장될 수 있습니다.N32 및 N64 ABI에서 모든 레지스터는 64비트 폭으로 간주됩니다.
O32를 N32와 유사한 32비트 ABI로 대체하려는 시도가 몇 번 더 있었습니다.1995년 회의에서 MIPS EABI가 발표되었는데, 32비트 버전은 상당히 [34]비슷했습니다.EABI는 MIPS Technologies가 [35]보다 급진적인 "NUBI" ABI를 제안하도록 유도하여 반환가치에 대한 인수 레지스터를 추가로 재사용하도록 했습니다.MIPS EABI는 GCC에서 지원되지만 LLVM에서는 지원되지 않으며 NUBI도 지원하지 않습니다.
모든 O32 및 N32/N64에 대해 반환 주소는 $ra 레지스터에 저장됩니다.이는 JAL(점프 및 링크) 또는 JALR(점프 및 링크 레지스터) 명령을 사용하여 자동으로 설정됩니다.(리프가 아닌) MIPS 서브루틴의 함수 프롤로그는 반환 주소($ra 단위)를 [36][37]스택에 푸시합니다.
O32 및 N32/N64에서는 스택이 하향으로 증가하지만 N32/N64 ABI에서는 모든 스택엔트리에 64비트어라인먼트가 필요해요프레임 포인터($30)는 옵션이며, 예를 들어 호출을 통해 함수의 스택 할당이 실행 시 결정되는 경우를 제외하고 실제로는 거의 사용되지 않습니다.alloca()
.
N32 및 N64의 경우 리턴 주소는 보통 스택포인터보다8 바이트 앞에 저장됩니다.단, 이것은 옵션일 수 있습니다.
N32 및 N64 ABI의 경우 함수는 $s0~$s7 레지스터, 글로벌포인터($gp 또는 $28), 스택포인터($sp 또는 $29) 및 프레임포인터($30)를 유지해야 합니다.O32 ABI는 착신함수 대신 $gp 레지스터를 저장하기 위해 호출함수가 필요하다는 점을 제외하고는 동일합니다.
멀티 스레드 코드의 경우 스레드 로컬 스토리지 포인터는 일반적으로 특별한 하드웨어 레지스터 $29에 저장되며 mfhw(하드웨어에서 이동) 명령을 사용하여 액세스됩니다.적어도 1개의 벤더가 이 정보를 보통 커널용으로 예약된 $k0 레지스터에 저장하는 것으로 알려져 있지만 이는 표준이 아닙니다.
$k0 및 $k1 레지스터(26~$27)는 커널용으로 예약되어 있으며 인터럽트, 컨텍스트 스위치 또는 기타 이벤트로 인해 커널에 의해 언제든지 변경될 수 있으므로 응용 프로그램에서 사용하지 마십시오.
이름. | 번호 | 사용하다 | 칼리가 보존해야 하나요? |
---|---|---|---|
제로달러 | $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 | 글로벌 포인터 | 있음(PIC 코드 제외) |
$sp | $29 | 스택 포인터 | 네. |
fp달러 | $30 | 프레임 포인터 | 네. |
$ra | $31 | 반송 주소 | — |
이름. | 번호 | 사용하다 | 칼리가 보존해야 하나요? |
---|---|---|---|
제로달러 | $0 | 상수 0 | — |
$at | $1 | 조립자 임시 | 아니요. |
$v0~$v1 | $2–$3 | 함수 반환 및 식 평가 값 | 아니요. |
$a0~$a7 | $4–$11 | 함수 인수 | 아니요. |
t4~$t7 | $12–$15 | 일시적 | 아니요. |
$s0~$s7 | $16–$23 | 저장된 일시적 | 네. |
t8~$t9 | $24–$25 | 일시적 | 아니요. |
k0~$k1 | $26–$27 | OS 커널용으로 예약됨 | — |
$gp | $28 | 글로벌 포인터 | 네. |
$sp | $29 | 스택 포인터 | 네. |
$s8 | $30 | 프레임 포인터 | 네. |
$ra | $31 | 반송 주소 | — |
콜간에 보존되는 레지스터는, 시스템콜 또는 프로시저(함수) 콜에 의해서(통례상) 변경되지 않는 레지스터입니다.예를 들어 $s-registers는 사용할 필요가 있는 절차에 따라 스택에 저장해야 합니다.$sp 및 $fp는 항상 상수에 의해 증분되며 이 절차를 수행한 후(및 이들이 가리키는 메모리) 다시 증분됩니다.반면 $ra는 일반 함수 호출(jal을 사용하는 함수 호출)에 의해 자동으로 변경되며 $t-registers는 프로시저 호출 전에 프로그램에 의해 저장되어야 합니다(호출 후 프로그램에서 내부 값을 필요로 하는 경우).
Linux에서의 위치 독립 코드의 사용자 공간 호출 규약은 함수를 호출할 때 $t9 레지스터가 해당 [39]함수의 주소를 포함해야 한다고 추가로 요구합니다.이 표기법은 [40]MIPS용 System V ABI 보충판으로 거슬러 올라갑니다.
사용하다
![]() | 이 섹션은 확장해야 합니다.추가해서 도와주시면 됩니다. (2020년 2월) |
![]() | 이 문서의 일부(2010년대 관련)를 갱신할 필요가 있습니다.(2020년 8월) |
MIPS 프로세서는 레지덴셜게이트웨이나 라우터 등의 임베디드 시스템에서 사용됩니다.원래 MIPS는 범용 컴퓨팅용으로 설계되었습니다.1980년대와 1990년대에 개인용, 워크스테이션 및 서버 컴퓨터용 MIPS 프로세서는 Digital Equipment Corporation, MIPS Computer Systems, NEC, 피라미드 테크놀로지, SiCortex, Siemens Nixdorf, Silicon Graphics 및 Tandem Computers와 같은 많은 기업에서 사용되었습니다.
역사적으로 닌텐도 64, 소니 플레이스테이션, 플레이스테이션 2, 플레이스테이션 포터블과 같은 비디오 게임기들은 MIPS 프로세서를 사용했다.MIPS 프로세서는 1990년대에 슈퍼컴퓨터에서도 인기가 있었지만, 그러한 시스템은 모두 TOP500 리스트에서 떨어졌다.이러한 용도는 처음에는 임베디드 애플리케이션에 의해 보완되었지만, 1990년대에 MIPS는 임베디드 프로세서 시장에서 큰 존재가 되었고, 2000년대에는 대부분의 MIPS 프로세서가 이러한 애플리케이션용이었습니다.
1990년대 중후반에는 생산된 RISC 마이크로프로세서 3개 중 1개가 MIPS [41]프로세서인 것으로 추정되었습니다.
2010년대 후반까지 MIPS 머신은 자동차, 무선 라우터, LTE 모뎀(주로 MediaTek 경유), 마이크로 컨트롤러(마이크로칩 테크놀로지 PIC32M 등)를 포함한 임베디드 시장에서 여전히 일반적으로 사용되었습니다.개인, 서버 및 응용 프로그램 공간에서 대부분 사라졌습니다.
시뮬레이터
Open Virtual Platforms(OVP)[42]에는 비상업용 시뮬레이터 OVPSim, 프로세서, 주변기기 및 플랫폼의 모델 라이브러리 및 사용자가 직접 모델을 개발할 수 있는 API가 포함되어 있습니다.라이브러리의 모델은 C로 작성된 오픈 소스이며 MIPS 4K, 24K, 34K, 74K, 1004K, 1074K, M14K, microAptiv, interAptiv, proAptiv 32비트 코어 및 MIPS 64비트 5K 범위의 코어가 포함됩니다.이러한 모델은 Imperas에 의해[43] 작성 및 유지보수되며, MIPS Technologies와 협력하여 테스트되고 MIPS-Verified 마크가 할당되었습니다.샘플 MIPS 기반 플랫폼에는 베어메탈 환경과 수정되지 않은 Linux 바이너리 이미지 부팅 플랫폼이 모두 포함됩니다.이러한 플랫폼 - 에뮬레이터는 소스 또는 바이너리로 사용할 수 있으며 빠르고 비상업적인 용도로 무료로 사용할 수 있으며 사용하기 쉽습니다.OVPsim은 Imperas에 의해 개발 및 유지 관리되며 매우 빠르고(초당 수억 개의 명령) 다코어 동종 및 이종 아키텍처 및 시스템을 처리할 수 있도록 구축되었습니다.
교육용으로 SPIM이라고 불리는 무료로 이용할 수 있는 MIPS32 시뮬레이터(R2000/R3000의 이전 버전만 시뮬레이션)가 있습니다.EduMIPS64는[44] Java/Swing으로 작성된 GPL 그래픽 크로스 플랫폼 MIPS64 CPU 시뮬레이터입니다.MIPS64 ISA의 광범위한 서브셋을 지원하며 사용자는 어셈블리 프로그램이 CPU에 의해 실행되었을 때 파이프라인에서 무슨 일이 일어나는지 그래픽으로 확인할 수 있습니다.
MARS는[45] 교육, 특히 Hennessy의 컴퓨터 조직 및 설계에서 사용하기 위해 설계된 또 다른 GUI 기반의 MIPS 에뮬레이터입니다.
WebMIPS는[46] 범용 파이프라인 프로세서를 시각적으로 표현한 브라우저 기반의 MIPS 시뮬레이터입니다.이 시뮬레이터는 단계별 실행 중 레지스터 추적에 매우 유용합니다.
QtMips는[47][48][49] 간단한 5단계 파이프라인 시각화와 기본적인 컴퓨터 아키텍처 코스의 캐시 원리 시각화를 제공합니다.Windows, Linux, MacOS 및 온라인 버전을 사용할 수 있습니다.
GXemul(이전의 mips64emul 프로젝트) 및 QEMU 프로젝트에서는 보다 고도의 프리 에뮬레이터를 이용할 수 있습니다.이들은 다양한 MIPS III 및 IV 마이크로프로세서를 사용하는 컴퓨터 시스템 전체에 더하여 에뮬레이트합니다.
시판 시뮬레이터는 특히 MIPS 프로세서의 임베디드 용도로 사용할 수 있습니다.예를 들어 Wind River Simics (MIPS 4Kc 및 5Kc, PMC RM9000, QED RM7000, Broadcom/Netlogic ec4400, Cavium Octeon I, MIPS32 코어)
Creator 시뮬레이터는[50][51][52][53] 휴대 가능하며 사용자가 다양한 프로세서의 다양한 어셈블리 언어를 학습할 수 있습니다(Creator에는 MIPS32 및 RISC-V 명령의 구현 예가 있습니다).
WepSIM은[54][55] 브라우저 기반 시뮬레이터로 MIPS 명령의 서브셋이 마이크로프로그래밍됩니다.이 시뮬레이터는 CPU의 동작(마이크로프로그래밍, MIPS 루틴, 인터럽트, 시스템콜 등)을 학습하는데 매우 편리합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Patterson, David (2014). Computer Organization and Design (PDF). Elsevier. pp. 4.16–4. ISBN 978-0-12-407726-3. Archived (PDF) from the original on September 4, 2019. Retrieved November 28, 2018.
- ^ a b Price, Charles(1995년 9월).MIPS IV 명령 세트(리비전 3.2), MIPS Technologies, Inc.
- ^ a b c d e f g h Sweetman, Dominic (1999). See MIPS Run. Morgan Kaufmann Publishers, Inc. ISBN 1-55860-410-3.
- ^ "MIPS32 Architecture". MIPS. Archived from the original on March 21, 2020. Retrieved March 20, 2020.
- ^ "MIPS64 Architecture". MIPS. Archived from the original on February 2, 2020. Retrieved March 20, 2020.
- ^ "MIPS-3D ASE". Imagination Technologies. Archived from the original on January 3, 2014. Retrieved January 4, 2014.
- ^ "MIPS16e". MIPS. Archived from the original on January 16, 2021. Retrieved March 20, 2020.
- ^ "MIPS Multithreading". MIPS. Archived from the original on October 26, 2020. Retrieved March 20, 2020.
- ^ University of California, Davis. "ECS 142 (Compilers) References & Tools page". Archived from the original on March 21, 2011. Retrieved May 28, 2009.
- ^ a b Turley, Jim (March 8, 2021). "Wait, What? MIPS Becomes RISC-V". Electronic Engineering Journal. Archived from the original on March 21, 2021. Retrieved March 28, 2021.
- ^ "Silicon Graphics Introduces Enhanced MIPS Architecture to Lead the Interactive Digital Revolution". Silicon Graphics, Inc. October 21, 1996. Archived from the original on July 10, 2012.
- ^ a b Gwennap, Linley (November 18, 1996). "Digital, MIPS Add Multimedia Extensions" (PDF). Microprocessor Report. 10 (15): 24–28. Archived (PDF) from the original on July 20, 2011.
- ^ "Silicon Graphics Previews New High-Performance MIPS Microprocessor Roadmap" (Press release). May 12, 1997.
- ^ a b c d e "MIPS Technologies, Inc. Enhances Architecture to Support Growing Need for IP Re-Use and Integration" (Press release). Business Wire. May 3, 1999. Archived from the original on December 1, 2018. Retrieved February 11, 2016.
- ^ "Latest Release of MIPS Architecture Includes Virtualization and SIMD Key Functionality for Enabling Next Generation of MIPS-Based Products" (Press release). MIPS Technologies. December 6, 2012. Archived from the original on December 13, 2012.
- ^ "MIPS skips Release 4 amid bidding war". EE Times. December 10, 2012. Archived from the original on April 17, 2014.
- ^ "Wave Computing Extends AI Lead by Targeting Edge of Cloud Through Acquisition of MIPS". June 15, 2018. Archived from the original on November 25, 2020. Retrieved December 19, 2018.
- ^ "Wave Computing® Launches the MIPS Open Initiative To Accelerate Innovation for the Renowned MIPS® Architecture". December 17, 2018. Archived from the original on July 28, 2021. Retrieved December 19, 2018.
- ^ "MIPS Processor ISA To Be Open-Sourced In 2019 - Phoronix". Archived from the original on March 6, 2021. Retrieved December 18, 2018.
- ^ Yoshida, Junko (December 17, 2018). "MIPS Goes Open Source". EE Times. Retrieved July 18, 2022.
- ^ "MIPS R6 Architecture Now Available for Open Use". March 28, 2019. Archived from the original on August 4, 2020. Retrieved December 16, 2019.
- ^ "Wave Computing Closes Its MIPS Open Initiative with Immediate Effect, Zero Warning". November 15, 2019. Archived from the original on March 7, 2021. Retrieved December 16, 2019.
- ^ "Wave Computing and MIPS emerge from chapter 11 bankruptcy" (Press release). March 1, 2021. Archived from the original on May 13, 2021. Retrieved March 11, 2021.
- ^ Shilov, Anton (August 25, 2021). "Loongson Rips MIPS: Uses Old Code for New CPUs". Tom's Hardware. Archived from the original on January 25, 2022. Retrieved December 1, 2021.
- ^ Harris, David Money; Harris, Sarah L. (2013). "Architecture". Digital Design and Computer Architecture. Elsevier. pp. 294–369. doi:10.1016/b978-0-12-394424-5.00006-9. ISBN 9780123944245.
R-type is short for register-type. R-type instructions use three registers as operands: two as sources, and one as a destination.
- ^ "MIPS – Market-leading RISC CPU IP processor solutions". imgtec.com. Archived from the original on March 9, 2016. Retrieved February 11, 2016.
- ^ "Silicon Graphics Introduces Compact MIPS RISC Microprocessor Code For High Performance at a Low Cost" (Press release). October 21, 1996.
- ^ Sweetman, Dominic (2007). See MIPS Run (2nd ed.). San Francisco, California: Morgan Kaufmann Publishers. pp. 425–427. ISBN 978-0-12-088421-6.
- ^ "Using the GNU Compiler Collection (GCC): MIPS DSP Built-in Functions". gcc.gnu.org. Archived from the original on April 20, 2017.
- ^ "Instruction Set Architecture - LinuxMIPS". www.linux-mips.org. Archived from the original on April 20, 2017.
- ^ Sweetman, Dominic (2007). See MIPS Run, 2nd edition. Morgan Kaufmann. ISBN 978-0-12088-421-6.
- ^ "MIPS32 Instruction Set Quick Reference". Archived (PDF) from the original on January 25, 2022. Retrieved August 17, 2020.
- ^ a b "MIPS ABI History". Archived from the original on August 26, 2018.
- ^ Eric Christopher (June 11, 2003). "mips eabi documentation". binutils@sources.redhat.com (Mailing list). Archived from the original on May 7, 2020. Retrieved June 19, 2020.
- ^ "NUBI". Archived from the original on July 29, 2021. Retrieved August 17, 2020.
- ^ Karen Miller (2006). "The MIPS Register Usage Conventions". Archived from the original on October 25, 2020.
- ^ Hal Perkins (2006). "MIPS Calling Convention" (PDF). Archived (PDF) from the original on September 30, 2020.
- ^ MIPSpro N32 ABI Handbook (PDF). Silicon Graphics. Archived from the original (PDF) on December 17, 2021. Retrieved August 17, 2020.
- ^ "PIC code – LinuxMIPS". www.linux-mips.org. Archived from the original on September 21, 2018. Retrieved September 21, 2018.
- ^ "System V Application Binary Interface MIPS RISC Processor Supplement, 3rd Edition" (PDF). pp. 3–12. Archived (PDF) from the original on November 12, 2020. Retrieved August 17, 2020.
- ^ Rubio, Victor P. "A FPGA Implementation of a MIPS RISC Processor for Computer Architecture Education" (PDF). New Mexico State University. Archived (PDF) from the original on April 15, 2012. Retrieved December 22, 2011.
- ^ "OVP: Fast Simulation, Free Open Source Models. Virtual Platforms for software development". Ovpworld.org. Archived from the original on June 8, 2012. Retrieved May 30, 2012.
- ^ "Imperas". Imperas. March 3, 2008. Archived from the original on June 14, 2012. Retrieved May 30, 2012.
- ^ "EduMIPS64". Edumips.org. Archived from the original on May 7, 2012. Retrieved May 30, 2012.
- ^ "MARS MIPS simulator - Missouri State University". Courses.missouristate.edu. Archived from the original on May 2, 2012. Retrieved May 30, 2012.
- ^ "WebMIPS - MIPS CPU PIPLINED SIMULATION On Line". Archived from the original on December 31, 2012. Retrieved January 13, 2012. (온라인 데모) : CS1 유지보수 : 제목으로 복사 (링크) (소스)
- ^ QtMips - GitHub 교육용 MIPS CPU 시뮬레이터
- ^ Kočí, Karel (2018). Graphical CPU Simulator with Cache Visualization (PDF) (MSc). Czech Technical University in Prague. Archived (PDF) from the original on November 19, 2020. Retrieved January 25, 2021.
- ^ Gizopoulos, Dimitris (December 6, 2020). "The basics of QtMips-v3" (PDF). National and Kapodistrian University of Athens. Retrieved January 25, 2021.[데드링크]
- ^ "CREATOR: Simulador didáctico y genérico para la programación en ensamblador" (in Spanish). July 23, 2021. Archived from the original on September 29, 2021. Retrieved September 29, 2021.
- ^ "A new generic simulator for the teaching of assembly programming" (in Spanish). August 2, 2022. Retrieved August 2, 2022.
{{cite web}}
: CS1 maint :url-status (링크) - ^ "CREATOR Web with MIPS32 example". Archived from the original on September 29, 2021.
- ^ GitHub의 CREATOR 소스 코드
- ^ "WepSIM with a MIPS32 example". WepSIM.
- ^ GitHub의 WepSIM 소스 코드
추가 정보
- Farquhar, Erin; Philip Bunce (1994). MIPS Programmer's Handbook. Morgan Kaufmann Publishers. ISBN 1-55860-297-6.
- Patterson, David A; John L. Hennessy (2004). Computer Organization and Design: The Hardware/Software Interface. Morgan Kaufmann Publishers. ISBN 1-55860-604-1.
- Sweetman, Dominic (1999). See MIPS Run. Morgan Kaufmann Publishers. ISBN 1-55860-410-3.
- Sweetman, Dominic (2007). See MIPS Run, 2nd edition. Morgan Kaufmann Publishers. ISBN 978-0-12-088421-6.
외부 링크


- MIPS 프로세서
- 웨이백 머신의 MIPS 아키텍처 이력도(2013-05-30 아카이브 완료)
- 온라인 MIPS 에뮬레이터
- MIPS 명령어 - MIPS 명령어세트