Cấu hình lại từng phần

Một phần của tài liệu Luận án tiến sĩ nghiên cứu noc cấu hình lại được trên FPGA và phát triển thuật toán ánh xạ động ứng dụng trên nền tảng noc (Trang 33 - 38)

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT

1.2.2. Cấu hình lại từng phần

Cấu hình lại được từng phần (PR: Partial Reconfiguration) là khả năng thay đổi một cách linh hoạt các khối logic phần cứng bằng cách cấu hình lại các phân vùng tương ứng trên thiết bị bằng các tập tin bitstream từng phần.

Với khả năng này, phần cứng của FPGA có thể tái lập trình giống như phần mềm.

Khả năng này giúp FPGA mềm dẻo hơn, có thể tái cấu hình lại khi đang sử dụng để phù hợp với một thiết kế mới mà không cần phải chế tạo lại nền tảng phần cứng. Đặc biệt hơn PR cho phép thay đổi một thiết kế FPGA khi đang hoạt động bằng việc nạp xuống một file cấu hình, thường là file cấu hình BIT từng phần. Sau khi một file cấu hình BIT toàn phần được nạp xuống chip FPGA, file BIT từng phần có thể được nạp xuống để thay đổi chức năng phần cứng của một vùng cấu hình mà không làm ảnh hưởng đến bất kỳ một hoạt động nào của hệ thống FPGA cũng như các vùng không cấu hình. Các dòng Virtex, Kintex, Spartan 6,7 và cả Zynq đều được hỗ trợ chức năng PR.

Hình 1.13. Minh họa thiết kế cấu hình lại từng phần

Hình 1.13 minh họa một thiết kế sử dụng cấu hình lại từng phần. Mỗi ô vuông là một CLB trên chip FPGA. Những ô vuông tô màu là những SLB được sử dụng cho thiết kế.

Thiết kế này được chia làm hai phần: Phần không cấu hình lại (Static) và phần cấu hình lại được (RM: Reconfigurable Modul).

Thông thường, cấu hình lại một FPGA yêu cầu việc thiết lập lại với một bộ điều khiển bên ngoài để tải và nạp lại một thiết kế vào nó. Cấu hình lại từng phần cho phép các bộ phận quan trọng của thiết kế tiếp tục hoạt động trong khi một bộ điều khiển trên FPGA hoặc bên ngoài nó tải một thiết kế từng phần vào trong một mô đun cấu hình lại được. Cấu hình lại từng phần cũng có thể được sử dụng để tiết kiệm không gian lưu trữ bằng cách chỉ lưu trữ những thiết kế từng phần mà có sự thay đổi giữa các thiết kế. Quy trình thực hiện cấu hình lại từng phần cho FPGA được chỉ ra như Hình 1.14.

Dựa vào đặc điểm quá trình cấu hình mà cấu hình lại từng phần có thể được chia thành hai loại sau:

Cấu hình lại từng phần động cho phép thay đổi từng phần của hệ thống trong khi phần còn lại của FPGA vẫn hoạt động bình thường.

ISE

IP XPS

Complier

ELF

SDK

Hình 1.14. Quy trình thực hiện cấu hình từng phần cho FPGA [97]

Cấu hình lại từng phần tĩnh cho phép cấu hình lại một phần của hệ thống và các phần còn lại phải ngừng hoạt động. Hệ thống sẽ hoạt động trở lại sau khi phần cấu hình lại đã hoàn thành.

Loại cấu hình được tập trung sử dụng trong luận án này là cấu hình lại từng phần động. Tiếp theo, chúng ta thảo luận kỹ hơn về loại cấu hình này.

1.2.2.1. Cấu hình lại từng phần động

Khả năng cấu hình lại động trong các FPGA hiện đại đã làm tăng thêm tính linh hoạt, độ tin cậy và khả năng thích nghi với hệ thống thiết kế. Khả năng cấu hình lại tại thời gian chạy vượt qua những giới hạn trong thiết kế tĩnh trước đây [18]. Những hạn chế này là nguyên nhân chính làm giảm tính linh hoạt và độ tin cậy. Thông thường, một hệ thống cấu hình lại từng phần động (DPR: Dynamic Partial Reconfiguration) được thiết kế bao gồm các thành phần sau:

• Phần động (Dynamic Part)

