計算機組成原理知識點-第二章

計算機組成原理(第二章)

第二章思維導圖如下:

在這裏插入圖片描述

0. 數據類型

  1. 按數制分:二值進制、十進制、八進制、十六進制。
  2. 按數據格式分: 真值、機器數。
  3. 按數據的表示範圍分:定點數、浮點數。
  4. 按能否標識負數分:無符號數、有符號數。

1. 數據與文字的表示方法

1.1 數據格式

定點數

  1. 定點數:小數點固定在某一位置的數據。
    • 純小數:x0.x1x2x3xnx_0 . x_{-1}x_{-2}x_{-3}……x_{-n}
      • 表示形式:xsx_s 爲符號位 ;x0x_0爲0。
        有符號數:x=xsx1x1xnx=x_sx_{-1}x_{-1}……x_{-n} x12n|x|\le1-2^{-n}
        無符號數:x=x0x1x1xnx=x_0x_{-1}x_{-1}……x_{-n} 0x12n0 \le |x|\le1-2^{-n}
    • 純整數:xnxn1xn2x1x0x_{n} x_{n-1}x_{n-2}……x_{1}x_0
      • 表示形式:xsx_s 爲符號位 ;xnx_n爲數值位。
        有符號數:$x=x_sx_{n-1}……x_{1}x_{0} $ x12n|x|\le1-2^{-n}
        無符號數:x=xnxn1x1x0x=x_nx_{n-1}……x_{1}x_{0} 0x12n0 \le |x|\le1-2^{-n}
  2. 定點機的特點:
    • 所能表示的數據範圍小;
    • 數據精度較低;
    • 存儲單元利用率低。

浮點數

  1. 浮點數:小數點位置可變,形如科學計數法中的數據表示。

  2. 格式定義:

    • M:尾數,是一個純小數,表示數據的全部有效數位,其位數決定數值的精度;
    • R:基數,可以取2、8、10、16,表示當前的數制;
    • e:階碼,是一個整數,用於指出小數點在該書中的位置,其位數決定數據的取值範圍;
  3. 機器數的一般表示形式:

    階符 階碼 數符 尾數
    數符 階符 階碼 尾數
  4. 規格化表示:

    • 要求:|尾數| \ge 0.5,( 是否爲規格化浮點數與階碼無關 );
      • 尾數原碼錶示:最高數值位爲1;
      • 尾數補碼錶示:最高數值位與符號位相反;
    • 處理:
      • 左規處理(數值向左移動);
      • 右規處理(數值向右移動);
  5. 最值:

在這裏插入圖片描述

  1. 32位浮點數的IEEE754標準表示:
    | 數符S | 階碼E | 尾數M |

    • 數符S:1位,表示浮點數的符號;
    • 尾數M:23位,原碼純小數表示,小數點在尾數域的最前面;
    • 階碼E:8位,採用有偏移值的移碼錶示(移127碼);
    • 真值:N=(1)S(1.M)2E127N=(-1)^S * (1.M)*2^{E-127}
  2. S E M
    正零 0 0000 0000 000……000
    負零 1 0000 0000 000……000
    正無窮 0 1111 1111 000……000
    負無窮 1 1111 1111 000……000

1.2 數的機器碼錶示

