CHƢƠNG 4 : CÁC MÔ HÌNH PHÂN TÍCH
4.5. Mô phỏng và mô hình kiểm tra cho MPSoC chịu lỗi
Phát triển và xác thực hệ thống MPSoC với tính năng chịu lỗi là phức tạp. Tính năng này phải đƣợc lên kế hoạch càng sớm càng tốt trong quy trình thiết kế. Việc xây dựng phần cứng thực tế thƣờng đòi hỏi rất nhiều nỗ lực và có thể làm chậm quá trình hoàn thiện sản phẩm cuối cùng. Sử dụng ngôn ngữ mô hình hóa cấp hệ thống để mô hình nền tảng có thể nhanh chóng xác thực các khái niệm về tính năng chịu lỗi trong các hệ thống phức tạp ở các cấp độ khác nhau.
Nghiên cứu kỹ thuật cao quan tâm tới mô hình hóa các hệ thống phức tạp ở cấp cao. Phƣơng pháp trong [25] trình bày mô hình hóa và mô phỏng của MPSoC có bao gồm tái cấu hình lại linh động. Cách tiếp cận này không thực hiện bất kỳ cơ chế chịu lỗi nào và cũng không xem xét tái cấu hình linh động. Trong [15], một phƣơng pháp đƣợc đề xuất thực hiện thiết kế tàu thăm dò không gian và mô hình phần cứng tái cấu hình từng phần bằng cách sử dụng TLM nhƣng không có MPSoC và mô hình hóa khả năng chịu lỗi. Một phƣơng pháp khác [47] hỗ trợ mô hình hệ thống đa MicroBlaze bằng cách sử dụng mô phỏng StepNP và nền tảng khai phá ở mức độ khai phá kiến trúc hệ thống. Cách tiếp cận này không thực hiện bất kỳ tái cấu hình linh động nào, hoặc bất cứ cơ chế chịu lỗi nào. Trong [38] một bộ khung ở mức hệ thống dựa trên chu kỳ gọi là GRAPES đƣợc đề xuất cho mô hình hóa và thiết kế MPSoC không đồng nhất cho phép các mô hình cấu trúc và mô-đun để đối phó với những thách thức mô hình hóa, mô phỏng và thiết kế cho các hệ thống MPSoC. Nó cung cấp tốc độ mô phỏng nhanh chóng, trong khi duy trì độ chính xác ở mức chu kỳ. Công trình này cũng hỗ trợ cấu hình lại linh động nhƣng không có cơ chế chịu lỗi.
Hình 4.4 cho thấy mô hình có chứa các mô-đun bộ xử lý (µP), kết nối điểm-điểm giữa các bộ xử lý dựa trên các kênh FIFO, một bộ nhớ chia sẻ (SM) và một bộ công cụ có khả năng chịu lỗi. Mỗi mô-đun bộ xử lý tự động cấu hình lại và xử lý việc thực hiện nhiệm vụ bình thƣờng và nhiệm vụ chịu lỗi. Mỗi bộ xử lý có bộ nhớ cục bộ tƣơng ứng (LM) để lƣu trữ bối cảnh phần mềm của riêng mình. SM đƣợc sử dụng để lƣu trữ các bitstream của các bộ xử lý cấu hình lại đƣợc là đƣợc nạp trƣớc tiên cũng nhƣ có chứa
các bối cảnh phần mềm của tất cả các bộ xử lý trong quá trình thực hiện. Đa truy cập tới SM đƣợc thực hiện thông qua các kênh TLM (Transaction -Level Modeling).
Hình 4.4: Mô hình của MPSoC chịu lỗi
Công cụ chịu lỗi bao gồm hai khối: một bộ điều khiển ngắt và một điều khiển cấu hình lại. Công cụ này có ba chức năng nội tại: phát hiện lỗi, sửa lỗi và phục hồi bối cảnh sau khi loại bỏ lỗi.
Hình 4.5: Cơ chế chịu lỗi cho mô hình đề xuất
Khái niệm về cơ chế chịu lỗi đƣợc thực hiện trong trình điều khiển ngắt bởi bộ điều khiển ngắt. Tất cả các bộ xử lý bị ngắt tại cùng một thời điểm và trao đổi ma trận
kết nối để xác định bộ xử lý bị lỗi hoặc liên kết lỗi để đƣợc cấu hình lại để loại bỏ các lỗi. Mô hình hoạt động của cơ chế chịu lỗi này đƣợc đƣa ra trong hình 4.5. Bộ xử lý hoặc liên kết lỗi đƣợc phát hiện và cấu hình lại trong trình ngắt.
Mô hình thực hiện của bộ xử lý đƣợc minh họa trong hình 4.6. Bộ điều khiển cấu hình lại kết nối với tất cả các bộ xử lý và cấu hình lại các bộ vi xử lý bị lỗi. Nó nhạy cảm với các dữ liệu nhận đƣợc từ bộ xử lý để khởi tạo cấu hình lại. Các dữ liệu cấu hình lại nhận đƣợc đƣợc phân tích để xác định bộ xử lý cần phải đƣợc cấu hình lại. Việc vận hành của bộ vi xử lý bị lỗi phải dừng lại và chờ đợi các sự kiện đƣợc tạo ra bởi bộ điều khiển cấu hình. Điều này đƣợc minh họa trong hình hình 4.6, nếu giá trị bitstream PBS_M là chính xác, có nghĩa là bộ xử lý không bị lỗi và nó thực hiện nhiệm vụ của mình và trình ngắt nhƣ bình thƣờng. Nếu giá trị này thay đổi, nghĩa là bộ xử lý bị lỗi và nó sẽ phải chờ đợi để cấu hình lại. Sau khi cấu hình lại, PBS_M đƣợc khôi phục lại giá trị ban đầu chính xác. Bây giờ, bộ xử lý sẽ chờ đợi cho các bối cảnh đƣợc nạp lại từ SM sẽ đƣợc sử dụng trong quá trình thực hiện nhiệm vụ.
Hình 4.6: Thực hiện mô hình của bộ xử lý
Khi không có lỗi, bộ xử lý kiểm tra nếu có bộ xử lý khác cần tải lại bối cảnh. Nếu bộ xử lý khác cần cấu hình lại và cần nạp lại bối cảnh. Nó thực hiện nhiệm vụ của mình và kết quả của nhiệm vụ đƣợc gửi trong trình xử lý ngắt tới tất cả các bộ vi xử lý khác nơi lƣu trữ các kết quả nhƣ là nhiệm vụ bối cảnh trong những bộ nhớ cục bộ.
Trong trƣờng hợp lỗi, bộ vi xử lý đƣợc cấu hình lại, bối cảnh của nhiệm vụ đƣợc nạp lại đã đƣợc lƣu trƣớc đó trong SM khi không có lỗi xảy ra và nhiệm vụ đƣợc thực hiện lại.
4.5.1. Thực hiện các thành phần mô hình
Tất cả các thành phần đƣợc mô hình hóa trong SystemC. Bộ xử lý đƣợc thực hiện là xây dựng một mô-đun SystemC với một tiến trình SC_THREAD để xử lý việc thực hiện nhiệm vụ bình thƣờng và trình ngăt và sẽ có thể truy cập bitstream từ bộ nhớ trong trƣờng hợp lỗi. Mẫu mã SystemC cho các mô-đun bộ xử lý đƣợc hiển thị trong hình 4.7 (a) execution_run thực hiện mô hình vận hành của bộ xử lý.
Hình 4.7: Mẫu mã code của các thành phần
Trong mô hình này, bộ nhớ chia sẻ (SM) đƣợc thực hiện nhƣ là một mô-đun SystemC và lƣu giữ các bitstream bộ xử lý. Mã code SystemC cho bộ nhớ này đƣợc thể hiện trong hình 4.7 (b). Hai socket mục tiêu TLM đã đƣợc khai báo và chúng phải đƣợc đăng ký với giao diện đóng TLM. Bộ nhớ thực hiện các giao diện đóng b_transport.
Bộ điều khiển ngắt là một mô-đun SystemC mô hình hóa nhƣ một bộ đếm và nhạy cảm với xung nhịp. Khi giá trị của bộ đếm đến một số giá trị định trƣớc, một sự kiện (SystemC xây dựng) đƣợc thông báo kích hoạt dừng tất cả các tiến trình trong tất cả các mô-đun bộ xử lý thực hiện các trình xử lý ngắt tƣơng ứng của chúng. Bộ điều khiển cấu hình lại là một mô-đun SystemC và thực hiện cấu hình lại các bộ xử lý bị lỗi. Nó sử dụng tiến trình sc_method là nhạy cảm với các dữ liệu nhận đƣợc từ bộ vi xử lý để bắt đầu cấu hình lại.
4.5.2. Phân tích
Khái niệm xác thực của phƣơng pháp chịu lỗi đƣợc thực hiện bằng cách mô tả các lỗi trong các mô-đun bộ xử lý và sau đó kiểm tra, hệ thống phát hiện và sửa chữa lỗi này hay không. Loại lỗi là một sự thay đổi bên trong bitstream đại diện của các mô hình bộ xử lý liên quan. Phân tích để nhận thấy khoảng thời gian ngắt thay đổi và ảnh hƣởng đến hiệu suất và khả năng chỉnh sửa. Ba kịch bản ngắt đã đƣợc thực hiện ở 100ms, 150ms và 300ms. Hệ thống với thời gian ngắt 100ms đáng tin cậy hơn so với hai hệ thống khác bởi vì các lỗi trong hệ thống đƣợc phát hiện và sửa chữa sớm hơn so với hai hệ thống khác. Thời gian thực hiện của mô hình đã đƣợc đo 1000 lần liên tiếp và kết quả đã đạt đƣợc bằng cách lấy trung bình của các mẫu.
Trình xử lý ngắt mất 1595.6µs khi không có lỗi trong hệ thống. Trình xử lý ngắt mất 2.969,25µs khi có một lỗi trong hệ thống.
Khi lỗi xảy ra, trình xử lý ngắt mất nhiều thời gian hơn thời gian cần thiết để đồng bộ ma trận kết nối và nó cũng bao gồm cả thời gian cấu hình lại. Tăng tần số ngắt sẽ ảnh hƣởng tiêu cực đến hiệu suất hệ thống bởi vì trình xử lý ngắt sẽ đƣợc gọi thƣờng xuyên hơn và do đó thời gian để thực hiện các nhiệm vụ sẽ ít đi. Điều này sẽ còn tồi tệ hơn trong trƣờng hợp lỗi. Cần phải có một số đánh đổi trong việc lựa chọn các điểm ngắt, để xác suất điều chỉnh và hiệu suất không có ảnh hƣởng tiêu cực. Điều này phụ thuộc vào ứng dụng quan trọng chạy trên MPSoC.