微處理器設計/浮點運算單元
外觀
< 微處理器設計
與算術邏輯單元 (ALU) 相似的是浮點運算單元 (FPU)。FPU 對浮點數執行算術運算。
FPU 的設計很複雜,儘管 IEEE 754 標準有助於回答有關實現的一些具體問題。設計 FPU 時並非總是需要遵循 IEEE 標準,但它確實很有幫助。
本節只是簡單地回顧一下浮點數。有關更多資訊,請參閱浮點書。
浮點數由兩部分指定:指數 (e) 和尾數 (m)。浮點數的值 v 通常計算如下
IEEE 754 格式的數字計算如下
尾數 m 在此標準中是“規範化”的,因此它介於 1.0 和 2.0 之間。

兩個浮點數的相乘如下所示
同樣,除法可以透過以下方式執行
因此,要執行浮點乘法,我們可以遵循以下步驟
- 將尾數與指數分離
- 將尾數部分相乘(或相除)
- 將指數相加(或相減)
- 將這兩個結果組合成新值
- 規範化結果值(可選)。
浮點加法——以及擴充套件後的減法——比乘法更難。浮點數只能在它們的指數相同時相加。這意味著當我們將兩個數字相加時,首先需要對數字進行縮放,使它們具有相同的指數。以下是演算法
- 將每個數字的尾數與指數分離
- 比較兩個指數,並確定它們之間的差異。
- 將差異加到較小的指數中,以使兩個指數相同。
- 將具有較小指數的數字的尾數邏輯右移一個等於差異的位數。
- 將兩個尾數相加
- 規範化結果值(可選)。
正如我們在上面兩個演算法中看到的,FPU 需要以下元件
- 對於加法/減法
- 一個比較器(減法器)來確定指數之間的差異,以及確定兩個指數中較小的一個。
- 一個加法器單元,將該差異加到較小的指數中。
- 一個移位單元,將尾數移位指定的位數。
- 一個加法器,將尾數相加
- 對於乘法/除法
- 一個用於尾數部分的乘法器(或除法器)
- 一個用於指數部分的加法器。
兩種運算型別都需要一個複雜的控制單元。
兩種演算法都需要某種用於指數部分的加法/減法單元,因此似乎可以使用一個元件來執行這兩個任務(因為加法和乘法不會在同一個單元中同時發生)。由於指數通常比尾數字段小,因此我們將其稱為“小 ALU”。我們還需要一個 ALU 和一個乘法器單元來處理尾數上的運算。如果將兩者結合起來,我們可以稱這個單元為“大 ALU”。我們還可以將用於尾數的快速移位器整合到大 ALU 中。
一旦我們設計了一個整數 ALU,我們就可以將這些元件幾乎直接複製到我們的 FPU 設計中。