当前位置:文档之家› 基于MIPS指令集的RISC微处理器数据通路的设计与实现

基于MIPS指令集的RISC微处理器数据通路的设计与实现

基于MIPS指令集的RISC微处理器数据通路的设计与实现
基于MIPS指令集的RISC微处理器数据通路的设计与实现

MIPS32指令集

MIPS32指令集 MIPS指令可以分成以下各类: 空操作no-op; 寄存器/寄存器传输:用得很广,包括条件传输在内; 常数加载:作为数值和地址的整型立即数; 算术/逻辑指令; 整数乘法、除法和求余数; 整数乘加; 加载和存储; 跳转、子程序调用和分支; 断点和自陷; CP0功能:CPU控制指令 浮点; 用户态的受限访问:rdhwr和synci 注:64位版本开头以“d”表示,无符号数以“u”结尾,立即数通常以“i”结尾,字节操作以“b”结尾,双字操作以“d”结尾,字操作以“w”结尾 1、空操作:nop:相当于sll zero,zero,o, ssnop: equals sll zero,zero,1. 这个指令不得与其它指令同时发送,这样就保证了其运行要花费至少一个时钟周期。这在简单的流水线的CPU上无关紧要,但在复杂些的实现上对于实现强制的延时很有用。 2、寄存器/寄存器传送: move: 通常用跟$zero寄存器的or来实现,或者用addu。 movf, movt, movn, movz: 条件传送。 3、常数加载: dla、la: 用来加载程序中某些带标号的位置或者变量的地址的宏指令; dli、li: 装入立即数常数,这是一个宏指令; lui: 把立即数加载到寄存器高位。 4、算术/逻辑运算: add、addi、dadd、daddi、addu、addiu、daddu、daddiu、dsub、sub、subu:加法指令和减法指令; abs,dabs:绝对值; dneg、neg、negu:取相反数; and、andi、or、ori、xor、nor:逐位逻辑操作指令; drol、rol、ror:循环移位指令; sll、srl、sra:移位。 5、条件设置指令: slt、slti、sltiu、sltu、seq、sge、sle、sne:条件设置。 6、整数乘法、除法和求余数:

MIPS基准指令集手册

第一届全国大学生计算机系统能力培养大赛基础指令集规范 (v1.00) 第一届全国大学生计算机系统能力培养大赛(以下简称“大赛”)技术方案中要求各参赛队开发支持MIPS 基准指令集的MIPS微系统。本文档对需要支持的MIPS基准指令集进行明确规定。各参赛队提交的设计作品必须实现本文档中的所有内容,但不限于。如果发现本文档中有定义不精确之处,请查阅参考文献[1-3]中的相关章节;如发现两者存在冲突,以参考文献[1-3]中的内容为准。 本文档定义的MIPS基准指令集是在MIPS32指令集基础之上进行一定程度地裁剪,在控制系统设计规模的前提下,保证最简单系统的可实现性。概要来说,这套指令集包含了所有非浮点MIPS I指令和MIPS32中的ERET指令,少量的CP0寄存器以支持中断和系统调用,不实现TLB MMU和特权等级。 本文档包含如下章节: 第1章,“编程模型”,对支持的数据类型、软件可见寄存器、大小尾端进行定义。 第2章,“操作模式”,对处理器需要支持的操作模式进行定义。 第2章,“指令定义”,对需实现指令逐条定义。 第3章,“存储管理”,定义一套线性虚实地址映射机制。 第4章,“中断与例外”,介绍需实现的中断和例外的相关定义。 第5章,“系统控制寄存器”,对需实现的系统控制寄存器(俗称CP0寄存器)逐个进行定义。 1编程模型 1.1 数据格式 处理器可处理的数据格式定义如下: ◆比特(bit, b) ◆字节(Byte, 8bits, B) ◆半字(Halfword, 16bits, H) ◆字(Word, 32bits, W) 1.2 寄存器 处理器包含的软件可见的寄存器种类如下: ◆32个32位通用寄存器,r0~r31。其中有两个被赋予了特殊含义:r0,0号通用寄存器,值永远为0; r31,31号通用寄存器,被JAL,BLTZAL和BGEZAL指令隐式的用作目标寄存器,存放返回地址。 ◆HI/LO寄存器。HI寄存器存放乘法指令结果的高半部分或是除法指令结果的余数,LO寄存器存放 乘法指令结果的低半部分或是除法指令结果的商。 ◆程序计数器(PC)。这个寄存器软件无法直接访问。

mips指令集指的是什么

