Cấu truc VXL 80386 của Intel

52
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG Khoa: 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Í 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