欢迎来到天天文库
浏览记录
ID:43972811
大小:1.01 MB
页数:34页
时间:2019-10-17
《处理器结构与操作系统相关(MIPS为例)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、SeeMIPSRun周剑20107ContentsMIPS概述1协处理器02高速缓存及内存管理3异常处理4函数调用5MIPS概述五级流水(四个时钟周期)IF——取指RD——读寄存器ALU——算术运算MEM——访问内存WB——写回寄存器要求:1.指令等长(32位)2.内存操作限制(load&store)MicrocomputerwithoutInterlockedPipelineStageMIPS概述1.DelayedBranches2.LoadDelaysWithoutInterlocked?通用寄存器地址空间K
2、useg:MMU无MMU时与实现相关Kseg0:最高位清零得到PA;无MMU时存放大多数的程序和数据,有MMU时操作系统内核会存放于此;Kseg1:最高3位清零得到PA;重启时可用,重启入口向量存放于此Kseg2:MMU(Kernelmode)协处理器0协处理器用于处理通常运算功能之外的某些控制功能如:中断、配置选项、cache控制等。协处理器0:系统控制协处理器;协处理器1:浮点协处理器;CP0职责1.配置CPU的一些基本特性2.高速缓存控制3.异常/中断控制4.存储管理单元控制5.杂项:时钟、事件计数器和奇偶
3、校验等CPU控制寄存器中断相关SRCauseEPC内存管理TLB编程CPU配置ConfigCPU控制寄存器寄存器读mfc0d,寄存器写mtc0s,CPU控制寄存器作用时机加电后设置SR(根据Config寄存器)处理异常EPC寄存器保存返回地址Cause指示异常类型中断SR中断掩码纯粹为了引发异常的指令系统调用、断点CPU控制寄存器状态寄存器(SR)CUx:协处理器使能RE:大小端反转BEV:启动时异常向量SR:软复位IM7-0:中断屏蔽KSU:CPU特权等级ERL:错误级,CPU响应奇偶校验等异常时置
4、位EXL:异常级IE:全局中断使能CPU控制寄存器原因寄存器(Cause)BD:分支延迟槽异常ExcCode:异常类型编码异常返回地址(EPC)BD置位时指向受害指令的前一条(分支指令),否则指向受害者指令。无效虚地址(BadVaddr)保存引发异常的地址(MMU异常,用户访问kuseg之外,地址未对齐)。CPU控制寄存器ConfigRegisterCM:设为1表示主设备/检查器EC:时钟分频EP:数据传输模式SB:片外二级缓存块的大小SS:控制片外二级缓存块指令和数据空间统一还是分立SC:二级缓存使能SM:多处
5、理器缓存一致性配置BE:CPU尾端EM:数据检验模式,1:ECC;0:奇偶校验IC/DC:一级指令/数据缓存大小高速缓存寻址和访问寄存器加载访问寻址方式:基址寄存器+偏移(16位)缓存映射直接映射相联映射写内存写透模式(写操作fifo)回写模式(dirty标示)高速缓存直接映射相联映射高速缓存物理/虚拟寻址许多MIPSCPU采用虚拟地址作为高速缓存的快速索引,并用物理地址标记每行高速缓存。高速缓存行四字/八字每行,二级三级缓存可能更大未命中时整行读取I-cache/D-cache分开高速缓存Cache管理注意点D
6、MA从内存读取数据前,任何一个被读的数据都要从缓存中写回到内存中;在数据通过DMA写入内存之前,使对应的缓存块无效;在CPU写指令到内存中然后再执行它,首先保证写入的指令被回写到内存中,然后保证对应I-cache作废。高速缓存缓存指令缓存类型:指令缓存/数据缓存,主缓存/二级缓存;访问方式:虚拟地址命中方式,索引方式;回写:dirty标示;使无效(invalidate);存取tag:TagLo和TagHi寄存器;缓存填充(fill):用于指令缓存;内存管理隐藏和保护:用户程序只能访问kuseg存储区,页面设置写保
7、护;给程序分配连续的存储空间;扩展地址范围:有些CPU不能访问全部物理存储;按需分配页面;重定位:MMU允许程序在任何物理地址上运行;地址转换用途(MMU)内存管理ASID+VA》PA分页映射:4K映射缓存:TLB内存管理地址译码过程1.CPU产生一个地址,得到VPN与ASID作为键值2.TLB进行键值匹配,成功则获得高位的物理地址3.判断地址是否有效:参考V和D位4.是否缓存:参考C位TLB重填异常1.如果不存在转换,则陷阱派发到处理地址错误的程序中2.如果存在正确的地址转换,创建实现此译码的TLB入口3.如果
8、TLB装满,软件选择一个可以丢弃的TLB入口4.软件将新地址写入TLB内存管理异常处理外部事件:中断;存储访问异常:访问地址不存在有效映射项,非法写(写保护);其他需要内核干预的非常情况:浮点操作等;程序或硬件检查到的错误:非法指令;数据完整性问题:校验错;系统调用和自陷;异常种类异常处理精确异常异常受害者指令之前的指令都已执行完成,自身及其之后的指令都像从来没有开始一样
此文档下载收益归作者所有