Tải bản đầy đủ (.doc) (13 trang)

Nghiên cứu tìm hiểu về vi mạch đồng sử lý toán học 808 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 (577.38 KB, 13 trang )

BỘ CÔNG THƯƠNG
ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THƠNG TIN
--------

BÀI TIỂU LUẬN MƠN
KTMT
Đề tài: Nghiên cứu tìm hiểu về vi mạch
đồng sử lý toán học 8087/ 80287/ 80387
(Mathematical coprocessor)

Giáo Viên

: Ths. Nguyễn Tuấn Tú.

Sinh viên thực hiện

: Bùi Duy Lẫm.
: Nguyễn Ngọc Hưng.
: Nguyễn Khắc Hiếu.
: Trịnh Công Đức.
: Phạm Thế Hùng.

Lớp

: CNTT5.


Hà Nội, 2020



Sự ra đời
chức năng của Intel 8087
bộ
đồng
xử

8087
Phân loại các nhóm lệnh toán học trong vi xử lý 8087
Ngắt

sử

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.
I.Vi mạch đồng xử lý toán học 8087
1.1Sơ đồ chân 8087
1.2 Sơ đồ phối ghép 8087 với 8086
1.3 Sơ đồ khối 8087
II.
Vi
mạch
đồng
xử
2.1 Sơ đồ chân 80287
2.1 Sơ đồ phối ghép 80287 với 80286.
2.3 Sơ đồ khối 80287.
III. Vi mạch đồng xử lý toán học 80387
3.1 Sơ đồ chân 80387

3.2 Sơ đồ phối ghép 80387 với 80386

3.3 Sơ đồ khối 80387



toán

học

80287


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) nhóm 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.


Giới thiệu
x87 là một tập hợp con liên quan đến nổi của tập x86 kiến trúc hướng dẫn. Nó
có nguồn gốc là một phần mở rộng của 8086 hướng dẫn thiết lập trong các hình
thức coprocessors tùy chọn mà làm việc song song với tương ứng CPU x86.

Những vi mạch có tên kết thúc bằng "87". Điều này cũng đã được biết đến như
là NPX (Numeric Processor eXtension). Cũng giống như phần mở rộng khác
cho các tập lệnh cơ bản, x87 - hướng dẫn không đúng cần thiết để xây dựng
chương trình làm việc, nhưng cung cấp phần cứng và vi triển khai các nhiệm vụ
số thông thường, cho phép những công việc này sẽ được thực hiện nhanh hơn
nhiều so với tương ứng với thói quen mã máy có thể. Các tập lệnh x87 bao gồm
hướng dẫn cho các hoạt động cơ bản như cộng, trừ và so sánh, mà còn cho các
hoạt động số phức tạp hơn, chẳng hạn như các tính tốn của hàm tan và nghịch
đảo của nó.Hầu hết các bộ xử lý x86 từ Intel 80486 đã có những hướng dẫn x87
thực hiện trong CPU chính nhưng thuật ngữ này đơi khi vẫn được sử dụng để
tham khảo một phần của tập lệnh. Trước khi lệnh x87 là tiêu chuẩn trong máy
tính, các trình biên dịch hoặc các lập trình viên đã phải sử dụng cuộc gọi thư
viện khá chậm để thực hiện các hoạt động nổi-điểm, một phương pháp mà vẫn
còn phổ biến ở (chi phí thấp) các hệ thống nhúng. Các bộ đồng xử lý tố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 , 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 8MHz) :
Thanh ghi đa năng 80x87
- 80x87 có 8 thanh ghi đa năng 80 bit được đánh số từ 0 tới 7.
- Các thanh ghi làm việc như một ngăn xếp theo nguyên tắc LIFO.
- Đỉnh ngăn xếp luôn ST(0).
- Các thanh ghi còn lại được đánh số tương ứng với vị trí so với đỉnh ngăn xếp.
- Dữ liệu nhập sẽ tự động chuyển sang dạng 80 bit.


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


