專利名稱:管理計(jì)算機(jī)存儲器高速緩存中的訪問沖突的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理,尤其涉及管理計(jì)算機(jī)存儲器高速緩存中的 訪問沖突的方法、系統(tǒng)和產(chǎn)品。
背景技術(shù):
計(jì)算機(jī)存儲器高速緩存以"高速緩存行(cache line),,,即,通常 具有用于讀寫主存儲器的大小的存儲段的形式組織起來。當(dāng)今使用的 超標(biāo)量計(jì)算機(jī)處理器為以微碼形式執(zhí)行微指令的多條處理流水線實(shí)現(xiàn) 多個(gè)執(zhí)行單元,從而使兩條不同執(zhí)行流水線同時(shí)對同一個(gè)存儲器高速 緩存行的同時(shí)訪問成為可能。高速緩存行的大小大于超標(biāo)量計(jì)算機(jī)處 理器通常讀寫存儲器的大小。如果處理器以例如字節(jié)、字(兩個(gè)字節(jié))、 雙字(四個(gè)字節(jié))、和四字(八個(gè)字節(jié))為單位讀寫存儲器,處理器 的高速緩存行可以是八個(gè)字節(jié)(32位)或十六個(gè)字節(jié)(64位)-從而 處理器與高速緩存之間的所有讀寫都恰好裝入一個(gè)高速緩存行。但是, 在這樣的系統(tǒng)中,都不訪問相同存儲單元(memory location )的存儲 微指令和讀取微指令兩者仍然可以訪問相同高速緩存行-因?yàn)楸粚ぶ?的存儲單元盡管不同,但兩者都處在相同的高速緩存行內(nèi)。這種事件 模式被稱為計(jì)算機(jī)存儲器高速緩存中的訪問沖突。在典型的存儲器高速緩存中,當(dāng)將數(shù)據(jù)寫入高速緩存行中或從高 速緩存行中讀出時(shí),每個(gè)讀寫電子器件需要排它地訪問每個(gè)高速緩存 行 一使得在同 一時(shí)鐘周期內(nèi)不能同時(shí)讀寫相同的高速緩存行。這意味 著,當(dāng)存在訪問沖突時(shí),必須延遲或"推遲(stall)"加載(load)微 指令或存儲微指令。管理訪問沖突的現(xiàn)有方法允許將存儲微指令推遲 到隨后的時(shí)鐘周期,而加載微指令在當(dāng)前時(shí)鐘周期中按計(jì)劃執(zhí)行。這
樣的優(yōu)先級方案會影響性能,因?yàn)樵谝粋€(gè)先前被推遲的存儲微指令完 成之前不能撤回隨后的存儲微指令-因?yàn)樘幚砥鲌?zhí)行單元總時(shí)按順序 完成存儲微指令,并且這種實(shí)現(xiàn)方案提高了推遲存儲的概率。因此, 按常規(guī)方式允許推遲存儲存在著在當(dāng)今計(jì)算機(jī)處理器中處理流水線的中斷(disruption)顯著增加的風(fēng)險(xiǎn)。 發(fā)明內(nèi)容本發(fā)明公開了管理計(jì)算機(jī)存儲器高速緩存中的訪問沖突,以便總 是將比相應(yīng)的加栽微指令高的優(yōu)先級給予發(fā)生沖突的存儲微指令 - 從 而避免推遲后續(xù)的存儲微指令的風(fēng)險(xiǎn)的方法和裝置。更具體地說,本 發(fā)明公開了包括如下操作的管理計(jì)算機(jī)存儲器高速緩存中的訪問沖突 的方法和裝置在存儲器高速緩存控制器中接收來自超標(biāo)量計(jì)算機(jī)處 理器的存儲存儲器指令執(zhí)行單元(store memory instruction execution unit)的寫入數(shù)據(jù)和寫入地址、和來自所述超標(biāo)量計(jì)算機(jī)處理器的加 栽存儲器指令執(zhí)行單元的讀取數(shù)據(jù)的讀取地址,以便在當(dāng)前時(shí)鐘周期 上向和從計(jì)算機(jī)存儲器高速緩存中的相同高速緩存行寫入所述寫入數(shù) 據(jù)和讀出所述讀取數(shù)據(jù);由存儲器高速緩存控制器在當(dāng)前時(shí)鐘周期上 將寫入數(shù)據(jù)存儲到相同高速緩存行中;由存儲器高速緩存控制器在加 載存儲器指令執(zhí)行單元中推遲相應(yīng)的加載微指令;和由存儲器高速緩 存控制器在隨后的時(shí)鐘周期上從計(jì)算機(jī)存儲器高速緩存中讀出來自讀 取地址的讀取數(shù)據(jù)。通過結(jié)合附圖對本發(fā)明的示范性實(shí)施例進(jìn)行如下更具體描述,本 發(fā)明的前述和其它目的、特征和優(yōu)點(diǎn)將更加清楚,在附圖中,相同的 標(biāo)號一般代表本發(fā)明的示范性實(shí)施例的相同部分。
圖l示出了包含可用在根據(jù)本發(fā)明實(shí)施例管理計(jì)算機(jī)存儲器高速 緩存中的訪問沖突中的計(jì)算機(jī)例子的自動(dòng)計(jì)算機(jī)構(gòu)的方塊圖;圖2示出了根據(jù)本發(fā)明實(shí)施例管理計(jì)算機(jī)存儲器高速緩存中的訪 問沖突的示范性裝置的功能方塊圖;圖3示出了根據(jù)本發(fā)明實(shí)施例管理計(jì)算機(jī)存儲器高速緩存中的訪 問沖突的示范性裝置的功能方塊圖;圖4示出了根據(jù)本發(fā)明實(shí)施例管理計(jì)算機(jī)存儲器高速緩存中的訪 問沖突的示范性方法的流程圖;和圖5示出了例示根據(jù)本發(fā)明實(shí)施例管理計(jì)算機(jī)存儲器高速緩存中 的訪問沖突的示范性時(shí)序圖。
具體實(shí)施方式
下面從圖l開始,參照附圖描述根據(jù)本發(fā)明實(shí)施例管理計(jì)算機(jī)存 儲器高速緩存中的訪問沖突的示范性方法、系統(tǒng)、和產(chǎn)品。根據(jù)本發(fā) 明實(shí)施例管理計(jì)算機(jī)存儲器高速緩存中的訪問沖突一般利用計(jì)算機(jī), 即,自動(dòng)計(jì)算機(jī)構(gòu)或計(jì)算機(jī)實(shí)現(xiàn)。圖l示出了包含可用在根據(jù)本發(fā)明 實(shí)施例管理計(jì)算機(jī)存儲器高速緩存中的訪問沖突中的計(jì)算機(jī)例子(152)的自動(dòng)計(jì)算機(jī)構(gòu)的方塊圖。圖1的計(jì)算機(jī)(152)包括至少一 個(gè)計(jì)算機(jī)處理器(156)或'CPU,,以及通過高速存儲器總線(166)、 總線適配器(158)、和前側(cè)總線(162)與處理器(156)和與語音服 務(wù)器的其它部件連接的隨機(jī)訪問存儲器(168) ORAM,)。處理器(156)是包括不止一個(gè)執(zhí)行單元(100, 102)的超標(biāo)量 處理器。超標(biāo)量處理器是包括多個(gè)執(zhí)行單元以允許在多條流水線中同 時(shí)處理不止一條指令的計(jì)算機(jī)處理器。流水線是串聯(lián)在處理器內(nèi)的一 組數(shù)據(jù)處理單元,從而一個(gè)處理單元的輸出是下一個(gè)處理單元的輸入。 這樣一系列單元中的每個(gè)單元被稱為一個(gè)"級",從而由特定數(shù)目的級 表征流水線,即,三級流水線、四級流水線等。所有流水線至少含有 兩個(gè)級, 一些流水線具有多于十二個(gè)級。構(gòu)成流水線級的處理單元是 實(shí)現(xiàn)指令的各個(gè)級(地址解碼和算術(shù)、寄存器取出、高速緩存查找等) 的邏輯單元。流水線的實(shí)現(xiàn)使處理器可以更有效地工作,因?yàn)橐粭l計(jì) 算機(jī)程序指令可以與同時(shí)處在流水線每個(gè)級中的其它計(jì)算機(jī)程序指令 同時(shí)執(zhí)行。因此,五級流水線可以含有在流水線中同時(shí)執(zhí)行的五條計(jì) 算機(jī)程序指令, 一條正在從寄存器中取出, 一條正在被解碼, 一條正 在執(zhí)行單元中執(zhí)行, 一條正在從存儲器中檢索其他的所需數(shù)據(jù), 一條 正在將它的結(jié)果寫回到寄存器中,所有這些指令都同時(shí)處在同一時(shí)鐘 周期內(nèi)。超標(biāo)量處理器(156)由時(shí)鐘(未示出)驅(qū)動(dòng)。處理器由靜態(tài)和 動(dòng)態(tài)邏輯的內(nèi)部網(wǎng)絡(luò)組成門、鎖存器、觸發(fā)器、和寄存器。當(dāng)時(shí)鐘 脈沖到達(dá)時(shí),動(dòng)態(tài)單元(鎖存器、觸發(fā)器、和寄存器)取其新值,然 后,靜態(tài)邏輯需要一段時(shí)間來解碼新值。然后,下一個(gè)時(shí)鐘脈沖到達(dá), 動(dòng)態(tài)單元再次取其新值,以此類推。通過將靜態(tài)邏輯分解成較小的片 段,并且將動(dòng)態(tài)單元插在這些靜態(tài)邏輯片段之間,可以縮短邏輯單元 給出有效輸出之前的延遲,這意味著可以縮短時(shí)鐘周期-并且處理器 可以運(yùn)行得更快。可以將超標(biāo)量處理器(156)看作提供一種"內(nèi)部多處理,,形式, 因?yàn)槎鄠€(gè)執(zhí)行單元可以在處理器內(nèi)同時(shí)對不止一條指令并行地操作。 許多現(xiàn)代處理器都是超標(biāo)量的; 一些處理器含有比另一些更多的并行 執(zhí)行單元。執(zhí)行單元是處理器內(nèi)能夠執(zhí)行一類特定指令,存儲器I/0、 整數(shù)計(jì)算、布爾(Boolean)邏輯運(yùn)算、浮點(diǎn)計(jì)算等的靜態(tài)和動(dòng)態(tài)邏輯 模塊。在超標(biāo)量處理器中,存在同一類型的不止一個(gè)執(zhí)行單元,以及 將指令調(diào)度到執(zhí)行單元的附加電路。例如,大多數(shù)超標(biāo)量設(shè)計(jì)包括不 止一個(gè)整數(shù)算術(shù)/邏輯單元('ALU,)。調(diào)度器從存儲器中讀取指令, 并且決定哪些指令可以并行地運(yùn)行,將它們調(diào)度到兩個(gè)單元。圖l的計(jì)算機(jī)還包括有時(shí)稱為處理器高速緩存或一級高速緩存的 那種類型的計(jì)算機(jī)存儲器高速緩存(108),但在本說明書中稱為'計(jì) 算機(jī)存儲器高速緩存,,或有時(shí)簡稱為'高速緩存,。計(jì)算機(jī)存儲器高速 緩存是處理器(156 )用于縮短訪問存儲器的平均時(shí)間的高速緩存。與 RAM (168)中的主存儲器相比,高速緩存是存儲來自最頻繁使用的 主存儲單元-這里稱為'存儲頁面,的數(shù)據(jù)的副本的更小、更快的存儲 器。存儲在高速緩存中的存儲頁面被稱為"幀"。只要大多數(shù)存儲器訪 問是針對高速緩存的存儲單元的,存儲器訪問的平均等待時(shí)間更接近
高速緩存等待時(shí)間(與主存儲器的等待時(shí)間相比)。主存儲器以'頁面,的形式組織起來。高速緩存幀是大小與存儲頁 面相適應(yīng)的高速緩存存儲器的一部分。每個(gè)高速緩存幀被進(jìn)一步組織成每一個(gè)叫做'高速緩存行,的存儲段。高速緩存行的大小可以從例如8 個(gè)字節(jié)變化到516個(gè)字節(jié)。高速緩存行的大小通常^U殳計(jì)成大于范圍 從1個(gè)字節(jié)到16個(gè)字節(jié),即一個(gè)字節(jié)、 一個(gè)字、 一個(gè)雙字等,的程序 指令請求的普通訪問的大小。圖1的例子中的計(jì)算機(jī)包括存儲器管理單元('MMU,) (106), 存儲器管理單元('MMU,) (106)又包括高速緩存控制器(104)。 為了易于說明起見,MMU (106)和高速緩存(108)被顯示成處理器 (156)外部的獨(dú)立功能單元。但本領(lǐng)域的普通技術(shù)人員應(yīng)該認(rèn)識到, MMU以及高速緩存可以集成在處理器本身中。MMU (106) —般代 表處理器(156 )執(zhí)行訪問存儲器的操作。MMU利用高速轉(zhuǎn)換后援緩 沖器或(較慢的)存儲器映像(map)來確定處理器尋找的存儲器地 址的內(nèi)容是否在高速緩存內(nèi)。如果目標(biāo)地址的內(nèi)容在高速緩存內(nèi), MMU代表處理器迅速訪問它,以便從高速緩存中讀取數(shù)據(jù)或?qū)?shù)據(jù) 寫入高速緩存中。如果目標(biāo)地址的內(nèi)容未在高速緩存內(nèi),MMU將處 理器中的操作推遲長到足夠從主存儲器中檢索目標(biāo)地址的內(nèi)容的時(shí) 間。數(shù)據(jù)向和從高速緩存的實(shí)際存儲和加載由高速緩存控制器(104 ) 完成。在本例中,高速緩存控制器(104)擁有分別到加載存儲器指令 執(zhí)行單元(100)和存儲存儲器指令執(zhí)行單元(102)的互連線(103, 105),并且,高速緩存控制器(104)能夠從處理器(156)中的執(zhí)行 單元同時(shí)接受存儲指令和加栽指令這兩者。高速緩存控制器(104)還 擁有分立的與計(jì)算機(jī)存儲器高速緩存(108)的互連線(107, 109), 用于從高速緩存加載數(shù)據(jù)和將數(shù)據(jù)存儲到高速緩存中,并且,高速緩 存控制器(104)能夠在同一時(shí)鐘周期內(nèi)同時(shí)將數(shù)據(jù)存儲到高速緩存中 和從高速緩存加載數(shù)據(jù)—只要待加載的數(shù)據(jù)和待存儲的數(shù)據(jù)處在高速 緩存內(nèi)的分立的高速緩存行中。
在圖1的例子中,存儲器高速緩存控制器(104)可以通過互連 線(105)從超標(biāo)量處理器(156)的存儲存儲器指令執(zhí)行單元(102) 接收寫入地址和寫入數(shù)據(jù),并且,存儲器高速緩存控制器(104)可以 通過互連線(103)從超標(biāo)量計(jì)算機(jī)處理器(156)的加載存儲器指令 執(zhí)行單元(100 )接收讀取數(shù)據(jù)的讀取地址。寫入數(shù)據(jù)和讀取數(shù)據(jù)是要 在當(dāng)前時(shí)鐘周期內(nèi)同時(shí)向和從計(jì)算機(jī)存儲器高速緩存中的相同行寫入 和讀出,從而造成訪問沖突。高速緩存存儲器控制器能夠在當(dāng)前時(shí)鐘 周期內(nèi)同時(shí)讀出讀取數(shù)據(jù)和寫入寫入數(shù)據(jù)—只要不是針對相同高速緩 存行進(jìn)行讀和寫。因此,同時(shí)指向相同高速緩存行的讀寫代表訪問沖 突。如果像這里一樣存在訪問沖突,讀寫同時(shí)指向相同的高速緩存 行,存儲器高速緩存控制器將推遲(stall)某種類型的處理器操作, 以便使讀出或?qū)懭氚l(fā)生在隨后的時(shí)鐘周期中。在本例中,存儲器高速 緩存控制器(104 )被配置成在當(dāng)前時(shí)鐘周期中將寫入數(shù)據(jù)存儲到相同 高速緩存行中;推遲加載存儲器指令執(zhí)行單元(100 )中的相應(yīng)的加載 微指令;和在隨后時(shí)鐘周期中從計(jì)算機(jī)存儲器高速緩存(108)中的讀 取地址中讀出讀取數(shù)據(jù)。相應(yīng)的加載微指令是指,該加載微指令使讀 取地址與指向相同高速緩存行的寫入地址同時(shí)被給予高速緩沖存儲器 控制器,在這個(gè)意義上它是"相應(yīng)(corresponding)"的。在圖1的示范計(jì)算機(jī)中,應(yīng)用程序(195)存儲在RAM (168) 中。應(yīng)用程序(195)可以是包括例如字處理器應(yīng)用程序、電子表格應(yīng) 用程序、數(shù)據(jù)庫管理應(yīng)用程序、數(shù)據(jù)通信應(yīng)用程序等的計(jì)算機(jī)程序指 令的任何用戶級模塊。存儲在RAM (168 )中的還有操作系統(tǒng)(154 )。 可用在根據(jù)本發(fā)明實(shí)施例的管理計(jì)算機(jī)存儲器高速緩存中的訪問沖突 的計(jì)算機(jī)中的操作系統(tǒng)包括UNIXTM、 LinuxTM、 Microsoft NTTM、 AIXTM、 IBMi5/OSTM、和本領(lǐng)域的普通技術(shù)人員可以想到的其它操作 系統(tǒng)。圖1的例子中的操作系統(tǒng)(154)和應(yīng)用程序(195)被示出位 于RAM (168)中,但這種軟件的許多組件通常存儲在非易失性存儲 器中,以及,例如盤驅(qū)動(dòng)器(170)上。
圖l的計(jì)算機(jī)(152)包括總線適配器(158),包含高速總線、 前側(cè)總線(162)、視頻總線(164)、和存儲器總線(166)的驅(qū)動(dòng)電 子電路的計(jì)算機(jī)硬件部件,以及較慢擴(kuò)展總線(160)的驅(qū)動(dòng)電子電路。 可根據(jù)本發(fā)明實(shí)施例用在語音服務(wù)器中的總線適配器的例子包括 Intel NorthbridgeTM 、 Intel Memory Controller HubTM 、 Intel SouthbridgeTM、和Intel I/O Controller HubTM??刹鹏迵?jù)本發(fā)a月實(shí)施例 用在語音服務(wù)器中的擴(kuò)展總線的例子包括工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)OISA,)總線 和外圍部件互連('PCI,)總線。圖1的計(jì)算機(jī)(152 )包括通過擴(kuò)展總線(160 )和總線適配器(158 ) 與處理器156和計(jì)算機(jī)(152)的其它部件耦合的盤驅(qū)動(dòng)器適配器 (172)。盤驅(qū)動(dòng)器適配器(172)將具有盤驅(qū)動(dòng)器(170)形式的非易 失性數(shù)據(jù)存儲設(shè)備與計(jì)算機(jī)(152)連接??捎迷谡Z音服務(wù)器中的盤驅(qū) 動(dòng)器適配器包括集成驅(qū)動(dòng)器電子電路('IDE,)適配器、小型計(jì)算機(jī)系 統(tǒng)接口 ('SCSI,)適配器、和本領(lǐng)域的普通技術(shù)人員可以想到的其它 適配器。另外,對于語音服務(wù)器,正如本領(lǐng)域的普通技術(shù)人員可以想 到的那樣,非易失性計(jì)算機(jī)存儲器可以實(shí)現(xiàn)成光盤驅(qū)動(dòng)器、電可擦除 可編程只讀存儲器(所謂的'EEPROM,或'閃速,存儲器)、RAM驅(qū)動(dòng) 器等。圖1的示范語音服務(wù)器包括一個(gè)或多個(gè)輸入/輸出('I/O,)適配 器(178)。語音服務(wù)器中的1/0適配器通過例如軟件驅(qū)動(dòng)器和計(jì)算機(jī) 硬件實(shí)現(xiàn)面向用戶的輸入/輸出,以便控制到像計(jì)算機(jī)顯示屏那樣的顯 示設(shè)備的輸出,以及從像鍵盤和鼠標(biāo)那樣的用戶輸入設(shè)備(181)的用 戶輸入。圖1的語音服務(wù)器例子包括視頻適配器(209),視頻適配器 (209)是專門為到像顯示屏或計(jì)算機(jī)監(jiān)視器那樣的顯示設(shè)備(180) 的圖形輸出設(shè)計(jì)的1/0適配器的例子。視頻適配器(209)通過高速視 頻總線(164 )、總線適配器(158 )、和也是高速總線的前側(cè)總線(162 ) 與處理器(156)連接。圖1的示范性計(jì)算機(jī)(152)包括用于與其它計(jì)算機(jī)(182)進(jìn)行 數(shù)據(jù)通信的通信適配器(167)。這樣的數(shù)據(jù)通信可以通過RS-232連
線,通過像通用串行總線('USB,)那樣的外部總線,通過像IP數(shù)據(jù) 通信網(wǎng)絡(luò)那樣的數(shù)據(jù)通信網(wǎng)絡(luò),和以本領(lǐng)域的普通技術(shù)人員可以想到 的其它方式串行地進(jìn)行。通信適配器實(shí)現(xiàn)一臺計(jì)算機(jī)直接或通過數(shù)據(jù) 通信網(wǎng)絡(luò)將數(shù)據(jù)發(fā)送到另一臺計(jì)算機(jī)的硬件級數(shù)據(jù)通信。可用于根據(jù) 本發(fā)明實(shí)施例管理計(jì)算機(jī)存儲器高速緩存中的訪問沖突的通信適配器 的例子包括用于有線撥號通信的調(diào)制解調(diào)器、用于有線數(shù)據(jù)通信網(wǎng)絡(luò) 通信的以太網(wǎng)(IEEE 802.3)適配器、和用于無線數(shù)據(jù)通信網(wǎng)絡(luò)通信 的802.11適配器。圖1的示范多模態(tài)設(shè)備還包括聲卡(174),聲卡(174)是專門 為接受來自麥克風(fēng)(176 )的模擬音頻信號和將模擬音頻信號轉(zhuǎn)換成數(shù) 字形式以便作進(jìn)一步處理而設(shè)計(jì)的I/O適配器的例子。聲卡(174 )通 過擴(kuò)展總線(160)、總線適配器(158)、和前側(cè)總線(162)與處理 器(156)連接。為了進(jìn)一步說明,圖2示出了根據(jù)本發(fā)明實(shí)施例管理計(jì)算機(jī)存儲 器高速緩存中的訪問沖突的示范性裝置的功能方塊圖。圖2的示范裝 置包括超標(biāo)量計(jì)算機(jī)處理器(156 )、帶有存儲器高速緩存控制器(104 ) 的MMU (106)、和計(jì)算機(jī)存儲器高速緩存(108)。處理器(156) 包括由處理器的所有寄存器(128)組成的寄存器堆(126)。寄存器 堆(126 )是通常利用快速靜態(tài)存儲器件實(shí)現(xiàn)的處理器寄存器陣列。寄 存器包括只可被執(zhí)行單元訪問的寄存器(120),以及'體系結(jié)構(gòu)寄存 器,,(118)。處理器(156)的指令集體系結(jié)構(gòu)定義被稱為'體系結(jié)構(gòu) 寄存器,的一組寄存器,用于對存儲器與處理器中的執(zhí)行單元之間的數(shù) 據(jù)進(jìn)行分級(stage)。體系結(jié)構(gòu)寄存器是可由用戶級計(jì)算機(jī)程序指令 直接訪問的寄存器。在較簡單的處理器中,這些體系結(jié)構(gòu)寄存器與處 理器(156)內(nèi)的物理寄存器堆中的項(xiàng)目一一對應(yīng)。像這里例示的處理 器(156 )那樣的較復(fù)雜的處理器使用寄存器重命名,使得哪個(gè)物理項(xiàng) 目存儲特定的體系結(jié)構(gòu)寄存器的映射在執(zhí)行期間動(dòng)態(tài)地改變。處理器(156)包括解碼引擎(122)、調(diào)度引擎(124)、執(zhí)行 引擎(140)、和寫回引擎(155)。這些引擎的每一個(gè)都是為在處理
器內(nèi)內(nèi)部地將程序指令流水線化而執(zhí)行特定功能的處理器(156)內(nèi)的 靜態(tài)和動(dòng)態(tài)邏輯單元的網(wǎng)絡(luò)。解碼引擎(122 )從寄存器組中的寄存器 中檢索機(jī)器代碼指令,并且將機(jī)器代碼指令解碼成微指令。調(diào)度引擎 (124)將微指令調(diào)度到執(zhí)行引擎中的執(zhí)行單元。執(zhí)行引擎(140)中 的執(zhí)行單元執(zhí)行微指令。并且,寫回引擎(155)將執(zhí)行結(jié)果寫回到寄 存器堆(126)中的適當(dāng)寄存器中。處理器(156)包括讀取用戶級計(jì)算機(jī)程序指令和將該指令解碼 成一條或多條微指令以便插入微指令隊(duì)列(110 )中的解碼引擎(122 )。 正如單條高級語言指令被編譯和匯編成一系列機(jī)器指令(加載、存儲、移位等)一樣,每條機(jī)器指令又通過一系列微指令實(shí)現(xiàn)。這樣的一系 列微指令有時(shí)被稱做'微程序,或'微代碼,。微指令有時(shí)被稱為'微操作,, 'micro-ops,或'nops,-但在本說明書中,微指令通常被稱為'微指令,。微程序被仔細(xì)設(shè)計(jì)和優(yōu)化以便盡可能最快地被執(zhí)行,因?yàn)槁奈?程序?qū)⑸陕臋C(jī)器指令,慢的機(jī)器指令又使利用該指令的所有程序 變慢。例如,微指令可以指定下面的基本操作 將寄存器1與ALU的"A"側(cè)連接 將寄存器7與ALU的"B"側(cè)連接 將ALU設(shè)置成進(jìn)行二進(jìn)制補(bǔ)碼相加 將ALU的進(jìn)位輸入設(shè)置成零 將結(jié)果值存儲到寄存器8中 用ALU狀態(tài)標(biāo)志("負(fù)"、"零"、"溢出"、和"進(jìn)位,,)更新"條 件代碼" 微轉(zhuǎn)移到下一條微指令的MicroPC nnn對于進(jìn)一步的例子像例如ADD A, B, C那樣相加兩個(gè)數(shù)的典型 匯編語言指令可以相加在存儲單元A和B中找到的值,然后將結(jié)果放 入存儲單元C中。在處理器(156 )中,解碼引擎(122 )可以將這條 用戶級指令分解成類似于如下的一系列微指令LOAD A,ReglLOAD B,Reg2 ADD Regl,Reg2,Reg3 STORE Reg3,C然后,將這些微指令放置在微指令隊(duì)列(110)中,以便調(diào)度到 執(zhí)行單元。處理器(156)還包括完成將各條微指令從微指令隊(duì)列調(diào)度到執(zhí) 行單元的工作的調(diào)度引擎(124)。處理器(156)包括執(zhí)行引擎,執(zhí) 行引擎又包括幾個(gè)執(zhí)行單元,即,兩個(gè)加栽存儲器指令執(zhí)行單元(130, 100 )、兩個(gè)存儲存儲器指令執(zhí)行單元(132, 102 )、兩個(gè)ALU (134, 136)、和浮點(diǎn)執(zhí)行單元(138)。本例中的微指令隊(duì)列包括第一存儲 微指令(112)、相應(yīng)的加載微指令(114)、和第二存儲微指令(116)。 認(rèn)為加載微指令(114)與第一存儲微指令(112)相對應(yīng)是因?yàn)檎{(diào)度 引擎(124)在同一時(shí)鐘周期內(nèi)同時(shí)將第一存儲微指令(112)和它的 相應(yīng)的加載微指令(114 )調(diào)度到執(zhí)行引擎(140 )中。調(diào)度引擎(124 ) 可以這樣做是因?yàn)閳?zhí)行引擎支持兩條執(zhí)行流水線,從而使兩條微指令 可以完全同時(shí)地通過流水線的執(zhí)行部分。在本例中,盡管第一存儲微指令(112 )和相應(yīng)的加栽微指令(114 ) 尋址相同高速緩存行中的存儲單元,但由于被尋址的存儲單元不相同, 所以調(diào)度引擎(124 )在這兩條指令之間檢測不到相關(guān)性。存儲器地址 處在相同高速緩存行中,但這個(gè)事實(shí)不為調(diào)度引擎(124)所知。就調(diào) 度引擎而論,加栽微指令(114)從與第一存儲微指令(112)將數(shù)據(jù) 寫入的存儲器地址不同的存儲器地址中讀取數(shù)據(jù)。因此,從調(diào)度引擎 的觀點(diǎn)來看,沒有理由不讓第 一存儲微指令和相應(yīng)的加栽微指令同時(shí) 執(zhí)行。從調(diào)度引擎的觀點(diǎn)來看,沒有理由要求加載微指令等待第一存 儲微指令的完成。圖2的示范裝置還包括MMU (106) , MMU (106)又包括耦 合用來控制計(jì)算機(jī)存儲器高速緩存(108 )和與計(jì)算機(jī)存儲器高速緩存 (108)進(jìn)行數(shù)據(jù)通信的存儲器高速緩存控制器(104)。計(jì)算機(jī)存儲 器高速緩存(108 )是能夠?qū)⒋鎯ζ鞯膬蓚€(gè)頁面存入高速緩存幀中的雙 向成組相關(guān)聯(lián)(set associative)存儲器高速緩存,其中,存儲器的任 何頁面都可以存入任何一個(gè)幀中。高速緩存(108)的每個(gè)幀被進(jìn)一步 組織成高速緩存存儲器的高速緩存行(524),其中,每個(gè)高速緩存行 包括存儲器的不止一個(gè)字節(jié)。例如,每個(gè)高速緩存行可以包括32個(gè)位 或64個(gè)位等。在本例中,存儲器高速緩存(108)被顯示成只有兩個(gè)幀幀0 和幀1。在本例中使用兩個(gè)幀只是為了易于說明。實(shí)際上,這樣的存 儲器高速緩存可以以本領(lǐng)域的普通技術(shù)人員可以想到的方式包括任何 數(shù)量的關(guān)聯(lián)幀。在計(jì)算機(jī)存儲器高速緩存被配置成存儲容量不止一個(gè) 幀的成組相關(guān)聯(lián)高速緩存存儲器的裝置中,向和從計(jì)算機(jī)存儲器高速 緩存中的相同高速緩存行寫入寫入數(shù)據(jù)和讀出讀取數(shù)據(jù)的事實(shí)意味著 將向和從計(jì)算機(jī)存儲器高速緩存中的相同幀中的相同高速緩存行中寫 入寫入數(shù)據(jù)和讀出讀取數(shù)據(jù)。在圖2的例子中,高速緩存控制器(104 )包括地址比較電取148 ), 地址比較電路(148)含有用于推遲相應(yīng)的加栽微指令(114)、與加 載存儲器指令執(zhí)行單元連接的推遲輸出線(150)。調(diào)度到執(zhí)行單元同 時(shí)執(zhí)行的第一存儲微指令(112)和相應(yīng)的加栽微指令(114)兩者都 將存儲器地址提供給高速緩存控制器(104 ),因此,也通過互連線(103, 105)同時(shí)提供給地址比較電路(148)。第一存儲微指令提供計(jì)算機(jī) 存儲器中的寫入地址,其中,寫入地址含有被高速緩存在計(jì)算機(jī)存儲 器高速緩存中的相同高速緩存行中-即,要被相應(yīng)的加載微指令(114 ) 訪問的相同高速緩存行(522)中的內(nèi)容。相應(yīng)的加載微指令提供計(jì)算 機(jī)存儲器中的讀取地址,其中,讀取地址含有也被高速緩存在計(jì)算機(jī) 存儲器高速緩存(524)中的相同高速緩存行(522)中的內(nèi)容。地址比較電路(148)比較寫入地址和讀取地址,以確定兩個(gè)地 址是否訪問相同高速緩存行。確定兩個(gè)地址訪問相同高速緩存行是通 過計(jì)算機(jī)存儲器高速緩存控制器的地址比較電路確定將向和從相同高 速緩存行中寫入寫入數(shù)據(jù)和讀出讀取數(shù)據(jù)。如果就像在本例中那樣, 兩個(gè)地址訪問相同高速緩存行,那么,地址比較電路利用推遲輸出線 (150 )將信號發(fā)送到調(diào)度加栽微指令的加栽存儲器指令執(zhí)行單元,推
遲相應(yīng)的加載微指令。也就是說,推遲相應(yīng)的加載微指令由地址比較電路(148)通過推遲輸出線(159)將推遲相應(yīng)的加栽微指令的信號 發(fā)送給加栽存儲器指令執(zhí)行單元來完成。推遲相應(yīng)的加載微指令通常將相應(yīng)的加栽微指令(以及流水線中 位于該相應(yīng)的加載微指令之后的所有微指令)的執(zhí)行延遲一個(gè)處理器 時(shí)鐘周期。因此,推遲相應(yīng)的加栽微指令使執(zhí)行引擎可以在不推遲第 二存儲微指令(116 )而推遲相應(yīng)的加栽微指令的同時(shí)在執(zhí)行了第一存 儲微指令(112)之后執(zhí)行第二存儲微指令(116)。也就是說,盡管 相應(yīng)的加載微指令遭到推遲,但第一存儲微指令和第二存儲微指令都 未遭到推遲。存儲微指令在緊接著的時(shí)鐘周期內(nèi)執(zhí)行,就像相應(yīng)的加 載微指令沒有被推遲時(shí)它們進(jìn)行的那樣。為了進(jìn)一步說明,圖3示出了根據(jù)本發(fā)明實(shí)施例管理計(jì)算機(jī)存儲 器高速緩存中的訪問沖突的示范性裝置的功能方塊圖。圖3的裝置包 括配置成如本說明書中上面所述那樣操作的超標(biāo)量計(jì)算機(jī)處理器 (156 )、加載存儲器指令執(zhí)行單元(100 )、存儲存儲器指令執(zhí)行單 元(102) 、 MMU (102)、計(jì)算機(jī)存儲器高速緩存控制器(104)、 地址比較電路(148)、和計(jì)算機(jī)存儲器高速緩存(106)。在圖3的例子中,計(jì)算機(jī)存儲器高速緩存控制器(104)包括加 載輸入地址端口 (142)。加栽輸入地址端口 (142)由將加載微指令 的讀取地址(143)從加載存儲器指令執(zhí)行單元(100)傳送到高速緩 存控制器(104)和地址比較電路(148)所需的所有電氣互連線,即, 導(dǎo)電通道、總線連線、焊接點(diǎn)、通孔等組成。在圖3的例子中,計(jì)算機(jī)存儲器高速緩存控制器(104)包括存 儲輸入地址端口 (142)。存儲輸入地址端口 (144)由將存儲微指令 的寫入地址(145)從存儲存儲器指令執(zhí)行單元(102)傳送到高速緩 存控制器(104)和地址比較電路(148)所需的所有電氣互連線,即, 導(dǎo)電通道、總線連線、焊接點(diǎn)、通孔等組成。為了進(jìn)一步說明,圖4示出了根據(jù)本發(fā)明實(shí)施例管理計(jì)算機(jī)存儲 器高速緩存中的訪問沖突的示范性方法的流程圖。圖4的方法包括在 第 一流水線中在超標(biāo)量計(jì)算機(jī)處理器(156 )的存儲存儲器指令執(zhí)行單 元中執(zhí)行(502)將寫入數(shù)據(jù)存入計(jì)算機(jī)存儲器中的寫入地址(518) 中的第一存儲微指令。計(jì)算機(jī)存儲器中的寫入地址含有高速緩存在計(jì) 算機(jī)存儲器高速緩存(108 )中的相同高速緩存行(522 )中的內(nèi)容。'相 同高速緩存行,指的是相應(yīng)的加栽微指令將從中加載讀取數(shù)據(jù)的相同 高速緩存行。圖4的方法還包括與執(zhí)行第一存儲微指令同時(shí)地在第二 流水線中在超標(biāo)量計(jì)算機(jī)處理器的加栽存儲器指令執(zhí)行單元中執(zhí)行 (504)從計(jì)算機(jī)存儲器中的讀取地址(520)中加載讀取數(shù)據(jù)的相應(yīng) 的加載微指令。計(jì)算機(jī)存儲器中的讀取地址含有也高速緩存在計(jì)算機(jī) 存儲器高速緩存(524)中的相同高速緩存行(522)中的內(nèi)容。高速 緩存存儲器(108)和處理器(156)通過計(jì)算機(jī)存儲器高速緩存控制 器(104)相互可操作地耦合。在圖4的方法中,計(jì)算機(jī)存儲器高速緩存(108)被配置成存儲 容量不止一個(gè)幀(這里為幀0和幀1)的成組相關(guān)聯(lián)高速緩存存儲器, 其中,存儲器的一個(gè)頁面可以存儲在高速緩存的任何幀中,并且向和 從計(jì)算機(jī)存儲器高速緩存中的相同高速緩存行中寫入寫入數(shù)據(jù)和讀出 讀取數(shù)據(jù)被實(shí)現(xiàn)成將向和從計(jì)算機(jī)存儲器高速緩存中的相同幀中的相 同高速緩存行中寫入寫入數(shù)據(jù)和讀出讀取數(shù)據(jù)。也就是說,計(jì)算機(jī)存 儲器中的寫入地址(518 )含有高速緩存在計(jì)算機(jī)存儲器高速緩存中的 相同高速緩存行(522)中的內(nèi)容的事實(shí)意味著,計(jì)算機(jī)存儲器中的寫 入地址含有高速緩存在計(jì)算機(jī)存儲器高速緩存(108)中的相同幀(這 里為幀1)的相同高速緩存行中的內(nèi)容。類似地,計(jì)算機(jī)存儲器中的 讀取地址(520 )含有也高速緩存在計(jì)算機(jī)存儲器高速緩存中的相同高 速緩存行(522)中的內(nèi)容的事實(shí)意味著,計(jì)算機(jī)存儲器中的讀取地址 含有也高速緩存在計(jì)算機(jī)存儲器高速緩存(108)中的相同幀(幀l) 的相同高速緩存行中的內(nèi)容。圖4的方法還包括在存儲器高速緩存控制器中接收(506)來自 超標(biāo)量計(jì)算機(jī)處理器的存儲存儲器指令執(zhí)行單元的寫入地址和寫入數(shù) 據(jù)、和來自超標(biāo)量計(jì)算機(jī)處理器的加載存儲器指令執(zhí)行單元的讀取數(shù)
據(jù)的讀取地址,以便在當(dāng)前時(shí)鐘周期內(nèi)同時(shí)向和從計(jì)算機(jī)存儲器高速 緩存中的相同高速緩存行中寫入寫入數(shù)據(jù)和讀出讀取數(shù)據(jù)。也就是說, 調(diào)度打算同時(shí)被讀寫的寫入數(shù)據(jù)和讀取數(shù)據(jù)。這個(gè)步驟是否能完成取 決于是否將向和從相同高速緩存行中寫入寫入數(shù)據(jù)和讀出讀取數(shù)據(jù)。 如果是,不能同時(shí)寫入和讀出它們。圖4的方法還包括由計(jì)算機(jī)存儲器高速緩存控制器的地址比較電 路確定(508 )將向和從相同高速緩存行中寫入寫入數(shù)據(jù)和讀出讀取數(shù) 據(jù)。在圖4的方法中,計(jì)算機(jī)存儲器高速緩存控制器(104)含有地址 比較電路(148),地址比較電路(148)含有推遲相應(yīng)的加載微指令 的推遲輸出(150)。向和從相同高速緩存行中寫入寫入數(shù)據(jù)和讀出讀 取數(shù)據(jù)的確定(508)由計(jì)算機(jī)存儲器高速緩存控制器(104)的地址 比較電路(148)完成。向和從相同高速緩存行中寫入寫入數(shù)據(jù)和讀出 讀取數(shù)據(jù)的事實(shí)是計(jì)算機(jī)存儲器高速緩存中的訪問沖突。圖4的方法還包括由存儲器高速緩存控制器在當(dāng)前時(shí)鐘周期內(nèi)將 寫入數(shù)據(jù)存儲(510 )到相同高速緩存行中。在確定了存在訪問沖突之 后,高速緩存控制器通過在當(dāng)前時(shí)鐘周期內(nèi)將寫入數(shù)據(jù)存儲到相同高 速緩存行中使第一存儲微指令完成它的執(zhí)行。圖4的方法還包括推遲(512)相應(yīng)的加載微指令。在本例中, 推遲(512)相應(yīng)的加載微指令由地址比較電路(148)通過推遲輸出 線(150)將推遲相應(yīng)的加載微指令的信號發(fā)送給處理器(156)中的 加載存儲器指令執(zhí)行單元來完成。圖4的方法還包括由存儲器高速緩存控制器(104)在隨后的時(shí) 鐘周期內(nèi)從計(jì)算機(jī)存儲器高速緩存(108)中讀出(515)來自讀取地 址的讀取數(shù)據(jù)。讀取地址處在相同高速緩存行(522)中。在圖4的方法中,超標(biāo)量計(jì)算機(jī)處理器包括上述那種類型的微指 令隊(duì)列(圖2中的110)。微指令隊(duì)列包含第一存儲微指令、相應(yīng)的 加載微指令、和第二存儲微指令,并且,圖4的方法包括在不推遲第 二存儲微指令而推遲相應(yīng)的加載微指令的同時(shí),在執(zhí)行了笫一存儲微 指令之后執(zhí)行(516)笫二存儲微指令。 為了進(jìn)一步說明,圖5示出了例示根據(jù)本發(fā)明實(shí)施例管理計(jì)算機(jī) 存儲器高速緩存中的訪問沖突的示范性時(shí)序圖。圖5的時(shí)序圖例示了 穿過第一流水線(404 )的流水線級(402 )前進(jìn)的第一存儲微指4K 408 )。 圖5的時(shí)序圖還例示了穿過第二流水線(406 )的流水線級前進(jìn)的相應(yīng) 的加載微指令(410)。圖5的時(shí)序圖還例示了緊跟在第一存儲微指令 (408)后面穿過第一流水線(404)的流水線級(402)前進(jìn)的第二存 儲微指令(404 )。盡管處理器設(shè)計(jì)不一定要求每個(gè)流水線級在一個(gè)處理器時(shí)鐘周 期內(nèi)執(zhí)行,但為了易于說明起見,這里假設(shè)圖5的例子中的每個(gè)流水 線級需要一個(gè)時(shí)鐘周期來完成該級。第一存儲微指令和相應(yīng)的加載微 指令在同一時(shí)鐘周期內(nèi)同時(shí)進(jìn)入流水線。它們在同一時(shí)鐘周期內(nèi)均被 解碼(424),并且它們在同一時(shí)鐘周期內(nèi)均被調(diào)度(426)到執(zhí)行單 元。它們在同一時(shí)鐘周期內(nèi)進(jìn)入執(zhí)行級(428),兩者都在to在同一 時(shí)鐘周期內(nèi)嘗試執(zhí)行(414, 416)。但是,在to到^之間的間隔內(nèi), 存儲器高速緩存控制器中的地址比較電路確定第一存儲微指令和相應(yīng) 的加載微指令這二者均試圖訪問相同高速緩存行中的存儲地址。計(jì)算 機(jī)存儲器高速緩存的電路被配置成高速緩存可以從高速緩存存儲器中 加載和對高速緩沖存儲器進(jìn)行寫入-只要同時(shí)加載和寫入不指向相同 高速緩存行。因此,在本例中,高速緩存控制器在時(shí)刻ti推遲相應(yīng)的加載微指 令(420, 411)。推遲相應(yīng)的加載微指令將相應(yīng)的加載微指令(410) 的執(zhí)行延遲了一個(gè)處理器時(shí)鐘周期。相應(yīng)的加載微指令(410)現(xiàn)在在 時(shí)刻b執(zhí)行(422)。推遲相應(yīng)的加載微指令使執(zhí)行引擎可以在不推 遲第二存儲微指令(412)而推遲相應(yīng)的加載微指令(410)的同時(shí), 在執(zhí)行了第一存儲微指令(408 )之后馬上執(zhí)行第二存儲微指令(412 )。 也就是說,盡管相應(yīng)的加載微指令(410)遭到推遲,但第一存儲微指 令(408 )和第二存儲微指令(412 )都未遭到推遲。存儲微指令(408, 412)被調(diào)度成在緊接著的時(shí)鐘周期t。和t2執(zhí)行,并且,存儲微指令 在緊接著的時(shí)鐘周期"和t2內(nèi)執(zhí)行,就像相應(yīng)的加載微指令(410)
沒有推遲時(shí)它們進(jìn)行的那樣。前面在管理計(jì)算機(jī)存儲器高速緩存中的訪問沖突的全功能計(jì)算 機(jī)系統(tǒng)的背景下大量描述了本發(fā)明的示范性實(shí)施例。但是,本領(lǐng)域的 普通技術(shù)人員應(yīng)該認(rèn)識到,本發(fā)明也可以實(shí)現(xiàn)在放置在信號承載媒體 上供任何適當(dāng)數(shù)據(jù)處理系統(tǒng)使用的計(jì)算機(jī)程序產(chǎn)品中。這樣的信號承 載媒體可以是機(jī)器可讀信息的傳輸媒體或可記錄媒體,包括磁媒體、 光媒體、或其它適當(dāng)媒體??捎涗浢襟w的例子包括硬盤驅(qū)動(dòng)器中的硬 盤或軟盤、光盤驅(qū)動(dòng)器中的光盤、磁帶、和本領(lǐng)域的普通技術(shù)人員可 以想到的其它媒體。傳輸媒體的例子包括用于語音通信的電話網(wǎng)絡(luò)、和像例如EthernetsTM和利用因特網(wǎng)協(xié)議和萬維網(wǎng)通信的網(wǎng)絡(luò)那樣的 數(shù)字?jǐn)?shù)據(jù)通信網(wǎng)絡(luò)。本領(lǐng)域的普通技術(shù)人員應(yīng)該立刻認(rèn)識到,含有適 當(dāng)編程工具的任何計(jì)算機(jī)系統(tǒng)都能夠執(zhí)行具體化在程序產(chǎn)品中的本發(fā) 明方法的步驟。本領(lǐng)域的普通技術(shù)人員應(yīng)該立刻認(rèn)識到,盡管描述在 本說明書中的一些示范性實(shí)施例面向安裝在計(jì)算機(jī)硬件上和在計(jì)算機(jī) 硬件上執(zhí)行的軟件,但作為固件或作為硬件實(shí)現(xiàn)的可替代實(shí)施例也完 全在本發(fā)明的范圍之內(nèi)。從前面的描述中可以明白,可以不偏離本發(fā)明精神地對本發(fā)明的 各種實(shí)施例作出修改和改變。本說明書中的描述只是為了例示,而不 應(yīng)該在限制的意義上來理解。本發(fā)明的范圍只受所附權(quán)利要求書的限 制。
權(quán)利要求
1.一種管理計(jì)算機(jī)存儲器高速緩存中的訪問沖突的方法,該方法包含在存儲器高速緩存控制器中接收來自超標(biāo)量計(jì)算機(jī)處理器的存儲存儲器指令執(zhí)行單元的寫入地址和寫入數(shù)據(jù)、和來自該超標(biāo)量計(jì)算機(jī)處理器的加載存儲器指令執(zhí)行單元的讀取數(shù)據(jù)的讀取地址,以便在當(dāng)前時(shí)鐘周期上同時(shí)向和從計(jì)算機(jī)存儲器高速緩存中的相同高速緩存行寫入所述寫入數(shù)據(jù)和讀出所述讀取數(shù)據(jù);由存儲器高速緩存控制器在當(dāng)前時(shí)鐘周期上將寫入數(shù)據(jù)存儲到該相同高速緩存行中;由存儲器高速緩存控制器在加載存儲器指令執(zhí)行單元中推遲相應(yīng)的加載微指令;和由存儲器高速緩存控制器在隨后的時(shí)鐘周期上從計(jì)算機(jī)存儲器高速緩存中讀出來自讀取地址的讀取數(shù)據(jù)。
2. 根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包含在第一流水線中 在超標(biāo)量計(jì)算機(jī)處理器的存儲存儲器指令執(zhí)行單元中執(zhí)行第一存儲微 指令以將寫入數(shù)據(jù)存儲在計(jì)算機(jī)存儲器中的寫入地址中,計(jì)算機(jī)存儲 器中的寫入地址含有高速緩存在計(jì)算機(jī)存儲器高速緩存中的相同高速 緩存行中的內(nèi)容;和與執(zhí)行第 一存儲微指令同時(shí)地在第二流水線中在超標(biāo)量計(jì)算機(jī) 處理器的加載存儲器指令執(zhí)行單元中執(zhí)行相應(yīng)的加載微指令以從計(jì)算 機(jī)存儲器中的讀取地址中加載讀取數(shù)據(jù),計(jì)算機(jī)存儲器中的讀取地址 含有也高速緩存在計(jì)算機(jī)存儲器高速緩存中的相同高速緩存行中的內(nèi) 容。
3. 根據(jù)權(quán)利要求l所述的方法,其中計(jì)算機(jī)存儲器高速緩存被配置成具有多于一幀存儲器容量的成 組相關(guān)聯(lián)高速緩存存儲器,其中,存儲器的一個(gè)頁面可以存入高速緩 存的任何幀中;并且 向和從計(jì)算機(jī)存儲器高速緩存中的相同高速緩存行寫入的寫入 數(shù)據(jù)和讀出的讀取數(shù)據(jù)包含向和從計(jì)算機(jī)存儲器高速緩存中的相同幀 中的相同高速緩存行寫入的寫入數(shù)據(jù)和讀出的讀取數(shù)據(jù)。
4. 根據(jù)權(quán)利要求l所述的方法,其中計(jì)算機(jī)存儲器高速緩存控制器包含加載輸入地址端口 、存儲輸入 地址端口、和與加載輸入地址端口連接的地址比較電路,地址比較電 路也與存儲輸入地址端口連接,地址比較電路含有用于推遲相應(yīng)的加 載微指令、與加栽存儲器指令執(zhí)行單元連接的推遲輸出;該方法進(jìn)一步包含由計(jì)算機(jī)存儲器高速緩存控制器的地址比較 電路確定將向和從相同高速緩存行寫入所述寫入數(shù)據(jù)和讀出所述讀取 數(shù)據(jù);和推遲相應(yīng)的加載微指令進(jìn)一步包含由地址比較電路通過推遲輸 出向加栽存儲器指令執(zhí)行單元發(fā)出信號以推遲相應(yīng)的加栽微指令。
5. 根據(jù)權(quán)利要求l所述的方法,其中超標(biāo)量計(jì)算機(jī)處理器進(jìn)一步包含微指令隊(duì)列,微指令隊(duì)列包含第 一存儲微指令、相應(yīng)的加栽微指令、和第二存儲微指令;并且該方法進(jìn)一步包含在推遲相應(yīng)的加栽微指令而不推遲第二存儲 微指令的同時(shí),在執(zhí)行了第一存儲微指令之后執(zhí)行第二存儲微指令。
6. —種管理計(jì)算機(jī)存儲器高速緩存中的訪問沖突的裝置,該裝 置包含計(jì)算機(jī)存儲器高速緩存、計(jì)算機(jī)存儲器高速緩存控制器、和超 標(biāo)量計(jì)算機(jī)處理器,該計(jì)算機(jī)存儲器高速緩存通過計(jì)算機(jī)存儲器高速 緩存控制器與超標(biāo)量計(jì)算機(jī)處理器可操作地耦合,該裝置被配置成能 夠在存儲器高速緩存控制器中接收來自超標(biāo)量計(jì)算機(jī)處理器的存 儲存儲器指令執(zhí)行單元的寫入地址和寫入數(shù)據(jù)、和來自超標(biāo)量計(jì)算機(jī) 處理器的加載存儲器指令執(zhí)行單元的讀取數(shù)據(jù)的讀取地址,以便在當(dāng) 前時(shí)鐘周期上同時(shí)向和從計(jì)算機(jī)存儲器高速緩存中的相同高速緩存行 中寫入所述寫入數(shù)據(jù)和讀出讀取數(shù)據(jù);由存儲器高速緩存控制器在當(dāng)前時(shí)鐘周期上將寫入數(shù)據(jù)存儲到 相同高速緩存行中;由存儲器高速緩存控制器在加栽存儲器指令執(zhí)行單元中推遲相 應(yīng)的加載微指令;和由存儲器高速緩存控制器在隨后的時(shí)鐘周期上從計(jì)算機(jī)存儲器 高速緩存中讀出來自讀取地址的讀取數(shù)據(jù)。
7. 根據(jù)權(quán)利要求6所述的裝置,被進(jìn)一步配置成能夠在第一 流水線中在超標(biāo)量計(jì)算機(jī)處理器的存儲存儲器指令執(zhí)行單元中執(zhí)行第 一存儲微指令以將寫入數(shù)據(jù)存儲到計(jì)算機(jī)存儲器中的寫入地址中,計(jì) 算機(jī)存儲器中的寫入地址含有高速緩存在計(jì)算機(jī)存儲器高速緩存中的 相同高速緩存行中的內(nèi)容;和與執(zhí)行第一存儲微指令同時(shí)地在第二流水線中在超標(biāo)量計(jì)算機(jī) 處理器的加栽存儲器指令執(zhí)行單元中執(zhí)行相應(yīng)的加栽微指令以從計(jì)算 機(jī)存儲器中的讀取地址中加載讀取數(shù)據(jù),計(jì)算機(jī)存儲器中的讀取地址 含有也高速緩存在計(jì)算機(jī)存儲器高速緩存中的相同高速緩存行中的內(nèi) 容。
8. 根據(jù)權(quán)利要求6所述的裝置,其中計(jì)算機(jī)存儲器高速緩存被配置成具有多于一幀存儲器容量的成 組相關(guān)聯(lián)高速緩存存儲器,其中,存儲器的一個(gè)頁面可以存入高速緩存的任何幀中;并且向和從計(jì)算機(jī)存儲器高速緩存中的相同高速緩存行寫入的寫入數(shù)據(jù)和讀出的讀取數(shù)據(jù)包含向和從計(jì)算機(jī)存儲器高速緩存中的相同幀中的相同高速緩存行寫入的寫入數(shù)據(jù)和讀出的讀取數(shù)據(jù)。
9. 根據(jù)權(quán)利要求6所述的裝置,其中計(jì)算機(jī)存儲器高速緩存控制器包含加栽輸入地址端口 、存儲輸入 地址端口、和與加栽輸入地址端口連接的地址比較電路,地址比較電路也與存儲輸入地址端口連接,地址比較電路含有用于推遲相應(yīng)的加 載微指令、與加栽存儲器指令執(zhí)行單元連接的推遲輸出;該裝置被進(jìn)一步配置成由計(jì)算機(jī)存儲器高速緩存控制器的地址 比較電路確定將向和從相同高速緩存行中寫入所述寫入數(shù)據(jù)和讀出讀 取數(shù)據(jù);和推遲相應(yīng)的加栽微指令進(jìn)一步包含由地址比較電路通過推遲輸 出向加載存儲器指令執(zhí)行單元發(fā)出信號以推遲相應(yīng)的加栽微指令。
10.根據(jù)權(quán)利要求6所述的裝置,其中超標(biāo)量計(jì)算機(jī)處理器進(jìn)一步包含微指令隊(duì)列,微指令隊(duì)列包含笫 一存儲微指令、相應(yīng)的加載微指令、和第二存儲微指令;并且該裝置被進(jìn)一步配置成能夠在推遲相應(yīng)的加栽微指令而不推遲 第二存儲微指令的同時(shí),在執(zhí)行了第一存儲微指令之后執(zhí)行第二存儲微指令。
全文摘要
管理計(jì)算機(jī)存儲器高速緩存中的訪問沖突包括在存儲器高速緩存控制器中接收來自超標(biāo)量計(jì)算機(jī)處理器的存儲存儲器指令執(zhí)行單元的寫入地址和寫入數(shù)據(jù)、和來自超標(biāo)量計(jì)算機(jī)處理器的加載存儲器指令執(zhí)行單元的讀取數(shù)據(jù)的讀取地址,以便在當(dāng)前時(shí)鐘周期內(nèi)同時(shí)向/從計(jì)算機(jī)存儲器高速緩存中的相同高速緩存行中寫入寫入數(shù)據(jù)/讀出讀取數(shù)據(jù);由存儲器高速緩存控制器在當(dāng)前時(shí)鐘周期內(nèi)將寫入數(shù)據(jù)存入相同高速緩存行中;由存儲器高速緩存控制器在加載存儲器指令執(zhí)行單元中推遲相應(yīng)的加載微指令;和由存儲器高速緩存控制器在隨后的時(shí)鐘周期內(nèi)從計(jì)算機(jī)存儲器高速緩存中讀出來自讀取地址的讀取數(shù)據(jù)。
文檔編號G06F12/08GK101154192SQ20071012714
公開日2008年4月2日 申請日期2007年7月4日 優(yōu)先權(quán)日2006年9月29日
發(fā)明者加恩·N.·法姆, 馬庫斯·L.·考爾尼蓋伊 申請人:國際商業(yè)機(jī)器公司