순차 실행과 비순차 실행의 차이점 정리
순차 실행 CPU는 명령어를 프로그램 순서대로 발행해 실행합니다. 앞의 명령어가 캐시 미스 등으로 대기하면 뒤의 명령어도 멈춥니다. 비순차 실행 CPU는 의존 관계를 조사해 준비된 명령어부터 먼저 실행하고, 결과는 리오더 버퍼(ROB)에서 프로그램 순서대로 확정합니다. 대기 시간 동안 다른 명령어를 진행할 수 있어 IPC가 높아지지만, 레지스터 리네이밍과 명령어를 선택하는 회로가 필요해 회로 규모와 전력이 커집니다.
| 비교 항목 | 순차 실행 | 비순차 실행 |
|---|---|---|
| 명령어 발행·실행 순서 | 프로그램 순서 | 준비된 명령어부터 순서를 바꿔 실행합니다 |
| 결과 확정(리타이어) | 프로그램 순서 | 리오더 버퍼(ROB)에서 프로그램 순서대로 확정합니다 |
| 앞의 명령어가 대기 중일 때 | 뒤의 명령어도 멈춥니다(스톨) | 의존하지 않는 뒤의 명령어를 먼저 진행합니다 |
| 데이터 해저드 대응 | 포워딩과 스톨. 명령어 배치는 컴파일러에 의존합니다 | 포워딩에 더해 하드웨어가 동적으로 명령어를 스케줄링합니다 |
| 가짜 의존(WAR·WAW) | 순서를 지키므로 기본적으로 문제가 되기 어렵습니다 | 레지스터 리네이밍으로 물리 레지스터를 재할당해 제거합니다 |
| 주요 추가 회로 | 적음. 단순한 파이프라인 | 리네이밍 테이블, 물리 레지스터, 발행 큐, ROB, 로드·스토어 큐 |
| 캐시 미스의 영향 | 큼. 미스할 때마다 파이프라인이 멈추기 쉽습니다 | 수백 명령어 분량의 윈도 안에서 다른 명령어를 진행해 대기 시간의 일부를 숨길 수 있습니다 |
| IPC | 낮은 편. 같은 발행 폭이라면 비순차 실행보다 낮습니다 | 높음. 넓은 발행 폭과 결합해 1을 크게 넘습니다 |
| 회로 규모와 전력 | 작음. 면적이나 전력당 성능을 높이기 쉽습니다 | 큼. 명령어를 선택하는 회로와 ROB의 면적과 전력이 늘어납니다 |
| 사용처 | 마이크로컨트롤러, 임베디드용 소형 코어, 저전력을 우선하는 코어의 일부, GPU의 연산 코어 | PC·서버·스마트폰의 고성능 코어 |
수치는 대략적인 자릿수 기준이며, 공정 세대와 제품에 따라 달라져요.