Bài giảng Kiến trúc máy tính - Chương 3: Tập lệnh - Phan Trung Kiên

Tóm tắt Bài giảng Kiến trúc máy tính - Chương 3: Tập lệnh - Phan Trung Kiên: ...ero (ZF - cờ rỗng): đựoc thiết lập lên một kết quả của phép toán vừa thực hiện bằng 0. „ Cờ Sign (SF - cờ đấu): được thiết lập lên một kết quả của phép toán vừa thực hiện nhỏ hơn 0, hay nói cách khác, cờ Sign nhận giá trị bằng bit dấu của kết quả. „ Cờ Carry (CF - cờ nhớ): cờ được thiết lập nế...nhiều từ lệnh dài để chứa loại này „ Ví dụ: SUB r1, r2, r3 (Motorola) Phan Trung Kiên 28 Số lượng toán hạng „ 2 toán hạng: „ Có một toán hạng vừa là nguồn, vừa là đích „ a = a + b „ Giảm độ dài của lệnh „ Có thể thêm thao tác: „ Dùng vùng nhớ tạm để chứa giá trị trước khi thực hiện „ Ví dụ...TEST I/O: chuyển thông tin trạng thái từ hệ thống vào/ra đến đích xác định 10 Phan Trung Kiên 37 Các lệnh điều khiển hệ thống „ HALT: dừng thực hiện chương trình „ WAIT: dừng thực hiện chương trình; liên tục kiểm tra điều kiện được chỉ định; chương trình được thực hiện khi điều kiện được ...

