亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

帶進(jìn)位的原子加法指令的制作方法

文檔序號(hào):11635144閱讀:324來(lái)源:國(guó)知局
帶進(jìn)位的原子加法指令的制造方法與工藝

本公開(kāi)涉及數(shù)據(jù)處理系統(tǒng)領(lǐng)域。



背景技術(shù):

一些數(shù)據(jù)處理系統(tǒng)可以支持原子指令,該原子指令訪問(wèn)存儲(chǔ)器中的數(shù)據(jù)值并且被執(zhí)行時(shí)會(huì)使得執(zhí)行該指令的結(jié)果與可以在指令的執(zhí)行期間獨(dú)占訪問(wèn)存儲(chǔ)器中的數(shù)據(jù)值的指令相一致,例如,沒(méi)有其他指令可以以重疊方式訪問(wèn)同一數(shù)據(jù)值來(lái)生成與在其執(zhí)行期間已獨(dú)占訪問(wèn)過(guò)該數(shù)據(jù)值的原子指令不一致的結(jié)果。原子指令用于嘗試隔離對(duì)各個(gè)指令的執(zhí)行,從而不存在不適當(dāng)和/或不期望的與其他指令的執(zhí)行的交互。



技術(shù)實(shí)現(xiàn)要素:

本公開(kāi)的至少一些實(shí)施例提供了用于處理數(shù)據(jù)的裝置,包括:處理電路,用于執(zhí)行由程序指令指定的處理操作;以及指令解碼器,用于解碼帶進(jìn)位的原子加法指令以控制處理電路執(zhí)行下述操作:以與在原子操作期間獨(dú)占訪問(wèn)數(shù)據(jù)值相一致的方式,將對(duì)加數(shù)操作數(shù)值和存儲(chǔ)在存儲(chǔ)單元的數(shù)據(jù)值的加法作為原子操作來(lái)執(zhí)行,從而生成存儲(chǔ)在存儲(chǔ)單元的結(jié)果值以及指示加法是否生成進(jìn)位輸出的進(jìn)位值。

本公開(kāi)的至少一些另外的實(shí)施例提供了用于處理數(shù)據(jù)的裝置,包括:用于執(zhí)行由程序指令指定的處理操作的處理裝置;以及用于解碼帶進(jìn)位的原子加法指令的指令解碼裝置,以控制處理裝置以與在原子操作期間獨(dú)占訪問(wèn)數(shù)據(jù)值相一致的方式,將對(duì)加數(shù)操作數(shù)值和存儲(chǔ)在存儲(chǔ)單元的數(shù)據(jù)值的加法作為原子操作來(lái)執(zhí)行,從而生成存儲(chǔ)在存儲(chǔ)單元的結(jié)果值以及指示加法是否生成進(jìn)位輸出的進(jìn)位值。

本公開(kāi)的至少一些另外的實(shí)施例提供了一種處理數(shù)據(jù)的方法,包括:用處理電路執(zhí)行由程序指令指定的處理操作;以及解碼帶進(jìn)位的原子加法指令,以控制處理電路以與在原子操作期間獨(dú)占訪問(wèn)數(shù)據(jù)值相一致的方式,將對(duì)加數(shù)操作數(shù)值和存儲(chǔ)在存儲(chǔ)單元的數(shù)據(jù)值的加法作為原子操作來(lái)執(zhí)行,從而生成存儲(chǔ)在存儲(chǔ)單元的結(jié)果值以及指示加法是否生成進(jìn)位輸出的進(jìn)位值。

附圖說(shuō)明

現(xiàn)在將僅通過(guò)示例的方式參考附圖來(lái)描述示例實(shí)施例,其中:

圖1示意性地示出了用于執(zhí)行原子指令的數(shù)據(jù)處理系統(tǒng);

圖2示意性地示出了具有共享存儲(chǔ)器的多處理器數(shù)據(jù)處理系統(tǒng);

圖3示意性地示出了兩個(gè)線(xiàn)程的動(dòng)作,每個(gè)線(xiàn)程執(zhí)行對(duì)累加值的相應(yīng)的不同有效位部分進(jìn)行累加的帶進(jìn)位的原子加法指令序列;

圖4示意性地示出了執(zhí)行圖3所示的帶進(jìn)位的原子加法指令的相對(duì)順序;

圖5a至5g示意性地示出了對(duì)生成本地和值的帶進(jìn)位的原子加法指令序列的執(zhí)行,其中當(dāng)數(shù)據(jù)值被返回到緩存存儲(chǔ)器中時(shí),該本地和值被累加到該數(shù)據(jù)值中。

圖6是示意性地示出了在系統(tǒng)中對(duì)帶進(jìn)位的原子加法指令的使用的圖,其中該系統(tǒng)包括作為合并樹(shù)工作的用于累加到由根處理器保持的數(shù)據(jù)值的多個(gè)數(shù)據(jù)處理裝置;以及

