jak-funguje-procesor-amd-fx-bulldozer-v-detailu
Novinka Jak funguje procesor AMD FX (Bulldozer) v detailu

Jak funguje procesor AMD FX (Bulldozer) v detailu

Z. Obermaier

Z. Obermaier

12. 7. 2011 11:34 14

V další dnešní novince vám ukážeme, jak funguje první osmijádrový procesor od AMD (Bulldozer).

Reklama

O Bulldozeru a procesorech AMD FX se nyní hodně hovoří, ale málokdo skutečně ví o čemu mluví a jak vše v procesoru funguje. Po unikátním článku o funkci Turbo Core 2.0 se dnes podíváme na funkci jader a vysvětlíme jednou provždy, zdali je procesor AMD FX osmijádrový nebo čtyřjádrový. Tím začněme.

Jak funguje procesor AMD FX (Bulldozer) v detailu
i Zdroj: PCTuning.cz

Procesory Intel architektury Sandy Bridge jsou pouze čtyřjádra, fyzicky jsou totiž na "die" čipu pouze čtyři jádra. Funkce Hyper-Threading nijak nezvyšuje počet fyzických jader, jen využívá stávající obvody procesoru jež se během normální činnosti "flákají" a zatíží je. Ano, pro Hyper-Threading je nutná speciální logika uvnitř procesoru a stojí za ní blíže nespecifikovaný počet tranzistorů navíc. Vůči velikosti samotného výpočetního jádra jde ale o nárůst plochy o 10-20 procent. U architektury Sandy Bridge má procesor fyzicky čtyři výpočetní jádra, každé má vlastní L2 cache a L3 je sdílená. Fyzická jádra jsou čtyři, logických pak osm. Nárůst výkonu Hyper-Threadingu se nedá přesně říci, záleží na vytížení jader a aplikaci. Někde je přínos větší (aplikace tolik nevytíží pipeline a zbývá více zdrojů pro HT). Průměrně se jedná o nárůst výkonu do 20-ti procent v určitých aplikacích. Najdou se ale i aplikace kde se HT zapínat přímo nevyplatí. Pokud totiž aplikace vytíží procesor natolik, že mu nezbude už žádná rezerva pro HT, může být výsledek naopak horší nebo s mizernou efektivitou.

Naproti tomu procesor architektury Bulldozer (obrázek nahoře), má fyzicky osm výpočetních jader. Že jsou umístěná ve čtyřech blocích po dvou se sdílenou L2 cache a dalšími obvody je už věc návrhu, fyzicky je ale jader osm. I AMD označuje procesor jako "první nativní osmijádro". Všech osm jader je pro systém transparentní a aplikace neví zdali je L2 cache nebo FPU sdílená, je jí to s prominutím jedno. Pokud někdo tvrdí, že jádra nejsou v modulu plnohodnotná, není to pravda - jsou. Každé z osmi má k dispozici L2 i L3 cache, záleží už jen na efektivitě přidělování prostředků. A v tom je právě trik jež vám dnes popíši ... jak totiž docílit co nejvyššího výkonu, když je zde jasná penalizace výkonu pokud budou obě jádra v modulu zatížená? - AMD na to šlo fikaně ... všechna čest!

Jak funguje procesor AMD FX (Bulldozer) v detailu
i Zdroj: PCTuning.cz

Pokud zatížíte jedno jádro v systému, zatíží je jakékoliv ze sudých jader procesoru, na obrázku jsem označil červeně. Můžete si ve správci úloh hrát jak chcete, ale stále se zatíží vždy jen sudé jádro v modulu i když ručně vyberete liché! Operační systém může procesoru "přikazovat" co chce, ten ale ví své a zátěž vždy přehodí na sudé jádro. To ještě samo o sobě není nic zajímavého ... ale co když zatížíme dvě jádra? - Které se zatíží? - Jádro "1" v prvním modulu? - Podívejte se.

Jak funguje procesor AMD FX (Bulldozer) v detailu
i Zdroj: PCTuning.cz

