명령어 병렬 처리 기법
CPU의 가용성을 최대화하기 위해 명령어를 동시에 처리하는 기법
이는 CPU 자원의 효율적인 활용을 통해 실행 시간을 단축하고, 처리량(TPS)를 증가시키는 목적을 가짐
대표적인 병렬 처리 기법에는 명령어 파이프 라이닝, 슈퍼스칼라, 비순차적 명령어 처리가 있음
명령어 파이프 라이닝
명령어를 처리하는 단계를 분리하여 각 단계가 독립적으로 실행될 수 있도록 하는 방식
일반적으로 명령어 인출(Fetch), 해석(Decode), 실행(Execute), 메모리 접근(Memory Access), 기록(Write Back)의 다섯 단계로 나뉨
이를 통해 한 사이클에서 여러 명령어가 다른 단계를 동시에 실행함으로써 전체적인 성능을 향상시킴
즉, 단계가 다른 명령어를 겹쳐서 동시에 처리하는 방법으로, 하나의 코어에서 여러 개의 스레드를 실행하는 기법
파이프라인 위험
파이프라이닝에서 명령어를 동시에 처리하는 과정에서 충돌이나 지연이 발생하는 문제
- 데이터 위험
- 명령어 간 데이터 의존성에 의해 발생하는 문제
- 데이터 의존적인 두 명령어를 동시에 실행할 때, 파이프라인이 제대로 작동되지 않는 것
- 제어 위험
- 프로그램 카운터의 갑작스런 변화로 인해, 동시에 처리중인 다른 명령어들이 무효화되는 것
- 구조적 위험 or 자원 위험
- 명령어들을 동시에 실행하는 과정에서 서로 다른 명령어가 동시에 ALU, 레지스터 등과 같은 CPU 부품을 사용할 때 충돌하는 것
슈퍼 스칼라
단일 파이프라인이 아니라 여러 개의 파이프라인을 포함하여, 한 사이클에 다수의 명령어를 실행하는 기법
ex) 2개의 파이프라인을 갖춘 슈퍼스칼라 CPU는 한 번에 2개의 명령어를 처리할 수 있음
이론적으로는 파이프라인 개수에 따라 프로그램 처리 속도가 빨라지지만, 파이프라인 위험 등의 예상치 못한 문제가 있어 실제로는 개수에 비례하여 빨라지지는 않음
비순차적 명령어 처리(OoOe)
순차적인 명령어 실행이 아닌, 실행 순서를 동적으로 변경하여 가능한 명령어를 먼저 실행하는 방식
CPU 내부에서 실행 가능한 명령어를 찾고, 의존성이 없는 명령어를 먼저 실행하여 파이프라인이 멈추는 것을 방지
'CS' 카테고리의 다른 글
[TIL] 메모리 계층 구조 (1) | 2025.03.13 |
---|---|
[TIL] 명령어 집합 구조(ISA), CISC vs RISC (1) | 2025.03.13 |