计算机组成原理 运算器

运算方法和运算器(重点)

  • B二进制(binary), D十进制(decimal), H十六进制(hexadecimal)

纯小数和纯整数表示范围

  • 设机器字长n+1位,规定最高位(第n+1位)为符号位

  • 纯小数最大范围中的可理解为小数部分全为0的“1”,再减去一个最后一位为1的"$$2^{-n$$"

  • 数值数据:定点、浮点

      浮点数表示法

        符号位S,阶码E,尾数M

        IEEE754标准

    • 定点表示法:

      • 纯整数,纯小数,定点整数,定点小数

      • 小数点位置固定不变

      • 浮点数规格化表示:尾数的值不为0时,尾数域的最高有效位为1

      • 32位单精度浮点数:符号位S占1位,阶码E占8位(范围),尾数M占23位(精度),基数固定为2

      • IEEE754标准,M隐去1(规定尾数域最高有效位为1(若尾数不为0),无需存储),指数真值e=阶码E-127(32位) e=E-1023(64位)

      • 特殊规定

        • 表示NaN(阶数全1,尾数不为0),$$\pm\infin$$(阶数全1,尾数为0),0(阶数尾数都为0),规格化数,非规格化数(阶数为0,尾数不为0)

      • 机器码和真值转换例子

      • 浮点数表示的范围比定点数大

  • 数的机器码表示

      真值和机器码

      移码

    • 真值: -127 真值的二进制表示 -0111 1111

    • 机器数/机器码:原码、反码、补码、移码

      • 正数的原码反码补码均相同

      • 补码

        • 模modulo, 区间总长

        • 整数模$$2^$$,小数模2

        • 负数:固定符号位,补码为取反加1

        • 方便加减运算

      • $$[x]_移 = 2^n + x$$ ,移码和补码尾数相同,符号位相反

        • x为真值,右式为移码(机器码)

        • 意思就是真值的二进制表示后最高位多添一个1

          • 偏移值常数可以任意,如IEEE754标准为127,非2的幂次

      • 方便指数大小对比,通常用于表示浮点数的阶码

  • 字符与字符串表示方法

    • ASCII码:最高位为0,余下7位表示128个编码

    • 字符串:连续的一串字符,占用主存中连续的多字节,每个字节存放一个字符

  • 汉字表示方法

    • 输入码

      • 数字编码:国标区位码,二维数组

      • 拼音码:输入重码率重

      • 字形编码:五笔

    • 汉字内码,用于存储,采用两字节表示,最高位均为1

    • 字模码(输出):字模矩阵,汉字库,存储空间大

  • 校验码

    • 奇偶校验码:检查出奇数位错,且不能纠正错误,奇数个1异或结果为1

      • 奇校验:使得最后异或结果为1,奇数个1

      • 偶检验:使得最后异或结果为0,偶数个1

      • 二维码:校验码,纠错码

定点加法、减法运算

  • 如果结果为负数,从补码转为二进制真值的时候记得求一次补

  • 补码规则:

    • 证明

  • 补码减法规则

  • 从该数补码求其相反数补码方法:

溢出

  • 正溢,负溢

异或结果为1说明产生溢出

  • 双符号位判断法:

    • sf1,sf2分别是高符号位(始终正确)和低符号位(可能变化)

  • 单符号位判断法:

    • cf,c0分别是符号位产生的进位最高有效位产生的进位

    • 符号位产生进位而最高有效位没有产生进位,负溢

    • 最高有效位产生进位而符号位没有产生进位,正溢

  • 例题

    • 移位过程中,符号位不变

    • 补码右移是算术右移,补1

门电路图形符号

全加器FA

  • 全加器Full Adder (FA),行波进位加法器(串行)

  • 并行加法器

定点数乘法运算

