新四季網

對多個輔助硬體線程進行可縮放狀態跟蹤的方法和系統的製作方法

2023-05-24 18:16:41

專利名稱:對多個輔助硬體線程進行可縮放狀態跟蹤的方法和系統的製作方法
技術領域:
本公開涉及在沒有管理程序(hypervisor)介入的情況下跟蹤輔助硬體線程狀態。更特別地,本公開涉及利用輔助線程狀態寄存器來跟蹤輔助硬體線程活動的發起硬體線程。
背景技術:
當今的計算機系統通常包括執行獨立指令流的多線程處理器。在硬體線程上執行的軟體程序可以從監控程序(supervisor program)(例如管理程序)請求對另一硬體線程的控制。例如,軟體程序可以向用於另一硬體線程的監控程序發送請求以便讓該另一個硬體線程執行代碼段(例如子例程)。監控程序檢查硬體線程可用性,並且如果可用則向軟體程序指派該另一個硬體線程。接著,軟體程序利用該另一個硬體線程來執行代碼段。在很多情況下,軟體程序利用該另一個硬體線程持續有限時間。照這樣,當該另一個硬體線程完成代碼執行時,監控程序從軟體程序釋放該另一個硬體線程的資源。

發明內容
處理器包括發起硬體線程,該發起硬體線程發起第一輔助硬體線程以執行第一代碼段。接下來,發起硬體線程響應於發起第一輔助硬體線程而設置輔助線程執行指示符。所設置的輔助線程執行指示符指示輔助硬體線程是否正在執行。第二輔助硬體線程發起和開始執行第二代碼段。接著,發起硬體線程檢測輔助線程執行指示符中的改變,該改變表示第一輔助硬體線程和第二輔助硬體線程兩者終止。照這樣,發起硬體線程響應於這兩個輔助硬體線程終止而評估輔助硬體線程結果。由於前文是概要,因而不得已包含簡化、概括以及對細節的省略;因此,本領域技術人員將意識到該概要僅是說明性的,而並非旨在以任何方式進行限制。本公開的其他方面、創造性特徵以及優點(其僅僅由權利要求書限定)在以下闡明的非限制性詳細描述中將變得明顯。


