Jak funguje procesor AMD FX (Bulldozer) v detailu
autor: Z. Obermaier , publikováno 12.7.2011

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

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

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

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

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

Jak funguje procesor AMD FX (Bulldozer) v detailuPokud 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

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 ...



Tagy: AMD  AMD FX  Bulldozer  8 Core  SMT  Hyper-Threading  Sandy Bridge  
 
Komentáře k článku
RSS
Pouze registrovaní uživatelé mohou přidat komentář!
12.7.2011 11:18:44   195.212.29.xxx 330
Děkuji za podrobné vysvětlení architektury a principu fungování.
Teď už jenom počkat na recenzi
12.7.2011 11:47:20   94.113.197.xxx 611
co to je, kde je formátování?
12.7.2011 11:48:32   213.81.156.xxx 718
hmm ja by som to nedefinoval na parne alebo neparne jadro v module.. ja by som to definoval na "kvalitnejsie" jadro v module.. a mozno presne toto teraz robia v kazdom procaku a preto ten odklad
12.7.2011 14:08:48   213.81.156.xxx 37
vysvelti mi niekto s cim tak velmi nesuhlasite??
12.7.2011 12:10:48   193.165.178.xxx 54
Nečíslují se jádra náhodou od nuly?

Obě jádra v modulu jsou rovnocenná, takže je úplně jedno, jestli počítat bude to liché nebu sudé.
12.7.2011 12:30:15   83.208.27.xxx 110
to ano,ale chápej to asi tak, že pokud vynutíš přes taskmanager "core 0 a core1" pro nějakou aplikaci, tak ti nepoběží v jednom modulu (dvě jádra), jak by jsi předpokládal, ale ve dvou modulech (jedno a jedno jádro z každého modulu).
12.7.2011 12:28:28   212.24.151.xxx 1236
Rozbalit komentářPříspěvek byl automaticky zabalen pro velké množství negativních hlasů.
12.7.2011 15:11:23   90.176.156.xxx 180
Nešlo vždy o to mít nejlepší výkon v často používaných věcech? Osobně hodnotím tenhle přístup jako dobrý nápad, přece jenom zatím je nejčastější využití do 4 jader, tak proč neudělat zde maximální výkon, pro největší počet lidí?
12.7.2011 13:13:18   212.197.6.xxx 90
Egouš napsal:
Poslední odstavec mluví za vše ....
Hlavně mít dobré výsledky v masově používaných benchmarcích......

BTW ano jsem Intelista :-D a teď do mne ;)


