/ 中存储网

什么是冯·诺依曼瓶颈?冯诺依曼架构和哈佛架构的区别介绍

2024-01-14 23:40:34 来源:中存储

计算机体系结构简称计算机架构,是指一组规则,说明计算机软件和硬件如何组合在一起以及它们如何相互作用以使计算机正常运行,此外,计算机体系结构还指定了计算机能够处理哪些技术。

计算机体系结构是一种规范,它描述了软件和硬件如何相互作用以产生一个正常运行的平台。

当一个人想到“架构”这个词时,人类的头脑可能会想到架构物或房屋的组装,而且,考虑到同样的原理,计算机架构涉及内部和外部计算机系统的构建。

计算机体系结构有三个主要类别:

系统设计: 系统设计是硬件部分,包括多处理器、内存控制器、CPU、数据处理器和直接内存访问。系统设计可以看作是实际的计算机系统。

指令集架构: 这围绕着 CPU。它包括CPU的能力和功能,此外,它还包括CPU的数据格式,编程语言和处理器寄存器类型和指令,供计算机程序员使用。 CPU 是计算机中的部件,它使程序运行,无论是操作系统还是 Photoshop 等应用程序。

微架构: 系统中的微架构将定义存储元素/数据路径以及如何将它们实现到指令集架构中,微架构还负责数据处理。

所有这些都将按一定的顺序凝聚在一起,以使系统正常运行。

什么是冯·诺依曼架构?

1945年,当时的数学家约翰·冯·诺依曼(John von Neumann)深入研究了一项研究,即计算机可以具有固定的简单结构,并且仍然能够在不修改硬件的情况下执行任何类型的计算。这是提供计算机使用适当的指令进行正确编程,并且能够在其中执行它们。

冯·诺依曼的主要进步被称为“条件控制转移”,它允许程序序列被中断,然后在任何时候重新启动,此外,这一进步允许数据与指令一起存储在同一个存储单元中。

这是有益的,因为如果需要指令,可以像数据一样对它们进行算术修改。

冯·诺依曼架构描述了存储程序数字计算机的设计模型,该模型仅包含一个处理单元和一个单独的存储结构,该结构将保存指令和数据。

冯·诺依曼架构是指将数据和编程指令保存在读写RAM(随机存取存储器)中的架构。

冯·诺依曼架构的特征

如上所述,冯·诺依曼架构基于程序数据和指令数据存储在同一个存储单元中的事实。这也可以称为“存储程序概念”。

这种设计至今仍在计算机生产中使用:

什么是冯·诺依曼瓶颈?冯诺依曼架构和哈佛架构的区别介绍

中央处理器 (CPU):

CPU是一个电子电路,它执行计算机程序的指令。 CPU 也可以称为微处理器或处理器。

在 CPU 中,有 ALU、CU 和寄存器,下面将更详细地描述它们:

控制单元:

控制 ALU、存储器和输入/输出的操作,指示它们如何响应刚刚从存储单元读取和解释的程序的指令。控制单元通过执行以下作业来指导 CPU 的操作: 协调和控制 CPU 的活动 管理其他组件和 CPU 之间的数据流 确认并接受下一条指令 解码指令 将生成的数据存储回存储单元

算术和逻辑单元 (ALU):

允许执行逻辑和算术运算,例如加法和减法。 (逻辑运算符为:AND、OR、NOT、XOR)

存储单元:

由RAM组成,RAM被分区出来,由一个地址及其内容组成,它们以二进制形式存在。 RAM(随机存取存储器)是一种快速类型的存储器,与硬盘驱动器不同,它也可以由 CPU 直接访问。 CPU 中 RAM 的存在使其能够更快地运行,从而更高效。

寄存器:

CPU 中的小块由高速存储存储单元组成,这些存储单元在处理数据之前存储数据,所有逻辑、算术和移位运算都发生在这里。 寄存器由 5 个组件组成 程序计数器(PC):保存要执行的下一条指令的地址 蓄能器(AC): 存储逻辑和算术结果的存储区域 存储器地址寄存器 (MAR): 保存要读取或写入的数据位置的地址 存储器数据寄存器 (MDR): 存储已读取数据或仍需要写入的数据的临时存储位置 电流指令寄存器 (CIR): 执行当前指令的区域。该操作分为操作数和操作码。 操作数:包含数据或数据地址(将执行操作的位置) 操作码:指定要执行的指令类型

BUS总线

这些是一组平行线,用于连接 CPU 内部的组件(两个或多个)。在 CPU 中,有三种类型的总线,它们都称为系统总线。总线的类型有:数据总线、控制总线和地址总线。 数据总线: 该总线被称为双向总线,这意味着“位”可以双向传输。该总线用于在处理器、存储单元和输入/输出之间传输数据和指令。 地址总线: 传输内存地址,指定需要从何处发送或检索相关数据。(地址总线不承载数据,只承载地址) 控制总线: 这也是一个双向总线,用于传输来自CPU的“控制信号”/命令(以及来自其他组件的状态信号),以控制和协调计算机内的所有活动。

输入/输出:

从用户传递的信息/用户接收的信息。

冯·诺依曼架构的优缺点

优势

  • 控制单元以相同的方式从一个存储单元检索指令和数据。这简化了控制单元的开发和设计
  • 上述优势还意味着以相同的方式访问来自内存和设备的数据。因此,提高效率
  • 一个有利的特点是程序员可以控制内存组织

弊端

  • 由于串行指令处理,不允许并行执行程序
  • 一次只能访问一个“总线”。这会导致 CPU 处于空闲状态(因为它比数据总线快),这被认为是冯·诺依曼瓶颈
  • 尽管指令和数据存储在同一个地方可以被视为一个整体的优势。但是,由于程序中的错误,这可能会导致重写它,从而导致数据丢失
  • 如果有缺陷的程序在不需要内存(或完成内存)时未能释放内存,则由于可用内存不足,可能会导致计算机崩溃

