經(jīng)配置以執(zhí)行事務(wù)型存儲器操作的處理器的制造方法
【專利摘要】在特定實(shí)施例中,一種極長指令字VLIW處理器可操作以執(zhí)行VLIW指令。所述VLIW指令中的至少一者包含第一加載或存儲指令和第二加載或存儲指令。所述第一指令和所述第二指令是作為單個(gè)原子單元而執(zhí)行。所述第一和第二指令中的至少一者是有條件存儲指令。
【專利說明】經(jīng)配置以執(zhí)行事務(wù)型存儲器操作的處理器
【技術(shù)領(lǐng)域】
[0001]本發(fā)明一般來說涉及操作以執(zhí)行存儲器操作的處理器。
【背景技術(shù)】
[0002]技術(shù)的進(jìn)步已產(chǎn)生更小且更強(qiáng)大的計(jì)算裝置。舉例來說,當(dāng)前存在多種便攜式個(gè)人計(jì)算裝置,包含體積小、重量輕且易于由用戶攜帶的無線計(jì)算裝置,例如便攜式無線電話、個(gè)人數(shù)字助理(PDA)以及尋呼裝置。更具體來說,便攜式無線電話(例如蜂窩式電話和因特網(wǎng)協(xié)議(IP)電話)可經(jīng)由無線網(wǎng)絡(luò)傳送語音和數(shù)據(jù)包。此外,許多此類無線電話包含并入其中的其它類型的裝置。舉例來說,無線電話還可包含數(shù)字靜態(tài)相機(jī)、數(shù)字?jǐn)z像機(jī)、數(shù)字記錄器以及音頻文件播放器。并且,此些無線電話可處理可執(zhí)行指令,包含可用于接入因特網(wǎng)的軟件應(yīng)用程序,例如網(wǎng)頁瀏覽器應(yīng)用程序。因而,這些無線電話可包含很強(qiáng)的計(jì)算能力。
[0003]電子裝置(例如無線電話)可包含共享資源(例如,存儲器中的數(shù)據(jù)結(jié)構(gòu))的多個(gè)請求者(例如,多線程處理器的線程或多個(gè)處理器)。舉例來說,多個(gè)請求者(例如,讀取器和寫入器)可使用先進(jìn)先出(FIFO)數(shù)據(jù)結(jié)構(gòu)來暫時(shí)存儲數(shù)據(jù)。寫入索引可指向FIFO數(shù)據(jù)結(jié)構(gòu)的下一個(gè)可用條目(例如,使得電子裝置的線程或處理器可知道在FIFO數(shù)據(jù)結(jié)構(gòu)何處寫入數(shù)據(jù))。
[0004]然而,在獨(dú)立地更新數(shù)據(jù)與對應(yīng)于數(shù)據(jù)的寫入索引時(shí),可能會出現(xiàn)問題。舉例來說,如果在寫入索引之前更新數(shù)據(jù),那么同時(shí)操作的另一寫入器可能會覆寫數(shù)據(jù)位置。相反地,如果在數(shù)據(jù)之前更新寫入索引,那么并發(fā)的讀取器可能會嘗試讀取尚未寫入的數(shù)據(jù)。因此,可希望不可分割地(即,作為同一存儲器事務(wù)的部分)更新數(shù)據(jù)以及其對應(yīng)寫入索引條目兩者。
【發(fā)明內(nèi)容】
[0005]可實(shí)施各種技術(shù)以允許不可分割地更新數(shù)據(jù)和寫入索引兩者。舉例來說,可鎖定結(jié)構(gòu)的全部或部分,使得一次僅一個(gè)寫入器可修改數(shù)據(jù)結(jié)構(gòu)。然而,所述鎖定可限制并發(fā)操作,從而造成性能瓶頸。為了克服這些瓶頸,可使用“無鎖”算法來在不獲取鎖定的情況下同時(shí)地更新數(shù)據(jù)結(jié)構(gòu)。
[0006]處理器可使用不可分割的讀取-修改-寫入操作,其可實(shí)施鎖定以及“無鎖”算法。然而,一些無鎖算法可要求不可分割地執(zhí)行多個(gè)并發(fā)存儲器操作。一些架構(gòu)已開發(fā)出允許多個(gè)存儲器操作不可分割地發(fā)生的方案。舉例來說,部分提交指令可記錄關(guān)于所提出操作的信息且其后決定是否將完成所述操作。如果確定將不會完成所述操作(例如,歸因于異常、被另一處理器或線程修改或其它造成失敗的事件),那么所述操作的已執(zhí)行部分可“倒回”(即,撤銷)。如果確定將完成所述操作,那么可“提交”(即,寫入到存儲器)事務(wù)內(nèi)的所有更新。這有時(shí)被稱為“事務(wù)型存儲器”。
[0007]事務(wù)型存儲器系統(tǒng)可能并非總是合意的。舉例來說,事務(wù)型存儲器可具有高成本,為了支持事務(wù)型協(xié)議而具有額外存儲器、總線、高速緩存和處理器復(fù)雜性。
[0008]不可分割地更新存儲器位置可涉及對存儲于存儲器處的值的特定加載(被稱作加載鎖定操作)。在修改所述值之后,可使用第二操作,如果自從加載所述值以來沒有其它處理器或線程已修改所述經(jīng)修改的值,那么所述第二操作存儲所述經(jīng)修改的值。這可被稱作有條件存儲。事務(wù)型存儲器操作可不可分割地執(zhí)行多個(gè)(例如,兩個(gè))有條件存儲操作。所述多個(gè)指令的執(zhí)行導(dǎo)致所述操作的成功或失敗(例如,如果有條件存儲存儲器操作中的任一者失敗,那么所述多個(gè)指令被視為已失敗)。請注意,如本文中使用,如果兩個(gè)操作具有要么全有要么全無的關(guān)系,即,要么兩個(gè)操作都成功,要么兩個(gè)操作都失敗,那么可認(rèn)為所述兩個(gè)操作是“不可分割地執(zhí)行”。另外,如本文中使用,兩個(gè)操作可“不可分割地聯(lián)系”,因?yàn)樗鼈兛赡曳庠趩蝹€(gè)包中且因此同時(shí)且個(gè)別地執(zhí)行。因此,“不可分割地聯(lián)系的”操作還可被稱作被“分組”或“分封”。
[0009]在另一特定實(shí)施例中,一種極長指令字(VLIW)處理器可操作以執(zhí)行VLIW指令,所述VLIW指令中的至少一者包含第一加載或存儲指令和第二加載或存儲指令。所述第一指令和所述第二指令是作為單個(gè)原子單元而執(zhí)行。所述第一和第二指令中的至少一者是有條件存儲指令。
[0010]在另一特定實(shí)施例中,一種計(jì)算機(jī)實(shí)施的方法包含執(zhí)行包含事務(wù)型存儲器操作的程序。所述事務(wù)型存儲器操作包含不可分割地聯(lián)系到第二存儲器操作的第一存儲器操作。所述第一和第二存儲器操作是通過單個(gè)VLIW包來識別以便在VLIW處理器處執(zhí)行。
[0011]在另一特定實(shí)施例中,一種設(shè)備包含多線程處理器,所述多線程處理器包含加載/存儲單元。所述加載/存儲單元包含指派給每一線程的多個(gè)地址預(yù)留寄存器。所述地址預(yù)留寄存器中的每一者存儲與加載鎖定有條件存儲操作對相關(guān)聯(lián)的預(yù)留地址且可進(jìn)一步存儲指示所述預(yù)留地址處的數(shù)據(jù)是否已改變的有效位。與所述對指令相關(guān)聯(lián)的成功或失敗可基于與所述對指令中的一者或一者以上相關(guān)聯(lián)的數(shù)據(jù)是否已改變(例如,基于所述有效位是否指示所述數(shù)據(jù)已改變)。
[0012]在另一特定實(shí)施例中,一種設(shè)備包括用于執(zhí)行極長指令字(VLIW)指令的裝置,其中所述VLIW指令中的至少一者包含第一加載或存儲指令和第二加載或存儲指令,其中所述第一指令和所述第二指令是作為單個(gè)原子單元來不可分割地執(zhí)行,且其中所述第一和第二指令中的至少一者是有條件存儲指令。所述設(shè)備進(jìn)一步包括用于存儲數(shù)據(jù)的裝置,其中所述用于存儲數(shù)據(jù)的裝置對所述用于執(zhí)行VLIW指令的裝置作出響應(yīng)。
[0013]在另一特定實(shí)施例中,一種計(jì)算機(jī)可讀有形媒體存儲可由計(jì)算機(jī)執(zhí)行以執(zhí)行包含事務(wù)型存儲器操作的程序的指令。所述事務(wù)型存儲器操作包含不可分割地聯(lián)系到第二存儲器操作的第一存儲器操作,其中所述第一和第二存儲器操作是在VLIW處理器處通過單個(gè)極長指令字(VLIW)包來執(zhí)行。
[0014]在另一特定實(shí)施例中,一種設(shè)備包含VLIW處理器。所述VLIW處理器具有:緩沖器,其包含多個(gè)數(shù)據(jù)條目;寫入索引,其可操作以選擇性地指向所述多個(gè)數(shù)據(jù)條目中的每一者;以及加載/存儲單元。所述加載/存儲單元將一對加載/鎖定操作作為單個(gè)原子單元來執(zhí)行且還將一對有條件存儲操作作為單個(gè)原子單元來執(zhí)行。
[0015]由所揭示實(shí)施例中的至少一者提供的一個(gè)特定優(yōu)勢是VLIW處理器,其操作以執(zhí)行并發(fā)的不可分割存儲器操作。舉例來說,所述VLIW處理器的多個(gè)線程可共享資源(例如,數(shù)據(jù)結(jié)構(gòu))而無需鎖定所述資源且無需阻止所述線程存取所述資源。因此,所述資源的使用可變成較少受到限制的,這是因?yàn)榭蓽?zhǔn)許所有線程使用所述資源。
[0016]由所揭示實(shí)施例中的至少一者提供的另一特定優(yōu)勢是VLIW處理器,其操作以執(zhí)行存儲器操作而無需先記錄關(guān)于所述存儲器操作的信息。舉例來說,傳統(tǒng)的事務(wù)型存儲器可使用部分提交指令,其中在確定是否將執(zhí)行所提出存儲器操作之前記錄關(guān)于所提出存儲器操作的信息。根據(jù)本發(fā)明的事務(wù)型存儲器可大體上并行地執(zhí)行第一和第二指令(例如,無需基于第一指令的執(zhí)行結(jié)果來確定是否將執(zhí)行第二指令)。由所揭示實(shí)施例中的至少一者提供的又一優(yōu)勢是支撐于核心芯片內(nèi)的事務(wù)型存儲器(例如,不具有外部電路,例如高速緩存、總線或存儲器支持元件)。
[0017]在檢視整份申請案后,將明白本發(fā)明的其它方面、優(yōu)點(diǎn)和特征,申請案包含以下部分:附圖簡單說明、【具體實(shí)施方式】和權(quán)利要求書。
【專利附圖】
【附圖說明】
[0018]圖1是將指令作為單個(gè)原子單元來執(zhí)行的設(shè)備的特定說明性實(shí)施例的框圖;
[0019]圖2是圖1的設(shè)備的加載/存儲單元的特定說明性實(shí)施例的框圖;
[0020]圖3是圖1的設(shè)備的加載/存儲單元的操作的特定說明性實(shí)施例的圖;
[0021]圖4是執(zhí)行VLIW指令對的方法的特定說明性實(shí)施例的流程圖;以及
[0022]圖5是包含處理器的電子裝置的框圖,所述處理器包含圖1的設(shè)備的加載/存儲單元。
【具體實(shí)施方式】
[0023]參考圖1,展示可操作以將多個(gè)指令作為單個(gè)原子單元來執(zhí)行的設(shè)備的特定說明性實(shí)施例且將所述設(shè)備整體表示為100。如所說明,設(shè)備100包含指令高速緩存110、定序器114、存儲器102、第一加載/存儲單元118、第二加載/存儲單元120、執(zhí)行單元122、測試邏輯124以及通用寄存器(例如寄存器文件)126。
[0024]設(shè)備100進(jìn)一步包含總線接口 108和數(shù)據(jù)高速緩存112。存儲器102耦合到總線接口 108。另外,數(shù)據(jù)高速緩存112耦合到總線接口 108??蓪?shù)據(jù)提供到數(shù)據(jù)高速緩存112或存儲器102。存儲于數(shù)據(jù)高速緩存112內(nèi)的數(shù)據(jù)可經(jīng)由總線接口 108提供到存儲器102。因此,存儲器102可經(jīng)由總線接口 108從數(shù)據(jù)高速緩存112檢索數(shù)據(jù)。
[0025]設(shè)備100進(jìn)一步包含監(jiān)管控制寄存器132和全局控制寄存器134。定序器114可對存儲于監(jiān)管控制寄存器132和全局控制寄存器134處的數(shù)據(jù)作出響應(yīng)。舉例來說,監(jiān)管控制寄存器132和全局控制寄存器134可存儲多個(gè)位,所述位可由定序器114內(nèi)的控制邏輯存取以確定是否接受中斷(例如一般中斷116)以及控制指令執(zhí)行。
[0026]在特定實(shí)施例中,設(shè)備100是交錯(cuò)多線程處理器。指令高速緩存110可經(jīng)由多個(gè)現(xiàn)行指令寄存器耦合到定序器114,所述寄存器可與所述交錯(cuò)多線程處理器的特定線程相關(guān)聯(lián)。
[0027]存儲器102、通用寄存器126和數(shù)據(jù)高速緩存112中的一者或一者以上可在多個(gè)請求者(例如,多線程處理器的多個(gè)線程或多處理器系統(tǒng)的多個(gè)處理器)之間共享。在特定實(shí)施例中,存儲器102、通用寄存器126和數(shù)據(jù)高速緩存112中的一者或一者以上包含先進(jìn)先出(FIFO)緩沖器以及經(jīng)配置以指向FIFO緩沖器的下一個(gè)可用數(shù)據(jù)條目的寫入索引,如參考圖3進(jìn)一步描述。
[0028]在操作期間,可從存儲器102檢索極長指令字(VLIW)指令包(例如所說明的VLIW指令包101)且將其提供到指令高速緩存110。如圖1中所示,VLIW指令包101包含有條件存儲指令103和加載或存儲指令104。VLIW指令包101可存儲于指令高速緩存110內(nèi)且可由定序器114(例如經(jīng)由輸入111)檢索。
[0029]除了檢索VLIW指令包101之外,定序器114還可對一般中斷116和其它輸入作出響應(yīng)。定序器114可將VLIW指令或個(gè)別指令(例如指令103到104)路由到執(zhí)行單元。根據(jù)特定說明性實(shí)施例,VLIW指令包101可包含向定序器114指示是否路由VLIW指令包101中的每一指令以供并行或串行執(zhí)行的數(shù)據(jù)。
[0030]舉例來說,如圖1中所描繪,VLIff指令包101內(nèi)的有條件存儲指令103由定序器114路由到第一加載/存儲單元118,且加載或存儲指令104由定序器114路由到第二加載/存儲執(zhí)行單元120。應(yīng)理解,雖然在圖1中展示了兩個(gè)加載/存儲執(zhí)行單元118和120,但設(shè)備100可包含額外加載/存儲單元和其它類型的執(zhí)行單元,例如算術(shù)邏輯單元或其它代表性執(zhí)行單元(例如執(zhí)行單元122)。
[0031]在由第一加載/存儲單元118和第二加載/存儲單元120執(zhí)行之后,經(jīng)執(zhí)行指令的輸出被提供到測試邏輯124。舉例來說,將第一加載/存儲單元118的輸出提供到測試邏輯124的第一輸入,且將第二加載/存儲單元120的輸出提供到測試邏輯124的第二輸入。另外,其它執(zhí)行單元(例如所說明的執(zhí)行單元122)的輸出可作為執(zhí)行單元輸出128來提供,而執(zhí)行單元輸出128作為到通用寄存器126的額外輸入而被接收。
[0032]測試邏輯124包含用以確定與有條件存儲指令103相關(guān)聯(lián)的條件是否成功的邏輯。舉例來說,測試邏輯124可包含用以確定有條件存儲指令103是成功還是失敗的嵌入式邏輯。另外,基于對有條件存儲指令103是成功還是失敗的確定,可選擇性地丟棄加載或存儲指令104的輸出或可將所述輸出提供為到通用寄存器126的輸出。因此,測試邏輯124可實(shí)現(xiàn)不可分割地執(zhí)行VLIW指令包101內(nèi)的多個(gè)指令103和104。
[0033]不可分割地執(zhí)行指令103到104可涉及完全執(zhí)行兩個(gè)指令或一個(gè)指令都不執(zhí)行。舉例來說,要么第一存儲器操作(例如,有條件存儲指令103)和第二存儲器操作(例如,力口載或存儲指令104)兩者都成功,要么第一和第二存儲器操作兩者都失敗。另外,不可分割地執(zhí)行指令可包含產(chǎn)生指示與有條件存儲指令103相關(guān)聯(lián)的成功或失敗的至少一個(gè)輸出。舉例來說,測試邏輯124可產(chǎn)生指示經(jīng)測試的有條件存儲指令103的成功或失敗的至少一個(gè)輸出。在特定說明性實(shí)施例中,指示成功或失敗的至少一個(gè)輸出是單個(gè)位。
[0034]在成功地執(zhí)行有條件存儲指令103之后,測試邏輯124可即刻向通用寄存器126提供指示第一存儲器指令103和第二存儲器指令104兩者的執(zhí)行結(jié)果的輸出。在特定說明性實(shí)施例中,在多線程操作的回寫階段期間,對通用寄存器126進(jìn)行寫入。操作的執(zhí)行結(jié)果存儲于通用寄存器126內(nèi)且可在請求時(shí)提供到存儲器102。因此,VLIW指令包101內(nèi)的多個(gè)指令可作為單個(gè)原子單元且作為單個(gè)存儲器事務(wù)的部分(例如,多個(gè)指令的執(zhí)行可與單個(gè)成功或單個(gè)失敗相關(guān)聯(lián))不可分割地執(zhí)行。
[0035]設(shè)備100可包含可操作以執(zhí)行VLIW指令的VLIW處理器。舉例來說,VLIW處理器可包含多個(gè)執(zhí)行元件,例如定序器114、執(zhí)行單元118到122中的一者或一者以上以及任選地還有測試邏輯124。另外,VLIW處理器可包含經(jīng)配置以在執(zhí)行之前存儲多個(gè)VLIW指令包的指令高速緩存110。在特定實(shí)施例中,VLIW指令中的至少一者包含第一加載或存儲指令(例如,有條件存儲指令103)和第二加載或存儲指令(例如,加載指令或存儲指令104)。第一指令與第二指令可作為單個(gè)原子單元來執(zhí)行,且第一和第二指令中的至少一者是有條件存儲指令。舉例來說,參考圖1,第一指令103是有條件存儲指令。雖然第一指令103展示為有條件存儲指令,但應(yīng)理解,第一指令可以改為加載或存儲指令(例如,加載指令、存儲指令、加載鎖定指令或有條件存儲指令),而第二指令是有條件存儲指令。
[0036]設(shè)備100提供用于執(zhí)行VLIW指令的裝置以及用于存儲數(shù)據(jù)的裝置,所述用于存儲數(shù)據(jù)的裝置對所述用于執(zhí)行VLIW指令的裝置作出響應(yīng)。舉例來說,所述用于執(zhí)行VLIW指令的裝置可包含如所描述的VLIW處理器,且所述用于存儲數(shù)據(jù)的裝置可包含所描述的存儲器元件中的一者或一者以上,例如通用寄存器126、存儲器102和數(shù)據(jù)高速緩存112。
[0037]如將了解,圖1的設(shè)備100可使得能夠在不鎖定與指令對應(yīng)的存儲器位置的情況下不可分割地執(zhí)行指令,例如有條件存儲指令103和加載或存儲指令104。明確地說,所述指令可作為單個(gè)原子單元來執(zhí)行。將指令作為單個(gè)原子單元來執(zhí)行可允許資源(例如,存儲器102中的共享數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)可由數(shù)據(jù)高速緩存112來高速緩存)的多個(gè)請求者(例如,多線程處理器的線程)有效地共享資源,而無需在一個(gè)或一個(gè)以上處理器循環(huán)期間等待鎖定被釋放或等待存取被授權(quán)。
[0038]參考圖2,展示設(shè)備100的第一加載/存儲單元118的特定說明性實(shí)施例。加載/存儲單元118包含指派給第一線程或處理器的第一地址預(yù)留寄存器(ARR) 204。加載/存儲單元118可包含額外ARR。舉例來說,第一加載/存儲單元118包含代表性第二 ARR232。
[0039]指派給特定線程或處理器的每一 ARR(例如,第一 ARR204)可包含一個(gè)或一個(gè)以上預(yù)留的地址寄存器。舉例來說,第一 ARR204包含代表性的第一預(yù)留地址寄存器208和第二預(yù)留地址寄存器220。第一預(yù)留地址寄存器208可包含第一值212和第一代表性有效位216。類似地,第二預(yù)留地址寄存器220可包含第二代表性值224和第二代表性有效位228。
[0040]類似地,第二 ARR232可包含第一預(yù)留地址寄存器236,其包含第一值240和第一有效位244。第二 ARR232可進(jìn)一步包含第二預(yù)留地址寄存器246,其包含第二值250和第二有效位254。因此,指派給特定線程或處理器的ARR中的每一者可包含多個(gè)預(yù)留地址寄存器。另外,預(yù)留地址寄存器中的每一者可包含數(shù)據(jù)值(例如,待監(jiān)視的存儲器位置的地址)以及存儲于地址寄存器內(nèi)且與所述數(shù)據(jù)值相關(guān)聯(lián)的有效位。
[0041]在特定實(shí)施例中,一種設(shè)備包含多線程處理器,所述多線程處理器包含加載/存儲單元。舉例來說,如圖1中所說明,設(shè)備100包含具有代表性加載/存儲單元118的多線程處理器。加載/存儲單元118包含指派給每一線程的多個(gè)地址預(yù)留寄存器。舉例來說,經(jīng)由第一 ARR204將預(yù)留地址寄存器208和220指派給第一代表性線程。
[0042]每一預(yù)留地址寄存器可操作以存儲與加載鎖定有條件存儲操作對相關(guān)聯(lián)的預(yù)留地址。舉例來說,第一預(yù)留地址寄存器208內(nèi)的值212可表示與將由VLIW處理器(例如,在設(shè)備100內(nèi))執(zhí)行的加載鎖定有條件存儲操作對相關(guān)聯(lián)的預(yù)留地址。作為特定實(shí)例,力口載鎖定有條件存儲操作對的第一指令可為有條件指令,且加載鎖定有條件存儲操作對的第二指令可為加載鎖定指令。所述操作對中的每一指令可經(jīng)加載鎖定,使得與第一指令相關(guān)聯(lián)的值被請求者(例如,線程或處理器)預(yù)留。[0043]為了實(shí)施加載鎖定操作,預(yù)留地址寄存器208包含第一有效位216,請求者(例如,處理器)可在對通過值212內(nèi)所含的地址識別的所存儲數(shù)據(jù)值(例如存儲器地址)進(jìn)行改變之前檢查所述第一有效位。有效位216可指示自從在第一預(yù)留地址寄存器208中設(shè)定值212(例如,在對應(yīng)于值212的存儲器位置被請求者預(yù)留時(shí))以來通過值212識別的地址是否已用在寫入操作中。
[0044]在另一特定實(shí)施例中,處理器包含在多處理器架構(gòu)中,且多個(gè)處理器中的每一者包含多個(gè)地址預(yù)留寄存器。在此實(shí)施例中,ARR204、232中的每一者被指派給多處理器架構(gòu)中的分離且獨(dú)立的處理器?;蛘?,如所描述,ARR204、232中的每一者可被指派給多線程架構(gòu)中的特定線程。
[0045]在完成加載鎖定有條件存儲操作對之前,可執(zhí)行對ARR的檢查。所述檢查過程可包含確定對應(yīng)于ARR中的一者的數(shù)據(jù)是否已改變(例如,通過確定有效位的值)。另外,加載鎖定有條件存儲操作對可響應(yīng)于確定對應(yīng)于ARR中的僅一者的數(shù)據(jù)已改變而失敗(例如,確定對應(yīng)于ARR中的一者的數(shù)據(jù)已改變可足以確定加載鎖定有條件存儲操作對已失敗)。
[0046]在特定實(shí)施例中,響應(yīng)于執(zhí)行成功的指示,用對應(yīng)于有條件存儲指令的數(shù)據(jù)來更新VLIW處理器的至少一個(gè)存儲器位置。響應(yīng)于執(zhí)行失敗的指示,不用對應(yīng)于有條件存儲指令的數(shù)據(jù)來更新VLIW處理器的至少一個(gè)存儲器位置。舉例來說,接受由測試邏輯124輸出的數(shù)據(jù)的回寫階段可選擇性地將與有條件存儲指令的執(zhí)行相關(guān)聯(lián)的結(jié)果寫入到寄存器文件。在指示執(zhí)行成功時(shí),可更新通用寄存器126內(nèi)的至少一個(gè)存儲器位置,而在指示失敗時(shí),可不更新通用寄存器126內(nèi)的存儲器位置。因此,測試邏輯124可取決于測試邏輯對有條件存儲指令103的評估結(jié)果而選擇性地寫入執(zhí)行各種指令的結(jié)果。因此,測試邏輯124與通用寄存器126 —起可用以不可分割地執(zhí)行由單個(gè)VLIW指令包發(fā)出的多個(gè)存儲器操作,且對單個(gè)VLIW指令包內(nèi)的多個(gè)存儲器操作的不可分割執(zhí)行可在VLIW多線程處理器架構(gòu)或多處理器架構(gòu)的執(zhí)行單元的上下文內(nèi)執(zhí)行。
[0047]應(yīng)了解,圖2的加載/存儲單元118可使得資源的每一請求者能夠確定資源是否已被另一請求者改變。明確地說,預(yù)留地址和對應(yīng)有效位可存儲于指派給每一請求者的ARR處。預(yù)留存儲器位置(例如,通過將所述存儲器位置的地址存儲為ARR的值)的請求者可通過引用所述有效位來確定所述存儲器位置是否已被另一請求者改變(例如,覆寫)。舉例來說,如果存儲器位置已改變,那么預(yù)留所述存儲器位置的請求者可判定所預(yù)留存儲器位置含有經(jīng)更新數(shù)據(jù)且先前數(shù)據(jù)不再有效。明確地說,如果存儲器位置已改變,那么操作的執(zhí)行可被視為失敗且稍后可重試。因此,多個(gè)請求者可共享對資源的存取,而不限制對資源的存取(例如不鎖定所述資源)。
[0048]參考圖3,展示設(shè)備300的特定說明性實(shí)施例,其包含多線程處理器或多處理器架構(gòu)。設(shè)備300包含一個(gè)或一個(gè)以上極長指令字(VLIW)處理器、先進(jìn)先出(FIFO)緩沖器370、寫入索引360以及至少一個(gè)加載/存儲單元118。設(shè)備300可包含多個(gè)加載/存儲單元,例如所說明的第一加載/存儲單元118和第二加載/存儲單元120。應(yīng)理解,兩個(gè)以上加載/存儲單元可嵌入于設(shè)備300內(nèi)。另外,F(xiàn)IFO緩沖器370和寫入索引360可對應(yīng)于在多個(gè)請求者(例如,多線程處理器的線程或多處理器架構(gòu)的處理器)之間共享的存儲器資源(例如,圖1中的通用寄存器126、數(shù)據(jù)高速緩存112和存儲器102中的一者或一者以上)。
[0049]FIFO緩沖器370包含多個(gè)數(shù)據(jù)條目,例如第一數(shù)據(jù)條目372和第二數(shù)據(jù)條目374。寫入索引360可操作以選擇性地指向所述多個(gè)數(shù)據(jù)條目中的每一者。舉例來說,寫入索引值364 (如所示)最初指向第二數(shù)據(jù)條目374 (例如,存儲與第二數(shù)據(jù)條目374相關(guān)聯(lián)的地址),但可選擇性地指向FIFO緩沖器370的其它數(shù)據(jù)條目,例如第三數(shù)據(jù)條目376或第四數(shù)據(jù)條目378。在特定說明性實(shí)施例中,寫入索引值364指示FIFO緩沖器370的下一個(gè)可用數(shù)據(jù)條目。
[0050]加載/存儲單元118(對應(yīng)于圖1的加載/存儲單元118)可操作以將一對加載鎖定操作作為單個(gè)原子單元來執(zhí)行且進(jìn)一步可操作以將一對有條件存儲操作作為單個(gè)原子單元來執(zhí)行。舉例來說,代表性的第一對加載鎖定操作381被展示為包含在第一線程或處理器301的可執(zhí)行程序303內(nèi)的加載鎖定寫入索引指令和加載鎖定數(shù)據(jù)指令(即,LL(WriteIndex)指令和LL(data)指令,如圖3所示)。作為另一實(shí)例,可執(zhí)行程序303的有條件存儲數(shù)據(jù)指令和有條件存儲寫入索引指令(即,SC(data)指令和SC(WriteIndeX+l)指令,如圖3所示)形成了代表性的第一對有條件存儲操作382。
[0051]在操作中,第一線程或處理器301可接收包含第一對加載鎖定操作381的可執(zhí)行程序303。舉例來說,第一線程或處理器301可從圖1的設(shè)備100的存儲器102接收可執(zhí)行程序303。作為響應(yīng),第一線程或處理器301可加載鎖定寫入索引360且加載鎖定下一個(gè)可用數(shù)據(jù)條目(例如,第二數(shù)據(jù)條目374)。也就是說,第一 ARR204和第三ARR304(其對應(yīng)于第一線程或處理器301且其可響應(yīng)于第一線程或處理器301而預(yù)留存儲器地址)可預(yù)留對應(yīng)于第二數(shù)據(jù)條目374的地址以及對應(yīng)于寫入索引360的地址(由圖4中的虛線說明)。
[0052]可響應(yīng)于第一線程或處理器301預(yù)留下一個(gè)可用數(shù)據(jù)條目而產(chǎn)生與第一對加載鎖定操作相關(guān)聯(lián)的有效位。舉例來說,可在最初設(shè)定有效位216和有效位328。在特定說明性實(shí)施例中且如圖3中所描繪,如所說明,有效位最初被設(shè)定為“I”。在另一特定說明性實(shí)施例中,有效位最初被設(shè)定為“O”。因此,應(yīng)了解,在圖3的特定說明性實(shí)施例中,第一線程或處理器301已經(jīng)由第一 ARR204和第三ARR304預(yù)留下一個(gè)可用數(shù)據(jù)條目。
[0053]在特定說明性實(shí)施例中,第二線程或處理器302可接收包含第二對加載鎖定操作383的可執(zhí)行程序305。作為響應(yīng),第二線程或處理器302可加載鎖定寫入索引360且加載鎖定下一個(gè)可用數(shù)據(jù)條目(例如,第二數(shù)據(jù)條目374)。第二 ARR232和第四ARR332(其對應(yīng)于第二線程或處理器302且其可響應(yīng)于第二線程或處理器302而預(yù)留存儲器地址)可預(yù)留對應(yīng)于第二數(shù)據(jù)條目374的地址以及對應(yīng)于寫入索引360的地址。
[0054]可響應(yīng)于第二線程或處理器302預(yù)留下一個(gè)可用數(shù)據(jù)條目(其仍可為第二數(shù)據(jù)條目374)而產(chǎn)生與第二對加載鎖定操作相關(guān)聯(lián)的有效位。舉例來說,有效位244和有效位354最初可設(shè)定為“I”。因此,應(yīng)了解,第一線程或處理器301和第二線程或處理器302可各自預(yù)留FIFO緩沖器370的下一個(gè)可用數(shù)據(jù)條目。如下文進(jìn)一步描述,可避免由嘗試存取同一資源(例如,F(xiàn)IFO緩沖器370和寫入索引360)的多個(gè)請求者(例如,第一線程或處理器301和第二線程或處理器302)造成的潛在沖突。
[0055]在執(zhí)行第一對加載鎖定操作381之后,第一線程或處理器301可嘗試執(zhí)行第一對有條件存儲操作382。第一線程或處理器301可引用有效位216、328來確定是否可成功完成第一對有條件存儲操作。舉例來說,如果自從執(zhí)行第一對加載鎖定操作381以來有效位216,328中的任一者的值已改變,那么第一對有條件存儲操作可能失敗,且作為響應(yīng),可產(chǎn)生指示第一對有條件存儲操作382的失敗的輸出。[0056]如果自從執(zhí)行第一對加載鎖定操作381以來有效位216和328都不改變,那么成功提交第一對有條件存儲操作382。舉例來說,第二數(shù)據(jù)條目374可充填有數(shù)據(jù)(例如,如圖3所示,寫入有數(shù)據(jù)2),且寫入索引值364可遞增以指向FIFO緩沖器370的下一個(gè)可用數(shù)據(jù)條目(例如,如由圖3中的虛線所示,指向第三數(shù)據(jù)條目376)??僧a(chǎn)生指示第一對有條件存儲指令382的成功的輸出。在特定說明性實(shí)施例中,所述輸出是提供給第一線程或處理器301的單個(gè)位,使得第一線程或處理器301可確定第一對有條件存儲指令382的成功或失敗。
[0057]響應(yīng)于充填第二數(shù)據(jù)條目374和更新寫入索引值364,有效位244、354可改變以反映請求者(即,第一線程或處理器301)已對第二數(shù)據(jù)條目374進(jìn)行寫入且更新寫入索引值364。舉例來說,第一線程或處理器301可包含可操作以清除(例如,復(fù)位到“O”)響應(yīng)于第一對加載鎖定操作382而設(shè)定的任何有效位的電路。因此,有效位244、354可改變到“O”值,如圖3中所描繪。舉例來說,第一線程或處理器301可將有效位244、354改變?yōu)椤癘”值以反映第一線程或處理器301已對第二數(shù)據(jù)條目374進(jìn)行寫入且已更新寫入索引值364以指向FIFO緩沖器370的新的下一個(gè)可用數(shù)據(jù)條目。
[0058]繼續(xù)設(shè)備300的實(shí)例操作,第二線程或處理器302在執(zhí)行第二對加載鎖定操作383之后且在第一線程或處理器301已執(zhí)行第一對有條件存儲操作382之后可嘗試執(zhí)行第二對有條件存儲操作384。第二線程或處理器302可引用有效位244、354來確定是否可成功完成第二對有條件存儲操作384。關(guān)于所描述的實(shí)例操作,第二線程或處理器302可確定第二對有條件存儲操作384已失敗,因?yàn)樽詮牡诙虞d鎖定操作383完成以來有效位244、354中的一者或一者以上已改變。
[0059]響應(yīng)于第二對有條件存儲操作384的失敗,第二線程或處理器302可在稍后重新嘗試執(zhí)行可執(zhí)行程序305。舉例來說,第二線程或處理器302可在稍后重新執(zhí)行第二對加載鎖定操作383和第二對有條件存儲操作384??蓤?zhí)行程序305的后續(xù)執(zhí)行可使得第二線程或處理器302能夠?qū)?shù)據(jù)寫入到FIFO緩沖器370,而不會覆寫由第一線程或處理器301寫入到FIFO緩沖器370的數(shù)據(jù)(即,寫入到第二數(shù)據(jù)條目374的數(shù)據(jù)2)。
[0060]如將了解的,圖3的設(shè)備300可便于多個(gè)請求者(例如,第一線程或處理器301和第二線程或處理器302)共享資源(例如,F(xiàn)IFO緩沖器370和寫入索引360)??稍诓绘i定資源的情況下共享所述資源,因?yàn)槊恳徽埱笳呖纱_定另一資源是否已存取或改變所述資源。設(shè)備300可因此減少請求者等待存取資源的情況(例如,瓶頸)。將進(jìn)一步了解,圖3的設(shè)備300可促進(jìn)支撐于核心芯片內(nèi)的事務(wù)型存儲器(例如,不具有外部電路,例如高速緩存、總線或存儲器支持元件)。
[0061]參考圖4,說明計(jì)算機(jī)實(shí)施的方法400的特定實(shí)施例。計(jì)算機(jī)實(shí)施的方法400包含在404處接收包含一對加載鎖定指令的第一 VLIW包以及在408處使用一對地址預(yù)留寄存器來執(zhí)行所述對加載鎖定指令。舉例來說,參考圖1,第一 VLIW包101可包含待執(zhí)行的一對加載鎖定指令。作為另一實(shí)例,可使用加載/存儲單元118和120內(nèi)的一對地址預(yù)留寄存器204和304來執(zhí)行所述對加載鎖定指令。雖然不要求,但是所述對加載鎖定指令可以不可分割地聯(lián)系(例如,并行地或大體上并行地執(zhí)行)。
[0062]方法400進(jìn)一步包含在412處接收包含將不可分割地執(zhí)行的第二對指令的第二VLIW包,其中所述第二對指令中的至少一者是有條件存儲指令。作為一實(shí)例,第二對有條件存儲指令可為由所述線程或處理器中的一者執(zhí)行的SC(Data)和SC(Writelndex+l)指令,如303和305處展示。
[0063]方法400進(jìn)一步包含在416處確定地址預(yù)留寄存器是否有效。舉例來說,可通過圖1的設(shè)備100的測試邏輯模塊124來評估對應(yīng)于所述至少一個(gè)有條件存儲指令的地址預(yù)留寄存器內(nèi)的狀態(tài)位。
[0064]當(dāng)確定所述地址預(yù)留寄存器不是有效時(shí),可在422處提供所述有條件存儲指令的執(zhí)行失敗的指示,且可重新嘗試執(zhí)行所述對加載鎖定指令(例如,通過返回到執(zhí)行步驟408)。舉例來說,如果確定第二對指令中的任一指令已失敗,那么第二對指令中的兩個(gè)指令都被視為已失敗(例如,沒有提交第二對指令中的任一指令)。
[0065]當(dāng)確定所述地址預(yù)留寄存器有效時(shí),可在418處提供所述有條件存儲指令的執(zhí)行成功的指示,且可用對應(yīng)于所述有條件存儲指令的數(shù)據(jù)來更新至少一個(gè)存儲器位置,如420處展示。舉例來說,測試邏輯124可確定成功操作已發(fā)生且可將所述有條件存儲操作的輸出寫入到圖1的通用寄存器126。作為另一實(shí)例,如圖3所示,可將執(zhí)行有條件存儲指令的結(jié)果寫入到FIFO緩沖器370。根據(jù)特定實(shí)施例,第二對指令進(jìn)一步包含第二有條件存儲指令,且更新至少一個(gè)存儲器位置進(jìn)一步包含更新對應(yīng)于所述第二有條件存儲指令的存儲器位置(例如,響應(yīng)于確定有條件存儲指令兩者的成功而提交所述有條件存儲指令兩者)。
[0066]計(jì)算機(jī)實(shí)施的方法400包含執(zhí)行包含事務(wù)型存儲器操作的程序。事務(wù)型存儲器操作可包含將不可分割地執(zhí)行的指令(例如,所述指令作為單個(gè)原子單元要么成功要么失敗)。舉例來說,不可分割地執(zhí)行的事務(wù)型存儲器操作可包含加載-修改-存儲序列,如本文中參考圖3所描述。也就是說,如果將不可分割地執(zhí)行加載-修改-存儲序列,那么要么整個(gè)加載-修改-存儲序列失敗,要么整個(gè)加載-修改-存儲序列成功。可響應(yīng)于整個(gè)加載-修改-存儲序列的失敗而重試整個(gè)加載-修改-存儲序列。
[0067]事務(wù)型存儲器操作可包含不可分割地聯(lián)系(例如,并行地或大體上并行地執(zhí)行)的操作。不可分割地聯(lián)系的第一和第二存儲器操作可被分封在一起或分組到共同的包中。不可分割地聯(lián)系的第一和第二存儲器操作可為一對加載鎖定操作或一對有條件存儲操作。通過圖3的可執(zhí)行程序303的所述對有條件存儲操作382來展示一對不可分割地聯(lián)系的有條件存儲操作的實(shí)例。
[0068]在特定實(shí)施例中,不可分割地執(zhí)行第一加載-修改-存儲序列和第二加載-修改-存儲序列(例如,如果任一序列失敗,那么兩個(gè)序列都被視為已失敗)。通過圖3的可執(zhí)行程序303的執(zhí)行來說明一對不可分割地執(zhí)行的加載-修改-存儲操作的實(shí)例(即,對應(yīng)于FIFO緩沖器370的加載-修改-存儲序列和對應(yīng)于寫入索引360的加載-修改-存儲序列)。
[0069]可通過極長指令字(VLIW)處理器處的單個(gè)VLIW包來不可分割地執(zhí)行第一和第二存儲器操作。舉例來說,設(shè)備100內(nèi)的處理器可執(zhí)行圖1的VLIW指令包101內(nèi)的有條件存儲指令103和加載或存儲指令104,如本文中所描述。VLIW處理器可經(jīng)配置以確定將不可分割地更新對應(yīng)于第一和第二存儲器操作的第一和第二存儲器位置(例如,將不可分割地更新圖3的FIFO緩沖器370的數(shù)據(jù)條目和寫入索引值364)。
[0070]在特定說明性實(shí)施例中,第一存儲器操作包含讀取VLIW處理器的第一存儲器位置處的數(shù)據(jù),且第二存儲器操作包含讀取VLIW處理器的第二存儲器位置處的數(shù)據(jù)。在另一實(shí)例中,可讀取FIFO緩沖器內(nèi)的數(shù)據(jù)元素,且可讀取寫入索引的寫入索引值。在另一說明性實(shí)施例中,第一存儲器操作包含對應(yīng)于VLIW處理器的第一存儲器位置的存儲操作,且第二存儲器操作包含對應(yīng)于VLIW處理器的第二存儲器位置的存儲操作。在特定說明性實(shí)施例中,第一存儲器位置是FIFO緩沖器370內(nèi)的位置,且第二存儲器位置是圖3的寫入索引值364。在特定說明性實(shí)施例中,所述存儲操作中的一者或一者以上是有條件存儲操作。
[0071]在特定說明性實(shí)施例中,第一存儲器位置處的操作是有條件存儲操作,且第二存儲器位置處的操作是無條件存儲指令。因此,有條件存儲指令和無條件存儲指令兩者都可執(zhí)行且可更新存儲器。
[0072]參考圖5,描繪了包含處理器510的電子裝置的特定說明性實(shí)施例的框圖且將所述電子裝置整體表示為500,所述處理器包含圖1的設(shè)備100的第一加載/存儲單元118和第二加載/存儲單元120。電子裝置500進(jìn)一步可包含參考圖1到3描述的元件、可根據(jù)圖4的方法來操作,或其任一組合。
[0073]第一加載/存儲單元118可包含第一地址預(yù)留寄存器(ARR) 204和第二 ARR232。第二加載/存儲單元120可包含第三ARR304和第四ARR332??商峁﹥蓚€(gè)以上加載/存儲單元。
[0074]處理器510可耦合到存儲器532。存儲器532可包含將由處理器510執(zhí)行的指令533。舉例來說,指令533可包含VLIW指令包101,所述VLIW指令包包含圖1的有條件存儲指令103和加載或存儲指令104。
[0075]圖5還展示耦合到處理器510且耦合到顯示器528的顯示控制器526。編碼器/解碼器(編解碼器)534還可耦合到處理器510。揚(yáng)聲器536和麥克風(fēng)538可耦合到編解碼器 534。
[0076]圖5還指示無線控制器540可耦合到處理器510且耦合到無線天線542。在特定實(shí)施例中,處理器510、顯示控制器526、存儲器532、編解碼器534和無線控制器540包含在系統(tǒng)級封裝或系統(tǒng)單芯片裝置522中。在特定實(shí)施例中,輸入裝置530和電力供應(yīng)器544耦合到系統(tǒng)單芯片裝置522。此外,在特定實(shí)施例中,如圖5中所說明,顯示器528、輸入裝置530、揚(yáng)聲器536、麥克風(fēng)538、無線天線542和電力供應(yīng)器544在系統(tǒng)單芯片裝置522外部。然而,顯示器528、輸入裝置530、揚(yáng)聲器536、麥克風(fēng)538、無線天線542和電力供應(yīng)器544中的每一者可耦合到系統(tǒng)單芯片裝置522的組件,例如接口或控制器。
[0077]所屬領(lǐng)域的技術(shù)人員將進(jìn)一步了解,結(jié)合本文中所揭示的實(shí)施例而描述的各種說明性邏輯塊、配置、模塊、電路以及算法步驟可實(shí)施為電子硬件、計(jì)算機(jī)軟件或兩者的組合。上文已大體在功能性方面描述各種說明性組件、塊、配置、模塊、電路和步驟。此類功能性是實(shí)施為硬件還是軟件取決于特定應(yīng)用以及施加于整個(gè)系統(tǒng)的設(shè)計(jì)約束。所屬領(lǐng)域的技術(shù)人員可針對每一特定應(yīng)用以不同方式實(shí)施所描述功能性,但此些實(shí)施決策不應(yīng)被解釋為導(dǎo)致偏離本發(fā)明的范圍。
[0078]結(jié)合本文所揭示的實(shí)施例而描述的方法或算法的步驟可直接以硬件、由處理器執(zhí)行的軟件模塊或上述兩者的組合來體現(xiàn)。軟件模塊可駐存在隨機(jī)存取存儲器(RAM)、快閃存儲器、只讀存儲器(ROM)、可編程只讀存儲器(PROM)、可擦可編程只讀存儲器(EPROM)、電可擦可編程只讀存儲器(EEPROM)、寄存器、硬盤、可裝卸磁盤、壓縮光盤只讀存儲器(CD-ROM),或本領(lǐng)域中已知的任一其它形式的存儲媒體。示范性非暫時(shí)性(例如,有形)存儲媒體耦合到處理器,使得處理器可從存儲媒體讀取信息以及將信息寫入到存儲媒體。在替代方案中,存儲媒體可與處理器成一體。處理器和存儲媒體可駐留在專用集成電路(ASIC)中。ASIC可駐留在計(jì)算裝置或用戶終端中。在替代方案中,處理器和存儲媒體可作為離散組件駐留在計(jì)算裝置或用戶終端中。
[0079]提供對所揭示實(shí)施例的先前描述是為了使所屬領(lǐng)域的技術(shù)人員能夠制造或使用所揭示實(shí)施例。對于所屬領(lǐng)域的技術(shù)人員來說,對這些實(shí)施例的各種修改將為顯而易見的,且可在不偏離本發(fā)明的范圍的情況下將本文中所定義的原理應(yīng)用于其它實(shí)施例。因此,本發(fā)明無意限于本文中所展示的實(shí)施例,而是將賦予本發(fā)明與如由所附權(quán)利要求書界定的原理和新穎特征一致的可能的最廣范圍。
【權(quán)利要求】
1.一種設(shè)備,其包括: 極長指令字VLIW處理器,其可操作以執(zhí)行VLIW指令,所述VLIW指令中的至少一者包含第一加載或存儲指令和第二加載或存儲指令,其中所述第一指令和所述第二指令是作為單個(gè)原子單元來執(zhí)行,其中所述第一和第二指令中的至少一者是有條件存儲指令。
2.根據(jù)權(quán)利要求1所述的設(shè)備,其中只有當(dāng)確定存儲于對應(yīng)于所述有條件存儲指令的地址預(yù)留寄存器處的有效位有效時(shí)所述有條件存儲指令才提交。
3.根據(jù)權(quán)利要求2所述的設(shè)備,其中所述地址預(yù)留寄存器經(jīng)配置以存儲與所述有條件存儲指令相關(guān)聯(lián)的預(yù)留地址。
4.根據(jù)權(quán)利要求1所述的設(shè)備,其中所述有條件存儲指令的執(zhí)行經(jīng)配置以提供執(zhí)行成功的指示和執(zhí)行失敗的指示中的一者。
5.根據(jù)權(quán)利要求4所述的設(shè)備,其中響應(yīng)于所述執(zhí)行成功的指示,用對應(yīng)于所述有條件存儲指令的數(shù)據(jù)來更新所述VLIW處理器的至少一個(gè)存儲器位置,且其中響應(yīng)于所述執(zhí)行失敗的指示,不用對應(yīng)于所述有條件存儲指令的所述數(shù)據(jù)來更新所述VLIW處理器的所述至少一個(gè)存儲器位置。
6.根據(jù)權(quán)利要求5所述的設(shè)備,其中所述VLIW處理器的所述至少一個(gè)存儲器位置包含先進(jìn)先出FIFO緩沖器的條目以及對應(yīng)于所述FIFO緩沖器的所述條目的寫入索引。
7.根據(jù)權(quán)利要求5所述的設(shè)備,其中所述VLIW處理器經(jīng)配置以響應(yīng)于所述執(zhí)行失敗的指示而重新嘗試執(zhí)行所述至少一個(gè)VLIW指令。
8.根據(jù)權(quán)利要求1所述的設(shè)備,其中將所述第一和第二指令作為單個(gè)原子單元來不可分割地執(zhí)行包括確定所述第一和第二指令兩者都已成功或所述第一和第二指令兩者都已失敗。
9.一種計(jì)算機(jī)實(shí)施的方法,其包括執(zhí)行包含事務(wù)型存儲器操作的程序,所述事務(wù)型存儲器操作包含不可分割地聯(lián)系到第二存儲器操作的第一存儲器操作,其中所述第一和第二存儲器操作是在VLIW處理器處通過單個(gè)極長指令字VLIW包來執(zhí)行。
10.根據(jù)權(quán)利要求9所述的計(jì)算機(jī)實(shí)施的方法,其中所述第一存儲器操作包含讀取所述VLIW處理器的第一存儲器位置處的數(shù)據(jù),且其中所述第二存儲器操作包含讀取所述VLIff處理器的第二存儲器位置處的數(shù)據(jù)。
11.根據(jù)權(quán)利要求10所述的計(jì)算機(jī)實(shí)施的方法,其中讀取所述第一存儲器位置處的所述數(shù)據(jù)和讀取所述第二存儲器位置處的所述數(shù)據(jù)是經(jīng)由一對加載鎖定指令來執(zhí)行。
12.根據(jù)權(quán)利要求9所述的計(jì)算機(jī)實(shí)施的方法,其中所述第一存儲器操作包含對應(yīng)于所述VLIW處理器的第一存儲器位置的存儲操作,且其中所述第二存儲器操作包含對應(yīng)于所述VLIW處理器的第二存儲器位置的存儲操作。
13.根據(jù)權(quán)利要求12所述的計(jì)算機(jī)實(shí)施的方法,其中所述第一存儲器位置處的所述存儲操作是有條件存儲操作。
14.根據(jù)權(quán)利要求13所 述的計(jì)算機(jī)實(shí)施的方法,其中所述第二存儲器位置處的所述存儲操作是無條件存儲指令。
15.根據(jù)權(quán)利要求13所述的計(jì)算機(jī)實(shí)施的方法,其中執(zhí)行所述程序進(jìn)一步包括確定有條件存儲指令是否成功。
16.根據(jù)權(quán)利要求9所述的計(jì)算機(jī)實(shí)施的方法,其中執(zhí)行所述程序進(jìn)一步包括確定將不可分割地更新所述VLIW處理器的與所述第一操作對應(yīng)的第一存儲器位置和所述VLIW處理器的與所述第二操作對應(yīng)的第二存儲器位置。
17.—種設(shè)備,其包括: 多線程處理器,其包含加載/存儲單元,所述加載/存儲單元包含指派給每一線程的多個(gè)地址預(yù)留寄存器,所述地址預(yù)留寄存器中的每一者用以存儲與加載鎖定有條件存儲操作對相關(guān)聯(lián)的預(yù)留地址。
18.根據(jù)權(quán)利要求17所述的設(shè)備,其中所述多線程處理器是多處理器架構(gòu)中的多個(gè)處理器中的一者,且其中所述處理器中的每一者包含多個(gè)地址預(yù)留寄存器。
19.根據(jù)權(quán)利要求18所述的設(shè)備,其中在完成所述加載鎖定有條件存儲操作對之前檢查所述地址預(yù)留寄存器包括確定對應(yīng)于所述地址預(yù)留寄存器中的一者的數(shù)據(jù)是否已改變。
20.根據(jù)權(quán)利要求19所述的設(shè)備,其中所述加載鎖定有條件存儲操作對響應(yīng)于確定對應(yīng)于所述地址預(yù)留寄存器中的僅一者的所述數(shù)據(jù)已改變而失敗。
21.—種設(shè)備,其包括: 用于執(zhí)行極長指令字VLIW指令的裝置,其中所述VLIW指令中的至少一者包含第一加載或存儲指令和第二加載或存儲指令,其中所述第一指令和所述第二指令是作為單個(gè)原子單元來不可分割地執(zhí)行,其中所述第一和第二指令中的至少一者是有條件存儲指令;以及 用于存儲數(shù)據(jù)的裝置,其 中所述用于存儲數(shù)據(jù)的裝置對所述用于執(zhí)行VLIW指令的裝置作出響應(yīng)。
22.根據(jù)權(quán)利要求21所述的設(shè)備,其中所述用于執(zhí)行VLIW指令的裝置包括VLIW處理器。
23.根據(jù)權(quán)利要求22所述的設(shè)備,其中所述VLIW處理器是多線程VLIW處理器,且其中所述多線程VLIW處理器的多個(gè)線程中的每一者被指派給多個(gè)地址預(yù)留寄存器。
24.根據(jù)權(quán)利要求21所述的設(shè)備,其中所述用于存儲數(shù)據(jù)的裝置包括先進(jìn)先出FIFO緩沖器和寫入索引。
25.根據(jù)權(quán)利要求21所述的設(shè)備,其中不可分割地執(zhí)行所述第一和第二指令包括產(chǎn)生指示與所述有條件存儲指令相關(guān)聯(lián)的成功或失敗的至少一個(gè)輸出。
26.根據(jù)權(quán)利要求25所述的設(shè)備,其中所述用于執(zhí)行VLIW指令的裝置經(jīng)配置以響應(yīng)于所述至少一個(gè)輸出指示成功而更新所述用于存儲數(shù)據(jù)的裝置處的數(shù)據(jù)。
27.一種計(jì)算機(jī)可讀有形媒體,其存儲可由計(jì)算機(jī)執(zhí)行以執(zhí)行包含事務(wù)型存儲器操作的程序的指令,所述事務(wù)型存儲器操作包含不可分割地聯(lián)系到第二存儲器操作的第一存儲器操作,其中所述第一和第二存儲器操作是在VLIW處理器處通過單個(gè)極長指令字VLIW包來執(zhí)行。
28.根據(jù)權(quán)利要求27所述的計(jì)算機(jī)可讀有形媒體,其中所述第一存儲器操作與所述第二存儲器操作經(jīng)由相應(yīng)的第一和第二加載/存儲單元大體上并行地執(zhí)行。
29.根據(jù)權(quán)利要求28所述的計(jì)算機(jī)可讀有形媒體,其中所述第一和第二存儲器操作是有條件存儲存儲器操作。
30.一種設(shè)備,其包括: 極長指令字VLIW處理器,其包含: 緩沖器,其包含多個(gè)數(shù)據(jù)條目;寫入索引,其可操作以選擇性地指向所述多個(gè)數(shù)據(jù)條目中的每一者;以及 加載/存儲單元,其可操作以將一對加載/鎖定操作作為單個(gè)原子單元來執(zhí)行且進(jìn)一步可操作以將一對有條件存儲操作作為單個(gè)原子單元來執(zhí)行。
31.根據(jù)權(quán)利要求30所述的設(shè)備,其中執(zhí)行所述對加載鎖定操作包括在所述數(shù)據(jù)條目中的一者處和所述寫入索引處讀取第一值,且其中執(zhí)行所述對有條件存儲指令包括在所述一個(gè)數(shù)據(jù)條目處和所述寫入索引處存儲第二值。
32.根據(jù)權(quán)利要求31所述的設(shè)備,其進(jìn)一步包括用以確定在執(zhí)行所述對加載鎖定操作之后所述第一值是否已更改的邏輯。
33.根據(jù)權(quán)利要求32所述的設(shè)備,其進(jìn)一步包括多個(gè)地址預(yù)留寄存器,其中所述地址預(yù)留寄存器經(jīng)配置以存儲各自與所述對加載鎖定操作相關(guān)聯(lián)的預(yù)留地址和有效位。
34.根據(jù)權(quán)利要求30所述的設(shè)備,其中所述VLIW處理器可操作以經(jīng)由所述對加載鎖定操作和所述對有條件存儲指令 來不可分割地執(zhí)行一對加載-修改-寫入操作。
【文檔編號】G06F9/38GK103814354SQ201280045488
【公開日】2014年5月21日 申請日期:2012年9月24日 優(yōu)先權(quán)日:2011年9月23日
【發(fā)明者】埃里克·J·普隆德克, 阿賈伊·A·英格爾, 盧奇安·科德雷斯庫 申請人:高通股份有限公司