国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

DSP指令Cache的設(shè)計(jì)與實(shí)現(xiàn)

2016-12-26 09:47湘潭大學(xué)物理與光電工程學(xué)院呂華智黃嵩人
電子世界 2016年21期
關(guān)鍵詞:表項(xiàng)存儲(chǔ)器內(nèi)存

湘潭大學(xué)物理與光電工程學(xué)院 呂華智 黃嵩人

DSP指令Cache的設(shè)計(jì)與實(shí)現(xiàn)

湘潭大學(xué)物理與光電工程學(xué)院 呂華智 黃嵩人

為提高DSP處理器的執(zhí)行效率,專門針對(duì)CPU指令處理速度與存儲(chǔ)器指令存取速度不匹配問(wèn)題,本文通過(guò)在CPU與主存儲(chǔ)器之間設(shè)計(jì)了一款指令Cache,從而有效解決了上述問(wèn)題。根據(jù)DSP四級(jí)流水線的特性,所設(shè)計(jì)的指令Cache采用直接映像機(jī)制;通過(guò)verilog實(shí)現(xiàn)指令Cache的編程,并使用ModelSim仿真軟件對(duì)指令Cache進(jìn)行了仿真驗(yàn)證,仿真結(jié)果表明指令Cache的效果符合預(yù)期。

DSP;指令Cache;Cache控制器

近年來(lái),在國(guó)家的大力扶持下,集成電路產(chǎn)業(yè)發(fā)展異常迅速, CPU的處理速度越來(lái)越快,集成度也越來(lái)越高,然而相對(duì)于微處理器而言,存儲(chǔ)器讀寫速度的提高卻相對(duì)比較緩慢,兩者之間的速度差距越來(lái)越大,以至于導(dǎo)致瓶頸問(wèn)題的產(chǎn)生,從而制約著系統(tǒng)整體性能的提高。在現(xiàn)代計(jì)算機(jī)體系結(jié)構(gòu)中,通常在CPU和主存儲(chǔ)器之間插入一個(gè)容量小而速度快的存儲(chǔ)器來(lái)滿足性能要求,這一存儲(chǔ)器被稱為高速緩存(Cache)。

1 指令Cache的設(shè)計(jì)與實(shí)現(xiàn)

1.1 Cache的工作原理

在Cache的存儲(chǔ)系統(tǒng)中,Cache和主存儲(chǔ)器之間一般是用塊來(lái)進(jìn)行信息交互的。因此,Cache和主存都會(huì)被分割成一些大小相同的塊,且塊的大小通常為2的冪次方字節(jié)。

當(dāng)CPU需要讀Cache里面的內(nèi)容時(shí),CPU會(huì)發(fā)出一個(gè)物理地址,這個(gè)物理地址被放到主存地址寄存器中。緊接著地址變換部件會(huì)將主存地址中的塊號(hào)B轉(zhuǎn)換成Cache的塊號(hào)b,并存儲(chǔ)到Cache地址寄存器中。與此同時(shí)將主存地址中的塊內(nèi)地址W直接作為Cache的塊內(nèi)地址w裝入到Cache地址寄存器中。如果轉(zhuǎn)換成功(稱為Hit),就用此Cache地址去尋址Cache_SRAM,并且將訪問(wèn)到的數(shù)據(jù)傳給CPU。反之,則稱為Cache Miss,CPU就直接訪問(wèn)主存儲(chǔ)器,將主存儲(chǔ)器的內(nèi)容傳給CPU,且同時(shí)將其復(fù)制到Cache_SRAM中。在拷貝的過(guò)程中如果發(fā)現(xiàn)Cache已經(jīng)滿了,那么就需要采取某種替換策略將一些不常用到的塊替換出來(lái),以此來(lái)裝入新調(diào)入的塊。由于程序具有局部性的特點(diǎn),當(dāng)發(fā)現(xiàn)Cache失效時(shí),我們就將失效內(nèi)容對(duì)應(yīng)的整個(gè)塊都裝入Cache中,從而減少Cache的失誤率。

