天天看點

【Computer Organization筆記06】浮點數的資料表示,浮點數加減運算

本次筆記内容:

P11 計算機組成原理(11)

P12 計算機組成原理(12)

本節課對應幻燈片:組成原理13 data,第72頁起。此外,本節課内容“浮點數”已經在“彙編語言”中詳細講解過,具體可見如下筆記:

  • 【彙編語言與計算機系統結構筆記03】浮點數的計算機表示,IEEE 754,舍入(rounding),C語言中的浮點數
  • 【例題】給定一個浮點格式(IEEE 754),有k位指數和n位小數,對于下列數,寫出階碼E、尾數M、小數f和值V的公式。另外,請描述其位表示。

本次筆記内容可能較少——隻記錄跟硬體相關的(彙編中未提及的)。

文章目錄

      • 浮點數已有知識概括
      • 浮點數的進制轉換
      • 浮點數的運算
        • 浮點數加減運算
        • 浮點運算的特點
      • 浮點運算部件
        • Intel 80287
        • 後來沒有獨立浮點數處理器,都內建到CPU内部
      • 資料及資料類型

浮點數可以了解為二進制的科學計數法,其中尾數和階需要記錄在計算機内。

資料想要符合計算機記錄規範,需要進行“規格化”處理,然後記錄在計算機裡。

【Computer Organization筆記06】浮點數的資料表示,浮點數加減運算

這張圖其實比較清晰。

【Computer Organization筆記06】浮點數的資料表示,浮點數加減運算

對于如 ( − 2 − 126 , 2 − 126 ) (-2^{-126},2^{-126}) (−2−126,2−126)的部分,由第二行非規格化數表示。

在計算機運算中,如果由一個數是NaN,那麼其結果一定是NaN。

【Computer Organization筆記06】浮點數的資料表示,浮點數加減運算

十進制到二進制:

【Computer Organization筆記06】浮點數的資料表示,浮點數加減運算

對于除數不是2的整數倍的:則需要舍入。

【Computer Organization筆記06】浮點數的資料表示,浮點數加減運算

首先應該“對階”。

X = M X × 2 E X        Y = M Y × 2 E Y X = M_X \times 2^{E_X} \; \; \; Y = M_Y \times 2^{E_Y} X=MX​×2EX​Y=MY​×2EY​

  1. 對階操作,求階差: Δ E = M X − M Y \Delta E = M_X - M_Y ΔE=MX​−MY​,使階碼小的數的尾數右移 ∣ Δ E ∣ |\Delta E| ∣ΔE∣位(右移出的數,被放到保護位中),其階碼取大的階碼值;
  2. 尾數加減;
  3. 規格化處理;
  4. 舍入操作,可能帶來又一次規格化;
  5. 判斷正确性,是否有溢出等。

  • 浮點加、減法不滿足結合律;
  • 浮點加、減法不可結合;
  • 浮點數最好不要進行相等比較。

【Computer Organization筆記06】浮點數的資料表示,浮點數加減運算

兩個ALU分别計算階數與尾數。

【Computer Organization筆記06】浮點數的資料表示,浮點數加減運算

在 Intel 80297 中:

  • 浮點運算部件以協處理器方式和CPU連接配接,有獨立的控制邏輯;
  • 8個80位浮點數寄存器,精度更高,采用堆棧結構并進行了擴充;
  • 支援3大類共7種資料,支援約60條指令。

【Computer Organization筆記06】浮點數的資料表示,浮點數加減運算