
201
Chương 6 VI XỬ LÝ NHÚNG
Trong các hệ thống tính toán đa mục đích ngày nay, sự đa dạng
của các kiến trúc tập lệnh bị hạn chế, trong đó kiến trúc x86 của
Intel chiếm ưu thế hoàn toàn. Trái lại, trong thế giới của hệ thống
nhúng, không hề có một sự thống trị nào như vậy và các kiến trúc
tập lệnh vô cùng đa dạng. Trong chương này, chúng ta sẽ tìm hiểu
các công cụ và thuật ngữ để hiểu các tùy chọn và đánh giá nghiêm
túc các thuộc tính của bộ vi xử lý cho hệ thống nhúng. Chúng ta
đặc biệt tập trung vào các cơ chế cung cấp sự đồng thời và kiểm
soát thời gian bởi vì những vấn đề này xuất hiện rất nhiều trong
việc thiết kế các hệ thống CPS với nền tảng là các hệ thống nhúng.
Khi được triển khai trong một sản phẩm, các bộ vi xử lý nhúng
thường có một chức năng chuyên dụng. Chúng có thể điều khiển
động cơ ô tô hoặc đo độ dày băng ở Bắc Cực. Chúng không được
yêu cầu thực hiện các chức năng tùy ý bằng phần mềm do người
dùng định nghĩa. Do đó, các bộ vi xử lý có thể chuyên biệt hơn
với lợi ích to lớn về mặt tiết kiệm năng lương hay có thể được tích
hợp với các phần cứng chuyên dụng để tang tốc độ xử lý.
Khi đánh giá bộ vi xử lý, điều quan trọng là phải hiểu sự khác
biệt giữa kiến trúc tập lệnh (Instruction Set Architecture - ISA) và

202
khả năng nhận biết bộ vi xử lý hoặc chip. Khả năng nhận biết bộ
vi xử lý phụ thuộc bề ngoài của chip được thiết kế và chế tạo bởi
nhà cung cấp chất bán dẫn. Còn ISA là định nghĩa về các lệnh mà
bộ vi xử lý có thể thực thi và các ràng buộc cấu trúc nhất định cho
việc thực thi. x86 hay ARM-7 là những ví dụ điển hình về ISA.
Các ISA thường được chia sẻ trong một nhóm các bộ vi xử lý.
Lợi thế của việc chia sẻ ISA trong một nhóm bộ vi xử lý là các
công cụ phần mềm có thể được chia sẻ và (đôi khi) các chương
trình giống nhau có thể chạy chính xác trên nhiều phiên bản vi xử
lý. Tuy nhiên, các ISA không có ràng buộc về thời gian, kiến trúc
thực thi của các bộ vi xử lý là khác nhau và môi ứng dụng của hệ
thống nhúng là khác nhau. Do đó, mặc dù một chương trình có thể
thực thi giống nhau về mặt luận lý nhưng hiệu suất có thể là khác
nhau khi thực thi trên các hệ thống nhúng (rộng hơn là hệ thống
CPS) khác nhau.
6.1 Các loại bộ vi xử lý
Do sự đa dạng của các ứng dụng nhúng, có rất nhiều bộ vi xử
lý được sử dụng. Vi xử lý gồm các thiết bị từ rất nhỏ, chậm, rẻ
tiền, công suất thấp, đến các thiết bị có mục đích đặc biệt, tốc độ

203
nhanh và hiệu suất cao. Phần này giới thiệu tổng quan về một số
bộ vi xử lý nhúng phổ biến.
6.1.1 Bộ vi điều khiển
Vi điều khiển (Microcontroller - µC) là một máy tính nhỏ trên
một mạch tích hợp duy nhất bao gồm bộ vi xử lý trung tâm tương
đối đơn giản (CPU) kết hợp với các thiết bị ngoại vi như bộ nhớ,
thiết bị nhập xuất và bộ định thời. Nhiều khảo sát cho thấy hơn
một nửa tổng số CPU được bán trên toàn thế giới là vi điều khiển.
Các bộ vi điều khiển đơn giản nhất là các vi điều khiển 8-bit và
thích hợp cho các ứng dụng có kích thước bộ nhớ nhỏ và các yêu
cầu tính toán đơn. Chúng tiêu thụ năng lượng cực kỳ nhỏ và
thường hỗ trợ chế độ ngủ (sleep mode) để giảm tiêu thụ điện năng.
Các thành phần nhúng như mạng cảm biến và thiết bị giám sát đã
được chứng minh có thể hoạt động bằng pin nhỏ trong vài năm.
Bộ vi điều khiển có thể khá phức tạp. Việc phân biệt chúng
với các bộ vi xử lý đa dụng khá là khó khăn. Ví dụ, Intel Atom là
một họ CPU x86 được sử dụng chủ yếu trong netbook và các máy
tính di động nhỏ khác. Vì các bộ vi xử lý này được thiết kế để sử
dụng tương đối ít năng lượng mà không làm giảm quá nhiều hiệu
suất so với các bộ vi xử lý được sử dụng trong các máy tính cao

