專利名稱:一種處理器及其運(yùn)行方法
技術(shù)領(lǐng)域:
本發(fā)明屬于處理器技術(shù)領(lǐng)域,涉及帶有能為數(shù)據(jù)高速緩存(Data Cache)提供通路預(yù)測(cè)(Way-prediction)的循環(huán)檢測(cè)單元和循環(huán)緩沖器的處理器及其運(yùn)行方法。
背景技術(shù):
在當(dāng)前微處理器的中,高速緩存存儲(chǔ)器(cache,簡(jiǎn)稱為“高速緩存”)是其必不可少的部件,其設(shè)置在主存儲(chǔ)器(memory,簡(jiǎn)稱“主存儲(chǔ)器”)和CPU之間,以便減少指令的等待處理時(shí)間??梢灶A(yù)測(cè)到,到2014年,高速緩存占用處理器的芯片面積可以達(dá)到94%。由于位線的充電和放電、靈敏放大和標(biāo)簽比較的功能,高性能的高速緩存消耗非常多的開(kāi)關(guān)功耗量。據(jù)報(bào)道,Intel Pentium Pro處理器中,高速緩存的功耗大概占到33%。并且,最新研發(fā)的Niagara處理器中,數(shù)據(jù)高速緩存子系統(tǒng)消耗芯片總功耗的約15%。當(dāng)前微處理器的架構(gòu)中,一般使用兩個(gè)高速緩存子系統(tǒng)數(shù)據(jù)高速緩存和指令高速緩存。在數(shù)據(jù)高速緩存中,其可以采用組-關(guān)聯(lián)高速緩存(set-associative cache)來(lái)降低緩存存儲(chǔ)器中數(shù)據(jù)缺失率,并且,組-關(guān)聯(lián)高速緩存中普遍地執(zhí)行并行訪問(wèn)方案(parallel access scheme)。在并行訪問(wèn)方案中,數(shù)據(jù)高速緩存的數(shù)據(jù)陣列(data array)和地址標(biāo)記陣列(tag array)同時(shí)被訪問(wèn)。例如,在4通路組-關(guān)聯(lián)高速緩存中,數(shù)據(jù)陣列的4通路同時(shí)被訪問(wèn)以提取相應(yīng)4塊數(shù)據(jù),根據(jù)地址標(biāo)記陣列的輸出結(jié)果,4塊數(shù)據(jù)中至多只有一個(gè)被選擇輸出。這種方案的執(zhí)行可以獲得較高性能。但是,也可以觀察到,由于額外訪問(wèn)了沒(méi)有被輸出的塊數(shù)據(jù)對(duì)應(yīng)通路的組-關(guān)聯(lián)高速緩存(例如3路),需要消耗大量的額外功耗。并行訪問(wèn)方案之外,還有一種順序訪問(wèn)方案(sequential access scheme)。在順序訪問(wèn)方案中,數(shù)據(jù)陣列訪問(wèn)被延期到直至得知地址標(biāo)記陣列的輸出結(jié)果,因此,在該方案中,只需要訪問(wèn)數(shù)據(jù)陣列的I通路并最終將其數(shù)據(jù)輸出。順序訪問(wèn)方案雖然可以節(jié)省功耗,但是,其大大增加了高速緩存延遲,這導(dǎo)致這種方案僅限于在低功耗低性能的設(shè)計(jì)中應(yīng)用。
發(fā)明內(nèi)容
本發(fā)明的目的之一,降低處理器中的高速數(shù)據(jù)緩存的功耗并且基本不增加高速數(shù)據(jù)緩存的延遲。本發(fā)明的還一目的在于,降低處理器中的指令提取單元和/或指令解碼單元的功耗。為實(shí)現(xiàn)以上目的或者其他目的,本發(fā)明提供以下技術(shù)方案。按照本公開(kāi)的一方面,提供一種處理器,包括指令高速緩存、指令提取單元、指令解碼單元、重新數(shù)列緩沖器、保留站、執(zhí)行單元和數(shù)據(jù)讀取存儲(chǔ)單元;其特征在于,所述數(shù)據(jù)讀取存儲(chǔ)單元中的數(shù)據(jù)高速緩存為n通路的組-關(guān)聯(lián)數(shù)據(jù)高速緩存;該處理器還包括
循環(huán)檢測(cè)單元,和 循環(huán)緩沖器;其中,所述循環(huán)檢測(cè)單元用于從所述指令解碼單元的輸出的解碼指令中檢測(cè)出循環(huán)體,并且,至少將該循環(huán)體對(duì)應(yīng)的解碼指令和所述數(shù)據(jù)高速緩存的關(guān)聯(lián)通路信息存儲(chǔ)至所述循環(huán)緩沖器;
在該循環(huán)體的迭代運(yùn)行過(guò)程中,所述循環(huán)檢測(cè)單元中止所述指令提取單元和/或指令解碼單元的運(yùn)行,所述循環(huán)緩沖器基于其存儲(chǔ)的所述關(guān)聯(lián)通路信息為所述數(shù)據(jù)高速緩存提供通路預(yù)測(cè);
n為大于或等于2的整數(shù)。按照本發(fā)明一實(shí)施例的處理器,其中,在該循環(huán)體的迭代運(yùn)行過(guò)程中,所述循環(huán)緩沖器將其存儲(chǔ)的所述解碼指令輸出至所述重新數(shù)列緩沖器,所述解碼指令為微操作。按照本發(fā)明一實(shí)施例的處理器,其中,所述數(shù)據(jù)高速緩存包括地址標(biāo)簽陣列和數(shù)據(jù)陣列;
在所述循環(huán)檢測(cè)單元未檢測(cè)出所述循環(huán)體時(shí),所述地址標(biāo)簽陣列用于控制數(shù)據(jù)陣列的n個(gè)數(shù)據(jù)通路的訪問(wèn)的選擇輸出;
在該循環(huán)體的迭代運(yùn)行過(guò)程中,所述循環(huán)檢測(cè)單元中止所述地址標(biāo)簽陣列的運(yùn)行。具體地,所述數(shù)據(jù)讀取存儲(chǔ)單元中設(shè)置有多路選擇器。優(yōu)選地,所述處理器為服務(wù)器中的處理器。按照本公開(kāi)的又一方面,提供一種以上所述處理器的運(yùn)行方法,其包括步驟 循環(huán)檢測(cè)單元從所述指令解碼單元的輸出的解碼指令中檢測(cè)是否為循環(huán)體;
如果檢測(cè)為循環(huán)體并且該循環(huán)體為新循環(huán)體,至少將該循環(huán)體對(duì)應(yīng)的解碼指令和所述數(shù)據(jù)高速緩存的關(guān)聯(lián)通路信息存儲(chǔ)至所述循環(huán)緩沖器;
如果檢測(cè)為循環(huán)體并且該循環(huán)體為正迭代運(yùn)行的循環(huán)體,所述循環(huán)檢測(cè)單元中止所述指令提取單元和/或指令解碼單元的運(yùn)行,所述循環(huán)緩沖器基于其存儲(chǔ)的所述關(guān)聯(lián)通路信息為所述數(shù)據(jù)高速緩存提供通路預(yù)測(cè)。按照本發(fā)明一實(shí)施例的運(yùn)行方法,其中,所述循環(huán)檢測(cè)單元中止所述指令提取單元和/或指令解碼單元的運(yùn)行時(shí),所述循環(huán)緩沖器將其存儲(chǔ)的所述解碼指令輸出至所述重新數(shù)列緩沖器。按照本發(fā)明一實(shí)施例的運(yùn)行方法,其中,所述循環(huán)緩沖器基于其存儲(chǔ)的所述關(guān)聯(lián)通路信息為所述數(shù)據(jù)高速緩存提供通路預(yù)測(cè)時(shí),所述循環(huán)檢測(cè)單元中止所述地址標(biāo)簽陣列的運(yùn)行。按照本發(fā)明一實(shí)施例的運(yùn)行方法,其中,如果檢測(cè)不是為循環(huán)體,基于所述地址標(biāo)簽陣列控制數(shù)據(jù)陣列的n個(gè)數(shù)據(jù)通路的訪問(wèn)的選擇輸出。按照本發(fā)明一實(shí)施例的運(yùn)行方法,其中,所述檢測(cè)步驟中,循環(huán)堆棧被用來(lái)檢測(cè)當(dāng)前階段執(zhí)行的所有循環(huán)體,在該循環(huán)堆棧中,循環(huán)體被標(biāo)記為[T,B],其中,T為目標(biāo)指令的程序計(jì)數(shù)指令指針,B為跳轉(zhuǎn)目標(biāo)程序指令指針;
所述檢測(cè)步驟包括以下步驟 檢測(cè)所述循環(huán)堆棧結(jié)構(gòu)是否為“空”;
如果判斷為“是”,其表示當(dāng)前執(zhí)行的指令屬于該循環(huán)堆棧中的正迭代運(yùn)行的循環(huán)體; 如果判斷為“否”,其進(jìn)一步判斷該指令是否為改變程序指令指針的分支或跳轉(zhuǎn)指令; 如果是分支或跳轉(zhuǎn)指令,通過(guò)將目標(biāo)地址T記錄并將其與當(dāng)前循環(huán)堆棧的條目作比較,判斷目標(biāo)地址T是否存在于當(dāng)前循環(huán)堆棧中,以判斷是否為新循環(huán)體。本發(fā)明的技術(shù)效果是,通過(guò)循環(huán)檢測(cè)單元檢測(cè)出循環(huán)體,并存儲(chǔ)該循環(huán)體的相關(guān)信息,在該循環(huán)體的迭代運(yùn)行過(guò)程中,循環(huán)檢測(cè)單元可以中止指令提取單元和/或指令解碼單元的運(yùn)行,并且為數(shù)據(jù)高速緩存提供通路預(yù)測(cè),因此,可以降低處理器中的高速數(shù)據(jù)緩存的功耗并且基本不增加高速數(shù)據(jù)緩存的延遲,指令提取單元和/或指令解碼單元運(yùn)行時(shí)間減少、功耗降低,處理器整體功耗小。
從結(jié)合附圖的以下詳細(xì)說(shuō)明中,將會(huì)使本發(fā)明的上述和其他目的及優(yōu)點(diǎn)更加完全清楚,其中,相同或相似的要素采用相同的標(biāo)號(hào)表示。圖I是現(xiàn)有的處理器的微架構(gòu)示意圖。圖2是按照本發(fā)明一實(shí)施例的處理器的微架構(gòu)示意圖。圖3是循環(huán)檢測(cè)單元檢測(cè)循環(huán)體的流程示意圖。
具體實(shí)施例方式下面介紹的是本發(fā)明的多個(gè)可能實(shí)施例中的一些,旨在提供對(duì)本發(fā)明的基本了解,并不旨在確認(rèn)本發(fā)明的關(guān)鍵或決定性的要素或限定所要保護(hù)的范圍。容易理解,根據(jù)本發(fā)明的技術(shù)方案,在不變更本發(fā)明的實(shí)質(zhì)精神下,本領(lǐng)域的一般技術(shù)人員可以提出可相互替換的其他實(shí)現(xiàn)方式。因此,以下具體實(shí)施方式
以及附圖僅是對(duì)本發(fā)明的技術(shù)方案的示例性說(shuō)明,而不應(yīng)當(dāng)視為本發(fā)明的全部或者視為對(duì)本發(fā)明技術(shù)方案的限定或限制。下面的描述中,為描述的清楚和簡(jiǎn)明,并沒(méi)有對(duì)圖中所示的所有多個(gè)部件進(jìn)行描述。附圖中示出的多個(gè)部件提供了本領(lǐng)域普通技術(shù)人員完全能夠?qū)崿F(xiàn)本發(fā)明的公開(kāi)內(nèi)容。圖I所示為現(xiàn)有的處理器的微架構(gòu)示意圖。如圖I所示,處理器100中,指令提取(Instruction Fetch)單元110首先從高速緩存中的指令高速緩存190提取目標(biāo)指令代碼,進(jìn)一步,通過(guò)指令提取單元110和指令解碼單元120,將該指令代碼解碼成微操作(micro-operation)(例如微指令)。該微操作進(jìn)一步被分派至隊(duì)列重排緩沖器(ReorderBuffer) 130,在隊(duì)列重排緩沖器130中對(duì)微操作進(jìn)行重新排序后,進(jìn)一步被分派至保留站(Reservation Station) 140,微操作在保留站中等待執(zhí)行處理。執(zhí)行單元150根據(jù)微操作的類型,在保留站的微操作被執(zhí)行以生成結(jié)果。數(shù)據(jù)讀取存儲(chǔ)(Load Store and DataCache, LSDC)單元160提供訪問(wèn)數(shù)據(jù)高速緩存層級(jí)的機(jī)制,處理數(shù)據(jù)高速緩存的訪問(wèn)操作(Data Cache Access Operation, DCA0)。其中,LSDC160包括加載存儲(chǔ)單兀和數(shù)據(jù)高速緩存,由加載存儲(chǔ)單元訪問(wèn)數(shù)據(jù)高速緩存,并且,加載存儲(chǔ)單元為駐留在存儲(chǔ)器訪問(wèn)地址處的數(shù)據(jù)搜索數(shù)據(jù)高速緩存。在圖I所示實(shí)施例中,LSDC單元160中的數(shù)據(jù)高速緩存為組-關(guān)聯(lián)結(jié)構(gòu)的數(shù)據(jù)高速緩存,該數(shù)據(jù)緩存示例地為2通路組-關(guān)聯(lián)高速緩存,其被配置為地址標(biāo)記陣列(Tag Array)168和數(shù)據(jù)陣列兩部分,其中,地址標(biāo)記陣列168用于存儲(chǔ)地址標(biāo)記,該地址標(biāo)記用于與存儲(chǔ)在數(shù)據(jù)陣列中的數(shù)據(jù)字節(jié)對(duì)應(yīng)。通常每個(gè)標(biāo)記條目與數(shù)據(jù)陣列條目相關(guān)聯(lián),其中每個(gè)標(biāo)記條目存儲(chǔ)涉及每個(gè)數(shù)據(jù)陣列條目的索引信息。數(shù)據(jù)陣列中設(shè)置為第一數(shù)據(jù)通路161和第二數(shù)據(jù)通路162,具體地,數(shù)據(jù)陣列或地址標(biāo)記陣列168中的列可以定義為組-關(guān)聯(lián)數(shù)據(jù)高速緩存的通路(例如,2通路),圖中示出了通路中的數(shù)據(jù)陣列部分的數(shù)據(jù)通路部分(161和162)。
在該實(shí)施例中,處理器100的數(shù)據(jù)高速緩存的訪問(wèn)采用并行訪問(wèn)方案,地址相關(guān)信號(hào)被同時(shí)送至地址標(biāo)記陣列168、第一數(shù)據(jù)通路161和第二數(shù)據(jù)通路162 ;進(jìn)一步,第一數(shù)據(jù)通路161和第二數(shù)據(jù)通路162對(duì)應(yīng)的兩塊數(shù)據(jù)分別被訪問(wèn),第一數(shù)據(jù)通路161和第二數(shù)據(jù)通路162對(duì)應(yīng)的2塊數(shù)據(jù)可以通過(guò)數(shù)據(jù)高速緩存線輸出至LSDC單元160的多路選擇器169 ;同時(shí),輸入地址標(biāo)記陣列168的地址與存儲(chǔ)在地址標(biāo)記陣列168中的地址相比較,并基于比較結(jié)果控制多路選擇器169 ;從而選擇正確的一塊數(shù)據(jù)輸出(沒(méi)有選擇到正確數(shù)據(jù)時(shí),報(bào)告缺失)。從背景技術(shù)的描述中可知,這種結(jié)構(gòu)的處理器在采取并行訪問(wèn)方案操作時(shí),數(shù)據(jù)陣列的部分訪問(wèn)操作是冗余的,能量效率低,功耗大。另外,在指令高速緩存190中,指令字節(jié)被提取并且然后被解碼成簡(jiǎn)單的微操作(micro-operation),從而可以在執(zhí)行單元中利用簡(jiǎn)單的流水線(pipeline)執(zhí)行。由于遺留問(wèn)題,普通指令組(例如,x86)的指令并沒(méi)有直接解碼。因此,大量的能量消耗在處理器100的指令解碼單元120中。一些只讀存儲(chǔ)器(ROM)被運(yùn)行以存儲(chǔ)難以解碼的指令,以便減少在指令解碼器件的功耗。因此,圖I所示實(shí)施例的處理器在動(dòng)態(tài)運(yùn)行過(guò)程中,指令解碼單元120的功耗也是非常大的。圖2所示為按照本發(fā)明一實(shí)施例的處理器的微架構(gòu)示意圖。在該實(shí)施例中處理器200的數(shù)據(jù)高速緩存的訪問(wèn)仍然采用并行訪問(wèn)方案。如圖2所示,處理器200中設(shè)置有指令高速緩存290、指令提取單元210、指令解碼單元220、隊(duì)列重排緩沖器(Reorder Buffer)230、保留站(Reservation Station)240、執(zhí)行單兀(Execution Unit)250、和數(shù)據(jù)讀取存儲(chǔ)單元(LSDC單元)260。其中,指令提取單元210用于從指令高速緩存290中提取指令,然后指令解碼單元220將指令解碼并輸出解碼指令,在該實(shí)施例中,其被解碼成微操作以供流水線執(zhí)行。指令解碼單元220輸出該微操作至隊(duì)列重排緩沖器230,隊(duì)列重排緩沖器230中對(duì)微操作進(jìn)行重新排序后,進(jìn)一步被分派至保留站240,微操作在保留站中等待執(zhí)行處理。執(zhí)行單元250根據(jù)微操作的類型,至保留站的微操作被執(zhí)行以生成結(jié)果。數(shù)據(jù)讀取存儲(chǔ)單元(LSDC)單元260在執(zhí)行單元250運(yùn)行時(shí)處理數(shù)據(jù)高速緩存的訪問(wèn)操作。在該實(shí)施例中,數(shù)據(jù)讀取存儲(chǔ)單元(LSDC單元)260包括加載存儲(chǔ)單元和高速數(shù)據(jù)緩存,由加載存儲(chǔ)單元訪問(wèn)數(shù)據(jù)高速緩存,并且,加載存儲(chǔ)單元為駐留在存儲(chǔ)器訪問(wèn)地址處的數(shù)據(jù)搜索數(shù)據(jù)高速緩存。該高速數(shù)據(jù)緩存為n通路的組-關(guān)聯(lián)數(shù)據(jù)高速緩存,其訪問(wèn)采用并行訪問(wèn)方案。如圖2所示,高速數(shù)據(jù)緩存中包括地址標(biāo)記陣列268和數(shù)據(jù)陣列兩部分,其中形成的通路的數(shù)量為2個(gè),但是,這不是限制性的,例如,還可以為4通路結(jié)構(gòu)。數(shù)據(jù)陣列在該實(shí)例中被設(shè)置為第一數(shù)據(jù)通路261和第二數(shù)據(jù)通路262,具體地,數(shù)據(jù)陣列或地址標(biāo)記陣列268中的列可以定義為組-關(guān)聯(lián)數(shù)據(jù)高速緩存的通路,該通路對(duì)應(yīng)的數(shù)據(jù)陣列的存儲(chǔ)單元即為數(shù)據(jù)通路。在正常工作時(shí)(循環(huán)檢測(cè)單元270未檢測(cè)到循環(huán)體指令時(shí)),地址標(biāo)記陣列268可以用于存儲(chǔ)地址標(biāo)記,該地址標(biāo)記用于與存儲(chǔ)在數(shù)據(jù)陣列中的數(shù)據(jù)字節(jié)對(duì)應(yīng);執(zhí)行單元250同時(shí)輸出地址至地址標(biāo)記陣列268和數(shù)據(jù)陣列,二者同時(shí)被訪問(wèn);一方面,2通路的第一數(shù)據(jù)陣列261和第二數(shù)據(jù)陣列262對(duì)應(yīng)的2塊數(shù)據(jù)均被訪問(wèn);另一方面,地址標(biāo)記陣列268根據(jù)輸入的地址,將其與存儲(chǔ)在地址標(biāo)記陣列168中的地址相比較,根據(jù)地址標(biāo)記陣列268的輸出結(jié)果(比較結(jié)果),輸出至多路選擇器269,從而選擇輸出某一數(shù)據(jù)通路的數(shù)據(jù) 訪問(wèn)。繼續(xù)如圖2所示,該處理器200還包括循環(huán)檢測(cè)單元270和循環(huán)緩沖器280,在圖示實(shí)施例中,循環(huán)檢測(cè)單元270分別與指令提取單元210、指令解碼單元220、標(biāo)簽陣列268、循環(huán)緩沖器280耦接,循環(huán)緩沖器280也分別與隊(duì)列重排緩沖器230、多路選擇器269耦接。通常地,在指令高速緩存290的指令中,包括許多循環(huán)指令,因此,處理器200很大一部分時(shí)間在執(zhí)行循環(huán)(loop)操作,特別是在服務(wù)器的處理器中,執(zhí)行循環(huán)操作的比例非常大。循環(huán)檢測(cè)單元270用于檢測(cè)出循環(huán)體,指令解碼單元220輸出的解碼指令(微操作)被同時(shí)輸入至循環(huán)檢測(cè)單元270,進(jìn)而對(duì)其進(jìn)行檢測(cè)。圖3所示為循環(huán)檢測(cè)單元檢測(cè)循環(huán)體的流程示意圖。在該實(shí)施例中,循環(huán)體可以通過(guò)以下方式定義循環(huán)首先通過(guò)分支或跳轉(zhuǎn)(Branch Or Jump,簡(jiǎn)稱B0J)指令發(fā)起(記為地址B),然后改變當(dāng)前程序指令指針(Program Counter, PC)至某一目標(biāo)指令(記為地址T),然后在地址[T ,B]的范圍內(nèi)的指令組成循環(huán)體。在地址[T ,B]的范圍內(nèi)的指令在該循環(huán)體的迭代運(yùn)行過(guò)程中均被執(zhí)行。由于在一循環(huán)體中可能還嵌套其他小循環(huán)體,在該實(shí)施例中,當(dāng)前循環(huán)堆棧(Current Loop Stack,簡(jiǎn)稱CLS)被用來(lái)檢測(cè)當(dāng)前階段執(zhí)行的所有循環(huán)體。在CLS中,循環(huán)體被標(biāo)記為[T,B],其中,T為目標(biāo)指令的程序計(jì)數(shù)指令指針,B為BOJ指令的跳轉(zhuǎn)目標(biāo)程序指令指針。在該實(shí)施例中,循環(huán)體的檢測(cè)過(guò)程如下
首先,步驟S311,檢測(cè)CLS結(jié)構(gòu)是否為“空”,如果判斷為“否”,進(jìn)入步驟S312,其表示當(dāng)前執(zhí)行的指令屬于CLS中的迭代運(yùn)行的循環(huán)體,從而運(yùn)用循環(huán)體的迭代運(yùn)行過(guò)程的工作模式(提供通路預(yù)測(cè)和指令預(yù)測(cè),其在以下說(shuō)明);
如果判斷為“是”,進(jìn)入步驟S313,判斷該指令是否為改變程序指令指針的BOJ指令。如果判斷為“否”,則結(jié)束循環(huán)體檢測(cè)過(guò)程;如果判斷為“是”,進(jìn)入步驟S315,通過(guò)將目標(biāo)地址T記錄并將其與CLS的存儲(chǔ)條目(entry)作比較,判斷目標(biāo)地址T是否存在于CLS中。該比較判斷步驟檢查該指令是否為一新循環(huán)體(新循環(huán)體是指循環(huán)指令的第一次執(zhí)行,其是相對(duì)迭代運(yùn)行的循環(huán)體來(lái)定義的)的發(fā)起,或者是否屬于循環(huán)體的迭代;
如果進(jìn)一步判斷為“否” (T未存在于CLS中),進(jìn)入步驟S320,判斷該分支是否被轉(zhuǎn)移,進(jìn)一步,該分支被轉(zhuǎn)移走的情況下進(jìn)入步驟S321,以起始地址T和結(jié)束地址PC進(jìn)棧當(dāng)前循環(huán)體至CLS,這表明其為一個(gè)新發(fā)起的循環(huán)體(新循環(huán)體);
如果判斷為“是”(T存在于CLS中),進(jìn)入步驟S316,判斷該分支是否被轉(zhuǎn)移走;如果已經(jīng)轉(zhuǎn)移走,進(jìn)入步驟S317,終止嵌套的小循環(huán)體;如果未轉(zhuǎn)移走,進(jìn)入步驟S318,終止該循環(huán)體以及嵌套的小循環(huán)體。步驟S317之后,進(jìn)一步判斷當(dāng)前程序的指令指針(PC)是否大于CLS的頂部條目的末端地址(步驟S319);如果判斷為“是”,進(jìn)入步驟S323,上托CLS的頂部條目并以起始地址T和結(jié)束地址PC進(jìn)棧當(dāng)前循環(huán)體至CLS ;如果判斷為“否”,進(jìn)入步驟S322,增加CLS的頂部條目的迭代數(shù)。因此,以上循環(huán)檢測(cè)單元270可以在執(zhí)行代碼期間動(dòng)態(tài)地檢測(cè)循環(huán)體。繼續(xù)參閱圖2,在循環(huán)檢測(cè)單元270檢測(cè)出新循環(huán)體以后,至少將該循環(huán)體對(duì)應(yīng)的解碼指令(微操作)和數(shù)據(jù)高速緩存的關(guān)聯(lián)通路信息存儲(chǔ)至循環(huán)緩沖器280 ;在該循環(huán)體迭代運(yùn)行之前,循環(huán)體相關(guān)指令在執(zhí)行時(shí),其采用以上正常工作時(shí)的方法來(lái)控制數(shù)據(jù)通路的訪問(wèn)的選擇輸出,地址標(biāo)簽陣列268的輸出信息即反應(yīng)了關(guān)聯(lián)通路信息,其被存儲(chǔ)在循環(huán)緩沖器280中,以便該循環(huán)體在其后的迭代運(yùn)行過(guò)程中,直接基于該關(guān)聯(lián)通路信息提供通路預(yù)測(cè)。如圖2所示,在循環(huán)體的迭代運(yùn)行過(guò)程中,循環(huán)緩沖器280輸出指令至多路選擇器269,從而提供通路預(yù)測(cè),直接訪問(wèn)相應(yīng)通路的數(shù)據(jù)陣列(262或261)。這樣,避免了數(shù)據(jù)陣列的部分冗余訪問(wèn)操作,循環(huán)檢測(cè)單元270也可以輸出信號(hào)至標(biāo)簽陣列以中止其運(yùn)行,并且不會(huì)產(chǎn)生順序訪問(wèn)方案中的延遲問(wèn)題,降低了高速數(shù)據(jù)緩存的功耗。 進(jìn)一步,根據(jù)循環(huán)體的指令特征,在循環(huán)體的迭代運(yùn)行過(guò)程中,指令提取單元210和指令解碼單元220的運(yùn)行是基本相同的,指令解碼單元220輸出的微操作也相同,因此,可以通過(guò)循環(huán)檢測(cè)單元270發(fā)生指令至指令提取單元210和/或指令解碼單元220,以中止指令提取單元210和/或指令解碼單元220的運(yùn)行。優(yōu)選地,二者均同時(shí)中止運(yùn)行。同時(shí),重新數(shù)列緩沖器230所需要的微操作通過(guò)循環(huán)緩沖器280將其存儲(chǔ)的該循環(huán)體對(duì)應(yīng)的微操作發(fā)送,這樣也為來(lái)自指令高速緩存290的微操作提供了預(yù)測(cè)。指令提取單元210和/或指令解碼單元220的中止運(yùn)行也大大降低了處理器200的功耗。基于循環(huán)體提供通路預(yù)測(cè)功能和微操作預(yù)測(cè),可以減少數(shù)據(jù)高速緩存、指令提取單元、指令解碼單元的功耗,從而降低處理器的功耗,需要理解的是,其具體減少功耗的多少與程序中的循環(huán)指令的比例相關(guān)。圖2所示實(shí)施例的處理器尤其適合于指令中循環(huán)指令比例較大的情形下運(yùn)行,例如,服務(wù)器運(yùn)行的程序指令中,屬于循環(huán)體的微操作的比例較大,因此,其優(yōu)選地在服務(wù)器中運(yùn)行。但是,其具體應(yīng)用范圍并不限于該實(shí)例。以上例子主要說(shuō)明了本發(fā)明的處理器及其運(yùn)行方法過(guò)程。盡管只對(duì)其中一些本發(fā)明的實(shí)施方式進(jìn)行了描述,但是本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)了解,本發(fā)明可以在不偏離其主旨與范圍內(nèi)以許多其他的形式實(shí)施。因此,所展示的例子與實(shí)施方式被視為示意性的而非限制性的,在不脫離如所附各權(quán)利要求所定義的本發(fā)明精神及范圍的情況下,本發(fā)明可能涵蓋各種的修改與替換。
權(quán)利要求
1.一種處理器(200),包括指令高速緩存(290)、指令提取單元(210)、指令解碼單元(220)、重新數(shù)列緩沖器(230)、保留站(240)、執(zhí)行單元(250)和數(shù)據(jù)讀取存儲(chǔ)單元(260);其特征在于,所述數(shù)據(jù)讀取存儲(chǔ)單元(260)中的數(shù)據(jù)高速緩存為η通路的組-關(guān)聯(lián)數(shù)據(jù)高速緩存;其特征在于,還包括 循環(huán)檢測(cè)單元(270),和 循環(huán)緩沖器(280); 其中,所述循環(huán)檢測(cè)單元(270)用于從所述指令解碼單元(220)的輸出的解碼指令中檢測(cè)出循環(huán)體,并且,至少將該循環(huán)體對(duì)應(yīng)的解碼指令和所述數(shù)據(jù)高速 緩存的關(guān)聯(lián)通路信息存儲(chǔ)至所述循環(huán)緩沖器(280); 在該循環(huán)體的迭代運(yùn)行過(guò)程中,所述循環(huán)檢測(cè)單元(270)中止所述指令提取單元(210 )和/或指令解碼單元(220 )的運(yùn)行,所述循環(huán)緩沖器(280 )基于其存儲(chǔ)的所述關(guān)聯(lián)通路信息為所述數(shù)據(jù)高速緩存提供通路預(yù)測(cè);η為大于或等于2的整數(shù)。
2.如權(quán)利要求I所述的處理器,其特征在于,在該循環(huán)體的迭代運(yùn)行過(guò)程中,所述循環(huán)緩沖器(280)將其存儲(chǔ)的所述解碼指令輸出至所述重新數(shù)列緩沖器(230),所述解碼指令為微操作。
3.如權(quán)利要求I所述的處理器,其特征在于,所述數(shù)據(jù)高速緩存包括地址標(biāo)簽陣列(268)和數(shù)據(jù)陣列; 在所述循環(huán)檢測(cè)單元(270)未檢測(cè)出所述循環(huán)體時(shí),所述地址標(biāo)簽陣列(268)用于控制數(shù)據(jù)陣列的η個(gè)數(shù)據(jù)通路的訪問(wèn)的選擇輸出; 在該循環(huán)體的迭代運(yùn)行過(guò)程中,所述循環(huán)檢測(cè)單元中止所述地址標(biāo)簽陣列(268)的運(yùn)行。
4.如權(quán)利要求3所述的處理器,其特征在于,所述數(shù)據(jù)讀取存儲(chǔ)單元(260)中設(shè)置有多路選擇器(269)。
5.如權(quán)利要求I所述的處理器,其特征在于,所述處理器為服務(wù)器中的處理器。
6.一種如權(quán)利要求I所述處理器的運(yùn)行方法,其特征在于,包括步驟 循環(huán)檢測(cè)單元(270)從所述指令解碼單元(220)的輸出的解碼指令中檢測(cè)是否為循環(huán)體; 如果檢測(cè)為循環(huán)體并且該循環(huán)體為新循環(huán)體,至少將該循環(huán)體對(duì)應(yīng)的解碼指令和所述數(shù)據(jù)高速緩存的關(guān)聯(lián)通路信息存儲(chǔ)至所述循環(huán)緩沖器(280); 如果檢測(cè)為循環(huán)體并且該循環(huán)體為正迭代運(yùn)行的循環(huán)體,所述循環(huán)檢測(cè)單元(270)中止所述指令提取單元(210 )和/或指令解碼單元(220 )的運(yùn)行,所述循環(huán)緩沖器(280 )基于其存儲(chǔ)的所述關(guān)聯(lián)通路信息為所述數(shù)據(jù)高速緩存提供通路預(yù)測(cè)。
7.如權(quán)利要求6所述的運(yùn)行方法,其特征在于,所述循環(huán)檢測(cè)單元(270)中止所述指令提取單元(210)和/或指令解碼單元(220)的運(yùn)行時(shí),所述循環(huán)緩沖器(280)將其存儲(chǔ)的所述解碼指令輸出至所述重新數(shù)列緩沖器(230 )。
8.如權(quán)利要求6或7所述的運(yùn)行方法,其特征在于,所述循環(huán)緩沖器(280)基于其存儲(chǔ)的所述關(guān)聯(lián)通路信息為所述數(shù)據(jù)高速緩存提供通路預(yù)測(cè)時(shí),所述循環(huán)檢測(cè)單元中止所述地址標(biāo)簽陣列(268)的運(yùn)行。
9.如權(quán)利要求6所述的運(yùn)行方法,其特征在于,如果檢測(cè)不是為循環(huán)體,基于所述地址標(biāo)簽陣列(268)控制數(shù)據(jù)陣列的η個(gè)數(shù)據(jù)通路的訪問(wèn)的選擇輸出。
10.如權(quán)利要求6所述的運(yùn)行方法,其特征在于,所述檢測(cè)步驟中,循環(huán)堆棧被用來(lái)檢測(cè)當(dāng)前階段執(zhí)行的所有循環(huán)體,在該循環(huán)堆棧中,循環(huán)體被標(biāo)記為[Τ,B],其中,T為目標(biāo)指令的程序計(jì)數(shù)指令指針,B為跳轉(zhuǎn)目標(biāo)程序指令指針; 所述檢測(cè)步驟包括以下步驟 檢測(cè)所述循環(huán)堆棧結(jié)構(gòu)是否為“空”; 如果判斷為“是”,其表示當(dāng)前執(zhí)行的指令屬于該循環(huán)堆棧中的正迭代運(yùn)行的循環(huán)體;如果判斷為“否”,其進(jìn)ー步判斷該指令是否為改變程序指令指針的分支或跳轉(zhuǎn)指令;如果是分支或跳轉(zhuǎn)指令,通過(guò)將目標(biāo)地址T記錄并將其與當(dāng)前循環(huán)堆棧的條目作比較,判斷目標(biāo)地址T是否存在于當(dāng)前循環(huán)堆棧中,以判斷是否為新循環(huán)體。
全文摘要
本發(fā)明提供一種處理器及其運(yùn)行方法,該處理器包括有循環(huán)檢測(cè)單元和循環(huán)緩沖器,循環(huán)檢測(cè)單元用于從所述指令解碼單元的輸出的解碼指令中檢測(cè)出循環(huán)體,并且,至少將該循環(huán)體對(duì)應(yīng)的解碼指令和數(shù)據(jù)高速緩存的關(guān)聯(lián)通路信息存儲(chǔ)至循環(huán)緩沖器;在該循環(huán)體的迭代運(yùn)行過(guò)程中,循環(huán)檢測(cè)單元中止指令提取單元和/或指令解碼單元的運(yùn)行,循環(huán)緩沖器基于其存儲(chǔ)的關(guān)聯(lián)通路信息為數(shù)據(jù)高速緩存提供通路預(yù)測(cè)。該處理器的高速數(shù)據(jù)緩存、指令提取單元和指令解碼單元的功耗減少,整體功耗低。
文檔編號(hào)G06F12/08GK102637149SQ201210079108
公開(kāi)日2012年8月15日 申請(qǐng)日期2012年3月23日 優(yōu)先權(quán)日2012年3月23日
發(fā)明者丁立, 陳祺愷 申請(qǐng)人:山東極芯電子科技有限公司