计算机组成原理知识点-第二章

计算机组成原理(第二章)

第二章思维导图如下:

在这里插入图片描述

0. 数据类型

  1. 按数制分:二值进制、十进制、八进制、十六进制。
  2. 按数据格式分: 真值、机器数。
  3. 按数据的表示范围分:定点数、浮点数。
  4. 按能否标识负数分:无符号数、有符号数。

1. 数据与文字的表示方法

1.1 数据格式

定点数

  1. 定点数:小数点固定在某一位置的数据。
    • 纯小数: x 0 . x − 1 x − 2 x − 3 … … x − n x_0 . x_{-1}x_{-2}x_{-3}……x_{-n} x0.x1x2x3xn
      • 表示形式: x s x_s xs 为符号位 ; x 0 x_0 x0为0。
        有符号数: x = x s x − 1 x − 1 … … x − n x=x_sx_{-1}x_{-1}……x_{-n} x=xsx1x1xn ∣ x ∣ ≤ 1 − 2 − n |x|\le1-2^{-n} x12n
        无符号数: x = x 0 x − 1 x − 1 … … x − n x=x_0x_{-1}x_{-1}……x_{-n} x=x0x1x1xn 0 ≤ ∣ x ∣ ≤ 1 − 2 − n 0 \le |x|\le1-2^{-n} 0x12n
    • 纯整数: x n x n − 1 x n − 2 … … x 1 x 0 x_{n} x_{n-1}x_{n-2}……x_{1}x_0 xnxn1xn2x1x0
      • 表示形式: x s x_s xs 为符号位 ; x n x_n xn为数值位。
        有符号数:$x=x_sx_{n-1}……x_{1}x_{0} $ ∣ x ∣ ≤ 1 − 2 − n |x|\le1-2^{-n} x12n
        无符号数: x = x n x n − 1 … … x 1 x 0 x=x_nx_{n-1}……x_{1}x_{0} x=xnxn1x1x0 0 ≤ ∣ x ∣ ≤ 1 − 2 − n 0 \le |x|\le1-2^{-n} 0x12n
  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 ) ∗ 2 E − 127 N=(-1)^S * (1.M)*2^{E-127} N=(1)S(1.M)2E127
  2. SEM
    正零00000 0000000……000
    负零10000 0000000……000
    正无穷01111 1111000……000
    负无穷11111 1111000……000

1.2 数的机器码表示

