Bối cảnh và vấn đề nghiên cứu

Sự phát triển mạnh mẽ của mạng lưới Internet vạn vật (IoT) trên quy mô công nghiệp đang tác động sâu rộng đến đời sống cá nhân (thiết bị đeo thông minh, nhà thông minh, thiết bị y tế điện tử) lẫn các hệ thống quản trị xã hội và doanh nghiệp (đô thị thông minh, quan trắc môi trường, điều khiển công nghiệp). Theo các báo cáo được trích dẫn từ IoT Analytics và Gartner, số lượng thiết bị IoT toàn cầu đã vượt mốc 7 tỷ thiết bị vào năm 2018 và được dự báo đạt từ 22 đến 25 tỷ thiết bị trong giai đoạn 2021–2025. Mỗi thiết bị IoT đều cần ít nhất một bộ vi xử lý để thu thập, kết nối, tính toán và tương tác với môi trường bên ngoài, đòi hỏi các dòng vi xử lý phải đa dạng về hiệu năng, tiết kiệm năng lượng và tối ưu về chi phí sản xuất.

Tuy nhiên, thị trường vi xử lý thương mại hiện nay (tiêu biểu như ARM, Intel, IBM) tồn tại nhiều rào cản lớn:

  • Chi phí bản quyền kiến trúc tập lệnh độc quyền rất cao (khoảng từ 1 đến 10 triệu USD) cùng thời gian đàm phán kéo dài từ 6 đến 24 tháng, gây khó khăn cho các doanh nghiệp vừa và nhỏ cũng như các đơn vị nghiên cứu học thuật.
  • Các vi xử lý thương mại thường được thiết kế tổng quát theo từng phân khúc cố định, thiếu tính linh hoạt để tùy biến tối ưu cho từng ứng dụng IoT cụ thể.
  • Sự phân mảnh hệ sinh thái phần mềm giữa các kiến trúc tập lệnh khác nhau làm tăng chi phí phát triển hệ thống.

Bên cạnh đó, trong kiến trúc máy tính phân cấp, tốc độ xử lý của vi xử lý ngày càng vượt xa tốc độ truy xuất của bộ nhớ chính, dẫn đến hiện tượng "nghẽn cổ chai" bộ nhớ. Việc tích hợp bộ nhớ đệm (Cache) để giảm độ trễ truy xuất dữ liệu và đơn vị quản lý bộ nhớ (MMU) để thực hiện dịch địa chỉ ảo sang địa chỉ thực, phân vùng và bảo vệ bộ nhớ thông qua cơ chế ngoại lệ là yêu cầu kỹ thuật tất yếu. Xuất phát từ bối cảnh đó, đề tài tập trung nghiên cứu, thiết kế và hiện thực bộ vi xử lý mã nguồn mở RISC-V 32-bit theo kiến trúc siêu vô hướng (superscalar) tích hợp Cache kết hợp 4 đường (4-way Set-Associative) và MMU trên nền tảng phần cứng FPGA.

Mục tiêu và nhiệm vụ nghiên cứu

Văn bản xác định 8 mục tiêu và nhiệm vụ kỹ thuật cụ thể:

  1. Nghiên cứu kiến trúc tập lệnh RV32I cho lõi vi xử lý RISC-V 32 bit.
  2. Thiết kế phần cứng cho bộ vi xử lý RISC-V 32 bit theo kiến trúc superscalar bằng ngôn ngữ mô tả phần cứng Verilog.
  3. Thiết kế bộ điều khiển Cache và đơn vị quản lý bộ nhớ (MMU) bằng ngôn ngữ Verilog.
  4. Tích hợp bộ điều khiển Cache và MMU vào lõi vi xử lý RISC-V 32 bit.
  5. Tích hợp bus AXI4 để giao tiếp với các module liên quan.
  6. Kiểm tra các lệnh của vi xử lý và các địa chỉ được chuyển đổi bên trong MMU thông qua mô phỏng trên phần mềm Vivado.
  7. Hiện thực thiết kế lên kit FPGA.
  8. Tối ưu khối IP hoạt động ổn định ở tần số xung nhịp mục tiêu 110 MHz.

