计算机工作原理的通俗理解_第1页
计算机工作原理的通俗理解_第2页
计算机工作原理的通俗理解_第3页
计算机工作原理的通俗理解_第4页
计算机工作原理的通俗理解_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

1、2. 计算机工作原理的通俗理解计算机的基本思路计算机的基本组成原理计算机基本概念本章重点 【学习目标】:了解计算机的基本组成;了解计算机软硬件划分的原则。 【知识点】:(1)如何理解程序?(2)如何理解指令?(3)如何理解存储?(4)冯诺依曼体系是如何工作的?(5)如何区分“硬件”和“软件”? 【重点】:理解计算机为什么会出现冯诺依曼体系。2.1 关于计算问题 关于计算问题是一个困扰了人类长达几千年的问题,其中一个重要的问题就是: 到底什么是计算? 人类还有一个梦想: 能否让计算自动进行? 这些问题直到20世纪初才有了答案。可计算性 可计算理论:通过建立计算的数学模型,区分哪些是可计算的,哪些

2、是不可计算的。计算的过程就是执行算法的过程。 可计算性(calculability)是指一个实际问题是否可以使用计算机来解决。 一个可以使用计算机解决的问题是“可以在有限步骤内被解决的问题”。 分析某个问题的可计算性意义重大,它使得人们不必浪费时间在不可能解决的问题上。可计算性 【例2.1】若m和n是两个正整数,并且mn,求m和n的最大公因子的欧几里得算法可表示为: E1:求余数 以n除m得余数r。 E2:余数为0吗? 若r=0,计算结束,n即为答案;否则转到步骤E3。 E3:互换 把m的值变为n,n的值变为r,重复上述步骤。我们发现:(1)计算过程是有穷的(有限性);(2)计算的每一步都是能

