Learning
토픽 26 / 111·CPU (Central Processing Unit)

재정렬 버퍼 (ROB, Reorder Buffer)

재정렬 버퍼 (ROB, Reorder Buffer)

비순차(Out-of-Order) 실행된 명령어들을 프로그램 순서대로 커밋(Retire)하기 위해 명령어 완료 상태를 추적하는 순환 큐(Circular Queue) 구조의 하드웨어 버퍼

목적: 비순차 실행의 순차적 커밋 보장, 투기적 실행의 안전한 롤백, 정확한 예외 처리

특징: FIFO 순서 유지, 순환 큐, Head(커밋)/Tail(할당) 포인터, 명령어당 1엔트리

구성요소

  • 엔트리 필드: 명령어 유형, 목적지 레지스터, 결과 값, 완료 비트(Ready), 예외 비트
  • Head 포인터: 가장 오래된 미커밋 명령어, 순차 커밋 수행
  • Tail 포인터: 새 명령어 할당 위치

동작원리: ① 디코드 시 ROB Tail에 엔트리 할당 → ② 비순차 실행 후 결과를 ROB에 기록(완료 표시) → ③ Head의 명령어가 완료되면 순차적으로 커밋(아키텍처 상태 갱신) → ④ 예외/오예측 시 Head 이후 모든 엔트리 폐기(롤백)

투기적 실행 롤백: 분기 오예측 시 해당 분기 이후 ROB 엔트리 전부 무효화, 아키텍처 상태는 마지막 커밋 시점으로 복원

Spectre 공격 연관: 투기적 실행 중 캐시 부채널 정보 유출, ROB 롤백으로 아키텍처 상태 복원되나 캐시 상태는 미복원 → 타이밍 공격으로 비밀 데이터 추출

크기: 현대 CPU에서 수백 엔트리(Intel: ~512, AMD: ~256), ROB 크기가 ILP 윈도우 결정

적용사례: Intel Core(대형 ROB), AMD Ryzen, ARM Cortex-A76+, Apple M시리즈

비교: ROB(순차커밋/투기롤백/HW복잡) vs In-Order(ROB불필요/단순/저전력)

연관: 비순차 실행, 레지스터 리네이밍, 투기적 실행, 분기 예측, Spectre