mips指令集指的是什么 MIPS是高效精简指令集计算机(RISC)体系结构中最优雅的一种;即使连MIPS的竞争对手也这样认为,这可以从MIPS对于后来研制的新型体系结构比如DEC的Alpha和HP的Precision产生的强烈影响看出来。虽然自身的优雅设计并不能保证在充满竞争的市场上长盛不衰,但是MIPS微处理器却经常能在处理器的每个技术发展阶段保持速度最快的同时保持设计的简洁。 MIPS与MIPS指令集指令集是存储在CPU内部,对CPU运算进行指导和优化的硬程序。拥有这些指令集,CPU就可以更高效地运行。MIPS指令集属于精简指令集,MIPS 的所有指令都是32位,指令格式简单,而X86的指令长度不是固定的。简单的指令和格式易于译码和流水线操作,但是代码密度不高,导致二进制文件大。 低端的CPU物理面积只有1.5平方毫米(在SOC系统里面肉眼很难找到)。而高端的R10000处理器,第一次投放市场时可能是世界上最快的CPU,它的物理面积几乎有1平方英寸,发热近30瓦特。虽然MIPS看起来没什么优势,但是足够的销售量使其能健康发展:1997年面市的44M的MIPS CPU,绝大多数使用于嵌入式应用领域。 MIPS(Million InstrucTIons Per Second):单字长定点指令平均执行速度Million InstrucTIons Per Second的缩写,每秒处理的百万级的机器语言指令数。这是衡量CPU速度的一个指标。像是一个Intel80386 电脑可以每秒处理3百万到5百万机器语言指令,即我们可以说80386是3到5MIPS的CPU。MIPS只是衡量CPU性能的指标。 MIPS是世界上很流行的一种RISC处理器。MIPS的意思无内部互锁流水级的微处理器(Microprocessor without interlocked piped stages),其机制是尽量利用软件办法避免流水线中的数据相关问题。它最早是在80年代初期由斯坦福(Stanford)大学Hennessy教授领导的研究小组研制出来的。MIPS公司的R系列就是在此基础上开发的RISC工业产品的微处理器。这些系列产品为很多计算机公司采用构成各种工作站和计算机系统。 MIPS技术公司是美国著名的芯片设计公司,它采用精简指令系统计算结构(RISC)来设计芯片。和英特尔采用的复杂指令系统计算结构(CISC)相比,RISC具有设计更简单、

MIPS指令集

MIPS CPU的一次操作可加载或存储1到8个字节的数据。由于乘法的结果返回的速度不足以使下一条指令能够自动得到这个结果,乘法结果寄存器是互锁的(interlocked)。在乘法操作完成之前试图读取结果寄存器就是导致CPU停止运行,直到完成。 和其他一些更简单的RISC体系结构相比,MIPS体系结构的目标之一是:体系结构朝着64位发展,从而使得地址的段式结构变得没有任何必要。(在64位版本的X86核PowerPC中还有这个负担) 功能分组: 空操作:nop、ssnop(不能和其他指令同时发射,至少需要一个时钟周期) 寄存器间的数据传送指令:move、movf、movt、movn、movz(后四个为条件传递指令) 常数加载指令:dla、la(获取某些标号地址或程序中变量地址的宏指令);dli、li(加载常数立即数指令);lui(加载高位立即数指令) 算术/逻辑操作指令:addu、addiu、daddu,daddiu(加法指令);dsub、sub(会触发溢出陷入的减法操作);dsubu、subu(普通减法指令);abs、dabs(求绝对值操作);dneg、neg、dnegu、negu(一元非操作);and、andi、or、ori、xor、xori、nor、not(按位逻辑指令);drol、dror、rol、ror(循环左移和右移);dsll、dsll32、dsllv(64位左移,低位补零);dsra、dsra32、dsrav(64位算术右移指令);dsrl、dsrl32、dsrlv(64位逻辑右移指令);sll、sllv(32位左移指令);sra、srav(32位算术右移指令);srl、srlv(32位逻辑右移指令);slt、slti、sltiu、sltu(硬件指令,条件满足就写入1,否则写0);seq、sge、sgeu、sgt、sgtu、sle、slue、sne (根据更复杂的条件设置目的寄存器的宏指令) 整数乘法、除法以及求余指令:ddiv、ddivu、div、divu(整数除法的3操作数宏指令分别处理64位或32位有符号或无符号数);divo、divou(明确该指令是带有溢出检查的除法指令);dmul、mul(3操作数64位或32位乘法指令,没有溢出检查);mulo、mulou、dmulo、dumlou(乘法宏指令,如果结果不能存入一个通用寄存器,发生溢出,触发异常);dmult、dmultu、mult、multu(执行有符号/无符号32/64位乘法的机器指令);drem、dremu、rem、remu(求余操作);mfhi、mflo、mthi、mtlo(用于访问整数乘除单元的结果寄存器hi和lo)存取指令(内存访问指令):lb、lbu(加载一个字节,高位可以补零,或进行符号扩展,以补充整个寄存器的长度);ld(加载一个双字);ldl、ldr、lwl、lwr、sdl、sdr、swl、swr(向左、向右加载、存储一个字、双字);lh、lhu(加载一个半字,高位可以补零,或进行符号扩展,以补充整个寄存器的长度);lw、lwu(加载一个字);pref、prefx(把数据预取到缓冲);sb、sd、sh、sw(存储字节、双字、半字、字);uld、ulh、ulhu、ulw、usd、usw、ush(地址非对齐的数据存取宏指令);l.d、l.s、s.d、s.s(存取双精度和单精度浮点数的指令,地址必须对齐);ldxcl、lwxcl、sdxcl、swxcl(采用基址寄存器+偏移寄存器的寻址方式存取指令);跳转、分支和子程序调用指令:j(无条件跳转到一个绝对地址,访问256M的代码空间);jal、jalr(直接或间接子程序调用,这种跳转不仅能跳转到指定地址,而且可以顺便把返回地址(当前指令地址+8)放到ra寄存器中);b(基于当前指令地址的无条件相对跳转);bal (基于当前地址的函数调用指令);bc0f、bc0f1、bc0t、bc0t1、bc2f、bc2f1、bc2t、bc2t1(根据协处理器0和2的条件标志进行跳转);bc1f、bc1f1、bc1t、bc1t1(根据浮点条件标志位进行跳转);beq、beq1、beqz、beqz1、bge、bge1、bgeu、bgeu1、bgez、bgez1、bgt、bgt1、bgtu、bgtu1、bgtz、bgtz1、ble、ble1、bleu、bleu1、blez、blez1、blt、blt1、bltu、bltu1、bltz、bltz1、bne、bnel、bnez、bnezl(双操作数和单操作数的比较跳转指令);bgeza1、bgeza11、bltza1、bltza11(如果需要,这些指令是用于有条件函数调用的原始机器指令); 断点及陷阱指令:break(产生一个“断点”类型的异常);sdbbp(产生EJTAG异常的断点指令);syscall(产生一个约定用于系统调用的异常类型);teq、teqi、tge、tgei、tgeiu、tgeu、tlt、tlti、tltiu、tltu、tne、tnei(条件异常指令,对一个或两个操作数进行条件测试);

