14
1 1 Chương 3. Tp Lnh Phan Trung Kiên Đại hc Tây Bc Phan Trung Kiên 2 Chương 3. Kiến Trúc Tp Lnh Tp thanh ghi Tp lnh Ví dnghiên cu Phan Trung Kiên 3 3.1. Tp thanh ghi Chc năng và đặc đim: Cha các thông tin tm thi phc vcho hot động thi đim hin ti ca CPU Được coi là mc đầu tiên ca hthng nhSlượng thanh ghi nhiu tăng hiu năng ca CPU Có hai loi thanh ghi: Các thanh ghi lp trình được Các thanh ghi không lp trình được Phan Trung Kiên 4 Phân loi thanh ghi theo chc năng Thanh ghi địa ch: qun lý địa chca ngăn nhhay cng vào-ra. Thanh ghi dliu: cha tm thi các dliu. Thanh ghi đa năng: có thcha địa chhoc dliu. Thanh ghi điu khin/trng thái: cha các thông tin điu khin và trng thái ca CPU. Thanh ghi lnh: cha lnh đang được thc hin.

Ktmt chuong 3

Embed Size (px)

Citation preview

Page 1: Ktmt chuong 3

1

1

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ệnhTập thanh ghiTập lệnhVí dụ nghiên cứu

Phan Trung Kiên 3

3.1. Tập thanh ghiChứ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 CPUCó hai loại thanh ghi:

Các thanh ghi lập trình đượcCá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ăngThanh 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.

Page 2: Ktmt chuong 3

2

Phan Trung Kiên 5

Một số thanh ghi điển hìnhCác thanh ghi địa chỉCác thanh ghi dữ liệuThanh 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 – raChươ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

Page 3: Ktmt chuong 3

3

Phan 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ếpKhi cất một thông tin vào ngăn xếp:

Nội dung của SP tự động giảmThô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 SPNội dung của SP tự động tăng

Khi ngăn xếp rỗng, SP trỏ vào đáy

Page 4: Ktmt chuong 3

4

Phan 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 bitCác thanh ghi số dấu chấm động (Có trên các bộ xửlý có khối FPU – Floadting Point Unit)

Page 5: Ktmt chuong 3

5

