Академический Документы
Профессиональный Документы
Культура Документы
Datapath
Memory
Output
31
26
op
6 bits
21
rs
5 bits
16
rt
5 bits
31
26
21
16
OR Immediate:
op
rs
rt
ori rt, rs, imm16
6 bits 5 bits 5 bits
LOAD and STORE
lw rt, rs, imm16
sw rt, rs, imm16
BRANCH:
beq rs, rt, imm16
JUMP:
j target
31
11
6
rd
shamt
5 bits 5 bits
funct
6 bits
0
immediate
16 bits
26
op
6 bits
0
target address
26 bits
An
Abstract
Implementation
Clk
View
of
the
PC
Instruction Address
Ideal
Instruction
Instruction
Rd Rs Rt
Memory
5 5
5
Clk
Rw Ra Rb
32 32-bit
Registers
32
ALU
32
Imm
1
6
32
Data
32 Address
Data
In
Clk
Ideal DataOut
Data
Memory
Clocking Methodology
Clk
Setup Hold
Setup Hold
Dont Care
.
.
.
.
.
.
.
.
.
.
.
.
Clk
PC
Instruction Address
Ideal
Instruction
Instruction
Rd Rs Rt
Memory
5 5
5
Clk
Rw Ra Rb
32 32-bit
Registers
ALU
32
Clk
The Steps
Processor
of
Designing
rd, rs, rt
mem[PC]
memory
from
address
Calculate the
PC <- PC + 4
Calculate the next
instructions address
Adder
CarryIn
A
MUX
B
A
ALU
B
Sum
Carry
Sele
ct
32
32
32
32
32
O
P
ALU
32
32
MUX
Adder
32
32
Result
Zero
Memory (idealized)
One input bus: Data In
Data In
DataOut
One output bus: Data Out
32
32
Clk
Memory word is selected by:
Write Enable = 0: Address selects the word to put on
Data Out
Write Enable = 1: address selects the memory
memory word to be written via the Data In bus
Clock input (CLK)
The CLK input is a factor ONLY during write operation
During read operation, behaves as a combinational
logic block:
Address valid => Data Out valid after access time.
RW RA RB
5 5 5
Register File consists of 32 registers:Write Enable
busA
Two 32-bit output busses:
busW
32
32 32-bit
busA and busB
32
Registers busB
One 32-bit input bus: busW
Clk
32
Register is selected by:
RA selects the register to put on busA
RB selects the register to put on busB
RW selects the register to be written
via busW when Write Enable is 1
Clock input (CLK)
The CLK input is a factor ONLY during write operation
During read operation, behaves as a combinational
logic block: RA or RB valid => busA or busB valid
after access time.
Clk
PC
Next Address
Logic
Address
Instruction
Memory
Instruction
Word
3
2
rd, rs, rt
mem[PC]
memory
from
Datapath
Operations
for
Register-Register
31
26
op
6 bits
21
rs
5 bits
16
rt
5 bits
11
rd
5 bits
Rd Rs Rt
RegWr 5 5 5
busA
32
busB
32
0
funct
6 bits
ALUc
tr
ALU
busW
32
Clk
Rw Ra Rb
32 32-bit
Registers
6
shamt
5 bits
Result
3
2
Register-Register Timing
Clk
Old
Value
Rs, Rt, Rd,
Op, Func
PC
ALUctr
RegWr
Clk-to-Q
New
Value
Instruction Memory Access Time
Old
New
Value
Value Delay through Control Logic
Old
New
Value
Value
Old
Value
busA,
B
Old
Value
New
Value
Register File Access Time
New
Value ALU Delay
busW
Old
Value
New
Value
Rd Rs Rt
RegWr 5 5 5
busA
32
busB
32
ALU
busW
32
Clk
Rw Ra Rb
32 32-bit
Registers
ALUc
tr
Register Write
Occurs Here
Result
3
2
26
op
6 bits
21
rs
5 bits
16
rt
5 bits
0
immediate
16 bits
The OR operation
31
1615
0000000000000000
16 bits
0
immediate
16 bits
31
26
op
6 bits
21
rs
5 bits
11
immediate
16 bits
rd
16
rt
5 bits
ALU
16
ALUc
tr
Mux
imm16
ZeroExt
Rd Rt
RegDst
Mux
Dont Care
Rs
RegWr 5 5 5 (Rt)
busA
Rw Ra Rb
busW
32
32 32-bit
32
Registers
busB
Clk
32
32
ALUSrc
Result
32
lw
26
op
6 bits
mem[PC]
21
rs
5 bits
16
rt
5 bits
immediate
16 bits
31
SignExt
operation
16 15
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00
16 bits
31
16 15
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11
16 bits
0
immediate
16 bits
immediate
16 bits
31
26
op
6 bits
Rd
RegDst
21
rs
5 bits
16
rt
5 bits
11
immediate
16 bits
rd
Rt
Mux
ExtOp
ALUSrc
MemtoReg
32
MemWr
Data In
32
Clk
WrEn Adr
Data
Memory
32
Mux
32
ALUc
tr
ALU
16
Mux
imm16
Extender
Dont Care
Rs
RegWr5 5 5 (Rt)
busA
Rw Ra Rb
busW
32
32 32-bit
32
Registers
busB
Clk
32
26
op
6 bits
21
rs
5 bits
16
rt
5 bits
0
immediate
16 bits
31
26
op
6 bits
Rd
RegDst
Mux
RegWr5
immediate
16 bits
Rt
Rs Rt
5 5
busA
32
busB
32
Extender
16
ALUc
tr
32
ExtOp
MemWr
32
Data In32
ALUSrc Clk
MemtoReg
32
WrEn Adr
Data
Memory
Mux
Rw Ra Rb
32 32-bit
Registers
imm16
rt
5 bits
Mux
32
Clk
rs
5 bits
16
ALU
busW
21
26
op
6 bits
beq
21
rs
5 bits
16
rt
5 bits
0
immediate
16 bits
mem[PC]
PC <- PC + 4 + ( SignExt(imm16) x 4 )
else PC <- PC + 4
beq
31
26
op
6 bits
Rd
RegDst
Mux
RegWr5
32
Clk
rs
5 bits
rt
5 bits
immediate
16 bits
Rt
Branch
Rs Rt
5 5
Rw Ra Rb
32 32-bit
Registers
ALUc
tr
32
busB
32
Mux
16
busA
Extender
imm16
16
32
ExtOp
ALUSrc
ALU
busW
21
PC
Clk
To Instruction
Memory
Binary Arithmetics
Address
for
the
Next
30
30
Mux
imm16
16
Instruction<15:0>
SignExt
Clk
30
Adder
Adder
PC
30
1
30
00
Addr<31:2>
Addr<1:0>
Instruction
Memory
32
30
Instruction<31:0>
Branch Zero
PC
30
1
0
Adder
Mux
imm16
16
nstruction<15:0>
SignExt
Clk
Carry In
0
1
30
30
00
Addr<31:2>
Addr<1:0>
Instruction
Memory
32
30
Instruction<31:0>
BranchZero
26
op
6 bits
0
target address
26 bits
target
mem[PC]
target
PC<31:2> <- PC<31:28> concat target<25:0>
30
30
PC<31:28>
Mux
30
Adder
imm16
16
Instruction<15:0>
SignExt
Clk
Adder
PC
30
1
30
30
Branch Zero
equal
Mux
Target 4
Instruction<25:0>
26
30
Addr<31:2>
Jump
00
Addr<1:0>
Instruction
Memory
32
Instruction<31:0>
1 Mux 0
RegWr 5
Rs Rt
5 5
busA
32
ExtOp
Data In32
ALUSrc
Clk
WrEn Adr
Data
Memory
32
Mux
16
Extender
imm16
MemtoReg
32
Mux
32
Clk
Rw Ra Rb
32
32 32-bit
Registers busB
0
32
Rs Rd Imm16
Zero MemWr
ALU
busW
Rt
ALUc
tr
<0:15>
Jump
Clk
Rt
<11:15>
RegDst
<21:25>
Rd
<16:20>
Instruction<31:0>
Instruction
Fetch Unit
Branch