명령어 파이프 라이닝에서 분기 지연 슬롯 및 분기 예측 프리 페치 이해

직접 정의 :

  • 분기 지연 슬롯 : 일반적으로 어셈블러는 분기 명령어 직후에 일부 명령어를 이동하도록 명령어를 재정렬하여 분기 여부에 관계없이 이동 된 명령어가 항상 실행되도록합니다. 시스템을 일관되지 않은 상태로 두지 않고 가져 오거나 가져 오지 않습니다.

  • 분기 예측 프리 페치 : 분기 조건의 결과를 예측 한 다음 결과 위치에서 명령을 프리 페치하여 분기 명령 후 즉시 실행되도록합니다.

이제 , 아래 실행 순서를 고려해 보겠습니다 (아래, F : instruction Fetch, D : instruction Decode, X : eXecute, M : 메모리 액세스, W : 쓰기) :

BRANCH F D X M W INSTR1 F D X M W INSTR2 F D X M W INSTR3 F D X M W 

일반적으로 분기 조건이 평가되고 실행됩니다. X 스테이지에서. 이 단계에서 INSTR1INSTR2는 이미 시작되었으며 분기 지연 사용 여부를 선택하면 영향을받을 수있는 지침입니다. 슬롯 또는 분기 예측 프리 페치 또는 둘 다. 나는 이것을 명확하게 논의 할 텍스트를 찾지 못했습니다. 그래서 다음과 같이 추측 해 보았습니다.

  • 둘 다 사용하면 명령 순서는 다음과 같습니다.

    BRANCH: branch-instruction INSTR1: branch-delay-slot INSTR2: branch-prediction-prefetch 
  • 분기 예측 만 사용하는 경우 명령어 시퀀스는 다음과 같습니다.

    BRANCH: branch-instruction INSTR1: branch-prediction-prefetch-1 INSTR2: branch-prediction-prefetch-2 
  • 분기 지연 슬롯 만 사용하는 경우 명령 순서는 다음과 같습니다.

    BRANCH: branch-instruction INSTR1: branch-delay-slot-1 INSTR2: branch-delay-slot-2 

이 문제가 맞습니까? 이것이 실제로 다른 경우에 어떻게 발생합니까? 아니면 더 자세한 내용이 있습니까?

댓글

  • ' " 분기 " 시퀀스 만 사용하는 경우 : 어떻게 brach-delay-slot을 가질 수 있습니까? 또한 헤더에있는 것처럼 보이는 어셈블러 부분을 표시하면 명확 해집니다.
  • (1) " 저는 ' " 분기 만 사용하는 경우 " 시퀀스 : 어떻게 brach-delay-slot을 가질 수 있습니까? "-문장 수정, 실수로 불완전한 상태로 두었습니다. 지금 이해가 되길 바랍니다. (2) 이해하지 못함 : " 또한 헤더에있는 것 같은 어셈블러 부분을 표시하면 명확 해집니다. " Do 내가 함께 일하고있는 어셈블러를 지정해야한다는 뜻입니까? 그렇다면 : Patterson의 " Computer Organization and Design " 책에서 파이프 라이닝 장을 읽고 있습니다. 따라서 순수한 이론을 다루고 운동 문제를 해결합니다.

답변

예, 그렇게 될 수 있습니다. 예측과 지연 슬롯을 결합한 아키텍처는 기억 나지 않지만 예측이 있으면 실행 단계와 병렬로 실행 (작은 메모리에서 조회) 할 수 있으므로 지연 슬롯이 필요하지 않습니다.

댓글

  • 확인해 주셔서 감사합니다. 이러한 시나리오는 Patterson의 Computer Architecture 책의 실습 문제에서 다루었 기 때문입니다. 설명없이 직접적인 해결책을 제공합니다. 내용에 대해 논의합니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다