圖7是示意性地示出在圖6的合并樹(shù)內(nèi)的節(jié)點(diǎn)的操作的流程圖。

具體實(shí)施方式

根據(jù)本公開(kāi)的至少一些示例性實(shí)施例,提供了帶進(jìn)位的原子加法指令,其作為原子操作執(zhí)行對(duì)加數(shù)操作數(shù)和存儲(chǔ)在存儲(chǔ)單元中的數(shù)據(jù)值的加法。從該帶進(jìn)位的原子加法指令生成進(jìn)位值。從原子指令生成進(jìn)位值是不常見(jiàn)的,因?yàn)檫@表示原子指令是通過(guò)該進(jìn)位值與其他指令進(jìn)行交互。這與原子指令是獨(dú)立的這一正規(guī)哲學(xué)相悖。

存儲(chǔ)單元可以具有各種不同的形式,例如,寄存器。存儲(chǔ)單元可以是存儲(chǔ)器映射的(例如,與存儲(chǔ)器地址空間內(nèi)的(一個(gè)或多個(gè))存儲(chǔ)器地址相關(guān)聯(lián))。在一些實(shí)施例中,存儲(chǔ)單元可以是諸如sram、dram之類(lèi)或類(lèi)似的存儲(chǔ)器。

盡管在各種不同情況下可用和有用,但在本公開(kāi)的一些示例性實(shí)施例中可以使用帶進(jìn)位的原子加法指令,其中加數(shù)值和數(shù)據(jù)值具有共享范圍的有效位,并且加數(shù)操作數(shù)值和數(shù)據(jù)值中的至少一個(gè)是全范圍有效位大于并包括共享范圍有效位的較大值的一部分。因此,可以通過(guò)將較大的數(shù)據(jù)值分解成分開(kāi)操作的多個(gè)數(shù)據(jù)值來(lái)表示數(shù)據(jù)寬度大于在數(shù)據(jù)處理裝置內(nèi)本地支持和操縱的值。這些單個(gè)數(shù)據(jù)值和較大數(shù)據(jù)值的有效位可以是本身可編程的,并且由與所涉及的數(shù)據(jù)值相關(guān)聯(lián)的元數(shù)據(jù)表示。在這樣的布置中,通過(guò)帶進(jìn)位的原子加法指令生成的進(jìn)位值允許支持原子指令行為,并允許通過(guò)進(jìn)位值實(shí)現(xiàn)有效位寬度較大的數(shù)據(jù)值的不同部分之間的必要交互。在這樣的布置中,可以以準(zhǔn)許實(shí)現(xiàn)用于數(shù)據(jù)操縱的整體原子行為(其實(shí)際上被分離在多個(gè)帶進(jìn)位的原子加法指令上)的方式,來(lái)將由帶進(jìn)位的原子加法指令生成的進(jìn)位值加到表示該較大數(shù)據(jù)值的下一最高有效部分的另外的帶進(jìn)位的原子加法指令的加數(shù)操作數(shù)。

可以以各種不同的方式提供進(jìn)位值,例如顯式返回操作數(shù)或通過(guò)進(jìn)位輸出標(biāo)志。在一些實(shí)施例中,帶進(jìn)位的原子加法指令還可以具有進(jìn)位輸入操作數(shù),該進(jìn)位輸入操作數(shù)在加數(shù)操作數(shù)被加到數(shù)據(jù)值之前被加到加數(shù)操作數(shù)。因此,在一些實(shí)施例中,原子指令可以具有進(jìn)位輸入值和進(jìn)位輸出值。

帶進(jìn)位的原子加法指令的一種形式的示例使用是在包括用于存儲(chǔ)數(shù)據(jù)值的緩存存儲(chǔ)器的裝置內(nèi)。如果數(shù)據(jù)值不存在于緩存存儲(chǔ)器內(nèi),則帶進(jìn)位的原子加法指令的序列可以累加出該裝置內(nèi)的相應(yīng)的加法操作數(shù)值的本地和值,隨后在數(shù)據(jù)值在緩存存儲(chǔ)器中可用時(shí),將該本地和值加到數(shù)據(jù)值。因此,不需要延遲對(duì)帶進(jìn)位的原子加法指令中的至少一些的執(zhí)行完成來(lái)等待數(shù)據(jù)值被獲取到緩存存儲(chǔ)器中。

