CPU를 빠르게 하려면 CPU가 놀지 않고 작동하게 하는 것이 중요
명령어 병렬처리 기법
- 명령어를 동시에 처리하여 CPU를 쉬지 않고 작동시키는 기법
- 종류:
명령어 파이프라이닝
,슈퍼스칼라
,비순차적 명령어 처리
명령어 파이프라인
명령어 처리되는 과정을 클럭 단위로 나눠보면 일반적으로
1.명령어 인출
(Instruction Fetch)
2.명령어 해석
(Instruction Decode)
3.명령어 실행
(Execute Instruction)
4.결과 저장
(Write Back)
중요한 점은 같은 단계가 겹치지 않는다면 CPU는각 단계를 동시에 실행
할 수 있다는 것
명령어 파이프라이닝은 동시에 여러 개의 명령어를 겹쳐 실행하는 기법파이프라인 위험
- 특정 상황에서는 성능 향상에 실패하는 경우
- 종류:
데이터 위험
,제어 위험
,구조적 위험
데이터 위험
데이터 의존성
에 의해 발생- 어떤 명령어는 이전 명령어가 끝나야 실행할 수 있는 경우가 있음
제어 위험
분기
등으로 인한프로그램 카운터의 갑작스러운 변화
에 의해 발생- 이러한 위험을 예방하기 위해 분기
예측(branch prediction)
이라는 기술이 있음
구조적 위험
- 서로 다른 명령어가
같은 CPU 부품(ALU, 레지스터)을 쓰려고
할 때 발생
슈퍼스칼라
여러 개의 명령어 파이프라인
을 포함한 구조- 이론적으로 파이프라인 개수에 비례하여 프로그램 처리 속도가 빨라짐
하지만, 파이프라인 위험 등의 예상치 못한 문제가 있어 실제로 개수에 비례해서 빨라지진 않음(파이프라인보다 파이프라인 위험이 더 높음)
비순차적 명령어 처리 기법
- 명령어들을
순차적으로 실행하지 않는
기법- 파이프라인의 중단을 방지하기 위해
데이터 의존성이 없는 명령어의 순서를 바꿈
순차적으로 실행
비순차적으로 실행
<출처>
"혼자 공부하는 컴퓨터구조+운영체제".강민철.https://www.youtube.com/playlist?list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl (2023.04.23)
책과 강의를 통해 학습한 내용을 요약 정리했습니다.