通過參考附圖,可以更好地理解本公開,並且本公開的大量對象、特徵和優點對於本領域技術人員而言將變得明顯,其中圖1是示出在多線程處理器上發起輔助硬體線程的處理器的軟體程序的示例性示圖;圖2是示出輔助線程狀態寄存器(ATSR)的示例性示圖;圖3A是示出由軟體程序利用來管理輔助硬體線程狀態的軟體狀態存儲區的示例性示圖;圖;3B是示出由發起硬體線程利用來管理輔助硬體線程狀態的硬體狀態存儲區的示例性示圖4是示出在發起硬體線程調用輔助硬體線程時採取的步驟的示例性流程圖;圖5是示出在輔助硬體線程執行軟體代碼時採取的步驟的示例性流程圖;圖6是示出分支和發起輕型(BAIL)指令的示例性示圖;圖7是示出分支和發起重型(BAIH)指令的示例性示圖;圖8是示出停止輔助線程(SAT)指令的示例性示圖;圖9是示出由發起硬體線程在分支和發起指令期間向輔助線程寄存器複製的寄存器值的示例性示圖;圖10是示出在執行分支條件if輔助線程執行(BCE)指令時所採取的步驟的示例性流程圖;圖11是示出在執行條件寄存器設置if輔助線程執行(CRSE)指令時所採取的步驟的示例性流程圖;圖12是示出分支條件if輔助線程執行(BCE)指令的示例性示圖;圖13是示出條件寄存器設置if輔助線程執行(CRSE)指令的示例性示圖;圖14是示出調用多個輔助硬體線程的發起硬體線程的示例性示圖;圖15是示出調用輔助硬體線程的發起硬體線程(該輔助硬體線程接著調用其他輔助硬體線程)的示例性示圖;圖16是示出在不同處理器上調用輔助硬體線程的發起硬體線程的示例性示圖; 以及圖17是其中可以實現在此描述的方法的信息處理系統的框圖示例。
具體實施例方式在以下描述和附圖中,闡明了某些特定細節以便提供對本公開各種實施方式的透徹理解。然而,在以下公開中並不闡明通常與計算和軟體技術相關聯的特定公知細節,以避免不必要地使得本公開的各種實施方式變得模糊。此外,本領域普通技術人員將理解,他們可以在沒有以下描述的細節中的一個或多個的情況下實踐本公開的其他實施方式。最後, 儘管參考了以下公開中的步驟和序列來描述各種方法,但這種描述是為了提供對本公開的實施方式的清楚的實現,並且不應當將這些步驟和步驟的序列視為是實踐本公開所必需的。而是,下文旨在提供對本公開的示例的詳細描述,並且不應當被視為是對本公開本身的限制。相反地,任何數目的變型均可以落入本公開的範圍內,本公開的範圍由說明書所附的權利要求書限定。如本領域技術人員將意識到的,本公開的方面可以體現為系統、方法或者電腦程式產品。相應地,本公開的方面可以採取完全硬體實施方式、完全軟體實施方式(包括固件、駐留軟體、微代碼等)或者組合了軟體和硬體方面的實施方式的形式,在此可以將其統稱為「電路」、「模塊」或者「系統」。另外,本公開的方面可以採取電腦程式產品的形式,該電腦程式產品體現在具有體現在其上的計算機可讀程序代碼的一個或多個計算機可讀介質中。可以利用一個或多個計算機可讀介質的任何組合。計算機可讀介質可以是計算機可讀信號介質或計算機可讀存儲介質。計算機可讀存儲介質可以例如是但不限於電子的、 磁的、光的、電磁的、紅外的或半導體的系統、裝置或設備,或者前述各項的任何合適的組合。計算機可讀存儲介質的更多特定示例(非窮舉列表)將包括以下各項具有一個或多個導線的電連接、可攜式計算機磁碟、硬碟、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦除可編程只讀存儲器(EPR0M或閃速存儲器)、光纖、可攜式壓縮光碟只讀存儲器(CD-ROM)、 光存儲設備、磁存儲設備,或者前述各項的任何合適的組合。在本文獻的上下文中,計算機可讀存儲介質可以是可以包含或存儲用於由指令執行系統、裝置或者設備使用的或者結合指令執行系統、裝置或者設備而使用的程序的任何有形介質。計算機可讀信號介質可以包括所傳播的其中(例如在基帶中或者作為載波的一部分)體現有計算機可讀程序代碼的數據信號。此類所傳播的信號可以採取各種形式中的任何種類,包括但不限於電磁的、光學的或者其任何合適的組合。計算機可讀信號介質可以是並非計算機可讀存儲介質的並且能夠傳遞、傳播或者傳輸用於由指令執行系統、裝置或者設備使用的或者結合指令執行系統、裝置或者設備而使用的程序的任何計算機可讀介質。可以使用任何適當的介質來傳送體現在計算機可讀介質上的程序代碼,這些介質包括但不限於無線的、有線的、光纖電纜、RF等,或者前述各項的任何合適的組合。用於執行針對本公開的方面的操作的電腦程式代碼可以採用一種或多種程式語言的任何組合來編寫,這些程式語言包括諸如Java、Smalltalk, C++等面向對象的程式語言以及諸如「C」程式語言或類似的程式語言之類的常規的過程程式語言。程序代碼可以作為獨立軟體包完全在用戶的計算機上執行、部分地在用戶的計算機上執行,部分地在用戶的計算機上並且部分地在遠程計算機上執行,或者完全在遠程計算機或伺服器上執行。在後一種場景中,遠程計算機可以通過任何類型的網絡(包括區域網(LAN)或廣域網 (WAN))連接到用戶的計算機,或者可以連接到外部計算機(例如使用網際網路服務提供商、 通過網際網路)。下文參考根據本公開的實施方式的方法、裝置(系統)以及電腦程式產品的流程示和/或框圖來描述本公開的方面。應當理解,流程示和/或框圖的每個塊以及流程示和/或框圖中的塊的組合可以通過電腦程式指令來實現。可以將這些電腦程式指令提供給通用計算機、專用計算機或者其他可編程數據處理裝置的處理器以產生機器,從而使得經由計算機或其他可編程數據處理裝置的處理器執行的指令創建用於實現在流程圖和/或框圖的一個或多個塊中所指定的功能/動作的裝置。還可以將這些電腦程式指令存儲在計算機可讀介質中,該計算機可讀介質能夠引導計算機、其他可編程數據處理裝置或者其他設備以特定方式運轉,從而使得存儲在計算機可讀介質中的指令產生製造品,該製造品包括實現在流程圖和/或框圖的一個或多個塊中所指定的功能/動作的指令。還可以將這些電腦程式指令加載到計算機、其他可編程數據處理裝置或者其他設備上,以使得在計算機、其他可編程裝置或者其他設備上執行一系列操作性步驟以產生計算機實現的過程,從而使得在計算機或其他可編程裝置上執行的指令提供用於實現在流程圖和/或框圖的一個或多個塊中所指定的功能/動作的過程。以下詳細描述將總體上遵循如以上闡明的公開的概要,根據需要進一步說明和擴展對本公開的各種方面和實施方式的限定。圖1是示出在不利用管理程序的情況下在多線程處理器上發起輔助硬體線程的處理器的軟體程序的示例性示圖。當軟體程序110開始執行時,處理器100向軟體程序110 指派發起硬體線程120。由於軟體程序110對發起硬體線程120執行指令115,因此指令 115之一是「分支和發起指令」,其指示發起硬體線程120檢查另一硬體線程是否可用,諸如用於執行軟體程序110的指令(指令145)的子集。本公開描述了兩種類型的分支和發起指令,其是分支和發起輕型(BAIL)指令以及分支和發起重型(BAIH)指令。正如在此所討論的那樣,BAIL指令和BAIH指令之間的差異是當輔助硬體線程開始執行時,BAIH指令確保所有發起硬體線程存儲操作對輔助硬體線程來說是可見的。照這樣,當軟體程序要求存儲器同步時,該軟體程序可以利用BAIH指令而不是BAIL指令。相反,當軟體程序不要求存儲器同步時,該軟體程序可以利用BAIL指令而不是BAIH指令,這是因為BAIL指令不保證存儲器同步並且從而執行得更快。如本領域技術人員能夠意識到的那樣,可以獲得其他類型的分支和發起指令以指示發起硬體線程來發起輔助硬體線程。當發起硬體線程120執行分支和發起指令時,發起硬體線程120檢查硬體狀態存儲125以確定另一硬體線程是否可用。例如,處理器100可以包括硬體線程庫,並且硬體狀態存儲125包括指示哪個硬體線程可用的信息(參見圖:3B和對應的文本以便了解進一步的細節)。當輔助硬體線程可用時,發起硬體線程120調用輔助硬體線程150,並且將寄存器值從發起線程寄存器140複製到輔助線程寄存器170。在一個實施方式中,發起硬體線程 120從發起線程寄存器140複製到輔助線程寄存器170的寄存器值取決於分支和發起指令的類型以及指令參數值(參見圖6-圖7以及對應的文本以便了解進一步的細節)。在一個實施方式中,發起硬體線程120和輔助硬體線程150各自具有用於執行指令的專用執行單兀。發起硬體線程120通過對輔助線程狀態寄存器(ATSR) 130包括的輔助線程有效 (ATV)位進行設置,向軟體程序110通知輔助硬體線程150可用(參見圖2、圖4以及對應的文本以便了解進一步的細節)。發起硬體線程120還向輔助硬體線程150指派輔助線程號(ATN)值,發起硬體線程120將該ATN值存儲在硬體狀態存儲125中,並且軟體程序110 將該ATN值存儲在軟體狀態存儲115中,以跟蹤輔助硬體線程150的狀態。一旦輔助硬體線程150發起,軟體程序110就對輔助硬體線程150執行指令145。 輔助硬體線程150繼續執行指令145直到例如輔助硬體線程150發生如下情況為止1)完成代碼執行;2)執行停止輔助線程(SAT)指令;3)發起硬體線程120執行SAT指令並且終止輔助硬體線程150 ;或者4)處理器100終止輔助硬體線程150(參見圖5、圖8以及對應的文本以便了解進一步的細節)。當輔助硬體線程150停止執行時,輔助硬體線程150在發起硬體線程120的輔助線程狀態寄存器130中存儲信息,諸如終止指示符和地址信息(參見圖2、圖8以及對應的文本以便了解進一步的細節)。在一個實施方式中,軟體程序110請求多個輔助硬體線程執行不同代碼段。在這一實施方式中,最後一個停止執行的輔助硬體線程在輔助線程狀態寄存器130中寫入終止指示符和地址信息(參見圖5、圖14以及對應的文本以便了解進一步的細節)。在另一實施方式中,輔助硬體線程150可以調用後續的輔助硬體線程。在這一實施方式中,輔助硬體線程150變為後續的輔助硬體線程的「發起硬體線程」,並且使用輔助線程狀態寄存器160來存儲關於後續輔助硬體線程的信息(參見圖15以及對應的文本以便了解進一步的細節)。在這一實施方式中,當發起線程執行指令以終止輔助硬體線程150 時,輔助硬體線程150自動地終止後續的輔助硬體線程。在又一實施方式中,軟體程序110可能希望檢查輔助硬體線程150的特定狀態,以便確定輔助硬體線程150是否仍然正在執行。在這一實施方式中,軟體程序110對發起線程120執行「輔助線程檢查」指令,諸如分支條件if輔助線程執行(BCE)指令或條件寄存器設置if輔助線程執行(CRSE)指令。在這一實施方式中,軟體程序110從軟體狀態存儲 115獲取對應於輔助硬體線程150的輔助線程號(ATN)並且將該ATN存儲在通用寄存器中。 接著,軟體程序110在由發起硬體線程120所執行的BCE指令中包括通用寄存器號。發起硬體線程120從通用寄存器獲取ATN並且訪問硬體狀態存儲125以檢查輔助硬體線程150 的狀態。接著,發起硬體線程120根據輔助硬體線程150的狀態進行分支(或者設置條件位)(參見圖10-圖13以及對應的文本以便了解進一步的細節)。圖2是示出輔助線程狀態寄存器(ATSR)的示例性示圖。諸如發起硬體線程120 之類的發起硬體線程使用ATSR 130來跟蹤整體輔助硬體線程狀態。ATSR 130包括用於存儲此類跟蹤信息的欄位210460。輔助線程號(ATN)欄位210包括對應於最近發起的輔助硬體線程的編號。例如, 如果發起硬體線程120按順序發起輔助硬體線程1、2和3,則ATN欄位包括編號「3」。照這樣,ATSR 130是平臺可縮放的,這是因為ATSR 130不對特定發起硬體線程可以發起的輔助硬體線程的數量施加限制(除ATN欄位210的位數量限制以外)。輔助線程號有效(ATV)位220包括指示ATN欄位210的有效性的位。軟體程序檢查該位以確定所請求的輔助硬體線程是否實際發起(參見圖4以及對應的文本以便了解進一步的細節)。ATSR 130包括輔助線程執行指示符,在一個實施方式中,該輔助線程執行指示符是輔助線程執行(ATE)位230,其表明當前是否有任何輔助硬體線程正在執行。軟體程序可以利用單一讀取操作來檢查ATE位230並且標識是否所有輔助硬體線程都完成了執行(參見圖4、圖5以及對應的文本以便了解進一步的細節)。在一個實施方式中,欄240-260包括僅在ATE位230指示沒有輔助硬體線程正在執行時才有效的信息。輔助線程狀態(ATS)欄位240包括指示最後一個輔助硬體線程的終止的根據(例如輔助線程執行了 SAT指令,發起線程執行了 SAT指令,遇到錯誤,處理器預先清空了資源等)的終止指示符。SAT參數(SATP)欄位250包括當最後一個正在執行的輔助硬體線程執行SAT指令時該輔助硬體線程傳遞給發起硬體線程的參數。例如,SAT參數可以指示輔助硬體線程是否成功地完成了它的任務(代碼執行)。最後,下一指令(Ni)欄位260包括跟隨輔助硬體線程所執行的最後一個指令的指令的地址。圖3A是示出由軟體程序利用來管理輔助硬體線程狀態的軟體狀態存儲區的示例性示圖。如可以看到的,軟體狀態存儲115包括用於當前正在執行的輔助硬體線程的輔助線程號(ATN)值(欄300)和對應的起始地址(欄310)的列表。在一個實施方式中,起始地址是BAIL/BAIH指令針對輔助硬體線程指定的用以開始執行代碼的地址(參見圖6、圖7 以及對應的文本以便了解進一步的細節)。在又一實施方式中,軟體狀態存儲115可以不包括起始地址,而是存儲用於對應的任務的符號式名稱,並且在這一實施方式中,軟體狀態存儲115具有將符號式名稱與代碼段相關聯的不同的表。軟體狀態存儲115可以存儲在易失性存儲器或非易失性存儲器區(諸如計算機硬碟驅動器)上。圖;3B是示出由硬體線程利用來管理輔助硬體線程狀態的硬體狀態存儲區的示例性示圖。類似於以上討論的軟體狀態存儲115,硬體狀態存儲125包括ATN值(欄320)、針對輔助硬體線程的對應硬體線程號(欄330)以及每個輔助硬體線程的狀態(欄340)的列表。在一個實施方式中,欄330中的對應線程號可以與欄320中的輔助線程號相同。正如本領域技術人員能夠意識到的那樣,硬體狀態存儲125可以是存儲信息的矢量,從而使得該矢量中的每個條目指示特定硬體線程的狀態。圖4是示出在發起硬體線程調用輔助硬體線程時所採取的步驟的示例性流程圖。 軟體程序處理開始於400處,隨後軟體程序在步驟405處執行分支和發起輕型(BAIL)或分支和發起重型(BAIH)指令。在一個實施方式中,BAIL與BAIH指令之間的差異在於發起硬體線程所執行的存儲器同步的量(參見圖9以及對應的文本以便了解進一步的細節)。執行軟體程序的發起硬體線程處理開始於450處,隨後發起硬體線程訪問硬體狀態存儲125,並且檢查是否有不同的硬體線程(輔助硬體線程)可用。硬體狀態存儲125包括關於處理器的硬體線程可用性的信息(參見圖:3B以及對應的文本以便了解進一步的細節)。發起硬體線程確定另一硬體線程是否可用於用作輔助硬體線程(判定460)。如果輔助硬體線程不可用,則判定460分支到「否」分支462,隨後發起硬體線程在輔助線程狀態寄存器(ATSR)ATV位220中將輔助線程號有效位設置為「0」(步驟465)。接著,由於輔助硬體線程不可用,因此發起硬體線程在步驟440處執行目標為輔助硬體線程的任務,並且處理在445處結束。另一方面,如果輔助硬體線程可用,則判定460分支到「是」分支465,隨後發起硬體線程在步驟470處將輔助線程值(ATV)位設置為「1」。接下來,發起硬體線程生成輔助線程號(ATN)(例如對計數器或隨機數生成器增值),並且在硬體狀態存儲125中存儲輔助線程號,以及對被指派為輔助硬體線程的線程的指示(例如另一號碼或與ATN相同的號碼)。 發起硬體線程還在ATSR輔助線程號欄位210中存儲ATN值(步驟475)。在步驟480處,發起硬體線程標識要從它的寄存器複製到輔助硬體線程寄存器的特定寄存器值。發起硬體線程基於BAIL/BAIH指令的參數來選擇寄存器值。在步驟485處, 發起硬體線程將標識的寄存器值從發起線程寄存器140複製到輔助線程寄存器170。返回參考軟體程序,軟體程序在步驟410處檢查ATSR ATV位220,以確定所請求的輔助硬體線程是否發起(判定415)。如果輔助硬體線程沒有發起(例如ATV位=0),則軟體程序執行具有如以上討論的目標為輔助硬體線程的發起線程的任務(步驟440),並且處理在445處結束。另一方面,如果所請求的輔助硬體線程發起了,則判定415分支到「是」分支418 ; 隨後,在一個實施方式中,軟體程序可以從ATSR ATN欄位210獲取輔助線程號,並且將所獲取的ATN值存儲在軟體狀態存儲115中。在另一實施方式中,軟體程序可以不跟蹤發起輔助硬體線程(諸如當輔助硬體線程的任務是僅僅將數據預取到高速緩存中時),以便改進發起硬體線程的整體性能。軟體狀態存儲115包括用於跟蹤軟體程序所調用的輔助硬體線程的信息(參見圖3A以及對應的文本以便了解進一步的細節)。接著,軟體程序使用所發起的輔助硬體線程來執行指令(預定的處理塊490,參見圖5以及對應的文本以便了解進一步的細節)。當輔助硬體線程終止(由於完成代碼執行或者被迫終止)時,輔助硬體線程將 ATSR輔助線程執行(ATE)位230清零(clear)。在一個實施方式中,軟體程序在等待輔助硬體線程完成的同時執行其他任務(步驟42幻。在另一實施方式中,軟體程序可以請求多個輔助硬體線程執行該軟體程序的各種區段。在這一實施方式中,最後一個完成的輔助硬體線程對ATSR ATE位230清零(參見圖5以及對應的文本以便了解進一步的細節)。在一個實施方式中,當輔助硬體線程完成時,軟體程序可以在步驟430處檢查輔助硬體線程的結果,諸如將這些結果用於後續計算。軟體程序和發起硬體線程分別在435 和495處結束。在一個實施方式中,在發起硬體線程上執行的軟體程序可以前進以執行其他任務,諸如發起附加輔助硬體線程。圖5是示出在輔助硬體線程執行指令時所採取的步驟的示例性流程圖。輔助硬體線程處理開始於500處,隨後輔助硬體線程訪問存儲在輔助線程寄存器170中的寄存器值, 並且在步驟505處執行軟體程序110的指令。在指令執行期間,輔助硬體線程確定是否響應於完成指令執行或者接收到終止執行的指示而終止執行(判定510)。在一個實施方式中,輔助硬體線程可以完成指令執行或者執行停止輔助線程(SAT)指令,其指示輔助硬體線程終止指令執行(參見圖8以及對應的文本以便了解進一步的細節)。在另一實施方式中,發起硬體線程可以執行SAT指令,並且接著終止輔助硬體線程。在又一實施方式中,控制發起硬體線程和輔助硬體線程的處理器可以終止輔助硬體線程以便輔助硬體線程執行其他更高優先級的程序,或者以便回收輔助硬體線程的資源。如果輔助硬體線程應當繼續執行指令,則判定510分支到「否」分支517,其循環返回以繼續執行指令。這一循環繼續,直到輔助硬體線程終止為止,此時判定510分支到「是」 分支514。在步驟520處,輔助硬體線程將在硬體狀態存儲125中的它的狀態從「正在執行」 改變為「終止」。接下來,輔助硬體線程檢查其他輔助硬體線程的狀態(步驟525)以便確定其他輔助硬體線程是否仍然正在執行(判定530)。如果其他輔助硬體線程仍然正在執行, 則判定530分支到「是」分支532,隨後輔助硬體線程在步驟560處釋放它的資源,並且輔助硬體線程處理在570處結束。在一個實施方式中,在輔助硬體線程終止之後,處理器(例如處理器100)可以更新發起硬體線程的ATSR位。另一方面,如果沒有其他輔助硬體線程正在執行,則判定530分支到「否」分支 534,隨後輔助硬體線程在步驟540處在ATSR輔助線程狀態(ATQ欄位240中存儲終止指示符(例如輔助線程執行了 SAT指令,發起線程執行了 SAT指令,遇到錯誤,處理器預先清空了資源等)。輔助硬體線程在步驟545處在ATSR SATP欄位250中存儲SAT參數。例如, 如果ATS欄位指示由於輔助硬體線程執行了 SAT指令因此該輔助硬體線程終止,則SATP欄位250可以包括指示輔助硬體線程是否成功地完成了它的任務的參數。在步驟550處,輔助硬體線程在ATSR NI欄位沈0中存儲對應於緊接著輔助線程所執行的最後一個指令的下一指令的地址。最後,輔助硬體線程在步驟555處對ATSR ATE 欄位中的輔助線程執行指示符清零,從而向軟體程序110指示每個輔助硬體線程都已經停止執行(參見圖4以及對應的文本以便了解進一步的細節)。輔助硬體線程在560處釋放它的資源並且在570處結束。在一個實施方式中,在步驟555之前,處理器可以確保由輔助硬體線程執行的所有存儲對發起硬體線程來說是可見的。在這一實施方式中,通過確保輔助硬體線程的所有存儲對發起硬體線程來說是可見的,發起硬體線程可以讀取存儲在存儲器中的輔助硬體線程的結果(參見圖4以及對應的文本以便了解進一步的細節)。圖6是示出分支和發起輕型(BAIL)指令的示例性示圖。BAIL指令600使得軟體程序100能夠在不需要管理程序介入、並且不會不利地影響管理程序操作或其他正在執行的程序情況下,從多線程處理器高效地請求輔助硬體線程。BAIL指令600包括op代碼欄位(位0- 以及擴展的op代碼欄位(位21-30), 當硬體線程執行時,這些代碼欄位指示硬體線程檢查輔助硬體線程是否可用。如果可用,則發起硬體線程將特定寄存器值(諸如基址寄存器組(通用寄存器、特許控制寄存器等))連同基於複製位「6」的其他寄存器值(浮點、矢量單元等),從發起硬體線程的寄存器複製到輔助硬體線程的寄存器(參見圖9以及對應的文本以便了解進一步的細節)。一旦複製了, 輔助硬體線程就開始執行對應於位於BAIL指令600的位7-20中的目標地址的代碼。正如本領域技術人員能夠意識到的那樣,BAIL指令600可以包括更多或更少的位和/或不同於圖6中所示的而被劃分。圖7是示出分支和發起重型(BAIH)指令的示例性示圖。BAIH指令700類似於圖 6中示出的BAIL指令。然而,與BAIL指令相比,BAIH指令還可以執行存儲器同步步驟。BAIH指令包括op代碼欄位(位0- 以及擴展的op代碼欄位(位21-30),當硬體線程執行時,這些欄位指示硬體線程檢查輔助硬體線程是否可用。如果可用,則發起硬體線程複製特定寄存器值(諸如基址寄存器組(通用寄存器、特許控制寄存器等))以及基於複製位「6」的其他寄存器(浮點、矢量單元等)(參見圖9以及對應的文本以便了解進一步的細節)。一旦發起硬體線程將寄存器值複製到輔助硬體線程寄存器,輔助硬體線程就開始執行對應於位於BAIH指令600的位7-20中的目標地址的代碼。正如本領域技術人員能夠意識到的那樣,BAIH指令可以包括更多或更少的位和/或以不同於圖7所示方式而被劃分。圖8是示出停止輔助線程(SAT)指令的示例性示圖。隨著輔助硬體線程執行,輔助硬體線程(或發起硬體線程)可以執行SAT指令,該SAT指令指示輔助硬體線程停止執行。當發起線程執行SAT指令800時,該發起線程指示輔助硬體線程停止執行(終止)。當輔助硬體線程執行SAT指令800時,該輔助線程停止其自身的執行。SAT指令800包括op代碼欄位(位0-5)以及擴展的op代碼欄位(位21-30), 當發起硬體線程執行時,這些欄位通知發起硬體線程指示一個或多個輔助硬體線程停止執行。SAT指令800還包括終止位20,當由發起硬體線程執行時,終止位20指示發起硬體線程終止所有激活的輔助硬體線程或者終止特定的輔助硬體線程。當位20表示終止特定輔助硬體線程時,位6-10包括源寄存器(舊)位置(例如通用寄存器位置),該源寄存器位置包括對應於要終止的輔助硬體線程的輔助線程號(ATN)。在另一實施方式中,當輔助硬體線程執行SAT指令800時,該輔助硬體線程可以使用位20來向它的發起硬體線程傳遞迴SAT參數。例如,輔助硬體線程可以在其完成代碼執行時在位20中存儲「1」,並且可以在其未能完成代碼執行時在位20中存儲「0」。在這一實施方式中,輔助硬體線程在其執行SAT指令800時忽略位6-10。在又一實施方式中,SAT指令800可以不具有RS欄位(位6_10)。在這一實施方式中,發起硬體線程終止其發起的所有激活的輔助硬體線程,而不考慮位20的值如何(例如忽略位20)。圖9是示出在BAIL和BAIH指令期間發起硬體線程從發起線程寄存器複製到輔助線程寄存器的寄存器值的示例性示圖。圖9示出了 在這些指令期間,發起硬體線程複製基址寄存器值(例如通用寄存器、條件寄存器以及對大多數計算任務來說必要的其他寄存器)O在一個實施方式中,發起硬體線程將地址轉換寄存器值從發起硬體線程寄存器 140複製到輔助硬體線程寄存器170(例如用於將有效或虛擬地址變換為實際地址的寄存器值)。在另一實施方式中,發起硬體線程和輔助硬體線程可以共享相同的地址轉換寄存器,或者可以預設輔助硬體線程的轉換寄存器。在這一實施方式中,軟體程序可以將發起硬體線程配置為使得該發起硬體線程不複製地址轉換寄存器值。基於BAIL/BAIH指令的複製位,發起硬體線程還可以將一組依賴於實現的寄存器值、從發起硬體線程寄存器140複製到輔助硬體線程寄存器170 (參見圖6以及對應的文本以便了解進一步的細節)。在一個實施方式中,該組依賴於實現的寄存器包括矢量寄存器、 浮點寄存器以及與輔助硬體線程偶爾要求的專門的計算任務相關聯的其他寄存器組。在一個實施方式中,為了從先前的計算移除任何殘留值,發起硬體線程可以對輔助硬體線程寄存器170中的不包括從發起硬體線程寄存器140複製的寄存器值的寄存器清零。雖然BAIL和BAIH指令可以執行一組相同的寄存器複製,但在一個實施方式中,其指令在發起硬體線程的存儲器同步方面不同。例如,在處理器不按順序執行存儲器「存儲」 的情況下,並不保證由一個指令執行的存儲器存儲在接下來的指令執行之前完成。因此,在這一示例中,如果緊接著存儲操作的指令發起輔助硬體線程,則不存在在輔助線程發起之前完成存儲操作的保證。如果存儲操作未完成,則存儲操作值在不確定的時間內對輔助線程來說可能不可見。照這樣,當輔助硬體線程要求訪問所存儲的信息以便執行其任務時就會出現問題。BAIH指令減輕了這一問題,這是因為BAIH指令確保了由發起線程執行的存儲在輔助硬體線程發起之前已經完成到足以提供輔助硬體線程可見性,從而允許輔助硬體線程讀取存儲器位置並且相應地執行任務。當軟體程序不要求存儲器同步時,由於BAIL指令的執行速度(這是因為其不保證存儲器同步),該軟體程序可以利用BAIL指令。在一個實施方式中,BAIL和BAIH指令具有很多變型。例如,對於並未亂序執行存儲操作的處理器,處理器可以不利用BAIH指令,但某些實施方式可能利用一種形式的BAIL 指令,該BAIL指令相對於BAIH指令複製更大的一組寄存器。在另一示例中,不保證按順序的存儲的實現可以將BAIH指令配置為使得發起硬體線程根據特定應用的需要而複製比 BAIL指令更多的寄存器。圖10是示出在執行分支條件if輔助線程執行(BCE)指令時所採取的步驟的示例性流程圖。當軟體程序要求特定輔助硬體線程的狀態時可能出現狀況。在這些狀況中,軟
14件程序可以對發起硬體線程執行條件轉移指令,其基於特定輔助硬體線程是否仍然正在執行而進行分支。BCE軟體程序執行開始於1000處,隨後軟體程序從軟體狀態存儲115獲取對應於特定輔助線程的輔助線程號(ATN)值(步驟1005)。在步驟1010處,軟體程序在特定通用寄存器(例如寄存器「4」)中存儲ATN值,並且在另一通用寄存器(例如寄存器「5」)中存儲目標地址,其標識了當輔助硬體線程仍然正在執行時發起硬體線程要執行的代碼中的位置(下面將討論)。接下來,軟體程序對發起硬體線程執行分支條件if輔助線程執行(BCE) 指令,該指令包括ATN值和目標地址的通用寄存器位置(步驟1015)。發起硬體線程執行開始於1040處,隨後發起硬體線程從BCE指令提取通用寄存器號,並且從通用寄存器獲取ATN以及目標地址(步驟1050)。接下來在步驟1060處,發起硬體線程檢查硬體狀態存儲125中的對應的輔助硬體線程的狀態。發起硬體線程基於步驟1060處的狀態來確定輔助硬體線程是否仍然正在執行 (判定1070)。如果輔助硬體線程仍然正在執行,則判定1070分支到「是」分支1072,隨後發起硬體線程分支到在步驟1050中獲取的目標地址(步驟1080)。另一方面,如果輔助硬體線程終止了,則判定1070分支到「否」分支1078,隨後發起硬體線程繼續在下一指令處執行(步驟1090)。軟體程序基於發起硬體線程是否分支來確定特定輔助硬體線程是否仍然正在執行(判定1020)。如果發起硬體線程出現分支,則判定1020分支到「是」分支1022,隨後軟體程序在步驟IOM處根據輔助硬體線程仍然正在執行來執行任務,諸如繼續對與給予輔助線程的任務無關的任務進行工作。另一方面,如果發起硬體線程沒有出現分支,則判定1020 分支到「否」分支1026,隨後軟體程序根據輔助硬體線程終止來執行任務(步驟1028)。例如,軟體程序可以檢查共享存儲器位置以確定輔助硬體線程是否成功地完成了它的操作, 並且相應地執行附加任務(例如開始另一輔助線程、執行其他工作等)。軟體程序和發起硬體線程處理分別在1030和1095處結束。圖11是示出在執行條件寄存器設置if輔助線程執行(CRSE)指令時所採取的步驟的示例性流程圖。該CRSE指令類似於在圖10中討論的BCE指令,只不過發起線程基於特定輔助硬體線程的狀態設置條件位而不是分支到目標地址。CRSE軟體程序執行開始於1100處,隨後軟體程序從軟體狀態存儲115獲取對應於特定輔助線程的輔助線程號(ATN)值(步驟1105)。在步驟1110處,軟體程序在特定的通用寄存器(GPI )中存儲ATN值以及條件寄存器位位置。條件寄存器位位置對應於發起硬體寄存器基於輔助硬體線程的狀態而設置的條件寄存器位(下面將討論)。接下來,軟體程序在CRSE指令中包括GPR寄存器位置並且使用發起硬體線程來執行CRSE指令(1115)。發起硬體線程執行開始於1140處,隨後發起硬體線程從CRSE指令提取通用寄存器號,並且從對應於所提取的通用寄存器號的通用寄存器獲取ATN以及條件寄存器位位置 (步驟1150)。接下來,發起硬體線程在步驟1160處檢查硬體狀態存儲125中的所獲取的 ATN的對應的輔助硬體線程的狀態。發起硬體線程基於步驟1160處的狀態來確定輔助硬體線程是否仍然正在執行 (判定1170)。如果輔助硬體線程仍然正在執行,則判定1170分支到「是」分支1072,隨後發起硬體線程在步驟1180處設置條件寄存器位,該位對應於以上討論的所獲取的條件寄存器位位置。另一方面,如果輔助硬體線程終止了,則判定1170分支到「否」分支1078,隨後發起硬體線程將條件寄存器位1185設置為「0」(步驟1090)。軟體程序通過檢查條件寄存器位1185來確定特定輔助硬體線程是否仍然正在執行,並且在步驟1120處相應地執行任務。軟體程序和發起硬體線程處理分別在1130和1195 處結束。圖12是示出分支條件if輔助線程執行(BCE)指令的示例性示圖。BCE指令1200 使得軟體程序能夠確定特定輔助硬體線程是否仍然正在執行代碼,這是通過在發起硬體線程確定輔助硬體線程正在執行時指示發起硬體線程分支到目標地址來實現的。BCE指令1200包括op代碼欄位(位0- 以及擴展的op代碼欄位(位16-20), 當硬體線程執行時,這些欄位指示「發起,,硬體線程檢查輔助硬體線程是否正在執行。BCE 指令1200包括位11-15,這些位標識了包括供輔助硬體線程檢查的輔助線程號(ATN)的通用寄存器。如果輔助硬體線程仍然正在執行,則發起硬體線程分支到包括在由位6-10標識的通用寄存器中的目標地址(參見圖10以及對應的文本以便了解進一步的細節)。正如本領域技術人員能夠意識到的那樣,BCE指令1200可以包括更多或更少的位和/或以不同於圖12所示方式而被地劃分。圖13是示出條件寄存器設置if輔助線程執行(CRSE)指令的示例性示圖。CRSE 指令1300使得軟體程序能夠確定特定輔助硬體線程是否仍然正在執行代碼,這是通過在發起硬體線程確定輔助硬體線程正在執行時指示發起硬體線程設置條件寄存器位來實現的。CRSE指令1300包括op代碼欄位(位0- 以及擴展的op代碼欄位(位16-20), 當硬體線程執行時,這些欄位指示「發起」硬體線程檢查輔助硬體線程是否正在執行。BCE 指令1200包括位11-15,這些位標識了包括供輔助硬體線程檢查的輔助線程號(ATN)的通用寄存器。位6-10指定了如下通用寄存器,該通用寄存器包括當輔助硬體線程正在執行時發起硬體寄存器設置的條件寄存器位位置(參見圖11以及對應的文本以便了解進一步的細節)。正如本領域技術人員能夠意識到的那樣,處理器將條件寄存器位用於各種類型的分支指令,或者用於指示狀態,諸如算術運算溢出。正如本領域技術人員還能夠意識到的那樣,BCE指令1200可以包括更多或更少的位和/或以不同於圖13所示方式而被劃分。圖14是示出調用多個輔助硬體線程的發起硬體線程的示例性示圖。當軟體程序 1410開始時,處理器100向軟體程序1410指派發起硬體線程1420。軟體程序1410包括在此描述的多個分支和發起指令(例如BAIL和/或BAIH指令),諸如用於執行特定任務的不同的代碼段。接著,發起硬體線程1420檢查硬體線程可用性、發起輔助硬體線程1450-1470 並且向每個輔助硬體線程指派特定的輔助線程號(ATN)。發起硬體線程1420在硬體狀態存儲1440中存儲ATN並且軟體程序1410在軟體狀態存儲1415中存儲ATN以用於跟蹤目的。發起硬體線程1420包括ATSR 1430,該ATSR 1430存儲關於最近發起的輔助硬體線程的信息(例如輔助硬體線程1470的ATN)。接著,輔助硬體線程1450-1470中最後一個停止執行的輔助硬體線程在ATSR 1430中存儲信息(參見圖2、圖5以及對應的文本以便了解進一步的細節)。圖15是示出調用輔助硬體線程的發起硬體線程(該輔助硬體線程接著調用其他輔助硬體線程)的示例性示圖。當軟體程序1510開始時,處理器1500向軟體程序1510指派發起硬體線程1520。軟體程序1510包括在此描述的例如可以捆綁在軟體代碼內的多個分支和發起指令。發起硬體線程1520執行分支和發起指令之一,這引起發起硬體線程1520調用輔助硬體線程1550。發起硬體線程1520在硬體狀態存儲1540中存儲用於輔助硬體線程1550 的對應的ATN,並且軟體程序1510在軟體狀態存儲1515中存儲ATN,正如在此所討論的那樣。輔助硬體線程1550開始執行,並且執行兩個分支和發起指令。接著,輔助硬體線程1550發起輔助硬體線程1580-1590,並且相應地在硬體狀態存儲1570中存儲對應的 ATN0軟體程序1510還在軟體狀態存儲1515中存儲ATN,正如在此所討論的那樣。此外,輔助硬體線程1550使用ATSR 1560來跟蹤輔助硬體線程1580-1590。照這樣,ATSR 1560包括關於最近發起的輔助硬體線程的信息(例如輔助硬體線程1590的 ATN)。接著,輔助硬體線程1580-1590中最後一個停止執行的輔助硬體線程在ATSR 1560 中存儲信息(參見圖2、圖5以及對應的文本以便了解進一步的細節)。圖16是示出調用不同處理器上的輔助硬體線程的發起硬體線程的示例性示圖。 圖16類似於圖15,只不過輔助硬體線程在與執行發起硬體線程的發起處理器不同的處理器上執行。當軟體程序1610開始時,處理器1600向軟體程序1610指派發起硬體線程1620。 軟體程序1610包括在此描述的例如可以捆綁在軟體代碼內的多個分支和發起指令。發起硬體線程1620執行分支和發起指令之一,這引起發起硬體線程調用處理器 1650上的輔助硬體線程1650,並且在硬體狀態存儲1640中存儲對應的ATN。軟體程序1610 還在軟體狀態存儲1615中存儲ATN。輔助硬體線程1660開始執行,並且執行兩個分支和發起指令。接著,輔助硬體線程1660發起輔助硬體線程1690-1695,並且相應地在硬體狀態存儲1680中存儲對應的 ATN0軟體程序1610還在軟體狀態存儲1615中存儲ATN,正如在此所討論的那樣。輔助硬體線程1660使用ATSR 1670來跟蹤輔助硬體線程1690-1695。照這樣,ATSR 1670包括關於最近發起的輔助硬體線程的信息(例如輔助硬體線程1695的ATN)。接著,輔助硬體線程1690-1695中最後一個停止執行的輔助硬體線程在ATSR 1670中存儲信息(參見圖2、圖5以及對應的文本以便了解進一步的細節)。圖17圖示了信息處理系統1700,其是能夠執行在此描述的計算操作的計算機系統的簡化示例。信息處理系統1700包括耦合到處理器接口總線1712的一個或多個處理器 1710。處理器接口總線1712將處理器1710連接到存儲器控制器,該存儲器控制器連接到系統存儲器1720,並且為處理器1710提供訪問系統存儲器的手段。圖形控制器1725也連接到存儲器控制器。在一個實施方式中,快速PCI總線1718將存儲器控制器連接到圖形控制器1725。圖形控制器1725連接到顯示設備1730,諸如計算機監視器。存儲器控制器1715和I/O控制器1735使用總線1719彼此連接。在一個實施方式中,該總線是沿存儲器控制器1715與I/O控制器1735之間的每個方向、以高速傳遞數據的直接媒體接口(DMI)總線。又被稱為I/O控制器集線器(ICH) I/O控制器1735是如下晶片,該晶片一般地實現以比由存儲器控制器提供的能力更慢的速度操作的能力。I/O控制器1735通常提供用於連接各種組件的各種總線。這些總線包括例如PCI和快速PCI總線、ISA總線、系統管理總線(SMBus或SMB)和/或低管腳計數(LPC)總線。LPC總線通常連接窄帶設備,諸如引導ROM 1796和「既有(legacy) 」 I/O設備(使用「超級I/O」晶片)。 「既有」I/O設備(1798)可以包括例如串行和並行埠、鍵盤、滑鼠和/或軟盤控制器。LPC 總線還將I/O控制器1735連接到可信平臺模塊(TPM) 1795。通常包括在I/O控制器1735 中的其他組件包括直接存儲器存取(DMA)控制器、可編程中斷控制器(PIC)以及存儲設備控制器,該存儲設備控制器使用總線1784將I/O控制器1735連接到非易失性存儲器設備 1785(諸如硬碟驅動器)。Express卡(ExpressCard) 1755是將可熱插拔的設備連接到信息處理系統的插槽。Express卡1755支持快速PCI和USB連接兩者,因為其使用通用串行總線(USB)和快速 PCI總線兩者而連接到I/O控制器1735。I/O控制器1735包括USB控制器1740,該USB控制器1740向連接到USB的設備提供USB連接。這些設備包括網絡攝像頭(攝像頭)1750、 紅外(IR)接收器1748、鍵盤和跟蹤板1744以及提供無線個人區域網絡(PAN)的藍牙設備 1746。USB控制器1740還提供到其他各種各樣的USB連接的設備1742的連接,這些設備諸如滑鼠、可移動非易失性存儲設備1745、數據機、網卡、ISDN連接器、傳真、印表機、USB 集線器以及很多其他類型的USB連接的設備。儘管可移動非易失性存儲設備1745被示出為USB連接的設備,但可移動非易失性存儲設備1745可以使用不同的接口(諸如Firewire 接口等)來連接。無線區域網(LAN)設備1775經由PCI或快速PCI總線1772連接到I/O控制器 1735。LAN設備1775通常實現全部使用相同的協議在信息處理系統1700與另一計算機系統或設備之間無線地進行通信的空中調製技術的IEEE 802. 11標準之一。光存儲設備1790 使用串行ATA(SATA)總線1788連接到I/O控制器1735。串行ATA適配器和設備在高速串行鏈路之上進行通信。串行ATA總線還將I/O控制器1735連接到其他形式的存儲設備,諸如硬碟驅動器。音頻電路1760,諸如音效卡,經由總線1758連接到I/O控制器1735。音頻電路1760還提供如下功能,諸如音頻線路輸入和光數字音頻輸入埠 1762、光數字輸出和頭戴式耳機插孔1764、內部揚聲器1766以及內部麥克風1768。乙太網控制器1770使用諸如 PCI或快速PCI總線之類的總線連接到I/O控制器1735。乙太網控制器1770將信息處理系統1700連接到計算機網絡,諸如區域網(LAN)、網際網路以及其他公共的和專用的計算機網絡。儘管圖17示出了一個信息處理系統,但信息處理系統可以採取很多形式。例如, 信息處理系統可以採取臺式機、伺服器、便攜機、膝上型計算機、筆記本或者其他形式因素的計算機或數據處理系統的形式。此外,信息處理系統可以採取其他形狀因數,諸如個人數字助理(PDA)、遊戲設備、ATM機、攜帶式電話設備、通信設備或者包括處理器和存儲器的其他設備的形式。附圖中的流程圖和框示了根據本公開的各種實施方式的系統、方法以及電腦程式產品的可能的實現的架構、功能和操作。考慮到這一點,流程圖或框圖中的每個塊可以代表模塊、區段或者部分代碼,其包括用於實現所指定的邏輯功能的一個或多個可執行指令。還應當注意,在某些備選實現中,塊中所示的功能可能不以附圖中所示的順序發生。 例如,依賴於所涉及的功能,連續示出的兩個塊實際上可以基本上並發地執行,或者塊有時可以按照相反的順序執行。還應當注意,框圖和/或流程示的每個塊以及框圖和/或流程示的塊的組合可以通過執行所指定的功能或動作的基於專用硬體的系統或者專用硬體和計算機指令的組合來實現。 儘管已經示出和描述了本公開的特定實施方式,但對本領域技術人員來說將顯然的是,基於此處的教示,在不脫離本公開及其更廣泛的方面的情況下,可以進行改變和修改。因此,所附權利要求書旨在在它們的範圍內涵蓋在本公開的真實精神和範圍內的所有此類改變和修改。另外,應當理解,本公開僅僅由所附權利要求書限定。本領域技術人員將理解,如果預期特定數量的所引入的權利要求元素,則此類預期將明確地記載在權利要求書中,而在沒有此類記載的情況下,並不存在此類限制。對於非限制性示例,為了有助於理解,所附權利要求書包含對引導性短語「至少一個」和「一個或多個」的使用以引入權利要求元素。然而,對此類短語的使用不應當解釋為暗示由「一種」或「一個」引入權利要求元素將包含此類所引入的權利要求元素的任何特定權利要求限制為僅包含一個此類元素的公開, 即使當同一權利要求包括引導性短語「一個或多個」或「至少一個」以及諸如「一種」或「一個」之類時也是如此;這也適用於定冠詞在權利要求書中的使用。
權利要求
1.一種機器實現的方法,包括由發起硬體線程發起第一輔助硬體線程,其中所述第一輔助硬體線程執行第一代碼段;設置輔助線程執行指示符,指示一個或多個執行輔助硬體線程; 發起第二輔助硬體線程,其中所述第二輔助硬體線程執行第二代碼段; 標識所述輔助線程執行指示符中的改變,所述改變表示所述第一輔助硬體線程和所述第二輔助硬體線程兩者終止;以及響應於標識所述輔助線程執行指示符中的所述改變,處理輔助硬體線程結果。
2.根據權利要求1的方法,其中調用所述發起硬體線程以發起所述第一輔助硬體線程的軟體程序通過對所述輔助線程執行指示符執行單一讀取操作,確定所述第一輔助硬體線程和所述第二輔助硬體線程兩者停止執行。
3.根據權利要求1的方法,其中輔助線程狀態寄存器包括所述輔助線程執行指示符, 所述方法還包括完成對所述第一輔助硬體線程的執行;由第一硬體線程響應於所述第一硬體線程檢測到第二硬體線程仍然正在執行,確定不改變所述輔助硬體線程位;在完成所述第一輔助硬體線程之後,完成對所述第二輔助硬體線程的執行; 由所述第二硬體線程響應於所述第二硬體線程檢測到所述第一硬體線程並非正在執行,確定改變所述輔助硬體線程位;以及由所述第二輔助硬體線程在包括在所述輔助線程狀態寄存器中的輔助線程狀態欄位中存儲終止指示符,其中所述終止指示符指示用於所述第二輔助硬體線程終止的根據。
4.根據權利要求3的方法,其中響應於所述第二硬體線程檢測到所述第一硬體線程並非正在執行,所述方法還包括由所述第二輔助硬體線程在包括在所述輔助線程狀態寄存器中的停止輔助線程狀態欄位中存儲停止輔助線程參數值,其中所述停止輔助線程參數值表明所述第二輔助硬體線程是否成功地完成執行所述第二代碼段。
5.根據權利要求1的方法,其中所述第一代碼段和所述第二代碼段包括在軟體程序中,所述方法還包括由所述發起硬體線程執行包括在所述軟體程序中的分支條件if輔助線程執行BCE指令,所述執行還包括從所述BCE指令提取多個通用寄存器號,其中所述多個通用寄存器號標識多個通用寄存器,所述多個通用寄存器包括輔助處理器號和目標地址;從所述多個通用寄存器獲取所述輔助處理器號和所述目標地址; 響應於確定所獲取的輔助處理器號對應於所述第一輔助硬體線程,確定所述第一輔助硬體線程是否正在執行;響應於確定所述第一輔助硬體線程正在執行,分支到所述目標地址;以及響應於確定所述第一硬體線程並非正在執行,執行在所述BCE指令之後的下一指令。
6.根據權利要求1的方法,其中所述發起硬體線程包括第一執行單元;並且所述第一輔助硬體線程包括不同於所述第一執行單元的第二執行單元。
7.根據權利要求1的方法,其中所述第一代碼段和所述第二代碼段包括在軟體程序中,所述方法還包括由所述發起硬體線程執行包括在軟體程序中的條件寄存器設置if輔助線程執行CRSE 指令,所述執行還包括從所述CRSE指令提取多個通用寄存器號,其中所述多個通用寄存器號標識多個通用寄存器,所述多個通用寄存器包括輔助處理器號和條件寄存器位號;從所述多個通用寄存器獲取所述輔助處理器號和所述條件寄存器位號; 響應於確定所獲取的輔助處理器號對應於所述第一輔助硬體線程,確定所述第一輔助硬體線程是否正在執行;響應於確定所述第一輔助硬體線程正在執行,在條件寄存器中設置對應於所獲取的條件位寄存器號的條件位;以及響應於確定所述第一輔助硬體線程並非正在執行,將所述條件寄存器中的對應於所獲取的條件位寄存器號的條件位清零。
8.根據權利要求7的方法,還包括由所述軟體程序檢測設置了所述條件位;以及響應於檢測到設置了所述條件位,執行軟體代碼。
9.根據權利要求1的方法,其中所述第一輔助硬體線程調用所述第二輔助硬體線程。
10.根據權利要求1的方法,其中所述發起硬體線程調用所述第二輔助硬體線程。
11.一種信息處理系統,包括 一個或多個處理器;耦合到所述處理器中的至少一個的存儲器;存儲在所述存儲器中、並且由所述處理器中的至少一個執行以便執行以下動作的一組指令由包括在所述處理器之一中的發起硬體線程發起包括在所述處理器之一中的第一輔助硬體線程,其中所述第一輔助硬體線程執行第一代碼段;設置輔助線程執行指示符,指示一個或多個執行輔助硬體線程; 發起包括在所述處理器之一中的第二輔助硬體線程,其中所述第二輔助硬體線程執行第二代碼段;標識所述輔助線程執行指示符中的改變,所述改變表示所述第一輔助硬體線程和所述第二輔助硬體線程兩者終止;以及響應於標識所述輔助線程執行指示符中的所述改變,處理輔助硬體線程結果。
12.根據權利要求11的信息處理系統,其中所述一組指令通過對所述輔助線程執行指示符執行單一讀取操作,確定所述第一輔助硬體線程和所述第二輔助硬體線程兩者停止執行。
13.根據權利要求11的信息處理系統,其中輔助線程狀態寄存器包括所述輔助線程執行指示符,所述一組指令執行動作完成對所述第一輔助硬體線程的執行;由所述第一硬體線程響應於所述第一硬體線程檢測到所述第二硬體線程仍然正在執行,確定不改變所述輔助硬體線程位;在完成所述第一輔助硬體線程之後,完成對所述第二輔助硬體線程的執行; 由所述第二硬體線程響應於所述第二硬體線程檢測到所述第一硬體線程並非正在執行,確定改變所述輔助硬體線程位;以及由所述第二輔助硬體線程在包括在所述輔助線程狀態寄存器中的輔助線程狀態欄位中存儲終止指示符,其中所述終止指示符指示用於所述第二輔助硬體線程終止的根據。
14.根據權利要求13的信息處理系統,其中響應於所述第二硬體線程檢測到所述第一硬體線程並非正在執行,所述一組指令執行動作由所述第二輔助硬體線程在包括在所述輔助線程狀態寄存器中的停止輔助線程狀態欄位中存儲停止輔助線程參數值,其中所述停止輔助線程參數值指示所述第二輔助硬體線程是否成功地完成了執行所述第二代碼段。
15.根據權利要求11的信息處理系統,其中所述第一代碼段和所述第二代碼段包括在所述一組指令中,並且其中所述一組指令執行動作由所述發起硬體線程執行包括在所述一組指令中的分支條件if輔助線程執行BCE指令,所述執行還包括從所述BCE指令提取多個通用寄存器號,其中所述多個通用寄存器號標識多個通用寄存器,所述多個通用寄存器包括輔助處理器號和目標地址;從所述多個通用寄存器獲取所述輔助處理器號和所述目標地址; 響應於確定所獲取的輔助處理器號對應於所述第一輔助硬體線程,而確定所述第一輔助硬體線程是否正在執行;響應於確定所述第一輔助硬體線程正在執行,分支到所述目標地址;以及響應於確定所述第一硬體線程並非正在執行,執行在所述BCE指令之後的下一指令。
16.根據權利要求15的信息處理系統,其中所述一組指令執行動作 由所述一組指令檢測所述發起硬體線程分支到所述目標地址;以及響應於檢測到所述發起硬體線程分支到所述目標地址,執行軟體代碼。
17.根據權利要求11的信息處理系統,其中所述第一代碼段和所述第二代碼段包括在所述一組指令中,其中所述一組指令執行動作由所述發起硬體線程執行包括在所述一組指令中的條件寄存器設置if輔助線程執行 CRSE指令,所述執行還包括從所述CRSE指令提取多個通用寄存器號,其中所述多個通用寄存器號標識多個通用寄存器,所述多個通用寄存器包括輔助處理器號和條件寄存器位號;從所述多個通用寄存器獲取所述輔助處理器號和所述條件寄存器位號; 響應於確定所獲取的輔助處理器號對應於所述第一輔助硬體線程,確定所述第一輔助硬體線程是否正在執行;響應於確定所述第一輔助硬體線程正在執行,在條件寄存器中設置對應於所獲取的條件位寄存器號的條件位;以及響應於確定所述第一輔助硬體線程不正在執行,將所述條件寄存器中的對應於所獲取的條件位寄存器號的條件位清零。
18.根據權利要求17的信息處理系統,其中所述一組指令執行動作檢測設置了所述條件位;以及響應於檢測到設置了所述條件位而執行軟體代碼。
19.一種處理器,包括 發起硬體線程;由所述發起硬體線程發起的第一輔助硬體線程,所述第一輔助硬體線程執行第一代碼段;由所述發起硬體線程響應於發起所述第一輔助硬體線程而配置的輔助線程執行指示符;由所述發起硬體線程發起的第二輔助硬體線程,所述第二輔助硬體線程執行第二代碼段;以及其中所述發起硬體線程檢測所述輔助線程執行指示符中的改變,所述改變表示所述第一輔助硬體線程和所述第二輔助硬體線程兩者終止。
20.根據權利要求20的處理器,其中軟體程序通過對所述輔助線程執行指示符執行單一讀取操作,確定所述第一輔助硬體線程和所述第二輔助硬體線程兩者停止執行。
全文摘要
本發明的實施方式涉及對多個輔助硬體線程進行可縮放狀態跟蹤的方法和系統。其中處理器包括發起硬體線程,該發起硬體線程發起第一輔助硬體線程以執行第一代碼段。接下來,發起硬體線程響應於發起第一輔助硬體線程而設置輔助線程執行指示符。所設置的輔助線程執行指示符指示輔助硬體線程是否正在執行。第二輔助硬體線程發起和開始執行第二代碼段。接著,發起硬體線程檢測輔助線程執行指示符中的改變,該改變表示第一輔助硬體線程和第二輔助硬體線程兩者終止。照這樣,發起硬體線程響應於這兩個輔助硬體線程終止而評估輔助硬體線程結果。
文檔編號G06F9/38GK102411512SQ20111028851
公開日2012年4月11日 申請日期2011年9月19日 優先權日2010年9月20日
發明者G·R·弗雷澤, R·L·阿恩特, R·P·霍爾 申請人:國際商業機器公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