MultiCore - nová cesta

25. 1. 2006 07:00    Rubrika: Technologie    Autor: Jakub Pavlis

Protože výrobci dnes již nejsou kvůli fyzikálním omezením materiálu schopni dosahovat stále vyššího výkonu oblíbenou cestou zvyšování frekvence procesorů, byli nuceni vydat se jinudy: zvyšováním výkonu pomocí paralelního zpracování. Tudy šly u PC až doposud pouze drahé multiprocesorové systémy; s příchodem dualcore se ale situace začíná razantně měnit. V čem je tedy výhoda dualcore a jak se projeví (či neprojeví) při praktickém používání?

MultiCore - nová cesta

Jak již bylo řečeno, multiprocesoring a s ním spojené paralelní zpracování je zde již dlouho. Můžeme se s ním setkat nejen ve drahých serverech, ale třeba i v profesionálních pracovních stanicích především firmy Apple. Jak serverové aplikace, tak MacOS programy mají mnohem delší tradici používání více procesorů a také pro to mají upravené programy. U běžných PC se ale jedná o novinku, a proto se na ní a její přínos podíváme poněkud podrobněji.

Pro pořádek si velmi stručně vysvětleme několik základních termínů:

  • Multiprocesoring je používání více procesorů v jednom počítači. Může jít opravdu o několik zvlášť usazených jednotek, řešení obvyklé v serverech, nebo o vícejádrové systémy, což je případ dnešních procesorů AMD Athlon 64 X2 nebo Intel Pentium D a Core Duo, které jsou uloženy v jediném pouzdře a zasazeny do jediné patice. Jde tedy o hardwarovou záležitost.
  • Thread je instrukční vlákno. Jedná se o posloupnost příkazů, které se zpracovávají postupně a v drtivé většině případů se nedají rozdělit. Velká část současných programů pracuje s jedním threadem.
  • Multithreading je běh více instrukčních vláken v systému v jediném okamžiku. Při použití multiprocesoringu nejde o žádnou komplikaci, ale existuje i (jednojádrový) procesor, který je v ideálním případě schopný zpracovávat dva thready najednou: Pentium 4 s technologií Hyper-Threading. Jeden fyzický procesor se tváří jako dva logické, což umožňuje obecný fakt, že procesory jsou vybaveny zvláštními jednotkami pro výpočty s celými čísly a pro výpočty s desetinou čárkou (floating point). V ideálním případě dokáže Pentium 4 HT jedním vláknem (threadem) zatížit jednu jednotku a druhým jinou. Pakliže ale obě vlákna (thready) potřebují stejnou jednotku, musí se střídat - tak jako u běžných CPU. Protože však operační systém vidí dva procesory, tak jim automaticky přiděluje dva thready. Neplánované střídání threadů plynoucí z tohoto "nedorozumění" může vést k mírnému poklesu výkonu celého procesoru. Největším přínosem Prentia 4 HT je fakt, že přinesl (byť nedokonalý) multithreading do běžných PC a dal programátorům důvod dělat běžné aplikace s více vlákny.
  • Proces je softwarová záležitost a nemá nic společného s hardware zvaným procesor. Jedná se o spuštěný a do paměti zavedený program. Spouštíte-li jeden program vícekrát, je to stále jeden program, ale několik procesů.
  • Multiprocesing se často plete s multiprocesoringem, ale nemá s počtem hardwarových součástí nic společného. Jde o schopnost operačního systému provozovat současně více běžících procesů. Windows samy mají řadu procesů, některé viry a spyware se spouští také jako proces.
  • Multitasking je běh více programů v jednom systémovém prostředí. Každý program má vlastní instrukční vlákno (některé programy i více vláken), které procesor musí počítat, takže se neustále přepíná mezi jednotlivými vlákny, ale počítá vždy jen jedno. Například ve Windows pustíte najednou hudbu, webový prohlížeč, instant messanger a ještě třeba antivirus a mailový klient. Vzhledem k nízké náročnosti uvedených aplikací (v řádu jednotek procent výkonu) a k faktu, že Windows jsou multitaskingovým operačním systémem, se nejedná o nic zvláštního. I současné jednojádrové procesory si s tím hravě poradí díky svému výkonu.


dualcore v podání AMD Opteronu

Současné operační systémy jsou plně multitaskingové (Windows od verze 95) a podporují i běh více threadů, a tak mohou v řadě případů z multiprocesoringu významně těžit. Vyžaduje to ale několik podmínek. Většina programů až dosud byla psána jednothreadovým způsobem, a vzhledem k tomu, že ve většině běžných použití nepřetěžují ani jednojádrový systém, je další jádro "navíc". Hlavní výhodou je rychlejší odezva při otevírání aplikací, ta je daná krátkodobým vytěžováním procesoru při načítání velkého množství dynamických knihoven (soubory .dll) a nebo nepatrné zvýšení výkonu p\xE0i plném vytížení jednoho jádra - druhé může převzít procesy běžící na pozadí.

