首页 > 其他分享 >了解冯.诺依曼结构

了解冯.诺依曼结构

时间:2022-08-31 15:36:35浏览次数:43  
标签:计算机 存储器 程序 了解 内存 依曼结构 数据 CPU

了解冯.诺依曼结构

1946年,第一台计算机ENIAC诞生,人类进入计算机时代,后来,美籍匈牙利数学家:冯.诺依曼提出了计算机“存储程序”的计算机设计理念,即将计算机指令进行编码后存储在计算机的存储器中,需要的时候可以顺序地执行程序代码,从而控制计算机运行,这就是冯.诺依曼计算机体系的开端。

一.冯.诺依曼结构的灵魂

灵魂就是将程序从硬件实现转换为软件实现(存储程序控制原理)!!!

  1. 早期的计算机是由各种门电路组成的,这些门电路通过组装出一个固定的电路板,来执行一个特定的程序,一旦需要修改程序功能,就要重新组装电路板,所以早期的计算机程序是硬件化的

  2. 冯.诺依曼结构的出现将最初的硬件化程序变为可编程、可存储编码,放在存储器中,随意使用

早期的计算机设计中,程序和数据是俩个截然不同的概念,数据放在存储器中,而程序作为控制器的一部分,这样的计算机计算效率低,灵活性较差。

冯.诺依曼结构中,将程序和数据一样看待,将程序编码为数据,然后与数据一同存放在存储器中,这样计算机就可以调用存储器中的程序来处理数据了。意味着,无论什么程序,最终都是会转换为数据的形式存储在存储器中,要执行相应的程序只需要从存储器中依次取出指令、执行,冯.诺依曼结构的灵魂所在正是这里:减少了硬件的连接,这种设计思想导致了硬件和软件的分离,即硬件设计和程序设计可以分开执行!!!这就催生了程序员这个职业的诞生!!!

计算机的基本工作原理就是:存储程序控制原理!

二.冯.诺依曼结构的核心设计思想

核心设计思想主要体现在如下三个方面:

  • 程序、数据的最终形态都是二进制编码,程序和数据都是以二进制方式存储在存储器中的,二进制编码也是计算机能够所识别和执行的编码。(可执行二进制文件:.bin文件)
  • 程序、数据和指令序列,都是事先存在主(内)存储器中,以便于计算机在工作时能够高速地从存储器中提取指令并加以分析和执行。
  • 确定了计算机的五个基本组成部分:运算器、控制器、存储器、输入设备、输出设备

三.冯诺依曼结构的五个主要组成部分

冯.诺依曼确定了”计算机结构“中的5大部件:

  • 运算器
  • 控制器
  • 存储器
  • 输入设备
  • 输出设备

运算器和控制器单元集成在CPU中实现,存储器的容量不断扩大、输入输出设备不断更新,这些部件构成了当代计算机硬件系统的基本组成。

ps: 我们手机里只有 SD 卡(Secure Digital Memory Card)这样类似硬盘功能的存储卡插槽,并没有内存插槽、CPU 插槽这些东西。因为手机尺寸的原因,手机制造商们选择把 CPU、内存、网络通信,乃至摄像头芯片,都封装到一个芯片,然后再嵌入到手机主板上。这种方式叫SoC,也就是 System on a Chip(系统芯片)。

1.运算器

首先计算机要有运算处理数据的能力,所以需要一个处理单元来完成各种算数运算和逻辑运算,这就是算术逻辑单元(Arithmetic Logic Unit,ALU)。ALU的主要功能就是在控制信号的作用下,完成加、减、乘、除等算术运算以及与、或、非、异或等逻辑运算以及移位、补位等运算。

运算器的主要部件就是ALU,运算器的处理对象是数据,所以数据的长度以及数据的表示方法,对运算器的影响很大。大多数通用计算机是以16、32、64位数据作为运算器一次处理数据的长度。

运算器与其他部分的关系

  1. 计算机运算时,运算器的操作对象和操作种类由控制器决定。

  2. 运算器操作的数据从内存中读取,处理的结果再写入内存(或者暂时存放在内部寄存器中)

  3. 运算器对内存数据的读写是由控制器来进行的。

2.控制器

控制器又称为控制单元(Control Unit),是计算机的神经中枢和指挥中心,只有在控制器的控制下,整个计算机才能够有条不紊地工作、自动执行程序。

控制器的工作流程

  1. 从内存中取指令、翻译指令、分析指令,

  2. 然后根据指令的内存向有关部件发送控制命令

  3. 控制相关部件执行指令所包含的操作。

控制器和运算器共同组成中央处理器(Central Processing Unit),CPU是一块超大规模集成电路,是计算机运算核心和控制核心,CPU的主要功能是解释计算机指令以及处理数据。

3.存储器

存储器的主要功能是存储程序和各种数据,并且能够在计算机运行过程高速、自动地完成程序或者数据的存储,存储器是有记忆的设备。 计算机中的程序和数据都要转换为二进制代码才可以存储和操作。

存储器可以分为内部存储器(内存)和外部存储器

Ⅰ.内部存储器

内部存储器称为内存或者主存,是用来存放欲执行的程序和数据。

