BÀI 2: ĐƠN VỊ XỬ LÝ TRUNG TÂM
2.3 Đơn vị điều khiển
2.3.1 Chu kỳ lệnh
Chức năng của máy tính là thực hiện chương trình. Thực hiện chương trình thực
Kiến trúc máy tính – Bài 2 Trang 20 chất là thực hiện một chuỗi lệnh máy kế tiếp nhau. Mỗi một lệnh máy được thực hiện trong một chu kỳ lệnh. Mỗi chu kỳ lệnh bao gồm các tiểu chu kỳ như chu kỳ nhập lệnh, chu
kỳ gián tiếp, chu kỳ thực hiện lệnh và chu kỳ ngắt, trong đó chu kỳ thực hiện lệnh bao gồm các giai đoạn giải mã lệnh, tạo địa chỉ toán hạng và nhập toán hạng (nếu cần), thực thi lệnh và ghi kết quả. Mỗi một tiểu chu kỳ lại bao gồm các thao tác nhỏ hơn, được gọi là vi thao tác. Vi thao tác là thao tác cơ bản nhất của đơn vị xử lý trung tâm. Đơn vị điều khiển
có chức năng gây ra chuỗi các vi thao tác này.
- Chu kỳ nhập lệnh
Chu kỳ nhập lệnh là tiểu chu kỳ đầu tiên trong chu kỳ lệnh. Lệnh được nhập trong chu kỳ này và từ nơi PC trỏ đến. Trong đơn vị xử trung tâm CPU (Hình 13) có 4 thanh ghi tham gia trong chu kỳ này là PC, MAR, MBR
và IR.
Chu kỳ nhập lệnh gồm ba bước và bốn vi thao tác, mỗi vi thao tác thực hiện chuyển một dữ liệu vào hoặc ra một thanh ghi.
t1: MAR ← PC
Kiến trúc máy tính – Bài 2 Trang 21 t2: MBR ← bộ nhớ
t3: PC ← PC + 1
IR ← MBR
Mỗi một vi thao tác được thực hiện trong một khoảng thời gian, xác định bằng một chu kỳ nhịp đồng hồ hệ thống, gọi là đơn vị thời gian hệ thống t. Ký hiệu t1, t2, t3 mô tả các đơn vị thời gian kế tiếp nhau. Trong chu kỳ nhập lệnh, nội dung PC được đưa ra MAR, xác định vị trí ô nhớ chứa lệnh. Nội dung ô nhớ chứa lệnh (lệnh máy) được nhập và chuyển đến thanh ghi lệnh IR của đơn
vị xử lý trung tâm. Đồng thời nội dung của con trỏ lệnh PC tăng thêm 1, trỏ đến ô chứa lệnh tiếp theo, chuẩn bị cho chu kỳ nhập lệnh tiếp theo.
- Chu kỳ gián tiếp
Giả định ta đang khảo sát việc thực hiện loại lệnh có một phần địa chỉ. Trong trường hợp này sẽ có hai kiểu xác định địa chỉ toán hạng có thể được dùng, là trực tiếp và gián tiếp. Nếu mã lệnh xác định kiểu địa chỉ gián tiếp thì chu kỳ gián tiếp sẽ được thực hiện. Chu kỳ gián tiếp sẽ gồm các vi thao tác sau:
t1: MAR ← (phần địa chỉ của lệnh) t2: MBR ← bộ nhớ
t3: MAR ← MBR
Trong chu kỳ gián tiếp, phần địa chỉ của lệnh được dùng để nhập địa chỉ của toán hạng. Sau khi địa chỉ toán hạng được nhập vào và chuyển đến MAR, toán hạng sẽ được nhập. Chu kỳ tiếp theo sẽ là chu kỳ thực hiện lệnh.
- Chu kỳ thực hiện lệnh
Chu kỳ thực hiện lệnh bao gồm nhiều vi thao tác như giải mã lệnh, tạo địa chỉ toán hạng, nhập toán hạng, thực thi lệnh và ghi kết quả. Trình tự và loại vi thao tác được thực hiện phụ thuộc vào từng lệnh cụ thể.
Kiến trúc máy tính – Bài 2 Trang 22 Sau đây là một vài ví dụ về các vi thao tác trong chu kỳ thực hiện lệnh. Ví dụ 1: ADD X Lệnh ADD X thực hiện cộng nội dung ô nhớ có địa chỉ X với ACC, kết quả chứa vào ACC, với giả thiết toán hạng thứ nhất đã được nhập vào ACC. Sau giải mã lệnh, các vi thao tác được tuần tự thực hiện như sau: t1: MAR ← (phần địa chỉ của lệnh - X)
t2: MBR ← M(MAR)
Ký pháp M(MAR) mô tả ô nhớ M cần truy nhập có địa chỉ xác định bởi MAR t3: ACC ← ACC + MBR
Ví dụ 2: STORE xxxx
Lệnh STORE xxx thực hiện sao lưu nội dung ACC ra ô nhớ có địa chỉ X. Sau giải mã lệnh, các vi thao tác được tuần tự được thực hiện như sau: t1: MAR ← (phần địa chỉ của lệnh - X)
t2: MBR ← ACC
t3: M(MAR) ← MBR
- Chu kỳ ngắt
Cuối chu kỳ thực hiện lệnh, đơn vị xử lý trung tâm (ĐVXLTT) luôn kiểm tra xem có sự kiện báo ngắt nào không. Nếu có báo ngắt thì chu kỳ ngắt được thực hiện. Trong chu kỳ ngắt một chuỗi các vi thao tác được thực hiện, nhằm bảo vệ địa chỉ trở về và chuyển sang chương trình con phục vụ ngắt.
t1: MBR ← PC
t2: MAR ← Địa chỉ của nơi cất giữ thông tin (địa chỉ đỉnh ngăn xếp) PC ← Địa chỉ chương trình con phục vụ ngắt
t3: Nơi cất giữ thông tin (đỉnh ngăn xếp) ← MBR
Sau vi thao tác ở bước t3 ĐVXLTT sẵn sàng bắt đầu chu kỳ nhập lệnh tiếp theo, từ chỗ
PC trỏ đến. Đây là nơi chứa lệnh đầu tiên của chương trình con phục vụ ngắt.
Kiến trúc máy tính – Bài 2 Trang 23
Không cho phép ngắt
Không Có Dưới đây là lưu đồ một chu kỳ lệnh (Hình 14)
Hình 14
2.3.2 Phân loại đơn vị điều khiển
Chức năng của đơn vị điều khiển (control unit - CU) là giải mã lệnh, sinh
ra chuỗi các tín hiệu điều khiển và điều phối hoạt động của các khối chức năng khác nhau trong máy tính, nhằm thực hiện được lệnh máy. Lệnh máy được thực hiện bởi một tập hợp nhiều nhóm vi thao tác. Mỗi một vi thao tác liên quan đến một tín hiệu điều khiển. Các tín hiệu điều khiển này được hoạt hoá theo một trình tự quy định để kích hoạt các vi thao tác. Ví dụ, việc chuyển
Bắt đầu
Nhập lệnh tiếp theo
Thực hiện lệnh
Kiểm tra báo ngắt
Chuyển đến chương trình phục vụ ngắt Cho phép ngắt
Kiến trúc máy tính – Bài 2 Trang 24 nội dung bộ đếm chương trình PC vào thanh ghi MAR là một vi thao tác. Việc tăng nội dung PC thêm 1 cũng là một vi thao tác. Mỗi một vi thao tác đều được kích hoạt bởi một tín hiệu điều khiển được phát ra từ đơn vị điều khiển
CU, bằng cách CU phát tín hiệu này ở mức tích cực lên đường truyền.
Có hai phương pháp thiết kế và tạo đơn vị điều khiển. Cách thứ nhất là xem đơn vị điều khiển như là một mạch logic tuần tự, nơi tạo ra chuỗi các tín hiệu điều khiển ở đầu ra của mạch logic tuần tự tương ứng với mã lệnh ở đầu vào mạch logic tuần tự (Hình 15).
Phương pháp thiết kế này được áp dụng khi mục tiêu là tốc độ thao tác của đơn vị điều khiển. Một khi đơn vị điều khiển đã được thiết kế và chế tạo thì khó có thể thay đổi hoặc thêm bớt chức năng của nó, vì nếu muốn thế thì phải thực hiện quy trình thiết kế lại
từ đầu. Chính vì vậy cách tiếp cận này được gọi là cứng hoá.
Một cách tiếp cận khác trong thiết kế đơn vị điều khiển là vi lập trình (microprogramming). Thành phần cốt lõi của đơn vị điều khiển được vi lập trình (microprogrammed control unit) là một bộ nhớ điều khiển (control memory - CM), trong đó chứa tập các vi chương trình được thiết kế để thực hiện hành vi của lệnh. Mỗi một lệnh máy làm kích hoạt một đoạn vi chương trình và từ đó các tín hiệu điều khiển tương ứng được tạo ra. Cách tiếp cận theo vi lập trình làm cho việc thiết kế đơn vị điều khiển có tính hệ thống hơn,
Thanh ghi lệnh IR
Mạch logic tuần tự Xung nhịp
Các tín hiệu
trạng thái
Các tín hiệu điều khiển
Kiến trúc máy tính – Bài 2 Trang 25 nhờ việc tổ chức tập các tín hiệu điều khiển thành các vi lệnh. Các tín hiệu điều khiển được nhúng (biểu hiện) trong các vi lệnh. Chuỗi các tín hiệu điều khiển được sinh ra từ vi chương trình. Với cách tiếp cận vi lập trình, việc thay đổi chức năng
và thiết kế của đơn vị điều khiển có thể được thực hiện khá dễ dàng bằng việc đổi nội dung của bộ nhớ điều khiển. Đơn vị điều khiển được vi lập trình cũng có nhược điểm là giá thành cao và có xu hướng chậm đi do cần có thời gian đọc vi lệnh từ bộ nhớ điều khiển.
2.3.3 Đơn vị điều khiển cứng hoá
Việc thiết kế đơn vị điều khiển CU cứng hóa khá phức tạp. Ở đây ta sẽ khảo sát quá trình thiết kế một đơn vị điều khiển CU cho đơn vị xử lý trung tâm sau (Hình 16).
Đơn vị xử lý trung tâm được thiết kế để thực hiện 10 lệnh (Bảng 2). Để đơn giản hóa việc thiết kế đơn vị điều khiển CU, các lệnh ADD, SUB, AND và OR được chọn là loại
Kiến trúc máy tính – Bài 2 Trang 26 không có phần địa chỉ tường minh. Các toán hạng của các lệnh ADD, SUB, AND và
OR được nhập vào trước bằng các lệnh LOAD và MOV1.
Bảng 2:
Loại lệnh Lệnh dạng ngôn
ngữ tượng trưng
Chức năng của lệnh
Chuyển dữ liệu LOAD X