You are on page 1of 31

TỔ CHỨC VÀ CẤU TRÚC

MÁY TÍNH II
Chương 8
Bộ xử lý
07/13/2023

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 1


Nội dung

Vi kiến trúc


Kiến trúc
Datapath
Thực thi lệnh Vi kiến trúc
Bài tập
Luận lý

Mạch số

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 2


Vi kiến trúc (1/2)

 Kiến trúc Máy tính bao gồm 3 thành


phần chính:
 Kiến trúc tập lệnh (ISA): Quy định
máy tính có thể làm những việc gì?
 Lệnh
 Vi kiến trúc (Tổ chức Phần cứng Máy
tính): Quy định máy tính làm việc như
thế nào?
 Hiện thực ISA
 Hệ thống Máy tính: Quy định các
thành phần của máy tính phối hợp
trong một hệ thống điện toán như thế
nào?
 Ảo hóa, Quản lý Bộ nhớ, Xử lý Đồ
họa…
07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 3
Vi kiến trúc (2/2)

 Về chức năng, Vi kiến trúc là một tổ chức phần cứng dùng


để hiện thực tập lệnh của một máy tính.
 Về cấu tạo, Vi kiến trúc được chia thành 2 khối:
 Khối đường dữ liệu (datapath): Thực thi lệnh
 Lưu trữ: Bộ nhớ lệnh, Bộ nhớ dữ liệu, Tập thanh ghi, …
 Truyền/nhận: Các đường tín hiệu dữ liệu, địa chỉ, điều khiển
 Xử lý: ALU, Bộ so sánh, Mux, Bộ mở rộng dấu, Bộ dịch, …
 Khối điều khiển (control unit): Điều khiển datapath hoạt động
 Dựa trên opcode của lệnh và trạng thái của datapath

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 4


Datapath (1/9) – Chu kỳ thực thi lệnh

 Datapath dùng để thực thi lệnh! Một lệnh thực thi như thế
nào?
 Chu kỳ thực thi lệnh!

Giải mã Truy xuất Lưu kết


Nạp lệnh Giải
lệnhmã Thực thi quả
Bộ nhớ

• Bộ nhớ lệnh • Tập thanh ghi • ALU • Bộ nhớ dữ • Tập thanh ghi
• PC • Bộ nhớ dữ liệu • Bộ so sánh liệu
• Mở rộng dấu

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 5


Datapath (2/9) – Nạp lệnh

 Lệnh cần nạp lưu trong Bộ nhớ lệnh


 Địa chỉ của lệnh cần nạp lưu trong thanh ghi PC
 Tăng PC lên 4 để chuẩn bị nạp lệnh tiếp theo -> cần thêm bộ
cộng

I O ADDR DATA_RD

PC IMEM

+
4

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 6


Datapath (3/9) – Giải mã lệnh – Định dạng lệnh

 Dựa vào opcode để xác định định dạng lệnh


[31:26]
opcode
[25:21] rs

ADDR DATA_RD
[20:16] rt
IMEM [31:26]
[15:11] opcode
rd
[25:21] rs
[10:6]
shamt ADDR DATA_RD
[20:16] rt
[5:0]
funt IMEM
[15:0] immediate

[31:26]
opcode

ADDR DATA_RD

IMEM

[25:0] address

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 7


Datapath (4/9) – Giải mã lệnh - Nạp toán hạng

 Dựa vào định dạng lệnh mà nạp toán hạng tương ứng

[31:26] [31:26]
opcode opcode

[25:21] rs [25:21] rs ADDR_RDA


ADDR_RDA

[20:16] rt [20:16] rt
ADDR_RDB
ADDR_RDB
DATA_A
DATA_A [15:11]
[15:11] REG FILE
rd REG FILE
ADDR_WR DATA_B
ADDR_RDB DATA_B
[10:6]
shamt
DATA_WR
DATA_WR
[5:0]
funt
immediate
SignExtend

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 8


Datapath (5/9) – Nạp toán hạng: beq/bne

[31:26]
opcode
[25:21] rs ADDR_RDA
I O
[20:16] rt
PC ADDR_RDB
DATA_A
[15:11]
+ REG FILE
ADDR_WR DATA_B
4

DATA_WR

immediate
SignExtend <<2

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 9


Datapath (6/9) – Nạp toán hạng: j

[31:26]
opcode

I O ADDR DATA_RD

PC IMEM

+
4 [25:0] address
<<2

[31:28]

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 10


Datapath (7/9) – Thực thi

 Dựa vào opcode và funct để quyết định thao tác gì sẽ được


