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ị
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 thiết kế.
2.5.4. Tiêm lỗi
Để đánh giá độ tin cậy của một hệ thống, cần thiết để đánh giá hiệu quả các phƣơng án giảm lỗi áp dụng trong hệ thống. Điều này liên quan đến các thí nghiệm tiêm lỗi để ƣớc lƣợng các tham số lỗi. Nói chung, có rất nhiều cách để thực hiện tiêm lỗi. Một SEU trong một tế bào nhớ có thể đƣợc mô hình hóa nhƣ một bit lật. Nó có thể đƣợc dễ dàng tiêm trong thành phần bộ nhớ đƣợc mô tả trong ngôn ngữ mô tả phần cứng, chẳng hạn nhƣ VHDL hoặc Verilog, bằng cách thực hiện một hoạt động XOR giữa giá trị đƣợc lƣu trữ ban đầu và mặt nạ, mặt nạ này xác định bit sẽ đƣợc lật [29].
Với các FPGA dựa trên SRAM, lật bit có thể xảy ra trong bất kỳ bit nào của bitstream, kết quả là, thực hiện các lỗi tiêm trực tiếp trong bitstream FPGA mà không cần hiểu thiết kế và cấu trúc liên kết trong mô tả phần cứng. Bitstream có thể đƣợc trực tiếp sửa đổi bằng cách sử dụng bất kỳ trình soạn thảo văn bản trên máy tính. Sửa đổi này không cần biết cấu trúc thiết kế, nhƣng cấu trúc bitstream của thiết bị có liên quan thì các bit đƣợc thay đổi phải nằm trong phần dữ liệu mà không phải trong phần lệnh.
Bộ phát triển phần mềm JBits (SDK) [70] là một tập hợp các lớp Java cung cấp một giao diện chƣơng trình ứng dụng (API) vào bitstream của họ FPGA Xilinx Virtex- II. Giao diện này hoạt động hoặc trên các bitstream tạo ra bởi các công cụ thiết kế Xilinx, hoặc trên các bitstream readback từ phần cứng thực tế. Điều này cung cấp khả năng thiết kế, điều chỉnh và tự động thay đổi các mạch trong các thiết bị Virtex. JBits API cung cấp cho ngƣời dùng khả năng cấu hình trực tiếp CLB. Bằng cách sử dụng các lớp JBits, ta có thể thực hiện một lỗi tiêm chọn lọc trong bitstream, mà cũng có thể làm giảm thời gian tiêm lỗi. Các thao tác với bitstream bằng cách sử dụng trình soạn thảo văn bản hoặc JBits SDK là phƣơng pháp sử dụng máy tính bên ngoài. Phƣơng pháp trực tuyến [28] cũng đƣợc áp dụng bằng cách sử dụng các nguồn tài nguyên cấu hình lại đƣợc sẵn có trong thiết bị để thực hiện tái cấu hình lại linh động. Một bộ điều khiển chuyên dụng đƣợc xây dựng bên trong ma trận readback của khung liên quan, lật một bit bên trong các khung dữ liệu cấu hình, sau đó ghi các khung đã tiêm lỗi tới ma
trận bằng cách sử dụng quá trình làm sạch. Trƣớc khi thực hiện việc tiêm tiếp theo, các lỗi trƣớc đó nên đƣợc loại bỏ để tránh sự tích tụ lỗi. Lỗi có thể đƣợc loại bỏ bằng cách sử dụng kỹ thuật làm sạch thêm một lần nữa cho lỗi không ổn định hoặc tái cấu hình từng phần dựa trên mô-đun cho các lỗi ổn định. Nếu thiết kế không đƣợc phân chia nhƣ tái cấu hình dựa trên mô-đun, để đối phó với các lỗi ổn định cần khởi động lại toàn bộ hệ thống.
2.6. Tóm tắt và kết luận
Với tính linh hoạt của mình, FPGA là rất hợp với các ứng dụng nhúng có nhiệm vụ quan trọng, nhƣng chúng rất nhạy cảm với bức xạ và nhiễu điện từ [71]. Vì vậy, độ tin cậy của chúng có thể là không đủ, trừ khi một số kỹ thuật chịu lỗi có khả năng giảm nhẹ sai sót mềm đƣợc sử dụng. Những ảnh hƣởng chủ yếu đƣợc biết là các nhiễu loạn sự kiện đơn (SEU) hoặc các lỗi mềm, bởi vì chỉ vài trạng thái logic của vài phần tử nhớ bị thay đổi trong khi bản thân thiết bị là rất hiếm khi bị hƣ hỏng vĩnh viễn. Trong FPGA, SEU có thể trực tiếp làm hỏng kết quả tính toán hoặc gây ra thay đổi bộ nhớ cấu hình, có thể gây ra những thay đổi làm suy thoái chức năng và hiệu suất của thiết bị. Có hai cách để thực hiện các mạch chịu lỗi trong các FPGA dựa trên SRAM, nhƣ mô tả trong sơ đồ của hình 2.20.