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

處理器中多線程之間的通信的制作方法

文檔序號(hào):6570820閱讀:177來(lái)源:國(guó)知局
專利名稱:處理器中多線程之間的通信的制作方法
處理器中多線程之間的通信
背景技術(shù)
處理器已經(jīng)成了很復(fù)雜的設(shè)備,包括大量的結(jié)構(gòu)和復(fù)雜的控制技術(shù),允許指令和數(shù)據(jù)通過(guò)該機(jī)器,以便執(zhí)行所請(qǐng)求的不同操作。為了
改善處理器的效率,某些處理器利用指令級(jí)的并行性(ILP)。盡管這樣的技術(shù)可以提高效率,但也會(huì)增大功率消耗和設(shè)計(jì)的復(fù)雜性。有鑒于此,某些處理器以這樣的意圖設(shè)計(jì),即通過(guò)支持和利用線程級(jí)并行性(TLP-"thread level parallem")的體系結(jié)構(gòu)來(lái)允許多線程協(xié)作。所述處理器可以包括多個(gè)核,至少多個(gè)小核,諸如同時(shí)多線程(SMT國(guó)"simultaneous multithreading")的有序小核。
但是,這樣的有序核不如利用指令級(jí)并行性(ILP)時(shí)的無(wú)序核有效。這說(shuō)明,這些有序處理器能夠有效地執(zhí)行并行應(yīng)用,而一系列并行應(yīng)用中的只有一個(gè)線程和部分代碼的應(yīng)用,在這樣的體系結(jié)構(gòu)上可能不會(huì)有效地表現(xiàn)。據(jù)此,某些處理器可以將應(yīng)用分開(kāi),將線程分成較小的部分執(zhí)行,以維持最低的復(fù)雜性,同時(shí)改善其效率。但是,當(dāng)?shù)谝痪€程企圖利用第二線程的信息時(shí),可能產(chǎn)生一個(gè)數(shù)量過(guò)大的組織過(guò)程。


圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例的方法的流程圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的標(biāo)記表的框圖3是根據(jù)本發(fā)明一個(gè)實(shí)施例實(shí)現(xiàn)指令執(zhí)行的框圖4是根據(jù)本發(fā)明一個(gè)實(shí)施例產(chǎn)生流程標(biāo)記信息的方法的流程
圖5是根據(jù)本發(fā)明 一個(gè)實(shí)施例的系統(tǒng)框圖。
具體實(shí)施例方式
在另 一些實(shí)施例中,要在處理器的一個(gè)核上執(zhí)行的多個(gè)線程可以訪問(wèn)寄存器堆中包含的與另一線程相關(guān)的值。這些實(shí)施例中,可通過(guò)
類似的信道提供同時(shí)多線程(SMT)的有效運(yùn)行。作為一個(gè)示例,可以在諸如同時(shí)多線程處理器等有序處理器的單一核上完成第一和第二線程??梢蕴峁┮环N控制,以使生產(chǎn)者/消費(fèi)者沖莫型成為可能,其中可以由該第二線程訪問(wèn)第一線程所產(chǎn)生的數(shù)據(jù)值,反之亦然。多個(gè)線程中的每一個(gè)都能夠在執(zhí)行期間讀出另 一個(gè)線程的這些結(jié)構(gòu)或體系結(jié)構(gòu)的寄存器狀態(tài),這時(shí)以很低的組織活動(dòng)允許線程之間的同步。
為了保證當(dāng)訪問(wèn)給定的寄存器時(shí),能夠讀出給定寄存器的正確值,可以這樣提供一種同步控制,使得消費(fèi)者線程讀出生產(chǎn)者線程中適當(dāng)?shù)臄?shù)據(jù)。在另一些實(shí)施例中,諸如可用于指令的發(fā)送或分配的標(biāo)記表的結(jié)構(gòu)可以包括同步標(biāo)志。更具體地說(shuō),第一線程的一個(gè)寄存器的標(biāo)記表結(jié)構(gòu)的每一條目都可以包括一個(gè)針對(duì)該第二線程的相應(yīng)寄存器的同步標(biāo)志。該標(biāo)志的使用可以阻止一條消費(fèi)者指令繼續(xù)執(zhí)行,直至另一線程對(duì)應(yīng)的生產(chǎn)者指令實(shí)現(xiàn)為止,以在生產(chǎn)者寄存器堆中呈現(xiàn)想要的值。為了獲得上述同步系統(tǒng)的好處, 一些實(shí)施例可以提供與一些指令相關(guān)聯(lián)的流程信息。例如,可以提供與一條指令的內(nèi)容相結(jié)合的流程指示或標(biāo)記。在一個(gè)實(shí)施例中, 一條指令可以包括操作碼、源與目的操作數(shù),以及這些源與目的操作數(shù)中每一個(gè)的流程標(biāo)記。如以下將附帶描述的,不同的機(jī)制可以負(fù)責(zé)產(chǎn)生相應(yīng)指令的流程標(biāo)記。例如,可以這樣提供編譯器支持,使之能夠在編譯期間根據(jù)指令集體系結(jié)構(gòu)
(ISA-"instmction set architecture")上所提供的指令支持來(lái)產(chǎn)生流程標(biāo)記。在其他實(shí)施例中,諸如硬件或軟件優(yōu)化裝置等優(yōu)化機(jī)制可以分析代碼的流程控制并依次產(chǎn)生流程標(biāo)記。這樣,就可按指令細(xì)分或粒化
(desmenuzamiento o desgranamiento )的程度來(lái)使多個(gè)線程同步。
本發(fā)明的 一些實(shí)施例的某些特征適合于對(duì)寄存器的訪問(wèn)和同步。例如, 一個(gè)低組織活動(dòng)的線程存儲(chǔ)機(jī)制可用來(lái)訪問(wèn)其他線程的寄存器堆。這樣,通過(guò)將一個(gè)線程的上下文存放在存儲(chǔ)器中,可以避免復(fù)制一個(gè)線程的所有這些上下文寄存器的開(kāi)銷。這是因?yàn)榭蓸?biāo)出包含在存放的線程中的適當(dāng)?shù)南M(fèi)者指令,結(jié)果就在其位置上從該存放線程的寄存器堆讀出操作數(shù)。
根據(jù)不同的實(shí)施例,可減少與兩個(gè)顆粒細(xì)化的(desgranadas aldetalle)線程之間合作執(zhí)行相關(guān)的這些組織過(guò)程。因此,可以利用一些與多線程特定功能的支持相關(guān),以及與線程的存放相關(guān)的實(shí)施例。此外,還可利用一些與稱為輔助線程相關(guān)的實(shí)施例,使之啟動(dòng),以執(zhí)行在另一個(gè)線程執(zhí)行期間發(fā)生的特定任務(wù)。但應(yīng)明白,本發(fā)明的范圍并不受限于此,而是可用許多不同的實(shí)現(xiàn)方式訪問(wèn)寄存器和同步機(jī)構(gòu),包括不同的處理器體系結(jié)構(gòu)、系統(tǒng)以及其他等等。
接著,參閱圖1,它說(shuō)明根據(jù)本發(fā)明一個(gè)實(shí)施例的方法的流程圖。如圖1所示,方法10可用來(lái)執(zhí)行第一線程的一條可能要訪問(wèn)在第二線程的寄存器堆中包含的信息的指令。如圖1所示,方法10可以從接收一條要執(zhí)行的第一線程指令開(kāi)始(方框20)。例如,處理器的指令譯碼器可以接收一個(gè)譯碼指令。在一個(gè)實(shí)施例中,該指令可以包括
用來(lái)指出要執(zhí)行的操作類型的操作碼、以及源與目的操作數(shù)的識(shí)別。除此之外,該指令還可以包括一些信息,以指示是否要從遠(yuǎn)程寄存器堆,例如與第二線程相關(guān)聯(lián)的寄存器堆訪問(wèn)這些源/目的操作數(shù)中的一
個(gè),或是否提供該操作數(shù)。注意,盡管這里作為一個(gè)遠(yuǎn)程寄存器堆描述,但應(yīng)明白,它也可以是在諸如多處理器包括例如若干有序核的多核處理器的單核上的本地寄存器堆和遠(yuǎn)程寄存器堆。
還是參閱圖1,接著可確定是否要從一個(gè)遠(yuǎn)程線程獲得該指令的任何源操作數(shù)(菱形框30)。就是說(shuō),根據(jù)流程標(biāo)記信息(在這些實(shí)施例中的一個(gè))可以確定,是否要從遠(yuǎn)程線程,例如,包括從包含SMT核中的寄存器堆的第二線程獲得任何源操作數(shù)。若如此,則控制轉(zhuǎn)移到菱形框40,其中可確定,與上述操作數(shù)或上述所有遠(yuǎn)程源操作數(shù)相關(guān)的這些同步標(biāo)志是否已激活。亦即,可以分析一個(gè)標(biāo)記表或存儲(chǔ)有關(guān)給定寄存器的值的可用性狀態(tài)的識(shí)別信息的其他存儲(chǔ)器,以確定所有這些要從遠(yuǎn)程寄存器堆獲得的源操作數(shù)是否都包括所想要的值。換句話說(shuō),可以確定生產(chǎn)者線程是否已完成一個(gè)從屬于第一線程的指令 所依賴的操作。在這個(gè)(這些)同步標(biāo)志沒(méi)有激活的情況下,菱形框
40可以保持即自我關(guān)閉,以讓該指令等到呈現(xiàn)該同步標(biāo)志時(shí)再執(zhí)行。 在這些同步標(biāo)志已經(jīng)存在時(shí),這表示遠(yuǎn)程寄存器中已存在所想要的 值,控制轉(zhuǎn)移到菱形框45,這一點(diǎn)將在下文說(shuō)明。
還是參閱圖1,若判定來(lái)自某個(gè)遠(yuǎn)程線程(菱形框30)的任何源 操作數(shù),或與所有這些遠(yuǎn)程源操作數(shù)相關(guān)的同步標(biāo)志處于激活狀態(tài) (根據(jù)菱形框40的判定),則控制轉(zhuǎn)移到菱形框45,其中可確定是否 有任何來(lái)自本地線程(亦即,第一線程)的源操作數(shù)。若如此,則控 制可以進(jìn)到菱形框50,其中可確定是否有與操作數(shù)或與所有本地源操 作數(shù)相關(guān)的準(zhǔn)備或備置標(biāo)志激活。例如,可訪問(wèn)標(biāo)記表,以確定指示 一條生產(chǎn)者指令已在第一線程之前完成的標(biāo)志是否激活,使得來(lái)自同 一線程的從屬操作可用適當(dāng)?shù)闹祱?zhí)行。在相反的情況下,菱形框50
可保持或自我關(guān)閉。
控制從這兩個(gè)菱形框45和50轉(zhuǎn)移到方框60,其中指令可被發(fā)送 去執(zhí)行。例如,指令發(fā)送器,諸如分配裝置、保持裝置或包括類似狀 態(tài)的標(biāo)記表或狀態(tài)存儲(chǔ)器的其他結(jié)構(gòu),可以將該指令發(fā)送以將它執(zhí) 行。據(jù)此,諸如整數(shù)單元、浮點(diǎn)單元(FPU-"floating point unit")或其 他類似單元等執(zhí)行單元,可以從具體識(shí)別的寄存器堆(方框70)訪問(wèn) 這些被指示的源操作數(shù)。這樣,對(duì)于本地源操作數(shù),可以訪問(wèn)與該線 程相關(guān)的本地寄存器堆,以獲得這些源操作數(shù),而對(duì)于遠(yuǎn)程操作數(shù), 可以訪問(wèn)與第二線程相關(guān)的寄存器堆,例如,遠(yuǎn)程寄存器堆。
還是參閱圖1,該框中可執(zhí)行指令(方框80)。例如,可對(duì)兩個(gè)源 操作數(shù)求和,以獲得一個(gè)想要的結(jié)果,該結(jié)果將纟皮存儲(chǔ)在目的操作數(shù) 中,例如,第一寄存器堆的目的操作數(shù)中。根據(jù)該指令的成功實(shí)現(xiàn), 可更新各種標(biāo)志(方框90)。更具體地說(shuō),可以將標(biāo)記表中的備置標(biāo) 志和同步標(biāo)志更新得盡量適用。繼續(xù)用前例進(jìn)行描述,在指明目的操
作數(shù)是本地操作數(shù)的情況下,可以作為應(yīng)答調(diào)整與目的地寄存器相關(guān) 的準(zhǔn)備或備置標(biāo)志。另一方面,可以重新建立該寄存器的同步標(biāo)志,以指出該值不同步。反之,若指明該目的操作數(shù)在遠(yuǎn)程使用,則可因 此而調(diào)整遠(yuǎn)程寄存器堆(例如,第二寄存器堆)的同步標(biāo)志。此外, 可以調(diào)整本地寄存器堆的備置標(biāo)志。這樣,不論是遠(yuǎn)程線程,還是本 地線程,都可如同源操作數(shù)那樣訪問(wèn)該目的操作數(shù),這使得無(wú)論在同 一線程內(nèi)還是在線程之間,生產(chǎn)者/消費(fèi)者都可以有效運(yùn)行。盡管用圖 1實(shí)施例上這種具體實(shí)現(xiàn)進(jìn)行了說(shuō)明,但應(yīng)明白本發(fā)明的范圍并不受 限于此。
在一個(gè)處理器內(nèi)可以存在不同的結(jié)構(gòu),以便能夠根據(jù)本發(fā)明一個(gè)
實(shí)施例訪問(wèn)寄存器和同步機(jī)制。接著,參閱圖2,其中說(shuō)明根據(jù)本發(fā) 明一個(gè)實(shí)施例的包括對(duì)多個(gè)線程之間同步的支持的標(biāo)記表的框圖。如 圖2所示,由處理器核內(nèi)的存儲(chǔ)器構(gòu)成的標(biāo)記表100可以包括一些條 目,用來(lái)存儲(chǔ)與多個(gè)寄存器堆的這些寄存器相關(guān)聯(lián)的狀態(tài)信息。具體 地說(shuō),在圖2所說(shuō)明的實(shí)施例中,第一線程和第二線程各自可包括一 些條目,用于其寄存器堆中存在的每個(gè)寄存器。這樣,如圖2所示, 第一線程可以包括多個(gè)條目112a-112n (統(tǒng)稱為條目112)。每一條目 112都可以用寄存器識(shí)別符(ID)作指標(biāo),而且每一條目都可以包括 狀態(tài)信息。在圖2所示的特定實(shí)施例中,可以有一個(gè)準(zhǔn)備或備置標(biāo)志 114a-114n (統(tǒng)稱為備置標(biāo)志114)和同步標(biāo)志116a-116n (統(tǒng)稱為同步 標(biāo)志116)。備置標(biāo)志114可以用來(lái)指示何時(shí)存儲(chǔ)在所識(shí)別的寄存器中 的相應(yīng)操作數(shù)就緒,可供那些線程的消費(fèi)者操作利用,而該同步標(biāo)志 116可以指示該本地線程要訪問(wèn)的遠(yuǎn)程操作數(shù)是否就緒,可供該本地 線程訪問(wèn),亦即生產(chǎn)者線程(遠(yuǎn)程)的一條生產(chǎn)者指令是否已經(jīng)執(zhí)行, 且適當(dāng)?shù)闹凳欠翊嬖谒胍奈恢蒙?。注意,第二線程120也可包括 多個(gè)條目122a-122n (統(tǒng)稱為條目122),它們中的每一個(gè)都與其寄存 器堆的一個(gè)寄存器相關(guān)聯(lián)。這樣,各個(gè)條目122可以包括一個(gè)對(duì)應(yīng)的 備置標(biāo)志124a-124n (統(tǒng)稱為備置標(biāo)志124),還包括一個(gè)同步標(biāo)志 126a-126n (統(tǒng)稱為同步標(biāo)志126)。取代各個(gè)線程的單獨(dú)的條目,可 以設(shè)置一個(gè)標(biāo)記表,使得對(duì)應(yīng)于多個(gè)線程的每個(gè)寄存器都有單一的條 目,使得該條目的不同部分與各線程相關(guān)聯(lián)。另一方面,盡管已經(jīng)用圖2的實(shí)施例中的這種具體配置進(jìn)行了說(shuō)明,但應(yīng)明白,本發(fā)明的范 圍并不受限于此,而且在另一些實(shí)施例中可以采用不同的產(chǎn)生、存儲(chǔ) 和利用與不同線程的寄存器堆相關(guān)聯(lián)的狀態(tài)信息的方式。例如,處理 器的不同體系結(jié)構(gòu)可以具有不相同的控制配置,用以分析指令并將它 們發(fā)送到處理器的一個(gè)或多個(gè)執(zhí)行單元。某些處理器可以包括分配裝 置、4犬態(tài)葉呆存裝置(estaciones de reserva )、標(biāo)^己表、控制器和其斗也各 種邏輯單元,以確定何時(shí)一條已譯碼的指令有執(zhí)行所需的不同資源可 供使用,并根據(jù)一個(gè)有序或無(wú)序判據(jù)選擇要提供給一個(gè)執(zhí)行單元的指 令。在另一些實(shí)施例中,標(biāo)記表100可以形成為指令發(fā)送器的一部分, 采取在一個(gè)給定的處理器體系結(jié)構(gòu)上可利用的任何一種方式,或者可 以連接到上述指令發(fā)送器或其他類似的邏輯單元上,以便根據(jù)呈現(xiàn)在 標(biāo)記表100上的信息允許作出發(fā)送該指令的決定。
如上所述,在另 一些實(shí)施例中可以分析與一條指令相關(guān)聯(lián)的流程 信息,以確定一條指令是否要訪問(wèn)存在于另 一個(gè)線程的寄存器中的信 息,和/或是否可以由不同線程的一方訪問(wèn)該指令的結(jié)果。接著參閱圖 3,說(shuō)明根據(jù)本發(fā)明一個(gè)實(shí)施例實(shí)現(xiàn)指令執(zhí)行的框圖。如圖3所示, 系統(tǒng)200可以包括執(zhí)行單元230,它對(duì)輸入的數(shù)據(jù)執(zhí)行不同的操作。 在圖3所說(shuō)明的實(shí)施例中,第一寄存器堆220和第二寄存器堆225可 連接到執(zhí)行單元230。在圖3的實(shí)施例中,第一寄存器堆220可以與 第一線程相關(guān)聯(lián),而第二寄存器堆225可以與第二線程相關(guān)聯(lián)。盡管 在圖3的實(shí)施例中表示為獨(dú)立的寄存器堆,但應(yīng)理解在某些實(shí)施例中, 可以呈現(xiàn)為一個(gè)總體寄存器堆,使得其第一部分在邏輯形式上與第一 線程相關(guān)聯(lián),而第二部分與第二線程相關(guān)聯(lián)。如圖3所示, 一條來(lái)自 第一線程并要由該執(zhí)行單元230執(zhí)行的指令205,可以包括操作碼, 用以識(shí)別指令的某種類型,例如,加法、乘法操作或其他操作。此外, 指令205還識(shí)別結(jié)果的目的地,即目的操作數(shù),它可對(duì)應(yīng)于第一寄存 器rax。與這個(gè)目的地相關(guān)聯(lián),存在一個(gè)位置標(biāo)志,在圖3中它標(biāo)示 為DESTINO—DISTANTE("REMOTE—DEST,,)。如圖3所示,該位置 標(biāo)志具有數(shù)值l,指示稍后應(yīng)由一個(gè)遠(yuǎn)程線程,亦即在圖3的例中第
ii二線程訪問(wèn)該目的操作數(shù),它也可能由本地線程中存在的消費(fèi)者指令
訪問(wèn)。正如上面附帶說(shuō)明的,該指令205還識(shí)別兩個(gè)源操作數(shù),特別 是訪問(wèn)寄存器rbx的第一源操作數(shù)(SRC1 )。由于該源操作數(shù)的位置 標(biāo)志(亦即,SRC—DISTANTE-"REMOTE—SRC")設(shè)定為數(shù)值1,故該 源操作數(shù)可以從遠(yuǎn)程寄存器堆即寄存器堆225訪問(wèn)。類似地,該指令 205包括第二源操作數(shù)(SRC2),它用來(lái)訪問(wèn)第二寄存器rcx,按照設(shè)定 為數(shù)值0的第二源操作數(shù)的本地標(biāo)志(亦即,SRC—DISTANTE),它 可以從第一寄存器堆220獲得。
由于須從不同的寄存器堆,即從第二寄存器堆225訪問(wèn)該源操作 數(shù),因此在與該源操作數(shù)相關(guān)的同步標(biāo)志^f皮激活(例如被設(shè)置)之前, 不能繼續(xù)處理該指令205。另一方面,在與該第二源操作數(shù)相關(guān)聯(lián)的 備置標(biāo)志也被激活之前,不能繼續(xù)處理該指令205。因此,如圖3所 示,該標(biāo)記表100包括與第一源操作數(shù)聯(lián)系的第一條目112b和與該第 二操作數(shù)相關(guān)聯(lián)的第二條目112c。 一旦該備置標(biāo)志114c的值和同步 標(biāo)志116b的值均已設(shè)定,該指令205便可發(fā)送到執(zhí)行單元230。這是 因?yàn)榈谝患拇嫫鞫?25的寄存器rbx和第二寄存器堆220的寄存器rcx 均已呈現(xiàn)適當(dāng)?shù)闹怠?jù)此,執(zhí)行單元230可以在第一寄存器堆220中 讀出rcx,并在第二寄存器堆225中讀出rbx。 一旦執(zhí)行了該指令,其 結(jié)果便可以存儲(chǔ)在第一寄存器堆220的目的地寄存器rax中。另一方 面,可以對(duì)這些不同的備置和同步標(biāo)志進(jìn)行更新。特別是,如圖3所 示,在執(zhí)行后,可以實(shí)現(xiàn)與第一線程相關(guān)聯(lián)的條目112a,使得備置標(biāo) 志114a具有數(shù)值l,而同步標(biāo)志116具有數(shù)值0。另一方面,與第二 線程相關(guān)聯(lián)的條目126a可以具有對(duì)應(yīng)的同步標(biāo)志116a,其數(shù)值調(diào)整 在l上,以便指出在該寄存器rax中已經(jīng)呈現(xiàn)適當(dāng)?shù)闹?,?duì)于第二線 程的一條消費(fèi)者指令,它起源操作數(shù)的作用。盡管用圖3的實(shí)施例中 具體的實(shí)施例進(jìn)行說(shuō)明,但本發(fā)明的范圍并不受限于此。
正如圖3中附帶說(shuō)明的,在系統(tǒng)200內(nèi)可以有一個(gè)控制器250。 該控制器250可以包括不同的硬件或物理設(shè)備、軟件或程序、固件或 永久安裝在硬件上的邏輯單元,或者它們的組合,以將指令從多個(gè)線程中的每一個(gè)發(fā)送到執(zhí)行單元230。如圖3所示,該控制器250可以 連接到標(biāo)記表100,以分析存在于不同條目中的狀態(tài)信息,以根據(jù)對(duì) 相關(guān)的備置和/或同步標(biāo)志的分析,確定一條給定指令的源操作數(shù)是否 已為其執(zhí)行準(zhǔn)備就緒。在一個(gè)實(shí)施例中,該控制器250可以實(shí)施一個(gè) 邏輯功能,以便當(dāng)該指令的這些源操作數(shù)處于備置狀態(tài)時(shí),使指令的 發(fā)送成為可能。例如,在一個(gè)實(shí)現(xiàn)方式中,在指示本地源(亦即,與 這些源操作數(shù)相關(guān)的這個(gè)位置標(biāo)志指向本地(例如,具有低邏輯值)) 時(shí),該功能可以對(duì)應(yīng)于一個(gè)"與"("AND")運(yùn)算,其中這兩個(gè)本地源操 作數(shù)的備置標(biāo)志可^皮分析,以確定這兩個(gè)標(biāo)志是否都處于可用或就緒 狀態(tài)。若非如此,該指令可以一直維持到這兩個(gè)備置標(biāo)志都^^皮調(diào)整為 止,例如,設(shè)在邏輯高的狀態(tài)上,指示備置狀態(tài)。反之,若它指示這 兩個(gè)源操作數(shù)中的一個(gè)是遠(yuǎn)程源,該邏輯運(yùn)算可以對(duì)應(yīng)于一個(gè)"與" ("AND")運(yùn)算,其中,對(duì)于本地操作數(shù),證實(shí)是本地備置標(biāo)志,而對(duì) 于遠(yuǎn)程操作數(shù),證實(shí)是本地同步標(biāo)志,以確定是否二者都指示這些操 作數(shù)可用。若如此,該操作可繼續(xù)下去;在相反情況下,控制器250 可使操作暫停,直到(根據(jù)關(guān)于備置和同步的標(biāo)志指示)所述兩個(gè)源 操作數(shù)均已就緒為止。盡管用此特定實(shí)現(xiàn)方式作了描述,但是本發(fā)明 的范圍并不受限于此,可以用許多不同的方式來(lái)分析包含在標(biāo)記表或 在其他結(jié)構(gòu)中的信息,以確定何時(shí)這些源操作數(shù)已為其在一條消費(fèi)者 指令中的使用準(zhǔn)備就緒。例如,在另一些實(shí)現(xiàn)方式中,多核處理器, 諸如雙核或更多核的處理器,也可以用類似形式來(lái)實(shí)施本發(fā)明。在一 些這樣的實(shí)現(xiàn)方式中,在第一核上執(zhí)行的第一線程可訪問(wèn)與在另 一核 上執(zhí)行的不同的線程相關(guān)聯(lián)的寄存器堆。但在進(jìn)行時(shí)可使用若干數(shù)量 的進(jìn)程即組織活動(dòng),以在一個(gè)給定線程的執(zhí)行期間訪問(wèn)所述遠(yuǎn)程寄存 器堆。
據(jù)此,根據(jù)與該指令相關(guān)聯(lián)的流程信息,亦即根據(jù)這些不同的源 與目的操作數(shù)用的指示或流程標(biāo)記,可以使快速地訪問(wèn)不同的寄存器 堆及其同步成為可能。在另一些實(shí)施例中,不同的實(shí)體可以產(chǎn)生線程 和對(duì)應(yīng)的代碼,例如,動(dòng)態(tài)優(yōu)化裝置、編譯器、硬件優(yōu)化裝置等等。產(chǎn)生上述代碼的任何一個(gè)實(shí)體都可用適當(dāng)?shù)牧鞒虡?biāo)記標(biāo)出該指令。另 一方面,該實(shí)體可以在由該消費(fèi)者線程讀出之前,保證那些涉及生產(chǎn) 者/消費(fèi)者關(guān)系的寄存器不被該生產(chǎn)者線程重新定義。在另一些實(shí)施例 中,可以在這些線程之間建立同步點(diǎn),使得在該消費(fèi)者線程讀出相關(guān) 的值之前,不讓該生產(chǎn)者線程繼續(xù)進(jìn)行。盡管本發(fā)明的范圍并不受限 于此,但是在某些實(shí)施例中,所述同步點(diǎn)可以用前述的同步標(biāo)志實(shí)現(xiàn)。
例如,盡管在圖3的實(shí)施例中描述的流程標(biāo)記可以是一位的標(biāo)志,用 來(lái)指出一個(gè)操作數(shù)是處于本地位置還是處于遠(yuǎn)程位置,但在其他實(shí)施 例也可將所述位置標(biāo)志擴(kuò)展為多位,以指示在兩個(gè)以上這樣的線程中 存在。就是說(shuō),在某些實(shí)施例中,兩個(gè)以上線程可以在一個(gè)核上或在 給定的多核上執(zhí)行。在任何一個(gè)線程的執(zhí)行過(guò)程中,都可以根據(jù)該指 令中存在的流程標(biāo)記,并用包含在標(biāo)記表中或其他類似結(jié)構(gòu)上的用來(lái) 指出這些遠(yuǎn)程操作數(shù)的可用性的信息,例如通過(guò)與涉及這些多線程的 這些寄存器堆相關(guān)的同步標(biāo)志,訪問(wèn)與其他線程相關(guān)的寄存器堆。
在某些實(shí)施例中,可通過(guò)動(dòng)態(tài)優(yōu)化裝置來(lái)生成代碼蹤跡(trazas de codigo)。但是,在另一些實(shí)現(xiàn)方式中,可以利用基于編譯器或其它機(jī) 制的支持,以便用流程標(biāo)記的適當(dāng)信息來(lái)生成指令。接著,參閱圖4, 其中說(shuō)明根據(jù)本發(fā)明 一個(gè)實(shí)施例生成流程標(biāo)記信息的方法的流程圖。 如圖4所示,方法300可以從將這些第一和第二線程用的同步標(biāo)志初 始化為不同步的狀態(tài)(方框310)開(kāi)始。例如,兩個(gè)線程可由動(dòng)態(tài)優(yōu) 化裝置生成的代碼蹤跡組成。進(jìn)一步說(shuō),這多個(gè)代碼蹤跡可以由處理 器的單核的不同線程,即第一和第二線程同時(shí)執(zhí)行。為了保證這些不 同的操作數(shù)的適當(dāng)屬性,這些同步標(biāo)志可初始化在一個(gè)不同步的狀態(tài) 上,例如,在某些實(shí)施例中設(shè)置邏輯值0。注意,由于這些代碼蹤跡 是由該動(dòng)態(tài)優(yōu)化裝置識(shí)別的,該優(yōu)化裝置可以控制這些寄存器中的哪 些涉及生產(chǎn)者/消費(fèi)者的寄存器,而且該優(yōu)化裝置也可以控制一個(gè)同步 點(diǎn)即這些操作數(shù)可以同步的瞬間的出現(xiàn)。盡管一個(gè)遠(yuǎn)程使用的寄存 器,可以在該生產(chǎn)者線程中定義許多次,但是該優(yōu)化裝置可以保證一 個(gè)寄存器在被消費(fèi)者利用之前的最終定義是建立生產(chǎn)者/消費(fèi)者關(guān)系
14的定義。
接著,還是參閱圖4,控制可轉(zhuǎn)移到菱形框320,其中可以確定一 個(gè)操作數(shù)是否只由單一的線程產(chǎn)生并使用。操作數(shù)被單一的線程利用 時(shí),控制可以進(jìn)到方框330,該框中可指出使用該操作數(shù)的指令的流 程標(biāo)記中的使用位置。具體地說(shuō),若該操作數(shù)已經(jīng)使用,無(wú)論是作為 源操作數(shù)還是作為目的操作數(shù),則對(duì)應(yīng)的位置標(biāo)志,亦即流程標(biāo)記, 可以處于復(fù)位狀態(tài)(例如,邏輯O),以指出該操作數(shù)只是本地使用。
還是參閱圖4,若相反地在菱形框320中判定, 一個(gè)操作數(shù)^f皮多 個(gè)線程利用,則控制可進(jìn)到菱形框340。在菱形框340中可以確定, 所識(shí)別的操作數(shù)是否為要由另一線程消費(fèi)的目的操作數(shù)。若如此,控 制移動(dòng)到方框350,其中可以根據(jù)生產(chǎn)者指令的流程標(biāo)記識(shí)別目的操 作數(shù)的本地使用,直至該目的操作數(shù)的最終定義(亦即,由消費(fèi)者線 程使用前的最終定義)。 一旦達(dá)到該最終定義,控制便移動(dòng)到方框360, 其中可以用流程標(biāo)記標(biāo)示該指令,以指出該目的操作數(shù)的遠(yuǎn)程使用。 換句話說(shuō),該指令可具有一個(gè)目的操作數(shù)用的處于設(shè)置狀態(tài)(例如, 邏輯1 )的位置標(biāo)志??刂茝姆娇?60轉(zhuǎn)移到菱形框370,在其中可 確定是否要由另一個(gè)線程生成源操作數(shù)。若非如此,則控制回到方框 330,前面已經(jīng)解釋,其中與操作數(shù)相關(guān)的流程標(biāo)記可以指示為本地 (亦即,用邏輯值O)。
還是參閱圖4,反之,若在菱形框370上判定該源操作數(shù)要由另 一個(gè)線程生成,控制可進(jìn)到方框380,在其中遠(yuǎn)程源操作數(shù)的使用可 在那些線程的消費(fèi)者指令的流程標(biāo)記上指出,直到一條包含在同 一線 程中的指令重新定義該寄存器(方框380)。就是說(shuō),該消費(fèi)者線程的 指令可以訪問(wèn)該遠(yuǎn)程寄存器堆的數(shù)據(jù)值,直到該消費(fèi)者線程重新定義 該寄存器。當(dāng)上述事件產(chǎn)生(如果有產(chǎn)生)時(shí),控制轉(zhuǎn)移到方框390, 其中可在用戶指令的流程標(biāo)記上指明源操作數(shù)的本地使用。就是說(shuō), 當(dāng)一條消費(fèi)者指令重新定義該寄存器,從而寫入一個(gè)不同于當(dāng)時(shí)使用 的值作為在同一線程中后續(xù)指令的源操作數(shù)時(shí),該同一線程的后續(xù)指 令可以具有與之相關(guān)的流程標(biāo)記,以指出現(xiàn)在可以用本地形式獲得該源操作數(shù)。盡管在圖4的實(shí)施例中用此具體實(shí)現(xiàn)方式作了說(shuō)明,但是 本發(fā)明的范圍并不受限于此。
這樣,在另一些實(shí)施例中,在同一核上運(yùn)行的兩個(gè)線程可通過(guò)互 相直接訪問(wèn)另 一線程的寄存器來(lái)實(shí)現(xiàn)同步。通過(guò)在寄存器層面上訪問(wèn) 信息,有可能減少與經(jīng)由 一個(gè)間接存儲(chǔ)器獲得不同線程的信息相關(guān)的 同步組織活動(dòng),且可以減輕存儲(chǔ)器帶寬的問(wèn)題。通過(guò)使用呈現(xiàn)在該核 上的寄存器堆的寄存器,可以在運(yùn)行于同 一核上的兩個(gè)線程之間進(jìn)行 64位或128位數(shù)值的通信。這樣,可以不必重現(xiàn)或復(fù)制剛剛存^:的線 程的寄存器的狀態(tài),因?yàn)檫@些要由剛存放的線程利用的操作數(shù)可以直 接在存放的線程的寄存器堆中讀取。本發(fā)明的范圍并不受限于此,一 些實(shí)現(xiàn)方式能夠以細(xì)化的順序處理范例加以利用,諸如運(yùn)行在多線程 中,例如在輔助順序處理和前行的(de recorrido hacia delante)線程中。 因此,呈現(xiàn)在這些線程中的指令可以簡(jiǎn)化,因?yàn)榭梢员苊鈴?fù)制,或者 重現(xiàn)第一寄存器堆的體系結(jié)構(gòu)狀態(tài)的其他指令。相反地,這些附加的 線程可以直接從另一線程的寄存器堆獲得所需的信息。
這些實(shí)施例可以在多種不同類型的系統(tǒng)上實(shí)現(xiàn)。接著,參閱圖5, 其中說(shuō)明根據(jù)本發(fā)明一個(gè)實(shí)施例系統(tǒng)的框圖。如圖5所示,多處理器 系統(tǒng)500是一個(gè)點(diǎn)到點(diǎn)連接的系統(tǒng),并包括經(jīng)由點(diǎn)到點(diǎn)550互連的第 一處理器570和第二處理器580。如圖5所示,處理器570和580中 的每一個(gè)都可以是一個(gè)多核處理器,包括處理器的第一和第二核(即 處理器的核574a和574b和處理器的核584a和584b)。注意,這些核 中的每一個(gè)都可以包括多個(gè)寄存器堆,它們中的每一個(gè)都指定由不同 的線程利用。另一方面,各個(gè)核可以包括硬件、軟件或固件,或永久 地安裝在硬件上的程序,以便允許通過(guò)根據(jù)本發(fā)明一個(gè)實(shí)施例的流程 標(biāo)記和同步標(biāo)志,直接由消費(fèi)者線程訪問(wèn)生產(chǎn)者線程的寄存器堆。此 外,在某些實(shí)現(xiàn)方式中,運(yùn)行在處理器核574a上的線程可以訪問(wèn)與運(yùn) 行在處理器的核574b上的線程相關(guān)聯(lián)的寄存器堆,反之亦然。
第一處理器570還包括點(diǎn)到點(diǎn)接口(P-P)576和588。類似地,第 二處理器580包括P-P接口 586和588。如圖5所示,存儲(chǔ)器控制器的集線器(MCH) 572和582將這些處理器連接到各自的存儲(chǔ)器,即 存儲(chǔ)器532和存儲(chǔ)器534,它們可以是局部地固定在各自處理器上的 主存儲(chǔ)器的一部分。
第一處理器570和第二處理器580可以分別經(jīng)由P-P互連552和 554連接到一個(gè)芯片裝置590上。如圖5所示,芯片裝置590包括P-P 接口 594和598。另一方面,芯片裝置590包括一個(gè)將芯片裝置590 連接到高性能圖形發(fā)生裝置538上的接口 592。在一個(gè)實(shí)施例中,可 以利用先進(jìn)圖形端口 ( AGP-"Advanced Graphics Port")總線539將圖 形發(fā)生裝置538連接到芯片裝置590。 AGP總線539符合Intel公司發(fā) 表于1998年5月4日的加速圖形端口的接口規(guī)格,2.0版。作為另一 方案,點(diǎn)到點(diǎn)互連539也可連^"這些部件。
芯片裝置590又可經(jīng)由接口 596連接到第一總線516。在一個(gè)實(shí) 施例中,根據(jù)日期為1995年6月的PCI本地總線規(guī)格(2.1版)的 規(guī)定,第一總線516可以由外部設(shè)備部件互連總線(PCI-"Peripheral Component Interconnect")諸如PCI Express 總線等總線或其他的第 三代輸入/輸出(E/S-"I/0")互連總線構(gòu)成,但本發(fā)明的范圍并不受限 于此。
如圖5所示,通過(guò)同將第一總線516與第二總線520連接的總線 橋518的連接,可以將另一些輸入/輸出裝置514連接到第一總線516。 在一個(gè)實(shí)施例中,第二總線520可以是一個(gè)低引線總線(LPC-"lowpin bus")??梢詫⒉煌难b置,包括例如鍵盤/鼠標(biāo)522、通信裝置526 和數(shù)據(jù)存儲(chǔ)器單元528,諸如盤驅(qū)動(dòng)裝置或其他海量存儲(chǔ)器耦合到第 二總線520上,在一個(gè)實(shí)施例中,這些存儲(chǔ)器可以包括代碼530。另 一方面,可以將音頻輸入/輸出524連接到第二總線520上。注意,也 可以采用其他體系結(jié)構(gòu)。例如,取代圖5的點(diǎn)到點(diǎn)體系結(jié)構(gòu),而采用 可以實(shí)現(xiàn)多分支總線或其他類似體系結(jié)構(gòu)的系統(tǒng)。
這些實(shí)施例可以用代碼實(shí)現(xiàn),并可以存儲(chǔ)在存儲(chǔ)介質(zhì)上,它具有 存儲(chǔ)于其上的指令,能夠以執(zhí)行指令的方式對(duì)一種系統(tǒng)進(jìn)行編程的指 令。這些存儲(chǔ)介質(zhì)可以包括任何類型的盤,包括軟盤、光盤、光盤只讀存儲(chǔ)器(CD-ROM)、可寫光盤(CD-RW)和磁光盤、半導(dǎo)體器件,諸 如只讀存儲(chǔ)器(ROM)、隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)、諸如動(dòng)態(tài)隨機(jī)訪問(wèn)存 儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(SRAM)、可擦可編程只讀存儲(chǔ)器 (EPROM)、閃存("flash memories")、電可擦可編程只讀存儲(chǔ)器 (EEPROM)、磁卡或光卡,或適宜于存儲(chǔ)電子指令的其他類型的介質(zhì), 但并不僅限于這些。
盡管本發(fā)明就數(shù)目有限的實(shí)施例作了描述,但是由此出發(fā)本專業(yè) 的技術(shù)人員會(huì)想見(jiàn)許多修改和變動(dòng)。后附的權(quán)利要求書用來(lái)在本發(fā)明 的主旨和范圍內(nèi)涵蓋所有這些修改和變動(dòng)。
權(quán)利要求
1.一種方法,包括由一個(gè)核訪問(wèn)一個(gè)第二線程的寄存器堆,以在所述核上執(zhí)行第一線程的指令的期間為第一線程的指令獲得源操作數(shù)。
2. 根據(jù)權(quán)利要求1的方法,還包括若與所述源操作數(shù)識(shí)別的寄存器相關(guān)聯(lián)的同步標(biāo)志處于第一狀 態(tài),這表示第二線程的生產(chǎn)者操作尚未結(jié)束,則避免執(zhí)行第一線程的 所述指令;而若與所述寄存器相關(guān)聯(lián)的同步標(biāo)志處于第二狀態(tài),這表示第二線 程的生產(chǎn)者操作已經(jīng)結(jié)束,則執(zhí)行第一線程的所述指令。
3. 根據(jù)權(quán)利要求2的方法,還包括在生產(chǎn)者操作完成后,隨即 調(diào)整所述寄存器的標(biāo)記表中一個(gè)條目的同步標(biāo)志。
4. 根據(jù)權(quán)利要求3的方法,還包括在所述生產(chǎn)者操作完成后, 隨即調(diào)整與第一線程相關(guān)聯(lián)的寄存器的標(biāo)記表的條目中的同步標(biāo)志, 并使與第二線程相關(guān)聯(lián)的寄存器的標(biāo)記表的條目中的同步標(biāo)志復(fù)位。
5. 根據(jù)權(quán)利要求2的方法,還包括在所述核上執(zhí)行第二線程的 生產(chǎn)者操作和第一線程的指令,以使所述核包含一個(gè)第一線程和第二 線程均在其上運(yùn)行的公共核。
6. 根據(jù)權(quán)利要求1的方法,還包括對(duì)第一線程的指令進(jìn)行譯碼, 使得所述指令包含一個(gè)源操作數(shù)的位置標(biāo)志,所述位置標(biāo)志指示在第 二線程的寄存器堆的一個(gè)寄存器中的所述源操作數(shù)的位置。
7. 根據(jù)權(quán)利要求6的方法,還包括將第一線程指令的結(jié)果存儲(chǔ) 在目的寄存器中,并根據(jù)存在于第一線程的指令中的對(duì)應(yīng)的目的操作 數(shù)的位置標(biāo)志,更新一個(gè)目的地寄存器的同步標(biāo)志。
8. —種裝置,包括用來(lái)存儲(chǔ)一些條目的存儲(chǔ)器,其中每一條目對(duì)應(yīng)于第一線程的第 一寄存器堆的一個(gè)寄存器,使得所述條目須各自包含同步標(biāo)志,用來(lái)指示須將一個(gè)與第二線程的第二寄存器堆對(duì)應(yīng)的寄存器作為目的操作數(shù)使用的第二線程的一個(gè)生產(chǎn)者操作是否已完成。
9. 根據(jù)權(quán)利要求8的裝置,還包括控制器,用來(lái)在第二線程,執(zhí)行 了一條關(guān)于將第二寄存器堆的對(duì)應(yīng)的寄存內(nèi)容用作目的操作數(shù)的指 令后,隨即更新對(duì)應(yīng)的寄存器的一個(gè)條目中的第一線程的同步標(biāo)志, 使所述指令包括一個(gè)目的操作數(shù)的位置標(biāo)志,指示對(duì)應(yīng)的寄存器由第 一線程使用。
10. 根據(jù)權(quán)利要求8的裝置,其中,所述存儲(chǔ)器包含一個(gè)核的標(biāo) 記表。
11. 根據(jù)權(quán)利要求10的裝置,其中,所述核利用第一寄存器堆和 第二寄存器堆,同時(shí)執(zhí)行第一線程和第二線程。
12. 根據(jù)權(quán)利要求ll的裝置,其中,所述核在第一線程執(zhí)行期間 訪問(wèn)第二寄存器堆。
13. 根據(jù)權(quán)利要求12的裝置,其中,所述核根據(jù)第一線程的一條 指令的源操作數(shù)的位置標(biāo)志,訪問(wèn)第二寄存器堆。
14. 根據(jù)權(quán)利要求13的裝置,其中,所述核還根椐對(duì)應(yīng)寄存器的 一個(gè)條目的同步標(biāo)志,訪問(wèn)第二寄存器堆。
15. 根據(jù)權(quán)利要求8的裝置,所述裝置包括一個(gè)核,該核包含存 儲(chǔ)器、第一寄存器堆、第二寄存器堆和執(zhí)行單元,使得所述^f丸行單元 從第二寄存器堆的一個(gè)寄存器獲得一個(gè)源操作數(shù),以根據(jù)所述指令的 位置標(biāo)志執(zhí)行第一線程的一條指令。
16. 根據(jù)權(quán)利要求15的裝置,其中,若一個(gè)條目的同步標(biāo)志與第 二寄存器堆的寄存器有關(guān),這表示第二線程的生產(chǎn)者指令處于尚未結(jié) 束的狀態(tài),則避免執(zhí)行第一線程的指令。
17. —種系統(tǒng),包括第一寄存器堆,包含用來(lái)存儲(chǔ)第一線程的數(shù)據(jù)的多個(gè)寄存器; 第二寄存器堆,包含用來(lái)存儲(chǔ)第二線程的數(shù)據(jù)的多個(gè)寄存器; 執(zhí)行單元,連接到第一寄存器堆和第二寄存器堆,以執(zhí)行第一線 程和第二線程的指令,使得所述執(zhí)行單元可用來(lái)訪問(wèn)第一寄存器堆, 以獲得一個(gè)用于執(zhí)行第二線程的一條指令的源操作數(shù);以及連接到所述執(zhí)行單元的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器。
18. 根據(jù)權(quán)利要求17的系統(tǒng),其中,所述執(zhí)行單元用來(lái)根據(jù)第二 線程的指令的指示來(lái)訪問(wèn)第一寄存器堆,該指示表示在所述寄存器堆 中存在源操作數(shù)。
19. 根據(jù)權(quán)利要求18的系統(tǒng),還包括指令發(fā)送器,連接到執(zhí)行單 元,暫停第二線程的指令的分配,直至關(guān)系到與源操作數(shù)相關(guān)的寄存 器的同步標(biāo)志處于激活狀態(tài)。
20. 根據(jù)權(quán)利要求19的系統(tǒng),其中,所述指令發(fā)送器在執(zhí)行第一 線程的一條生產(chǎn)者指令后,隨即寫入與所述寄存器相關(guān)的同步標(biāo)志。
21. 根據(jù)權(quán)利要求20的系統(tǒng),其中,所述指令發(fā)送器在執(zhí)行第一 線程的一條生產(chǎn)者指令后,隨即另外寫入與所述寄存器相關(guān)的準(zhǔn)備或 備置標(biāo)志。
22. 根據(jù)權(quán)利要求21的系統(tǒng),其中,所述指令發(fā)送器在標(biāo)記表的 與所述寄存器對(duì)應(yīng)的條目中寫入同步標(biāo)志和備置標(biāo)志。
23. 根據(jù)權(quán)利要求17的系統(tǒng),還包括第一核,其中包含所述執(zhí)行 單元、第一寄存器堆和第二寄存器堆,使得第一核處置或處理第一線 程和第二線程的指令。
24. 根據(jù)權(quán)利要求23的系統(tǒng),還包括第二核,其中包含第二執(zhí)行 單元和第三寄存器堆,使得第二核用來(lái)處理第三線程的指令,并使得 第二核訪問(wèn)第一寄存器堆和第二寄存器堆中的至少一個(gè),以便為在第三線程中使用而獲得一個(gè)源操作數(shù)。
25. 根據(jù)權(quán)利要求17的系統(tǒng),還包括一個(gè)合成寄存器堆,其中包 含第一寄存器堆和第二寄存器堆。
26. —種機(jī)器可讀介質(zhì),其中存儲(chǔ)有若干指令,若一個(gè)機(jī)器執(zhí)行 這些指令,將使所述機(jī)器實(shí)現(xiàn)包含如下動(dòng)作的方法如果所述指令包含關(guān)于針對(duì)第一線程的寄存器的源操作數(shù)的指 示,則訪問(wèn)第一線程的寄存器堆,以獲得用于第二線程的一條指令之 執(zhí)行的寄存器的源操作數(shù)。
27. 根據(jù)權(quán)利要求26的機(jī)器可讀介質(zhì),其中,所述方法還包括如果所述指令包含關(guān)于針對(duì)第二線程的寄存器的源操作數(shù)的指示,則 訪問(wèn)第二線程的寄存器堆,以獲得用于第 一線程的 一條指令之執(zhí)行的 寄存器的源操作數(shù)。
28. 根據(jù)權(quán)利要求26的機(jī)器可讀介質(zhì),其中,所述方法還包括 如果所述標(biāo)志指示第一線程的生產(chǎn)者操作已經(jīng)結(jié)束,則避免執(zhí)行第二 線程的所述指令,直到與所述寄存器的源操作數(shù)所識(shí)別的寄存器相關(guān) 的標(biāo)志激活。
29. 根據(jù)權(quán)利要求26的機(jī)器可讀介質(zhì),其中,所述方法還包括 如果所述指令包含關(guān)于針對(duì)第一線程的寄存器目的操作數(shù)的指示,則 執(zhí)行第二線程的指令,并通過(guò)它激活與一個(gè)由第二線程的指令的寄存 器目的操作數(shù)所識(shí)別的寄存器相關(guān)的同步標(biāo)志。
30. 根據(jù)權(quán)利要求26的機(jī)器可讀介質(zhì),其中,所述方法還包括 在第一線程之后存放第二線程,而不在第二線程中重現(xiàn)第一線程的狀 態(tài),并在第二線程的指令的執(zhí)行期間使第二線程訪問(wèn)第一線程的寄存 器堆。
全文摘要
本發(fā)明涉及處理器中多線程之間的通信。在一個(gè)實(shí)施例中,本發(fā)明包括一種在實(shí)施或執(zhí)行第二線程時(shí)訪問(wèn)與第一線程相關(guān)的寄存器的方法,該方法可用來(lái)在與源操作數(shù)相關(guān)的同步標(biāo)志指示第二線程的生產(chǎn)者操作尚未結(jié)束時(shí),避免執(zhí)行要從第二線程的寄存器堆訪問(wèn)源操作數(shù)的第一線程的指令,而在所述同步標(biāo)志指示第二線程的生產(chǎn)者操作已經(jīng)結(jié)束時(shí)執(zhí)行所述指令。此外,還對(duì)其他實(shí)施例作了描述并提出了權(quán)利要求。
文檔編號(hào)G06F9/44GK101529377SQ200680056225
公開(kāi)日2009年9月9日 申請(qǐng)日期2006年10月27日 優(yōu)先權(quán)日2006年10月27日
發(fā)明者A·岡薩雷斯, E·吉伯特, F·拉托雷, J·A·皮內(nèi)羅, J·M·科迪納, L·羅佩斯 申請(qǐng)人:英特爾公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
巩义市| 廉江市| 肇庆市| 进贤县| 双峰县| 兴国县| 邯郸市| 绩溪县| 慈溪市| 玉门市| 嫩江县| 循化| 乌拉特中旗| 贺兰县| 阿拉尔市| 临漳县| 当阳市| 五家渠市| 长阳| 伊春市| 兴业县| 呼伦贝尔市| 北碚区| 白城市| 柏乡县| 高青县| 常熟市| 台安县| 许昌县| 灵武市| 前郭尔| 广南县| 南宫市| 永胜县| 九寨沟县| 靖江市| 双城市| 内丘县| 古丈县| 十堰市| 闽清县|