计算机系统概论笔记-4-冯·诺依曼模型

由约翰·冯·诺伊曼于1946年提出的“冯·诺伊曼模型”(又称“冯·诺伊曼体系结构”)
4.1 基本部件
计算机的运行需要两个前提:
一是任务描述,即描述所要完成的任务,以程序或代码方式表述:
二是计算机本身的运行能力,因为它是任务的具体执行者。
程序是计算机指令的集合,每条指令对应计算机的一个基本动作。指令是程序的最小单位。
冯·诺伊曼模型包括5个组成部分:内存、处理单元、输入、输出、控制单元。
内存负责存放程序,控制单元负责指令的有序执行。

4.1.1 内存
访问内存的第一步是向内存提供被访问内存单元的地址
读:首先将被访问内存单元的地址放入CPU的内存地址寄存器(MAR):
然后发送读信号通知内存。内存将该单元的内容传送至内存数据寄存器(MDR)。
写:首先将被访问单元的地址放入MAR寄存器,然后将要写入的数据放入MDR寄存器,
最后向内存发送写信号,内存即将MDR的内容写入MAR指向的内存单元。

4.1.2 处理单元
信息真正被处理的地方。由很多功能单元组成,其中ALU是最简单的功能单元(也是冯诺伊曼模型中唯一的功能单元),
ALU是“算术逻辑运算单元”的缩写,包括基本运算和基本逻辑运算。
ALU所能处理的量化大小,通常被称为该计算机的“字长”,而量化的基本单位称为一个“字”。
通常会在ALU附近配置少量存储器,用来存放最近生成的中间计算结果。
例如:
计算(3+5)8,首先计算3+5,得到8,但在计算后面的8时还要再从内存中读取之前的结果,内存访问花费了太多时间。
所以配备了临时储存空间来存放3+5的结构,避免不必要的内存访问。
4.1.3 输入输出单元
信息能够被处理的前提是“将信息输入到计算机”,同样处理的结果也要输入到计算机外部展示。
我们称相关设备为输入输出设备。

4.1.3 控制单元
控制其他所有单元之间的协同工作。
在计算机程序执行的过程中,
它即负责控制程序执行过程的每一步,又负责控制其中每条指令执行过程的每一步。
控制单元有几个特殊的寄存器,一是用来保存正在被执行的指令的指令寄存器,
二是用来指示下一条待处理的指令的PC寄存器,它的实际内容是指向下一条待处理指令的地址。

4.2 LC-3:一台冯·诺伊曼机器
内存:包括存储单元,以及MAR和MDR寄存器。
MAR是16位宽度意味着LC-3的最大可寻址空间是2的16次方。
MDR也是16位,意味着LC-3的每个存储空间存储了16个bit的信息。

输入/输出:即键盘和显示器。
最简单的键盘需要两个寄存器;一是数据寄存器保存键入的ASCII码,二是状态寄存器保存键盘敲击时的状态信息。
最简单的显示器也需要两个相似的寄存器,一是数据寄存器保存要显示字符的ASCII码,二是状态寄存器保存相关的状态信息。
处理单元:包括1个算术逻辑运算单元和8个寄存器。

控制单元:包含所有与信息处理控制相关的结构。其中最重要的结构就是有限状态机。
运算或处理操作是一个接一个时钟周期有序操作的。
时钟输入CLK决定了每个时钟周期的长短,
指令寄存器IR输入决定了是怎样的处理流程,
程序计数器PC这个输入决定了下一个要执行指令的位置。

有限状态机的所有对外输出都是控制信号。

4.3 指令处理
冯·诺依曼模型的核心思想是:程序和数据都是以bit流的方式存放在计算机内存中,
程序在控制单元的控制下,依次完成指令的读取和执行。

