欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

高效加載隊列窺探的制作方法

文檔序號:6594588閱讀:168來源:國知局
專利名稱:高效加載隊列窺探的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及處理器領(lǐng)域,尤其涉及處理器中的加載處理和記憶體排序(ordering) 維護。
背景技術(shù)
處理器通常使用記憶體操作以向或從記憶體(memory)移動數(shù)據(jù)。術(shù)語“記憶體 操作”指的是一種操作,其指定處理器和記憶體之間的數(shù)據(jù)的傳輸(盡管該傳輸可在緩存 (cache)中完成)。加載記憶體操作指定從記憶體至該處理器的數(shù)據(jù)傳輸,而存儲記憶體操 作指定從該處理器至記憶體的數(shù)據(jù)傳輸。在本文中可將加載記憶體操作更簡潔地稱為“加 載”,類似地,可將存儲記憶體操作稱為“存儲”。根據(jù)該處理器所使用的指令集,記憶體操作 可以是指令內(nèi)隱含的,該指令直接訪問(access)記憶體操作數(shù)(operand)以執(zhí)行其定義的 功能(例如,算術(shù)、邏輯等),或者可以是明確的指令,該指令只執(zhí)行數(shù)據(jù)傳輸。一些指令集架構(gòu)需要記憶體操作的強排序(例如,x86指令集架構(gòu))。通常,如果 記憶體操作看上去以指定的程序順序出現(xiàn),則它們被強排序。處理器經(jīng)常試圖不按(程序) 順序執(zhí)行加載以改善性能。然而,如果該加載不按順序執(zhí)行,則有可能違反強記憶體排序規(guī) 則。例如,如果第一處理器執(zhí)行存儲以尋址(address) Al,然后執(zhí)行存儲以尋址A2,而 第二處理器執(zhí)行加載以尋址A2 (其在該第二處理器的數(shù)據(jù)緩存中不存在),然后執(zhí)行加載 以尋址Al (其在該第二處理器的數(shù)據(jù)緩存中命中),則違反強記憶體排序規(guī)則。強記憶體排 序規(guī)則要求,在上述情形下,如果尋址A2的加載從尋址A2的存儲接收存儲數(shù)據(jù),則尋址Al 的加載必須從尋址Al的存儲接收存儲數(shù)據(jù)。然而,如果在尋址A2的加載正被服務(wù)的同時 允許尋址Al的加載完成,則可能出現(xiàn)以下情形(i)尋址Al的加載可能在尋址Al的存儲之 前接收數(shù)據(jù);(ii)尋址Al的存儲可完成;(iii)尋址A2的存儲可完成,以及(iv)尋址A2 的加載可完成并接收由尋址A2的存儲提供的數(shù)據(jù)。這種結(jié)果將是不正確的。

發(fā)明內(nèi)容
在一個實施方式中,處理器包含數(shù)據(jù)緩存而加載/存儲單元(LSU)耦合于該數(shù)據(jù) 緩存。該LSU包含隊列,而該隊列中的每個條目(entry)被分配給(assign to)不同的 加載,該加載訪問過該數(shù)據(jù)緩存但是還沒有引退(retire)。該LSU進一步包含耦合于該 隊列的控制單元,而該控制單元被配置為在該數(shù)據(jù)緩存的內(nèi)容變化時更新該隊列中表示 (represent)的每個加載的數(shù)據(jù)緩存命中狀態(tài)(hit)。該LSU被耦合以接收窺探索引,其中 索引是用于索引到該緩存中的地址位的子集。該窺探索引對應(yīng)于該處理器接收的窺探操 作,而該控制單元被配置為響應(yīng)于以下各項而檢測該隊列的第一條目中的第一加載上的窺 探命中該窺探索引匹配該第一條目中存儲的加載索引,該第一加載的數(shù)據(jù)緩存命中狀態(tài) 指示了命中,該數(shù)據(jù)緩存檢測針對該窺探操作的窺探命中,以及存儲在該第一條目中的加 載路(way)與該窺探操作被命中的數(shù)據(jù)緩存的第一路相匹配。該加載路是該加載命中的該數(shù)據(jù)緩存的路。在一個實施方式中,處理器包含數(shù)據(jù)緩存而加載/存儲單元(LSU)耦合于該數(shù)據(jù) 緩存。該LSU包含隊列,而該隊列中的每個條目被分配給不同的加載,該加載訪問過該數(shù)據(jù) 緩存但是還沒有引退。該LSU進一步包含耦合于該隊列的控制單元,而該控制單元被配置 為當(dāng)該數(shù)據(jù)緩存的內(nèi)容變化時更新該隊列中表示的每個加載的數(shù)據(jù)緩存命中狀態(tài)。該LSU 被耦合以接收對應(yīng)于由該處理器接收的窺探操作的窺探索引,而該控制單元被配置為在以 下至少兩種情況下檢測該隊列中的第一條目中的第一加載上的窺探命中(i)響應(yīng)于該窺 探索引匹配該第一條目中存儲的加載索引,該第一加載的數(shù)據(jù)緩存命中狀態(tài)指示命中,以 及該數(shù)據(jù)緩存檢測針對該窺探操作的窺探命中,以及(ii)響應(yīng)于該窺探索引匹配該加載 索引和該第一加載的數(shù)據(jù)緩存狀態(tài)指示沒有命中,而不管該窺探操作是否在該數(shù)據(jù)緩存中 命中。


