计算机基本硬件的内部结构

1.早期冯·诺依曼机结构

世界上第一台计算机ENIAC是使用手动接线来控制计算,十分麻烦。

冯·诺依曼提出“存储程序”的概念,是指将指令以二进制代码的形式事先输入计算机的主存储器(内存),然后按照其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。

于是第一台采用冯·诺依曼结构的计算机EDVAC诞生了,接下来让我们看看具体的冯·诺依曼计算机结构图(实线为数据线、虚线为控制线或反馈线):

在这里插入图片描述

输入设备将信息转化为机器能识别的形式,然后通过运算器的中转存入存储器,需要用到数据和程序时,就要经过运算器中转到输出设备,得出计算结果,而整个过程都是由控制器使用电信号来进行指挥的,另外这个控制器也会负责解析存储器里的存储指令。

另外,对于计算机系统来说,软件和硬件在逻辑上是等效的,例如:可以专门制作出一个乘法硬件(硬件),也可以利用现有的加法硬件实现乘法(软件)

冯·诺依曼计算机的特点:

  1. 计算机由五大部件组成

  2. 指令和数据化以同等地位存储在存储器里,可按地址寻址

  3. 指令和数据使用二进制表示。其中指令组成:操作码(指明指令的操作)、地址码(指明操作数据的内存地址)有的计算机指令采用多个地址码

  4. 整个体系以运算器为中心,以运算器为中转站,这样会导致数据计算效率降低(比如:输入设备本来是可以直接交给存储器的,但是却交给了运算器)

2.现代计算机体系结构

现代计算机有几个很不一样的特点

  1. 以存储器为中心

  2. 通常控制器和运算器被集成为一个CPU

在这里插入图片描述

因此我们可以改写一下结构,让这个体系变得更加模块化:
在这里插入图片描述

3.计算机硬件内部结构(现代)

3.1.主存储器

主存储器里用于存放数据的东西叫存储体

在这里插入图片描述

  1. 存储体内部可以分为一个一个“存储单光”,并且根据地址总线进行编址

  2. 每一个存储单元存储的二进制数据组合我们称为“存储字(word)”

  3. 存储单元存放二进制的最大长度称为“字长”,一般是8的整数倍。

  4. 用于存储二进制的电子元件简称“存储元”,利用电容的原理,每个存储元可存1bit,而存储单元由若干个存储元构成

主存储器内部还有两个寄存器

  1. 分别是MAR(存储地址寄存器)、MDR(存储数据寄存器)

  2. 主存储器里的控制逻辑会根据MAR存储的地址查找主存储器里的数据,然后取出存放到MDR中,而CPU就可以从这里拿走数据。

  3. 同理,CPU写入主存储器的方式也和读取类似:CPU想要写入的对应地址放在MAR里,想要写入的数据放在MDR里,最后通过控制总线告诉主存储器本次为写操作。

MAR是里有指向存储单元的地址,因此MAR反映存储单元的个数

MDR是有由要存储到MAR指向地址的数据内容,反映存储单元的存储字长

3.2.运算器

运算器是用于实现算术运算和逻辑运算的,内部有:

  1. ACC累加器:实际是一个寄存器,用于存放操作数或运算结果

  2. MQ乘商寄存器:在乘、除运算的时候,用于存放操作数或运算结果

  3. X通用寄存器:通用的操作数寄存器,用于存放操作数

  4. ALU算术逻辑单元:通过内部复杂的电路实现算术运算、逻辑运算,是运算器的核心部件,制作成本也是最高的。

ACC被加数、和被减数、差乘积高位被除数、余数
MQ乘数、乘积低位
X加数减数被乘数除数

在这里插入图片描述

乘积的高位表示了乘法结果的较高位数部分,而乘积的低位表示了较低位数部分。

3.3.控制器

控制器内部有:

  1. CU控制单元(Control Unit):分析指令,给出控制信号,内部有很复杂的电路,是控制器内最核心的部件

  2. IR指令寄存器(Instruction Register):本质是一个寄存器,存放当前执行的指令

  3. PC程序计数器(Program Counter):本质是一个寄存器,存放下一条指令地址,有自动+1的功能

在这里插入图片描述

在控制器内部的工作逻辑是:PC取得指令->IR分析指令->CU执行指令,前面两个过程为“取指阶段”,后面一个过程为“执行阶段”