To je překvapení. Pokud jsou zatížena plně dvě jádra, zatíží se jako druhé opět sudé jádro v druhém modulu. To nám říká, že výkon obou threadů bude maximální, oba thready mají k dispozici "své" výpočetní jádro s celou L2 cache, s celou FPU jednotkou a nemusí se o výkon s druhým jádrem dělit. Co ale když zatížíme další jádro nebo dvě.

Jak funguje procesor AMD FX (Bulldozer) v detailu
i Zdroj: PCTuning.cz

 

Jak funguje procesor AMD FX (Bulldozer) v detailu
i Zdroj: PCTuning.cz

Pokud jste to odhadli takto, máte bod. Pokud procesor architektury Bulldozer zatížíte čtyřmi thready, jsou aktivní všechny čtyři moduly a v každém druhé jádro. V tuto chvíli mají všechny čtyři thready k dispozici maximální výkon modulu jen pro sebe. Žádné jádro se nemusí o sdílené komponenty dělit v bloku s tím druhým, které je pravděpodobně v C-state C6, tedy vypnuté. Není totiž potřeba a spoří to energii. Nejvyšší efektivitu má procesore AMD FX v aplikacích jež využijí maximálně čtyři thready (typicky hry?). Daleko vyšší bude i frekvence díky Turbo Core než o více aktivních jader. Tuto situaci jsem simuloval pomocí správce a programem s možností volit kolik jader zatížíte. V praxi se bude snažit Windows neustále zátěž "rozházet" i na čtyři zbylá jádra. Procesor se tomu ale usilovně brání a sám se snaží o efektivní rozložení viz horní obrázek.

Jak funguje procesor AMD FX (Bulldozer) v detailu
i Zdroj: PCTuning.cz

Co se ale stane v případě plného zatížení všech jader, nebo více než čtyř? - Zatíží se samozřejmě i lichá jádra viz poslední obrázek. V tuto chvíli výkon na jádro a efektivita klesá. Sdílení prostředků plně zatížených jader bude náročné a dojde ke znatelné ztrátě výkonu modulu. Pokud bych to měl odhadnout, nebude už modul (jedno jádro) pracovat s efektivitou 100 procent jako v případě čtyř threadů, ale třeba s 80-ti procenty, ovšem se dvěma jádry (2x80). Efektivní výkon tedy klesne na jádro, na modul se ale zvýší o předpokládaných 60 procent. Pokud tedy srovnáme se Sandy Bridge kde Hyper-Threading přináší benefit +20 procent, tento systém by mohl přinést minimálně 60 procent výkonu navíc, někde třeba i více (nebo méně, dle aplikace a vytížení).

Jaká je výhoda tohoto řešení? - AMD ušetřilo spoustu prostoru na "die" procesoru, jelikož paměti cache vždy zabírají nejvíce místa. Záleží tedy jen na efektivitě sheduleru v přidělování prostředků oběma jádrům v modulu. Paradoxně se totiž můžeme dostat do situace, že výkon v nějaké hodně náročné aplikaci (masivně využívající cache a FPU), což jsou serverové úlohy databází a podobně, bude pěkně škálovat s méně než čtyřmi thready, ale po překročení zatížení čtyř jader bude strmě klesat dolů. Tato situace je pozorovatelná i v běžné praxi, kdy u aplikací jež nezatíží procesor tolik (Cinebench R10) výkon škáluje solidně, ale u náročnější úlohy (Cinebench R11.5) už to není tak ideální, o tom ale až někdy příště.

UPDATE: Zkusil jsem Cinebench R11.5 počítat čtyři jádra ve dvou modelových případech: Poprvé jsem nařídil procesoru ať využije první čtyři jádra ve dvou modulech (jádra 0,1,2,3). Pak jsem čtyři thready rozhodil do jader po modulu (jádra 0,2,4,6). jaký byl výsledek. Rozdíl byl 17 procent. Sdílení prostředků v jádru má dopad na výkon +/- 17 procent. Tedy jsem se s odhadem 80-ti procent moc nespletl ...

Reklama
Reklama

Komentáře

Nejsi přihlášený(á)

Pro psaní a hodnocení komentářů se prosím přihlas ke svému účtu nebo si jej vytvoř.

Rychlé přihlášení přes:

Google Seznam
Reklama
Reklama