pdf14 trang | Chia sẻ: havih72 | Lượt xem: 249 | Lượt tải: 0download
Nội dung tài liệu Bài giảng Kiến trúc máy tính - Chương 3: Tập lệnh - Phan Trung Kiên, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
11
Chương 3. Tập Lệnh
Phan Trung Kiên
Đại học Tây Bắc
Phan Trung Kiên 2
Chương 3. Kiến Trúc Tập Lệnh
„ Tập thanh ghi
„ Tập lệnh
„ Ví dụ nghiên cứu
Phan Trung Kiên 3
3.1. Tập thanh ghi
„ Chức năng và đặc điểm:
„ Chứa các thơng tin tạm thời phục vụ cho hoạt động 
ở thời điểm hiện tại của CPU
„ Được coi là mức đầu tiên của hệ thống nhớ
„ Số lượng thanh ghi nhiều Ỵ tăng hiệu năng của 
CPU
„ Cĩ hai loại thanh ghi: 
„ Các thanh ghi lập trình được
„ Các thanh ghi khơng lập trình được
Phan Trung Kiên 4
Phân loại thanh ghi theo chức năng
„ Thanh ghi địa chỉ: quản lý địa chỉ của ngăn nhớ
hay cổng vào-ra. 
„ Thanh ghi dữ liệu: chứa tạm thời các dữ liệu. 
„ Thanh ghi đa năng: cĩ thể chứa địa chỉ hoặc dữ
liệu. 
„ Thanh ghi điều khiển/trạng thái: chứa các thơng 
tin điều khiển và trạng thái của CPU.
„ Thanh ghi lệnh: chứa lệnh đang được thực hiện. 
2Phan Trung Kiên 5
Một số thanh ghi điển hình
„ Các thanh ghi địa chỉ
„ Các thanh ghi dữ liệu
„ Thanh ghi trạng thái
Phan Trung Kiên 6
Các thanh ghi địa chỉ:
„ Chức năng: dùng để quản lý địa chỉ của ngăn nhớ hay 
cổng vào – ra
„ Chương trình đang thực hiện phải nằm trong bộ nhớ
chính và nĩ chiếm 3 vùng nhớ cỏ bản sau:
„ Vùng nhớ lệnh (Code): chứa các lệnh của chương trình.
„ Vùng dữ liệu (Data): chứa dữ liệu của chương trình. Thực chất 
đây là nơi cấp phát các ngăn nhớ cho các biến nhớ.
„ Vùng ngăn xếp (Stack): là vùng nhớ cĩ cấu trúc LIFO (Last in 
first Out) dùng để cất dữ thơng tin và sau đĩ cĩ thể khơi phục 
lại. Thường dùng cho việc thực hiện các chương trình con.
Phan Trung Kiên 7
Bộ đếm chương trình (Program 
Counter – PC):
„ Cịn gọi là con trỏ lệnh (Instruction Pointer – IP)
„ Là thanh ghi chứa địa chỉ cảu một lệnh tiếp theo 
sẽ được nhận vào.
„ Sau khi một lệnh được nhận vào thì nội dung 
của PC tự động tăng để trỏ sang lệnh kế tiếp 
nằm ngay sau lệnh vừa nhận. 
Phan Trung Kiên 8
Minh họa bộ đếm chương trình
3Phan Trung Kiên 9
Thanh ghi con trỏ dữ liệu (Data 
Pointer – DP):
„ Chứa địa chỉ của ngăn nhớ dữ liệu mà CPU 
muốn truy nhập.
„ Thường cĩ một số thanh ghi con trỏ dữ liệu
Phan Trung Kiên 10
Minh hoạ thanh ghi con trỏ dữ liệu
Phan Trung Kiên 11
Ngăn xếp (Stack)
„ Ngăn xếp là vùng nhớ cĩ cấu trúc LIFO (Last In 
- First Out)
„ Ngăn xếp thường dùng để phục vụ cho chương 
trình con
„ Đáy ngăn xếp là một ngăn nhớ xác định
„ Đỉnh ngăn xếp là thơng tin nằm ở vị trí trên cùng 
trong ngăn xếp
„ Đỉnh ngăn xếp cĩ thể bị thay đổi
Phan Trung Kiên 12
Thanh ghi con trỏ ngăn xếp (Stack 
Pointer – SP):
„ Chứa địa chỉ của ngăn nhớ đỉnh ngăn xếp
„ Khi cất một thơng tin vào ngăn xếp:
„ Nội dung của SP tự động giảm
„ Thơng tin được cất vào ngăn nhớ được trỏ bởi SP
„ Khi lấy một thơng tin ra khỏi ngăn xếp:
„ Thơng tin được đọc từ ngăn nhớ được trỏ bởi SP
„ Nội dung của SP tự động tăng
„ Khi ngăn xếp rỗng, SP trỏ vào đáy
4Phan Trung Kiên 13
Minh họa con trỏ ngăn xếp SP
Phan Trung Kiên 14
Thanh ghi cơ sở (Base Register) và
thanh ghi chỉ số (Index Register):
„ Thanh ghi cơ sở chứa địa chỉ của ngăn nhớ cơ 
sở
„ Thanh ghi chỉ số: chứa độ lệch địa chỉ giữa 
ngăn nhớ mà CPU cần truy nhập so với ngăn 
nhớ cơ sở.
„ Địa chỉ của ngăn nhớ cần truy nhập = địa chỉ cơ 
sở + chỉ số
Phan Trung Kiên 15
Minh họa thanh ghi cơ sở và thanh ghi 
chỉ số
Phan Trung Kiên 16
Các thanh ghi dữ liệu:
„ Chức năng: chứa các dữ liệu tạm thời hoặc các 
kết qủa trung gian phục vụ cho việc xử lý các dữ
liệu của CPU.
„ Các loại thanh ghi dữ liệu:
„ Các thanh ghi số nguyên:8, 16, 32, 64 bit
„ Các thanh ghi số dấu chấm động (Cĩ trên các bộ xử
lý cĩ khối FPU – Floadting Point Unit)
5Phan Trung Kiên 17
Thanh ghi trạng thái:
„ Cịn gọi là thanh ghi cờ (Flag Register)
„ Chức năng: chứa các thơng tin trạng thái của 
CPU.
„ Các cờ phép tốn: biểu thị trạng thái của kết qủa 
phép tốn.
„ Các cờ điều khiển: biểu thị trạng thái điều khiển của 
CPU.
Phan Trung Kiên 18
Các cờ phép tốn:
„ Cờ Zero (ZF - cờ rỗng): đựoc thiết lập lên một kết quả
của phép tốn vừa thực hiện bằng 0.
„ Cờ Sign (SF - cờ đấu): được thiết lập lên một kết quả
của phép tốn vừa thực hiện nhỏ hơn 0, hay nĩi cách 
khác, cờ Sign nhận giá trị bằng bit dấu của kết quả.
„ Cờ Carry (CF - cờ nhớ): cờ được thiết lập nếu phép 
tốn cĩ nhớ ra ngồi bit cao nhất → cờ báo tràn với số
khơng dấu.
„ Cờ Overflow (OF - cờ tràn): cờ được thiết lập nếu cộng 
hai số cùng dấu mà kết quả cĩ dấu ngược lại → cờ báo 
tràn với số cĩ dấu.
Phan Trung Kiên 19
Các cờ điều khiển:
„ Cờ Interrupt (IF - cờ cho phép ngắt):
„ Nếu IF = 1 → CPU ở trạng thái cho phép ngắt với tín 
hiệu yêu cầu ngắt từ bên ngồi.
„ Nếu IF = 0 → CPU ở trạng thái cấm ngắt với tín hiệu 
yêu cầu ngắt từ bên ngồi.
Phan Trung Kiên 20
Tập thanh ghi của một số bộ xử lý
6Phan Trung Kiên 21
3.2. Tập lệnh
„ Giới thiệu chung
„ Mỗi bộ xử lý cĩ một tập lệnh xác định
„ Tập lệnh thường từ hàng chục đến hàng trăm lệnh
„ Mỗi lệnh là một chuỗi số nhị phân mà BXL hiểu được 
để thực hiện một thao tác xác định
„ Các lệnh được mơ tả bằng ký hiệu gợi nhớ ? đĩ là
các lệnh hợp ngữ
Phan Trung Kiên 22
Giản đồ trạng thái của chu kỳ lệnh
Khơng kiểm tra ngắt
Tính tốn
địa chỉ lệnh
Giải mã
thao tác
lệnh
Tính tốn
địa chỉ tốn
hạng
Xử lý dữ liệu
Tính tốn
địa chỉ tốn
hạng
Nhận lệnh Nhận tốnhạng
Cất tốn
hạng
Nhiều
tốn
hạng
Nhiều
kết
quả
DL dạng
xâu hoặc
vectơ
Kết thúc lênh,
nhận lệnh
tiếp theo
Phan Trung Kiên 23
Giản đồ trạng thái của chu kỳ lệnh
Cĩ kiểm tra ngắt
Tính tốn
địa chỉ
lệnh
Giải mã
thao tác
lệnh
Tính tốn
địa chỉ
tốn hạng
Xử lý dữ
liệu
Tính tốn
địa chỉ
tốn hạng
Nhận lệnh Nhận tốnhạng
Cất tốn
hạng
Nhiều
tốn
hạng
Nhiều
kết
quả
DL dạng
xâu hoặc
vectơ
Kết thúc lênh,
nhận lệnh
tiếp theo
Kiểm tra
ngắt Ngắt
Khơng
cĩ ngắt
Phan Trung Kiên 24
Cấu trúc lệnh mã máy
„ Mã lệnh (opcode): cho biết thao tác cần thực hiện
„ Các tốn hạng (Operands): cho biết:
„ Nơi chứa dữ liệu cần tác động vào: t/h nguồn, t/h đích
„ Cho biết địa chỉ của lệnh tiếp theo
Mã lệnh Các tốn hạng
7Phan Trung Kiên 25
Các kiểu lệnh
„ Xử lý dữ liệu
„ Lưu trữ dữ liệu
„ Di chuyển dữ liệu
„ Điều khiển thứ tự thực hiện lệnh
Phan Trung Kiên 26
Các kiểu tốn hạng
„ Số lượng tốn hạng
„ Kiểu số
„ Số nguyên
„ Số dấu phẩy động
„ Kiểu ký tự
„ Mã của ký tự ASCII, BCD mở rộng, ...
„ Kiểu logic
„ Tốn hạng xử lý với cờ
Phan Trung Kiên 27
Số lượng tốn hạng
„ 3 tốn hạng:
„ Tốn hạng 1, tốn hạng 2, kết quả
„ a = b + c 
„ Cĩ thể dẫn tới lệnh tiếp theo (thường là ngầm hiểu)
„ Loại này khơng phổ dụng
„ Cần rất nhiều từ lệnh dài để chứa loại này
„ Ví dụ: SUB r1, r2, r3 (Motorola)
Phan Trung Kiên 28
Số lượng tốn hạng
„ 2 tốn hạng:
„ Cĩ một tốn hạng vừa là nguồn, vừa là đích
„ a = a + b
„ Giảm độ dài của lệnh
„ Cĩ thể thêm thao tác:
„ Dùng vùng nhớ tạm để chứa giá trị trước khi thực hiện
„ Ví dụ: ADD AX, BX
8Phan Trung Kiên 29
Số lượng tốn hạng
„ 1 tốn hạng:
„ Tốn hạng thường là một thanh ghi
„ Tốn hạng thứ hai được ngầm hiểu
„ Phổ dụng trong các máy xa xưa
„ Ví dụ: PUSH AX
Phan Trung Kiên 30
Số lượng tốn hạng
„ 0 tốn hạng
„ Điều khiển hệ thống
„ ít dùng
„ Ví dụ: NOP (No OPeration)
Phan Trung Kiên 31
So sánh số lượng tốn hạng
„ Nhiều tốn hạng:
„ Các lệnh phức tạp hơn
„ Cần nhiều thanh ghi hơn
„ Chỉ cần ít lệnh trong một chương trình
„ ít tốn hạng:
„ Các lệnh ít phức tạp hơn
„ Cần dùng nhiều lệnh trong một chương trình
„ Nhận/xử lý các lệnh nhanh hơn
Phan Trung Kiên 32
Các kiểu thao tác
„ Các lệnh chuyển dữ liệu
„ Các lệnh số học
„ Các lệnh logic
„ Các lệnh vào/ra
„ Các lệnh điều khiển hệ thống
„ Các lệnh chuyển điều khiển
9Phan Trung Kiên 33
Các lệnh chuyển dữ liệu
„ Đặc điểm:
„ Sao chép dữ liệu từ nguồn sang đích
„ Khơng ảnh hưởng đến các cờ
„ Các lệnh:
„ MOVE: copy dữ liệu từ nguồn đến đích
„ LOAD: copy dữ liệu từ bộ nhớ đến BXL
„ STORE: copy dữ liệu từ BXL đến bộ nhớ
„ EXCHANGE: trao đổi nội dung của nguồn và đích
„ PUSH: copy dữ liệu từ nguồn đến stack
„ POP: copy dữ liệu từ stack đến đích
Phan Trung Kiên 34
Các lệnh số học
„ Đặc điểm:
„ Thực hiện các phép tốn số học
„ Cĩ ảnh hưởng đến thanh ghi cờ
„ Các lệnh:
„ ADD: tính tổng hai tốn hạng
„ SUBTRACT: tính hiệu hai tốn hạng
„ MULTIPLY: tính tích hai tốn hạng
„ DIVIDE: tích thương hai tốn hạng
„ ABSOLUTE: lấy giá trị tuyệt đối của tốn hạng
„ NEGATE: đổi dấu tốn hạng (lấy bù 2)
„ INCREMENT: tăng tốn hạng lên 1
„ DECREMENT: giảm tốn hạng đi 1
Phan Trung Kiên 35
Các lệnh logic
„ Đặc điểm:
„ Thực hiện các phép tốn logic
„ Cĩ ảnh hưởng đến thanh ghi cờ
„ Các lệnh:
„ AND: thực hiện AND bit hai tốn hạng
„ OR: thực hiện OR bit hai tốn hạng
„ XOR: thực hiện XOR bit hai tốn hạng
„ NOT: đảo bit của tốn hạng (lấy bù 1)
„ TEST: thực hiện AND hai tốn hạng để lập cờ
„ SHIFT: thực hiện dịch bit tốn hạng
„ ROTATE: thực hiện quay bit tốn hạng
„ COMPARE: so sánh hai tốn hạng
Phan Trung Kiên 36
Các lệnh vào ra
„ Đặc điểm:
„ Trao đổi dữ liệu với thiết bị ngoại vi
„ Các lệnh:
„ INPUT: copy dữ liệu từ một cổng xác định đến đích
„ OUTPUT: copy dữ liệu từ nguồn đến cổng xác định
„ START I/O: chuyển các lệnh đến BXL vào/ra để khởi tạo thao 
tác vào/ra
„ TEST I/O: chuyển thơng tin trạng thái từ hệ thống vào/ra đến 
đích xác định
10
Phan Trung Kiên 37
Các lệnh điều khiển hệ thống
„ HALT: dừng thực hiện chương trình
„ WAIT: dừng thực hiện chương trình; liên tục 
kiểm tra điều kiện được chỉ định; chương trình 
được thực hiện khi điều kiện được thỏa mãn
„ NO OPERATION: khơng cĩ thao tác nào được 
thực hiện, nhưng chương trình vẫn tiếp tục chạy
Phan Trung Kiên 38
Các lệnh chuyển điều khiển
„ Đặc điểm:
„ Điều khiển rẽ nhánh trong chương trình
„ PC được nạp giá trị địa chỉ mới
„ Các lệnh:
„ JUMP: nhảy khơng điều kiện đến lệnh mới
„ JUMP CONDITIONAL: nhảy cĩ điều kiện
„ CALL: lệnh gọi CTC
„ RETURN: trở về từ CTC
„ INTERRUPT: lệnh gọi CTC ngắt
„ INTERRUPT RETURN: trở về từ CTC ngắt
Phan Trung Kiên 39
Minh họa lệnh gọi CTC
Phan Trung Kiên 40
Thể hiện ở Stack
Sau lƯnh
CALL Proc1
Khëi t¹o
néi dung
stack
Sau lƯnh
CALL Proc2
Sau lƯnh
RETURN
Sau lƯnh
CALL Proc2
Sau lƯnh
RETURN
Sau lƯnh
RETURN
11
Phan Trung Kiên 41
Các mode địa chỉ
„ Tốn hạng cĩ thể là:
„ Một giá trị cụ thể
„ Nội dung của thanh ghi
„ Nội dung của ngăn nhớ
„ Nội dung của cổng vào ra
„ Mode địa chỉ là cách thức địa chỉ hĩa trong lệnh 
để xác định tốn hạng
Phan Trung Kiên 42
Các mode địa chỉ
„ Mode địa chỉ tức thì
„ Mode địa chỉ trực tiếp
„ Mode địa chỉ gián tiếp
„ Mode địa chỉ thanh ghi
„ Mode địa chỉ gián tiếp qua thanh ghi
„ Mode địa chỉ dịch chuyển
„ Mode địa chỉ stack
Phan Trung Kiên 43
Mode địa chỉ tức thì
„ Tốn hạng là một phần của lệnh
„ Tốn hạng nằm ngay trong trường địa chỉ
„ Chỉ cĩ thể là tốn hạng nguồn
„ Truy nhập tốn hạng rất nhanh
„ Dải giá trị của tốn hạng bị hạn chế
„ Ví dụ: ADD AX, 10
Phan Trung Kiên 44
Sơ đồ mode địa chỉ tức thì
Tốn hạngMã lệnh
Lệnh
12
Phan Trung Kiên 45
Mode địa chỉ trực tiếp
„ Tốn hạng là ngăn nhớ cĩ địa chỉ được chỉ ra 
trong lệnh
„ BXL tham chiếu bộ nhớ một lần để truy nhập dữ
liệu
„ Khơng gian địa chỉ là hữu hạn
„ Ví dụ: ADD AL, [100]
Phan Trung Kiên 46
Sơ đồ mode địa chỉ trực tiếp
Địa chỉMã lệnh
Lệnh
Bộ nhớ
Tốn hạng
Phan Trung Kiên 47
Mode địa chỉ gián tiếp
„ Tốn hạng là nội dung của ngăn nhớ cĩ địa chỉ
nằm trong một ngăn nhớ khác, ngăn nhớ khác 
đĩ được thể hiện trong lệnh
„ Vùng nhớ cĩ thể được tham chiếu là lớn
„ Cĩ thể gián tiếp nhiều lần
„ BXL phải thực hiện tham chiếu bộ nhớ nhiều lần 
để tìm tốn hạng ? chậm
„ Ví dụ: ADD AH, [a]
Phan Trung Kiên 48
Sơ đồ mode địa chỉ gián tiếp
Địa chỉMã lệnh
Lệnh
Bộ nhớ
Tốn hạng
Địa chỉ của t/hạng
13
Phan Trung Kiên 49
Mode địa chỉ thanh ghi
„ Tốn hạng là nội dung của một thanh ghi
„ Số lượng thanh ghi cĩ hạn
„ Trường địa chỉ nhỏ (chỉ cần ít bit)
„ Độ dài lệnh ngắn hơn
„ Nhận lệnh nhanh hơn
„ Khơng tham chiếu bộ nhớ
„ Truy nhập tốn hạng nhanh
„ Tăng số lượng thanh ghi ? tăng tốc độ
„ Ví dụ: ADD AL, AH
Phan Trung Kiên 50
Sơ đồ mode địa chỉ thanh ghi
Tên thanh ghiMã lệnh
Lệnh
Tập thanh ghi
Tốn hạng
Phan Trung Kiên 51
Mode địa chỉ gián tiếp qua thanh ghi
„ Tốn hạng là ngăn nhớ cĩ địa chỉ nằm trong 
một thanh ghi
„ Thanh ghi này được gọi là thanh ghi con trỏ
„ Vùng nhớ cĩ thể được tham chiếu là lớn: 2n, 
trong đĩ n là độ dài (bit) của thanh ghi
„ Ví dụ: SUB AL, [BX]
Phan Trung Kiên 52
Sơ đồ mode gián tiếp qua 
thanh ghi
Tên thanh ghiMã lệnh
Lệnh
Bộ nhớ
Tốn hạngĐịa chỉ của t/hạng
Tập thanh ghi
14
Phan Trung Kiên 53
Mode địa chỉ dịch chuyển
„ Kết hợp hai mode: 
„ Mode gián tiếp qua thanh ghi
„ Mode trực tiếp
„ Trường địa chứa hai thành phần:
„ Tên một thanh ghi
„ Một hằng số
„ Địa chỉ tốn hạng = ND thanh ghi = hằng số
„ Ví dụ: ADD AL, [SI + 50]
Phan Trung Kiên 54
Sơ đồ mode địa chỉ dịch 
chuyển
Register 
R
Mã lệnh
Lệnh
Bộ nhớ
Tốn hạng
Địa chỉ của t/hạng
Tập thanh ghi
Address A
+
Phan Trung Kiên 55
Mode địa chỉ stack
„ Tốn hạng được ngầm hiểu là ngăn nhớ đỉnh 
ngăn xếp
„ Ví dụ: PUSH AX
Mã lệnh
Lệnh
Ngăn nhớ đỉnh 
stack
Ngầm hiểu

File đính kèm:

  • pdfbai_giang_kien_truc_may_tinh_chuong_3_tap_lenh_phan_trung_ki.pdf