在如今的CPU中,由于Catch的存在,这些概念已经被模糊了。个人认为去区分他们并没有什么意义,仅作为知识点。
哈佛结构设计复杂,但效率高。冯诺依曼结构则比较简单,但也比较慢。CPU厂商为了提高处理速度,在CPU内增加了高速缓存。也基于同样的目的,区分了指令缓存和数据缓存。
在内存里,指令和数据是在一起的。而在CPU内的缓存中,还是会区分指令缓存和数据缓存,最终执行的时候,指令和数据是从两个不同的地方出来的。你可以理解为在CPU外部,采用的是冯诺依曼模型,而在CPU内部用的是哈佛结构。
就像ARM9内核的S3C2440就是如上述所说一样,硬要区分的话,更加贴近改进型哈佛结构。
参考文章:冯·诺依曼、哈佛、改进型哈佛体系结构解析
1. 冯·诺依曼结构
冯·诺依曼结构,又称为普林斯顿体系结构。
主要特点:将程序指令存储器和数据存储器合并在一起。本质上就是把指令也看作数据。
优点:结构简单、易实现、成本低
缺点:在高速运行时,不能达到同时取指令和取数据,从而形成了传输过程的瓶颈。由于程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同。
2.哈佛结构
主要特点:将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址(意味着有两个0地址:指令0和数据0)、独立访问,目的是为了减轻程序运行时的访存瓶颈。
哈佛结构的中央处理器首先到程序指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,并进行下一步的操作(通常是执行)。
优点:
1.程序指令储存和数据储存分开,数据和指令的储存可以同时进行,效率高。
2.一般情况下程序难以修改自身,安全性高。
3.可以使指令和数据有不同的数据宽度,如Microchip公司的PIC16芯片的程序指令是14位宽度,而数据是8位宽度。
缺点:复杂,对外围设备的连接与处理要求高,十分不适合外围存储器的扩展。
3.改进型哈佛结构
主要特点:改进型哈佛结构虽然也使用两个不同的存储器:程序存储器和数据存储器,但它把两个存储器的地址总线合并了,数据总线也进行了合并。