4.计算机硬件协调流程(现代)

下面是高级语言C语言的一段代码:

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

接下来让我们看看这段代码在计算机硬件中运作流程:

在这里插入图片描述

4.1.执行指令0

  1. (PC)=0,(PC)++CPU内部的PC存储的是下一条指令的地址,因此PC=0,即:PC存储了第一条指令的代码地址,在执行后续的步骤后PC自动+1(PC是程序计时器,可以存放下一条指令地址,有自动+1的功能)

  2. (PC)->MAR,(MAR)=0,(MAR)->存储体->MDR,(MDR)=0000 01|00 0000 0101PC将指令地址交给MARMAR通过这个指令地址在存储体内部查找指令数据,存储到MDR

  3. (MDR)->IR:从MDR得到的指令数据存放到IR中(IR负责存放当前执行的指令)

  4. (IR)->CU,(IR)->MAR,(MAR)->存储体->MDR,(MDR)=0000 0000 0000 0010=2:而在当前要执行的指令中,前六位0000 01操作码会被送到CU分析,得知这是“取数dACC”的命令,后10位代表这个数的地址在主存储器存储体的5处。因此IR把后续的10位交给MARMAR再去存储体内找主存地址5处的a的数据0000 0000 0000 0010=2存入MDR中(CU控制单元负责分析指令,给出控制信号)

  5. (MDR)->ACC:因此0000 0000 0000 0010=2被拷贝到IR内部,然后CU控制MDR送到ACC

4.2.执行指令1

根据“4.1.执行指令0”中的步骤1,OP(PC)=1,(ACC)=2,然后就会发生:

  1. (PC)=1,(PC)->MAR,(MAR)=1,(MAR)->存储体->MDR,(MDR)=0000 01|00 0000 0101,(PC)++PC内部存储了当前要第二条指令的地址,在执行了后续的步骤了+1,然后MAR得到的指令地址是“1”,传递给MAR后,MAR在存储体中找到指令0000 01|00 0000 0101

  2. (MDR)->IR,(IR)->CU,(IR)->MAR,(MAR)->存储体->MDR,(MDR)=0000 0000 0000 0011=3:接下来MDR将内部的指令传给IRIR交给CU分析后得知前六位0001 00为“乘法操作,将ab并且存储到ACC中” ,后10位00 0000 0101为操作数地址,于是这个地址就被IP传给MAR在存储体中找到并且存储给MDR

  3. (MDR)->MQ,(MQ)=0000 0000 0000 0011=3:接下来CU控制MDR内部的数据拷贝到MQMQ乘商寄存器:在乘、除运算的时候,用于存放操作数或运算结果,这里是存储了乘数b

  4. (ACC)->X,(X)=0000 0000 0000 0010=2,ALU->(X)*(MQ)->ACC,(ACC)=6CU控制ACC里的值拷贝到通用寄存器X里,然后控制ALU把通用寄存器X里的值和乘商寄存器MQ里的值相乘,然后存储到ACC中(如果乘积太大,MQ也会辅助存储,存储的是乘积低位,ACC那边则是乘积高位)

4.3.执行指令2

根据“4.2.执行指令1”中的步骤1,OP(PC)=2,(ACC)=6,然后就会发生:

  1. (PC)->MAR,(MAR)=2,(MAR)->存储体->MDR,(MDR)=0000 11|0000 0000 0000 0111,(PC)++PC将指令地址拷贝给MARMAR在存储体内查找到指令,拷贝给MDR,然后PC内部的计时器+1,存储了指向下一条指令的地址

  2. (MDR)->IR,(IR)->CU,(IR)->MAR,(MAR)=0000 0000 0000 0111=7,(MAR)->存储体->MDR,MDR=0000 0000 0000 0001=1:MDR内部的指令值拷贝给IRIR传递给CU分析指令,得知0000 11为“加法指令ab+c,并且最终存储在ACC中”,于是CU控制IR剩下的0000 0000 0000 0111,传递给MARMAR在存储体内找到指令数据0000 0000 0000 0001,传递给MDR

  3. (MDR)->X,(x)=0000 0000 0000 0001=1,ALU->(ACC)+(X)->ACC:然后MDR将内部数据拷贝到通用寄存器X内,接下来控制单元CUALU发生信号,让XACC里的值相加,最后存储到ACC内部