II. Chip đồng xử lý toán học 8087/80287/80387 (Mathematical co-processor)
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,
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):

Phép tồn


8086[µs]

Cộng/ trừ

8087[µs]
10.6
1000

Nhân

11.9

1000

Chia

24.4

2000

Căn bậc hai

22.5

12250

Tang

56.3


8125

Lũy thừa

62.5

10680

Lưu trữ

13.1

750


2.1 Intel 8087.
2.1.1

Intel 8087

Intel vi xử lý toán học 8087.
Sản xuất

1980.

Tiếp thị bởi

Intel, IBM.

Thiết kế bởi


Intel.

Max. CPU tốc độ 4 MHz đến 10 MHz.
Min. kích thước

3 micron

tính năng.
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

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ố nguyên
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,4 W. Chỉ có phép toá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ý 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.


2.1.2. 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.
nh 2.1. Sơ đồ khối của 8087


CLK (8284)

16
15
14
13
12
11
10
9
19
23
25
24
22
31
33
21


AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7

AD8
AD9
AD10
AD11
AD12
AD13
AD14
AD15

CLK

A16/S3
A17/S4
A18/S5
A19/S6

BUSY

38
37

36
35

19

INT (8259)

18
33
17
22
31
30
21
23

AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7

AD8
AD9
AD10
AD11
AD12

AD13
AD14
AD15

CLK

A16/S3
A17/S4
A18/S5
A19/S6

INTR

8
7
6
5
4
3
2
39

38
37
36
35

QS0 và giải mã lệnh, dọc và ghi các MX
Đơn vị điều khiển nhận
toán hạng, chạy các

QS1
NMI
READY
RQ/GT0
RQ/GT1
RST

S0
S1
S2

26
27
28

READY
RQ/GT0
RQ/GT1
RST
TEST

S0
S1
S2

26
27
28

lệnh điều khiển riêng của 8087. Do đó, CU

có thể đồng bộ với CPU trong khi
IRx (8259)
32

34

BHE/S7 29
NU đang thực hiện 34cácBHE/S7
công việcINTtính tốn. CU bao gồm bộ điều khiển
bộ
LOCK bus,
25
QS0
QS1
RD

đệm dữ liệu và hàng lệnh.
8087

24
32

8086

8
7
6

16
15

14

5
4
3
2
39

13
12
11
10
9

Sơ đồ ghép nối giữa 8087 và 8086.

8087 có thể kết nối với 8086 chỉ trong chế độ tối đa hoạt động của mình.Trong chế
độ tối đa, tất cả các tín hiệu điều khiển có nguồn gốc sử dụng một chip riêng biệt
được gọi là điều khiển bus. Yêu cầu cung cấp tín hiệu của 8087 được kết nối với của
8086. Các QS0 và QS1 dịng có thể được kết nối trực tiếp với các chân tương ứng
trong trường hợp của 8086 dựa đồng hồ hệ thống. Pin của 8087 được kết nối với đầu
vào đồng hồ của CPU. Các đầu ra ngắt của 8087 được kết nối với CPU thơng qua
một trình điều khiển ngắt 8259. Các chân AD 0 - AD 15 , BHE/S7 , Reset, A 19/ S 6 A 16/ S3 của 8087 được kết nối với các chân tương ứng của 8086. Bus địa chỉ ghép


địa chỉ dữ liệu được kết nối trực tiếp từ 8086 đến 8087. Các dòng trạng thái và các
dòng trạng thái hàng đợi kết nối trực tiếp 8086-8087.
➢ Các pin BUSY của 8087 được kết nối với TEST pin của 8086
• Mục đích chính của các mạch giữa đầu ra INT của 8087 và đầu vào NMI là để
đảm bảo rằng một tín hiệu NMI là khơng có mặt khi thiết lập lại, để làm cho nó có

