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

《计算机原理与系统结构》学习系列——计算机的算数运算(上)

系列文章目录


目录

  • ALU
  • 行波进位加法器
  • 超前进位加法器
  • 整数运算
  • 加减法
  • 乘法
  • 无符号数相乘
  • N位乘法数的工作流程
  • N位乘法器改进:硬件资源
  • 更快速的乘法 
  • MIPS中的乘法
  • 除法 
  •  32位除法器流程
  • 除法器改进 
  •  更快速的除法
  •  MIPS中的除法
  • 总结

ALU

 ALU功能:对a,b(0,1)完成

  • 算数运算
  • 逻辑运算

行波进位加法器

上图为一位ALU,32个一位ALU组合成为32位ALU。低位的进位输出指向高位的进位输入,最低位的进位输入用于控制减法,这种直接连接1位进位的加法器称为行波进位加法器

超前进位加法器

进位速度制约了加法的速度,32位ALU的行波进位方式在每次进位时都要通过与门、或门各一次,共产生64个门延迟

使用超前进位加法器,通过将进位分成4位一组,抽象成每组进位,实现加法器的并行执行

具体原理比较复杂,结论:要执行n位加减法,求出n是4的几次方并向上取整,在乘二加1,就是超前进位的门延迟


整数运算

加减法

例子:5+6

三个输入:A,B,CarryIn

两个输出:Sum,CarryOut

CarryIn(i+1) = CarryOut(i)

减法就是加上数的负值

例子:7-6=7+(-6)

如果结果超出表示范围就会发生溢出

  • 两个正数相加,结果为负,发生溢出
  • 两个负数相加,结果为正,发生溢出
  • 正数和负数相加,永远不会溢出
  • 其他情况,都未发生溢出

行波加法器中加减法

Cn 与 Cn-1 进行异或逻辑操作,以判断是否有溢出

5+6:

 5-6:


乘法

无符号数相乘

例子:A=1101  B=1011 

乘积的位数是乘数和被乘数之和 

N位乘法数的工作流程

用4位乘法做例子

迭代

步骤

乘数

被乘数

积product

0

初始值

001

0000 0010

0000 0000

1

1:1→积=积+被乘数

0011

0000 0010

0000 0010

2:左移被乘数

0011

0000 0100

0000 0010

3:右移乘数

000

0000 0100

0000 0010

2

1:1→积=积+被乘数

0001

0000 0100

0000 0110

2:左移被乘数

0001

0000 1000

0000 0110

3:右移乘数

000 0

0000 1000

0000 0110

3

1: 无操作

0000

0000 1000

0000 0110

2:左移被乘数

0000

0001 0000

0000 0110

3:右移乘数

000 0

0001 0000

0000 0110

4

1:无操作

0000

0001 0000

0000 0110

2:左移被乘数

0000

0010 0000

0000 0110

3:右移乘数

0000

0010 0000

0000 0110

时间效率 

N位乘法器改进:硬件资源

注意到每进行一次迭代,乘积从32增长到64,乘数位从32减少到0,合起来永远是64,可以拼接成为一个64位乘积/乘数寄存器让积相对于被乘数右移(而不是乘数相对于积左移),ALU从64位缩减到32位,改进后硬件规模减小,每一步仅占一时钟周期

更快速的乘法 

速的乘法运算主要的思想是为乘数的每一位提供一个 32 位的加法器: 一个用来输入被乘数和 一乘数位相与的结果 ,另一个是上一个加法器的输出
 一种直接 的方法是将每个右边的加法器的输出作为左边加法器的输入,形成一个 高 32 的加法器栈 。一种替换的方法是将 32 个加法器组织成一个并行树

MIPS中的乘法

IPS 提供了 一对单独的 32 位寄存器来容纳 64 位的积,称为 Hi 和 Lo 。 为了产生正确的有符号积和无符号积, MIPS 提供了两条指令:乘法 (mult) 和无符号乘法 (multu) 。 为了取得 32 位的整数积,程序员需要使用 mflo 指令 (move from lo) 。 MIPS 汇编器为乘法生成了 一条伪指令,它使用了 三个通用寄存器,用 mflo 和 mf肛指令将积送入指定的寄存器 。


除法 

  • 除数判0 
  • 除法步骤
    • 除数≤被除数
      • 商添加1,执行减法
    • 否则
      • 商添加0,从被除数中提取下一位
  • 恢复余除法:直接执行减法,结果小于0后再把除数加回去

 32位除法器流程

在任何情况下,整数除法都要满足被除数=除数×商+余数

