Datapath là gì

CE

KIẾN TRÚC MÁY TÍNH

CHƯƠNG 4
BỘ XỬ LÝ (THE PROCESSOR)

1

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)

2

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

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

CE

Giới thiệu

 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ịch
và 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)

Đượ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.)
5

CE

Giới thiệu

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)

6

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

7

CE

Giới thiệu

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

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

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)

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

10

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

CE

Quy trình thực thi lệnh
 Instruction Fetch (tìm nạp lệnh):

Next Instruction

Instruction
Fetch
Instruction
Decode
Operand
Fetch

– 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ạng):
– Lấy các toán hạng cần thiết cho lệnh

Execute
Result
Write

 Execute (thực thi):
– Thực hiện câu lệnh

 Result Write (lưu trữ):
– Lưu trữ kết quả

12

CE

Quy trình thực thi lệnh của MIPS

 Bảng sau mô tả ba giai đoạn thực thi lệnh trong ba nhóm lệnh cơ bản của
MIPS (Giai đoạn Fetch and Decode không được hiển thị)

Fetch &
Decode

Operand
Fetch

add $3, $1, $2

lw $3, 20( $1 )

beq $1, $2, label

standard

standard

standard

o Đọc thanh ghi $1, xem o Đọc thanh ghi $1, xem
như toán hạng opr1
như toán hạng opr1
o Đọc thanh ghi $2, xem o Sử dụng 20 như toán

như toán hạng opr2
hạng opr2

Execute

Result = opr1 + opr2

o MemAddr = opr1 + opr2
o Sử dụng MemAddr để
đọc dữ liệu từ bộ nhớ

Result
Write

Result được lưu trữ vào
$3

Dữ liệu của từ nhớ có địa
chỉ MemAddr được được
lưu trữ vào $3


opr = Operand
MemAddr = Memory Address

o Đọc thanh ghi $1, xem như

toán hạng opr1
o Đọc thanh ghi $2, xem như
toán hạng opr2
Taken = (opr1 == opr2 )?
Target = PC + Label*
if (Taken)
PC = Target

* = simplification, not exact
13

CE

Quy trình thực thi lệnh của MIPS (5 công đoạn)

 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 của MIPS khá đơn giản
– Tách giai đoạn Execute thành ALU (Calculation) và Memory Access
add $3, $1, $2

lw $3, 20( $1 )

beq $1, $2, label

Fetch

Đọc lệnh (địa chỉ của lệnh
lưu trong thanh ghi PC)

Đọc lệnh (địa chỉ của lệnh
lưu trong thanh ghi PC)

Đọc lệnh (địa chỉ của lệnh lưu
trong thanh ghi PC)

Decode &
Operand
Fetch

o Đọc thanh ghi $1, xem
như toán hạng opr1
o Đọc thanh ghi $2, xem
như toán hạng opr2

o Đọc thanh ghi $1, xem
như toán hạng opr1
o Sử dụng 20 như toán
hạng opr2

o Đọc thanh ghi $1, xem như
toán hạng opr1
o Đọc thanh ghi $2, xem như
toán hạng opr2

Result = opr1 + opr2

MemAddr = opr1 + opr2

Taken = (opr1 == opr2 )?

Target = PC + Label*

ALU
Memory
Access
Result
Write

Sử dụng MemAddr để đọc
dữ liệu từ bộ nhớ
Dữ liệu của từ nhớ có địa
Result được lưu trữ vào $3 chỉ MemAddr được được
lưu trữ vào $3

if (Taken)
PC = Target
14

CE

Quy trình thực thi lệnh của MIPS (5 công đoạn)

Next Instruction

Fetch
Instruction
Decode
ALU
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ữ)

15

CE

Quy trình thực thi lệnh của MIPS (5 công đoạn)

Next Instruction

Fetch
Instruction
Decode
ALU
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ữ)

16

Giai đoạn tìm nạp lệnh (Instruction Fetch)

CE

 Giai đoạn nạp lệnh:
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
17

CE

Giai đoạn tìm nạp lệnh (Instruction Fetch)
Bộ cộng
Add
4
Read
address
Instruction

Instruction

Instruction
memory

Decode Stage

PC

Thanh ghi
PC
Vùng nhớ lưu trữ
lệnh

18

CE

Khối Instruction Memory

 Vùng nhớ lưu trữ lệnh

 Đầu vào: là địa chỉ của lệnh
 Đầu ra: là nội dung lệnh tương ứng với
địa chỉ được cung cấp

Instruction
Address
Instruction

Instruction
Memory

Memory

Cách sắp xếp của bộ nhớ giống như hình bên

phải

………..
add $3, $1, $2

2048
2052 sll $4, $3, 2
2056 andi $1, $4, 0xF
………..
……

19

CE

Bộ cộng

 Mạch logic kết hợp để cộng 2 số - bộ cộng
 Đầu vào:

A

– Hai số 32-bit A, B

 Đầu ra:

Add

Sum

A+B

B

– A+B

20

CE

Ý niệm về việc sử dụng xung clock

 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 cạnh lên tiếp theo

Add
4

In

PC

Time

Read
address

Clk

Instruction

Instruction
memory

PC
In

100
104

104
108

108
112

112
116

21

CE

Quy trình thực thi lệnh của MIPS (5 công đoạn)

Next Instruction

Fetch
Instruction
Decode
ALU
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ữ)

22

Giai đoạn giải mã (Decode)

CE

 Giai đoạn decode:
Lấy nội dung dữ liệu trong các trường (field) của lệnh:
1.
2.

Đọc opcode để xác định kiểu lệnh và chiều dài của từng trường trong
mã máy
Đọ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):
–. Lệnh cần được thưc thi

 Đầu ra cho giai đoạn tiếp theo (Execute):
–. Phép tính và các toán hạng cần thiết

23

CE

Giai đoạn giải mã (Decode)
Register
Number
Read
register 1

5

Read
register 2

5

Write
register
Write
data

Read
data 1

Register
File

Data

Operands

Read
data 2

Execute Stage

Fetch Stage

Inst.

5

Khối chứa tập hợp của
các thanh ghi, gọi là
Register file

24

CE

Khối 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á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 1 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

Data

Read
data 2

RegWrite

25