当前位置: 首页 > article >正文

计算机组成原理-基本运算部件定点数的运算

2.2基本运算部件

整理自up主beokayy_

1.加法器

一位全加器

  • 全加器是最基本的加法单元:
    • 三个输入端:加数Ai,加数Bi,低位传进来的进位C1-1
    • 两个输出端:本位和S,向高位的进位C
  • 全加器的逻辑表达式:
    • Si=Ai⊕Bi⊕Ci-1
    • Ci=AiBi+(Ai⊕Bi)Ci-1

串行进位加法器

  • 把n个一位全加器相连可得到n位加法器,即串行进位加法器。
  • 模拟人的算法,串行进位加法器的信号是逐级形成的,串行进位又被称作行波进位。
  • 在串行进位加法器中,低位运算产生进位所需的时间将影响高位运算的时间。
  • 因此,串行进位加法器的最长运算时间主要是由进位信号的传递时间决定的,位数越多延迟时间越长。

并行进位加法器

  • 全加器的进位逻辑表达式为Ci=AiBi+(Ai⊕Bi)Ci-1,设Gi=AiBi,Pi=Ai⊕Bi,则Ci=Gi+PiCi-1。
  • 进行下列迭代:
    • C1=G1+P1C0
    • C2=G2+P2C1=G2+P2(G1+P1C0)=G2+P2G1+P2P1C0
    • C3=G3+P3G2+P3P2G1+P3P2P1C0
    • C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0
  • 从上述迭代后的表达式可以看出,Ci仅与Ai、Bi以及最低位进位C0有关,而相互间的进位没有依赖关系。
  • 因此,只要A1A4、B1B4以及C0同时到达,就可以几乎同时形成C1~C4,并且同时生成各位的和。这样就解决了串行进位加法器需要花费长时间等
    待进位的问题。
  • 实现这个逻辑的电路称为CLA部件。由于各个进位是并行同时产生的,因此这种加法器称为并行进位加法器。
  • 并行加法器的进位很快,与位数无关。但随着位数的增加,C的逻辑表达式会变得非常复杂,电路结构也会随之变得复杂。因此,位数非常多时采用并行加
    法器是不现实的。

2.算术逻辑单元ALU

  • ALU是一种功能较强的组合逻辑电路,可以实现多种算术运算和逻辑运算。
  • 加减乘除运算最终都可归结成加法运算,所以ALU的核心是带标志加法器,同时也能执行与或非等逻辑运算。
  • ALUop控制ALU所执行的处理。ALUop的位数s决定了操作的种类,s位就有2s种。

定点数的运算

1.定点数的移位操作

x<<k(左移)

  • 左移k位,,最高k位舍弃,右端补0
  • 相当于乘2
  • 左移前后符号位改变了,则发生溢出

x>>k(右移)

  • 右移k位,分为两种情况:
    • 逻辑右移(无符号数):左端补k个0
    • 算数右移(带符号数):左端补k个最高有效位的值
    • 相当于除2,所以没有溢出判断

2.定点数的加减法

运算规则

  • 计算机中的带符号数都用补码来表示,故定点数的加减法也用补码
  • [A+B]补=[A]补+[B]补;[A-B]补=[A]补+[-B]补([-B]补=[B]补’+1)
  • 符号位和数值位一起参与运算,结果的符号位在运算中直接得出
  • 最终运算结果的高位丢弃,保留机器字长的位数,得到的结果也是补码

溢出判别

  • 仅当以下四种情况才会发生溢出
    • 正+正=负
    • 负+负=正
    • 正-负=负
    • 负-正=正
  • 一位符号位判别:
    • 设A的符号为As,B的符号为Bs,结果的符号为Ss。则逻辑溢出表达式为V=AsBsSs’+(AsBsSs)’
    • V=0表示无溢出;V=1表示有溢出
    • 还有一种方法:符号位的进位与最高位的进位相同则无溢出,否则就是有溢出
  • 双符号位判别:
    • 两位符号位相同,正常进行计算,两位符号位与溢出情况如下所示:
符号位溢出情况
00正数无溢出
01正溢出
10负溢出
11负数无溢出

乘除法不记录在内,目前只应付期末考试,等考研再来补充

http://www.lryc.cn/news/2384560.html

相关文章:

  • python打卡day34@浙大疏锦行
  • SOC-ESP32S3部分:8-GPIO输出LED控制
  • 05算法学习_59. 螺旋矩阵 II
  • 绘制音频信号的各种频谱图,包括Mel频谱图、STFT频谱图等。它不仅能够绘制频谱图librosa.display.specshow
  • Linux `>`/`>>` 重定向操作符深度解析与高阶应用指南
  • 【自定义类型-联合和枚举】--联合体类型,联合体大小的计算,枚举类型,枚举类型的使用
  • 李宏毅《深度学习》:Self-attention 自注意力机制
  • C++初阶-list的使用1
  • Linux中的tty与login之间的关系
  • Python web 开发 Flask HTTP 服务
  • 分享|16个含源码和数据集的计算机视觉实战项目
  • 二十三、面向对象底层逻辑-BeanDefinitionParser接口设计哲学
  • [Vue]路由基础使用和路径传参
  • 使用VGG-16模型来对海贼王中的角色进行图像分类
  • OSI 网络七层模型中的物理层、数据链路层、网络层
  • WooCommerce缓存教程 – 如何防止缓存破坏你的WooCommerce网站?
  • AtCoder Beginner Contest 406(ABCD)
  • 第J2周:ResNet50V2 算法实战与解析
  • Live Search API :给大模型装了一个“实时搜索引擎”的插件
  • 每天分钟级别时间维度在数据仓库的作用与实现——以Doris和Hive为例(开箱即用)
  • 虚拟机Centos7:Cannot find a valid baseurl for repo: base/7/x86_64问题解决
  • IP风险度自检,多维度守护网络安全
  • NV066NV074美光固态颗粒NV084NV085
  • C++ 日志系统实战第六步:性能测试
  • 低代码平台搭建
  • AI编程对传统软件开发的冲击和思考
  • Java桌面应用开发详解:自制截图工具从设计到打包的全流程【附源码与演示】
  • 手写一个简单的线程池
  • AI开发实习生面试总结(持续更新中...)
  • python实战:Python脚本后台运行的方法