大家好,我是贺贺。

计算机组成原理系列

计算机的五大组成部分(计组学习一)
计算机各个部件配合完成加减乘除(计组学习二)

预热一下

当我们了解了计算机的五大组成部分后,下面我来聊聊计算机的各个部件是怎么配合完成加减乘除的。在进行讲解之前,先说一下什么是指令,指令是由操作码和地址码构成的,一条指令是由多条微指令构成的,或者说,一条指令是由一个微程序构成的。是不是感觉有点懵,不用担心,下面通过例子就可以理解了。先放个图,简单回忆一下,回忆不起来的可以看看往期的文章。

加法运算

加法运算想必大家都不陌生吧,但是对于计算机的加法运算,可就比较复杂了,具体的运算这篇文章暂不讨论,后续文章会进行详细讲解,这篇文章主要进行讲解各个部件是如何完成加减乘除的。首先要用到的是程序计数器PC,PC是记录下一条要执行的指令地址,假设此时刚好指向a+b;这行代码,需要注意的是,看似简单的一行代码是由很多条指令组成的,例如有取数指令加法指令等,另外假设数据在主存中已经存在,我们主要研究是如何实现加法运算的,各个部件的细节,在后续文章中会逐一讲解。正文开始,假设第一条指令的地址是0,PC指向0号地址。
第一步:PC的值0给MAR
第二步:通过MAR的值去存储体中取数据
第三步:把取到的数据放到MDR中(这里的数据是一条指令)
第四步:将MDR的指令放到IR中(IR中存放的是要执行的指令)
第五步:IR的操作码送到CU里,CU通过分析发现是取数指令
第六步:IR里的地址码放到MAR中
第七步:通过MAR的值去存储体取数据(也就是a的值)
第八步:把取得的数据放到MDR中
第九步:把MDR的值放到ACC累加寄存器中(至此取数完成)
上面这九步完成了一个取数的指令。其中1 ~ 4是取指令,5是分析指令,6 ~ 9是执行指令。可见,这个取数指令由9条微指令组成。需要注意的是,在这条指令取指完成后,PC的值会自动加一,也就是指向下一条指令地址,也就是+b操作,同样的,这一条指令的执行,也分为取指令,分析指令,执行指令三个阶段。与上面不同的是,取出的加数b要放到通用寄存器X中,这样好让ACC的值与X通过算术逻辑单元ALU进行加法操作,得到的结果放到ACC中。

减法、乘法、除法运算

a-b,学完加法之后,减法与之类似,需要注意的是累加器ACC中存放的是被减数a,通用寄存器X里存的是减数b,减得的结果放在ACC中。

a*b,乘法运算,累加器ACC放的是被乘数a,而乘数b放到乘商寄存器MQ中,在运算之前,累加器中的被乘数会放到通用寄存器X中(因为要执行的是乘法),并把ACC清零,此时运算是通过MQ里的b与X里的a进行乘法运算。乘得的结果高位放到ACC中,低位放到MQ中。

a/b,除法运算,累加器ACC放的是被除数a,而除数放到X中,这里需要注意的是,运算之前没有用到乘商寄存器MQ(乘商寄存器,可能只用来存乘和商吧),ACC里的被除数与X里的除数相除,所得的商放到MQ中,而余数放到ACC中。

存数指令

当我们把结果计算出来之后,要存放到主存中,而存数指令也是一条指令,指令呢,又分为三个阶段,分别是:取指令、分析指令、执行指令。假设这条指令所指的指令地址是3,也就是PC的值等于3。
取指令
第一步:将PC的值给MAR
第二步:通过MAR的值去存储体中取指令
第三步:把取到的指令放到MDR中
第四步:将MDR的指令放到IR中
分析指令
第五步:IR的操作码送到CU里,CU通过分析发现是存数指令
执行指令
第六步:IR里的地址码放到MAR中
第七步:ACC的值放到MDR中
第八步:MAR的值放到存储体中
第九步:与之对应的MDR的值也放到存储体中
这样一来,就把ACC里的值通过一条存数指令,存到了存储体中。

小七的故事

小七是个初中生,总分全靠一门物理来撑着,然而物理满分只有七十分,所以小七是个学渣,但是呢,他心里一直以为自己是个很认真很踏实的学生,他犯了一个很大的错,那就是,他以为只要把一件事情做到极致,就可以弥补其他的缺陷,就像学习,他想用70分的物理,来弥补120分的英语,然后他的物理并没有考到70分,而英语却如他所愿,考的一塌糊涂。