不带符号的阵列乘法器

  • 符号数单独处理,异或得到结果

  • 并行

    • 被加数产生部件:m*n个与门直接算得

    • 被加数求和部件:求和每列被加数

  • 被加数矩阵

    • 同列幂次相同

    • 每行有左移效果

  • 被加数求和部件:全加器实现

带符号的阵列乘法器

  • 对2求补器

    • E为控制信号,为0代表操作数为正数,为1则是负数

    • 求补方法:从右往左找出第一个"1",自己和右边的数位不变,以左的每一个数位取反

  • 逻辑:算前求补-不带符号乘法-算后求补

定点数除法运算

如果是小数除法:被除数的绝对值应小于除数的绝对值(要求商始终小于1)

符号位单独处理,异或运算

恢复余数法

  • 基于补码进行加减法和移位

  移位规则
  • 符号位不变

  • "1."代表符号位

  • 补码是算术右移

  • 例子演算

    • 减y (就是加上[-y]的补码),看余数正负

    • 不够减商0并恢复余数,够减直接商1

    • 余数左移,重复第一步

    • 商做了五次运算,首位为0,商小于1,即说明被除数是小于除数的,合法

加减交替法(不恢复余数法)

  • 推演

  • 例子演算

    • 余数为正,商1,下次余数左移做减法

    • 余数为负,商0,下次余数左移做加法

    • 商计算5次,首位为0,即商小于1,说明被除数小于除数,合法

  • 数值位为n位时,只做n+1步操作,对最后余数要处理(恢复余数,反正此时商0,结果正确的),其真实值还要算上位移量

可控加法/减法单元CAS

CAS controllable adder subtractor

  • 从右往左算,进位也是从右往左进位

    • 可控做加法还是做减法,那么就可做由加减交替法实现的定点数除法运算了

阵列除法器

  • 阵列除法器:加减交替法的并行实现

    • $$q_4=0$$是因为规定被除数小于除数,商小于1,不够除

    • 每行最左边的CAS存放的是被除数和除数补码符号位的加减法(记录最高位的进位情况,即$$C_{i+1}$$)

  • 模拟阵列除法器运行例子

    • 加减交替法 + 除数右移

    • 商跟除数位数相同,次数是位数加1

定点计算器的组成

  • 逻辑运算

    • 逻辑非:按位求反

    • 逻辑加:按位求或

    • 逻辑乘:按位求与

    • 逻辑异:按位加,按位异或

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

  • 先行进位公式

    • 规律:g3 -> g2p3 -> g1p2p3 -> g0p1p2p3 -> p0p1p2p3Cn

    • 从左往右g下标不断减小,然后右边填上p下标从大到小,最后g没有的时候补上Cn

  • ALU的逻辑结构

    • 一个ALU由多片FA和函数发生器组合而成,来支持多位二进制位数

    • i:一片电路(一片ALU,多个FA和函数发生器组成)的二进制位数

    • n:多片ALU时,每片电路的进位输入

  • ALU逻辑表达式

    • 由真值表知$$Y_i = X_iY_i$$

  • 先行进位公式

    • 进位发生输出$$G$$

    • 进位传送输出$$P$$

    • 最高位进位输出$$C_{n+4}$$

  • ALU逻辑电路图 (74181ALU)

    • M是控制端

      • M=0时,做算术操作

      • M=1时,做逻辑操作

  • 74181ALU 算术/逻辑运算功能表

先行进位部件CLA

carry look ahead adder

  • 设计16位ALU,使用多片ALU

    • 串行

    • 利用CLA并行

内部总线

  • 三态电路

    • 高阻态,相当于断开

  • 内部总线,外部总线

  • 单向总线,双向总线

  • 三种总线结构

    • 单总线:

      • 双操作数分时经总线进入锁存器A和B,结果也通过单总线送回。

      • 特点:控制电路简单,操作速度比较慢。

    • 双总线

      • 两操作数通过各自的总线送加法器运算,结果通过其中一总线送回。

      • 操作速度较快

    • 三总线

      • 两操作数和操作结果通过各自的总线传送。

      • 特点:操作速度快,但所需总线多。

      • 总线旁路器:使传送操作经它直接输出,速度快

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

  • 浮点数的规格化表示

    • 尾数域最高位为1(纯真值模拟过程)

    • 尾数M真值 为0.1xxxx (这里0不是符号位,是数值位)

  • 机器码的规格化形式:将首位当作符号位

  • 对规格化数规格化处理

