2013-09-29 1 views
0

다음 코드 세그먼트의 경우 모든 잠재적 파이프 라인 위험을 해결하려면 최소 nop 수를 삽입해야합니다.파이프 라인 해저드를 방지하기위한 nops 수

lw $t3, 4($t5) 
beq $t2, $t3, -2 
addi $t2, $t2, 1 

내가 제안 된 솔루션 그러나

lw $t3, 4($t5)   
beq $t2, $t3, -2 
addi $t2, $t2, 1 
NOP  
NOP 

, 나는 위의 대답은 위의 아주 확실하지 않다, 그래서 사람이 나를 도와 드릴까요?

답변

0

beq이 다음주기에 도달하기 전에 $t2이 올바른 값 ($ t2 + 1)을 얻는 것이 유일한 문제인 것처럼 보입니다. 대답은 정말로 $t2의 값을 메모리 나 캐시에 쓰는 데 얼마나 많은 사이클이 걸리는지에 달려 있습니다. 세부 사항은 생략했지만 3 단계 파이프 라인 만 있고 모든 작업에 1 사이클이 걸린다 고 가정하면 믿을 수 있습니다. 심지어 하나의 NOP가 작동 할 수

사이클 0
  1. lwaddi의 값으로 파이프 라인을 입사 가능가
  2. 주기 1
  3. beq가에서 사용 가능하게되었다 $t3$t2의 값을 비교하게 마지막 사이클

귀하의 구현이 이러한 유형의 전달을 지원하는지 여부는 말할 수 없습니다. 안전한 내기는 두 가지 NOP가 될 것입니다. 그러나 여러분은 꽤 많은 세부 사항을 빠뜨 렸습니다. 아직 명확한 설명을 남길만한 충분한 담당자가 없습니다. (희망이 있습니다.)