專利名稱:一種實現(xiàn)讀指令執(zhí)行的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及現(xiàn)代微處理器及其應(yīng)用系統(tǒng)的設(shè)計,尤其涉及超標(biāo)量處理器實現(xiàn)讀指令執(zhí)行的方法及裝置。
背景技術(shù):
隨著集成電路制造工藝的飛速發(fā)展,處理器與存儲器之間的性能差距逐漸拉大, 從而使得訪存延遲,尤其是讀指令訪存延遲,逐漸成為現(xiàn)代超標(biāo)量處理器性能提升的主要瓶頸。在傳統(tǒng)超標(biāo)量處理器中,通過訪存指令之間數(shù)據(jù)前遞O^rwarding)完成的讀指令僅占所有讀指令的15%,通常它們訪存所占用的時間在一個處理器時鐘周期內(nèi);其它讀指令均通過訪問一級(最靠近處理器的高速數(shù)據(jù)緩存級)或者更低一級高速數(shù)據(jù)緩存來得到所需數(shù)據(jù)。這些高速數(shù)據(jù)緩存的訪問時間均會超過一個處理器時鐘周期,而且隨著線延遲的不斷增加,這些高速數(shù)據(jù)緩存的訪問時間將進(jìn)一步增加?,F(xiàn)有的讀指令重執(zhí)行技術(shù)(LRE,Load Re-Execution)是一種典型的針對讀指令隊列(Load Queue)的優(yōu)化技術(shù),它消除了讀指令隊列的相聯(lián)查找邏輯所面臨的麻煩。該技術(shù)完全依靠讀指令在按序提交前的重執(zhí)行來保證單處理器和多處理器的存儲順序要求,因此只需要使用簡單的先進(jìn)先出隊列(FIFO)保存讀指令的相關(guān)信息。讀指令的這兩次執(zhí)行分別稱為預(yù)讀(premature load)和重讀(r印lay load)。當(dāng)兩次執(zhí)行結(jié)果相同時,存儲相關(guān)被正確地保持;否則意味著發(fā)生了存儲順序違例或存儲同一性違例,需要采取恢復(fù)措施。該技術(shù)將復(fù)雜度從流水線中的時序關(guān)鍵部件轉(zhuǎn)移到流水線后端,故解決了復(fù)雜度處于流水線中時序關(guān)鍵部件所面臨的諸多問題。過多的讀指令重執(zhí)行會帶來嚴(yán)重的性能損失。通過基于寫指令序列Bloom過濾器(SSBF,Store Sequence Bloom Filter)的讀指令重執(zhí)行過濾技術(shù),可以有效地降低需要重新執(zhí)行的Load指令數(shù)目。該技術(shù)通過SSBF追蹤所有最近提交(commit)的寫指令序列號(SSN,Store Sequence Number,亦可稱寫指令順序標(biāo)識)來判斷讀指令是否需要重執(zhí)行,亦即當(dāng)執(zhí)行一條讀指令時,通過訪問SSBF獲取最近提交的具有與該讀指令相同訪存地址的SSN,記為SSNnvul,當(dāng)提交該讀指令時,該讀指令將再次訪問SSBF并得到SSNfilter, 并判斷SSNmml是否小于SSNfilter,如果不小于,則說明該讀指令執(zhí)行時得到的數(shù)據(jù)不正確,需要重新執(zhí)行讀指令。讀指令重執(zhí)行的關(guān)鍵在于,在讀指令的兩次執(zhí)行中,重執(zhí)行將保證該指令執(zhí)行的正確性,因此第一次執(zhí)行完全可以進(jìn)行推測式或者預(yù)測式執(zhí)行,甚至不執(zhí)行,從而為優(yōu)化讀指令執(zhí)行階段的性能同時簡化實現(xiàn)結(jié)構(gòu)帶來了可能。由此,為了進(jìn)一步提高讀指令的執(zhí)行性能,需要提供一種通過推測式的大范圍訪存數(shù)據(jù)前遞實現(xiàn)讀指令執(zhí)行的方法及裝置,使得讀指令執(zhí)行性能得到優(yōu)化及結(jié)構(gòu)得到簡化
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種實現(xiàn)讀指令執(zhí)行的方法及裝置,能夠?qū)崿F(xiàn)讀指令執(zhí)行性能的優(yōu)化。為了解決上述技術(shù)問題,本發(fā)明提供了一種實現(xiàn)讀指令執(zhí)行的方法,其特征在于, 包括在寫指令的執(zhí)行階段,采用多路組相聯(lián)的活躍寫指令窗口的組內(nèi)相應(yīng)的路記錄寫指令的信息,并將該組的所有路中最舊的寫指令記錄替換出。進(jìn)一步地,該方法還包括在寫指令進(jìn)入過濾流水級時,采用多路組相聯(lián)的寫指令序列Bloom過濾器中相應(yīng)的組內(nèi)相應(yīng)的路記錄寫指令的信息,并將該組的所有路中最舊的寫指令記錄替換出。進(jìn)一步地,多路組相聯(lián)的活躍寫指令窗口的組內(nèi)相應(yīng)的路記錄的所述寫指令的信息至少包含寫指令順序標(biāo)識、地址標(biāo)簽以及寫數(shù)據(jù);多路組相聯(lián)的寫指令序列Bloom過濾器的組內(nèi)相應(yīng)的路記錄的寫指令的信息至少包含寫指令順序標(biāo)識及地址標(biāo)簽。進(jìn)一步地,在寫指令的執(zhí)行階段之前還包括為每個寫指令分配一個計數(shù)器,作為寫指令唯一的順序標(biāo)識;當(dāng)寫指令進(jìn)入指令重命名流水級時,將相應(yīng)的計數(shù)器當(dāng)前的計數(shù)值賦值給該寫指令的寫指令順序標(biāo)識,并將該計數(shù)器加一單位增量。進(jìn)一步地,采用多路組相聯(lián)的活躍寫指令窗口的組內(nèi)相應(yīng)的路記錄寫指令的信息,并將該組的所有路中最舊的寫指令記錄替換出,具體包括按照寫指令的訪存地址訪問活躍寫指令窗口相應(yīng)的組,并將該寫指令的寫指令順序標(biāo)識、地址標(biāo)簽及寫數(shù)據(jù)寫入該組相應(yīng)路的表項中,同時將活躍寫指令窗口的組內(nèi)所有表項中寫指令順序標(biāo)識最小的記錄表項替換出。進(jìn)一步地,采用多路組相聯(lián)的寫指令序列Bloom過濾器中相應(yīng)的組內(nèi)相應(yīng)的路記錄寫指令的信息,并將該組的所有路中最舊的寫指令記錄替換出,具體包括按照寫指令的訪存地址訪問多路組相聯(lián)的寫指令序列Bloom過濾器相應(yīng)的組,并將該寫指令的寫指令順序標(biāo)識及地址標(biāo)簽寫入該組相應(yīng)路的表項中,同時將多路組相聯(lián)的寫指令序列Bloom過濾器的組內(nèi)所有表項中寫指令順序標(biāo)識最小的記錄表項替換出。進(jìn)一步地,該方法還包括在讀指令的執(zhí)行階段,通過訪問活躍寫指令窗口和/或多路組相聯(lián)的寫指令序列 Bloom過濾器獲得相應(yīng)寫指令前遞的數(shù)據(jù)。進(jìn)一步地,通過訪問所述活躍寫指令窗口和/或多路組相聯(lián)的寫指令序列Bloom 過濾器獲得相應(yīng)寫指令前遞的數(shù)據(jù),具體包括根據(jù)讀指令的訪存地址索引到所述活躍寫指令窗口對應(yīng)的組,并通過該訪存地址與該組中每一表項的地址標(biāo)簽比較,若判斷有多個命中路記錄,則選取命中項中寫指令順序標(biāo)識最大對應(yīng)的路記錄;若判斷沒有命中路記錄,則通過該訪存地址訪問到所述多路組相聯(lián)的寫指令序列Bloom過濾器中對應(yīng)的組,并將該訪存地址與該組中每一路記錄的地址標(biāo)簽比較,如判斷有多個命中路記錄,則選取命中項中寫指令順序標(biāo)識最大對應(yīng)的路記錄; 將選取的路記錄中的寫數(shù)據(jù)作為前遞數(shù)據(jù)返回。進(jìn)一步地,該方法還包括
在讀指令進(jìn)入過濾流水級時,通過活躍寫指令窗口和多路組相聯(lián)的寫指令序列 Bloom過濾器過濾讀指令的重執(zhí)行。進(jìn)一步地,通過活躍寫指令窗口和多路組相聯(lián)的寫指令序列Bloom過濾器過濾讀指令的重執(zhí)行,具體包括在讀指令的執(zhí)行階段,將選取的路記錄中所述寫指令順序標(biāo)識作為前遞寫指令順序標(biāo)識返回;在讀指令進(jìn)入過濾流水級并訪問多路組相聯(lián)的寫指令序列Bloom過濾器時,通過該讀指令的訪問地址索引該寫指令序列Bloom過濾器對應(yīng)的組,并通過該訪存地址與該組中每一路記錄的地址標(biāo)簽比較,若判斷有多個命中路記錄,則選取命中路記錄中最大的寫指令順序標(biāo)識作為所述讀指令的過濾寫指令順序標(biāo)識,若判斷沒有命中路記錄,則返回該寫指令序列Bloom過濾器的組內(nèi)所有路記錄中最大的寫指令順序標(biāo)識作為讀指令的過濾寫指令順序標(biāo)識;比較該讀指令的前遞寫指令順序標(biāo)識是否等于過濾寫指令順序標(biāo)識,如果不相等則重執(zhí)行該讀指令。進(jìn)一步地,該方法還包括將重執(zhí)行讀指令訪問一級高速數(shù)據(jù)緩存得到的數(shù)據(jù)與執(zhí)行讀指令得到的數(shù)據(jù)比較,如果不相等,則重執(zhí)行該讀指令之后的數(shù)據(jù)相關(guān)指令;否則直接提交該讀指令。為了解決上述技術(shù)問題,本發(fā)明提供了一種實現(xiàn)讀指令執(zhí)行的裝置,除了包括指令隊列和寄存器堆外,還包括活躍寫指令窗口,其中指令隊列和寄存器堆,用于通過加法器形成寫指令的訪存地址;活躍寫指令窗口,用于在寫指令的執(zhí)行階段于多路組相聯(lián)的組內(nèi)相應(yīng)的路記錄寫指令的信息,并將該組的所有路記錄中最舊的寫指令記錄替換出。進(jìn)一步地,該裝置還包括多路組相聯(lián)的寫指令序列Bloom過濾器,用于在寫指令進(jìn)入過濾流水級時于多路組相聯(lián)的組內(nèi)相應(yīng)的路記錄寫指令的信息,并將該組的所有路中最舊的寫指令記錄替換
出ο進(jìn)一步地,活躍寫指令窗口的組內(nèi)相應(yīng)的路記錄的所述寫指令的信息至少包含寫指令順序標(biāo)識、地址標(biāo)簽以及寫數(shù)據(jù);多路組相聯(lián)的寫指令序列Bloom過濾器的組內(nèi)相應(yīng)的路記錄的寫指令的信息至少包含寫指令順序標(biāo)識及地址標(biāo)簽。進(jìn)一步地,活躍寫指令窗口和多路組相聯(lián)的寫指令序列Bloom過濾器所記錄的寫指令順序標(biāo)識,采用預(yù)先分配的計數(shù)器,在寫指令進(jìn)入指令重命名流水級時,該計數(shù)器當(dāng)前的計數(shù)值被賦值給該寫指令的寫指令順序標(biāo)識,同時計數(shù)值加一單位增量。進(jìn)一步地,指令隊列和寄存器堆還通過加法器形成讀指令的訪存地址;活躍寫指令窗口還在讀指令的執(zhí)行階段,通過多路組相聯(lián)的組內(nèi)相應(yīng)的路記錄的寫指令的寫指令順序標(biāo)識、地址標(biāo)簽以及寫數(shù)據(jù)的訪問獲得該讀指令相應(yīng)寫指令前遞的數(shù)據(jù);
寫指令序列Bloom過濾器還在讀指令的執(zhí)行階段,通過多路組相聯(lián)的組內(nèi)相應(yīng)的路記錄的寫指令的寫指令順序標(biāo)識及地址標(biāo)簽的訪問獲得該讀指令相應(yīng)寫指令前遞的數(shù)據(jù)。進(jìn)一步地,該裝置還包括先進(jìn)先出隊列,其中在活躍寫指令窗口中,根據(jù)讀指令的訪存地址索引到對應(yīng)的組,并通過該訪存地址與該組中每一路記錄的地址標(biāo)簽比較,若判斷有多個命中路記錄,則選取命中路記錄中寫指令順序標(biāo)識最大對應(yīng)的路記錄,將選取的路記錄中的寫數(shù)據(jù)作為前遞的數(shù)據(jù)通過該先進(jìn)先出隊列返回;若判斷沒有命中項,則在多路組相聯(lián)的寫指令序列Bloom過濾器中,通過讀指令的訪存地址訪問到對應(yīng)的組,并將該訪存地址與該組中每一路記錄的地址標(biāo)簽比較,如判斷有多個命中路記錄,則選取命中路記錄中寫指令順序標(biāo)識最大對應(yīng)的路記錄,將選取的路記錄中的寫數(shù)據(jù)作為前遞的數(shù)據(jù)通過該先進(jìn)先出隊列返回。進(jìn)一步地,該裝置還包括第一比較器,其中活躍寫指令窗口或多路組相聯(lián)的寫指令序列Bloom過濾器在讀指令的執(zhí)行階段, 將選取的路記錄對應(yīng)的寫指令順序標(biāo)識作為前遞寫指令順序標(biāo)識輸出到第一比較器的第一輸入端;多路組相聯(lián)的寫指令序列Bloom過濾器在讀指令進(jìn)入過濾流水級時,通過該讀指令的訪存地址被索引對應(yīng)的組,并通過該訪存地址與該組中每一路記錄的地址標(biāo)簽比較, 若判斷有多個命中路記錄,則選取命中路記錄中最大的寫指令順序標(biāo)識作為過濾寫指令順序標(biāo)識,若判斷沒有命中路記錄,則返回該寫指令序列Bloom過濾器的組所有路記錄中最大的寫指令順序標(biāo)識作為過濾寫指令順序標(biāo)識輸出到第一比較器的第二輸入端;第一比較器,用于將第一輸入端輸入的前遞寫指令順序標(biāo)識和第二輸入端輸入的過濾寫指令順序標(biāo)識比較,如不相等則輸出讀指令重執(zhí)行命令,如相等則輸出執(zhí)行讀指令獲取的數(shù)據(jù)。進(jìn)一步地,該裝置還包括第二比較器,用于將重執(zhí)行讀指令訪問一級高速數(shù)據(jù)緩存得到的數(shù)據(jù)與執(zhí)行讀指令時得到的數(shù)據(jù)比較,如不相等,則輸出重執(zhí)行該讀指令之后的數(shù)據(jù)相關(guān)指令的命令;如相等輸出直接提交該讀指令的命令。本發(fā)明基于活躍寫指令窗口的推測式訪存數(shù)據(jù)前遞機(jī)制,通過采用活躍寫指令窗口進(jìn)行推測式數(shù)據(jù)前遞,并通過采用讀指令重執(zhí)行技術(shù)實現(xiàn)訪存相關(guān)違例檢測及采用SSBF 用于實現(xiàn)對讀指令重執(zhí)行的過濾。由此,本發(fā)明可實現(xiàn)大范圍的推測式訪存數(shù)據(jù)前遞來減少讀指令的執(zhí)行延遲,從而可有效地提高處理器讀指令執(zhí)行的性能。
圖1是本發(fā)明的活躍寫指令窗口實施例的結(jié)構(gòu)示意圖;圖2是本發(fā)明的多路組相聯(lián)的SSBF實施例的結(jié)構(gòu)示意圖;圖3為本發(fā)明的寫指令執(zhí)行裝置實施例的結(jié)構(gòu)示意圖;圖4為本發(fā)明的讀指令執(zhí)行裝置實施例的結(jié)構(gòu)示意圖。
具體實施方式
以下結(jié)合附圖和優(yōu)選實施例對本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)地闡述。應(yīng)該理解,以下例舉的實施例僅用于說明和解釋本發(fā)明,而不構(gòu)成對本發(fā)明技術(shù)方案的限制。本發(fā)明為實現(xiàn)讀指令執(zhí)行提供了一種采用多路組相聯(lián)結(jié)構(gòu)的活躍寫指令窗口,如圖1所示為采用兩路(WayO,ffayl)組相聯(lián)結(jié)構(gòu)的活躍寫指令窗口實施例。其中,每一路表項包含表項有效位(V)、數(shù)據(jù)字節(jié)使能位(BE)、寫指令順序標(biāo)識(SSN)、地址標(biāo)簽(TAG)以及寫數(shù)據(jù)(DATA)。為了明確上述本發(fā)明的活躍寫指令窗口實施例的工作原理,將其與傳統(tǒng)的寫指令隊列(SQ, Store Queue)工作原理進(jìn)行如下比較寫指令訪存比較當(dāng)寫指令訪問傳統(tǒng)的SQ時,將按照程序順序(Program Order)寫入該隊列中,如圖1中θ 1所示;當(dāng)寫指令訪問本發(fā)明的活躍寫指令窗口時,按照該寫指令的訪存地址訪問對應(yīng)的組(即由WayO和Wayl組成的組),并將相應(yīng)表項中SSN最小的表項(即表示最舊的寫指令)替換出活躍指令窗口,如圖1中的θ 2小于θ 3而被替換出。讀指令訪存比較當(dāng)讀指令(Li)訪問傳統(tǒng)的寫指令隊列(SQ)時,需要全相聯(lián)查找該隊列,得到最近的具有與該讀指令相同訪問地址的寫指令,并從該寫指令獲得前遞數(shù)據(jù)返回給該讀指令, 如圖1中α 1所示;當(dāng)讀指令訪問本發(fā)明的活躍寫指令窗口時,根據(jù)該讀指令的訪存地址訪問對應(yīng)的組,并將該訪存地址與組中每一路(Way)表項的地址標(biāo)簽(TAG)比較,判斷是否存在命中項;若存在命中項,如圖1中的β 1和β 2均為命中項,則選擇命中表項中SSN最大對應(yīng)的表項(即表示最新的寫指令),將對應(yīng)的寫數(shù)據(jù)(DATA)作為前遞數(shù)據(jù)返回給該讀指令,如圖 1中β 3所示。本發(fā)明通過提供活躍寫指令窗口,將帶有SSN的寫指令及其要寫入的數(shù)據(jù)記錄下來,并且每次記錄時過濾掉最舊的寫指令表項;當(dāng)執(zhí)行讀指令時,通過訪問該活躍寫指令窗口迅速得到需要讀取的數(shù)據(jù),從而避免訪問延遲較大的一級高速數(shù)據(jù)緩存。本發(fā)明采用多路組相聯(lián)結(jié)構(gòu)的寫指令序列Bloom過濾器(SSBF),在指令的過濾 (FILTER)流水級時,記錄寫指令對應(yīng)的SSN及地址標(biāo)簽(TAG),如圖2所示,且每次記錄時過濾掉最舊的寫指令表項;該記錄用于供讀指令訪問時對讀指令重執(zhí)行進(jìn)行過濾,從而減少需要重執(zhí)行的讀指令數(shù)量,減少不必要的執(zhí)行開銷。本發(fā)明提供的實現(xiàn)讀指令執(zhí)行的方法實施例,包括在寫指令的執(zhí)行階段,采用多路組相聯(lián)的活躍寫指令窗口的組內(nèi)相應(yīng)的路記錄寫指令(Store)的信息,并將該組內(nèi)所有路中最舊的寫指令記錄替換出。在上述方法實施例中,還包括在寫指令進(jìn)入過濾(FILTER)流水級時,采用多路組相聯(lián)的SSBF中相應(yīng)的組內(nèi)相應(yīng)的路記錄寫指令的信息,并將該組的所有路中最舊的寫指令記錄替換出。在上述方法實施例中,多路組相聯(lián)的活躍寫指令窗口的組內(nèi)相應(yīng)的路記錄的寫指令的信息至少包含寫指令順序標(biāo)識(SSN)、地址標(biāo)簽(TAG)以及寫數(shù)據(jù)(DATA);多路組相聯(lián)的SSBF的組內(nèi)相應(yīng)的路記錄的寫指令的信息至少包含寫指令順序標(biāo)識(SSN)及地址標(biāo)簽(TAG)。在上述方法實施例中,在寫指令執(zhí)行之前還包括為每個寫指令(More)分配一個計數(shù)器(SSNren),作為寫指令唯一的順序標(biāo)識 (SSN);當(dāng)寫指令進(jìn)入指令重命名流水級時,將相應(yīng)的SSNren當(dāng)前的計數(shù)值賦值給該寫指令的SSN,并將該SSNren加一單位增量。當(dāng)作為寫指令唯一的SSN的計數(shù)器(SSNren)溢出時,處理器暫停指令的執(zhí)行,并清除包含相應(yīng)的SSN的活躍寫指令窗口和SSBF中相應(yīng)的表項,并將該SSNren置初值(譬如為0),并重新開始執(zhí)行。在上述方法實施例中,采用多路組相聯(lián)的活躍寫指令窗口的組內(nèi)相應(yīng)的路記錄寫指令的信息,并將該組的所有路中最舊的寫指令記錄替換出,具體包括按照該寫指令的訪存地址訪問活躍寫指令窗口相應(yīng)的組,并將該寫指令的SSN、 TAG及DATA寫入該組相應(yīng)路的表項中,同時將活躍寫指令窗口的組中所有表項中SSN最小的記錄表項替換出。在上述方法實施例中,采用多路組相聯(lián)的SSBF的組內(nèi)相應(yīng)的路記錄寫指令的信息,并將該組的所有路中最舊的寫指令記錄替換出,具體包括按照該寫指令的訪存地址訪問多路組相聯(lián)的SSBF相應(yīng)的組,并將該寫指令的SSN 及TAG寫入該組相應(yīng)路的表項中,同時將該SSBF的組中所有表項中SSN最小的記錄表項替換出。 在上述方法實施例中,還包括在讀指令的執(zhí)行階段,通過訪問活躍寫指令窗口和/或多路組相聯(lián)的SSBF獲得相應(yīng)寫指令前遞的數(shù)據(jù)。在上述方法實施例中,在讀指令的執(zhí)行階段,通過訪問活躍寫指令窗口和/或多路組相聯(lián)的SSBF獲得相應(yīng)寫指令前遞的數(shù)據(jù),具體包括根據(jù)讀指令的訪存地址索引到活躍寫指令窗口對應(yīng)的組,并通過該訪存地址與組中每一表項的地址標(biāo)簽比較,若判斷有多個命中項,則選取命中項中SSN最大對應(yīng)的表項; 若判斷沒有命中項,則通過該訪存地址訪問到多路組相聯(lián)的SSBF中的組,并將該訪存地址與組中每一表項的地址標(biāo)簽比較,如判斷有多個命中項,則選取命中項中SSN最大對應(yīng)的表項;將選取的表項中的寫數(shù)據(jù)作為前遞數(shù)據(jù)獲取及返回。在上述方法實施例中,還包括在讀指令進(jìn)入過濾流水級時,通過活躍寫指令窗口和多路組相聯(lián)的SSBF過濾讀指令的重執(zhí)行。在上述方法實施例中,通過活躍寫指令窗口和多路組相聯(lián)的SSBF過濾讀指令的重執(zhí)行,具體包括在讀指令的執(zhí)行階段,將選取的表項對應(yīng)的SSN作為SSNfVd返回;在讀指令進(jìn)入過濾流水級并訪問多路組相聯(lián)的SSBF時,通過該讀指令的訪存地址索引該SSBF對應(yīng)的組,并通過該訪存地址與該組中每一表項的地址標(biāo)簽比較,若判斷有多個命中項,則選取命中項中SSN最大的作為讀指令的SSNfilter,若判斷沒有命中項,則返回該SSBF的組所有表項中SSN最大的作為讀指令的SSNfilter ;判斷該讀指令的SSNfwd是否等于SSNfilter,如果不相等則重執(zhí)行該讀指令。
在上述方法實施例中,還包括將重執(zhí)行讀指令訪問一級高速緩存得到的數(shù)據(jù)與執(zhí)行讀指令得到的數(shù)據(jù)比較,如果不相等,則重執(zhí)行該讀指令之后的數(shù)據(jù)相關(guān)指令;否則直接提交該讀指令。本發(fā)明通過使用基于值的讀指令重執(zhí)行技術(shù)(VBLRE,Value-Based Load Re-Execution)檢測活躍寫指令窗口可能存在的數(shù)據(jù)前遞錯誤,當(dāng)讀指令提交前,需要經(jīng)過額外的流水級用于再次訪問一級高速數(shù)據(jù)緩存,如果得到的數(shù)據(jù)與之前執(zhí)行流水級得到的數(shù)據(jù)不匹配,則說明該讀指令執(zhí)行錯誤。本發(fā)明針對上述方法實施例,相應(yīng)地還提供了實現(xiàn)讀指令執(zhí)行的裝置實施例,其結(jié)構(gòu)請參見圖3所示的寫指令執(zhí)行裝置實施例和圖4所示的讀指令執(zhí)行裝置實施例,除了包括指令隊列(IQ)和寄存器堆(RF)外,還包括活躍寫指令窗口,其中指令隊列和寄存器堆,用于通過加法器形成寫指令的訪存地址;活躍寫指令窗口,用于在寫指令的執(zhí)行階段于多路組相聯(lián)的組內(nèi)相應(yīng)的路記錄寫指令的信息,并將該組的所有路中最舊的寫指令記錄替換出。在上述裝置實施例中,還包括多路組相聯(lián)的SSBF,其中多路組相聯(lián)的SSBF,用于在寫指令進(jìn)入過濾(FILTER)流水級時于多路組相聯(lián)的組內(nèi)相應(yīng)的路記錄寫指令的信息,并將該組的所有路中最舊的寫指令記錄替換出。在上述裝置實施例中,活躍寫指令窗口多路組相聯(lián)的組內(nèi)相應(yīng)的路記錄的寫指令的信息至少包含寫指令順序標(biāo)識(SSN)、地址標(biāo)簽(TAG)以及寫數(shù)據(jù)(DATA);多路組相聯(lián)的SSBF的組內(nèi)相應(yīng)的路記錄的寫指令的信息至少包含寫指令順序標(biāo)識(SSN)及地址標(biāo)簽(TAG)。在上述裝置實施例中,活躍寫指令窗口和多路組相聯(lián)的SSBF所記錄的寫指令的SSN,采用預(yù)先分配的計數(shù)器(SSNren),在寫指令進(jìn)入指令重命名流水級時,該SSNren當(dāng)前的計數(shù)值被賦值給該寫指令的SSN,同時計數(shù)值加一單位增量。當(dāng)計數(shù)器(SSNren)溢出時,活躍寫指令窗口和多路組相聯(lián)的SSBF清除包含相應(yīng)的SSN相應(yīng)路的記錄,并將該SSNren置初值(譬如為0)。在上述裝置實施例中,指令隊列和寄存器堆還通過加法器形成讀指令的訪存地址;活躍寫指令窗口還在讀指令的執(zhí)行階段,通過多路組相聯(lián)的組內(nèi)相應(yīng)的路記錄的寫指令的信息的訪問獲得該讀指令相應(yīng)寫指令前遞的數(shù)據(jù);多路組相聯(lián)的SSBF還在讀指令的執(zhí)行階段,通過多路組相聯(lián)的組內(nèi)相應(yīng)的路記錄的寫指令的信息的訪問獲得該讀指令相應(yīng)寫指令前遞的數(shù)據(jù)。在上述裝置實施例中,還包括先進(jìn)先出隊列(FIFO),其中在活躍寫指令窗口中,根據(jù)讀指令的訪存地址索引到對應(yīng)的組,并通過該訪存地址與組中每一路表項的地址標(biāo)簽比較,若判斷有多個命中項,則選取命中項中SSN最大對應(yīng)的表項,將選取的表項中的寫數(shù)據(jù)作為前遞數(shù)據(jù)通過FIFO返回;若判斷沒有命中項,則在多路組相聯(lián)的SSBF中,通過該訪存地址訪問到對應(yīng)的組,并將該訪存地址與組中每一路表項的地址標(biāo)簽比較,如判斷有多個命中項,則選取命中項中SSN最大對應(yīng)的表項,將選取的表項中的寫數(shù)據(jù)作為前遞數(shù)據(jù)獲取,并通過FIFO返回。
在上述裝置實施例中,還包括比較器1,其中活躍寫指令窗口或多路組相聯(lián)的SSBF在讀指令的執(zhí)行階段,將選取的表項對應(yīng)的SSN作為SSNfwd輸出到比較器1的第一輸入端(inl);多路組相聯(lián)的SSBF在讀指令進(jìn)入過濾流水級時,通過該讀指令的訪存地址被索引該SSBF對應(yīng)的組,并通過該訪存地址與該組中每一表項的地址標(biāo)簽比較,若判斷有多個命中項,則選取命中項中SSN最大的作為讀指令的SSNfilter,若判斷沒有命中項,則返回該SSBF的組所有表項中SSN最大的作為讀指令的SSNfilter輸出到比較器1的第二輸入端(in2);比較器1,用于將第一輸入端輸入的SSNfwd和第二輸入端輸入的SSNfilter進(jìn)行比較,不相等則輸出讀指令重執(zhí)行命令,相等則輸出執(zhí)行讀指令獲取的數(shù)據(jù)。在上述裝置實施例中,還包括比較器2,其中比較器2,用于將重執(zhí)行讀指令訪問一級高速數(shù)據(jù)緩存得到的數(shù)據(jù)與執(zhí)行讀指令時得到的數(shù)據(jù)比較,如果不相等,則輸出重執(zhí)行該讀指令之后的數(shù)據(jù)相關(guān)指令的命令;如相等輸出直接提交該讀指令的命令。本發(fā)明通過采用基于活躍寫指令窗口的推測式訪存數(shù)據(jù)前遞機(jī)制,有效地擴(kuò)大了讀指令的數(shù)據(jù)前遞范圍,從而避免大量讀指令通過訪問一級高速數(shù)據(jù)緩存來得到數(shù)據(jù),減少讀指令的執(zhí)行延遲;通過采用讀指令重執(zhí)行技術(shù)實現(xiàn)訪存相關(guān)違例檢測,并采用SSBF實現(xiàn)對讀指令重執(zhí)行的過濾,從而減少需要重執(zhí)行的讀指令數(shù)量,減少不必要的執(zhí)行開銷;故本發(fā)明有效地提高了讀指令的執(zhí)行效率,從而提高了處理器的整體性能。對于本領(lǐng)域的專業(yè)人員來說,在了解了本發(fā)明內(nèi)容和原理后,能夠在不背離本發(fā)明的原理和范圍的情況下,根據(jù)本發(fā)明的方法進(jìn)行形式和細(xì)節(jié)上的各種修正和改變,但是這些基于本發(fā)明的修正和改變?nèi)栽诒景l(fā)明的權(quán)利要求保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種實現(xiàn)讀指令執(zhí)行的方法,其特征在于,包括在寫指令的執(zhí)行階段,采用多路組相聯(lián)的活躍寫指令窗口的組內(nèi)相應(yīng)的路記錄寫指令的信息,并將該組的所有路中最舊的寫指令記錄替換出。
2.按照權(quán)利要求1所述的方法,其特征在于,還包括在寫指令進(jìn)入過濾流水級時,采用多路組相聯(lián)的寫指令序列Bloom過濾器中相應(yīng)的組內(nèi)相應(yīng)的路記錄寫指令的信息,并將該組的所有路中最舊的寫指令記錄替換出。
3.按照權(quán)利要求2所述的方法,其特征在于,所述多路組相聯(lián)的活躍寫指令窗口的組內(nèi)相應(yīng)的路記錄的所述寫指令的信息至少包含寫指令順序標(biāo)識、地址標(biāo)簽以及寫數(shù)據(jù);所述多路組相聯(lián)的寫指令序列Bloom過濾器的組內(nèi)相應(yīng)的路記錄的寫指令的信息至少包含寫指令順序標(biāo)識及地址標(biāo)簽。
4.按照權(quán)利要求1所述的方法,其特征在于,在所述寫指令的執(zhí)行階段之前還包括為每個寫指令分配一個計數(shù)器,作為寫指令唯一的順序標(biāo)識;當(dāng)寫指令進(jìn)入指令重命名流水級時,將相應(yīng)的計數(shù)器當(dāng)前的計數(shù)值賦值給該寫指令的寫指令順序標(biāo)識,并將該計數(shù)器加一單位增量。
5.按照權(quán)利要求3所述的方法,其特征在于,所述采用多路組相聯(lián)的活躍寫指令窗口的組內(nèi)相應(yīng)的路記錄寫指令的信息,并將該組的所有路中最舊的寫指令記錄替換出,具體包括按照所述寫指令的訪存地址訪問活躍寫指令窗口相應(yīng)的組,并將該寫指令的所述寫指令順序標(biāo)識、所述地址標(biāo)簽及所述寫數(shù)據(jù)寫入該組相應(yīng)路的表項中,同時將所述活躍寫指令窗口的組內(nèi)所有表項中寫指令順序標(biāo)識最小的記錄表項替換出。
6.按照權(quán)利要求3所述的方法,其特征在于,所述采用多路組相聯(lián)的寫指令序列Bloom 過濾器中相應(yīng)的組內(nèi)相應(yīng)的路記錄寫指令的信息,并將該組的所有路中最舊的寫指令記錄替換出,具體包括按照所述寫指令的訪存地址訪問所述多路組相聯(lián)的寫指令序列Bloom過濾器相應(yīng)的組,并將該寫指令的所述寫指令順序標(biāo)識及所述地址標(biāo)簽寫入該組相應(yīng)路的表項中,同時將所述多路組相聯(lián)的寫指令序列Bloom過濾器的組內(nèi)所有表項中寫指令順序標(biāo)識最小的記錄表項替換出。
7.按照權(quán)利要求2至6任一項所述的方法,其特征在于,還包括在讀指令的執(zhí)行階段,通過訪問所述活躍寫指令窗口和/或所述多路組相聯(lián)的寫指令序列Bloom過濾器獲得相應(yīng)寫指令前遞的數(shù)據(jù)。
8.按照權(quán)利要求7所述的方法,其特征在于,所述通過訪問所述活躍寫指令窗口和/或所述多路組相聯(lián)的寫指令序列Bloom過濾器獲得相應(yīng)寫指令前遞的數(shù)據(jù),具體包括根據(jù)所述讀指令的訪存地址索引到所述活躍寫指令窗口對應(yīng)的組,并通過該訪存地址與該組中每一表項的地址標(biāo)簽比較,若判斷有多個命中路記錄,則選取所述命中項中寫指令順序標(biāo)識最大對應(yīng)的路記錄;若判斷沒有命中路記錄,則通過該訪存地址訪問到所述多路組相聯(lián)的寫指令序列Bloom過濾器中對應(yīng)的組,并將該訪存地址與該組中每一路記錄的地址標(biāo)簽比較,如判斷有多個命中路記錄,則選取所述命中項中寫指令順序標(biāo)識最大對應(yīng)的路記錄;將選取的所述路記錄中的寫數(shù)據(jù)作為前遞數(shù)據(jù)返回。
9.按照權(quán)利要求2至6任一項所述的方法,其特征在于,還包括在所述讀指令進(jìn)入過濾流水級時,通過所述活躍寫指令窗口和所述多路組相聯(lián)的寫指令序列Bloom過濾器過濾讀指令的重執(zhí)行。
10.按照權(quán)利要求9所述的方法,其特征在于,所述通過所述活躍寫指令窗口和所述多路組相聯(lián)的寫指令序列Bloom過濾器過濾讀指令的重執(zhí)行,具體包括在所述讀指令的執(zhí)行階段,將選取的所述路記錄中所述寫指令順序標(biāo)識作為前遞寫指令順序標(biāo)識返回;在所述讀指令進(jìn)入過濾流水級并訪問所述多路組相聯(lián)的寫指令序列Bloom過濾器時, 通過該讀指令的訪問地址索引該寫指令序列Bloom過濾器對應(yīng)的組,并通過該訪存地址與該組中每一路記錄的地址標(biāo)簽比較,若判斷有多個命中路記錄,則選取命中路記錄中最大的寫指令順序標(biāo)識作為所述讀指令的過濾寫指令順序標(biāo)識,若判斷沒有命中路記錄,則返回該寫指令序列Bloom過濾器的組內(nèi)所有路記錄中最大的寫指令順序標(biāo)識作為所述讀指令的過濾寫指令順序標(biāo)識;比較該讀指令的所述前遞寫指令順序標(biāo)識是否等于所述過濾寫指令順序標(biāo)識,如果不相等則重執(zhí)行該讀指令。
11.按照權(quán)利要求10所述的方法,其特征在于,還包括將重執(zhí)行讀指令訪問一級高速數(shù)據(jù)緩存得到的數(shù)據(jù)與執(zhí)行讀指令得到的數(shù)據(jù)比較,如果不相等,則重執(zhí)行該讀指令之后的數(shù)據(jù)相關(guān)指令;否則直接提交該讀指令。
12.—種實現(xiàn)讀指令執(zhí)行的裝置,包括指令隊列和寄存器堆,其特征在于,還包括活躍寫指令窗口,其中指令隊列和寄存器堆,用于通過加法器形成寫指令的訪存地址;活躍寫指令窗口,用于在寫指令的執(zhí)行階段于多路組相聯(lián)的組內(nèi)相應(yīng)的路記錄寫指令的信息,并將該組的所有路記錄中最舊的寫指令記錄替換出。
13.按照權(quán)利要求12所述的裝置,其特征在于,還包括多路組相聯(lián)的寫指令序列Bloom過濾器,用于在所述寫指令進(jìn)入過濾流水級時于多路組相聯(lián)的組內(nèi)相應(yīng)的路記錄所述寫指令的信息,并將該組的所有路中最舊的寫指令記錄替換出。
14.按照權(quán)利要求13所述的裝置,其特征在于,所述活躍寫指令窗口的組內(nèi)相應(yīng)的路記錄的所述寫指令的信息至少包含寫指令順序標(biāo)識、地址標(biāo)簽以及寫數(shù)據(jù);所述多路組相聯(lián)的寫指令序列Bloom過濾器的組內(nèi)相應(yīng)的路記錄的所述寫指令的信息至少包含寫指令順序標(biāo)識及地址標(biāo)簽。
15.按照權(quán)利要求13所述的裝置,其特征在于,所述活躍寫指令窗口和所述多路組相聯(lián)的寫指令序列Bloom過濾器所記錄的所述寫指令順序標(biāo)識,采用預(yù)先分配的計數(shù)器,在所述寫指令進(jìn)入指令重命名流水級時,該計數(shù)器當(dāng)前的計數(shù)值被賦值給該寫指令的所述寫指令順序標(biāo)識,同時所述計數(shù)值加一單位增量。
16.按照權(quán)利要求14所述的裝置,其特征在于,所述指令隊列和寄存器堆還通過所述加法器形成讀指令的訪存地址;所述活躍寫指令窗口還在讀指令的執(zhí)行階段,通過所述多路組相聯(lián)的組內(nèi)相應(yīng)的路記錄的所述寫指令的所述寫指令順序標(biāo)識、所述地址標(biāo)簽以及所述寫數(shù)據(jù)的訪問獲得該讀指令相應(yīng)寫指令前遞的數(shù)據(jù);所述寫指令序列Bloom過濾器還在讀指令的執(zhí)行階段,通過所述多路組相聯(lián)的組內(nèi)相應(yīng)的路記錄的所述寫指令的所述寫指令順序標(biāo)識及所述地址標(biāo)簽的訪問獲得該讀指令相應(yīng)寫指令前遞的數(shù)據(jù)。
17.按照權(quán)利要求16所述的裝置,其特征在于,還包括先進(jìn)先出隊列,其中在所述活躍寫指令窗口中,根據(jù)所述讀指令的訪存地址索引到對應(yīng)的組,并通過該訪存地址與該組中每一路記錄的所述地址標(biāo)簽比較,若判斷有多個命中路記錄,則選取命中路記錄中所述寫指令順序標(biāo)識最大對應(yīng)的路記錄,將選取的路記錄中的所述寫數(shù)據(jù)作為所述前遞的數(shù)據(jù)通過該先進(jìn)先出隊列返回;若判斷沒有命中項,則在所述多路組相聯(lián)的寫指令序列Bloom過濾器中,通過所述讀指令的訪存地址訪問到對應(yīng)的組,并將該訪存地址與該組中每一路記錄的所述地址標(biāo)簽比較,如判斷有多個命中路記錄,則選取命中路記錄中所述寫指令順序標(biāo)識最大對應(yīng)的路記錄,將選取的路記錄中的所述寫數(shù)據(jù)作為所述前遞的數(shù)據(jù)通過該先進(jìn)先出隊列返回。
18.按照權(quán)利要求16所述的裝置,其特征在于,還包括第一比較器,其中所述活躍寫指令窗口或所述多路組相聯(lián)的寫指令序列Bloom過濾器在讀指令的執(zhí)行階段,將選取的路記錄對應(yīng)的所述寫指令順序標(biāo)識作為前遞寫指令順序標(biāo)識輸出到第一比較器的第一輸入端;所述多路組相聯(lián)的寫指令序列Bloom過濾器在所述讀指令進(jìn)入過濾流水級時,通過該讀指令的訪存地址被索引對應(yīng)的組,并通過該訪存地址與該組中每一路記錄的地址標(biāo)簽比較,若判斷有多個命中路記錄,則選取命中路記錄中最大的寫指令順序標(biāo)識作為過濾寫指令順序標(biāo)識,若判斷沒有命中路記錄,則返回該寫指令序列Bloom過濾器的組所有路記錄中最大的寫指令順序標(biāo)識作為過濾寫指令順序標(biāo)識輸出到第一比較器的第二輸入端;第一比較器,用于將第一輸入端輸入的所述前遞寫指令順序標(biāo)識和第二輸入端輸入的所述過濾寫指令順序標(biāo)識比較,如不相等則輸出讀指令重執(zhí)行命令,如相等則輸出執(zhí)行讀指令獲取的數(shù)據(jù)。
19.按照權(quán)利要求18所述的裝置,其特征在于,還包括第二比較器,用于將重執(zhí)行讀指令訪問一級高速數(shù)據(jù)緩存得到的數(shù)據(jù)與執(zhí)行讀指令時得到的數(shù)據(jù)比較,如不相等,則輸出重執(zhí)行該讀指令之后的數(shù)據(jù)相關(guān)指令的命令;如相等輸出直接提交該讀指令的命令。
全文摘要
本發(fā)明披露了實現(xiàn)讀指令執(zhí)行的方法及裝置,其中方法包括在寫指令的執(zhí)行階段,采用多路組相聯(lián)的活躍寫指令窗口的組內(nèi)相應(yīng)的路記錄寫指令的信息,并將該組的所有路中最舊的寫指令記錄替換出。在寫指令進(jìn)入過濾流水級時,采用多路組相聯(lián)的寫指令序列Bloom過濾器中相應(yīng)的組內(nèi)相應(yīng)的路記錄寫指令的信息,并將該組的所有路中最舊的寫指令記錄替換出。本發(fā)明可實現(xiàn)大范圍的推測式訪存數(shù)據(jù)前遞來減少讀指令的執(zhí)行延遲,從而可有效地提高處理器讀指令執(zhí)行的性能。
文檔編號G06F9/30GK102364431SQ20111032185
公開日2012年2月29日 申請日期2011年10月20日 優(yōu)先權(quán)日2011年10月20日
發(fā)明者佟冬, 張栚滈, 易江芳, 王克義, 王簫音, 程旭, 陸俊林 申請人:北京北大眾志微系統(tǒng)科技有限責(zé)任公司