Spoznaj, kako centralna procesna enota razume strojni ukaz: od bitnega vzorca do kontrolnih signalov in mikrooperacij.
Tri faze izvajanja programa
CPE iz pomnilnika prebere naslednji ukaz in ga shrani v Instruction Register (IR).
Krmilna enota razčleni bitni vzorec ukaza: prebere opcode, operande in način naslavljanja.
ALU ali druga funkcionalna enota izvede operacijo in rezultat shrani v register ali pomnilnik.
Kaj se dogaja v fazi Decode?
Vsak strojni ukaz vsebuje operacijsko kodo (opcode), ki določi operacijo, ter operande: registre ali pomnilniške naslove, na katerih se operacija izvede.
Krmilna enota (Control Unit) je "dirigent" procesorja. Iz dekodiranega ukaza ustvari kontrolne signale za registrsko datoteko, ALU, enoto za pomnilnik in cevovod.
Moderni x86 procesorji kompleksne ukaze prevedejo v enostavnejše interne mikrooperacije. To omogoča zgodovinsko združljivost ob hkratnem učinkovitem internem izvajanju.
V cevovodnem procesorju se fetch, decode in execute izvajajo hkrati za različne ukaze. Dekodiranje mora biti hitro in usklajeno z odvisnostmi podatkov.
Ključni pojmi
Klikni na pojem za razlago.
Ukaz ADD v praksi
ADD R3, R1, R2
Procesor dekodira opcode ADD, prebere registra R1 in R2 ter pripravi ALU na seštevanje. Rezultat bo shranjen v R3.
ADD EAX, [RBX+4]
Kompleksnejši ukaz z naslavljanjem pomnilnika. Procesor ga prevede v več μops: izračun naslova RBX+4, branje iz pomnilnika in seštevanje z EAX.