计算机的基本工作原理何勤811doc.docx
《计算机的基本工作原理何勤811doc.docx》由会员分享,可在线阅读,更多相关《计算机的基本工作原理何勤811doc.docx(49页珍藏版)》请在冰豆网上搜索。
![计算机的基本工作原理何勤811doc.docx](https://file1.bdocx.com/fileroot1/2023-8/19/1f7fe4d0-4825-419d-9f38-bd52d2171203/1f7fe4d0-4825-419d-9f38-bd52d21712031.gif)
计算机的基本工作原理何勤811doc
第一章计算机的基本工作原理(初)
一种有着神奇的“魔力”和“智能”的人造设备正在迅速地、彻底地、默默无闻或者令人震惊地改变和丰富我们所生活的大千世界。
这个看起来很不起眼的,在一些场合被称为“电脑”的电器设备,是如何具有如此神奇的“魔力”和“智能”的?
本章将带你开始解开这个谜。
1.1节介绍理想厨房系统,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所示:
理想厨房自动冰箱
碟名碟中物品格子编号格子(存放加工步骤或原料)
R0
R1厨具
R2厨师
PC厨房管理员
IR
材料传送带
地址传送带
控制传送带
0
1
2
3
4
5
6
7
图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
(注意:
冰箱格子以及理想厨房碟子中存放的物品都用了斜体字)
理想厨房自动冰箱
碟名碟中物品地址冰箱格子中物品
R0
R1厨具
R2厨师
PC0厨房管理员
IR
材料传送带
地址传送带
0
控制传送带
取
0
1
2
3
4
5
6
7
取地址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状态:
理想厨房自动冰箱
碟名碟中物品地址冰箱格子中物品
R0
R1厨具
R2厨师
PC1厨房管理员
IR取地址5到R0碟
材料传送带
地址传送带
控制传送带
0
1
2
3
4
5
6
7
取地址5到R0碟
取地址6到R1碟;
将R0和R1炒好倒入R2碟;
送R2碟到地址7中;
香菇
菜心
图1.4
厨房管理员读到指令存放碟(即 IR碟)中的加工步骤后,知道要到冰箱地址号为5的格子中去取原材料,并且取来后要放到R0碟中。
因此,管理员向控制传送带上送出一个“取”信号,然后马上将5这个数放到地址传送带上。
冰箱收到“取”信号后,知道理想厨房要取物品。
然后,冰箱从地址传送带得到了5,于是冰箱将地址为5的格子中的物品“香菇”取出来,放到材料传送带上。
材料传送带上的物品“香菇”,传到理想厨房后,按照指令的要求(通过厨房内部的传送带)送到了R0碟中。
第一条指令执行完后,理想厨房系统处于如下图1.5所示的状态:
理想厨房自动冰箱
碟名碟中物品地址冰箱格子中物品
R0香菇
R1厨具
R2厨师
PC1厨房管理员
IR取地址5到R0碟
材料传送带
地址传送带
5
控制传送带
取
0
1
2
3
4
5
6
7
取地址5到R0碟
取地址6到R1碟;
将R0和R1炒好倒入R2碟;
送R2碟到地址7中;
香菇
菜心
图1.5
2)接下来,开始执行下一条指令的取指周期,类似于前一条指令,在取指周期完成后,理想厨房系统处于如下图1.6状态:
理想厨房自动冰箱
碟名碟中物品地址冰箱格子中物品
R0香菇
R1厨具
R2厨师
PC2厨房管理员
IR取地址6到R1碟;
材料传送带
地址传送带
1
控制传送带
取
0
1
2
3
4
5
6
7
取地址5到R0碟
取地址6到R1碟;
将R0和R1炒好倒入R2碟;
送R2碟到地址7中;
香菇
菜心
图1.6
管理员分析指令存放碟中的加工步骤(指令)后,知道要到冰箱地址为6的格子中去取原材料,并且放到R1碟中。
因此,管理员向控制传送带上发一个“取”信号,然后马上将6这个数放到地址传送带上。
冰箱收到“取”信号后,知道理想厨房要取东西,然后,冰箱从地址传送带得到了6,于是冰箱将地址为6的格子中的物品“菜心”取出,放到材料传送带上。
材料传送带上的物品“菜心”,传到理想厨房后,按照指令的要求通过厨房内部的传送带被自动送到R1碟中。
第二条指令执行完后理想厨房系统处于如下图1.7状态:
理想厨房自动冰箱
碟名碟中物品地址冰箱格子中物品
R0香菇
R1菜心厨具
R2厨师
PC2厨房管理员
IR取地址6到R1碟;
材料传送带
地址传送带
6
控制传送带
取
0
1
2
3
4
5
6
7
取地址5到R0碟
取地址6到R1碟;
将R0和R1炒好倒入R2碟;
送R2碟到地址7中;
香菇
菜心
图1.7
3)在第3条指令的取指周期完成后,理想厨房系统处于如下图1.8状态:
理想厨房自动冰箱
碟名碟中物品地址冰箱格子中物品
R0香菇
R1菜心厨具
R2厨师
PC3厨房管理员
IR将R0和R1炒好倒入R2碟;
材料传送带
地址传送带
2
控制传送带
0
1
2
3
4
5
6
7
取地址5到R0碟
取地址6到R1碟;
将R0和R1炒好倒入R2碟;
送R2碟到地址7中;
香菇
菜心
图1.8
厨房管理员看到IR碟中的内容后,命令厨师将R0碟和R1碟中的原材料倒入锅中炒好后,倒入R2碟中。
完成后如图1.9
理想厨房自动冰箱
碟名碟中物品地址冰箱格子中物品
R0香菇
R1菜心厨具
R2香菇菜心厨师
PC3厨房管理员
IR将R0和R1炒好倒入R2碟;
材料传送带
地址传送带
控制传送带
0
1
2
3
4
5
6
7
取地址5到R0碟
取地址6到R1碟;
将R0和R1炒好倒入R2碟;
送R2碟到地址7中;
香菇
菜心
图1.9
4)第4条指令在取指令周期完成后,理想厨房系统,处于如下图1.10状态:
理想厨房自动冰箱
碟名碟中物品地址冰箱格子中物品
R0香菇
R1菜心厨具
R2香菇菜心厨师
PC4厨房管理员
IR送R2碟到地址7中;
材料传送带
地址传送带
控制传送带
0
1
2
3
4
5
6
7
取地址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香菇菜心厨师
PC4厨房管理员
IR送R2碟到地址7中;
材料传送带
地址传送带
控制传送带
0
1
2
3
4
5
6
7
取地址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二进制数的概念
首先,来看一张部分十进制数与二进制数的数值对照表:
十进制数所对应的二进制数
00
11
210
311
4100
5101
6110
7111
81000
91001
101010
111011
121100
131101
141110
151111
表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是一个二进制数。
1.4.1将二进制整数转化成十进制整数
一个十进制的数,其数值可用以下展开式来表示:
比如3785
(3785)10=3×103+7×102+8×101+5×100
(1)
我们把
(1)式中10的几次方称为权重,权重左边的乘数称为系数。
(1)式中共有4个系数,从左到右依次是:
“3”“7”“8”“5”。
可见,在数值数据中,越左边的数字(系数)权重越大。
类似的,一个二进制数,其数值也可用以下展开式来表示:
比如二进制数1011
(1011)2=1×23+0×22+1×21+1×20
(2)
此二进制数的值,等于十进制的1×8+0×4+1×2+1×1=8+2+1=(11)10(3)
由此可以得到:
二进制整数转化成十进制整数的一般方法:
只要将该二进制整数(即1011)展开后的
(2)式中的每一位的系数值,乘以这一位的转化成十进制数后的权重(即2的几次方),然后再将逐个乘积项的数值相加起来即可。
练习1:
将二进制数11010010转换成十进制。
1.4.2将十进制整数转化成二进制数:
1.将十进制数转换成二进制数的短除法:
短除法把要转换的十进制整数不断的除以2然后取余数,商为0的时候结束。
然后把余数倒着写出来。
例如:
把84转换成二进制数
即:
(84)10=(1010100)2
注意:
短除法实际上适用于将一个十进制整数转换为一个任意n(n>2)进制的整数,只需将除数2变为n即可(参见例题)。
可选练习1:
查阅参考书(比如任何一本《计算机导论》或《大学计算机基础》),看看十进制的纯小数是如何转化为二进制的纯小数的。
十进制的实数是如何转化为二进制的实数的。
1.5数和码的含义和区别:
什么是数?
数是表示事物的量的基本数学概念。
什么是码?
“码”是“编码”的简称。
用预先规定的方法将文字、数字或其他对象编成数码,或将信息、数据转换成规定的电脉冲信号。
编码是信息从一种形式或格式转换为另一种形式的过程。
解码,是编码的逆过程。
1.5.1十进制的数和码:
我们通过一个例子来说明十进制数字系统中数和码的区别
如果3785用于表示数,则越高位(即越左边的位)的数字越重要(因为权重越大,在十进制数3785中,“3”的权重是103,而“5”的权重是100)。
而3785用于表示非数值的码,则每一位都同样重要。
码值仅相差一位,所表示的文字(或代表的事物)可以有巨大的区别(比如:
3785表示汉字“前”,而3786表示汉字“后”)。
十进制的数字串“3785”由“3”、“7”、“8”、“5”组成。
它既可以表示一个数值为三千七百八十五的十进制数,也可以表示一个码为3785的汉字(或者表示任何别的什么10000个同类事物中的编码为3785的一个特定事物)。
1.5.2二进制的数和码
与十进制一样,二进制数和二进制码也有类似的区别。
只不过在二进制中只能用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个元素的集合进行编码。
将一个码值与一个元素关联起来,生成一张编码解码表。
1.5.3字节——8位二进制
在计算机、通信及其大量相关应用中,人们最关心的是长度为8位的二进制位串。
这是由于现代的绝大多数计算机和数字化的通信网络设备,都是以8位二进制作为计量数据存储容量和传输容量的一种常用单位。
我们把一个8位二进制称为一个字节。
如果用一个字节的位串来表示无符号的整数,则能够表示28=256个整数值。
分别是从0到255,对应于二进制数从(00000000)2到(11111111)2。
如果用某一个字节的位串来表示一种非数值的编码,则能够用来表示256种同类事物中的一个