计算-7/2时,可以商-3余1,也可以商-4余1

为了避免这种差异,规定余数和被除数同号,即商-3余-1 

硬件

被除数一开始存在64位余数寄存器中,除数从64位除数寄存器的高32位逐次右移到低32位,每次迭代,向32位商寄存器的最低位添加0或1 ,执行33次迭代

 例子:7/2

除法器改进 

注意到每轮迭代,余数(一开始是可以看作被除数)位数从64减少到32,商的位数从0增加到32合起来总是64位,可以拼接成一个64位余数/商寄存器,最后余数就是整个除法的余数

 更快速的除法

与乘法相同,摩尔定律同样适用千除法 。 我们使用许多加法器来加速乘法,但这一招对除法却不管用 。 因为除法算法每次迭代前需要知道减法结果的符号,而乘法却可以立刻生成 32个部分积

有一些技术可以每步生成不仅一个商位 。 如被称为 SRT 的除法算法,通过查找表的方法来尝试猜测每步儿个商位,其中查找表基于被除数和余数的高位部分来进行 。 它依赖后面的步骤来修正错误的猜测 。 如今典型值是 4 位 。 算法的关键是猜测要减的值 。 对于二进制算法,只有一种选择 。 可用余数的 6 位和除数的 4 位来索引查找表,从而决定每步的猜测 

这个快速算法的正确性取决于查找表中的值是否合适

 MIPS中的除法

为了处理有符号整数和无符号整数, MIPS 采用两条指令:除 (div) 和无符号除 (di 一 vu) 。 MIPS 汇编器允许除指令使用三个寄存器,且采用 mflo 和 mfhi 指令将运算结果放入指 定的通用寄存器


总结 

相关文章:

《计算机原理与系统结构》学习系列——计算机的算数运算(上)

系列文章目录 目录 ALU行波进位加法器超前进位加法器整数运算加减法乘法无符号数相乘N位乘法数的工作流程N位乘法器改进:硬件资源更快速的乘法 MIPS中的乘法除法 32位除法器流程除法器改进 更快速的除法 MIPS中的除法总结 ALU ALU功能:对a,…...

如何在华为云服务器查看IP地址,及修改服务器登录密码!!!

1.在华为云服务器查看IP地址 (1).第一步: 先找到控制台 (2).第二步: 点击华为云Flexus云服务 (3)第三步: 找到公网IP,就找到华为云服务器IP地址啦。 注意:在操作以上步骤的前提是要已注册华为云账号及购买云服务器…...

JAVA并发编程高级——JDK 新增的原子操作类 LongAdder

LongAdder 简单介绍 前面讲过,AtomicLong通过CAS提供了非阻塞的原子性操作,相比使用阻塞算法的同步器来说它的性能已经很好了,但是JDK开发组并不满足于此。使用AtomicLong 时,在高并发下大量线程会同时去竞争更新同一个原子变量,但是由于同时只有一个线程的CAS操作会成功,…...

常见的基础系统

权限管理系统支付系统搜索系统报表系统API网关系统待定。。。 Java 优质开源系统设计项目 来源:Java 优质开源系统设计项目 | JavaGuide 备注:github和gitee上可以搜索到相关项目...

在 window 系统下安装 Ubuntu (虚拟机)

文章目录 零、Ubuntu 和 Vmware workstation 资源一、下载 Ubuntu二、下载 Vmware Workstation Pro三、安装 Vmware Workstation Pro四、创建虚拟机五、配置 Ubuntu 零、Ubuntu 和 Vmware workstation 资源 如果觉得自己下载 Ubuntu 和 Vmware workstation 麻烦,也…...

鸿蒙开发(NEXT/API 12)【访问控制应用权限管控概述】程序访问控制

默认情况下,应用只能访问有限的系统资源。但某些情况下,应用存在扩展功能的诉求,需要访问额外的系统数据(包括用户个人数据)和功能,系统也必须以明确的方式对外提供接口来共享其数据或功能。 系统通过访问…...

(10)MATLAB莱斯(Rician)衰落信道仿真1

文章目录 前言一、莱斯分布随机变量二、仿真代码与结果1.仿真代码2.仿真结果画图 后续 前言 首先给出莱斯衰落信道模型,引入了莱斯因子K,并给出莱斯分布的概率密度函数公式。然后导出莱斯分布随机变量的仿真表示式,建立MATLAB仿真代码&#…...

什么是重卡充电桩?

