请教个MIPS架构方面TLB的问题

请教个MIPS架构方面TLB的问题,第1张

从TLB entry数目来看,局限于SRAM的size、功耗,片上都不会放太多,而且一般都分2

级,这一点大家都差不多。不同弯肆的是,L2 TLB miss之后,x86/arm硬件会自己page tab

le walk然后硬件自己填写TLB,而MIPS会抛出一个异常让软件填写(当然异常处理程序

的实现一般也是从page table里取),这里我觉得一定程度上是有效率损失,但效率损

失到底有多少?我猜应该不太大,因为即使是x86硬件自己填写TLB也是需要访问外存,

我猜访问外存在这里是主要矛盾,MIPS的TLB refill异常处理没有多少条指令,现在CP

U处理速度都很快,纯老所以我觉得差别不大。我猜MIPS TLB这样设计也是有优点的:MIPS的

TLB可以由用户控制增加了灵活性,它可以让用户灵埋裤轿活配置页表大小;另外硬件实现起来

应该也会比较简单。

MIPS有32个寄存器,汇编用 s0

s开头代表保存寄存器,t开头代表临时寄存器

MIPS指令采用32位,按 *** 作类型分为3类:R指令,I指令,J指令

op是0

rs,rt是源寄存器

rd是目的寄存器

funct是R指令具体方法

rs,imm是源数

rt是目的数

跳转指令

使用两个特殊的寄存器hi和lo

mult s1(结果的高位存放到hi,低32位存放到lo)

div s1 (商保存到lo, 余存到hi中)

beq 当两个寄存器相等时,执行跳转语句

bne 当两个寄存器不等时,执行跳转语句

j 跳转到一个汇编标号位置

jr 跳转到一个寄存器地址

slt rd rs rt 当rs<rt时rd=1,当rs>rt时rd=0

lui s0, 0x1000 //s0=0x1000000 给s0高位设置0x1000

ori s0, s0, 0x700 // s0=0x10007000 给s0低位设置0x7000

lbu 装入无符号字节(装入时0扩展)

lb 装入字节(装入时符号扩展)

sb存储字节

调用函数调用前把参数放在 a3中(多出来的参数放在栈里)

被调用函数将返回值放在 v1(如果返回64位,则使用v1)

使用jal 调用一个函数(把下一条指令地址保存在 ra寄存器的地址)

s0~s7是受保护寄存器,被调用函数应该保证他们不被修改

t0~t1是非保护寄存器,被调用函数可以随便修改他们

伪直接寻址:因为32位的指令有6位保存opcode,只有26位留给addr,不够32位地址,有一种办法来实现。首先寻址的地址是吵尘液对齐的,所以最后两位一定是0,那就剩下32-26-2=4位,剩下4位取兄或当前PC的最高位4位升物,这种寻址方式称为伪直接寻址

在MIPS,异常处理程序总是位于0x80000180,使用cause专用的寄存器来保存中断的原因

单时钟周期的话就没有ILP,没有ILP所以就不需要流水线寄存器了,取址,译址等等就可以一条龙的执行下来,中间氏行不需要任何停顿。

cache缺失必须由硬件来处理,这样才能提升块交换的速度,用软件调度的话更换一个数据块可能要花费上百万个时钟周期,虚拟内存等存储体系的低层的东西是由软件来管理调度( *** 作系统)

建议你看帕特森,亨尼斯的《计算机组成与设计 硬件/软件接口》这本书是以MIPS体系结构介绍芹缺的计算机原理,好好的看过一遍歼首哗之后你的问题就全解决了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12289150.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存