在上述類(lèi)型的系統(tǒng)的一些示例性實(shí)施例中,可以從在裝置上執(zhí)行的相應(yīng)的程序線(xiàn)程形成帶進(jìn)位的原子加法指令的序列。在這樣的系統(tǒng)內(nèi),將其加數(shù)操作數(shù)值累加到本地和值的給定的帶進(jìn)位的原子加法指令可以返回進(jìn)位值,使得給定的帶進(jìn)位的原子加法指令可以被完成,并因此準(zhǔn)許繼續(xù)執(zhí)行包括該給定的帶進(jìn)位的原子加法指令的給定程序線(xiàn)程內(nèi)的另外的程序指令。

確保帶進(jìn)位的原子加法指令的序列的最終結(jié)果與執(zhí)行該序列的預(yù)期外部看來(lái)的執(zhí)行效果相匹配的一種方法是延遲返回該序列內(nèi)的最后的帶進(jìn)位的原子加法指令的最終進(jìn)位,直到數(shù)據(jù)值在緩存存儲(chǔ)器內(nèi)可用并且本地和值已被加到該數(shù)據(jù)值來(lái)生成最終進(jìn)位值。

帶進(jìn)位的原子加法指令的另一示例使用是在如下所述的系統(tǒng)內(nèi):該系統(tǒng)合并多個(gè)這樣的指令以生成本地和值,將輸入值返回給除了輸入指令之外的所有指令,生成隨后由另外的處理裝置執(zhí)行的輸出帶進(jìn)位的原子加法指令,其中從該另外的處理裝置接收接收到的進(jìn)位輸出值并將其傳回給針對(duì)尚未接收到其進(jìn)位輸出值的指令源。以這種方式,執(zhí)行加法的工作量可以被分散并且將所生成的值較早地返回到指令源中的至少一些,從而準(zhǔn)許這些指令源開(kāi)始執(zhí)行其他處理操作,而非等待根據(jù)別處執(zhí)行的處理的延遲返回值。

在本公開(kāi)的一些實(shí)施例中,接收到的進(jìn)位輸出值是由對(duì)給定的帶進(jìn)位的原子加法指令和一個(gè)或多個(gè)另外的帶進(jìn)位的原子加法指令進(jìn)行合并的裝置生成的針對(duì)輸出帶進(jìn)位的原子加法指令的返回值。

給定輸入和另外的輸入帶進(jìn)位的原子加法指令可以形成序列的一部分,并且在這樣的布置中,序列內(nèi)最后的指令可以被保持并與接收到的從另外的處理裝置返回的進(jìn)位輸出值相關(guān)聯(lián)。

當(dāng)裝置是用于合并帶進(jìn)位的原子加法指令的合并樹(shù)的一部分并由從跟處理裝置分支的多個(gè)處理裝置以及該根處理裝置(存儲(chǔ)原子加法要累加到的數(shù)據(jù)值)構(gòu)成時(shí),本公開(kāi)的技術(shù)可以被有用地使用。

圖1示意性地示出了包括寄存器文件4、算術(shù)/邏輯電路6、加載存儲(chǔ)單元8、指令獲取單元10、指令管線(xiàn)12、以及指令解碼器14的數(shù)據(jù)處理裝置2。在操作中,程序指令被指令提取單元10獲取并被傳送到指令管線(xiàn)12。當(dāng)程序指令到達(dá)指令管線(xiàn)12內(nèi)的解碼階段時(shí),解碼器14對(duì)這些程序指令進(jìn)行解碼以生成控制算術(shù)/邏輯電路6、加載/存儲(chǔ)單元8、和寄存器文件4的控制信號(hào),從而執(zhí)行由程序指令指定的處理操作。這些處理操作可以包括由加載存儲(chǔ)單元8對(duì)在諸如存儲(chǔ)器之類(lèi)的存儲(chǔ)單元內(nèi)的數(shù)據(jù)值執(zhí)行的加載操作和存儲(chǔ)操作。存儲(chǔ)器可以是本地緩存存儲(chǔ)器,或分層存儲(chǔ)器系統(tǒng)內(nèi)的較高級(jí)別。

加載存儲(chǔ)單元8和算術(shù)/邏輯單元6用于提供帶進(jìn)位的原子加法指令,其以原子方式(例如,以與在執(zhí)行期間執(zhí)行可獨(dú)占訪問(wèn)該數(shù)據(jù)值的指令相一致的方式)將加數(shù)操作數(shù)值加到存儲(chǔ)在指定存儲(chǔ)器地址處的數(shù)據(jù)值。應(yīng)理解的是,在本公開(kāi)的情境中,對(duì)加法指令的引用還包括作為加法指令的修改形式的減法指令(例如,加二的補(bǔ)碼)。因此,對(duì)加法指令的引用還被考慮為包括減法指令以及與加法和減法操作相對(duì)應(yīng)的帶進(jìn)位的原子加法指令。

