오래 못 할 짓 하지 않기
[ 컴퓨터 구조 ] 1. RISC / MIPS 본문
시작 전 간단히 알고 가야하는 지식들
1. 메모리
- 프로그램이 실행되기 위해서는 필요한 정보들이 메모리에 저장되어 있어야 한다.
- 메모리는 실행되는 프로그램의 [ 명령어 ] 와 [ 데이터 ] 를 저장한다.
- (?)메모리의 저장된 값의 위치는 주소로 알 수 있다. ( 데이터를 주소로 접근하는 것 같음 )
2. CPU (메모리의 내용을 실행하는 곳)
- CPU는 메모리에 있는 데이트를 읽어 들이고, 해석하고, 실행하는 장치이다.
메모리 = 냉장고, 데이터 = 음식 , CPU = 부엌
구성요소
- ALU : 계산기
- 레지스터 : CPU 내부의 작은 저장장치
- 제어장치 : 제어 신호를 보내고 해석
RISC / MIPS
우선 비교를 하려면 CISC 개념이 필요할 듯하다.
CISC CPU의 동작을 보면
MOVS - string을 mov(옮기는) 작업을 한다고 할 때, 사용한다.
밑에 있는 Hello 를 다른 주소에도 옮기려고 할 때,
CPU에 명령을 줄 때,
1. Source adderss 설정 ( 메모리의 어느 adderss에 있는 데이터를 가져올지 ) SI = Source Index
2. Destination address 설정 ( 메모리의 어느 address에 가져다 놓을지 ) DI = Destination Index
3. CX 설정 ( 몇 개를 가져올지 ) CX = Counter
ex) Hello 가 100번째 메모리에 있고, 이거를 200번째에 옮길 건데, SI , DI, CX를 설정해 봐라
SI = 100 / DI = 200 / CX = 5 (5글자니까)
특징 ) 글자 수나 주소에 따라 코드가 달라져야 해서 간단하고 가변적 ( 다른 말로 바꿔야 해서 귀찮다 )
RISC
Reduce Instruction Set Computer
: 동작을 간단하게 줄인 체계
CISC의 동작들을 여러 개로 나누었다.
1. 메모리에서 H를 Load한다. --> ponter 변수 X를 만들어서 걔를 Load한다.
2. X의 값을 다른 주소에 Load 한다.
3. 그 Load한 값을 Store한다.
이런 식으로 동작을 나눈다.
RISC 의 특징 ) 코드의 길이가 늘어나긴 하지만 , 고정적이라 편하다.
ex) 두부 잘라라.
CISC : 1. 두부 찾고 칼 꺼낸 뒤에 바로 자른다.
RISC : 1. 자를 대상 찾기 2. 칼 꺼내기 3. 모양 잡기 4. 썰기
CISC는 재사용 안 됨, 과일 깎으라 하면 또 그거에 맞게 만들어야 함.
RISC는 코드가 길긴 해도 재사용 가능, 과일 썰기도 되고 다 됨
RISC가 쓰이는 곳 = MIPS
MIPS는 3가지 종류가 있다.
R (Register) / I (Immediate) / J (Jump)
- R 명령은 모든 Operand(피연산자) Register로 이루어져서, Load -> Store 연산을 수행한다.
rs = Source of Register 피연산자 1
rt = Target of Register 피연산자 2
rd = Destination of Register 결괏값이 갈 곳
양쪽에는 Operation code 와 Function code 가 양쪽에 있는데, 그것들은 어떤 연산을 할지 정한다.
- I 명령은 Operand가 Register를 통해서가 아니라 Immediate value가 필요할 때 사용하는 명령.
여기에서는 rs와 rt가 쓰임.
constant value = 피연산자 1
rs = 피연산자 2
rt = 결괏값이 갈 곳
쓰이는 곳: ADDI( add i ) , LW SW ( Load, Store ) , BEQ or BNE (조건부 branch 명령)
Immediate value는 16bit 가능
- J 명령은 지정된 Address로 이동하는 명령어다.
주로 쓰일 때 어떤 종류가 쓰이는지 정리해 놓은 것.
R타입 : ADD를 보자. ADD rd, rs, rt를 할 때는 [ rd = rs + rt ]인데
I타입 : ADDI --> ADDI rt, rs, imm16을 하면 [ rt = rs +se(imm16) ]이 나온다.
이때, se(imm16) --> se=sign extention (0 확장) 16을 그냥 10000이 아니라 32비트로 만들어서 000... 010000으로 보존하는 것
참고 : https://wpaud16.tistory.com/187
https://midascopp.tistory.com/93
'2학년 2학기 > 컴퓨터 구조' 카테고리의 다른 글
[ 컴퓨터 구조 ] 6. (Multiple Cycle) Multiple Clock Cycle (0) | 2023.07.04 |
---|---|
[ 컴퓨터 구조 ] 5. Single Cycle 제어부 (0) | 2023.07.04 |
[ 컴퓨터 구조 ] 4. Datapath (3) - Instruction Datapath (0) | 2023.06.30 |
[ 컴퓨터 구조 ] 3. Datapath (2) - Simple Datapath (0) | 2023.06.28 |
[ 컴퓨터 구조 ] 2. Datapath (1) (0) | 2023.06.28 |