Đối tượng và phạm vi nghiên cứu

  • Đối tượng nghiên cứu: Kiến trúc tập lệnh RISC-V (RV32I), kỹ thuật thiết kế đường ống siêu vô hướng 2 luồng (2-issue superscalar), cấu trúc bộ nhớ đệm kết hợp 4 đường (4-way Set-Associative Cache) sử dụng giải thuật thay thế FIFO và chính sách cập nhật Write-Through, cùng cơ chế phân trang của đơn vị quản lý bộ nhớ (MMU).
  • Phạm vi và giới hạn đề tài: Thiết kế tập trung xử lý các phép toán số học số nguyên trên dữ liệu 32-bit (tập lệnh RV32I); chưa hỗ trợ tập lệnh tính toán dấu chấm động (Floating-Point). Thiết kế được tổng hợp và kiểm thử trên môi trường phần mềm Xilinx Vivado và kit phát triển FPGA.

Cơ sở lý thuyết và phương pháp

Khung lý thuyết và kiến trúc nền tảng

  • Kiến trúc tập lệnh RISC-V RV32I: Kiến trúc tập lệnh rút gọn mã nguồn mở, không gian địa chỉ 32-bit, định dạng dữ liệu little-endian, tuân thủ mô hình Load-Store (chỉ các lệnh Load/Store mới truy cập bộ nhớ dữ liệu, các phép tính logic/số học đều thao tác trực tiếp trên tập thanh ghi). Tập thanh ghi gồm 32 thanh ghi đa dụng ($x0 luôn có giá trị 0, $x1–$x31) và thanh ghi con trỏ lệnh PC. Định dạng lệnh gồm 6 nhóm: R-type, I-type, S-type, B-type, U-type, J-type.
  • Tập thanh ghi và tập lệnh đặc biệt (Coprocessor 0 - CP0): Để phục vụ quản lý ngoại lệ và điều khiển MMU, hệ thống bổ sung 5 thanh ghi đặc biệt ($cause: mã ngoại lệ, $epc: địa chỉ trả về của ngoại lệ, $index: địa chỉ mục bảng trang, $entry: dữ liệu bảng trang, $context: địa chỉ thư mục bảng trang) cùng các tập lệnh đặc biệt (mfc0, mtc0, syscall, eret, mtc0 r20, x0 - lệnh kích hoạt ghi bảng trang MMU).
  • Lý thuyết bộ nhớ đệm (Cache Memory): Cấu trúc khối gồm các trường bit Hợp lệ (Valid bit - V), Thẻ định danh (Tag - t) và Dữ liệu (Data - d) với tổng số bit $1 + t + d$. Cấu trúc ánh xạ kết hợp tập hợp 4 đường (4-way Set-Associative) giúp cân bằng giữa tốc độ tìm kiếm và tỉ lệ trượt (miss rate) so với ánh xạ trực tiếp (Direct Mapped) và ánh xạ toàn phần (Fully Associative). Giải thuật cấp phát/thay thế khối là FIFO (First-In, First-Out); chiến lược cập nhật bộ nhớ chính là Ghi trực tiếp (Write-Through) để đảm bảo tính nhất quán dữ liệu và tối ưu phần cứng.
  • Lý thuyết quản lý bộ nhớ ảo (MMU): Cơ chế phân trang với kích thước trang cố định 256 Bytes, thực hiện chuyển đổi địa chỉ ảo (Virtual Address) do CPU phát ra thành địa chỉ vật lý (Physical Address) cho bộ nhớ chính, đồng thời phát sinh tín hiệu ngoại lệ lỗi trang (Page Fault Exception) khi truy cập vào vùng nhớ chưa được cấp quyền (Valid = 0).

