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

從隊列處理指令刷新的生存期計數(shù)器設(shè)計的系統(tǒng)和方法

文檔序號:6560004閱讀:280來源:國知局
專利名稱:從隊列處理指令刷新的生存期計數(shù)器設(shè)計的系統(tǒng)和方法
技術(shù)領(lǐng)域
本發(fā)明一般地涉及一種用于刷新處理器的執(zhí)行單元中的指令的系統(tǒng)和方法。更具體地說,本發(fā)明涉及一種用于將計數(shù)器分配給執(zhí)行單元中的每個指令,以便確定在處理器上出現(xiàn)異常條件時應(yīng)刷新執(zhí)行單元中的哪些指令的系統(tǒng)和方法。
背景技術(shù)
管線處理是一種在計算機內(nèi)提供同時處理或并行處理的技術(shù)。它是指通過將數(shù)據(jù)或指令移動到概念上的管道中并且同時執(zhí)行管道的全部級來重疊操作。例如,當(dāng)正在執(zhí)行一條指令時,計算機可以對下一條指令進行解碼。在向量處理器中,可以同時處理浮點運算中的若干步驟。
管線分為多個段并且每個段可以與其他段同時執(zhí)行操作。當(dāng)一個段完成操作時,它將結(jié)果傳遞給管線中的下一個段,并從先前的段取回下一條操作指令。每條指令的最后結(jié)果在管線的末端快速連續(xù)出現(xiàn)。
無序執(zhí)行是一種用于獲得速度優(yōu)勢和性能優(yōu)勢的技術(shù)。但是,無序執(zhí)行偶爾也會產(chǎn)生危險。這種危險可能使微處理器刷新來自管線級的已取回但未完成的指令并且隨后再填充管道。但是,隨著處理器中管線級的數(shù)量的增加,刷新和再填充管道的開銷也將增加,這導(dǎo)致降低了性能。
確定給定指令的棄置或刷新點是微處理器設(shè)計中的重要職責(zé)。對于無序設(shè)計,已經(jīng)提出了各種方法。在有序設(shè)計中,發(fā)出隊列可以允許某些指令(例如來自浮點管線)與其他指令(例如來自不同管線的定點指令)并行地發(fā)出和執(zhí)行。雖然使用多條管線允許通過多條管線的指令的更大吞吐量,但是它也在發(fā)生指令刷新時產(chǎn)生了某些難題。
在有序處理器中使用多條管線的一個難題是,需要一種機制來跟蹤將指令發(fā)出到正在并行運行并且可能彼此獨立運行(例如,用于浮點指令的管線和用于定點指令的管線)的執(zhí)行單元的順序。換句話說,需要一種機制來允許將一個執(zhí)行單元的發(fā)出隊列和管線與其他執(zhí)行單元的各個發(fā)出隊列和管線分離的機制,以便可以實現(xiàn)更高的效率和吞吐量,同時仍然維持關(guān)于有序處理器中的異常(刷新)點的意義上的順序。另一個難題是,用于相對于彼此來跟蹤所述發(fā)出隊列和執(zhí)行管線的機制需要快速而高效,以便它不會降低處理器的總體速度和效率。
因此,需要一種跟蹤一個執(zhí)行單元中的指令相對于其他執(zhí)行單元中的指令的順序而不添加妨礙系統(tǒng)性能的不必要復(fù)雜性的系統(tǒng)和方法。一個執(zhí)行單元將成為其他獨立運行的執(zhí)行單元的參考點,并且可以具有防止管線之間的簡單同步的發(fā)出隊列。此外,需要一種允許更復(fù)雜的刷新操作(例如刷新距異常點至少一條指令的所有指令的能力)的系統(tǒng)和方法。

