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

Rex*_*uan 5 computer-architecture

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

那么现代计算机会以这种方式执行代码吗?

Pau*_*ton 6

在架构上,即就软件所见而言,现代处理器使用串行冯诺依曼模型。然而,大多数高性能处理器使用乱序执行,这允许以非串行方式执行操作,但它们的效果按程序顺序提交

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

一个数据流架构不执行程序顺序,但尺度依赖性处理硬件问题(甚至现代高性能乱序处理器具有哪些候选操作被调度小于100个操作的运行窗口),并确保正确性(特别是形式方法不太常见的软件)也很困难。为了感受设计,每个操作都被视为一个单独的线程,一旦其源操作数可用就可以开始执行,并且可以在操作完成后立即提交其结果(允许操作仅等待该结果开始执行)。在机器语言级别,这可以被视为终极多线程意大利面条式代码。

使用乱序执行的处理器类似于运行中的数据流架构,但具有有限的执行窗口和保证在同一执行线程内的结果的有序可见性。(较弱的内存一致性模型将允许结果以非严格顺序的顺序对其他处理器可见。)