먼저 MIPS의 명령어에 대해 간단히 알아보자.
- 명령어는 32-bit이다.
- register들의 주소는 아래와 같다.
- $t0 - $t7 -> 8 - 15
- $s0 - $s7 -> 16 - 23
- $t8 - $t9 -> 24 - 25
R-format instruction은 연산할 때 register만 쓰는 명령어 구조이다.
32bit의 register에서 구성은 아래와 같다.
op ( 6bit ) |
rs ( 5bit ) |
rt ( 5bit ) |
rd ( 5bit ) |
shamt ( 5bit ) |
funct ( 6bit ) |
명령어 fields
op : operation code (opcode) -> 명령어의 종류를 구분한다.
rs : register operand로 사용되는 첫번째 source
rt : 두번째 source
rd : 연산 결과를 저장하는 destination
shamt : shift연산이 있을 경우 shift의 양
funct : opcode가 같은 명령어들을 더 세세하게 구분 (extends opcode)
bit 배정의 이유
op와 function은 MIPS가 실행할 수 있는 명령어들의 개수를 고려하여 6bit로 만들었다.
rs, rt, rd는 register의 주소를 표현하는 것이므로 5bit가 필요하다.
shamt는 최소 0에서 최대 31번 shift할 수 있으므로 32개의 경우의 수가 나온다. 따라서 마찬가지로 5bit가 필요하다.
예시) add $t0, $s1, $s2 라는 명령어의 구조를 표현해보자
*주의해야 할 점은 명령어에서는 destination이 앞에 있지만 구조에서는 뒤에 있다는 점이다.
add의 op | $s1 | $s2 | $t0 | 0 | add의 funct |
여기서 add의 op코드는 000000, funct는 100000이다. register들의 주소는 글의 맨 위를 참고해서 2진수로 바꾸면
000000 | 10001 | 10010 | 01000 | 00000 | 100000 |
위와 같이 명령어의 구조를 표현할 수 있다.
참고서적: Computer Organization And Design
'전공과목 정리 > 컴퓨터구조론' 카테고리의 다른 글
MIPS의 명령어 구조(format) : I-format (0) | 2021.05.02 |
---|---|
컴퓨터 명령어의 구조, ISA: 명령어 집합구조 (0) | 2021.04.19 |
CPU 성능 계산하기 (0) | 2021.03.29 |