Tải bản đầy đủ (.docx) (24 trang)

Nghiên cứu tìm hiểu về vi mạch đồng sử lý toán học 8087 80287 80387

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (672.53 KB, 24 trang )

LỜI NÓI ĐẦU
Khoa học phát triển ngày càng mạnh mẽ, nhu cầu sử dụng về công nghệ
ngày càng cao, yêu cầu về độ chính xác, năng suất hoạt động cao. Từ những yêu
cầu đó con người phải sản xuất phát minh ra những công cụ, sản phẩm ứng dụng
và phát triển ngành cơng nghệ lập trình.
Để đáp ứng được nhu cầu về công nghệ hiện nay, nhà sản xuất chip vi xử
lí Intel đã phát triển và chế tạo ra bộ mạch đồng xử lý toán học
8087/80287/80387. Chúng làm việc với 80 bit cùng một lúc, cho nên lập trình
viên có thể biểu diễn một số đủ độ dài để đảm bảo cho các phép tính được thực
hiện chính xác. Một tính năng cải tiến của chip Intel 80486 DX là gộp cả mạch
đồng xử lý số vào trong chip vi xử lý.
Để hiểu hơn về mạch đồng xử lý tốn học 8087/80287/80387
(Mathematical co-processor) em xin được trình bày cụ thể hơn trong bản báo
cáo này.
Nhóm sinh viên thực hiện !

1


2


CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ VI XỬ LÝ
1.1 Giới thiệu về vi xử lý
Một máy tính thơng thường bao gồm các khối chức năng cơ bản, như khối
xử lí trung tâm (CPU - Central Processing Unit), bộ nhớ trong và khối phối ghép
với thiết bị ngoại vi (I/O - Input/Output). Tuỳ theo quy mô, độ phức tạp và hiệu
năng của các khối chức năng kể trên mà người ta chia các máy tính điện tử đã và
đang sử dụng ra thành các loại sau:
Máy tính lớn (Mainframe) là loại máy tính được thiết kế để giải các bài
tốn lớn với tốc độ cao.


Máy tính con (Minicomputer) là một dạng thu nhỏ về kích thước cũng
như về tính năng của máy tính lớn.
Máy vi tính (Microcomputer) là loại máy tính rất thơng dụng hiện nay.
Một máy vi tính có thể là một bộ vi điều khiển (Microcontroller), một máy tính
trong một vi mạch (one-chip microcomputer), và một hệ vi xử lí có khả năng
làm việc với số liệu có độ dài 1 bít, 4 bít, 8 bít, 16 bít hoặc lớn hơn. Hiện nay,
một số loại máy vi tính có năng lực xử lý tương đương với máy tính con, có thể
làm việc với số liệu có độ dài từ là 32 bít và 64 bít. Ranh giới để phân chia giữa
máy vi tính và máy tính con chính vì thế ngày càng không rõ nét.
Các bộ vi xử lý hiện có tên thị trường thường được xếp theo các họ phụ
thuộc vào các nhà sản xuất và chúng rất đa dạng về chủng loại. Các nhà sản xuất
vi xử lý nổi tiếng có thể kể tới là hãng Intel với các vi xử lý họ x86, Core, Core
i; Motorola với vi xử lý họ 680xx; Sun Microsystems với họ vi xử lý SPARC và
AMD với các vi xử lý Althlon và Phenom. Tính đến thời điểm hiện nay các
chương trình viết cho tập lệnh x86 và tương thích của Intel chiếm tỷ lệ áp đảo
trong môi trường máy vi tính.

3


4


Hình
Hình1.1
1.2Intel
Intel8081
8087

Bộ đồng xử lý theo nghĩa truyền thống là một bộ xử lý,