原碼

  1. 定義:
    • 定點小數:
      [x]{x,1>x01x=1+x,0 x>-1 [x]_原 \begin{cases} x, & \text{1>x$\ge$0} \\[3ex] 1-x=1+|x|, & \text{0$\ge$ x>-1} \end{cases}
    • 定點整數:
      [x]{x,2n>x01x=1+x,0 x>2n [x]_原 \begin{cases} x, & \text{$2^n$>x$\ge$0} \\[3ex] 1-x=1+|x|, & \text{0$\ge$ x>$-2^n$} \end{cases}
  2. 特點:
    • 0的有兩種表示法;[+0]=0000[0]=1000[+0]_原=0000;[-0]_原=1000
    • 數據表示範圍:
      • 定點小數:1<x<1-1<x<1
      • 定點整數:2n<x<2n-2^n<x<2^n
    • 符號位與數值位不能一起參與運算

補碼

  1. 定義:

    • 定點小數:
      [x]{x,1>x02+x=2x,0 x-1(mod 2) [x]_補 \begin{cases} x, & \text{1>x$\ge$0} \\[3ex] 2+x=2-|x|, & \text{0$\ge$ x$\ge$-1} \end {cases} (mod \ 2)
    • 定點整數:
      [x]{x,2n>x02n+1+x=2n+1x,0 x -2n(mod 2n+1) [x]_補 \begin{cases} x, & \text{$2^n$>x$\ge$0} \\[3ex] 2^{n+1} +x=2^{n+1}-|x|, & \text{0$\ge$ x $\ge$-$2^n$} \end {cases} (mod \ 2^{n+1})
  2. 特點:

    • 0的編碼唯一:0000
    • 數據表示範圍:
      • 定點小數:1<x<1-1<x<1
      • 定點整數:2nx<2n-2^n\le x<2^n
    • 只要結果不溢出,符號位可與數值位一起參與運算
    • [[x]]=[x][[x]_補]_補 = [x]_原
  3. 有原碼求補碼

    • 符號位以外,其餘各位按位取反,末位加一;
    • 符號位以外,從最低位開始,遇到的第一個1以前各位保持不變,之後各位取反。
  4. 求相反數的補碼:由[x][x]_補[x][-x]_補 (連同符號位的所有位一起取反,末位加一)。

移碼

  1. 定義:
    [x]=2n+x                   2n>x2n [x]_移=2^n+x \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2^n>x\ge-2^n
  2. 特點:
    • 0的表示方法唯一:1000;
    • 與補碼符號位相反,數值位相同;
    • 最高位爲0表示負數,爲1表示整數;
    • 可以較爲直觀的判斷兩個數據的大小(全爲0時所對應真值最小,全爲1時所對應真值最大);
    • 表示浮點數階碼時,容易判斷是否下溢。

1.3 字符與字符串的表示方法

  1. ASCII碼:8位,可表示128個字符,最高位爲0,最高位可進行奇偶校驗。
  2. 字符串:連續的一串字符,每個字節存一個字符。

1.4 校驗碼

  1. 數據校驗的基本原理是擴大碼距。
  2. 碼距:任意兩個合法碼之間不同的二進制位的最少位數。

奇偶校驗碼

  1. 原理:在數據中增加1位奇偶校驗位,是碼距有1增到2。
  2. 類型:
    • 偶校驗:每個碼字(包括校驗位)中1的數目爲偶數;
    • 奇校驗:每個碼字(包括校驗位)中1的數目爲奇數。
  3. 過程:
    • 發送端:按照校驗類型,在發送數據後添加校驗位P;
    • 接收端:對接收到的數據(包括校驗位)進行同樣類型的校驗,決定數據傳輸中是否存在錯誤。
  4. 特點:具有檢錯能力(只能檢測有奇數個錯誤的情況),但無糾錯能力。

海明校驗碼

  1. 原理:在一個數據中加入幾個校驗位,每個校驗位和某幾個特定的信息位構成偶校驗的關係;接收端對每個偶關係進行校驗,產生校驗因子;通過校驗因子區分無錯和碼字中的n個不同位置的錯誤;
  2. 過程:
    • 確定校驗位的位數:

      • 設K爲有效信息的位數,r爲校驗位的位數,則整個碼字的位數N應滿足不等式:
        N=K+r2r1,        (N,K) N=K+r \le 2^r-1, \ \ \ \ \ \ \ \ (N,K)爲海明碼
    • 確定校驗位的位置:

      • 每個校驗位PiP_i從低到高被分在海明碼中位號2i12^{i-1}的位置。
    • 校驗分組:

      • 海明碼的每一位Hi有多個校驗位校驗,其關係是被校驗的每一位位號等於校驗它的各校驗位的位號之和;
      • 每個信息位的位置寫成用2的冪次之和的形式 ;
        例如下圖:
        在這裏插入圖片描述
    • 校驗位的形成:

      • PiP_i =第i組中所有位(除PiP_i)求異或;
      • 爲了能檢測兩個錯誤,增加一位校驗Pj1P_{j+1},放在最高位;
      • Pi+1P_{i+1} =所有位(包括P)求異或。
    • 接收端校驗:

      • 接收端接收到數據後,分別求S1S2S3SiS_1,S_2,S_3,…,S_i
        SiS_i=第j組中所有位(包括PiP_i)求異或
        Si+1Pi+1S_{i+1}= P_{i+1} ⊕所有位(包括P1P2PiP_1,P_2 ,… , P_i)求異或;
        Si+11S_{i+1}=1時,有一位出錯;
        Si,S3S2S1S_i,……S_3 S_2 S_1的編碼指出出錯位號,將其取反,即可糾錯。
        Si+10S_{i+1}=0時,無錯或有偶數個錯(兩個錯的可能性比較大);
        Si,S3S2S1=0000S_i,……S_3 S_2 S_1=0……000時,接收的數無錯,否則有兩個錯。
  3. 特點:既能檢錯,又能糾錯。

2. 定點加法、減法運算

2.1 補碼加法

  1. 定點整數: [x+y]=[x]+[y]        (mod  2n+1)[x+y]_補 = [x]_補+[y]_補 \ \ \ \ \ \ \ \ (mod \ \ 2^{n+1})
  2. 定點小數: [x+y]=[x]+[y]        (mod  2)[x+y]_補 = [x]_補+[y]_補 \ \ \ \ \ \ \ \ (mod \ \ 2)

2.2 補碼減法

  1. 定點整數: [xy]=[x]+[y]        (mod  2n+1)[x-y]_補 = [x]_補+[-y]_補 \ \ \ \ \ \ \ \ (mod \ \ 2^{n+1})
  2. 定點小數: [xy]=[x]+[y]        (mod  2)[x-y]_補 = [x]_補+[-y]_補 \ \ \ \ \ \ \ \ (mod \ \ 2)

2.3 溢出概念與檢測方法

  1. 溢出:在定點數機器中,數的大小超出了定點數能表示的範圍。
    • 上溢:數據大於機器所能表示的最大正數;
    • 下溢:數據小於機器所能表示的最小負數。
  2. 判別方法:
    • 直接判別法:

      • 同號補碼相加,結果符號位與加數相反;
      • 異號補碼相減,結果符號位與減數相同。
    • 變形補碼判別法:採用雙符號位表示補碼。

      符號位 結果
      00
      01 上溢
      10 下溢
      11
    • 進位判別法:最高數值位的進位與符號位的進位是否相同。

3. 定點乘法運算

3.1 串行乘法

  1. 乘法運算 = 加法+移位。
    若乘數數值位n = 4,則累加 4 次,移位4 次。
  2. 乘法過程
    • 由乘數的末位決定被乘數是否與原部分積相加;
    • 被乘數只與部分積的高位相加;
    • 部分積右移一位形成新的部分積;
    • 同時乘數右移一位(末位移丟);
    • 空出高位存放部分積的低位。
  3. 硬件構成
    3個具有移位功能的寄存器、一個全加器。

原碼乘法(符號位與數值位分開計算)

  1. 原碼一位乘
    數值位運算規則:

    • 被乘數和乘數均取絕對值參加運算,符號位單獨考慮;
    • 被乘數取雙符號位,部分積的長度同被乘數,初值爲0;
    • 從乘數的最低位Yn開始判斷:
    • 若Yn=1,則部分積加上被乘數|X|,然後右移一位;
    • 若Yn=0,則部分積加上0,然後右移一位。
    • 重複,判斷n次。
  2. 原碼兩位乘
    數值位運算規則:

    • 部分積和被乘數均採用三位符號位;
    • 乘數末位增加1位C,其初值爲0,運算過程見表;

    乘數字長與運算步驟:

    • 若乘數字長爲偶數(不含符號),最多做n/2+1次加法,需做n/2次移位,最後一步不移位;
    • 若尾數字長n爲奇數(不含符號),增加一位符號0,最多做n/2+1次加法,需做n/2+1次移位,最後一步右移一位。
      在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章