字長可切換緩存系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及到處理器和其他應(yīng)用芯片的緩存的硬件設(shè)計。
【背景技術(shù)】
[0002] 緩存在計算機(jī)系統(tǒng)和其他應(yīng)用處理系統(tǒng)中扮演者及其重要的角色,它的設(shè)計的好 壞直接影響處理器的處理能力。而目前32位及64位指令集同時被廣泛的應(yīng)用于不同領(lǐng)域。 因此緩存系統(tǒng)的兼容性設(shè)計好壞,對于一款處理器的應(yīng)用范圍有著重要作用。
[0003] 在64位兼容32位的過程中,簡單地忽略64位的高32位,取低32位為32位的指 令或數(shù)據(jù)。這種方法將造成一半的緩存存儲空間浪費(fèi)。使得程序執(zhí)行過程中的命中效率降 低。
【發(fā)明內(nèi)容】
[0004] 因此在實(shí)際中需要一種硬件緩存,這種緩存可以根據(jù)具體的應(yīng)用程序來配置成不 同的字長模式(32位或64位),從而保持存儲器單元的高使用率。
[0005] 為此,本發(fā)明提出硬件模式切換的實(shí)現(xiàn)方法及硬件實(shí)現(xiàn)。每次改變字長模式時,緩 存外部存儲器到緩存系統(tǒng)的映射關(guān)系會發(fā)生改變。緩存系統(tǒng)擁有可根據(jù)不同設(shè)置對緩存內(nèi) 部存儲器尋址范圍進(jìn)行改變的控制單元,以使得高速存儲單元被充分使用。
[0006]
【附圖說明】: 圖1為一種切換字長模式的緩存系統(tǒng)的實(shí)現(xiàn)方法; 圖2為組相聯(lián)結(jié)構(gòu)緩存系統(tǒng)的地址空間一般劃分方法; 圖3為多路組相聯(lián)結(jié)構(gòu)硬件緩存的原理描述圖; 圖4為多路組相聯(lián)結(jié)構(gòu)硬件緩存的簡化框圖; 圖5為一種切換字長模式的緩存系統(tǒng)的硬件實(shí)現(xiàn)結(jié)構(gòu); 圖6為SET地址到TAG和數(shù)據(jù)存儲器組地址映射單元的實(shí)現(xiàn)實(shí)例。
[0007]
【具體實(shí)施方式】: 以下將結(jié)合附圖及實(shí)施例來詳細(xì)說明本發(fā)明的實(shí)施方式。需要說明,如不沖突,本發(fā)明 實(shí)施例以及實(shí)施例中的各個特征可以相互結(jié)合,均在本發(fā)明的保護(hù)范圍之內(nèi)。本發(fā)明是一 種可配置可切換的硬件緩存結(jié)構(gòu)的設(shè)計,它可應(yīng)用于計算機(jī)系統(tǒng)緩存設(shè)計,包括個人電腦, 服務(wù)器和平板電腦;同時也適用于手機(jī),數(shù)碼相機(jī),游戲機(jī)和學(xué)習(xí)機(jī);同時也適用于數(shù)字信 號處理器。
[0008] 硬件緩存映射主要有三種方式:直接匹配,N路組相聯(lián)和全相聯(lián)結(jié)構(gòu)。直接匹配 緩存盡管在電路邏輯上十分簡單,但是存在顯著的沖突問題。由于多個不同的內(nèi)存塊僅共 享一個緩存塊,一旦發(fā)生緩存失效就必須將緩存塊的當(dāng)前內(nèi)容清除出去。這種做法不但因 為頻繁的更換緩存內(nèi)容造成了大量延遲,而且未能有效利用程序運(yùn)行期所具有的時間局部 性。
[0009] 組相聯(lián)(SetAssociativity)是解決這一問題的主要辦法。全相聯(lián)是組相聯(lián)的極 端形式。使用組相聯(lián)的緩存把存儲空間組織成多個組,每個組有若干數(shù)據(jù)塊。通過建立內(nèi) 存數(shù)據(jù)和組索引的對應(yīng)關(guān)系,一個內(nèi)存塊可以被載入到對應(yīng)組內(nèi)的任一路上(Way)。
[0010] 圖1為組相聯(lián)結(jié)構(gòu)緩存地址空間的一般劃分方式。需要說明,采用不同的命名方 式不影響本發(fā)明的權(quán)利要求。按照多路組相聯(lián)緩存系統(tǒng)(N-Wayset-associativecache) 的原理地址被分為三個部分。TAG,SET,和ByteOffset。TAG的寬度,SET的寬度以及字節(jié) 偏移的寬度可以由以下公式計算得到:
目前無論是支持32位字長或者64位字長的處理器,大部分都使用多路組相聯(lián)結(jié)構(gòu)緩 存。本發(fā)明的核心思想是:通過一種簡單的改變地址映射的方式,在緩存從64位模式切換 到32位模式過程中,利用少量的額外控制模塊使得緩存可存儲的指令數(shù)量及數(shù)據(jù)數(shù)量(字 數(shù))擴(kuò)大一倍。
[0011] 本發(fā)明提出的一種方法,按照圖2流程圖所描繪方式為進(jìn)行模式切換。
[0012] S1- 32位比特字長模式; 52- 將緩存系統(tǒng)中TAG存儲模塊中儲存的地址做無效化處理。例如將TAG有效標(biāo)志置 為無效; 53- 根據(jù)多路組相聯(lián)緩存地址空間劃分方法。將SET地址寬度減少一位,TAG地址寬度 增加一位; 54- 32位比特字長模式; 55- 根據(jù)多路組相聯(lián)緩存地址空間劃分方法。將SET地址寬度增加一位,TAG地址寬度 減少一位; 圖3為多路組相聯(lián)結(jié)構(gòu)硬件緩存的原理描述圖。對緩存系統(tǒng)的訪問地址,按照圖1劃分 方式,分為三個部分。利用SET地址部分選中TAG存儲器和數(shù)據(jù)存儲器各一個SET的內(nèi)容。 TAG存儲器被選中SET的數(shù)據(jù)被讀出,并與訪問地址的TAG部分的值進(jìn)行比較。若相同,則 表示命中,被選中的數(shù)據(jù)存儲器的內(nèi)容被作為命中的數(shù)據(jù)塊讀出。這個過程將對N路(WAY) 數(shù)據(jù)同時進(jìn)行操作,因為所需數(shù)據(jù)可能被存放于N路中任意一個路中。ByteOffset地址對 數(shù)據(jù)塊中的數(shù)據(jù)進(jìn)行選擇,最后輸出所需數(shù)據(jù)。
[0013] 圖4為多路組相聯(lián)結(jié)構(gòu)硬件緩存的簡化框圖。圖4將圖3所示原理圖進(jìn)行了框圖 化處理。將各路(WAY)中的TAG存儲器合并稱為TAG存儲器組模塊,將各路中的數(shù)據(jù)儲存 器合并稱為數(shù)據(jù)存儲器組模塊。將各路的比較器合并稱為命中判斷單元。將各路的數(shù)據(jù)塊 選則功能合并稱為數(shù)據(jù)塊選擇模塊。字節(jié)讀出模塊保留。
[0014] 圖5給出了實(shí)現(xiàn)圖2所描述的模式切換方法的一種硬件組織結(jié)構(gòu)圖。這一硬件實(shí) 現(xiàn)可包含有以下全部或部分硬件模塊。
[0015] 1)訪問地址解碼單元 整體接收操作地址的TAG與SET部分。這兩段地址總長度不隨模式變化而改變。按照32位或64位模式配置信息將這段地址拆分位TAG地址部分、SET地址部分。ByetOfTSet地 址部分不做處理。
[0016] 2) TAG地址無效化處理單元 收到模式切換指令時,將緩存內(nèi)部TAG存儲器的數(shù)據(jù)有效標(biāo)志全部做無效化處理。處 理完成后,通知其他單元或緩存系統(tǒng)外部無效化處理完成。
[0017] 3) SET地址到TAG和數(shù)據(jù)存儲器組地址映射單元
圖6舉例說明了SET地址到TAG和數(shù)據(jù)存儲器組地址映射單元的具體實(shí)現(xiàn)。經(jīng)過訪 問地址解碼單元處理后,SET地址及TAG地址部分被分離。SET地址部分被送入存儲器組 地址映射單元。SET地址的最高位結(jié)合輸入的模式切換信號根據(jù)表1所示真值表得到兩個 片選信號。這兩個片選信號分別針對第一組存儲器及第二組存儲器。SET地址的其余部分 作為存儲器組的地址信號接入各個存儲器單元。需要說明,TAG存儲器組的字長為32位模 式下TAG地址部分的長度。第一組及第二組數(shù)據(jù)存儲器組的字長均為32位。在64位模式 下,將兩組數(shù)據(jù)拼接為64位數(shù)據(jù)輸出作為一個。在32位模式下,系統(tǒng)緩存的容量是64位 下的兩倍。
【主權(quán)項】
1. 一種可兼容32位長度及64位長度指令及數(shù)據(jù)的緩存系統(tǒng)的實(shí)現(xiàn)方法,可被應(yīng)用于 多路組相聯(lián)緩存系統(tǒng)中。2. 權(quán)利要求不僅限于此兩種長度模式間切換。3. 基于權(quán)利要求1所述的方法,本發(fā)明所實(shí)現(xiàn)的數(shù)據(jù)緩存可在32位比特及64位比特 長度的兩種工作模式間來回切換。4. 根據(jù)權(quán)利要求2所述的特征,進(jìn)一步包含:可兼容32位及64位長度的數(shù)據(jù)緩存包 括一級數(shù)據(jù)緩存,二級數(shù)據(jù)緩存,三級數(shù)據(jù)緩存,四級數(shù)據(jù)緩存。5. 根據(jù)權(quán)利要求3所述的方法,進(jìn)一步包含: 軟件編程可控制數(shù)據(jù)緩存系統(tǒng)在32位長度和64位長度模式間進(jìn)行切換; 其中包括一級數(shù)據(jù)緩存,二級數(shù)據(jù)緩存,三級數(shù)據(jù)緩存,四級數(shù)據(jù)緩存。6. 根據(jù)權(quán)利要求4所述,數(shù)據(jù)緩存從32位模式切換到64位模式可按照如下方法實(shí)現(xiàn): 根據(jù)配置信息,緩存啟動32位模式到64位模式切換; 將所有數(shù)據(jù)緩存內(nèi)部TAG存儲器所存儲數(shù)據(jù)設(shè)置為無效,即清空數(shù)據(jù)緩存的TAG存儲 器組; 根據(jù)多路組相聯(lián)緩存地址分解規(guī)則,SET地址寬度減少一位,TAG地址寬度增加一位; 進(jìn)入64位模式。7. 根據(jù)權(quán)利要求4所述,數(shù)據(jù)緩存從64位模式切換到32位模式,可按照如下方法實(shí) 現(xiàn): 根據(jù)配置信息,緩存啟動64位模式到32位模式切換; 將所有數(shù)據(jù)緩存內(nèi)部TAG存儲器所存儲數(shù)據(jù)設(shè)置為無效,即清數(shù)據(jù)空緩存的TAG存儲 器組; 根據(jù)多路組相聯(lián)緩存地址分解規(guī)則,SET地址寬度增加一位,TAG地址寬度減少一位; 進(jìn)入32位模式。8. 基于權(quán)利要求1所述的方法,本發(fā)明所實(shí)現(xiàn)的指令緩存可在32位及64位長度的兩 種工作模式間來回切換。9. 根據(jù)權(quán)利要求7所述的特征,進(jìn)一步包含:可兼容32位及64位長度的指令緩存包 括一級指令緩存,二級指令緩存,三級指令緩存,四級指令緩存。10. 根據(jù)權(quán)利要求8所述的方法,進(jìn)一步包含: 軟件編程可控制指令緩存系統(tǒng)在32位長度和64位長度模式間進(jìn)行切換; 其中包括一級指令緩存,二級指令緩存,三級指令緩存,四級指令緩存。11. 根據(jù)權(quán)利要求9所述,指令緩存從32位模式切換到64位模式可按照如下方法實(shí) 現(xiàn): 根據(jù)配置信息,緩存啟動32位模式到64位模式切換; 將所有數(shù)據(jù)緩存內(nèi)部TAG存儲器所存儲數(shù)據(jù)設(shè)置為無效,即清空指令緩存的TAG存儲 器組; 根據(jù)多路組相聯(lián)緩存地址分解規(guī)則,SET地址寬度減少一位,TAG地址寬度增加一位; 進(jìn)入64位模式。12. 根據(jù)權(quán)利要求9所述,指令緩存從64位模式切換到32位模式,可按照如下方法實(shí) 現(xiàn): 根據(jù)配置信息,緩存啟動64位模式到32位模式切換; 將所有數(shù)據(jù)緩存內(nèi)部TAG存儲器所存儲數(shù)據(jù)設(shè)置為無效,即清空指令緩存的TAG存儲 器組; 根據(jù)多路組相聯(lián)緩存地址分解規(guī)則,SET地址寬度增加一位,TAG地址寬度減少一位; 進(jìn)入32位模式。13. -種數(shù)據(jù)和指令長度可在32位、64位間進(jìn)行切換的緩存系統(tǒng)的硬件結(jié)構(gòu),實(shí)現(xiàn)切 換過程中地址空間的正確映射。14. 權(quán)利要求12所述硬件結(jié)構(gòu)可被使用于多路組相聯(lián)緩存系統(tǒng),包括數(shù)據(jù)緩存系統(tǒng)及 指令緩存系統(tǒng)。15. 實(shí)現(xiàn)權(quán)利要求13所描述的緩存系統(tǒng),需要包含有以下全部或部分硬件模塊: 訪問地址解碼單元; TAG地址無效化處理單元; 緩存內(nèi)部TAG存儲器訪問地址變換單元; SET地址到TAG和數(shù)據(jù)存儲器地址映射單元。16. 權(quán)利14中提到的訪問地址解碼單元,擁有以下全部或部分特征: 接收外部系統(tǒng)訪問地址; 按照32位或64位模式配置信息將訪問地址拆的TAG地址部分、SET地址部分進(jìn)行長 度分配。17. 權(quán)利14中提到的TAG地址無效化處理單元,擁有以下全部或部分特征: 收到模式切換指令時,將所有緩存內(nèi)部TAG存儲器的數(shù)據(jù)有效標(biāo)志全部做無效化處 理; 處理完成后,通知其他單元或緩存系統(tǒng)外部無效化處理完成。18. 權(quán)利13中提到的SET地址到TAG和數(shù)據(jù)存儲器地址映射單元,擁有如下全部或部 分特征: 讀取32位或64位配置信息作為輸入; 以輸入地址的TAG地址部分作為輸入; 根據(jù)不同位數(shù)配置信息對TAG地址進(jìn)行處理; 將處理后的TAG地址信號正確應(yīng)用在TAG存儲器組及數(shù)據(jù)存儲器組上; 可通過對TAG存儲器組及數(shù)據(jù)存儲器組的片選信號的切換,實(shí)現(xiàn)路數(shù)正確地址映射。
【專利摘要】本發(fā)明提出一種可兼容32位和64位寬度的緩存實(shí)現(xiàn)及模式切換方法,以適應(yīng)使用不同長度指令集的應(yīng)用程序。在執(zhí)行某特定應(yīng)用程序時,首先根據(jù)本應(yīng)用程序使用的指令集長度,對硬件緩存進(jìn)行配置,使得緩存正常工作??杉嫒菥彺婵筛屿`活的適用于各個不同的應(yīng)用場合。
【IPC分類】G06F12/08
【公開號】CN105373490
【申請?zhí)枴緾N201410426516
【發(fā)明人】孟凡金, 曹一君, 嚴(yán)偉
【申請人】孟凡金, 曹一君, 嚴(yán)偉
【公開日】2016年3月2日
【申請日】2014年8月27日