Hệ thống nhúng thời gian thực: Cân bằng hiệu suất và độ tin cậy
Ngày nay, hệ thống nhúng ứng dụng rất rộng rãi vào cuộc sống hàng ngày và có thể tìm gặp ở bất kì các thiết bị điện tử nào. Ví dụ trong các thiết bị điện
Ngày nay, hệ thống nhúng ứng dụng rất rộng rãi vào cuộc sống hàng ngày và có thể tìm gặp ở bất kì các thiết bị điện tử nào. Ví dụ trong các thiết bị điện tử dân dụng (máy giặt, tủ lạnh, TV . . .), các thiết bị điện tử “thông minh” (điện thoại di động), thiết bị truyền thông, thiết bị y tế, xe hơi, thậm chí cả trong một máy tính cá nhân (card mở rộng).
Hệ thống nhúng đầu tiên được phát triển bởi Intel vào năm 1971. Đó chính là xử lý 4004 cho các máy tính cầm tay. Một con chip tương tự cũng đã được sử dụng cho tất cả các máy tính cầm tay với nhiều chủng lại khác nhau, chỉ khác nhau ở phần mềm tương ứng với mỗi dòng được nạp trên ROM. Ngày nay, trên thế giới xấp xỉ 98% các loại vi xử lý/vi điều khiển được sử dụng trong một hệ thống nhúng. Và ARM chính là nhà cung cấp hàng đầu các vi xử lý dựa trên kiến trúc RISC 32 bit (chiếm 75% thị trường) cho các hệ thống nhúng đó. Điểm đặc biệt là ARM chỉ bán IP chứ không bán chip, do đó việc tích hợp các IP vi xử lý 32 bit của ARM vào một con chip để xây dựng một hệ thống SoC trở nên dễ dàng hơn
Khái niệm
Trong những năm gần đây, sự phân chia khái niệm một hệ thống thế nào là nhúng và không nhúng ngày càng mờ nhạt và không rõ ràng. Lý do rất đơn giản, vì hầu hết các hệ thống ngày nay đều là hệ thống nhúng. Hệ thống nhúng đã có một số lượng rất lớn các ứng dụng từ nhỏ đến lớn, từ dân dụng đến công nghiệp, từ điều khiển đơn giản đến xử lý phức tạp. . . Trong khuôn khổ bài viết này, một hệ thống nhúng có thể được định nghĩa như sau : là một hệ thống chuyên dụng cho một mục đích cụ thể, bao gồm nhiều thành phần (bộ nhớ, I/O, module chức năng . . .) xung quanh một vi xử lý cùng với một hệ điều hành nhỏ, gọn, nhanh nhằm mục đích điều khiển vi xử lý, tất cả nằm trên một con chip (SoC) hay một bo mạch.
Điểm quan trọng cần lưu ý là sự khác biệt giữa một hệ thống nhúng và hệ thống máy tính PC. Hệ Thống nhúng là một hệ thống chuyên dụng với một chức năng cụ thể, trong khi hệ thống máy tính PC là một hệ thống đa dụng với chức năng tại một thời điểm do phần mềm quyết định.
Trong một hệ thống nhúng có thể có nhiều chương trình phần mềm chạy cùng lúc với nhau dưới một hệ điều hành nhất định. Bởi vì một hệ thống nhúng có thể là một phần nhỏ của một hệ thống lớn hơn, nên nó có thể nằm trên một bo mạch với một vi xử lý riêng cùng với phần mềm được lưu trữ trong ROM. Vì là một hệ thống chuyên dụng, nên hầu hết các hệ thống nhúng phải đáp ứng sự thay đổi ở các tín hiệu ngõ vào (input) trong thời gian ngắn nhất có thể, tức là phải đảm bảo tốc độ hoạt động của nó. Vì vậy, các hệ thống nhúng đều có tốc độ hoạt động rất cao theo thời gian thực (real time). Với các ứng dụng đơn giản, nó chỉ cần một chương trình nhỏ (mà không cần hệ điều hành) để điều khiển. Tuynhiên, một hệ điều hành cài đặt trên hệ thống nhúng để chạy các chương trình ứng dụng sẽ giúp cho hệ thống trở nên cực kỳ linh hoạt.
Phân loại
Hệ thống nhúng thường được phân loại theo 2 cách:
Khi dựa trên các yêu cầu về hiệu suất và chức năng, có bốn loại hệ thống nhúng chính:
-Các hệ thống nhúng thời gian thực (real time embedded system) thực hiện nhiệm vụ của chúng hoặc đưa ra phản hồi trong một thời gian cụ thể – thường là “ngay lập tức” hoặc theo thời gian thực.
-Các hệ thống nhúng độc lập (stand-alone embedded system) có thể thực hiện nhiệm vụ của chúng mà không cần hệ thống chủ hoặc tài nguyên xử lý bên ngoài. Chúng có thể xuất hoặc nhận dữ liệu từ các thiết bị được kết nối, nhưng không phụ thuộc vào các thiết bị này để hoàn thành nhiệm vụ.
-Hệ thống nhúng nối mạng (networked embedded system) phụ thuộc vào mạng được kết nối để thực hiện các tác vụ được giao.
-Hệ thống nhúng di động (mobile embedded system) là những hệ thống có tính hạn chế cao thường được triển khai trong các thiết bị nhỏ, có tính di động.
Khi dựa trên độ phức tạp của kiến trúc phần cứng của hệ thống, có ba loại hệ thống nhúng chính:
-Hệ thống nhúng quy mô nhỏ
-Hệ thống nhúng quy mô trung bình
-Hệ thống nhúng tinh vi (phức tạp)
Đặc trưng
Một đặc trưng quan trọng của hệ thống nhúng đó chính là “tính quyết định”. Đặc trưng này có nghĩa là tất cả các trạng thái bên trong của hệ thống, các giá trị ngõ vào liên quan đến ngõ ra đều có thể tính toán trước được (về mặt nguyên tắc). Tất nhiên “tính quyết định” không chỉ là một đặc trưng riêng cho một hệ thống nhúng mà nó có thể là một hệ thống bất kỳ.Ngoài ra, một đặc trưng khác cũng khá quan trọng và mang nét riêng của hệ thống nhúng đó chính là thời gian thực. Một hệ thống nhúng phải có khả năng thực hiện chức năng của nó trong một khoảng thời gian hữu hạn, ít nhất và có thể biết trước.
Một hệ thống nhúng bao giờ cũng được “bao bọc” bởi một hệ thống phần cứng mà nó điều khiển. Chính Vì vậy, đối với người sử dụng cuối, họ không nhận ra sự hiện diện của hệ thống nhúng trong một thiết bị phần cứng. Đây Cũng là sự khác biệt giữa một hệ thống nhúng và một máy tính cá nhân. Một hệ thống nhúng cũng có khả năng tương tác với thế giới bên ngoài, tuy nhiên giao diện người sử dụng của nó lại thường khá đơn giản.
Lĩnh vực hệ thống nhúng đòi hỏi sự kết hợp của nhiều ngành với nhau như : kỹ thuật phần mềm, hệ điều hành, thiết kế phần cứng (chip) . . . Vì vậy, một kỹ sư thiết kế hệ thống nhúng phải có sự am hiểu về nhiều lĩnh vực khác nhau, từ thiết kế phần cứng, layout chip, đến lập trình phần mềm, cài đặt hệ điều hành . . .
Phương pháp đánh giá
Hiện nay tại Việt Nam, các kỹ sư xây dựng và phát triển hệ thống nhúng đa phần kiểm tra sự ràng buộc thời gian thực của hệ thống dựa trên thực nghiệm, tức là tiến hành đánh giá một số Test case (trường hợp kiểm thử) cụ thể. Với các hệ thống có cấu hình tương đối mạnh, có thể porting hệ điều hành thời gian thực thì chúng ta lại tin tưởng vào việc điều phối, lập lịch của hệ điều hành.
Trên thế giới, phương pháp này cũng vẫn còn đang được áp dụng rộng rãi, tuy nhiên có thể dễ dàng nhận thấy nhược điểm của phương pháp này đó là sự khó khăn trong việc kiểm tra tất cả các trường hợp (Test case), bởi vậy rất dễ bị sót các trường hợp sẽ phát sinh trong quá trinh thực thi hệ thống. Để giúp khắc phục vấn đề này, trên thế giới đã và đang có rất nhiều nghiên cứu khác nhau để hướng tới việc xây dựng các bộ công cụ cho phép kiểm tra kỹ hơn về các ràng buộc về mặt thời gian này, cho phép kiểm thử đầy đủ hơn, tránh để sót các trường hợp quan trọng, có nguy cơ cao.
Các nghiên cứu này thường xoay quanh một khái niệm cơ bản đó là “Thời gian thực thi chậm nhất của hệ thống” (Worst Case Execution Time – WCET). Dựa trên khái niệm này, các phần mềm kiểm thử sẽ được xây dựng để tìm ra các WCET của chương trình một cách tự động hoặc bán tự động, đồng thời gợi ý cho các kỹ sư phát triển hệ thống các đoạn mã, thiết kế có thể gây ra các trường hợp không thỏa mãn ràng buộc về thời gian. Nếu tất cả các WCET tìm được đều thỏa mãn thời hạn (Deadline) của hệ thống, thì hệ thống đã đáp ứng được các yêu cầu về thời gian thực.