SLIDE 6 mov CPU
PC Instr. Mem. register fjle
%rax, %rdx, … reg #s ZF/SF
Data Mem.
split
MUX
convert
immediate + MUX +2 +10 ← write enable write enable
from convert opcode
rrmovq rA, rB 2 0 rA rB irmovq V, rB 3 F rB mrmovq D(rB), rA 5 0 rA rB rmmovq rA, D(rB) 4 0 rA rB V D D
valP valC valB valA valE valM
18
Connections in Y86-64
PC Instr. Mem. register fjle
%rax, %rdx, … reg #s ZF/SF
Data Mem.
l
i c l
i c l
i c
to reg
l
i c
to PC
addq %r8, %r9 pushq %r8 (and %rsp) mrmovq 1000(%r9), %r8 rmmovq %r8, 1000(%r9) call function (saves next PC) addq %r9, %r8 irmovq $1000, %r8 popq %rax mrmovq 1000(%r9), %r8 popq %rax (update %rsp) call function ret
19
Stages in Y86-64
PC Instr. Mem. register fjle
%rax, %rdx, … reg #s ZF/SF
Data Mem.
l
i c l
i c l
i c
to reg
l
i c
to PC
fetch decode execute memory write back PC update
20
Stages
fetch — read instruction memory, split instruction decode — read register fjle execute — arithmetic (including of addresses) memory — read or write data memory write back — write to register fjle PC update — compute next value of PC
21