專利名稱:對執(zhí)行包括輔助子線程的線程的顯式軟件控制的方法和結(jié)構(gòu)的制作方法
對執(zhí)行包括輔助子線程的線程的顯式軟件控制的方法和結(jié)構(gòu) 相關(guān)申請隸本申請案主張2004年3月31閂申請的標題為"Method And Structure For Explicit Software Control Of Execution Of A Thread Including A Helper Subthread"且發(fā)明者為 Christof Braun、 Quirm A. Jacobson、 Shailender Chaudhry和Marc Tremblay的美國臨時屮 請案第60/558,690號的益處,所述申請案以全文引用的方式并入本文。技術(shù)領(lǐng)城本發(fā)明大體上涉及增強處理器的性能,且更確切地說涉及用于增強存儲器級并行性 (MLP)以減少處理器在等待數(shù)據(jù)載入上耗費的總體時間的方法。為增強現(xiàn)代處理器的性能,使用各種技術(shù)來增加給定時間周期中執(zhí)行的指令數(shù)目。 這些技術(shù)中的一種是預(yù)取處理器將來需要的數(shù)據(jù)。預(yù)取數(shù)據(jù)大體上是指預(yù)測不久以后將需要的數(shù)據(jù)并發(fā)布交易以使得所述數(shù)據(jù)盡可 能地靠近處理器的機制。使數(shù)據(jù)更加靠近處理器可在需要數(shù)據(jù)時減少存取所述數(shù)據(jù)的等 待時間。人們已提出許多種形式的數(shù)據(jù)預(yù)取來提高存儲器級并行性(MLP)。-種形式的數(shù) 據(jù)預(yù)取使用基于各種試探法來預(yù)取數(shù)據(jù)的硬件機制。另一種形式的數(shù)據(jù)預(yù)取使用傳統(tǒng)的 軟件預(yù)取,其中將指示放置在指令流中以起始數(shù)據(jù)預(yù)取。大多指令設(shè)定架構(gòu)具有一預(yù)取指令,其使得軟件通知硬件不久后軟件可能需要指令 中指定的一給定位置上的數(shù)據(jù)。隨后,硬件通過將數(shù)據(jù)潛在地移動到處理器中的接近的 高速緩沖存儲器來回應(yīng)這些預(yù)取指令。為了使用預(yù)取指令,軟件必須還包括用以計算地址的代碼序列。這些代碼序列不但 為程序的總體執(zhí)行添加了額外開銷,而且還需要分配在一定時段內(nèi)指定給預(yù)取工作的一 些硬件資源,例如寄存器。數(shù)據(jù)預(yù)取在減少處理器花費在等待數(shù)據(jù)上的時間方面的潛在 益處通常會抵消超出數(shù)據(jù)預(yù)取的額外開銷,但并非總是如此。這-一點尤其復雜,因為軟 件充其量也無法完全提前知道哪些數(shù)據(jù)將已靠近處理器以及哪些數(shù)據(jù)需要預(yù)取。7發(fā)明內(nèi)容根據(jù)本發(fā)明的一個實施例,用顯式軟件控制來在等待完成長等待時間操作的同時執(zhí) 行輔助操作。此處,長等待時間指令是指其執(zhí)行需要存取局部高速緩沖存儲器中得不到 的信息或使用指令預(yù)備好執(zhí)行時不可用的資源的指令。例如,在等待載入指令執(zhí)行完成時,執(zhí)行一個或一個以上預(yù)取指令,連同計算預(yù)取 指令地址所需的額外計算。以一旦預(yù)取指令執(zhí)行完成,處理便返回到載入指令之后的原 始代碼段且執(zhí)行照常繼續(xù)的方式來進行此舉。因此,可識別出處理器空閑的時段,且僅在處理器空閑時預(yù)取數(shù)據(jù)的代碼序列才會 運行。用以預(yù)取數(shù)據(jù)的代碼序列的包含方式使得所述代碼序列不會影響主程序的狀態(tài)或 資源分配。在一個實施例中, 一種基于計算機的方法在顯式軟件控制下確定與長等待時間指令 相關(guān)聯(lián)的項目是否可用。在所述確定發(fā)現(xiàn)與長等待時間指令相關(guān)聯(lián)的項目不可用后,在 顯式軟件控制下執(zhí)行一輔助子線程。在顯式軟件控制下執(zhí)行輔助子線程會導致對一種狀態(tài)進行定點檢驗以獲得快照狀 態(tài)。在一個實例中,所述狀態(tài)為處理器狀態(tài)。在顯式軟件控制下執(zhí)行輔助子線程還會通 過執(zhí)行輔助子線程中的指令而導致執(zhí)行輔助操作。 一旦完成輔助操作,狀態(tài)就退回至快 照狀態(tài),且使用項目的實際值執(zhí)行原始代碼段。或者,在所述確定發(fā)現(xiàn)與長等待時間指令相關(guān)聯(lián)的項目可用后執(zhí)行原始代碼段。在 此情況下,不執(zhí)行輔助子線程。對于此實施例, 一種結(jié)構(gòu)包括用于在顯式軟件控制下確定與長等待時間指令相關(guān) 聯(lián)的項目是否可用的構(gòu)件;和用于在所述確定發(fā)現(xiàn)與長等待時間指令相關(guān)聯(lián)的項目不可 用后,在顯式軟件控制下執(zhí)行一輔助子線程的構(gòu)件。用于在顯式軟件控制下執(zhí)行輔助子線程的構(gòu)件包括用于對一種狀態(tài)進行定點檢驗 以獲得快照狀態(tài)的構(gòu)件;用于通過執(zhí)行輔助子線程中的指令而執(zhí)行輔助操作的構(gòu)件;用 于將所述狀態(tài)退回至快照狀態(tài)的構(gòu)件。所述結(jié)構(gòu)還包括用于使用項目的實際值來執(zhí)行原 始代碼段的構(gòu)件。舉例而言,可通過使用存儲的計算機可執(zhí)行指令和計算機系統(tǒng)中執(zhí)行這些指令的處 理器來實施這些構(gòu)件。所述計算機系統(tǒng)可為工作站、便攜式計算機、客戶端-服務(wù)器系統(tǒng), 或聯(lián)網(wǎng)計算機、存儲媒體等的組合。對于此實施例, 一種計算機系統(tǒng)包括一處理器和一耦合到所述處理器的存儲器。所述存儲器包括存儲在其中的指令,當在所述處理器上執(zhí)行所述指令時, -種方法包括在顯式軟件控制下確定與長等待時間指令相關(guān)聯(lián)的項目是否可用;和在所述確定發(fā)現(xiàn)與長等待時間指令相關(guān)聯(lián)的項目不可用后,在顯式軟件控制下執(zhí)行 一輔助子線程。同樣,對于此實施例, 一種計算機程序產(chǎn)品包括一經(jīng)配置以存儲或傳送用于上述方法的計算機可讀代碼的媒體,所述方法包括在顯式軟件控制下確定與長等待時間指令相關(guān)聯(lián)的項目是否可用;和 在所述確定發(fā)現(xiàn)與長等待時間指令相關(guān)聯(lián)的項目不可用后,在顯式軟件控制下執(zhí)行一輔助子線程。在另一實施例中, 一種基于計算機的方法包括在顯式軟件控制下確定與長等待時間指令相關(guān)聯(lián)的項目是否可用;和 執(zhí)行以下操作之一(a) 在所述確定發(fā)現(xiàn)與長等待時間指令相關(guān)聯(lián)的項目不可用后,在顯式軟件控制 下執(zhí)行--輔助子線程;和在完成輔助子線程的執(zhí)行之后,使用項目的實際值執(zhí)行原始代碼段;和(b) 在所述確定發(fā)現(xiàn)與長等待時間指令相關(guān)聯(lián)的項目可用后使用項目的實際值執(zhí) 行原始代碼段。對于所述另一實施例, 一種結(jié)構(gòu)包括用于在顯式軟件控制下確定與長等待時間指令相關(guān)聯(lián)的項目是否可用的構(gòu)件;和 用于執(zhí)行以下操作之一的構(gòu)件(a) 在所述確定發(fā)現(xiàn)與長等待時間指令相關(guān)聯(lián)的項目不可用后,在顯式軟件控制 下執(zhí)行一輔助子線程;和在完成輔助子線程的執(zhí)行之后,使用項目的實際值執(zhí)行原始代碼段和(b) 在所述確定發(fā)現(xiàn)與長等待時間指令相關(guān)聯(lián)的項目可用后使用項目的實際值執(zhí) 行原始代碼段。舉例而言,可通過使用存儲的計算機可執(zhí)行指令和計算機系統(tǒng)中執(zhí)行這些指令的處 理器來實施這些構(gòu)件。所述計算機系統(tǒng)可為工作站、便攜式計算機、客戶端-服務(wù)器系統(tǒng), 或聯(lián)網(wǎng)計算機、存儲媒體等的組合。同樣, -種計算機系統(tǒng)包括一處理器和一耦合到所述處理器的存儲器。所述存儲器 中包括存儲在其中的指令,當在所述處理器上執(zhí)行所述指令時,一種方法包括在顯式軟件控制下確定與長等待時間指令相關(guān)聯(lián)的項目是否可用;和執(zhí)行以下操作之一(a) 在所述確定發(fā)現(xiàn)與長等待時間指令相關(guān)聯(lián)的項目不可用后,在顯式軟件控制 下執(zhí)行一輔助子線程;和在完成輔助子線程的執(zhí)行之后,使用項目的實際值執(zhí)行原始代碼段;和(b) 在所述確定發(fā)現(xiàn)與長等待時間指令相關(guān)聯(lián)的項目可用后使用項目的實際值執(zhí) 行原始代碼段。同樣, -種計算機程序產(chǎn)品包括一經(jīng)配置以存儲或傳送用于一種方法的計算機可讀代碼的媒體,所述方法包括在顯式軟件控制下確定與長等待時間指令相關(guān)聯(lián)的項目是否可用和 執(zhí)行以下操作之一(a) 在所述確定發(fā)現(xiàn)與長等待時間指令相關(guān)聯(lián)的項目不可用后,在顯式軟件控制 下執(zhí)行一輔助子線程;和在完成輔助子線程的執(zhí)行之^,使用項目的實際值執(zhí)行原始代碼段和(b) 在所述確定發(fā)現(xiàn)與長等待時間指令相關(guān)聯(lián)的項目可用后使用項目的實際值執(zhí) 行原始代碼段。關(guān)翻圖1為包括一含有帶輔助子線程的單線程代碼序列的源程序的系統(tǒng)的方框圖,其提 供根據(jù)本發(fā)明第一實施例的輔助操作的顯式軟件控制。圖2為根據(jù)本發(fā)明一個實施例在一源計算機程序中的適當點插入帶有輔助子線程的 單線程的一個實施例的處理流程圖。圖3為根據(jù)本發(fā)明一個實施例的對輔助子線程和輔助操作的顯式軟件控制的處理流 程圖。圖4為說明使用包含帶輔助子線程的單線程的源程序的若干替代實施例的高級網(wǎng)絡(luò) 系統(tǒng)圖。在圖式屮,具有相同參考數(shù)字的元件為相同或類似元件。同樣,參考數(shù)字的第—-數(shù) 位指示圖式號碼,其中關(guān)聯(lián)于所述參考數(shù)字的元件首次出現(xiàn)。
具體實施方式
根據(jù)本發(fā)明的--個實施例,例如當線程中的長等待時間指令等待數(shù)據(jù)時,執(zhí)行一個 可執(zhí)行有益工作的輔助子線程。如以下將更完整解釋的,所述輔助子線程的執(zhí)行是在顯式軟件控制下進行的。在計算機系統(tǒng)ioo的處理器no上執(zhí)行帶有輔助子線程的單線程代碼序列mo中的—系列軟件指令。對單線程代碼序列140中的軟件指令系列的執(zhí)行引起計算機系統(tǒng)100(例如)(i)確定由長等待時間指令提供的數(shù)據(jù)是否可用,且當所述數(shù)據(jù)不可用時,(ii)對計算機系統(tǒng)100的狀態(tài)進行快照(snapshot)并維持退回至所述快照狀態(tài)的能力,(iii) 執(zhí)行輔助子線程中的輔助指令,以及(W) —旦完成所述輔助子線程中的輔助指令的執(zhí) 行,就退回至快照狀態(tài)并繼續(xù)執(zhí)行。在一個實施例中,輔助子線程在等待長等待時間指令完成時預(yù)取數(shù)據(jù)。通過執(zhí)行輔 助子線程檢索到的數(shù)據(jù)不會影響(例如)處理器170的快照狀態(tài)。通過執(zhí)行輔助子線程 檢索到的數(shù)據(jù)可在從快照狀態(tài)繼續(xù)執(zhí)行時提高指令級并行性。使用者可在源程序130中使用顯式軟件控制來控制輔助子線程的執(zhí)行?;蛘撸?, 一編譯器或優(yōu)化解釋器在處理源程序130時可在預(yù)期存在長等待時間指令的點處插入提 供對輔助子線程的顯式軟件控制的指令。電于編譯器或優(yōu)化解釋器可能不會確切地知道特定指令是否會在給定執(zhí)行時具有 長等待時間,所以如果能夠在軟件控制下檢驗出指令是否會經(jīng)歷長等待吋間,則能保證 僅在特定指令遇到長等待時間時才執(zhí)行輔助子線程。因此,如同下文更完整描述的那樣, 在預(yù)期存在長等待時間的點處插入輔助子線程,但如果與長等待時間相關(guān)聯(lián)的數(shù)據(jù)、功 能單元或其他因素可用,則代碼繼續(xù)而不執(zhí)行輔助子線程。更確切地說,在--個實施例中,使用處理200修改程序代碼,以便在選定位置插入 輔助子線程。在長等待時間指令檢驗操作201中,對執(zhí)行指令是否預(yù)期將需要大量處理 器周期進行確定。如果指令預(yù)期不需要大量處理器周期,那么處理IH常繼續(xù),且不修改 代碼以在程序代碼中的所述點處包括輔助子線程。相反,如果指令預(yù)期需要大量處理器 周期,那么處理轉(zhuǎn)到輔助子線程的顯式軟件控制操作202,其中用于執(zhí)行輔助子線程的 顯式軟件控制指令包含于源程序130中。在此實施例中,向源程序130添加指令,所述指令一經(jīng)執(zhí)行便執(zhí)行資源/信息可用檢 驗操作210。如以下更完全解釋的那樣,此指令的執(zhí)行向程序提供對輔助子線程是否執(zhí) 行的顯式控制。如果資源或信息可用,那么處理TF.常繼續(xù)。相反,如果資源或信息不可 用,那么資源/信息可用檢驗操作210將處理轉(zhuǎn)到輔助子線程操作211。在此實施例中,在輔助子線程操作211中,包含指令從而使上述操作(ii)至(iv) 響應(yīng)于輔助子線程的執(zhí)行而執(zhí)行。確切地說,軟件指令引導處理器170對狀態(tài)進行快照并管理對所述狀態(tài)的所有后繼改變,從而在必要時處理器170可回復到快照時的狀態(tài)。所獲得的快照取決于所捕捉的狀態(tài)。在一個實施例中,所述狀態(tài)為系統(tǒng)狀態(tài)。在另 一實施例中,所述狀態(tài)為機器狀態(tài),且在又一實施例中,所述狀態(tài)為處理器狀態(tài)。在毎 種情況下,后繼操作是相同的??煺罩?,執(zhí)行輔助代碼序列。請注意,輔助代碼序列不需要導致長等待時間的指 令的結(jié)果。在完成輔助代碼序列的執(zhí)行后,使狀態(tài)退回至快照狀態(tài)且繼續(xù)執(zhí)行。對于有利的輔助代碼序列的顯式軟件控制,軟件應(yīng)用程序理想地具有在長等待時間 之后有可利用所述結(jié)果的操作。最普通的原因是與頻繁錯過高速緩沖存儲器的載入相類 似的長等待時間操作。在Quinn A. Jacobson的標題為"METHOD AND STRUCTURE FOR CONVERTING DATA SPECULATION TO CONTROL SPECULATION"的共同讓渡美國專利序號第 10/349,425號中揭示了用于確定在源程序130中將輔助子線程插在何處(例如插入點) 的其他實施例。美國專利申請案序號第10/349,425號的發(fā)明內(nèi)容
、"體實施 方式和其中引用的圖式、權(quán)利要求書以及說明書摘要以全文引用的方式并入本文。圖3是使用方法200進行添加以提供對執(zhí)行輔助子線程的顯式軟件控制的指令的一 個實施例的方法300的更為詳細的處理流程圖。為進一步說明方法300,以下列出用于 各種實例的偽碼。表l中列出一實例偽代碼段。表11 Producer—OP A, B -> %rZ2 Consumer_OP %rZ, C -> D第l行(行數(shù)并非偽碼的部分,且僅用于參考)是指令Producer—OP,其使用項冃 A和B并將操作的結(jié)果置于register %rz中。執(zhí)行指令Producer_OP的結(jié)果可能直到長 等待時間之后才可用。指令Producer一OP可為指令集中支持的任何指令。項目A和B僅用作占位符以指 示此特定操作需要兩個輸入。本發(fā)明的各種實施例也適用于具有單輸入或多于兩個輸入的操作。寄存器9brZ可為 任意寄存器。此外,在本文中,當提到一條指令采取行動或使用信息時,所屬領(lǐng)域的技 術(shù)人員將了解,所述行動或使用是執(zhí)行所述指令的結(jié)果。第2行是指令ConsumdOP。指令Co鵬umer—OP使用執(zhí)行存儲在寄存器免rZ中的 指令Producer一OP的結(jié)果。項目C和D僅用作占位符以指示此特定操作需要兩個輸入9fcRZ和C,且具有輸出D。雖然在此實施例中指令Consumer_OP由單行偽碼表示,但指令Consumer_OP農(nóng)示一個使用執(zhí)行指令ProdUcer_OP的結(jié)果的代碼段。所述代碼段可包含更多行軟件代碼 中的一行。表2的Insert—21至Insert—26行中列出通過使用用于表1中的偽碼的方法200產(chǎn)生 的偽碼。 表21 Producer—OP A, B -> %rZInsert一21 if %rZ unavailable, branch predictInsert一22 original:2 Consumer_OP %rZ, C -> DInsert—23 predict; Insert一24 checkpoint, original Insert_2S <Helper Subthread Code > Insert—2 6 Fail同樣,行數(shù)并非偽碼的部分,且僅用于參考。在此實例中,將第l行識別為一插入點,且因此使用方法200插入包含Insert—21、 lnsert_22、 Insert_23、 Insert_24、 lnsert_2S和Insert—26各行的代碼段。此指令序列的 特定實施取決于包含以下某些或全部的因素(i)用于源程序130的計算機編程語言, (ii)用于計算機系統(tǒng)100的操作系統(tǒng),以及(iii)處理器170的指令集。通過此揭示, 所屬領(lǐng)域的技術(shù)人員可在任何相關(guān)系統(tǒng)中實施轉(zhuǎn)換。首先討論插入的行,隨后更詳細地考慮方法300。 InserL21行是有條件的流控制語 句,其一旦執(zhí)行便確定指令是否具有長等待時間,例如執(zhí)行指令Producer—OP的實際結(jié) 果是否可用。如果指令Producer—OP具有長等待時間,例如執(zhí)行指令Producer_OP的結(jié)果不W用,那么處理就分支到標號predict,其為I咖ert—24行。否則,處理繼續(xù)進行,通過標 號original (Insert—22行)到達第2行。請注意,對指令Producer—OP的執(zhí)行是否會具 有長等待時間的判斷是在運行時進行的,且因此并不依賴于事先知道執(zhí)行指令 Producer—OP的結(jié)果。Insert_24行是引導處理器170進行狀態(tài)快照并維持使狀態(tài)退回至快照狀態(tài)的能力 的指令。在此實例中,使用一定點檢驗指令。在Marc Tremblay、 Quinn A. Jacobson、 Shailender Chaudhry、 Mark S. Moir和Maurice P. Herlihy于2004年1月23円申請的標題為"Selectively Unmarking Load-Marked Cache Lines During Transactional Program Execution"的共同讓渡關(guān)國專利中請案序號第 10/764,412號中說明關(guān)于定點檢驗指令的方法與結(jié)構(gòu)的更詳細描述。夷屈專利申請案序 號第10/764,412號的發(fā)明內(nèi)容
具體實施方式
和其中引用的閣式、權(quán)利要求 書以及說明書摘要以全文引用的方式并入本文。在此實施例中,定點檢驗指令的語法為checkpoint, <label>其中指令checkpoint的執(zhí)行引起處理器對此線程的狀態(tài)進行快照。標號dabeb是 在定點檢驗(隱式地或顯式地)失敗時處理將轉(zhuǎn)到的位置。在處理器對狀態(tài)進行快照之后,處理器(例如)緩沖用于快照狀態(tài)屮每一位置的新 數(shù)據(jù)。處理器還監(jiān)視是否另一線程執(zhí)行將阻止狀態(tài)退回的操作,例如向定點檢驗狀態(tài)i軒 的一位置進行寫入,或在定點檢驗狀態(tài)中的--位置中存儲一值。如果檢測到此--操作, 那么就清除推測工作,恢復快照狀態(tài),且處理分支到標號dabeb。這是定點檢驗的隱式 失敗。定點檢驗的顯式失敗由語句Fail的執(zhí)行引起,語句Fail是Insert—26行中的指令。 語句Fail的執(zhí)行引起處理器使狀態(tài)恢復至快照狀態(tài),并分支到標號dabeb。Inser^2S行是構(gòu)成輔助子線程內(nèi)的輔助指令的指令或代碼段。使得一 個新的寄存器 集合對子線程可用,且舉例而言,子線程將數(shù)據(jù)預(yù)取進所述新的寄存器集合中。 一旦完 成Insert_25行的執(zhí)行,就執(zhí)行指令Fail,其恢復定點檢驗狀態(tài)并將處理轉(zhuǎn)到標號 origimilo當于處理器170上執(zhí)行表2中的代碼段時,執(zhí)行方法300。在數(shù)據(jù)可川檢驗操作310 中,進行檢驗以確定潛在長等待時間的指令所需要或產(chǎn)生的數(shù)據(jù)是否可用。舉例來說, 如果此指令的結(jié)果可用,那么無需為獲得數(shù)據(jù)而延遲就可正常地繼續(xù)執(zhí)行。因此,當數(shù)據(jù)可用時,檢驗操作310將處理轉(zhuǎn)到執(zhí)行原始代碼段324。否則,當長等待時間指令的結(jié)果不可用時,檢驗操作310將處理轉(zhuǎn)到輔助子線程320。在輔助子線程320的一個實施例中,引導硬件對狀態(tài)進行定點檢驗操作321引起對 當前狀態(tài)的快照,所述快照狀態(tài)由處理器170獲取。 一旦完成定點檢驗狀態(tài)操作321, 處理就從操作321轉(zhuǎn)到執(zhí)行輔助操作322。執(zhí)行輔助操作322執(zhí)行進行輔助操作(例如預(yù)取數(shù)據(jù))的指令集合。-旦完成,操 作322便轉(zhuǎn)到退回至定點檢驗狀態(tài)操作323。在操作323中,執(zhí)行一條引起定點檢驗失敗的指令。結(jié)果,快照狀態(tài)被恢復為實際 狀態(tài),且處理轉(zhuǎn)到執(zhí)行原始代碼324。執(zhí)行原始代碼操作324使用來自長等待時間指令 的實際值執(zhí)行原始代碼段。在一個實施例中,使用狀態(tài)指令的分支的實施例(例如,寄存器未就緒狀態(tài)指令的 分支)來實施檢驗操作310。在寄存器狀態(tài)指令分支被調(diào)度時,寄存器狀態(tài)指令分支的 執(zhí)行測試處理器170的記分板173。如果寄存器狀態(tài)為就緒,那么執(zhí)行繼續(xù)進行。如果 寄存器狀態(tài)為未就緒,那么執(zhí)行就分支到寄存器狀態(tài)指令分支中指定的-標號。寄存器 狀態(tài)指令分支的一個實施例的格式為Branch-if一not-ready %reg label其中免reg為記分板173中的寄存器,記分板173在此實施例中為硬件指令記分板,且 label為代碼段中的標號。通過此指令,表2的偽碼變?yōu)?表31 Producer一OP A, B -> %rZInsert一31 Branch一if一not—ready %rZ predictInsert一22 original:2 ConsumerJDP %rZ, C -> DInsert一23 predict; Insert_24checkpoint, original Insert一25<Helper Subthread Code >Insert一26 Fail重要的是,利用寄存器狀態(tài)指令分支的代碼了解調(diào)度分組規(guī)則和操作的預(yù)期等待時 間。如果在一載入指令之后立即發(fā)布未就緒指令的分支,那么指令通常將載入視為未就 緒,因為(例如)即使對于一級數(shù)據(jù)高速緩沖存儲器命中(cachehit),載入仍具有三個 周期的最小等待時間。在Marc Tremblay、 Shailender Chaudhry和Quinn A. Jacobson (代理人檔案號SUN04 0 062)的標題為"METHOD AND STRUCTURE FOR EXPLICIT SOFTWARE CONTROL USING SCOREBOARD STATUS INFORMATION "的共同申請、共同讓渡的美閨專利申 請案序號第11/xxx,xxx號中對狀態(tài)信息指令的新穎分支進行了更詳細描述,所述美閨專 利申請案的發(fā)明內(nèi)容具體實施方式
、權(quán)利要求書、說明書摘要以及這些部分中引用的 圖式和相關(guān)
以全文引用的方式并入本文。所屬領(lǐng)域的技術(shù)人員容易了解,在此實施例中,先前結(jié)合方法300提到的個別操作 是通過在計算機系統(tǒng)100的處理器170上執(zhí)行計算機程序指令來執(zhí)行的。在一個實施例 中, 一存儲媒體上安裝有用于方法440的計算機可讀程序代碼(圖4),其中方法440在 一個實例中為方法300,且所述計算機可讀程序代碼的執(zhí)行引起處理器170執(zhí)行以上解 釋的個別操作。在 個實施例中,計算機系統(tǒng)100為類似于個人計算機或工作站的硬件配置。然而, 在另一實施例中,計算機系統(tǒng)100為客戶端-服務(wù)器計算機系統(tǒng)400的部分。對于客戶端 -服務(wù)器計算機系統(tǒng)400或獨立計算機系統(tǒng)100,存儲器120通常包含易失性存儲器(例 如主存儲器410)與非易失性存儲器411 (例如硬盤驅(qū)動器)。雖然存儲器120在圖1中說明為統(tǒng)-結(jié)構(gòu),但此不應(yīng)解釋為要求存儲器120中的所 有存儲器都處于相同的物理位置。存儲器120的全部或部分可處于與處理器170不同的 物理位置。舉例來說,方法440可存儲在物現(xiàn)上位于與處理器170不同的位置的存儲器 (例如,存儲器584)中。處理器170應(yīng)耦合到含有方法440的存儲器。這可在一客戶端-服務(wù)器系統(tǒng)、或者通 過經(jīng)由調(diào)制解調(diào)器與模擬線路或數(shù)字接口與數(shù)字載波線路而與另--計算機的連接來完 成。舉例來說,存儲器120的全部或部分可位于萬維網(wǎng)(WorldWideWeb)入[中,而 處理器170位于(例如)個人計算機中。更確切地說,在一個實施例中,計算機系統(tǒng)100可為便攜式計算機、工作站、服務(wù) 器計算機,或可執(zhí)行方法440的任何其他設(shè)備。類似地,在另一實施例中,計算機系統(tǒng)100可包含多個不同計算機、無線設(shè)備、服務(wù)器計算機,或通過互連以執(zhí)行本文所述方16法440的這些設(shè)備的任意所需組合。本文中,計算機程序產(chǎn)品包括一媒體,其經(jīng)配置以存儲或傳送用于方法440的計算 機可讀代碼,或其中巳存儲用于方法440的計算機可讀代碼。計算機程序產(chǎn)品的—些實 例為CD-ROM光碟、ROM卡、軟盤、磁帶、計算機硬驅(qū)動機、網(wǎng)絡(luò)上的服務(wù)器,以及 在網(wǎng)絡(luò)上傳輸?shù)谋硎居嬎銠C可讀程序代碼的信號。本文中,計算機存儲器指易失性存儲器、非易失性存儲器或兩者的組合。類似地, 計算機輸入單元(例如鍵盤415和鼠標418)和顯示單元416指在上述或等同的設(shè)備中 的任何一者中分別提供輸入本文所述信息與顯示本文所述信息所需的功能性的特性。考慮到本揭示,可用使用者感興趣的操作系統(tǒng)和計算機編程語言以許多種計算機系 統(tǒng)配置來實施方法440。另外,方法440可作為不同的模塊存儲在不同設(shè)備的存儲器中。 舉例來說,方法440起初可存儲在服務(wù)器計算機480中,且隨后在必要時,方法440的 模塊可被傳送到一客戶端設(shè)備并在所述客戶端設(shè)備上執(zhí)行。因此,方法440的一部分將 在服務(wù)器處理器482上執(zhí)行,而方法440的另一部分將在客戶端設(shè)備的處理器上執(zhí)行。在又一實施例中,方法440存儲在另一計算機系統(tǒng)的存儲器中。存儲的方法440通 過網(wǎng)絡(luò)404傳送到系統(tǒng)IOO中的存儲器120。在一個實施例中,使用計算機源程序130來實施方法440。計算機程序可存儲在類 似于(例如)軟盤或光盤(CD)的任何通用數(shù)據(jù)載體上,以及類似于硬盤的任何通用計 算機系統(tǒng)的存儲設(shè)備上。因此,本發(fā)明的一個實施例也涉及用于存儲用以執(zhí)行本發(fā)明性 方法的計算機源程序的數(shù)據(jù)載體。本發(fā)明的另一實施例也涉及一種使用計算機系統(tǒng)來執(zhí) 行方法440的方法。本發(fā)明的又一實施例涉及一種具有存儲媒體的計算機系統(tǒng),所述存 儲媒體上存儲有用于執(zhí)行方法440的計算機程序。雖然己結(jié)合本發(fā)明的一個實施例來解釋上文中的方法440,但所屬領(lǐng)域的技術(shù)人員 將容易了解,在不偏離本發(fā)明的精神與范圍的情況下,可對此實施例做出修改。功能單元、寄存器文件171和記分板173僅為說明性的,且并不希望將本發(fā)明限制 于圖1中說明的特定布局。處理器170可包含一單個芯片上的多個處理器。所述多個處 理器中的每一個都可具有一獨立的寄存器文件和記分板,或可以某種方式共享或耦合所 述寄存器文件和記分板。類似地,寄存器文件171可由一個或一個以上寄存器文件組成。 同樣,可用所屬領(lǐng)域的技術(shù)人員已知的許多種方法來實施記分板173的功能性,例如, 可代替記分板來取樣硬件狀態(tài)位元。因此,使用記分板來獲得狀態(tài)信息僅為說明性的, 且并不希望將本發(fā)明限于僅使用記分板。
權(quán)利要求
1. 一種基于計算機的方法,其包括在顯式軟件控制下確定與一長等待時間指令相關(guān)聯(lián)的一項目是否可用;和在所述確定發(fā)現(xiàn)與所述長等待時間指令相關(guān)聯(lián)的所述項目不可用后,在顯式軟件控制下執(zhí)行一輔助子線程。
2. 根據(jù)權(quán)利要求1所述的基于計算機的方法,其中所述在顯式軟件控制下執(zhí)行一輔助 子線程進一步包括對一狀態(tài)進行定點檢驗以獲得一快照狀態(tài)。
3. 根據(jù)權(quán)利要求2所述的基于計算機的方法,其中所述狀態(tài)包括--處理器狀態(tài)。
4. 根據(jù)權(quán)利要求2所述的基于計算機的方法,其中所述在顯式軟件控制下執(zhí)行-輔助子線程進一歩包括通過執(zhí)行所述輔助子線程中的指令來執(zhí)行輔助操作。
5. 根據(jù)權(quán)利要求4所述的基于計算機的方法,其中所述在顯式軟件控制下執(zhí)行一輔助子線程進一歩包括將所述狀態(tài)退回至所述快照狀態(tài)。
6. 根據(jù)權(quán)利要求5所述的基于計算機的方法,其進一歩包括使用所述項目的一實際值執(zhí)行一原始代碼段。
7. 根據(jù)權(quán)利要求1所述的基于計算機的方法,其進一歩包括在所述確定發(fā)現(xiàn)與所述長等待時間指令相關(guān)聯(lián)的所述項目可用后,使用所述項目 的一實際值執(zhí)行一原始代碼段。
8. 根據(jù)權(quán)利要求1所述的基于計算機的方法,其中所述確定包括執(zhí)行--寄存器狀態(tài)指令分支。
9. 根據(jù)權(quán)利要求7所述的基于計算機的方法,其中所述寄存器狀態(tài)指令分支是--就緒 指令分支。
10. —種結(jié)構(gòu),其包括用于在顯式軟件控制下確定與-'長等待時間指令相關(guān)聯(lián)的--項目是否可用的構(gòu) 件;和用于在所述確定發(fā)現(xiàn)與所述長等待時間指令相關(guān)聯(lián)的所述項目不可用后,在顯式 軟件控制下執(zhí)行一輔助子線程的構(gòu)件。
11. 根據(jù)權(quán)利要求IO所述的結(jié)構(gòu),其中所述用于在顯式軟件控制下執(zhí)行一輔助子線程 的構(gòu)件進一歩包括用于對-狀態(tài)進行定點檢驗以獲得一快照狀態(tài)的構(gòu)件。
12. 根據(jù)權(quán)利要求ll所述的結(jié)構(gòu),其中所述狀態(tài)包括一處理器狀態(tài)。
13. 根據(jù)權(quán)利要求11所述的結(jié)構(gòu),其中所述用于在顯式軟件控制下執(zhí)行一輔助子線程的構(gòu)件進一步包括用于通過執(zhí)行所述輔助子線程中的指令來執(zhí)行輔助操作的構(gòu)件。
14. 根據(jù)權(quán)利要求13所述的結(jié)構(gòu),其中所述用于在顯式軟件控制下執(zhí)行一輔助子線程的構(gòu)件進一步包括用于將所述狀態(tài)退回至所述快照狀態(tài)的構(gòu)件。
15. 根據(jù)權(quán)利要求14所述的結(jié)構(gòu),其進一步包括用于使用所述項目的一實際值執(zhí)行一原始代碼段的構(gòu)件。
16. 根據(jù)權(quán)利要求10所述的結(jié)構(gòu),其進一步包括用于在所述確定發(fā)現(xiàn)與所述長等待時間指令相關(guān)聯(lián)的所述項目可用后,使用所述 項目的一實際值執(zhí)行一原始代碼段的構(gòu)件。
17. 根據(jù)權(quán)利要求16所述的結(jié)構(gòu),其中所述確定包括用于執(zhí)行一寄存器狀態(tài)指令分支的構(gòu)件。
18. 根據(jù)權(quán)利要求16所述的結(jié)構(gòu),其中所述寄存器狀態(tài)指令分支是一就緒指令分支。
19. 一種計算機系統(tǒng),其包括一處理器;和一存儲器,其耦合到所述處理器且其中存儲有指令,其中一旦在所述處理器上執(zhí) 行所述指令,--種方法包括-在顯式軟件控制下確定與--長等待時間指令相關(guān)聯(lián)的一項目是否可用和 在所述確定發(fā)現(xiàn)與所述長等待時間指令相關(guān)聯(lián)的所述項目不可用后,在顯式軟 件控制下執(zhí)行一輔助子線程。
20. —種計算機程序產(chǎn)品,其包括-經(jīng)配置以存儲或傳送用于一方法的計算機可讀代碼 的媒體,所述方法包括在顯式軟件控制下確定與--長等待時間指令相關(guān)聯(lián)的一項目是否可用;和 在所述確定發(fā)現(xiàn)與所述長等待時間指令相關(guān)聯(lián)的所述項目不可用后,在顯式軟件 控制下執(zhí)行一輔助子線程。
21. 根據(jù)權(quán)利要求20所述的計算機程序產(chǎn)品,其中所述方法進一步包括在所述確定發(fā)現(xiàn)與所述長等待時間指令相關(guān)聯(lián)的所述項目可用后,使用所述項H 的一實際值執(zhí)行一原始代碼段。
22. --種基于計算機的方法,其包括在顯式軟件控制下確定與一長等待時間指令相關(guān)聯(lián)的一項目是否可用;和 執(zhí)行以下操作之一(a) 在所述確定發(fā)現(xiàn)與所述長等待時間指令相關(guān)聯(lián)的所述項目不可用后,在 顯式軟件控制下執(zhí)行一輔助子線程;和在完成所述執(zhí)行所述輔助子線程之后,使用所述項目的一實際值執(zhí)行--原始代 碼段;和(b) 在所述確定發(fā)現(xiàn)與所述長等待時間指令相關(guān)聯(lián)的所述項IH可用后,使用 所述項目的一實際值執(zhí)行所述原始代碼段。
23. --種結(jié)構(gòu),其包括\用于在顯式軟件控制下確定與一長等待時間指令相關(guān)聯(lián)的一項目是否可用的構(gòu) 件;和用于執(zhí)行以下操作之一的構(gòu)件(a) 在所述確定發(fā)現(xiàn)與所述長等待時間指令相關(guān)聯(lián)的所述項目不可用后,在 顯式軟件控制下執(zhí)行一輔助子線程;和在完成所述執(zhí)行所述輔助子線程之后,使用所述項目的一實際值執(zhí)行--原始代碼段;和(b) 在所述確定發(fā)現(xiàn)與所述長等待時間指令相關(guān)聯(lián)的所述項H可用后,使用 所述項目的--實際值執(zhí)行所述原始代碼段。
24. —種計算機系統(tǒng),其包括一處理器和一存儲器,其耦合到所述處理器且其中存儲有指令,其中一旦在所述處理器上執(zhí)行所述指令, 一種方法包括在顯式軟件控制下確定與-長等待時間指令相關(guān)聯(lián)的一項目是否可用和 執(zhí)行以下操作之一(a) 在所述確定發(fā)現(xiàn)與所述長等待時間指令相關(guān)聯(lián)的所述項目不可月j后, 在顯式軟件控制下執(zhí)行一輔助子線程;和在完成所述執(zhí)行所述輔助子線程之后,使用所述項目的一實際值執(zhí)行一原 始代碼段;和(b) 在所述確定發(fā)現(xiàn)與所述長等待時間指令相關(guān)聯(lián)的所述項目可用后,使 用所述項目的--實際值執(zhí)行所述原始代碼段。
25. —種計算機程序產(chǎn)品,其包括一經(jīng)配置以存儲或傳送用于--方法的計算機可讀代碼 的媒體,所述方法包括在顯式軟件控制下確定與一長等待時間指令相關(guān)聯(lián)的一項目是否可用和 執(zhí)行以下操作之一(a)在所述確定發(fā)現(xiàn)與所述長等待時間指令相關(guān)聯(lián)的所述項目不可用后,在 顯式軟件控制下執(zhí)行一輔助子線程;和在完成所述執(zhí)行所述輔助子線程之后,使用所述項目的一實際值執(zhí)行--原始代 碼段;和(b)在所述確定發(fā)現(xiàn)與所述長等待時間指令相關(guān)聯(lián)的所述項目可用后,使用 所述項目的一實際值執(zhí)行所述原始代碼段。
全文摘要
在一計算機系統(tǒng)(100)的一處理器(170)上執(zhí)行一帶有一輔助子線程的單線程代碼序列(140)中的軟件指令。所述執(zhí)行使計算機系統(tǒng)(100)進行例如(i)確定與長等待時間指令相關(guān)聯(lián)的信息是否可用(310);且當所述數(shù)據(jù)不可用時,(ii)對所述計算機系統(tǒng)的一狀態(tài)進行快照并維持退回至所述快照狀態(tài)的一能力(321);(iii)執(zhí)行所述輔助子線程中的所述輔助指令(322);以及(iv)一旦完成所述輔助子線程中的所述輔助指令的執(zhí)行就退回至所述快照狀態(tài)(323)并繼續(xù)執(zhí)行(324)。例如所述輔助子線程在等待所述長等待時間指令完成的同時預(yù)取數(shù)據(jù)。
文檔編號G06F9/00GK101263452SQ200580009866
公開日2008年9月10日 申請日期2005年3月29日 優(yōu)先權(quán)日2004年3月31日
發(fā)明者克里斯托夫·布朗, 奎因·A·雅各布森, 沙伊倫德爾·喬杜里, 馬克·特倫布萊 申請人:太陽微系統(tǒng)公司