圖2示意性地示出了數(shù)據(jù)處理系統(tǒng)16,其包括圖1形式的多個(gè)處理器(即,處理器18、20、22、24),其中每一者具有相應(yīng)的本地緩存存儲(chǔ)器26、28、30、32。本地緩存存儲(chǔ)器26、28、30、32緩存來(lái)自共享存儲(chǔ)器34的數(shù)據(jù)值。一致性控制電路36用于執(zhí)行一致性控制操作,以便管理可以由共享存儲(chǔ)器34和相應(yīng)的本地緩存存儲(chǔ)器26、28、30、32存儲(chǔ)的不同版本的數(shù)據(jù)值之間的數(shù)據(jù)一致性。處理器18、20、22、24包括用于執(zhí)行數(shù)據(jù)處理操作的處理電路(例如,在圖1的情境中,包括寄存器文件4、算術(shù)/邏輯電路6和加載/存儲(chǔ)單元8)以及用于解碼程序指令的指令解碼器14。這些程序指令包括作為原子操作執(zhí)行對(duì)加數(shù)操作數(shù)值和存儲(chǔ)在存儲(chǔ)器(例如,本地緩存存儲(chǔ)器26、28、30、32或共享存儲(chǔ)器34中的一個(gè))中的數(shù)據(jù)值的加法的帶進(jìn)位的原子加法指令,以生成存儲(chǔ)在存儲(chǔ)器中的結(jié)果值以及指示所執(zhí)行的加法是否產(chǎn)生進(jìn)位輸出的進(jìn)位值。該進(jìn)位值可以作為帶進(jìn)位的原子加法指令的返回值而被返回(或者在一些實(shí)施例中可以作為進(jìn)位標(biāo)志值而被返回)。帶進(jìn)位的原子加法指令還可以具有要加到加法操作數(shù)值的進(jìn)位輸入,該結(jié)果隨后被加到存儲(chǔ)在存儲(chǔ)器中的數(shù)據(jù)值。因此,帶進(jìn)位的原子加法指令可以具有進(jìn)位輸入和進(jìn)位輸出。

圖3和圖4示意性地示出了對(duì)來(lái)自要累加到值acc的程序執(zhí)行的兩個(gè)不同線(xiàn)程的帶進(jìn)位的原子加法指令的使用。這個(gè)累加值(acc)的全范圍有效位大于可由帶進(jìn)位的原子加法指令的單個(gè)操作數(shù)容納的有效位范圍。因此,給定帶進(jìn)位的原子加法指令的加法操作數(shù)值和數(shù)據(jù)值具有相關(guān)聯(lián)的共享范圍有效位,其對(duì)應(yīng)于與多個(gè)操作數(shù)相關(guān)聯(lián)的較大范圍有效位的一部分。作為示例,可以從三個(gè)64位值acc1、acc2和acc3(從低到高有效位順序)形成192位累加值。這些64位值中的每一個(gè)與對(duì)應(yīng)于192位累加值的有效位的較大總范圍內(nèi)的有效位范圍相對(duì)應(yīng)。

如圖3所示,第一個(gè)192位加數(shù)和第二個(gè)192位加數(shù)都可以累加到起始192位累加值。每個(gè)加數(shù)由三個(gè)64位值構(gòu)成。這些在圖3中表示為值avxy,其中x對(duì)應(yīng)于線(xiàn)程標(biāo)識(shí)符,并且y對(duì)應(yīng)于指示哪個(gè)范圍的有效位正由該加數(shù)值表示。

加數(shù)和累加值的各個(gè)部分的共享范圍有效位以及全范圍有效位可以由與這些實(shí)體中的每一者相關(guān)聯(lián)的元數(shù)據(jù)來(lái)表示??梢栽O(shè)置該元數(shù)據(jù),以便在較大的整體可能范圍的有效位內(nèi)表示有效位的值。元數(shù)據(jù)有效地將窗口指示到由圖3所示的各個(gè)操作數(shù)和集合操作數(shù)提供的較大整體范圍的有效位內(nèi)。包括圖3的各個(gè)操作數(shù)的集合較大值本身可以是最大范圍有效位的一小部分,其可以通過(guò)適當(dāng)使用元數(shù)據(jù)值來(lái)表示。

