Khối tạo địa chỉ AUđộ địa chỉ các chương trình sẽ sử dụng các loại địa chỉ logic khác nhau, AU có nhiệm vụ chuyển các địa chỉ logic quản lý trong chương trình phần mềm thành địa chỉ vậ
Trang 1Nguyên tắc làm việc
của Intel 80x86
Phạm Thế Duy (ptduy@yahoo.com)
Trang 2Sơ đồ khối
EXECUTION UNIT (EU)
ADDRESS UNIT (AU)
INSTRUCTION UNIT (IU)
INSTRUCTION DECODER
3 DECODER INSTRUCTION QUEUE
ADDRESS LATCH AND DRIVER PREFETCH
PROCESSOR EXTENTION INTERFACE
BUS CONTROL
DATA TRANSCEIVERS
6 BYTE PREFETCH QUEUE
BUS UNIT (BU)
PHYSICAL ADDRESS ADDER
SEGMENT BASE
SEGMENT SIZE
SEGMENT LIMIT CHECK
OFFSET
ADDER
REGISTER LIMIT CHECK
CONTROLALU
Trang 3Khối tạo địa chỉ (AU)
độ địa chỉ các chương trình sẽ sử dụng các loại địa chỉ logic khác nhau, AU có nhiệm vụ chuyển các địa chỉ logic quản lý trong chương trình phần mềm thành địa chỉ vật lý, cung cấp tới BU để giao tiếp với bên ngoài
và vào ra, còn địa chỉ logic là các giá trị được chương trình quản lý sử dụng để tạo ra địa chỉ vật lý, đó chính
là các địa chỉ đoạn (segment) và địa chỉ độ dời (offset).
Trang 4Khối giao tiếp BUS (BU)
BU cung cấp các tín hiệu địa chỉ, dữ liệu và điều khiển để truy cập các bộ nhớ và vào ra Khối này cũng cho phép giao tiếp với bộ đồng xử lý hoặc các bộ vi xử lý khác.
Chức năng quan trọng nhất của BU là tự động kích hoạt quá trình lấy lệnh từ bộ nhớ bằng bộ tiền truy cập lệnh (Prefetch) BU còn có chức năng cho phép quá trình lấy lệnh từ bộ nhớ thực hiện song song với các quá trình khác nhớ hàng đợi lệnh 6 byte (Prefetch queue)
Các địa chỉ mà AU tạo ra cung cấp tới các bộ cài (Address Latch) và sẽ được định thời cung cấp ra bên ngoài tại các thời điểm thích hợp Dữ liệu truyền với CPU sẽ được chuyển qua các cổng đệm hai chiều (Data Transceivers).
Trang 5Khối giải mã lệnh (IU)
lệnh đã lấy trước đó giải mã và chuyển tới hàng đợi lệnh đã giải mã (Decoded Instruction queue) để
EU thực hiện.
có thể mã hoá ngắn nhất có thể, IU sẽ tạo ra các tín hiệu điều khiển cần thiết từ các mã lệnh này
nhớ của hệ thống sẽ yêu cầu ít hơn, thời gian lấy lệnh sẽ được giảm ngắn.
Trang 6Khối thực hiện lệnh (EU)
EU thực hiện các lệnh xử lý dữ liệu mà IU đã giải mã, nó giao tiếp dữ liệu với bên ngoài thông qua BU.
Các khối chức năng của EU bao gồm:
- Bộ điều khiển (Control) thực hiện việc điều khiển việc thực hiện các lệnh trong EU.
- ALU là khối thực hiện các phép toán số học logic, cấu trúc của ALU thông thường có hai ngõ vào nhận hai toán hạng và một ngõ ra cung cấp kết quả
Các thanh ghi sử dụng làm nơi lưu trữ dữ liệu, sử dụng trong các phép tính, và các giá trị địa chỉ cho phép EU lấy các toán hạng từ bên ngoài.
Trang 7Các thanh ghi của 80286
CX, DX, DI, SI, BP, SP.
SS.
Trang 8Các thanh ghi đa năng (16bit)
Trang 9Các thanh ghi đa năng
MOV AL,[BX] ; chép nội dung ô nhớ BX giữ địa chỉ.
MOV AH,[BX+03] ; chép nội dung ô nhớ có địa chỉ [BX+3] vào AH.
MOV CH,[BX+DI+9]
LOOP N ;trừ CX đi 1, chuyển tới nhãn N khi CX ≠0.
16 bit Làm thanh ghi giữ địa chỉ cổng vào ra.
OUT DX,BL ; chuyển BL ra cổng có địa chỉ DX
Trang 10Các thanh ghi đa năng (tiếp)
DI (Destination Index): thanh ghi chỉ số đích – giữ địa chỉ đích dữ liệu trong các lệnh về chuỗi Làm thanh ghi địa chỉ.
MOV AH,[DI] ; chuyển nội dung ô nhớ có địa chỉ chứa trong DI vào AH.
MOV BH,[DI+7] ; Chuyển nội dung ô nhớ [DI+7] vào thanh ghi BH
MOVSB ; Chuyển nội dung [SI] vào địa chỉ [DI]
liệu trong các lệnh về chuỗi Làm thanh ghi địa chỉ.
Trang 11 Một số lệnh tác động tới vùng nhớ ngăn xếp như:
push, pop, call, ret, và nhiều lệnh khác nữa.
Ngăn xếp là nơi tốt nhất để lưu trữ các giá trị tạm thời vào bộ nhớ.
Trang 12Chứa dữ liệu vào ngăn xếp
Từ ‘stack-ngăn xếp’ được sử dụng là do cách lưu trữ và lấy lại
dữ liệu trong vùng nhớ ngăn xếp cũng giống như việc sử dụng một ngăn xếp trong thực tế.
Có thể thực hiện ngăn xếp bằng các hộp Để tạo thành ngăn xếp trước hết đặt hộp A, sau đó tới B và cuối cùng là C.
B
A B C
Chú ý rằng chúng ta chỉ có thể lấy được hộp xếp vào ngăn xếp cuối cùng (Đỉnh ngăn xếp - Top of Stack – TOS) Như vậy trình tự phục hồi lại dữ liệu theo trình tự ngược lại khi xếp vào ngăn xếp (C tới B và cuối cùng là A).
Trang 13Chứa dữ liệu vào ngăn xếp
bằng lệnh PUSH
Thanh ghi con trỏ ngăn xếp SP (Stack Pointer) được sử dụng để truy cập ngăn xếp SP luôn trỏ tới giá trị cuối cùng được cất vào ngăn xếp.
Lệnh PUSH chứa dữ liệu vào đỉnh ngăn xếp.
PUSH AX ; SP= SP-1, M[SP] AX
Lệnh “PUSH AX” tương ứng với:
SUB SP, 1 ; giảm SP đi 1
MOV [SP], AX ; ghi giá trị của AX vào đỉnh ngăn xếp
Các lệnh truy cập ngăn xếp có thể thực hiện với 16 hoặc
32 bit.
Trang 14Quan sát hoạt động lệnh
Trang 15Nhiều lệnh PUSH liên tiếp
Địa chỉ thấp
SP
Sau các lệnh PUSH
PUSH AX PUSH BX PUSH CX
Địa chỉ cao
Trang 16Đọc dữ liệu trong ngăn xếp bằng lệnh POP
Lệnh POP phục hồi một giá trị từ ngăn xếp:
POP AX ; AX M[SP] , SP= SP+1
Lệnh “pop AX” tương đương với các lệnh:
mov AX, [SP] ; đọc giá trị từ đỉnh ngăn xếp add sp, 1 ; tăng SP lên 1.
Trang 17Hoạt động của lệnh POP
Địa chỉ thấp
Địa chỉ cao
SP Trước POP AX
FF65 23AB
Trang 18Hoạt động nhiều lệnh POP liên tiếp
FF65 23AB 357F D21B 38AC 23F4
Trang 19Ngăn xếp Overflow,
Việc này gọi là tràn trên ngăn xếp (OVERFLOW).
Nếu lấy dữ liệu ra khỏi ngăn xếp nhiều hơn các giá trị đã cất vào ngăn xếp, con trỏ ngăn xếp có thể tăng lớn hơn giá trị điểm khởi động ngăn xếp Điều này được gọi là tràn dưới (UNDERFLOW).
Để ngăn xếp được sử dụng tốt cần phải lấy dữ liệu ra khỏi ngăn xếp bằng đúng số dữ liệu đã cất vào ngăn xếp.
Trang 20Tổng kết về ngăn xếp
Là nơi chứa dữ liệu tạm thời.
Đoạn và con trỏ ngăn xếp SS:SP
Push và Pop (LIFO-Last In First Out)
SP : Giữ địa chỉ đỉnh ngăn xếp
Sau lệnh PUSH con trỏ SP sẽ giảm.
Trang 21Các thanh ghi đoạn
Chế độ địa chỉ thực:
Physical address = Segment * 10H +offset
Trang 22Phân đoạn bộ nhớ
CS ES SS DS
Data Segment
Stack Segment
Extra Segment
Code Segment
System Memory
00000h FFFFFh
Trang 23Thanh ghi cờ
*
A
*ZST
DOPL
Cờ nhớ CF (Carry Flag).
CF=1 khi cộng tràn, trừ mượn.
Cờ chẵn lẻ PF (Parity Flag).
PF = 1 khi số bit 1 là một số chẵn.
Cờ dấu SF ( Sign Flag).
SF =1 khi kết quả có bit cao nhất là 1
Cờ tràn OF (Overflow Flag)
OF = 1 khi tràn bit 1 từ MSB-1 qua MSB.
Cờ ZERO ZF (Zero Flag).
ZF = 1 khi kết quả bằng 0.
Cờ nhớ phụ AF (Auxiliary Carry Flag ).
AF=1 khi tràn bit 1 từ D3 qua D4.
Trang 24Các cờ điều khiển trong
thanh ghi cờ.
Cờ định hướng DF (Direction Flag).
Xác định hướng địa chỉ của các lệnh xử lý chuỗi
Cờ ngắt IF : (Interrupt Flag).
IF=1 cho phép ngắt.
Cờ bẫy TF: (Trap Flag).
Sử dụng chạy từng bước để sửa sai chương trình.
Cờ nhiệm vụ lồng nhau NT (Nested Tast).
Cho phép tiến triển hoặc chuyển nhiệm vụ.
Cờ chỉ thị mức đặc quyền vào ra (IOPL).
Chỉ thị mức đặc quyền của nhiệm vụ đang thực hiện.
Trang 25Các thanh ghi đặc biệt.
Thanh ghi con trỏ lệnh: (IP - Instruction Pointer).
CALL giá trị hiện hành sẽ được cất vào đỉnh ngăn xếp trước khi nạp giá trị mới Lệnh RET phục hồi giá trị của IP).
nhiệm vụ
lý toán học.
xử lý toán học đang làm việc.
lập 80286 chuyển qua hoạc động ở chế độ bảo vệ Khi đã thiết lập, chỉ khi RESET bit này mới được xoá.
MP
Trang 26Nguyên tắc làm việc của 80286
Trang 27Kết nối BUS hệ thống
WR RD
WE OE
S1 S0
ADDRESS BUS
I/O MEMORY
Trang 28Sơ đồ kết nối BUS hệ thống tiêu biểu
1 3
1 4
1 7
1 8 1
1 1
2 5 6 9
1 3
1 4
1 7
1 8 1
1 1
2 5 6 9
1 3
1 4
1 7
1 8 1
1 1
2 5 6 9
1 9 1
1 7
1 6 5 4
1 9 1
Trang 29Các mạch đệm cài BUS
74LS373
Q0Q1Q2Q3Q4Q5Q6Q7
D0D1D2D3D4D5D6D7OELE
Trang 32HOẠT ĐỘNG CỦA VI XỬ LÝ
Chu kỳ máy - Machine cycle
Lấy lệnh - Fetch, Giải mã lệnh - decode, Thực hiện lệnh - execute
Định thời vi xử lý - Processor timing
Chu kỳ BUS - Bus cycles
Đọc bộ nhớ/vào ra - Memory / IO read
Ghi bộ nhớ/ vào ra - Memory / IO write
Trang 33Thực hiện việc lưu trữ dữ liệu
;Giả sử khi bắt đầu chương trình.
Trang 34Bộ vi xử lý sẽ hoạt động như thế nào? How does the P works?
Increment Program Counter (CS:IP) by 1
Execute (if necessary)
Trang 35A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C FCA1
SP
DX
1243 CS
SI
1000
0005 IP
5678 DI
Inst Queue
CS:IP
23 00000
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
FETCH
Trang 36A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C FCA1
SP
DX
1243 CS
SI
1000
0005 IP
5678 DI
Inst Queue
1000:0005
23 00000
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
FETCH
Trang 37A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C FCA1
SP
DX
1243 CS
SI
1000
0005 IP
5678 DI
Inst Queue
10005
23 00000
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
FETCH
Trang 38A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C FCA1
SP
DX
1243 CS
SI
1000
0005 IP
5678 DI
Inst Queue
10005
LOW
23 00000
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
HIGH
FETCH
Trang 39A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C FCA1
SP
DX
1243 CS
SI
1000
0005 IP
5678 DI
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
HIGH
FETCH
Trang 40A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C FCA1
SP
DX
1243 CS
SI
1000
0005 IP
5678 DI
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
HIGH
FETCH
Trang 41A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C FCA1
SP
DX
1243 CS
SI
1000
0005+1 IP
5678 DI
Inst Queue
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
INC PC
Trang 42A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C FCA1
SP
DX
1243 CS
SI
1000
0006 IP
5678 DI
Inst Queue
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
INC PC
Trang 43A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C FCA1
SP
DX
1243 CS
SI
1000
0006 IP
5678 DI
Inst Queue
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
DECODE
mov [bx], ?
Trang 44A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C FCA1
SP
DX
1243 CS
SI
1000
0006 IP
5678 DI
Inst Queue
88
CS:IP
23 00000
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
FETCH
Trang 45A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C FCA1
SP
DX
1243 CS
SI
1000
0006 IP
5678 DI
Inst Queue
88
1000:0006
23 00000
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
FETCH
Trang 46A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C FCA1
SP
DX
1243 CS
SI
1000
0006 IP
5678 DI
Inst Queue
88
10006
23 00000
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
FETCH
Trang 47A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C FCA1
SP
DX
1243 CS
SI
1000
0006 IP
5678 DI
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
HIGH
FETCH
Trang 48A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C FCA1
SP
DX
1243 CS
SI
1000
0006 IP
5678 DI
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
HIGH
FETCH
Trang 49A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C FCA1
SP
DX
1243 CS
SI
1000
0006 IP
5678 DI
Inst Queue 8807
10006
07
LOW
23 00000
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
HIGH
FETCH
Trang 50A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C FCA1
SP
DX
1243 CS
SI
1000
0006+1 IP
5678 DI
Inst Queue
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
INC PC
Trang 51A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C FCA1
SP
DX
1243 CS
SI
1000
0007 IP
5678 DI
Inst Queue
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
INC PC
Trang 52A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C FCA1
SP
DX
1243 CS
SI
1000
0007 IP
5678 DI
Inst Queue
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
DECODE
mov [bx], al
Trang 53A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C FCA1
SP
DX
1243 CS
SI
1000
0007 IP
5678 DI
Inst Queue 8807
DS:BX
23 00000
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
EXECUTE
mov [bx], al
Trang 54A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C FCA1
SP
DX
1243 CS
SI
1000
0007 IP
5678 DI
Inst Queue 8807
2000:0023
23 00000
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
EXECUTE
mov [bx], al
Trang 55A19 A0 :
D7 D0 :
CX BX AX
34CD AB12
1AB3 2000
0000 0023 3F1C FCA1
SP
DX
1243 CS
SI
1000
0007 IP
5678 DI
Inst Queue 8807
20023
23 00000
00001
10000 10001 10002 10003 10004 10005 10006 10007 10008
95
: :
45 98 27 39 42 88 07 F4 8A
: :
20020 20021 20022 20023
FFFFD FFFFE FFFFF
29 12 7D 13
19 25 36
: :
: :
: :
: : A19
A0 :
D7 D0 :
RD
WR
EXECUTE
mov [bx], al