• 计算机组成原理知识总结(二)运算方法和运算器


    系列文章目录

    计算机组成原理知识总结(一)计算机概论



    2.1 数据与文字的表示方法

    2.1.1 数据格式

    分为定点格式和浮点格式

    定点格式

    因为不用考虑小数点,所以只能表示纯小数和纯整数

    在这里插入图片描述
    纯小数小数点在 x n x_n xn x n − 1 x_{n-1} xn1之间,纯整数在 x 0 x_0 x0右边。
    小数的范围为: 0 ≤ ∣ x ∣ ≤ 1 − 2 − n 0≤|x|≤1-2^{-n} 0x12n
    整数的范围为: 0 ≤ ∣ x ∣ ≤ 2 n − 1 0≤|x|≤2^{n}-1 0x2n1

    浮点格式

    浮点是有效数字和数的范围分开存储,比如0.9-e3,0.9在一个地方3又在一个地方,这样做的好处是可以存储足够大的数字。
    十进制 N = 1 0 E . M N = 10^E.M N=10E.M
    二进制 N = 2 e . M N = 2^e.M N=2e.M
    M M M是尾数,就是纯小数,E是浮点数的指数,是纯整数

    十进制数串表示方法

    1. 字符串形式
    2. 压缩的十进制数串形式,用16进制表示一个数字。

    2.1.2 数的机器码表示

    由于在机器中涉及数字的运算,还需要考虑到数字的正负符号,所以就衍生出机器码来方便运算。一般叫我们平常看见的数字叫做真值,在机器里方便运算的叫做机器码。

    原码表示法

    同号相加方便,减法比较难,引出了补码。

    [ x ] 原 = { x , 2 n > x ⩾ 0 2 n − x = 2 n + ∣ x ∣ 0 ⩾ x > − 2 n [x]_原=

    {x,2n>x02nx=2n+|x|0x>2n" role="presentation">{x,2n>x02nx=2n+|x|0x>2n
    [x]={x,2nx=2n+x2n>x00x>2n

    补码表示法

    负数用补码表示的时候,可以将减法转换为加法。又因为求负数的补码还是要做减法,所以又引出了反码。
    [ x ] 补 = { x , 2 n > x ⩾ 0 2 n + 1 + x = 2 n + 1 − ∣ x ∣ 0 ⩾ x > − 2 n [x]_补=

    {x,2n>x02n+1+x=2n+1|x|0x>2n" role="presentation" style="position: relative;">{x,2n>x02n+1+x=2n+1|x|0x>2n
    [x]={x,2n+1+x=2n+1x2n>x00x>2n

    补码和真实值的关系

    [ x ] 补 = x n x n − 1 x n − 2 . . . x 1 x 0 [x]_补=x_nx_{n-1}x_{n-2}...x_1x_0 [x]=xnxn1xn2...x1x0
    x = − 2 n x n + ∑ i = 0 n − 1 2 i x i x = -2^nx_n + \sum_{i=0}^{n-1}2^ix_i x=2nxn+i=0n12ixi

    规则就是,如果是正整数,那么三码都是一样的,如果是负整数,符号位1不变,反码就是原码每个二进制取反,补码就是反码最低位+1。

    [ x ] 原 = 01111010        [ x ] 原 = 11111010 [x]_原 = \bold{0}1111010 \ \ \ \ \ \ [x]_原 = \bold{1}1111010 [x]=01111010      [x]=11111010
    [ x ] 反 = 01111010        [ x ] 反 = 10000101 [x]_反 = \bold{0}1111010 \ \ \ \ \ \ [x]_反 = \bold{1}0000101 [x]=01111010      [x]=10000101
    [ x ] 补 = 01111010        [ x ] 补 = 10000110 [x]_补 = \bold{0}1111010 \ \ \ \ \ \ [x]_补 = \bold{1}0000110 [x]=01111010      [x]=10000110

    移码表示法

    通常用于表示浮点数的阶码 E E E,在机器中表示一个浮点数时需要给出指数,这个指数用整数形式表示,这个整数叫做阶码,阶码指明了小数点在数据中的位置。
    阶码有k位数,假定定点整数移码形式为 e k e k − 1 e k − 2 . . . e 2 e 1 e 0 e_ke_{k-1}e_{k-2}...e_2e_1e_0 ekek1ek2...e2e1e0(最高位为符号位),移码的传统定义是
    [ e ] 移 = 2 k + e , 2 k > e ⩾ − 2 k [e]_移 = 2^k+e, 2^k>e\geqslant-2^k [e]=2k+e,2k>e2k
    主要是比较大小或者阶操作

    利用二进制数,比较十进制数21和-21的大小
    答:
    x=21,对应的二进制数为+10101,【x】补=0,10101
    x=-21,对应的二进制数为-10101,【x】补=1,01011
    如果按照补码进行比较,则101011 > 010101,答案错误
    x=10101 加上2的5次方 10101+100000=110101
    x=-10101加上2的5次方 -10101+100000=001011
    所以 110101>001011
    移码: [x]移=2的n次方 + x
    例如:
    x=10100 则在【x】移=25+ x=100000+10100=1,10100
    x=-10100 则在【x】移=2
    5+ x=100000-10100=0,01100
    同一个真值的移码和补码仅相差一个符号位
    x=-10100 则在【x】补=1,01100 【x】移=0,01100

    移码就是补码符号取反就可以了。

    浮点数的机器表示

    IEEE754标准中的格式表示浮点数。

    请添加图片描述
    S是浮点数的符号位。M是尾数,小数点位置放在尾数域最左有效位的右边。E是阶码。一个规格化的32位浮点数x的真值表示为
    x = ( − 1 ) S ∗ ( 1. M ) ∗ 2 E − 127 x=(-1)^S*(1.M)*2^{E-127} x=(1)S(1.M)2E127

    2.1.3 字符与字符串的表示方法

    除了数字外,还有文字语言、英文字母、标点符号等等。ASCII编码。

    2.1.4 汉字的输入编码

    汉字的输入编码

    • 数字编码
    • 拼音码
    • 字形编码-五笔

    汉字内码

    用于汉字信息的存储、交换、检索等操作的机内代码,一般采用2字节表示。

    汉字字模码

    表示汉字字形代码,是汉字的输出形式。

    2.1.5 校验码

    发送发会在每个字添加一些校验位,用来确定字中出现错误的位置。检错码,奇校验或偶校验。

    2.2 定点加法、减法运算

    2.2.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.2.2 补码减法

    [ x − y ] 补 = [ x ] 补 − [ y ] 补 = [ x ] 补 + [ − y ] 补     ( m o d   2 n + 1 ) [x-y]_补 = [x]_补-[y]_补=[x]_补+[-y]_补\ \ \ (mod\ 2^{n+1}) [xy]=[x][y]=[x]+[y]   (mod 2n+1)

    2.2.3 溢出概念与检测方法

    定点整数机器中,数有一个范围,如果运算超出范围,就叫“溢出”。
    检测方式

    • 变形补码
    • 单符号位法

    2.2.4 基本的二进制加法/减法器

    在这里插入图片描述
    在这里插入图片描述

    2.3 定点乘法运算

    人工算法与机器算法的同异性

    定点计算中,两个原码表示的相乘的运算规则是:乘积的符号位由两数的符号位按异或运算得到,而乘积的数值部分则是两个正数相乘之积。
    但是机器按着人工算法太慢了,得改进。

    不带符号的阵列乘法器

    在这里插入图片描述

    带符号的列阵乘法器

    在这里插入图片描述

    2.4 定点除法运算

    2.4.1 原码除法算法原理

    两原码表示的数相除,商的符号由两数的符号按位相加求得,商的数值部分由两数的数值部分相除求得。

    2.4.2 并行除法器

    可控加法/减法(CAS)单元

    在这里插入图片描述

    加减交替的阵列除法器

    在这里插入图片描述

    2.5 定点运算器的组成

    2.5.1 逻辑运算

    逻辑非运算

    求发,按位求它的反

    逻辑加运算

    按位求它们的“或”,逻辑或

    逻辑乘运算

    按位求它们的“与”,逻辑与

    逻辑异运算

    按位求它们的模2和,按位加

    2.5.2 多功能算术/逻辑运算单元

    基本思想

    在这里插入图片描述

    逻辑表达式

    S 0 、 S 1 、 S 2 、 S 3 S_0、S_1、S_2、S_3 S0S1S2S3分别控制输入 A i 、 B i A_i、B_i AiBi,产生 Y i Y_i Yi X i X_i Xi
    X i = S 2 ˉ S 3 ˉ + S 2 ˉ S 3 ( A i ˉ + B i ˉ ) + S 2 S 3 ˉ ( A i ˉ + B i ) + S 2 S 3 A i ˉ X_i=\bar{S_2}\bar{S_3}+\bar{S_2}S_3(\bar{A_i}+\bar{B_i})+S_2\bar{S_3}(\bar{A_i}+B_i)+S_2S_3\bar{A_i} Xi=S2ˉS3ˉ+S2ˉS3(Aiˉ+Biˉ)+S2S3ˉ(Aiˉ+Bi)+S2S3Aiˉ
    Y i = S 0 ˉ S 1 ˉ A i ˉ + S 0 ˉ S 1 A i ˉ B i + S 0 S 1 ˉ A i ˉ B i ˉ Y_i=\bar{S_0}\bar{S_1}\bar{A_i}+\bar{S_0}S_1\bar{A_i}B_i+S_0\bar{S_1}\bar{A_i}\bar{B_i} Yi=S0ˉS1ˉAiˉ+S0ˉS1AiˉBi+S0S1ˉAiˉBiˉ

    带一下

    X i = S 3 A i B i + S 2 A i B i ˉ ‾ X_i=\overline{S_3A_iB_i+S_2A_i\bar{B_i}} Xi=S3AiBi+S2AiBiˉ
    Y i = A i + B 0 B i + S i B i ˉ ‾ Y_i=\overline{A_i+B_0B_i+S_i\bar{B_i}} Yi=Ai+B0Bi+SiBiˉ
    F i = Y i ⨁ X i ⨁ C n + i F_i=Y_i\bigoplus X_i\bigoplus C_{n+i} Fi=YiXiCn+i
    C n + i + 1 = Y i + X i C n + i C_{n+i+1}=Y_i+X_iC_{n+i} Cn+i+1=Yi+XiCn+i

    算术逻辑运算的实现

    多一个控制端M,控制算术操作还是逻辑操作。
    在这里插入图片描述

    两级先行进位的ALU

    在这里插入图片描述

    2.5.3 内部总线

    根据逻辑结构 单向传送总线、双向传送总线
    根据总线位置 内部总线、外部总线

    2.5.4 定点运算器的基本结构

    在这里插入图片描述

    单总线结构的运算器

    单总线结构的运算器如(a)所示。由于所有部件都接到同一总线上,所以数据可以在任何两个寄存器之间,或者在任一个寄存器和ALU之间传送。

    双总线结构的运算器

    双总线结构的运算器如(b)所示。在这种结构中,两个操作数同时加到ALU进行运算,只需一次操作控制,而且马上就可以得到运算结果。

    三总线结构的运算器

    三总线结构的运算器如演示©所示。在三总线结构中,ALU的两个输入端分别由两条总线供给,而ALU的输出则与第三条总线相连。

    2.6 浮点运算方法和浮点运算器

    2.6.1 浮点加法、减法运算

    在这里插入图片描述

    2.6.2 浮点乘法、除法运算规则

    1. 0操作数检查,如果被除数 x x x为0,则商为0,如果除数因为0,则商为 ∞ \infty
    2. 阶码加/减操作
    3. 尾数乘/除操作
    4. 结果规格化
    5. 舍入处理
    6. 确定积的符号

    2.6.3 浮点运算流水线

    流水线原理

    把输入的任务分割为一系列子任务,使各子任务能在流水线的各个阶段并发地执行。
    在这里插入图片描述
    S i S_i Si过程段,缓存寄存器(L),统一的的时钟(C)。

    流水线浮点加法器

    在这里插入图片描述


    总结

    数字在计算机里存储和运算

  • 相关阅读:
    2021年全国职业院校技能大赛(中职组)网络安全竞赛试题(1)详细解析教程
    STM32 | 零基础 STM32 第一天
    【MySQL数据库】| 索引以及背后的数据结构
    FlinkSQL自定义UDATF实现TopN
    OneNote 教程,如何在 OneNote 中做笔记?
    JavaEE——IO
    virtio_net 与 virtio-pci 驱动关联浅析
    漫谈计算机网络: 运输层 ------ 从UDP ->TCP , 从面向通信->面向用户,三次握手/四次挥手?
    MyBatis
    HTTPSConnectionPool(host=‘huggingface.co‘, port=443)解决
  • 原文地址:https://blog.csdn.net/u010095372/article/details/126437946