计算机各个部件配合完成加减乘除(计组学习二)相关推荐

  1. 计算机的五大组成部分(计组学习一)

    大家好,我是贺贺,一个爱唱歌但是五音不全的程序员 计算机组成原理系列 计算机的五大组成部分(计组学习一) 计算机各个部件配合完成加减乘除(计组学习二) 计算机的故事 在开始啃计算机组成原理(下文简称计 ...

  2. 【2017年计算机408统考真题】计组13题 主存储器

    [2017年计算机408统考真题]计组13题 13. 某计算机主存按字节编址, 由4个64Mx8位的DRAM芯片采用交叉编址方式构成, 并与宽度为32位的存储器总线相连, 主存每次最多读写32位数据. ...

  3. 计算机组成原理实验心得2000字,计组实验报告(共10篇).doc

    计组实验报告(共10篇) 计组实验报告(共10篇) 计组实验报告 计算机组成原理实验报告一 一.算术逻辑运算器 1. 实验目的与要求: 目的:① 掌握算术逻辑运算器单元ALU(74LS181)的工作原 ...

  4. 2022山东大学软件学院计算机组成与课程设计(计组课设)分享防踩坑

    目录 课程主要内容 课程时间: 学分: 小Tips: 经验分享: 关于地址写入的简单介绍 关于脉冲速度调节 关于清零端的问题 踩坑注意事项: 一些具体实验器件的介绍: 总图的介绍: 选择器: IR指令 ...

  5. 计组学习笔记之总线系统

    目录 总线的概念和结构形态 总线的基本概念 总线的分类 总线的物理实现 总线的特性 总线的性能指标 总线的连接方式 单总线结构 双总线结构 三总线结构 多总线结构 总线的内部结构 早期总线内部结构 现 ...

  6. 计组学习笔记之CPU(3)——硬布线控制器和微程序控制器

    目录 控制器 控制器的结构和功能 硬布线控制器 硬布线控制器的定义 硬布线控制器结构 逻辑网络输入信号的三个来源 硬布线控制器的基本原理 微操作控制信号 微操作控制信号的产生 安排微操作时序的原则 微 ...

  7. 计组学习笔记(一):浮点数的表示和运算

    最近学习计算机组成原理,遇到许多疑难问题,接下来写一写我在学习浮点数方面知识的理解,在巩固的同时也方便日后的复习. 一.浮点数的表示 1.浮点数的表示格式 浮点数,顾名思义,就是小数点不固定的数.计算 ...

  8. 计组学习笔记(四):高速缓冲存储器Cache

    一.为什么要有Cache 我们知道存储器的层次结构为,CPU-->寄存器--Cache--主存--磁盘--磁带.光盘,假设没有Cache这一层,那就相当于我CPU要想找东西直接去主存找,CPU速 ...

  9. 计组学习总结(被逼无奈)

    计算机组成原理: ###计算机基本概况 ##冯洛伊曼结构的特点 1.二进制表示信息 2.采用存储程序的工作方式(核心) 3.计算机硬件系统由五大部分组成 (存储器,运算器,控制器,输入设备和输出设备) ...

最新文章

  1. 高并发场景下,到底先更新缓存还是先更新数据库?
  2. 这才是真的码“农”!Linux基金会要推广开源技术种菜了
  3. 通过jquery获取td下的input标签的值,并且改变onclick的参数值
  4. 互联网趋势关键词:交流,为价值付费,资源整合
  5. JDBC连接mysql数据库操作
  6. SpringBoot 集成 Nacos
  7. 向上传文件服务器,向服务器上传文件
  8. 【计算几何】FZU Problem 2270 Two Triangles
  9. 【Python制作小游戏】一篇文章带你做出自己的“大鱼吃小鱼”
  10. 7500 cpuz跑分 i5_锐龙R5 1400对比i5 7500哪个好 R5-1400与i5-7500区别对比详细评测
  11. Oracle中TO_NUMBER()函数的用法
  12. 系统主数据管理之物料(Item)四 Item的单位(UOM)
  13. 搞个气氛 用MATLAB画一棵精致的圣诞树
  14. 天天炫斗服务器维修,【天天炫斗】弱网处理及断线重连方案
  15. win10系统小米妙享中心,在手机可搜索到电脑,与之跨屏协作
  16. CSS:怎么样给背景图加透明度 opacity ?
  17. keras的数字图像识别
  18. java web 点着点着就死掉了_Websphere(was)故障-挂死,重启,产生core.*.dmp,javacore文件-分析和解决...
  19. 如何设置IIS中的HTTPS服务
  20. gem5集成nvmain

热门文章

  1. IOS数组按中文关键字以字母序排序
  2. 深入剖析Redis事件驱动
  3. IT行业为什么需要更多的女性?
  4. 也许,真的有2012
  5. BIM工程信息管理新系统- 系统管理模块
  6. 利用python scapy包进行抓包发包与ARP扫描
  7. 这是我的第一个博客,以后遇到问题一起解决
  8. 测试工程方法:判定表驱动法
  9. React Native组件的结构和生命周期
  10. java并发编程实战学习(3)--基础构建模块