MIPS 아키텍처로 파이프 라이닝과 스톨 및 포워드를 진행 중이며 확실하지 않은 몇 가지 사항이 있습니다.
각 집합의 처음 두 개와 같은 두 개의 인접한 명령어가 모두 동일한 레지스터를 사용하지만 첫 번째가 실제로 해당 레지스터를 수정하지 않는 경우 여전히 정지가 있습니까? add와 first addi
의 두 번째 세트가 각각 modified $t0
이면 $t0
, 다음 명령에서 업데이트 된 값을 사용하기를 원하기 때문에 스톨을 원할 것 입니다. 그러나 여기서 다음 명령의 결과는 $t0
변경되지 않으므로 실제로 영향을 미치지 않습니다. 이 경우 마구간이 없습니까? 또는 레지스터에 쓰거나 읽거나 읽지 않더라도 레지스터가 사용 중이기 때문에 중단이 있습니까?
그리고 첫 번째 세트 addi
에서 추가와 두 번째 사이 의 첫 번째 addi
간격이 $t1
사용상 의 스톨을 필요로하지 않을만큼 충분 합니까? 아니면 거기에 도움을주기 위해 실속이 필요합니까?
add $t1, $t0, $t0
addi $t2, $t0, 1
addi $t3, $t1, 1
addi $t1, $t0, 1
addi $t2, $t0, 2
addi $t3, $t0, 3