CE
KIẾN TRÚC MÁY TÍNH
CHƯƠNG 4 BỘ XỬ LÝ (THE PROCESSOR)
CE
KIẾN TRÚC MÁY TÍNH
CHƯƠNG 4 BỘ XỬ LÝ (THE PROCESSOR)
Phần 1. Xây dựng đường dữ liệu (Datapath)
Phần 2. Kỹ thuật ống dẫn (Pipeline)
CE
KIẾN TRÚC MÁY TÍNH
CHƯƠNG 4 BỘ XỬ LÝ (THE PROCESSOR)
Phần 1. Xây dựng đường dữ liệu (Datapath)
Phần 2. Kỹ thuật ống dẫn (Pipeline)
BỘ XỬ LÝ
CE
Nội dung phần 1 1. Giới 2. Nhắc
thiệu lại các quy ước thiết kế logic
3. Xây dựng đường dữ liệu (datapath) đơn giản 4. Hiện
thực datapath đơn chu kỳ
BỘ XỬ LÝ
CE
Nội dung 1. Giới 2. Nhắc
thiệu lại các quy ước thiết kế logic
3. Xây dựng đường dữ liệu (datapath) đơn giản 4. Hiện
thực datapath đơn chu kỳ
Giới thiệu
CE Hiệu
suất của một máy tính được xác định bởi ba yếu tố:
– Tổng số câu lệnh – Chu kỳ xung clock – Số chu kỳ xung clock trên một lệnh (Clock cycles per instruction − CPI)
Được xác định bởi trình biên dịch và kiến trúc tập lệnh Được xác định bởi quá trình hiện thực bộ xử lý
Mục đích chính của chương này: - Giải thích quy tắc hoạt động và hướng dẫn xây dựng datapath cho một bộ xử lý chứa một số lệnh đơn giản (giống kiến trúc tập lệnh dạng MIPS), gồm hai ý chính: •
•
Thiết kế datapath Hiện thực datapath đã thiết kế
MIPS ( bắt nguồn từ chữ viết tắt của ‘Microprocessor without Interlocked Pipeline Stages’) là một kiến trúc tập tập lệnh dạng RISC, được phát triển bởi MIPS Technologies (trước đây là MIPS Computer Systems, Inc.)
Giới thiệu
CE
Chương này chỉ xem xét 8 lệnh trong 3 nhóm chính của tập lệnh MIPS:
Nhóm lệnh tham khảo bộ nhớ (lw và sw)
Nhóm lệnh liên quan đến logic và số học (add, sub, AND, OR , và slt)
Nhóm lệnh nhảy (Lệnh nhảy với điều kiện bằng beq)
CE
Giới thiệu
Tổng quan các lệnh cần xem xét: Nhóm lệnh tham khảo bộ nhớ :
Nạp lệnh Đọc một/hai thanh ghi Sử dụng ALU Truy xuất bộ nhớ để đọc/ghi dữ liệu Nhóm lệnh logic và số học:
Nạp lệnh Đọc một/hai thanh ghi Sử dụng ALU Ghi dữ liệu vào thanh ghi Nhóm lệnh nhảy:
Nạp lệnh Đọc một/hai thanh ghi Sử dụng ALU Chuyển đến địa chỉ lệnh tiếp theo dựa trên kết quả so sánh
CE
Giới thiệu
Hình ảnh datapath của một bộ xử lý với 8 lệnh MIPS: add, sub, AN D, OR, slt, lw, sw vàbeq
BỘ XỬ LÝ
CE
Nội dung 1. Giới 2. Nhắc
thiệu lại các quy ước thiết kế logic
3. Xây dựng đường dữ liệu (datapath) đơn giản 4. Hiện
thực datapath đơn chu kỳ
Quy ước thiết kế
CE
Phần này nhắc lại các khái niệm: Mạch
tổ hợp (Combinational): ALU
Mạch
tuần tự (Sequential): instruction/data memories và thanh ghi
Tín hiệu
điều khiển (Control signal)
Tín hiệu
dữ liệu (Data signal)
Bus
Asserted (assert): Khi tín hiệu ở mức cao hoặc ‘true’
Deasserted (deassert): Khi tín hiệu ở mức thấp hoặc ‘false’
BỘ XỬ LÝ
CE
Nội dung 1. Giới 2. Nhắc
thiệu lại các quy ước thiết kế logic
3. Xây dựng đường dữ liệu (datapath) đơn giản 4. Hiện
thực datapath đơn chu kỳ
Quy trình thực thi lệnh
CE
Instruction Fetch (tìm nạp Instruction Fetch
n o i t c u r t s n I t x e N
Instruction Decode Operand Fetch
lệnh):
– Nạp lệnh từ bộ nhớ (memory) – Địa chỉ của lệnh lưu trong thanh ghi Program Counter (PC)
Instruction Decode ( giải mã lệnh):
– Tìm ra lệnh thực hiện Operand Fetch (Tìm nạp toán hạn):
– Lấy các toán hạng cần thiết cho lệnh Execute
Execute (thực thi):
Result
– Thực hiện câu lệnh
Write
Result Write (Store):
– Lưu trữ kết quả
MIPS Instruction Executions
CE
3
giai đoạn thực thi lệnh trong 3 nhóm lệnh MIPS cơ bản
Giai đoạn
add $3, $1, $2
lw $3, 20( $1 )
standard
standard
Fetch & Decode
Operand Fetch
Fetch and Decode không được hiển thị:
Read [$1] as opr1 oRead [$2] as opr2 o
Read [$1] as opr1 oUse 20 as opr2
Result Write
standard
Read [$1] as opr1 oRead [$2] as opr2
o
o
Result = opr1 + opr2
MemAddr = opr1 + opr2 oUse MemAddr to read from memory
Taken = (opr1 == opr2 )? Target = PC + Label*
Result stored in $3
Memory data stored in $3
if (Taken ) PC = Target
o
Execute
beq $1, $2, label
opr = Operand MemAddr = Memory Address
* = simplification, not exact
5-STAGE MIPS EXECUTION
CE
Thay đổi thiết kế các giai đoạn thực hiện lệnh : – Gộp giai đoạn Decode và Operand Fetch – Giai đoạn Decode khá đơn giản MIPS – Tách giai đoạn Execute nto ALU (Calculation) and M emor y Access add $3, add $3, $1, $1, $2 $2
lw $3, $3, 20( 20( $1 $1 ) ) lw
beq $1, $2, $2, label label beq $1,
Read inst. at [PC]
Read inst. at [PC]
Read inst. at [PC]
Fetch Decode & Operand Fetch ALU
Read [$1] as opr1 oRead [$2] as opr2 o
Result = opr1 + opr2
Read [$1] as opr1 oRead [$2] as opr2 o
MemAddr = opr1 + opr2
Taken = (opr1 == opr2 )? Target = PC + Label*
Use MemAddr to read from memory
Memory Access Result Write
Read [$1] as opr1 oUse 20 as opr2 o
Result stored in $3
Memory data stored in $3
if (Taken) PC = Target
CE
Quy trình thực thi lệnh của MIPS (5 công đoạn)
Fetch
n o i t c u r t s n I t x e N
Instruction Decode A L U Memory Access
Result Write
Instruction Fetch (Nạp lệnh) Instruction Decode & Operand Fetch (Giải mã và lấy các toán hạng cần thiết , Gọi tắt là
“Instruction Decode”) ALU (Giai đoạn sử dụng ALU hay giai đoạn thực thi)
Memory Access (Giai đoạn truy xuất vùng nhớ ) Result Write (Giai đoạn ghi lại kết quả/lưu trữ )
CE
Quy trình thực thi lệnh của MIPS (5 công đoạn)
Fetch
n o i t c u r t s n I t x e N
Instruction Decode A L U Memory Access
Result Write
Instruction Fetch (Nạp lệnh) Instruction Decode & Operand Fetch (Giải mã và lấy các toán hạng cần thiết , Gọi tắt là
“Instruction Decode”) ALU (Giai đoạn sử dụng ALU hay giai đoạn thực thi)
Memory Access (Giai đoạn truy xuất vùng nhớ ) Result Write (Giai đoạn ghi lại kết quả/lưu trữ )
Giai đoạn tìm nạp lệnh (Instruction Fetch)
CE
Instruction Fetch Stage:
1. Sử dụng thanh ghi Program Counter (PC) để tìm nạp lệnh
từ bộ nhớ •
Thanh ghi PC là một thanh ghi đặc biệt trong bộ vi xử lý
2. Tăng giá trị trong thanh ghi PC lên 4 đơn vị để lấy địa chỉ của lệnh tiếp theo • Tại sao địa chỉ lệnh tiếp theo là PC + 4? • Chú ý, lệnh rẽ nhánh ( branch) và lệnh nhảy ( jump) là một trường hợp ngoại lệ Kết
quả của giai đoạn này là đầu vào cho giai đoạn
tiếp theo (Decode): Lệnh sẽ được thực thi
CE
Fetch Stage: Block Diagram A simple adder Add 4 PC
Read address
Instruction
Instruction
Instruction memory
A register Memory which stores program instructions
D e c o d e S t a g e
Instruction Memory
CE
Đóng
vai trò lưu trữ lệnh
– Has an internal state that stores information Cung cấp
Instruction Address Instruction
địa chỉ của lệnh
Instruction Memory
– Giả sử M là giá trị địa chỉ đầu vào của lệnh M thì bộ nhớ sẽ xuất ra kết quả là nội dung của lệnh tại địa chỉ đó – Cách sắp xếp của bộ nhớ giống như hình bên phải
Memory
……….. 2048 add $3, $1, $2 2052 sll $4, $3, 2 2056
andi $1, $4, 0xF
……
………..
Adder
CE
Mạch
logic kết hợp để cộng 2 số
Đầu vào:
– Hai số 32-bit A, B Đầu ra: – A + B
A A+B Add
B
Sum
The Idea of Clocking
CE
Dường
như thanh ghi PC được đọc và cập nhật cùng lúc:
– PC hoạt động chính xác như thế nào? Magic of clock : – PC được đọc trong nửa clock đầu và cập nhật thành PC+4 trong lần kích thích cạnh lên tiếp
Add 4
PC In
Time
Read address
Clk
Instruction
Instruction memory
PC In
100 104
104 108
108 112
112 116
CE
Quy trình thực thi lệnh của MIPS (5 công đoạn)
Fetch
n o i t c u r t s n I t x e N
Instruction Decode A L U Memory Access
Result Write
Instruction Fetch (Nạp lệnh) Instruction Decode & Operand Fetch (Giải mã và lấy các toán hạng cần thiết , Gọi tắt là
“Instruction Decode”) ALU (Giai đoạn sử dụng ALU hay giai đoạn thực thi)
Memory Access (Giai đoạn truy xuất vùng nhớ ) Result Write (Giai đoạn ghi lại kết quả/lưu trữ )
CE
Giai đoạn Decode
Instruction Decode Stage:
– Lấy nội dung dữ liệu trong các trường (field) của lệnh: 1. Đọc opcode để xác định kiểu lệnh và chiều dài của các 2. Đọc dữ liệu từ các thanh ghi cần thiết • Có thể 2 ( lệnh add ), 1 (lệnh addi) hoặc 0 (lệnh j) Đầu
vào từ giai đoạn trước (Fetch):
– Instruction to be executed Đầu
ra cho giai đoạn tiếp theo (Execute):
– Operation and the necessary operands
Decode Stage: Block Diagram
CE
Register Number
F e t c h S t a g e
Inst.
5
Read register 1
5
Read register 2
5
Write register
Read data 1
Register File
Data
Operands
Read data 2
Collection of registers, known as register file
E x e c u t e S t a g e
CE
Một
Register File tập 32 thanh ghi:
– Mỗi thanh ghi có chiều dài 32 bit và có thể được đọc hoặc ghi bằng cách chỉ ra chỉ số của thanh ghi – Với mỗi lệnh, cho phép đọc nhiều nhất từ 2 thanh ghi – Với mỗi lệnh, cho phép ghi vào nhiều nhất một thanh ghi RegWrite : là một tín hiệu điều khiển nhằm mục đích: – Cho phép ghi vào một thanh ghi hay không – 1(True) = Write, 0 (False) = No Write Register Number
5
Read register 1
5
Read register 2
5
Data
Write register Write data
Read data 1
Register File Read data 2
RegWrite
Data
Decode Stage: R-Type Instruction
CE
add $8, $9, $10 o 0 3 p 0 1 0 : c o 0 2 d 0 6 e 0 2 5 r : s 2 1
0 1 0 0 1
2 0 r : t 1 6
0 1 0 1 0
Inst [25:21]
5
Read register 1
5
Read register 2
5
1 0 5 r 1 : d 0 1 0 1 0
content of register $9
Register File
Write data
s 0 1 h 0 0 0 : a m 0 6 t 0 f 1 5 u 0 : n 0 0 c 0 t 0 0
Write register
Read data 1
Read data 2
content of register $10
RegWrite
Result to be stored (produced by later stage)
Notation: Inst [Y:X] = bits X to Y in Instruction
Decode Stage: I-Type Instruction
CE
addi $21, $22, -50 o 0 3 p 0 1 1 : c o 0 2 d 0 6 e 0 2 5 r : s 2 1
1 0 1 1 0
2 0 r : t 1 6
1 0 1 0 1 1 1 1 1
1 I m 1 m 1 1 1 e 5 : d i 1 0 1 a t 0 e 0 1 1 1 0
Inst [25:21]
5
Read register 1
5
Read register 2
5
Write register Write data
Read data 1
Content of register $22
Register File Read data 2
RegWrite
Problems: - Thanh ghi đích $21 “đặt không đúng vị trí” - Read Data 2 là một hằng số, không phải đọc từ thanh ghi
Decode Stage: Choice in Destination addi $21, $22, -50 o 0 3 p 0 1 1 : c o 0 2 d 0 6 e 0 2 5 r : s 2 1
1 0 1 1 0
2 0 r : t 1 6
1 0 1 0 1
Inst [25:21]
1 1 1 0
Read register 1
5
Read register 2
5
1 1 1 1 1 I m 1 m 1 1 1 e 5 : d i 1 0 1 a t 0 e 0
5
Inst [15:11]
M U X
Write register Write data
RegDst RegDst: A control signal to choose either Inst[20:16] or Inst[15:11] as the write register number
Read data 1
Register File Read data 2
Solution (Wr. Reg. No.): Sử dụng một multiplexer để lựa chọn chỉ số thanh ghi cho ngõ write register chính xác dựa trên từng loại lệnh
Multiplexer
CE
Chức
năng:
– Chọn một input từ tập input đầu vào
Control m
Inputs:
– n đường vào có cùng chiều rộng Control:
in0
. . . inn-1
M U X
out
– Cần m bit trong đó n = 2m Output:
Control=0 select in0 Control=3 select in3
– Chọn đường input thứ I nếu giá trị tín hiệu điều khiển control=i
Decode Stage: Choice in Data 2 o 0 3 p 0 1 1 : c o 0 2 d 0 6 e 0 2 5 r : s 2 1
1 0 1 1 0
2 0 r : t 1 6
1 0 1 0 1 1 1 1 1
1 I m 1 m 1 1 e 1 5 : d i 1 0 a 1 t 0 e 0 1 1 1 0
addi $21, $22, -50 Inst [25:21]
5
Read register 1
5
Read register 2
5
Inst [15:11]
M U X
Write register
Read data 1
Register File Read data 2
Write data
M U X
RegWrite
RegDst Inst [15:0]
16
Sign Extend
32
ALUSrc
Solution (Rd. Data 2):
Sử dụng một multiplexer để chọn chính xác toán hạng thứ 2. Sign extend: the 16-bit immediate value to 32-bit
ALUSrc: A control signal to choose either "Read data 2" or the sign extended Inst[15:0] as the second operand
Decode Stage: Load Word Instruction
CE
Xem ví dụ sau: "lw $21, -50($22)" – Có cần phải thay đổi thành phần nào?
o 1 3 p 0 1 0 : c o 0 2 d 1 6 e 1 2 5 r : s 2 1
1 0 1 1 0
2 0 r : t 1 6
1 0 1 0 1 1 1 1 1
I 1 m 1 1 m 1 e 1 5 : d i 1 0 a 1 t 0 e 0 1 1 1 0
Inst [25:21]
5
Read register 1
5
Read register 2
5
Inst [15:11]
M U X
Write register Write data
Read data 1
Register File Read data 2
RegWrite
M U X
RegDst Inst [15:0]
16
Sign Extend
32
ALUSrc
Decode Stage: Branch Instruction
CE
$0, 3" " Example: beq $9, o 0 3 p 0 1 0 : c o 1 2 d 0 6 e 0 2 5 r : s 2 1
0 1 0 0 1
2 0 r : t 1 6
0 0 0 0 0 0 0 0 0
I m m 1 e 5 : d i 0 a t e
– Cần tính kết quả rẽ nhánh và đích đến cùng một lúc ! – Giải quyết vấn đề này trong giai đoạn của ALU
Inst [25:21]
0 0 1 1
Read register 1
5
Read register 2
5
Inst [15:11]
0 0 0 0 0 0 0 0
5
M U X
Write register Write data
Read data 1
Register File Read data 2
RegWrite
RegDst Inst [15:0]
16
Sign Extend
32
M U X ALUSrc
CE
Decode Stage: tổng kết
Inst [25:21]
Inst[31:0] Inst [15:11]
5
Read register 1
5
Read register 2
5
Write register
M U X
Read data 1
Registers
Write data
Read data 2
RegWrite
RegDst Inst [15:0]
16
Operand 1
Sign Extend
32
M U X ALUSrc
Operand 2
CE
Quy trình thực thi lệnh của MIPS (5 công đoạn)
Fetch
n o i t c u r t s n I t x e N
Instruction Decode A L U Memory Access
Result Write
Instruction Fetch (Nạp lệnh) Instruction Decode & Operand Fetch (Giải mã và lấy các toán hạng cần thiết , Gọi tắt là
“Instruction Decode”) ALU (Giai đoạn sử dụng ALU hay giai đoạn thực thi)
Memory Access (Giai đoạn truy xuất vùng nhớ ) Result Write (Giai đoạn ghi lại kết quả/lưu trữ )
ALU Stage: Yêu cầu
CE
Instruction ALU Stage:
– ALU = Arithmetic-Logic Unit – Thực hiện các nhóm lệnh sau: • Arithmetic (e.g. add , sub), Shifting (e.g. sll), Logical (e.g. and , or)
• Memory operation (e.g. lw, sw): tính toán địa chỉ , ): thực hiện so sánh các giá trị trên • Branch operation (e.g. bne beq thanh ghi và tính toán địa chỉ đích Input
from previous stage (Decode):
– Operation and Operand(s) Output
to the next stage ( Memory):
– Calculation result
ALU Stage: Block Diagram
CE
D e c o d e S t a g e
Operands
ALU result
ALU
M e m o r y S t a g e
Khối mạch thực hiện các phép toán logic và số học
Thành phần: Arithmetic Logical Unit ALU (Arithmetic-logical unit)
– Sử dụng logic kết hợp để thực hiện các toán tử số học và logic
4
A (A op B) == 0? isZero?
Inputs:
– 2 số 32-bit Control:
– 4-bit để quyết định các toán tử đặc biệt Outputs:
– Kết quả của phép toán số học hoặc logic – Một bit tín hiệu để chỉ ra rằng kết quả có bằng 0 hay không
ALUcontrol
ALU
B
ALU result
A op B
ALUcontrol
Function
0000
AND
0001
OR
0010
add
0110
subtract
0111
slt
1100
NOR
ALU Stage: Non-Branch Instructions
CE
We
can handle non-branch instructions easily:
add $8, $9, $10
o 0 3 p 0 1 0 : c o 0 2 d 0 6 e 0 2 5 r : s 2 1
0 1 0 0 1
2 0 r : t 1 6
0 1 0 1 0
1 0 5 r 1 : d 0 1 0 1 0 s 0 1 h 0 0 0 : a m 0 6 t 0 f 1 5 u 0 : n 0 0 c 0 t 0 0
ALUcontrol
Inst [25:21]
5
Read register 1
5
Read register 2
5
Inst [15:11]
M U X
Write register Write data
Read data 1
isZero?
Register File Read data 2
RegWrite
RegDst Inst [15:0]
4
ALU
M U X ALUSrc
16
Sign Extend
32
ALU result
ALUcontrol: Thiết lập giá trị cho ALUcontrol cần sử dụng trường opcode và funct
ALU Stage: Brach Instructions
CE
Lệnh
rẽ nhánh thì khó hơn vì phải tính toán hai phép toán:
$0, 3" Example: beq $9, " 1.
2.
Kết quả rẽ nhánh: • Sử dụng ALU để so sánh thanh ghi • Tín hiệu 1-bit "isZero?“ để kiểm tra tính chất bằng/không bằng Địa chỉ đích của nhánh: • Sử dụng một bộ cộng để tính địa chỉ • Cần PC (từ Fetch Stage) • Cần Offset (từ Decode Stage)
Complete ALU Stage
Add
PC
M U X
4 Add Left Shift 2-bit
o 0 3 p 0 1 0 : c o 1 2 d 0 6 e 0 2 0 5 r 1 : s 0 2 0 1 1 2 0 r : t 1 6
PCSrc ALUcontrol
Inst [25:21]
0 0 0 0 0 0 0 0 0
5
Read register 1
5
Read register 2 Register
5
Inst [15:11]
I 0 m 0 m 0 1 0 e 5 d : i 0 0 a 0 t 0 e 0 0 Inst 0 1 1
M U X
Write register Write data
Read data 1
Read data 2
RegDst 16
Sign Extend
32
Control Signal to select between (PC+4) or Branch Target
isZero?
File
RegWrite
[15:0]
4
PCSrc:
ALU
ALU result
M U X ALUSrc
E.g. beq $9, " $0, 3"
CE
Quy trình thực thi lệnh của MIPS (5 công đoạn)
Fetch
n o i t c u r t s n I t x e N
Instruction Decode A L U Memory Access
Result Write
Instruction Fetch (Nạp lệnh) Instruction Decode & Operand Fetch (Giải mã và lấy các toán hạng cần thiết , Gọi tắt là
“Instruction Decode”) ALU (Giai đoạn sử dụng ALU hay giai đoạn thực thi)
Memory Access (Giai đoạn truy xuất vùng nhớ ) Result Write (Giai đoạn ghi lại kết quả/lưu trữ )
Memory Stage: Yêu cầu
CE
Instruction Memory Access Stage :
– Chỉ có lệnh Lo Load ad và và Stor Storee cần thực hiện các thao tác trong giai đoạn này:
• Sử dụng địa chỉ vùng nhớ được tính tính toán toán ở giai đoạn ALU • Đọc ra hoặc ghi vào vùng nhớ dữ liệu – Tất cả các lệnh khác sẽ rãnh ãnh tron trong g giai giai đoạn này Input
from previous stage (ALU): – Kết quả tính tính toán toán được dù dùng ng làm làm địa chỉ vùng nhớ (nếu có thể ứng dụng)
Output
to the next stage ( Result Write): – Kết quả được lưu trữ lại (nếu có thể áp dụng)
Memory Stage: Block Diagram
CE
MemWrite
A L U S t a g e
Address
Result
Write Data
Read Data
Data Memory
MemRead
Memory which stores data values
R e s u l t S t o r e S t a g e
Thành phần: Data Memory Thành phần
lưu trữ dữ liệu của một chương
trình MemWrite
Inputs:
– Address: Địa chỉ vùng nhớ – Write Data: Dữ liệu sẽ được ghi vào vùng nhớ đối với lệnh Store Control:
– Tín hiệu đọc (Mem (MemRe Read ad ) và gh ghii (Mem (MemWr Writ ite) e);; chỉ một tín hiệu được bật lên tại bất kì một thời điểm nào Output:
– Dữ liệu được đọc từ vùng nhớ đối với lệnh Load
Address
Write Data
Read Data
Data Memory
MemRead
Memory Stage: Load Instructions
CE
Only
relevant parts of Decode & ALU Stage are shown
lw $21, -50($22) o 0 1 3 p 0 0 1 c 0 0 : o 0 1 2 d 0 1 6 e 0 1 2 5 r : s 2 1
0 1 0 1 0 1 0 1 0 1
2 0 r : t 1 6
0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1
1 I 0 1 m 0 0 1 m 1 0 1 e 5 d : i 0 1 0 1 a 0 0 t 0 0 e 0
ALUcontrol Inst [25:21]
4
5 RR1 5
RD1
MemWrite
RR2
Registers 5
Inst [15:11]
0 1 Inst 0 1 1 1 0 1
M U X
ALU
WR RD2
M U X
WD
RegWrite RegDst [15:0]
16
Sign Extend
32
ALUSrc
ALU result
Address
Data Memory
Write Data
Read Data
MemRead
Memory Stage: Store Instructions
CE
Need Read Data 2
(Decode) as the Wr ite Data
sw $21, -50($22) o 0 1 3 p 0 0 1 c 0 1 : o 0 1 2 d 0 1 6 e 0 1 2 5 r : s 2 1
0 1 0 1 0 1 0 1 0 1
2 0 r : t 1 6
0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1
1 I 0 1 m 0 0 1 m 1 0 1 e 5 d : i 0 1 0 1 a 0 0 t 0 0 e 0
ALUcontrol Inst [25:21]
4
5 RR1 5
RD1
MemWrite
RR2
Registers 5
Inst [15:11]
0 1 Inst 0 1 1 1 0 1
M U X
ALU
WR RD2
M U X
WD
RegWrite
16
Address
Data Memory
Write Data
RegDst [15:0]
ALU result
Sign Extend
32
Read Data
MemRead
CE
Memory Stage: Non-Memory Instructions
Add
a multiplexer to choose the result to be stored
add $8, $9, $10 o 0 3 p 0 1 0 : c o 0 2 d 0 6 e 0 2 5 r : s 2 1
0 1 0 0 1
2 0 r : t 1 6
0 1 0 1 0
ALUcontrol Inst [25:21]
4
5 RR1 5
RD1
MemWrite RR2
Registers 5
1 0 5 r 1 : d 0 1 0 1 0
Inst [15:11] s 0 1 h 0 0 0 : a m 0 6 t 0 f 1 Inst 5 u 0 : n 0 0 c 0 t 0 0
M U X
ALU
WR RD2
M U X
WD
RegWrite
16
Address
Data Memory
Write Data
RegDst [15:0]
ALU result
Sign Extend
Read Data
32
MemToReg: Tín hiệu điều khiển giúp lựa chọn giá trị lưu vào thanh ghi là từ Read Data hay từ ALU
M U X
MemToReg
CE
Quy trình thực thi lệnh của MIPS (5 công đoạn)
Fetch
n o i t c u r t s n I t x e N
Instruction Decode A L U Memory Access
Result Write
Instruction Fetch (Nạp lệnh) Instruction Decode & Operand Fetch (Giải mã và lấy các toán hạng cần thiết , Gọi tắt là
“Instruction Decode”) ALU (Giai đoạn sử dụng ALU hay giai đoạn thực thi)
Memory Access (Giai đoạn truy xuất vùng nhớ ) Result Write (Giai đoạn ghi lại kết quả/lưu trữ )
CE
Result Write Stage: yêu cầu
Instruction Register Write Stage :
– Những lệnh ghi kết quả của các phép toán vào một thanh ghi • Ví dụ: số học, logic, shifts, load, set-less-than • Cần số thanh ghi đích và kết quả tính toán – Các ngoại lệ là lệnh store, branche, jump: • Không có ghi kết quả Những lệnh này không thực hiện gì trong giai đoạn này Input
from previous stage (Memory): – Kết quả tính toán từ memory or ALU
K t quả của giai đoạn Write: Block CE
M e m o r y S t a g e
Diagram 5
Read register 1
5
Read register 2
5
Result
Công đoạn
Read data 1
Registers Write register Read data 2 Write data
Result Write không có thêm bất kỳ thành phần nào
khác: – Chỉ đơn giản đưa kết quả vào thanh ghi (ngõ Write data của khối Registers/Register file)
– Chỉ số của thanh ghi được ghi vào (ngõ vào Wr ite Register) được sinh ra trong giai đoạn Decode Stage
Result Write Stage: Định tuyến(routing) add $8, $9, $10 o 0 3 p 0 1 0 : c o 0 2 d 0 6 e 0 2 5 r : s 2 1
0 1 0 0 1
2 0 r : t 1 6
0 1 0 1 0
ALUcontrol Inst [25:21]
4
5 RR1 5
RD1
MemWrite RR2
Registers 5
1 0 5 r 1 : d 0 1 0 1 0
Inst [15:11] s 0 1 h 0 0 0 : a m 0 6 t 0 f 1 Inst u 0 5 : n 0 0 c 0 t 0 0
M U X
ALU
WR RD2 WD
RegWrite
M U X
ALU result
Address
Data Memory
Write Data [15:0]
Sign Extend
Read Data
MemToReg
M U X
Instruction Memory Add
PC 4
Instruction
Add
Left Shift 2-bit
Address
0 1 0 0 1
2 0 r : t 1 6
0 1 0 1 0
1 0 5 r 1 : d 0 1 0 1 0
M U X PCSrc
o 0 3 p 0 1 0 : c o 0 2 d 0 6 e 0 2 5 r : s 2 1
C o m p l e t e D a t a p a t h
ALUcontrol Inst [25:21]
4
5 RR1 5
RD1 is0?
RR2
Registers 5
Inst [15:11]
s 0 1 h 0 0 0 : a m 0 6 t 0 f 1 Inst u 0 5 : n 0 0 c 0 t 0 0
M U X
RegDst [15:0]
WR RD2 WD
RegWrite
ALUSrc
M U X
MemWrite
ALU ALU result
Address
Data Memory Write Data
Sign Extend
Read Data
MemRead
MemToReg
M U X
Bài tập
CE
Cho
các lệnh sau, dựa vào sơ đồ khối hình 4.2:
– AND Rd, Rs, Rt – SW Rt,Offs(Rs)
Reg[Rd] = Reg[Rs] AND Reg[Rt] Mem[Reg[Rs] + Offs] = Reg[Rt]
Xác định
các giá trị tín hiệu cho từng lệnh trên
Các khối
sử dụng thực hiện cho lệnh trên.
Bài tập
CE
Different
execution units and blocks of digital logic have different latencies (time needed to do their work). In Figure 4.2 there are seven kinds of major blocks. Latencies of blocks along the critical (longest-latency) path for an instruction determine the minimum latency of that instruction. For the remaining three problems in this exercise, assume the following resource latencies:
What
is the critical path for an MIPS AND instruction?
What
is the critical path for an MIPS load (LW) instruction?
What
is the critical path for an MIPS BEQ instruction?
BỘ XỬ LÝ
CE
Nội dung phần 1 1. Giới 2. Nhắc
thiệu lại các quy ước thiết kế logic
3. Xây dựng đường dữ liệu (datapath) đơn giản 4. Hiện
thực datapath đơn chu kỳ
CE
Hiện thực datapath
1. Inputs của khối “Registers”, “Control” và “Sign-extend”
????
Hiện thực datapath
CE
Trường
op (hay opcode) luôn chứa bits từ 31:26.
thanh ghi dùng để đọc trong tất cả các lệnh luôn luôn là rs và rt, tại vị trí bits từ 25:21 và 20:26.
Hai
Thanh
ghi nền cho lệnh load và store luôn là rs và tại vị trí bits 25:21.
16 bits offset cho beq, lw và sw thì luôn tại vị trí 15:0.
Các thanh ghi đích dùng để ghi kết quả vào ở hai vị trí: Với lw, thanh ghi đích tại vị trí bits từ 20:16 (rt ), trong khi với nhóm lệnh logic và số học, thanh ghi đích ở vị trí 15:11 (rd ). Vì vậy, một multiplexor cần sử dụng ở đây để lựa chọn thanh ghi nào sẽ được ghi.
CE
Hiện thực datapath
Datapath với đầy đủ dữ liệu input cho từng khối
Hiện thực datapath
CE 2. Khối “ALU Control”
????
Hiện thực datapath
CE
Bộ ALU của MIPS gồm 6 chức năng tính toán dựa trên 4 bits điều khiển đầu vào:
Tùy thuộc vào từng nhóm lệnh mà ALU sẽ thực hiện 1 trong 5 chức năng đầu (NOR sẽ được dùng cho các phần khác)
Với các lệnh load word và store word, ALU sử dụng chức năng ‘add’ để tính toán địa chỉ của bộ nhớ
Với các lệnh thuộc nhóm logic và số học, ALU thực hiện 1 trong 5 chức năng (AN D, OR, subtr act, add, và set on less than ), tùy thuộc vào giá trị của trường funct (6 bits) trong mã máy lệnh.
Với
lệnh nhảy nếu bằng, ALU thực hiện chức năng ‘subtract’ để xem điều khiện bằng có đúng không.
CE
Hiện thực datapath
Như vậy, để sinh ra 4 bits điều khiển ALU, một trong số các cách hiện thực có thể là sử dụng thêm một khối điều khiển “ALU Control” “ALU Control” nhận input là 6 bits từ trường funct của mã máy, đồng thời dựa vào 2 bits “ALUOp” được sinh ra từ khối “Control” để sinh ra output là 4 bits điều khiển ALU, theo quy tắc như bảng sau:
Một gợi ý để sinh ra 4 bits điều khiển ALU dựa vào trường “opcode” và trường “ funct ” của mã máy.
CE
Hiện thực datapath
Bảng sự thật: Từ quy tắc hoạt động, bảng sự thật gợi ý cho khối “ALU Control” như sau