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

chuyên đề tìm hiểu về bộ xử lý intel 80486

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 (454.22 KB, 25 trang )

I. Giới thiệu sơ lược về bộ xử lý Intel 80486
Bộ xử lý Intel 80486 ra đời năm 1989 nó có thêm mộ số đặc tính quan trọng
• FPU được tính hợp với bộ xử lý
• tốc độ đồng hồ gấp đôi ,gấp 3 cho phép bộ xử lý chạy nhanh hơn
• quản lý năng lượng và SMM(System Management Mode)trở thành 1 chuẩn đặc trừng
cho bộ xử lý
Instruction set optimization resulted in even greater performance of the processor. Different
versions of the 80486 were produced, two most common versions are 80486DX with
integrated FPU, and 80486SX without FPU. The Intel 80486 was produced at speeds up to
100 MHz. AMD produced even faster 120 and 133 MHz versions of the 80486.
Kết quả tối ưu cấu trúc tập lệnh trong sự kiện thực thi của bọ xử lý .sự khác nhau giữa các
bản của 80486 có 2 bản thông dụng của 80486 là 80486DX đươc tích hợp FPU và
80486SX không tính hợp FPU .Intel 80486 là sản phẩm chạy ở tốc đọ 100MHZ còn AMD
chì chạy nhanh hơn 120-133MHZ. Intel i486 (cũng được gọi là 486 or 80486) là bộ xử lý
kiểu Intel CISC nó là 1 thành viên của gia đình bộ xử lý Intel X86. Bộ xử lý trước của
i486 là Intel 80386 và sau là bộ xử lý Intel PentumNhìn vào phần mềm thì cấu trúc lệnh
của các bộ xử lý i486 thì rất giống với bộ xử lý trước dó nhưng được thêm một vài lệnh
mở rộng mới.Nhìn vào phần cứng ta thấy i486 được cải tiến rất nhiều .nó có lệnh thống
nhất trên 1 con chip và bộ nhớ Cache dữ liệu ,khối FPU trên 1 con chip (chỉ đời DX ) và
đơn vi giao tiếp BÚ cao cấp hơn.nhân của bộ xử lý có thể duy trì việc chạy tốc độ của 1
lệnh bằng 1 chu kỳ đồng hồ .Những cải tiến này cung cấp 1 tốc độ gấp đôi trong việc thực
thi lệnh so với 80486 cùng 1 tốc độ đồng hồ.tuy nhiên thì có 1 vài kiểu thì chạy chậm
hơn .
Intel 80486SX - a i486DX với đời này thì FPU disabled, mặc dù là đời sớm nhất nhưng
mà FPU thì lai có nhiều khuyết điểm.trong bản này thì FPU được rời từ die tới vùng giảm
vig thế có thể giảm được giá thành
• Intel 80486DX – cũng giống như kiểu trên chúng có FPU
• Intel 80486DX2 - tốc độ đồng hồ trong thì chay nhanh gấp đôi tốc dộ đồng hồ của
bus ngoài.
• Intel 80486SX2 –cũng giống như i486DX2, nhưng với FPU disabled.
• Intel 80486SL - i486SX cơ chế tiết kiệm năng lượng .vì thế chúng được dùng cho các


máy portable computers.
• Intel 80486SL-NM
• Intel 80487 Intel 80486 OverDrive - i486SX, i486SX2, i486DX2 or i486DX4. là bản
nâng cấp .
• Intel 80486DX4 – chúng được thiết kế để chạy ở tộc độ đồng hồ gấp
Tốc độ đồng hồ trong bao gồm 16, 20, 25, 33, 40, 50, 66, 75 và 100 MHz, 486DX2 66 MHz
là phổ biến nhất,trong khi OverDrive và DX4 thì được sử dụng ít hơn tiếp theo đó thì
Pentium cũng được sử dụng rộng rãi. Bộ xử lý 486 tương ứng được cung cấp bởi các công ty
IBM, Texas Instruments, AMD, Cyrix, Chips và Technologies.
II.Cấu trúc của FPU.
1.2. REAL NUMBERS AND FLOATING-POINT FORMATS
Trong đoạn này ta sẽ miêu tả cách biiêủ diễn số thực trong định dạng dấu phẩy
động trong IA FPU
Nó cũng giới thiệu số thực bình thường , không bình thường ,số mũ cơ bản,
Signed Zeros, NaNs. Chương trình đọc sẽ nhận ra chúng với các công nghệ xử
lý dấu phẩy động .nó được quy định trong chuẩn IEEE
1.2.1. Real Number System
Hình 7-1 chỉ ra hệ thống số thực bao gồm cái continuum của số thực từ âm vô
cùng đến cộng vô cùng.
Do cỡ và số lượng thanh ghi của máy tính là có giới hạn ,chỉ những tập hợp con
của của continuum số thực có thể sử dụng trong việc tính toán số thực .tập hợp
con của số thực là một dạng cụ thể của FPU hỗ trợ việc biểu diễn một hệ thống
số thực xấp xỉ . độ chính xác của tập hợp số thực này thì được quy địng trước
by the format that the FPU uses to represent real numbers.
1.2.2. Floating-Point Format
để tăng tốc độ và năng suất của việc tính toán số thực , Máy tính hay là FPU cụ
thể sẽ biểu diễn chúng trong định dạng dấu phẩy động nhị phân .trong định dạng
này thì số thực chia thành 3 phần đó là : dấu, a significand và 1 phần mũ .(hình
7.2 )
dấu là một giá trị nhị phân nó chỉ ra số thực là số dương(0) hay số âm (1)