返回到圖3的示例,將第一加數(shù)和第二加數(shù)加到累加值中是關(guān)聯(lián)操作,即,第一加數(shù)值是否在第二加數(shù)值被加到累加值之前就被加到累加值無(wú)關(guān)緊要,反之亦然。此外,加法被執(zhí)行時(shí)的順序可以在不同共享范圍的有效位之間變化。因此,在步驟s11中作為第一動(dòng)作,對(duì)于有效位范圍a,將第一加數(shù)av11的相關(guān)部分加到累加值acc1的相應(yīng)共享有效位范圍部分。作為步驟s21,生成來(lái)自這次加法的進(jìn)位輸出并將其加到該加數(shù)的下一較高有效位部分即操作數(shù)ac12中。在步驟sl1的加法之后,在步驟s31處將第二加數(shù)av21的相應(yīng)的最低有效位部分加到累加值(其已通過(guò)加上第一加數(shù)的相關(guān)部分而被修改)。在步驟s41處生成來(lái)自第二次加法的進(jìn)位輸出值作為值c21,并將其加到操作數(shù)av22中。因此,關(guān)于第一加數(shù)、第二加數(shù)和累加值的最低有效部分,要在第二加數(shù)的加法之前執(zhí)行第一加數(shù)部分的加法。第一加數(shù)部分的加法與(acc1+av11)相對(duì)應(yīng)并生成進(jìn)位輸出值c11。在執(zhí)行完該加法之后,第二加法將值av21加到累加值acc1,并生成進(jìn)位輸出值c21。

關(guān)于操作數(shù)的有效位b部分,在所示出的示例中,將第一和第二加數(shù)的相關(guān)部分加到累加值acc2的對(duì)應(yīng)有效部分的順序與有效位部分a中的順序相反。因此,在步驟s12處將av22加到累加值acc2。隨后在步驟s22處從該加法中生成進(jìn)位輸出c22并將其加到操作數(shù)av23中。隨后,在步驟s32處,將來(lái)自第一加數(shù)av12的操作數(shù)加到有效位部分b的累加值中。在步驟s42處生成來(lái)自該加法的進(jìn)位輸出c12并將其加到操作數(shù)av13中。因此,關(guān)于有效位部分b,將加數(shù)累加到累加值的順序相對(duì)于有效位部分a相反。

最后,對(duì)于有效位部分c,在步驟s13處將來(lái)自第一加數(shù)的操作數(shù)av13加到累加值acc3的相應(yīng)部分,并在步驟s23處生成進(jìn)位輸出c13。隨后,在步驟s33處將操作數(shù)av23加到累加值acc3,并在步驟s43處生成進(jìn)位輸出c23。因此,將操作數(shù)加到累加值的順序與有效位范圍a中的順序相同,而與有效位范圍b中的順序相反。

將圖3中示出的到累加值的加法中的每一者作為由帶進(jìn)位的原子加法指令指定的帶進(jìn)位的原子加法操作來(lái)執(zhí)行。每個(gè)有效位范圍部分內(nèi)的關(guān)聯(lián)性起到以下效果:可以改變每個(gè)有效位范圍部分內(nèi)的加法的順序,而不影響最終的結(jié)果。將來(lái)自每次加法的進(jìn)位輸出值提供給下一部分的加數(shù)操作數(shù)(形成總加數(shù)的一部分)并且在下一部分自身的加法被執(zhí)行之前被加到該部分的加數(shù)操作數(shù)中。在可以在不同有效位范圍部分中使用的順序中的這種變化起到以下效果:在整個(gè)計(jì)算過(guò)程中,由累加操作數(shù)acc1、acc2和acc3(內(nèi)存表示)表示的值可能不表示任何真實(shí)有意義的值,但是當(dāng)所有帶進(jìn)位的原子加法指令都被執(zhí)行結(jié)束時(shí),存儲(chǔ)在存儲(chǔ)器內(nèi)的總累加值(acc3:acc2:acc1)中的最終結(jié)果將是正確的,并且所有進(jìn)位將被適當(dāng)?shù)胤从场S捎趦?nèi)存表示可能不會(huì)在任何時(shí)候都是有意義的,所以存在不能使用本技術(shù)的一些用例,但還有大量的在其中這個(gè)問(wèn)題并不成問(wèn)題而且本技術(shù)可以被有用使用的其他用例。

其他示例實(shí)施例可以使用不同位寬的加數(shù)和內(nèi)存累加器,例如,64位加數(shù)到192位累加器。在這種情況下,當(dāng)沒(méi)有進(jìn)位輸出時(shí),通常單個(gè)64位aaddc就足夠了。當(dāng)有一個(gè)進(jìn)位時(shí),則偶爾需要兩個(gè)aaddc指令,而當(dāng)有兩個(gè)進(jìn)位時(shí),則罕見(jiàn)地需要三個(gè)aaddc指令。這些情況是圖3的布置的特殊情況,在其中當(dāng)未生成進(jìn)位時(shí)支持“早退”。