tách biệt với bộ xử lý chính CPU, mở rộng khả năng của CPU
một cách minh bạch. Điều này có nghĩa là theo quan điểm của
chương trình (và của lập trình viên), CPU và bộ đồng xử lý cùng
nhau trông giống như một máy thống nhất, duy nhất. Dịng bộ
đồng xử lý tốn học 80x87 (cịn được gọi là MCP [Math Bộ đồng
xử lý], NDP [Bộ xử lý dữ liệu số], NPX [Bộ xử lý số eXtensions]
hoặc FPU [Đơn vị dấu phẩy động] hoặc đơn giản "chip toán học"
là ví dụ điển hình của bộ đồng xử lý như vậy. Các CPU 80x86,
ngoại trừ 80486 (có FPU tích hợp) chỉ có thể xử lý 8, 16 hoặc 32
bit số nguyên làm kiểu dữ liệu cơ bản của chúng. Tuy nhiên,
nhiều ứng dụng dựa trên PC yêu cầu sử dụng không chỉ số
nguyên, mà cả số dấu phẩy động. Chỉ cần đặt, việc sử dụng các
số dấu phẩy động cho phép biểu diễn nhị phân không chỉ số
nguyên mà còn là giá trị phân số trên một phạm vi rộng. Một
ứng dụng phổ biến của số dấu phẩy động nằm trong các ứng
dụng khoa học, nơi rất nhỏ (ví dụ: hằng số Planck) và các số rất
lớn (ví dụ: tốc độ ánh sáng) phải được thể hiện chính xác.
Nhưng số dấu phẩy động cũng hữu ích cho các ứng dụng kinh
doanh chẳng hạn như sở thích tính tốn và hình học các phép
tính vốn có trong xử lý CAD / CAM bởi vì các tập lệnh của tất cả
các CPU 80x86 chỉ hỗ trợ trực tiếp các số nguyên và các phép
5


tính dựa trên số nguyên, số dấu phẩy động và các phép tốn
trên

chúng

phải


được

lập trình gián Intel 8087

tiếp

bằng

cách sử dụng

chuỗi

lệnh

số

của

CPU.

ngun

Điều này có
phép tính khi

nghĩa là các
Intel vi xử lý tốn học 8087

dấu


phẩy

hơn

bình Sản xuất

phép tính số
đây



1980

Tiếp thị bởi

Intel , IBM

nơi

sinh ra.

sử dụng số
động

thường, các
nguyên.


Thiết kế bởi


chậm


80x87

Intel

1.2 Chip đồng xử


Max. CPU tốc độ
đồng hồ

4 MHz đến 10 MHz

Min. kích thước tính
năng

3 micron

Tập lệnh

x87 ( vi xử lý mở
rộng của x86-16 )

Intel tiền nhiệm

8231


Intel kế thừa

80287

Package (s)

40-pin DIP
8087/80287/80387 (Mathematical co-processor)

6

toán

học


Hình 1.3: Intel vi xử lý tốn học 8087

Intel 8087 được công bố vào năm 1980, là sản phẩm x87 đầu tiên kết nối vi
xử lý cho dòng vi xử lý 8086.
Mục đích của 8087 là để tăng tốc độ tính tốn cho dấu phẩy động tốn học,
chẳng hạn như cộng, trừ, nhân, chia và căn bậc hai. Nó cũng tính số mũ, logarit
hoặc tính tốn lượng giác, và bên cạnh đó nó cũng tính tốn cả các số ngun
nhị phân và thập phân lớn. Hiệu suất được cải tiến từ khoảng 20% đến hơn
500%, tùy thuộc vào ứng dụng cụ thể. Các 8087 có thể thực hiện khoảng
50.000 FLOPS sử dụng khoảng 2,4W. Chỉ có phép tốn số học được hưởng lợi
từ các cài đặt của một 8087; máy tính chỉ sử dụng với các ứng dụng như xử lý

7



văn bản, ví dụ, sẽ khơng được hưởng lợi từ các chi phí phụ (khoảng $150 ) và
cơng suất tiêu thụ của một 8087.
Các bộ đồng xử lý số của Intel-8087, 80287, và 80387-mới được thiết kế để
làm việc với các bộ vi xử lý tương ứng. Chúng làm việc với 80 bit cùng một lúc,
cho nên lập trình viên có thể biểu diễn một số đủ độ dài để đảm bảo cho các
phép tính được thực hiện chính xác. Một tính năng cải tiến của chip Intel 80486
DX là gộp cả mạch đồng xử lý số vào trong chip vi xử lý.
Các bộ đồng xử lý toán 80x87 hỗ trợ CPU trong việc tính tốn các biểu thức
dùng dấu chấm động như cộng, trừ, nhân, chia các số dấu chấm động, căn thức,
Phép toán
8087 [μs]
8086 [μs]
Cộng/ trừ
10.6
1000
Nhân
11.9
1000
Chia
24.4
2000
Căn bậc hai
22.5
12250
Tag
56.3
8125
Lũy thừa
62.5

10680
Lưu trữ
13.1
750
logarit,… Chúng cho phép xử lý các phép toán này nhanh hơn nhiều so với
CPU. Thời gian xử lý giữa 8087 và 8086 như sau (dùng xung clock 8 MHz):
Bảng 1. Bảng so sánh thời gian xử lí giữa 8087 và 8086

8


CHƯƠNG 2: CHIP ĐỒNG XỬ LÝ TOÁN HỌC
8087/80287/80387

2.1. 8087
2.1.1. Cấu trúc 8087.
8087 gồm một đơn vị điều khiển (CU – Control Unit) dùng để điều khiển
bus và một đơn vị số học (NU – Numerical Unit) để thực hiện các phép tốn dấu
chấm động trong các mạch tính lũy thừa (exponent module) và mạch tính phần
định trị (mantissa module). Khác với 8086, thay vì dùng các thanh ghi rời rạc là
một ngăn xếp thanh ghi.

CU-Control Unit

NU- Numerical Unit

Từ điều

Bộ điều
khiển số


Từ trạng

Bus dữ liệu

Module
định trị

Đệm dữ
Đệm dữ

Địa chỉ trạng thái

Module
lũy thừa

Thanh ghi
Ngăn xếp

Điều khiển

Hình 2.1. Sơ đồ khối của 8087

Đơn vị điều khiển nhận và giải mã lệnh, dọc và ghi các toán hạng, chạy
các lệnh điều khiển riêng của 8087. Do đó, CU có thể đồng bộ với CPU trong
khi NU đang thực hiện các cơng việc tính tốn. CU bao gồm bộ điều khiển bus,
bộ đệm dữ liệu và hàng lệnh.

9



Control unit
CU giữ cho 8087 hoạt động đồng bộ với CPU chủ của nó.
Các lệnh 8087 được trộn lẫn với các lệnh CPU trong một luồng
lệnh duy nhất được CPU tìm nạp. Bằng cách giám sát các tín
hiệu trạng thái do CPU phát ra, bộ điều khiển NDP có thể xác
định khi nào một lệnh đang được tìm nạp. Khi byte hoặc từ lệnh
có sẵn trên bus cục bộ, CU chạm vào bus song song với CPU và
lấy phần lệnh đó.
CU duy trì một hàng đợi lệnh giống với hàng đợi trong CPU chủ.
Bằng cách giám sát các dòng trạng thái hàng đợi của CPU, CU
có thể lấy và giải mã các lệnh từ hàng đợi trong đồng bộ hóa với
CPU. Trên thực tế, cả hai bộ xử lý tìm nạp và giải mã luồng lệnh
song song.
Tuy nhiên, hai bộ xử lý thực thi luồng lệnh khác nhau. Năm bit
đầu tiên của tất cả các lệnh máy 8087 đều giống hệt nhau; các
bit này chỉ định lớp lệnh thoát bộ xử lý (ESC). Bộ điều khiển bỏ
qua tất cả các lệnh khơng khớp với các bit này, vì các lệnh này
chỉ được hướng đến CPU. Khi CU giải mã một lệnh chứa mã
thốt, nó sẽ tự thực thi lệnh đó hoặc chuyển nó đến NEU, tùy
thuộc vào loại lệnh.
CPU phân biệt giữa các lệnh ESC tham chiếu bộ nhớ và những
lệnh không tham chiếu. Nếu lệnh tham chiếu đến một tốn
hạng bộ nhớ, CPU sẽ tính tốn địa chỉ của tốn hạng và sau đó
thực hiện “dummy read” của từ tại vị trí đó. Đây là một chu kỳ
đọc bình thường, ngoại trừ việc CPU bỏ qua dữ liệu mà nó nhận
được. Nếu lệnh ESC khơng chứa tham chiếu bộ nhớ, CPU chỉ cần
thực

hiện


lệnh

10

tiếp

theo.


Một lệnh 8087 đã cho (một ESC tới CPU) sẽ yêu cầu tải một toán
hạng từ bộ nhớ vào 8087, hoặc sẽ yêu cầu lưu trữ một toán
hạng từ 8087 vào bộ nhớ, hoặc sẽ không tham chiếu đến bộ
nhớ. Trong hai trường hợp đầu tiên, CU sử dụng chu kỳ “dummy
read” do CPU khởi xướng. CU lấy và lưu địa chỉ toán hạng mà
CPU đặt trên bus sớm trong " dummy read". Nếu lệnh là một tải
8087, CU sẽ ghi thêm từ đầu tiên (và có thể là duy nhất) của
tốn hạng khi nó có sẵn trên bus. Nếu toán hạng được tải dài
hơn một từ, CU ngay lập tức nhận được bus từ CPU và đọc phần
còn lại của toán hạng trong các chu kỳ bus liên tiếp. Trong hoạt
động lưu trữ, CU nắm bắt và lưu địa chỉ toán hạng khi tải và bỏ
qua từ dữ liệu theo sau trong chu kỳ “dummy read”. Khi 8087
đã sẵn sàng để thực hiện lưu trữ, CU nhận được bus từ CPU và
ghi toán hạng tại địa chỉ đã lưu bằng cách sử dụng nhiều chu kỳ
bus liên tiếp nếu cần thiết để lưu trữ toán hạng.
Numeric Execution Unit
NEU thực thi tất cả các lệnh liên quan đến ngăn xếp thanh
ghi; chúng bao gồm các hướng dẫn số học, so sánh, siêu việt,
hằng số và truyền dữ liệu. Đường dẫn dữ liệu trong NEU rộng 68
bit và cho phép thực hiện truyền toán hạng bên trong với tốc độ

rất cao.
2.1.2. Bộ đồng xử lý toán học 8087.
Chip vi xử lý 8087 là đồng xử lý toán học dùng chung với 8086/8088 trong
máy tính, trong đó 8087 là vi xử lý phụ (slave) cịn 8086/8088 là vi xử lý chính
(master). 8087 chuyên thực hiện các phép tính các số với dấu phẩy động thuộc
nhiều loại dữ liệu khác nhau. 8086/8088 thực hiện các phép tính này thơng qua
thực hiện các mơ phỏng, do đó tốc độ thực hiện chúng rất chậm. Nếu dùng
8087 sẽ tăng tốc độ tính tốn các số dấu phảy động lên rất nhiều.
Công nghệ vào thời kỳ ra đời 8086/8088 không cho phép cấy 8087 vào bên
11


trong 8086/8088 như trong 80486DX và Pentium, do đó phải chế tạo chip riêng
để thực hiện phép tính số dấu phẩy động. 8086 được đóng vỏ DIP 40 chân tín
hiệu. Các đường tín hiệu địa chỉ và dữ liệu được ghép chung từ A0/D0 đến
A19/D15. Như vậy 8087 có thể trao đổi dữ liệu theo byte và theo từ 16 bit. Các
tín hiệu trạng thái S0, S1, S2 và S3, S4, S5, S6, S7 có trong chế độ làm việc tối
đa của 8086/8088. Nhịp đồng hồ CLK của 8087 có tần số như tần số của nhịp
đồng hồ 8086/8088, bởi vì 8087 được thiết kế để làm việc cùng với 8086/8088
trong hệ thống máy tính.

2.1.3. Chức năng 8087
Được xem xét nghiêm ngặt từ quan điểm của tốc độ thô, lần
đầu tiên 8087 cho phép các tác vụ tính tốn quan trọng đòi hỏi
nhiều khả năng được thực hiện bởi bộ vi xử lý. Tuy nhiên, 8087
không chỉ cung cấp hiệu suất cao. Bằng cách tổng hợp những
tiến bộ được thực hiện bởi các nhà phân tích số trong vài năm
qua, NDP cung cấp mức độ khả dụng vượt qua các đơn vị số học
máy tính mini và máy tính lớn hiện có. Trên thực tế, điều lệ của
nhóm thiết kế 8087 trước tiên là đạt được chức năng đặc biệt và

sau đó là đạt được hiệu suất cao.
8087 được thiết kế rõ ràng để mang lại kết quả ổn định,
chính xác khi được lập trình bằng các thuật tốn “bút chì và
giấy” đơn giản. Mặc dù tun bố này có vẻ tầm thường, nhưng
những người dùng có kinh nghiệm về “bộ xử lý dấu phẩy động”
sẽ nhận ra tầm quan trọng cơ bản của nó. Ví dụ: hầu hết các
máy tính có thể tràn khi hai số dấu chấm động chính xác được
12


nhân với nhau và sau đó chia cho một phần ba, ngay cả khi kết
quả cuối cùng là một số 32 bit hoàn toàn hợp lệ. 8087 mang lại
kết quả làm trịn chính xác.
NDP chứa một số cơ sở có thể được tùy chọn bởi những người
dùng sành sỏi. Ví dụ về các tính năng nâng cao này bao gồm
hai mơ hình vơ cực, làm trịn có hướng, dịng chảy dần dần và
bẫy đối với phần mềm xử lý ngoại lệ do người dùng viết.

13


Đơn vị xử lý số
học

Đơn vị điều
khiển
Từ điều
khiển
Từ trạng thái


Bu
s
luỹ
th
a

Bus
phâ
n
số
Thanh ghi
dịch lập
trình được

Hàng
đợi
phép
Giao tiếp

Dữ
liệu

Bộ
đệm
dữ
liệu

Lệnh mới

Hàng

đợi
phép
tốn

Đơn vị
điều
khiển vi
lệnh

Hình trên là sơ
8087.

Trong

Các
thanh
ghi
tạm
(7)
(6)
(5)
(4)
(3) 2.3: Sơ đồ chức năng của
(2) đồng xử lý toán học 8087
(1)

T
Trạng Đánh địa chỉA
thái
và tạo rãnh G

W
bus
Hình
O
Conbộtrỏ R
Địa
chỉ
Chồng thanh ghi
ngoại tệ D

của

Module
số học

đồ chức năng

80
bit'

(0)

8087 có 2 đơn

vị chức năng chính: Đơn vị điều khiển (Control unit) và đơn vị xử lý
số học (numeric execution unit)

14



2.1.4. Thanh ghi

Hình 2.4: Sơ đồ kết nối 8087 và CPU 8086

Ngăn xếp thanh ghi có tất cả 8 thanh ghi từ R0 ÷ R7, mỗi thanh ghi dài 80
bit trong đó bit 79 là bit dấu, bit 64 ÷ 78 dùng cho số mũ và phần còn lại là phần
định trị. Dữ liệu truyền giữa các thanh ghi này được thực hiện rất nhanh do 8087
có độ rộng bus dữ liệu là 84 bit và không cần phải biến đổi định dạng.
Ngay sau khi reset PC, bộ đồng xử lý kiểm tra xem nó có được nối với PC
hay không bằng các đường BHE/S7. 8087 sẽ điều chỉnh độ dài của hàng lệnh
cho phù hợp với CPU (nếu dùng 8086 thì độ dài là 6 byte).
8087 có một thanh ghi trạng thái là thanh ghi từ thẻ (tag word) gồm các cặp
bit Tag0 ÷ Tag7 để lưu trữ các thông tin liên quan đến nội dung của các thanh
ghi R0 ÷ R7 để cho phép thực hiện một số tác vụ nhanh hơn. Mỗi thanh ghi từ
thẻ có 2 bit xác định 4 giá trị khác nhau của các thanh ghi Ri.
Tag = 00: xác định
Tag = 01: zero
Tag = 10: NAN, giá trị bất thường

15


Tag = 11: rỗng

Tập thanh ghi bên trong của 8087:
Tập thanh ghi bên trong 8087 được tổ chức theo cơ chế ngăn
xếp (register stack), và có khn dạng như trong Hình 2.4 và Hình
2.5. Trong cơ chế ngăn xếp dữ liệu được đẩy vào (push) đỉnh ngăn
xếp, vị trí ST(0), và những dữ liệu cũ trong ngăn xếp được tự động
đẩy xuống phía đấy ngăn xếp. Khi đọc ra, dữ liệu được lấy từ đỉnh

ST(0), những dữ liệu còn lại trong ngăn xếp tự động đi lên đỉnh.
2.1.5. Sơ đồ chân.

Hình 2.2: Sơ đồ chân 8087


AD0 → AD15 : Đây là chân ghép địa chỉ / dữ liệu, mang địa chỉ trong chu kỳ

đồng hồ đầu tiên và dữ liệu từ các chu kỳ đồng hồ thứ hai trở đi.
 A19 / S6 - A16 / S: Là thời gian ghép địa chỉ / trạng thái.
 Các S6, S4 và S3 là vĩnh viễn cao, trong khi S5 là vĩnh viễn thấp.

16




BHE /S7 Trong suốt chu kỳ đồng hồ đầu tiên, BHE/S7 được sử dụng để cho
phép dữ liệu vào các byte cao của bus dữ liệu 8086 và sau đó làm việc như

dòng trạng thái S7.
 QS1, QS0 - Đây là các chân tín hiệu đầu vào tình trạng cung cấp tình trạng
của hàng đợi hướng dẫn, điều kiện của họ như thể hiện trong bảng sau.
QS0
0
0
1
1

QS1

1
1
0
1

Status
Không hoạt động.
Byte đầu tiên của opcode từ hàng đợi.
Hết hàng đợi.
Byte tiếp theo từ hàng dợi.
Bảng 2. Bảng trạng thái

- INT - Đây là một tín hiệu ngắt, làm thay đổi đến cao khi một ngoại lệ được che
mặt nạ đã được nhận được trong quá trình thực.
- BUSY - Đây là một tín hiệu đầu ra, khi nó là cao, nó cho thấy một trạng thái
bận rộn với CPU.
- READY - Đây là một tín hiệu đầu vào được sử dụng để thông báo cho
coprocessor bus dữ liệu đã sẵn sàng để nhận dữ liệu hay không.
- RESET - Đây là một tín hiệu đầu vào được sử dụng để loại bỏ các hoạt động
nội bộ của coprocessor và chuẩn bị cho việc thực hiện thêm bất cứ khi nào theo
yêu cầu của CPU.
- CLK - Các đầu vào CLK cung cấp thời gian cơ bản cho các hoạt động xử lý.
- Vcc - Đây là một tín hiệu cung cấp điện, đòi hỏi cung cấp + 5V cho các hoạt
động của mạch.
- GND: Đây là dây nối đất.

17


2.1.6. Kết nối 8087 và 8086/8088.

Sự liên kết giữa 8086 với 8087 được thực hiện cả phần cứng và phần mềm
và được mơ tả trong Hình 2.6.

Hình 2.5: Ghép nối vi xử lý 8086 và đồng xử lý toán học 8087

Về phần cứng, tín hiệu RQ / GT 0 của 8087 thực hiện giám sát truy cập
bus, về phần mềm, 8087 theo dõi các lệnh được 8086/8088 đọc ra có tiền tố là
ký hiệu đặc biệt ESCAPE (ESC) hay không. Nếu tiền tố của lệnh máy có ký
tự ESC thì 8087 tiếp nhận lệnh đưa từ 8086/8088 và sẽ bắt đầu q trình thực
hiện lệnh, cịn 8088/8086 thì vẫn tiếp tục xử lý riêng cho đến lúc nó cần đến
kết quả tính tốn từ 8087. Lúc này 8086/808 bước vào trạng thái chờ đợi
WAIT (Lệnh WAIT chờ tín hiệu TEST). Khi 8087 đã tính xong và đưa kết quả
vào bộ nhớ, nó gửi tín hiệu BUSY = 0 đến chân TEST để thông báo cho
8086/8088. Trạng thái chờ của 8086/8088 kết thúc khi TEST khẳng định
ở mức 0 và 8086/8088 tiếp tục q trình xử lý của nó. Trong chế độ tối đa,
INTA và ALE trở thành hai tín hiệu trạng thái QS1 và QS0, đó là 2 bit trạng

18


thái của bộ vi xử lý trong quá trình thực hiện lệnh. Chúng cần thiết cho bộ
đồng xử lý và các thiết bị ngoại vi làm việc kết hợp chặt chẽ với bộ vi xử lý.
Q trình tính tốn của 8087 thực hiện theo 3 bước như sau:
-

Bước 1: Dữ liệu được nạp từ bộ nhớ chính của hệ thống vào tập hợp
các thanh ghi bên

trong (register stack).


-

Bước 2: 8087 xử lý các dữ liệu vừa được nạp

-

Bước 3:Kết quả được cất trở lại vào bộ nhớ chính của hệ thống.

2.1.7. Tập lệnh 8087
Tập lệnh của 8087 gồm nhiều lệnh tính tốn với các số ngun, BCD và
dấu phảy động. Chúng được xem là các lệnh mở rộng tập lệnh của 8086/8088.
Khi viết chương trình, trong đó có sử dụng cả các lệnh của 8087, và 8088, thì
thứ tự chương trình khơng cần bận tâm. Tất cả các tên lệnh của tập lệnh 8087
đều có chữ cái đầu là "F", nghĩa là Floating-point.
Các lệnh của 8087 phân thành các nhóm như sau:
1 Các lệnh vận chuyển các số thực (Real transfers).
2 Các lệnh vận chuyển các số nguyên (Integer transfers).
3 Các lệnh vận chuyển các số hệ mười đóng gói (Packed decimal

transfers0.
4 Các lệnh cộng (Addition).
5 Các lệnh trừ (Subtraction).
6 Các lệnh nhân (Multiplication)
7 Các lệnh chia (Division).
8 Các lệnh khác (đổi dấu, khai căn bậc hai, làm tròn số, số mũ, lấy giá trị tuyệt

đối, …).
9 Các lệnh hàm lượng giác (Transcendental), logarit, số mũ.
10 Các lệnh so sánh (Comparison).


19


11 Các lệnh với hằng số (Constant).
12 Các lệnh điều khiển bộ xử lý (Processor Control).

Nhóm lệnh điều khiển bộ xử lý là những lệnh như: Khởi tạo ban đầu bộ
xử lý, cấm ngắt, cho phép ngắt, nạp từ điều khiển, cất giữ từ điều khiển, xoá
các ngoại lệ, nạp và cất giữ môi trường, cất giữ và phục hồi trạng thái, tăng
con trỏ ngăn xếp, giảm con trỏ ngăn xếp, làm trống thanh ghi, chờ CPU, và
không thực hiện gì cả.
2.1.8. Khn dạng dữ liệu 8087.
Khi cất giữ vào trong bộ nhớ chính của hệ thống, dữ liệu có thể ở bất kỳ
khuôn dạng nào, nhưng trong 8087, dữ liệu chỉ có thể được xử lý và cất giữ
dưới các dạng số qui định cho các tính tốn số dấu phảy động. Khi chuyển từ
8087 trở lại bộ nhớ chính của hệ thống, dữ liệu được tự động chuyển về dạng
thích hợp cho xử lý bên trong 8086/8088.
Số thực ngắn có giá trị lớn nhất là 127 (7Fh), số thực dài có giá trị lớn nhất
là 1023 (3FFh), và số thực tạm thời có giá trị lớn nhất là 16383 (3FFFh).
2.2. Chip đồng xử lý toán học 80287/80387.
2.2.1. 80287.
Do 80286 có chế độ mạch bảo vệ nên mạch ghép nối giữa
80286 và 80287 được thiết kế khác 8087 ở đơn vị điều khiển
CU. Bộ đồng xử lý ở đây không thực hiện truy xuất bộ nhớ trực
tiếp. Để truy xuất được bộ nhớ, 80287 không những cần một
đơn vị định địa chỉ đơn giản của nó mà cịn phải được tăng
cường thêm chức năng quản lý bộ nhớ của 80286. Cấu trúc bên
trong của 80287 cũng tương tự như 8087, chỉ có đơn vị bus
thay đổi cho phù hợp với 80286. Khác với 8087, 80287 hoạt
động không đồng bộ với CPU nên có thể dùng xung clock riêng.


20


Hình 3.1: Sơ đồ kết nối giữa 80286 và 80287

80287 (i287) là bộ đồng xử lý tốn học cho dịng bộ vi xử lý
Intel 80286. Các mơ hình của Intel bao gồm các biến thể với
giới hạn tần số trên được chỉ định trong khoảng từ 6 đến 12
MHz. Sau đó là i80287XL với vi kiến trúc 387 và i80287XLT, một
phiên bản đặc biệt dành cho máy tính xách tay, cũng như các
biến thể khác.
80287XL thực sự là 80387SX với 287 sơ đồ chân. Nó chứa hệ số
nhân 3/2 bên trong để các bo mạch chủ chạy bộ đồng xử lý ở
tốc độ 2/3 CPU có thể chạy FPU ở cùng tốc độ của CPU. 287
kiểu khác có hiệu suất giống 387 là Intel 80C287, được xây

21


dựng bằng CHMOS III và AMD 80EC287 được sản xuất trong quy
trình CMOS của AMD, chỉ sử dụng cổng tĩnh hoàn toàn.
80287 và 80287XL hoạt động với bộ vi xử lý 80386 và ban
đầu là bộ vi xử lý duy nhất có sẵn cho 80386 cho đến khi 80387

Hình 3.2 Intel

được giới thiệu vào năm 1987. Cuối cùng, chúng có thể hoạt
động với Cyrix Cx486SLC. Tuy nhiên, đối với cả hai chip này,
80387 được ưu tiên hơn cả vì hiệu suất cao hơn và khả năng lớn

hơn của tập lệnh.
2.2.2. 80387
Ưu điểm của 80387 so với 80287 là có thể thực hiện các phép
tốn số học nhanh hơn. Khơng có bus dữ liệu 32 bit như CPU và
sử dụng công nghệ CMOS nên công suất tiêu thụ thấp hơn.
80387 (387 hoặc i387) là bộ vi xử lý Intel đầu tiên hoàn toàn
tuân thủ tiêu chuẩn IEEE 754-1985. Được phát hành vào năm
1987, trịn hai năm sau chip 386, i387 có tốc độ được cải thiện
nhiều so với các bộ vi xử lý 8087/80287 trước đây của Intel và
các đặc điểm cải tiến của các hàm lượng giác của nó. Các lệnh
FPTAN và FPATAN của 8087 và 80287 được giới hạn trong một
đối số trong phạm vi ± π / 4 (± 45 °) và 8087 và 80287 khơng
có lệnh trực tiếp cho các hàm SIN và COS.

22


Khơng có bộ đồng xử lý, 386 thường thực hiện số học dấu
phẩy động thơng qua các quy trình phần mềm (tương đối
chậm), được thực hiện trong thời gian chạy thơng qua trình xử
lý ngoại lệ phần mềm. Khi một bộ đồng xử lý toán học được
ghép nối với 386, bộ đồng xử lý thực hiện phép tính dấu phẩy
động trong phần cứng, trả về kết quả nhanh hơn nhiều so với

lệnh gọi thư viện phần mềm (giả lập).
Hình 3.3 Intel 80837

I387 chỉ tương thích với chip i386 tiêu chuẩn, có bus bộ xử lý
32-bit. I386SX được giảm chi phí sau này, có bus dữ liệu 16 bit
hẹp hơn, khơng thể giao tiếp với bus 32 bit của i387. I386SX

yêu cầu bộ vi xử lý riêng của nó, 80387SX, tương thích với bus
dữ liệu 16 bit hẹp hơn của SX.

23


Kết luận
Qua bài tiểu luận đề tài “Nghiên cứu tìm hiểu về vi mạch đồng xử lý toán
học 8087/80287/80387 (Mathematical co-processor)”, nhóm 5 đã đưa ra được :
1.
2.

3.
4.

Sự ra đời và chức năng của Intel 8087
Cấu trúc vi xử lý 8087
- Chip vi xử lý 8087.
- Cấu trúc intel 8087
- Sự kết nối của vi xử lý 8087 và 8086/8088
- Phân loại các nhóm lệnh tốn học trong vi xử lý 8087
Sơ đồ kết nối giữa vi xử lý 80287 và 80286
Ưu điểm của vi xử lý 80387 sau khi nghiên cứu phát triển từ vi xử lý
80287.

24




×