计算机基础(2)——冯诺依曼体系结构

2024-06-05 04:12

本文主要是介绍计算机基础(2)——冯诺依曼体系结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

💗计算机基础系列文章💗

  • 👉🍀计算机基础(1)——计算机的发展史🍀
  • 👉🍀计算机基础(2)——冯诺依曼体系结构🍀
  • 👉🍀计算机基础(3)——计算机的系统组成🍀
  • 👉🍀计算机基础(4)——操作系统概述🍀
  • 👉🍀计算机基础(5)——进制与进制转换🍀
  • 👉🍀计算机基础(6)——二进制与文本的转换🍀
  • 👉🍀计算机基础(7)——数字图像技术🍀
  • 👉🍀计算机基础(8)——音频数字化(模电与数电)🍀
  • 👉🍀计算机基础(9)——原码、补码、反码🍀
  • 👉🍀计算机基础(10)——编程语言与跨平台🍀

冯诺依曼体系结构

在1946年世界上的第一台电子数字计算机ENIAC诞生后,其仍然存在很多问题,ENIAC由各种门电路组成,这些门电路通过组装出一个固定的电路板,操作这台庞然大物需要通过旋钮、开关和接插线不同的位置来表示所要执行的程序,一旦需要修改程序功能,就要重新组装电路板,因此在ENIAC上设置一段程序往往需要花费大量的时间,如果频繁的设置不同的程序会导致机器在很大一部分时间内都处于程序设计状态而无法运行,实用性能大打折扣。

在ENIAC的总体设计已经完成并进入硬件实现阶段时,来自匈牙利犹太裔美籍计算机科学家约翰·冯·诺依曼(John von Neumann)加入了由莫奇利和埃克特主导的ENIAC团队,一起讨论对ENIAC进行改进,他们要解决的核心问题就是将硬件化程序变为可编程,放在存储器中,随意使用,这就是冯.诺依曼计算机体系的开端,这台新机器名叫电子离散变量自动计算机(Electronic Discrete Variable Automatic Computer),简称EDVAC,由于冯.诺依曼对现代计算机技术的突出贡献,因此冯·诺依曼又被称为“现代计算机之父”。

在冯.诺依曼结构(也被称为普林斯顿结构,因为冯诺依曼当时在普林斯顿大学任教授)概念被提出之前,程序和数据是俩个截然不同的概念,数据放在存储器中,而程序作为控制器的一部分(程序是作为硬件的存在),这样的计算机计算效率低,灵活性较差(每一次编程都需要重新组装电路等)。冯.诺依曼结构中,将程序和数据一样看待,将程序编码为数据,然后与数据一同存放在存储器中,这样计算机就可以调用存储器中的程序来处理数据了。

这意味着,无论什么程序,最终都是会转换为数据的形式存储在存储器中,要执行相应的程序只需要从存储器中依次取出指令、执行,冯.诺依曼结构减少了硬件的连接,这种设计思想导致了硬件和软件的分离,即硬件设计和程序设计可以分开执行。

概括的来讲,冯.诺依曼结构消除了原始计算机体系中,只能依靠硬件控制程序的状况(当时程序作为控制器的一部分,作为硬件存在),它将程序编码存储在存储器中,实现了可编程的计算机功能。
冯.诺依曼计算机体系的主要特点如下:

  1. 构成程序的指令和存储的数据均采用二进制表示
  2. 指令和数据都存放在主(内)存储器中,计算机在工作时按地址访问并执行
  3. 指令由操作码和地址码组成,每一段指令都有其地址
  4. 计算机硬件由运算器、控制器、存储器、输入设备、输出设备这五大部分组成
  5. 机器以运算器为中心,输入/输出设备与存储器之间的数据传送通过运算器完成

冯·诺依曼结构以运算器为中心,输入/输出设备与存储器之前的数据传输都需要经过运算器,如图所示。

在冯诺依曼结构中,控制器与其他4个部件都通过控制线与反馈线相连接,控制器通过控制线发送信号控制4个部件进行工作,这些部件通过反馈线将信息反馈给控制器。控制器将用户通过输入设备输入的信息交由运算器进行运算,存储器存储输入设备输入的数据和要控制器要执行的指令,在控制的控制下也可以将存储器存储的信息交由输出设备进行输出。这样一次信息的运算(交互)在5个部件的协同配合下完成了。
但是这样以运算器为中心的结构中也存在一定的问题,那就是即使不需要运算器参与的输入/输出操作时运算器也会参与进来运算,浪费了运算器性能。
现代计算机一般以存储器为中心,这样输入/输出设备就可以直接与存储器交换数据,提高整体效率,如图所示。

这篇关于计算机基础(2)——冯诺依曼体系结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

python操作redis基础

《python操作redis基础》Redis(RemoteDictionaryServer)是一个开源的、基于内存的键值对(Key-Value)存储系统,它通常用作数据库、缓存和消息代理,这篇文章... 目录1. Redis 简介2. 前提条件3. 安装 python Redis 客户端库4. 连接到 Re

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

Spring Boot集成SLF4j从基础到高级实践(最新推荐)

《SpringBoot集成SLF4j从基础到高级实践(最新推荐)》SLF4j(SimpleLoggingFacadeforJava)是一个日志门面(Facade),不是具体的日志实现,这篇文章主要介... 目录一、日志框架概述与SLF4j简介1.1 为什么需要日志框架1.2 主流日志框架对比1.3 SLF4

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin

MySQL复合查询从基础到多表关联与高级技巧全解析

《MySQL复合查询从基础到多表关联与高级技巧全解析》本文主要讲解了在MySQL中的复合查询,下面是关于本文章所需要数据的建表语句,感兴趣的朋友跟随小编一起看看吧... 目录前言:1.基本查询回顾:1.1.查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J1.2.按照部门

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键