两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

在沒有管理程序介入的情況下獲得和釋放硬件線程的制作方法

文檔序號(hào):6361791閱讀:221來源:國知局
專利名稱:在沒有管理程序介入的情況下獲得和釋放硬件線程的制作方法
技術(shù)領(lǐng)域
本公開涉及在沒有管理程序(hypervisor)介入的情況下獲取和釋放硬件線程。更特別地,本公開涉及維護(hù)發(fā)起輔助硬件線程的硬件線程,其繼而執(zhí)行軟件代碼段。
背景技術(shù)
當(dāng)今的計(jì)算機(jī)系統(tǒng)通常包括執(zhí)行獨(dú)立指令流的多線程處理器。在硬件線程上執(zhí)行的軟件程序可以從監(jiān)控程序(supervisor program)(例如管理程序)請(qǐng)求對(duì)另一硬件線程的控制。例如,軟件程序可以向用于另一硬件線程的監(jiān)控程序發(fā)送請(qǐng)求以便讓該另一個(gè)硬件線程執(zhí)行代碼段(例如子例程)。監(jiān)控程序檢查硬件線程可用性,并且如果可用則向軟件程序指派該另一個(gè)硬件線程。接著,軟件程序利用該另一個(gè)硬件線程來執(zhí)行代碼段。在很多情況下,軟件程序利用該另一個(gè)硬件線程持續(xù)有限時(shí)間。照這樣,當(dāng)該另一個(gè)硬件線程完成代碼執(zhí)行時(shí),監(jiān)控程序從軟件程序釋放該另一個(gè)硬件線程的資源。

發(fā)明內(nèi)容
第一硬件線程執(zhí)行軟件程序指令,其指令所述第一硬件線程以發(fā)起第二硬件線程。這樣,第一硬件線程標(biāo)識(shí)可由第一硬件線程訪問的一個(gè)或者多個(gè)寄存器值。第一硬件線程接著將所標(biāo)識(shí)的寄存器值復(fù)制到由第二硬件線程可訪問的一個(gè)或者多個(gè)寄存器。繼而,第二硬件線程訪問在可訪問寄存器中包括的所復(fù)制寄存器值,并相應(yīng)地執(zhí)行軟件代碼。由于前文是概要,因而不得已包含簡(jiǎn)化、概括以及對(duì)細(xì)節(jié)的省略;因此,本領(lǐng)域技術(shù)人員將意識(shí)到該概要僅是說明性的,而并非旨在以任何方式進(jìn)行限制。本公開的其他方面、創(chuàng)造性特征以及優(yōu)點(diǎn)(其僅僅由權(quán)利要求書限定)在以下闡明的非限制性詳細(xì)描述中將變得明顯。


