Hình II.7 CPU, bộ nhớ, thiết bị vàora và khả năng sử dụng ngắt
3. Kiến trúc CU – Control Unit
3.4. Kiến trúc CU
CU chỉ chấp nhận các lệnh có khả năng thực thi được thông qua vi chương trình. Các lệnh này tạo nên hệ lệnh của CPU, từ đó người lập trình xây dựng được các chương trình. Để hiểu về khái niệm hệ lệnh, hãy bắt đầu bằng một hệ lệnh được giả thiết cho cấu trúc CPU. Từ các từ nhớ có độ dài 8 bits, ta có thể thấy rằng tạo được 28 tổ hợp, hay nói cách khác có thể xây dựng 256 lệnh.
Tất nhiên, có thể có số lượng lệnh ít hơn, song mỗi lệnh phải thực thi được một công việc cụ thể. Một tổ hợp 8 bits, tuỳ theo mạch CU được thiết kế, sẽ tạo ra các tín hiệu dựa trên các tín hiệu do thanh giải mã lệnh IR Decoder tạo ra. Ta có thể phân loại các lệnh thành các nhóm sau:
1. Nhóm lệnh điều khiển rẽ nhánh
2. Nhóm lệnh di chuyển dữ liệu
3. Nhóm lệnh số học và logic
4. Nhóm lệnh vào/ra dữ liệu.
Ký hiệu 8 bits tạo nên lệnh là IR0 đến IR7, để quản lý 4 nhóm lệnh, ta cần 2 bits theo bảng sau:
IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0
IR7 IR6 Loại lệnh
0 0 Lệnh rẽ nhánh
0 1 Lệnh di chuyển dữ liệu 1 0 Lệnh số học và logic
1 1 Lệnh I/O và thực hiện theo điều kiện
Bảng mã các thanh ghi như sau:
Mã nhị phân Thanh ghi
0 0 0 B 0 0 1 C 0 1 0 D 0 1 1 E 1 0 0 F 1 0 1 G 1 1 0 Y 1 1 1 A
Kết hợp hai bảng trên, ta đã có thể biết được lệnh chuyển nội dung thanh ghi B sang thanh ghi A (MOVE B TO A) sẽ có mã nhị phân là:
0 1 0 0 0 1 1 1 Chuyển dữ liệu Thanh ghi B Thanh ghi A
Đây là cách thức đơn giản minh hoạ kiến trúc hệ lệnh của CPU.
Giả sử phải thực hiện công việc sau: Nếu giá trị cờ Zero (Z) = 1, chuyển nội dung thanh ghi A sang thanh ghi E, nếu không thì tăng nội dung cặp thanh ghi B, C
IF Z = 1 MOVE A TO E OTHERWISE INCREMENT (B, C) AND CONTINUE.
Có thể phân tích như sau:
IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0
1 1
Theo bảng I/O=1 Cờ điều kiện Increment RP
Theo các giá trị được thể hiện ở trên, mã lệnh sẽ có giá trị nhị phân cụ thể như sau:
IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0
1 1 0 0 1 1 0 0
IF Z = 1 MOVE A TO E OTHERWISE INCREMENT (B, C) AND CONTINUE
Có thể thấy rằng mã lệnh trên sẽ có thể thành lập được. Sử dụng hai bảng mã đã nêu, ta thấy rằng không thể sử dụng một lệnh 8 bits để biểu diễn
000 – S 001 – C 010 – P 011 – Z 100 - AC 00 – BC 01 – DE 10 – FG Lệnh được thực hiện theo điều kiện Mã địa chỉ của các ô nhớ giá trị cờ Z Mã tăng nội dung của cặp thanh ghi B và C Làm việc với thanh ghi
Nguyễn Trung Đồng – Tel 0983 410 866
lệnh này. Và CPU biết rằng cần phải lấy lệnh tiếp theo theo các điều kiện là trạng thái của các thanh ghi...
Hai tổ hợp 8 bits liên tiếp biểu diễn yêu cầu
IF Z = 1 MOVE A TO E OTHERWISE INCREMENT (B, C) AND CONTINUE được thành lập dựa trên hai bảng mã trên là:
1 1 0 0 1 1 0 0 (1) 0 1 1 1 1 0 1 1 (2)
Khi IR chuyển tổ hợp (1) cho CU, CU giải mã tổ hợp này và thông qua (IR7 IR6 = 11) và vi chương trình, “biết” rằng, đây là lệnh được thực hiện theo điều kiện. Mã 011 (IR4 IR3 IR2) cho CU biết điều kiện chính là nội dung cờ Z. Nếu {Z}=1, thực hiện lệnh (2), nếu {Z}= 0, bỏ qua lệnh (2) và thực hiện lệnh tăng nội dung cặp thanh ghi BC, (IR1 IR0=00).