现代计算机是基于冯诺依曼模型的吗?

现代计算机是基于冯诺依曼模型的吗?

我在《计算机科学基础》(Behrouz A. Forouzan 著)教科书中读到,冯·诺依曼模型的程序必须按顺序执行,现代计算机按最有效的顺序执行代码。但它没有提到冯·诺依曼顺序方法最有效率。

那么现代计算机也是这样执行代码的吗?

答案1

从架构上看,即就软件所见而言,现代处理器使用串行冯·诺依曼模型。然而,大多数高性能处理器使用无序执行,它允许操作以非串行方式执行,但其效果是坚定的按程序顺序。

(一些早期的顺序处理器存在不精确的异常,这是由于操作开始按顺序执行但结果在可用时才提交所致。这意味着,在较长延迟操作(例如浮点乘法)之后进行的较短延迟操作(例如整数加法)可以在较长延迟操作完成之前将其结果写入寄存器。如果在较长延迟操作完成之前发生中断或异常,则程序状态将不一致。)

A数据流架构不按顺序执行程序,但扩展依赖性处理硬件存在问题(即使是现代高性能无序处理器也有执行窗口,从中可以安排少于 100 个操作的候选操作),并且确保正确性(特别是对于形式化方法不太常见的软件)也很困难。为了了解设计,每个操作都被视为一个单独的线程,可以在其源操作数可用时立即开始执行,并且可以在操作完成后立即提交其结果(允许操作只等待该结果才开始执行)。在机器语言级别,这可以被视为最终的多线程意大利面条代码。

使用无序执行的处理器在操作上类似于数据流架构,但执行窗口有限,并保证在同一执行线程内按顺序显示结果。(较弱的内存一致性模型将允许结果以非严格连续的顺序对其他处理器可见。)

答案2

冯·诺依曼架构和哈佛架构之间的主要区别在于,哈佛架构将数据和程序内存分开。如今的 PC 使用共享内存,尽管某些内存区域可能被标记为不可执行,但它们使用相同的数据总线。因此从这个角度来看,PC 架构绝对是冯·诺依曼架构。

然而,台式电脑的现代处理器会根据效率重新排序指令,但据我所知,这不是冯诺依曼架构的关键点。

答案3

冯·诺依曼模型的程序必须按顺序执行

现代计算机按照最有效的顺序执行代码。

现代通用 CPU 仍然消耗单个指令流(无论如何每个逻辑 CPU),而 Intel/AMD CPU 会在内部重新排序操作(特别是慢速内存操作)以提高性能,但只有在不会影响指令流结果时才会这样做。

因此现代 CPU 仍然按顺序工作 - 我猜对此的官方“解决方法”是引入逻辑 CPU - 英特尔的超线程技术允许许多操作重叠并同时发生,并且它向指令流呈现的接口是第二个逻辑 CPU。

但它并没有说冯诺依曼顺序方法就是最有效的。

好吧,随着计算机成为媒体设备,如果 CPU 必须处理大量数据,但执行简单的操作不需要做大量决策,那么纯顺序方法就不够高效。因此,引入了 SIMD 指令,允许 CPU 在一个周期内加载一堆值并对所有值执行操作。当然,GPU 的工作方式不同,它有许多“核心”,可以并行对大量数据执行简单的数学运算。

答案4

现代计算机尚未摆脱冯·诺依曼瓶颈。即使我们在超级并行阵列中使用数千个 CPU,它们仍将各自采用 ALU 的原理,因此它们仍然在很大程度上基于相同的概念。通过创建多个并行瓶颈,我们可以缓解这个问题,但各个构建块基本上是相同的。

相关内容