Jadro
Jadro Nehalema je z veľkej časti prevzaté od predchádzajúcej architektúry Core 2. Už to je veľmi výkonné, no často sa "flákalo" a zmeny v architektúre sa sústredili predovšetkým na tento problém.Pozrime sa však najprv na samotné jadro:
Tento diagram popisuje jedno procesorové jadro, v Bloomfield čipoch sú takéto štyri a okrem tohto aj ďalšia časť nazývaná ako un-core. Execution engine, teda časť jadra vykonávajúca výpočtové operácie, nezaberá ani len jednu tretinu plochy jadra, zvyšok je logika out-of-order plánovania (vykonávanie inštrukcií mimo poradia zadaného v programe kvôli lepšiemu využitiu jadra), ďalšia 1/3 je L1 a L2 cache a posledná časť patrí predikcii, usporiadaniu a stránkovaniu pamäte. Je teda zrejmé, vďaka čomu je Intel Atom tak malý – tam sa jedná o in-order architektúru.
Okolie jadra, alebo ako to nazýva Intel – Un-core, pozostáva z masívnej L3 cache, pamäťového rodiča, novej zbernice QPI (Quick Path Interconnect) a I/O logiky (Input/Output).
Nehalem je stavaný ako modulárna architektúra, podľa potreby bude možné pridať ďalšiu QPI zbernicu (pre viacprocesorové serverové systémy na priame prepojenie medzi čipmi), zvýšiť alebo znížiť počet jadier (až do 8 pre servery resp. 2 pre low-end desktop a mobilné počítače) alebo dokonca integrovať grafické jadro. Vtedy sa už ale v podstate nebude dať hovoriť o procesore ale skôr o SoC (System on Chip). Grafické jadro však nemá byť založené na chystanom Larrabee ale má byť modifikáciou jadra súčasných čipov v G45.
Tu vidieť smerovanie Intelu – viac jadier a zvýšenie integrácie.
Jednotka Front-end, ktorá slúži na získavanie (fetch) a dekódovanie inštrukcií má 4 dekodéry (tri pre jednoduché a jeden pre zložité inštrukcie), teda táto vlastnosť ostala zachovaná z architektúry Core 2. Procesor môže teda spracovávať až 4 tzv. micro-ops (malé povely, ktoré vzniknú rozložením celej inštrukcie) zároveň, no u Core 2 procesorov bolo toto často nevyužité. Práve na plné vyťaženie sa pri návrhu Nehalemu kládol veľký dôraz, teda žiadne ďalšie rozširovanie sa na tomto mieste nekonalo.
Už u Core 2 architektúry bola zavedená operácia tzv. Macrofusion, keď sa dvojica x86 inštrukcií "spojila" a ďalej sa spracovávala iba ako jedna. V určitých prípadoch tak došlo k zvýšeniu výkonu ako aj zníženiu spotreby.
U procesorov Nehalem sa táto funkcionalita rozšírila o niekoľko ďalších inštrukcií ktoré môžu byť takto spojené:
Okrem týchto sa však pridáva po prvý krát aj podpora macrofúzie 64-bitových inštrukcií, zatiaľ čo u Core 2 to bolo možné iba pre 32-bitové. 64-bitový softvér tak môže na Nehalem-e bežať o niečo rýchlejšie.
Mierne vylepšenie sa dostalo aj jednotke LSD (nie, nejde o žiadnu psychotropnú látku :-) ) – teda Loop Stream Detector. LSD slúži na detekciu stavu, keď CPU vykonáva v programe slučku (opakujúcu sa časť kódu, cyklus). Ak sa takýto stav zistí, inštrukcie sa "ťahajú" priamo z LSD a predchádzajúce časti čipu sa jednoducho vypnú. Zníži sa tak spotreba, ako aj riziko chybnej predikcie (ušetrí sa čas).
Na rozdiel od Core 2 architektúry je u Nehalma LSD posunutý za dekódovaciu jednotku, takže sa môže pri detekcii slučky v programe vypnúť aj táto časť. LSD teda neuchováva inštrukcie ale už samotné micro-ops.
Pri zmenách Core architektúry pre nový Nehalem inžinieri Intelu prišli na spôsob, ako vylepšiť už aj tak vynikajúci Brach predictor (predpovedanie vetvenia programu, skoku). Nejde ale o žiaden magický trik, jednoducho bol pridaný Branch predictor druhej úrovne. Ten je síce pomalší, no má objemnejší buffer pre ukladanie štatistík vetvení a preto má lepšiu hĺbku analýzy resp. "pozná" väčšiu históriu vetvení. Môže tak včas "opraviť" chybnú predpoveď a zabrániť tak väčším zdržaniam. V bežných aplikáciách sa to však pravdepodobne prejaví len veľmi málo (ak vôbec), no výhoda Branch predictora druhej úrovne sa preukáže pri aplikáciách s rozsiahlou veľkosťou kódu – ako napríklad pri databázach.
Efektivita predikcie je zvýšená aj upravením Return Stack Buffer-a (jednotka, ktorá sleduje kde v pamäti má CPU pokračovať po skončení vykonávaní niektorej funkcie).
Výkonná časť jadra (Execution engine) zostala v podstate nezmenená oproti Core 2, zvýšila sa však kapacita niektorých dátových štruktúr, vrátane tzv. inštrukčného okna (množina micro-ops, ktoré sú spracovávané v pipeline procesora, platí že čím väčšie okno – tým vyšší možný paralelizmus operácií):
Out-of order inštrukčné okno teraz pojme až 128 micro-ops, čo je o 33% viac ako u predošlej architektúry Core 2 vychádzajúcej z mobilného čipu Merom (96 micro-ops). V súvislosti s tým sa zväčšili aj iné jednotky ako napr. buffer-y a Reservation Station (posiela micro-ops priamo do výkonných jednotiek, (execution units)).
Tieto jednotky tu boli už aj pred Nehalem-om, no problém bol ten, že boli jednoducho málo "zásobované" (pomalá FSB, pamäťový radič v NorthBridge, vysoké latencie,...). S príchodom integrácie pamäťového radiča do CPU, znovuzavedením Hyper Threding-u či novou zbernicou QPI sa tento problém odstraňuje, no architektúra Core bola už natoľko dobre pripravená, že ju netrebalo pre Nehalem príliš radikálne upravovať.
Okrem druhej úrovne Branch predictor-a sa u Nehalem-a objavuje aj druhá úroveň TLB - Translation lookaside buffer. TLB je rýchla cache, ktorá má na starosti mapovanie virtuálnych a fyzických pamäťových adries. Využitie, opäť, hlavne v serverovom prostredí.
Veľkou zmenou prešla Cache.
Kapacita cache 1. Úrovne, teda L1 cache, zostáva nezmenená – 64kB (32kB dátová, 32kB inštrukčná cache). L1 je však o jeden cyklus pomalšia ako u Core 2 – 4cykly vs. 3 cykly. Odhad Intel-u je, že výkon kvôli tomuto klesne o 2 až 3%.
L2 cache bola u posledných Core 2 čipov veľmi veľká a zdieľaná medzi jadrami. Dvojjadrové čipy mali 6MB, štvorjadrové 12MB. U nehalem-u sa však podobne ako u konkurenčného Phenom-a objavuje cache v celkovo troch úrovniach. L2 cache nových Intel procesorov je teraz iba 256kB veľká (pre každé jadro) ale pomerne rýchla (10 cyklov).
Malá L2 cache môže mať niekedy dosť veľký vplyv na výkon aplikácií, predovšetkým hry ťažili z veľkej a rýchlej L2 cache u Core 2.
Cache L3 je posledná pamäť pred pamäťou RAM a je zdieľaná pre všetky jadrá. U dnes testovaných štvorjadrových čipov je veľká 8MB, neskôr sa zrejme dočkáme aj modelov s väčšou resp. menšou kapacitou, v závislosti od počtu jadier či výrobnej technológie.
Rozdiel oproti L3 cache u AMD procesorov je, že L3 cache Nehalem-a je inkluzívna. To znamená, že dáta ktoré sú v L1 a L2, sú zapísané aj v L3. Výhoda takejto štruktúry spočíva v tom, že ak CPU hľadá nejaké dáta v L3 cache a nenájde ich, je okamžite jasné, že nebudú tieto dáta ani v L1 a L2 cache ostatných jadier. Ušetrí sa tak čas, ktorý by sa strávil prehľadávaním cache vyššej úrovne u susedných jadier.
L1 a L2 cache sa týka aj ďalšia zmena, ktorá súvisí so spotrebou. U týchto dvoch úrovní cache je použitý výrobný proces 8 tranzistorových SRAM pamäťových buniek. Tento krok prinesie oproti 6-tranzistorovému dizajnu hlavnú výhodu v podobe nižšieho napätia a teda aj zníženej spotreby. Nevýhoda je mierne zväčšená celková fyzická veľkosť, možno aj preto nie je touto technikou vyrobená aj 8MB L3 cache – bolo by nutných veľa tranzistorov a podstatne viac priestoru.
Cache pamäť u Core i7
Cache pamäť u Core2 Quad
Pridaných bolo aj sedem nových SIMD inštrukcii pod súhrnným názvom SSE 4.2. Tie sú trocha odlišného zamerania ako SSE 4.1 a hovorí sa im aj Applications Targeted Accelerators. V rámci tohto konceptu tranzistory v procesore nemusia byť použité iba na univerzálne funkcie, ale aj na niektoré špecifické úlohy, čím sa zvyšuje výkon iba v určitých konkrétnych aplikáciách.
Päť nových inštrukcií akceleruje spracovanie XML súborov, ďalšie dve sú CRC32 a POPCNT.
Približne 1 milión tranzistorov Intel použil na špeciálnu jednotku na riadenie spotreby: PCU – Power Control Unit. Čiže takmer toľko tranzistorov, čo obsahoval procesor 486, je použitých iba na kontrolu spotreby – tu pôjde o niečo dômyselné.
PCU má vlastný vstavaný firmware a zbiera informácie v reálnom čase o teplote, prúde, spotrebe a požiadavkách operačného systému. Každé jadro potom dokáže dynamicky podtaktovať, znížiť mu napätie, prípadne takmer úplne odpojiť od napájacej zbernice – vtedy sa spotreba takéhoto jadra blíži takmer k nule.
Na odpojenie jadier od napájania bol vyvinutý špeciálny materiál, ktorý sa správa ako hradlo medzi napájacou zbernicou a samotným jadrom. Výhodou takéhoto riešenia priamo v CPU je, že nie je nutné nijak špeciálne upravovať napájacie obvody na základnej doske. Ďalšou nepochybnou výhodou je, že takto podtaktované/podvoltované/vypnuté môže byť každé jadro osobitne. Vďaka PCU je implementovaná aj funkcia Turbo Boost, o ktorej si povieme neskôr.
Pokiaľ ide o spotrebu, nedá sa nespomenúť pravidlo, ktorým sa Intel pri návrhu nových procesorov riadi. To spočíva v pomere 1:2 – teda pokiaľ má určitá funkcia zvýšiť spotrebu o 1%, musí pridať na celkovom výkone aspoň 2% navyše. Pokiaľ je pre akúkoľvek funkciu tento pomer horší, jednoducho sa z návrhu vyhodí, pričom je jedno ako veľmi bola dôležitá.
eXistenZ
crux2005
prepelica
A2C