诺曼架构是最常见的计算机体系结构之一,最早由冯·诺依曼于1945年提出。这种架构中,指令和数据存储在同一个存储器中,使用同一条地址总线和数据总线来传输数据和指令。它的主要特点如下:
我们的电脑用的X86 CPU,都是诺曼架构的。诺曼架构指令与数据共用条存总线,地址空间就在一起。所以,程序是CPU指令的集合,它也要占一定的地址空间。
在x86架构中,保留内存的一部分通常被称为BIOS或UEFI区域。这个区域存储了系统启动时需要的一些信息和代码,例如系统配置、硬件检测程序和引导程序等。
所以,电脑安装的内存条条,并不是都由你的程序支配。除了操作系统占用外,还有一部分是保留区域,是给BIOS或UEFI区域所占用。
上图是windows的任务管理器,每个电脑都会有一定的保留内存区域。这是诺曼架构的特点决定的,并不是某个人的随意行为。
哈佛架构
哈佛架构是一种分离式存储器体系结构,它将指令和数据存储在不同的内存中。CPU 通过不同的总线从指令内存和数据内存中读取指令和数据。这意味着 CPU 可以同时访问指令和数据内存,因此可以同时执行多条指令。它的主要特点如下:
哈佛架构多用于一些嵌入式系统或数字信号处理器等领域。我们普通人一般见不到它。
诺曼架构与哈佛架构的区别
我们知道,诺曼架构和哈佛架构的主要区别,在于它们如何处理指令和数据。
在诺曼架构中,指令和数据共享同一个存储器,CPU 只能执行一条指令,因为它需要等待指令和数据都被读取到 CPU 中。而在哈佛架构中,指令和数据存储在不同的内存中,CPU 可以同时访问指令和数据内存,因此可以同时执行多条指令。
所以,可以这样理解,诺曼架构是单车道,而哈佛架构是多车道。
作为单车道的诺曼架构,它的缺点是明显的。
不过,诺曼架构也有好处,就是简单、易于实现和设计。
哈佛架构有两个独立的存储器,就像多车道那样,它的优点也很明显。
但天下没有十全的美事,哈佛架构实现和设计相对复杂的多。
哈佛架构也有一种好处,可以使用不同的技术来优化性能。例如,指令内存可以使用快速但昂贵的 SRAM 存储器,而数据内存可以使用廉价的 DRAM 存储器。这种技术上的优势使得哈佛架构在一些应用中更具优势,例如嵌入式系统和数字信号处理器。
总体而言,冯·诺依曼架构适用于大多数通用计算机,因为它能够灵活地处理各种不同的计算任务,同时还可以使用缓存等技术来优化性能。而哈佛架构则适用于一些特定的应用领域,例如需要高效地处理大量数据的嵌入式系统,或数字信号处理器等领域。