午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

用于檢測暫停的邏輯分析器的制造方法

文檔序號:10617849閱讀:207來源:國知局
用于檢測暫停的邏輯分析器的制造方法
【專利摘要】一種微處理器,包括:多個(gè)隊(duì)列,包含關(guān)于高速緩沖?存取傳輸?shù)乃矔r(shí)傳輸狀態(tài)信息;耦接到多個(gè)隊(duì)列的多個(gè)檢測器,其針對一個(gè)或多個(gè)可能的不足、活鎖或死鎖狀況監(jiān)視多個(gè)隊(duì)列;以及多個(gè)恢復(fù)邏輯模塊,可操作來在檢測器識別出一個(gè)或多個(gè)可能的不足、活鎖或死鎖狀況時(shí)實(shí)施一個(gè)或多個(gè)恢復(fù)例程。
【專利說明】
用于檢測暫停的邏輯分析器
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及暫停(hang)檢測邏輯,并且更特別地,涉及用于末層高速緩沖的暫停檢測邏輯?!颈尘凹夹g(shù)】
[0002]末層高速緩沖(LLC)的標(biāo)簽管線提供存取標(biāo)簽、MESI和LRU陣列的方式。標(biāo)簽管線 (在此也被稱為標(biāo)簽管)將請求區(qū)分優(yōu)先次序,并且對如何響應(yīng)某些請求做出決定。例如來自諸如L1D的較低層高速緩沖的加載請求,會(huì)引發(fā)隊(duì)列條目被推入以達(dá)成跟蹤狀態(tài)的目的。 數(shù)據(jù)加載隊(duì)列條目然后仲裁對于標(biāo)簽管線的所有權(quán)。一旦它被授予對標(biāo)簽管線的所有權(quán), 隊(duì)列條目就存取標(biāo)簽MESI隊(duì)列陣列來看它的地址是否在隊(duì)列陣列中。如果它在,那么在管線末尾,隊(duì)列條目基于地址是否在高速緩沖中并且基于由哪個(gè)其它的高速緩沖具有該線, 來決定命中還是失中(miss)或者是否需要監(jiān)聽(snoop)其它高速緩沖。
[0003]用于仲裁對LLC存取的邏輯可以導(dǎo)致暫停(hang),對于程序員來說,該暫停既不是編碼錯(cuò)誤的故障,也不是可預(yù)測的。例如,當(dāng)單個(gè)請求或請求對(pair of requests)沒有完成時(shí)會(huì)發(fā)生死鎖,因該請求重復(fù)地在管線中仲裁和重新執(zhí)行。死鎖的一個(gè)共同原因是等待某種外部刺激的請求,另一共同原因是依賴鏈的存在,在該鏈中請求對的每一個(gè)正在等待另一個(gè)請求完成。
[0004]另一個(gè)共同示例是當(dāng)在多線程程序中每個(gè)線程競爭相同的共享資源時(shí)發(fā)生的活的暫停和不足(starvat1n)。在代碼上,如果資源可用,則所有權(quán)通常用為0的變量做信號通知,而如果資源不可用(即,已經(jīng)被一個(gè)線程擁有),則用為1的變量做信號通知。線程讀取該比特同時(shí)也將該比特設(shè)定為1,來看它們是否能夠得到所有權(quán)。如果線程讀取0但是設(shè)定 1,則那個(gè)線程現(xiàn)在得到所有權(quán)。當(dāng)一個(gè)線程得到所有權(quán)時(shí),其它線程會(huì)時(shí)常對此位置進(jìn)行讀取-修改-寫入,以等待第一線程釋放共享的資源。在線程〇擁有資源,并且它的任務(wù)結(jié)束, 但是卻防止線程1以及2試圖以重復(fù)的讀取-修改-寫入0來釋放資源時(shí)將發(fā)生暫停的情形。 這些種類的不足狀態(tài),是確定加載相對于其它加載的優(yōu)先次序的架構(gòu)中的非計(jì)劃特征,并且難以預(yù)測。
[0005]實(shí)際上,在成本、處理速度和邏輯復(fù)雜度方面,創(chuàng)建檢測并響應(yīng)于共同死鎖狀況的微處理器,比創(chuàng)建從不或很少發(fā)生死鎖狀況的微處理器可能更高效。因此,需要基于啟發(fā)式的標(biāo)簽管傳輸監(jiān)視邏輯來檢測指示暫停的模式,還需要響應(yīng)于檢測到的暫停并力圖解決它們的邏輯。
【發(fā)明內(nèi)容】