The significand có 2 phần đó là 1 số nguyên của 1 bít nhị phân và một phân
số . J bit này thường không dùng để biểu diễn mà thay vào đó là 1 giá trị mặc
nhiên.phần mũ là 1 số lượng nguyên bít nhị phân nó biểu diễn được luỹ thừa 2
của 2 điều đó làm cho significand cũng tăng lên .(trong bảng 7-1 chỉ ra có
178.125(trong chuẩn cơ số 10) được lưu trữ trong định dạng dấu phẩy động .
1.2.2.1. NORMALIZED NUMBERS
Trong hầu hết các trường hợp thì FPU biêu diễn số thự trong định dạng thông
thường . điều đó có nghĩa là ngoại trừ signed Zeros ra thì significand luôn được
tạo lên bởi 1 số thực và theo sau là phân số: 1.fff…ff
Các giá trị thấp hơn 1 thì số 0 ở phía trước được loại bỏ (mỗi số 0 được loại đi
thì phần mũ tăng lên 1)
việc biểu diễn số trong định dạng thường thì số lượng lớn nhất của con số ý
nghĩa mà có thể cung cấp trong một significand có 1 độ rộng xác định . Để mà
tính toán một số thực bình thường bao gồm một significand bình thường thì
biểu diễn số thực giữa 1 và 2 và 1 phần mũ thì chỉ ra độ tăng nhị phân của số.
1.2.2.2. BIASED EXPONENT
FPu biểu diễn số mũ trong một dịnh dạng cơ bản.có nghĩa là nó là 1 cái bất biến
được thêm vào số mũ thực vì thế mà số mũ luôn luôn là 1 so dương.giá trị của
nó có xu hướng cố định phụ thuộc vào số lượng bít dung để biểu diễn số mũ
trong định dạng dấu phẩy động được sử dụng .xu hứớng cố định thì được lựa
chọn sao cho số bình thường nhỏ nhất có thể thay đổi được mà không bị
overflow.
1.2.3. Real Number and Non-number Encodings
sự khác nhau của số thực và giá trị đặc biệt có thể được mã hoá trong định dáng
dấu phẩy động.
Những số này và gía trị nói chung tách biệt nhau trong các lớp sau:
• Signed zeros.
• Denormalized finite numbers.
• Normalized finite numbers.
• Signed infinities.

• NaNs.
• Indefinite numbers.
(The term NaN stands for “Not a Number.”)
Hình 7-3 cho chúng ta biết việc mã hoá các số này và những số không khít trong
continuum số thực .việc mã hoá chỉ ra ở đây dành cho chuẩn IEEE chính xác
đơn (32-bit) ở đó thì quy định “s” chỉ ra dấu ,”E” là sơ số mũ(“E” the biased
exponent)
Và “F”là phần mũ (giá trị số mũ đực xác định trong hệ cơ số 10) FPU có thể
thao tác trên việc trả lại là and/ỏ của bất giá trị nào ,sự phụ thuộc vào cách thức
tính toán đang được thực hiện .
1.2.3.1. SIGNED ZEROS
số 0 có thể được biểu diễn như là +0 hoặc -0 ,phụ thuộc vào bít dấu .cả 2 cach mã hoá
là tương đương nhau trong giá trị .kết quả dấu của số 0 phụ thuộc vào các thao táv
đang được thực thi và chế độ làm tròn được sử dụng .signed zeros cung cấp sự giúp đỡ
trong việc tính toán khoảng thời gian giữa 2 sự thi hành.dấu của số 0 có thể chỉ rõ 1
cách trực tiếp từ việc underflow xảy ra , hoặc nó cũng có thể chỉ ra dấu của vô cùng
mà được trả lại .
1.2.3.2. NORMALIZED AND DENORMALIZED FINITE NUMBERS
số giới hạn được chia ra làm 2 lớp là bình thường và không bình thường.số giới hạn
bình thường gồm có tất cả các giá trị khác không ,có giới hạn từ đó có thể mã hoá
trong các định dạng số thực giữa 0 và vô cùng .trong định dạng số thực đơn chỉ ra
trong hình 7-3 đây là nhóm số bao gồm tất cả các số với các biased Exponents từ 1 tới
254
10
(còn dạng unbiased thì khoảng số mũ là từ -126
10
tới +127
10
)
Non-zero, finite numbers are divided into two classes: normalized and denormalized.

The
normalized finite numbers comprise all the non-zero finite values that can be encoded
in a
normalized real number format between zero and ∞. In the single-real format shown in
Figure
7-3, this group of numbers includes all the numbers with biased exponents ranging
from 1 to
25410 (unbiased, the exponent range is from −12610 to +12710).
Khi số thực trở lên xoay quanh số 0 ,thì định dạng số thực bình thường có thể không
dài hơn những số dung dể biểu diễn , đó là bởi vì cái khoảng số muc thig không đủ
rộng để bù lại
When real numbers become very close to zero, the normalized-number format can no
longer be sự dịch chuyển của giá trị nhị phân compensate for shifting the binary point
to the right to eliminate leading zeros. để mà loại chính xác số 0 ở đầu.
Khi mà biased Exponent là 0 ,những số nhỏ chỉ có thể biểu diễn bằng cách tạo ra các
bit nguyên (có thể các bit dầu khác) của sigificand zero.những số này trong khoảng nói
trên
được gọi là số không bình thường (hoặc rất nhỏ) việc sử dụng số 0 ở đầu với các số
không bìng thường cho phép ta biểu diễn các số nhỏ hơn . tuy nhiên thì những số
không bình thường này là nguyên nhân gây ra việc mất đi tính chính xác (số bít ý
nghĩa trong phần phân số được giảm đi bằng các số 0 ở đầu )
Khi thực hiện việc tính toán dấu chấm động không bình thường ,1 con FPU bình
thường thao tác trong các số bình thường và đưa ra kết quả là 1 số bình thường .số
không bình thường biểu diễn 1 điều kiện underflow.
1 số không bình thường được tính toán thong qua công nghệ gọi là uunderflow từ từ .
(bảng 7-2) ở đây định dạng số thực đơn thì được sử dụng vì thế mà số mũ nhỏ nhất
(unbiased) là -126
10
kết qủa chính xác trong vd này đòi hỏi một số mũ -129
10

trong
lệnh mà có 1 số bình thường ,khi đó -129
10
nằm ngoài phạm vi mà số mũ cho phép,kết
quả không bình thường có được bằng cách thêm vào số 0 ở đầu đến khi nào mà sỗ mũ
là nhỏ nhất đến - 129
10
Trong trường hợp tốt nhất thì tất cả các bit có nghĩa đều được thay đổi 1 cách chính
xác các số 0 ở đầu, nó sẽ tạo ra một kết quả là 0.
khối FPU xử lý với giá trị hệ đếm cơ số 10 theo các cách sau:
• Nó không cho phép việc tạo ra 1 cách không bình thường bằng cách bình thường hoá
các số bất cứ lúc nào có thể.
•Nó cung cấp các ngoại lệ underlow dấu chấm động để mà cho phép người lập trình
kiểm tra các trường hợp khi mà các việc không bình thường được tạo ra.
•Nó cũng cung cấp các toán hạng ngoại lệ không bình thường dấu chấm động để mà
cho phép các thủ tục chương trình kiểm tra khi mà các việc không bình thường được
sử dụng như là toán hạng nguồn dành cho việc tính toán .khi một số không bình
thường ở định dạng số thực đơn hoăc kép được sử dụng như là toán hạng nguồn và
những ngoại lệ không bình thường này bị che giấu đi,FPU sẽ tự động bình thường hoá
các số khi mà nó chuyển các định dạng số thực mở rộng
1.2.3.3. SIGNED INFINITIES
Có 2 vô cùng là âm vô cùng và dương vô cùng dung để biểu diễn số thực âm nhỏ nhất
và số thực dương lớn nhất,vì thế mà có thể biểu diễn trong định dạng dấu chấm
động .vô cùng luôn được biểu diễn bởi một zerosignificand( phấn số và bít số nguyên)
và biased exponent cho phép chỉ ra định dạng (vd: 255
10
ch định dạng số thực đơn )
dấu của vô cùng là đối tượng và có thể dung để so sánh .Vô cùng luôn là được chỉ rõ
có nghĩa là âm vô cùng thì nhỏ hơn bất kỳ số thực cụ thể nào còn dương vô cùng thì
luôn là lớn nhất .việc (tính toán trên vô cùng luôn là chính xác) .ngoại lệ này chỉ sinh

ra khi mà việc sử dụng một số vô cùng như là 1 toán hạng nguồn tạo thành một thao
tác không hợp lệ
khi mà số không bình thường biểu diễn một điều kiện underflow, 2 số vô cùng biểu
diễn kết quả của 1 điều kiện overflow . Đây là kết qủa được bình thường hoá của 1
phép toán có một biased exponent lớn hơn số mũ cho phép lớn nhất dung cho
dạng kết quả .
1.2.3.4. NANS
Khi mà NaNs khônglà số ,chúng không là phần nào của trục số thực (hình 1-3) .Việc
mã hoá khoảng trống cho NáN trong dấu phẩy động được chỉ ra ở phần cuối phía trên
trục số thực . đây là khoảng trống cho bất kỳ giá trị nào với giá trị lớn nhất cho phép
biased exponent và a non-zero fraction .( bit dấu thì bị bỏ qua khi dung Nans)
chuẩn IEEE định nghĩa 2 lớp cho NaNs : là quite NaNs(QNaNs) và signaling
NaNs.một QNaN là 1 NaN với hầu hết các bit phân số có nghĩa được thiết lập
và SNaN là 1 NaN với hầu hết các bit phân số có nghĩa được xoá bỏ .QNaNs thì
cho phép tự sinh ra thong qua hầu hết các thao tác toán học mà trong đó
signaling là 1 ngoại lệ .SNaNs nói chung thì tín hiệu là một ngoại lệ thao tác
không hợp lệ ,bất cứ lúc nào chúng hiển thị như là toán hạng trong các tháo tác
toán học
1.2.4. Indefinite
Cho mỗi kiểu dữ liệu FPU ,thì 1có 1 phép mã hoá duy nhất dung để biểu diễn các vô
cùng giá trị đặc biệtcho ,vd :khi thao tác trên giá trị số thực .thì giá t rị số thực vô cùng
là 1 QNaN,FPU tạo ra giá trị vô cùng khi mà trả lời cho ngoại lệ dấu phẩy động che
giấu.
1.3. FPU ARCHITECTURE
Từ 1 kiến trúc khái niệm trừu tượng ,FPU là một bộ đồng xử lý mà các thao tác thực
hiện song song với đơn xử lý số nguyên (1-4) FPU có các lệnh của nó cũng giống như
các lệnh giải mã và thực hiện tuàn tự như là đơn vị số nguyên và chia sẻ bus hệ thống
với đơn vị đièu khiển số nguyên ngoài ra thì đơn vị số nguyên và FPU thao tác độc lập
nhau và thực hiện song song ( vi kiến trúc hiện tại của bộ xử lý IA có xự khác nhau
giữa các họ khác nhau của bộ xử lý.cho vd là: bộ xử lý Pentium pro có 2 khối xử lý số

nguyên và có 2 Khối FPU(hình1-9)
Nhưng ngược lại thì bộ xử lý Pentium thì có 2 khối xử lý số nguyên và 1 con FPU và
bộ xử lý intel486 thì có 1 khối xử lý số nguyên và 1 FPU
những lệnh thực thi trong môi trường của FPU (1-5 ) bao gồm 8 thanh ghi dữ liệu ( gọi
là thanh ghi dữ liệu FPU) và sau đây là những thanh ghi phục vụ cho những mục đích
đặc biệt
•Thanh ghi trạng thái
• Thanh ghi điều khiển
• Thanh ghi từ gắn thẻ
• Thanh ghi con trỏ lệnh
•Thanh ghi toán hang trước ( com trỏ dữ liệu )
• Thanh ghi Opcode
những thanh ghi này được miêu tả trong phần tiếp theo.
1.3.1. FPU Data Registers
Thanh ghi dữ liệu (hình 1-5) gồm 8 thanh ghi 80bit.giá trị đươ lưu trong nhưng
thanh ghi này ở dạng số thực mở rộng (hinh 1-11) .khi giá trị là số thực ,số
nguyên ,packed BCD integer,(tron bất kỳ định dạng nào được chỉ ra ở hình 1-
11) được nạp từ bộ nhơ chính vào trong bất kỳ thang ghi dữ liệu nào cùa FPU
lúc đó thì giá trị của nó tự động được thay đổi thành dạng số thực mở rộng(nếu
chúng không ở dạng này) khi tính toán kết quả được sau đó được chuyển vào
trong bộ nhớ chính từ thanh ghi dữ liệu kết quả có thể chuyển thành dạng số
thực mở rộng hoặc chuyển thành 1 trong các định dạng khác của FPU
Những tập lệnh của FPU sẽ xửlý 8 thanh ghi dữ liệu như là 1 ngăn xếp các thanh
ghi(hình1-6) tất cả địa chỉ của các thanh ghi dữ liềuj thì đều có quan hệ với
thanh ghi ở trên đỉnh của stack.số lượng thanh ghi ở đỉnh stack hiện tại được lưu
trư trong trường TOP(stack TOP) trong từ trạng thái của FPU.khi có 1 thao tác
nạp thì TOP giảm đi 1 và nạp 1 giá trị vào trong thanh ghi ở đỉnh mới của
stack,và thao tác lưu trữ sẽ lưu trữ giá trị từ thanh ghi từ thanh ghi TOP hiện tại
vào trong bộ nhớ và sau đó tăng TOP lên 1 (trong FPU thì thao tác nạp tương
đương thao tác PUSH và thao tác lưu trữ tương đương thao tác POP)

If a load operation is performed when TOP is at 0, register wraparound occurs and the new
value
of TOP is set to 1. The floating-point stack-overflow exception indicates when wraparound
might cause an unsaved value to be overwritten (refer to Section 1.8.1.1., “Stack Overflow or
Underflow Exception (#IS)”).
nếu như một thao tác nạp được thực hiện thì khi đó TOP =0,xuẩt hiện
Wraparound thanh ghi và giá trị mới của TOP được thiết lập tới 1.ngăn xếp dấu
chấm động ngoại lệ chỉ ra khi nào thì Wraparound có thể gây ra việc không lưu
trữ giá trị để mà bỏ qua thủ tục ghi
Rấ nhiều lệnh dấu chấm động có một vài chế độ địa chỉ hóa mà cho phép người
lập trình thao tác hoàn toàn trên đỉnh của stack hoăc thao tác cụ thể trên các
thanh ghi cụ thể mà có quan hệ với TOP. Assemblers hỗ trợ những chế độ địa
chỉ hoá thanh ghi ,việc sử dụng biểu thức ST(0) hoặc đơn giản chỉ là ST, để biểu
diễn đỉnh stack hiện tại và ST(i) dung để chỉ rõ thanh ghi thứ I kể từ TOP trong
stack (0≤i≤1) cho vd là: nếu như TOP chứa 011B ( thanh ghi thứ 3 là ở đỉnh của
stack)
Những lệnh sau sẽ thêm nội dung của 2 thanh ghi trong stack(thanh ghi 3 và 5)
FADD ST, ST(2);
Hình 1-1 chỉ ra 1 vd làm thế nào mà cấu trúc thanh ghi của FPU và những lệnh
được đặc trưng việc thi hành1 chuỗi phép toán . ở đây có 2 dimensonal dot
product được tinh toán như sau:
1.Lệnh đầu tiên (FLD value1) tăng thanh gi con trỏ ngăn xếp (TOP) và nạp một
giá trị 5.6 vào từ bộ nhớ vào ST(0) kết quả của thao tác này điơcj chỉ ra hình (a).
2. . Lệnh thứ 2 nhân giá trị trong ST(0) với 2.4 từ bộ nhớ và lưu trữ kết quả
trong ST(0) hình (B).
3. The third instruction decrements TOP and loads the value 3.8 in ST(0).Lệnh
thứ 3 tăng TOP lên và nạp giá trị 3.8 vào ST(0)
4.Lênh thứ 3 nhân giá trị trong ST(0) với 10.3 từ trong bộ nhớ chính và lưu trữ
kết quả trong ST(0) ,hình (c)
5.,Lệnh thứ 5 cộng thêm giá trị với giá trị trong ST(1) và lưu trữ kết quả trong

ST(0),hình (d)
Đây là kiểu chương trình giải thích ở ví dụ này thì được hỗ trợ bởi các tập lệnh
xử lý dấu chấm động .Trong trường hợp nơi mà cấu trúc của stack gây ra việc
tính toán nghẽn cổ chai thì lệnh
FXCH
(Thay đổi nội dung của thanh ghi FPU) lệnh này có thể đước sử dụng để mà sắp
xếpmột cách tính toán
1.3.1.1. PARAMETER PASSING WITH THE FPU REGISTER STACK
Like the general-purpose registers in the processor’s integer unit, the contents of
the FPU data Giống như là thanh ghi có mục đích nói chung ,trong khối xử lý số
nguyên ,nội dung của thanh ghi dữ liệu FPU là không thay đổi bởi các thủ tục
gọi ,hoặc trong các từ khác ,thì giá trị được duy trì cho tới thủ tục biên .một thủ
tục gọi có thể sử dụng thanh ghi giá trị (cũng đúng với thủ tục của stack) để mà
truyền tham số giữa các thủ tục .thủ tục gọi có thể chuyển tham số thông qua
ngăn xếp thanh ghi bằng cách sử dụng con trỏ thanh ghi ngăn xếp hiện tại
(TOP)và cách đặt tên ST(0) và ST(i) . Đó cũng là thói quen thông thường cho
một thủ tục gọi để trả lại giá trị hoặc kết quả trong thanh ghi ST(0) thực thi việc
trả lại giá trị gọi thủ tục hoặc chương trình
1.3.2. FPU Status Register
Thanh ghi trạng thái FPU 16 bit (1-8) chỉ ra trạng thái trạng thái hiện tại của
FPU .Những cái cờ trong thanh ghi trạng thái FPU gồm các cờ FPU bận rộn ,
con trỏ (TOP) đỉnh của stack ,cờ mã điều kiện , cờ trạng thái tóm tắt lỗi , cờ lỗi
stack,và cờ ngoại lệ .FPU thiết lập những cờ trong thanh ghi để chỉ ra kết quả
thao tác .
Nội dung của thanh ghi trạng thái FPU (như là từ trạng thái thanh ghi ) có thể
được lưu trữ bộ nhớ Sử dụng các lệnh /FNSTSW, FSTENV/FNSTENV, and
FSAVE/FNSAVE
Nó cũng được lưu trữ trong thanh ghi AX của khối số nguyên sử dụng các lệnh
STSW/FNSTSW
1.3.2.1. TOP OF STACK (TOP) POINTER

Con trỏ trỏ tới thanh ghi dữ liệu mà hiên tại ở đỉnh của ngăn xếp dữ liệu được
chứa trong bit 11 tới 13 của từ trạng thái FPU .Con trỏ này thường có lien quan
tới TOP ( cho đỉnh của stack) đây là một giá trị nhị phân từ 0 đến 1.
1.3.2.2. CONDITION CODE FLAGS
Bốn thanh ghi mã cờ điều kiện FPU( C0 đến C3) chỉ ra kết quả của sự so sánh
dấu chấm động và thao tác toán học .Bảng 1-3 tóm tắt các loại lệnh dấu chấm
động sẽ thiết lập cờ mã điều kiện .Những bit cờ mã điều kiện được sử dụng chủ
yếu cho nhánh điều kiện và cho việc lưu trữ thong tin sử dụng trong exception
hanlding
Ở bảng 1-3 thì cờ mã điều kiện C1 được sử dụng cho các hàm khác nhau khi mà
cả 2 cờ IE và SF trong thanh ghi từ dữ liệu FPU được thiết lập , chỉ ra rằng stack
bị overflow hay underflow.Ngoai lệ (#IS) Cờ C1 phân biệt giữa overflow
(C1=1) underflow(C1=0)
Khi cờ PE trong từ trạng thái được thiết lập ,nó chỉ ra độ chính xác của kết quả
(đã được làm tròn),cờ C1 được thiết lập thành 1 nếu như kết quả làm tròn trước
đó được làm tròn lên.câu lệnh FXAM thiết lậpC1 thành dấu của giá trị đang
được kiêmr tra .
cờ mã điều kiện C2 được sử dụng bởi lệnh FPREM và FPREM1 để chỉ ra quá
trình làm giảm không hoàn thành (hoặc số dư không hoàn chỉnh .Khi quá trình
làm giảm thành công thì cờ mã điều kiện C0,C3,C1 được thiết lập thành 3 bit ít
quan trong nhất của số dư(tương ứng là Q2,Q1,Q0) các lệnh
FPTAN,FSIN,SCOS,FSINCOS sẽ thiết lập cờ C2 thành 1 để chỉ ra rằng toán
hạng nguồn là vượt ra ngoài giới hạn của khoảng cho phép 2
63
1.3.3. Branching and Conditional Moves on FPU Condition
Codes
IA FPU ( bắt đầu với bộ xử lý Pentium pro hỗ trợ 2 kỹ thuật cho việc phân
nhánh và thực thi điều kiện chuyển y như là so sánh 2 giá trị dấu phẩy động
.những kỹ thuật này được chỉ ra ở đây là các kỹ thuật cũ và các kỹ thuật mới
.Những kỹ thuật cũ thì nó có trong các cấp của FPU của bộ xử lý Pentium

pro .Những kỹ thuật này sử dụng lệnh so sánh (FCOM,FCOMP, FCOMPP,
FTST, FUCOMPP, FICOM, and FICOMP) để so sánh 2 giá trị dấu phẩy động
và thiết lập cờ mã điều kiện ( C0 đến C3) theo kết quả .nội dung của cờ mã kiện
được copy sau đó vào trong cờ trạng thái của thanh ghi EFLAGS để sử dụng
cho 2 quá trình tiếp theo:
1. Lệnh FSTSW AX chuyển từ trạng thái FPU vào thanh ghi AX
2.Lệnh SAHF copy 8 bit cao của thanh ghi AX ,tính đến cả cờ mã trạng thái vào
trong 8 bit thấp của thanh ghi EFLAGS .Khi cờ mã điều kiện được nạp vào
trong thanh ghi EFLAGS thì điều kiện nhẩy hoặc điều kiện di chuyển có thể
được thực thi dựa vào các thiết lập mới cảu cờ trạng thái trong thanh ghi
EFLAGS
Những kỹ thuật mới này chỉ có trong bộ xử lý Pentium pro .việc sử dụng kỹ
thuật này ,việc so sánh dấu phẩy động mới và lệnh thiết lập EFLAGS (FCOMI,
FCOMIP, FUCOMI, and FUCOMIP) So sánh 2 giá trị dấu phẩy động và thiết lập các
cờ ZF,PF và CF trong thanh ghi trực tiếp EFLAGS một lệnh đơn theio đó sẽ được thay
thế thanh 3 câu lệnh nếu dung kũ thuật cũ
Chú ý rằng lệnh FCMOVcc ( cũng là mới trong bộ xử lý pentium pro) cho phép
điều kiện di chuyển của giá trị dấu phẩy động ( giá trị trong thanh ghi dữ liệu )
dựa trên các thuết lập của cờ trạng thái (ZF,PF,CF) trong thang ghi
EFLAGS.Những lệnh này khử đi sự cần thiết một Lệnh IF để thực hiện điều
kiện di chuyển của giá trị dấu phẩy động
1.3.4. FPU Control Word
Thanh ghi từ điều khiển 16 bit (hình 1-10) sẽ điều khiển độ chính xác của FPU
và phương thức làm tròn sử dụng .nó cũng chứa bít mặt nạ cờ ngoai lệ . Từ điều
khiển là bộ nhớ đệm trong thanh ghi điều khiển FPU .Nội dung của thanh ghi
này có thể được nạp vào với câu lệnh FLDCW và được lưu trữ trong bộ nhớ với
câu lệnh FSTCW/FNSTCW
Khi FPU khởi tạo mà không có lệnh FINIT/FNINIT or FSAVE/FNSAVE thì từ
điều khiển FPU được thiết lập thành 031FH ,việc mặt nạ tất cả dấu phẩy động
ngoại lệ ,thiết lập việc làm tròn gần nhất ,thiết lập việc độ chính xác của FPU

thành 64 bits
1.3.4.1. EXCEPTION-FLAG MASKS
Bít mặt nạ cờ ngoại lệ ( bits 0 đến 5 của từ điều khiển FPU) mặt nạ 6 cờ ngọailệ
trong từ trạng thái FPU ( cũng từ bít 0 đến 5 ) khi một trong những bits mặt nạ
được thiết lập đó là sự trao đổi thong tin ngoại lệ dấu phẩy động là theo khối từ
cái đang được sinh ra
1.3.4.2. PRECISION CONTROL FIELD
Trường điều khiển độ chính xác (PC)( bits 8-9) của từ điều khiển FPU ) sẽ quyết
định độ chính xác (64,53,24 bits) của việc phép toán dấu phẩy động thực hiện
bởi FPU ( bảng 1-4), đọ chính xác ngẫu nhiên là chính xác mở rộng ,nó sử dụng
đủ 64 bits significand có hiệu lực với các định dạng mở rộng cảu thanh ghi dữ
liệu FPU nhưng cũng có thể cấu đặt cấu hình bởi người sử dụng , trình biên dịch
hoặc hệ diều hành .Thiết lập này là phù hợp nhất cho hầu hết úng dụng bởi vì nó
cho phép các úng dụng mang đến đầy đủ sự thuận tiện cuả đọ chính xác của
định dạng số thực mở rộng
Độ chính xác kép và chính xác đơn được thiết lập sẽ giảm bớt cỡ của significand
thanhf 53 bits và 24 bits ,những thiết lập này được cung cấp để hỗ trợ chuẩn
IEEE và cho phép tái tạo lại chính xác kết quả của sự tính toán mà được thực
thực hiện ở kiểu dữ liệu chính xác thấp hơn . việc sử dụng những thiết lập này
làm vô hiệu hoá lợi thế của chiều dài significand 64 bits của định dạng số thực
mở rộng .Khi đó thì độ giảm chính xác được chỉ rõ , Việc làm tròn của giá
significand rõ rang không sử dụng những bits ở bên phải số không Bít điều
khiển đọ chính xác chỉ có hiệu lực với kết quả của nhưng lệnh đưới đây
FADD, FADDP, FSUB, FSUBP, FSUBR, FSUBRP, FMUL, FMULP, FDIV,
FDIVP, FDIVR,FDIVRP, and FSQRT.
1.3.4.3. ROUNDING CONTROL FIELD
Trường điều khiển việc làm tròn của thanh ghi điều khiển FPU (Bit 10-11) sẽ
điều khiển cách mà kết quả của lệnh dấu phẩy động được làm tròn .có 4 chế độ
làm tròn được hỗ trợ (bảng 1-5): làm tròn gần nhất , làm tròn lên , làm tròn
xuống ,lảmtòn tới 0 .Làm tròn gần nhất là chê độ mặc định và nó phù hợp với

hàu hết các ứng dụng nó cũng cung cấp hầu hết sự chính xác và thống kê được
sự ước lượng chính xác của kết quả đúng.
Chế độ làm tròn lên và làm tròn xuống thì được giới hạn trực tiếp việc làm tròn
và có thể sử dụng để thi hành sự tính toán khoảng cách 2 sự kiện , việc tính toán
này được sử dụng để mà quyết định làm là làm tròn hay là xuống để mà có kết
quả đúng của sự tính toán đa bước nhẩy ,Khi mà kết quả trung gian của phép
toán là đối tượng làm tròn .
chế độ làm tròn tiến tới 0 ( thỉnh thoảng gọi là chế độ “đỉnh”) thì được sử dụng
thường xuyên khi mà thực thi việc tính toán số nguyên với FPU
Bất cứ khi nào có thể thì những thủ tục của FPU đưa ra 1 kết qủa vô cùng chính
xác trong các định dạng đến ( single,double, extended real) tuy nhiên thường thì
kết quả vô cùng chính xác cảu 1 phép toán hoặc thao tác lưu trữ không thể mã
hoá chính xác trong các định dạng đến cảu toán hạng
Cho vd là: những giá trị sau (a) có 24 bít phân số . bit it ý nghĩa nhất của phân
số này ( bít gạch chân) không thể mã hoá chính xác trong định dạng số thực đơn
( luc đó chỉ có 23 bits phân số
(a) 1.0001 0000 1000 0011 1001 0111E2 101
Để làm tròn kết quả này (a) thì đầu tiên FPU lựa chọn 2 phân số có thể biểu diễn
được b và c mà hầu hết chúng gần a nhất(b<a<c)
(b) 1.0001 0000 1000 0011 1001 011E2 101
(c) 1.0001 0000 1000 0011 1001 100E2 101
Sau đó FPU sẽ thiết lập b và c theo chế độ làm tròn đã được lựa chọn trong
trường RC,việc làm tròn sẽ đưa ra 1 lỗi trong 1 kết quả nhỏ hơn một đơn vị ở
nơi mà kết quả đượclàm tròn
kết quả được làm tròn được gọilà kết quả không chính xác . Khi kết quả không
chính xác của thủ tục FPU,cờ (PE) chính xác dấu phẩy động được thiết lập trong
từ trạng thái
Khi mà ngoại lệ overflow được che giấu và kết quả vô cùng chính xác thì ở giữa
giới hạn xác định lớn nhất cảu giá trị cho phép trong định dạng cụ thể và dương
vô cùng , FPU sẽ làm tròn kết quả (bảng 1-6)

Khi ngoại lệ overflow được che giấu đi và kết quả vô cùng chính xác giữa giá trị
giới hạn và âm vô cùng thì FPU làm tròn kết quả ( 1-1)
Chế độ làm tròn không có ảnh hưởng tới thao tác so sánh , thào tác mà kết quả
chính xác của thủ tục hợăc thao tác mà kết quả NaN của thủ tục
1.3.5. Infinity Control Flag
Cờ điều khiển vô cùng( Bít 10 của từ điều khiển FPU ) được cung cấp cho việc tương thích
với khối đồng xử lý toán học của Intel 281 nó không có ý nghĩa trong bộ cử lý
Pentium pro hợăc cho fpu của các bộ xử lý Intel486,381.
1.3.6. FPU Tag Word
từ thẻ 16 bit(1-11) chỉ ra nội dung của 8 thanh ghỉtong ngăn xếp thanh ghi dữ
liệu FPU ( one 2-bit tag per register)mã thẻ chỉ ra có hay không 1 thanh ghi chứa
một số hợp lệ , số không ,hoặc 1số dấu chấm động đặc biệt (các định dạng NaN,
vô cùng,Không bình thường , không hỗ trợ ) hoặc có hay không nó là giá trị
rỗng(empty).từ thẻ FPU là một bộ nhớ đệm trong FPU trong thang ghi từ thẻ
FPU. Khi FPU khởi tạo mà không có các lệnh FINIT/FNINIT or
FSAVE/FNSAVE ,thì từ thẻ FPU được thiết lập thành FFFFH,mà mặt nạ cho tất
cả thanh ghi dữ liệu là rỗng(empty)
Mỗi thẻ trong từ thẻ FPU phù hợp với 1 thanh ghi về mặt vật lý( 0-1) . con trỏ ở
đỉnh stack hiện tại (TOP) được lưu trữ trong từ trạng thái có thể sử thẻ liên kết
với mối quan hệ các thanh ghi là ST(0).
FPU sử dụng giá trị thẻ để mà kiểm tra điều kiện overflow,underflow của
stack.stack xảy ra overflow khi mà con trỏ TOP bị giảm (tương ứng là nạp thanh
ghi hay thao tác push) để trỏ tới 1 thanh ghi không rỗng .stack xảy ra underflow
khi mà con trỏ TOP thì tăng lên ( tương ứng là việc lưu trữ hoặc thao tác pop) để
trỏ tới 1 thanh ghi rỗng hoặc khi 1 thanh ghi rỗng cũng xem như là toán hạng
nguồn .Một thanh ghi không rỗng được đĩnh nghĩa như là thanh ghi đang chứa
0 (01) , một giá trị hợp lệ (00) hoặc 1 giá trị đặc biệt (10)
Chương trình ứng dụng và handler có thể sử dụng thong tin của thẻ này để kiểm
tra nội dung của 1 thanh ghi dữ liệu FPU mà không thự thi thao tác giải mã rắc
rối của dữ liệu thực tại trong thanh ghi. Để dọc được thanh ghi thẻ thì nó phải

được lưu trữ trong bộ nhơ chính mà không sử dụng các lệnh
FSTENV/FNSTENV or FSAVE/FNSAVE.vị trí của từ thẻ ở trong bộ nhớ trước
khi bắt đầu lưu trữ với 1 trong các lệnh trong hình 1-13 đến 1-16.
Phần mềm không thể nạp trực tiếp hoặc chỉnh sửa thẻ trong thanh ghi thẻ . lệnh
FLDENV và FRSROR dung để nạp 1 ảnh của thanh ghi thẻ trong FPU ; tuy
nhiên FPU sử dụng những gía trị thẻ chỉ để quyết định nếu như thanh ghi dữ
liệu là rỗng (11B) hoặc không rỗng (00B,01B,10B) .Nếu như ảnh thanh ghi thẻ
chỉ ra rằng 1 thanh ghi dữ liệu là rỗng ,thì thẻ trong thanh ghi thẻ cho thanh ghi
dữ liệu đó là mặt nạ rỗng (11B) .Nếu như ảnh của thanh ghi thẻ chỉ ra rằng thanh
ghi dữ liệu là không rỗng ,FPU sẽ đọc giá trị thực tại trong thanh ghi dữ liệu và
thiết lập thẻ cho thanh ghi dữ liệu phù hợp. Hành động này ngăn cản 1 chương
trình từ các giá trị thiết lập trong thanh ghi the biểu diễn không chính xác nội
dung thực tại của thanh ghi dữ liệu không rỗng .
1.3.1. FPU Instruction and Operand (Data) Pointers
FPU lưu trữ con trỏ thành lệnh và toán hạng (dữ liệu ) cho câu lệnh không điều
khiển trước thực hiện trong thanh ghi 48 bits .con tror lệnh FPU và thanh ghi
con trỏ toán hạng FPU ( dữ liệu ) (1-5) (thong tin được lưu trữ để cung cấp trạng
thái thong tin cho các handler ngoại lệ )
Nội dung của lệnh FPU và thanh ghi con trỏ toán hạng giữ nguyên khi có bất kỳ
câu lệnh điều khiển được (FINIT/FNINIT, FCLEX/FNCLEX, FLDCW,
FSTCW/FNSTCW,
FSTSW/FNSTSW, FSTENV/FNSTENV, FLDENV, FSAVE/FNSAVE,
FRSTOR, and
WAIT/FWAIT) thực thi. Nôi dụng của thanh ghi toán hạng FPU là không xác
định nếu như câu lệnh không điều khiển ở trên không có một toán hạng nhớ.
Con trỏ lưu trữ trong lệnh FPU và thanh ghi con trỏ toán hạng bao gồm 1
offset(lưu trữ trong bits 0 đến 31) và một bộ lọc segment( Lưu trong bits 32 đến
41) Nhừng thanh ghi này có thể truy cập bơỉ các lệnh FSTENV/FNSTENV,
FLDENV, FINIT/FNINIT, FSAVE/FNSAVE and FRSTOR Lệnh FINIT/FNINITvà
FSAVE/FNSAVE sẽ xoá nhưng thanh ghi này

Cho tất cả IA FPU và NPX trừ 8081, con trỏ lệnh FPU trỏ tới bất kỳ tiền tố nào
mà nó đứng trứơc câu lệnh đó.còn 8081 ,con trỏ lệnh FPU chỉ trỏ tới opcode
thực tại
1.3.8. Last Instruction Opcode
FPU lưu trữ các opcode của câu lệnh không điều khiển trước thực hiện trong
thanh ghi opcode 11 bits. ( thong tin này cung cấp trạng thái thong tin cho các
handler ngoại lệ ) .Chỉ bytes thứ 1 và 2 của opcode (trước tât cả tìên tố) được
lưu trữ trong thanh ghi opcode FPU .hình 1-12chỉ ra việc mã hoá những byte
này .khi 5 bít cao của byte đầu tiên opcode thì cũng giống như tất cả opcode
dấu phẩy động (11011B) chỉ 3 bít thấp của byte này được lưu trữ trong thanh
ghi mã thao tác.
1.3.9. Saving the FPU’s State
Những lệnh FSTENV/FNSTENV and FSAVE/FNSAVE được lưu trữ trong
thong tin trạng thảiting bộ nhớ để sử dụng bởi các handler ngoại lệ và hệ thống
khác và các phần mềm ứng .Các lệnh FSTENV/FNSTENV sẽ lưu trữ nội dung
của thanh ghi trạng thái , điều khiển, thẻ, con trỏ lệnh FPU,con troe toán hạng ,
thanh ghi mã thao tác . lệnh FSAVE/FNSAVE sẽ lưu trữ thong tin cộng với nội
dung của thanh ghi dữ liệu FPU.chú ý rằng lệnh FSAVE/FNSAVE cũng khởi
tạo FPU thành giá trị mặc định ( như là các lệnh FINIT/FNINIT )sau đó nó lưu
trữ trạng thái ban đầu của FPU.
Cách mà thong tin được lưu trữ trong bộ nhớ phụ thược vào chế độ hoạt động
của bộ xử lý (chế độ bảo vệ hoặc chế đọ địa chỉ thực )và cỡ của toán hạng trong
hiêu ứng 32 hay 16 bít hình 1-13 đến 1-16 trong chế độ ảo 8086 hoặc SMM,
định dạng chế độ địa chỉ thực chỉ ra ở hình1-16
Lệnh FLDENV và FRSROR cho phép thong tin trạng thái FPU được nạp từ bộ
nhớ chính và trong FPU . Đây là câu lệnh FLDENV nạp thanh ghi trạng thái ,
điều khiển ,thẻ,con trỏ lệnh FPU, con trỏ toán hạng ,mã thao tác và lệnh
FRSTOR nạp tất cả thanh ghi FPU kể cả ngăn xếp thanh ghi FPU.
1.4. FLOATING-POINT DATA TYPES AND FORMATS
IA FPU nhân ra và thao tác trên 1 loại dữ liệu , chia chúng thành 3 nhóm : reals,

integers,
and packed BCD integers. Hình 1-11 chỉ ra định dạng dữ liệu cho mỗi kiểu dữ
liệu .bảng 1-8 chỉ ra chiều dài , độ chính xác ,và khoảng gần đúng bình thường
mà có thể biểu diễn mỗi kiểu dữ liệu .Giá trị không binh thường cũng được hỗ
trợ trong mỗi kiểu số thực Với định dạng mở rộng 80 bits ngoại lệ ,tất cả những
kiểu dũ liệu này chỉ tồn tại trong bộ nhớ.Khi chúng chúng được nạp vào trong
thanh ghi dữ liệu ,chúng được chuyển thành định dạng số thực mở rộng và toán
hạng trong định dạng đó
When stored in memory, the least significant byte of an FPU data-type value is stored at the
initial address specified for the value. Successive bytes from the value are then stored in
successively
higher addresses in memory. The floating-point instructions load and store memory operands
using only the initial address of the operand.
Khi lưu trữ trong bộ nhớ ,byte ít quan trọng nhất của một giá trị kiểu dữ liệu
được lưu trữ trong địa chỉ đầu tiên chỉ rõ cho giá trị đó . Những byte tiếp theo
của giá trị sau đó lưu trữ trong lần lượt địa chỉ cao nhất trong bộ nhớ.Những
lệnh dấu chấm động nạp và lưu toán hạng nhớ sử dụng địa chỉ đầu của toán hạng
1.4.1. Real Numbers
Có 3 kiểu số thực FPU (single-real, double-real, and extended-real) sự phù hợp của
các chuẩn chỉ ra trong chuẩn IEEE. Định dạng chính xác mở rộng là định dạng
sử dụng bởi thanh ghi dữ liệu trong FPU .bảng 1-8 đưa ra độ chính xác va giới
hạn của những kiểu dữ liệu này trong hình 1-11 đưa ra định dạng cho single-
real and double-real formats, chỉ phần phân số (fraction) của significand thì
được mã hoá. số nguyên thì được có vẻ như trở thành 1 trong tất cả số trừ số 0
và số giới hạn không binh thường .cho tất cả định dạng extended-real ,số
nguyên chứa trong 63 bit và hầu hết các significant fraction bit là 62 bit. ở đây
số nguyên thì rõ rang thíêt lạp thành 1 cho tất cả số bình thường ,vô cùng ,và
NáN và số 0 cho zero và những số không bình thường
Số mũ của mỗi loại dữ liệu số thực được mã hoá trong địnhdạng biased. Cái
Biasing là bất biến được thiêt lập thành 121 cho single-real , 1023 cho double-

real , 16383 cho the extended-rea.
bảng 1-9 chỉ ra việc mã hoá cho tất cả các lớp của số thực(zero, denormalized
finite,
normalized-finite, and ∞) và NaNs cho mỗi một trong 2 kiểu dữ liệu .Nó cũng
đưa ra đinh dạng cho giá trị số thự không rõ ràng.
Khi việc lưu trữ giá tri số thực trong bộ nhớ , giá trị single-real được lưu trữ trong
4 byte lien tục trong bộ nhớ , giá trị double-real được lưu trữ trong 8 bytes lien tiếp
nhau và giá trị extended-real được lưu trữ trong 10 bytes lien tiếp nhau
Một luật chung là giá trị nên được lưu trữ trong bộ nhớ chính ở định dạng
double-real . ở định dạng nay thì nó cung cấp1 khoảng đủ và độ chính xác để trả
lại kết quả .kiểu định dạng single-real thì lại phù hợp cho các ứng dụng mà bị
chi phối bởi bộ nhớ.Tuy nhiên nó cung cấp độ chính xác thấp hơn và có khả
năng cao hơn bị overflow, định dạng single-real cũng được sử dụng cho thuật
toán gỡ rối ,bởi vì vấn sề làm tròn sẽ thể hiện chúng 1 cách nhanh chóng trong
định dạng này . Định dạng extended-real thì bình thường dành cho việc giữ kết
quả trung gian trong thanh ghi FPU và hằng số.chiều dài chính xác thì được thiết
kế để đưa ra kết quả cuối cùng từ ảnh hưởng của việc làm tròn và verflow
underflow trong phép tính toán trung gian .Tuy nhiên khi 1 ứng dụng yêu cầu
giới hạn lớn nhất và độ chính xác của FPU (cho dữ liệu lưu trữ ,phép toán ,kết
quả )giá trị có thể được lưu trữ trong bô nhớ ở định dạng extended-real. Giá trị
số thực vô cùng là một QNaNs việc mã hoá đó được lưu trữ bởi lệnh dấu phẩy
động trong sự trả lời để ngoại lệ thao tác không hợp lệ dấu phẩy động mặt nạ.
1.4.2. Binary Integers
Có 3 loại số thực nhị phân (word, short, and long) chúng có định dạng giống
nhau ngoại trừ kiểu Length.
Hầu hết bít ý nghĩa của mỗi định dạng là bit dấu(0 cho số dương và 1 cho số
âm.giá trị số dương được biểu diễn trong chuẩn bù 2 .số lượng số 0 thì được
biểu diễn với tất cả các bit (kể cả bít dấu) thiết lập là 0 .chú ý rằng kiểu dữ liệu
word số nguyên của FPU thì giống với kiểu word số nguyên sử dụng trong khối
xử lý số nguyên và định dạng shortinteger thì giống như là kiểu dữ liệu

doubleword-số nguyên .giá trị word được lưu trữ trong 2 byte lien tiếp nhau
trong bộ nhớ .giá trị shortinteger thì được lưu trữ trong 8byte liên tiếp .khi thanh
ghi dữ liệu được nạp vào trong bộ nhớ thì tất cả số nguyên nhị phânđược biểu
diễn chính xác trong định dạng mở rộng.
số nguyên nhị phân được mã hoá 100 00B biểu diễn 2 thứ ,phụ thuộc vào hoàn
cảnh mà nó được sử dụng:
• Độ rộng nhất số âm lớn nhất được hỗ trợ (–215, –231, or –263).
• gia trị số nguyên không giới hạn .Nếu nhưviệc mã hopá được sử dụng như là
toán hạng nguồn
Gía trị được định nghĩa là số nguyên :
Nếu như việc mã hoá này được sử dụng như là một toán hạng nguồn ( như là
câu lệnh bạp số nguyên hoặc cau lệnh tính toán số nguyên) thì FPU hiểu nó như
là số âm lớn nhất có thể biểu diễn được trong định dạng số được sử dụng.Nếu
như FPU kiểm tra 1 thao tác không hợp lệ khi đó việc lưu trữ một giá trị số
nguyên trong bộ nhớ với lệnh FIST/FISTP và thao tác lỗi ngoại lệ thì bị mask,
FPU lưu trữ việc mã hoá định nghĩa số nguyên trong toán hạng đến như là 1
mask trả lời cho exception. Trong tình huống nơi mà giá trị nguyên thuỷ với
kiểu mã hoá này có thể bị nhập nhằng , thì cờ ngoại lệ (exception flag) thao tác
không hợp lệ có thể được xem xét nếu như giá trị được tạo ra khi mà nó là câu
trả lời cho 1 ngoại lệ . Nếu như định nghĩa số nguyên được lưu trữ trong bộ nhớ
và việc nạp gần nhất được nạp trở lại thanh ghi ,thì nó được hiểu như là số âm
lớn nhất được hỗ trợ bởi định dạng đó.
1.4.3. Decimal Integers
Số nguyên hệ đếm cơ số 10 được lưu trữ 10 byte 1 ,trong định dạng packed
BCD. bảng 1-8 đưa ra độ chính xác và khoảng rộng của dữ liệu và hình 1-11 chỉ
ra định dạng ,trong này thì 9 byte giữ 18 số BCD , 2 số đơn vị byte số ít có ỹ
nghĩa nhất trong được lưu trữ trong 1 nửa byte thấy nhất của byte 0 và hầu hết
số có ý nghĩa được chứa trong 1 nửa byte cao của 9 byte . Hầu hết bít có nghĩa
của 10 byte chứa bit dấu .số nguyên âm hệ đếm cơ số 10 không được lưu trữ
trong trong 2 hình thức bù .chúng được biểu lộ trong hình thức số nguyên dương

chỉ khác ở bit dấu bảng 1-11
Kiểu hệ đếm cơ số 10 không giới hạn vịêc mã hoá được lưu trữ bởi câu lệnh
FBSTP trong việc trả lời cho 1 ngoại lệ thao tác không hợp lệ dấu chấm động
masked.sự cố gắng nạp 1 giá trị với lệnh FBLD cung cấp 1 kết quả không rõ
rang
1.5.5. Basic Arithmetic Instructions
những lệnh dưới dây thao tác trên số thực (chuẩn IEEE 154)
FADD/FADDP : Thêm số thực
FIADD : chuyển số nguyên thành số thực
FSUB/FSUBP : Trừ số nguyên
FISUB : Trừ số nguyên từ số thực
FSUBR/FSUBRP : Trừ ngược số nguyên
FISUBR Reverse: Trừ số thực từ số nguyên
FMUL/FMULP : Nhân số nguyên
FIMUL: Nhân số nguyên bằng số rhực
FDIV/FDIVP : Chia số nguyên
FIDIV: Chia số nguyên bằng số thực
FDIVR/FDIVRP: Đảo ngược phép chia
FIDIVR : Đảo ngược phép chia số nguyên bằng số thực
FABS : Làm tròn giá trị
FCHS : Đổi dấu
FSQRT Căn bậc hai
FPREM : số dư riêng phần
FPREM1 : số dư riêng phần IEEE
FRNDINT : Làm tròn toàn bộ giá trị
FXTRACT: trích phần exponent và significand
1.5.6. Comparison and Classification Instructions
Những lệnh sau đây so sánh hoặ sắp xếp giá trị số thực
FCOM/FCOMP/FCOMPP : so sánh và thiết lập cờ mã điều kiện FPU.
FUCOM/FUCOMP/FUCOMPP: so sánh không được sắp xếp lôn xộn và thiết

lập cờ mã điều kiện
FICOM/FICOMP : so sanhs số nguyên và thiết lập cờ mã điều kiện.
FCOMI/FCOMIP:so sánh và thiết lập cờ trạng thái FPU.
FUCOMI/FUCOMIP : so sánh và sắp xếp không lộn xộn và thiết lập cờ trạng
thái.
FTST kiểm tra (so sánh số thực với 0.0).
FXAM kiểm tra
1.5.1. Trigonometric Instructions
lệnh dung trong lượng giác
FSIN : Sine
FCOS: Cosine
FSINCOS: Sine and cosine
FPTAN: Tangent
FPATAN : Arctangent
1.5.11. FPU Control Instructions
Lệnh điều khiển trạng thái và chế độ của FPU.
FINIT/FNINIT :Khởi tạo FPU
FLDCW Load FPU: điều khiển word
FSTCW/FNSTCW : Lưu trữ FPU control word
FSTSW/FNSTSW : lưu trữ FPU status word
FCLEX/FNCLEX :Xoá FPU exception flags
FLDENV Load FPU Môi trường
FSTENV/FNSTENV : Luu trữ FPU environment
FRSTOR : Khôi phục trạng thái FPU
FSAVE/FNSAVE Luu trữ trạng thái FPU
FINCSTP :Tăng FPU register stack pointer
FDECSTP : giảm FPU register stack pointer
FFREE : thanh ghi FPU rỗi FPU register
FNOP : Không có thao tác nào
WAIT/FWAIT : Kiểm tra and handle pending unmasked FPU exceptions

Các câu lệnh chi tiết của FPU được chỉ ra trong” Intel Architecture Software
Developer’sManualVolume 1:Basic Architecture chương 6”

×