与MIPS体系结构相关的处理器知识

合集下载

7_1 MIPS CPU概述(CP0和MIPS CPU中断机制)

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指令五级流水CPU设计剖析

MIPS指令五级流水CPU设计剖析

MIPS指令五级流水CPU设计剖析MIPS指令五级流水CPU设计是一种高性能的处理器设计架构,它将指令的执行过程拆分为五个阶段,并且在每个阶段中可以同时处理多条指令,实现了指令级并行处理。

在这种设计中,分别是取指(Instruction Fetch)、译码(Instruction Decode)、执行(Execute)、访存(Memory Access)和写回(Write Back)这五个阶段。

在MIPS指令五级流水CPU设计中,首先是取指(Instruction Fetch)阶段,这是整个处理器开始处理一条指令的阶段。

在这个阶段,处理器从指令存储器中读取即将执行的指令,并将其送入流水线中。

这个阶段还会包括对指令地址的计算和异常处理的操作。

当一条指令流入流水线后,处理器就会进行下一个阶段的操作。

接下来是译码(Instruction Decode)阶段,这个阶段主要是将取到的指令进行解码,确定指令的操作类型和需要操作的寄存器等信息。

在这个阶段,会根据指令的不同分支到不同的功能单元中处理。

同时还会识别指令之间的数据相关性,以便在后续阶段进行相应的控制。

第三个阶段是执行(Execute)阶段,在这个阶段,CPU执行指令的操作,进行算数运算或逻辑运算,或者进行跳转等控制操作。

在这个阶段,CPU还将从寄存器文件中读取数据,并进行相应的运算。

这个阶段涉及到的计算量比较大,所以需要比较多的时钟周期来完成。

接下来是访存(Memory Access)阶段,这个阶段主要是处理访问数据内存的操作,比如从数据内存中读取数据,或将结果写入数据内存等。

在这个阶段,处理器还会涉及到访存相关的操作,比如缓存机制的处理等。

这个阶段的操作通常是比较高速的存储器操作。

最后是写回(Write Back)阶段,这个阶段是处理器的最后一个阶段,处理器将执行结果写回到寄存器文件中,或进行其他相关的操作。

这个阶段可以认为是指令执行的结束阶段,对前面四个阶段产生的结果进行最终的处理。

MIPS指令系统和汇编语言

MIPS指令系统和汇编语言

MIPS指令系统和汇编语言MIPS(Microprocessor without Interlocked Pipeline Stages)指令系统,是一种以RISC(Reduced Instruction Set Computer,精简指令集计算机)为基础的处理器架构。

作为一种广泛应用于嵌入式系统和计算机组成的指令集架构,MIPS指令系统以其简洁高效的特性而受到广泛关注和应用。

一、MIPS指令系统概述MIPS指令系统的设计目标之一是提高处理器的性能,并降低设计的复杂性。

它采用了统一的指令格式,包括操作码、源操作数以及目的操作数等字段,使得指令的译码和执行过程更加高效。

此外,MIPS的指令集还支持延迟槽、流水线和分支延迟等特性,以进一步提升指令执行的效率。

二、MIPS指令格式MIPS指令格式遵循统一的规则,包括三种基本类型的指令格式:R 型、I型和J型指令。

R型指令主要用于寄存器之间的操作,包括算术运算、逻辑运算等;I型指令用于立即数和寄存器之间的操作,涵盖了数据传输、分支跳转等功能;J型指令主要用于无条件跳转。

三、MIPS指令编码和寻址方式MIPS指令采用固定长度的指令编码格式,使得指令的解析和处理更加高效。

在寻址方面,MIPS支持多种寻址方式,包括立即寻址、寄存器寻址和间接寻址等。

这些灵活的寻址方式使得MIPS指令更加适用于不同的计算需求。

四、MIPS汇编语言MIPS汇编语言是一种用于编写MIPS指令的低级语言。

它是一种基于文本的表示形式,使用助记符来表示不同的指令和操作。

MIPS汇编语言具有简单易学的特性,更加接近底层硬件的工作原理,使得程序员可以更加精准地控制和优化程序的执行过程。

五、MIPS指令系统的应用由于MIPS指令系统的优越性能和灵活性,它被广泛应用于各种领域。