[0006]本發(fā)明可以用很多形式來表示。它可以表示的一種形式是作為具有分布式暫停檢測和恢復(fù)邏輯的微處理器,該分布式暫停檢測和恢復(fù)邏輯用于檢測和響應(yīng)于一個(gè)或多個(gè)可能的不足、活鎖或死鎖狀況。微處理器,包括:多個(gè)隊(duì)列,包含關(guān)于高速緩沖_存取傳輸?shù)乃矔r(shí)傳輸狀態(tài)信息;耦接到多個(gè)隊(duì)列的多個(gè)檢測器,其針對一個(gè)或多個(gè)可能的不足、活鎖或死鎖狀況監(jiān)視多個(gè)隊(duì)列;以及多個(gè)恢復(fù)邏輯模塊(例如,有限狀態(tài)機(jī)),可操作來在檢測器識別出一個(gè)或多個(gè)可能的不足、活鎖或死鎖狀況時(shí)實(shí)施一個(gè)或多個(gè)恢復(fù)例程。
[0007]請求仲裁到末層高速緩沖標(biāo)簽管的每個(gè)隊(duì)列條目可以與相應(yīng)的檢測器關(guān)聯(lián)。此夕卜,每個(gè)檢測器可以包括在可配置的閾值飽和的飽和計(jì)數(shù)器。每個(gè)飽和計(jì)數(shù)器可以在每當(dāng)相關(guān)聯(lián)的隊(duì)列條目被重新執(zhí)行時(shí)增加,并且在相關(guān)聯(lián)的隊(duì)列條目被新分配時(shí)重置?;蛘撸慨?dāng)相關(guān)聯(lián)的隊(duì)列條目請求仲裁,但是不給予仲裁時(shí),每個(gè)飽和計(jì)數(shù)器可以增加。此外或者,每當(dāng)相關(guān)聯(lián)的隊(duì)列條目在請求仲裁之前等待某種外部刺激時(shí),每個(gè)飽和計(jì)數(shù)器可以增加。
[0008]在一個(gè)實(shí)施例中,當(dāng)檢測器檢測到可能的不足、活鎖或死鎖狀況時(shí),它與它最近的恢復(fù)邏輯模塊關(guān)于它的狀況通信。在更詳細(xì)的實(shí)施例中,微處理器還包括中央恢復(fù)邏輯,其也可以采用有限狀態(tài)機(jī)的形式。當(dāng)恢復(fù)邏輯模塊被檢測器通知可能的不足、活鎖或死鎖狀況時(shí),恢復(fù)邏輯模塊與中央恢復(fù)邏輯通信。中央恢復(fù)邏輯響應(yīng)性地指令多個(gè)恢復(fù)邏輯模塊的每個(gè)執(zhí)行一個(gè)或多個(gè)它們自己的局部恢復(fù)例程。
[0009]恢復(fù)例程被配置為操縱來自相關(guān)聯(lián)的隊(duì)列條目的仲裁請求以便嘗試解決檢測到的暫停狀況。例如,一個(gè)或多個(gè)恢復(fù)例程可以包括通過系統(tǒng)地阻擋仲裁請求來將鼓泡插入到標(biāo)簽管線中。另外的一個(gè)或多個(gè)恢復(fù)例程可以包括通過將它們的請求去資格來阻擋請求隊(duì)列條目的預(yù)定集合。又另外的一個(gè)或多個(gè)恢復(fù)例程可以包括通過使得相關(guān)聯(lián)的隊(duì)列條目將它們的仲裁請求去資格,來阻擋與沒有被插入可能的不足、活鎖或死鎖狀況的檢測器相關(guān)聯(lián)的所有請求者。并且又進(jìn)一步的一個(gè)或多個(gè)恢復(fù)例程可以包括循環(huán)的請求去資格,其中來自個(gè)別的隊(duì)列或隊(duì)列條目的對于仲裁的請求僅僅被允許串行地進(jìn)行。
[0010]本發(fā)明還可以用很多其它形式來表示,其中一些形式可以比上面表示的形式更寬。因此,不應(yīng)該假設(shè)上面表示的形式反映本發(fā)明在權(quán)利要求中所表示的形式。
【附圖說明】
[0011]圖1是具有共享的LLC的多核心微處理器的一個(gè)實(shí)施例的框圖。
[0012]圖2是圖1的LLC的框圖。
[0013]圖3是關(guān)于圖2的LLC的標(biāo)簽管分級架構(gòu)的一個(gè)實(shí)施例的框圖。
[0014]圖4示出LLC和暫停檢測架構(gòu)的一個(gè)實(shí)施例的頂層視圖的框圖。
[0015]圖5示出圖4的邏輯分析器的框圖。
[0016]圖6示出由圖5的邏輯分析器捕捉的快照的一個(gè)實(shí)施例的內(nèi)容。
[0017]圖7示出圖4的模式檢測器的框圖。
[0018]圖8示出合并到圖7的模式檢測器中的累加寄存器的一個(gè)實(shí)施例內(nèi)容。
[0019]圖9示出圖7的有條件的模式檢測器的操作的功能性框圖。
[0020]圖10示出圖4的有條件的模式檢測器的框圖。
[0021]圖11示出圖10的可配置寄存器之一的一個(gè)實(shí)施例的內(nèi)容。
[0022]圖12示出用于檢測一個(gè)或多個(gè)可能的不足、活鎖或死鎖狀況的分布式暫停邏輯架構(gòu)的一個(gè)實(shí)施例。
[0023]圖13示出多個(gè)恢復(fù)例程的功能性框圖。
【具體實(shí)施方式】
[0024] 現(xiàn)在參照圖1,示出了圖示多核心微處理器100的框圖。微處理器100包括多個(gè)處理核心102、共享的末層高速緩沖(LLC)存儲(chǔ)器120和總線接口單元(BIU)122。[〇〇25] 在圖1的示范性實(shí)施例中,存在被表示為核心0 102-0、核心1 102-1、核心2 102-2 和核心3 102-3的4個(gè)核心102,其被統(tǒng)稱為核心102,并且一般地單獨(dú)稱為核心102。每個(gè)核心 102-0、102-1、102-2、102-3經(jīng)由各自的接口 118-0、118-1、118-2、118-3存取LLC 120,所述接口被統(tǒng)稱為接口 118,并且一般地單獨(dú)稱為接口 118??偩€接口單元122也經(jīng)由接口 118-4存取LLC120。微處理器100是包括系統(tǒng)存儲(chǔ)器和外圍設(shè)備(未示出)的大型計(jì)算系統(tǒng)(也未示出)的一部分,LLC 120經(jīng)由總線接口單元122通過系統(tǒng)總線124與其通信。雖然圖1的實(shí)施例示出具有4個(gè)核心102的處理器100,但是具有不同數(shù)量的核心102的其它實(shí)施例是仍被本發(fā)明考慮在內(nèi)的。所有核心102共享LLC 106。[〇〇26] 每個(gè)處理核心102包括指令高速緩沖104、指令翻譯器106(其包括微代碼108)、執(zhí)行單元110、架構(gòu)寄存器112和存儲(chǔ)子系統(tǒng)114(例如,存儲(chǔ)次序緩沖器、數(shù)據(jù)高速緩沖和表步行引擎)。執(zhí)行單元110可以包括整數(shù)單元、浮點(diǎn)單元、媒體單元、分支單元、加載單元和存儲(chǔ)單元。其它功能單元(未示出)可以包括分布其間的表步行引擎,其執(zhí)行翻譯表步行來生成虛擬到物理地址翻譯;分支預(yù)測器;重命名單元;重排序緩沖器;保留站;指令取得單元;指令解碼器;指令調(diào)度器;指令分派器、數(shù)據(jù)預(yù)取單元;和非架構(gòu)寄存器。各種微架構(gòu)特征可以被包括在核心1 〇2中。例如,核心102可以是超標(biāo)量體系結(jié)構(gòu)——能夠每個(gè)時(shí)鐘周期向執(zhí)行單元110發(fā)布多個(gè)指令用于執(zhí)行——或標(biāo)量。又例如,核心102可以按次序或不按次序執(zhí)行指令,后者使得指令能夠不按程序次序被發(fā)布用于執(zhí)行。在一個(gè)實(shí)施例中,核心102基本上符合x86指令集架構(gòu),雖然核心102不限于特定的指令集架構(gòu),并且可以包括其它存儲(chǔ)器請求代理器,諸如圖形處理單元(GPU)或現(xiàn)場可編程門陣列(FPGA)。[〇〇27] 每個(gè)核心102-0、102-1、102-2、102-3還包括各自的專用高速緩沖存儲(chǔ)器層級116_ 0、116-1、116-2、116-3,其被統(tǒng)稱為專用高速緩沖存儲(chǔ)器層級116,并且一般地單獨(dú)稱為專用高速緩沖存儲(chǔ)器層級116。優(yōu)選地,專用高速緩沖存儲(chǔ)器層級116的高速緩沖存儲(chǔ)器小于 LLC 120,并且具有相對小的存取延遲。在一個(gè)實(shí)施例中,專用高速緩沖存儲(chǔ)器層級116包括層-1 (L1)指令高速緩沖(LI I)和L1數(shù)據(jù)高速緩沖(L1D)。[〇〇28]圖2示出微處理器的末層高速緩沖(LLC)120的高層框結(jié)構(gòu)。LLC 120包括若干子模塊,所述子模塊包括核心和總線接口 126和128 (其包含保存瞬時(shí)傳輸狀態(tài)的隊(duì)列130 ),保存標(biāo)簽、MES1、LRU和數(shù)據(jù)信息的陣列132-136,以及一個(gè)或多個(gè)標(biāo)簽管線140(也被稱為“標(biāo)簽線”)以及數(shù)據(jù)管線160(也被稱為“數(shù)據(jù)管”),其允許隊(duì)列以適合的定時(shí)方式來存取共享的陣列。[〇〇29]在圖2的實(shí)施例中,兩個(gè)標(biāo)簽管140,標(biāo)簽管A和標(biāo)簽管B,被描繪為支持四核處理器的LLC。兩個(gè)核心參與仲裁以取得標(biāo)簽管A的所有權(quán),并且另外兩個(gè)核心參與仲裁以取得標(biāo)簽管B的所有權(quán)。在另一實(shí)施例(未示出)中,提供單個(gè)的標(biāo)簽管140用于LLC。在又另外的實(shí)施例(也未示出)中,提供三個(gè)或更多的標(biāo)簽管140。
[0030]標(biāo)簽管140獨(dú)有的特性是它們在操作上幾乎是所有LLC傳輸經(jīng)過的中心點(diǎn)。每個(gè)標(biāo)簽管140提供存取到最近最少使用的(LRU)和標(biāo)簽/MESI陣列132和134,并且為到標(biāo)簽管140 中的每個(gè)隊(duì)列條目的仲裁做出行動(dòng)決定。這種特性使得標(biāo)簽管140在檢測和避免暫停方面有用。
[0031]LLC的隊(duì)列130可以被分組成核心接口隊(duì)列和外部接口隊(duì)列。核心接口隊(duì)列的示例包括從LI高速緩沖(或中間高速緩沖)到LLC處理加載的加載隊(duì)列,將從LI高速緩沖至IjLLC處理逐出的逐出隊(duì)列,以及從LLC處理到LI高速緩沖處理監(jiān)聽的監(jiān)聽隊(duì)列。在一個(gè)實(shí)施例中,對于數(shù)據(jù)和代碼提供分開的加載、逐出和監(jiān)聽隊(duì)列。在另一個(gè)實(shí)施例中,為處理器的每個(gè)核心提供這樣的核心接口隊(duì)列的群組。
[0032]外部接口隊(duì)列包括處理到LLC中的新的分配以及從LLC的逐出的填充緩沖器,處理源自總線的監(jiān)聽的監(jiān)聽隊(duì)列,以及(在其它事情當(dāng)中)處理從核心的總線寫入的寫入隊(duì)列。
[0033]LLC還包括其它小框,包括狀態(tài)機(jī)、認(rèn)證特征和運(yùn)用Forth程序(Forth program)的PPU 139ο
[0034]從外部世界進(jìn)入LLC中的傳輸(例如,數(shù)據(jù)加載)或者在LLC之內(nèi)部執(zhí)行(例如,預(yù)取)會(huì)將條目推到它們相應(yīng)的隊(duì)列130中。通過為到它們的標(biāo)簽或數(shù)據(jù)管線140或160中進(jìn)行仲裁、與外部框通信或者兩者,隊(duì)列130然后負(fù)責(zé)維持完成傳輸所需的狀態(tài)。
[0035]微處理器給予一些類型的傳輸比一些其它類型的傳輸更高的優(yōu)先級。在一個(gè)實(shí)施例中,在LLC中最高優(yōu)先級的傳輸是LId加載。當(dāng)LLC檢測到新的加載請求時(shí),它以并行的方式執(zhí)行正常隊(duì)列推入并且將加載請求信號直接發(fā)送到仲裁邏輯中,以允許LLC一檢測到請求,加載就開始仲裁。
[0036]圖3描繪了被劃分成并分別指定為A、B、C、D和E的多個(gè)主要級141-145的標(biāo)簽管140的一個(gè)實(shí)施例。存取高速緩沖的傳輸(在此被稱為“標(biāo)簽管arb”)通過標(biāo)簽管140的級。在A級141期間,傳輸仲裁到標(biāo)簽管140中。在B級142期間,標(biāo)簽被發(fā)送到陣列。在C級期間,從陣列接收MESI信息以及對于標(biāo)簽在LLC中是命中還是失中的指示。在D級期間,鑒于從陣列接收的信息,對于采取什么行動(dòng)進(jìn)行確定。在E級期間,行動(dòng)決定(完成/重新執(zhí)行,推入填充等)被發(fā)送回到請求隊(duì)列。
[0037]在一個(gè)實(shí)施例中,標(biāo)簽管140還包括后續(xù)的級,但是這些僅為了在D級中提供從更舊的請求到更新的請求的轉(zhuǎn)向路徑的目的而存在。因此,在圖3的實(shí)施例中,使用一個(gè)或多個(gè)類型的檢測器150來監(jiān)視E級145是有用的。然而,例如,在具有更多或更少級的實(shí)施例中,監(jiān)視的最佳級將隨著標(biāo)簽管設(shè)計(jì)而變化。因而,在圖4中,“級N” 149象征包含關(guān)于arb的充足信息數(shù)量的標(biāo)簽管級一一特別是,arb是否要重新執(zhí)行、完成和/或要求其它隊(duì)列推入一一來使能對暫停的檢測和分析。
[0038]圖4是示出末層高速緩沖和暫停檢測架構(gòu)170的一個(gè)實(shí)施例的頂層視圖的框圖。LLC和暫停檢測架構(gòu)170包括一個(gè)或多個(gè)數(shù)據(jù)陣列136、一個(gè)或多個(gè)標(biāo)簽陣列132和仲裁邏輯172。耦接到請求隊(duì)列130和數(shù)據(jù)管160的仲裁邏輯172仲裁對數(shù)據(jù)陣列136中的存取。耦接到標(biāo)簽管140的仲裁邏輯172仲裁對標(biāo)簽/MESI陣列132的存取。三個(gè)不同的暫停檢測器——邏輯分析器200、模式檢測器300和狀況模式檢測器400—一耦接到標(biāo)簽管140的級N 149來檢測一個(gè)或多個(gè)不足、活鎖或死鎖狀況。耦接到請求隊(duì)列130的分布式暫停檢測邏輯500提供多個(gè)恢復(fù)例程來從暫停中恢復(fù)。
[0039]圖5示出圖4的邏輯分析器200的一個(gè)實(shí)施例。邏輯分析器200包括連接到標(biāo)簽管140的級N 149的arb讀取邏輯202,其讀取并捕捉標(biāo)簽管arb的快照220。配置邏輯208使得用戶能夠選擇性地配置邏輯分析器200,來在開始指示指標(biāo)212和結(jié)束指示指標(biāo)214之間讀取和/或存儲(chǔ)信息,或者指示是否執(zhí)行滾動(dòng)捕捉216,并且選擇性地忽視某些傳輸218。邏輯分析器200的壓縮邏輯204采用由arb讀取邏輯202所捕捉的快照220并且將不同類型的重新執(zhí)行條件一起進(jìn)行邏輯“或”。存儲(chǔ)邏輯206將壓縮的快照存儲(chǔ)到微處理器的專用隨機(jī)存取存儲(chǔ)器(PRAM)中。這個(gè)被加強(qiáng)的信息用于確定什么標(biāo)簽管arb包括暫?;蛘邔?dǎo)致暫停。
[0040]如圖6中所示,每個(gè)快照220包括存儲(chǔ)關(guān)于標(biāo)簽管arb的相關(guān)信息的多個(gè)比特。傳輸標(biāo)識符222識別arb的隊(duì)列索引。例如,傳輸標(biāo)識符222可以是在0和15之間的數(shù)字。傳輸類型字段224標(biāo)識相應(yīng)的標(biāo)簽管arb是加載、監(jiān)聽、逐出還是其它arb類型。事件字段226指示標(biāo)簽管arb被完成還是重新執(zhí)行。指派字段228標(biāo)識關(guān)于arb的其它有用信息,例如,相應(yīng)的arb被指派到的集合和路徑或者與arb相關(guān)聯(lián)的寄存器體(bank)。這有助于識別可能來自指定arb 所指派集合和路徑所引發(fā)的暫停。[〇〇41]圖7是圖4的模式檢測器300的一個(gè)實(shí)施例的框圖。模式檢測器300包括快照捕捉邏輯301、存儲(chǔ)寄存器316、多個(gè)可配置設(shè)置322和比較邏輯318。[〇〇42]快照捕捉邏輯301包括連接到標(biāo)簽管140的級N 149、用以捕捉標(biāo)簽管arb的快照的 arb讀取邏輯302??煺詹蹲竭壿?01還包括線路解碼器304,該線路解碼器304將通過標(biāo)簽管 140的arb的x數(shù)字傳輸標(biāo)識符222和傳輸類型224,解碼成以2X比特字段表示的傳輸標(biāo)識符和類型。累加器306然后將解碼的傳輸標(biāo)識符和類型累加到累加寄存器314中。[〇〇43] 例如,當(dāng)通過arb讀取邏輯302恢復(fù)原狀時(shí),傳輸類型224可以以X比特(例如,4比特)二進(jìn)制代碼的形式來表示。解碼器342將X比特傳輸標(biāo)識符解碼成Y比特(例如,16比特) 字段,其中2X_1〈Y〈 = 2X,以便Y比特字段的每一比特表示不同種類(或相似種類的類別)的標(biāo)簽管arb。因?yàn)槔奂悠?06通過傳輸標(biāo)識符(傳輸標(biāo)識符中最近解碼數(shù)值者)的最近累加值的邏輯或布爾等效函數(shù)來累加傳輸標(biāo)識符,所以累加器306將在用戶配置時(shí)段期間通過標(biāo)簽管140的每個(gè)種類的標(biāo)簽管arb的位掩碼累加到累加寄存器314中。[〇〇44]模式檢測器300還包括對某些事件計(jì)數(shù)的多個(gè)算術(shù)累加器308。例如,一個(gè)算術(shù)累加器308對在配置時(shí)段期間完成的arb傳輸?shù)臄?shù)量進(jìn)行計(jì)數(shù)。另一個(gè)算術(shù)累加器308對在該時(shí)段期間重新執(zhí)行的arb的數(shù)量進(jìn)行計(jì)數(shù)。又另一累加器308累加在該時(shí)段期間遇到的重新執(zhí)行類型的位掩碼。
[0045]圖8示出累加寄存器314的一個(gè)實(shí)施例的內(nèi)容,其包括比特0-10的字段341以記錄通過算術(shù)累加器310計(jì)數(shù)的重新執(zhí)行的數(shù)量,包括比特11-18的字段343以記錄由算術(shù)累加器308計(jì)數(shù)的完成的數(shù)量,包括比特19-31的字段345以記錄在該時(shí)段期間檢測到的重新執(zhí)行類型,包括比特32-47的字段347以記錄在該時(shí)段期間遇到的傳輸標(biāo)識符(例如,隊(duì)列索引),包括比特48-63的字段349以記錄從累加器306接收的解碼的arb狀態(tài)。[〇〇46]模式檢測器300提供用戶可配置的設(shè)置322來操作模式檢測器300。這些設(shè)置可以包括,例如,時(shí)鐘周期的配置數(shù)量323或者穿過標(biāo)簽管140的有效傳輸(未示出)的配置數(shù)量。 這些設(shè)置還可以包括分別關(guān)于計(jì)數(shù)的完成和計(jì)數(shù)的重新執(zhí)行的數(shù)量的閾值325和327,來信號通知暫停。[〇〇47]圖9示出圖6的模式檢測器300的操作。在框350中,arb讀取邏輯302生成在級N 149 處的arb的快照。在框352中,模式檢測器300將快照累加到寄存器314中。在框354中,模式檢測器300檢查用戶配置的時(shí)段是否已經(jīng)完成。如果否,則模式檢測器300繼續(xù)將快照累加到寄存器314中。如果用戶配置時(shí)段完成,那么在框356中,模式檢測器300在一個(gè)存儲(chǔ)寄存器 316中將寄存器314的累加的比特保存為存儲(chǔ)的歷史。微處理器還清除寄存器314,將它準(zhǔn)備好來為后續(xù)的時(shí)段累加新的位掩碼。
[0048]在框358、360和362中,模式檢測器300中的比較邏輯318執(zhí)行一個(gè)或多個(gè)預(yù)定的和/或配置的比較。例如,模式檢測器300可以評價(jià)完成的數(shù)量是否低于用戶配置的閾值225 (框358),重新執(zhí)行的數(shù)量是否滿足或超過在用戶配置設(shè)置322中設(shè)定的重新執(zhí)行閾值327 (框360),并且/或者比較兩個(gè)最近保存的寄存器的重新執(zhí)行數(shù)據(jù)來確定兩個(gè)寄存器中的重新執(zhí)行的計(jì)數(shù)的數(shù)量是否相同或幾乎相同(框362)。模式檢測器300還可以,或者在替換例中,評價(jià)計(jì)數(shù)的重新執(zhí)行的數(shù)量和計(jì)數(shù)的完成的數(shù)量之間的差是否超過閾值。如果在框364 中滿足一個(gè)或多個(gè)預(yù)定的和/或配置的條件,那么在框366中,模式檢測器300用信號通知暫停,而該暫停將依次觸發(fā)一個(gè)或多個(gè)恢復(fù)或捕捉例程320(框368)。
[0049]圖10是圖4的有條件的模式檢測器400的一個(gè)實(shí)施例的框圖。有條件的模式檢測器 400是圖7的模式檢測器300的更復(fù)雜且可配置的形式。檢測器400包括快照捕捉邏輯401,該快照捕捉邏輯401如同圖7的快照捕捉邏輯301 —樣具有arb讀取邏輯402和掩碼邏輯404來捕捉標(biāo)簽管arb的快照。檢測器400提供多個(gè)可配置觸發(fā)寄存器模塊410。每個(gè)觸發(fā)寄存器模塊410具有用于檢測具有指定屬性的傳輸?shù)亩鄠€(gè)可配置字段,可選地取決于另一觸發(fā)寄存器模塊410而處于觸發(fā)狀態(tài)。多個(gè)觸發(fā)寄存器模塊410可一起配置來檢測用戶指定的模式的 arb,并且在模式被檢測到時(shí)觸發(fā)L2捕捉和/或恢復(fù)響應(yīng)432。
[0050]每個(gè)觸發(fā)寄存器模塊410具有三個(gè)輸出。觸發(fā)寄存器模塊410被觸發(fā)時(shí),第一輸出 422將信號提供給每個(gè)其它觸發(fā)寄存器模塊410。第二輸出424用信號通知下游邏輯420來觸發(fā)L2捕捉,S卩,開始捕捉穿過標(biāo)簽管140的每件事物。每個(gè)觸發(fā)寄存器模塊410的觸發(fā)L2捕捉輸出424被“或”在一起,如“或”框428所示。第三輸出426用信號通知下游邏輯430觸發(fā)PPU中斷,其依次導(dǎo)致一個(gè)或多個(gè)恢復(fù)例程432得到執(zhí)行。每個(gè)觸發(fā)寄存器模塊410的觸發(fā)PPU輸出 426也是被“或”在一起,如“或”框429所示。[〇〇511圖11示出可配置的觸發(fā)寄存器模塊410的一個(gè)實(shí)施例的內(nèi)容。觸發(fā)寄存器模塊410 提供字段用于指定重新執(zhí)行矢量413、arb類型414、觸發(fā)相關(guān)位圖416和超時(shí)值417。如果寄存器模塊具有指定的超時(shí)時(shí)段,那么超時(shí)時(shí)段在寄存器指示它處于觸發(fā)狀態(tài)時(shí)開始。在超時(shí)時(shí)段期滿之后,模式檢測器禁用任何從屬的寄存器模塊進(jìn)入觸發(fā)狀態(tài)中。[〇〇52]觸發(fā)寄存器模塊410還提供每個(gè)在長度上為1比特的字段418和419,來使得觸發(fā)寄存器模塊410能夠觸發(fā)下游邏輯來觸發(fā)PHJ中斷或L2捕捉。字段411指示觸發(fā)是否被使能。字段421指定一旦寄存器觸發(fā),它是否將保持被使能??膳渲玫募拇嫫髂K410可以支持更多專門的字段,例如,標(biāo)簽管選擇器415。[〇〇53]圖12示出用于檢測一個(gè)或多個(gè)可能的不足、活鎖或死鎖狀況的多處理器微處理器中的分布式暫停邏輯架構(gòu)500的一個(gè)實(shí)施例。每個(gè)包含多個(gè)隊(duì)列條目512的多個(gè)隊(duì)列130(圖 2),包含關(guān)于存取高速緩沖的傳輸和旁路高速緩沖的傳輸(例如,不可高速緩沖的加載)的瞬時(shí)傳輸狀態(tài)信息。多個(gè)檢測器520監(jiān)視多個(gè)隊(duì)列條目512的一個(gè)或多個(gè)可能的不足、活鎖或死鎖狀況。多個(gè)恢復(fù)邏輯模塊530被分布在微處理器中。當(dāng)檢測器520檢測到可能的不足、 活鎖或死鎖狀況時(shí),它與最近的恢復(fù)邏輯模塊530通信它的狀況(例如,“ImHung(我被暫停)”信號)。當(dāng)耦接的檢測器520識別到可能的不足、活鎖或死鎖狀況時(shí),每個(gè)恢復(fù)邏輯模塊 530(其在一個(gè)實(shí)施例中組成有限狀態(tài)機(jī))被配置為實(shí)現(xiàn)一個(gè)或多個(gè)局部恢復(fù)例程535。
[0054]在一個(gè)實(shí)施例中,請求仲裁到末層高速緩沖標(biāo)簽管140中的每個(gè)隊(duì)列條目512與相應(yīng)檢測器520相關(guān)聯(lián)。還有在一個(gè)實(shí)施例中,檢測器520包括飽和的計(jì)數(shù)器。配置邏輯550被提供來指定一個(gè)或多個(gè)條件550來計(jì)數(shù)。[〇〇55]在一個(gè)實(shí)施例中,當(dāng)相關(guān)聯(lián)的隊(duì)列條目512被新分配時(shí),分布式暫停邏輯架構(gòu)500 被配置為重置每個(gè)飽和的計(jì)數(shù)器,并且每當(dāng)相關(guān)聯(lián)的隊(duì)列條目512被重新執(zhí)行時(shí),就增加飽和計(jì)數(shù)器。在第二實(shí)施例中,每當(dāng)相關(guān)聯(lián)的隊(duì)列條目請求仲裁,但是不給予仲裁時(shí),每個(gè)飽和計(jì)數(shù)器增加。在第三實(shí)施例中,每當(dāng)相關(guān)聯(lián)的隊(duì)列條目在請求仲裁之前等待某種外部刺激時(shí),每個(gè)飽和計(jì)數(shù)器增加。在第四實(shí)施例中,每個(gè)飽和計(jì)數(shù)器在可配置的閾值飽和。[〇〇56]分布式暫停邏輯架構(gòu)500還包括中央恢復(fù)邏輯540,該中央恢復(fù)邏輯540在一個(gè)實(shí)施例中也是有限狀態(tài)機(jī)。當(dāng)恢復(fù)邏輯模塊530被檢測器520通知可能的不足、活鎖或死鎖狀況時(shí),恢復(fù)邏輯模塊530與中央恢復(fù)邏輯540通信。中央恢復(fù)邏輯540響應(yīng)性地指令多個(gè)恢復(fù)邏輯模塊530的每個(gè)執(zhí)行一個(gè)或多個(gè)它們自己的局部恢復(fù)例程。[〇〇57]恢復(fù)例程535被配置為處理來自相關(guān)聯(lián)的隊(duì)列條目的仲裁請求以便嘗試解決檢測到的暫停。圖13是提供給恢復(fù)邏輯540的恢復(fù)例程560的集合的一個(gè)實(shí)施例的框圖。[〇〇58] 一個(gè)恢復(fù)例程562包括透過系統(tǒng)地阻擋仲裁請求來將鼓泡(bubble)插入到標(biāo)簽管線中。第二恢復(fù)例程564包括透過將它們的請求去資格(dequalify)來阻擋預(yù)定的請求隊(duì)列條目的集合。第三恢復(fù)例程566包括透過使得相關(guān)聯(lián)的隊(duì)列條目將它們的仲裁請求去資格, 來阻擋與沒有設(shè)置可能的不足、活鎖或死鎖狀況的檢測器相關(guān)聯(lián)的所有請求者。第四恢復(fù)例程568包括循環(huán)的請求去資格,其中來自個(gè)別的隊(duì)列或隊(duì)列條目的對于仲裁的請求僅僅被允許連續(xù)地進(jìn)行。在一個(gè)實(shí)施例中,恢復(fù)邏輯執(zhí)行一個(gè)恢復(fù)例程,并且在執(zhí)行下一個(gè)恢復(fù)例程之前重新檢查暫停條件。然而,除非在權(quán)利要求中如此指定,否則本發(fā)明不將這些恢復(fù)例程限制于任何特定的恢復(fù)例程的集合,或者恢復(fù)例程的任何特定的排序。[〇〇59]雖然已經(jīng)在此描述了本發(fā)明的各種實(shí)施例,但是應(yīng)該理解,它們已經(jīng)作為示例被呈現(xiàn),而非限制。對于相關(guān)計(jì)算機(jī)領(lǐng)域的技術(shù)人員來說將顯然的是,在此可以進(jìn)行形式和細(xì)節(jié)上的各種改變而不脫離本發(fā)明的范圍。例如,軟件可以使能在此描述的裝置和方法的功能、制作、建模、模擬、描述和/或測試。這可以通過使用以下來完成:通用編程語言(例如,C、 C++)、硬件描述語言(HDL)(包括Verilog HDL、VHDL等)或者其它可用程序。這樣的軟件可以被部署在任何已知的計(jì)算機(jī)可用介質(zhì)中,諸如磁帶、半導(dǎo)體、磁盤或光盤(例如,CD-ROM、 DVD-ROM等)、網(wǎng)絡(luò)、有線、無線或其它通信介質(zhì)。在此描述的裝置和方法的實(shí)施例可以被包括在半導(dǎo)體知識產(chǎn)權(quán)核心中,諸如微處理器核心(例如,嵌入的,或?qū)S玫?,用HDL),并且在集成電路的生產(chǎn)中被轉(zhuǎn)換成硬件。另外,在此描述的裝置和方法可以被具體化為硬件和軟件的組合。因而,本發(fā)明不應(yīng)該被在此描述的任何示范性實(shí)施例所限制,而是應(yīng)該僅根據(jù)所附的權(quán)利要求及其等價(jià)物來定義。具體地,本發(fā)明可以在可以用在通用計(jì)算機(jī)中的微處理器設(shè)備之內(nèi)被實(shí)現(xiàn)。最后,本領(lǐng)域技術(shù)人員應(yīng)該理解,他們可以容易地使用所公開的構(gòu)思和特定實(shí)施例作為設(shè)計(jì)和修改用于實(shí)行本發(fā)明的相同目的的其它結(jié)構(gòu)的基礎(chǔ),而不脫離由所附權(quán)利要求定義的本發(fā)明的范圍。
【主權(quán)項(xiàng)】
1.一種具有分布式暫停檢測和恢復(fù)邏輯的微處理器,該分布式暫停檢測和恢復(fù)邏輯用 于檢測和響應(yīng)于一個(gè)或多個(gè)可能的不足、活鎖或死鎖狀況,該微處理器包括:多個(gè)隊(duì)列,包含關(guān)于高速緩沖-存取傳輸?shù)乃矔r(shí)傳輸狀態(tài)信息;耦接到多個(gè)隊(duì)列的多個(gè)檢測器,其針對一個(gè)或多個(gè)可能的不足、活鎖或死鎖狀況監(jiān)視 多個(gè)隊(duì)列;以及多個(gè)恢復(fù)邏輯模塊,可操作來在檢測器識別出一個(gè)或多個(gè)可能的不足、活鎖或死鎖狀 況時(shí)實(shí)施一個(gè)或多個(gè)恢復(fù)例程。2.如權(quán)利要求1所述的微處理器,其中請求仲裁到末層高速緩沖標(biāo)簽管的每個(gè)隊(duì)列條 目與相應(yīng)的檢測器關(guān)聯(lián)。3.如權(quán)利要求1所述的微處理器,其中檢測器包括飽和計(jì)數(shù)器。4.如權(quán)利要求3所述的微處理器,其中當(dāng)相關(guān)聯(lián)的隊(duì)列條目被新分配時(shí),每個(gè)飽和計(jì)數(shù)器被重置。5.如權(quán)利要求3所述的微處理器,其中當(dāng)相關(guān)聯(lián)的隊(duì)列條目被重新執(zhí)行時(shí),每個(gè)飽和計(jì) 數(shù)器增加。6.如權(quán)利要求3所述的微處理器,其中每當(dāng)相關(guān)聯(lián)的隊(duì)列條目請求仲裁時(shí),每個(gè)飽和計(jì) 數(shù)器增加,但是不給予仲裁。7.如權(quán)利要求3所述的微處理器,其中每當(dāng)相關(guān)聯(lián)的隊(duì)列條目在請求仲裁之前等待某 種外部刺激時(shí),每個(gè)飽和計(jì)數(shù)器增加。8.如權(quán)利要求3所述的微處理器,其中每個(gè)飽和計(jì)數(shù)器在可配置的閾值飽和。9.如權(quán)利要求1所述的微處理器,其中當(dāng)檢測器檢測到可能的不足、活鎖或死鎖狀況 時(shí),它與最近的恢復(fù)邏輯模塊通信關(guān)于它的狀況。10.如權(quán)利要求1所述的微處理器,其中每個(gè)恢復(fù)邏輯模塊包括有限狀態(tài)機(jī)。11.如權(quán)利要求1所述的微處理器,還包括中央恢復(fù)邏輯;其中當(dāng)恢復(fù)邏輯模塊被檢測 器通知可能的不足、活鎖或死鎖狀況時(shí),恢復(fù)邏輯模塊與中央恢復(fù)邏輯通信;以及其中中央恢復(fù)邏輯響應(yīng)性地指令多個(gè)恢復(fù)邏輯模塊的每個(gè)來執(zhí)行一個(gè)或多個(gè)它們自 己的局部恢復(fù)例程。12.如權(quán)利要求1所述的微處理器,其中恢復(fù)例程被配置為操縱來自相關(guān)聯(lián)的隊(duì)列條目 的仲裁請求以便嘗試解決檢測到的暫停狀況。13.如權(quán)利要求1所述的微處理器,其中所述一個(gè)或多個(gè)恢復(fù)例程包括通過系統(tǒng)地阻擋 仲裁請求來將鼓泡插入到標(biāo)簽管線中。14.如權(quán)利要求1所述的微處理器,其中所述一個(gè)或多個(gè)恢復(fù)例程包括通過將它們的請 求去資格來阻擋請求隊(duì)列條目的預(yù)定集合。15.如權(quán)利要求1所述的微處理器,其中所述一個(gè)或多個(gè)恢復(fù)例程包括通過使得相關(guān)聯(lián) 的隊(duì)列條目將它們的仲裁請求去資格,來阻擋與沒有被插入可能的不足、活鎖或死鎖狀況 的檢測器相關(guān)聯(lián)的所有請求者。16.如權(quán)利要求1所述的微處理器,其中所述一個(gè)或多個(gè)恢復(fù)例程包括循環(huán)的請求去資 格,其中來自個(gè)別的隊(duì)列或隊(duì)列條目的對于仲裁的請求僅僅被允許串行地進(jìn)行。17.如權(quán)利要求1所述的微處理器,其中中央恢復(fù)邏輯是有限狀態(tài)機(jī)。18.如權(quán)利要求1所述的微處理器,其中在所述多個(gè)隊(duì)列之內(nèi)的條目維持關(guān)于相應(yīng)傳輸?shù)臓顟B(tài)信息。19.如權(quán)利要求1所述的微處理器,其中微處理器給予一些類型的傳輸比一些其它類型的傳輸更高的優(yōu)先級。20.如權(quán)利要求1所述的微處理器,其中所述多個(gè)隊(duì)列包括處理高速緩沖的不同層之間的加載和逐出的隊(duì)列。21.如權(quán)利要求1所述的微處理器,其中所述多個(gè)隊(duì)列包括加載、逐出和查詢隊(duì)列。22.如權(quán)利要求1所述的微處理器,其中所述多個(gè)隊(duì)列包括處理末層高速緩沖和微處理器總線之間的傳輸?shù)年?duì)列。23.如權(quán)利要求1所述的微處理器,其中所述多個(gè)隊(duì)列包括填充、逐出和監(jiān)聽隊(duì)列。24.—種在微處理器中檢測和響應(yīng)于一個(gè)或多個(gè)可能的不足、活鎖或死鎖狀況的方法,該方法包括: 在多個(gè)隊(duì)列中存儲(chǔ)關(guān)于高速緩沖-存取傳輸?shù)乃矔r(shí)傳輸狀態(tài)信息; 使用耦接到多個(gè)隊(duì)列的多個(gè)檢測器,針對一個(gè)或多個(gè)可能的不足、活鎖或死鎖狀況監(jiān)視多個(gè)隊(duì)列;以及 當(dāng)檢測器識別出一個(gè)或多個(gè)可能的不足、活鎖或死鎖狀況時(shí),使用多個(gè)恢復(fù)邏輯模塊來實(shí)施一個(gè)或多個(gè)恢復(fù)例程。25.如權(quán)利要求24所述的方法,進(jìn)一步包括: 從恢復(fù)邏輯模塊向中央恢復(fù)邏輯通信可能的不足、活鎖或死鎖狀況;并且 中央恢復(fù)邏輯響應(yīng)地指令所述多個(gè)恢復(fù)邏輯模塊的每個(gè)來執(zhí)行一個(gè)或多個(gè)它們自己的局部恢復(fù)例程。26.如權(quán)利要求24所述的方法,其中所述一個(gè)或多個(gè)恢復(fù)例程包括通過系統(tǒng)地阻擋仲裁請求來將鼓泡插入到標(biāo)簽管線中。27.如權(quán)利要求24所述的方法,其中所述一個(gè)或多個(gè)恢復(fù)例程包括通過將它們的請求去資格來阻擋請求隊(duì)列條目的預(yù)定集合。28.如權(quán)利要求24所述的方法,其中所述一個(gè)或多個(gè)恢復(fù)例程包括通過使得相關(guān)聯(lián)的隊(duì)列條目將它們的仲裁請求去資格,來阻擋與沒有被插入可能的不足、活鎖或死鎖狀況的檢測器相關(guān)聯(lián)的所有請求者。29.如權(quán)利要求24所述的方法,其中所述一個(gè)或多個(gè)恢復(fù)例程包括循環(huán)的請求去資格,其中來自個(gè)別的隊(duì)列或隊(duì)列條目的對于仲裁的請求僅僅被允許串行地進(jìn)行。30.—種計(jì)算機(jī)程序產(chǎn)品,被編碼在與計(jì)算設(shè)備一起使用的至少一個(gè)非瞬時(shí)性計(jì)算機(jī)可讀介質(zhì)中,該計(jì)算機(jī)程序產(chǎn)品包括: 嵌入在所述介質(zhì)中的計(jì)算機(jī)可讀程序代碼,用于指定具有如下的微處理器: 多個(gè)隊(duì)列,包含關(guān)于高速緩沖-存取傳輸?shù)乃矔r(shí)傳輸狀態(tài)信息; 耦接到多個(gè)隊(duì)列的多個(gè)檢測器,其針對一個(gè)或多個(gè)可能的不足、活鎖或死鎖狀況監(jiān)視多個(gè)隊(duì)列;以及 多個(gè)恢復(fù)邏輯模塊,可操作來在檢測器識別出一個(gè)或多個(gè)可能的不足、活鎖或死鎖狀況時(shí)實(shí)施一個(gè)或多個(gè)恢復(fù)例程。
【文檔編號】G06F9/30GK105980978SQ201480070654
【公開日】2016年9月28日
【申請日】2014年12月13日
【發(fā)明人】道格拉斯.R.瑞德
【申請人】上海兆芯集成電路有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1