오래 못 할 짓 하지 않기
[ 컴퓨터 구조 ] 16. (Hazard) Flushing logic 본문
Flushing logic 이 필요한 이유
: Control Hazard가 발생했을 때,
= (Branch 명령어 O 이고 조건도 되었을 때, 조건이 되기까지 같이 실행되고 있었던 애들이 날아가는 거 )
→ 아래 사진으로 보면, 40번 명령어 beq가 4번째 CLK일 때 Branch가 되는 건데, 4번째 CLK이 될 때까지 실행된 and, or, add 명령어는 flush 되고 72번 명령어가 실행되어야 한다.
따라서 Branch 가 일어났을 때 , 실행했던 몇 개의 명령어가 날아가는 손실을 막기 위해
[ Branch Optimization ]을 한다.
이는 Branch를 하는지 하지 않는지 판단하는 게 EX 와 MEM stage에 있는데 이걸 ID stage로 옮기는 것이다.
그럼 손실은 IF단에 있는 명령어 1개만!
Hazard Detection Unit에 Flush 시키는 신호를 만들어준다.
지금까지는 Stall 로 멈추는 느낌이었다면 이번에는 Flush로 사라지게 하는 거라고 생각하면 된다.
(예시)
위와 같은 경우에는 beq명령어가 조건을 충족하는지 ID단에서 판단할 수 있다.
충족한다면, IF단에 있는 and 명령어만 Hazard detection unit을 control하여 Flush 시키면 된다.
Exception Handling
지금까지 IF단만 Flush 하면 됐는데 Exception Handling에서는 추가적으로 더 Flush 해야 한다.
각 Stage마다 감지할 수 있는 Exception
- ID : Undefined instruction
- EX : Overflow , Invoking Operating System
n번째 stage가 flush 될 때는 , IF 단 ~ n번째 stage까지 다 Flush 함.
(예시)
Overflow exception을 Handling 하기 위한 routine
→ sw 25,1000($0) 이 주소는 Exception Program Count(EPC)에 저장되어 있음
만들어진 결과!
출처 : 한동대 SW 중심대학
'2학년 2학기 > 컴퓨터 구조' 카테고리의 다른 글
[ 컴퓨터 구조 ] 2. Addressing Mode (0) | 2023.09.07 |
---|---|
컴퓨터 구조 1 (0) | 2023.09.01 |
[ 컴퓨터 구조 ] 15. (Hazard) Data Forwarding logic (0) | 2023.07.10 |
[ 컴퓨터 구조 ] 14. Control Hazard solutions (0) | 2023.07.09 |
[ 컴퓨터 구조 ] 13. Data Hazard (0) | 2023.07.07 |