亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

擁有具有分布式結(jié)構(gòu)的動態(tài)分派窗口的虛擬加載存儲隊列的制作方法

文檔序號:8269346閱讀:434來源:國知局
擁有具有分布式結(jié)構(gòu)的動態(tài)分派窗口的虛擬加載存儲隊列的制作方法
【專利說明】擁有具有分布式結(jié)構(gòu)的動態(tài)分派窗口的虛擬加載存儲隊列
[0001]本申請要求2012年6月15日由Mohammad A.Abdallah提交的題為“A VIRTUALLOAD STORE QUEUE HAVING A DYNAMIC DISPATCH WINDOW WITH A DISTRIBUTED STRUCTURE”的共同待決共同轉(zhuǎn)讓的美國臨時專利申請序號61/660,548的權(quán)益,并且該申請被整體地并入到本文中。
技術(shù)領(lǐng)域
[0002]本發(fā)明總體涉及數(shù)字計算機(jī)系統(tǒng),更具體地涉及用于選擇指令(包括指令序列)的系統(tǒng)和方法。
【背景技術(shù)】
[0003]要求處理器來處理相關(guān)或完全獨(dú)立的多個任務(wù)。此類處理器的內(nèi)部狀態(tài)通常由在程序執(zhí)行的每個特定時刻可能保持不同的值的寄存器組成。在程序執(zhí)行的每個時刻,將內(nèi)部狀態(tài)圖像稱為處理器的架構(gòu)狀態(tài)。
[0004]當(dāng)架構(gòu)代碼執(zhí)行切換成運(yùn)行另一功能(例如,另一線程、進(jìn)程或程序)時,然后必須保存機(jī)器/處理器的狀態(tài),使得新功能可以利用內(nèi)部寄存器以構(gòu)建其新狀態(tài)。一旦新功能已終止,則可以丟棄其狀態(tài),并且先前情境的狀態(tài)將被恢復(fù)且該執(zhí)行又繼續(xù)。此類切換過程稱為情境切換,并且通常包括10個或數(shù)百個循環(huán),尤其是在采用大量寄存器(例如,64、
128,256)和/或亂序執(zhí)行的現(xiàn)代架構(gòu)的情況下。
[0005]在線程感知硬件架構(gòu)中,硬件支持用于有限數(shù)目的硬件支持線程的多個情境狀態(tài)是正常的。在這種情況下,硬件復(fù)制用于每個所支持線程的所有架構(gòu)狀態(tài)元素。這消除了在執(zhí)行新線程時的情境切換的需要。然而,這仍具有多個缺點(diǎn),即復(fù)制用于用硬件中所支持的每個附加線程的所有架構(gòu)狀態(tài)元素(即,寄存器)的面積、功率和復(fù)雜性。另外,如果軟件線程的數(shù)目超過明確支持的硬件線程的數(shù)目,則仍必須執(zhí)行情境切換。
[0006]這變得常見,因為在要求大量線程的細(xì)粒度基礎(chǔ)上需要并行性。具有復(fù)制情境狀態(tài)硬件存儲的硬件線程感知架構(gòu)無助于非線程軟件代碼,并且僅僅減少了用于被線程化的軟件的情境切換的次數(shù)。然而,那些線程通常是針對粗粒并行性而構(gòu)造的,并且導(dǎo)致用于發(fā)起和同步、離開細(xì)粒并行性的沉重軟件開銷,諸如函數(shù)調(diào)用和回路并行執(zhí)行,而沒有高效的線程化發(fā)起/自動生成。此類所述開銷伴隨著針對非明確/容易并行化/線程化軟件代碼而使用現(xiàn)有技術(shù)編譯程序或用戶并行化技術(shù)進(jìn)行此類代碼的自動并行化的困難。

【發(fā)明內(nèi)容】

