计算机组成原理 21世纪高校计算机应用技术系列规划教材 谭浩强 主编 作者:宋红 中国铁道出版社 http://www.tqbooks.net
目 录 第1章:计算机系统概论 第2章:数据表示方法及其部件 第3章:指令系统 第4章:存储系统 第5章:中央处理器 第6章:外部设备 目 录 第1章:计算机系统概论 第2章:数据表示方法及其部件 第3章:指令系统 第4章:存储系统 第5章:中央处理器 第6章:外部设备 第7章:输入输出系统 第8章:计算机系统结构 参考文献
第一章 计算机系统概论 1-1 计算机的发展简史 1-2 计算机的分类和应用 1-3 计算机的硬件和软件 1-4 计算机系统结构 3
1-1 计算机的发展简史 电子计算机是一个统称,实际上它被明确地分两大类:“电子模拟计算机”和“电子数字计算机”。前者是使用连续变化的物理量(例如电流、电压等)来表示数值的大小并参加机内运算,其运算结果自然也是连续变化的物理量;后者是将运算对象数字化成为离散的数字量,用数码进行运算,其运算结果也是离散的数字信息,它运算速度快、运算精度高,现代人们所说的“电子计算机”或“计算机”,都是指“电子数字计算机”,也是本书讨论的对象。
电子计算机的发展,如果从第一台计算机的问世算起,到现在半个多世纪,在人类科技史上还没有一种学科的发展速度可以与电子计算机的发展速度相提并论。 20世纪40年代,无线电技术和无线电工业的发展为电子计算机的研制准备了物质基础,1943年~1946年美国宾夕法尼亚大学研制的电子数字积分和计算机ENIAC(Electronic Numerical Integrator And Computer)是世界上第一台电子计算机。ENIAC计算机共用18000多个电子管,1500个继电器,重达30吨,占地170平方米,耗电140千瓦,每秒钟能计算 5000次加法,研制人是埃克特(J.P.Eckert)和莫克利(J.W.Mauchly)。ENIAC计算机存在两个主要缺点,一是存储容量太小,只能存20个字长为10位的十进制数,二是用线路连接的方法来编排程序,
因此每次解题都要依靠人工改接连线,准备时间大大超过实际计算时间。 在ENIAC计算机研制的同时,冯·诺依曼(Von Neumann)与莫克利、埃克特小组合作研制EDVAC计算机,在这台计算机中确立了计算机的五个基本部件:输入器、输出器、运算器、存储器、控制器。程序和数据存放在存储器中,并采用了二进制,确立了存储程序的原则。现代的一般计算机被称作冯·诺依曼结构计算机。 第一代: 电子管计算机时代(从1946年第一台计算机研制成功到五十年代后期),将电子管、继电器和存储器用绝缘导线互连在一起,由单个CPU构成,CPU用程序计数器和累加器顺序完成定点运算,采用机器语言或汇编语言,用CPU程序控制I/O。其主要特点是采用电子管作为基本器件。
代表性系统有由John von Neumann,AnhurBurks和HermanGoldstine于1946年在普林斯顿大学研制成功的IAS计算机、由宾夕法尼亚大学莫尔学院于1950年制成的ENIAC、由IBM于1953年制造的IBM701计算机。 第二代:晶体管计算机时代(1955~1964),采用分立式晶体三极管、二极管和铁氧体的磁芯,用印刷电路将它们互连起来。采用了变址寄存器、浮点运算、多路存储器和I/O处理机。采用有编译程序的高级语言、子程序库、批处理监控程序。这时期计算机的主要器件逐步由电子管改为晶体管,因而缩小了体积,降低了功耗,提高了速度和可靠性。而且价格不断下降。后来又采用了磁心存储器,使速度得到进一步提高。代表性系统有1959年制成的UnivacI。ARC、60年代的CDCl604和1962年制成的IBM7030。1969年1月制成的超大型计算机CDC 7600,速度达到每秒千万次浮点运算,是这一时期设计最成功的产品。
第三代:集成电路计算机时代(1965—1974),采用小规模或中规模集成电路和多层印刷电路。采用了流水线、高速缓存和并行处理机。软件方面采用多道程序设计和分时操作系统。这时期的计算机采用集成电路作为基本器件,因此功耗,体积,价格等进一步下降,而速度及可靠性相应地提高,这就促使了计算机的应用范围进一步扩大。正是由于集成电路成本的迅速下降,产生了成本低而功能不是太强的小型计算机供应市场,占领了许多数据处理的应用领域。代表性系统有IBM/360—370系列、CDC6600/7600系列、Texas仪表公司的ASC和Digital Equipment公司的PDP—8系列。IBM360系统是最早采用集成电路的通用计算机,也是影响最大的第三代计算机。它的主要特点是通用化,系列化、标准化。
通用化:指令系统丰富,兼顾科学计算、数据处理、实时控制三个方面。 系列化:IBM360各档机器采用相同的系统结构,即在指令系统、数据格式,字符编码、中断系统、控制方式、输入/输出操作方式等方面保持统一,从而保证了程序兼容,当用户更新机器时原来在低档机上编写的程序可以不作修改就使用在高档机上。IBM360系统后来陆续增加的几种型号仍保持与前面的产品兼容。后来,西欧与日本的一些通用计算机也保持与IBM360系统兼容。苏联和东欧国家联合制造的“统一系统”也是与IBM360系统兼容的。 标准化:采用标准的输入/输出接口,因而各个机型的外部设备是通用的。采用积木式结构设计,除了各个型号的CPU独立设计以外,存储器、外部设备都采用标准部件组装。
第四代:大规模集成电路计算机时代(1974—1991),采用大规模或超大规模集成电路和半导体存储器,出现了用共享存储器、分布存储器或向量硬件选择的不同结构的并行计算机,开发了用于并行处理的多处理操作系统、专用语言和编译器,同时产生了用于并行处理或分布处理的软件工具和环境。七十年代初,半导体存储器问世,迅速取代了磁心存储器,并不断向大容量、高速度发展,此后,大体上集成度每三年翻两番(1971年每片1K位,到1984年达到每片256K位),价格平均每年下降30%。逻辑电路也得到相应的发展。 随着大规模集成电路的迅速发展,计算机进入大发展时期,通用机、巨型机,小型机、微型机都得到了发展。
1. 通用机 通用机是计算机工业中价值比重最大的产品,其中以IBM 370系统影响最大,它在与IBM 360系统兼容的前提下进行了改进。IBM公司为开发360系统的软件耗费了巨大的人力和财力,1982年宣布的IBM 3084K大型通用机速度达到每秒2500万次,主存容量为64兆字节。其他计算机厂家在发展新机种时也遵循兼容的原则。某些计算机厂家走上与IBM计算机兼容的道路,称之为PCM:Plug Compatible Mainframe(插接兼容主机)或Program Compltible Mainframe(程序兼容主机),制造与IBM兼容的计算机,它们按IBM系列机的系统结构制造主机,并直接引用IBM计算机的软件,因而使产品的性能价格比优于IBM原装机,以争夺市场。
2. 巨型机 现代科学技术,尤其是国防技术的发展,需要有很高运算速度,很大存储容量的计算机,一般的大型通用计算机不能满足要求。集成电路的进展,为制造巨型机提供了条件。从60年代到70年代相继完成了一些巨型机,其中取得最高成绩的要推Cray—1计算机。针对天气预报、飞行器的设计和核物理研究中存在大量向量运算的特点, Cray—1计算机的向量运算速度达每秒8000万次,并兼顾了一般的标量运算。1983年研制成功的CrayX—MP机向量运算速度达每秒4亿次。与此同时,CDC公司的CYBER 203和205先后完成,CYBER205每秒可进行4亿次浮点运算。这些是80年代初期的水平最高的巨型机。但是这些成就还不能满足一些复杂问题的需要,所以不少单位开展了性能更高的巨型机的研究工作。日本、英国、苏联,法国也先后开始研制巨型机。
3. 小型机 小型机规模小,结构简单所以设计试制周期短,便于及时采用先进工艺,生产量大,硬件成本低,同时由于软件比大型机简单,所以软件成本也低。再加上容易操作,容易维护和可靠性高等特点,使得管理机器和编制程序都比较简单,因而得以迅速推广,掀起一个计算机普及应用的浪潮。DEC公司的PDP—11系列是16位小型机的代表,到70年代中期32位高档小型机开始兴起,DEC公司的VAXll/780于1978年开始生产,应用极为广泛。VAXll系列与PDPIl系列是兼容的。小型机的出现打开了在控制领域应用计算机的局面,许多大型分析仪器,测量仪器,医疗仪器使用小型机进行数据采集,整理、分析、计算等。应用于工业生产上的计算机除了进行上述工作外还可进行自动控制。
4. 微型机 微型机的出现与发展,掀起计算机大普及的浪潮。利用4位微处理器Intel 4004组成的MCS—4是世界上第一台微型机,于1971年问世。Intel 8086是最早开发成功的十六位微处理器(1978年),Intel80286、80386与8086兼容。1981年以后32位微处理器相继问世,70年代后期,兴起个人计算机(一种独立微型机系统)热潮,最早出现的是Apple公司的AppleⅡ型微机(1977年),此后各种型号的个人计算机纷纷出现。1981年一向以生产大中型通用机为主的IBM公司推出了IBM PC机,后来又推出扩充了性能的IBM PC/XT,IBM PC/AT机,由于具有设计先进、软件丰富,功能齐全、价格便宜等特点,很快成为微型机市场主流。国内外不少厂家相继生产了与IBM PC兼容的个人计算机。低档的个人计算机可供家庭娱乐和业余爱好者使用,高档的用于经营管理、科学计算以及教育等方面。
第五代:(1991~现在)采用超大规模集成电路(VLSI)工艺更加完善的高密度、高速度处理机和存储器芯片。它的最重要特点是进行大规模并行处理,采用可扩展的和允许时延的系统结构。第五代计算机具有:智能接口功能:能识别自然语言(文字、语音)、图形、图象;解题和推理功能:根据自身存储的知识进行推理,求解问题。知识库管理功能:计算机内存储大量知识,可供检索。代表性系统有Fujitsu的VPP500、Cray Research的MPP、Thinking Machines公司的CM—5、Intel超级计算机系统Paragon、SGI的Origin 2000和Sun公司的10000服务器。
随同计算机硬件发展的还有软件,应该指出,发挥计算机的作用,推广计算机的应用,改进计算机的设计以及简化计算机的操作,使它从只供专家使用转为面向大众,软件工作者起了决定性的作用。系统软件不断完善、升级,操作系统自动地管理计算机系统中各个设备以及多个程序的高效运行,是第三代计算机时期的重大成就。 广泛应用计算机的结果,计算机厂家向用户提供软件(系统软件和应用软件)时与硬件分别计价,并产生了专门从事软件研制、生产、销售工作的软件公司。但是软件的发展跟不上需要,软件费用急剧增长,这是因为硬件是工业化生产,价格不断下降,而软件为人工劳动,生产率低,可靠性不高。
1-2 计算机的分类和应用 1.2.1 计算机的分类 电子计算机从总体上来说分为两大类。一类是电子模拟计算机。模拟计算机的特点是数值由连续量来表示,运算过程也是连续的。模拟计算机用电压表示数据,电压组合和测量值用来计算,盘上连线用来控制,精度低,数据存储量小,没有逻辑判断能力。 另一类是电子数字计算机,数字计算机的主要特点是按位运算,并且不连续地跳动计算。数字计算机数据表示是0和1,用数字计数,用程序控制,精度高,数据存储量大,有较强的逻辑判断能力。 电子模拟计算机由于精度和解题能力都有限,所以应用范围较小。电子数字计算机则与模拟计算机不同,它是以近似于人类的“思维过程”来进行工作的,所以有人把它叫做电脑。
数字计算机进一步又可分为专用计算机和通用计算机。专用和通用是根据计算机的效率、速度、价格、运行的经济性和适应性来划分的。专用机是最有效、最经济和最快速的计算机,但是它的适应性很差。通用计算机适应范围很大,但是牺牲了效率、速度和经济性。 通用计算机又可分巨型机、大型机、中型机、小型机、微型机和单片机六类,它们的区别在于指令系统规模、性能指标、数据存储容量、体积、简易性、功率损耗和机器价格,见图1-1。
图1-1 各种机型的区别
1.2.2 计算机的应用 随着计算机技术的迅猛发展,计算机的应用范围在不断地扩大,从国民经济各部门到个人家庭生活,从军事部门到民用部门,从科学教育到文化艺术,从生产领域到消费娱乐,小到电子手表、儿童玩具,大到卫星、导弹的发射,应该说计算机已经渗透到国民经济的各个部门,是否使用计算机已经成为各单位或部门技术应用水平高低的重要标志。下面从几个主要方面简述计算机的应用领域。 1.科学计算 科学研究和工程技术计算领域,是计算机应用最早的领域,也是应用得较广泛的领域。例如数学、化学、原子能物理学、天文学、地球物理学、生物学等基础科学的研究,以及航天飞行、飞机设计、桥梁设计、水力发电、地质找矿等方面的大量计算都要用到计算机。
例如导弹或卫星的发射,必须精确地计算其运行轨道和目标,24小时天气预报,用手摇计算器进行计算需要几个星期,改用高速计算机则只需要几个小时或更短时间;生命科学中为测定胰岛素的晶体结构,需要进行大量的、高精度的复杂运算,只有采用高速计算机才成为可能。 2.数据处理方面 计算机发展初期,它仅仅用于数值计算。但是后来应用范围逐渐发展到非数值计算领域,可用来处理文字、表格、图像、声音等各类问题。因此,确切地讲,计算机应当称为信息机,或叫信息处理机。信息处理的范围相当广泛。网络就是计算机!正因为如此,这一领域由于internet的广泛应用,所占的比例也最大,带来的各种效益也十分明显。
3.计算机控制 在现代化工厂里,计算机普遍用于生产过程的自动控制,对于减轻工人的劳动强度,改善工人的工作环境,提高产品质量和生产效率能起到很好的作用。一般来说是计算机根据给定的数据实时地对生产过程实现自动化控制,因此又被称做“过程控制”。各种类型的程控机床的推出,对于提高产品精度和合格率是任何人工所不可能达到的。用于生产过程自动控制的计算机,一般都是实时控制,它们对计算机的速度要求不高,但可靠性要求很高,否则将生产出不合格的产品,甚至造成重大设备事故或人身事故。用于控制的计算机,其输入信息往往是电压,温度,机械位置等模拟量,要先将它们转换成数字量,然后计算机才能进行处理或计算。当从被控制对象测量到的信息是温度、位置等非电量时,要将它们转换成电量,然后再转换成数字量。如何测量,用什么仪表测量也是一个很重要的问题。计算机的处理结果是数字量,一般要将它们转换成模拟量去控制对象,。
4.计算机辅助设计/计算机辅助制造(CAD/CAM) 由于计算机有快速的数值计算、较强的数据处理以及模拟的能力,因而目前在飞机、船舶、光学仪器、超大规模集成电路VLSI等的设计制造过程中,CAD/CAM 占据着越来越重要的地位。 在超大规模集成电路的设计和生产过程中,要经过设计制图、照相制版、光刻、扩散、内部连接等多道复杂工序,是人工难以完成的。使用已有的计算机辅助设计新的计算机,达到设计自动化或半自动化程度,从而减轻人的劳动强度并提高设计质量,这也是计算机辅助设计的一项重要内容。 由于设计工作与图形分不开,一般供辅助设计用的计算机配备有图形显示、绘图仪等设备以及图形语言、图形软件等。设计人员可借助这些专用软件和输入输出设备把设计要求或方案输入计算机,通过相应的应用程序进行计算处理后把结果显示出来,设计人员可用光笔或鼠标器进行修改或选择,直到满意为止。
近些年来,伴随着CAD技术的推广,计算机辅助设计出现了许多新的分支。例如,计算机辅助制造(CAM),计算机辅助测试(CAT),计算机辅助教学(CAl)等均属于计算机辅助设计的范畴。国家教育部明确指示,学校要将CAI引入教学领域,促进教学内容、教学体制、教学思想和教学方法的改革,要改变传统的“一支粉笔、一块黑板”的教学模式,把教学水平推上一个新的台阶,努力实现教学手段的现代化。尤其是近年来,网上大学问世,各种不同规模、不同类型的教学课件在网上大显神通,教学体制将产生重大改革,不能说这不是计算机的功劳。 5.人工智能 人类的许多脑力劳动,诸如证明数学定理、进行常识性推理,理解自然语言,诊断疾病、下棋游戏、破译密码等都需要“智能”。人工智能是将人脑在进行演绎推理的思维过程、规则和所采取的策略、技巧等编成计算机程序,在计算机中存储一些公理和推理规则,然后让机器去自动探索解题的方法,所以这种程序不同于计算机的一般应用程序。人工智能的研究课题是多种多样的,诸如计算机学习、计算机证明、景物分析、模拟人的思维过程、机器人等等,内容很多。
以下棋为例,如果程序人员把走棋子的法则编成程序存入计算机,计算机就可以按规则走动棋子,与人对弈。下棋的结果,计算机可能输了,第二次再下,当人的走法不变时,计算机就再输一次。但是如果我们从方法和程序上研究一种新的手段,使计算机下棋输了一次以后它能进行自学习、自组织、自积累经验,那么下次再下棋时就不会重犯上次的错误,这就是人工智能所研究的课题。 智能机器人是人工智能各种研究课题的综合产物,有感知和理解周围环境、进行推理和操纵工具的能力,并能通过学习适应周围环境,完成某种动作。在不允许人进入的场所(如高温、有放射性物质等)使用机器人有特殊的意义。 人工智能研究中最有成就的要算“机器人”。目前世界上有大量的“工业机器人”在生产线上或在高温、有毒、辐射、深水等环境下工作。尽管它们只做一些非常简单的事情,但是任务完成得非常出色。现在,又出现了比“工业机器人”更高明的“智能机器人”,它会自己识别控制对象和工作环境,作出判断和决策,直接领会人的口令和意图,能避开障碍物,适应环境条件的变化,灵活机动地完成控制任务与信息处理任务。
1.3 计算机的硬件和软件 1.3.1 计算机的硬件 计算机的硬件由输入设备、输出设备、运算器,存储器和控制器五部分组成。图1.2为计算机硬件组成框图。 输入设备用来输入原始数据和处理这些数据的程序。最常用的输入设备是键盘、扫描仪等。输入的信息有数字,字母和控制符等,人们经常用八位二进制码来表示一个数字(0~9)、一个字母(A,B,C,…,X,Y,Z)或其他符号,当前通用的是ASCⅡ码,它用七位二进制码来表示一个字符,最高的一位可用于奇偶校验或作其它用处。在计算机中,一般把八位二进制码称为一个字节。 输出设备用来输出计算机的处理结果,可以是数字、字母、表格、图形等。最常用的输入输出设备是显示终端和打印机,处理结果显示在屏幕上,而打印机则将结果打印在纸上,除此以外,为了监视人工输入信息的正确性,在用键盘输入信息时,将刚输入的信息显示在屏幕上,如有错误,可及时纠正。
图1-2 计算机硬件组成框图
存储器用来存放程序和数据,是计算机各种信息的存储和交流中心。存储器的功能是保存或“记忆”解题的原始数据和解题步骤。为此,在运算前需要把参加运算的数据和解题步骤通过输入设备送到存储器中保存起来。在控制器控制之下,存储器可与输入输出设备、运算器、控制器交换信息,起存储、缓冲、传递信息的作用。存储器存储的全是0或1表示的二进制代码。那么大量的0、1代码在存储器中如何保存呢?目前采用半导体器件来担当此任务。我们知道,一个半导体触发器有0和l两种状态,可以记忆一个二进制代码。一个数假定用16位二进制代码来表示,那么就需要有16个触发器来保存这些代码。通常,在存储器中把保存一个数的16个触发器称为一个存储单元。存储器是由许多存储单元组成的。每个存储单元都有编号,称为地址。向存储器中存数或者从存储器中取数,都要按给定的地址来寻找所选的存储单元,这相当于上面所讲的横格纸每一行存放一个数一样。图1-3为存储器的结构示意图。
图1-3为存储器的结构示意图
存储器所有存储单元的总数称为存储器的存储容量,通常用单位KB,MB来表示,存储容量越大,表示计算机记忆储存的信息就越多。 半导体存储器的存储容量毕竟有限,因此计算机中又配备了存储容量更大的磁盘存储器和光盘存储器,称为外存储器。 运算器是对信息或数据进行处理和运算的部件,经常进行的是算术运算和逻辑运算,所以在其内部有一个算术及逻辑运算部件(ALU)。算术运算是按照算术规则进行的运算,例如加、减、乘、除、求绝对值、求负值等。逻辑运算一般是指非算术性质的运算,例如比较大小、移位、逻辑乘、逻辑加等。 二进制数的运算规律非常简单。例如加法:0+0=0,0+1=1,l+0=1,1+1=10,最后一个加式中等号右边的“1”表示向上一位的进位。又如乘法:0X0=0,Ox1=0,1X0=0,1X1=l0,正是由于二进制数运算规律简单,在电子器件中比较容易实现,因此,在电子数字计算机中广泛采用二进制数。 二进制数和十进制数一样,在运算中,当数的位数越多时,计算的精度就越高。理论上讲,数的位数可以任意多。但是位数越多,所需的电子器件也越多,因此目前计算机的运算器长度一般是8位、16位、32位或64位。控制器主要用来实现计算机本身运行过程的自动化,即实现程序的自动执行。
1.3.2 计算机的软件 1.软件的组成 所有软件都是使用某种语言编写的、可完成各种功能的程序。计算机语言有机器语言、汇编语言和高级语言之分。机器语言是计算机硬件可直接识别的最低级的语言。它要求程序员不仅要了解机器的硬件结构,而且要掌握各条机器指令的二进制编码格式,这是很难做到的。因此利用机器语言编写程序是非常困难的。汇编语言是采用助记符编程的语言,用汇编语言编写的源程序必须由汇编程序将其翻译成机器语言程序才能被机器执行,汇编语言与机器的硬件结构有一定的关系,能较好地发挥机器硬件的功能,因此要求程序员对机器硬件有一定的了解,在系统结构相同的序列机内部可实现汇编语言级的软件兼容。汇编语言的优点是执行速度快,因此多用于实时控制。高级语言是完全脱离机器硬件结构,根据应用领域的不同要求而设计出的通用的程序设计语言,品种繁多,目前世界上使用的高级语言有上百种,大体上可分成两大类:其一是会话型的高级语言,它必须由解释程序将其翻译成机器语言程序才能被执行,而且是一边解释一边执行,即每解释一个语句就执行一个语句,以达到人机会话的要求。
换句话说,完全不了解计算机硬件的人,同样可使用高级语言来编写可执行的源程序。计算机软件可分成系统软件和应用软件两大类,如图1-4 计算机软件组成图。应用软件是由应用程序员根据要求,使用各种语言编写的源程序。是利用计算机来解决某些问题而编制的程序,系统软件通常包括用来管理机器的操作系统,各种高级语言的编译或解释程序,汇编程序,数据库管理程序,还有系统调试程序、故障诊断程序和错误检测程序等,它们是由系统程序员编写的,一般不允许修改,可固定存放在机内的只读存储器中,或者存放在外部存储器中,需要时调入机器的内存储器中去执行。它包括以下四类:(1)各种服务性程序,如诊断程序、排错程序、练习程序等;(2)语言程序,如汇编程序、编译程序、解释程序等;(3)操作系统;(OperatingSystem简称OS)用来管理和控制计算机系统的软硬件资源,提高这些资源的利用率,并为用户使用计算机提供方便,属于核心的系统程序。一个操作系统的研制,常常需要上百个“人年”甚至更长,目前比较流行的操作系统有MS-DOS,UNIX,WINDOWS,LINIX等。汇编、编译或解释程序属于语言处理程序,是各种语言的源程序能在机内正常运行的关键软件。
图1-4 计算机软件组成图
(4)数据库管理系统。数据库管理程序是管理数据库的工具,计算机在工作过程中常常需要处理大量的数据信息,它们可集中存放在各种类型的数据库中。为了数据库的建立、使用和维护,使各种类型的数据库管理程序应运而生。从早期的数据库管理系统DBASE到目前流行的面向对象的数据库管理系统ORACLE、SYBACE等,它们都能在操作系统的管理下,实现对数据库的管理和控制功能。除此之外,系统调试程序、故障诊断程序也是系统软件中不可缺少的部分。 2.软件的发展 早期的计算机中,是直接用机器语言(即机器指令代码)来编写程序的,这种方式编写的程序称为手编程序。这种用机器语言书写的程序,计算机完全可以
“直接识别”并能执行,所以又叫做目的程序。为了编写程序方便和提高机器的使用效率,人们想了一种办法,用一些约定的文字、符号和数字按规定的格式来表示各种不同的指令,然后再用这些特殊符号表示的指令来编写程序。这就是所谓的汇编语言。对人来讲,符号语言简单直观、便于记忆,比二进制数表示的机器语言方便了许多。借助于汇编程序,计算机本身可以自动地把符号语言表示的程序(称为汇编源程序)翻译成用机器语言表示的目的程序,从而实现了程序设计工作的部分自动化。使用符号语言编程序比用机器语言编程序是进了一步,但符号语言还是一种最初级的语言,和数学语言的差异很大,并且仍然面向一台具体的机器。由于不同的计算机其指令系统也不同,所以人们使用计算机时必须先花很多时间熟悉这台机器的指令系统,然后再用它的符号语言来编写程序,因此还是很不方便,节省的人力时间也有限。为了进一步实现程序自动化和便于程序交流,使不熟悉具体计算机的人也能很方便地使用计算机,人们又创造了各种接近于数学语言的算法语言。
所谓算法语言,是指按实际需要规定好的一套基本符号以及由这套基本符号构成程序的规则。算法语言比较接近数学语言,它直观通用,与具体机器无关,只要稍加学习就能掌握,便于推广使用计算机。有影响的算法语言有BASIC,FORTRAN,C等。用算法语言编写的程序称为源程序。但是,这种源程序如同汇编源程序一样,是不能由机器直接识别和执行的,也必须给计算机配备一个既懂算法语言又懂机器语言的“翻译”,才能把源程序翻译为机器语言。通常采用编译方法和解释方法这两种方法。 用户直接使用机器总觉得机器“太硬了”,很多情况都得依附它。而计算机又觉得用户及外部设备“太笨”,常常使它处于无事可做的状态,要摆脱这种情况还要依靠计算机来管理自己和管理用户,于是人们又创造出一类程序,叫做操作系统。它是随着硬件和软件不断发展而逐渐形成的一套软件系统,用来管理计算机资源(如处理器、内存、外部设备和各种编译、应用程序)和自动调度用户的作业程序,而使多个用户能有效地共用一套计算机系统。操作系统的出现,使计算机的使用效率成倍地提高,并且为用户提供了方便的使用手段和令人满意的服务质量。
根据不同使用环境要求,操作系统目前大致分为批处理操作系统、分时操作系统、网络操作系统、实时操作系统等多种。个人计算机中广泛使用微软公司的“视窗”操作系统。 随着计算机在信息处理、情报检索及各种管理系统中应用的发展,要求大量处理某些数据,建立和检索大量的表格。这些数据和表格按一定的规律组织起来,使得处理更方便,检索更迅速,用户使用更方便,于是出现了数据库。所谓数据库就是实现有组织地、动态地存储大量相关数据,方便多用户访问的计算机软、硬件资源组成的系统。数据库和数据库管理软件一起,组成了数据库管理系统。数据库管理系统有各种类型。目前许多计算机包括微型机,都配有数据库管理系统。软件的进一步发展,将开发更高级的计算机语言。这是因为目前所有的高级语言编写程序时,程序比较复杂,开发成本高。计算机语言发展的方向是标准化、积木化、产品化,最终是向自然语言发展,它们能够自动生成程序。
1.4 计算机系统的层次结构 1.计算机系统结构概念 1.4 计算机系统的层次结构 1.计算机系统结构概念 “计算机系统结构”这个名词来源于英文computer architecture,也有译成“计算机体系结构”的。Architecture这个字原来用于建筑领域,其意义是“建筑学”、“建筑物的设计或式样”,它是指一个系统的外貌。 计算机系统结构这个词是Amdahl等人在1964年提出的。他们把系统结构定义为由程序设计者所看到的一个计算机系统的属性,即概念性结构和功能特性。这实际上是计算机系统的外特性。按照这一定义,不同程序设计者所看到的计算机有不同的属性。 在计算机技术中,一种本来存在的事物或属性,但从某种角度看似乎不存在,称为透明性现象。通常,在一个计算机系统中,低层机器级的概念性结构和功能特性,对高级语言程序员来说是透明的。由此看出,在层次结构的各个级上都有它的系统结构。
2.计算机系统层次结构 计算机系统由硬件和软件组成,按功能划分成多级层次结构,如图所示。图中每一级各对应一种机器。图中的第0级机器由硬件实现,第1级机器由微程序(固件)实现,第2级至第6级机器由软件实现。我们称由软件实现的机器为虚拟机器,以区别于由硬件或固件实现的实际机器。 第0和第1级是具体实现机器指定功能的中央控制部分。它根据各种指令操作所需要的控制时序,配备一套微指令,编写出微程序,控制信息在各寄存器之间的传送,这就是第1级机器。实现这些微指令本身的控制时序只需要很少的逻辑线路,可采用硬联逻辑实现,它就是第0级机器,是机器的硬件内核。 第2级是传统机器语言机器。这级的机器语言是该机的指令系统。机器语言程序员用这级指令系统编写的程序由第1级的微程序进行解释。
第3级是操作系统机器。这级的机器语言中的多数指令是传统机器的指令,如算术运算、逻辑运算和移位等指令。此外,这一级还提供操作系统级指令,操作系统是运行在第2级的解释程序。 第4级是汇编语言机器。这级的机器语言是汇编语言。用汇编语言编写的程序首先翻译成第3级或第2级语言,然后再由相应的机器进行解释。完成翻译的程序叫作汇编程序。 第5级是高级语言机器。这级的机器语言就是各种高级语言。用这些语言所编写的程序 一般是由编译程序翻译到第4级或第3级上的语言,个别的高级语言也用解释的方法实现。 第6级是应用语言机器。这级的机器语言是应用语言。这种语言使非计算机专业人员也能直接使用计算机,只需在用户终端用键盘或其他方式发出服务请求就能进入第6级的信息处理系统。
计算机系统层次结构图 图1-5 计算机系统层次结构
从学科领域来划分,大致可以认为第0至第1级是计算机组织与结构讨论的范围,第3至第5级是系统软件,第6级是应用软件。但是,严格说起来又不尽然,它们之间仍有交叉。例如,第0级要求一定的数字逻辑基础;第2级涉及汇编语言程序设计的内容;第3级与计算机系统结构密切相关。在特殊的计算机系统中,有些级别可能不存在。 把计算机系统按功能划分成多级层次结构,首先有利于正确理解计算机系统的工作,明确软件、硬件和固件在计算机系统中的地位和作用。其次有利于理解各种语言的实质及其实现。最后还有利于探索虚拟机器新的实现方法,设计新的计算机系统。
1.5 本章小结 “电子计算机”是指现在广泛应用的电子数字计算机,它分为专用计算机和通用计算机两大类。专用和通用是根据计算机的效率、速度、价格、运行的经济性和适应性来划分的。通用计算机又分为巨型机、大型机、中型机、小型机、微型机、单片机六类,其结构复杂性、性能、价格依次递减。 计算机的生命力在于它的广泛应用,应用的范围几乎涉及人类社会的所有领域。计算机的硬件是由有形的电子器件等构成的,它包括运算器、存储器、控制器、适配器、输入输出设备。 计算机的软件是计算机系统结构的重要组成部分,也是计算机不同于一般电子设备的本质所在。计算机软件一般分为系统软件和应用软件两大类。系统软件用来管理计算机的软硬件它包括各种服务性程序、语言类程序、操作系统、数据库管理系统。应用程序是针对某一具体应用领域开发的软件。 计算机系统是一个由硬件、软件组成的多级层次结构,它通常由微程序级、一般机器级、操作系统级、汇编语言级、高级语言级组成。
习题 1.1 数字计算机和模拟计算机的区别? 1.2 冯·诺依曼计算机的设计思想?主要组成部分? 1.3 描述计算机的发展过程及应用范围? 1.4 计算机软件的组成?并举例说明。 1.5 说明计算机的层次结构及各层次结构的特点?