Spekulatív végrehajtás

A spekulatív végrehajtás olyan optimalizálási technika , amelyben a számítógépes rendszer olyan feladatot hajt végre, amelyre esetleg nincs szükség. A munkát azelőtt fejezik be, hogy ténylegesen szükség lenne rá, hogy elkerülhető legyen a késedelem a munka befejezésében, miután kiderült, hogy szükség van rá. Ha kiderül, hogy a munkára mégsem van szükség, a munkán végrehajtott változtatások nagy részét elvetik, az eredményeket pedig figyelmen kívül hagyják.

A cél több párhuzamosság biztosítása, ha több erőforrás áll rendelkezésre . Ezt a megközelítést számos területen alkalmazzák, beleértve az elágazás előrejelzését a csővezetékes processzorokban , az érték előrejelzését az érték helyének kihasználására, a memória és a fájl előzetes letöltését, valamint az optimista párhuzamosság-vezérlést adatbázis - rendszerekben [1] [2] [3] .

A spekulatív multithreading a spekulatív végrehajtás speciális esete.

Áttekintés

A modern csővezetékes mikroprocesszorok spekulatív végrehajtást alkalmaznak, hogy csökkentsék a feltételes elágazási utasítások költségeit olyan áramkörök segítségével, amelyek az ágvégrehajtási előzmények alapján megjósolják a program végrehajtási útvonalát [2] . A teljesítmény és a számítógépes erőforrások kihasználtságának javítása érdekében az utasításokat olyan időpontban lehet ütemezni, amikor még nem határozták meg, hogy az utasításokat végre kell hajtani az elágazás előtt [4] [5] .

Opciók

A spekulatív számításokat egy korábbi koncepcióhoz kapcsolták [6] .

Lelkes előadás

A lelkes végrehajtás a spekulatív végrehajtás egyik formája, amelyben a feltételes ág mindkét oldalát végrehajtják; az eredményeket azonban csak akkor rögzítjük, ha az állítmány igaz. Korlátlan erőforrások mellett az aktív végrehajtás (más néven oracle execution ) elméletileg ugyanazt a teljesítményt nyújtaná, mint a tökéletes ág-előrejelzés . Korlátozott erőforrások esetén az aktív végrehajtást óvatosan kell használni, mivel a szükséges erőforrások mennyisége exponenciálisan növekszik a mohón végrehajtott ág minden egyes szintjével [7] .

Tervezett teljesítmény

A prediktív végrehajtás a spekulatív végrehajtás egyik formája, amelyben bizonyos kimeneteleket jósolnak meg, és a végrehajtás az előre jelzett úton folytatódik, amíg a tényleges eredmény nem ismert. Ha az előrejelzés helyes, az előre jelzett végrehajtás végrehajtható; téves előrejelzés esetén azonban a végrehajtást meg kell fordítani és újra meg kell próbálni. Ennek gyakori formái közé tartozik az elágazás előrejelzése és a memóriafüggőség előrejelzése . Az általánosított formát néha költség-előrejelzésnek is nevezik [8] .

Kapcsolódó fogalmak

Lusta végrehajtás

A lusta végrehajtás a lelkes végrehajtás ellentéte, és nem jár spekulációval. A spekulatív végrehajtás beépítése a Haskell programozási nyelv , egy lusta nyelv megvalósításaiba, aktuális kutatási téma. Az Eager Haskell , a nyelv egy változata a spekulatív végrehajtás gondolatán alapul. Egy 2003-as PhD disszertációjában a GHC egyfajta spekulatív végrehajtást támogatott egy feladatátvételi mechanizmussal rossz választás esetén, az úgynevezett optimista végrehajtást [9] . Túl bonyolultnak ítélték [10] .

Biztonsági sebezhetőségek

2017-től kezdődően számos biztonsági rést találtak a gyakori processzorarchitektúrákon végrehajtott spekulatív végrehajtásokban, amelyek lehetővé tették a jogosultságok kiterjesztését .

Ezek tartalmazzák:

Lásd még

Jegyzetek

  1. Lusta és spekulatív végrehajtás Archiválva : 2016. március 4. a Wayback Machine Butler Lampsonnál Microsoft Research OPODIS , Bordeaux , Franciaország 2006. december 12.
  2. 1 2 International Business Machine Corporation. Kutatási osztály, Prabhakar Raghavan, Hadas Shahnai, Mira Yaniv. Dinamikus sémák spekulatív kódvégrehajtáshoz . – IBM, 1998. Archiválva : 2020. november 27. a Wayback Machine -nél
  3. H. T. Kung, John T. Robinson (1981. június). „Az optimista párhuzamosság-szabályozási módszerekről” (PDF) . ACM-tranzakciók adatbázisrendszerekben . 6 . Archivált (PDF) az eredetiből ekkor: 2019-08-31 . Letöltve: 2021-08-17 . Elavult használt paraméter |deadlink=( help );Ellenőrizze a dátumot itt: |date=( súgó angolul )
  4. Bernd Krieg-Brückner. ESOP '92: 4. Európai Programozási Szimpózium, Rennes, Franciaország, 1992. február 26-28.: Papers . - Springer, 1992. - P. 56-57. - ISBN 978-3-540-55253-6 . Archiválva : 2014. június 12. a Wayback Machine -nál
  5. ( Az ESOP a European Symposium O n P programing , Russian European Symposium on Programming angol kombinációjának rövidítése )
  6. Randy B. Osborne. Spekulatív számítástechnika a Multilispben // Parallel Lisp: Languages ​​and Systems ( PS ). Számítástechnikai előadásjegyzetek 441 . - Research Laboratory Digital Equipment Corporation , 1990-03-21. - P. 103-137. — ISBN 3-540-52782-6 . - doi : 10.1007/BFb0024152 .
  7. Jurij Shilts, Borut Robich, Theo Ungerer. Processzor-architektúra: az adatfolyamtól a szuperskalárig és azon túl . - Springer, 1999. - P.  148-150 . — ISBN 978-3-540-64798-0 .
  8. Mark D. Hill, Norman P. Juppy , Gurindar S. Sohi. Olvasmányok a számítógép-architektúrából . - Morgan Kaufman, 2000. - ISBN 9781558605398 . Archiválva 2020. november 22-én a Wayback Machine -nél
  9. Simon Peyton Jones, Robert Ennals (2003. augusztus 1.). „Optimistikus becslés: gyors becslési stratégia nem szigorú programokhoz” . Archiválva az eredetiből, ekkor: 2020-11-22 . Letöltve: 2019. május 15. – a www.microsoft.com oldalon. Elavult használt paraméter |deadlink=( help );Ellenőrizze a dátumot itt: |access-date=, |date=( súgó angolul )
  10. [https://web.archive.org/web/20201122170921/https://mail.haskell.org/pipermail/haskell/2006-August/018424.html Archiválva 2020. november 22-én a Wayback Machine -nél [Haskell] Optimistic Értékelés?]