# Introduction to Pipelining & Instruction set

학습목표:

파이프라이닝 기술을 설명할 수 있다. : CPU의 프로그램 처리 속도를 높이기 위하여 CPU내부 하드웨어를 여러 단계로 나누어 동시에 처리하는 기술

슈퍼스칼라 기술을 설명할 수 있다. :CPU의 처리 속도를 더욱 높이기 위하여 내부에 두 개 혹은 그 이상의 명령어 파이프라인들을 포함시킨 구조

멀티코어의 개념을 설명할 수 있다. : 여러 개의 CUP코어들을 하나의 칩에 포함시킨 프로세서

간략요약: 파이프라이닝과 슈퍼스칼라로 CPU의 속도를 향상

명령어 파이프라이닝(instruction pipelining)이란? CPU의 프로그램 처리 속도를 높이기 위하여 CPU내부 하드웨어를 여러 단계로 나누어 동시에 처리하는 기술

**파이프라이닝의 기술 종류**

**1) 2-단계 명령어 파이프라인:** 명령어를 실행하는 하드웨어를 인출단계(Fetch stage)와 실행단계(Execute stage)라는 두 개의 독립적인 파이프라인 모듈로 분리

장점: 명령어 처리 속도가 두배 향상

단점: 인출(Fetch stage)/실행(Execute stage)시간이 동일하지 않으면 효과가 없음

해결책: 파이프라인 단계를 세분화해 각 단계의 처리 시간을 (거의)같아지도록 해서 속도 향상한다.

**2) 4-단계 명령어 파이프라인:** 명령어-&gt; 명령어인출(IF)-&gt;명령어해독(ID)-&gt;오퍼랜드인출(OF)-&gt;실행(EX)으로 구성 -&gt; 실행결과로 구성

IF: 다음 명령어를 기억장치로 부터 인출

ID: 해독기(Decoder)를 이용하여 명령어를 해석

OF:기억장치로부터 오퍼랜드를 인출

EX:지정된 연산을 수행

효율 저하 원인들(단점):

1)모든 명령어들이 파이프라인 단계들을 모두 거쳐야 하는건 아니지만 하드웨어를 단순화시키기 위해서는 모든 명령어가 네 단계들을 모두 통과해야한다.

2)파이프라인의 클록은 처리 시간이 가장 오래 걸리는 단계를 기준으로 결정

3) IF 단계와 OF단계가 동시에 기억장치를 엑세스하게 되면, 기억장치 충돌(Memory conflict) 이 일어나 지연이 발생한다.

4) 조건 분기(Conditional branch)명령어가 실행되면, 미리 인출하여 처리하던 명령어들이 무효화된다.

효율 저하 원인 해결책:

1)분기 예측(Branch prediction)

2)분기 목적지 선인출(Prefetch branch target)

3)루프 버퍼(Loop buffer)

4) 지연 분기(Delayed branch)  

**슈퍼스칼라(Superscalar)란?** CPU의 처리 속도를 더욱 높이기 위하여 내부에 두 개 혹은 그 이상의 명령어 파이프라인들을 포함시킨 구조

슈퍼스칼라의 속도 저하요인: 명령어들 간의 데이터 의존 관계, 하드웨어(레지스터, 캐시, 기억장치 등) 이용대 대한 경합 발생

해결책: 명령어 실행 순서 재배치하여 명령어들 간의 데이터 의존성 제거, 하드웨어 추가 설치로 경합을 감소시킨다.

**멀티-코어란?** 여러 개의 CUP코어들을 하나의 칩에 포함시킨 프로세서이다. 칩 레벨 멀티프로세서(CMP),단일-칩 프로세서 라고도 한다.

**CUP코어란?** 명령어 실행에 필요한 CPU내부의 핵심 하드웨어 모듈(슈퍼스칼라 H/W, ALU, 레지스터 등)

**멀티-코어의 종류:** 듀얼-코어, 쿼드-코어, 헥사-코어
