这是一个CPU的基本构成,它主要分为两个部分一个是运算器,一个是控制器,下面的主要做一个简单的了解。

我们先看运算器。这个是计算器用于实现计算的,这其中有4个部分组成分别是ACC(放数的),MQ(放数的和用来乘除的),X(放数的),ALU(用来计算的)。

接着我们再来看控制器。这相当于CPU的大脑(好像怪怪的),CPU的控制器有三个部分组成,CU(控制单元用来分析指令的),IR(存放当前要执行的指令),PC(计数器,用来读取下一条指令)

上面干巴巴的介绍说完了,实际上也很难记住,下面会有一个实际的例子,这样会更加方面理解。

实际运算过程

举个栗子:

当前C语言执行了这样一段代码,那么CPU在运行过程中是怎样的一个过程呢?

一、首先整段代码会被加载到内存(主存储器中)也就是下图那样

二、此时CPU会通过控制器中的PC读取存放在内存中的指令,进行分析和执行(此时PC初始为0)

首先指令的存储字长为16bit也就是16个2进制数,但是在执行的时候 系统会自动拆解成操作码和地址码

第一步指令 从上面两个操作来看,1-5的步骤都是一样的就是通过pc这样的计数器的顺序的取指,唯一不同的就是从6开始的步骤,不仅是步骤和次数都不一样这取决于指令本身。

来捋一下很简单从最基本的逻辑来看就是PC(计数器)从零开始,将这个0传给MAR也就是地址寄存器 说我们想要第0行的数据

MAR则把存储体中的第0行的数据找到通过MDR 柜台给到指令寄存器IR

此时IR中就存放着我们已经取出来的还没有执行的数据 这个数据也就是我们的指令

此时IR会将指令中的操作码发送给CU 分析后得知这是一个取数的指令,然后IR将0行指令的地址码发送给MAR (0000000101)也就是第5行的数据 a=2 将这个值放在acc中

第二步指令 上面这一些操作完成之后PC计数器就会自动加一,去除我们的第一行指令进行执行,而我们要计算的a*b的前面部分都是一样的,直接从执行操作码开始

CU分析之后发现是一个乘法指令,则将第1行的地址码的数据也就是b=3放到MQ乘商寄存器中

现在cpu已经满足了乘数和被乘数,cpu开始进行乘法操作了,先将acc的a=2 被乘数放在x通用寄存器 通过ALU算术逻辑单元进行乘法操作 并将结果放在ACC中

(如果乘数太大则需要MQ的辅助)

接着是第三步 算加法 前面取数阶段都是一样的 不同的就是取出的c=1的值是放在通用寄存器x中的 然后控制单元CU 给ALU 发送消息 需要计算加法吧ACC和X中的值相加 再放到ACC中

第四步指令 前面的取数也是一样的,只是取得的操作码通过CU分析为存数指令 将地址码发送给MAR(地址为十进制8) 将值发送给MDR(a*b+c) 将其存储到存储体中

第五步指令 前面取数也是一样的,取出的指令为停机指令

