專利名稱:一種指令執(zhí)行方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別是涉及一種指令執(zhí)行方法和裝置。
技術(shù)背景目前多核處理器蓬勃發(fā)展,應(yīng)用越來越廣泛,但軟件的并發(fā)設(shè)計相對落 后于硬件的發(fā)展,制約了多核處理器優(yōu)勢的發(fā)揮。軟件落后的主要原因之一 是,多核處理器一直未能給軟件提供一整套標準且有效的并發(fā)指令集,以支 持軟件并發(fā)處理和設(shè)計。當前實現(xiàn)的原子/并發(fā)指令有原子加指令、原子交換指令和原子比較交 換指令等。上述指令雖然都是原子的單指令,但都不能完全滿足并發(fā)軟件設(shè) 計的需要。發(fā)明內(nèi)容本發(fā)明實施例提供一種指令執(zhí)行方法和裝置,將比較操作和加操作結(jié)合 為一條新的原子比較加操作指令,增強了并行功能,提高了執(zhí)行效率。為達到上述目的,本發(fā)明實施例一方面提出一種指令執(zhí)行方法,包括 根據(jù)被加數(shù)變量的地址讀取所述被加數(shù)變量; 對所述被加數(shù)變量進行比較操作;當所述比較操作的結(jié)果成立時,對所述被加數(shù)變量執(zhí)行加操作,并將所 述加操作的結(jié)果賦值給所述被加數(shù)變量。 返回比較操作前的所述被加數(shù)變量的值。另一方面,本發(fā)明實施例還提出一種指令執(zhí)行裝置,包括 讀取模塊,用于根據(jù)被加數(shù)變量的地址讀取所述被加數(shù)變量; 比較才莫塊,用于對所述讀取模塊所讀取的被加數(shù)變量與預(yù)設(shè)值進行比較4操作;執(zhí)行模塊,用于當所述比較模塊的比較操作的結(jié)果成立時,對所述被加 數(shù)變量執(zhí)行加纟喿作,并將所述加操作的結(jié)果賦值給所述被加數(shù)變量。 返回模塊,用于返回比較操作前的被加數(shù)變量。本發(fā)明實施例的技術(shù)方案具有以下優(yōu)點,因為本發(fā)明實施例將比較操作 和加操作結(jié)合為一條新的原子比較加操作指令,從而,增強了并行功能,提 高了執(zhí)行效率。
為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例描述中所 需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā) 明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前 提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實施例中指令執(zhí)行方法流程圖;圖2為本發(fā)明實施例中最典型的大于加,且加操作為32Bit有符號加的 指令描述;圖3為本發(fā)明實施例中六種比較的助記符縮寫; 圖4為本發(fā)明實施例中指令執(zhí)行方法的一種具體實現(xiàn)方式流程圖; 圖5為本發(fā)明實施例中指令執(zhí)行方法的一種具體實現(xiàn)方式流程圖; 圖6為本發(fā)明實施例中指令執(zhí)行裝置結(jié)構(gòu)圖。
具體實施方式
本發(fā)明實施例將比較操作和加操作結(jié)合起來,形成了一個新的原子操作 的單指令原子比較加指令,并提供了執(zhí)行該指令的方法和裝置。下面結(jié)合附圖和實施例,對本發(fā)明的具體實施方式
作進一步詳細描述 如圖l所示,為本發(fā)明實施例中指令執(zhí)行方法流程圖,即原子比較加指令的 執(zhí)行流程圖,包括以下步驟S101、根據(jù)被加數(shù)變量的地址,從存儲器中讀取被加數(shù)變量的值。與預(yù)設(shè)值進行比較操作。如果比較操作的結(jié)果成立,即上述的被加數(shù)變量的值與預(yù)設(shè)值之間確實存在上述比較操作所對應(yīng)的關(guān)系,則執(zhí)行S103;如果比較操作的結(jié)果不成立,即上述的被加數(shù)變量的值與預(yù)設(shè)值之間不 存在上述比較操作所對應(yīng)的關(guān)系,.則執(zhí)行S105;例如比較操作具體為比較被加數(shù)變量是否大于預(yù)設(shè)值,則當被加數(shù)變 量的值大于預(yù)設(shè)值時,比較操作的結(jié)果成立,當被加數(shù)變量的值不大于預(yù)設(shè) 值時,比較操作的結(jié)果不成立。比較操作分為六種,即大于,小于,大于等于,小于等于,等于,不等于。對應(yīng)這六種比較操作,本發(fā)明實施例所提出的執(zhí)行指令也相應(yīng)的分為六 種比較加操作,即大于加,小于加,大于等于加,小于等于加,等于加,不 等于加。基于上述操作分類,在應(yīng)用本發(fā)明實施例所提出的執(zhí)行指令過程中,只 要更換比較過程的具體內(nèi)容,執(zhí)行指令所對應(yīng)的操作也可以產(chǎn)生相應(yīng)的變化, 因此,本發(fā)明實施例所提出的執(zhí)行指令實際上是一組指令,并且該指令是原 子的,單指令的。5103, 對被加數(shù)變量的值執(zhí)行加操作。5104, 將加操作的結(jié)果賦值給被加數(shù)變量。如果比較操作的結(jié)果成立,則對^皮加數(shù)變量的值執(zhí)行加4喿作。 加操作也有多種類型,如有符號加、無符號加、32位加和64位加等,和系統(tǒng)中實際的加指令是相同的。對被加數(shù)變量的值執(zhí)行加操作后,將加操作的結(jié)果賦值給被加數(shù)變量。在此步驟中,被加數(shù)變量在存儲器中的值被更新了。5105, 返回比較操作前的被力口數(shù)變量的值。如果S102的比較操作結(jié)果成立,則在S104執(zhí)行完成之后,直接執(zhí)行本 步驟,返回比較操作前的被加數(shù)變量的值;如果S102的比較操作結(jié)果不成立, 則在S102執(zhí)行完成之后,直接執(zhí)行本步驟,返回比較操作前的被加數(shù)變量的值。需要進一步指出的是,在本指令執(zhí)行后,即上述的S101至S104所述的 原子比較加指令執(zhí)行完成后,S105所返回的比較操作前的被加數(shù)變量的值, 可進一步用于后續(xù)指令判斷本指令是否對被加數(shù)變量進行了實際的加操作, 即驗證本指令的執(zhí)行結(jié)果。其中,后續(xù)指令可以是上述原子比較加指令的重復(fù)執(zhí)行,從而需要通過 S105返回的比較操作前的被加數(shù)變量的值,判斷上述原子比較加指令前次執(zhí) 行是否完成;也可以是其他操作指令,需要引用被加數(shù)變量,因此,通過S105 返回的比較操作前的被加數(shù)變量的值,判斷上述原子比較加指令執(zhí)行是否完 成。進一步的,后續(xù)指令判斷本指令是否對被加數(shù)變量進行了實際的加操作, 具體為將返回的比較操作前的被加數(shù)變量的值與預(yù)設(shè)值進行Sl 02相同內(nèi)容的比 較操作。如果比較操作的結(jié)果成立,則判斷原子比較加指令對被加數(shù)變量執(zhí)行了 力口操作。如果比較操作的結(jié)果不成立,則判斷原子比較加指令沒有對被加數(shù)變量 執(zhí)行加操作。需要進一步說明的是,本實施例中的S105與S104之間沒有必然的先后 關(guān)系,S105可以在S101執(zhí)行完成之后至指令結(jié)束之前的任何時間執(zhí)行,從而 返回比較前的被加數(shù)變量的值,即返回S101中讀取的被力口數(shù)變量的值。因此, 圖1所示的流程示意圖對應(yīng)的僅是本發(fā)明的一種優(yōu)選實施例,S105所處位置 的變化并不影響本發(fā)明的保護范圍。S106,結(jié)束指令操作。本發(fā)明實施例中的原子比較加指令是一組指令集,在助記符上是加和比 較的組合。如圖2所示,為最典型的大于加,且加操作為32Bit有符號加的指 令描述。"gt"是大于的縮寫。比較纟喿作分為六種,即大于,小于,大于等于,小于等于,等于,不等于。如圖3所示,為上述六種比較的助記符縮寫。加操作也有多種類型,如有符號加、無符號加、32位加和64位加等,和系統(tǒng)中實際的加指令是相同的。加操作和比較操作組合起來很多,我們選取一種典型形式用于具體解釋。原子的32Bit有符號數(shù)大于加的指令操作的格式如下 addgt Ra, Rb, Rc其中,上述的Ra、 Rb和Rc是三個通用32bit寄存器。如圖4所示,為本發(fā)明實施例中指令執(zhí)行方法的一種具體實現(xiàn)方式流程圖,對應(yīng)上述格式的指令操作,以最常見的大于加為例進行說明,包括以下步驟S401, Ra的值是被加數(shù)變量的地址,指令執(zhí)行裝置根據(jù)這個地址,從 寄存器Ra中取出被力。數(shù)變量的值v。v為有符號的32bit數(shù)據(jù),充當被加數(shù)。S402,指令執(zhí)行裝置對被加數(shù)變量的值v和Rb中儲存的預(yù)設(shè)值進行比較 操作,即比較v是否大于Rb中的數(shù)據(jù)。Rb中儲存著預(yù)設(shè)的有符號的32bit數(shù)據(jù),該數(shù)據(jù)用于同S401中讀取的被 加數(shù)進行比較。具體的比較操作可以為前述的六種比較操作中的一種,本實施例中所應(yīng) 用的比較操作為大于比較,即比較被加數(shù)變量的值v是否大于Rb中的預(yù)設(shè)值。如果比較操作的結(jié)果成立,即被加數(shù)變量的值v大于Rb中的預(yù)設(shè)值,則 執(zhí)4亍S403;如果比較操作的結(jié)果不成立,即被加數(shù)變量的值v不大于Rb中的預(yù)設(shè)值, 則執(zhí)行S405。S403,指令執(zhí)行裝置對被加數(shù)的值v進行加操作。如果比較操作的結(jié)果成立,即v〉Rb成立,則執(zhí)行result=v+Rc,即為被 加數(shù)變量的值v加上Rc中存儲的數(shù)據(jù)值,Rc代表從寄存器Rc中讀取的與被 加數(shù)變量的值v進行加操作的有符號的32bit數(shù)據(jù),result代表,皮加數(shù)變量的 值v和Rc中存儲的數(shù)據(jù)值執(zhí)行加操作后生成的結(jié)果數(shù)據(jù)。S404,指令執(zhí)行裝置將加操作的結(jié)果賦值給被加數(shù)變量。執(zhí)行result=v+Rc后,指令執(zhí)行裝置將result的值根據(jù)Ra寄存器中的被力口 數(shù)變量的地址寫回到存儲器,即更新了被加數(shù)變量在存儲器中的值v。需要說明的是,存儲器具體指外部的存儲設(shè)備,指令執(zhí)行裝置可以通過 外部地址或接口進行訪問,寄存器則是指指令執(zhí)行裝置內(nèi)部的臨時數(shù)據(jù)存儲 單元,用于存儲指令執(zhí)行裝置運行過程中生成的臨時數(shù)據(jù),可以在運行結(jié)束 后自動或手動清空。S405,指令執(zhí)行裝置將比較操作前被力口數(shù)變量的值v存入Ra。S406,結(jié)束指令操作。指令執(zhí)行裝置在執(zhí)行上述原子比較加指令時,需要根據(jù)寄存器Ra的值(即 變量v的地址)來訪問外部存儲器,進行讀操作和寫操作,有可能引起地址 類訪問異常。但是,異常不會在存儲器上產(chǎn)生修改的效果,因此,讀操作和 寫才喿作訪問異常不會對數(shù)據(jù)的一致性和完整性產(chǎn)生影響。進一步的,在完成原子比較加的操作后,即完成S206后,后續(xù)的指令可 采用進一步的步驟,用其他裝置進一步來判斷存儲器中的被加數(shù)變量的值v 是否執(zhí)行了實際的加操作,即是否實際地執(zhí)行了存儲器的新數(shù)值寫入操作, 如圖5所示,具體如下S501,讀取Ra的值(當原子比較加指令執(zhí)行后,Ra中保存著比較操作 前的被加數(shù)v的值)。S502,將Ra中的值與Rb中存儲的預(yù)-i殳值進行與前述S402中同樣的比較 操作。即比較Ra是否大于Rb中存儲的預(yù)設(shè)值,進一步的,本步驟中的比較操 作可以是指令執(zhí)行裝置或其他需要獲知是否進行了加操作的裝置,進行比較 操作的主體的變化并不影響本發(fā)明的保護范圍。如果比較操作的結(jié)果成立,則執(zhí)行S503;如果比較操作的結(jié)果不成立,則執(zhí)行S504。S503,判斷原子比較加指令執(zhí)行了加操作。S504,判斷原子比較加指令沒有執(zhí)行加操作。本發(fā)明實施例將比較操作和加操作結(jié)合為 一條新的原子比較加操作指 令,從而,增強了并行功能,提高了執(zhí)行效率。以下為指令執(zhí)行裝置執(zhí)行上述原子比較加指令時的功能偽碼addgt ( &Ra, &Rb, &Rc)/*以Ra為地址,讀取被加數(shù),并保存副本。 讀操作,可能引發(fā)讀異常*/ WrodTemp = * (volatile signed int *)Ra ;/*32Bit有符號的比較*/ if ( WrodTemp > Rb)/*將加的結(jié)果,以Ra為地址,寫回存儲器。 寫操作,可能引發(fā)寫異常*/* ((volatile signed int * ) Ra) = WrodTemp + Rc ;/*返回原來的被加數(shù)到Ra,可用于判斷是否執(zhí)行了加操作*/ Ra —— WrodTemp; Return ;如圖6所示,為本發(fā)明實施例中指令執(zhí)行裝置結(jié)構(gòu)圖,包括 讀取模塊610,用于根據(jù)被加數(shù)變量的地址讀取被加數(shù)變量的值。 比較模塊620,用于對讀取模塊610讀取的被加數(shù)變量的值與預(yù)設(shè)值進行 比較操作。比較操作分為六種,即大于,小于,大于等于,小于等于,等于,不等于。執(zhí)行模塊630,用于在比較模塊620判斷比較操作的結(jié)果成立時,對被加數(shù)變量的值執(zhí)行加操作,并將加操作的結(jié)果賦值給被加數(shù)變量。 如果比較操作的結(jié)果成立,則對被加數(shù)變量的值執(zhí)行加操作。加操作也有多種類型,如有符號加、無符號加、32位加和64位加等,和 系統(tǒng)中實際的加指令是相同的。對被加數(shù)變量的值執(zhí)行加操作后,將加操作的結(jié)果賦值給被加數(shù)變量, 并將纟皮加數(shù)變量的值存儲到原地址。執(zhí)行模塊630具體包括執(zhí)行子模塊631,用于對被加數(shù)變量的值執(zhí)行加操作。 賦值子模塊632,用于將執(zhí)行子模塊631執(zhí)行的加操作的結(jié)果賦值給被加 數(shù)變量。存儲模塊640,用于存儲指令執(zhí)行過程中的臨時數(shù)據(jù),包括以下數(shù)值的一 種或多種讀取模塊610所讀取的被加數(shù)變量的值,執(zhí)行模塊630的執(zhí)行結(jié)果,以 及從各寄存器中讀取的數(shù)據(jù)值,如前述實施例中從Rb、 Rc中讀取的預(yù)設(shè)值。返回^^莫塊650,用于返回讀取模塊610讀取的被加數(shù)變量的值,以供后續(xù) 指令判斷本指令是否執(zhí)行了加操作。本指令之后的后續(xù)裝置(后續(xù)指令)可根據(jù)返回模塊650返回比較操作 前的被加數(shù)變量的值(如前述的被加數(shù)變量的值v)與預(yù)設(shè)值(如前述的Rb 中的預(yù)設(shè)值)進行與比較模塊620中所執(zhí)行的比較操作內(nèi)容相同的比較操作。如果比較操作的結(jié)果成立,則判斷原子比較加指令執(zhí)行了加操作;如果 比較操作的結(jié)果不成立,則判斷原子比較加指令沒有執(zhí)行加操作。上述才莫塊可以分布于一個裝置,也可以分布于多個裝置。上述^^莫塊可以 合并為一個模塊,也可以進一步拆分成多個子模塊。本發(fā)明實施例的技術(shù)方案具有以下優(yōu)點,因為本發(fā)明實施例將比較操作 和加操作結(jié)合為一條新的原子比較加操作指令,從而,增強了并行功能,提高了執(zhí)行效率。通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本 發(fā)明可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬 件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技 術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使 得一臺終端設(shè)備(可以是手機,個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等) 執(zhí)行本發(fā)明各個實施例所述的方法。以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當指出,對于本技術(shù)領(lǐng)域的 普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進 和潤飾,這些改進和潤飾也應(yīng)視本發(fā)明的保護范圍。
權(quán)利要求
1、一種指令執(zhí)行方法,其特征在于,包括根據(jù)被加數(shù)變量的地址讀取所述被加數(shù)變量;對所述被加數(shù)變量與預(yù)設(shè)值進行比較操作;當所述比較操作的結(jié)果成立時,對所述被加數(shù)變量執(zhí)行加操作,并將所述加操作的結(jié)果賦值給所述被加數(shù)變量;返回比較操作前的被加數(shù)變量的值。
2、 如權(quán)利要求1所述指令執(zhí)行方法,其特征在于,還包括 后續(xù)指令在所述指令執(zhí)行之后通過所述返回的比較操作前的被加數(shù)變量判斷所述指令是否已執(zhí)行加操作。
3、 如權(quán)利要求1所述指令執(zhí)行方法,其特征在于,所述比較操作,具體 包括所述被加數(shù)變量與所述預(yù)設(shè)值之間存在以下關(guān)系中的一種大于、小于、大于等于、小于等于、等于或不等于。
4、 一種指令執(zhí)行裝置,其特征在于,包括讀取模塊,用于根據(jù)被加數(shù)變量的地址讀取所述被加數(shù)變量; 比較模塊,用于對所述讀取模塊所讀取的被加數(shù)變量與預(yù)設(shè)值進行比較 操作;執(zhí)行模塊,用于當所述比較模塊的比較操作的結(jié)果成立時,對所述被加 數(shù)變量執(zhí)行加操作,并將所述加操作的結(jié)果賦值給所述一皮加數(shù)變量。 返回模塊,用于返回比較操作前的被加數(shù)變量。
5、 如權(quán)利要求4所述指令執(zhí)行裝置,其特征在于,所述執(zhí)行模塊,具體 包括執(zhí)行子模塊,用于對所述被加數(shù)變量執(zhí)行加操作; 賦值子模塊,用于將所述執(zhí)行子模塊執(zhí)行的所述加操作的結(jié)果賦值給所 述被加數(shù)變量。
6、 如權(quán)利要求4所述指令執(zhí)行裝置,其特征在于,還包括 存儲模塊,用于存儲所述執(zhí)行模塊的執(zhí)行結(jié)果。
7、如權(quán)利要求6所述指令執(zhí)行裝置,其特征在于,所述存儲模塊,還用 于存儲所述讀取模塊讀取的所述被加數(shù)變量。
全文摘要
本發(fā)明實施例公開了一種指令執(zhí)行方法和裝置,所述方法包括根據(jù)被加數(shù)變量的地址讀取所述被加數(shù)變量;對所述被加數(shù)變量與預(yù)設(shè)值進行比較操作;所述比較操作的結(jié)果成立時,對所述被加數(shù)變量執(zhí)行加操作,并將所述加操作的結(jié)果賦值給所述被加數(shù)變量;返回比較操作前的被加數(shù)變量的值。本發(fā)明實施例將比較操作和加操作結(jié)合為一條新的原子比較加操作指令,增強了并行功能,提高了執(zhí)行效率。
文檔編號G06F9/318GK101324838SQ20081014446
公開日2008年12月17日 申請日期2008年7月31日 優(yōu)先權(quán)日2008年7月31日
發(fā)明者高秋明 申請人:華為技術(shù)有限公司