通過參考附圖,可以更好地理解本公開,并且本公開的大量對(duì)象、特征和優(yōu)點(diǎn)對(duì)于本領(lǐng)域技術(shù)人員而言將變得明顯,其中:圖1是示出在多線程處理器上發(fā)起輔助硬件線程的處理器的軟件程序的示例性示圖;圖2是示出輔助線程狀態(tài)寄存器(ATSR)的示例性示圖;圖3A是示出由軟件程序利用來管理輔助硬件線程狀態(tài)的軟件狀態(tài)存儲(chǔ)區(qū)的示例性示圖;圖3B是示出由發(fā)起硬件線程利用來管理輔助硬件線程狀態(tài)的硬件狀態(tài)存儲(chǔ)區(qū)的示例性示圖;圖4是示出在發(fā)起硬件線程調(diào)用輔助硬件線程時(shí)采取的步驟的示例性流程圖;圖5是示出在輔助硬件線程執(zhí)行軟件代碼時(shí)采取的步驟的示例性流程圖;圖6是示出分支和發(fā)起輕型(BAIL)指令的示例性示圖7是示出分支和發(fā)起重型(BAIH)指令的示例性示圖;圖8是示出停止輔助線程(SAT)指令的示例性示圖;圖9是示出由發(fā)起硬件線程在分支和發(fā)起指令期間向輔助線程寄存器復(fù)制的寄存器值的示例性示圖;圖10是示出在執(zhí)行分支條件if輔助線程執(zhí)行(BCE)指令時(shí)所采取的步驟的示例性流程圖;圖11是示出在執(zhí)行條件寄存器設(shè)置if輔助線程執(zhí)行(CRSE)指令時(shí)所采取的步驟的示例性流程圖;圖12是示出分支條件if輔助線程執(zhí)行(BCE)指令的示例性示圖;圖13是示出條件寄存器設(shè)置if輔助線程執(zhí)行(CRSE)指令的示例性示圖;圖14是示出調(diào)用多個(gè)輔助硬件線程的發(fā)起硬件線程的示例性示圖;圖15是示出調(diào)用輔助硬件線程的發(fā)起硬件線程(該輔助硬件線程接著調(diào)用其他輔助硬件線程)的示例性示圖;圖16是示出在不同處理器上調(diào)用輔助硬件線程的發(fā)起硬件線程的示例性示圖;以及圖17是其中可以實(shí)現(xiàn)在此描述的方法的信息處理系統(tǒng)的框圖示例。
具體實(shí)施例方式在以下描述和附圖中,闡明了某些特定細(xì)節(jié)以便提供對(duì)本公開各種實(shí)施方式的透徹理解。然而,在以下公開中并不闡明通常與計(jì)算和軟件技術(shù)相關(guān)聯(lián)的特定公知細(xì)節(jié),以避免不必要地使得本公開的各種實(shí)施方式變得模糊。此外,本領(lǐng)域普通技術(shù)人員將理解,他們可以在沒有以下描述的細(xì)節(jié)中的一個(gè)或多個(gè)的情況下實(shí)踐本公開的其他實(shí)施方式。最后,盡管參考了以下公開中的步驟和序列來描述各種方法,但這種描述是為了提供對(duì)本公開的實(shí)施方式的清楚的實(shí)現(xiàn),并且不應(yīng)當(dāng)將這些步驟和步驟的序列視為是實(shí)踐本公開所必需的。而是,下文旨在提供對(duì)本公開的示例的詳細(xì)描述,并且不應(yīng)當(dāng)被視為是對(duì)本公開本身的限制。相反地,任何數(shù)目的變型均可以落入本公開的范圍內(nèi),本公開的范圍由說明書所附的權(quán)利要求書限定。如本領(lǐng)域技術(shù)人員將意識(shí)到的,本公開的方面可以體現(xiàn)為系統(tǒng)、方法或者計(jì)算機(jī)程序產(chǎn)品。相應(yīng)地,本公開的方面可以采取完全硬件實(shí)施方式、完全軟件實(shí)施方式(包括固件、駐留軟件、微代碼等)或者組合了軟件和硬件方面的實(shí)施方式的形式,在此可以將其統(tǒng)稱為“電路”、“模塊”或者“系統(tǒng)”。另外,本公開的方面可以采取計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)程序產(chǎn)品體現(xiàn)在具有體現(xiàn)在其上的計(jì)算機(jī)可讀程序代碼的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中??梢岳靡粋€(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)的任何組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以例如是但不限于電子的、磁的、光的、電磁的、紅外的或半導(dǎo)體的系統(tǒng)、裝置或設(shè)備,或者前述各項(xiàng)的任何合適的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更多特定示例(非窮舉列表)將包括以下各項(xiàng):具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)磁盤、硬盤、隨機(jī)訪問存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦除可編程只讀存儲(chǔ)器(EPR0M或閃速存儲(chǔ)器)、光纖、便攜式壓縮光盤只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)設(shè)備、磁存儲(chǔ)設(shè)備,或者前述各項(xiàng)的任何合適的組合。在本文獻(xiàn)的上下文中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是可以包含或存儲(chǔ)用于由指令執(zhí)行系統(tǒng)、裝置或者設(shè)備使用的或者結(jié)合指令執(zhí)行系統(tǒng)、裝置或者設(shè)備而使用的程序的任何有形介質(zhì)。計(jì)算機(jī)可讀信號(hào)介質(zhì)可以包括所傳播的其中(例如在基帶中或者作為載波的一部分)體現(xiàn)有計(jì)算機(jī)可讀程序代碼的數(shù)據(jù)信號(hào)。此類所傳播的信號(hào)可以采取各種形式中的任何種類,包括但不限于電磁的、光學(xué)的或者其任何合適的組合。計(jì)算機(jī)可讀信號(hào)介質(zhì)可以是并非計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的并且能夠傳遞、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者設(shè)備使用的或者結(jié)合指令執(zhí)行系統(tǒng)、裝置或者設(shè)備而使用的程序的任何計(jì)算機(jī)可讀介質(zhì)??梢允褂萌魏芜m當(dāng)?shù)慕橘|(zhì)來傳送體現(xiàn)在計(jì)算機(jī)可讀介質(zhì)上的程序代碼,這些介質(zhì)包括但不限于無線的、有線的、光纖電纜、RF等,或者前述各項(xiàng)的任何合適的組合。用于執(zhí)行針對(duì)本公開的方面的操作的計(jì)算機(jī)程序代碼可以采用一種或多種編程語言的任何組合來編寫,這些編程語言包括諸如Java、Smalltalk、C++等面向?qū)ο蟮木幊陶Z言以及諸如“C”編程語言、VHDL(超高速集成電路硬件描述語言)或類似的編程語言之類的常規(guī)的過程編程語言。程序代碼可以作為獨(dú)立軟件包完全在用戶的計(jì)算機(jī)上執(zhí)行、部分地在用戶的計(jì)算機(jī)上執(zhí)行,部分地在用戶的計(jì)算機(jī)上并且部分地在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行,或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在后一種場(chǎng)景中,遠(yuǎn)程計(jì)算機(jī)可以通過任何類型的網(wǎng)絡(luò)(包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN))連接到用戶的計(jì)算機(jī),或者可以連接到外部計(jì)算機(jī)(例如使用因特網(wǎng)服務(wù)提供商、通過因特網(wǎng))。下文參考根據(jù)本公開的實(shí)施方式的方法、裝置(系統(tǒng))以及計(jì)算機(jī)程序產(chǎn)品的流程示和/或框圖來描述本公開的方面。應(yīng)當(dāng)理解,流程示和/或框圖的每個(gè)塊以及流程示和/或框圖中的塊的組合可以通過計(jì)算機(jī)程序指令來實(shí)現(xiàn)??梢詫⑦@些計(jì)算機(jī)程序指令提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或者其他可編程數(shù)據(jù)處理裝置的處理器以產(chǎn)生機(jī)器,從而使得經(jīng)由計(jì)算機(jī)或其他可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令創(chuàng)建用于實(shí)現(xiàn)在流程圖和/或框圖的一個(gè)或多個(gè)塊中所指定的功能/動(dòng)作的裝置。還可以將這些計(jì)算機(jī)程序指令存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中,該計(jì)算機(jī)可讀介質(zhì)能夠引導(dǎo)計(jì)算機(jī)、其他可編程數(shù)據(jù)處理裝置或者其他設(shè)備以特定方式運(yùn)轉(zhuǎn),從而使得存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令產(chǎn)生制造品,該制造品包括實(shí)現(xiàn)在流程圖和/或框圖的一個(gè)或多個(gè)塊中所指定的功能/動(dòng)作的指令。還可以將這些計(jì)算機(jī)程序指令加載到計(jì)算機(jī)、其他可編程數(shù)據(jù)處理裝置或者其他設(shè)備上,以使得在計(jì)算機(jī)、其他可編程裝置或者其他設(shè)備上執(zhí)行一系列操作性步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過程,從而使得在計(jì)算機(jī)或其他可編程裝置上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖和/或框圖的一個(gè)或多個(gè)塊中所指定的功能/動(dòng)作的過程。以下詳細(xì)描述將總體上遵循如以上闡明的公開的概要,根據(jù)需要進(jìn)一步說明和擴(kuò)展對(duì)本公開的各種方面和實(shí)施方式的限定。圖1是示出在不利用管理程序的情況下在多線程處理器上發(fā)起輔助硬件線程的處理器的軟件程序的示例性示圖。當(dāng)軟件程序110開始執(zhí)行時(shí),處理器100向軟件程序110指派發(fā)起硬件線程120。由于軟件程序110對(duì)發(fā)起硬件線程120執(zhí)行指令115,因此指令115之一是“分支和發(fā)起指令”,其指示發(fā)起硬件線程120檢查另一硬件線程是否可用,諸如用于執(zhí)行軟件程序110的指令(指令145)的子集。本公開描述了兩種類型的分支和發(fā)起指令,其是分支和發(fā)起輕型(BAIL)指令以及分支和發(fā)起重型(BAIH)指令。正如在此所討論的那樣,BAIL指令和BAIH指令之間的差異是當(dāng)輔助硬件線程開始執(zhí)行時(shí),BAIH指令確保所有發(fā)起硬件線程存儲(chǔ)操作對(duì)輔助硬件線程來說是可見的。照這樣,當(dāng)軟件程序要求存儲(chǔ)器同步時(shí),該軟件程序可以利用BAIH指令而不是BAIL指令。相反,當(dāng)軟件程序不要求存儲(chǔ)器同步時(shí),該軟件程序可以利用BAIL指令而不是BAIH指令,這是因?yàn)锽AIL指令不保證存儲(chǔ)器同步并且從而執(zhí)行得更快。如本領(lǐng)域技術(shù)人員能夠意識(shí)到的那樣,可以獲得其他類型的分支和發(fā)起指令以指示發(fā)起硬件線程來發(fā)起輔助硬件線程。當(dāng)發(fā)起硬件線程120執(zhí)行分支和發(fā)起指令時(shí),發(fā)起硬件線程120檢查硬件狀態(tài)存儲(chǔ)125以確定另一硬件線程是否可用。例如,處理器100可以包括硬件線程庫,并且硬件狀態(tài)存儲(chǔ)125包括指示哪個(gè)硬件線程可用的信息(參見圖3B和對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。當(dāng)輔助硬件線程可用時(shí),發(fā)起硬件線程120調(diào)用輔助硬件線程150,并且將寄存器值從發(fā)起線程寄存器140復(fù)制到輔助線程寄存器170。在一個(gè)實(shí)施方式中,發(fā)起硬件線程120從發(fā)起線程寄存器140復(fù)制到輔助線程寄存器170的寄存器值取決于分支和發(fā)起指令的類型以及指令參數(shù)值(參見圖6-圖7以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。在一個(gè)實(shí)施方式中,發(fā)起硬件線程120和輔助硬件線程150各自具有用于執(zhí)行指令的專用執(zhí)行單
J Li ο發(fā)起硬件線程120通過對(duì)輔助線程狀態(tài)寄存器(ATSR) 130包括的輔助線程有效(ATV)位進(jìn)行設(shè)置,向軟件程序110通知輔助硬件線程150可用(參見圖2、圖4以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。發(fā)起硬件線程120還向輔助硬件線程150指派輔助線程號(hào)(ATN)值,發(fā)起硬件線程120將該ATN值存儲(chǔ)在硬件狀態(tài)存儲(chǔ)125中,并且軟件程序110將該ATN值存儲(chǔ)在軟件狀態(tài)存儲(chǔ)115中,以跟蹤輔助硬件線程150的狀態(tài)。一旦輔助硬件線程150發(fā)起,軟件程序110就對(duì)輔助硬件線程150執(zhí)行指令145。輔助硬件線程150繼續(xù)執(zhí)行指令145直到例如輔助硬件線程150發(fā)生如下情況為止:1)完成代碼執(zhí)行;2)執(zhí)行停止輔助線程(SAT)指令;3)發(fā)起硬件線程120執(zhí)行SAT指令并且終止輔助硬件線程150 ;或者4)處理器100終止輔助硬件線程150 (參見圖5、圖8以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。當(dāng)輔助硬件線程150停止執(zhí)行時(shí),輔助硬件線程150在發(fā)起硬件線程120的輔助線程狀態(tài)寄存器130中存儲(chǔ)信息,諸如終止指示符和地址信息(參見圖2、圖8以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。在一個(gè)實(shí)施方式中,軟件程序110請(qǐng)求多個(gè)輔助硬件線程執(zhí)行不同代碼段。在這一實(shí)施方式中,最后一個(gè)停止執(zhí)行的輔助硬件線程在輔助線程狀態(tài)寄存器130中寫入終止指示符和地址信息(參見圖5、圖14以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。在另一實(shí)施方式中,輔助硬件線程150可以調(diào)用后續(xù)的輔助硬件線程。在這一實(shí)施方式中,輔助硬件線程150變?yōu)楹罄m(xù)的輔助硬件線程的“發(fā)起硬件線程”,并且使用輔助線程狀態(tài)寄存器160來存儲(chǔ)關(guān)于后續(xù)輔助硬件線程的信息(參見圖15以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。在這一實(shí)施方式中,當(dāng)發(fā)起線程執(zhí)行指令以終止輔助硬件線程150時(shí),輔助硬件線程150自動(dòng)地終止后續(xù)的輔助硬件線程。在又一實(shí)施方式中,軟件程序110可能希望檢查輔助硬件線程150的特定狀態(tài),以便確定輔助硬件線程150是否仍然正在執(zhí)行。在這一實(shí)施方式中,軟件程序110對(duì)發(fā)起線程120執(zhí)行“輔助線程檢查”指令,諸如分支條件if輔助線程執(zhí)行(BCE)指令或條件寄存器設(shè)置if輔助線程執(zhí)行(CRSE)指令。在這一實(shí)施方式中,軟件程序110從軟件狀態(tài)存儲(chǔ)115獲取對(duì)應(yīng)于輔助硬件線程150的輔助線程號(hào)(ATN)并且將該ATN存儲(chǔ)在通用寄存器中。接著,軟件程序110在由發(fā)起硬件線程120所執(zhí)行的BCE指令中包括通用寄存器號(hào)。發(fā)起硬件線程120從通用寄存器獲取ATN并且訪問硬件狀態(tài)存儲(chǔ)125以檢查輔助硬件線程150的狀態(tài)。接著,發(fā)起硬件線程120根據(jù)輔助硬件線程150的狀態(tài)進(jìn)行分支(或者設(shè)置條件位)(參見圖10-圖13以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。圖2是示出輔助線程狀態(tài)寄存器(ATSR)的示例性示圖。諸如發(fā)起硬件線程120之類的發(fā)起硬件線程使用ATSR 130來跟蹤整體輔助硬件線程狀態(tài)。ATSR 130包括用于存儲(chǔ)此類跟蹤信息的字段210-260。輔助線程號(hào)(ATN)字段210包括對(duì)應(yīng)于最近發(fā)起的輔助硬件線程的編號(hào)。例如,如果發(fā)起硬件線程120按順序發(fā)起輔助硬件線程1、2和3,則ATN字段包括編號(hào)“3”。照這樣,ATSR 130是平臺(tái)可縮放的,這是因?yàn)锳TSR 130不對(duì)特定發(fā)起硬件線程可以發(fā)起的輔助硬件線程的數(shù)量施加限制(除ATN字段210的位數(shù)量限制以外)。輔助線程號(hào)有效(ATV)位220包括指示ATN字段210的有效性的位。軟件程序檢查該位以確定所請(qǐng)求的輔助硬件線程是否實(shí)際發(fā)起(參見圖4以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。ATSR 130包括輔助線程執(zhí)行指示符,在一個(gè)實(shí)施方式中,該輔助線程執(zhí)行指示符是輔助線程執(zhí)行(ATE)位230,其表明當(dāng)前是否有任何輔助硬件線程正在執(zhí)行。軟件程序可以利用單一讀取操作來檢查ATE位230并且標(biāo)識(shí)是否所有輔助硬件線程都完成了執(zhí)行(參見圖4、圖5以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。在一個(gè)實(shí)施方式中,欄240-260包括僅在ATE位230指示沒有輔助硬件線程正在執(zhí)行時(shí)才有效的信息。輔助線程狀態(tài)(ATS)字段240包括指示最后一個(gè)輔助硬件線程的終止的根據(jù)(例如輔助線程執(zhí)行了 SAT指令,發(fā)起線程執(zhí)行了 SAT指令,遇到錯(cuò)誤,處理器預(yù)先清空了資源等)的終止指示符。SAT參數(shù)(SATP)字段250包括當(dāng)最后一個(gè)正在執(zhí)行的輔助硬件線程執(zhí)行SAT指令時(shí)該輔助硬件線程傳遞給發(fā)起硬件線程的參數(shù)。例如,SAT參數(shù)可以指示輔助硬件線程是否成功地完成了它的任務(wù)(代碼執(zhí)行)。最后,下一指令(NI)字段260包括跟隨輔助硬件線程所執(zhí)行的最后一個(gè)指令的指令的地址。圖3A是示出由軟件程序利用來管理輔助硬件線程狀態(tài)的軟件狀態(tài)存儲(chǔ)區(qū)的示例性示圖。如可以看到的,軟件狀態(tài)存儲(chǔ)115包括用于當(dāng)前正在執(zhí)行的輔助硬件線程的輔助線程號(hào)(ATN)值(欄300)和對(duì)應(yīng)的起始地址(欄310)的列表。在一個(gè)實(shí)施方式中,起始地址是BAIL/BAIH指令針對(duì)輔助硬件線程指定的用以開始執(zhí)行代碼的地址(參見圖6、圖7以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。在又一實(shí)施方式中,軟件狀態(tài)存儲(chǔ)115可以不包括起始地址,而是存儲(chǔ)用于對(duì)應(yīng)的任務(wù)的符號(hào)式名稱,并且在這一實(shí)施方式中,軟件狀態(tài)存儲(chǔ)115具有將符號(hào)式名稱與代碼段相關(guān)聯(lián)的不同的表。軟件狀態(tài)存儲(chǔ)115可以存儲(chǔ)在易失性存儲(chǔ)器或非易失性存儲(chǔ)器區(qū)(諸如計(jì)算機(jī)硬盤驅(qū)動(dòng)器)上。圖3B是示出由硬件線程利用來管理輔助硬件線程狀態(tài)的硬件狀態(tài)存儲(chǔ)區(qū)的示例性示圖。類似于以上討論的軟件狀態(tài)存儲(chǔ)115,硬件狀態(tài)存儲(chǔ)125包括ATN值(欄320)、針對(duì)輔助硬件線程的對(duì)應(yīng)硬件線程號(hào)(欄330)以及每個(gè)輔助硬件線程的狀態(tài)(欄340)的列表。在一個(gè)實(shí)施方式中,欄330中的對(duì)應(yīng)線程號(hào)可以與欄320中的輔助線程號(hào)相同。正如本領(lǐng)域技術(shù)人員能夠意識(shí)到的那樣,硬件狀態(tài)存儲(chǔ)125可以是存儲(chǔ)信息的矢量,從而使得該矢量中的每個(gè)條目指示特定硬件線程的狀態(tài)。圖4是示出在發(fā)起硬件線程調(diào)用輔助硬件線程時(shí)所采取的步驟的示例性流程圖。軟件程序處理開始于400處,隨后軟件程序在步驟405處執(zhí)行分支和發(fā)起輕型(BAIL)或分支和發(fā)起重型(BAIH)指令。在一個(gè)實(shí)施方式中,BAIL與BAIH指令之間的差異在于發(fā)起硬件線程所執(zhí)行的存儲(chǔ)器同步的量(參見圖9以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。執(zhí)行軟件程序的發(fā)起硬件線程處理開始于450處,隨后發(fā)起硬件線程訪問硬件狀態(tài)存儲(chǔ)125,并且檢查是否有不同的硬件線程(輔助硬件線程)可用。硬件狀態(tài)存儲(chǔ)125包括關(guān)于處理器的硬件線程可用性的信息(參見圖3B以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))O發(fā)起硬件線程確定另一硬件線程是否可用于用作輔助硬件線程(判定460)。如果輔助硬件線程不可用,則判定460分支到“否”分支462,隨后發(fā)起硬件線程在輔助線程狀態(tài)寄存器(ATSR)ATV位220中將輔助線程號(hào)有效位設(shè)置為“O” (步驟465)。接著,由于輔助硬件線程不可用,因此發(fā)起硬件線程在步驟440處執(zhí)行目標(biāo)為輔助硬件線程的任務(wù),并且處理在445處結(jié)束。另一方面,如果輔助硬件線程可用,則判定460分支到“是”分支465,隨后發(fā)起硬件線程在步驟470處將輔助線程值(ATV)位設(shè)置為“I”。接下來,發(fā)起硬件線程生成輔助線程號(hào)(ATN)(例如對(duì)計(jì)數(shù)器或隨機(jī)數(shù)生成器增值),并且在硬件狀態(tài)存儲(chǔ)125中存儲(chǔ)輔助線程號(hào),以及對(duì)被指派為輔助硬件線程的線程的指示(例如另一號(hào)碼或與ATN相同的號(hào)碼)。發(fā)起硬件線程還在ATSR輔助線程號(hào)字段210中存儲(chǔ)ATN值(步驟475)。在步驟480處,發(fā)起硬件線程標(biāo)識(shí)要從它的寄存器復(fù)制到輔助硬件線程寄存器的特定寄存器值。發(fā)起硬件線程基于BAIL/BAIH指令的參數(shù)來選擇寄存器值。在步驟485處,發(fā)起硬件線程將標(biāo)識(shí)的寄存器值從發(fā)起線程寄存器140復(fù)制到輔助線程寄存器170。返回參考軟件程序,軟件程序在步驟410處檢查ATSR ATV位220,以確定所請(qǐng)求的輔助硬件線程是否發(fā)起(判定415)。如果輔助硬件線程沒有發(fā)起(例如ATV位=O),則軟件程序執(zhí)行具有如以上討論的目標(biāo)為輔助硬件線程的發(fā)起線程的任務(wù)(步驟440),并且處理在445處結(jié)束。另一方面,如果所請(qǐng)求的輔助硬件線程發(fā)起了,則判定415分支到“是”分支418 ;隨后,在一個(gè)實(shí)施方式中,軟件程序可以從ATSR ATN字段210獲取輔助線程號(hào),并且將所獲取的ATN值存儲(chǔ)在軟件狀態(tài)存儲(chǔ)115中。在另一實(shí)施方式中,軟件程序可以不跟蹤發(fā)起輔助硬件線程(諸如當(dāng)輔助硬件線程的任務(wù)是僅僅將數(shù)據(jù)預(yù)取到高速緩存中時(shí)),以便改進(jìn)發(fā)起硬件線程的整體性能。軟件狀態(tài)存儲(chǔ)115包括用于跟蹤軟件程序所調(diào)用的輔助硬件線程的信息(參見圖3A以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。接著,軟件程序使用所發(fā)起的輔助硬件線程來執(zhí)行指令(預(yù)定的處理塊490,參見圖5以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。當(dāng)輔助硬件線程終止(由于完成代碼執(zhí)行或者被迫終止)時(shí),輔助硬件線程將ATSR輔助線程執(zhí)行(ATE)位230清除(clear)。在一個(gè)實(shí)施方式中,軟件程序在等待輔助硬件線程完成的同時(shí)執(zhí)行其他任務(wù)(步驟425)。在另一實(shí)施方式中,軟件程序可以請(qǐng)求多個(gè)輔助硬件線程執(zhí)行該軟件程序的各種區(qū)段。在這一實(shí)施方式中,最后一個(gè)完成的輔助硬件線程對(duì)ATSR ATE位230清除(參見圖5以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。在一個(gè)實(shí)施方式中,當(dāng)輔助硬件線程完成時(shí),軟件程序可以在步驟430處檢查輔助硬件線程的結(jié)果,諸如將這些結(jié)果用于后續(xù)計(jì)算。軟件程序和發(fā)起硬件線程分別在435和495處結(jié)束。在一個(gè)實(shí)施方式中,在發(fā)起硬件線程上執(zhí)行的軟件程序可以前進(jìn)以執(zhí)行其他任務(wù),諸如發(fā)起附加輔助硬件線程。圖5是示出在輔助硬件線程執(zhí)行指令時(shí)所采取的步驟的示例性流程圖。輔助硬件線程處理開始于500處,隨后輔助硬件線程訪問存儲(chǔ)在輔助線程寄存器170中的寄存器值,并且在步驟505處執(zhí)行軟件程序110的指令。在指令執(zhí)行期間,輔助硬件線程確定是否響應(yīng)于完成指令執(zhí)行或者接收到終止執(zhí)行的指示而終止執(zhí)行(判定510)。在一個(gè)實(shí)施方式中,輔助硬件線程可以完成指令執(zhí)行或者執(zhí)行停止輔助線程(SAT)指令,其指示輔助硬件線程終止指令執(zhí)行(參見圖8以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。在另一實(shí)施方式中,發(fā)起硬件線程可以執(zhí)行SAT指令,并且接著終止輔助硬件線程。在又一實(shí)施方式中,控制發(fā)起硬件線程和輔助硬件線程的處理器可以終止輔助硬件線程以便輔助硬件線程執(zhí)行其他更高優(yōu)先級(jí)的程序,或者以便回收輔助硬件線程的資源。如果輔助硬件線程應(yīng)當(dāng)繼續(xù)執(zhí)行指令,則判定510分支到“否”分支517,其循環(huán)返回以繼續(xù)執(zhí)行指令。這一循環(huán)繼續(xù),直到輔助硬件線程終止為止,此時(shí)判定510分支到“是”分支514。在步驟520處,輔助硬件線程將在硬件狀態(tài)存儲(chǔ)125中的它的狀態(tài)從“正在執(zhí)行”改變?yōu)椤敖K止”。接下來,輔助硬件線程檢查其他輔助硬件線程的狀態(tài)(步驟525)以便確定其他輔助硬件線程是否仍然正在執(zhí)行(判定530)。如果其他輔助硬件線程仍然正在執(zhí)行,則判定530分支到“是”分支532,隨后輔助硬件線程在步驟560處釋放它的資源,并且輔助硬件線程處理在570處結(jié)束。在一個(gè)實(shí)施方式中,在輔助硬件線程終止之后,處理器(例如處理器100)可以更新發(fā)起硬件線程的ATSR位。另一方面,如果沒有其他輔助硬件線程正在執(zhí)行,則判定530分支到“否”分支534,隨后輔助硬件線程在步驟540處在ATSR輔助線程狀態(tài)(ATS)字段240中存儲(chǔ)終止指示符(例如輔助線程執(zhí)行了 SAT指令,發(fā)起線程執(zhí)行了 SAT指令,遇到錯(cuò)誤,處理器預(yù)先清空了資源等)。輔助硬件線程在步驟545處在ATSR SATP字段250中存儲(chǔ)SAT參數(shù)。例如,如果ATS字段指示由于輔助硬件線程執(zhí)行了 SAT指令因此該輔助硬件線程終止,則SATP字段250可以包括指示輔助硬件線程是否成功地完成了它的任務(wù)的參數(shù)。在步驟550處,輔助硬件線程在ATSR NI字段260中存儲(chǔ)對(duì)應(yīng)于緊接著輔助線程所執(zhí)行的最后一個(gè)指令的下一指令的地址。最后,輔助硬件線程在步驟555處對(duì)ATSR ATE字段230中的輔助線程執(zhí)行指示符清除,從而向軟件程序110指示每個(gè)輔助硬件線程都已經(jīng)停止執(zhí)行(參見圖4以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。輔助硬件線程在560處釋放它的資源并且在570處結(jié)束。在一個(gè)實(shí)施方式中,在步驟555之前,處理器可以確保由輔助硬件線程執(zhí)行的所有存儲(chǔ)對(duì)發(fā)起硬件線程來說是可見的。在這一實(shí)施方式中,通過確保輔助硬件線程的所有存儲(chǔ)對(duì)發(fā)起硬件線程來說是可見的,發(fā)起硬件線程可以讀取存儲(chǔ)在存儲(chǔ)器中的輔助硬件線程的結(jié)果(參見圖4以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。圖6是示出分支和發(fā)起輕型(BAIL)指令的示例性示圖。BAIL指令600使得軟件程序100能夠在不需要管理程序介入、并且不會(huì)不利地影響管理程序操作或其他正在執(zhí)行的程序情況下,從多線程處理器高效地請(qǐng)求輔助硬件線程。BAIL指令600包括op代碼字段(位0-5)以及擴(kuò)展的op代碼字段(位21-30),當(dāng)硬件線程執(zhí)行時(shí),這些代碼字段指示硬件線程檢查輔助硬件線程是否可用。如果可用,則發(fā)起硬件線程將特定寄存器值(諸如基址寄存器組(通用寄存器、特許控制寄存器等))連同基于復(fù)制位“6”的其他寄存器值(浮點(diǎn)、矢量單元等),從發(fā)起硬件線程的寄存器復(fù)制到輔助硬件線程的寄存器(參見圖9以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。一旦復(fù)制了,輔助硬件線程就開始執(zhí)行對(duì)應(yīng)于位于BAIL指令600的位7-20中的目標(biāo)地址的代碼。正如本領(lǐng)域技術(shù)人員能夠意識(shí)到的那樣,BAIL指令600可以包括更多或更少的位和/或不同于圖6中所示的而被劃分。圖7是示出分支和發(fā)起重型(BAIH)指令的示例性示圖。BAIH指令700類似于圖6中示出的BAIL指令。然而,與BAIL指令相比,BAIH指令還可以執(zhí)行存儲(chǔ)器同步步驟。BAIH指令包括op代碼字段(位0-5)以及擴(kuò)展的op代碼字段(位21-30),當(dāng)硬件線程執(zhí)行時(shí),這些字段指示硬件線程檢查輔助硬件線程是否可用。如果可用,則發(fā)起硬件線程復(fù)制特定寄存器值(諸如基址寄存器組(通用寄存器、特許控制寄存器等))以及基于復(fù)制位“6”的其他寄存器(浮點(diǎn)、矢量單元等)(參見圖9以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。一旦發(fā)起硬件線程將寄存器值復(fù)制到輔助硬件線程寄存器,輔助硬件線程就開始執(zhí)行對(duì)應(yīng)于位于BAIH指令600的位7-20中的目標(biāo)地址的代碼。正如本領(lǐng)域技術(shù)人員能夠意識(shí)到的那樣,BAIH指令可以包括更多或更少的位和/或以不同于圖7所示方式而被劃分。圖8是示出停止輔助線程(SAT)指令的示例性示圖。隨著輔助硬件線程執(zhí)行,輔助硬件線程(或發(fā)起硬件線程)可以執(zhí)行SAT指令,該SAT指令指示輔助硬件線程停止執(zhí)行。當(dāng)發(fā)起線程執(zhí)行SAT指令800時(shí),該發(fā)起線程指示輔助硬件線程停止執(zhí)行(終止)。當(dāng)輔助硬件線程執(zhí)行SAT指令800時(shí),該輔助線程停止其自身的執(zhí)行。SAT指令800包括op代碼字段(位0-5)以及擴(kuò)展的op代碼字段(位21-30),當(dāng)發(fā)起硬件線程執(zhí)行時(shí),這些字段通知發(fā)起硬件線程指示一個(gè)或多個(gè)輔助硬件線程停止執(zhí)行。SAT指令800還包括終止位20,當(dāng)由發(fā)起硬件線程執(zhí)行時(shí),終止位20指示發(fā)起硬件線程終止所有激活的輔助硬件線程或者終止特定的輔助硬件線程。當(dāng)位20表示終止特定輔助硬件線程時(shí),位6-10包括源寄存器(RS)位置(例如通用寄存器位置),該源寄存器位置包括對(duì)應(yīng)于要終止的輔助硬件線程的輔助線程號(hào)(ATN)。在另一實(shí)施方式中,當(dāng)輔助硬件線程執(zhí)行SAT指令800時(shí),該輔助硬件線程可以使用位20來向它的發(fā)起硬件線程傳遞回SAT參數(shù)。例如,輔助硬件線程可以在其完成代碼執(zhí)行時(shí)在位20中存儲(chǔ)“1”,并且可以在其未能完成代碼執(zhí)行時(shí)在位20中存儲(chǔ)“O”。在這一實(shí)施方式中,輔助硬件線程在其執(zhí)行SAT指令800時(shí)忽略位6-10。在又一實(shí)施方式中,SAT指令800可以不具有RS字段(位6_10)。在這一實(shí)施方式中,發(fā)起硬件線程終止其發(fā)起的所有激活的輔助硬件線程,而不考慮位20的值如何(例如忽略位20)。圖9是示出在BAIL和BAIH指令期間發(fā)起硬件線程從發(fā)起線程寄存器復(fù)制到輔助線程寄存器的寄存器值的示例性示圖。圖9示出了:在這些指令期間,發(fā)起硬件線程復(fù)制基址寄存器值(例如通用寄存器、條件寄存器以及對(duì)大多數(shù)計(jì)算任務(wù)來說必要的其他寄存器)。在一個(gè)實(shí)施方式中,發(fā)起硬件線程將地址轉(zhuǎn)換寄存器值從發(fā)起硬件線程寄存器140復(fù)制到輔助硬件線程寄存器170 (例如用于將有效或虛擬地址變換為實(shí)際地址的寄存器值)。在另一實(shí)施方式中,發(fā)起硬件線程和輔助硬件線程可以共享相同的地址轉(zhuǎn)換寄存器,或者可以預(yù)設(shè)輔助硬件線程的轉(zhuǎn)換寄存器。在這一實(shí)施方式中,軟件程序可以將發(fā)起硬件線程配置為使得該發(fā)起硬件線程不復(fù)制地址轉(zhuǎn)換寄存器值?;贐AIL/BAIH指令的復(fù)制位,發(fā)起硬件線程還可以將一組依賴于實(shí)現(xiàn)的寄存器值、從發(fā)起硬件線程寄存器140復(fù)制到輔助硬件線程寄存器170 (參見圖6以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。在一個(gè)實(shí)施方式中,該組依賴于實(shí)現(xiàn)的寄存器包括矢量寄存器、浮點(diǎn)寄存器以及與輔助硬件線程偶爾要求的專門的計(jì)算任務(wù)相關(guān)聯(lián)的其他寄存器組。在一個(gè)實(shí)施方式中,為了從先前的計(jì)算移除任何殘留值,發(fā)起硬件線程可以對(duì)輔助硬件線程寄存器170中的不包括從發(fā)起硬件線程寄存器140復(fù)制的寄存器值的寄存器清除。雖然BAIL和BAIH指令可以執(zhí)行一組相同的寄存器復(fù)制,但在一個(gè)實(shí)施方式中,其指令在發(fā)起硬件線程的存儲(chǔ)器同步方面不同。例如,在處理器不按順序執(zhí)行存儲(chǔ)器“存儲(chǔ)”的情況下,并不保證由一個(gè)指令執(zhí)行的存儲(chǔ)器存儲(chǔ)在接下來的指令執(zhí)行之前完成。因此,在這一示例中,如果緊接著存儲(chǔ)操作的指令發(fā)起輔助硬件線程,則不存在在輔助線程發(fā)起之前完成存儲(chǔ)操作的保證。如果存儲(chǔ)操作未完成,則存儲(chǔ)操作值在不確定的時(shí)間內(nèi)對(duì)輔助線程來說可能不可見。照這樣,當(dāng)輔助硬件線程要求訪問所存儲(chǔ)的信息以便執(zhí)行其任務(wù)時(shí)就會(huì)出現(xiàn)問題。BAIH指令減輕了這一問題,這是因?yàn)锽AIH指令確保了由發(fā)起線程執(zhí)行的存儲(chǔ)在輔助硬件線程發(fā)起之前已經(jīng)完成到足以提供輔助硬件線程可見性,從而允許輔助硬件線程讀取存儲(chǔ)器位置并且相應(yīng)地執(zhí)行任務(wù)。當(dāng)軟件程序不要求存儲(chǔ)器同步時(shí),由于BAIL指令的執(zhí)行速度(這是因?yàn)槠洳槐WC存儲(chǔ)器同步),該軟件程序可以利用BAIL指令。在一個(gè)實(shí)施方式中,BAIL和BAIH指令具有很多變型。例如,對(duì)于并未亂序執(zhí)行存儲(chǔ)操作的處理器,處理器可以不利用BAIH指令,但某些實(shí)施方式可能利用一種形式的BAIL指令,該BAIL指令相對(duì)于BAIH指令復(fù)制更大的一組寄存器。在另一示例中,不保證按順序的存儲(chǔ)的實(shí)現(xiàn)可以將BAIH指令配置為使得發(fā)起硬件線程根據(jù)特定應(yīng)用的需要而復(fù)制比BAIL指令更多的寄存器。圖10是示出在執(zhí)行分支條件if輔助線程執(zhí)行(BCE)指令時(shí)所采取的步驟的示例性流程圖。當(dāng)軟件程序要求特定輔助硬件線程的狀態(tài)時(shí)可能出現(xiàn)狀況。在這些狀況中,軟件程序可以對(duì)發(fā)起硬件線程執(zhí)行條件轉(zhuǎn)移指令,其基于特定輔助硬件線程是否仍然正在執(zhí)行而進(jìn)行分支。BCE軟件程序執(zhí)行開始于1000處,隨后軟件程序從軟件狀態(tài)存儲(chǔ)115獲取對(duì)應(yīng)于特定輔助線程的輔助線程號(hào)(ATN)值(步驟1005)。在步驟1010處,軟件程序在特定通用寄存器(例如寄存器“4”)中存儲(chǔ)ATN值,并且在另一通用寄存器(例如寄存器“5”)中存儲(chǔ)目標(biāo)地址,其標(biāo)識(shí)了當(dāng)輔助硬件線程仍然正在執(zhí)行時(shí)發(fā)起硬件線程要執(zhí)行的代碼中的位置(下面將討論)。接下來,軟件程序?qū)Πl(fā)起硬件線程執(zhí)行分支條件if輔助線程執(zhí)行(BCE)指令,該指令包括ATN值和目標(biāo)地址的通用寄存器位置(步驟1015)。發(fā)起硬件線程執(zhí)行開始于1040處,隨后發(fā)起硬件線程從BCE指令提取通用寄存器號(hào),并且從通用寄存器獲取ATN以及目標(biāo)地址(步驟1050)。接下來在步驟1060處,發(fā)起硬件線程檢查硬件狀態(tài)存儲(chǔ)125中的對(duì)應(yīng)的輔助硬件線程的狀態(tài)。發(fā)起硬件線程基于步驟1060處的狀態(tài)來確定輔助硬件線程是否仍然正在執(zhí)行(判定1070)。如果輔助硬件線程仍然正在執(zhí)行,則判定1070分支到“是”分支1072,隨后發(fā)起硬件線程分支到在步驟1050中獲取的目標(biāo)地址(步驟1080)。另一方面,如果輔助硬件線程終止了,則判定1070分支到“否”分支1078,隨后發(fā)起硬件線程繼續(xù)在下一指令處執(zhí)行(步驟1090)。軟件程序基于發(fā)起硬件線程是否分支來確定特定輔助硬件線程是否仍然正在執(zhí)行(判定1020)。如果發(fā)起硬件線程出現(xiàn)分支,則判定1020分支到“是”分支1022,隨后軟件程序在步驟1024處根據(jù)輔助硬件線程仍然正在執(zhí)行來執(zhí)行任務(wù),諸如繼續(xù)對(duì)與給予輔助線程的任務(wù)無關(guān)的任務(wù)進(jìn)行工作。另一方面,如果發(fā)起硬件線程沒有出現(xiàn)分支,則判定1020分支到“否”分支1026,隨后軟件程序根據(jù)輔助硬件線程終止來執(zhí)行任務(wù)(步驟1028)。例如,軟件程序可以檢查共享存儲(chǔ)器位置以確定輔助硬件線程是否成功地完成了它的操作,并且相應(yīng)地執(zhí)行附加任務(wù)(例如開始另一輔助線程、執(zhí)行其他工作等)。軟件程序和發(fā)起硬件線程處理分別在1030和1095處結(jié)束。圖11是示出在執(zhí)行條件寄存器設(shè)置if輔助線程執(zhí)行(CRSE)指令時(shí)所采取的步驟的示例性流程圖。該CRSE指令類似于在圖10中討論的BCE指令,只不過發(fā)起線程基于特定輔助硬件線程的狀態(tài)設(shè)置條件位而不是分支到目標(biāo)地址。CRSE軟件程序執(zhí)行開始于1100處,隨后軟件程序從軟件狀態(tài)存儲(chǔ)115獲取對(duì)應(yīng)于特定輔助線程的輔助線程號(hào)(ATN)值(步驟1105)。在步驟1110處,軟件程序在特定的通用寄存器(GPR)中存儲(chǔ)ATN值以及條件寄存器位位置。條件寄存器位位置對(duì)應(yīng)于發(fā)起硬件寄存器基于輔助硬件線程的狀態(tài)而設(shè)置的條件寄存器位(下面將討論)。接下來,軟件程序在CRSE指令中包括GPR寄存器位置并且使用發(fā)起硬件線程來執(zhí)行CRSE指令(1115)。發(fā)起硬件線程執(zhí)行開始于1140處,隨后發(fā)起硬件線程從CRSE指令提取通用寄存器號(hào),并且從對(duì)應(yīng)于所提取的通用寄存器號(hào)的通用寄存器獲取ATN以及條件寄存器位位置(步驟1150)。接下來,發(fā)起硬件線程在步驟1160處檢查硬件狀態(tài)存儲(chǔ)125中的所獲取的ATN的對(duì)應(yīng)的輔助硬件線程的狀態(tài)。發(fā)起硬件線程基于步驟1160處的狀態(tài)來確定輔助硬件線程是否仍然正在執(zhí)行(判定1170)。如果輔助硬件線程仍然正在執(zhí)行,則判定1170分支到“是”分支1072,隨后發(fā)起硬件線程在步驟1180處設(shè)置條件寄存器位,該位對(duì)應(yīng)于以上討論的所獲取的條件寄存器位位置。另一方面,如果輔助硬件線程終止了,則判定1170分支到“否”分支1078,隨后發(fā)起硬件線程將條件寄存器位1185設(shè)置為“O” (步驟1090)。軟件程序通過檢查條件寄存器位1185來確定特定輔助硬件線程是否仍然正在執(zhí)行,并且在步驟1120處相應(yīng)地執(zhí)行任務(wù)。軟件程序和發(fā)起硬件線程處理分別在1130和1195處結(jié)束。圖12是示出分支條件if輔助線程執(zhí)行(BCE)指令的示例性示圖。BCE指令1200使得軟件程序能夠確定特定輔助硬件線程是否仍然正在執(zhí)行代碼,這是通過在發(fā)起硬件線程確定輔助硬件線程正在執(zhí)行時(shí)指示發(fā)起硬件線程分支到目標(biāo)地址來實(shí)現(xiàn)的。BCE指令1200包括op代碼字段(位0-5)以及擴(kuò)展的op代碼字段(位16-20),當(dāng)硬件線程執(zhí)行時(shí),這些字段指示“發(fā)起”硬件線程檢查輔助硬件線程是否正在執(zhí)行。BCE指令1200包括位11-15,這些位標(biāo)識(shí)了包括供輔助硬件線程檢查的輔助線程號(hào)(ATN)的通用寄存器。如果輔助硬件線程仍然正在執(zhí)行,則發(fā)起硬件線程分支到包括在由位6-10標(biāo)識(shí)的通用寄存器中的目標(biāo)地址(參見圖10以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。正如本領(lǐng)域技術(shù)人員能夠意識(shí)到的那樣,BCE指令1200可以包括更多或更少的位和/或以不同于圖12所示方式而被地劃分。圖13是示出條件寄存器設(shè)置if輔助線程執(zhí)行(CRSE)指令的示例性示圖。CRSE指令1300使得軟件程序能夠確定特定輔助硬件線程是否仍然正在執(zhí)行代碼,這是通過在發(fā)起硬件線程確定輔助硬件線程正在執(zhí)行時(shí)指示發(fā)起硬件線程設(shè)置條件寄存器位來實(shí)現(xiàn)的。CRSE指令1300包括op代碼字段(位0-5)以及擴(kuò)展的op代碼字段(位16-20),當(dāng)硬件線程執(zhí)行時(shí),這些字段指示“發(fā)起”硬件線程檢查輔助硬件線程是否正在執(zhí)行。BCE指令1200包括位11-15,這些位標(biāo)識(shí)了包括供輔助硬件線程檢查的輔助線程號(hào)(ATN)的通用寄存器。位6-10指定了如下通用寄存器,該通用寄存器包括當(dāng)輔助硬件線程正在執(zhí)行時(shí)發(fā)起硬件寄存器設(shè)置的條件寄存器位位置(參見圖11以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。正如本領(lǐng)域技術(shù)人員能夠意識(shí)到的那樣,處理器將條件寄存器位用于各種類型的分支指令,或者用于指示狀態(tài),諸如算術(shù)運(yùn)算溢出。正如本領(lǐng)域技術(shù)人員還能夠意識(shí)到的那樣,BCE指令1200可以包括更多或更少的位和/或以不同于圖13所示方式而被劃分。圖14是示出調(diào)用多個(gè)輔助硬件線程的發(fā)起硬件線程的示例性示圖。當(dāng)軟件程序1410開始時(shí),處理器100向軟件程序1410指派發(fā)起硬件線程1420。軟件程序1410包括在此描述的多個(gè)分支和發(fā)起指令(例如BAIL和/或BAIH指令),諸如用于執(zhí)行特定任務(wù)的不同的代碼段。接著,發(fā)起硬件線程1420檢查硬件線程可用性、發(fā)起輔助硬件線程1450-1470并且向每個(gè)輔助硬件線程指派特定的輔助線程號(hào)(ATN)。發(fā)起硬件線程1420在硬件狀態(tài)存儲(chǔ)1440中存儲(chǔ)ATN并且軟件程序1410在軟件狀態(tài)存儲(chǔ)1415中存儲(chǔ)ATN以用于跟蹤目的。發(fā)起硬件線程1420包括ATSR 1430,該ATSR 1430存儲(chǔ)關(guān)于最近發(fā)起的輔助硬件線程的信息(例如輔助硬件線程1470的ATN)。接著,輔助硬件線程1450-1470中最后一個(gè)停止執(zhí)行的輔助硬件線程在ATSR 1430中存儲(chǔ)信息(參見圖2、圖5以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。圖15是示出調(diào)用輔助硬件線程的發(fā)起硬件線程(該輔助硬件線程接著調(diào)用其他輔助硬件線程)的示例性示圖。當(dāng)軟件程序1510開始時(shí),處理器1500向軟件程序1510指派發(fā)起硬件線程1520。軟件程序1510包括在此描述的例如可以捆綁在軟件代碼內(nèi)的多個(gè)分支和發(fā)起指令。發(fā)起硬件線程1520執(zhí)行分支和發(fā)起指令之一,這引起發(fā)起硬件線程1520調(diào)用輔助硬件線程1550。發(fā)起硬件線程1520在硬件狀態(tài)存儲(chǔ)1540中存儲(chǔ)用于輔助硬件線程1550的對(duì)應(yīng)的ATN,并且軟件程序1510在軟件狀態(tài)存儲(chǔ)1515中存儲(chǔ)ATN,正如在此所討論的那樣。輔助硬件線程1550開始執(zhí)行,并且執(zhí)行兩個(gè)分支和發(fā)起指令。接著,輔助硬件線程1550發(fā)起輔助硬件線程1580-1590,并且相應(yīng)地在硬件狀態(tài)存儲(chǔ)1570中存儲(chǔ)對(duì)應(yīng)的ATN0軟件程序1510還在軟件狀態(tài)存儲(chǔ)1515中存儲(chǔ)ATN,正如在此所討論的那樣。此外,輔助硬件線程1550使用ATSR 1560來跟蹤輔助硬件線程1580-1590。照這樣,ATSR 1560包括關(guān)于最近發(fā)起的輔助硬件線程的信息(例如輔助硬件線程1590的ATN)。接著,輔助硬件線程1580-1590中最后一個(gè)停止執(zhí)行的輔助硬件線程在ATSR 1560中存儲(chǔ)信息(參見圖2、圖5以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。圖16是示出調(diào)用不同處理器上的輔助硬件線程的發(fā)起硬件線程的示例性示圖。圖16類似于圖15,只不過輔助硬件線程在與執(zhí)行發(fā)起硬件線程的發(fā)起處理器不同的處理器上執(zhí)行。當(dāng)軟件程序1610開始時(shí),處理器1600向軟件程序1610指派發(fā)起硬件線程1620。軟件程序1610包括在此描述的例如可以捆綁在軟件代碼內(nèi)的多個(gè)分支和發(fā)起指令。發(fā)起硬件線程1620執(zhí)行分支和發(fā)起指令之一,這引起發(fā)起硬件線程調(diào)用處理器1650上的輔助硬件線程1650,并且在硬件狀態(tài)存儲(chǔ)1640中存儲(chǔ)對(duì)應(yīng)的ATN。軟件程序1610還在軟件狀態(tài)存儲(chǔ)1615中存儲(chǔ)ATN。輔助硬件線程1660開始執(zhí)行,并且執(zhí)行兩個(gè)分支和發(fā)起指令。接著,輔助硬件線程1660發(fā)起輔助硬件線程1690-1695,并且相應(yīng)地在硬件狀態(tài)存儲(chǔ)1680中存儲(chǔ)對(duì)應(yīng)的ATN0軟件程序1610還在軟件狀態(tài)存儲(chǔ)1615中存儲(chǔ)ATN,正如在此所討論的那樣。輔助硬件線程1660使用ATSR 1670來跟蹤輔助硬件線程1690-1695。照這樣,ATSR1670包括關(guān)于最近發(fā)起的輔助硬件線程的信息(例如輔助硬件線程1695的ATN)。接著,輔助硬件線程1690-1695中最后一個(gè)停止執(zhí)行的輔助硬件線程在ATSR 1670中存儲(chǔ)信息(參見圖2、圖5以及對(duì)應(yīng)的文本以便了解進(jìn)一步的細(xì)節(jié))。圖17圖示了信息處理系統(tǒng)1700,其是能夠執(zhí)行在此描述的計(jì)算操作的計(jì)算機(jī)系統(tǒng)的簡(jiǎn)化示例。信息處理系統(tǒng)1700包括耦合到處理器接口總線1712的一個(gè)或多個(gè)處理器1710。處理器接口總線1712將處理器1710連接到存儲(chǔ)器控制器,該存儲(chǔ)器控制器連接到系統(tǒng)存儲(chǔ)器1720,并且為處理器1710提供訪問系統(tǒng)存儲(chǔ)器的手段。圖形控制器1725也連接到存儲(chǔ)器控制器。在一個(gè)實(shí)施方式中,快速PCI總線1718將存儲(chǔ)器控制器連接到圖形控制器1725。圖形控制器1725連接到顯示設(shè)備1730,諸如計(jì)算機(jī)監(jiān)視器。存儲(chǔ)器控制器1715和I/O控制器1735使用總線1719彼此連接。在一個(gè)實(shí)施方式中,該總線是沿存儲(chǔ)器控制器1715與I/O控制器1735之間的每個(gè)方向、以高速傳遞數(shù)據(jù)的直接媒體接口(DMI)總線。又被稱為I/O控制器集線器(ICH) I/O控制器1735是如下芯片,該芯片一般地實(shí)現(xiàn)以比由存儲(chǔ)器控制器提供的能力更慢的速度操作的能力。I/O控制器1735通常提供用于連接各種組件的各種總線。這些總線包括例如PCI和快速PCI總線、ISA總線、系統(tǒng)管理總線(SMBus或SMB)和/或低管腳計(jì)數(shù)(LPC)總線。LPC總線通常連接窄帶設(shè)備,諸如引導(dǎo)ROM 1796和“既有(legacy) ” I/O設(shè)備(使用“超級(jí)I/O”芯片)?!凹扔小?/0設(shè)備(1798)可以包括例如串行和并行端口、鍵盤、鼠標(biāo)和/或軟盤控制器。LPC總線還將I/o控制器1735連接到可信平臺(tái)模塊(TPM) 1795。通常包括在I/O控制器1735中的其他組件包括直接存儲(chǔ)器訪問(DMA)控制器、可編程中斷控制器(PIC)以及存儲(chǔ)設(shè)備控制器,該存儲(chǔ)設(shè)備控制器使用總線1784將I/O控制器1735連接到非易失性存儲(chǔ)器設(shè)備1785(諸如硬盤驅(qū)動(dòng)器)。Express卡(ExpressCard) 1755是將可熱插拔的設(shè)備連接到信息處理系統(tǒng)的插槽。Express卡1755支持快速PCI和USB連接兩者,因?yàn)槠涫褂猛ㄓ么锌偩€(USB)和快速PCI總線兩者而連接到I/O控制器1735。I/O控制器1735包括USB控制器1740,該USB控制器1740向連接到USB的設(shè)備提供USB連接。這些設(shè)備包括網(wǎng)絡(luò)攝像頭(攝像頭)1750、紅外(IR)接收器1748、鍵盤和跟蹤板1744以及提供無線個(gè)人區(qū)域網(wǎng)絡(luò)(PAN)的藍(lán)牙設(shè)備1746。USB控制器1740還提供到其他各種各樣的USB連接的設(shè)備1742的連接,這些設(shè)備諸如鼠標(biāo)、可移動(dòng)非易失性存儲(chǔ)設(shè)備1745、調(diào)制解調(diào)器、網(wǎng)卡、ISDN連接器、傳真、打印機(jī)、USB集線器以及很多其他類型的USB連接的設(shè)備。盡管可移動(dòng)非易失性存儲(chǔ)設(shè)備1745被示出為USB連接的設(shè)備,但可移動(dòng)非易失性存儲(chǔ)設(shè)備1745可以使用不同的接口(諸如Firewire接口等)來連接。無線局域網(wǎng)(LAN)設(shè)備1775經(jīng)由PCI或快速PCI總線1772連接到I/O控制器1735。LAN設(shè)備1775通常實(shí)現(xiàn)全部使用相同的協(xié)議在信息處理系統(tǒng)1700與另一計(jì)算機(jī)系統(tǒng)或設(shè)備之間無線地進(jìn)行通信的空中調(diào)制技術(shù)的IEEE 802.11標(biāo)準(zhǔn)之一。光存儲(chǔ)設(shè)備1790使用串行ATA(SATA)總線1788連接到I/O控制器1735。串行ATA適配器和設(shè)備在高速串行鏈路之上進(jìn)行通信。串行ATA總線還將I/O控制器1735連接到其他形式的存儲(chǔ)設(shè)備,諸如硬盤驅(qū)動(dòng)器。音頻電路1760,諸如聲卡,經(jīng)由總線1758連接到I/O控制器1735。音頻電路1760還提供如下功能,諸如音頻線路輸入和光數(shù)字音頻輸入端口 1762、光數(shù)字輸出和頭戴式耳機(jī)插孔1764、內(nèi)部揚(yáng)聲器1766以及內(nèi)部麥克風(fēng)1768。以太網(wǎng)控制器1770使用諸如PCI或快速PCI總線之類的總線連接到I/O控制器1735。以太網(wǎng)控制器1770將信息處理系統(tǒng)1700連接到計(jì)算機(jī)網(wǎng)絡(luò),諸如局域網(wǎng)(LAN)、因特網(wǎng)以及其他公共的和專用的計(jì)算機(jī)網(wǎng)絡(luò)。盡管圖17示出了一個(gè)信息處理系統(tǒng),但信息處理系統(tǒng)可以采取很多形式。例如,信息處理系統(tǒng)可以采取臺(tái)式機(jī)、服務(wù)器、便攜機(jī)、膝上型計(jì)算機(jī)、筆記本或者其他形式因素的計(jì)算機(jī)或數(shù)據(jù)處理系統(tǒng)的形式。此外,信息處理系統(tǒng)可以采取其他形狀因數(shù),諸如個(gè)人數(shù)字助理(PDA)、游戲設(shè)備、ATM機(jī)、攜帶式電話設(shè)備、通信設(shè)備或者包括處理器和存儲(chǔ)器的其他設(shè)備的形式。附圖中的流程圖和框示了根據(jù)本公開的各種實(shí)施方式的系統(tǒng)、方法以及計(jì)算機(jī)程序產(chǎn)品的可能的實(shí)現(xiàn)的架構(gòu)、功能和操作。考慮到這一點(diǎn),流程圖或框圖中的每個(gè)塊可以代表模塊、區(qū)段或者部分代碼,其包括用于實(shí)現(xiàn)所指定的邏輯功能的一個(gè)或多個(gè)可執(zhí)行指令。還應(yīng)當(dāng)注意,在某些備選實(shí)現(xiàn)中,塊中所示的功能可能不以附圖中所示的順序發(fā)生。例如,依賴于所涉及的功能,連續(xù)示出的兩個(gè)塊實(shí)際上可以基本上并發(fā)地執(zhí)行,或者塊有時(shí)可以按照相反的順序執(zhí)行。還應(yīng)當(dāng)注意,框圖和/或流程示的每個(gè)塊以及框圖和/或流程示的塊的組合可以通過執(zhí)行所指定的功能或動(dòng)作的基于專用硬件的系統(tǒng)或者專用硬件和計(jì)算機(jī)指令的組合來實(shí)現(xiàn)。盡管已經(jīng)示出和描述了本公開的特定實(shí)施方式,但對(duì)本領(lǐng)域技術(shù)人員來說將顯然的是,基于此處的教示,在不脫離本公開及其更廣泛的方面的情況下,可以進(jìn)行改變和修改。因此,所附權(quán)利要求書旨在在它們的范圍內(nèi)涵蓋在本公開的真實(shí)精神和范圍內(nèi)的所有此類改變和修改。另外,應(yīng)當(dāng)理解,本公開僅僅由所附權(quán)利要求書限定。本領(lǐng)域技術(shù)人員將理解,如果預(yù)期特定數(shù)量的所引入的權(quán)利要求元素,則此類預(yù)期將明確地記載在權(quán)利要求書中,而在沒有此類記載的情況下,并不存在此類限制。對(duì)于非限制性示例,為了有助于理解,所附權(quán)利要求書包含對(duì)引導(dǎo)性短語“至少一個(gè)”和“一個(gè)或多個(gè)”的使用以引入權(quán)利要求元素。然而,對(duì)此類短語的使用不應(yīng)當(dāng)解釋為暗示由“一種”或“一個(gè)”引入權(quán)利要求元素將包含此類所引入的權(quán)利要求元素的任何特定權(quán)利要求限制為僅包含一個(gè)此類元素的公開,即使當(dāng)同一權(quán)利要求包括引導(dǎo)性短語“一個(gè)或多個(gè)”或“至少一個(gè)”以及諸如“一種”或“一個(gè)”之類時(shí)也是如此;這也適用于定冠詞在權(quán)利要求書中的使用。
權(quán)利要求
1.一種機(jī)器實(shí)現(xiàn)的方法,包括: 在處理器中包括的第一硬件線程處,標(biāo)識(shí)請(qǐng)求以發(fā)起第二硬件線程; 標(biāo)識(shí)在由所述第一硬件線程訪問的一個(gè)或者多個(gè)第一寄存器中包括的一個(gè)或者多個(gè)寄存器值; 向可由所述第二硬件線程訪問的一個(gè)或者多個(gè)第二寄存器復(fù)制所述一個(gè)或者多個(gè)寄存器值;以及 執(zhí)行所述第二硬件線程上的軟件代碼,其中所述執(zhí)行包括所述第二硬件線程訪問位于所述一個(gè)或者多個(gè)第二寄存器中的所復(fù)制寄存器值中的一個(gè)或者多個(gè)。
2.根據(jù)權(quán)利要求1所述的方法,其中: 所述第一硬件線程執(zhí)行分支和發(fā)起指令以調(diào)用所述請(qǐng)求;以及 所述第二硬件線程的所述發(fā)起是獨(dú)立于管理程序的。
3.根據(jù)權(quán)利要求1所述的方法,其中: 所述一個(gè)或者多個(gè)第一寄存器被包括在所述第一硬件線程中;以及 所述一個(gè)或者多 個(gè)第二寄存器被包括在所述第二硬件線程中。
4.根據(jù)權(quán)利要求1所述的方法,其中所述一個(gè)或者多個(gè)第二寄存器是多個(gè)第二硬件線程寄存器的第一子集,所述方法進(jìn)一步包括: 標(biāo)識(shí)在所述多個(gè)第二硬件線程寄存器中包括的第二寄存器的第二子集,其中所述第二寄存器的第二子集是每個(gè)可由所述第二硬件線程訪問的并且沒有包括所復(fù)制寄存器值中的一個(gè);以及 清除所述第二寄存器的第二子集中的每一個(gè)。
5.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括: 執(zhí)行所述第二硬件線程處的停止輔助線程指令;以及 響應(yīng)于執(zhí)行所述停止輔助線程指令: 由所述第二硬件線程在可由所述第一硬件線程訪問的輔助線程狀態(tài)字段中存儲(chǔ)終止指示符; 由所述第二硬件線程在可由所述第一硬件線程訪問的停止指令參數(shù)字段中存儲(chǔ)停止指令參數(shù)值; 由所述第二硬件線程在可由所述第一硬件線程訪問的下一指令字段中存儲(chǔ)下一指令地址;以及 由所述第二硬件線程清除在可由所述第一硬件線程訪問的輔助線程執(zhí)行字段中包括的輔助線程執(zhí)行位。
6.根據(jù)權(quán)利要求1所述的方法,其中軟件程序生成調(diào)用所述請(qǐng)求的指令,所述方法進(jìn)一步包括: 在標(biāo)識(shí)所述寄存器值之前,由所述第一硬件線程確定所述第二硬件線程可用; 響應(yīng)于確定所述第二硬件線程可用: 由所述第一硬件線程設(shè)置輔助線程值位;以及 由所述第一硬件線程生成對(duì)應(yīng)于所述第二硬件線程的輔助線程號(hào)值; 由所述軟件程序檢查所述輔助線程值位;以及 響應(yīng)于所述軟件程序檢測(cè)到所述輔助線程位值被設(shè)置,從所述軟件程序向所述第二硬件線程發(fā)送指令的子集。
7.根據(jù)權(quán)利要求6所述的方法,進(jìn)一步包括: 由所述軟件程序確定在所述第一硬件線程和所述第二硬件線程之間是否需要存儲(chǔ)操作可見性; 響應(yīng)于需要存儲(chǔ)操作可見性,生成分支和發(fā)起重型指令;以及 響應(yīng)于不需要存儲(chǔ)操 作可見性,生成分支和發(fā)起輕型指令。
8.根據(jù)權(quán)利要求6所述的方法,進(jìn)一步包括: 由所述第一硬件線程確定在所述指令中是否設(shè)置了復(fù)制位;以及響應(yīng)于確定設(shè)置了所述復(fù)制位,在所復(fù)制寄存器值中包括寄存器值的一個(gè)或者多個(gè)依賴于實(shí)現(xiàn)的集合。
9.根據(jù)權(quán)利要求1所述的方法,其中地址轉(zhuǎn)換值被包括在被復(fù)制到所述一個(gè)或者多個(gè)第二寄存器的所述一個(gè)或者多個(gè)寄存器值中,使得所述第二硬件線程和所述第一硬件線程具有相同的地址轉(zhuǎn)換。
10.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括: 在所述第一硬件線程處接收后續(xù)請(qǐng)求以發(fā)起第三硬件線程; 標(biāo)識(shí)在所述一個(gè)或者多個(gè)第一寄存器中包括的一個(gè)或者多個(gè)后續(xù)寄存器值; 向可由所述第三硬件線程訪問的一個(gè)或者多個(gè)第三寄存器復(fù)制所述一個(gè)或者多個(gè)后續(xù)寄存器值;以及 執(zhí)行所述第三硬件線程,其中執(zhí)行所述第三硬件線程包括所述第三硬件線程訪問位于所述一個(gè)或者多個(gè)第三寄存器中的所述后續(xù)寄存器值的一個(gè)或者多個(gè)。
11.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括: 在所述第二硬件線程處接收后續(xù)請(qǐng)求以發(fā)起第三硬件線程; 標(biāo)識(shí)在所述一個(gè)或者多個(gè)第二寄存器中包括的一個(gè)或者多個(gè)后續(xù)寄存器值; 向可由所述第三硬件線程訪問的一個(gè)或者多個(gè)第三寄存器拷貝所述一個(gè)或者多個(gè)后續(xù)寄存器值;以及 執(zhí)行所述第三硬件線程,其中執(zhí)行所述第三硬件線程包括所述第三硬件線程訪問位于所述一個(gè)或者多個(gè)第三寄存器中的所述后續(xù)寄存器值中的一個(gè)或者多個(gè)。
12.根據(jù)權(quán)利要求1所述的方法,其中: 所述第一硬件線程包括第一執(zhí)行單元;以及 所述第二硬件線程包括不同于所述第一執(zhí)行單元的第二執(zhí)行單元。
13.—種信息處理系統(tǒng),包括: 一個(gè)或者多個(gè)處理器; 耦合至所述處理器中至少一個(gè)的存儲(chǔ)器; 指令集,存儲(chǔ)在所述存儲(chǔ)器中以及由所述處理器中的至少一個(gè)執(zhí)行以便執(zhí)行動(dòng)作:在所述處理器中的一個(gè)中包括的第一硬件線程處,標(biāo)識(shí)請(qǐng)求以發(fā)起第二硬件線程;標(biāo)識(shí)在由所述第一硬件線程訪問的一個(gè)或者多個(gè)第一寄存器中包括的一個(gè)或者多個(gè)寄存器值; 向可由所述第二硬件線程訪問的一個(gè)或者多個(gè)第二寄存器復(fù)制所述一個(gè)或者多個(gè)寄存器值;以及執(zhí)行在所述處理器中的一個(gè)中包括的所述第二硬件線程上的所述指令集的一部分,其中所述執(zhí)行包括所述第二硬件線程訪問位于所述一個(gè)或者多個(gè)第二寄存器中的所復(fù)制寄存器值中的一個(gè)或者多個(gè)。
14.根據(jù)權(quán)利要求13所述的信息處理系統(tǒng),其中: 所述第一硬件線程執(zhí)行分支和發(fā)起指令以調(diào)用所述請(qǐng)求;以及 所述第二硬件線程的所述發(fā)起是獨(dú)立于管理程序的。
15.根據(jù)權(quán)利要求13所述的信息處理系統(tǒng),其中: 所述一個(gè)或者多個(gè)第一寄存器被包括在所述第一硬件線程中;以及 所述一個(gè)或者多個(gè)第二寄存器被包括在所述第二硬件線程中。
16.根據(jù)權(quán)利要求13所述的信息處理系統(tǒng),其中所述一個(gè)或者多個(gè)第二寄存器是多個(gè)第二硬件線程寄存器的第一子集,以及其中所述指令集執(zhí)行動(dòng)作: 標(biāo)識(shí)包括在所述多個(gè)第二硬件線程寄存器中的第二寄存器的第二子集,其中所述第二寄存器的第二子集是每個(gè)可由所述第二硬件線程訪問的并且沒有包括所復(fù)制寄存器值中的一個(gè);以及 清除所述第二寄存器的第二子集中的每一個(gè)。
17.根據(jù)權(quán)利要求13所述的信息處理系統(tǒng),其中所述指令集執(zhí)行動(dòng)作: 執(zhí)行所述第二硬件線程處的停止輔助線程指令;以及 響應(yīng)于執(zhí)行所述停止輔助線程指令:` 由所述第二硬件線程在可由所述第一硬件線程訪問的輔助線程狀態(tài)字段中存儲(chǔ)終止指示符; 由所述第二硬件線程在可由所述第一硬件線程訪問的停止指令參數(shù)字段中存儲(chǔ)停止指令參數(shù)值; 由所述第二硬件線程在可由所述第一硬件線程訪問的下一指令字段中存儲(chǔ)下一指令地址;以及 由所述第二硬件線程清除在可由所述第一硬件線程訪問的輔助線程執(zhí)行字段中包括的輔助線程執(zhí)行位。
18.根據(jù)權(quán)利要求17所述的信息處理系統(tǒng),其中所述指令集包括調(diào)用所述請(qǐng)求的指令,以及其中所述指令集執(zhí)行動(dòng)作: 在標(biāo)識(shí)所述寄存器值之前,由所述第一硬件線程確定所述第二硬件線程可用; 響應(yīng)于確定所述第二硬件線程可用: 由所述第一硬件線程設(shè)置輔助線程值位;以及 由所述第一硬件線程生成對(duì)應(yīng)于所述第二硬件線程的輔助線程號(hào)值; 檢查所述輔助線程值位;以及 響應(yīng)于檢測(cè)到所述輔助線程位值被設(shè)置,向所述第二硬件線程發(fā)送指令的子集。
19.根據(jù)權(quán)利要求17所述的信息處理系統(tǒng),其中所述指令集執(zhí)行動(dòng)作: 確定在所述第一硬件線程和所述第二硬件線程之間是否需要存儲(chǔ)操作可見性; 響應(yīng)于需要存儲(chǔ)操作可見性,生成分支和發(fā)起重型指令;以及。
響應(yīng)于不需要存儲(chǔ)操作可見性,生成分支和發(fā)起輕型指令。
20.根據(jù)權(quán)利要求17所述的信息處理系統(tǒng),其中所述指令集執(zhí)行動(dòng)作:由所述第一硬件線程確定在所述指令中是否設(shè)置了復(fù)制位;以及響應(yīng)于確定設(shè)置了所述復(fù)制位,在所復(fù)制寄存器值中包括寄存器值的一個(gè)或者多個(gè)依賴于實(shí)現(xiàn)的集合。
21.根據(jù)權(quán)利要求13所述的信息處理系統(tǒng),其中地址轉(zhuǎn)換值被包括在被復(fù)制到所述一個(gè)或者多個(gè)第二寄存器的所述一個(gè)或者多個(gè)寄存器值中,使得所述第二硬件線程和所述第一硬件線程具有相同的地址轉(zhuǎn)換。
22.一種處理器,包括: 第一硬件線程; 可由所述第一硬件線程訪問的一個(gè)或者多個(gè)第一寄存器,所述一個(gè)或者多個(gè)第一寄存器包括一個(gè)或者多個(gè)寄存器值; 由所述第一硬件線程發(fā)起的第二硬件線程; 可由所述第二硬件線程訪問的一個(gè)或者多個(gè)第二寄存器;以及其中響應(yīng)于發(fā)起所述第二硬件線程,所述第一硬件線程將所述寄存器值從所述一個(gè)或者多個(gè)第一寄存器復(fù)制到所述一個(gè)或者多個(gè)第二寄存器,以及其中響應(yīng)于執(zhí)行軟件代碼,所述第二硬件線程訪問在所述一個(gè)或者多個(gè)第二寄存器中包括的所復(fù)制寄存器值中的一個(gè)或者多個(gè)。
23.根據(jù)權(quán)利要求22所述的處理器,進(jìn)一步包括: 第一執(zhí)行單元,包括在所述第一硬件線程中;以及 第二執(zhí)行單元,包括在所述第二硬件線程中,其中所述第二執(zhí)行單元不同于所述第一執(zhí)行單元。
24.根據(jù)權(quán)利要求22所述的處理器,其中所述第一硬件線程獨(dú)立于管理程序而發(fā)起所述第二硬件線程。
25.根據(jù)權(quán)利要求22所述的處理器,其中: 所述一個(gè)或者多個(gè)第一寄存器被包括在所述第一硬件線程中;以及 所述一個(gè)或者多個(gè)第二寄存器被包括在所述第二硬件線程中。
全文摘要
第一硬件線程執(zhí)行軟件程序指令,其指令第一硬件線程以發(fā)起第二硬件線程。這樣,第一硬件線程標(biāo)識(shí)可由第一硬件線程訪問的一個(gè)或者多個(gè)寄存器值。接著第一硬件線程向由第二硬件線程可訪問的一個(gè)或者多個(gè)寄存器復(fù)制所標(biāo)識(shí)的寄存器值。繼而,第二硬件線程訪問在可訪問寄存器中包括的所復(fù)制寄存器值,并且相應(yīng)地執(zhí)行軟件代碼。
文檔編號(hào)G06F9/38GK103154885SQ201180045178
公開日2013年6月12日 申請(qǐng)日期2011年9月8日 優(yōu)先權(quán)日2010年9月20日
發(fā)明者G·R·弗雷澤, R·霍爾 申請(qǐng)人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
巢湖市| 石狮市| 肥城市| 比如县| 大姚县| 西青区| 河曲县| 寿阳县| 绥中县| 七台河市| 永丰县| 潞城市| 余干县| 陇西县| 买车| 清徐县| 龙井市| 万州区| 夏津县| 武胜县| 定西市| 定结县| 剑阁县| 武城县| 句容市| 抚顺市| 柳河县| 山阴县| 集贤县| 木兰县| 岚皋县| 永仁县| 四川省| 项城市| 新密市| 鹿泉市| 金昌市| 澄江县| 马鞍山市| 沈丘县| 新昌县|