圖4示意性地示出了針對(duì)分別對(duì)應(yīng)于圖3的第一加數(shù)值和第二加數(shù)值的兩個(gè)線(xiàn)程中的每一者對(duì)帶進(jìn)位的原子加法指令(aaddc)的執(zhí)行。相對(duì)于時(shí)間線(xiàn)示出這些程序指令的執(zhí)行。在圖4的示例中,首先執(zhí)行針對(duì)第一線(xiàn)程的最低有效部分的帶進(jìn)位的原子加法指令(即aadddc11)。之后是針對(duì)第二線(xiàn)程的最低有效位部分和中間有效位部分的帶進(jìn)位的原子加法指令,即aaddc21和aaddc22。此后,執(zhí)行針對(duì)第一線(xiàn)程的中間有效部分和最高有效部分的帶進(jìn)位的原子加法指令,即aaddc12和aaddc13。最后,執(zhí)行針對(duì)第二線(xiàn)程最高有效部分的帶進(jìn)位的原子加法指令(即,aaddc23)。在每個(gè)線(xiàn)程內(nèi),帶進(jìn)位的原子加法指令按其有效位順序被執(zhí)行,并具有根據(jù)需要在其間傳播的進(jìn)位信號(hào)。在線(xiàn)程之間,順序是關(guān)聯(lián)的,并且可以被改變以適應(yīng)系統(tǒng)的要求。線(xiàn)程之間的關(guān)聯(lián)行為允許指令調(diào)度中更大的自由度。

圖5a至5g示意性地示出了在具有用于存儲(chǔ)來(lái)自共享存儲(chǔ)器34的數(shù)據(jù)緩存行的緩存存儲(chǔ)器38的系統(tǒng)的情境中使用帶進(jìn)位的原子加法指令。輸入隊(duì)列40包括分別來(lái)自程序線(xiàn)程a、b、c和d的帶進(jìn)位的原子加法指令(aaddc)。處理電路42用于在被加的數(shù)據(jù)值不存在于高速緩存38內(nèi)時(shí)通過(guò)使用本地累加器46累加出本地和值44來(lái)執(zhí)行這些aaddc指令。等待其返回操作數(shù)的指令停駐在停駐操作隊(duì)列48內(nèi)。當(dāng)指令已被執(zhí)行并且具有其所有返回操作數(shù)時(shí),則將其發(fā)送到輸出隊(duì)列50。

圖5a示出了線(xiàn)程a的加數(shù)值0x01被加,初始本地和值44為0x00(“0x”表示十六進(jìn)制數(shù))的情形。來(lái)自共享存儲(chǔ)器34的數(shù)據(jù)值不存在于高速緩存36中。

圖5b示出了對(duì)來(lái)自線(xiàn)程b的第二個(gè)帶進(jìn)位的原子加法指令aaddc-0x10的執(zhí)行,其中線(xiàn)程b具有加數(shù)操作數(shù)值0x10并被累加到本地和44。線(xiàn)程a的aaddc指令停駐在停駐操作隊(duì)列48。

圖5c示出了線(xiàn)程a的指示未發(fā)生進(jìn)位的返回進(jìn)位值被返回的下一循環(huán)。同時(shí),線(xiàn)程c的加數(shù)操作數(shù)值0xf0被加到本地和值440x11,以生成更新的本地和值。

圖5d示出了線(xiàn)程d加法操作數(shù)值0x04被加到本地和值0x01中以生成更新的本地和值0x04。將圖5c的先前加法所生成的進(jìn)位作為如圖所示的與線(xiàn)程b相關(guān)聯(lián)的返回進(jìn)位輸出值來(lái)發(fā)送。因此,線(xiàn)程b與進(jìn)位輸出值相關(guān)聯(lián),而該進(jìn)位輸出值實(shí)際上是由相對(duì)于線(xiàn)程c執(zhí)行的加法生成的。

圖5e示出了在執(zhí)行完線(xiàn)程d的最后的帶進(jìn)位的原子加法指令之后,將其加到本地和值44中以生成結(jié)果0x05的情形。同時(shí),與線(xiàn)程c相關(guān)聯(lián)并與線(xiàn)程d的加數(shù)操作數(shù)值的加法相對(duì)應(yīng)的返回進(jìn)位輸出值被傳出,隨后為零。留下線(xiàn)程d進(jìn)行停駐操作。

應(yīng)理解的是,線(xiàn)程a、b、c和d的帶進(jìn)位的原子加法指令中的每一者已相對(duì)于本地和值被執(zhí)行,但還未按預(yù)期相對(duì)于存儲(chǔ)在共享存儲(chǔ)器34中的數(shù)據(jù)值被執(zhí)行。圖5f示出了如何將數(shù)據(jù)值0xfc從共享存儲(chǔ)器34返回到緩存存儲(chǔ)器38,隨后將本地和值0x05加到其上,以便從線(xiàn)程d生成針對(duì)最后停駐操作的返回進(jìn)位輸出值。在圖5g的示例中,存儲(chǔ)到數(shù)據(jù)值(當(dāng)前保存在高速緩存38中)的最終結(jié)果是具有最終進(jìn)位輸出值為1的數(shù)據(jù)值0x01。

