CHƢƠNG 2 : CÁC KHÁI NIỆM
3.6. Thực hiện chi tiết
Hệ thống FT-DyMPSoC đƣợc xây dựng trên Virtex-5 XC5VSXT50T. Một hệ thống ứng dụng đƣợc xây dựng với ba bộ vi xử lý MicroBlaze linh động và hai bộ lọc âm thanh cũng trong khu tự động cấu hình lại. Ba bộ vi xử lý hoạt động ở 100MHz. Bộ xử lý 1 kết nối với một máy ảnh, kiểm soát việc nhận lại video và sau đó hiển thị nó trên một màn hình. Bộ xử lý này đƣợc sử dụng cho mục tiêu ADAS (Hệ thống hỗ trợ lái xe nâng cao) nhƣ tránh va chạm, tầm nhìn ban đêm hoặc phát hiện điểm mù. Bộ xử lý 2 điều khiển các cấu hình âm thanh bằng cách chọn các bộ lọc thích hợp (lọc tất cả, lọc thông cao, lọc thông cao hay pass-band) và cấu hình lại chúng khi đang chạy. Bộ xử lý 3 điều khiển khung cửa sổ xe bởi ngƣời sử dụng các nút và bung các túi khí trong trƣờng hợp phát hiện va chạm.
Hình 3.11: Tổng quan việc thực hiện hệ thống trên FPGA Editor với ứng dụng trên oto
Tổng quan thực hiện của hệ thống đƣợc hiển thị trong hình 3.11. Các thành phần lớn nhất là bộ điều khiển DDR2 SDRAM bởi vì nó thực hiện các nhiệm vụ lớn nhƣ lƣu trữ các bối cảnh bộ xử lý, cho khung hình đệm video và cho các quá trình cấu hình lại. Bộ điều khiển này là tĩnh và quản lý 512 MBytes của DDR2 SDRAM.
Nhƣ trong bảng 3.1, kích thƣớc bitstream bộ xử lý tƣơng ứng là 194, 177 và 158 KBytes cho bộ xử lý 1, 2 và 3. Kích thƣớc bitstream khác nhau của vi xử lý do để thực hiện chức năng khác nhau, do đó gây ra các yêu cầu phần cứng khác nhau cho mỗi bộ vi xử lý. Với các chức năng tƣơng tự, kích thƣớc bitstream phụ thuộc đáng kể vào kích thƣớc PRR. Kích thƣớc bitstream không phụ thuộc vào vị trí PRR trong ma trận FPGA. Tuy nhiên, nó phụ thuộc vào số lƣợng của khu vực đồng hồ bị ảnh hƣởng (các khu vực cơ sở), ngay cả khi kích thƣớc PRR vẫn nhƣ nhau. Để giảm thiểu các kích thƣớc bitstream của một số lƣợng nhất định các nguồn tài nguyên, nó là cần thiết để mở rộng thành PRR trên ranh giới khu vực đồng hồ, do đó làm giảm các khung cấu hình lại để đƣợc cấu hình lại.
Bảng 3.1: Các tài nguyên phần cứng hệ thống
Một socket trong FT-DyMPSoC yêu cầu có 8 LUT vì nó chỉ đóng vai trò kết nối các thành phần, mà không thực hiện các chức năng tính toán. Hơn nữa, một wrapper không tiêu tốn bất kỳ tài nguyên nào kể từ khi nó chỉ là một thành phần ảo giúp giảm bớt quy trình thiết kế. Do đó, đề xuất việc sửa đổi quy trình thiết kế đòi hỏi tài nguyên phần cứng rất ít, nhƣng đáng kể đẩy nhanh tiến độ giai đoạn xây dựng hệ thống.
Nhớ lại rằng các bitstream cần đƣợc sao chép trong DDR2 để đƣợc truy cập bởi tất cả các bộ xử lý. Bằng cách thay đổi kích thƣớc của PRR, sẽ nhận đƣợc kích thƣớc bitstream khác nhau. Đo đƣợc thời gian cấu hình lại từ CF (CF2ICAP trong bảng 3.2) với kích cỡ khác nhau của bitstream, cũng là thời gian để sao chép các bitstream để DDR2 (CF2DDR) và thời gian để cấu hình lại hệ thống từ DDR2 (DDR2ICAP). Thời gian cấu hình lại từ DDR2 là nhanh hơn khoảng 75% so với từ thẻ CF. Tuy nhiên, thủ tục sao chép bitstream tới DDR2 và đọc từ bộ nhớ DDR2 có thể làm tăng xác suất lỗi trong quá trình thao tác bitstream. Để trả lời vấn đề này, phát hiện lỗi và mã sửa chữa (nhƣ mã chẵn lẻ, mã Hamming hoặc mã CRC) có thể khắc phục vấn đề này. Tuy nhiên, các chi phí có thể tăng kích thƣớc bitstream nên thời gian cần thiết để sao chép và cấu hình lại từ DDR2.
Thời gian cấu hình lại yêu cầu sử dụng bộ nhớ DDR2 trong ba bộ vi xử lý tƣơng ứng là 99, 91 và 80 ms. Vì vậy, khoảng thời gian ngắt đƣợc lựa chọn tại 100 ms đó là cấp trên để lần cấu hình lại các bộ vi xử lý để gián đoạn thƣờng xuyên không làm gián đoạn quá trình cấu hình lại. Đối với các hệ thống khác có ràng buộc khả năng chịu lỗi hoặc thời gian thực khác, FT-DyMPSoC có thể nhanh chóng thích nghi bằng cách cấu hình lại tự động điều khiển gián đoạn với khoảng thời gian thích hợp.
Bảng 3.2: Thời gian thao tác Bitstream
Quá trình sao chép các bitstream của tất cả các bộ vi xử lý là rất dài (281 + 310 + 357 = 948 ms), nhƣng giai đoạn này diễn ra chỉ một lần khi hệ thống khởi động, sau đó cấu hình lại bộ vi xử lý từ DDR2 với yêu cầu thời gian ngắn hơn. Trong trƣờng hợp có lỗi trong một bộ xử lý, chỉ có 2 bộ vi xử lý treo nhiệm vụ của chúng trong gần một khoảng thời gian ngắt để sửa lỗi đó, trong khi 2 bộ xử lý khác tiếp tục thực hiện nhiệm vụ của mình.
Thời gian cần thiết để lƣu trữ một bối cảnh MicroBlaze với DDR2 là 4,5s, và để khôi phục lại là 7,65s. Vì vậy, trong chức năng sửa lỗi của toàn bộ hệ thống, một quá trình checkpointing cần 5,5s.
Hình 3.12: Khoảng thời gian đồng bộ hóa
Quá trình đồng bộ hóa trong một hệ thống có 2 bộ xử lý chạy ở 100 MHz cần 85µs (8492 chu kỳ). Với 3, 4, 5 và 6 bộ vi xử lý, mất lần lƣợt 183µs, 287µs, 402µs và 523µs (hình 3.12). Ngay cả những yêu cầu đồng bộ hóa thời gian tăng lên đáng kể khi
số lƣợng bộ vi xử lý tăng lên, thời gian đồng bộ hóa là vẫn còn kém hơn rất nhiều so với khoảng thời gian ngắt (183µs với 3 bộ vi xử lý so với 100 ms của khoảng thời gian ngắt). Quá trình đồng bộ hóa với quá trình phục hồi bối cảnh là không tăng nhiều thời gian cho hệ thống.
Để đo thời gian thực hiện các hoạt động khác nhau trong các bộ vi xử lý, một bộ đếm thời gian [75] đƣợc thêm vào hệ thống. Bộ đếm thời gian này là một phần cứng ngoại vi và điều khiển bởi bộ vi xử lý 1. Số của chu kỳ đồng hồ đƣợc tính bằng bộ đếm thời gian có thể đƣợc dễ dàng đọc bằng cách sử dụng bộ vi xử lý. Do đó, thời gian đo của hoạt động cần thiết đƣợc thực hiện bằng cách bắt đầu và dừng các bộ đếm thời gian tƣơng ứng, khi bắt đầu và kết thúc các hoạt động liên quan.
Bảng 3.3 so sánh các hệ thống FT-DyMPSoC với các kỹ thuật về khả năng chịu lỗi khác cho kiến trúc cấu hình lại. Tỉ lệ bao phủ lỗi của tính năng giảm lỗi. Khả năng mô tả liên tục của việc phục hồi các nhiệm vụ trong tiến trình tại các điểm tạm dừng do xảy ra lỗi. Cột cuối cùng đại diện các khả năng để đối phó với lỗi thƣờng trú.
Bảng 3.3: So sánh các kỹ thuật chịu lỗi khác nhau
Kỹ thuật làm sạch rõ ràng đòi hỏi tài nguyên phần cứng ít hơn vì kỹ thuật này đòi hỏi phải chỉ có một bộ điều khiển nhỏ thực hiện các nhiệm vụ chi tiết.
Sự kiện FT-DyMPSoC sử dụng cơ chế khóa bƣớc với tài nguyên nhân bản cho các bộ vi xử lý, khu vực sử dụng cho bộ vi xử lý không đƣợc nhân đôi bởi vì tỷ lệ sử dụng cao hơn trong PRR. So với các đề nghị trong [45] trong đó bộ vi xử lý đƣợc nhân ba trong bối cảnh MPSoC, phần cứng quá lớn có thể là một nút cổ chai cao. Ngoài ra, các liên kết truyền thông giữa các bộ vi xử lý không đƣợc nhân đôi nhờ vào các thuật toán ma trận kết nối. Vì vậy, các tài nguyên phần cứng cần thiết cho FT-DyMPSoC là 1,6 lần so với một hệ thống cơ bản.
Các kỹ thuật phần cứng dự phòng đòi hỏi tài nguyên phần cứng đáng kể vì kỹ thuật tự nhân ba hoặc nhân đôi cùng với bộ xác định hoặc bộ so sánh.
Trong góc nhìn về khả năng bao phủ lỗi, các kỹ thuật dự phòng cung cấp các kết quả tốt nhất khi lỗi đƣợc phát hiện và sửa chữa ngay lập tức. FT-DyMPSoC cung cấp một phạm vi bao phủ lỗi gần 100% tùy thuộc vào tốc độ đồng bộ hóa. Dù sao FT- DyMPSoC cung cấp khẳ năng bao phủ lỗi tốt hơn so với kỹ thuật làm sạch, khi tốc độ đồng bộ hóa là luôn luôn cao hơn tỷ lệ làm sạch.
Thật khó để xác định tính liên tục của kỹ thuật làm sạch. Phƣơng án TMR cung cấp tính liên tục tốt nhất bởi vì nhiệm vụ có thể tiếp tục thực hiện mặc dù xảy ra lỗi.
Trong khi đó, phƣơng án DWC cung cấp khẳ năng về tính liên tục thấp khi mà cả hai mô-đun khi nhân bản cần phải đƣợc cập nhật sửa lỗi. FT-DyMPSoC cung cấp tính liên tục tốt với chiến lƣợc rollback đƣợc áp dụng trong hệ thống.
Và cuối cùng, trong số những kỹ thuật này, FT-DyMPSoC là hệ thống duy nhất có thể đối phó với lỗi thƣờng trú nhờ thực hiện kỹ thuật ‗lát gạch‘ (trang 33).
Hệ thống Re2DA: Trong phần thực hiện này, có 4 MicroBlazes và một DRAFT
hoạt động ở 100 MHz, trong khi DDR2 hoạt động ở 200 MHz. PRR chứa DRAFT dùng 1920 LUT cần 53 ms để cấu hình lại trong khi PRR cho mỗi bộ vi xử lý tiêu thụ 2.240 LUT (thời gian cấu hình lại là 59 ms). Trong điều kiện tốt tất cả 4 bộ vi xử lý và DRAFT đúng chức năng, quá trình đồng bộ hóa mất 1µs để kết thúc. Trong trƣờng hợp lỗi xảy ra hoặc trong DRAFT hoặc trong một bộ xử lý, nhiệm vụ bộ xử lý gián đoạn là dƣới 60 ms là chấp nhận đƣợc cho các kịch bản ứng dụng.
Nền tảng đa FPGA: Một nền tảng bao gồm ba Virtex-5 XC5VSXT50T sử dụng
giao tiếp ethernet đƣợc thực hiện. Mỗi FPGA có chứa một hệ thống FT-DyMPSoC 4 MicroBlazes. Các MicroBlazes chạy ở 100 MHz. Các truyền thông nội FPGA đƣợc thực hiện thông qua giao thức TCP/IP của thƣ viện lwIP đƣợc điều khiển bởi một MicroBlaze trong mỗi FPGA. Thƣ viện lwIP có thể hoạt động ở hai chế độ: chế độ RAW và chế độ Socket.
API RAW cung cấp một giao diện kiểu gọi lại (callback) cho ứng dụng. Các ứng dụng sử dụng RAW API đang ký các hàm callback để đƣợc gọi là sự kiện quan trọng nhƣ chấp nhận, đọc hoặc viết. Chế độ Socket cung cấp một API đơn giản, các khối trên socket lần đọc và viết cho đến khi chúng hoàn thành. Tuy nhiên, API Socket yêu cầu nhiều mảnh để đạt đƣợc điều này và API này là quá tải cho tất cả các hoạt động, do đó, nó rất chậm.
Mặc dù các API RAW là phức tạp hơn so với các API SOCKET, nó cung cấp thông lƣợng cao hơn nhiều bởi vì nó không dễ bị quá tải.
Bảng 3.4: Đo lường hiệu suất Ethernet
Để giúp khám phá nền tảng, đo lƣờng hiệu suất đƣợc áp dụng trong các nền tảng đa FPGA trong cả hai chế độ (Table3.4). Nhận và phát bằng cách sử dụng chế độ RAW cao hơn nhiều so với chế độ Socket. Kích thƣớc bitstream của MicroBlaze 1 là khoảng 170 KBytes mà cần (170Kbytes * 8 bit) / (104Mbps10 ^ 3) = 13 ms để chuyển từ một FPGA tới một FPGA khác bằng cách sử dụng chế độ RAW.
Với 32 KBytes mã code phần mềm của một MicroBlaze tƣơng ứng với một bitstream 5 Kbit. Cấu hình lại bằng cách sử dụng bitstream này sẽ chỉ thay đổi các phần mềm chạy trên MicroBlaze mà không ảnh hƣởng đến phần cứng. Bối cảnh phần
mềm của MicroBlaze 1 có kích thƣớc của 1 Kbits. Vì vậy, nếu chúng ta muốn tiếp tục nhiệm vụ của MicroBlaze từ một FPGA trên một FPGA khác, chỉ có bitstream phần mềm (5 Kbits) và bối cảnh phần mềm (1 Kbits) cần phải đƣợc chuyển giao thông qua mạng ethernet mà đòi hỏi chỉ có 58µs.