명령어 파이프라인

💎 명령어 파이프라이닝


입력 받은 명령어를 여러 단계로 나누어 CPU에서 처리 하게끔 하는 것
ex) 인출단계와 실행단계로 나누어 첫번째 명령어를 처리할 때 인출을 한 후, 두번째 명령어의 인출 사이클과 첫번째 명령어의 인출 사이클을 같이 실행 시켜서 CPU가 효율적으로 일을 처리 하게끔 한다.

하지만 위의 예시같은 2단계 명령어 파이프라인은 기존보다 2배의 속도를 내야 하지만, 그렇지 못한다. 그 이유는 인출 사이클과 실행 사이클이 무조건 같이 끝나지 않기 때문이다. 보통 실행사이클이 월등히 길게 걸린다.

이것을 해결하기 위해서 2단계로 했던 명령어 파이프라인의 단계 수를 늘려 각 단계의 처리 시간을 같게 한다.

파이프라인 단계의 수를 늘리면 전체적으로 속도 향상이 일어난다.

4단계 명령어 파이프라인 단계
1) 명령어 인출단계(IF)
2) 명령어 해독단계(ID)
3) 오퍼렌트 인출단계(OF)
4) 실행단계(EX)
로 이루어진다.

파이프라인에 단계에의한 속도 향상을 확인 하는 식
Sp=T1Tk=kNk+(N1)S_p=\frac{T_1}{T_k}=\frac{k*N}{k+(N-1)}

문제 :

파이프라인 단계수 = 4
파이프라인 클록 = 1GHz 일 때,
10개의 명령어를 실행하는 경우의 속도 향상은 ?

풀이 :

4104+(101)=4013=3.08\frac{4*10}{4+(10-1)}=\frac{40}{13}=3.08배

파이프라인의 클록은 주기의 단위를 나타낼 뿐, 속도 향상의 비율에는 영향 못 줌

이러한 파이프라인 단계의 수를 늘리는 방법은 명령어수가 늘어나서 무한대의 가까워지면, k(파이프라인 주기) 만큼의 속도향상이 일어남

하지만 이러한 파이프라인 단계상승도 속도저하가 발생합니다.
그이유는 모든 명령어들이 해당 파이프라인을 거치지 않기 때문입니다.
ex) 조건분기 명령어3 : JZ 12
해당 명령어는 조건의 해당하는 값이 0이면 12번 명령어로 가는 명령어 입니다. 이러한 경우 명령어4번에서 ~ 6번은 실행이 일어나지 않습니다.

이러한 분기 발생에 의한 성능 저하를 최소화 하는 방법
1) 분기예측
2) 분기 목적지 선인출
3) 루프 버퍼 사용
4) 지연분기

상태레지스터 : 조건분기 명령어가 사용 할 조건 플래그들 저장
이 레지스터안에는 연산 결과 값이 0인지 1인지 두수가 같은지 등의 조건분기 명령어가 사용할 조건 플래그들이 저장되어있음.

슈퍼스칼라 : 파이프라인을 여러개 두는것

슈퍼스칼라에 의한 속도향상 공식 :
Sp=k+N1k+(Nm)m=m(k+N1)N+m(k1)S_p=\frac{k+N-1}{k+\frac{(N-m)}{m}}=\frac{m(k+N-1)}{N+m(k-1)}

명령어 수 N이 무한개쯤 되면 속도 향상은 m(파이프라인 수)에 수렴함

이론상 파이프라인 개수 만큼 속도 향상이 일어남.
하지만 그러지 못함. 왜냐하면 명령어는 서로서로의 의존관계가 있기 때문임.

이를 해결하기 위해서 명령어의 실행 순서를 재배치 하여 의존성을 없애거나, 하드웨어를 추가 설치하여야 한다.

듀얼-코어 및 멀티-코어
1) CPU 코어 : 명령어 실행에 필요한 CPU 내부의 핵심 하드웨어 모듈

2) 멀티-코어 프로세서 :
-듀얼 코어 : CPU 코어 두개
-쿼드 코어 : 네개
-헥사 코어 : 여섯개

3) 칩-레벨 다중프로세서 or 단일-칩 다중프로세서 라고도 함

듀얼 코어 프로세서 예시
이 듀얼 코어는 단일 코어 슈퍼스칼라 프로세서에 비하여 2배의 속도 향상이 기대됨. 왜냐하면 기존에 코어 하나에서 돌리던 실행 프로그램을 두개로 분개하여 돌리기 때문임.
이러한 코어들은 내부 캐시와 시스템 버스 인터페이스만을 공유한다.
코어 별로 독립적 프로그램 실행 -> 멀티태스킹 혹은 멀티 스레딩을 지원합니다.
멀티태스킹은 명령어를 각각 하나의 코어에서 동시에 처리 하는 것이고,
멀티 스레딩은 하나의 프로그램을 실행 할 때, 그 프로그램의 실행 최소 단위인 스레드를 처리 하는것이다.

스레드 모델
단일 스레드 모델은 CPU 각 코어별로 하나의 스레드만 처리합니다.
처리 중의 스레드의 대한 시스템 상태, 데이터 및 주소 정보를 레지스터 세트(RS)에 저장합니다.
RS : PC,SP,상태 레지스터,데이터 레지스터, 주소 레지스터,등

멀티 스레드 모델은 코어당 두개의 RS를 포함 하여 스레드를 두개씩 처리한다.

좋은 웹페이지 즐겨찾기