투기적 실행
Speculative execution추측 실행은 컴퓨터 시스템이 필요하지 않을 수 있는 작업을 수행하는 최적화 기술입니다.실제로 필요한지 아닌지를 알기 전에 작업을 하기 때문에 필요한 것으로 알려진 후에 작업을 수행함으로써 발생할 수 있는 지연을 방지할 수 있다.결국 작업이 필요하지 않은 것으로 판명되면 작업에 의한 변경은 대부분 되돌리고 결과는 무시됩니다.
목표는 추가 리소스를 사용할 수 있는 경우 더 많은 동시성을 제공하는 것입니다.이 접근방식은 파이프라인 프로세서의 분기 예측, 값 인접성을 이용하기 위한 값 예측, 메모리 및 파일 프리페치, 데이터베이스 시스템의 [1][2][3]최적 동시성 제어 등 다양한 영역에서 사용됩니다.
투기적 멀티스레딩은 투기적 실행의 특별한 경우입니다.
개요
최신 파이프라인 마이크로프로세서는 분기 [2]실행의 이력에 기초하여 프로그램의 실행 경로를 예측하는 체계를 사용하여 조건부 분기 명령의 비용을 줄이기 위해 추측 실행을 사용합니다.컴퓨터 자원의 퍼포먼스와 이용률을 향상시키기 위해 브랜치보다 [4]앞서 명령을 실행할 필요가 있다고 아직 결정되지 않은 시점에서 명령을 스케줄링할 수 있다.
변종
투기적 계산은 관련된 초기 [5]개념이었다.
신속한 실행
고속 실행은 조건부 분기의 양쪽이 실행되는 추측 실행의 한 형태입니다.단, 결과는 술어가 참일 경우에만 커밋됩니다.리소스가 무제한인 경우, 신속한 실행(오라클 실행이라고도 함)은 이론적으로 완벽한 분기 예측과 동일한 성능을 제공합니다.리소스가 한정되어 있는 경우,[6] 필요한 자원의 수는 각 브랜치 레벨에 따라 급상승하기 때문에, 신속한 실행이 신중하게 실시할 필요가 있습니다.
예측 실행
예측 실행은 어떤 결과가 예측되고 실제 결과가 알려질 때까지 예측 경로를 따라 실행되는 추측 실행의 한 형태입니다.예측이 참일 경우 예측된 실행은 커밋할 수 있지만, 잘못된 예측이 있을 경우 실행을 언롤링하여 재실행해야 합니다.일반적인 형태로는 분기 예측 변수와 메모리 의존성 예측이 있습니다.일반화 형식을 값 [7]예측이라고 부르기도 합니다.
관련 개념
실행이 느리다
게으른 실행은 성급한 실행의 반대이며 추측을 수반하지 않습니다.게으른 언어인 하스켈 프로그래밍 언어의 구현에 대한 추측 실행의 통합은 현재 연구 주제이다.이 언어의 변형인 Eager Haskell은 투기적 실행이라는 개념을 중심으로 설계되었습니다.2003년 박사학위 논문에 따르면 GHC는 낙천적 [8]처형이라는 잘못된 선택이 있을 경우 이를 철회하는 낙태 메커니즘으로 일종의 투기적 처형을 지원하게 되었다.그것은 너무 [9]복잡하다고 여겨졌다.
보안 취약성
2017년부터, 공통 프로세서 아키텍처에 대한 투기적 실행의 구현에서 일련의 보안 취약성이 발견되어 사실상 권한 상승이 가능했습니다.
여기에는 다음이 포함됩니다.
「 」를 참조해 주세요.
레퍼런스
- ^ 게으르고 투기적인 실행 버틀러 Lampson 마이크로소프트 리서치 OPODIS, 프랑스 보르도, 2006년 12월 12일
- ^ a b International Business Machines Corporation. Research Division; Prabhakar Raghavan; Hadas Schachnai; Mira Yaniv (1998). Dynamic schemes for speculative execution of code. IBM. Retrieved 18 January 2011.
- ^ Kung, H. T.; John T. Robinson (June 1981). "On optimistic methods for concurrency control" (PDF). ACM Trans. Database Syst. Vol. 6. Archived (PDF) from the original on August 31, 2019.
- ^ Bernd Krieg-Brückner (1992). ESOP '92: 4th European Symposium on Programming, Rennes, France, February 26-28, 1992: proceedings. Springer. pp. 56–57. ISBN 978-3-540-55253-6. Retrieved 18 January 2011.
- ^ Randy B. Osborne (1990-03-21). "Speculative Computation in Multilisp". Parallel Lisp: Languages and Systems (PS). Lecture Notes in Computer Science. Vol. 441. Digital Equipment Corporation Research Lab. pp. 103–137. doi:10.1007/BFb0024152. ISBN 3-540-52782-6. Retrieved 2018-01-26.
- ^ Jurij Šilc; Borut Robič; Theo Ungerer (1999). Processor architecture: from dataflow to superscalar and beyond. Springer. pp. 148–150. ISBN 978-3-540-64798-0. Retrieved 21 January 2011.
- ^ Mark D., Hill; Norman P., Jouppi; Gourindar S., Sohi (2000). Readings in Computer Architecture. Morgan Kaufman. ISBN 9781558605398. Retrieved 5 January 2018.
- ^ Jones, Simon Peyton; Ennals, Robert (1 August 2003). "Optimistic Evaluation: a fast evaluation strategy for non-strict programs". Retrieved 15 May 2019 – via www.microsoft.com.
{{cite journal}}
:Cite 저널 요구 사항journal=
(도움말) - ^ https://mail.haskell.org/pipermail/haskell/2006-August/018424.html