4.4.执行指令3

根据“4.3.执行指令3”中的步骤1,OP(PC)=3,(ACC)=7,然后就会发生:

  1. (PC)->MAR,(MAR)=3,(MAR)->存储体->MDR,(MDR)=0000 10|0000 0000 0000 1000,(PC)++

  2. (MDR)->IR,(IR)->CU,(IR)->MAR,(MAR)=0000 0000 0000 1000=8,(MAR)->存储体->MDR,MDR=0000 0000 0000 0000=0

  3. (ACC)=7,(ACC)->MDR,(MDR)=7,(MAR)=0000 0000 0000 1000=8:这里就有个地方需要注意,CU控制了ACC寄存器的值拷贝到MDR,此时MAR也有y变量的主存地址,此时CU再控制MARMDRab+c存入y

4.5.执行指令4

根据“4.4.执行指令4”中的步骤1,OP(PC)=4,然后像上面一样类似的流程,取得000110停机指令,接下来就会执行操作系统的相关指令了,这后面的我们不再讨论。

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

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

相关文章

c++ ,vs2019, cpp20规范之 forward_list 源码分析

通过阅读源码可知,该单向链表不像list双向链表那样有专门的前导节点。即list._Mypair._Myval2._head._next才指向第一个有效数据节点。而 forward_list ._Mypair._Myval2._head 已经指向了有效数据节点。原因就在于复杂巧妙的类型转换。如下图的构造函数里&#xff…

Spring-ApplictionContext

Spring Spring是整个Java体系最核心的框架,没有之一。 核心类图结构 ApplicationContext ApplicationEventPublisher:提供了一种机制,用于通知应用程序中感兴趣的部分有关其执行过程中发生的特定事件。ListableBeanFactory:是S…

python结合tesseract-ocr识别汉字的训练库过程

一、安装python 例如,安装路径为:C:\rtkapp\python-3.8.0 二、安装opencv 三、安装tesseract-ocr 安装完成后,在系统环境变量path中,添加安装路径C:\rtkapp\Tesseract-OCR 四、打开python安装pytesseract 五、安装java运行环境…

测试开源C#人脸识别模块ViewFaceCore(5:质量检测和眼睛状态检测)

ViewFaceCore模块中的FaceQuality支持预测人脸质量,最初以为是预测人体体重,实际测试过程中才发现是评估人脸图片质量,主要调用Detect函数执行图片质量检测操作,其函数原型如下所示: //// 摘要:// 人脸质量评估///…

webstorm配置less转译

Program中路径如果识别不到 项目文件\node_modules.bin\lessc

springCloud Eureka注册中心配置详解

1、创建一个springBoot项目 2、在springBoot项目中添加SpringCloud依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2021.0.3</version><type>…

【MySQL数据库备份】

目录 一、概述 二、数据备份的重要性 1. 数据保护 2. 灾难恢复 3. 数据完整性 4. 合规性要求 三、造成数据丢失的原因 1. 硬件故障 2. 人为错误 3. 黑客攻击 4. 自然灾害 5. 软件故障 四、备份类型 1.物理与逻辑角度 1.1 概念 1.2 物理备份 1.2.1 冷备份 1.2…

Flutter:滑动面板

前言 无意中发现了这个库&#xff0c;发现现在很多app中都有类似的功能。以手机b站为例&#xff0c;当你在看视频时&#xff0c;点击评论&#xff0c;视频会向上偏移&#xff0c;下方划出评论界面。 sliding_up_panel SlidingUpPanel是一个Flutter插件&#xff0c;用于创建滑…

Stable Diffusion 硬核生存指南:WebUI 中的 VAE

本篇文章聊聊 Stable Diffusion 生态中呼声最高、也是最复杂的开源模型管理图形界面 “stable-diffusion-webui” 中和 VAE 相关的事情。 写在前面 Stable Diffusion 生态中有一个很重要的项目&#xff0c;它对于 SD 生态繁荣做出的贡献可以说居功至伟&#xff0c;自去年八月…

13. Mybatis-Plus

