緊緻記憶體是指片上快速儲存區,與片上快取具有同等的效能,但因為程式可完全控制緊緻記憶體,因而比統計復用的快取有更好的可**性。這是arm5te引入的特性,目的是通過這一快速的儲存區,一方面提高某些關鍵**(如中斷處理函式)的效能,另方面使儲存訪問延遲保持一致,這是實時性應用所要求的。arm6對tcm操作做了進一步的規範。
tcm的應用領域:可**的實時處理(中斷處理)、避免快取分析(加密演算法)、或單純的效能提高(處理器側編譯碼)等。
如同快取的哈佛結構,指令tcm和資料tcm是分開的。tcm有兩種使用方式:作為快快取使用,和作為本地記憶體使用。
本地記憶體
這時,tcm被用作更快速的記憶體,如同一般的ram。因為指令段有時也是資料訪問的物件,指令tcm實際上是指令資料一體化tcm。對tcm寫操作後和後續對此寫操作的依賴指令之間必須跟乙個阻塞操作。
快快取(smartcache)
tcm可以配置成當作外部ram的快取使用,對應的外部ram也要設定可快取標誌。如果被快取的外部ram可以由多處理器共享,那麼tcm是否與共享資料保持一致並沒有規定,而由具體實現廠家決定。
tcm與快取的內容不會自動保持一致,這意味著tcm對映到的記憶體區域必須是不快取的區域。如果乙個位址同時落在快取和tcm內,那麼訪問這一位址的結果是不能**的。另乙個限制是各個tcm必須要配置成不相交的。
tcm的配置
通過cp15的0、1、9號暫存器進行:
0號暫存器
讀cp15的0號暫存器,opcode2為2:
mrc p15, 0, rd, c0, c0, 2
返回tcm狀態暫存器的內容,其中,16-18位代表資料tcm個數,0-3代表指令tcm個數。
1號暫存器
arm6之前,1號暫存器的16位和18位用於使能資料tcm和指令tcm(arm946,arm966),arm6因為可以使用9號暫存器控制每一塊tcm的使能狀態,所以1號暫存器的這兩個位就過時了,應該置1。
9號暫存器
每個tcm都有乙個tcm區域暫存器,設定這個暫存器就可以設定tcm的基址和大小。在設定tcm區域暫存器前,需要設定tcm選擇暫存器。
arm instructiontcm region register
mrc/mcr p15, 0, rd, c9, c1, 0 data tcm region register
mrc/mcr p15, 0, rd, c9, c1, 1 instruction/unified tcm region register
mrc/mcr p15, 0, rd, c9, c2, 0 tcm selection register
tcm區域暫存器的結構:
base address (physical address)[31-12] sbz/unp[11-7] size[6-2] sc[1] en[0]
其中:en位是使能位,置1時使能此tcm;
sc位置位表示此tcm被用作快快取(smartcache),清零表示本地記憶體;
size欄位是唯讀的,含義如下:
size memory size memory注意tcm區域暫存器配置出來的各個tcm塊不能相交,否則後果不可**(會損壞硬體?)。filed size field size
0b00000 0k 0b01101 4m
0b00011 4k 0b01110 8m
0b00100 8k 0b01111 16m
0b00101 16k 0b10000 32m
0b00110 32k 0b10001 64m
0b00111 64k 0b10010 128m
0b01000 128k 0b10011 256m
0b01001 256k 0b10100 512m
0b01010 512k 0b10101 1g
0b01011 1m 0b10110 2g
0b01100 2m 0b10111 4g
發帖者 gnunu
對一致性雜湊的理解
前提準備 什麼是雜湊演算法?以我自己的理解,雜湊演算法就是運用雜湊函式 即反映變數關係的數學公式 來解決事物之間對應關係的方法。雜湊演算法產生的背景原因?舉個例子來說。想象一下我們現在有100億本書 分別標記為book0 book10 10 1 卻只有1億個櫃子 分別標記為cupboard0 cup...
對ARM處理器的記憶體對齊問題 譯)
origin 介紹可以對齊或不對齊的記憶體訪問。對齊的記憶體訪問發生時的資料都位於其自然大小邊界。例如,如果該資料型別的大小是4個位元組,那麼它屬於被4整除的記憶體位址是位於其自然大小邊界。未對齊的記憶體訪問發生在所有其他情況下 在上面的例子中,記憶體位址時,是不能被4整除 arm處理器的設計有效地...
對一致性hash演算法的理解
首先說明其用途,目前主要用在分布式快取中。為什麼使用一致性hash 假設有n個快取伺服器,普通的快取策略是hash obj n,當其中乙個伺服器掛掉,或者伺服器不夠而需要新增伺服器時,快取策略需要改變成hash onj n 1 或 n 1 這也就意味著所有的快取全部失效,那所有的訪問都會到後台伺服器...