專利名稱:一種用于嵌入式系統(tǒng)的二級(jí)緩存控制方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式系統(tǒng)的設(shè)計(jì)領(lǐng)域,具體說(shuō)是一種用于嵌入式系統(tǒng)的二級(jí)緩存 控制方法及裝置??蓱?yīng)用于高性能嵌入式系統(tǒng)芯片設(shè)計(jì)中數(shù)據(jù)存儲(chǔ)提高效率的優(yōu)化。
背景技術(shù):
隨著嵌入式微處理器速度的提高,嵌入式微處理器的性能越來(lái)越受到片外動(dòng)態(tài) 隨機(jī)存儲(chǔ)器數(shù)據(jù)訪問(wèn)操作的影響,所述片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器可以是內(nèi)存,例如可以為 DDR2內(nèi)存,二級(jí)緩存(L2 CACHE)有效地解決了嵌入式微處理器和片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器 之間的速度匹配問(wèn)題。相對(duì)于嵌入式微處理器頻率以每年超過(guò)40%的速度提高,片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器 的速度每年僅提高11%左右??梢灶A(yù)見(jiàn),隨著嵌入式微處理器與片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器之 間的速度差異越來(lái)越大,二級(jí)緩存的設(shè)計(jì)將成為決定嵌入式系統(tǒng)整體性能的關(guān)鍵因素之
ο但傳統(tǒng)的二級(jí)緩存僅由單一的替換算法來(lái)預(yù)測(cè)訪問(wèn)的局部性,并未充分考慮嵌 入式系統(tǒng)的自身特點(diǎn)(比如連續(xù)性等),從而使得嵌入式系統(tǒng)中的二級(jí)緩存存在利用率 低、控制性差的問(wèn)題,導(dǎo)致整個(gè)嵌入式系統(tǒng)效率低。
發(fā)明內(nèi)容
針對(duì)現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的在于提供一種用于嵌入式系統(tǒng)的二 級(jí)緩存控制方法及裝置,目的在于解決進(jìn)一步提高嵌入式系統(tǒng)效率的問(wèn)題。為達(dá)到以上目的,本發(fā)明采取的技術(shù)方案是—種用于嵌入式系統(tǒng)的二級(jí)緩存控制方法,其特征在于,其具體步驟如下步驟15 客戶寫(xiě)請(qǐng)求處理步驟15.1,客戶寫(xiě)請(qǐng)求、寫(xiě)請(qǐng)求對(duì)應(yīng)信息和要寫(xiě)入片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器14的數(shù) 據(jù)由嵌入式微處理器13按AMBA總線協(xié)議轉(zhuǎn)換成AHB接口信號(hào),所述寫(xiě)請(qǐng)求對(duì)應(yīng)信息 至少包括地址和步長(zhǎng);步驟15.2,客戶寫(xiě)請(qǐng)求接口模塊4接收步驟15.1得到的AHB接口信號(hào);步驟15.3,客戶寫(xiě)請(qǐng)求接口模塊4鎖存客戶寫(xiě)請(qǐng)求、寫(xiě)請(qǐng)求對(duì)應(yīng)信息和要寫(xiě)入片 外動(dòng)態(tài)隨機(jī)存儲(chǔ)器14的數(shù)據(jù)客戶寫(xiě)請(qǐng)求接口模塊4將客戶寫(xiě)請(qǐng)求、寫(xiě)請(qǐng)求對(duì)應(yīng)信息按 先后順序放入同一個(gè)FIFO寄存器,客戶寫(xiě)請(qǐng)求接口模塊4將要寫(xiě)入片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器 14的數(shù)據(jù)放在兩塊RAM中,完成鎖存操作;步驟15.4,客戶寫(xiě)請(qǐng)求接口模塊4向端口仲裁和沖突檢測(cè)模塊6發(fā)出寫(xiě)請(qǐng)求,由 端口仲裁和沖突檢測(cè)模塊6完成地址相關(guān)性檢測(cè),所有的客戶寫(xiě)請(qǐng)求都需經(jīng)過(guò)地址相關(guān) 性檢測(cè),無(wú)沖突后才被執(zhí)行;步驟16 客戶讀請(qǐng)求處理步驟16.1,客戶讀請(qǐng)求和讀請(qǐng)求對(duì)應(yīng)信息由嵌入式微處理器13按AMBA總線協(xié)議轉(zhuǎn)換成AHB接口信號(hào),所述讀請(qǐng)求對(duì)應(yīng)信息至少包括客戶讀地址;步驟16.2,客戶讀請(qǐng)求接口和產(chǎn)生預(yù)讀模塊5接收步驟16.1得到的AHB接口信 號(hào);步驟16.3,在客戶讀請(qǐng)求能被立即響應(yīng)的情況下,不鎖存客戶讀請(qǐng)求,向端口 仲裁和沖突檢測(cè)模塊6發(fā)出讀請(qǐng)求;步驟16.4,若有地址相關(guān)性的數(shù)據(jù)競(jìng)爭(zhēng),客戶讀請(qǐng)求不能被立即響應(yīng),則鎖存 客戶讀請(qǐng)求和讀請(qǐng)求對(duì)應(yīng)信息直到該讀請(qǐng)求對(duì)應(yīng)地址的相關(guān)性的數(shù)據(jù)競(jìng)爭(zhēng)消除后,才響 應(yīng)該客戶讀請(qǐng)求;所述地址相關(guān)性的數(shù)據(jù)競(jìng)爭(zhēng)至少包括讀后讀RAR和先寫(xiě)后讀RAW ;步驟17 當(dāng)步驟16中有地址相關(guān)性的數(shù)據(jù)競(jìng)爭(zhēng)的讀請(qǐng)求被響應(yīng)后,客戶讀請(qǐng)求 接口和產(chǎn)生預(yù)讀模塊5產(chǎn)生預(yù)讀操作,向端口仲裁和沖突檢測(cè)模塊6發(fā)出預(yù)讀請(qǐng)求;步驟18:端口仲裁和沖突檢測(cè)模塊6接收步驟15、步驟16和步驟17輸出的寫(xiě) 請(qǐng)求和/或讀請(qǐng)求和/或預(yù)讀請(qǐng)求后,根據(jù)優(yōu)先級(jí)機(jī)制和地址相關(guān)性準(zhǔn)則,仲裁出一個(gè)請(qǐng) 求到下游模塊,并給出響應(yīng)到對(duì)應(yīng)的上游模塊,所述下游模塊包括探測(cè)結(jié)果和更新控制 模塊10和寫(xiě)訪存模塊11,所述上游模塊包括客戶寫(xiě)請(qǐng)求接口模塊4和客戶讀請(qǐng)求接口和 產(chǎn)生預(yù)讀模塊5 ;所采用的優(yōu)先級(jí)機(jī)制為寫(xiě)請(qǐng)求 > 讀請(qǐng)求 > 預(yù)讀請(qǐng)求,所述端口仲裁和沖突檢測(cè)模塊6提供了相關(guān)性的消除機(jī)制,端口仲裁和沖突檢 測(cè)模塊6將接收到請(qǐng)求根據(jù)優(yōu)先級(jí)機(jī)制和地址相關(guān)性準(zhǔn)則,挑選出一個(gè)請(qǐng)求,發(fā)出讀 TAG探測(cè),將仲裁出的請(qǐng)求給到探測(cè)結(jié)果和更新控制模塊10 ;所述端口仲裁和沖突檢測(cè)模塊6有三個(gè)地址狀態(tài)寄存器表寫(xiě)請(qǐng)求地址狀態(tài)寄 存器表、讀請(qǐng)求地址狀態(tài)寄存器表、預(yù)讀請(qǐng)求地址狀態(tài)寄存器表,這三個(gè)表用于相關(guān)性 檢測(cè)和相關(guān)性消除;步驟18.1,若為寫(xiě)請(qǐng)求,將寫(xiě)請(qǐng)求對(duì)應(yīng)地址與讀請(qǐng)求地址狀態(tài)寄存器表、寫(xiě)請(qǐng) 求地址狀態(tài)寄存器表和預(yù)讀請(qǐng)求地址狀態(tài)寄存器表中有效地址進(jìn)行比較,若與其中一個(gè) 地址相等,則有地址相關(guān)性;若都不等,則無(wú)沖突,轉(zhuǎn)步驟18.2 ;步驟18.2,無(wú)沖突時(shí),給出客戶寫(xiě)請(qǐng)求接口模塊4響應(yīng),同時(shí)給標(biāo)記隨機(jī)存儲(chǔ)器 7發(fā)讀TAG探測(cè)使能,并將該寫(xiě)地址放入寫(xiě)請(qǐng)求地址狀態(tài)寄存器表,將該地址對(duì)應(yīng)寄存 器有效位置高,直到該地址對(duì)應(yīng)數(shù)據(jù)寫(xiě)入片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器14才拉低有效位;若與其 中某一地址相等,則有沖突,要等對(duì)應(yīng)該地址的有效位變低后才發(fā)該地址的讀TAG探測(cè) 使能,所述標(biāo)記隨機(jī)存儲(chǔ)器采用兩組相聯(lián)的緩存結(jié)構(gòu),由兩塊IRlW的RAM組成,用于 存儲(chǔ)標(biāo)記,即TAG值;步驟18.3,若為讀請(qǐng)求或預(yù)讀請(qǐng)求,請(qǐng)求對(duì)應(yīng)地址需與寫(xiě)請(qǐng)求地址狀態(tài)寄存器 表和預(yù)讀請(qǐng)求地址狀態(tài)寄存器表中的有效地址進(jìn)行比較,看是否有地址相關(guān)性的數(shù)據(jù)競(jìng) 爭(zhēng),所述地址相關(guān)性的數(shù)據(jù)競(jìng)爭(zhēng)至少包括讀后讀RAR和先寫(xiě)后讀RAW ;若有地址相關(guān)性的數(shù)據(jù)競(jìng)爭(zhēng),則等待之前地址相關(guān)性的請(qǐng)求操作完成,消除地 址相關(guān)性的數(shù)據(jù)競(jìng)爭(zhēng)后,才將請(qǐng)求轉(zhuǎn)出去;步驟19:如果步驟18仲裁出讀請(qǐng)求或預(yù)讀請(qǐng)求,則執(zhí)行以下步驟探測(cè)結(jié)果和更新控制模塊10接受端口仲裁和沖突檢測(cè)模塊6給出的請(qǐng)求和來(lái)自 標(biāo)記隨機(jī)存儲(chǔ)器TAG RAM的兩個(gè)TAG值,將來(lái)自標(biāo)記隨機(jī)存儲(chǔ)器的兩個(gè)TAG值與請(qǐng)求地址中的TAG值比較,兩個(gè)來(lái)自標(biāo)記隨機(jī)存儲(chǔ)器的TAG值中有一個(gè)與讀請(qǐng)求地址中的 TAG值相等,則判斷為讀命中,若兩個(gè)來(lái)自標(biāo)記隨機(jī)存儲(chǔ)器的TAG值中沒(méi)有一個(gè)與讀請(qǐng) 求地址中的TAG值相等,則判斷為讀不命中;若相等判斷為讀命中,即請(qǐng)求地址要操作的數(shù)據(jù)就在存放數(shù)據(jù)的數(shù)據(jù)隨機(jī)存儲(chǔ) 器DATARAM中,若讀命中,轉(zhuǎn)至步驟21;若不等則判斷為讀不命中,即請(qǐng)求地址要操作的數(shù)據(jù)不在數(shù)據(jù)隨機(jī)存儲(chǔ)器中, 需操作片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器14,若讀不命中,轉(zhuǎn)至步驟22;所述數(shù)據(jù)隨機(jī)存儲(chǔ)器采用兩 組相聯(lián)的緩存結(jié)構(gòu),由兩塊IRlW的RAM組成,用于存儲(chǔ)數(shù)據(jù);標(biāo)記隨機(jī)存儲(chǔ)器和數(shù)據(jù) 隨機(jī)存儲(chǔ)器構(gòu)成二級(jí)緩存;步驟20:如果步驟18仲裁出寫(xiě)請(qǐng)求,則執(zhí)行以下步驟探測(cè)結(jié)果和更新控制模塊10接受端口仲裁和沖突檢測(cè)模塊6給出的請(qǐng)求和來(lái)自 標(biāo)記隨機(jī)存儲(chǔ)器的兩個(gè)TAG值,將來(lái)自標(biāo)記隨機(jī)存儲(chǔ)器的兩個(gè)TAG值與寫(xiě)請(qǐng)求地址中的 TAG值比較,兩個(gè)來(lái)自標(biāo)記隨機(jī)存儲(chǔ)器的TAG值中有一個(gè)與寫(xiě)請(qǐng)求地址中的TAG值相 等,則判斷為寫(xiě)命中,若兩個(gè)來(lái)自標(biāo)記隨機(jī)存儲(chǔ)器的TAG值中沒(méi)有一個(gè)與寫(xiě)請(qǐng)求地址中 的TAG值相等,則判斷為寫(xiě)不命中;所述探測(cè)結(jié)果和更新控制模塊10有一個(gè)寄存器,用于存放命中的寫(xiě)請(qǐng)求和寫(xiě)請(qǐng) 求對(duì)應(yīng)信息;若相等判斷為寫(xiě)命中,若寫(xiě)命中,轉(zhuǎn)至步驟23;若不等則判斷為寫(xiě)不命中,若寫(xiě)不命中,轉(zhuǎn)至步驟24;步驟21:判斷為讀命中后,直接從數(shù)據(jù)隨機(jī)存儲(chǔ)器中讀取客戶所需數(shù)據(jù)返回 給嵌入式微處理器13;即直接讀取數(shù)據(jù)隨機(jī)存儲(chǔ)器中的數(shù)據(jù)返回給嵌入式微處理器 13 ;步驟22:判斷為讀不命中后,需將客戶讀請(qǐng)求轉(zhuǎn)化為外部存儲(chǔ)區(qū)控制接口上的 讀請(qǐng)求信號(hào),通過(guò)外部存儲(chǔ)區(qū)控制接口從片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器14讀回整塊數(shù)據(jù),在探測(cè) 結(jié)果和更新控制模塊10控制下將相應(yīng)數(shù)據(jù)回填寫(xiě)入數(shù)據(jù)隨機(jī)存儲(chǔ)器中,同時(shí)給出客戶所 需數(shù)據(jù)返回給嵌入式微處理器13 ;步驟23 判斷為寫(xiě)命中后,根據(jù)探測(cè)結(jié)果和更新控制模塊10中寄存器鎖存的寫(xiě) 請(qǐng)求對(duì)應(yīng)信息,從客戶寫(xiě)請(qǐng)求接口模塊4中的兩塊數(shù)據(jù)RAM中的一塊內(nèi)取出對(duì)應(yīng)數(shù)據(jù)直 接寫(xiě)數(shù)據(jù)隨機(jī)存儲(chǔ)器,同時(shí)寫(xiě)訪存模塊11根據(jù)寫(xiě)請(qǐng)求對(duì)應(yīng)信息,從客戶寫(xiě)請(qǐng)求接口模塊 4中的另外一塊數(shù)據(jù)RAM取出對(duì)應(yīng)數(shù)據(jù),轉(zhuǎn)化為符合外部存儲(chǔ)區(qū)控制接口的客戶寫(xiě)請(qǐng)求 信號(hào)和數(shù)據(jù),寫(xiě)入片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器14 ;不管是否寫(xiě)命中,所有的寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù) 都要寫(xiě)入片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器14 ;步驟24 判斷為寫(xiě)不命中后,寫(xiě)訪存模塊11將寫(xiě)請(qǐng)求對(duì)應(yīng)信息和要寫(xiě)入片外動(dòng) 態(tài)隨機(jī)存儲(chǔ)器14的數(shù)據(jù)轉(zhuǎn)化為符合外部存儲(chǔ)區(qū)控制接口的客戶寫(xiě)請(qǐng)求和數(shù)據(jù),通過(guò)外部 存儲(chǔ)區(qū)控制接口寫(xiě)入片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器14。在上述技術(shù)方案的基礎(chǔ)上,步驟15.4中所述客戶寫(xiě)請(qǐng)求的地址相關(guān)性檢測(cè)的具 體步驟如下端口仲裁和沖突檢測(cè)模塊6將待執(zhí)行的寫(xiě)請(qǐng)求對(duì)應(yīng)的地址,與之前已發(fā)但 讀寫(xiě)操作未完成的地址進(jìn)行比對(duì),若有相等的情況,則認(rèn)為地址相關(guān),需等待之前地址 相關(guān)性的請(qǐng)求對(duì)應(yīng)的地址的讀寫(xiě)操作完成后,才可將客戶寫(xiě)請(qǐng)求、寫(xiě)請(qǐng)求對(duì)應(yīng)信息轉(zhuǎn)給探測(cè)結(jié)果和更新控制模塊10和寫(xiě)訪存模塊11,此時(shí),要寫(xiě)入片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器14的數(shù) 據(jù)不跟隨客戶寫(xiě)請(qǐng)求、寫(xiě)請(qǐng)求對(duì)應(yīng)信息往后走,而是存儲(chǔ)在客戶寫(xiě)請(qǐng)求接口模塊4中。在上述技術(shù)方案的基礎(chǔ)上,步驟24具體操作如下寫(xiě)訪存模塊11根據(jù)寫(xiě)請(qǐng)求對(duì) 應(yīng)信息把要寫(xiě)入片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器14的數(shù)據(jù)按步長(zhǎng)和地址寫(xiě)入片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器14 的對(duì)應(yīng)地址中。在上述技術(shù)方案的基礎(chǔ)上,所述AHB接口信號(hào)是AMBA2.0的一個(gè)子集,只有 某AHB端口被響應(yīng)后才能切換到下一個(gè)AHB端口。在上述技術(shù)方案的基礎(chǔ)上,同一標(biāo)記隨機(jī)存儲(chǔ)器地址對(duì)應(yīng)兩塊構(gòu)成標(biāo)記隨機(jī)存 儲(chǔ)器的RAM,但構(gòu)成標(biāo)記隨機(jī)存儲(chǔ)器的兩塊RAM中存放的TAG值不等,同一數(shù)據(jù)隨機(jī) 存儲(chǔ)器地址對(duì)應(yīng)兩塊構(gòu)成數(shù)據(jù)隨機(jī)存儲(chǔ)器的RAM,但構(gòu)成數(shù)據(jù)隨機(jī)存儲(chǔ)器的兩塊RAM 中存放的數(shù)據(jù)也不同,以減少不命中率,所述數(shù)據(jù)隨機(jī)存儲(chǔ)器地址格式如下
權(quán)利要求
1. 一種用于嵌入式系統(tǒng)的二級(jí)緩存控制方法,其特征在于,其具體步驟如下 步驟15 客戶寫(xiě)請(qǐng)求處理步驟15.1,客戶寫(xiě)請(qǐng)求、寫(xiě)請(qǐng)求對(duì)應(yīng)信息和要寫(xiě)入片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器(14)的數(shù)據(jù) 由嵌入式微處理器(13)按AMBA總線協(xié)議轉(zhuǎn)換成AHB接口信號(hào),所述寫(xiě)請(qǐng)求對(duì)應(yīng)信息 至少包括地址和步長(zhǎng);步驟15.2,客戶寫(xiě)請(qǐng)求接口模塊(4)接收步驟15.1得到的AHB接口信號(hào); 步驟15.3,客戶寫(xiě)請(qǐng)求接口模塊(4)鎖存客戶寫(xiě)請(qǐng)求、寫(xiě)請(qǐng)求對(duì)應(yīng)信息和要寫(xiě)入片外 動(dòng)態(tài)隨機(jī)存儲(chǔ)器(14)的數(shù)據(jù)客戶寫(xiě)請(qǐng)求接口模塊(4)將客戶寫(xiě)請(qǐng)求、寫(xiě)請(qǐng)求對(duì)應(yīng)信息 按先后順序放入同一個(gè)FIFO寄存器,客戶寫(xiě)請(qǐng)求接口模塊(4)將要寫(xiě)入片外動(dòng)態(tài)隨機(jī)存 儲(chǔ)器(14)的數(shù)據(jù)放在兩塊RAM中,完成鎖存操作;步驟15.4,客戶寫(xiě)請(qǐng)求接口模塊(4)向端口仲裁和沖突檢測(cè)模塊(6)發(fā)出寫(xiě)請(qǐng)求,由 端口仲裁和沖突檢測(cè)模塊(6)完成地址相關(guān)性檢測(cè),所有的客戶寫(xiě)請(qǐng)求都需經(jīng)過(guò)地址相 關(guān)性檢測(cè),無(wú)沖突后才被執(zhí)行; 步驟16 客戶讀請(qǐng)求處理步驟16.1,客戶讀請(qǐng)求和讀請(qǐng)求對(duì)應(yīng)信息由嵌入式微處理器(13)按AMBA總線協(xié)議 轉(zhuǎn)換成AHB接口信號(hào),所述讀請(qǐng)求對(duì)應(yīng)信息至少包括客戶讀地址;步驟16.2,客戶讀請(qǐng)求接口和產(chǎn)生預(yù)讀模塊(5)接收步驟16.1得到的AHB接口信號(hào);步驟16.3,在客戶讀請(qǐng)求能被立即響應(yīng)的情況下,不鎖存客戶讀請(qǐng)求,向端口仲裁 和沖突檢測(cè)模塊(6)發(fā)出讀請(qǐng)求;步驟16.4,若有地址相關(guān)性的數(shù)據(jù)競(jìng)爭(zhēng),客戶讀請(qǐng)求不能被立即響應(yīng),則鎖存客戶 讀請(qǐng)求和讀請(qǐng)求對(duì)應(yīng)信息直到該讀請(qǐng)求對(duì)應(yīng)地址的相關(guān)性的數(shù)據(jù)競(jìng)爭(zhēng)消除后,才響應(yīng)該 客戶讀請(qǐng)求;所述地址相關(guān)性的數(shù)據(jù)競(jìng)爭(zhēng)至少包括讀后讀RAR和先寫(xiě)后讀RAW ;步驟17:當(dāng)步驟16中有地址相關(guān)性的數(shù)據(jù)競(jìng)爭(zhēng)的讀請(qǐng)求被響應(yīng)后,客戶讀請(qǐng)求接口 和產(chǎn)生預(yù)讀模塊(5)產(chǎn)生預(yù)讀操作,向端口仲裁和沖突檢測(cè)模塊(6)發(fā)出預(yù)讀請(qǐng)求;步驟18 端口仲裁和沖突檢測(cè)模塊(6)接收步驟15、步驟16和步驟17輸出的寫(xiě)請(qǐng) 求和/或讀請(qǐng)求和/或預(yù)讀請(qǐng)求后,根據(jù)優(yōu)先級(jí)機(jī)制和地址相關(guān)性準(zhǔn)則,仲裁出一個(gè)請(qǐng)求 到下游模塊,并給出響應(yīng)到對(duì)應(yīng)的上游模塊,所述下游模塊包括探測(cè)結(jié)果和更新控制模 塊(10)和寫(xiě)訪存模塊(11),所述上游模塊包括客戶寫(xiě)請(qǐng)求接口模塊(4)和客戶讀請(qǐng)求接 口和產(chǎn)生預(yù)讀模塊(5);所采用的優(yōu)先級(jí)機(jī)制為寫(xiě)請(qǐng)求 > 讀請(qǐng)求 > 預(yù)讀請(qǐng)求,所述端口仲裁和沖突檢測(cè)模塊(6)提供了相關(guān)性的消除機(jī)制,端口仲裁和沖突檢 測(cè)模塊(6)將接收到請(qǐng)求根據(jù)優(yōu)先級(jí)機(jī)制和地址相關(guān)性準(zhǔn)則,挑選出一個(gè)請(qǐng)求,發(fā)出讀 TAG探測(cè),將仲裁出的請(qǐng)求給到探測(cè)結(jié)果和更新控制模塊(10);所述端口仲裁和沖突檢測(cè)模塊(6)有三個(gè)地址狀態(tài)寄存器表寫(xiě)請(qǐng)求地址狀態(tài)寄存 器表、讀請(qǐng)求地址狀態(tài)寄存器表、預(yù)讀請(qǐng)求地址狀態(tài)寄存器表,這三個(gè)表用于相關(guān)性檢 測(cè)和相關(guān)性消除;步驟18.1,若為寫(xiě)請(qǐng)求,將寫(xiě)請(qǐng)求對(duì)應(yīng)地址與讀請(qǐng)求地址狀態(tài)寄存器表、寫(xiě)請(qǐng)求地 址狀態(tài)寄存器表和預(yù)讀請(qǐng)求地址狀態(tài)寄存器表中有效地址進(jìn)行比較,若與其中一個(gè)地址相等,則有地址相關(guān)性;若都不等,則無(wú)沖突,轉(zhuǎn)步驟18.2 ;步驟18.2,無(wú)沖突時(shí),給出客戶寫(xiě)請(qǐng)求接口模塊(4)響應(yīng),同時(shí)給標(biāo)記隨機(jī)存儲(chǔ)器 (7)發(fā)讀TAG探測(cè)使能,并將該寫(xiě)地址放入寫(xiě)請(qǐng)求地址狀態(tài)寄存器表,將該地址對(duì)應(yīng)寄 存器有效位置高,直到該地址對(duì)應(yīng)數(shù)據(jù)寫(xiě)入片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器(14)才拉低有效位;若 與其中某一地址相等,則有沖突,要等對(duì)應(yīng)該地址的有效位變低后才發(fā)該地址的讀TAG 探測(cè)使能,所述標(biāo)記隨機(jī)存儲(chǔ)器采用兩組相聯(lián)的緩存結(jié)構(gòu),由兩塊IRlW的RAM組成, 用于存儲(chǔ)標(biāo)記,即TAG值;步驟18.3,若為讀請(qǐng)求或預(yù)讀請(qǐng)求,請(qǐng)求對(duì)應(yīng)地址需與寫(xiě)請(qǐng)求地址狀態(tài)寄存器表和 預(yù)讀請(qǐng)求地址狀態(tài)寄存器表中的有效地址進(jìn)行比較,看是否有地址相關(guān)性的數(shù)據(jù)競(jìng)爭(zhēng), 所述地址相關(guān)性的數(shù)據(jù)競(jìng)爭(zhēng)至少包括讀后讀RAR和先寫(xiě)后讀RAW ;若有地址相關(guān)性的數(shù)據(jù)競(jìng)爭(zhēng),則等待之前地址相關(guān)性的請(qǐng)求操作完成,消除地址相 關(guān)性的數(shù)據(jù)競(jìng)爭(zhēng)后,才將請(qǐng)求轉(zhuǎn)出去;步驟19 如果步驟18仲裁出讀請(qǐng)求或預(yù)讀請(qǐng)求,則執(zhí)行以下步驟 探測(cè)結(jié)果和更新控制模塊(10)接受端口仲裁和沖突檢測(cè)模塊(6)給出的請(qǐng)求和來(lái)自 標(biāo)記隨機(jī)存儲(chǔ)器TAG RAM的兩個(gè)TAG值,將來(lái)自標(biāo)記隨機(jī)存儲(chǔ)器的兩個(gè)TAG值與請(qǐng) 求地址中的TAG值比較,兩個(gè)來(lái)自標(biāo)記隨機(jī)存儲(chǔ)器的TAG值中有一個(gè)與讀請(qǐng)求地址中的 TAG值相等,則判斷為讀命中,若兩個(gè)來(lái)自標(biāo)記隨機(jī)存儲(chǔ)器的TAG值中沒(méi)有一個(gè)與讀請(qǐng) 求地址中的TAG值相等,則判斷為讀不命中;若相等判斷為讀命中,即請(qǐng)求地址要操作的數(shù)據(jù)就在存放數(shù)據(jù)的數(shù)據(jù)隨機(jī)存儲(chǔ)器 DATARAM中,若讀命中,轉(zhuǎn)至步驟21;若不等則判斷為讀不命中,即請(qǐng)求地址要操作的數(shù)據(jù)不在數(shù)據(jù)隨機(jī)存儲(chǔ)器中,需操 作片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器(14),若讀不命中,轉(zhuǎn)至步驟22;所述數(shù)據(jù)隨機(jī)存儲(chǔ)器采用兩組 相聯(lián)的緩存結(jié)構(gòu),由兩塊IRlW的RAM組成,用于存儲(chǔ)數(shù)據(jù);標(biāo)記隨機(jī)存儲(chǔ)器和數(shù)據(jù)隨 機(jī)存儲(chǔ)器構(gòu)成二級(jí)緩存;步驟20 如果步驟18仲裁出寫(xiě)請(qǐng)求,則執(zhí)行以下步驟探測(cè)結(jié)果和更新控制模塊(10)接受端口仲裁和沖突檢測(cè)模塊(6)給出的請(qǐng)求和來(lái)自 標(biāo)記隨機(jī)存儲(chǔ)器的兩個(gè)TAG值,將來(lái)自標(biāo)記隨機(jī)存儲(chǔ)器的兩個(gè)TAG值與寫(xiě)請(qǐng)求地址中的 TAG值比較,兩個(gè)來(lái)自標(biāo)記隨機(jī)存儲(chǔ)器的TAG值中有一個(gè)與寫(xiě)請(qǐng)求地址中的TAG值相 等,則判斷為寫(xiě)命中,若兩個(gè)來(lái)自標(biāo)記隨機(jī)存儲(chǔ)器的TAG值中沒(méi)有一個(gè)與寫(xiě)請(qǐng)求地址中 的TAG值相等,則判斷為寫(xiě)不命中;所述探測(cè)結(jié)果和更新控制模塊(10)有一個(gè)寄存器,用于存放命中的寫(xiě)請(qǐng)求和寫(xiě)請(qǐng)求 對(duì)應(yīng)信息;若相等判斷為寫(xiě)命中,若寫(xiě)命中,轉(zhuǎn)至步驟23; 若不等則判斷為寫(xiě)不命中,若寫(xiě)不命中,轉(zhuǎn)至步驟24;步驟21:判斷為讀命中后,直接從數(shù)據(jù)隨機(jī)存儲(chǔ)器中讀取客戶所需數(shù)據(jù)返回給嵌 入式微處理器(13);即直接讀取數(shù)據(jù)隨機(jī)存儲(chǔ)器中的數(shù)據(jù)返回給嵌入式微處理器 (13);步驟22:判斷為讀不命中后,需將客戶讀請(qǐng)求轉(zhuǎn)化為外部存儲(chǔ)區(qū)控制接口上的讀請(qǐng) 求信號(hào),通過(guò)外部存儲(chǔ)區(qū)控制接口從片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器(14)讀回整塊數(shù)據(jù),在探測(cè)結(jié)果和更新控制模塊(10)控制下將相應(yīng)數(shù)據(jù)回填寫(xiě)入數(shù)據(jù)隨機(jī)存儲(chǔ)器中,同時(shí)給出客戶所 需數(shù)據(jù)返回給嵌入式微處理器(13);步驟23:判斷為寫(xiě)命中后,根據(jù)探測(cè)結(jié)果和更新控制模塊(10)中寄存器鎖存的寫(xiě)請(qǐng) 求對(duì)應(yīng)信息,從客戶寫(xiě)請(qǐng)求接口模塊(4)中的兩塊數(shù)據(jù)RAM中的一塊內(nèi)取出對(duì)應(yīng)數(shù)據(jù)直 接寫(xiě)數(shù)據(jù)隨機(jī)存儲(chǔ)器,同時(shí)寫(xiě)訪存模塊(11)根據(jù)寫(xiě)請(qǐng)求對(duì)應(yīng)信息,從客戶寫(xiě)請(qǐng)求接口模 塊(4)中的另外一塊數(shù)據(jù)RAM取出對(duì)應(yīng)數(shù)據(jù),轉(zhuǎn)化為符合外部存儲(chǔ)區(qū)控制接口的客戶寫(xiě) 請(qǐng)求信號(hào)和數(shù)據(jù),寫(xiě)入片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器(14);不管是否寫(xiě)命中,所有的寫(xiě)請(qǐng)求對(duì)應(yīng) 的數(shù)據(jù)都要寫(xiě)入片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器(14);步驟24:判斷為寫(xiě)不命中后,寫(xiě)訪存模塊(11)將寫(xiě)請(qǐng)求對(duì)應(yīng)信息和要寫(xiě)入片外動(dòng)態(tài) 隨機(jī)存儲(chǔ)器(14)的數(shù)據(jù)轉(zhuǎn)化為符合外部存儲(chǔ)區(qū)控制接口的客戶寫(xiě)請(qǐng)求和數(shù)據(jù),通過(guò)外部 存儲(chǔ)區(qū)控制接口寫(xiě)入片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器(14)。
2.如權(quán)利要求1所述的用于嵌入式系統(tǒng)的二級(jí)緩存控制方法,其特征在于步驟 15.4中所述客戶寫(xiě)請(qǐng)求的地址相關(guān)性檢測(cè)的具體步驟如下端口仲裁和沖突檢測(cè)模塊(6) 將待執(zhí)行的寫(xiě)請(qǐng)求對(duì)應(yīng)的地址,與之前已發(fā)但讀寫(xiě)操作未完成的地址進(jìn)行比對(duì),若有相 等的情況,則認(rèn)為地址相關(guān),需等待之前地址相關(guān)性的請(qǐng)求對(duì)應(yīng)的地址的讀寫(xiě)操作完成 后,才可將客戶寫(xiě)請(qǐng)求、寫(xiě)請(qǐng)求對(duì)應(yīng)信息轉(zhuǎn)給探測(cè)結(jié)果和更新控制模塊(10)和寫(xiě)訪存模 塊(11),此時(shí),要寫(xiě)入片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器(14)的數(shù)據(jù)不跟隨客戶寫(xiě)請(qǐng)求、寫(xiě)請(qǐng)求對(duì)應(yīng) 信息往后走,而是存儲(chǔ)在客戶寫(xiě)請(qǐng)求接口模塊(4)中。
3.如權(quán)利要求1所述的用于嵌入式系統(tǒng)的二級(jí)緩存控制方法,其特征在于,步驟24 具體操作如下寫(xiě)訪存模塊(11)根據(jù)寫(xiě)請(qǐng)求對(duì)應(yīng)信息把要寫(xiě)入片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器(14) 的數(shù)據(jù)按步長(zhǎng)和地址寫(xiě)入片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器(14)的對(duì)應(yīng)地址中。
4.如權(quán)利要求1所述的用于嵌入式系統(tǒng)的二級(jí)緩存控制方法,其特征在于所述 AHB接口信號(hào)是AMBA2.0的一個(gè)子集,只有某AHB端口被響應(yīng)后才能切換到下一個(gè) AHB 端 口。
5.如權(quán)利要求1所述的用于嵌入式系統(tǒng)的二級(jí)緩存控制方法,其特征在于同一標(biāo) 記隨機(jī)存儲(chǔ)器地址對(duì)應(yīng)兩塊構(gòu)成標(biāo)記隨機(jī)存儲(chǔ)器的RAM,但構(gòu)成標(biāo)記隨機(jī)存儲(chǔ)器的兩塊 RAM中存放的TAG值不等,同一數(shù)據(jù)隨機(jī)存儲(chǔ)器地址對(duì)應(yīng)兩塊構(gòu)成數(shù)據(jù)隨機(jī)存儲(chǔ)器的 RAM,但構(gòu)成數(shù)據(jù)隨機(jī)存儲(chǔ)器的兩塊RAM中存放的數(shù)據(jù)也不同,以減少不命中率,所述數(shù)據(jù)隨機(jī)存儲(chǔ)器地址格式如下_
6.如權(quán)利要求1所述的用于嵌入式系統(tǒng)的二級(jí)緩存控制方法,其特征在于通過(guò)寄 存器配置,給定客戶讀地址與預(yù)讀地址相差閾值參數(shù)pf—num—limit的取值,給定該閾值 后,當(dāng)客戶讀地址與預(yù)讀地址相差超過(guò)閾值,則預(yù)讀動(dòng)作以當(dāng)前客戶讀地址為基礎(chǔ)進(jìn)行 預(yù)讀,即停止向前預(yù)讀,以免從片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器(14)超前預(yù)讀的數(shù)據(jù)轉(zhuǎn)頭將先前預(yù) 讀的數(shù)據(jù)覆蓋,造成客戶讀不命中的結(jié)果。
7.如權(quán)利要求1所述的用于嵌入式系統(tǒng)的二級(jí)緩存控制方法,其特征在于客戶 讀請(qǐng)求接口和產(chǎn)生預(yù)讀模塊(5)根據(jù)客戶讀請(qǐng)求做預(yù)讀動(dòng)作,預(yù)讀回客戶將來(lái)要讀的數(shù) 據(jù),客戶讀請(qǐng)求接口和產(chǎn)生預(yù)讀模塊(5)結(jié)合嵌入式系統(tǒng)讀取數(shù)據(jù)時(shí)地址具局部性和連 續(xù)性的特點(diǎn),設(shè)計(jì)連續(xù)命中的預(yù)讀地址圖案,讀地址連續(xù)是指TAG值相等且組號(hào)相差為4或4以內(nèi),預(yù)讀地址圖案通過(guò)以下步驟生成將當(dāng)前客戶讀請(qǐng)求對(duì)應(yīng)地址與上一輪客戶讀請(qǐng)求對(duì)應(yīng)地址進(jìn)行比較,TAG值相等且 組號(hào)相差在4以內(nèi),且當(dāng)前客戶讀請(qǐng)求對(duì)應(yīng)地址與上輪發(fā)出的最后一個(gè)預(yù)讀地址相差不 超過(guò)閾值pf—num—limit,則認(rèn)為地址關(guān)聯(lián);由客戶讀請(qǐng)求啟動(dòng)一輪預(yù)讀,若本輪客戶讀請(qǐng)求地址與上輪客戶讀請(qǐng)求地址關(guān)聯(lián), 預(yù)讀地址在上輪發(fā)出的最后一個(gè)預(yù)讀地址基礎(chǔ)上加4,作為新一輪預(yù)讀首地址;若地址 不關(guān)聯(lián),則預(yù)讀地址以本輪讀客戶地址為基礎(chǔ)加4,作為新一輪預(yù)讀首地址。
8.如權(quán)利要求1所述的用于嵌入式系統(tǒng)的二級(jí)緩存控制方法,其特征在于,某一時(shí)間 段被頻繁訪問(wèn)的數(shù)據(jù),優(yōu)先停留在二級(jí)緩存中采用了 LRU替換原則,其具體替換步驟 如下對(duì)應(yīng)每個(gè)標(biāo)記隨機(jī)存儲(chǔ)器地址都有一個(gè)LRU位,當(dāng)LRU為0,則將從片外動(dòng)態(tài)隨機(jī) 存儲(chǔ)器(14)取回的數(shù)據(jù)回填入數(shù)據(jù)隨機(jī)存儲(chǔ)器中的標(biāo)號(hào)為1的RAM ;若LRU為1,則將從片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器(14)取回的數(shù)據(jù)回填入數(shù)據(jù)隨機(jī)存儲(chǔ)器中 的標(biāo)號(hào)為0的RAM ;每次訪問(wèn)標(biāo)記隨機(jī)存儲(chǔ)器中的某行,如果命中,LRU值修改為命中行。
9.如權(quán)利要求1所述的用于嵌入式系統(tǒng)的二級(jí)緩存控制方法,其特征在于,端口仲裁 和沖突檢測(cè)模塊(6)提供了四種類型相關(guān)性的消除機(jī)制讀后讀RAR、寫(xiě)后寫(xiě)WAW、先 寫(xiě)后讀相關(guān)RAW、先讀后寫(xiě)相關(guān)WAR性消除策略。
10.一種實(shí)現(xiàn)權(quán)利要求1所述用于嵌入式系統(tǒng)的二級(jí)緩存控制方法的裝置,其特征在 于二級(jí)緩存及二級(jí)緩存控制裝置(12)通過(guò)AMBA總線與嵌入式微處理器(13)連接, 接受來(lái)自嵌入式微處理器(13)的讀、寫(xiě)請(qǐng)求指令;二級(jí)緩存及二級(jí)緩存控制裝置(12)根據(jù)讀、寫(xiě)請(qǐng)求指令對(duì)應(yīng)地址從片外動(dòng)態(tài)隨機(jī)存 儲(chǔ)器(14)中讀取或?qū)懭霐?shù)據(jù);所述二級(jí)緩存及二級(jí)緩存控制裝置(12)包括客戶寫(xiě)請(qǐng)求接口模塊(4),接受嵌入式微處理器(13)發(fā)來(lái)的寫(xiě)請(qǐng)求、寫(xiě)請(qǐng)求對(duì)應(yīng) 信息和要寫(xiě)入片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器(14)的數(shù)據(jù),其輸出送至端口仲裁和沖突檢測(cè)模塊(6),客戶讀請(qǐng)求接口和產(chǎn)生預(yù)讀模塊(5),接受嵌入式微處理器(13)發(fā)來(lái)的讀請(qǐng)求和讀 請(qǐng)求對(duì)應(yīng)信息,其輸出送至端口仲裁和沖突檢測(cè)模塊(6),端口仲裁和沖突檢測(cè)模塊(6),分別和標(biāo)記隨機(jī)存儲(chǔ)器(7)、數(shù)據(jù)隨機(jī)存儲(chǔ)器(8)、 探測(cè)結(jié)果和更新控制模塊(10)、寫(xiě)訪存模塊(11)連接,用于存儲(chǔ)TAG值的標(biāo)記隨機(jī)存儲(chǔ)器(7),接收經(jīng)LRU控制替換模塊(9)發(fā)來(lái)的命中 指示,接收經(jīng)探測(cè)結(jié)果和更新控制模塊(10)發(fā)來(lái)的數(shù)據(jù)作為標(biāo)記隨機(jī)存儲(chǔ)器RAM的內(nèi) 容,所述標(biāo)記隨機(jī)存儲(chǔ)器采用兩組相聯(lián)的緩存結(jié)構(gòu),由兩塊IRlW的RAM組成,用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)隨機(jī)存儲(chǔ)器(8),接收經(jīng)LRU控制替換模塊(9)發(fā)來(lái)的命中指 示,接收經(jīng)探測(cè)結(jié)果和更新控制模塊(10)發(fā)來(lái)的數(shù)據(jù),所述數(shù)據(jù)隨機(jī)存儲(chǔ)器采用兩組相 聯(lián)的緩存結(jié)構(gòu),由兩塊IRlW的RAM組成,LRU控制替換模塊(9),接收經(jīng)探測(cè)結(jié)果和更新控制模塊(10)發(fā)來(lái)的數(shù)據(jù), 探測(cè)結(jié)果和更新控制模塊(10),與片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器(14)連接, 寫(xiě)訪存模塊(11),與片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器(14)連接, 標(biāo)記隨機(jī)存儲(chǔ)器和數(shù)據(jù)隨機(jī)存儲(chǔ)器構(gòu)成二級(jí)緩存;客戶寫(xiě)請(qǐng)求接口模塊(4)內(nèi)設(shè)有兩塊RAM,兩塊RAM中存儲(chǔ)的數(shù)據(jù)一致,一塊 RAM中的部分?jǐn)?shù)據(jù)寫(xiě)入數(shù)據(jù)隨機(jī)存儲(chǔ)器,另一塊RAM中的數(shù)據(jù)要寫(xiě)入片外動(dòng)態(tài)隨機(jī)存 儲(chǔ)器(14);客戶寫(xiě)請(qǐng)求接口模塊(4)內(nèi)還設(shè)有一個(gè)FIFO寄存器;所述探測(cè)結(jié)果和更新控制模塊(10)有一個(gè)用于存放命中的寫(xiě)請(qǐng)求和寫(xiě)請(qǐng)求對(duì)應(yīng)信息 的寄存器。
全文摘要
本發(fā)明涉及一種用于嵌入式系統(tǒng)的二級(jí)緩存控制方法及裝置,具體步驟如下向端口仲裁和沖突檢測(cè)模塊發(fā)出寫(xiě)請(qǐng)求和/或讀請(qǐng)求和/或預(yù)讀請(qǐng)求;端口仲裁和沖突檢測(cè)模塊接收各請(qǐng)求后,仲裁出一個(gè)請(qǐng)求到下游模塊,并給出響應(yīng)到對(duì)應(yīng)的上游模塊;如果仲裁出讀請(qǐng)求或預(yù)讀請(qǐng)求,區(qū)分讀命中或讀不命中后,執(zhí)行相應(yīng)操作;如果仲裁出寫(xiě)請(qǐng)求,區(qū)分寫(xiě)命中或?qū)懖幻泻?,?zhí)行相應(yīng)操作。本發(fā)明所述方法及裝置,在嵌入式微處理器的指令地址連續(xù)時(shí),將未來(lái)要讀的數(shù)據(jù)通過(guò)預(yù)讀操作,提前把數(shù)據(jù)從片外動(dòng)態(tài)隨機(jī)存儲(chǔ)器中預(yù)讀回來(lái),除去數(shù)據(jù)流的首延遲,后續(xù)數(shù)據(jù)流中間無(wú)延遲,大大提高了嵌入式系統(tǒng)的效率并降低成本。
文檔編號(hào)G06F13/16GK102012872SQ20101055604
公開(kāi)日2011年4月13日 申請(qǐng)日期2010年11月24日 優(yōu)先權(quán)日2010年11月24日
發(fā)明者馮波, 劉婷, 張繼勇, 梁元濤, 溫玉屏, 陶志飛, 黃元波 申請(qǐng)人:烽火通信科技股份有限公司