Kiểu kiến trúc này (hình 2.7) linh hoạt hơn và cho phép các mã lệnh mới được
định nghĩa trên cơ sở ứng dụng. Việc giải mã các lệnh mới được thực hiện thông
qua khối logic lập trình được. Khi một lệnh như vậy được nạp vào, bộ xử lý không thể giải mã lệnh đó, tiếp theo nó đưa ra một tín hiệu “bẫy” trap bằng việc gửi một
Khối giải mã lệnh lôgic cố định
Khối logic lập trình được
starti donei B ộ c h ọ n /K ế t h ợ p … Bus 1 Bus N
Khối điều khiển Khối đường dẫn dữ
li u
Các tín hiệu điều kiện và dữ liệu
Lôgic cố định Lơgic lập trình
c Bus
điều
tín hiệu đến khối logic lập trình được. Nếu khối logic lập trình được có thể giải mã
lệnh đó, thì sau đó lệnh đó được kích hoạt. Nếu lệnh đó chưa được khối logic lập
trình được nhận dạng, thì nó kích hoạt một tín hiệu “bẫy” trap’ để hướng dẫn cho
khối giải mã lệnh lôgic cố định khởi động quá trình nhận dạng lệnh mới.
Hình 2.7. Kiến trúc giải mã động (Dynamic-Decode Architecture)
2.2.2.4. Cập nhật phần mềm cơ sở
Mỗi một lần một lệnh mới được thực hiện trong bộ xử lý, thì phần mềm nhúng cơ sở lại cần cập nhật sửa đổi để sử dụng lệnh mới này. Tuỳ thuộc vào phương pháp trên phần mềm được sử dụng, có ba cách thực hiện việc cập nhật này.
Thứ nhất, nếu phần mềm cơ sở là ngôn ngữ dạng đóng gói hồn chỉnh hoặc
các lệnh mới chỉ liên quan đến một phần của phần mềm cơ sở thì chỉ có phần mã lệnh đóng gói được thay đổi.
Nếu phần mềm sử dụng một chương trình biên dịch ngôn ngữ bậc cao như C và nếu các lệnh mới có thể áp dụng được vào các ứng dụng khác, thì sau đó các lệnh mới có thể được bổ sung vào chương trình biên dịch đó.
Khối giải mã lệnh lơgic cố định
Khối logic lập trình được
trap done B ộ c h ọ n /K ế t h ợ p … Bus 1 Bus N
Khối điều khiển Khối đường dẫn dữ
li u
Các tín hiệu điều kiện và dữ liệu
Lơgic cố định Lơgic lập trình c Bus điều khiển trap'
Khi các chương trình biên dịch được cập nhật lại trở thành các cơng cụ dùng chung, thì một bộ tham số về kiến trúc mới của bộ xử lý có thể được thêm vào
chương trình biên dịch để trở thành khả dụng đối với các lệnh mới.
2.2.3. Hướng phát triển của ASIP
Trên đây chỉ là một trong số nhiều phương pháp luận về đồng thiết kế và kiến trúc cho các ASIP ứng dụng trong các hệ thống nhúng. Hiện nay cịn có nhiều
phương pháp khác nghiên cứu và thiết kế ASIP. Việc tuỳ biến hoá tập lệnh của bộ vi xử lý theo yêu cầu của từng ứng dụng phụ thuộc vào người thiết kế và do đơn đặt hàng.
2.3. Đồng thiết kế phần cứng/phần mềm (Hardware/Software Co-Design)
Như chúng ta đã biết hầu hết các hệ thống điện tử ngày nay (cả hệ thống
nhúng hoặc kết hợp một phần) đều có chứa một phần lớn các thành phần đã được số hố, các phần cứng đó hoạt động được chính là nhờ vào các phần mềm ứng dụng đã
được cài đặt sẵn. Đồng thiết kế phần cứng/phần mềm chính là “sự gặp gỡ” mức hệ
thống của phần cứng và phần mềm thông qua quá trình thiết kế.
Hiện nay việc thiết kế phần cứng số đã có sự phát triển gần như tương đương với thiết kế phần mềm. Các mạch phần cứng được mô tả bằng các ngôn ngữ lập
trình hoặc ở dạng mơ hình hố bằng phần mềm, và như vậy chúng hoàn toàn phù hợp và hoạt động theo sự điều khiển của phần mềm. Đôi khi người ta gọi là thiết kế phần cứng chuyên biệt. Do vậy, việc thiết kế các hệ thống số đòi hỏi người thiết kế phải nắm rất vững cả phần cứng và phần mềm.
Mục đích của mục này chỉ giới thiệu trong phạm vi hẹp về đồng thiết kế các hệ thống phần cứng/phần mềm.
Chúng ta chỉ đề cập đến các bước đồng thiết kế các hệ thống phần cứng/phần mềm mức cao (tức là chỉ nói đến thuần tuý về mặt công nghệ). Ở đây ta chỉ đề cập
đến các vấn đề chung chứ không đi sâu về một vấn đề nào, nhằm làm sáng tỏ sự
giống và khác nhau giữa các hệ thống số thiết kế kết hợp với các hệ thống tự nhiên khác. Ta cũng đề cập đến các kỹ thuật tương tự nhau được áp dụng trong đồng thiết kế các hệ thống phần cứng/phần mềm.
Đồng thiết kế các hệ thống phần cứng/phần mềm là bao gồm mơ hình
(modeling), ứng dụng (validation) và cách tiến hành (implementation). Mơ hình xử
lý là các tham số kỹ thuật mang tính khái niệm và định nghĩa lại và sản phẩm là các mơ hình phần cứng và phần mềm. ứng dụng xử lý là mức ứng dụng có thể được của riêng hệ thống đó sẽ làm việc như đã được thiết kế và cách tiến hành là độ tin cậy về mặt vật lý của phần cứng (trong q trình tổng hợp) và khả năng có thể làm việc tương ứng của phần mềm (trong quá trình biên dịch).
Khi đề cập đến các hệ thống nhúng các mẫu mơ hình khác nhau và các chiến
lược thì ta chỉ đề cập đến hồn tồn phần cứng (ví dụ như ASIC) và/hoặc hồn tồn phần mềm (phần mềm nhúng chạy trên nền card ISA) vì chúng là các hệ thống đồng thiết kế. Do vậy tất cả các mơ hình hệ thống nhúng đều có kiểu là thuần nhất
(homogeneous) hoặc không thuần nhất (heterogeneous). Ngồi ra cịn có mơ hình ngơn ngữ (ví dụ như mơ hình lập trình C chẳng hạn) hoặc các hình thức đồ hoạ được dùng để trình diễn cả phần cứng và phần mềm. Vấn đề phân chia phần
cứng/phần mềm có thể dựa vào các tìm từng phần của mơ hình thực hiện tốt nhất trong phần cứng và tốt nhất trong phần mềm. Việc phân chia này do người thiết kế thực hiện dựa trên mơ hình ban đầu hoặc bằng các công cụ CAD.
Khi sử dụng mơ hình khơng thuần nhất, việc phân chia phần cứng và mềm thừng dựa vào mơ hình của bản thân hệ thống, vì các thành phần phần cứng và phần mềm có thể được biểu diễn theo các ngơn ngữ tương ứng. Vì dụ, phiên bản thứ nhất của một sản phẩm có thể có thêm thành phần phần mềm vì lý do thời gian để
thương mại hố và tính linh hoạt nhưng đến thế hệ tiếp theo của sản phẩm đó thì
thành phần phần mềm đó có thể lại được thực hiện vì lý do giá thành sản phẩm. ISA được mơ hình hố theo các mức khác nhau. Tập lệnh cung cấp các thông tin cần thiết về kiến trúc, hỗ trợ cho việc phát triển cả phần cứng và phần mềm. Việc tổ chức xử lý thường được mô tả trong ngôn ngữ đặc tả phần cứng HDL
(Hardware Description Language) đối với mục đích tổng hợp thiết kế phần cứng,
trong khi đó các mơ hình bộ vi xử lý (ví dụ như mơ hình các bus chức năng) lại
Trong trường hợp cấu hình lại hệ thống, chúng ta cần phải chú ý phân chia giữa mơ hình ứng dụng đích và mơ hình chủ. Nhiệm vụ đầu tiên thường phù hợp
với hệ thống của người dùng, trong khi đó nhiệm vụ thứ hai tương ứng với mức
phát triển hệ thống. Do vậy, hai nhiệm vụ này thường khác nhau về yêu cầu kết hợp thiết kế.
Do các hệ thống ngày càng trở nên phức tạp, việc ứng dụng là rất cần thiết để bảo đảm các chức năng làm việc chính xác và yêu cầu các mức hoạt động đúng theo mơ hình hoạt động của hệ thống. Ngoài ra việc ứng dụng cũng ảnh hưởng đến sự
hoạt động chính của hệ thống. Sự hoạt động của các ứng dụng dựa trên sự phối hợp hoạt động giữa phần cứng và phần mềm. Mặt khác các hệ thống điều khiển nhúng yêu cầu phải được phân chia các ứng dụng nhưng sự hoạt động kém hiệu quả cần
phải được kiểm tra trong tất cả các điều kiện để bảo đảm độ an toàn cho hệ thống. Sự hoạt động của hệ thống phần cứng/phần mềm có thể giải quyết nhiều tiến trình con.
2.3.1. Phân chia phần cứng/phần mềm
Việc phân chia hệ thống thành phần cứng và phần mềm là yêu cầu rất quan trọng vì nó là u tố đầu tiên ảnh hưởng đến đặc trưng giá thành/tính năng của việc thiết kế. Do vậy, bất kỳ sự phân chia nào cũng phải tính đến các chi tiết của việc
phân chia thành các khối phần cứng và phần mềm.
Công thức của việc phân chia phần cứng và phần mềm tuan thủ theo nguyên tắc kết hợp thiết kế. Trong trường hợp các hệ thống nhúng, việc phân chia phần cứng và phần mềm chính là việc phân chia về mặt vật lý các chức năng của hệ thống thành các ứng dụng đặc biệt dành cho phần cứng và phần mềm trên một hay nhiều bộ xử lý. Có nhiều quan điểm phân chia cứng và mềm dựa trên các tiêu chí
như kiến trúc hoặc mục đích sử dụng...
Khi đề cập đến mục đích chung của hệ thống máy tính, thì việc phân chia hệ
thống được thực hiện theo các chức năng logic, trong đó phần cứng được thiết kế hỗ trợ cho sự hoạt động của phần mềm. Việc phân chia này thường tuân theo tập lệnh. Do vậy, việc lựa chọn lệnh ảnh hưởng đến việc tổ chức phần cứng và phần mềm.
Tuy nhiên khi cấu hình lại hệ thống thì việc phân chia phụ thuộc vào mức độ
ưu tiên. Đối với các hệ thống chỉ có các chip kiểu FPGA, thì việc phân chia các
chức năng hệ thống lại thành các thành phần tương ứng với công nghệ chế tạo [16].