BTL Kiến Trúc Máy Tính
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.
BTL Kiến Trúc Máy Tính
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
BTL Kiến Trúc Máy Tính
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.”)
BTL Kiến Trúc Máy Tính
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).
BTL Kiến Trúc Máy Tính
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
BTL Kiến Trúc Máy Tính
đượ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ệ
BTL Kiến Trúc Máy Tính
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
BTL Kiến Trúc Máy Tính
• 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)”).
BTL Kiến Trúc Máy Tính
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);
BTL Kiến Trúc Máy Tính
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