新聞中心

        ARM中的CACHE機制

        作者: 時間:2016-11-09 來源:網(wǎng)絡(luò) 收藏
        ARMcache架構(gòu)由cache存儲器和寫緩沖器(write-buffer)組成,其中寫緩沖器是CACHE按照FIFO原則向主存寫的緩沖處理器。下圖是ARMV5核的CACHE位置

        本文引用地址:http://www.104case.com/article/201611/317849.htm

        Cache位于MMU前面靠近CPU稱為邏輯CACHE又叫虛擬Cache。CPU可以直接訪問CACHE的數(shù)據(jù),而ARM11(ARMV6)的結(jié)構(gòu)是CACHE在MMU后面CPU訪問CACHE要通過MMU地址轉(zhuǎn)換

        在DM6446的core用的是哈佛結(jié)構(gòu),即把CACHE分為8K的D-CACHE(數(shù)據(jù)CACHE)和16K的I-cache(指令CACHE)

        一個完整的CACHE分為CACHE控制器和CACHE存儲器

        見下圖:

        DavinciDM6446D-cache行應(yīng)為512行,cache存儲器主要分為三個部分:目錄存儲段(driectory-story),狀態(tài)信息段(statusinformation)和數(shù)據(jù)項段(datasection)每一行cache都包括這三部分。Cache用目錄存儲段來存儲主存的地址,數(shù)據(jù)項段存放的是主存的數(shù)據(jù),在cache中用狀態(tài)信息段來記錄狀態(tài)信息,其中v表示有效位,d表示臟位,有效位記錄當前cache行是活動的,cache行的數(shù)據(jù)和主存中的數(shù)據(jù)是一致的,處理器可以讀取。臟位則表示cache行的數(shù)據(jù)和主存中的數(shù)據(jù)不一致。

        在讀寫請求到達存儲器前會被CACHE捕獲,cache存儲器將該請求分成三部分標簽,組索引和數(shù)據(jù)索引域,cache通過組索引域確定可能包含地址和數(shù)據(jù)cache的行,cache存儲器檢查匹配的CACHE行的狀態(tài)標簽,如果是V表示(cachehit)命中,否則cache失效(cachemiss)在cache失效時從主存吧cache行考到CACHE存儲器

        主存中的部分內(nèi)容存放在cache中的最簡單方式是直接映射,在一個直接映射中,主存的地址唯一對應(yīng)cache行,因為主存容量很大所以主存的很多地址映射到同一個cache行

        見下圖:

        在DM6446中內(nèi)存為128M(bootargs設(shè)為128M)8K的D-CACHE則128×1024/8=16384映射一個cache行。由于cache的速度大大大于低速的主存速度,因此需要寫緩沖器。

        Cache的寫策略分為直寫策略和回寫策略。同時向cache行和相應(yīng)的主存位置寫數(shù)據(jù),同時更新這兩個地方的數(shù)據(jù)的方法稱為直寫策略(writethrough),把數(shù)據(jù)寫入cache行,不寫入主存的或者只有當cache被替換時或清理cache行時才寫入主存的策略稱為回寫策略(writeback)。采用回寫策略時,當處理器cache命中,只向cache存儲器寫數(shù)據(jù),不寫入主存,主存里的數(shù)據(jù)就和cache里不一致,cache里的數(shù)據(jù)是最新的,主存里的數(shù)據(jù)是早前的。這就用cache存儲器信息狀態(tài)標志位了,當向cache存儲器里某行寫數(shù)據(jù)時,置相應(yīng)行的信息標志臟位為1,那么主控制器下次訪問cache存儲器就知道cache里有主存沒有的數(shù)據(jù)了,把數(shù)據(jù)寫回到主存中去。

        當一個cache訪問失效時,cache控制器必須從當前有效行中取出一個cache行存儲從主存中取到的信息,被選中替換的cache行稱為丟棄者,如果這個cache行中臟位為1則應(yīng)把該cache行中的數(shù)據(jù)回寫到主存中,而替換策略決定了那個cache行會被替換,在arm926ejs中ARM支持兩種策略:輪轉(zhuǎn)策略和偽隨機策略。輪轉(zhuǎn)策略就是取當前cache行的下一行,偽隨機策略是控制器隨機產(chǎn)生一個值。

        當cache失效時,ARM采取兩種方式分配cache行,一種是讀操作(read-allocate)還有一種是讀-寫分配策略(read-write-allocate),當cache未命中時對于讀操作策略,在對cache存儲器讀操作時才會分配cache行



        關(guān)鍵詞: ARMCACHE機

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 屯门区| 方山县| 逊克县| 凯里市| 宜昌市| 伊春市| 临泽县| 宁国市| 新兴县| 科技| 黎城县| 凌云县| 垫江县| 澄江县| 康乐县| 合水县| 涪陵区| 英山县| 安远县| 东台市| 安图县| 仲巴县| 通江县| 永定县| 平泉县| 辰溪县| 武强县| 平南县| 图木舒克市| 浙江省| 夏邑县| 乌拉特中旗| 巴里| 临夏县| 五常市| 江陵县| 钦州市| 柯坪县| 湾仔区| 蛟河市| 福鼎市|