《CPU内存基本工作原理.ppt》由会员分享,可在线阅读,更多相关《CPU内存基本工作原理.ppt(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第五讲:第六章CPU/内存基本工作原理北京大学 信息科学技术学院2013年10月本讲内容n计算机的数学理论模型图灵机nCPU的内部结构和工作原理n主存储器及其与CPU之间的信息传输n指令系统n计算机程序的基本控制结构计算机的数学理论模型图灵机可计算性对于一个问题,如果存在一个机械的过程,当我们给定一个输入,这个过程能够在有限步内终止并给出正确答案,那么,这个问题就称为是可计算的/具有可计算性。计算机理论的发展历史n图灵 研究了 可计算性n提出了 图灵机 和 图灵机能解决的问题类n证明了 存在着图灵机无法解决的问题类n冯诺伊曼 给出了 现代计算机的设计蓝图n提出了 数字计算机的组成原理和体系结构
2、n对指令、指令周期、指令系统和存储式程序控制原理都给出了明确的方案n库克(Stephen A.Cook)研究了 计算复杂性n有一些问题,虽然可计算,但随着问题规模的增加,就连最快的计算机用几百年也不能结束计算图灵机(Turing Machine)n1936年由 英国数学家 阿兰图灵 提出n一种抽象的计算模型n现代电子计算机的理论基础n基本思想:用 机器 来 模拟 人类 用 纸和笔 进行 数学运算的过程n人用纸和笔进行数学运算的两种简单动作:n在纸上写下或擦除某个符号n把注意力从纸的一个位置移动到另一个位置n同时,人的下一步动作依赖于两个因素:n此人当前所关注的纸上某个位置的符号n此人当前的思维
3、状态图灵机的构成成分(1)n1.一条无限长的纸带 TAPEn纸带被划分为一个接一个的小方格n每个方格存储一个来自一个有限符号集合的符号n纸带的两端可以无限延伸图灵机的图灵机的图灵机的图灵机的符号表符号表符号表符号表bcdefguvwxy TAPETAPETAPETAPE图灵机的构成成分(2)n2.一个读写头 HEADn能 读出当前位置的方格里的符号n能 在当前位置的方格里写入一个符号n能 向左、向右移动n一次移动一个方格的宽度bcdefguvwxy HEADHEADHEADHEAD向左移动向右移动图灵机的构成成分(3)n3.一个控制器 CONTROLn一个状态寄存器 REGn记录了图灵机的当前
4、状态n一个图灵机具有 有限数量的可能状态n一个控制规则表 TABLEn规定了图灵机如何在不同的状态之间进行迁移/转换bcdefguvwxy CONTROL有限状态控制器有限状态控制器图灵机的运作方式n图灵机的每一步动作取决于四个因素n控制器中的当前状态 qin读写头的当前位置(在哪个方格上)n当前位置的方格内存储的符号 sin控制规则表中的规则控制器 根据 qi、si、以及控制规则,决定:1.向当前方格内写入的符号2.读写头的移动方向(左移,右移,不动)3.控制器新的当前状态(START,HALT)停机状态停机状态启始状态启始状态控制规则表的结构当前状态当前方格中的符号写入方格的符号读写头移动
5、方向新的当前状态STARTqisisi+1左移qi+1HALT每一行存储了一条控制规则图灵机实例1 CONTROL当前状态当前状态STARTSTARTn符号表:0,1,*n状态集合:n START/开始,ADD/相加,CARRY/进位,OVERFLOW/溢出,RETURN/返回,HALT/停机*101*请同学们观察这个图灵机的功能是什么 CONTROL当前状态当前状态STARTSTART*101*ID当前状态当前符号写入符号移动方向新的状态01START*左移ADD02ADD01右移RETURN03ADD10左移CARRY04ADD*右移HALT05CARRY01右移RETURN06CARRY
6、10左移CARRY07CARRY*1左移OVERFLOW08OVERFLOW*右移RETURN09RETURN00右移RETURN10RETURN11右移RETURN11RETURN*不动HALT控制规则表 CONTROL当前状态当前状态ADDADD*101*ID当前状态当前符号写入符号移动方向新的状态01START*左移ADD02ADD01右移RETURN03ADD10左移CARRY04ADD*右移HALT05CARRY01右移RETURN06CARRY10左移CARRY07CARRY*1左移OVERFLOW08OVERFLOW*右移RETURN09RETURN00右移RETURN10RET
7、URN11右移RETURN11RETURN*不动HALT控制规则表 CONTROL当前状态当前状态ADDADD*100*ID当前状态当前符号写入符号移动方向新的状态01START*左移ADD02ADD01右移RETURN03ADD10左移CARRY04ADD*右移HALT05CARRY01右移RETURN06CARRY10左移CARRY07CARRY*1左移OVERFLOW08OVERFLOW*右移RETURN09RETURN00右移RETURN10RETURN11右移RETURN11RETURN*不动HALT控制规则表 CONTROL当前状态当前状态CARRYCARRY*100*ID当前状态
8、当前符号写入符号移动方向新的状态01START*左移ADD02ADD01右移RETURN03ADD10左移CARRY04ADD*右移HALT05CARRY01右移RETURN06CARRY10左移CARRY07CARRY*1左移OVERFLOW08OVERFLOW*右移RETURN09RETURN00右移RETURN10RETURN11右移RETURN11RETURN*不动HALT控制规则表 CONTROL当前状态当前状态CARRYCARRY*110*ID当前状态当前符号写入符号移动方向新的状态01START*左移ADD02ADD01右移RETURN03ADD10左移CARRY04ADD*右移
9、HALT05CARRY01右移RETURN06CARRY10左移CARRY07CARRY*1左移OVERFLOW08OVERFLOW*右移RETURN09RETURN00右移RETURN10RETURN11右移RETURN11RETURN*不动HALT控制规则表 CONTROL当前状态当前状态RETURNRETURN*110*ID当前状态当前符号写入符号移动方向新的状态01START*左移ADD02ADD01右移RETURN03ADD10左移CARRY04ADD*右移HALT05CARRY01右移RETURN06CARRY10左移CARRY07CARRY*1左移OVERFLOW08OVERFL
10、OW*右移RETURN09RETURN00右移RETURN10RETURN11右移RETURN11RETURN*不动HALT控制规则表 CONTROL当前状态当前状态RETURNRETURN*110*ID当前状态当前符号写入符号移动方向新的状态01START*左移ADD02ADD01右移RETURN03ADD10左移CARRY04ADD*右移HALT05CARRY01右移RETURN06CARRY10左移CARRY07CARRY*1左移OVERFLOW08OVERFLOW*右移RETURN09RETURN00右移RETURN10RETURN11右移RETURN11RETURN*不动HALT控制
11、规则表 CONTROL当前状态当前状态RETURNRETURN*110*ID当前状态当前符号写入符号移动方向新的状态01START*左移ADD02ADD01右移RETURN03ADD10左移CARRY04ADD*右移HALT05CARRY01右移RETURN06CARRY10左移CARRY07CARRY*1左移OVERFLOW08OVERFLOW*右移RETURN09RETURN00右移RETURN10RETURN11右移RETURN11RETURN*不动HALT控制规则表 CONTROL当前状态当前状态HALTHALT*110*ID当前状态当前符号写入符号移动方向新的状态01START*左移
12、ADD02ADD01右移RETURN03ADD10左移CARRY04ADD*右移HALT05CARRY01右移RETURN06CARRY10左移CARRY07CARRY*1左移OVERFLOW08OVERFLOW*右移RETURN09RETURN00右移RETURN10RETURN11右移RETURN11RETURN*不动HALT控制规则表图灵机实例1n这个图灵机的功能是什么?n启示:计算机程序执行的顺序性f(x)=x+1ID当前状态当前符号写入符号移动方向新的状态01START*左移ADD02ADD01不动HALT03ADD10左移CARRY04ADD*右移HALT05CARRY01不动HA
13、LT06CARRY10左移CARRY07CARRY*1左移OVERFLOW08OVERFLOW*不动HALT09RETURN00不动HALT10RETURN11不动HALT11RETURN*不动HALTCPU的内部结构和工作原理CPU 中央处理器nCentral Processing Unitn微型/个人计算机的CPU又被称为:nMPU(Micro Processor Unit)微处理器n计算机系统中的核心硬件设备n主要功能:执行程序n与其它部件协同工作CPU内存显卡CPU的内部结构算术逻辑运算器程序控制器寄存器组中断处理器CPU内部总线CPU的内部结构算术逻辑运算器程序控制器寄存器组中断处理
14、器CPU内部总线CPU的内部结构 寄存器组n由 一组寄存器 组成的 高速存储单元n用于 暂时存放 运算数据 或 其它信息n整数类型 的 操作数 或 运算结果n浮点数类型 的 操作数 或 运算结果n指令n指令地址n各种内部标志信息存取速度CPU寄存器CPU的内部结构算术逻辑运算器程序控制器寄存器组中断处理器CPU内部总线CPU的内部结构 程序控制器nProgram Control Unit,CPU的控制中心n分析/解释 指令n根据 分析/解释 结果 向 其它部件 发出命令n控制CPU的工作进度和工作方式n具体而言,当一条指令进入CPU后,程序控制器:1.1.分析分析/解释该指令的编码内容;解释该
15、指令的编码内容;2.2.确定为执行该指令应该完成的动作;确定为执行该指令应该完成的动作;3.3.确定指令相关的参数;例如:对于一个确定指令相关的参数;例如:对于一个“加法指令加法指令”,需要确定两,需要确定两个被加数的地址个被加数的地址4.4.将将 所需的数据所需的数据 从从 主存储器主存储器 读取到读取到 CPU CPU的寄存器中;的寄存器中;5.5.要求要求 算术逻辑运算器算术逻辑运算器 进行相关的运算动作;进行相关的运算动作;6.6.指示指示 算术逻辑运算器算术逻辑运算器 将将 运算结果运算结果 放入放入 寄存器寄存器 或或 主存储器主存储器 中。中。CPU的内部结构算术逻辑运算器程序控
16、制器寄存器组中断处理器CPU内部总线CPU的内部结构 算术逻辑运算器nArithmetic Logical Unit(ALU),主要进行算术运算和逻辑运算n加法指令的例子1.1.一条加法指令(其中包含了两个被加数一条加法指令(其中包含了两个被加数/操作数的地址)操作数的地址)进入进入CPUCPU;2.2.程序控制器程序控制器 分析该指令,判断两个操作数是在寄存器内,分析该指令,判断两个操作数是在寄存器内,还是在主存内;还是在主存内;3.3.如果在主存内,如果在主存内,程序控制器程序控制器 从主存内读入操作数;从主存内读入操作数;4.4.程序控制器程序控制器 将将 加法运算加法运算 提交给提交给
17、 ALUALU;5.5.ALUALU 进行加法运算;进行加法运算;6.6.ALUALU 根据根据程序控制器程序控制器 的指示的指示,将运算结果存放到寄存器,将运算结果存放到寄存器或主存中。或主存中。CPU的内部结构算术逻辑运算器程序控制器寄存器组中断处理器CPU内部总线CPU的内部结构 中断处理器n问题背景:n在在CPUCPU执行一般程序运算的过程中,如何处理紧急出现的执行一般程序运算的过程中,如何处理紧急出现的事件?事件?比如:鼠标移动事件比如:鼠标移动事件n发生一个紧急事件 触发一个中断信号n中断信号的处理:n当发现中断信号后,当发现中断信号后,程序控制器程序控制器 暂停正在运行的程序,暂
18、停正在运行的程序,保存该程序的运行现场(保存该程序的运行现场(CPUCPU内的各种状态信息);内的各种状态信息);n程序控制器程序控制器 根据中断信号的编码,从特定位置启动根据中断信号的编码,从特定位置启动 中断中断处理程序处理程序(由操作系统提供);(由操作系统提供);n中断处理程序中断处理程序 运行完毕后,运行完毕后,程序控制器程序控制器 恢复被暂停的程恢复被暂停的程序。序。CPU的内部结构 中断处理器n中断信号的产生:n各种软硬件各种软硬件,比如:鼠标、键盘、其它外设,比如:鼠标、键盘、其它外设n中断信号的接收:n中断处理器中断处理器 负责负责 中断信号的接收,并将中断信号的接收,并将中
19、断信号的编码中断信号的编码、中断处理程序的起始地址中断处理程序的起始地址 传给传给 程序控制器程序控制器n中断信号的检测n程序控制器程序控制器 在每条指令执行完毕后,都会检测在每条指令执行完毕后,都会检测 是否出现是否出现了新的中断信号了新的中断信号中断的启示n中断设置:应对紧急情况n中断处理程序n预案与灾难n例子:手术过程中出现大出血,处理大出血,继续手术CPU的主要性能指标n工作主频:nCPU内部的时钟频率;1.7GHz3.0GHzn运算字长:nCPU一次能够处理的二进制位数;32位/64位n运算速度:n每秒钟执行的指令数;例如:1000MIPS(Million Instructions
20、Per Second)指令系统2023/1/16北京大学39早期计算器指令系统n指令(program instruction)n组成程序的基本单位。n每一条指令:n规定了CPU执行指令应该完成的工作(运算、或其它控制动作),n控制CPU的相关部件执行微操作,从而完成指令所规定的功能。指令系统nCPU的指令系统是nCPU芯片的硬件与使用它的软件之间的一种严格的协议,反映了CPU能够完成的全部功能。nCPU的“指令系统”规定了:n它所能执行指令的全部类别,n指令的编码方式和每一类指令所涉及的参数等。指令系统n每一条指令用若干字节的二进制编码表示,包括它要完成的动作及其相关的参数n00000001
21、加法n指令的分类:n存储访问指令n算术运算指令n逻辑运算指令n条件判断和分支转移指令n输入输出指令n其他用于系统控制的指令指令工作周期n程序控制器 按照“读取指令执行指令”的周期循环地工作读取指令执行指令开机关机指令工作周期 n一个指令周期 一般需要 占用 多个CPU时钟周期/时钟节拍nCPU时钟周期/时钟节拍nCPU完成一个原子动作的基本时间单位n如果 一个CPU的时钟频率是 y GHz,那么这个CPU的时钟周期/时钟节拍 是 1/y 10-9 秒 指令工作周期 n一道应用题:n一个CPU能够在4个 时钟周期/时钟节拍 内 完成 一个指令周期。如果这个CPU的时钟频率/主频是2GHz,那么,
22、这个CPU在一秒之内能执行多少条指令?这个CPU的运算速度是多少?n答:n一秒中内可以执行的指令个数为 2 109 Hz 1秒/4=5108 个n运算速度为 500 MIPS进一步理解指令nRISC精简指令集,只包含100多条指令,不同CPU支持的指令数有稍微差异。n计算机只有少数的上百条指令,为什么却能够做各种各样的事情?n初步理解“函数”的思想令人吃惊的事实根据以上三条指令:根据以上三条指令:flip,zero,flip,zero,testtest我们可以让计算机我们可以让计算机“间接地间接地”执行什么操作?执行什么操作?试试让计算机比较两个1-bit二进制数是否相等,只用前面提到的运算,
23、如果需要,可以使用辅助的bits.xyeqEquality test(x,y)zero eq;flip eq;/*equality ontest x flip eq;test y flip eq;/*equality on only turn twiceIf x=y eq=1Otherwise eq=0你能将这个操作扩展到,比如,32位内的整数吗?稍微增加一点操作计算两个1-bit二进制数的和xyz1 z0tx+yadd(x,y)1.zero z0;2.zero z1;3.equality test(x,y);4.test eq goto 75.flip z0;6.exit;7.zero t;
24、8.flip t;9.equality test(x,t);10.test eq flip z1;如果只允许原来三个基本操作,能完成这个任务吗?多层次抽象n 用一位的加法“间接操作”可以实现普通加法操作;n加法操作又可以作为一步操作用在更复杂的“间接操作”中。n一步步的“间接操作”,不断的接近我们看到的程序。n这些“间接”的设计,类似于程序中的函数设计主存储器 及其与CPU之间的信息传输主存储器/内存n由基于大规模集成电路的存储芯片组装而成,存储CPU可直接访问的数据和程序n主存储器的工作速度和容量对计算机系统整体性能影响极大n一次读写大约在几十纳秒(ns)左右1纳秒=10-9 秒n主存储器容
25、量的基本计量单位为字节(Byte),目前常见的计算机标配内存容量多为512MB、1GB和2GBn随机访问存储器(RAM Random Access Memory)访问时间不随访问地址的不同而不同也即,读写任意地址的存储单元,其所需时间是一样的n顺序访问存储器n主要功能:存储数据 和 读写数据存储空间的管理n为了更有效地进行管理,通常以8个比特(一个字节)为一个存储管理单元(简称:存储单元)n每个存储单元都有其特定且唯一的地址,称为:存储地址n存储地址为整数编码,可表示为二进制整数n由主存储器的所有存储单元的地址构成的集合,称为地址空间n表示地址空间所需的二进制位数,称为地址宽度n内存容量越大,
26、地址空间也就越大,地址宽度也必须相应加大主存储器的访问方式n地址访问方式n给出想要访问的存储单元的地址,n从该地址的存储单元中读数据,或向其中写入数据nCPU的字长一般是4个字节 或 8个字节,因此nCPU读写内存数据的方式是每次4个或8个字节n在一段程序中,变量 和 存储单元 相对应n变量名字 对应于 存储单元地址n变量内容 对应于 存储单元中的数据n指针型变量:专门存放 存储单元地址 的 变量这真的对我有用么?主存和CPU之间的信息传输n通过 存储总线 进行信息传输n存储总线由三组总线构成n数据总线:用于传输数据n地址总线:用于传输存储单元地址n地址开关n控制总线:用于各种控制信息的传递(
27、读、写等)n控制开关CPU内存内存地址总线数据总线控制总线主存和CPU之间的信息传输nCPU从主存中读取数据的过程1.CPU 把 存储单元地址 写入 地址总线;2.CPU 通过 控制总线 发出一个“读”信号;3.主存 收到“读”信号,根据 地址总线 上 的 地址信息,把连续几个存储单元的数据读出,送到 数据总线 上;(需要一定的时间)4.在等待一段时间后,CPU 从 数据总线 上 获得数据。主存和CPU之间的信息传输nCPU向主存写入数据的过程1.CPU 把 存储单元地址 写入 地址总线;2.CPU 把 数据 写入 数据总线;3.CPU 通过 控制总线 发出一个“写”信号;4.主存 收到“写”
28、信号,根据 地址总线 上 的 地址信息,把 数据总线 上 的 数据 写入到 相应的 存储单元 中(需要一定的时间)总线的宽度n一条总线上一次可传输的二进制位数n数据总线的宽度 一般 和 CPU的字长 相同n目前CPU一般采用32位或64位的数据总线n数据总线宽度决定了一次传送数据量的大小nCPU的地址总线宽度决定了主存储器地址空间的大小n16位地址(64K);32位地址(4G);64位地址(天文数字)计算机程序的基本控制结构程序的基本控制结构n程序(Program)n由若干条指令按照一定的顺序排列组成,是为信息处理任务而预先编制的工作执行方案n算法(Algorithm)程序=算法+数据结构n为
29、某类处理任务而预先编制的指令的组合方法n用于表示问题求解的步骤n算法的特点n通用性:合理的输入产生正确的输出n有效性:有限的指令、可预期的执行结果n确定性:每一步动作的下一步都是确定的n有穷性:算法的执行应在有限步内结束三种程序控制结构n顺序结构n分支结构n循环结构顺序结构n按 指令 的 排列顺序 依次执行n基础结构顺序结构 C语言示例#include /我我们们的程序必的程序必须须引用的一个引用的一个头头文件文件int main()/主函数主函数 int age;/定定义义一个一个记录记录年年龄龄的的变变量量 printf(Please input your age:n);/1.提示提示输输
30、入你的年入你的年龄龄 scanf(%d,&age);/2.把把输输入入值值保存在保存在变变量中量中 printf(Oh!your age is%d.n,age);/3.输输出你的年出你的年龄龄分支结构n根据 分支判断条件 的 取值(真或假),决定程序的后继执行路线分支结构 C语言示例#include /我我们们的程序必的程序必须须引用的一个引用的一个头头文件文件int main()/主函数主函数 int age;/定定义义一个一个记录记录年年龄龄的的变变量量 printf(“Please input your age:n”);/1.提示提示输输入你的年入你的年龄龄 scanf(%d,&age)
31、;/2.把把输输入入值值保存在保存在变变量中量中 if(age=18)/3.判断是否判断是否为为成年人成年人 printf(You are an adult.Welcome!n);/3.1.成年人可以成年人可以进进入入 else /3.2.非成年人不能非成年人不能进进网吧网吧 printf(You are not an adult,you cant stay in the internet bar.n);循环结构n循环条件 循环体循环结构示例:求11000的平方和开始S0j1SS+j*jjj+1j1000打印S,结束YesNo三种基本控制结构可相互三种基本控制结构可相互组合和嵌套使用,形成更组合和嵌套使用,形成更为复杂的控制,完成各种为复杂的控制,完成各种复杂的工作复杂的工作。