Phương pháp nghiên cứu và thực nghiệm

  • Phương pháp mô hình hóa và thiết kế vi mạch: Sử dụng ngôn ngữ mô tả phần cứng Verilog RTL để thiết kế chi tiết từng khối chức năng (Datapath, Control Unit, Pipeline Registers, Forwarding Logic, Issuing Logic, MMU Controller, MMU Page Table, Cache Controller, Dual-port Cache).
  • Phương pháp mô phỏng chức năng và kiểm thử: Xây dựng mô hình kịch bản kiểm thử (Testbench) trên phần mềm Xilinx Vivado với 4 kịch bản kiểm thử chính (Test 1 đến Test 4) nhằm xác minh hoạt động của đường ống, cơ chế phát hiện xung đột, xử lý ngoại lệ lỗi trang/syscall, quá trình nạp/xóa/đọc Cache và tính toàn vẹn của tập thanh ghi (Register File).
  • Phương pháp tổng hợp và phân tích phần cứng: Tổng hợp logic (Synthesis), thực thi (Implementation), phân tích thời gian (Timing Analysis) và phân tích công suất tiêu thụ (Power Analysis) trên phần mềm Vivado nhắm đến đích phần cứng FPGA.
  • Tích hợp hệ thống trên chip (SoC Block Design): Sử dụng giao thức bus chuẩn AXI4 để kết nối lõi vi xử lý với các khối IP ngoại vi của Xilinx như IP MicroBlaze, IP Local Memory và IP AXI UART Lite.

Thiết kế và triển khai phần cứng

Hệ thống vi xử lý RISC-V được thiết kế theo cấu trúc đường ống 5 tầng siêu vô hướng có khả năng phát lệnh song luồng (2-issue), tích hợp bộ nhớ đệm lệnh (ICache), bộ nhớ đệm dữ liệu (DCache) và đơn vị MMU.

Tầng đường ống Chức năng chi tiết trong thiết kế
IF (Instruction Fetch) Khối pc_scalar cung cấp cùng lúc 2 địa chỉ lệnh cho ICache; xử lý tín hiệu chuyển nhánh, xử lý tín hiệu nhảy ngoại lệ/eret và đồng bộ hóa xung đột truy xuất bộ nhớ.
ID (Instruction Decode) Khối issuing phân tích và giải quyết xung đột đường ống (swap/rollback); giải mã lệnh; đọc dữ liệu từ Register File; khối forwarding_logic chuyển tiếp dữ liệu trước; khối branch đánh giá điều kiện rẽ nhánh.
EXE (Execution) Thực thi các phép tính số học/logic thông qua khối alu (10 phép toán) hoặc tính toán địa chỉ hiệu dụng cho các lệnh Load/Store gửi sang DCache.
MEM (Memory Access) Thực thi đọc/ghi dữ liệu với DCache thông qua khối ls_logic. Do hệ thống xử lý 2 lệnh song song nhưng chỉ có 1 cổng truy xuất DCache, xung đột đường ống được khối issuing điều phối từ tầng IF.
WB (Write Back) Khối lựa chọn dữ liệu kết quả từ ALU hoặc dữ liệu đọc từ DCache để ghi ngược lại vào tập thanh ghi Register File.

