1. MIPS(Microprocessor without Interlocked Pipeline Stages)란?
1.1. 특징
mips32 Instruction
MIPS(Microprocessor without Interlocked Pipeline Stages)
란 MIPS Technologies에서 개발한 RISC 기반의 명령어 집합 체계(Instruction Set Architecture)입니다.- RISC1 방식 중에 많이 사용되는 ISA 중 하나입니다. 다른 RISC 로 많이 사용되는 ISA는 ARM 이 있습니다.
1.2. 명령어
MIPS 명령어 체계는 3가지 종류의 명령어로 구성되어 있습니다.
- R type: c = a + b와 같은 연산을 할 때, 2개의 레지스터 값을 이용하여 연산을 한 다음, 다른 레지스터에 연산한 값을 기록한다. 연산을 하는데 사용되는 레지스터는 각각 rs(register source의 약자), rt(register target의 약자)라고 칭하며, 값은 rd(register direction의 약자)에 저장합니다.
- I type: R type처럼 두 값을 이용해 연산을 한 다음 다른 하나의 레지스터에 저장을 하지만, 연산할 값을 하나는 레지스터에서 가져오고 다른 하나는 레지스터가 아니라 지정된 임의의 값을 사용합니다. R type 명령어에 있는 약자인 rs와 rt를 그대로 사용하며, 이때 사용되는 임의의 값은 immediate(줄여서 imm이라고도 하며, 즉시값이라고도 부른다)로 이며, 계산은 rt = rs + imm와 같은 형태로 이루어집니다.
- J type: 무조건 분기 명령어로, 특정 메모리 주소로 바로 이동이 필요한 경우에 사용합니다.
MIPS 16비트 체계에서의 명령어 구성과 예시는 아래와 같습니다.
1.2.1. MIPS 16bit 명령어 구성 방식
R타입 명령어
|
||||
4bit opcode
|
3bit rs
|
3bit rt
|
3bit rd
|
3bit funct
|
I타입 명령어
|
||||
4bit opcode
|
3bit rs
|
3bit rt
|
6bit immediate
|
|
J타입 명령어
|
||||
4bit opcode
|
12bit address
|
1.2.2. MIPS 16bit R타입 명령어 예시
0번 레지스터의 값 + 1번 레지스터의 값 = 2번 레지스터에 값
R타입 명령어
|
||||
4bit opcode
|
3bit rs
|
3bit rt
|
3bit rd
|
3bit funct
|
0000
|
000
|
001
|
010
|
000
|
- opcode2 : R타입 명령어의 opcode 값은 0이므로 앞의 4bit는 0
- rs, rt, rd : 사용한 레지스터의 값
- funct : 실행할 연산인 덧셈의 값인 000
2. MIPS(million instructions per second)란?
2.1. 특징
초당 명령 수(Instructions per second, IPS)
는 컴퓨터의 프로세서 속도 측정 단위입니다. IPS는 단위 시간당 처리할 수 있는 명령어를 뜻합니다.- IPS 종류와 특성은 아래와 같습니다.
- TIPS(팁스, thousand instructions per second) : 컴퓨터가 1초 동안 천개(thousand)의 명령을 처리할 수 있는 능력
- MIPS(밉스, million instructions per second) : 컴퓨터가 1초 동안 백만개(million)의 명령을 처리할 수 있는 능력
- GIPS(깁스, billion instructions per second) : 컴퓨터가 1초 동안 십억개(billion)의 명령을 처리할 수 있는 능력
- 유사한 용어로
CPI(Cycle Per Instruction)
가 있으며 이는 명령어 당 평균 소요 사이클(사이클/개)이며, IPS의 역수값입니다. - 명령어 별 특성은 고려되지 않고 있다는 한계점이 있습니다. 슈퍼 컴퓨터에서는 부동 소수점 명령어가 1초에 몇번 실행될 수 있는가를 나타내는 단위로 FLOPS를 연산속도의 단위로 많이 사용합니다.
2.1. 계산식
\[\text{IPS} = \text{Core number} \times \text{Clock} \times \frac{ \text{1} } {\text{Clock for 1 Instruction}}\]출처
-
RISC (Reduced Instruction Set Computer)는 프로그램에서 자주 사용되는 명령어만 효율적으로 구현하여 프로세서를 단순화하고, 덜 일반적인 작업은 서브 루틴으로 구현하여 드물게 사용하였습니다. 이를 통하여 H/W 구조를 단순하게 하였습니다. 반대 개념으로 많이 사용되는 개념인 복잡한 명령어 세트 컴퓨터 (CISC)에는 많은 특수 명령어가 있으며, 그 중 일부는 실제 프로그램에서 거의 사용되지 않을 수 있습니다. H/W가 복잡하지만, 특정 명령에 대하여 최적화되어 설계되는 경우에는 속도가 RISC보다 훨씬 더 빠를 수 있습니다. ↩
-
opcode는 해당 명령어가 실행할 연산의 종류를 정의하는 code입니다. ↩