计算机的基本工作原理(何勤)[1].8.11doc.doc_第1页
计算机的基本工作原理(何勤)[1].8.11doc.doc_第2页
计算机的基本工作原理(何勤)[1].8.11doc.doc_第3页
计算机的基本工作原理(何勤)[1].8.11doc.doc_第4页
计算机的基本工作原理(何勤)[1].8.11doc.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

揭开电脑与编程的核心奥秘 (何勤)计算机基本知识计算机基本知识计算机基本知识 计算机的基本工作原理(初)一种有着神奇的“魔力”和“智能”的人造设备正在迅速地、彻底地、默默无闻或者令人震惊地改变和丰富我们所生活的大千世界。这个看起来很不起眼的,在一些场合被称为“电脑”的电器设备,是如何具有如此神奇的“魔力”和“智能”的?本章将带你开始解开这个谜。11节介绍理想厨房系统,1.2节通过一个炒菜实例讲解理想厨房各部件是如何密切配合工作的。1.3是一张理想厨房系统与计算机系统的对照表1.4到1.8介绍了二进制、计算机、机器指令和指令集、数和码。1.09对计算机的重要特点进行了概括性的总结、1.11是计算机与理想厨房的一些重要区别。其中1.2、1.3、1.4、1.9和1.11是本章重点。学过大学计算机基础或计算机导论的读者,本章不是必学的内容。但浏览一下1.2、1.3和1.9节应该是有益的。电子数字计算机从发明到现在,不过大约70年的时间。然而计算机的发明、改进和普及,却彻底地变革了人类社会。计算机本身也变得越来越复杂、快速、小巧、种类繁多。但大多数计算机都遵循冯.诺伊曼体系结构。这为我们理解大多数计算机的基本工作原理提供了方便。本节是全书的重要基础。通过本节,为你真正揭开计算机究竟如何工作的神秘面纱。(但是要直到12.4、12.5节,才能彻底揭开计算机硬件如何在操作系统这个系统软件的调度管理下,并行运行多道程序的内在奥秘。)纠正你对计算机的一些错误认识和看法。并为第2、12、13章的学习打下牢固的知识基础。本节不需要任何的预备知识,只要你能把本节认真仔细地学习两遍,你就能够真正懂得看似极为神秘莫测、奥妙无穷,到目前为止人类有史以来最伟大、最神奇而又最为复杂的发明计算机(又称为“电脑”。这个伟大发明,汇集了几代人中很多杰出人士的聪明才智和研究成果)是如何工作的基本原理。为达此目的,笔者付出了极大的努力,找到了一种比较好的比喻方法理想厨房系统,由此开始我们的真正理解计算机工作原理的,激动人心的探索旅程。1.1理想厨房系统:理想厨房系统,是一个通过顺序执行菜谱中的各个加工步骤,把原材料加工成菜肴的系统。它由硬件(理想厨房、自动冰箱和三条传送带)和软件(菜谱)组成。1) 硬件部分:理想厨房系统,主要由以下三个硬件部件(即实物部件)构成理想厨房、自动冰箱和三条传送带。自动冰箱:由非常多的大小一样的格子组成。负责临时保存菜谱、原材料和菜肴。是不是很奇怪?菜谱竟然要和原材料一道,统一存放在冰箱中!三条传送带:负责理想厨房与自动冰箱之间的通信及物品(菜谱中的加工步骤、原料和菜肴)传送。理想厨房:负责根据从菜谱中取到的加工步骤进行炒菜以及进行相关的控制工作。2) 软件部分:菜谱是理想厨房系统中一个无重量、无体积、不会损坏、可经常更换的,但又极为重要的软件部件(即信息流部件)。菜谱由一个个加工步骤顺序组成。注意:术语“理想厨房系统”与“理想厨房”是有区别的,理想厨房只是理想厨房系统中的一个组成部分。理想厨房系统的构成简图如图1.1所示:理想厨房 自动冰箱 碟名 碟中物品 格子编号 格子(存放加工步骤或原料)R0R1 厨具R2 厨师PC 厨房管理员IR 材料传送带地址传送带控制传送带 01234567 图1.1理想厨房系统的构成简图(但图中没给出具体的软件)理想厨房中各种碟子的作用R0、R1、R2碟是一些通用临时存放碟,用来临时存放从冰箱取来的原材料或加工了的半成品或成品。PC碟:存放下一条要执行的加工步骤位于冰箱的哪一格中(这是一个格子的数字编号)。IR碟:用来存放刚从冰箱取过来的加工步骤。 理想厨房执行菜谱的一个加工步骤,其流程完全是周期性的。 厨房管理员首先要根据PC碟中的值(这个值表示:将要执行的菜谱中的加工步骤,位于冰箱的哪一格中),通过三套传送带的协调工作,到自动冰箱的指定格中去取菜谱中的一个加工步骤。取到理想厨房并把它放到IR碟中后(PC碟中的值将会加上1,为取下一个加工步骤做好准备),管理员还要阅读并分析此加工步骤;然后根据此加工步骤的指示,去做以下七类工作中的一种: 1通过三套传送带,命令自动冰箱把指定地址格子中的(炒菜加工步骤马上要用到的)原材料(通过材料传送带)传送到理想厨房中来即取物品;2命令厨师按照指令(即加工步骤)的要求,对原材料作一个基本加工操作(做“炒”,“蒸”,“煮”等基本操作步骤中的一个炒菜动作)即加工原材料。 3通过向三套传送带向自动冰箱发命令,把某个碟子中的成品(或半成品)送回到冰箱指定的格子中存放即存物品; 4在厨房的各个碟子或炊具之间传送原料或半成品在厨房内部进行物品传送 ;5根据某个状态碟中的具体条件(比如预定时间到了、温度够了),不按正常顺序取出并且执行下一条指令,而是根据此指令中给出的(冰箱格子的相对或绝对)地址,跳转到那一格中去取下一条指令即进行跳转。6命令传菜生端菜给顾客;即输出。7命令配菜员为某菜配原材料;即输入。 一个加工步骤执行完后,理想厨房立即自动进行下一个完全类似的、新的取加工步骤执行加工步骤的周期。下面我们通过一个实例来讲述理想厨房系统的工作机制。这是本章的重点内容。1.2理想厨房系统的一个炒菜实例:现在,我们通过炒制一道香菇炒菜心的例子来说明理想厨房系统的工作过程。 首先,把香菇放在冰箱地址为5的格子中,把菜心放在冰箱地址为6的格子中,冰箱地址为7号的格子,预留给炒好的菜使用。首先,把香菇放在冰箱地址为5的格子中,把菜心放在冰箱地址为6的格子中,冰箱地址为7号的格子,预留给炒好的菜使用。 菜谱的所有加工步骤(又称为指令)从冰箱地址0号格开始依次按照顺序存放,编写香菇炒菜心的菜谱如下:地址0的格子中: 取地址5(中的物品)到R0碟;地址1的格子中: 取地址6(中的物品)到R1碟;地址2的格子中: 将R0碟和R1碟倒入炒锅中炒好倒回R0碟;地址3的格子中: 送R0碟(中的物品)到地址7中; 可见,一共有4个加工步骤。开始时理想厨房系统状态如下图1.3(注意:冰箱格子以及理想厨房碟子中存放的物品都用了斜体字)理想厨房 自动冰箱 碟名 碟中物品 地址 冰箱格子中物品R0R1 厨具R2 厨师PC 0 厨房管理员IR 材料传送带地址传送带0控制传送带 取01234567取地址5到R0碟取地址6到R1碟;将R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心 图1.3菜谱设置完毕后,理想厨房系统开始自动化的工作。1),厨房管理员根据PC碟子中的数字“0”,知道要到冰箱地址为0的格子中取第一条指令(即加工步骤)。于是,厨房管理员向控制传送带上送出一个“取”信号,然后马上将PC碟中的数字“0”复制后放到地址传送带上。这两个信号都会到达自动冰箱。自动冰箱收到这两个信号后,将0号格的内容复印件“取地址5到R0碟”放到材料传送带上,送往理想厨房。理想厨房收到后,将这条指令放到IR碟中。然后,厨房管理员将PC碟中的原来值增加1,以便为取下一条指令做好准备。取指令周期完成后,理想厨房系统处于如下图1.4状态: 理想厨房 自动冰箱 碟名 碟中物品 地址 冰箱格子中物品R0R1 厨具R2 厨师PC 1 厨房管理员IR 取地址5到R0碟 材料传送带地址传送带控制传送带01234567取地址5到R0碟取地址6到R1碟;将R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心 图1.4 厨房管理员读到指令存放碟(即IR碟)中的加工步骤后,知道要到冰箱地址号为5的格子中去取原材料,并且取来后要放到R0碟中。因此,管理员向控制传送带上送出一个“取”信号,然后马上将5这个数放到地址传送带上。 冰箱收到“取”信号后,知道理想厨房要取物品。然后,冰箱从地址传送带得到了5,于是冰箱将地址为5的格子中的物品“香菇”取出来,放到材料传送带上。 材料传送带上的物品“香菇”,传到理想厨房后,按照指令的要求(通过厨房内部的传送带)送到了R0碟中。第一条指令执行完后,理想厨房系统处于如下图1.5所示的状态:理想厨房 自动冰箱 碟名 碟中物品 地址 冰箱格子中物品R0 香菇R1 厨具R2 厨师PC 1 厨房管理员IR 取地址5到R0碟 材料传送带 地址传送带 5控制传送带 取01234567取地址5到R0碟取地址6到R1碟;将R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心图1.52)接下来,开始执行下一条指令的取指周期,类似于前一条指令,在取指周期完成后,理想厨房系统处于如下图1.6状态:理想厨房 自动冰箱 碟名 碟中物品 地址 冰箱格子中物品R0 香菇R1 厨具R2 厨师PC 2 厨房管理员IR 取地址6到R1碟; 材料传送带地址传送带 1控制传送带 取01234567取地址5到R0碟取地址6到R1碟;将R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心图1.6管理员分析指令存放碟中的加工步骤(指令)后,知道要到冰箱地址为6的格子中去取原材料,并且放到R1碟中。因此,管理员向控制传送带上发一个“取”信号,然后马上将6这个数放到地址传送带上。 冰箱收到“取”信号后,知道理想厨房要取东西,然后,冰箱从地址传送带得到了6,于是冰箱将地址为6的格子中的物品“菜心”取出,放到材料传送带上。 材料传送带上的物品“菜心”,传到理想厨房后,按照指令的要求通过厨房内部的传送带被自动送到R1碟中。第二条指令执行完后理想厨房系统处于如下图1.7状态: 理想厨房 自动冰箱碟名 碟中物品 地址 冰箱格子中物品R0 香菇R1 菜心 厨具R2 厨师PC 2 厨房管理员IR 取地址6到R1碟; 材料传送带地址传送带 6控制传送带 取01234567取地址5到R0碟取地址6到R1碟;将R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心图1.73)在第3条指令的取指周期完成后,理想厨房系统处于如下图1.8状态:理想厨房 自动冰箱碟名 碟中物品 地址 冰箱格子中物品R0 香菇R1 菜心 厨具R2 厨师PC 3 厨房管理员IR将R0和R1炒好倒入R2碟;材料传送带地址传送带 2控制传送带01234567取地址5到R0碟取地址6到R1碟;将R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心 图 1.8 厨房管理员看到IR碟中的内容后,命令厨师将R0碟和R1碟中的原材料倒入锅中炒好后,倒入R2碟中。完成后如图1.9理想厨房 自动冰箱碟名 碟中物品 地址 冰箱格子中物品R0香菇R1菜心 厨具R2香菇菜心 厨师PC 3 厨房管理员IR将R0和R1炒好倒入R2碟;材料传送带地址传送带控制传送带01234567取地址5到R0碟取地址6到R1碟;将R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心 图1.94)第4条指令在取指令周期完成后,理想厨房系统,处于如下图1.10状态:理想厨房 自动冰箱碟名 碟中物品 地址 冰箱格子中物品R0香菇R1菜心 厨具R2香菇菜心 厨师PC 4 厨房管理员IR送R2碟到地址7中;材料传送带地址传送带控制传送带01234567取地址5到R0碟取地址6到R1碟;将R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心 图1.10下面开始执行“送R2碟到地址7中”这条指令。厨房管理员分析指令存放碟中的加工步骤后,知道要将R2碟中的物品,送到冰箱地址为7的格子中去存放。于是,管理员向控制传送带上发一个“存”信号,然后马上将7这个数放到地址传送带上,最后将R2碟中的物品“香菇菜心”放到材料传送带上,送往冰箱。 冰箱收到“存”信号后,知道理想厨房要存放物品,然后,冰箱从地址传送带得到了7,于是自动冰箱(的机械手)在材料传送带旁,等待从理想厨房R2碟传来物品“香菇菜心”,一旦到达,自动冰箱就将其取下,并将其存放到地址号为7的格子中。完成后系统状态如图1.11:理想厨房 自动冰箱碟名 碟中物品 地址 冰箱格子中物品R0香菇R1菜心 厨具R2香菇菜心 厨师PC 4 厨房管理员IR送R2碟到地址7中;材料传送带地址传送带控制传送带01234567取地址5中到R0碟取地址6中到R1碟;将R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心香菇菜心 图1.11至此,香菇菜心这道菜终于大功告成了。1.3理想厨房系统与计算机系统术语对照表理想厨房的工作原理,与计算机的工作原理是极为类似的。下面首先给出两个系统之间的术语对照表,见表1.1。表1.1术语对照表理想厨房系统电子数字计算机(简称计算机) 1.硬件设备自动冰箱(包含多个大小相等的格子)内存(又称为主存,包含很多大小相等的基本存储单元) (冰箱中的)一个格子(内存中的)一个基本存储单元材料传送带数据总线地址传送带地址总线控制信号传送带控制总线理想厨房(包含以下设备)CPU(或称微处理器,包含以下部件)厨师及炒菜设备算术逻辑单元ALU(又称为运算器)厨房管理员控制单元(又称为控制器)通用临时存放碟通用寄存器指令地址存放碟PC指令地址寄存器(又称为程序计数器PC)指令存放碟IR指令寄存器(又称为IR寄存器) 状态存放碟状态寄存器专用加工容器专用寄存器采购员及配菜员输入设备(键盘、鼠标、网卡、U盘等)传菜生输出设备(显示器、打印机、网卡、U盘等)自动仓库外存(硬盘、U盘,但同时也属于输入输出设备) 2.软硬件之间的接口(编写菜谱或程序的基本要素)冰箱格子的地址(即编号)内存中基本存储单元的地址(即编号)厨师可做的各种炒菜的基本动作(蒸、炒、炸、煮等)运算器可进行的各种基本运算(算术运算、逻辑运算等)碟子的名称寄存器的编码或代号 理想厨房可以执行的所有各种加工动作(指令)该类型计算机的指令集3.软件特殊菜谱(机器语言形式的) 程序加工步骤(机器)指令原材料数据 炒好的菜信息(或称为结果)精确的普通菜谱高级语言程序(又称为源程序或源代码) 简要的普通菜谱伪代码4. 系统的使用者编写特殊菜谱者用机器语言编程的程序员 编写精确的普通菜谱者用高级程序设计语言编程的程序员理想厨房系统的大堂经理和顾客计算机的用户在计算机上运行一个程序时,上表中列出的计算机的各个部件会协同工作,完成任务(参见1.6节)。如果没有对理想厨房工作原理的详细讲解,由于出现了太多新的专业术语和名词,人们决对很难在短时间内,全面把握和理解这个计算机系统的工作原理的(对于任何一个初学者,这都是一件极其困难的事)。1.4预备知识:二进制及相关知识简介:虽然理论上可以使用任何进制(比如十进制)为基础来制造计算机,但现代计算机都是采用二进制的数字电子信号(制造电子计算机为何用数字信号而不用模拟信号,不用其他进制而用二进制,请参见本章提高部分)进行工作的机器。也就是说,在计算机的内部,只能以二进制的形式来存放、传输需要运行的指令和需要加工的数据的。 为了从底层彻底把握计算机的基本工作原理,读者必须事先对二进制有所了解。以下简要介绍相关知识。1.5.1 二进制数的概念 首先,来看一张部分十进制数与二进制数的数值对照表: 十进制数 所对应的二进制数0 01 1 2 103 114 1005 101 6 110 7 111 8 10009 100110 1010 11 1011 12 110013 110114 111015 1111表 1.2 部分十进制数与二进制数的数值对照表一般情况下,用n位二进制可表示的最大正整数值是2n-1。比如:4位二进制可表示的最大正整数是24-1=15(即1111)2 。可见,二进制只能用两个数字“0”和“1”来进行计数(或表示各种不同状态)。二进制加法运算的重要规则是: 1+1=10 ,即两个1相加产生向高位的进位。左边是高位数,右边是低位数(此外,其它加法规则还有:1+0=1、0+1=0、0+0=0)。我们用一对圆括号括住一个数值,并在圆括号外面加一个数字下标,来表示一个数是几进制数:比如(1011)10是一个十进制数;而(1011)2是一个二进制数。141将二进制整数转化成十进制整数一个十进制的数,其数值可用以下展开式来表示:比如3785(3785)10=3103+7102+8101+5100 (1)我们把(1)式中10的几次方称为权重,权重左边的乘数称为系数。(1)式中共有4个系数,从左到右依次是:“3”“7”“8”“5”。可见,在数值数据中,越左边的数字(系数)权重越大。类似的,一个二进制数,其数值也可用以下展开式来表示:比如二进制数1011(1011)2= 123+022+121 +120 (2)此二进制数的值,等于十进制的18+04+12+11=8+2+1=(11)10 (3) 由此可以得到:二进制整数转化成十进制整数的一般方法:只要将该二进制整数(即1011)展开后的(2)式中的每一位的系数值,乘以这一位的转化成十进制数后的权重(即2的几次方),然后再将逐个乘积项的数值相加起来即可。练习1:将二进制数 11010010转换成十进制。142 将十进制整数转化成二进制数:1. 将十进制数转换成二进制数的短除法:短除法把要转换的十进制整数不断的除以2然后取余数,商为0的时候结束。然后把余数倒着写出来。例如: 把84转换成二进制数 0242 221 210 25 22 21 20 84 0 1 0 1 0 1即: (84)10= (1010100)2注意:短除法实际上适用于将一个十进制整数转换为一个任意n(n2)进制的整数,只需将除数2变为n即可(参见例题)。可选练习1:查阅参考书(比如任何一本计算机导论或大学计算机基础),看看十进制的纯小数是如何转化为二进制的纯小数的。十进制的实数是如何转化为二进制的实数的。1.5数和码的含义和区别:什么是数? 数是表示事物的量的基本数学概念。什么是码?“码”是“编码”的简称。用预先规定的方法将文字、数字或其他对象编成数码,或将信息、数据转换成规定的电脉冲信号。编码是信息从一种形式或格式转换为另一种形式的过程。解码,是编码的逆过程。151十进制的数和码:我们通过一个例子来说明十进制数字系统中数和码的区别如果3785用于表示数,则越高位(即越左边的位)的数字越重要(因为权重越大,在十进制数3785中,“3”的权重是103,而“5”的权重是100)。 而3785用于表示非数值的码,则每一位都同样重要。码值仅相差一位,所表示的文字(或代表的事物)可以有巨大的区别(比如:3785表示汉字“前”,而3786表示汉字“后”)。 十进制的数字串“3785”由“3”、“7”、“8”、“5”组成。它既可以表示一个数值为三千七百八十五的十进制数,也可以表示一个码为3785的汉字(或者表示任何别的什么10000个同类事物中的编码为3785的一个特定事物)。 152二进制的数和码 与十进制一样,二进制数和二进制码也有类似的区别。只不过在二进制中只能用0和1组成的一个二进制数字串,来构成任何大小的数值或者表示具有任何含义的码。位:单个二进制数字我们称之为“位”(bit)。如果用一个位来表示整数值,只能表示0和1这两个值中之一。大于1的整数值用一个“位”表示不了。如果用单个“位”来表示码,则只能用来对(同属一种类型的)两种不同事物进行编码。比如:用1表示“真”,用0表示“假”;或者用 1 表示动物“猫”,用 0 表示动物“狗”;等等。位串及其长度:任意多个二进制数字顺序排列在一起(比如:11011011100),我们称之为位串。位串中数字的个数我们称为位串的长度。如果用长度为2的一个位串来表示整数值,则能够表示00(即0)、01(即1)、10、11这4个整数值中的某一个。如果用长度为2的位串来进行编码,则能够用来对属于同一类型的4(即22)种不同的事物进行编码。编码和解码的一个实例 比如:用00表示“东”、用01表示“南”、 用10表示“西”、 用11表示“北” 。这就构成了一张编码解码表(见表1.2)(这实质上是一张两个集合00、01、10、11和东、南、西、北的所有元素之间的一对一映射表)。 二进制码集合中的元素00 东01 南10 西11 北表1.2 编码解码表通过编码后,就可以用一些码(比如:1001)来间接地存储和传输一些方向值。因为这样既比较安全,又比较方便(一个二进制位串用数字电信号是很容易存储和传输的,而任何用文字表达的非数值数据是无法直接用电信号来存储和传送的)。达到目的地后,接收方也要有同样一张“编码解码表”,将这种接收到的二进制位串翻译成它的本来意义(比如将码值1001翻译成“西南”)。这个过程就称为解码。二进制位串的长度越长,可表示的数值范围就越大。一般的,长度为n位的二进制位串可表示的整数值是从0到2n-1(2n-1的值等于n个1组成的位串);长度为n位的二进制位串,一共有2n个码值,所以可对任意一个有2n个元素的集合进行编码。将一个码值与一个元素关联起来,生成一张编码解码表。153字节8位二进制在计算机、通信及其大量相关应用中,人们最关心的是长度为8位的二进制位串。这是由于现代的绝大多数计算机和数字化的通信网络设备,都是以8位二进制作为计量数据存储容量和传输容量的一种常用单位。我们把 一个8位二进制称为一个字节。如果用一个字节的位串来表示无符号的整数,则能够表示28=256个整数值。分别是从0到255,对应于二进制数从(00000000)2到(11111111)2 。 如果用某一个字节的位串来表示一种非数值的编码,则能够用来表示256种同类事物中的一个事物(这句话用数学术语来表达就是:能够用来表示256种元素组成的集合中的一个元素)。 具体表示哪一个事物取决于编码规则。 有了这些预备知识,现在我们可以整体而又简明地介绍计算机的工作原理了。16计算机与计算机系统:(这一节的内容由于术语太多,请对比1.1和1.2来学)计算机系统是一个通过顺序执行程序中的指令序列,把数据加工成信息的系统(与之对比的是:理想厨房系统是一个通过顺序执行菜谱中的加工步骤序列,把原材料加工成菜肴的系统)。计算机是由实物构成的硬件(中央处理单元、内存和三套总线)和软件(程序)组成。这是一个由数字逻辑电路构成的,以极快速度(接近光速)运行程序(普通PC机通常每秒执行几亿条指令,目前世界上最快的计算机每秒可执行约1000万亿条指令)的,纯二进制的电子“世界”。计算机系统也是由硬件(中央处理单元、内存、三套总线和外围设备)和软件(程序)组成的。只不过在这里硬件概念的范围更广,还包括了外围设备。外围设备包括输入设备(键盘、鼠标、网卡、数码相机等)、输出设备(显示器、打印机、网卡、音箱等)和外存(硬盘、U盘、光盘等)。内存直接通过总线连接到中央处理单元,而外围设备则要通过接口电路连接到计算机的三套总线上。 如图所示1.12地址总线数据总线控制总线CPU内存I/O设备I/O设备 图1.12计算机结构示意图深入一步:外围设备的输入和输出从外围设备中进来的数据,往往需要经过接口电路的转换,才能进入到计算机的“内部世界”( 总线、内存和CPU的寄存器),这个过程称为“输入”。计算机“内部世界”中的数据,往往需要接口电路的转换才能从外围设备输送出去,这个过程称为“输出”。 有机械部件的外围设备,其运行速度比纯电子器件的计算机核心部件要慢得多(比如当前硬盘数据传输率大约是几百MB/秒,而内存CPU数据传输率大约是几个GB/秒,大约相差几十倍。打印机更慢,而人操作键盘输入数据则最慢,大约40200B/秒。与内存数据传输率相差大约一千万倍。以后差距会更大)。由于输入输出工作原理比较复杂,本章不作深入讨论,本书在第12章讨论这个问题。1.6.1计算机的硬件 计算机硬件主要由以下三个部件构成:中央处理单元、内存、三套总线。内存(相当于自动冰箱):内存主要是由极大量的大小相同的基本存储单元(相当于自动冰箱的格子)组成。现代个人计算机的内存通常有几千万到几亿个这样的基本存储单元。每个基本存储单元都具有一个(从0开始顺序递增的)唯一的编号即内存地址(相当于冰箱格子的编号)。大多数现代计算机用字节(作为基本存储单元)来分割内存空间。内存负责临时保存正在执行(和将要执行)的程序指令、数据和信息。这些内容在内存中,全部都是以二进制的数或码的形式存放的。如下图1.13所示:二进制的内存地址 内存基本存储单元 (即字节)中的位串110101101101001110110101011011110101110100000000100000000000000010000001000000001000001000000000100001000000000010000101 图 1.13 内存片段示意图:大量字节构成的内存 三套总线(相当于三条传送带):负责中央处理单元与内存之间的通信及数据(包括程序中的指令、数据和信息)传送。中央处理单元简称CPU(相当于理想厨房):负责通过三套总线到内存中去取程序中的指令(相当于加工步骤),并根据指令对数据进行运算处理以及进行相关的控制工作。中央处理单元中的主要部件有:控制器或称为控制单元(相当于厨房管理员)、运算器(相当于厨师加炊具)和一些寄存器(相当于厨房中的碟子)。 1.6.2计算机的软件 构成计算机的部件中,还有一个无重量的、无体积的、不会损坏、可经常更换的,极为重要的软件部件,即命令计算机如何一步步进行工作的信息流程序。程序是由一条条指令顺序组成的指令序列(相当于菜谱的一系列加工步骤)。 程序可存放在内存(相当于自动冰箱)或外存(相当于仓库)中。外存(比如硬盘)中的程序必须加载到内存中以后才能够得到执行。计算机的构成简图(不包括外围设备)如图1.14所示:中央处理单元(CPU) 内存 寄存器名 寄存器中物品 地址 存储单元中存放程序或数据R0R1 R2 运算器 PC 控制器IR 数据总线地址总线控制总线 000001010011100101110111 图1.14计算机系统的构成简图图1.14所示计算机中各种寄存器的作用:R0、R1、R2是一些通用寄存器,用来临时存放从内存取来的数据或运算得到的结果。PC寄存器:存放下一条要执行的指令位于内存的哪个存储单元中。IR寄存器:用来存放刚从内存取过来的马上要执行的指令。 1.6.3计算机指令执行的过程与理想厨房类似,中央处理单元(CPU)执行指令的过程,也完全是周期性的。控制器首先要根据PC寄存器中的值(这个值说明将要执行的指令,位于内存的哪一个存储单元中),通过三套总线密切配合,到内存中去取这条指令。取到CPU并把它放到指令寄存器 (即IR寄存器) 之后,PC寄存器中的原来值,将会加上1,以便为取下一条指令做准备。 控制器对取到的该条指令进行译码,然后根据此条指令的指示,通过总线命令计算机的各部件,去执行以下七大类指令中的一种: 1通过三套总线,命令内存,把指定地址存储单元中的(运算过程中马上要用到的)数据,送到中央处理单元中(的某个寄存器)来。(取数据指令)2命令运算器按照指令的要求,对数据作一次基本运算(注1)。(数值运算类指令) 注1:基本运算包括:算术运算(加、减、乘、除)、逻辑运算(与、或、非)和位运算等等。3通过向三套总线向内存发命令,把某个寄存器中的运算结果(或中间运算结果)送回到内存中(由内存地址)指定的存储单元中存放即保存结果。(存数据指令) 4在中央处理单元中的各个寄存器之间传送数据在中央处理单元内部进行数据传送(数据移动指令) ; 5根据某个状态寄存器中的某个条件(比如上一条指令的运算结果为零),条件不成立根据PC的值正常取出并执行下一条指令;如果条件成立,就不按正常顺序取出并且执行下一条指令,而是根据此指令中给出的内存的(偏移或绝对)地址,修改PC寄存器中的数值,从而实现跳转(注2);(跳转类指令) 注2:这是有条件跳转指令。还有一种无条件跳转指令,是不需任何条件就进行跳转的。进一步的讨论参见1.10的第(7)点。6通过接口电路,命令输出设备输出一个数据(注3)。(输入指令)7通过接口电路,命令输入设备输入一个数据(注3)。(输出指令) 一条指令运行完后, CPU立即自动进行下一个形式完全相同的、新的 取指令执行指令 的周期。一条指令的运行周期,可分为取指子周期和执行子周期这两个阶段。由控制器发起的,反复、自动、快速进行的取指令执行指令周期,是计算机进行各种工作中的核心操作(这就象反复、自动进行的心脏搏动周期,是人体进行各种活动的核心运动一样)。1.7计算机中的指令和机器语言程序:171计算机中的指令和指令集指令的格式 任何类型的计算机,指令的通常格式为: 操作码 操作码告诉计算机要做什么事,操作数告诉计算机对存放在哪里的数(或什么数)做这件事。操作码是所有指令必须有的,但有些指令没有操作数(这通常是由于这种指令默认的操作数在某个或某几个寄存器中)。一般的指令通常有一到三个操作数。我们在12章会再次稍为深入一步讨论这个问题。 比如在一台极简单的计算机上,可以用操作码00001表示加法、00010表示减法,等等。注意:指令在计算机内部实际上都是二进制位串形式的。指令集 一台计算机能够执行的指令类型数量是有限的(就象英文字母是有限的)。随着计算机类型的不同,大约在几十种到几百种之间。所有这些不同种类指令的集合称为该类型计算机的指令集。举例来说:假设一台极为简单的模型计算机,一共可以有十条指令,见下表。这十条指令就构成这台模型计算机的指令集。序号指令操作码意义序号指令操作码意义000000无条件跳转(偏移地址)500101存数100001整型加法600110输入一个数200010整型减法700111输出一个数300011数据移动801000逻辑与运算400100取数901001逻辑或运算表1.3 模型计算机的指令集(最简单的计算机可以没有乘除法指令)虽然指令集中的指令是有限的,但是用指令集中的有限种指令,可以编写出的程序(即指令序列)的数量却是无限的(就像用有限的英文字母可以写出无限多的英文文章类似)。 问题1.一台计算机的指令集共有20条指令,至少要用多少位的二进制位串来表示这些指令的操作码?是否存在非法指令?172机器语言程序用这种二进制形式的指令集中的指令编写出来的指令序列,称为机器语言程序。机器语言程序是可以直接在计算机上运行的。因为它可以直接转变为计算机的数字电路中运行时所需要的驱动各条电路中的高电压电平或低电压电平。不同类型的计算机所具有的指令集是不同的。比如:在一台A计算机上,操作码00010表示的是加法指令;而在另一台不同类型的B计算机上同一个操作码00010表示的却可能是无条件跳转指令;再有一台C计算机,它所有的操作码不用是5位二进制位串,而是用的6位二进制位串。也就是说,为一种类型计算机编写的机器语言程序,是不能够拿到另一种不同类型的计算上去运行的。任何一类计算机都有自己的“方言”。这是用机器语言进行编程的无奈之处。1.8程序实例讲解(片断)与练习:现在,我们可以用上述这些计算机系统的术语,来取代理想厨房系统的工作原理叙述中所用到的理想厨房系统的相应术语。那么它恰好就变成了对计算机系统的工作原理的一个简要地、然而又是整体地介绍( 对计算机工作原理的更深入一些的阐述,可参见第12章 )。这种简要性和整体性,对于我们从整体上完全把握计算机系统的基本工作原理,是极为重要的。下面,请读者通过做以下这个练习,来熟悉计算机的基本工作原理。例题1.1 :将第一个数2存放在内存地址为5的基本存储单元中。将第二个数11存放在内存地址为6的基本存储单元中,程序的指令序列,存放在从地址0开始到地址3结束的内存基本存储单元中。内存地址03的基本存储单元中存放的指令序列,将完成一个211的加法运算,并将结果存放到内存地址为7的存储单元中。 CPU 内存 寄存器 数据 地址 内存单元中的指令或数据R0R1 算术逻辑单元R2 PC 0 控制单元IR 数据总线地址总线控制总线01234567取地址5到R0寄存器取地址6到R1寄存器将R0和R1相加存入R2寄存器送R2寄存器到地址7中211 图1.15 示意图(注意:在计算机内存中的指令、数据和内存地址,实际上都只能是二进制位串形式的。此图只是一个计算机结构和工作原理的示意图,所以用了一些陈述性的汉语句子来代替那些二进制的机器指令;用了10进制的数据取代了那些二进制的数据。关于机器语言形式的指令、数据和程序的运行,请参见第12章)下面对这个程序的运行过程进行讲解(片断):控制单元根据PC寄存器中的数字“0”,知道要到内存地址为0的基本存储单元中去取指令。于是,控制单元向控制总线上送出一个“取”信号,然后马上将PC寄存器的数字“0”复制后放到地址总线上。这两个信号都会到达内存。内存收到这两个信号后,将地址为0的基本存储单元的内容“取地址5到R0寄存器”复制后放到数据总线上,送往CPU,CPU收到后自动放到指令寄存器IR中,然后,控制单元将PC寄存器中的值增加1(以便为取下一条指令做好准备);取指令周期完成后计算机处于如下图1.16状态: CPU 内存 寄存器 数据 地址 基本存储单元中的内容R0R1 算术逻辑单元R2 PC 1 控制单元IR 取地址5到R0寄存器 数据总线地址总线控制总线01234567取地址5到R0寄存器取地址6到R1寄存器;将R0和R1相加存入R2;送R2寄存器到地址7中;211 图1.16 下面开始这条取来指令的执行周期; 。重要练习:下面请你模仿理想厨房的炒菜实例1.2节,继续讲述计算机是如何执行指令,将两数相加的结果13,存放在内存地址为7的基本存储单元中的。建议读者都要做此重要练习。1.9计算机的重要特点下面我们来进一步归纳、总结这个比较陌生的计算机系统的一些最重要的基本特点:(1)程序所要运算处理的数据,大多数是位于内存中的,少量数据在程序运行过程中临时由输入设备输入。程序和程序所要加工的数据同时位于同一个内存中。这就是冯.诺伊曼体系结构计算机的一个重要特点和思想存储程序的思想(在1.11节,我们可看到这一点的重要意义)。(2)CPU中的控制单元是根据PC寄存器中的数值,通过三套总线到内存中取到下一条要执行的指令的。取到这一条指令后,暂时存放在IR寄存器中。一条指令取完毕后(尚未执行前),控制单元会自动把PC寄存器的原来值加上L(L是刚刚取到的这条指令所占的字节数),以便为取下一条指令做准备。由此可见:首先,即使是取指令这样一件比较简单的事,在控制单元的控制下,三套总线、内存和CPU中的PC寄存器、IR寄存器也要密切配合、严格按照先后顺序才能够完成,缺一不可。控制总线在其中扮演了一个传送控制单元发出的命令的重要角色。其次,控制单元的这一周期性硬件动作决定了:指令序列必须严格按照执行顺序,从小地址号内存单元连续地向大地址号内存单元依次存放,见下图1.17所示(假设每条指令占据一个字节的内存) 内存地址nn+1n+2n+3n+4n+5n+6某程序的指令第1条第2条第3条第4条第5条第6条第7条 图1.17内存中的片段:指令在内存中的顺序存放方式 (3)CPU中的控制单元是整个计算机(进行取指执行指令)的核心控制部件。控制单元的工作,完全是周期性的,即它永远

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论