浮点数加法、减法运算

  1. 0操作数检查

  2. 比较阶码大小并完成对阶

    1. 尾数右移,损失最低位,误差最小(阶码变大),即小阶向大阶看齐

  3. 尾数加减运算

  4. 结果规格化

  5. 舍入处理

  6. 溢出处理

  • 模拟例子

    • 浮点数 用阶码,尾数分开表示(均以补码存储)

浮点数乘法,除法运算

浮点运算流水线

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/803354.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TCP连接三次握手的过程,为什么是三次,可以是两次或者更多吗?

(1) 三次握手的过程 第一次握手:客户端向服务器发送一个包含SYN (同步序列编号)和初始序列号(ISN)的报文,请求建立连接,客户端进入SYN_SENT (同步已发送)状态。第二次握手:服务器收…

Python酷库之旅-第三方库Pandas(027)

目录 ​一、用法精讲 68、pandas.infer_freq函数 68-1、语法 68-2、参数 68-3、功能 68-4、返回值 68-5、说明 68-6、用法 68-6-1、数据准备 68-6-2、代码示例 68-6-3、结果输出 69、pandas.interval_range函数 69-1、语法 69-2、参数 69-3、功能 69-4、返回值…

Open3D Ransac拟合空间直线

目录 一、概述 1.1实现步骤 1.2优势与局限 二、代码实现 2.1关键代码 2.2完整代码 三、实现效果 前期试读,后续会将博客加入该专栏,欢迎订阅 Open3D点云算法与点云深度学习案例汇总(长期更新)-CSDN博客 一、概述 RANSAC&…

VScode终端和外部终端中文乱码问题

VScode终端和外部终端中文乱码问题 前言VScode终端VScode的第二大特点方法一方法二外部终端(命令为ctrlf5) 总结实现VScode终端和外部终端都能运行可执行文件 心得 前言 如果只想要看解决方案可直接跳转到总结部分,其余的章节只是用来说明原…

解决C#读取US7ASCII字符集oracle数据库的中文乱码

👨 作者简介:大家好,我是Taro,全栈领域创作者 ✒️ 个人主页:唐璜Taro 🚀 支持我:点赞👍📝 评论 ⭐️收藏 文章目录 前言一、解决方法二、安装System.Data.OleDb连接库三…

第7章 模块(2)

目录 7.3 插入和删除模块 7.3.1 模块的表示 7.3.2 依赖关系和引用 7.3.3 模块的二进制结构 7.3.4 插入模块 7.3.5 移除模块 本专栏文章将有70篇左右,欢迎关注,查看后续文章。 7.3 插入和删除模块 两个系统调用: init_module&#xff1…

考研数学二战,怎么准备才能提升大?

一战70多...二战提升空间那是相当的大 我身边很多一战甚至不到60,二战成绩飙到120的,真的很猛 所以你根本不用担心是自己学数学没天赋,其实知识方法没用对而已 本人属于基础很差相当于是零基础的23考研党,经过一年备考成功上岸…

k8s集群 安装配置 Prometheus+grafana+alertmanager

k8s集群 安装配置 Prometheusgrafanaalertmanager k8s环境如下:机器规划: node-exporter组件安装和配置安装node-exporter通过node-exporter采集数据显示192.168.40.180主机cpu的使用情况显示192.168.40.180主机负载使用情况 Prometheus server安装和配置…

JayChou周杰伦的歌曲网易云音乐怎么听

