본문 바로가기
2-2 학기/Computer Organization

[컴퓨터구조] Lec16 Pipelined Datapath and Control

by bona.com 2023. 12. 19.

들어가기 전에,,

  • 데이터패스를 5개씩 분리해서 하나씩 clock cycle 부여해서 명령어가 돌아가게 했음
  • 각 부분은 명령어 실행 단계에 따라서 다음과 같이 이름이 붙여진다.IF 명령어 인출
    ID 명령어 해독 및 레지스터 파일 읽기
    EX 실행 또는 주소 계산
    MEM 데이터 메모리 접근
    WB 쓰기 (Write-back)

 

  • 동일한 시간에 동일하게 끝내게 하는 게 파이프라인이었다.

앞서 보았듯이 일반적으로 정보 흐름은 왼쪽에서 오른쪽으로 진행된다. 하지만 이 흐름 중 두 가지 예외가 있다.

  1. WB 단계: 결과를 Reg파일에 쓰기 (역류) ⇒ 데이터 해저드 유발
  2. PC의 다음 값 설정: 증가된 PC값과 MEM 단계의 분기 주소 중에서 선택 ⇒ 제어 해저드 유발

📌lw Instruction Stage

이제부턴 색칠이 된 것과 안 된 것의 구분이 생김

입력부: 외부에 있는 게 들어오면 비활성화

출력부: 메모리 안에 있는 것이 밖으로 나간다.

1️⃣IF Stage

Mux, PC, Adder, Instruction memory 활성화

* PC는 다 칠해져있어야 함! (사진 오류)

첫 번째 stage에서는 컴퓨터가 어떤 명령어인지 판단할 수 없음

2️⃣ID Stage

Register의 Read data1, 2, Sign-extend 활성화

Register 뒷 부분에 파이프라인의 색깔이 칠해진 걸 볼 수 있다.

이는 명령어가 read되고 밖으로 나간다는 의미.

IDEX의 레지스터에 rs값, rt 값, 확장된 32비트 값, PC+4 가 들어가게 된다.

3️⃣EX Stage

Mux, ALU 활성화

ALU 값은 유효 메모리 주소이다.

세 번째 stage까지 가야 이제 어떤 명령어 인지 판단 가능

4️⃣MEM Stage

Data Memory, Read data 활성화

ex에서 값이 나가서 데이터 메모리에 접근하고 값을 내보내니까 뒷 부분에 색칠이 칠해져 있다.

R 타입을 위한 별도의 ALU 결과값이 나가는 거 확인하기

5️⃣WB Stage

Mux와 Register의 Write Reg, data 활성화 ⇒ 데이터 해저드 유발

문제가 발생한다

lw $1, 200($zero)라고 했을 때

$1가 목적지이다.

sub 를 실행할 때 $1의 값이 들어갈 수 있다.

선을 끊어버림

별도의 선을 하나 뽑아서 보낸다.

그러면 $1값이 보내져서 다시 집어넣으면 되는 것이다.

원래의 목적지로 갈 수 있게끔 선을 연결하는 것이다.

📌sw도 비슷하다.

하지만, MEM 단계에서 Data Memory의 왼쪽 부분만 작동한다. (WB 단계에선 수행하는 것 없음)

📌파이프라인 제어

: 단일 방식에서는 10개의 신호를 동시에 발사했지만, 파이프라인 도입으로 인해 이제는 부분별로 제어신호를 발사해야 한다.

IF 제어 신호 없음 (항상 같은 작업 수행하기 때문에 필요 없다.)

 

ID 제어 신호 필요 없음 (이하 동일)
EX RegDst (rt, rd 구분), ALUOp(수행 연산 종류), ALUSrc(Read data 2, extended 16 bit 중 어느걸 피연산자?)
MEM Branch(beq), MemRead(lw), MemWrite(sw)
WB MemtoReg, RegWrite (rw, lw 일 때만 활성화)

 

파이프라인 데이터 패스에 제어를 추가하였다.

첫 번째 단계는 기존 데이터패스의 제어선에 레이블을 붙이는 것이다.

단일 사이클 구현에서와 같이 매 클럭 사이클마다 PC에 쓰기가 행해지며, 따라서 PC를 위한 쓰기 신호는 따로 없다고 가정한다.

(같은 논리로 파이프라인 레지스터들을 위한 쓰기 신호도 따로 없다.)

파이프라인을 위한 제어를 명시하기 위해서는 각 파이프라인 단계 동안의 제어 값들을 정하기만 하면 된다.

 

각 단계에서 명령어에 따라 각 제어신호들에게 내보내주는 신호

 

파이프라인 레지스터를 통한 제어신호의 전달

: 제어 신호가 EX → MEM → WB 거치면서 각자에 필요한 정보는 쓰고 나머지는 다음 거에 전달하는 방식

 

완성된 MIPS 파이프라인