반응형
이전 장에서, data forwarding만으로 data hazard를 해결할 수 없음을 보았다.
따라서 pipeline을 정지시키는 stall을 사용한다. 이는 시간을 낭비하며 아무런 작업을 수행하지 않는 과정이다.
ID단계에서 and 명령어와 IF단계에서 or명령어를 1CC동안 prevent하고, 파이프라인에 nop(아무 동작을 하지 않는 명령어)를 삽입해서 진행시킨다.
이렇게 1CC를 기다린 후, data forwarding을 통해 문제를 해결할 수 있다.
and와 or을 1CC동안 진행하지 못하게 막는다. (prevent)
IF/ID 파이프라인 레지스터 변경을 막으면 and는 다시 ID단계로 들어간다.
PC의 변경을 막으면 or은 다시 IF단계로 들어간다.
즉, 레지스터에 상태를 기록하는 것을 막으면 재실행된다.
파이프라인에 nop(bubble)을 삽입해서 진행시킨다. (제어 신호 9개를 0으로 설정하면 레지스터나 메모리에 기록되지 않는다)
Hazard detection unit은 ID/EX.MemRead가 1이고 (lw명령), ID/EX.RegisterRt와 IF/ID.RegisterRs 또는 Rt가 같으면 pipeline을 stall시킨다.
stall이 필요하다면 PC와 IF/ID 레지스터의 변경을 막기 위해 PCWrite와 IF/IDWrite를 0으로 두고, 모든 9개의 제어 신호가 0인 nop 명령어를 진행시킨다.
반응형
'학교강의필기장 > 컴퓨터구조' 카테고리의 다른 글
컴퓨터구조[20]: Access a Direct Mapped Cache (0) | 2023.06.22 |
---|---|
컴퓨터구조[19]: memory, Direct Mapped Cache (0) | 2023.06.22 |
컴퓨터구조[17]: Data Hazard - Data Forwarding (0) | 2023.06.22 |
컴퓨터구조[16]: control signals for pipelined datapath (0) | 2023.06.22 |
컴퓨터구조[15]: pipelined - lw, sw, bugfix (0) | 2023.06.22 |