thực thi
ALUOp ALUOp

ADDR_RDA ADDR_RDA

ADDR_RDB ADDR_RDB
DATA_A DATA_A
REG FILE REG FILE
ALU ALU
ADDR_RDB DATA_B ADDR_WR DATA_B

DATA_WR DATA_WR

SignExtend

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 11


Datapath (8/9) – Truy xuất bộ nhớ

 Đọc dữ liệu từ bộ nhớ dữ liệu đối với các lệnh nạp


ALUOp

ADDR
ALU DATA_RD

DMEM

DATA_WR

 Ghi dữ liệu tới bộ nhớ dữ liệu đối với các lệnh lưu
ADDR_RDA ALUOp

ADDR_RDB
DATA_A
REG FILE ADDR
ALU DATA_RD
ADDR_RDB DATA_B
DMEM
DATA_WR
DATA_WR

SignExtend

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 12


Datapath (9/9) – Lưu kết quả

 Có thể ghi dữ liệu về lại Tập thanh ghi

RegEn ALUOp

RegEn ALUOp

ADDR_RDA

ADDR_RDA
ADDR_RDB
DATA_A
REG FILE ADDR
ADDR_RDB ALU DATA_RD
DATA_A ADDR_RDB DATA_B
REG FILE ALU DMEM
ADDR_RDB DATA_B
DATA_WR
DATA_WR
DATA_WR
SignExtend

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 13


Thực thi nhóm lệnh luận lý & số học (1/2)

ALU_Inst C, A, B

Giải mã Truy xuất Lưu kết


Nạp lệnh Giải
lệnhmã Thực thi quả
Bộ nhớ

Inst = IM[PC] A = R[rs] ALU = A op B C = ALU


PC = PC + 4 B = R[rt]
C = R[rd]

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 14


Thực thi nhóm lệnh luận lý & số học (2/2)

add, sub, and, or, slt


RegEn

Inst[31:26]

ADDR Inst[25:21] ADDR_RDA


DATA_RD

IMEM Inst[20:16] ADDR_RDB


PC
DATA_A
REG FILE ALU
Inst[15:11]
ADDR_WR DATA_B

DATA_WR

+ Inst[5:0] ALU
ALUOp
Control
4

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 15


Thực thi nhóm lệnh truyền dữ liệu (1/5) - lw

lw C, B(A)

Giải mã Truy xuất Lưu kết


Nạp lệnh Giải
lệnhmã Thực thi quả
Bộ nhớ

Inst = IM[PC] A = R[rs] ALU = A + B D = DM[ALU] C=D


PC = PC + 4 B = SigExt(imm)
C = R[rt]

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 16


Thực thi nhóm lệnh truyền dữ liệu (2/5) - lw

RegEn

Inst[31:26]

ADDR Inst[25:21] ADDR_RDA


DATA_RD

IMEM Inst[20:16] ADDR_RDB


PC
DATA_A
REG FILE
ALU ADDR
ADDR_WR DATA_B
DATA_RD

DMEM
DATA_WR

Inst[15:0] DATA_WR
+ SignExtend

4 Inst[5:0] ALU
ALUOp
Control

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 17


Thực thi nhóm lệnh truyền dữ liệu (3/5) - sw

lw C, B(A)

Giải mã Truy xuất Lưu kết


Nạp lệnh Giải
lệnhmã Thực thi quả
Bộ nhớ

Inst = IM[PC] A = R[rs] ALU = A + B DM[ALU] = C


PC = PC + 4 B = SigExt(imm)
C = R[rt]

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 18


Thực thi nhóm lệnh truyền dữ liệu (4/5) - sw

DmemWr

Inst[31:26]

ADDR Inst[25:21] ADDR_RDA


DATA_RD

IMEM Inst[20:16] ADDR_RDB


PC
DATA_A
REG FILE zero
ALU ADDR
ADDR_WR DATA_B
DATA_RD

DMEM
DATA_WR

Inst[15:0] DATA_WR
+ SignExtend

4 Inst[5:0] ALU
ALUOp
Control

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 19


Thực thi nhóm lệnh truyền dữ liệu (5/5) RegEn
DmemWr
Inst[31:26]

lw/sw
ADDR Inst[25:21] ADDR_RDA
DATA_RD

IMEM Inst[20:16] ADDR_RDB


PC
DATA_A
REG FILE
ALU ADDR
ADDR_WR DATA_B
DATA_RD

DMEM
DATA_WR

Inst[15:0] DATA_WR
+ SignExtend

