cpu - 冯诺依曼架构,这还适用吗

标签 cpu bus von-neumann

阅读维基百科上关于 Von Neumann Architecture 的文章,它说以下内容

The meaning of the term has evolved to mean a stored-program computer in which an instruction fetch and a data operation cannot occur at the same time because they share a common bus. This is referred to as the Von Neumann bottleneck and often limits the performance of the system.

这里说冯·诺依曼架构术语指的是这样的想法:取指令和数据操作不能同时发生,因为它们需要相同的总线。

我的问题是,现代计算机系统上仍然是这种情况吗?我们是否仍然只有一根总线来获取指令和进行数据操作(猜测这主要是数据读/写)?

最佳答案

几乎所有现代机器都可以同时获取指令和数据。它们通常具有单独的指令和数据缓存。

但是,它们几乎总是在某些时候将指令和数据放置在高速缓存之外的同一外部存储器中。通常是 DRAM。

有人可能会说,现代机器有哈佛(指令和数据分离,冯·诺依曼的有力竞争对手)缓存架构,但有冯·诺依曼(指令和数据在同一内存中)内存架构。

我认为维基百科文章中提到的共享巴士是假的。在计算机架构/处理器设计圈中,冯·诺依曼现在倾向于引用程序计数器(PC)的概念,或者用英特尔的话说,指令指针(IP)的概念,即通过程序的定序器,其中概念上每个处理器都是一次执行一条指令。与诸如数据流机器之类的东西相反,其中没有程序计数器的真正概念。顺便说一句,现代无序微处理器(例如我所研究的微处理器)是内部微数据流机器,但对程序员来说似乎是带有单个程序计数器的冯·诺依曼机器。

关于cpu - 冯诺依曼架构,这还适用吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9772252/

相关文章:

architecture - 冯·诺依曼架构有何优点?

java - JVM 和冯诺依曼架构

java - Android服务应用——CPU监控

usb - 在 OSI 模型中对 USB 协议(protocol)进行分类

android - 绘制巴士路线到谷歌地图

Python PIL ImageTk.PhotoImage() 给我一个总线错误?

cpu - 如何判断我的计算机是哈佛架构还是冯诺依曼架构?

linux - 在单核上运行的进程的多个实例

linux - 如何计算 nice cpu 百分比,例如在顶部?

c - 如果一个单词截断一个 int 会发生什么?