토픽 25 / 111·CPU (Central Processing Unit)
레지스터 리네이밍 (Register Renaming)
레지스터 리네이밍 (Register Renaming)
명령어가 사용하는 논리 레지스터(아키텍처 레지스터)를 물리 레지스터에 동적으로 재매핑하여 WAR(Write After Read)·WAW(Write After Write) 이름 의존성을 제거하는 기법
목적: 거짓 의존성(False Dependency) 제거, ILP(명령어 수준 병렬성) 증대, 비순차 실행 효율 향상
특징: 하드웨어 동적 매핑, 물리 레지스터 > 논리 레지스터, 컴파일러 독립적
구성요소
- •논리 레지스터(Architectural Register): ISA에서 정의하는 프로그래머 가시적 레지스터 (x86-64: 16개)
- •물리 레지스터(Physical Register): 실제 하드웨어 레지스터 풀 (수백 개)
- •RAT(Register Alias Table): 논리→물리 레지스터 매핑 테이블, 매 명령어 디코드 시 갱신
- •프리 리스트(Free List): 사용 가능한 물리 레지스터 목록
동작원리: ① 명령어 디코드 → ② 목적지 논리 레지스터에 새 물리 레지스터 할당(RAT 갱신) → ③ 소스 레지스터는 RAT에서 현재 매핑 참조 → ④ 커밋 시 이전 매핑 해제(프리 리스트 반환)
해결하는 해저드: WAR(선행 읽기 전 후행 쓰기) — 서로 다른 물리 레지스터 사용으로 제거, WAW(같은 레지스터에 연속 쓰기) — 각각 다른 물리 레지스터 할당으로 제거
Tomasulo 알고리즘 연계: 예약 스테이션 + 레지스터 리네이밍 결합, CDB(Common Data Bus) 브로드캐스트, IBM System/360 Model 91에서 최초 구현
적용사례: Intel Core(물리 레지스터 파일 기반), AMD Ryzen, ARM Cortex-A76+, Apple M시리즈
비교: 리네이밍(HW동적/WAR·WAW제거/복잡) vs 컴파일러 레지스터 할당(정적/제한적/간단)
연관: 비순차 실행, ROB, 파이프라인 해저드, Tomasulo, 슈퍼스칼라