본문 바로가기

문과 코린이의, [컴퓨터 구조] 기록/컴퓨터구조 4강

[문과 코린이의 IT기록장] 컴퓨터 구조 - 4.6. 파이프라인 데이터패스 및 제어

반응형

 

 


 

 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 파이프라인

 

 


* 유의사항
- 아직 공부하고 있는 문과생 코린이가, 정리해서 남겨놓은 정리 및 필기노트입니다.
- 정확하지 않거나, 틀린 점이 있을 수 있으니, 유의해서 봐주시면 감사하겠습니다.
- 혹시 잘못된 점을 발견하셨다면, 댓글로 친절하게 남겨주시면 감사하겠습니다 :)
반응형