KIẾN TRÚC TẬP LỆNH
“Ngơn ngữ của máy tính”
Kiến trúc tập lệnh
• Tập lệnh là “giao diện” của phần cứng và
phần mềm.
07/20/2012
503013 - Tập lệnh
2
Thiết kế giao diện
• Một giao diện tốt:
– Đáp ứng nhiều hiện thực (có tính đa dụng,
hiệu quả, dễ đưa vào hệ thống mới, …)
– Có thể dùng theo nhiều cách (tính tổng quát)
– Cung cấp cho cấp cao hơn tính tiện dụng.
– Cung cấp cho cấp thấp hơn hiện thực hiệu
quả.
07/20/2012
503013 - Tập lệnh
3
Tập lệnh
• Tập hợp một cách có tổ chức các lệnh của
bộ xử lý.
• Mỗi (dịng) vi xử lý có tập lệnh khác nhau.
– Nhưng ln có chung một số quy tắc.
• Máy tính sơ khai có tập lệnh rất đơn giản.
• Máy tính hiện đại cũng có tập lệnh đơn
giản
07/20/2012
503013 - Tập lệnh
4
Tập lệnh MIPS
• Được sử dụng trong tài liệu này.
• Cơng nghệ MIPS www.mips.com
• Được sử dụng rộng rãi.
– Thiết bị điện tử, mạng, lưu trữ, camera, máy
in, …
• Chuẩn mực của nhiều máy ISA hiện đại.
07/20/2012
503013 - Tập lệnh
5
MIPS ISA
• Nhóm các lệnh:
– Đọc / Ghi.
– Tính tốn.
– Nhảy và rẻ nhánh.
– Dấu chấm động.
– Quản lý bộ nhớ.
– Các lệnh đặc biệt.
07/20/2012
503013 - Tập lệnh
6
MIPS ISA
• 3 mẫu lệnh: đều có độ dài 32 bits.
07/20/2012
503013 - Tập lệnh
7
Quan điểm thiết kế
• Tiêu chuẩn hóa.
– Câu lệnh có cùng kích thước.
– Số format lệnh ít.
– Mã thực thi ln là 6 bit đầu tiên.
• Nhỏ hơn sẽ nhanh hơn!
– Tập lệnh giới hạn.
– Số thanh ghi giới hạn.
– Số mơ hình địa chỉ giới hạn.
• Những trường hợp thường xảy ra?
– Tốn hạng được tính trực tiếp từ tập tin thanh ghi.
– Cho phép tập lệnh chứa toán tử thi hành lập tức.
07/20/2012
503013 - Tập lệnh
8
MIPS ISA
• Tần suất xuất hiện của các nhóm lệnh
MIPS (SPEC 2006).
07/20/2012
503013 - Tập lệnh
9
MIPS: Lệnh số học
• Phát biểu lệnh tốn học:
Add $t0, $s1, $s2
Sub $t0, $s1, $s2
• Mỗi câu lệnh thực hiện 1 phép tính.
• Mỗi câu lệnh có đúng 3 tốn hạng liên
quan (đang lưu trong tập tin thanh ghi).
07/20/2012
503013 - Tập lệnh
10
MIPS: Lệnh số học
• Giả sử b lưu trữ tại $s1, c tại $s2, d tại
$s3 và kết quả tại $s0.
h = (b – c) + d
Sub $t0, $s1, $s2
Add $s0, $t0, $s3
07/20/2012
503013 - Tập lệnh
11
MIPS: Tập tin thanh ghi
• Chứa 32 thanh ghi 32 bits.
– 2 cổng đọc.
– 1 cổng ghi.
• Thanh ghi:
– Nhanh hơn bộ nhớ chính.
– Dễ dàng cho bộ biên dịch sử dụng.
– Có thể lưu các biến số: mã lệnh sẽ tối ưu
hơn, do thanh ghi được đánh địa chỉ ngắn
hơn bộ nhớ chính.
07/20/2012
503013 - Tập lệnh
12
Thanh ghi >< Bộ nhớ
• Các tốn hạng trong câu lệnh số học phải
được lưu tại thanh ghi.
• Trình biên dịch liên kết các biến số với
thanh ghi.
– Nếu chương trình có q nhiều biến số?
07/20/2012
503013 - Tập lệnh
13
MIPS: Truy xuất bộ nhớ
• MIPS có 2 câu lệnh truyền dữ liệu cơ bản.
Lw $t0, 4($s3) // Đọc word từ bộ nhớ.
Sw $t0, 8($s3) //Ghi word xuống bộ nhớ.
• Câu lệnh phải chỉ rõ:
– Địa chỉ bộ nhớ (để đọc lên hay ghi xuống).
– Vị trí tập tin thanh ghi (để chứa dữ liệu).
• Địa chỉ của bộ nhớ = địa chỉ nền trong câu
lệnh + giá trị offset chưa trong thanh ghi thứ
hai.
07/20/2012
503013 - Tập lệnh
14
MIPS: Truy xuất bộ nhớ
• $s3 có gt = 8
• Lw $t0, 4($s3) //tác động gì?
• Sw $t0, 8($s3) // tác động gì?
07/20/2012
503013 - Tập lệnh
15
MIPS: Đọc / Ghi
07/20/2012
503013 - Tập lệnh
16
MIPS: Mảng
• Add $t1, $s3, $s3 // chỉ số I lưu tại $s3
• Add $t1, $t1, $t1 // thanh ghi temp $t1 = 4i.
07/20/2012
503013 - Tập lệnh
17
MIPS: Hằng số
• Hằng số giá trị nhỏ rất thường được sử
dụng.
– A ++;
– A += 5;
• Giải pháp:
– Tạo ra một số “hằng thông dụng” trong bộ
nhớ và đọc chúng.
– Tạo ra các thanh ghi “cứng” mang giá trị 0, 1,
2, 4, ..
07/20/2012
503013 - Tập lệnh
18
MIPS: Tốn hạng hằng
• Câu lệnh số học đã bao gồm hằng số.
– Tốc độ sẽ nhanh hơn, so với phải đọc giá trị
hằng từ bộ nhớ.
• addi $s3, $s3, 4
– $s3 += 4;
07/20/2012
503013 - Tập lệnh
19
MIPS
07/20/2012
503013 - Tập lệnh
20