单片机哈佛和普林斯顿体系_哈佛结构的基本特点

单片机哈佛和普林斯顿体系_哈佛结构的基本特点https://blog.csdn.net/skywalker_leo/article/details/78194631.冯·诺依曼结构冯·诺依曼结构,又称为普林斯顿体系结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。取指令和取操作数都在同一总线上,通过分时复用的方式进行;缺点是在高速运行时,不能达到同时取指令和取操作数,从而形成了传输过程的瓶颈。由于程序指令存储…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

https://blog.csdn.net/skywalker_leo/article/details/7819463

1. 冯·诺依曼结构

    冯·诺依曼结构,又称为普林斯顿体系结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。取指令和取操作数都在同一总线上,通过分时复用的方式进行;缺点是在高速运行时,不能达到同时取指令和取操作数,从而形成了传输过程的瓶颈。由于程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同,如英特尔公司的8086中央处理器的程序指令和数据都是16位宽。

    目前使用冯·诺依曼结构的CPU和微控制器有很多。其中包括英特尔公司的8086及其他CPU,TI的MSP430处理器,ARM公司的ARM7,MIPS公司的MIPS处理器。

单片机哈佛和普林斯顿体系_哈佛结构的基本特点

2. 哈佛结构

    哈佛结构是一种将程序指令存储和数据存储分开的存储器结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问,目的是为了减轻程序运行时的访存瓶颈。

    目前使用哈佛结构的中央处理器和微控制器有很多,Microchip公司的PIC系列芯片,还有motorola公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11。

单片机哈佛和普林斯顿体系_哈佛结构的基本特点

3. 总结

    随着CPU设计的发展,流水线的增加,指令和数据的互斥读取影响CPU指令执行的scale程度。哈佛结构中数据存储器与程序代码存储器分开,各自有自己的数据总线与地址总线,取操作数与取指令能同时进行。但这是需要CPU提供大量的数据线,因而很少使用哈佛结构作为CPU外部构架来使用。对于CPU内部,通过使用不同的数据和指令cache,可以有效的提高指令执行的效率,因而目前大部分计算机体系都是在CPU内部的使用哈佛结构,在CPU外部使用冯·诺依曼结构。
——————— 
作者:skywalker_leo 
来源:CSDN 
原文:https://blog.csdn.net/skywalker_leo/article/details/7819463 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

冯诺依曼和哈弗结构图对比:

冯·诺依曼结构也称作普林斯顿结构,是一种将程序(指令序列的集合)和数据存放在同一存储器的不同地址的电脑设计概念结构。这是建立在冯·诺依曼原理,即程序可看做一种特殊的“数据”,同样地可以被处理和存储,故两者可存放在同一存储器中,采用单一的地址总线和数据总线。

特点:

第一,程序和数据存放在同一存储器的不同地址上;

第二,存储单元线性排列,且其位数固定;

第三,顺序执行,即程序/数据—>内存—>取指令执行指令;顺序执行程序。执行前,将需要的程序和数据先放入存储器(PC为内存)。当执行时把要执行的程序和要处理的数据按顺序从存储器中取出指令一条一条地执行,称作顺序执行程序。

第四,组成上有运算器,存储器,控制器,输入/输出设备。如下图:

单片机哈佛和普林斯顿体系_哈佛结构的基本特点

哈佛结构

  与冯氏结构相对的是哈佛结构,即将程序和数据分开存储的结构。其过程CPU首先到程序指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,并进行下一步的操作(通常是执行)。程序指令储存和数据储存分开,数据和指令的储存可以同时进行,可以使指令和数据有不同的数据宽度

  联系冯氏结构的瓶颈,我们很快能想到哈佛结构能够完成指令和数据的并发操作,减轻了程序运行时的访存瓶颈,也就是提高吞吐量,是一种并行结构;而冯氏结构只能是顺序操作,是一种串行的处理方式。原始的冯·诺依曼体系结构,通过引入流水线技术(Pipeline)提高吞吐量。

  流水线技术与并行处理有所区别,流水线是在顺序指令流计算机中实现处理时间重叠的技术。流水线的并行处理是指完成对一条指令的不同操作(取指令、解码指令、执行指令)的各个部件在时间上是可以同时重叠工作(三级流水线)。CPU是按照取指令、解码指令、执行指令来完成一条指令的操作,当CPU取完第一条指令后,接着解码第一条指令,同时CPU取第二条指令,该步完成后,CPU执行第一条指令,同时解码第二条指令、取第三条指令,如此重叠操作。

  因此,各部件同时处理是针对不同指令而言的,各部件分别同时为多条指令的不同部分(step、stage)进行工作,以提高各部件的利用率来提高指令的平均执行速度。但是这样虽然提高了系统的速率,由于流水线结构使得不容易计算程序运行的时间,对一些时序要求很严的情况,该结构还是存有弊端的。所以在一些实时性很强的嵌入式系统采用哈佛结构可以高速数据处理,同时读取指令和数据,大大提高了数据吞吐率,保证了系统的可靠性。

 

