Thường còn gọi là bộ xử lý (processor), vi xử lý (microprocessor). CPU có nhiệm vụ thi hành lệnh của chương trình và xử lý các dữ liệu trong chương trình. Đơn vị điều khiển chi phối toàn bộ hoạt động của máy tính bằng cách lấy lệnh từ bộ nhớ, giải mã lệnh và thực hiện lệnh đó.
Trang 1Chương 3
Bộ vi xử lý
Trang 2Tổng quan
Thường còn gọi là bộ xử lý (processor), vi xử lý
(micro-processor).
CPU có nhiệm vụ thi hành lệnh của chương trình và xử lý các
dữ liệu trong chương trình.
Đơn vị điều khiển chi phối toàn bộ hoạt động của máy tính
bằng cách lấy lệnh từ bộ nhớ, giải mã lệnh và thực hiện lệnh đó.
Trang 3lệnh cuối
Chương trình
làm gì nữa ? tại sao lệnh này ? mục đích ?
Trang 4(Tín hiệu điều khiển xuất)
(Tín hiệu điều khiển nhập)
CPU có gì bên trong ?
điều khiển định thì
Trang 5Bộ thanh ghi
Là bộ nhớ bên trong CPU.
Làm việc với tốc độ truy xuất tương đương tốc độ CPU.
MAR : memory address register.
MBR : memory buffer register.
Các thanh ghi tổng quát.
Thanh ghi cờ trạng thái (Flags).
Trang 6Thanh ghi cờ trạng thái
Cờ nhớ (Carry flag) báo tràn dung lượng
Cờ không (Zero flag) báo kết quả không
Cờ dấu (Sign flag) báo kết quả âm
Cờ tràn (Overflow flag) báo tràn về dấu
Cờ kiểm tra (Parity flag) báo số bit một chẳn
Cờ trung gian (Auxiliary flag) báo tràn số BCD
(cờ nhớ nửa Half-carry cũng chính là nó)
Trang 7Bo mạch chủ
Intel 955X Express Chipset for DDR2 667 SDRAM Memory and Intel Pentium 4 Processor (1066 MHz FSB) PCI Slot
PCI Express
CPU
DDR2 SDRAM
USB USB
Audio
Mouse
Serial
Trang 8ACC ACC - toán hạng
ACC ACC - toán hạng - CF
Tăng
Toán hạng Toán hạng + 1
Giảm
Toán hạng Toán hạng - 1 (không ảnh hưởng CF)
So sánh Nhân Chia
ACC ACC / toán hạng
R2 ACC mod toán hạng
R2,ACC ACC * toán hạng
1
2 3 4 5
ACC - toán hạng
6 7 8 9
Số
học
Trang 90 CF
CF CF
Quay
Trang 10cộng cho hàng số cao hơn).
cho đến khi nào M hết số thì dừng Lúc đó A = kết quả.
1 0 0 1
1 0 0 1 +
1 0 1 1 0 1
0 0 0 0
1 0 0 1
Trang 12Tập lệnh
dùng toán hạng 1 chứa kết quả
địa chỉ kết quả
địa chỉ lệnh kế
Dạng lệnh tổng quát
quá dài
Trang 13Phương pháp định địa chỉ toán hạng
Xác định vị trí dữ liệu mà lệnh tác động.
Dựa vào một trong các đặc tính sau :
Làm ngắn câu lệnh.
Đơn giản hóa câu lệnh.
Truy xuất toán hạng nhanh.
Làm câu lệnh có tính linh động (tạo vòng lặp).
Có 8 phương pháp định địa chỉ toán hạng : trực tiếp, gián
tiếp,
Trang 14dấu ( ) cho biết dùng
Trang 152 dấu ( ) là truy xuất
+
13 E4
F7
Địa chỉ trong lệnh là địa chỉ ô nhớ chứa địa chỉ toán hạng
Trang 16R1 23
giải thích :
E4 23
Toán hạng nằm trong lệnh
Trang 19Thanh ghi
R1
bộ nhớ lệnh :
Trang 20Gián tiếp qua thanh ghi
Gián tiếp qua thanh ghi
bộ nhớ lệnh :
Trang 21Stack lệnh :
Trang 22Mã hóa lệnh
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Opcode Địa chỉ 1 Địa chỉ 2 Địa chỉ 3
Chỉ được tối đa 16 lệnh 3 địa chỉ (0000 1111)
Trang 23Mã hóa lệnh (tt.)
Bớt tiếp 2 tổ hợp của lệnh 2 địa chỉ (1111 và 1110) còn 14 lệnh 2 địa chỉ
(thêm được 32 lệnh 1 địa chỉ) 61 lệnh
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Opcode Địa chỉ 1
1 1 1 1 1 1 1
Bớt tiếp tổ hợp cuối của lệnh 1 địa chỉ (1111 1111 1111) còn 31 lệnh 1 địa chỉ
(thêm được 16 lệnh 0 địa chỉ)
Trang 24Nhảy nhưng có lưu địa chỉ trở
về vào stack
Số học Luận lý Dịch, quay
Nhảy Gọi
Trở về
Xử lý bit
Tuyệt đối (Địa chỉ) Tương đối (PC+n)
Không điều kiện (Luôn luôn nhảy)
Có điều kiện (Lúc nhảy lúc không) Trực tiếp (PC = địa chỉ)
Gián tiếp (PC = M/R)
Bên trong
Bộ nhớ Xuất nhập
IO mapped IO
Tác độn g cờ
Trang 25Map IO
Memory mapped IO
Dùng chung mạch giải mã địa chỉ với bộ nhớ.
Truy xuất cổng xuất nhập bằng lệnh bộ nhớ.
Trang 26DIR OE
2 x LS245
2 x LS573
Trang 27 DF IF TF SF ZF AF PF CF
Thanh ghi trạng thái (cờ)
Accumulator Base
Counter Data Source index Destination index Base pointer Stack pointer
Code segment Data segment Stack segment Extra segment
Instruction pointer
Trang 28S 2 ,S 1 ,S 0
Bộ thanh ghi tổng quát (8 từ 16 bit)
Khối điều khiển và định thì (Execution Unit)
ALU
16 bit
Thanh ghi cờ
Bộ thanh ghi đoạn và IP (5 từ 16 bit)
Khối giao tiếp BUS
Tuyến địa chỉ
Tuyến dữ liệu
INTA, RD, WR DT/R, DEN ALE, M/IO
INTR, NMI, TEST CLK, RESET, READY
MN/MX HOLD HLDA
Trang 29Lệnh 1
Lệnh 1 Lệnh 2
Lệnh 3
Lệnh 3
Trang 31(Địa chỉ vật lý 20 bit)
1 paragraph = 16 byte
Khi segment thay đổi 1 đơn
vị (paragraph) thì địa chỉ vật lý thay đổi 16 byte.
Một địa chỉ vật lý có thể được biểu diễn bằng nhiều địa chỉ luận lý khác nhau.
BYTE PARAGRAPH
Địa chỉ vật lý = ( SEGMENT * 16 ) + OFFSET
00000 segment 0000
0FFFF 1000F 1001F
Địa chỉ luận lý
Địa chỉ luận lý
Trang 32DS : SI địa chỉ đầu chuỗi nguồn (chỉ trong lệnh xử lý chuỗi).
ES : DI địa chỉ đầu chuỗi đích (chỉ trong lệnh xử lý chuỗi).
Truy xuất biến bộ nhð : địa chỉ hiệu dụng (Effective Address)
Offset : là tổ hợp của ba thành phần trong ngoặc [ ]
[BP+SI+1000] [BP+DI+1000]
Segment :
Không có BP : DS
Có BP : SS
Địa chỉ hiệu dụng (Effective Address)
Không dùng thanh ghi trong cùng một nhóm với nhau
Trang 33Đơn vị hoạt động của CPU.
CPU dùng chu kỳ máy để định thì các hoạt động của nó và điều khiển các khối bộ nhớ và xuất nhập.
Cơ sở xây dựng nên tập lệnh.
Được trình bày dưới dạng giản đồ xung.
Đơn vị hoạt động của CPU.
CPU dùng chu kỳ máy để định thì các hoạt động của nó và điều khiển các khối bộ nhớ và xuất nhập.
Cơ sở xây dựng nên tập lệnh.
Được trình bày dưới dạng giản đồ xung.
Chu kỳ máy (machine cycle)
Trang 36T1 T2 T3 T4CLK
Chu kỳ máy Đọc bộ nhớ / Chu kỳ máy Nhập
Chu kỳ máy Đọc bộ nhớ / Chu kỳ máy Nhập
Trang 37T1 T2 T3 T4CLK
Chu kỳ máy Ghi bộ nhớ / Chu kỳ máy Xuất
Chu kỳ máy Ghi bộ nhớ / Chu kỳ máy Xuất
Trang 38địa chỉ vật lý
4 byte
vector ngắt 8
00014h 00018h 0001Ch
Bảng vector ngắt 00024h
DEN INTA
Trang 39Tập lệnh CPU Intel 8086
Các chữ viết tắt dùng trong tập lệnh
Giải thích tập lệnh INTEL 8086
Trang 40Nhóm lệnh chuyển dữ liệu
Nhóm lệnh chuyển dữ liệu
Trang 41Nhóm lệnh số học
Nhóm lệnh số học
Trang 42Nhóm lệnh luận lý
Nhóm lệnh luận lý
Trang 43Cờ DF = 0 : tăng SI hoặc DI sau khi làm xong lệnh
Cờ DF = 1 : giảm SI hoặc DI sau khi làm xong lệnh
Khởi động các thanh ghi DS, SI, ES, DI, CX, AX/AL trước khi dùng lệnh
Trang 44Nhóm lệnh chuyển điều khiển
Nhóm lệnh chuyển điều khiển
IRET
Trang 45Jcond shortlabel
Jcond shortlabel
JL/JNGE Nhảy nếu nhỏ hơn/không lớn hơn hoặc bằng SF xor OF = 1
JLE/JNG Nhảy nếu nhỏ hơn hoặc bằng /không lớn hơn SF xor OF or ZF = 1
JB/JNAE/JC Nhảy nếu dưới /không trên hoặc bằng/nhớ CF = 1
JBE/JNA Nhảy nếu dưới hoặc bằng /không trên CF or ZF = 1
JP/JPE Nhảy nếu kiểm tra / kiểm tra chẳn PF = 1
JNL/JGE Nhảy nếu không nhỏ hơn/lớn hơn hoặc bằng SF xor OF = 0
JNLE/JG Nhảy nếu không nhỏ hơn hoặc bằng /lớn hơn SF xor OF or ZF = 0
JNB/JAE/JNC Nhảy nếu không dưới /trên hoặc bằng/không nhớ CF = 0
JNBE/JA Nhảy nếu không dưới hoặc bằng /trên CF or ZF = 0
JNP/JPO Nhảy nếu không kiểm tra / kiểm tra lẻ PF = 0
< N A B E > (số không dấu) < N G L E > (số có dấu)
Trang 47Mã hóa các byte lệnh
Lệnh MOV (chuyển)
Thanh ghi/bộ nhớ đến/từ thanh ghi
Tức thời đến thanh ghi/bộ nhớ
Tức thời đến thanh ghi
Bộ nhớ đến bộ tích lũy
Bộ tích lũy đến bộ nhớ
Thanh ghi/bộ nhớ đến thanh ghi đoạn
Thanh ghi đoạn đến thanh ghi/bộ nhớ
1 0 0 0 1 0 d w mod reg r/m
1 1 0 0 0 1 1 w mod 0 0 0 r/m dữ liệu dữ liệu nếu w=1
1 0 1 1 w reg dữ liệu dữ liệu nếu w=1
Nếu d = 1 thì "đến"; nếu d = 0 thì "từ"
1 0 1 0 0 0 0 w địa chỉ thấp địa chỉ cao
Nếu w = 1 thì hoạt động 2 byte; nếu w = 0 thì hoạt động 1 byte
1 0 1 0 0 0 1 w địa chỉ thấp địa chỉ cao
1 0 0 0 1 1 1 0 mod 0 reg r/m
1 0 0 0 1 1 0 0 mod 0 reg r/m
Trang 48Mã hóa các bit của vùng reg
Thanh ghi 16-bit w=1 Thanh ghi 8-bit w=0 Thanh ghi đoạn
Trang 49Byte lệnh thứ hai
mod reg r/m mod Độ dời
00 DISP = 0 (*), không có độ dời thấp và độ dời cao
01 DISP = độ dời thấp mở rộng dấu đến 16 bit, không có độ dời cao
10 DISP = độ dời cao : độ dời thấp
11 r/m xem như vùng "reg"
DISP là địa chỉ trực tiếp theo sau byte thứ hai của lệnh trước vùng dữ liệu nếu có
(*) : ngoại lệ mod = 00 và r/m = 110 thì EA = độ dời cao : độ dời thấp
Trang 50Ví dụ dịch lệnh
1 1 0 0 0 1 1 w mod 0 0 0 r/m địa chỉ thấp địa chỉ cao dữ liệu dữ liệu nếu w=1
1 0 0 0 1 0 d w mod reg r/m độ dời thấp độ dời cao