Phần động là những phần độc lập của thiết kế đầu vào mà không cần phải hoạt động trong suốt thời gian chạy của ứng dụng. Các vùng được tạo ra trên vùng này có thể được thay đổi tại thời gian chạy bằng cách nạp lại các bitstream từng phần.

• Phần tĩnh (Static Part)

Phần tĩnh là một phần của thiết kế đầu vào và nó hoạt động trong suốt thời gian chạy ứng dụng. Nó được đặt trong khu vực tĩnh của một thiết bị và được giữ nguyên vẹn trong suốt quá trình hệ thống hoạt động. Ngoài chức năng tiêu chuẩn của nó, nó còn cung cấp

một cơ sở hạ tầng để tải và gỡ bỏ các bộ phận khác của thiết kế, đó là hệ thống lập lịch, quản lý dữ liệu và quản lý giao diện. Phần tĩnh bao gồm bộ điều khiển cấu hình và logic cần thiết cho việc quản lý dữ liệu và giao diện. Tất cả các đầu vào/đầu ra của các ứng dụng được quản lý bởi phần tĩnh, giao tiếp với các mô đun động thông qua một giao diện cố định.

• Macro bus (Bus Macro)

Macro bus được sử dụng như các đường dẫn dữ liệu cố định cho các tín hiệu đi qua giữa một mô đun cấu hình lại và thành phần khác. Các thiết kế phải đảm bảo rằng bất kỳ tín hiệu nào của mô đun cấu hình lại được giao tiếp với một thành phần khác chỉ bằng cách thông qua một macro bus. Macro bus là một phần trung tâm của một thiết kế cấu hình lại. Nó chuyển tải lệnh và dữ liệu vào/ra các mô đun cấu hình lại và nó là đường duy nhất để các mô đun cấu hình lại tiếp cận với thế giới bên ngoài.

• Bộ điều khiển cấu hình (Configuration Controller)

Bộ điều khiển cấu hình là một phần của mô đun tĩnh. Nó có nhiệm vụ tải hoặc gỡ bỏ các mô đun động. Thông thường, bộ điều khiển cấu hình là một bộ vi điều khiển. Bộ điều khiển cấu hình làm việc một cách tự động. Điều đó có nghĩa cấu hình lại không cần bất kỳ một việc điều khiển bằng tay. Tất cả việc chúng ta cần làm là lập trình cho vi điều khiển biết khi nào cần cấu hình và cấu hình với mô đun nào để nó thực thi. Điều này có thể được thực hiện bằng cách sử dụng chương trình C hoặc C++ tùy thuộc vào sự thuận tiện của các phương tiện thiết kế.

1.2.2.2. Các ưu điểm của cấu hình lại từng phần

Cấu hình lại từng phần động là một trong những tính năng quan trọng làm cho FPGA trở nên độc đáo. Sau đây là các lợi ích quan trọng có thể đạt được khi khai thác chức năng cấu hình lại động từng phần.

(i) Diện tích cấu hình lại được có thể được khai thác hiệu quả hơn so với một thiết kế tĩnh. Có những ứng dụng đòi hỏi phải có một diện tích phù hợp cho việc triển khai hệ thống. Trong trường hợp này nhiều tài nguyên cấu hình lại được phải được thêm vào hệ thống hoặc cấu hình từng phần động của tài nguyên có sẵn có thể được thực hiện, đặc biệt nếu một ứng dụng có thể được phân chia thành các giai đoạn khác nhau, mỗi giai đoạn được xây dựng theo các kết quả trước đó, trên một tập dữ liệu cụ thể. Trong trường hợp này, các mô đun khác nhau của ứng dụng có thể được cấu hình trên thiết bị theo các giai đoạn khác nhau để xử lý dữ liệu và có được kết quả cuối cùng, trong khi vẫn tiết kiệm được tài nguyên và diện tích.

(ii) Một vài phần của ứng dụng phải thay đổi theo thời gian và tác động trở lại với những thay đổi trong môi trường của nó. Với cấu hình lại từng phần động, một phần của

các phần cứng có thể được điều chỉnh theo thời gian để đối phó với các yêu cầu ứng dụng mới, mở ra một sự linh hoạt cao trong thiết kế hệ thống. Theo cách này, hệ thống thích nghi có thể được tạo ra, khắc phục các nhược điểm vốn có của giải pháp thiết kế phần cứng tĩnh.

