浮點處理器

浮點處理器

在計算機科學中,浮點(floating point)是一種對於實數的近似值數值表現法,由一個有效數字(即尾數)加上冪數來表示,通常是乘以某個基數的整數次指數得到。浮點處理器是指專門用於處理浮點運算的處理器,在大多數計算機中,浮點處理器是協處理器。

基本信息

簡介

浮點處理器是指計算機中用於處理浮點數運算的處理器,在大多數情況下,浮點處理器只是作為輔助處理器,完成中央處理器完成其無法執行或執行效率、效果低下的處理工作。在科學計算中,由於大部分計算都是浮點數運算,這時浮點處理器可以加快運算速度和提高系統執行效率,這時的浮點處理器一般也稱作定製處理器。

浮點數

定義

整數動態範圍 整數動態範圍

浮點型簡單講就是實數的意思。浮點數在計算機中用以近似表示任意某個實數。具體的說,這個實數由一個整數或定點數(即尾數)乘以某個基數(計算機中通常是2)的整數次冪得到,這種表示方法類似於基數為10的科學記數法。利用浮點進行運算,稱為浮點計算,這種運算通常伴隨著因為無法精確表示而進行的近似或捨入。

浮點數動態範圍 浮點數動態範圍

浮點數用於表示非整數數值。它由3個域組成:符號、指數、尾數。這種表示方法能夠極大拓展數值編碼的範圍,因此浮點數是處理實數的選擇。利用處理器中集成的浮點運算單元(FPU),可以加快浮點運算的速度。浮點的一種替代方案是定點,定點的指數域採用固定形式。但是,如果在沒有 FPU 的處理器上使用定點,儘管可以獲得更快的運算速度,但數值範圍和動態範圍較小。因此,在使用定點方法時,開發人員必須仔細檢查定點算法中的縮放比/飽和問題。C 語言為浮點運算提供 單精度和 雙精度兩種類型。matlab 或 scilab 等高級建模工具主要使用單精度或雙精度浮點生成 C 代碼。如果不支持浮點,則必須修改生成的代碼,使其適合定點。同時,所有浮點運算代碼都需要由程式設計師手動編寫。在代碼中使用原生浮點運算時,可有效縮短項目的開發時間。浮點運算是實現任何數學算法有效的方法。

浮點運算單元

由於浮點運算適合兩個數之間的任何運算,因此它需要非常多的資源。例如,我們需要:

對齊兩個數值(使兩個數值的指數相同) 執行運算;捨入結果;對結果進行編碼。

在沒有 FPU 的處理器上,這些運算全部由軟體通過 C 編譯器庫完成,並且對程式設計師不可見;但這樣做性能非常低。在有 FPU 的處理器上,對於大部分指令而言,所有運算都由硬體在單個周期內完成。C 編譯器不使用其自身的浮點庫,但會直接生成 FPU 原生指令。

在有 FPU 的處理器上執行數學算法時,程式設計師不必在性能和開發時間之間做出選擇。利用FPU,可以通過 matlab 或 scilab 等高級工具直接可靠地使用任何生成的代碼,同時確保實現性能。

標準

IEEE.754  單精度和雙精度浮點編碼 IEEE.754 單精度和雙精度浮點編碼

在計算機科學領域,浮點運算已有多年的使用歷史。早在上世紀三十年代末,德國的Konrad Zuse 開發 Z 系列計算機時,就已開始使用浮點運算。但是,由於支持浮點運算的硬體實現起來非常複雜,因此數十年來浮點運算一直沒有得到廣泛套用。上世紀五十年代中期,IBM 公司在其 704 大型機中引入 FPU;到七十年代,儘管已有多種平台支持浮點運算,但這些平台都採用自己的編碼技術。1985 年,IEEE 發布了統一浮點運算的 754 標準,定義了支持浮點運算的通用方法。C 語言的浮點數類型 Float 和 Double 採納了IEEE754 標準中所定義的單精度 32 位浮點數和雙精度 64 位浮點數的格式 。

數值格式

所有值均由三個域組成:

符號:s

偏置指數:

— 指數之和 = e

— 常數值 = 偏置值

小數(或尾數):f

可以使用各種長度對值進行編碼:

16 位:半精度格式

32 位:單精度格式

64 位:雙精度格式

IEEE 定義了五類不同的數:

規格化數:標準浮點數

IEEE.754  數值格式的取值範圍 IEEE.754 數值格式的取值範圍

非規格化數:非規格化數用於表示過小而無法規格化的值(當指數為 0 時)。

零:零值加上符號用於表示飽和運算(正或負)。指數和小數均為空。

無窮大:無窮大值加上符號用於表示 +∞ 或 -∞。溢出或除以 0 時會產生無窮大值。指數設定為其最大

值,尾數為空。

NaN(非數字):NaN 用於表示不明確的運算結果,例如 0/0 或負數的平方根。指數設定為其最大值,尾數不為空。尾數的 MSB 用於判斷該值是 QNaN(可通過後續運算傳播)還是 SNaN(生成錯誤)。

捨入模式

該標準定義了以下四種主要捨入模式:

最近捨入

向 +∞ 捨入

向 -∞ 捨入

向 0 捨入

最近捨入是默認的捨入模式(最常用)。如果與兩個最近值的距離相等,則選擇 LSB 等於 0的值。捨入模式會改變算數運算的結果,因此非常重要。可以通過 FPU 配置暫存器更改捨入模式。

異常和異常處理

該標準支持 5 種異常:

無效運算:運算結果為 NaN

除以零

上溢:根據捨入模式,運算結果為 +/-∞ 或 +/-最大值

下溢:運算結果為非規格化數

結果不準確:由捨入所致

可用兩種方式處理異常:

可以生成陷阱。陷阱處理程式會返回要使用的值來替代異常結果。

可以生成中斷。中斷處理程式不能返回要使用的值來替代異常結果。

協處理器

為了提高計算機運算速度,用來彌補微處理器在數值計算方面不足的浮點運算部件 。是微處理器的一種。是一種協助中央處理器完成其無法執行或執行效率、效果低下的處理工作而開發和套用的處理器。這種中央處理器無法執行的工作有很多,比如設備間的信號傳輸、接入設備的管理等;而執行效率、效果低下的有圖形處理、聲頻處理等。為了進行這些處理,各種輔助處理器就誕生了。整數運算器與浮點運算器已經集成在一起,因此浮點處理器已經不算是輔助處理器。而內建於CPU中的協處理器,同樣不算是輔助處理器,除非它是獨立存在。

相關詞條

熱門詞條

聯絡我們