3、够机械实现的(机械性)。可以在有限步内机械地完成? 【例2.2】求sin(x)的值常用的方法是泰勒级数展开 )!12() 1(! 7! 5! 3)sin(121753mxxxxxxmm可计算性x我们看到:(1)泰勒级数可以无穷展开,但实际应用中在一定精度范围内步骤即变为有限步;(2)每一项的算法步骤基本一致,只是个别地方数字的变化;(3)将求正弦函数值的问题转化成了四则运算(基本计算)。这给我们一个思路:是否可以将一些复杂的计算转换为简单的、基本的计算(四则运算)?答案是肯定的。可计算性)9*8/(*1 (*)7*6/(*1 (*) 3*2/(*1 (*)sin(xxxxxxxx假设要设计这样

4、一台机器,具备加减法运算能力,可以按照泰勒级数的公式自动计算正弦函数值。显然存在几个问题: (1)x是一个变量,每次计算时会给定一个确定的值,例如:/3.,其它的数都是常数(1,2,3,4,5,6,7,8,9,),很显然这些数包含整数、小数,还有一个无限不循环小数,机器如何认识这些数?机器如何认识这些数?(2)虽然简化运算为四则运算,机器如何知道什么时候用加法?什么时候做减法?,换句话说,机器如何认识机器如何认识+、-、x、呢?、呢?(3)公式中含有括号,就是说运算过程中存在着运算的顺序,先算括号内的,后算括号外的,而且加减乘除本身也有先算乘除后算加减的顺序,机器如何按照数学要求的顺序执行呢?

5、机器如何按照数学要求的顺序执行呢?人的计算步骤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. 。这给我们一个思路 如果设计一台机器用于计算,每一个时刻都只需要进行加减乘除四则运算中的一种 机器如何获得该数据呢? 每一种运算显然都需要有参与运算的数据,人类是通过感觉器官获得的数据(眼睛看、耳朵听、手摸) 机器如何获得

6、这些规则? 获得了数据,显然需要运算,我们知道1+2=3,6*7=42,而这些是我们非常熟悉的公式,数学运算都需要按照上述公式计算,换句话讲,机器如果想计算,必须也知道这些运算规则。 机器如何记录计算的中间结果?假设机器能获得运算数据,也知道运算规则,从人类的计算步骤看,都有一个“记”下中间运行结果的过程,该中间结果可能参与后面的计算,那机器如何记录中间结果,又如何能够将中间结果告知人类,或者参与下面的计算呢?关于运算器 加法器,有两个输入和一个和 两个输入:加数、被加数, 一个输出:和, 先不考虑进位与借位问题。 +加数加数和图2.1 加法计算示意图关于运算器 加法器的实现? 十进制如何实现

7、?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(进位位被丢掉)考虑逻辑运算的异或运算关于运算器 加法器在不考虑进位的情况下 等价于异或门 所以,可以用“异或”电路实现无进位加法运算 加数加数和 XOR图2.2 加法计算示意图考虑进位的加法运算和加数 加数 XORXOR AND AND OR来自其它的进位和进位图2.3 带进位加法计算示意图考虑进位的加法运算 一位二进制加法运算器的逻辑图:3个输入、两个

8、输出 两个加数(输入) 来自其它位的进位位(输入) 和(输出) 往上位的进位位(输出)加数和 加数进位来自其他位进位加法器图2.4 带进位加法计算示意图四位加法运算逻辑 加法器进位和 100和 1 1加法器进位来自其他位进位加法器0和 11进位1和 10进位加法器1 0图2.5 4位带进位加法计算示意图加法器分析 通过加法器内容的分析我们解决了几个问题: (1)数据的识别问题。用二进制表示数据,而二进制的每一位可以用物理的+5V或0V来表示,数据问题转换为了电压问题; (2)加法规则利用了数字逻辑的与或非门电路实现,将加法规则融入到了电路中。 但是,如何“记录”所得到的结果,到目前为止,是用电

9、压形式表示。加法器分析 假设我们已经用数字电路分别实现了加减乘除运算器,也就是说四则运算已经可以分别进行了。 这里的加法器是用数字电路实现的 如果要变化需要重新设计新的数字电路。属于 “硬件” 。加法器分析 要计算正弦值需要做以下的工作: 选择一个乘法器,实现8*9,得到一个结果y1; 选择一个乘法器,实现x*x,得到一个结果y2; 选择一个除法器,实现y1/y2; 加、减、乘、除四则运算器已经用硬件实现了。 但要实现不同的计算,还需要: 参与运算的数据; 运算的顺序; 这两项如果用硬件实现,那么就只能进行一个算法; 要想固定的硬件可以实现多种运算,上述两个过程就必须可变。 此部分需要用“软件

10、”实现。加法器分析硬件硬件(加法器、减法器、乘法器、除法器)(加法器、减法器、乘法器、除法器)参与运算的数据参与运算的数据运算顺序运算顺序运算规则嵌入硬件参与运算的数据和运算顺序是可变的应该由人来改变我们的理想目标 人告诉机器执行的步骤,由机器自动按照人类设定好的步骤自动执行 那么我们就要思考下列几个问题: (1)谁来选择乘除法器? (2)得到的结果y1、y2,如何“记录”,是记在纸上?还是记录在什么地方? (3)既然已经有了一个算法流程,能不能让流程自行运转? (4)如果能够运转,如何表述该流程? (5)流程如果可以表述,不同的计算显然流程不同,参与运算的数据也不相同,实现的机器能否接受由人

11、来改写流程,从而实现不同的计算呢?关于指令、程序和存储von Neumann和Burks、Goldstine说出了这样一段话:“用形式逻辑的方法可以很容易看到,在理论上存在着某种指令集足以控制任何的操作序列并使之执行从当前的观点出发,在选择一个指令集 时,真正的决定性因素是要更多地考虑其实际性质:指令集要求的设备简单性,它的应用对于解决实际重要问题的明确性以及它解决该类问题的处理速度。”关于指令、指令集 指令集到底是什么? 机器如何识别指令集? 操作序列又如何可以自动执行呢?假设存储器 假设已经找到了一个办法,生产出一种东西,可以存储二进制: 可以往该设备中写入任意的8个二进制位,该设备可以保

12、留其信息(8位二进制位); 想要用这个信息,可以从该设备中读出此信息。关于指令、指令集 假设有三个“存储器”,给三个存储器三个名字: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中。 这是计算加法的算法流程,也是一个分为7步的操作序列关于指令、指令集 用一个英文的缩写将上述流程重新写一遍:MOV A,8 ;数字

13、8放在A存储器中;MOV B,7 ;将数字7放在B存储器中;ADD C,A,B ;选择加法器;从A中读出 ;数字8放在加法器的加数端 ;从A中读出数字7放在加法器的 ;被加数端;加法器自动按规则 ;计算出和值与进位位;将和15 ;放在存储器C中。三条指令;三条指令;有先后顺序;有先后顺序;三条指令完成一个加法运算三条指令完成一个加法运算关于指令、指令集MOV A,8 MOV B,7 ADD C,A,B三步完成一个运算这三步由人来设定机器按照设定好的顺序依次执行将运算结果保存在C中程 序(或指令序列)问题又出现了 (1)机器如何识别“指令”?(或者说:机器如何能看懂“指令”?) (2)假设机器可

14、以识别“指令”,那么是否要存储程序?如果需要,机器又如何存储程序? (3)机器如果能够存储程序,机器如何找到每一条指令,或者说通过什么手段(或方法)找到每一条指令? (4)指令的顺序是不可变的,是否意味着存储程序需要按照某种顺序存储?顺序又是什么呢?指令的识别与存储 那么如何存储?我们先来看一个程序是什么样的,以一个加法程序为例: 将被加数放在一个存储器中(X1); 将加数放在另一个存储器中(X2); 实现加法运算,将和存在某一个存储器中(Y); 结束程序; 用简化的语言描述如下: MOV X1,23 MOV X2,56 ADD Y,X1,X2 HALT指令的识别与存储 这里存储的只是数据,而

15、不是指令,那指令该如何存储呢? 到目前为止,我们所说的指令,都是人可以看懂的,而机器如何看懂指令,还是一个问题。235679X1X2Y指令是完成某一个功能的,例如: 存数、 加法、 减法、 逻辑运算 等,那么这些功能是不是数量有限的呢? 这可以利用数学和逻辑学的原理推导,结论是有限的。也就是说,指令的个数是有限的(指令集是有限的)。既然是有限的,是否可以用编码方式来区分每一个指令呢?例如:000代表存数,001代表加法,010代表减法,指令用二进制编码 采用二进制进行编码:000 X1,23000 X2,56001 Y,X1,X2011 用简化的语言描述如下:MOV X1,23 MOV X2,

16、56ADD Y,X1,X2HALT 采用二进制进行编码:000 000 23000 001 56001 010 000 001011X1、X2、Y也用数字来代表,000代表X1,001代表X2,010代表Y指令用二进制编码 采用二进制进行编码:000 000 23000 001 56001 010 000 001011机器看到的指令序列存储形式 设定存储的形式,包含:地址(地址按顺序排列)存储内容 如果已知指令序列的首地址(10) 如果指令顺序存储(11、12、13、14、) 通过地址+1,可以依次访问指令序列。00000023101112000001561314150010100001617

17、18001011192021图2.7 为存储器建立地址地址存储内容指令序列首地址指令格式 每一条指令由两部分内容: 操作码(operator) 操作数或操作数地址(Number OR Address)操作码操作数(或操作数地址)图2.8 指令格式图指令的可能格式操作码操作码操作码A操作码A1A2操作码A1A2A3操作码A1An零地址指令一地址指令二地址指令三地址指令多地址指令图2.9 指令格式指令的自动执行 假定存在如下的一个汇编语言的指令序列: MOVAX,1234H B8 34 12 ADD AX,2345H 05 45 23B8H34H12H05H45H23H2000H2001H2002

18、H2003H2004H2005H图2.10 程序存储示意图 指令序列存储 第一个地址为: 2000H (2000H)存的 是第一条指令的 操作码B8H34H12H05H45H23H2000H2001H2002H2003H2004H2005H图2.10 程序存储示意图2000HPCB8H指令意思:指令的操作码部分, 将后两个地址的数据移动到AX寄存器中B8H34H12H05H45H23H2000H2001H2002H2003H2004H2005H图2.10 程序存储示意图2001HPC34H指令意思:指令的数据部分,第一个字节B8H34H12H05H45H23H2000H2001H2002H20

19、03H2004H2005H图2.10 程序存储示意图2002HPC12H指令意思:指令的数据部分,第二个字节B8H34H12H05H45H23H2000H2001H2002H2003H2004H2005H图2.10 程序存储示意图2002HPC05H指令意思:第二条指令的操作码B8H34H12H05H45H23H2000H2001H2002H2003H2004H2005H图2.10 程序存储示意图2002HPC45H指令意思:第二条指令的操作数B8H34H12H05H45H23H2000H2001H2002H2003H2004H2005H图2.10 程序存储示意图2002HPC23H指令意思:

20、第二条指令的操作数程序自动执行的设计 PC(Program Counter)寄存器 PC具备自动加一的能力 程序可以自动执行一、CPU执行的指令 机器指令:命令机器做某种操作的一条语句称为一个机器指令; ADD AX,5 ;8086CPU的一条指令 让计算机完成一个加法运算:加数为5,被加数存储在AX寄存器中,和存储在AX中 指令系统:全部机器指令的集合称为指令系统。 CPU工作原理指令系统示例操作码意义 助记符 00H加,A + NUMA ADD A, NUM(数字) 01H减,A NUMA SUB A, (ADDR) 02H乘,A * ADDR存储单元中的数据A MUL A, (ADDR)

21、 03H除,A / ADDR存储单元中的数据A DIV A, (ADDR) 04H逻辑与,A and NUMA AND A, NUM 05H取数,将一个数取到A中 LD A,NUM 06H存数,将A中的数保存到ADDR存储单元中 MOV (ADDR), A 07H停机 STOP CPU要完成什么功能? Fetch instruction: The processor reads an instruction from memory (register,cache,main memory). Interpret instruction: The instruction is ecoded to determine what action is required. Fetch data: The execution of an instruction may require reading data from memory or an I/O module. Process data: The execution of an instruction may require performing

温馨提示

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

评论

0/150

提交评论