Mức hệ thống

Một phần của tài liệu Cấu hình lại phần cứng trong kiến trúc hệ thống nhúng như một khả năng tăng tính linh hoạt của hệ thống tự động (Trang 30)

Khi một thiết kế là kiểu mô-đun hóa cao, một lỗi có thể đƣợc chấp nhận bằng việc sử dụng một khối chức năng dự phòng, cung cấp hiệu năng thấp đi hoặc bằng cách điều các nhiệm vụ lỗi tới các khối khác trên toàn hệ thống. Các giải pháp kỹ thuật cao trong các lĩnh vực ô tô khám phá khả năng chịu lỗi ở cấp độ hệ thống. Trong dự án ReCoNets [52], các điểm (node) có thể cấu hình lại đƣợc kết nối với nhau để tạo thành một mạng lƣới các máy tính cấu hình lại. Thủ tục tự sửa chữa và phân vùng thông minh đƣợc phát triển để đạt đƣợc khả năng chịu lỗi ở cấp độ hệ thống. Để đảm bảo thời gian sửa chữa ngắn trong trƣờng hợp điểm bị lỗi, vị trí mới của nhiệm vụ đƣợc tối ƣu hóa và chuyển tới các điểm khác.

Mô hình của ReCoNets chứa 4 FPGA với 1 bộ xử lý bên trong mỗi FPGA. Nếu một FPGA là bị ngắt kết nối do một số lỗi, nhiệm vụ của nó sẽ đƣợc tự động phân phối vào ba FPGA khác, và hệ thống tiếp tục hoạt động. Hệ thống này không khai thác DPR, vì vậy nó đòi hỏi một lƣợng lớn của bộ nhớ để lƣu trữ tất cả các bitstream. Hơn nữa, khi có một lỗi trong một FPGA, ba FPGA khác phải đƣợc khởi động lại để đặt lại các nhiệm vụ mà có khả năng mất một thời gian dài cho chức năng ngắt.

Nguyễn Viết Hiếu – K16D2

2.4.3. Chiến lược phục hồi bối cảnh 2.4.3.1. Giới thiệu về bối cảnh

Trong một hệ thống chịu lỗi, bên cạnh việc phát hiện lỗi và sửa chữa, thì cần thiết phải đặt các mô-đun bị lỗi trở lại trạng thái chính xác tƣơng tự nhƣ trƣớc khi lỗi xảy ra, đặc biệt là khi toàn bộ hệ thống hoặc quá trình khởi động lại có thể là điều không đƣợc phép. Vì vậy, cần phải lƣu trữ bối cảnh chính xác và khôi phục lại nó sau khi lỗi đƣợc sửa chữa. Sau đó, các mô-đun có thể tiếp tục thực hiện nhiệm vụ tại các điểm lƣu.

Bối cảnh là một tập hợp các thông tin cần thiết để xác định trạng thái của mô-đun tại một thời điểm nhất định. Nó có thể bao gồm các trạng thái của tất cả các thanh ghi liên quan, bộ nhớ cache, bộ nhớ,.. của mô-đun. Lƣu và khôi phục lại tất cả các giá trị có liên quan cho phép chuyển đổi bối cảnh của mô-đun và phục hồi khi lỗi.

Bối cảnh bộ vi xử lý: Một bối cảnh bộ vi xử lý đƣợc chứa trong các giá trị thanh ghi xử lý. Bối cảnh bộ xử lý lõi mềm MicroBlaze đƣợc đại diện bởi các giá trị 32-bit của 32 thanh ghi dùng chung và 2 thanh ghi đặc biệt: Thanh ghi bộ đếm chƣơng trình (PC) và Thanh ghi tình trạng máy (MSR) [57]. Giá trị của những thanh ghi này đại diện cho trạng thái của bộ vi xử lý.

Có tồn tại nhiều kỹ thuật phục hồi bối cảnh khác nhau vào lúc này để lƣu trữ và khôi phục lại bối cảnh.

2.4.3.2. Checkpointing and Rollback [20]