204
cấp hơn, chúng phù hợp với một số ứng dụng nhúng và trong các
máy chủ. AMD’s Geode là một ví dụ khác về bộ vi xử lý nhúng
gần với bộ vi xử lý đa dụng.
6.1.2 Bộ vi xử lý tín hiệu số
Nhiều ứng dụng nhúng thực hiện khá nhiều xử lý tín hiệu. Tín
hiệu là một tập hợp các giá trị lấy mẫu của thế giới vật lý. Ví dụ,
một ứng dụng điều khiển chuyển động có thể đọc vị trí hoặc thông
tin vị trí từ các cảm biến với tốc độ lấy mẫu từ vài Hertz (Hz hoặc
mẫu mỗi giây) đến vài trăm Hertz. Tín hiệu âm thanh được lấy
mẫu ở các tốc độ từ 8.000 Hz (hoặc 8 KHz) đến 44,1 KHz. Các
ứng dụng siêu âm (chẳng hạn như hình ảnh y tế) và các ứng dụng
âm nhạc hiệu suất cao có thể lấy mẫu tín hiệu âm thanh ở tốc độ
cao hơn nhiều. Video thường sử dụng tốc độ lấy mẫu từ 25 hoặc
30 Hz cho các thiết bị tiêu dùng đến tốc độ cao hơn nhiều cho các
ứng dụng đo lường đặc biệt. Tất nhiên, mỗi mẫu chứa toàn bộ một
hình ảnh (gọi là khung), bản thân nó có nhiều mẫu (gọi là pixel)
được phân bố theo không gian chứ không phải theo thời gian. Các
ứng dụng vô tuyến được định nghĩa bằng phần mềm có tốc độ
mẫu có thể nằm trong khoảng từ hàng trăm đến hang ngàn KHz.
Các ứng dụng nhúng khác sử dụng nhiều xử lý tín hiệu bao gồm
các trò chơi tương tác; hệ thống hình ảnh radar, sonar, và LIDAR

205
(phát hiện ánh sáng và khoảng cách); phân tích video; hệ thống
hỗ trợ lái xe ô tô; điện tử y tế; và thiết bị đo đạc khoa học.
Các ứng dụng xử lý tín hiệu số đều có những đặc điểm chung
nhất định. Thứ nhất, chúng xử lý một lượng lớn dữ liệu. Dữ liệu
có thể đại diện cho các mẫu theo thời gian của bộ vi xử lý vật lý,
mẫu trong không gian hoặc cả. Thứ hai, các ứng dụng dạng này
thường thực hiện các phép toán phức tạp trên dữ liệu, bao gồm
lọc, nhận dạng hệ thống, phân tích tần số, học máy và trích xuất
tính năng. Các phép toán này chuyên sâu về mặt toán học.
Các bộ vi xử lý được thiết kế đặc biệt để hỗ trợ các ứng dụng
xử lý tín hiệu số chuyên sâu được gọi là bộ vi xử lý tín hiệu số
(Digital Signal Processing -DSP). Để có cái nhìn sâu sắc về cấu
trúc của các bộ vi xử lý như vậy và ý nghĩa đối với ký sư thiết kế
phần mềm nhúng, chúng ta cần tìm hiểu cấu trúc của các thuật
toán xử lý tín hiệu điển hình.
Một thuật toán xử lý tín hiệu phổ biến là lọc đáp ứng xung hữu
hạn (Finite Impulse Response - FIR). Dạng thuật toán này đơn
giản nhưng có ý nghĩa đối với phần cứng. Ở dạng đơn giản nhất
này, tín hiệu đầu vào 𝑥 bao gồm một chuỗi các giá trị số rất dài
gần như là vô hạn. Một đầu vào như vậy có thể được mô hình hóa

