码迷,mamicode.com
首页 > 系统相关 > 详细

Cache

时间:2015-07-17 20:25:45      阅读:701      评论:0      收藏:0      [点我收藏+]

标签:

根据程序的局部性原理,在主存与CPU之间设置的一个高速的容量较小的存储器,叫做cache。

ARM cache架构由cache存储器和写缓冲器(write-buffer)组成。其中Write_buffer是cache按照FIFO原则向主存写的缓冲器。

cache可以分为Dcache,Icache。分别cache data和 instruction。其中Dcache必须在MMU开启后才能在CP15寄存器中使能,Icache在MMU未使能的情

                                             况下,也是可以使能的。

一般会在使能MMU的过程中,规定MMU page table的definition。其中20bit表示每一page的memory attributes。12位表示每一page的基地址。一共32

                                    位。每一page都会设置两个属性,cacheable,bufferable。其中每一page的memory attribute有

                                    strong ordered,

                                    Outer and inner write-back, write allocate,

                                    Outer and inner write-through, no write allocate,

                                    Outer and inner write-through, no write allocate,shared Device.

                                    Shared Device.

                                    non-cacheable.

 

MMU_CACHE:

                            .word            0x5000_0000|strong ordered;(其中strong order由20bit来表示)

其中arm的基本memory attribute有四种:

                                    NCNB(Non-cacheable,non-bufferable,Strongly-ordered),

                                    NCB(Non-cacheable,bufferable,Device),

                                    Write-Through Cacheable bufferable,

                                    Write-Back Cacheable bufferable

Write-Through方式:CPU向cache写入数据时,同时也向memory写一份,使得cache和memory的数据保持一致,缺点是每次都要访问memory,速度较

                                    慢。

Write-Back方式:CPU更新cache时,只是把更新的cache区标记一下,并不同步更新memory,只有在cache区被新进入的数据取代时,才更新memory。

                                    会引起memory和cache的一致性问题。

Write-allocate方式:在cache miss的情况下,先对存储器进行read操作,将操作数读入cache,在进行读写,这样便cache hit。 

 

Bufferable与non-bufferable的区别,主要表现在ack信号的返回上,bufferable--将结果写入buffer(某个component)便返回ack,

                                                                                         non-bufferable等到结果写入外存,返回ack。

 

在AMBA3---AXI中,有四位的arcache/awcache信号,来表示transaction的这种属性。

arcache/awcache[0]表示,bufferable信号,表示interconnect或其他compnonent可以delay这个transaction。一般只用在write操作。

arcache/awcache[1]表示,cacheable信号,对写操作,表示可以有不同的write megered together(write back方式)。

                                                            对读操作,表示地址数据pre-fetched,或者需要多次读(容易cache hit)。

arcache/awcache[2]表示,Read Allocate信号,如果一个transfer 读操作cache miss,它会allocated后再读。

arcache/awcache[3]表示,Write Allocate信号,如果一个write transfer cache miss,它会allocated,后读外存,在write-back方式的写回。

Cache

标签:

原文地址:http://www.cnblogs.com/-9-8/p/4655243.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!