版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CPU结构和指令执行计算机科学引论10/10/1MachineStructure第1页CPU基本部件计算机基本模型有两个部件内存存放需要处理数据存放处理好数据存放程序CPU执行存放在内存中程序,把需要处理数据变换成所期望新格式或内容(处理好数据)结构比内存复杂得多内存CPU10/10/2MachineStructure第2页CPU基本部件CPU终究需要哪些部件?CPU工作:执行程序(program)程序:一系列指令(instruction)指令:对一个或多个数进行某个操作Z=X+YA=B*C操作(operator)操作数(operand)让CPU工作第一步:告诉它操作和操作数信息CPU只认识二进制数把指令编码成二进制数10/10/3MachineStructure第3页CPU基本部件指令编码编码操作惯用操作个数:20-30个用4-5位二进制数即可编码10/10/4MachineStructure第4页CPU基本部件指令编码编码操作数操作数存放在内存中内存用地址索引
用地址编码操作数?32位平台,地址普通是32位3操作数指令话,地址要32*3=96位!当代内存相对于当代CPU速度来说也太慢了把操作数放到快而小存放空间指令中只编码一个地址10/10/5MachineStructure第5页CPU基本部件指令编码编码操作数操作数放在哪里?比较小,能够用很短地址编码非常快,和CPU计算速度相当要快,就要小!
存放器(register)10/10/6MachineStructure第6页CPU基本部件指令编码存放器(register)CPU中存放操作数空间小:普通不超出32个快:普通一个CPU周期可访问屡次(2到10屡次)编码操作数编码存放器地址32个存放器须用5位二进制编码,3个操作数需要3*5=15位二进制数CPU寄存器内存10/10/7MachineStructure第7页CPU基本部件指令编码存放器中数从何而来?数据总是存放在内存中数据必须从内存读内存访问指令:只编码一个地址RISC类CPU甚至只编码半个地址,一个32位地址须由两条指令装载到存放器并拼接而成CPU需要内存访问单元(memoryunit)CPU寄存器内存MU10/10/8MachineStructure第8页CPU基本部件指令所指定操作需要执行CPU需要有执行部件不一样功效执行部件有不一样名字ALU:算术逻辑单元(执行整数算术逻辑运算)FPU:浮点单元(执行浮点运算)……CPU寄存器MUALUFPU为何ALU/FPU要接到MU上?CISC类CPU允许指令使用内存操作数当代CPU为优化执行速度而这么设计10/10/9MachineStructure第9页CPU基本部件指令也必须从内存中读取存放程序取指部件(instructionfetch)CPU寄存器MUALUFPUIFIF要读内存,连上MU?较老CPU是这么设计较新CPU其MU被分裂成多个部件以提升速度10/10/10MachineStructure第10页CPU基本部件指令从哪个内存单元取?IP/PCInstructionPointer,ProgramCounterCPU寄存器MUALUFPUIFPC每次取到指令后,IP/PC自动加适当值指向下一条指令分支指令怎么办?10/10/11MachineStructure第11页CPU基本部件控制器(ControlUnit)控制指令执行过程,协调各部件工作CPU寄存器MUALUFPUIFPCCUCPU关键逻辑,最难设计部分。设计优劣直接影响CPU性能。10/10/12MachineStructure第12页CPU指令执行过程第一步:取指把IP/PC值交给MUMU读到指令给IFIP/PC增加,指向下一条指令寄存器MUALUFPUIFPCCU.10/10/13MachineStructure第13页指令执行过程第二步:指令译码(decode)解出指令操作和操作数,并从存放器读出需要操作数寄存器MUALUFPUIFPCCUaddr1,r2,r3指令存放器10/10/14MachineStructure第14页指令执行过程第三步:运算执行指令所指定运算寄存器MUALUFPUIFPCCUaddr1,r2,r310/10/15MachineStructure第15页指令执行过程第四步:内存访问假如是要读写内存指令:读写内存假如不是?暂停等候一周期,或跳过寄存器MUALUFPUIFPCCUaddr1,r2,r310/10/16MachineStructure第16页指令执行过程第五步:写回把结果写回存放器寄存器MUALUFPUIFPCCUaddr1,r2,r310/10/17MachineStructure第17页MIPS指令执行简化表示IFtchDcdExecMemWBALUI$RegD$RegPCinstructionmemory+4rtrsrdregisterALUDatamemoryimm1.取指2.译码3.执行4.内存5.写回10/10/18MachineStructure第18页程序执行程序是多条指令序列一条接一条地执行较老CPU是这么设计但很慢ALUI$RegD$RegALUI$RegD$Reg10/10/19MachineStructure第19页加速程序执行方法流水线(pipeline)流水线是工业化生产主要概念极大地提升了劳动生产率也能够提升CPU部件“劳动生产率”流水线为何有效?指令执行各步骤占用部件不一样假如各步骤串行进行,则大部分部件在大部分时间都空闲各步骤并行,让各部件都忙起来10/10/20MachineStructure第20页加速指令执行方法指令执行各步骤部件占用情况第一步:取指IP/PC,MU,IF第二步:译码存放器第三步:运算ALU/FPU第四步:内存访问MU第五步:写回存放器10/10/21MachineStructure第21页加速指令执行方法一条指令执行中占用资源情况寄存器MUALUFPUIFPCCU第一条指令开始译码时候,取指资源已经空闲此时已经能够开始取第二条指令了10/10/22MachineStructure第22页加速指令执行方法指令流水线把多条指令各执行步骤并行ALUI$RegD$RegALUI$RegD$RegALUI$RegD$RegALUI$RegD$Reg10/10/23MachineStructure第23页加速指令执行方法周期(cycle)指令执行一步所需要时间要使用流水线技术,各不一样时骤执行时间必须相同:都是一周期在同一个周期,有多条指令在流水线中每条指令在不一样执行步骤,占用不一样部件10/10/24MachineStructure第24页加速指令执行方法流水线性能例:执行10条指令,每指令5步骤,每步骤一周期不用流水线:5*10=50周期5级流水线:10+(5-1)=14周期加速比:50/14=3.57流水线理论最高加速比=级数指令数越多,加速比越高无限多条指令加速比=级数一条指令??加速比为1不能加速!10/10/25MachineStructure第25页加速指令执行方法流水线性能指令延迟(latency)执行一条指令所需时间流水线不能降低单条指令延迟流水线能够降低程序延迟指令产出(throughput)单位时间内系统处理指令数流水线能够增加指令产出10/10/26MachineStructure第26页加速指令执行方法流水线问题结构竞争:同一个周期使用相同部件1.内存访问竞争ALUI$RegD$RegALUI$RegD$RegALUI$RegD$RegALUI$RegD$Reg10/10/27MachineStructure第27页加速指令执行方法内存访问竞争在同一个周期,需要同时读取数据和指令用两个不一样内存:DSP、嵌入式CPU等用两个高速缓存(cache):通用CPU寄存器ALUFPUIFPCMUCUI-Cache.??Load/StoreD-Cache内存??MUMUL2CacheCPU控制关键设计难点10/10/28MachineStructure第28页加速指令执行方法流水线问题结构竞争2.存放器访问竞争ALUI$RegD$RegALUI$RegD$RegALUI$RegD$RegALUI$RegD$Reg同时读和写同时读两个值10/10/29MachineStructure第29页加速指令执行方法存放器访问竞争给存放器加高速缓存?不现实存放器非常快单个周期能够完成一次读和一次写前半个周期写,后半个周期读为何写在前?写操作是在前面指令执行存放器很小能够做多个读端口寄存器ALUFPUIFPCCUI-CacheLoad/StoreD-Cache内存MUL2Cache10/10/30MachineStructure第30页机器语言与汇编语言CPU只能识别二进制数把指令编码成二进制数编码操作、操作数和其它信息机器语言10/10/31MachineStructure第31页机器语言与汇编语言MIPS机器语言例655565opcodersrtrdfunctshamt32位opcode:操作码funct:操作码第二部分rs:SourceRegisterrt:TargetRegisterrd:DestinationRegistershamt:移位位数10/10/32MachineStructure第32页机器语言与汇编语言MIPS机器语言例add$8,$9,$10opcode =0 (查表)funct =32 (查表)rs =9 (操作数1)rt =10 (操作数2)rd =8 (目标操作数)shamt =0 (非移位指令)10/10/33MachineStructure第33页机器语言与汇编语言MIPS机器语言例add$8,$9,$100910832000000001001010100100010000000000二进制表示:机器语言指令十进制表示:MIPS还有其它格式指令10/10/34MachineStructure第34页机器语言与汇编语言机器语言适合CPU使用,但不适合程序员人类对长串数字不敏感但对符号敏感用符号表示指令各种信息汇编语言10/10/35MachineStructure第35页机器语言与汇编语言汇编语言(assembly)机器指令与汇编指令一一对应在机器语言需要让人看时候,经常实际使用汇编语言使用与机器语言相同概念操作,操作数,……允许使用名字来索引变量比地址方便得多10/10/36MachineStructure第36页机器语言与汇编语言MIPS汇编语言add$8,$9,$10操作操作数(存放器)addsubbeq……$0~$31(32个存放器)10/10/37MachineStructure第37页机器语言与汇编语言汇编语言程序设计用汇编语言写程序能够有最高效率(假如程序员合格)比之机器语言前进了一大步被称为第二代程序设计语言问题机器指令相对简单程序员希望用较复杂表示式与硬件相关移植到不一样CPU非常不方便10/10/38MachineStructure第38页程序语言什么才是适合程序设计语言?靠近人类思维特征看起来象人类语言学习较轻易机器无关同一个程序能够在不一样硬件运行无需学习机器相关内容假如不关注最正确性能话程序语言10/10/39MachineStructure第39页程序语言计算机怎样执行程序语言程序?解释(interpret)逐条读取程序语句并马上执行各种script:.bat,.vbs,.js,.py,……由解释器处理(interpreter)翻译(translate)把程序语言程序翻译成机器程序C/C++,FORTRAN,Pascal,……由编译器处理(Compiler)为何普通不叫translator?不但仅是翻译工作10/10/40MachineStructure第40页程序语言为何解释和编译都存在?各有优缺点解释无需专门开发工具,易于扩充,灵活性大,升级解释器就能够改进全部已经有程序执行效率低编译执行效率高开发较复杂,不便扩充,编译程序升级后全部现有程序必须重新编译才能得到更新10/10/41MachineStructure第41页程序语言程序语言设计标准尽可能靠近人思维习惯为何不用自然语言?当前计算机软硬件平台还不能很好地了解自然语言程序语言是机器思维与人类思维之间折衷机器思维人类思维机器语言汇编语言程序语言自然语言10/10/42MachineStructure第42页程序语言程序语言设计标准越靠近自然语言更轻易被程序员使用,更轻易学习,程序设计效率高更远离计算机设计原理,更难以被计算机有效处理,执行效率低越靠近机器语言更轻易被计算机处理,执行效率高更难使用,程序设计效率低10/10/43MachineStructure第43页程序语言早期程序语言强调执行效率一次设计,屡次运行运行时间远多于设计时间机器慢、少,任务多程序少,普通由专业人员设计FORTRAN很轻易被翻译成高效率机器程序不太轻易使用10/10/44MachineStructure第44页程序语言当代程序语言有侧重各方面原因语言当代计算机已经非常快,对很多任务已经能够不考虑执行效率程序语言能够考虑其它方面原因设计效率,可移植性,……各种面向对象程序语言,Java,……当代软件技术能够兼顾多个原因较大范围内都适用程序语言及其开发工具结合C++一些开发工具10/10/45MachineStructure第45页程序语言程序语言对计算机设计思想影响程序语言出现后,快速替换汇编语言成为程序设计主要语言计算机必须针对程序语言优化?!复杂指令集计算机(CISC:ComplexInstructionSetComputer)复杂指令:尽可能向程序语言语句靠拢完备指令:尽可能实现程序语言使用全部语句正交指令集编译优化技术尚不完善,不能很好优化程序主要用硬件设计填补程序语言和硬件间差异10/10/46MachineStructure第46页程序语言程序语言对计算机设计思想影响精简指令集(RISC:ReducedInstructionSetComputer)只实现少数必须指令,利用编译优化技术生成优化程序指令数量少,简单,能够编码成等长格式能够实现得非常快主要用编译器填补程序语言和硬件间差异10/10/47MachineStructure第47页程序语言RISC支持者开发了大量优化指令执行速度技术高速缓存,深度流水线,分支预测,存放器重命名,超标量,乱序执行……RISC支持者开发了大量编译优化技术循环展开,软件流水,相关分析……CISC支持者把这些技术都用上了“伪CISC”:不再以指令集为目标x86依靠“实际上工业标准”取得了空前成功RISCvs.CISC结果10/10/48MachineStructure第48页程序语言当代计算机开发模式软件和硬件结合考虑同时设计硬件和编译器,并照料操作系统需要研究热点:指令级并行程序语言改变了整个计算机产业10/10/49MachineStructure第49页程序语言程序语言类型说明型(例:Prolog)程序员描述程序问题本身,而不是处理问题算法对简单问题:描述问题本身比算法更麻烦对复杂问题:现有硬件必须要用特定算法才能处理,通用处理算法难以胜任说明型程序语言只在较窄范围使用10/10/50MachineStructure第50页程序语言程序语言类型命令型用命令序列描述程序函数型用嵌套函数描述程序面向对象型用对象描述程序以上都是现实世界某个侧面抽象广泛使用程序语言应包含以上全部方面C++及其派生语言10/10/51MachineStructure第51页程序语言要素语句(statement)组成程序原子申明语句(declarativestatement)程序规格说明:数据类型,参数,……命令语句(imperativestatement)程序算法说明注释(comment)10/10/52MachineStructure第52页程序语言要素变量(variable)与数据类型(type)变量:在程序执行过程中能够改变量用于存放各类信息是对内存抽象用名索引,无须使用地址索引有类型不一样类型有不一样运算不兼容类型之间不能进行运算例:float*string10/10/53MachineStructure第53页程序语言要素基本数据类型(primitivedatatype)编译器缺省支持数据类型intfloatchar……一些语言还有string数据结构(datastructure)由基本数据类型组成有结构数据类型数组(array)结构(structure)10/10/54MachineStructure第54页程序语言要素数组(array)一系列相同类型数据定义intRooms[10];引用Rooms[0]=101;MyRoom=Rooms[5];下标(index)名10/10/55MachineStructure第55页程序语言要素结构(structure)由不一样类型数据组成数据类型又叫异构数组(heterogeneousarray)structTZoomInfo{ intID; floatw,h;};……TZoomInfoMyZoom;MyZoom.ID=110;合理划分程序全部数据为恰当结构会极大简化程序设计10/10/56MachineStructure第56页程序语言要素字面量(literal)在程序语言中,其值等于其文字串原来含义量与变量相对:表示变量文字串是其名字,其值和名字无关,在程序中还能够改变例:整数650,字符串"Smith"常量(constant)给字面量名字constintRoomNo=517;10/10/57MachineStructure第57页程序语言要素运算处理数据所需要操作四则运算+-*/逻辑运算&&||!关系运算==!=><>=<=位运算&|^~计算机硬件特有运算,但在很多算法中有很大用处,所以很多程序语言都有10/10/58MachineStructure第58页程序语言要素运算赋值运算=把一个表示式值赋给某个变量注意与相等关系区分==才是相等关系运算与数学上使用=有所不一样一些语言使用不一样符号Pascal:=APL10/10/59MachineStructure第59页程序语言要素控制结构程序有各种不一样执行次序次序(sequence)分支(branch)循环(loop)必须有不一样控制语句(controlstatement)if(…){}else{}switch(…){case1: ….case2:….}for(…;…;…){}10/10/60MachineStructure第60页程序语言要素过程(procedure)与函数(function)人类处理复杂问题方法:分治(divide&conquer)分解成多个较小问题,然后逐一处理,最终把小问题解拼接成大问题解程序语言也必须有类似功效过程与函数程序语言中非常主要概念,极大地方便了程序设计10/10/61MachineStructure第61页程序语言要素过程与函数把程序总任务分解成多个小部分,然后逐一处理每个小问题,再把小问题解拼接起来以处理总任务过程与函数区分过程不返回值,函数要返回值微不足道(subtle)C/C++中不加以区分程序过程/函数10/10/62MachineStructure第62页程序语言要素函数要素boolDrawCircle(intx,inty,intradix){ …… returntrue;}返回值类型名参数(parameter)实现10/10/63MachineStructure第63页程序语言要素调用函数if(DrawCircle(10,10,5)==false){……}直接用名返回值可直接使用实际使用来执行函数参数实参(actualparameter)函数定义中参数?形参(formalparameter)10/10/64MachineStructure第64页程序语言要素参数传递voidDrawFilledCircle(intx,inty,intradix){ DrawCircle(x,y,radix); FillCircleWithP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全生产培训学习方案
- 化妆工具的正确使用
- 岳阳市2025-2026学年初三考前得分训练(一)英语试题试卷含解析
- 2026年上海新云台中学初三英语试题第三次模拟考试试题含解析
- 江苏省徐州市新城实验校2026届高中毕业生五月供题训练(二)英语试题含解析
- 山东省临沂市沂水县市级名校2026年中考考前英语试题指导卷含解析
- 安徽省天长市龙岗中学2025-2026学年联合模拟考试英语试题含解析
- 2026年浙江省绍兴上虞区四校联考初三第二次模拟考试语文试题试卷(2020上饶二模)含解析
- 甘肃省酒泉市瓜州县2025-2026学年初三第一次联合考试英语试题理试卷含解析
- 重庆邮电大学《中国画专业写生语言》2024-2025学年第二学期期末试卷
- 中考语文名著阅读高效复习技巧
- 工业厂房油漆翻新施工方案
- (2025年)重症5C培训真题附答案
- 光伏电自投合同范本
- 科技公司下游合同范本
- 工业节能降耗知识培训课件
- 知道网课《劳动教育(西安理工大学)》课后章节测试答案
- 2025中国农业科学院棉花研究所第二批招聘7人备考考试题库附答案解析
- 人教版八年级物理上册 第六章《质量与密度》单元测试卷(含答案)
- 网络舆情培训课件
- 北航大航空航天概论课件第7章 空间技术与空间科学
评论
0/150
提交评论