You are on page 1of 162

Kiến trúc máy tính 1

Tổ chức và thiết kế máy tính


GIAO DỊCH PHẦN MỀM / PHẦN MỀM

[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

Triển khai kiến trúc tion Gen


inst [31: 7] Tôi. im [31: 0]
Mô tả mạch logic (sơ đồ sơ đồ mạch) A
B
Ra = AB + CD
C
6/7/2021 D
3
Bộ xử lý lõi đơn của chúng tôi cho đến nay ...
Bộ xử lý Ký ức
Cho phép? Đầu
Điều khiển Đọc / Viết vào

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

• Bộ xử lý (CPU) : phần hoạt động của máy tính làm tất cả


công việc (thao túng dữ liệu và ra quyết định)
• Datapath : một phần của bộ xử lý có chứa phần cứng cần
thiết để thực hiện các hoạt động theo yêu cầu của bộ xử lý
(cầm đồ)
• Điều khiển: một phần của bộ xử lý (cũng trong phần cứng)
cho biết datapath những gì cần phải được thực hiện (bộ não)

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)

• Giai đoạn 3 : Thực hiện (EX) - ALU (Đơn vị số học-Logic)

• Giai đoạn 4 : Truy cập bộ nhớ (MEM)

• Giai đoạn 5 : Viết lại để đăng ký (WB)

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

1. Hướng dẫn 2. Giải mã / 3. Thực 5. Đăng ký


hiện 4. Ký ức
Lấy Đăng ký Viết
Truy
Đọc cập
Đồng hồ
thời gian
6/7/2021 11
Thành phần Datapath: Kết hợp

Các yếu tố kết hợp
Thực hiện Chọn OP
A A
32 A 32
der

32 32
Ad

Tổng Kết quả

MU
Y 32

X
B Thực hiện B 32
B
32 32 32

Adder Bộ ghép kênh ALU

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ỉ

người Viking Dữ liệu trong Dữ liệu



Một bus đầu vào: Dữ liệu trong 32 32
 Clk
Một bus đầu ra: Dữ liệu ra

Từ bộ nhớ được tìm thấy bởi :

Để đọc: Địa chỉ chọn từ để đưa vào Dữ liệu

Để ghi: Đặt ghi Kích hoạt = 1: địa chỉ chọn từ bộ nhớ được ghi qua Dữ liệu trong
xe buýt

Đầ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 khối logic tổ hợp: Địa chỉ hợp lệ Dữ
liệu hết hiệu lực sau Cúcthời gian truy cậpGiáo dục
6/7/2021 15
Yêu cầu trạng thái theo RV32I ISA (1/2)
Mỗi lệnh trong khi thực hiện đọc và cập nhật trạng thái :
(1) Đăng ký, (2) Bộ đếm chương trình, (3) Bộ nhớ

Đăng ký (x0..x31)

Đăng ký tập tin (regfile) Reg giữ 32 thanh ghi x 32 bit / đăng ký :
Reg [0]..Reg [31]

Đăng ký đầu tiên đọc được chỉ định bởi rs1 lĩnh vực trong hướng dẫn

Đăng ký thứ hai đọc được chỉ định bởi rs2 lĩnh vực trong hướng dẫn

Viết đăng ký (điểm đến) được chỉ định bởi rd lĩnh vực trong hướng dẫn

x0 luôn là 0 (viết thư cho Reg [0]bị bỏ qua)

Bộ đếm chương trình (PC)

Giữ địa chỉ của hướng dẫn hiện tại

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

thêm rd, rs1, rs2



Hướng dẫn thực hiện hai thay đổi đối với trạng thái máy :

Reg [rd] = Reg [rs1] + Reg [rs2]

PC = PC + 4

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

Kiểm soát logic 1514 1211


0
31 25 24 20 19 76
func7 rs2 rs1 func3 rd opcode
7 5 5 3 5 7
6/7/2021 21
Sơ đồ thời gian để thêm +4
Thêm vào

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

inst [31: 0] thêm x1, x2, x3 thêm x6, x7, x9

Reg [rs1] Reg [2] Reg [7]


