1.4-计算机结构的简化模型
为了掌握计算机的内部结构,我们要先来构建一个计算机的简化模型。这个模型能够体现计算机内部的关键之处。又足够的简单,便于理解。
这个冯诺依曼结构的餐馆,我们已经非常熟悉了。我们都可以根据这个餐馆的结构几乎一一对应的来构造出我们的计算机结构的模型。这个计算机结构的简化模型我们又称之为模型机。目前包含了CPU和存储器两大布局,中间通过系统总线相连。系统总线又被细化为控制总线、地址总线和数据总线三个部分。CPU和存储器内部各有相应的结构。
我们现在就来逐个部件的说明这个模型机是如何构建的。首先来看存储器。在设计计算机时要确定存储器的编制方式。如果存储器按字节编制,那每一个存储单元就能存放八位的二进制数。而且每个存储单元的地址是唯一的。CPU要想访问某个存储单元,必须要通过地址总线给出相应的地址,因此如果地址总线的宽度为N,则CPU能管理的存储单元数最多为2的N次方个,假设地址总线的宽度为32位,那么CPU能管理的存储单元数就是2的32次方,就是4G。CPU发来的地址将会存放在存储器地址寄存器,简称为MAR。那CPU要读写的数据则会通过数据总线传送,数据总线的宽度一般为存储单元位宽的整数倍,对应的数据则会放在一个被称为存储器数据寄存器,简称为MDR的结构中,最后控制总线与存储器当中的控制总机相连,用于接受来自于CPU的读写信号或者向CPU反馈传输已经完成的信号。
我们再来看模型机的CPU。首先来看其中的控制器,控制器是用于控制计算机各个部件完成取指令分析指令执行指令等功能。在我们的模型机中主要包含如下的部分我们逐个来进行分析。首先是指令寄存器,简称为IR。用于存放正在执行或者即将执行的指令。这个指令时从存储器中取来的。那么暂时存放在这个寄存器里头。程序计数器PC用于存放下一条指令的存储单元地址,我们还记得在餐馆那个例子中厨师要去取下一张任务单的时候就会检查他下一张任务单的位置,那么其实对应的就是这个计算机的功能。那么在取完下一条指令之后呢这个程序计数器需要自动递增以指向接下来那一条指令的地址,那么CPU当中也有访存相关的寄存器,访问存储器的地址,存放在MAR寄存器中,用于写到存储器或者从存储器读回的数据在MDR寄存器中。指令译码部件则是用于对IR也就是指令寄存器当中的指令进行译码,以确定其中存放的是哪一条指令。当确定了是哪条指令之后,控制电路就可以产生对应的控制信号,这些控制信号在持续脉冲的同步下去控制CPU当中各个控制部件的动作。
然后我们来看模型机的运算器。运算器顾名思义是用来完成运算的。运算主要可分为算术运算和逻辑运算,常见最基本的算术运算就是加法和减法。稍微复杂一些还有乘法和除法等等。那常见的逻辑运算包括非、与、或等等。运算器主要有如下的部件构成。其核心部分是ALU,也就是算数逻辑单元的简称。它用于完成算数运算和逻辑运算,我们从图中可以看出这个ALU有两个输入,一个输出,比如我们要完成一个加法,那么加法的两个操作数也就是被加数和加数非标从A端口和B端口输入,经过ALU计算后,将加法的运算结果送到输出端口,为了便与描述,我们将ALU的输入和输出分别设置了暂时保存数据用的计时器。分别记为X,Y和Z。也就说ALU将会对X和Y所保存的数据进行控制器所指定的运算并将结果输送到Z,此外,ALU在运算时还会产生相应的状态,比如这个运算的结果是否产生进位,是否会有溢出等等。那这样的运算结果的状态会保存在F这个寄存器,F是标志的简称。那运算器所要运算的数据实际是从存储器来的。但是不能每一次运算都去存储器取数。这样的话效率就太低了。所以有一些常用的数需要提前从存储器中取出来。那我们就需要在运算器中有临时存放这些数的部件。这就是通用寄存器。在我们的模型机中设置了N个通用寄存器,其编号从R0一直到RN-1,通用寄存器当中的数据可以来自于存储器,也可以来自于其他通用寄存器。或者来自于ALU的输出,也就说我们可以在两个不同的通用寄存器之间传递数据,也可以在ALU和通用寄存器之间传递数据。
在通用寄存器和ALU已经刚才提到的控制器当中的若干寄存器之间要传递数据的话,就必须要经过CPU的内部总线。内部总线是用于在CPU内部跟各个部件之间传递数据的装置。我们举一个例子。例如我们需要将数据从R0传送到RX,也就是可能为下一次运算进行准备,那么数据会通过内部总线从R0传到了X,那么所谓这个传送的过程指的是什么呢?在之后我们具体讲电路实现的时候会为大家详细解释,在这里为了便于理解,我先为大家打一个比方,如果我们把内部总线看作是输水的水管的话,那我们可以把这些通用寄存器等部件看作是蓄水的水池,比如在这个例子中我们要从R0传送数据到X,R0和X都可以看做两个蓄水池,它们分别有自己的进水口和出水口,那么R0我们看它有个双向的箭头,证明它既可以输入又可以输出,所以它既有进水口又有出水口。而X就一个单向的箭头,说明它只有进水口没有出水口,因为我们知道X和Y作为ALU的数据输入的临时寄存器的,所以它不需要输出。从R0传送数据到X,我们可以理解成在控制电路的控制下,将R0的出水管打开,再将X的入水管打开,与此同时将其他所有部件的出水管和入水管都关闭,这样R0里面保存的数据就像水流一样,经过了内部总线会留到了X当中,那么经过一段时间之后,X中所保存的数就跟R0当中的数一样了。这个我们就可以用来形象的理解,从R0传送输入到X,这就是内部总线的作用。
那这样, 我们这个计算机结构的简化模型就构造完成了。现在我们已经构建完成了这个模型机的核心部分,想要了解这个静态的结构,一个有效的方法 是观察其动态的运行过程。下一节我们就来一起分析模型机是如何运行的。
Reference:北京大学陆俊林老师计算机组成原理课程
Notice:如有侵权,请告知我,我会删除,谢谢!