微型计算机之哈佛架构是什么?

“哈佛体系结构”指的是什么?

微型计算机处理命令和数据,但是在很久以前的微型计算机中,用命令和数据共享了一条总线。在这种情况下,CPU在读取指令时使用总线,因此无法访问数据,并且在读取指令结束后访问数据。使用这种方法的总线配置的计算机体系结构被称为“诺伊曼体系结构(Von Neumann Architecture)”。

另一方面,有将总线用命令和数据分开,使之独立的总线构成方式。使用这种方法,即使CPU读取指令,您也可以使用数据总线访问数据。因此,微型计算机的性能可以比诺伊曼型更高(见图1)。使用这种总线配置的计算机架构是“哈佛架构(Harvard Architecture)”。
在这里插入图片描述

但是,哈佛型号内置两条总线,因此有一个缺点:微型计算机的硬件规模比诺伊曼型大,成本更高。

诺依曼型

简单地说,它是一种架构,可以同时使用指令和数据总线,有效地配置微型计算机的硬件。由于总线布满了微型计算机的内部,所以尽可能少的数量有利于抑制微型计算机的成本。但是,因为只有一个总线,所以不能同时处理命令和数据,影响微型计算机的运算性能。这被称为“诺伊曼瓶颈”,由于这个瓶颈,在追求高性能的微型计算机中没有被采用。另一方面,比起性能更重视成本的微型计算机更方便,在重视成本的微型计算机中被广泛采用。以ARM Cortex-M处理器为例,Cortex-M0和Cortex-M0+适用于此。因为它是针对低价位市场开发的处理器,所以它优先考虑成本。

哈佛型

为了消除诺伊曼瓶颈,把总线按命令和数据分开,使之独立的方式就是哈佛型。以这种方式,即使在CPU读取指令的时间段,您也可以使用数据总线访问数据。因此,微型计算机的性能可以比诺伊曼类型更高。但是,由于需要独立的指令总线和数据总线,微型计算机的硬件会变大,成本也会变高。因此,比起成本,更重视性能的微型计算机被广泛采用。以ARM Cortex-M处理器为例,Cortex-M3、Cortex-M4和Cortex-M7属于此类处理器。高性能处理器是针对高性能应用市场而开发的。
在这里插入图片描述

它由三个步骤组成:“指令读取(F)”、“指令解码(解码/翻译)(D)”、“运算并写入结果(E)”。每个处理执行一个周期一次的处理。读取指令是步骤“F”。访问数据是“E”步骤。在图2-a的情况下,在第三个周期之后,“F”和“E”总是同时进行。如果是诺伊曼类型,则不能同时执行指令提取和数据访问,因此任何一方都必须等待总线的使用。如果采用轮转方式(交替)调停总线权,则“F”和“E”将交替进行,因此如图2-b所示,命令的执行效率会非常差。如果是哈佛类型,管道处理可以执行一个周期1个指令。

哈佛的缺点是,总线的硬件规模需要诺依曼型号的两倍,从而提高了微型计算机的成本。对于32位微型计算机,指令和数据都是32位,因此需要相当于64位总线的程度。不仅仅是总线的程度。CPU内部需要控制两种总线的电路,因此CPU内部的硬件也会变大。

真正的哈佛架构

在此,我们将以STM32F1系列的STM32F103为例。
在这里插入图片描述

图左侧的Cortex-M3和DMA(直接存储器访问)是总线主机。Cortex-M3的命令总线是ICode总线。而且作为数据总线有DCode总线和系统接口总线两种。STM32F103的数据总线具有总线矩阵配置,因此总线主站连接Cortex-M3的Dcode总线、系统接口总线和DMA数据总线。总线从属端的所有数据总线都与总线矩阵相连。由于数据可能存储在闪存中,因此闪存也连接到总线矩阵。Cortex-M3的ICode总线通过闪存接口电路连接到内置闪存,而不连接到总线矩阵。

如果只看这个图,指令看起来只能从闪存运行,但是对于Cortex-M3,也可以从数据总线运行,所以您也可以从RAM或通过外围功能连接的外部内存执行它。

猜你喜欢

转载自blog.csdn.net/qq_18191333/article/details/107559326