Control Hazard
-
Hazard대학/컴퓨터구조 2023. 6. 12. 20:37
Data Hazard 아래와 같이 연속으로 같은 레지스터에 값을 쓰고 읽는 경우 data hazard가 발생한다. WB에서 레지스터에 값을 저장해야 ID에서 저장된 값을 읽어올 수 있기에, 2 cycle 동안 명령어를 정지시키고 실행한다. 참고로 3 cycle을 멈춰야 하는게 아닌가 할 수 있는데, flip-flop이라 하더라도, 전자가 채워지는 시간을 고려하면 2 cycle에도 가능하다고 한다... 하지만 이렇게 명령어를 정지하게되면(nop) 성능상에 문제가 생길 수 밖에 없다. 따라서 회로상으로 명령어의 연산 결과를 바로 가져다 쓰도록 구현한 forwarding 기법이 등장했다. 하지만, 데이터 로드를 수행하는 명령어를 수행한 경우에는? ID에서 가져오고자 하는 레지스터의 값은 MEM단계가 끝난 뒤에..