Hajde sad svi sa ETF-a navalite, stvari su malo napredovale od kad ste vi to ucili
🙂
Iako se fetch/decode stepen vodi kao deo pipeline-a ipak on to bas i nije u klasicnom smislu jer instrukcijski cache nije pre njega nego
izmedju njega i execution core-a.
Pogledajte dijagram:
The pipeline of the Intel NetBurst microarchitecture contains:
• an in-order issue front end
• an out-of-order superscalar execution core
• an in-order retirement unit
The front end supplies instructions in program order to the out-of-order core. It
fetches and decodes IA-32 instructions. The decoded IA-32 instructions are
translated into micro-operations (μops). The front end’s primary job is to feed a continuous stream of μops to the execution core in original program order.
The
out-of-order core aggressively reorders μops so that μops whose inputs are ready (and have execution resources available) can execute as soon as possible. The
core can issue multiple μops per cycle.
The retirement section ensures that the results of execution are processed according to original program order and that the proper architectural states are updated.
Obratite posebnu paznju na podebljane delove teksta. Dakle, instrukcije se:
1. fetch-uju, dekodiraju i transliraju u uop-ove i salju u Trace cache. Nema nikakvnog zastoja ovde. Procesor ima konstantan priliv uop-ova za izvrsavanje.
2. OOO izvrsno jezgro agresivno rearanzira uop-ove da bi se izvrsili prvo oni koji imaju spremne ulaze i izvrsne resurse.
3. OOO izvrsno jezgro moze da zavrsi vise uop-ova u jednom ciklusu.
mcekovic, necu ti popustiti da si jos toliki i da si bos po glavi
🙂 -- ne traje svaka instrukcija 30 taktova. Pitao sam jednog od inzenjera iz Intela svojevremeno o latency/throughput situaciji i execution portovima kod P4 procesora i evo sta mi je odgovorio:
Yes, there are still execution ports, they're just "different" then what they were on P3. If I recall correctly,
on P3 the ports were actual queues. If an instruction was executing on Port 1 for example, then no other instruction could use any of the units behind that Port.
On P4, the ports are just groupings. So, even if an instruction is using one of execution units behind the "port", another instruction that needs another execution unit can still issue. There is a queue in front of each of the groupings, so if you have too many instructions that require the same grouping and one of the instructions is long latency (like a divide), then you can stall as a result.
Meditirajte malo nad svim ovim sto sam napisao, a ja odoh da spavam pa se vidimo sutra -- ako treba postovacu vam jos detalja i primera
🙂