thể để che NMI đầu vào và để làm cho nó có thể cho các thiết bị khác để gây ra một
NMI làm gián đoạn.
• BHE pin được kết nối với hệ thống dây chuyền BHE để cho phép các ngân hàng
trên của bộ nhớ.
• Đầu vào có sẵn để coprocessor khác như 8089 I / O bộ xử lý có thể được kết nối và
chức năng song song với 8087.
• Một loại hợp tác giữa hai bộ xử lý mà bạn cần phải biết về nó là cách truyền dữ liệu
8087 giữa bộ nhớ và các thanh ghi bên trong của nó.
• Khi 8086 lần đọc một lệnh 8087 mà cần dữ liệu từ bộ nhớ hoặc muốn gửi dữ liệu
vào bộ nhớ, 8086 gửi ra mã địa chỉ bộ nhớ trong hướng dẫn và gửi ra tín hiệu đọc bộ
nhớ hoặc bộ nhớ ghi thích hợp để chuyển một từ dữ liệu.
• Trong trường hợp của bộ nhớ đọc, từ giải quyết sẽ được giữ trên bus dữ liệu của bộ
nhớ. Các 8087 sau đó chỉ cần đọc những từ của bus dữ liệu.Nếu các 8087 chỉ cần một
từ dữ liệu này, sau đó nó có thể đi và thực hiện hướng dẫn của nó.
• Một số 8087 hướng dẫn cần phải đọc hoặc viết ra lên đến 80-bit từ.Đối với những
trường hợp này 8086 kết quả đầu ra địa chỉ của từ dữ liệu đầu tiên trên bus địa chỉ và
kết quả đầu ra tín hiệu điều khiển thích hợp.
• 8087 lần đọc từ dữ liệu trên bus dữ liệu của bộ nhớ hoặc viết một từ dữ liệu vào bộ
nhớ trên bus dữ liệu. Các 8087 lấy địa chỉ vật lý 20-bit đó là đầu ra bằng việc chuyển
nhượng 8086.
• Để đi qua bus, 8087 gửi ra một xung thấp đi trên pin / .8086 phản ứng bằng cách
gửi một mức thấp xung đi lại cho các pin / của 8087 và bằng cách thả nổi bus của
nó.
• 8087 sau đó tăng địa chỉ nó lấy trong q trình chuyển đầu tiên và kết quả đầu ra
địa chỉ tăng lên trên bus địa chỉ. Khi 8087 sản lượng một bộ nhớ đọc hoặc bộ nhớ ghi
tín hiệu, một từ dữ liệu sẽ được chuyển đến hoặc từ 8087.
• 8087 tiếp tục q trình này cho đến khi nó đã chuyển giao tất cả các từ dữ liệu theo
yêu cầu của hướng dẫn đến / từ bộ nhớ.
• Khi 8087được sử dụng bus để chuyển dữ liệu của nó, nó sẽ gửi một xung thấp đi
ra trên chân

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. Về phần cứng, tín hiệu RQ / GT0 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 quá 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 8080/8086 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 kết thúc khi TEST 8086/8088. Trạng
thái chờ của khẳng định ở mức 0 và trình xử lý của nó. Trong chế độ tối đa, INTA
1. 10 8086/8088 tiếp tục quá và ALE trở thành hai tín hiệu trạng thái QS1 và QS0,

đó là 2 bit trạng 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.5. Tập lệnh 8087
Tập lệnh của 8087 gồm nhiều lệnh tính toán với các số nguyên, 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).
11. Các lệnh với hằng số (Constant).


