【计算机组成原理】考纲第二章 数据的表示和运算

考纲 (二)、数据的表示和运算

  • 数制与编码

  • 定点数和浮点数的表示和运算

  • 算术逻辑单元 ALU

    • 串行加法器和并行加法器
    • ALU 的功能和结构

2.1 数制与编码

2.1.0 概览

推荐课程 车向泉老师《计算机系统中的数据表示》

image-20200919160437200

2.1.1 数制及进制转换

  • 基数 $r$:数制所使用数码的个数。例如,二进制的基数为2(0和1);十进制的基数为10(0~9)。

  • **位权 $ri$:**数制中某一位上的1所表示数值的大小。例如,二进制的位权为$2i$,$i$ 为所在位数。

  • 不同进制数的转换

    • ⑵ ⇨ ⑻ / ⒃ :二进制的3(4)位编为一组就是1位八(十六)进制的数码;

      image-20200919163701944

    • • ⇨ ⑽ :各位数码与它们的权值相乘,再把乘积相加;

      image-20200919164247443

    • ⑽ ⇨ • :基数乘除法,整数部分用除基取余,小数部分用乘基取整。

      image-20200919165041683

2.1.2 编码

  • 真值: 实际值(带正负号);机器数:数的符号和数值一起编码,“符号数字化”,如原码、补码、反码等。

  • 数值编码(见 2.2)

  • 非数值编码

    • 逻辑数据编码(1位):真(1),假(0);
    • 西文字符编码(ASCII码,7位)
      • 包含0-9、A-Z、a-z、专用符号($, %, +……)等128个字符;
      • 编码值为031为控制字符;<u>32126为可印刷字符。
    • 汉字编码(GB,16位)
      • 输入码:用于汉字的输入,如拼音码、五笔字型码;
      • 内码:用于汉字存储、查找、传送等,基于国标码,占 2 个字节;
      • 点阵码或汉字向量描述:用于汉字的显示和打印。
    • 国际多字符集(Unicode,2字节)
  • *** 校验码**

2.2 定点数

  • 无符号数:数值编码中只有数值位,没有符号位,表示正整数;
  • 有符号数:设置符号位,0表示正,1表示负,表示带符号整数或小数。

2.2.1 定点数的表示

以下假设需要表示的数的字长为 n+1。 [🔗附:博客讲解]

  • 原码:最高位表示符号,其余各位表示数的绝对值。

    容易理解,但是,① “0”的表示不唯一;②加、减运算不统一;③需要对符号位单独处理,不利于硬件设计。

    • 纯小数 $-(1-2^{-n})\leq x\leq 1-2^{-n}$

      image-20200919174441164

    • 纯整数 $-(2^n-1)\leq x\leq 2^n-1$

      image-20200919174629971

  • 反码:正数的反码是其本身;负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

    • 纯小数 $-(1-2^{-n})\leq x\leq 1-2^{-n}$

      image-20200919190725072

    • 纯整数 $-(2n-1)\leq2n-1$

      image-20200919190748341

  • 补码:正数补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

    ① “0”的表示唯一;②加减法统一;③符号位参与运算,不需要单独处理。

    • 纯小数 $-1\leq x\leq 1-2^{-n}$

      image-20200919190038175

    • 纯整数 $-2^n\leq x\leq 2^n-1$

      image-20200919190105509

  • 移码:真值x加上一个常数(偏置值),通常这个常数取 $2^n$,相当于x在数轴上向正方向偏移了若干单位。

    • 计算

      image-20200919191816944

    • 特点

      image-20200919191852459

  • 小结

    image-20200921200238975

2.2.2 定点数的运算

  • 移位运算

    • 算术移位(有符号数)

      image-20200919194507206

    • 逻辑移位(逻辑代码、无符号数):左移右移都补0

    • 循环移位:带进位标志位CF的大循环和不带CF的小循环

  • 加减运算

    • 原码

      image-20200919202845129

    • 补码:直接加减

  • 符号扩展

    • 正数:空位用 0 填充。 e.g. 01010101(8位) → 0000……1010101(32位)

    • 负数 e.g. 10101010(8位)

      • 原码:空位用 0 填充。 1000……0101010(32位)

      • 反码:空位用 1 填充。 1111……0101010

      • 补码:分情况讨论。

        ​ 整数:空位用 1 填充。1111……0101010 ;

        ​ 小数:空位用 0 填充。1000……0101010

  • 溢出检测

  • 乘除运算

*2.2.3 C语言中的整数转换

  • 无符号数 ↔ 有符号数
  • 长字长 ↔ 短字长

*2.2.4 数据的存储和排列

  • 现代计算机采用 字节编址,即每个地址编号中存放 1 字节。

  • 最低有效字节(LSB) 和 最高有效字节(MSB):e.g. 32位机器数01_23_45_67 H 的 LSB = 67H,MSB = 01H

  • 多字节存放方式:大端存储(big endian) 与 小端存储(little endian)

    image-20200921172423815

2.3 浮点数

2.4 算数逻辑单元 ALU

2.4.0 预备知识 - 逻辑代数

⑴ 门电路