Bohužiaľ z veľkej časti máš pravdu, ale robia to tak jeden aj druhý. Klasický prípad je "steroidový" krátkodobý (cca 20 s) jednovláknový "turbo výkon" jedného jadra u Intel CPU s nakumulovaného nevyužitého TDP :-).
12.7.2011 13:50:39   93.91.246.xxx 222
Situaci ohledně BD jsem sledoval už od prvních střípků, prezentací AMD a konferencí. Návrh čipu jde ruku v ruce s tím, že hlavní moto je ať má CPU skvělý poměr výkon/watt. Sice AMD může Intel ještě tak rok dva válcovat, ale honba za frekvencí a počtem jader s HT nejde do nekonečna a tento modulární přístup je podle mě začátek nové éry moderních CPU. Dovedu si v pohodě představit do roku 10 jádro a pak klidně i 12 či 14 jádro od AMD do 3 let. Intel v budoucnu dle mě vydá něco jako HT2.0, které prakticky okopíruje od AMD (nemám nic proti tomu)
13.7.2011 11:53:58   213.192.34.xxx 45
Jsi mimo, Intelovo HT je podstatně jinde a vychází z jiné (i když z části podobné) myšlenky. Intelu šlo s HT o maximální využití všech částí jádra - některé části procesoru se "flákaly" a čekaly, až se uvolní registr, tak prostě v Intelu zdvojili potřebné registy (+ vymysleli řídící logiku k tomu). Tohle pseudoHT, co předvádí AMD, kdy mám 8 jader, ale nikdy je všechny nemůžu využít naplno, je krok dost vedle a s efektivitou nemá vůbec nic společného - v podstatě si to ani nezaslouží nazývat osmijádrem, když čtyři z nich nikdy nemohou při plné zátěži fungovat plnohodnotně (protože nemají k dispozici svou cache). Další odvážné tvrzení, že Intel má na válcování AMD jen rok až dva je k smíchu úplně, protože Intel s další generací procesorů uvede v praxi 3D tranzistory, což je v podstatě revoluce, a pokud s tím AMD nezačne něco efektivně dělat už teď, tak bude za ty dva roky právě ona, kdo silně spláče nad "výdělkem" (což bych si rozhodně nepřál, konkurence je potřeba). Z toho plyne, že poměr výkon/watt není prvořadé řešení, řešení je v první řadě výkon/takt (=efektivita; Intel toto předvedl kdysi s P4, a poučil se z toho dokonale), tam AMD ztrácí dlouhodobě a bez toho nikdy nemá šanci Intel ani dohnat, natož předstihnout.
12.7.2011 16:26:04   85.71.45.xxx 40
D3VL3R napsal:
co to je, kde je formátování?
zformátováno
12.7.2011 22:58:48   46.254.70.xxx 310
Rozbalit komentářPříspěvek byl automaticky zabalen pro velké množství negativních hlasů.
13.7.2011 12:43:56   90.176.0.xxx 71
Brad2 napsal:
Jsi mimo, Intelovo HT je podstatně jinde a vychází z jiné (i když z části podobné) myšlenky. Intelu šlo s HT o maximální využití všech částí jádra - některé části procesoru se "flákaly" a čekaly, až se uvolní registr, tak prostě v Intelu zdvojili potřebné registy (+ vymysleli řídící logiku k tomu). Tohle pseudoHT, co předvádí AMD, kdy mám 8 jader, ale nikdy je všechny nemůžu využít naplno, je krok dost vedle a s efektivitou nemá vůbec nic společného - v podstatě si to ani nezaslouží nazývat osmijádrem, když čtyři z nich nikdy nemohou při plné zátěži fungovat plnohodnotně (protože nemají k dispozici svou cache). Další odvážné tvrzení, že Intel má na válcování AMD jen rok až dva je k smíchu úplně, protože Intel s další generací procesorů uvede v praxi 3D tranzistory, což je v podstatě revoluce, a pokud s tím AMD nezačne něco efektivně dělat už teď, tak bude za ty dva roky právě ona, kdo silně spláče nad "výdělkem" (což bych si rozhodně nepřál, konkurence je potřeba). Z toho plyne, že poměr výkon/watt není prvořadé řešení, řešení je v první řadě výkon/takt (=efektivita; Intel toto předvedl kdysi s P4, a poučil se z toho dokonale), tam AMD ztrácí dlouhodobě a bez toho nikdy nemá šanci Intel ani dohnat, natož předstihnout.


Asi jste toho moc o architektuře jednoho modulu bulldozer nenastudoval. Jinak by jste nemohl plácnout takovou hloupost jako, že při zatížení všech jader nefungují moduly plnohodnotně. Kde jste byl s touto hláškou, když Intel uvedl Conroe se sdílenou L2 cache mezi oběma jádry? Nikdo ty čipy nenazýval neplnohodnotná dvoujádra. Tady je myšlenka sdílené L2 cache v modulu podobná, ale AMD šlo ještě dál a udělali i sdílenou FPU, která dokáže obsloužit obě jádra (2x128 bit) nebo jedno v případě AVX (256 bit). Když loni AMD prezentovali architekturu modulu Bulldozer, tak uváděli, že jeden modul je směřován proti jednomu jádru Intelu s Hyperthreading.
A co se týče efektivity architektury, tak jsi úplně mimo. Sám autor píše, že se pouze o něco sníží přepočtená efektivita na jedno jádro, ale celková efektivita čipu stoupne. Je jasné, že IveBridge nasadí s 22 nm novou laťku, ale to je jen z důvodu lepšího výrobního procesu. S efektivitou architektury to přímo nesouvisí. Uvedu příklad: Kdyby Intel udělal die-shrik jádra Prescott na 32 nm, tak by se spotřeba snížila, ale efektivita architektury by byla stejná.

Redakce si vyhrazuje právo odstranit neslušné a nevhodné příspěvky. Případné vyhrady na diskuze(zavináč)pctuning.cz

97 čtenářů navrhlo autorovi prémii: 40.5Kč Prémie tohoto článku jsou již uzavřené, děkujeme za váš zájem.
Tento web používá k poskytování služeb soubory cookie.