Cấu truc VXL 80386 của Intel

October 17, 2017 | Autor: Bảo Việt Dương | Categoría: Physics
Share Embed


Descripción

Kĩ Thuật Vi Xử LíPage 35





HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Khoa: Công nghệ thông tin



TÌM HIỂU VI XỬ LÍ 80386 CỦA INTELTÌM HIỂU VI XỬ LÍ 80386 CỦA INTEL
TÌM HIỂU VI XỬ LÍ 80386 CỦA INTEL
TÌM HIỂU VI XỬ LÍ 80386 CỦA INTEL




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:
Hoàng Nhàn Phương.
Dương Bảo Việt.








Hà Nội: 10/2014



Mục Lục
Chương 1: Tổng quan về vi xử lí Intel.
Vi xử lí Intel 32bit.
Chương 2 : Kiến trúc IA-32 ( x86)
Khái niệm.
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ớ.
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).













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.
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.
Độ 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:
Độ 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.

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).

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.
1.2 Vi xử lí Intel 32 Bit
Vi 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.
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.
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.
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ớ .


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.
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:
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).
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.
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.
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.
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).
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.
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.
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.
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ớ.
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.
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.
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.
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.
HOLD: yêu cầu tác động DMA ( giống như trong 8088/8086)
HLDA: chỉ ra rằng 80386 đang trong trạng thái HOLD.
PEREQ#: yêu cầu 80386 kết nối với 80387.
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.
ERROR: chỉ cho vi xử lí rằng lỗi xuất hiên ở vi xử lí 80387.
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.
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.

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.
. Đằ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ại mức trang. Mỗi một trang duy trì thông tin phân trang của tác vụ. Giới hạn và thuộc tính PLA kiểm tra phân đ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ín hiệ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 DL
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
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ác củ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
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ế độ 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
LOCK
0
0
0
Trả lời ngắt

0
1
1
Không sảy ra
-
0
0
0
Đọc vào ra
Không
0
1
1
Viết vào ra
Không
1
0
0
Đọc mã lệnh
Không
1
0
1
Dừng
Không
1
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 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.
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 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.

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ị.
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.
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ộ 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).

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 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ệ.
Đị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:
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
0
0000
Không dùng
8
1000
Không dùng
1
0001
Đoạn TSS của 286 sẵn sàng
9
1001
Đoạn TSS 386 sẵn sàng
2
0010
LDT
10
1010
Dự trữ
3
0011
Đoạn TSS của 286 bận
11
1011
Đoạn TSS 386 bận
4
0100
Cửa giao dịch CALL của 286
12
1100
Cửa giao dịch CALL 386
5
0101
Cửa giao dịch nhiệm vụ
13
1101
Dự trữ
6
0110
Cửa giao dịch ngắt 286
14
1110
Cửa giao dịch ngắt 386
7
0111
Cửa giao dịch bẫy 286
15
1111
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 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ừ.
+ 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 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.
+ Đơ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 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 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:
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.
Bus dữ liệu tang từ 16 bit lên 32 bit cả bên trong và bên ngoài.
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.
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.
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.
Bổ sung thêm chế độ địa chỉ mới gọi là chỉ số tỷ lệ (scale index).
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ệ.
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
Thanh ghi (Register)
Thanh ghi (Register)
None
Tức thì (Immediate)
Dữ liệu (Data)
None
Trực tiếp (Direct)
Độ dời ([OFFSET])
DS
Thanh ghi gián tiếp (Register indirect)
[BX]
[SI]
[DI]
[EAX]
[EBX]
[ECX]
[EDX]
[ESI]
[EDI]
DS
DS
DS
DS
DS
DS
DS
DS
DS
Quan 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
SS
Quan hệ chỉ số (Indexed relative)
[DI]+disp
[SI]+disp
[EDI]+disp
[ESI]+disp
DS
DS
DS
DS
Quan hệ chỉ số cơ sở (Based indexed relative)
[R1][R2]+disp
[R1] và [R2] là bất cứ toán hạng nào nêu trên
Nếu sử dụng BP 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 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]
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 ).
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 addressing
mov al, [ebx+disp] ; modes.
mov al, [ecx][disp]
mov al, disp[edx]
mov al, disp[esi]
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 addressing
mov 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ỉ :
mov al, disp[eax][ebx] ;Base+indexed addressing
mov 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ục
Tài liệu tham khảo :
Intel 80386 Programmer's Reference Manual.
Introduction to 80386 assembly language.
Principles of Computer Hardware - Alan Clements
https://courses.engr.illinois.edu/ece390/books/artofasm/CH04/CH04-3.html#HEADING3-1



Lihat lebih banyak...

Comentarios

Copyright © 2017 DATOSPDF Inc.