热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

冯诺依曼结构和哈佛结构02

冯.诺伊曼结构1945年,冯.诺伊曼首先提出了“存储程序”的概念和二进制原理,后来,人们把利用这种概念和原理设计的电子计算机系统统称为“冯

冯.诺伊曼结构
    1945年,冯.诺伊曼首先提出了“存储程序”的概念和二进制原理,后来,人们把利用这种概念和原理设计的电子计算机系统统称为“冯.诺伊曼型结构”计算机。冯.诺伊曼结构的处理器使用同一个存储器,经由同一个总线传输,如下图所示:

图 冯.诺伊曼结构
    冯.诺伊曼结构处理器具有以下几个特点:

必须有一个存储器;

必须有一个控制器;

必须有一个运算器,用于完成算术运算和逻辑运算;

必须有输入和输出设备,用于进行人机通信。

    冯.诺伊曼的主要贡献就是提出并实现了“存储程序”的概念。由于指令和数据都是二进制码,指令和操作数的地址又密切相关,因此,当初选择这种结构是自然的。但是,这种指令和数据共享同一总线的结构,使得信息流的传输成为限制计算机性能的瓶颈,影响了数据处理速度的提高。   
    在典型情况下,完成一条指令需要3个步骤,即:取指令、指令译码和执行指令。从指令流的定时关系也可看出冯.诺伊曼结构与哈佛结构处理方式的差别。举一个最简单的对存储器进行读写操作的指令,如下图所示,指令1至指令3均为存、取数指令,对冯.诺伊曼结构处理器,由于取指令和存取数据要从同一个存储空间存取,经由同一总线传输,因而它们无法重叠执行,只有一个完成后再进行下一个。

图 冯.诺曼结构处理器指令流的定时关系示意图

哈佛结构
    数字信号处理一般需要较大的运算量和较高的运算速度,为了提高数据吞吐量,在数字信号处理器中大多采用哈佛结构,如下图所示

图 哈佛结构
与冯.诺伊曼结构处理器比较,哈佛结构处理器有两个明显的特点:

使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;

使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。

    后来,又提出了改进的哈佛结构,如下图所示

图   改进型哈佛结构
其结构特点为:

使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存,以便实现并行处理;

具有一条独立的地址总线和一条独立的数据总线,利用公用地址总线访问两个存储模块(程序存储模块和数据存储模块),公用数据总线则被用来完成程序存储模块或数据存储模块与CPU之间的数据传输;

两条总线由程序存储器和数据存储器分时共用。


    在典型情况下,完成一条指令需要3个步骤,即:取指令、指令译码和执行指令。从指令流的定时关系也可看出冯.诺伊曼结构与哈佛结构处理方式的差别。举一个最简单的对存储器进行读写操作的指令,如下图所示,指令1至指令3均为存、取数指令,对冯.诺伊曼结构处理器,由于取指令和存取数据要从同一个存储空间存取,经由同一总线传输,因而它们无法重叠执行,只有一个完成后再进行下一个。

图 冯.诺曼结构处理器指令流的定时关系示意图
    如果采用哈佛结构处理以上同样的3条存取数指令,如下图所示,由于取指令和存取数据分别经由不同的存储空间和不同的总线,使得各条指令可以重叠执行,这样,也就克服了数据流传输的瓶颈,提高了运算速度。
    哈佛结构强调了总的系统速度以及通讯和处理器配置方面的灵活性。

图 哈佛结构处理器指令流的定时关系示意图
------------------------------------------------------------------------------

    总得来说,哈佛机构的高性能体现在在单片机、DSP芯片平台上运行的程序种类和花样较少,因为各个电子娱乐产品中的软件升级比较少,应用程序可以用汇编作为内核,最高效率的利用流水线技术,获得最高的效率。

     冯诺依曼结构主要是基于电脑购买者对电脑的使用途径不同----各种娱乐型用户、各种专业开发用户等,且安装的软件的种类繁多,升级频繁,多种软件同时运行时处理的优先级比较模糊,因特尔芯片不具备彻底智能分配各程序优先级和流水线的机制,机械的分配优先和流水线反而容易使用户不便。

