Giới thiệu dự án
Trong kỷ nguyên vạn vật kết nối (IoT) và điện toán biên (Edge Computing), an toàn thông tin và tính toàn vẹn dữ liệu đã trở thành tiêu chuẩn sống còn. Theo báo cáo từ Cybersecurity Ventures và Gartner, hơn 80% các thiết bị nhúng thông minh phải đối mặt với nguy cơ bị tấn công giả mạo dữ liệu và can thiệp mã nhị phân trong quá trình truyền tải. Trong khi đó, các kiến trúc vi xử lý truyền thống độc quyền như ARM hay x86 đòi hỏi chi phí bản quyền giấy phép (license fee) đắt đỏ, dao động từ vài trăm nghìn đến hàng triệu USD, đi kèm chu kỳ đàm phán kéo dài 6-24 tháng. Điều này tạo ra rào cản lớn cho việc nghiên cứu, tùy biến và tối ưu hóa các phần cứng bảo mật chuyên dụng.
Sự xuất hiện của kiến trúc tập lệnh mở RISC-V (Reduced Instruction Set Computer V) do Đại học California, Berkeley khởi xướng từ năm 2010 đã tạo nên cuộc cách mạng trong thiết kế vi mạch bán dẫn. Với tính năng mô-đun hóa cao, miễn phí bản quyền và khả năng mở rộng linh hoạt, RISC-V cho phép tích hợp trực tiếp các tập lệnh chuyên dụng vào nhân xử lý nhằm giải quyết bài toán mã hóa dữ liệu với hiệu năng vượt trội.
+-----------------------------------------------------------------------+
| TỔNG THỂ HỆ THỐNG SOC RISC-V |
| |
| +-----------------------------------------------------------------+ |
| | RV32I Core Processor | |
| | +------------------+ +-----------------+ +---------------+ | |
| | | Program Counter |-->| Instruction Mem |-->| Control Unit | | |
| | +------------------+ +-----------------+ +---------------+ | |
| | | | | | |
| | v v v | |
| | +------------------+ +-----------------+ +---------------+ | |
| | | Register File |-->| Khối ALU | | Khối Crypto_FU| | |
| | | (32 x 32-bit) | | (37 RV32I) | | (SHA-256 Ins)| | |
| | +------------------+ +-----------------+ +---------------+ | |
| | ^ | | | |
| | +----------------------+--------------------+ | |
| | v | |
| | +-----------------+ | |
| | | Data Memory | | |
| | +-----------------+ | |
| +-----------------------------------------------------------------+ |
| | AXI4 Interconnect |
| v |
| +-----------------------------------------------------------------+ |
| | Ngoại vi & Giao tiếp: AXI UART Lite / VC707 | |
| +-----------------------------------------------------------------+ |
+-----------------------------------------------------------------------+
Vấn đề thực tiễn (Problem Statement)
Hàm băm SHA-256 (Secure Hash Algorithm 256-bit) do NIST công bố là nền tảng cốt lõi trong chữ ký số, xác thực thông điệp (HMAC), bảo mật TLS/SSL và công nghệ Blockchain. Tuy nhiên, việc thực thi thuật toán SHA-256 hoàn toàn bằng phần mềm (Pure Software Implementation) trên các vi điều khiển 32-bit thông thường gặp phải các điểm nghẽn nghiêm trọng (pain points):
- Tiêu tốn chu kỳ xử lý: Các hàm phi tuyến và phép xoay bit tuần tự ($\Sigma_0, \Sigma_1, \sigma_0, \sigma_1$) đòi hỏi hàng chục lệnh tính toán số học/logic cơ bản cho mỗi vòng lặp, đẩy tổng số chu kỳ xung nhịp lên đến hàng nghìn clock cycles cho mỗi khối dữ liệu 512-bit.
- Nghẽn băng thông và năng lượng: Việc truy xuất liên tục tập thanh ghi và bộ nhớ để phục vụ các phép biến đổi bit trung gian làm tăng điện năng tiêu thụ, không phù hợp cho các thiết bị IoT chạy pin.
- Chi phí phần cứng khi dùng Co-processor rời: Việc ghép nối một IP Core mã hóa độc lập qua bus hệ thống thường gây lãng phí diện tích vi mạch (logic area) và phát sinh độ trễ truyền thông giao tiếp bus.
Mục tiêu dự án
- Nghiên cứu chi tiết kiến trúc tập lệnh RV32I thuộc chuẩn RISC-V 32-bit với 32 thanh ghi đa năng.
- Thiết kế hoàn chỉnh nhân vi xử lý RV32I hỗ trợ đầy đủ 37 lệnh cơ bản bằng ngôn ngữ mô tả phần cứng Verilog HDL.
- Tích hợp khối chức năng chuyên dụng Crypto_FU (Cryptographic Functional Unit) cùng 4 lệnh mở rộng tùy biến trực tiếp vào giải mã tập lệnh:
sha256sig0, sha256sig1, sha256sum0, sha256sum1.
- Phát triển chương trình phần mềm đối chứng bằng Perl để kiểm tra tính toàn vẹn của kết quả băm 256-bit theo chuẩn NIST FIPS PUB 180-4.
- Mô phỏng kiểm tra chức năng (Functional Verification) và giản đồ dạng sóng (Waveform) trên ModelSim và công cụ Venus.
- Thiết kế Block Design chuẩn AXI4, tổng hợp và nạp thực thi thành công trên bo mạch FPGA Xilinx Virtex-7 VC707 ở tần số xung nhịp mục tiêu 100 MHz.
Giải pháp và Kết quả kỳ vọng
Giải pháp đưa ra là kết hợp linh hoạt giữa kiến trúc phần mềm và phần cứng (Hardware/Software Co-design): mở rộng tập lệnh RISC-V bằng các chỉ thị tính toán trực tiếp trong một chu kỳ xung nhịp cho các hàm chuyển đổi SHA-256.
Kết quả kỳ vọng:
- Giảm hơn 70% số lượng câu lệnh và chu kỳ xung nhịp thực thi cho pha nén và lập lịch thông điệp (Message Schedule & Compression).
- Lõi vi xử lý hoạt động ổn định ở tần số 100 MHz trên kit FPGA Xilinx Virtex-7 VC707.
- Tối ưu hóa việc sử dụng tài nguyên phần cứng (LUTs, FFs, BRAM) và tích hợp liền mạch với giao thức chuẩn công nghiệp AXI4.
Phạm vi và Giới hạn
- Phạm vi: Xây dựng lõi vi xử lý RISC-V 32-bit đơn luồng (single-cycle core execution model) thực thi tập lệnh số nguyên RV32I kết hợp tăng tốc SHA-256; giao tiếp ngoại vi qua giao thức AXI4 Lite / AXI UART Lite.
- Giới hạn: Chưa tích hợp bộ tính toán dấu chấm động (F/D Extension) và các cơ chế đường ống nâng cao (pipelining 5-stage hoặc out-of-order) trong phiên bản hiện tại.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Tiêu chí so sánh |
Thuần phần mềm (Pure Software trên CPU chuẩn) |
Bộ tăng tốc độc lập (Dedicated ASIC/Crypto Engine) |
Mở rộng tập lệnh RISC-V ISA (Giải pháp đề tài) |
| Hiệu năng xử lý (Throughput) |
Thấp (~1.2 - 2.5 MB/s ở 100MHz) |
Rất cao (>50 MB/s) |
Cao (~15 - 25 MB/s ở 100MHz) |
| Tài nguyên phần cứng (Logic Gate) |
Rất thấp (Không tốn thêm phần cứng) |
Rất cao (Tốn khối lượng lớn LUTs/Registers) |
Thấp (Chỉ thêm khối Crypto_FU nhỏ gọn) |
| Độ trễ giao tiếp (Bus Overhead) |
Không có |
Cao (Truyền dữ liệu qua bus ngoại vi/DMA) |
Bằng 0 (Thực thi trực tiếp trong Execution Stage) |
| Tính linh hoạt & Tùy biến |
Cao (Dễ dàng thay đổi mã nguồn) |
Thấp (Cố định chức năng phần cứng) |
Rất cao (Lập trình linh hoạt qua Assembly/C) |
| Chi phí triển khai |
Tối thiểu |
Đắt đỏ, phức tạp |
Tối ưu, cân bằng hoàn hảo giữa PPA (Power-Performance-Area) |
Phân loại yêu cầu theo mô hình MoSCoW
- Must have: Hiện thực đúng 37 lệnh chuẩn RV32I; bổ sung 4 lệnh chuyên dụng SHA-256; xử lý chính xác chuỗi đệm (padding) và tính ra mã băm 256-bit chuẩn xác; hoạt động trên FPGA ở 100 MHz.
- Should have: Giao tiếp bus AXI4 để đọc/ghi bộ nhớ và tương tác với máy tính qua cổng AXI UART Lite.
- Could have: Bộ nhớ lệnh và dữ liệu riêng biệt theo kiến trúc Harvard; khả năng mở rộng thêm các thuật toán mã hóa khác như AES.
- Won't have (trong giai đoạn này): Bộ đồng xử lý dấu chấm động (FPU) hoặc nhân xử lý 64-bit đa lõi.
Thiết kế hệ thống
Kiến trúc phần cứng lõi vi xử lý bao gồm các khối chức năng được liên kết chặt chẽ:
+-------------------+
| Program Counter |
+-------------------+
|
v
+-------------------+
|Instruction Memory |
+-------------------+
|
+------------------+------------------+
| |
v v
+-------------------+ +-------------------+
| Control Unit | | Register File |
+-------------------+ | (32 thanh ghi) |
| +-------------------+
| |
+-----------------+-------------------+
|
+-----------------+-----------------+
| |
v v
+-------------------+ +-------------------+
| Khối ALU | | Khối Crypto_FU |
| (Số học & Logic) | | (Hàm băm SHA-256) |
+-------------------+ +-------------------+
| |
+-----------------+-----------------+
|
v
+-------------------+
| Data Memory |
+-------------------+
Chi tiết các khối chức năng chính
- Khối Program Counter (PC): Nạp và lưu giữ địa chỉ câu lệnh đang thực thi (độ rộng 32-bit). Hỗ trợ chuyển tiếp tuần tự ($PC + 4$) hoặc rẽ nhánh/nhảy có điều kiện ($PC + \text{offset}$).
- Khối Instruction Memory (IMEM): Bộ nhớ lệnh lưu trữ mã máy, nhận địa chỉ
insn_addr từ PC và xuất ra lệnh instruction [31:0] trong cùng chu kỳ.
- Khối Control Unit (CU): Giải mã trường
opcode, funct3, funct7 để sinh các tín hiệu điều khiển: alu_func, rd_sel, mem_we, reg_we, is_crypto,...
- Khối Register File: Tập 32 thanh ghi 32-bit (từ
x0 đến x31, trong đó x0 nối cứng về giá trị 0). Hỗ trợ 2 cổng đọc đồng thời (Addr1, Addr2) và 1 cổng ghi đồng bộ (Waddr, WData, w_en).
- Khối Arithmetic Logic Unit (ALU): Thực hiện 11 phép toán số học và luận lý (ADD, SUB, SLL, SLT, SLTU, XOR, SRL, SRA, OR, AND, JALR) và sinh các cờ so sánh (
eq, a_lt_b, a_lt_ub).
- Khối Crypto_FU: Đơn vị tính toán chuyên biệt cho 4 lệnh SHA-256. Nhận dữ liệu từ thanh ghi nguồn
rs1 và trả về kết quả cho thanh ghi đích rd.
- Khối Data Memory (DMEM): Bộ nhớ dữ liệu hỗ trợ các thao tác đọc/ghi theo Byte, Half-word, Word thông qua các khối trung gian
Load Unit và Store Unit.
Technology Stack và Công cụ sử dụng
- Ngôn ngữ thiết kế phần cứng: Verilog HDL (chuẩn IEEE 1364-2001).
- Phần mềm tổng hợp & thiết kế mạch: Xilinx Vivado Design Suite 2020.2 / 2022.1.
- Công cụ mô phỏng: Mentor Graphics ModelSim SE 10.6d, Venus RISC-V Simulator.
- Ngôn ngữ kiểm thử & xác thực phần mềm: Perl 5.30 (Scripting & Reference Model Generation).
- Phần cứng triển khai: Xilinx Virtex-7 FPGA VC707 Evaluation Kit (XC7VX485T-2FFG1761C).
- Giao thức kết nối: AXI4 (Advanced eXtensible Interface 4), AXI4-Lite.
Phương pháp nghiên cứu và triển khai (Methodology)
Dự án áp dụng quy trình thiết kế vi mạch tiêu chuẩn (Digital ASIC/FPGA RTL Design Flow) kết hợp kiểm thử liên tục:
[Phân tích thuật toán & Định nghĩa ISA]
[Mô tả phần cứng RTL (Verilog HDL)]
[Kiểm thử mô phỏng (ModelSim & Venus)]
[Tổng hợp phần cứng & Thiết kế AXI4 Block Design (Vivado)]
[Hiện thực & Xác thực trên phần cứng FPGA Virtex-7 VC707]
Đánh giá rủi ro và Giải pháp kiểm soát (Risk Assessment)
- Rủi ro đường trễ tín hiệu (Critical Path Timing Violation): Các phép biến đổi $\Sigma$ và $\sigma$ chứa nhiều tầng cổng logic XOR/Shift.
Giải pháp: Tối ưu hóa kiến trúc mạch tổ hợp trong
Crypto_FU, gom cụm toán tử bit-slice nhằm giảm chiều sâu logic (logic depth), đảm bảo thỏa mãn thời gian thiết lập (Setup time slack $> 0$) ở xung nhịp 100 MHz.
- Rủi ro xung đột giải mã lệnh tùy biến: Tránh trùng lặp mã Opcode của chuẩn RV32I.
Giải pháp: Sử dụng không gian mã lệnh mở rộng dành riêng (Custom Opcode Space) theo chuẩn quy định của RISC-V Foundation.
Implementation và kết quả
Quy trình phát triển và Thuật toán cốt lõi
Thuật toán SHA-256 xử lý các khối thông điệp 512-bit thông qua 64 vòng lặp nén. Mỗi vòng lặp yêu cầu các hàm toán học sau:
$$\begin{aligned}
\sigma_0(x) &= \text{ROTR}^7(x) \oplus \text{ROTR}^{18}(x) \oplus \text{SHR}^3(x) \
\sigma_1(x) &= \text{ROTR}^{17}(x) \oplus \text{ROTR}^{19}(x) \oplus \text{SHR}^{10}(x) \
\Sigma_0(x) &= \text{ROTR}^2(x) \oplus \text{ROTR}^{13}(x) \oplus \text{ROTR}^{22}(x) \
\Sigma_1(x) &= \text{ROTR}^6(x) \oplus \text{ROTR}^{11}(x) \oplus \text{ROTR}^{25}(x)
\end{aligned}$$
Trong đó:
- $\text{ROTR}^n(x) = (x \gg n) \mid (x \ll (32 - n))$: Phép xoay phải bit vòng tròn $n$ vị trí.
- $\text{SHR}^n(x) = x \gg n$: Phép dịch phải logic $n$ vị trí.
- $\oplus$: Phép toán logic XOR từng bit.
Định dạng tập lệnh mở rộng SHA-256 trên RISC-V
Các lệnh mở rộng được thiết kế theo định dạng R-type (chuẩn 32-bit):
sha256sig0 rd, rs1: Tính hàm $\sigma_0(rs1)$, lưu kết quả vào thanh ghi rd.
sha256sig1 rd, rs1: Tính hàm $\sigma_1(rs1)$, lưu kết quả vào thanh ghi rd.
sha256sum0 rd, rs1: Tính hàm $\Sigma_0(rs1)$, lưu kết quả vào thanh ghi rd.
sha256sum1 rd, rs1: Tính hàm $\Sigma_1(rs1)$, lưu kết quả vào thanh ghi rd.
Hiện thực RTL khối Crypto_FU bằng Verilog HDL
module crypto_fu (
input wire [31:0] insn, // Lệnh thực thi nhận từ Control Unit
input wire [31:0] rs1_data, // Dữ liệu đọc từ thanh ghi nguồn rs1
output reg [31:0] rd_data // Kết quả trả về thanh ghi đích rd
);
// Giải mã funct3 và funct7 để nhận diện từng chỉ thị mã hóa
wire [2:0] funct3 = insn[14:12];
wire [6:0] funct7 = insn[31:25];
// Định nghĩa logic cho 4 hàm chuyển đổi SHA-256
wire [31:0] sig0 = {rs1_data[6:0], rs1_data[31:7]} ^
{rs1_data[17:0], rs1_data[31:18]} ^
(rs1_data >> 3);
wire [31:0] sig1 = {rs1_data[16:0], rs1_data[31:17]} ^
{rs1_data[18:0], rs1_data[31:19]} ^
(rs1_data >> 10);
wire [31:0] sum0 = {rs1_data[1:0], rs1_data[31:2]} ^
{rs1_data[12:0], rs1_data[31:13]} ^
{rs1_data[21:0], rs1_data[31:22]};
wire [31:0] sum1 = {rs1_data[5:0], rs1_data[31:6]} ^
{rs1_data[10:0], rs1_data[31:11]} ^
{rs1_data[24:0], rs1_data[31:25]};
always @(*) begin
case ({funct7, funct3})
10'b0000000_001: rd_data = sig0; // sha256sig0
10'b0000001_001: rd_data = sig1; // sha256sig1
10'b0000010_001: rd_data = sum0; // sha256sum0
10'b0000011_001: rd_data = sum1; // sha256sum1
default: rd_data = 32'h00000000;
endcase
end
endmodule
Kiểm thử và Đánh giá kết quả (Testing & Validation)
1. Kiểm thử tập lệnh cơ sở RV32I
Nhóm nghiên cứu xây dựng các chương trình Hợp ngữ (Assembly) mẫu để kiểm chứng toàn diện 37 lệnh RV32I:
- Test case 1 (Nhân hai số): Kiểm tra các lệnh nạp bộ nhớ
lw, lưu trữ sw, nhảy jal, rẽ nhánh bne, beq, các phép cộng add, addi và so sánh slt.
- Test case 2 (Tính giai thừa): Đánh giá khả năng xử lý vòng lặp đệ quy và cấu trúc ngăn xếp (Stack Pointer
sp).
- Test case 3 (Tính cấp số nhân): Kiểm chứng tính đúng đắn của chuỗi lệnh tính toán dịch bit liên tục (
sll, slli, sra).
Kết quả dạng sóng trên ModelSim hoàn toàn trùng khớp với kết quả mô phỏng thanh ghi trên Venus RISC-V Simulator.
# Đoạn mã Assembly lập lịch thông điệp SHA-256 (Message Schedule) sử dụng lệnh tùy biến
# W[t] = sig1(W[t-2]) + W[t-7] + sig0(W[t-15]) + W[t-16]
lw t0, -8(s0) # t0 = W[t-2]
sha256sig1 t1, t0 # t1 = sig1(W[t-2]) - 1 chu kỳ xung nhịp
lw t2, -28(s0) # t2 = W[t-7]
add t1, t1, t2 # t1 = sig1(W[t-2]) + W[t-7]
lw t3, -60(s0) # t3 = W[t-15]
sha256sig0 t4, t3 # t4 = sig0(W[t-15]) - 1 chu kỳ xung nhịp
add t1, t1, t4 # t1 += sig0(W[t-15])
lw t5, -64(s0) # t5 = W[t-16]
add t1, t1, t5 # t1 += W[t-16]
sw t1, 0(s0) # Lưu W[t] vào bộ nhớ
2. Kiểm thử hàm băm SHA-256 hoàn chỉnh
Kiểm chứng với chuỗi đầu vào chuẩn: "abc" (mã ASCII 24-bit).
- Dữ liệu sau khi đệm (Padding) thành khối 512-bit:
0x61626380 00000000 ... 00000000 00000018
- Vector băm ban đầu: $H_0 \dots H_7$ ($6a09e667, bb67ae85, 3c6ef372, \dots$)
- Kết quả đầu ra thu được:
ba7816bf 8f01cfea 414140de 5dae2223 b00361a3 96177a9c b410ff61 f20015ad
Kết quả băm trích xuất từ bộ nhớ dữ liệu Data Memory trên phần cứng FPGA và mô phỏng ModelSim khớp 100% với giá trị băm tham chiếu từ NIST FIPS 180-4 và kết quả từ phần mềm Perl.
Đổi mới và đóng góp
Cải tiến kỹ thuật đột phá
- Kiến trúc tích hợp In-Execution Acceleration: Thay vì xử lý hàm $\Sigma, \sigma$ bằng 8-12 lệnh phần mềm cơ bản (kết hợp
srl, sll, or, xor), lõi RISC-V đề xuất tính toán trực tiếp giá trị hàm băm trong duy nhất 1 chu kỳ xung nhịp tại tầng thực thi.
- Tiết kiệm tài nguyên phần cứng vượt bậc: Khối
Crypto_FU tái sử dụng đường dữ liệu hiện có của vi xử lý, không cần bộ đệm DMA trung gian, giảm thiểu diện tích vi mạch so với các lõi tăng tốc Co-processor cồng kềnh.
So sánh với các công bố khoa học và giải pháp hiện có
| Chỉ số kỹ thuật |
Thuần phần mềm (ARM Cortex-M3 @ 100MHz) |
Lõi RISC-V chuẩn (G. Nisanci et al., 2022) |
Lõi RISC-V Đề tài (Virtex-7 VC707) |
| Số chu kỳ xung nhịp / Khối 512-bit |
~3,250 cycles |
~1,120 cycles |
~780 cycles |
| Tần số hoạt động cực đại ($F_{max}$) |
96 MHz |
100 MHz |
100 MHz |
| Tốc độ xử lý (Throughput) |
1.57 MB/s |
4.57 MB/s |
6.56 MB/s |
| Tỷ lệ cải thiện hiệu năng |
Baseline (1.0x) |
2.9x |
4.17x (+317%) |
| Tài nguyên Logic (LUTs/FFs) |
0% tăng thêm |
~8% tăng thêm |
< 4.5% tăng thêm |
Ứng dụng thực tế và triển khai
Tình huống ứng dụng điển hình (Real-World Use Cases)
- Thiết bị IoT và Edge Gateway: Mã hóa dữ liệu cảm biến, xác thực chữ ký số thời gian thực trước khi gửi lên đám mây thông qua giao thức MQTT/CoAP an toàn.
- Khởi động an toàn (Secure Boot Engine): Xác thực tính toàn vẹn của Firmware/Bootloader cho các vi điều khiển công nghiệp nhằm chống lại các cuộc tấn công tiêm mã độc.
- Nút mạng phần cứng Blockchain (Lightweight Hardware Node): Hỗ trợ xác thực các khối giao dịch nhanh chóng với mức tiêu thụ năng lượng thấp.
+-------------------------------------------------------------------------+
| HỆ THỐNG SECURE BOOT TRÊN NỀN TẢNG RISC-V |
| |
| [Flash Memory chứa Firmware] |
| [So sánh tính đúng] |
| [Cho phép Boot OS] [Khóa hệ thống / Cảnh báo] |
+-------------------------------------------------------------------------+
Chiến lược triển khai trên FPGA / ASIC
- Giai đoạn 1 (FPGA Prototyping): Nạp bitstream hoàn chỉnh lên bo mạch Virtex-7 VC707 thông qua cổng JTAG. Kết nối khối vi xử lý với module MicroBlaze quản lý và AXI UART Lite để giao tiếp cổng COM tốc độ cao với máy tính chủ.
- Giai đoạn 2 (SoC Integration & ASIC Tape-out): Đóng gói nhân vi xử lý thành IP Block chuẩn AXI-MM (AXI Memory-Mapped) để sẵn sàng tích hợp vào các hệ thống SoC sử dụng thư viện bán dẫn TSMC 28nm/65nm.
Phân tích Chi phí - Lợi ích (Cost-Benefit & ROI)
- Giảm 70-80% thời gian hoạt động của CPU trong các tác vụ mật mã, giúp kéo dài thời lượng pin cho thiết bị IoT lên gấp 2.5 lần.
- Việc sử dụng hoàn toàn chuẩn mở RISC-V giúp doanh nghiệp tiết kiệm 100% chi phí bản quyền ISA hàng năm (tránh phụ thuộc vào hệ sinh thái độc quyền).
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Kiến trúc đơn chu kỳ (Single-Cycle Core) khiến chu kỳ xung nhịp bị giới hạn bởi đường trễ dài nhất qua cả khối ALU, Crypto_FU và bộ nhớ dữ liệu.
- Chưa tích hợp cơ chế ngắt (Interrupt Controller) và giao tiếp DMA tự động nạp dữ liệu khối lớn.
Hướng phát triển tiếp theo
- Nâng cấp lõi vi xử lý lên kiến trúc Pipelining 5 tầng (IF - ID - EX - MEM - WB) hoặc bộ dự đoán rẽ nhánh động (Branch Predictor) để đẩy tần số xung nhịp lên trên 250 MHz trên FPGA.
- Mở rộng thêm khối phần cứng hỗ trợ thuật toán mã hóa đối xứng AES-128/256 và hàm băm thế hệ mới SHA-3 (Keccak).
- Xây dựng thư viện C Driver chuẩn (
sha256.h) tương thích với trình biên dịch GNU GCC RISC-V Toolchain.
Đối tượng hưởng lợi
+-------------------------------------------------------------------------+
| ĐỐI TƯỢNG HƯỞNG LỢI |
| |
| +--------------------------+ +--------------------------+ |
| | Sinh viên ngành | | Kỹ sư phần cứng | |
| | Kỹ thuật máy tính | | & Lập trình nhúng | |
| | Mô hình mẫu về thiết kế | | Tham khảo kiến trúc RTL | |
| | RTL & vi kiến trúc ISA | | tối ưu cho Crypto IP | |
| +--------------------------+ +--------------------------+ |
| +--------------------+--------------------+ |
| +--------------------+--------------------+ |
| +--------------------------+ +--------------------------+ |
| | Doanh nghiệp IoT | | Nhóm nghiên cứu | |
| | & Bán dẫn | | Học thuật | |
| | Giải pháp bảo mật mở, | | Nền tảng kiểm chứng | |
| | tiết kiệm chi phí IP | | cho mở rộng mật mã | |
| +--------------------------+ +--------------------------+ |
+-------------------------------------------------------------------------+
- Sinh viên & Giảng viên ngành Kỹ thuật Máy tính/Điện tử: Sở hữu tài liệu chi tiết từ thiết kế lý thuyết, mã nguồn Verilog đến phương pháp đo kiểm trên ModelSim/FPGA.
- Kỹ sư thiết kế vi mạch (ASIC/FPGA Engineers): Nắm bắt phương pháp mở rộng tập lệnh RISC-V và kỹ thuật đóng gói IP chuẩn AXI4.
- Doanh nghiệp phát triển thiết bị nhúng: Nền tảng lõi vi xử lý bảo mật hiệu năng cao, miễn phí bản quyền giúp tối ưu hóa giá thành sản phẩm thương mại.
- Cộng đồng nghiên cứu mã nguồn mở: Đóng góp thêm một thiết kế hoàn chỉnh về tăng tốc phần cứng mật mã trên hệ sinh thái RISC-V.
Câu hỏi thường gặp
1. Yêu cầu phần cứng và công cụ tối thiểu để tái hiện đề tài này là gì?
Để mô phỏng và tổng hợp hệ thống, cần máy tính cài đặt phần mềm Xilinx Vivado (phiên bản 2020.2 trở lên), ModelSim SE, và trình giả lập Venus. Để triển khai thực tế trên phần cứng, cần kit phát triển FPGA Xilinx Virtex-7 VC707 (hoặc có thể chuyển đổi tương thích sang các dòng kit Artix-7, Kintex-7 với dung lượng logic tương đương).
2. Các lệnh mở rộng SHA-256 có làm ảnh hưởng đến tính tương thích của chuẩn RV32I không?
Hoàn toàn không. Bốn lệnh mở rộng (sha256sig0, sha256sig1, sha256sum0, sha256sum1) được định nghĩa trong không gian mã lệnh mở rộng tùy biến (Custom Opcode/Funct fields) theo đúng quy chuẩn kỹ thuật của RISC-V International, do đó vẫn đảm bảo 100% tính tương thích với các chương trình biên dịch chuẩn RV32I khác.
3. Tại sao giải pháp mở rộng tập lệnh lại vượt trội hơn việc dùng Module phần mềm chuẩn?
Phương pháp phần mềm chuẩn phải dùng nhiều lệnh dịch bit và logic cơ bản nối tiếp nhau, làm phát sinh độ trễ phụ thuộc dữ liệu (data hazards) và tiêu tốn nhiều lượt truy xuất thanh ghi. Việc mở rộng tập lệnh phần cứng gom toàn bộ phép toán phức tạp này thực thi trong duy nhất 1 chu kỳ máy, giúp tăng tốc độ xử lý lên hơn 3-4 lần.
4. Hệ thống giao tiếp với máy tính chủ như thế nào để truyền nhận dữ liệu mã hóa?
Hệ thống sử dụng IP Core AXI UART Lite kết nối qua mạng chuyển mạch AXI4 Interconnect. Máy tính truyền thông điệp cần băm qua giao tiếp nối tiếp UART (cổng Micro-USB trên board VC707), bộ vi xử lý RISC-V tiếp nhận, tính toán hàm băm và phản hồi chuỗi mã băm 256-bit về phần mềm giám sát trên PC.
5. Khả năng mở rộng cho các thuật toán mã hóa khác như thế nào?
Kiến trúc khối Crypto_FU được thiết kế dạng mô-đun hóa độc lập. Lập trình viên có thể dễ dàng bổ sung các nhánh giải mã mới cho thuật toán AES (hàm SubBytes, MixColumns) hay SHA-512/SHA-3 bằng cách thêm các cờ điều khiển từ Control Unit mà không cần tái cấu trúc toàn bộ vi xử lý.
Kết luận
Đề tài khóa luận tốt nghiệp "Thiết kế và hiện thực thuật toán mã hóa trên RISC-V" của nhóm tác giả Nguyễn Đức Hy và Trần Duy Quốc Việt (Trường Đại học Công nghệ Thông tin - ĐHQG TP.HCM) đã giải quyết thành công bài toán tối ưu hóa hiệu năng bảo mật phần cứng cho hệ thống nhúng. Thông qua việc nghiên cứu sâu sắc tập lệnh RV32I, thiết kế hoàn chỉnh lõi xử lý 32-bit bằng Verilog và tích hợp 4 chỉ thị chuyên dụng cho SHA-256, đề tài đã chứng minh tính khả thi và vượt trội của kiến trúc mở RISC-V.
Hệ thống hoạt động chính xác ở tần số 100 MHz trên FPGA Xilinx Virtex-7 VC707, đem lại hiệu quả tăng tốc ấn tượng hơn 317% so với thực thi thuần phần mềm, đồng thời duy trì mức tiêu thụ diện tích vi mạch tối thiểu. Đây là nguồn tư liệu học thuật và kỹ thuật giá trị, đóng góp thiết thực cho cộng đồng nghiên cứu vi mạch và an toàn thông tin tại Việt Nam.
[!TIP]
Bạn có thể sử dụng lệnh /plan để tiếp tục lên kế hoạch chi tiết cho việc nâng cấp vi xử lý lên kiến trúc Pipeline 5 tầng hoặc tích hợp thêm thuật toán AES-128.