Aktuality  |  Články  |  Recenze
Doporučení  |  Diskuze
Grafické karty a hry  |  Procesory
Storage a RAM
Monitory  |  Ostatní
Akumulátory, EV
Robotika, AI
Průzkum vesmíru
Digimanie  |  TV Freak  |  Svět mobilně

Intel Core - pohled na architekturu II

3.5.2006, Eagle , článek
Intel Core - pohled na architekturu II
Po včerejším povídáním o dekódování a Out-of-Order zpracování se dnes zaměříme na výpočetní část, práci s pamětí, prefetch, termální management a konečně i na spekulativní vykonávání instrukcí. Věděli jste, že Core je silně zaměřen na multimediální aplikace?
Cache

Procesory Conroe, Woodcrest a Merom, první generace čipů architektury Core, budou obsahovat dvě úrovně pamětí cache.


Procesor obsahuje sdílenou L2 cache

Cache první úrovně je, jako již tradičně u všech moderních návrhů, rozdělena na datovou a instrukční část. Z datové části jsou, jak jsme již hovořili, zásobovány výpočetní jednotky a do ní jsou naopak zapisovány výsledky pomocí jednotek pro práci s pamětí umístěných na Issue Portech 3 - 5.

Instrukční L1 cache má stejnou velikost jako cache datová - 32 kByte. Je umístěna přímo před dekodéry a její datová šířka činí 160 či více bitů (přesný údaj není znám). To je poměrně významné navýšení oproti procesoru Pentium M, u nějž to bylo 128 bitů. Toto rozšíření je zde z důvodu přidání dalšího dekodéru - nový hardware má samozřejmě vyšší nároky na objem dat. Hovořit o rychlosti instrukční cache nemá příliš smysl, neboť její práce má vysloveně sekvenční (burst) charakter.

Všechny cache paměti jsou spojeny do unifikované cache paměti druhé úrovně (ta tedy obsahuje jak data, tak také instrukce). Velikost této L2 cache je u první generace čipů 2 nebo 4 MB, přičemž u druhé generace má vzrůst na 3, resp. 6 MB. Latence není známa, dá se ale očekávat, že bude stejně jako u Yonahu kolem 14 hodinových cyklů. To je sice o 40 % pomalejší než první a druhá generace Pentií M (jádra Banias a Dothan), na druhou stranu je to stále cca. dvojnásobná rychlost oproti NetBurstu. Nižší latence by také zřejmě znemožnila čipu dosahovat frekvencí nad 3 GHz, proto tak "pomalé" hodnoty.

Mezi L1 a L2 cache platí non-inclusive a zároveň non-exclusive hierarchie. To znamená, že L2 cache může obsahovat některá data / instrukce obsažené v L1 cache. Zároveň zde ale není požadavek na duplikování všeho. Tento režim je ze všech nejlepší, neboť poskytuje dobrý výkon a zároveň neplýtvá datovým prostorem.

Inclusive systém znamená, že celý obsah L1 cache je duplikován v L2 cache. Kvůli tomu je reálná úložná kapacita obou cache menší než jejich součet (L2 je takto virtuálně snížena o velikost L1). Výhodou je, že jakmile procesor potřebuje obměnit data / instrukce v L1 cache, jednoduše její obsah zahodí a načte data z L2 (jinými slovy data přepíše těmi z L2 a vymění záznamy o tom, co je v L1 uloženo). Stačí tedy jedna operace a to čtení z L2 a zápis do L1. Inclusive se hodí zejména pro procesory s malou velice rychlou cache první úrovně, kde jsou často potřeba výměny dat.

Exclusive systém pracuje na principu zcela odděleného obsahu. Co je v L1 cache, není v L2 cache. Celková kapacita je proto součtem velikostí L1 a L2 cache. Tento systém má ale jednu velkou nevýhodu - je totiž pomalý. Pokud procesor potřebuje vyměnit data v L1 cache (což není vůbec atypické), musí nejprve obsah L1 zapsat do L2. Celá akce tak vyžaduje nejprve čtení z L1 a zápis do L2 a následně čtení z L2 a zápis do L1, tedy dvě operace. A to nějakou dobu trvá. Navíc pokud se v L2 stále nachází pozměněná data, která čekají na zpožděný zápis do paměti RAM, je nutné počkat, až budou tyto data zapsána. Cache systém se tak může v některých situacích stát závislým na velmi pomalých pamětech RAM. Protože je pak fakticky vzato zápis vynucen ihned a nikoli zpožděně, hrají významnou roli latence pamětí RAM (... které u dnešních pamětí nejsou o nic lepší než u mnoho let starých SDRAM první generace). Exclusive se proto hodí zejména pro případy, kdy L1 cache je poměrně velká a zároveň velikost L2 je omezena.


Dual-core a sdílení informací

Protože procesory Conroe, Woodcrest a Merom jsou dvoujádrové, vystává zde otázka sdílení výsledků mezi jednotlivými jádry. Pokud totiž jedno jádro změní určitá data, musí tato změněná data být přístupná i jádru druhému. V situaci, kdy druhé jádro bude požadovat stejnou adresu v paměti, na kterou se odkazuje zápis dat z výpočtů prováděných prvním jádrem, a tato data zde nebudou, dostane se druhé jádro do tzv. stall, tedy pozastaví výpočty. Tím výrazně klesne výkon.

Problém sdílení je natolik závažný, že v programech, kde dvě programová vlákna sdílí data na každém kroku, může být dvoujádrový procesor při využití obou jader neskutečně pomalý. Než se totiž sdílená data přesunou k druhému jádru, může mít první jádro hotové výpočty obou vláken.


Fotografie čipu - dvojice jader je k sobě orientovaná zrcadlově

Core má na problém sdílení dat mezi jádry hned dvě odpovědi. Prvním je unifikovaná L2 cache obsahující dva porty, kdy každý je připojen k L1 cache jednoho jádra. To tedy znamená, že L2 cache je mezi oběma jádry sdílená. Pokud jedno jádro zapisuje nějaké výsledky do paměti RAM, tyto výsledky se předtím zapíšou do paměti L2 cache, kde čekají na zpožděný zápis (režim write-back). Mezi tím, co čekají, je může použít jádro druhé.

Druhým způsobem, naprostou novinkou architektury Core, je možnost přímého přenesení obsahu mezi datovými L1 cache přes vnitřní sběrnici k tomuto účelu navržené. Tento systém umožňuje, aby obě jádra sdílela obsah nejčerstvějších informací a to i bez zápisu do (relativně pomalé) L2 cache. Intel zatím nezveřejnil, jak dlouho přenos trvá a kolik dat je takto možné přenést (obecně se očekává jeden záznam, tedy velikost 64 byte), v každém případě to bude určitě rychlejší než výměna přes L2. Core se tak stane čipem s nejrychlejší výměnou dat mezi dvěma jádry.

Ještě rychlejší přenos existuje mezi dvěma vlákny zpracovávanými dvěma virtuálními jádry procesorů NetBurst s HyperThreading. U něj totiž slouží k výměně rovnou L1 datová cache, která je mezi virtuálními jádry sdílena. HyperThreading ale z principu nemůže dosahovat výkonu dvou fyzických jader, natož když je omezen dnes již zastaralou architekturou NetBurst.