3.0. Mở đầu<br />
<br />
Chương 3.<br />
Kiến trúc tập lệnh<br />
<br />
Vi tác vụ: tác vụ xử lý dữ liệu lưu trên thanh ghi.<br />
Kết quả là thay thế dữ liệu đã lưu hoặc chuyển sang<br />
thanh ghi khác<br />
<br />
Có 4 loại vi tác vụ:<br />
<br />
VI TÁC VỤ<br />
<br />
Vi tác vụ thanh ghi<br />
chuyển thông tin từ thanh ghi này sang th/ghi khác<br />
<br />
Vi tác vụ số học<br />
Thực hiện phép tính số học với dữ liệu số trên thanh ghi<br />
<br />
Vi tác vụ luận lý<br />
Thực hiện các tác vụ thao tác bit với dữ liệu phi số trên thanh ghi<br />
<br />
Vi tác vụ dịch<br />
Thực hiện các tác vụ dịch dữ liệu trên thanh ghi<br />
<br />
3.1. Vi tác vụ thanh ghi<br />
Chuyển thông tin nhị phân từ thanh ghi này sang th/ghi khác.<br />
Ký hiệu mô tả dãy vi tác vụ:<br />
Mệnh đề (vi lệnh) chuyển thông tin<br />
R2<br />
<br />
R1<br />
<br />
Tác vụ truyền từ<br />
thanh ghi sang<br />
thanh ghi (hình<br />
6.2)<br />
<br />
Mệnh đề If – then<br />
If (P = 1) then (R2<br />
P: R2 R1<br />
<br />
R1)<br />
<br />
Ký hiệu<br />
<br />
Diễn giải<br />
<br />
Ví dụ<br />
<br />
Chữ (và số)<br />
<br />
Thanh ghi<br />
<br />
MAR, R2<br />
<br />
Ngoặc ( )<br />
<br />
Một phần thanh ghi<br />
<br />
R2 (0 – 7), R2 (L)<br />
<br />
Mũi tên<br />
<br />
Chuyển thông tin<br />
<br />
R2<br />
<br />
R1<br />
<br />
Dấu phẩy<br />
<br />
Hai tác vụ riêng<br />
<br />
R2<br />
<br />
R1, R1<br />
<br />
R2<br />
<br />
Đặt thanh ghi lên Bus:<br />
VD: Hệ thống Bus dùng cho 4 thanh ghi 4 bit (h 6.3)<br />
Hệ thống Bus dùng cho k th/ghi n bit sẽ có n mạch dồn k – 1.<br />
<br />
Truyền qua bus<br />
Bus: tập các đường truyền dẫn tín hiệu<br />
Thường dùng bus cho chung mọi thanh ghi<br />
Tín hiệu điều khiển sẽ xác định thanh ghi nào được truyền<br />
<br />
1<br />
<br />
Truyền từ Bus vào thanh ghi: nối Bus với đường nhập<br />
của thanh ghi và có tín hiệu nạp.<br />
Truyền từ thanh ghi C sang thanh ghi R1:<br />
Bus C, R1 Bus<br />
<br />
Bus 3 trạng thái<br />
Có thể tạo Bus bằng cổng 3 trạng thái thay cho mạch dồn<br />
Cổng 3 trạng thái: bổ sung tr/thái thứ 3: trở kháng cao, ngõ ra bị ngắt<br />
Thường dùng cổng đệm để thiết kế Bus (h 6.4)<br />
<br />
Bus dùng cổng đệm 3 trạng thái thay cho mạch dồn (h 6.5)<br />
(So sánh với dùng mạch dồn)<br />
<br />
Truyền qua bộ nhớ<br />
Truyền thông tin từ một từ nhớ ra ngoài: tác vụ Đọc<br />
Đưa thông tin từ ngoài vào bộ nhớ: tác vụ Ghi<br />
Ký hiệu: Từ nhớ có địa chỉ lưu trong thanh ghi AR: M[AR]<br />
VD: Đọc / Ghi bộ nhớ với địa chỉ chứa trong th/ghi AR, với<br />
thanh ghi DR<br />
Tác vụ Đọc: Read: DR<br />
M[AR]<br />
Tác vụ Ghi: Write: M[AR]<br />
DR<br />
<br />
2<br />
<br />
3.2. Vi tác vụ số học<br />
Thực hiện phép tính số học với dữ liệu số trên thanh ghi<br />
<br />
Mạch cộng nhị phân<br />
<br />
Mạch cộng trừ nhị phân<br />
Thêm cổng XOR.<br />
Khi M = 0, cộng. Khi M = 1, trừ (h 6.7)<br />
(Yêu cầu giải thích)<br />
<br />
Dùng mạch toàn cộng (h 6.6)<br />
<br />
Mạch tăng nhị phân<br />
Có thể dùng mạch đếm<br />
Tăng 1 cho thanh ghi:<br />
Mạch tăng nhị phân (dùng mạch nửa cộng) (h 6.8)<br />
<br />
Mạch số học<br />
Dùng mạch cộng song<br />
song (h 6.9)<br />
<br />
3.3. Vi tác vụ luận lý<br />
Thực hiện các tác vụ thao tác bit với dữ liệu phi số trên thanh ghi<br />
Có 16 tác vụ luận lý khác nhau thực hiện trên 2 bit nhị phân<br />
(b 6.6)<br />
<br />
Mạch thực hiện vi<br />
tác vụ luận lý<br />
Chỉ cần các cổng<br />
AND, OR, XOR,<br />
NOT (h 6.10)<br />
<br />
3<br />
<br />
3.4. Vi tác vụ dịch<br />
Ứng dụng:<br />
Vi tác vụ luận lý cho phép thao tác riêng từng bit hoặc một phần<br />
của thanh ghi<br />
Tác vụ Chọn đặt (thiết lập có chọn lựa):<br />
đặt 1 vào các bit trong A tương ứng với vị trí các bit 1 trong B:<br />
A<br />
A∨B<br />
A 1010<br />
B 1100<br />
A 1110<br />
<br />
Tác vụ Chọn bù<br />
Tác vụ Chọn xóa<br />
Tác vụ Mặt nạ<br />
Tác vụ Thay (đưa trị mới vào nhóm bit)<br />
<br />
Thực hiện các tác vụ dịch dữ liệu trên thanh ghi<br />
Dùng để truyền tuần tự dữ liệu<br />
hoặc phối hợp với tác vụ số học, luận lý và tác vụ khác<br />
<br />
Dịch luận lý (shl / shr : shift)<br />
Chuyển 0 qua ngõ nhập dãy<br />
<br />
Dịch vòng / quay (cil / cir : circular shift)<br />
Quay vòng các bit ở 2 đầu thanh ghi (nối ngõ xuất dãy với ngõ<br />
nhập dãy)<br />
<br />
Dịch số học (ashl / ashr : arithmetic shift)<br />
Khi thanh ghi lưu 1 số nhị phân có dấu<br />
Dịch trái: nhân đôi - Dịch phải: chia đôi<br />
Khi dịch phải, bit dấu được bảo toàn. VD: 1000 (-8)<br />
Khi dịch trái, tràn nếu R n – 1 ≠ R n – 2<br />
<br />
1100 (-4)<br />
<br />
3.5. ALU<br />
Mạch dịch<br />
Có thể dùng<br />
thanh ghi dịch 2<br />
chiều nạp song<br />
song.<br />
Dùng mạch tổ<br />
hợp cho tác vụ<br />
dịch sẽ tốt hơn<br />
VD: Mạch dịch<br />
tổ hợp 4 bit (h<br />
6.12)<br />
<br />
Đơn vị luận lý – số học (Arithmetic Logic Unit)<br />
Thay vì dùng các thanh ghi riêng để thực hiện các vi<br />
tác vụ<br />
Dùng các thanh ghi lưu trữ nối với 1 đơn vị thao tác<br />
chung: ALU<br />
Để thực hiện 1 vi tác vụ, nội dung th/ghi được đưa vào<br />
ngõ nhập ALU, ALU thực hiện xong tác vụ, chuyển kết<br />
quả cho th/ghi đích.<br />
<br />
Các tác vụ của ALU (b 6.8)<br />
8 tác vụ số học: với S3S2 = 00<br />
4 tác vụ luận lý: với S3S2 = 01<br />
2 tác vụ dịch: với S3S2 = 10 và 11<br />
<br />
Một phần<br />
của ALU<br />
(h 6.13)<br />
<br />
4<br />
<br />
Bài tập<br />
BT 48, 49, 50, 51 (trang 92)<br />
<br />
5<br />
<br />