1. I Format Instruction
I Format Instruction은 앞서 살펴봤던 Immediate Operation, Transfer(lw/sw 등), Branch 등을 위해 사용되는 Instruction Format이다. 때문에 상수, 혹은 주소의 위치를 오퍼랜드로 가진다. (addi, lw, sw, lb, sb, lh, sh, beq 등) I Foramt이 쓰이는 가장 중요한 이유는 레지스터가 아닌 메모리에 접근해서 무언가를 가져오거나, 상수를 반드시 써야할 때 사용된다. (레지스터가 아닌 오퍼랜드를 쓸때 I Format을 유용하게 사용한다)
- op : opcde로 명령어를 나타낸다.
- rs : 소스 레지스터를 나타낸다
- rt : 타겟 레지스터를 나타낸다.
- address/immediate : 주소나 상수를 나타낸다.
Design Principle 4.
Good deisgn demands good compromise (좋은 디자인은 좋은 타협을 요구한다)
- immediate operation과 load-store operation을 모두 I format으로 만들었음.
- 새로운 format을 만들지 않고 어느정도 타협해서 비슷하면 묶어서 처리했음.
- 이렇게 되면 구조 자체가 단순해지고 단순성은 고성능으로 연결된다.
다 좋지만 문제가 있다. 만약 메모리가 4GB라면 16Bit에 4GB의 모든 영역을 표현할 수 없다. 때문에 우리는 여기에서 변위 주소 지정방식 (Displacement Addressing)을 사용한다. rs가 가리키는 레지스터의 값(=주소)를 기준으로 immediate의 16비트로 표현할 수 있는 만큼 주소를 감소시키거나 증가시킨다.
arr[2] = temp + arr[4]
lw $t0, 16($s0)
add $s0, $t0, $t1
sw $t0, 8($s0)
- lw $t0, 16($s0)에서 lw는 opcode, t0는 rt, s0는 rs, 16은 immediate이다.
- 즉 메모리에서 로드해서 rt에 저장할 것인데, rs에서 16만큼 움직인 위치의 값을 읽는다.
- 이러한 변위주소지정방식은 I format instruction을 구현하는데에 용이하게 사용된다.
- 주소지정방식은 변위지정주소방식 이외에 다양한 방식들이 존재한다. (다음 포스트에서 알아보자)
2. Reference
'컴퓨터구조' 카테고리의 다른 글
명령어 (12) - 조건 연산, J Format (0) | 2020.04.08 |
---|---|
명령어 (11) - 논리 연산 (0) | 2020.04.08 |
명령어 (10) - 주소 지정 (0) | 2020.04.08 |
명령어 (8) - R Format (0) | 2020.04.08 |
명령어 (7) - 이진 표현법 (0) | 2020.04.08 |
명령어 (6) - Immediate 오퍼랜드, 상수 Zero (0) | 2020.04.08 |
명령어 (5) - MIPS 레지스터 (0) | 2020.04.08 |