線(xiàn)程d是線(xiàn)程序列中的最后一個(gè)線(xiàn)程,并且延遲對(duì)返回進(jìn)位輸出值的返回,直到執(zhí)行完與數(shù)據(jù)值的最后一次加法。其他線(xiàn)程a、b、c在執(zhí)行與數(shù)據(jù)值的最后一次加法之前就返回提供給它們的返回進(jìn)位輸出值,并且因此這些線(xiàn)程可以被釋放來(lái)執(zhí)行比等待數(shù)據(jù)值返回到高速緩存38更早的進(jìn)一步處理操作。因此,加法操作數(shù)在本地和值44內(nèi)被累加,并返回除了最后一個(gè)指令之外的所有指令的返回進(jìn)位輸出值。當(dāng)數(shù)據(jù)值變?yōu)榭捎玫臅r(shí),則將本地和值加到該數(shù)據(jù)值上,并且可以生成最終的返回進(jìn)位輸出值并針對(duì)線(xiàn)程d的指令將其返回。

圖6示意性地示出了在另一情境中對(duì)帶進(jìn)位的原子加法指令的使用。這個(gè)情境是具有2:1扇入的合并樹(shù),用于執(zhí)行帶進(jìn)位的原子加法指令。圖6的合并樹(shù)內(nèi)的合并節(jié)點(diǎn)中的每一者表示從分層結(jié)構(gòu)中較高級(jí)別的處理裝置接收多個(gè)帶進(jìn)位的原子加法指令的處理裝置(如圖6所示)。層級(jí)中的最高級(jí)別處是處理裝置p10至p17,其各自輸出帶進(jìn)位的原子加法指令。下一級(jí)別是合并處理器p20至p23。下一級(jí)別是合并處理器p30和p31。最后,在合并處理器之間是處理器p40。保存要進(jìn)行累加(相加)的數(shù)據(jù)值52的處理裝置是處理器proot。在圖6的層級(jí)中最高級(jí)別和圖6的層級(jí)中的根之間的節(jié)點(diǎn)處的合并處理器各自接收帶進(jìn)位的原子加法指令并生成一個(gè)要傳遞到分層結(jié)構(gòu)內(nèi)的下一個(gè)較低級(jí)別的輸出帶進(jìn)位的原子加法指令,即2:1扇入。當(dāng)節(jié)點(diǎn)已根據(jù)其接收到的帶進(jìn)位的原子加法指令的加數(shù)操作數(shù)形成本地和值時(shí),則將返回進(jìn)位輸出操作數(shù)從每個(gè)合并節(jié)點(diǎn)返回到從其接收帶進(jìn)位的原子加法指令的第一指令源。帶進(jìn)位的原子加法指令中的第二個(gè)未被提供其返回進(jìn)位輸出值,并且其被保持,直到該節(jié)點(diǎn)接收到關(guān)于其生成的輸出帶進(jìn)位的原子加法指令的返回進(jìn)位輸出值。圖6中示出的扇入是2:1,但應(yīng)理解的是,若需要也可以支持更高級(jí)別的扇入。

圖6的合并樹(shù)內(nèi)的每個(gè)合并節(jié)點(diǎn)都接收給定的輸入帶進(jìn)位的原子加法指令(針對(duì)其的返回將被延遲)和一個(gè)或多個(gè)另外的輸入帶進(jìn)位的原子加法指令。該節(jié)點(diǎn)執(zhí)行對(duì)給定的輸入帶進(jìn)位的原子加法指令的給定的加數(shù)操作數(shù)值和一個(gè)或多個(gè)另外的輸入帶進(jìn)位的原子加法指令的一個(gè)或多個(gè)另外的輸入加數(shù)操作數(shù)值的本地加法,以生成本地和值和一個(gè)或多個(gè)本地進(jìn)位輸出值。將這些一個(gè)或多個(gè)本地進(jìn)位輸出值作為相應(yīng)的返回值發(fā)送到一個(gè)或多個(gè)另外的指令的一個(gè)或多個(gè)另外的指令源。該節(jié)點(diǎn)生成將本地和值指定為其加數(shù)操作數(shù)值的輸出帶進(jìn)位的原子加法指令,并將其傳遞到圖6的合并樹(shù)中的下一個(gè)較低級(jí)別。隨后該節(jié)點(diǎn)等待,直到其接收到關(guān)于該輸出帶進(jìn)位的原子加法指令的被接收的進(jìn)位輸出值,并且當(dāng)接收到該值時(shí),將其作為返回值發(fā)送到正等待其返回進(jìn)位輸出值的給定指令源。

在合并樹(shù)中的根級(jí)別處,節(jié)點(diǎn)proot接收以原子方式對(duì)所存儲(chǔ)的數(shù)據(jù)值52執(zhí)行并生成返回值的單個(gè)帶進(jìn)位的原子加法指令。根節(jié)點(diǎn)proot接收的帶進(jìn)位的原子加法指令的加數(shù)操作數(shù)值是層級(jí)中的節(jié)點(diǎn)p10到p17的所有加數(shù)操作數(shù)的總和。已返回關(guān)于在本地和值的形成過(guò)程中生成的進(jìn)位的進(jìn)位輸出值。