总结
      冯氏结构简单、易实现、成本低,但效率偏低;哈佛结构效率高但复杂,对外围设备的连接与处理要求高,十分不适合外围存储器的扩展。现在的处理器,依托CACHE的存在,已经很好的将二者统一起来了。现在的处理器虽然外部总线上看是诺依曼结构的,但是由于内部CACHE的存在,因此实际上内部来看已经类似改进型哈佛结构的了。而单片机,由于内部集成了所需的存储器,所以采用哈佛结构也未尝不可



推荐阅读
  • 本文提供了一套实用的方法论,旨在帮助开发者构建能够应对高并发请求且易于扩展的Web服务。内容涵盖了服务器架构、数据库管理、缓存策略以及异步处理等多个方面。 ... [详细]
  • 深入理解Kafka架构
    本文将详细介绍Kafka的内部工作机制,包括其工作流程、文件存储机制、生产者与消费者的具体实现,以及如何通过高效读写技术和Zookeeper支持来确保系统的高性能和稳定性。 ... [详细]
  • 本文探讨了在Cloudera Distribution Including Apache Hadoop (CDH) 中添加位于新网络段的新节点后,如何解决Impala查询失败的问题。通过分析错误日志和网络配置,提供了详细的解决方案。 ... [详细]
  • 本文详细解释了i386和X86_64这两种处理器架构的意义及其区别,涵盖了从早期的8086处理器到现代多核技术的发展历程,探讨了这些架构如何影响操作系统的选择及软件的兼容性。 ... [详细]
  • 本文详细探讨了虚拟化的基本概念,包括服务器虚拟化、网络虚拟化及其在云计算环境中的应用。特别强调了SDN技术在网络虚拟化和云计算中的关键作用,以及网络虚拟化技术如何提升资源利用效率和管理灵活性。 ... [详细]
  • 深入解析:主流开源分布式文件系统综述
    本文详细探讨了几款主流的开源分布式文件系统,包括HDFS、MooseFS、Lustre、GlusterFS和CephFS,重点分析了它们的元数据管理和数据一致性机制,旨在为读者提供深入的技术见解。 ... [详细]
  • Linux环境下通过PHP SMTP发送邮件的配置指南
    本文详细介绍了如何在Linux系统中配置PHP通过SMTP发送邮件,包括防火墙设置、端口检查与释放、IPv6到IPv4的转换、DNS缓存刷新以及PHP相关配置等步骤。 ... [详细]
  • Python 第三天学习笔记
    本文详细介绍了 Python 编程的第三天学习内容,包括字符编码、文件处理以及函数的基本概念和使用方法。 ... [详细]
  • 探讨电脑常见故障及其解决方案
    本文深入分析了电脑无法正常启动、开机报警等常见故障的原因,并提供了相应的解决策略,帮助用户快速定位并解决问题。 ... [详细]
  • Java集合框架源码解读(1)——ArrayList、LinkedList和Vector
    java.util.List接口是JavaCollectionsFramework的一个重要组成部分,List接口的架构图如下:本文将通过剖析List接 ... [详细]
  • 本文探讨了在C#服务中捕获控制台输出的有效方法,特别是在远程系统部署的应用场景下。文中不仅提供了基础的解决方案,还深入讨论了最佳实践,如使用日志库和事件日志等。 ... [详细]
  • 本文详细探讨了 Java 中抽象类的概念、定义方式及其使用场景,通过具体示例说明抽象类在面向对象编程中的重要性和灵活性。 ... [详细]
  • 双十一 | 朗科多重优惠活动,助你畅享购物盛宴
    双十一期间,朗科推出多项优惠活动,包括抽奖、满减及免单等,为消费者带来前所未有的购物体验。 ... [详细]
  • 掌握数据库引擎存储过程与系统视图查询:DBA与BI开发者的必备技能
    本文介绍了如何利用数据库引擎存储过程及系统视图查询数据库结构和对象信息,为数据库管理员(DBA)和商业智能(BI)开发人员提供实用的基础知识。文章涵盖了一系列常用的SQL Server存储过程和系统视图,帮助读者快速获取数据库的相关信息。 ... [详细]
  • 本文介绍了如何在VSCode中安装和使用代码格式化插件,如Beautify,并提供了详细的步骤指导,包括如何通过快捷键快速格式化JavaScript和CSS代码。 ... [详细]
author-avatar
杨子忧愁_347
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有