CPU의 구조와 기능(2)
1. 명령어 파이프라인
명령어 파이프라이닝은 CPU의 성능을 향상시키는 핵심 기술 중 하나입니다.
즉, "명령어를 순차적으로 실행하는 대신, 여러 명령어를 겹쳐서 동시에 실행"하는 방식입니다.
1-1 2단계 명령어 파이프라인
- 인출 단계(Fetch) 와 실행 단계(Execute) 로 분리
- 이론적으로 처리 속도 2배 향상 가능
- 문제점: 두 단계의 처리 시간이 다르면 효율 저하
1-2 4단계 명령어 파이프라인
- 각 단계의 처리 시간을 비슷하게 맞추기 위해 파이프라인을 세분화
- 4단계:
- IF (Instruction Fetch): 명령어 인출
- ID (Instruction Decode): 명령어 해독
- OF (Operand Fetch): 오퍼랜드 인출
- EX (Execute): 연산 수행
- 속도 향상 계산:
- 파이프라인 단계 수: k, 명령어 수: N
- 전체 실행 시간: Tk = k + (N-1)
- 파이프라인 미적용: T1 = k × N
- 속도 향상: Sp = T1 / Tk (N이 커질수록 Sp ≈ k)
- 예: 4단계, N=10000 → Sp ≈ 3.9988
1-3 파이프라인 효율 저하 요인 및 최소화 방법
- 효율 저하 요인:
- 모든 명령어가 모든 단계를 거치지 않음
- 클록은 가장 오래 걸리는 단계 기준
- 기억장치 충돌(memory conflict)
- 조건 분기(branch) 시 미리 인출된 명령어 무효화
- 최소화 방법:
- 분기 예측(Branch Prediction): 분기 발생 예측, 분기 역사 표 활용
- 분기 목 적지 선인출(Prefetch): 분기 목적지 명령어도 미리 인출
- 루프 버퍼(Loop Buffer): 최근 인출 명령어를 고속 메모리에 저장
- 지연 분기(Delayed Branch): 분기 명령어 위치 재배치
1-4 상태 레지스터 (Status Register)
- 명령어 실행 결과에 따른 조건 플래그(Condition Flag) 저장
- 주요 플래그: 부호(S), 영(Z), 올림수(C), 동등(E), 오버플로우(V), 인터럽트(I), 슈퍼바이저(P)
1-5 슈퍼스칼라 (Superscalar)
- "CPU 내부에 2개 이상 명령어 파이프라인을 포함하는 구조"
- 각 파이프라인이 별도의 명령어를 동시에 실행 → 이론상 파이프라인 수만큼 속도 향상
- 속도 저하 요인: 데이터 의존, 하드웨어 경합, 동시 실행 명령어 수 부족 등
- 해결책: 실행 순서 재배치, 데이터 의존성 제거, 하드웨어 중복 설치 등