文章目录

  • 计算机结构体系来源
  • 冯诺依曼体系结构
  • 主存储器的基本组成
  • 运算器的基本组成
  • 控制器的基本组成
  • 计算机的工作过程
  • 总结

计算机结构体系来源

1946年,美国发明了世界上第一台计算机ENIAC,可用于比较快速的数据计算,但是其运算速度却受到了人工数据的输入速度的限制,为此我们现在所广为人熟悉的大佬 冯诺依曼提出了程序存储的概念:

  • 将指令以二进制代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。

当采用程序存储概念以后的计算机,其运算速度得到了明显提升,比如第一台采用冯诺依曼体系结构的计算机EDVAC(electronic discrete variable automatic computer),翻译过来就是电子离散变量自动计算机;

冯诺依曼体系结构

冯诺依曼体系结构由五大设备组成,分别是: 输入设备, 运算器, 控制器, 存储器和输出设备,它们之间的关系如下:

  • 输入设备的作用是: 将信息转换为机器能识别的形式,即二进制数据;

  • 运算器设备的作用是: 作为其输入设备和输出设备的中转站; 把数据从存储器来回运输; 进行算术运算和逻辑运算; (这里说的是冯诺依曼结构里的运算器作用);

  • 存储器设备的作用是: 存储计算机数据和程序,注意数据和程序在本质上都是二进制,属于等价关系,所以存储器对它们一视同仁;

  • 控制器设备的作用是: 从存储器设备读取和解析相关指令,比如加减乘除运算指令,然后指挥程序运行;

  • 输出设备的作用是: 将二进制数据转换为人类能识别的形式,比如文本,图像;

冯诺依曼体系结构的特点:

  1. 整个机构由五大部件组成;
  2. 数据和程序指令在存储器中同等地位,且都是二进制形式,可以按照地址寻访
  3. 指令由操作码和地址码组成;操作码代表加减乘除等运算行为,地址码代表所存储的数据在哪个位置
  4. 可以存储程序;
  5. 整个结构以运算器为中心(输入输出设备的数据都需要运算器进行传送完成,这将会导致运算器执行本来不该他执行的工作,导致效率比较低(相对来说)),这就是冯诺依曼体系的缺点

因此,现代计算机避免了此缺点,将计算机设计成了让输入输出设备和存储器进行直接相连,即以存储器为中心

而我们所熟悉的CPU,其实就是控制器和运算器的集合体,所以现代计算机模型大致如下:

因此本文的所有硬件结构大致可以如下展示:

这里需要提醒一下:
主存这里指的主存储器,即我们常说的内存条,或者手机说的运行内存,属于通电闪存;
而辅存指的是硬盘等大容量容器,比如电脑的SSD,或者手机上的256G等大容量

主存储器的基本组成

主存储器结构主要又三个部分组成:

  • 存储体: 存储数据和代码指令
  • MAR(memory address register): 存储地址寄存器,用于查找地址
  • MDR(memory data register): 存储数据寄存起,用于向存储体存数据或者取数据

为了方便理解,主存储器的结构可以用快递驿站进行类比:其存储体相当于驿站的存物架(具有表示哪个架子,几层,几号的标记),MAR相当于柜员,MDR相当于柜台,而我们相当于CPU;

当我们想取地址为10-8-3上面的包裹时,我们可以将该地址告诉柜员(MAR),然后MAR根据地址去取第10个柜台,第8层,上面排列着的第3个包裹放到柜台上(MDR),然后我们(CPU)从MDR上取走快递(数据)

当然这仅仅只是为了方便理解进行的类比,并不一定准确

而存储体的结构如下:

存储体被划分为了一个个单元,称为存储单元,每个存储单元里面存放着一串二进制代码

而每个存储单元中存储的所有二进制内容的组合称为一个word,即,有时也称为存储字

而word的长度,我们称为存储字长,即二进制的位数;

运算器的基本组成