Vì một bộ đồng xử lý (8087) được kết nối với 8086, 8086 hoạt động ở chế độ tối
đa. Do đóMN/MX, MN/MX là có căn cứ. 8284 cung cấp các tín hiệu CLK, RESET
và READY phổ biến. 8282 được sử dụng để chốt địa chỉ. 8286 được sử dụng làm bộ
thu dữ liệu. 8288 tạo ra các tín hiệu điều khiển bằng cách sử dụngS2,S1 and S0,
S2,S1 and S0 dưới dạng đầu vào từ bộ xử lý hiện đang hoạt động. 8259 PIC được sử
dụng để chấp nhận ngắt từ 8087 và gửi nó đến bộ vi xử lý. Giao diện này cịn được
gọi là cấu hình bộ đồng xử lý. Ở đây 8086 được gọi là máy chủ và 8087 là bộ đồng
xử lý vì nó khơng thể tự hoạt động. Chúng tơi viết một chương trình thuần nhất chứa
cả 8086 và 8087 hướng dẫn. Chỉ 8086 mới có thể tìm nạp các hướng dẫn nhưng các
hướng dẫn này cũng nhập 8087. 8087 coi các lệnh 8086 là NOP. ESC được sử dụng
làm tiền tố cho 8087 lệnh. Khi gặp lệnh có tiền tố ESC (5 bit MSB là 11011), 8087
được kích hoạt. Lệnh ESC được giải mã bởi cả 8086 và 8087. Nếu lệnh 8087 chỉ có
một opcode (khơng có tốn hạng) thì 8087 sẽ bắt đầu thực thi và 8086 sẽ ngay lập tức
di chuyển lệnh tiếp theo của nó. Nhưng nếu lệnh u cầu tốn hạng bộ nhớ, thì 8086
sẽ phải lấy từ đầu tiên của tốn hạng vì 8087 khơng thể tính tốn địa chỉ vật lý. Từ
này sẽ được 8087 nắm bắt. Bây giờ các từ cịn lại (cho một tốn hạng lớn) có thể

được 8087 tìm nạp bằng cách chỉ cần tăng địa chỉ của từ đầu tiên. Vì vậy 8087 cần sự
trợ giúp từ 8086. Khi 8087 nhận được toán hạng của nó, nó bắt đầu xử lý bằng cách
làm cho đầu ra BUSY cao. Đầu ra BUSY này được kết nối với đầu vào TEST của bộ
vi xử lý. Bây giờ 8087 thực hiện lệnh của nó và 8086 tiếp tục với lệnh tiếp theo của
nó. Do đó diễn ra quá trình đa xử lý. Trong quá trình thực thi, nếu 8087 cần đọc / ghi
nhiều từ hơn từ bộ nhớ, thì nó sẽ làm như vậy bằng cách lấy cắp các chu kỳ bus từ bộ
vi xử lý theo cách sau. CácR Q/GT0, RQ/GT0 của 8087 được kết nối
với R Q/GT0RQ/GT0của bộ vi xử lý. 8087 đưa ra một xung yêu cầu thấp đang hoạt
động. 8086 hoàn thành chu kỳ bus hiện tại và đưa ra xung cấp và đi vào trạng thái
giữ. 8087 sử dụng bus hệ thống chia sẻ để thực hiện truyền dữ liệu với bộ nhớ. 8087
đưa ra xung giải phóng và đưa bus hệ thống trở lại bộ vi xử lý. Nếu 8086 yêu cầu kết
quả của phép tốn 8087, thì trước tiên nó sẽ thực hiện lệnh WAIT. WAIT làm cho bộ
vi xử lý kiểm tra chân TEST. Nếu chân TEST cao (8087 là BUSY), thì bộ vi xử lý sẽ
chuyển sang trạng thái WAIT. Nó chỉ thốt ra khi TEST ở mức thấp (8087 đã kết thúc
q trình thực thi). Do đó 8086 nhận được kết quả chính xác của một phép tốn 8087.
Trong quá trình thực thi, nếu một ngoại lệ xảy ra, được hiển thị, 8087 sẽ ngắt bộ vi
xử lý bằng cách sử dụng chân đầu ra INT thông qua PIC 8259.
Các QS0QS0 và QS1QS1 các dòng được 8087 sử dụng để theo dõi hàng đợi của
8086. 8087 cần biết khi nào 8086 sẽ giải mã lệnh ESC để nó đồng bộ hóa hàng đợi
của nó với 8086 bằng cách sử dụng QS0QS0 và QS1QS1 như sau:
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ả.



×