Phần nhiều các tài liệu khi đề cập tới thiết kế HTN, đều dành một số chủ đề về kiến trúc và cách thiết kế chế tạo CPU. Đây là một vấn đề chuyên và rất sâu, tài liệu này sẽ không dẫn xuất. Tài liệu
32
chỉ giới hạn ở giới thiệu các kiểu CPU có thể sử dụng để thiết kế HTN. Các kiểu CPU này rất phổ biến trên thị trường, rất đa dạng với năng lực xử lý khác nhau và phù hợp cho mỗi loại ứng dụng nhúng. Dưới đây là một trong các quan điểm nhìn nhận CPU:
ü Tập lệnh: có thể là CISC hay RISC, trong đó RISC là phổ biến.
ü Hoạt động theo kiểu Von Neumman, ví dụ điển hình như hình vẽ trên, trong đó Hệ thống BUS địa chỉ và BUS dữ liệu, BUS điều khiển chung cho toàn bộ hệ thống, bộ nhớ chia sẻ chung cho toàn hệ thống với vùng mã lệnh (code) và dữ liệu (data) trên cùng không gian địa chỉ bộ nhớ và BUS dữ liệu không thể truyền đồng thời mã lệnh và dữ liệu cùng một thời điểm. Quá trình thực hiện một lệnh máy như sau:
1) Đọc mã lệnh từ ROM/RAM qua BUS dữ liệu vào CPU, giả mã để xác định làm gì tiếp theo;
2) Đọc dữ liệu tiếp theo là một phần của lệnh (operands) nếu có; 3) Thực hiện lệnh khi đã đọc hết các operands của lệnh;
4) Lưu kết quả vào thanh ghi hay ra RAM.
Trong qua strình thực hiện lệnh, BUS dữ liệu là kênh duy nhất để trao đổi dữ liệu, do vậy ta nói BUS dữ liệu có thể bị “bảo hòa”, hiệu năng tính toán bị hạn chế. Với các CPU hiện đại BUS dữ liệu được cải tiến rất nhiều, đặc biệt là giao thức BUS và đồng hồ BUS được nâng cao để cải thiện hạn chế nói trên.
ü Và hoạt động kiểu Harvard với một số đặc điểm khác biệt:
ü Howard Aiken (1900-1973) khi xây dựng máy tính với các relé đã tách các bộ nhớ dữ liệu (RAM) và bộ nhớ chương trình (NVM Non Volatile Memory: ROM, FLASH) với các bus riêng rẽ để truy cập vào bộ nhớ dữ liệu (RAM) và bộ nhớ chương trình chứa phần mềm nhúng (hệ điều hành, Device drivers, ứng dụng nhúng).
ü Bus cho lệnh và Bus cho dữ liệu tách biệt, điều hành độc lập nên lệnh và dữ liệu có thể được đưa ra cùng một lúc, cải thiện tốc độ so với thiết kế với chỉ một bus. ü Phân biệt rõ ràng bộ nhớ dữ liệu và bộ nhớ chương trình, CPU có thể vừa đọc một
lệnh, vừa truy cập dữ liệu từ bộ nhớ cùng lúc.
ü Do các BUS độc lập, CPU có khả năng tìm trước các lệnh (instruction prefetch), nên với kiến trúc Harvard chương trình chạy nhanh hơn, bởi vì nó có thể thực hiện ngay lệnh tiếp theo khi vừa kết thúc lệnh trước đó.
ü Tuy nhiên về kiến trúc có phần phức tạp hơn trong phần cứng, với 2 BUS độc lập gây khó khăn nhất định cho các ngôn ngữ lập trình cấp cao (ví dụ như C) nhưng cho hiệu quả hơn cho các ứng dụng nhúng. Là loại phổ biến để thiết kế các HTN.
33
Hình 1.5 Hai kiểu HTN với 2 loại kiến trúc CPU
Ví dụ Havard CPU ARM 920T, là loại CPU cải tiến với một nhớ cache cho lệnh và một cache cho dữ liệu.
Hình1.6 Havard CPU ARM 920T của Amtel