Trong quá trình thực hiện nhiệm vụ, mô-đun đƣợc thƣờng xuyên kiểm tra cho nhất quán tại cái gọi là điểm kiểm soát (check-point). Nếu mô-đun qua kiểm tra, bối cảnh chính xác và đƣợc lƣu tại điểm kiểm soát đó. Nếu không, trạng thái mô-đun đƣợc phục hồi từ trạng thái chính xác của các điểm kiểm soát trƣớc đó. Quá trình thƣờng xuyên kiểm tra cho phù hợp và lƣu trữ bối cảnh chính xác đƣợc gọi là checkpointing. Sự phục hồi ngữ cảnh trong trƣờng hợp này đƣợc gọi là rollback.

Hình 2.16: Phục hồi kiểu rollback dùng checkpointing

Rollback thƣờng đƣợc sử dụng trong các hệ thống song công mà không cần biết về các mô-đun lỗi. Khi một lỗi xảy ra, so sánh điểm kiểm tra chỉ phát hiện sự không

Nguyễn Viết Hiếu – K16D2

thống nhất giữa hai mô-đun. Khi không có lỗi xảy ra trong một khoảng kiểm soát, rollback không cần thiết. Hình 2.17 miêu tả một kịch bản khi một lỗi xảy ra giữa hai điểm kiểm soát. Tại thời điểm này, không thể biết mô-đun nào là không lỗi để sao chép bối cảnh chính xác của nó vì vậy chúng tôi không thể sao chép các bối cảnh từ A, B hoặc ngƣợc lại. Vì vậy, lựa chọn duy nhất là rollback cả hai mô-đun tại checkpoint trƣớc đó.

Hình 2.17: Rollback trong hệ thống song công

2.4.3.3. Rollforward [20]

Mặt khác, trong một hệ thống có khả năng của cô lập hóa các lỗi, rollforward có thể đƣợc sử dụng. Trong hình 2.18, khi một lỗi đƣợc xác định trong mô-đun B, các mô-đun A và C tiếp tục thực hiện nhiệm vụ. Sau khi sửa lỗi, trạng thái chính xác có thể đƣợc sao chép tới mô-đun B từ mô-đun A hoặc C.

Hình 2.18: Rollforward scheme

Rollback có thể đƣợc sử dụng trong một hệ thống song công mà không có khả năng định vị lỗi và rollforward có thể đƣợc sử dụng cho việc phục hồi lỗi thoáng qua trong TMR hoặc song công với phát hiện vị trí lỗi. Trong hầu hết trƣờng hợp, rollback cung cấp chi phí thời gian nhiều hơn rollforward vì thời gian yêu cầu của các checkpoint thƣờng đƣợc kết hợp với rollback.

2.5. Chiến lƣợc giảm SEU trong các FPGA dựa trên SRAM

SEU đƣợc công nhận là mối quan tâm chính về vấn đề độ tin cậy trong FPGA dựa trên SRAM. Tính năng của cấu hình lại từng phần linh động đƣợc giới thiệu trong các kiến trúc cấu hình lại mới không chỉ tăng cƣờng tính linh hoạt, mà cũng có thể đƣợc sử dụng cho việc cải thiện mức độ khả năng chịu lỗi của hệ thống. Vì vậy, bên cạnh các giải pháp về khả năng chịu lỗi cổ điển đƣợc liệt kê tại mục 2.4, một số kỹ thuật chịu lỗi sử dụng cấu hình lại linh động đối phó với SEU đã đƣợc đề xuất. Theo

Nguyễn Viết Hiếu – K16D2

loại SEU khác nhau trong bộ nhớ cấu hình, các chiến lƣợc thích hợp đƣợc chọn để đối phó với mỗi SEU cấu hình cụ thể.

Vì vậy, luận văn này phân loại SEU cấu hình sau hành vi về tính bền bỉ của chúng (tức là lỗi ảnh hƣởng đến khung cấu hình nhƣ thế nào trong FPGA, đƣợc mô tả tại mục 2.3.1). Sau đó, luận văn này cũng giới thiệu các chiến lƣợc tiềm năng đối phó với những SEU cấu hình.

2.5.1. Readback

