오래 못 할 짓 하지 않기

[ 컴퓨터 구조 ] 11. Pipeline DataPath 본문

2학년 2학기/컴퓨터 구조

[ 컴퓨터 구조 ] 11. Pipeline DataPath

쫑알bot 2023. 7. 6. 15:15
728x90

Pipeline DataPath

Pipeline에 Hazards가 없다고 가정하고 Datapath를 설계할 예정이다. 

 

정확히 Pipeline의 모양은 이렇다.

돌림노래라고 생각하면 가장 이해하기 쉬울 듯.

 

5번째 CLK일 때(부터), 5개의 명령어가 Pipeline 꽉꽉 채워서 다 돌아감

 

 


 

Single Cycle Datapath를 Pipeline 5 steps에 맞춰 나누었음.

 

IF     =     PC , Instruction memory 를 이용하여 instruction을 가져온다.

ID     =    Register file  를 읽는다.

EX    =    ALU 로 연산을 한다.

MEM =   Memory 에 access한다.

WB    =   Memory 혹은 ALU에서 나온 값을 받아서 Register file로 back한다.

 

 

중요한 점은, 이 step들이 동시에 작동은 하되, 데이터들이 섞이지 않도록 해야 한다.

따라서 이 Pipeline들을 나누어주는 Register가 필요하다.

IF/ID 라고 되어있으면 그 Register 기준으로 왼쪽이 IF , 오른쪽이 ID라는 뜻.

 

이 구조의 치명적인 단점 : LW 는 Write register 위치에 적힌다. ALU에서 연산한 값이 Data memory 의 주소로 들어가고

그 값이 나오면서 Write data로 들어간다.

근데 Write Register가 주는 주소는 어떻게 될까? 이전 구조였으면 얜 한 번 Instruction을 받고 놀고 있다가 오면 작업을 했었는데, 이젠 놀고 있는 게 아니라 일이 있는 애다.

 

아래가 그 해결법이다.

 

LW 의 목적지 register ( rt ) 도 Pipeline에서 연산을 같이 하지는 않고 write 될 때까지 같이 따라다니게 된다.

 

 

 

 

출처 : 한동대 SW중심대학