Reg [rs2] Reg [3] Reg [9]
alu Reg [2] + Reg [3] Reg [7] + Reg [9]

Reg [1] ??? Reg [2] + Reg [3]

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ụ

tiểu rd, rs1, rs2



Gần giống như thêm, ngoại trừ bây giờ phải trừ
các toán hạng thay vì thêm chúng

inst [30] chọn giữa thêm và trừ
6/7/2021 24
Datapath cho thêm / phụ
PC = PC + 4
Reg [rd] = Reg [rs1] +/- Reg [rs2]
+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 Reg [rs2] ALU
clk Inst [24:20]
AddrB Dữ
IMEM
liệuB

Reg []
clk
Inst [31: 0]

RegWriteEnable (RegWEn) = 1 ALUSel


(thêm = 0 / phụ =
1)
Kiểm soát logic 1514 1211
0
31 25 24 20 19 76
0100000 rs2 rs1 000 rd 0110011
7 5 5 3 5 7
6/7/2021 25
Thực hiện các hướng dẫn định dạng R khác
0000000 rs2 rs1 000 rd 0110011 thê
0100000 rs2 rs1 000 rd 0110011 m
0000000 rs2 rs1 001 rd 0110011 sll
0000000 rs2 rs1 010 rd 0110011 slt
0000000 rs2 rs1 011 rd 0110011 sltu
0000000 rs2 rs1 100 rd 0110011 xor
0000000 rs2 rs1 101 rd 0110011 srl
0100000 rs2 rs1 101 rd 0110011 sra
0000000 rs2 rs1 110 rd 0110011 hoặc
0000000 rs2 rs1 111 rd 0110011 và

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

111111001110 00001 000 01111 0010011


im = -50 rs1 = 1 thêm rd = 15 OP-Imm

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 []

Inst [31: 0] clk

RegWriteEnable (RegWEn) ALUSel


(thêm = 0 /
=1 phụ = 1)
Kiểm soát logic
Ngay lập tức nên
ở đây
6/7/2021 29
Thêm addi toDatapath
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
inst alu
Inst [19:15] AddrADataA Reg [rs2]
ALU
clk Inst [24:20] 0
AddrB Dữ
IMEM 1
liệuB

Reg []

Inst [31: 0] clkImm [31: 0]


Reg WriteEnable BSel ALUSel
(rs2 = 0
(thêm = 0 / phụ
/
(RegWEn) = 1 = 1)
Imm =
Kiểm soát logic 1)

31 20 19 1514 1211 760


im [11: 0] rs1 000 rd 0010011
12 5 3 5 7
6/7/2021 30
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

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]

--inst [31] - (dấu hiệu mở rộng) - inst


[30:20]
im [31: 0]
• 12 bit lệnh cao (inst [31:20]) được sao
inst [31:20] Tôi. im [31: 0]chép xuống mức thấp 12 bit ngay lập
Gen tức (imm [11: 0])
• Ngay lập tức được mở rộng bằng cách
ImmSel = I sao chép giá trị của inst [31] để điền
vào 20 bit trên của giá trị tức thời (imm
[31:12])
6/7/2021 33
Thêm addi toDatapath
Hoạt động cho tất cả các hướng dẫn
số học định dạng I khác (slti,
+4 sltiu, andi ,
Thêm vào ori, xori, slli, srli ,
srai) chỉ bằng cách thay đổi
ALUSel
PC bổ sung
pc + 4 inst Dữ liệuD
Inst [11: 7]
AddrD Reg [rs1]
clk Inst [19:15]
IMEM AddrA Dữ liệu
alu
Inst [24:20] Reg [rs2]
AddrB ALU
Inst Dữ liệuB 0
[31:20]
Reg [] 1
clk
Inst [31: 0]
Tôi.
Gen Imm [31: 0]

ImmSel RegWriteEnable BSel ALUSel


= TÔI (RegWEn) = 1 (rs2 = 0 /
Kiểm soát logic Imm = 1)
6/7/2021 34
6/7/2021 35
R + IArithetic / LogicDatapath

+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]

ImmSel RegWriteEnable BSel ALUSel

