1 Nguyễn Thị Mỹ Dung – Khoa CNTTChương II: Kiến trúc phần mềm bộ xử lý Số tiết: 10Nội dung: 2 Nguyễn Thị Mỹ Dung – Khoa CNTT - Đơn vị số học và logic ALU: thực hiện các phép tính số học
Trang 11 Nguyễn Thị Mỹ Dung – Khoa CNTT
Chương II: Kiến trúc phần mềm bộ xử lý
Số tiết: 10Nội dung:
2 Nguyễn Thị Mỹ Dung – Khoa CNTT
- Đơn vị số học và logic (ALU): thực hiện các phép tính số học và logic trên các dữ liệu cụ thể.
- Tập thanh ghi (RF): lưu trữ các thông tin tạm thời phục vụ cho hoạt động của CPU.
- Đơn vị ghép nối (BIU): kết nối và trao đổi thông tin giữa bus bên trong và bus bên ngoài.
- Bộ nhớ trong tổ chức thành các ô nhớ được đánh địa chỉ Mỗi ô nhớ thông thường là 1 byte Nội dung ô nhớ có thể thay đổi, còn địa chỉ thì cố định
Trang 25 Nguyễn Thị Mỹ Dung – Khoa CNTT
- Các thành phần chính: bàn phím, màn hình, chuột, máy quét, máy in, các ổ đĩa, modem,…
6 Nguyễn Thị Mỹ Dung – Khoa CNTT
Các thành phần cơ bản (tt)
d/ Giao diện bus (BIU)
Các thiết bị ngoại vi trao đổi với CPU và bộ nhớqua các mạch ghép nối vào/ra (các giao diện) Các mạch này cho phép nối các bộ phận độc lập nhằm làm cho chúng có thể tương thích và truyền thông tin được với nhau, cũng như dễ sửa chữa, dễ thay thế
Các thiết bị phần cứng của hệ thống máy tính kết nối với nhau thông qua hệ thống bus:
Hệ thống bus bao gồm:
Quá trình hoạt động (tt)
- Bus bộ xử lý (gồm: bus điều khiển, bus địa chỉ, bus dữ liệu): thường được dùng để truyền dữliệu giữa bộ xử lý và bus hệ thống hoặc giữa bộ xử lý với cache ngoại Bus này có tốc độ nhanh nên không
bị nghẽn
- Bus bộ nhớ: trao đổi thông tin giữa CPU với
bộ nhớ chính Thông tin truyền trên bus này chậm hơn nhiều so với thông tin trên bus bộ xử lý
- Bus vào/ra (bus mở rộng): trao đổi thông tin giữa bộ nhớ với các thiết bị ngoại vi
ổ đĩa
Bus hệ thống
Trang 39 Nguyễn Thị Mỹ Dung – Khoa CNTT
Sơ đồ hoạt động
Sơ đồ khối của một máy tính với thiết bị ngoại vi
10 Nguyễn Thị Mỹ Dung – Khoa CNTT
Tổ chức chung (tt)
2 Quá trình hoạt động của máy tính
Chương trình trong máy tính gồm một tập hợp các lệnh được sắp xếp theo một trật tự nhất định Khi chạy chương trình CPU sẽ đọc lần lượt từng lệnh một Quá trình hoạt động theo kiểu tuần tự như thếgọi là máy tính kiểu Von Neumann
Trong thực tế, CPU thực hiện theo một chu kỳ:
lấy lệnh – giải mã – thực thi lệnh
Quá trình đọc lệnh gồm một chuỗi thao tác:
Nhập dữ liệu Xử lý dữ liệu Xuất thông tin
Quá trình hoạt động (tt)
1 Lấy lệnh kế tiếp từ bộ nhớ vào thanh ghi lệnh IR
2 Chuyển nội dung bộ đếm chương trình (PC) tới địa chỉ lệnh kế tiếp
3 Xác định loại lệnh vừa lấy
4 Nếu lệnh sử dụng dữ liệu trong bộ nhớ, xác định nơi chứa dữ liệu
5 Tìm nạp dữ liệu vào thanh ghi trong CPU (nếu có)
6 Thực thi lệnh
7 Lưu các kết quả vào nơi thích hợp
8 Trở lại bước 1 để bắt đầu lệnh kế tiếp
II Kiến trúc máy tính
Kiến trúc máy tính bao gồm:
- Kiến trúc phần mềm bao gồm: tập lệnh, dạng các lệnh và các kiểu định vị
- Tổ chức của máy tính: liên quan đến cấu trúc bên trong của bộ xử lý, cấu trúc bus, các cấp bộnhớ,…
- Lắp đặt phần cứng: lắp ráp một máy tính dùng các linh kiện điện tử và các bộ phận phần cứng cần thiết (không trình bày phần này trong môn học)
Trang 413 Nguyễn Thị Mỹ Dung – Khoa CNTT
III Các kiểu định vị cơ bản
1/ Các kiểu định vị
- Là cách thức thâm nhập các toán hạng nghĩa
là cách tính địa chỉ của toán hạng đối với toán hạng
bộ nhớ Các toán hạng khác xác định các toán hạng nằm trong các thanh ghi
- Có hai kiểu sắp xếp địa chỉ trong bộ nhớ: biểu diễn từ trái sang phải và từ trên xuống dưới (Big-endian); biểu diễn từ phải sang trái và từ duới lên trên (Little-endian)
14 Nguyễn Thị Mỹ Dung – Khoa CNTT
Các kiểu định vị cơ bản (tt)
2/ Các kiểu thi hành một lệnh
- Một lệnh mã máy bao gồm một mã tác vụ và các toán hạng
- Vị trí của toán hạng có 3 kiểu cơ bản: ngăn xếp, thanh ghi tích luỹ và thanh ghi đa dụng Hay nói cách khác là những kiến trúc phần mềm gồm: kiến trúc ngăn
xếp, kiến trúc thanh ghi tích luỹ và kiến trúc thanh ghi đa dụng.
- Hiện tại các nhà sản xuất máy tính có khuynh hướng dùng kiến trúc phần mềm thanh ghi đa dụng vì:
+ Việc thâm nhập các thanh ghi đa dụng nhanh hơn thâm nhập bộ nhớ trong
+ Các chương trình dịch dùng các thanh ghi đa dụng có hiệu quả hơn
3/ Kiểu kiến trúc thanh ghi đa dụng
Ưu điểm:
- Việc tạo các mã máy đơn giản.
- Chiều dài mã máy cố định
- Ít thâm nhập bộ nhớ.
Nhược điểm:
- Số lượng thanh ghi bị giới hạn.
- Việc các thanh ghi có cùng độ dài dẫn đến không hiệu quả trong xử lý chuỗi cũng như các lệnh có cấu trúc.
- Khó khăn trong việc lưu và phục hồi các trạng thái khi
có các lời gọi thủ tục hay chuyển đổi ngữ cảnh
Trang 517 Nguyễn Thị Mỹ Dung – Khoa CNTT
Kiến trúc thanh ghi đa dụng (tt)
Một số kiểu định vị cho kiến trúc thanh ghi đa dụng:
- Tự tăng
- Tự giảm
18 Nguyễn Thị Mỹ Dung – Khoa CNTT
1 Lệnh máy bên trong máy tính đa năng
Mỗi máy tính có đặc điểm lệnh riêng của nó
- Mã lệnh: là một nhóm các bit, cho máy tính thực hiện một thao tác nào đó (cộng, trừ, nhân, chia, dịch bit,…)
- Toán hạng: mỗi toán hạng có địa chỉ nhất định, toán hạng có thể là thanh ghi hay bộ nhớ (toán hạng tức thì, toán hạng bộ nhớ, địa chỉ trực tiếp, địa chỉ gián tiếp)
Trang 621 Nguyễn Thị Mỹ Dung – Khoa CNTT
Các định dạng lệnh (3)
0/8/16
Data 0/8/16
Disp 3
R/M 3
2 1 1 6
Reg Mod w d Opcode
- Opcode : số bit thay đổi tuỳ theo từng lệnh
D (0 hoặc 1):
+ d=1 toán hạng đến là toán hạng thanh ghi còn toán hạng nguồn có thể là toán hạng thanh ghi hay toán hạng bộ nhớ tuỳ theo vùng MOD, trường hợp này vùng reg dùng cho toán hạng đến
+ d=0 toán hạng đến là toán hạng bộ nhớ còn toán hạng nguồn có thể là toán hạng thanh ghi hay toán hạng bộ nhớ tuỳ theo vùng MOD, vùng reg dùng cho toán hạng nguồn
Các định dạng lệnh (4)
- W (0 hoặc 1): w=1 là từ; w=0 là byte
- Reg: xác định thanh ghi nào được dùng trong câu lệnh
- Mod: Xác định kiểu toán hạng còn lại
+ Mod = 00 nếu R/M = 110 thì toán hạng bộ nhớtrực tiếp được dùng trong câu lệnh; nếu R/M khác 110 thìtoán hạng bộ nhớ gián tiếp không có độ dời
+ Mod = 01: toán hạng bộ nhớ gián tiếp có thêm độdời 8bit được dùng
+ Mod = 10: toán hạng bộ nhớ gián tiếp có thêm độdời 16bit được dùng
+ Mod = 11: cả 2 toán hạng nguồn và đích đều làtoán hạng thanh ghi
Các định dạng lệnh (5)
Bảng mã hoá vùng Reg, Mod, R/M
(Tham khảo tài liệu KTMT trang 214 – 215)
- Vùng Disp: những byte này biểu thị offset hoặc độdời (8bit hay 16 bit) trong toán hạng bộ nhớ
- Vùng Data: biểu thị giá trị trực hằng (8 bit hay 16 bit) dùng trong câu lệnh
Chú ý: để xác định mã máy tương ứng với dạng lệnh gợi nhớ phải tham khảo tài liệu để định Opcode của lệnh (tham khảo tài liệu Microsoft Macro Assembler 5.0).
Trang 725 Nguyễn Thị Mỹ Dung – Khoa CNTT
Định dạng đối với lệnh MOV dest, source
- Toán hạng thanh ghi với toán hạng bộ nhớhay thanh ghi
100010 d w mod reg r/m disp (0 hay 2 byte)
- Toán hạng trực hằng với thanh ghi
1011 w reg data (1 hay 2 byte)
- Toán hạng trực hằng với toán hạng bộ nhớ
1100011 w mod 000 r/m disp (0 hay 2 byte) data (1 hay 2 byte)
- Toán hạng thanh ghi tích lũy với toán hạng bộnhớ trực tiếp
101000 d w disp (2 byte)
26 Nguyễn Thị Mỹ Dung – Khoa CNTT
Định dạng đối với lệnh MOV (2)
- Toán hạng thanh ghi đoạn với toán hạng bộnhớ
100011 d 0 mod sreg r/m disp (0 hay 2 byte)
Chú ý: Nếu một toán hạng bộ nhớ có ghi rõ thanh ghi đoạn trong câu lệnh, thì ta phải thêm 1 byte biểu thị thanh ghi đoạn ở trước mã máy
Các định dạng lệnh (6)
Ví dụ:
Mã hoá lệnh:
a) MOV CL, [BX]; b) MOV 0F3H[SI], CL
Chuyển mã máy (nhị phân)a) MOV CL, [BX]
1 0 0 0 1 0 1 0 00 001 111 : mã lệnh; đỏ: chuyển tới thanh ghi;
Xanh: chuyển 1 bit; vàng: ô nhớ có địa chỉ DS:BXTím: các bít mã CL;
Các định dạng lệnh (7)
b) MOV 0F3H[SI], CL
1 0 0 0 1 0 0 0 01 001 100 11110011 : mã lệnh; đỏ: chuyển từ thanh ghi;
Xanh: chuyển 1 bit; vàng: ô nhớ có địa chỉ DS:SITím: các bít mã CL; trắng: d8 = F3H
Trang 829 Nguyễn Thị Mỹ Dung – Khoa CNTT
3 Phân loại các lệnh
a/ Các lệnh di chuyển dữ liệu
Sao chép dữ liệu từ nơi này đến nơi khác Sao chép dữ liệu có thể tạo ra một đối tượng mới có mẫu bít giống mẫu ban đầu Dữ liệu được lưu trữ nhiều nơi khác nhau tuỳ vào cách các từ được truy xuất thường là ở bộ nhớ hoặc ở thanh ghi hoặc ở ngăn xếp Việc di chuyển dữ liệu được thực hiện cho đến khi có dấu hiệu kết thúc vùng dữ liệu được tìm thấy trong chính dữ liệu
30 Nguyễn Thị Mỹ Dung – Khoa CNTT
Các lệnh di chuyển dữ liệu (2)
MOV Dest, Source ; di chuyển số liệu từ Source
Dest
; Source có thể là Reg, Mem, Immed
; Dest có thể là Reg, Mem
Chức năng: chuyển nội dung toán hạng source
vào toán hạng dest Chiều dài dữ liệu có thể là 8 bit hay 16 bit
TH1: chuyển dữ liệu giữa hai thanh ghi
MOV AL, AHMOV BX, SI
Nhóm lệnh di chuyển số liệu (2)
TH2: Chuyển dữ liệu giữa thanh ghi và bộ nhớVD:
MOV [BX], ALMOV DS:[150h], ALMOV ES:[SI], DLMOV AL, [BX]
MOV AH, DS:[10h]
MOV [BX], AXMOV Word PTR [SI], AXMOV CS:[SI+BX], DX
MOV AX, B800hMOV [SI], 2000MOV word ptr [BX],5AB7h
Trang 933 Nguyễn Thị Mỹ Dung – Khoa CNTT
MOV AX, CSMOV [BX + DI], ES
34 Nguyễn Thị Mỹ Dung – Khoa CNTT
Nhóm lệnh di chuyển số liệu (5)
Chú ý:
- Lệnh Mov không ảnh hưởng đến thanh ghi
cờ hiệu
- Không thể chuyển đổi dữ liệu trực tiếp giữa
2 toán hạng bộ nhớ với nhau, muốn chuyển ta phải dùng 1 thanh ghi trung gian
Chức năng: dùng để cất một trực hằng hay nội
dung một thanh ghi 16bit hay nội dung toán hạng 16bit vào Stack
Lệnh PUSH làm giảm thanh ghi con trỏ ngăn xếp (SP) xuống 2 đơn vị và chuyển nội dung 16bit của toán hạng nguồn vào trên đỉnh Stack Đỉnh Stack được xác định bởi cặp thanh ghi SS:SP
Trang 1037 Nguyễn Thị Mỹ Dung – Khoa CNTT
Nhóm lệnh di chuyển số liệu (7)
POP dest
Chức năng: Ngược với lệnh PUSH, POP
dùng để lấy dữ liệu 16bit đang nằm trên đỉnh Stack
Lệnh POP tăng thanh ghi SP 2 đơn vị để chỉ đến đỉnh mới của Stack
VD:
POP SIPOP CSPOP SPPOP [BX + SI]
38 Nguyễn Thị Mỹ Dung – Khoa CNTT
Phân loại lệnh (2)
b/ Các lệnh tính toán 2 ngôi
Là những thao tác kết hợp 2 toán hạng để sinh
ra một kết quả Một số các phép toán thông dụng:
cộng, trừ, nhân, chia trên các số nguyên Ngoài ra còn có các phép toán logic như: AND, OR, XOR cho kết quả là TRUE hoặc FALSE
Các lệnh tính toán (2)
Nhóm lệnh xử lý phép cộng
- ADD dest, sourceToán hạng source có thể: Reg, Mem, ImmedToán hạng dest có thể: Reg, Mem
+ TH1: cộng giữa thanh ghi, thanh ghi, bộ nhớ
- Cộng giữa 2 thanh ghiVD: ADD AL, AHADD AX, BX
- Cộng thanh ghi và bộ nhớVD: ADD [BX], AX
Các lệnh tính toán (3)
+ TH2: cộng giữa trực hằng và thanh ghi hay
bộ nhớVD: ADD AL, B5hADD BYTE PTR DS:[150h], 10hADD AX, B800h
ADD WORD PTR [BX], 5AB7h
Chú ý:
- Không thể cộng trực tiếp thanh ghi đoạn
- Lệnh ADD ảnh hưởng đến 6 cờ AF, CF, OF,
PF, SF, ZF (tham khảo chi tiết trong TLTK)
Trang 1141 Nguyễn Thị Mỹ Dung – Khoa CNTT
Các lệnh tính toán (4)
- ADC dest, sourceChức năng giống lệnh ADD, nhưng thực hiện phép cộng có nhớ, lệnh ADD cộng nội dung của toán hạng source và toán hạng dest rồi cộng thêm 1 nếu
cờ CF bật 1, kết quả lưu vào toán hạng dest Lệnh ADC thường dùng để cộng các số lớn hơn 16bit
- INC dest (Reg, Mem)Chức năng: tăng toán hạng dest lên 1VD: INC AL
INC CX
42 Nguyễn Thị Mỹ Dung – Khoa CNTT
Các lệnh tính toán (5)
Nhóm lệnh xử lý phép trừ
- SUB dest, sourceToán hạng source có thể: Reg, Mem, ImmedToán hạng dest có thể: Reg, Mem
+ TH1: trừ giữa 2 thanh ghi, thanh ghi bộ nhớ
- Trừ giữa 2 thanh ghiVD: SUB AL, AHSUB BL, CLSUB AX, CX
- Trừ bộ nhớ và thanh ghi
Các lệnh tính toán (6)
VD: SUB [BX], ALSUB DS:[0150h], ALSUB ES:[SI], DLSUB AL, [BX]
SUB [BX], AXSUB Word PTR [DI], AXSUB CS:[SI+BX], DXSUB AX, [SI]
Các lệnh tính toán (7)
+ TH2: Trừ giữa hằng và thanh ghi hay bộ nhớVD: SUB AL, B5h
SUB [BX], 15h
Chức năng: giảm toán hạng dest xuống 1
Trang 1245 Nguyễn Thị Mỹ Dung – Khoa CNTT
Các lệnh tính toán (8)
Nhóm lệnh xử lý phép nhân
- MUL source (Reg, Mem)Chức năng: thực hiện phép nhân không dấu+ TH1: source là toán hạng 8bit thì lệnh MUL nhân nội dung của source với thanh ghi AL, kết quả 16bit được lưu trong AX
+ TH2: source là toán hạng 16bit thì lệnh MUL nhân nội dung của source với thanh ghi AX, kết quả 32bit được lưu trong cặp DX:AX, phần thấp được chứa trong AX, phần cao chứa trong DX
Chú ý: lệnh này chỉ ảnh hưởng đến cờ CF, OF
46 Nguyễn Thị Mỹ Dung – Khoa CNTT
Các lệnh tính toán (9)
VD1:
MUL BH ;AX AL*BHMUL BX ;DX:AX AX*BXVD2:
Nhân 2 số 212 và 45MOV AL, D4h
MOV BL, 2DhMUL BL ; kết quả lưu trong AX
Các lệnh tính toán (10)
Nhóm lệnh xử lý phép chia
Chức năng: thực hiện phép chia không dấu, lấy
nội dung của thanh ghi AX hay cặp thanh ghi DX:AX chia cho toán hạng source
Nếu source là toán hạng dạng byte thì lệnh DIV lấy nội dung của thanh ghi AX chia cho toán hạng source, thương số và số dư của phép chia tương ứng được lưu trong thanh ghi AL và AH
Nếu source là toán hạng dạng word thì lệnh DIV lấy nội dung của thanh ghi DX:AX chia cho toán hạng source, thương số và số dư của phép chia tương ứng được lưu trong thanh ghi AX, DX
Các lệnh tính toán (11)
VD1: DIV BX ; AX DX:AX DIV BX
;DX DX:AX MOD BXVD2: Chia số 230 cho 23
MOV AX, E6hMOV BL, 17hDIV BL ; thương số 10 lưu trong AL
; dư số 0 lưu trong AH
Chú ý: Lệnh DIV không ảnh hưởng đến các cờ hiệu
Trang 1349 Nguyễn Thị Mỹ Dung – Khoa CNTT
Các lệnh tính toán (12)
* Nhóm các lệnh thao tác trên bit
AND dest, sourceToán hạng source có thể là Reg, Mem, Immed
Toán hạng dest có thể là Reg, Mem
Chức năng: Lấy nội dung của toán hạng source thực hiện phép toán logic AND từng bit với nội dung của toán hạng dest Kết quả lưu vào dest
VD: AL = 1001 1100, BL = 0111 0011Thực hiện lệnh AND AL, BL
Kết quả AL = 0001 0000
50 Nguyễn Thị Mỹ Dung – Khoa CNTT
Các lệnh tính toán (13)
OR dest, sourceToán hạng source có thể là Reg, Mem, Immed
Toán hạng dest có thể là Reg, Mem
Chức năng: Lấy nội dung của toán hạng source thực hiện phép toán logic OR từng bit với nội dung của toán hạng dest Kết quả lưu vào dest
VD: AL = 1001 1100, BL = 1000 0011Thực hiện lệnh OR AL, BL
Kết quả AL = 1001 1111
Các lệnh tính toán (14)
XOR dest, sourceToán hạng source có thể là Reg, Mem, Immed
Toán hạng dest có thể là Reg, Mem
Chức năng: Lấy nội dung của toán hạng source thực hiện phép toán logic XOR từng bit với nội dung của toán hạng dest Kết quả lưu vào dest
VD: AL = 1001 1100, BL = 1000 0011Thực hiện lệnh XOR AL, BL
Kết quả AL = 0001 1111
Phân loại lệnh (3)
c/ Các lệnh tính toán một ngôi
Các thao tác một ngôi có một toán hạng và tạo
ra một kết quả Đó là có phép toán dịch và quay
- Dịch là thao tác trong đó các bit được chuyển sang trái hoặc chuyển sang phải, các bít được dịch ra khỏi một đầu của từ sẽ bị mất
- Quay là thao tác dịch trong đó bit được dịch ra khỏi đầu này sẽ xuất hiện ở đầu bên kia
Trang 1453 Nguyễn Thị Mỹ Dung – Khoa CNTT
Các lệnh tính toán một ngôi (2)
SHL dest, 1Chuyển mỗi bit của toán hạng dest sang trái một bit, bit cao của toán hạng dest được đẩy vào cờ
CF, bit thấp thành 0
Ví dụ: AL = 1001 0110Khi sử dụng lệnh: SHL AL, 1Khi đó: AL = 0010 1100 (CF: 1)Hoặc: SHL dest, CL
Tương đương với lệnh SHL dest, 1 n lần với n
là nội dung của CL
54 Nguyễn Thị Mỹ Dung – Khoa CNTT
Các lệnh tính toán một ngôi (3)
Chú ý:
- Nếu toán hạng dest chứa một số nguyên không dấu thì lệnh SHL sẽ nhân nội dung toán hạng dest với 2
- Ta không thể dịch chuyển nhiều hơn một bit trực tiếp bằng lệnh:
SHL dest, n (n > 1)Muốn thực hiện được, phải sử dụng thanh ghi
VD: Cho AX = 1011 0010, thực hiện dịch trái 5 lần bằng lệnh SHL và cho biết kết quả của AX sau khi
sử dụng lệnh SHL
Các lệnh tính toán một ngôi (4)
SHR dest, 1Chuyển mỗi bit của toán hạng dest sang phải một bit, bit thấp của toán hạng dest được đẩy vào cờ
CF, bit cao thành 0
Ví dụ: AL = 1001 0110Khi sử dụng lệnh: SHR AL, 1Khi đó: AL = 0100 1011 (CF: 0)Hoặc: SHR dest, CL
Tương đương với lệnh SHR dest, 1 n lần với n
là nội dung của CL
Các lệnh tính toán một ngôi (5)
Chú ý:
- Nếu toán hạng dest chứa một số nguyên không dấu thì lệnh SHR sẽ chia nội dung toán hạng dest cho 2
- Ta không thể dịch chuyển nhiều hơn một bit trực tiếp bằng lệnh:
SHR dest, n (n > 1)Muốn thực hiện được, phải sử dụng thanh ghi
VD: Cho AX = 1100 0011, thực hiện dịch phải 7 lần bằng lệnh SHR và cho biết kết quả của AX sau khi sử dụng lệnh SHR