Chương 1. Giới thiệu đề tài 1. Tổng quan đề tài RISC-V (phát âm là "risk-five", RISC viết tắt từ Reduced Instruction Set Computer). là một kiến trúc tập lệnh mở, được xây dựng dựa trên những nguyên tắc của kiến trúc tập lệnh RISC, đã và đang thu hút được sự phát triển và ứng dụng từ các nhà khoa học cũng như các công ty sử dụng vi xử lý trên thế giới.
RISC-V phổ biến vì nó cho phép xây dựng phần cứng mà không phải trả tiền bản quyền. Đồng thời còn cho phép các nhà phát triển, các nhà nghiên cứu thiết kế và thử nghiệm với kiến trúc tập lệnh đã được chứng minh và có sẵn miễn phí. Nó cho phép bất kỳ ai có thể thiết kế, sản xuất và bán các sản phẩm phần cứng và phần mềm sử dụng RISC-V, Điều đó sẽ đem đến rất nhiều lợi ích quan trọng cho nền công nghiệp máy tính nói chung và sự phát triển của IoT nói riêng, như lôi kéo được nhiều ý tưởng sáng tạo thiết kế hơn, các thiết kế bộ vi xử lý có thé được trao đổi, tái sử dụng, dễ tối ưu hơn làm cho chỉ phí của bộ vi xử lý trở nên rẻ và phù hợp với các ứng dụng kiểu như IoT. Bộ xử lý superscalar là một CPU thực hiện một dạng song song được gọi là song song mức lệnh trong một bộ xử lý duy nhất.
Ngược lại với bộ xử lý vô hướng, có thể thực hiện nhiều nhất một lệnh duy nhát trên mỗi chu kỳ đồng hồ, bộ xử lý superscalar có thể thực hiện nhiều lệnh trong một chu kỳ đồng hồ bằng cách gửi đồng thời nhiều lệnh đến các đơn vị thực thi khác nhau trên bộ xử lý. Ngoài ra RISC-V còn có những mong muốn khác là tạo ra một kiến trúc tập lệnh tiêu chuẩn chung dé có thé thống nhất va tái sử dung phần mềm trên nhiều hệ thống khác nhau và ổn định trong vài chục năm thay vì sử dụng nhiều kiến trúc tập lệnh khác nhau trên cùng một hệ thống System on Chip (SOC) như trước đây. Dé hiện thực điều đó, RISC-V cho phép mở rộng tập lệnh theo hướng phù hợp cho từng ứng dụng cụ thé, thong qua phan tập lệnh mở rộng (tiêu chuẩn hoặc do người thiết kế CPU tự định nghĩa). Hiện nay trong nước có một số đề tài nghiên cứu liên quan đến RISC-V như: e Dai Duong Tran, Thi Giang Truong, Truong Giang Do, The Duc Do, “Risc-V Random Test Generator”, University of Information Technology Vietnam National University, 2022.
BAO CAO KHOA LUAN TOT NGHIEP Trang 1 e Tran Quoc Truong, Le Phuoc Nhat Nam, “Design and implement a superscalar RISC-V RV32I processor with the 2-way set associative cache and Memory Management Unit” University of Information Technology Vietnam National University, 2022. Ngoài nước có một số đề tài nghiên cứu liên quan đến RISC-V như: e R. Mariotti, "WebRISC-V: a Web-Based Education-Oriented RISC-V Pipeline Simulation Environment," in ACM Workshop on Computer Architecture Education (WCAE-19), Phoenix, AZ, USA, Jun. e Gokulan T, Akshay Muraleedharan, Kuruvilla Varghese, Senior Member, IEEE Electronic Systems Engineering, Indian Institute of Science, Bangalore, INDIA, “Design of a 32-bit, dual pipeline superscalar RISC-V processor on FPGA”, 2020 23rd Euromicro Conference on Digital System Design (DSD), Kranj, Slovenia, 2020").
Nhận thay được sự cần thiết và tiềm năng của hệ thống xử lý. Do đó chúng em quyết định nghiên cứu, thực hiên các tập lệnh trong kiến trúc tập lệnh phần cứng nguồn mở RISC-V ở dạng RV64IM có kết hợp thêm các tính năng như: e Kiến trúc superscalar: cho phép các bộ xử lý thực hiện nhiều lệnh đồng thời bằng cách sử dụng nhiều đơn vị xử lý độc lập trên một bộ xử ly đơn lõi. s 4-Way Set Associative Cache: Giảm thời gian truy cập vào bộ nhớ chính, giúp xử lý nhanh hơn. e Branch prediction: kỹ thuật được sử dụng trong các bộ xử lý máy tính để dự đoán kết quả của các nhánh (branch) trong chương trình, trước khi chúng được thực hiện.
Mục tiêu đề tai Mục tiêu đề tài cụ thé như sau: © __ Thiết kế bộ vi xử lý 64 bit thực thi các lệnh cơ bản thuộc kiến trúc RV64I, thêm các lệnh nhân chia của RV64M. e _ Thiết kế pipeline 5 tang, 32 thanh ghi số nguyên 64-bit, và bao gồm các phan mở rộng nhân RV64I (Integer) và M (Multiplication) của tập lệnh RISC-V. BAO CÁO KHÓA LUẬN TOT NGHIỆP Trang 2 e _ Thiết kế hỗ trợ branch prediction. e _ Thiết kế theo kiến trúc superscalar.
e Thiết kế hỗ trợ 4-Way Set Associative Cache. e — Kiểm tra các lệnh của vi xử lý và các địa chi thông qua mô phỏng trên phan mềm Vivado. e Tần số đạt được của thiết kế 100Mhz. e — Nạp được thiết kế lên FPGA.
Giới hạn đề tài e Thiết kế và hiện thực RISC-V RV64IM theo kiến trúc superscalar trên phần mềm và đồng thời hiện thực lên FPGA. e Hỗ trợ được các lệnh phép tính trong phan mở rộng IM. e —_ Hỗ trợ branch prediction. e Cache có dung lượng là 512 bytes.
° Tần số hoạt động 100MHz. BAO CÁO KHÓA LUẬN TOT NGHIỆP Trang 3 Chương 2. Sơ lược về kiến trúc tập lệnh RISC-V 2. Tổng quát RISC-V định nghĩa kiến trúc tập lệnh số nguyên 32-bit RV32I là kiến trúc tập lệnh cơ sở.
Với kiến trúc tập lệnh cơ sở này, vi xử lý RISC-V đã có tất cả những lệnh cơ bản như những lệnh điều khiển luồng, bộ thanh ghi, bộ nhớ, cách đánh địa chỉ bộ nhớ .đủ đề hiện thực một vi xử lý dạng tổng quát hỗ trợ đầy đủ cho phần mềm và trình biên dịch. Tir kiến trúc tập lệnh co sở này, nhà phát triển vi xử lý RISC-V có thể linh hoạt chọn kết hợp với một hay nhiều tập lệnh mở rộng tùy chọn khác cho các ứng dụng mục tiêu.1: Các tập lệnh cơ sở và mở rộng của RISC-V Tên viết tắt Tên đầy đủ Chú thích của tập lệnh RV32I Base Integer Instruction Set, 32-bit RV32E Base Integer Instruction, (embedded) 4 tập lệnh cơ sở RV641 Base Integer Instruction Set, 64-bit RVI28I Base Integer Instruction Set, 128-bit M Integer Multiplication and Division A Atomatic Instructions F Single - Precision Floating Point Những tap lệnh mở rộng D Doube - Precision Floating Point. 2 tiêu chuân Q Quad - Precision Floating Point Cc Decimal Floating Point BAO CAO KHOA LUAN TOT NGHIEP Trang 4 2. Kiến trúc tập lệnh cơ sở Mỗi thanh ghi lưu trữ một giá trị 32-bit.
Không như khái niệm biến ngôn ngữ lập trình cấp cao, thanh ghi trong hợp ngữ không có kiểu dữ liệu, cách ta sử dụng thanh ghi sẽ quyết định kiểu dữ liệu là gì. Nếu xét về định dang của lệnh thì RV32I được chia thành 6 nhóm: R - type, [ — type, S — type, B — type, U — type, J — type. Trong đó R, I, S, U là bốn nhóm chính, hai nhóm B và J giống hoàn toàn nhóm S va U ngoại trừ khác nhau về phan toán tử “immediate” như hình minh họa dưới đây. 31 30 2524 21 30 19 Is 14 2 11 8 16 0 funct7 rs2 rsl funct3 rd | opcode R-type imm[11:0] rsl funct3 rd | opcode I-type imm[11:5] rs2 TS funct3 imm[4:0] | opcode S-type imm[12] imm[10:5] rs2 rsl funet3 imm[4:1] imm[11] opcode B-type imm[31:12] rd opcode U-type imm(20]| imm[10:1] imm[II] imm[ 19:12] rd opcode J-type Hình 2.1: Dinh dạng lệnh của RISC-V Về thanh ghi, RV32I có một thanh ghi PC và 32 thanh ghi Register File gồm một thanh ghi x0 luôn mang giá trị 0 và 31 thanh ghi đa mục đích x1- x31.
Tất cả đều có độ rộng 32-bit (với RV64I độ rộng của các thanh ghi này trở thành 64-bit). Tương tự như kiến trúc tập lệnh RISC, RV32I cũng có kiến trúc LOAD-STORE. Điều đó có nghĩa là chỉ có các lệnh Load và Store được cấp quyền truy cập vào bộ nhớ, còn lại các phép toán số học. đều chi sử dung các thanh ghi.
Ngoài ra RV32I có nghĩa là không gian địa chỉ là 32-bit và sử dụng little endian. Tương ứng, RV64I có nghĩa là không gian địa chỉ là 64-bit và RV128I có không gian địa chỉ là 128-bit. RV64I và RVI28I cũng được xem là những kiến trúc tập lệnh cơ sở. Bên cạnh đó, còn một kiến trúc tập lệnh cơ sở nữa là RV32E định nghĩa cho những hệ thống nhúng.
RV32E chỉ có 16 thanh ghi 32-bit registers và những bộ đếm của RV32I được tùy chọn có hay không. BÁO CÁO KHÓA LUẬN TÓT NGHIỆP. Các tập lệnh và tập thanh ghi được sử dung trong hệ thống Sau đây là tập lệnh được sử dụng đề nghiên cứu và thiết kế vi xử lý RISC-V RV64IM trong khóa luận này: gồm các tập lệnh R V321, RV64I, RV32M và RV64M. Tập lệnh RV32I Bảng 2.2: Tập lệnh RV32I ` Kiểu STT | Lệnh Tên đây đủ Hành động xử lý lệnh 1 ADD Add rd =rsl +rs2 R-type 2 AND And rd=rsl & rs2 R-type 3 OR Or rd = rsl | rs2 R-type 4 SLT Set On Less Than rd=rsl < rs2 R-type Set On Less Than - 5 SLTU ỹ rd = rsI <rs2 (unsigned) R-type Unsigned 6 SUB Subtract rd =rsl —rs2 R-type 7 XOR Exclusive Or rd=rsl ^ rs2 R-type 8 SLL Shift Left Logical rd =rsl << rs2[5:0] R-type Shift Right rd = rsl >> rs2[5:0] (hold 9 SRA - R-type Arithmetic signed bit) 10 SRL | Shift Right Logical rd = rsI >> rs2[5:0] R-type Set On Less Than 11 SLTI rd=rsl <imm I-type Immediate 12 ORI Or Immediate rd=rsl |imm I-type 13 ADDI Add Immediate rd=rsl +imm I-type 14 ANDI And Immediate rd=rsl & imm I-type Set On Less Than 15 SLTIU rd =rsl <imm (usigned) I-type Immediate Usigned BAO CAO KHOA LUAN TOT NGHIEP Trang 6 Exclusive Or 16 XORI rd=rsl ^imm I-type Immediate Shift Left Logical 17 SLLI l rd = rsl << shamt I-type Immediate Shift Right Logical 18 SRLI rd =rsl >> shamt I-type Immediate 19 LB Load Byte rd = mem[rs1 + imm][7:0] I-type 20 LH Load Halfword rd = mem[rsl + imm][15:0] I-type 21 LW Load Word rd = mem[rs1 + imm][31:0] I-type Load Byte rd = men[rs1 + imm][7:0] 22 LBU I-type Unsigned (unsigned) Load Halfword rd = mem[rsl + imm][15:0] 23 LHU I-type unsigned (unsigned) Shift Right rd =rsl >> shamt (hold 24 SRAI Arithmetic I-type signed bit) Immediate Jump And Link 25 JALR rd=pe + 4, pe=rsl + imm I-type Register Load Upper 26 LUI rd = imm << 12 U-type Immediate Add Upper 27 | AUIPC Immediate to rd =imm << 12 + pc U-type Program Counter 28 BEQ Branch On Equal 1f(rsl==rs2) pe = pc + imm B-type 29 BGE Branch great than | if(rsl>=rs2) pe = pc + imm B-type 30 BLT Branch less than 1f(rsl>=rs2) pe = pc + imm B-type Branch On Not 31 BNE if(rs1!