Khóa luận tốt nghiệp thiết kế và hiện thực lõi vi xử lý riscv rv64im theo kiến trúc superscalar hỗ trợ 4way set asscosiative cache và branch prediction trên fpga

Khóa luận tốt nghiệp trình bày thiết kế và hiện thực lõi vi xử lý RISC-V RV64IM theo kiến trúc superscalar, hỗ trợ 4-way set associative cache và branch prediction trên FPGA.

Chuyên ngành

Kỹ thuật máy tính

Người đăng

Ẩn danh

Thể loại

Khóa luận tốt nghiệp

2023

101
41
2

Phí lưu trữ

35 Point

Mục lục chi tiết

LỜI CẢM ƠN

1. CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI

1.1. Tổng quan đề tài

1.2. Mục tiêu đề tài

1.3. Giới hạn đề tài

2. CHƯƠNG 2: SƠ LƯỢC VỀ KIẾN TRÚC TẬP LỆNH RISC-V

2.1. Tổng quát RISC-V

2.2. Các tập lệnh cơ sở và mở rộng của RISC-V

2.3. Kiến trúc tập lệnh cơ sở

2.4. Các tập lệnh và tập thanh ghi được sử dụng trong hệ thống

3. CHƯƠNG 3: THIẾT KẾ VI XỬ LÝ RISC-V

3.1. Mô tả tổng quan hệ thống

3.2. Mô tả thiết kế hệ thống

3.2.1. Khối Instruction Memory

3.2.2. Khối Hazard Detection

3.2.3. Khối Forwarding Unit

3.2.4. Khối Data Memory

3.2.5. Khối Cache_2port

3.3. Mô phỏng và đánh giá thiết kế

3.3.1. Thiết kế mô hình kiểm thử

3.3.2. Mô phỏng khối nhân

3.3.3. Mô phỏng khối chia

3.3.4. Mô phỏng tập lệnh

3.3.4.1. Tập lệnh cơ bản của RISC-V 64IM

4. CHƯƠNG 4: TẬP LỆNH HAZARD VÀ ĐÁNH GIÁ

4.1. Tập lệnh hazard

4.2. Tập lệnh phản hồi

4.3. Test lệnh nhảy không điều kiện

4.4. Test lệnh nhảy có điều kiện

4.5. Tính độ chính xác của khối Branch Prediction dự đoán lệnh nhảy có điều kiện

4.6. Kết quả tổng hợp, thực thi và đánh giá thiết kế

5. CHƯƠNG 5: THIẾT KẾ BLOCK DESIGN TRÊN VIVADO VỚI GIAO THỨC AXI4

5.1. Tổng quan giao thức AXI4

5.2. Kiến trúc khối thiết kế tổng quan giao tiếp qua AXI

5.3. Thiết kế trên Vivado

5.4. Các IP của Xilinx dùng trong thiết kế Block Design

5.4.1. IP Microblaze giao tiếp với local memory

5.4.2. IP AXI Uart Lite

6. CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

6.1. Kết luận

6.2. Hướng phát triển

PHỤ LỤC II: CÁC BƯỚC GENERATE BITSTREAM

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Thiết kế vi xử lý RISC V RV64IM

Thiết kế vi xử lý RISC-V RV64IM là trọng tâm của khóa luận, tập trung vào việc xây dựng một bộ xử lý 64-bit dựa trên kiến trúc RISC-V. Bộ xử lý này hỗ trợ các lệnh cơ bản của RV64I và các lệnh nhân chia từ RV64M. Kiến trúc Superscalar được áp dụng để tăng hiệu suất bằng cách thực hiện nhiều lệnh đồng thời. Bộ xử lý được thiết kế với pipeline 5 tầng, 32 thanh ghi 64-bit, và tích hợp các khối xử lý số học (ALU) để xử lý các phép toán số nguyên.

1.1. Kiến trúc Superscalar

Kiến trúc Superscalar cho phép bộ xử lý thực hiện nhiều lệnh trong một chu kỳ đồng hồ bằng cách sử dụng nhiều đơn vị xử lý độc lập. Điều này giúp tăng hiệu suất tổng thể của hệ thống. Bộ xử lý được thiết kế với hai khối ALU để xử lý các lệnh số học và một khối nhân/chia để thực hiện các phép toán phức tạp hơn.

1.2. Tối ưu hóa bộ nhớ