CPU组成原理及基本运算过程相关推荐

  1. 1.华为设备CPU过高排查过程

    华为设备CPU过高排查过程 华为设备CPU过高排查过程 首先进入诊断模式 之后输入dispaly cpu-usage或者dispaly cpu-usage查看具体什么进程占用的cpu进程 华为S级交换 ...

  2. net start mysql 服务名无效_记一次服务器被植入挖矿木马cpu飙升200%解决过程

    来自:开源中国,作者:我叫刘半仙  链接:https://my.oschina.net/liughDevelop/blog/1786631 " 某日,正在午休中,突然一则噩耗从前线传来:网站 ...

  3. 计算机组成原理乘法运算说明过程,计算机组成原理第二章 第8讲 定点乘法运算...

    计算机组成原理第二章 第8讲 定点乘法运算 (34页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 定点乘法运算,,2.3 定点乘法运算,2 ...

  4. 记录一次XordDos(BillGates)木马导致Centos kworker线程占满CPU资源的解决过程

    1.问题现象 ​ 通过top命令查看资源占用发现有大量kworker线程占用CPU资源,如下图.怀疑是系统问题或平台程序导致的问题. 2.是否是程序导致的论证过程 ​ 因平台有两部分组成socket+ ...

  5. cpu线程_记w3wp占用CPU过高解决过程Dictionary线程安全

    项目上线以来一直存在一个比较揪心的问题,和一个没有信心处理的BUG,那就是在应用程序启动时有可能会导致cpu跑满99%或持续在一个值如50%左右,这样一来对服务器的压力是非常大的,经常出现服务器无法远 ...

  6. RAC OEM 打开无法显示CPU情况 的解决过程

    环境: ORACLE11G RAC+ASM,双节点. 现象: emctl status dbconsole, emctl start dbconsole 都没有问题. 但登录OEM后,看到显示的两节点 ...

  7. java程序cpu突然飚高_Java 定位导致CPU飙升的代码过程

    线上的一个日志实时输出的程序曾经出过这样一个问题,刚开始上线java程序占用的CPU的资源很少,但是到了整点的时候,CPU直线飙高,直接到达100%根本没有要下降的趋势,唯一的方法只能杀掉它了,后面在 ...

  8. Mysql占用CPU过高排查过程及可能优化方案

    1.查看生产DB服务器top列表, 执行 top 命令 2.使用root用户登录mysql 执行 show full processlist 查看慢查询,反复执行,如果发现一直有select 查询语句 ...

  9. 简述基于CPU的机器码运行过程

    引言:会写日志的人不一定是优秀的人,但优秀的人往往是会写日志的 这里涉及五个部分,胡歌,林拜,贾以枚,罗伊人,冯眷眷-林拜老婆 依次对应CPU里的控制器, CPU里的寄存器,存储器,输入电路,输出电路 ...

最新文章

  1. 配深度学习环境要注意的不多,也就
  2. [转载]IPMSG(飞鸽传书)协议翻译
  3. git换行符之autoCRLF配置的意义
  4. 循序渐进Java Socket网络编程(多客户端、信息共享、文件传输)
  5. 1.sql 数据据基础_数据库的组成
  6. springboot 注册服务注册中心(zk)的两种方式
  7. 初学者:关于html中的text-align文本居中属性详解
  8. 美国北亚利桑那大学计算机专业排名,美国北亚利桑那大学排名学费
  9. 三菱凌云3故障代码_上海三菱凌云2故障代码
  10. 拉钩作业:Bikeshare数据集 预测共享单车骑行量
  11. [工具]Firefox(火狐浏览器)常用插件
  12. 数据库 之带子查询的操作--插入子查询结果、带子查询的修改语句、带子查询的删除语句
  13. 小程序实现轮播图跳转页面和小程序
  14. MongoDB 空间定位(点) 与 距离检索
  15. Pytorch 计算误判率,计算准确率,计算召回率
  16. 记一次3dmax入门
  17. c语言 数字分离编程,C++ 整数拆分方法详解
  18. AWS IoT 物联网设备 - 即时部署 JITP 实战
  19. MySQL索引分析扩展理解
  20. 数制转换的概念和转换

热门文章

  1. python-西刺代理的获取
  2. VMware中三种网络配置作用总结(桥接网络、NAT网络、仅主机模式)
  3. Nature Communications|评估推进基于网络的蛋白质-蛋白质相互作用预测的社区工作
  4. swap去中心化交易平台系统开发技术案例/开发项目/源码部署
  5. 微信公众平台认证步骤详解及服务号和订阅号区别 分类: 微信 2014
  6. python 常忘代码查询 和autohotkey补括号脚本
  7. BI数据库管理RPD配置
  8. Python从网络接口爬取json天气预报数据绘制高温低温双折线图
  9. App Store/Google Play开发者如何收款?中国谷歌开发者收款方式总结
  10. 移动架构师之EIT造形与设计模式笔记