Readback [68] là một hoạt động đọc thông tin cấu hình của bộ nhớ cấu hình. Sau khi một FPGA đƣợc lập trình, readback cho phép đọc dữ liệu lập trình của FPGA và các thông tin khác thông qua giao diện cấu hình.

Đầu tiên, readback có thể đƣợc sử dụng để đảm bảo rằng các dữ liệu cấu hình hiện thời đƣợc lƣu trữ trong FPGA là chính xác. Nó cung cấp khả năng phát hiện các SEU trong bộ nhớ cấu hình mà không làm gián đoạn hoạt động của mình.

Thứ hai, readback có thể đƣợc dùng để đọc trạng thái hiện tại của tất cả các CLB nội, bộ kết nối và hộp chuyển mạch cho việc gỡ lỗi phần cứng, chức năng xác minh của các ứng dụng máy tính cấu hình lại. Readback chỉ cung cấp khả năng phát hiện, nó phải hợp tác với một kỹ thuật hiệu chỉnh.

2.5.2. Tái cấu hình từng phần

Ảnh hƣởng của rối loạn cấu hình là vĩnh viễn cho đến khi tải lại cấu hình tiếp theo. Nó có thể đạt đƣợc bằng cách cấu hình lại toàn bộ cụ thể là tải lại cấu hình của toàn bộ thiết bị. Giải pháp này có thể tạo ra một sự gián đoạn dịch vụ tạm thời của toàn bộ hệ thống, điều này có thể bị cấm đối với một số ứng dụng. Một giải pháp khác là sử dụng cấu hình lại từng phần để chỉ làm mới các mô-đun có liên quan mà không làm gián đoạn phần còn lại của mạch. Rõ ràng, với cấu hình lại từng phần để loại bỏ nhiễu loạn là ít tốn kém hơn thời gian .

Cấu hình sạch

Nếu trong khi readback, dòng dữ liệu cấu hình đƣợc tìm thấy không hợp lệ, nhiễu loạn nên đƣợc sửa chữa càng nhanh càng tốt để tránh bất kỳ kết quả không đƣợc tiên đoán. Kể từ khi một khung cấu hình là phần nhỏ nhất có thể lập trình lại, nên tải lại toàn bộ khung bị ảnh hƣởng với các dữ liệu chính xác bằng cách sử dụng kỹ thuật làm sạch. Kỹ thuật làm sạch có thể đƣợc kết hợp với readback để xác định vị trí bit lật và đảo lại nó, hoặc dữ liệu khung cơ sở có thể đƣợc lƣu trữ trong bộ nhớ có độ tin cậy cao mà bộ điều khiển làm sạch có thể tìm thấy thông tin cấu hình.

Kỹ thuật làm sạch

Rối loạn có thể tích lũy trong ma trận trong một thời gian dài, gây ra một lỗi trong hệ thống ngay cả khi dự phòng đƣợc áp dụng, nên cần thiết để làm sạch tất cả các rối loạn trong cùng một tần số để đảm bảo các chức năng chính xác. Kỹ thuật

Nguyễn Viết Hiếu – K16D2

thƣờng xuyên tải lại dữ liệu cấu hình với thông tin chính xác đƣợc gọi là kỹ thuật làm sạch [18]. Làm sạch đƣợc sử dụng để tránh sự tích tụ nhiễu loạn và tự bản thân việc làm sạch không chứa bất kỳ cơ chế phát hiện nào. Làm sạch có thể đƣợc sử dụng độc lập để làm sạch các nhiễu loạn bên trong ma trận, nó định kỳ làm mới bộ nhớ cấu hình. Trong trƣờng hợp này, tần số làm tƣơi phải là cao hơn mức dự kiến xuất hiện của các nhiễu loạn. Một nghiên cứu xuyên suốt về tỷ lệ nhiễu loạn nên đƣợc thực hiện trƣớc khi áp dụng kỹ thuật làm sạch, đòi hỏi rất nhiều điều tra của công nghệ sản xuất thiết bị cũng nhƣ điều kiện môi trƣờng. Do đó, điều này có thể trì hoãn đáng kể thời gian để thị trƣờng của hệ thống.

