Prosessorit ovat uskomattoman monimutkaisia petoja. On monia toisiinsa liittyviä osia, joiden kaikkien on toimittava täydellisessä sopusoinnussa saavuttaaksemme näkemämme suorituskykytason. Yksi suorittimen tärkeimmistä ominaisuuksista on välimuisti. Se ei ole räikeä ominaisuus. Se ei mainosta yhtä hyvin kuin ydinmäärä tai huipputehostustaajuus. Se on kuitenkin suorituskyvyn kannalta kriittinen.
Miksi välimuisti?
Nykyaikaiset prosessorit ovat uskomattoman nopeita. He suorittavat yli viisi miljardia operaatiota sekunnissa. On vaikeaa pitää prosessori syötettynä datalla, kun se toimii niin nopeasti. RAM-muistissa on tarpeeksi kapasiteettia syöttääkseen CPU:lle tietoja. Se voi jopa siirtää tietoja joka sekunti erittäin suuren kaistanleveyden ansiosta. Se ei kuitenkaan ole ongelma. Ongelma on latenssi.
RAM voi vastata hyvin nopeasti. Ongelmana on, että "erittäin nopeasti" on pitkä aika, kun teet viisi miljardia asiaa sekunnissa. Jopa nopeimman RAM-muistin latenssi on yli 60 nanosekuntia. Jälleen, 60 nanosekuntia kuulostaa aika olemattomalta. Ongelmana on, että jos prosessori käy 1 GHz:n taajuudella, syklin suorittaminen kestäisi 1 ns. Kun huippuluokan suorittimet saavuttavat 5,7 GHz, se on yksi sykli 175 pikosekunnissa. Miltä nuo 60 nanosekunnin latenssia näyttävät nyt? Se on 342 latenssisykliä.
Tällainen latenssi olisi tappaja mille tahansa suorittimen suorituskyvylle. Tämän kiertämiseksi käytetään välimuistia. Välimuisti sijoitetaan itse CPU-suojukseen. Se on myös paljon pienempi kuin RAM ja käyttää eri rakennetta, SRAMia DRAMin sijaan. Tämä tekee vastauksesta paljon nopeamman kuin pääjärjestelmän RAM-muisti. Välimuisti on tyypillisesti porrastettu, ja L1, L2 ja L3 osoittavat tasoja, jotka pääsevät yhä kauemmaksi suorittimen ytimistä. Alemmat tasot ovat nopeampia, mutta pienempiä. L1:n latenssi voi olla neljä tai viisi kellojaksoa, paljon parempi kuin 342.
Mutta jotkut prosessorit mainitsevat L0:n?
L1-, L2- ja L3-terminologia on melko vakio. Epämääräinen käsitys siitä, mitä ne tarkoittavat ja tekevät, on suhteellisen yleistä jopa prosessoritoimittajilla. Tämä johtuu siitä, että niitä hallitsee materiaali- ja sähköfysiikka; ei paljon voi muuttua. Sinulla voi olla nopea välimuisti tai suuri välimuisti, ei molempia. Sen on oltava suurempi, jos jaat välimuistin useiden ytimien välillä. Tätä varten L1 ja L2 ovat yleensä ydinkohtaisia. Suurempi L3-välimuisti on yleensä jaettu joidenkin tai kaikkien prosessorin tai sirujen ytimien välillä.
Kuten voit luultavasti arvata, L0 liittyy välimuistiin, mutta se on työnnetty nimeämisjärjestelmään jälkikäteen. Se ei kuitenkaan auta ymmärtämään, mitä se tarkoittaa. Osaat varmaan kuitenkin arvata joitain asioita. Se rajoittuu yhteen ytimeen, se tulee olemaan pieni ja se tulee olemaan nopea. Toinen nimi, jota se käyttää, voi auttaa hieman; se on mikro-op-välimuisti.
Sen sijaan, että välimuistiin tallennettaisiin tietoja tai täydellisiä ohjeita, L0 tallentaa mikrooperaatiot välimuistiin. Kuten äskettäin kuvasimme , mikro-op on nykyaikaisten suorittimien ominaisuus. x86:n ja muiden ISA:iden ohjeet ovat suuria, monimutkaisia ja haastavia sovittaakseen tehokkaasti putkistoon. Voit jakaa ne paljon tehokkaammin, jos jaat ne mikrooperaatioihin. Joissakin tapauksissa voit jopa ryhmitellä useita mikrooperaatioita, jopa eri ohjeista, yhdeksi mikrooperaatioksi, mikä parantaa suorituskykyä ja vähentää tehoa.
CPU Architecture ft Micro-Op Cache
Suorittaakseen käskyn nykyaikainen CPU purkaa sen. Tämä sisältää käskyn jakamisen sen mikrooperaatioihin ja muistipaikkojen määrittämisen, joihin tulisi viitata. Monet ohjelmistot käyttävät samanlaisia toimintoja säännöllisesti ja voivat usein käyttää samaa koodia uudelleen silmukassa tai kutsutusta funktiosta. Tämä tarkoittaa, että tarkat ohjeet voidaan kutsua uudestaan ja uudestaan. Tämä tarkoittaa sitten sitä, että samoja mikrooperaatioita kutsutaan yhä uudelleen ja uudelleen. Ja jos samoja mikrotoimintoja tarvitaan toistuvasti, ne voidaan tallentaa välimuistiin. Välimuistiin tallentaminen voi vähentää käskydekooderien kuormitusta, vähentää virrankulutusta tai auttaa täyttämään putkilinjan nopeammin.
Välimuisti on pidettävä pienenä, mutta huolellisesti hallittaessa sitä voidaan käyttää yhdellä tai jopa ilman jaksolatenssia. Tämä voi riittää estämään tarvetta ottaa 4-jakson latenssi L1-välimuistiin, eikä siihen liity välimuistin ohitusrangaistusta.
Johtopäätös
L0-välimuisti on toinen nimi mikro-op-välimuistille. Se voi olla osa nykyaikaisia mikrotoimintoja hyödyntäviä prosessoreita. Se sisältää tyypillisesti muutaman tuhannen merkinnän ja sen kapasiteetit on lueteltu merkintöjen lukumääränä tavujen sijaan. L0:ta voidaan käyttää nopeammin kuin L1:tä, tyypillisesti 1- tai 0-jakson latenssilla. Mikrooperaatioiden välimuistiin tallentaminen vähentää käskydekooderien kuormitusta, erityisesti koodissa, joka hyödyntää hyvin silmukoita tai toimintoja.