冯诺依曼结构
哈佛结构
两者的主要差别是:
冯诺依曼架构不区分数据与指令,将两者放在同一内存中;
哈佛结构将两者分别存放在Instruction Memory和Data Memory。
指令和数据放在一起的后果是取指令和取数据不能同时进行,否则会引起访存的混乱。
发展到今天,CPU的运算速度已经远远超过了访存速度,因此CPU必须浪费时间等数据;而哈佛构架由于指令和数据是分开存放的,所以在等数据的同时可以预取指令,CPU的利用率更高。
由于指令与数据放在同一内存带来的CPU利用率(吞吐率)限制就是冯诺依曼瓶颈
冯诺依曼瓶颈的缓解办法有:
- 在CPU和主存之间提供一个缓存
- 为数据和指令提供单独的缓存或单独的访问路径(所谓的修改哈佛架构)
- 使用分支预测器算法和逻辑
- 提供有限的CPU栈或其他片上暂存存储器,以减少内存访问