Luận án 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 - Nguyễn Văn Cường

LỜI CAM ĐOAN. i

LỜI CẢM ƠN .ii

MỤC LỤC . iii

DANH MỤC CÁC TỪ VIẾT TẮT .vii

DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ. x

DANH MỤC CÁC BẢNG BIỂU .xii

MỞ ĐẦU .1

1. Đặt vấn đề.1

2. Mục tiêu, đối tượng, phương pháp và phạm vi nghiên cứu.3

3. Các kết quả đạt được của luận án .5

4. Cấu trúc của luận án.6

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

1.1. Lý thuyết về mạng trên chip.7

1.1.1. Nguồn gốc và thuật ngữ .7

1.1.2. Cấu hình mạng.8

1.1.2.1. Mạng lưới n-chiều (n-Dimensional Mesh).9

1.1.2.2. Mạng K-ary n-cube .9

1.1.2.3. Mạng có số chiều thấp.10

1.1.3. Cơ chế điều khiển luồng.10

1.1.3.1. Bản tin .10

1.1.3.2. Cơ chế điều khiển luồng Store-and-Forward (SAF).11

1.1.3.3. Cơ chế điều khiển luồng Wormhole (WH).11

1.1.3.4. Cơ chế điều khiển luồng Virtual cut-through (VCT) .12

1.1.3.5. Cơ chế điều khiển luồng kênh ảo (Virtual Channel) .12

1.1.4. Thuật toán định tuyến .13

1.1.4.1. Phân loại định tuyến .13

1.1.4.2. Các vấn đề trong định tuyến.14

1.1.5. Tổng quan kiến trúc bộ định tuyến.14

1.2. Công nghệ FPGA. 16iv

1.2.1. Kiến trúc FPGA .17

1.2.1.1. Tổng quan kiến trúc FPGA .17

1.2.1.2. Kiến trúc FPGA của Xilinx.18

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

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

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

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

1.3. Kỹ thuật ánh xạ ứng dụng lên nền tảng mạng trên chip . 24

1.3.1. Bài toán ánh xạ .24

1.3.2. Ánh xạ tại thời gian thiết kế .25

1.3.3. Ánh xạ tại thời gian chạy .26

1.4. Kết luận chương. 26

CHƯƠNG 2 PHÁT TRIỂN NỀN TẢNG PHẦN CỨNG CẤU HÌNH LẠI ĐƯỢC

CHO NoC . 28

2.1. Thiết kế bộ định tuyến cho NoC. 28

2.1.1. Giới thiệu.28

2.1.2. Đề xuất kiến trúc bộ định tuyến.29

2.1.2.1. Lựa chọn các thông số thiết kế.29

2.1.2.2. Bộ đệm ngõ vào.32

2.1.2.3. Bộ giải mã flit.32

2.1.2.4. Chuyển mạch và kênh ảo .33

2.1.2.5. Bộ phân xử.34

2.1.3. Kết quả và đánh giá .34

2.1.3.1. Kết quả tổng hợp .35

2.1.3.2. Kết quả mô phỏng .36

2.2. Thiết kế bộ giao tiếp mạng cho NoC . 40

2.2.1. Giới thiệu.40

2.2.2. Phương pháp tiếp cận.40

2.2.3. Đề xuất kiến trúc bộ giao tiếp mạng.42

2.2.4. Kết quả và đánh giá .44

2.3. Phát triển nền tảng phần cứng cấu hình lại từng phần động . 45

2.3.1. Giới thiệu.45v

2.3.2. Xây dựng hệ thống (nền tảng phần cứng) cấu hình .47

2.3.2.1. Luồng thiết kế .47

2.3.2.2. Thiết lập hệ thống .48

2.3.3. Các trường hợp nghiên cứu.50

2.3.3.1. Cấu hình lại cơ sở hạ tầng truyền thông.50

2.3.3.2. Cấu hình lại các PE .53

2.3.4. Kết quả thực nghiệm .54

2.4. Kết luận chương. 56

CHƯƠNG 3 TRIỂN KHAI CÁC ỨNG DỤNG CÓ THỂ ĐIỀU CHỈNH MỨC CHẤT

LƯỢNG VÀO NỀN TẢNG CẤU HÌNH LẠI ĐƯỢC DỰA TRÊN NoC TẠI THỜI

GIAN CHẠY . 57

3.1. Giới thiệu. 57

3.2. Mô tả bài toán ánh xạ. 59

3.3. Các định nghĩa và xây dựng bài toán ánh xạ . 60

3.3.1. Mô hình ứng dụng.60

3.3.1.1. Đồ thị tác vụ ứng dụng.61

3.3.1.2. Mô hình chất lượng .61

3.3.2. Mô hình phần cứng.62

3.3.3. Xây dựng bài toán ánh xạ .63

3.4. Các giải pháp cho bài toán ánh xạ các ứng dụng lên NoC tại thời

gian chạy . 65

3.4.1. Giải pháp tối ưu sử dụng thuật toán tìm kiếm đầy đủ .66

3.4.1.1. Thuật toán .66

3.4.1.2. Kết quả mô phỏng và đánh giá.67