Trong luận văn này, phân biệt cấu hình sạch nhƣ các hoạt động tải lại hoặc sửa đổi một khung cấu hình với kỹ thuật làm sạch nhƣ các hoạt động tải lại tất cả các khung cấu hình của hệ thống mục tiêu.

Tái cấu hình dựa trên mô-đun

Nếu không xác định chính xác các khung cấu hình bị lỗi, toàn bộ mô-đun bị lỗi cần phải đƣợc cấu hình lại với dữ liệu cấu hình chính xác để loại bỏ lỗi. Việc này đòi hỏi toàn bộ hệ thống phải đƣợc thiết kế bằng cách sử dụng tái cấu hình từng phần dựa trên mô-đun. Tái cấu hình dựa trên mô-đun sử dụng quy trình thiết kế đƣợc giải thích tại mục 2.2.2. Các bitstream từng phần của các mô-đun có thể cấu hình lại đƣợc tạo ra bằng cách sử dụng phƣơng pháp này. Tái cấu hình một mô-đun đƣợc thực hiện bằng cách tải bitstream từng phần tƣơng ứng thông qua cổng cấu hình lại.

Kỹ thuật lát gạch - Tiling

Các lỗi thƣờng trú có thể xuất hiện trong ma trận do tích lũy lâu dài hoặc quá trình sản xuất bị lỗi. Loại lỗi này có thể gây nhiều rối loạn cấu hình và có thể đƣợc phát hiện bằng cách sử dụng sự kết hợp của nhiều chiến lƣợc. Tuy nhiên, lỗi thƣờng trú không thể đƣợc gỡ bỏ bằng cách tải lại dữ liệu cấu hình. Một giải pháp để sửa chữa lỗi thƣờng trú trong FPGA đƣợc trình bày trong [49]. Một mô-đun bị lỗi có thể đƣợc sửa chữa bằng cách cấu hình lại các chip để một khối logic có thể cấu hình lại bị hƣ hỏng (CLB - Configurable Logic Block) hoặc nguồn tài nguyên định tuyến không đƣợc sử dụng bởi thiết kế. Nhiều kỹ thuật đã đƣợc trình bày để cung cấp loại bỏ sự cố thƣờng trú cho các FPGA thông qua tái cấu hình. Một giải pháp là tạo ra tại thời gian chạy một cấu hình mới sau khi sự cố thƣờng trú đƣợc phát hiện. Giải pháp này là không khả thi vì tổng hợp logic rất phức tạp, chiến lƣợc sắp đặt và định tuyến chỉ có thể đƣợc thực hiện trên các máy tính bên ngoài. Một giải pháp khác đƣợc gọi là tiling (kỹ thuật lát gạch) là để tạo ra các cấu hình FPGA thay thế trƣớc khi biên dịch và lƣu trữ các các bitstream cấu hình trong bộ nhớ tĩnh. Hình 2.19 mô tả các nguyên lý tiling. Cùng một thiết kế có ba cấu hình khác nhau (a), (b) và (c) và mỗi cấu hình có một khu vực chƣa đƣợc sử dụng (gạch). Nếu một lỗi thƣờng trú đƣợc tìm thấy trong một ―viên gạch‖, cấu hình thích hợp mà có ―viên gạch‖ chƣa đƣợc sử dụng bao gồm các lỗi là đƣợc tải.

Nguyễn Viết Hiếu – K16D2

Hình 2.19: Nguyên lý lát gạch - Tiling

Tiling là một trong những kỹ thuật phổ biến nhất để đối phó với sự cố thƣờng trú bởi vì khi phát hiện có sự cố thƣờng trú, một cấu hình mới có thể đƣợc lựa chọn mà không có sự chậm trễ của định tuyến lại và tái lập lại. Tuy nhiên, giải pháp này yêu cầu số lƣợng bộ nhớ lớn cho lƣu trữ các cấu hình.