在嵌入式系统中,MIPS处理器可以实现高性能和低功耗的设计,广泛应用于智能手机、路由器、电视机等设备中。

在计算机组成和操作系统领域,MIPS指令系统被用于讲解和研究计算机的工作原理和底层机制。

MISP体系结构

MISP体系结构

MIPS 的基地址空间
MIPS 的基地址空间
kuseg:0x0000 0000到0x7FFF FFFF(2G大小)。这是用 户模式下可用的程序地址,要经过MMU(TLB)转换地址。 kseg0:0x8000 0000到0x9FFF FFFF(512MB)。其对应的 物理地址是0x0000 0000到0x1FFF FFFF。访问不需要通 过地址转换。无MMU时存放大多数的程序和数据,有 MMU时操作系统内核会存放于此。
MIPS 的寄存器
MIPS 的寄存器
用于保存异常处理函数的地址。 发生异常(中断)时, 这两个寄存器的值不会恢复。
用来存放子程序调用的返回地址。
MIPS 的寄存器
在MIPS 32/64位 CPU上,增加了浮点运算协处理器,同 时也增加了32个浮点寄存器,一般在汇编代码中成为$f0$f31。 在MIPS CPU中采用专用的整数乘除法部件。一般乘法要 用4-12个时钟周期,而除法要用20-80个,所以乘除部件 一般互锁,如果运算结束前就读取结果,会导致CPU等待 运算结束。而且,除运算时从来不检查除数是否为0。
MIPS 体系结构
Contents
1. MIPS 简介 2. MIPS 体系结构 3. MIPS 处理器控制 4. MIPS Cache 机制 5. MIPS 异常,中断和启动 6. MIPS 内存管理 & TLB
Contents
1. MIPS 简介 2. MIPS 体系结构 3. MIPS 处理器控制 4. MIPS Cache 机制 5. MIPS 异常,中断和启动 6. MIPS 内存管理 & TLB
执行后,t2的值为0xFFFF FFFE(-2),t3的值为 0x0000 00FE(254)。

MIPS指令多周期CPU设计

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为例)

无效虚地址(BadVaddr) 无效虚地址( )
保存引发异常的地址( 异常, 之外, 保存引发异常的地址(MMU异常,用户访问 异常 用户访问kuseg之外, 之外 地址未对齐)。 地址未对齐)。
- 11 -
CPU控制寄存器
Config Register
CM: 设为 表示主设备 检查器 设为1表示主设备 表示主设备/检查器 EC: 时钟分频 EP: 数据传输模式 SB: 片外二级缓存块的大小 SS: 控制片外二级缓存块指令和数据空间统一还是分立 SC: 二级缓存使能 SM: 多处理器缓存一致性配置 BE: CPU尾端 尾端 EM: 数据检验模式,1:ECC;0:奇偶校验 数据检验模式, : ; : IC/DC: 一级指令 数据缓存大小 一级指令/数据缓存大小
- 26 -
异常处理
软件中实现中断优先级
1. 软件中每个中断源都属于某个优先等级(IPL); 软件中每个中断源都属于某个优先等级( ); 2. CPU运行在最低优先级,任何中断允许; 运行在最低优先级, 运行在最低优先级 任何中断允许; 3. CPU运行在最高优先级,任何中断禁止; 运行在最高优先级, 运行在最高优先级 任何中断禁止; 4. 任意 任意IPL上,分配到该级和更低优先级的中断被禁止,而 上 分配到该级和更低优先级的中断被禁止, 更高优先级的使能,同一级的不同中断先来先服务; 更高优先级的使能,同一级的不同中断先来先服务; 5. IPL和被运行代码相关:任意一段代码以固定 和被运行代码相关: 执行; 和被运行代码相关 任意一段代码以固定IPL执行; 执行 6. 如果不在最低优先级并且没有更高优先级中断活跃时,中 如果不在最低优先级并且没有更高优先级中断活跃时, 断返回被中断的代码,如果在最低优先级可能会进行任 断返回被中断的代码, 务调度来实现CPU共享。 共享。 务调度来实现 共享

MIPS芯片架构说明

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体系结构剖析,编程与实践)第4章 MIPS 异常和中断处理文库

(MIPS体系结构剖析,编程与实践)第4章 MIPS 异常和中断处理文库

