MIPS CPU的beq指令执行详解:无锁流水线设计与寻址模式

需积分: 45 3 下载量 6 浏览量 更新于2024-08-21 收藏 1.8MB PPT 举报
本文档主要介绍了MIPS CPU中beq指令的执行过程以及MIPS处理器的架构和指令集特性。MIPS(Microprocessor without Interlocked Piped Stages)是由斯坦福大学的Hennessy教授领导的研究小组在80年代初期开发的一种无内部互锁流水级的微处理器,其设计目的是通过软件手段尽可能地解决流水线中的数据相关问题。 beq指令(Branch on Equal)是MIPS指令集中的一种条件分支指令。执行过程分为四个步骤: 1. 取指阶段:首先,程序计数器(PC)会自动加1,然后读取下一个指令的地址。 2. 寄存器读取:从$t1$和$t2$寄存器中读取操作数。这两个通常是源操作数,用于比较。 3. 算术逻辑单元(ALU)操作:ALU执行$t1$与$t2$的减法操作,并同时计算分支条件。如果结果为零(即$t1 == t2$),ALU会继续进行下一步操作。 4. 枝判断与跳转:根据比较结果,ALU会将PC与偏移地址相加(该偏移地址是被左移两位并进行了符号扩展的16位值)。如果条件满足,CPU将跳转到新的地址,否则将继续执行后续指令。 MIPS指令集包括多种类型,如R-type(算术指令)、I-type(数据传输和算术指令,如addi,包含基址寻址)和J-type(条件和无条件分支指令,如beq)。每种类型的指令都有特定的格式,如R-type指令有6位操作码、5位寄存器索引等。寻址模式多样,包括立即寻址、寄存器寻址、基址寻址、PC相对寻址(用于J-type指令)以及伪直接寻址(字、半字和字对齐地址处理)。 MIPS处理器有两种实现方式:单周期和多周期。单周期是指每个指令执行仅占用一个机器周期,而多周期则允许更复杂的操作在多个周期内完成。这提供了更高的性能,但也可能增加复杂性和延迟管理的挑战。 在整个处理器设计中,理解指令格式、寻址模式和执行流程对于有效利用MIPS微处理器至关重要,尤其是在优化程序性能和处理数据相关性问题时。这对于任何研究或使用MIPS架构的开发者来说都是核心知识。
2021-08-30 上传
原作者:宛城布衣。 本文件已移除PDF签名,如内容有误,欢迎大家指正。 目录 前言 i 目录 I ARM7TDMI(-S)指令集及汇编1 ARM 处理器寻址方式2 寄存器寻址2 立即寻址2 寄存器偏移寻址2 寄存器间接寻址3 基址寻址3 多寄存器寻址4 堆栈寻址4 块拷贝寻址5 相对寻址5 指令集介绍7 ARM 指令集7 指令格式7 第 2 个操作数7 #immed_8r 7 Rm8 Rm,shift8 条件码9 ARM 存储器访问指令 11 LDR 和 STR 11 LDM 和 STM14 SWP 17 ARM 数据处理指令19 数据传送指令20 MOV 20 MVN 20 算术逻辑运算指令20 ADD 20 SUB21 RSB 21 ADC 21 SBC 21 RSC 22 AND 22 ORR22 EOR22 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII BIC 23 第 I 页常用 ARM 指令集及汇编 Ver:1010 比较指令23 CMP 23 CMN23 TST24 TEQ24 乘法指令25 MUL25 MLA25 UMULL25 UMLAL26 SMULL 26 SMLAL 26 ARM 跳转指令27 B27 BL27 BX 27 ARM 协处理器指令28 CDP28 LDC29 STC 29 MCR30 MRC30 ARM 杂项指令31 SWI 31 MRS 32 MSR 33 ARM 伪指令34 ADR 35 ADRL35 LDR36 NOP37 Thumb 指令集39 Thumb 指令集与 ARM 指令集的区别 39 Thumb 存储器访问指令 40 LDR 和 STR 41 PUSH 和 POP 43 LDMIA 和 STMIA 43 Thumb 数据处理指令 45 数据传送指令46 MOV 46 MVN 46 NEG47 算术逻辑运算指令47 ADD 47 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 第 II 页常用 ARM 指令集及汇编 Ver:1010 SUB48 ADC 49 SBC 49 MUL50 AND 50 ORR50 EOR51 BIC 51 ASR51 LSL52 LSR 52 ROR53 比较指令53 CMP 53 CMN54 TST54 Thumb 跳转指令 55 B 55 BL55 BX 55 Thumb 杂项指令 56 SWI 56 Thumb 伪指令 57 ADR 57 LDR57 NOP58 伪指令59 符号定义伪指令59 GBLA、GBLL、GBLS 59 LCLA、LCLL、LCLS60 SETA、SETL、SETS 61 RLIST61 CN 62 CP62 DN、SN62 FN63 数据定义伪指令63 LTORG64 MAP64 FIELD 65 SPACE66 DCB 66 DCD 和 DCDU67 DCDO 67 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 第 III 页常用 ARM 指令集及汇编 Ver:1010 DCFD 和 DCFDU68 DCFS 和 DCFSU68 DCI69 DCQ 和 DCQU69 DCW 和 DCWU 70 报告伪指令70 ASSERT 70 INFO 71 OPT 71 TTL 和 SUBT 72 汇编控制伪指令73 IF、ELSE 和 ENDIF73 MACRO 和 MEND 74 WHIL 和 WEND 75 杂项伪指令76 ALIGN 77 AREA78 CODE16 和 CODE32 79 END 80 ENTRY80 EQU 81 EXPORT 和 GLOBAL 81 IMPORT 和 EXTERN 82 GET 和 INCLUDE 83 INCBIN83 KEEP83 NOFP 84 REQUIRE 84 PEQUIRE8 和 PRESERVE8 84 RN 84 ROUT85 ARM 伪指令86 ADR 86 ADRL86 LDR86