Bối cảnh và vấn đề nghiên cứu
Kiến trúc tập lệnh RISC-V (Reduced Instruction Set Computer V) là một chuẩn kiến trúc tập lệnh mở (Open-source ISA) phát triển trên các nguyên lý tính toán tập lệnh rút gọn, thu hút sự quan tâm lớn trong nghiên cứu và công nghiệp vi mạch. Tại thời điểm năm 2021, các nghiên cứu và triển khai bộ vi xử lý dựa trên RISC-V tại Việt Nam còn ở giai đoạn đầu, đặc biệt là các thiết kế kết hợp đồng thời cấu trúc đường ống (pipeline), chế độ đặc quyền giám sát (Supervisor Mode) và cơ chế xử lý ngoại lệ (exception/interrupt handling).
Tổng quan tình hình nghiên cứu được tác giả khảo sát gồm hai nhóm:
- Nghiên cứu quốc tế: Công trình của Sandro Pinto và Cesare Garlati (2019) nghiên cứu cơ chế xử lý ngoại lệ ở chế độ người dùng (User Mode Interrupt) trên hệ điều hành thời gian thực FreeRTOS cho bộ xử lý MultiZone nhằm bảo mật các thiết bị IoT sử dụng RISC-V, tuy nhiên chỉ giới hạn xử lý ở chế độ người dùng.
- Nghiên cứu trong nước: Đề tài của tác giả An Xuân Tuấn (2020) đã thiết kế bộ xử lý RISC-V 32-bit hỗ trợ chế độ giám sát, thực thi đúng 37 lệnh thuộc tập lệnh RV32I, các lệnh hệ thống và xử lý ngoại lệ. Điểm hạn chế chính của công trình này là kiến trúc dạng đơn chu kỳ (single-cycle), dẫn đến tần số hoạt động còn thấp và hiệu suất chưa tối ưu.
Mục tiêu nghiên cứu của khóa luận được xác định cụ thể như sau:
- Mục tiêu tổng quát: Thiết kế bộ xử lý 32-bit áp dụng kỹ thuật đường ống (Pipeline) 5 tầng dựa trên kiến trúc tập lệnh RISC-V, tích hợp các khối chức năng hỗ trợ chế độ đặc quyền giám sát và cơ chế xử lý ngoại lệ.
- Mục tiêu chi tiết:
- Mục tiêu 1: Thực thi 37 lệnh cơ bản thuộc tập lệnh RV32I và lệnh gọi môi trường
ECALL ở chế độ người dùng (User Mode); thực thi 37 lệnh RV32I, lệnh ECALL cùng 6 lệnh hệ thống truy xuất thanh ghi điều khiển và trạng thái (CSRRW, CSRRS, CSRRC, CSRRWI, CSRRSI, CSRRCI) và lệnh trả về từ chế độ giám sát (SRET) ở chế độ giám sát (Supervisor Mode).
- Mục tiêu 2: Xử lý đầy đủ 4 loại ngoại lệ gồm: ngắt phần mềm (software interrupt), ngắt bộ định thời (timer interrupt), lệnh chuyển chế độ (
ECALL) và các lệnh bất hợp pháp (illegal instructions). Bộ xử lý tự động chuyển sang chế độ giám sát khi có ngoại lệ và khôi phục trạng thái bằng lệnh SRET.
- Mục tiêu 3: Hiện thực và đánh giá thiết kế theo luồng thiết kế Altera FPGA Design Flow qua 3 giai đoạn: trước tổng hợp luận lý trên ModelSim, sau tổng hợp luận lý trên Quartus/ModelSim, và kiểm tra phần cứng thực tế trên kit FPGA Altera DE2; hướng tới mục tiêu tần số hoạt động 50 MHz.
- Mục tiêu 4: Phân tích, đánh giá và so sánh kết quả thực nghiệm với các công trình nghiên cứu tiền nhiệm.
Đối tượng nghiên cứu là vi kiến trúc bộ xử lý 32-bit pipeline hỗ trợ tập lệnh RV32I, kiến trúc đặc quyền chế độ giám sát và khối bẫy lỗi/xử lý ngoại lệ. Phạm vi nghiên cứu được thực hiện tại Khoa Kỹ thuật Máy tính, Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM từ ngày 08/03/2021 đến ngày 25/06/2021, giới hạn trong phạm vi hiện thực bộ xử lý hỗ trợ 2 chế độ đặc quyền (User Mode và Supervisor Mode) trên nền tảng phần cứng FPGA Altera DE2.
Cơ sở lý thuyết và phương pháp
Khóa luận xây dựng trên các nền tảng lý thuyết và chuẩn kỹ thuật sau:
- Kiến trúc tập lệnh RISC-V (RV32I): Tập lệnh 32-bit gồm 37 lệnh cơ bản phân chia theo 6 định dạng chuẩn: R-type (thao tác thanh ghi), I-type (tức thời và nạp dữ liệu), S-type (lưu dữ liệu), SB-type (rẽ nhánh có điều kiện), U-type (hằng số tức thời 20-bit cao), UJ-type (nhảy không điều kiện).
- Kiến trúc đặc quyền RISC-V: Chuẩn RISC-V định nghĩa 4 cấp độ đặc quyền: Chế độ người dùng (User Mode - UM), Chế độ giám sát (Supervisor Mode - SM), Chế độ siêu giám sát (Hypervisor Mode - HM), và Chế độ máy (Machine Mode - MM). Nghiên cứu tập trung vào mô hình 2 chế độ:
- User Mode (UM): Thực thi phần mềm ứng dụng thông qua Giao diện nhị phân ứng dụng (Application Binary Interface - ABI), không có quyền truy cập trực tiếp vào tài nguyên hệ thống hoặc thực thi lệnh đặc quyền.
- Supervisor Mode (SM): Thực thi nhân hệ điều hành thông qua Giao diện nhị phân chế độ giám sát (Supervisor Binary Interface - SBI) và Môi trường thực thi giám sát (Supervisor Execution Environment - SEE), quản lý tài nguyên phần cứng, định tuyến và xử lý ngoại lệ.
- Hệ thống thanh ghi điều khiển và trạng thái (CSR - Control and Status Registers): Quản lý trạng thái bẫy lỗi gồm:
sstatus (Supervisor Status Register), sie (Supervisor Interrupt Enable Register), stvec (Supervisor Trap Vector Base Address Register), sepc (Supervisor Exception Program Counter), scause (Supervisor Cause Register).
- Kỹ thuật đường ống (Pipeline 5 tầng): Chia chu kỳ thực thi lệnh thành 5 giai đoạn độc lập: Nạp lệnh (Instruction Fetch - IF), Giải mã lệnh và đọc thanh ghi (Instruction Decode - ID), Thực thi hoặc tính toán địa chỉ (Execution - EX), Truy xuất bộ nhớ dữ liệu (Memory - MEM), Ghi kết quả về thanh ghi (Write Back - WB).
- Cơ chế giải quyết xung đột (Hazards):
- Xung đột cấu trúc (Structural hazard): Phân tách bộ nhớ lệnh (Instruction Memory) và bộ nhớ dữ liệu (Data Memory) riêng biệt.
- Xung đột dữ liệu (Data hazard): Áp dụng kỹ thuật gửi vượt trước dữ liệu (Forwarding / Bypass) và chèn bước trì hoãn (Stall/Bubble) thông qua khối Hazard Detection Unit (HDU) đối với xung đột dạng Load-Use.
- Xung đột điều khiển (Control hazard): Áp dụng kỹ thuật dự đoán rẽ nhánh tĩnh (Static branch prediction: luôn dự đoán không rẽ nhánh - Predict branch not taken) kết hợp cơ chế xóa lệnh trong đường ống (Flush) khi rẽ nhánh thực sự xảy ra.
Phương pháp nghiên cứu bao gồm:
- Phương pháp nghiên cứu tài liệu: Tổng hợp đặc tả kiến trúc tập lệnh RISC-V và cơ chế hoạt động của các chế độ đặc quyền.
- Phương pháp thiết kế vi mạch: Quy trình Altera FPGA Design Flow; khối Control Unit được thiết kế theo cấu trúc giải mã dạng Case (tương đương bộ dồn kênh MUX) để tối ưu độ trễ logic trên FPGA.
- Phương pháp mô phỏng: Sử dụng ModelSim để mô phỏng chức năng và giản đồ dạng sóng (waveform); sử dụng bộ kiểm tra tự động chuẩn
riscv-tests (bộ test rv32ui).
- Phương pháp thực nghiệm: Biên dịch và tổng hợp mạch trên Intel Quartus, nạp cấu hình và đo kiểm tín hiệu thực tế trên kit FPGA Altera DE2.
- Nguồn dữ liệu: Bộ mã kiểm tra chuẩn
rv32ui, các kịch bản kiểm tra ngoại lệ tự xây dựng (test_1, test_2).
Thiết kế và triển khai hệ thống
Hệ thống bộ xử lý được thiết kế bao gồm Khối điều khiển (Control Unit), Đường dữ liệu (Datapath), Khối bộ định thời (Timer) và Khối xử lý ngoại lệ (Exception Handling).
| Nhóm chức năng |
Khối thành phần |
Đặc điểm kỹ thuật và vai trò |
| Đường dữ liệu cơ bản (Datapath) |
Program Counter (PC) |
Độ rộng 32-bit; lựa chọn địa chỉ kế tiếp giữa PC+4, địa chỉ nhảy (jump_target), địa chỉ bẫy lỗi (PC_handling_exc_addr) hoặc địa chỉ trả về (PC_return_addr). |
|
Instruction Memory & Data Memory |
Lưu trữ tập lệnh và dữ liệu độc lập; truy xuất dữ liệu 32-bit theo địa chỉ byte tương ứng. |
|
Register File |
Tập hợp 32 thanh ghi 32-bit (thanh ghi x0 cố định giá trị 0); 2 cổng đọc bất đồng bộ (RA1, RA2) và 1 cổng ghi đồng bộ theo cạnh lên xung clock (WA). |
|
Sign Extend |
Mở rộng dấu các trường tức thời (immediate) 32-bit tương ứng các định dạng lệnh I, S, SB, U, UJ, CSR. |
|
ALU & ALU Control |
ALU Control giải mã opcode, funct3, funct7 tạo tín hiệu 5-bit ALUsel điều khiển ALU thực thi các phép toán số học, logic, dịch bit và so sánh. |
| Đường ống và kiểm soát xung đột |
Thanh ghi Pipeline |
4 tầng thanh ghi trung gian: IF_ID, ID_EX, EX_MEM, MEM_WB truyền nhận dữ liệu và tín hiệu điều khiển giữa các chu kỳ. |
|
Hazard Detection Unit (HDU) |
Phát hiện xung đột Load-Use; tạo tín hiệu dừng PC (write_dis), dừng thanh ghi IF_ID và chèn bóng bóng khí (bubble) vào tầng ID_EX. |
|
Branch Forward & Bypass Units |
Gửi vượt trước kết quả từ tầng EX hoặc MEM về đầu vào ALU và khối so sánh rẽ nhánh ở tầng ID/EX. |
| Xử lý đặc quyền và ngoại lệ |
Khối Timer |
Bộ đếm 4-bit (giá trị 0 đến 15), hỗ trợ nạp giá trị đặt trước; kích hoạt tín hiệu inter_timer = 1 khi bộ đếm đạt giá trị 15. |
|
System Register File (CSR) |
Chứa các thanh ghi đặc quyền sstatus, sie, stvec, sepc, scause và các thanh ghi phụ trợ trạng thái (cur_mode_reg, ecall_reg, sret_from_call_reg). |
|
Reason Exception & PC Routing |
Khối xác định nguyên nhân ngoại lệ; khối PC_handling_exc_addr xuất địa chỉ xử lý ngắt theo chế độ Direct hoặc Vectored; khối PC_return_addr điều hướng phục hồi khi thực thi SRET. |
| Khối điều khiển |
Control Unit |
Giải mã lệnh theo cấu trúc MUX/Case tối ưu phần cứng FPGA; sinh toàn bộ tín hiệu điều khiển đọc/ghi, chuyển đổi chế độ User/Supervisor và xử lý Trap. |
Quy trình kiểm thử được triển khai đồng bộ qua 3 bước:
- Mô phỏng chức năng tiền tổng hợp (Pre-synthesis Simulation): Kiểm tra 37 lệnh RV32I bằng
riscv-tests trên ModelSim; kiểm tra dạng sóng khi xuất hiện ngắt Timer, ngắt phần mềm, lệnh ECALL, SRET, các lệnh CSR và lệnh không hợp lệ.
- Mô phỏng sau tổng hợp luận lý (Post-synthesis Simulation): Khảo sát trễ lan truyền, kiểm tra định thời (timing analysis) trên Intel Quartus và ModelSim, xác định tần số xung nhịp cực đại.
- Hiện thực hóa trên FPGA Altera DE2: Nạp file cấu hình vào chip FPGA; thực hiện kiểm tra
test_1 (thực thi chuỗi lệnh tính toán add, xuất kết quả thanh ghi x4, x10 ra hệ thống LED hiển thị) và test_2 (kích hoạt ngoại lệ ngắt, kiểm tra việc lưu vết địa chỉ sepc và chuyển chế độ).
Nội dung chính theo từng chương
Chương 1. Tổng quan đề tài
Chương 1 trình bày lý do chọn đề tài xuất phát từ tiềm năng của kiến trúc mở RISC-V và nhu cầu xây dựng các thiết kế vi xử lý hỗ trợ bảo mật, phân tầng đặc quyền tại Việt Nam. Tác giả tổng hợp các công trình của Sandro Pinto & Cesare Garlati (2019) và An Xuân Tuấn (2020), xác lập 4 mục tiêu nghiên cứu cụ thể, phân tích phương pháp tiếp cận và lập kế hoạch thực hiện gồm 7 giai đoạn trong 16 tuần (từ 08/03/2021 đến 25/06/2021).
Chương 2. Chế độ đặc quyền
Chương 2 tập trung trình bày cơ sở lý thuyết về 4 chế độ đặc quyền của kiến trúc RISC-V, chi tiết hóa mô hình phân tầng hoạt động 2 chế độ (User Mode và Supervisor Mode) thông qua các lớp giao diện ABI, SBI và SEE. Tác giả phân loại cấu trúc, mã hóa bit và chức năng của 37 lệnh thuộc tập lệnh RV32I, lệnh ECALL, lệnh SRET và 6 lệnh hệ thống truy xuất thanh ghi CSR. Tiếp theo, chương phân tích nguyên lý kỹ thuật đường ống (Pipeline) 5 tầng (IF, ID, EX, MEM, WB) và trình bày bản chất cùng giải pháp khắc phục cho 3 loại xung đột: xung đột cấu trúc, xung đột dữ liệu (kỹ thuật Forwarding, Stall), và xung đột điều khiển (Dự đoán nhánh tĩnh, Flush).
Chương 3. Thiết kế hệ thống
Chương 3 là nội dung trọng tâm mô tả chi tiết toàn bộ thiết kế kiến trúc phần cứng của bộ xử lý. Tác giả xây dựng sơ đồ khối tổng quát, mô tả danh sách chân tín hiệu vào/ra (độ rộng bit, chức năng) và bảng trạng thái hoạt động của từng khối:
- Khối Datapath cơ bản: Program Counter, Instruction Memory, Register File (32 thanh ghi 32-bit), Sign Extend, ALU Control (giải mã tín hiệu
ALUsel 5-bit cho từng phép toán), ALU, Data Memory, Branch Comparator và Branch Control.
- Khối hỗ trợ đường ống: Hazard Detection Unit (HDU), Branch Forward Unit, Bypass Unit, id_bypass và 4 tầng thanh ghi trung gian (IF_ID, ID_EX, EX_MEM, MEM_WB).
- Khối xử lý ngoại lệ và đặc quyền: Khối Timer 4-bit, khối xác định nguyên nhân ngoại lệ (Reason Exception), khối thanh ghi hệ thống System Register File (
sepc, scause, sstatus, sie, stvec), khối tính toán địa chỉ bẫy lỗi PC_handling_exc_addr, khối tính toán địa chỉ phục hồi PC_return_addr và khối Control Unit.
Chương 4. Mô phỏng và đánh giá kết quả
Chương 4 trình bày kết quả thực nghiệm qua 3 giai đoạn theo chuẩn Altera FPGA Design Flow:
- Giai đoạn trước tổng hợp: Kết quả chạy bộ kiểm tra tự động
rv32ui trên ModelSim đạt trạng thái pass toàn bộ 37 lệnh RV32I; kiểm tra dạng sóng thể hiện chính xác hoạt động chuyển đổi chế độ khi gặp ECALL, xử lý các lệnh CSR, ghi nhận mã nguyên nhân scause, kích hoạt ngắt định thời inter_timer và phục hồi về chế độ ban đầu qua SRET.
- Giai đoạn sau tổng hợp: Kiểm tra chức năng và phân tích định thời sau khi tổng hợp logic trên Quartus, xác định tần số hoạt động cực đại và độ trễ đường truyền.
- Giai đoạn hiện thực trên FPGA: Kiểm tra phần cứng trên kit Altera DE2 với bộ kiểm tra
test_1 (xác thực giá trị các thanh ghi tính toán x4, x10) và test_2 (xác thực quy trình bẫy lỗi và nhảy địa chỉ ngắt).
- Chương 4 khép lại bằng các bảng so sánh toàn diện giữa thiết kế của khóa luận với các nghiên cứu trước đó.
Kết luận và hướng phát triển
Phần kết luận đánh giá mức độ hoàn thành các mục tiêu đề ra: hoàn thiện thiết kế bộ xử lý RISC-V 32-bit pipeline 5 tầng hỗ trợ đầy đủ 2 chế độ User Mode và Supervisor Mode, thực thi 37 lệnh RV32I, các lệnh CSR, lệnh ECALL, SRET, xử lý 4 nhóm ngoại lệ và kiểm tra thành công trên kit FPGA DE2. Tác giả đồng thời đề xuất các định hướng nâng cấp trong tương lai.
Kết quả và đóng góp
Khóa luận đạt được các kết quả thực nghiệm và thông số kỹ thuật cụ thể:
- Thực thi chính xác 37 lệnh tập lệnh cơ bản RV32I, lệnh chuyển chế độ
ECALL, 6 lệnh truy xuất thanh ghi hệ thống (CSRRW, CSRRS, CSRRC, CSRRWI, CSRRSI, CSRRCI) và lệnh trả về từ ngoại lệ SRET.
- Xử lý thành công 4 loại ngoại lệ: ngắt phần mềm (software interrupt), ngắt bộ định thời (timer interrupt từ khối đếm 4-bit), lệnh chuyển chế độ (
ECALL), và các lệnh không hợp lệ (illegal instructions).
- Kiểm soát hoàn toàn các xung đột trong đường ống 5 tầng thông qua khối HDU, Forwarding Unit, Bypass Unit và cơ chế Flush khi rẽ nhánh.
- Hoàn thành quy trình kiểm thử 3 giai đoạn: mô phỏng tiền tổng hợp (ModelSim), phân tích sau tổng hợp (Quartus) và kiểm tra trên kit Altera DE2.
Bảng so sánh đối chiếu đặc tính kỹ thuật với các công trình liên quan:
| Tiêu chí kỹ thuật |
Nghiên cứu của Pinto & Garlati (2019) |
Nghiên cứu của An Xuân Tuấn (2020) |
Thiết kế của khóa luận (2021) |
| Kiến trúc tập lệnh |
RISC-V (MultiZone) |
RISC-V RV32I |
RISC-V RV32I |
| Kiến trúc thực thi |
Đa chu kỳ / Hệ thống nhúng |
Đơn chu kỳ (Single-cycle) |
Đường ống 5 tầng (5-stage Pipeline) |
| Tập lệnh hỗ trợ |
RV32I cơ bản |
37 lệnh RV32I + Lệnh hệ thống |
37 lệnh RV32I + ECALL + 6 lệnh CSR + SRET |
| Chế độ đặc quyền |
Hỗ trợ User Mode |
Hỗ trợ User Mode và Supervisor Mode |
Hỗ trợ User Mode và Supervisor Mode |
| Xử lý ngoại lệ |
Chỉ xử lý ngắt ở User Mode |
Xử lý ngoại lệ ở Supervisor Mode |
Xử lý ngắt/bẫy lỗi ở cả User Mode và Supervisor Mode |
| Khối kiểm soát Hazard |
Không áp dụng |
Không có (do thiết kế đơn chu kỳ) |
Tích hợp HDU, Forwarding, Bypass, Flush |
| Nền tảng kiểm thử |
Hệ điều hành FreeRTOS |
FPGA |
ModelSim, Quartus, Kit FPGA Altera DE2 |
Đóng góp chính của đề tài:
- Nâng cấp vi kiến trúc bộ xử lý RISC-V hỗ trợ chế độ giám sát từ dạng đơn chu kỳ lên cấu trúc đường ống 5 tầng, tối ưu hóa các khối chuyển tiếp dữ liệu (Forwarding) và phát hiện xung đột (HDU) để tăng tốc độ xử lý lệnh.
- Hiện thực hoàn chỉnh hệ thống thanh ghi CSR (
sstatus, sie, stvec, sepc, scause) và cấu trúc điều khiển dạng Case/MUX, cho phép bộ xử lý tiếp nhận và xử lý đầy đủ các ngoại lệ phần cứng và phần mềm, đáp ứng yêu cầu chuyển đổi ngữ cảnh an toàn giữa chế độ người dùng và chế độ giám sát.
Hạn chế và hướng nghiên cứu tiếp
Khóa luận còn một số hạn chế gắn liền với phạm vi triển khai:
- Bộ xử lý mới hỗ trợ 2 chế độ đặc quyền (User Mode và Supervisor Mode), chưa tích hợp đầy đủ chế độ máy (Machine Mode - mức đặc quyền cao nhất trong chuẩn RISC-V) và chế độ siêu giám sát (Hypervisor Mode).
- Chưa tích hợp khối quản lý bộ nhớ (Memory Management Unit - MMU, chuẩn Sv32) để hỗ trợ dịch địa chỉ ảo và bảo vệ phân trang bộ nhớ cho hệ điều hành đầy đủ như Linux.
- Chưa tích hợp hệ thống bộ nhớ đệm (Instruction Cache và Data Cache), các truy xuất bộ nhớ vẫn phụ thuộc vào bộ nhớ trên chip (on-chip memory).
- Khối Timer mới được thiết kế ở mức độ cơ bản với bộ đếm 4-bit (chu kỳ đếm 0–15).
Hướng phát triển tiếp theo được tác giả đề xuất:
- Mở rộng kiến trúc vi xử lý hỗ trợ đầy đủ 4 chế độ đặc quyền theo chuẩn RISC-V, đặc biệt là Machine Mode để thực thi Bootloader và Firmware.
- Nghiên cứu tích hợp khối MMU (chuẩn Sv32) và kiến trúc bộ nhớ đệm đa cấp (L1 Cache) nhằm sẵn sàng nạp và chạy nhân hệ điều hành Linux hoặc các hệ điều hành nhúng nâng cao.
- Nâng cấp cơ chế dự đoán rẽ nhánh từ dự đoán tĩnh sang các thuật toán dự đoán rẽ nhánh động (Dynamic Branch Prediction) để giảm thiểu số chu kỳ xung bị mất khi xảy ra xung đột điều khiển.
Giá trị tham khảo
Khóa luận là tài liệu tham khảo trong lĩnh vực kỹ thuật máy tính và thiết kế vi mạch:
- Đối tượng thụ hưởng: Sinh viên, học viên cao học và kỹ sư chuyên ngành Kỹ thuật Máy tính, Điện tử - Viễn thông, Công nghệ Bán dẫn và Thiết kế Vi mạch số (Digital IC Design).
- Nội dung tham khảo trọng tâm:
- Thiết kế chi tiết đường dữ liệu (Datapath) 5 tầng pipeline và phương pháp giải quyết các xung đột dữ liệu, xung đột điều khiển trên ngôn ngữ phần cứng.
- Sơ đồ mạch và nguyên lý hoạt động của các khối xử lý ngoại lệ, hệ thống thanh ghi CSR theo chuẩn đặc quyền RISC-V.
- Phương pháp xây dựng kịch bản kiểm tra toàn diện qua 3 giai đoạn: kiểm tra tự động trên ModelSim với
riscv-tests, tổng hợp trên Quartus và đo kiểm thực nghiệm trên kit FPGA Altera DE2.
Câu hỏi thường gặp
1. Bộ xử lý trong khóa luận thực thi được những lệnh nào?
Bộ xử lý thực thi đầy đủ 37 lệnh cơ bản thuộc tập lệnh RV32I (gồm các định dạng R, I, S, SB, U, UJ), lệnh chuyển môi trường ECALL, lệnh trả về từ ngoại lệ SRET, và 6 lệnh hệ thống truy xuất thanh ghi CSR (CSRRW, CSRRS, CSRRC, CSRRWI, CSRRSI, CSRRCI).
2. Các loại ngoại lệ (exception/interrupt) nào được bộ xử lý tiếp nhận và xử lý?
Hệ thống xử lý được 4 loại ngoại lệ: ngắt phần mềm (software interrupt), ngắt bộ định thời (timer interrupt), lệnh chuyển chế độ người dùng sang giám sát (ECALL), và các lệnh không hợp lệ (illegal instruction).
3. Khối Timer tạo ngắt định thời hoạt động theo nguyên lý nào?
Khối Timer sử dụng một bộ đếm 4-bit (giá trị từ 0 đến 15) hoạt động ở 2 chế độ: chế độ đếm tự động tăng dần theo từng xung clock và chế độ nạp giá trị ban đầu tùy chọn từ đầu vào data. Khi bộ đếm đạt giá trị cực đại là 15, tín hiệu inter_timer được kích hoạt lên mức 1 để gửi yêu cầu ngắt Timer Interrupt tới khối xử lý ngoại lệ.
4. Quy trình xử lý ngoại lệ sử dụng các thanh ghi CSR nào và diễn ra ra sao?
Khi xảy ra ngoại lệ, bộ xử lý tự động chuyển sang chế độ giám sát (Supervisor Mode). Thanh ghi sepc lưu lại địa chỉ lệnh bị gián đoạn; thanh ghi scause lưu mã nguyên nhân ngoại lệ; thanh ghi sstatus cập nhật các bit trạng thái ngắt (SIE, SPIE, SPP). Bộ xử lý nạp địa chỉ bẫy lỗi từ thanh ghi stvec (theo chế độ Direct hoặc Vectored) vào Program Counter để thực thi trình xử lý ngắt. Khi hoàn thành, lệnh SRET được gọi để khôi phục chế độ hoạt động và trả PC về giá trị lưu trong sepc.
5. Thiết kế được đánh giá qua những giai đoạn kiểm thử nào trên công cụ phần mềm và phần cứng?
Quá trình kiểm thử thực hiện theo 3 giai đoạn của Altera FPGA Design Flow: (1) Mô phỏng tiền tổng hợp trên ModelSim với bộ test tự động riscv-tests (rv32ui) và kiểm tra dạng sóng cho từng ngoại lệ; (2) Mô phỏng sau tổng hợp và phân tích định thời trên Intel Quartus/ModelSim; (3) Kiểm tra thực tế trên kit FPGA Altera DE2 thông qua 2 bộ test phần cứng (test_1 kiểm tra tính toán lệnh add, test_2 kiểm tra bẫy lỗi ngoại lệ).
Kết luận
Khóa luận của sinh viên Ngô Hoài Phong và Nguyễn Minh Tâm đã thiết kế và hiện thực thành công bộ xử lý 32-bit dựa trên kiến trúc tập lệnh RISC-V áp dụng kỹ thuật đường ống 5 tầng, hỗ trợ hai chế độ đặc quyền User Mode và Supervisor Mode. Thiết kế đã giải quyết hiệu quả các xung đột đường ống thông qua các khối HDU, Forwarding và Flush, đồng thời tích hợp hệ thống thanh ghi CSR hoàn chỉnh để xử lý trơn tru 4 nhóm ngoại lệ phần cứng và phần mềm. Toàn bộ hệ thống đã được kiểm chứng tính đúng đắn và hiệu năng thông qua quy trình 3 giai đoạn từ mô phỏng dạng sóng, kiểm tra tập lệnh chuẩn rv32ui đến hiện thực thực nghiệm trên kit FPGA Altera DE2.