Bài giảng Kiến trúc máy tính - Chương 4: Bộ xử lý trung tâm CPU - Đoàn Thị Quế
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kiến trúc máy tính - Chương 4: Bộ xử lý trung tâm CPU - Đoàn Thị Quế", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_kien_truc_may_tinh_chuong_4_bo_xu_ly_trung_tam_cpu.pdf
Nội dung text: Bài giảng Kiến trúc máy tính - Chương 4: Bộ xử lý trung tâm CPU - Đoàn Thị Quế
- Chương 4 Bộ xử lý trung tâm CPU 1
- Mục tiêu Nhận biết các thành phần cơ bản của đơn vị xử lý trung tâm (CPU) và chức năng của chúng. Hiểu được vai trò mỗi thành của CPU trong mối quan hệ với việc xử lý thông tin. Kiến trúc tập lệnh của CPU 2
- Nội dung Cấu trúc cơ bản của CPU Kiến trúc tập lệnh Hoạt động của CPU 3
- 4.1 Cấu trúc cơ bản của CPU Control Unit - CU Arithmetic and Logic Unit - ALU Register File – RF Bus Interface Unit - BIU Local Bus (Internal Bus) 4
- 1. Đơn vị số học và logic (ALU) . Chức năng: Thực hiện các phép toán số học và phép toán logic: . Số học: cộng, trừ, tăng, giảm, bù hai, so sánh . Logic: AND, OR, NOT, XOR, NOR, phép dịch bit 5
- Mô hình kết nối ALU 6
- Các khối bên trong ALU = Bộ cộng Bộ trừ Bộ dịch Bù hai Tăng Giảm OR AND XOR NOT NOR 7
- Bộ cộng sử dụng trong máy tính điện tử Bộ cộng hai số nhị phân n bit: 8
- Bộ cộng sử dụng trong máy tính điện tử Bộ bán tổng Bộ cộng đầy đủ 1 bit a0 S0 Half-Adder b0 c1 9
- 2. Thanh ghi Thanh ghi là bộ nhớ bên trong CPU . Vùng nhớ được CPU nhận biết qua tên thanh ghi . Ví dụ: Bảng mã thanh ghi của VXL 8086 10
- 2. 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ớ, có tốc độ truy xuất cực nhanh 11
- Thanh ghi Xây dựng từ các phần tử nhớ cơ bản: R Q S Q SR = SR = SR = SR= Q D = 0 D = 1 Q T = 0 T = 1 Q n n n 00 01 11 10 0 0 1 0 0 1 0 0 0 - 1 1 0 1 1 1 0 1 1 0 - 1 JK= JK= JK= JK= Q n 00 01 11 10 0 0 0 1 1 1 1 0 0 1 12
- Thanh ghi 8 bit song song 13
- Thanh ghi dịch 14
- 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 lệnh: chứa lệnh đang được thực hiện . Thanh ghi dữ liệu: chứa tạm thời các dữ liệu . Thanh ghi trạng thái: chứa các thông tin điều khiển của CPU và trạng thái kết quả phép toán . Thanh ghi đa năng: có thể chứa địa chỉ hoặc dữ liệu 15
- Các thanh ghi điển hình trong CPU 16
- Các thanh ghi địa chỉ . Thanh ghi cơ sở (thanh ghi đoạn) . Ví dụ: CS (Code segment . Thanh ghi chỉ số (thanh ghi lệch) . Ví dụ: PC (Program Counter) Thanh ghi cơ sở:Thanh ghi chỉ sổ > Lưu địa chỉ logic . MAR (Memory Address Register): Thanh ghi đệm địa chỉ 17
- Bộ đếm chương trình PC . PC: Program Counter . Còn được gọi là con trỏ lệnh IP (Instruction Pointer) . Lưu địa chỉ của lệnh tiếp theo sẽ được nhận vào . Sau khi một lệnh được nhận vào, nội dung PC tự động tăng để trỏ sang lệnh kế tiếp 18
- Ngăn xếp (Stack) . Ngăn xếp là vùng nhớ, thường dùng để phục vụ cho chương trình con hoặc phục vụ ngắt . Truy cập theo kiểu LIFO (Last in – First out) . Đá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 19
- Minh họa con trỏ ngăn xếp SP Đỉnh Stack Đáy Stack 20
- Cơ chế hoạt động của SP . 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 21
- Các thanh ghi dữ liệu . Chứa các dữ liệu tạm thời hoặc các kết quả trung gian . Cần có nhiều thanh ghi dữ liệu . Các thanh ghi số nguyên: 8, 16, 32, 64 bit . Các thanh ghi số dấu phẩy động (ví dụ theo tiêu chuẩn IEEE 754 là 32 bit, 64 bit, ) 22
- Thanh ghi tích lũy A Accumulator Cất giữ toán hạng hoặc các kết quả phép tính của ALU 23
- Thanh ghi trạng thái . Còn gọi là thanh ghi cờ (Flag Register) . Chứa các thông tin trạng thái của CPU . Các cờ phép toán: báo hiệu trạng thái của kết quả phép toán . Các cờ điều khiển: biểu thị trạng thái điều khiển của CU 24
- Ví dụ cờ phép toán . Cờ Zero (cờ rỗng): được thiết lập lên 1 khi kết quả của phép toán bằng 0 . Cờ Sign (cờ dấu): được thiết lập lên 1 khi kết quả phép toán nhỏ hơn 0 . Cờ Carry (cờ nhớ): được thiết lập lên 1 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 (cờ tràn): được thiết lập lên 1 nếu cộng hai số nguyên 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 . 25
- Ví dụ cờ điều khiển . Cờ Interrupt (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 gửi tớ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 gửi tới 26
- Bộ thanh ghi của 8086/8088 CPU 27
- Vị trí của thanh ghi trong 8086/8088 Đệm lệnh (4 bytes cho 8088) 28
- Nhóm thanh ghi dữ liệu (đa năng – general registers) . Thanh ghi dùng để lưu trữ dữ liệu tạm thời, ghi tham số cho mã lệnh, đây cũng là nơi lệnh trả kết quả về sau khi thực hiện . Có 4 thanh ghi 16 bit: . AX (Accumulator Register): thanh chứa . BX (Base Register): thanh ghi cơ sở . CX (Count Register): thanh ghi đếm . DX (Data Register): thanh ghi dữ liệu . Khi cần chứa các dữ liệu 8 bit thì các thanh ghi này có thể tách thành 2 thanh ghi 8 bit cao và 8 bit thấp làm việc độc lập 29
- Biểu diễn các thanh ghi dữ liệu . AX = AH|AL; BX = BH|BL; . CX = CH|CL; DX = DH|DL 16bit: 8bit cao|8 bit thấp . Ví dụ: AX = 10111101|10101011 AH AL BX = 7E ABH BH|BL 30
- Nhóm thanh ghi đoạn . Bộ nhớ thường được chia thành các đoạn (segment) khác nhau dành riêng để: . Đoạn chứa mã chương trình . Đoạn chứa dữ liệu và kết quả trung gian của chương trình . Đoạn đặc biệt (gọi là ngăn xếp) dùng vào việc quản lý các thông số của bộ vi xử lý khi gọi chương trình con hoặc trở về từ chương trình con . Địa chỉ của ngăn nhớ cần truy cập được xác định bởi: . Địa chỉ đầu của đoạn được lưu trong thanh ghi đoạn . Địa chỉ lệch từ ngăn nhớ cần truy cập tới ngăn nhớ đầu đoạn được lưu trong thanh ghi lệch 31
- Nhóm thanh ghi đoạn . Vi xử lý 8086 có 4 thanh ghi đoạn 16 bit: . CS (code segment): Thanh ghi đoạn mã . DS (data segment): Thanh ghi đoạn dữ liệu . SS (stack segment): Thanh ghi đoạn ngăn xếp . ES (extra segment): Thanh ghi đoạn dữ liệu phụ 32
- Thanh ghi đoạn mã CS (code segment) . Là thanh ghi đoạn mã 16 bit . Thanh ghi này phối hợp với thanh ghi con trỏ lệnh IP để ghi địa chỉ của lệnh sắp thực hiện trong đoạn mã . Địa chỉ đầy đủ là CS:IP 33
- Thanh ghi đoạn dữ liệu DS (Data segment) . Là thanh ghi đoạn 16 bit cho một đoạn dữ liệu . Thanh ghi này phối hợp với hai thanh ghi chỉ số SI và DI để đánh địa chỉ cho dữ liệu . Địa chỉ đầy đủ cho dữ liệu cần đọc là DS:SI . Địa chỉ đầy đủ cho dữ liệu cần ghi là DS:DI 34
- Thanh ghi đoạn ngăn xếp SS . Là thanh ghi đoạn 16 bit cho một ngăn xếp . Địa chỉ đỉnh của ngăn xếp được biểu diễn cùng với con trỏ ngăn xếp SP là SS:SP 35
- Thanh ghi đoạn dữ liệu phụ ES . Là thanh ghi dữ liệu phụ có chiều dài 16 bit. . Thường đuợc dùng để đánh địa chỉ một chuỗi . ES:SI là địa chỉ chuỗi đọc vào (chuỗi nguồn) . ES:DI là địa chỉ chuỗi cần viết ra (chuỗi đích) 36
- Nhóm thanh ghi con trỏ và chỉ số . Vi xử lý 8088/8086 có 3 thanh ghi con trỏ và 2 thanh ghi chỉ số 16 bit . Các thanh ghi con trỏ: . IP (instruction pointer): con trỏ lệnh . BP (base pointer): con trỏ cơ sở . SP (stack pointer): con trỏ ngăn xếp . Các thanh ghi chỉ số: . SI (source index): chỉ số nguồn . DI (destination index): chỉ số đích . Ứng dụng chính của mỗi thanh ghi là thanh ghi lệch cho các đoạn tương ứng 37
- Các thanh ghi con trỏ . IP (instruction pointer) . Là con trỏ chỉ tới lệnh máy tiếp theo. Lệnh này nằm trong bô nhớ mà địa chỉ đoạn được ghi trong CS . IP xác định địa chỉ lệch (địa chỉ offset) của lệnh kế tiếp trong đoạn mã lệnh sẽ được CPU thi hành . Cặp thanh ghi CS:IP = địa chỉ lệnh kế tiếp trong bộ nhớ mà CPU thi hành 38
- Các thanh ghi con trỏ (tiếp) . BP (base pointer) . Là con trỏ cơ sở trỏ về dữ liệu, BP luôn luôn trỏ vào dữ liệu nằm trong đoạn ngăn xếp SS. . Địa chỉ đầy đủ của một phần tử trong đoạn ngăn xếp sẽ là SS:BP . SP (stack pointer) . Là con trỏ ngăn xếp luôn trỏ vào đỉnh hiện thời của ngăn xếp nằm trong đoạn ngăn xếp SS . Địa chỉ đầy đủ của đỉnh ngăn xếp ứng với SS: SP 39
- Các thanh ghi chỉ số . SI (source index) . Là chỉ số nguồn . Chỉ vào dữ liệu trong đoạn dữ liệu DS . Địa chỉ đầy đủ của dữ liệu là DS:SI . DI (destination index) . Là chỉ số đích . Chỉ vào dữ liệu trong đoạn dữ liệu DS . Địa chỉ đầy đủ của dữ liệu là DS:DI 40
- Thanh ghi cờ FR (flag register) . Là thanh ghi 16 bit khá đặc biệt trong CPU, chứa các thông tin trạng thái hiện; . Ghi trạng thái kết quả các phép xử lý trong đơn vị số học và logic ALU (Ví dụ: trạng thái tràn của phép toán vừa thực hiện) . Hoặc một trạng thái hoạt động của khối thực hiện lệnh . Thanh ghi cờ gồm các cờ, mỗi cờ dùng 1 bit . Cờ bật có giá trị 1 . Cờ tắt có giá trị 0 . Một số cờ: CF, PF, SF, . Dựa vào các cờ này người lập trình có thể có các lệnh thích hợp tiếp theo cho bộ vi xử lý (các lệnh nhảy có điều kiện) 41
- Sơ đồ thanh ghi cờ của bộ VXL 8086/8088 x x x x OF DF IF TF SF ZF x AF x PF x CF X: là bit không được định nghĩa 42
- Các cờ cụ thể CF (carry flag) cờ nhớ, CF=1 khi có nhớ hoặc mượn từ MSB. OF (overflow) cờ tràn, OF =1 khi kết quả vượt ra ngoài giới hạn, xảy ra đối với phép tính có dấu. AF (auxliary carry flag) cờ nhớ phụ dùng cho các phép tính với mã BCD. AF = 1 khi có nhớ hoặc mượn từ một số BCD thấp (4 bit thấp) sang một số BCD cao (4 bit cao). SF (sign flag) cờ dấu, SF = 1 khi kết quả âm. ZF (zero flag) cờ rỗng, ZF = 1 khi kết quả bằng 0. 43
- Các cờ cụ thể (tiếp) PF (parity flag) cờ parity, PF phản ảnh tính chẵn (parity) của tổng số bit 1 có trong kết quả. Cở PF =1 khi tổng số bit 1 trong kết quả là chẵn TF (trap flag) cờ bẫy, TF = 1 khi vi xử lý ở trong chế độ chạy từng lệnh (chế độ này dùng khi cần tìm lỗi trong một chương trình). IF (interrupt enable flag) cờ cho phép ngắt, IF = 1 cho phép các yêu cầu ngắt che được (maskable interrupt) được tác động. DF (direction flag) cờ hướng. DF = 1 khi CPU làm việc với chuỗi ký tự theo thứ tự từ phải sang trái (lùi). 44
- Tổng kết các thanh ghi của VXL 8086/8088 . Nhóm thanh ghi dữ liệu: AX, BX, CX, DX . Nhóm thanh ghi địa chỉ: . Nhóm thanh ghi đoạn (DS, CS, SS, ES): chứa địa chỉ đoạn . Nhóm thanh ghi con trỏ (IP, SP, BP) và chỉ số (SI, DI): chứa địa chỉ lệch 45
- Cặp thanh ghi đoạn và thanh ghi lệch DS: SI Địa chỉ của dữ liệu nguồn cần đọc nằm trong đoạn dữ liệu DS DS:DI Địa chỉ của dữ liệu đích cần ghi vào nằm trong đoạn dữ liệu DS CS:IP Địa chỉ của lệnh sẽ được nằm trong đoạn mã CS SS:SP Địa chỉ của đỉnh ngăn xếp nằm trong đoạn ngăn xếp SS SS:BP Địa chỉ của dữ liệu nằm trong đoạn ngăn xếp SS ES:SI Địa chỉ của chuỗi dữ liệu nguồn cần đọc nằm trong đoạn dữ liệu phụ ES ES:DI Địa chỉ của chuỗi dữ liệu đích cần ghi nằm trong đoạn dữ liệu phụ ES 46
- 3. Đơn vị điều khiển . Chức năng: . Tạo tín hiệu điều khiển ra bên ngoài CPU để phục vụ việc trao đổi dữ liệu với M và I/O . Tạo tín hiệu bên trong CPU để dịch chuyển dữ liệu giữa các thanh ghi . Điều khiển ALU thực hiện phép toán yêu cầu 47
- Các tín hiệu điều khiển 48
- Các phương pháp thiết kế đơn vị điều khiển Điều khiển bằng kết nối cứng (Hardwired Control) Điều khiển bằng vi chương trình (Microprogrammed Control) 49
- Điều khiển bằng kết nối cứng Các tín hiệu điều khiển đầu ra khối CU là hàm logic của các tín hiệu vào Ứng với mỗi tín hiệu điều khiển cần một mạch logic Số chức năng càng nhiều CU càng phức tạp 50
- Đơn vị điều khiển bằng kết nối cứng IR Giải mã T1 Mạch . Clock phân . Các chia . CU cờ thời gian Tn . . . C0 Cn-1 Các tín hiệu điều khiển 51
- Nhận xét Điều khiển bằng kết nối cứng: Sử dụng mạch cứng để giải mã và tạo các tín hiệu điều khiển thực hiện lệnh Tốc độ nhanh Đơn vị điều khiển phức tạp 52
- Điều khiển bằng vi chương trình Một số khái niệm: Vi toán: Một chu trình lệnh bao gồm các chu trình nhỏ hơn: nhận lệnh, thực hiện lệnh, mỗi chu trình này bao gồm một loạt các bước nhỏ hơn luôn truy nhập vào các thanh ghi của CPU, các bước nhỏ này được gọi là phép vi toán Vi lệnh: Mỗi vi toán được mã hóa bằng một tập các ký hiệu được gọi là vi lệnh Vi chương trình: Tập hợp một dãy các vi lệnh tạo thành một vi chương trình 53
- Điều khiển bằng vi chương trình Bộ nhớ vi chương trình (ROM) lưu trữ các vi chương trình (microprogram) Để hoàn thành một lệnh cần thực hiện một hoặc một vài vi chương trình Với mỗi vi lênh, CU sẽ thiết lập 1 tập các tín hiệu điều khiển tương ứng gọi là từ điều khiển Tốc độ chậm 54
- Đơn vị điều khiển bằng vi chương trình Các tín hiệu Thanh ghi lệnh điều khiển từ bus hệ thống Bô giải mã Khối logic Clock điều khiển Thanh ghi địa chỉ vi lệnh Các cờ Read Bô nhớ vi chương trình Thanh ghi đệm vi lệnh Bô giải mã vi lệnh Các tín hiệu điều khiển Các tín hiệu điều khiển bên trong CPU đến bus hệ thống 55
- Nội dung Cấu trúc cơ bản của CPU Kiến trúc tập lệnh Hoạt động của CPU 56
- 4.2 Kiến trúc tập lệnh Giới thiệu tập lệnh Đặc trưng của lệnh máy Tập lệnh Các phương pháp định địa chỉ RISC và CISC 57
- Giới thiệu về tập lệnh . Mỗi lệnh là một chuỗi số nhị phân (được gọi là lệnh máy) mà bộ vi xử lý hiểu được để thực hiện một thao tác xác định. . Bộ xử lý có nhiều chức năng, mỗi chức năng ứng với một lệnh Tập các lệnh gọi là tập lệnh của bộ xử lý . Dùng hợp ngữ (assembly language) miêu tả các lệnh máy bằng tổ hợp các ký tự gợi nhớ chính là các lệnh của hợp ngữ 58
- Giới thiệu về tập lệnh . Lệnh hợp ngữ: . Ví dụ: 59
- Giới thiệu về tập lệnh . Yêu cầu của một lệnh trong máy tính phải chỉ ra: . Chức năng của lệnh . Toán hạng của lệnh . Nơi cất kết quả . Địa chỉ của lệnh tiếp theo 60
- 4.2 Kiến trúc tập lệnh Giới thiệu Đặc trưng của lệnh máy Tập lệnh Các phương pháp định địa chỉ RISC và CISC 61
- 1. Các đặc trưng của lệnh máy . Cấu trúc mã lệnh . Các kiểu lệnh . Số lượng địa chỉ . Kiểu dữ liệu 62
- 1. Các đặc trưng của lệnh máy (tiếp) . Cấu trúc mã lệnh: . Mã thao tác (Operation Code: Opcode): Mã chỉ ra thao tác mà bộ vi xử lý cần phải thực hiện, phân biệt đó là lệnh gì . Địa chỉ toán hạng (Operand Address): Chỉ ra nơi chứa các toán hạng mà thao tác sẽ tác động . Toán hạng (operand) cho biết cái gì được xử lý (nội dung của thanh ghi hay bộ nhớ) . Toán hạng nguồn: dữ liệu vào của thao tác . Toán hạng đích: dữ liệu ra của thao tác 63
- 1. Các đặc trưng của lệnh máy (tiếp) . Các kiểu lệnh: . Xử lý dữ liệu (Data processing): Các lệnh số học và logic . Lưu trữ dữ liệu (Data storage): chuyển dữ liệu vào/ra giữa thanh ghi và bộ nhớ . Vận chuyển dữ liệu (Data movement): Các lệnh vào/ra . Điều khiển (Control): Các lệnh rẽ nhánh và kiểm tra . Số lượng địa chỉ: thông thường trong một lệnh có thể có 3, 2, 1, 0 địa chỉ cho các toán hạng 64
- Ba địa chỉ toán hạng . 2 toán hạng nguồn, 1 toán hạng đích . c = a + b . Từ lệnh dài vì phải mã hoá địa chỉ cho cả ba toán hạng 65
- Hai địa chỉ toán hạng . Một toán hạng vừa là toán hạng nguồn vừa là toán hạng đích; toán hạng còn lại là toán hạng nguồn . a = a + b . Giá trị cũ của 1 toán hạng nguồn bị mất vì phải chứa kết quả . Rút gọn độ dài từ lệnh 66
- Một địa chỉ toán hạng . Một toán hạng được chỉ ra trong lệnh . Một toán hạng là ngầm định thường là thanh ghi tích lũy A (Accumulator) 67
- Không địa chỉ toán hạng . Các toán hạng đều được ngầm định . Sử dụng trong điều khiển Stack . Lệnh không địa chỉ luôn ngầm định trỏ vào đỉnh của Stack . Ví dụ: Push a Pop c 68
- Ví dụ Cần thực hiện phép toán: F = (A-B)/(C+D*E) 1. Sử dụng lệnh 3 địa chỉ SUB R1, A, B ; R1 A – B MPY R2, D, E ; R2 D*E ADD R2, R2,C ; R2 R2 + C DIV R1, R1, R2 ; R1 R1 /R2 69
- Ví dụ (tiếp) 2. Sử dụng lệnh 2 địa chỉ MOV R1, A ; R1 A SUB R1, B ; R1 R1– B MOV R2, D ; R2 D MPY R2, E ; R2 R2*E ADD R2,C ; R2 R2 + C DIV R1, R2 ; R1 R1 /R2 70
- Ví dụ (tiếp) 3. Sử dụng lệnh 1 địa chỉ: LOAD D AC D MPY E AC AC*E ADD C AC AC + C STOR M M AC LOAD A AC A SUB B AC AC – B DIV M AC AC/M STOR M M AC 71
- Đánh giá về số địa chỉ toán hạng . Nhiều địa chỉ toán hạng: . Lệnh dài hơn . Cần nhiều thanh ghi . Nhận lệnh và thực hiện lệnh chậm hơn . Chương trình có ít lệnh hơn . Ít địa chỉ toán hạng: . Lệnh ngắn hơn . Cần ít thanh ghi . Nhận lệnh và thực hiện lệnh nhanh hơn . Chương trình có nhiều lệnh hơn 72
- 1. Các đặc trưng của lệnh máy (tiếp) Các kiểu dữ liệu: Địa chỉ (Addresses) Dữ liệu sô ́(Numbers): Số nguyên Số dấu phẩy động Số BCD Dữ liệu ký tự (Characters): mã hóa theo bộ mã ký tự Dữ liệu kiểu logic (Logical data) 73
- 4.2 Kiến trúc tập lệnh Giới thiệu Đặc trưng của lệnh máy Tập lệnh Các phương pháp định địa chỉ RISC và CISC 74
- 2. Tập lệnh Chuyển dữ liệu Xử lý số học Xử lý logic Vào/ra Chuyển đổi Chuyển điều khiển Điều khiển hệ thống 75
- a. Các lệnh chuyển dữ liệu . MOV Sao chép dữ liệu từ toán hạng nguồn đến đích . LOAD Nạp dữ liệu từ bộ nhớ đến bộ xử lý . STORE Cất dữ liệu từ bộ xử lý đến bộ nhớ . CLEAR Chuyển các bit 0 vào toán hạng đích . SET Chuyển các bit 1 vào toán hạng đích . PUSH Cất nội dung của một toán hạng nguồn vào stack . POP Lấy nội dung ở đỉnh Stack ra toán hạng đích 76
- b. Các lệnh số học . ADD Cộng hai toán hạng . SUBTRACT Trừ hai toán hạng . MULTIPLY Nhân hai toán hạng . DIVIDE Chia hai toán hạng . ABSOLUTE Lấy trị tuyệt đối toán hạng . NEGATE Đổi dấu toán hạng (lấy bù 2) . INCREMENT Tăng toán hạng thêm 1 . DECREMENT Giảm toán hạng đi 1 . COMPARE Trừ 2 toán hạng để lập cờ 77
- c. Các lệnh logic . AND Thực hiện phép AND hai toán hạng . OR Thực hiện phép OR hai toán hạng . XOR Thực hiện phép XOR hai toán hạng . NOT Đảo bit của toán hạng (lấy bù 1) . Shift Dịch trái (phải) toán hạng . Rotate Quay trái (phải) toán hạng 78
- Minh họa lệnh AND, OR và XOR . Giả sử có hai thanh ghi R1, R2 chứa dữ liệu như sau R1 1010 1010 R2 0000 1111 R1 AND R2 0000 1010 R1 OR R2 1010 1111 R1 XOR R2 1010 0101 79
- Các thao tác Shift và Rotate 80
- d. Các lệnh vào/ra . Input Copy dữ liệu từ một cổng xác định đưa đến đích . Output Copy dữ liệu từ nguồn đến một cổng xác định 81
- e. Các lệnh chuyển đổi Chuyển đổi dữ liệu từ dạng này sang dạng khác. Ví dụ: chuyển từ số thập phân sang nhị phân 82
- f. Các lệnh chuyển điều khiển (rẽ nhánh) . JUMP (BRANCH) - Lệnh nhảy không điều kiện . JUMP CONDITIONAL - Lệnh nhảy có điều kiện . Call- Lệnh gọi chương trình con . Return – Lệnh trở về từ chương trình con 83
- Lệnh JUMP . Chuyển tới thực hiện lệnh ở vị trí có địa chỉ XXX: PC XXX 84
- Lệnh JUMP CONDITIONAL . Trong lệnh có kèm theo điều kiện . Kiểm tra điều kiện trong lệnh: . Điều kiện được kiểm tra thông qua các cờ . Nếu điều kiện đúng chuyển tới thực hiện lệnh ở vị trí có địa chỉ XXX . Nếu điều kiện sai chuyển sang thực hiện lệnh kế tiếp Ví dụ: BRP X Nhảy tới ô nhớ X nếu kết quả dương BRN X Nhảy tới ô nhớ X nếu kết quả âm BRZ X Nhảy tới ô nhớ X nếu kết quả bằng 0 85
- Lệnh CALL và RETURN . CALL - Lệnh gọi chương trình con: . Cất nội dung PC (chứa địa chỉ của lệnh kế tiếp) ra Stack . Nạp vào PC địa chỉ của lệnh đầu tiên của chương trình con được gọi . Bộ xử lý được chuyển sang thực hiện chương trình con tương ứng . RETURN - Lệnh trở về từ chương trình con: . Lấy địa chỉ của lệnh kế tiếp được cất ở Stack nạp trả lại cho PC . Bộ xử lý được điều khiển quay trở về thực hiện tiếp lệnh nằm sau lệnh CALL 86
- g. Các lệnh điều khiển hệ thống HALT: Dừng thực hiện chương trình WAIT: Tạm dừng thực hiện chương trình, lặp kiểm tra điều kiện cho đến khi thoả mãn thì tiếp tục thực hiện NO OPERATION: Không thực hiện gì cả LOCK: Cấm không cho xin chuyển nhượng bus UNLOCK: Cho phép xin chuyển nhượng bus 87
- Bài tập về nhà Tìm hiểu tập lệnh của vi xử lý Intel x86 Tài liệu tham khảo: Chapter 10, Stallings, William. Computer organization and architecture: designing for performance. 2010, 8th edition 88
- 4.2 Kiến trúc tập lệnh Giới thiệu Đặc trưng của lệnh máy Tập lệnh Các phương pháp định địa chỉ RISC và CISC 89
- 3. Các phương pháp định địa chỉ . Phương pháp định địa chỉ: là cách thức địa chỉ hóa trong trường địa chỉ của lệnh để xác định nơi chứa toán hạng . Toán hạng của lệnh có thể nằm ở đâu? . Một giá trị cụ thể nằm ngay trong lệnh . Nội dung của thanh ghi phải cho biết tên của thanh ghi . Nội dung của ô nhớ phải cho biết địa chỉ của ô nhớ 90
- Đánh địa chỉ cho bộ nhớ 0 1 1 . Địa chỉ vật lý của ô nhớ: 1 segment 2 3 . Bộ nhớ gồm một dãy các ô nhớ 4 5 được đánh địa chỉ theo thứ tự tăng 6 n 7 dần bắt đầu từ 0 tới 2 - 1 (địa chỉ 8 9 vật lý) . Số ô nhớ lớn không gian địa chỉ bộ nhớ lớn khó quản lý . Địa chỉ logic của ô nhớ: . Bộ nhớ được chia thành các đoạn n (Segment) 2 - 1 91
- Đánh địa chỉ cho bộ nhớ (tiếp) Ô nhớ đầu tiên- địa chỉ đoạn (segment) được Ô nhớ cơ sở cất trong thanh ghi Địa chỉ độ đoạn lệch (offset) cất trong thanh ghi độ Ô nhớ cần truy cập lệch Ô nhớ cuối cùng Địa chỉ của ô nhớ cần truy cập: Địa chỉ đoạn : Địa chỉ lệch địa chỉ logic Kí hiệu: Segment : Offset 92
- Đánh địa chỉ cho bộ nhớ Nhận xét: . Chương trình (các lệnh CPU) luôn dùng địa chỉ logic . Khi truy xuất bộ nhớ, CPU sẽ chuyển đổi địa chỉ logic sang địa chỉ vật lý để truy xuất bộ nhớ 93
- Bộ nhớ CPU Intel 8086 Không gian địa chỉ vật lý (A19-A0): 00000H FFFFFH (1MB) Địa chỉ logic gồm hai thành phần: 94
- Bộ nhớ CPU Intel 8086 (tiếp) 95
- Ví dụ 1 Cặp thanh ghi CS:IP chứa địa chỉ logic a. F0F0H :F0F0H b. FFFFH :0000H Hãy tính địa chỉ vật lý của các địa chỉ logic trên? a/ b/ F0F00H FFFF0H +F0F0H + 0000H Kết quả FFFF0H FFFF0H 96
- Ví dụ 2 Tìm địa chỉ vật lý từ các địa chỉ logic sau: a. 12A4H : 0022H b. 11CDH : 0D92H a/ b/ 12A40H 11CD0H + 0022H + 0D92H Kết quả 12A62H 12A62H 97
- Nhận xét . Một địa chỉ vật lý có thể được xác định thông qua nhiều địa chỉ logic khác nhau . Nhưng với mỗi địa chỉ logic duy nhất chỉ xác định được 1 địa chỉ vật lý 98
- Ngầm định thanh ghi đoạn . Một ngăn nhớ được xác định bởi 2 địa chỉ: . Địa chỉ ngăn nhớ = Địa chỉ đoạn: Địa chỉ lệch . Ngầm định thanh ghi đoạn . Ngăn nhớ = [Tên thanh ghi lệch] 99
- Ví dụ thanh ghi ngầm định của VXL 8086 . [BP]= SS:BP . [SP] = SS:SP . [SI] = DS:SI . [BX] = DS:BX . [DI] = DS:DI . [IP] = CS:IP 100
- 3. Các phương pháp định địa chỉ (tiếp) . Các phương pháp định địa chỉ thông dụng: . Định địa chỉ tức thì . Định địa chỉ thanh ghi . Định địa chỉ trực tiếp . Định địa chỉ gián tiếp qua thanh ghi . Định địa chỉ gián tiếp . Định địa chỉ dịch chuyển 101
- Định địa chỉ tức thì . Toán hạng nằm ngay trong trường địa chỉ của lệnh . Chỉ có thể là toán hạng nguồn . Ví dụ: MOV CL,5 Chuyển 5 vào CL . Không tham chiếu bộ nhớ . Truy nhập toán hạng rất nhanh . Dải giá trị của toán hạng bị hạn chế 102
- Định địa chỉ thanh ghi . Toán hạng được chứa trong thanh ghi có tên trong Trường địa chỉ . Ví dụ: MOV BX, DX Chuyển nội dung DX vào BX . Số lượng thanh ghi ít Trường địa chỉ chỉ cần ít bit . Không tham chiếu bộ nhớ . Truy nhập toán hạng nhanh . Tăng số lượng thanh ghi hiệu quả hơn 103
- Định địa chỉ trực tiếp . Toán hạng là ngăn nhớ có địa chỉ được chỉ ra trực tiếp trong Trường địa chỉ của lệnh . Ví dụ: ADD R1, A; R1 R1 + (A) . Cộng nội dung thanh ghi R1 với nội dung của ngăn nhớ có địa chỉ là A . Tìm toán hạng trong bộ nhớ ở địa chỉ A . CPU tham chiếu bộ nhớ một lần để truy nhập dữ liệu 104
- Ví dụ định địa chỉ trực tiếp MOV AL, [C325H] Chuyển nội dung ô nhớ DS:C325 vào AL 105
- Định địa chỉ gián tiếp qua thanh ghi . Toán hạng là ngăn nhớ có địa chỉ nằm trong thanh ghi có tên trong trường địa chỉ . Trường địa chỉ cho biết tên thanh ghi đó . Vùng nhớ có thể được tham chiếu là lớn (2n), (với n là độ dài của thanh ghi) 106
- Ví dụ địa chỉ gián tiếp qua thanh ghi . Ví dụ: MOV AL, [BX] Chuyển nội dung ô nhớ có địa chỉ DS:BX vào AL MOV [DI], AL Chuyển nội dung AL vào ô nhớ có địa chỉ DS:DI . Tất cả các ô nhớ có địa chỉ gián tiếp qua thanh ghi thì thanh ghi đoạn ngầm định sẽ chứa địa chỉ đoạn 107
- Định địa chỉ gián tiếp Ngăn nhớ được trỏ bởi Trường địa chỉ của lệnh chứa địa chỉ của toán hạng cần tìm Có thể gián tiếp nhiều lần CPU phải thực hiện tham chiếu bộ nhớ nhiều lần để tìm toán hạng chậm Vùng nhớ có thể được tham chiếu là lớn 108
- Sơ đồ định địa chỉ gián tiếp 109
- Định địa chỉ dịch chuyển . Để xác định toán hạng, Trường địa chỉ chứa hai thành phần: . Tên thanh ghi . Hằng số . Địa chỉ của toán hạng = nội dung thanh ghi + hằng số . Thanh ghi đoạn được ngầm định 110
- Các dạng định địa chỉ dịch chuyển của VXL 8086 . Địa chỉ tương đối cơ sở . Địa chỉ tương đối chỉ số . Địa chỉ tương đối chỉ số cơ sở 111
- Địa chỉ tương đối cơ sở . Toán hạng là một ô nhớ . Địa chỉ lệch của ô nhớ đó xác định bằng cách cộng nội dung của thanh ghi cơ sở (BX,BP) với giá trị dịch chuyển ngay ở trong lệnh . Ví dụ: . MOV CX, [BX] +10 Chuyển nội dung 2 ô nhớ liên iếp có địa chỉ DS: (BX+10) và DS: (BX+11) vào CX . MOV AL, [BP] + 5 Chuyển nội dung ô nhớ có địa chỉ SS: (BP+5) vào AL 112
- Địa chỉ tương đối chỉ số . Toán hạng là một ô nhớ . Địa chỉ offset của ô nhớ đó xác định bằng cách cộng nội dung của thanh ghi chỉ số (SI, DI) với giá trị dịch chuyển ngay ở trong lệnh . Ví dụ: . MOV AX, [SI] +10 Chuyển nội dung 2 ô nhớ liên tiếp có địa chỉ DS: (SI+10) và DS: (SI+11) vào AX . MOV [DI] + 5, AL Chuyển nội dung AL vào ô nhớ có địa chỉ DS: (DI+5) 113
- Địa chỉ tương đối chỉ số cơ sở . Toán hạng là một ô nhớ . Địa chỉ offset của ô nhớ đó xác định bằng cách cộng nội dung thanh ghi cơ sở (BX,BP) với thanh ghi chỉ số (SI,DI) và giá trị dịch chuyển ngay ở trong lệnh . Ví dụ: . MOV AX, [BX]+[SI] +8 Chuyển nội dung 2 ô nhớ liên tiếp có địa chỉ DS:(BX+SI+8) và DS: (BX+SI+9) vào AX . MOV [BP]+[DI] + 5, AL Chuyển nội dung AL vào ô nhớ có địa chỉ SS:(BP+DI+5) 114
- Bảng tóm tắt các chế độ địa chỉ của 8086 Chế độ địa chỉ Toán hạng Thanh ghi đoạn ngầm định Tức thì Data Thanh ghi Reg Trực tiếp [offset] DS Gián tiếp qua thanh ghi [BX] DS [SI] DS [DI] DS Tương đối cơ sở [BX]+disp DS [BP]+disp SS Tương đối chỉ số [DI]+disp DS [SI]+disp DS Tương đối chỉ số cơ sở [BX]+ [DI]+disp DS [BX]+ [SI]+disp DS [BP]+ [DI]+disp SS [BP]+ [SI]+disp SS 115
- Câu hỏi . Mục đích của nhiều chế độ truy nhập địa chỉ trong 8086 là gì? 116
- Câu hỏi Lệnh nào sử dụng chế độ địa chỉ tương đối chỉ số a. MOV BX,[BX+00B0H] b. MOV AX,[BP+2000H] c. MOV [DI+1050H],AL 117
- Câu hỏi MOV [1050H], AL cất AL vào ô nhớ? a. DS:1050H b. DS:1051H c. CS:1050H d. CS:1051H 118
- Nội dung Cấu trúc cơ bản của CPU Kiến trúc tập lệnh Hoạt động của CPU 119
- 4.3 Hoạt động của CPU 1. Diễn tiến thi hành một lệnh mã máy: . Chu trình thực hiện một lệnh mã máy (Instruction): . Nhận lệnh (Fetch Instruction – FI) . Giải mã lệnh (Decode Instruction - DI) . Nhận toán hạng(Fetch Operand – FO) . Thực hiện lệnh (Execute Instruction - EI) . Cất toán hạng(Write Operand – WO) . Ngắt (Interrupt) 120
- Nhận lệnh . PC bus địa chỉ . CPU phát tín hiệu điều khiển đọc bộ nhớ . Lệnh IR . PC = PC + 1 121
- Giải mã lệnh . Lệnh từ thanh ghi lệnh IR được đưa đến đơn vị điều khiển . Đơn vị điều khiển tiến hành giải mã lệnh để xác định thao tác phải thực hiện 122
- Nhận toán hạng . CPU đưa địa chỉ của toán hạng ra bus địa chỉ . CPU phát tín hiệu điều khiển đọc . Toán hạng được đưa vào CPU 123
- Thực hiện lệnh . Có nhiều dạng tuỳ thuộc vào lệnh: . Đọc/Ghi với bộ nhớ hoặc cổng vào/ra . Chuyển dữ liệu giữa các thanh ghi . Thao tác số học/logic . Lệnh rẽ nhánh . Lệnh điều khiển hệ thống 124
- Cất toán hạng . Địa chỉ của toán hạng MAR bus địa chỉ . Dữ liệu MBR bus dữ liệu . CPU phát tín hiệu điều khiển ghi . Dữ liệu trên bus dữ liệu Bộ nhớ 125
- Ví dụ Mã lệnh Thanh ghi tích lũy A =10H Địa chỉ lệnh ADD A,[107AH] PC . Mã lệnh của ADD A,[107AH] MBR IR [107AH]=20H Đọc ngăn nhớ [107AH] (20H) MBR Y . A (10H) + Y (20H) Z (30H) 0 Z (30H) A (30H) 126
- Ngắt . PC bus dữ liệu . SP SP-1 . SP MAR Ngăn xếp . CPU phát tín hiệu điều khiển ghi bộ nhớ . Nội dung của PC được ghi vào ngăn xếp . Địa chỉ lệnh đầu tiên của chương trình con điều khiển ngắt được PC 127
- 2. Kỹ thuật đường ống (Pipeline) . Là kỹ thuật làm cho các giai đoạn khác nhau của nhiều lệnh được thi hành cùng một lúc. . Giả sử mỗi lệnh được thực hiện trong một khoảng thời gian bằng nhau, mỗi lệnh được chia làm 6 giai đoạn được thực thi bởi các phần tử xử lý độc lập. . Nhận lệnh (Fetch Instruction - FI) . Giải mã lệnh (Decode Instruction - DI) . Tính địa chỉ toán hạng (Calculate Operand Address-CO) . Nhận toán hạng (Fetch Operands- FO) . Thực hiện lệnh (Execute Instruction - EI) . Cất toán hạng (Write Operands- WO) 128
- Biểu đồ thời gian của đường ống lệnh 129
- Nhận xét . Với kiểu xử lý lệnh tuần tự thông thường, 8 lệnh được thực hiện trong 48 chu kỳ xung nhịp . Với kỹ thuật xử lý ống dẫn, 8 lệnh chỉ được thực hiện trong vòng 13 chu kỳ xung nhịp . Kỹ thuật ống dẫn làm tăng tốc độ thực hiện các lệnh 130
- Các xung đột trong kỹ thuật đường ống . Xung đột cấu trúc: do nhiều công đoạn dùng chung một tài nguyên . Xung đột dữ liệu: do lệnh sau sử dụng kết quả của lệnh trước . Xung đột điều khiển: do rẽ nhánh gây ra 131
- Các xung đột trong kỹ thuật đường ống . Ví dụ xung đột cấu trúc 132
- Các xung đột trong kỹ thuật đường ống . Ví dụ xung đột dữ liệu Lệnh 1: ADD R2, R3, R4 R2 = R3 + R4 Lệnh 2: ADD R5, R2, R1 R5 = R2 + R1 133
- Các xung đột trong kỹ thuật đường ống . Ví dụ xung đột rẽ nhánh Lệnh rẽ nhánh 134
- Bài tập 1) Tìm hiểu RISC (Reduced Instruction Set Computer) và CISC (Complex Instruction Set Computer) 2) Lệnh MOV AL, [SI + 13H] Đọc 1 byte dữ liệu từ ô nhớ có địa chỉ logic và địa chỉ vật lý là bao nhiêu?. Biết: DS = F000H, CS = 0001H, SS = 0030H, SI = 0001H 135
- Bài tập 3) Cho biết giá trị của AX, BX sau đoạn lệnh: MOV AX, 1234H MOV BX, 5678H XOR AX, BX ADD AL, AH 4) Viết chương trình tính: F = (A – B.C)/(D + E/G) a) Chỉ sử dụng lệnh 3 địa chỉ b) Chỉ sử dụng lệnh 2 địa chỉ c) Chỉ sử dụng lệnh 1 địa chỉ 136
- Bài tập Các lệnh 3 địa chỉ: Các lệnh 1 địa chỉ: ADD R, X, Y (R X + Y) LOAD X (AC X) SUB R, X, Y (R X - Y) STOR M (M AC) ADD X (AC AC + X) MPY R, X, Y (R X . Y) ADD M (AC AC + M) DIV R, X, Y (R X/ Y) SUB X (AC AC - X) Các lệnh 2 địa chỉ: SUB M (AC AC- M) ADD R, X (R R + X) DIV X (AC AC/ X) SUB R, X (R R - X) DIV M (AC AC/ M) MPY R, X (R R . X) DIV R, X (R R/ X) MOV R, X (R X) 137
- Hết chương 4 138