3.4.2. Giải pháp heuristic cho bài toán ánh xạ tại thời gian chạy .70

3.4.2.1. Chiến lược chọn vùng gần lồi.70

3.4.2.2. Thuật toán ánh xạ heuristic.73

3.4.2.3. Kết quả mô phỏng và đánh giá.75

3.5. Kết luận chương. 82

KẾT LUẬN . 83

Nội dung và các kết quả đạt được của luận án. 83

Đóng góp khoa học của luận án. 84vi

Hướng phát triển của luận án . 85

DANH MỤC CÁC CÔNG TRÌNH ĐÃ CÔNG BỐ CỦA LUẬN ÁN. 86

TÀI LIỆU THAM KHẢO . 87

pdf107 trang | Chia sẻ: trungkhoi17 | Lượt xem: 342 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Luận án 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 - Nguyễn Văn Cường, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
hỉ ra rằng tần số làm việc cực đại của bộ định tuyến đã đề xuất có thể đạt đến 426,6 MHz. Bảng 2.2. Tài nguyên sử dụng của các bộ định tuyến trên FPGA Tổng hợp sử dụng tài nguyên Logic Utilization Sẵn có 2 kênh ảo Tác giả 4 kênh ảo Sử dụng % Sử dụng % Sử dụng % Slice Registers 301440 1027 0,34 1399 0,46 1692 0,56 Slice LUTs 150720 1026 0,68 1274 0,85 1814 1,20 36 2.1.3.2. Kết quả mô phỏng Tính chính xác và chức năng của bộ định tuyến sẽ được kiểm tra với các mô phỏng, bao gồm hai trường hợp: Mô phỏng RTL (Register Transfer Level) để kiểm tra chức năng cho bộ định tuyến, mô phỏng toàn mạng để đánh giá độ trễ và thông lượng. Trong trường hợp thứ nhất, kết quả mô phỏng quá trình truyền dữ liệu từ ngõ vào đến ngõ ra của bộ định tuyến sẽ được cung cấp. Trong trường hợp thứ hai, kết quả mô phỏng về giá trị độ trễ và thông lượng trung bình với kích thước mạng 3x3 được chỉ ra. Chi tiết mô phỏng được mô tả dưới đây: Trường hợp thứ nhất, công cụ mô phỏng ISIM (ISE Simulator) được tích hợp sẵn trong bộ ISE 14.1 của hãng Xilinx được sử dụng. Để kiểm tra deadlock free, chức năng của bộ định tuyến, một vài kịch bản mô phỏng sẽ được thực hiện như sau:  Kịch bản 1: Dữ liệu được đưa đến một kênh ngõ vào bất kỳ và tuần tự chuyển đến các kênh ngõ ra còn lại. Để chứng minh cho kịch bản này, tác giả tiến hành truyền các gói tin vào kênh L đã được gán sẵn địa chỉ định tuyến đến các ngõ ra N, S, E và W. Kết quả mô phỏng cho thấy dữ liệu nhận được tại các kênh ngõ ra hoàn toàn đúng với dữ liệu đưa vào kênh L (Hình 2.10a). a) Vào kênh L – Ra các kênh N, S, E và W b) Vào tuần tự các kênh N, L, E và W – Ra kênh S 37 c) Vào đồng thời các kênh N và E – Ra kênh S d) Vào đồng thời các kênh N, L, E và W – Ra kênh S Hình 2.10. Kết quả mô phỏng RTL cho các kịch bản  Kịch bản 2: Dữ liệu được đưa tuần tự đến 4 kênh ngõ vào và gửi đến cùng một kênh ngõ ra. Để kiểm tra kịch bản này, tác giả tiến hành gửi các gói tin vào các kênh N, E, W và L đã được gán sẵn địa chỉ định tuyến đến ngõ ra S. Kết quả mô phỏng cho thấy dữ liệu nhận được tại kênh ngõ ra đúng với dữ liệu đã được đưa vào các kênh ngõ vào (Hình 2.10b). 38  Kịch bản 3: Dữ liệu được đưa đồng thời đến 2 kênh ngõ vào và cùng gửi đến một kênh ngõ ra. Chọn kênh ngõ vào N và E; kênh S ngõ ra sau khi truyền dữ liệu và so sánh dữ liệu nhận với dữ liệu gửi ban đầu là phù hợp (Hình 2.10c).  Kịch bản 4: Dữ liệu được đưa đồng thời đến 4 kênh ngõ vào và cùng gửi đến một kênh ngõ ra. Dữ liệu được bơm đồng thời đến 4 kênh ngõ vào là N, E, W và L gửi đến kênh ngõ ra S. Dữ liệu nhận được tại kênh ngõ ra là đúng so với dữ liệu được đưa vào các kênh ngõ vào N, E, W và L (Hình 2.10d). Trường hợp thứ hai, độ trễ và thông lượng trung bình của mạng với kích thước 3x3 sử dụng bộ định tuyến chứa 1, 2, 4 kênh ảo và bộ định tuyến đã đề xuất sẽ được đánh giá và so sánh. Các thông số mô phỏng được thiết lập như Bảng 2.1 và sử dụng công cụ Noxim trong [27]. Kết quả mô phỏng về độ trễ và thông lượng trung bình như Hình 2.11 và Hình 2.12. Hình 2.11. Trễ trung bình toàn mạng Hình 2.12. Thông lượng trung bình toàn mạng Hình 2.11 cho thấy trễ trung bình toàn mạng sử dụng kiến trúc bộ định tuyến của tác giả nhỏ hơn trễ trong NoC sử dụng bộ định tuyến 1 và 2 kênh ảo; trường hợp bộ định tuyến sử dụng 4 kênh ảo thì độ trễ chênh lệch rất nhỏ. Cụ thể, trong trường hợp lưu lượng đưa vào mạng nhỏ ứng với tốc độ bơm flit vào mạng có giá trị  0,05 flits/cycle/node thì trễ trong các trường hợp là như nhau. Nếu tiếp tục tăng lưu lượng đưa vào mạng bằng cách tăng tốc độ bơm flit vào mạng thì độ trễ cũng dần tăng lên. Trường hợp 1 và 2 kênh ảo tăng rất nhanh bởi vì kênh ảo không đáp ứng được lưu lượng tăng, ngược lại độ trễ trong thiết kế của tác giả tăng chậm và gần như tiệm cận với trường hợp sử dụng 4 kênh ảo. Trễ bão hòa đạt được khi tốc độ bơm flit vào mạng lần lượt tại các giá trị 0,16, 0,20, 0,24 và 0,235 flits/cycle/node tương ứng với mạng sử dụng bộ định tuyến chứa 1, 2, 4 kênh ảo và thiết kế của tác giả. Hình 2.12 chỉ ra thông lượng trung bình toàn mạng trong các trường hợp sử dụng bộ định tuyến 1, 2, 4 kênh ảo và bộ định tuyến của tác giả. Thông lượng tăng dần khi tốc độ bơm flit vào mạng tăng, đến khi tốc độ bơm flit vào mạng đạt đến các giá trị 0,18, 0,23, 39 0,27 và 0,26 flits/cycle/node thì thông lượng cũng đạt đến giá trị bão hòa tương ứng cho các trường hợp sử dụng 1, 2, 4 kênh ảo và của tác giả. Dễ thấy thông lượng trong mạng sử dụng bộ định tuyến có chứa số lượng kênh ảo lớn là lớn hơn. So với trường hợp bộ định tuyến sử dụng 2 kênh ảo, thiết kế của tác giả cải thiện hiệu năng lên đến 13,1%. Tuy nhiên, so với trường hợp 4 kênh ảo thì thông lượng trong thiết kế của tác giả chỉ giảm khoảng 2,22%. Tóm lại, NoC sử dụng kiến trúc bộ định tuyến do tác giả đề xuất là không tắc nghẽn, có độ trễ nhỏ và thông lượng cao hơn so với các trường hợp NoC sử dụng bộ định tuyến chứa 1, 2 kênh ảo; đối với trường hợp 4 kênh ảo, mức chênh lệch các thông số này là rất nhỏ. Bảng 2.3. Một vài so sánh tham khảo với kiến trúc bộ định tuyến đã đề xuất Thông số/Công trình [57] [82] [71] Tác giả Công nghệ Stratix III Virtex-2 Virtex-5 Virtex-6 Độ rộng dữ liệu (bit) 32 32 16 32 Register N/A N/A 389 1399 LUT 1580 1455 1480 1274 Fmax (MHz) N/A 150 166 426,6 Cấu hình mạng Mesh Mesh Mesh Mesh Bảng 2.3 chỉ ra một số so sánh tham khảo về các thông số như tài nguyên sử dụng, tốc độ hoạt động giữa kiến trúc bộ định tuyến do tác giả đề xuất và các kiến trúc do các tác giả khác đã được công bố (Lưu ý trong cột 3 của Bảng 2.3, tài nguyên sử dụng của một vài bộ định tuyến được ước lượng từ tổng tài nguyên của mạng). Mỗi đề xuất được thực hiện trên các công nghệ FPGA khác nhau. Do đó, rất khó để so sánh trực tiếp với nhau. Tuy nhiên, kết quả so sánh vẫn mang lại cho chúng ta những thông tin để tham khảo. Đề xuất của tác giả sử dụng tài nguyên bé hơn khi so sánh với các thiết kế trong [57, 82]. Trong [82] các tác giả thực hiện bộ định tuyến dựa trên cấu trúc lưới hai chiều trên FPGA Virtex-2, tần số hoạt động trong trường hợp này chỉ đạt 150 Mhz trong khi thiết kế của tác giả có thể đạt đến 426,6 Mhz. Tương tự, trong [71], kiến trúc bộ định tuyến được thực hiện trên FPGA Virtex-5 với độ rộng dữ liệu chỉ là 16 bit. Kết quả tổng hợp cho thấy rằng nghiên cứu này sử dụng tài nguyên LUT lớn hơn và tần số hoạt động nhỏ hơn so với thiết kế của tác giả. Trong mục này, một kiến trúc bộ định tuyến mới với số lượng kênh ảo không đều trên cổng đã được trình bày. Kết quả tổng hợp và mô phỏng cho thấy rằng kiến trúc bộ định tuyến đã đề xuất tránh được tắc nghẽn và cắt giảm tài nguyên phần cứng trung bình lên 40 đến 23,5% so với bộ định tuyến sử dụng 4 kênh ảo, tần số làm việc lớn nhất có thể đạt đến 426,6 Mhz. Trễ và thông lượng trong mạng cũng được cải thiện. Kết quả đạt được là rất quan trọng, nó sẽ là cơ sở cho việc tích hợp nhiều thành phần của NoC vào FPGA. 2.2. Thiết kế bộ giao tiếp mạng cho NoC 2.2.1. Giới thiệu Bộ giao tiếp mạng là khối logic rất quan trọng trong cấu trúc của NoC. Chức năng của nó tương tự như chức năng của card mạng kết nối giữa máy tính và mạng Internet [36, 45] tức là thực hiện kết nối tài nguyên vào mạng tại các vị trí giao diện dữ liệu vào ra của bộ định tuyến [64]. Do sự khác biệt về kích thước dữ liệu, giao diện tín hiệu điều khiển của các tài nguyên với mạng nên bộ giao tiếp mạng có thể thay đổi tùy theo tài nguyên được kết nối với mạng. Bộ giao tiếp mạng có thể chia ra làm hai phần như sau: Phần thứ nhất là phần giao tiếp với bộ định tuyến được xem như phần không phụ thuộc vì dữ liệu vào bộ định tuyến là các flit có kích thước dữ liệu cố định theo thiết kế. Phần thứ hai là phần giao tiếp với tài nguyên, tùy thuộc vào loại tài nguyên mà kích thước dữ liệu có thể thay đổi. Vì vậy phần này được gọi là phần phụ thuộc. Có nhiều công trình nghiên cứu về kiến trúc của bộ giao tiếp mạng. Trong [76], các tác giả giới thiệu một kiến trúc của bộ giao tiếp mạng cơ bản cho NoC. Tuy nhiên, hạn chế của nghiên cứu này là trễ cao. Các tác giả trong [15] trình bày một bộ giao tiếp mạng sử dụng kỹ thuật tắt xung đồng hồ cho các khối không hoạt động để cắt giảm năng lượng tiêu thụ. Các tác giả trong [5, 29] sử dụng một kỹ thuật chia sẻ bộ giao tiếp trong mạng để tối ưu diện tích cho NoC. Trong [47], các tác giả sử dụng mã Gray trong thiết kế NI để giảm trễ. Các tác giả trong [23] đề xuất một bộ giao tiếp mạng tương thích với các lõi IP chuẩn AXI đang tồn tại. Bộ giao tiếp này cải thiện trễ trong truy xuất bộ nhớ với cơ chế ghi các gói tin. Để có thể thực hiện một NoC hoàn chỉnh, trong mục này, tác giả đề xuất một kiến trúc mới cho bộ giao tiếp mạng tương thích với NoC dạng lưới đã được giới thiệu trong Mục 2.1 bằng cách sử dụng kỹ thuật xử lý song song trong quá trình ghi/đọc dữ liệu vào/ra các bộ đệm từ tài nguyên đến bộ định tuyến hoặc ngược lại góp phần vào giảm trễ và tăng hiệu năng cho toàn mạng. 2.2.2. Phương pháp tiếp cận Hầu hết các bộ giao tiếp mạng hiện có sử dụng một bộ đệm đơn để lưu trữ dữ liệu tạm thời khi dữ liệu được truyền từ tài nguyên đến bộ định tuyến và ngược lại. Bởi vì ghi/đọc dữ liệu vào/ra một bộ đệm đơn không thể xảy ra đồng thời, được minh họa như Hình 2.13, do vậy độ trễ trong bộ giao tiếp mạng có thể tăng cao. Để khắc phục nhược điểm này, ý tưởng của tác giả là cho phép ghi/đọc dữ liệu vào/ra bộ đệm một cách đồng thời bằng cách chia một bộ đệm FIFO đơn với độ sâu K bit thành hai bộ đệm FIFO với độ sâu K/2 bit. 41 Hai bộ đệm được nối song song để ghi/đọc dữ liệu vào/ra chúng tại cùng một thời điểm như Hình 2.14. Ý tưởng này sẽ được chứng minh bằng lý thuyết để thấy rõ cách tiếp cận đã đề xuất có thể cắt giảm trễ cho bộ giao tiếp mạng là đáng kể. WR_PK1 RD_PK1 Packet1 FiFo 2MxN clock cycles ...Packet2 Packet3 PacketM WR_PK2 RD_PK2 WR_PK3 RD_PK3 ... WR_PKM RD_PKM Hình 2.13. Quá trình ghi/đọc dữ liệu vào/ra bộ đệm đơn (MxN + 1) clock cycles FiFo1 FiFo2 WR_PK0 RD_PK0 WR_PK1 RD_PK1 WR_PK2 RD_PK2 ... ...WR_PK3 RD_PK3 WR_PKM RD_PKM 1 1 2 2 3 3 4 4 Hình 2.14. Quá trình ghi/đọc dữ liệu vào/ra bộ đệm kép Giả sử rằng chúng ta muốn truyền M gói tin từ tài nguyên đến bộ định tuyến hoặc ngược lại. Thời gian truyền mỗi gói tin mất N chu kỳ đồng hồ. Như vậy, trễ của NI trong trường hợp sử dụng bộ đệm đơn và bộ đệm kép có thể được tính như sau: Trễ trong trường hợp sử dụng bộ đệm đơn sẽ là: 2* *M N (chu kỳ) Trễ trong trường hợp sử dụng bộ đệm kép sẽ là: * 1M N  (chu kỳ) Do đó, trễ có thể được cắt giảm: (2* * ) ( * 1) * 1M N M N M N    (chu kỳ) (2.1) (2.2) (2.3) 42 Công thức (2.3) cho thấy khi sử dụng bộ đệm kép thì trễ sẽ được cắt giảm (M*N-1) chu kỳ so với trường hợp sử dụng bộ đệm đơn. 2.2.3. Đề xuất kiến trúc bộ giao tiếp mạng 34 bits Kiến trúc NI FIFO A full_FFA empty_FFA rd_en_FFA release_FFA release_FFB A/B_select Flit_type C2R_READ_CTRL state_FFA state_FFB req_router router_ack full_FFB empty_FFB rd_en_FFB wr_en_FFA empty_FFA full_FFA release_FFA release_FFB pkt_size C2R_WRITE_CTRL state_FFA core_req state_FFB ack_core wr_en_FFB empty_FFB full_FFB FIFO B 32 bits F li ti li z e r router_ack req_router ack_core core_req Data_routerCore_data 34 bits FIFO A full_FFA empty_FFA wr_en_FFA release_FFA pkt_size release_FFB flit_en R2C_WRITE_CTRL state_FFA state_FFB ack_router router_req full_FFB empty_FFB wr_en_FFB rd_en_FFA empty_FFA full_FFA release_FFA release_FFB A/B_select R2C_READ_CTRL state_FFA Core_ack state_FFB req_core rd_en_FFB empty_FFB full_FFB FIFO B D e -f li ti li z e r router_req Router_DataData_core req_core core_ack 32 bits 32 bits M u x ack_router 32 bits 32 bits 32 bits 32 bits 32 bits 32 bits 32 bits Hình 2.15. Kiến trúc tổng quát của bộ giao tiếp mạng Kiến trúc bộ giao tiếp mạng được đề xuất dựa trên ý tưởng như Mục 2.2.2 với các thông số thiết kế NoC đã được lựa chọn trong Mục 2.1 như cấu trúc lưới hai chiều, kỹ thuật chuyển mạch gói, cơ chế điều khiển luồng wormhole kết hợp với kênh ảo, thuật toán định tuyến XY. Kiến trúc của bộ giao tiếp mạng được đề xuất như Hình 2.15, bao gồm các khối chính sau: Các bộ đệm FIFO A và B; các bộ điều khiển ghi/đọc dữ liệu vào/ra WRITE_CTRL và READ_CTRL; các bộ ghép/tách flit Flitilizer/De-Flitilizer mỗi khối sẽ thực hiện một chức năng riêng. Nguyên lý làm việc của các khối trong bộ giao tiếp mạng được diễn ra như sau: 43 FIFO A và B là các bộ đệm FIFO được sử dụng để lưu trữ các gói tin. Mỗi bộ đệm có độ sâu 8 bit (8 ô nhớ) và độ rộng 32 bit vì mỗi flit bao gồm 32 bit dữ liệu và 02 bit nhận dạng loại flit. Bằng cách sử dụng hai FIFO, chúng ta có thể ghi và đọc dữ liệu vào/ra FIFO cùng một lúc. Khi một trong những FIFO được nạp đầy dữ liệu, dữ liệu sẽ được đọc ra từ FIFO này bởi khối READ_CTRL và đẩy đến bộ định tuyến hoặc tài nguyên. Tại cùng thời gian này, FIFO còn lại có thể được sử dụng để ghi dữ liệu mới đến từ tài nguyên hoặc bộ định tuyến. Các bộ đệm FIFO được thiết kế theo tiêu chuẩn vào trước ra trước với các tín hiệu cho phép ghi/đọc, các tín hiệu chỉ thị đầy/trống và độ rộng dữ liệu vào/ra 32 bit. Trong thời gian hoạt động, ưu tiên ghi/đọc giữa các FIFO là bình đẳng. Ngoài ra, một FIFO chỉ thực hiện một hoạt động tại một thời điểm nhất định (ví dụ hoạt động ghi hoặc đọc). WRITE_CTRL và READ_CTRL là khối điều khiển ghi/đọc dữ liệu vào/ra các FIFO A và B. Khi FIFO nhận được tín hiệu req_in từ tài nguyên, khối WRITE_CTRL bắt đầu ghi flit tiêu đề vào FIFO trống. Nếu không có FIFO trống thì sẽ không có truyền dữ liệu xảy ra. Sau khi truyền, số packet_size được đọc ra từ flit tiêu đề để xác định chế độ ghi/đọc vào các FIFO. Có hai trường hợp thực hiện hoạt động ghi: Trường hợp (packet_size <= 8) và (8 <packet_size <= 16). Trong trường hợp thứ nhất, khối WRITE_CTRL sẽ điều khiển ghi tất cả các flit của gói tin vào một FIFO trước khi giải phóng nó để đi vào hoạt động đọc. Trường hợp thứ hai, cả hai FIFO A và B được sử dụng để lưu trữ các gói tin. Khi một FIFO đầy, tín hiệu release của nó được thiết lập. Đồng thời, khối WRITE_CTRL cũng chuyển các flit còn lại của gói tin vào FIFO còn lại trước khi thiết lập tín hiệu release lên mức cao. Khối READ_CTRL sẽ điều khiển đọc các flit từ FIFO A và B theo thứ tự chính xác dựa trên các tín hiệu release từ hoạt động ghi. Một FIFO trong chế độ đọc sẽ gửi một tín hiệu indicator trở lại đến bộ điều khiển ghi để tránh ghi đè lên các dữ liệu hiện hành. Các tín hiệu indicator sẽ bị xóa tự động khi một FIFO đọc xong tất cả các flit bên trong nó. Các khối điều khiển ghi/đọc WRITE_CTRL và READ_CTRL từ bộ định tuyến đến tài nguyên hoạt động tương tự như khối điều khiển ghi/đọc từ tài nguyên đến bộ định tuyến. Các quá trình truyền dữ liệu giữa tài nguyên và bộ định tuyến hoạt động theo cơ chế bắt tay req/ack. Các khối Flitilizer và De-Flitilizer được sử dụng để ghép và tách các bit nhận dạng loại flit (02 bit). Các bit nhận dạng loại flit này được tạo ra bởi khối READ_CTRL theo chiều từ tài nguyên đến bộ định tuyến (C2R: Core to Router) và được Flitilizer ghép vào để tạo ra flit 34 bit chuyển đến bộ định tuyến. Ngược lại, De-Flitilizer thực hiện tách 02 bit nhận dạng loại flit của các flit được truyền từ bộ định tuyến đến tài nguyên (R2C: Router to Core) để tạo ra các gói tin 32 bit chuyển đến tài nguyên. 44 2.2.4. Kết quả và đánh giá Bộ giao tiếp mạng đã đề xuất được mô hình hóa bằng ngôn ngữ Verilog, tổng hợp và mô phỏng bằng ISE 14.1 trên FPGA Virtex-6 chip 6VLX240TFF156. Các thông số như tài nguyên sử dụng, độ trễ, tốc độ hoạt động của NI đã đề xuất sẽ được phân tích và đánh giá. Bảng 2.4 thống kê tài nguyên sử dụng của NI với trường hợp sử dụng bộ đệm đơn và bộ đệm kép. NI sử dụng bộ đệm đơn mất khoảng 0,07% tài nguyên Register và 0,12% tài nguyên LUT so với tổng tài nguyên sẵn có của FPGA, trong khi với phiên bản NI sử dụng bộ đệm kép mất khoảng 0,08% tài nguyên Register và 0,24% tài nguyên LUT. Dễ thấy tài nguyên sử dụng của phiên bản bộ đệm kép tăng so với phiên bản sử dụng bộ đệm đơn, điều này có thể lý giải như sau: Xét về kích thước bộ đệm, gần như hai phiên bản là giống nhau vì bộ đệm kép được tách đôi từ bộ đệm đơn như đã trình bày trong Mục 2.2.2. Tuy nhiên, xét về mặt phức tạp của bộ điều khiển quá trình ghi/đọc trong phiên bản dùng bộ đệm đơn và bộ đệm kép thì phiên bản sử dụng bộ đệm kép có độ phức tạp lớn hơn. Đó cũng là nguyên nhân làm tăng tài nguyên của NI sử dụng bộ đệm kép. Bảng 2.4. Kết quả tổng hợp trên FPGA Tổng hợp sử dụng tài nguyên Logic Utilization Sẵn có NI - 1 FIFO Tác giả Đã sử dụng % Đã sử dụng % Slice Registers 301440 202 0,07 227 0,08 Slice LUTs 150720 186 0,12 361 0,24 IOBs 600 147 24,5 147 24,5 Kết quả tổng hợp cũng cho thấy rằng tốc độ hoạt động của NI do tác giả đề xuất lớn hơn so với tốc độ hoạt động của NI sử dụng bộ đệm đơn và trong nghiên cứu [4]. Nó được thể hiện như trong Bảng 2.5. Bảng 2.5. Tốc độ hoạt động của các bộ giao tiếp mạng Các nghiên cứu NI-1 FIFO [4] Tác giả MNI SNI Tốc độ (Mhz) 302 310 252 397 Tiếp theo, chức năng của NI đã đề xuất sẽ được kiểm tra thông qua mô phỏng RTL bằng cách sử dụng một lõi giả (dummy core) và bộ định tuyến. Lõi giả có chức năng tạo ra các gói tin ngẫu nhiên và tiến hành truyền/nhận gói tin đi/đến từ NI. Bộ định tuyến có chức năng nhận và truyền dữ liệu đến lõi giả thông qua NI theo cơ chế bắt tay req/ack. Kết quả truyền/nhận dữ liệu từ C2R và ngược lại từ R2C là chính xác. Hoạt động ghi/đọc dữ liệu vào/ra bộ đệm song song đã diễn ra. Điều này được thấy rõ trong biểu đồ thời gian 45 truyền thông giữa tài nguyên và bộ định tuyến như Hình 2.16. Kết quả mô phỏng cũng cho thấy rằng độ trễ truyền/nhận gói tin trung bình trong bộ giao tiếp mạng của tác giả đề xuất (94 chu kỳ đồng hồ) nhỏ hơn so với trễ truyền/nhận gói tin trung bình trong NI sử dụng bộ đệm đơn (126 chu kỳ đồng hồ). Hình 2.16. Biểu đồ thời gian truyền các gói tin từ tài nguyên đến bộ định tuyến Trong mục này, tác giả đã trình bày một kiến trúc mới cho bộ giao tiếp mạng trong NoC bằng ý tưởng ghi/đọc dữ liệu vào/ra bộ đệm một cách đồng thời. Các kết quả tổng hợp và mô phỏng cho thấy rằng thiết kế đã đề xuất có trễ thấp hơn và tốc độ hoạt động cao hơn so với cách tiếp cận sử dụng bộ đệm đơn. 2.3. Phát triển nền tảng phần cứng cấu hình lại từng phần động 2.3.1. Giới thiệu Các hệ thống nhúng thường được thiết kế để triển khai nhiều ứng dụng với chất lượng dịch vụ và các yêu cầu xử lý khác nhau. Trong những năm gần đây, công nghệ FPGA không ngừng phát triển, số lượng tài nguyên và tốc độ xử lý trên nó đang dần tăng, giá thành và tiêu thụ năng lượng tiếp tục giảm, nhiều tính năng mới được tích hợp, đặc biệt là khả năng cấu hình lại từng phần động [89, 97]. Do vậy, hệ thống trên chip dựa trên FPGA đã trở thành nền tảng đầy hứa hẹn cho các hệ thống nhúng hiệu năng cao vì nó cung cấp một sự cân bằng tốt giữa hiệu năng, rút ngắn thời gian đưa sản phẩm ra thị trường, chi phí và tính linh hoạt. Theo hướng này, hầu hết các hệ thống nhúng dựa trên FPGA đã được phát triển để hỗ trợ các ứng dụng đa phương tiện và các ứng dụng xử lý tín hiệu [30, 38, 48, 58]. Các ứng dụng này thường đòi hỏi cơ sở hạ tầng truyền thông linh hoạt, hiệu năng cao và khả năng xử lý dữ liệu nhanh. Do vậy, phát triển một nền tảng nhúng cấu hình lại được trên FPGA dựa theo mô hình NoC tại thời gian chạy là hết sức cần thiết và phù hợp với hướng phát triển này. Trong khuôn khổ của luận án này, tác giả tập trung vào phát triển một nền tảng phần cứng đa lõi cấu hình lại được trên FPGA bao gồm một lõi vi xử lý nhúng (ví dụ: Microblaze hoặc ARM) và các PE cấu hình lại được, chúng được kết nối với nhau thông qua kiến trúc truyền thông NoC. Nền tảng này có khả năng tự động cấu 46 hình lại cơ sở hạ tầng truyền thông một cách linh hoạt để thích nghi với các yêu cầu thay đổi của ứng dụng hoặc cho phép cấu hình lại các lõi PE để đáp ứng yêu cầu khi triển khai các ứng dụng có thể điều chỉnh mức chất lượng lên nền tảng. MicroBlaze/ ARM ICAP DDR3 UART Vùng tĩnh Vùng cấu hình lại được FPGA Bus Macro Hình 2.17. Mô hình kiến trúc cấu hình trên FPGA Để tạo ra một nền tảng phần cứng có thể cấu hình lại được dựa trên FPGA, bước đầu tiên là thực hiện phân vùng thiết bị vật lý. Hình dạng và sự phân bố các khu vực trên thiết bị vật lý đại diện cho kiến trúc cấu hình lại cơ bản mà hệ thống có thể được phát triển. Các thiết lập của các vùng được chia vào hai khu vực: Khu vực tĩnh và khu vực cấu hình như Hình 2.17. Tất cả các thành phần của hệ thống mà không cần phải thay đổi tại thời gian chạy được đặt bên trong khu vực tĩnh của thiết bị. Trong khi các chức năng có thể tự động cấu hình lại tại thời gian chạy phải được đặt trong khu vực cấu hình (khu vực động) [97]. Khu vực cấu hình có thể được chia thành một ma trận với nhiều ô (tile). Mỗi ô đại diện cho một vùng cấu hình của thiết bị. Tất cả các kênh truyền thông giữa khu vực tĩnh và khu vực cấu hình hoặc giữa các khu vực cấu hình có thể được đảm bảo tin cậy bằng các bus Macro. Việc lựa chọn các khối chức năng để đặt vào khu vực tĩnh hoặc khu vực cấu hình sẽ ảnh hưởng lớn đến cả sự linh hoạt và hiệu năng của hệ thống cuối cùng. Do vậy, người thiết kế cần phải có một chiến lược phân vùng hợp lý và đúng đắn cho các khối chức năng trước khi đặt chúng vào khu vực tĩnh hay khu vực cấu hình. Trước khi phát triển một nền tảng phần cứng cấu hình lại trên FPGA dựa trên mô hình NoC chúng ta cần xem xét lựa chọn các giải pháp phù hợp với các mục tiêu thiết kế đề ra. Giải pháp đầu tiên có thể xem xét đó là cho phép cấu hình lại cơ sở hạ tầng truyền thông mạng, có thể cấu hình bộ định tuyến hoặc các thành phần trong bộ định tuyến như bộ đệm, chuyển mạch, bộ phân xử, v.v. hoặc cấu hình cả cấu hình mạng để tối ưu kiến trúc truyền thông, trong khi duy trì cố định vị trí của các PE (lõi tính toán). Giải pháp này hoàn toàn phù hợp với kịch bản các ứng dụng chạy trên hệ thống có tải làm việc thay đổi động 47 (ví dụ: thay đổi hiệu năng, thay đổi mức chất lượng). Giải pháp thứ hai có thể được lựa chọn đó là thay đổi tự động các PE tại thời gian chạy, trong khi cơ sở hạ tầng truyền thông mạng được giữ cố định. Giải pháp này rất phù hợp cho bài toán ánh xạ các ứng dụng khác nhau lên hệ thống hoặc hệ thống có tài nguyên hạn chế nhưng yêu cầu triển khai nhiều ứng dụng lên nó tại các thời điểm khác nhau. Cuối cùng, người thiết kế có thể kết hợp cả hai giải pháp để tạo ra một hệ thống cấu hình lại có tính linh hoạt và khả năng thích nghi cao. Tuy nhiên, giải pháp này có thể làm tăng thời gian thiết kế cũng như tăng độ phức tạp trong việc quản lý các tác vụ cấu hình tại thời gian chạy. Trong giới hạn của nghiên cứu này, tác giả sẽ tập trung vào phát triển một nền tảng mẫu có thể thực hiện theo giải pháp thứ nhất hoặc giải pháp thứ hai. Phần tiếp, các nội dung như xây dựng thống cấu hình lại, các trường hợp nghiên cứu và thử nghiệm hệ thống trên FPGA sẽ được trình bày. 2.3.2. Xây dựng hệ thống (nền tảng phần cứng) cấu hình 2.3.2.1. Luồng thiết kế Tác giả sử dụng luồng thiết kế như Hình 2.18 để thiết lập một hệ thống cấu hình lại được từng phần động cho NoC trên FPGA. Buffer, Router, Topo or PE Dynamic nestlist (.ngc) ISE C project SDK Plan Ahead Systems and BlackBox Static netlist (.bmm, .ngc, .ucf) XPS ELF file Bitstream FPGA Hình 2.18. Sơ đồ luồng thiết lập hệ thống Các bộ công cụ của Xilinx được sử dụng trong luồng thiết kế này bao gồm: ISE, XPS (Xilinx Platform Studio), PlanAhead và SDK (Software Development KIT) phiên bản 14.1. Khu vực tĩnh và hộp đen (blackbox) của hệ thống được tạo ra bởi công cụ XPS. XPS thực hiện kết nối các lõi IP và tổng hợp để tạo ra các file nestlist (.ngc file) cũng như các file ràng buộc (.bmm file), đồng thời tạo các driver và datasheet để phục vụ cho việc phát triển phần mềm ở các công đoạn tiếp theo. Công cụ ISE được sử dụng để tổng hợp và tạo ra các mô đun đặt vào khu vực động của FPGA. Cụ thể, các bộ đệm với kích thước khác 48 nhau hoặc các cấu hình mạng chứa các bộ định tuyến đã được tính toán, tối ưu các thông số theo từng ứng dụng cụ thể (ví dụ: Kích thước bộ đệm, số kênh ảo, loại chuyển mạch, v.v.). Hoặc các lõi PE tương ứng theo ứng dụng sẽ được tổng hợp để chuẩn bị cho việc tạo ra file cấu hình (bitstream file). Các file cấu hình nạp vào FPGA khi hệ thống yêu cầu được tổng hợp bởi công cụ PlanAhead từ các file đã được tạo ra từ công cụ XPS và ISE nói trên. Tiếp theo một phần mềm điều khiển sẽ được phát triển trên công cụ SDK và được biên dịch thành một file có cấu trúc ELF, sau đó được nạp xuống

Các file đính kèm theo tài liệu này:

  • pdfluan_an_nghien_cuu_noc_cau_hinh_lai_duoc_tren_fpga_va_phat_t.pdf
Tài liệu liên quan