ARM体系结构及内核回顾总结(二)

1.2 存储体系结构

CPU作为整个系统的核心,其功能便是完成软件所指定的工作。具体到其内部,便是执行一条条的指令。那么指令从何而来?

CPU所执行的指令大致可分为三类:指令流控制,数据存取,数据处理。另外还有其它的一些设计CPU内功能的,譬如WFI指令之类。这里,其实最重要的当然还是数据的处理,包括存取与运算。它才是CPU的核心工作。那么数据从何而来。

CPU的核心部分,即前一节所说的integer core部分,其内部有存储作用的只有各种功能的寄存器组,而通用寄存器组,除去有特殊有特殊作用的寄存器外,可作存储数据用的也就r0-r12功十三个寄存器,自然是不足以放下所有数据及指令的。因此,CPU运行所需的指令和数据均是从外部存储空间取得,那么数据和指令是直接从外部存储空间比如DDR(排除更低一级的存储,比如nand flash)直接到核内部执行单元吗?

当然不是。

CPU包括ARM核及x86核均采用了分层式的存储体系结构。从最靠近核的位置往外,呈金字塔形。这样做的原因在于CPU的执行速度通常远远高于DDR的存取速度,因此在CPU与DDR之间添加几层RAM,从CPU往外,各级RAM的访问速度逐级下降。

以一个简单的三级存储结构为例,就比如ARM1176+L2Cache+ddr的结构。其L1存储结构位于核内,如上一节中所示,其包括ITCM/DTCM,ICACHE/DCACHE。其中TCM是值得稍稍一提的,它是与Cache平行的结构,即在二者均工作的时候,若CPU所需的数据或指令在Cache中,则通常不会在TCM中。而且TCM与cache的区别还在于,TCM通常就是该条存储线的中断,即TCM没有更下一级的存储结构,而Cache则不然。虽然二者都是为了提高CPU的执行效率而设置的,但是TCM具有确定性,即TCM所拥有的数据完全属于TCM,是确定的,而Cache则不然。Cache是整条数据流或者整个存储结构的的中间层,对于软件代码或者对于CPU核心而言,它其实是透明的。即Cache不占用独立地址空间,它的作用是将L2传入或者传出到L2中的数据缓存在其ram中,在CPU需要的时候直接从其RAM中取出。而L2Cache的功能与L1Cache一致,同样是缓存的功能,其RAM大小通常会大于L1Cache,而延迟也会大于L1Cache。另外还有一点区别在于,通常它的存储是不区分指令和数据的(ARM自家的L2Cache控制器PL310内部其实对指令和数据是有区分的,其硬件总线上有区别),即采用的冯·洛伊曼结构。而如L1Cache那样区分Instruction Cache与Data cache的则为哈佛结构,简单而言,该种结构能具有更好的执行效率,两种结构的具体优劣网上有无数非常好的讲解,此处就不详述了。而L3 Memory即为DDR,运行所需的数据和指令最终都是存储在该位置,在DDR中就完全不区分数据和指令了。

而对于这种存储结构,我们通常还需要一个硬件单元来进行管理。ARM中进行内存管理的单元就是MMU或者MPU。前者用于虚拟内存体系,相对复杂,后者用于物理内存体系,要简单很多。这二者的作用主要就是对地址空间的访问属性进行管理,譬如能否访问以及能否cache能否buffer等。

另外,不同的处理器(ARM处理器),不同的体系,内存体系差异还是较大的,比如A9就没有ITCM和DTCM,M0作为微控制器甚至没有cache结构,但是其实最终也逃不出这个框架。无非只是在存储体系的各个层级有所删改而已。

转载于:https://www.cnblogs.com/iambobor/p/3676627.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值