文档库 最新最全的文档下载
当前位置:文档库 › ARM,PPC,MIPS的选型比较

ARM,PPC,MIPS的选型比较

ARM,PPC,MIPS的选型比较
ARM,PPC,MIPS的选型比较

常用嵌入式处理器的比较与选型

嵌入式处理器的种类:

?嵌入式微控制器

?嵌入式微处理器

?嵌入式DSP处理器

?嵌入式片上系统(SOC)

?FPGA处理器

嵌入式微处理器的主要类别:

Power PC, 68000, MIPS, ARM

ARM, MIPS, Power PC的比较(摘自某论坛):

“ARM面向的低端消费类市场,拼的是功耗;PowerPC面向的是中高端市场,比的是性能,好像还没看到谁的手机是PowerPC 的,也没有看到谁家企业级以上的交换机是用ARM做的。如果说ARM跟MIPS有得比拼倒还现实些。”

“ARM跟MIPS有相同的定位,MIPS也有很多用于消费电子的处理器。”

“MIPS的主要立足点是性能,而ARM好象更多是偏向于低功耗。”

“很多SOC的核都是MIPS的,比如有无线AP的SOC就是用MIPS的。”

“ARM 和PowerPC 在功能和层次上有较大差别,面向的领域不同,但是Power作为一种体系结构也开始向嵌入式领域扩散了,IBM,Freescale等公司为首成立的PowerPC联盟就开始做这方面的工作,但是我看PowerPC 的结构在尤其在功耗方面的束缚可能导致其在嵌入式领域没有如ARM那样大的伸缩性。MIPS则在很多方面和ARM正面竞争,在性能方面互有优劣。单纯从处理器体系结构的角度来讲,他们只有设计理念的差别,没有好坏的区别。”

“PowerPC在是嵌入式领域的应用也是在中高端的吧,不在消费领域,比如企业级以上的交换机,大机架上铲平,对功耗应该是考虑次要的,这类产品都是由单独的AC/DC的电源,而且机箱中一般都有风扇。所以功耗应该不是问题。而MIPS的嵌入产品,既有面向高端的,比如Cavium的MIPS多核处理器,携带2-4个1Giga的以太控制器,也有消费类的,如基于MIPS4K 核的SOC。我知道的ARM都是面向消费电子的,不知道是否也有高端的。”

ARM在消费品领域的优势非常明显,如此流行的原因我认为有三个方面:

1.价格便宜

2.配套IP完备

3.集成使用方便

至于性能和低功耗方面,ARM要弱于PowerPC。Power系列的芯片主要用于交换机、网络处理器、及sony的游戏机等应用上,这类的应用场合对处理器的性能要求非常强烈,ARM难以胜任ARM和MIPS在消费领域存在着竞争,MIPS阵营的产品在功耗和面积上具有优势,但MIPS提供的开发工具不如ARM便捷。

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)二地址指令

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

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 指令 指令功能应用实例 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

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)

相关文档