Intel Nehalem - egy újabb mérföldkő

Hirdetés

Utasításvégrehajtás

Az utasításvégrehajtással kapcsolatos különbségek feltérképezésére szintén az Everest tesztjeit vettük elő. Itt különösen érdekes lehet a Hyper-Threading használata, hiszen ezekből a tesztekből kiderül, hogy a Nehalem esetében kínról vagy áldásról van szó. Hogy az egyes eredmények hátterét megértsük, felvettük a kapcsolatot a program készítőivel.

A CPU Queen egy egyszerű, egész számokkal dolgozó benchmark, amely a processzorok elágazásbecslési képességére fókuszál, és a „nyolc királynő egy sakktáblán” feladványra épül (10 x 10-es sakktáblán). A teszt MMX-, SSE2- és SSSE3-optimalizált, és kevesebb mint 1 MB memóriát foglal le. Ebben a tesztben az elágazáskezelés képességei határozzák meg a pontszámot. Nemcsak a branch prediction táblák és a becslés pontossága, illetve a return stack mérete, hanem az is, hogy az utasításkészlet támogatja-e valamilyen módon maguknak az elágazásoknak az elkerülését (van-e CMOV vagy PABSB utasítás), illetve képes-e egyszerre párhuzamosan több bábu helyzetével számolni. A Nehalem HT nélkül éppen olyan gyors, mint a Penryn, viszont HT-vel elhúz mellőle.

A CPU Photoworxx különböző digitális fotófeldolgozási műveleteket hajtat végre a processzorral (kitöltés, forgatás, random stb.). Ez a teszt főleg a processzorok integer számolási végrehajtási egységeit dolgoztatja meg a memória-alrendszerrel egyetemben, ezért nem skálázódik olyan jól több processzormag esetén. A teszt csak alap x86-os utasításokat használ. A Photoworxx a legösszetettebb teszt, többféle méretű képpel dolgozik, sok minden számít benne, de leginkább az átlagos memóriaelérés ideje a döntő. Sokat jelentenek a jobb prefetcherek, és itt számít a legtöbbet a memória és a cache-ek hatása. A Nehalem fejlettebb gyorsítótárjainak és gyorsabb memóriaelérésének köszönhetően könnyedén veri az előző generáció képviselőit még kikapcsolt HT mellett is.

A CPU ZLib is egy integer benchmark, amely a publikusan elérhető ZLib fájltömörítési algoritmussal méri le a processzor és a memória-alrendszer teljesítményét, ez a teszt is csak alap x86-os utasításokat használ. Itt inkább a CPU sebessége, illetve képességei számítanak (dekódolás szélessége, out-of-order load támogatása, ugrásbecslés, reordering ablak mérete), mint a memória sebessége. A Nehalem HT nélkül ismét olyan gyors volt, mint a Penryn, de HT-vel 27%-ot gyorsult. Tekintetbe véve a HT megvalósításáért "felszámolt anyagköltséget" (tranzisztorszámot, ami valószínűleg igen alacsony), ez nagyon jó eredmény.

A CPU AES is egy integer benchmark, amely az AES (azaz Rijndael) adattitkosító algoritmust használja. A teszt Vincent Rijmen, Antoon Bosselaers és Paulo Barreto publikusan elérhető C kódját használja ECB módban. A benchmark alap x86-os utasításokat, és összesen 48 MB memóriát használ. Itt is inkább a CPU sebessége a fontos, illetve kiugróan az out-of-order load képesség számít (a hardveres AES támogatást leszámítva persze). A Nehalem itt is a Penryn sebességét hozza, már amennyiben kikapcsoljuk a HT-t. HT-vel 4%-kal gyorsabb.

Az FPU Julia a processzorok 32 bites (egyszeres pontosságú) lebegőpontos teljesítményét méri le a „Julia” fraktál segítségével. A benchmark kódja assemblyben íródott, és extrém mértékben használja ki az egyes AMD és Intel SIMD-utasításkészleteket (x87, 3DNow!, 3DNow!+, SSE). Az eredmények okán előző tesztünkben sokat töprengtünk, ugyanis nem értettük, hogy a K10 miért ennyivel lassabb. Végül a program készítői adták meg a magyarázatot, miszerint a Julia bench beleszalad a K8/K10-nek abba a korlátjába, hogy az architektúra nem bírja, ha cserélődnek az SSE regisztereknél az adattípusok. A Core-on ez nem gond, és emiatt gyorsabb/rövidebb kódot lehet írni.

Az FPU Mandel a 64 bites (kétszeres pontosságú) lebegőpontos teljesítményt méri le a „Mandelbrot” fraktál egyes frame-jeinek kiszámolása révén. Ez a benchmark is assemblyben íródott, és hasonlóan az FPU Juliához, kihasználja az egyes SIMD-utasításkészleteket (x87 vagy SSE2). Itt a Nehalem még HT nélkül is gyorsabb a Penrynnél. A Julia benchez képest a K10 itt azért szerepel jól (pontosabban fogalmazva nem vérzik el úgy, mint a Juliában), mert a Julia belső ciklusa egyszerre 8 pixelen dolgozik, a Mandelé viszont csak 4 pixelen, emiatt a típusváltást (int/float) kiváltó kód Mandelban rövidebb és gyorsabb az AMD CPU-kon.

Az FPU SinJulia a 80 bites (kiterjesztett pontosságú) lebegőpontos teljesítményt méri le a „Julia” fraktál módosított változatának kiszámolásával. A kód assemblyben íródott, és erősen kihasználja a trigonometrikus és exponenciális x87-es utasításokat. Míg a Juliánál a raw 32 bites lebegőpontos MUL/ADD/MOV képességek számítanak, addig a SinJuliánál a legpontosabb 80 bites mód kihajtása a lényeg, és a transzcendens utasítások (sin, cos, ex) megvalósítása. Teljes végrehajtási idő szempontjábol a sin, cos, ex sebessége a döntő, amiben egyébként a P6 leszármazottai hagyományosan gyorsabbak. A Nehalem itt majdnem kétszer gyorsabb a Penrynnél.

A szintetikus tesztekből levonhatjuk a tanulságot, miszerint a Nehalem valódi előrelépés a Core 2-höz képest. A cache-hierarchia gyorsult, a memória alrendszer jelentősen átalakult, és az integrált memóriavezérlőnek köszönhetően a kiszolgálók, illetve szerverek világában is megállja majd a helyét. Ami a futószalagot illeti, a Nehalem nem lett sokkal gyorsabb a Penrynnél, legalábbis abban az esetben, ha a Hyper-Threadinget kivonjuk az egyenletből. Ugyanakkor a HT szerves részét képezi az új architektúrának, így azzal együtt kell értékelnünk; márpedig ebben az esetben szintén jelentős fejlesztésnek lehetünk a szemtanúi. Arra nem számíthatunk, hogy a Nehalem az asztali alkalmazásokban 50-100%-kal veri majd elődjét, de a 10-30%-os előny benne van a pakliban.

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

  • Kapcsolódó cégek:
  • Intel

Azóta történt

Előzmények