Bài 4
KIẾN TRÚC TẬP CHỈ THỊ ISA (Instruction Set Architecture)
Nguyễn Hồng Sơn
1
Tập chỉ thị
(cid:1) Tập hợp các chỉ thị khác nhau mà bộ xử lý
có thể thực thi
2
Các đặc trưng
(cid:1) Các thành phần của một chỉ thị (cid:1) Biểu diễn chỉ thị (cid:1) Loại chỉ thị (cid:1) Số địa chỉ (cid:1) Đặc trưng thiết kế
3
Các thành phần
(cid:1) Mã lệnh (Operation code) (cid:1) Toán hạng nguồn (Source operand) (cid:1) Toán hạng đích (Result operand)
(cid:1) Bộ nhớ chính hay bộ nhớ ảo (cid:1) Thanh ghi (cid:1) Thiết bị I/O
(cid:1) Tham chiếu chỉ thị kế (Next instruction reference)
(cid:1) Tường minh (cid:1) Không tường minh
4
Biểu diễn chỉ thị
(cid:1) Một tuần tự bit (cid:1) Biểu diễn mỗi thành phần như thế nào
Opcode
Operand
Operand
5
Loại chỉ thị
(cid:1) Tính toán (cid:1) Số học (cid:1) Luận lý
(cid:1) Lưu trữ dữ liệu: memory (cid:1) Di chuyển dữ liệu: I/O (cid:1) Điều khiển: kiểm tra, rẽ nhánh, chuyển điều
khiển
6
Ví dụ rẽ nhánh
7
Gọi thủ tục
8
Số lượng địa chỉ
(cid:1) Bao nhiêu địa chỉ được chứa trong một chỉ
thị
(cid:1) Địa chỉ được biểu diễn tường minh hay
không tường minh (cid:1) địa chỉ bộ nhớ (cid:1) thanh ghi, bộ tích lũy (accumulator) (cid:1) chỉ thị không địa chỉ
9
Các đặc trưng thiết kế
(cid:1) Tác vụ của lệnh (cid:1) Kiểu toán hạng (cid:1) Các thanh ghi (cid:1) Chế độ địa chỉ
10
Các kiểu toán hạng
(cid:1) Địa chỉ (cid:1) Con số
(cid:1) nguyên (integer) (cid:1) dấu chấm động (floating point) (cid:1) thập phân, nhị phân
(cid:1) Ký tự (cid:1) Luận lý
11
Tập chỉ thị được đo lường qua vài yếu tố
(cid:1) Kích thước lưu trữ mà chương trình cần (cid:1) Độ phức tạp của tập chỉ thị cũng như độ phức tạp của
các tác vụ
(cid:1) Chiều dài của chỉ thị (cid:1) Tổng số chỉ thị (cid:1) Bao nhiêu thanh ghi và tổ chức các thanh ghi như thế
nào
12
Các cân nhắc thiết kế
(cid:1) Chỉ thị ngắn hay dài (cid:1) Chiều dài cố định hay thay đổi (cố định dễ giải mã
nhưng lãng phí)
(cid:1) Tổ chức bộ nhớ (địa chỉ hóa theo byte hay không) (cid:1) Chỉ thị có chiều dài cố định không nhất thiết phải cố
định số toán hạng (expanding opcode)
(cid:1) Chế độ địa chỉ hóa (cid:1) Thứ tự lưu giữ các byte của các từ có nhiều byte như thế
nào (little endian và big endian)
13
14
Hỗ trợ lưu trữ bên trong CPU
(cid:1) Kiến trúc stack: dùng một stack để thực thi chỉ thị, các toán hạng được ngầm định ở đỉnh stack, không thể truy xuất ngẫu nhiên, khó sinh mã hiệu quả. (cid:1) Kiến trúc accumulator: một toán hạng ngầm định (không tường minh) trong accumulator, tối thiểu độ phức tạp nhưng lưu lượng bộ nhớ lớn.
(cid:1) Kiến trúc thanh ghi mục đích tổng quát (GPR: General Purpose Register): dùng một số thanh ghi, truy xuất nhanh. Có hai đặc trưng chính: số lượng toán hạng và cách thức địa chỉ hóa toán hạng
15
Chế độ địa chỉ (addressing mode)
(cid:2)Immediate addressing (cid:2)Direct addressing (cid:2)Indirect addressing (cid:2)Register addressing (cid:2)Register indirect addressing (cid:2)Displacement addressing (cid:2)Based addressing (cid:2)Indexed addressing (cid:2)Stack addressing (cid:2)Các chế độ cải tiến
16
Địa chỉ tức thời (Immediate addressing)
(cid:1) Giá trị tham chiếu nằm ngay trong chỉ thị (cid:1) Không có tham chiếu bộ nhớ để lấy dữ liệu (cid:1) Nhanh (cid:1) Ví dụ
ADD 5
(cid:1) Cộng 5 vào nội dung của thanh ghi AC (cid:1) 5 là toán hạng
17
Địa chỉ trực tiếp (Direct addressing)
(cid:1) Toán hạng là địa chỉ của giá trị tham chiếu (cid:1) Tham chiếu một vị trí bộ nhớ để truy xuất
dữ liệu
(cid:1) Ví dụ
ADD 3BF (cid:1) Cộng nội dung của ô nhớ 3BF với nội dung
trong AC
(cid:1) 3BF là địa chỉ hiệu quả (effective address)
18
Opcode
Address
Memory
3BF
Nội dung tham chiếu
19
Địa chỉ gián tiếp (indirect addresing)
(cid:1) Toán hạng là địa chỉ của con trỏ chỉ đến dữ
liệu
(cid:1) Địa chỉ hiệu quả chính là con trỏ (cid:1) Ví dụ
ADD 38F (cid:1) Cộng nội dung tại ô nhớ có địa chỉ được chứa
trong ô nhớ 38F với nội dung trong AC
(cid:1) 38F không phải là địa chỉ hiệu quả.
20
Opcode
Address
Memory
38F
3BF
Nội dung tham chiếu
3BF
21
Địa chỉ thanh ghi (Register addressing)
(cid:1) Toán hạng là tên thanh ghi (địa chỉ thanh
ghi)
(cid:1) Địa chỉ hiệu quả là thanh ghi (cid:1) Truy xuất nhanh (cid:1) Ví dụ
ADD R1 cộng nội dung thanh ghi R1 với nội
dung của AC
22
opcode Địa chỉ thanh ghi
Các thanh ghi
Nội dung tham chiếu
23
Địa chỉ gián tiếp thanh ghi (register indirect addressing)
(cid:1) Kết hợp địa chỉ thanh ghi và địa chỉ gián
tiếp
(cid:1) Dùng thanh ghi để chứa con trỏ chỉ đến vị
trí chứa giá trị tham chiếu
24
opcode Địa chỉ thanh ghi
Bộ nhớ
Các thanh ghi
Nội dung tham chiếu con trỏ chỉ đến nội dung tham chiếu
25
Địa chỉ dùng độ dời (displacement addressing)
(cid:1) Phần toán hạng chứa hai giá trị:
(cid:1) Địa chỉ (cid:1) Thanh ghi giữ độ dời (offset)
(cid:1) Địa chỉ hiệu quả = địa chỉ + độ dời
26
opcode
thanh ghi
địa chỉ
Bộ nhớ
Các thanh ghi
độ dời Nội dung tham chiếu
27
Relative addressing
(cid:1) Từ displacement addressing nếu thanh ghi là PC thì gọi là địa chỉ quan hệ (relative addressing); (cid:1) Lấy nội dung từ ô nhớ tại vị trí "địa chỉ" tính từ vị trí hiện hành được chỉ ra trong thanh ghi PC.
(cid:1) Ví dụ LD A
nạp nội dung từ ô nhớ A+(PC) vào thanh ghi AC
28
Địa chỉ dùng thanh ghi nền (Base-register addressing)
(cid:1) Giá trị thứ nhất là độ dời (cid:1) Thanh ghi chứa con trỏ chỉ đến địa chỉ nền (cid:1) Thanh ghi có thể là tường minh hay không
tường minh (ngầm)
29
Indexed addresing
(cid:1) Giá trị địa chỉ trong chỉ thị chứa địa chỉ nền (cid:1) Thanh ghi chứa độ dời (offset) (cid:1) Địa chỉ hiệu quả= địa chỉ nền + độ dời (cid:1) Thích hợp cho truy xuất mảng
(cid:1) Địa chỉ truy xuất = địa chỉ nền + độ dời trong
thanh ghi R
(cid:1) R++
30
Địa chỉ ngăn xếp (stack addressing)
(cid:1) Các toán hạng được ngầm định trên đỉnh
stack
(cid:1) Ví dụ ADD
Lấy hai giá trị trên đỉnh stack và thực hiện cộng hai giá trị với nhau
31
Các chế độ địa chỉ cải tiến
(cid:1) Có thể kết hợp các chế độ địa chỉ với nhau. (cid:1) Ví dụ indirect indexed addressing, indirect
based register adressing ...
32
Bài tập
1. Giải thích và cho ví dụ các chế độ địa chỉ
cải tiến -Indirect indexed addressing -Indirect based register adressing
2. Tìm hiểu các chế độ địa chỉ trong máy
Pentium
33

