2014-10-04 3 views
1

5 단 파이프 라인 (IF-ID-EX-MEM-WB) 에서 다음 명령의 실행을 고려하십시오. "SD N (R2), R1"은 레지스터 R1의 데이터를 저장하는 것을 의미합니다. 메모리 위치 M [N + R2], "ADD R3, R1, R2"는 R1 + R2 연산을 수행하고 그 결과를 R3에 저장하고 NOP는 버블이다.파이프 라인 위험 처리

내가 알고있는 것에 대해 레지스터는 ID 단계에서 읽혀집니다. 나는 다음과 같은 지시 사항이있는 경우

그래서 :

I1: SD 0(R2), R6 
NOP 
I2: ADD R3, R1, R2 

를 한 후 실행 (나는 분명히 보이는 희망)

  R2 is read 
      ^ Store M[0+R2] <- R6 
      ^  ^
I1: | IF | ID | EX | MEM | WB | 
NOP:  |////|////|////|////|////| 
I2:    | IF | ID | EX | MEM | WB | 
         v 
        R2 is read 

I1 4주기에 위험이 거기에 다음과 같은 간다 두 지침 모두 R2에 동시에 액세스하기 때문에 MEM 단계에 있고 I2는 ID 단계에 있습니까? R2가 ID 단계에서만 읽혀 지므로 MEM 단계에서 액세스되지 않으므로 위험하지 않습니까?

답변

0

모든 레지스터가 ID 단계에서 읽혀 지므로 레지스터를 읽는 데 위험이 없습니다.

입니다. 읽기 원하는 레지스터가 아직 완성되지 않은 경우 일부 명령어가 ID에서 정지해야 함을 의미합니다. 그것이 "우회"가 도움이 될 수있는 곳입니다.