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ě

Rychlost na prvním místě - pipelining v procesoru - co to je?

27.11.2000, Emil Pavelka, zpráva
Rychlost na prvním místě - pipelining v procesoru - co to je?
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.
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.