효율적인 명령어 분배
클럭속도, 멀티코어, 멀티스레드 뿐만 아니라, 명령어를 효율적으로 분배하여 CPU 동작간 불필요한 loss 줄여 성능을 높이는 방법 중 하나입니다.
이를 위해서 명령어 병렬 처리기법에 대해 알아볼 필요가 있습니다.
명령어 파이프라인
- `슈퍼스칼라` : CPU 내부에 여러개의 명령어라인을 포함한 구조 (순차적 처리)
명령어 파이프라이닝
명령어를 순차적으로 진행하되, 겹치는 부분이 없게하여 동시에 처리 가능
장점 : 효율적
비순차적 명령어 처리
- CPU 성능 향상에 크게 기여, 대부분 CPU가 차용함
- 데이터 의존성과 무관할 경우, 순서를 바꿔 실행함으로써 명령어 파이프라인이 멈추는 것을 방지하는 기법
- 명령어와 데이터간 의존관계를 잘 파악해야 합니다.
위 그림 기준, 살펴보겠습니다.
- M3는 data1, data2를 참조하여 합산하는 함수라고 가정할때, M1, M2의 결과값이 리턴되기를 기다려야합니다. (회색 음영구간만큼 딜레이발생)
- 그러나, M4, M5는 M1,M2,M3와는 전혀 무관한 데이터입니다.
- 이경우에는 오른쪽과 같이 딜레이없이 순서를 바꿀 수 있습니다.
출처
'CS' 카테고리의 다른 글
[CS] 우리가 메모리라고 부르는 RAM과 종류 (0) | 2024.04.17 |
---|---|
[CS] 명령어와 파이프라이닝 간 함의 : CISC, RISC (0) | 2024.04.15 |
[CS] CPU 성능과 연관된 용어 : 클럭, 코어, 스레드 (0) | 2024.04.14 |
[CS] 실행 흐름을 파악할 수 있는 레지스터의 종류 (0) | 2024.04.14 |
[CS] 명령어 구조 알아보기 (0) | 2024.04.12 |