Spekulativ henrettelse

Spekulativ udførelse er en optimeringsteknik, hvor et computersystem udfører en opgave, som måske ikke er nødvendig. Arbejdet afsluttes, før det vides, at det reelt er nødvendigt, for at forhindre forsinkelser, der kan opstå i færdiggørelsen af ​​arbejdet, efter at det vides, at det er nødvendigt. Hvis det viser sig, at arbejdet alligevel ikke er nødvendigt, kasseres de fleste af de ændringer, der er foretaget i arbejdet, og resultaterne ignoreres.

Målet er at give mere samtidighed , hvis flere ressourcer er tilgængelige . Denne tilgang bruges på en række forskellige områder, herunder brancheforudsigelse i pipelinede processorer , værdiforudsigelse til at udnytte værdilokalitet , hukommelse og filforudhentning og optimistisk samtidighedskontrol i databasesystemer [1] [2] [3] .

Spekulativ multithreading er et særligt tilfælde af spekulativ henrettelse.

Oversigt

Moderne pipelinede mikroprocessorer bruger spekulativ eksekvering til at reducere omkostningerne ved betingede forgreningsinstruktioner ved hjælp af kredsløb, der forudsiger programudførelsesstien baseret på filialudførelseshistorien [2] . For at forbedre ydeevne og udnyttelse af computerressourcer kan instruktioner planlægges på et tidspunkt, hvor det endnu ikke er bestemt, at instruktionerne skal udføres før forgrening [4] [5] .

Indstillinger

Spekulativ beregning er blevet knyttet til et tidligere koncept [6] .

Ivrig præstation

Ivrig henrettelse er en form for spekulativ henrettelse, hvor begge sider af den betingede gren udføres; resultaterne fanges dog kun, hvis prædikatet er sandt. Med ubegrænsede ressourcer vil aktiv eksekvering (også kendt som orakeludførelse ) teoretisk give den samme ydeevne som perfekt grenforudsigelse . Med begrænsede ressourcer bør aktiv eksekvering bruges med forsigtighed, da mængden af ​​nødvendige ressourcer vokser eksponentielt med hvert niveau af den ivrigt udførte gren [7] .

Forventet ydeevne

Prediktiv eksekvering er en form for spekulativ eksekvering, hvor et eller andet udfald forudsiges, og eksekveringen fortsætter langs den forudsagte vej, indtil det faktiske udfald er kendt. Hvis forudsigelsen er korrekt, tillades den forudsagte eksekvering at blive begået; men hvis der er en fejlforudsigelse, skal udførelsen vendes og forsøges igen. Almindelige former for dette omfatter forudsigelse af grenprædiktor og hukommelsesafhængighed . Den generaliserede form kaldes undertiden en omkostningsprognose [8] .

Relaterede begreber

Doven udførelse

Doven henrettelse er det modsatte af ivrig henrettelse og involverer ikke spekulation. Inkluderingen af ​​spekulativ eksekvering i implementeringer af Haskell-programmeringssproget , et dovent sprog, er et aktuelt forskningsemne. Eager Haskell , en variant af sproget, er baseret på ideen om spekulativ henrettelse. I en ph.d.-afhandling fra 2003 støttede GHC en slags spekulativ eksekvering med en failover-mekanisme i tilfælde af et dårligt valg, kaldet optimistisk eksekvering [9] . Det blev anset for at være for kompliceret [10] .

Sikkerhedssårbarheder

Fra og med 2017 blev der fundet en række sikkerhedssårbarheder i implementeringer af spekulativ eksekvering på almindelige processorarkitekturer, hvilket muliggjorde privilegieeskalering .

Disse omfatter:

Se også

Noter

  1. Doven og spekulativ henrettelse Arkiveret 4. marts 2016 på Wayback Machine Butler Lampson Microsoft Research OPODIS , Bordeaux , Frankrig 12. december 2006
  2. 1 2 International Business Machine Corporation. Forskningsafdelingen, Prabhakar Raghavan, Hadas Shahnai, Mira Yaniv. Dynamiske skemaer til udførelse af spekulativ kode . — IBM, 1998. Arkiveret 27. november 2020 på Wayback Machine
  3. H. T. Kung, John T. Robinson (juni 1981). "Om optimistiske samtidighedskontrolmetoder" (PDF) . ACM-transaktioner i databasesystemer . 6 . Arkiveret (PDF) fra originalen 2019-08-31 . Hentet 2021-08-17 . Forældet parameter brugt |deadlink=( hjælp );Tjek datoen på |date=( hjælp på engelsk )
  4. Bernd Krieg-Brückner. ESOP '92: 4th European Programming Symposium, Rennes, Frankrig, 26.-28. februar 1992: Papers . - Springer, 1992. - S. 56-57. - ISBN 978-3-540-55253-6 . Arkiveret 12. juni 2014 på Wayback Machine
  5. ( ESOP er en forkortelse for den engelske kombination European Symposium O n P rogramming , Russian European Symposium on Programming )
  6. Randy B. Osborne. Spekulativ beregning i Multilisp // Parallel Lisp: Sprog og systemer ( PS ). Forelæsningsnotater i datalogi 441 . - Research Laboratory Digital Equipment Corporation , 1990-03-21. - S. 103-137. — ISBN 3-540-52782-6 . - doi : 10.1007/BFb0024152 .
  7. Yuri Shilts, Borut Robich, Theo Ungerer. Processorarkitektur: Fra Dataflow til Superscalar og videre . - Springer, 1999. - S.  148-150 . — ISBN 978-3-540-64798-0 .
  8. Mark D. Hill, Norman P. Juppy , Gurindar S. Sohi. Læsninger i computerarkitektur . - Morgan Kaufman, 2000. - ISBN 9781558605398 . Arkiveret 22. november 2020 på Wayback Machine
  9. Simon Peyton Jones, Robert Ennals (1. august 2003). "Optimistisk estimering: En hurtig estimeringsstrategi for ikke-strenge programmer" . Arkiveret fra originalen 2020-11-22 . Hentet 15. maj 2019 – via www.microsoft.com. Forældet parameter brugt |deadlink=( hjælp );Tjek datoen på |access-date=, |date=( hjælp på engelsk )
  10. [https://web.archive.org/web/20201122170921/https://mail.haskell.org/pipermail/haskell/2006-August/018424.html Arkiveret 22. november 2020 på Wayback Machine [Haskell] Optimistic Evaluering?]