MIPS 指令系统和汇编语言

第四章MIPS指令系统和汇编语言 1.考研预测:出题特点总结 本章是对统考408内容来说,本章是新增的章节。此外北航961大纲中制定了要考MIPS 指令集,从15年961真题来看MIPS是重中之重。但是今年计组并没有指定具体的教材,但大纲明确要求掌握MIPS指令集,所以还是建议考生将《计算机组成与设计:硬件/软件接口》中文版(原版第三版或第四版)作为本章的参考书籍。 本章大致内容是MIPS的基础知识,难度并不大。考生应该将重点放在MIPS指令集的基础上,考察C语言中的语句转换为对应的MIPS指令,所以需要熟练掌握C语言中一些语句对应的MIPS指令实现。本章出题很大可能就是C语言和MIPS汇编语言之间的转换,也可能涉及到第五章CPU指令流水线等内容。 2.考研知识点系统整理:梳理考点,各个击破 3.1 指令系统概述 机器指令要素 操作码:指明进行的何种操作 源操作数地址:参加操作的操作数的地址,可能有多个。 目的操作数地址:保存操作结果的地址。 下条指令的地址:指明下一条要运行的指令的位置,一般指令是按顺序依次执行的,所以绝大多数指令中并不显式的指明下一条指令的地址,也就是说,指令格式中并不包含这部分信息。只有少数指令需要显示指明下一条指令的地址。

指令执行周期 3.2 指令格式 一台计算机指令格式的选择和确定要涉及多方面的因素,如指令长度、地址码结构以及操