4-Way Set Associative Cache được tích hợp để giảm thời gian truy xuất dữ liệu từ bộ nhớ chính. Cache này sử dụng giải thuật FIFO để quản lý bộ nhớ, giúp cải thiện hiệu suất truy cập dữ liệu. Bộ nhớ đệm có dung lượng 512 bytes, đủ để hỗ trợ các ứng dụng nhúng và hệ thống nhỏ gọn.

II. Branch Prediction và hiệu suất

Branch Prediction là kỹ thuật quan trọng được áp dụng để dự đoán các lệnh nhánh, giúp giảm thời gian chờ đợi và tăng hiệu suất xử lý. Khóa luận sử dụng Two-level adaptive predictor để dự đoán các lệnh nhánh với độ chính xác cao. Kết quả thử nghiệm cho thấy độ chính xác trung bình của dự đoán đạt trên 90%, giúp cải thiện đáng kể hiệu suất của bộ xử lý.

2.1. Two level Adaptive Predictor

Two-level adaptive predictor sử dụng Branch History Shift Register (BHSR)Pattern History Table (PHT) để dự đoán các lệnh nhánh. BHSR lưu trữ lịch sử các lệnh nhánh, trong khi PHT dự đoán kết quả dựa trên mẫu lịch sử. Kỹ thuật này giúp giảm thiểu số lần dự đoán sai, từ đó tăng hiệu suất xử lý.

2.2. Đánh giá hiệu suất

Kết quả mô phỏng cho thấy bộ xử lý đạt tần số hoạt động 100MHz trên FPGA. Các lệnh được thực thi chính xác, và thời gian truy xuất dữ liệu được cải thiện đáng kể nhờ 4-Way Set Associative Cache. Điều này khẳng định tính khả thi và hiệu quả của thiết kế.

III. Hiện thực trên FPGA

Khóa luận đã hiện thực thành công bộ xử lý RISC-V RV64IM trên FPGA sử dụng công cụ Vivado. Thiết kế được tích hợp với giao thức AXI4 để giao tiếp với các thành phần khác trong hệ thống. Kết quả tổng hợp và thực thi cho thấy thiết kế đạt được các mục tiêu đề ra, bao gồm tần số hoạt động 100MHz và khả năng xử lý các lệnh phức tạp.

3.1. Thiết kế Block Design

Thiết kế Block Design trên Vivado sử dụng các IP của Xilinx, bao gồm MicroblazeAXI Uart Lite, để tạo ra một hệ thống hoàn chỉnh. Các thành phần này được kết nối thông qua giao thức AXI4, đảm bảo tính tương thích và hiệu suất cao.

3.2. Kết quả thực thi

Thiết kế được nạp lên FPGA Virtex-7 VC707 và thực thi thành công. Các lệnh được kiểm tra và xác nhận hoạt động chính xác. Kết quả này khẳng định tính ứng dụng thực tế của bộ xử lý RISC-V RV64IM trong các hệ thống nhúng và IoT.

21/02/2025

Trích đoạn nội dung tài liệu

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!

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Thiết kế và hiện thực lõi vi xử lý RISC-V RV64IM kiến trúc Superscalar với 4-Way Set Associative Cache và Branch Prediction trên FPGA là một tài liệu chuyên sâu về thiết kế vi xử lý, tập trung vào kiến trúc RISC-V RV64IM. Tài liệu này giới thiệu cách triển khai lõi vi xử lý Superscalar với bộ nhớ đệm 4-Way Set Associative và cơ chế dự đoán nhánh (Branch Prediction) trên nền tảng FPGA. Những kỹ thuật này giúp tối ưu hiệu suất xử lý, giảm độ trễ và cải thiện hiệu quả năng lượng, mang lại lợi ích lớn cho các nhà phát triển phần cứng và phần mềm nhúng.

Để hiểu rõ hơn về các khía cạnh liên quan đến thiết kế vi xử lý RISC-V, bạn có thể tham khảo Luận văn thạc sĩ khoa học máy tính thiết kế bộ nhớ đệm cho vi xử lý RISC-V, nơi đi sâu vào việc thiết kế bộ nhớ đệm tối ưu. Ngoài ra, Nghiên cứu một số giải pháp nâng cao hiệu năng của thuật toán mã hóa cung cấp thêm góc nhìn về tối ưu hóa hiệu suất trong lĩnh vực tính toán. Cuối cùng, Luận văn thạc sĩ các thuật toán quản lý khóa chốt trong cơ sở dữ liệu phân tán sẽ giúp bạn mở rộng kiến thức về quản lý tài nguyên hiệu quả trong hệ thống phân tán.