ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 과제4 - 2번문제
    정리필요2 2008. 9. 1. 23:29

    * 문제

    2. Hazard Detection Unit의 필요성, 프로그램 코드를 이용한 동작과정을 기술하세요. 

    Hazard detection unit 의 필요성

    적제 명령어 뒤에 이 결과값을 읽는 명령어가 뒤따라 나오면 불가피한 stall 이 필요하다.

    Hazard detection unit 은 적제명령어와 뒤따르는 명령어들의 종속성을 적제명령어가 EX stage에 도달했을 때 미리 검출하고

    PC, IF/ID 레지스터, 지연 멀티플렉서에 제어신호를 보내 적제명령어 뒤에 nops 를 만들어 한클럭 stall 함으로써

    forwarding unit 과 원할하게 데이터 해저드를 해결한다.


    프로그램 코드를 이용한 동작과정 기술

    강의자료 6장 46p " Data Hazard Requiring a Stall " 의 코드를 예를 들어 설명하겠다.

    lw   $2, 20($1)

    and $4, $2, $5  


    사용자 삽입 이미지


    - 해저드 발생 상황 -

    위 Clock 3 그림에서

    lw   $2, 20($1) 는 EX stage에 있고  ID/EX.RegisterRt 에 $2 값이 Hazard detection unit 으로 들어간다.

    뒤 따라오는 and $4, $2, $5 는 ID stage에 있고 IF/ID.RegisterRs 인 $2 와 IF/ID.RegisterRt 인 $5  두 값이  Hazard detection unit 으로 들어간다.

    또 ID/EX 의 M 제어필드가 Hazard detection unit 으로 들어간다.

     

    이 때 Hazard detection unit 은 위에서 받은 네 개의 입력 값으로 아래와 같이 적제와 관련된 해저드를 검출한다.

     

    - 해저드 검출 -

    첫 째 - ID/EX 의 M 제어필드를 보고 MemRead 신호가 인가되고,

    둘 째 - ID/EX.RegisterRt 값이 IF/ID.RegisterRs 나  IF/ID.RegisterRt 값 둘 중 하나와 같으면 stall 이 필요한 해저드이다.

    - 해저드 검출 코드 -

    if ( ID / EX.MemRead

    and ( ( ID/EX.RegisterRt = IF/ID.RegisterRs )

    or ( ID/EX.RegisterRt = IF/ID.RegisterRt ) ) )


    -> ID/EX.RegisterRt = IF/ID.RegisterRs = $2 이고 EX.MemRead 도 인가되었다.


    사용자 삽입 이미지


    - Stall -

    위 clock 4 그림에서 Hazard detection unit해저드가 검출되면 3개의 제어신호를 보내는데

    그 중 첫번째는 ID stage control unit 다음에 위치한 mux (지연 멀티플렉서) 의 입력을 0 으로 제어한다.

    그러서 기존에 WB, M, EX 단계의 9개 제어신호가 모두 해제되어 아무것도 하지않는 nop 명령어를 만든다.

    두번째 제어신호는 IF/IDWrite 를 해제하여 IF/ID 파이프라인 레지스터 값을 변하지 않게 한다. (and 명령어는 진행하지 않고 한클럭 쉰다.)

    세번째 제어신호는 PCWrite 를 해제하여 하여 다음 명령어 인출을 막는다. (or 명령어도 진행하지 않고 한클럭 쉰다.)

    이로써 lw 명령어 뒤로 아무것도 하지 않는 nops가 만들어졌다.

    - 제어코드 -

    stall the pipeline


    Hazard detection unit 이 stall 을 하면 Forwarding unit 이 문제 1과 같이 데이터 종속성을 검출하고 ALU mux를 제어하여 forwarding을 하게된다.

Designed by Tistory.