运算器的基本作用是实现算术运算(如加减乘除)和逻辑运算(如与或非),它的内部主要由ACC,MQ,ALU和X寄存器构成;

  • ACC(accumulator),累加器,用于存放操作数或累加结果
  • MQ(Multipul-quotient),乘商寄存器,用于存放操作数或乘商结果
  • X, 通用操作数寄存器,用于存放操作数
  • ALU(arithmetic and logic unit),算术逻辑单元,通过内部复杂电路实现内部算术或者逻辑运算,被称为CPU的核心元件

也就是说前三者都是用来存放数据,后者用来进行计算

其中ACC,MQ,和X存放的数据如下表

除法
ACC 被加数,和 被减数,差 乘积高位 乘积低位
MQ ***** ***** 乘数,乘积低位
X 加数 减数 被乘数 除数

控制器的基本组成

控制器的作用是统筹全局,用以发布各种控制信号,其内部主要由三个部件组成:

  • CU(control unit): 控制单元,分析指令,给出信号
  • IR(instruction register): 指令寄存器,存放当前指令
  • PC(program counter): 程序计数器,存放下一条即将执行的指令的地址,具有自动加一功能

计算机的工作过程

了解冯诺依曼体系结构的三大核心模块以后,我们就可以开始进行尝试进行程序执行模拟

假设这里有一段C代码:

int main(){int a = 2,b = 3,c = 1,y = 0;y = a * b + c;return 0;
}

计算机为了执行出y最终的值,编译软件会首先将该程序进行编译为机器语言存储到了主存储器,最后形成了如下数据(实际存储器只会存储有中间只能栏的数据,其他地方只是为了方便理解添加的),这里温馨提醒后面的操作要多看这张表格

根据该表,计算机CPU中的PC(程序计数器program counter)初始位置存放的是地址0

  1. (PC)—>MAR,PC寄存器将自己的地址告诉给MAR,此时(MAR) = 0,然后PC自增1

  2. M(MAR)—>MDR,控制器给MAR发送信号,主存储器中的MAR去存储体中的0地址位置读取数据,然后放到MDR中,
    此时的(MDR) = 0000010000000101

  3. M(MDR)—>IR,MDR将自己的数据交给控制器中的IR存放,此时的(IR) = 0000010000000101

  4. (IR)—>CU, IR将指令的**控制码(000001)**发给CU,CU进行分析,发现是“取数操作”指令

  5. (IR)—>MAR, IR将指令的**地址码(0000000101,十进制为5)**发给主存储器的MAR,此时的(MAR) = 5

  6. (MAR)—>MDR, 主存器中的MAR去存储体中的5地址读取数据,然后放到MDR中,此时的(MDR) = 0000000000000010,即十进制数字2

  7. (MDR)—>X, MDR将值传给X进行存储

(1-3)步骤可以看做在取指令,(4)步骤可以看做在分析指令,(5-7)可以看做在执行指令(即读数据)

(上面的操作过程路径)

到这里算完成了把a的数据放进CPU中的运算器;

然后此时的PC值为1(前面步骤已经自增过):

  1. (PC)—>MAR,PC寄存器将自己的地址告诉给MAR,此时(MAR) = 1,然后PC自增1
  2. M(MAR)—>MDR,控制器给MAR发送信号,主存储器中的MAR去存储体中的1地址位置读取数据,然后放到MDR中,
    此时的(MDR) = 0001000000000110
  3. M(MDR)—>IR,MDR将自己的数据交给控制器中的IR存放,此时的(IR) = 0001000000000110
  4. (IR)—>CU, IR将指令的**控制码(000100)**发给CU,CU进行分析,发现是“乘法操作”指令
  5. (IR)—>MAR, IR将指令的**地址码(0000000110,十进制为6)**发给主存储器的MAR,此时的(MAR) = 6
  6. (MAR)—>MDR, 主存器中的MAR去存储体中的6地址处读取数据,然后放到MDR中,此时的(MDR) = 0000000000000011,即十进制数字的3
  7. (MDR)—>MQ, MDR将值传给MQ进行存储
  8. 然后控制单元给ALU发乘法运算信号,ALU便开始执行乘法运算ab = 23=6,最后将结果放在ACC