Kiến trúc các khối chức năng chính

  1. Khối cpu_mem_scalar: Khối mức cao nhất của vi xử lý sau khi tích hợp Cache và MMU, chịu trách nhiệm nhận tín hiệu xung clock, tín hiệu reset (rst_n), tín hiệu kích hoạt (start), giao tiếp 2 cổng đọc lệnh (A_inst, B_inst, A_imem_addr, B_imem_addr) và 1 cổng dữ liệu (data_mem_addr, dmem_din, dmem_dout, dmem_rw).
  2. Khối pc_scalar: Quản lý địa chỉ lệnh kế tiếp (pc, pc_add_4, pc_add_8), tiếp nhận tín hiệu rẽ nhánh (A_pc_sel, B_pc_sel), địa chỉ nhảy (A_jump_data, B_jump_data), tín hiệu ngoại lệ (intr_sel, epc), cờ báo chỉ xử lý một lệnh (roll_back), cờ không qua Cache (A_uncached, B_uncached) và cờ không qua MMU (A_unmapped, B_unmapped).
  3. Khối issuing: Tiếp nhận 2 lệnh thô (A_inst, B_inst) và xuất ra 2 lệnh đường ống (A_pipe, B_pipe), kích hoạt tín hiệu swap (đổi thứ tự lệnh) hoặc roll_back (trì hoãn 1 lệnh sang chu kỳ sau) khi phát hiện xung đột tài nguyên cổng nhớ DCache hoặc xung đột phụ thuộc dữ liệu.
  4. Khối forwarding_logic: Tiếp nhận thông tin đích ghi và tín hiệu cho phép ghi từ tầng EXE (A_erd, B_erd, A_ereg_wr, B_ereg_wr) và tầng MEM (A_mrd, B_mrd, A_mreg_wr, B_mreg_wr), so sánh với toán hạng nguồn ở tầng ID để sinh tín hiệu điều khiển chuyển tiếp toán hạng (A_fwd_0, A_fwd_1, B_fwd_0, B_fwd_1).
  5. Khối alu: Nhận tín hiệu điều khiển 4-bit alu_op[3:0] để thực hiện 10 phép tính trên 2 toán hạng 32-bit s1 và s2: ADD (0), SUB (1), SLL (2), SLT (3), SLTU (4), XOR (5), SRL (6), SRA (7), OR (8), AND (9).
  6. Khối ls_logic: Đóng vai trò cầu nối định dạng dữ liệu giữa CPU và DCache, thực hiện căn chỉnh kích thước truy xuất byte, half-word, word và mở rộng dấu cho các lệnh LB, LH, LW, LBU, LHU, SB, SH, SW.
  7. Khối branch: So sánh 2 toán hạng rs1 và rs2, xuất các cờ điều kiện bằng nhau (br_eq), nhỏ hơn (br_lt) và xử lý có dấu/không dấu (br_un).
  8. Khối MMU: Gồm MMU Controller và MMU Page Table (dung lượng trang 256B). Chuyển đổi địa chỉ ảo A_v_pc, B_v_pc, malu thành địa chỉ vật lý A_irpn, B_irpn, drpn. Nếu truy cập trang không hợp lệ, khối phát tín hiệu ngoại lệ A_itb_exc, B_itb_exc, dtb_exc về đường ống CPU. Quá trình cập nhật bảng trang được điều khiển bởi phần mềm qua các tín hiệu index_wr, entry_wr, context_wr, tbwr.
  9. Khối cache_2port: Bộ nhớ đệm 2 cổng hỗ trợ phát lệnh song luồng, quản lý mảng nhớ Valid/Tag Array và Data Array. Khi Cache Hit, dữ liệu được trả về ngay trong 1 chu kỳ máy; khi Cache Miss, bộ điều khiển kích hoạt đọc từ bộ nhớ ngoài thông qua MMU và nạp lại vào mảng nhớ theo giải thuật FIFO.

Nội dung chính theo từng chương

Chương 1: Giới thiệu đề tài

Chương 1 thiết lập tính cấp thiết của nghiên cứu trong bối cảnh bùng nổ IoT và nhu cầu cấp bách về các bộ vi xử lý mở, chi phí thấp, có khả năng tùy biến cao. Tác giả phân tích các hạn chế về bản quyền, thời gian đàm phán và chi phí của các kiến trúc độc quyền (ARM, Intel, x86), từ đó khẳng định vai trò của kiến trúc mở RISC-V. Chương này xác định rõ 8 mục tiêu kỹ thuật, giới hạn đề tài ở tập lệnh RV32I số nguyên, đồng thời phân tích yêu cầu tích hợp Cache 4-way và MMU nhằm giải quyết bài toán chênh lệch tốc độ CPU - bộ nhớ chính và bài toán bảo vệ bộ nhớ.

Chương 2: Kiến trúc tập lệnh RISC-V

Chương 2 trình bày toàn diện cơ sở lý thuyết về kiến trúc tập lệnh RISC-V:

  • Phân loại các tập lệnh cơ sở (RV32I, RV32E, RV64I, RV128I) và các tập mở rộng chuẩn (M, A, F, D, Q, C).
  • Bảng đặc tả 37 lệnh RV32I và bảng 32 thanh ghi chuẩn ($x0 đến $x31).
  • Cơ chế tổ chức Cache: so sánh 3 phương pháp ánh xạ (Direct Mapped, Fully Associative, Set-Associative); giải thích lý do lựa chọn Cache 4-way Set-Associative dựa trên mô hình toán học đánh giá năng lượng tiêu thụ trung bình ($E_c$) và thời gian truy cập trung bình ($T_{as}$); mô tả thuật toán thay thế FIFO và kỹ thuật ghi Write-Through.
  • Đơn vị quản lý bộ nhớ MMU: phân tích chế độ địa chỉ thực và chế độ địa chỉ ảo; bảng 5 thanh ghi đặc biệt ($cause, $epc, $index, $entry, $context) và tập lệnh đặc biệt (mfc0, mtc0, syscall, eret, mtc0 r20, x0) dùng để cập nhật bảng trang và điều khiển luồng ngoại lệ.

