普林斯顿结构

普林斯顿结构,也称冯·诺伊曼结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同,如英特尔公司的8086中央处理器的程序指令和数据都是16位宽。

  目前使用冯·诺伊曼结构的中央处理器和微控制器有很多。除了上面提到的英特尔公司的8086,英特尔公司的其他中央处理器、ARM的ARM7、MIPS公司的MIPS处理器也采用了冯·诺伊曼结构。

1945年,冯·诺依曼首先提出了“存储程序”的概念和二进制原理,后来,人们把利用这种概念和原理设计的电子计算机系统统称为“冯·诺曼型结构”计算机。冯·诺曼结构的处理器使用同一个存储器,经由同一个总线传输。
  
     冯·诺曼结构处理器具有以下几个特点:必须有一个存储器;必须有一个控制器;必须有一个运算器,用于完成算术运算和逻辑运算;必须有输入和输出设备,用于进行人机通信。冯·诺依曼的主要贡献就是提出并实现了“存储程序”的概念。由于指令和数据都是二进制码,指令和操作数的地址又密切相关,因此,当初选择这种结构是自然的。但是,这种指令和数据共享同一总线的结构,使得信息流的传输成为限制计算机性能的瓶颈,影响了数据处理速度的提高。
  
       在典型情况下,完成一条指令需要3个步骤,即:取指令、指令译码和执行指令。从指令流的定时关系也可看出冯·诺依曼结构与哈佛结构处理方式的差别。举一个最简单的对存储器进行读写操作的指令,指令1至指令3均为存、取数指令,对冯·诺曼结构处理器,由于取指令和存取数据要从同一个存储空间存取,经由同一总线传输,因而它们无法重叠执行,只有一个完成后再进行下一个。

哈佛结构

  哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度,如Microchip公司的PIC16芯片的程序指令是14位宽度,而数据是8位宽度。

  哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和存储的,执行时可以预先读取下一条指令。目前使用哈佛结构的中央处理器和微控制器有很多,除了上面提到的Microchip公司的PIC系列芯片,还有摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的 AVR系列和安谋公司的ARM9、ARM10和ARM11。

  哈佛结构是指程序和数据空间独立的体系结构,目的是为了减轻程序运行时的访存瓶颈。

  例如最常见的卷积运算中, 一条指令同时取两个操作数, 在流水线处理时, 同时还有一个取指操作, 如果程序和数据通过一条总线访问, 取指和取数必会产生冲突,而这对大运算量的循环的执行效率是很不利的。哈佛结构能基本上解决取指和取数的冲突问题。而对另一个操作数的访问,就只能采用 Enhanced哈佛结构了,例如像TI那样,数据区再split,并多一组总线。或向AD那样,采用指令cache,指令区可存放一部分数据。

在DSP算法中,最大量的工作之一是与存储器交换信息,这其中包括作为输入信号的采样数据、滤波器系数和程序指令。例如,如果将保存在存储器中的2个数相乘,就需要从存储器中取3个二进制数,即2个要乘的数和1个描述如何去做的程序指令。目前DSP内部一般采用的是哈佛结构,它在片内至少有4套总线:程序的数据总线,程序的地址总线,数据的数据总线和数据的地址总线。这种分离的程序总线和数据总线,可允许同时获取指令字(来自程序存储器)和操作数(来自数据存储器),而互不干扰。这意味着在一个机器周期内可以同时准备好指令和操作数。有的DSP芯片内部还包含有其他总线,如DMA总线等,可实现单周期内完成更多的工作。这种多总线结构就好像在DSP内部架起了四通八达的高速公路,保障运算单元及时地取到需要的数据,提高运算速度。因此,对DSP来说,内部总线是个资源,总线越多,可以完成的功能就越复杂。超级哈佛结构(super Harvard architecture,缩写为SHARC),它在哈佛结构上增加了指令cache(缓存)和专用的I/O控制器。

哈佛结构处理器有两个明显的特点:使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。

改进的哈佛结构,其结构特点为:使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存,以便实现并行处理;具有一条独立的地址总线和一条独立的数据总线,利用公用地址总线访问两个存储模块(程序存储模块和数据存储模块),公用数据总线则被用来完成程序存储模块或数据存储模块与CPU之间的数据传输。

冯·诺依曼理论的要点是:数字计算机的数制采用二进制;计算机应该按照程序顺序执行。人们把冯诺依曼的这个理论称为冯诺依曼体系结构。从ENIAC到当前最先进的计算机都采用的是冯诺依曼体系结构。所以冯诺依曼是当之无愧的数字计算机之父。

根据冯诺依曼体系结构构成的计算机,必须具有如下功能:把需要的程序和数据送至计算机中;必须具有长期记忆程序、数据、中间结果及最终运算结果的能力;能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力;能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作;能够按照要求将处理结果输出给用户。

哈佛结构是为了高速数据处理而采用的,因为可以同时读取指令和数据(分开存储的)。大大提高了数据吞吐率,缺点是结构复杂。通用微机指令和数据是混合存储的,结构上简单,成本低。假设是哈佛结构:你就得在电脑安装两块硬盘,一块装程序,一块装数据,内存装两根,一根储存指令,一根存储数据……

