Giới thiệu dự án

Sự bùng nổ của Trí tuệ nhân tạo (AI) và Học sâu (Deep Learning) tại các thiết bị biên (Edge Devices) đòi hỏi năng lực xử lý dữ liệu ma trận khổng lồ với độ trễ cực thấp và mức tiêu thụ năng lượng tối thiểu. Theo báo cáo từ Gartner (2023), hơn 75% dữ liệu doanh nghiệp được tạo ra và xử lý ngoài trung tâm dữ liệu tập trung, thúc đẩy nhu cầu cấp thiết về các bộ tăng tốc phần cứng chuyên dụng (Hardware Accelerators). Mạng thần kinh tích chập (Convolutional Neural Network - CNN) đóng vai trò nền tảng trong thị giác máy tính nhưng đặt ra thách thức tính toán rất lớn: phép tính tích chập (Convolution) chiếm hơn 85-90% tổng khối lượng công việc và băng thông truy cập bộ nhớ.

+-----------------------------------------------------------------------------------+
|                                PROBLEM STATEMENT                                  |
+-----------------------------------------------------------------------------------+
|  1. Kiến trúc CPU/GPU truyền thống tiêu tốn năng lượng cao, không tối ưu cho Edge |
|  2. Mạch ASIC cố định thiếu linh hoạt (Flexibility) khi mô hình CNN thay đổi      |
|  3. Nghẽn cổ chai bộ nhớ Von Neumann và xung đột truy xuất dữ liệu ma trận        |
|  4. Bộ tăng tốc mã hóa mật mã học (AES/SM4) chưa được khai thác để tính toán CNN  |
+-----------------------------------------------------------------------------------+

Khóa luận tốt nghiệp chuyên ngành Kỹ thuật Máy tính (Trường Đại học Công nghệ Thông tin - ĐHQG TP.HCM) thực hiện bởi sinh viên Nguyễn Quốc Viên, dưới sự hướng dẫn của TS. Phạm Hoài Luân và TS. Lâm Đức Khải, đề xuất giải pháp: Tùy chỉnh và phát triển bộ tăng tốc phần cứng dựa trên mảng tái cấu hình cấu trúc thô (Coarse-Grained Reconfigurable Array - CGRA) linh hoạt và tốc độ cao phục vụ tính toán mạng CNN LeNet-5.

Mục tiêu đề tài

  1. Nghiên cứu và mô hình hóa: Hiện thực hóa thuật toán suy diễn mạng CNN LeNet-5 (nhận diện chữ số viết tay MNIST) từ mức phần mềm thuần C (không phụ thuộc thư viện tính toán ngoài) và huấn luyện trên Python/TensorFlow.
  2. Khai phóng và phân tích kiến trúc Crypto CGRA: Đánh giá cấu trúc phần cứng 4x4 Processing Elements (PE) ban đầu chuyên biệt cho các thuật toán mật mã khối đối xứng AES-128 và SM4.
  3. Tái cấu hình phần cứng: Thiết kế tập lệnh cấu hình (Context Instructions) và tái định tuyến hệ thống kết nối hàng (Row Connection - RC) để ánh xạ phép nhân ma trận tích chập 2D/3D lên mảng 16 PE.
  4. Kiểm chứng và tổng hợp RTL: Mô phỏng chức năng trên Vivado Design Suite, tối ưu hóa tài nguyên phần cứng (LUT, FF, BRAM, DSP) và triển khai thực tế trên kit phát triển FPGA Xilinx Zynq UltraScale+ MPSoC ZCU102.
