冯诺依曼结构
冯诺依曼结构,也叫普林斯顿结构,指令和数据是不加区别地混合存储在同一个存储器中的,共享数据总线。指令和数据地址指向同一个存储器的不同物理位置,指令和数据的宽度相同。由于指令和数据放在同一个存储器中,因此冯诺依曼结构中不能同时取指令。又由于存储器的速度远低于CPU的速度,从而使CPU与存储器交换数据成了影响高速计算和系统性能的瓶颈。ARM7,80x86等都是冯诺依曼结构。
哈佛结构
哈佛结构,指令和数据是完全分开,存储器分为程序存储器和数据存储器;至少拥有2组总线:程序存储器的数据总线和地址总线,数据存储器的数据总线和地址总线,这种分开的程序总线和数据总线,可允许同时获取指令字(来自程序存储器)和操作数(数据存储器),互不干扰。这意味着在一个机器周期内可以同时准备好数据和指令,本条指令执行时可以预取下一条指令,所以哈佛结构的CPU具有较高的执行效率。同时由于指令和数据分开存放,可以使指令和数据有不同的宽度。ARM9、ARM10、ARM11,大多数单片机和数字信号处理系统等都是哈佛结构结构。
混血儿——冯诺依曼结构和哈佛结构
许多现代微型计算机的高速缓冲存储器采用哈佛结构,将Cache分为指令Cache和数据Cache,而主存采用冯诺依曼结构,只有一个存储器,由数据和指令混用。如此将哈佛结构和冯诺依曼结构结合起来,不仅可以提高主存的利用率,而且可以提高程序执行的效率,缩短指令执行的时钟周期。