4.3.1 指令
程序是计算机执行的最小单位。指令本身又由操作码和操作数两部分组成。
操作码表示该指令是干什么的,操作数表示该次操作的对象是哪些。
例如:ADD指令
15|14|13|12|11|10|9 |8 |7 |6 |5 |4 |3 |2 |1 |0
——|——|——|——|——|——|——|——|——|——|——|——|——|——|——|——————
0 | 0| 0| 0| 1|1 |1 |0 |0 |1 |0 |0 |0 |1 |1 |0
| | | |
——————————————|————————|————————|—————|————————————
ADD | R6 | R2 | | R6

	bit[15:12]=0001,代表ADD操作。
	bit[11:9]=110,代表目的寄存器R6。
	bit[8:6]=010,bit[2:0],分别代表源寄存器R2和R6.
	bit[5:3]先不解释,5.2节讲。
上述指令的编码解释为“将寄存器2(R2)和寄存器6(R6)的内容相加,然后将结果存回寄存器6(R6)”。

4.3.2 指令周期
指令的处理过程是在控制单元的控制下,精确地,一步一步地完成的。
这个执行的步骤顺序称为指令周期,其中每一步称为节拍,大多数计算机的节拍都设计成一个指令周期六个节拍。
这6个节拍是取指令、译码、地址计算、取操作数、执行、存放结果。
1.取指令
将PC寄存器的内容装入内存地址寄存器。
该地址对应的内存单元内容被装入内存数据寄存器。
控制单元将内存数据寄存器的内容装入IR寄存器,作为当前执行的指令。
修改PC寄存器的内容,使其指向下一条指令的地址。
2.译码
分析检查指令的类型,并确定对应的微结构操作细节。
3.地址计算
如果指令执行时存在地址计算操作,则应在此节拍完成。
4.取操作数
负责读取指令所需的源操作数。
5.执行
负责指令的执行操作,不同的操作码在该节拍的操作也多半不同。
6.存放结果
来自之前节拍的执行结果将被写入目的寄存器。

最后一个节拍完成后,控制单元复位指令周期,即从“取指令”节拍重新开始。
计算机是顺序执行的。

4.4 改变执行顺序
之前出现了两种类型的指令,运算指令和数据搬移指令。
下面介绍第三种,即控制指令,其作用是改变程序的执行顺序。
例如,如果我们希望循环执行一组指令,
如我们所知任意的指令周期都是从将PC寄存器的内容装载到内存地址寄存器开始的,
因此如果我们希望改变指令执行的顺序,
就必须在一条指令修改PC寄存器内容为下一条指令之后到下一条指令执行之前这段时间内修改PC寄存器的内容。
控制指令即在指令的执行节拍来修改PC寄存器的内容,覆盖之前取指令节拍时修改的值。
下一个周期开始时计算机从PC寄存器获得的地址是由控制指令在执行节拍换入的新地址值,
从而实现改变程序执行顺序的目的。
例如:LC-3的JMP指令,假设该指令存放在地址x36A2处。
1 1 0 0 | 0 | 0 0 | 0 1 1 | 0 0 0 0 0 0
JMP | | | R3 |
其中:
bit[15:12]=1100,代表JMP指令操作码。
bit[8:6]=011,代表R3寄存器,即其中存放了下一条指令地址的寄存器。
译码结果是:将R3寄存器的内容装入PC寄存器(在执行节拍)

指令周期的控制
	指令的执行受控于控制单元中的有限状态机

4.5 停机操作
终止“时钟”就终止了指令的执行。因为程序是一个周期一个周期的执行一些操作,停止时钟就停止了机器周期也就不会有之后的操作。
时钟信号发生器的主要部件是晶体振荡器,是一种压电类设备,即输入“电”转换出“压力”(产生振荡),
RUN锁存器的状态或输出如果是1,则时钟电路的输出和时钟信号发生器的输出一致,
RUN锁存器的状态或输出如果是0,则时钟电路和时钟信号发生器之间的通路被切断。

猜你喜欢

转载自blog.csdn.net/qdHbodHbp/article/details/91412186