Phan 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 toán: biểu thị trạng thái của kết qủa phép toá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 toán:Cờ Zero (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ếu phép toán có nhớ ra ngoà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 ngoà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 ngoài.

Phan Trung Kiên 20

Tập thanh ghi của một số bộ xử lý

Page 6: Ktmt chuong 3

6

Phan Trung Kiên 21

3.2. Tập lệnhGiới thiệu chung

Mỗi bộ xử lý có một tập lệnh xác địnhTập lệnh thường từ hàng chục đến hàng trăm lệnhMỗ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 địnhCá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 toánđịa chỉ lệnh

Giải mãthao tác

lệnh

Tính toánđịa chỉ toán

hạngXử lý dữ liệu

Tính toánđịa chỉ toán

hạng

Nhận lệnh Nhận toánhạng

Cất toánhạng

Nhiềutoánhạng

Nhiềukếtquả

DL dạngxâu hoặc

vectơ

Kết thúc lênh,nhận lệnhtiế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 toánđịa chỉlệnh

Giải mãthao tác

lệnh

Tính toánđịa chỉ

toán hạngXử lý dữ

liệu

Tính toánđịa chỉ

toán hạng

Nhận lệnh Nhận toánhạng

Cất toánhạng

Nhiềutoánhạng

Nhiềukếtquả

DL dạngxâu hoặc

vectơ

Kết thúc lênh,nhận lệnhtiếp theo

Kiểm trangắt Ngắt

Khôngcó 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ệnCác toá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 đíchCho biết địa chỉ của lệnh tiếp theo

Mã lệnh Các toán hạng

Page 7: Ktmt chuong 3

7

Phan Trung Kiên 25

Các kiểu lệnhXử lý dữ liệuLưu trữ dữ liệuDi 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 toán hạngSố lượng toán hạngKiểu số

Số nguyênSố dấu phẩy động

Kiểu ký tựMã của ký tự ASCII, BCD mở rộng, ...

Kiểu logicToán hạng xử lý với cờ

Phan Trung Kiên 27

Số lượng toán hạng3 toán hạng:

Toán hạng 1, toá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ụngCầ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 toán hạng2 toán hạng:

Có một toán hạng vừa là nguồn, vừa là đícha = a + bGiảm độ dài của lệnhCó 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

Page 8: Ktmt chuong 3

8

Phan Trung Kiên 29

Số lượng toán hạng1 toán hạng:

Toán hạng thường là một thanh ghiToán hạng thứ hai được ngầm hiểuPhổ dụng trong các máy xa xưa

Ví dụ: PUSH AX

Phan Trung Kiên 30

Số lượng toán hạng0 toá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 toán hạngNhiều toán hạng:

Các lệnh phức tạp hơnCần nhiều thanh ghi hơnChỉ cần ít lệnh trong một chương trình

ít toán hạng:Các lệnh ít phức tạp hơnCần dùng nhiều lệnh trong một chương trìnhNhận/xử lý các lệnh nhanh hơn

Phan Trung Kiên 32

Các kiểu thao tácCác lệnh chuyển dữ liệuCác lệnh số họcCác lệnh logicCác lệnh vào/raCác lệnh điều khiển hệ thốngCác lệnh chuyển điều khiển

Page 9: Ktmt chuong 3

9

Phan 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 đíchKhông ảnh hưởng đến các cờ

Các lệnh:MOVE: copy dữ liệu từ nguồn đến đíchLOAD: copy dữ liệu từ bộ nhớ đến BXLSTORE: copy dữ liệu từ BXL đến bộ nhớEXCHANGE: trao đổi nội dung của nguồn và đíchPUSH: copy dữ liệu từ nguồn đến stackPOP: 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 toán số họcCó ảnh hưởng đến thanh ghi cờ

Các lệnh:ADD: tính tổng hai toán hạngSUBTRACT: tính hiệu hai toán hạngMULTIPLY: tính tích hai toán hạngDIVIDE: tích thương hai toán hạngABSOLUTE: lấy giá trị tuyệt đối của toán hạngNEGATE: đổi dấu toán hạng (lấy bù 2)INCREMENT: tăng toán hạng lên 1DECREMENT: giảm toá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 toán logicCó ảnh hưởng đến thanh ghi cờ

Các lệnh:AND: thực hiện AND bit hai toán hạngOR: thực hiện OR bit hai toán hạngXOR: thực hiện XOR bit hai toán hạngNOT: đảo bit của toán hạng (lấy bù 1)TEST: thực hiện AND hai toán hạng để lập cờSHIFT: thực hiện dịch bit toán hạngROTATE: thực hiện quay bit toán hạngCOMPARE: so sánh hai toá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 viCác lệnh:

INPUT: copy dữ liệu từ một cổng xác định đến đíchOUTPUT: copy dữ liệu từ nguồn đến cổng xác địnhSTART I/O: chuyển các lệnh đến BXL vào/ra để khởi tạo thao tác vào/raTEST I/O: chuyển thông tin trạng thái từ hệ thống vào/ra đến đích xác định

Page 10: Ktmt chuong 3

10

Phan Trung Kiên 37

Các lệnh điều khiển hệ thốngHALT: dừng thực hiện chương trìnhWAIT: 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ãnNO 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ìnhPC đượ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ớiJUMP CONDITIONAL: nhảy có điều kiệnCALL: lệnh gọi CTCRETURN: trở về từ CTCINTERRUPT: lệnh gọi CTC ngắtINTERRUPT 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ÖnhCALL Proc1

Khëi t¹onéi dung

stack

Sau lÖnhCALL Proc2

Sau lÖnhRETURN

Sau lÖnhCALL Proc2

Sau lÖnhRETURN

Sau lÖnhRETURN

Page 11: Ktmt chuong 3

11

Phan Trung Kiên 41

Các mode địa chỉToán hạng có thể là:

Một giá trị cụ thểNội dung của thanh ghiNộ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 toá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ếpMode địa chỉ gián tiếpMode địa chỉ thanh ghiMode địa chỉ gián tiếp qua thanh ghiMode địa chỉ dịch chuyểnMode địa chỉ stack

Phan Trung Kiên 43

Mode địa chỉ tức thìToán hạng là một phần của lệnhToán hạng nằm ngay trong trường địa chỉChỉ có thể là toán hạng nguồnTruy nhập toán hạng rất nhanhDải giá trị của toán hạng bị hạn chếVí dụ: ADD AX, 10

Phan Trung Kiên 44

Sơ đồ mode địa chỉ tức thì

Toán hạngMã lệnh

Lệnh

Page 12: Ktmt chuong 3

12

Phan Trung Kiên 45

Mode địa chỉ trực tiếpToán hạng là ngăn nhớ có địa chỉ được chỉ ra trong lệnhBXL tham chiếu bộ nhớ một lần để truy nhập dữliệuKhông gian địa chỉ là hữu hạnVí 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ớ

Toán hạng

Phan Trung Kiên 47

Mode địa chỉ gián tiếpToá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ệnhVùng nhớ có thể được tham chiếu là lớnCó thể gián tiếp nhiều lầnBXL phải thực hiện tham chiếu bộ nhớ nhiều lần để tìm toán hạng ? chậmVí 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ớ

Toán hạng

Địa chỉ của t/hạng

Page 13: Ktmt chuong 3

13

Phan Trung Kiên 49

Mode địa chỉ thanh ghiToán hạng là nội dung của một thanh ghiSố lượng thanh ghi có hạnTrường địa chỉ nhỏ (chỉ cần ít bit)Độ dài lệnh ngắn hơnNhận lệnh nhanh hơn

Không tham chiếu bộ nhớTruy nhập toán hạng nhanhTă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

Toán hạng

Phan Trung Kiên 51

Mode địa chỉ gián tiếp qua thanh ghiToán hạng là ngăn nhớ có địa chỉ nằm trong một thanh ghiThanh 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 ghiVí 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ớ

Toán hạngĐịa chỉ của t/hạng

Tập thanh ghi

Page 14: Ktmt chuong 3

14

Phan Trung Kiên 53

Mode địa chỉ dịch chuyểnKết hợp hai mode:

Mode gián tiếp qua thanh ghiMode trực tiếp

Trường địa chứa hai thành phần:Tên một thanh ghiMột hằng số

Địa chỉ toá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ớ

Toán hạng

Địa chỉ của t/hạng

Tập thanh ghi

Address A

+

Phan Trung Kiên 55

Mode địa chỉ stackToán hạng được ngầm hiểu là ngăn nhớ đỉnh ngăn xếpVí dụ: PUSH AX

Mã lệnh

Lệnh

Ngăn nhớ đỉnh stack

Ngầm hiểu