Bài 2
TỔ CHỨC CPU
(8086/8088/80286)
Nội dung
1)
2)
3)
4)
5)
6)
Kiến trúc tổng quát 80x86
Bộ vi xử lý 8086/8088
Mô hình lập trình của VXL 8086/8088
CPU địa chỉ hóa bộ nhớ
Bộ vi xử lý thực hiện lệnh
Bộ vi xử lý 80286
1.
KIẾN TRÚC TỔNG QUÁT
• BIU (Bus Interface Unit – đơn vị giao tiếp bus)
nhận mã lệnh từ bộ nhớ và đặt vào hàng chờ
lệnh; thực hiện mọi thao tác với bus (đọc/ghi)
• EU (Execute Unit – đơn vị thực thi) giải mã và
thực hiện các lệnh trong hàng.
EU và BIU
• EU và BIU làm việc độc lập với nhau nên
BIU có khả năng nhận một lệnh mới
trong khi EU đang thực thi lệnh trước đó.
• Khi EU đã thực hiện xong lệnh, nó sẽ lấy
mã lệnh kế tiếp trong hàng lệnh
(instruction queue).
Xử lý đường ống (Pipelining)
• Giả sử chương trình gồm những lệnh sau:
Lệnh 1: thực thi không cần dữ liệu bộ nhớ.
Lệnh 2: thực thi không cần dữ liệu bộ nhớ.
Lệnh 3: thực thi khơng cần dữ liệu bộ nhớ.
• Giả sử mỗi lệnh được CPU thực thi trong 3 chu
kỳ máy:
– Chu kỳ 1: CPU nhận lệnh (Instruction Fetch)
– Chu kỳ 2: CPU giải mã lệnh (Instruction Decode)
– Chu kỳ 3: CPU thực hiện lệnh (Execution)
CPU xử lý không đường ống:
EU
Nhận
(1)
Giải
mã (1)
Thực
thi (1)
Nhận
(2)
Giải
mã (2)
Thực
thi (2)
Nhận
(3)
Giải
mã (3)
Thực
thi (3)
Chu kỳ
máy
CPU xử lý đường ống:
Program
Nhận
(1)
Nhận
(2)
Nhận
(3)
Chờ
Giải mã
(1)
Giải mã
(2)
Giải mã
(3)
Chờ
Thực
thi (1)
Thực
thi (2)
Tầng Nhận lệnh (BIU)
Tầng Giải mã lệnh
Thực
thi (3)
Tầng Thực hiện lệnh
EU
Một số khó khăn cho Pipelining
• Trong thực tế, các lệnh khơng đều đặn về thời
gian.
• Các lệnh có thể cần lấy dữ liệu từ bộ nhớ.
• Kết quả của lệnh có thể lưu vào bộ nhớ.
• Lệnh nhảy làm thay đổi trình tự chương trình.
3 điều kiện làm cho EU ở chế độ chờ
• Lệnh cần truy xuất đến một ô nhớ không ở trong hàng.
BIU phải treo quá trình nhận lệnh và xuất ra địa chỉ của ơ nhớ
này.
• Lệnh được thực thi là lệnh nhảy (jump). Khi nhận lệnh kế
tiếp tại địa chỉ do lệnh jump chỉ đến, EU phải đợi và tất cả
các byte trong hàng phải bỏ.
• Lệnh có thời gian thực thi lớn. Lệnh AAM (ASCII Adjust
for Multiplication) cần 83 chu kỳ xung nhịp để hồn tất trong
khi đó với 4 chu kỳ xung nhịp cho quá trình nhận lệnh thì
hàng sẽ bị đầy.
2.
BỘ VI XỬ LÝ 8086/8088
2.1. Các thơng số chính:
• Năm phát hành: 1978
• Đóng vỏ:
DIP, 40 chân.
• Địa chỉ:
20 bit.
• Dữ liệu:
16 bit.
• Tốc độ:
5-10 MHz
• Chu kỳ bus:
4 nhịp đồng hồ CLK
• Tập lệnh:
x86-16 (116 lệnh)
2.2. Các chân của VXL 8088/8086
• DIP package, 40 pins. Xem hình 1.1, tr. 25
• Có 2 chế độ hoạt động:
– Chế độ tối thiểu: MN/MX=1
– Chế độ tối đa: MN/MX=0
• Máy tính PC dùng chế độ tối đa:
8086 ghép với đồng xử lý (co-processor) 8087
Tín hiệu điều khiển bus tạo bằng mạch ngoài
Các nhóm chân của 8088/8086
1) Nhóm chân địa chỉ: 20 bit, chiều ra
AD0-AD15 và A16-A19
2) Nhóm chân dữ liệu: 8/16 bit, 2 chiều
AD0-AD7/AD0-AD15
3) Nhóm chân ngắt: RESET, INTR và NMI (vào)
4) Nhóm chân trạng thái: S2, S1, S0 (ra)
5) Các chân khác: CLOCK, READY, TEST (vào)
BHE, QS0,QS1, LOCK (ra)
2.3. Cấu trúc nội của CPU 8086
Nối address bus
EU
Các
thanh ghi
đa năng
Các
thanh ghi
đ/c offset
Đơn vị
SH-LG
Thanh ghi
cờ
Nối data bus
BIU
Bộ tính
địa chỉ
Hàng đợi
của lệnh
Các thanh
ghi đoạn
Con trỏ lệnh
a) Tổ chức của EU
EU-Execution Unit.
Chức năng của EU: thực thi các phép tính xử lý dữ liệu.
Thành phần:
•
Đơn vị số học và lơ-gic ALU: Đơn vị tính tốn SH-LG.
• Tập các thanh ghi: đa năng, con trỏ, chỉ số, trạng thái.
•
Khối điều khiển của EU: Nhận, giải mã lệnh; điều
khiển.
b) Tổ chức của BIU
Chức năng của BIU:
Nhận trước các lệnh, cất tạm vào hàng đợi lệnh.
Đảm đương chức năng điều khiển bus, tạo địa chỉ.
Thành phần:
Đơn vị điều khiển BUS và tạo địa chỉ (Bus Control Unit)
Hàng đợi lệnh (Instruction queue)
Tập các thanh ghi địa chỉ đoạn: CS, DS, CS, ES.
Thanh ghi con trỏ lệnh: IP
Chức năng các đơn vị BIU
Đơn vị điều khiển BUS và tạo địa chỉ (Bus Control
Unit & Address Generator): Tiếp nhận lệnh, trao đổi dữ
liệu và tạo địa chỉ vật lý từ địa chỉ logic.
Hàng đợi lệnh (Instruction queue): Là nơi lưu giữ tạm
thời các lệnh sẽ được thực hiện trong EU
Tập các thanh ghi đ/c đoạn và con trỏ lệnh: Lưu địa
chỉ các đoạn bộ nhớ chương trình (CS), dữ liệu (DS),
ngăn xếp (SS), dữ liệu mở rộng (ES) và đ/c offset của
lệnh (IP)
3. Mơ hình lập trình của VXL 8086/8088
Tập thanh ghi EU
14 thanh ghi bên trong 8086 và 8088
• Các thanh ghi đa năng: AX, BX, CX và DX (16 bit, r/w).
• Các thanh ghi chỉ số và con trỏ: SP, BP, SI, DI (16 bit, r/w).
• Các thanh ghi đoạn: CS, DS, SS, ES (16 bit, r/w).
• Thanh ghi con trỏ lệnh IP (Instruction Pointer) 16 bit,
read.
• Thanh ghi cờ (Flag register) 16 bit, read.
Ví dụ về sự thay đổi trạng thái các cờ.
Xác định xem các phép tính sau ảnh hng lên
các cờ nh thế nào?
MOV
AL, 9CH
MOV
DH, 64H
ADD
AL, DH
Giải:
9C+64 =00
1001
1100
+
01100100
0000
0000
CF=1
PF=1
AF=1
ZF=1 SF=0
4. CPU ĐỊA CHỈ HÓA BỘ NHỚ
Phơng pháp xác định địa chỉ
Địa chỉ đoạn (DS): EF00
->dịch trái 4 bit:
EF000
Địa chỉ offset:
0224 -> Giữ nguyên:
0244
Địa chỉ tạo thành 20 bit (địa chỉ vật lý):
EF244
Cách xác định địa chỉ vật lý:
Địa chỉ vật lý = Thanh ghi đoạn x 16 + Thanh
ghi lệch
Cách
xácghi
định địa chỉ
Thanh
Offsetlô-gic:
Thao tác
IP
Nhận lệnh
Thanh CS
ghi đoạn:Thanh ghi
lệch
DS
BX,SI,DI
Dữ liệu
SS Thao tác của
SPcác thanh ghi
Ngăn xÕp
ES
DI
N¬i gưi tíi
Ví dụ: Cho lệnh có địa chỉ segment và offset trong CS=24F6H
và IP=634AH
Hãy xác định:
1.
Địa chỉ lơ-gíc của lệnh
2.
Địa chỉ offset của lệnh
3.
Địa chỉ vật lý của lệnh
4.
Địa chỉ thấp của đoạn mã lệnh
5.
Địa chỉ cao của đoạn mã lệnh
Giải:
1. 24F6:634A
2. 634A
3. 2B2AA
(24F60+634A)
4. 24F60
(24F60+0000)
5. 34F5F
(24F60+FFFF)