Pipelining (파이프라인 기법)
컴퓨터 과학에서 프로세서의 성능을 향상시키기 위해
Instructions를 분할된 단계로 나누고,
여러 Instructions의 각 단계를 동시에 수행하는 기법.
Pipelining을 통해 여러 명령어를 동시에 처리할 수 있어 전체 처리 속도가 증가됨.
Fynn's Toxinoma에서 MISD (Multiple Instruction stream Single Data stream)라고 볼 수 있음.
https://dsaint31.me/mkdocs_site/CE/ch04/ce04_50/#flynn-flynns-taxonomy
파이프라이닝의 기본 개념은 다음과 같음:
- 분할 단계:
- 프로세서의 작업을 여러 단계로 나눕니다.
- 일반적인 단계는 명령어 인출(Fetch), 명령어 디코딩(Decode), 명령어 실행(Execute), 메모리 접근(Memory Access), 결과 쓰기(Write Back)임.
- 동시 처리:
- 각 파이프라인 단계는 독립적으로 동작하여,
- 한 명령어가 한 단계를 완료하면 다음 단계로 넘어가고,
- 그 뒤를 이어 다른 명령어가 그 단계를 실행함.
- 예를 들어, 첫 번째 명령어가 decoding 단계를 실행할 때 두 번째 명령어는 fetch 단계를 수행할 수 있음 (위 그림의 붉은색 박스 참조).
- 속도 향상:
- 이러한 병렬 처리를 통해
- 프로세서가 매 사이클마다 새로운 명령어를 처리할 수 있어
- 전체 처리 속도가 증가함.
- 이상적인 경우, 파이프라인의 각 단계가 동시에 완벽하게 수행된다면, 파이프라인의 깊이에 비례하여 성능이 향상됨.
비유적으로 설명하자면, 파이프라이닝은 공장에서 조립 라인을 통해 제품을 생산하는 방식과 유사함.
각 작업자가 특정 작업 단계에 집중하여 일을 빠르게 처리함으로써 전체 조립 라인의 생산성을 높이는 것과 같은 원리임.
파이프라이닝의 효과는 다음과 같은 예로 볼 수 있습니다:
- 단일 명령어가 5단계로 나눠져 있다면,
- 첫 번째 명령어가 5단계를 모두 완료하는데 5 사이클이 걸리지만,
- 이후 매 사이클마다 새로운 명령어가 완료되어, 이상적으로는 매 사이클마다 한 명령어가 처리.
파이프라이닝은 CPU의 성능 향상을 위한 중요한 기법이지만,
동시에
- 명령어 간의 의존성,
- 분기 명령어 처리,
- 파이프라인 단계의 불균형 등의 문제를 해결해야 함.
주로 RISC CPU에서 쉽게 적용되는 것으로 알려져 있고, CISC CPU에서는 적용이 상대적으로 어렵고 효율이 떨어지는 것으로 알려짐.
2022.12.18 - [Computer/CE] - [CE] Instruction Set Architecture: RISC vs. CISC
'Computer > CE' 카테고리의 다른 글
[CE] Bipartite Graph (이분그래프) (0) | 2024.08.06 |
---|---|
[CE] TTL : Transistor-Transistor Logic (0) | 2024.06.02 |
[CE] D Flip-Flop 7474 (0) | 2024.04.10 |
[CE] From Transistor To Gate (0) | 2024.04.03 |
[CE] Round-off Error 예제 (1) | 2024.02.17 |