目录 1. MyBatis-Plus 简介 2. 新建项目 3. 添加依赖 4. 配置数据库 5. 编码 1. MyBatis-Plus 简介 通过官网&#xff1a;MyBatis-Plus MyBatis-Plus (opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window)的增强工具&#xff0c;在 MyB…

W2NER详解

论文&#xff1a;https://arxiv.org/pdf/2112.10070.pdf 代码&#xff1a;https://github.com/ljynlp/W2NER 文章目录 W2NER介绍模型架构解码 源码介绍数据输入格式模型代码 参考资料 W2NER 介绍 W2NER模型&#xff0c;将NER任务转化预测word-word&#xff08;备注&#xff…

微信小程序生成带参数的二维码base64转png显示

getQRCode() {var that this;wx.request({url: http://localhost:8080/getQRCode?ID 13,header: {content-type: application/json},method: POST,responseType: arraybuffer,//将原本按文本解析修改为arraybuffersuccess(res) {that.setData({getQRCode: wx.arrayBufferToB…

string【2】模拟实现string类

string模拟实现 引言&#xff08;实现概述&#xff09;string类方法实现默认成员函数构造函数拷贝构造赋值运算符重载析构函数 迭代器beginend 容量size、capacity、emptyreserveresize 访问元素operator[] 修改insert插入字符插入字符串 appendpush_backoperatoreraseclearswa…

uni-app在小米手机上运行【步骤细节】

注意细节重点&#xff1a; 1.手机使用数据线与电脑连接&#xff0c;手机连接模式必须是传输文件模式 2.手机必须打开开发者模式 3.打开开发者模式后&#xff0c;仔细浏览并调整USB调试权限&#xff0c;重点打开USB是否允许安装按钮&#xff01;&#xff01;&#xff01; 操作步…

RWEQ模型参量提取

土壤风蚀是一个全球性的环境问题。中国是世界上受土壤风蚀危害最严重的国家之一&#xff0c;土壤风蚀是中国干旱、半干旱及部分湿润地区土地荒漠化的首要过程。中国风蚀荒漠化面积达160.74104km2&#xff0c;占国土总面积的16.7%&#xff0c;严重影响这些地区的资源开发和社会经…

windows环境下,安装elasticsearch

目录 前言准备安装 jdk 安装nodejsElasticSearch下载ElasticSearch-head 下载 安装ElasticSearch安装ElasticSearch-head插件设置用户名密码访问ElasticSearch 默认用户名和密码参考 前言 win10elasticsearch 8.9.0 准备 安装 jdk ElasticSearch 是基于lucence开发的&#…

MATLAB | 如何绘制这样的描边散点图?

part.-1 前前言 最近略忙可能更新的内容会比较简单&#xff0c;见谅哇&#xff0c;今日更新内容&#xff1a; part.0 前言 看到gzhBYtools科研笔记(推荐大家可以去瞅瞅&#xff0c;有很多有意思的图形的R语言复现&#xff01;&#xff01;)做了这样一张图&#xff1a; 感觉很…

docker简单web管理docker.io/uifd/ui-for-docker

要先pull这个镜像docker.io/uifd/ui-for-docker 这个软件默认只能使用9000端口&#xff0c;别的不行&#xff0c;因为作者在镜像制作时已加入这一层 刚下下来镜像可以通过docker history docker.io/uifd/ui-for-docker 查看到这个端口已被 设置 如果在没有设置br0网关时&…

视频标注是什么?和图像数据标注的区别?

视频数据标注是对视频剪辑进行标注的过程。进行标注后的视频数据将作为训练数据集用于训练深度学习和机器学习模型。这些预先训练的神经网络之后会被用于计算机视觉领域。 自动化视频标注对训练AI模型有哪些优势 与图像数据标注类似&#xff0c;视频标注是教计算机识别对象…

【解惑笔记】树莓派+OpenCV+YOLOv5目标检测(Pytorch框架)

【学习资料】 子豪兄的零基础树莓派教程https://github.com/TommyZihao/ZihaoTutorialOfRaspberryPi/blob/master/%E7%AC%AC2%E8%AE%B2%EF%BC%9A%E6%A0%91%E8%8E%93%E6%B4%BE%E6%96%B0%E6%89%8B%E6%97%A0%E7%97%9B%E5%BC%80%E6%9C%BA%E6%8C%87%E5%8D%97.md#%E7%83%A7%E5%BD%95…