以下除特殊说明外均为32位数的运算

1.加法运算

  A   +   B    =   C

无符号整数加法和有符号整数加法均采用以下方案进行操作

用到的寄存器与初始化内容:

32位加数寄存器--------初始化为加数

32位被加数寄存器 ----初始化为被加数

32位和寄存器 ----------全部置零

操作方案如下:

  将加数寄存器和被加数寄存器按位对齐,每组对应位分别进行以下操作:

放在一起就是:(因32位画出来过于繁杂,这里的图示采用了8位)

在此基础上还要设置溢出判断,来表示这次运算是否发生溢出。

2.减法运算

  被减数   -   减数  =  差

  这里承用上面的加法运算单元。

  用A表示被减数,B表示减数。首先将B转换为其相反数即(-B)。然后进行A+(-B)的加法运算。同时也要设置一段逻辑电路判断减法运算是否发生溢出。

3.乘法运算

  被乘数  X  乘数   =   积

1>无符号整数乘法

  最早的解决方案:

所用到的存储器与初始化存储内容:

32位乘数寄存器--------初始化为乘法运算的乘数

64位被乘数寄存器 ----低32位填充为乘法运算的被乘数,高32位置零

64位积寄存器 -----------全部置零

用到的功能分别为:循环,无符号加法,移位。

执行结构图如下:

  改进后的解决方案:

所用到的存储器与初始化存储内容:

32位被乘数寄存器(简称A)------初始化为乘法运算的被乘数

64位积寄存器 (简称B)-----------高32位置零,用来存放乘积,低32位初始化为乘数

对于每次迭代:

  

2>有符号整数乘法

先把乘数和被乘数的符号位记下来,然后把乘数和被乘数转换成正数进行无符号乘法运算,运算结果再加上符号。

3>浮点数乘法

4.除法运算

  被除数   ÷   除数  =  商 ••••••余数

1>无符号整数除法

所用到的存储器与初始化存储内容:

32位商寄存器-----------全部置零

32位除数寄存器 -------填充32位除数

65位余数寄存器 -------左半部分置零,右半部分填充32位被除数

处理结构图:

2>有符号整数除法

跟上文有符号整数乘法一样,先保存除数、被除数符号,若两者符号异或为1,则商为负。

3>浮点数除法

<科普>CPU进行四则运算(加减乘除)的主流方法的更多相关文章

  1. 读书笔记:7个示例科普CPU Cache

    本文转自陈皓老师的个人博客酷壳:http://coolshell.cn/articles/10249.html 7个示例科普CPU Cache (感谢网友 @我的上铺叫路遥 翻译投稿) CPU cac ...

  2. linux下实现CPU使用率和内存使用率获取方法

    想获取一下目标机运行时linux系统的硬件占用情况,写了这几个小程序,以后直接用了. 方法就是读取proc下的文件来获取了. cpu使用率:    /proc/stat ,内存使用情况:     /p ...

  3. 性能测试分析过程(二)cpu 使用率过高的分析方法

    Linux 系统下 cpu 使用率过高的分析方法 1.通过 top 命令可以很明显查看出哪个进程耗cpu比较高 2. ps -mp 25147-o THREAD,tid,time\top -Hp pi ...

  4. <转>科普CPU Cache line

    转载于http://coolshell.cn/articles/10249.html CPU cache一直是理解计算机体系架构的重要知识点,也是并发编程设计中的技术难点,而且相关参考资料如同过江之鲫 ...

  5. linux下进程cpu占用过高问题定位方法

    背景 记得前段时间,同事说他们测试环境的服务器cpu使用率一直处于100%,本地又没有什么接口调用,为什么会这样?cpu使用率居高不下,自然是有某些线程一直占用着cpu资源,那又如何查看占用cpu较高 ...

  6. 转:关于安卓多线程while(true)方法占用CPU高的原因及其解决方法

    由于项目需要用到安卓多线程操作,结果开了四条线程,下载到平板一直很卡,CPU占用率暴涨.于是开始查找原因,发现是线程run()方法里的while(true)导致的, 下图是为解决时开启一条while( ...

  7. C#正则表达式引发的CPU跑高问题以及解决方法

    3月23日(周日)下午16:30左右,博客园主站负载均衡中的2台Web服务器CPU玩起了爬楼梯的游戏(见上图),一直爬到了接近100%.发现这个状况后,我们立即将这2台阿里云临时磁盘云服务器从负载均衡 ...

  8. [深度学习] Pytorch学习(二)—— torch.nn 实践:训练分类器(含多GPU训练CPU加载预测的使用方法)

    Learn From: Pytroch 官方Tutorials Pytorch 官方文档 环境:python3.6 CUDA10 pytorch1.3 vscode+jupyter扩展 #%% #%% ...

  9. [转载]查看基于Android 系统单个进程内存、CPU使用情况的几种方法

    转载自: http://www.linuxidc.com/Linux/2011-11/47587.htm 一.利用Android API函数查看1.1 ActivityManager查看可用内存. A ...

随机推荐

  1. 运维常用 MySQL 命令

    目录 设置用户密码 方法一 方法二 丢失root密码找回 添加用户 设置用户密码 方法一 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NewPass ...

  2. 学习WebFlux时常见的问题

    前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 回顾一下上篇我对WebFlux的入门,如果没读过 ...

  3. Spring 核心技术与产品理念剖析(上)

    IT 技术发展太快了,就像浪潮一样一波接着一波,朝你迎面扑来,稍不留神就会被巨浪卷至海底而不得翻身.我们必须要学会抓住那些不变的本质或规律,只有这样才能屹立潮头而不倒,乘风破浪,做这个巨变时代的弄潮儿 ...

  4. shell 点命令和source指令

    1 shell脚本执行方法 有两种方法执行shell scripts,一种是新产生一个shell,然后执行相应的shell scripts:一种是在当前shell下执行,不再启用其他shell.新产生 ...

  5. 三角形列表前缀.html

    发过火刮腹湔肠封官赐爵法规及法规及提供 发过火刮腹湔肠封官赐爵法规及法规及提供 发过火刮腹湔肠封官赐爵法规及法规及提供 发过火刮腹湔肠封官赐爵法规及法规及提供 发过火刮腹湔肠封官赐爵法规及法规及提供 ...

  6. Python装饰器总结,带你几步跨越此坑!

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

  7. HTML <input> placeholder 属性

    css ::-webkit-input-placeholder { /* WebKit, Blink, Edge */ color: #909; } :-moz-placeholder { /* Mo ...

  8. react-native 跳转到ios/android 权限设置界面

    目录 ios android 1.在android/app/src/main/java/com/<projectname>文件夹下创建opensettings文件夹 2.在opensett ...

  9. atom常用快捷键-mac亲测

    目录 最常用 其他 测试没成功 最常用 中文 快捷键 功能 新建界面窗口 Ctrl + Shift + N 新建文件 Ctrl + N 打开文件 Ctrl + O 打开文件夹 Ctrl + Shift ...

  10. 关于maven-assembly-plugin插件打包,有部分无法打包的情况解决方法

    今天在使用maven-assembly-plugin 对生产者进行打包,然后在linux中发布时.将包打包之后,发现mybtis的xml无法识别,然后查看原因说是没有这个包,我当时就纳闷了,都是基操( ...