2012. május 31., csütörtök

Gyorskeresés

Főszponzorunk

ASUS

Útvonal

Tesztek  »  Processzor rovat

Phenom II: az AMD mentőövet dob önmagának

Cikkünkből megismerhetjük az újításokat, és az új processzor teljesítményére is fény derül.

Hirdetés

Gyorsítótárak, memóriaelérés

Lassan már szokásunkká vált, hogy egy-egy új architektúra megjelenését követően az alkalmazástesztek előtt szintetikus benchmarkok segítségével is feltérképezzük az újonnan kifejlesztett lapkák tudását. Az átlagfelhasználó számára ezek a benchmarkok, illetve az ezekben elért eredmények nem jelentenek szinte semmit, mégis, érdekesség gyanánt egy-egy új architektúra felbukkanását követően érdemes egy kicsit lejjebb ásni, hogy lássuk, mi történt, mit alkottak a mérnökök az elmúlt évben (években), mely területek az újdonság gyengéi vagy erősségei, és mi következik mindebből. Cikkünk ezen része két felvonásra osztható fel, először a memóriavezérléssel és a cache-hierarchiával foglalkozik (ez a kettő nehezen választható ketté), majd az utasításvégrehajtás kapja a főszerepet.

Az összes most következő teszt 3,2 GHz-es processzorórajel és a Phenomok esetében 2 GHz-es északi híd mellett futott le. A késleltetési időket ábrázoló grafikonról kiderül az, amit már az AMD is állított, hogy a Phenom II-ben található harmadszintű gyorsítótár késleltetése/elérési ideje alacsonyabb lett, egészen pontosan 0,7 ns-mal, ami 3,2 GHz-es órajelet feltételezve ~2 órajelciklust jelent (ezt állítja az AMD is), azaz a végső érték ~23 órajelciklus, ami még mindig jóval magasabb, mint a Core i7-es 13 ciklusnyi ideje.

Az L1D és az L2-es gyorsítótár sebessége semmit sem változott az elődjéhez képest, ami nem is volt meglepő, hiszen az órajel (3,2 GHz) és az elérési idő (lásd fentebb) is változatlan.

Az L3-as gyorsítótárak összevetésében már látszik, hogy az AMD alkotott valamit, de az a 2 ciklusnyi különbség a valós használatban nem jelent túl sokat. Olvasásban az új Phenom kicsit lassabb volt a réginél (mérési hibahatáron belüli az eltérés), írásban már 7,5%-ot, másolásban pedig 7,7%-ot javult az eredmény, ami a különböző memóriabenchmarkokban látszik, de használat közben aligha érződik. A Core i7 harmadszintű gyorsítótára továbbra is vetélytárs nélküli.

Ezek után a memóriaelérési, azaz késleltetési időkkel foglalkoztunk. Elsőként az Everest benchmarkjával teszteltünk, ez lineáris elérési időt mér. A benchmark azt méri, hogy a memóriaolvasási parancs kiadásától számítva mennyi idő telik el, míg az adat megérkezik a regiszterekbe. Az AMD azt állítja, hogy az új Phenom memóriavezérlője gyorsabb, mint a régié: az Everest első tesztje ezt meg is erősíti, hiszen csökkent a memória elérési ideje, bár ez a különbség minimális (4%), hibahatáron belüli érték.

Az Everest lineárisan végzett méréseinek következő állomása a memóriaműveletek sebességének lemérése, egyetlen szálon. A Phenom II X4 itt már jól látható, "valódi" előnyre tesz szert elődjével szemben, igaz, olvasásban itt is csak 1,7%-ot, de írásban és másolásban 30%-ot, illetve 11%-ot javult az eredmény, ami komoly optimalizációra utal.

Ennél talán izgalmasabb téma a nem lineáris, azaz véletlenszerű memóriaelérés. A processzor számára szükséges, memóriában található adatok nem csak lineárisan helyezkedhetnek el, ezért a véletlenszerű memóriaelérés lemérése is kulcsfontosságú. A problémát a legjobban egy LATER nevezetű programmal tudtuk illusztrálni, az alkalmazás a memória véletlenszerű elérését méri kétféle módon: egyrészt az L1-es cache-t is bevonva a munkába, másrészt az L1-et kivonva a forgalomból. A továbbfejlesztett K10 ebben az esetben is jelentős előnyre tesz szert elődjével szemben, az elérési idők a 100-120 ns-os tartományban mozognak a régi Phenom 140-170 ns-os értékeihez képest. Úgy tűnik, hogy a memóriavezérlőn elvégzett javításokat sikerült szemléletesen kimutatni, a lineáris és a véletlenszerű memóriaelérés is csökkent, azaz javult.

