1. 명령어 파이프라인
파이프라인은 공장에서의 작업 공정과 유사하다. 공장에서 여러 작업 단계를 나누어 동시에 진행하면 전체 작업 효율이 크게 증가하는 것처럼 CPU에서도 이와 비슷하게 명령어를 처리할 때 다음과 같은 단계를 병렬로 실행한다.
- 명령어 인출
- 명령어 해석
- 명령어 실행
- 결과 저장
같은 단계가 겹치지만 않는다면 CPU는 위 그림처럼 각 단계를 동시에 실행할 수 있다. 동시에 여러 명령어를 겹쳐서 처리할 수 있다.
파이프라인 위험
명령어 파이프라인이 성능 향상에 실패하는 경우를 말한다. 아래 3가지 종류가 있다.
데이터 위험(Data Hazard)
- 명령어 간의 의존성에 의해 야기
- 이전 명령어를 끝까지 실행해야 실행할 수 있는 명령어의 경우 병렬로 처리할 수 없다.
제어 위험(Control Hazard)
- 프로그램 카운터의 갑작스러운 변화, 조건문(분기문) 또는 함수 호출과 같은 제어 흐름 변경으로 인해 다음 실행할 명령어를 잘못 예측하거나 실행할 수 없는 상황일 때 발생한다.
- 이를 방지 하기 위해 분기 예측(CPU가 분기 결과를 미리 예측하여 명령어를 실행)을 사용한다.
구조 위험(Structual Hazard)
- 파이프라인 단계에서 하드웨어 자원(예: 메모리, ALU 등)을 여러 명령어가 동시에 사용하려고 할 때 발생한다.
2. 슈퍼스칼라
- CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조이다.
- 이론적으로 파이프라인 개수에 비례하여 처리 속도가 증가 하지만 현실에서는 파이프라인 위험도 증가로 인해 반드시 파이프라인 개수에 속도와 성능이 비례하여 증가하지는 않는다.
3. 비순차적 명령어 처리(Out-of-Order Execution)
- CPU가 명령어를 프로그램에 작성된 순서대로 실행하지 않고, 실행 가능한 명령어를 우선적으로 처리하여 성능을 최적화하는 기술
- 전체 프로그램 실행 흐름에 영향이 없는(의존성이 없는) 명령어만 순서를 바꿔 처리한다.
- 합법적 새치기같은 방법!
아래 강의를 수강하고 작성한 포스팅입니다.
'CS > 컴퓨터 구조' 카테고리의 다른 글
[컴퓨터 구조] 메모리의 주소 공간 (0) | 2024.11.22 |
---|---|
[컴퓨터 구조] 명령어 집합 구조 (0) | 2024.11.21 |
[컴퓨터 구조] 빠른 CPU를 위한 설계 기법 (0) | 2024.11.19 |
[컴퓨터 구조] 하드웨어 인터럽트 (0) | 2024.11.18 |
[컴퓨터 구조] 메모리의 종류 (0) | 2024.11.17 |