2.计算机工作原理的通俗理解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
可计算性
• 【例2.1】若m和n是两个正整数,并且m≥n,求 m和n的最大公因子的欧几里得算法可表示为:
– E1:[求余数] 以n除m得余数r。 – E2:[余数为 0吗?] 若r=0,计算结束,n即为答案; 可以在有限步内机械地完成? 否则转到步骤E3。 – E3:[互换] 把m的值变为n,n的值变为r,重复上述 步骤。
• 一位二进制加法运算器的逻辑图:3个输入、两个输出
– – – – 两个加数(输入) 来自其它位的进位位(输入) 和(输出) 往上位的进位位(输出)
来自其他位进位 加数 加数 加法器 和 进位
图2.4 带进位加法计算示意图
四位加法运算逻辑
来自其他位进位 0 1 加法器 进位 和 1 加法器 进位 和 1
这给我们一个思路
• 如果设计一台机器用于计算,每一个时刻都只需 要进行加减乘除四则运算中的一种 • 机器如何获得该数据呢?
• 机器如何获得这些规则?
– 每一种运算显然都需要有参与运算的数据,人类是通过感觉器官 获得的数据(眼睛看、耳朵听、手摸……)
– 获得了数据,显然需要运算,我们知道1+2=3,6*7=42,……而 这些是我们非常熟悉的公式,数学运算都需要按照上述公式计算, 换句话讲,机器如果想计算,必须也知道这些运算规则。
数都是常数(1,2,3,4,5,6,7,8,9,……),很显然这些数包含整数、小数, 还有一个无限不循环小数,机器如何认识这些数? (2)虽然简化运算为四则运算,机器如何知道什么时候用加法?什 么时候做减法?……,换句话说,机器如何认识+、-、x、÷呢? (3)公式中含有括号,就是说运算过程中存在着运算的顺序,先算括 号内的,后算括号外的,而且加减乘除本身也有先算乘除后算加减的顺序, 机器如何按照数学要求的顺序执行呢?
指令的识别与存储
• 这里存储的只是数据, 而不是指令,那指令该 如何存储呢? • 到目前为止,我们所说 的指令,都是人可以看 懂的,而机器如何看懂 指令,还是一个问题。
X1 X2 Y
23 56 79
• 指令是完成某一个功能的,例如:
– – – – – 存数、 加法、 减法、 逻辑运算 ……等,
• 那么这些功能是不是数量有限的呢?
• 加、减、乘、除四则运算器已经用硬件实现了。 • 但要实现不同的计算,还需要:
参与运算的数据; 运算的顺序; 这两项如果用硬件实现,那么就只能进行一个算法; 要想固定的硬件可以实现多种运算,上述两个过程就 必须可变。 – 此部分需要用“软件”实现。 – – – –
加法器分析
参与运算的数据和运算顺序 是可变的 应该由人来改变
– 这可以利用数学和逻辑学的原理推导,结论是有限的。也就是说,指 令的个数是有限的(指令集是有限的)。
• 既然是有限的,是否可以用编码方式来区分每一个指令呢?例如:
– – – – 000代表存数, 001代表加法, 010代表减法, ……
指令用二进制编码
• 用简化的语言 • 采用二进制 描述如下: 进行编码:
• 机器如何记录计算的中间结果?
– 假设机器能获得运算数据,也知道运算规则,从人类的计算步骤看,都有一个 “记”下中间运行结果的过程,该中间结果可能参与后面的计算,那机器如何记 录中间结果,又如何能够将中间结果告知人类,或者参与下面的计算呢?
关于运算器
• 加法器,有两个输入和一个和
– 两个输入:加数、被加数, – 一个输出:和, – 先不考虑进位与借位问题。
人的计算步骤
1. 算8*9得到72,先记在纸上; 2. 计算 x*x 得到一个值(1.0955),再记在纸上; 3. 计算1.0955/72,得到一个值0.0152,再记在 纸上; 4. 计算1-0.0152得到0.9848,记在纸上; 5. 按同样的方法和步骤计算出的值,记录在纸上, 将该值按照公式乘以0.9848; 6. 用1减去(5)得到的值; 7. ……。
关于指令、指令集
• 指令集到底是什么? • 机器如何识别指令集? • 操作序列又如何可以自动执行呢?
假设存储器
• 假设已经找到了一个办法,生产出一种东西,可 以存储二进制: • 可以往该设备中写入任意的8个二进制位,该设备 可以保留其信息(8位二进制位); • 想要用这个信息,可以从该设备中读出此信息。
关于指令、程序和存储
• von Neumann和Burks、Goldstine说出了这样一段话: • “用形式逻辑的方法可以很容易看到,在理论上存在着某种[指令集]足以 控制任何的操作序列并使之执行……从当前的观点出发,在选择一个[指 令集] 时,真正的决定性因素是要更多地考虑其实际性质:[指令集]要求 的设备简单性,它的应用对于解决实际重要问题的明确性以及它解决该类 问题的处理速度。”
加数
+
加数 图2.1 加法计算示意图
和
ຫໍສະໝຸດ Baidu
关于运算器
• 加法器的实现?
– 十进制如何实现?X – 二进制呢?
• 二进制加法运算规则:
– – – – 0+0=0 ; 1+0 = 1 ; 0+1=1 ; 1+1 =10(最低位为0 , 1为进位位)
• 不考虑进位的情 况下二进制加法 运算规则为: • 0+0=0 ; • 1+0 = 1 ; • 0+1=1; • 1+1 = 0(进位位 被丢掉)
我们看到:(1)泰勒级数可以无穷展开,但实际应用中在一定精度范 围内步骤即变为有限步;(2)每一项的算法步骤基本一致,只是个别地 方数字的变化;(3)将求正弦函数值的问题转化成了四则运算(基本计 算)。这给我们一个思路:是否可以将一些复杂的计算转换为简单的、基 本的计算(四则运算)?答案是肯定的。
可计算性
0 1
0 1 1 0 加法器 进位 加法器 进位
和 1
和 1
0 图2.5 4位带进位加法计算示意图
加法器分析
• 通过加法器内容的分析我们解决了几个问题:
– (1)数据的识别问题。用二进制表示数据,而二进制 的每一位可以用物理的+5V或0V来表示,数据问题转 换为了电压问题; – (2)加法规则利用了数字逻辑的与或非门电路实现, 将加法规则融入到了电路中。 – 但是,如何“记录”所得到的结果,到目前为止,是 用电压形式表示。
三条指令; 有先后顺序; 三条指令完成一个加法运算
关于指令、指令集
①MOV A,8 ②MOV B,7 ③ADD C,A,B •三步完成一个运算 •这三步由人来设定 •机器按照设定好的顺序依 次执行 •将运算结果保存在C中
程 序(或指令序列)
问题又出现了
• (1)机器如何识别“指令”?(或者说:机器如 何能看懂“指令”?) • (2)假设机器可以识别“指令”,那么是否要存 储程序?如果需要,机器又如何存储程序? • (3)机器如果能够存储程序,机器如何找到每一 条指令,或者说通过什么手段(或方法)找到每 一条指令? • (4)指令的顺序是不可变的,是否意味着存储程 序需要按照某种顺序存储?顺序又是什么呢?
加法器分析
• 假设我们已经用数字电路分别实现了加减乘除运 算器,也就是说四则运算已经可以分别进行了。 • 这里的加法器是用数字电路实现的 • 如果要变化需要重新设计新的数字电路。属于 “硬件” 。
加法器分析
• 要计算正弦值需要做以下的工作:
– – – – 选择一个乘法器,实现8*9,得到一个结果y1; 选择一个乘法器,实现x*x,得到一个结果y2; 选择一个除法器,实现y1/y2; ……
指令的识别与存储
• 那么如何存储?我们先 来看一个程序是什么样 的,以一个加法程序为 例:
– 将被加数放在一个存储 器中(X1); – 将加数放在另一个存储 器中(X2); – 实现加法运算,将和存 在某一个存储器中 (Y); – 结束程序;
• 用简化的语言描述如 下:
– – – – MOV X1,23 MOV X2,56 ADD Y,X1,X2 HALT
• 【重点】:理解计算机为什么会出现冯•诺依曼体系。
2.1 关于计算问题
• 关于计算问题是一个困扰了人类长达几千年的问 题,其中一个重要的问题就是:
– 到底什么是计算?
• 人类还有一个梦想:
– 能否让计算自动进行?
• 这些问题直到20世纪初才有了答案。
可计算性
• 可计算理论:通过建立计算的数学模型,区分哪 些是可计算的,哪些是不可计算的。计算的过程 就是执行算法的过程。 • 可计算性(calculability)是指一个实际问题是否可 以使用计算机来解决。 • 一个可以使用计算机解决的问题是“可以在有限 步骤内被解决的问题”。 • 分析某个问题的可计算性意义重大,它使得人们 不必浪费时间在不可能解决的问题上。
MOV X1,23 MOV X2,56 ADD Y,X1,X2 HALT 000 X1,23 000 X2,56 001 Y,X1,X2 011
• 采用二进制进 行编码:
000 000 23 000 001 56 001 010 000 001 011
X1、X2、Y也用数字来 代表, •000代表X1, •001代表X2, •010代表Y
关于指令、指令集
• 假设有三个“存储器”,给三个存储器三个名字:A、B、 C。 • A放加数,B放被加数,C用来存放和。 • 要实现8+7,我们需要做几件事:
– – – – – – – (1)将数字8放在A存储器中; (2)将数字7放在存储器B中; (3)选择加法器; (4)从A中读出数字8 放在加法器的加数端; (5)从A中读出数字7放在加法器的被加数端; (6)加法器自动按规则计算出和值与进位位; (7)将和15 放在存储器C中。
考虑逻辑运算的异或运算
关于运算器
• 加法器在不考虑进位的情况下 • 等价于异或门 • 所以,可以用“异或”电路实现无进位加法运算
加数
和
加数 XOR 图2.2 加法计算示意图
考虑进位的加法运算
来自其它的进位
加数 XOR 加数 和 XOR 和
AND
OR
进位
AND
图2.3 带进位加法计算示意图
考虑进位的加法运算
• 这是计算加法的算法流程,也是一个分为7步的操作序列
关于指令、指令集
• 用一个英文的缩写将上述流程重新写一遍:
①MOV A,8 ②MOV B,7 ③ADD C,A,B ;数字8放在A存储器中; ;将数字7放在B存储器中; ;选择加法器;从A中读出 ;数字8放在加法器的加数端 ;从A中读出数字7放在加法器的 ;被加数端;加法器自动按规则 ;计算出和值与进位位;将和15 ;放在存储器C中。
sin(x) x * (1 x * x /(2 * 3) * (1 x * x /(6 * 7) * (1 x * x /(8 * 9)))))
假设要设计这样一台机器,具备加减法运算能力,可以按照泰勒级数的公式自动 计算正弦函数值。显然存在几个问题:
(1)x是一个变量,每次计算时会给定一个确定的值,例如:π /3.,其它的
我们发现: (1)计算过程是有穷的(有限性); (2)计算的每一步都是能够机械实现的(机械性)。
可计算性
• 【例2.2】求sin(x)的值常用的方法是泰勒级数展开
x
2 m1 x3 x5 x7 x sin(x) x (1) m1 3! 5! 7! (2m 1)!
2. 计算机工作原理的通俗理解
计算机的基本思路 计算机的基本组成原理 计算机基本概念
本章重点
• 【学习目标】:了解计算机的基本组成;了解计算机软硬 件划分的原则。
• 【知识点】:
(1)如何理解程序? (2)如何理解指令? (3)如何理解存储? (4)冯诺依曼体系是如何工作的? (5)如何区分“硬件”和“软件”?
参与运算的数据 运算顺序
硬件
运算规则嵌入硬件 (加法器、减法器、乘法器、除法器)
我们的理想目标
• 人告诉机器执行的步骤,由机器自动按照人类设 定好的步骤自动执行 • 那么我们就要思考下列几个问题:
– (1)谁来选择乘除法器? – (2)得到的结果y1、y2,如何“记录”,是记在纸上? 还是记录在什么地方? – (3)既然已经有了一个算法流程,能不能让流程自行 运转? – (4)如果能够运转,如何表述该流程? – (5)流程如果可以表述,不同的计算显然流程不同, 参与运算的数据也不相同,实现的机器能否接受由人 来改写流程,从而实现不同的计算呢?