CPU 성능을 높이기 위해 멀티코어, 멀티 스레드를 지원하는 CPU를 만드는 것도 중요하지만
CPU가 놀지 않게 작동하게 만드는 것이 중요합니다.
명령어를 동시에 처리하여 CPU를 부지런히 작동시키는 기법으로 명령어 병렬 처리 기법 이 있습니다.
명령어 병령처리 기법에는 '명령어 파이프 라이닝, 슈퍼스칼라, 비순차적 명령어' 처리가 있습니다.
명령어 파이프 라이닝
- CPU의 프로그램 처리 속도를 높이기 위하여 CPU 내부 하드웨어를 여러 단계로 나누어 동시에
처리하는 기술 입니다.
명령어 파이프라인
- 하나의 명령어가 처리되는 전체 과정을 비슷한 시간 간격으로 나누는 것입니다.
- 중요 점으로 같은 단계가 겹치지 않는 경우 CPU는 '각 단계를 동시에 실행할 수 있다'는 것입니다.
단계
1. 명령어 인출
2. 명령어 해석
3. 명령어 실행
4. 결과 저장
- 단계를 간단하게 그린 그림입니다.
- t1에는 명령어 1,2 동시 처리가 가능하고 t2에는 명령어 1,2,3을 동시 처리가 가능합니다.
- 명령어를 겹쳐 수행하는 경우 명령어를 단일로 실행하는 것보다 효율적으로 처리가 가능합니다.
명령어 파이프라이닝
- 공장 생산 라인과 같은 명령어들을 명령어 파이프라인에 넣고 동시에 처리하는 기법입니다.
단점
- 특정 상화에서는 성능 향상에 실패하는 경우도 있고 이러한 상황을 '파이프라인 위험'이라 합니다.
- 파이프라인 위험에는 크게 '데이터 위험, 제어 위험, 구조적 위험'이 있습니다.
데이터 위험
- '데이터 의존성'에 의해 발생됩니다.
- 모든 명령어들 동시에 처리할 수는 없습니다.
- 데이터 의존적인 두 명령어를 무작정 동시에 실행하는 겨우 파이프라인이 제대로 작동하지 않는 것입니다.
제어 위험
- 주로 분기 등으로 인한 '프로그램 카운터의 갑작스러운 변화'에 의해 발생합니다.
- 기본적으로 프로그램 카운터는 '현재 실행 중인 명령어의 다음 주소'로 갱신됩니다.
- 실행 흐름이 변경된 경우 명령어가 실행되면서 프로그램 카운터 값에 급작스러운 변화가 생긴 경우
미리 가지고 있던 파이프 라인 명령어를 쓸모가 없어지고 이를 '제어 위험'이라 합니다.
- 이렇게 사용하는 기술 중 하나가 '분기 예측'입니다.
※ 분기 예측 : 프로그램이 어디로 분기할지 미리 예측한 후 그 주소를 인출하는 기술입니다.
구조적 위험
- 명령어들을 겹쳐 실행하는 과정에서 서로 다른 명령어가 동시에 ALU, 레지스터 등과 같은 CPU
부품을 사용하려고 발생되는 경우입니다.
슈퍼스칼라
- CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조입니다.
- 공장 생산 라인을 여러 개 두는 것과 동일합니다.
- 슈퍼스칼라 구조로 처리 가능한 CPU를 슈퍼스칼라 프로세서, 슈퍼스칼라 CPU라 합니다.
비순차적 명령어 처리
- 명령어 들을 순차적으로 실행되지 않는 기법으로 '합법적인 새치기'라 말할 수 있습니다.
'백수 > 컴퓨터구조' 카테고리의 다른 글
컴퓨터 기초 12 (0) | 2022.12.27 |
---|---|
컴퓨터 기초 10 (0) | 2022.12.19 |
컴퓨터 기초 8 (0) | 2022.12.10 |
컴퓨터 기초 7(명령어 사이클과 인터럽트) (0) | 2022.12.07 |
컴퓨터 기초 6(레지스터) (0) | 2022.12.06 |