冯·诺依曼瓶颈

多年来,随着处理器和计算机处理速度的提高,内存的改进增加了容量,而不是速度,这导致了“冯·诺依曼瓶颈”一词。这是因为 CPU 在等待从内存中获取数据时花费大量时间处于空闲状态(无所事事)。无论处理器有多快,这最终都取决于传输速率,事实上,如果处理器更快,这只是意味着它将有更长的“空闲”时间。

克服这一瓶颈的方法包括:

缓存:
数据更容易在RAM中访问,而不是存储在主存储器中。此处存储的数据类型将是经常使用的数据类型。
预取:
在请求之前将某些数据传输到缓存中。这将在请求数据时加快访问速度。
多线程:
在单独的线程中同时管理多个请求。
新型RAM:
如DDR SDRAM(双倍数据速率同步动态随机存取存储器)。
这种类型的RAM激活系统时钟的下降沿和上升沿的输出,而不仅仅是上升沿。
这可能会使输出翻倍。
RAM总线:
连接RAM控制器、RAM和总线(路径)的子系统,该总线将RAM连接到使用它的计算机中的微处理器和设备。
内存处理 (PIM):
PIM将处理器和存储器集成在单个微芯片中。

什么是哈佛架构?

哈佛架构以“哈佛Mark I”中继计算机命名,这是哈佛大学的一台IBM计算机。

计算机将指令存储在“穿孔磁带”(24 位宽)上,此外数据还存储在机电计数器中。这些早期计算机系统的 CPU 完全包含数据存储,并且它不提供对指令存储作为数据的访问。

哈佛架构是一种架构,它将数据和指令分开存储,因此拆分了存储单元。

哈佛架构系统中的 CPU 能够同时获取数据和指令,因为该架构具有用于数据传输和指令获取的单独总线。

哈佛架构学的特点

两种类型的架构都包含相同的组件,但是,主要区别在于,在哈佛架构中,指令获取和数据传输可以同时(同时)执行(因为系统有两条总线,一条用于数据传输,一条用于指令获取)。

什么是冯·诺依曼瓶颈?冯诺依曼架构和哈佛架构的区别介绍

哈佛架构的优缺点

优点

  • 由于指令和数据在不同的总线上传输,这意味着数据损坏的可能性较小
  • 哈佛架构提供了高性能,因为这种架构允许数据和指令同时流动。它们保存在单独的内存中,并通过单独的总线行驶
  • 由于该架构具有用于指令和数据的单独内存,因此内存带宽更大,更可预测

弊端

  • 专用于每个(数据和指令)的内存必须由制造商平衡。因为如果有空闲存储器数据存储器,它就不能用于指令,反之亦然
  • 然而,这种优势(左图)导致了更复杂的架构,因为它需要两条总线。这意味着制造需要更多时间,并使这些系统更加昂贵
  • 然而,这种架构尽管性能很高,但非常复杂,特别是对于主板制造商来说
  • 尽管如上所述,为了实现左侧的优势,哈佛架构需要两个总线的控制单元。这增加了复杂性,使开发更加困难。所有这些都增加了系统的价格

冯·诺依曼架构与哈佛架构比较:

什么是冯·诺依曼瓶颈?冯诺依曼架构和哈佛架构的区别介绍修改后的哈佛架构:

纯哈佛架构的缺点是必须提供一种机制,将负载与要执行的程序分离到指令存储器中,从而将任何要操作的数据都留在数据存储器中。

然而,现代系统现在对指令存储器使用只读技术,对同一存储器使用读/写技术。

这允许系统在通电后立即执行预加载的程序。

但是,数据将处于未知状态,因此它无法向程序提供任何预定义的值。

解决这个问题的方法是提供机器语言指令,以便指令存储器的内容可以像读取数据一样读取,并提供硬件路径。

现在大多数哈佛架构的采用都是一种修改形式,这是为了放松数据和代码之间的严格分离,同时仍然保持原始哈佛架构的高性能并发数据和指令访问。

修改后的哈佛架构是原始哈佛架构的变体。然而,它们两者之间的区别在于,修改后的架构允许将指令存储器的内容作为数据进行访问。

应用于哈佛架构的三个主要修改是:

拆分缓存架构: 与冯·诺依曼架构非常相似,此修改构建了一个内存层次结构,其中包含较低层次结构级别的指令和数据的 CPU 缓存。 指令存储器即数据架构: 这种修改允许将指令存储器的内容作为数据进行访问。这是可以携带的,因为数据不能直接作为指令执行。 (尽管对于这是否真的可以命名为“修改后的”哈佛架构存在争议) 数据存储器即指令架构: 执行从任何内存段获取的指令,这与哈佛架构不同,哈佛架构只能执行从程序内存段获取的指令。 摘要和事实

冯·诺依曼架构是 1940 年代使用的程控计算机的一大进步。这种计算机通过设置插入跳线和开关来编程,以在不同的功能集之间路由数据和控制信号。

而如今,大多数计算机系统共享相同的内存来存储数据和程序指令。

哈佛架构系统中的 CPU 能够同时获取数据和指令,因为该架构具有用于数据传输和指令获取的单独总线。

引用:

  1. http://www.computinghistory.org.uk/det/3665/John-von-Neumann/
  2. https://www.computerscience.gcse.guru/theory/von-neumann-architecture
  3. https://www.chinastor.cn/baike/computers/170524818830943.html
  4. https://en.wikipedia.org/wiki/Modified_Harvard_architecture
  5. https://www.edaboard.com/threads/harvard-vs-modified-harvard-architechture.111764/