Chương 3: Thiết kế vi xử lý RISC-V

Chương 3 là trọng tâm thiết kế phần cứng, cung cấp sơ đồ khối chi tiết và bảng mô tả tín hiệu I/O của toàn bộ các module trong hệ thống:

  • Mô hình đường ống 5 tầng siêu vô hướng 2 luồng (IF, ID, EXE, MEM, WB).
  • Thiết kế chi tiết khối cpu_mem_scalar và khối điều khiển con trỏ lệnh pc_scalar.
  • Cơ chế giải quyết xung đột đường ống tại khối issuing và khối chuyển tiếp toán hạng forwarding_logic.
  • Thiết kế khối thực thi alu, khối giao tiếp bộ nhớ dữ liệu ls_logic, khối so sánh nhánh branch.
  • Cấu trúc đơn vị MMU (Controller và Page Table 256B) cùng bộ điều khiển Cache 2 cổng (cache_2port).

Chương 4: Mô phỏng và đánh giá thiết kế

Chương 4 trình bày quá trình kiểm chứng phần cứng thông qua mô hình Testbench trên Vivado:

  • Kịch bản kiểm thử (Test 1 - Test 4):
    • Test 1: Xác minh cơ chế xử lý ngoại lệ lỗi trang (Page Fault) và ngoại lệ gọi hệ thống (syscall), kiểm tra cập nhật bảng trang và lệnh quay về eret.
    • Test 2: Kiểm thử tính đúng đắn của đường ống superscalar khi xử lý chuỗi lệnh rẽ nhánh và xung đột phụ thuộc dữ liệu.
    • Test 3: Xác minh hoạt động của ICache/DCache trong các trường hợp Cache Hit và Cache Miss, kiểm tra cơ chế ghi Write-Through.
    • Test 4: Kiểm thử toàn diện sự phối hợp đồng thời giữa CPU đường ống 5 tầng, bộ nhớ đệm Cache và cơ chế dịch địa chỉ MMU; đối chiếu dữ liệu tập thanh ghi Register File giữa phần cứng RTL và mô hình tham chiếu.
  • Kết quả tổng hợp và thực thi phần cứng: Đánh giá các thông số phần cứng của khối riscv gồm tài nguyên logic (LUT, Flip-Flop, BRAM), phân tích báo cáo thời gian (Timing Analysis), xung nhịp đạt được và báo cáo công suất tiêu thụ (Power Report). So sánh các chỉ số đạt được với 2 công trình khóa luận trước đây.

Chương 5: Thiết kế Block Design trên Vivado với giao thức AXI4

Chương 5 hiện thực việc tích hợp vi xử lý vào hệ thống SoC hoàn chỉnh:

  • Giới thiệu giao thức bus công nghiệp ARM AMBA AXI4 (các kênh transaction đọc/ghi độc lập).
  • Thiết kế sơ đồ khối Block Design trên Vivado kết nối lõi RISC-V với các IP tiêu chuẩn của Xilinx: IP vi xử lý MicroBlaze, IP Local Memory và IP truyền thông nối tiếp AXI UART Lite.
  • Đánh giá kết quả tổng hợp, phân tích thời gian và mức độ tiêu thụ tài nguyên của toàn bộ thiết kế Block Design trên FPGA.

Chương 6: Kết luận và hướng phát triển

Chương 6 tổng kết toàn bộ kết quả đạt được của đề tài, phân tích các ưu điểm và hạn chế còn tồn đọng trong thiết kế, đồng thời đề xuất các định hướng nâng cấp hệ thống trong tương lai.


Kết quả và đóng góp

