与两个存储器相对应的是系统的4条总线:程序和数据的
数据总线与
地址总线。这种分离的程序总线和数据总线可允许在一个
机器周期内同时获得
指令字(来自程序存储器)和
操作数(来自数据存储器),从而提高了执行速度,提高了数据的
吞吐率。又由于程序和数据存储在两个分开的物理空间中,因此取址和执行能完全重叠。
中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和
数据存储分开,可以使指令和数据有不同的数据宽度。
哈佛结构的计算机由CPU、
程序存储器和数据存储器组成,程序存储器和数据存储器采用不同的总线,从而提供了较大的
存储器带宽,使数据的移动和交换更加方便,尤其提供了较高的
数字信号处理性能。
例如最常见的
卷积运算中,一条指令同时取两个
操作数,在流水线处理时, 同时还有一个取址操作,如果程序和数据通过同一条总线访问,取址和取数必会产生冲突,而这对大运算量的循环的执行效率是很不利的。
哈佛结构能基本上解决取址和取数的冲突问题。而对另一个操作数的访问, 就只能采用Enhanced 哈佛结构了,例如像TI那样,
数据区再split,并多一组总线。 或向AD 那样, 采用指令cache,指令区可存放一部分数据。
哈佛结构与
冯·诺依曼结构处理器相比,处理器有两个明显的特点:使用两个独立的
存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;使用独立的两条总线,分别作为
CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。
使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存,以便实现
并行处理;具有一条独立的
地址总线和一条独立的
数据总线,利用公用地址总线访问两个存储模块(程序存储模块和
数据存储模块),公用数据总线则被用来完成程序存储模块或数据存储模块与CPU之间的
数据传输;两条总线由
程序存储器和数据存储器分时共用。