CPU의 성능을 향상 시키는데 영향을 주는 것은 클럭, 코어, 스레드라는 것을 배웠다. 하지만 한 가지 더 고려해야 할 것은 CPU가 놀지 않도록 작동하게 하는 것이다.
따라서 CPU를 쉬지 않고 작동시키게 하는 기법인 병령 처리 기법에 대해서 알아보고 대표적인 병렬 처리 기법의 3가지에 대해서 배워보자.
🚗🚗🚗🚗🚗
하나의 명령어가 처리되는 전체 과정을 비슷한 시간 단위로 나누어 본다면 아래 4가지 단계가 될 것이다.
1. 명령어 인출
2. 명령어 해석
3. 명령어 실행
4. 결과값 저장
각 단계가 겹치지 않는다면 CPU는 '각 단계를 동시에 실행'할 수 있다.
이렇게 명령어 파이프라인에 넣고 동시에 처리하는 기법을 명령어 파이프라이닝이라고 한다,
하지만 특정 상황에서는 성능 향상에 실패하는 경우가 있고 그 상황을 파이프라인 위험이라고 한다.
크게 데이터 위험, 제어 위험, 구조적 위험이 있다.
단일 파이프라인이 아닌 여려 개의 파이프란을 이용하는 구조
슈퍼스칼라 구조로 명령어 처리가 가능한 CPU = 슈퍼스칼라 프로세서 = 슈퍼스칼라 CPU
멀티쓰레드 프로세서는 한번에 여러개의 명령어를 인출하므로 슈퍼스칼라 구조를 사용할 수 있다.
문제는 설계가 까다롭다.
단이 파이브라인보다 파이프라인 위험에 쉽게 노출되기 때문이다.
명령어를 순차적으로 처리하지 않는 합법적인 새치기 기법
의존관계 등을 고려해서 순서를 바꿔서 명령어들이 처리 될수 있도록 하는 기법이다.