arm的多级流水线技术和和存储管理单元mmu

流水线概念

流水线的概念与原理
处理器按照一系列步骤来执行每一条指令,典型的步骤如下:
(1)从存储器读取指令(fetch)。
(2)译码以鉴别它属于哪一条指令(decode)。
(3)从指令中提取指令的操作数(这些操作数往往存在于寄存器reg中)。
(4)将操作数进行组合以得到结果或存储器地址(ALU)。
(5)如果需要,则访问存储器以存储数据(mem)。
(6)将结果写回到寄存器堆
并不是所有的指令都需要上述每一个步骤,但是,多数指令需要其中的多个步骤。这些步骤往往使用不同的硬件功能,如ALU可能只在第(4)步中用到。因此,如果一条指令不是在前一条指令结束之前就开始,那么在每一步骤内处理器只有少部分的硬件在使用。 有一种方法可以明显改善硬件资源的使用率和处理器的吞吐量,这就是在当前一条指令结束之前就开始执行下一条指令,即通常所说的流水线(Pipeline)技术
流水线是RISC处理器执行指令时采用的机制。使用流水线技术,可在取下一条指令的同时译码和执行其他指令,从而加快执行的速度。可以把流水线看做是汽车生产线,每个阶段只完成专门的处理器任务。
采用上述操作顺序,处理器可以这样来组织:当一条指令刚刚执行完步骤(1)并转向步骤(2)时,下一条指令就开始执行步骤(1)。从原理上说,这样的流水线应该比没有重叠的指令执行快6倍,但由于硬件结构本身的一些限制,实际情况会比理想状态差一些。

3级流水线ARM组织
到ARM7为止的ARM处理器使用简单的3级流水线,它包括下列流水线级:
● 取指令(fetch):从寄存器装载一条指令。
● 译码(decode):识别被执行的指令,并为下一个周期准备数据通路的控制信号。在这一级,指令占有译码逻辑,不占用数据通路。
● 执行(excute):处理指令并将结果写回寄存器
当处理器执行简单的数据处理指令时,流水线使得平均每个时钟周期能完成1条指令。但1条指令需要3个时钟周期来完成,因此,有3个时钟周期的延时(latency),但吞吐率(throughput)是每个周期1条指令。
在这里插入图片描述
正因为三级流水线技术,arm的程序计数器pc=正在执行的指令地址+8,即正在执行指令的下两条指令

mmu

在创建多任务嵌入式系统时,最好用一个简单的方式来编写、装载及运行各自独立的任务。目前大多数的嵌入式系统不再使用自己定制的控制系统,而使用操作系统来简化这个过程。较高级的操作系统采用基于硬件的存储管理单元(MMU)来实现上述操作。
MMU提供的一个关键服务是使各个任务作为各自独立的程序在自己的私有存储空间中运行。在带MMU的操作系统控制下,运行的任务无须知道其他与之无关的任务的存储需求情况,这就简化了各个任务的设计。 MMU提供了一些资源以允许使用虚拟存储器(将系统物理存储器重新编址,可将其看成一个独立于系统物理存储器的存储空间)。MMU作为转换器,将程序和数据的虚拟地址(编译时的链接地址)转换成实际的物理地址,即在物理主存中的地址。这个转换过程允许运行的多个程序使用相同的虚拟地址,而各自存储在物理存储器的不同位置。 这样存储器就有两种类型的地址:虚拟地址和物理地址。虚拟地址由编译器和连接器在定位程序时分配;物理地址用来访问实际的主存硬件模块(物理上程序存在的区域)
在这里插入图片描述

分页时存储管理:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

地址转化过程:
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值