發(fā)明內(nèi)容
已經(jīng)發(fā)現(xiàn),可以使用跟蹤執(zhí)行單元中指令的順序(使用計數(shù)器將不同執(zhí)行單元中的指令的執(zhí)行相關(guān)聯(lián))的系統(tǒng)和方法來解決上述難題。在一個實施例中,使用了飽和遞減計數(shù)器。當(dāng)指令被發(fā)送到“并行”執(zhí)行單元時,與該指令對應(yīng)的計數(shù)器被初始化成與變成“參考”執(zhí)行單元管線的多個執(zhí)行單元(例如,加載/存儲單元、定點執(zhí)行單元等)中的一個執(zhí)行單元的管線長度對應(yīng)的值。
當(dāng)指令通過并行管線前進時,其計數(shù)器遞減直到達到0。一旦計數(shù)器達到0,其將被執(zhí)行單元結(jié)束。如果出現(xiàn)刷新條件,將保留(即,不刷新或不無效)具有等于0的計數(shù)器的指令,而管線中的其他指令被無效。刷新條件的某些常見實例是高速緩存未命中、分支預(yù)測錯誤、數(shù)據(jù)對齊錯誤和無效的指令格式。
在一個實施例中,可以提供不同類型的刷新。不同的刷新類型有助于允許處理器更靈活地處理異常條件。當(dāng)出現(xiàn)“全部刷新”條件時,將刷新(即,無效)所有計數(shù)器值大于0的指令,并且在管線中保留計數(shù)器值為0的指令。當(dāng)出現(xiàn)“刷新N+1”條件時,將刷新所有計數(shù)器值大于0的指令,但是,將保留具有計數(shù)器值為1的“最早的”指令并且不對其進行無效或刷新。為了確定哪個指令是“最早的”,將一個或多個“年齡位(agebit)”分配給每個指令以指示指令進入發(fā)出邏輯的順序。在使用雙發(fā)出邏輯(其中可以在同一指令周期內(nèi)發(fā)出兩條指令)的實施例中,指令流中的第一條指令分配有為“0”(較早)的年齡位屬性,而第二條指令分配有為“1”(較新)的年齡位屬性。最后,當(dāng)出現(xiàn)“刷新N+2”條件時,將刷新所有計數(shù)器值大于1的指令,具有為0或1的計數(shù)器值的指令將被保留并且不會被刷新。
以這種方式,所述發(fā)出隊列實際上被與系統(tǒng)中的其他隊列分離。例如,除該發(fā)出隊列以外,第二個隊列可用于將指令發(fā)出到一個或多個執(zhí)行單元。在此實例中,第一“發(fā)出”隊列將指令發(fā)出到多個執(zhí)行單元并且一個或多個執(zhí)行單元共享第二發(fā)出隊列。其他執(zhí)行單元不能使用第二發(fā)出隊列,由此第一發(fā)出隊列邏輯將發(fā)送命令直接發(fā)出到執(zhí)行管線。雖然第二發(fā)出隊列中的指令在被發(fā)出到與該第二發(fā)出隊列捆綁的某一執(zhí)行單元之前可能停止,但是分配給該指令的計數(shù)器值將繼續(xù)在每個指令周期遞減。以這種方式,可以將第二發(fā)出隊列與沒有第二發(fā)出隊列的執(zhí)行單元分離,同時仍然維持關(guān)于異常(刷新)點的意義上的順序。以這種方式,能夠完成刷新點之前發(fā)出的指令,而那些在刷新點之后發(fā)出的指令被有效和高效地從相應(yīng)執(zhí)行單元管線刷新。此外,提供各種類型的刷新條件提供了附加的粒度,以便可以有效地標(biāo)識更精確的刷新點位置,而無需重新發(fā)出能夠被正確完成的指令。
以上所述是概要,并且因此必然包含細節(jié)的簡化、概括和省略;因此,本領(lǐng)域的技術(shù)人員將理解,所述概要只是示例性的并且并非旨在以任何方式進行限制。如僅由權(quán)利要求限定的本發(fā)明的其他方面、發(fā)明特征和優(yōu)點將在以下所述的非限制性詳細說明中變得顯而易見。


