과정 설명
1. PC 값으로부터 명령어 memory의 주소를 구한다.
2. 명령어 memory에 접근하여 명령어를 get한다. (32bit)
3. 32bit 명령어를 분석한다. (R, I, J format 마다 다름)
4. register file = 32개의 register 가 모여있는 하드웨어 모듈
5. 분석한 명령어에 따라 RS field 값은 register #1 에 넣음 , RT field 값은 register #2에 넣음
6. 넣은 값이 ALU의 input이 된다.
7. ALU가 연산을 하고 뒤로 돌아가서 Data in(쓰기 포트)에 연산 결과를 넣는다.
8.연산결과를 어디에 넣을지 Rd 가 결정하고 결과를 넣는다.
I-format 일 때 (Rd 를 Rt로 생각하기)
1~5 동일
6.ALU 가 Imm16값을 직접 가져온다.
7.RS 값과 더하고 Data memory에서 그 주소에 접근한다.
8. memory에서 값을 가져와서 register file의 쓰기 포트에 넣는다.
특징
메모리가 instruction memory, data memory 두개로 나누어져있다.
연산을 하는 ALU 가 있다.
register을 모아논 register file 이 있다.
명령어의 주소를 모아놓은 PC가 있다.
질문 ) 왜 instruction과 data 메모리가 분리되어 있는가?
이것은 single cycle execution으로 1 clock cycle 안에 모든 연산이 끝나야 한다.
그런데 명령어를 읽고, 데이터를 가져오는 것을 1clock cycle안에 할 수 없기 때문에 분리하지 않고서는
1 clock cycle안에 모든 것을 해결할 수 없다. 그래서 instruction과 data메모리를 따로 분리해서 이용한다고 가정해야한다.
'ੈ✩‧₊˚Computer Science > 컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] Pipelining Hazard (파이프라인 해저드) (0) | 2020.11.13 |
---|---|
[컴퓨터구조] MultiCycle Datapath (0) | 2020.11.06 |
[컴퓨터구조] single cycle 의 단점, multi cycle (0) | 2020.11.06 |
[컴퓨터구조] 데이터패스(Datapath) 명령어 실행(MIPS) (0) | 2020.10.30 |
[컴퓨터구조]MIPS Instruction Format (0) | 2020.10.21 |