Kiểm soát logic

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

• trường func3 mã hóa kích thước và


Chữ ký của dữ liệu tải

Hỗ trợ tải hẹp hơn yêu cầu logic bổ sung để trích xuất byte / nửa từ chính xác từ giá trị được tải từ bộ nhớ
và ký hoặc không mở rộng kết quả lên 32 bit trước khi ghi lại vào tệp đăng ký.

Nó chỉ là một mux + một vài cổng

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]

Inst [31: 0] ImmSel RegWriteEnable Blel ALUSel MemRW WBSel


=S =0 =1 = Thêm = Viết =*
(không
Kiểm soát logic quan tâm)
6/7/2021
Thêm sw đến Datapath
6/7/2021

+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

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ớ

Imm [11: im [4: sb


5] rs2 rs1 000 0] 0100011
sh
Imm [11: im [4:
5] rs2 rs1 001 0] 0100011 sw
Imm [11: im [4:
5] rs2 rs1 010 0] 0100011

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

• BrUn = 1 chọn không dấu


so sánh cho BrLT, 0 = đã

BrU BrLT
BrEq
BGE nhánh: A> = B, nếu A <B

A <B = !(A <B)


6/7/2021
RISC-V (53)
BranchImmediates (InOtherISAs)
• Mã hóa ngay lập tức 12 bit bù tương đối PC từ -4096 đến +4094 byte
theo bội số của 2 byte
• Cách tiếp cận tiêu chuẩn: Điều trị ngay lập tức như trong phạm vi -
2048..+2047, sau đó dịch sang trái 1 bit để nhân với 2 cho các nhánh

s im [10: 5] rs2 rs func3 im [4: Mã B


1 0]

im [10: im [4: S-Ngay lập tức


gia hạn ký kết S 5] 0]
B-Ngay lập tức
gia hạn ký kết S im [10: 5] im [4: 0] 0 (shift còn lại
bởi 1)
Mỗi bit ngay lập tức có thể xuất hiện ở một trong hai vị trí có
giá trị đầu ra ngay lập tức - vì vậy cần một mux 2 chiều mỗi bit
6/7/2021
BranchImmediates (InRISC -V ISA)
• Mã hóa ngay lập tức 12 bit bù tương đối PC từ -4096 đến
+4094 byte theo bội số của 2 byte
LƯU Ý: Trang. 116 (Sách giáo khoa RISC V -> nhận thêm thông tin)
• Cách tiếp cận RISC-V: giữ 11 bit ngay lập tức ở vị trí cố định
trong giá trị đầu ravà xoay LSB của định dạng S thành bit
12 của định dạng B
S-Ngay lập tức
ký = imm [11] im [10: 5] im [4: 0]
B-Ngay lập
ký = imm [12] im [11] im [10: 5] im [4: 1] 0 tức (shift còn
lại bởi 1)

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]

-inst [31] inst inst [11:


- [30:25] 8] inst [7]

-inst [31] - inst inst inst [11: 0


Tôi-imm.

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

So sánh Đặt < R SLT rd, rs1, rs2


bộ
hóa
Đồng bộ hóa
chủ đề TÔI FENT
Không
Đặt <Ngay lập tức TÔI SLTI rd, rs1, imm ở
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 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

0 Inst [11: 7] alu 1


PC bổ sung Inst [19:15] AddrD 1 0
Dữ
1 liệuB
máy tính inst AddrA Dữ liệu Chi 0
Inst [24:20] nhánh ALU mem
bổ sung
AddrB Dữ Comp
liệuB
clk 0
IMEM
Reg [] 1 DMEM
clk
Inst clk
[31:20]
Tôi. R [rs2]
Imm [31:
Gen 0]

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

0 Inst [11: 7] alu 1


AddrD 1
PC bổ sung Inst [19:15] 0
1 Dữ
máy tính inst AddrA Dữ liệu
Chi liệuB
0
Inst [24:20] nhánh ALU mem
bổ sung
AddrB Dữ Comp
liệuB 0
clk
IMEM 1 DMEM
Reg []
clk clk
Inst
[31:20] Tôi. R [rs2]
Gen
Imm [31: 0]

Inst [31: Blel Asel


PCSel 0] ImmSel RegWEn BrUn BrLT =1 =
ALUSel MemRW WBSel
= pc + 4 =S = =* =* = thêm = Viết =*
BrEq=* 0

Kiểm soát logic 0


6/7/2021 86
Thí dụ: beq

+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]