有什么广告?没有广告,纯纯的介绍。 在政策与市场双重驱动下,充电桩市场已经开启加速模式,行业的火苗越烧越旺。同时,随着新能源重卡的广泛普及,重卡充电桩也迎来了新的发展机遇。 此种背景下 &#xff0c…...

模拟实现消息队列(基于SpringBoot实现)

提要:此处的消息队列是仿照RabbitMQ实现(参数之类的),实现一些基本的操作:创建/销毁交互机(exchangeDeclare,exchangeDelete),队列(queueDeclare,…...

C语言:预编译过程的剖析

目录 一.预定义符号和#define定义常量 二.#define定义宏 三.宏和函数的对比 四、#和##运算符 五、条件编译 在之前,我们已经介绍了.c文件在运行的过程图解,大的方面要经过两个方面。 一、翻译环境 1.预处理(预编译) 2.编译 3…...

算法——单调栈

单调栈&#xff1a; 保持栈内的元素始终递增或递减。 单调递增 待处理数组{1,5,2,5,7,2,8} public void sameyIncrease(int[] nums) {Stack<Integer> stack new Stack<>();for(int i 0; i < nums.length; i) {//当栈空的时候可以直接进栈或者要进栈的数大于…...

LeetCode讲解篇之695. 岛屿的最大面积

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们遍历二维矩阵&#xff0c;如果当前格子的元素为1进行深度优先搜索&#xff0c;将搜索过的格子置为0&#xff0c;防止重复访问&#xff0c;然后对继续深度优先搜索上下左右中为1的格子 题解代码 func maxAr…...

招联2025校招内推倒计时

【投递方式】 直接扫下方二维码&#xff0c;或点击内推官网https://wecruit.hotjob.cn/SU61025e262f9d247b98e0a2c2/mc/position/campus&#xff0c;使用内推码 igcefb 投递&#xff09; 【招聘岗位】 后台开发 前端开发 数据开发 数据运营 算法开发 技术运维 软件测试 产品策…...

vite学习教程01、vite构建vue2

文章目录 前言一、vite初始化项目二、修改配置文件2.1、修改main.js文件2.2、修改App.vue文件2.3、修改helloworld.vue2.4、修改vite.conf.js2.5、修改vue版本--修改package.json文件 三、安装vue2和vite插件四、启动服务资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝3W&…...

强化学习部分代码的注释分析

引言 对一些代码块进行注释。我直接复制过来的&#xff0c;不能运行的话别怪我。 多臂赌博机 代码来自链接。欢迎回到原来的链接学习。 %I thought what Id do was Id pretend I was one of those deaf-mutes&#xff0c;or should I ?clear all; epsilon[0.5,0.2,0.1,0.0…...

ctf.bugku-备份是个好习惯

访问页面得到字符串 这串字符串是重复的&#xff1b; d41d8cd98f00b204e9800998ecf8427e 从前端、源码上看&#xff0c;除了这段字符串&#xff0c;没有其他信息&#xff1b;尝试解密&#xff0c;长度32位&#xff1b;各种解密方式试试&#xff1b; MD5免费在线解密破解_MD5在…...

C++面试速通宝典——14

220. static关键字的作用 ‌‌‌‌  static关键字在编程中有多种作用&#xff1a; 在类的成员变量前使用&#xff0c;表示该变量属于类本身&#xff0c;而不是任何类的实例。在类的成员函数前使用&#xff0c;表示该函数不需要对象实例即可调用&#xff0c;且只能访问类的静…...

k8s的简介和部署

一、k8s简介 在部署应用程序的方式上面&#xff0c;主要经历了三个阶段&#xff1a; 传统部署:互联网早期&#xff0c;会直接将应用程序部署在物理机上优点:简单&#xff0c;不需要其它技术的参与缺点:不能为应用程序定义资源使用边界&#xff0c;很难合理地分配计算资源&…...

Thingsboard 网关实战 modbus通信 rpc下发控制指令

我们这里说的是Thingsboard通过网关modbus通信接入设备&#xff0c;然后通过rpc下发指令去控制开关信号的设备&#xff0c;不会网关通过modbus接入设备的&#xff0c;可以看我之前的文章&#xff0c;从小白教学。 下面我们就说如何下发rpc开关信号指令 第一步.在modbus配置文…...

基于pytorch的手写数字识别

import pandas as pd import numpy as np import torch import matplotlib import matplotlib.pyplot as plt from torch.utils.data import TensorDataset, DataLoadermatplotlib.use(tkAgg)# 设置图形配置 config {"font.family": serif,"mathtext.fontset&q…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...