[컴퓨터구조] #4. MIPS 명령어(4)
Lec 4. MIPS Instructions_4 (Language of the Computer)
- Constant Zero
: MIPS register 0 ($zero) is the constant 0 <- 쓰기 금지, 읽기 전용
ex) move between registers 레지스터 복사
: add $t2, $s1, $zero # $s1의 값을 $t2에 복사함. mov명령어 추가할 필요 없음. mov와 같은 역할임.
ex) loading immediate value 상수 복사
: addi $t2, $zero, 10 # 10을 $t2에 복사함.
- Why should CPU Access Memory?
: 명령어와 데이터들이 메인 메모리에 저장되어있음 -> CPU가 메인 메모리에 접근(읽기/쓰기)해서 프로그램 실행함.
즉, Instruction read 와 Data read/write 를 위해 CPU가 메인 메모리에 접근함.
(용량제한 때문에 데이터를 전부 CPU내부 레지스터에 담을 수 없기 때문)
- Instruction Access (Read)
Program Counter (PC)
: 실행중인 명령어의 메모리 주소값을 담고있는 특별 레지스터(32개의 일반 레지스터랑 별개의 레지스터).
모든 CPU는 special register를 가짐.
PC는 컴퓨터가 켜지면 특정값으로 초기화됨. (수업에선 0으로 초기화된다고 가정하고 설명함.)
그후, 프로그램이 실행됨에 따라 PC값은 바뀜.
- Instruction Access Illustration
: 1. PC값 0으로 초기화.
2. Adress Bus에 PC값 0x0000이 실려감.
3. Data Bus를 통해 sw v0, 0(s8) 명령어가 읽혀옴. (낮은 주소부터_Big Endian)
4. CPU가 3.의 명령어를 해석하고 실행함.
5. PC값이 0x0004로 변경됨, 다시 2~5 같은 과정 반복.
PC가 가리키는 명령어를 메모리에서 CPU로 가져와서 실행한다!
* adress length 와 memory size의 관계
1 bit -> 2 bytes(=2^1)
10 bits -> 1024 bytes(=2^10)
...
n bits -> 2^n bytes
10 2^10 (1KB)
20 2^20 (1MB)
30 2^30 (1GB)
- Word
: 일반적으로 레지스터 길이 == word 크기.
MIPS의 word size는 32 bits (4 Bytes)
Alignment restriction
-> word 단위로 읽기/쓰기를 할 때 지정하는 메모리 주소는 4의 배수!
- Loading and Storing Bytes
byte-addressable instructions (1 Byte 단위로 읽고 쓰기)
: lb, lbu, sb
- lb
: I-format instruction, read a byte (8bit) from memory and loads into a register
lb rt, address (이때 address는 4의 배수일 필요 X)
* Where to Loaded and How?
레지스터는 크기가 4Byte인데 1Byte만 load해오면 어떻게 저장되는거지?
-> LSB(가장 오른쪽)에 저장되고 나머지 3Byte 공간에는 sign-extended(MSB와 같은 수)로 채움.
- lbu (load byte unsigned)
: I-format instruction, sign-extension 을 무조건 0으로 채움.
lbu rt, address
- sb
: I-format instruction, stores (writes) a byte (8bit) from a register to main memory
sb rt, address
* Where to Stored and from Where?
레지스터는 크기가 4Byte인데 그 중 어떤 1Byte를 메모리에 store하는거지?
-> LSB(가장 오른쪽)의 1Byte를 메인 메모리에 write함.
메인 메모리는 애초에 1Byte 단위이기 때문에 딱 1Byte write하고 나머지는 건들지 않음.
즉, sign-extension 같은거 안 함. (sbu 같은거 없음)
- Endianness (lec3 참고)
- Endianness Example