- Liittynyt
- 03.01.2018
- Viestejä
- 576
Ei ole.
Sekoitat ilmeisesti write-puskuriin.
Store-puskuri on sitä varten, että (spekulatiivista suoritusta tukevalla tai tiukan muistijärjestyksen vaativat käskykannan toteuttavalla) OoOE-prosessorilla voidaan storet commitoida järjestyksessä ja spekulatiiviset storet tarvittaessa peruuttaa;
Storet odottavat store-puskurissa kunnes kaikki niitä koodissa edeltävät haarautumiset on resolvattu ja niitä edeltävät muistioperaatoit commitoitu.
Tai kunnes joku niitä edeltävä haarautuminen osoittautuu väärin ennustetuksi tai joku edeltävä käsky aiheuttaa poikkeuksen, mikä aiheuttaa sen puskurin tyhjentämisen kirjoittamatta niitä eteenpäin.
Ja se pitää spekulatiivista suoritusta tekevällä tai tiukan muistijärjestyksen vaativan käskykannan toteuttavalla OoOE-prossulla olla vaikka prosessorilla ei olisi ollenkaan välimuistia, välimuistin toiminnan kanssa tällä ei ole mitään tekemistä.
Osa välimuistia se store-puskuri on. Ja store-puskuri pitää olla vaikka prosessori suorittaisi käskyt järjestyksessä, store odottaa puskurissa kun muistiosoitteen fyysinen osoite ratkaistaan, cache-linja luetaan välimuistiin ja hankitaan cache-linjalle eksklusiivinen käyttöoikeus, ellei kaikki em. asiat ole jo valmiina. Se Mesi-protokolla.....
Mistä ihmeen patentista nyt oikein höpiset?
Intel patentoi tuon store-forward rakenteen jossa muisti forwardoidaan ennen sen fyysisen osoitteen selvittämistä, josta patentista sitten oli helppo koodata muutama uusi sivukanavahyökkäys.
Voisitko laittaa linkkiä, niin voin kertoa, mitä siitä olet (jälleen kerran) ymmärtänyt väärin.
Löytyy esimerkiksi siitä Fallout pdf:stä hyvin purettuna.
TAGiin täytyy aina tallettaa aivan kaikki korkeat bitit siitä muistiosoitteesta. Muuten ei ole mitään keinoa tietää minkä muistiosoitteen dataa siellä välimuisitissa on. Mikään "myöhäisempi tarkastus" ei ole mahdollinen, jos ei ole olemassa bittejä mitä tarkastaa.
Veikkaus: Taidat tässä sekoittaa siihen, mitä käytetään way predictioniin. Ei itse datan accessoimiseen välimuistista.
L2:n ollessa inclusiivinen L2:ssa on täydet tagit L1:n joka linjasta. L1:n osoittamiseen ei tarvita täyttä tagia eikä TLB-muunnosta, data haetaan osittaisella tagilla jonka osumatarkkuus on lähes täydellinen ja L2 tarkistaa osuman. AMD on speksannut mikrotaginsa hyvin, mikrotagi voi mennä kumpaankin suuntaan pieleen, Intelin toteutus näyttää että mikrotagin mukaan data haetaan ja se vain invalidoidaan false hitissä. Intelin ratkaisussa taas liian myöhään, AMD:n toteutus on erilainen joko siltä osin että invalidointi saadaan tehtyä aikaisemmin tai sitten vain spekulatiivinenkin koodinajo kunnioittaa käyttöoikeuksia.