Professional Documents
Culture Documents
CA I Chapter 3 RISC V Processor en GB Vi VN 1623249684900
CA I Chapter 3 RISC V Processor en GB Vi VN 1623249684900
[Chuyển thể từ Tổ chức và Thiết kế Máy tính, Phiên bản RISC-V, Patterson & Hennessy, © 2018, MK]
[Chuyển thể từ những ý tưởng tuyệt vời trong các bài giảng về Kiến trúc máy tính (CS 61C), Garcia và Nikolíc, © 2020,
UC Berkeley]
6/7/2021 1
Thiết kế bộ xử lý RISC-V
6/7/2021 2
Ý tưởng tuyệt vời số 1: Trừu tượng hóa
(Cấp độ đại diện / giải thích)
temp = v [k];
v [k] = v [k +
1];
v [k + 1] =
Ngôn ngữ cấp cao temp;
Chương trình (ví dụ:., C) x3, 0 (x10)
Trình biên dịch lw
lw x4, 4 (x10)
Ngôn ngữ hội sw x4, 0 (x10)
Chương trình (ví dụ:., RISC- sw x3, 4 (x10)
V)
1000 1101 1110 0010 0000 0000 0000 0000
Lắp ráp 1000 1110 0001 0000 0000 0000 0000 0100
Ngôn ngữ máy móc 1010 1110 0001 0010 0000 0000 0000 0000
Chương trình (RISC-V) 1010 1101 1110 0010 0000 0000 0000 0100
máy pc + 4
+4 Reg [] tính 1 alu
Mô tả kiến trúc phần cứng (ví dụ:., sơ đồ khối) Chi nhánh Reg [rs2] Addr Dữ liệu 0 wb
Dữ
1 wb liệuD
alu Reg [rs1] ALU 2
máy 0 DMEM 1
tín
0 h IMEM inst [11: 7] AddrD
inst [19:15] AddrA Dữ liệu 0 Dữ
Comp. liệuW mem
inst [24:20] AddrB Dữ liệuB 1
pc + 4
Chương trình
Địa chỉ
Da tap ath
Bộ đếm chương trình (PC)
Byte
Đăng ký
WriteData
Dữ liệu
Đọc dữ liệu
Số học-Log ic
Đơn vị (ALU) Đầu ra
6/7/2021 4
CPU
6/7/2021 5
Cần thực hiện tất cả các hướng dẫn RV32I
Mở Thẻ tham khảo
Hướng dẫn số nguyên cơ sở:
RV32I
Thể loại Tên Fmt Cơ sở RV32I Thể loại Tên Fmt Cơ sở RV32I
Ca làm việc Chuyển trái logic R SLL rd, rs1, rs2 Tải Tải Byte TÔI LB rd, rs1, imm
Chuyển sang trái
Nhật ký. Tôi. TÔI SLLI rd, rs1, shamt Tải nửa chữ TÔI LH rd, rs1, imm
Thay đổi logic phải R SRL rd, rs1, rs2 Tải Byte chưa ký TÔI LBU rd, rs1, imm
Shift Right Log. Tôi. TÔI SRLI rd, rs1, shamt Tải một nửa chưa ký TÔI LUH rd, rs1, imm
Chuyển số học phải R SRA rd, rs1, rs2 Tải từ TÔI LW rd, rs1, imm
Cửa Cửa hàng
Chuyển sang phải Arith. Tôi. TÔI SRAI rd, rs1, shamt hàng Byte S SB rs1, rs2, imm
Số học THÊM R THÊM, rs1, rs2 Lưu trữ Halfword S SH rs1, rs2, imm
THÊM ngay lập tức TÔI ADDI rd, rs1, imm Lưu trữ Word S SW rs1, rs2, imm
Chi
R
ĐĂNG KÝ SUB rd, rs1, rs2 nhánh Chi nhánh = B BEQ rs1, rs2, imm
Tải Thượng Imm Bạn LUI rd, imm Chi nhánh ≠ B BNE rs1, rs2, imm
Thêm Upper Imm vào PC Bạn AUIPC rd, imm Chi nhánh < B BLT rs1, rs2, imm
Hợp lý XOR R XOR rd, rs1, rs2 Chi nhánh ≥ B BGE rs1, rs2, imm
XOR ngay lập tức TÔI XORI rd, rs1, imm Chi nhánh <Chưa ký B BLTU rs1, rs2, imm
Chi nhánh ≥ Chưa
HOẶC LÀ R HOẶC rd, rs1, rs2 ký B BGEU rs1, rs2, imm
Nhảy và liên
HOẶC Ngay lập tức TÔI ORI rd, rs1, imm kết J&L J JAL rd, imm
Nhảy & Liên kết Đăng
VÀ R VÀ rd, rs1, rs2 ký TÔI JALR rd, rs1, imm
VÀ ngay lập tức TÔI ANDI rd, rs1, imm
Đồng Đồng bộ hóa
So sánh Đặt < R SLT rd, rs1, rs2 bộ hóa chủ đề TÔI FENT
Đặt <Ngay lập tức TÔI SLTI rd, rs1, imm Không ở
ECALL
Đặt <Chưa ký R SLTU rd, rs1, rs2 Môi trường GỌI TÔI 61C
Đặt <imm Chưa ký TÔI SLTIU rd, rs1, imm BREAK TÔI EBREAK
6/7/2021 6
6/7/2021 7
Máy RISC-V một hướng dẫn mỗi chu kỳ
▪
Trên mỗi tích tắc của đồng hồ, máy tính thực hiện một lệnh
▪
Các đầu ra trạng thái hiện tại điều khiển các đầu vào cho
logic tổ hợp, có đầu ra lắng xuống các giá trị của trạng
thái trước cạnh đồng hồ tiếp theo
Kết hợp
▪
Logic Ở cạnh đồng hồ tăng, tất cả các yếu tố trạng thái được
cập nhật với các đầu ra logic kết hợp và thực thi di
chuyển sang chu kỳ đồng hồ tiếp theo
6/7/2021 số 8
Các giai đoạn của Datapath: Tổng quan
• Vấn đề: một khối duy nhất, nguyên khối, mà thực hiện
một hướng dẫn, (thực hiện tất cả các thao tác cần thiết
bắt đầu bằng cách tìm nạp hướng dẫn) sẽ quá cồng kềnh
và không hiệu quả
• Giải pháp: chia nhỏ quá trình thực hiện một hướng dẫn, và
sau đó kết nối các giai đoạn để tạo ra toàn bộ datapath
- giai đoạn nhỏ hơn dễ thiết kế hơn
- dễ dàng tối ưu hóa (thay đổi) một giai đoạn mà không
cần chạm vào những người khác (mô-đun)
6/7/2021 9
Năm giai đoạn của Datapath
• Giai đoạn 1 : Tìm nạp hướng dẫn (IF)
• Giai đoạn 2 : Giải mã hướng dẫn (ID)
6/7/2021 10
Các giai đoạn cơ bản của việc thực hiện hướng
dẫn
rd
g[ ]
M
D
E
PC
Re
rs1
ALU
IME
rs2
M
+4 tôi
mux
32 32
Ad
MU
Y 32
X
B Thực hiện B 32
B
32 32 32
U
L
A
▪
Yếu tố lưu trữ + phương pháp đồng hồ
▪
Xây dựng khối
6/7/2021 12
Các yếu tố Datapath: Trạng thái và Trình tự (1/3)
Viết kích hoạt
▪
Dữ liệu Dữ liệu ra
trong
Đăng ký N
N
▪ clk
Viết kích hoạt :
Thấp (hoặc được xác nhận lại) (0): Dữ liệu ra
sẽ không thay đổi
Đã xác nhận (1): Data Out sẽ trở thành Data
In trên cạnh tích cực của đồng hồ
6/7/2021 13
Các yếu tố Datapath: Trạng thái và Trình tự (2/3)
▪ RWRA RB
Tệp đăng ký (regfile, RF) bao gồm 32 thanh ghi : Viết kích hoạt 5 5
5 busA
Hai bus đầu ra 32 bit: busA và busB
32
Một bus đầu vào 32 bit: busW xe buýt 32 x 32-bit xe
▪ 32
Đăng ký được chọn bởi : Đăng ký buýt
Clk 32
RA (số) chọn thanh ghi để đưa vào busA (dữ liệu)
RB (số) chọn thanh ghi để đưa vào busB (dữ liệu)
RW (số) chọn thanh ghi được viết qua busW (dữ liệu) khi
Write Enable là 1
▪
Đầu vào đồng hồ (Clk)
Đầu vào Clk là một yếu tố CHỈ trong quá trình ghi
Trong quá trình đọc, hoạt động như một tổ hợp khối logic :
RA hoặc RB hợp lệ busA hoặc busB hợp lệ sau Cúcthời gian truy cập.Giáo dục
6/7/2021 14
Các yếu tố Datapath: Trạng thái và Trình tự (3/3)
▪
Bộ nhớ ma thuật của Viết kích hoạt Địa chỉ
6/7/2021 16
Yêu cầu trạng thái theo RV32I ISA (2/2)
▪
Ký ức (MEM)
Giữ cả hướng dẫn và dữ liệu, trong một không gian bộ nhớ có
địa chỉ byte 32 bit
Chúng tôi sẽ sử dụng các bộ nhớ riêng cho hướng dẫn (IMEM)
và dữ liệu (DMEM)
Đây là các trình giữ chỗ cho hướng dẫn và bộ nhớ dữ liệu
Hướng dẫn được đọc (lấy) từ bộ nhớ lệnh (giả định IMEM chỉ
đọc)
Tải / lưu hướng dẫn truy cập bộ nhớ dữ liệu
6/7/2021 17
6/7/2021 18
Đánh giá: Hướng dẫn loại R
3
s
ố
1 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 10 9 8 76 5 4 3 2 1 0
Định dạng R:
ALU
[11:
[31:25] [24:20] [19:15] [14:12] 7] [6: 0]
7 5 5 3 5 7
func7 rs2 rs1 func3 rd opcode
0110011: OP-
0000000 rs2 rs1 000 : THÊM rd R
0110011: OP-
0100000 rs2 rs1 000: SUB rd R
0110011: OP-
0000000 rs2 rs1 001 : SLL rd R
0110011: OP-
0000000 rs2 rs1 010 : SLT rd R
0110011: OP-
0000000 rs2 rs1 011 : SLTU rd R
0110011: OP-
0000000 rs2 rs1 100 : XOR rd R
0110011: OP-
0000000 rs2 rs1 101: SRL rd R
0110011: OP-
0100000 rs2 rs1 101 : SRA rd R
:
HOẶC 0110011: OP-
0000000 rs2 rs1 110 LÀ rd R
0110011: OP-
0000000 rs2 rs1 111 : VÀ rd R
▪
Ví dụ. Phép cộng / phép trừ thêm rd, rs1, rs2
R [rd] = R [rs1] + R
[rs2]
tiểu rd, rs1, rs2
R [rd] = R [rs1] - R [rs2]
6/7/2021 19
Thực hiện hướng dẫn thêm
31 25 24 20 19 1514 1211 76 0
func7 rs2 rs1 func3 rd opcode
7 5 5 3 5 7
31 25 24 20 19 1514 1211 76 0
0000000 rs2 rs1 000 rd 0110011
7 5 5 3 5 7
thêm rs2 rs1 thêm rd Reg-Reg OP
6/7/2021 20
Datapath để thêm
Reg [rd] = Reg [rs1] + Reg [rs2]
+4
Thêm vào
Dữ
liệuD
PC bổ sung Inst [11: 7] Reg [rs1]
AddrD
pc + 4 inst + alu
Inst [19:15] AddrADataA
clk Inst [24:20] Dữ Reg [rs2] ALU
AddrB liệuB
IMEM
Reg []
clk
Inst [31: 0]
RegWriteEnable (RegWEn) = 1
Dữ
PC Inst [11: 7]
liệuD
+ alu
bổ sung
pc + 4 AddrD Reg [rs1]
inst Inst [19:15]
AddrA Dữ liệu
clk Inst [24:20]
AddrB
Reg [rs2] ALU
Dữ liệuB
IMEM Reg []
clk Inst [31: 0]
RegWEn
Đồng hồ
PC 1000 1004
PC + 4 1004 1008
6/7/2021
thời 22
gian
6/7/2021 23
Thực hiện hướng dẫn phụ
0000000 rs2 rs1 000 rd 0110011 thê
0100000 rs2 rs1 000 rd 0110011 m
phụ
Dữ
liệuD
PC bổ sung Inst [11: 7] Reg [rs1]
pc + 4 AddrD alu
inst Inst [19:15] AddrADataA Reg [rs2] ALU
clk Inst [24:20]
AddrB Dữ
IMEM
liệuB
Reg []
clk
Inst [31: 0]
Tất cả được thực hiện bằng cách giải mã các trường func3 và
func7
và chọn chức năng ALU thích hợp
6/7/2021 26
6/7/2021 27
Thực hiện I-Format - hướng dẫn addi
▪
Hướng dẫn lắp ráp RISC-V :
addi x15, x1, -50
31 20 19 1514 1211 76 0
im [11: 0] rs1 func3 rd opcode
12 5 3 5 7
6/7/2021 28
Datapath cho thêm / phụ
PC = PC + 4
Reg [rd] = Reg [rs1] +
Imm
+4
Thêm vào
Dữ
liệuD
PC bổ sung Inst [11: 7] Reg [rs1]
pc + 4 AddrD alu
inst
Inst [19:15] AddrADataA ALU
clk Inst [24:20] Reg [rs2]
AddrB Dữ
IMEM
liệuB
Reg []
Dữ
liệuD
PC bổ sung Inst [11: 7] Reg [rs1]
pc + 4 AddrD
inst alu
Inst [19:15] AddrADataA Reg [rs2]
ALU
clk Inst [24:20] 0
AddrB Dữ
IMEM 1
liệuB
Reg []
Dữ liệuD
Inst [11: 7]
AddrD Reg [rs1]
PC bổ sung
Inst [19:15]
pc + 4 inst AddrA Dữ liệu
alu
Inst [24:20] Reg [rs2]
AddrB ALU
clk Dữ liệuB 0
IMEM
Reg [] 1
Inst clk
[31:20] Tôi.
Gen Imm [31: 0]
Inst [31: 0]
ImmSel RegWriteEnable BSel ALUSel
(thêm = 0 / phụ
= TÔI (RegWEn) = 1 (rs2 = 0 / = 1)
Kiểm soát logic Imm = 1)
6/7/2021 31
Thêm addi toDatapath
PC = PC + 4
Reg [rd] = Reg [rs1] + Imm
+4
Thêm vào
Dữ liệuD
Inst [11: 7]
AddrD Reg [rs1]
PC bổ sung
Inst [19:15]
pc + 4 inst AddrA Dữ liệu
alu
Inst [24:20] Reg [rs2]
AddrB ALU
clk Dữ liệuB 0
IMEM
Reg [] 1
clk
Inst Bsel = 1
[31:20] Tôi.
Gen Imm [31: 0]
Inst [31: 0]
ImmSel Reg WriteEnable BSel ALUSel
(thêm = 0 / phụ
= TÔI (RegWEn) = 1 (rs2 = 0 / = 1)
Kiểm soát logic Imm = 1)
6/7/2021 32
Định dạng I Immediates
-inst [31] -
31 30 20 19 1514 1211 76 0
im [11: 0] rs1 func3 rd opcode
12 inst [31: 0]
+4
Thêm vào
Dữ liệuD
Inst [11: 7]
bổ sung AddrD Reg [rs1]
PC
Inst [19:15]
pc + 4 inst AddrA Dữ liệu alu
Inst [24:20] Reg [rs2]
AddrB Dữ ALU
clk liệuB 0
IMEM Reg [] 1
Inst clk
[31:20] Tôi.
Gen Imm [31: 0]
Inst [31: 0]
6/7/2021 36
RISC-V (37)
Thêm vào lw
▪
Hướng dẫn lắp ráp RISC-V (loại I) : lw x14, 8 (x2)
31 20 19 1514 1211 76 0
im [11: 0] rs1 func3 rd opcode
12 5 3 5 7
căn chiều định
bù [11: 0] cứ rộng mệnh LOAD
00000001000 00010 010 01110 0000011
im = + 8 rs1 = 2 lw rd = 14 LOAD
▪
12 bit được ký ngay lập tức được thêm vào địa chỉ cơ sở
trong thanh ghi rs1 để tạo thành địa chỉ bộ nhớ
Điều này rất giống với hoạt động bổ sung ngay lập tức nhưng được
sử dụng để tạo địa chỉ không tạo kết quả cuối cùng
▪
Giá trị được tải từ bộ nhớ được lưu trữ trong thanh ghi rd
6/7/2021 37
RISC-V (38)
R + IArithetic / LogicDatapath
+4
Thêm
vào
Dữ
liệuD alu 1
Inst [11: 7] Reg [rs1] 0
PC bổ sung AddrD Dữ liệu
pc + 4 Inst [19:15] Dữ liệu AddrA ALU
inst Reg [rs2] bổ sung
Inst [24:20] 0
AddrB
clk Dữ
liệuB 1
IMEM DMEM
Reg []
clk
Inst clk
[31:20] Tôi.
Imm [31:
Gen 0]
Inst [31:
0]
BSel
ImmSel RegWriteEnable ALUSel MemRW WBSel
Kiểm soát logic
6/7/2021 38
RISC-V (39)
R + IArithetic / LogicDatapath
+4
Thêm vào
Dữ
liệuD
Inst [11: 7] alu 1
PC bổ sung AddrD Reg [rs1] 0
Inst [19:15]
Dữ
pc + 4 inst AddrA liệu Dữ liệu
Inst [24:20] ALU
AddrB Dữ Reg [rs2] bổ sung
clk liệuB 0
IMEM
Reg [] 1
DMEM
clk
Inst clk
[31:20] Tôi.
Gen Imm [31: 0]
Inst [31: 0]
RegWEn =
ImmSel 1 BSel = 1 ALUSel MemRW WBSel
= TÔI = Thêm =Đọc =0
Kiểm soát logic
6/7/2021 39
RISC-V (40)
AllRV32LoadInstructions
im [11: 0] rs1 000 rd 0000011 lb
im [11: 0] rs1 001 rd 0000011 lh
im [11: 0] rs1 010 rd 0000011 lw
im [11: 0] rs1 100 rd 0000011 lbu
im [11: 0] rs1 101 rd 0000011 lhu
6/7/2021 40
RISC-V (41)
6/7/2021 41
Thêm sw chỉ dẫn
sw: Đọc hai thanh ghi, rs1 cho địa chỉ bộ nhớ cơ sở và rs2 cho dữ liệu
được lưu trữ, cũng như bù đắp ngay lập tức!
sw x14, 8 (x2)
31 25 24 20 19 1514 1211 76 0
Imm [11: im [4:
5] rs2 rs1 func3 0] opcode
7 5 5 3 5 7
bù chiều rộng cơ sở [4: CỬA
bù [11: 5] src 0] HÀNG
0000000 01110 00010 010 01000 0100011
bù [11: 5] bù [4: 0]
rs1 = CỬA
= 0 rs2 = 14 2 SW = số 8 HÀNG
0000000 01000 kết hợp bù 12 bit = 8
6/7/2021 42
RISC-V (43)
Datapathwithlw
+4
Thêm
vào
Dữ
liệuD alu 1
Inst [11: 7] Reg [rs1] Dữ 0
PC bổ sung AddrD liệu
mem
pc + 4 Inst [19:15] Dữ liệu AddrA
inst Reg [rs2] ALU
bổ sung
Inst [24:20] 0
AddrB
clk Dữ DMEM
liệuB 1
IMEM
Reg []
clk
Inst clk
[31:20] Tôi.
Imm [31:
Gen 0]
BSel
Inst [31: 0] ImmSel RegWriteEnable ALUSel MemRW WBSel
Kiểm soát logic
6/7/2021 43
RISC-V (44)
Thêm sw đến Datapath
+4
Thêm vào
Dữ
liệuD 1
alu
PC bổ sung Inst [11: 7] Reg [rs1] 0
pc + 4 AddrD Dữ
inst
Inst [19:15] Dữ liệu AddrA liệu
mem
Reg [rs2] ALU
clk Inst [24:20] 0 bổ sung
AddrB
IMEM Dữ
liệuB 1 DMEM
Dữ liệuW
Reg []
clk
Inst clk
[31:20] Tôi.
Imm [31:
RISC-V (44)
Gen 0]
+4
Thêm vào
Dữ
liệuD
Inst [11: 7]
PC bổ sung AddrD Reg [rs1]
Inst [19:15]
pc + 4 inst AddrA Dữ liệu
Inst [24:20] Reg
AddrB [rs2]
clk Dữ liệuB 0
IMEM Reg [] 1
clk
Inst
[31:20] Tôi.
Gen Imm [31: 0]
Inst [31: 0]
ImmSel RegWEn = 0 BSel =
1
=S
Kiểm soát logic
ALUSel MemRW WBSel
= Thêm = Viết =*
45
1
alu
Dữ liệuB 0
m
m
e
ALU
bổ sung
DMEM
Dữ liệuW
RISC-V (46)
I + S Im InstantGeneration
31 30 25 24 2019 15 14 12 11 7 6 0 T
Ô
im [11: 0] rs1 func3 rd I-opcode I
im [11: im [4: S
5] rs2 rs1 func3 0] Mã S
inst [31:
5 5 0]
1 6
Tô
i/
S LÀ T
inst inst Ô
inst [31] (ký mở rộng) [30:25] [24:20] I
inst inst [11:
inst [31] (ký mở rộng) [30:25] 7] S
31 1110 5 4 0
im [31: 0]
• Chỉ cần một mux 5 bit để chọn giữa hai vị trí trong đó năm bit
thấp ngay lập tức có thể nằm trong hướng dẫn
• Các bit khác ngay lập tức được nối với các vị trí cố định trong hướng
dẫn
6/7/2021 46
RISC-V (47)
AllRV32StoreInstructions
• Cửa hàng byte ghi byte thấp vào bộ nhớ
• Cửa hàng nửa chữ viết hai byte dưới vào bộ
nhớ
chiều rộng
6/7/2021 47
RISC-V (48)
6/7/2021 48
RISC-VB-FormatforBranches
31 30 25 24 20191514 1211 số 8 7 6 0
im [12] im [10: 5] rs2 rs1 funct3 im [4: 1] im [11]
opcode
1 6 5 5 3 4 1 7
CHI
bù [12 | 11: 5] rs1 func3 NHÁNH
rs2 bù [4: 1 | 11]
▪
Định dạng B hầu hết giống với Định dạng S, với hai nguồn đăng ký
(rs1/rs2) và ngay lập tức 12 bit im [12: 1]
▪
Nhưng bây giờ ngay lập tức đại diện cho các giá trị -4096 đến +4094 theo
gia số 2 byte
▪
Mã hóa 12 bit ngay lập tức thậm chí 13-bit ký byte bù đắp (bit bù thấp nhất
luôn bằng không, vì vậy không cần lưu trữ)
6/7/2021
DatapathSo xa
+4
Thêm vào
Dữ
liệuD 1
alu
PC bổ sung Inst [11: 7] Reg [rs1] 0
pc + 4 AddrD Dữ
inst
Inst [19:15] Dữ liệu AddrA liệu
mem
Reg [rs2] ALU
clk Inst [24:20] 0 bổ sung
AddrB
IMEM Dữ
liệuB 1 DMEM
Dữ liệuW
Reg []
clk
Inst clk
[31:20] Tôi.
Imm [31:
Gen 0]
BSel
Inst [31: 0] ImmSel RegWriteEnable ALUSel MemRW WBSel
Kiểm soát logic
6/7/2021 RISC-V (50)
ToAddBranches
▪
Thay đổi khác nhau đối với nhà nước :
PC = PC + 4, chi nhánh không lấy PC +
ngay lập tức, chi nhánh lấy
▪
Sáu hướng dẫn chi nhánh : beq, bne, blt, bge,
bltu, bgeu
▪
Cần tính toán PC + ngay lập tức và để so
sánh các giá trị của rs1 và rs2
Nhưng chỉ có một ALU - cần thêm phần cứng
6/7/2021
Thêm chi nhánh
+4
Thêm vào
pc + 4 Dữ R [rs1]
liệuD
0 alu 1
PC
Inst [11: 7] 1
bổ sung AddrD 0
1 m Inst [19:15] Dữ liệuB
Dữ 0 ALU
áy Chi mem
inst AddrA liệu bổ
tí Inst [24:20] nhánh sung
n AddrB Dữ Comp 0
h liệuB 1 DMEM
IMEM
clk Reg []
clk
Inst clk
Tôi. R [rs2]
[31:20]
Gen Imm [31: 0]
PCSel = Inst [31: 0] ImmSel RegWEn BrUn BrLT Blel Asel ALUSel MemRW WBSel
lấy / không lấy =B =0 BrEq = 1 = 1 = thêm = đọc =*
Kiểm soát logic
RISC-V (52)
6/7/2021
Chi nhánh
• BrEq = 1, nếu A = B
A
Chi nhánh
B Comp • BrLT = 1, nếu A <B
Chỉ có một bit thay đổi vị trí giữa S và B, vì vậy chỉ cần một
mux 2 chiều một bit
Các kiến trúc sư RISC-V muốn hỗ trợ khả năng các hướng dẫn chỉ dài 2 byte, vì vậy các hướng dẫn chi
nhánh đại diện cho số lượng nửa chữ giữa chi nhánh và mục tiêu chi nhánh
6/7/2021
RISC-VIm InstantEncoding
Hướng dẫn mã hóa, inst [31: 0]
31 30 25 24 2019 1514 1211 8 76 0
im [11: Tôi gõ
0] rs1 func3 rd opcode
Loại S
im [11: 5] rs2 rs1 func3 im [4: 0] opcode
im [12 | 10: im [4: 1 |
Loại B
5] rs2 rs1 func3 11] opcode
32-bit ngay lập tức được sản xuất, im [31: 0] Các bit trê
31 25 24 12 11 10 5 4 1 0
-inst [31] inst inst luôn
- [30:25] [24:21] inst [20]
S-imm.
B-imm.
6/7/2021 56
Chiếu sáng UpBranchPath
+4
Thêm vào
pc + 4 Dữ R [rs1]
liệuD
0 alu 1
PC
Inst [11: 7] 1
bổ sung AddrD 0
1 m Inst [19:15] Dữ liệuB
Dữ 0 ALU
áy Chi mem
inst AddrA liệu bổ sung
tí Inst [24:20] nhánh 0
n AddrB Dữ Comp
h 1 DMEM
liệuB
IMEM clk
clk Reg []
clk
Inst
R [rs2]
[31:20] Tôi.
Gen Imm [31: 0]
PCSel = Inst [31: 0] ImmSel RegWEn BrUn BrLT Bessel Asel ALUSel MemRW WBSel
lấy / không lấy =B =0 BrEq = 1 = 1 = thêm = đọc =*
Kiểm soát logic
6/7/2021 57
RISC-V (58)
6/7/2021 58
Hãy để thêm vào JALR(Định dạng I)
31 20 19 15 14 12 11 7 6 0
im [11: 0] rs1 func3 rd opcode
12 5 3 5 7
căn định
bù [11: 0] cứ 0 mệnh JALR
▪
JALR rd, rs, ngay lập tức
▪
Hai thay đổi đối với nhà nước
Viết PC + 4 đến rd (địa chỉ trả lại)
Đặt PC = rs1 + ngay lập tức
Sử dụng tương tự như số học và tải Không
nhân với 2 byte
LSB bị bỏ qua
6/7/2021 59
RISC-V (60)
DatapathSo Far, WithBranches
+4
Thêm vào
pc + 4 Dữ R [rs1]
liệuD
0 alu 1
PC
Inst [11: 7] 1
bổ sung AddrD 0
1 m Inst [19:15] Dữ liệuB
inst AddrA Dữ liệu 0 ALU
áy Chi mem
bổ sung
tí Inst [24:20] nhánh 0
n AddrB Comp
Dữ liệuB 1
h DMEM
IMEM
Reg []
clk
clk clk
Inst
R
[31:20] Tôi. [rs2]
Gen Imm [31: 0]
PCSel Inst [31: 0] ImmSel RegWEn BrUn BrLT Bessel Asel ALUSel MemRW WBSel
BrEq
Kiểm soát logic
6/7/2021 60
RISC-V (61)
DatapathWithJALR
+4
Thêm vào
pc + 4 Dữ R [rs1] 2
liệuD
0 alu 1
PC
Inst [11: 7] 1
bổ sung AddrD 0
1 m Inst [19:15] Dữ
Dữ liệuB
áy Chi 0
inst AddrA liệu ALU mem
tí Inst [24:20] nhánh bổ sung
n AddrB Dữ Comp 0
h liệuB 1 DMEM
IMEM
clk Reg []
clk
clk
Inst
[31:20] Tôi. R [rs2]
Imm [31:
Gen 0]
PCSel Inst [31: 0] ImmSel RegWEn BrUn BrLT Bassel Asel ALUSel MemRW WBSel
= lấy = 1 = 0 = Thêm
= TÔI =1 =* BrEq=* =Đọc =2
Kiểm soát logic =*
6/7/2021 61
RISC-V (62)
DatapathWithJALR
+4
Thêm vào
pc + 4 Dữ R [rs1] 2
liệuD
0 alu 1
PC
Inst [11: 7] 1
bổ sung AddrD 0
1 m Inst [19:15] Dữ
áy inst AddrA Dữ liệu liệuB
Chi 0
tí nhánh ALU bổ sung
mem
Inst [24:20]
n AddrB Dữ Comp 0
h liệuB 1 DMEM
IMEM
clk Reg []
clk
clk
Inst
[31:20] Tôi. R [rs2]
Imm [31:
Gen 0]
Bessel Asel
BrLT
PCSel Inst [31: 0] ImmSel RegWEn BrUn ALUSel MemRW WBSel
= lấy = TÔI =1 =* BrEq
=* = 1 = 0 = Thêm =Đọc =2
Kiểm soát logic =*
6/7/2021 62
RISC-V (63)
6/7/2021 63
J-FormatforJumpInstructions
31 30 21 20 19 12 11 7 6 0
im [20] im [10: 1] im [11] im [19:12] rd opcode
số
1 10 1 8 5 7
định
bù [20: 1] mệnh JAL
▪
Hai thay đổi đối với nhà nước
jal lưu PC + 4 trong đăng ký rd (địa chỉ trả lại)
Đặt PC = PC + offset (nhảy tương đối PC)
▪
Mục tiêu ở đâu đó bên trong ±219 vị trí, cách nhau 2 byte
±218 Hướng dẫn 32 bit
▪
Mã hóa ngay lập tức được tối ưu hóa tương tự như hướng dẫn chi
nhánh để giảm chi phí phần cứng
6/7/2021 64
RISC-V (65)
DatapathwithJAL
+4
Thêm vào
pc + 4 Dữ R [rs1] 2
liệuD
0 alu 1
PC
Inst [11: 7] 1
bổ sung AddrD 0
1 m Inst [19:15] Dữ
Dữ liệuB
áy Chi 0
inst AddrA liệu ALU mem
tí Inst [24:20] nhánh bổ sung
n AddrB Dữ Comp 0
h liệuB 1 DMEM
IMEM
clk Reg []
clk
clk
Inst
[31:20] Tôi. R [rs2]
Gen Imm [31: 0]
Bessel Asel
BrLT
PCSel Inst [31: 0] ImmSel RegWEn BrUn ALUSel MemRW WBSel
= lấy =J =1 =* BrEq
=* = 1 = 0 = Thêm =Đọc =2
Kiểm soát logic =*
6/7/2021 65
RISC-V (66)
Ánh sángJAL Con đường
+4
Thêm vào
pc + 4 Dữ R [rs1] 2
liệuD
0 alu 1
PC
Inst [11: 7] 1
bổ sung AddrD 0
1 m Inst [19:15] Dữ
Dữ liệuB
áy Chi 0
inst AddrA liệu ALU mem
tí Inst [24:20] nhánh bổ sung
n AddrB Dữ Comp 0
h liệuB 1 DMEM
IMEM
clk Reg []
clk
clk
Inst
[31:20] Tôi. R [rs2]
Gen Imm [31: 0]
Bessel Asel
BrLT
PCSel Inst [31: 0] ImmSel RegWEn BrUn ALUSel MemRW WBSel
= lấy =J =1 =* BrEq
=* = 1 = 1 = Thêm =Đọc =2
Kiểm soát logic =*
6/7/2021 66
RISC-V (67)
6/7/2021 67
U-Formatfor Hướng dẫn sử dụng UpperIm Instant
31 12 11 7 6 0
im [31:12] rd opcode
20 5 7
định
U-ngay lập tức [31:12] mệnh LUI
định
U-ngay lập tức [31:12] mệnh AUIPC
▪
Có 20 bit ngay lập tức trong 20 bit trên của từ lệnh
32 bit
▪
Một đăng ký đích , rd
▪
Được sử dụng cho hai hướng dẫn
lui - Tải trên ngay lập tức
auipc - Thêm ngay lập tức vào PC
6/7/2021 68
RISC-V (69)
DatapathWithLUI,AUIPC
+4
Thêm vào
pc + 4 Dữ R [rs1] 2
liệuD
0 alu 1
PC
Inst [11: 7] 1
bổ sung AddrD 0
1 m Inst [19:15] Dữ
Dữ liệuB
áy Chi 0
inst AddrA liệu ALU mem
tí Inst [24:20] nhánh bổ sung
n AddrB Dữ Comp 0
h liệuB 1 DMEM
IMEM
clk Reg []
clk
clk
Inst
[31:20] Tôi. R [rs2]
Gen Imm [31: 0]
PCSel Inst [31: 0] ImmSel RegWEn BrUn BrLT Bassel Asel ALUSel MemRW WBSel
= pc + 4 = 1 =*
=U =1 =* BrEq=* =Đọc =1
Kiểm soát logic =*
6/7/2021 69
RISC-V (70)
Thắp sáng lên LUI
+4
Thêm vào
pc + 4 Dữ R [rs1] 2
liệuD
0 alu 1
PC
Inst [11: 7] 1
bổ sung AddrD 0
1 m Inst [19:15] Dữ
Dữ liệuB
áy Chi 0
inst AddrA liệu ALU mem
tí Inst [24:20] nhánh bổ sung
n AddrB Dữ Comp 0
h liệuB 1 DMEM
IMEM
clk Reg []
clk
clk
Inst
[31:20] Tôi. R [rs2]
Gen Imm [31: 0]
Bessel Asel
BrLT
PCSel Inst [31: 0] ImmSel RegWEn BrUn ALUSel MemRW WBSel
= pc + 4 =U =1 =* BrEq
=* = 1 = * =B =Đọc =1
Kiểm soát logic =*
6/7/2021 70
RISC-V (71)
Thắp sáng lên AUIPC
+4
Thêm vào
pc + 4 Dữ R [rs1] 2
liệuD
0 alu 1
Inst [11: 7] 1
PC AddrD
bổ sung 0
1 m Inst [19:15] Dữ
Dữ liệuB
áy Chi 0
inst AddrA liệu ALU mem
tí Inst [24:20] nhánh bổ sung
n AddrB Dữ Comp 0
h liệuB 1 DMEM
IMEM
clk Reg []
clk
clk
Inst
[31:20] Tôi. R [rs2]
Gen Imm [31: 0]
PCSel Inst [31: 0] ImmSel RegWEn BrUn BrLT Bassel Asel ALUSel MemRW WBSel
= pc + 4 =U =1 =* BrEq=*
= 1 = * = thêm =Đọc =1
Kiểm soát logic =*
6/7/2021 71
RISC-V (72)
6/7/2021 72
CompleteRV32IDatapath!
+4
Thêm vào
pc + 4 Dữ R [rs1] 2
liệuD
0 alu 1
PC
Inst [11: 7] 1
bổ sung AddrD 0
1 m Inst [19:15] Dữ
Dữ liệuB
áy Chi 0
inst AddrA liệu ALU mem
tí Inst [24:20] nhánh bổ sung
n AddrB Dữ Comp 0
h liệuB 1 DMEM
IMEM
clk Reg []
clk
clk
Inst
[31:20] Tôi. R [rs2]
Gen Imm [31: 0]
Bessel Asel
PCSel Inst [31: 0] ImmSel RegWEn BrUn BrLT ALUSel MemRW WBSel
BrEq
Kiểm soát logic
6/7/2021 73
RISC-V (74)
Hoàn thànhRV32IISA!
Mở Thẻ tham khảo
Hướng dẫn số nguyên cơ sở: RV32I
Thể loạiTên Fmt Cơ sở RV32I Thể loại Tên Fmt Cơ sở RV32I
Ca làm việc Chuyển trái
logic R SLL rd, rs1, rs2 Tải Tải Byte TÔI LB rd, rs1, imm
Chuyển sang trái Nhật ký.
Tôi. TÔI SLLI rd, rs1, shamt Tải nửa chữ TÔI LH rd, rs1, imm
Thay đổi logic
phải R SRL rd, rs1, rs2 Tải Byte chưa ký TÔI LBU rd, rs1, imm
Shift Right Log. Tôi. TÔI SRLI rd, rs1, shamt Tải một nửa chưa ký TÔI LUH rd, rs1, imm
Chuyển số học phải R SRA rd, rs1, rs2 Tải từ TÔI LW rd, rs1, imm
Chuyển sang phải Arith. Cửa Cửa hàng
Tôi. TÔI SRAI rd, rs1, shamt hàng Byte S SB rs1, rs2, imm
Số học THÊM R THÊM, rs1, rs2 Lưu trữ Halfword S SH rs1, rs2, imm
THÊM ngay lập Lưu trữ
tức TÔI ADDI rd, rs1, imm Word S SW rs1, rs2, imm
ĐĂNG KÝ R SUB rd, rs1, rs2 Chi nhánh Chi nhánh = B BEQ rs1, rs2, imm
Tải Thượng Imm Bạn LUI rd, imm Chi nhánh ≠ B BNE rs1, rs2, imm
Thêm Upper Imm vào PC Bạn AUIPC rd, imm Chi nhánh < B BLT rs1, rs2, imm
Hợp lý XOR R XOR rd, rs1, rs2 Chi nhánh ≥ B BGE rs1, rs2, imm
XOR ngay lập tức TÔI XORI rd, rs1, imm Chi nhánh <Chưa ký B BLTU rs1, rs2, imm
HOẶC LÀ R HOẶC rd, rs1, rs2 Chi nhánh ≥ Chưa ký B BGEU rs1, rs2, imm
HOẶC Ngay lập Nhảy và liên
tức TÔI ORI rd, rs1, imm kết J&L J JAL rd, imm
Nhảy & Liên kết Đăng
VÀ R VÀ rd, rs1, rs2 ký TÔI JALR rd, rs1, imm
VÀ ngay lập tức TÔI ANDI rd, rs1, imm
Đồng
6/7/2021 74
RISC-V (75)
Ôn tập
▪
Chúng tôi đã thiết kế một datapath hoàn chỉnh
Có khả năng thực hiện tất cả các hướng dẫn RISC-V trong mỗi chu kỳ
Không phải tất cả các đơn vị (phần cứng) được sử dụng bởi tất cả các hướng dẫn
▪
5 giai đoạn thực hiện
NẾU, ID, EX, MEM, WB
Không phải tất cả các hướng dẫn đều hoạt động trong tất cả các giai đoạn
▪
Bộ điều khiển chỉ định cách thực hiện các hướng dẫn
Chúng tôi vẫn cần thiết kế nó
6/7/2021 75
RISC-V (76)
6/7/2021 83
Bộ xử lý lõi đơn của chúng tôi
Bộ xử lý Ký ức
Cho phép? Đầu vào
Điều khiển Đọc / Viết
Chương trình
Địa chỉ
Datapath
Bộ đếm chương trình (PC)
Byte
Đăng ký
Viết dữ liệu
Dữ liệu
Đọc dữ liệu
Số học-Logic Đầu ra
Đơn vị (ALU)
6/7/2021 84
RV32IDatapath và điều khiển một chu kỳ
+4
Thêm vào
Dữ R [rs1] 2
pc + 4 liệuD
Bessel Asel
PCSel Inst [31: 0] ImmSel RegWEn BrUn BrLT ALUSel MemRW WBSel
BrEq
Kiểm soát logic
6/7/2021 85
Thí dụ: sw
+4
Thêm vào
R [rs1] 2
pc + 4 Dữ liệuD
+4
Thêm vào
pc + 4
R [rs1] 2
Dữ liệuD
Inst [11: 7] alu 1
0 AddrD
PC bổ sung 1
1 Inst [19:15] 0
m inst AddrA Dữ liệu Dữ
Chi liệuB
áy 0
tí Inst [24:20] nhánh ALU mem
AddrB Dữ Comp bổ sung
n
liệuB 0
h
IMEM 1 DMEM
Reg []
clk
clk clk
Inst
[31:20] Tôi. R [rs2]
Gen
Imm [31: 0]
Inst [31:
PCSel 0] ImmSel RegWEn BrUn BrLT Bessel Asel ALUSel MemRW WBSel
=B = =* BrEq =* = 1 = 1 = thêm =Đọc =*
Kiểm soát logic 0
6/7/2021 87
6/7/2021 88
Thí dụ: thêm
+4
Thêm vào
pc + 4
Dữ R [rs1] 2
liệuD
alu 1
0 Inst [11: 7]
PC AddrD 1
bổ sung 0
1 m Inst [19:15] Dữ liệuB
áy inst AddrA Dữ liệu Chi 0 ALU mem
tí Inst [24:20] nhánh bổ sung
n AddrB Dữ Comp 0
h liệuB
1 DMEM
IMEM
clk
Reg []
clk
clk
Inst
[31:20] Tôi. R [rs2]
Imm [31:
Gen 0]
6/7/2021
Đồng hồ
PC
PC + 4
inst [31: 0]
Kiểm soát logic
Reg [rs1]
Reg [rs2]
alu
wb
Reg [1]
PCSel Inst [31: 0] RegWEn
BrUn BrLT
ImmSel
Bessel Asel
ALUSel MemRW WBSel
BrEq
Kiểm soát logic
1000 1004
1004 1008
90
Thí dụ: thêm thời gian
+4
Thêm vào
pc + 4
Dữ R [rs1] 2
liệuD
0 Inst [11: 7] alu 1
PC AddrD 1 0
1
bổ sung Inst [19:15]
m Dữ liệuB
Dữ 0
áy
liệu Chi ALU mem
inst AddrA bổ sung
tí Inst [24:20] nhánh
n Dữ 0
AddrB Comp
h liệuB 1 DMEM
IMEM
clk Reg [] clk
clk
Inst
[31:20] Tôi. R [rs2]
Gen Imm [31: 0]
Đường dẫn quan trọng = tclk-q + tối đa {tThêm vào+ tmux, tIMEM+ tReg+ tmux+ tALU+ tmux} + tthiết
lập
= tclk-q + tIMEM+ tReg+ tmux+ tALU+ tmux+ tthiết lập
6/7/2021
91
Thí dụ: lw
+4
Thêm vào
pc + 4
Dữ R [rs1] 2
liệuD
0 Inst [11: 7] alu 1
PC AddrD 1 0
1
bổ sung Inst [19:15]
m Dữ liệuB
áy Dữ 0 ALU mem
inst AddrA liệu Chi
tí nhánh bổ sung
Inst [24:20]
n Dữ 0
AddrB Comp
h liệuB 1 DMEM
IMEM
clk Reg []
clk
clk
Inst
[31:20] Tôi. R [rs2]
Gen Imm [31: 0]
Inst [31:
PCSel 0] ImmSel RegWEn BrUn BrLT Blel Asel ALUSel MemRW WBSel
=* = 1 = 0 = thêm
= pc + 4 = TÔI =1 =* BrEq =Đọc =0
Kiểm soát logic =*
Đường dẫn quan trọng = tclk-q + tối đa {tThêm vào+ tmux, tIMEM+ tTôi+ tmux+ tALU+ tDMEM+ tmux,
tIMEM+ tReg+ tmux+ tALU+ tDMEM+ tmux} + tthiết lập
6/7/2021 92
Thời gian hướng dẫn
Tổng
I-MEM Reg Đọc ALU D-MEM Reg W cộng
200 ps 100 ps 200 ps 200 ps 100 ps 800 ps
NẾU TÔI EX MEM WB
đồng hồ
cũ m
áy
tí pc +
PC nh 4
Instr. lấy cũ chỉ dẫn
Instr. giải mã cũ đăng ký
Thực hiện cũ ALUresult
Truy cập bộ nhớ cũ
bộ nhớ
t t
TÔI
tEX t MEM
t WB
NẾU
6/7/2021 93
Thời gian hướng dẫn
Instr IF = 200ps ID = 100ps ALU = 200ps MEM = 200ps WB = 100ps Tổng cộng
thêm X X X X 600ps
beq X X X 500ps
jal X X X X 600ps
lw X X X X X 800ps
sw X X X X 700ps
6/7/2021 94
6/7/2021 95
Kiểm soát bảng sự thật logic
Inst [31: 0] BrEq BrLT PCSel ImmSel BrUn ASel BSel ALUSel MemRW RegWEn WBSel
Thê
m
thêm * * +4 * * Reg Reg vào Đọc 1 ALU
phụ * * +4 * * Reg Reg Tiểu Đọc 1 ALU
Thê
TÔ m
addi * * +4 I * Reg Tôi vào Đọc 1 ALU
Thê
TÔ m
lw * * +4 I * Reg Tôi vào Đọc 1 Mem
Thê
m
sw * * +4 S * Reg Tôi vào Viết 0 *
Thê
m
beq 0 * +4 B * PC Tôi vào Đọc 0 *
Thê
m
beq 1 * ALU B * PC Tôi vào Đọc 0 *
Thê
m
bne 0 * ALU B * PC Tôi vào Đọc 0 *
Thê
m
bne 1 * +4 B * PC Tôi vào Đọc 0 *
Thê
m
blt * 1 ALU B 0 PC Tôi vào Đọc 0 *
Thê
m
bltu * 1 ALU B 1 PC Tôi vào Đọc 0 *
Thê
TÔ m
jalr * * ALU I * Reg Tôi vào Đọc 1 PC + 4
Thê
m
jal * * ALU J * PC Tôi vào Đọc 1 PC + 4
Thê
Bạ m
auipc * * +4 n * PC Tôi vào Đọc 1 ALU
6/7/2021 96
Kiểm soát thực hiện tùy chọn
▪
ROM
Bộ nhớ đọc chỉ có bộ nhớ
Cấu trúc thông thường
Có thể dễ dàng lập trình lại
sửa chữa
thêm hướng dẫn
Phổ biến khi thiết kế logic điều khiển bằng tay
▪
Logic kết hợp
Ngày nay, các nhà thiết kế chip sử dụng các công cụ tổng hợp logic
để hội tụ các bảng tonetworks của cổng
6/7/2021 97
RV32I, một ISA chín bit!
▪ Loại hướng dẫn được mã
hóa chỉ bằng 9 bit :
▪
inst [30],
inst
[14:12],
inst [6: 2]
inst [6: 2]
inst [14:12]
inst [30]
6/7/2021 98
Kiểm soát dựa trên ROM
11-bitaddress (đầu vào)
Inst [30,14: 12,6: 2]
BrEq BrLT
PCSel
9 ImmSel [2: 0]
BrUn
3
ASel
ROM
BSel
4 ALUSel [3:
0] MemRW
RegWEn
WBSel [1:
0]
2
Bộ giải mã
hoặc là
[] Kiểm soát Word cho hoặc là
BrEQ .
BrLT . .
. .
.
11
Địa chỉ
jal
Đầu ra bộ điều khiển (PCSel,
ImmSel , ... )
6/7/2021 100
Đơn vị điều khiển sử dụng bộ đếm rõ ràng để tính trạng thái tiếp theo
6/7/2021 101
6/7/2021 102
Kiểm soát logic kết hợp
▪ Ví dụ đơn giản nhất : BrUn
inst [14:12] inst [6: 2]
6/7/2021 103
Kiểm soát logic để giải mã thêm
thêm = i [30] • i [14] • i [13] • i [12] •
Loại R
inst [30] inst [14:12] inst [6: 2]
2
4
(sơ đồ sơ đồ mạch) A
B
inst [31: 7] Tôi.
im [31: 0]
Gen
Ra = AB + CD
6/7/2021 106
Và kết luận ..
▪
Bộ xử lý Wehave buecta!
Có khả năng thực hiện tất cả các hướng dẫn RISC trong mỗi chu kỳ
Đơn vị Notall (phần cứng) được sử dụng bởi tất cả các hướng dẫn
Đường dẫn quan trọng thay đổi
▪
5 giai đoạn thực hiện
NẾU, ID, EX, MEM, WB
Hướng dẫn Notall không hoạt động trong tất cả các giai đoạn
▪
Bộ điều khiển chỉ định cách thực hiện các hướng dẫn
Được thực hiện dưới dạng ROM orlogic
6/7/2021 107