下面的詳細(xì)描述參考了附圖,現(xiàn)在對附圖進行簡要描述。圖1是處理器的一個實施方式的框圖。圖2是描繪在加載的執(zhí)行過程中該處理器的一個實施方式的操作的流程圖。圖3是描繪用于窺探的該處理器的一個實施方式的操作的流程圖。圖4是描繪用于窺探的該處理器的一個實施方式的操作的真值表。圖5是描繪用于監(jiān)控該加載隊列中的加載的該處理器的一個實施方式的操作的 流程圖。圖6是描繪用于監(jiān)控該加載隊列中的加載的該處理器的一個實施方式的操作的
真值表。同時本發(fā)明易于進行各種修改和替代形式,其具體實施方式
在附圖中以示例方式 顯示并將在本文中詳細(xì)描述。然而,應(yīng)當(dāng)理解,其附圖和詳細(xì)描述不是為了將本發(fā)明限制于 所披露的特定形式,而是相反,其意圖是覆蓋落入如所附權(quán)利要求限定的本發(fā)明的精神和 范圍內(nèi)的所有修改、等同和替代。
具體實施例方式在一個實施方式中,處理器的加載/存儲單元(LSU)實現(xiàn)具有多個條目的加載隊 列。每個條目被分配給不同的加載,而且如果該條目被標(biāo)記為有效的話,則該加載已經(jīng)訪問 過該處理器的數(shù)據(jù)緩存但是還沒有通過將其結(jié)果實施于(commit to)該處理器的架構(gòu)的狀 態(tài)(例如,作為該指令的目標(biāo)的架構(gòu)的寄存器)而引退。數(shù)據(jù)緩存是一種有限存儲器,一些加載和存儲將在其中丟失(miss)。記憶體操作 是若在訪問的時刻記憶體操作所訪問的數(shù)據(jù)被存儲在緩存中,則是在緩存中的“命中”, 若在訪問的時刻記憶體操作所訪問的數(shù)據(jù)沒有存儲在緩存中,則是“丟失”。當(dāng)加載丟失數(shù) 據(jù)緩存時,該數(shù)據(jù)通常被使用緩存填充操作加載到該緩存中以從記憶體讀取丟失的緩存線 (cache line)并將其存儲在緩存中。數(shù)據(jù)被存儲在被稱為“緩存線”的單元中的緩存中,其 是該緩存內(nèi)被分配(allocate)和釋放(deallocate)的存儲的最小數(shù)量的連續(xù)字節(jié)。該LSU可用該數(shù)據(jù)緩存訪問過程中該加載的命中/丟失結(jié)果初始化該加載隊列中的加載的數(shù)據(jù)緩存命中狀態(tài)。該LSU然后可追蹤數(shù)據(jù)緩存內(nèi)容變化時被分配的隊列條目中 的加載的數(shù)據(jù)緩存命中狀態(tài)(同時該加載仍然在該隊列中表示并因此沒有引退)。例如,如 果該加載是訪問時刻的緩存命中但是由該加載命中的緩存線是無效的,那么該分配的加載 隊列條目中的數(shù)據(jù)緩存命中狀態(tài)可從“命中”改變到“丟失”。當(dāng)被另一緩存線的緩存填充 復(fù)寫(overwritten)時該緩存線是無效的,例如,或者可能由于返回探針(back probe)而 消除到緩存填充中提供的緩存線的可能別名(alias)而無效。在一些實施方式中,如果該 加載所訪問的緩存線在填充中被寫到該緩存的話,則該LSU還可追蹤該緩存填充本身并可 將該加載的數(shù)據(jù)緩存命中狀態(tài)從“未命中”改變?yōu)椤懊小?。在這樣的實施方式中,“未命中” 狀態(tài)可以是“丟失”,因為命中/丟失狀態(tài)總是精確知道的。其它實施方式可能不更新加載 的數(shù)據(jù)緩存命中狀態(tài),其中該加載在其對命中的初始數(shù)據(jù)緩存訪問時丟失該數(shù)據(jù)緩存。在 這種情況中,“未命中”的數(shù)據(jù)緩存命中狀態(tài)表明不知道該加載命中。它可能是丟失,或者它 也可能是命中(例如,由于該加載訪問該數(shù)據(jù)緩存之后發(fā)生的緩存填充)。以另一種方式來 看,該“未命中”狀態(tài)表明該加載的緩存命中/丟失狀態(tài)是未知的。在任一種情況下,該“命 中”狀態(tài)表明該加載當(dāng)前是緩存命中。注意,加載可被稱為(refer to)表示(!^present) 在隊列條目中,因為該隊列條目可能沒有實際上存儲該加載本身,而是存儲與該加載有關(guān) 的數(shù)據(jù)(比如索引、路(way)、數(shù)據(jù)緩存命中狀態(tài)等)。盡管本文的描述有時候稱該加載在 該隊列或隊列條目中,然而該加載通常表示在該條目中而不是實際上存儲在該條目中。該LSU可使用該隊列條目中的數(shù)據(jù)緩存命中狀態(tài)用于一加載和該數(shù)據(jù)緩存中的 窺探操作的緩存命中/丟失結(jié)果以檢測那個加載上的窺探命中/丟失而不是響應(yīng)于該加載 操作(該“加載地址”)將該窺探操作的整個地址與所訪問的地址相比較。尤其是,該加載 隊列可存儲該加載地址的部分,該部分標(biāo)識有資格存儲由該加載地址識別的緩存線的數(shù)據(jù) 緩存中的一個或多個條目。這一部分加載地址被稱為“索引”。而且,對于組關(guān)聯(lián)數(shù)據(jù)緩存 (set associative datacaches),如果檢測到緩存命中,則還可存儲該加載命中的“路”。該 “路”標(biāo)識哪個有資格的存儲位置(該“組(set)”)實際上在存儲該緩存線。如果對給定加 載的數(shù)據(jù)緩存命中狀態(tài)是命中,則該給定加載的隊列條目中的加載索引與該窺探地址的相 應(yīng)部分(該“窺探索引”)相匹配。該窺探操作命中該數(shù)據(jù)緩存中,且該數(shù)據(jù)緩存18中的窺 探操作的路命中與該隊列條目中的加載路相匹配,那么該窺探操作是在給定加載上的窺探 命中。如果該給定加載的數(shù)據(jù)緩存命中狀態(tài)是命中而前面提到的其它因素中的任何一個都 不是真的,則知道該窺探操作丟失該給定加載。相應(yīng)地,可以對具有命中的數(shù)據(jù)緩存命中狀 態(tài)的加載計算準(zhǔn)確的窺探命中結(jié)果。因為對于大多數(shù)工作加載(workloads)大多數(shù)加載命 中該數(shù)據(jù)緩存中,其結(jié)果逼近于執(zhí)行全部地址比較的方案。在該數(shù)據(jù)緩存命中狀態(tài)是未命中的情況下,該窺探索引可與該加載的隊列條目中 的加載索引相比較。索引匹配可被認(rèn)為是窺探命中。該窺探命中可能是不正確的,但是對 假定的窺探命中采取校正動作可能不影響功能性(只影響性能)。相應(yīng)地,在這些情況下產(chǎn) 生了正確的結(jié)果。如果在加載上檢測到窺探命中(且該窺探命中響應(yīng)于由另一處理器或該窺探處 理器之外的其它實體的存儲),如果該加載不是該加載隊列中未完成的最老的加載的話,則 有可能違反了強記憶體排序?!霸偻?Resynchronization) ”泛指重復(fù)該加載的緩存訪問 和該加載數(shù)據(jù)到其目標(biāo)的轉(zhuǎn)發(fā),并重新執(zhí)行至少那些依賴該加載的操作。重復(fù)檢測到窺探命中的加載可允許修改后的數(shù)據(jù)(假定該加載數(shù)據(jù)是由引發(fā)該窺探的操作修改的)被轉(zhuǎn)發(fā) 并產(chǎn)生依賴指令的新的結(jié)果。因此,該加載看上去是在該存儲后已發(fā)生。而且,如果該存儲 在該加載隊列的在前加載之前發(fā)生(例如,該在前加載是緩存丟失)且該窺探命中加載是 相對于該在前加載不按順序執(zhí)行的,則該窺探命中加載看上去是通過再同步與該在前加載 按順序執(zhí)行。因此,可以保持強排序。該再同步可以任何方式執(zhí)行。例如,每個在該再同步加載操作之后的操作可被清 空(flush)并重取相應(yīng)的指令(或者重新調(diào)度,如果仍存儲在該獲取/解碼/排程單元12 中的排程硬件中的話)。替代地,如果在該排程器中檢測出依賴鏈,則只有依賴指令需要被 重調(diào)度以產(chǎn)生正確的結(jié)果。如下所述的實施方式可使用組關(guān)聯(lián)數(shù)據(jù)緩存實現(xiàn)。然而,在其它實施方式中,也可 使用直接映射的數(shù)據(jù)緩存實現(xiàn)(direct-mappeddata cache implementation)。對于該直接 映射實現(xiàn),可以消除“路”比較。若該加載索引匹配該窺探索引,則該緩存窺探命中結(jié)果和 該數(shù)據(jù)緩存命中狀態(tài)可被用于確定是否發(fā)生窺探命中(例如,窺探緩存命中和“命中”的數(shù) 據(jù)緩存命中狀態(tài)表明窺探命中,而窺探緩存丟失和命中的數(shù)據(jù)緩存命中狀態(tài)表明沒有窺探 命中)。如果該數(shù)據(jù)緩存命中狀態(tài)是“未命中”,則來自索引比較的匹配可被視為獨立于該 數(shù)據(jù)緩存中的窺探命中/丟失結(jié)果的窺探命中。窺探操作通??梢允亲鳛榫彺嬉恢滦詤f(xié)議(cache coherenceprotocol)的一部分 傳遞到處理器的任何操作,以確保根據(jù)該協(xié)議處置的數(shù)據(jù)的任何緩存過的拷貝保持與處置 后的數(shù)據(jù)保持一致性。例如,一些協(xié)議可包括明確探針命令從一致性的一個點(例如,緩存 線的家節(jié)點、記憶體控制器等)的傳輸,且該處理器可響應(yīng)于該探針命令窺探并提供探針 響應(yīng)。在基于總線的實現(xiàn)中,該探針命令可以是定義過的總線周期而該探針響應(yīng)可以以該 總線周期的響應(yīng)相位傳輸。在基于封包的實現(xiàn)(packet-based implementation)或點對點 實現(xiàn)中,該探針和探針響應(yīng)每個可以是封包或點對點命令。在其它協(xié)議中,由其它處理器發(fā) 起的操作(例如讀取或?qū)懭氩僮?本身可從該處理器所耦合的互連(interconnect)窺探, 而該窺探處理器可根據(jù)窺探到的讀/寫操作和窺探該地址的結(jié)果采取適當(dāng)動作。在一個實 施方式中,將引起緩存線被無效的窺探操作對著該加載隊列檢查。這種窺探操作是另一處 理器視圖改變該緩存線中的相應(yīng)數(shù)據(jù)(例如,用一個或更多個存儲),或者是另一實體(例 如,外圍設(shè)備)改變該數(shù)據(jù)(例如,用直接記憶體訪問(DMA)寫入)的結(jié)果。通常,表明窺 探的緩存線的更新的任何窺探操作可對著該加載隊列檢查以檢測可能的再同步?,F(xiàn)在轉(zhuǎn)向圖1,顯示了處理器10的一個實施方式的框圖。在圖示實施方式中,處理 器10包括獲取/解碼/排程單元12、地址生成單元(AGU) 14、快速重編址緩沖器(TLB) 16、 數(shù)據(jù)緩存18、LSU20和外部接口單元22。該LSU 20包括加載隊列(LDQ) 24和耦合于該加 載隊列M的控制單元沈。LSU 20還可包括其它元件(例如,用于存儲的存儲隊列,用于附 加加載數(shù)據(jù)的隊列,各種其它加載/存儲處置電路等)。在圖示實施方式中,該獲取/解碼 /排程單元12耦合于AGU 14,AGU 14耦合于TLB 16和數(shù)據(jù)緩存18。TLB 16耦合于數(shù)據(jù) 緩存18和LSU 20 (更特別地,耦合于加載隊列24)。數(shù)據(jù)緩存18耦合于LSU 20 (更特別 地,耦合于加載隊列M和控制單元26)和外部接口單元22,外部接口單元22進一步耦合于 LSU 20 (更特別地,耦合于控制單元沈和加載隊列24)。獲取/解碼/排程單元12通??砂ǐ@取指令、將每個指令解碼為一個或更多待執(zhí)行操作以及排程操作以由處理器10執(zhí)行的電路??商峁└鞣N執(zhí)行硬件用于非加載/ 存儲操作(例如,整數(shù)、浮點、多媒體等,圖1中未示)。獲取/解碼/排程單元12可包含 任何期望的結(jié)構(gòu)與操作。例如,獲取/解碼/排程單元12可包含保留站/重排緩沖構(gòu)造 (reservation station/reorder buffer configuration)或集中式排禾呈器構(gòu)造。如果需 要,獲取/解碼/排程單元12可實現(xiàn)寄存器重命名。獲取/解碼/排程單元12可包含指 令緩存,并可耦合于外部接口單元22以對指令緩存丟失傳輸緩存填充。對于加載和存儲,獲取/解碼/排程單元12可排程操作以由AGU 14執(zhí)行。AGU 14 可接收該加載/存儲操作的地址操作數(shù),并可產(chǎn)生該加載/存儲操作的虛擬地址(VA)。該 住址操作數(shù)可從獲取/解碼/排程單元12提供,或可從轉(zhuǎn)發(fā)操作數(shù)數(shù)據(jù)的其它執(zhí)行單元分 流。在其它實施方式中有多于一個AGU 14。AGU 14可提供虛擬地址至TLB 16和數(shù)據(jù)緩存 18。數(shù)據(jù)緩存18可使用該虛擬地址以開始緩存查找過程(例如,該索引位可從沒有被翻譯 (translate)的虛擬地址位獲得)。TLB 16還將該虛擬地址翻譯為物理地址,并可提供該實 際地址至數(shù)據(jù)緩存18以進行標(biāo)簽比較(tag comparison)以檢測命中/丟失。而且,該物 理地址可被提供至LDQ 24,該LDQ M存儲至少分配給相應(yīng)加載的加載隊列條目中的索引。 該索引被顯示為圖1中所示的加載隊列M條目中的Idx字段。加載隊列條目可以任何期望方式被分配給加載。在一個實施方式中,當(dāng)相應(yīng)加載 被獲取/解碼/排程單元23排程或解碼時該條目可被分配。替代地,當(dāng)執(zhí)行過程中條目被 LSU 20接收時他們可被分配??墒褂萌魏畏峙浞桨?。數(shù)據(jù)緩存18可完成標(biāo)簽比較,并可將該緩存命中/丟失結(jié)果傳送(signal)至控 制單元沈(圖1中的“緩存命中”信號)。數(shù)據(jù)緩存18還可提供命中路至加載隊列圖 1中的“緩存路”和所示加載隊列M條目中的路字段)??刂茊卧?6可使該路被寫到被 分配給該加載的加載隊列M條目。在一個實施方式中,該緩存路可被獨熱編碼(one-hot encoded)以指示該路。在這樣的實施方式中,可提供沒有設(shè)置為指示丟失的位的路,且控制 單元26可使得該加載隊列條目獨立于該命中/丟失信號在該條目的路字段中存儲由數(shù)據(jù) 緩存18提供的緩存路??刂茊卧蜻€可響應(yīng)于檢測到緩存命中還是緩存丟失而針對該加 載初始化數(shù)據(jù)緩存命中狀態(tài)(圖1中被描繪為命中位,盡管在其它實施方式中可使用該數(shù) 據(jù)緩存命中狀態(tài)的任何表示形式)。例如,該命中位可被設(shè)置為“1”以指示命中,被設(shè)置為 “0”(或清空)以指示未命中(反之亦然)。還可提供有效位以指示該條目是否有效,再同 步位以指示是否要針對該加載執(zhí)行再同步(由于檢測出的窺探命中)。當(dāng)該加載引退時,或 是加載隊列M中表示的最老的加載時,處理器10可執(zhí)行再同步。例如,控制單元沈可通 知(signal)獲取/解碼/排程單元12以在該加載上再同步。在一個實施方式中,該LSU 20還可處理錯位加載(misalignedloads)。通常,如果 需要至少兩個非重疊訪問以執(zhí)行加載,則該加載錯位。錯位可以任何期望方式限定。例如, 若加載訪問兩個不同的(通常在記憶體中是連續(xù)的)緩存線中的字節(jié),則該加載是錯位的。 這種加載可使用兩個數(shù)據(jù)緩存訪問來訪問兩個緩存線中的字節(jié)。其它實施方式可使用其它 邊界來限定錯位加載。錯位(MA)位可被設(shè)置在分配給錯位的加載的隊列條目中,而該錯位加載的第二 訪問的索引可被存儲在該條目的Idx2字段中。也就是說,該Idx字段可存儲該錯位加載的 第一部分的索引,而該Idx2字段可存儲該錯位加載的第二部分的索引。在一些實施方式中,可針對該錯位緊挨在的后一半追蹤數(shù)據(jù)緩存命中狀態(tài)和命中路。在圖示實施方式中,只 有該索引被存儲而該錯位加載的后一半就像該數(shù)據(jù)緩存命中狀態(tài)是未命中那樣被對待。錯 位加載可以是相對不頻繁的,因此錯位加載的后一半上的再同步錯誤的任何性能下降預(yù)計 是不大的。隊列M可以任何期望方式構(gòu)造。例如,在一個實施方式中,Idx、路和Idx2字段可 被實現(xiàn)為圖1中所示的內(nèi)容可尋址記憶體(CAM)。隊列M的其余部分可以是隨機存取記 憶體(RAM),或可被實現(xiàn)于一個或更多寄存器、觸發(fā)器(flops)或其它時鐘脈沖存儲裝置。 CAM、RAM、寄存器、觸發(fā)器和/或其他時鐘脈沖存儲裝置可用于各種實施方式中。實現(xiàn)Idx、 路和Idx2字段為CAM可允許該字段對著該窺探索引和窺探路被匹配以檢測窺探命中,以及 對著填充/填充別名索引和路被匹配以保持該數(shù)據(jù)緩存命中狀態(tài)。CAM命中/丟失結(jié)果可 被提供至控制單元沈。特別地,如果開始時加載被檢測為數(shù)據(jù)緩存16中的命中,被該加載命中的緩存線 在后續(xù)可被無效(不是由窺探操作)。例如,該緩存線可被驅(qū)逐以存儲在緩存填充操作中提 供的不同的緩存線。外部接口單元22可提供填充地址至數(shù)據(jù)緩存18以執(zhí)行該填充。外部 接口單元18還可提供該緩存填充的索引至加載隊列M (圖1中的窺探/填充Idx)。數(shù)據(jù) 緩存18可指示哪個路正被填充寫入(圖1中的窺探/填充路)。外部接口單元22可指示 該操作是使用至控制單元26和數(shù)據(jù)緩存18的窺探/填充Ctl界面的填充。如果該填充索 引匹配該Idx字段,則該填充路匹配該路(way)字段,而該數(shù)據(jù)緩存命中狀態(tài)指示對給定條 目的命中,控制單元沈可更新該數(shù)據(jù)緩存填充狀態(tài)以指示那個給定條目中的未命中。在一個實施方式中,數(shù)據(jù)緩存18可指示路預(yù)測(wayprediction)以預(yù)測訪問過 程中針對該數(shù)據(jù)緩存的命中路。如果該訪問在該預(yù)測的路中不是命中,它被標(biāo)記(signal) 為丟失而數(shù)據(jù)緩存18可以啟動緩存填充。有可能,該訪問會以另一(非預(yù)測的)路命中。 考慮到這種可能性,當(dāng)填充被寫到該數(shù)據(jù)緩存18時,數(shù)據(jù)緩存18可對每個路執(zhí)行“返回探 針(back probes)”,以無效掉可能的副本(別名)緩存線。在一個實施方式中,外部接口 單元22可在該填充數(shù)據(jù)準(zhǔn)備好被寫到數(shù)據(jù)緩存18前至少N個時鐘傳輸該填充地址,其中 N是大于或等于數(shù)據(jù)緩存18中的路的數(shù)量的整數(shù)。在N個時鐘期間,該返回探針可被執(zhí)行 以消除可能的別名緩存線。數(shù)據(jù)緩存18可對每個返回探針提供填充別名索引(圖1中的 FillAlias Idx)以對著加載隊列MIdx字段匹配,而該窺探/填充路可指示該返回探針的 路(way)。如果匹配在加載隊列M條目上被檢出(索引和路),則該返回探針命中該數(shù)據(jù) 緩存中,而該條目的數(shù)據(jù)緩存命中狀態(tài)指示命中,控制單元26可更新該數(shù)據(jù)緩存命中狀態(tài) 以指示那個條目中的未命中。在數(shù)據(jù)緩存命中狀態(tài)監(jiān)控就位的情況下,加載上窺探命中的檢測可在加載隊列M 中執(zhí)行。外部接口單元22可提供該窺探索引至該加載隊列M (圖1中的窺探/填充Idx), 可指示窺探正在發(fā)生(圖1中的窺探/填充Ctl),并可提供該窺探地址至數(shù)據(jù)緩存18 (圖1 中的窺探/填充Addr)。數(shù)據(jù)緩存18可傳送(signal)窺探命中或丟失至該控制單元觀(圖 1中的窺探命中)并可提供該窺探的路命中至該加載隊列M(圖1中的窺探/填充路)。如 果窺探命中在該數(shù)據(jù)緩存18中被檢測到,該窺探索引匹配該Idx字段,該窺探路匹配該路 字段,且該數(shù)據(jù)緩存命中狀態(tài)被命中,則對那個加載檢測到窺探命中。如果該數(shù)據(jù)緩存命中 狀態(tài)是未命中,則如果該Idx字段匹配該窺探索引則對該加載檢測到窺探命中,而不管該緩存中的窺探命中/丟失。注意,盡管該索引、路和命中指示在圖1中被顯示為獨立的信令路徑,該路徑也可 以是共享路徑。例如,如果一種類型(例如,F(xiàn)illAlias索引)和另一種類型(例如窺探/ 填充索引)的給定索引不能同時被提供,則可使用共享路徑。類似地,如果不同類型的路不 能被同時提供或者不同類型的兩個命中不能被同時指示(signalled),則可使用共享的路
徑/命中信號。此描述通常指的是被配置為執(zhí)行各種操作的控制單元(或簡單地指該執(zhí)行各種 操作的控制單元)。通常,該控制單元包含實現(xiàn)該操作的電路。該電路可包含組合邏輯、狀 態(tài)機、管道、時鐘脈沖存儲裝置,比如寄存器、觸發(fā)器、鎖存器等的任意組合。類似地,被描述 為被配置為執(zhí)行操作(或簡單地執(zhí)行操作)的任何其他單元或元件可包含實現(xiàn)該操作的電路?,F(xiàn)在參考圖2,顯示了一個描繪加載執(zhí)行過程中處理器10的一個實施方式的操作 的流程圖。處理器10 (以及更特別地,LSU 20,再特別地,控制單元26)可包含實現(xiàn)圖2中 顯示的操作的電路。盡管為了便于理解圖中塊(blocks)顯示為特定的順序,然而也可使用 其他順序。而且,塊可以在組合邏輯電路中并聯(lián)執(zhí)行。塊、塊的組合和/或流程圖作為整體 可以在多個時鐘周期上管道化(pipelined)。該加載可訪問數(shù)據(jù)緩存18,而數(shù)據(jù)緩存18可標(biāo)記(signal)該加載的命中/丟失。 如果該加載是緩存命中(決策塊30,“是(yes)”分支),則控制單元沈可將命中路寫到分 配給該加載的加載隊列M條目(塊3 并可設(shè)置該命中位(塊34)。若該加載不是緩存命 中(決策塊30,“否(110)”分支),控制單元沈可清除該命中位(塊36)。在任一情況下, 控制單元沈可將加載索引寫到分配給該加載的該加載隊列條目的Idx字段(塊38),設(shè)置 該條目中的有效位,以及清除該條目中的再同步位(塊40)。如果該加載錯位(決策塊42,“是”分支),則控制單元沈可將該第二索引(針對 該錯位加載的后一半)寫到分配給該加載的該加載隊列條目的Idx2字段(塊44)并可設(shè) 置該條目中的MA位(塊46)。否則(決策塊42,“否”分支),控制單元沈可清除該條目中 的MA位(塊48)。圖3是描繪針對窺探操作處理器10的一個實施方式的操作的流程圖。處理器 10 (以及更特別地,LSU 20,再特別地,控制單元26)可包含實現(xiàn)圖3中顯示的操作的電路。 盡管為了便于理解各塊是以特定順序顯示的,然而也可以使用其他順序。而且,塊可以在組 合邏輯電路中并聯(lián)執(zhí)行。塊、塊的組合和/或流程圖整體可以在多個時鐘周期上管道化。圖 3中描繪的操作可以對該加載隊列M中的每個有效條目并行進行。如果該條目中設(shè)置了該命中位(決策塊50,“是”分支),則如果該窺探是緩存命中 且該窺探索引和路(針對該命中)匹配該加載索引和加載路,該數(shù)據(jù)緩存命中狀態(tài)是命中 且從而窺探命中發(fā)生。否則,在該加載隊列中沒有檢測到窺探命中。相應(yīng)地,如果該窺探是 緩存命中(決策塊52,“是”分支)而該窺探索引和窺探路匹配該條目中的索引(Idx)和路 (way)(決策塊M,“是”分支),則控制單元沈可設(shè)置該條目中的再同步(R)位(塊56)。如果該條目中的該命中位是清除的(決策塊50,“否”分支),則數(shù)據(jù)緩存命中狀態(tài) 是未命中。因此,如果該窺探索引匹配該加載索引(決策塊58,“是”分支)則假定窺探命 中且該控制單元沈設(shè)置該條目中的再加載位(塊56)。若該加載錯位(該條目中的MA位設(shè)置-決策塊60,“是”分支),則若該第二索引(Idx2)匹配該窺探索引(決策塊62,“是” 分支)則假定該窺探命中且該控制單元26設(shè)置該條目中的該再同步位(塊56)。圖4是描繪圖3中的流程圖形式中描繪的操作的真值表。真值表64描繪了基于 匹配該條目的Idx字段而設(shè)置R位。命中位列顯示了該條目中的命中位的狀態(tài);緩存命中 列顯示了該窺探是不是緩存命中;索引匹配列顯示該Idx字段是否匹配該窺探索引;路匹 配列顯示該路字段是否匹配該窺探路,而R位列顯示該R位的結(jié)果狀態(tài)。“χ”顯示“不關(guān)心” 狀態(tài)。注意,在此實施方式中,R位是粘性的(sticky)—旦R位被設(shè)置,則它在該條目被重 分配到另一加載之前(或至少在該條目無效之前,例如,當(dāng)該加載引退或以其他路從該加 載隊列M中除去)保持設(shè)置。真值表66描繪了錯位加載的R位的設(shè)置。MA位列顯示該條 目中的MA位;索引2匹配列顯示該窺探索引是否匹配該條目的Idx2字段;而該R位列又是 顯示該R位的結(jié)果狀態(tài)。圖5是描繪該處理器的一個實施方式的操作的流程圖,以監(jiān)控針對在該加載隊列 中表示的加載的數(shù)據(jù)緩存命中狀態(tài)(在此情況下,用命中位指示)。處理器10 (以及更特別 地,LSU 20,再特別地,控制單元26)可包含實現(xiàn)圖5中顯示的操作的電路。盡管為了便于 理解各決是以特定順序顯示的,然而也可以使用其他順序。而且,塊可以在組合邏輯電路中 并聯(lián)執(zhí)行。塊、塊的組合和/或流程圖整體可以在多個時鐘周期上管道化。圖5中描繪的 操作可以對該加載隊列M中的每個有效條目并行進行。如果填充別名正通過數(shù)據(jù)緩存18的返回探針探測(決策塊70,“是”分支),該條 目中的該命中位被設(shè)置(決策塊72,“是”分支),該返回探針是緩存命中(決策塊74,“是” 分支),且該填充別名索引和該命中路分別匹配該條目的Idx和路字段(決策塊76,“是”分 支),則該條目中表示的該加載的緩存線命中正由該返回探針無效。控制單元沈因此可清 除該命中位,(從而將該數(shù)據(jù)緩存命中狀態(tài)設(shè)置為未命中)(塊78)。如果該命中位被設(shè)置 (決策塊72,“是”分支)而該返回探針是緩存丟失(決策塊74,“否”分支)或該索引和路 匹配的至少一個沒有被檢測到(決策塊76,“否”分支),則該命中位不受影響。類似地,如 果該命中位是清除的(決策塊72,“否”分支),該命中位不受影響。注意,在這種情況下,該 別名正被無效以便該緩存線被寫到另一個路。其他實施方式可更新該條目的路字段以表明 該緩存線被填充中的路而不是清除該命中位。如果緩存填充正在完成(決策塊80,“是”分支),如果該索引和路匹配該填充索引 和填充路的話(決策塊82,“是”分支),該加載的緩存線命中正被驅(qū)逐,而不管針對該填充 數(shù)據(jù)緩存18表明的緩存命中狀態(tài)如何。因此,該命中位被清除(塊84)。否則,該命中位不 受影響。圖6是描繪圖5中的流程圖形式中描繪的操作的真值表。真值表90描繪了針對 返回探針檢測別名匹配。命中位列顯示該條目中的命中位的狀態(tài);緩存命中列顯示該返回 探針是不是緩存命中;索引匹配列顯示該Idx字段是否匹配該填充別名索引;路匹配列顯 示該路字段是否匹配該填充路,而該別名匹配列顯示是否檢測到別名匹配?!癤”顯示“不關(guān) 心”狀態(tài)。真值表92描繪針對緩存填充本身檢測填充匹配。命中位、索引匹配和路匹配欄 類似于真值表90,而填充匹配列顯示是否檢測出填充匹配。最終,真值表94包括表明該命 中位的當(dāng)前狀態(tài)的命中位列,來自表90和92的別名匹配和填充匹配結(jié)果,和新的命中位 值。
注意,圖2-6的描述指的是用該命中位代表該數(shù)據(jù)緩存命中狀態(tài)的某些實施方 式。然而,其他實施方式可能用任何所需的形式代表該數(shù)據(jù)緩存命中狀態(tài)。完全理解上述披露后,對本領(lǐng)域的技術(shù)人員而言,許多變形和修改將變得顯而易 見。下述權(quán)利要求意在被解釋為涵蓋所有這些變形和修改。工業(yè)實用件 本發(fā)明大體適用于處理器領(lǐng)域。
權(quán)利要求
1.一種處理器(10),包含數(shù)據(jù)緩存(18);以及耦合于所述數(shù)據(jù)緩存(18)的加載/存儲單元(LSU) (20),且所述LSU(20)包含隊列 (M),且所述隊列04)中的每個條目被分配給不同的加載,如果所述條目被標(biāo)記為有效, 則該加載已訪問所述數(shù)據(jù)緩存(18)但還沒引退,且所述LSU(20)進一步包含耦合于所述隊 列的控制單元( ),且所述控制單元06)被配置為當(dāng)所述數(shù)據(jù)緩存(16)中的內(nèi)容改變時 更新所述隊列04)中表示的每個加載的數(shù)據(jù)緩存命中狀態(tài),且所述LSU (20)耦合為接收與 由所述處理器(10)接收的窺探操作對應(yīng)的窺探索引,且所述控制單元06)被配置為響應(yīng) 于以下各項而檢測所述隊列04)的第一條目中的第一加載上的窺探命中所述窺探索引 匹配所述第一條目中存儲的加載索引,所述第一加載的數(shù)據(jù)緩存命中狀態(tài)指示命中,所述 數(shù)據(jù)緩存(16)檢測針對所述窺探操作的窺探命中,以及所述第一條目中存儲的加載路匹 配其中所述窺探操作是命中的所述數(shù)據(jù)緩存(16)的第一路;以及所述加載路是其中所述 加載命中的數(shù)據(jù)緩存(16)的路。
2.如權(quán)利要求1所述的處理器(10),所述控制單元06)被進一步配置為響應(yīng)于所述 窺探索引匹配所述加載索引和所述第一加載的數(shù)據(jù)緩存命中狀態(tài)指示未命中而檢測所述 第一加載上的窺探命中。
3.如權(quán)利要求1或2所述的處理器(10),所述控制單元06)被配置為當(dāng)所述第一加 載訪問所述數(shù)據(jù)緩存(16)時響應(yīng)于緩存丟失而將所述第一加載的數(shù)據(jù)緩存命中狀態(tài)設(shè)置 為未命中。
4.如權(quán)利要求1-3中任一項所述的處理器(10),所述控制單元06)被配置為響應(yīng)于 所述隊列04)中的所述第一加載上的填充命中而將所述第一加載的數(shù)據(jù)緩存命中狀態(tài)設(shè) 置為未命中。
5.如前述權(quán)利要求中任一項所述的處理器(10),響應(yīng)于所述第一加載是錯位的,在所 述第一條目中存儲第二索引,且所述加載索引對應(yīng)于所述錯位的加載的第一部分而所述第 二索引對應(yīng)于所述錯位的加載的第二部分。
6.如權(quán)利要求5所述的處理器(10),所述控制單元06)被進一步配置為響應(yīng)于所述 第二索引匹配所述窺探索引和所述第一加載是錯位的而檢測所述第一加載上的窺探命中。
7.如前述權(quán)利要求中任一項所述的處理器(20),所述控制單元06)被配置為響應(yīng)于 由所述第一加載在所述數(shù)據(jù)緩存(16)中命中的緩存線的無效而更新所述第一加載的數(shù)據(jù) 緩存命中狀態(tài)以指示未命中。
8.一種方法,包含針對處理器(10)中的第一加載而訪問數(shù)據(jù)緩存(16);在隊列04)的第一條目中存儲數(shù)據(jù)緩存命中狀態(tài),且所述第一加載被分配給所述第 一隊列條目;當(dāng)所述數(shù)據(jù)緩存(16)的內(nèi)容變化時更新所述數(shù)據(jù)緩存命中狀態(tài);接收對應(yīng)于所述處理器(10)中的窺探操作的窺探索引;以及響應(yīng)于以下各項而檢測所述第一加載上的窺探命中所述窺探索引匹配所述第一條目 中存儲的加載所述因,所述第一加載的數(shù)據(jù)緩存命中狀態(tài)指示命中,所述數(shù)據(jù)緩存(16)檢 測針對所述窺探操作的窺探命中,以及在所述第一條目中存儲的加載路匹配所述窺探操作在其中是命中的所述數(shù)據(jù)緩存(16)的第一路;以及該加載路是其中所述加載命中所述數(shù)據(jù)緩存(16)的路。
9.如權(quán)利要求8所述的方法,進一步包含響應(yīng)于所述窺探索引匹配被分配給所述第二 加載的所述隊列04)的第二條目中的第二加載索引以及所述第二加載的第二數(shù)據(jù)緩存命 中狀態(tài)指示未命中而檢測所述第二加載上的窺探命中。
10.如權(quán)利要求8或9所述的方法,進一步包含,響應(yīng)于所述第一加載是錯位的,在所述 第一條目中存儲第二索引,且所述加載索引對應(yīng)于所述錯位的加載的第一部分而所述第二 索引對應(yīng)于所述錯位的加載的第二部分。
全文摘要
在一個實施方式中,處理器(10)包含數(shù)據(jù)緩存(16)和加載/存儲單元(LSU)(20)。該LSU(20)包含隊列(24)和控制單元(26),且該隊列(24)中的每個條目被分配給已訪問該數(shù)據(jù)緩存(16)但還沒有引退的不同加載。該控制單元(26)被配置為當(dāng)該數(shù)據(jù)緩存(16)的內(nèi)容變化時更新該隊列(24)中表示的每個加載的數(shù)據(jù)緩存命中狀態(tài)。該控制單元(26)被配置為響應(yīng)于以下各項而檢測該隊列(24)的第一條目中的第一加載上的窺探命中該窺探索引匹配該第一條目中存儲的加載索引,該第一加載的數(shù)據(jù)緩存命中狀態(tài)指示命中,該數(shù)據(jù)緩存(16)針對該窺探操作檢測窺探命中,以及在該第一條目中存儲的加載路匹配其中該窺探路是命中的數(shù)據(jù)緩存(16)的第一路。
文檔編號G06F9/38GK102132248SQ200980133666
公開日2011年7月20日 申請日期2009年6月23日 優(yōu)先權(quán)日2008年6月23日
發(fā)明者邁克爾·G·巴特勒, 阿舒托什·S·東達普卡 申請人:超威半導(dǎo)體公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
中牟县| 天气| 宁陵县| 枝江市| 大悟县| 新和县| 北票市| 革吉县| 陵水| 韶关市| 华蓥市| 博罗县| 类乌齐县| 平定县| 三都| 乌鲁木齐县| 平南县| 洛阳市| 柏乡县| 天柱县| 全南县| 安丘市| 双牌县| 潜江市| 卢氏县| 木兰县| 海安县| 城步| 蒙自县| 华安县| 隆回县| 布尔津县| 蓬溪县| 宜良县| 西丰县| 绵竹市| 肇源县| 卢龙县| 开阳县| 鱼台县| 深泽县|