L2 cache pamět
Pamět L2 slouží jako pamět mezi operační pamětí počítače a pamětí L1. L2 pamět má dnes okolo 512kB (u novějších procesorů 1024kB). A je pomalejší než L1. Původně byla součástí základní desky, ale od procesoru Pentium je na procesoru.U procesorů Pentium 4 extreme edition se používá ještě L3 cache pamět. Ta propojuje operační a L2.
L1 cache pamět
Pamět běžící na rychlosti procesoru. Je mezi L2 a procesorem. Velikost je většinou 16 kB až 128 kB. Přičemž je rozdělena na 2 části: pamět na instrukce a pamět na data. Tato pamět má veliký vliv na výkon procesoru (znatelné hodně u procesorů AMD).Front side bus FSB
Front side bus - systémová zběrnice spojující procesor a operační pamět. P Pracuje až na 800 Mhz (P4). U procesorů Athlon 64 (FX) nahrazena technologii Hypertransport, která zvyšuje propustnost a snižuje čekací doby.Pipeline
Nebo-li zřetězené zpracování instrukcí vychází ze skutečnosti, že zpracování každé instrukce procesorem lze rozdělit do pěti základních fází:- PF (Prefetch): výber instrukce: dalsí zpracovávaná instrukce se bere bud z pameti RAM, nebo z vyrovnávací cache pameti.
- D1 (Decode1): dekódování instrukce: urcí se délka a typ instrukce
- D2 (Decode2): výpocet adresy: urcí se adresa operandu, se kterými instrukce pracuje
- EX (Execution): provedení intstrukce: vlastní provedení instrukce
- WB (Write Back): zápis výsledku: zapísí se výsledky zpracované instrukce
T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8 | T9 | T10 | |
---|---|---|---|---|---|---|---|---|---|---|
PF | I1 | I2 | ||||||||
D1 | I1 | I2 | ||||||||
D2 | I1 | I2 | ||||||||
EX | I1 | I2 | ||||||||
WB | I1 | I2 |
T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8 | T9 | T10 | |
---|---|---|---|---|---|---|---|---|---|---|
PF | I1 | I2 | I3 | I4 | I5 | I6 | I7 | I8 | I9 | I10 |
D1 | I1 | I2 | I3 | I4 | I5 | I6 | I7 | I8 | I9 | |
D2 | I1 | I2 | I3 | I4 | I5 | I6 | I7 | I8 | ||
EX | I1 | I2 | I3 | I4 | I5 | I6 | I7 | |||
WB | I1 | I2 | I3 | I4 | I5 | I6 |
Při zřetězeném zpracování však vyvstává problém v okamžiku, kdy některá z instrukcí způsobí skok. V tomto okamžiku je nutné provést tzv. pipeline flush, tj. vyprázdnění fronty. Předzpracované instrukce totiž vůbec nebudou prováděny, protože chod programu bude pokračovat na místě, kam byl uskutečněn skok. Od tohoto místa se tedy začne opět plnit fronta instrukcí.
Procesor, který má právě jednu frontu pro takové zřetězené zpracování instrukcí, se nazývá skalární procesor.
Superskalár
Neustálé zvyšování frekvence bylo při 486kovém způsobu vykonávání instrukcí nepříliš efektivní. Jak se zvyšovala frekvence, tak také rostly požadavky na přísun dat. Procesory byly stále výrobně drahé, proto neměly příliš mnoho vyrovnávací paměti cache, a tak v extrémních případech dvojnásobná frekvence mohla znamenat, že procesor pouze dvojnásobné množství hodinových cyklů čekal na data z paměti, která byla stejně rychlá bez ohledu na frekvenci procesoru. Naopak v jiných, výpočetně náročných případech procesor často "makal" naplno, ale i tak to nebylo moc rychlé. Zvyšovat frekvenci také nešlo do nekonečna.Po určité době někoho napadlo, že by možná nebylo od věci umístit do procesoru více stejných výpočetních jednotek a začít provádět výpočty paralelně, čímž by se v některých případech výkon značně zvýšil. Intel toto učinil v procesoru Pentium. I ten je z dnešního pohledu poměrně primitivní, namísto jedné jednotky pro výpočet celých čísel (ALU - Arithmetic Logic Unit) má dvě. Instrukce i tak vykonává v předem daném pořadí, jen místy vykoná dvě po sobě jdoucí instrukce vedle sebe ve stejný okamžik (každou v jiné ALU jednotce). Procesory, které mají více pipeline(tedy i více ALU) se nazívají superskalárové.
Out-of-order a spekulativní vykonávání instrukcí
Protože vykonávání instrukcí v určeném pořadí mělo určitá slabá místa ve využití výpočetních jednotek, zavedl Intel v procesoru Pentium Pro out-of-order execution (zpracování instrukcí mimo pořadí). Procesor vnitřně pracuje s malým množstvím instrukcí zvaných microOPs, nebo také jen OPs (jedná se o RISC jádro), kde na začátku pipeline jsou instrukční dekodéry - ty přijímají instrukce a vytvářejí z nich OPs - instrukce pro vnitřní RISCové jádro. Uvnitř si jádro organizuje OPs podle potřeb, a provádí tak instrukce mimo programátorem stanovené pořadí... v mezích bariér daných závislostí jednotlivých instrukcí. Nárůst výkonu je proti in-order způsobu často extrémní. Nevýhodou ale je, že takto navrhnutý čip je již velmi složitý a může také obsahovat velmi mnoho chyb.Branch logic
U zpracování mimo pořadí a spekulativní vykonávání instrukcí se objevuje stále problém v případě, že prováděná instrukce způsobí skok. V ten moment je opět nutné provést pipeline flush a pokračovat ve zpracování na místě, kam byl skok proveden. Aby k temto situacím docházelo co možná nejméně, má procesor Intel Pentium zabudováno tzv. dynamické předvídání skoku (dynamic branch prediction), pomocí kterého se podle dosavadního chování programu snaží odhadnout, zda při dalším průchodu skoková instrukce skok způsobí nebo ne. K této činnosti Pentium používá paměť označovanou jako BTB (Branch Target Buffer), v níž jsou uchovány poslední instrukce, které způsobily skok, spolu s dvoubitovou informací, jež určuje dosavadní chování těchto instrukcí. Podle hodnot techto bitu je také dána předpověd, zda instrukce skok způsobí či ne. Instrukce, která způsobila skok, je uložena do BTB spolu se dvěma bity, jejichž hodnoty jsou rovny 1. Tyto hodnoty při příštím průchodu přes tuto instrukci signalizují předpověd, že skok bude. Pokud skok skutečně byl, hodnoty bitu zůstanou nezmodifikovány. Pokud byla předpověd mylná a skok nebyl, jsou bity nastaveny na hodnotu 10, která opět signalizuje, že skok bude. Podle toho, zda skok skutecně následuje nebo ne, jsou pak příslusným způsobem bity modifikovány a jejich hodnota signalizuje předpověd skoku.Některé procesory jsou navrženy tak, aby vykonávaly obě větve po podmínce s tím, že jednu z nich po vyhodnocení výsledku podmínky zapomenou.