《计算机系统结构》电子教案(课2).ppt

上传人:sh****n 文档编号:7432303 上传时间:2020-03-21 格式:PPT 页数:45 大小:406KB
返回 下载 相关 举报
《计算机系统结构》电子教案(课2).ppt_第1页
第1页 / 共45页
《计算机系统结构》电子教案(课2).ppt_第2页
第2页 / 共45页
《计算机系统结构》电子教案(课2).ppt_第3页
第3页 / 共45页
点击查看更多>>
资源描述
2014 2 17 计算机系统结构 1 第2章指令系统的设计 本章主要内容 1 指令操作码的优化 不讲 2 RISC技术简介 3 MIPS指令集 4 MIPS模拟器 补充 2014 2 17 计算机系统结构 2 2 4 2RISC技术简介 P44 名词 RISC ReducedInstructionSetComputing 精简指令集计算机 1 RISC产生的背景 20 与80 规律 2 RISC设计的基本原则 只设置最常用的简单指令 凡遇复杂操作均用多条简单指令实现 指令长度固定 操作码与操作数长度都尽量统一 基本指令的启动时间间隔降低到1个时钟周期 访问主存只有load和store指令 用变址寻址 尽量采用硬连逻辑对指令译码 为了加快执行速度 在编译过程中对目标代码结构进行优化 3 RISC性能优势的原因采用RISC技术的主要动机是使各条指令的执行时序尽可能一致 CPU在执行时间上可以把它们安排得更紧凑 就像许多大小相近的箱子容易被堆放得更密集一样 这样机器内的各种资源可以充分利用 单位时间内能执行更多的指令 速度更快 这方面的具体内容 在第3章讲流水线时会详细介绍 2014 2 17 计算机系统结构 3 2 4 2RISC技术的发展 20世纪70年代初 IBM研究中心的JohnCocke证明 计算机中约20 的指令承担了80 的工作 1974年 他提出RISC的概念 在RISC的早期研究中 加州大学伯克利分校 UCBerkeley 和斯坦福大学 Stanford 提出了许多有创见的新思想 伯克利率先在1982年完成了RISCI型32位芯片的设计 斯坦福大学则在JohnHennessy 现任校长 带领下于1983年完成了第一个采用RISC理念的商用MIPS微处理器 1984年Hennessy等人创建了MIPS计算机公司 1998年改名为MIPS技术公司 美普思科技公司 MIPSTechnologiesInc 目前是美国最著名的芯片设计公司之一 MIPS技术公司本身不生产微处理器 它只设计高性能工业级的32位和64位CPU的结构体系 并且向其它半导体公司提供使用其内核 IP 的授权 用于生产基于MIPS而又各具特色的微处理器 1999年MIPS技术公司发布了MIPS32和MIPS64架构标准 MIPS的通用微处理器主要用于构建高性能工作站 服务器和超级计算机系统 其嵌入式产品在1999年以前全球销量第一 目前也仅次于ARM 2014 2 17 计算机系统结构 4 MIPS处理器 MIPS的意思是 无内部互锁流水级的微处理器 Microprocessorwithoutinterlockedpipedstages 其机制是尽量利用软件办法避免流水线中的数据相关问题 MIPS具有强大的应用基础 能在MIPS上运行的操作系统 包括Linux WindRiver WinCE GNU 和MontaVista等 支持14种编译器 包括MIPS SDE GreenHills GNU和WindRiver等 支持15种调试器 包括GNU GreenHills WindRiver ASHLING和FS2等 支持18种仿真工具 包括MentorGraphics Synopsys CoWare和Candence等 中国科学院计算所的龙芯1和2都采用64位MIPS指令架构 中国龙芯已与MIPS公司合作 购买其指令系统授权 以便批量生产与出口 2014 2 17 计算机系统结构 5 2 6 1MIPS的寄存器 P47 32个64位通用寄存器 GPRs 也称为整数寄存器名称是R0 R1 R31 也可写为 0 1 31 R0的值永远是0 可用作源寄存器 也可作为无用结果的目的寄存器 R31用于存放跳转并链接类指令的返回地址 32个64位浮点数寄存器 FPRs F0 F1 F31用来存放32个单精度浮点数 32位 也可以用来存放32个双精度浮点数 64位 存储单精度浮点数 32位 时 只用到FPR的一半 其另一半没用 特殊功能寄存器PC programcounter 程序计数寄存器 HI 整数乘除结果高位寄存器 除法余数 LO 整数乘除结果低位寄存器 除法的商 它们可以与通用寄存器交换数据 浮点状态寄存器 用来保存有关浮点操作结果的信息 2014 2 17 计算机系统结构 6 MIPS的寄存器别名 程序员习惯用法 MIPS编译器支持一些专业程序员对32个通用寄存器GPR GENERALPURPOSEREGISTER 约定的习惯性用法 非强制的 REGISTERNAMEUSAGE 0 zero常量0 constantvalue0 2 3 v0 v1函数调用返回值 valuesforresultsandexpressionevaluation 4 7 a0 a3函数调用参数 arguments 8 15 t0 t7暂时的 或随便用的 16 23 s0 s7保存的 或如果用 需要SAVE RESTORE的 saved 24 25 t8 t9暂时的 或随便用的 26 27 k0 k1由操作系统的异常或中断处理程序使用 28 gp全局指针 GlobalPointer 29 sp堆栈指针 StackPointer 30 fp帧指针 FramePointer BNN fpisstaleacutally andcanbesimplyusedas t8 31 ra返回地址 returnaddress 2014 2 17 计算机系统结构 7 2 6 2MIPS的数据表示 整数字节 8位 半字 16位 字 32位 双字 64位 浮点数单精度浮点数 32位 双精度浮点数 64位 字节 半字或者字在装入64位寄存器时 用零扩展或者用符号位扩展来填充该寄存器的剩余部分 装入以后 对它们将按照64位整数的方式进行运算 2014 2 17 计算机系统结构 8 2 6 3MIPS的数据寻址方式 P47 立即数寻址与偏移量寻址 立即数字段和偏移量字段都是16位的 寄存器间接寻址是通过把0作为偏移量来实现的 16位绝对寻址是通过把R0 其值永远为0 作为基址寄存器来完成的 MIPS的存储器按字节寻址 地址为64位 所有存储器访问必须是边界对齐的 即访问地址必须是该数据长度 字节数 的整倍数 又叫整数边界原则 MIPS的存储器按字节编制 所有数据字 指令字从最高有效位开始依次标记为bit0 1 2 MIPS处理器的存储顺序 可以设置为 小端字节表示顺序 Littile Endian 低位字节放在低地址 或者 大端字节表示顺序 Big Endian 高位字节放在低地址 以便适合网络数据包内顺序 在下文使用的MIPS64模拟器中采用 小端字节表示顺序 2014 2 17 计算机系统结构 9 2 6 4MIPS指令格式 P48 MIPS32和MIPS64体系结构定义了兼容的32位和64位处理机指令使用条件编译或宏汇编指令能写出可同时在MIPS32和MIPS64上运行的程序寻址方式编码到操作码中所有的指令都是32位的操作码占6位3种指令格式 3种格式中 同名字段的位置固定不变 2014 2 17 计算机系统结构 10 2 6 4MIPS指令格式 I类指令 包括所有的load和store指令 立即数指令 分支指令 寄存器跳转指令 寄存器链接跳转指令 立即数字段为16位 用于提供立即数或偏移量 load指令访存有效地址 Regs rs immediate从存储器取来的数据放入寄存器rtstore指令访存有效地址 Regs rs immediate要存入存储器的数据放在寄存器rt中立即数指令Regs rt Regs rs opimmediate分支指令转移目标地址 Regs rs immediate rt无用寄存器跳转 寄存器跳转并链接转移目标地址为Regs rs 2014 2 17 计算机系统结构 11 2 6 4MIPS指令格式 R类指令 包括ALU指令 专用寄存器读 写指令 move指令等 ALU指令Regs rd Regs rs functRegs rt funct为具体的运算操作编码 2014 2 17 计算机系统结构 12 2 6 4MIPS指令格式 J类指令 包括跳转指令 跳转并链接指令 自陷指令 异常返回指令 在这类指令中 指令字的低26位是偏移量 它与PC值相加形成跳转的地址 2014 2 17 计算机系统结构 13 2 6 5MIPS的操作 P49 MIPS指令可以分为四大类load和storeALU操作分支与跳转浮点操作符号的意义x ny 从y传送n位到xx y z 把z传送到x和y下标 表示字段中具体的位 对于指令和数据 按从最高位到最低位 即从左到右 的顺序依次进行编号 最高位为第0位 次高位为第1位 依此类推 下标可以是一个数字 也可以是一个范围 例如 Regs R4 0 寄存器R4的符号位Regs R4 56 63 R4的最低字节 2014 2 17 计算机系统结构 14 2 6 5MIPS的操作 续 Mem 表示主存 按字节寻址 可以传输任意个字节 上标 用于表示对字段进行复制的次数 例如 032表示一个32位长的全0字段符号 用于两个字段的拼接 并且可以出现在数据传送的任何一边 举例 R8 R6是64位的寄存器 下式Regs R8 32 63 32 Mem Regs R6 0 24 Mem Regs R6 表示的意义是 以R6的内容作为地址访问内存 得到的字节按符号位扩展为32位后存入R8的低32位 R8的高32位 即Regs R8 0 31 不变 2014 2 17 计算机系统结构 15 load和store指令 2014 2 17 计算机系统结构 16 ALU指令 寄存器 寄存器型 RR型 指令或立即数型算术和逻辑操作 加 减 与 或 异或和移位等R0的值永远是0 它可以用来合成一些常用的操作 例如 DADDIUR1 R0 100给寄存器R1装入常数100DADDR1 R0 R2把寄存器R2中的数据传送到寄存器R1 2014 2 17 计算机系统结构 17 2 6 6MIPS的控制指令 P50 由一组跳转和一组分支指令来实现控制流的改变典型的MIPS控制指令 2014 2 17 计算机系统结构 18 跳转指令 根据跳转指令确定目标地址的方式不同以及跳转时是否链接 可以把跳转指令分成4种 确定目标地址的方式把指令中的26位偏移量左移2位 因为指令字长都是4个字节 后 替换程序计数器的低28位 间接跳转 由指令中指定的一个寄存器来给出转移目标地址 跳转的两种类型简单跳转 把目标地址送入程序计数器 跳转并链接 把目标地址送入程序计数器 把返回地址 即顺序下一条指令的地址 放入寄存器R31 2014 2 17 计算机系统结构 19 分支指令 条件转移 分支条件由指令确定例如 测试某个寄存器的值是否为零提供一组比较指令 用于比较两个寄存器的值 例如 置小于 指令有的分支指令可以直接判断寄存器内容是否为负 或者比较两个寄存器是否相等 分支的目标地址由16位带符号偏移量左移两位后和PC相加的结果来决定一条浮点条件分支指令 通过测试浮点状态寄存器来决定是否进行分支 2014 2 17 计算机系统结构 20 2 6 7MIPS的浮点操作 P51 由操作码指出操作数是单精度 SP 或双精度 DP 后缀S 表示操作数是单精度浮点数后缀D 表示是双精度浮点数浮点操作包括加 减 乘 除 分别有单精度和双精度指令 浮点数比较指令根据比较结果设置浮点状态寄存器中的某一位 以便于后面的分支指令BC1T 若真则分支 或BC1F 若假则分支 测试该位 以决定是否进行分支 2014 2 17 计算机系统结构 21 注意浮点数的存储格式只有64位双精度这一种 没有32位单精度数 MIPS64伪指令 2014 2 17 计算机系统结构 22 MIPS64指令集1 2014 2 17 计算机系统结构 23 MIPS64指令集2 2014 2 17 计算机系统结构 24 MIPS64指令集3 2014 2 17 计算机系统结构 25 MIPS64指令集4 2014 2 17 计算机系统结构 26 MIPS64指令集5 2014 2 17 计算机系统结构 27 MIPS64指令集6 2014 2 17 计算机系统结构 28 MIPS64模拟器介绍1 2014 2 17 计算机系统结构 29 MIPS64模拟器介绍2 2014 2 17 计算机系统结构 30 MIPS64模拟器介绍3 2014 2 17 计算机系统结构 31 MIPS64模拟器的存储器映射I O地址与命令 CONTROL word320 x10000 控制寄存器 映射地址 DATA word320 x10008 数据寄存器 映射地址 SetCONTROL 1 将DATA作为无符号整型数输出SetCONTROL 2 将DATA作为有符号整型数输出SetCONTROL 3 将DATA作为浮点数输出SetCONTROL 4 将DATA作为输出字串的首地址SetCONTROL 5 将DATA 5作为x坐标 DATA 4作为y坐标 DATA作为RGB彩色值输出SetCONTROL 6 清除终端屏幕SetCONTROL 7 清除图形屏幕SetCONTROL 8 从键盘读DATA 整型数或浮点数 SetCONTROL 9 从DATA读1字节 无字符回显 数据地址 0 x00000 程序存储器 程序起点 lwur24 DATA r0 lwur25 CONTROL r0 指令地址 0 x00000 数据存储器 常规数据区 0 x10000 0 x10008 sdr9 0 r24 sdr2 0 r25 控制寄存器 数据寄存器 仿真非智能终端 2014 2 17 计算机系统结构 32 MIPS64模拟器演示实验1 整数加法 文件名 sum s dataA word10B word8C word0 textmain ldr4 A r0 r4 A ldr5 B r0 r5 B daddr3 r4 r5 r3 r4 r5sdr3 C r0 C r3halt 2014 2 17 计算机系统结构 33 MIPS64模拟器演示实验2 阶乘1 文件名 factorial s 阶乘示例 返回值放r10 datanumber word10 此数未用 可能想作为输入值的上限title asciiz factorialprogramn 提示字符串CONTROL word320 x10000DATA word320 x10008 textlwur21 CONTROL r0 r21指向CONTROL单元 端口 lwur22 DATA r0 r22指向DATA单元 端口 2014 2 17 计算机系统结构 34 MIPS64模拟器演示实验2 阶乘2 daddir24 r0 4 输出ascii字串 提示信息 daddir1 r0 titlesdr1 r22 sdr24 r21 daddir24 r0 8 从键盘读输入值到r1 整型量 sdr24 r21 ldr1 r22 start daddir29 r0 0 x80 r29指向堆栈区起点 十进制值 128 jalfactorial 调阶乘子程序 返回值在r10 整型量 daddir24 r0 1 输出r10的结果sdr10 r22 sdr24 r21 halt 停机 2014 2 17 计算机系统结构 35 MIPS64模拟器演示实验2 阶乘3 阶乘子程序 入口参数在r1 返回值在r10 factorial sltir10 r1 2 如果r1 2 即r1 1 则r10 1 否则r10 0bnezr10 out 如果r10 1则子程序返回sdr31 r29 子程序返回地址压进堆栈daddir29 r29 8 堆栈指针 8sdr1 r29 r1当前值压进堆栈daddir29 r29 8 堆栈指针 8daddir1 r1 1 r1 r1 1jalfactorial 递归调用 将乘数序列依次入栈 n 3 2 2014 2 17 计算机系统结构 36 MIPS64模拟器演示实验2 阶乘4 daddr4 r0 r10 递归出口 首次r10 1 r4 r10daddir29 r29 8 堆栈指针 8ldr3 r29 出栈 r3 栈顶单元dmulur3 r3 r4 r3 r3 r4daddr10 r0 r3 r10 乘积r3daddir29 r29 8 堆栈指针 8ldr31 0 r29 r31 返回地址out jrr31 子程序返回到r31所指的地址 2014 2 17 计算机系统结构 37 MIPS64模拟器演示实验3 存储器映射输出 文件名 output s dataA word10B word8C word0CR word320 x10000DR word320 x10008 textmain ldr4 A r0 r4 A ldr5 B r0 r5 B daddr3 r4 r5 r3 r4 r5sdr3 C r0 C r3lwur1 CR r0 r1指向Control寄存器lwur2 DR r0 r2指向Data寄存器daddir10 r0 1 准备命令1 将DATA作为无符号整型数输出 sdr3 r2 Data寄存器 r3sdr10 r1 Control寄存器 1halt 2014 2 17 计算机系统结构 38 MIPS64模拟器演示实验4 存储器映射输入 输出 数据地址 0 x00000 程序存储器 程序起点 lwur24 DATA r0 lwur25 CONTROL r0 指令地址 0 x00000 数据存储器 常规数据区 0 x10000 0 x10008 sdr9 0 r24 sdr2 0 r25 控制寄存器 数据寄存器 仿真非智能终端 文件名 testio s向虚拟终端输出字符串 命令4 画线 画彩色点 命令5 CONTROL word320 x10000DATA word320 x10008 textlwu t8 DATA zero t8 addressofDATAregisterlwu t9 CONTROL zero t9 addressofCONTROLregisterdaddi v0 zero 1 setforunsignedintegeroutputld t1 int zero sd t1 0 t8 writeintegertoDATAregistersd v0 0 t9 writetoCONTROLregisterandmakeithappendaddi v0 zero 2 setforsignedintegeroutputld t1 int zero sd t1 0 t8 writeintegertoDATAregistersd v0 0 t9 writetoCONTROLregisterandmakeithappen 2014 2 17 计算机系统结构 39 习题2 14 补充 MIPS64指令系统练习 人工模拟以下MIPS程序的单条指令运行方式 在表中用16进制编码记录每一步产生的结果 不得借助模拟软件 datan word3x double0 5 textLDR1 n R0 L DF0 x R0 DADDIR2 R0 1 R2 1MTC1R2 F11 F11 1CVT D LF2 F11 F2 1loop MUL DF2 F2 F0 F2 F2 F0DADDIR1 R1 1 decrementR1by1BNEZR1 loop ifR1 0continueHALT 此条不填表提示 MIPS浮点数的格式是IEEE754 2014 2 17 计算机系统结构 40 习题2 14 补充 续 2014 2 17 计算机系统结构 41 实验1 WinMIPS64模拟器练习 实验要求 用MIPS64指令编写一个尽可能短小的程序 将事先存放在数据区的4字节字符串 例如 3901 转换为一个4位BCD整数 赋给R9 在WinMIPS64模拟器调试通过 实验报告 1 程序清单 2 运行结果 每轮循环末尾R9的数值 高位的0可以不写 3 程序效率 2014 2 17 计算机系统结构 42 IEEE754浮点数标准 补充 目前国际上流行的浮点数标准是IEEE754 其基本组成是32bit单精度 64bit双精度两种类型 IEEE754标准的主要起草者是加州大学伯克利分校数学系教授WilliamKahan 他帮助Intel公司设计了8087浮点处理器 FPU 并以此为基础形成了IEEE754标准 Kahan教授也因此获得了1987年的图灵奖 目前几乎所有包含浮点运算的处理机都宣称支持IEEE754标准 包括Intel公司的Pentium 中国的 龙芯 IEEE754的标准文件是ANSI IEEEStd754 1985 IEEEStandardforBinaryFloating PointArithmetic 通过Google可搜到pdf文件下载 Kahan教授的主页 http www cs berkeley edu wkahan 2014 2 17 计算机系统结构 43 在IEEE754浮点数国际标准中 32位单精度浮点数和64位双精度浮点数的格式分别如下 对于单精度浮点数 阶码用移 127码表示 即阶码的0 255分别表示阶码的真值为 127 128 尾数 原码 用1位符号位 23位小数和1位隐藏的整数共25位表示 尾数的基值和阶码的基值都是2 当0 e 255时 表示一个非零的规格化浮点数 数值为 N 1 s 2e 127 1 m IEEE754浮点数标准 续1 2014 2 17 计算机系统结构 44 IEEE754浮点数标准 续2 当e 255 且m 0时 表示一个非数NaN Not a Number NaN可能是在许多非确定的情况下 如零除以零 求负数的平方根等产生的结果 当e 255 且m 0时 表示一个无穷数 N 1 s 注意 和 的表示是不同的 当e 0 且m 0时 表示规格化浮点数 N 1 s 2 126 0 m 当e 0 且m 0时 表示浮点数零 N 1 s 0 注意 0与 0的表示是不同的 对于64位双精度浮点数 阶码用移 1023码表示 其他规定与单精度浮点数类似 2014 2 17 计算机系统结构 45 各次作业应交的内容 作业2 第2次课 2 14 补充 实验1
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!