본문 바로가기

Domain/컴퓨터구조

14. 파이프라인(pipeline)

파이프라인(pipeline)

동시에 여러개의 명령어를 수행하여 CPU 처리 효율을 높이는 방법


파이프라인을 사용할 때와 사용하지 않을 때의 처리 시간

1. non-pipeline

  Toriginal=nkt

 

2. pipeline

  Tadvanced=kt+(n-1)t=(n-1+k)t

 

   ∴speedup = Toriginal/Tadvanced=lim nkt/(n-1+k)t=k

 

즉 파이프라인을 사용하면 파이프라인을 사용한 단계 수 만큼 향상된다.

각 명령어 단계에서는 t 시간이 소요된다. k는 단계 수. n은 명령어 개수.


파이프라인 설계

최적화 방법

  • Optimized Delayed Branch : 기존에 NOOP을 넣던 delayed branch의 방식에서 발전하여, 분기 이후에 흐름에 영향이 없는 명령어를 끼워넣는다.
  • Loop unrolling : 조건절이 줄어든다.

 

Hazards

1. Resource hazard

 한 메모리를 동시에 참조할 때 발생한다.

 해결책 : Split cache를 사용한다.

 

2. Data hazard

 다음 명령어가 이전 명령어의 데이터를 필요로 할 때 발생한다.

 해결책 : 명령어의 순서를 적절히 변경한다.

 

3. Control hazard

 분기문이 있을 경우 발생한다.

 해결책 : Branch prediction (이전 연산기록을 통해 어느 명령어를 수행 할 지 미리 예측한다. )

'Domain > 컴퓨터구조' 카테고리의 다른 글

10. Computer Arithmetic  (0) 2020.03.12
11. Instruction Set : Characteristrics and Function  (0) 2020.03.12
12. Instruction Sets : Addressing Modes and Formats  (0) 2020.03.12
13. RISC vs CISC  (0) 2020.03.12
17. Parallel Processing  (0) 2020.03.12