指令系统体系结构概览.ppt_第1页
指令系统体系结构概览.ppt_第2页
指令系统体系结构概览.ppt_第3页
指令系统体系结构概览.ppt_第4页
指令系统体系结构概览.ppt_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

,第5章,指令系统体系结构概览,2,本章主要内容,了解影响指令系统体系结构设计的要素 操作数的个数(一般为0,1,2,3) 指令长度:固定、可变 可访寄存器的个数1,2,3 指令寻址方式 熟悉内存寻址方式(直接、间接等) 了解指令流水线(pipeline)的概念及其对执行效率的影响,3,5.1 概述,本章是第4章内容的延伸 更为详尽地了解指令格式、操作数类型和寻址方法 更为详尽地了解计算机组织结构和指令格式之间的内在关系,从而在概念上更深地理解计算机的组成原理,4,5.2 指令格式,不同处理器设计有不同的指令集,它们在特征上的主要区别: 每条指令的比特位数-指令长度 基于堆栈还是基于寄存器 每条指令操作数的个数 操作数类型和长度 操作数的位置 运算类型,5,衡量一套指令集的效能指标包括: 一个程序占用主存空间大小 指令复杂度 指令位数(长度) 指令总数目,5.2 指令格式,6,设计一套指令集,主要考虑下列因素: 指令长度 长指令、短指令还是可变长度指令 操作数的个数(一般为0,1,2,3) 可利用的寄存器的个数 内存组织结构 支持字节访问还是字访问,或者都支持 寻址方式 直接、间接、变址,5.2 指令格式,7,大端(big endian)和小端(little endian)的概念:数据在内存中的保存格式 顺着地址增大方向,低字节先存,高字节后存,称为小端结构;反之称为大端结构,5.2 指令格式,8,假设保存12345678H(从高字节到低字节),5.2 指令格式,9,练习:p156:2,5.2 指令格式,10,答案,5.2 指令格式,11,指令集设计考虑的另一个问题是:CPU内部数据处理方式,有三个选择: 堆栈体系结构 累加器体系结构 通用寄存器体系结构 选择的要点: 在硬件设计简单、成本、执行速度、方便使用之间取得平衡,5.2 指令格式,12,堆栈结构:指令和操作数需要从堆栈中存取,当前指令和操作数隐含在栈顶单元 累加器结构:操作数之一隐含在累加器中 另一个操作数在内存中,导致较大的内存(总线)访问量 通用寄存器结构(GPR):多利用寄存器,较少访问内存 比累加器结构快 便于编译器编译 指令长度较长,5.2 指令格式,13,目前多数计算机使用GPR 结构,根据指令和操作数所处的位置又分为3种类型: 存储器-存储器型:23个操作数需要从存储器去取; 寄存器-存储器型:至少有一个操作数在寄存器中(Intel ,Motorola) 装入-存储型:运行前首先把操作数装入寄存器,5.2 指令格式,14,操作数的个数: 0地址指令(只有操作码) 1地址指令(操作码+1个存储器地址) 2地址指令(操作码+2个地址) 3地址指令(操作码+3个地址),5.2 指令格式,15,5.2 指令格式,0地址指令(堆栈型指令)结构 除了load 和 store指令需要访问一个内存地址外,其它指令使用的操作数隐含在栈内,例如add, mult 指令的两个操作数使用栈顶的两个单元实现,push/pop仅对栈顶进行操作 后面举例,16,通常使用中缀结构的书写格式较普遍, 如: Z = X + Y 但堆栈型多使用后缀(postfix)结构(逆波兰式:reverse Polish )书写格式: Z = X + Y Z = XY+ 纪念波兰科学家 Jan Lukasiewicz (1878 - 1956),5.2 指令格式,17,逆波兰书写格式的优点:不需要括弧 例如:Z = (X Y) + (W U) 写成: Z = X Y W U + 要点:两元运算,运算符置后,5.2 指令格式,18,练习:p157;8 xy+wz+vu =xy *wz vu +,5.2 指令格式,19,答案: b) w x+w (u v+z) =wx wuv*z+*+,5.2 指令格式,20,c) (w (x+y (u v)/(u (x+y) =W X Y U V * * + * U X Y + * /,5.2 指令格式,21,0地址堆栈型指令结构编程(8行): Z = X Y * W U * +=XY+WU 编出的程序: PUSH X PUSH Y MULT (隐含着把x,y弹出,乘后再压入) PUSH W PUSH U MULT ADD (隐含着把W*U弹出与x*y,加后再压入) PUSH Z,5.2 指令格式,22,1地址指令(MARIE采用)书写为(7行): LOAD X /(存在AC中) MULT Y STORE TEMP LOAD W MULT U ADD TEMP STORE Z,5.2 指令格式,23,2地址指令 (如Intel, Motorola,6行), Z = X Y + W U 书写为: LOAD R1,X MULT R1,Y LOAD R2,W MULT R2,U ADD R1,R2 STORE Z,R1,5.2 指令格式,24,3地址指令 (如mainframes,3行), Z = X Y + W U 书写为: MULT R1,X,Y MULT R2,W,U ADD Z,R1,R2,5.2 指令格式,25,结论: 指令操作数越多,指令越长但需要指令数越少 典型的时间和空间的折衷 在所有的指令体系结构中,并非所有的指令都需要相同数量的操作数,如halt 不需要操作数的指令浪费了部分存储空间,为了充分利用这些空间,提出了扩展操作码的概念,5.2 指令格式,26,根据指令操作码长度,指令格式有定长和可变长 设一个系统有16个寄存器,4K存储空间: 使用4位编码满足对16个寄存器的访问,12位地址编码可访问4k存储器 采用16位指令长度编码可有下列方式:都是定长,5.2 指令格式,27,若操作码长度可变,指令集可大大地丰富:,5.2 指令格式,28,练习p157: 11a),5.2 指令格式,29,答案:,5.2 指令格式,30,b)答案:,5.2 指令格式,6,24,16,14,31,5.3 指令类型,一般的计算机指令有下列几种类型: 数据移动 : mov , load, store 算术运算: sub, add, mult, div 逻辑运算: or, and, not 位操作(移位): shl, rhl等 I/O: in, out 控制转移: jump, jns等 专门用途: xchg等,32,5.4 寻址,什么是寻址模式?什么是有效地址? 寻址模式就是如何去寻找参加运算的操作数,即如何计算操作数的位置 操作数可以是一个立即数(constant),也可以存放在一个寄存器(register)或一个内存单元(memory)中 操作数的实际存放地址称为有效地址(effective address),33,常见的操作数寻址模式: 立即寻址(immediate):操作数是指令的一部分 直接寻址(direct):指令中直接给出操作数地址 寄存器寻址(register):操作数在指定的寄存器中 间接寻址(indirect):操作数在指令所指定地址的地址当中 寄存器变址寻址(Indexed ):用一个寄存器(隐含或者明确地)作为偏移地址,该偏址与操作数地址相加得到操作数的有效地址 基址变址寻址(Based ):使用基址寄存器+变址寄存器得到操作数有效地址,5.4 寻址,34,下面分别举例: 立即寻址(immediate):操作数是指令的一部分 mov ax,100 直接寻址(direct):指令中直接给出操作数地址 mov ax,value1(Intel系列中) load 100(实验中) 寄存器寻址(register):操作数在指定的寄存器中 mov ax,bx add r0,5.4 寻址,35,间接寻址(indirect):操作数在指令所指定地址的地址当中 mov ax,bx addi x 寄存器变址寻址(Indexed 直接):用一个寄存器(隐含或者明确地)存储一个偏移地址,该偏址与操作数地址相加得到操作数的有效地址,便于批量数据传送 mov ax,value1si /si变化,5.4 寻址,36,基址变址寻址(Based 间接):使用基址寄存器+变址寄存器 mov ax,bxsi /si变化 堆栈寻址(stack):操作数假定在堆栈中 push x push y add,5.4 寻址,37,以上寻址模式还有许多变种: 间接变址寻址(Indirect indexed) 基址/偏址寻址(Base/offset) 自相对寻址(Self-relative) 自增(减)寻址(Auto increment decrement) 不做进一步讨论,5.4 寻址,38,举例说明:不同寻址模式下得到的操作数是什么?,5.4 寻址,39,答案:,5.4 寻址,40,练习:p157:13,5.4 寻址,41,答案: 1000 1400 1300 1000,5.4 寻址,42,5.5 指令流水线,什么是指令流水线? 某些CPU在执行指令时把取指、译码、执行的循环过程细分成若干个小步骤并行进行,以提高执行速度,称为指令流水线技术(ILP: Instruction-level pipelining),43,假定一个指令周期细分成下列几小步:,1. 取指 2. 译码 3. 计算操作数有效地址 4. 取操作数 5. 执行指令 6.保存结果,5.5 指令流水线,44,在每个时钟周期执行一小步,不同小步可在时间上重叠,S1. Fetch instruction. S4. Fetch operands. S2. Decode opcode. S5. Execute. S3. Calculate effective S6. Store result. address of operands.,5.5 指令流水线,45,设每条指令需要1秒,串行执行6条指令需要6秒,流水线执行6条指令仅需要11/6秒 若每小步需时tp秒,每条指令需要k小步,则每条指令需要时间(k小步 tp秒),n条指令需要时间为 (k + n - 1)tp秒,5.5 指令流水线,46,不采用流水线技术执行n条指令需要ntn(=n(ktp)秒,采用流水线技术需要(k+n-1) tp秒,二者相除得到提速比: 取极限 ,令n , (k + n - 1) n,理论上:,5.5 指令流水线,47,练习:p158: 15,5.5 指令流水线,48,答案: k=5(步), n=200(指令), tp=40ns/步 tn=200ns/指令 不采用流水线技术需要时间:n*tn=200*200=40000ns 采用流水线技术后需要时间: (k+n-1)*tp=(5+200-1)*40=8160ns 加速比=4.9 接近 k=5,5.5 指令流水线,49,以上计算建立在若干个现实假定基础上: 假定CPU体系结构支持并行执行 假定流水线在任何时候都满负荷运行 实际上流水线技术中指令的执行存在着冲突(conflicts)、延迟执行(stalls)和泛滥(flush)的可能,5.5 指令流水线,50,原因: 资源冲突影响 数据之间相互影响 条件分支影响 采用软件和硬件技术可以解决这些问题,但并非万能,5.5 指令流水线,51,5.6 ISA现实案例,简要介绍Intel体系结构中采用的流水线技术 Intel在其 Pentium系列芯片中采用了流水线技术 早期 Pentium 采用了5步流水,后续Pentiumd的步数逐渐增多,到 Pentium IV 达到24步 Itanium (IA-64)仅有 10步,52,Intel处理器支持本章介绍的各种寻址方式 例如:Intel 8086 提供17种寻址方式(基本方式基础上的变种) 基于向下兼容之目的Pentium系列仍然支持这些寻址方式 Itanium具备RISC核心,仅支持寄存器间接寻址(register indirect addressing)但具有可选后增量 安腾处理器: INTEL公司为向大众推广的纯64位处理器,专门用于高端服务器CPU 不能运行32位程序 未投放于民用市场,只提供给了IBM等大公司用于数据服务器,5.6 ISA现实案例,53,MIPS(Microprocessor Without Interlocked Pipeline Stages) 体系结构:小端、可字寻址,定长指令、三地址 R2000和R3000具备5步流水线;R4000和R4400 具备8步流水线,5.6 ISA现实案例,54,Java编程是一种运行在“软机器”(JVM)上的语言 JVM 使用本色语言(native language)编写适合于任何一种硬件CPU的软环境 JVM 也具有指令体系结构,称为“字节代码”(bytecode)。设计成能够兼容任何运行JVM的计算机 JAVA编程环境,5.6 ISA现实案例,55,JAVA编程环境,5.6 ISA现实案例,56,Java bytecode 是一种基于栈的语言 其中大多数指令是0地址指令 JVM具有4个寄存器供给5个内存区的数据存取 所有对内存某个区中数据的存取都是以该区所对应寄存器的值为偏移地址的 Java 不使用指针或绝对内存地址来寻址 Java 被设计成统一平台可操作,5.6 ISA现实案例,57,不同处理器指令系统结构在特征上的主要区别 大端、小端的概

温馨提示

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

评论

0/150

提交评论