Kết quả kỹ thuật chính

  • Hiện thực thành công lõi vi xử lý RISC-V 32-bit RV32I hoàn chỉnh theo kiến trúc siêu vô hướng 2 luồng (2-issue superscalar) với đường ống 5 tầng.
  • Tích hợp thành công bộ điều khiển Cache kết hợp 4 đường (4-way Set-Associative) 2 cổng với giải thuật FIFO và chính sách Write-Through, đáp ứng việc nạp song song 2 lệnh trong 1 chu kỳ xung nhịp.
  • Tích hợp thành công đơn vị quản lý bộ nhớ MMU theo cơ chế phân trang 256B, hỗ trợ bảo vệ bộ nhớ và xử lý đầy đủ các ngắt/ngoại lệ lỗi trang (Page Fault) và ngoại lệ Syscall qua tập lệnh đặc biệt.
  • Tích hợp giao tiếp bus AXI4 kết nối hoàn chỉnh với các IP ngoại vi (MicroBlaze, Local Memory, AXI UART Lite) trong môi trường Xilinx Vivado.
  • Thiết kế được tổng hợp và thực thi thành công trên nền tảng FPGA, đạt tần số hoạt động mục tiêu 110 MHz, đảm bảo các ràng buộc thời gian (Timing constraints) và tối ưu mức tiêu thụ năng lượng.

Đóng góp của đề tài

  1. Đề xuất một giải pháp thiết kế phần cứng mở, hoàn chỉnh và có khả năng tùy biến cao cho các ứng dụng nhúng và thiết bị IoT, giúp loại bỏ chi phí bản quyền kiến trúc thương mại.
  2. Cung cấp kiến trúc phần cứng tích hợp đồng thời cả kỹ thuật siêu vô hướng (superscalar), bộ nhớ đệm Cache 4-way và đơn vị quản lý bộ nhớ MMU trên một lõi vi xử lý RISC-V 32-bit duy nhất.
  3. Xây dựng hệ thống kiểm thử toàn diện từ mức mô phỏng chu kỳ lệnh RTL đến mức tích hợp hệ thống trên chip SoC qua bus AXI4.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế của thiết kế

  • Tập lệnh: Thiết kế mới chỉ hiện thực tập lệnh số nguyên RV32I cơ sở, chưa hỗ trợ các phép toán số thực dấu chấm động (Floating-Point Instructions - mở rộng RV32F/RV32D).
  • Cấu trúc đường ống DCache: Đường ống mới chỉ cung cấp 1 cổng truy xuất bộ nhớ dữ liệu DCache, đòi hỏi khối issuing phải thực hiện trì hoãn (rollback) hoặc tráo đổi (swap) khi xảy ra 2 lệnh truy xuất bộ nhớ đồng thời.
  • Dung lượng trang MMU: Bảng trang MMU hiện có kích thước cố định là 256B, chưa hỗ trợ các cơ chế phân trang đa cấp linh hoạt với kích thước trang lớn hơn (như 4KB chuẩn).

Hướng nghiên cứu tiếp

  • Mở rộng tập lệnh để hỗ trợ các tập mở rộng chuẩn của RISC-V, đặc biệt là tập lệnh nhân/chia số nguyên (RV32M) và tập lệnh dấu chấm động (RV32F).
  • Nâng cấp cấu trúc DCache lên 2 cổng truy xuất độc lập để triệt tiêu hoàn toàn xung đột đường ống dữ liệu ở giai đoạn MEM.
  • Hoàn thiện trình điều khiển phần mềm và hỗ trợ nạp các hệ điều hành thời gian thực (RTOS) hoặc hệ điều hành mã nguồn mở Linux nhúng lên nền tảng vi xử lý RISC-V đã thiết kế.

Giá trị tham khảo

Khóa luận là tài liệu tham khảo có giá trị kỹ thuật cao đối với:

  • Sinh viên và học viên cao học ngành Kỹ thuật Máy tính, Kỹ thuật Điện tử - Viễn thông, Công nghệ Thông tin: Tham khảo phương pháp luận thiết kế hệ thống vi xử lý bằng ngôn ngữ Verilog HDL, kỹ thuật thiết kế đường ống (Pipelining), xử lý xung đột dữ liệu/nhánh, và phương pháp thiết kế Cache/MMU.
  • Kỹ sư thiết kế vi mạch (IC Design) và lập trình FPGA: Tham khảo kiến trúc RTL chi tiết của các khối chức năng (pc_scalar, issuing, forwarding_logic, cache_2port, MMU Controller) và quy trình tích hợp bus AMBA AXI4 trên môi trường Xilinx Vivado.
  • Các nhóm nghiên cứu về kiến trúc máy tính mở và IoT: Cung cấp mô hình tham chiếu thực nghiệm để phát triển các dòng vi điều khiển/vi xử lý chuyên dụng công suất thấp dựa trên RISC-V.

