计算机组成技术教程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第2章 电子计算机的基本结构

2.1 冯·诺依曼计算机模型

在ENIAC设计与研制的过程中,他们的设计者曾向冯·诺依曼进行过咨询。ENIAC投入使用后,冯·诺依曼曾亲自到现场参观,对 ENIAC 表现出强烈的兴趣。在对 ENIAC 存在的不足(ENIAC 是专用计算机,它的功能是由电路连线来决定的,改变功能需要人为地改变电路连线)进行深入思考的基础上,冯·诺依曼等人于1946年6月发表了一篇旨在构建一台通用计算机的技术报告《关于电子计算装置逻辑结构初探》。这份报告提出了基于“存储程序”控制的EDVAC的设计方案。

“存储程序”的思想是:计算机的用途和硬件完全分离;硬件结构采用固定性逻辑,提供某些固定不变的功能;通过编制不同的程序(软件)来满足不同用户对计算机的应用需求。

依照“存储程序”的思想,在计算机上求解一个问题需要事先将求解过程分解成一系列简单、机械、有序的计算步骤,一个步骤对应计算机提供的一个功能;然后将这些有序的计算步骤一一对应地翻译、转换成计算机能够识别并可执行的指令,一条计算机指令实现一个计算机功能;最后把这些有序的指令汇总在一起形成一个程序(Program),并将其存储在计算机中。计算机就是通过逐条、顺序执行程序中的指令来完成问题的求解。这一思想与巴贝奇“分析机”的设计思想类似。

“冯·诺依曼计算机”的特点如下:

(1)为了实现“存储程序”思想,“冯·诺依曼计算机”必须具备五大功能:数据传送、数据存储、数据处理、操作控制和操作判断。相应地,“冯·诺依曼计算机”被设计成由五个功能部件组成:存储器(Memory)、控制单元(Control Unit,CU)、算术逻辑运算单元(Arithmetic Logic Unit,ALU)、输入单元(Input Unit)和输出单元(Output Unit),各部分的操作及其相互之间的联系都要由控制单元集中控制,如图2-1所示。

图2-1 冯·诺依曼计算机结构

(2)存储器由一组一维排列、线性编址的存储单元组成,每个存储单元的位数是相等且固定的,存储单元按地址访问。这是最简单、最易于实现的信息存储与查找方案,就如同一幢大楼的房间都是同样大小,房间的查找是按照房间号进行。

(3)“程序”是由一条一条的指令有序排列而成,而指令由操作码和地址码两部分组成。操作码规定了该指令的操作类型,地址码指示存储操作数和运算结果的存储单元地址。操作数的数据类型由操作码来规定,操作数可能是定点数、浮点数、双精度浮点数、十进制数、逻辑数、字符或字符串等。

(4)指令和数据均采用二进制数表示,并以二进制数形式进行运算。所以指令也是由0, 1组成的二进制数。二进制数的计算规则最简单,加法仅有4种:0+0=0,0+1=1,1+0=1,1+1=10。

(5)程序(指令)与数据是同等地、不加区分地存储在同一个存储器中。这简化了计算机的控制与组成。

(6)为了实现“逐条、顺序执行程序中指令”,冯·诺依曼提出了一个极易实现的解决方案:设置一个“程序计数器(Program Counter,PC)”来指示下一条将要执行的指令的地址。一般情况下,每执行完一条指令,程序计数器就自动加1指向下一条指令的存储单元。

当然为了赋予计算机更多的“灵性”,这个“程序计数器PC”中的值可以通过执行特殊的指令来修改,从而达到改变指令执行顺序的目的。这样,计算机执行指令的顺序就不必受限于指令存储的顺序了。

不过,尽管冯·诺依曼非常聪明,但冯·诺依曼计算机的结构还是存在一些问题,后来人们对它进行了改进和发展。

例如,由于以运算器为中心,输入/输出单元与存储器之间的数据传送都要经由运算单元,这使得运算单元无法专注于运算,低速的输入/输出和高速的运算不得不相互等待,串行工作。因此,很快“冯·诺依曼计算机”就被改进成以存储器为中心,如图 2-2 所示。这样,输入/输出设备就可以与运算器并行工作,输入设备也可与输出设备并行工作,提高了设备的效率和利用率,同时也使得电子计算机五个功能单元的互连更加简单。

图2-2 现代冯·诺依曼计算机结构

但是无论如何,冯·诺依曼计算机结构经历60多年,依然占据统治地位。这是为什么呢?

说到底,冯·诺依曼的最大贡献就是确定了计算机五个部件的互连结构。考虑到算术逻辑单元既需要从存储器中读取数据又需要将运算结果写回到存储器,请读者自行设计一个计算机五个部件的互连结构,看看能否比图2-2更简单。

抽象地描述,“冯·诺依曼计算机结构”就是“以一个部件为中心,实现五个部件互连的星形结构”。这样实现的“五个部件互连”是最简单的、连接链路是最少的。由于外围的4个部件只能与中心部件进行数据通信,而且有些数据通路还是单向的,进而冯·诺依曼计算机所需要的数据传送功能也是最少和最简单的。

综上所述,“冯·诺依曼计算机”可以概括为:用最简单、最易于实现的思想(二进制及其运算规则)来表示数据并实现运算,用最简单的互连结构来组成一台计算机。它很好地体现了“简单就是美”的工程哲学理念!