[0007]在一個實施例中,將本發(fā)明實現(xiàn)為一種亂序處理器。該處理器包括分布式加載隊列和分布式存儲隊列,其在允許對加載和存儲的跨多個核心和存儲器片段的亂序分派的同時保持單個程序連續(xù)語義;其中該處理器超過加載/存儲隊列的實際物理大小限制來分配除加載和存儲之外的其他指令;并且其中即使居間的加載或存儲在加載存儲隊列中不具有空間,也能夠分派和執(zhí)行其他指令。
[0008]前述是概要且因此必要地包含細(xì)節(jié)的簡化、一般化以及省略;因此,本領(lǐng)域的技術(shù)人員將認(rèn)識到的是該概要僅僅是說明性的且并不意圖以任何方式是限制性的。單獨(dú)地由權(quán)利要求定義的本發(fā)明的其他方面、發(fā)明特征以及優(yōu)點(diǎn)在下面闡述的非限制性詳細(xì)描述中將變得顯而易見。
【附圖說明】
[0009]在附圖中以示例的方式而不是以限制的方式舉例說明本發(fā)明,并且在附圖中相同的附圖標(biāo)記指示類似元件。
[0010]圖1示出了根據(jù)本發(fā)明的一個實施例的加載隊列和存儲隊列。
[0011]圖2示出了根據(jù)本發(fā)明的一個實施例的加載和存儲指令分離的第一圖。
[0012]圖3示出了根據(jù)本發(fā)明的一個實施例的加載和存儲指令分離的第二圖。
[0013]圖4示出了根據(jù)本發(fā)明的一個實施例的過程的步驟的流程圖,其中圖示出用于實現(xiàn)從由加載存儲重新排序和優(yōu)化所引發(fā)的推測性轉(zhuǎn)發(fā)缺失預(yù)測/錯誤中恢復(fù)的規(guī)則。
[0014]圖5示出了圖示出根據(jù)本發(fā)明的一個實施例的用處理器的加載隊列和存儲隊列資源來實現(xiàn)過程300的規(guī)則的方式的圖。
[0015]圖6示出了圖示出根據(jù)本發(fā)明的一個實施例的用處理器的加載隊列和存儲隊列資源來實現(xiàn)過程300的規(guī)則的方式的另一圖。
[0016]圖7示出了圖示出根據(jù)本發(fā)明的一個實施例的用處理器的加載隊列和存儲隊列資源來實現(xiàn)過程300的規(guī)則的方式的另一圖。
[0017]圖8示出了根據(jù)本發(fā)明的一個實施例的其中在加載之后分派存儲的分派功能的概述的過程的流程圖。
[0018]圖9示出了根據(jù)本發(fā)明的一個實施例的其中在存儲之后分派存儲的分派功能的概述的過程的流程圖。
[0019]圖10示出了根據(jù)本發(fā)明的一個實施例的統(tǒng)一加載隊列的圖。
[0020]圖11示出了示出根據(jù)本發(fā)明的一個實施例的滑動加載分派窗口的統(tǒng)一加載隊列。
[0021]圖12示出了根據(jù)本發(fā)明的一個實施例的分布式加載隊列。
[0022]圖13示出了根據(jù)本發(fā)明的一個實施例的具有按序連續(xù)性的分布式加載隊列。
[0023]圖14示出了根據(jù)本發(fā)明的一個實施例的用于多核處理器的分段存儲器子系統(tǒng)的圖。
[0024]圖15示出了如何通過本發(fā)明的實施例來處理加載和存儲的圖。
[0025]圖16示出了根據(jù)本發(fā)明的一個實施例的存儲過濾算法的圖。
[0026]圖17示出了根據(jù)本發(fā)明的一個實施例的在組成按序從存儲器進(jìn)行讀取的加載的存儲器一致性模型中具有亂序加載的信號量實現(xiàn)方式。
[0027]圖18示出了根據(jù)本發(fā)明的一個實施例的到通過使用基于鎖的模型和基于事務(wù)的模型兩者而組成按序的用于存儲器的加載讀取的存儲器一致性模型中的亂序加載。
[0028]圖19示出了根據(jù)本發(fā)明的一個實施例的多核分段存儲器子系統(tǒng)的多個核心。
[0029]圖20示出了根據(jù)本發(fā)明的一個實施例的訪問統(tǒng)一存儲隊列的異步核心的圖,其中存儲可以基于存儲資歷而從任一線程獲得。
[0030]圖21示出了描繪根據(jù)本發(fā)明的一個實施例的其中存儲相比于其他線程中的對應(yīng)存儲而言具有資歷的功能的圖。
[0031]圖22示出了根據(jù)本發(fā)明的一個實施例的非消歧亂序加載存儲隊列退出實現(xiàn)方式。
[0032]圖23示出了根據(jù)本發(fā)明的一個實施例的非消歧亂序加載存儲隊列重新排序?qū)崿F(xiàn)方式的重新排序?qū)崿F(xiàn)方式。
[0033]圖24示出了根據(jù)本發(fā)明的一個實施例的指令序列(例如,蹤跡)重新排序的推測性執(zhí)行實現(xiàn)方式。
[0034]圖25示出了根據(jù)本發(fā)明的一個實施例的示例性微處理器管線的圖。
【具體實施方式】
[0035]雖然已結(jié)合一個實施例描述了本發(fā)明,但本發(fā)明并不意圖局限于本文中所闡述的特定形式。相反地,其意圖涵蓋可以適當(dāng)?shù)匕ㄔ谟伤綑?quán)利要求定義的本發(fā)明的范圍內(nèi)的此類替換、修改以及等同物。
[0036]在以下詳細(xì)描述中,已闡述了許多特定細(xì)節(jié),諸如特定方法順序、結(jié)構(gòu)、元件以及連接。然而應(yīng)理解的是不需要利用這些及其他特定細(xì)節(jié)來實施本發(fā)明的實施例。在其他情況下,已省略眾所周知的結(jié)構(gòu)、元件或連接或未特別詳細(xì)地描述以避免不必要地使本描述含糊。
[0037]在本說明書內(nèi)對“一個實施例”或“實施例”的引用意圖指示在本發(fā)明的至少一個實施例中包括結(jié)合該實施例所述的特定特征、結(jié)構(gòu)或特性。短語“在一個實施例中”在本說明書內(nèi)的各種位置上的出現(xiàn)并不一定全部參考同一實施例,也不是其他實施例的互斥的單獨(dú)或替換實施例。此外,描述了某些實施例可展示出而其他的沒有的各種特征。同樣地,描述了對于某些實施例而言可能是要求但其他實施例并非如此的各種要求。
[0038]隨后的詳細(xì)描述的某些部分是在對計算機(jī)存儲器內(nèi)的數(shù)據(jù)位的操作的程序、步驟、邏輯塊、處理及其他符號表示方面提出的。這些算法描述和表示是數(shù)據(jù)處理領(lǐng)域的技術(shù)人員用來最有效地向本領(lǐng)域的其他人傳達(dá)其工作的實質(zhì)的手段。程序、計算機(jī)執(zhí)行步驟、邏輯塊、過程等在這里且一般地被設(shè)想為是導(dǎo)致期望結(jié)果的步驟或指令的自相一致序列。該步驟是要求物理量的物理操作的那些。通常但不一定,這些量采取計算機(jī)可讀存儲介質(zhì)的電或磁信號的形式,并且能夠在計算機(jī)系統(tǒng)中被存儲、傳輸、組合、比較以及操縱。主要由于一般使用的原因,已證明將這些信號稱為位、值、元素、符號、字符、項、數(shù)字等有時是方便的。
[0039]然而,應(yīng)記住的是所有這些和類似術(shù)語將與適當(dāng)?shù)奈锢砹肯嚓P(guān)聯(lián)且僅僅是應(yīng)用于這些量的方便標(biāo)記。如從以下討論顯而易見的那樣,除非另外具體地說,應(yīng)認(rèn)識到的是遍及本發(fā)明,利用諸如“處理”或“訪問”或“寫”或“存儲”或“復(fù)制”等等術(shù)語的討論指的是計算機(jī)系統(tǒng)或類似電子計算設(shè)備的動作或過程,其對在計算機(jī)系統(tǒng)的寄存器和存儲器及其他計算機(jī)可讀介質(zhì)內(nèi)表示為物理(例如,電子)量的數(shù)據(jù)進(jìn)行操縱并變換成在計算機(jī)系統(tǒng)存儲器或寄存器或其他此類信息存儲、傳輸或顯示設(shè)備內(nèi)同樣地表示為物理量的其他數(shù)據(jù)。
[0040]本發(fā)明的實施例實現(xiàn)了亂序指令調(diào)度過程,其中允許輸入指令序列內(nèi)的指令在處理器資源可用于執(zhí)行它們時就立即亂序發(fā)出。本發(fā)明的實施例能夠確保外部代理見到指令按序執(zhí)行(例如,存儲器一致性規(guī)則/模型)。確保指令對外部代理可見地按序執(zhí)行,從而確保無錯誤程序執(zhí)行。本發(fā)明的實施例確保處理器的存儲器分級結(jié)構(gòu)(例如,LI高速緩存、L2高速緩存、系統(tǒng)存儲器等)見到指令的一致按序執(zhí)行。
[0041]圖1示出了根據(jù)本發(fā)明的一個實施例的加載隊列和存儲隊列。圖1還示出了輸入指令序列。如上所述,處理器的存儲器分級結(jié)構(gòu)(例如,LI高速緩存、L2高速緩存、系統(tǒng)存儲器等)見到指令的一致性按序執(zhí)行。其后常常稱為加載/存儲隊列的加載隊列和存儲隊列可以用來保持按序執(zhí)行的語義。
[0042]另外,加載和存儲的亂序執(zhí)行引發(fā)推測性執(zhí)行。當(dāng)執(zhí)行推測性執(zhí)行時,機(jī)器需要識別推測性錯誤。在圖1的實施例中,加載/存儲隊列提供了一種用于實現(xiàn)從由加載存儲重新排序和優(yōu)化引發(fā)的推測性轉(zhuǎn)發(fā)或缺失預(yù)測/錯誤中恢復(fù)的系統(tǒng)。加載/存儲隊列包括允許從作為轉(zhuǎn)發(fā)、分支和錯誤的結(jié)果而由加載存儲重新排序/優(yōu)化引發(fā)的推測性錯誤中恢復(fù)的硬件支持。為了允許機(jī)器從推測性錯誤中恢復(fù),將推測性執(zhí)行的結(jié)果保持在加載隊列和存儲隊列中。加載隊列和存儲隊列保持推測性執(zhí)行的結(jié)果直至可以修正錯誤且可以使存儲結(jié)果退出(retire)至存儲器為止。加載隊列和存儲隊列的推測性執(zhí)行內(nèi)容對于外部代理而言是不可見的。相對于可見性,存儲需要按序退出至存儲器。
[0043]圖2示出了根據(jù)本發(fā)明的一個實施例的加載和存儲指令分離的第一圖。本發(fā)明的一個特征是這樣的事實,即加載被分離成兩個宏指令,第一個進(jìn)行地址計算并取讀到臨時位置(加載存儲隊列),并且第二個是存儲器地址內(nèi)容(數(shù)據(jù))到寄存器或ALU目的地的加載。應(yīng)注意的是雖然在將加載和存儲指令分離成兩個相應(yīng)宏指令并將其重新排序的情境內(nèi)描述了本發(fā)明的實施例,但可以通過在微代碼情境內(nèi)將加載和存儲指令分離成兩個相應(yīng)微指令并將其重新排序來實現(xiàn)該方法和系統(tǒng)。
[0044]該功能對于存儲而言是相同的。存儲也被分離成兩個宏指令。第一指令是存儲地址和取讀,第二指令是該地址處的數(shù)據(jù)的存儲。存儲和兩個指令的分離遵循與下面針對加載所述的相同規(guī)則。
[0045]加載到兩個指令的分離允許運(yùn)行時間優(yōu)化器在給定指令序列內(nèi)早得多地調(diào)度地址計算和取讀指令。這允許通過將數(shù)據(jù)預(yù)取讀到與高速緩存分級結(jié)構(gòu)分離的臨時緩沖器中而更容易地從存儲器缺失恢復(fù)。使用臨時緩沖器以便保證關(guān)于LA/SA和LD/SD之間的一一對應(yīng)的經(jīng)預(yù)取讀的數(shù)據(jù)的可用性。如果存在與處于加載地址與加載數(shù)據(jù)之間的窗口中的在先存儲的別名使用(例如,如果從先前的存儲檢測到轉(zhuǎn)發(fā)情況
當(dāng)前第1頁1 2 3 4 5 6 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1