+-----------------------------------------------------------------------------------+
|                                 PHẠM VI ĐỀ TÀI                                    |
+-----------------------------------------+-----------------------------------------+
| PHẠM VI ÁP DỤNG (SCOPE)                 | GIỚI HẠN KỸ THUẬT (LIMITATIONS)         |
+-----------------------------------------+-----------------------------------------+
| - Mô hình: LeNet-5 (Conv1, Conv2, FC)   | - Chưa triển khai chuẩn dấu chấm động   |
| - Tập dữ liệu: MNIST (28x28 grayscale)  |   IEEE-754 32-bit trên toàn bộ ALU PE   |
| - Phần cứng: Crypto CGRA 4x4 PE Array   | - Tập trung tăng tốc Conv1 và Conv2     |
| - Board: Xilinx ZCU102 FPGA             | - Giai đoạn Training xử lý Offline      |
+-----------------------------------------+-----------------------------------------+

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Các giải pháp tăng tốc mạng thần kinh tích chập hiện nay phân bổ chủ yếu trên 4 nền tảng phần cứng:

Tiêu chí CPU Đa năng (x86/ARM) GPU Nhúng (Nvidia Jetson) Mảng ASIC (TPU/NPU) Đề xuất: Crypto CGRA
Tính linh hoạt (Flexibility) Rất cao Rất cao Không có (Hardwired) Cao (Tái cấu hình theo chu kỳ)
Hiệu suất năng lượng (Energy) Rất thấp (15-65W) Trung bình (5-15W) Rất cao (0.5-2W) Rất cao (< 1.8W trên FPGA)
Hiệu quả diện tích (Area) Thấp Rất thấp Cao Rất cao (Tối ưu 51.06% Mux)
Độ trễ suy diễn (Latency) Cao (Tuần tự) Trung bình (Batching) Cực thấp Thấp và có tính tiền định
Khả năng tái sử dụng (Reuse) Thuần phần mềm Thuần phần mềm Đơn mục đích Đa mục đích (Crypto + AI)

Phân tích yêu cầu hệ thống theo mô hình MoSCoW:

  • Must-have: Khối ALU tại mỗi PE phải thực thi được các phép cộng dồn nhân (MAC - Multiply-Accumulate); bộ nhớ cục bộ (Local Data Memory - LDM) độc lập không gây nghẽn bus; bộ giải mã 64-bit Context PE.
  • Should-have: Kiến trúc bộ ghép kênh RC tối ưu giảm thiểu diện tích logic; Pipeline 8 tầng duy trì dòng dữ liệu liên tục.
  • Could-have: Tích hợp chuyển đổi linh hoạt giữa chế độ bảo mật AES-128/SM4 và chế độ tăng tốc CNN trong cùng một System-on-Chip (SoC).
  • Won't-have (giai đoạn này): Tự động hóa trình biên dịch ánh xạ đồ thị tính toán (Dataflow Graph Compiler) cấp cao.

Thiết kế hệ thống

Kiến trúc tổng thể của bộ tăng tốc được xây dựng theo mô hình phần cứng/phần mềm kết hợp (Hardware-Software Co-design) trên SoC, bao gồm Phân hệ xử lý (Processing System - PS) và Logic lập trình (Programmable Logic - PL).

Chi tiết các khối chức năng chính:

  1. Processing Element (PE):

    • Dual LDM: Bộ nhớ nội bộ kép $2 \times 1024 \times 32\text{-bit} = 2048 \times 32\text{-bit}$ trên mỗi PE, cho phép thao tác đọc (Load) và ghi (Store) đồng thời mà không gây xung đột dữ liệu.
    • Context PE (CTX PE) & Immediate PE (IM PE): Buffer đệm lưu chỉ lệnh tái cấu hình và hằng số vòng (Round Constants / Bias) duy trì trong 8 chu kỳ xung nhịp.
    • Transit Buffers (A, B, C): Nhóm thanh ghi trung chuyển lưu trữ $4 \times 32\text{-bit}$ mỗi nhóm. Tổng dung lượng đệm trung chuyển trên một hàng là $4 \text{ PE} \times 8 \times 32\text{-bit} = 1024\text{-bit}$.
    • ALU đa năng: Gồm Basic Unit (Arithmetic Unit - AU, Logic Unit - LU, Shift Row Unit - SRU, Reduce Logic Unit - RLU) và Specialized Unit (MixColumns, GF-Multiplier, S-Box).
  2. Cấu trúc lệnh tái cấu hình 64-bit (Context Instruction Word):

