dce
2017
COMPUTER ARCHITECTURE
CSE Fall 2017
BK
TP.HCM
Faculty of Computer Science and
Engineering
Department of Computer Engineering
Vo Tan Phuong
/>
dce
2017
Chapter 4.1
Thiết kế bộ xử lý đơn chu kỳ
(Single Cycle Processor)
Computer Architecture – Chapter 4.1
© Fall 2017, CSE
2
dce
2017
Chúng ta đang ở đâu?
Computer Architecture – Chapter 4.1
© Fall 2017, CSE
3
dce
2017
Bên trong bộ xử lý
Computer Architecture – Chapter 4.1
© Fall 2017, CSE
4
dce
2017
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ỳ
Computer Architecture – Chapter 4.1
© Fall 2017, CSE
5
dce
2017
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;
I-Count
CPI
Thời gian của một chu kỳ
CPI
Cycle
Thiết kế bộ xử xý đơn chu kỳ:
Một lệnh thực hiện trong một chu kỳ (CPI =1)
Computer Architecture – Chapter 4.1
© Fall 2017, CSE
6
dce
2017
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
Computer Architecture – Chapter 4.1
© Fall 2017, CSE
7
dce
Các định dạng lệnh MIPS
2017
Tấc cả các lệnh: độ rộng 32-bit
Ba loại: R-type, I-type, và J-type
Op6
Rs5
Rt5
Op6
Rs5
Rt5
Op6
Rd5
sa5
funct6
immediate16
immediate26
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
Computer Architecture – Chapter 4.1
© Fall 2017, CSE
8
dce
2017
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
Computer Architecture – Chapter 4.1
© Fall 2017, CSE
9
dce
Chi tiết tập lệnh con
2017
Instruction
add
sub
and
or
xor
slt
addi
slti
andi
ori
xori
lw
sw
beq
bne
j
Meaning
rd, rs, rt
addition
rd, rs, rt
subtraction
rd, rs, rt
bitwise and
rd, rs, rt
bitwise or
rd, rs, rt
exclusive or
rd, rs, rt
set on less than
rt, rs, im16
add immediate
rt, rs, im16
slt immediate
rt, rs, im16
and immediate
rt, rs, im16
or immediate
rt, im16
xor immediate
rt, im16(rs)
load word
rt, im16(rs)
store word
rs, rt, im16
branch if equal
rs, rt, im16 branch not equal
im26
jump
Computer Architecture – Chapter 4.1
Format
op6 = 0
op6 = 0
op6 = 0
op6 = 0
op6 = 0
op6 = 0
0x08
0x0a
0x0c
0x0d
0x0e
0x23
0x2b
0x04
0x05
0x02
rs5
rs5
rs5
rs5
rs5
rs5
rs5
rs5
rs5
rs5
rs5
rs5
rs5
rs5
rs5
rt5
rt5
rt5
rt5
rt5
rt5
rt5
rt5
rt5
rt5
rt5
rt5
rt5
rt5
rt5
rd5
rd5
rd5
rd5
rd5
rd5
0
0
0
0
0
0
im16
im16
im16
im16
im16
im16
im16
im16
im16
0x20
0x22
0x24
0x25
0x26
0x2a
im26
© Fall 2017, CSE
10
dce
Register Transfer Level (RTL)
2017
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
Computer Architecture – Chapter 4.1
© Fall 2017, CSE
11
dce
2017
Instructions are Executed in Steps
R-type
Nạp lệnh:
Nạp toán hạn:
Thực hiện phép toán:
Ghi vào thanh ghi:
Chuẩn bị lệnh kế:
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 :
Nạp toán hạn :
Kiểm tra bằng:
Rẽ nhánh:
Computer Architecture – Chapter 4.1
Instruction ← MEM[PC]
data1 ← Reg(Rs), data2 ← Reg(Rt)
ALU_result ← func(data1, data2)
Reg(Rd) ← ALU_result
PC ← PC + 4
Instruction ← MEM[PC]
data1 ← Reg(Rs), data2 ← Reg(Rt)
zero ← subtract(data1, data2)
if (zero) PC ← PC + 4 + 4×sign_ext(imm16)
else
PC ← PC + 4
© Fall 2017, CSE
12
dce
Instruction Execution – cont’d
2017
LW
Nạp lệnh :
Nạp thanh ghi nền:
Tính địa chỉ:
Đọc ô nhớ:
Ghi vào thanh ghi:
Chuẩn bị lệnh kế :
Instruction ← MEM[PC]
base ← Reg(Rs)
address ← base + sign_extend(imm16)
data ← MEM[address]
Reg(Rt) ← data
PC ← PC + 4
SW
Nạp lệnh :
Nạp thanh ghi:
Tính địa chỉ:
Ghi vào ơ nhớ:
Chuẩn bị lệnh kế :
Instruction ← MEM[PC]
base ← Reg(Rs), data ← Reg(Rt)
address ← base + sign_extend(imm16)
MEM[address] ← data
PC ← PC + 4
Jump
Nạp lệnh :
Tính địa chỉ đích:
Nhảy:
Computer Architecture – Chapter 4.1
concatenation
Instruction ← MEM[PC]
target ← PC[31:28] || Imm26 || ‘00’
PC ← target
© Fall 2017, CSE
13
dce
2017
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 tốn số học luận lý ALU thực hiện tính tốn
Computer Architecture – Chapter 4.1
© Fall 2017, CSE
14
dce
2017
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ỳ
Computer Architecture – Chapter 4.1
© Fall 2017, CSE
15
dce
2017
Các thành phần của Datapath
Các phần tử mạch tổ hợp
32
0
ALU, Adder
16
Extend
m
u
x
32
Immediate extender
ExtOp
Multiplexers
select
Các phần tử lưu trữ
32
PC
Instruction memory
32
32
Xung nhịp
Đồng bộ quá trình ghi
overflow
Data
Memory
32
32
Data_out
Data_in
clk
Registers
5
32
RA
BusA
RB
BusB
5
Mem
Read
Mem
Write
32
5
RW
BusW
clk
RegWrite
Computer Architecture – Chapter 4.1
ALU result
Address
Instruction
Memory
PC register
Register file
32
Address
clk
zero
32
ALU control
Instruction
32
Data memory
32
1
A
L
U
32
© Fall 2017, CSE
16
dce
Thanh ghi
2017
Thanh ghi
Data_In
Tương tự D Flip-Flop
n bits
n-bit vào và ra
Write Enable (WE):
Write
Enable
Cho phép/ cấm ghi vào thanh ghi
Cấm (0): Data_Out không đổi
WE
Register
Clock
n bits
Data_Out
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
Computer Architecture – Chapter 4.1
© Fall 2017, CSE
17
dce
2017
Bộ thanh ghi MIPS (Register File)
RW RA RB
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)
5
RA
Register
File BusA
32
5
RB
5
RW
32
BusB
Clock
BusW
RegWrite
32
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
Computer Architecture – Chapter 4.1
© Fall 2017, CSE
18
dce
Chi tiết bộ thanh ghi
2017
RA 5
Decoder
32
R0 is
not used
WE
Decoder
5
.
.
.
32
WE
"0"
Tri-state
buffers
R1
32
RW
"0"
RB 5
Decoder
32
R2
32
32
.
.
.
BusW
32
BusA
WE
R31
32
RegWrite
Clock
Computer Architecture – Chapter 4.1
32
BusB
© Fall 2017, CSE
19
dce
Bộ đệm 3 trạng thái
2017
Cho phép nhiều nguồn sử dụng chung một bus
Hai ngõ vào:
Enable
Data_in
Enable (to enable output)
Data_in
Data_out
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)
Computer Architecture – Chapter 4.1
Data_0
Output
Data_1
Select
© Fall 2017, CSE
20
dce
2017
Mạch Half Adder
x
y
XOR
S
Half
adder
C
x
S
y
XOR AND
x
y
S
C
0
0
0
0
0
1
1
0
1
0
1
0
1
1
0
1
Computer Architecture – Chapter 4.1
C
AND
© Fall 2017, CSE
21
dce
2017
Mạch Full Adder
C0
x
y
S
Full
adder
S = x + y + C0
S = (x + y) + C0
Tính: S1 = x + y
Tính: S2 = S1 + C0
Computer Architecture – Chapter 4.1
C
Half adder 1
Half adder 2
© Fall 2017, CSE
22
dce
2017
Full adder (2)
C0
x
y
S
C
C0
S1
C1
C2
C
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
1
0
0
0
0
1
0
1
0
0
1
0
0
0
0
1
1
0
1
0
0
1
0
1
1
0
0
1
0
1
0
0
0
0
1
0
1
0
1
1
1
0
1
1
1
1
0
0
1
1
1
0
1
1
1
1
1
1
1
1
0
1
0
1
C = 1 when C1 = 1 or C2 = 1
Computer Architecture – Chapter 4.1
© Fall 2017, CSE
23
dce
2017
Full adder (3)
Half
adder
C0
x
y
Half
adder
S1
S
C2
C1
Computer Architecture – Chapter 4.1
C
© Fall 2017, CSE
24
dce
2017
0
x0
Cộng nhiều Bits
y0
Full
adder 0
S0
x3x2x1x0
+
x1
x2
y1
Full
adder 1
y2
Full
adder 2
x3
y3
Full
adder 3
Computer Architecture – Chapter 4.1
S1
y3y2y1y0
C S3S2S1S0
S2
S3
C
© Fall 2017, CSE
25