冯诺依曼体系各硬件工作原理解析

news2024/9/22 17:36:01

文章目录

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

计算机结构体系来源

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发现是停机指令,所以控制器就会发送中断信号,终止程序继续运行;

总结

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/67756.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NNDL实验 优化算法3D轨迹 鱼书例题3D版

这张图在网络上很流行。代码源自: 深度学习入门:基于Python的理论与实现 (ituring.com.cn) 2D版讲解:NNDL 作业11:优化算法比较 调整学习率等超参数,观察动画,可以加深对各种算法的理解。 配合实验的模型…

南方农业杂志南方农业杂志社南方农业编辑部2022年第19期目录

遗传育种 峨眉黑鸡遗传多样性及群体遗传结构分析 袁霞;刘方庆;文陇英;徐婧;廖光祥;王强胜;王湘; 1-7 栽培与植保《南方农业》投稿:cn7kantougao163.com 井窖式移栽烤烟前期地上部和地下部生长规律拟合分析 温明霞;郭发文;冯小芽;王军;刘京;彭剑涛;廉云; 8-1…

从进程的角度来看JVM的内存分布

JVM(下面JVM都是指代HotSpot)本质上是运行在操作系统上的一个C程序,本文会从这个角度来构建对于JVM内存的完整视角,以HotSpot这个JVM实现运行在Linux操作系统上进行分析,在分析的过程中会解释清楚一些不太好理解的概念,诸如堆外内…

双十二哪些数码好物值得入手?盘点双十二最值得入手的数码好物

双十二快到了,相信很多人像我一样想趁着年末入手数码产品,但又不知道什么值得入手。最近也听到很多人问,针对这个问题,我来给大家盘点双十二最值得入手的数码好物,有需要的可以当个参考。 一、南卡小音舱蓝牙耳机 推…

怎样批量查询网站是否被搜狗收录?批量查询网站搜狗收录的详细教程

怎样批量查询网站是否被搜狗收录?批量查询网站搜狗收录的详细教程 批量查询网站搜狗收录的的具体操作: 第一步、打开站长工具 第二步、添加需要查询的网站域名 第三步、勾选要查询的功能(勾选搜狗是否收录和搜狗总收录) 第四步、提交查询 第…

手把手教你在Ubuntu22.04 上安装 Vivado、HLS、Vitis 2022.2版本

文章目录1 Vivado22.2 和 HLS 22.2 安装下载安装包执行.bin文件开始安装命令配置启动问题2 Vitis 22.2 安装3 卸载Xilinx我是 雪天鱼,一名FPGA爱好者,研究方向是FPGA架构探索和数字IC设计。欢迎来关注我的B站账号,我将定期更新IC设计教程。 …

手撕红黑树 | 变色+旋转你真的明白了吗?【超用心超详细图文解释 | 一篇学会Red_Black_Tree】

说在前面 我们也很久没有更新数据结构系列了,半年前博主重新深入学习了红黑树这个数据结构,一直想更新呈现给大家,最近也一直没有时间,今天红黑树它来了! 博主为了这篇博客,做了很多准备,试了…

怎么修复老照片?给你推荐这几个修复方法

相信大家的家里都有老照片吧,那在你们翻看这些老照片的时候,有没有发现有些老照片变得有些破旧、泛黄、模糊等情况呢?看到这些情况,大家是不是会很心疼呢?因为这些老照片都充满了各种各样的回忆,根本拍不出…

Docker查看容器的初始启动命令参数的常见几种方式

1.在使用docker容器的过程中,经常需要查看容器启动的命令来看当时启动容器时候所用的参数,如果时间不是很久或者通过history命令就可以很容易的想起或查看到命令,一旦时间过了很久或history被清空那么就无法获取命令,如下所示dock…

cengbox2靶机(hydra爆破、公私钥免密登录)

环境准备 靶机链接:百度网盘 请输入提取码 提取码:zdpr 虚拟机网络链接模式:桥接模式 攻击机系统:kali linux 2021.1 信息收集 1.arp-scan -l探测目标靶机ip 2.nmap -p- -A -T4 192.168.1.107 探测目标靶机开放端口和服务 …

Docker基本使用

1、centos7安装docker engine 参考文档:https://docs.docker.com/engine/install/centos/ (1)卸载之前的docker sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \…

Spring——AOP

Spring中的可插拔组件技术 Spring AOP Spring AOP——Aspect Oriented Programming 面向切面编程AOP 的做法是将通用的、与业务无关的功能抽象封装为切面层切面可配置在目标方法执行前后,做到即插即用 不修改源码对程序功能进行拓展 AoP的关键概念 Spring AoP 与A…

栈与队列3:有效的括号

主要是我自己刷题的一些记录过程。如果有错可以指出哦,大家一起进步。 转载代码随想录 原文链接: 代码随想录 leetcode链接:20. 有效的括号 题目: 给定一个只包括 ‘(’,‘)’,‘{’,‘}’&am…

怎样才能批量查询网站的谷歌PR权重?把手教你批量查询网站谷歌PR权重值

谷歌PR是Google排名运算法则(排名公式)的一部分,用来标识网页的等级/重要性。在计算网站排名时,PageRank会将网站的外部链接数考虑进去。一个网站的外部链接数越多其PR值就越高;外部链接站点的级别越高,网站…

docker安装nginx代理nacos2.1.2版本集群

目录 安装docker最新版本 创建一个docker network,使之固定docker局域ip docker安装mysql主从 配置挂载的my.cnf配置文件 进入mysql主数据库容器命令 登录主数据库创建用于从数据连接主数据的账号密码 输入show master status;查看master数据库状态 在从数据库…

基于训练和推理场景下的MindStudio高精度对比

摘要:MindStudio提供精度比对功能,支持Vector比对能力。本文分享自华为云社区《【MindStudio训练营第一季】MindStudio 高精度对比随笔》,作者:Tianyi_Li。 训练场景下,迁移原始网络 (如TensorFlow、PyTorch) &#x…

[附源码]Python计算机毕业设计SSM家纺商品展示平台(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

连锁门店进销存软件的用途

门店式经营对于很多经营有道的老板来说是第一步,在规模扩张中,生意越做越大。这时要想拓宽销路,让收益更上一层楼,连锁、分店确实是一种行之有效的方法。 多门店管理经营存在的长久性难点是决策性工作量激增,管理方面…

[附源码]计算机毕业设计勤工俭学管理小程序Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Multimodal Token Fusion for Vision Transformers

水平太浅,理解不到位。谨慎观看。 多模态token融合,我是语义分割,只看RGB和Depth模态。 1:作者为了解决transformer多输入的问题,对基于transformer视觉任务进行剪枝,为了有效的融合多模态,toke…