(1-3)步骤可以看做在取指令,(4)步骤可以看做在分析指令,(5-7)可以看做在执行指令(即读数据),(8)是CPU在进行计算

(上面过程的操作路径)

现在PC的值为2:

  1. (PC)—>MAR,PC寄存器将自己的地址告诉给MAR,此时(MAR) = 1,然后PC自增1
  2. M(MAR)—>MDR,控制器给MAR发送信号,主存储器中的MAR去存储体中的1地址位置读取数据,然后放到MDR中,
    此时的(MDR) = 0000110000000111
  3. M(MDR)—>IR,MDR将自己的数据交给控制器中的IR存放,此时的(IR) = 0000110000000111
  4. (IR)—>CU, IR将指令的**控制码(000011)**发给CU,CU进行分析,发现是“加法操作”指令
  5. (IR)—>MAR, IR将指令的**地址码(0000000111,十进制为7)**发给主存储器的MAR,此时的(MAR) = 7
  6. (MAR)—>MDR, 主存器中的MAR去存储体中的6地址处读取数据,然后放到MDR中,此时的(MDR) = 0000000000000001,即十进制数字的1
  7. (MDR)—>X, MDR将值传给X进行存储,导致(X) = 1;
  8. (ACC)+(X)—>ACC,控制器给ALU发送加法信号,ALU进行a*b(前两部算过) + c(这个步骤做的事情),然后存储到ACC中,此时ACC=7(2*****3+1)

(上面操作过程路径)

此时的PC=3:

  1. (PC)—>MAR,PC寄存器将自己的地址告诉给MAR,此时(MAR) = 3,然后PC自增1

  2. M(MAR)—>MDR,控制器给MAR发送信号,主存储器中的MAR去存储体中的3地址位置读取数据,然后放到MDR中,
    此时的(MDR) = 0000100000001000

  3. M(MDR)—>IR,MDR将自己的数据交给控制器中的IR存放,此时的(IR) = 0000100000001000

  4. (IR)—>CU, IR将指令的**控制码(000010)**发给CU,CU进行分析,发现是“存储操作”指令

  5. (IR)—>MAR, IR将指令的**地址码(0000001000,十进制为8)**发给主存储器的MAR,此时的(MAR) = 8

  6. (ACC)—>MDR,控制器发送给运算器信号,ACC将数据发送给MDR;

  7. 然后MDR根据控制器发送的存储信号,去地址MAR=8处存数据(ACC) = 7;

最后同理,此时PC=4

继续按照上面的逻辑进行读数据,最后当IR给CU控制码时候,CU发现是停机指令,所以控制器就会发送中断信号,终止程序继续运行;

总结

