Đề tài mô tả thực hiện các lệnh của một CPU cơ bản của tập lệnh RISC V. Trong đề tài, có mô tả kiến trúc cơ bản của CPU. Mô phỏng CPU bằng ngôn ngữ verilog và chạy mô phỏng trên modelsim. Tất cả các lệnh ADD, XOR, NOT điều được thực hiện. Đề tài là tâm huyết cũng như niềm đam mê của một sinh viên trẻ
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH ĐỒ ÁN THIẾT KẾ CPU SINGLE CYCLE THEO CHUẨN RISC V HỌC KỲ: 222 NĂM HỌC: 2023 LỚP: L23 GIẢNG VIÊN HƯỚNG DẪN: PGS.TS Hoàng Trang Sinh viên thực Mã số sinh viên Tô Bạch Long 2011559 Thành phố Hồ Chí Minh – 2023 MỤC LỤC Trang PHẦN MỞ ĐẦU PHẦN NỘI DUNG CHƯƠNG 1: TỔNG QUAN 1.1 Lý lựa chọn thiết kế 1.1.1 CPU đóng vai trò quan trọng 1.1.2 Nhu cầu kỹ thuật đòi hỏi CPU ngày khắc khe 1.1.3 1.2 Mô hình RISC V Mục tiêu, chức thiết kế 1.2.1 Mục tiêu 1.2.2 Chức 1.3 Mơ hình thiết kế 1.3.1 Thanh ghi PC 1.3.2 Inst- memory 1.3.3 Imm.gen 1.3.4 Thanh ghi 32 bit 1.3.5 Branch 1.3.6 ALU 1.3.7 Dmem 10 1.3.8 WB 11 1.3.9 Controltop 12 1.3.10 Cấu trúc lệnh RISC V 13 CHƯƠNG 2: MÔ PHỎNG 15 2.1 Mơ lệnh nhóm R 15 2.1.1 Lựa chọn tính tốn kết 15 2.1.2 Kết mô so sánh 16 2.2 Mơ lệnh nhóm I 40 2.2.1 Tính toán kết 40 2.2.2 Kết mô so sánh 41 2.3 Mơ lệnh nhóm S 70 2.3.1 Lựa chọn tính tốn kết 70 2.3.2 Kết mô so sánh 70 2.4 Mơ lệnh nhóm B 74 2.5 Mô lệnh nhóm U 78 2.5.1 Lựa chọn tính tốn kết 78 2.5.2 Kết mô so sánh 78 2.6 Mô lệnh JAL 81 2.6.1 Lựa chọn tính tốn kết 81 2.6.2 Kết mô so sánh 81 Chương KẾT LUẬN 83 3.1 Kết luận, nhận xét tổng thể 83 3.2 Hướng phát triển 83 DANH MỤC TÀI LIỆU THAM KHẢO 84 PHẦN MỞ ĐẦU Lời đầu tiên, xin chân thành gửi lời cảm ơn đến PGS.TS Hoàng Trang anh Đỗ Quang Thịnh, người dìu dắt tác giả thực Đồ Án Trong q trình hồn thành đề tài với nhiều khó khăn thử thách, may mắn cịn bảo tận tình, hướng dẫn quý báu thầy Trang anh Thịnh Nhờ mà tác giả hồn thiện Đồ Án Ở thời điểm tại, người ta dễ dàng nhận thấy tầm quan trọng thiết bị điện tử, đặc biệt thiêt bị thơng minh có chip xử lý bên Cụ thể, thiết bị laptop, máy tính để bàn, máy tính cầm tay, máy tính bảng, điện thoại, thiết bị khơng thể thiếu sống Nếu người cần có não để điều khiển hoạt động thiết bị kể trên, Central Processing Unit (CPU) đóng vai trị não Như vậy, tầm quan trọng CPU phủ nhận thiết bị điện tử kỹ thuật số nói riêng sống nói chung Cùng với đó, nhu cầu địi hỏi CPU phải đáp ứng nhu cầu khắc khe công suất, tốc độ, Trước yêu cầu đặt trên, tác giả lựa chọn đề tài liên quan đến thiết kế CPU Đề tài thiết kế CPU mới, có nhiều đề tài liên quan trước Tuy nhiên, tác giả lựa chọn thực đề tài nhằm mục đích tìm hiểu tổng quan học hỏi Từ kiến thức học thông qua Đồ Án này, tác giả hy vọng dự định phát triển đề tài liên quan đóng góp nhiều cho lĩnh vực vi mạch thiết kế CPU Tóm lại, lý kể trên, tác giả chọn đề tài thiết kế CPU single cycle theo chuẩn RISC V để thực hoàn thành Đồ Án TÁC GIẢ PHẦN NỘI DUNG CHƯƠNG 1: TỔNG QUAN 1.1.Lý lựa chọn thiết kế Trăn trở lựa chọn đề tài thực đồ án, sau cùng, tác giả lựa chọn đề tài thiết kế CPU (Central Processing Unit) theo tập lệnh RISC V dựa vào lý sau: 1.1.1 CPU đóng vai trị quan trọng Central Processing Unit (CPU) hay gọi xử lý trung tâm, vi mạch điện tử có khả tính tốn lưu trữ thông tin Một CPU cấu thành từ nhiều thành phần, chẳng hạn khối ghi (Register), nhớ (Instruction Memory, Data Memory), nhiều thành phần khác trình bày rõ ràng phần sau CPU giống não thiết bị điện tử thơng minh máy tính, điện thoại, thiết bị ô tô, … thiết bị thành phần thiếu sống Hiệu suất thiết bị kể phụ thuộc vào hoạt động mà CPU thiết bị điều khiển Như vậy, CPU đóng vai trị vơ quan trọng 1.1.2 Nhu cầu kỹ thuật đòi hỏi CPU ngày khắc khe Cùng với phát triển vũ bão ngành thuộc lĩnh vực phần mềm, máy tính AI, BigData, … đòi hỏi CPU phải đáp ứng nhu cầu hiệu suất cao, công suất thấp, tốc độ nhanh, khả tính tốn với liệu lớn,… Do đó, thực tế đặt nhiệm vụ cho ngành thiết kế vi mạch phải làm để đáp ứng nhu cầu kể 1.1.3 Mô hình RISC V Kiến trúc tập lệnh RISC V công bố công khai vào năm 2014, phát triển Đại học California (Barkeley) Yunsup Lee, Krste Asanovic, David A Patterson Andrew Waterman Kiến trúc tập lệnh RISC V kiến trúc tập lệnh mã nguồn mở Do đó, xây dựng chip cho riêng Hơn nữa, RISC V giảng dạy trường học, nhờ dễ tiếp cận quen thuộc với sinh viên Có tập lệnh RISC V bao gổm RV32I (32 bit) RV64I (64 bit) Trong phạm vi đề tài này, tác giả lựa chọn thực thiết kế CPU với kiến trúc tập lệnh RISC V 32 1.2 Mục tiêu, chức thiết kế 1.2.1 Mục tiêu Thông qua đề tài, tác giả mong muốn học tập, tìm hiểu cách sâu sắc thiết kế RTL cho vi mạch đặc biệt hiểu, mơ tả cách thức hoạt động CPU hoàn chỉnh thông qua verilog code Mục tiêu thiết kế kế hoàn chỉnh CPU single cycle, chạy lệnh dựa kiến trúc tập lệnh RISC V 32 1.2.2 Chức Sau hoàn thành đề tài, CPU thiết kế có khả lấy lệnh, giải mã lệnh, thực tính tốn, đọc ghi liệu dựa vào lệnh tập lệnh RISC V 32 nói phần trước 1.3 Mơ hình thiết kế Một CPU hoàn chỉnh bao gồm mơ tả hình bên Hình 1.1: Sơ đồ kết nối khối CPU Trong đó, khối thực công việc khác từ lưu địa PC, lưu chương trình, tính tốn, giải mã, lưu liệu, … Những vấn đề tác giả đề cập kỹ phần tiếp theo, mô tả khối 1.3.1 Thanh ghi PC Thanh ghi PC (program counter) ghi chứa địa lệnh chương trình thực Sau thực xong lệnh, ghi PC tăng lên (trừ lệnh rẽ nhánh nhảy) Hình 1.2: Mơ hình ghi PC Và ghi chứa địa lệnh nên ngõ ghi nối với ngõ vào nhớ chương trình (instruction memory) Thanh ghi PC có ngõ vào Reset Khi Reset bật lên, ghi xuất địa 32h00000000 CPU thực lại chương trình ô nhớ nhớ chương trình 1.3.2 Inst- memory Bộ nhớ chương trình instruction memory nhớ chứa lệnh thực thi chương trình Trong phạm vi đề tài này, tác giả thực nhớ chương trình có ghi bit Như vậy, lệnh RISC V32 lưu vào ghi Hình 1.3: Mơ hình nhớ chương trình instruction memory Ngõ ra nhớ chương trình mã lệnh 32 bit Các khối phía sau thiết kế chủ yếu với mục đích giải mã thực thi lệnh 1.3.3 Imm.gen Khối Imm.gen thiết kế nhằm mục đích bóc phần Imm tập lệnh Theo tập lệnh lệnh loại I, S, B, U, J có thành phần lệnh Imm (tập lệnh trình bày mục 1.3.10) Việc tách giải mã phần để việc tính tốn khối sau dễ dàng Hình 1.3: Mơ hình Imm_gén Khối Immgen lấy ngõ vào phần lệnh instruction lệnh nhớ chương trình, xử lý thơng tin theo tín hiệu control xuất ALU để thực tính tốn 1.3.4 Thanh ghi 32 bit Thanh ghi (Register) phần quan trọng CPU Do thiết kế theo tập lệnh RISC V 32, Thanh ghi thiết kế 32 ghi, ghi 32 bit Hình 1.4: Mơ hình ghi Thanh ghi có ngõ vào AddrA, AddrB ngõ vào nhằm xác định địa ghi cần lấy tính tốn Khi nhận địa trên, ghi xuất liệu DataA, DataB tương ứng Song song với đó, ghi có ngõ vào Reg_write, AddrD DataD Ba ngõ vào xác định trạng thái cho phép không cho phép ghi, địa ghi ghi vào liệu ghi vào Ngoài ra, khối cịn có reset, tất liệu lưu ghi trả reset bật lên 1.3.5 Branch Khối Branch khối thiết kế phục vụ cho lệnh rẽ nhánh Khi thực lệnh rẽ nhánh Khối Controltop gửi tín hiệu BrUn đến khối ALU , Branch so sánh hai ngõ vào nhau, nhỏ hay lớn báo kết lại cho Controltop thông qua BrLt BrEq Từ kết trên, khói Controltop thực hồn tất lệnh rẽ nhánh Hình 1.5: Mơ hình khối rẽ nhánh Branch 1.3.6 ALU Bộ phận đảm nhiệm chức tính tốn CPU ALU Với tập lệnh RISC V 32, ALU thực phép toán cộng, trừ, and, or, xor, dịch trái, Trong đó, pc_in giá trị pc chuẩn bị xuất xung clock sau Song sonng với đó, r6 = pc + = hình: Hình 2.84 Thanh ghi thực thi lệnh JALR Như vậy, lệnh jalr thực hồn tồn 2.3 Mơ lệnh nhóm S 2.3.1 Lựa chọn tính tốn kết Tương tự với lệnh load, lệnh ghi vào nhớ store tác động lên nhớ liệu Data memory Để tiện mô lệnh này, ta chọn rs1 = r3 = 32’d3 giá trị Imm Và rs2 = r4 = 32’h05060708 Như vậy, lệnh thực thi đúng, liệu r4 đưa vào ô nhớ thứ Dmem[8], (với lệnh sb), Dmem[8] Dmem [9] (với lệnh sh) Dmem [8][9][10][11] (với lệnh sw) 2.3.2 Kết mô so sánh Thực nhập mã lệnh xem kết lệnh * Lệnh SB 70 Để thực mô lệnh SB ta nhập mã lệnh sau: Dạng sóng tín hiệu CPU sau: Hình 2.85 Dạng sóng thực thi lệnh SB Sau thực thi lệnh, nhớ Dmem sau: Hình 2.86 Bộ nhớ liệu Dmem thực thi lệnh SB Như vậy, CPU chạy lệnh yêu cầu * Lệnh SH Tương tự SB, với SH, ta nhập mã lệnh sau: 71 Dạng sóng tín hiệu CPU sau: Hình 2.87 Dạng sóng thực thi lệnh SH Sau thực thi lệnh, nhớ Dmem sau: Hình 2.88 Bộ nhớ liệu Dmem thực thi lệnh SH Như vậy, CPU chạy lệnh 72 * Lệnh SW Ta làm tương tự với SW, ta nhập mã lệnh sau: Dạng sóng tín hiệu CPU sau: Hình 2.89 Dạng sóng thực thi lệnh SW Sau thực thi lệnh, nhớ Dmem sau: Hình 2.90 Bộ nhớ liệu Dmem thực thi lệnh SW 73 Như vậy, CPU chạy lệnh 2.4 Mô lệnh nhóm B Để thuận tiện kiểm tra mơ lệnh rẽ nhánh nhóm B, (bao gồm beq, bne, blt, bge, bltu, bgeu), ta chia trường hợp rs1 = rs2, rs1< rs2 rs1> rs2 chạy tất lệnh nhóm Chọn Imm = cho tất trường hợp mô Trường hợp1: Chọn rs1 = rs2 = 32’h00000005 Ở đây, ta chọn rs1 rs2 r3 r4 Như vậy, với trường hợp 1, lệnh nhảy PC = PC+5 bao gồm: beq, bge, bgeu Các lệnh lại PC = PC+4 bình thường • Với lệnh Hình 2.91 Giá trị PC thực lệnh beq với rs1 = rs2 • Với lệnh bne Hình 2.92 Giá trị PC thực lệnh bne với rs1 = rs2 • Với lệnh blt Hình 2.93 Giá trị PC thực lệnh blt với rs1 = rs2 • Với lệnh bge 74 Hình 2.94 Giá trị PC thực lệnh bge với rs1 = rs2 • Với lệnh bltu Hình 2.95 Giá trị PC thực lệnh bltu với rs1 = rs2 • Với lệnh bgeu Hình 2.96 Giá trị PC thực lệnh bgeu với rs1 = rs2 Như vậy, thực thi dự đốn trước Trường hợp 2: Chọn rs1 < rs2 , với rs1 = 32’h5, rs2 = 32’h7 Ở đây, ta chọn rs1 rs2 r3 r4 Như vậy, với trường hợp 1, lệnh nhảy PC = PC+5 bao gồm: bne, blt, bltu Các lệnh cịn lại PC = PC+4 bình thường • Với lệnh beq Hình 2.97 Giá trị PC thực lệnh beq với rs1 < rs2 • Với lệnh bne Hình 2.98 Giá trị PC thực lệnh bne với rs1 < rs2 • Với lệnh blt 75 Hình 2.99 Giá trị PC thực lệnh blt với rs1 < rs2 • Với lệnh bge Hình 2.100 Giá trị PC thực lệnh bge với rs1 < rs2 • Với lệnh bltu Hình 2.101 Giá trị PC thực lệnh bltu với rs1 < rs2 • Với lệnh bgeu Hình 2.102 Giá trị PC thực lệnh bgeu với rs1 < rs2 Như vậy, thực thi dự đốn trước Trường hợp 3: Chọn rs1 > rs2 , với rs1 = 32’h9, rs2 = 32’h7 Ở đây, ta chọn rs1 rs2 r3 r4 Như vậy, với trường hợp 1, lệnh nhảy PC = PC+5 bao gồm: bne, bge, bgeu Các lệnh lại PC = PC+4 bình thường • Với lệnh beq Hình 2.103 Giá trị PC thực lệnh beq với rs1 > rs2 76 • Với lệnh bne Hình 2.104 Giá trị PC thực lệnh bne với rs1 > rs2 • Với lệnh blt Hình 2.105 Giá trị PC thực lệnh blt với rs1 > rs2 • Với lệnh bge Hình 2.106 Giá trị PC thực lệnh bge với rs1 > rs2 • Với lệnh bltu Hình 2.107 Giá trị PC thực lệnh bltu với rs1 > rs2 • Với lệnh bgeu Hình 2.108 Giá trị PC thực lệnh bgeu với rs1 > rs2 Như vậy, thực thi dự đốn trước 77 2.5 Mơ lệnh nhóm U 2.5.1 Lựa chọn tính tốn kết * Lệnh LUI Để thực mô lệnh lui, rd = imm