Spekulatiivinen suoritus on optimointitekniikka , jossa tietokonejärjestelmä suorittaa joitakin tehtäviä, jotka eivät välttämättä ole tarpeellisia. Työ valmistuu ennen kuin tiedetään, että sitä todella tarvitaan, jotta vältytään viiveeltä, joka saattaa syntyä työn valmistumisessa sen jälkeen, kun sen tarve tiedetään. Jos osoittautuu, että työtä ei kuitenkaan tarvita, suurin osa työhön tehdyistä muutoksista hylätään ja tulokset jätetään huomiotta.
Tavoitteena on tarjota enemmän samanaikaisuutta , jos enemmän resursseja on saatavilla . Tätä lähestymistapaa käytetään useilla alueilla, mukaan lukien haaran ennustaminen liukuhihnaprosessoreissa , arvon ennustaminen arvon paikallisuuden hyödyntämiseksi, muistin ja tiedostojen esihaku sekä optimistinen samanaikaisuuden ohjaus [ tietokantajärjestelmissä [1] [2] [3] .
Spekulatiivinen monisäikeisyys on spekulatiivisen toteutuksen erikoistapaus.
Nykyaikaiset liukuhihnamikroprosessorit käyttävät spekulatiivista suoritusta alentamaan ehdollisten haarakäskyjen kustannuksia käyttämällä piirejä, jotka ennustavat ohjelman suorituspolun haaran suoritushistorian perusteella [2] . Suorituskyvyn ja tietokoneresurssien käytön parantamiseksi käskyt voidaan ajoittaa ajankohtaan, jolloin ei vielä ole määritetty, että käskyt on suoritettava ennen haarautumista [4] [5] .
Spekulatiivinen laskenta on yhdistetty aikaisempaan käsitteeseen [6] .
Innokas teloitus on spekulatiivisen toteutuksen muoto, jossa ehdollisen haaran molemmat puolet toteutetaan; Tulokset kerätään kuitenkin vain, jos predikaatti on tosi. Rajattomilla resursseilla aktiivinen suoritus (tunnetaan myös nimellä oraakkelin suoritus ) tarjoaisi teoriassa saman suorituskyvyn kuin täydellinen haaran ennustaminen . Rajallisilla resursseilla aktiivista suoritusta tulee käyttää varoen, koska tarvittavien resurssien määrä kasvaa eksponentiaalisesti innokkaasti suoritetun haaran jokaisella tasolla [7] .
Ennakoiva toteutus on spekulatiivisen toteutuksen muoto, jossa ennustetaan jokin lopputulos ja toteutus jatkuu ennustettua polkua pitkin, kunnes todellinen lopputulos tiedetään. Jos ennuste on oikea, ennustettu suoritus sallitaan; Jos ennuste on kuitenkin virheellinen, suoritus on peruutettava ja yritettävä uudelleen. Tämän yleisiä muotoja ovat haaran ennustaja ja muistiriippuvuuden ennustaminen . Yleistettyä muotoa kutsutaan joskus kustannusennusteeksi [8] .
Laiska teloitus on innokkaan toteuttamisen vastakohta, eikä siihen liity spekulaatiota. Spekulatiivisen suorituksen sisällyttäminen Haskell-ohjelmointikielen , laiskan kielen, toteutuksiin on ajankohtainen tutkimusaihe. Eager Haskell , kielen muunnelma, perustuu ajatukseen spekulatiivisesta toteutuksesta. Vuonna 2003 tehdyssä väitöskirjassa GHC tuki eräänlaista spekulatiivista toteutusta vikasietomekanismilla huonon valinnan tapauksessa, jota kutsutaan optimistiseksi toteutukseksi [9] . Sitä pidettiin liian monimutkaisena [10] .
Vuodesta 2017 alkaen yleisten prosessoriarkkitehtuurien spekulatiivisen suorituksen toteutuksissa löydettiin useita tietoturva-aukkoja, jotka mahdollistivat oikeuksien eskaloinnin .
Nämä sisältävät:
prosessoritekniikat | Digitaaliset|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkkitehtuuri | |||||||||
Ohjesarjan arkkitehtuuri | |||||||||
koneen sana |
| ||||||||
Rinnakkaisuus |
| ||||||||
Toteutukset | |||||||||
Komponentit | |||||||||
Virranhallinta |