Câu hỏi thường gặp

1. Vi xử lý trong khóa luận được thiết kế theo kiến trúc tập lệnh nào và có hỗ trợ tính toán dấu chấm động không?

Vi xử lý được thiết kế theo kiến trúc tập lệnh mã nguồn mở RISC-V 32-bit cơ sở (RV32I) với 37 lệnh số nguyên 32-bit và tập 32 thanh ghi đa dụng ($x0–$x31). Thiết kế này chưa hỗ trợ các phép tính dấu chấm động (Floating-Point).

2. Bộ nhớ đệm (Cache) trong hệ thống được cấu hình theo kiến trúc nào và dùng giải thuật gì?

Bộ nhớ đệm được cấu hình theo kiến trúc kết hợp tập hợp 4 đường (4-way Set-Associative Cache). Hệ thống sử dụng giải thuật FIFO (First-In, First-Out) để cấp phát và thay thế khối, cùng chính sách Ghi trực tiếp (Write-Through) để cập nhật dữ liệu xuống bộ nhớ chính. Bộ nhớ đệm lệnh (ICache) hỗ trợ 2 cổng đọc để phục vụ kiến trúc superscalar phát 2 lệnh song song.

3. Đơn vị quản lý bộ nhớ (MMU) trong thiết kế hoạt động như thế nào và kích thước trang là bao nhiêu?

MMU hoạt động theo cơ chế bảng trang với kích thước trang cố định là 256 Bytes. MMU thực hiện dịch địa chỉ ảo từ CPU thành địa chỉ vật lý cho bộ nhớ chính và kiểm tra bit Valid. Nếu truy cập vào trang chưa được cấp quyền, MMU sẽ kích hoạt tín hiệu ngoại lệ lỗi trang (Page Fault Exception) để CPU nhảy đến chương trình xử lý ngắt.

4. CPU giao tiếp và cập nhật bảng trang MMU thông qua những thanh ghi và lệnh đặc biệt nào?

CPU giao tiếp với MMU qua 5 thanh ghi đặc biệt ($cause, $epc, $index, $entry, $context) và các tập lệnh đặc biệt gồm mfc0 (chuyển dữ liệu từ CP0 sang Register File), mtc0 (chuyển dữ liệu từ Register File sang CP0), syscall (ngoại lệ gọi hệ thống), eret (quay về từ ngoại lệ), và mtc0 r20, x0 (lệnh đặc biệt kích hoạt quyền ghi vào mục bảng trang của MMU).

5. Thiết kế đạt được tần số hoạt động bao nhiêu và được tích hợp với bus giao tiếp nào?

Khối IP vi xử lý được tổng hợp, thực thi trên nền tảng FPGA và đạt tần số hoạt động mục tiêu ổn định ở 110 MHz. Thiết kế được tích hợp chuẩn giao tiếp bus công nghiệp AXI4 để kết nối đồng bộ với các khối IP ngoại vi (MicroBlaze, Local Memory, AXI UART Lite) trong hệ thống Block Design trên Vivado.


Kết luận

Khóa luận đã hoàn thành xuất sắc mục tiêu nghiên cứu, thiết kế phần cứng và hiện thực thành công bộ vi xử lý RISC-V 32-bit siêu vô hướng 2 luồng tích hợp Cache kết hợp 4-way và đơn vị quản lý bộ nhớ MMU trên nền tảng FPGA. Thiết kế đạt tần số hoạt động 110 MHz, xử lý hoàn chỉnh các xung đột đường ống, đồng thời hỗ trợ đầy đủ cơ chế phân trang và quản lý ngoại lệ. Kết quả của đề tài đóng góp một giải pháp phần cứng mở, linh hoạt và tối ưu chi phí cho hệ sinh thái các thiết bị Internet vạn vật (IoT) và vi điện tử tại Việt Nam.