4 Inst[5:0] ALU
ALUOp
Control

DmemWr

Inst[31:26]

ADDR
DATA_RD
Inst[25:21] ADDR_RDA
sw
IMEM Inst[20:16] ADDR_RDB
PC
DATA_A
REG FILE zero
ALU ADDR
ADDR_WR DATA_B
DATA_RD

DMEM
DATA_WR

Inst[15:0] DATA_WR
+ SignExtend

4 Inst[5:0] ALU
ALUOp
Control

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 20


Thực thi nhóm lệnh điều khiển (1/2) - beq

beq A, B, C

Giải mã Truy xuất Lưu kết


Nạp lệnh Giải
lệnhmã Thực thi quả
Bộ nhớ

Inst = IM[PC] A = R[rs] ALU = A – B PC = PC_nxt


zero = ~|ALU
B = R[rt]
if(zero)
C = SigExt(imm) PC_nxt = PC + D
D = C << 2 else
PC_nxt = PC + 4

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 21


Thực thi nhóm lệnh điều khiển (2/2) - beq

PCSrc

Inst[31:26]

1 ADDR Inst[25:21] ADDR_RDA


DATA_RD
0
IMEM Inst[20:16] ADDR_RDB
PC
DATA_A
REG FILE zero zero
ADDR_WR ALU

DATA_B
DATA_WR

+ Inst[15:0]
SignExtend
Inst[5:0] ALU
4 ALUOp
Control

<<2

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 22


Thực thi nhóm lệnh điều khiển + ALU
RegEn

Inst[31:26]

alu
ADDR Inst[25:21] ADDR_RDA
DATA_RD

IMEM Inst[20:16] ADDR_RDB


PC
DATA_A
REG FILE ALU
Inst[15:11]
ADDR_WR DATA_B

DATA_WR

+ Inst[5:0] ALU
ALUOp
Control
4

PCSrc RegEn
Inst[31:26]

Inst[25:21]

beq /alu
1 ADDR ADDR_RDA
DATA_RD
0
IMEM Inst[20:16] ADDR_RDB
PC
DATA_A
Inst[15:11] REG FILE zero zero
ADDR_WR ALU

DATA_B
DATA_WR

+ Inst[15:0]
SignExtend
Inst[5:0] ALU
4 ALUOp
Control

<<2

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 23


Thực thi nhóm lệnh điều khiển + ALU + DMEM
RegEn DmemWr

Inst[31:26]

ADDR Inst[25:21] ADDR_RDA

PC
DATA_RD

IMEM Inst[20:16] ADDR_RDB


DATA_A
lw/sw
REG FILE
ADDR
ADDR_WR DATA_B ALU
DATA_RD

DMEM
DATA_WR

Inst[15:0] DATA_WR
+ SignExtend

4 Inst[5:0] ALU
ALUOp
Control

RegDst RegEn ALUSrc DmemWr MemtoReg


PCSrc

Inst[31:26]
zero
1 ADDR Inst[25:21] ADDR_RDA

beq/alu /lw/sw
DATA_RD
0
IMEM Inst[20:16] ADDR_RDB
PC
DATA_A
REG FILE zero
Inst[15:11] 0 ADDR_WR ALU ADDR DATA_RD 1
Inst[15:11]
1
DATA_B 0 DMEM 0
DATA_WR
1
DATA_WR
+ Inst[15:0]
SignExtend
Inst[5:0] ALU
4 ALUOp
Control

<<2

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 24


Tổng kết: Datapath có thể thực thi beq/alu/lw/sw

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 25


Bài tập (1/5)

Trình bày các khối chức năng được sử dụng khi thực thi lệnh
addi?

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 26


Bài tập (2/5)

Trình bày các khối chức năng được sử dụng khi thực thi lệnh
sw?

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 27


Bài tập (3/5)

Tìm chu kỳ nhỏ


nhất của CPU
nếu chỉ thực thi
lệnh and?
Quy ước: Việc
đọc dữ liệu từ
Register File
phải thực hiện
sau khi xác định
đủ các thanh ghi
cần đọc và ghi.

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 28


Bài tập (4/5)

Tìm chu kỳ nhỏ


nhất của CPU
nếu chỉ thực thi
lệnh lw?

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 29


Bài tập (5/5)

Tìm chu kỳ nhỏ


nhất của CPU
nếu chỉ thực thi
lệnh sw?

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 30


THẢO LUẬN

07/13/2023 Copyrights 2017 CE-UIT. All Rights Reserved. 31

You might also like