5 bước trong quá trình thiết kế bộ xử lý = datapath+control
Phân tích tập lệnh => tìm ra các thành phần cần thiết cho datapath
Hiện thực các thành phần của datapath & thiết lập cách cấp xung nhịp
Kết nối các thành phần của datapath để thõa mãn tập lệnh
Phân tích quá trình kết nối ở bước 4 để xác định các tín hiệu điều khiển
cần thiết
Hiện thực bộ điều khiển
Bộ xử lý MIPS có thiết kế đơn giản
Các lệnh có cùng độ rộng 32 bit
Thanh ghi nguồn ở vị trí cố định
Hắng số imm16 ở vị trí cố định và cùng độ rộng 16 bit
Toán hạn của ALU là thanh ghi/hằng số
Bộ xử lý đơn chu kỳ => CPI=1, nhưng chu kỳ sẽ dài
59 trang |
Chia sẻ: nguyenlam99 | Lượt xem: 2494 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Computer Architecture – Chapter 4.1: Thiết kế bộ xử lý đơn chu kỳ (single cycle processor), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BK
TP.HCM
2015
dce
COMPUTER ARCHITECTURE
CSE Fall 2015
Faculty of Computer Science and
Engineering
Department of Computer Engineering
Vo Tan Phuong
2015
dce
2 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Chapter 4.1
Thiết kế bộ xử lý đơn chu kỳ
(Single Cycle Processor)
2015
dce
3 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Chúng ta đang ở đâu?
2015
dce
4 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Bên trong bộ xử lý
2015
dce
5 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Nội dung
Thiết kết bộ xử lý: Các bước thực hiện
Các thành phần của Datapath và cấp xung nhịp
Xây dựng Datapath đầy đủ
Điều khiển quá trình thực thi của các lệnh
Bộ điều khiển chính và bộ điều khiển ALU
Hạn chế của thiết kế bộ xử lý đơn chu kỳ
2015
dce
6 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Các yếu tố ảnh hưởng đến hiệu xuất
Hiệu xuất được xác định bởi:
Số lệnh (Instruction count)
Số chu kỳ xung nhịp trung bình trên lệnh (CPI)
Thời gian của một chu kỳ xung nhịp
Thiết kế bộ xử lý ảnh hưởng;
CPI
Thời gian của một chu kỳ
Thiết kế bộ xử xý đơn chu kỳ:
Một lệnh thực hiện trong một chu kỳ (CPI =1)
I-Count
CPI Cycle
2015
dce
7 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Thiết kế một bộ xử lý: Các bước thực hiện
Phân tích tập lệnh =>xác định các thành phần của
datapath
Thiết kế, lựa chọn các thành phần của datapath và
phương pháp cấp xung nhịp
Gắn các thành phần của datapath đáp ứng yêu cầu công
việc của từng lệnh
Xác định các giá trị của các tín hiệu điều khiển cho việc điều
khiển dòng lưu chuyển của dữ liệu
Thiết kế và thêm vào bộ điều khiển
2015
dce
8 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Các định dạng lệnh MIPS
Tấc cả các lệnh: độ rộng 32-bit
Ba loại: R-type, I-type, và J-type
Op6: 6-bit opcode of the instruction
Rs5, Rt5, Rd5: 5-bit source and destination register numbers
sa5: 5-bit shift amount used by shift instructions
funct6: 6-bit function field for R-type instructions
immediate16: 16-bit immediate value or address offset
immediate26: 26-bit target address of the jump instruction
Op6 Rs5 Rt5 Rd5 funct6 sa5
Op6 Rs5 Rt5 immediate16
Op6 immediate26
2015
dce
9 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Tập lệnh con MIPS
Sử dụng tập lệnh con MIPS trong quá trình thiết kế
ALU instructions (R-type): add, sub, and, or, xor, slt
Immediate instructions (I-type): addi, slti, andi, ori, xori
Load and Store (I-type): lw, sw
Branch (I-type): beq, bne
Jump (J-type): j
Tương đối đầy đủ để minh họa quá trình xây dựng
Bộ xử lý = datapath + control
Quá trình xây dựng bộ xử lý MIPS tương tự việc xây
dựng các bộ xử ký khác
2015
dce
10 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Chi tiết tập lệnh con
Instruction Meaning Format
add rd, rs, rt addition op6 = 0 rs5 rt5 rd5 0 0x20
sub rd, rs, rt subtraction op6 = 0 rs5 rt5 rd5 0 0x22
and rd, rs, rt bitwise and op6 = 0 rs5 rt5 rd5 0 0x24
or rd, rs, rt bitwise or op6 = 0 rs5 rt5 rd5 0 0x25
xor rd, rs, rt exclusive or op6 = 0 rs5 rt5 rd5 0 0x26
slt rd, rs, rt set on less than op6 = 0 rs5 rt5 rd5 0 0x2a
addi rt, rs, im16 add immediate 0x08 rs5 rt5 im16
slti rt, rs, im16 slt immediate 0x0a rs5 rt5 im16
andi rt, rs, im16 and immediate 0x0c rs5 rt5 im16
ori rt, rs, im16 or immediate 0x0d rs5 rt5 im16
xori rt, im16 xor immediate 0x0e rs5 rt5 im16
lw rt, im16(rs) load word 0x23 rs5 rt5 im16
sw rt, im16(rs) store word 0x2b rs5 rt5 im16
beq rs, rt, im16 branch if equal 0x04 rs5 rt5 im16
bne rs, rt, im16 branch not equal 0x05 rs5 rt5 im16
j im26 jump 0x02 im26
2015
dce
11 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Register Transfer Level (RTL)
RTL mô tả dòng dữ liệu giữa các thanh ghi
RTL cho biết ý nghĩa (công việc chính) của lệnh
Tấc cả các lệnh được nạp từ địa chỉ trong thanh ghi PC
Instruction RTL Description
ADD Reg(Rd) ← Reg(Rs) + Reg(Rt); PC ← PC + 4
SUB Reg(Rd) ← Reg(Rs) – Reg(Rt); PC ← PC + 4
ORI Reg(Rt) ← Reg(Rs) | zero_ext(Im16); PC ← PC + 4
LW Reg(Rt) ← MEM[Reg(Rs) + sign_ext(Im16)]; PC ← PC + 4
SW MEM[Reg(Rs) + sign_ext(Im16)] ← Reg(Rt); PC ← PC + 4
BEQ if (Reg(Rs) == Reg(Rt))
PC ← PC + 4 + 4 × sign_extend(Im16)
else PC ← PC + 4
2015
dce
12 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Instructions are Executed in Steps
R-type Nạp lệnh: Instruction ← MEM[PC]
Nạp toán hạn: data1 ← Reg(Rs), data2 ← Reg(Rt)
Thực hiện phép toán: ALU_result ← func(data1, data2)
Ghi vào thanh ghi: Reg(Rd) ← ALU_result
Chuẩn bị lệnh kế: PC ← PC + 4
I-type Nạp lệnh : Instruction ← MEM[PC]
Nạp toán hạn : data1 ← Reg(Rs), data2 ← Extend(imm16)
Thực hiện phép toán : ALU_result ← op(data1, data2)
Ghi vào thanh ghi : Reg(Rt) ← ALU_result
Chuẩn bị lệnh kế : PC ← PC + 4
BEQ Nạp lệnh : Instruction ← MEM[PC]
Nạp toán hạn : data1 ← Reg(Rs), data2 ← Reg(Rt)
Kiểm tra bằng: zero ← subtract(data1, data2)
Rẽ nhánh: if (zero) PC ← PC + 4 + 4×sign_ext(imm16)
else PC ← PC + 4
2015
dce
13 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Instruction Execution – cont’d
LW Nạp lệnh : Instruction ← MEM[PC]
Nạp thanh ghi nền: base ← Reg(Rs)
Tính địa chỉ: address ← base + sign_extend(imm16)
Đọc ô nhớ: data ← MEM[address]
Ghi vào thanh ghi: Reg(Rt) ← data
Chuẩn bị lệnh kế : PC ← PC + 4
SW Nạp lệnh : Instruction ← MEM[PC]
Nạp thanh ghi: base ← Reg(Rs), data ← Reg(Rt)
Tính địa chỉ: address ← base + sign_extend(imm16)
Ghi vào ô nhớ: MEM[address] ← data
Chuẩn bị lệnh kế : PC ← PC + 4
Jump Nạp lệnh : Instruction ← MEM[PC]
Tính địa chỉ đích: target ← PC[31:28] || Imm26 || ‘00’
Nhảy: PC ← target
concatenation
2015
dce
14 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Các thành phần yêu cầu từ tập lệnh
Bộ nhớ
Bộ nhớ lệnh là nơi chứa lệnh
Bộ nhớ dữ liệu là nơi chứa dữ liệu
Bộ thanh ghi
31 × 32-bit thanh ghi đa dụng, R0 luôn bằng giá trị 0
Đọc thanh ghi nguồn Rs
Đọc thanh ghi nguồn Rt
Ghi vào thanh ghi đích Rt hoặc Rd
Bộ đếm chương trình (thanh ghi PC) và Bộ cộng để tăng
PC = PC + 4
Bộ mở rộng dấu và 0 cho hằng số 16 bit
Bộ tính toán số học luận lý ALU thực hiện tính toán
2015
dce
15 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Tiếp theo . . .
Thiết kết bộ xử lý: Các bước thực hiện
Các thành phần của Datapath và cấp xung nhịp
Xây dựng Datapath đầy đủ
Điều khiển quá trình thực thi của các lệnh
Bộ điều khiển chính và bộ điều khiển ALU
Hạn chế của thiết kế bộ xử lý đơn chu kỳ
2015
dce
16 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Các thành phần của Datapath
Các phần tử mạch tổ hợp
ALU, Adder
Immediate extender
Multiplexers
Các phần tử lưu trữ
Instruction memory
Data memory
PC register
Register file
Xung nhịp
Đồng bộ quá trình ghi
32
Address
Instruction
Instruction
Memory
32
m
u
x
0
1
select
Extend
32 16
ExtOp
A
L
U
ALU control
ALU result
zero
32
32
32
overflow
P
C
32 32
clk
Registers
RA
RB
BusA
RegWrite
BusB
RW
5
5
5
32
32
32
BusW
clk
Data
Memory
Address
Data_in
Data_out
Mem
Read
Mem
Write
32
32
32
clk
2015
dce
17 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Thanh ghi
Thanh ghi
Tương tự D Flip-Flop
n-bit vào và ra
Write Enable (WE):
Cho phép/ cấm ghi vào thanh ghi
Cấm (0): Data_Out không đổi
Cho phép (1): Data_Out = Data_In sau cạnh lên của xung nhịp
Xung nhịp kích cạnh lên (0 -> 1)
Giá trị output được thay đổi tại cạnh lên của xung nhịp
Register
Data_In
Clock
Write
Enable
n bits
Data_Out
n bits
WE
2015
dce
18 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Bộ thanh ghi MIPS (Register File)
Bộ thanh ghi bao gồm 32 × 32-bit thanh ghi
BusA và BusB: 32-bit ngõ ra cho 2 toán hạn nguồn
BusW: 32-bit ngõ vào để ghi giá trị vào thanh ghi khi RegWrite = 1
Lựa chọn thanh ghi:
RA lựa chọn thanh ghi đọc cho giá trị ở BusA
RB lựa chọn thanh ghi đọc cho giá trị ở BusB
RW lựa chọ thanh ghi được ghi vào
Xung nhịp
Xung nhịp sử dụng khi GHI (cạnh lên)
Khi đọc, bộ thanh ghi như là một mạch tổ hợp
RA, RB hợp lệ => BusA, BusB là giá trị tương ứng sau thời gian truy
xuất
RW RA RB
Register
File RA
RB
BusA
RegWrite
BusB
RW
5
5
5
32
32
32
BusW
Clock
2015
dce
19 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Chi tiết bộ thanh ghi
BusA
BusB
"0" "0"
RA
Decoder
5 RB
Decoder
5
R1
R2
R31
.
.
.
BusW
D
e
c
o
d
e
r
RW
5
Clock
RegWrite
.
.
.
R0 is
not used
32
32
32
32
32
32
32
32
32
Tri-state
buffers
WE
WE
WE
2015
dce
20 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Bộ đệm 3 trạng thái
Cho phép nhiều nguồn sử dụng chung một bus
Hai ngõ vào:
Data_in
Enable (to enable output)
Một ngõ ra: Data_out
If (Enable) Data_out = Data_in
else Data_out = High Impedance state (output bị ngắt)
Bộ đệm 3 trạng thái được
sử dụng tạo thành bộ
hợp kênh (multiplexor)
Data_in Data_out
Enable
Data_0
Data_1
Output
Select
2015
dce
21 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Half
adder y
S
C
x
x
y
S
C
1 0 1 1
0 1 0 1
0 1 1 0
0 0 0 0
C S y x
AND XOR
AND
XOR
Mạch Half Adder
2015
dce
22 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Full
adder
y
S
C
x
C0
S = x + y + C0
S = (x + y) + C0
Tính: S1 = x + y
Tính: S2 = S1 + C0
Half adder 1
Half adder 2
Mạch Full Adder
2015
dce
23 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
1 0 1 0 1 1 1 1 1 1
1 1 0 1 1 1 0 0 1 1
1 1 0 1 1 1 0 1 0 1
0 0 0 0 1 0 1 0 0 1
1 0 1 0 0 1 0 1 1 0
0 0 0 1 0 0 1 0 1 0
0 0 0 1 0 0 1 1 0 0
0 0 0 0 0 0 0 0 0 0
C C2 C1 S1 C0 C S y x C0
C = 1 when C1 = 1 or C2 = 1
Full adder (2)
2015
dce
24 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
C0
x
y
S1
S
C1
C2
C
Half
adder
Half
adder
Full adder (3)
2015
dce
25 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
y3
y0
S0
x0
0
S1
S2
S3 C
x1
x2
x3
y1
y2
Full
adder 0
Full
adder 1
Full
adder 2
Full
adder 3
x3x2x1x0
C S3S2S1S0
y3y2y1y0
+
Cộng nhiều Bits
2015
dce
26 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Xây dựng bộ ALU
0
1
2
3
0
1
2
3
Logic Unit
2
AND = 00
OR = 01
NOR = 10
XOR = 11
L
o
g
ic
a
l
O
p
e
ra
ti
o
n
Shifter
2
SLL = 00
SRL = 00
SRA = 01
ROR = 11
S
h
if
t/
R
o
ta
te
O
p
e
ra
ti
o
n
A 32
32
B
A
d
d
e
r
c0
32
32
ADD = 0
SUB = 1
A
ri
th
m
e
ti
c
O
p
e
ra
ti
o
n
Shift = 00
SLT = 01
Arith = 10
Logic = 11
ALU
Selection
32
2
Shift Amount
ALU Result
5
sign
≠
zero overflow
SLT: ALU does a
SUB and check the
sign and overflow
2015
dce
27 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Bộ nhớ lệnh và bộ nhớ dữ liệu
Bộ nhớ lệnh chỉ cần thao tác đọc
Datapath không thực hiện việc ghi lệnh
Chức năng giống mạch tổ hợp cho thao tác đọc
Address lựa chọn Instruction sau access time
Bộ nhớ dữ liệu dùng cho lệnh load và store
MemRead: cho phép dữ liệu ra tại Data_out
Address lựa chọn ô nhớ để đưa ra Data_out
MemWrite: cho phép ghi dữ liệu từ Data_in
Address lựa chọn ô nhớ sẽ được ghi vào
Clock đồng bộ thao tác ghi
Tách biệt bộ nhớ lệnh và bộ nhớ dữ liệu
Sau này đượ thay thế thành bộ nhớ đệm
MemWrite MemRead
Data
Memory
Address
Data_in
Data_out
32
32
32
Clock
32
Address Instruction
Instruction
Memory
32
2015
dce
28 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Phương pháp cấp xung nhịp
Xung nhịp cần thiết cho các thành
phần tuần tự (lưu trữ) cho biết khi
nào cập nhật (ghi) vào
Phương pháp cấp xung nhịp xác
định khi nào dữ liệu có thể được ghi
và được đọc
Combinational logic
R
e
g
is
te
r
1
R
e
g
is
te
r
2
clock
rising edge falling edge
Sử dụng cạnh lên
Tấc cả trạng thái
thay đổi tại thời
điểm cạnh lên
Dữ liệu phải hợp
lệ và ổn định
trước thời điểm
cạnh lên
Cho phép đọc và
ghi được thực
hiện trong cùng
một chu kỳ xung
nhịp
2015
dce
29 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Xác định chu kỳ xung nhịp
Với phương pháp kích cạnh lên, chu kỳ xung nhịp phải
đủ dài để thỏa mãn thời gian cần thiết để dữ liệu hợp lệ
và ổn định khi đi từ một thanh ghi qua mạch tổ hợp rồi
đến thanh ghi khác
Tcycle ≥ Tclk-q + Tmax_comb + Ts
Combinational logic
R
e
g
is
te
r
1
R
e
g
is
te
r
2
clock
writing edge
Tclk-q Tmax_comb Ts Th
Tclk-q : thời gian trễ từ cạnh lên
đến khi dữ liệu mới hợp lệ trên
đầu ra của thanh ghi
Tmax_comb : thời gian trễ dài nhất
cho mạch tổ hợp
Ts : (setup time) thời gian cần
thiết để dữ liệu ổn định trước
lúc cạnh lên
Th: (hold time) thời gian dữ liệu
cần duy trùy sau khi có cạnh
lên
Hold time (Th) không quan
trọng vì Tclk-q > Th
2015
dce
30 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Clock Skew
Clock skew sinh ra vì các tín hiệu xung nhịp sử dụng các
đường đi khác nhau để đến các phần tử tuần tự
Clock skew là sự sai biệt thời gian để hai phần tử tuần tự
nhìn thấy cạnh xung nhịp
Với clock skew, chu kỳ xung nhịp tăng lên
Tcycle ≥ Tclk-q + Tmax_combinational + Tsetup+ Tskew
2015
dce
31 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Tiếp theo . . .
Thiết kết bộ xử lý: Các bước thực hiện
Các thành phần của Datapath và cấp xung nhịp
Xây dựng Datapath đầy đủ
Điều khiển quá trình thực thi của các lệnh
Bộ điều khiển chính và bộ điều khiển ALU
Hạn chế của thiết kế bộ xử lý đơn chu kỳ
2015
dce
32 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Đường dữ liệu (datapath) cho việc nạp lệnh
Bắt đầu thực hiện xây dựng datapath từ các thành phần
đã được định danh trong bước 1
Cho việc nạp lệnh, chúng ta cần
Thanh ghi bộ đếm chương trình (PC)
Bộ nhớ lệnh
Bộ cộng để tăng PC = PC + 4
Hai bit cuối của PC luôn
là ‘00’ vì đị chỉ lệnh là một
số chia hết cho 4
Chưa hỗ trợ lệnh
nhảy và rẽ nhánh
P
C
32
Address
Instruction
Instruction
Memory
32
32
32
4
A
d
d
next PC
clk
Cải tiến: cộng 30
bit cao PC lên 1
32
Address
Instruction
Instruction
Memory
32
30
P
C
0
0
+1
30
Improved
Datapath
next PC
clk
0
0
2015
dce
33 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Datapath cho lệnh R-type
Các tín hiệu điều khiển
ALUCtrl chọn lựa phép toán theo trường funct vì Op = 0 cho R-type
RegWrite cho phép ghi kết quả ALU vào thanh ghi Rd
Op6 Rs5 Rt5 Rd5 funct6 sa5
ALUCtrl
RegWrite
A
L
U
32
32
ALU result
32
Rs và Rt chỉ ra hai thanh ghi
đọc giá trị (BusA & BusB).
Rd chọn thanh ghi để ghi
BusA & BusB là hai toán hạn của ALU.
Kết quả từ ALU nối vào BusW để ghi
32
Address
Instruction
Instruction
Memory
32
30
P
C
0
0
+1
30
Registers
RA
RB
BusA
BusB
RW
BusW
5 Rs
5 Rt
5 Rd
clk
Clock cập nhật PC và thanh ghi Rd
giống nhau
2015
dce
34 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Datapath cho lệnh I-type (ALU)
Các tín hiệu điều khiển
ALUCtrl lựa chọn phép toán từ trường Op
RegWrite cho phép ghi kết quả ALU result vào thanh ghi Rt
ExtOp lựa chọn mở rộng dấu/không cho hằng số 16-bit
Op6 Rs5 Rt5 immediate16
ALUCtrl
RegWrite
32
Address
Instruction
Instruction
Memory
32
30
P
C
0
0
+1
30
5
Registers
RA
RB
BusA
BusB
RW
BusW
5 Rs
5 Rt
ExtOp
32
32
ALU result
32
32
A
L
U
Extender
Imm16
Toán hạn thứ hai của ALU từ bộ mở rộng hằng
số 16->32bit. RB và BusB không được sử dụng
Same clock
edge updates
PC and Rt
Rt chọn thanh ghi
để ghi, không phải
Rd
clk
2015
dce
35 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Kết hợp Datapath R-type & I-type
Các tín hiệu điều khiển
ALUCtrl lựa chọn phép toán ALU từ trường Op hoặc funct
RegWrite cho phép ghi kết quả ALU result vào thanh ghi
ExtOp chọn mở rộng dấu/không cho hằng số 16-bit
RegDst chọn lựa thanh ghi ghi từ Rt hoặc Rd
ALUSrc chọn toán hạn thứ 2 của ALU từ BusB hoặc Extender
Thêm 1 mux lựa
chọn RW từ Rt
hoặc Rd
Thêm mux lựa
chọn toán hạn thứ
2 của ALU từ
BusB hoặc từ bộ
mở rộng hằng số
16->32bit
ALUCtrl
RegWrite
ExtOp
A
L
U
ALU result
32
32
Registers
RA
RB
BusA
BusB
RW
5
32
BusW
32
Address
Instruction
Instruction
Memory
32
30
P
C
0
0
+1
30
Rs
5
Rd
Extender
Imm16
Rt
32
RegDst ALUSrc
0
1
clk
0
1
2015
dce
36 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Tổng hợp hoạt động các lệnh ALU
Cho lệnh ALU R-type:
RegDst = ‘1’ chọn RW
= Rd, ALUSrc = ‘0’
chọn toán hạn thứ 2
ALU từ BusB.
Datapath mong muốn
minh họa bằng màu
xanh lá
Cho lệnh ALU I-type:
RegDst = ‘0’ chọn RW
= Rt, ALUSrc = ‘1’ chọn
toán hạn thứ 2 ALU từ
Extender. Datapath
mong muốn minh họa
bằng màu xanh lá
A
L
U
ALUCtrl
ALU result
32
32
Registers
RA
RB
BusA
RegWrite = 1
BusB
RW
5
32
BusW
32
Address
Instruction
Instruction
Memory
32
30
P
C
0
0
+1
30
Rs
5
Rd
Extender
ExtOp
Imm16
Rt
0
1
0
1
RegDst = 1
ALUSrc = 0
clk
clk
A
L
U
ALUCtrl
ALU result
32
32
Registers
RA
RB
BusA
RegWrite = 1
BusB
RW
5
32
BusW
32
Address
Instruction
Instruction
Memory
32
30
P
C
0
0
+1
30
Rs
5
Rd
Extender
ExtOp
Imm16
Rt
32
0
1
0
1
RegDst = 0
ALUSrc = 1
2015
dce
37 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Chi tiết bộ mở rộng hằng số (Extender)
Hỗ trợ hai kiểu mở rộng
Mở rộng không (Zero-extension) cho hằng số kiểu unsigned
Mở rộng dấu (Sign-extension) cho hằng số kiểu signed
Tín hiệu điều khiển ExtOp chọn kiểu mở rộng
Hiện thực Extender : sử dụng 1 cổng AND
ExtOp = 0 Upper16 = 0
ExtOp = 1
Upper16 = sign bit
. .
.
ExtOp
Upper
16 bits
Lower
16 bits
. .
.
Imm16
2015
dce
38 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Các tín hiệu điều khiển mới
MemRead yêu cầu đọc (lw)
MemWrite yêu cầu ghi (sw)
MemtoReg chọn dữ liệu của BusW là kết quả từ ALU result hoặc từ
Memory Data_out
BusB is connected to Data_in of Data
Memory for store instructions
Thêm bộ nhớ dữ liệu (Data Memory) vào Datapath
Data memory được thêm vào cho lệnh load và store
Thêm mux thứ 3 chọn dữ liệu BusW
từ kết quả ALU hoặc từ Data_out của
Data Memory
Data
Memory
Address
Data_in
Data_out
32
32 A
L
U
ALUCtrl
32
Registers
RA
RB
BusA
Reg
Write
BusB
RW
5
BusW
32
Address
Instruction
Instruction
Memory
32
30
P
C
0
0
+1
30
Rs
5
Rd
E
ExtOp
Imm16
Rt
0
1
RegDst
ALUSrc
0
1
32
MemRead MemWrite
32
ALU result
32
0
1
MemtoReg
ALU tính địa chỉ của Data Memory
clk
2015
dce
39 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Họat động của lệnh “Load”
ALUCtrl
= ADD
RegWr
= 1
ExtOp = 1
32
Data
Memory
Address
Data_in
Data_out
32 A
L
U
Registers
RA
RB
BusA
BusB
RW
5
BusW
32
Address
Instruction
Instruction
Memory
32
30
P
C
0
0
+1
30
Rs
5
Rd
E
Imm16
Rt
0
1
0
1
32
ALU result
32
0
1
32
32
ALUCtrl = ‘ADD’ tính địa chỉ truy xuất bộ nhớ
Reg(Rs) + sign-extend(Imm16)
ALUSrc = ‘1’ lựa chọn toán hạn
thứ 2 của ALU từ bộ Extender
MemRead = ‘1’ yêu
cầu đọc dữ liệu từ
bộ nhớ
RegDst = ‘0’ chọn Rt là
thanh ghi đích
RegWrite = ‘1’ cho phép
ghi giá trị vào thanh ghi
MemtoReg = ‘1’ đưa dữ liệu từ
bộ nhớ ra BusW để ghi vào
thanh ghi đích
ExtOp = 1 thực hiện mở rộng
dấu 16 -> 32 bit
Clock cập nhật PC và
Rt
RegDst
= 0
ALUSrc
= 1 MemtoReg
= 1
MemRead
= 1
MemWrite
= 0
clk
2015
dce
40 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Hoạt động của lệnh “Store”
ALUCtrl
= ADD
RegWr
= 0
ExtOp = 1
32
Data
Memory
Address
Data_in
Data_out
32 A
L
U
Registers
RA
RB
BusA
BusB
RW
5
BusW
32
Address
Instruction
Instruction
Memory
32
30
P
C
0
0
+1
30
Rs
5
Rd
E
Imm16
Rt
0
1
0
1
32
ALU result
32
0
1
32
32
ALUCtrl = ‘ADD’ tính toán địa chỉ truy xuất bộ
nhớ Reg(Rs) + sign-extend(Imm16)
ALUSrc = ‘1’ chọn toán hạn thứ
2 của ALU từ bộ Extender
MemWrite = ‘1’ yêu
cầu ghi dữ liệu vào
bộ nhớ
RegDst = ‘X’ vì không
thực hiện ghi
RegWrite = ‘0’ không cho
phép ghi vào thanh ghi
MemtoReg = ‘X’ dữ liệu xuất
hiện trên BusW không quan
trọng
ExtOp = 1 thực hiện mở rộng
dấu hằng số 16 -> 32 bit
Clock cập nhật PC và
giá trị vào bộ nhớ
RegDst
= X
ALUSrc
= 1 MemtoReg
= X
MemRead
= 0
MemWrite
= 1
clk
2015
dce
41 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Thêm các thành phần hỗ trợ lệnh “Jump” và
“Branch” vào Datapath
Các tín hiệu điều khiển mới
J, Beq, Bne cho các lệnh nhảy và rẽ nhánh
Cờ Zero từ ALU, Zero = 1 khi ALU_result = 0
PCSrc = 1 cho lệnh nhảy & rẽ nhánh xảy ra
Next
PC
Next PC logic thực
hiện tính địa chỉ
nhảy đến cho lệnh
nhảy và rẽ nhánh
zero PCSrc
Bne
Beq
J
ALUCtrl
Reg
Write
ExtOp
RegDst
ALUSrc
Data
Memory
Address
Data_in
Data_out
32
32 A
L
U
32
Registers
RA
RB
BusA
BusB
RW
5
BusW
32
Address
Instruction
Instruction
Memory
P
C
0
0
30
Rs
5
Rd
E
Imm16
Rt
0
1
0
1
32
Imm26
32
ALU result
32
0
1
clk
+1
0
1
30
Jump or Branch Target Address 30
Mem
Read
Mem
Write
Mem
toReg
2015
dce
42 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Chi tiết bộ Next PC
Imm16 được mở rộng dấu thành 30 bit
Địa chỉ đích của lệnh Jump: 4 bit cao của PC nối với Imm26
PCSrc = J + (Beq . Zero) + (Bne . Zero)
A
D
D
30
30
0
m
u
x
1
Inc PC
30
Imm16
Imm26
30
SE
4 msb
26
Beq
Bne
J
Zero
PCSrc Branch or Jump Target Address
Sign-Extension:
Mở rộng dấu
16->30
2015
dce
43 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
ALU result
32
0
1
32
Hoạt động của lệnh “Jump”
Next
PC
zero
Bne = 0
Beq = 0
J = 1
ALUCtrl
= x
RegWr
= 0
RegDst
= x
ALUSrc
= x
Data
Memory
Address
Data_in
Data_out
32 A
L
U
32
Registers
RA
RB
BusA
BusB
RW
5
BusW
32
Address
Instruction
Instruction
Memory
P
C
0
0
30
Rs
5
Rd
E
Imm16
Rt
0
1
0
1
32
Imm26
clk
+1
0
1
30
Jump Target Address 30
Mem
Read
= 0
Mem
Write
= 0
Mem
toReg
= x
PCSrc
= 1
ExtOp
= x
32
MemRead, MemWrite,
và RegWrite bằng 0
J = 1. Ngõ ra của “Next
PC” là địa chỉ đích của
lệnh Jump Không quan tâm: RegDst, ExtOp,
ALUSrc, ALUCtrl, và MemtoReg
Clock chỉ cập nhật giá trị thanh ghi PC
2015
dce
44 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
ALU result
32
0
1
32
Hoạt động của lệnh “rẽ nhánh”
Next
PC
Zero
= 1
Bne = 0
Beq = 1
J = 0
ALUCtrl
= SUB
RegWr
= 0
RegDst
= x
Data
Memory
Address
Data_in
Data_out
32 A
L
U
32
Registers
RA
RB
BusA
BusB
RW
5
BusW
32
Address
Instruction
Instruction
Memory
P
C
0
0
30
Rs
5
Rd
E
Imm16
Rt
0
1
0
1
32
Imm26
clk
+1
0
1
30
Branch Target Address 30
Mem
Read
= 0
Mem
Write
= 0
Mem
toReg
= x
PCSrc
= 1
ExtOp
= x
32
RegWrite, MemRead và MemWrite bằng 0
Beq = 1 hoặc Bne =1
tùy vào lệnh
Clock chỉ cập nhật giá trị thanh ghi PC
ALUSrc = 0 lựa chọn
giá trị trên BusB
ALUCtrl = SUB để
tạo giá trị cờ Zero
Ngõ ra “Next PC” là địa chỉ đích khi rẽ nhánh
PCSrc = 1 nếu rẽ nhánh xảy ra
ALUSrc
= 0
2015
dce
45 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Tiếp theo . . .
Thiết kết bộ xử lý: Các bước thực hiện
Các thành phần của Datapath và cấp xung nhịp
Xây dựng Datapath đầy đủ
Điều khiển quá trình thực thi của các lệnh
Bộ điều khiển chính và bộ điều khiển ALU
Hạn chế của thiết kế bộ xử lý đơn chu kỳ
2015
dce
46 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Bộ điều khiển chính (Main Control) và bộ điều
khiển ALU (ALU Control)
Ngõ vào Main Control:
6-bit opcode từ 32 bit lệnh
Ngõ ra Main Control:
10 tín hiệu điều khiển cho Datapath
Datapath 32
Address
Instruction
Instruction
Memory
A
L
U
Ngõ vào ALU Control:
6-bit opcode từ 32 bit lệnh
6-bit function
Ngõ ra ALU Control:
ALUCtrl cho bộ ALU
ALU
Control
Op6
R
e
g
D
s
t
R
e
g
W
ri
te
E
x
tO
p
A
L
U
S
rc
M
e
m
R
e
a
d
M
e
m
W
ri
te
M
e
m
to
R
e
g
B
e
q
B
n
e
J
Op6
ALUCtrl
funct6
Main
Control
2015
dce
47 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
zero
Bộ xử lý đơn chu kỳ Datapath + Control
PCSrc
E
Data
Memory
Address
Data_in
Data_out
32
A
L
U
ALU result
32
5
Registers
RA
RB
BusA
BusB
RW BusW
32
Address
Instruction
Instruction
Memory
P
C
0
0
+1
30
Rs
5
Rd
Imm26
Rt
m
u
x
0
1
5
m
u
x
0
1
m
u
x
0
1
m
u
x
0
1
30
30 Jump or Branch Target Address
30
Imm16
Next
PC
RegDst
ALUSrc
RegWrite
J, Beq, Bne
MemtoReg
MemRead
MemWrite
ExtOp
Main
Control
Op
ALU
Ctrl
ALUop
func
clk
2015
dce
48 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Tín hiệu Trường hợp bằng ‘0’ Trường hợp bằng ‘1’
RegDst Thanh ghi đích Rw = Rt Thanh ghi đích Rw = Rd
RegWrite Không cho phép ghi
Thanh ghi đích được ghi vào với giá
trị trên BusW
ExtOp 16-bit hằng số được mở rộng không 16-bit hằng số được mở rộng dấu
ALUSrc
Toán hạn thứ 2 của ALU là giá trị từ
thanh ghi Rt (BusB)
Toán hạn thứ 2 của ALU là giá trị bộ
mở rộng 16->32 bit
MemRead Không cho phép đọc từ bộ nhớ
Data memory được đọc
Data_out ← Memory[address]
MemWrite Không cho phép ghi vào bộ nhớ
Data memory được ghi
Memory[address] ← Data_in
MemtoReg BusW = ALU result BusW = Data_out từ Data Memory
Beq, Bne PC ← PC + 4
PC ← Địa chỉ đích của lệnh rẽ
nhánh nếu xảy ra
J PC ← PC + 4 PC ← Địa chỉ đích của lệnh nhảy
Các tín hiệu ngõ ra từ Main Control
2015
dce
49 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Bảng sự thật của Main Control
X là giá trị don’t care (có thể 0 hoặc 1), dùng để tối ưu
Op
Reg
Dst
Reg
Write
Ext
Op
ALU
Src
Beq Bne J
Mem
Read
Mem
Write
Mem
toReg
R-type 1 = Rd 1 x 0=BusB 0 0 0 0 0 0
addi 0 = Rt 1 1=sign 1=Imm 0 0 0 0 0 0
slti 0 = Rt 1 1=sign 1=Imm 0 0 0 0 0 0
andi 0 = Rt 1 0=zero 1=Imm 0 0 0 0 0 0
ori 0 = Rt 1 0=zero 1=Imm 0 0 0 0 0 0
xori 0 = Rt 1 0=zero 1=Imm 0 0 0 0 0 0
lw 0 = Rt 1 1=sign 1=Imm 0 0 0 1 0 1
sw x 0 1=sign 1=Imm 0 0 0 0 1 x
beq x 0 x 0=BusB 1 0 0 0 0 x
bne x 0 x 0=BusB 0 1 0 0 0 x
j x 0 x x 0 0 1 0 0 x
2015
dce
50 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Phương trình luận lý của các tín hiệu ra
RegDst = R-type
RegWrite = (sw + beq + bne + j)
ExtOp = (andi + ori + xori)
ALUSrc = (R-type + beq + bne)
MemRead = lw
MemtoReg = lw
MemWrite = sw
Op6
R
-t
y
p
e
a
d
d
i
s
lt
i
a
n
d
i
o
ri
x
o
ri
lw
s
w
B
e
q
B
n
e
R
e
g
D
s
t
R
e
g
W
ri
te
E
x
tO
p
A
L
U
S
rc
M
e
m
R
e
a
d
M
e
m
to
R
e
g
M
e
m
W
ri
te
Logic Equations
J
Decoder
2015
dce
51 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Bảng sự thật của ALU Control
Input Output 4-bit
Encoding Op6 funct6 ALUCtrl
R-type add ADD 0000
R-type sub SUB 0010
R-type and AND 0100
R-type or OR 0101
R-type xor XOR 0110
R-type slt SLT 1010
addi x ADD 0000
slti x SLT 1010
andi x AND 0100
ori x OR 0101
xori x XOR 0110
lw x ADD 0000
sw x ADD 0000
beq x SUB 0010
bne x SUB 0010
j x x x
Giá trị cụ thể của ALU
control có thể khác. Tùy
vào hiện thực cụ thể của
bộ ALU
Giá trị 4-bit ALUCtrl được
mã hóa tùy theo hiện thực
của bộ ALU
2015
dce
52 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Tiếp theo . . .
Thiết kết bộ xử lý: Các bước thực hiện
Các thành phần của Datapath và cấp xung nhịp
Xây dựng Datapath đầy đủ
Điều khiển quá trình thực thi của các lệnh
Bộ điều khiển chính và bộ điều khiển ALU
Hạn chế của thiết kế bộ xử lý đơn chu kỳ
2015
dce
53 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Hạn chế của thiết kế bộ xử lý đơn chu kỳ
Chu kỳ xung nhịp dài
Phải thõa mãn lệnh chậm nhất
longest delay
Instruction
Fetch ALU
Decode
Reg Read
ALU
Reg
Write
Load
Instruction
Fetch
Decode
Reg Read
Compute
Address
Reg
Write
Memory Read
Store
Instruction
Fetch
Decode
Reg Read
Compute
Address
Memory Write
Jump
Instruction
Fetch
Decode
PC Write
Branch
Instruction
Fetch
Reg Read
Br Target
Compare
& PC Write
2015
dce
54 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Thời gian của lệnh Load
New PC Old PC
Clk-to-q
Instruction Memory Access Time
Old Instruction Load Instruction = (Op, Rs, Rt, Imm16)
Delay Through Control Logic
Old Control Signal Values New Control Signal Values
Register File Access Time
Old BusA Value New BusA Value = Register(Rs)
Delay Through Extender and ALU Mux
Old Second ALU Input New Second ALU Input = sign-extend(Imm16)
ALU Delay
Old ALU Result New ALU Result = Address
Data Memory Access Time
Old Data Memory Output Value Data from DM
Mux delay + Setup time + Clock skew
Write
Occurs
Clk
Clock Cycle
2015
dce
55 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Thời gian của lệnh “Load”
Thời gian của chu kỳ xung nhịp: đủ dài cho lệnh chậm nhất
Thời gian trễ PC cập nhật giá trị mới từ lúc cạnh lên của xung nhịp
+ Thời gian truy xuất mã máy từ bộ nhớ lệnh
+ Maximum của(
Thời gian truy xuất thanh ghi Rs,
Thời gian trễ của bộ Main Control + extender + ALU mux)
+ Thời gian ALU thực thi phép toán cộng
+ Thời gian truy xuất 4 ô nhớ (1 word) từ bộ nhớ dữ liệu
+ Thời gian trễ của bộ MemtoReg Mux
+ Thời gian để dữ liệu ổn định (setup) + Clock Skew
Chu kỳ xung nhịp sẽ dài hơn mức cần thiết cho các lệnh
khác
Do đó bộ xử lý theo thiết kế đơn chu kỳ không dùng trong thực tế
2015
dce
56 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Cải tiến: Hiện thực đa chu kỳ
Chi quá trình thực thi lệnh thành năm bước
Nạp lệnh
Giải mã lệnh, đọc thanh ghi, tính địa chỉ đích cho lệnh nhảy/rẽ
nhánh
Thực thi phép toán , tính địa chỉ truy xuất bộ nhớ, rẽ nhánh xảy ra
Truy xuất bộ nhớ hoặc chuẩn bị ghi dữ liệu vào thanh ghi đích
(lệnh ALU)
Chuẩn bị ghi dữ liệu vào thanh ghi đích (lệnh Load)
Mỗi bước là một chu kỳ (thời gian một chu kỳ giảm)
First 2 steps are the same for all instructions Instruction # cycles Instruction # cycles
ALU & Store 4 Branch 3
Load 5 Jump 2
2015
dce
57 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Ví dụ về hiệu suất
Cho thời gian trễ của các thành phần của datapath:
Truy xuất bộ nhớ lệnh và dữ liệu: 200 ps
ALU và các bộ cộng khác: 180 ps
Đọc giá trị của thanh ghi: 150 ps
Thời gian ổn định trước khi ghi giá trị vào thanh ghi: 100ps
Bỏ qua thời gian trễ PC, mux, extender và dây nối
Hiện thực nào nhanh hơn và bao nhiêu lần?
Hiện thực đơn chu kỳ
Hiện thực đa chu kỳ tối ưu cho từng lớp lệnh
Giả sử chương trình bao gồm:
40% ALU, 20% Loads, 10% stores, 20% branches, & 10% jumps
2015
dce
58 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Solution
Instruction
Class
Instruction
Memory
Register
Read
ALU
Operation
Data
Memory
Register
Write
Total
ALU 200 150 180 100 630 ps
Load 200 150 180 200 100 830 ps
Store 200 150 180 200 730 ps
Branch 200 150 180 530 ps
Jump 200 150 350 ps
Cho thiết kế đơn chu kỳ:
Chu kỳ xung nhịp =
Cho thiết kế đa chu kỳ:
Chu kỳ xung nhịp =
CPI trung bình =
Speedup =
0.4×4 + 0.2×5 + 0.1×4+ 0.2×3 + 0.1×2 = 3.8
max(200, 150, 180) = 200 ps (thõa mãn bước dài nhất)
830 ps thõa mãn lệnh dài nhất (lệnh load)
830 ps / (3.8 × 200 ps) = 830 / 760 = 1.1
2015
dce
59 Computer Architecture – Chapter 4.1 © Fall 2015, CSE
Tổng kết
5 bước trong quá trình thiết kế bộ xử lý = datapath+control
Phân tích tập lệnh => tìm ra các thành phần cần thiết cho datapath
Hiện thực các thành phần của datapath & thiết lập cách cấp xung nhịp
Kết nối các thành phần của datapath để thõa mãn tập lệnh
Phân tích quá trình kết nối ở bước 4 để xác định các tín hiệu điều khiển
cần thiết
Hiện thực bộ điều khiển
Bộ xử lý MIPS có thiết kế đơn giản
Các lệnh có cùng độ rộng 32 bit
Thanh ghi nguồn ở vị trí cố định
Hắng số imm16 ở vị trí cố định và cùng độ rộng 16 bit
Toán hạn của ALU là thanh ghi/hằng số
Bộ xử lý đơn chu kỳ => CPI=1, nhưng chu kỳ sẽ dài
Các file đính kèm theo tài liệu này:
- computer_architecture_chapter4_1_1571.pdf