CHƯƠNG 6: ĐIỀU KHIỂN LUỒNG DỮ LIỆU
6.3. Bộ điều khiển cứng
Một phương pháp khác để có thể điều khiển khối control unit là sử dụng phần cứng. Khi đó, ta sẽ sử dụng các mạch được tạo ra từ các cổng logic là các flip- flop để thay thế cho khối control store
Việc thiết kế mạch phần cứng để thực hiện nhiệm vụ điều khiển khối control unit rất phức tạp. Để quản lý công việc thiết kế này, người ta thường sử dụng ngôn ngữ mô tả phần cứng HDL – hardware description language. Một sự phát triển của ngôn ngữ này là VHDL, là viết tắt của VHSIC Hardware Description Language – Very High Speed Integrated Circuit.
Hình 6.20. Ví dụ về ngôn ngữ HDL
Hình 6.20. thể hiện mô tả HDL của bộ đếm modul 4. Tín hiệu ra có 4 trạng thái 00, 01, 10, 11 và sau đó lặp lại cho đến khi đầu vào x là 0. Nếu đầu vào được set lên 1, bộ đếm sẽ quay lại trạng thái 0 ở chu kỳ xung nhịp kế tiếp
Một chương trình viết bằng HDL bao gồm 3 khối: Preamble, statements và epilogue. Khối Preamble sẽ đặt tên toàn bộ modul bởi từ khóa “MODULE”, định nghĩa các biến đầu vào, đầu ra bởi “INPUTS”, “OUTPUTS”, số lượng các đầu ra và tất nhiên nó cũng định nghĩa thêm dung lượng bộ nhớ mở rộng nếu cần bởi từ khóa “MEMORY”. Các trạng thái của mạch được thể hiện ngay sau đó trong phần Statements ngay sau Preamble. Khối Epilogue sẽ kết thúc modul bởi cụm từ khóa “END SEQUENCE”. Cụm từ khóa “END MOD_4_COUNTER” được sử dụng để đóng toàn bộ modul.
Việc chuyển ngôn ngữ HDL thành mạch điện tử có thể được phân tích thành 2 phần riêng biệt là khối điều khiển và khối dữ liệu. Khối điều khiển đối phó với việc chuyển trạng thái giữa các trạng thái của mạch. Khối dữ liệu quản lý các dữ liệu ra và thay đổi các giá trị đầu ra khi các giá trị đầu vào thay đổi
Hình 6.21. Mạch đếm modul 4
Trước hết ta sẽ xem xét khối điều khiển. Chúng ta có 4 trạng thái đầu ra nên sẽ sử dụng 4 flip-flop, mỗi chiếc tương ứng một trạng thái. Đầu tiên, ta sẽ vẽ 4 flip-flop và đánh số tương ứng và cung cấp cho chúng các tín hiệu xung nhịp CLK. Bước tiếp theo đơn giản là quét tất cả các trạng thái để thêm các cổng logic thích hợp cho việc chuyển trạng thái. Từ trạng thái 0, ta có 2 trạng thái mà nó có thể chuyển sang là trạng thái 0 và trạng thái 1 dưới điều kiện đầu vào x.
Đầu ra của flip-flop 0 do đó sẽ được nối với đầu vào của các flip-flop số 0 và số 1. Cổng AND được sử dụng để thêm các điều kiện x vào giá trị đầu ra. Chú ý rằng cổng AND nối với flip-flop 1 có 1 vòng tròn nhỏ ở đầu vào, điều này có nghĩa là tín hiệu x được nghịch đảo trước khi được đưa vào cổng AND. Các trạng thái của các flip-flop 1 và 2 cũng hoàn toàn tương tự như đối với flip-flop 0. Với flip-flop 3 thì không cần làm vậy vì với mọi giá trị của x thì trạng thái đều được chuyển về 0.
Tiếp theo là khối dữ liệu, rất đơn giản trong trường hợp này. Các bit đầu ra chuyển trạng thái trong mỗi trạng thái của nó, do đó không cần thiết phải xác định điều kiện khi tạo các tín hiện ra. Chúng ta chỉ cần xác định đúng các giá trị của đầu ra là xong. Bit có trọng số nhỏ nhất bằng 1 ở các trạng thái 1 và 3, nên đầu ra của nó được lấy ra từ flip-flop 1 và 3 qua một cổng OR. Bit có trọng số
lớn nhất bằng 1 ở trạng thái 2 và 3, do đó cũng tương tự đầu ra này được lấy từ flip-flop 2 và 3 thông qua 1 cổng OR. Kết quả cuối cùng ta có được mạch như hình 6.21.
Bây giờ ta quay trở lại khối điều khiển của kiến trúc ARC được thể hiện trong hình 6.10. Nhắc lại một chút, ta có thể thiết kế khối điều khiển này bằng 2 cách tiếp cận. Các tiếp cận thứ nhất ta đã đề cập trong mục 6.2, đó là cách tiếp cận bằng phần mềm. Trong phần này, ta sẽ xem xét cách tiếp cận bằng mạch điều khiển phần cứng
Với mỗi lệnh được thực thi, các bước mà CPU phải thực hiện bao gồm 1. Nạp lệnh kế tiếp sẽ được thực thi từ bộ nhớ
2. Giải mã lệnh
3. Đọc các toán hạng từ bộ nhớ hoặc thanh ghi nếu cần 4. Thực thi lệnh và lưu kết quả
5. Quay về bước 1
Khối điều khiển của ARC được mô tả bởi ngôn ngữ HDL được thể hiện trong hình 6.22
Hình 6.23 thể hiện khối điều khiển mô tả khối điều khiển của ARC Hình 6.24. thể hiện khối dữ liệu đầu ra của khối điều khiển ARC
Hình 6.22. Khối điều khiển của ARC dưới ngôn ngữ HDL
Hình 6.23. Khối control section của khối điều khiển ARC
Hình 6.24. Khối dữ liệu của khối điều khiển ARC
TỔNG KẾT CHƯƠNG
Vi kiến trúc máy tính bao gồm các luồng dữ liệu và khối điều khiển. Luồng dữ liệu bao gồm các thanh ghi, khối ALU và các kết nối giữa chúng. Khối điều khiển bao gồm thanh ghi điều khiển MIR (với cách tiếp cận bằng phần mềm) hoặc các mã điều kiện trạng thái. Tương ứng như vậy, ta có thể thiết kế bộ điều khiển bằng vi chương trình hoặc bằng phần cứng. Bộ điều khiển vi chương trình bao gồm các vi lệnh được lưu trữ trong khối bộ nhớ control store. Bộ điều khiển bằng phần cứng bao gồm tổ hợp các flip-flop mang thông tin các trạng thái, kết hợp với các cổng logic thể hiện sự chuyển trạng thái của bộ điều khiển
Cách tiếp cận bằng phần cứng làm hệ thống hoạt động với tốc độ cao và sử dụng số lượng phần cứng nhỏ hơn so với cách tiếp cận bằng phần mềm. Tuy nhiên cách tiếp cận bằng phần mềm tỏ ra linh hoạt hơn, quá trình hoạt động đơn giản hơn nên phương pháp này được sử dụng phổ biến hơn. Hỗ trợ cho cách tiếp cận phần mềm là việc thiết kế lập trình nano. Đây là thủ thuật để làm giảm thiểu bộ nhớ control store