1.2 指令Cache的基本結(jié)構(gòu)設(shè)計(jì)

Cache容量的大小與映射的方式存在著一定的關(guān)系,被稱為2:1 Cache的經(jīng)驗(yàn)規(guī)律,即容量為N的直接映射Cache與容量為N/2的二路組相聯(lián)Cache有著幾乎相同的缺失率[2]。其中強(qiáng)制性失效率并不會(huì)受Cache容量的影響,然而容量失效率則與Cache的容量成反比關(guān)系;同時(shí)強(qiáng)制失效和容量失效有一個(gè)共同點(diǎn),就是他們都不受相聯(lián)度的影響。如果Cache容量過(guò)大,就會(huì)導(dǎo)致Cache的命中時(shí)間過(guò)長(zhǎng),進(jìn)而會(huì)影響到CPU的執(zhí)行效率;沖突失效率是隨著Cache相聯(lián)度的增加而下降。但是并不是說(shuō)Cache的容量越大越好,當(dāng)達(dá)到一定容量的時(shí)候,如果再繼續(xù)增加Cache的塊大小,反而會(huì)導(dǎo)致Cache的命中率降低。

在綜合考慮了性能、功耗、面積等方面的因素,最終把指令Cache的容量大小設(shè)計(jì)為8KB,塊大小為16個(gè)字節(jié),采用直接映射。指令Cache主要由以下幾個(gè)模塊構(gòu)成:ICache_CTR控制模塊、I Cache_SRAM模塊、TAG_SRAM模塊,其中TAG_SRAM、ICache_ SRAM可以稱為數(shù)據(jù)部分,ICache可以稱為控制部分,在數(shù)據(jù)部分進(jìn)行查找操作,將查找結(jié)果(hit或miss)送到控制部分,由控制部分依據(jù)查找結(jié)果進(jìn)行下一步的操作。

由于直接映像是一種最簡(jiǎn)單,也是最直接的方法,所以在本款32位的DSP內(nèi)核中,指令Cache采用直接地址映像的方式。其直接映像就是指主存中的一個(gè)塊在Cache中具有唯一的位置。當(dāng)CPU訪問(wèn)該主存塊時(shí),利用塊索引查找對(duì)應(yīng)的目錄表項(xiàng),如果其中保存的標(biāo)識(shí)與主存塊Tag相同,且"Valid"位為1,則說(shuō)明該位置上的Cache塊即是所要找的塊。假設(shè)主存的塊號(hào)為I。Cache的塊號(hào)為J,則可按照一種循環(huán)分配的原則確定I、J之間的對(duì)應(yīng)關(guān)系:

J=I mode M

其中,M為Cache的塊數(shù)。

在本系統(tǒng)中,Tag表示存儲(chǔ)器的區(qū)號(hào),index表示塊索引,offset表示塊內(nèi)偏移,通過(guò)每塊中的offset就可以找到塊中的每一個(gè)word。

TAG_SRAM總共有512個(gè)目錄表項(xiàng),每個(gè)表項(xiàng)包含Tag位和Valid位,其中取物理地址的高19位作為Tag位。ICache_SRAM存儲(chǔ)的是指令Cache中的內(nèi)容,ICache_SRAM中的4個(gè)表項(xiàng)(每個(gè)表項(xiàng)是一個(gè)word,其中一個(gè)word包含4個(gè)Byte)與TAG_SRAM中的一個(gè)表項(xiàng)組成ICache目錄表中的一個(gè)line,比如:TAG_SRAM的第1個(gè)表項(xiàng)與ICache_ SRAM中位于4~7的word組成ICache目錄表的line1.當(dāng)要取指時(shí)需查找TAG_SRAM,利用要讀取指令地址的4~12位的值作為索引查找TAG_ SRAM,得到TAG_SRAM對(duì)應(yīng)的表項(xiàng),將該表項(xiàng)返回給ICache模塊,后者據(jù)此判斷ICache是否命中。指令Cache的基本結(jié)構(gòu)圖如圖1所示。

