Cấu truc VXL 80386 của Intel
Transcript of Cấu truc VXL 80386 của Intel
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNGKhoa: Công nghệ thông tin
Môn: Kĩ thuật vi xử lí.
Giảng viên hướng dẫn: Nguyễn Quý Sỹ.
Sinh viên thực hiện:
1. Hoàng Nhàn Phương.2. Dương Bảo Việt.
Kĩ Thuật Vi Xử Lí Page 1
TÌM HIỂU VI XỬ LÍ 80386CỦA INTEL
Hà Nội: 10/2014
Mục LụcChương 1: Tổng quan về vi xử lí Intel.
1.1 Vi xử lí Intel 32bit.
Chương 2 : Kiến trúc IA-32 ( x86)
1.1 Khái niệm.1.2 Chức năng của IA – 32.
Chương 3 : Kiến trúc của vi xử lí 80386.
3.1 Đặc điểm chung của vi xử lí 80386.
3.2 Cách đóng vỏ, sơ đồ khối.
Chương 4 : Mô hình lập trình của vi xử lí 80386.
4.1 Các thanh ghi của vi xử lí 80386.
4.1.1 Thanh ghi đa năng, thanh ghi con trỏ, thanh ghi cơ sở.
4.1.2 Thanh ghi điều khiển.
4.1.3 Thanh ghi đoạn.
4.1.4 Thanh ghi kiểm tra và gỡ rối.
4.2 Các tín hiệu ngắt.
4.2.1 Các tín hiệu xác định chu kì bus.
4.2.2 Các tín hiệu điều khiển bus.
4.2.3 Các tín hiệu trọng tài bus.
4.3 Tổ chức bộ nhớ.
Kĩ Thuật Vi Xử Lí Page 2
4.3.1 Tổ chức phân đoạn.
4.3.2 Tổ chức phân trang.
4.3.3 Chế độ bảo vệ phân đoạn
4.3.4 Các mô tả đoạn và chọn đoạn bộ nhớ.
4.4 Không gian nhớ.
4.5 Chế độ của vi xử lí 803386.
4.5.1 Chế độ 8086 thực.
4.5.2 Chế độ 80386 ảo.
Chương 5 : Chế độ định địa chỉ của vi xử lí 80386.
5.1 Chế độ định địa chỉ thanh ghi.
5.2 Chế độ định địa chỉ tức thì.
5.3 Chế độ định địa chỉ trưc tiếp.
5.4 Chế độ định địa chỉ gián tiếp qua thanh ghi.
5.5 Chế độ định địa chỉ qua ô nhớ (Memory Addressing Modes )
5.6 Chế độ định địa chỉ quan hệ Chỉ mục, Cơ sở /
Chỉ mục, và Cơ sở / Chỉ mục (Indexed,
Base/Indexed, and Base/Indexed/Disp Addressing
Modes).
Kĩ Thuật Vi Xử Lí Page 3
Chương I. Tổng quan về vi xử lí Intel.
1.1 Lịch sử phát triển.Năm 1970, Intel cho ra đời chip vi xử lý đầu tiên
4004:
- Độ dài từ xử lý 4 bit.
- Bus dữ liệu 4 bit, bus địa chỉ 12 bit (dùng chung với
bus dữ liệu).
- Kích thước 22mm2, 16 chân, chứa 2250 transitors.
Kĩ Thuật Vi Xử Lí Page 4
Hinh 1 VXL intel 4004
Năm 1972, Intel cho ra đời chip vi xử lý 8008.
- Độ dài từ xử lý: 8 bit.
- Bus dữ liệu 8 bit, bus địa chỉ 14 bit (dùng chung với
bus dữ liệu).
- Tần số làm việc 300Khz, 18 chân, chứa 3300
transitors.
Hình 2 VXL intel 8008
Năm 1976, Zilog cho ra đời chip vi xử lý Z80:
- Độ dài từ xử lý: 8 bit.
- Bus dữ liệu 8 bit, bus địa chỉ 16 bit (dùng chung với
bus dữ liệu).
- Tần số làm việc 2.5, 4, 6, 8 và 10 Mhz; 40 chân.
Năm 1982, Intel cho ra đời chip vi xử lý 80286.
Kĩ Thuật Vi Xử Lí Page 5
- Độ dài từ xử lý: 16 bit.
- Bus dữ liệu 16 bit, bus địa chỉ 24 bit (dùng chung
với bus dữ liệu).
- Bộ nhớ max: 16MB.
- Tần số làm việc 6-25Mhz.
Hình 3 VXL intel 80286
Năm 1985, Intel cho ra đời chip vi xử lý 80386:
- Độ dài từ xử lý: 32 bit.
- Bus dữ liệu 32 bit, bus địa chỉ 32 bit (dùng chung
với bus dữ liệu).
- Bộ nhớ max: 4GB.
- Tần số làm việc: 16-33Mhz.
Hình 4 VXL intel 80386
Năm 1989, Intel cho ra đời chip vi xử lý 80486:
Kĩ Thuật Vi Xử Lí Page 6
- Độ dài từ xử lý: 32 bit.
- Bus dữ liệu 32 bit, bus địa chỉ 32 bit (dùng chung
với bus dữ liệu).
- Bộ nhớ max: 4GB.
- Tần số làm việc: 25-100Mhz.
- Tích hợp cache L1 8K.
- Tích hợp đồng xử lý số thực 80487.
Hình 5 VXL intel 80486
Năm 1993, Intel cho ra đời chip vi xử lý Pentium:
- Độ dài từ xử lý: 32 bit.
- Bus dữ liệu 32 bit, bus địa chỉ 32 bit (dùng chung
với bus dữ liệu).
- Bộ nhớ max: 4GB.
- Tần số làm việc 60, 75, 90, 120Mhz.
- Tích hợp cache I-L1 8K và D-L1 8K.
- Hỗ trợ tập lệnh xử lý multimedia MMX.
Kĩ Thuật Vi Xử Lí Page 7
Hình 6 VXL intel pentium
Năm 1997, Intel cho ra đời chip vi xử lý Pentium II.
- Tần số làm việc 233-450 Mhz.
- Tích hợp cache I-L1 16-32K và D-L1 16-32K.
- Tích hợp cache L2 256-512K.
- Sử dụng khe cắm kiểu slot I.
Hình 7 VXL intel pentium II
Năm 1999, Intel cho ra lò chip vi xử lý Pentium III.
- Tần số làm việc 450Mhz-1.4Ghz
- Tích hợp cache L1, L2.
- Giới thiệu tập lệnh SSE (Streaming SIMD Extensions).
Kĩ Thuật Vi Xử Lí Page 8
Hình 8 VXL intel pentium III
Năm 2000, Intel cho ra đời chip vi xử lý Pentitum IV.
- Tần số làm việc 1.5-3.8 Ghz, công nghệ 180-130nm.
- Hỗ trợ các tập lệnh tiên tiến SSE, SSE2, SSE3.
- Một số phiên bản mới nhất hỗ trợ công nghệ siêu phân
luồng và ảo hóa.
Hình 9 VXL pentium IV
Năm 2003, Intel cho ra đời chip vi xử lý Pentium M.
- Công nghệ 130-90nm.
- Tần số làm việc 900Mhz – 2.26Ghz.
- Thiết kế dành riêng cho máy xách tay.
- Cache L1 32K, L2 đến 2MB.
- Hỗ trợ các tập lệnh tiên tiến MMX, SSE, SSE2.
- Công nghệ quản lý nguồn tiên tiến Intel Speedstep.
Kĩ Thuật Vi Xử Lí Page 9
1.2 Vi xử lí Intel 32 BitVi xử lí Intel 32 bit được ra đời và phát triển
từ giai đoạn 1983 – 1999. Các vi xử lí tiêu biểu ở
giai đoạn này có thể kể đến như 80386/80486, Pentium,
Pentium Pro, Pentium II, Pentium III, Pentium IV,
Pentium M, Core, Celeron M, Celeron D.
Đặc điểm của các bộ vi xử lí này có các transitor rất
lớn ( từ 3 triệu đến hơn 50 triệu các transistor ).
Phần lớn các vi xử lí điều thực hiện nhiều hơn 1 lệnh
trong cùng 1 chu kì và được tích hợp xử lí dấu phảy
động ( floating point unit ). Chúng có các thanh ghi
dùng chung từ 16 – 32 bit. Nhiều loại có phân biệt
các tệp thanh ghi 32 bit ( register file ) cho đơn vị
nguyên IU ( interger unit ) và tệp thanh ghi 32 bit
cho FPU. Chúng có bộ nhớ đệm bên trong mức 1 với dung
lượng lên đến 64 KB. Đa số bộ nhớ đệm bên trong mưc 1
được phân đôi : dùng cho lệnh và dùng cho dữ liệu.
Các vi xử lí thời này có bus địa chỉ đều là 31 bit,
phân biệt với 4GB bộ nhớ và có khả năng làm việc với
bộ nhớ ảo. Các bộ vi xử lí công nghệ cao hiện nay đã
thỏa mản các yêu cầu chế tạo máy tính lớn và các siêu
máy tính.
Kĩ Thuật Vi Xử Lí Page 10
Chương 2 Kiến trúc IA – 32 ( x86 )2.1 Khái niệm.IA-32 (Intel Architecture, 32 bit) còn được gọi là
x86, x86-32 hay i386 là một kiến trúc tập lệnh của
intel ứng dụng rất thành công trong mảng vi xử
lý. kiến trúc này xuất hiện đầu tiên trong vi xử lý
nổi tiếng của Intel, 80386, giờ đây kiến trúc này
được thiết lập cho hầu hết các họ vi xử lý trên thế
giới.
2.2 Chức năng. IA-32 có khả năng tương thích ngược đầy đủ và hỗ trợ
(mở rộng) những xử lý 64 bit, được gọi là Intel 64
của Intel hay AMD64 của AMD (còn được gọi là x86-64
và không liên quan gì đến kiến trúc IA-64 được áp
dụng trong những dòng Itanium ( vi xử lý cho máy chủ
của Intel)). Chính do tính tương thích ngược rất tốt
và sự hỗ trợ mở rộng xử lý 64 bit mà kiến trúc IA-32
vẫn được duy trì và sử dụng rộng rãi.
- Các thanh ghi bên trong có độ rộng 32 bit.
- Xử lý các phép toán số nguyên với 32 bit.
- Có 3 cơ chế làm việc.
- Chế độ 8086 thực: làm việc như một bộ xử lý 8086
đơn nhiệm 16 bit.
- Chế độ ảo: làm việc như nhiều bộ vi xử lý 8086 đa
nhiệm 16 bit.Kĩ Thuật Vi Xử Lí Page 11
- Chế độ bảo vệ là việc đa nhiệm 32 bit.
- Xử lý các phép toán số dấu chấm động.
Chương 3 : Kiến trúc của vi xử lí 80386.3.1 Các đặc điểm chung của vi xử lí 80386.
Vi xử lí 80386 có 2 phiên bản : 386DX và 386SX,là dòng vi sử lí xuất hiện từ năm 1986 của Intel dựa trên
kiến trúc vi xử lí 32bit.
Các i386 đã được đưa ra trong tháng mười 1985, nhưng
đầy đủ chức năng thì được đưa ra đầu tiên vào năm
1986.Tháng 5 năm 2006 Intel công bố rằng sản phẩm của
386 sẽ chấm dứt vào cuối tháng chín năm 2007. Và đến
bây giờ chúng ta thấy các CPU của Intel và các hãng
khác đa số là dòng 64bit. Tuy nhiên do các phần mềm
ứng dụng trên nền tảng 32bit vẫn đang còn quá thịnh
hành và phần mềm vẫn chưa khai thác hết được các tính
năng nổi trội của 64bit.
Kĩ Thuật Vi Xử Lí Page 12
Từ vi xử lý 80386 là khởi đầu của các vi xử lý 32 bít
.Tức là chúng có cả các bus số liệu và bus địa chỉ
đều có độ rộng 32 bít .các vi xử ly này hỗ trợ rất
mạnh cho các hệ điều hành đa nhiệm 80386 được dung
cho các máy IBM PS/2 80 đầu tiên và nhiều máy nhái
khác.chúng ta có thể liệt kê vài đặc điểm chính của
vi xử lý 80386 như sau:
- Bus dữ liệu rộng 32 bít nên có thể truy xuất 4
byte số liệu một lúc
- Bus địa chỉ rộng 32 bít nên có thể quản lý được
đến 232=4 Gbyte nhớ vật lý .
Với trên 275.000 transistor và tốc độ xung đồng hồ
33 MHz, 80386 có tốc độ 11MIPS, tức là với 11 triệu
lệnh trong 1 giây (million instructions per second),
cho phép hỗ trợ các chức năng cơ bản như 80286 bao
gồm quản lý bộ và bảo vệ bộ nhớ nên dùng tốt cho các
hệ điều hành đa nhiệm .Vì có mạch tính số học –logic
ALU 32 bít nên nó có thể làm việc trực tiếp vơi từ dữ
liệu dài 32 bít .Bộ nhớ của 80386 có thể lên tới 4
Gbyte và một chương trình có thể có tới 16.384 đoạn
nên không gian địa chỉ ảo là 16.384 .4 Gbyte = 64
Tbyte nhớ .
Kĩ Thuật Vi Xử Lí Page 13
3.2 Cách đóng vỏ.
Sơ đồ các nhóm chân tín hiệu sau:
Mỗi chân tin hiệu ra của 80386 có khả năng hạ xuống
mức thấp ( logic 0 ) với 4.0mA ( các đường địa chỉ và
dữ liệu ) hoặc 5.0 mA. ( các đường tín hiệu khác).
Trong hầu hết các hệ thống máy tính mức dòng nhỏ như
thế này yêu cầu phải có các bộ đệm. Để tiện cho đọc
tín hiệu,, vị trí các chân tín hiệu của 386DX và
386SX được liệt kê theo tạo độ chân trên ỏ như trong
hình trên.
Kĩ Thuật Vi Xử Lí Page 14
Chức năng của các chân tín hiệu của 80386 được phân
chia thành các nhóm như sau:
1.A31-A2: bus địa chỉ: Sử dụng để đánh địa chỉ 1G×
32 vùng nhớ. Các đường A0 và A1 được kí hiệu
thành các tín hiệu cho phép bus BE#3-BE0# ( bus
enable) ( 80386SX chỉ có các đường địa chỉ A23-
A1).
2.D31-D0: bus dữ kiệu: sử dụng để vận chuyển dữ
liệu giữa các vi sử lí và bộ nhớn, thiết bị vào
ra.
3.BE#3-BE0#: cho phép băng nhớ: sử dụng để truy
nhập một byte, một từ, từ kép của dữ liệu. Những
tín hiệu này được vi xử lí tạo ra nhờ A1 và A0.
4.M/IO#( Memory/IO) sử dụng để chọn bộ nhớ ( khi
M/IO = 1 ) hoặc chọn thiết bị vào ra ( khi M/IO #
0). Trong quá trình thao tác với thiết bị vào ra
chỉ dùng 16 bit đường địa chỉ để đánh địa chỉ các
cổng vào/ra.
5.W/R# ( Write/read): chỉ ra rằng chu trình bus là
chu trình ghi khi W/R# = 1 hay chu trình đọc
( khi W/R# = 0).
6.ADS# ( Address Data Strobe): trở nên tích cực khi
80386 đã đưa ra các giá trị địa chỉ có nghĩa của
bộ nhớ hay thiết bị vào/ra.
Kĩ Thuật Vi Xử Lí Page 15
7.RESET: xóa: khởi tạo trạng thái ban đầu cho 80386
để bắt đầu thực hiện chương trình ở địa chỉ nhớ
FFFFF0h, 80386 được xóa đưa về chế độ lọc và 12
bit cao nhất của địa chỉ duy trì giá trị FFFh cho
đến khi một lệnh nhảy hoặc gọi xạ được thực hiện
khi đó chúng được xóa về 000h.
8.CLK2: nhịp đồng hồ 2: được tạo ra nhờ nhận đôi
tần số nhịp vận hành của 80386. Ví dụ, để vận
hành 80386 ở tần số 16MHz. chúng ta ghim vào chân
CLK2 này một nhịp đồng hồ tần số 32MHz.
9.READY#: điều khiển một số trạng thái chờ được đưa
vào để truy cập bộ nhớ, vì tốc độ vi xử lý thương
nhanh hơn so với bộ nhớ.
10. LOCK#: trở về trạng thái logic 0 khi có một
lệnh bị khóa nhờ LOCK. Tín hiệu này dùng trường
hợp có truy câp DMA.
11. D/C#: chỉ ra rằng bus dữ liệu chứa dữ liệu
gửi tới bộ nhớ hay thiết bị vào/ra khi ở mức
logic 1. Nếu D/C# = 0 thì vi xử lí bị dừng hoặc
đang thực hiện một xác nhận ngắt.
12. BS16#: kích thước bus là 16 – bit: Khi BS16#
= 1 thì chọn bus dữ liệu 32bit và ngược lại.
13. NA#: gây ra cho 80386 đưa ra địa chỉ của
lệnh hoặc dữ liệu tiếp theo trong chu trình bus.
Tín hiệu này thường dùng để cho địa chỉ ống.
Kĩ Thuật Vi Xử Lí Page 16
14. HOLD: yêu cầu tác động DMA ( giống như trong
8088/8086)
15. HLDA: chỉ ra rằng 80386 đang trong trạng
thái HOLD.
16. PEREQ#: yêu cầu 80386 kết nối với 80387.
17. BUSY: một đầu vào được sử dụng nhờ lệnh WAIT
hoặc FWAIT để chờ đợi bộ đồng xử lí rỗi. Nó kết
nối trực tiếp 80386 và 80387.
18. ERROR: chỉ cho vi xử lí rằng lỗi xuất hiên ở
vi xử lí 80387.
19. INTR: mạch logic xử lí ngắt bên ngoài tạo ra
tín hiệu này để yêu cầu vi xử lí phục vụ ngắt.
20. NMI: một yêu cầu phục vụ ngắt không cho được
( cờ IF không có tác dụng ).
3.2.1 sơ đồ khối.
Kĩ Thuật Vi Xử Lí Page 17
Sơ đồ khối của vi xử lí 80386 của Intel
Kiến trúc của 80386 được chia thành. • Đơn vị xử lý trung tâm • Đơn vị quản lý bộ nhớ • Đơn vị giao diện Bus • Thực hiện đơn vị có 8 mục đích chung và 8 đăng ký mục đích đặc biệt đó là một trong hai được sử dụng đểxử lý dữ liệu hoặc tính toán địa chỉ bù đắp.
Lệnh unitdecodes byte mã tác vụ nhận từ 16 - byte mã lệnh hàng đợi và sắp đặt chúng trong 3 - lệnh giải mãlệnh hàng đợi.
Kĩ Thuật Vi Xử Lí Page 18
. Đằng sau giải mã chúng chuyển nó cho phần điều khiển cho có tín hiệu điều khiển cần thiết. Bộ chuyểnđổi thùng tăng tốc độ tất cả shift và xoay thao tác.
. Nhân / chia lôgic triển khai bit - ca - xoay thuật toán để hoàn chỉnh thao tác trong thời gian tối thiểu.
. Thậm chí phép nhân 32 bit có thể được thi hành trong vòng một một phần triệu giây bằng nhân /
lôgic chia.
. Bộ quản lý bộ nhớ bao gồm đơn vị Phân đoạn và đơn vị Phân trang.
. Đơn vị Phân đoạn cho phép việc sử dụng hai địa chỉ thành phần, đó làphân đoạn và khoảng chênh cho relocability và chia sẻ mã và dữ liệu.
. Đơn vị Phân đoạn cho phép phân đoạn của kích thước 4 Gbytes ở mức tối đa.
. Đơn vị Phân trang tổ chức thuật ngữ memoryin vật lýcủa trang của 4 cỡ kbytes mỗi.
. Phân trang đơn vị làm việc dưới tác động của đơn vịphân đoạn, nghĩa là mỗi phân đoạn là chia thêm thành trang. Bộ nhớ ảo cũng là tổ chức liên quan đến phân đoạn và trang bằng bộ quản lý bộ nhớ.
. Đơn vị Phân đoạn cung cấp 4 mức cơ chế bảo vệ để bảo vệ và cô lập mã hệ thống và dữ liệu từ các trình ứng dụng.
. Phân trang đơn vị chuyển đổi địa chỉ tuyến tính vàođịa chỉ vật lý.
. Điều khiển và thuộc tính PLA kiểm tra đặc quyền tạimức trang. Mỗi một trang duy trì thông tin phân trangcủa tác vụ. Giới hạn và thuộc tính PLA kiểm tra phân
Kĩ Thuật Vi Xử Lí Page 19
đoạn giới hạn và thuộc tính ở mức phân đoạn để tránh không hợp lệ truy cập vào mã và dữ liệu trong phân đoạn bộ nhớ.
. Thiết bị điều khiển Bus có prioritizer để giải quyết priorityof yêu cầu bus khác nhau.
Này kiểm soát truy cập của bus. Trình điều khiển địa chỉ lái một chiếc xe buýt cho phép và tín hiệu địa chỉ A0 - A31. Ống dẫn và động cỡ bus đơn vị xử lý tínhiệu điều khiển liên quan.
. Dữ liệu vùng đệm tiếp giáp bus dữ liệu bên trong với bus hệ thống..
Chương 4 : Mô hình lập trình của vi xử lí80386.
4.1 Các thanh ghi của vi xử lí 80386.
4.1.1 Thanh ghi đa năng, thanh ghi con trỏ, thanh ghi cơ sở.
Tám thanh ghi chung 16bit: AX, BX, CX, DX, SP, BP, BI, SI của mô hình lập trình 8086/8088 đã được mở rộng đến 32bit và chúng được gọi là EAX, EBX, ECX, EDX, ESP, EBP, EBI, ESI. Phần 16 bít thấp cung các byte cao và thấp trong các thanh ghi mở rộng vẫn giữ như cũ là AH và AL số bít cờ trong thanh ghi cờ cũng nhiều hơn.
EAX AH AL
EBX BH BL
ECX CH CL
EDX DH DLKĩ Thuật Vi Xử Lí Page 20
ESI SI
EDI DI
EBP BP
ESP SP
Con trỏ lệnh IP của 8086 đã được mở rộng thành 32bit. Và
được gọi là EIP. Thanh ghi cờ Flags 16bit cũng được mở
rộng thành 32bit và được gọi là EFLAG. Thanh ghi EFLAGS
bao gồm 16bit thấp có nghĩa như Flags của 8086/8088.
VM:Chế độ ảo
TF:Cờ bẫy
RF:Cờ hồi phục
SF:Cờ dấu
NT:Cờ lồng nhiệm vụ
ZF:Cờ zero
I/O PL:Mức đăc quyền
AF:Cờ nhớ phụ
OF:Cờ tràn
PF:Cờ chẵn lẻ
DF:Cờ hướng
CF:Cờ nhớ
IF:Cờ ngắt
Kĩ Thuật Vi Xử Lí Page 21
4.1.2 Thanh ghi điều khiển.
Là thanh ghi điều khiển 32 bít như các thanh ghi kháccủa vi xử lý 32 bít này. Gồm các bộ phận :CR0, CR1, CR2 , CR3 .Trong đó
+ CR0 :TS .EM , MP ,PE
+ CR1: có nhiệm vụ dự trữ
+ CR2: địa chỉ tuyến tính trang nhớ có lỗi
+ CR3 : 20 bít địa chỉ cơ sở thư mục trang nhớ và 11
bít dự trữ
4.1.3 Thanh ghi đoạn.
Phần hở 16 bít
Phần kín
(Được nạp bởi chương trình)
(Được vi xử lý nạp tự động) Bộ chọn đoạn
Quyền truy nhập Địa chỉ cơ sở Độ dài
16 bít
12 bít 32 bít 28bit
CS
DS
SS
Kĩ Thuật Vi Xử Lí Page 22
ES
FS
GS
4.1.4 Thanh ghi kiểm tra và gỡ rối.
DR0 Địa chỉ tuyến tính của điểm
dừng 0
DR1 Địa chỉ tuyến tính của điểm
dừng 1
DR2 Địa chỉ tuyến tính của điểm
dưng 2
DR3 Địa chỉ tuyến tính của điểm
dừng 3
DR4 Dự trữ
DR5 Dự trữ
TR6 Từ điều khiển kiểm tra
TR7 Từ trạng thái kiểm tra
16 bít thấp của thanh ghi điều khiển CR0 là từ trang
thái máy MSW .Vi xử lý 80386 cũng chuyển sang chế độ
Kĩ Thuật Vi Xử Lí Page 23
bảo vệ bằng việc đặt bít LSB của thanh ghi này tới
1 .Thanh ghi CR1 được dự trữ và thanh ghi CR2 và CR3
được dùng cho chế độ bảo vệ trang.
- Thanh ghi quản lý bộ nhớ : gồm có các thanh ghi
GDTR, LDTR, IDTR, TR, có chức năng giống như bộ vi xử
lý 80286 chỉ khác ở chỗ :đại chỉ cơ sở 32 bít và giá
tri giới hạn là 20 bít
- Thanh ghi trạng thái SR và thanh ghi điếm chương
trình :cũng được nâng lên 32 bít gồm 16 bít thấp như
trong VXL 80286 và 16 bít cao.
4.2 Các tín hiệu ngắt.
4.2.1 Các tín hiệu xác định chu kì bus.
đây là tín hiệu ra 3 trạng thái ,xác định các loại
chu kì bus W/R phân biệt giữa chu kì ghi và đọc .D/C
phân biệt giữa chu kì số liệu va chu kì điều
khiển .M/IO phân biệt giữa chu kì nhớ và cổng vào
ra .Bảng sau chỉ ra các chu kì bus tương ứng với các
tín hiệu trạng thái
M/IO D/C W/R Chu kì bus LOCK0 0 0 Trả lời ngắt Có0 1 1 Không sảy ra -0 0 0 Đọc vào ra Không0 1 1 Viết vào ra Không
Kĩ Thuật Vi Xử Lí Page 24
1 0 0 Đọc mã lệnh Không1 0 1 Dừng Không1 0 1 Đọc bộ nhớ Có một số chu kì1 1 1 Viết bộ nhớ Có một số chu kì.
4.2.2 Các tín hiệu điều khiển bus.
+ ADS là tín hiệu ra 3 trạng thái , cho biết chu kì
bus bắt đầu và các tín hiệu W/R, D/C, M/IO, BEO-
BE3 ,A2-A31 được đưa ra các chân xử lý
+ REALY là tín hiệu vào , cho biết chu kì bus đã kết
thúc .
+ NA (next address) là tín hiệu vào dùng cho phương
pháp định địa chỉ đường ống .mức tích cực thấp báo
cho CPU biết là hệ thống đã sẵn sàng , nhận giá trị
mới của các tín hiệu W/R, D/C, M/IO, BEO-BE3,A2-A31,
mặc dù chu kì bus hiện hành chưa được trả lời bằng
tín hiệu REALY=0.
+ BS16 là tín hiệu vào , cho phép vi xử lý nối với
bus số liệu 32 hoặc 16 bít .Khi BS16=0, làm cho chu
kì hiện hành chỉ sử dụng 16 bít thấp của bus số liệu
D0-D15 (tương ứng với BEO-BE1) .Nếu trong chu kì hiện
tại BEO=0 và BE1=0 thì đưa tín hiệu BS16=0 không ảnh
Kĩ Thuật Vi Xử Lí Page 25
hưởng .Nhưng nếu BE2=0 mà đưa tín hiệu BS16=0 thì CPU
sẽ tự động thích nghi để chuyển các byte này sang D0-
D15.Tín hiệu BS16 không đươc ở mức tích cực trong chu
kì làm việc với bộ đồng xử lý .
4.2.3 Các tín hiệu trọng tài bus.
+ HOLD là tín hiệu vào do một thiết bị chủ khác đưa
đến yêu cầu làm chủ bus .Nếu đồng thời có cả tín hiệu
RESET thì tín hiệu đó sẽ có độ ưu tiên lớn hơn .
+ HLDA 80386 đưa ra tín hiệu này để trả lời tín hiệu
HOLD và chuyển về trạng thái ‘trả lời HOLD” .Ở trạng
thái này vi xử lý chỉ điều khiển tín hiệu HLDA còn
tất cả các tín hiệu ra 2 chiều khác đều ở trạng thái
trở kháng cao. 80386 cũng có 2 chế độ hoạt động ,chế
độ thực và chế độ bảo vệ. Ngoài ra còn có một chế độ
hoạt động 8086 ảo cho phép dễ dàng chuyển qua lại
giữa các nhiệm vụ trong chế độ bảo vệ và chế độ thực.
Các thanh ghi trong 80386 vì dài 32 bít nên được kí
hiệu them chữ E (extended) ở đầu , ví dụ EAX, EBX…
Một đặc điểm mới là 80386 có các thanh ghi gỡ rối.
Một bộ phận gỡ rối mềm có thể nạp các địa chỉ điểm
dừng trong chúng để hỗ trợ cho việc gỡ rối . 80386 có
thể được ra lệnh “dừng” khi đơn vị địa chỉ trong bộ
xử lý tính toán một địa chỉ tuyến tính trùng hợp với
một trong các địa chỉ ở các thanh ghi gỡ rối. Kĩ Thuật Vi Xử Lí Page 26
4.3 Tổ chức bộ nhớ.
4.3.1 Tổ chức phân đoạn.
Chia bộ nhớ thành từng đoạn riêng biệt dành cho mã
lệnh , số liệu và ngăn xếp. Điều này cho phép nhiều
chương trình chạy cùng lúc mà không ảnh hưởng lẫn
nhau . Tổ chức phân đoạn rất tiện lợi cho việc lập
trình mô-dun , là công cụ hữu dụng cho người lập
trình ứng dụng.
4.3.2: Tổ chức phân trang.
Sử dụng bộ nhớ ảo gồm nhiều trang có kích thước nhỏ
và cố định .Do đó chỉ một phần chương trình đang chạy
được đặt vào bộ nhớ khi cần thiết.Điều này cho phép
tách biệt các nhiệm vụ đang cùng chạy một lúc .Tổ
chức theo trang thì thuận lợi cho việc lập trình hệ
thống khi cần quản lý bộ nhớ vật lý.
Quản lý bộ nhớ trong 80386 còn cho phép tạo một chế
độ 8086 ảo là một nhiệm vụ đặc biệt chạy trong chế độ
bảo vệ .Lúc này bộ VXL mô phỏng hoàn toàn vi xử lý
8086 và như vậy cho phép nhiều chương trình 8086 ảo
có thể chạy song song đồng thời .Do các thế hệ vi xử
lý 486 và pentium tiếp theo cũng làm việc trên nguyên
tắc này nên chế độ bảo vệ và quản lý bộ nhớ của VXL
Kĩ Thuật Vi Xử Lí Page 27
80386 được tìm hiểu chi tiết là một việc làm cần
thiết.
4.3.3 : Chế độ bảo vệ phân đoạn
a. Các khái niệm cơ bản.
Đoạn nhớ và các mức đặc quyền: chế độ bảo vệ phân đoạn
trong 80386 cũng giống như trong 80286. Một trong
những xuất phát điểm của việc phân đoạn bộ nhớ là do
yêu cầu bảo vệ các nhiệm vụ khác nhau trong các
chương trình. Giải pháp tổng quát cho bộ nhớ lúc này
là định nghĩa nhiều không gian địa chỉ hoàn thành độc
lập gọi là các đoạn nhớ cho mỗi nhiệm vụ. mỗi giai
đoạn gồm các địa chỉ tuyến tính kế tiếp nhau từ 0 đến
giá trị tối đa. Như vậy mỗi đoạn có độ dài xác định,
chiều dài này có thể thay đổi trong thời gian thực
thi chương trình.
Kĩ Thuật Vi Xử Lí Page 28
Hình 11 Cách tổ chức hệ phân cấp đặc quyền
Giống như trong 80286, mỡi đoạn nhớ cũng được gán cho
một trong bốn mức đặc quyền được đánh số từ 0-3 với
mức đặc quyền giảm dần như chỉ ra trên hình 2.23.mức
đặc quyền gán cho một chương trình cho biết một
chương trình có thẩm quyền là những gì khi nó được
thực hiện một nhiệm vụ.
Mức 0 là mức đặc quyền cao nhất gồm các chương trình
quản lý tài nguyên hệ thống và bộ nhớ.Lõi phải gọn,
có khả năng vận hành tốt, không bị hỏng do phần mềm
khác. Các chương trình con trong BIOS thuộc loại này.
Mức một gồm các phần mềm liên quan đến các phần mềm
hệ thống quản lý thiết bị và các cổng vào ra, thiết
lập múc ưu tiên giữa các nhiệm vụ, làm thuận toán
tráo đổi (swapping) và các trình điều khiển thiết bị.
Kĩ Thuật Vi Xử Lí Page 29
Mức 2 bao gồm các chương trình quản lý tập tin, các
thư viện. các chương trình hệ điều hành thuộc mức
này.
Mức 3 dàn cho các chương trình ứng dụng là mức thấp
nhất.
Hệ phân cấp này quy định chương trình có thể thâm
nhập vào bất cứ nhiệm vụ nào có mức đặc quyền thấp
hơn nhưng để nhẩy vào một nhiệm vụ có mức đặc quyền
cao hơn thì chương trình phải qua bộ mô tả cửa nếu
không sễ xẩy ra ngoại lệ.
Hệ thống phân biệt trạng tháy các mức đặc quyền như
sau:
Mức đặc quyền yêu cần RPL là giá trị các bít RPL được lưu
giữ tại thanh ghi đoạn (bột chọn)
Mức đặc quyền hiện tại CPL của một nhiệm vụ đang thực
hiện, có giá trị bằng mức đặc quyền của đoạn lệnh
đang chạy.nó chính là các bít RPL của bộ chọn đoạn
đang chạy. Bộ sử lý có thể thay đổi CPL nếu điều
khiển chương trình được chuyển cho một đoạn mã lệnh
có mức đặc quyền khác.
Mức đặc quyền bộ mô tả DPL là mức đặc quyền thấp nhất,
cần có để nhiệm vụ có thể thâm nhập vào bộ mô tả.là
giá trị lưu giữ tại trường DPL trong bộ mô tả đoạn.
đó là mức đặc quyền của đoạn nhớ cần thâm nhập.
Kĩ Thuật Vi Xử Lí Page 30
Mức đặc quyền hiệu dụng EPL là mức đặc quyền thấp
nhất trong thông số RPL và DPL.
b. Bảng mô tả phân đoạn.
Giống như trong 80286, bảng các bộ mô tả chứa tất cả
thông tin về các đoạn nhớ bằng các bộ mô tả đoạn. có
3 loại bảng: bảng các bộ mô tả toàn cụ GDT, bảng các
bộ mô tả cụ bộ LDT và bảng các bộ mô tả ngắt IDT. Tất
cả các bảng có độ dài từ 8 byte đến 64 kbyte.
- Bảng GDT dài 64 kbyte (8byte x 213=216 byte) có thể
quản lý được 213 đoạn nhớ trong không gian nhớ toàn
cục.không gian này lưu trữ các mã lệnh hệ điều hành
và dữ lieuj hệ điều hành,… trừ bộ mô tả ngắt, bảng
này chứa tất cả các bộ mô tả mà tất cả nhiệm vụ của
hệ thống đều thâm thập được. GDT là một bảng duy
nhất, địa chỉ cơ sở và độ dài GDT được chứa trong
thanh ghi hệ thống GDTR ( thanh ghi bảng các bộ mô tả
toàn cục).
- Bảng LDT được dành riêng cho các mã lệnh, dữ liệu,
ngăn xếp,…của từng nhiệm vụ, chương trình ứng dụng.
Mỗi nhiệm vụ có một bảng bộ mô tả LDT riêng của nó và
do đó chúng không thể truy nhập được vùng nhớ của
nhau. Như vậy có nhiều bảng LDT và mỗi bảng LDT được
xác định bằng một bộ mô tả đoạn LDT trong bảng GDT.Bộ
Kĩ Thuật Vi Xử Lí Page 31
mô tả đoạn LDT chứa địa chỉ cơ sở và độ dài đoạn
LDT.Thông tin này của nhiệm vụ đang thực hiện cũng
được chứa trong thanh ghi hệ thống LDTR (thanh ghi
bảng các bộ mô tả cục bộ).mỗi LDT có thể chứa các bộ
mô tả đoạn lệnh, đoạn số liệu, đoạn ngăn xếp và các
cửa giao dịch kiểu CALL.
Một nhiệm vụ chỉ có thể thâm nhập vào đoạn mà bộ mô
tả của nó được chứa trong bảng LDT đang dùng hay GDT.
Như vậy, các bảng GDT và LDT cho phếp cách ly giữa
các đoạn nhớ thuộc từng nhiệm vụ, nhưng đồng thời
cũng có thể phân chia nhiệm vụ cho từng dữ liệu chung
cho từng nhiệm vụ.
Bảng IDT được dùng để mô tả địa chỉ của 256 ngắt
trong chế độ bảo vệ của bộ sử lý thay cho bảng vécto
ngắt trong chế dộ thực thông thường.địa chỉ cơ sở và
độ dài đoạn được chứa trong thanh ghi hệ thống IDTR (
thanh ghi bảng mô tả ngắt).
Kĩ Thuật Vi Xử Lí Page 32
Hình mô tả mối liên hệ giữa các thanh ghi GDTR, LDTR
và các bảng GDT, LDT.
Các lệnh LGDT, LLDT và LIDT nạp địa chỉ cơ sở và độ
dài của các bảng GDT, LDT và IDT vào các thanh ghi
tương ứng.các lệnh SGDT và SIDT cấp giứ các giá trị
của địa chỉ cơ sở và độ dài của các thanh ghi vào bộ
nhớ. Chỉ có hệ điều hành thao tác với các thanh ghi
trên, vì vậy các lệnh nạp và cất giữ các thanh ghi đó
còn gọi là các lệnh đặc quyền.các lệnh LMSW (nạp từ
trạng thái máy), LTR (nạp phần chọn của thanh ghi
TR), CLTS ( xóa bít chuyển nhiệm vụ TS), HALT ( dừng
Kĩ Thuật Vi Xử Lí Page 33
hoạt động của bộ vi sử lý) cũng thộc về lệnh đặc
quyền.
Riêng lệnh LLDT được dùng để nạp thanh ghi LDTRR có
thể được chạy chỉ bởi các chương trình đang chạy ở
mức đặc quyền cao nhất.do đó trừ khi một nhiệm vụ
đang hoạt động ở mức đặc quyền cao nhất, còn thì nó
không thể thâm nhập bảng bộ mô tả cục bộ của nhiệm vụ
khác được. sự chuyển nhiệm vụ thường được điều khiển
bởi phần lõi của hệ điều hành, phần này hoạt động ở
mức ưu tiên cao nhất.
4.3.4 Các mô tả đoạn và chọn đoạn bộ nhớ.
Mỗi đoạn nhớ có các thông số đặc chưng cho nó được
lưu trữ trong một vùng nhớ 8 byte gọi là bộ mô tả
đoạn có dạng tổng quát gồm các trường 32 bít địa chỉ
cơ sở, 20 bít độ dài đoạn và trường thuộc tính của
các loại như sau:
- Độ dài đoạn: gồm 20 bít biểu thị cho độ dài theo 2
cách tùy thuộc vào giá trị của bít G.
- Nếu G=0, độ dài đoạn nằm giữa 1 byte và 220 = 1
Mbyte tính theo đơn vị byte.
- Nếu G=1, độ dài đoạn ngằm giữa 4 byte tới 232= 4
Gbyte tính theo đơn vị 4 Kbyte = 1 trang. Nếu
chương trình có ý định thâm nhập vùng nhớ ngoài
giứ hạn độ dài này thì sễ xẩy ra ngoại lệ.
Kĩ Thuật Vi Xử Lí Page 34
- Địa chỉ cơ sở đoạn: gồm 32 bít xác định địa chỉ
thấp nhất của byte nhớ trong đoạn nằm trong không
gian địa chỉ tuyến tính 4 Gbyte.
- Các mức đặc quyền DPL: được dùng để kiểm tra quyền
thâm nhập tương ứng với mức đặc quyền của nhiệm vụ
ấy. như vậy trường dài 2 bít này có 4 giá trị từ
002 đến 112.
- TYPE: xác định dạng của đoạn hoặc cửa giao dịch,
xác định kiểu truy nhập và hướng dãng nở của đoạn.
- D: xác định chiều dài của toán hạng. nếu DB=1, địa
chỉ toán hạng sẽ dài 32 bít. Nếu DB=0, đại chỉ
toán hạng dài 16 bít.
- P: cho phếp xác định đoạn có tồn tại trong bộ nhớ
thực hay không. Nếu P =1, đoạn có trong bộ nhớ vật
lý. Nếu P = 0, đoạn không tồn tại và một ngoại lệ
sẽ xẩy ra.
- S: các định loại mô tả. nếu DT=1, đó là loại bộ mô
tả đoạn giữ liệu, nếu DT=0 là bộ mô tả đoạn hệ
thống.
- Các bít còn lại r, vs là dự trữ cho người dùng
hoặc cho hệ điều hành.
- Giống 80286, vi xử lý 80386 cũng có 4 loại bộ mô
tả đoạn:
Kĩ Thuật Vi Xử Lí Page 35
- Bộ mô tả đoạn số liệu: tương tự như dạng tổng
quát, chỉ có byte quyền thâm nhập có giá trị riêng
như sau:
- Bit S=1 để phân biệt với đoạn hệ thống.
- Bit E=1 để phân biệt với đoạn lệnh,
- ED để chỉ chiều phát triển của số liệu. nếu ED=1,
thường chỉ đoạn ngăn xếp. nếu ED=0, chỉ đoạn số
liệu thông thường.
- W=0, đoạn số liệu chỉ đọc được. W=1, có thể cả đọc
và viết.
- Bộ mô tả đoạn lệnh: so với đoạn tổng quát có một
số điểm khác sau:
- S=1.
- E=1.
- C=1, chỉ bằng chương trình có mức đặc
quyền(PL>=DPL) thì có thể gọi đoạn lệnh có bộ mô
tả này.
- R=0, đoạn lệnh không được phép đọc, R=1, đoạn lệnh
có thể đọc.
- Bộ mô tả đoạn hệ thống: mô tả các thông tin về các
bảng của hệ điều hành, về các nhiệm vụ và về các
cửa giao dịch. Trường bit TYPE trong dạng tổng
quát được xác định như sau:
Kiể
u
Định nghĩa Kiể
u
Định nghĩa
Kĩ Thuật Vi Xử Lí Page 36
0 000
0
Không dùng 8 100
0
Không dùng
1 000
1
Đoạn TSS của 286
sẵn sàng
9 100
1
Đoạn TSS 386 sẵn
sàng2 001
0
LDT 1
0
101
0
Dự trữ
3 001
1
Đoạn TSS của 286
bận
1
1
101
1
Đoạn TSS 386 bận
4 010
0
Cửa giao dịch
CALL của 286
1
2
110
0
Cửa giao dịch CALL
3865 010
1
Cửa giao dịch
nhiệm vụ
1
3
110
1
Dự trữ
6 011
0
Cửa giao dịch
ngắt 286
1
4
111
0
Cửa giao dịch ngắt
3867 011
1
Cửa giao dịch bẫy
286
1
5
111
1
Cửa giao dịch bẫy
386
- Bộ mô tả bảng LDT(s=0, TYPE=2) chứa các thông tin
về bảng các bộ mô tả cục bộ LDT. Mỗi nhiệm vụ có một
bảng LDT. Vì lệnh nạp thanh ghi LDTR chỉ được phép ở
mức đặc quyền 0 nên các bít DPL của bộ mô tả của LDT
không có tác dụng. bộ mô tả của LDT chỉ được chứa
trong bảng các bộ mô tả toàn cục GDT.
- Bộ mô tả TSS(S=0, TYPE =1, 3, 9, B): đoạn trạng
thái nhiệm vụ của TSS chứa các trạng thái của một
Kĩ Thuật Vi Xử Lí Page 37
nhiệm vụ. bộ mô tả TSS cho thông tin về vị trí, độ
dài và mức đặc quyền của TSS. Các bit TYPE cho biết
TSS sẵn sàng hay bận và TSS thuộc 80286 hay 80386.
Thanh ghi TR chứa bọ chọn trỏ tới TSS đang chạy.
- Các cửa giao dịch(S=0, TYPE=4 đến 7, C, F): các cửa
giao dịch dùng để diều khiển việc thâm nhập tới các
điểm vào của một đoạn lệnh. Có 4 loại cửa giao dịch:
cửa giao dịch kiểu CALL, cửa giao dịch kiểu ngắt, cửa
giao dịch kiểu bẫy và cửa giao dịch nhiệm vụ. các cửa
giao dịch cung cấp phương tiện cho việc chuyển giao
điều khiển một cách gián tiếp giữa chương trình nguồn
và chương trình đích. Sự chuyển giao này cho phép vi
xử lý thực hiện kiểm tra việc bảo vệ một cách tự
động. nó cũng cho phép người thiết kế hệ thống kiểm
soát các điểm vào của hệ điều hành. Dạng tổng quát
của bộ giao dịch như sau:
+ Cửa giao dịch kiểu CALL thường dùng để chuyển điều
khiển chương trình tới mức đặc quyền cao hơn.Bộ mô tả
cửa CALL có 3 trường thâm nhập đoạn ,bộ chọn trỏ tới
bộ mô tả đoạn lệnh đích và offset để xác định vị trí
trong đoạn đính đó. Trong bộ mô tả cũng chứa 5 bit bộ
đém từ cho biết số thông số cần sao từ ngăn xếp của
chương trình gọi sang chương trình được gọi. chỉ có
bộ mô tả CALL mới có bộ đếm từ.
Kĩ Thuật Vi Xử Lí Page 38
+ Cửa giao dịch kiểu ngắt và kiểu bẫy cung cấp bộ
chọn trỏ tới bộ mô tả lệnh xử lí ngắt và offset để
xác định vị trí bên trong của đoạn lệnh đó. Sự khác
nhau giưa cửa giao dịch kiểu ngắt và kiểu bẫy là ở
chỗ: cửa kiểu ngắt cho phép xóa bit cho kiểu ngắt IF
trong thanh ghi CF còn kiểu bẫy thì không.
+ Cửa giao dịch nhiệmvụ được sử dụng khi có thay đôi
nhiệm vụ. vì cửa giao dịch nhiệm vụ chỉ quy chiếu dến
bảng TSS nên chỉ có bộ chọn tác dụng, còn offset
không dùng. Bộ chọn trỏ tới bộ mô tả TSS.
Byte quyền thâm nhập của cả 4 loại cửa giao dịch là
giống nhau.
+ Bộ chọn đoạn là nội dung chứa trong phần hở 16 bit
của thanh ghi đoạn được nạp bởi chương trình. Phần
kín 64 bit có nội dung được vi xử lý tự động sao chép
từ bộ mô tả đoạn sang gồm 32 bit địa chỉ cơ sở, 20
bit độ dài đoạn và 12 bit quyền thâm nhập.
Giống như trong 80286, 16 bit của bộ chọn được chia
thành 3 trường như sau:
Trường mức đặc quyền: gồm 2 bit RPL với 4 mức đặc
quyền từ 0 đén 3 của đoạn nhớ.
Trường chọn bảng các bộ mô tả TI, nếu TI=0 bộ mô tả
nằm trong bảng GDT, nếu TI=1 bộ mô tả nằm ở bảng LDT.
Trường chỉ số(INDEX) gồm 13 bit trỏ tới một bộ mô tả
đoạn trong GDT hoặc LDT. Tức là cũng có thể có tới
Kĩ Thuật Vi Xử Lí Page 39
chừng ấy các đoạn nhớ với các địa chỉ cơ sở đoạn 32
bit khác nhau. Địa hcir một ô nhớ trong đoạn sẽ là
tổng của địa chỉ cơ sở 32 bit này và địa chỉ lệch
offset 32 bit do chương trình cung cấp. do đó mặc dù
không gian nhớ vật lý của 80386 chỉ có 232=4 Gbyte
nhưng không gian nhớ ảo có thể lên tới 214x232=64
tetrabyte. Tổ hợp của các địa chỉ cơ sơ đoạn và đọ
lệch bên trong các đoạn đó tạo nên thang địa chỉ
tuyến tính trong đoạn, có nghĩa rằng ta có thể tìm
thấy các địa chỉ lớn hơn trong các vùng cao hơn của
bộ nhớ.
4.4 Không gian nhớ.
80386 có 3 loại địa chỉ :
+ Địa chỉ lôgic hay còn được gọi là địa chỉ ảo :địa
chỉ logic co 2 phần là bộ chọn và độ lệch offset.Bộ
chọn là nội dung của các thanh ghi đoạn .Offset được
tạo nên từ tổng thể của 3 thành phần : địa chỉ cơ
sở , chi số và độ dịch chuyển (base , index và
displasement).Mỗi nhiệm vụ có nhiều nhất 214=16 k bộ
chọn .Offset là một só 32 bít có thể lớn đến 232 =4
Gbyte .Như vậy ,một nhiệm vụ có cực đại 214 x 232
=246 = 64 Gbyte.Trong khi không gian địa chỉ vật lý
của 80386 là 4Gbyte thì không gian địa chỉ logic là
64Gbyte.
Kĩ Thuật Vi Xử Lí Page 40
+ Đơn vị quản lý đoạn chuyển đỉa chỉ logic thành 32
bít địa chỉ tuyến tính .Nếu đơn vị quản lý trang
không được phép thì 32 bít địa chỉ tuyến tính này
tương ứng với các địa chỉ vật lý xuất hiện ở các chân
địa chỉ của 80386 .Nếu đơn vị quản lý trang được phép
thì nó sẽ chuyển 32 bít địa chỉ tuyến tính thành các
địa chỉ trang.
4.5 Chế độ của vi xử lí 80386.
4.5.1 Chế độ 8086 thực.
Một khó khăn chính là khi thiết kế 386 là làm thế nào
vừa nâng cao khả năng của 386 lại vừa tương thích với
các phần mền 8088/86 xây dựng trên cơ sở MS DOS ở chế
độ bảo vệ. Để giải quyết vấn đề này ,người ta bổ cho
80386 .Ở chế độ ảo 8086 ,386 phân chia bộ nhớ thành
từng phần 1Mb ,mổi phần được gắn với nhiệm vụ .Từng
nhiêm vụ được chạy nếu đó là một chương trình 8086
của bộ vi xử lý 386 cho phép bất cứ chương trình nào
được viết cho DOS đều chạy được không phải thay đổi
của từng nhiệm vụ mà nhiệm vụ đó có riêng 1 Mb bộ nhớ
.Điều đó có nghĩa là ở chế độ ảo 8086 ,386 sử dụng
khái niệm SEG:OFFSET ở bộ vi xử lý 8086/386.
Cả hai hệ điều hành , MS WINDOWS 3x và IBM OS /2 2.0
đều sử dụng chế độ ảo 8086 của 80386 .Các hệ điều
Kĩ Thuật Vi Xử Lí Page 41
hành sử dụng chế độ ảo 8086 của 386 để chạy nhiều
chương trình được viết cho 8088/86 .Điểm khác nhau
giửa chúng là với MS WINDOWS ,tại một thời điểm chỉ
có một nhiệm vụ được kích hoạt và tất cả các nhiệm vụ
khác nghỉ ,còn ở OS /2 2.0 mổi nhiệm vụ đều chiếm một
phần thời gian của CPU và nhiều nhiệm vụ có thể được
kích hoạt đồng thời .Ví dụ , trong khi đang thực hiện
xử lý văn bản thì FAX/Modem vẫn nhận và gửi dử liệu ,
một chương trình bảng tính như LOTUS 123 vẩn tiến
hành một số phép toán ,đồng thời đĩa mền củng đang
được định dạng .Tất nhiên, do chỉ có một bộ vi xử lý
nên công việc của hệ điều hành OS /2 2.0 lấy một phần
thời gian của CPU cho từng nhiện vụ theo phương thức
quay vòng .Nếu có quá nhiều nhiệm vụ và tất cả đều
cùng được kích hoạt thì sẽ làm các chương trình chạy
chậm lại bởi vì mổi nhiệm vụ có được ít thời gian của
CPU hơn .Tất nhiên có giải pháp khắc phục việc chương
trình bị chạy chậm là sử dụng các CPU hơn .Tất nhiên
có giải pháp khắc phục chương trình bị chảy chậm là
sử dụng các CPU có tốc độ cao 60 – 80 MHz như Pentium
chẳng hạn . Chú ý rằng ,trong khi OS/2 2.0 sử dụng
khả năng đa
nhiệm độc lập thì Windows 3.x lại sử dụng khả năng đa
nhiệm phối hợp , hai hoặc nhiều ứng dụng phối hợp với
Kĩ Thuật Vi Xử Lí Page 42
từng ứng dụng khác đương chạy để tận dụng CPU xen
kẽ . Nếu có một ứng dụng bị bỏ qua thì có thể gây ra
toàn hệ thống bị xung đột. Ở chế độ đa nhiệm riêng rẽ
,mổi nhiệm vụ có thể được chương trình khác ngắt
riêng tai một điểm bất kỳ .Nếu một nhiệm vụ bị một
chương trình khác ngắt thì trang thai hiện hành sẽ
được hệ điều hành lưu lại và nó lại tiếp tục được
phục vụ sau khi nhiệm vụ mới được trao quyền sử dụng
cho CPU.
80386 chuyển tới chế độ 8086 ảo để chạy trong một
khoảng thời gian dành cho chương trình loại 8086 và
rồi dễ dàng quay về chế độ bảo vệ để chạy trong
khoảng thời gian dành cho nhiệm vụ hoạt động trong
chế độ bảo vệ. Điều này có nghĩa rằng một vài người
dùng trong hệ thống đa người dùng có thể chạy các
chương trình trong chế độ bảo vệ trng khi các người
dùng khác có thể đang chạy các chương trình DOS trong
chế độ thực. Khi 386 đang chạy trong chế độ bảo vệ
thực hiện chuyển nhiệm vụ, nó kiểm tra bit VM trong
thanh ghi cờ. Nếu bit này được đặt lên 1, 386 sẽ nhảy
vào chế độ 8086 ảo để thực thi nhiệm vụ mới.
Dưới đây tóm tắt tiến trình chuyển sang chế độ 8086
ảo trong các trường hợp:
Kĩ Thuật Vi Xử Lí Page 43
- Chuyển nhiệm vụ và đặt cờ VM= 1 cuả EFLAGS được
lưu trữ trong TSS. Chuyển nhiệm vụ được thực hiện
theo 2 cách: dùng lệnh CALL hay JMP, dùng lệnh
IRET khi cờ NT của EFLAGS lưu trữ trong TSS bằng
1.
- Quay lại từ một chương trình xử lý ngắt hay ngoại
lệ và đặt cờ VM= 1
4.5.2: Chế độ thực của 80386
Trước hết chúng ta sẽ xem xét bộ vi xử lý Inteln
80186 và các đặc điểm của chúng theo khía cạnh lập
trình chế độ thực.Bộ vi xử lý 80386 đã khởi đầu cho
một khuynh hướng mới củ họ 80x86. Bộ vi xử lý này
tương thích với 8088/86 và 286, song cấu trúc bên
trong có nhiều thay đổi. Dưới đây sẽ nêu một số nét
chính của 80386.
1.Bus dữ liệu tang từ 16 bit lên 32 bit cả bên
trong và bên ngoài.
2.Tất cả các thanh ghi đều mở rộng tới 32 bit vì
thế 80386 là bộ vi xử lý 32 bit.
3.Bus địa chỉ được tăng lên 32 bit do đó có khả
năng nâng bộ nhớ vật lý nên 4GB.
4.Bổ sung cơ chế bộ nhớ ảo phân trang. Như vậy 386
vừa có chế độ phân trang vừa có chế độ phân đoạn.
Kĩ Thuật Vi Xử Lí Page 44
5.Bổ sung thêm chế độ địa chỉ mới gọi là chỉ số tỷ
lệ (scale index).
6.Nhiều lệnh thao tác bit mới được bổ sung. Các
lệnh này làm việc được ở cả chế độ thực và chế độ
bảo vệ.
7.386 có thể chuyển từ chế độ bảo vệ sang chế độ
thực bằng phần mềm. Đây là một phát triển so với
286 (286 phải thực hiện bằng phần cứng dùng
RESET).
Để giảm giá thành thiết kế board mạch, hãng Intel đã
sản xuất bộ vi xử lý 80386SX có bus dữ liệu ngoài 16
bit, bus nội bộ 32 bit và tương thích 100% với 80386.
Về tốc độ 386SX chậm hơn so với 386 bởi vì nó cần đến
2 chu trình nhớ (mỗi chu trình cần 2 nhịp đồng hồ) để
đánh địa chỉ 32 bit chứ không phải là một chu trình
nhớ như trong trường hợp 80386.
Ở chế độ thực, 80386 sử dụng các chân địa chỉ A19-A0
và có thể truy nhập tối đa 1MB. Tuy nhiên, trong chế
độ bảo vệ 386 có thể truy nhập tới 4GB bộ nhớ thông
qua bus địa chỉ 32bit.
Chương 5 : Chế độ định địa chỉ của vi xử lí 80386.
Chế độ địa chỉ Toán hạng Đoạn ngầm định
Kĩ Thuật Vi Xử Lí Page 45
Thanh ghi
(Register)
Thanh ghi
(Register)
None
Tức thì
(Immediate)
Dữ liệu (Data) None
Trực tiếp (Direct) Độ dời ([OFFSET]) DSThanh ghi gián
tiếp (Register
indirect)
[BX]
[SI]
[DI]
[EAX]
[EBX]
[ECX]
[EDX]
[ESI]
[EDI]
DS
DS
DS
DS
DS
DS
DS
DS
DSQuan hệ cơ sở
(Based relative)
[BX]+disp
[BP]+disp
[EAX]+disp
[EBX]+disp
[ECX]+disp
[EDX]+disp
[EBP]+disp
DS
SS
DS
DS
DS
DS
SSQuan hệ chỉ số
(Indexed relative)
[DI]+disp
[SI]+disp
[EDI]+disp
[ESI]+disp
DS
DS
DS
DSQuan hệ chỉ số cơ [R1][R2]+disp Nếu sử dụng BP
Kĩ Thuật Vi Xử Lí Page 46
sở (Based indexed
relative)
[R1] và [R2] là
bất cứ toán hạng
nào nêu trên
thì đoạn là SS,
với các thanh ghi
khác thì sử dụng
đoạn DS.
5.1 Chế độ định địa chỉ thanh ghi.
Vi xử lí 80386 ( Và sau này ) bộ xử lý cung cấp
32 thanh ghi bit. Tám thanh ghi đa năng tất cả có
tương đương 32 bit. Chúng là EAX, EBX, ECX, EDX,
ESI, EDP, EBP.
ở chế độ định địa chỉ này người ta dùng các thanh
ghi bên trong CPU như các toán hạng. Chứa dữ liệu
đến lệnh cần thao tác. Nên tốc độ truy cập nhanh.
Ví dụ: MOV EBX, EDX : chuyển nội dung của EDX vào
EBX.
5.2 Chế độ định địa chỉ gián tiếp qua thanh ghi.
Trên 80386 bạn có thể xác định bất kỳ máy thu phát 32
bit thanh ghi khi sử dụng thanh ghi gián tiếp chế độ
định địa chỉ. [EAX ], [EBX ], [ECX], [EDX], [ESI], và
[EDI ] tất cả cung cấp khoảng địa chỉ độ lệch, theo
mặc định, vào đoạn dữ liệu. [EBP ] và [ESP ] kiểu địa
chỉ sử dụng đoạn ngăn xếp theo mặc định. Lưu ý rằng
trong khi chạy trong 16 bit thực sự chế độ trên
Kĩ Thuật Vi Xử Lí Page 47
80386, khoảng chênh trong 32 bit thanh ghi này vẫn
phải ở phạm vi 0. .. 0 FFFFh. Bạn không thể giá trị
sử dụng lớn hơn này hơn để truy cập K hơn 64 trong
phân đoạn. Cũng lưu ý rằng bạn phải sử dụng 32 bit
tên của thanh ghi. Bạn không thể sử dụng 16 bit tên.
Lệnh sau biểu diễn tất cả hình thức hợp lệ:
(On the 80386 you may specify any general purpose 32
bit register when using the register indirect
addressing mode. [eax], [ebx], [ecx], [edx], [esi],
and [edi] all provide offsets, by default, into the
data segment. The [ebp] and [esp] addressing modes
use the stack segment by default. Note that while
running in 16 bit real mode on the 80386, offsets in
these 32 bit registers must still be in the range
0...0FFFFh. You cannot use values larger than this to
access more than 64K in a segment. Also note that you
must use the 32 bit names of the registers. You
cannot use the 16 bit names. The following
instructions demonstrate all the legal forms)
Mov al, [eax]Mov al, [ebx]Mov al, [ecx]Mov al, [edx]Mov al, [esi]Mov al, [edi]Mov al, [ebp]
Kĩ Thuật Vi Xử Lí Page 48
Mov al, [esp]
5.3 Chế độ đinh địa chỉ bộ nhớ (Memory Addressing Modes).
Bộ xử lý khái quát hoá đánh chế độ đinh địa chỉ bộ
nhớ. Xét vì 8086 chỉ cho phép bạn sử dụng BX hoặc BP
khi thanh ghi cơ sở và SI hoặc DI khi thanh ghi chỉ
mục, 80386 cho phép bạn sử dụng hầu hết các 32 bit
thanh ghi làm cơ sở hoặc chỉ mục thanh ghi. Hơn nữa,
80386 giới thiệu mới quy mô địa chỉ có chỉ mục chế độ
đơn giản hóa truy cập phần tử của mảng. Ngoài tăng
lên 32 bit, mới kiểu địa chỉ trên 80386 có lẽ là cải
tiến lớn nhất đến chip trên bộ xử lý trước đây.
(The 80386 processor generalized the memory
addressing modes. Whereas the 8086 only allowed you
to use bx or bp as base registers and si or di as
index registers, the 80386 lets you use almost any
general purpose 32 bit register as a base or index
register. Furthermore, the 80386 introduced new
scaled indexed addressing modes that simplify
accessing elements of arrays. Beyond the increase to
32 bits, the new addressing modes on the 80386 are
probably the biggest improvement to the chip over
earlier processors ).
Kĩ Thuật Vi Xử Lí Page 49
5.4 Chế độ định địa chỉ Chỉ mục, Cơ sở / Chỉ mục, và Cơ sở / Chỉ mục (Indexed, Base/Indexed, and Base/Indexed/Disp Addressing Modes).
Chế độ địa chỉ có chỉ mục ( thanh ghi gián tiếp cộng
chuyển động ) cho phép bạn trộn 32 bit đăng ký ở chỗ
hằng số. Cơ sở / địa chỉ có chỉ mục chế độ để cho bạn
ghép đôi lên hai phần 32 bit thanh ghi. Cuối cùng, cơ
sở / chỉ mục / chuyển động kiểu địa chỉ để cho bạn tổ
hợp hằng số và hai thanh ghi để tạo thành địa chỉ hiệu
quả. Lưu ý rằng khoảng chênh tạo ra bởi tính toán địa
chỉ hiệu quả vẫn phải được 16 bit dài khi vận hành
trong chế độ thực.
Trên 80386 thanh ghi cơ sở thuật ngữ và thanh ghi chỉ
mục thực sự nhận một số nghĩa là. Khi tổ hợp hai phần
32 bit thanh ghi trong chế độ định địa chỉ, thanh ghi
đầu tiên là thanh ghi cơ sở và thanh ghi giây là thanh
ghi chỉ mục. Đây là đúng bất kể tên thanh ghi. Lưu ý
rằng 80386 cho phép bạn cũng dùng thanh ghi như cả hai
cơ sở và chỉ mục thanh ghi, thực ra là hữu ích khi có
dịp. Lệnh sau cung cấp đại diện các mẫu cơ sở khác nhau
và chế độ địa chỉ có chỉ mục cùng với phiên bản cú pháp
:
mov al, disp[eax] ;Indexed addressingmov al, [ebx+disp] ; modes.mov al, [ecx][disp]mov al, disp[edx]mov al, disp[esi]
Kĩ Thuật Vi Xử Lí Page 50
mov al, disp[edi]mov al, disp[ebp] ;Uses SS by default.
mov al, disp[esp] ;Uses SS by
default.
Lệnh sau tất cả sử dụng cơ sở + địa chỉ có chỉ mục
chế độ. Thanh ghi đầu tiên trong toán hạng giây là
thanh ghi cơ sở, giây là thanh ghi chỉ mục. Nếu thanh
ghi cơ sở là ESP hoặc EBP địa chỉ hiệu quả là tương
đối đến đoạn ngăn xếp. Mặt khác địa chỉ hiệu quả là
tương đối đến đoạn dữ liệu. Lưu ý rằng lựa chọn của
thanh ghi chỉ mục chẳng ảnh hưởng đến lựa chọn của
phân đoạn mặc định.
mov al, [eax][ebx] ;Base+indexed addressingmov al, [ebx+ebx] ; modes.mov al, [ecx][edx]mov al, [edx][ebp] ;Uses DS by default.mov al, [esi][edi]mov al, [edi][esi]mov al, [ebp+ebx] ;Uses SS by default.mov al, [esp][ecx] ;Uses SS by default.
Bạn có thể thêm chuyển động vào bên trên gửi chế độ
đến tạo ra cơ sở + chỉ mục + chuyển động chế độ định
địa chỉ. Lệnh sau cung cấp đại diện mẫu có thể kiểu
địa chỉ :
Kĩ Thuật Vi Xử Lí Page 51
mov al, disp[eax][ebx] ;Base+indexed addressingmov al, disp[ebx+ebx] ; modes.mov al, [ecx+edx+disp]mov al, disp[edx+ebp] ;Uses DS by default.mov al, [esi][edi][disp]mov al, [edi][disp][esi]mov al, disp[ebp+ebx] ;Uses SS by default.
mov al, [esp+ecx][disp] ;Uses SS by default.
Có một hạn chế vị trí 80386 trên thanh ghi chỉ mục.
Bạn không thể sử dụng ESP là thanh ghi với tư cách
một thanh ghi chỉ mục. có thể sử dụng ESP là như
thanh ghi cơ sở, nhưng không như thanh ghi chỉ mục.
Phụ lụcTài liệu tham khảo :
1. Intel 80386 Programmer’s Reference Manual.2. Introduction to 80386 assembly language.3. Principles of Computer Hardware - Alan Clements4. https://courses.engr.illinois.edu/ece390/books/artofasm/
CH04/CH04-3.html#HEADING3-1
Kĩ Thuật Vi Xử Lí Page 52