原码

  1. 定义:
    • 定点小数:
      [ x ] 原 { x , 1>x ≥ 0 1 − x = 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,1x=1+x,1>x00 x>-1
    • 定点整数:
      [ x ] 原 { x , 2 n >x ≥ 0 1 − x = 1 + ∣ x ∣ , 0 ≥  x> − 2 n [x]_原 \begin{cases} x, & \text{$2^n$>x$\ge$0} \\[3ex] 1-x=1+|x|, & \text{0$\ge$ x>$-2^n$} \end{cases} [x]x,1x=1+x,2n>x00 x>2n
  2. 特点:
    • 0的有两种表示法; [ + 0 ] 原 = 0000 ; [ − 0 ] 原 = 1000 [+0]_原=0000;[-0]_原=1000 [+0]=0000[0]=1000
    • 数据表示范围:
      • 定点小数: − 1 < x < 1 -1<x<1 1<x<1
      • 定点整数: − 2 n < x < 2 n -2^n<x<2^n 2n<x<2n
    • 符号位与数值位不能一起参与运算

补码

  1. 定义:

    • 定点小数:
      [ x ] 补 { x , 1>x ≥ 0 2 + x = 2 − ∣ x ∣ , 0 ≥  x ≥ -1 ( m o d   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,2+x=2x,1>x00 x-1(mod 2)
    • 定点整数:
      [ x ] 补 { x , 2 n >x ≥ 0 2 n + 1 + x = 2 n + 1 − ∣ x ∣ , 0 ≥  x  ≥ - 2 n ( m o d   2 n + 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}) [x]x,2n+1+x=2n+1x,2n>x00 x -2n(mod 2n+1)
  2. 特点:

    • 0的编码唯一:0000
    • 数据表示范围:
      • 定点小数: − 1 < x < 1 -1<x<1 1<x<1
      • 定点整数: − 2 n ≤ x < 2 n -2^n\le x<2^n 2nx<2n
    • 只要结果不溢出,符号位可与数值位一起参与运算
    • [ [ x ] 补 ] 补 = [ x ] 原 [[x]_补]_补 = [x]_原 [[x]]=[x]
  3. 有原码求补码

    • 符号位以外,其余各位按位取反,末位加一;
    • 符号位以外,从最低位开始,遇到的第一个1以前各位保持不变,之后各位取反。
  4. 求相反数的补码:由 [ x ] 补 [x]_补 [x] [ − x ] 补 [-x]_补 [x] (连同符号位的所有位一起取反,末位加一)。

移码

  1. 定义:
    [ x ] 移 = 2 n + x                     2 n > x ≥ − 2 n [x]_移=2^n+x \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2^n>x\ge-2^n [x]=2n+x                   2n>x2n
  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 + r ≤ 2 r − 1 ,          ( N , K ) 为 海 明 码 N=K+r \le 2^r-1, \ \ \ \ \ \ \ \ (N,K)为海明码 N=K+r2r1,        (N,K)
    • 确定校验位的位置:

      • 每个校验位 P i P_i Pi从低到高被分在海明码中位号 2 i − 1 2^{i-1} 2i1的位置。
    • 校验分组:

      • 海明码的每一位Hi有多个校验位校验,其关系是被校验的每一位位号等于校验它的各校验位的位号之和;
      • 每个信息位的位置写成用2的幂次之和的形式 ;
        例如下图:
        在这里插入图片描述
    • 校验位的形成:

      • P i P_i Pi =第i组中所有位(除 P i P_i Pi)求异或;
      • 为了能检测两个错误,增加一位校验 P j + 1 P_{j+1} Pj1,放在最高位;
      • P i + 1 P_{i+1} Pi+1 =所有位(包括P)求异或。
    • 接收端校验:

      • 接收端接收到数据后,分别求 S 1 , S 2 , S 3 , … , S i S_1,S_2,S_3,…,S_i S1S2S3Si
        S i S_i Si=第j组中所有位(包括 P i P_i Pi)求异或
        S i + 1 = P i + 1 S_{i+1}= P_{i+1} Si+1Pi+1 ⊕所有位(包括 P 1 , P 2 , … , P i P_1,P_2 ,… , P_i P1P2Pi)求异或;
        S i + 1 = 1 S_{i+1}=1 Si+11时,有一位出错;
        S i , … … S 3 S 2 S 1 S_i,……S_3 S_2 S_1 Si,S3S2S1的编码指出出错位号,将其取反,即可纠错。
        S i + 1 = 0 S_{i+1}=0 Si+10时,无错或有偶数个错(两个错的可能性比较大);
        S i , … … S 3 S 2 S 1 = 0 … … 000 S_i,……S_3 S_2 S_1=0……000 Si,S3S2S1=0000时,接收的数无错,否则有两个错。
  3. 特点:既能检错,又能纠错。

2. 定点加法、减法运算

2.1 补码加法

  1. 定点整数: [ x + y ] 补 = [ x ] 补 + [ y ] 补          ( m o d    2 n + 1 ) [x+y]_补 = [x]_补+[y]_补 \ \ \ \ \ \ \ \ (mod \ \ 2^{n+1}) [x+y]=[x]+[y]        (mod  2n+1)
  2. 定点小数: [ x + y ] 补 = [ x ] 补 + [ y ] 补          ( m o d    2 ) [x+y]_补 = [x]_补+[y]_补 \ \ \ \ \ \ \ \ (mod \ \ 2) [x+y]=[x]+[y]        (mod  2)

2.2 补码减法

  1. 定点整数: [ x − y ] 补 = [ x ] 补 + [ − y ] 补          ( m o d    2 n + 1 ) [x-y]_补 = [x]_补+[-y]_补 \ \ \ \ \ \ \ \ (mod \ \ 2^{n+1}) [xy]=[x]+[y]        (mod  2n+1)
  2. 定点小数: [ x − y ] 补 = [ x ] 补 + [ − y ] 补          ( m o d    2 ) [x-y]_补 = [x]_补+[-y]_补 \ \ \ \ \ \ \ \ (mod \ \ 2) [xy]=[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次移位,最后一步右移一位。
      在这里插入图片描述
  • 10
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值