(MIPS体系结构剖析,编程与实践)第4章 MIPS 异常和中断处理文库.txt小时候觉得父亲不简单,后来觉得自己不简单,再后来觉得自己孩子不简单。

越是想知道自己是不是忘记的时候,反而记得越清楚。

第四章 MIPS 异常和中断处理MIPS 异常和中断处理(Exception and Interrupt handling)任何一个CPU都要提供一个详细的异常和中断处理机制。

一个软件系统,如操作系统,就是一个时序逻辑系统,通过时钟,外部事件来驱动整个预先定义好的逻辑行为。

这也是为什么当写一个操作系统时如何定义时间的计算是非常重要的原因。

大家都非常清楚UNIX提供了一整套系统调用(System Call)。

系统调用其实就是一段EXCEPTION处理程序。

我们可能要问:为什么CPU要提供Excpetion 和 Interrupt Handling呢?*处理illegal behavior, 例如,TLB Fault, or, we say, the Page fault; Cache Error;* Provide an approach for accessing priviledged resources, for example, CP0 registers. As we know, for user level tasks/processes, they are runningwith the User Mode priviledge and are prohibilited to directly control CPO. CPU need provide a mechanism for them to trap to kernel mode and then safely manipulate resources that are only availablewhen CPU runs in kernel mode.* Provide handling for external/internal interrupts. For instance, the timer interrupts and watch dog exceptions. Those two interrupt/exceptions are very important for an embedded system applicances.Now let's get back to how MIPS supports its exception and interrupt handling.For simplicty, all information below will be based on R7K CPU, which is derived from the R4k family.* The first thing for understanding MIPS exception handling is: MIPS adopts **Precise Exceptions** mechanisms. What that means? Here is the explaination from the book of "See MIPS Run": "In a precise-exception CPU, on any exception we get pointed at one instruction(the exception victim). All instructions preceding the exception victim in executionsequence are complete; any work done on the victim and on any subsequent instructions (BNN NOTE: pipeline effects) has no side effects that the software need worry about. The software that handles exceptions can ignore all the timing effects of the CPU's implementations"上面的意思其实很简单:在发生EXCEPTION之前的一切计算行为会**FINISH**。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
它采用精简指令系统计算结构(RISC)来设 计芯片。和英特尔采用的复杂指令系统计算 结构(CISC)相比,RISC具有设计更简单、设 计周期更短等优点。
MIPS的RISC体系结构和CISC体系结构有所 不同,值得一提的是正是一些不同的处理, 导致我们在编码中引起了一些问题。
/
/
工作中与处理器有关的问题 之 符号位
符号位的问题可以肯定的是这个和mips的一个 很重要的特性有关:mips只能处理32位的数据。 也即如果对两个char相加,mips需要把两个char填 充成两个32位的数,并对符号位进行处理,以保 存溢出等特性,然后再相加。
对于一名驱动工程师来说应该对处理器(包括 诸如交换芯片之类的)、FPGA和flash芯片等硬件 知识有所了解才行。
/
是否必要了解MIPS处理器知识 二
但是由于我们在开发过程中不会牵扯具体的 bsp开发(起码大部分不会),因此硬件知识的了 解并不是必须的。
但是从我个人观点看,硬件能够帮我们更好的 理解软件,因为硬件才是我们软件的最直接的用 户,毕竟我们写的程序是给硬件执行的。
都是在栈内分配空间。所以如果递归调用层 次过深的话,就有可能栈溢出。不要在递归 函数内申请大的空间。
/
工作中与处理器有关的问题 之 编译&反汇编
这个章节一般不会用到,但是如果能理解对提高问题处理能力还是 有帮助的。这个是编译模拟器的.a时的截图:
红色部分大家应该能注意到这个名称包含了一个“pentium”,实
/
工作中与处理器有关的问题 之 字节对齐 二
为什么要字节对齐? 因为某些处理器不允许16位和32位的数据在内
存中任意排放。 通常32位的处理器通过总线访问(包括读和写
)内存数据。每个总线访问周期可以访问32位内 存数据。内存数据是以8位的字节为单位存放的。 假如一个32位的数据没有在4字节整除的内存地址 处存放,那么处理器就需要2个总线周期对其进行 访问。通过合理的内存对齐可以提高访问效率。
/
工作中与处理器有关的问题 之 字节序 二
说到字节序,一定要区分主机序和网络序。 网络序:TCP/IP各层协议将字节序定义为BigEndian,因此TCP/IP协议中使用的字节序通常称之 为网络字节序。 主机序:它遵循Little-Endian规则。所以当两台 主机之间要通过TCP/IP协议进行通信的时候就需要 调用相应的函数进行主机序(Little-Endian)和网 络序(Big-Endian)的转换。
而我们为什么要会反汇编。我在2126EA-MA(B)这款MIPS 芯片的设备中深刻体会了一把,也吃到了不少甜头。个人 觉得反汇编有两个作用:1、debug。有些看代码很难找的 bug在反汇编下很容易“原形毕露”。2、更好的理解你的 代码。反汇编出来的东西更接近指令,对比阅读能让你更 好的理解同一个功能,用不同的代码写会有什么不同的指 令体现,什么方式效率更高。这也是我上面提到的大家最 好抽空学学汇编语言,有助于理解代码,更好更快的定位 问题。
际就是奔腾处理器的名称。从这个可以看出,编译器是直接和处理器 相关的,不同的处理器会有不同的编译器。不知道谁看过《疯狂的程 序员》,里面就提到一个汇编的问题,说懂得汇编的人有个好处,不 用等那些最新的CPU的编译器,因为厂商推出一款新的架构的处理器 的时候,有可能会先推出汇编编译程序,其他语言的编译器可能需要 过一阵子才能发布。之所以这样是因为不同的CPU的指令集是不一样 的,而汇编基本是和指令集挂钩的,因为汇编解析程序实现比较容易 ,而像C这种高级语言的解析则费劲的多。
工作中与处理器有关的问题 之 字节对齐 二
为什么要字节对齐?(续二) mips是定长指令的设计,每条指令都是32比特
(或许会有64的出现?)。 32位的指令长度也就意味着要传递一个32位的
地址起码需要两条指令(指令有若干位是操作码 )。因此如果在mips中如果需要实现不对齐的内 存访问,需要耗费更多的时间。于是mips干脆直 接不处理这种情况,遇到不对齐的直接error。
编译中大部分的错误提示都是语言性质的提示,处理器性质的提示 很少。。
/
工作中与处理器有关的问题 之 编译&反汇编
编译过程我们不用太多关注处理器的信息,那是编译器 的任务。但是反汇编的时候,如果需要理解反汇编出来的 代码,则必须要理解相关处理器的指令集。我认为应该多 少学习一下汇编代码。
/
工作中与处理器有关的问题 之 异常
不同的CPU对异常的定义是不一样的,比如这段代码: int *piTest = (int*)3; *piTest = 1;这段代码PPC能正常处理, MIPS则会抛出异常。另外还有一些修改data段的操作,在 PPC上是没问题的,X86上会异常。
在不对齐的情况下,有些处理器会通过组合指 令的方式达到目标。比如需要从地址1处取一个 unsigned int类型数据,可以先从0处取4字节,然 后从4处取4字节,再进行移位相或获得需要的数 。如果是一个int类型,则更加麻烦,因为移位的 时候需要处理符号位,对效率会有很大影响。
/
这个也要求大家在定义数据的时候,需要考虑 好,这个数据的特性,是有符号的还是无符号的
/
工作中与处理器有关的问题 之 堆栈溢出 一
从物理上讲,堆栈就是一段连续分配的内存空 间。在一个程序中,会声明各种变量。静态全局 变量是位于数据段并且在程序开始运行的时候被 加载。而程序的动态的局部变量则分配在堆栈里 面。
与MIPS体系结构相关的 处理器知识
软件五部技术三组
oomm./com
大纲 ➢是否必要了解MIPS处理器知识 ➢工作中与处理器有关的问题 ➢ISCOM2126EA-MA(B)中处理器相 关体现 ➢个人的一些理解 ➢问题讨论
/ 2
异常一般通过中断处理,当CPU断定产生了异常的时候 ,会产生一个中断,然后跳转到相应的中断向量去执行中 断处理。。
不同的CPU对异常的定义不一样,编码怎么办?按照最 严格的那个来。比如字节对齐,看起来较真了一点,但是 这个在那些容忍不对齐的设备上也是有好处的,可以提高 效率。而修改data段,本身就是一个不符合常理的操作。
/
工作中与处理器有关的问题 之 字节对齐 四
字节对齐的细节和编译器实现相关,但一般而 言,满足三个准则: 1) 结构体变量的首地址能够被其最宽基本类型成 员的大小所整除; 2) 结构体每个成员相对于结构体首地址的偏移量 (offset)都是成员大小的整数倍, 如有需要编译器会在成员之间加上填充字节( internal adding); 3) 结构体的总大小为结构体最宽基本类型成员大 小的整数倍,如有需要编译器会在最 末一个成员之后加上填充字节(trailing padding)
/
个人的一些理解 一
以下是个人的一些对处理器、编译器的理解后 总结的编程习惯: (一)不要有太多的条件分支。这个与处理器的 流水线技术有关。一条指令的执行一般会分成几 个步骤,比如取指、译指、执行指令等,很多处 理器有7-20个左右的步骤,每条指令都需要顺序 经过每个步骤。另外指令是需要依次执行的。以 三个步骤为例说明流水线技术。每个步骤都需要 特定的硬件模块执行,比如取指需要取指模块完 成,译指需要译指模块完成。假设每个步骤耗时 为t,如果处理器只有执行结束一条指令的所有步 骤之后才执行下一条指令,那么三条指令(A、B 、C)总共需要9t时间。如果采用流水线技术,那 么当A进入译指模块的时候,取指模块已经取出B
是否必要了解MIPS处理器知识 一
以前我们公司大多设备使用的都是PPC的处理器 ,而本次我们组最新准备发布的产品 ISCOM2126EA-MA(B)设备则使用的是MIPS的处 理器,由于体系结构的不同,在这次开发过程中 遇见了很多不同种类的问题,看似都是很小的问 题但对我们的设备却有着较大的影响,也考验了 一把我们的编码规范,我想先向大家介绍一下 MIPS这种处理器,给大家扫扫盲。
MIPS是世界上很流行的一种RISC处理器。MIPS 的意思是“无内部互锁流水级的微处理器 ”(Microprocessor without interlocked piped stages) ,其机制是尽量利用软件办法避免流水线中的数 据相关问题。
/
是否必要了解MIPS处理器知识 三
/
个人的一些理解 二
的指令了,当A进入执行阶段的时候,B进入译指 阶段,C进入取指阶段。这样下来三条指令只需花 费5t的时间,当指令很多的时候,每条指令花费 的时间应该是t。当然这个是理想情况,导致流水 线中断的有多个原因,比如数据依赖和条件分支 ,这里说一下条件分支。在条件分支下,A的下一 条指令可能不是B而是E。如果A执行完成之后,发 现下一条指令是E而不是B,这个时候,B已经完成 了译指,C完成了取指。但是不但白做了,还增加 了额外的负担:清空流水线,这个对效率的影响 是很明显的。因此对于那些对效率要求很高的算
/
工作中与处理器有关的问题 之 字节对齐 一
编程规范里面提到过数据结构设计需要考虑字 节对齐。
所谓字节对齐,就是要求某个数据在内存中的 起始位置必须是该数据类型的对齐大小的整数倍 。基本数据类型(char,int,long等)的对齐大小 等同于类型的大小,结构体的对齐大小等同于其 各成员变量的对齐大小的最大小必须 是对齐大小的整数倍。
工作中与处理器有关的问题
经常遇到的典型问题或者说我能想到的有以下这些 :
➢ 字节序 ➢ 字节对齐 ➢ 异常 ➢ 符号位问题 ➢ 堆栈溢出 ➢ 空指针 ➢ 编译&反汇编
/
工作中与处理器有关的问题 之 字节序 一
字节序问题:大端法小端法 其实说白了就是一个顺序问题。现代的计算机 系统一般采用字节(Octet, 8 bit Byte)作为逻辑寻址 单位。当物理单位的长度大于1个字节时,就要区 分字节顺序。常见的字节顺序有两种:Big Endian 和Little Endian. Intel X86平台采用Little Endian,而 PowerPC、ARM、MIPS处理器则采用了Big Endian 于是问题来了,一个两字节的数0XABCD,要 存储在0-1这两个字节中,那么0中是存AB还是CD ,PPC、ARM和MIPS等选择了AB,X86选择了CD.
相关文档
最新文档