Inst [31: Blel


PCSel 0] ImmSel RegWEn BrUn BrLT Asel ALUSel MemRW WBSel
=* BrEq =* = 0 = 0
= pc + 4 =* =1 = thêm =Đọc =1
Kiểm soát logic =*
6/7/2021 89
Thêm thực thi +4
Thêm vào
R
[rs1] 2
pc + 4 Dữ liệuD
1
0 Inst [11: 7] AddrD alu
PC bổ sung 1
0
m Dữ
1 áy Inst [19:15] liệuB

nh inst AddrA Dữ liệu 0
Inst [24:20] Chi nhánh ALU bổ sung
mem
AddrB Dữ liệuB Comp
clk 0
IMEM Reg [] 1 DMEM
clk
Inst clk
[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

thêm x1, x2, x3 thêm x6, x7, x9


thêm kiểm soát thêm kiểm soát
Reg [2] Reg [7]

Reg [3] Reg [9]


Reg [2] + Reg [3] Reg [7] + Reg [9]

Reg [2] + Reg [3] Reg [7] + Reg [9]


??? Reg [2] + Reg [3]

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]

Inst [31: Blel


PCSel 0] ImmSel RegWEn BrUn BrLT Asel ALUSel MemRW WBSel
=* BrEq =* = 0 = 0
= pc + 4 =* =1 = thêm =Đọc =1
Kiểm soát logic =*

Đườ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

▪ Tần số đồng hồ tối đa



ftối đa = 1/800ps = 1,25 GHz
▪ Hầu hết các khối nhàn rỗi hầu hết thời gian

Ví dụ . ftối đa, ALU = 1/200ps = 5 GHz!

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

(R-R Op) * * +4 * * Reg Reg (Op) Đọ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

15 bit dữ liệu (đầu ra)


6/7/2021 99
Thực hiện bộ điều khiển ROM
VÀ HOẶC LÀ
thêm
Kiểm soát Word cho thêm
phụ
Inst Kiểm soát Word cho phụ

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]

• Làm thế nào để giải mã cho dùBrUn là 1?


BrUn = Inst [13] • Chi nhánh

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]

R-type = i [6] • i [5] • i [4] • i [3]


• i [2] • RV32I RV32I = i [1] • i [0]
6/7/2021 104
6/7/2021 105
Gọi về nhà, chúng tôi đã liên lạc với CTNH / SW!
temp = v [k];
Ngôn ngữ cấp cao v [k] = v [k + 1];
Chương trình (ví dụ:., C) v [k + 1] = temp;
Trình biên lw x3, 0 (x10)
dịch lw
sw
x4, 4 (x10)
x4, 0 (x10)
Ngôn ngữ hội sw x3, 4 (x10)
Chương trình (ví dụ:., 1000 1101 1110 0010 0000 0000 0000 0000
1000 1110 0001 0000 0000 0000 0000 0100
RISC-V) 1010 1110 0001 0010 0000 0000 0000 0000
Lắp ráp 1010 1101 1110 0010 0000 0000 0000 0100
Ngôn ngữ máy móc
Chương trình (RISC-V)

Mô tả kiến trúc phần cứng


(ví dụ:., sơ đồ khối) alu 1

+4 Reg []
wb Dữ liệuD
máy
tính
1
alu
pc +

2
4

inst [11: Reg [rs1]

y IMEM 7] 0 ALU DMEM 1


AddrD wb

Chi Reg [rs2]


tí inst [19:15] AddrA Dữ
nhánh AddrDữ liệu 0
liệu 0
nh Comp. Dữ liệuW mem
pc + 4 0 inst [24:20] Dữ liệu bổ 1
sung

Thực hiện kiến trúc


C
Mô tả mạch logic D

(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

You might also like