AMD Kaveri APU: hozott is, meg nem is

A Steamroller újításai

Míg a Bulldozert követő Piledriver modulok változásai nagyrészt ráncfelvárrásnak voltak tekinthetőek, addig a Kaveriben debütáló Steamroller (magyarul gőzhenger vagy úthenger) modulban az AMD mérnökei látványos változásokat eszközölnek az alapkoncepcióhoz képest, főként a modulok mindkét integer magja által használt megosztott erőforrásokban. Új utasításkészletként csak az Intel Ivy Bridge-ben debütált, az FS és GS szegmensregiszterek user módú kezelését lehetővé tevő utasítások kerültek fel a palettára, így a későbbi oldalakon közvetlenül összevethetőek a szerkezeti változásokból adódó teljesítménybeli eltérések a korábbi megoldásokhoz képest.

  • Az L1 utasításcache (L1I) 64 kB-ról 96-ra hízott, ezzel párhuzamosan asszociativitása 2-ről 3 utasra növekedett, javítva a találati arányt is a kapacitásbővülés mellett. Hozzáférési sebessége ezzel szemben csökkent, csupán 2 órajelenként olvasható ki belőle egy 32 bájtos blokk, ellentétben a korábbi 1 blokk/órajel tempóval.
  • Ahogy korábbi elemzésünkben már részleteztük, a Bulldozer microarchitektúra főként a megosztott részegységekről szól, melyeken egy modulon belül két integer mag osztozik. A Steamroller ilyen tekintetben visszalép egyet a standard felépítések irányába. Míg a Bulldozer és a Piledriver modulok egyetlen közös, 4 utasítás széles utasításdekódert kaptak, amely két szál végrehajtása esetén órajelenként vált két mag között, addig a Steamrollerben már mindkét mag egy-egy saját, 3 utasítás széles fordítóval rendelkezik. Ez jelentősen javítja a kétszálas végrehajtás hatékonyságát, mivel a két mag az eddigi, órajelenkénti átlagosan 2-2 utasítás helyett már 3-3 utasítással etethető, ami 50%-os növekedésnek felel meg; abban az esetben viszont, amikor csak egy szál fut az adott modulon, a korábbi változatokban egy mag kisajátíthatja a dekóder négy utasítás/órajelnyi kapacitását, a Steamroller viszont ilyenkor már csak 25%-kal kevesebb, órajelenként három utasítással láthatja el a szálat futtató magot.
  • A Steamroller modul mindkét magja kapott a dekóder után elhelyezett, egyenként 40 uop méretű, már lefordított utasításokat tartalmazó uop cache-t, amely a kisméretű ciklusok futását hivatott gyorsítani és hatékonyabbá tenni: ha a teljes ciklus elfér ebben a gyorsítótárban, akkor lefutása közben nincs szükség sem L1I olvasásra, sem pedig az utasításdekóder közreműködésére; ez némileg ellensúlyozza az L1 utasításcache lecsökkent tempóját. Ehhez hasonló apró, 28 uop méretű tároló az Intel processzoraiban a Core 2 Duo generációt követő Nehalem (azaz első i7) sorozatban jelent meg, hogy aztán a Sandy Bridge termékvonallal 1536 uop méretűre növekedjen.
  • Jelentős szerkezeti változásokat láthatunk a két programszál által közösen kihasznált, megosztott SIMD/lebegőpontos egységben, a Flex FP-ben is. A korábbi modulok négy végrehajtó egységgel operálnak, amelyek közül kettő alkalmas a lebegőpontos, kettő pedig az egész számokkal dolgozó műveletek végrehajtására – utóbbiakat az AMD az ábráin MMX-nek jelölte, de ez a kifejezés valójában az összes, egész számmal dolgozó MMX/SSEx/AVX utasítást lefedi. A Steamrollerben viszont 3 végrehajtó fogadja az utasításokat:
    • a pipe 0 és pipe 1 képes végrehajtani a az összes lebegőpontos számítási utasítást
    • a pipe 0 és pipe 2 kaphatja a szorzás kivételével az összes egész számokon dolgozó MMX/SSEx/AVX számítást
    • az egész számos szorzásokat és a számformátum-konverziókat a pipe 0 fogadja
    • a memóriaíró és a vektorelem-átrendező utasítások végrehajtása a pipe 2 feladata
    • a SIMD byte <-> word <-> dword <-> qword konverziók és a permutációk a pipe 1-ben hajtódnak végre

A fent részletezett, nagyléptékű módosításokból elsősorban a több programszállal dolgozó programok profitálnak, bizonyos esetekben akár az egyszálas teljesítmény rovására. Ennek következményeként a korábbi modulok többszálú végrehajtási teljesítménye alacsonyabb órajel – és ezzel együtt alacsonyabb fogyasztás – mellett érhető el, viszont ez az órajelcsökkentés további hátránnyal járhat az egyszálas programokra nézve. Látható tehát, hogy az AMD mérnökei a programszálak párhuzamos végrehajtására helyezték a hangsúlyt a Steamroller tervezésénél, ami jól illeszkedik az erre a lépcsőre előre beharangozott "Greater Parallelism" (~nagyobb párhuzamosítás) koncepcióba.

További kisebb változások is történtek a modulokban, ezek a következők:

  • A megszokott módon továbbfejlődött az elágazás-előrejelzés, nagyobb jóslási pontosságot biztosítva: megnövekedett munkaterületei mellett kiegészítették egy ciklus-előrejelzővel, amely pontosabban azonosítja be a ciklusokat és jósolja meg lefutási számukat.
  • Mindkét integer mag órajelenként 2-2 memóriaírási utasítás végrehajtására képes, megduplázva ezzel a korábbi modulok kapacitását e téren: ezzel az L1 adatcache írási és másolási sebessége több, mint kétszeresére növekedett.
  • 24-ről 32 bejegyzésre nőtt a magonként olvasási sorok és 44-ről 48-ra az írási sorok mérete.
  • A modulokhoz tartozó L2 cache késleltetése csökkent, a korábbi modulok 20 órajel feletti tartományából 19 órajelre. További változás, hogy az L2 egy része kihasználatlanság esetén dinamikusan kivonható a munkából, e lekapcsolással csökkentve a fogyasztást.


[+]

A cikk még nem ért véget, kérlek, lapozz!

  • Kapcsolódó cégek:
  • AMD

Azóta történt

Előzmények

Hirdetés