Bit Field Tên trường Chức năng chi tiết trong chu kỳ thực thi
[63] OpType Định dạng loại lệnh: 0 = Thao tác bộ nhớ LSU, 1 = Cấu hình tính toán ALU
[62:61] AU_Config Cấu hình bộ tính số học: A+B, A+B+C, A-B, MAC
[60:57] LU1_Config Cấu hình Logic Unit 1: A^B, `A
[56:55] SRU1_Mode Chế độ dịch chuyển SRU 1: Shift Left, Shift Right, Rotate
[54:50] SRU1_Bits Số lượng bit dịch chuyển trong chu kỳ
[49:48] LU2_Config Cấu hình Logic Unit 2 độc lập
[47:46] SRU2_Mode Chế độ dịch chuyển SRU 2
[45:41] SRU2_Bits Số lượng bit dịch chuyển SRU 2
[40:39] RLU_Config Cấu hình Reduce Logic Unit
[38:33] Spec_Unit Kích hoạt khối chuyên dụng: S-Box, Galois Multiply, MixCol
[32] Sop/Bop Định dạng toán hạng đơn (Single Op) hoặc toán hạng đôi (Binary Op)
[31:0] Immediate Giá trị hằng số tức thời nạp trực tiếp vào thanh ghi ALU
  1. Cơ chế giảm tải tài nguyên Row Connection (RC): Thay vì sử dụng toàn bộ bộ ghép kênh phân giải cao 48:1 tiêu tốn diện tích, hệ thống phân cấp nhóm dữ liệu:

    • Nhóm A (Truy cập cao): Định tuyến qua 4 Mux 48:1 (tương đương 47 Mux 2:1).
    • Nhóm B (Truy cập trung bình): Định tuyến qua 4 Mux 16:1 (tương đương 15 Mux 2:1).
    • Nhóm C (Truy cập thấp): Định tuyến qua 4 Mux 8:1 (tương đương 7 Mux 2:1).

    $$\text{Tài nguyên trước tối ưu} = 16 \text{ RC} \times 141 \text{ Mux 2:1} = 2256 \text{ Mux 2:1}$$ $$\text{Tài nguyên sau tối ưu} = 16 \text{ RC} \times 69 \text{ Mux 2:1} = 1104 \text{ Mux 2:1} \implies \text{Tiết kiệm } \mathbf{51.06%}$$


Methodology

Quy trình phát triển tuân theo phương pháp Hardware-Software Co-Design:

+-----------------------------------------------------------------------------------+
|                           LỘ TRÌNH DỰ ÁN 4 GIAI ĐOẠN                             |
+-----------------------------------------------------------------------------------+
| Phase 1: Software Modeling & Training (Tuần 1 - 4)                                |
|   - Huấn luyện mạng LeNet-5 trên TensorFlow/Keras (100 Epochs, Adam, Batch=128)   |
|   - Trích xuất Weight & Bias sang định dạng mảng C thuần (Inference Engine)       |
+-----------------------------------------------------------------------------------+
| Phase 2: CGRA Architectural Analysis & Reconfiguration (Tuần 5 - 9)              |
|   - Ánh xạ phép toán Convolution Layer 1 (5x5x6) & Layer 2 (5x5x6x16) lên PEA 4x4 |
|   - Xây dựng bảng mã Context PE, tối ưu hóa xung đột bus LSU-LDM                  |
+-----------------------------------------------------------------------------------+
| Phase 3: Hardware Description & RTL Simulation (Tuần 10 - 14)                     |
|   - Hiện thực hóa module bằng Verilog HDL trên Vivado 2022.2                      |
|   - Kiểm tra Waveform mô phỏng chu kỳ (Cycle-accurate Timing Simulation)          |
+-----------------------------------------------------------------------------------+
| Phase 4: FPGA Deployment & Performance Benchmarking (Tuần 15 - 18)                |
|   - Tổng hợp mạch (Synthesis & Implementation) trên Xilinx ZCU102                 |
|   - Đo đạc thông lượng (Throughput), diện tích (Area), và năng lượng tiêu thụ     |
+-----------------------------------------------------------------------------------+

Implementation và kết quả

Development process

Quá trình suy diễn phần mềm được xây dựng bằng C99 chuẩn hóa, triển khai phép nhân tích chập đa kênh và đa bộ lọc:

1. Thuật toán lớp tích chập thứ nhất (Convolutional Layer 1 - $28 \times 28 \to 28 \times 28 \times 6$):

// Layer 1: Input 28x28 (Same Padding -> 32x32), 6 Kernel 5x5, Stride 1
void conv_layer_1(float in[32][32], float kernel[6][5][5], float bias[6], float out[6][28][28]) {
    for (int channel = 0; channel < 6; channel++) {
        for (int row = 0; row < 28; row++) {
            for (int col = 0; col < 28; col++) {
                float sum = bias[channel];
                for (int i = 0; i < 5; i++) {
                    for (int j = 0; j < 5; j++) {
                        sum += in[row + i][col + j] * kernel[channel][i][j];
                    }
                }
                // Hàm kích hoạt ReLU tích hợp trực tiếp
                out[channel][row][col] = (sum > 0.0f) ? sum : 0.0f;
            }
        }
    }
}

2. Thuật toán lớp tích chập thứ hai (Convolutional Layer 2 - $14 \times 14 \times 6 \to 10 \times 10 \times 16$):

// Layer 2: Input 14x14x6, 16 Kernel 5x5x6, Valid Padding -> Output 10x10x16
void conv_layer_2(float in[6][14][14], float kernel[16][6][5][5], float bias[16], float out[16][10][10]) {
    for (int ch_out = 0; ch_out < 16; ch_out++) {
        for (int row = 0; row < 10; row++) {
            for (int col = 0; col < 10; col++) {
                float sum = bias[ch_out];
                for (int ch_in = 0; ch_in < 6; ch_in++) {
                    for (int i = 0; i < 5; i++) {
                        for (int j = 0; j < 5; j++) {
                            sum += in[ch_in][row + i][col + j] * kernel[ch_out][ch_in][i][j];
                        }
                    }
                }
                out[ch_out][row][col] = (sum > 0.0f) ? sum : 0.0f;
            }
        }
    }
}

Testing và validation

Hệ thống được xác minh toàn diện qua mô phỏng chức năng trên Vivado Simulator và tổng hợp trên phần cứng FPGA ZCU102:

+-----------------------------------------------------------------------------------+
|                      KẾT QUẢ TỔNG HỢP TÀI NGUYÊN (VIVADO SYNTHESIS)                |
+-----------------------------------+--------------------+--------------------------+
| LOẠI TÀI NGUYÊN PHẦN CỨNG         | SỐ LƯỢNG SỬ DỤNG   | TỶ LỆ TRÊN CHIP (%)      |
+-----------------------------------+--------------------+--------------------------+
| LUTs (Lookup Tables)              | 48,215             | 17.6%                    |
| FFs (Flip-Flops)                  | 32,180             | 5.8%                     |
| Block RAM (BRAM 36Kb)             | 64 Blocks          | 7.0%                     |
| DSP48 Slices                      | 32 Units           | 1.3%                     |
| Tần số hoạt động cực đại (Fmax)   | 200 MHz            | -                        |
+-----------------------------------+--------------------+--------------------------+

+-----------------------------------------------------------------------------------+
|                    HIỆU NĂNG VẬN HÀNH THỰC TẾ (BENCHMARK RESULTS)                 |
+----------------------------------------------------+------------------------------+
| THÔNG SỐ ĐÁNH GIÁ                                  | GIÁ TRỊ ĐO ĐẠC               |
+----------------------------------------------------+------------------------------+
| Độ chính xác nhận diện MNIST (Accuracy)            | 98.74%                       |
| Thời gian suy diễn 1 ảnh (LeNet-5 Full Inference)  | 0.84 ms                      |
| Tốc độ tăng tốc lớp Conv1 so với CPU Core i7       | Tăng 6.8x                    |
| Tốc độ tăng tốc lớp Conv2 so với CPU Core i7       | Tăng 8.2x                    |
| Thông lượng tính toán thực tế (Throughput)         | 12.8 GOPS                    |
| Công suất tiêu thụ trung bình trên FPGA            | 1.68 W                       |
+----------------------------------------------------+------------------------------+

Đổi mới và đóng góp

  1. Kiến trúc phần cứng lưỡng dụng (Dual-Mode Crypto-AI Accelerator): Khám phá và chứng minh thành công tính khả thi của việc tái cấu trúc bộ tăng tốc mật mã học (AES-128, SM4) để thực thi tính toán tích chập trong mạng nơ-ron mà không cần thay đổi kiến trúc vật lý của PE.
  2. Kỹ thuật định tuyến bất đối xứng tiết kiệm 51.06% bộ ghép kênh: Phân cấp cổng Mux theo tần suất truy xuất của ba nhóm dữ liệu A, B, C, giúp giảm số lượng Mux 2:1 tương đương từ 2256 xuống 1104, giải phóng diện tích silicon quan trọng.
  3. Cơ chế Local Data Memory kép chống xung đột (Contention-Free Dual LDM): Thiết kế cho phép truy cập song song 2 chiều (Simultaneous Read/Write), loại bỏ chu kỳ chờ (Stall Cycles) trong các vòng lặp tích chập lồng nhau.
  4. Quy trình Hardware-Software Co-design hoàn chỉnh: Cung cấp bộ driver ánh xạ bộ nhớ qua mmap() kết hợp cấu trúc giải mã lệnh Context 64-bit hiệu quả cao cho các hệ thống nhúng SoC.

Ứng dụng thực tế và triển khai

                     +----------------------------------+
                     |    LĨNH VỰC ỨNG DỤNG THỰC TẾ     |
                     +-----------------+----------------+
                                       |
        +------------------------------+------------------------------+
        |                                                             |
        v                                                             v
+-------------------------------+                             +-------------------------------+
|  HỆ THỐNG AN NINH & SMART IOT |                             |     SMART CAMERA & AUTOMOTIVE |
+-------------------------------+                             +-------------------------------+
| - Vừa mã hóa dữ liệu camera   |                             | - Nhận diện biển số, ký tự    |
|   bằng AES/SM4                |                             |   thời gian thực (OCR)        |
| - Vừa suy diễn AI nhận diện   |                             | - Xử lý tại biên với độ trễ   |
|   khuôn mặt tại chỗ           |                             |   dưới 1ms, công suất < 2W    |
+-------------------------------+                             +-------------------------------+

Hướng dẫn triển khai và tích hợp hệ thống:

  1. Yêu cầu hệ thống: Board FPGA Xilinx Zynq UltraScale+ ZCU102 (hoặc dòng Kria KV260), Vivado/Vitis 2022.2, Host CPU chạy Linux OS có hỗ trợ Kernel UIODrv.
  2. Quy trình nạp phần cứng:
    • Biên dịch file bitstream crypto_cgra_top.bit.
    • Nạp Device Tree Overlay cấu hình giao tiếp AXI-DMA.
    • Biên dịch ứng dụng C-Inference trên board với thư viện liên kết libcrypto_cgra.so.

Hạn chế và hướng phát triển

  • Hạn chế kỹ thuật: Chưa tích hợp phần cứng chuyển đổi số thực dấu chấm động (Floating Point IEEE-754) trực tiếp trên từng PE; hiện tại dữ liệu được lượng tử hóa (Fixed-point Quantization) trước khi nạp vào LDM.
  • Hướng phát triển:
    1. Xây dựng Trình biên dịch Đồ thị tự động (Automated CGRA Compiler) hỗ trợ trực tiếp mô hình ONNX từ PyTorch/TensorFlow.
    2. Nâng cấp ma trận PE lên kích thước $8 \times 8$ hoặc $16 \times 16$ để tăng tốc các mô hình lớn như ResNet-50 và MobileNetV3.
    3. Bổ sung engine dấu chấm động chuẩn Bfloat16 nhằm tối ưu hóa độ chính xác suy diễn AI.

Đối tượng hưởng lợi

  • Sinh viên & Học viên cao học: Tài liệu tham khảo chuẩn xác về phương pháp luận đồng thiết kế phần cứng/phần mềm (Hardware-Software Co-design) và kỹ thuật mô hình hóa CGRA.
  • Kỹ sư nhúng & Thiết kế vi mạch (ASIC/FPGA): Nắm bắt kỹ thuật tối ưu hóa diện tích liên kết mạng (Interconnect Logic Optimization) và kiến trúc bộ nhớ nội bộ phân tán (Distributed LDM).
  • Doanh nghiệp phát triển thiết bị Edge AI/IoT: Giải pháp kiến trúc phần cứng tiết kiệm chi phí, kết hợp hai tính năng then chốt: Bảo mật truyền thông (Cryptography) và Trí tuệ nhân tạo (AI Engine).
  • Nhà nghiên cứu học thuật: Cung cấp số liệu benchmark thực tế về hiệu quả diện tích và thông lượng của kiến trúc CGRA trên công nghệ FPGA tiên tiến.

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

  1. Kiến trúc CGRA khác gì so với mảng FPGA tiêu chuẩn? Trả lời: FPGA cấu hình ở mức bit (Fine-grained) qua các LUT và khối chuyển mạch bit, tạo độ trễ cấu hình lớn. CGRA cấu hình ở mức từ dữ liệu (Word-level, 32-bit), cho phép tái cấu hình cực nhanh theo từng chu kỳ xung nhịp và tiêu tốn ít diện tích logic điều khiển hơn.

  2. Tại sao lại tái sử dụng kiến trúc mã hóa Crypto CGRA cho mạng CNN? Trả lời: Cả hai giải thuật đều dựa trên các phép biến đổi ma trận song song, dịch bit và phép toán cộng dồn. Việc tái cấu hình giúp tận dụng tối đa tài nguyên silicon trên các thiết bị nhúng mà không cần thêm khối phần cứng độc lập.

  3. Làm thế nào để hệ thống ngăn chặn xung đột truy xuất bộ nhớ LDM? Trả lời: Hệ thống sử dụng kiến trúc Dual-LDM độc lập cho mỗi PE với bus dữ liệu và địa chỉ riêng biệt, cho phép nạp dữ liệu ma trận mới đồng thời với việc đọc kết quả phép tính trước đó.

  4. Tập lệnh Context 64-bit có thể mở rộng cho các hàm kích hoạt khác ngoài ReLU không? Trả lời: Hoàn toàn có thể. Trường [38:33] trong Context Word có thể gán mã opcode cho các hàm phi tuyến tính khác như Leaky-ReLU, Sigmoid (qua bảng tra LUT) hoặc phép chuẩn hóa Batch Normalization.

  5. Chi phí tài nguyên phần cứng của giải pháp trên FPGA là bao nhiêu? Trả lời: Bộ tăng tốc chỉ chiếm 17.6% LUTs và 7.0% BRAM trên chip Xilinx ZCU102, cho phép tích hợp thêm nhiều hệ thống con khác trên cùng một nền tảng SoC.


Kết luận

Đồ án tốt nghiệp của tác giả Nguyễn Quốc Viên đã giải quyết thành công bài toán tối ưu hóa tốc độ và năng lượng cho mạng thần kinh tích chập bằng kiến trúc Crypto CGRA tái cấu hình. Bằng việc kết hợp sáng tạo giữa cấu trúc phần cứng 4x4 PEA, phương pháp giảm thiểu 51.06% tài nguyên bộ ghép kênh và cơ chế đệm dữ liệu thông minh, đề tài đã chứng minh năng lực vượt trội của kỹ thuật đồng thiết kế phần cứng/phần mềm trong kỷ nguyên tính toán biên (Edge Computing). Đây là bước đệm quan trọng hướng tới việc thương mại hóa các dòng chip AI nhúng đa chức năng, an toàn và hiệu năng cao trong tương lai.