是能实现某种逻辑关系的电路,它是数字电路中的基本逻辑单元电路。

数字电路分类: 组合逻辑电路 和 时序逻辑电路

image-20200925160616927

⑵ *晶体管和MOS管、逻辑门电路实现
⑶ 逻辑代数
① 基本运算

image-20201002214700671

② 基本定律

image-20201004202706796

③ 基本定理
  • 代入定理:在任何一个包含某个相同变量的逻辑等式中,用另外一个函数式代入式中所有这个变量的位置,等式仍然成立。

    image-20201004203738846
  • 反演定理:将原函数F中的全部“•”换成“+”,“+”换成“•”,“0”换成“1”,“1”换成“0”,原变量换成反变量,反变量换成原变量,所得到的新函数就是原函数的反演式。

    image-20201004205350379

  • 对偶定理:与反演定理的变换规则类似,但不将原变量与反变量互换。若已知某公式成立,则其对偶式仍成立。

    image-20201004203714059
④ 常用公式
image-20201004205031070
⑤ 常用表达式

image-20201004204944932

⑦ 标准表达式
  • 最小项表达式 是全部由最小项构成的 与或式 (积之和式,又称标准与或式)

  • 最大项表达式 是全部由最大项构成的 或与式 (和之积式,又称标准或与式)

  • 最大项与最小项的编号(下标 $i$ 相同的最小项与最大项 互补,即 $m_i=\overline{M_i}$)

    image-20201005200700172

  • 标准表达式可由真值表直接得出

    image-20201005201427078

⑧ 设计优化
  • 面积优化:使设计的电路或系统占用的逻辑资源尽可能少
    • 逻辑函数的简化是面积优化的一种方式
  • 时间优化:使设计的电路或系统的输入信号到达输出的路程尽可能短
  • 优化方法
    • “与或”表达式的化简:1.乘积项的个数最少(用门电路实现,用的与门数最少);2.在满足1的条件下,乘积项中的变量最少(与门的输入端最少)
    • “或与”表达式的化简:1.利用对偶定理化成“与或式”;2.化简;3.再转化为“或与”式
    • 常用简化法:合并乘积项法、吸收项法、配项法

2.4.1 组合逻辑电路

是将逻辑门以一定的方式组合在一起,使其具有一定逻辑功能的数字电路。

  • 组合逻辑电路的特点

    • 输出不能再直接反馈到输入(不能有环路),没有存储电路

    • 是一种 无记忆 电路 —— 任一时刻的输出信号,仅取决于该时刻的输入信号,而与信号作用前电路原来所处的状态无关。

  • 组合逻辑电路的四种表示方式

    image-20201005205038781

2.4.2 运算单元电路

⑴ 加减法运算的规则

$$
[A+B]_补=[A]_补+[B]_补 \
[A-B]_补=[A]_补+[-B]_补=[A]_补+\overline{[B]_补}+1
$$

⑵ 半加器(不考虑低位的进位)

能对两个1位二进制数进行相加求和,并向高位进位的逻辑电路

image-20201007194108621

⑵ 全加器(考虑低位的进位)

能对两个1位二进制数进行相加并考虑低位来的进位、求得和并向高位进位的逻辑电路

image-20201007195013232

  • HDL建模(算法级描述 - 根据真值表)

    module adder_1(A, B, CI, SO, CO);
        input A, B, CI;
        output SO, CO;
        assign SO = (!A && !B && !C) || (!A && !B && C) || …… ;
        assign CO = (!A && B && C) || (A && !B && C) || …… ;
    endmodule
    
  • HDL建模(系统级描述 - 根据逻辑功能定义)

    module adder_2(A, B, CI, SO, CO);
    	input A, B, CI;
        output SO, CO;
        assign {CO, SO} = A + B + CI;
    endmodule
    
⑷ 并行加法器
① 串行进位

计算速度取决于进位产生和传递的速度,具体见下。

② 并行进位
串行进位 并行进位
示意图 image-20201007203835009 image-20201007203929418
进位链 image-20201007203953359 image-20201007203900134
特点 1. 进位串行传递
2. 进位延时较长
1. 同时产生进位,加法延时缩短
2. 实现较为复杂
③ 分组并行进位加法器

其实下面两种加法器分别对应了上表中的“串行进位”与“并行进位”,不同之处在于组内使用的加法器为并行加法器而非一位全加器。(可无限套娃)

组内并行,组间串行 组内并行,组间并行
image-20201007213434868 image-20201007213450362
module adder_3(a,b,cin,sum,cout);
	parameter width=8;
    input [width-1:0] a,b;
	input cin;
    output [width-1:0] sum;
	output cout;
    assign {cout,sum} = a+b+cin;
endmodule
⑸ *阵列乘法器
⑹ *数值比较器
⑺ 算数逻辑运算单元 ALU

功能:逻辑运算、算数运算、比较

抽象表示 具体示例:1位ALU
image-20201009205557940 image-20201009205612164

*2.4.3 编码器/译码器

*2.4.4 多路选择器

posted @ 2020-10-09 21:06  Little灿  阅读(672)  评论(0)    收藏  举报