4.6 An Overview of Pipelining
1. 파이프라이닝(Pipelining)의 기본 개념
파이프라이닝은 여러 명령어가 동시에 실행되는 방식을 의미한다.
즉, 여러 명령어가 실행되면서 각 명령어의 다른 단계들이 겹쳐서 수행된다.
이를 통해 CPU의 작업 효율성을 높일 수 있다.
책에서는 세탁의 비유를 통해 파이프라이닝의 개념을 설명한다.
• 세탁은 네 가지 단계로 나눌 수 있다. -> 세탁, 건조, 다림질, 옷 정리.
• 비파이프라인 방식
모든 세탁이 끝난 후 건조를 시작하고, 건조가 끝난 후 다림질을 하는 방식이다.
이 방식은 시간이 많이 소요된다.
• 파이프라인 방식
에서는 세탁을 하면서 건조를 시작하고, 건조가 되면 다림질을 시작하는 방식으로 진행된다.
이렇게 하면 각 단계가 겹쳐져서 전체적으로 시간이 절약된다.
2. 파이프라인의 작동 원리
세탁 예시에서 각 단계가 동시에 이루어지듯, 파이프라인에서는 CPU의 각 작업이 여러 단계로 나뉘어 동시에 실행된다.
예를 들어, 하나의 명령어가 메모리에서 읽히는 동안 다른 명령어는 ALU에서 연산을 수행하고, 또 다른 명령어는 레지스터에 저장된다.
3. 파이프라인 성능 향상
• 파이프라인을 사용할 경우 속도 향상이 이루어진다.
예를 들어, 네 가지 단계를 모두 따로 실행하면 8시간이 걸리지만, 파이프라인을 사용하면 각 단계가 동시에 진행되어 2.3시간 만에 끝낼 수 있다.
• 파이프라인에서 중요한 점은 각 단계가 동일한 시간만큼 걸린다는 가정 하에 속도 향상이 이루어진다는 것이다.
하지만 시작과 끝에서의 비어있는 시간은 성능에 영향을 미칠 수 있다.
4. RISC-V에서의 파이프라인
RISC-V 아키텍처에서 명령어 파이프라인은 다섯 단계로 나뉩니다:
1. Fetch: 명령어를 메모리에서 읽어온다.
2. Decode: 명령어를 해석하고 레지스터를 읽는다.
3. Execute: 연산을 수행하거나 주소를 계산한다.
4. Memory Access: 메모리에서 데이터를 읽거나 쓴다.
5. Write-back: 연산 결과를 레지스터에 기록한다.
이러한 단계들이 순차적으로 실행되며, 동시에 여러 명령어가 각기 다른 단계를 진행한다. 이는 명령어 실행의 속도를 크게 향상시킨다.
5. 단일 사이클과 파이프라인 성능 비교
• 단일 사이클 설계에서는 각 명령어가 한 사이클에 모두 실행되지만, 파이프라인 설계에서는 각 명령어가 여러 단계에 걸쳐 병렬로 실행된다.
• 파이프라인을 사용할 경우, 각 명령어가 걸리는 시간은 단일 사이클 설계보다 훨씬 빠르게 끝난다.
예를 들어, 200ps의 시간이 걸리는 ALU 연산이 파이프라인에서는 더 빠르게 처리된다.
6. 파이프라인 속도 향상 공식
• 파이프라인 속도 향상은 다음 공식으로 계산할 수 있다.
예를 들어, 5단계 파이프라인에서는 800ps의 단일 사이클 시간이 160ps로 줄어드는 결과를 가져온다.
7. 파이프라인의 한계
• 모든 단계를 균등하게 처리할 수 있다면, 파이프라인을 사용할 때 큰 성능 향상이 이루어진다.
하지만 각 단계의 시간이 다르거나, 파이프라인이 제대로 채워지지 않으면 성능 향상은 제한될 수 있다.
• 예를 들어, 기다리는 시간이 많으면 파이프라인의 성능 향상은 제한적이거나 없을 수 있다.
8. 결론
파이프라이닝은 여러 작업을 동시에 처리하여 CPU의 성능을 크게 향상시킬 수 있다.
RISC-V에서 이 구조를 채택하면, 명령어가 각기 다른 단계에서 동시에 처리되므로 처리 속도가 향상된다.
이를 통해 효율적인 연산 처리와 시간 절약이 가능하다.
'Book > COMPUTER ORGANIZATION AND DESIGN RISC-V' 카테고리의 다른 글
4. The Processor (4.7 Pipelined Datapath and Control) (0) | 2024.11.17 |
---|---|
4. The Processor (4.6. Data Hazard) (1) | 2024.11.15 |
4. The Processor(4.1~4.5) (1) | 2024.10.10 |
2. Instructions:Language of the Computer(2.11~2.14, 2.23, 2.25) (6) | 2024.10.06 |
2. Instructions:Language of the Computer(2.1~2.10) (4) | 2024.10.06 |