通過參考附圖,可以更好地理解本發(fā)明并且本發(fā)明的眾多目標(biāo)、特征和優(yōu)點將對本領(lǐng)域的技術(shù)人員變得顯而易見,這些附圖是圖1是示出了使用計數(shù)器從隊列處理指令刷新的各種處理器組件的高級示意圖;圖2是示出了發(fā)出具有跟蹤指令通過執(zhí)行單元管線的級數(shù)的計數(shù)器的指令的流程圖;圖3是示出了將指令發(fā)出到已分離的隊列并且多個管線具有用于相對于發(fā)出指令的順序來跟蹤指令通過管線的級數(shù)的計數(shù)器的示意圖;圖4是示出了處理“全部刷新”異常的流程圖;圖5是示出了處理“刷新N+1”異常的流程圖;圖6是示出了處理“刷新N+2”異常的流程圖;圖7是能夠?qū)崿F(xiàn)本發(fā)明的計算設(shè)備的方框圖;以及圖8是包括多個其中可以實現(xiàn)本發(fā)明的異構(gòu)處理器的寬帶引擎的方框圖。
具體實施例方式
以下內(nèi)容旨在提供對本發(fā)明的實例的詳細說明,并且不應(yīng)被用來限制發(fā)明本身。相反,任何數(shù)量的變化都可以落入在所述說明之后的權(quán)利要求中限定的本發(fā)明的范圍內(nèi)。
圖1是示出了使用計數(shù)器從隊列處理指令刷新的各種處理器組件的高級示意圖。一級(L1)高速緩存100是速度很高但體積很小的存儲器。處理器首先嘗試從一級高速緩存100讀取指令。如果所需的指令在L1高速緩存中不存在,則接著嘗試L2高速緩存(未示出)。L2高速緩存體積比L1高速緩存大但速度比L1高速緩存慢。如果所需的指令在L2高速緩存中不存在,則接著嘗試系統(tǒng)存儲器(DRAM)或L3高速緩存(如果有)。高速緩存越慢,等待所需指令的時間就越長。
取回電路110用于從L1高速緩存100或其他存儲區(qū)域(例如L2高速緩存)取回所需的指令。此外,取回電路110從分支掃描檢索預(yù)測的指令信息。在一個實施例中,存在兩個用于兩個線程的指令緩沖區(qū)級。在一個實施例中,所述指令緩沖區(qū)是FIFO隊列,該隊列用于在存在下游停止條件時為每個線程緩沖最多4條從L1高速緩存取回的指令。一個指令緩沖區(qū)級用于加載指令緩沖區(qū),為每個線程加載一組指令緩沖區(qū)。另一個指令緩沖區(qū)級用于卸載指令緩沖區(qū)并向下復(fù)用(mux)到兩條指令(分派120)。在一個實施例中,每個線程被賦予同等的分派優(yōu)先級,每隔一個周期切換。分派還控制到達和來自微代碼的指令流動,這用來將難以執(zhí)行的指令分成多個“微操作”。來自分派120的結(jié)果和微代碼被一起復(fù)用以將指令提供給解碼邏輯125。
解碼電路125用于裝配指令內(nèi)部操作碼和寄存器源/目標(biāo)域。此外,在解碼器的某一級開始相關(guān)性檢查并且檢查數(shù)據(jù)危險(寫后讀,寫后寫)。發(fā)出邏輯130在各個管線級繼續(xù)以創(chuàng)建單個停止點,該點沿管線向上傳播到指令緩沖區(qū),使兩個線程都停止。在許多其他條件中,除資源沖突檢測之外,還由數(shù)據(jù)危險檢測來驅(qū)動所述停止點。發(fā)出邏輯130確定指令的適當(dāng)路線,指令將在所述路線上被發(fā)出到執(zhí)行單元。在一個實施例中,每條指令可以被路由到五個不同的發(fā)出位置定點單元150、加載-存儲單元140、分支單元160以及VSU發(fā)出隊列180,隊列180也稱為VMX(矢量多媒體擴展)/FPU發(fā)出隊列,因為此隊列處理VMX和浮點指令。
VSU發(fā)出隊列是除發(fā)出隊列130以外的用于將指令發(fā)出到浮點執(zhí)行單元186或VMX執(zhí)行單元182的第二個隊列。浮點單元和VMX單元都包含管線。發(fā)出邏輯130將指令發(fā)出到VSU發(fā)出隊列180而不檢查相關(guān)性。VSU發(fā)出邏輯具有單獨的用于處理VSU指令的相關(guān)性的相關(guān)性檢查機制。當(dāng)指令在VSU發(fā)出隊列180中時,指令可能在解決相關(guān)性時停止。但是,分配給發(fā)出到VSU發(fā)出隊列180的指令的計數(shù)器將在指令在隊列中等待時繼續(xù)遞減。
在一個實施例中,發(fā)出邏輯130將計數(shù)器分配給一條或多條發(fā)出到各個指令單元管線的指令。以這種方式,當(dāng)出現(xiàn)刷新條件時,將計算計數(shù)器的值并且將刷新(無效)新近添加到管線的指令,而那些在刷新點以前添加到管線的指令將保留在管線中(不進行無效)。在一個實施例中,使用飽和遞減計數(shù)器來將每個計數(shù)器初始化為與參考管線的長度對應(yīng)的值,所述參考管線確定了在該處不再刷新指令并且必須完成指令的點(稱為“提交點”)。例如,在周期提交點為10的系統(tǒng)中,計數(shù)器將被初始化為10。在指令等待由指令單元執(zhí)行的每個指令周期內(nèi)(無論是在VSU發(fā)出隊列180中還是在執(zhí)行管線中),計數(shù)器都將遞減。在此實施例中,當(dāng)計數(shù)器達到0時,其被保持在0(即,它不會變成負(fù)值,這被稱為“飽和”)。當(dāng)出現(xiàn)刷新條件時,那些計數(shù)器值為0的指令將保留在管線中并將在(例如,完成170(在加載/存儲指令、浮點指令以及分支的情況下)以及完成190(在VMX指令和浮點指令的情況下)處)完成。
可以發(fā)生不同類型的刷新以便精確地確定在該處應(yīng)完成或刷新指令的點?!叭克⑿隆鳖愋偷乃⑿聦?dǎo)致刷新所有計數(shù)器大于0的指令。在“刷新N+1”類型的刷新中,除了在管線中保留計數(shù)器值為1的最早指令外,將刷新計數(shù)器大于0的指令。為了確定哪個指令是“最早的”指令,將一個或多個“年齡位”作為屬性分配給每個指令以指示指令進入發(fā)出邏輯的順序。在使用雙發(fā)出邏輯(其中可以在同一指令周期內(nèi)發(fā)出兩條指令)的實施例中,指令流中的第一條指令分配有為“0”(較早)的年齡位屬性,而第二條指令分配有為“1”(較新)的年齡位屬性。在“刷新N+2”類型的刷新中,將刷新計數(shù)器大于1的指令,而具有為0或1的計數(shù)器值的指令將保留在管線中。
圖2是示出了發(fā)出具有跟蹤指令通過執(zhí)行單元管線的級數(shù)的計數(shù)器的指令的流程圖。當(dāng)指令移至發(fā)出邏輯電路時開始發(fā)出邏輯200(步驟210)。在所示的實例中,將“指令L”移至發(fā)出邏輯。在步驟220,根據(jù)管線的長度來初始化計數(shù)器。在所示的實例中,將指令L的計數(shù)器初始化為10。在步驟230,發(fā)出邏輯將指令發(fā)出到適當(dāng)?shù)膱?zhí)行單元管線(例如,加載/存儲單元、浮點單元、分支單元等)。
在所示的實例中,指令L加入到若干其他已被發(fā)出到執(zhí)行單元管線225的指令中。管線中示出了指令A(yù)到K,每個指令都具有隨著指令通過管線前進而遞減的計數(shù)器值。飽和遞減計數(shù)器使計數(shù)器遞減直至其達到0為止,然后為指令在管線中的其余級將計數(shù)器固定在0。例如,指令A(yù)和B都示出為具有為0的計數(shù)器。在管線末端的指令(例如指令A(yù))接下來將在步驟260由完成單元來處理。
如果遇到“刷新”條件,則計數(shù)器為0的指令將保留在管線中并將由執(zhí)行單元完成,而那些計數(shù)器大于0的指令將被刷新(無效)。在一個實施例中,提供了其他刷新類型(例如,在圖1中描述的刷新N+1和刷新N+2),這些類型的刷新可以使計數(shù)器為1的指令(例如指令C)保留在管線中并且不會被無效。
圖3是示出了將指令發(fā)出到已分離的隊列并且多個管線具有用于相對于發(fā)出指令的順序來跟蹤指令通過管線的級數(shù)的計數(shù)器的示意圖。發(fā)出隊列135存儲等待發(fā)出的指令。雙發(fā)出邏輯130在每個指令周期最多可發(fā)出兩條指令。在所示的實施例中,雙發(fā)出邏輯在將指令發(fā)出到加載/存儲執(zhí)行單元340和定點執(zhí)行單元350之前,解決加載/存儲和定點指令的任何相關(guān)性問題。但是對于浮點指令和VMX指令,雙發(fā)出邏輯130將指令直接發(fā)出到由VSU發(fā)出邏輯180管理的已分離隊列185。VSU發(fā)出邏輯在將指令發(fā)出到浮點執(zhí)行單元320或VMX執(zhí)行單元330之前,解決浮點或VMX執(zhí)行單元的任何相關(guān)性問題。
在示出的實例中存在4條管線,但是雙發(fā)出邏輯只能在每個周期最多發(fā)出兩條指令。因此,對于給定的周期,示出的某些“指令”將是“無操作”指令。此外,雙發(fā)出邏輯為每條指令設(shè)置“年齡位”屬性,指示哪條指令在隊列135中最先出現(xiàn)。在一個實施例中,當(dāng)在同一指令周期發(fā)出兩條指令時,將最先出現(xiàn)在隊列135中的指令的年齡位設(shè)置為0(“0”,較早),而將另一條指令的年齡位設(shè)置為1(“1”,較新)。當(dāng)決定刷新哪些指令時,特別是在“刷新N+1”情況(在圖5中更詳細地說明)時,跟蹤指令在發(fā)出隊列135中出現(xiàn)的順序是很有幫助的。
在從雙發(fā)出邏輯130發(fā)出指令之前,使用遞減飽和計數(shù)器將它們初始化。使用與處理器的“提交點”對應(yīng)的計數(shù)器來初始化每條指令。例如,如果花費10個指令周期來解決任何有關(guān)指令的未知問題(例如,分支預(yù)測錯誤、高速緩存未命中等),則將計數(shù)器初始化為10。在每一個指令周期中,與每條已發(fā)出指令對應(yīng)的每個計數(shù)器都遞減1。如果指令位于第二隊列(已分離隊列185)中,等待發(fā)出到由輔助發(fā)出邏輯(VSU發(fā)出邏輯180)管理的執(zhí)行單元,或者如果已將指令從第二隊列發(fā)出到執(zhí)行單元管線,則將發(fā)生遞減。
在等待解決相關(guān)性問題時,等待從已分離隊列185發(fā)出的指令可以被停止。雖然指令正在已分離隊列185中等待,但是其計數(shù)器將繼續(xù)遞減。因此,當(dāng)指令最終發(fā)出到執(zhí)行單元時,發(fā)出到浮點執(zhí)行單元的指令的計數(shù)器值可能不同于發(fā)出到VMX執(zhí)行單元的指令的計數(shù)器值。然而,一旦計數(shù)器達到0,它就保持在0并且不再遞減。在示出的實例中,VMX執(zhí)行單元中的5條指令具有達到0的計數(shù)器,而浮點執(zhí)行單元中只有1條指令達到0。
當(dāng)觸發(fā)了刷新時,刷新邏輯380使用計數(shù)器來確定已分離管線(320和330)中的哪些指令將被刷新(無效)以及哪些指令將保留在管線中以便由它們相應(yīng)的執(zhí)行單元來執(zhí)行。非分離管線(340和350)被稱為“參考管線”。雖然與已分離管線類似,可以將計數(shù)器分配給參考管線中的指令,但是在一個實施例中,參考管線中的指令可以只是根據(jù)它們在管線中的位置來被刷新,因為不存在能夠影響指令在這些管線中的順序的中間第二隊列。
圖4是示出了處理“全部刷新”異常的流程圖。刷新指令處理開始于400,隨之判定刷新異常的類型是否是“全部刷新”異常(決策410)。如果刷新異常的類型不是“全部刷新”異常,則決策410分支到“否”分支420,隨之處理其他刷新異常(預(yù)定的過程430,參見圖5和相應(yīng)的文字以了解處理詳細信息)。
另一方面,如果執(zhí)行的刷新的類型是“全部刷新”異常,則決策410分支到“是”分支440,隨后在步驟450,當(dāng)處理在495返回以前,將刷新(無效)所有計數(shù)器大于0的指令。使用來自圖3中發(fā)布的實例的指令,示出了在處理“全部刷新”之前和之后的管線。單元管線320示為具有在其各個級中的8條指令,并且同一單元的管線示為在已處理刷新后無效了除指令B以外的所有指令。同樣地,單元管線330在刷新前包括8條指令,但是在刷新后,計數(shù)器為0的5條指令(指令A(yù)、C、D、E和F)保留在管線中,并且其余指令被刷新(無效)。管線330中只有很少指令被刷新(即,大多數(shù)這些指令具有為0的計數(shù)器)的原因是輔助發(fā)出邏輯(圖3所示的VSU發(fā)出邏輯180)在發(fā)出指令前停止了一條或多條指令。在指令在已分離隊列185中等待的每個周期,它們相應(yīng)的計數(shù)器遞減1。因此,當(dāng)最終從輔助發(fā)出邏輯(VSU發(fā)出邏輯180)發(fā)出指令時,由于解決有關(guān)某些指令的相關(guān)性所需的周期,它們的計數(shù)器不必一定相同。
圖5是示出了處理“刷新N+1”異常的流程圖。處理開始于500并與圖4中示出的過程非常類似。但是在圖5中,處理的是“刷新N+1”異常。判定異常是否是“刷新N+1”異常(決策510)。如果異常不是“刷新N+1”異常,則決策510分支到“否”分支520,隨之處理其他類型的刷新(預(yù)定的過程530,參見圖6和相應(yīng)的文字以了解處理詳細信息)。另一方面,如果刷新類型是“刷新N+1”類型的異常,則決策510分支到“是”分支540,隨后在步驟550,刷新(無效)所有計數(shù)器大于0的指令,但是計數(shù)器值為1的最早指令將保留在管線中(不會被無效),其后處理在595返回。在一個實施例中,發(fā)出邏輯跟蹤發(fā)出指令的順序以便確定哪條指令是計數(shù)器值為1的較早指令。完成此操作的一種方法是將“年齡位”分配給在同一指令周期中發(fā)出的指令。在主發(fā)出隊列135中最先出現(xiàn)的指令被分配為0的年齡位屬性,而其他指令被分配為1的年齡位屬性。
類似于圖4,示出了刷新前(管線320和330)和刷新后(管線570和580)的管線的圖示。額外的指令(指令G)(其是計數(shù)器值為1的最早指令)與指令A(yù)、B、C、D、E和F(全都具有為0的計數(shù)器值)一起保留在管線中。剩余指令均已被無效。
圖6是示出了處理“刷新N+2”異常的流程圖。處理開始于600并與圖4和5中示出的過程非常類似。但是在圖6中,處理的是“刷新N+2”異常。判定異常是否是“刷新N+2”異常(決策610)。如果異常不是“刷新N+2”異常,則決策610分支到“否”分支620,隨之在步驟630處理其他類型的刷新(例如,可以實現(xiàn)諸如“刷新N+3”之類的其他刷新,這取決于從管線刷新命令所需的控制量)。另一方面,如果刷新類型是“刷新N+2”類型的異常,則決策610分支到“是”分支640,隨后在步驟650,刷新(無效)所有計數(shù)器大于1的指令,其后處理在695返回。類似于圖4和5,示出了刷新前(管線320和330)和刷新后(管線670和680)的管線的圖示。每條計數(shù)器為0或1的指令(指令A(yù)到H)保留在管線中,而剩余指令均已被無效。
圖7示出了信息處理系統(tǒng)701,其是能夠執(zhí)行在此說明的計算操作的計算機系統(tǒng)的簡化實例。計算機系統(tǒng)701包括連接到主機總線702的處理器700。二級(L2)高速緩沖存儲器704也連接到主機總線702。主機到PCI橋706連接到主存儲器708(包括高速緩沖存儲器和主存儲器控制功能),并且提供了總線控制以處理PCI總線710、處理器700、L2高速緩存704、主存儲器708和主機總線702之間的傳輸。主存儲器708連接到主機到PCI橋706以及主機總線702。由主處理器(多個)700獨自使用的設(shè)備(如局域網(wǎng)卡730)與PCI總線710相連。服務(wù)處理器接口和ISA訪問通透712提供了PCI總線710和PCI總線714之間的接口。以這種方式,將PCI總線714與PCI總線710隔離。諸如閃速存儲器718之類的設(shè)備被連接到PCI總線714。在一種實現(xiàn)中,閃速存儲器718包括BIOS代碼,所述BIOS代碼結(jié)合了用于各種低級系統(tǒng)功能和系統(tǒng)引導(dǎo)功能的必需的處理器可執(zhí)行代碼。
PCI總線714為由主處理器(多個)700和服務(wù)處理器716共享的各種設(shè)備(包括例如閃速存儲器718)提供了接口。PCI到ISA橋735提供了總線控制以處理PCI總線714和ISA總線740、通用串行總線(USB)功能745、電源管理功能755之間的傳輸,并且可以包括其他未示出的功能元件,例如實時時鐘(RTC)、DMA控制、中斷支持以及系統(tǒng)管理總線支持。非易失性RAM 720連接到ISA總線740。服務(wù)處理器716包括JTAG和I2C總線722以便在初始化步驟期間與處理器(多個)700通信。JTAG/I2C總線722還與L2高速緩存704、主機到PCI橋706和主存儲器708相連,提供了處理器、服務(wù)處理器、L2高速緩存、主機到PCI橋和主存儲器之間的通信路徑。服務(wù)處理器716還可以訪問系統(tǒng)電源資源以便關(guān)閉信息處理設(shè)備701的電源。
外圍設(shè)備和輸入/輸出(I/O)設(shè)備可以被連接到各種接口,例如,連接到ISA總線740的并行接口762、串行接口764、鍵盤接口768和鼠標(biāo)接口770。可替代地,連接到ISA總線740的超級I/O控制器(未示出)可以適合多種I/O設(shè)備。
為了將計算機系統(tǒng)701連接到其他計算機系統(tǒng)以便通過網(wǎng)絡(luò)復(fù)制文件,局域網(wǎng)卡730被連接到PCI總線710。類似地,為了將計算機系統(tǒng)701連接到ISP以便使用電話線連接來與因特網(wǎng)相連,將調(diào)制解調(diào)器775連接到串行接口764和PCI到ISA橋735。
雖然圖7中描述的計算機系統(tǒng)能夠執(zhí)行本文中說明的過程,但是此計算機系統(tǒng)只是計算機系統(tǒng)的一個實例。本領(lǐng)域的技術(shù)人員將理解,許多其他計算機系統(tǒng)設(shè)計也能夠執(zhí)行本文中說明的過程。
圖8是能夠?qū)崿F(xiàn)本發(fā)明的計算設(shè)備的方框圖。圖8所示的體系結(jié)構(gòu)包括共享公共存儲器和公共總線的異構(gòu)處理器。寬帶引擎(BE)800通過元件互連單元(EIU)810發(fā)送信息到外部設(shè)備和從外部設(shè)備接收信息,并且使用元件互連總線820將信息分發(fā)到控制平面810和數(shù)據(jù)平面840??刂破矫?10管理BE 800并將工作分發(fā)到數(shù)據(jù)平面840。
此外,元件互連總線(EIU)860將讀寫請求提供給存儲器接口控制器(MIC)880。存儲器接口控制器880將所述請求傳送到存儲器接口890,存儲器接口890依次與外部存儲器通信。
控制平面810包括運行操作系統(tǒng)(OS)825的電源處理元件(PPE)820。例如,PPE 820可以是嵌入BE 800的Power PC核心并且OS 825可以是Linux操作系統(tǒng)。PPE 820管理用于BE 800的公共存儲器映射表。存儲器映射表與包括在BE 800中的存儲單元(例如,L2存儲器830以及包括在數(shù)據(jù)平面840中的非專用存儲器)對應(yīng)。
數(shù)據(jù)平面840包括協(xié)處理元件(SPE)845、850和855。每個SPE都用于處理數(shù)據(jù)信息并且每個SPE都具有不同的指令集。例如,BE 800可以用在無線通信系統(tǒng)中并且每個SPE可以負(fù)責(zé)單獨的處理任務(wù),例如,調(diào)制、芯片速率處理、解碼以及網(wǎng)絡(luò)接口連接。在另一個實例中,每個SPE可以具有相同的指令集并且可以并行使用以執(zhí)行從并行處理獲益的操作。每個SPE都包括協(xié)執(zhí)行單元(SPU),其是諸如數(shù)字信號處理器、微控制器、微處理器或者這些核心的組合之類的處理核心。
SPE 845、850和855連接到元件互連總線(EIB)820,元件互連總線820在控制平面810、數(shù)據(jù)平面840、EIU 110和MIC 880之間傳遞信息。EIB 820是片上結(jié)合的多處理器總線。EIU 870包括靈活的輸入-輸出邏輯,它根據(jù)連接到BE 800的外圍設(shè)備來動態(tài)地將接口引腳分配到輸入-輸出控制器。
雖然圖8中描述的寬帶引擎能夠執(zhí)行本文中說明的過程,但是此設(shè)計只是計算機系統(tǒng)設(shè)計的一個實例。本領(lǐng)域的技術(shù)人員將理解,許多其他計算機系統(tǒng)設(shè)計也能夠執(zhí)行本文中說明的過程。
本發(fā)明的一種優(yōu)選實現(xiàn)是客戶機應(yīng)用,即,可以例如駐留在計算機的隨機存取存儲器內(nèi)的代碼模塊中的一組指令(程序代碼)。直到被所述計算機所請求為止,該組指令可以存儲在其他計算機存儲器中,例如,存儲在硬盤驅(qū)動器中,或存儲在諸如光盤(以最終用于CD ROM中)或軟盤(以最終用于軟盤驅(qū)動器中)之類的可移動存儲器中,或通過因特網(wǎng)或其他計算機網(wǎng)絡(luò)來下載。因此,本發(fā)明可以被實現(xiàn)為用于在計算機中使用的計算機程序產(chǎn)品。此外,盡管所描述的各種方法可在由軟件有選擇地激活或重新配置的通用計算機中方便地實現(xiàn),但是本領(lǐng)域的技術(shù)人員還將認(rèn)識到,此類方法可以在硬件、固件或在被構(gòu)造成執(zhí)行所需的方法步驟的更為專用的裝置中實現(xiàn)。
雖然示出并描述了本發(fā)明的特定實施例,但是對本領(lǐng)域的技術(shù)人員顯而易見的是,根據(jù)此處的教導(dǎo),可以在不偏離本發(fā)明及其更廣泛的方面的情況下做出更改和修改。因此,所附權(quán)利要求旨在在其范圍內(nèi)包含所有在本發(fā)明的真實精神和范圍之內(nèi)的此類更改和修改。此外,可以理解,本發(fā)明僅由所附權(quán)利要求來限定。本領(lǐng)域的技術(shù)人員將理解,如果特定數(shù)量的引入權(quán)利要求要素是預(yù)期的,則此意圖在該權(quán)利要求中將被明確地重申,并且沒有此重申則此限制不存在。對于非限定性實例(作為對理解的幫助),以下所附權(quán)利要求包含使用引導(dǎo)短語“至少一個”和“一個或多個”來引入權(quán)利要求要素。但是,此類短語的使用不應(yīng)被解釋為暗示由不定冠詞“a”或“an”引入的權(quán)利要求要素將任何包含此類引入權(quán)利要求要素的特定權(quán)利要求限制為僅包含一個此類要素的發(fā)明,即使當(dāng)同一權(quán)利要求包括引導(dǎo)短語“一個或多個”或“至少一個”以及不定冠詞“a”或“an”時;這同樣適用于定冠詞在權(quán)利要求中的使用。
權(quán)利要求
1.一種計算機實現(xiàn)的方法,所述方法包括當(dāng)將多個指令從第一發(fā)出隊列發(fā)出到多個單元時,將分配給所述多個指令的多個計數(shù)器中的每個計數(shù)器初始化為初始值,其中所述單元中的一個單元是第二發(fā)出隊列;將發(fā)出到所述第二發(fā)出隊列的所述多個指令發(fā)出到多個執(zhí)行單元管線,所述執(zhí)行單元管線中的每個執(zhí)行單元管線與執(zhí)行單元相連;以及在所述初始化后,在每個指令周期期間改變與所述指令對應(yīng)的所述計數(shù)器,直到所述指令由所述執(zhí)行單元中的一個執(zhí)行單元執(zhí)行為止。
2.根據(jù)權(quán)利要求1所述的方法,還包括標(biāo)識與已被發(fā)出到所述多個單元中的一個單元的所述指令中的一個指令對應(yīng)的異常;以及響應(yīng)于所述異常,根據(jù)分配給所述指令的所述計數(shù)器來刷新發(fā)出到所述第二發(fā)出隊列的指令。
3.根據(jù)權(quán)利要求2所述的方法,其中所述初始值與提交點對應(yīng),所述方法還包括在每個指令周期期間將所述計數(shù)器遞減1。
4.根據(jù)權(quán)利要求3所述的方法,其中所述遞減包括遞減第一和第二計數(shù)器直到它們達到0為止。
5.根據(jù)權(quán)利要求4所述的方法,其中所述刷新還包括從所述執(zhí)行單元管線刷新計數(shù)器值大于0的指令。
6.根據(jù)權(quán)利要求4所述的方法,其中所述異常是“刷新N+1”異常,所述方法還包括從所述執(zhí)行單元管線刷新計數(shù)器值大于1的指令;讀取與計數(shù)器值等于1的指令關(guān)聯(lián)的年齡屬性;以及根據(jù)所述指令的年齡屬性從所述執(zhí)行單元管線刷新一個或多個指令。
7.根據(jù)權(quán)利要求1所述的方法,其中從包括加載/存儲單元、定點單元、分支異常單元、矢量多媒體擴展加載/存儲單元、矢量多媒體擴展算術(shù)邏輯單元、浮點算術(shù)邏輯單元以及浮點加載/存儲單元的組來選擇所述執(zhí)行單元。
8.根據(jù)權(quán)利要求1所述的方法,還包括在每個指令周期期間從所述第一發(fā)出隊列最多發(fā)出兩條指令,其中對于從所述第一發(fā)出隊列發(fā)出的每條指令,所述初始值是相同的;以及為從所述第一發(fā)出隊列發(fā)出的每條指令設(shè)置年齡屬性,其中所述年齡屬性指示了在存儲在所述第一發(fā)出隊列中的指令流內(nèi)所述指令彼此的相對位置。
9.一種處理器,所述處理器包括第一發(fā)出隊列電路,所述第一發(fā)出隊列電路用于從第一發(fā)出隊列將指令雙發(fā)出到多個單元,其中所述單元中的一個單元是由第二發(fā)出隊列電路管理的第二發(fā)出隊列;多個執(zhí)行單元管線,所述多個執(zhí)行單元管線與所述第二發(fā)出隊列電路相連,所述執(zhí)行單元管線中的每個執(zhí)行單元管線都與執(zhí)行單元相連;多條指令,所述多條指令在所述多個執(zhí)行單元管線中的每個執(zhí)行單元管線中;多個計數(shù)器,其中每個計數(shù)器都由所述第一發(fā)出隊列電路初始化為初始值;以及計數(shù)器改變電路,所述計數(shù)器改變電路在每個指令周期期間改變每個指令的計數(shù)器直到所述執(zhí)行單元中的一個執(zhí)行單元執(zhí)行所述指令為止。
10.根據(jù)權(quán)利要求9所述的處理器,還包括異常邏輯,所述異常邏輯根據(jù)選定指令入口的計數(shù)器中的值從所述選定指令入口來刷新指令。
11.根據(jù)權(quán)利要求10所述的處理器,其中所述計數(shù)器改變電路還包括遞減邏輯,所述遞減邏輯在每個指令周期期間遞減其相應(yīng)指令仍在所述管線中的計數(shù)器值中的每個計數(shù)器值。
12.根據(jù)權(quán)利要求11所述的處理器,其中所述遞減邏輯將所述計數(shù)器值遞減1直到它們達到0值為止,所述處理器還包括比較邏輯,所述比較邏輯將所述計數(shù)器值中的每個計數(shù)器值與異常值進行比較;以及刷新邏輯,所述刷新邏輯從所述管線刷新計數(shù)器值大于所述異常值的指令。
13.根據(jù)權(quán)利要求12所述的處理器,其中所述異常值為0。
14.根據(jù)權(quán)利要求12所述的處理器,其中所述異常值為1。
15.一種信息處理系統(tǒng),所述信息處理系統(tǒng)包括同步多線程處理器,所述同步多線程處理器包括第一發(fā)出隊列電路,所述第一發(fā)出隊列電路用于從第一發(fā)出隊列將指令雙發(fā)出到多個單元,其中所述單元中的一個單元是由第二發(fā)出隊列電路管理的第二發(fā)出隊列;多個執(zhí)行單元管線,所述多個執(zhí)行單元管線與所述第二發(fā)出隊列電路相連,所述執(zhí)行單元管線中的每個執(zhí)行單元管線都與執(zhí)行單元相連;多條指令,所述多條指令在所述多個執(zhí)行單元管線中的每個執(zhí)行單元管線中;多個計數(shù)器,其中每個計數(shù)器都由所述第一發(fā)出隊列電路初始化為初始值;以及計數(shù)器改變電路,所述計數(shù)器改變電路在每個指令周期期間改變每個指令的計數(shù)器直到所述執(zhí)行單元中的一個執(zhí)行單元執(zhí)行所述指令為止;可由所述處理器訪問的存儲器;適合于將所述信息處理系統(tǒng)連接到計算機網(wǎng)絡(luò)的網(wǎng)絡(luò)接口;以及可由所述處理器訪問的非易失性存儲設(shè)備。
16.根據(jù)權(quán)利要求15所述的信息處理系統(tǒng),其中所述處理器還包括異常邏輯,所述異常邏輯根據(jù)選定指令入口的計數(shù)器中的值從所述選定指令入口來刷新指令。
17.根據(jù)權(quán)利要求16所述的信息處理系統(tǒng),其中所述計數(shù)器改變電路還包括遞減邏輯,所述遞減邏輯在每個指令周期期間遞減其相應(yīng)指令仍在所述管線中的計數(shù)器值中的每個計數(shù)器值。
18.根據(jù)權(quán)利要求17所述的信息處理系統(tǒng),其中所述遞減邏輯將所述計數(shù)器值遞減1直到它們達到0值為止,所述處理器還包括比較邏輯,所述比較邏輯將所述計數(shù)器值中的每個計數(shù)器值與異常值進行比較;以及刷新邏輯,所述刷新邏輯從所述管線刷新計數(shù)器值大于所述異常值的指令。
19.根據(jù)權(quán)利要求18所述的信息處理系統(tǒng),其中所述異常值為0。
20.根據(jù)權(quán)利要求18所述的信息處理系統(tǒng),其中所述異常值為1。
全文摘要
本發(fā)明提供了一種用于使用計數(shù)器來跟蹤已發(fā)出指令的順序的系統(tǒng)和方法。在一個實施例中,使用了飽和遞減計數(shù)器。所述計數(shù)器被初始化為與處理器的提交點對應(yīng)的值。從第一發(fā)出隊列將指令發(fā)出到一個或多個執(zhí)行單元和一個或多個第二發(fā)出隊列。在由所述第一發(fā)出隊列發(fā)出后,在每個指令周期期間遞減與每條指令關(guān)聯(lián)的計數(shù)器,直到所述執(zhí)行單元中的一個執(zhí)行單元執(zhí)行所述指令為止。一旦所述計數(shù)器達到0,所述執(zhí)行單元將完成所述指令。如果出現(xiàn)刷新條件,將保留(即,不刷新或無效)計數(shù)器等于0的指令,而所述管線中的其他指令將根據(jù)它們的計數(shù)器值被無效。
文檔編號G06F9/38GK1945525SQ200610100259
公開日2007年4月11日 申請日期2006年7月5日 優(yōu)先權(quán)日2005年10月7日
發(fā)明者C·M·阿伯內(nèi)西, J·J·德門特, R·哈爾, R·A·菲洛維爾, D·希比 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
南陵县| 青铜峡市| 老河口市| 三门县| 福清市| 汾阳市| 益阳市| 静海县| 东阳市| 浠水县| 丰镇市| 句容市| 资兴市| 光山县| 黔江区| 南涧| 旺苍县| 德保县| 含山县| 三明市| 炉霍县| 南部县| 宜州市| 晋城| 尤溪县| 泰来县| 罗源县| 铁岭市| 柳江县| 抚宁县| 乐山市| 清镇市| 南昌县| 肃宁县| 牡丹江市| 即墨市| 嘉义县| 南溪县| 龙门县| 察雅县| 太白县|