众所周知,冯·诺依曼架构(von Neumann architecture)和哈佛体系结构(Harvard architecture)是计算机CPU系统的两种基本模型,或者称之为两种体系架构。前者,我们经常简称为“诺曼架构”;后者,我们经常简称为“哈佛架构”。
什么是架构?
架构是一个计算机硬件的基本模型,它决定了计算机系统的运行方式。
计算机架构的三个要素是:
- 中央处理器CPU
- 记忆单元(存储器)
- 输入/输出接口 IO
如是果它们不同,就是架构不同。Intel 和AMD经常变动架构,变来变去,从CPU体系架构上来说,还是那个X86——冯·诺依曼架构,没有本质上的变化。
诺曼架构和哈佛架构之间的显著差异在于 CPU 与内存的存取方式。在这两种架构中,CPU 使用两种不同的方式访问内存,也就是说,它们处理指令和数据的方式是不同的。
诺曼架构
![](https://pics0.baidu.com/feed/5243fbf2b2119313d3b4954ad8e4eadc93238db9.png@f_auto?token=efbb799fdb7098260c835294d4e0331c)
诺曼架构是最常见的计算机体系结构之一,最早由冯·诺依曼于1945年提出。这种架构中,指令和数据存储在同一个存储器中,使用同一条地址总线和数据总线来传输数据和指令。它的主要特点如下:
- 指令和数据共享同一个存储器。
- 一个CPU核心同时只能执行一条指令。
- 存储器是被动的,需要 CPU 主动去读写数据。
我们的电脑用的X86 CPU,都是诺曼架构的。诺曼架构指令与数据共用条存总线,地址空间就在一起。所以,程序是CPU指令的集合,它也要占一定的地址空间。
![](https://pics4.baidu.com/feed/71cf3bc79f3df8dcd46eae880ecd9480461028bb.png@f_auto?token=8a9c0758044553ba7e305c4426d318f2)
在x86架构中,保留内存的一部分通常被称为BIOS或UEFI区域。这个区域存储了系统启动时需要的一些信息和代码,例如系统配置、硬件检测程序和引导程序等。
所以,电脑安装的内存条条,并不是都由你的程序支配。除了操作系统占用外,还有一部分是保留区域,是给BIOS或UEFI区域所占用。
上图是windows的任务管理器,每个电脑都会有一定的保留内存区域。这是诺曼架构的特点决定的,并不是某个人的随意行为。
哈佛架构
![](https://pics4.baidu.com/feed/e61190ef76c6a7ef5300d7b44226495af2de6662.png@f_auto?token=a0e023022d4aced8264633a7b098339f)
哈佛架构是一种分离式存储器体系结构,它将指令和数据存储在不同的内存中。CPU 通过不同的总线从指令内存和数据内存中读取指令和数据。这意味着 CPU 可以同时访问指令和数据内存,因此可以同时执行多条指令。它的主要特点如下:
- 指令和数据存储在不同的内存中。
- 一个CPU核心可以同时执行多条指令。
- 存储器是主动的,可以同时向 CPU 提供指令和数据。
哈佛架构多用于一些嵌入式系统或数字信号处理器等领域。我们普通人一般见不到它。
诺曼架构与哈佛架构的区别
![](https://pics3.baidu.com/feed/faf2b2119313b07e8e3718a4b30b772895dd8cf8.png@f_auto?token=ef8681b78a0de87f78583427d9d4b893)
我们知道,诺曼架构和哈佛架构的主要区别,在于它们如何处理指令和数据。
在诺曼架构中,指令和数据共享同一个存储器,CPU 只能执行一条指令,因为它需要等待指令和数据都被读取到 CPU 中。而在哈佛架构中,指令和数据存储在不同的内存中,CPU 可以同时访问指令和数据内存,因此可以同时执行多条指令。
所以,可以这样理解,诺曼架构是单车道,而哈佛架构是多车道。
作为单车道的诺曼架构,它的缺点是明显的。
- 同时传输数据和指令,导致存储器和处理器之间的效率低下。
- 存储器中的指令和数据被混合存储,指令可以被当作数据进行处理,因此程序可以动态地修改自身代码,容易受到病毒、恶意程序等攻击。
- 指令和数据必须具有相同的位宽。
不过,诺曼架构也有好处,就是简单、易于实现和设计。
哈佛架构有两个独立的存储器,就像多车道那样,它的优点也很明显。
- 指令与数据传输同时运行,运行效率高。
- 存储器中的指令和数据分开存储,因此程序无法直接修改自身代码,这样会更加安全可靠、固若金汤。
- 指令和数据的位宽可以不同。
但天下没有十全的美事,哈佛架构实现和设计相对复杂的多。
哈佛架构也有一种好处,可以使用不同的技术来优化性能。例如,指令内存可以使用快速但昂贵的 SRAM 存储器,而数据内存可以使用廉价的 DRAM 存储器。这种技术上的优势使得哈佛架构在一些应用中更具优势,例如嵌入式系统和数字信号处理器。
总体而言,冯·诺依曼架构适用于大多数通用计算机,因为它能够灵活地处理各种不同的计算任务,同时还可以使用缓存等技术来优化性能。而哈佛架构则适用于一些特定的应用领域,例如需要高效地处理大量数据的嵌入式系统,或数字信号处理器等领域。
转载链接:https://baijiahao.baidu.com/s?id=1761045040019054931&wfr=spider&for=pc
发表回复