pipelining?
: 명령어를 순차적으로 실행하는 프로세서에 적용하는 기술,
한 번에 하나의 명령어만 실행하는 것이 아닌,
동시에 여러 개의 명령어를 처리하여 throughput을 늘리는 것.
참고자료1
참고자료2
-> RISC-V instructions classically take 5 steps
-> 이 스탭을 : pipeline stage라 부름
1) IF : 메모리로 부터 명령어 인출
2) ID : rd,rs,opcode 등 명령어 해독 및 레지스터 파일 읽기
3) EX : 실행 및 주소 계산
4) MEM : Access Memory
5) WB : 레지스터에 쓰기
★ 각 stage마다 2가지의 경우 기억하자
★ 단계별로 존재하는 파이프라인 레지스터
: 특정 단계의 파이프라인 레지스터는 직전 단계의 CLC에서 계산되어 전달받은 값들 저장됨. 그 값들을 바탕으로 CLC가 다음 단계로 전달할 값들 계산함.
★ 단계를 늘리면,
Overall latency increases -> 단계별 레지스터를 계속 두니까~
① Rn = 전달받은 값을 레지스터에 저장하는 데 걸리는 시간
② Cn = 다음 단계로 전달할 값을 계산하는 데 걸리는 시간
③ 총 지연 시간 (Overall Latency) = ∑(Rn+Cn)
④ 클락의 주기 = T ≥ max(Rn+Cn)
⑤ 처리량 (Throughput) = 1/T
이런 예제 연습해두자!!
If pipelining adds 0.2 ns to the machine clock cycle, calculate the amount of speedup in instruction execution from pipelining
Throughput limited by slowest stage
stage 개수를 늘릴수록, 한순간에 처리되는 명령어가 많아지고, 클럭 주기 짧아진다.
but,
파이프라인 레지스터 개수가 증가하면서 latency(총 지연시간) 증가함. 하지만 얘가 주는 장점이 확실해서 현대 프로세서들 through very deep pipelining
◆ instruction pipeline에서의 문제점
결론, 4과,,, 교재 예제를 풀어보든,,, ppt 예제라도 이해하자