单片机哈佛和普林斯顿体系_哈佛结构的基本特点

 

分支预测逻辑

???

单片机哈佛和普林斯顿体系_哈佛结构的基本特点

 

GCC编译中的选择

单片机哈佛和普林斯顿体系_哈佛结构的基本特点

时序对性能影响

单片机哈佛和普林斯顿体系_哈佛结构的基本特点

单片机哈佛和普林斯顿体系_哈佛结构的基本特点单片机哈佛和普林斯顿体系_哈佛结构的基本特点

 

 

国外牛人从零开始制作8-bit计算机_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili  

https://www.bilibili.com/video/av11048265/?spm_id_from=trigger_reload

 

 

参考文献:

1、《深入理解计算机系统》第三版,3.6

2、《Synthesis of Arithmetic Circuits_ FPGA, ASIC and Embedded SystemsInterscience (2006)

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185905.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月4日 下午8:46
下一篇 2022年10月4日 下午8:46


相关推荐

  • 用龙虾 openclaw 拆解网络爆文-说不定你也可以参考写一个

    用龙虾 openclaw 拆解网络爆文-说不定你也可以参考写一个

    2026年3月13日
    2
  • Java面试题整理,2021年腾讯Java高级面试题及答案[通俗易懂]

    Java面试题整理,2021年腾讯Java高级面试题及答案[通俗易懂]正文如果你参加过一些大厂面试,肯定会遇到一些开放性的问题:1、写一段程序,让其运行时的表现为触发了5次YoungGC、3次FullGC、然后3次YoungGC;2、如果一个Java进程突然消失了,你会怎么去排查这种问题?3、给了一段Spring加载Bean的代码片段,阐述一下具体的执行流程?是不是看上去很难,是不是和自己准备的“题库”中的问题不一样?不知道从何处下手?如果你有这种感觉,那么说明你的技术还需要继续修炼。面对如此多的技术面试,怎么样才能说自己的技术已经过关了呢?只有

    2022年7月18日
    19
  • java warmup,20. dubbo源码-预热warmup过程

    java warmup,20. dubbo源码-预热warmup过程阿飞 Javaer 转载请注明原创出处 谢谢 前言今天群里小伙伴黄晓峰 VIVO 咨询一个问题 dubbo 接口怎么做预热呢 每次上线 都会有一小部分超时 熟悉 JVM 都知道 JVM 重启后有一段预热过程 要运行一段时间 它的性能才能达到最佳状态 阿里 JVM 团队就针对这个缺陷进行了优化 其特性名曰 jwarmup 可以点击 AlibabaJVM 创新提效获国际社区认可登台 JVM 圈顶会 对 jwarmup 稍

    2026年3月17日
    2
  • 光棍节程序员闯关秀第9关(总共10关) 解题步骤

    光棍节程序员闯关秀第9关(总共10关) 解题步骤题目链接:http://segmentfault.com/game/?k=4999c12ce5be7c3cba227ba9f4f7d797解题步骤:1.应景嘛,把所有的空格替换成11112.8位二进制转换成一个byte,解释为ASCII字符3.得到一个BASE64加密在字符串4.用 BASE64Decoder解密5.另存为

    2022年7月16日
    19
  • VB编程:ReleaseCapture&SendMessage拖动无标题栏的窗体-57

    VB编程:ReleaseCapture&SendMessage拖动无标题栏的窗体-57 PrivateDeclareFunctionReleaseCaptureLib"user32"()AsLongPrivateDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAsLong,ByValwMsgAsLong,ByValwP…

    2022年5月22日
    46
  • java测试案例编写方法_java实现自动化测试实例

    java测试案例编写方法_java实现自动化测试实例1.定义一个测试类(测试用例)1.1测试类名:被测试类的名字+Test比如UserServiceImplTest1.2测试类的包名:最后以.test结尾比如xxx.xx.test2.测试类中的测试方法2.1test+方法名比如testAdd2.2返回值建议void因为独立运行没有调用返回值没有意义2.3同上没有调用自然也不会有人传参参数建议…

    2022年10月10日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号