3. MIPS 아키텍처
MIPS는 MIPS 테크놀로지에서 개발한 RISC ISAInstruction Set Architecture이다. PS2, 닌텐도 등 Embedded Core 장치에 주로 사용되다가 현재는 많이 밀려났으나, 현대 RISC ISA의 정석에 가까운 구조로 공부하기에 유용하다.
MIPS의 설계원칙
- 간단하기 위해선 규칙성이 중요하다.
- 작은 것이 빠르다.
- 자주 생기는 일은 빨리 처리하라.
MIPS의 레지스터
MIPS는 32비트 기준으로 32개의 레지스터를 가지며, 레지스터 번호는 0~31로 할당된다.
어셈블러는 임시 변수에는 t0, t1과 같은 이름을 부여하며, 저장되어 있는 변수에는 s0, s1과 같은 이름을 부여한다.
산술연산
MIPS의 산술연산은 3개의 피연산자로 구성된다. 이때, 산술연산의 operand는 항상 레지스터를 참조하는 것에 유의하자.
add a, b, c # a gets b+c
add 뿐만이 아닌 모든 산술연산이 위의 규칙을 따르는데, 이는 MIPS의 설계 원칙인 규칙성을 따른 것이다.
예시
f = (a+b) - (c+d);
위 C 코드를 MIPS로 컴파일하면 다음과 같이 변환된다. (레지스터로 데이터를 load하는 부분은 생략)
add $t0, $s1, $s2
add $t1, $s3, $s4
sub $s0, $t0, $t1
Memory Operand
MIPS에서 데이터는 메모리에 저장된다. 산술 연산을 실행하기 위해서는 이 데이터를 메모리에서 레지스터로 load해야 하고, 이 결과는 다시 메모리에 store되어야 한다.
32비트 기준으로 메모리는 1 byte 주소를 갖기에, 8-bit으로 표현가능한 상한인 4GB의 메모리를 가질 수 있다.
워드는 메모리에 정렬되어 저장되는데, 워드의 주소는 4배수이다.
MIPS는 Big Endian을 사용하는데, 0x1234를 12 34 와 같이 나타내는 방법이다. 즉, 메모리의 왼쪽 끝단 (MSB)의 주소가 가장 작다.
Immediate Operands
상수는 명령어에 명시하여 속도를 향상시킬 수 있다. 특정 작은 값을 더하는 연산이 많이 발생할 때, 아예 해당 값을 명령어 안에 포함시켜 메모리에서 불러오는 단계를 생략함으로서 속도를 향상시킬 수 있다.
addi $s3, $s3, 4
MIPS 구조 정리
명령어는 32-bit 워드를 사용한다.
R, I, J 타입의 오직 세 가지의 명령어 구조가 있다.
타입 | 명령어 구조 | |||||
R | OP | rs (source) | rt (target) | rd (destination) | shamt (Shift Amount) | funct (Extends OP code) |
I | OP | rs | rt | 16 bit address or Const. | ||
J | OP | 26 bit address |
R은 산술연산 등이 포함되고, I는 직접연산, J는 Jump를 포함한다.
RISC 답게 단순하고 구조화된 명령어 구조를 가지며, 컴파일러의 성능에 의존하는 경향이 있다.
'학부 수업 > 컴퓨터구조' 카테고리의 다른 글
5.5 프로그램의 실행 과정 (0) | 2020.10.12 |
---|---|
5. 메모리 접근 (Addressing) (0) | 2020.10.12 |
4. MIPS의 명령어 구조와 명령어들 (0) | 2020.10.12 |
2. 명령어와 CPU 아키텍처 (Instructions and CPU Architectures) (0) | 2020.10.12 |
1. 프로세서의 응답시간, 클럭, 수율 (Latency, Clock Frequency, Yield of Processor) (0) | 2020.09.20 |
댓글
이 글 공유하기
다른 글
-
5. 메모리 접근 (Addressing)
5. 메모리 접근 (Addressing)
2020.10.12 -
4. MIPS의 명령어 구조와 명령어들
4. MIPS의 명령어 구조와 명령어들
2020.10.12 -
2. 명령어와 CPU 아키텍처 (Instructions and CPU Architectures)
2. 명령어와 CPU 아키텍처 (Instructions and CPU Architectures)
2020.10.12 -
1. 프로세서의 응답시간, 클럭, 수율 (Latency, Clock Frequency, Yield of Processor)
1. 프로세서의 응답시간, 클럭, 수율 (Latency, Clock Frequency, Yield of Processor)
2020.09.20