Rychlost na prvním místě - pipelining v
procesoru - co to je? (Procesory, 27.11.2000 11:00,
autor "EP")
V souvislosti s uvedením Pentia 4 se hovoří o dvacetifázovém
pipeliningu. Pentium III jej mělo desetifázový. Zní to moc pěkně. Co to
ale je? Podíváme se na to takovým lidským, zjednodušeným
pohledem.
Úkolem procesoru je najít a vyzvednout data z paměti,
dekódovat instrukce, aplikovat instrukce na data a uložit výsledek do
paměti. A to pořád dokola. Když budeme předpokládat, že procesor zvládne
všechny tyto operace provést vždy v jednom taktu, pak 200 MHz bude
znamenat dvojnásobek zpracovaných instrukcí než 100 MHz. Jenže v každé
době existují technologické a ekonomické limity, zabraňující nám dostat se
přes určitou frekvenci. Takže co když je náš limit 100 MHz? Můžeme proces
zpracování rozdělit na více částí, a každou z nich potom zpracovat v
jednom taktu. Podaří li se nám rozfázovat potřebnou práci například do
deseti operací, z nichž každá bude zpracovávána v jednom taktu, můžeme
svůj 100 MHz limit obejít a získáme možnost dosáhnout 1000 MHz. To vlastně
základ pipeliningu. Zní to skvěle, i na pouzdře našeho procesoru se to
bude dobře vyjímat (těch nul… a nebo tam dáme Giga? ;-). Hlodá ve vás červ
pochyb jestli jsme si pomohli, když před tím jsme v jednom taktu zvládli
tolik co nyní v deseti? Ale ano, pomohli. Můžeme totiž zavést do
zpracování "pásovou výrobu". Přece se, zatímco bude vždy jedna jednotka
pracovat, nebudou ostatní nudit. Vstupní jednotka tedy může v každém cyklu
začít zpracovávat další úkol a ostatní ji následují. K prostojům nám tedy
dochází jen při začátku práce a na jejím konci. Takže máme jen o něco málo
méně práce odvedeno za stejný počet cyklů. Cykly jsou ale desetkrát
častější. Je tedy množství vykonané práce téměř desetinásobné? Bylo by to
moc dobré, ale i přes obecnost našeho pohledu musíme zohlednit to, že
některé instrukce jsou závislé na výsledcích jiných, ještě
nedokončených.
Aby nedocházelo k množení se čekacích stavů, používá
se předpovídání (branch prediction) těchto mezivýsledků. I když je velmi
úspěšné-asi devadesát procent, tak nám zbývá asi deset procent špatně
předpovězených hodnot, po nichž můžeme deset taktů (v našem příkladu)
označit jako neproduktivní, protečený čas. Předpovídání bývá zapotřebí pro
deset až dvacet procent zpracovávaných instrukcí. Vezmeme-li v úvahu, že
deset procent z nich je neúspěšných, což z celkového zpracovávaného objemu
potom dělá jen jedno až dvě procenta, může se to zdát zanedbatelné. Ale
ouha. U Pentia III se takto způsobená ztráta výkonu udává mezi dvaceti až
třiceti procenty. To tedy není málo. Pentium4 má dvojnásobně dlouhý
pipelining, což mu na jedné straně umožní dosáhnout vyšších frekvencí, na
straně druhé se při každé chybě v předpovídání ztratí dvojnásobné množství
pracovních cyklů. Takže i přes to, že u Intelů na předpovídacím algoritmu
jistě zapracovali, na shodné frekvenci by bylo Pentium 4 pomalejší než
PentiumIII. Jelikož se ovšem na stejné frekvenci neobjeví, tak se nejedná
o tragédii.
Nepříjemnou vlastností tohoto postupu je však to, že
budu-li něco dělat sám, potřebuji jeden stůl (dejme tomu, že jsem
úředník). Rozdělím-li si práci s kolegou – jeden z nás bude zpracovávat
finanční problémy a druhý personální, budeme potřebovat dva stoly a dvě
židle. Pentium 4 má také dvojnásobnou plochu než Pentium III. Výroba je
tedy finančně náročnější. Celá záležitost samozřejmě není tak jednoduchá
(například k eliminaci čekacích stavů se používá i OOO-Out of order
execution-zpracování mimo pořadí, při pipeliningu si lze pomoci softwarově
přeřazením instrukcí…), ale jistě je dobré mít určitou představu o čem se
hovoří,když se řekne pipelining.
DDR
paměti - jak je to vlastně s kompatibilitou (Zpráva,
Paměti) V současné době běžně
používané paměťové moduly SDRAM již svými parametry nestačí odolávat
podstatně mladším DDR pamětem, které se stále více dravěji tlačí na
trh s PC komponenty. A to i přes zvýšení rychlosti SDRAM pamětí na
standard 133 MHz (standard PC133) a dokonce některé firmy již
vyrábějí i 150 MHz moduly.