Az Isaiah mikroarchitektúra
Az Atom architektúrájával szemben a VIA Nano processzor teljesen más kategóriát képvisel: noha tervezési szempontjai között ugyancsak az elsők közt szerepelt az alacsony fogyasztás és a gazdaságos előállítás, mégis egy teljes, 3 utasítás széles out-of-order felépítésű processzorral állunk szemben.
A CPU a 64 kB-os, 16 utas csoportasszociatív L1 utasításcache-ből órajelenként 16 bájtot betöltve 3 db x86 vagy x64 utasítás dekódolására képes, ezek bármilyen komplexitásúak lehetnek. Az Intel processzorokban megismert micro-fusionhoz hasonlóan a lefordított, összetartozó (pl. betöltő és számítási) primitív RISC-műveleteket egyesítve küldi a végrehajtó egységek felé, legfejlebb hármat órajelenként. Képes továbbá az egymást követő összehasonlító és elágazási utasítások egyesítésére (macro-fusion).
A végrehajtó egységekből szám szerint 7 van a processzorban, melyek out-of-order módon kapják meg a műveleteket, amint azok bemenő adatai rendelkezésre állnak:
- Két, I1 és I2 névvel ellátott, egész számokon dolgozó egység, amelyek a szorzásokon és osztásokon minden integer műveletet végrehajtanak egy órajel alatt.
- Az LD nevű címszámító a memóriaolvasásokhoz; a vele kapcsolatban álló Memory Ordering Buffer (MOB) képes az olvasásokat out-of-order módon átrendezni, akár az írási utasításokhoz képest is.
- Egy-egy egység a memóriaírási műveletek címeihez (SA) és adataihoz (ST)
- Az MA (Media A) kezeli az osztó, lebegőpontos négyzetgyök és integer SIMD műveleteket; továbbá ennek terepe az összes lebegőpontos összeadás, amelyeket 2 órajel alatt képes végrehajtani, amivel maga mögé utasítja az összes konkurens AMD és Intel processzort.
- Az MB (Media B) egység a szorzó utasításokat kapja, amelyek közül a 32 bites Single Precision szorzásokat 3, a többit 4 órajel alatt hajtja végre, így ezen a területen is a többi gyártó megoldásai előtt, illetve velük fej-fej mellett van. Érdekesség továbbá, hogy képes a lebegőpontos FMA-számítások kezelésére; mivel azonban tervezése idején még nem álltak készen az ezt kihasználó utasításkészletek, így ezt a képességét csak a nagy bonyolultságú x87-utasítások (szinusz, koszinusz stb.). számolására szolgáló belső mikrokód-algoritmusok használják ki. A összes Media A és B által kezelt lebegőpontos SIMD művelet végrehajtása 128 bites, ahogyan az integer SIMD műveletek is 128 bites végrehajtókat kaptak. Támogatott utasításkészletei az MMX, SSE, SSE2, SSE3, valamint tartalmazza az Intel-féle virtualizációs megoldást és az x64 végrehajtási környezet támogatását is.
Külön érdemes megemlíteni az L1 utasításcache olvasásánál alkalmazott elágazásbecslő logikákat: nem véletlen a többes szám, mivel a tervezőgárda nem kevesebb mint 8 ilyen egységet épített be a processzorba, amelyek különféle szempontok szerint értékelik az aktuális szituációt, és egyfajta "szavazásos" módszerrel döntik el mindig, hogy a következő órajelben a CPU mely címről kiindulva folytassa az utasítások végrehajtását.
A processzort 64 kB méretű, 16 utas csoportasszociatív L1 adatcache-sel látták el, valamint 1 MB méretű, ugyancsak 16-utas L2 másodszintű tárral. Ezek exkluzív felépítésűek, azaz ugyanazt az adatok csak egyikük tartalmazza. Rendhagyó módon kezeli a Nano az adat-előbetöltéseket: a nagy valószínűséggel használt adatokat közvetlenül az L1D-be tölti be, viszont a nagyobb bizonytalansággal rendelkező spekulációknak egy külön 64 x 64 byte-os Data Prefetch cache-t tart fenn, így nem írja felül a cache-ekben tárolt "értékes" adatokat.
A fenti képen jól látható, hogy az out-of-order végrehajtásért felelős részek (MOB, Scheduler, ROB, Retire) mekkora területet foglalnak el.
Megszokhattuk a VIA-tól, hogy sokszor olyan, jövőbe mutató tulajdonságokat halmoz fel processzoraiban, amelyek a konkurenseknél csak később jelennek meg: ilyen pl. volt az AES (titkosítás) korai támogatása, illetve a Nanokban már megtalálható hardveres véletlenszám-generátor. Teljesítményben viszont jóformán mindig az Intel és az AMD mögött jártak.
A cikk még nem ért véget, kérlek, lapozz!