MIPS CPU 体系结构概述
CPU架构讲解 X86、ARM、RISC、MIPS
CPU架构讲解X86、ARM、RISC、MIPS一、当前CPU的主流架构:1.X86架构采用CISC指令集(复杂指令集计算机),程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。
2.ARM架构是一个32位的精简指令集(RISC)架构。
3.RISC-V架构是基于精简指令集计算(RISC)原理建立的开放指令集架构。
4.MIPS架构是一种采取精简指令集(RISC)的处理器架构,可支持高级语言的优化执行。
CPU架构是CPU厂商给属于同一系列的CPU产品定的一个规范,是区分不同类型CPU的重要标示。
二、目前市面上的CPU分类主要分有两大阵营:1.intel、AMD为首的复杂指令集CPU;2.IBM、ARM为首的精简指令集CPU。
两个不同品牌的CPU,其产品的架构也不相同,例如,Intel、AMD的CPU是X86架构的,而IBM的CPU是PowerPC架构,ARM是ARM架构。
三、四大主流CPU架构详解(X86、ARM、RISC、MIPS)1.X86架构X86是微处理器执行的计算机语言指令集,指一个Intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合。
1978年6月8日,Intel 发布了新款16位微处理器8086,也同时开创了一个新时代:X86架构诞生了。
X86指令集是Intel为其第一块16位CPU(i8086)专门开发的,IBM 1981年推出的世界第一台PC机中的CPU–i8088(i8086简化版)使用的也是X86指令。
采用CISC(Complex Instruction Set Computer,复杂指令集计算机)架构。
与采用RISC不同的是,在CISC处理器中,程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。
顺序执行的优点是控制简单,但计算机各部分的利用率不高,执行速度慢。
随着CPU技术的不断发展,Intel陆续研制出更新型的i80386、i80486直到今天的Pentium 4系列,但为了保证电脑能继续运行以往开发的各类应用程序以保护和继承丰富的软件资源,所以Intel所生产的所有CPU仍然继续使用X86指令集。
mips处理器构架[精彩]
mips处理器构架[精彩]mips处理器构架MIPS体系结构首先是一种RISC架构1 MIPS32架构中有32个通用寄存器,其中$0(无论你怎么设置,这个寄存器中保存的数据都是0)和$31(保存函数调用jal的返回地址)有着特殊的用途,其它的寄存器可作为通用寄存器用于任何一条指令中。
虽然硬件没有强制性的指定寄存器使用规则,在实际使用中,这些寄存器的用法都遵循一系列约定。
这些约定与硬件确实无关,但如果你想使用别人的代码,编译器和操作系统,你最好是遵循这些约定。
寄存器编号助记符用法0 zero 永远返回值为01 at 用做汇编器的暂时变量2-3 v0, v1 子函数调用返回结果4-7 a0-a3 子函数调用的参数8-15 t0-t724-25 t8-t9 暂时变量,子函数使用时不需要保存与恢复16-25 s0-s7 子函数寄存器变量。
子函数必须保存和恢复使用过的变量在函数返回之前,从而调用函数知道这些寄存器的值没有变化。
26,27 k0,k1 通常被中断或异常处理程序使用作为保存一些系统参数28 gp 全局指针。
一些运行系统维护这个指针来更方便的存取“static“和”extern" 变量。
29 sp 堆栈指针30 s8/fp 第9个寄存器变量。
子函数可以用来做桢指针31 ra 子函数的返回地2 MIPS32中如果有FPA(浮点协处理器),将会有32个浮点寄存器,按汇编语言的约定为$f0~$f31,MIPS32中只能实用偶数号的浮点寄存器,奇数号的用途是:在做双精度的浮点运算时,存放该奇数号之前的偶数号浮点寄存器的剩余无法放下的32位。
比如在做双精度的浮点运算时,$1存放$0的剩余的部分,所以在MIPS32中可以通过加载偶数号的浮点寄存器而把64位的双精度数据加载到两个浮点寄存器中,每个寄存器存放32位。
比如:l.d $02, 24(t1)被扩充为两个连续的寄存器加载:lwc1 $f0, 24(t1)lwc1 $f1, 28(t1)3 MIPS架构中没有X86中的PC(程序计数)寄存器,它的程序计数器不是一个寄存器。
7_1 MIPS CPU概述(CP0和MIPS CPU中断机制)
7.1 MIPS CPU概述27.1.4 MIPS CPU中断机制●在MIPS体系结构中,最多支持4个协处理器(Co-Processor)。
其中,协处理器CP0是体系结构中必须实现的。
MMU、异常处理、乘除法等功能,都依赖于协处理器CP0来实现。
●MIPS的CP0包含32个寄存器。
本课程仅讨论常用的一些寄存器,如表7.1.2所示。
7.1.3 CP0表7.1.2CP0常用寄存器寄存器寄存器功能Register 0Index,作为MMU的索引用。
Register 10EntryHi,这个寄存器同EntryLo0/1一样,用于MMU中。
Register 11Compare,配合Count使用。
当Compare和Count的值相等的时候,会☐Status●这个寄存器标识了处理器的状态。
其中,中断控制的8个IM位和设定处理器大小端的RE位。
8个IM位,分别可以控制8个硬件中断源。
RE位这个Bit可以让CPU在大端(Big Endian)和小端(Little Endian)之间切换。
☐Cause●在处理器异常发生时,这个寄存器标识出了异常的原因,如图7.1.2所示。
其中,最重要的是从Bit2到Bit6,5个Bit的Excetion Code位。
它们标识出了引起异常的原因。
具体数值代表的异常类型。
☐EPC●这个寄存器的作用很简单,就是保存异常发生时的指令地址。
从这个地方可以找到异常发生的指令,再结合BadVAddr, sp, ra等寄存器,就可以推导出异常时的程序调用关系,从而定位问题的根因。
☐WatchLo/WatchHi●这一对寄存器可以用来设定“内存硬件断点”,也就是对指定点的内存进行监测。
当访问的内存地址和这两个寄存器中地址一致时,会发生一个异常。
●mfc0 rt, rd将CP0中的rd寄存器内容传输到rt通用寄存器;●mtc0 rt, rd将rt通用寄存器中内容传输到CP0中寄存器rd;●mfhi/mflo rt将CP0的hi/lo寄存器内容传输到rt通用寄存器中;●mthi/mtlo rt 将rt通用寄存器内容传输到CP0的hi/lo寄存器中;CP0主要操作●MIPS体系结构是一个无互锁,高度流水的五级pipeline架构,这就意味着,前一条指令如果尚未执行完,后一条指令有可能已经进入了取指令/译码阶段。
MIPS体系结构介绍
0xffffffff 0xc000 0000 0xa000 0000 0x8000 0000 Unmapped uncached(kseg1) Unmapped cached(kseg0) 32-bit user space(kuseg) 2GB 0x0000 0000 mapped(kseg2)
MIPS指令集
MIPS C代码和可移植性
常见问题
– – – – – – – – – – – 需要显式的cache管理 CPU速度变化引起的时序问题 数据对齐和数据在内存的分布 尾端(字节次序) 指针的符号: kseg0/kseg1地址>2G Signed/unsigned char Int的大小 依赖于栈的程序:尽量使用stdargs/alloca等函数 参数传递和自动转换 库函数的不确定语义 头文件不兼容
stanford_university_mips_组织架构_解释说明
stanford university mips 组织架构解释说明1. 引言1.1 概述引言部分将介绍本文的主题——Stanford University MIPS组织架构。
MIPS (Microprocessor without Interlocked Pipeline Stages)指令集架构是一种经典的RISC(Reduced Instruction Set Computer)体系结构,由斯坦福大学开发和推广。
本文将详细解释MIPS组织架构的概念和原理,并深入讨论其指令集、寄存器、流水线技术以及优化策略。
1.2 文章结构为了更好地说明MIPS组织架构,本文将按照以下结构展开讨论:- 第2部分将简要介绍MIPS组织架构的概述,包括计算机体系结构的发展历程以及MIPS架构的特点。
- 第3部分将着重介绍MIPS指令集和寄存器,包括概述、寄存器结构和作用,以及指令格式和编码规则。
- 第4部分将深入探讨MIPS流水线技术及其优化策略,包括流水线基本概念和原理、MIPS流水线结构以及各个阶段功能介绍,以及相关问题和优化策略的讨论。
- 最后,第5部分将给出本文的结论和总结。
1.3 目的本文的目的是通过对Stanford University MIPS组织架构的详细解释,让读者了解MIPS体系结构及其特点,并探究其中涉及的指令集、寄存器、流水线技术以及优化策略。
通过文章的阅读,读者将能够更好地理解MIPS组织架构并在计算机体系结构领域有所提升。
我们希望这篇长文能够为读者提供一个全面而清晰的指南,进一步推动计算机科学领域的发展与创新。
2. MIPS组织架构:2.1 概述:MIPS(Microprocessor without Interlocked Pipeline Stages)是一种经典的RISC(Reduced Instruction Set Computer)微处理器架构。
它于1981年由斯坦福大学开发,旨在设计简单、高效的计算机体系结构。
MIPS体系结构介绍
MEM
--is the stage where the instruction can read/write memory variables in the data cache (D-cache). On average about three out of four instructions do nothing in this stage, but allocating the stage for each instruction ensures that you never get two instructions wanting the data cache at the same time.
Agenda
The MIPS Five-stage Pipeline MIPS Architecture MIPS Processor Control Exceptions Interrupts Starting up
MIPS Architecture
General-Purpose Registers Basic Address Space
kseg0: These addresses are translated into physical
addresses by merely stripping off the top bit and mapping them contiguously into the low 512MB of physical memory. Addresses in this region are almost always accessed through the cache, so they may not be used until the caches are properly initialized. They will be used for most programs and data in systems not using the MMU and will be used for the OS kernel for systems that do use the MMU.
MIPS架构
特定应用扩展(Application Specific Extension,ASE),可提升特定类型应用的性能,其包括: 业界标准MIPS32®和 MIPS64®架构的MIPS® DSP ASE信号处理扩展,能够提升客户SoC的媒体性能。 SmartMIPS® ASE,可在智能卡及其它安全数据应用中实现前所未有的安全性。 MIPS16e™代码压缩 ASE,能减少多达40%的存储器使用量。 MIPS-3D® ASE,可在数字娱乐和多媒体产品中实现高性能三维图像处理的一种具成本效益的解决方案。
发展历史
发展历史
1981年,斯坦福大学教授约翰·轩尼诗领导他的团队,实作出第一个MIPS架构的处理器。他们原始的想法 是通过指令管线化来增加CPU运算的速度。
1984年,约翰·轩尼诗教授离开斯坦福大学,创立MIPS科技公司。于1985年,设计出R2000芯片,1988年, 将其改进为R3000芯片。
MIPS64架构基于一种固定长度的定期编码指令集,并采用导入/存储(load/store)数据模型。经改进,这 种架构可支持高级语言的优化执行。其算术和逻辑运算采用三个操作数的形式,允许编译器优化复杂的表达式。 此外,它还带有32个通用寄存器,让编译器能够通过保持对寄存器内数据的频繁存取进一步优化代码的生成性能。
MIPS32架构基于一种固定长度的定期编码指令集,并采用导入/存储(load/store)数据模型。经改进,这 种架构可支持高级语言的优化执行。其算术和逻辑运算采用三个操作数的形式,允许编译器优化复杂的表达式。 此外,它还带有32个通用寄存器,让编译器能够通过保持对寄存器内数据的频繁存取进一步优化代码的生成性能。
MIPS芯片架构说明
MIPS32™ Architecture For Programmers Volume I: Introduction to the MIPS32™ArchitectureDocument Number: MD00082Revision 2.00June 8, 2003MIPS Technologies, Inc.1225 Charleston RoadMountain View, CA 94043-1353Copyright © 2001-2003 MIPS Technologies Inc. All rights reserved.Copyright ©2001-2003 MIPS Technologies, Inc. All rights reserved.Unpublished rights (if any) reserved under the copyright laws of the United States of America and other countries.This document contains information that is proprietary to MIPS Technologies, Inc. ("MIPS Technologies"). Any copying,reproducing,modifying or use of this information(in whole or in part)that is not expressly permitted in writing by MIPS Technologies or an authorized third party is strictly prohibited. At a minimum, this information is protected under unfair competition and copyright laws. Violations thereof may result in criminal penalties and fines.Any document provided in source format(i.e.,in a modifiable form such as in FrameMaker or Microsoft Word format) is subject to use and distribution restrictions that are independent of and supplemental to any and all confidentiality restrictions. UNDER NO CIRCUMSTANCES MAY A DOCUMENT PROVIDED IN SOURCE FORMAT BE DISTRIBUTED TO A THIRD PARTY IN SOURCE FORMAT WITHOUT THE EXPRESS WRITTEN PERMISSION OF MIPS TECHNOLOGIES, INC.MIPS Technologies reserves the right to change the information contained in this document to improve function,design or otherwise.MIPS Technologies does not assume any liability arising out of the application or use of this information, or of any error or omission in such information. Any warranties, whether express, statutory, implied or otherwise, including but not limited to the implied warranties of merchantability orfitness for a particular purpose,are excluded. Except as expressly provided in any written license agreement from MIPS Technologies or an authorized third party,the furnishing of this document does not give recipient any license to any intellectual property rights,including any patent rights, that cover the information in this document.The information contained in this document shall not be exported or transferred for the purpose of reexporting in violation of any U.S. or non-U.S. regulation, treaty, Executive Order, law, statute, amendment or supplement thereto. The information contained in this document constitutes one or more of the following: commercial computer software, commercial computer software documentation or other commercial items.If the user of this information,or any related documentation of any kind,including related technical data or manuals,is an agency,department,or other entity of the United States government ("Government"), the use, duplication, reproduction, release, modification, disclosure, or transfer of this information, or any related documentation of any kind, is restricted in accordance with Federal Acquisition Regulation12.212for civilian agencies and Defense Federal Acquisition Regulation Supplement227.7202 for military agencies.The use of this information by the Government is further restricted in accordance with the terms of the license agreement(s) and/or applicable contract terms and conditions covering this information from MIPS Technologies or an authorized third party.MIPS,R3000,R4000,R5000and R10000are among the registered trademarks of MIPS Technologies,Inc.in the United States and other countries,and MIPS16,MIPS16e,MIPS32,MIPS64,MIPS-3D,MIPS-based,MIPS I,MIPS II,MIPS III,MIPS IV,MIPS V,MIPSsim,SmartMIPS,MIPS Technologies logo,4K,4Kc,4Km,4Kp,4KE,4KEc,4KEm,4KEp, 4KS, 4KSc, 4KSd, M4K, 5K, 5Kc, 5Kf, 20Kc, 25Kf, ASMACRO, ATLAS, At the Core of the User Experience., BusBridge, CoreFPGA, CoreLV, EC, JALGO, MALTA, MDMX, MGB, PDtrace, Pipeline, Pro, Pro Series, SEAD, SEAD-2, SOC-it and YAMON are among the trademarks of MIPS Technologies, Inc.All other trademarks referred to herein are the property of their respective owners.Template: B1.08, Built with tags: 2B ARCH MIPS32MIPS32™ Architecture For Programmers Volume I, Revision 2.00 Copyright © 2001-2003 MIPS Technologies Inc. All rights reserved.Table of ContentsChapter 1 About This Book (1)1.1 Typographical Conventions (1)1.1.1 Italic Text (1)1.1.2 Bold Text (1)1.1.3 Courier Text (1)1.2 UNPREDICTABLE and UNDEFINED (2)1.2.1 UNPREDICTABLE (2)1.2.2 UNDEFINED (2)1.3 Special Symbols in Pseudocode Notation (2)1.4 For More Information (4)Chapter 2 The MIPS Architecture: An Introduction (7)2.1 MIPS32 and MIPS64 Overview (7)2.1.1 Historical Perspective (7)2.1.2 Architectural Evolution (7)2.1.3 Architectural Changes Relative to the MIPS I through MIPS V Architectures (9)2.2 Compliance and Subsetting (9)2.3 Components of the MIPS Architecture (10)2.3.1 MIPS Instruction Set Architecture (ISA) (10)2.3.2 MIPS Privileged Resource Architecture (PRA) (10)2.3.3 MIPS Application Specific Extensions (ASEs) (10)2.3.4 MIPS User Defined Instructions (UDIs) (11)2.4 Architecture Versus Implementation (11)2.5 Relationship between the MIPS32 and MIPS64 Architectures (11)2.6 Instructions, Sorted by ISA (12)2.6.1 List of MIPS32 Instructions (12)2.6.2 List of MIPS64 Instructions (13)2.7 Pipeline Architecture (13)2.7.1 Pipeline Stages and Execution Rates (13)2.7.2 Parallel Pipeline (14)2.7.3 Superpipeline (14)2.7.4 Superscalar Pipeline (14)2.8 Load/Store Architecture (15)2.9 Programming Model (15)2.9.1 CPU Data Formats (16)2.9.2 FPU Data Formats (16)2.9.3 Coprocessors (CP0-CP3) (16)2.9.4 CPU Registers (16)2.9.5 FPU Registers (18)2.9.6 Byte Ordering and Endianness (21)2.9.7 Memory Access Types (25)2.9.8 Implementation-Specific Access Types (26)2.9.9 Cache Coherence Algorithms and Access Types (26)2.9.10 Mixing Access Types (26)Chapter 3 Application Specific Extensions (27)3.1 Description of ASEs (27)3.2 List of Application Specific Instructions (28)3.2.1 The MIPS16e Application Specific Extension to the MIPS32Architecture (28)3.2.2 The MDMX Application Specific Extension to the MIPS64 Architecture (28)3.2.3 The MIPS-3D Application Specific Extension to the MIPS64 Architecture (28)MIPS32™ Architecture For Programmers Volume I, Revision 2.00i Copyright © 2001-2003 MIPS Technologies Inc. All rights reserved.3.2.4 The SmartMIPS Application Specific Extension to the MIPS32 Architecture (28)Chapter 4 Overview of the CPU Instruction Set (29)4.1 CPU Instructions, Grouped By Function (29)4.1.1 CPU Load and Store Instructions (29)4.1.2 Computational Instructions (32)4.1.3 Jump and Branch Instructions (35)4.1.4 Miscellaneous Instructions (37)4.1.5 Coprocessor Instructions (40)4.2 CPU Instruction Formats (41)Chapter 5 Overview of the FPU Instruction Set (43)5.1 Binary Compatibility (43)5.2 Enabling the Floating Point Coprocessor (44)5.3 IEEE Standard 754 (44)5.4 FPU Data Types (44)5.4.1 Floating Point Formats (44)5.4.2 Fixed Point Formats (48)5.5 Floating Point Register Types (48)5.5.1 FPU Register Models (49)5.5.2 Binary Data Transfers (32-Bit and 64-Bit) (49)5.5.3 FPRs and Formatted Operand Layout (50)5.6 Floating Point Control Registers (FCRs) (50)5.6.1 Floating Point Implementation Register (FIR, CP1 Control Register 0) (51)5.6.2 Floating Point Control and Status Register (FCSR, CP1 Control Register 31) (53)5.6.3 Floating Point Condition Codes Register (FCCR, CP1 Control Register 25) (55)5.6.4 Floating Point Exceptions Register (FEXR, CP1 Control Register 26) (56)5.6.5 Floating Point Enables Register (FENR, CP1 Control Register 28) (56)5.7 Formats of Values Used in FP Registers (57)5.8 FPU Exceptions (58)5.8.1 Exception Conditions (59)5.9 FPU Instructions (62)5.9.1 Data Transfer Instructions (62)5.9.2 Arithmetic Instructions (63)5.9.3 Conversion Instructions (65)5.9.4 Formatted Operand-Value Move Instructions (66)5.9.5 Conditional Branch Instructions (67)5.9.6 Miscellaneous Instructions (68)5.10 Valid Operands for FPU Instructions (68)5.11 FPU Instruction Formats (70)5.11.1 Implementation Note (71)Appendix A Instruction Bit Encodings (75)A.1 Instruction Encodings and Instruction Classes (75)A.2 Instruction Bit Encoding Tables (75)A.3 Floating Point Unit Instruction Format Encodings (82)Appendix B Revision History (85)ii MIPS32™ Architecture For Programmers Volume I, Revision 2.00 Copyright © 2001-2003 MIPS Technologies Inc. All rights reserved.Figure 2-1: Relationship between the MIPS32 and MIPS64 Architectures (11)Figure 2-2: One-Deep Single-Completion Instruction Pipeline (13)Figure 2-3: Four-Deep Single-Completion Pipeline (14)Figure 2-4: Four-Deep Superpipeline (14)Figure 2-5: Four-Way Superscalar Pipeline (15)Figure 2-6: CPU Registers (18)Figure 2-7: FPU Registers for a 32-bit FPU (20)Figure 2-8: FPU Registers for a 64-bit FPU if Status FR is 1 (21)Figure 2-9: FPU Registers for a 64-bit FPU if Status FR is 0 (22)Figure 2-10: Big-Endian Byte Ordering (23)Figure 2-11: Little-Endian Byte Ordering (23)Figure 2-12: Big-Endian Data in Doubleword Format (24)Figure 2-13: Little-Endian Data in Doubleword Format (24)Figure 2-14: Big-Endian Misaligned Word Addressing (25)Figure 2-15: Little-Endian Misaligned Word Addressing (25)Figure 3-1: MIPS ISAs and ASEs (27)Figure 3-2: User-Mode MIPS ISAs and Optional ASEs (27)Figure 4-1: Immediate (I-Type) CPU Instruction Format (42)Figure 4-2: Jump (J-Type) CPU Instruction Format (42)Figure 4-3: Register (R-Type) CPU Instruction Format (42)Figure 5-1: Single-Precisions Floating Point Format (S) (45)Figure 5-2: Double-Precisions Floating Point Format (D) (45)Figure 5-3: Paired Single Floating Point Format (PS) (46)Figure 5-4: Word Fixed Point Format (W) (48)Figure 5-5: Longword Fixed Point Format (L) (48)Figure 5-6: FPU Word Load and Move-to Operations (49)Figure 5-7: FPU Doubleword Load and Move-to Operations (50)Figure 5-8: Single Floating Point or Word Fixed Point Operand in an FPR (50)Figure 5-9: Double Floating Point or Longword Fixed Point Operand in an FPR (50)Figure 5-10: Paired-Single Floating Point Operand in an FPR (50)Figure 5-11: FIR Register Format (51)Figure 5-12: FCSR Register Format (53)Figure 5-13: FCCR Register Format (55)Figure 5-14: FEXR Register Format (56)Figure 5-15: FENR Register Format (56)Figure 5-16: Effect of FPU Operations on the Format of Values Held in FPRs (58)Figure 5-17: I-Type (Immediate) FPU Instruction Format (71)Figure 5-18: R-Type (Register) FPU Instruction Format (71)Figure 5-19: Register-Immediate FPU Instruction Format (71)Figure 5-20: Condition Code, Immediate FPU Instruction Format (71)Figure 5-21: Formatted FPU Compare Instruction Format (71)Figure 5-22: FP RegisterMove, Conditional Instruction Format (71)Figure 5-23: Four-Register Formatted Arithmetic FPU Instruction Format (72)Figure 5-24: Register Index FPU Instruction Format (72)Figure 5-25: Register Index Hint FPU Instruction Format (72)Figure 5-26: Condition Code, Register Integer FPU Instruction Format (72)Figure A-1: Sample Bit Encoding Table (76)MIPS32™ Architecture For Programmers Volume I, Revision 2.00iii Copyright © 2001-2003 MIPS Technologies Inc. All rights reserved.Table 1-1: Symbols Used in Instruction Operation Statements (2)Table 2-1: MIPS32 Instructions (12)Table 2-2: MIPS64 Instructions (13)Table 2-3: Unaligned Load and Store Instructions (24)Table 4-1: Load and Store Operations Using Register + Offset Addressing Mode (30)Table 4-2: Aligned CPU Load/Store Instructions (30)Table 4-3: Unaligned CPU Load and Store Instructions (31)Table 4-4: Atomic Update CPU Load and Store Instructions (31)Table 4-5: Coprocessor Load and Store Instructions (31)Table 4-6: FPU Load and Store Instructions Using Register+Register Addressing (32)Table 4-7: ALU Instructions With an Immediate Operand (33)Table 4-8: Three-Operand ALU Instructions (33)Table 4-9: Two-Operand ALU Instructions (34)Table 4-10: Shift Instructions (34)Table 4-11: Multiply/Divide Instructions (35)Table 4-12: Unconditional Jump Within a 256 Megabyte Region (36)Table 4-13: PC-Relative Conditional Branch Instructions Comparing Two Registers (36)Table 4-14: PC-Relative Conditional Branch Instructions Comparing With Zero (37)Table 4-15: Deprecated Branch Likely Instructions (37)Table 4-16: Serialization Instruction (38)Table 4-17: System Call and Breakpoint Instructions (38)Table 4-18: Trap-on-Condition Instructions Comparing Two Registers (38)Table 4-19: Trap-on-Condition Instructions Comparing an Immediate Value (38)Table 4-20: CPU Conditional Move Instructions (39)Table 4-21: Prefetch Instructions (39)Table 4-22: NOP Instructions (40)Table 4-23: Coprocessor Definition and Use in the MIPS Architecture (40)Table 4-24: CPU Instruction Format Fields (42)Table 5-1: Parameters of Floating Point Data Types (45)Table 5-2: Value of Single or Double Floating Point DataType Encoding (46)Table 5-3: Value Supplied When a New Quiet NaN Is Created (47)Table 5-4: FIR Register Field Descriptions (51)Table 5-5: FCSR Register Field Descriptions (53)Table 5-6: Cause, Enable, and Flag Bit Definitions (55)Table 5-7: Rounding Mode Definitions (55)Table 5-8: FCCR Register Field Descriptions (56)Table 5-9: FEXR Register Field Descriptions (56)Table 5-10: FENR Register Field Descriptions (57)Table 5-11: Default Result for IEEE Exceptions Not Trapped Precisely (60)Table 5-12: FPU Data Transfer Instructions (62)Table 5-13: FPU Loads and Stores Using Register+Offset Address Mode (63)Table 5-14: FPU Loads and Using Register+Register Address Mode (63)Table 5-15: FPU Move To and From Instructions (63)Table 5-16: FPU IEEE Arithmetic Operations (64)Table 5-17: FPU-Approximate Arithmetic Operations (64)Table 5-18: FPU Multiply-Accumulate Arithmetic Operations (65)Table 5-19: FPU Conversion Operations Using the FCSR Rounding Mode (65)Table 5-20: FPU Conversion Operations Using a Directed Rounding Mode (65)Table 5-21: FPU Formatted Operand Move Instructions (66)Table 5-22: FPU Conditional Move on True/False Instructions (66)iv MIPS32™ Architecture For Programmers Volume I, Revision 2.00 Copyright © 2001-2003 MIPS Technologies Inc. All rights reserved.Table 5-23: FPU Conditional Move on Zero/Nonzero Instructions (67)Table 5-24: FPU Conditional Branch Instructions (67)Table 5-25: Deprecated FPU Conditional Branch Likely Instructions (67)Table 5-26: CPU Conditional Move on FPU True/False Instructions (68)Table 5-27: FPU Operand Format Field (fmt, fmt3) Encoding (68)Table 5-28: Valid Formats for FPU Operations (69)Table 5-29: FPU Instruction Format Fields (72)Table A-1: Symbols Used in the Instruction Encoding Tables (76)Table A-2: MIPS32 Encoding of the Opcode Field (77)Table A-3: MIPS32 SPECIAL Opcode Encoding of Function Field (78)Table A-4: MIPS32 REGIMM Encoding of rt Field (78)Table A-5: MIPS32 SPECIAL2 Encoding of Function Field (78)Table A-6: MIPS32 SPECIAL3 Encoding of Function Field for Release 2 of the Architecture (78)Table A-7: MIPS32 MOVCI Encoding of tf Bit (79)Table A-8: MIPS32 SRL Encoding of Shift/Rotate (79)Table A-9: MIPS32 SRLV Encoding of Shift/Rotate (79)Table A-10: MIPS32 BSHFL Encoding of sa Field (79)Table A-11: MIPS32 COP0 Encoding of rs Field (79)Table A-12: MIPS32 COP0 Encoding of Function Field When rs=CO (80)Table A-13: MIPS32 COP1 Encoding of rs Field (80)Table A-14: MIPS32 COP1 Encoding of Function Field When rs=S (80)Table A-15: MIPS32 COP1 Encoding of Function Field When rs=D (81)Table A-16: MIPS32 COP1 Encoding of Function Field When rs=W or L (81)Table A-17: MIPS64 COP1 Encoding of Function Field When rs=PS (81)Table A-18: MIPS32 COP1 Encoding of tf Bit When rs=S, D, or PS, Function=MOVCF (81)Table A-19: MIPS32 COP2 Encoding of rs Field (82)Table A-20: MIPS64 COP1X Encoding of Function Field (82)Table A-21: Floating Point Unit Instruction Format Encodings (82)MIPS32™ Architecture For Programmers Volume I, Revision 2.00v Copyright © 2001-2003 MIPS Technologies Inc. All rights reserved.vi MIPS32™ Architecture For Programmers Volume I, Revision 2.00 Copyright © 2001-2003 MIPS Technologies Inc. All rights reserved.Chapter 1About This BookThe MIPS32™ Architecture For Programmers V olume I comes as a multi-volume set.•V olume I describes conventions used throughout the document set, and provides an introduction to the MIPS32™Architecture•V olume II provides detailed descriptions of each instruction in the MIPS32™ instruction set•V olume III describes the MIPS32™Privileged Resource Architecture which defines and governs the behavior of the privileged resources included in a MIPS32™ processor implementation•V olume IV-a describes the MIPS16e™ Application-Specific Extension to the MIPS32™ Architecture•V olume IV-b describes the MDMX™ Application-Specific Extension to the MIPS32™ Architecture and is notapplicable to the MIPS32™ document set•V olume IV-c describes the MIPS-3D™ Application-Specific Extension to the MIPS64™ Architecture and is notapplicable to the MIPS32™ document set•V olume IV-d describes the SmartMIPS™Application-Specific Extension to the MIPS32™ Architecture1.1Typographical ConventionsThis section describes the use of italic,bold and courier fonts in this book.1.1.1Italic Text•is used for emphasis•is used for bits,fields,registers, that are important from a software perspective (for instance, address bits used bysoftware,and programmablefields and registers),and variousfloating point instruction formats,such as S,D,and PS •is used for the memory access types, such as cached and uncached1.1.2Bold Text•represents a term that is being defined•is used for bits andfields that are important from a hardware perspective (for instance,register bits, which are not programmable but accessible only to hardware)•is used for ranges of numbers; the range is indicated by an ellipsis. For instance,5..1indicates numbers 5 through 1•is used to emphasize UNPREDICTABLE and UNDEFINED behavior, as defined below.1.1.3Courier TextCourier fixed-width font is used for text that is displayed on the screen, and for examples of code and instruction pseudocode.MIPS32™ Architecture For Programmers Volume I, Revision 2.001 Copyright © 2001-2003 MIPS Technologies Inc. All rights reserved.Chapter 1 About This Book1.2UNPREDICTABLE and UNDEFINEDThe terms UNPREDICTABLE and UNDEFINED are used throughout this book to describe the behavior of theprocessor in certain cases.UNDEFINED behavior or operations can occur only as the result of executing instructions in a privileged mode (i.e., in Kernel Mode or Debug Mode, or with the CP0 usable bit set in the Status register).Unprivileged software can never cause UNDEFINED behavior or operations. Conversely, both privileged andunprivileged software can cause UNPREDICTABLE results or operations.1.2.1UNPREDICTABLEUNPREDICTABLE results may vary from processor implementation to implementation,instruction to instruction,or as a function of time on the same implementation or instruction. Software can never depend on results that areUNPREDICTABLE.UNPREDICTABLE operations may cause a result to be generated or not.If a result is generated, it is UNPREDICTABLE.UNPREDICTABLE operations may cause arbitrary exceptions.UNPREDICTABLE results or operations have several implementation restrictions:•Implementations of operations generating UNPREDICTABLE results must not depend on any data source(memory or internal state) which is inaccessible in the current processor mode•UNPREDICTABLE operations must not read, write, or modify the contents of memory or internal state which is inaccessible in the current processor mode. For example,UNPREDICTABLE operations executed in user modemust not access memory or internal state that is only accessible in Kernel Mode or Debug Mode or in another process •UNPREDICTABLE operations must not halt or hang the processor1.2.2UNDEFINEDUNDEFINED operations or behavior may vary from processor implementation to implementation, instruction toinstruction, or as a function of time on the same implementation or instruction.UNDEFINED operations or behavior may vary from nothing to creating an environment in which execution can no longer continue.UNDEFINED operations or behavior may cause data loss.UNDEFINED operations or behavior has one implementation restriction:•UNDEFINED operations or behavior must not cause the processor to hang(that is,enter a state from which there is no exit other than powering down the processor).The assertion of any of the reset signals must restore the processor to an operational state1.3Special Symbols in Pseudocode NotationIn this book, algorithmic descriptions of an operation are described as pseudocode in a high-level language notation resembling Pascal. Special symbols used in the pseudocode notation are listed in Table 1-1.Table 1-1 Symbols Used in Instruction Operation StatementsSymbol Meaning←Assignment=, ≠Tests for equality and inequality||Bit string concatenationx y A y-bit string formed by y copies of the single-bit value x2MIPS32™ Architecture For Programmers Volume I, Revision 2.00 Copyright © 2001-2003 MIPS Technologies Inc. All rights reserved.1.3Special Symbols in Pseudocode Notationb#n A constant value n in base b.For instance10#100represents the decimal value100,2#100represents the binary value 100 (decimal 4), and 16#100 represents the hexadecimal value 100 (decimal 256). If the "b#" prefix is omitted, the default base is 10.x y..z Selection of bits y through z of bit string x.Little-endian bit notation(rightmost bit is0)is used.If y is less than z, this expression is an empty (zero length) bit string.+, −2’s complement or floating point arithmetic: addition, subtraction∗, ×2’s complement or floating point multiplication (both used for either)div2’s complement integer divisionmod2’s complement modulo/Floating point division<2’s complement less-than comparison>2’s complement greater-than comparison≤2’s complement less-than or equal comparison≥2’s complement greater-than or equal comparisonnor Bitwise logical NORxor Bitwise logical XORand Bitwise logical ANDor Bitwise logical ORGPRLEN The length in bits (32 or 64) of the CPU general-purpose registersGPR[x]CPU general-purpose register x. The content of GPR[0] is always zero.SGPR[s,x]In Release 2 of the Architecture, multiple copies of the CPU general-purpose registers may be implemented.SGPR[s,x] refers to GPR set s, register x. GPR[x] is a short-hand notation for SGPR[ SRSCtl CSS, x].FPR[x]Floating Point operand register xFCC[CC]Floating Point condition code CC.FCC[0] has the same value as COC[1].FPR[x]Floating Point (Coprocessor unit 1), general register xCPR[z,x,s]Coprocessor unit z, general register x,select sCP2CPR[x]Coprocessor unit 2, general register xCCR[z,x]Coprocessor unit z, control register xCP2CCR[x]Coprocessor unit 2, control register xCOC[z]Coprocessor unit z condition signalXlat[x]Translation of the MIPS16e GPR number x into the corresponding 32-bit GPR numberBigEndianMem Endian mode as configured at chip reset (0→Little-Endian, 1→ Big-Endian). Specifies the endianness of the memory interface(see LoadMemory and StoreMemory pseudocode function descriptions),and the endianness of Kernel and Supervisor mode execution.BigEndianCPU The endianness for load and store instructions (0→ Little-Endian, 1→ Big-Endian). In User mode, this endianness may be switched by setting the RE bit in the Status register.Thus,BigEndianCPU may be computed as (BigEndianMem XOR ReverseEndian).Table 1-1 Symbols Used in Instruction Operation StatementsSymbol MeaningChapter 1 About This Book1.4For More InformationVarious MIPS RISC processor manuals and additional information about MIPS products can be found at the MIPS URL:ReverseEndianSignal to reverse the endianness of load and store instructions.This feature is available in User mode only,and is implemented by setting the RE bit of the Status register.Thus,ReverseEndian may be computed as (SR RE and User mode).LLbitBit of virtual state used to specify operation for instructions that provide atomic read-modify-write.LLbit is set when a linked load occurs; it is tested and cleared by the conditional store. It is cleared, during other CPU operation,when a store to the location would no longer be atomic.In particular,it is cleared by exception return instructions.I :,I+n :,I-n :This occurs as a prefix to Operation description lines and functions as a label. It indicates the instruction time during which the pseudocode appears to “execute.” Unless otherwise indicated, all effects of the currentinstruction appear to occur during the instruction time of the current instruction.No label is equivalent to a time label of I . Sometimes effects of an instruction appear to occur either earlier or later — that is, during theinstruction time of another instruction.When this happens,the instruction operation is written in sections labeled with the instruction time,relative to the current instruction I ,in which the effect of that pseudocode appears to occur.For example,an instruction may have a result that is not available until after the next instruction.Such an instruction has the portion of the instruction operation description that writes the result register in a section labeled I +1.The effect of pseudocode statements for the current instruction labelled I +1appears to occur “at the same time”as the effect of pseudocode statements labeled I for the following instruction.Within one pseudocode sequence,the effects of the statements take place in order. However, between sequences of statements for differentinstructions that occur “at the same time,” there is no defined order. Programs must not depend on a particular order of evaluation between such sections.PCThe Program Counter value.During the instruction time of an instruction,this is the address of the instruction word. The address of the instruction that occurs during the next instruction time is determined by assigning a value to PC during an instruction time. If no value is assigned to PC during an instruction time by anypseudocode statement,it is automatically incremented by either 2(in the case of a 16-bit MIPS16e instruction)or 4before the next instruction time.A taken branch assigns the target address to the PC during the instruction time of the instruction in the branch delay slot.PABITSThe number of physical address bits implemented is represented by the symbol PABITS.As such,if 36physical address bits were implemented, the size of the physical address space would be 2PABITS = 236 bytes.FP32RegistersModeIndicates whether the FPU has 32-bit or 64-bit floating point registers (FPRs).In MIPS32,the FPU has 3232-bit FPRs in which 64-bit data types are stored in even-odd pairs of FPRs.In MIPS64,the FPU has 3264-bit FPRs in which 64-bit data types are stored in any FPR.In MIPS32implementations,FP32RegistersMode is always a 0.MIPS64implementations have a compatibility mode in which the processor references the FPRs as if it were a MIPS32 implementation. In such a caseFP32RegisterMode is computed from the FR bit in the Status register.If this bit is a 0,the processor operates as if it had 32 32-bit FPRs. If this bit is a 1, the processor operates with 32 64-bit FPRs.The value of FP32RegistersMode is computed from the FR bit in the Status register.InstructionInBranchDelaySlotIndicates whether the instruction at the Program Counter address was executed in the delay slot of a branch or jump. This condition reflects the dynamic state of the instruction, not the static state. That is, the value is false if a branch or jump occurs to an instruction whose PC immediately follows a branch or jump, but which is not executed in the delay slot of a branch or jump.SignalException(exce ption, argument)Causes an exception to be signaled, using the exception parameter as the type of exception and the argument parameter as an exception-specific argument). Control does not return from this pseudocode function - the exception is signaled at the point of the call.Table 1-1 Symbols Used in Instruction Operation StatementsSymbolMeaning。
MIPS指令多周期CPU设计
MIPS指令多周期CPU设计MIPS(Microprocessor without Interlocked Pipeline Stages)是一种经典的指令集架构,也是一种常用的计算机体系结构之一、在本文中,将介绍如何设计一个多周期CPU来执行MIPS指令。
多周期CPU是一种在各个阶段使用不同时钟周期数的中央处理器设计。
其核心思想是将指令处理过程划分为若干个阶段,每个阶段由单独的硬件电路来执行。
通过这种方式,可以提高CPU的效率和性能。
下面将逐步介绍多周期CPU的设计步骤:1. 指令存储器(Instruction Memory):首先,需要设计一个指令存储器,用于存储MIPS指令。
指令存储器通常使用随机存取存储器(Random Access Memory, RAM),可以通过指令地址来读取指令。
2. 指令解码(Instruction Decode):在该阶段中,需要将从指令存储器中读取的指令进行解码。
解码的目的是确定指令的类型以及操作数的位置。
根据指令的类型,还需要通过控制信号来决定执行的下一步操作。
3. 寄存器读取(Register Read):在这个阶段中,需要从寄存器文件中读取操作数。
MIPS架构中有32个通用寄存器,它们存储着变量和数据。
4. 执行(Execute):在这个阶段中,需要执行指令的操作。
具体的操作取决于指令的类型。
例如,加法操作需要将操作数相加,存储结果。
5. 存储器访问(Memory Access):在这个阶段中,需要进行内存访问操作。
MIPS架构中,可以使用lw(load word)指令将数据从内存中加载到寄存器中,使用sw(store word)指令将数据从寄存器中存储到内存中。
6. 寄存器写入(Register Write):在这个阶段中,需要将执行阶段的结果写入到寄存器文件中。
以上是多周期CPU的基本设计流程。
在设计过程中,还需要考虑异常处理和分支跳转等特殊情况。
mips体系结构
mips体系结构
MIPS体系结构是一种基于RISC(Reduced Instruction Set Computing)架构的计算机体系结构,它被广泛应用于计算机、移动
设备和嵌入式系统等领域。
MIPS是一个思想精妙、功能强大且方便实现的指令集,具有高效的编译器支持和优秀的性能表现。
在本文中,
我们将深入探讨MIPS体系结构的特点和优势。
MIPS体系结构的核心思想是“简单即快速”,有效地将计算机指令分为若干个固定的操作码和操作数,使得计算机处理和寻址速度更加迅速、简单。
此外,MIPS指令集的体积也更小,更利于计算机的指令流水线实现。
在实际应用中,MIPS体系结构不仅具有高效的指令级并行性(ILP),而且还有着出色的数据级并行性(DLP)。
通过将计算机指令简化为
一些基本操作,如加法、减法、乘法、移位等等,MIPS体系结构能够高效地处理海量数据。
此外,MIPS还采用了一些优化技术,例如指令运算流水线、分支预测等等,使得指令的执行效率更加高效。
除此之外,MIPS体系结构还有着许多优秀的特点,如灵活的扩展性、高效的编译器和汇编器等等。
相比于其他常见的计算机体系结构,MIPS可以轻松扩展到多核和多线程处理器中,而且其指令丰富性和优
秀的编译器支持也能够有效地提高程序的运行效率。
总之,MIPS体系结构是一种特别好用的计算机架构,其高效的指令集和优秀的性能表现让它成为了许多科研、工程和商业领域应用的首选。
相信在未来,随着人工智能等领域的快速发展,MIPS体系结构也必将发挥更加广泛和重要的作用。
MIPS体系结构
MIPS CPU 体系结构概述 /mips/陈怀临1。
序言本文介绍MIPS体系结构,着重于其寄存器约定,MMU及存储管理,异常和中断处理等等。
通过本文,希望能提供一个基本的轮廓概念给对MIPS CPU及之上OS有兴趣的读者。
并能开始阅读更详细的归约(SPECIFICATION)资料。
MIPS是最早的,最成功的RISC(Reduced Instruction Set Computer)处理器之一,起源于Stanford Univ的电机系. 其创始人 John L. Hennessy在1984年在硅谷创立了MIPS INC. 公司()。
John L. Hennessy目前是Stanford Univ. 的校长。
在此之前,他是 Stanford电子工程学院的Dean。
CS专业的学生都知道两本著名的书:“Computer Organization and Design : The Hardware/Software Interface”和”Computer Architecture : A Quantitative Approach“。
其Co-author就是Hennessy.MIPS的名字为“Microcomputer without interlocked pipeline stages"的缩写。
另外一个通常的非正式的说法是”Millions of instructions per second".MIPS 芯片在工业界目前用的比较多的是:MIPS INC。
的R10000;QED(。
1996年从MIPS INC。
分(SPIN OFF)出来的)的R5000, R7000等。
指令集详细的资料请参阅MIPS归约。
一般而言,MIPS指令系统有:MIPS I;MIPS II;MIPS III 和MIPS IV。
可想而知,指令系统是向后兼容的。
例如,基于MIPS II的代码可以在MIP III和MIPS IV的处理器上跑一跑:-)下面是当我们用gcc时,如何指定指令和CPU的选项。
MIPS芯片架构说明
MIPS芯片架构说明MIPS(Microprocessor without Interlocked Pipeline Stages)即无竞争流水线微处理器,是一种精简指令集(RISC)的芯片架构。
MIPS 架构由美国斯坦福大学的约翰·亨尼西等人于1981年提出,并于1984年成立MIPS公司进行商业化开发和推广。
MIPS架构在计算机领域有着广泛的应用,尤其在网络设备、数字视频处理、嵌入式系统等领域具有重要地位。
MIPS架构的设计理念是简化指令集,提高流水线效率,以提供高性能和高效能的微处理器。
MIPS指令集体系结构的特征包括:固定长度的32位指令;寄存器-寻址模式;延迟槽;无跳转偏移;定长延迟分支;乱序执行指令流水线;五级流水线等。
MIPS指令集是一种精简的指令集,通过减少指令种类、规定固定的指令格式和长度,以及简化指令的操作模式,达到提高指令执行效率的目的。
MIPS指令集包括加载存储指令,算术逻辑运算指令,分支和跳转指令,协处理器指令等。
MIPS架构采用寄存器-寻址模式来访问数据。
寄存器-寻址模式是指通过指定寄存器的编号来操作数据,而不是通过指定内存地址。
MIPS架构提供了32个通用寄存器,用于存储数据和中间结果,通过对寄存器的操作来实现数据的传输和计算。
这种设计简化了指令的编码和执行,提高了指令执行的效率。
MIPS架构中的延迟槽是指在条件分支指令后的一条或多条指令,不管条件是否满足都会执行。
延迟槽的设计可以充分利用流水线的性能,但需要程序员进行特殊的处理,以确保延迟槽的指令在分支满足或不满足时都能正确执行。
MIPS架构的指令集中,分支和跳转指令的目标地址是相对于当前指令的偏移地址。
相对地址的设计简化了指令的编码和目标地址的计算,提高了指令的执行效率。
MIPS架构中的乱序执行指令流水线是指将多条指令按照最大并行度进行重排序,在这个过程中可能会引入数据依赖、资源竞争等问题。
为了解决这些问题,MIPS架构采取了一系列的措施,如指令重排序、数据前推、动态分支预测等,以提高指令的并行度和流水线的效率。
第二章 MIPS体系结构
2.4 加载与存储:寻址方式
lw $1,offset($2) offset:有符号16位数字(-32768~32767),前后各32K 加载所需地址=offset+$2寄存器的值
2.5 存储器与寄存器的数据类型
(1)字节byte和halfword的加载方式
第二章 MIPS体系结构
2.1 MIPS汇编语言风格
#:注释 ;:一行中多条指令用分号隔开 ::单词后面跟着冒号指标号,代码中的入口点和命名 数据区的一个存储位置 三种指令格式(所有指令都是32位): R类型 I类型 J类型
(1)R型指令(从寄存器堆中取出两个操作数,
计算结果写回寄存器堆)
6bits
核心态:CPU可以存储地位地址,和用户态一样,地址 做同样的转换。
模拟32位 指令 时寄存器存放 的是32位值的 64位符号扩展。
2.9 流水线可见性
(1)分支延迟
分支延迟槽中指令即使跳转成功也会执行。MIPS II引入可能 分支branch-likely指令,延迟槽中指令仅在分支被接受的情况下 执行。
(4)kseg2:0xC000_0000~0xFFFF_FFFFf(1G)
核心态下使用,需MMU转换。
若需要512M之上的物理地址空间,可以设置存储器 管理单元TLB(第六章) 或使用64位CPU的额外空间。 用户态:用户地址经MMU转换成物理地址,2G以上程 序地址是非法的,某些指令(如CPU控制指令)是非法 的
(3)kseg1:0xA000_0000~0xBFFF_FFFF(512M)
最高三位清零映射到低端512M的物理地址,unmapped, uncached。唯一一个系统重启能正常工作的地址空间,复位入 口地址0xBFC0_0000,相应物理地址0x1FC0_0000。存储初始的 程序ROM或用作I/O寄存器。
MIPS体系结构概述
MIPS体系结构概述MIPS CPU 体系结构概述原作者:陈怀临整理:flyduke序言本文介绍MIPS体系结构,着重于其寄存器约定,MMU及存储管理,异常和中断处理等等。
通过本文,希望能提供一个基本的轮廓概念给对MIPS CPU及之上OS有兴趣的读者。
并能开始阅读更详细的归约(SPECIFICATION)资料。
MIPS是最早的,最成功的RISC(Reduced Instruction Set Computer)处理器之一,起源于Stanford Univ的电机系. 其创始人John L. Hennessy在1984年在硅谷创立了MIPS INC. 公司(/doc/a7f56d254b35eefdc8d33320.html )。
John L. Hennessy目前是Stanford Univ. 的校长。
在此之前,他是Stanford电子工程学院的Dean。
CS专业的学生都知道两本著名的书:“Computer Organization and Design : The Hardware/Software Interface”和“Computer Architecture : A Quantitative Approach”。
其Co-author就是Hennessy.MIPS的名字为“Microcomputer without interlocked pipeline stages"的缩写。
另外一个通常的非正式的说法是”Millions of instructions per second".MIPS 芯片在工业界目前用的比较多的是:MIPS INC的R10000;QED(/doc/a7f56d254b35eefdc8d33320.ht ml 。
1996年从MIPS INC分(SPIN OFF)出来的)的R5000、R7000等。
指令集详细的资料请参阅MIPS定义。
一般而言,MIPS指令系统有:MIPS I;MIPS II;MIPS III 和MIPS IV。
MIPS微处理器原理-MIPS汇编语言
操作数:寄存器、存储器、常数
因常数的值可以立即访问,故又称为立即数(immediate)。
加立即数指令 ( addi ):
# $s0=a, $s1=b
addi $s0, $s1, 4 # a=b+4 addi $s1, $s0,-2 # b=a-2
没有NOT,可用下面代替 A NOR $0 = NOT A
Source Values $s1 0000 0000 0000 0000 0000 0000 1111 1111
andi rt、rs、imm
Assembly Code
imm 0000 0000 0000 0000 1111 1010 0011 0100
用途 常数0 汇编器临时变量 函数返回值 函数参数 临时变量 保存变量
名称 $t8 ~ $t9 $k0 ~$k1 $gp $sp $fp $ra
编号 24~25 26~27 28 29 30 31
用途
临时变量
操作系统临时变量
全局指针
栈指针
帧指针
保存变量
8
MIPS Register Set
Name $0 $at $v0-$v1 $a0-$a3 $t0-$t7 $s0-$s7 $t8-$t9 $k0-$k1 $gp $sp $fp $ra
4个准则: ① 简单设计有助于规整化; ② 加快常见功能; ③ 越小的设计越快; ④ 好的设计需要好的折中方法。
4
R I S C 指令集的特点
Reduced Instruction Set Computer Complex Instruction Set Computer
• 精简了指令系统,流水线以及常用指令均可用硬件执行;
MIPS指令集及汇编
和R12000(1997年)等型号。 z 随后,MIPS公司把重点放在嵌入式系统。
{ 1999年发布MIPS32和MIPS64架构标准,集成了所有原 来MIPS指令集,并且增加了许多更强大的功能。陆续开发 了高性能、低功耗的32位处理器内核(core)MIPS324Kc 与高性能64位处理器内核MIPS64 5Kc。
{ 应用广泛的32位MIPS CPU包括R2000,R3000 其ISA都是MIPS I,另一个广泛使用的、含有许多 重要改进的64位MIPS CPU R4000及其后续产 品,其ISA版本为MIPS III
一、 MIPS简介
{ 1984年,MIPS计算机公司成立。1992年,SGI收购了 MIPS计算机公司。1998年,MIPS脱离SGI,成为MIPS 技术公司。
龙芯2E笔记本电脑运行 OpenOffice打开Word文档
ቤተ መጻሕፍቲ ባይዱ
二、MIPS体系结构
{ 指令集体系结构类型:寄存器——寄存器型
(1)寄存器的特点 (2)整数乘法单元和寄存器 (3)寻址方式 (4)存储器和寄存器中的数据类型 (5)流水线冒险
二、 MIPS体系结构——(1)寄存器
{ MIPS 包含32个通用寄存器
{ 2000年,MIPS公司发布了针对MIPS32 4Kc的版本以及 64位MIPS 64 20Kc处理器内核。
一、 MIPS简介
{ 基于龙芯2E处理器的千元的PC、1999元的笔记本电脑、 意法半导体3000万元购买龙芯2E 5年的生产和销售权, 国产操作系统内核在龙芯2E上测试成功。
MIPS体系结构和汇编语言快速入门
MIPS体系结构和汇编语言快速入门一、MIPS体系结构概述(200字)MIPS处理器由五个流水线阶段组成:取指令(IF)、指令解码(ID)、执行(EX)、访存(MEM)和写回(WB)。
这种流水线架构能够并行处理多条指令,提高了处理器的性能。
二、MIPS汇编语言基础(400字)MIPS汇编语言是一种低级语言,与二进制机器码一一对应。
它使用助记符(mnemonics)来表示不同的指令和操作数。
MIPS指令主要分为以下几类:1.加载和存储指令:- lw $t, offset($s):从地址$s+offset处加载一个字,并存入寄存器$t中。
- sw $t, offset($s):将寄存器$t中的值存储到地址$s+offset处。
2.算术和逻辑指令:- add $d, $s, $t:将寄存器$s和$t中的值相加,结果存入寄存器$d中。
- sub $d, $s, $t:将寄存器$s和$t中的值相减,结果存入寄存器$d中。
- and $d, $s, $t:将寄存器$s和$t的值逐位与运算,结果存入寄存器$d中。
- or $d, $s, $t:将寄存器$s和$t的值逐位或运算,结果存入寄存器$d中。
3.分支和跳转指令:- beq $s, $t, offset:如果寄存器$s和$t的值相等,则跳转到当前PC加上offset的地址处。
- j target:无条件跳转到指定的目标地址。
三、MIPS程序示例(600字)下面是一个使用MIPS汇编语言编写的简单程序,用于计算斐波那契数列的第10个数:.dataresult: .space 4 # 用于存储结果.text.globl mainmain:#初始化前两个斐波那契数li $t0, 0 # 第一个数为0sw $t0, result # 存储到result中li $t1, 1 # 第二个数为1sw $t1, result+4 # 存储到result的下一个字节中#循环计算剩下的斐波那契数li $t2, 2 # 计数器初始值为2loop:add $t3, $t0, $t1 # 计算下一个数sw $t3, result+($t2*4) # 存储到result的下一个位置addi $t2, $t2, 1 # 计数器加1move $t0, $t1 # 更新前两个数move $t1, $t3blt $t2, 10, loop # 如果计数器小于10,跳转到loop处继续循环#输出结果li $v0, 1 # syscall代码1表示输出整数lw $a0, result+36 # 读取result的第10个字节syscall # 执行系统调用#程序结束li $v0, 10 # syscall代码10表示程序结束syscall代码中使用了伪指令(如.data和.text)来指定数据段和代码段。
MISP体系结构
MIPS简介
MIPS是一种采用RISC设计的处理器芯片,MIPS的意思 是“无内部互锁流水级的微处理器”(Microprocessor Without Interlocked Piped Stages)。 RISC(Reduced Instruction Set Computer,精简指令集 ( ,精简指令集 计算机)是一种执行较少类型计算机指令的微处理器, RISC相对于CISC(Complex Instruction Set Computer, 复杂指令系统计算机)指令类型较少,所以能够以更快的 速度执行操作。 衡量CPU速度的指标:MIPS(Million Instructions Per Second,每秒百万条指令数)。
MIPS 的特权模式
MIPS可以运行在三种特权模式下:用户模式(user mode),核心模式(kernel mode)和管理模式 (supervisor mode),管理模式一般忽略。 用户态程序是无法访问核心地址空间的,否则会导致异常。
Contents
1. MIPS 简介 2. MIPS 体系结构 3. MIPS 处理器控制 4. MIPS Cache 机制 5. MIPS 异常,中断和启动 6. MIPS 内存管理 & TLB
执行后,t2的值为0xFFFF FFFE(-2),t3的值为 0x0000 00FE(254)。
MIPS 的寻址与数据格式
只能通过load/store指令访问内存,且必须对齐。字节可 以任意地址存储,半字必须在偶数地址对齐,字必须在四 字节边界对齐。CISC虽然能从任意字节地址存储数据, 但要用额外的时钟周期。 MIPS跳转指令有范围限制,因为MIPS最小指令码为6位, 留下26位定义跳转地址,指令在内存中为四字节边界对齐, 所以低两位地址无需保存,这样就有2^28=256MB的绝对 寻址空间。条件分支只有16位偏移域,及2^18B寻址空间。
MIPS CPU详细介绍
MIPS CPU详细介绍MIPS是世界上很流行的一种RISC处理器。
MIPS的意思是“无内部互锁流水级的微处理器”(Microprocessor without interlocked piped stages),其机制是尽量利用软件办法避免流水线中的数据相关问题。
它最早是在80年代初期由斯坦福(Stanford)大学Hennessy教授领导的研究小组研制出来的。
MIPS公司的R系列就是在此基础上开发的RISC工业产品的微处理器。
这些系列产品为很多计算机公司采用构成各种工作站和计算机系统。
MIPS技术公司是美国著名的芯片设计公司,它采用精简指令系统计算结构(RISC)来设计芯片。
和英特尔采用的复杂指令系统计算结构(CISC)相比, RISC 具有设计更简单、设计周期更短等优点,并可以应用更多先进的技术,开发更快的下一代处理器。
MIPS是出现最早的商业RISC架构芯片之一,新的架构集成了所有原来MIPS指令集,并增加了许多更强大的功能。
1986年推出R2000处理器,1988年推出R3000处理器,1991年推出第一款64位商用微处理器R4000。
之后,又陆续推出R8000(于 1994年)、R10000(于1996年)和R12000(于1997年)等型号。
1999年,MIPS公司发布MIPS 32和MIPS 64架构标准。
2000年,MIPS公司发布了针对MIPS 32 4Kc的新版本以及未来64位MIPS 64 20Kc处理器内核。
在MIPS芯片的发展过程中,SGI公司在1992年收购了MIPS计算机公司,1998年,MIPS公司又脱离了SGI,成为MIPS技术公司; MIPS32 4KcTM 处理器是采用MIPS技术特定为片上系统(System-On-a-Chip)而设计的高性能、低电压32位MIPS RISC 内核。
采用MIPS32TM体系结构,并且具有R4000存储器管理单元(MMU)以及扩展的优先级模式,使得这个处理器与目前嵌入式领域广泛应用的 R3000和R4000系列(32位)微处理器完全兼容.新的 64 位 MIPS 处理器是RM9000x2,从“x2”这个标记判断,它包含了不是一个而是两个均具有集成二级高速缓存的64位处理器。
计算机组成原理mips
计算机组成原理mips计算机组成原理是计算机科学的一个重要方向,而MIPS指令集是一种常用的指令集架构。
下面将从MIPS的基本概念、MIPS内存模型、MIPS指令格式、MIPS异常处理和MIPS流水线这些方面对计算机组成原理MIPS进行探讨。
一、MIPS的基本概念MIPS是一种RISC指令集架构,RISC是指简化指令集计算机。
MIPS指令集由两种类型的指令组成:R指令和I指令。
其中,R指令用于执行算术和逻辑操作,而I指令用于执行数据传输、分支和分支跳转操作。
二、MIPS内存模型MIPS系统中的内存是以字作为单位进行管理的,即每个字是32位二进制数。
MIPS系统中的内存地址是32位的,可以表示2的32次方个内存地址,也就是4GB。
三、MIPS指令格式MIPS指令格式包括:操作码、源寄存器、目的寄存器、立即数和跳转地址。
操作码用于指定指令类型,源寄存器和目的寄存器用于指定操作数,立即数用于指定一个常数,跳转地址用于指定程序跳转的目标地址。
四、MIPS异常处理在MIPS系统中,异常是指计算机遇到无法处理的情况,例如除以零、访问无效地址等。
MIPS使用异常处理机制来处理异常,即遇到异常时,会将当前的程序状态保存在内存中,然后跳到异常处理程序中进行处理。
五、MIPS流水线MIPS采用了流水线技术来提高处理器的执行效率。
流水线是让处理器在同一个时钟周期内同时执行多条指令,从而提高了处理器的吞吐量。
MIPS采用了五级流水线结构,分别是取指令、指令译码、执行、访存和写回五个阶段。
以上是对计算机组成原理MIPS的简单介绍。
MIPS指令集具有指令精简、执行速度快等特点,因此在数字信号处理、计算机视觉、机器人控制等领域中得到了广泛应用。
对于计算机科学专业的学生来说,学习和掌握MIPS指令集是非常重要的,对于以后的职业发展也有很大的帮助。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
指令上的限制
--所有指令都是32bit 长度: 这样就能保证IF stage每次都花费相同时间. 64bit下,指令也 是32bit. 这个限制的附带结果是: 跳转/跳转到子函数 target 地址只有26bit, 更远的跳 转需要通过寄存器. 其余的指令,指令编码占有16bit, 只有16bit留给常数, 这样加载一个 32bit的立即数需要2条指令, 条件跳转最远64k. ---- 指令必须依照pipe line的限制制定: 比如必须在一个cycle内完成, WB阶段只能存储 一个寄存器所以所有的指令仅仅能修改一个目标寄存器. 乘除法的特殊性让MIPS采用 了不同的pipe line来完成这个操作. ---- 三个操作数的指令设计: ALU不能操作内存单元, 因为MEM阶段在ALU之后. 这样我 们有足够的指令bit 来指定3个操作数,它们都是寄存器. 3操作数的设计给编译器的设计 也带来很大的方便. (gcc 内部描述都是3操作数的指令) ----32个寄存器: 5bit一方面对于指令的编码有利,另一个方面32个寄存器对于多数应用 已经足够. ---- 零号寄存器 $0 总是返回0 ( 或许能给clear 寄存器带来方便)
Branch delay slot
branch到执行阶段的时候,下一条指令已经 开始运行了, 与其丢掉其结果不如继续执行 完成.即,无论最后是否执行跳转, 其后的 delay slot内的指令总会被执行.
load delay slot
当load 指令执行到MEM阶段,即从从 cache/ram读取数据的时候, 下一条指令的 ALU也同时进行, 所以紧邻load指令的指令 是不能使用load的数据的. 之后的第二个才 可以.
核心态和用户态
• 核心态:可以存取2G以下地址,但就和在用户 态一样,此时需要TLB来做地址转换. • 用户态:访问 2G以上的程序地址是非法的, 会导致陷入异常.
• 有些简单的系统,包括许多实时操作系统,全 部代码都是运行在核心态下的.
协处理器CP0
• CP0 包含的控制包括:
--- cpu配置: 比如大小端设置等 --- 高速缓存控制 --- 异常/中断控制 --- MMU 控制 --- 其它:定时器,错误检测,奇偶校验..
--- 仅有一种寻址模式. 这唯一的寻址方式就是16bit的有符号 displacement加上一个 base reg. 并且一旦装入寄存器, cpu按照整个 寄存器模式来操作数据, 不考虑内部是装了一个byte还是word. ---- load store 必须自然对齐: 这个规则也有例外, MIPS还是提供了特 殊指令来加载非对齐的数据. --- 跳转 所有指令都是4byte对齐的, 指令留下了26bit, 所以有 2^28=256M 的跳转可寻址空间. 并且不是相对于PC的地址,而是在一 个256M段内的绝对地址. --- 条件跳转 条件跳转更少, 16bit, 但是是相对于PC的跳转, 前后 128K.
存储空间划分
• unmapped/mapped是指这些空间是否需要MMU才能访问. 对于mapped的地址空间, 必须有MMU的介入. • kuseg 从0x0000 0000 到0x8000 0000, 是user mode应用 所处的地址空间. kseg0/kseg1 都映射到物理地址0-512M, 不同在于一个是 通过cache访问(意味着必须先设置好cache才行), 一个是 uncache的.CPU对于kseg0,kseg1的地址处理比较简单,对 kseg0, CPU简单的把最高位bit忽略就是其物理地址, 对于 kseg1,忽略最高的3个bit即可. • Kseg1是唯一的在系统重启时能正常工作的地址空间.复位 时的入口点0xbfc00000就在这个区域.其对应的物理地址是 0x1fc00000,硬件设计必须使用这个区域去存取初始的程序 rom.该区同时可用作I/O寄存器空间.
Exception发生时, MIPS CPU的行为 1. 把EPC设置成restart地址(这里要注意delay slot 等情况) 2. 设置SR(EXL): 即强制进入kernel mode,并禁止 中断 3. 设置相关寄存器以提供足够信息:Cause寄存 器,BadVAddr,MMU相关寄存器(具体的可以看相 应中断的描述) 4. 开始从异常入口地址预取指令, 交给软件处理.
• MIPS的原则是 all exception are created equal, 但是 并不是所有情况下都相等的
硬件中断
• Interrupt Resources in MIPS CPUs 在Cause寄存器有8个bit来描述中断,其中6个来自外部,2个是软件控制的.CPU内部的 counter/timer会连接到其中一个,一般情况下不会和外部中断共享. 中断服务控制: --- SR(IE) 如果是0,不响应任何中断 --- SR(EXL) , SR(ERL) 在任何exception发生后,其中一个bit置位,中断被禁止,CPU进入 内核模式. --- SR(IM0-7) 单独控制一个中断. 注:cause中有两个bit,被置1后如果对应IM没有禁止就会触发一个中断. 确定那个设备发出中断信号的步骤: --- 查询Cause(IP) 与上 SR(IM) 获得被使能的active interrupt请求. 有可能是多个. --- 选择一个进行处理.(按照软件定义好的优先级) --- 保存SR(IM) (或者整个SR) --- 改变SR(IM),屏蔽当前和所有低优先级的中断 --- 保存当前状态(比如各种寄存器) --- 使能SR(IE), 将SR(KSU)设置为kernel mode(如果容许嵌套,需要clear SR(EXL)这样 就需要正确的SR(KSU)) --- 调用相应中断处理函数 --- 在返回时,需要重新禁止中断, 恢复SR. 如果恢复整个SR还好,否则需要恢复SR(EXL) 让eret来做原子性的EXL恢复和返回user space.
• Nesting Exceptions
容许中断嵌套的首要问题是, EPC,SR将会 被新的中断覆盖, k0,k1也需要保存起来. 由 于一般内核堆栈都不能容纳足够数量的 exception frame, 一般的做法是只容许高优 先级的中断抢占当前中断处理,这样最大的 exception frame数量和优先级数量一样多. 中断可以单独的禁止(IM7-0 ),或者通过 IE,EXL一次性全部禁止;异常是不能禁止的.
参考资料
• See mips run • Mips chip manual
Risc技术发展方向
• • • • • • • 32位 64位 单处理->多处理 普通流水线->超级流水线 VLIW指令级并行技术 指令和数据cache,二级cache cmos工艺 处理速度
五级流水线
• IF: 从指令高速缓存I-cache获取下一条指令 • RD: 读取该指令的源寄存器域指定的cpu寄 存器的内容 • ALU:在一个时钟周期内完成算术或者逻辑 操作(浮点运算和整数乘除例外) • MEM:读写数据高速缓存D-cache中的内存 变量 • WB:将操作结果值写到寄存器堆中.
---- 没有条件码寄存器: MIPS的比较指令把结果存储到一个通用寄存器, 条件跳转则测 试这个通用寄存器. 这能带来的一个好处是: 两个连续的比较操作可以没有依赖关系,因 为它们可以使用不同的通用寄存器来来存储比较结果.Biblioteka 寄存器约定寻址方式和内存操作
--- 内存访问只有load /store 两个指令: ALU不容许访问内存, 这样可 以保持pipe line的简单(从而更有效率).
异常和中断
• MIPS把通常意义上的exception,interrupt,trap, system call 这些事件统称为exception,并采用统一的机制进行处理.从 性质上来看,这些事件可以分成几个种类. --- 外部事件 就是中断以及不可屏蔽的中断 --- 内存地址转换异常 就是TLB相关的. --- Other unusual program conditions for the kernel to fix: 这个分类比较模糊,典型的如浮点指令模拟. --- Program or hardware-detected errors :比如执行不存 在的指令,执行特权指令等. --- Data integrity problems: 奇偶校验或者ECC校验错误 --- System calls and traps: 系统调用,断点指令
---Preparing to return 恢复保存的运行环境,如寄存器,CPU状态.
---Returning from an exception 如前面曾经讨论过的那样,返回victim和恢复CPU状态到user level(一般就是user level了) 必须同时完成, MIPS提供eret来返回到EPC记录的地址.早期的MIPS比较负责需要更多 的设置,并利用branch的delay slot执行一个rfe指令来做这个事情.
TLB
• TLB的操作通过EntryHi, EntryLo0-1, PageMask来实现,以及其他一些辅助寄存 器. --- EntryLo0-1: CP number 2-3 --- PageMask: CP number 5 --- EntryHI: CP number 10
• TLB Key: ASID + Virtual Address
Precise Exceptions
• Precise Exceptions是指在任何异常中我们 都指出一条指 令(victim),在这条指令前的任 何指令(sequential model of execution)都已 经执行完成,在这条指令之后的指令,你可以 当他们没有执行过(换句话说,就像没有执行 过一样). 在实现了:Precise Exceptions的 CPU上,你可以放心的忽略这个CPU的时序 问题(pipeline).