圖1 指令Cache的基本結(jié)構(gòu)圖

1.3 指令Cache的實(shí)現(xiàn)

將指令Cache結(jié)構(gòu)和Cache控制器進(jìn)行整合后,采用verilog編程來(lái)實(shí)現(xiàn)指令Cache。ICache控制器的主體是一個(gè)狀態(tài)機(jī),有三個(gè)狀態(tài):IDLE、IC_FETCH和IC_MISS。處理器復(fù)位的時(shí)候處于IDLE狀態(tài),當(dāng)需要取指時(shí)會(huì)進(jìn)入IC_FETCH狀態(tài),在此狀態(tài)下又分以下三種情況:①當(dāng)Cache命中時(shí),則直接從Cache取得指令返回給處理器②如果Cache未命中,則從內(nèi)存中讀取指令,且將指令讀入Cache中③如果指令所在的內(nèi)存塊被禁止,則同樣從相應(yīng)的內(nèi)存塊中讀取指令,并回到IDLE狀態(tài)。

而ICache的存儲(chǔ)體TAG_SRAM和ICache_SRAM直接用Memory Compiler生成。

2 指令Cache的仿真與驗(yàn)證

指令Cache的仿真在ModelSim中進(jìn)行,例化程序的機(jī)器碼由CCS運(yùn)行產(chǎn)生,再將機(jī)器碼導(dǎo)入存儲(chǔ)器中。在系統(tǒng)上電復(fù)位的時(shí)候,指令Cache未被使能,ICache_SRAM中還沒(méi)有數(shù)據(jù),所以在初始化Cache之前,CPU取指是需要從內(nèi)存中獲取,該指令在流水線執(zhí)行階段用了多個(gè)時(shí)鐘周期,仿真結(jié)果如圖2.當(dāng)Cache初始化完成之后,并且指令Cache被使能,此時(shí)CPU取指則可從Cache中直接獲取,此時(shí)在流水線執(zhí)行階段只占用一個(gè)時(shí)鐘周期。仿真結(jié)果如圖3所示。

猜你喜歡
表項(xiàng)存儲(chǔ)器內(nèi)存
一種改進(jìn)的TCAM路由表項(xiàng)管理算法及實(shí)現(xiàn)
靜態(tài)隨機(jī)存儲(chǔ)器在軌自檢算法
基于ARMA模型預(yù)測(cè)的交換機(jī)流表更新算法
筆記本內(nèi)存已經(jīng)在漲價(jià)了,但幅度不大,升級(jí)擴(kuò)容無(wú)須等待
“春夏秋冬”的內(nèi)存
SDN數(shù)據(jù)中心網(wǎng)絡(luò)基于流表項(xiàng)轉(zhuǎn)換的流表調(diào)度優(yōu)化
任意2~k點(diǎn)存儲(chǔ)器結(jié)構(gòu)傅里葉處理器
內(nèi)存搭配DDR4、DDR3L還是DDR3?
存儲(chǔ)器——安格爾(墨西哥)▲
交換機(jī)的FDB地址
漠河县| 兴义市| 陈巴尔虎旗| 始兴县| 宾阳县| 徐州市| 遵义县| 平山县| 南阳市| 岗巴县| 呼图壁县| 兴城市| 应城市| 昌都县| 河间市| 吕梁市| 塘沽区| 台北市| 叙永县| 阳西县| 湖州市| 隆林| 蕉岭县| 莱阳市| 南开区| 渭源县| 名山县| 靖安县| 乌审旗| 南漳县| 广西| 青州市| 姚安县| 涿鹿县| 淮滨县| 庆城县| 靖宇县| 梅河口市| 溧阳市| 偏关县| 华池县|