Tái cấu trúc từng phần và ứng dụng trong an toàn thiết kế phần cứng FPGA

13:00 | 09/10/2023
TS. Nguyễn Chung Tiến , Trần Bình Nhung (Học viện Kỹ thuật mật mã)

Field-programmable gate array (FPGA) là công nghệ vi mạch tích hợp khả trình có tính ưu việt và mức độ ứng dụng phổ biến nhất trong vòng vài chục năm trở lại đây. Ngoài khả năng tái cấu trúc vi mạch toàn cục, một số FPGA hiện đại còn hỗ trợ tái cấu trúc từng bộ phận riêng lẻ (partial configuration) trong khi vẫn đảm bảo hoạt động bình thường cho các bộ phận khác. Đây là chức năng cho phép ứng dụng có thể tái cấu trúc một phần thiết kế theo yêu cầu mà không cần phải ngừng hệ thống để lập trình lại toàn bộ. Bài viết sẽ giới thiệu một hệ thống tái cấu trúc từng phần được xây dựng trên board phát triển Z-turn Xynq-7020 của Xilinx, từ đó đề xuất một phương pháp tái cấu trúc từng phần trong bài toán an toàn thiết kế phần cứng trên nền công nghệ FPGA.

GIỚI THIỆU CHUNG

FPGA là một loại mạch tích hợp cỡ lớn được cấu thành từ ma trận của các phần tử logic có khả năng tái cấu hình (Configurable Logic Blocks - CLB) và có thể được nối với nhau thông qua các đường kết nối cấu hình (programmable interconnects). Tuy không đạt được mức độ tối ưu như một số ASIC đặc chế hoàn toàn, FPGA lại có một đặc điểm vượt trội là khả năng tái cấu trúc ngay cả khi đang hoạt động [1]. Tính năng tái cấu trúc đơn giản, khả năng thực hiện linh hoạt các thuật toán và tính toán song song với khối lượng lớn các cổng logic, điều này làm cho FPGA có ưu thế vượt trội hơn so với các bộ vi xử lý tuần tự trước nó trong việc giải quyết các bài toán phức tạp đòi hỏi khối lượng tính toán lớn và các hệ thống thời gian thực. Cấu trúc đặc thù của FPGA cũng mang lại hiệu quả đặc biệt trong việc thực thi các thuật toán mật mã, đặc biệt là các thuật toán mã khối.

Ngoài khả năng tái cấu trúc vi mạch toàn cục, một số FPGA hiện đại còn hỗ trợ tái cấu trúc cục bộ, tức là khả năng tái cấu trúc từng bộ phận riêng lẻ (partial configuration) trong khi vẫn đảm bảo hoạt động bình thường cho các bộ phận khác. Đây là chức năng cho phép ứng dụng có thể tái cấu trúc một phần thiết kế theo yêu cầu mà không cần phải dừng hay ngừng hệ thống để lập trình lại toàn bộ. Tái cấu trúc từng phần động (Dynamic Partial Reconfiguration - DPR) có thể được khai thác trong nhiều lĩnh vực ứng dụng như để đáp ứng các yêu cầu về không gian trong các hệ thống di động nhỏ, tạo ra một hệ thống trên chip với mức độ linh hoạt cao, hoặc thực hiện các thuật toán phần cứng thích ứng,... [2] Các hãng đã hỗ trợ tính năng này bắt đầu từ Virtex 4 (Xilinx) và Strarix 5 (Altera) trong các bộ phần mềm thiết kế EDA của họ (ISE và Quartus).

HỆ THỐNG TÁI CẤU TRÚC TỪNG PHẦN ĐỘNG TRÊN FPGA

Tái cấu trúc từng phần động cho phép FPGA thích ứng với việc thay đổi thuật toán phần cứng, cải thiện khả năng chịu lỗi và sử dụng tài nguyên, nâng cao hiệu suất hoặc giảm mức tiêu thụ điện năng [3]. DPR đặc biệt có giá trị khi các thiết bị hoạt động trong môi trường quan trọng không thể bị gián đoạn trong khi một số hệ thống mô-đun cần được xác định lại. Có 2 phương pháp cấu hình lại một phần động được đề xuất, bao gồm cấu hình lại một phần dựa trên sự khác biệt và cấu hình lại một phần dựa trên mô-đun [4].

