13강 : 명령어 병렬 처리 기법
명령어 파이프라인 ⇒같은 단계가 겹치지만 않으면 CPU는 각 단계를 동시에 실행 가능
파이프라인 위험
데이터 위험 : 명령어 간의 의존성에 의해 야기
⇒ 이전 명령어를 끝까지 실행해야만 비로소 실행할 수 있는 명령어의 경우
제어 위험 : 프로그램 카운터의 갑작스러운 변화
⇒ 이전 명령어에서 jump나 call로 많이 뒤의 번지로 넘어가야 될 때
⇒이러한 상황 방지를 위해 프로그램 카운터가 미리 예측하는 기술 : 분기 예측(branch prediction)
구조 위험 : 서로 다른 명령어가 같은 CPU 부품(ALU, 레지스터)를 쓰려고 할 때
슈퍼스칼라 : CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조 = 오늘날의 멀티스레드 프로세서
이론적으로는 파이프라인 개수에 비례 처리속도 증가 but 파이프라인 위험도 증가로 인해 X
비순차적 명령어 처리 : 합법적인 새치기
3번 명령어가 1,2번 결과값을 기다려야 하므로 밑으로 내려 다른 명령어들을 먼저 처리하면 더 효율적