pipelined datapath 의 두 가지 키포인트
1. 어떤 것을 한 단계에서 다른 단계로 전달하려면, 파이프라인 레지스터에 넣어야 한다.
- 그렇지 않으면, 다음 명령어가 그 단계에 들어올 때 데이터나 정보가 손실된다.
2. 각 하드웨어 구성요소 - 명령어 메모리, 레지스터 읽기 포트, ALU, 데이터 메모리, 레지스터 쓰기 포트는 한 번에 한 단계에서만 사용할 수 있다.
- 하드웨어는 여러 명령어에 의해 동시에 공유될 수 없다. 레지스터 파일은 읽기/쓰기를 위한 별도의 포트를 갖고 있으므로 다른 구성요소로 간주할 수 있다.
위는 pipeline datapath의 예시이다.
시간은 왼쪽에서 오른쪽으로 진행되고, 각 clock cycle(CC)마다 명령어가 진행된다.
다섯 개의 명령어가 차례로 파이프라인에 들어간다.
각 사이클마다 모든 명령어는 다른 단계에 있다.
레지스터 파일은 별도의 포트를 통해 동일한 사이클에 읽고 쓸 수 있다.
Control Signals for Pipelined Datapath
우리는 control signals를 단계 별로 5가지 그룹으로 나눈다. 각 control signals는 한 단계에서 활성화된 컴포넌트와 연결된다.
IF stage, ID stage: 제어할 것 없음 (RegWrite는 WB단계에서 사용됨)
EX stage
ALUSrc : ALU의 두 번째 입력으로, read data2 또는 부호확장된 즉시값 중 하나를 선택한다.
ALUOp: 6비트 func 필드로, ALU가 어떤 연산을 사용할지 정한다.
RegDst: Write 레지스터를 선택한다. (1일 때, R type 명령어 / 0일 때, load 명령어)
MEM stage
Branch: 분기 조건이 충족되면 PC를 분기 대상 주소로 업데이트함
MemRead: load 명령어에서 사용됨. 주어진 주소에서 메모리로부터 데이터를 읽어옴
MemWrite: store 명령어에서 사용됨. 주어진 주소에 데이터를 메모리에 저장함.
WB stage
MemtoReg: ALU 결과 또는 메모리 값 중 레지스터 파일로 전송할 값을 결정
RegWrite: 선택된 값을 레지스터에 기록
control signals의 의미는 변경되지 않고, 동일한 값을 테이블에서 사용할 수 있다.
위 표는 각 signal에 대해 파이프라인 단계별로 그룹화 한 것이다.
각 명령어마다 아홉개의 control signals는 각 단계에서 설정돼야 한다.
- 파이프라인 레지스터를 확장해서 control information을 포함시킬 수 있다.
- 명령어가 진행됨에 따라 control values는 하나의 파이프라인 레지스터에서 다음 레지스터로 이동할 수 있다.
명령어의 값은 ID 단계에서 얻어지고, 단계를 통해 진행될 수 있다.
- RegDst, ALUOp1/0, ALUSrc는 EX 단계에서 사용되고, EX/MEM 레지스터로 복사되지 않는다.
- Branch, MemRead, MemWrite는 MEM단계에서 사용되고, MEM/WB 레지스터로 복사되지 않는다.
- MemtoReg와 RegWrite는 WB단계에서 사용된다.
'학교강의필기장 > 컴퓨터구조' 카테고리의 다른 글
컴퓨터구조[18]: Data Hazard - Stall (0) | 2023.06.22 |
---|---|
컴퓨터구조[17]: Data Hazard - Data Forwarding (0) | 2023.06.22 |
컴퓨터구조[15]: pipelined - lw, sw, bugfix (0) | 2023.06.22 |
컴퓨터구조[14]: Pipelining (0) | 2023.06.22 |
컴퓨터구조[13]: Control Unit, Jump (0) | 2023.04.16 |