Az előzőleg tárgyalt programok sajnos csak egy szálon mérnek, ezért keresnünk kellett egy olyan benchmarkot, mellyel több szálon is képesek vagyunk a memóriaelérés tesztelésére. Végül megtaláltuk a Rightmark Multi-Threaded Memory Testet, amit pontosan ennek a kérdésnek a megválaszolására fejlesztettek ki. A programmal az operációs rendszer által látott összes logikai processzoron külön-külön végeztethetünk el írást vagy olvasást. Be kell állítani a tesztelés során használt memóriablokkok méretét, a művelet típusát (olvasás, írás, szoftveres prefetchcsel olvasás, non-temporal írás) és a használt regiszterek típusát, ezek a következők lehetnek:

  • 64 bit MMX: MOVQ reg, [mem]; MOVQ [mem], reg és MOVNTQ [mem], reg
  • 128 bit SSE2: MOVDQA reg, [mem]; MOVDQA [mem], reg és MOVNTDQ [mem], reg

Beállítható a szoftveres prefetch hossza is. Mi 64 MB-os blokkokat alkalmaztunk (tehát a 64 MB-ot osztottuk annyi felé, ahány szálon folyt a tesztelés, két szálon 32 MB, négy szálon 16 MB), és 128 bites regisztereket használtunk. A program lényege tehát a több szálon végzett konkurens memóriaelérés tesztelése, amivel kimutatható a rendszerbuszt használó processzorok ilyen téren való gyengélkedése, illetve az integrált memóriavezérlők fejlettsége.

Az egyszerű olvasási teszt, mint neve is mutatja, egyszerűen a memóriaolvasást méri, az L2 cache is beleszól az eredménybe, az így kapott érték pedig az „átlagos”, mindennapi memóriaolvasást jelképezi.

Az olvasás szoftveres prefetchcsel egy szoftveres prefetch segítségével méri az olvasást, ezzel megkerülve az L2 cache-t valóban csak a maximálisan elérhető memóriaolvasási sávszélességet méri. Ez a módszer a processzor OoO-végrehajtását segíti ki azáltal, hogy előre betölti azokat az adatokat, amikre később szüksége lesz a végrehajtó egységeknek, így nem alakulnak ki függőségek és várakozási sorok, tehát gyorsul az adatfeldolgozás. A mindennapi életben ilyennel nem nagyon találkozunk.

Az írás egyszerű lineáris írást mér, az L2 cache sebessége is számít, az eredmény pedig amolyan átlagos, mindennapi írási sebességnek felel meg.

A non-temporal írás a cache-hierarchiát megkerülve, külön erre a célra bevezetett utasítások segítségével mér maximálisan elérhető, tiszta memóriaírási sávszélességet. Ez a módszer nagy mennyiségű adat kiírása során a cache olvasási/írási kényszere alól menti fel a processzort (ugyanis nem kell állandóan felülírni a cache-cellákat, lásd fentebb), így az írási sebesség drasztikusan megnőhet a sima íráshoz képest. A valóságban ezzel sem nagyon találkozni, csak speciálisan olyan feladatoknál, amikor erre van szükség.

Először az egyszálas tesztek futottak le, ami nagyon hasonló az Everest tesztelési metódusához, ez pedig az eredményeken meg is látszik, hiszen a sorrend nem változott. A Deneb gyorsabb, mint az Agena, de a számok nem túl meggyőzőek, hiszen még a Penryn is versenyben van szűkös kis rendszerbuszával.

A két szálon végzett mérés már izgalmasabb, mert valóban arra ad választ, amire kíváncsiak vagyunk, ráadásul asztali környezetben is előfordulhat egy ehhez hasonló szituáció. Lényegében azt látjuk, mint az előző tesztekben, az AMD architektúrájának új implementációja picit gyorsabb, mint a régi, az eltérés 13-16%-os, ráadásul végre az is látszik, hogy a Penryn alatt futó rendszerbusz kezd szűk keresztmetszetté válni. A sima olvasási/írási teszt itt a mérvadó, hiszen ez áll közelebb az átlagos felhasználáshoz.

A négy szálon végzett memóriatesztnek már inkább csak a szerverek világában van jelentősége, de mindenképpen érdekes látni az egyes architektúrák teljesítményét. Végül is újabb meglepetés már nem ért minket, nincs új a nap alatt, a Phenom II-es memóriavezérlője ténylegesen, bizonyítottan gyorsabb és jobban teljesít az "első verziós" memóriavezérlőnél. Tekintetbe véve a K10.5 forgalomba kerülésének idejét, dicséretre méltó, hogy az AMD-nek sikerült – ha csak ennyit is, de – javítania a processzoron ilyen rövid idő alatt.

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

Azóta történt

Előzmények

Főszponzorunk

ASUS

Gyártók, szolgáltatók

Hirdetés

Copyright © 2000-2012 PROHARDVER Informatikai Kft.