(iii) Giảm thời gian cấu hình lại: Thời gian cấu hình tỷ lệ thuận với kích thước của bitstream. Cấu hình lại từng phần cho phép thực hiện các thay đổi nhỏ mà không cần phải cấu hình lại toàn bộ thiết bị. Bằng cách cấu hình lại bitstream từng phần thay vì cấu hình lại toàn bộ thiết bị, nên tổng thời gian cấu hình lại sẽ được rút ngắn.

Giải pháp cấu hình từng phần động sẽ giải quyết được tình trạng thiết bị thiếu tài nguyên trong khi yêu cầu triển khai nhiều ứng dụng. Thêm vào đó, nó cũng là giải pháp tốt để thiết kế các hệ thống có khả năng thích nghi với các yêu cầu thay đổi của ứng dụng ở hiện tại và tương lai. Ngoài ra, khả năng cấu hình lại từng phần động cũng được xem như một giải pháp cân bằng giữa tốc độ tính toán của phần cứng và sự linh hoạt của phần mềm.

1.2.2.3. Hỗ trợ cấu hình lại trong FPGA của Xilinx

Một hoặc nhiều bitstream là cần thiết để cấu hình một FPGA với ứng dụng yêu cầu.

Một bitstream là một tập tin nhị phân trong đó thông tin cấu hình cho một thiết bị Xilinx cụ thể được lưu trữ, đó là nơi mà các dữ liệu được sao chép vào các tế bào cấu hình SRAM, bộ nhớ cấu hình được lưu giữ cùng với các lệnh thích hợp cho việc kiểm soát các chức năng chip. Do đó các thiết bị Virtex như Virtex-6 hoặc Virtex-7 được cấu hình bằng cách tải dữ liệu ứng dụng cụ thể vào bộ nhớ cấu hình của chúng, điều này được thể hiện như trong Hình 1.15.

Hình 1.15. Tổng quan cấu hình lại từng phần động và bộ nhớ cấu hình [77]

Trên FPGA Virtex các bộ nhớ cấu hình được phân đoạn thành các khung. Một khung là đơn vị nhỏ nhất của cấu hình lại. Tùy theo thiết bị, phần tử này có thể kéo dài toàn bộ

FPGA, chẳng hạn như trong Virtex-II pro hoặc chỉ một phần của nó như trong Virtex-6.

Số khung và bit trong mỗi khung là xác định cho mỗi họ thiết bị. Số lượng các khung tỉ lệ với chiều rộng CLB. Các bitstream có thể là một phần hoặc toàn phần. Một bitstream toàn phần cấu hình cả bộ nhớ cấu hình và được sử dụng cho thiết kế tĩnh hoặc bắt đầu thực hiện của một hệ thống cấu hình lại động để xác định trạng thái ban đầu của các tế bào SRAM. Các bitstream từng phần cấu hình chỉ một phần của các thiết bị và một trong những sản phẩm cuối cùng của luồng thiết kế cấu hình lại từng phần bất kỳ.

Các FPGA cung cấp các phương tiện khác nhau cho cấu hình, dưới hình thức của các giao diện khác nhau đến logic cấu hình trên chip. Có một vài chế độ và các giao diện để cấu hình một họ FPGA cụ thể, trong đó có cáp tải về JTAG, giao diện SelectMAP, một cổng truy cập cấu hình bên trong ICAP và tùy thuộc vào họ FPGA cụ thể. ICAP cung cấp một giao diện mà có thể được sử dụng bởi logic bên trong để cấu hình lại và đọc ngược bộ nhớ cấu hình. Trong mỗi FPGA một logic cấu hình được xây dựng trên chip, với mục đích thực hiện các giao diện khác nhau để trao đổi dữ liệu cấu hình và diễn giải bitstream để cấu hình thiết bị. Một tập hợp các thanh ghi cấu hình xác định trạng thái của logic cấu hình này tại bất kỳ thời điểm nào. Các thanh ghi cấu hình là bộ nhớ chứa file bitstream có quyền truy cập trực tiếp. Dữ liệu cấu hình thực tế đầu tiên được ghi bởi các bitstream vào các thanh ghi và sau đó được sao chép bởi logic cấu hình trong các SRAM cấu hình.

Một phần của tài liệu Luận án tiến sĩ nghiên cứu noc cấu hình lại được trên FPGA và phát triển thuật toán ánh xạ động ứng dụng trên nền tảng noc (Trang 33 - 38)

Tải bản đầy đủ (PDF)

(107 trang)