如圖6所示,節(jié)點(diǎn)p20到p23各自執(zhí)行它們的本地求和以及合并操作,并針對(duì)它們的兩個(gè)指令源之一生成相應(yīng)的返回進(jìn)位輸出值。這些返回進(jìn)位輸出值在圖6中被編號(hào)為1、2、3、4。此時(shí)尚未生成這些節(jié)點(diǎn)的剩余返回進(jìn)位輸出值,并且樹(shù)中較高級(jí)別的相關(guān)線(xiàn)程被保持,等待那些返回值的返回。

在層級(jí)中的下一個(gè)較低級(jí)別處,節(jié)點(diǎn)p30和p31各自從以上級(jí)別接收兩個(gè)帶進(jìn)位的原子加法指令,并再次執(zhí)行本地求和運(yùn)算,其中該本地求和運(yùn)算生成一個(gè)返回進(jìn)位輸出值(示出為返回進(jìn)位輸出值5、6),并且存在被保持的其他進(jìn)位輸出值。

返回值5被發(fā)送到節(jié)點(diǎn)p21,隨后可以用于生成從節(jié)點(diǎn)p21發(fā)送到節(jié)點(diǎn)p12的返回值7。在節(jié)點(diǎn)p23處接收的返回值6用作從節(jié)點(diǎn)p23發(fā)送到節(jié)點(diǎn)p16的返回值8。

圖6的合并樹(shù)中的最終合并級(jí)別對(duì)應(yīng)于節(jié)點(diǎn)p40。它從節(jié)點(diǎn)p30和p31接收帶進(jìn)位的原子加法指令。節(jié)點(diǎn)p40執(zhí)行對(duì)接收到的帶進(jìn)位的原子加法指令中的每一者的加數(shù)操作數(shù)的本地加法,并生成傳回到節(jié)點(diǎn)p31的返回進(jìn)位輸出值9。隨后,返回進(jìn)位輸出值9可以經(jīng)由節(jié)點(diǎn)p31和節(jié)點(diǎn)p22傳播,以作為返回進(jìn)位輸出值11被發(fā)送給節(jié)點(diǎn)p14。

最終合并節(jié)點(diǎn)p40生成被發(fā)送給路由節(jié)點(diǎn)proot的輸出帶進(jìn)位的原子加法指令,在proot中將其加到數(shù)據(jù)值52并生成返回到節(jié)點(diǎn)p40的返回進(jìn)位輸出值12。返回值12經(jīng)由節(jié)點(diǎn)p30和p20傳播以作為進(jìn)位15到達(dá)節(jié)點(diǎn)p10。

在整個(gè)操作中,將看到原始源節(jié)點(diǎn)p10至p17中的每一者最終接收到返回進(jìn)位輸出值。早期的返回進(jìn)位輸出值由這些指令源(節(jié)點(diǎn))的有效部分接收,這允許它們?cè)谧詈笠淮渭臃ㄔ诟?jié)點(diǎn)proot處被執(zhí)行之前繼續(xù)進(jìn)行其他處理。

圖7是示意性地示出圖6(即具有2:1扇入)的一個(gè)合并節(jié)點(diǎn)的操作的流程圖。在步驟54處,處理等待直到接收到第一個(gè)帶進(jìn)位的原子加法指令。隨后在步驟56處,處理等待直到接收到第二個(gè)帶進(jìn)位的原子加法指令。步驟58執(zhí)行本地加法并生成本地進(jìn)位。步驟60將本地進(jìn)位返回到第二指令源。隨后步驟62將指定在步驟58處計(jì)算的本地和的輸出帶進(jìn)位的原子加法指令發(fā)送到在合并樹(shù)層級(jí)中較低的下一個(gè)處理器。步驟64等待直到在節(jié)點(diǎn)處接收到返回進(jìn)位輸出值。當(dāng)接收到返回進(jìn)位值時(shí),隨后步驟66將該返回進(jìn)位輸出值轉(zhuǎn)發(fā)到第一指令源。

盡管本文已參照附圖詳細(xì)描述了說(shuō)明性實(shí)施例,但應(yīng)理解的是,權(quán)利要求不限于這些精確的實(shí)施例,并且本領(lǐng)域技術(shù)人員可以在其中實(shí)現(xiàn)各種改變、添加和修改,而不背離所附權(quán)利要求的范圍和精神。例如,可以對(duì)獨(dú)立權(quán)利要求的特征和從屬權(quán)利要求的特征進(jìn)行各種組合。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1