MIPS的由来与发展◦MicroprocessorwithoutInterlockedPipelineStages(MillionsofInstructionsPerSecond的双关语)尽量利用软件办法避免流水线中的数据相关问题◦1981年,斯坦福大学教授Hennessy领导团队,设计出第一个MIPS架构的处理器。◦1984年,Hennessy教授离开斯坦福大学,创立MIPS科技公司。于1985年,设计出R2000芯片,1988年,将其改进为R3000芯片,1991年:R4000。陆续推出R8000(于1994年)、R10000(于1996年)和R12000(于1997年)等型号。后重点转向嵌入式领域——2000年,MIPS公司发布了针对MIPS324Kc的版本以及64位MIPS6420Kc处理器内核。◦MIPS处理器是八十年代中期RISCCPU设计的一大热点:在许多领域,如Sony,Nintendo的游戏机,Cisco的路由器和SGI超级计算机中使用。◦通用处理器指令体系历经MIPSI、MIPSII、MIPSIII、MIPSIV到MIPSV的发展;嵌入式指令体系历经MIPS16、MIPS32到MIPS64的发展,已经十分成熟。◦在设计理念上MIPS强调软硬件协同提高性能,同时简化硬件设计。◦中国的龙芯采用的是MIPS指令架构。经典的五级流水•InstructionFetch(IF)•ReadRegisters(RD)•ArithmeticOperation(ALU)•MemoryAccess(MEM)•WriteBack(WB)指令集特点(与X86指令集对比)MIPS32X86-32指令长度固定(32位)变长(1-15字节)流水线的“取指”段(IF)时间固定常数字段小于32位(对于无条件跳转指令,立即数方式的目的地址为26位;其它指令的一般为16位)指令中的内存操作数内存操作数无法直接参与运算内存操作数可参与运算指令操作须适应流水线(第四段才是访存)计算指令的操作数个数多为3个多为2个对编译优化有利*MIPS32结构中的字长度为32bitMIPS32X86-32通用寄存器个数3280号寄存器的值永远是0。0是最常用的常数,有利于节省指令编码。条件码无有所有信息存于通用寄存器,条件判断通过检测通用寄存器来进行。访存操作只能通过load/Store指令多数指令支持支持双字、字*、字节、半字等;一般需要地址对齐(有专门的不对齐load/store指令)无需地址对齐一种寻址方式:基址+常数偏移量多种MIPSX86半字或者字节运算无(软件解决)有针对栈操作的支持无有专门指令一个通用寄存器习惯上作为栈顶地址寄存器过程调用指令返回地址保存到31号寄存器保存到栈其它对于中断与异常的处理主要依赖软件完成程序员可见的流水线效果◦BranchDelaySlot(跳转延迟)条件跳转指令的目标地址计算需要在ALU段获得,而此时第二条指令已经进入流水线,存在一个延迟槽(delayslot)需要程序员或编译器优化来填充这个slotBranchInst.TargetDelayslot◦加载延迟(LoadDelaySlot)Load指令在mem端才能获得数据,使得第二条指令无法立即使用加载数据,存在一个加载延迟槽现代的MIPS处理器已经硬件支持这个延迟槽的正确处理LoadInst.ConsumerDelayslot简单总结◦RISC的设计思想在于简化计算机指令功能、规格化指令设计,使得各个指令的流水线分段较为均匀,且操作相对简单规整,从而提高主频。◦采用Load/Store结构:其它指令均在寄存器之间对数据进行处理,提高处理速度。◦依赖软件(编译)实现优化及完成复杂功能。三操作数指令形式,目标寄存器在左侧(与AT&T风格相反!)第一条MIPS指令#调用过程(jal指令类似于X86的call)#这条指令位于delayslot内,与前一条指令一起执行#返回地址示例2访存指令lw$1,offset($2)任何寄存器都可以作为地址或者目标寄存器;offset为16位的带符号整数支持无符号与带符号扩展lb$1,offset($2)#mem[offset($2)]=0xfe;$1=0xfffffffelbu$1,offset($2)#$1=???寄存器◦使用32个通用寄存器0号寄存器的值永远是031号寄存器存放函数调用的返回地址(JAL指令)其它寄存器都是“一样”的没有指令寄存器(如x86-32中的eip)◦整数乘除法的专用寄存器Hi/Lo◦32个浮点寄存器(如果有浮点协处理器的话)寄存器编号名字习惯用途0zero值永远是01at保留给汇编器使用(编程时避免使用)2-3v0,v1过程调用返回值4-7a0-a3传参用寄存器8-15t0-t7调用者保存寄存器24,25t8,t916-23s0-s7被调用者保存寄存器26,27k0,k1保留给中断/异常处理使用28gp全...