microarchitecture - eth z · carnegie mellon 10 let us start with building the processor program is...
TRANSCRIPT
![Page 1: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/1.jpg)
Carnegie Mellon
1
Design of Digital Circuits 2017Srdjan CapkunOnur Mutlu(Guest starring: Frank K. Gürkaynak and Aanjhan Ranganathan)
Adapted from Digital Design and Computer Architecture, David Money Harris & Sarah L. Harris ©2007 Elsevier
http://www.syssec.ethz.ch/education/Digitaltechnik_17
Microarchitecture
![Page 2: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/2.jpg)
Carnegie Mellon
2
In This Lecture
Overview of the MIPS Microprocessor
RTL Design Revisited
Single-Cycle Processor
Performance Analysis
![Page 3: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/3.jpg)
Carnegie Mellon
3
Introduction
Microarchitecture: ▪ How to implement an
architecture in hardware
Processor:▪ Datapath: functional blocks
▪ Control: control signals
Physics
Devices
Analog
Circuits
Digital
Circuits
Logic
Micro-
architecture
Architecture
Operating
Systems
Application
Software
electrons
transistors
diodes
amplifiers
filters
AND gates
NOT gates
adders
memories
datapaths
controllers
instructions
registers
device drivers
programs
![Page 4: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/4.jpg)
Carnegie Mellon
4
Microarchitecture
Multiple implementations for a single architecture:
Single-cycle (this week)▪ Each instruction executes in a single cycle
Multicycle (in a few weeks)▪ Each instruction is broken up into a series of shorter steps
Pipelined (even later)▪ Each instruction is broken up into a series of steps
▪ Multiple instructions execute at once.
![Page 5: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/5.jpg)
Carnegie Mellon
5
What does our Microprocessor do ?
Program is in memory, stored as a series of instructions.
Basic execution is:▪ Read one instruction
▪ Decode what it wants
▪ Find the operands either from registers or from memory
▪ Perform the operation as dictated by the instruction
▪ Write the result (if necessary)
▪ Go to the next instruction
![Page 6: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/6.jpg)
Carnegie Mellon
6
What are the Basic Components of MIPS?
The main pieces▪ Memory to store program
▪ Registers to access data fast
▪ Data memory to store more data
▪ An ALU to perform the core function
![Page 7: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/7.jpg)
Carnegie Mellon
7
What are the Basic Components of MIPS?
The main pieces▪ Memory to store program
▪ Registers to access data fast
▪ Data memory to store more data
▪ An ALU to perform the core function
Some auxiliary pieces▪ A program counter to tell where to find next instruction
▪ Some logic to decode instructions
▪ A way to manipulate the program counter for branches
![Page 8: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/8.jpg)
Carnegie Mellon
8
What are the Basic Components of MIPS?
The main pieces▪ Memory to store program
▪ Registers to access data fast
▪ Data memory to store more data
▪ An ALU to perform the core function
Some auxiliary pieces▪ A program counter to tell where to find next instruction
▪ Some logic to decode instructions
▪ A way to manipulate the program counter for branches
Today we will see how it all comes together
![Page 9: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/9.jpg)
Carnegie Mellon
9
RTL Design Revisited
Registers store the current state
Combinational logic determines next state▪ Data moves from one register to another (datapath)
▪ Control signals move data through the datapath
▪ Control signals depend on state and input
Clock moves us from state to another
![Page 10: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/10.jpg)
Carnegie Mellon
10
Let us Start with Building the Processor
Program is stored in a (read-only) memory as 32-bit binary values.
Memory addresses are also 32-bit wide, allowing (in theory) 232 = 4 Gigabytes of addressed memory.
The actual address is stored in a register called PC.
addi $t0, $s3, -12
Machine CodeAssembly Code
lw $t2, 32($0)
add $s0, $s1, $s2
sub $t0, $t3, $t5
0x8C0A0020
0x02328020
0x2268FFF4
0x016D4022
Address Instructions
0040000C 0 1 6 D 4 0 2 2
2 2 6 8 F F F 4
0 2 3 2 8 0 2 0
8 C 0 A 0 0 2 0
00400008
00400004
00400000
Stored Program
Main Memory
PC
![Page 11: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/11.jpg)
Carnegie Mellon
11
What to do with the Program Counter?
reg [31:0] PC_p, PC_n; // Present and next state of PC
// […]
assign PC_n <= PC_p + 4; // Increment by 4;
always @ (posedge clk, negedge rst)begin
if (rst == ‘0’) PC_p <= 32’h00400000; // defaultelse PC_p <= PC_n; // when clk
end
The PC needs to be incremented by 4 during each cycle (for the time being).
Initial PC value (after reset) is 0x00400000
![Page 12: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/12.jpg)
Carnegie Mellon
12
We have an Instruction Now What ?
There are different types of instructions▪ R type (three registers)
▪ I type (the one with immediate values)
▪ J type (for changing the flow)
First only a subset of MIPS instructions:▪ R type instructions: and, or, add, sub, slt
▪ Memory instructions: lw, sw
▪ Branch instructions: beq
Later we will add addi and j
![Page 13: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/13.jpg)
Carnegie Mellon
13
R-Type MIPS instructions
Register-type: 3 register operands:
▪ rs, rt: source registers
▪ rd: destination register
Other fields:
▪ op: the operation code or opcode (0 for R-type instructions)
▪ funct: the function together, the opcode and function tell the computer what operation to perform
▪ shamt: the shift amount for shift instructions, otherwise it’s 0
op rs rt rd shamt funct
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
R-Type
![Page 14: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/14.jpg)
Carnegie Mellon
14
R-Type Examples
add $s0, $s1, $s2
sub $t0, $t3, $t5
Assembly Code
0 17 18 16 0 32
Field Values
0 11 13 8 0 34
op rs rt rd shamt funct
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
000000 10001 10010 10000 00000 100000
op rs rt rd shamt funct
000000 01011 01101 01000 00000 100010
Machine Code
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
(0x02328020)
(0x016D4022)
Note the order of registers in the assembly code:
add rd, rs, rt
![Page 15: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/15.jpg)
Carnegie Mellon
15
We Need a Register File
Store 32 registers, each 32-bit▪ 25 == 32, we need 5 bits to address each
Every R-type instruction uses 3 register▪ Two for reading (RS, RT)
▪ One for writing (RD)
We need a special memory with:▪ 2 read ports (address x2, data out x2)
▪ 1 write port (address, data in)
![Page 16: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/16.jpg)
Carnegie Mellon
16
Register File
input [4:0] a_rs, a_rt, a_rd;input [31:0] di_rd;input we_rd;output [31:0] do_rs, do_rt;
reg [31:0] R_arr [31:0]; // Array that stores regs
// Circuit descriptionassign do_rs = R_arr[a_rs]; // Read RS
assign do_rt = R_arr[a_rt]; // Read RT
always @ (posedge clk)if (we_rd) R_arr[a_rd] <= di_rd; // write RD
![Page 17: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/17.jpg)
Carnegie Mellon
17
Register File
input [4:0] a_rs, a_rt, a_rd;input [31:0] di_rd;input we_rd;output [31:0] do_rs, do_rt;
reg [31:0] R_arr [31:0]; // Array that stores regs
// Circuit description; add the trick with $0assign do_rs = (a_rs != 5’b00000)? // is address 0?
R_arr[a_rs] : 0; // Read RS or 0
assign do_rt = (a_rt != 5’b00000)? // is address 0?R_arr[a_rt] : 0; // Read RT or 0
always @ (posedge clk)if (we_rd) R_arr[a_rd] <= di_rd; // write RD
![Page 18: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/18.jpg)
Carnegie Mellon
18
Arithmetic Logic Unit
The reason why we study digital circuits:the part of the CPU that does something (other than copying
data)
Defines the basic operations that the CPU can perform directly
▪ Other functions can be realized using the existing ones iteratively. (i.e. multiplication can be realized by shifting and adding)
Mostly, a collection of resources that work in parallel.
▪ Depending on the operation one of the outputs is selected
![Page 19: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/19.jpg)
Carnegie Mellon
19
Example: Arithmetic Logic Unit (ALU), pg243
ALU
N N
N
3
A B
Y
F
F2:0 Function
000 A & B
001 A | B
010 A + B
011 not used
100 A & ~B
101 A | ~B
110 A - B
111 SLT
![Page 20: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/20.jpg)
Carnegie Mellon
20
Example: ALU Design
+
2 01
A B
Cout
Y
3
01
F2
F1:0
[N-1] S
NN
N
N
N NNN
N
2
Ze
ro
Exte
nd
F2:0 Function
000 A & B
001 A | B
010 A + B
011 not used
100 A & ~B
101 A | ~B
110 A - B
111 SLT
![Page 21: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/21.jpg)
Carnegie Mellon
23
ALU Does the Real Work in a Processor
ALU
N N
N
3
A B
Y
F
F2:0 Function
000 A & B
001 A | B
010 A + B
011 not used
100 A & ~B
101 A | ~B
110 A - B
111 SLT
![Page 22: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/22.jpg)
Carnegie Mellon
24
So far so good
We have most of the components for MIPS▪ We still do not have data memory
![Page 23: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/23.jpg)
Carnegie Mellon
25
So far so good
We have most of the components for MIPS▪ We still do not have data memory
We can implement all R-type instructions▪ Assuming our ALU can handle all of the functions
▪ At the moment we do not have the shifter
▪ We know what to do for more functions.
![Page 24: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/24.jpg)
Carnegie Mellon
26
So far so good
We have most of the components for MIPS▪ We still do not have data memory
We can implement all R-type instructions▪ Assuming our ALU can handle all of the functions
▪ At the moment we do not have the shifter
▪ We know what to do for more functions.
…but not much else▪ No memory access
▪ No immediate values
▪ No conditional branches, no absolute jumps
![Page 25: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/25.jpg)
Carnegie Mellon
27
Data Memory
input [15:0] addr; // Only 16 bits in this example input [31:0] di;input we;output [31:0] do;
reg [65535:0] M_arr [31:0]; // Array for Memory
// Circuit descriptionassign do = M_arr[addr]; // Read memory
always @ (posedge clk)if (we) M_arr[addr] <= di; // write memory
Will be used to store the bulk of data
![Page 26: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/26.jpg)
Carnegie Mellon
28
Let us Read (then Write) to Memory
The main memory can have up to 232 bytes▪ It needs an 32-bit address for the entire memory.
▪ In practice much smaller memories are used
We need the lw instruction to read from memory▪ I-type instruction
▪ We need to calculate the address from an immediate value and a register.
▪ Maybe we can use the ALU to add immediate to the register?
![Page 27: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/27.jpg)
Carnegie Mellon
29
I-Type
Immediate-type: 3 operands:
▪ rs, rt: register operands
▪ imm: 16-bit two’s complement immediate
Other fields:
▪ op: the opcode
▪ Simplicity favors regularity: all instructions have opcode
▪ Operation is completely determined by the opcode
op rs rt imm
6 bits 5 bits 5 bits 16 bits
I-Type
![Page 28: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/28.jpg)
Carnegie Mellon
30
Differences between R-type and I-type
Changes to Register file ▪ RS + sign extended immediate is the address
▪ RS is always read.
▪ For some instructions RT is read as well
▪ If one register is written it is RT, not RD
▪ The write_data_in can come from Memory or ALU
▪ Not all I-type instructions write to register file
Changes to ALU▪ Used to calculate memory address, add function needed during
non R-type operations
▪ Result is also used as address for the data memory
▪ One input is no longer RT, but the immediate value
![Page 29: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/29.jpg)
Carnegie Mellon
31
Now Writing to Memory is Similar
We need the sw instruction to write to memory▪ I-type instruction
▪ Address calculated the same way
▪ Unlike, previous step, there is no writing back to register.
▪ But we need to enable the write enable of the memory
![Page 30: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/30.jpg)
Carnegie Mellon
32
Our MIPS Datapath has Several Options
ALU inputs▪ Either RT or Immediate
Write Address of Register File▪ Either RD or RT
Write Data In of Register File▪ Either ALU out or Data Memory Out
Write enable of Register File▪ Not always a register write
Write enable of Memory▪ Only when writing to memory (sw)
![Page 31: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/31.jpg)
Carnegie Mellon
33
Our MIPS Datapath has Several Options
ALU inputs▪ Either RT or Immediate (MUX)
Write Address of Register File▪ Either RD or RT (MUX)
Write Data In of Register File▪ Either ALU out or Data Memory Out (MUX)
Write enable of Register File▪ Not always a register write (MUX)
Write enable of Memory▪ Only when writing to memory (sw) (MUX)
All these options are our control signals
![Page 32: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/32.jpg)
Carnegie Mellon
34
Let us Develop our Control Table
Instruction Op5:0 RegWrite RegDst AluSrc MemWrite MemtoReg ALUOp
▪ RegWrite: Write enable for the register file
▪ RegDst: Write to register RD or RT
▪ AluSrc: ALU input RT or immediate
▪ MemWrite: Write Enable
▪ MemtoReg: Register data in from Memory or ALU
▪ ALUOp: What operation does ALU do
![Page 33: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/33.jpg)
Carnegie Mellon
35
Let us Develop our Control Table
Instruction Op5:0 RegWrite RegDst AluSrc MemWrite MemtoReg ALUOp
R-type 000000 1 1 0 0 0 funct
▪ RegWrite: Write enable for the register file
▪ RegDst: Write to register RD or RT
▪ AluSrc: ALU input RT or immediate
▪ MemWrite: Write Enable
▪ MemtoReg: Register data in from Memory or ALU
▪ ALUOp: What operation does ALU do
![Page 34: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/34.jpg)
Carnegie Mellon
36
Let us Develop our Control Table
Instruction Op5:0 RegWrite RegDst AluSrc MemWrite MemtoReg ALUOp
R-type 000000 1 1 0 0 0 funct
lw 100011 1 0 1 0 1 add
▪ RegWrite: Write enable for the register file
▪ RegDst: Write to register RD or RT
▪ AluSrc: ALU input RT or immediate
▪ MemWrite: Write Enable
▪ MemtoReg: Register data in from Memory or ALU
▪ ALUOp: What operation does ALU do
![Page 35: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/35.jpg)
Carnegie Mellon
37
Let us Develop our Control Table
Instruction Op5:0 RegWrite RegDst AluSrc MemWrite MemtoReg ALUOp
R-type 000000 1 1 0 0 0 funct
lw 100011 1 0 1 0 1 add
sw 101011 0 X 1 1 X add
▪ RegWrite: Write enable for the register file
▪ RegDst: Write to register RD or RT
▪ AluSrc: ALU input RT or immediate
▪ MemWrite: Write Enable
▪ MemtoReg: Register data in from Memory or ALU
▪ ALUOp: What operation does ALU do
![Page 36: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/36.jpg)
Carnegie Mellon
38
Now we are much better
We have almost all components for MIPS
We already had (nearly) all R-type instructions▪ Our ALU can implement some functions
▪ We know what to do for more functions.
Now we can also Read and Write to memory
Conditional Branches are still missing▪ Until know, PC just increases by 4 every time.
▪ We need to somehow be able to influence this.
![Page 37: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/37.jpg)
Carnegie Mellon
39
Branch if equal: BEQ
From Appendix B:Opcode: 000100
If ([rs]==[rt]) PC= BTA
BTA = Branch Target Address= PC+4 +(SignImm <<2)
![Page 38: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/38.jpg)
Carnegie Mellon
40
Branch if equal: BEQ
From Appendix B:Opcode: 000100
If ([rs]==[rt]) PC= BTA
BTA = Branch Target Address= PC+4 +(SignImm <<2)
We need ALU for comparison▪ Subtract RS – RT
▪ We need a ‘zero’ flag, if RS equals RT
![Page 39: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/39.jpg)
Carnegie Mellon
41
Branch if equal: BEQ
From Appendix B:Opcode: 000100
If ([rs]==[rt]) PC= BTA
BTA = Branch Target Address= PC+4 +(SignImm <<2)
We need ALU for comparison▪ Subtract RS – RT
▪ We need a ‘zero’ flag, if RS equals RT
We also need a Second Adder▪ The immediate value has to be added to PC+4
![Page 40: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/40.jpg)
Carnegie Mellon
42
Branch if equal: BEQ
From Appendix B:Opcode: 000100
If ([rs]==[rt]) PC= BTA
BTA = Branch Target Address= PC+4 +(SignImm <<2)
We need ALU for comparison▪ Subtract RS – RT
▪ We need a ‘zero’ flag, if RS equals RT
We also need a Second Adder▪ The immediate value has to be added to PC+4
PC has now two options▪ Either PC+4 or the new BTA
![Page 41: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/41.jpg)
Carnegie Mellon
43
More Control Signals
Instruction Op5:0 RegWrite RegDst AluSrc Branch MemWrite MemtoReg ALUOp
R-type 000000 1 1 0 0 0 0 funct
lw 100011 1 0 1 0 0 1 add
sw 101011 0 X 1 0 1 X add
beq 000100 0 X 0 1 0 X sub
New Control Signal
▪ Branch: Are we jumping or not ?
![Page 42: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/42.jpg)
Carnegie Mellon
44
We are almost done
We have almost all components for MIPS
We already had (nearly) all R-type instructions▪ Our ALU can implement some functions
▪ We know what to do for more functions.
Now we can also Read and Write to memory
We also have conditional branches
Absolute jumps are still missing▪ J-type instructions
▪ The next PC address is directly determined
![Page 43: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/43.jpg)
Carnegie Mellon
45
Machine Language: J-Type
Jump-type
▪ 26-bit address operand (addr)
▪ Used for jump instructions (j)
op addr
6 bits 26 bits
J-Type
0000 0000 0100 0000 0000 0000 1010 0000JTA
26-bit addr (0x0100028)
(0x004000A0)
0000 0000 0100 0000 0000 0000 1010 0000
0 1 0 0 0 2 8
000011 00 0001 0000 0000 0000 0010 1000
op addr
Machine CodeField Values
3 0x0100028
6 bits 26 bits
(0x0C100028)
op imm
6 bits 26 bits
![Page 44: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/44.jpg)
Carnegie Mellon
46
Jump: J
From Appendix B:Opcode: 000010
PC= JTA
JTA = Jump Target Address= {(PC+4)[31:28], addr,2’b0}
No need for ALU▪ Assemble the JTA from PC and 26-bit immediate
No need for memory, register file
One more option (mux + control signal) for PC
![Page 45: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/45.jpg)
Carnegie Mellon
47
Even More Control Signals
Instruction Op5:0 RegWrite RegDst AluSrc Branch MemWrite MemtoReg ALUOp Jump
R-type 000000 1 1 0 0 0 0 funct 0
lw 100011 1 0 1 0 0 1 add 0
sw 101011 0 X 1 0 1 X add 0
beq 000100 0 X 0 1 0 X sub 0
j 000010 0 X X X 0 X X 1
New Control Signal
▪ Jump: Direct jump yes or no
![Page 46: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/46.jpg)
Carnegie Mellon
48
Now we are Almost Done
We have all major parts▪ We can implement, R, I, J type instructions
▪ We can calculate, branch, and jump
▪ We would be able to run most programs
![Page 47: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/47.jpg)
Carnegie Mellon
49
Now we are Almost Done
We have all major parts▪ We can implement, R, I, J type instructions
▪ We can calculate, branch, and jump
▪ We would be able to run most programs
Still we can improve:▪ ALU can be improved for more ‘funct’
▪ We do not have a shifter.
▪ Or a multiplier.
▪ More I-type functions (only lw and sw supported)
▪ More J-type functions (jal, jr)
![Page 48: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/48.jpg)
Carnegie Mellon
50
Now the original slides once again
The following slides will repeat what we just did
Consistent with the text book
![Page 49: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/49.jpg)
Carnegie Mellon
51
MIPS State ElementsCLK
A RD
Instruction
Memory
A1
A3
WD3
RD2
RD1WE3
A2
CLK
Register
File
A RD
Data
Memory
WD
WEPCPC'
CLK
32 3232 32
32
32
3232
32
32
5
5
5
▪ Program counter:
32-bit register
▪ Instruction memory:
Takes input 32-bit address A and reads the 32-bit data (i.e., instruction) from that address to the read data output RD.
▪ Register file:
The 32-element, 32-bit register file has 2 read ports and 1 write port
▪ Data memory:
Has a single read/write port. If the write enable, WE, is 1, it writes data WD into address A on the rising edge of the clock. If the write enable is 0, it reads address A onto RD.
![Page 50: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/50.jpg)
Carnegie Mellon
52
Single-Cycle Datapath: lw fetch
STEP 1: Fetch instruction
CLK
A RD
Instruction
Memory
A1
A3
WD3
RD2
RD1WE3
A2
CLK
Register
File
A RD
Data
Memory
WD
WEPCPC'
Instr
CLK
lw $s3, 1($0) # read memory word 1 into $s3
op rs rt imm
6 bits 5 bits 5 bits 16 bits
I-Type
![Page 51: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/51.jpg)
Carnegie Mellon
53
Single-Cycle Datapath: lw register read
STEP 2: Read source operands from register file
Instr
CLK
A RD
Instruction
Memory
A1
A3
WD3
RD2
RD1WE3
A2
CLK
Register
File
A RD
Data
Memory
WD
WEPCPC'
25:21
CLK
lw $s3, 1($0) # read memory word 1 into $s3
op rs rt imm
6 bits 5 bits 5 bits 16 bits
I-Type
![Page 52: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/52.jpg)
Carnegie Mellon
54
Single-Cycle Datapath: lw immediate
STEP 3: Sign-extend the immediate
SignImm
CLK
A RD
Instruction
Memory
A1
A3
WD3
RD2
RD1WE3
A2
CLK
Sign Extend
Register
File
A RD
Data
Memory
WD
WEPCPC' Instr
25:21
15:0
CLK
lw $s3, 1($0) # read memory word 1 into $s3
op rs rt imm
6 bits 5 bits 5 bits 16 bits
I-Type
![Page 53: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/53.jpg)
Carnegie Mellon
55
Single-Cycle Datapath: lw address
STEP 4: Compute the memory address
SignImm
CLK
A RD
Instruction
Memory
A1
A3
WD3
RD2
RD1WE3
A2
CLK
Sign Extend
Register
File
A RD
Data
Memory
WD
WEPCPC' Instr
25:21
15:0
SrcB
ALUResult
SrcA Zero
CLK
ALUControl2:0
ALU
010
lw $s3, 1($0) # read memory word 1 into $s3
op rs rt imm
6 bits 5 bits 5 bits 16 bits
I-Type
![Page 54: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/54.jpg)
Carnegie Mellon
56
Single-Cycle Datapath: lw memory read
STEP 5: Read from memory and write back to register file
A1
A3
WD3
RD2
RD1WE3
A2
SignImm
CLK
A RD
Instruction
Memory
CLK
Sign Extend
Register
File
A RD
Data
Memory
WD
WEPCPC' Instr
25:21
15:0
SrcB20:16
ALUResult ReadData
SrcA
RegWrite
Zero
CLK
ALUControl2:0
ALU
0101
lw $s3, 1($0) # read memory word 1 into $s3
op rs rt imm
6 bits 5 bits 5 bits 16 bits
I-Type
![Page 55: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/55.jpg)
Carnegie Mellon
57
Single-Cycle Datapath: lw PC increment
STEP 6: Determine address of next instruction
SignImm
CLK
A RD
Instruction
Memory
+
4
A1
A3
WD3
RD2
RD1WE3
A2
CLK
Sign Extend
Register
File
A RD
Data
Memory
WD
WEPCPC' Instr
25:21
15:0
SrcB20:16
ALUResult ReadData
SrcA
PCPlus4
Result
RegWrite
Zero
CLK
ALUControl2:0
ALU
0101
lw $s3, 1($0) # read memory word 1 into $s3
op rs rt imm
6 bits 5 bits 5 bits 16 bits
I-Type
![Page 56: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/56.jpg)
Carnegie Mellon
58
Single-Cycle Datapath: sw
Write data in rt to memory
SignImm
CLK
A RD
Instruction
Memory
+
4
A1
A3
WD3
RD2
RD1WE3
A2
CLK
Sign Extend
Register
File
A RD
Data
Memory
WD
WEPCPC' Instr
25:21
20:16
15:0
SrcB20:16
ALUResult ReadData
WriteData
SrcA
PCPlus4
Result
MemWriteRegWrite
Zero
CLK
ALUControl2:0
ALU
10100
sw $t7, 44($0) # write t7 into memory address 44
op rs rt imm
6 bits 5 bits 5 bits 16 bits
I-Type
![Page 57: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/57.jpg)
Carnegie Mellon
59
Single-Cycle Datapath: R-type Instructions
Read from rs and rt, write ALUResult to register file
SignImm
CLK
A RD
Instruction
Memory
+
4
A1
A3
WD3
RD2
RD1WE3
A2
CLK
Sign Extend
Register
File
0
1
0
1
A RD
Data
Memory
WD
WE0
1
PCPC' Instr25:21
20:16
15:0
SrcB
20:16
15:11
ALUResult ReadData
WriteData
SrcA
PCPlus4WriteReg
4:0
Result
RegDst MemWrite MemtoRegALUSrcRegWrite
Zero
CLK
ALUControl2:0
ALU
0varies1 001
add t, b, c # t = b + c
op rs rt rd shamt funct
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
R-Type
![Page 58: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/58.jpg)
Carnegie Mellon
60
Single-Cycle Datapath: beq
Determine whether values in rs and rt are equalCalculate BTA = (sign-extended immediate << 2) + (PC+4)
SignImm
CLK
A RD
Instruction
Memory
+
4
A1
A3
WD3
RD2
RD1WE3
A2
CLK
Sign Extend
Register
File
0
1
0
1
A RD
Data
Memory
WD
WE0
1
PC0
1
PC' Instr25:21
20:16
15:0
SrcB
20:16
15:11
<<2
+
ALUResult ReadData
WriteData
SrcA
PCPlus4
PCBranch
WriteReg4:0
Result
RegDst Branch MemWrite MemtoRegALUSrcRegWrite
Zero
PCSrc
CLK
ALUControl2:0
ALU
01100 x0x 1
beq $s0, $s1, target # branch is taken
![Page 59: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/59.jpg)
Carnegie Mellon
61
Complete Single-Cycle Processor
SignImm
CLK
A RD
Instruction
Memory
+
4
A1
A3
WD3
RD2
RD1WE3
A2
CLK
Sign Extend
Register
File
0
1
0
1
A RD
Data
Memory
WD
WE0
1
PC0
1
PC' Instr25:21
20:16
15:0
5:0
SrcB
20:16
15:11
<<2
+
ALUResult ReadData
WriteData
SrcA
PCPlus4
PCBranch
WriteReg4:0
Result
31:26
RegDst
Branch
MemWrite
MemtoReg
ALUSrc
RegWrite
Op
Funct
Control
Unit
Zero
PCSrc
CLK
ALUControl2:0
ALU
![Page 60: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/60.jpg)
Carnegie Mellon
62
Control Unit
RegDst
Branch
MemWrite
MemtoReg
ALUSrcOpcode5:0
Control
Unit
ALUControl2:0Funct5:0
Main
Decoder
ALUOp1:0
ALU
Decoder
RegWrite
![Page 61: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/61.jpg)
Carnegie Mellon
63
ALU Does the Real Work in a Processor
ALU
N N
N
3
A B
Y
F
F2:0 Function
000 A & B
001 A | B
010 A + B
011 not used
100 A & ~B
101 A | ~B
110 A - B
111 SLT
![Page 62: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/62.jpg)
Carnegie Mellon
64
Review: ALU
+
2 01
A B
Cout
Y
3
01
F2
F1:0
[N-1] S
NN
N
N
N NNN
N
2
Ze
ro
Exte
nd
F2:0 Function
000 A & B
001 A | B
010 A + B
011 not used
100 A & ~B
101 A | ~B
110 A - B
111 SLT
![Page 63: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/63.jpg)
Carnegie Mellon
65
Control Unit: ALU Decoder
ALUOp1:0 Meaning
00 Add
01 Subtract
10 Look at Funct
11 Not Used
ALUOp1:0 Funct ALUControl2:0
00 X 010 (Add)
X1 X 110 (Subtract)
1X 100000 (add) 010 (Add)
1X 100010 (sub) 110 (Subtract)
1X 100100 (and) 000 (And)
1X 100101 (or) 001 (Or)
1X 101010 (slt) 111 (SLT)
RegDst
Branch
MemWrite
MemtoReg
ALUSrcOpcode5:0
Control
Unit
ALUControl2:0Funct5:0
Main
Decoder
ALUOp1:0
ALU
Decoder
RegWrite
![Page 64: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/64.jpg)
Carnegie Mellon
66
Control Unit: Main Decoder
Instruction Op5:0 RegWrite RegDst AluSrc Branch MemWrite MemtoReg ALUOp1:0
R-type 000000 1 1 0 0 0 0 10
lw 100011 1 0 1 0 0 1 00
sw 101011 0 X 1 0 1 X 00
beq 000100 0 X 0 1 0 X 01
SignImm
CLK
A RD
Instruction
Memory
+
4
A1
A3
WD3
RD2
RD1WE3
A2
CLK
Sign Extend
Register
File
0
1
0
1
A RD
Data
Memory
WD
WE0
1
PC0
1
PC' Instr25:21
20:16
15:0
5:0
SrcB
20:16
15:11
<<2
+ALUResult ReadData
WriteData
SrcA
PCPlus4
PCBranch
WriteReg4:0
Result
31:26
RegDst
Branch
MemWrite
MemtoReg
ALUSrc
RegWrite
Op
Funct
Control
Unit
Zero
PCSrc
CLK
ALUControl2:0
ALU
![Page 65: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/65.jpg)
Carnegie Mellon
67
Single-Cycle Datapath Example: or
SignImm
CLK
A RD
Instruction
Memory
+
4
A1
A3
WD3
RD2
RD1WE3
A2
CLK
Sign Extend
Register
File
0
1
0
1
A RD
Data
Memory
WD
WE0
1
PC0
1
PC' Instr25:21
20:16
15:0
5:0
SrcB
20:16
15:11
<<2
+
ALUResult ReadData
WriteData
SrcA
PCPlus4
PCBranch
WriteReg4:0
Result
31:26
RegDst
Branch
MemWrite
MemtoReg
ALUSrc
RegWrite
Op
Funct
Control
Unit
Zero
PCSrc
CLK
ALUControl2:0
ALU
0010
01
0
0
1
0
![Page 66: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/66.jpg)
Carnegie Mellon
68
Extended Functionality: addi
SignImm
CLK
A RD
Instruction
Memory
+
4
A1
A3
WD3
RD2
RD1WE3
A2
CLK
Sign Extend
Register
File
0
1
0
1
A RD
Data
Memory
WD
WE0
1
PC0
1
PC' Instr25:21
20:16
15:0
5:0
SrcB
20:16
15:11
<<2
+
ALUResult ReadData
WriteData
SrcA
PCPlus4
PCBranch
WriteReg4:0
Result
31:26
RegDst
Branch
MemWrite
MemtoReg
ALUSrc
RegWrite
Op
Funct
Control
Unit
Zero
PCSrc
CLK
ALUControl2:0
ALU
No change to datapath
![Page 67: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/67.jpg)
Carnegie Mellon
69
Control Unit: addi
Instruction Op5:0 RegWrite RegDst AluSrc Branch MemWrite MemtoReg ALUOp1:0
R-type 000000 1 1 0 0 0 0 10
lw 100011 1 0 1 0 0 1 00
sw 101011 0 X 1 0 1 X 00
beq 000100 0 X 0 1 0 X 01
addi 001000 1 0 1 0 0 0 00
![Page 68: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/68.jpg)
Carnegie Mellon
70
Extended Functionality: j
SignImm
CLK
A RD
Instruction
Memory
+
4
A1
A3
WD3
RD2
RD1WE3
A2
CLK
Sign Extend
Register
File
0
1
0
1
A RD
Data
Memory
WD
WE0
1
PC0
1PC'
Instr25:21
20:16
15:0
5:0
SrcB
20:16
15:11
<<2
+
ALUResult ReadData
WriteData
SrcA
PCPlus4
PCBranch
WriteReg4:0
Result
31:26
RegDst
Branch
MemWrite
MemtoReg
ALUSrc
RegWrite
Op
Funct
Control
Unit
Zero
PCSrc
CLK
ALUControl2:0
ALU
0
1
25:0 <<2
27:0 31:28
PCJump
Jump
![Page 69: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/69.jpg)
Carnegie Mellon
71
Control Unit: Main Decoder
Instruction Op5:0 RegWrite RegDst AluSrc Branch MemWrite MemtoReg ALUOp1:0 Jump
R-type 000000 1 1 0 0 0 0 10 0
lw 100011 1 0 1 0 0 1 00 0
sw 101011 0 X 1 0 1 X 00 0
beq 000100 0 X 0 1 0 X 01 0
j 000100 0 X X X 0 X XX 1
![Page 70: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/70.jpg)
Carnegie Mellon
72
Processor Performance
How fast is my program?▪ Every program consists of a series of instructions
▪ Each instruction needs to be executed.
![Page 71: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/71.jpg)
Carnegie Mellon
73
Processor Performance
How fast is my program?▪ Every program consists of a series of instructions
▪ Each instruction needs to be executed.
So how fast are my instructions ?▪ Instructions are realized on the hardware
▪ They can take one or more clock cycles to complete
▪ Cycles per Instruction = CPI
![Page 72: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/72.jpg)
Carnegie Mellon
74
Processor Performance
How fast is my program?▪ Every program consists of a series of instructions
▪ Each instruction needs to be executed.
So how fast are my instructions ?▪ Instructions are realized on the hardware
▪ They can take one or more clock cycles to complete
▪ Cycles per Instruction = CPI
How much time is one clock cycle?▪ The critical path determines how much time one cycle requires =
clock period.
▪ 1/clock period = clock frequency = how many cycles can be done each second.
![Page 73: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/73.jpg)
Carnegie Mellon
75
Processor Performance
Now as a general formula▪ Our program consists of executing N instructions.
▪ Our processor needs CPI cycles for each instruction.
▪ The maximum clock speed of the processor is f,and the clock period is therefore T=1/f
![Page 74: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/74.jpg)
Carnegie Mellon
76
Processor Performance
Now as a general formula▪ Our program consists of executing N instructions.
▪ Our processor needs CPI cycles for each instruction.
▪ The maximum clock speed of the processor is f,and the clock period is therefore T=1/f
Our program will execute in
N x CPI x (1/f) = N x CPI x T seconds
![Page 75: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/75.jpg)
Carnegie Mellon
77
How can I Make the Program Run Faster?
N x CPI x (1/f)
![Page 76: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/76.jpg)
Carnegie Mellon
78
How can I Make the Program Run Faster?
N x CPI x (1/f)
Reduce the number of instructions▪ Make instructions that ‘do’ more (CISC)
▪ Use better compilers
![Page 77: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/77.jpg)
Carnegie Mellon
79
How can I Make the Program Run Faster?
N x CPI x (1/f)
Reduce the number of instructions▪ Make instructions that ‘do’ more (CISC)
▪ Use better compilers
Use less cycles to perform the instruction▪ Simpler instructions (RISC)
▪ Use multiple units/ALUs/cores in parallel
![Page 78: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/78.jpg)
Carnegie Mellon
80
How can I Make the Program Run Faster?
N x CPI x (1/f)
Reduce the number of instructions▪ Make instructions that ‘do’ more (CISC)
▪ Use better compilers
Use less cycles to perform the instruction▪ Simpler instructions (RISC)
▪ Use multiple units/ALUs/cores in parallel
Increase the clock frequency▪ Find a ‘newer’ technology to manufacture
▪ Redesign time critical components
▪ Adopt pipelining
![Page 79: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/79.jpg)
Carnegie Mellon
81
Single-Cycle Performance
TC is limited by the critical path (lw)
SignImm
CLK
A RD
Instruction
Memory
+
4
A1
A3
WD3
RD2
RD1WE3
A2
CLK
Sign Extend
Register
File
0
1
0
1
A RD
Data
Memory
WD
WE0
1
PC0
1
PC' Instr25:21
20:16
15:0
5:0
SrcB
20:16
15:11
<<2
+
ALUResult ReadData
WriteData
SrcA
PCPlus4
PCBranch
WriteReg4:0
Result
31:26
RegDst
Branch
MemWrite
MemtoReg
ALUSrc
RegWrite
Op
Funct
Control
Unit
Zero
PCSrc
CLK
ALUControl2:0
ALU
1
0100
1
0
1
0 0
![Page 80: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/80.jpg)
Carnegie Mellon
82
Single-Cycle Performance
Single-cycle critical path:
▪ Tc = tpcq_PC + tmem + max(tRFread, tsext + tmux) + tALU + tmem + tmux + tRFsetup
In most implementations, limiting paths are:
▪ memory, ALU, register file.
▪ Tc = tpcq_PC + 2tmem + tRFread + tmux + tALU + tRFsetup
SignImm
CLK
A RD
Instruction
Memory
+
4
A1
A3
WD3
RD2
RD1WE3
A2
CLK
Sign Extend
Register
File
0
1
0
1
A RD
Data
Memory
WD
WE0
1
PC0
1
PC' Instr25:21
20:16
15:0
5:0
SrcB
20:16
15:11
<<2
+
ALUResult ReadData
WriteData
SrcA
PCPlus4
PCBranch
WriteReg4:0
Result
31:26
RegDst
Branch
MemWrite
MemtoReg
ALUSrc
RegWrite
Op
Funct
Control
Unit
Zero
PCSrc
CLK
ALUControl2:0
ALU
1
0100
1
0
1
0 0
![Page 81: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/81.jpg)
Carnegie Mellon
83
Single-Cycle Performance Example
Element Parameter Delay (ps)
Register clock-to-Q tpcq_PC 30
Register setup tsetup 20
Multiplexer tmux 25
ALU tALU 200
Memory read tmem 250
Register file read tRFread 150
Register file setup tRFsetup 20
Tc =
![Page 82: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/82.jpg)
Carnegie Mellon
84
Single-Cycle Performance Example
Element Parameter Delay (ps)
Register clock-to-Q tpcq_PC 30
Register setup tsetup 20
Multiplexer tmux 25
ALU tALU 200
Memory read tmem 250
Register file read tRFread 150
Register file setup tRFsetup 20
Tc = tpcq_PC + 2tmem + tRFread + tmux + tALU + tRFsetup
= [30 + 2(250) + 150 + 25 + 200 + 20] ps
= 925 ps
![Page 83: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/83.jpg)
Carnegie Mellon
85
Single-Cycle Performance Example
Example:
For a program with 100 billion instructions executing on a single-cycle MIPS processor:
![Page 84: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/84.jpg)
Carnegie Mellon
86
Single-Cycle Performance Example
Example:
For a program with 100 billion instructions executing on a single-cycle MIPS processor:
Execution Time = # instructions x CPI x TC
= (100 × 109)(1)(925 × 10-12 s)
= 92.5 seconds
![Page 85: Microarchitecture - ETH Z · Carnegie Mellon 10 Let us Start with Building the Processor Program is stored in a (read-only) memory as 32-bit binary values. Memory addresses are also](https://reader033.vdocument.in/reader033/viewer/2022042103/5e807dd52eb6152f8c71e1d6/html5/thumbnails/85.jpg)
Carnegie Mellon
87
What Did We Learn?
How to determine the performance of processors
▪ CPI
▪ Clock speed
▪ Number of instructions
Single-cycle MIPS architecture
▪ Learned individual components
▪ ALU
▪ Data Memory
▪ Instruction Memory
▪ Register File
▪ Discussed implementation of some instructions
▪ Explained the control flow