在计算机内部,程序和数据都是以二进制代码的形式存储的,它们均以字节为单位(8位)存储在存储器中,一个字节占用一个存储单元,并且每个存储单元都有唯一的地址号。

这里以字节(8位)为存储单元,就与上面运算器的操作数据的大小联系起来了,16、32、64都是8的倍数

CPU可以直接使用指令对内部存储器按照地址进行读写两种操作,

  • 读:将内存中某个存储单元的内容读出,送入CPU的某个寄存器中

  • 写:在控制器的控制下,将CPU中某寄存器内容传到某个存储单元中。

要注意,内存中的数据和地址码都是二进制数,但是两者是不同的,

  1. 一个地址可以指向一个存储单元,地址是存储单元的位置

  2. 数据是存储单元的内容,数据可以是操作码、可以是CPU要处理的数据、也可以是数据的地址

  3. 地址码的长度由内存单元的个数确定。

内存的存取速度会直接影响计算机的运算速度,由于CPU是高速器件,但是CPU的速度是受制于内存的存取速度的,所以为了解决CPU和内存速度不匹配的问题,在CPU和内存之间设置了一种高速缓冲存储器Cache

Cache是计算机中的一个高速小容量存储器,其中存放的是CPU近期要执行的指令和数据,其存取速度可以和CPU的速度匹配,一般采用静态RAM充当Cache。

内存按工作方式的不同又可以分为俩部分:

  1. RAM:随机存储器,可以被CPU随机读取,一般存放CPU将要执行的程序、数据,断电丢失数据

  2. ROM:只读存储器,只能被CPU读,不能轻易被CPU写,用来存放永久性的程序和数据,比如:系统引导程序、监控程序等。具有掉电非易失性。

Ⅱ.外部存储器

外部存储器主要来存放”暂时“用不着的程序和数据,可以和内存交换数据。

一般是磁盘、光盘、U盘、硬盘等。

4.输入输出设备

实际上我们操作计算机都是与输入输出设备在打交道。

鼠标键盘是输入设备、显示器是输出设备;

手机触摸屏即时输入设备又是输出设备;

服务器中网卡既是输入设备又是输出设备;

所有的计算机程序都可以抽象为输入设备读取信息,通过CPU来执行存储在存储器中的程序,结果通过输出设备反馈给用户。

标签:计算机,存储器,程序,了解,内存,依曼结构,数据,CPU
From: https://www.cnblogs.com/gcbeen/p/16643265.html

相关文章

  • 了解拉普拉斯矩阵的工作原理第 2 部分
    了解拉普拉斯矩阵的工作原理第2部分Photoby马里奥拉·格罗贝尔斯卡on不飞溅与拉普拉斯矩阵相关的格和的渐近评估(arXiv)作者:阿尔祖博伊萨尔,法提赫·埃......
  • 了解细胞神经网络
    了解细胞神经网络Photoby娜斯佳·杜利耶on不飞溅用于生成三维几何的遗传细胞神经网络(arXiv)作者:雨果·马泰抽象的:有许多方法可以通过程序生成有趣的3D......
  • 阶段一: 深入了解view
    时间2022.08.31学习view,以及view在项目中的使用;总结加复盘!!view与viewGroupview滑动: (1)onlayout() |  offsetLeftAndRight() offsetTopAndBottom......
  • 基础知识——在 5 分钟内了解 Javascript 基础知识。
    基础知识——在5分钟内了解Javascript基础知识。对新开发人员的快速且有价值的Javascript审查。如果你和我一样,你喜欢编码,但在学习新事物几天后很难记住基本概念。......
  • 从他人的项目和文章去了解鉴权--前端路由
    拜读了大佬的鉴权思路和源码之后对比自己的项目总结的思考首先在登录方面大佬代码相对的严谨this.$store.dispatch('LoginByUsername',this.loginForm).then(()=>{......
  • 除了Guava,Java开发者还值得了解的5个谷歌类库
    Guava是谷歌基于Java1.6的一个类库集合的扩展项目,包含了许多谷歌核心的Java常用库。除开Guava,还有一些谷歌的常用Java类库也值得我们关注,本文列出了其中的五个类库......
  • 了解 Ricci 孤子的行为方式(理论物理 + 偏微分方程)
    了解Ricci孤子的行为方式(理论物理+偏微分方程)Photoby西拉斯·拜施on不飞溅关于梯度Ricci孤子的谐波和双谐波图(arXiv)作者:沃尔克品牌抽象的:我们从......
  • 了解各向异性 Sobolev 空间的使用
    了解各向异性Sobolev空间的使用Photoby李酒on不飞溅在各向异性的Sobolev空间上(arXiv)作者:阮怀明,马可·斯夸西纳抽象的:我们研究了各向异性Sobol......
  • 你对 JavaScript 中的变量了解多少?
    你知道多少JavaScript中的变量?昨天,当我搞砸了变量时,我正在研究我的开尔文天气项目。该项目需要声明许多变量以将温度程度从一个更改为另一个。因此对于像我这样的Roo......
  • 了解RTT 和RTO 对于TCP 重传的影响
    前言我们已经在很多地方了解TCP的功能和常用字段。但是TCP传输发生的异常情况总是让我们很棘手,不知改如何处理。陷入迷茫之中。本文章只针对RTT和RTO做了解。描......