并發(fā)訪問的組相聯(lián)溢出緩存的制作方法
【專利摘要】本發(fā)明包括一種用于并發(fā)訪問主緩存和溢出緩存的裝置,包括一種核心邏輯單元,用于執(zhí)行并行訪問所述主緩存和所述溢出緩存的第一指令,確定所述主緩存是否存儲請求的數(shù)據(jù),確定所述溢出緩存是否存儲所述請求的數(shù)據(jù),以及當所述主緩存和所述溢出緩存未存儲所述請求的數(shù)據(jù)時訪問主存儲器,其中所述溢出緩存存儲溢出所述主緩存的數(shù)據(jù)。
【專利說明】并發(fā)訪問的組相聯(lián)溢出緩存
[0001]相關申請案交叉申請
[0002]本發(fā)明要求2012年3月28日由Yolin Lih等人遞交的發(fā)明名稱為“并發(fā)訪問的組相聯(lián)受害者緩存(Concurrently Accessed Set Associative Victim Cache) ” 的第61/616742號美國臨時專利申請案的在先申請優(yōu)先權,該在先申請的內容以引入的方式并入本文本中,如全文再現(xiàn)一般。
[0003]關于由聯(lián)邦政府贊助的
[0004]研究或開發(fā)的聲明
[0005]不適用。
[0006]縮微平片附件的引用
[0007]不適用。
【背景技術】
[0008]幾十年來,半導體設計和制造的改進極大地提高了處理器性能和主存儲器密度。隨著處理器的時鐘速度增加,主存儲器變得更大,當處理器訪問主存儲器時可能出現(xiàn)較長的時延周期??蓪嵤┚彺娴燃?如,不同緩存級別)以降低由頻繁訪問主存儲器引起的時延和性能瓶頸。緩存可能是一個或多個小型高速相聯(lián)存儲器,其降低訪問主存儲器的平均時間。為了降低訪問主存儲器的平均時間,緩存提供了經常引用的主存儲器位置的副本。當處理器在主存儲器中讀取或寫入位置時,處理器首先檢查緩存存儲器中是否存在數(shù)據(jù)副本。如果存在,處理器指向緩存存儲器而不是速度較慢的主存儲器。
[0009]若想緩存有效,處理器需要不斷地訪問緩存而不是主存儲器。遺憾的是,緩存的大小通常較小及限制存儲主存儲器內數(shù)據(jù)的較小的子集。大小限制可固有地限制緩存內的“命中”率。當緩存保存處理器請求的有效數(shù)據(jù)副本時,發(fā)生“命中”,而當緩存無法保存請求的數(shù)據(jù)的有效副本時,發(fā)生“缺失”。當緩存內發(fā)生“缺失”,處理器可隨后訪問速度較慢的主存儲器。因此,緩存內的頻繁“缺失”對時延和處理器性能造成負面影響。一種降低“缺失”率的方法是增加緩存的大小和緩存內存儲的信息量。但是,當緩存大小增加、變得更加復雜時,緩存性能(如,訪問緩存所需的時間)通常降低。因此,通常在最小化“缺失”率和最大化緩存性能之間為緩存取得設計平衡。
[0010]可結合緩存實施受害者緩存以最小化緩存內發(fā)生的“缺失”的影響。例如,當緩存用新數(shù)據(jù)替換緩存中的舊數(shù)據(jù)時,緩存可移除舊數(shù)據(jù)并傳輸?shù)绞芎φ呔彺娲鎯?。移除老?shù)據(jù)后,當處理器請求老數(shù)據(jù)時,緩存內可能發(fā)生“缺失”。處理器可隨后訪問受害者緩存以確定老數(shù)據(jù)是否存儲在受害者緩存中。受害者緩存可能有益,因為訪問受害者緩存而不是主存儲器減少了引用從緩存中移除的缺失數(shù)據(jù)的時間。但是,受害者緩存可能有點不靈活、應用有限。例如,通常受害者緩存的大小較小,存儲的信息比緩存少以避免損害處理器時鐘速率。另外,在緩存內發(fā)生“缺失”之后,處理器訪問受害者緩存時發(fā)生時延增加。換句話說,在訪問受害者緩存之前,處理器可能需要等待至少一個時鐘周期。因此,需要方案增加受害者緩存的靈活性和可用性,從而增加處理器性能。
【發(fā)明內容】
[0011]在一項實施例中,本發(fā)明包括一種用于訪問主緩存和溢出緩存的裝置,包括一種核心邏輯單元,用于執(zhí)行并行訪問所述主緩存和所述溢出緩存的第一指令,確定所述主緩存是否存儲請求的數(shù)據(jù),確定所述溢出緩存是否存儲所述請求的數(shù)據(jù),以及當所述主緩存和所述溢出緩存未存儲所述請求的數(shù)據(jù)時訪問主存儲器,其中所述溢出緩存存儲從所述主緩存溢出的數(shù)據(jù)。
[0012]在又一項實施例中,本發(fā)明包括一種用于并發(fā)訪問主緩存和溢出緩存的裝置,包括劃分成多個主緩存塊的主緩存、劃分成多個溢出緩存塊的溢出緩存、以及用于為所述主緩存和所述溢出緩存進行存儲器管理的存儲器管理單元(MMU),其中在相同時鐘周期內訪問所述主緩存和所述溢出緩存。
[0013]在又一項實施例中,本發(fā)明包括一種用于并發(fā)訪問主緩存和溢出緩存的方法,所述方法包括,確定在主緩存內是否發(fā)生主緩存缺失,確定在溢出緩存內是否發(fā)生溢出緩存缺失,當在主緩存內發(fā)生主緩存缺失時使用第一緩存替換策略選擇主緩存條目,當在溢出緩存內發(fā)生溢出緩存缺失時使用第二緩存替換策略選擇溢出緩存條目,其中確定所述主緩存缺失和所述溢出緩存缺失是否發(fā)生在相同時鐘周期內。
[0014]結合附圖和權利要求書,可從以下的詳細描述中更清楚地理解這些和其他特征。
【專利附圖】
【附圖說明】
[0015]為了更完整地理解本發(fā)明,現(xiàn)在參考以下結合附圖和詳細描述進行的簡要描述,其中相同參考標號表不相同部分。
[0016]圖1是通用計算機系統(tǒng)的實施例的示意圖。
[0017]圖2是具有在處理芯片上嵌入不同級別的緩存的通用計算機系統(tǒng)的另一實施例的示意圖。
[0018]圖3是主存儲器和主緩存之間的組相聯(lián)映射的實施例的示意圖。
[0019]圖4是主存儲器和主緩存之間的組相聯(lián)映射的另一項實施例的不意圖。
[0020]圖5是使用透寫策略將寫入指令實施到主存儲器的方法的實施例的流程圖。
[0021]圖6是使用回寫策略將寫入指令實施到主存儲器的方法的實施例的流程圖。
[0022]圖7是使用透寫策略將讀取指令實施到主存儲器的方法的實施例的流程圖。
[0023]圖8是使用回寫策略將讀取指令實施到主存儲器的方法的實施例的流程圖。
[0024]圖9是包括共享MMU/轉換表的主緩存和溢出緩存的存儲器子系統(tǒng)的實施例的示意圖。
【具體實施方式】
[0025]最初應理解,盡管下文提供一個或多個實施例的說明性實施方案,但可使用任意數(shù)目的當前已知或現(xiàn)有的技術來實施所公開的系統(tǒng)和/或方法。本發(fā)明決不應限于下文所描述的說明性實施方案、圖式和技術,包含本文所說明并描述的示范性設計和實施方案,而是可在所附權利要求書的范圍以及其均等物的完整范圍內修改。
[0026]本文中公開的是一種并發(fā)訪問主緩存和溢出緩存的方法、裝置以及系統(tǒng)。當核心邏輯單元(例如,處理器)執(zhí)行訪問主緩存的應用時,核心邏輯單元也可并行和/或在核心邏輯單元的相同時鐘周期內訪問溢出緩存。主緩存可配置為M路組相聯(lián),而溢出緩存可配置為N路組相聯(lián),其中M和N為整數(shù)。通過并發(fā)訪問主緩存和溢出緩存,核心邏輯單元能夠訪問M+N路組相聯(lián)存儲器元件。溢出緩存可以是單獨的存儲器元件,其可用于實施與主緩存相同或者不同的替換策略。溢出緩存內的“命中”可提升到主緩存,以避免將數(shù)據(jù)清除到主存儲器和/或到其余存儲器子系統(tǒng)(例如,下一級緩存)。在一項實施例中,單個MMU可用于對主緩存和溢出緩存進行存儲器管理功能,例如,地址轉換和/或存儲器保護。
[0027]圖1是通用計算機系統(tǒng)100的實施例的不意圖。通用計算機系統(tǒng)100可以是計算機或網絡部件,其具有足夠的處理能力、存儲資源和網絡吞吐能力來處理其上的必要工作量,例如通過網絡傳輸和處理數(shù)據(jù)。在一項實施例中,通用計算機系統(tǒng)100可以是用來在網絡內傳輸數(shù)據(jù)的任意網絡設備,例如,路由器、交換機和/或網橋。通用計算機系統(tǒng)100可以包括一個或多個入端口或單元112和一個或多個出端口或單元114。在一項實施例中,入端口或單元112和出端口或單元114可以是物理和/或邏輯端口。入端口或單元112可耦合到接收器(Rx) 108,用于從其他網絡設備接收信號和數(shù)據(jù),而出端口或單元114可耦合到發(fā)射器(Tx) 110,用于向其他網絡設備傳輸信號和數(shù)據(jù)。RxlOS和TxllO可為如下形式:調制解調器、調制解調器銀行、以太網卡、通用串行總線(USB)接口卡、串行接口、令牌環(huán)卡、光纖分布式數(shù)據(jù)接口(FDDI)卡、無線局域網(WLAN)卡、無線收發(fā)器卡和/或其他公知網絡設備,其中所述無線收發(fā)器卡包括碼分多址(CDMA)、全球移動通信系統(tǒng)(GSM)、長期演進(LTE)、全球微波接入互操作性(WiMAX)和其他空中接口協(xié)議無線收發(fā)器卡。
[0028]通用計算機系統(tǒng)100還可包括耦合到Rxl08和TxllO的核心邏輯單元102,其中核心邏輯單元102可用于實施本文所述的任一方案,例如,訪問主緩存104、溢出緩存106、主存儲器116以及存儲器子系統(tǒng)118的其他層。核心邏輯單元102還可用于實施下文詳細描述的方法500、600、700和800。核心邏輯單元102可包括一個或多個中央處理器(CPU)芯片、現(xiàn)場可編程門陣列(FPGA)、專用集成電路(ASIC),和/或數(shù)字信號處理器(DSP),并且/或者可以是一個或多個ASIC的一部分。在一項實施例中,核心邏輯單元102可包括一個或多個處理器,其中每個處理器為多核處理器。
[0029]圖1示出了核心邏輯單元102可耦合到輔助存儲器109和存儲器子系統(tǒng)118。輔助存儲器109通常包括一個或多個磁盤驅動器、磁帶驅動器、閃存存儲器和/或其他易失性存儲器部件。當存儲器子系統(tǒng)118的容量不足以存儲所有工作數(shù)據(jù)時,輔助存儲器109可配置為溢流數(shù)據(jù)存儲設備。輔助存儲器109可以用于存儲程序,當選擇執(zhí)行這些程序時,所述程序將加載到存儲器子系統(tǒng)118中。存儲器子系統(tǒng)118可用于為核心邏輯單元存儲易失性數(shù)據(jù)和指令。在一項實施例中,存儲器子系統(tǒng)118可包括一個或多個隨機存取存儲器(RAM)存儲器部件(例如,靜態(tài)RAM (SRAM)和動態(tài)RAM (DRAM))。訪問存儲器子系統(tǒng)118通常比訪問輔助存儲器109要快。輔助存儲器109和/或存儲器子系統(tǒng)118可以是非瞬時計算機可讀介質,可以不包括瞬時、傳播的信號。任一輔助存儲器109和/或存儲器子系統(tǒng)118可用來寫入和/或讀取(如,存儲和/或加載)數(shù)據(jù)。核心邏輯單元102可用來從輔助存儲器109和/或存儲器子系統(tǒng)118寫入和/或讀取數(shù)據(jù)。
[0030]存儲器子系統(tǒng)118可包括主緩存104、溢出緩存106和主存儲器116。主緩存104可以是可組織成一個或多個緩存級別(例如,級別I(Ll)緩存和級別2 (L2)緩存)的數(shù)據(jù)緩存。主緩存104可存儲從主存儲器116獲取的實際數(shù)據(jù)。與主存儲器116向比,主緩存104通??删哂懈斓脑L問速度和/或更小的存儲容量。主緩存104可用于存儲和/或加載物理地址或虛擬地址。例如,當核心邏輯單元102為單個處理器時,主緩存104可以存儲虛擬地址?;蛘撸敽诵倪壿媶卧?02為多處理器時,主緩存104可以存儲物理地址。溢出緩存106可以是單獨的存儲器元件,用于存儲從主緩存104移除的數(shù)據(jù)。當主緩存104已滿、無法存儲數(shù)據(jù)時,溢出緩存106可作為數(shù)據(jù)的溢出存儲器。溢出緩存106的大小和溢出緩存106的配置將在下文詳細論述。如上所述,主緩存104和溢出緩存106可以是RAM存儲器部件(比如,SRAM)。
[0031]在主緩存104和/或溢出緩存106中發(fā)生“缺失”后,可訪問主存儲器116。在一項實施例中,主存儲器116可以是主緩存104和溢出緩存106之后的下一級存儲器。和主緩存和溢出緩存106相比,主存儲器116的容量可能更大,但是運行較慢。存儲隊列(未在圖1中示出)可緩存指定給主存儲器116內的存儲的主存儲器地址和數(shù)據(jù)。將數(shù)據(jù)寫入主存儲器116之前,數(shù)據(jù)可以先放入存儲隊列。存儲隊列可以防止先讀后寫和先寫后寫的依賴錯誤。在一項實施例中,存儲隊列可以是內容可尋址存儲器(CAM)。同樣地,當在主緩存104和溢出緩存106中進行加載指令時,在從主存儲器116中進行讀取前,加載“缺失”隊列(未在圖1中示出)可以緩存缺失的主存儲器地址。加載“缺失”隊列在將從主存儲器116讀取的數(shù)據(jù)存儲到主緩存104之前也可緩存從主存儲器116中讀取的數(shù)據(jù)。
[0032]圖2是具有在處理芯片上嵌入不同級別的緩存的通用計算機系統(tǒng)200的另一實施例的示意圖。通用計算機系統(tǒng)200包括具有片上緩存的兩個處理芯片206。處理芯片206可用于儲存核心邏輯單元102和主緩存級別。具體而言,圖2示出了 LI緩存202和L2緩存204可嵌入到相同處理芯片206上作為核心邏輯單元102。LI緩存202和L2緩存204可以是主緩存104中發(fā)現(xiàn)的不同緩存級別。核心邏輯單元102在訪問L2緩存204之前可以訪問LI緩存202。在一項實施例中,L2緩存204可以比LI緩存202更大,訪問L2緩存204速度比訪問LI緩存202更慢。處理芯片206的其他實施例可以包括不含嵌入的緩存或含有嵌入的LI緩存202但是在處理芯片206中不含嵌入的L2緩存204。所屬領域的普通技術人員意識到緩存的其他級別可以嵌入到處理芯片206中(例如,級別O(LO)緩存)。入端口和/或單元112、Rxl08、TxllO、出端口和/或單元114以及輔助存儲器109已在上文論述。
[0033]存儲器子系統(tǒng)208可在處理芯片206外部,可以包括圖1所論述的存儲器子系統(tǒng)116的部分,但是不嵌入在處理芯片206中。每個處理芯片206可耦合到存儲器子系統(tǒng)208,其用于存儲易失性數(shù)據(jù)。如圖2所示,其余存儲器子系統(tǒng)208可包括一個或多個溢出緩存106,用于存儲從不同級別緩存移除的數(shù)據(jù)。例如,溢出緩存106可用于存儲來自LI緩存202的移除數(shù)據(jù),而第二溢出緩存106可用于存儲來自L2緩存204的移除數(shù)據(jù)。另外,可以將溢出緩存106分配給在不同處理芯片206內嵌入的每個級別的緩存(例如,LI緩存202)。例如,在圖2中,可以將不同的溢出緩存106分配給嵌入到第二處理芯片206中的第二 LI緩存202。在一項實施例中,一些或所有溢出緩存106可嵌入到處理芯片206中。另外,溢出緩存106可分配到一些緩存級別和/或一些處理芯片206。本領域普通技術人員意識到通用計算機系統(tǒng)200可包括未嵌入到處理芯片206中的多于兩個級別的緩存(例如,級別3(L3)緩存),其中每個級別的緩存分配到溢出緩存106。
[0034]圖3是主存儲器300和主緩存302之間的組相聯(lián)映射的實施例的示意圖。主存儲器300和主緩存302可大體上分別類似于圖1所論述的主存儲器116和主緩存104。主存儲器300和主緩存302可用存儲器地址作為索引,存儲器地址表示主存儲器300或主緩存302內數(shù)據(jù)存儲的位置?!八饕绷?04可為主存儲器300的地址引用索引字段(例如,地址索引O至N),而“索引”列306為主緩存302的地址引用索引字段(例如,緩存行)。如圖3所示,主緩存302可具有地址索引值“O”和“I”?!奥贰绷?08可以根據(jù)“路”列308中不同“路”值的數(shù)目為主緩存302確定組相聯(lián)。組相聯(lián)配置可映射主存儲器中的每個條目到主緩存內的多于一個條目但少于所有的條目?!奥贰敝档臄?shù)目可表示主緩存302內的地址位置的數(shù)目,主存儲器300內的特定地址位置可緩存到主緩存302。圖3示出了主緩存302可具有兩個不同“路”值“O”和“1”,因此,主緩存302可指定為2路組相聯(lián)。主存儲器地址作為一個2路組相聯(lián)緩存,可以映射到主緩存302的兩個不同地址位置。如圖3所示,具有地址索引“O”的主存儲器300可映射到主緩存302的地址索引O路O (0-way O)和索引O路I (0-way I),具有地址索引“I”的主存儲器300可映射到主緩存302的地址索引I路O (1-way O)和索引I路I (1-way I),具有地址索引“2”的主存儲器300可映射到主緩存302的地址索引O m O (0-way O)和索引O路I (0-way I),以及具有地址索引“3”的主存儲器300可映射到主緩存302的地址索引I路O (1-way O)和索引I路I (1-way I)。在另一項實施例中,主緩存302可以是M路組相聯(lián)(比如4路組相聯(lián)或8路組相聯(lián)),其中特定主存儲器300的位置可映射到主緩存302的M各不同存儲器位置。
[0035]主緩存302的其他實施例可以是直接映射緩存或全相聯(lián)緩存。直接映射緩存可以將主存儲器300內的一個存儲器位置映射到主緩存302的一個存儲器位置。換句話說,直接映射緩存可以是主緩存302的I路組相聯(lián)。全相聯(lián)是指主存儲器300中的每個條目都可以映射到主緩存302的存儲器的任一位置。以圖3為例,索引地址“O”可映射到地址索引O路
O(0-way O)、地址索引O路I (0-way I)、地址索引I路O (1-way O)、地址索引I路I (1-wayI)以及主緩存302內的任意其他存儲器位置。
[0036]圖4是主存儲器400和主緩存402之間的組相聯(lián)映射的另一項實施例的示意圖。主存儲器400可大體上類似于圖3所論述的主存儲器300。圖4示出了主存儲器400可進一步包括數(shù)據(jù)列400,其代表在索引列304中示出的不同主存儲器索引地址處存儲的數(shù)據(jù)。主緩存402可大體上類似于圖3所論述的主緩存302,除了主緩存402可包括附加標簽列406和數(shù)據(jù)列408。標簽列406可表示存儲數(shù)據(jù)列408內發(fā)現(xiàn)的相同數(shù)據(jù)的主存儲器索引地址。圖4示出了經由箭頭主存儲器400到主緩存402的當前映射。如圖4所示,分別針對主緩存402的索引O路0(0-way O)、索引O路I (0_way I)、索引I路0(liay O)以及索弓丨1路l(l-Way I),可在數(shù)據(jù)列408內發(fā)現(xiàn)主存儲器索引地址0-3處存儲的數(shù)據(jù)。因此,索引O路0(0-way O)、索引O路I (0_way I)、索引I路0(liay O)以及索引I路I (IiayI)的標簽列406和數(shù)據(jù)列408可分別對應于主存儲器索引地址0-3的索引列304和數(shù)據(jù)列404。
[0037]根據(jù)溢出緩存性能和主緩存的“缺失”率,可靈活調整溢出緩存的緩存參數(shù),例如,地址到主存儲器的映射、容量以及緩存替換策略。和主緩存402類似,溢出緩存可用于作為上文論述的全相聯(lián)、組相聯(lián)或者直接映射緩存映射到主存儲器400。溢出緩存的映射相聯(lián)可以和主緩存402相同或者不同。例如,主緩存402和溢出緩存都可以是4路相聯(lián)緩存并使用1:1比率作為“路”相聯(lián)的數(shù)目。主緩存402的其他實施例可以是M路相聯(lián)緩存,而溢出緩存是N路相聯(lián)緩存,其中M的值與N的值不同。此外,溢出緩存的容量可以調整、可以不是固定大小。例如,溢出緩存的初始容量大約為8千字節(jié)(KB)。當主緩存的“缺失”率過高時,溢出緩存的容量可增至32KB。主緩存的容量也可以與溢出緩存的容量相同或者不同。
[0038]可使用緩存替換策略的變體,例如Belady算法、最近最少使用算法(LRU)、最近最多使用算法(MRU)、隨機替換、先入先出(FIFO),以確定從溢出緩存和/或主緩存402移除哪個緩存條目(例如,緩存線)??蔀橐绯鼍彺媾渲门c主緩存402不同的緩存替換策略。例如,可為溢出緩存配置隨機替換緩存替換策略,而可為主緩存402配置LRU緩存替換策略??梢哉{整溢出緩存的緩存替換策略以為主緩存402和溢出緩存最小化“缺失”率。
[0039]圖5是使用透寫策略將寫入指令實施到主存儲器的方法500的實施例的流程圖。當數(shù)據(jù)同時寫入到主存儲器、主緩存和/或溢出緩存時,可使用方法500。方法500最初接收指令將數(shù)據(jù)寫入到某個主存儲器位置。接收寫入指令后,方法500在塊502處開始并確定是否存在主緩存“命中”。如果發(fā)生主緩存“命中”,那么方法500移動到塊506并將數(shù)據(jù)寫入到主緩存內的對應的“命中”條目。然后,方法500繼續(xù)到塊510以寫入數(shù)據(jù)到主存儲器。但是,如果方法500確定塊502處未發(fā)生主緩存“命中”,然后方法可進入塊504。在塊504處,方法500確定是否存在溢出緩存“命中”。如果發(fā)生溢出緩存“命中”,那么方法500繼續(xù)到塊508并將數(shù)據(jù)寫入到溢出緩存內的對應的“命中”條目。在一項實施例中,在某一時間間隔中發(fā)生一個或多個“命中”,方法500可提升溢出緩存內的對應的“命中”條目到主緩存。在另一項實施例中,方法500可能不會將溢出緩存內的對應的“命中”條目提升到主緩存。一旦方法500完成塊508,方法500可移動到塊510以寫入數(shù)據(jù)到主存儲器?;氐綁K504,當方法500確定在塊504處未發(fā)生溢出緩存“命中”,然后方法500進入塊510以寫入數(shù)據(jù)到主存儲器。在方法500完成塊510后,方法500結束。方法500可并行(例如,在相同計算邏輯單元時鐘周期內)完成塊502和塊504。
[0040]圖6是使用回寫策略將寫入指令實施到主存儲器的方法600的實施例的流程圖。針對回寫策略,數(shù)據(jù)最初寫入主緩存而不是主存儲器。當包含數(shù)據(jù)的溢出緩存條目將要改變/由從主緩存移除的數(shù)據(jù)替換時,才寫入主存儲器。主緩存條目可以標記為“臟”,這樣數(shù)據(jù)在從溢出緩存移除后可寫入主存儲器。當主緩存內的移除數(shù)據(jù)標記為“臟”時,可能發(fā)生寫入溢出緩存內的條目。
[0041]方法600可以從塊602開始。塊602、604、606和608可大體上類似于方法500的塊502、504、506和508。另外,塊602和604可以由方法600并行進行,類似于方法500可并行執(zhí)行塊502和504。在塊610處,方法600可選擇主緩存內的條目(例如,緩存線)以寫入數(shù)據(jù)。與透寫策略相比,可選擇主緩存內的條目,因為回寫策略最初寫入主緩存而不是主存儲器。方法600可在塊610處使用任一本領域公知的緩存替換策略(例如,F(xiàn)IFO)。方法600隨后移動到塊612并確定主緩存內的條目是否為“臟”。如果條目為“臟”(例如,數(shù)據(jù)未寫入到主存儲器),隨后方法600可移動到塊614。相反,如果條目不為“臟”,方法600移動到塊622。在塊622處,方法600將數(shù)據(jù)寫入到主緩存內所選條目。隨后,方法600可繼續(xù)到塊624以標注主緩存內的條目為“臟”,隨后結束。
[0042]回到塊614,方法600確定是否溢出緩存已滿。當為主緩存內的“臟”條目分配的溢出緩存條目已存儲數(shù)據(jù),溢出緩存已滿。例如,針對N路組相聯(lián)溢出緩存,當為主緩存內的“臟”條目分配的所有N個溢出緩存位置已存儲數(shù)據(jù),溢出緩存已滿。如果溢出緩存已滿,那么方法600移動到塊616并選擇一個溢出緩存條目以寫入主緩存的“臟”條目內的數(shù)據(jù)。如上所述,當選擇溢出緩存條目時,方法600可使用本領域公知的任一緩存替換策略。隨后,方法600移動到塊618并將位于所選溢出緩存條目的數(shù)據(jù)寫入到主存儲器。方法600隨后移動到塊620?;氐綁K614,當溢出緩存未滿,那么方法600繼續(xù)塊620。在塊620處,方法600將主緩存的“臟”條目內的數(shù)據(jù)寫入到所選溢出緩存條目。在方法600完成塊620后,方法600移動到塊610并執(zhí)行如上所述的塊功能。
[0043]圖7是使用透寫策略將讀取指令實施到主存儲器的方法700的實施例的流程圖。當在主緩存和/或溢出緩存中發(fā)生“命中”時,方法700可使用來自主緩存和/或溢出緩存的“命中”條目以返回由核心邏輯單元或其他應用要求的數(shù)據(jù)。當在主緩存和/或溢出緩存中發(fā)生“缺失”時,方法700可加載來自主存儲器的數(shù)據(jù)到主緩存。塊702和704可分別大體上類似于方法500的塊502和504。此外,方法700可并行(例如,在相同時鐘周期內)執(zhí)行塊702和704。
[0044]在塊704處,如果方法700確定不存在溢出緩存“命中”,方法700可移動到塊706以選擇主緩存內的替換條目。方法700可執(zhí)行本領域公知的任一緩存替換策略。隨后,方法700可繼續(xù)到塊708并讀取來自主存儲器的數(shù)據(jù)。方法700讀取來自主存儲器的數(shù)據(jù),因為主緩存和溢出緩存內未發(fā)生“命中”。方法700可隨后繼續(xù)到塊710并將從主存儲器讀取的數(shù)據(jù)加載到主緩存內的替換條目。方法700加載從主存儲器讀取的數(shù)據(jù),因為主緩存和/或溢出緩存內發(fā)生“缺失”。在塊710處,當加載從主存儲器讀取的數(shù)據(jù)時,方法700可移除已經存儲在主緩存里的數(shù)據(jù)。隨后,方法700可繼續(xù)到塊712并返回數(shù)據(jù)到核心邏輯單元(例如,處理器)。
[0045]圖8是使用回寫策略將讀取指令實施到主存儲器的方法800的實施例的流程圖。針對主緩存和/或溢出緩存的回寫策略中的讀取指令引起的“缺失”可能導致請求“缺失的”數(shù)據(jù)替換緩存條目。讀取“缺失”可能導致兩種主存儲器訪問:一種是將來自溢出緩存的替換數(shù)據(jù)寫入到主存儲器,另一種是檢索來自主存儲器的請求“缺失的”數(shù)據(jù)。塊802、804、806、818、820和824分別大體上類似于方法700的塊702、704、706、708、710和712。此外,塊810、812、814和816分別大體上類似于方法600的塊614、616、618和620。在塊822處,方法800可標注主緩存內的替換條目為“非臟”,因為替換條目內的數(shù)據(jù)是從主存儲器中獲得的。
[0046]圖9是包括共享享MMU/轉換表904的主緩存和溢出緩存的存儲器子系統(tǒng)900的實施例的示意圖。存儲器子系統(tǒng)900可包括主緩存、溢出緩存、MMU/轉換表904、主緩存標簽塊906和溢出緩存標簽塊908。圖9示出了主緩存和溢出緩存可劃分成4個不同塊(比如,主緩存塊1-4910和溢出緩存塊1-4912)以形成4路組相聯(lián)主緩存和4路組相聯(lián)溢出緩存。主緩存塊1-4910和溢出緩存塊1-4912可以是數(shù)據(jù)緩存塊,所述塊存儲從主存儲器獲取的實際數(shù)據(jù)。以圖4為例,在數(shù)據(jù)列408內的數(shù)據(jù)可表示存儲在主緩存塊1-4910和溢出緩存塊1-4912中的數(shù)據(jù)。如上所述,主緩存的其他實施例可配置為M路組相聯(lián)主緩存,而溢出緩存可具有N路組相聯(lián)溢出緩存,其中“M”和“N”值可能不同。當主緩存配置為M路組相聯(lián)主緩存和溢出緩存配置為N路組相聯(lián)溢出緩存,主緩存可劃分為M各不同主緩存塊910,而溢出緩存可劃分為N個不同的溢出緩存塊912。
[0047]此外,主緩存和溢出緩存的容量可能互不相同。例如,在一項實施例中,主緩存和溢出緩存的容量可以是1:1比率,例如,主緩存和溢出緩存的容量都為32KB。在這個例子中,每個主緩存塊1-4910和每個溢出緩存塊1-4912可具有8KB的容量(32KB/4塊)。在另一項實施例中,主緩存和溢出緩存的容量可以是1:4比率,例如,主緩存的容量為32KB,溢出緩存的容量為8KB。針對此種配置,每個主緩存塊1-4910可具有8KB的容量(32KB/4塊),每個溢出緩存塊1-4912可具有2KB的容量(8KB/4塊)。
[0048]MMU/轉換表904可用于將虛擬地址轉換為物理地址或者將物理地址轉換為虛擬地址。當主緩存塊910和溢出緩存塊912用于存儲物理地址時,MMU/轉換表904可用于將虛擬地址轉換為物理地址。MMU/轉換表404可包括地址轉換表,所述表包括將虛擬地址映射到物理地址的條目。MMU/轉換表904可還用于維護頁面信息、執(zhí)行權限跟蹤以及實施存儲器保護。如圖9所述,主緩存和溢出緩存間可共享一個MMU/轉換表904。分享單個的MMU/轉換表904及并行訪問溢出緩存和主緩存可降低時延并提高核心邏輯單元的性能。在一項實施例中,MMU/轉換表904可以是存儲器保護單元(MPU),所述MPU可實施存儲器保護,但是不能將虛擬地址轉換為物理地址或者將物理地址轉換為虛擬地址。
[0049]主緩存標簽塊906可為每個主緩存塊910內存儲的數(shù)據(jù)引用主存儲器地址。因此,主緩存標簽塊906可為每個主緩存塊910提供4個不同的標簽地址。以圖4為例,標簽列406內的標簽地址可代表存儲在主緩存標簽塊906內的同種類型的標簽地址。主緩存標簽塊906下描繪的4個箭頭可代表每個主緩存塊1-4910的4個不同標簽地址。例如,主緩存塊1910可具有主緩存標簽塊906內存儲的“O”的標簽地址和主緩存塊2910可具有主緩存標簽塊906內存儲的“I”的標簽地址。溢出緩存標簽塊908可大體上類似于主緩存標記塊906。除了溢出緩存標簽塊908可為每個溢出緩存塊912內存儲的數(shù)據(jù)引用主存儲器地址,溢出緩存標簽塊908可大體上類似于主緩存標簽塊906。圖9也描繪了溢出緩存標簽塊908下的4個箭頭。每個箭頭代表與對應的溢出緩存標簽塊1-4912相聯(lián)的不同標簽地址。在主緩存標簽塊906和溢出緩存標簽塊908內存儲的標簽地址可以是物理或虛擬存儲器地址。當MMU/轉換表904將虛擬存儲器地址轉換為物理存儲器地址時,主緩存標簽塊906和溢出緩存標簽塊908可存儲物理存儲器地址。
[0050]圖9示出了存儲器子系統(tǒng)900可接收來自核心邏輯單元的存儲器訪問命令902,例如加載/讀取來自主存儲器地址的數(shù)據(jù)的指令。當存儲器子系統(tǒng)900接收存儲器訪問命令902時,存儲器訪問命令902可為MMU/轉換表904、溢出緩存標簽塊908、主緩存標簽塊906、主緩存塊1-4910以及溢出緩存塊1-4912提供主存儲器地址。在一項實施例中,主存儲器地址可以是由程序和/或應用生成的虛擬存儲器地址。MMU/轉換表904可將虛擬存儲器地址轉換為物理存儲器地址并將物理存儲器地址輸入到標簽對比部件916。本領域普通技術人員意識到核心邏輯單元可輸送多個不同類型的指令,例如,獲取指令、解碼指令和存儲器訪問命令902。
[0051]主緩存標簽塊906和溢出緩存標簽塊908可使用存儲器訪問命令902提供所選標簽地址并將標簽地址輸入到標簽對比部件916。標簽對比部件916可以是額外的計算邏輯,其對比輸入的標簽地址和轉換的物理存儲器地址以確定是否發(fā)生匹配并輸出值到“路”復用器914。例如,如果至少一個標簽地址匹配轉換的物理存儲器地址,標簽對比部件916可輸出選擇對應的主緩存塊910和/或溢出緩存塊912的值。否則,標簽對比部件916可生成“空”值(比如,“O”值),所述值可以不選擇由主緩存塊910和/或溢出緩存塊912提供給“路”復用器914的任意數(shù)據(jù)。
[0052]主緩存塊1-4910和溢出緩存塊1-4912可使用存儲器訪問命令902以選擇相關緩存條目并輸出緩存條目內的數(shù)據(jù)到“路”復用器914?!奥贰睆陀闷?14可以接收來自標簽對比部件916的輸入并確定是否選擇來自主緩存塊1-4910或來自溢出緩存塊1-4912的任一數(shù)據(jù)輸入。第一 “路”復用器914可確定主緩存是否存儲存儲器訪問命令902中請求的數(shù)據(jù),而第二 “路”復用器914可確定溢出緩存是否存儲存儲器訪問命令902中請求的數(shù)據(jù)。當主緩存塊910之一存儲存儲器訪問命令902中請求的數(shù)據(jù)時,“路”復用器914可生成主緩存中“命中”對應的主緩存讀取數(shù)據(jù)輸出918。當溢出緩存塊912之一存儲存儲器訪問命令902中請求的數(shù)據(jù)時,另一 “路”復用器914可生成溢出緩存中“命中”對應的溢出緩存讀取數(shù)據(jù)輸出920。當不存在主緩存讀取數(shù)據(jù)輸出918和/或溢出緩存讀取數(shù)據(jù)輸出920時,在主緩存和/或溢出緩存內發(fā)生“缺失”。
[0053]可分割存儲器訪問命令902內的主存儲器地址,使得溢出緩存標簽塊908和主緩存標簽塊906與最高有效位有關,而主緩存塊910和溢出緩存塊912與最低有效位有關。例如,如果主存儲器的容量為4兆字節(jié)(GB),可使用32位代表不同的主存儲器地址(比如,2~32 = 4,294,967,296)。如果每個主緩存塊910的容量為8KB (例如,主緩存的總容量等于32KB),那么可使用低13位為主緩存塊910引用存儲器地址空間(比如,2~13 = 8192)。例如,如果主存儲器地址的低13位為“0000000000000”,“0000000000000”可引用每個主緩存塊910的第一地址空間。然后可使用高19位為主緩存標簽塊910引用存儲器地址空間。在另一項實施例中,這緩存和受害者緩存可分割主存儲器地址,只要最高有效位(MSB)指定給標簽地址,中間位指定給數(shù)據(jù)塊,最低有效位(LSB)為標志位保留,例如指定緩存條目是否為“臟”。本領域普通技術人員意識到可使用和上文所述的分割主存儲器地址不同的其他緩存條目結構。
[0054]應理解,通過將可執(zhí)行指令編程和/或加載至通用計算機系統(tǒng)100,核心邏輯單元102、存儲器子系統(tǒng)118和輔助存儲器109中的至少之一被改變,將計算機系統(tǒng)500的一部分轉換成特定機器或裝置,如,本發(fā)明宣揚的擁有新穎功能的網絡模式。加載可執(zhí)行軟件至計算機所實現(xiàn)的功能可以通過公知設計規(guī)則轉換成硬件實施,這在電力工程和軟件工程領域是很基礎的。決定使用軟件還是硬件來實施一個概念通常取決于對設計穩(wěn)定性及待生產的單元數(shù)量的考慮,而不是從軟件領域轉換至硬件領域中所涉及的任何問題。一般來說,經常變動的設計更適于在軟件中實施,因為重新編寫硬件實施比重新編寫軟件設計更為昂貴。而穩(wěn)定及大量生產的設計更適于在硬件中實施,因為大量生產運行實施的硬件較軟件實施更為便宜。設計通??梢砸攒浖问竭M行開發(fā)和測試,之后通過公知設計規(guī)則轉變成專用集成電路中等同的硬件實施,該集成電路硬線軟件指令。由新ASIC控制的機器是一特定的機器或裝置,同樣地,編程和/或加載有可執(zhí)行指令的電腦可視為特定的機器或裝置。
[0055]本發(fā)明公開至少一項實施例,且所屬領域的普通技術人員對所述實施例和/或所述實施例的特征作出的變化、組合和/或修改均在本發(fā)明公開的范圍內。因組合、合并和/或省略所述實施例的特征而得到的替代性實施例也在本發(fā)明的范圍內。應當理解的是,本發(fā)明已明確闡明了數(shù)值范圍或限制,此類明確的范圍或限制應包括涵蓋在上述范圍或限制(如從大約I至大約10的范圍包括2、3、4等;大于0.10的范圍包括0.11,0.12,0.13等)內的類似數(shù)量級的迭代范圍或限制。例如,每當公開具有下限Rl和上限Ru的數(shù)值范圍時,具體是公開落入所述范圍內的任何數(shù)字。具體而言,特別公開所述范圍內的以下數(shù)字:R =尺1+1^0?11-1?1),其中1^為從1%到100%范圍內以1%遞增的變量,即,k為1%、2%、3%、4%,7%, -.70%,71%,72%,...、97%、96%、97%、98%、99%或 100%。此外,還特此公開了,上文定義的兩個R值所定義的任何數(shù)值范圍。除非另有說明,否則使用術語約是指隨后數(shù)字的±10%。相對于權利要求的某一要素,術語“可選擇”的使用表示該要素可以是“需要的”,或者也可以是“不需要的”,二者均在所述權利要求的范圍內。使用如“包括”、“包含”和“具有”等較廣術語應被理解為提供對如由“…組成”、“基本上由…組成”以及“大體上由…組成”等較窄術語的支持。因此,保護范圍不受上文所述的限制,而是由所附權利要求書定義,所述范圍包含所附權利要求書的標的物的所有等效物。每項和每條權利要求作為進一步公開的內容并入說明書中,且權利要求書是本發(fā)明的實施例。所述揭示內容中的參考的論述并不是承認其為現(xiàn)有技術,尤其是具有在本申請案的在先申請 優(yōu)先權日:期之后的
【公開日】期的任何參考。本發(fā)明中所引用的所有專利、專利申請案和公開案的揭示內容特此以引用的方式并入本文本中,其提供補充本發(fā)明的示例性、程序性或其他細節(jié)。
[0056]雖然本發(fā)明中已提供若干實施例,但應理解,在不脫離本發(fā)明的精神或范圍的情況下,本發(fā)明所公開的系統(tǒng)和方法可以以許多其他特定形式來體現(xiàn)。本發(fā)明的實例應被視為說明性而非限制性的,且本發(fā)明并不限于本文本所給出的細節(jié)。例如,各種元件或部件可以在另一系統(tǒng)中組合或合并,或者某些特征可以省略或不實施。
[0057]此外,在不脫離本發(fā)明的范圍的情況下,各種實施例中描述和說明為離散或單獨的技術、系統(tǒng)、子系統(tǒng)和方法可以與其他系統(tǒng)、模塊、技術或方法進行組合或合并。展示或論述為彼此耦接或直接耦接或通信的其他項也可以采用電方式、機械方式或其他方式通過某一接口、裝置或中間部件間接地耦接或通信。其他變化、替代和改變的示例可以由本領域的技術人員在不脫離本文精神和所公開的范圍的情況下確定。
【權利要求】
1.一種用于并發(fā)訪問主緩存和溢出緩存的裝置,其特征在于,包括: 核心邏輯單元,用于 執(zhí)行并行訪問所述主緩存和所述溢出緩存的第一指令; 確定所述主緩存是否存儲請求的數(shù)據(jù); 確定所述溢出緩存是否存儲所述請求的數(shù)據(jù);以及 當所述主緩存和所述溢出緩存未存儲所述請求的數(shù)據(jù)時,訪問主存儲器, 其中所述溢出緩存存儲從所述主緩存中溢出的數(shù)據(jù)。
2.根據(jù)權利要求1所述的裝置,其特征在于,當所述主緩存和所述溢出緩存未存儲所述請求的數(shù)據(jù)時,使用第一緩存替換策略選擇主緩存條目,將存儲在所述主緩存條目中的移除數(shù)據(jù)發(fā)送到所述溢出緩存待存儲。
3.根據(jù)權利要求2所述的裝置,其特征在于,所述核心邏輯單元還用于從所述主存儲器獲得所述請求的數(shù)據(jù),所述從主存儲器獲得的請求的數(shù)據(jù)存儲在所述主緩存條目中。
4.根據(jù)權利要求2所述的裝置,其特征在于,使用第二緩存替換策略選擇溢出緩存條目以存儲移除數(shù)據(jù)。
5.根據(jù)權利要求4所述的裝置,其特征在于,當所述主緩存條目標記為臟時,所述溢出緩存條目內存儲的老數(shù)據(jù)寫入所述主存儲器。
6.根據(jù)權利要求1所述的裝置,其特征在于,所述主緩存用于M路組相聯(lián),所述溢出緩存用于N路組相聯(lián),以及所述M路組相聯(lián)不同于所述N路組相聯(lián)。
7.根據(jù)權利要求1所述的裝置,其特征在于,當所述溢出緩存存儲所述請求的數(shù)據(jù)時,所述請求的數(shù)據(jù)提升到所述主緩存。
8.根據(jù)權利要求1所述的裝置,其特征在于,所述第一指令的請求的數(shù)據(jù)存儲在所述溢出緩存中,所述核心邏輯單元還用于執(zhí)行并行接入所述主緩存和所述溢出緩存的第二指令,所述第二指令請求所述第一指令的相同請求的數(shù)據(jù),以及所述請求的數(shù)據(jù)在所述第二指令后提升到所述主緩存。
9.根據(jù)權利要求1所述的裝置,其特征在于,當所述溢出緩存存儲所述請求的數(shù)據(jù)時,所述請求的數(shù)據(jù)不提升到所述主緩存。
10.根據(jù)權利要求1所述的裝置,其特征在于,所述并行訪問所述主緩存和所述溢出緩存包括在相同時鐘周期內訪問所述主緩存和所述溢出緩存。
11.根據(jù)權利要求1所述的裝置,其特征在于,所述主緩存和所述溢出緩存具有相同的存儲器容量。
12.一種用于并發(fā)訪問主緩存和溢出緩存的裝置,其特征在于,包括: 劃分成多個主緩存塊的主緩存; 劃分成多個溢出緩存塊的溢出緩存; 用于為所述主緩存和所述溢出緩存進行存儲器管理的存儲器管理單元(MMU), 其中在相同時鐘周期內訪問所述主緩存和所述溢出緩存。
13.根據(jù)權利要求12所述的裝置,其特征在于,所述裝置還包括主緩存標簽塊和溢出緩存標簽塊,所述主緩存標簽塊用于存儲對應于存儲在所述主緩存塊內的數(shù)據(jù)的多個第一主存儲器地址,所述溢出緩存標簽塊用于存儲對應于存儲在所述主緩存塊內的數(shù)據(jù)的多個第二主存儲器地址。
14.根據(jù)權利要求13所述的裝置,其特征在于,所述MMU還用于接收包括主存儲器地址的存儲器訪問命令以及轉換所述主存儲器地址為解碼的主存儲器地址,所述解碼的主存儲器地址用于確定所述主緩存和所述溢出緩存是否存儲所述解碼的主存儲器地址對應的數(shù)據(jù)。
15.根據(jù)權利要求14所述的裝置,其特征在于,所述解碼的主存儲器地址與所述第一主存儲器地址之一對比,所述解碼的主存儲器地址與所述第二主存儲器地址之一對比。
16.根據(jù)權利要求12所述的裝置,其特征在于,所述MMU用于轉換虛擬存儲器地址為物理存儲器地址。
17.一種用于并發(fā)訪問主緩存和溢出緩存的方法,其特征在于,所述方法包括: 確定主緩存內是否發(fā)生主緩存缺失; 確定溢出緩存內是否發(fā)生溢出緩存缺失; 當主緩存內發(fā)生主緩存缺失時使用第一緩存替換策略選擇主緩存條目;以及 當溢出緩存內發(fā)生溢出緩存缺失時使用第二緩存替換策略選擇溢出緩存條目, 其中在相同時鐘周期內確定是否發(fā)生所述主緩存缺失和所述溢出緩存缺失。
18.根據(jù)權利要求17所述的方法,其特征在于,進一步包括修改所述第二緩存替換策略以選擇溢出緩存條目,其中所述第一緩存替換策略和所述第二緩存替換策略不同。
19.根據(jù)權利要求17所述的方法,其特征在于,所述溢出緩存具有第一存儲器容量,所述方法進一步包括修改所述溢出緩存的所述第一存儲器容量。
20.根據(jù)權利要求17所述的方法,其特征在于,所述溢出緩存具有與主存儲器的大量組相聯(lián),所述方法還包括修改與所述主存儲器的大量組相聯(lián)。
【文檔編號】G06F12/08GK104169892SQ201380015348
【公開日】2014年11月26日 申請日期:2013年3月27日 優(yōu)先權日:2012年3月28日
【發(fā)明者】林奕林, 理查德·特勞本 申請人:華為技術有限公司