Việc sử dụng Tiling đòi hỏi phải áp dụng một cơ định vị lỗi thƣờng trú nhƣ: readback lặp đi lặp lại các khung bị lỗi, nếu lỗi vẫn tồn tại sau khi điều chỉnh liên tục, lỗi thƣờng trú đƣợc khai báo và định vị bởi readback. Bởi vì độ chi tiết của tái cấu hình dựa trên khung, nên ―viên gạch‖ không đƣợc nhỏ hơn một khung cấu hình.

2.5.3. Kết hợp các hướng tiếp cận

Sự kết hợp của vài phƣơng pháp tiếp cận chịu lỗi đã đƣợc khai thác. Các giải pháp từ [69, 37, 14] kết hợp readback với cấu hình sạch. Chúng có khả năng phát hiện và sửa lỗi bằng cách sử dụng các phƣơng pháp tiếp cận mức thấp là phát hiện các bit lật không mong muốn trong bộ nhớ cấu hình. Tuy nhiên, các hệ thống này không thể phân biệt đƣợc các lỗi phát hiện thực sự ảnh hƣởng đến thiết kế. Đôi khi, bit bị lật không thuộc về bất kỳ thiết kế nào, vì vậy việc sửa chữa lỗi này là vô nghĩa, bởi vì bit không nhạy cảm này không thực sự ảnh hƣởng đến chức năng hệ thống.

Mã kiểm tra CRC và phƣơng pháp nhân ba tài nguyên với bộ xác định chính đƣợc sử dụng song song trong [27]. Mã kiểm tra CRC đƣợc tạo ra tƣơng ứng với các mô-đun lặp, việc xác định (vote) đƣợc thực hiện dựa trên những CRC này để phát hiện các lỗi. Hệ thống này cũng có thể đƣợc phục hồi bằng cách sao chép bộ nhớ cấu hình của các FPGA không lỗi tới FPGA có lỗi. Trên thực tế, giải pháp này đòi hỏi phải xâm nhập sửa đổi mục đích thiết kế do đó có thể ảnh hƣởng đến các chức năng. Hơn nữa, giải pháp này chỉ có thể làm việc với hệ thống đa FPGA và không đƣợc áp dụng vào chỉ một thiết bị vì tính không đồng nhất của cấu trúc FPGA nội. Cuối cùng, hệ thống đa FPGA thực hiện giải pháp này phải sử dụng cùng một thiết bị FPGA cho toàn bộ nền tảng cũng vì sự không đồng nhất của các FPGA khác nhau.

Phƣơng pháp cấu hình lại từng phần linh đƣợc động đồng bộ với TMR đƣợc trình bày trong [17] kết hợp với tái cấu hình từng phần linh động với TMR. Phƣơng pháp này sử dụng TMR thô với một bộ xác định (voter) đặc biệt có thể chỉ ra các mô-đun bị

Nguyễn Viết Hiếu – K16D2

lỗi. Định nghĩa các điểm kiểm soát (check-point) cho phép đồng bộ hóa các mô-đun. Sử dụng tái cấu hình từng phần linh động, một khối bị lỗi là đƣợc cấu hình lại và tái đồng bộ hóa đƣợc thực hiện trong khi phần còn lại của hệ thống hoạt động. Kỹ thuật này làm cho nó có thể cấu hình lại một khối của TMR đang chạy, vì vậy mà không mất thông tin. Tuy nhiên, phƣơng pháp này là không thích hợp cho hệ thống lớn đƣợc bởi vì quá nhiều phần cứng của TMR. Hơn nữa, dung lƣợng bộ nhớ lớn là cần thiết để lƣu trữ bối cảnh tại điểm kiểm soát (check-point). Các điểm kiểm soát cần đƣợc phân tích cẩn thận để bảo dƣỡng các dịch vụ, chức năng. Cuối cùng, loại hệ thống này không có tính ứng dụng rộng rãi bởi vì nó chỉ thích nghi với máy trạng thái hữu hạn (FSM - Finite State Machine) nơi mà tất cả các trạng thái đƣợc xác định tốt trong giai đoạn

Một phần của tài liệu Cấu hình lại phần cứng trong kiến trúc hệ thống nhúng như một khả năng tăng tính linh hoạt của hệ thống tự động (Trang 30)

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

(82 trang)