오래 못 할 짓 하지 않기
[ 컴퓨터 구조 ] 9. Pipeline 본문
Pipeline
목적 : CPU의 기능을 향상시키기
여러 개의 명령어를 한 번에 함으로써 기능을 향상시킴.
예시) 세탁실에 세탁기와 건조기가 1개씩 있다고 생각해 보자.
세탁기와 건조기 1개당 돌리는데 각각 1시간이 걸린다.
Case 1) 이 상황에서 부대에 SIP가 걸렸다. 동선이 절대 겹치면 안 됨.
그럼 한 사람이 세탁기와 건조기를 다 돌려서 2시간이 지난 뒤에야 다른 사람이 들어와서 새로 세탁을 시작할 수 있다.
이랬을 때 4명이 세탁과 건조를 다 끝냈을 땐 8시간이 지나있음.
Case 2) SIP가 풀렸다.
한 사람이 세탁을 끝나고 건조기에 넣을 때, 그다음 사람이 세탁기에 세탁물을 넣을 수 있다.
이렇게 되었을 때 4 사람이 세탁 건조를 다 끝냈을 때는 아래 그림과 같이 5시간이 지나있다.
Case 2가 PipeLine의 상황이라고 할 수 있다.
PipeLine을 사용했을 때, 각 task의 cost는 줄어들지 않는다. [ Latency 가 줄지 X ]
하지만 전체적으로 보았을 때 cost를 줄여주기 때문에 성능이 향상된다고 할 수 있음. [ Throughput이 줄어든다 ]
→ 단위 시간당 처리할 수 있는 일이 줄어든다.
→ 다른 resource의 일들을 " 동시에 " 처리할 수 있다.
ex) 전체 시간은 5시간으로 줄었지만, 세탁시간이나 건조시간이 빨라지는 게 아님.
Potential Speedup = Number Pipe stages
→ stage를 많이 나눌수록 Pipeline 효율이 ↑
왜냐 ? 동시에 굴릴 수 있는 일들이 더 많으니까
+ 가장 느린 Pipeline 을 기준으로 돌아감. ( 얘가 다 작업을 해야 다음 애들이 처리하니까 )
2개의 time을 고려해야 한다.
1) 처음 혼자 pipeline을 채우면서 일을 처리하며 걸리는 시간
= Time to fill pipeline (첫 사람이 세탁기 다 쓰는 데 걸리는 시간)
2) 이제 동시에 여러 개의 작업을 처리하면서 걸리는 시간
= Time to drain (두 번째 사람부터 세탁기 쓰고 다음 사람 쓸 때까지 걸리는 시간 )
식으로 만들어서 생각해 보자
n개의 jobs to execute , 각 job은 T 초를 소요함. Pipeline이 있는 경우, k개로 stage를 나눔
파이프라인이 없을 때, 총 실행하는 데 걸리는 시간 Ts = n*T
파이프라인이 있을 때, 총 실행하는데 걸리는 시간 Tp = (n+k-1) * T / k (k-1은 pipeline을 채우는 데 걸리는 시간)
Speedup = Ts / Tp ← n이 무한대로 가면 Speedup = k
ex) n = 100 , T = 10 , K=5 일 때,
Ts = 1000
TP = (100+5-1) * 10/5 = 104 *2 = 208
만약 K = 10이면?
TP = (100+10-1) * 1 = 109
출처 : 한동대 SW중심대학
'2학년 2학기 > 컴퓨터 구조' 카테고리의 다른 글
[ 컴퓨터 구조 ] 11. Pipeline DataPath (0) | 2023.07.06 |
---|---|
[ 컴퓨터 구조 ] 10. Pipeline 적용 (0) | 2023.07.06 |
[ 컴퓨터 구조 ] 8. (Multiple Cycle) Multiple Cycle 제어부 (Control Unit) (0) | 2023.07.05 |
[ 컴퓨터 구조 ] 7. (Multiple Cycle) 명령어별 Multiple Cycle 실행 (0) | 2023.07.05 |
[ 컴퓨터 구조 ] 6. (Multiple Cycle) Multiple Clock Cycle (0) | 2023.07.04 |