Upload
bao-hoang
View
226
Download
0
Embed Size (px)
Citation preview
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 1/96
CE
CHƯƠNG 4
BỘ XỬ LÝ (THE PROCESSOR)
1
KIẾN TRÚC MÁY TÍNH
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 2/96
CE
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)
2
KIẾN TRÚC MÁY TÍNH
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 3/96
CE BỘ XỬ LÝ
Nội dung phần 1
1. Giới thiệu
2. Nhắc 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ỳ
3
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 4/96
CE BỘ XỬ LÝ
Nội dung
1. Giới thiệu
2. Nhắc 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ỳ
4
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 5/96
CE Giới thiệu
5
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 Được xác định bởi trình biên dịchvà kiến trúc tập lệnh
– Chu kỳ xung clock
– Số chu kỳ xung clock trên một lệnh
(Clock cycles per instruction − CPI)
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ộtkiế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.)
Được xác định bởi quá
trình hiện thực bộ xử lý
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 6/96
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 7/96
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 8/96
CE Giới thiệu
8
Hình ảnh datapath của một bộ xử lý với 8 lệnh MIPS: add, sub, AND, OR, slt,
lw, sw vàbeq
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 9/96
CE BỘ XỬ LÝ
Nội dung
1. Giới thiệu
2. Nhắc 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ỳ
9
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 10/96
CEQuy ước thiết kế
10
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)
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’
Bus
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 11/96
CE BỘ XỬ LÝ
Nội dung
1. Giới thiệu
2. Nhắc 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ỳ
11
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 12/96
CE Quy trình thực thi lệnh
Instruction Fetch (tìm nạp 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 (thực thi):
– Thực hiện câu lệnh
Result Write (Store):
– Lưu trữ kết quả
Inst ruct ion
Fetch
Inst ruct ion
Decode
Operand
Fetch
Execute
Result
Write
N e x t I n s t r u c t i o n
12
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 13/96
CE MIPS Instruction Executions
3 giai đoạn thực thi lệnh trong 3 nhóm lệnh MIPS cơ bản
Giai đoạn Fetch and Decode không được hiển thị:
add $3, $1, $2 lw $3, 20( $1 ) beq $1, $2, label
Fetch &
Decode standard standard standard
Operand
Fetch
oRead [$1] as opr1
oRead [$2] as opr2
oRead [$1] as opr1
oUse 20 as opr2
oRead [$1] as opr1
oRead [$2] as opr2
Execute Result = opr1 + opr2
o MemAddr = opr1 + opr2
oUse MemAddr to read from
memory
Taken = (opr1 == opr2 )?
Target = PC + Label*
Result
Write Result stored in $3 Memory data stored in $3
if (Taken)
PC = Target
opr = Operand
MemAddr = Memory Address
* = simplification, not exact
add $3, $1, $2 lw $3, 20( $1 ) beq $1, $2, label
13
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 14/96
CE 5-STAGE MIPS EXECUTION
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 Memory Access
add $3, $1, $2 lw $3, 20( $1 ) beq $1, $2, label
Fetch Read inst. at [PC] Read inst. at [PC] Read inst. at [PC]
Decode &
Operand
Fetch
oRead [$1] as opr1
oRead [$2] as opr2
oRead [$1] as opr1
oUse 20 as opr2
oRead [$1] as opr1
oRead [$2] as opr2
ALU Result = opr1 + opr2 MemAddr = opr1 + opr2Taken = (opr1 == opr2 )?
Target = PC + Label*
Memory
Access
Use MemAddr to read from
memory
Result
Write Result stored in $3 Memory data stored in $3
if (Taken)
PC = Target
add $3, $1, $2 lw $3, 20( $1 ) beq $1, $2, label
14
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 15/96
CE
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ựcthi)
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ữ )
Fetch
Inst ruct ion
Decode
ALU
Memory
Access
Result
Write
N e x t I n s t r u c t i o n
15
Quy trình thực thi lệnh của MIPS (5 công đoạn)
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 16/96
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 17/96
CE Giai đoạn tìm nạp lệnh (Instruction Fetch)
Instruction Fetch Stage:
1. Sử dụng thanh ghi Program Counter (PC) để tìm nạp lệnhtừ 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ạntiếp theo (Decode):
– Lệnh sẽ được thực thi 17
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 18/96
CE Fetch Stage: Block Diagram
Add
PC
4
Readaddress
Instruction
Instructionmemory
A register
Memory which
stores program
instructions
A simple
adder
D e c o d e S t a g e
Instruction
18
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 19/96
CE
Memory
Instruction Memory
Đóng vai trò lưu trữ lệnh – Has an internal state that stores information
Cung cấp địa chỉ của lệnh – 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ủalệnh tại địa chỉ đó
– Cách sắp xếp của bộ nhớ giống như hình bên
phải
InstructionMemory
InstructionAddress
Instruction
2048
20522056 andi $1, $4, 0xF
sll $4, $3, 2
add $3, $1, $2
……
………..
………..
19
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 20/96
CE Adder
Mạch logic kết hợp để cộng 2 số
Đầu vào:
– Hai số 32-bit A, B
Đầu ra: – A + B
Sum Add
A
B
A+B
20
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 21/96
CE The Idea of Clocking
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
PC
4
Readaddress
Instruction
Instructionmemory
In Clk
Time
PC 100 104 108 112
In 104 108 112 116
21
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 22/96
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 23/96
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
23
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 24/96
CE Decode Stage: Block Diagram
F e t c h S t a g
e
Inst.
Readregister 1
Readregister 2
Writeregister
Readdata 1
Readdata 2
Data
Register
Number
Register File
5
5
5
Ex e c u t e S t a
g e
Operands
Collection ofregisters, known as
register file
24
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 25/96
CE Register File
Một 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áchchỉ 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
Readregister 1
Readregister 2
Writeregister
Writedata
Readdata 1
Readdata 2
RegWrite
Data
Data
RegisterNumber Register
File
5
5
5
25
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 26/96
CE Decode Stage: R-Type Instruction
o p c o d e
3 1
:2
6
r s
2 5 :2
1
r t
2 0 :1
6
r d
1 5 :1 1
sh am
t
1 0 : 6
f un
c t
5 : 0
0 0 0 0 0 0
0 1
0 0
1
0 1
0 1
0
0 1
0 0 0
0 0 0 0 0
1 0 0 0 0 0
Readregister 1
Readregister 2
Writeregister
Writedata
Read
data 1
Readdata 2
RegWrite
Register File
5
5
5
content of
register $9
content ofregister $10
Result to be stored
(produced by later
stage)
Inst [25:21]
Notation:
Inst [Y:X]
= bits X to Y in Instruction
26
add $8, $9, $10
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 27/96
CE Decode Stage: I-Type Instruction
0 0 1
0 0 0
1 0 1 1
0
1 0
1 0 1
1 1 1 1
1 1 1 1
1 1
0 0
1 1 1
0
Readregister 1
Readregister 2
Writeregister
Writedata
Readdata 1
Readdata 2
RegWrite
Register File
5
5
5
Content ofregister $22
Imm
e d i
a t e
1 5 : 0
o p c o d e
3 1
:2
6
r s
2 5 :2 1
r t
2 0
:1 6
Inst [25:21]
27
addi $21, $22, -50
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
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 28/96
Decode Stage: Choice in Destination
28
0 0 1
0 0 0
1 0 1 1
0
1 0
1 0 1
1 1 1 1
1 1 1 1
1 1
0 0
1 1 1
0
Readregister 1
Readregister 2
Writeregister
Writedata
Readdata 1
Readdata 2
Register File
5
5
5
Imm
e d i
a t e
1 5 : 0
o p c o d e
3 1
:2
6
r s
2 5 :2 1
r t
2 0
:1 6
Inst [25:21]
Inst [15:11]
M
U
X
RegDst
RegDst:
A control signal to choose either
Inst[20:16] or Inst[15:11] as the
write register number
addi $21, $22, -50
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ựatrên từng loại lệnh
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 29/96
CE Multiplexer
Chức năng:
– Chọn một input từ tập input đầu vào
Inputs:
– n đường vào có cùng chiều rộng
Control:
– Cần m bit trong đó n = 2m
Output:
– Chọn đường input thứ I nếu giá trị tín hiệu điều khiển control=i
Control=0 select in0
Control=3 select in3
in0
inn-1
out
Control
m
.
.
.
M
UX
29
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 30/96
Decode Stage: Choice in Data 2
30
0 0
1 0 0 0
1 0 1 1
0
1 0 1
0 1
1 1 1 1
1 1 1 1
1 1
0 0
1 1 1
0
Readregister 1
Readregister 2
Writeregister
Writedata
Readdata 1
Readdata 2
5
5
5
Imm
e d i
a t e
1 5 : 0
o p
c o d e
3 1
:2
6
r s
2 5 :2 1
r t
2 0 :1
6
Inst [25:21]
Inst [15:11]
M
U
X
RegDst
Inst [15:0]
M
U
X
ALUSrc
RegWrite
Sign
Extend16 32
Register File
ALUSrc:
A control signal tochoose either
"Read data 2" or
the sign extended
Inst[15:0] as the
second operand
addi $21, $22, -50
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
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 31/96
CE Decode Stage: Load Word Instruction
1 0 0 0 1 1
1 0 1 1
0
1 0 1
0 1
1 1 1 1
1 1 1 1
1 1
0 0
1 1 1
0
Readregister 1
Readregister 2
Writeregister
Writedata
Readdata 1
Readdata 2
5
5
5
Imm
e
d i a t e
1 5
: 0
o p c o d e
3 1
:2
6
r s
2 5 :2 1
r t
2 0 :1
6
Inst [25:21]
Inst [15:11]
Xem ví dụ sau: "lw $21, -50($22)"
– Có cần phải thay đổi thành phần nào?
M
U
X
RegDst
Inst [15:0]
M
U
X
ALUSrc
RegWrite
Sign
Extend16 32
Register File
31
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 32/96
CE Decode Stage: Branch Instruction
0 0 0 1
0 0
0 1
0 0
1
0 0 0 0 0
0 0 0 0
0 0
0 0
0 0 0 0
0 0 1 1
Im
m e d i
a t e
1 5 : 0
o p c o d e
3 1
:2
6
r s
2 5 :2
1
r t
2 0 :1
6
Example: " beq $9, $0, 3"
– 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
Readregister 1
Readregister 2
Writeregister
Writedata
Read
data 1
Readdata 2
5
5
5
Inst [25:21]
Inst [15:11]
M
U
X
RegDst
Inst [15:0]
M
U
X
ALUSrc
RegWrite
Sign
Extend16 32
Register File
32
D d St tổ kết
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 33/96
CE Decode Stage: tổng kết
Readregister 1
Readregister 2
Writeregister
Writedata
Readdata 1
Readdata 2
Registers
5
5
5
Inst [25:21]
Inst [15:11]
M
U
X
RegDst
Inst [15:0]
M
U
X
ALUSrc
RegWrite
SignExtend16 32
Operand 1
Operand 2
Inst[31:0]
33
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 34/96
CE
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ựcthi)
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ữ )
Fetch
Inst ruct ion
Decode
ALU
Memory
Access
Result
Write
N e x t I n s t r u
c t i o n
34
Quy trình thực thi lệnh của MIPS (5 công đoạn)
S ê ầ
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 35/96
CE ALU Stage: Yêu cầu
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ỉ
• Branch operation (e.g. bne, beq ): thực hiện so sánh các giá trị trên
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
35
ALU S Bl k Di
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 36/96
CE ALU Stage: Block Diagram
ALUresult
ALU
D e c o d e S t a g e
Operands
M e m or y S t a
g e
Khối mạch thực
hiện các phép toánlogic và số học
36
ầ
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 37/96
Thành phần: Arithmetic Logical Unit
ALU (Arithmetic-logical unit)
– Sử dụng logic kết hợp để thực hiện cáctoán tử số học và logic
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
ALUresult
ALU
ALUcontrol4
isZero?
ALUcontrol Function
0000 AND
0001 OR
0010 add
0110 subtract
0111 slt
1100 NOR
A
B A op B
(A op B) == 0?
37
ALU St N B h I t ti
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 38/96
CE ALU Stage: Non-Branch Instructions
We can handle non-branch instructions easily:
Readregister 1
Readregister 2
Writeregister
Writedata
Read
data 1
Readdata 2
Register File
5
5
5
Inst [25:21]
Inst [15:11]
M
U
X
RegDst
Inst [15:0]
M
U
X
ALUSrc
RegWrite
Sign
Extend16 32
ALUresult
ALU
ALUcontrol
4
isZero?
o p c o d e
3 1
:2
6
r s
2 5 :2
1
r t
2 0 :1
6
r d
1 5 :1 1
sh
am
t
1 0 : 6
f un
c t
5 : 0
0 0 0 0 0 0
0 1
0 0
1
0 1
0 1
0
0 1
0 0 0
0 0 0 0 0
1 0 0 0 0 0
ALUcontrol:
Thiết lập giá trị cho
ALUcontrol cần sử dụngtrường opcode và funct
38
add $8, $9, $10
ALU St B h I t ti
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 39/96
CE ALU Stage: Brach Instructions
Lệnh rẽ nhánh thì khó hơn vì phải tính toán hai phép toán:
Example: " beq $9, $0, 3"
1. 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
2. Đị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)
39
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 40/96
0 0 0 1
0 0
0 1 0 0 1
0 0 0 0 0
0 0 0
0 0 0 0 0
0 0 0 0
0 0 1 1
Imm
e d i
a t e
1 5 : 0
o p c o d e
3 1
:2
6
r s
2 5 :2 1
r t
2 0 :1
6
Readregister 1
Readregister 2
Writeregister
Write
data
Readdata 1
Readdata 2
Register File
5
5
5
Inst [25:21]
Inst [15:11]
M
U
X
RegDst
Inst [15:0]
M
UX
ALUSrc
RegWrite
Sign
Extend16 32
ALUresult
ALU
ALUcontrol4
isZero?
Left Shift
2-bit
PC Add
4
Add
MU
X
PCSrc
E.g. " beq $9, $0, 3"
Complete ALU Stage
40
PCSrc:Control Signal
to select
between
(PC+4) or
Branch Target
Q t ì h th thi lệ h ủ MIPS (5 ô đ )
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 41/96
CE
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ựcthi)
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ữ )
Fetch
Inst ruct ion
Decode
ALU
Memory
Access
Result
Write
N e x t I n s t r u
c t i o n
41
Quy trình thực thi lệnh của MIPS (5 công đoạn)
Memory Stage: Yêu cầu
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 42/96
CE Memory Stage: Yêu cầu
Instruction Memory Access Stage:
– Chỉ có lệnh Load và Store cần thực hiện các thao tác trong giai đoạnnày:
• Sử dụng địa chỉ vùng nhớ được tính 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 trong giai đoạn này
Input from previous stage (ALU):
– Kết quả tính toán được dùng làm địa chỉ vùng nhớ (nếu có thể ứngdụng)
Output to the next stage (Result Write): – Kết quả được lưu trữ lại (nếu có thể áp dụng)
42
M St Bl k Di
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 43/96
CE Memory Stage: Block Diagram
AL U S t a g e
Result
R e s ul t S t or e S
t a g e
Memory which
stores data values
Data
Memory
Address
ReadData
WriteData
MemRead
MemWrite
43
Thành phần: Data Memory
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 44/96
Thành phần: Data Memory
Thành phần lưu trữ dữ liệu của một chương
trình
Inputs:
– Address: Địa chỉ vùng nhớ
– Write Data: Dữ liệu sẽ được ghi vào vùng nhớ đốivới lệnh Store
Control:
– Tín hiệu đọc (MemRead ) và ghi (MemWrite); chỉ
một tín hiệu được bật lên tại bất kì một thời điểmnào
Output:
– Dữ liệu được đọc từ vùng nhớ đối với lệnh Load
DataMemory
Address
ReadData
WriteData
MemRead
MemWrite
44
Memory Stage: Load Instructions
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 45/96
CE Memory Stage: Load Instructions
Only relevant parts of Decode & ALU Stage are shown
0 0 0 1
0 0
0 1
0 0
1
0 0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 1 1
Im
m e d i
a t e
1 5 : 0
o p c o d e
3 1
:2
6
r s
2 5 :2
1
r t
2 0 :1
6
Inst [25:21]
Inst [15:11]
M
U
X
RegDst
Inst [15:0]
M
U
X
ALUSrc
RR1
RR2
WR
WD
RD1
RD2
Registers
5
5
5
RegWrite
Sign
Extend16 32
ALUresult
ALU
ALUcontrol
4
1 0 0 0 1 1
1 0 1 1
0
1 0 1
0 1
1 1 1 1
1 1 1 1
1 1
0 0
1 1 1
0
Address
WriteData
MemRead
MemWrite
DataMemory
ReadData
45
lw $21, -50($22)
Memory Stage: Store Instructions
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 46/96
CE Memory Stage: Store Instructions
Need Read Data 2 (Decode) as the Write Data
0 0 0 1
0 0
0 1
0 0
1
0 0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 1 1
Im
m e d i
a t e
1 5 : 0
o p c o d e
3 1
:2
6
r s
2 5 :2
1
r t
2 0 :1
6
Inst [25:21]
Inst [15:11]
M
U
X
RegDst
Inst [15:0]
M
U
X
RR1
RR2
WR
WD
RD1
RD2
Registers
5
5
5
RegWrite
Sign
Extend16 32
ALUresult
ALU
ALUcontrol
4
1 0 1
0 1 1
1 0 1 1
0
1 0 1
0 1
1 1 1 1
1 1 1 1
1 1
0 0
1 1 1
0
Address
WriteData
MemRead
MemWrite
DataMemory
ReadData
46
sw $21, -50($22)
M St N M I t ti
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 47/96
CE Memory Stage: Non-Memory Instructions
Add a multiplexer to choose the result to be stored
Inst [25:21]
Inst [15:11]
M
U
X
RegDst
Inst [15:0]
M
U
X
RR1
RR2
WR
WD
RD1
RD2
Registers
5
5
5
RegWrite
Sign
Extend16 32
ALUresult
ALU
ALUcontrol
4
DataMemory
Address
ReadDataWriteData
MemWrite
o p c o d e
3 1
:2
6
r s
2 5 :2 1
r t
2 0 :1
6
r d
1 5 :1 1
s
h am
t
1 0 : 6
f un
c t
5 : 0
0 0 0 0 0 0
0 1
0 0 1
0 1
0 1
0
0 1
0 0 0
0
0 0 0 0
1 0 0 0 0 0
MU
X
MemToReg
47
MemToReg:
Tín hiệu điều khiển giúp lựachọn giá trị lưu vào thanh ghi
là từ Read Data hay từ ALUresult
add $8, $9, $10
Quy trình thực thi lệnh của MIPS (5 công đoạn)
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 48/96
CE
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ựcthi)
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ữ )
Fetch
Inst ruct ion
Decode
ALU
Memory
Access
Result
Write
N e x t I n s t r u
c t i o n
48
Quy trình thực thi lệnh của MIPS (5 công đoạn)
Result Write Stage: yêu cầu
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 49/96
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
49
K t quả của giai đoạn Write: Block
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 50/96
CEK t quả của g đoạn
Diagram
Công đoạn 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ốiRegisters/Register file)
– Chỉ số của thanh ghi được ghi vào (ngõ vào Write Register) được sinh
ra trong giai đoạn Decode Stage
M e m or y S t a g e
Result
Readregister 1
Readregister 2
Writeregister
Readdata 1
Readdata 2
Registers
5
5
5
Writedata
50
Result Write Stage: Định tuyến(routing)
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 51/96
Result Write Stage: Định tuyến(routing)
51
Inst [25:21]
Inst [15:11]
M
U
X
Inst [15:0]
M
U
X
RR1
RR2
WR
WD
RD1
RD2
Registers
5
5
5
RegWrite
Sign
Extend
ALUresult
ALU
ALUcontrol
4
DataMemory
Address
ReadData
Write
Data
MemWrite
o p c o d e
3 1
:2
6
r s
2 5 :2 1
r t
2 0 :1
6
r d
1 5 :1 1
sh
am
t
1 0 : 6
f un
c t
5 : 0
0 0 0 0 0 0
0 1
0 0 1
0 1
0 1
0
0 1
0 0 0
0 0 0 0 0
1 0 0 0 0 0
M
UX
MemToReg
add $8, $9, $10
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 52/96
Inst [25:21]
Inst [15:11]
M
UX
Inst [15:0]
M
U
X
RR1
RR2
WR
WD
RD1
RD2
Registers
5
5
5
RegWrite
Sign
Extend
ALUresult
ALU
ALUcontrol4
DataMemory
Address
ReadData
WriteData
MemWrite
o p c o d e
3 1
:2
6
r s
2 5 :2 1
r t
2 0 :1
6
r d
1 5
:1 1
sh
am
t
1 0 : 6
f un
c t
5 : 0
0 0 0 0 0 0
0 1
0 0 1
0 1
0 1
0
0 1
0 0 0
0 0 0 0 0
1 0 0 0 0
0
Left Shift
2-bit
PC Add
4
Add
M
U
X
PCSrc
InstructionMemory
is0?
Address
Instruction
RegDst
MemRead
ALUSrc
C om pl e t e D a t a p a t h
MemToReg
M
U
X
52
Bài tập
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 53/96
CE Bài tập
Cho các lệnh sau, dựa vào sơ đồ khối hình 4.2:
– AND Rd, Rs, Rt Reg[Rd] = Reg[Rs] AND Reg[Rt]
– SW Rt,Offs(Rs) 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.
53
Bài tập
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 54/96
CE Bài tập
Different execution units and blocks of digital logic have
different latencies (time needed to do their work). In Figure4.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 thefollowing 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?
54
BỘ XỬ LÝ
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 55/96
CE BỘ XỬ LÝ
Nội dung phần 1
1. Giới thiệu
2. Nhắc 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ỳ
55
Hiện thực datapath
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 56/96
CE Hiện thực datapath
56Datapath với đầy đủ dữ liệu input cho từng khối
????
1. Inputs của khối “Registers”, “Control” và “Sign-extend”
Hiện thực datapath
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 57/96
CE Hiện thực datapath
57
Trường op (hay opcode) luôn chứa bits từ 31:26.
Hai 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.
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 (r t ), 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.
Hiện thực datapath
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 58/96
CE Hiện thực datapath
58 Datapath với đầy đủ dữ liệu input cho từng khối
CEHiện thực datapath
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 59/96
CE Hiện thực datapath
59
2. Khối “ALU Control”
????
CEHiện thực datapath
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 60/96
CE Hiện thực datapath
60
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ứcnăng (AND, OR, subtract, 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.
CEHiện thực datapath
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 61/96
CE Hiện thực datapath
61
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.
CEHiện thực datapath
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 62/96
CE Hiện thực datapath
62
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
CEHiện thực datapath
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 63/96
CE Hiện thực datapath
63
3. Khối điều khiển chính “Control”
???
CEHiện thực datapath
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 64/96
CE Hiện thực datapath
64Tác động của các tín hiệu điều khiển
Tên tín hiệu điềukhiển
Tác động khi ở mứcthấp
Tác động khi ở mức cao
RegDst Thanh ghi đích cho thao tácghi sẽ từ thanh ghi rt (bits từ20:16)
Thanh ghi đích cho thao tác ghi sẽ từ thanh ghi rd (bits từ 15:11)
RegWrite Khối “Registers” chỉ thựchiện mỗi chức năng đọc thanh
ghi
Ngoài chức năng đọc, khối “Register” sẽ thực hiện thêm chức năngghi. Thanh ghi được ghi là thanh ghi có chỉ số được đưa vào từ ngõ
“Write register” và dữ liệu dùng ghi vào thanh ghi này được lấy từngõ “Write data”
ALUSrc Input thứ hai cho ALU đến từ
“Read data 2” của khối“Registers”
Input thứ hai cho ALU đến từ output của khối “Sign-extend”
Branch Cho biết lệnh nạp vào không
phải “ beq”. Thanh ghi PC
nhận giá trị là PC + 4
Lệnh nạp vào là lệnh “ beq”, kết hợp với điều kiện bằng thông qua
cổng AND nhằm xác định xem lệnh tiếp theo có nhảy đến địa chỉmới hay không. Nếu điệu kiện bằng đúng, PC nhận giá trị mới từ kếtquả của bộ cộng “Add”
MemRead (Không) Khối “Data register” thực hiện chức năng đọc dữ liệu. Địa chỉ dữliệu cần đọc được đưa vào từ ngõ “Address” và nội dung đọc được
xuất ra ngõ “Read data”
MemWrite (Không) Khối “Data register” thực hiện chức năng ghi dữ liệu. Địa chỉ dữliệu cần ghi được đưa vào từ ngõ “Address” và nội dung ghi vào lấytừ ngõ “Write data”
MemtoReg Giá trị đưa vào ngõ “Writedata” đến từ ALU
Giá trị đưa vào ngõ “Write data” đến từ khối “Data memory”
CE Hiện thực datapath
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 65/96
CEệ ự p
65
Giá trị các tín hiệu điều khiển tương ứng với mỗi lệnh như sau:
Khối “Control” trong datapath nhận input là 6 bits từ trường “opcode” của mã máy, dựavào đó các tín hiệu điều khiển được sinh ra tương ứng như bảng .
CE Hiện thực datapath
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 66/96
CEệ ự p
66
Bảng sự thật khối “Control”:
Bảng sự thật khối “Control”
CE Hiện thực datapath
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 67/96
CEệ ự p
67
Hiện thực bộ xử lý đơn chu kỳ (Single-cycle implementation hay single
clock cycle implementation): là cách hiện thực sao cho bộ xử lý đáp ứng thựcthi mỗi câu lệnh chỉ trong 1 chu kỳ xung clock đòi hỏi chu kỳ xung clock phải bằng thời gian của lệnh dài nhất.
Cách hiện thực bộ xử lý như đã trình bày trên là cách hiện thực đơn chu kỳ:
Lệnh dài nhất là lw, gồm truy xuất vào “Instruction memory”, “Registers”, “ALU”,“Data memory” và quay trở lại “Registers”, trong khi các lệnh khác không đòi hỏi tấtcả các công đoạn trên chu kỳ xung clock thiết kế phải bằng thời gian thực thi lệnhlw.
Mặc dù hiện thực bộ xử lý đơn chu kỳ có CPI = 1 nhưng hiệu suất rất kém, vì
một chu kỳ xung clock quá dài, các lệnh ngắn đều phải thực thi cùng thời gianvới lệnh dài nhất.Vì vậy, Hiện thực đơn chu kỳ hiện tại không còn được sử dụng (hoặc chỉcó thể chấp nhận cho các tập lệnh nhỏ)
CE
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 68/96
CE
68
Xem lại Datapath với từng nhóm lệnh
Các đường đậm nét là các đường hoạt động khi lệnh thuộc nhóm logic và số học thực thi
CE
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 69/96
CE
69
Xem lại Datapath với từng nhóm lệnh
Các đường đậm nét là các đường hoạt động khi lệnh lw thực thi
CE
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 70/96
CE
70
Xem lại Datapath với từng nhóm lệnh
Các đường đậm nét là các đường hoạt động khi lệnh beq thực thi
CE Exercise
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 71/96
CE
Different instructions require different control signals to be
asserted in the datapath. The remaining problems in thisexercise refer to the following two control signals:
What is the value of these two signals for this instruction?
71
CE Exercise
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 72/96
CE
In this exercise we examine how the clock cycle time of the
processor affects the design of the control unit, and vice versa.
Problems in this exercise assume that the logic blocks used toimplement the datapath have the following latencies:
To avoid lengthening the critical path of the datapath shown inFigure 4.24, how much time can the control unit take to generate
the MemWrite signal?
Which control signal in Figure 4.24 has the most slack and how
much time does the control unit have to generate it if it wants toavoid being on the critical path?
Which control signal in Figure 4.24 is the most critical to
generate quickly and how much time does the control unit have
to generate it if it wants to avoid being on the critical path? 72
CE Exercise
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 73/96
CE
The remaining problems in this exercise assume that the time
needed by the control unit to generate individual controlsignals is as follows
What is the clock cycle time of the processor?
If you can speed up the generation of control signals, but the
cost of the entire processor increases by $1 for each 5ps
improvement of a single control signal, which control signalswould you speed up and by how much to maximize
performance? What is the cost (per processor) of this
performance improvement?
73
CE Exercise
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 74/96
CE
The remaining problems in this exercise assume that the time
needed by the control unit to generate individual controlsignals is as follows
If the processor is already too expensive, instead of paying to
speed it up as we did in 4.10.5, we want to minimize its cost
without further slowing it down. If you can use slower logic to
implement control signals, saving $1 of the processor cost foreach 5ps you add to the latency of a single control signal,
which control signals would you slow down and by how much
to reduce the processor’s cost without slowing it down?
74
CE Exercise
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 75/96
CE
In this exercise we examine in detail how an instruction is
executed in a single-cycle datapath. Problems in this exerciserefer to a clock cycle in which the processor fetches the
following instruction word:
What are the outputs of the sign-extend and the jump “Shiftleft 2” unit (near the top of Figure 4.24) for this instruction
word?What are the values of the ALU control unit’s inputs for this
instruction?
What is the new PC address after this instruction is executed?
Highlight the path through which this value is determined. 75
CE KIẾN TRÚC MÁY TÍNH
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 76/96
CE
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)
76
CE Kỹ thuật ống dẫn (pipeline)
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 77/96
CE
Pipeline là một kỹ thuật mà trong đó các lệnh được thực thi theo kiểu chồng lắp lên
nhau.
Ví dụ minh họa hoạt động như thế nào là không pipeline hay pipeline:
• Giả sử một phòng có nhiều người, mỗi người đều cần giặt quần áo bẩn của mình.
Quá trình giặt quần áo bao gồm 4 công đoạn:
1. Đặt quần áo bẩn vào máy giặt để giặt
2. Khi máy giặt hoàn thành, đưa quần áo ướt vào máy sấy3. Khi máy sấy hoàn thành, đặt quần áo khô lên bàn và ủi4. Khi ủi hoàn tất, xếp quần áo vào tủ
Nếu một người hoàn tất tất cả các công đoạn giặt quần áo (xong công đoạn ủi, xếpquần áo vào tủ) thì người khác mới bắt đầu ( bắt đầu đặt quần áo bẩn vào máy giặt),quá trình thực hiện này gọi là không pipeline.
Tuy nhiên, rõ ràng rằng khi người trước hoàn thành công đoạn 1, sang công đoạn 2
thì máy giặt đã trống, lúc này người tiếp theo có thể đưa quần áo bẩn vào giặt. Nhưvậy, người tiếp theo không cần phải chờ người trước xong công đoạn thứ 4 mới có
thể bắt đầu, mà ngay khi người trước đến công đoạn thứ 2 thì người tiếp theo đã có
thể bắt đầu công đoạn thứ nhất và cứ tiếp tục như vậy. Quá trình thực hiện chồng lắp
này gọi là pipeline. 77
CE Kỹ thuật ống dẫn (pipeline)
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 78/96
CE
78
Hình ảnh 4 người A, B, C, D giặt quần áo theo kiểu tiếp cận không pipeline (hình trên) và
pipeline (hình dưới )
CE Kỹ thuật ống dẫn (pipeline)
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 79/96
79
- Cách tiếp cận dùng kỹ thuật pipeline tiêu tốn ít thời gian hơn cho tất cả các công việchoàn tất bởi vì các công việc được thực hiện song song, vì vậy số công việc hoàn thành
trong một giờ sẽ nhiều hơn so với không pipeline.
- Chú ý, pipeline không làm giảm thời gian hoàn thành một công việc mà làm giảm thờigian hoàn thành tổng số công việc (như trong ví dụ trên, thời gian cho người A hoàn thành
việc giặt khi áp dụng pipeline hay không pipeline đều là 2 giờ , nhưng tổng số giờ cho 4
người A, B, C và D hoàn thành dùng pipeline giảm rất nhiều so với không pipeline)
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 80/96
CEAn Overview of Pipelining
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 81/96
1. Nạp lệnh từ bộ nhớ − IF
2. Giải mã lệnh và đọc các thanh ghi − ID
3. Thực thi − EX
4. Truy xuất bộ nhớ − MEM
5. Ghi kết quả vào thanh ghi − WB81
CE Kỹ thuật ống dẫn (pipeline)
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 82/96
- Xét một bộ xử lý với 8 lệnh cơ bản: load word (lw ), store word (sw ), add (add ),
subtract (sub ), AND (and ), OR (or ), set less than (slt ), và nhảy với điều kiện bằng (beq ).
- Giả sử thời gian hoạt động các công đoạn như sau: 200 ps cho truy xuất bộ nhớ ,200 ps cho tính toán của ALU, 100 ps cho thao tác đọc/ghi thanh ghi
- So sánh thời gian trung bình giữa các lệnh của hiện thực đơn chu kỳ và pipeline.
82
CE Kỹ thuật ống dẫn (pipeline)
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 83/96
83
Ví dụ hình ảnh 3 lệnh lw thực hiện theo kiểu không pipeline, đơn chu kỳ (hình trên) và có
pipeline (hình dưới )
Thời gian giữa lệnh thứ nhất và thứ tư trong không pipeline là 3 x 800 = 2400 ps, nhưng
trong pipeline là 3 x 200 = 600 ps
CE Kỹ thuật ống dẫn (pipeline)
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 84/96
Sự tăng tốc của pipeline
Trong trường hợp lý tưởng: khi mà các công đoạn pipeline hoàn toàn bằng nhau thì
thời gian giữa hai lệnh liên tiếp được thực thi trong pipeline bằng:
84
Như vậy , trong ví dụ trên, thời gian giữa hai lệnh liên tiếp có pipeline bằng 160 ps (800:5 = 160)
Trong trường hợp lý tưởng, pipeline sẽ tăng tốc so với không pipeline với số lần đúngbằng số tầng của pipeline.
Trong thực tế: Các công đoạn thực tế không bằng nhau, việc áp dụng pipeline phải chọncông đoạn dài nhất để làm một chu kỳ pipeline.
Vì vậy, trong ví dụ trên, thời gian liên tiếp giữa hai lệnh pipeline là 200 ps. Và áp dụng pipeline tăng tốc gấp 4 lần so với không pipeline.
Speed-up ≈ Thời gian giữa hai lệnh liên tiếp không pipeline : Thời gian giữa hai lệnh liên tiếp pipeline
≈ 800 : 200 = 4 < 5 (number pipeline stages)
Trong thực tế, pipeline sẽ tăng tốc so với không pipeline với số lần nhỏ hơn số tầng
của pipeline.
CE Kỹ thuật ống dẫn (pipeline)
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 85/96
Lưu ý, pipeline tăng tốc so với không pipeline:
Kỹ thuật pipeline không giúp giảm thời gian thực thi của từng lệnh riêng lẽ mà
giúp giảm tổng thời gian thực thi của đoạn lệnh/chương trình chứa nhiều lệnh (từ
đó giúp thời gian trung bình của mỗi lệnh giảm)
Việc giúp giảm thời gian thực thi cho nhiều lệnh vô cùng quan trọng, vì các
chương trình chạy trong thực tế thông thường lên đến hàng tỉ lệnh.
85
CE Kỹ thuật ống dẫn (pipeline)
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 86/96
Quy ước trình bày 5 công đoạn thực thi một lệnh của pipeline:
86
Lưu ý cách vẽ hình các công đoạn pipeline như sau:
Khối tô đen hoàn toàn hoặc để trắng hoàn toàn: Trong mỗi công đoạn pipeline, nếulệnh thực thi không làm gì trong công đoạn này sẽ được tô trắng, ngược lại sẽ được tô
đen.
Ví dụ lệnh “add” có EX đen và MEM trắng tức lệnh này có tính toán trong công đoạn EX và không truy xuất bộ nhớ dữ liệu trong công đoạn MEM.
Các công đoạn liên qua đến bộ nhớ và thanh ghi có thể tô nữa trái hoặc nữa phải đen:
Nếu nữa phải tô đen, tức công đoạn đó đang thực hiện thao tác đọc; ngược lại nếu nữatrái tô đen, công đoạn đó đang thực hiện thao tác ghi.
CE Kỹ thuật ống dẫn (pipeline)
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 87/96
Hình ảnh datapath có hỗ trợ pipeline
87
CE Kỹ thuật ống dẫn (pipeline)
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 88/96
Các xung đột có thể xảy ra khi áp dụng kỹ thuật pipeline (Pipeline Hazards):
Xung đột là trạng thái mà lệnh tiếp theo không thể thực thi trong chu kỳ pipelinengay sau đó (hoặc thực thi nhưng sẽ cho ra kết quả sai), thường do một trong ba
nguyên nhân sau:
88
Xung đột cấu trúc (Structural hazard): là khi một lệnh dự kiến không thểthực thi trong đúng chu kỳ pipeline của nó do phần cứng cần không thể hỗ trợ .
Nói cách khác, xung đột cấu trúc xảy ra khi có hai lệnh cùng truy xuất vào mộttài nguyên phần cứng nào đó cùng một lúc.
Xung đột dữ liệu (Data hazard): là khi một lệnh dự kiến không thể thực thi
trong đúng chu kỳ pipeline của nó do dữ liệu mà lệnh này cần vẫn chưa sẵn
sàng.
Xung đột điều khiển (Control/Branch hazard): là khi một lệnh dự kiếnkhông thể thực thi trong đúng chu kỳ pipeline của nó do lệnh nạp vào không
phải là lệnh được cần. Xung đột này xảy ra trong trường hợp luồng thực thi
chứacác
lệnh nhảy.
CE Kỹ thuật ống dẫn (pipeline)
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 89/96
Xung đột cấu trúc
89
Ví dụ về xung đột cấu trúc:
Giả sử rằng chúng ta có một bộ nhớ đơn duy nhất thay vì hai bộ nhớ lệnh và dữ liệu rờirạc nhau. Nếu pipeline trong ví dụ ở hình trên có thêm lệnh thứ tư thì trong chu kỳ
pipeline từ 600 tới 800 khi lệnh thứ nhất thực hiện truy xuất bộ nhớ lấy dữ liệu thì lệnh
thứ tư sẽ thực hiện truy xuất bộ nhớ lấy lệnh. Do không có bộ nhớ lệnh và dữ liệu riêng
lẽ, trong trường hợp này sẽ có xung đột cấu trúc xảy ra.
CE Kỹ thuật ống dẫn (pipeline)
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 90/96
Xung đột dữ liệu
Ví dụ cho đoạn lệnh sau: add $s0, $t0, $t1
sub $t2, $s0, $t3
90
Trong ví dụ trên, nếu áp dụng pipeline bình thường thì công đoạn ID của lệnh sub sẽ thực
hiện cùng lúc với cộng đoạn EX của lệnh add . Trong công đoạn ID, lệnh sub sẽ cần đọc
giá trị của thanh ghi $s0, trong khi đó giá trị mới của thanh ghi $s0 phải tới công đoạn WB
của lệnh add mới sẵn sàng. Vì vậy, nếu thực hiện pipeline thông thường, trường hợp nàysẽ xảy ra xung đột dữ liệu
Một cách giải quyết có thể trong trường hợp này là chờ thêm hai chu kỳ xung xung clock
thì lệnh add mới được nạp vào
CE Kỹ thuật ống dẫn (pipeline)
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 91/96
Xung đột dữ liệu
Thay vì chờ một số chu kỳ đến khi dữ liệu cần sẵn sàng, một kỹ thuật có thể được áp
dụng để rút ngắn số chu kỳ rỗi, gọi là kỹ thuật nhìn trước (forwarding hay bypassing).
Như trong ví dụ trước, thay vì chờ sau hai chu kỳ rỗi mới nạp lệnh add vào, ngay khi
ALU hoàn thành tính toán tổng cho lệnh add thì tổng này cũng được cung cấp ngay cho
công đoạn EX của lệnh sub (thông qua một bộ đệm dữ liệu gắn thêm bên trong) đểALU tính toán kết quả cho sub nhanh.
Kỹ thuật nhìn trước: một phương pháp giải quyết xung đột dữ liệu bằng đưa thêm vào các
bộ đệm phụ bên trong, các dữ liệu cần có thể được truy xuất từ bộ đệm này hơn là chờ đợiđến khi nó sẵn sàng trong bộ nhớ hay trong thanh ghi.
91
CE Kỹ thuật ống dẫn (pipeline)
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 92/96
Xung đột dữ liệu
Lưu ý, với lệnh lw và các lệnh có chức năng tương tự, thông thường kết quả của nó không
phải khi hoàn tất công đoạn EX mà là khi hoàn tất công đoạn MEM.Xét ví dụ sau: lw $s0, 20($t1)
sub $t2, $s0, $t3
92
Với lệnh lw, dữ liệu mong muốn sẽ chỉ sẵn sàng sau 4 chu kỳ pipeline (tức sau khi công đoạnMEM hoàn tất). Vì vậy, giả sử dữ liệu đầu ra của công đoạn MEM của lệnh lw được truyềntới đầu vào công đoạn EX của lệnh sub theo sau, thì lệnh sub vẫn phải chờ sau một chu kỳ rỗi
mới được nạp vào.
Kỹ thuật forwarding có thể hỗ trợ giải quyết xung đột dữ liệu hiệu quả, tuy nhiên nó không
thể ngăn chặn tất cả các trường hợp chu kỳ rỗi
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 93/96
CE Kỹ thuật ống dẫn (pipeline)
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 94/96
Xung đột điều khiển
Một số lệnh nhảy có điều kiện và không điều kiện trong MIPS (branches, jump) tạora xung đột điều kiển này
Ví dụ xét đoạn chương trình sau: add $4, $5, $6
beq $1, $2, label
lw $3, 300($s0)
Nếu áp dụng pipeline thông thường, tại chu kỳ thứ ba của pipeline, khi beq đangthực thi công đoạn ID thì lệnh lw sẽ được nạp vào. Nhưng nếu điều kiện bằng củalệnh beq xảy ra thì lệnh thực hiệp tiếp sau đó không phải là lw mà là lệnh được gán
nhãn ‘label ’, lúc này xảy ra xung đột điều khiên.
Các giải pháp giải quyết xung đột điều khiển (tham khảo thêm mục 4.8, sách tham
khảo chính)
94
CE Example
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 95/96
we examine how pipelining affects the clock cycle time of the
processor. Problems in this exercise assume that individual
stages of the datapath have the following latencies:
What is the clock cycle time in a pipelined and non-pipelined
processor?
What is the total latency of an LW instruction in a pipelined
and non-pipelined processor?
How many time does it take processor to execute 3 statement?
(pipeline – not pipeline), if hazard, not?
OR R1,R2,R3
OR R2,R1,R4
OR R1,R1,R2 95
Example
8/15/2019 Chuong04 Datapath Và Pipeline-update
http://slidepdf.com/reader/full/chuong04-datapath-va-pipeline-update 96/96
Hazards?
SW R16, – 100(R6)
LW R4,8(R16)
ADD R5,R4,R4
SUB R1, R3, R2
Hazards?
OR R1,R2,R3
OR R2,R1,R4OR R1,R1,R2