1. 파이프라인 데이터패스
1) MIPS 명령어 파이프라인의 5단계
1. IF(Instruction Fetch) : 명령어 인출
2. ID(Instruction Decode) : 명령어 해독 및 레지스터 파일 읽기
3. EX(Execution) : 실행 및 주소 계산
4. MEM(Memory) : 데이터 메모리 접근
5. WB(Write Back) : 레지스터에 쓰기
- 데이터패스를 5개의 부분으로 나눈 것이다.
- 한 클럭사이클에 최대 5개의 명령어가 실행될 수 있다는 것을 의미한다.
2) 단일 사이클 데이터패스 분할
- 일반적으로 정보 흐름은 왼쪽에서 오른쪽으로 진행된다.
- 그러나 2가지 예외가 존재한다. (위 그림의 하늘색 선 참고)
a. WB단계 : 결과를 레지스터 파일에 쓰기
b. PC의 다음 값 선정 : 증가된 PC값과, MEM단계의 분기 주소 중에서 선택
cf) 단일 데이터패스를, 시간측에 배치해 관계 파악하기 위한 그림
- 이는 파이프라인 실행에서 일어나는 일들을, 더욱 가시화해서 볼 수 있도록 만든다.
3) 파이프라인 데이터패스
(1) 파이프라인 레지스터
- 파이프라인 단계를 분리하는 역할
- 모든 명령어는 매 클럭사이클마다 한 파이프라인 레지스터에서 다음 레지스터로 전진한다.
: 즉, 값을 기억(저장)해놓는다.
: WB단계는 파이프라인 레지스터가 없다. 모든 명령어는 컴퓨터의 상태(레지스터 파일, 메모리, PC)를 갱신해야 하는데, 이렇게 갱신되는 상태는 별도의 파이프라인 레지스터가 필요하지 않다.
: PC는 파이프라인 레지스터이다. (IF단계에 데이터를 제공하기 때문에)
[ lw(적재) 명령어 파이프라인 데이터패스 활성화 과정 ]
1. IF단계
: Mux, PC, Adder, Instruction Memory
2. ID단계
: Register의 Read Data1, Read Data2, Sign-extened
3. EX단계
: Mux, ALU 활성화
4. MEM단계
: Data Memory, Read Data
5. WB단계
: Mux, Register file의 Write Register, Data
< 적재(lw) 명령어를 제대로 처리하기 위한 데이터패스 >
- 쓰기 레지스터 번호를 먼저, ID/EX 레지스터로, EX/MEM 레지스터로, MEM/WB레지스터로 전달한다.
- 이 레지스터 번호는 WB단계에 쓰기를 행할 레지스터를 명시하기 위해 사용된다.
[ sw(저장) 명령어 파이프라인 데이터패스 활성화 과정 ]
2. 파이프라인 제어
- 파이프라인 데이터패스에 제어를 추가한다.
: 단일 사이클 데이터패스에서는 10개의 신호를 동시에 발사했지만, 파이프라인은 부분별로 제어신호를 보내야 한다.
: 단일 사이클 구현에서와 같이, 매 클럭사이클마다 PC에 쓰기가 행해지며, 따라서 PC를 위한 신호는 없다고 가정한다.
: 같은 논리로 파이프라인 레지스터들(IF/ID, ID/EX, EX/MEM, MEM/WB)를 쓰기 위한 쓰기신호가 따로 없다.
1) 파이프라인 단계마다의 제어선의 역할.
1. IF : 제어신호가 없다. (PC 쓰기, 명령어 메모리를 위한 제어신호들은 항상 인가됨)
2. ID : 제어신호가 없다. (마찬가지로, 매 클럭사이클마다 같은 일이 반복되기 때문에 제어선이 없다.)
3. EX : RegDst(rs,rd구분), ALUop(수행연산 종류), ALUSrc(Read Data2, Extened 16bit 중 피연산자로 넣을 것 결정)
4. MEM : Branch(beq), MemRead(lw), MemWrite(sw)
* Branch : 제어가 branch를 인가하고, ALU 결과가 0이 아니면, PCSrc(PC+4), 즉 다음 주소를 인가한다.
5. WB : MemtoReg, RegWrite(lw)
신호 이름 | 인가되지 않은 경우(0) | 인가된 경우(1) |
RegDst | 명령어 rt필드(20:16)가 Write reg로 입력 |
명령어 rd필드(15:11)가 write reg로 입력 |
Regwrite | 아무일도 발생하지 X | write register 입력이 지정하는 레지스터에 write Data 입력 값을 쓴다. |
ALUSrc | 레지스터 파일의 두 번째 출력(Read Data2)가 ALU의 두 번째 피연산자가 된다. | 명령어의 하위 16bit가 부호확장되어 ALU의 두 번째 피연산자가 된다. |
PCSrc | PC+4가 새로운 PC 값이 된다. | 분기 목적지 주소가 새로운 PC값이 된다. |
MemRead | 아무일도 발생하지 X | Address 입력이 지정하는 데이터 메모리 내용을 Read Data 출력으로 내보보낸다. |
MemWrite | 아무일도 발생하지 X | Address 입력이 지정하는 데이터의 메모리 내용을 Write Data 입력값으로 바꾼다. |
MemtoReg | ALU출력이 레지스터의 write data 입력이 된다. | 데이터 메모리 출력이 레지스터의 Write Data 입력이 된다. |
2) 파이프라인의 단계에 따른, 제어선들의 값
- 제어선들이 EX단계에서부터 출발하기때문에, 제어 정보를 명령어 해독 동안에 생성할 수 있다.
3) 파이프라인 레지스터를 통한 제어신호의 전달
- 이는 명령어가 파이프라인을 따라 흘러가면서, 제어신호들이 적당한 파이프라인 단계에서 사용되는 것을 보여준다.
4) 완성된 MIPS 파이프라인
* 유의사항 - 아직 공부하고 있는 문과생 코린이가, 정리해서 남겨놓은 정리 및 필기노트입니다. - 정확하지 않거나, 틀린 점이 있을 수 있으니, 유의해서 봐주시면 감사하겠습니다. - 혹시 잘못된 점을 발견하셨다면, 댓글로 친절하게 남겨주시면 감사하겠습니다 :) |
'문과 코린이의, [컴퓨터 구조] 기록 > 컴퓨터구조 4강' 카테고리의 다른 글
[문과 코린이의 IT기록장] 컴퓨터 구조 - 4.5. 파이프라이닝에 대한 개관 (6) | 2021.01.19 |
---|---|
[문과 코린이의 IT 기록장] 컴퓨터 구조 - 4.4. 데이터패스의 단순한 구현 (1) | 2021.01.17 |
[문과 코린이의 IT기록장] 컴퓨터 구조 - 4.3. 데이터패스 만들기 (2) | 2021.01.17 |
[문과 코린이의 IT 기록장] 컴퓨터 구조 - 4.2.논리 설계 관례 (0) | 2021.01.17 |
[문과 코린이의 IT기록장] 컴퓨터 구조 - 4.1. 프로세서(CPU) (0) | 2021.01.17 |