Vícejádrový systém ukáže své přednosti až v okamžiku, kdy minimálně jedna z aplikací je opravdu zátěžová nebo v případě, že je program pro multithreading optimalizován. Především v druhém případě se rozdíl ve výkonu jedno a dvoujádrového systému propastně mění. Do první kategorie patří z běžně používaných programů především kompresní software, hry, HD video nebo šifrovací programy. Do kategorie druhé spadá v současnosti pouze software psaný pro víceprocesorové systémy - tedy převážně profesionální grafické a modelovací programy. Například hry s podporou využití více threadů, a tak i více procesorů, se začínají na scéně teprve objevovat - například Quake 4.

Taková je softwarová stránka věci.

Vícejádrové procesory po stránce hardware.
Největší řada změn oproti běžným CPU s jedním jádrem pochopitelně proběhla z hlediska základní fyzické konstrukce procesorů. Jedná se hlavně o využití vyrovnávací paměti a o energetický management; jádra jako taková vycházejí zatím ve všech případech ze svých jednojádrových předchůdců - Core Duo z Pentia M, Pentium D z Pentia 4 a Athlon 64 X2 logicky z Athlonu 64.

Při využití L2 cache jsou možné dva přístupy a oba mají své výhody a nevýhody. Buď bude každé jádro disponovat vlastní vyrovnávací pamětí, nebo je necháme celou paměť sdílet. Separátní cache v podstatě umožňuje dvojnásobné zrychlení při přístupu, protože obě jádra mohou najednou zapisovat nebo číst. Nevýhodou je ale situace, kdy jsou na sobě oba zpracovávané thready závislé a jedno jádro musí čekat, než do jeho separátní L2 cache doputuje přes sběrnici procesoru (v nejhorším případě i jen FSB) výsledek z paměti druhého jádra.

AMD a Intel se u desktopů pustili každý jiným směrem. Zatímco Athlon 64 X2 má sdílenou L2, Pentium D má 2 separátní cache a defacto se tak jedná o "dvě slepená Pentia 4". Mobilní Core Duo již má cache sdílenou, což je považováno za technicky pokročilejší řešení.

Řízení spotřeby dvoujádrových procesorů je složitější než u běžných. Nevýhodou je zatím to, že dnešní stolní generace vícejader neumí snížit pracovní frekvence jednotlivých jader nezávisle na sobě. Intel Core Duo však je po této stránce vybaveno velmi dobře a umí v případě nízkého vytížení celé jedno jádro vypnout a nebo vypínat nevyužité části L2 cache.

Zapomenout namůžeme ani na rozdílné náklady na výrobu. Protože obě jádra nových procesorů se vyrábí najednou, je jejich plocha větší, čímž se sníží efektivní využití křemíkových waferů, na které se jádra „tisknou“. Zvýší se odpad, a tak i výrobní náklady a tedy i koncové ceny. Rozdíl ale není tak dramatický především u případů se sdílenou L2 cache. Paměť L2 totiž již dlouhou dobu tvoří podstatnou část plochy procesoru (okolo 70%), takže příchod druhého jádra neznamená dvojnásobnou plochu celého čipu.


obrázek jader a L2 od Intelu

Jak bude vypadat vývoj procesorů v budoucnosti?
Protože fyzikální zákony obejít nemůžeme, čas jednojádrových proceserů je sečten. Jistě, ještě se udrží, zprvu i jako výkonnější řešení pro jednothreadové programy, nějakou budoucnost jim dá i další posouvání výrobní technologie, vždyť Intel už míří k 45nm. Frekvence se ale již už téměř nemají kam posouvat. V budoucnu budou jednojádrová CPU hrát roli levných lowendových řešení, navíc budou stále ztrácet díky příchodu programů optimalizovaných pro multithreading. Zato můžeme očekávat poměrně rasantní zvyšování počtu jader. Do roku 2008 budou standardem dvě, potom ale jejich počet rychle poroste - již teď se pracuje na procesoru Yorkfield s osmi jádry a 12MB sdílené cache. V multicore je tedy (blízká) budoucnost a jedná se o jeden z nejzásadnějších přelomů v osobních počítačích za poslední desetiletí; změna směru zvyšování výkonu z frekvence na paralelismus s sebou přinese i postupnou změnu směru vývoje běžného softwaru.



Jakub Pavlis, Josef Šonka

Technologie

Diskuse