是什么结构要看总线结构的。51单片机虽然数据指令存储区是分开的,但总线是分时复用得,所以顶多算改进型的哈佛结构。ARM9虽然是哈佛结构,但是之前的版本也还是冯·诺依曼结构。早期的X86能迅速占有市场,一条很重要的原因,正是靠了冯·诺依曼这种实现简单,成本低的总线结构。现在的处理器虽然外部总线上看是诺依曼结构的,但是由于内部CACHE的存在,因此实际上内部来看已经算是改进型哈佛结构的了。至于优缺点,哈佛结构就是复杂,对外围设备的连接与处理要求高,十分不适合外围存储器的扩展。所以早期通用CPU难以采用这种结构。而单片机,由于内部集成了所需的存储器,所以采用哈佛结构也未尝不可。现在的处理器,依托CACHE的存在,已经很好的将二者统一起来了。

普林斯顿结构和哈佛结构相关推荐

  1. 普林斯顿结构 VS 哈佛结构 及 程序性能优化

    https://blog.csdn.net/skywalker_leo/article/details/7819463 1. 冯·诺依曼结构 冯·诺依曼结构,又称为普林斯顿体系结构,是一种将程序指令存 ...

  2. 普林斯顿结构与哈佛结构

    冯.诺依曼结构,又称为普林斯顿结构.是一种经典的体系结构,有CPU,总线,外部存储器组成.这种体系结构采用程序代码存储器与数据存储器合并在同一存储器里,但程序代码存储器地址与数据存储器地址分别指向不同 ...

  3. 普林斯顿结构 VS 哈佛结构

    1. 冯·诺依曼结构 冯·诺依曼结构,又称为普林斯顿体系结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构.取指令和取操作数都在同一总线上,通过分时复用的方式进行:缺点是在高速运行时,不能 ...

  4. 哈佛结构与普林斯顿结构的区别通俗易懂

    哈佛结构是一种将程序指令存储和数据存储分开的存储器结构.中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行).程序指令 ...

  5. 普林斯顿结构 哈佛结构 比较

    普林斯顿结构  -- 通用计算机 ARM7                         -- 冯 诺依曼结构  哈佛结构          -- 单片机  ARM9 ARM10 ARM11 普林斯 ...

  6. 哈佛结构与冯.诺依曼结构(普林斯顿结构)

    过去知道计算机的体系结构分为哈佛结构与冯.诺依曼结构,但并没有去总结他们有什么区别.今天来看看它们有什么区别. 冯.诺依曼结构,又称为普林斯顿结构.是一种经典的体系结构,有CPU,总线,外部存储器组成 ...

  7. 【原创】存储器设计思想——冯诺依曼结构和哈佛结构

    冯诺依曼结构     冯诺依曼结构,也叫普林斯顿结构,指令和数据是不加区别地混合存储在同一个存储器中的,共享数据总线.指令和数据地址指向同一个存储器的不同物理位置,指令和数据的宽度相同.由于指令和数据 ...

  8. 单片机工作笔记002---认识CPU的结构_哈佛结构和冯·诺依曼结构的区别

    技术交流QQ群[JAVA,.NET,BigData,AI]:170933152 哈佛结构 (英语:Harvard architecture)是一种将程序指令储存和数据储存分开的存储器结构.中央处理器首 ...

  9. 对比分析冯诺依曼结构和哈佛结构。

    冯-诺伊曼结构,又称普林斯顿结构,是一种将程序指令存储器和数据存储器结合起来的存储器结构.程序指令存储地址和数据存储地址指向同一存储器中的不同物理位置,所以程序指令和数据的宽度是一样的. 哈佛结构与冯 ...

最新文章

  1. 如何定义中文转语音的语气
  2. 499php,一笔画仙路 [499]第499章 神器的威力 最新章节无弹窗全文免费阅读 乐文阅读官网...
  3. python语法syntaxerror怎么修改-Python 语法错误
  4. yaml 文件格式简介
  5. linux摄像头内核驱动开发,FS_S5PC100平台上Linux Camera驱动开发详解(一)
  6. gradle 编译java_Java的Gradle依赖关系,使用编译还是实现?
  7. mysql 大表 备份_MySQL大表备份的简单方法
  8. 关于eclipse没有http jar的问题解释
  9. TokenInsight:反映区块链行业整体表现的TI指数较昨日同期下跌1.15%
  10. “越南QQ”——Zing Chat试玩
  11. Php开发银行接口之浦发银行
  12. UI Framework-1: Ash Color Chooser
  13. 浅谈局部敏感哈希LSH
  14. fg、bg、jobs、、nohup、ctrl + z命令
  15. aspose转pdf乱码问题
  16. 声卡是HDA Intel,芯片为IDT 92HD81B1C5的ubuntu12.04下声音很小的解决方法
  17. 百度地图 InfoWindow上添加点击事件
  18. ubifs 分区格式化方法
  19. 返回到上一个页面并刷新页面
  20. 那些警示良言——老百姓也是圣贤

热门文章

  1. stunnel4隧道工具
  2. IP 归属地查询 API 教你从0到1顺着网线找到键盘侠
  3. Word自动标题编号后的空格以及数字编号的字体。
  4. 【VB6】CD 抓音轨转成 WAVE 波形格式文件
  5. :focus-visible 聚焦问题
  6. 我是名黑客我想黑掉淘宝有可能吗?
  7. linux命令 实验报告,Linux命令运用实验报告
  8. 【UE4(虚幻4)蓝图】第三人称人物的奔跑,冲刺,二段跳
  9. echart中x轴数据过多时展示不全
  10. android 判断 手机号码、邮编、Email邮箱、是否正确还有qq号