-
[Computer Science] CPU : 명령어 병렬 처리 기법Computer Science 2024. 5. 14. 23:37
CPU가 시간을 효율적으로 사용하기 위한 명령어 병렬 처리 기법에 대해 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'
< 명령어 파이프라인 >
명령어 파이프라인 : 명령어 실행 단계 중 같은 단계가 겹치지만 않는다면 CPU는 각 단계를 동시에 실행할 수 있습니다.
명령어 파이프라이닝은 동시에 여러 개의 명령어를 겹쳐 실행하는 기법입니다.- 명령어 인출(Instruction Fetch)
- 명령어 해석(Instruction Decode)
- 명령어 실행(Execute Instruction)
- 결과 저장(Write Back)
명령어 파이프라이닝
< 파이프라인 위험 >
명령어 파이프라이닝에 실패하는 경우를 파이프라인 위험이라고 합니다.
- 데이터 위험 (Data Hazard)
- 제어 위험 (Control Hazard)
- 구조적 위험 (Structural Hazard)
[ 데이터 위험 ]
: 명령어 간의 의존성에 의해 야기됩니다.
ex) 이전 명령어를 끝까지 실행해야만 비로소 실행할 수 있는 경우
- 명령어 1 : R1 <- R2 + R3 // R2 레지스터 값과 R3 레지스터 값을 더한 값을 R1 레지스터에 저장
- 명령어 2 : R4 <- R1 + R5 // R1 레지스터 값과 R5 레지스터 값을 더한 값을 R1 레지스터에 저장
[ 제어 위험 ]
: 프로그램 카운터의 갑작스러운 변화에 의해 야기됩니다.
ex) 실행하고자 하는 메모리의 주소 번지가 갑작스럽게 다른 주소 번지로 실행 흐름을 바꾸는 경우
파이프라인 위험 : 제어 위험
[ 구조적 위험 ]
: 서로 다른 명령어가 같은 CPU부품(ALU, 레지스터)를 사용하려 할 때 야기됩니다.
< 슈퍼스칼라 >
CPU 내부에 여러 개의 명령어 파이프라인을 두는 기법을 슈퍼스칼라라고 합니다.
(오늘날의 멀티스레드 프로세서)슈퍼스칼라 구조 이론적으로는 파이프라인 개수에 비례하여 처리 속도가 증가하지만, 파이프라인 위험도의 증가로 인해 파이프라인 개수에 비례하여 처리 속도가 증가하진 않음.
< 비순차적 명령어 처리 >
비순차적 명령어 처리 기법은 파이프라인의 중단을 방지하기 위해 명령어를 순차적으로 처리하지 않은 명령어 병렬 처리 기법입니다.
비순차적 명령어 처리 기법을 사용하지 않았을 경우 비순차적 명령어 처리 기법을 사용할 경우 'Computer Science' 카테고리의 다른 글
[Computer Science] 메모리 : RAM의 특징과 종류 (0) 2024.05.15 [Computer Science] CPU : 명령어 집합 구조, CISC와 RISC (2) 2024.05.15 [Computer Science] CPU : 빠른 CPU를 위한 설계 기법 (1) 2024.05.14 [Computer Science] CPU : 명령어 사이클과 인터럽트 (0) 2024.05.10 [Computer Science] CPU : 레지스터 (0) 2024.05.10