作码结构等,是一个很复杂的问题,它与计算机系统结构、数据表示方法、指令功能设计等都密切相关。 指令的基本格式 一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的基本格式如下: ( 其中A1为第一操作数地址,A2为第二操作数地址,A3为操作结果存放地址。 这条指令的含义:(A1)OP(A2)→A3 式中OP表示双操作数运算指令的运算符号,如“+”或“–”等。 (2)二地址指令

基于FPEG的SOC设计-mips指令系统-(verilog代码)

//------------------------------------------------------- //基于FPEG的SOC设计 // mips.v // Model of subset of MIPS processor described in Ch 1 //------------------------------------------------------- // top level design for testing module top #(parameter WIDTH = 8, REGBITS = 3)(); reg clk; reg reset; wire memread, memwrite; wire [WIDTH-1:0] adr, writedata; wire [WIDTH-1:0] memdata; // instantiate devices to be tested mips #(WIDTH,REGBITS) dut(clk, reset, memdata, memread, memwrite, adr, writedata); // external memory for code and data exmemory #(WIDTH) exmem(clk, memwrite, adr, writedata, memdata); // initialize test initial begin reset <= 1; # 22; reset <= 0; end // generate clock to sequence tests always begin clk <= 1; # 5; clk <= 0; # 5; end always@(negedge clk) begin if(memwrite) if(adr == 5 & writedata == 7) $display("Simulation completely successful"); else $display("Simulation failed"); end endmodule // external memory accessed by MIPS module exmemory #(parameter WIDTH = 8)

MIPS指令集汇总

功能 应用实例 LB 从存储器中读取一个字节的数据到寄存器中 LB R1, 0(R2) LH 从存储器中读取半个字的数据到寄存器中 LH R1, 0(R2) LW 从存储器中读取一个字的数据到寄存器中 LW R1, 0(R2) LD 从存储器中读取双字的数据到寄存器中 LD R1, 0(R2) L.S 从存储器中读取单精度浮点数到寄存器中 L.S R1, 0(R2) L.D 从存储器中读取双精度浮点数到寄存器中 L.D R1, 0(R2) LBU 功能与LB指令相同,但读出的是不带符号的数据LBU R1, 0(R2) LHU 功能与LH指令相同,但读出的是不带符号的数据LHU R1, 0(R2) LWU 功能与LW指令相同,但读出的是不带符号的数据LWU R1, 0(R2) SB 把一个字节的数据从寄存器存储到存储器中 SB R1, 0(R2)

把半个字节的数据从寄存器存储到存储器中 SH R1,0(R2) SW 把一个字的数据从寄存器存储到存储器中 SW R1, 0(R2) SD 把两个字节的数据从寄存器存储到存储器中 SD R1, 0(R2) S.S 把单精度浮点数从寄存器存储到存储器中 S.S R1, 0(R2) S.D 把双精度数据从存储器存储到存储器中 S.D R1, 0(R2) DADD 把两个定点寄存器的内容相加,也就是定点加 DADD R1,R2,R3 DADDI 把一个寄存器的内容加上一个立即数 DADDI R1,R2,#3 DADDU 不带符号的加 DADDU R1,R2,R3 DADDIU 把一个寄存器的内容加上一个无符号的立即数 DADDIU R1,R2,#3 ADD.S 把一个单精度浮点数加上一个双精度浮点数,结果是单精度浮点数ADD.S F0,F1,F2 ADD.D 把一个双精度浮点数加上一个单精度浮点数,结果是双精度浮点数ADD.D F0,F1,F2

04MIPS指令系统(1)_447408859

微机原理 (计算机原理) 第4讲MIPS指令系统(1)

MIPS 体系结构概述 数据处理指令 数据传送指令 分支与跳转指令 MIPS指令格式 第4讲MIPS指令系统(1)

MIPS诞生于1980年代,是最早的RISC处理器之一, 也是目前销量最好的RISC处理器之一,从游戏机到路由器,再到SGI的超级计算机,都可以看到MIPS CPU 的应用 MIPS起源于Stanford大学John Hennessy教授的研 究成果。Hennessy于1984年在硅谷创立了MIPS公司(https://www.doczj.com/doc/f46551928.html,) John L. Hennessy出版了两本著名的教科书: Computer Organization and Design : The Hardware/Software Interface(计算机组成与设计:硬件/软件接口) Computer Architecture : A Quantitative Approach(计算机体系结构:量化方法)

MIPS=Microprocessor without Interlocked Pipeline Stages,无互锁流水级的微处理器MIPS的另一个含义是每秒百万条指令—— Millions of instructions per second

MIPS体系结构的发展 MIPS体系结构经历了以下几代 MIPS I——该指令集用于最初的32位处理器, 至今仍然很流行,R2000、R3000都是MIPS I 的实现 MIPS II——MIPS I的升级,最初为R6000定义, 失败 MIPS III——应用于R4000的64位指令集 MIPS IV——MIPS III的升级,应用于R5000和 R10000

MIPS Instruction Set (MIPS指令集)

MIPS Instructions Note: You can have this handout on both exams. Instruction Formats : Instruction formats: all 32 bits wide (one word): 6 5 5 5 5 6 +--------+--------+-------+-------+------+--------+ R-type format| Op-code| R s | R t | R d | SA |Funct-code | +--------+--------+-------+-------+------+--------+ 6 5 5 16 +--------+--------+-------+------------------------+ I-type format|Op-code | R s | R t | 2’s complement constant| +--------+--------+-------+------------------------+ 6 26 +--------+-----------------------------------------+ J-type format| Op-code| jump_target | +--------+-----------------------------------------+ ^ ^ | | bit 31 bit 0 Instructions and their formats General notes: a. R s , R t , and R d specify general purpose registers b. Square brackets ([]) indicate “the contents of” c. [PC] specifies the address of the instruction in execution d. I specifies part of instruction and its subscripts indicate bit positions of sub-fields e. || indicates concatenation of bit fields f. Superscripts indicate repetition of a binary value g. M{i} is a value (contents) of the word beginning at the memory address i h. m{i} is a value (contents) of the byte at the memory address i i. all integers are in 2’s complement representation if not indicated as unsigned 1. addition with overflow: add instruction +--------+-------+-------+-------+-------+--------+ R-type format | 000000 | R s | R t | R d | 00000 | 100000 | +--------+-------+-------+-------+-------+--------+ Effects of the instruction: R d <-- [R s ] + [R t ]; PC <-- [PC] + 4 (If overflow then exception processing) Assembly format: add R d ,R s ,R t

计算机系统结构实验一MIPS指令系统和MIPS体系结构

计算机系统结构实验报告 班级计算机2班实验日期2016.2.24 实验成绩 姓 名 殷凤学号22920132203917实 验 名 称 MIPS指令系统和MIPS体系结构 实验目的要求 实验目的及要求:了解和熟悉指令级模拟器;熟练掌握MIPSsim模拟器的操作和使用方法;熟悉MIPS指令系统及其特点,加深对MIPS指令操作语义的理解;熟悉MIPS体系结构。 实验器材:实验平台采用指令级和流水线操作级模拟器MIPSsim;计算机一台。 实验内容、步骤及结果1. 阅读MIPSsim模拟器的使用方法,然后了解MIPSsim的指令系统和汇编语言; 2. 对照实验教程启动、配置MIPSsim.exe,参照使用说明,载入程序,多种执行方式查看结果; 3. 补充实验的完成: a.求阶乘 问题: 解决方法:在代码最后加一句指令TEQ r0,r0 思路:将自定义的整数存入一个整数寄存器r1,r2,“1”的值存入寄存器r3作为求阶乘时减一的用处,r2减一,与原值r1相乘结果存入r1,判断r2值是否已经减到0,是就运行结束,否则跳转继续r2减一与r1相乘,最后r1的内容就是最终结果。 结果截图:

b.ALU运算求(X-Y)*2-(X+Y)/8 问题:无 思路:题目要求不可以使用乘除指令,则利用逻辑左移(SLL)一位实现乘2,利用逻辑右移(SRL)3实现除以8。r1 r2中存放自定义的x y,r3中存放x-y的值,r4存放x+y的值,最后结果放在r5中。 结果截图: c.求补码 问题: 解决方法:把高32位和低32位之间base的差值4个字节事先存进寄存器r6 问题:

解决方法:改成LABLE1 问题:如果是正数的话结果总是错误的 解决方法:刚开始忘记判断正负了,如果是正数就直接存回存储器原来 的位置,判断正负通过高32位(存在r2中)和十六进制数 0x00…0080000000(寄存器r9)进行AND,如果结果等于0(与$r0比 较),就为正数,否则就是负数。 思路:r1中放取字指令LW的base值,根据内存中的数据来决定,存 储器中高32位数据取出来放进r2,低32位数据放进r3。如果判断是 正数,则直接再存回去,如果是负数,按位取反再加一得到补码。按位 取反通过r2 r3中的值都分别和-1(存进r5)进行异或,再加1,如果 r3中有进位,那么r2的值也要加1,然后存入存储器原位置,如果r3 中无进位就可以直接存入原位置,是否有进位通过r3与-1异或结果和 -1比较,如果等于-1(11…11),就会有进位,如果不等就没有进位。 结果截图: (8c22000024060004)?(73ddffffdbf9fffc) (002608228c220000)?(002608228c220000) 总 结 1.在使用指令时,一定要事先弄清楚指令的适用范围和参数的本质; 2.有符号数和无符号数要分辨清楚; 3.程序安全退出:TEQ $r0,$r0 4.标号必须全部大写。

MIPS指令集

MIPS 指令 指令功能应用实例 LB从存储器中读取一个字节的数据到寄存器中LB R1, 0(R2) LH从存储器中读取半个字的数据到寄存器中LH R1, 0(R2) LW从存储器中读取一个字的数据到寄存器中LW R1, 0(R2) LD从存储器中读取双字的数据到寄存器中LD R1, 0(R2) L.S从存储器中读取单精度浮点数到寄存器中L.S R1, 0(R2) L.D从存储器中读取双精度浮点数到寄存器中L.D R1, 0(R2) LBU功能与LB指令相同,但读出的是不带符号的数据LBU R1, 0(R2) LHU功能与LH指令相同,但读出的是不带符号的数据LHU R1, 0(R2) LWU功能与LW指令相同,但读出的是不带符号的数据LWU R1, 0(R2) SB把一个字节的数据从寄存器存储到存储器中SB R1, 0(R2) SH把半个字节的数据从寄存器存储到存储器中SH R1,0(R2) SW把一个字的数据从寄存器存储到存储器中SW R1, 0(R2) SD把两个字节的数据从寄存器存储到存储器中SD R1, 0(R2) S.S把单精度浮点数从寄存器存储到存储器中S.S R1, 0(R2) S.D把双精度数据从存储器存储到存储器中S.D R1, 0(R2) DADD把两个定点寄存器的内容相加,也就是定点加DADD R1,R2,R3 DADDI把一个寄存器的内容加上一个立即数DADDI R1,R2,#3 DADDU不带符号的加DADDU R1,R2,R3 DADDIU把一个寄存器的内容加上一个无符号的立即数DADDIU R1,R2,#3 ADD.S把一个单精度浮点数加上一个双精度浮点数,结果是 ADD.S F0,F1,F2单精度浮点数 ADD.D F0,F1,F2 ADD.D把一个双精度浮点数加上一个单精度浮点数,结果是 双精度浮点数 ADD.PS两个单精度浮点数相加,结果是单精度浮点数ADD.PS F0,F1,F2 DSUB两个寄存器的内容相减,也就是定点数的减DSUB R1,R2,R3 DSUBU不带符号的减DSUBU R1,R2,R3 SUB.S F1,F2,F3 SUB.S一个双精度浮点数减去一个单精度浮点数,结果为单 精度 SUB.D F1,F2,F3 SUB.D一个双精度浮点数减去一个单精度浮点数,结果为双 精度浮点数

MIPS指令详解

计算机组成原理第五章指令系统5.6 MIPS指令详解

1 R 型指令000000R s R t shamt R d 6bits funct 5bits 5bits 5bits 5bits 6bits R 型指令 操作数和保存结果均通过寄存器进行; ◆op :操作码,所有R 型指令中都全为0;◆rs :寄存器编号,对应第1个源操作数;◆rt :寄存器编号,对应第2个源操作数;◆rd :寄存器编号,据此保存结果;◆shamt :常数,在移位指令中使用;◆funct :功能码,指定指令的具体功能;

1R型指令

3寄存器R 型指令 ■R 型指令存在3种不同类型 指令功能:$rd ← $rs op $rt 指令[31:26][25:21] [20:16][15:11][10:6][5:0] 指令功能 add 000000rs rt rd 00000100000寄存器加sub 000000 rs rt rd 00000 100010 寄存器减 and 000000rs rt rd 00000100100寄存器与or 000000rs rt rd 00000100101寄存器或xor 000000 rs rt rd 00000 100110 寄存器异或 1 R 型指令

1R型指令 2寄存器R型指令 指令[31:26][25:21][20:16][15:11][10:6][5:0]指令功能 sll00000000000rt rd sa000000逻辑左移 srl00000000000rt rd sa000010逻辑右移 sra00000000000rt rd sa000011算术右移 指令功能:$rd ← $rt shift sa

MIPS指令概述

计算机组成原理第五章指令系统5.5 MIPS指令概述

1MIPS指令概述 ■MIPS (Microprocessor without Intellocked Pipleline Stages)是80年代初期由斯坦福大学Hennessy教授领导的研究小组研制成功;Million Instructions Per Second ■属于精简指令集计算机RISC(Reduced Instruction Set Computer); 复杂指令集计算机CISC(Complex Instruction Set Computer ); ■MIPS指令集有MIPS I,MIPS II,MIPS III,MIPS IV,MIPS V,MIPS32,和MIPS64多个版本; ■早期主要用于嵌入式系统,如Windows CE的设备,路由器,家用网关和视频游戏机,现在已经在PC 机、服务器中得到广泛应用

1MIPS指令概述 ■MIPS指令集有以下特点: ?简单的Load/Store结构 ?易于流水线CPU设计 ?易于编译器开发 ?MIPS指令的寻址方式非常简单,每条指令的操作也非常简单

2 MIPS 指令格式概述000000R s R t shamt R d 6bits funct 5bits 5bits 5bits 5bits 6bits R 型指令 OP R s R t 6bits 立即数5bits 5bits 16bits I 型指令 OP 6bits 立即数 26bits J 型指令 ■ 只有三种指令格式 ?Rs,Rt 分别为第一、二源操作数;Rd 为目标操作数; ?双目、Load/Store: Rs 和立即数是源操作数,Rt 为目标操作数;?条件转移: Rs,Rt 均为源操作数; ?26位立即数作为跳转目标地址的部分地址

Mips指令实现冒泡排序(从大到小)

.data array: .space 40 #数组空间 bored: .asciiz "Please input 10 numbers~~\n" i_m: .asciiz "Please input integers to be sorted: " o_m: .asciiz "The sorted integers are: " space_t: .asciiz " " # C/C++ # for(i = 1; i < 9; i++) # for(j = i+1; j < 10; j++) # if(a[i] < a[j]) swap(a[i],a[j]); .text main: la $a0,bored #提示输入待排序整数数目 li $v0,4 syscall la $t6,array move $t7,$zero #初始化t7,用于循环计数li $t8,10 #t8用于存放待排序整数数目 input: la $a0,i_m #提示输入待排序整数 li $v0,4 syscall li $v0,5 syscall move $t0,$t7 mul $t0,$t0,4 addu $t1,$t0,$t6 sw $v0,0($t1) addi $t7,$t7,1 blt $t7,$t8,input # if 输入数目小于10 继续 move $t2,$zero # $t2 = i = 0; move $t4,$t2 # $t4 = j = i = 0; sub $t5,$t8,1 # $5 = 9 sort: addi $t4,$t4,1 # j = j + 1;

ARM,MIPS,X86三种典型指令集的简介及其特点

ARM、MIPS、X86三种典型指令集的特点 20122261 梅亮亮 1.ARM指令集 1.1 ARM指令集的特点: ●体积小,低功耗,低成本,高性能; ●支持 Thumb ( 16 位) /ARM ( 32 位)双指令集,能很好的兼容 8 位 /16 位器件; ●大量使用寄存器,指令执行速度更快; ●大多数数据操作都在寄存器中完成; ●寻址方式灵活简单,执行效率高; ●指令长度固定; ●流水线处理方式 ●Load_store结构:在RISC中,所有的计算都要求在寄存器中完成。而寄存器和内存的 通信则由单独的指令来完成。而在CSIC中,CPU是可以直接对内存进行操作的。 1.2 Thumb指令及应用 Thumb指令集是ARM指令集的一个子集,所有的Thumb指令都有对应的ARM指令。它舍弃了ARM指令集的一些特性 如大多数的Thumb指令是无条件执行的,而几乎所有的ARM指令都是有条件执行的;大多数的Thumb数据处理指令的目的寄存器与其中一个源寄存器相同。 Thumb指令集在保留32代码优势的同时,大大的节省了系统的存储空间。Thumb指令集中操作数仍然是32位,指令地址也为32位,指令编码16位。 由于Thumb指令的长度为16位,即只用ARM指令一半的位数来实现同样的功能,所以,要实现特定的程序功能,所需的Thumb指令的条数较ARM指令多。 1.2.1 Thumb指令优势与局限性 优势: – Thumb代码所需的存储空间约为ARM代码的60%~70%; – Thumb代码使用的指令数比ARM代码多约30%~40%; –若使用32位的存储器,ARM代码比Thumb代码快约40%; –若使用16位的存储器,Thumb代码比ARM代码快约40%~50%; –与ARM代码相比较,使用Thumb代码,存储器的功耗会降低约30%。 局限性: 条件跳转限制在256byte 偏移范围内,无条件跳转限制为4K偏移范围内,而ARM为32 Mbytes偏移。它不支持乘法和累加指令;没有协处理器指令;没有信号量指令;没有访问CPSR指令。 1.3 对ARM指令的一些总结 ARM指令集是32位的,程序的启动都是从ARM指令集开始,包括所有异常中断都是自动转化为ARM状态,并且所有的指令都可以是有条件执行的。

mips指令集设计

mips指令集设计 要求:指令集功能尽可能完备,指令条数尽可能少。 成员: 思路:仿照mips指令集的编码方法,每条指令采用32位编码方式。由于要使指令条数尽可能少,还要具有可扩充性,保留一定的操作码空间,故使用5位给操作码编码。使用64个64位通用寄存器,故使用6位进行地址码编码。所以三种不同的指令格式为: R型指令: 0 4 5 10 11 16 17 22 23 31 OPCODE RS1 RS2 RD FUNC I型指令: 0 4 5 10 11 16 17 31 OPCODE RS1 RS2 IMM/UIMM J型指令: 0 4 5 31 OPCODE OFFSET R型指令的操作码均为00000,包含指令有:加法指令、减法指令、无符号加法指令、无符号减法指令、逻辑指令(与、或、或非、抑或)、移动指令。 I型指令的操作码为00001—01000,包含指令有:立即数加指令、无符号立即数加指令、逻辑左移指令、逻辑右移指令、Store指令、Load指令、等于零时分支指令、不相等时分支指令。 J型指令的操作码为01001—01100,包含指令有:逻辑指令

(非)、跳转指令、跳转并链接指令、寄存器跳转指令。 具体指令设计如下: R型指令: 加法指令: 0 4 5 10 11 16 17 22 23 31 00000 000000 000001 000010 000000000 减法指令: 0 4 5 10 11 16 17 22 23 31 00000 000011 000100 000101 000000001 无符号加法指令: 0 4 5 10 11 16 17 22 23 31 00000 000110 000111 001000 000000010 无符号减法指令: 0 4 5 10 11 16 17 22 23 31 00000 001001 001010 001011 000000011 与: 0 4 5 10 11 16 17 22 23 31 00000 001100 001101 001110 000000100 或: 0 4 5 10 11 16 17 22 23 31 00000 001111 010000 010001 000000101 或非: 0 4 5 10 11 16 17 22 23 31 OPCODE 010010 010011 010100 000000110 抑或: 0 4 5 10 11 16 17 22 23 31 OPCODE 010101 010110 010111 000000111 移动指令: 0 4 5 10 11 16 17 22 23 31

全指令集MIPS设计文档

北京航空航天大学计算机学院 计算机组成原理课程设计 MIPS处理器设计 姓名、学号:xxxxxxxxxx xxxxxxxxxx Xxxxxxxxxx xxxxxxxxxx Xxxxxxxxxx xxxxxxxxxx 时间:2009年月日

目录 1. MIPS处理器设计简介 (1) 2. 基本组成部件 (1) 2.1 程序计数器 (1) 2.1.1 功能设计 (1) 2.1.2 Verilog HDL核心实现代码 (1) 2.1.3 仿真波形验证 (1) 2.1.4 硬件下载测试....................................................................... 错误!未定义书签。 2.2指令寄存器........................................................................................ 错误!未定义书签。 3. 指令系统 (1) 3.1 指令系统设计 (1) 3.2 汇编程序设计 (2) 4. 数据通路 (2) 4.1 取指指令数据通路 (2) 4.2 (2) 5. 控制单元 (2) 5.1 控制器状态机 (2) 5.3 状态机信号使能表 (2) 5.3 接口定义 (3) 5.4 控制单元输出信号布尔表达式 (3) 6. 整机仿真测试 (3) 6.1 XX汇编程序的仿真测试 (3) 6.2 YY汇编程序的仿真测试 ................................................................. 错误!未定义书签。 6.3 。。。。。。............................................................................................. 错误!未定义书签。 7. 整机硬件下载测试 (4) 7.1 硬件下载测试方案 (4) 7.2 引脚锁定 (4) 7.3 测试步骤 (4)

MIPS指令特点(转)

MIPS指令特点(转) MIPS指令特点: 1、所有指令都是32位编码; 2、有些指令有26位供目标地址编码;有些则只有16位。因此要想加载任何一个32位值,就得用两个加载指令。16位的目标地址意味着,指令的跳转或子函数的位置必须在64K以内(上下32K); 3、所有的动作原理上要求必须在1个时钟周期内完成,一个动作一个阶段; 4、有32个通用寄存器,每个寄存器32位(对32位机)或64位(对64位机); 5、本身没有任何帮助运算判断的标志寄存器,要实现相应的功能时,是通过测试两个寄存器是否相等来完成的; 6、所有的运算都是基于32位的,没有对字节和对半字的运算(MIPS里,字定义为32位,半字定义为16位);

7、没有单独的栈指令,所有对栈的操作都是统一的内存访问方式。因为push和pop指令实际上是一个复合操作,包含对内存的写入和对栈指针的移动; 8、由于MIPS固定指令长度,所以造成其编译后的二进制文件和内存占用空间比x86的要大,(x86平均指令长度只有3个字节多一点,而MIPS是4个字节); 9、寻址方式:只有一种内存寻址方式。就是基地址加一个16位的地址偏移; 10、内存中的数据访问必须严格对齐(至少4字节对齐) 11、跳转指令只有26位目标地址,再加上2位的对齐位,可寻址28位的空间,即256M。意思即是说,在一个C程序内,goto语句只能跳转到它之前的128M和之后的128M 这个地址空间之内 12、条件分支指令只有16位跳转地址,加上2位的对齐位,共18位寻址空间,即256K。意思即是说,在一个C程序内,if语句只能跳转到它之前的128K和之后的128K这个地址空间之内;

相关主题
相关文档 最新文档