Tái cấu trúc từng phần dựa trên sự khác biệt: Được sử dụng khi một thay đổi nhỏ được thực hiện đối với thiết kế và đặc biệt hữu ích trong trường hợp thay đổi các phương trình trong Bảng tra cứu (LUT) hoặc nội dung khối bộ nhớ chuyên dụng. Dòng bit phần thiết kế mới chỉ chứa thông tin về sự khác biệt giữa cấu trúc thiết kế hiện tại (nằm trong FPGA) và nội dung thiết kế mới. Chuyển đổi cấu hình của một mô-đun từ triển khai này sang triển khai khác rất nhanh chóng do sự khác biệt giữa dòng bit có thể cực kỳ nhỏ so với toàn bộ dòng bit của thiết bị [4].

Tái cấu trúc từng phần dựa trên mô-đun: Sử dụng các khái niệm thiết kế mô-đun để cấu hình lại các khối logic lớn. Trong tái cấu từng phần dựa trên mô-đun, phần cứng của FPGA được thiết kế thành từng mô-đun cấu hình lại được RM (Reconfigurable Module), sau đó tổng hợp vào hệ thống. Phần tĩnh được đặt trong khu vực “tĩnh” của FPGA và không thay đổi trong suốt quá trình hoạt động của hệ thống. Phần này chịu trách nhiệm điều khiển quá trình hoạt động của toàn hệ thống trong thời gian chạy ứng dụng và điều khiển quá trình tái cấu trúc cho các mô-đun [4].

THỰC THI TÁI CẤU TRÚC TỪNG PHẦN ĐỘNG TRÊN FPGA

Trong thiết kế của nhóm tác giả, phần tĩnh bao gồm các khối sau: Một vi xử lý nhúng Microblaze đóng vai trò xử lý trung tâm và điều khiển các hoạt động cấu hình lại của hệ thống thông qua Bus AXI/PLB. Khối UART thực hiện chức năng kết nối với máy tính để truyền nhận dữ liệu, tín hiệu điều khiển người dùng và hiển thị kết quả. Bộ định thời (timer) xác định thời gian cấu hình của hệ thống.

Khối HWICAP (Hardware-Internal Configuration Access Port) là một lõi cứng được cung cấp bởi Xilinx với AXI-CAP sử dụng cho Bus AXI; nó đóng vai trò rất quan trọng trong hệ thống tái cấu hình động với chức năng nhận tệp cấu hình từ bộ nhớ ngoài để nạp xuống khu vực cấu hình động trên FPGA [5]. Phần động (phần cấu hình lại được) là các mô-đun chức năng trong hệ thống có thể thay thế, sửa đổi hoặc gỡ bỏ ngay trong thời gian hệ thống đang chạy để thích nghi với yêu cầu cấu trúc của hệ thống thực hiện trên FPGA. Người dùng xác định chức năng cần sử dụng thông qua chương trình điều khiển. Các mô-đun động được tái cấu trúc bằng cách sử dụng cổng truy cập cấu hình bên trong - ICAP (Internal Configuration Access Port) có sẵn thông qua lõi AXI HWICAP.

Sau khi phần cứng của hệ thống được thiết lập, chương trình điều khiển sẽ giám sát quá trình cấu hình cũng như đo đạc một vài thông số thời gian hay tốc độ cấu hình.

Cấu hình phần cứng FPGA

Hệ thống tái cấu trúc từng phần được xây dựng trên nền tảng công cụ phần mềm Vivado 2016.3 với board thử nghiệm là Z-turn Zynq-7020 (XC7Z020) của Xilinx. Hệ thống bao gồm các lõi IP core được kết nối như trên Hình 1.

Các thành phần của hệ thống tái cấu hình từng phần bao gồm:

- Processing_systerm7_0: Lõi vi xử lý nhúng Microblaze có chức năng điều khiển toàn bộ hoạt động của hệ thống theo chương trình ứng dụng mà người dùng mong muốn.