Bus memory attribute


根據程序的局部性原理,在主存與CPU之間設置的一個高速的容量較小的存儲器,叫做cache。

ARM cache架構由cache存儲器和寫緩沖器(write-buffer)組成。其中Write_buffer是cache按照FIFO原則向主存寫的緩沖器。

cache可以分為Dcache,Icache。分別cache data和 instruction。其中Dcache必須在MMU開啟后才能在CP15寄存器中使能,Icache在MMU未使能的情

                                             況下,也是可以使能的。

在armv6版本之前的memory attribute:

一般會在使能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可以先返回ack,之后再寫向final distination,只用在write操作。

arcache/awcache[1]表示,cacheable信號,對寫操作,表示可以有不同的write megered together。

                                                            對讀操作,表示該地址的數據可以pre-fetched,可被用在多個read transaction中。

arcache/awcache[2]表示,Read Allocate信號,如果一個transfer 讀操作cache miss,它會allocated后再讀。

arcache/awcache[3]表示,Write Allocate信號,如果一個write transfer cache miss,它會allocated,后讀外存,在write-back方式的寫回。

      這兩bit的信號在AXI3中主要是Cache的互聯中,會進行設置,通過smmu出來之后的transaction,之間簡單的加載外存的值。

 

在armv7及其之后的版本,Bus AXI4中的memory attribute:

主要的基點改動,

  1) AxCache[1]表示modified的意思;

  2) AXI4對non-modified的transaction有order的限制;

  3) RA,WA變為了對memory attribute的編碼。

 

modifiable transaction表示,

  1)一個大的transaction,可以被分割為多個小的transaction;

  2)多個小的transaction,可以被merge為一個大的transaction;

  3)一個read operation,可以讀取超過需要的數據,prefetch數據,這樣之后可能可以少發送一些read transaction;

  4)一個write operation,也可以訪問一個更大的地址空間,不合理的地址對應的數據,使用strb信號關閉;

  5)所以一個transaction,從源到目的地,AxAddr,AxSize,AxLen,AxBurst信號的值,都可以改動。

對於non-modifiable transaction,這些信號在傳輸過程中,是不能被修改的,transaction也就是不能被merge和split

  但是AxCache信號,從Bufferable轉換為Non-Bufferable是可以的,

  一個burst length大於16的transaction,也可以被split為幾個小的burst length的transaction。這是個例外可以改length的地方


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM