欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    计算机科学引论.ppt

    • 资源ID:6232203       资源大小:303.50KB        全文页数:70页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机科学引论.ppt

    CPU的结构和指令的执行,计算机科学引论,2023/10/8,Machine Structure,2,CPU的基本部件,计算机的基本模型有两个部件内存存储需要处理的数据存储处理好的数据存储程序CPU执行存储在内存中的程序,把需要处理的数据变换成所期望的新格式或内容(处理好的数据)结构比内存复杂得多,2023/10/8,Machine Structure,3,CPU的基本部件,CPU究竟需要哪些部件?CPU的工作:执行程序(program)程序:一系列的指令(instruction)指令:对一个或多个数进行某个操作,Z=X+YA=B*C,让CPU工作的第一步:告诉它操作和操作数的信息,CPU只认识二进制数,把指令编码成二进制数,2023/10/8,Machine Structure,4,CPU的基本部件,指令编码编码操作常用操作个数:20-30个,用4-5位二进制数即可编码,2023/10/8,Machine Structure,5,CPU的基本部件,指令编码编码操作数操作数存储在内存中内存用地址索引 用地址编码操作数?32位平台,地址一般是32位3操作数指令的话,地址要32*3=96位!现代内存相对于现代CPU的速度来说也太慢了把操作数放到快而小的存储空间指令中只编码一个地址,2023/10/8,Machine Structure,6,CPU的基本部件,指令编码编码操作数操作数放在哪里?比较小,可以用很短的地址编码非常快,和CPU的计算速度相当要快,就要小!寄存器(register),2023/10/8,Machine Structure,7,CPU的基本部件,指令编码寄存器(register)CPU中存放操作数的空间小:一般不超过32个快:一般一个CPU周期可访问多次(2到10多次)编码操作数编码寄存器的地址32个寄存器须用5位二进制编码,3个操作数需要3*5=15位二进制数,2023/10/8,Machine Structure,8,CPU的基本部件,指令编码寄存器中的数从何而来?数据总是存储在内存中的 数据必须从内存读内存访问指令:只编码一个地址RISC类CPU甚至只编码半个地址,一个32位地址须由两条指令装载到寄存器并拼接而成CPU需要内存访问单元(memory unit),CPU,寄存器,内存,MU,2023/10/8,Machine Structure,9,CPU的基本部件,指令所指定的操作需要执行CPU需要有执行部件不同功能的执行部件有不同的名字ALU:算术逻辑单元(执行整数算术逻辑运算)FPU:浮点单元(执行浮点运算),CPU,寄存器,MU,为何ALU/FPU要接到MU上?CISC类CPU允许指令使用内存操作数现代CPU为优化执行速度而这么设计,2023/10/8,Machine Structure,10,CPU的基本部件,指令也必须从内存中读取存储程序 取指部件(instruction fetch),CPU,寄存器,MU,IF,IF要读内存,连上MU?较老的CPU是这么设计的较新的CPU其MU被分裂成多个部件以提高速度,2023/10/8,Machine Structure,11,CPU的基本部件,指令从哪个内存单元取?IP/PCInstruction Pointer,Program Counter,CPU,寄存器,MU,IF,PC,每次取到指令后,IP/PC自动加适当的值指向下一条指令分支指令怎么办?,2023/10/8,Machine Structure,12,CPU的基本部件,控制器(Control Unit)控制指令执行过程,协调各部件工作,CPU,寄存器,MU,IF,PC,CU,2023/10/8,Machine Structure,13,指令执行过程,第一步:取指把IP/PC的值交给MUMU读到指令给IFIP/PC增加,指向下一条指令,寄存器,MU,IF,PC,CU,.,2023/10/8,Machine Structure,14,指令执行过程,第二步:指令译码(decode)解出指令的操作和操作数,并从寄存器读出需要的操作数,2023/10/8,Machine Structure,15,指令执行过程,第三步:运算执行指令所指定的运算,2023/10/8,Machine Structure,16,指令执行过程,第四步:内存访问如果是要读写内存的指令:读写内存如果不是?暂停等待一周期,或跳过,2023/10/8,Machine Structure,17,指令执行过程,第五步:写回把结果写回寄存器,2023/10/8,Machine Structure,18,MIPS的指令执行,简化表示,1.取指,2.译码,3.执行,4.内存,5.写回,2023/10/8,Machine Structure,19,程序的执行,程序是多条指令的序列一条接一条地执行较老的CPU是这么设计的但很慢,2023/10/8,Machine Structure,20,加速程序执行的方法,流水线(pipeline)流水线是工业化生产的重要概念极大地提高了劳动生产率也可以提高CPU部件的“劳动生产率”流水线为什么有效?指令执行各步骤占用的部件不同 如果各步骤串行进行,则大部分部件在大部分时间都空闲 各步骤并行,让各部件都忙起来,2023/10/8,Machine Structure,21,加速指令执行的方法,指令执行各步骤部件占用情况第一步:取指IP/PC,MU,IF第二步:译码寄存器第三步:运算ALU/FPU第四步:内存访问MU第五步:写回寄存器,2023/10/8,Machine Structure,22,加速指令执行的方法,一条指令执行中占用资源情况,第一条指令开始译码的时候,取指的资源已经空闲此时已经可以开始取第二条指令了,2023/10/8,Machine Structure,23,加速指令执行的方法,指令流水线把多条指令的各执行步骤并行,2023/10/8,Machine Structure,24,加速指令执行的方法,周期(cycle)指令执行一步所需要的时间要使用流水线技术,各不同步骤的执行时间必须相同:都是一周期在同一个周期,有多条指令在流水线中每条指令在不同的执行步骤,占用不同的部件,2023/10/8,Machine Structure,25,加速指令执行的方法,流水线的性能例:执行10条指令,每指令5步骤,每步骤一周期 不用流水线:5*10=50周期 5级流水线:10+(5-1)=14周期加速比:50/14=3.57流水线的理论最高加速比=级数指令数越多,加速比越高无限多条指令加速比=级数一条指令?加速比为1 不能加速!,2023/10/8,Machine Structure,26,加速指令执行的方法,流水线的性能指令的延迟(latency)执行一条指令所需时间流水线不能减少单条指令的延迟流水线可以减少程序的延迟指令的产出(throughput)单位时间内系统处理的指令数流水线可以增加指令的产出,2023/10/8,Machine Structure,27,加速指令执行的方法,流水线问题结构竞争:同一个周期使用相同的部件1.内存访问竞争,2023/10/8,Machine Structure,28,加速指令执行的方法,内存访问竞争在同一个周期,需要同时读取数据和指令用两个不同的内存:DSP、嵌入式CPU等用两个高速缓存(cache):通用CPU,寄存器,IF,PC,CU,.,?,内存,?,2023/10/8,Machine Structure,29,加速指令执行的方法,流水线问题结构竞争2.寄存器访问竞争,2023/10/8,Machine Structure,30,加速指令执行的方法,寄存器访问竞争给寄存器加高速缓存?不现实寄存器非常快单个周期可以完成一次读和一次写前半个周期写,后半个周期读为何写在前?写操作是在前面的指令执行的寄存器很小可以做多个读端口,寄存器,IF,PC,CU,内存,MU,L2 Cache,2023/10/8,Machine Structure,31,机器语言与汇编语言,CPU只能识别二进制数把指令编码成二进制数编码操作、操作数和其它信息机器语言,2023/10/8,Machine Structure,32,机器语言与汇编语言,MIPS的机器语言例,32位,opcode:操作码 funct:操作码第二部分rs:Source Register rt:Target Registerrd:Destination Register shamt:移位位数,2023/10/8,Machine Structure,33,机器语言与汇编语言,MIPS的机器语言例add$8,$9,$10opcode=0(查表)funct=32(查表)rs=9(操作数1)rt=10(操作数2)rd=8(目的操作数)shamt=0(非移位指令),2023/10/8,Machine Structure,34,机器语言与汇编语言,MIPS的机器语言例add$8,$9,$10,二进制表示:,机器语言指令,十进制表示:,MIPS还有其它格式的指令,2023/10/8,Machine Structure,35,机器语言与汇编语言,机器语言适合CPU使用,但不适合程序员人类对长串的数字不敏感但对符号敏感用符号表示指令的各种信息汇编语言,2023/10/8,Machine Structure,36,机器语言与汇编语言,汇编语言(assembly)机器指令与汇编指令一一对应在机器语言需要让人看的时候,常常实际使用汇编语言使用与机器语言相同的概念操作,操作数,允许使用名字来索引变量比地址方便得多,2023/10/8,Machine Structure,37,机器语言与汇编语言,MIPS的汇编语言,add$8,$9,$10,操作 操作数(寄存器),addsubbeq,$0$31(32个寄存器),2023/10/8,Machine Structure,38,机器语言与汇编语言,汇编语言程序设计用汇编语言写程序可以有最高的效率(如果程序员合格)比之机器语言前进了一大步被称为第二代程序设计语言问题机器指令相对简单程序员希望用较复杂的表达式与硬件相关移植到不同的CPU非常不方便,2023/10/8,Machine Structure,39,程序语言,什么才是适合程序设计的语言?接近人类的思维特性看起来象人类语言学习较容易机器无关同一个程序可以在不同硬件运行无需学习机器相关内容如果不关注最佳性能的话,程序语言,2023/10/8,Machine Structure,40,程序语言,计算机如何执行程序语言程序?解释(interpret)逐条读取程序语句并立即执行各种script:.bat,.vbs,.js,.py,由解释器处理(interpreter)翻译(translate)把程序语言程序翻译成机器程序C/C+,FORTRAN,Pascal,由编译器处理(Compiler)为何一般不叫translator?不仅仅是翻译的工作,2023/10/8,Machine Structure,41,程序语言,为何解释和编译都存在?各有优缺点解释无需专门开发工具,易于扩充,灵活性大,升级解释器就可以改善所有已有程序执行效率低编译执行效率高开发较复杂,不便扩充,编译程序升级后所有现有程序必须重新编译才能得到更新,2023/10/8,Machine Structure,42,程序语言,程序语言设计原则尽可能接近人的思维习惯为何不用自然语言?目前的计算机软硬件平台还不能很好地理解自然语言程序语言是机器思维与人类思维之间的折衷,机器思维 人类思维,机器语言 汇编语言 程序语言 自然语言,2023/10/8,Machine Structure,43,程序语言,程序语言设计原则越接近自然语言更容易被程序员使用,更容易学习,程序设计效率高更远离计算机设计原理,更难以被计算机有效处理,执行效率低越接近机器语言更容易被计算机处理,执行效率高更难使用,程序设计效率低,2023/10/8,Machine Structure,44,程序语言,早期程序语言强调执行效率一次设计,多次运行运行时间远多于设计时间机器慢、少,任务多程序少,一般由专业人员设计FORTRAN很容易被翻译成高效率的机器程序不太容易使用,2023/10/8,Machine Structure,45,程序语言,现代程序语言有侧重各方面因素的语言现代计算机已经非常快,对很多任务已经可以不考虑执行效率程序语言可以考虑其它方面的因素设计效率,可移植性,各种面向对象程序语言,Java,现代软件技术可以兼顾多个因素较大范围内都适用的程序语言及其开发工具结合C+的一些开发工具,2023/10/8,Machine Structure,46,程序语言,程序语言对计算机设计思想的影响程序语言出现后,迅速替代汇编语言成为程序设计的主要语言计算机必须针对程序语言优化?!复杂指令集计算机(CISC:Complex Instruction Set Computer)复杂的指令:尽量向程序语言的语句靠拢完备的指令:尽量实现程序语言使用的所有语句正交指令集编译优化技术尚不完善,不能很好优化程序主要用硬件设计填补程序语言和硬件间的差异,2023/10/8,Machine Structure,47,程序语言,程序语言对计算机设计思想的影响精简指令集(RISC:Reduced Instruction Set Computer)只实现少数必须的指令,利用编译优化技术生成优化的程序指令数量少,简单,可以编码成等长格式可以实现得非常快主要用编译器填补程序语言和硬件间的差异,2023/10/8,Machine Structure,48,程序语言,RISC支持者开发了大量的优化指令执行速度的技术高速缓存,深度流水线,分支预测,寄存器重命名,超标量,乱序执行RISC支持者开发了大量的编译优化技术循环展开,软件流水,相关分析CISC支持者把这些技术都用上了“伪CISC”:不再以指令集为目标x86依靠“事实上的工业标准”获得了空前成功,RISC vs.CISC 结果,2023/10/8,Machine Structure,49,程序语言,现代计算机开发模式软件和硬件结合考虑同时设计硬件和编译器,并照顾操作系统的需要研究热点:指令级并行,程序语言改变了整个计算机产业,2023/10/8,Machine Structure,50,程序语言,程序语言类型说明型(例:Prolog)程序员描述程序的问题本身,而不是解决问题的算法对简单的问题:描述问题本身比算法更麻烦对复杂的问题:现有硬件必须要用特定的算法才能解决,通用解决算法难以胜任说明型程序语言只在较窄的范围使用,2023/10/8,Machine Structure,51,程序语言,程序语言类型命令型用命令序列描述程序函数型用嵌套的函数描述程序面向对象型用对象描述程序以上都是现实世界某个侧面的抽象广泛使用的程序语言应包含以上所有方面C+及其派生语言,2023/10/8,Machine Structure,52,程序语言要素,语句(statement)构成程序的原子声明语句(declarative statement)程序的规格说明:数据类型,参数,命令语句(imperative statement)程序的算法说明注释(comment),2023/10/8,Machine Structure,53,程序语言要素,变量(variable)与数据类型(type)变量:在程序执行过程中可以改变的量用于存储各类信息是对内存的抽象用名索引,不必使用地址索引有类型不同类型有不同的运算不兼容类型之间不能进行运算例:float*string,2023/10/8,Machine Structure,54,程序语言要素,基本数据类型(primitive data type)编译器缺省支持的数据类型int float char 某些语言还有string数据结构(data structure)由基本数据类型组成的有结构的数据类型数组(array)结构(structure),2023/10/8,Machine Structure,55,程序语言要素,数组(array)一系列相同类型的数据定义 int Rooms10;引用 Rooms0=101;MyRoom=Rooms5;,下标(index),名,2023/10/8,Machine Structure,56,程序语言要素,结构(structure)由不同类型的数据组成的数据类型又叫异构数组(heterogeneous array),struct TZoomInfoint ID;float w,h;TZoomInfo MyZoom;MyZoom.ID=110;,合理划分程序的所有数据为恰当的结构会极大简化程序设计,2023/10/8,Machine Structure,57,程序语言要素,字面量(literal)在程序语言中,其值等于其文字串的本来含义的量与变量相对:表示变量的文字串是其名字,其值和名字无关,在程序中还可以改变例:整数650,字符串Smith常量(constant)给字面量的名字const int RoomNo=517;,2023/10/8,Machine Structure,58,程序语言要素,运算处理数据所需要的操作四则运算+-*/逻辑运算&|!关系运算=!=位运算&|计算机硬件特有的运算,但在很多算法中有很大的用处,所以很多程序语言都有,2023/10/8,Machine Structure,59,程序语言要素,运算赋值运算=把一个表达式的值赋给某个变量注意与相等关系的区别=才是相等关系运算与数学上使用的=有所不同某些语言使用不同的符号Pascal:=APL,2023/10/8,Machine Structure,60,程序语言要素,控制结构程序有各种不同的执行顺序顺序(sequence)分支(branch)循环(loop)必须有不同的控制语句(control statement),if()else,switch()case 1:.case 2:.,for(;),2023/10/8,Machine Structure,61,程序语言要素,过程(procedure)与函数(function)人类解决复杂问题的方法:分治(divide&conquer)分解成多个较小的问题,然后逐一解决,最后把小问题的解拼接成大问题的解程序语言也必须有类似的功能过程与函数程序语言中非常重要的概念,极大地方便了程序设计,2023/10/8,Machine Structure,62,程序语言要素,过程与函数把程序总的任务分解成多个小的部分,然后逐一解决每个小问题,再把小问题的解拼接起来以解决总的任务过程与函数的区别过程不返回值,函数要返回值微不足道(subtle)C/C+中不加以区别,程序 过程/函数,2023/10/8,Machine Structure,63,程序语言要素,函数的要素,bool DrawCircle(int x,int y,int radix)return true;,返回值类型,名,参数(parameter),实现,2023/10/8,Machine Structure,64,程序语言要素,调用函数,if(DrawCircle(10,10,5)=false),直接用名,返回值可直接使用,实际使用来执行函数的参数实参(actual parameter)函数定义中的参数?形参(formal parameter),2023/10/8,Machine Structure,65,程序语言要素,参数传递,void DrawFilledCircle(int x,int y,int radix)DrawCircle(x,y,radix);FillCircleWithPattern(x,y,radix,pattern);,bool DrawCircle(int x,int y,int radix)x+;,2023/10/8,Machine Structure,66,程序语言要素,参数传递参数传递的方式按值传递(pass by value)被调用函数(callee)的参数和调用函数(caller)所用的变量是两个不同的变量被调用函数中改变形参的值,调用函数所用实参的值是不会改变的,void DrawFilledCircle(int x,int y,int radix)DrawCircle(x,y,radix);,bool DrawCircle(int x,int y,int radix)x+;,2023/10/8,Machine Structure,67,程序语言要素,参数传递如果想要把改变后的值传回来?,void GetRoomSize(int w,int h)w=5;h=10;,void main()int w,h;GetRoomSize(w,h);,2023/10/8,Machine Structure,68,程序语言要素,参数传递按引用传递(pass by reference),void GetRoomSize(int,void main()int rw,rh;GetRoomSize(rw,rh);,2023/10/8,Machine Structure,69,程序语言要素,参数传递按引用传递,void GetRoomSize(int,void main()GetRoomSize(x2-x1,y2-y1);,?,编译警告:Temporary used for parameter w in call to 这种用法原则上是错误的如果一个函数的某个参数是引用类型,应当准备一个同类型的变量给该参数以存储函数中该变量被修改后的值,2023/10/8,Machine Structure,70,谢谢!,

    注意事项

    本文(计算机科学引论.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开