第二章 MIPS体系结构_第1页
第二章 MIPS体系结构_第2页
第二章 MIPS体系结构_第3页
第二章 MIPS体系结构_第4页
第二章 MIPS体系结构_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、第二章 MIPS体系结构2.1 MIPS汇编语言风格#:注释;:一行中多条指令用分号隔开::单词后面跟着冒号指标号,代码中的入口点和命名数据区的一个存储位置三种指令格式(所有指令都是32位):R类型 I类型 J类型(1)R型指令(从寄存器堆中取出两个操作数,计算结果写回寄存器堆) OP:指令的基本操作-操作码 Rd:存放结果的目的操作寄存器 Rs:第一个源操作数寄存器 Rt:第二个源操作寄存器 Shamt:偏移量,用于移位指令 Funct:函数,对操作码进行补充add $s1,$s2,$s3 $s1=$s2+$s3OPRdRsshamtRt6bitsfunct5bits5bits5bits5b

2、its6bitsR 型指令(2)I类型(用一个16位的立即数作为一个源操作数)g = g + 4; ; (in C)Lw $t0, 0($s3) # $t0=4 $s3=Address(4) add $s1,$s1,$t0 # g=g+4(3)J类型(用一个26位的立即数作为跳转的目标地址)gotogoto Label Label; (C语言)J label J label (MIPS指令)2.2 寄存器$0=0gp: PIC:维护GOT(global offset table)指针(16章) 非PIC:作基指针(链接时确定位置的静态数据中部) lw ri,offset(gp) offset

3、16位,前后各32K若没有gp,存储静态数据区域的值需要两条指令(获取地址,去存储数据)$31:正常调用函数指令(jal)存放返回地址。寄存器调用版本(jalr)可以用任意寄存器存放返回地址。2.3 整数乘法部件及寄存器 MIPS CPU采用专用的整数乘法部件(可以执行两个通用寄存器的除法操作),并没有集成到流水线中去。 特殊寄存器:HI 、LOHI:乘法结果高32位,除法余数LO:乘法结果低32位,除法商mfhi/mflo rt:将hi/lo内容传输到通用寄存器rtmthi/mtlo rt:将通用寄存器rt内容传输到hi/lo(中断返回恢复现场) 结果寄存器互锁(运算未完成之前读取结果会使C

4、PU停下等待)2.4 加载与存储:寻址方式lw $1,offset($2) offset:有符号16位数字(-3276832767),前后各32K加载所需地址=offset+$2寄存器的值2.5 存储器与寄存器的数据类型(1)字节byte和halfword的加载方式 MIPS不能直接做8位和16位精度的算术运算符号扩展:lb、lh零扩展:lbu、lhu(2)未对齐加载 地址对齐:使用访存指令读取或写入数据单元时,目标地址必须是所访问之数据单元字节数的整数倍未对齐操作:ulw(unaligned load word)ulh(unaligned load halfword)(3)浮点数据 32位处

5、理器:加载一个单精度的数据放入一个偶数号的浮点寄存器中双精度(汇编指令展开为两个连续的寄存器加载)l.d $f2,24(t1)lwc1 $f2,24(t1)lwc1 $f3,28(t1)MIPS/SGI规则:八字节长的双精度浮点变量对齐到八字节的地址边界上2.6 汇编器合成指令(1)LIli d,j ori d,$zero,j 0=j=65535 addiu d,$zero,j -32768=j0 lui d,hi16(j) 32位整数的其他j情形 ori d,d,lo16(j)将一个立即数存入一个通用寄存器(2)LA将一个地址(通常是一个标签)存入一个通用寄存器(3)MOVEmove d,s

6、 or d,s,$zero将一个寄存器的值存入另一个寄存器2.7 MIPS64:64位的扩展(1)保留所有的32位体系结构的指令(2)MIPS32指令完全兼容(寄存器存放的是32位值的64位符号扩展)(3)定义尽可能多的MIPS32指令(兼容性及做64位指令)2.8 基本地址空间(1)kuseg:0 x0000_00000 x7FFF_FFFF(2G) 用户态可用地址,需MMU转换(2)kseg0:0 x8000_00000 x9FFF_FFFF(512M) 最高位清零映射到低端512M的物理地址,unmapped,cached。无MMU,存放程序和数据;有MMU,存放操作系统核心。(3)ks

7、eg1:0 xA000_00000 xBFFF_FFFF(512M) 最高三位清零映射到低端512M的物理地址,unmapped,uncached。唯一一个系统重启能正常工作的地址空间,复位入口地址0 xBFC0_0000,相应物理地址0 x1FC0_0000。存储初始的程序ROM或用作I/O寄存器。(4)kseg2:0 xC000_00000 xFFFF_FFFFf(1G) 核心态下使用,需MMU转换。 若需要512M之上的物理地址空间,可以设置存储器管理单元TLB(第六章) 或使用64位CPU的额外空间。用户态:用户地址经MMU转换成物理地址,2G以上程序地址是非法的,某些指令(如CPU控制指令)是非法的核心态:CPU可以存储地位地址,和用户态一样,地址做同样的转换。 模拟32位 指令时寄存器存放的是32位值的64位符号扩展。2.9 流水线可见性(1)分支延迟 分支延迟槽中指令即使跳转成功也会执行。MIPS II引入可能分支branch-likely指令,延迟槽中指令仅在分支被接受的情况下执行。(2)加载延迟 加载至使用的延迟(3)浮点数(协处理器1)的问题 浮点运算(多个时钟周期)与后

温馨提示

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

评论

0/150

提交评论