- Objective:
- Breadcrumb:
# 概念阐释
冯·诺依曼架构(Von Neumann Architecture)是一种经典的计算机设计模型,由约翰·冯·诺依曼(John von Neumann)在1945年提出,至今仍然是主流[[通用计算机]]的设计架构。
这种设计主要包括:
- **计算和存储的关系**:分离
- **存储程序**:将**程序与数据**存储在同一个存储器中。计算机可以通过改变存储器中的内容来执行不同的程序。
- [[CPU 中央处理器]]:计算机的大脑,负责执行程序指令。CPU 包含以下部分:
- 算数逻辑单元:执行算术和逻辑运算
- 控制单元:解释指令,并控制其他硬件组件执行指令
- 寄存器:用于存储临时数据和指令地址
- **存储器**:存储器用于存放程序指令和数据。根据存储方式和用途,存储器可以分为主存(如RAM)和辅存(如硬盘)。
- 输入输出设备 I/O:用于与外部交互的设备,如鼠标、键盘、显示器、打印机。
- **[[Bus 总线]]**:连接 CPU、存储器和 I/O 设备的通信通道,用于传输数据、地址和控制信号。
# 实例
## 存储程序
假设我们有一台基于冯·诺依曼架构的计算机,存储器中存储了两个不同的程序:一个是文本编辑器程序,另一个是计算器程序。存储器的布局如下:
1. **存储器内容:**
- 地址 0x0000 - 0x0FFF:文本编辑器程序代码
- 地址 0x1000 - 0x1FFF:计算器程序代码
- 地址 0x2000 - 0x2FFF:共享数据区(用于存储程序运行时的数据)
### 使用文本编辑器程序
当我们启动文本编辑器程序时,计算机会执行以下操作:
1. **取指令(Fetch)**:从地址 0x0000 开始,CPU 读取文本编辑器程序的指令。
2. **解释指令(Decode)**:控制单元解释指令,确定需要执行的操作。
3. **执行指令(Execute)**:CPU 执行文本编辑器程序的指令,如显示文本、处理用户输入、保存文件等。
4. **存储数据(Store)**:在运行过程中,文本编辑器程序可能会将数据存储到共享数据区,如用户输入的文本内容。
### 切换到计算器程序
当我们关闭文本编辑器并启动计算器程序时,计算机会执行以下操作:
1. **取指令(Fetch)**:从地址 0x1000 开始,CPU 读取计算器程序的指令。
2. **解释指令(Decode)**:控制单元解释指令,确定需要执行的操作。
3. **执行指令(Execute)**:CPU 执行计算器程序的指令,如处理数学运算、显示计算结果等。
4. **存储数据(Store)**:在运行过程中,计算器程序可能会将数据存储到共享数据区,如用户输入的计算表达式和计算结果。
### 说明
通过上述示例,我们可以看到:
- **程序存储在同一存储器中**:文本编辑器程序和计算器程序都存储在同一个存储器中,但它们位于不同的地址区域。
- **数据存储在同一存储器中**:无论是文本编辑器还是计算器,运行时生成的数据都存储在共享数据区中。
- **程序的灵活性**:计算机可以通过改变存储器中的内容来执行不同的程序。例如,关闭文本编辑器并启动计算器,无需更改硬件,只需改变存储器中被访问的程序代码区域。
# 相关内容
## 工作过程
冯·诺依曼架构的主要工作过程如下:
1. **取指令(Fetch)**:从存储器中读取下一条指令到CPU的指令寄存器中。
2. **解释指令(Decode)**:控制单元解释指令并确定需要执行的操作。
3. **执行指令(Execute)**:ALU执行指令所要求的操作,如算术运算、逻辑运算或数据传输。
4. **存储结果(Store)**:将运算结果存储到适当的位置,如寄存器或存储器中。
# 参考资料