听Jay自由 网易云导入 专辑介绍 周杰伦(Jay Chou)是一位著名的台湾流行歌手、词曲创作人和演员。他以其独特的音乐风格和才华横溢的创作能力而闻名于世。以下是对周杰伦所有专辑的简要介绍: 《Jay》(2000年)&#xf…

独立开发者系列(26)——域名与解析

域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的互联网上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。 由于IP地址不方便…

Leaflet集成wheelnav在WebGIS中的应用

目录 前言 一、两种错误的实现方式 1、组件不展示 2、意外中的空白 二、不同样式的集成 1、在leaflet中集成wheelnav 2、给marker绑定默认组件 2、面对象绑定组件 3、如何自定义样式 三、总结 前言 在之前的博客中,我们曾经介绍了使用wheelnav.js构建酷炫…

Flink底层原理解析:案例解析(第37天)

系列文章目录 一、flink架构 二、Flink底层原理解析 三、Flink应用场景解析 四、fink入门案例解析 文章目录 系列文章目录前言一、flink架构1. 作业管理器(JobManager)2. 资源管理器(ResourceManager)3. 任务管理器(Ta…

【八股系列】CSS盒模型:掌握网页布局的核心

🎉 博客主页:【剑九 六千里-CSDN博客】 🎨 上一篇文章:【Vue中的<keep-alive>组件:深入解析与实践指南】 🎠 系列专栏:【面试题-八股系列】 💖 感谢大家点赞&…

夏日狂欢水上漂流的爆笑奇遇记

【夏日狂欢,水上漂流的爆笑奇遇记 —— 月亮姐姐的“睫毛漂流记”】在这个炎炎夏日,当烈日炙烤着大地,每一寸空气弥漫着对清凉的渴望时,一场别开生面的“暑期嘉年华”正悄然掀起一场水上狂欢的浪潮。而在这场盛宴中,月…

FPGA实训报告DAY 1(Verilog HDL)

实习日志与总结 日期:2024 年 7 月 10 日 星期三 姓名:XXX 一、实习日志 上午 9:00 - 9:30 按时到达工位,参加部门早会,了解了今天的实习任务和目标,即初步学习 FPGA 简介和 Verilog 基础语法知识。 9:30 - 10:30…

springboot 集成minio,启动报错

springboot 集成 minio 8.5.10 报错 *************************** APPLICATION FAILED TO START *************************** Description: An attempt was made to call a method that does not exist. The attempt was made from the following location: io.minio.S3Base.…

在mybatis-plus中关于@insert注解自定义批处理sql导致其雪花算法失效而无法自动生成id的解决方法

受到这位作者的启发 > 原文在点这里 为了自己实现批量插入&#xff0c;我在mapper层使用insert注解写了一段自定义sql //自定义的批量插入方法 Insert("<script>" "insert into rpt_material_hour(id,sample_time,rounding_time,cur_month,machine_no…

启智畅想火车类集装箱号码识别技术,软硬件解决方案

集装箱号码识别需求&#xff1a; 实时检测车皮号、火车底盘号码、集装箱号码&#xff0c;根据火车类型分为以下三种情况&#xff1a; 1、纯车皮&#xff0c;只检测车皮号&#xff1b; 2、火车拉货箱&#xff08;半车皮&#xff09;&#xff0c;检测车皮号集装箱号码&#xff1b…

基于springboot和mybatis的RealWorld后端项目实战一之hello-springboot

新建Maven项目 注意archetype选择quickstart pom.xml 修改App.java App.java同级目录新增controller包 HelloController.java package org.example.controller;import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotatio…

拒绝废话:computed、watch和methods的区分和使用场景

computed、watch和methods是用于处理数据和响应数据变化的不同方式&#xff0c;三者之间有什么不同呢&#xff0c;贝格前端工场作为10年前端老司机&#xff0c;用浅显的语言给大家分享一下。 computed&#xff1a; computed属性是用来定义一个基于依赖的响应式属性。它会根据…