파이프라인(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 |