什么是哈佛建筑?
为什么指令和数据要分开存储?
该博客上撰写的文章是出于教学目的而创建的。 另外,文章中的信息可能不正确,请谨慎。
计算机必须将程序指令和程序使用的数据存储在某处并读取它们。 此时,将指令和数据分别存储在不同存储器中的结构称为哈佛架构。
指令和数据是分开的
在哈佛架构中,指令存储器和数据存储器在物理上是分开的。 总线,也就是通往CPU的通道,也是单独使用的。
指令存储器──指令总线──┐
CPU
数据存储器──数据总线────┘
CPU在取下一条指令的同时,也可以同时读取当前指令所需的数据。 与指令和数据交替使用一条路径的结构相比,可以减少瓶颈。
另外,两个存储器的规格可以设计不同。 指令可以放置在只读存储器中,数据可以存储在读写存储器中,或者指令和数据的位宽可以不同。
它与冯·诺依曼结构有何不同?
冯诺依曼架构将指令和数据放置在同一内存和总线中。
哈佛结构
指令存储器─┐
CPU
数据存储器 ─┘
冯诺依曼结构
指令+数据存储器──CPU
冯·诺依曼结构只有一个内存空间,因此编程和硬件配置都比较简单。 然而,取指令和读数据使用相同的路径,因此很难同时处理它们。
相反,哈佛结构有利于同时访问,但很难通过使用数据而不是空指令存储器来灵活利用空间。 由于内存和总线必须单独创建,因此硬件变得更加复杂。
在哪里使用它?
哈佛结构在需要快速响应输入的微控制器或 DSP 中很容易看到。 它非常适合定义程序并且同时处理命令和数据很重要的环境。
很难精确定位现代 PC 中的某个 CPU。 主存将指令和数据存储在一起,但在CPU附近,经常使用改进的哈佛架构,它将指令缓存和数据缓存分开。
也就是说,哈佛架构的核心并不是简单的有两个内存。 可以理解为一种通过指令和数据使用不同的存储空间和路径,让CPU同时执行两项任务的结构。