冯诺依曼体系各硬件工作原理解析相关推荐

  1. 计算机原理学习(1)-- 冯诺依曼体系和CPU工作原理

    前言 对于我们80后来说,最早接触计算机应该是在95年左右,那个时候最流行的一个词语是多媒体. 依旧记得当时在同学家看同学输入几个DOS命令就成功的打开了一个游戏,当时实在是佩服的五体投地.因为对我来 ...

  2. MSN,QQ,IP Messenger,飞鸽传书,的工作原理解析

    MSN,QQ,飞鸽传书,的工作原理解析 http://apps.hi.baidu.com/share/detail/14190263 关键字:MSN,QQ,飞鸽传书,IP Messenger,传文件, ...

  3. 【深度学习】谷歌大脑EfficientNet的工作原理解析

    [深度学习]谷歌大脑EfficientNet的工作原理解析 文章目录 1 知识点准备1.1 卷积后通道数目是怎么变多的1.2 EfficientNet 2 结构2.1 方式2.2 MBConv卷积块2 ...

  4. 揭开SAP Fiori编程模型规范里注解的神秘面纱 - @OData.publish工作原理解析

    Jerry的前一篇文章 揭开SAP Fiori编程模型规范里注解的神秘面纱 - @ObjectModel.readOnly工作原理解析,给大家分享了@ObjectModel.readOnly这个注解对 ...

  5. 2 计算机控制器的组成,组合逻辑控制器组成结构及工作原理解析

    组合逻辑控制器组成结构及工作原理解析 按照控制信号产生的方式不同,控制器分为微程序控制器和组合逻辑控制器两类 微程序控制器是将全部控制信号存贮在控制存储器中. 优点:控制信号的逻辑设计.实现及改动都较 ...

  6. 交换机原理_交换机工作原理解析

    原文连接:http://www.elecfans.com/dianzichangshi/20171204593673.html 交换机原理 数据传输基于OSI七层模型,而交换机就工作于其第二层,即数据 ...

  7. 六轴机械臂控制原理图_六轴工业机器人工作原理解析

    原标题:六轴工业机器人工作原理解析 常见的六轴关节机器人的机械结构如图1所示: 六个伺服电机直接通过谐波减速器.同步带轮等驱动六个关节轴的旋转,注意观察一.二.三.四轴的结构,关节一至关节四的驱动电机 ...

  8. Retrofit2 工作原理解析(一)

    Retrofit2 工作原理解析(一) 概述 Retrofit是square公司开源的一款类型安全的http请求框架,用于Java和Android程序.Retrofit可以说是restful风格的一个 ...

  9. 点亮LED硬件工作原理及原理图查阅

    一步步点亮LED:首先分析LED硬件工作原理及查阅理图得知硬件是怎么接的. 1.LED物理特性介绍 LED本身有2个接线点,一个是LED的正极,一个是LED的负极.LED这个硬件的功能就是点亮或者不亮 ...

最新文章

  1. Asp.net MVC JsonResult 忽略属性
  2. CVPR 2020 | CentripetalNet:目标检测新网络,COCO 48 % AP超现所有Anchor-free网络
  3. 全网最详细 TCP 参数讲解,不用担心没有面试机会
  4. 跨时钟域设置set_false_path的问题
  5. 【深度学习】基于Pytorch的卷积神经网络概念解析和API妙用(二)
  6. 【设计模式】装饰者模式 ( 概念 | 适用场景 | 优缺点 | 与继承对比 | 定义流程 | 运行机制 | 案例分析 )
  7. 剑指offer三:从尾到头打印链表
  8. Python set list dict tuple 区别和相互转换 - Python零基础入门教程
  9. [LOJ 6485]LJJ 学二项式定理
  10. 服务器远程桌面一直正在配置,关于远程桌面一直显示正在配置远程会话
  11. [C++] socket - 2 [UDP通信C/S实例]
  12. ekho--TTS语音引擎
  13. 【笔记】深入理解 Java 虚拟机:类文件结构
  14. 省市区三级联动插件(v-distpicker)
  15. 计算机固态硬盘装系统,固态硬盘如何装系统
  16. kettle 用cmd bat来运行ktr和kjb
  17. react中引入echarts中国地图
  18. 青港风雨之罗雨琦(二)厄运还将继续
  19. 如何备份Linux系统磁盘
  20. LocalDateTime类型得两个日期相差得天数如何计算

热门文章

  1. C++代码中R“(xxxxxxxxxxx)“
  2. 三维点云拼接 标记点拼接 SVD分解法
  3. 关于linux开机出现initramfs的解决
  4. 银河麒麟操作系统离线安装nginx
  5. MySql通过Data恢复数据库数据
  6. 计算机网络信息安全特征,计算机基础知识:网络信息安全的概述及特征
  7. 防止信息泄露的新方法
  8. BeautifulSoup说明
  9. (收藏)【 数字化客户体验】NPS、CSAT和CES——2020年跟踪的客户满意度指标
  10. Oracle个人笔记0711