FPU:(Float Point Unit,浮點運算單元)FPU是專用于浮點運算的處理器,以前的FPU是一種單獨芯片,在486之后,英特爾把FPU集成在CPU之內(nèi)。
浮點運算器(英文:floating point unit,簡稱FPU)是計算機系統(tǒng)的一部分,它是專門用來進行浮點數(shù)運算的。典型的運算有加減乘除和開方。一些系統(tǒng)(尤其是比較老的,基于微代碼體系的)還可以計算超越函數(shù),例如指數(shù)函數(shù)或者三角函數(shù),盡管對大多數(shù)現(xiàn)在的處理器,這些功能都由軟件的函數(shù)庫完成。在大多數(shù)現(xiàn)在的通用計算機架構中,一個或多個浮點運算器會被集成在CPU(Central Processing Unit,中央處理器)中,但許多嵌入式處理器(特別是比較老的)沒有在硬件上支持浮點數(shù)運算。在過去,一些系統(tǒng)通過協(xié)同處理器而不在同一個處理器中來處理浮點數(shù)。在微型計算機時代,這一般只用一個芯片;而在以前,可能要用一整個電路板甚至一臺機箱。不是所有的計算機架構中都有硬件的浮點運算器。在沒有硬件浮點運算器的情況下,許多浮點數(shù)的運算也可以像有硬件那樣做到。這樣可以節(jié)省浮點運算器的硬件成本,但這樣會使計算變得慢得多。仿硬件浮點運算可以通過多種層次的方法實現(xiàn)——在CPU中用微代碼處理,用操作系統(tǒng)的函數(shù)處理,用用戶自己的代碼處理。在大多數(shù)現(xiàn)代計算機的架構中,一些浮點數(shù)運算跟整數(shù)運算是分開的。這些分別在不同的架構上差別很大。有一些架構,例如英特爾(Intel)的x86處理器設計了浮點數(shù)寄存器,另一些架構中,處理浮點數(shù)甚至有獨立的時頻時域。當CPU執(zhí)行一個需要浮點數(shù)運算的程序時,有三種方式可以執(zhí)行:軟件仿真器(浮點運算函數(shù)庫)、附加浮點運算器和集成浮點運算器。多數(shù)現(xiàn)在的計算機有集成的浮點運算器硬件。
浮點數(shù)運算常常是用特別的總線傳輸?shù)?。在早期的沒有中斷機制的大尺度架構(的處理器)中,浮點運算有時與整數(shù)運算獨立傳輸。今時今日,許多CPU或架構都有超過一個浮點運算器,例如PowerPC 970 和基于Netburst和AMD64架構的處理器(分別例如奔騰(Pentium)4和速龍(Athlon)64)
浮點數(shù)運算常常是用特別的總線傳輸?shù)?。在早期的沒有中斷機制的大尺度架構(的處理器)中,浮點運算有時與整數(shù)運算獨立傳輸。今時今日,許多CPU或架構都有超過一個浮點運算器,例如PowerPC 970 和基于Netburst和AMD64架構的處理器(分別例如奔騰(Pentium)4和速龍(Athlon)64)
浮點加法減法運算設有兩個浮點數(shù)x和y,它們分別為x = Mx*2^Exy =
My*2^Ey其中Ex和Ey分別為數(shù)x和y的階碼,Mx和My為數(shù)x和y的尾數(shù)。兩浮點數(shù)進行加法和減法的運算規(guī)則是設 Ex小于等于Ey,則 x±y =
(Mx*2^(Ex-Ey)±My)*2^Ey,完成浮點加減運算的操作過程大體分為四步:1. 0 操作數(shù)的檢查;2. 比較階碼大小并完成對階;3.
尾數(shù)進行加或減運算;4. 結果規(guī)格化并進行舍入處理。⑴ 0
操作數(shù)檢查浮點加減運算過程比定點運算過程復雜。如果判知兩個操作數(shù)x或y中有一個數(shù)為0,即可得知運算結果而沒有必要再進行后續(xù)的一系列操作以節(jié)省運算時間。0操作數(shù)檢查步驟則用來完成這一功能。⑵
比較階碼大小并完成對階兩浮點數(shù)進行加減,首先要看兩數(shù)的階碼是否相同,即小數(shù)點位置是否對齊。若二數(shù)階碼相同,表示小數(shù)點是對齊的,就可以進行尾數(shù)的加減運算。反之,若二數(shù)階碼不同,表示小數(shù)點位置沒有對齊,此時必須使二數(shù)階碼相同,這個過程叫作對階。要對階,首先應求出兩數(shù)階碼Ex和Ey之差,即△E
= Ex-Ey若△E=0,表示兩數(shù)階碼相等,即Ex=Ey;若△E>0,表示Ex>Ey;若△E<0,表示Ex