최적화 컴파일러는 일반적으로 소프트웨어 파이프 라인에 의한 명령 스케줄링을 고려합니다. 그러나 하드웨어 파이프 라인이 있으므로 소프트웨어 파이프 라인 스케줄링의 장점은 무엇입니까?소프트웨어 파이프 라인의 이점은 무엇입니까?
답변
일부 경우 (CPU 특정) 실행 속도는 실행 순서에 따라 달라질 수 있습니다. 소프트웨어 파이프 라이닝을 사용하면 컴파일러는 최종 결과에 영향을주지 않고 명령문을 최적 순서로 재 배열합니다.
최적의 순서는 기존 하드웨어 파이프 라인에 따라 달라질 수 있으며, 일부 레지스터는 특정 실행 순서에 따라 더 최적으로 사용할 수 있습니다.
소프트웨어 파이프 라이닝은 단지 * 재주문 * 또는 오히려 스케줄링 지침 이상의 것입니다. 특히, 코드 크기가 증가하고 레지스터 압력이 증가합니다. – Olsonist
소프트웨어 파이프 라이닝을 사용하면 루프를 더 빠르게 실행할 수 있습니다. 어떤 경우에는 정말로 빠릅니다. 예를 들어
: 추가 명령 r0
까지 기다려야이 예에서
num = 100;
i = 0;
loop:
load r0 sp+i;
add r2 r1 r0;
i++;
if (i < num) goto loop
메모리에서로드 된 값을 갖는다. 대기 시간이 3주기라고하면 그런 다음이 루프를 실행하기 위해 반복 당 3 사이클의 오버 헤드가 발생합니다. 이는 상당한 오버 헤드가 될 수 있습니다. 소프트웨어 - 파이프 라이닝을 통해이 오버 헤드를 약간 줄일 수 있습니다. add
명령 실행시에 프로그램 r0
에서 이미 값을 갖는 루프 입사 번째 경우
num = 100;
load r0 sp+0;
i=0;
loop:
add r2 r1 r0;
i++;
load r0 sp+i
if (i < num) goto loop
. 프로그램이
add
명령에 도달 할 때까지 각 반복에서 값은
r0
에 있습니다. 따라서 대기 시간이 줄어 듭니다.
추신 : 아이디어를 설명하기 위해 니모닉을 사용했습니다. 이것은 일부 아키텍처의 실제 어셈블리 언어가 아닙니다.
- 1. 파이프 라인의 일반적인 파이프 라인 위험은 무엇입니까?
- 2. 파이프 라인의 printfn
- 3. 젠킨스 파이프 라인의 변수
- 4. 파이프 라인의 멀티 샘플링
- 5. "민첩한 소프트웨어 개발을위한 MSF"의 이점은 무엇입니까?
- 6. MonoGame의 콘텐츠 파이프 라인의 현재 상태는 무엇입니까?
- 7. 자산 파이프 라인의 모든 이미지보기
- 8. 파이프 라인의 Spark Dataframe에있는 OneHotEncoder
- 9. 그래픽 파이프 라인의 음영 처리
- 10. HttpRequest 파이프 라인의 세션 액세스
- 11. C#에서 추가 기능 파이프 라인의 유용성
- 12. 파이프 라인의 중간 결과를 화면에 인쇄하려면 어떻게해야합니까?
- 13. bitbucket 파이프 라인의 Oracle 종속 관계
- 14. ImageResizer 파이프 라인의 다형성/소스 설정?
- 15. SSIS 파이프 라인의 중복 열 삭제
- 16. 파이프 라인의 DirectX11 픽셀 쉐이더가 누락되었습니다.
- 17. powershell에서 파이프 라인의 마지막 요소 가져 오기
- 18. Tensorflow 입력 파이프 라인의 온라인 오버 샘플링
- 19. 이미지를위한 레일스 자산 파이프 라인의 이점
- 20. 는 자산 파이프 라인의 레일 문서에서
- 21. 표현식은 파이프 라인의 첫 번째 요소로만 허용됩니다.
- 22. Sitecore가 sessionEnd 파이프 라인의 로그인 페이지로 리디렉션
- 23. 성능 경고를 제공하는 이전 파이프 라인의 VkDescriptorSet
- 24. 자산 파이프 라인의 레일 애플리케이션에 CSS를 추가해야합니까?
- 25. 애셋 파이프 라인의 HTML 페이지 미리 컴파일
- 26. gstreamer 파이프 라인의 비디오 해상도 설정
- 27. C++에서 파이프 라인의 5 단계를 시뮬레이트하는 방법은 무엇입니까?
- 28. Scrapy 아이템 파이프 라인의 모든 긁힌 아이템에 액세스하는 방법은 무엇입니까?
- 29. 작업 병렬 처리와 비교할 때 병렬 파이프 라인의 장점은 무엇입니까?
- 30. Jenkins 파이프 라인의 노드, 스테이지 및 단계의 차이점은 무엇입니까?
컴파일러는 하드웨어가 가질 수있는 것보다 전체 계산의 그림이 크기 때문에 소프트웨어 스케줄링을 통해 성능을 향상시킬 수 있으며 하드웨어 스케줄링을 마지막으로 조정할 수 있습니다. –