TW446912B - Methods and apparatus for reordering load operations in a computer processing system - Google Patents
Methods and apparatus for reordering load operations in a computer processing system Download PDFInfo
- Publication number
- TW446912B TW446912B TW088122701A TW88122701A TW446912B TW 446912 B TW446912 B TW 446912B TW 088122701 A TW088122701 A TW 088122701A TW 88122701 A TW88122701 A TW 88122701A TW 446912 B TW446912 B TW 446912B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- instructions
- order
- address
- load
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 88
- 238000012545 processing Methods 0.000 title claims abstract description 35
- 238000012360 testing method Methods 0.000 claims description 42
- 230000008569 process Effects 0.000 claims description 16
- 230000002452 interceptive effect Effects 0.000 claims description 5
- 239000000463 material Substances 0.000 claims description 4
- 238000012546 transfer Methods 0.000 claims description 3
- 230000003068 static effect Effects 0.000 description 24
- 230000008707 rearrangement Effects 0.000 description 19
- 238000013461 design Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 13
- 238000001514 detection method Methods 0.000 description 10
- 238000013507 mapping Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000001419 dependent effect Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 101150050673 CHK1 gene Proteins 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000011160 research Methods 0.000 description 3
- 238000012552 review Methods 0.000 description 3
- 241000196324 Embryophyta Species 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000002513 implantation Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 239000002023 wood Substances 0.000 description 2
- SEPPVOUBHWNCAW-FNORWQNLSA-N (E)-4-oxonon-2-enal Chemical compound CCCCCC(=O)\C=C\C=O SEPPVOUBHWNCAW-FNORWQNLSA-N 0.000 description 1
- LLBZPESJRQGYMB-UHFFFAOYSA-N 4-one Natural products O1C(C(=O)CC)CC(C)C11C2(C)CCC(C3(C)C(C(C)(CO)C(OC4C(C(O)C(O)C(COC5C(C(O)C(O)CO5)OC5C(C(OC6C(C(O)C(O)C(CO)O6)O)C(O)C(CO)O5)OC5C(C(O)C(O)C(C)O5)O)O4)O)CC3)CC3)=C3C2(C)CC1 LLBZPESJRQGYMB-UHFFFAOYSA-N 0.000 description 1
- 241000282326 Felis catus Species 0.000 description 1
- 101100518501 Mus musculus Spp1 gene Proteins 0.000 description 1
- 235000006040 Prunus persica var persica Nutrition 0.000 description 1
- 240000006413 Prunus persica var. persica Species 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000003796 beauty Effects 0.000 description 1
- 229910052797 bismuth Inorganic materials 0.000 description 1
- JCXGWMGPZLAOME-UHFFFAOYSA-N bismuth atom Chemical compound [Bi] JCXGWMGPZLAOME-UHFFFAOYSA-N 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000035936 sexual power Effects 0.000 description 1
- 235000015170 shellfish Nutrition 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Description
4469 12 :五、發明說明π) 發明背景 1.技述範疇 | 本發明概括地說明電腦處理系統;且更詳盡地說,本發 明係說明用以在一個電腦程式十重排載入操作之方法和裝 丨置。本發明適宜"重排操作-靜態重排(當產生該程式時)和 :μ重排操作-動態重排(當執行時)_'。 丨2,背景說明 ! 同時代的高性能處理器係依賴超純量、超管線法和/或 ;極長的指令字元(VLIW)的技藝,用以在程式中利用指令等 級平行(即用以一次執行一個以上的指令)。就大體而論, 該等包含多個功能單元、執行一個循序指令流的處理器, 能夠在每一個循環中從記憶體中擷取一個以上的指令,且 能夠依照資源的依存性和有效性、在每一個循環t分配一 個以上的指令執行之。 ; 藉使用該不依序執行以增大指令的總數(其中該處理器 |從該等指令中選取在一個指定點上及時被分配的指令)。 i不依序執行為一種技藝,藉該技藝將一個循序指令流中的 該等操作重排,以便早一點執行後來出現的操作(如該等 !後來出現的操作其所需的該等資源為閒置的時)。如是, :不依序執行藉利用該等多個功能單元的有效性和利用在其 它狀態下為閒置的資源,以減少一個程式其全面的執行時 間。重排該等操作的執行要求重排該等操作所產生的該等 :結果,以便該程式的功能行為、和依該等指令其原始的循 i 1序順序執行該等指令時所獲得的功能行為相同。 五、發明說明(2) 在記憶體相關的操作之事例中,一個記憶體載入操作從 記憶體中讀取一個資料項,並將該資料項載入一個處理器 暫存器中,並經常啟始一個視該載入的資料項而定的操作 序列。如是,除了利用閒置的資源之外,該等早期(不依 序)啟始的記憶體載入操作可將延遲隱藏在存取的記憶體 中,包括可能的快取記憶體未得到。 就大體而論,有兩種基本的方法履行不依序執行和重排 的結果:動態重排和靜態重排。在動態重排中,於執行時 分析該等指令,並在硬體中重排該等指令和結果。在靜態 重排中,當產生該程式時,一個編譯程式/程式師分析和 重排該等指令、及該等指令產生的該等結果,如是,藉軟 體完成達到該等重排的工作。可聯合履行該等兩種方法。 雖然已執行重大的研究支援不依序執行(概括地說係支 援不依序執行,但更明確地說係''在記憶體操作之間”支 援),但該研究最初係專注在單處理器的執行上。在經過 一段時期之後,該研究已集中在"一個單一指令流(設計成 在一個單一處理器上執行的指令流)中、載入和(同步的) 儲存操作之間的排序”。本發明討論非同步記憶體參照的 問題(典型地在多元處理環境中發現的問題),及該等非同 步記憶體參照對重排多個讀取操作(讀取一個單一的記憶 體單元)的影響。雖然該等轉換(即重排)在一個嚴格的單 處理器環境中為安全的,但多處理器環境卻陳述補充的考 慮事項,像是例如”可能正由另一個處理器、以一個不同 未知的指令流執行寫入”。
第8頁 ΛΛ69 ^ 2 I五、發明說明(3) i
| I 為了實現程式可預知和可重複的計算,於L.Lamport所 i寫的文章"如何使一個多處理器正確地執行多元處理程式 | :電子電機工程師協會(IEEE)電腦記錄,C-28(9), :690-91頁,1979年9月)内、說明’循序式一致’的一個需 |求°如”該任何執行的結果係和如依某種循序順序執行該 等所有處理器的操作相同,且每一個個別處理器的該等操 * 作係以其程式指定的該順序出現在該序列中”,則該 | <« 丨Lamport所撰寫的文章即將一個多處理器系統定義成循序 式一致的。就靜態的臆測執行而言,該原始邏輯程式文字 的順序(而非該重排的程式文字)為可信的,且該編譯程式i i和硬體履行必須合作以產生一個和該原始順序相當的執 :~ i行。 為了獲知完全的性能、同時簡化一個系統中多個處理器 之間的一致協定’在該上述嚴格地循序式一致順序上作一 些放寬係可能的。該等可允許的重排型態係視一個特殊履 行所保證的該記憶體一致模型而定的。於S. A d v e和 K.Gharachorloo所寫的文章"共享的記憶體一致模型:一 個教學程式M (得克薩斯州休斯頓,R i ce大學電子和電腦工 程糸"技術報告9 5 1 2 ’ 1 9 9 5年9月)内、對目前使用的—致 模型和建議的一致模型的一個全面觀點、及它們的特徵提 _ 出說明。 該等所有放寬的模型有一個基本的需求--寫入串列化以 實現記憶體一致,即以某種順序將所有寫至該相同位置上 :的寫入串列化1且對任何處理器而言、均以該順序執行該 ;’
第9頁 4469 1 ^ 五、發明說明(4) 等所有的寫入。此相當於Lamport所述的循序式一致’其 | 中將每一個記憶體單元視為一個記憶體模組。我們將一個 i 單一記憶體單元的循序式一致意指為寫入串列’以別於一 I 個較大的記憶體模組的循序式一致。藉確保"該相同記憶 * 體位置上的連續載入操作使該記憶體位置中呈現的資料項 . 保持一個弱的昇冪順序",可實現記憶體一致。如是,在 · 一個載入操作序列中,任何載入可僅呈現該相同的資料項 · 或一個後來的資料項作為它的前任。 例如,考慮由一第二個處理器寫入一個指定記憶體位置 中的一個資料項序列dl 、d2、d3、d4、d5、d6…等等。在
I 一第一個處理器對該記憶體位置連續的載入操作時,可呈 !現該第一個載入操作送回的該資料項,或可呈現存在該記 憶體單元t —個後來的項目。如是,如該第一個載入操作 送回資料項d2,則該第二個載入操作可送回資料項d2、 ;d3、d4…等等,但不會送回資料項d 1。選擇性地,如該第 ! 一個載入操作送回資料項d 4,則該第二個載入操作可送回 :資料項d4、d5、d6…等等,但不會送回資料項dl、d2或 i d3 ° 顯然在串列執行中,藉該時間向前移動的性質自動地解 i 決該問題。然而,就不依序處理器而言,存取該相同記憶 丨w 體位置的載入操作可變成不依序的,以便一個後來的靜態 載入指令(在後來執行的)讀取該資料項序列中M比該後來 :的靜態載入指令其靜態在前的載入指令早”的一個資料 |# I項。
第10頁 :五、發明說明(5) 1 限制該重排操作能力的一個因素為不定的記憶體參照。 此為M在一個循序指令流中、當一個記憶體載入操作出現 在另一個記憶體載入操作之後_,的事例,且於該事例中, 不可能提前判定"一個不依序載入操作存取的該記憶體位 丨置"是否和M 一個依序載入操作存取的該記憶體位置"不 丨同。例如,考慮下面的編碼分段: s = * (X+a木4+5) u = s + 4
t =木Y v = t + 8 其中*表不該指定位址的一個記憶體存取,以致: * Y表不"記憶體位置的位址包含在γ内,,的該記憶體位 置;及 *(X + a*4 + 5)表示"由該數式x + a*4 + 5指定記憶體位置的位丨 址"之該記憶體位置。 假設a為儲存在一個處理器其暫存器rl中的一個數值,X | 和Y為儲存在暫存器!*2和r9中的數值’且將s、t、u和¥分 引心疋給暫存器r 4、r 5、r 6和r 7,則可以下面的指令序列丨 表不戌上面的編碼分段(其中在該指令名稱之後的該第一 個暫存器為該目標暫存器’且該等剩餘的暫存器為運算 i 元): 丨 no, r 1,4 ;r 1 0 : =a*4 Π 1, r 1 0, 5 ;r 1 1 : =a=M + 5 rl2, rll, r2 ;r 1 2 = =X+a*4+5 mu 1 add add
第11頁 五' 發明說明(6) load r 4, (rl2) S = (X + a 木4 + 5) add r 6, r 4 , 4 U τι S + 4 load r 5, (r9) t - 氺γ add r7, r5, 8 V t + 8 如 可判 定 X + a*4 + 5和Y意 指 不 同 的位 址 則 可 將該等四 個 數 式 安排 成 平 行執 行,而 產 生 例 如該 下 面 的 序 列(其中該 符 號 1 1表 示 平 行執 行): m u 1 rlO( r 1,4 ! 1 1 〇 a d r 5, Cr9) add r 1 1 , r 10, 5 t 1 … add r 12, r 1 1,r 2 1 1 ddd r 7, Γ 5, 8 load r 4, (rl2) 1 1 1 1 … add r6, r 4,4 t ! II … 於 一個 具 有 兩個 執行單 元 的 機 器中 需 要6個循環完成 該 上 面的 序 列 (假設一個載入需要兩個循環 且其它的操 作 須 要一 個 單 一的 循環) > 另 一方 面 如無 法判定 X + a*4 + 5和Y 是 否 永 遠 不同(即該 等 位 址為 不 定 的) ,則必須以該原始的順序安排該等兩個 數 式 ,需 要 9個循環完成該安排( 又假 設 '— 個 載 入需要兩 個 循 環 ,且 其 它 的操 作需要 一 個 單 一的 循 環 ) 如 兩個 載 入 位址 均參考 該 相 同 的記 憶 體 位 置 ,且該記 憶 體 位 置接 收d2 跟在 其後的 該 資 料 項序 列d 1 則 變數s和t 具 有 總 計為 四 種 組合 的讀取 存 取 係 可能 的 0 於 該 等四種組 合 中 ϊ 下面 所 示 該等 最先的 三 種 組 合為 寫 入 串 列 化,而該 第
O:\61\61540.ptd 第12頁 厶 469 1 2 五、發明說明(7) 四 種組合未滿足該寫 入 串列化 的 需求€ 寫 寫 寫入 非 寫 入 串歹1J 串歹 串列 串列 第 一個載入操作(S ) dl dl d2 d2 第 二個載入操作(t) dl d2 d2 dl 注意,於該下面的 範 例中, 如 兩個載入操作均參 考 該 相 同 的記憶體位置時, 則 該指令 的 重排設計將如何使 該 實 際 的 使用者程式(讀取變數t跟在 其 後的變數s )察知一 個 結 果 一- "一個後來的資料項d 2在一個較早的 資料項d 1 之前π Q 就 同步化的多處理器" 或 "和DMA(直接記 憶體存取)裝 置 通 訊 而言,此為一個重大的問題 --第二個處理器 將 資料項d 1 寫至" 載入s和t 中丨’ 所 參 考 的 記憶體位置中— mu 1 r10, r 1, 4 1 i load r 5, (r9) add r11, r 10 ,5 II … --第二個處理器 將 資料項 修 正成d 2 — add r12, r 11 ,r2 II add r7, r 5, 8 load r4, (rl2) | | … * * · | | * * * add r6, r4, 4 | | … 此表示π將(12載入s中,且將dl載入t中"的該最後結果, 其和該寫入串列化的數值序列(係實際由該第二個處理器 4469 1 ^ :五、發明說明(8) 1儲存在兩個載入操作存取的該記憶體位置中)不一致。 上面並非一個典型的範例。記憶體參照的不定性使系統 的性能嚴重地削減,因其強迫循序執行送等在其匕狀怒下 :可平行執行的操作。然^,只要該使用者程式覺察到該載 :入結果值序列為寫入串列化時,則玎避免指令的串列化 :(即可於一個邏輯式在前的載入操作之前執行一個邏輯式 I後繼者載入操作)。如是,只要該等載入操作(依其原始的 程式順序)的該資料序列和記憶體中該相對應的資料序列 致時(即每—個後繼者載入送回該相同的數值,或就所 有邏輯式在前的讀取操作而言、送回一個在該時間線上稍 丨後發生,數值),則在該依序載入操作之前執行的該不依 丨,載入操作為有效的。此外,如該等數值為一致的,則亦 可不依序地執行任何,,視該不依序載入的資料項而定"的操 ^ ^ ^ 方面如該等數值為不一致的,則該不依序載入 办-二2和任何從該資料項導出的结果均為無效的,此導 :二操:執行該依序點上的該載入操作、和該等相關聯 操作(具不定參,昭的猫么圖解^〜理器重排記憶體 設計均假設"#能从:%作”之問題。該等大部分的 | 心地重排指令( 產生兮 等所有的設計係依(即*虞/ 4等程式時°該 偵測干擾"。如偵測中+说比奴戈戟〜果數值比較以 "規兮P批/- AA 、'出干擾’則安排於該依序載入择作Γ艿 _視忒已執仃的載入而—1秋八祕作C及 舳杆的4r 而 之該等操作’如適宜的咭)之1 執仃的遠不依序菊入纟品从 J °古)之刖 載入操作’必須在該不依序载入操作其原
4469 1 2 五、發明說明(9) 始的依序點上重新執行。即該等裝置藉依序地重新執行所 有的干擾載入操作以強制執行寫入串列化。藉額外的指令 丨 (植基於軟體的設計)或專屬的硬體資源(植基於應體的設 計;有時以軟體輔助)執行干擾偵測和重新執行。 | 當位址交疊時,為了確保正確性,該等目前的裝置:確 丨
認一個先前執行的載入指令(即一個不依序載入指令)干擾 另一個載入指令(即一個依序載入指令);及重新執行該先 前執行的不依序載入指令、和任何”視該已執行的載入指 I 令而定"的指令(即該不依序載入指令ν'。 例如,可將該稍早所給的編碼分段修正如下: ^
t 二氺Y v = t + 8 s =氺(X+a^4+5) 丨
u = s + 4 I 如(Y = = (X + a*4 + 5)) /* 比較位址*/ j t = *Y 丨
I v = t + 8 | end i f 於靜態重排的事例中,由該編譯程式/程式師產生的該 指令序列在該等多種建議的設計中係不同的。通常,由某 ^ 一個新的指令(或指令序列)替代一個已移動至另一個載入 指令上的載入指令,其中該新的指令執行該載入操作、並 :啟始監督其它載入指令所使用的該等位址。利用另一個指 、 令(或該不依序載入指令中的一個指令欄)表示該移動的載
第15頁 ΔΛ69 1 2 五、發明說明(10) i
I 入指令其最初所在的位置,以判定該監督範圍的結果、用1 以干擾儲存操作。 : 於動態重排的事例中’以程式的順序將該等不同的載入 :指令呈現給該處理器,即該第二個載入指令跟在該第一個 ’ 載入指令之後。該處理器將該等指令重排’且如該靜態重 | , !排的事例一樣,該處理器必須能夠偵測該第一個載入指令 * !是否載入m該第二個載入指令(已執行的不依序載入操作) · ί所讀取的”一個記憶體位置。如是,該處理器必須將該載 ί 丨入指令標誌成一個不依序操作;設定一個裝置、並就其它 I的載入操作偵測不依序操作之間的干擾:當偵測出干擾 丨^ 丨時、回復該處理器的狀態;及重新執行該不依序載入指 i 令、和其它任何”視該不依序載入操作而定"的指令。 將於現在宣布一種''在一個多處理器環境中、當重排記 ! !憶體載入操作時 '處理非同步記憶體操作"之相關技藝總 :結。 丨
i I ! 於1997年3月31曰提出、定名為”在一個處理器中、支援 i 載入和儲存的不依序執行"之美國序號0 8/82 9, 6 69中,揭 露一種根據"該干擾偵測"和"重新配給該等先前執行的不 I 依序載入指令”之不依序載入操作的支援裝置,並在此處 指定給該受讓人。該裝置將該每一個不依序載入操作的位 丨i 址輸入一個佇列Γ載入-命中-載入佇列")中,直到達到該 ; :不依序載入其原始的程式位置為止。其它的(依序)載入操 丨 作就該載入-命中-載入佇列中的該等條目查證其位址,如 丨, :偵測出干擾,則由該處理器重新配給該等干擾的不依序載 i
第16頁 dd69 1 2 —~ —- ——— 五、發明說明(11) 入(均視操作而定)。 根據1998年5月26日發杆 ^ 重排記憶體操作之方法和ϋ名為1以在/個處理器= 中的載入資料驗證’於唁^之美國專利號碼5, 758, 05 明一種選擇性的偵測裝D置,遠存干擾偵測的章節中說 該方法中,係依序地讀取此處指定給該受讓人。於 料項,且將該依序栽入操作的結入操作所存取的資 較。如該等兩個數值完全相同了 :::依序的結果比 且該程式繼續執行 '然❿,如吱箄J : $可偵測的干擾, 用該依序載入操作送回的該數值重新^數值不同時’則利 令。注意’就以載入驗證為根據u:所有的依存指 偵測出干擾時,則假定沒有干擾 擾偵測而言,如無法 干擾所需的硬體總數和該重新執‘::方法減少了監督 的頻寬以對每-個不依序移動的;’ J勒但卻要求補充 序載入。 m入知作執行一第二個依 1997年4月29曰發行、定名為”用 的指令字元處理器中重排記憶體操作:=超純量或極長 國專利號碼5, 625, 835 ’並在此處指定认法和裝置"之美 憶體操作的重排"和、憶體操作㈣ ,^ J等己 記憶體操作的重排係依賴: 叮合 ^寻 •由該編譯程式將碼靜態重排,u利用指 •特殊的硬體支援,以偵測記憶體參 寻,及十 依序載入的資料;及 …、的衝突、和操縱不 •編譯產生碼,用以在該不依序載入的資料上操作、和用 ΙΙΗι 第17頁
厶厶69'2 — 五、發明說明(12) 以從該等偵測出的衝突中回復。
該特殊的硬體支援由以下組成:每一個暫存器的一個位 i 址暫存器(可為該一個不依序執行的載入操作該結果的目 I 地);及一個與該每一個位址暫存器相關聯的比較器。利 | 用’特殊指令,不依序地載入一個資料項,並’委託’該資料 i * |項及其它任何在該程式的依序點上、從該資料項中導出的 ’ !數值。每一個不依序載入將該載入之資料項的記憶體位址 丨-和記憶體大小記錄在該相對應的位址暫存器中;每一個儲 | 存操作引發該(位址,大小)t u p 1 e和該等所有位址暫存器 : i 的内容作比較。於一個多處理器的體系中,負責記憶體解 丨一 不定性的該處理單元接收所有由其它處理器發出的非同步 !儲存請求,且使所有干擾該等儲存請求的不依序載入操作 無效。如是,如該相對應暫存器中的該(位址,大小) t u p 1 e和另一個暫存器中的另一個(位址,大小)相E·配 ;時*則將該相對應的位址暫存器標誌為無效的。在該依序 i 點上執行一個特殊的委託指令,以檢視該相關聯的位址暫 存器是否為有效的;如是,則該不依序載入的資料項和記 憶體中的該資料項為一致的。另一方面,如該位址暫存器 為無效的,則該不依序載入的資料項和該記憶體内容為不 一致的。如是,必須重新執行該載入操作和其它任何依存 一 在那裡的操作。當時將引動一個陷阱,使執行控制轉移至 該編譯程式產生的回復碼,以重新執行該載入操作和該等 依存操作。 i. j 3.該技藝的狀態問題
第18頁 Λ Λ69 A 2___________________________ 五、發明說明(13)
I
目前的策略(對靜態和動態不依序執行兩者而言)藉不依 序地執行操作、連同一個用以偵測干擾的設計(在軟體或 I 1硬體中執行)處理寫入串列化。一旦偵測出干擾時’該等 :設計將導致該處理器重新執行該干擾不依序載入操作和所 ;’ 有的依存操作,以藉依序地執行干擾指令強制執行寫入串i , :列的行為。 丨-
I 此消耗貴重的配給頻寬,故就整體來說將使能夠完成執 i · 行的指令較少。此外,必須提供一個裝置重新執行該碼。
於靜態排程的事例中,又將一個包含f'該檢查碼"、M該不 丨I ! 依序載入指令11和"該不依序載入指令的依存碼”之編碼分 丨一 段,連同該等放置暗指之"該等所有的碼大小和指令快取 :記憶體性能刑罰” 一起置放在該程式文字中。選擇性地, | 於動態執行的事例中,將該等指令保存在該重新配給的緩 衝器中、並將該等指令再次發送。 該下面的編碼分段說明如何在具不依序存取之該靜態 產生的排程(由一個典型的編譯程式產生的)下、將該相同 丨 的碼再次置放在該程式碼中(其中以表示該複製碼的部 分,且以’ + ’表示該檢查碼): t二本Υ v = t+8 一 s=*(X+a*4+5) j u = s + 4 j 如(Y==(X + a*4 + 5)) /* 比較位址I,
第19頁 AA69^2_________________________________ 五、發明說明(14) t = (*Y) * ν = t+8 *
I end i f ^ 從該範例中可察知’就靜態碼產生而言’該碼大小的刑罰 | 係相當嚴苛的。 i ' 就利用動態產生指令排程的處理器(例如超純量處理器) · 而言,該等處理器需要邏輯傳遞該決策、以對該配給的緩 -衝器重新執行該等指令,並使該重新命名的暫存器表中其 先前的條目無效。 因當偵測出干擾時、兩種裝置都必須重新執行先前執行 I _ 的指令,故可完成的性能將發生補充的刑罰。如是,兩種 方法在性能上均承受"必須利用配給磁格(可用以執行其它 的指令)以重新執行該指令流"之苦。從前面的討論中得 知,在重排的記憶體讀取參考之事例中、重新執行以修正 丨 干擾並非一種有效的方法(即一旦偵測出一個干擾的狀態 丨
I a夺,即重新執行該載入操作和所有的依存操作)。 發明總結 i
I 藉本發明---:種用以在一個處理器中重排記憶體操做之 ; 方法和裝置--解決該等上面所述的問題及該先前技藝中其 它的相關問題。 ;~ 丨 於本發明的一個觀點中,一種用以在一個履行不依序執 丨
I 行的電腦處理系統中、安排指令執行之方法,包括以下步 i :驟: . 選取一下一個指令,並將該指令從其所在之一個指令序
第20頁 厶厶69'2 五、發明說明(15) i i 列中該目前的位置移動至一個較早的位置上; 判定該選取的指令是否可參考一個讀取存取的記憶體位 置; 當該選取的指令可參考該讀取存取的記憶體位置時,則
I
判定未選取的指令c可不定地參考該讀取存取的記憶體位 I 置)是否在先前移動至該選取的指令上; 設立一個旁路序列,以於執行該選取的指令期間執行該 | · 旁路序列,且當該等未選取的指令先前移動至該選取的指 令上時,及當"記憶體位置的位址-該等未選取的指令已從 該等記憶體位置的位址中讀取存取該資料"和"該記憶體位 | _ 置的一個位址-該選取的指令欲從該記憶體位置的一個位 址中讀取存取資料"相同時,則該旁路序列將該等未選取 指令其先前讀取存取的資料傳遞給該選取的指令; 當該選取的指令可參考該讀取存取的記憶體位置時,判 丨 定該選取的指令是否在先前移動至該等未選取的指令上; 及 ! 增加一個裝置、用以儲存該選取指令的一個記錄,以作丨 為該等未選取指令將來參考之用。 於本發明的另一個觀點中,一種"用以在一個電腦處理 系統中、將多次讀取存取一個記憶體位置期間所獲得之資 一 料數值之間強制執行一致性"之方法,其中由"至少一個處 理器單元”、”一個不依序載入指令啟始的該等多個讀取存丨 取”及”至少一個其它的載入指令執行指令序列,該方法 l 包括以下步驟·
第21頁 4.4 6 9 1 2 五、發明說明(16) 1 執行該不依序載入指令控制該至少一個處理單元’以從1 該不依序載入指令所識別的該記憶體位置中至少讀取存取 丨 ! 一第一個資料項,
I 產生該不依序載入指令的一個記錄、給該至少一個其它 :‘ 的載入指令使用之,其中該記錄包括該記憶體位置的一個 i * 丨位址(其中係從該記憶體位置的該位址中載入該第—個資 i ‘ | 料項的)、和一個與該第一個資料項相關聯的數值;及 :, 執行該至少一個其它的載入指令,並於執行該至少一個 其它的載入指令期間控制該至少一個處理器單元、以執行
I 以下的步驟: '一 判定''該記憶體位置的該位址-該不依序指令從該記憶體 位置的該位址中載入該第一個資料項”是否和"一個位址-該至少一個其它的載入指令欲從該位址載入一個資料項” 交疊或相同的;及 當該等位址為相同的或交疊的時,則分別將該第一個資 料項或該第一個資料項的一部分從該記錄中傳遞給該至少 1 —個其它的載入指令。 丨 藉研讀下面較可取體系的詳述、連同該等伴隨的圖示, 將顯見本發明上面所述和其它的觀點、特徵及優點。 圖式簡單說明 ^ 圖1,為一個流程圖,例證說明當執行重排操作(記憶體 i操作除外)時、根據該先前技藝之該等指令的排程; 圖2 A,為一個流程圖,例證說明一種根據本發明一個體 . 系、用以將操作從一個原始的指令順序中重排的處理;
第22頁 ΛΑ69、2 五、發明說明(17) 圖2 B,為一個流程圖’例證說明—種用以執行圖2 A該等 重排操作的處理; 圖3,為一個傳統電腦處理系統的功能方塊圖,該傳統 的電腦處理系統支援”記憶體操作的靜態重排”和”該干擾 測試和資料旁路序列其植基於軟體的履行"; 圖4,為一個方塊圖,例證說明根據本發明一個體系、 用以支援圖3該系統執行的不依序載入操作之該等硬體資 源; 圖5,為一個傳統電腦處理系統的功能方塊圖,該傳統 的電腦處理系統支援"記憶體操作的動態重排Μ和"該干擾 測試和資料旁路序列其植基於硬體的履行”;及 圖6,為一個方塊圖,例證說明根據本發明一個體系、 用以支援圖3或圖5該等系統執行的不依序載入操作之該等 硬體資源。 較可取體系詳述 本發明導引"在一個電腦處理系統中用以重排載入操作 之方法和裝置”。於該一種電腦處理系統中,指令序列係 儲存在一個記憶體中、以由至少一個處理器單元執行之。 本發明適宜”重排操作-當產生該程式時(靜態重排)”和1'重 排操作-當執行時(動態重排r 。此外,本發明適合植基於 軟體和/或硬體的履行,且適用於單處理器系統(例如,一 個具有"直接存取主記憶體的週邊裝置”之系統中)和多處 理器系統中。 為了便於清楚地瞭解本發明,現在將對此處使用的名詞
O:\61\61540.ptd 第23頁 * 4·469 飞 2 ί五、發明說明(18) ; ;下定義。一個載入指令’意指任何根據該載入值執行一個 記憶體讀取存取和(選擇性地)計算的指令。如是,一個載 : 入指令可包括例如邏輯指令、算術指令及其它的指令(使 j 用記憶體位置中的資料作為運算元)。不依序執行為一種 i '技藝,藉該技藝將一個循序指令流中的邊專彳呆作重排’以 |便早一點執行後來出現的操作(如該等後來出現的操作其 所需的該等資源為閒置的時)。如是,可藉著將一個載入 丨 指令從其所在之一個指令序列中其最初的位置移動至該指 令序列中一個較早的位置上,以靜態或動態地產生一個不 丨 ^依序載入指令。該不依序載入指令識別記憶體中的一個位 : 1置(其中從該位置中讀取一個資料項)、和一第一個目地暫 存器(其中將該資料項置放在該第一個目地暫存器中)。一 個不定的記憶體參照,意指該事例-在一個循序指令流 中,當一個記憶體載入操作出現在另一個記憶體載入操作 之後時,且不可能提前判定該等兩個記憶體載入操作所存 取的該等記憶體位置是否不同。一個臆測操作為一個M不 :一定須執行"的不依序操作,例如未遵循該臆測操作所在 I的該執行路徑,而是遵循另一條執行路徑。 將根據兩個指令說明下面的敘述和相對應的範例(除非 另外指示),將在一第二個、邏輯上在前的指令之前不依 序地執行的一第一個指令稱為一個依序指令。如是,除非 另外指示,否則該名稱’依序的’僅意指該邏輯上在前的依 序指令和該第一個’不依序’指令之間的循序關係=然而, I對任何熟知該技藝的人來說,將察知可輕易地將本發明延
第24頁 dd6912 ___ ;五、發明說明(19) 伸以涵蓋多個不依序和依序的載入桃作。應注思’就 ' —第 三個指令(…等等)而言,該等上面兩個指令(即兩個均為 該等依序的載入指令或該等不依序的載入指令)可以為依 序的或不依序的。 現在,將對本發明提供一個概略的說明1以向讀者介紹 :本發明的觀念。隨後,將就本發明不同的觀點提供更詳盡 的說明。 如是,概略地說,可以不同的方法和裝置履行本發明’ 丨其中該等不同的方法和裝置係利用資料旁路、以在多個記 ,憶體存取該相同位置中強制執行一致性’以便呈現給一個 程式(該處理器上執行的一個程式)之該產生的資料序列和 :該記憶體位置中目前的該資料序列一致(即如以該等指令 其原始的程式順序執行該等指令時,則該程式可能覺察到 I該一個資料序列)。更明確地說,該方法由一個干擾測試 組成,該干擾測試控制該處理器單元比較”該位址-邏輯上 '在前的依序載入操作從該位址中讀取資料"和"該等位址-已由不依序載入指令、以一種臆測的方式存取該等位址 (其中該等不依序指令以邏輯程式的順序接續在該等依序 的指令之後)。如該等位址相匹配,則將提供給該臆測執 行不依序載入指令的該資料項、給與該依序載入指令(該 依序載入指令在邏輯上係在該不依序載入指令之前)。 將資料從一個不依序載入指令中繞道至一個依序的載入 指令中,以免除重新執行"該不依序載入指令"和M該不依 序載入指令的依存指令”,同時維持寫入串列化程式的執
第25頁 五、發明說明(20) 行。 我們參考該前面的範例、以說明利用根據本發明的該旁 路裝置的效果。該左邊的指令流說明—個重排的程式流 (產生以作為一個二重配給單處理器之用)。利用本發明的 該旁路裝置、將資料從該干擾不依序載入(以’ 表示)中 傳遞至該依序的載入(以’+’表示)中,給該左邊所示的程 式。執行該重排程式(左邊)相當於執行該下面範例其右邊 丨所指定的該依序程式,且如是為一個正確的寫入串列執 行:
I
I ί 以旁路重排編碼 相當於依序執行 --第二個處理器將資料項dl寫至”載入s和t中"所參考的 記憶體位置中-- mu 1 rlO, rl, 4 mu 1 r 10, r 1, r load r5, ( r9 ) add rll, r 10, * add r 1 1 , r 1 0 , 5 add rl2, rll, load r 4, (Π2) add r 6, r 4 , 4 load r 5, Cr9) --第二個處理器將 資料項修正成d 2 —— add rl2, r 1 1, r 2 add r7, r 5 , r 8 add r 7, r 5 , 8 + load r4, (rl2) add r 6, r4, 4
第26頁 五、發明說明(21) 可藉下面履行本發明的該干擾測試和旁路邏輯:該處理 器t的硬體資源;該處理器所執行的指令:或一個混合的 硬體/軟體設計°於一個軟體履行的事例中’該干擾測試 可由一個新的單一指令組成,或可由目前的指令組成(像 是11 一個載入指令、與一個比較和條件式移動指令”,或是 ”一個載入指令、一個比較指令、一個分支指令和一個移 動指令")。該干擾測試的特殊履行係視"靜態或動態地執 行記憶體操作的重排π而定。可將提供給不依序載入操作 的該等位址和資料項數值儲存在主記憶體中(如正規的資 料數值),亦可將其儲存在嵌入該處理器中的一個硬體表 結構中,其中可或不可從該指令流中的指令中明確地存取 該等位址和資料項數值。可將該建議的設計和該等設計結 合用以偵測載入/儲存干擾”之設計、”一旦偵測出干擾 時、用以重新配給一些載入操作以執行不同的記憶體一致 性模型”之設計。於該一個事例中,可將該等設計所需之 該等一個或多個資源和該等載入結果旁路資源結合,以減 少一個綜合不依序執行設計的硬體複雜性。 > 現參考圖1 ,顯示一個流程圖、例證說明當靜態或動態 執行重排操作(記憶體操作除外)時、根據該先前技藝之該 等指令的排程。僅當該重排不受制於不定性時,才根據圖 1的該方法執行重排。 於步驟1 0 1中,選取該下一個指令,並將該指令從其所 在之該循序指令流中該目前的位置移動至一個較早的位置
第27頁 ΛΛ69'2 丨五、發明說明(22) 上(即,,安排”執行該指令)’如該一個移動係有利的、且未 影響該程式的適當操作。即如該選取的指令和該等任何指 令(該選取的指令移動至上的該等指令)無關時’則將該選 丨取的指令移動至一個較早的位置上。
於步驟1 0 3中,判定是否還有剩下的指令欲作安排。如 是,則該處理折返至步驟ιοί。否則’該處理中斷。 I 圖2 A為一個流程圖,例證說明一種根據本發明—個體 | 系、用以將操作從一個原始的指令順序t重排的處理。特 | 丨別是,圖2 A描述如何根據本發明將任何排程技藝延伸、以 | ;處理解不定性。注意,該一般的設計適用於所有履行解不 丨 定性的技藝(即靜態或動態的)。此處所給之該特殊的通則 I :係以該假設”將在所有先前安排的指令之後、執行每一個 安排的指令"為根據(即該選取的順序反映該執行的順 序)。然而,對一個熟知該技藝的人來說,將瞭解如何修 | 正該通則的細節、以和其它的排程方法一起使用。 於步驟2 0 1中,選取該下一個指令,並將該指令從其所 在之該循序指令流中該目前的位置移動至一個較早的位置 上(即”安排”執行該指令)。 於步驟2 0 2中,判定該選取的指令是否為一個載入(或其 它任何M可參考一個讀取存取的記憶體位置M的指令)。如 是,則更進一步於步驟2 0 2中判定一個未選取的指令(可不 定地參考該相同的記憶體位置,像是一個未選取的載入指 1 令或其它任何"可參考一個讀取存取的記憶體位置M的指 令)是否在先前移動至該選取的載入指令上。亦可將步驟
第28頁 44691^ __
丨五、發明說明(23) I 2 0 2中該第二個判定描述為',就—個或多個不依序指令而 | 言 '該選取的(即存在的)指令是否為一個依序的指令"° | 如步驟2 0 2中該等兩個判定結果的任—個結果為錯誤的 時,則該處理繼續至步驟2 0 4。然而’如在步驟2 0 2中判定 : :該選取的指令為一個載入指令’此外判定一個未選取的操 i , !作(可不定地參考該相同的記憶體位置)在先前移動至該選 ;取的載入指令上時’則該處理繼續至步驟2 0 3。 | . 於步驟2 0 3中,執行處理解不定性的行動。該等行動包 '括(但非限制):增加一個測試,用以判定載入指令(就該 選取的載入指令而言、該等載入指令為不依序的)之間是 '一 丨否存在干擾(即移動至該選取的載入指令上之載入指令所 :產生的干擾);及設定一個將在該干擾的事例中執行的旁 路序列。該旁路序列藉著確保"該選取的依序載入指令將 送回和該先前不依序載入指令相同的數值”、以強制執行 . j 一個正確的事件時間循序(寫入串列)順序。如已有多個 (不依序)載入操作移動到該選取的載入指令上,則該旁路 序列將檢視多個旁路條件。可由硬體裝置、以該載入指令 丨 編碼的一個旗標或其它裝置、一個補充的指令、或一個補 充的指令序列履行該旁路序列期間所執行的該檢視步驟。 如執行多個檢視,則執行該等多個檢視使確保”就該參 W 考的記憶體位置而言、該最後的結果為寫入串列的”。為 確保此,如就該選取的依序載入指令、不依序地執行多個 干擾載入指令時,則必須從該最早的邏輯後繼者不依序載 ;. 入指令的記錄(將干擾該數值)中繞過該數值。利用該等兩
I
第29頁 Λ469 1 2 _ _ .— - — —— ——, — _. . 五、發明說明(24) [ 1種方法的其肀一種係較可取的。於該第一種方法中’以邏 ,輯的程式順序執行干擾和旁路測試,且一旦偵測出—個干 擾時,即跳過該特殊原子單元(如一個載入操作參考多個 丨原子單元)所有更進一步的測試和旁路。 於該第二種方法中,以反向的邏輯程式順序執行該等干 !擾測試和旁路。將察知兩種方法均保證寫入_列的行為。 ί且將更進一步察知’根據該等兩種方法的教旨,一個熟知 該技藝將能夠在未偏離本發明的精髓和範疇内藉以對本發 明作不同的變更和修正。 於步驟2 0 4中,判定該選取的指令是否為一個載入,如 I是,則更進一步判定該選取的指令是否在先前移動至另一 I ; :個未選取的指令(可不定地參考該相同的記憶體位置,像 i 是一個未選取的載入指令或其它任何”可參考一個讀取存 :
'取的記憶體位置的指令)上。亦可將步驟2 0 4中該等二個 I 判定描述為"就一個或多個依序指令而言、該選取的指令 I是否為一個不依序載入指令”。如步驟2 0 4中該等兩個判定 結果的任一個結果為錯誤的時,則該處理繼續至步驟 i 2 0 6。然而,如在步驟2 0 4中判定該選取的指令為一個載入
' I 指令,此外判定該選取的指令在先前移動至一另外的未選 取指令上(可不定地參考該相同的記憶體位置)時,則該處
I 理繼續至步驟20 5。 1 於步驟20 5令,增加一個裝置,以記錄該不依序載入指 i令的結果、作為所有依序載入指令(其中該載入指令係移 動到該等依序載入指令上)將來參考之用。記錄該操作的
第30頁 五、發明說明 該裝置可有以下組成:一侗硬體裝置、以該載入指令編碼 的一個n旗標"(牝令位元)戍其它裝置 '一個補充的指令' 或一個補充的指令序列必要時’ σΓ將用以移除遠έ己錄 (且每逢要求t源饳存該衣讥時即將其取回)的補充碼插入 該移動的載八操作其原始的程式位置中° 於步驟2 0 6中,判定是否還有剩下的指令欲作安排。如 是,則該處理折返至步驟2 0 1。否則,該處理中斷。 圖2 B為一個流程圓,例證說明一種用以執行圖2該等重 排操作之處理°特別是,圖213對圖2A該等旁路和記錄步驟 丨 提供一個更詳盡的說明。 於步驟2 5 1中,執行一個不依序的載入指令,藉以讀取 一個資料項、並將該資料項儲存至該不依序載入指令中所 指定的該暫存器中°於步驟2 5 3中,記錄該載入指令所載 入的該位址和該數值,作為將來參考之用。於步驟2 5 5 中,可選擇性地執行其它的指令(包括視步驟2 5 3中載入的 該數值而定的指令)^ 於步驟2 5 7中,執行一個依序的載入指令(其中於步驟 2 5 1中、該先前執行的不依序載入指令已移動至該依序的 載入指令上)。於步驟2 5 9中,執行一個檢視以判定該等兩 個載入指令的該等位址是否干擾。如該等位址干擾,則該 處理繼續至步驟2 6 1。然而,如該等位址未干擾1則該處 理繼續至步驟2 6 3 : 於步驟2 6 1中,繞過該先前不依序載入操作的該載入數 值,以便現在將先前提供給該不依序載入的(由該不依序
第31頁 4469^2 五、發明說明 載入載人的资料項鈥位從供給炫依序載入(由該依序載 人載入的)’, 於步驟2 6 3中,< 执行其它的扣令’包括視該等載入指 令或獨立指令其屮一者(或兩者)而定的指令。於步驟2 6 5 中,在該原始載八拍今(已不依序執行的載入指令)的該位 置上,將步驟2「) 3中肊艽給該載八記錄的該條目解配置。 注意,如有數個載八指令移動到另一個載入指令上,則 籍著對每一個不依序移動的載入指令(就該依序的載入指 令而言)重複步驟2 5 9和2 6丨以執行數個檢視(如所需)。此 外,如一個指令同時為M —個依序指令"(就一些不依序指 令而言)和"一個不依序指令11 (就一些依序的指令而言), 則最好在該記錄步驟2 5 3之前執行該旁路步驟2 6 1。 為使該上面的處理最佳化,可將步驟2 5 7重排使"僅執行 一個依序的記憶體存取(如未偵測出干擾時)"。 可於靜態和動態的設計中利用本方法。該等履行可利用 不同的方法用以識別兩種操作其相互間是否為依序的或不 依序的、及如何產生和參照參考。 一種在任何兩個載入操作之間識別一個依序/不依序關 係之方法為π指定識別碼給不依序載入操作M ,其中該依序 載入操作的干擾和旁路測試可接著利用該等識別碼、識別 該等不依序的操作(就該程式流程中該等依序的操作而 言)。可由該編譯程式靜態地指定該等識別碼,或可由該 配給硬體動態地產生該等識別碼。 將察知,當已就記憶體字元的觀點說明本發明時,亦可
Λ A6 9 1 ^ ..+ . —_ ·_ _ . — — ·· - - —·** 五、發明說明(27) 將本發明引用至不同組織形式的记憶體結構上’包括(但 非限制)位元和位元組可定址的記憶體°此外,記憶體操 作可指定記憶體字元為部分交疊的(即只有該等兩個記憶 體字元參考的該等位元的一個子集合,才為該等字元所共 用的)。於該一個事例中,僅將繞道該等共用的位元。此 外,一個記憶體系統可對記憶體存取指定原子數需求。於 丨 :該一個事例中,將由該不依序載入指令(繞過該不依序載 入指令而至該依序的載入指令中)記錄該適當的原子單位 ;(典型地為一個位元組、一個字元或一條快取記憶體線)。 i 此外,可對本發明作其它的修正、以用在不同的記憶體模 型上,同時保留本發明的精髓和範疇。 於該干擾測試和資料旁路中利用靜態的排程和指令之體系 為了利用靜態排程和指令例證說明本發明該干擾測試其 可能的履行,故下文中所提供的範例係以該字元等級履行 該干擾測試其合適的功能。然而可察知,亦可將依該位 元、位元組、半字或其它任何等級而履行的處理器改裝成 利用此處所述的該等方法。接著,對每一個各別可定址的 單元單獨地實行比較,其中可能係繞過每個可定址性單元 的不同條目。一個系統可更進一步將原子數保證在該位元 組、半字、字元快取記憶體線(或一個較高的)的等級上。 如保留該原子數,則可將本發明改裝成”將該環繞的原子 單位記錄在一個不依序指令產生的該記錄中”。 此處提供的該等範例係利用下面的符號: • RT,RA識別一般暫存器: !
第33頁 五、發明說明(28) • (RT),(RA)分別為該等一般暫存器RT和RA的内容; • D,B D分別為一個資料替代和一個分支替代;及 • C I A,N I A分別為該目前正在執行的指令的位址和該下 一個欲執行指令的位址。 •除非另外指示,否則擬碼利用"該I SO (國際標準協會) C標準指定給該C程式語言"類似的運算子,例如該符號[] 指定一個索引,且該.(點)指定一個記錄欄位。 靜態排程一個代表性的履行利用一個載入標簽識別碼 (其f由該編譯程式將該載入標簽識別指定給每一個不依 序載入操作)。該載入標簽識別碼係獨一無二地和一個單 —的不依序載入操作相關聯,如在該載入操作其不依序配 給點和該操作的該邏輯依序點之間。 該載入標簽識別碼係儲存在每一個不依序的載入指令字 元中,且記錄在圖2B、步驟253所產生的該記錄中。該不 依序載入指令在其指令格式中將包含一個補充的襴位,且 此後將一個具載入標簽識別碼4的不依序載入指令寫成: 載入_4 RT,D(RA)。 除了執行該載入之外,該操作將該載入結果(包含該存 取的該最大原子單元、以保證原子數)、該載入標簽識別 碼和該位址記錄在一個表中。 如圖2B、步驟265中所示,一個表示成dealloc_4的指令 將具載入標簽識別碼4的該表條目解除配置。該deal loc_n 的操作為圖2B該處理的一個選擇性的步驟。如是,依據該 特殊的履行,可從該編碼中省略該dea 1 loc_n的操作,且
第34頁 4469 1 2 五、發明說明(29) ' ------- ! - ________ _ 一 可由一個後來的配置誶 —… 一' 一個有效的履行由以下組動地替換表條目。 為該表(用以記錄有關不成^利用該栽入標簽識別碼作 :的索引。可接著利用—個.浐f入結果的資訊)中—個實際 存器’指令履行該旁路條件:f址干擾和條件式載入暫 丨試,將定義於下。該指令扑—— 貫際旁路步驟的該干擾測 丨之不依序載入比較位址)7、^和疋—~個不依序載入(藉該指定 繞道誰的結果。 3弋在3玄位址干擾的事例中 當該位址(該先前執行的不依 入資料)和該目前指定的位址(在a 入札令從該位址中載 匹配時(或就子字元操作而言,^依序±的載入指令中)相 干擾。根據下面的指令偵測位址虽父叠時:,則偵測出位址 •視位址干擾和條件式的載入暫‘ ^可取的. chkld一n RT, D(RA) ^ EA <二(RA) + D 如(條目[η ].位址==E A ) ; 繞過(如位址干擾) RT <= 條目[η].數值 其中ΕΑ為該依序指令參考的該有效記憶體位址。如該計算 的有效位址和該先剛執行之不依序載入的記憶體區城(係 1記錄在該c h k 1 d指令(η )所指定的該條目中)相匹配或交曼 時’則繞過該相對應的數值。 基本上,在一個單—的指令中、該chkld指令履行步驟 2 5 9 和 2 6 1。
第35頁 4469 1 2 — 一 _ 五、發明說明(30) ! 注意’該c h k 1 d指令可和一個實際的載入指令結合’以 在一個具檢示之單一的操作載入with check中結合步驟 ! 2 5 7 '259 和 261 __ load_chk一n RT, D(RA)
EA <= (RA) + D
I
如(條目[n ].位址==E A ) I
I ; 燒過(如位址干擾) RT <= 條目[η ].數值 否則 RT <= MEMCEA, 4) 選擇性地,僅利用一個測試位址干擾和分支指令可能係 i j 較可取的,其測試兩個記憶體位址的位址干擾、和該交疊 丨
I 事例甲該等兩個記憶體位址之相關聯的大小和分支,以加 ! 速植基於軟體的干擾和旁路測試。 為了例證說明本發明該干擾測試和旁路操作的靜態產生 (該檢視位址干擾和條件式載入暫存器指令(chk 1 d ))及其 執行,考慮下面左行中所示的該(原始)碼,其中該碼包含 一第二個載入指令(在一第一個載入指定之下)、和一些視 該第二個載入指令而定的算術指令。於該範例中,在該第 一個指令名稱之後的該第一個暫存器為該目標暫存器,而 該等剩餘的暫存器為該等運算元。 原始碼 移動到依序載入指令上的載入指令 | , .1 ·
第36頁 446912 五、發明說明 (31) 1 oad_3 r 5 , 10 (r4) load r 3 , 20 (r2) 1 oad_3 r 3, 20 (r2) chk 1 d_ 3 r 3 , 20 (r2) load r 5 , 10 Cr4) deal 1o c_i 3 add r 6 , r 5 , 20 add r 6 , r5, 20 sub r7, r 6, r7 sub r7, r6, r 7 $next : … $ n e x t : • · * 該第 二 個 載 入 指令 移 動 到 該 第一個 載入指 令J -、 如 該右 行 中所 描 述 的 〇 藉一 個 檢 視 位 址干擾 和條件 式載入 暫 存器 指 令(c hk 1 d )擴增該依序的載入指令, 且以· 一個 指令替代 該 原始 的 第 二 個 載入 指 令(已被不依序地移動)、 將 該 旁路 記 錄解 除 配 置 如該 右 行 中 所 示。亦 可將跟 在該原 始 載入 指 令之 後 的 該 等 算術 指 令 重 排 ’ 如下 所示: 原 始碼 移 動到依 序載入 指令上 的 操作 … load 一 3 r5, 10 ( r 4 ) … add r6, r 5 ί 20 … sub rl, r 6 5 r7 load Γ 3, 20 (r 2) load r 3, 20 ( r2)
第37頁 AAS9\2 五、發明說明(32) ch k1d_3 r 3, 20 (r2) load r 5, 10 (r4) deal 1oc„3 add r 6,r 5, 2 0 $next : … sub r 7 , r 6, r 7 $ n e x t : * * 於該事例 中, 視該載入操作 而定之該等指令亦移 動 到該依 序的載入指令 上,如該右行 中所示。 利用該 結合 的載入和檢視指令(load — chk 一n ), 將載入指 令和c h k 1 d指令指疊成一個單一的操作,如 下所示: 原始碼 稃動到依序載入指令 上 的操作 … 1 oad_3 r 5, 10 (r4) … add r 6, r 5 , 20 … sub r 7, r6, r7 load r 3, 20 (r2) 1oad_chk_3 r 3, 20 (r2) load r 5 , 10 (r4) deal 1 oc_3 add r 6, r5, 20 Snext : … sub r7, r6, rl $next : ··· 圖3為一個傳統電腦處理系統的功能方塊圊,該傳統的 電腦處理系統支援”記憶體操作的靜態重排”和M該干擾測
第38頁 五、發明說明(33) 試和資料旁路序列其植基於軟體的履行"。該系統由下面 所組成:一個記憶體次系統3 0 1 : —個資料快取記憶體 3 0 2 : —個指令快取記憶體3 0 4 ;及一個處理器單元3 〇 〇。 處理器單元300包括:一個指令佇列303 ; —個或多個載入 單元305(顯示一個);數個執行單元307,用以執行整數、 邏輯和浮點運算;一個分支單元3 〇 9 ;及一個暫存器樓 31 1。在分支單元3 09的控制下、從指令快取記憶體3〇4中 擷取指令(或從記憶體次系統3 〇 1中摘取指令,當該等指令 不在指令快取記憶體304中時),並將該等擷取的指令置放 在指令佇列303中《將指令從指令佇列303中分配到載入單 儿3 05、執行單元3〇7和分支單元3〇9中用以執行。該等單 元( 305、30 7、309和暫存器檔31】互動,以存取該等指令 所使用的該等運算元,並將執行該等指令所產生的該等結 ^ ^ ί。暫存器檔31 1典型地包括一般暫存器(GPR)、浮點 存器(FPR)和條件暫存器(CR)。載入單元3〇5亦和資料快 (己袖隐體^ ο*2、δ己憶體次系統3 01互動’以載入該等指令 用的= 單元307和/或分支單元309執行的該等指令)所使 圃貝;::,並儲存該等執行單元所產生的結果。 以古炫=個方塊圖’例證說明根據本發明一個體系、用 二支二圖3該系統執行的不依序 說,圖4為圖3中所示至少-個載入單丄 ^ Μ4Π1 .,鬼圖。该至少一個載入單元305包括1控 較囉立址產生邏輯4〇2、載入順序緩衝器4 0 3 ;比 、耳’及—個用以繞過的資料選取裝置4〇 5。
第39頁 五、發明說明(34) 時模式中,當處理-個正規的載入指令 -ΜϋΙ: Φ 1 k輯4〇 2產生一個記憶體位址,並從該記憶 體位址肀謂取一個咨时ε # Μ β # Λ k Α責枓員。依照該載入指令的特殊格式, 可根據δ玄載入指令中所扣— 肀所私疋暫存器擋311的一個暫存器 (或數個暫存益)中讀取沾.菜質- M ^ ^ ^ x ^ 的運开兀產生該記憶體位址,或可 根據该載入指令中所指仝 奴加鉍七把、 厅心疋之暫存器檔311的一個暫存器(或 數個暫存器)和替代沓1 士 μ t iL ^ 代貢sfL中碩取的運算元產生該記憶體位 址。接著,位址產生邏短4 n 9收# ^ ^ & &避輯402將該產生的記憶體位址傳遞 給貝料快取記憶體3〇2。從次时⑴ Μ ^ ^ ,Λ Ο Λ t / 從貝料快取記憶體30 2中或從記憶 肢-人系統3 0 1 (如該要求的咨伞1 由嗜你外* , Α受凡的身料項未存在快取記憶體302中) 中4取忒要求的資料項,祐 七认次w 並接者經由選取裝置405將該要 未的資料項送回和寫入暫 r (w Μ 评益槽311中的該目地暫存器中 (此係由控制邏輯4〇 1所控制的)。 於一第二個操作模式中,蚩 η± μ s處理一個不依序載入指令 日π ’位址產生邏輯4 〇 2產生一伽 μ ^ w ^ ^ 個屺憶體位址,並從該記憶 ^ M 依照成載入指令的特殊格式, 可根據該載入指令中所指定 f弋斛加此 、丄i 疋之暫存器檔3 1 1的一個暫存器 (或數個暫存器)中讀取的運曾 根據該載入指令中所指定:c憶體位址’或可 數個暫存m和替代資訊中^V^3u的一個暫存器(或 址。接著,位址產生邏輯402 :=元產生該記憶體位 趴咨Ψ1 u> a* ο η ο β將該產生的記憶體位址傳遞 給貝枓快取記憶體3 0 2。從蒈Μ α 寸t ^ / # μ貝抖快取記憶體302中或從記憶 體-人糸統3 〇 1 (如該要求的資挝τ5 + > 1 ψ ^ ,. κ 、抖項未存在快取記憶體3 0 2中) 中凟取邊要求的資料項,並接著 Τ ; 饮香經由選取裝置4 〇 5將該要
第40頁 4469 12 五、發明說明(35) 求的資料項送回和寫入暫存器檔311中的該目地暫存器中 、此係由控制邏輯4 1所控制的)^同時,控制邏輯4 〇丨將栽 入順序緩衝器4〇3導向儲存一個記錄,其中該記錄係由以 下所組成:該位址-該資料項係從該位址中載入的、該資 料形態(選擇性的)、由包含該要求的資料項之該基本結構 保證為原子的該最大單位、及該載入標簽識別碼(隱含地 儲存在圖4中’如該表中的一個索引(即載入順序緩衝器 403 ))。 於一第三個操作模式中,當處理本發明該,檢視位址干 擾和條件式載入暫存器,指令(干擾測試和旁路)時,位址 f生邏輯402產生一個記憶體位*止,並從該記憶體位 :二a: : 2項。*照該檢視位址干擾和條件式载入暫存 特殊格式,可根據該檢址擾 暫存器指令中所中十私+ 文π 1來件式栽入 ^ # II) t It Λ11 f 311 ^ ^ ^ ^ 檢視位址干擾和的條運件生/記憶體位址,或可根據該 丁役和條件式載入暫存器指令中所指 Λ 檢3 1 1的一個餐在突γ +如_ , 疋之暫存器 π “ (或數個暫存器)和替代資訊中、 運异兀產生該記憶體位址。 '巩中項取的 控制邏輯4 〇 1存取與夺彡 器指令中所指定之哕載“ 址干㉟。條件式栽入暫存 將泫包含的記憶體位址提的遠屺錄,並 J生邏-402將該記憶體位址(該產生的記憶撕接者,位址 檢視位址干擾和條件式栽入暫存器指令的二=位址作為該 給比較邏輯4 〇 4 I接著 μ 個結果)提佴 接者比較邏輯404比較兩個你 权仏 勺1固位址。當該
V^' 4469 1 2 丨五、發明說明(36) 4位址相匹配或指示一個記憶體交疊時,比較邏輯4 〇 4將 i 此指示給資料選取裝置4 0 5。於位址相匹配或交疊的事例 i 中’將儲存在該條目其資料欄(在載入順序煖衝器4 0 3中存 1取的)中的該資料項提供給暫存器樓3 π,用以回寫。即現 . !在將最初提供給該不依序載入指令(儲存在載入順序緩衝 . ;器4 〇 3中)的該資料項、提供給該依序載入指令。否則’該| * 1依序載入指令其目前儲存在暫存器檔311中的該數值將維 . i持不變(即在該不依序載入和該依序載入之間未偵測出任 :何干擾)。在控制邏輯401的控制下,選取裝置405僅可選 取一個位元的子集合(係由該旁路條目從載入順序缓衝器 — 403中提供的)寫至暫存器檔3U中給該依序載入。此對一 個部分交疊之干擾的不依序和依序指令(已超過該記憶體 系統的該等元子數單位)係合適的。 於一第四個操作模式中,履行該指令deal l〇c_n以將載| 入順序緩衝器4 0 3中的條目解除配置。該指令為選擇性 的’且可如疋將其省略(if s〇 desired)。 該上面所述的體系對該不依序載入指令移動到其上的每| 一個載入上的每一個載入導引一個額外的指令(即該檢視 丨 位址干擾和條件式載入暫存器指令),並對每一個不依序| 移動的載入指令(就一個或多個其它的載入指令而言)導引丨一 一個指令(即該deal ioc指令)。雖然就該原始的程式而言 此為經常性的開支’但和先前的裝置(利用一個或多個指i 令偵測個旁路條件;且當偵測出干擾時’則執行一個回i _ 復序列)比較起來’該費用係有助益的。除了該存在的回
第42頁 446912 五、發明說明(37) 復碼對該暫存器配置裝置產生不利的指令快取記情 和限制之外,該等先前裝置的該序列亦要求"儲^致果 空間"和執行該編碼的時間"兩者。就本發明而言碼的 產生該程式時決定不依序地移動一個載入操作,因在 ^ . 5又可妙批 行該移動其預期的利益加重權衡該經常性支出的影響’執 於另一個選擇性的體系中,藉一個比較指令序列(咬 前所述該單一的記憶體交疊指令)利用一個陣列(例如5先 順序緩衝器4 0 3 )中、有關先前不依序載入操作的該資f入 試記憶體交疊’並接著藉一個補充指令序列、條^二=測 將 儲存在該陣列中的該數值移動到該位址交疊事伽由 q Τ琢依序 栽入指令所指定的該目標暫存器中。該等補充的指令可包 括一個條件式移動指令’或一個條件式移動指令跟在其t 的一個條件式分支指令,亦或其它任何對”將儲存在該y 依序載入指令產生之該記錄中的該數值移動到該依序載入 指令所指定的該目標暫存器中"具有影響力的指令序列。 又於另一個選擇性的體系中,利用本發明在非循環的編 螞區塊(例如基本的區塊或超區塊)中、以一個區塊内連續 執行的指令其嚴格昇冪的指令位址排程指令。於該一個^ 例中,一個不依序載入指令所指定的該載入標簽識別碼為 讀原始載入指令的程式計數器位置(在其邏輯程式的順序 中)。圖6為一個方塊圖,例證說明根據本發明一個體系、 用以支援圖3或圊5 έ玄荨糸統執行的不依序載入操作之j亥等 硬體資源。更明確地說,可將圖6考慮成根據本發明—個 體系、履行圖3中所示載入單元3 〇 5之一個詳細的方塊圖。
第43頁 4469 1 2 r------------------------------------—________________ 丨五 '發明說明(38) I該載入單元305包括:控制邏輯601 ;位址產生邏輯6〇3 ; 一個載入順序表6 0 5 ; —個干擾測試和優先編碼器6 〇 7 : 一 ;第一個用以繞過的資料選取裝置6 0 9、及—第二個用以繞 !過的資料選取裝置6 i 1。 | s 一個臆測的載入指令执行時’載入單元3 0 5記錄該記 憶體位址(其中係從該記憶體位址中載入該資料的)、從記 i憶體令接收的該資料數值和一個内容可定址表6〇5中該臆 測載入指令(指令號碼)的邏輯程式位置。可以許多種方式 指定該邏輯的程式位置。例如,在該指令中編碼的一個補 充指令欄位、一個特殊的指令前加字、或一個或多個可使 用的補充電腦指令。 當一個依序載入指令執行時,載入單元3〇5在位址產生 603^所產生的該記憶體載入位址上執行一個cam(内容可定 址記憶體)存取,檢視該一個位址先前是否已由一個不依 序載入操作存取過、而具有一個比其本身(在一個不依序 ;載'存取該表之事例中、利用該載入操作的邏輯程式位 置)¾的程式位置(在表605中儲存成—個指令號碼),並在 一:干擾測試和優先編碼器,6〇7中參考該相同的記憶體j 二置。⑹先前已由一個不依序載入操作存取位址產生單元丨 603所產生的該記憶體載入位址時,則證實該先前處理的 不依序載入和該目前的載入操作干擾,並從與資料選取裝 置6 1 1中遠干擾條目才目關聯的該資料中致能繞過。表6 〇 5中 .可月匕存在多個與個特殊記憶體位址相關聯的條目,可將 該等多個條目中一個以上的條目才見為干擾。士 〇多個條目干
4469 12 五、發明說明(39) :擾一個載入操作,則干擾測試和優先編碼器6 0 7利用—個 優先編碼的設計’以確保從該干擾條目中提供該最低的邏 丨輯程式位址(在表605中儲存成一個指令)給該資料項(如該
I I不依序載入指令最初指定的、和表605中儲存的) ! 當該程式計數器達到該不依序載入指令其原始邏輯程式 順序的數值時,則控制邏輯6 0 1將表條目解除配置。
! 該裝置賣掉程式空間作為硬體複合性。可證明不需要任 ;何補充的指令管理該一種體系。應如是履行靜態排程、使 不對"任何無法在表6 0 5中儲存的載入指令(因該表中不足 I的記憶體容量而無法儲存)”作不依序的安排。可察知當一 個内容可定址記憶體為表6 0 5其較可取的履行時,則一個 :熟知該技藝的人將能夠考慮其它的記憶體結構(提供一個 I類似表6 0 5的功能)、並維護本發明的精髓和範疇。 於該干擾測試和資料旁路中利用動態排程和硬體資源之體 % 丨 傳統履行一個能夠動態排程指令的處理器(一個不依序 配給處理器),包括以下特徵:
1. 一種用以不依序配給指令之裝置,包括"在該等指令 之間偵測依存性”、π將一個指令使用的該等暫存器重新命 名Μ 、及Μ偵測一個指令所使用之該等資源的有效性”的能 力: 2. —種用以維持該處理器其不依序狀態之裝置,當執行 指令(不依序地執行)時,該裝置反映等指令的結果; 3 .—種用以"依程式順序、撤回指令"、且以該等正在
第45頁 ,4469 】2 五、發明說明(40) 撤回之指令的結果同時更新該依序的狀態"之穿置. 4_ 一種·,在未更新該依序的狀態下、用;依程式順: 回一個指令(有效地取消該正在撤回之指令的結果"、 ,, 用以從該正在撤回的指令開#、將該程式依序地且 (意指取消該不依序狀態中存在的所有結果)”之見。轨订 當該等正在撤回之指令的結果為正確的時Ί 令、或因某一外部的事件而產生某—仃不亥正在撤回的指 利用裝置4。 產生罕$正常的狀況時,則 圖5為一個傳統電腦處理系統(例如包—^ 器)的功能方塊圖,該傳統的電腦處理系 固超純量處理 作的動態重排”和"該干擾測試和資料旁糸△支援”記憶體操 體的履行”。即圖5的該系統包括利用該f列其植基於硬 置、支援指令重排所需之該等硬體資源面列不的裝 載入操作之前、支援該等不依序載入操包括在依序 硬體資源。該系統由以下組成:一個記 仃所秦之該等 一個資料快取記憶體502 ; —個指令快次系統50 1 ; 個處理器單元5。。。處理器單元500?括取記憶心4… 5 0 3 ;數個記憶體單元(Mu)5〇5,用以個指令件列 作;數個功能單元(Fu) 5 0 7,用以執《丁载入和儲存操 運皙·一伽八*时-,β ^ Λ 丁 iE•數、邏輯和浮點 ,开,個为支早兀(BUb09 ; —個暫存器檔Sli ;—個暫 存器映射表520 ; —個閒置暫存器佇列522 ; 一個分配表 5 2 4 ; —個撤回佇列5 2 6 ;及一個依序的映射表5 2 8。該代 表性的結構係根據M. Moudgi丨丨、K. pingai丨和
第46頁 ^ 4469 1 2 五、發明說明(41)
s. V a s s 1 1 1 a d 1 S在該文章”暫存器重新命名和動態臆測··一 I 種選擇的方法(第2 6屆微結構國際年討論會年報,2 〇 2 - 1 3 i 頁,1993年12月)"中所說明的。 I 於圖5中所描述的該處理器中,在分支單元5〇9的控制 i · 下、從指令快取記憶體504中(或從記憶體次系統5〇1中擷 | . 取指令’當該等指令不在指令快取記憶體5 〇 4中時)擷取指I · 令’並將該等擷取的指令置放在指令佇列5 〇 3中,且隨後 卜 從指令符列5 0 3中將該等指令分配。根據暫存器映射表5 2 〇 j 的内容將該等指令使用、用以指定運算元的該等暫存器名| 稱重新命名,其中暫存器映射表52〇的内容指定該目前的i 一 映射"從結構話的暫存器名稱映射到實體的暫存器"。將從 間置暫存器佇列522中擷取的實體暫存器指定給,,該等指令 所使用、用以指定該等結果的目地"之該等結構化暫存器 名稱,其中閒置暫存器佇列5 2 2包含了該處理器目前未正 ,,用,該等實體暫存器的名稱。藉著將該等實體暫存器丨 指定給該等指令所指定之該等結構化目地暫存器 更新暫存器映射表520。將重新命名其所有暫存器的指令乂 : =放在分配表524中。亦以程式的順序將指令置放在撤回丨 仔列5 2 6中,包括該等指令的位址、實體和結構化暫存器 的名稱。當可利用該等指令所使用之該等所有的資源時 一 〔已將該等預期的運算元指定給實體暫存器 _ 為閒置的),則從分配表524中分配指令e從暫存器m =取該指令使用的該等運算元’其中暫存器樓川 地包括一般暫存器(GPR)、浮點暫存器(fpr)及條件暫存器·
^469 12 :五、發明說明(42) -------- -----— (CR)。在一個相對應的記憶體單元505、功八 支單元50Θ中執行指可At技τ ⑽功犯早几507或分 完成,將該等指令的7二此* '、依序地執行)。一旦執行 配表524 t的指令果置放在暫存器檔5"中。通知分 暫存器”。通知撤Θ 候该等指令完成執行以設定該等實體 等指令是否產生任柄丁列526'.,該等指令完成執行",包括該 526中(從該仔列^ C以程式的順序、從撤回仵列 如一個指令未產4 /則端)移除完成的指令。於撤回時, 便結構化的暫存器名壬=卜二更新依序映射表528、以 存器,其中兮暫存器播511中該等實體的暫 ; 生的結果.^ ^的暫存器包含該正在撤回之指令所產 衣,將依序映射表528Φ·^耷αα 回閒置暫存器仔列522射中表528…“的暫存器名稱送 在撤回f?列5ί?κ如Φ個/曰令產生一個例外,則程式控制設定 除(清除I 6中正在撤回之該指令的位址上。此外,清 外,將=!注列526 ’如是取消所有未撤回的指令。此 上,並妝/益映射表52〇設定在依序映射表528的該内容 暫存卷^壬何不在依序映射表528中的暫存器增加到賢置 飞件益佇叫522中。 除了 μ 件Ϊ像β面的該等元件之外,超純量處理器可包含其它元 冰巧預測該等分支結果的分支歷史表。 前月’可藉下面將一個支援載入指令重排(就先 增大.‘令而言(如圖5中所示))之傳統的超純量處理器 種用以標誌載入指令(就先前的栽入指令而言、該
第48頁 4469 1 2 五、發明說明(43) i 等載入指令係不依序配給的)之裝置,其中; 2 . —種”當擷取指令時、將該等指令標以號數"、且"判 i 定一個指令在該指令流中係較早發生的亦或後來發生的” | 丨之裝置。可以一個選擇性的裝置取代、以就另一個指令判I !定一個指令是否較早發生或後來發生的。 3, —種儲存有關"已不依序執行之載入操作”的資訊之裝 j置,包括M該等載入操作的位址(依該程式的順序)"、''該 1 :等載入操作其存取的位址”,及對該最大保證原子單位(包 '含該載入的資料項)讀取的該資料項數值。 i 4 · 一種"當就一個或多個不依序載入指令執行一個載入
I 指令時、用以執行一個干擾測"、和"當多個指令干擾一個 | 載入操作時、用以執行優先編碼”之裝置。 : j 5. —種用以繞過該與一個干擾載入操作相關聯的資料項 1 :之裝置;及 6. —種”當該不依序狀態從撤回佇列5 2 6中撤回至暫存器 I檔5 1 1中(依該裎式的順序)時、用以刪除在步驟(3 )中產生
j I 的該記錄”之裝置。 可如下將本發明提供的該等裝置、連同圖5中所述該傳 統的不依序處理器中該等有效的裝置一起使用。當每一個 指令進入指令佇列5 0 3中時,即以一個指令號碼將每一個 指令標以號數。可在一個先前的載入指令之前先從分配表 5 2 4中分配一個載入指令。該一種載入指令表示如下以作 為一個’不依序’載入操作。於該一種事例中,將撤回佇列 :5 2 6中相對應至該載入指令的該條目標誌為一個不依序載
第49頁 446912 五、發明說明(44) 入。 ! 最好藉兩個計數器完成"從分配表5 2 4中將一個不依序載 I入操作分配至一個記憶體單元5 0 5中、用以執行"之偵測’
1該等兩個計數器為一個11載入-擷取計數器”和”一個”載入_ 分配計數器"。當一個載入操作增加到分配表5 2 4中時’則 1增加該載入-擷取計數器。當一個載入操作傳遞至一個記 ί憶體單元5 0 5中、用以執行時,則增加該載入-分配記數 I器。當該載入指令增加到分配表5 2 4中時,則將該載入-擷 取計數器其目前的内容接附在一個載入指令上。當該載入 指令從分配表524中分配到一個記憶體單元505中、用以執 1行時,如接附在分配表5 2 4中該載入指令上的該數值和該 載入分配計數器當時的内容不同時,則將該載入指令識別 丨為一個不依序載入操作。注意,就正在不依序配給哪一個 載入指令而言、該等兩個計數器數值間的差異相對應至該 正確的載入操作總數。如用以在載入順序表6 0 5中增加條 1目的空間為有效的時,則不依序載入指令僅分配至一個記 憶體單元505中。 載入順序表6 0 5為一個單一的表,其係由所有的記憶體 單元5 0 5同時存取的(即雖然可維持多個實體複印以加速處 理,但卻僅維持一個單一的邏輯複印)。注意,如使用多 ;個實體複印,則該等多個複製的邏輯内容必須永遠對所有 I的記憶體單元5 0 5反映該相同的狀態。 將該正在執行的指令的指令號碼、和是否臆測性地執行 :一個指令的該事實傳遞給記憶體單元5 0 5、以給每一個被
第50頁 446912 一____―一一· 一 'J — ------— —— _________________________ 五、發明說明(45) 配給的載入操作。 圖6為一個方塊圖,例證說明根據本發明一個體系、用 丨以支援圖5該系統執行的不依序載入操作之該等硬體資 丨 !源°更明確地說’圖6為圖5中所示記憶體單元5 〇 5的一個 · |詳細方塊圖。記憶體單元505包括:控制邏輯601 ;位址產i , 生邏輯6 0 3 ·,一個載入順序表6 0 5 ; —個干擾測試和優先編 - !碼器6 0 7 ; —第一個用以繞過之資料選取裝置6 〇 9 ;及一第 . 二個用以繞過之資料選取裝置6 1 1。利用干擾測試和優先 ; |編碼邏輯607正在駕駛之該第一個資料選取裝置6〇9、以從 載入順序表605中選取該(邏輯上)最早干擾的不依序載入 一 的該資料數值。利用該第二個資料選取裝置6 1 1選取資料 | 丨快取記憶體5 0 2 (或記憶體次系統5 〇 1 (於—個快取記憶體未! 得到的事例中))送回的該資料、或載入順序表6〇5中的該 貝料°利用第二個資料選取裝置6 1 1選取的該資料作為將: 來委a託給暫存器檔5 11之用,視干擾測試和優先編碼邏輯; 6 0 7疋否偵測出干擾而定。將察知’可將第一個和第二個 f料選取裝置6 0 9、6 11執行的該等功能整合至一個單一的 貧=選,裝置中。載入順序表605其較可取的履行為一個丨 内谷可疋址έ己憶器(C A Μ )。然而,對一個熟知此技藝的人 來說’將察知可因此以其它在實質上提供該相同目地的記 ” 憶體結構取代β 旦接枚到—個載入操作時,即由位址產生單元6 0 3產 :生一個位址’並將該產生的位址分配到資料快取記憶體 | 5 0 2 。jfe j 较者’存取資料快取記憶體502以提供一個資料 .
第51頁 4469 12 五、發明說明(46) 項。如在資料快取記憶體5 〇 2中未發現該資料項,則存取 記憶體次系統501以提供該資料項。同時,控制邏輯601以 位址產生單元603產生的該資料位址存取載入順序表605。 丨干擾測試和優先編碼器6 0 7檢視干擾,並偵測裁入順序表 丨6 0 5中是否存在一個條目 '其中該條目與資料快取記憶體 502該目前的存取(或一個包含該目前位址其位址之元子單 丨元的该目刖存取)參照該相同的位址,且信測該記錄是否 另外與一個後來的指令號碼(在該目前正在執行的載入指
令之後)(即就該目前正在處理的載入指令而言、該記錄的 載入指令為不依序的)相關聯。如偵測出干擾時則干擾 測試和優先編碼器單元607導引資料選取裝置61 i、'以將資 訊從載入順序表6 0 5中傳遞給暫存器檔5丨i,或否則從資 快取記憶體5 0 2中傳遞給暫存器檔5 n。於 、 ' ,丄 1於一個最佳化的體 不中’如遇到一個繞過的狀態,則可抑制 ⑴·J啊剌貧料他取惰體 502或記憶體次系統501的存取。 十极取’隐體
如遇到多個匹配時,則干擾測斌,备 』A和慢先編碼器6 0 7基 資料選取裝置6 0 9選取具有該最早指八狀版,上 ψ 取干如?唬碼(在嗜g俞讲 的號碼之後)的該表條目作為資料選取步罢R、’ Λ曰扪 資料來源。 “仏取裝置611的一則 如邊執行的載入操作標誌為不依序,則將提供达 檔⑴的該資料值、連同該指令的邏輯程式位址和。該暫j έ己憶體位址一起記錄在載入順序表6 〇 5中的一個 ^ 注意’就某些不依序載入指令而言、載入沪八Μ 的,且就其它的依序載入指令而十、載入為依’ 〇 載入指令可為不4
446912 五、發明說明(47) 的。如是,可藉一個單一的指令履行該繞過和該記錄邏輯 兩個部分。 ! 一旦從撤回彳宁列5 2 6中撤回一個不依序載入操作的該結 I果時,即將一個指令或控制信號傳遞給記憶體單元5 0 5、 ;以移除該與該撤回的指令相關聯之條目(例如藉命名該獨 ! 一無二的指令號碼)。 : 如遇到一個分支的錯誤預測、且從撤回緩衝器中清除一 丨個或多個臆測執行的不依序載入指令時,則將在同時移除 丨根據本發明之記憶體單元50 5的旁路表結構中該等適當的 條目。 : 於該設計中利用指令號碼、以一個循序(依序)執行該輸 ί入程式的方式設立該等指令的順序。該指令號碼必須能夠
I 獨一無二地識別"在任何指定時間、可由該處理器處理的”: 所有的操作,且該指令號碼在設立任何兩個指令(在任何 i ί指定時間、由該處理器同時處理的兩個指令)之間的關係 上必須為可用的。例如,指令號碼可由一個單一的號碼組 丨 | 成,該單一的號碼具有足夠的寬以至少編碼η個指令(可在 該處理器中的任何點上及時i η - f 1 i g h t (處理)的指令數)的 兩倍。接著,取模函數-算術可設立-”任何指令具有一個 號碼,如該號碼位在該目前指令號碼之前的η -1個號碼的 ; ; 範圍内,則該等指令在邏輯上應在該目前的指令之前"; "任何指令具有一個號碼,如該號碼位在該目前指令號碼 之後的η-I個號碼的範圍内,則該等指令在邏輯上應接續 '' 在該目前的指令之後”。
第53頁 446912 .—____________ - —— —————-—1—-—— 1 1 *~" 1 i 丨五 '發明說明(48) j 選擇性的編號設計,可由"利用該指令位址和每一個採 丨取的分支其一個補充的分支前加字”所組成。該分支前加 I字可採取任何形式的號碼,像是參考一個分支表的一個取 模函數計數器。選擇性履行的指令編碼可參考一個硬體 I ‘ !表,該硬體表在該指令流上課加一個排序。此可根據一個 :_ . 丨現存的硬體元件C如撤回彳宁列5 2 6 )或一個履行該獨有目地 丨 i ; ί排序指令的硬體裝置。又另外一個選擇性的履行可根據該 .
說明的設計而僅計算該等載入指令,例如藉利用該載入擷 :取計數器的數值將載入操作編號。 I 本發明一個選擇性的體系可根據該等正在存取的記憶體 ! 一
I I位址產生載入順序旁路表條目,而非根據該指令號碼儲存 ί條目。該體系免除了在干擾測試和優先編碼器6 0 7中優先 丨編碼的需求,但卻在指令(就相互之間而言、係依序的指 令;但就一第三個載入操作而言、係不依序的指令)之間 !導致補充的旁路條件。注意,雖然該行為可能不合人意 1 (因其減少了該速度-η由該處理器將該數值送回給一個指 !定的記憶體位置、用以讀取"和"由其它處理器提出該數值 :流π係以該速度同時進行的),但該執行仍為寫入串列的。 本發明另一個體系可動態地產生指令、並將指令插入指 令佇列5 0 3中。該體系動態地產生一個指令排程*該指令 一 排程類似於該上面所述該靜態體系的該干擾測試和資料旁 路。如是,該處理器執行的該等指令對該等靜態和動態體 :系而言為相似的,該唯一的差異為”在該動態的體系中、 .. 係在執行該程式時由該處理器產生該排程的;而在靜態的
第54頁 :446912 五、發明說明(49) ί體系中、則係由該編譯程式產生該排程的”。 I 雖然已於此處就該等伴隨的圖示說明了該等例證性的體 系,但將察知並未將本體系和方法限制在該等嚴格的體系 ;上,對一個熟知此技藝的人來說,在未偏離本發明的範疇 丨和精髓下可在本體系和方法中作其它不同的變更和修正。
I |意欲將該等所有變更和修正包括在本發明的範疇内’如該 !附加的申請專利範圍中所定義的。
第55頁
Claims (1)
- 4469 1 2 六、申請專利範圍 在一個實行不依序執行的電腦處理系統中、 安排指令執行之方法,該方法包括以下步驟: 下一個指令,並將該指令從其所在之一個指 前的位置移動至一個較早的位置上; 選取的指令是否可參考一個讀取存取的記憶 1. 一種用以 選取 令序 體位 時, 選取 行該 的指 令已 憶體 一個 未選 時, 令上 以作 2 ‘ 在先 驟。 列中 判 置; 當 則判 的指 設 旁路 令上 從該 位置 位址 取指 當 判定 ;及 增 為該 如申 前移 該目 定該 該選 定該 令是 立一 序列 時, 等記 的一 中讀 令其 該選 該選 力U — 等未 請專 動至 取的指令可參考該讀取存 可不定地參考該讀取存取 否在先前移動至該選取的 個旁路序列,以於執行該 ,且當該等未選取的指令 及當”記憶體位置的位址" 憶體位置的位址中讀取存 個位址”-該選取的指令欲 取存取資料,相同時,則 先前讀取存取的資料傳遞 取的指令可參考該讀取存 取的指令是否在先前移動 取的記憶體位置 的記憶體位置之未 指令上; 選取的指令期間執 先前移動至該選取 -該等未選取的指 取該資料和M該記 從該記憶體位置的 該旁路序列將該等 給該選取的指令: 取的記憶體位置 至該等未選取的指 個裝置、用以儲存該選取指令的一個記錄, 選取指令將來參考之用。 利範圍第1項之方法,其中當該選取的指令 該等未選取的指令上時,則執行該增加的步O:\61\61540.ptd 第56頁 4469 1 2 .六、申請專利範圍 i 3.如申請專利範圍第1項之方法,其中當該等未選取的 指令可不定地參考該讀取存取的記憶體位置時’則執行該 !增加的步驟。 4. 如申請專利範圍第1項之方法,更進一步包括以下步 驟: ; 判定是否仍有指令遺置而欲被選取;及 當有指令遺置而欲被選取時,則折返至該選取的步 丨驟D 5. 如申請專利範圍第1項之方法,更進一步包括以下步 | 驟: ; 指定一個載入標簽識別碼給一第一個指令,其中該 丨第一個指令已在先前移動至一個不同的指令上,該載入標 i 1簽識別碼識別該不同的指令。 I 6. 如申請專利範圍第5項之方法,其中判定該等未選取 的指令是否在先前移動至該選取的指令上之該步驟,包括 | 以下步驟: 判定是否已將載入標簽識別碼指定給該等未選取的 ! 1 指令;及 丨 判定該等載入標籤識別碼是否識別該選取的指令。 ! 7. 如申請專利範圍第5項之方法,其中判定該選取的指 令是否在先前移動至該等未選取的指令上之該步驟,包括 :以下步驟: ! 判定是否已將載入標簽識別碼指定給該選取的指 令:及 1第57頁 446912 六、申請專利範圍 判定該等載入標籤識別碼是否識別該未選取的指 8 .如申請專利範圍第5項之方法’更進一步包括以一個 不依序載入指令字元儲存該載入標簽識別碼之該步驟。 9. 一種用以在一個實行不依序執行的電腦處理系統中、 安排指令執行之方法’該方法包括以下步驟: 選取一下一個指令,並將該指令從其所在之一個指 令序列中該目前的位置移動至一個較早的位置上; 判定該選取的指令是否可參考一個讀取存取的記憶 體位置; 當該選取的指令可參考該讀取存取的記憶體位置 時,則判定該選取的指令,就可參考該讀取存取的記憶體 位置之未選取的指令而言是否為一個依序的指令; 設立一個旁路序列,以於執行該選取的指令期間執 行該旁路序列,且該選取的指令,就該等未選取的指令而 言為一個依序的指令時,及當M記憶體位置的位址-該等 未選取的指令已從該等記憶體位置的位址中讀取存取該等 資料項和該記憶體位置的一個位址"-該選取的指令欲從 該記憶體位置的一個位址中讀取存取一個資料項相同時, 則該旁路序列將該等未選取指令其先前讀取存取的資料項 傳遞給該選取的指令; 當該選取的指令可參考該讀取存取的記憶體位置 時,則判定該選取的指令,就該等未選取的指令而言是否 為一個不依序指令;及O:\61\61540,ptd 第58頁 446912 六、申請專利範圍 當該 不依序的指 的一個10, 令為一 執行該11. 的指令 該增加12. 個記憶 存取該 13. 步驟: 依序指14. 存在一 1 5. 錄在指16. 步驟: 的該等 不依序 記錄 如申 個不 增加 如申 可不 的步 如申 體位 資料 如申 指定 令, 如申 個不 如申 定到 如申 當已 依序 指令 選取的 令時, ,以作 請專利 依序的 的步驟 請專利 定地參 驟。 請專利 址其中 項,和 請專利 一個識 和給該 請專利 依序指 請專利 那裡之 請專利 執行該 指令、 其記錄 指令,就該等未選取的指令而言為一個 則增加一個裝置、用以儲存該選取指令 為該等未選取指令將來參考之用。 範圍第9項之方法,其中當該選取的指 指令(就該等未選取的指令而言)時,則 〇 範圍第9項之方法,其中當該等未選取 考該讀取存取的記憶體位置時,則執行 範圍第9項之方法,其中該記錄包括一 該選取的指令已從該記憶體位址中讀取 —個與該資料項相關聯的數值。 範圍第9項之方法,更進一步包括以下 別碼給每一個不依序指令、以識別該不 等就該不依序指令而言為依序的指令。 範圍第1 3項之方法,其中該識別碼係儲 令字元中。 範圍第1 3項之方法,其中該識別碼係記 該不依序指令的記錄中。 範圍第1 3項之方法,更進一步包括以下 識別碼所識別、且指定給該不依序指令 且判定為無干擾時,則增加用以破壞該 之裝置。O:\61\61540.ptd 第59頁 446912 六、申請專利範圍 I 17. 如申請專利範圍第9項之方法,其中將該等不依序 _ 指令的記錄安排成"由一個後來的配置請求自動替代"。 18. 如申請專利範圍第9項之方法,其中一個儲存在該 記錄中的資料單元為一個保證原子數的最大可能資料單 ! 元。 19. 如申請專利範圍第9項之方法,更進一步包括以下 !步驟:實行優先編碼,以確保當多個不依序指令和該依序 I :指令參考該相同的位址時,係將一個具有該最低邏輯程式 位址的資料項傳遞給該依序載入指令。 ! 2 0,一種用以將多次讀取存取一個電腦處理系統中一個 記憶體位置期間所獲得之資料數值之間強制執行一致性之 方法,其中"由至少一個處理器單元執行指令序列”、"由 一個不依序載入指令和至少一個其它的載入指令啟始該等 丨 多個讀取存取π ,該方法包括以下步驟: 執行該不依序載入指令控制該至少一個處理器單 ; ! '元,以從該不依序載入指令所識別的該記憶體位置中至少 讀取存取一第一個資料項; 丨 丨 產生該不依序載入指令的一個記錄、給該至少一個 其它的載入指令使用之,其中該記錄包括該記憶體位置的 一個位址,其中係從該記憶體位置的該位址中載入該第一 個資料項的、和一個與該第一個資料項相關聯的數值;及 執行該至少一個其它的載入指令,並於執行該至少 —個其它的載入指令期間控制該至少一個處理器單元、以 執行以下的步驟:第60頁 4469 1 2 六、申請專利範圍 判定”該記憶體位置的該位址"-該不依序指令從 該記憶體位置的該位址中載入該第一個資料項是否和 一 個位址-該至少一個其它的載入指令欲從該位址載入一個 資料項交疊或相同的;及 當該等位址為相同的或交疊的時’則分別將該第 ;一個資料項或該第一個資料項的一部分從該記錄中傳遞給 該至少一個其它的載入指令。 21. 如申請專利範圍第2 0項之方法,更進一步包括以下 步驟:當該處理單元達到該不依序載入指令其所在之該等 指令序列中的一個原始位置時,則破壞該記錄。 22. 如申請專利範圍第2 0項之方法,更進一步包括以下 步驟:增加用以移除該記錄(在該不依序載入指令其所在 之該指令序列中的一個原始位置上)之裝置。 23. 如申請專利範圍第2 0項之方法,更進一步包括以下 步驟:指定一個識別碼給每一個不依序指令,以識別該不 依序指令、和該等就該不依序指令而言為依序的指令° 2 4. 如申請專利範圍第2 0項之方法,其中執行該不依序 載入指令之該步驟更進一步包括以下步驟:控制該至少一 個處理器單元,以將該第一個資料項置放在該不依序指令 所識別的一第一個目標暫存器中。 25. 如申請專利範圍第2 0項之方法,其中該等判定和傳 遞的步驟包括:欲由該至少一個處理器單元執行的一個單 一指令。 26. 一種用以將多次讀取存取一個電腦處理系統其一個 446912 六、申請專利範圍 丨記憶體次系統中一個位置期間所獲得之資料數值之間強制| 丨執行一致性之裝置,其中由至少一個處理器單元執行指令| 序列、由至少一個不依序載入指令和一個依序的載入指令 | i啟始該等多個讀取存取,該裝置包括: 儲存裝置,用以儲存該至少一個不依序載入指令的 :一個記錄,其中該記錄包括該記憶體次系統中該位置的一 i :個位址,其中係從該位置的該位址中讀取存取一個資料 ; !項、和一個與該資料項相關聯的數值; | 比較邏輯,當處理該依序指令時,用以比較”該記 ; I . 丨憶體次系統中該位置的該位址該至少一個不依序載入指 丨 :令從該位置的該位址中讀取存取該資料項和''該記憶體次 I 丨系統中該位置的一個位址"-該依序載入指令欲從該位置的I 該位址中讀取存取一個資料項: ! 控制邏輯,用以導引該儲存裝置儲存該記錄,用以 丨 存取該至少一個不依序指令的該記錄、以將該位址提供給 該比較邏輯;及 : 一個資料選取裝置,在該控制邏輯的控制下當該比 較邏輯比較該等位址的結果為相同或交疊的時,用以分別 將"儲存在該儲存裝置中的該數值”或H儲存在該儲存裝置 中的該數值的一部分"提供給該依序指令。 27. 如申請專利範圍第26項之裝置,其中該儲存裝置為 丨一個CAM結構''或''該記憶體次系統中預先指定用以儲存記 錄的一個區域"。 28. 如申請專利範圍第2 6項之裝置,其中該記錄更進一第62頁 4469 1 2 六、 申請專利範圍 步 包 括 一 個 識 別 碼 9 用 以 識 別 相 對 應 至 該 不 依 序 載 入 指 令 的 依 序 載 入 指 令 〇 29 • 如 中 請 專 利 範 圍 第 28 項 之 裝 置 其 中 該 裝 置 更 進 一 步 包 括 '用以移除儲存在該储存裝置中的該記錄之裝置( 當 已 執 行 該 識 別 碼 所 識 別 之 相 對 應 至 該 不 依 序 指 令 的 該 等 依 序 指 令 > 且 判 定 為 無 干 擾 時V 〇 30 如 中 請 專 利 範 圍 第 26 項 之 裝 置 更 進 一 步 包 括 位 址 產 生 邏 輯 當 處 理 該 至 少 一 個 不 依 序 載 入 指 令 和 該 依 序 的 載 入 指 令 時 \ 用 以 在 該 記 憶 體 次 系 統 中 產 生 位 置 的 位 址 (其中從該等位置的位址中讀取存取資料項) 0 3 1 * 如 中 請 專 利 範 圍 第 26 項 之 裝 置 , 更 進 一 步 包 括 優 先 編 碼 裝 置 當 多 個 已 從 該 記 憶 體 t 該 位 置 的 該 位 址 該 依 序 載 入 指 令 欲 從 該 位 置 的 該 位 址 讀 取 存 取 該 資 料 項 讀 取 存 取 資 料 項 不 依 序 載 入 指 令 存 在 時 、 用 以 偵 測 在 該 等 指 令 序 列 中 具 有 一 最 低 原 始 位 置 的 該 資 料 項 D 32 « 一 種 用 以 將 多 次 讀 取 存 取 一 個 電 腦 處 理 系 統 其 一 個 記 憶 體 次 系 統 中 —' 個 位 置 期 間 所 獲 得 之 資 料 之 間 強 制 執 行 — 致 性 之 裝 置 > 其 中 由 至 少 — 個 處 理 器 單 元 執 行 指 令 序 列 由 至 少 一 個 先 前 執 行 的 載 入 指 令 和 一 個 目 前 正 在 執 行 的 載 入 指 令 啟 始 該 等 多 個 讀 取 存 取 該 裝 置 包 括 儲 存 裝 置 用 以 儲 存 該 至 少 一 個 先 前 執 行 的 指 令 的 一 個 記 錄 9 其 中 該 記 錄 包 括 該 記 憶 體 次 系 統 中 該 位 置 的 個 位 址 (其中係從該位置的該位址中讀取存取資料) 和 該 資 料 yO:\61\61540.ptd 第63頁 4469 12 --------------------------------------- '~' — : :六、申請專利範圍 I 一個干擾測試和優先編瑪Is ’用以比較5玄位置的0玄 :位址-該至少一個先前執行的指令從該位置的該位址中讀 :取存取該資料和該位置的一個位址-該目前正在執行的指 |令欲從該位置的該位址中讀取存取資料,且當處理該目前 |正在執行的指令時,用以判定該至少一個先前執行的指令 ;隨後是否已結合一個後來的指令號碼,在該目前正在執行 丨的指令之後, | 控制邏輯,用以導引該儲存裝置儲存該記錄’用以 :存取該至少一個先前執行的指令的該記錄、以將該位址提 ;供給該干擾測試和優先編碼器;及 一個資料選取裝置,當該干擾測試和優先編碼器比 丨 較該等位址的結果為相同或交疊的時,則在該干擾測試和 丨 ;優先編碼邏輯的控制下、用以分別將"儲存在該儲存裝置 丨中的該資料"或〃儲存在該儲存裝置中該資料的一部分"提 供給該目前正在執行的指令,且該至少一個先前執行的指 ; 令具有該隨後結合之後來的指令號碼。 丨 33. 如申請專利範圍第32項之裝置,其中當該干擾測試 丨 和優先編碼器比較該等位址的結果為既不相同、亦不交疊 丨 a夺,則該資料選取裝置將儲存在該記憶體次系統中的資料 提供給該目前正在執行的指令。 34. 如申請專利範圍第32項之裝置,其中當存在一個以 上之該至少一個先前執行的指令時,則該資料選取裝置從 該儲存裝置中將"相對應至一個邏輯上最羊干擾之先前執 i 行的指令"的資料提供給該目前正在執行的指令。第64頁 (4469 12 _ _ - - — , 一 ^ ^ | 六、申請專利範圍 I ;35.如申請專利範圍第32項之裝置,其中當存在一個以i i上之該至少一個先前執行的指令、已從記憶體中該位置的 該位址中讀取存取資料時(其中該目前正在執行的指令欲 ;從該位置的該位址中讀取存取該資料)’則該干擾測試和 * 優先編碼器偵測在該等指令序列中具有一最低原始位置的 * ;資剩 ° | 丨 36.如申請專利範圍第3 2項之裝置’其中一個指令號碼 、 '具有足夠的寬以至少編碼η個指令(可由該處理單元在一個 指定時間處理的指令數)的兩倍。 37. 如申請專利範圍第3 6項之裝置,其中當該至少一個 一 丨先前執行的指令其指令號碼位在該目前執行指令其指令號 碼之後的η - 1個號碼的範圍内,則該至少一個先前執行的 指令其指令號碼在該目前執行的指令的號碼之後。第65頁
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/243,721 US6189088B1 (en) | 1999-02-03 | 1999-02-03 | Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location |
Publications (1)
Publication Number | Publication Date |
---|---|
TW446912B true TW446912B (en) | 2001-07-21 |
Family
ID=22919859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW088122701A TW446912B (en) | 1999-02-03 | 1999-12-23 | Methods and apparatus for reordering load operations in a computer processing system |
Country Status (4)
Country | Link |
---|---|
US (1) | US6189088B1 (zh) |
JP (1) | JP3488162B2 (zh) |
KR (1) | KR100334479B1 (zh) |
TW (1) | TW446912B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11068266B2 (en) | 2019-01-31 | 2021-07-20 | International Business Machines Corporation | Handling an input/output store instruction |
US11074203B2 (en) | 2019-01-31 | 2021-07-27 | International Business Machines Corporation | Handling an input/output store instruction |
US11163566B2 (en) | 2019-01-31 | 2021-11-02 | International Business Machines Corporation | Handling an input/output store instruction |
US11334503B2 (en) | 2019-01-31 | 2022-05-17 | International Business Machines Corporation | Handling an input/output store instruction |
TWI840734B (zh) * | 2022-01-10 | 2024-05-01 | 群聯電子股份有限公司 | 指令管理方法、記憶體儲存裝置及記憶體控制電路單元 |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7089404B1 (en) * | 1999-06-14 | 2006-08-08 | Transmeta Corporation | Method and apparatus for enhancing scheduling in an advanced microprocessor |
US6484240B1 (en) * | 1999-07-30 | 2002-11-19 | Sun Microsystems, Inc. | Mechanism for reordering transactions in computer systems with snoop-based cache consistency protocols |
US6381691B1 (en) * | 1999-08-13 | 2002-04-30 | International Business Machines Corporation | Method and apparatus for reordering memory operations along multiple execution paths in a processor |
US6442522B1 (en) * | 1999-10-12 | 2002-08-27 | International Business Machines Corporation | Bi-directional natural language system for interfacing with multiple back-end applications |
EP1109096A3 (en) * | 1999-12-17 | 2004-02-11 | Fujitsu Limited | Processor and method of controlling the same |
US6658559B1 (en) * | 1999-12-31 | 2003-12-02 | Intel Corporation | Method and apparatus for advancing load operations |
US6748518B1 (en) | 2000-06-06 | 2004-06-08 | International Business Machines Corporation | Multi-level multiprocessor speculation mechanism |
US6725340B1 (en) | 2000-06-06 | 2004-04-20 | International Business Machines Corporation | Mechanism for folding storage barrier operations in a multiprocessor system |
US6963967B1 (en) | 2000-06-06 | 2005-11-08 | International Business Machines Corporation | System and method for enabling weak consistent storage advantage to a firmly consistent storage architecture |
US6728873B1 (en) | 2000-06-06 | 2004-04-27 | International Business Machines Corporation | System and method for providing multiprocessor speculation within a speculative branch path |
US6691220B1 (en) * | 2000-06-06 | 2004-02-10 | International Business Machines Corporation | Multiprocessor speculation mechanism via a barrier speculation flag |
US6920547B2 (en) * | 2000-12-20 | 2005-07-19 | Intel Corporation | Register adjustment based on adjustment values determined at multiple stages within a pipeline of a processor |
US6918030B2 (en) * | 2002-01-10 | 2005-07-12 | International Business Machines Corporation | Microprocessor for executing speculative load instructions with retry of speculative load instruction without calling any recovery procedures |
US20040128448A1 (en) * | 2002-12-31 | 2004-07-01 | Intel Corporation | Apparatus for memory communication during runahead execution |
US7269694B2 (en) * | 2003-02-13 | 2007-09-11 | Sun Microsystems, Inc. | Selectively monitoring loads to support transactional program execution |
US20040168045A1 (en) * | 2003-02-21 | 2004-08-26 | Dale Morris | Out-of-order processor executing speculative-load instructions |
US20050114632A1 (en) * | 2003-11-21 | 2005-05-26 | Intel Corporation | Method and apparatus for data speculation in an out-of-order processor |
JP4376692B2 (ja) * | 2004-04-30 | 2009-12-02 | 富士通株式会社 | 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ |
KR100607987B1 (ko) * | 2004-06-24 | 2006-08-02 | 삼성전자주식회사 | 명령어 스케줄링을 수행하는 메모리 제어장치 및 방법 |
US20070074195A1 (en) | 2005-09-23 | 2007-03-29 | Shih-Wei Liao | Data transformations for streaming applications on multiprocessors |
US8266413B2 (en) * | 2006-03-14 | 2012-09-11 | The Board Of Trustees Of The University Of Illinois | Processor architecture for multipass processing of instructions downstream of a stalled instruction |
US7904697B2 (en) * | 2008-03-07 | 2011-03-08 | International Business Machines Corporation | Load register instruction short circuiting method |
US8549504B2 (en) * | 2010-09-25 | 2013-10-01 | Intel Corporation | Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region |
US20130086364A1 (en) | 2011-10-03 | 2013-04-04 | International Business Machines Corporation | Managing a Register Cache Based on an Architected Computer Instruction Set Having Operand Last-User Information |
US10078515B2 (en) | 2011-10-03 | 2018-09-18 | International Business Machines Corporation | Tracking operand liveness information in a computer system and performing function based on the liveness information |
US9286072B2 (en) | 2011-10-03 | 2016-03-15 | International Business Machines Corporation | Using register last use infomation to perform decode-time computer instruction optimization |
US9697002B2 (en) | 2011-10-03 | 2017-07-04 | International Business Machines Corporation | Computer instructions for activating and deactivating operands |
US8756591B2 (en) | 2011-10-03 | 2014-06-17 | International Business Machines Corporation | Generating compiled code that indicates register liveness |
US8612959B2 (en) | 2011-10-03 | 2013-12-17 | International Business Machines Corporation | Linking code for an enhanced application binary interface (ABI) with decode time instruction optimization |
US9329869B2 (en) | 2011-10-03 | 2016-05-03 | International Business Machines Corporation | Prefix computer instruction for compatibily extending instruction functionality |
US9690583B2 (en) | 2011-10-03 | 2017-06-27 | International Business Machines Corporation | Exploiting an architected list-use operand indication in a computer system operand resource pool |
US9354874B2 (en) | 2011-10-03 | 2016-05-31 | International Business Machines Corporation | Scalable decode-time instruction sequence optimization of dependent instructions |
US8615745B2 (en) | 2011-10-03 | 2013-12-24 | International Business Machines Corporation | Compiling code for an enhanced application binary interface (ABI) with decode time instruction optimization |
US9454366B2 (en) | 2012-03-15 | 2016-09-27 | International Business Machines Corporation | Copying character data having a termination character from one memory location to another |
US9459867B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a specified memory boundary indicated by the instruction |
US9715383B2 (en) | 2012-03-15 | 2017-07-25 | International Business Machines Corporation | Vector find element equal instruction |
US9588762B2 (en) | 2012-03-15 | 2017-03-07 | International Business Machines Corporation | Vector find element not equal instruction |
US9454367B2 (en) | 2012-03-15 | 2016-09-27 | International Business Machines Corporation | Finding the length of a set of character data having a termination character |
US9268566B2 (en) | 2012-03-15 | 2016-02-23 | International Business Machines Corporation | Character data match determination by loading registers at most up to memory block boundary and comparing |
US9710266B2 (en) | 2012-03-15 | 2017-07-18 | International Business Machines Corporation | Instruction to compute the distance to a specified memory boundary |
US9280347B2 (en) | 2012-03-15 | 2016-03-08 | International Business Machines Corporation | Transforming non-contiguous instruction specifiers to contiguous instruction specifiers |
US9459868B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a dynamically determined memory boundary |
US9459864B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Vector string range compare |
US9354888B2 (en) | 2012-03-28 | 2016-05-31 | International Business Machines Corporation | Performing predecode-time optimized instructions in conjunction with predecode time optimized instruction sequence caching |
GB2514618B (en) * | 2013-05-31 | 2020-11-11 | Advanced Risc Mach Ltd | Data processing systems |
US20160026484A1 (en) * | 2014-07-25 | 2016-01-28 | Soft Machines, Inc. | System converter that executes a just in time optimizer for executing code from a guest image |
US9733909B2 (en) * | 2014-07-25 | 2017-08-15 | Intel Corporation | System converter that implements a reordering process through JIT (just in time) optimization that ensures loads do not dispatch ahead of other loads that are to the same address |
US11281481B2 (en) | 2014-07-25 | 2022-03-22 | Intel Corporation | Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture |
GB2551548B (en) * | 2016-06-22 | 2019-05-08 | Advanced Risc Mach Ltd | Register restoring branch instruction |
US10241789B2 (en) * | 2016-12-27 | 2019-03-26 | Intel Corporation | Method to do control speculation on loads in a high performance strand-based loop accelerator |
US11593117B2 (en) | 2018-06-29 | 2023-02-28 | Qualcomm Incorporated | Combining load or store instructions |
EP3699771A1 (en) * | 2019-02-21 | 2020-08-26 | CoreMedia AG | Method and apparatus for managing data in a content management system |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4237417C2 (de) | 1992-03-25 | 1997-01-30 | Hewlett Packard Co | Datenverarbeitungssystem |
JP2786574B2 (ja) | 1992-05-06 | 1998-08-13 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置 |
US5421022A (en) | 1993-06-17 | 1995-05-30 | Digital Equipment Corporation | Apparatus and method for speculatively executing instructions in a computer system |
US5420990A (en) | 1993-06-17 | 1995-05-30 | Digital Equipment Corporation | Mechanism for enforcing the correct order of instruction execution |
US5588126A (en) * | 1993-12-30 | 1996-12-24 | Intel Corporation | Methods and apparatus for fordwarding buffered store data on an out-of-order execution computer system |
US5689712A (en) | 1994-07-27 | 1997-11-18 | International Business Machines Corporation | Profile-based optimizing postprocessors for data references |
US5666506A (en) | 1994-10-24 | 1997-09-09 | International Business Machines Corporation | Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle |
US5625835A (en) | 1995-05-10 | 1997-04-29 | International Business Machines Corporation | Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor |
US5758081A (en) | 1995-12-08 | 1998-05-26 | Aytac; Haluk M. | Computing and communications transmitting, receiving system, with a push button interface, that is continously on, that pairs up with a personal computer and carries out mainly communications related routine tasks |
US5835968A (en) * | 1996-04-17 | 1998-11-10 | Advanced Micro Devices, Inc. | Apparatus for providing memory and register operands concurrently to functional units |
-
1999
- 1999-02-03 US US09/243,721 patent/US6189088B1/en not_active Expired - Fee Related
- 1999-12-23 TW TW088122701A patent/TW446912B/zh not_active IP Right Cessation
-
2000
- 2000-02-01 KR KR1020000004883A patent/KR100334479B1/ko not_active IP Right Cessation
- 2000-02-03 JP JP2000026002A patent/JP3488162B2/ja not_active Expired - Fee Related
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11068266B2 (en) | 2019-01-31 | 2021-07-20 | International Business Machines Corporation | Handling an input/output store instruction |
US11074203B2 (en) | 2019-01-31 | 2021-07-27 | International Business Machines Corporation | Handling an input/output store instruction |
US11163566B2 (en) | 2019-01-31 | 2021-11-02 | International Business Machines Corporation | Handling an input/output store instruction |
US20220004387A1 (en) | 2019-01-31 | 2022-01-06 | International Business Machines Corporation | Handling an input/output store instruction |
US11334503B2 (en) | 2019-01-31 | 2022-05-17 | International Business Machines Corporation | Handling an input/output store instruction |
TWI773959B (zh) * | 2019-01-31 | 2022-08-11 | 美商萬國商業機器公司 | 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品 |
US11579874B2 (en) | 2019-01-31 | 2023-02-14 | International Business Machines Corporation | Handling an input/output store instruction |
US11593107B2 (en) | 2019-01-31 | 2023-02-28 | International Business Machines Corporation | Handling an input/output store instruction |
US11762659B2 (en) | 2019-01-31 | 2023-09-19 | International Business Machines Corporation | Handling an input/output store instruction |
TWI840734B (zh) * | 2022-01-10 | 2024-05-01 | 群聯電子股份有限公司 | 指令管理方法、記憶體儲存裝置及記憶體控制電路單元 |
Also Published As
Publication number | Publication date |
---|---|
KR100334479B1 (ko) | 2002-04-26 |
US6189088B1 (en) | 2001-02-13 |
JP2000222207A (ja) | 2000-08-11 |
JP3488162B2 (ja) | 2004-01-19 |
KR20000076584A (ko) | 2000-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW446912B (en) | Methods and apparatus for reordering load operations in a computer processing system | |
Kessler | The alpha 21264 microprocessor | |
JP5894120B2 (ja) | ゼロサイクルロード | |
KR101295569B1 (ko) | 쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드 프로세서 | |
JP4578042B2 (ja) | 接近して結合される多重プロセッサのための高速マルチスレッディング | |
US8099582B2 (en) | Tracking deallocated load instructions using a dependence matrix | |
TWI299465B (en) | Simultaneous multithread processor and method therefor | |
KR101996592B1 (ko) | 명확화 없는 비순차 load store 큐를 갖는 재정렬된 투기적 명령어 시퀀스들 | |
US20070050592A1 (en) | Method and apparatus for accessing misaligned data streams | |
KR101996462B1 (ko) | 명확화 없는 비순차 load store 큐 | |
KR101996351B1 (ko) | 통합된 구조를 갖는 동적 디스패치 윈도우를 가지는 가상 load store 큐 | |
US20050247774A1 (en) | System and method for validating a memory file that links speculative results of load operations to register values | |
KR101804027B1 (ko) | 메모리로부터 순차적으로 판독하는 load들을 구성하는 메모리 일관성 모델에서 비순차 load들을 갖는 세마포어 방법 및 시스템 | |
JP2002508567A (ja) | 誤推論後の命令再実施のためのアウトオブパイプライン・トレース・バッファ | |
KR20150023706A (ko) | Store 상위 서열에 기초하여 상이한 스레드들로부터의 포워딩을 구현하는 스레드에 무관한 load store 버퍼 | |
CN109564546B (zh) | 通过绕过加载存储单元来跟踪存储和加载 | |
KR20150020244A (ko) | 공유 메모리 자원들을 사용하는 메모리 일관성 모델에서 비순차 load들에 대한 로크 기반 및 동기화 기반 방법 | |
KR20140113434A (ko) | 바이패스 멀티플 인스턴스화 테이블을 갖는 이동 제거 시스템 및 방법 | |
US7822948B2 (en) | Apparatus, system, and method for discontiguous multiple issue of instructions | |
KR20150027213A (ko) | Load store 재정렬 및 최적화를 구현하는 명령어 정의 | |
US9588770B2 (en) | Dynamic rename based register reconfiguration of a vector register file | |
JP2001209535A (ja) | プロセッサの命令スケジューリング装置 | |
US7725659B2 (en) | Alignment of cache fetch return data relative to a thread | |
JP7156776B2 (ja) | リタイアフェーズ中に部分書込み結果をマージするシステムおよび方法 | |
JP2020536308A (ja) | 単一のcamポートを使用する分割された順序変更キューを備える読み込み/格納ユニット |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent | ||
MM4A | Annulment or lapse of patent due to non-payment of fees |