비순차 프로세서 파이프라인 단계 (Out-of-order Processor Pipeline Stage)

비순차 프로세서에서 각 Stage 별로 어떤 일을 수행하는지 간단히 정리해보자.

  • fetch
    명령어를 메모리(캐쉬)로부터 가져오는 단계
  • decode
    fetch buffer 에서 명령어를 하나씩 인출하여 해독하는 단계.
  • rename register
    물리 register 를 이용하여 operand 의 가짜 의존성을 제거하는 단계
  • issue
    가짜 의존성 제거까지 끝난 명령어를 실행을 위해 reservation station 으로 밀어넣는 단계.
    이 때 명령어를 reorder buffer 와 load-store buffer 에도 같이 밀어넣음.
  • schedule
    reservation station 에서 대기하며 operand 가 준비된 순서대로 execution unit 을 할당하는 단계
  • execution
    각자 execution unit 별로 명령어를 실행, 연산하는 단계
  • writeback
    연산 결과를 ROB(Reorder Buffer)나 물리 register, load-store buffer 에 기록하는 단계.
    아직 commit 이전이므로 결과가 외부에 노출되면 안됨.
  • commit
    차지했던 자원을 반환하고 결과를 구조 레지스터 파일이나 메모리에 갱신

위의 Stage 에는 언급되지 않았지만, fetch 이전에 사실 내부적으로는 이미 메모리의 명령어나 데이터를 prefetch 하는 과정이 있습니다. 메모리의 명령어가 필요할 때마다 메모리에서 가져오면 성능이 말할 수 없이 하락하기 때문에, 미리 local instruction cache 와 data cache 에 가져다놓는 것을 말합니다. 이 과정에서 BTB 나 prediction queue 를 이용하여 분기 예측까지 수행합니다.

You may also like...