
Cycles/Instruction Pipelining
Ahoj,
v dokumentaci k ATMega64 se na straně 10 píše:
Instructions in the program memory are
executed with a single level pipelining. While one instruction is being executed, the next instruction
is pre-fetched from the program memory. This concept enables instructions to be executed
in every clock cycle.
-resp. že využívá single level pipelining, a že je tudíž CPU schopen vykonat 1intrukci/takt(cyklus).
Myslel jsem, že vykonání instrukce s skládá ze 4 až 5 fází, přičemž na každou z nich je potřeba 1 cyklus. V takovém případě bychom tedy mohli postupně dosáhnout až na 1 instrukci/cycle, ale to bychom museli mít pipeling tolika vrstvý, kolik máme fází instrukce. To co je napsané v dokumentaci, mi nedává smysl.
+ jsem někde četl, že se používal i vícevrstvý pipelining, než bylo fází vykonání instrukce, je to technicky možné a jak se to může vyplatit(nemám na mysli superskalární(paralelní) vykonávání)?
Díky za objasnění
https://www.mouser.com/ds/2/268/atmel-2490-8-bit-avr-microcontroller-atmega64-l_da-1065502.pdf
AVR procesory od Atmelu majú two-stage, single level pipeline design. To znamená, že vykonanie jednej inštrukcie pozostáva len z dvoch krokov (fetch a execute), a keďže má (jednoúrovňovú) pipeline, tak dokáže vykonať jednu inštrukciu v každom takte.
O pipeliningu s viacerými vrstvami než je fáz vykonávania inštrukcií som nepočul, ale v tejto oblasti sa zasa až tak moc neorientujem.
Super, díky
Předpokládám tedy že dekódování instrukce a write back se děje včetně těch dvou fází. Trochu těžší k představení si.
O tom pipelingu jsem o tom četl myslím u Pentium 4, ale možná si to pletu s něčím jiným...