파이프라인과 비순차 실행

CPU가 명령 하나의 모든 단계를 끝낸 뒤 다음 명령을 시작하면 실행 유닛이 자주 빈다. 파이프라인은 여러 명령의 인출·해독·실행·결과 처리를 겹쳐 단위 시간당 완료하는 명령 수를 늘린다. 파이프라인 깊이와 클럭은 관련이 있지만 깊을수록 무조건 빠른 것은 아니다. 분기 예측이 틀리면 잘못 가져온 명령을 버리고 올바른 경로로 다시 채워야 한다.

비순차 실행(Out-of-Order Execution)은 프로그램 순서상 앞선 명령이 데이터를 기다릴 때, 의존성이 없는 뒤쪽 명령을 먼저 실행한다. 레지스터 이름 바꾸기는 서로 다른 명령이 같은 이름의 아키텍처 레지스터를 사용하면서 생기는 가짜 의존성을 없앤다. 예약 스테이션과 스케줄러는 입력이 준비된 동작을 실행 포트로 보낸다.

실행 순서가 달라도 프로그램이 보는 결과는 원래 순서와 같아야 한다. 리오더 버퍼는 명령을 프로그램 순서대로 은퇴시키고, 예외가 생기면 정확한 지점의 상태를 복원한다. 메모리 연산은 로드·스토어 큐가 주소와 순서를 추적한다.

분기 예측과 추측 실행은 성능을 높이지만, 추측 과정에서 남은 캐시 상태가 정보 노출 통로가 될 수 있다. 보안 문제의 완화는 CPU 마이크로코드, 펌웨어, 운영체제와 프로그램이 함께 담당한다.

같은 클럭에서도 프런트엔드 폭, 실행 포트, 캐시, 예측 정확도와 메모리 의존성 처리 능력이 다르면 주기당 처리량이 달라진다. 단일 “IPC” 숫자는 특정 프로그램과 입력에서 관찰한 결과이며 모든 작업에 고정된 CPU 속성이 아니다.

상위 개념: CPU의 구조와 명령 실행 · 데이터 계층: CPU Cache