오퍼랜드 전송
Operand forwarding오퍼랜드 포워딩(또는 데이터 포워딩)은 파이프라인의 [1][2]스톨로 인해 발생하는 성능 저하를 제한하기 위해 파이프라인 CPU를 최적화한 것입니다.현재 작업이 아직 완료되지 않은 이전 작업의 결과를 기다려야 하는 경우 데이터 위험이 발생하면 파이프라인 정체가 발생할 수 있습니다.
예
A B C #A=B+C 서브 D C A #D=C-A를 추가합니다.
이들 2개의 어셈블리 의사 코드 명령이 파이프라인 내에서 실행되면 두 번째 명령을 가져오고 디코딩한 후 파이프라인이 정지하여 추가 결과가 기록되고 읽힐 때까지 기다립니다.
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|
| ADD 가져오기 | 디코딩 ADD | 오퍼랜드 ADD 읽기 | ADD 실행 | 결과 쓰기 | |||
| SUB 가져오기 | 디코드 SUB | 멈추다 | 멈추다 | 피연산자 SUB | SUB 실행 | 결과 쓰기 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|
| ADD 가져오기 | 디코딩 ADD | 오퍼랜드 ADD 읽기 | ADD 실행 | 결과 쓰기 | ||
| SUB 가져오기 | 디코드 SUB | 멈추다 | 오퍼랜드 SUB 읽기: 이전 작업의 사용 결과 | SUB 실행 | 결과 쓰기 |
경우에 따라서는 이러한 쓰기 후 읽기 데이터 위험으로부터의 모든 정지를 오퍼랜드 [3][4][5]포워딩에 의해 완전히 제거할 수 있습니다.
| 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|
| ADD 가져오기 | 디코딩 ADD | 오퍼랜드 ADD 읽기 | ADD 실행 | 결과 쓰기 | |
| SUB 가져오기 | 디코드 SUB | 오퍼랜드 SUB 읽기: 이전 작업의 사용 결과 | SUB 실행 | 결과 쓰기 |
기술적 실현
CPU 제어 유닛은 피연산자 포워딩이 적절한 의존관계를 검출하기 위해 로직을 실장해야 합니다.그런 다음 멀티플렉서를 사용하여 피연산자를 읽을 적절한 레지스터 또는 플립 플랍을 선택할 수 있습니다.
「 」를 참조해 주세요.
레퍼런스
- ^ "CMSC 411 Lecture 19, Pipelining Data Forwarding". University of Maryland Baltimore County Computer Science and Electrical Engineering Department. Retrieved 2020-01-22.
- ^ "High performance computing, Notes of class 11". hpc.serc.iisc.ernet.in. September 2000. Archived from the original on 2013-12-27. Retrieved 2014-02-08.
- ^ 구르푸르 M. 프라부"컴퓨터 아키텍처 튜토리얼"섹션 "Forwarding" 및 "Data Hazard Classification".
- ^ 오리온 롤러 박사.파이프라인, 파이프라인 정지 및 오퍼랜드 포워딩.
- ^ 래리 스나이더."파이프라인 리뷰"