Vícejádrové procesory
Úvod Firma Intel reagovala na poptávku trhu po vyšším výkonu a rychlejší práci procesorů technologii nazvanou Hyper- Threading. Systémové prostředky procesorů jsou často nevytížené a roste mezera mezi frekvencí procesoru a rychlostí paměti, což způsobuje růst poptávky po zrychlení paměťového zpoždění (latency). Technologie Hyper-Threading způsobuje, že jediný fyzický procesor se systému hlásí jako dva logické, ale se sdílenými prostředky, čímž umožní paralelní spuštění dvou úkolů, vzrůst vytíženosti procesoru a snižuje efekt paměťového zpoždění. Díky tomu roste výkon těchto multi- threaded aplikací (aplikace s více vlákny - stupy), ale nezaniká kompatibilita se single-threaded aplikacemi.
Architektura Výkon procesoru je ovlivňován následujícími základními faktory: taktovací frekvence, ILP (instruction-level parallelism), vyrovnávací pamětí (cache). Dále to může být například spotřeba energie a velikost čipu. Růst výkonu není ale úměrný růstu těchto hodnot. Proto existují jiné cesty urychlení jako je TLP (Thread-Level Parallelism - úroveň paralelních vláken), přidání více procesorů, CMP (Chip Multiprocessing – dva procesory na jednom čipu), přepínání jednotlivých spuštěných procesů na jednom procesoru a též simultánní multi-threading, který používá technologie Hyper-Threading.
Proto jeden fyzický procesor díky technologii Hyper- Threading vypadá jako dva procesory logické, při čemž jsou sdílené prostředky a stav architektury je duplikován. Operační systém včetně aplikací naplánují své procesy a vstupy na logické procesory, jako kdyby měly více fyzických procesorů. Instrukce z obou logických procesorů jsou spouštěny současně na sdílených systémových prostředcích. Pro příklad aplikace Hyper-Threadingu u procesorů Intel Xeon způsobila pouze 5% zvětšení čipu, ale výkon podstatně vzrostl.
Z obrázku na následujícím snímku můžeme vidět, že jediný fyzický procesor uchovává duplicitní kopii architektonického stavu, který se skládá z registrů – univerzálních, kontrolních, APIC (programovatelný řadič přerušení) a některých stavových registrů. Logické procesory sdílí cache, výkonné jednotky, větvené predikátory a sběrnice. Naopak každý logický procesor má vlastní řadič přerušení nebo APIC. Většinu plochy čipu tedy tvoří samotné logické procesory.
Blokové schema Pentium 4
Hyperthreading Technologie hyperthreading zobrazená na dalším snímku umožňuje to, aby se jedno jádro procesoru mohlo tvářit jako dvě jádra a proto je možné, aby zpracovávalo dvě programová vlákna zároveň. To umožňuje zlepšit využití výpočetních částí jádra a podstatně zvýšit výkon. Bohužel v některých specifických případech naopak může výkon poklesnout.
Technologická práce Hyper-Threadingu
V dobách, kdy každý procesor měl jen jednu jednotku ALU a FPU, pak měl buďto jednu nebo jí neměl vůbec. V současnosti není tak drahé vyrábět procesory s více jednotkami ALU i FPU, takže například Pentium 4 má 3 ALU a 2 FPU. Více jednotek pak umožňuje provádět řadu výpočtů zároveň. Pokud to charakter instrukcí umožňuje, je v jednom hodinovém cyklu pracuje i několik jednotek ALU současně a naráz paralelně zpracovává instrukce jdoucí v programu za sebou. Tímto se dosahuje, jak již bylo výše zmíněno podstatného zvýšení výkonu
Pokud je zde však závislost na předchozím výsledku výpočtu, není současně zpracování možné a využití jednotek je nepatrné. Různé odhady hovoří o tom, že průměrné využití ALU a FPU je na úrovni 30% potenciálu. Idea HyperThreadingu spočívá v tom, že procesor se bude navenek tvářit jako procesory dva, přijme na vstupu dva thready (z dvou různých programů či jednoho multithreaded programu) a oba bude zpracovávat současně. Pokud budou výpočty v jednotlivých vláknech (threadech) vyžadovat různé jednotky (jeden thread ALU a druhý FPU, či každý z threadů jen jednu z dostupných ALU) a vytížení podpůrných jednotek před ALU / FPU nebude vysoké, pak dojde k výraznému zrychlení.
Je-li použitá jen jednotka ALU, pak jednotka FPU nepracuje
Je-li použitá jen jednotka FPU, pak jednotka ALU nepracuje
Pokud je možno použít současně obě jednotky, pak se jedná o ideální stav a maximální výkon.
Je-li současná potřeba použít jednu jednotku oběma vlákny, pak to nelze a musí se realizovat nejprve zpracování jednoho vlákna a poté vlákna druhého.
To proto, že procesor nemá dvojnásobný počet jednotek ALU a FPU. Při stejných požadavcích obou vláken dochází k souboji o jednotky. Obě vlákna se uvnitř procesoru musí střídat a výsledkem je, že výkon nevzroste, ale naopak, vzhledem k tomu, že je řada podpůrných obvodů sdílena, výkon poklesne. Navíc plánovač úloh v operačním systému při zapnutém HyperThreadingu obsluhuje dva procesory, což je pro něj náročnější úloha než pouze jeden procesor, takže čím složitější bude, tím více výkonu je obětováno čistě jen tomu, aby přiděloval výkon ostatním aplikacím. V praxi tak může výkon se zapnutým HyperThreadingem vzrůst o desítky procent, o stejnou hodnotu může ale i poklesnout.
Ten největší problém HyperThreadingu ale není možný pokles výkonu v řádu pár procent, ale především jeho nepoužitelnost při multitaskingu. Problém je v tom, jak plánovač operačního systému přiděluje čas procesoru jednotlivým úlohám.
Vícejádrové procesory Zaběhnuté řešení zvyšování výkonu procesorů je již na hraně. Výrobci procesorů zjistili, že výkon je možné zvýšit také tím, že se prováděný program rozloží do více vláken, které běží samostatně na různých jádrech procesoru. Tento návrh předcházel vzniku vícejádrových procesorů, nazývaných multi-core procesory. Současný trend ve vývoji procesorů je realizace vícejádrových procesorů, které mohou paralelně zpracovávat úlohy a jejich vlákna. Vícejádrové procesory jsou procesory spojují dvě a více nezávislých jader do jediného integrovaného obvodu. Vícejádrový procesor má implementován multithreading včetně multitaskingu. Multithreading umožňuje provádění několika výpočetních vláken současně, v jediném fyzickém zařízení. Každé jádro taktéž dokáže využívat různé optimalizační metody, jako jsou např. superskalární provádění instrukcí, pipelining, spekulativní vykonávání kódu nebo predikce skoků.
Procesor obsahuje rovněž technologii Intel® Dynamic Power Coordination a Enhanced Intel® Deeper Sleep s dynamickým řízením velikosti vyrovnávací paměti a dokáže napájet pouze nezbytně nutné oblasti procesoru. Dochází k úspoře energie, což je zvláště důležité u notebooků. Intel Core vychází Pentií M a novějších Core Duo. Procesor dokáže zpracovat 3 až 4 instrukce na takt. Pro urychlení provádění operací je nezbytné, aby navržený software podporoval paralelní provádění instrukcí. Pak bude mít třeba dvoujádrový procesor o 2 GHz výkon blížící se výkonu 4 GHz procesoru. V Pentiích 4 je druhé jádro oproti Pentiu D945 jen virtuální, a to pomocí technologie hyperthreading. Naproti tomu je Pentium D 945 opravdovým dvoujádrovým procesorem.
Procesory Intel Celeron D jsou vhodné do kancelářských sestav nebo domácích počítačů. Technologie Centrino Duo je využívána hlavně u notebooků a zahrnuje procesory Intel Core Duo, příslušné mobilní čipsety (Mobile Intel 945 Express) a WiFi síťovou kartu (chip) pod označením Intel PRO/Wireless 3945ABG. Kromě nárůstu výkonu je důležitá i snížená spotřeba energie a bezdrátová síťová technologie.
Dvoujádrový procesor
Dvoujádrový procesor (Dual-Core processor) je procesor obsahující dvě zcela samostatné výpočetní jednotky, nebo-li jádra. Hlavním přínosem dual-core procesorů je schopnost zpracovávat dva procesy současně. Dvoujádrový procesor se tak v podstatě chová jako plnohodnotný počítač se dvěma procesory. První generace dvoujádrových procesorů je řešena tak, že se vezmou dva současné jednojádrové procesory a spojí se dohromady. Takže teoreticky by měl mít dvoujádrový procesor na stejné frekvenci dvojnásobný výkon oproti jednojádrovému.
Core Duo Název Core 2 Duo je označení osmé generace procesorů firmy Intel ve které se využívá nové architektury nahrazující technologii NetBurst. Oproti ní má zkrácenou instrukční pipline. Je to opět architektura x86 založená na návrhu procesoru Pentium M. Díky tomu se snížila pracovní frekvence procesorů spolu se snížením ohřevu při současném zvýšení reálného výkonu. Jde o procesory s označením Core 2 Duo, Extreme, Quad, Pentium Dual-Core a Celeron (Conroe- L). Podporuje instrukční sadu SSE4 pro podporu multimedií. Tyto procesory nemají vysokou taktovací frekvenci (jen 1,80 - 3,33 GHz), protože k vysokým výkonům tak vysokou frekvenci vůbec nepotřebují. Frekvence FSB je 1066 nebo 1333 MHz.
Architektura Intel Core 2 Duo
Novinkou je zde nový způsob práce s vyrovnávací pamětí cache L2, která je jednak sdílená, při čemž si jádra mohou její kapacitu rozdělit podle potřeby.
Navíc je tu technologie SmartCache pro rychlejší spolupráci mezi jádry, které si nemusejí vyměňovat data přes FSB. Spotřeba se zlepšila, takže jádro Core 2 Duo patří k nejúspornějším procesorům. Tyto procesory mají jádro Conroe, nejnovější modely mají jádro Wolfdale, která má větší L2 cache a disponuje též podporou instrukční sady SSE4. Procesor Core Duo je optimalizován pro multithreading aplikace a multitasking. Obsahuje rovněž technologii Intel Dynamic Power Coordination a Enhanced Intel Deeper Sleep s dynamickým řízením velikosti vyrovnávací paměti a dokáže napájet pouze nezbytně nutné oblasti procesoru., čímž snižuje příkon a ohřev.
Nově navržená pipeline Procesory Core 2 Duo mají zcela nově přepracovanou pipeline, která dokáže zpracovat až 4 instrukce za jeden hodinový cyklus, předtím to byly pouze 3. Proto procesor s Core 2 Duo může být při stejné frekvenci až o 33% Výkonnější. Tato situace ale nastává pouze u kódování videa a podobných procesech s velkým počtem SSE instrukcí.
Schéma architektury Intel Core
Dekódování Podstatným způsobem oproti Pentiu M je upraveno dekódování (Front-End), které se stará o zavedení instrukcí z vyrovnávací paměti (případně paměti RAM) a jejich rozčlenění na mikrooperace (vlastně mikroinstrukce, což jsou jednotlivé základní činnosti procesoru). Tyto mikrooperace jsou v pipeline již přímo předávány k vykonání do výpočetních jednotek na jejichž základě procesor provádí výpočty.
Dekódování (Front-End) Architektura Core má k dispozici čtyři instrukční dekodéry. Tři jsou určeny pro jednoduché instrukce (např. sčítání, odčítání), které se dekódují do maximálně jedné mikroinstrukce a jeden dekodér je určen pro složité instrukce, které se řeší programově pomocí až do čtyř mikroinstrukcí. Konečný výsledek je ten, že dekódování umí dodat do paměťového vyrovnávacího registru mikrooperací místěného za dekodéry až 7 mikrooperací za takt, tj. 3 – 4 instrukce na takt.
Spojování makroinstrukcí Specialitou architektury core spojenou s Front-End částí je spojování (fúzování) makroinstrukcí (Macro-fusion). Tato technika se snaží o dekódování v programu se vyskytujících dvou instrukcí do jedné mikrooperace, která je vystihne obě. Čtyři dekodéry tak mohou za jistých okolností dekódovat až pět instrukcí - tři dekodéry jednu a jeden dvě fúzované.
Zpracování mimo pořadí Architektura Core pracuje se realizací instrukcí mimo pořadí stejně jako všechny současné procesory s pokročilým návrhem (Out-of-Order(. Umožňuje tedy zpracování instrukcí mimo v programu stanoveném pořadí tak, aby se co nejvíce využilo dostupného výpočetního výkonu. Řízení řazení instrukcí mimo pořadí následuje ihned za dekódováním. Z příslušného bufferu (vyrovnávacího registru) jsou převzaty až čtyři microoperce za hodinový cyklus a následně poslány do jednotky zodpovědné za přiřazení registru.
Řízení vykonávání instrukcí mimo pořadí
Změny v jednotkách Další změnou je změna ALU na plně 64bitovou. To proto, že procesory Pentium M měly ALU jen 32bitovou a Pentium 4 mělo ALU realizovanou spojením dvou 32-bitových jednotek. Díky tomu nová architektura poskytuje plnou podporu instrukční sadě x Navíc tyto jednotky zvládají provádění 64bitových operací za jediný hodinový cyklus, což je další zrychlení oproti dřívějším procesorům. Dalším vylepšením jsou 128bitové jednotky pro operace SSE (Streaming SIMD Extensions) a SIMD. U vektorového počítání provádí jedna microoperace operaci s dvou či čtyřčíselným vektorem.
Unifikovaná L2 cache Procesory s jádry Conroe, Woodcrest a Merom, první generace čipů architektury Core, obsahují dvě úrovně pamětí cache. Sdílená L2 cache
Vyrovnávací paměť první úrovně (cache L1) je klasicky rozdělena na datovou a instrukční část. Z datové části o velikosti 32 kB jsou obsluhovány výpočetní jednotky a do ní jsou naopak zapisovány výsledky pomocí jednotek pro práci s pamětí. Instrukční vyrovnávací paměť (L1 cache) má stejnou velikost jako datová cache L1. Je umístěna přímo před dekodéry a její datová šířka činí 32 bytů, případně i více. To je významné zvětšení její kapacity oproti procesoru Pentium M (16 bytů). Toto rozšíření je zde z důvodu přidání dalšího dekodéru. Nový hardware mávyšší nároky na objem dat.
Všechny cache paměti jsou spojeny do unifikované L2 cache (paměť druhé úrovně), která obsahuje jak data, tak instrukce. Velikost cache L2 je u první generace čipů 2 nebo 4 MB, u druhé generace má 3 nebo 6 MB. Mezi cache L1 a L2 platí, že cache L2 může obsahovat některá data nebo instrukce obsažené v cache L1. Není zde však požadavek na úplnou duplikaci. Takovýto režim je ze výborný, protože poskytuje dobrý výkon a neplýtvá datovým prostorem.
Procesor Intel Pentium D Označení procesoru Pentium D je označení dvou dvoujádrových 64bitových procesorů s architekturou NetBurst pro stolní počítače. Každý z nich má dvě jádra, dvě úplné výpočetní jednotky pracující na stejné frekvenci v jedném modulu. Jádra mají společné rozhraní pro komunikaci s čipovou sadou a pamětí. Frekvence Pentií D je od 2,66 do 3,60 GHz mající však velmi vysokou spotřebu. První procesor Pentium D s kódovým označením Smithfield (technologie 90 nm), má 2 MB L2 vyrovnávací paměti a byl uveden na trh v roce Po dalších 9 měsících byl uveden na trh procesor s jádrem Presler (65 nm) a 4 MB L2 cache. Frekvence FSB je 800 MHz, nebo 533 MHz.
Pentium D
Oba procesory mají technologii SpeedStep umožňující snížení hluku a spotřeby počítače, technologii Execute Disable Bit umožňující zabezpečení systému proti „útokům na přetečení bufferu“ a technologii Intel Extended Memory 64 umožňující použití většího objemu operační paměti pro aplikace, které to využijí.
Čtyřjádrový procesor Čtyřjádrový procesor (Quad-Core processor) je procesor slučující čtyři výpočetní jádra dohromady. Všechna jádra podobně jako u dvoujádrových procesorů pracují zcela samostatně, má tedy celkem 4 plnohodnotná jádra. Quad-core procesory jsou postaveny na 65 nebo 45 nm technologii. První firmou, která přišla na trh s čtyřjádrovými procesory, byl Intel s architekturou Core – řada Core 2 Quad. Opět zvolil pro nové procesory stejný postup, jaký byl použit již u starších Pentií. MCM (Multi Chip Module - více čipů na jedné destičce), kdy sdružuje dva dvoujádrové čipy. Tyto procesory přináší čtyři plnohodnotná jádra a špičkový výkon.
Čtyřjádrový procesor
Další událostí bylo uvedení 45 nm jádra Penryn od Intelu, kdy byly použity nové materiály na bázi hafnia a technologie kovových hradel, díky čemuž se výrazně o desítky procent snížila spotřeba. Nižší spotřeba se projevila hlavně u rychlejších modelů a čtyřjádrových procesorů, kde se u řady modelů podařilo snížit skutečnou spotřebu i o desítky wattů.
Vyrovnávací paměti u procesorů Core 2 Duo a Core 2 Quad
Intel Core 2 Quad Procesor Core 2 Quad je čtyřjádrový s 8 MB L2 cache, takt 2,40 - 2,66 GHz a s frekvencí FSB 1066 MHz. Je ale složen ze dvou dvoujádrových procesorů spojených přes FSB. Má jádro Kentsfield, což znamená, že má 2 jádra Conroe spojené přes FSB. Výhodou tohoto procesoru je velmi vysoký výkon a obrovská vyrovnávací paměť. Čtyřjádrový procesor se nejlépe využije, když to budou beze zbytku využity všechna jádra. Největší novinkou nových procesorů má být integrovaný paměťový řadič. Komunikační frekvence FSB bude 1600 MHz.
Intel Core 2 Extreme Core 2 Extreme jsou nejvýkonnější procesory od Intelu. K dispozici je jeden dvoujádrový a tři čtyřjádrové modely. Taktovací frekvenci mají od 2,66 do 3,00 GHz a frekvenci FSB 1066 nebo 1333 MHz. Dvoujádrový model má jádro Conroe a 4 MB cache L2 a čtyřjádrové modely mají jádro Kentsfield a 8 MB cache L2.
Multithreading Hlavní výhodou vícejádrových procesorů je jejich schopnost zpracovávat více výpočetních vláken najednou, tj. paralelně - multithreading. Velká část aplikací a to jak starých, tak i nových multithreading nevyužívá. V rámci programu je kompilátor optimalizován pro sled instrukcí v rámci jednoho vlákna. Proto by bylo výhodné, aby většina procesorů obsahovala jen jedno výpočetní jádro. Vícejádrové procesory nebo systémy s více procesory pak u takových aplikací nepřináší požadované zvýšení výkonu. Aplikace je optimalizována jen pro jedno jádro a další jsou nevyužitá. Jako příklad mohou sloužit některé programy psané pouze jako jeden výpočetní proces a tak nemohou využívat výkonnostní potenciál druhého jádra, např. počítačové hry.
Programy, které obsahují více vzájemně nezávislých vláken vícejádrové procesory beze zbytku využijí ke zvýšení výkonu systému. Práce s thready samozřejmě vyžaduje určitou část výkonu. Je proto potřeba zajistit vznik, zrušení, případně vzájemnou spolupráci vláken. Příkladem využití více vláken v rámci aplikace může být například rendering grafiky, náročné výpočty v rámci luštění šifer, filtry v grafických editorech, multimediální aplikace, video a zvuk a podobně. Úloha, která se skládá z více vláken (thread) může být řešena více způsoby. Například jednotlivá vlákna běží od začátku paralelně nebo se rozdělí až v průběhu.