欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

共享的運(yùn)算對(duì)稱(chēng)的、更新敏感的變量的制作方法

文檔序號(hào):6535705閱讀:217來(lái)源:國(guó)知局
共享的運(yùn)算對(duì)稱(chēng)的、更新敏感的變量的制作方法
【專(zhuān)利摘要】本公開(kāi)總體上涉及共享的運(yùn)算對(duì)稱(chēng)的更新敏感的變量。實(shí)施例包括多處理器系統(tǒng),包括多核處理器系統(tǒng),以及用于操作這種系統(tǒng)的方法,其中至少一個(gè)處理器或者處理器核被配置為接收指示該至少一個(gè)處理器核讀取與存儲(chǔ)器地址相關(guān)聯(lián)的值的指令。響應(yīng)于接收到該指令并且在該指令的執(zhí)行之前,該至少一個(gè)處理器或者處理器核使多個(gè)相互通信地彼此耦合的處理器核中的處理器核提供多個(gè)本地存儲(chǔ)的值,這些本地存儲(chǔ)值被分別存儲(chǔ)在相應(yīng)的處理器核中并且與該存儲(chǔ)器地址相關(guān)聯(lián)。
【專(zhuān)利說(shuō)明】共享的運(yùn)算對(duì)稱(chēng)的、更新敏感的變量
[0001]相關(guān)申請(qǐng)交叉引用
[0002]本公開(kāi)要求與2013年I月14日提交的美國(guó)臨時(shí)專(zhuān)利申請(qǐng)N0.61/752,271的優(yōu)先權(quán),其通過(guò)整體引用并入本文。
【技術(shù)領(lǐng)域】
[0003]本發(fā)明的實(shí)施例涉及多處理器系統(tǒng)中的共享存儲(chǔ)器地址,并且更具體地涉及處置共享的運(yùn)算對(duì)稱(chēng)的(op-symmetric)、更新敏感(update-sensitive)的變量。
【背景技術(shù)】
[0004]在多處理器系統(tǒng)或多核(core)處理器系統(tǒng)中,一些變量由處理器的所有核或者由系統(tǒng)內(nèi)的所有處理器共享。傳統(tǒng)上,對(duì)共享變量的更新通過(guò)全局唯一序列化點(diǎn)進(jìn)行。例如,硬件高速緩存相干性和信號(hào)量系統(tǒng)通常需要在讀改寫(xiě)期間維持共享變量的一致性。對(duì)于特定類(lèi)型的變量(諸如經(jīng)常被更新但是很少被讀取的變量),多個(gè)處理器彼此競(jìng)爭(zhēng)以更新共享存儲(chǔ)器中的變量。并且存儲(chǔ)器競(jìng)爭(zhēng)由于重試或者阻擋條件而導(dǎo)致降低的性能。例如,在第一處理器讀取共享計(jì)數(shù)器時(shí),第二處理器對(duì)共享計(jì)數(shù)器的訪問(wèn)被阻擋。第二處理器在完成其更新操作之前等待共享存儲(chǔ)器變得可用。在其他示例中,諸如精簡(jiǎn)指令集計(jì)算(RISC)架構(gòu),軟件讀取變量并且隨后嘗試對(duì)相同變量進(jìn)行寫(xiě)入。但是如果對(duì)變量的另一訪問(wèn)在第一讀取之后發(fā)生,硬件將不執(zhí)行后續(xù)寫(xiě)入。

【發(fā)明內(nèi)容】

[0005]在各實(shí)施例中,本公開(kāi)提供多處理器系統(tǒng),其中至少一個(gè)處理器或者處理器核被配置為接收用以指示所述至少一個(gè)處理器核讀取與存儲(chǔ)器地址相關(guān)聯(lián)的值的指令。響應(yīng)于接收到所述指令并且在所述指令的執(zhí)行之前,所述至少一個(gè)處理器或者處理器核使所述多個(gè)相互通信地彼此耦合的處理器核中的處理器核提供多個(gè)本地存儲(chǔ)的值,所述本地存儲(chǔ)的值被分別存儲(chǔ)在相應(yīng)的所述處理器核中并且與所述存儲(chǔ)器地址相關(guān)聯(lián)。
[0006]在一些實(shí)施例中,多核處理器系統(tǒng)包括將所述處理器核互連的處理器結(jié)構(gòu)。所述至少一個(gè)處理器核被配置為使所述多個(gè)處理器核中的所述處理器核通過(guò)至少向所述處理器結(jié)構(gòu)發(fā)出針對(duì)所述存儲(chǔ)器地址的讀取命令,而提供與所述存儲(chǔ)器地址相關(guān)聯(lián)的所述本地存儲(chǔ)的值。所述處理器結(jié)構(gòu)被配置為響應(yīng)于所述讀取命令的接收而:從多數(shù)多個(gè)處理器核請(qǐng)求與所述存儲(chǔ)器地址相關(guān)聯(lián)的所述本地存儲(chǔ)的值;至少基于由所述多個(gè)處理器核提供的所述本地存儲(chǔ)的值,確定與所述存儲(chǔ)器地址相關(guān)聯(lián)的所述值;以及向所述至少一個(gè)處理器核提供所述值。在一些實(shí)施例中,所述處理器結(jié)構(gòu)還被配置為處理所述本地存儲(chǔ)的值以確定所述值。在一些實(shí)施例中,所述至少一個(gè)處理器核還被配置為響應(yīng)于所述處理器結(jié)構(gòu)的請(qǐng)求,提供其自己的與所述存儲(chǔ)器地址相關(guān)聯(lián)的本地存儲(chǔ)的值的拷貝。
[0007]在一些實(shí)施例中,所述至少一個(gè)處理器核還被配置為確定所述存儲(chǔ)器地址是一組預(yù)定存儲(chǔ)器地址之一,并且使所述多個(gè)處理器核響應(yīng)于所述存儲(chǔ)器地址是所述組之一的確定而使所述多個(gè)處理器核提供所述本地存儲(chǔ)的值。在一些實(shí)施例中,所述至少一個(gè)處理器核還被配置為響應(yīng)于用以向所述存儲(chǔ)器地址進(jìn)行寫(xiě)入的另一指令的接收,而響應(yīng)于所述存儲(chǔ)器地址是所述組之一的至少另一確定而更新其自己的與所述存儲(chǔ)器地址相關(guān)聯(lián)的本地存儲(chǔ)的值。
[0008]在一些實(shí)施例中,所述至少一個(gè)處理器核被配置為使多個(gè)相互通信地彼此耦合的處理器核中的處理器核提供計(jì)數(shù)器值,所述計(jì)數(shù)器值與所述存儲(chǔ)器地址相關(guān)聯(lián)并且被本地存儲(chǔ)在所述處理器核中相應(yīng)的所述處理器核中。
[0009]在一些實(shí)施方式中,所述至少一個(gè)處理器核還被配置為使所述多個(gè)處理器核通過(guò)至少在處理器總線上發(fā)出針對(duì)所述存儲(chǔ)器地址的讀取命令,而提供與所述存儲(chǔ)器地址相關(guān)聯(lián)的所述本地存儲(chǔ)的值。所述至少一個(gè)處理器核還被配置為經(jīng)由所述總線接收與所述存儲(chǔ)器地址相關(guān)聯(lián)的值,所述值基于由所述多個(gè)處理器核提供的所述本地存儲(chǔ)的值。
[0010]在一些實(shí)施例中,所述至少一個(gè)處理器核還被配置為響應(yīng)于用以對(duì)所述存儲(chǔ)器地址進(jìn)行寫(xiě)入的另一指令的接收,更新其自己的與所述存儲(chǔ)器地址相關(guān)聯(lián)的本地存儲(chǔ)的值。
[0011]在各實(shí)施例中,本公開(kāi)提供用于在多核處理器系統(tǒng)中保持與共享存儲(chǔ)器地址相關(guān)聯(lián)的值的同步的方法。所述方法包括由所述多核處理器系統(tǒng)的多個(gè)互連的處理器核中的一個(gè)處理器核接收計(jì)算機(jī)指令,所述計(jì)算機(jī)指令用以讀取與所述共享存儲(chǔ)器地址相關(guān)聯(lián)的所述值。響應(yīng)于所述計(jì)算機(jī)指令的接收并且在所述計(jì)算機(jī)指令的執(zhí)行之前,使得所述多核處理器系統(tǒng)的所述多個(gè)處理器核中的其他處理器核提供本地存儲(chǔ)的值,所述本地存儲(chǔ)的值與所述共享存儲(chǔ)器地址相關(guān)聯(lián)并且被本地存儲(chǔ)在所述多個(gè)處理器核的各其他處理器核上
[0012]在一些實(shí)施例中,所述多個(gè)處理器核中的所述一個(gè)處理器核發(fā)出針對(duì)與所述共享存儲(chǔ)器地址相關(guān)聯(lián)的所述值的讀取命令。處理器互連響應(yīng)于所述讀取命令的接收而向所述多核處理器系統(tǒng)的所述多個(gè)處理器核,發(fā)出針對(duì)與所述共享存儲(chǔ)器地址相關(guān)聯(lián)的所述本地存儲(chǔ)的值的請(qǐng)求。在一些實(shí)施例中,所述發(fā)出所述請(qǐng)求包括向所述多個(gè)處理器核中的所述一個(gè)處理器核發(fā)出請(qǐng)求。在一些實(shí)施例中,所述方法還包括:由所述處理器互連確定所述共享存儲(chǔ)器地址是一組預(yù)定存儲(chǔ)器地址之一,并且其中向所述多個(gè)處理器核發(fā)出所述請(qǐng)求是響應(yīng)于所述共享存儲(chǔ)器地址是所述組之一的確定。
[0013]在一些實(shí)施例中,所述方法包括由處理器互連從所述多個(gè)處理器核接收所述本地存儲(chǔ)的值。由所述處理器互連或所述多個(gè)處理器核中的所述一個(gè)處理器核之一,至少基于所述本地存儲(chǔ)的值來(lái)確定與所述共享存儲(chǔ)器地址相關(guān)聯(lián)的所述值。在一些實(shí)施例中,所述確定包括:處理所述本地存儲(chǔ)的值,以確定與所述共享存儲(chǔ)器地址相關(guān)聯(lián)的所述值。
[0014]在一些實(shí)施例中,所述方法包括:由所述至少一個(gè)處理器核接收與所述共享存儲(chǔ)器地址相關(guān)聯(lián)的所述值,所述值至少基于所述本地存儲(chǔ)的值的結(jié)合。
[0015]在一些實(shí)施例中,所述方法包括:由所述處理器核中的所述一個(gè)處理器核,確定所述共享存儲(chǔ)器地址是一組預(yù)定存儲(chǔ)器地址之一;以及響應(yīng)于所述共享存儲(chǔ)器地址是所述組之一,使所述多個(gè)處理器核提供所述本地存儲(chǔ)的值。
[0016]在一些實(shí)施例中,所述使得包括向處理器互連發(fā)出針對(duì)所述共享存儲(chǔ)器地址的讀取指令,所述處理器互連將所述多個(gè)處理器互連,并且其中所述方法還包括:從所述處理器互連接收與所述共享存儲(chǔ)器地址相關(guān)聯(lián)的所述值。
[0017]在一些實(shí)施例中,所述方法包括至少響應(yīng)于以下項(xiàng)而由所述多個(gè)處理器中的所述一個(gè)處理器更新其自己的與所述共享存儲(chǔ)器地址相關(guān)聯(lián)的本地存儲(chǔ)的值:接收到用以對(duì)所述存儲(chǔ)器地址進(jìn)行寫(xiě)入的另一計(jì)算機(jī)指令,以及所述共享存儲(chǔ)器地址是一組預(yù)定存儲(chǔ)器地址之一的確定。
[0018]在各實(shí)施例中,本公開(kāi)提供多核處理器系統(tǒng),包括:多個(gè)相互通信地彼此耦合的處理器核。所述多個(gè)處理器核中的至少一個(gè)處理器核被配置為:接收第一指令,所述第一指令指示所述至少一個(gè)處理器核讀取與第一存儲(chǔ)器地址相關(guān)聯(lián)的第一值;并且接收第二指令,所述第二指令指示所述至少一個(gè)處理器核讀取與第二存儲(chǔ)器地址相關(guān)聯(lián)的第二值。響應(yīng)于確定所述第一存儲(chǔ)器地址在預(yù)定的一組存儲(chǔ)器地址中,并且在所述第一指令的執(zhí)行之前,使所述多個(gè)相互通信地彼此耦合的處理器核中的處理器核提供多個(gè)本地存儲(chǔ)的值,所述本地存儲(chǔ)值被分別存儲(chǔ)在相應(yīng)的所述處理器核中并且與所述第一存儲(chǔ)器地址相關(guān)聯(lián)。響應(yīng)于確定所述第二存儲(chǔ)器地址不在所述預(yù)定的一組存儲(chǔ)器地址中,并且在所述第二指令的執(zhí)行之前,向共享存儲(chǔ)器發(fā)出針對(duì)與所述第二存儲(chǔ)器地址相關(guān)聯(lián)的所述第二值的讀取命令。在一些實(shí)施例中,所述多核處理器系統(tǒng)還包括將所述處理器核互連的處理器結(jié)構(gòu)。在一些實(shí)施例中,所述至少一個(gè)處理器核被配置為使所述多個(gè)處理器核中的所述處理器核通過(guò)至少向所述處理器結(jié)構(gòu)發(fā)出針對(duì)所述第一存儲(chǔ)器地址的另一讀取命令,來(lái)提供與所述第一存儲(chǔ)器地址相關(guān)聯(lián)的所述本地存儲(chǔ)的值。所述處理器結(jié)構(gòu)被配置為響應(yīng)于所述另一讀取命令的接收而:從所述多個(gè)處理器核請(qǐng)求與所述第一存儲(chǔ)器地址相關(guān)聯(lián)的所述本地存儲(chǔ)的值;至少基于由所述多個(gè)處理器核提供的所述本地存儲(chǔ)的值,確定與所述第一存儲(chǔ)器地址相關(guān)聯(lián)的所述第一值;以及向所述至少一個(gè)處理器核提供所述第一值。
[0019]在一些實(shí)施例中,所述處理器結(jié)構(gòu)還被配置為:響應(yīng)于接收到針對(duì)所述第一存儲(chǔ)器地址的所述另一讀取命令,從所述共享存儲(chǔ)器讀取與所述第一存儲(chǔ)器地址相關(guān)聯(lián)的臨時(shí)值;以及至少基于由所述多個(gè)處理器核提供的所述本地存儲(chǔ)的值以及所述臨時(shí)值,確定與所述第一存儲(chǔ)器地址相關(guān)聯(lián)的所述第一值。
[0020]在一些實(shí)施例中,所述至少一個(gè)處理器核還被配置為響應(yīng)于用以對(duì)所述第一存儲(chǔ)器地址進(jìn)行寫(xiě)入的另一指令的接收,并且響應(yīng)于所述第一存儲(chǔ)器地址是所述預(yù)定的一組存儲(chǔ)器地址之一的確定,更新其自己的與所述第一存儲(chǔ)器地址相關(guān)聯(lián)的本地存儲(chǔ)的值。
[0021]在一些實(shí)施例中,所述至少一個(gè)處理器核還被配置為使所述多個(gè)處理器核通過(guò)在處理器總線上發(fā)出針對(duì)所述存儲(chǔ)器地址的第一讀取命令而提供與所述第一存儲(chǔ)器地址相關(guān)聯(lián)的所述本地存儲(chǔ)的值。所述至少一個(gè)處理器核經(jīng)由所述總線接收與所述存儲(chǔ)器地址相關(guān)聯(lián)的所述第一值,所述第一值基于由所述多個(gè)處理器核提供的所述本地存儲(chǔ)的值中的一個(gè)或多個(gè)值以及存儲(chǔ)在所述臨時(shí)存儲(chǔ)器中的臨時(shí)值。
[0022]在一些實(shí)施例中,所述多核處理器系統(tǒng)包括處理器結(jié)構(gòu),所述處理器結(jié)構(gòu)將所述處理器核互連,并且被配置為利用信號(hào)量系統(tǒng)來(lái)保護(hù)所述共享存儲(chǔ)器。在一些實(shí)施例中,所述至少一個(gè)處理器核被配置為使所述多個(gè)相互通信地彼此耦合的處理器核中的所述處理器核提供計(jì)數(shù)器值,所述計(jì)數(shù)器值與所述第一存儲(chǔ)器地址相關(guān)聯(lián)并且被本地存儲(chǔ)在所述處理器核中相應(yīng)的所述處理器核中。
【專(zhuān)利附圖】

【附圖說(shuō)明】
[0023]通過(guò)結(jié)合附圖進(jìn)行的以下詳細(xì)描述將容易理解本發(fā)明的實(shí)施例。為了輔助描述,相同的附圖標(biāo)記指代相同結(jié)構(gòu)元素。本發(fā)明的實(shí)施例借由示例而非借由附圖中的圖中的限制進(jìn)行圖示。
[0024]圖1示意性地示出被配置為同步共享的運(yùn)算對(duì)稱(chēng)的更新敏感(SOSUS)的變量的多核處理器系統(tǒng)的不例。
[0025]圖2是根據(jù)各實(shí)施例的處理器對(duì)針對(duì)共享存儲(chǔ)器地址的存儲(chǔ)器訪問(wèn)指令做出響應(yīng)的方法的流程圖。
[0026]圖3是根據(jù)各實(shí)施例的處理器互連對(duì)用于讀取共享存儲(chǔ)器地址的指令做出響應(yīng)的方法的流程圖。
[0027]圖4是根據(jù)各實(shí)施例的如下方法的流程圖,在該方法中處理器確定用于對(duì)針對(duì)共享存儲(chǔ)器地址的存儲(chǔ)器訪問(wèn)指令做出響應(yīng)的處理。
[0028]圖5A至圖5C是根據(jù)各實(shí)施例的如下方法的流程圖,在該方法中處理器互連確定用于對(duì)針對(duì)共享存儲(chǔ)器地址的存儲(chǔ)器訪問(wèn)指令做出響應(yīng)的處理。
【具體實(shí)施方式】
[0029]本發(fā)明描述了一種用于同步多處理器系統(tǒng)(包括多核處理器系統(tǒng))中的變量的方法。用于更新某些變量(由查找表標(biāo)識(shí))的計(jì)算機(jī)指令(諸如軟件指令)導(dǎo)致由處理器本地執(zhí)行的寫(xiě)入——也就是說(shuō),對(duì)變量的存儲(chǔ)于處理器上的本地的、非高速緩存拷貝執(zhí)行寫(xiě)入。此外,對(duì)變量的軟件讀取由處理器全局執(zhí)行,這導(dǎo)致向處理器核發(fā)出的針對(duì)它們的本地存儲(chǔ)的值的探測(cè)(snoop)。更具體而言,請(qǐng)求處理器通過(guò)向共享存儲(chǔ)器地址發(fā)出針對(duì)變量的讀取命令來(lái)響應(yīng)于軟件指令而讀取變量。處理器互連或者處理器結(jié)構(gòu)接收讀取指令并且確定特定讀取請(qǐng)求是針對(duì)被指定為以本文所描述的方式進(jìn)行讀取的存儲(chǔ)器地址。取代向共享存儲(chǔ)器傳送讀取指令,處理器互連中的邏輯向處理器核發(fā)出探測(cè)命令,包括針對(duì)變量的本地存儲(chǔ)的值請(qǐng)求處理器核。處理器互連接收來(lái)自處理器的本地存儲(chǔ)的值,并且基于本地存儲(chǔ)的值確定針對(duì)變量的全局值。在一些實(shí)施例中,處理器互連也執(zhí)行針對(duì)臨時(shí)(或者基線)全局值對(duì)共享存儲(chǔ)器的讀取,并且從本地存儲(chǔ)的值以及存儲(chǔ)于共享存儲(chǔ)器中的基線/臨時(shí)值來(lái)確定全局值。例如,在一些實(shí)施例中處理器互連對(duì)本地存儲(chǔ)的值和來(lái)自共享存儲(chǔ)器的臨時(shí)值進(jìn)行求和以確定針對(duì)變量的全局值。在其他實(shí)施例中,使用其他處理來(lái)確定針對(duì)變量的全局值,諸如按位OR運(yùn)算。處理器互連隨后向請(qǐng)求處理器核提供全局值,該請(qǐng)求處理器核隨后使用全局值來(lái)執(zhí)行軟件指令。
[0030]某些類(lèi)型的變量是遵循以本文所描述的方式的處理的類(lèi)型的變量,本文被稱(chēng)作共享的運(yùn)算對(duì)稱(chēng)的更新敏感(SOSUS)的變量。在一個(gè)實(shí)施例中,SOSUS變量由多個(gè)處理器共享。運(yùn)算對(duì)稱(chēng)類(lèi)型的變量是由結(jié)合的(associative)和對(duì)稱(chēng)的運(yùn)算進(jìn)行更新的變量。例如,計(jì)數(shù)器是運(yùn)算對(duì)稱(chēng)的,因?yàn)?cnt+A)+B= (cnt+B)+A。在另一實(shí)施例中,按位OR是運(yùn)算對(duì)稱(chēng)的運(yùn)算,因?yàn)閂IbIc=vI (ClB)。更新敏感指的是這樣的事實(shí):系統(tǒng)通常對(duì)這樣的變量的更新延時(shí)敏感,而對(duì)這樣的變量的觀測(cè)(observational)延時(shí)不敏感。通過(guò)本地更新,更新延時(shí)與更新存儲(chǔ)于共享存儲(chǔ)器中的變量的全局值相比大大減少。盡管使用本文所描述的方式讀取變量導(dǎo)致與從共享存儲(chǔ)器簡(jiǎn)單讀取相比而潛在地更高的讀取延時(shí)(雖然并非必要),但是系統(tǒng)對(duì)于針對(duì)這些類(lèi)型的變量的讀取延時(shí)并不特別敏感,并且如果讀取延時(shí)增大,則對(duì)性能產(chǎn)生很小影響或者不產(chǎn)生影響。[0031]圖1示意性地示出被配置為同步SOSUS變量的多核處理器系統(tǒng)100的示例。系統(tǒng)100包括多個(gè)處理器102、104和106 (N個(gè),在圖1中也標(biāo)記為PO至P (N-1))。在一些實(shí)施例中,處理器102-106是被配置為執(zhí)行軟件指令的處理器核或者多個(gè)單處理器核。在一些實(shí)施例中,處理器102-106是專(zhuān)用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)或者其他硬件處理器類(lèi)型。系統(tǒng)100包括處理器互連116和共享存儲(chǔ)器150。處理器互連通信地互連處理器102-106。共享存儲(chǔ)器150由所有處理器102-106共享,共享存儲(chǔ)器150合適地包括各種類(lèi)型的存儲(chǔ)器(諸如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、閃存等)或者被包括在各種類(lèi)型的存儲(chǔ)器中。共享存儲(chǔ)器150包括全局可尋址的存儲(chǔ)器位置,該全局可尋址的存儲(chǔ)器位置可由處理器102-106中的多個(gè)處理器訪問(wèn)(例如能夠從其讀取和/或向其寫(xiě)入)。在執(zhí)行向共享存儲(chǔ)器150內(nèi)的共享存儲(chǔ)器位置寫(xiě)入時(shí),當(dāng)存儲(chǔ)器位置正在被更新時(shí),處理器互連116采用基于信號(hào)量標(biāo)志系統(tǒng)或者其他機(jī)構(gòu)來(lái)將對(duì)共享存儲(chǔ)器位置的訪問(wèn)鎖定為其他處理。同樣,如下文將更具體描述的那樣,一些共享存儲(chǔ)器地址與存儲(chǔ)于處理器102-106上的本地存儲(chǔ)的值相關(guān)聯(lián)。處理器互連116針對(duì)其本地存儲(chǔ)的值探測(cè)處理器112-116,而非從共享存儲(chǔ)器150讀取存儲(chǔ)器地址或者除了從共享存儲(chǔ)器150讀取存儲(chǔ)器地址之外。
[0032]處理器102、104和106分別存儲(chǔ)本地存儲(chǔ)的值120、124和128。在一些實(shí)施例中,本地存儲(chǔ)的值120、124和128是存儲(chǔ)于處理器102-106的硬件計(jì)數(shù)器中的計(jì)數(shù)器值。處理器102-106(靜態(tài)地或者通過(guò)合適的計(jì)算機(jī)指令)被配置為關(guān)聯(lián)本地存儲(chǔ)的值120、124和128與特定的共享存儲(chǔ)器地址。本地存儲(chǔ)的值120、124和128中的每個(gè)值與相同的共享存儲(chǔ)器地址相關(guān)聯(lián)。
[0033]存儲(chǔ)于處理器102-106上的查找表(“LUT”) 122、126和130標(biāo)識(shí)一個(gè)或者多個(gè)共享存儲(chǔ)器地址,針對(duì)該共享存儲(chǔ)器地址將根據(jù)本文所描述的處理來(lái)處置軟件指令(例如本地更新和全局讀取)。LUT122U26和130也標(biāo)識(shí)與將根據(jù)本文所描述的處理來(lái)處置的那些共享存儲(chǔ)器地址相關(guān)聯(lián)的本地存儲(chǔ)變量。例如,LUT122U26和130標(biāo)識(shí)SOSUS變量和/或其他類(lèi)型的變量。在相同或不同實(shí)施例中,LUT122U24和126也或者備選地標(biāo)識(shí)共享存儲(chǔ)器地址,針對(duì)該共享存儲(chǔ)器地址以其他方式處理軟件指令,諸如通過(guò)對(duì)共享存儲(chǔ)器的常規(guī)讀取和寫(xiě)入。在圖1中示出的示例實(shí)施例中,LUT122將值120標(biāo)識(shí)為與特定的共享存儲(chǔ)器地址相關(guān)聯(lián);LUT126將值124標(biāo)識(shí)為與相同的特定的共享存儲(chǔ)器地址相關(guān)聯(lián);并且LUT130將值128標(biāo)識(shí)為與相同的特定的共享存儲(chǔ)器地址相關(guān)聯(lián)。
[0034]處理器102中的讀取/寫(xiě)入邏輯執(zhí)行與對(duì)共享存儲(chǔ)器地址的讀取和寫(xiě)入相關(guān)的各種功能。邏輯134至少基于對(duì)LUT122的查找來(lái)標(biāo)識(shí)針對(duì)共享存儲(chǔ)器地址的處理。例如,處理器102接收并且調(diào)度用于對(duì)在第一共享存儲(chǔ)器地址處存儲(chǔ)的值進(jìn)行更新、增量和寫(xiě)入的軟件指令。邏輯134例如從LUT122確定將本地執(zhí)行對(duì)第一共享存儲(chǔ)器地址的更新。在確定將本地執(zhí)行對(duì)第一共享存儲(chǔ)器地址的讀取時(shí),邏輯134更新或者以其他任何方式使處理器102更新本地存儲(chǔ)于處理器102上的值120。在另一示例中,處理器102接收并且調(diào)度用于寫(xiě)入或者更新存儲(chǔ)于第二存儲(chǔ)器地址處的值的軟件指令。邏輯134從LUT122確定將全局執(zhí)行對(duì)第二共享存儲(chǔ)器地址的更新。在確定將全局執(zhí)行對(duì)第二共享存儲(chǔ)器地址的讀取時(shí),邏輯134經(jīng)由處理器總線108向處理器互連116發(fā)出或者以其他任何方式使處理器102發(fā)出寫(xiě)入指令,以在共享存儲(chǔ)器150內(nèi)的第二共享存儲(chǔ)器地址處存儲(chǔ)該值。[0035]在接收計(jì)算機(jī)指令或者調(diào)度計(jì)算機(jī)指令時(shí),為了讀取與第一存儲(chǔ)器地址相關(guān)聯(lián)的值,邏輯134經(jīng)由處理器總線108向處理器互連116發(fā)出或者以其他任何方式使處理器102發(fā)出寫(xiě)入指令。同樣,在接收軟件指令或者調(diào)度軟件指令時(shí),為了讀取與第二存儲(chǔ)器地址相關(guān)聯(lián)的值,邏輯134經(jīng)由處理器總線108向處理器互連116發(fā)出或者以其他任何方式使處理器102發(fā)出寫(xiě)入指令。
[0036]處理器104包括讀取/寫(xiě)入邏輯138,其與讀取/寫(xiě)入邏輯134以相同或相似方式起作用。而且,處理器106包括讀取/寫(xiě)入邏輯140,其與讀取/寫(xiě)入邏輯134以相同或相似方式起作用。
[0037]處理器互連116經(jīng)由處理器總線108、110和112通信地耦合至處理器102-106。在一個(gè)實(shí)施例中,處理器互連116支持處理器102-106彼此相互通信地彼此耦合以及將處理器102-106耦合至共享存儲(chǔ)器150。在處理器互連116從處理器102-106之一接收讀取指令時(shí),處理器互連116的存儲(chǔ)器讀取邏輯118確定針對(duì)來(lái)自LUT132的讀取指令的處理。
[0038]從請(qǐng)求處理器(例如,處理器102-106之一)接收到用以讀取與第一共享存儲(chǔ)器地址(即,由對(duì)LUT132的查找確定的與值120、124和128相關(guān)聯(lián)的存儲(chǔ)器地址)相關(guān)聯(lián)的值的命令將導(dǎo)致存儲(chǔ)器讀取邏輯118從處理器102-106中的每一個(gè)請(qǐng)求與第一共享存儲(chǔ)器地址相關(guān)聯(lián)的本地存儲(chǔ)的值120、124和128。例如,存儲(chǔ)器讀取邏輯118向處理器102-106發(fā)出指定第一共享存儲(chǔ)器地址的探測(cè)命令,這將導(dǎo)致處理器102-106提供本地存儲(chǔ)的值120,124 和 128。
[0039]在接收到本地存儲(chǔ)的值120、124和128之后,存儲(chǔ)器讀取邏輯118根據(jù)本地存儲(chǔ)的值120、124和128確定于第一共享存儲(chǔ)器地址相關(guān)聯(lián)的全局值,并且將全局值提供給請(qǐng)求處理器。在某些實(shí)施例中,除了從處理器102-106請(qǐng)求本地存儲(chǔ)的值之外,處理器互連116還從共享存儲(chǔ)器150讀取臨時(shí)值(例如,臨時(shí)值152),并且根據(jù)本地存儲(chǔ)的值120、124和128以及根據(jù)臨時(shí)值152來(lái)確定全局值。在某些實(shí)施例中,處理器102-106將本地存儲(chǔ)的值沖刷(flush)到共享存儲(chǔ)器,以便在處理器102-106上給諸如其他計(jì)數(shù)器值的其他值騰出空間。在某些實(shí)施例中,沖刷本地存儲(chǔ)的值包括清除本地存儲(chǔ)的值(諸如本地計(jì)數(shù)器值),并且使其被寫(xiě)入共享存儲(chǔ)器,諸如被寫(xiě)到臨時(shí)值152,其也是經(jīng)由與本地存儲(chǔ)的值120、124和128相關(guān)聯(lián)的共享存儲(chǔ)器地址而可尋址的。在某些實(shí)施例中,將本地存儲(chǔ)的值120、124和128沖刷到共享存儲(chǔ)器150中包括確定變量的全局值(包括針對(duì)其相應(yīng)的本地存儲(chǔ)的值120、124和128而探測(cè)處理器102-106,并且從共享存儲(chǔ)器150讀取臨時(shí)值152),將全局值作為讀取-修改-寫(xiě)入存儲(chǔ)到共享存儲(chǔ)器150中的臨時(shí)值152存儲(chǔ)器位置,并且清除處理器102-106中的本地存儲(chǔ)的值。
[0040]在某些實(shí)施例中,處理器102-106在進(jìn)入低功率模式之前將其值120、124或128沖刷到共享存儲(chǔ)器150,低功率模式諸如關(guān)機(jī)模式、節(jié)電模式或者其他模式。沖刷操作包括對(duì)臨時(shí)值152的讀取-修改-寫(xiě)入。在某些實(shí)施例中,本地存儲(chǔ)的值120、124或128被沖刷到共享存儲(chǔ)器150中而不對(duì)其他高速緩存進(jìn)行探測(cè),并且無(wú)需確定共享變量的全局值。對(duì)共享存儲(chǔ)器150中的臨時(shí)值152的寫(xiě)入是原子的或者是信號(hào)量保護(hù)的。在某些實(shí)施例中,針對(duì)每個(gè)處理器102-106而存儲(chǔ)不同的臨時(shí)值。在某些實(shí)施例中,處理器互連116跟蹤處于低功率模式或者以因其他原因而將其本地存儲(chǔ)的值臨時(shí)存儲(chǔ)在共享存儲(chǔ)器150中的那些處理器,并且基于處理器是否將其計(jì)數(shù)器值臨時(shí)存儲(chǔ)在共享存儲(chǔ)器150中而選擇性地從共享存儲(chǔ)器150讀取臨時(shí)值。
[0041]在某些實(shí)施例中,存儲(chǔ)器讀取邏輯118將本地存儲(chǔ)的值120、124和128 (在某些實(shí)施例中,還有臨時(shí)值152)相加以確定全局值。在其他實(shí)施例中,存儲(chǔ)器讀取邏輯執(zhí)行某些結(jié)合的和對(duì)稱(chēng)的操作,諸如按位“或”(OR)操作。在某些實(shí)施例中,為了確定全局值而對(duì)本地址120、124和128 (在某些實(shí)施例中,還有臨時(shí)值152)執(zhí)行的操作可由對(duì)LUT132的查找確定,并且可以是軟件可配置的或者是硬編碼的。如上所述,與特定的共享存儲(chǔ)器地址相關(guān)聯(lián)的共享變量的值不存儲(chǔ)在共享存儲(chǔ)器150中;相反,值由邏輯118響應(yīng)于接收到用以讀取與共享變量相關(guān)聯(lián)的共享存儲(chǔ)器地址的命令而確定。因此,在某種意義上說(shuō),(與特定共享存儲(chǔ)器地址相關(guān)聯(lián)的)特定共享變量的全局值由處理器互連116和處理器102-106虛擬存儲(chǔ)。
[0042]在特定實(shí)施例中,值120、124和128是計(jì)數(shù)器值,其與單個(gè)共享存儲(chǔ)器地址相關(guān)聯(lián)。處理器102-106被配置為本地更新計(jì)數(shù)器值120、124和128并且全局讀取計(jì)數(shù)器。特別地,處理器102-106通過(guò)遞增本地存儲(chǔ)的計(jì)數(shù)器,而對(duì)針對(duì)與計(jì)數(shù)器值120、124和128相關(guān)聯(lián)的共享存儲(chǔ)器地址的存儲(chǔ)操作做出響應(yīng)。對(duì)與計(jì)數(shù)器值120、124和128相關(guān)聯(lián)的共享存儲(chǔ)器地址的讀取執(zhí)行將導(dǎo)致探測(cè)操作被發(fā)給每個(gè)處理器102-106 ;例如,請(qǐng)求處理器向處理器互連116發(fā)出針對(duì)相關(guān)聯(lián)的共享存儲(chǔ)器地址的讀取命令,其繼而向處理器102-106(包括請(qǐng)求處理器)發(fā)出探測(cè)命令。處理器102-106通過(guò)向處理器互連116提供其本地存儲(chǔ)的值120、124和128對(duì)探測(cè)操作做出響應(yīng)。處理器互連116使用值120、124和128來(lái)確定于計(jì)數(shù)器相關(guān)聯(lián)的共享存儲(chǔ)器地址的全局值,并繼而將其提供給請(qǐng)求處理器。
[0043]接下來(lái),描述系統(tǒng)100的一個(gè)特定實(shí)現(xiàn)示例。下面的事務(wù)通過(guò)總線108-112在處理器102-106以及處理器互連116之間傳送(pBUS是指將處理器耦合至處理器互連116的處理器總線):
[0044]1.pBUS.READ(B):從處理器向互連的讀取請(qǐng)求,其由于存儲(chǔ)器地址B相關(guān)聯(lián)的值來(lái)響應(yīng)。
[0045]2.pBUS.SNOOP (B):從互連向處理器的探測(cè)請(qǐng)求,其由于存儲(chǔ)器地址B相關(guān)聯(lián)的本地存儲(chǔ)的值的關(guān)聯(lián)值來(lái)響應(yīng)。
[0046]在LUT122、126和130 (以及LUT132)之內(nèi),isSOSUS (B)表示存儲(chǔ)器地址B將要利用本地更新和全局讀取來(lái)處理。與值120、124和128相關(guān)聯(lián)的計(jì)數(shù)器對(duì)如下命令做出響應(yīng)(pCNT指示處理器的私有計(jì)數(shù)器):
[0047]1.pCNT.pCNT使私有計(jì)數(shù)器返回其值,表示為pCNT.val。
[0048]2.pCNT.1NC⑶使計(jì)數(shù)器遞增值D。
[0049]處理器102-106被配置為做出響應(yīng)的軟件指令包括:
[0050]1.STR (B, D)使處理器將與共享存儲(chǔ)器地址B相關(guān)聯(lián)的計(jì)數(shù)器遞增值D。
[0051]2.LDR(B)使處理器讀取存儲(chǔ)在與共享存儲(chǔ)器地址B相關(guān)聯(lián)的計(jì)數(shù)器處的值。
[0052]處理器102-106的讀取/寫(xiě)入邏輯134、138和140被配置為執(zhí)行以下操作:
[0053]如果存在指令STR(B, D)和 isSOSUS⑶,則 pCNT.1NC(D);即,軟件指令 STR(B, D)的接收使讀取/寫(xiě)入邏輯134、138和140確定存儲(chǔ)器地址B是否為SOSUS變量(或者更一般地說(shuō),它是否要被本地更新和全局讀取),并且如果是,則它向計(jì)數(shù)器發(fā)出命令以將其自己遞增值D。[0054]如果存在指令LDR⑶和isSOSUS⑶,則pBUS.READ⑶;即,軟件指令LDR⑶的接收使讀取/寫(xiě)入邏輯134、138和140確定存儲(chǔ)器地址B是否為SOSUS變量(或者更一般地說(shuō),它是否要被本地更新和全局讀取),并且如果是,則向總線發(fā)出針對(duì)與存儲(chǔ)器地址B相關(guān)聯(lián)的值的命令。
[0055]如果存在傳入的探測(cè)pBUS.SNOOP (B)并且 i sSOSUS (B),則 pBUS.SN00P_RESP.DATA=pCNT.val ;即,當(dāng)經(jīng)由處理器總線接收到針對(duì)與存儲(chǔ)器地址B相關(guān)聯(lián)的值的探測(cè)操作時(shí),處理器確定于存儲(chǔ)器地址B相關(guān)聯(lián)的變量將被作為SOSUS變量,并且利用本地計(jì)數(shù)器PCNT的值對(duì)探測(cè)操作做出響應(yīng)。
[0056]處理器互連116的存儲(chǔ)器讀取邏輯118被配置為執(zhí)行如下算法:
[0057]如果pBUS.READ (B)并且 isSOSUS (B),則:
[0058]1.向所有處理器發(fā)送具有地址B的探測(cè)命令(pBUS.SNOOP (B))。
[0059]2.從共享存儲(chǔ)器150讀取臨時(shí)值152。
[0060]3.從所有處理器接收SN00P_RESP值Di (Di=來(lái)自處理器i的值)。
[0061]4.利用所有Di+臨時(shí)值152的和對(duì)請(qǐng)求處理器做出響應(yīng)。
[0062]由此,由處理器互連116從一個(gè)處理器接收到針對(duì)存儲(chǔ)器地址B (其中B被指示為作為SOSUS變量)的讀取命令將導(dǎo)致處理器互連向所有處理器(包括請(qǐng)求處理器)發(fā)出探測(cè)命令,接收計(jì)數(shù)器的本地值,讀取臨時(shí)值512 (例如,使用信號(hào)量),并且將所有本地值和臨時(shí)值512相加以獲得計(jì)數(shù)器的全局值,處理器互連繼而將全局值提供給請(qǐng)求處理器。在某些實(shí)施例中,全局值還被寫(xiě)回共享存儲(chǔ)器150的臨時(shí)值152,并且本地計(jì)數(shù)器值被沖刷。
[0063]圖2是根據(jù)各個(gè)實(shí)施例的對(duì)針對(duì)共享存儲(chǔ)器地址的存儲(chǔ)器訪問(wèn)指令做出響應(yīng)的處理器的方法200的流程圖。在202,多核或者多處理器系統(tǒng)的處理器,諸如處理器102-106之一,接收用以執(zhí)行與共享存儲(chǔ)器地址相關(guān)聯(lián)的存儲(chǔ)器訪問(wèn)操作的指令,其中該共享存儲(chǔ)器地址將要被本地更新和全局讀取,如本文中其他地方所詳細(xì)描述的。共享存儲(chǔ)器地址與處理器內(nèi)的諸如計(jì)數(shù)器中的本地存儲(chǔ)的值(例如,值120、124和128)相關(guān)聯(lián)。
[0064]在204,處理器確定該存儲(chǔ)器訪問(wèn)操作是讀取操作還是寫(xiě)入操作。在確定存儲(chǔ)器操作是寫(xiě)入操作時(shí)(諸如與用以遞增計(jì)數(shù)器的軟件命令相關(guān)聯(lián)),在206,處理器更新該值的本地存儲(chǔ)的拷貝。在確定存儲(chǔ)器操作是讀取命令時(shí),在208,處理器向諸如處理器互連116的處理器互連發(fā)出讀取命令。由處理器互連執(zhí)行的后續(xù)操作參考圖3,由翻頁(yè)標(biāo)號(hào)A表示。
[0065]在210,處理器從處理器互連接收與共享存儲(chǔ)器地址相關(guān)聯(lián)的全局值(翻頁(yè)編號(hào)B,參考圖3)。在212,處理器使用全局值來(lái)執(zhí)行接收到的軟件命令。例如,處理器可以將全局值存儲(chǔ)到寄存器中或者其他存儲(chǔ)器位置中,以便在后續(xù)軟件指令中使用。
[0066]圖3是根據(jù)各個(gè)實(shí)施例對(duì)用以讀取共享存儲(chǔ)器地址的命令做出響應(yīng)的處理器互連的方法300的流程圖。在302,諸如處理器互連116的處理器互連從請(qǐng)求處理器(例如,處理器102-106之一)接收用以讀取與共享存儲(chǔ)器地址相關(guān)聯(lián)的值的命令(翻頁(yè)標(biāo)記A,參考圖2)。
[0067]在304,處理器互連從包括請(qǐng)求處理器在內(nèi)的多個(gè)處理器請(qǐng)求與共享存儲(chǔ)器地址相關(guān)聯(lián)的本地存儲(chǔ)的值。在某些實(shí)施例中,請(qǐng)求本地存儲(chǔ)的值包括向多個(gè)處理器發(fā)出針對(duì)與共享存儲(chǔ)器地址相關(guān)聯(lián)的本地存儲(chǔ)的值的探測(cè)命令。
[0068]在306,處理器互連從諸如共享存儲(chǔ)器150的共享存儲(chǔ)器讀取諸如臨時(shí)值152的臨時(shí)值。
[0069]在308,由處理器互連從處理器接收與共享存儲(chǔ)器地址相關(guān)聯(lián)的本地存儲(chǔ)的值。本地存儲(chǔ)的值經(jīng)由處理器總線被返回。
[0070]在310,處理器互連根據(jù)接收到的本地存儲(chǔ)的值、并且在某些實(shí)施例中還根據(jù)存儲(chǔ)在共享存儲(chǔ)器中的臨時(shí)值,確定與共享存儲(chǔ)器地址相關(guān)聯(lián)的全局值。確定全局值包括執(zhí)行與共享存儲(chǔ)器地址相關(guān)聯(lián)的某些操作,諸如對(duì)本地存儲(chǔ)的值(例如計(jì)數(shù)器中的值)的求和、按位“或”操作或者其他結(jié)合性和對(duì)稱(chēng)性操作。
[0071]在312,處理器互連諸如經(jīng)由處理器總線將全局值返回請(qǐng)求處理器。返回圖2參考過(guò)程流的剩余部分。在某些實(shí)施例中,處理器互連還將確定的全局值寫(xiě)入共享存儲(chǔ)器150,諸如對(duì)存儲(chǔ)于其中的臨時(shí)值的存儲(chǔ)器位置使用讀取-修改-寫(xiě)入。在這些實(shí)施例中,處理器還沖刷或者重置其本地計(jì)數(shù)器值。
[0072]圖4是根據(jù)各個(gè)實(shí)施例的方法400的流程圖,其中處理器確定用于對(duì)針對(duì)共享存儲(chǔ)器地址的存儲(chǔ)器訪問(wèn)執(zhí)行做出響應(yīng)的過(guò)程。在402,多核或者多處理器系統(tǒng)的處理器(諸如處理器102-106之一)接收用以執(zhí)行與共享存儲(chǔ)器地址相關(guān)聯(lián)的存儲(chǔ)器訪問(wèn)操作的軟件指令。
[0073]在404,處理器執(zhí)行對(duì)查找表(諸如查找表122、126或者130之一)的查找,以確定變量是否要本地更新和全局讀取(換言之,它是否被當(dāng)作SOSUS變量)。
[0074]當(dāng)在406確定共享存儲(chǔ)器地址將不被當(dāng)作SOSUS變量(“否”分支)時(shí),處理器在408確定存儲(chǔ)器訪問(wèn)操作是讀取指令還是寫(xiě)入指令。當(dāng)確定指令是寫(xiě)入指令時(shí),在410,處理器向諸如處理器互連116的處理器互連發(fā)出針對(duì)共享存儲(chǔ)器地址的寫(xiě)入命令。在確定指令是讀取指令時(shí),在412,處理器向處理器互連發(fā)出針對(duì)共享存儲(chǔ)器地址的讀取命令。
[0075]當(dāng)在406確定共享存儲(chǔ)器地址與SOSUS變量相關(guān)聯(lián)時(shí)(“是”分支),處理器在414確定該存儲(chǔ)器訪問(wèn)操作是讀取指令還是寫(xiě)入指令。當(dāng)確定存儲(chǔ)器操作是寫(xiě)入操作時(shí)(諸如與遞增計(jì)數(shù)器的軟件指令相關(guān)聯(lián)),在416,處理器更新該值的本地存儲(chǔ)的拷貝。在確定存儲(chǔ)器操作是讀取命令時(shí),在418,處理器向處理器互連發(fā)出讀取命令。由處理器互連執(zhí)行的后續(xù)操作參看圖5,由翻頁(yè)標(biāo)記C所示。
[0076]在420,處理器響應(yīng)于讀取命令而從處理器互連(翻頁(yè)標(biāo)記F,參考圖5B和圖5C)接收與共享存儲(chǔ)器地址相關(guān)聯(lián)的全局值。在422,處理器使用全局值來(lái)執(zhí)行接收到的軟件命令。例如,處理器可以將全局值存儲(chǔ)在寄存器或者其他存儲(chǔ)器位置,以便在后續(xù)軟件指令中使用。
[0077]圖5A-圖5C包括根據(jù)各個(gè)實(shí)施例的方法500流程圖,其中處理器互連確定用于對(duì)針對(duì)共享存儲(chǔ)器地址的存儲(chǔ)器訪問(wèn)指令做出響應(yīng)的過(guò)程。參考圖5A,在502,諸如處理器互連116的處理器互連從請(qǐng)求處理器(例如,處理器102-106之一)接收針對(duì)共享存儲(chǔ)器地址的存儲(chǔ)器訪問(wèn)命令(翻頁(yè)標(biāo)號(hào)C,參考圖4)。
[0078]在504,處理器互連執(zhí)行對(duì)查找表(諸如LUT132)的查找,以確定變量是否將被當(dāng)作SOSUS變量。
[0079]當(dāng)在506確定變量不被當(dāng)作SOSUS變量時(shí)(“否”分支),處理器互連(或者備選地,共享存儲(chǔ)器)在508 (圖5B中示出,翻頁(yè)標(biāo)記D)確定與存儲(chǔ)器地址寫(xiě)相關(guān)梁的共享存儲(chǔ)器(例如,共享存儲(chǔ)器150)中的存儲(chǔ)器位置是否可用,或者說(shuō),當(dāng)前是否被另一進(jìn)程鎖定。在某些實(shí)施例中,確定存儲(chǔ)器位置的可用性包括參考信號(hào)量類(lèi)型的標(biāo)志,以確定存儲(chǔ)器位置的可用性。處理器互連或者共享存儲(chǔ)器等待存儲(chǔ)器位置變?yōu)榭捎靡员憷^續(xù)操作。
[0080]當(dāng)在508確定共享存儲(chǔ)器位置可用時(shí)(“是”分支),在510,處理器互連或者共享存儲(chǔ)器鎖定存儲(chǔ)器位置,以防止其他進(jìn)程訪問(wèn)共享存儲(chǔ)器位置。在512,根據(jù)存儲(chǔ)器訪問(wèn)命令來(lái)執(zhí)行存儲(chǔ)器訪問(wèn)操作。在各實(shí)施例中,存儲(chǔ)器訪問(wèn)命令可以包括讀取命令、寫(xiě)入命令、讀取-修改-寫(xiě)入命令或者其他命令。
[0081]在514,解鎖存儲(chǔ)器位置。這包括設(shè)置信號(hào)量類(lèi)型標(biāo)志以指示共享存儲(chǔ)器位置的可用性,由此釋放其他進(jìn)程對(duì)其的訪問(wèn)。
[0082]當(dāng)存儲(chǔ)器訪問(wèn)操作是讀取時(shí),在516,處理器互連向請(qǐng)求處理器提供從共享存儲(chǔ)器讀取的值。
[0083]返回圖5A,當(dāng)在506確定變量將被當(dāng)作SOSUS變量時(shí)(“是”分支),處理器互連在518 (圖5C中示出,表示為翻頁(yè)標(biāo)記E),處理器互連從包括請(qǐng)求處理器在內(nèi)的多個(gè)處理器請(qǐng)求與共享存儲(chǔ)器地址相關(guān)聯(lián)的本地存儲(chǔ)的值。在某些實(shí)施例中,請(qǐng)求本地存儲(chǔ)的值包括向多個(gè)處理器發(fā)出針對(duì)與共享存儲(chǔ)器地址相關(guān)聯(lián)的本地存儲(chǔ)的值的探測(cè)命令。
[0084]在520,處理器互連從諸如共享存儲(chǔ)器150的共享存儲(chǔ)器讀取諸如臨時(shí)值152的臨時(shí)值。
[0085]在522,由處理器互連從處理接收與共享存儲(chǔ)器地址相關(guān)聯(lián)的本地值。本地存儲(chǔ)的值經(jīng)由處理器總線被返回。
[0086]在524,處理器互連根據(jù)接收到的本地值、以及在某些實(shí)施例中根據(jù)存儲(chǔ)在共享存儲(chǔ)器中的臨時(shí)值,確定與共享存儲(chǔ)器地址相關(guān)聯(lián)的全局值。確定全局值包括執(zhí)行與共享存儲(chǔ)器地址相關(guān)聯(lián)的某些操作,諸如對(duì)本地存儲(chǔ)的值和臨時(shí)值(例如在共享變量是計(jì)數(shù)器的情況下)的求和、按位“或”操作或者其他結(jié)合性和對(duì)稱(chēng)性操作。
[0087]在524,處理器互連諸如經(jīng)由處理器總線將全局值返回請(qǐng)求處理器。在某些實(shí)施例中,處理器互連還使用信號(hào)量或者原子保護(hù)的讀取-修改-寫(xiě)入操作將確定的全局值寫(xiě)到共享存儲(chǔ)器,諸如對(duì)臨時(shí)值已經(jīng)存儲(chǔ)于其中的存儲(chǔ)器位置使用讀取-修改-寫(xiě)入。在這些實(shí)施例中,處理器還沖刷或者重置本地計(jì)數(shù)器值。
[0088]盡管已經(jīng)在此示出和描述了某些實(shí)施例,被計(jì)算以實(shí)現(xiàn)相同目的的各種備選和/或等效實(shí)施例或?qū)崿F(xiàn)可以替換已經(jīng)示出和描述的實(shí)施例,而不脫離本發(fā)明的范圍。例如,在備選實(shí)施例中,在此描述的處理器互連116所執(zhí)行的某些功能可由處理器102-106之一來(lái)執(zhí)行(例如,處理器可被配置為直接發(fā)出探測(cè)命令,接收本地存儲(chǔ)的值,并且確定將被用以執(zhí)行軟件指令的全局值)。本申請(qǐng)意在涵蓋在此描述的實(shí)施例的各種應(yīng)用或者變形。因此,根據(jù)本發(fā)明的實(shí)施例僅有權(quán)利要求書(shū)及其等效項(xiàng)限定。
【權(quán)利要求】
1.一種多核處理器系統(tǒng),包括: 多個(gè)相互通信地彼此耦合的處理器核,所述多個(gè)處理器核中的至少一個(gè)處理器核被配置為: 接收用以指示所述至少一個(gè)處理器核讀取與存儲(chǔ)器地址相關(guān)聯(lián)的值的指令;以及響應(yīng)于接收到所述指令并且在所述指令的執(zhí)行之前,使所述多個(gè)相互通信地彼此耦合的處理器核中的處理器核提供多個(gè)本地存儲(chǔ)的值,所述本地存儲(chǔ)的值被分別存儲(chǔ)在相應(yīng)的所述處理器核中并且與所述存儲(chǔ)器地址相關(guān)聯(lián)。
2.根據(jù)權(quán)利要求1所述的多核處理器系統(tǒng),還包括:將所述處理器核互連的處理器結(jié)構(gòu)。
3.根據(jù)權(quán)利要求2所述的多核處理器系統(tǒng),其中所述至少一個(gè)處理器核還被配置為使所述多個(gè)處理器核中的所述處理器核通過(guò)至少向所述處理器結(jié)構(gòu)發(fā)出針對(duì)所述存儲(chǔ)器地址的讀取命令,而提供與所述存儲(chǔ)器地址相關(guān)聯(lián)的所述本地存儲(chǔ)的值,所述處理器結(jié)構(gòu)被配置為響應(yīng)于所述讀取命令的接收而: 從多數(shù)多個(gè)處理器核請(qǐng)求與所述存儲(chǔ)器地址相關(guān)聯(lián)的所述本地存儲(chǔ)的值; 至少基于由所述多個(gè)處理器核提供的所述本地存儲(chǔ)的值,確定與所述存儲(chǔ)器地址相關(guān)聯(lián)的所述值;以及 向所述至少一個(gè)處理器核提供所述值。
4.根據(jù)權(quán)利要求3所述的多核處理器系統(tǒng),其中所述處理器結(jié)構(gòu)還被配置為處理所述本地存儲(chǔ)的值以確定所述值。
5.根據(jù)權(quán)利要求3所述的多核處理器系統(tǒng),其中所述至少一個(gè)處理器核還被配置為響應(yīng)于所述處理器結(jié)構(gòu)的請(qǐng)求,提供其自己的與所述存儲(chǔ)器地址相關(guān)聯(lián)的本地存儲(chǔ)的值的拷貝。
6.根據(jù)權(quán)利要求1所述的多核處理器系統(tǒng),其中所述至少一個(gè)處理器核還被配置為確定所述存儲(chǔ)器地址是一組預(yù)定存儲(chǔ)器地址之一,并且使所述多個(gè)處理器核響應(yīng)于所述存儲(chǔ)器地址是所述組之一的確定而使所述多個(gè)處理器核提供所述本地存儲(chǔ)的值。
7.根據(jù)權(quán)利要求6所述的多核處理器系統(tǒng),其中所述至少一個(gè)處理器核還被配置為響應(yīng)于用以向所述存儲(chǔ)器地址進(jìn)行寫(xiě)入的另一指令的接收,而響應(yīng)于所述存儲(chǔ)器地址是所述組之一的至少另一確定而更新其自己的與所述存儲(chǔ)器地址相關(guān)聯(lián)的本地存儲(chǔ)的值。
8.根據(jù)權(quán)利要求1所述的多核處理器系統(tǒng),其中所述至少一個(gè)處理器核被配置為使多個(gè)相互通信地彼此耦合的處理器核中的處理器核提供計(jì)數(shù)器值,所述計(jì)數(shù)器值與所述存儲(chǔ)器地址相關(guān)聯(lián)并且被本地存儲(chǔ)在所述處理器核中相應(yīng)的所述處理器核中。
9.根據(jù)權(quán)利要求1所述的多核處理器系統(tǒng),其中所述至少一個(gè)處理器核還被配置為: 使所述多個(gè)處理器核通過(guò)至少在處理器總線上發(fā)出針對(duì)所述存儲(chǔ)器地址的讀取命令,而提供與所述存儲(chǔ)器地址相關(guān)聯(lián)的所述本地存儲(chǔ)的值;以及 經(jīng)由所述總線接收與所述存儲(chǔ)器地址相關(guān)聯(lián)的值,所述值基于由所述多個(gè)處理器核提供的所述本地存儲(chǔ)的值。
10.根據(jù)權(quán)利要求1所述的多核處理器系統(tǒng),其中所述至少一個(gè)處理器核還被配置為響應(yīng)于用以對(duì)所述存儲(chǔ)器地址進(jìn)行寫(xiě)入的另一指令的接收,更新其自己的與所述存儲(chǔ)器地址相關(guān)聯(lián)的本地存儲(chǔ)的值。
11.一種用于在多核處理器系統(tǒng)中保持與共享存儲(chǔ)器地址相關(guān)聯(lián)的值的同步的方法,所述方法包括: 由所述多核處理器系統(tǒng)的多個(gè)互連的處理器核中的一個(gè)處理器核接收計(jì)算機(jī)指令,所述計(jì)算機(jī)指令用以讀取與所述共享存儲(chǔ)器地址相關(guān)聯(lián)的所述值;以及 響應(yīng)于所述計(jì)算機(jī)指令的接收并且在所述計(jì)算機(jī)指令的執(zhí)行之前,使得所述多核處理器系統(tǒng)的所述多個(gè)處理器核中的其他處理器核提供本地存儲(chǔ)的值,所述本地存儲(chǔ)的值與所述共享存儲(chǔ)器地址相關(guān)聯(lián)并且被本地存儲(chǔ)在所述多個(gè)處理器核的各其他處理器核上。
12.根據(jù)權(quán)利要求11所述的方法,其中所述使得包括: 由所述多個(gè)處理器核中的所述一個(gè)處理器核,發(fā)出針對(duì)與所述共享存儲(chǔ)器地址相關(guān)聯(lián)的所述值的讀取命令;以及 響應(yīng)于所述讀取命令的接收,由處理器互連向所述多核處理器系統(tǒng)的所述多個(gè)處理器核,發(fā)出針對(duì)與所述共享存儲(chǔ)器地址相關(guān)聯(lián)的所述本地存儲(chǔ)的值的請(qǐng)求。
13.根據(jù)權(quán)利要求12所述的方法,其中所述發(fā)出所述請(qǐng)求包括向所述多個(gè)處理器核中的所述一個(gè)處理器核發(fā)出請(qǐng)求。
14.根據(jù)權(quán)利要求12所述的方法,還包括:由所述處理器互連確定所述共享存儲(chǔ)器地址是一組預(yù)定存儲(chǔ)器地址之一,并且其中向所述多個(gè)處理器發(fā)出所述請(qǐng)求是響應(yīng)于所述共享存儲(chǔ)器地址是所述組之一的確定。
15.根據(jù)權(quán)利要求11所述的方法,還包括: 由處理器互連從所述多個(gè)處理器核接收所述本地存儲(chǔ)的值; 由所述處理器互連或所述多個(gè)處理器核中的所述一個(gè)處理器核之一,至少基于所述本地存儲(chǔ)的值來(lái)確定與所述共享存儲(chǔ)器地址相關(guān)聯(lián)的所述值。
16.根據(jù)權(quán)利要求15所述的方法,其中所述確定包括:處理所述本地存儲(chǔ)的值,以確定與所述共享存儲(chǔ)器地址相關(guān)聯(lián)的所述值。
17.根據(jù)權(quán)利要求11所述的方法,還包括:由所述至少一個(gè)處理器核接收與所述共享存儲(chǔ)器地址相關(guān)聯(lián)的所述值,所述值至少基于所述本地存儲(chǔ)的值的結(jié)合。
18.根據(jù)權(quán)利要求11所述的方法,還包括: 由所述處理器核中的所述一個(gè)處理器核,確定所述共享存儲(chǔ)器地址是一組預(yù)定存儲(chǔ)器地址之一;以及 響應(yīng)于所述共享存儲(chǔ)器地址是所述組之一,使所述多個(gè)處理器核提供所述本地存儲(chǔ)的值。
19.根據(jù)權(quán)利要求11所述的方法,其中所述使得包括向處理器互連發(fā)出針對(duì)所述共享存儲(chǔ)器地址的讀取指令,所述處理器互連將所述多個(gè)處理器互連,并且其中所述方法還包括:從所述處理器互連接收與所述共享存儲(chǔ)器地址相關(guān)聯(lián)的所述值。
20.根據(jù)權(quán)利要求11所述的方法,還包括至少響應(yīng)于以下項(xiàng)而由所述多個(gè)處理器中的所述一個(gè)處理器更新其自己的與所述共享存儲(chǔ)器地址相關(guān)聯(lián)的本地存儲(chǔ)的值: 接收到用以對(duì)所述存儲(chǔ)器地址進(jìn)行寫(xiě)入的另一計(jì)算機(jī)指令,以及 所述共享存儲(chǔ)器地址是一組預(yù)定存儲(chǔ)器地址之一的確定。
21.—種多核處理器系統(tǒng),包括: 多個(gè)相互通信地彼此耦合的處理器核,所述多個(gè)處理器核中的至少一個(gè)處理器核被配置為: 接收第一指令,所述第一指令指示所述至少一個(gè)處理器核讀取與第一存儲(chǔ)器地址相關(guān)聯(lián)的第一值; 接收第二指令,所述第二指令指示所述至少一個(gè)處理器核讀取與第二存儲(chǔ)器地址相關(guān)聯(lián)的第二值; 響應(yīng)于確定所述第一存儲(chǔ)器地址在預(yù)定的一組存儲(chǔ)器地址中,并且在所述第一指令的執(zhí)行之前,使所述多個(gè)相互通信地彼此耦合的處理器核中的處理器核提供多個(gè)本地存儲(chǔ)的值,所述本地存儲(chǔ)值被分別存儲(chǔ)在相應(yīng)的所述處理器核中并且與所述第一存儲(chǔ)器地址相關(guān)聯(lián);以及 響應(yīng)于確定所 述第二存儲(chǔ)器地址不在所述預(yù)定的一組存儲(chǔ)器地址中,并且在所述第二指令的執(zhí)行之前,向共享存儲(chǔ)器發(fā)出針對(duì)與所述第二存儲(chǔ)器地址相關(guān)聯(lián)的所述第二值的讀取命令。
22.根據(jù)權(quán)利要求21所述的多核處理器系統(tǒng),還包括將所述處理器核互連的處理器結(jié)構(gòu)。
23.根據(jù)權(quán)利要求22所述的多核處理器系統(tǒng),其中所述至少一個(gè)處理器核還被配置為使所述多個(gè)處理器核中的所述處理器核通過(guò)至少向所述處理器結(jié)構(gòu)發(fā)出針對(duì)所述第一存儲(chǔ)器地址的另一讀取命令,來(lái)提供與所述第一存儲(chǔ)器地址相關(guān)聯(lián)的所述本地存儲(chǔ)的值,所述處理器結(jié)構(gòu)被配置為響應(yīng)于所述另一讀取命令的接收而: 從所述多個(gè)處理器核請(qǐng)求與所述第一存儲(chǔ)器地址相關(guān)聯(lián)的所述本地存儲(chǔ)的值; 至少基于由所述多個(gè)處理器核提供的所述本地存儲(chǔ)的值,確定與所述第一存儲(chǔ)器地址相關(guān)聯(lián)的所述第一值;以及 向所述至少一個(gè)處理器核提供所述第一值。
24.根據(jù)權(quán)利要求23所述的多核處理器系統(tǒng),其中所述處理器結(jié)構(gòu)還被配置為: 響應(yīng)于接收到針對(duì)所述第一存儲(chǔ)器地址的所述另一讀取命令,從所述共享存儲(chǔ)器讀取與所述第一存儲(chǔ)器地址相關(guān)聯(lián)的臨時(shí)值;以及 至少基于由所述多個(gè)處理器核提供的所述本地存儲(chǔ)的值以及所述臨時(shí)值,確定與所述第一存儲(chǔ)器地址相關(guān)聯(lián)的所述第一值。
25.根據(jù)權(quán)利要求21所述的多核處理器系統(tǒng),其中所述至少一個(gè)處理器核還被配置為響應(yīng)于用以對(duì)所述第一存儲(chǔ)器地址進(jìn)行寫(xiě)入的另一指令的接收,并且響應(yīng)于所述第一存儲(chǔ)器地址是所述預(yù)定的一組存儲(chǔ)器地址之一的確定,更新其自己的與所述第一存儲(chǔ)器地址相關(guān)聯(lián)的本地存儲(chǔ)的值。
26.根據(jù)權(quán)利要求21所述的多核處理器系統(tǒng),其中所述至少一個(gè)處理器核還被配置為: 使所述多個(gè)處理器核通過(guò)在處理器總線上發(fā)出針對(duì)所述存儲(chǔ)器地址的第一讀取命令而提供與所述第一存儲(chǔ)器地址相關(guān)聯(lián)的所述本地存儲(chǔ)的值,去往所述共享存儲(chǔ)器的針對(duì)與所述第二存儲(chǔ)器地址相關(guān)聯(lián)的所述第二值的所述讀取命令是第二讀取命令;以及 經(jīng)由所述總線接收與所述存儲(chǔ)器地址相關(guān)聯(lián)的所述第一值,所述第一值基于由所述多個(gè)處理器核提供的所述本地存儲(chǔ)的值中的一個(gè)或多個(gè)值以及存儲(chǔ)在所述臨時(shí)存儲(chǔ)器中的臨時(shí)值。
27.根據(jù)權(quán)利要求21所述的多核處理器系統(tǒng),還包括處理器結(jié)構(gòu),所述處理器結(jié)構(gòu)將所述處理器核互連,并且被配置為利用信號(hào)量系統(tǒng)來(lái)保護(hù)所述共享存儲(chǔ)器。
28.根據(jù)權(quán)利要求21所述的多核處理器系統(tǒng),其中所述至少一個(gè)處理器核被配置為使所述多個(gè)相互通信地彼此耦合的處理器核中的所述處理器核提供計(jì)數(shù)器值,所述計(jì)數(shù)器值與所述第一存儲(chǔ)器 地址相關(guān)聯(lián)并且被本地存儲(chǔ)在所述處理器核中相應(yīng)的所述處理器核中。
【文檔編號(hào)】G06F15/167GK103984671SQ201410016223
【公開(kāi)日】2014年8月13日 申請(qǐng)日期:2014年1月14日 優(yōu)先權(quán)日:2013年1月14日
【發(fā)明者】E·喬舒亞, N·米茲拉希 申請(qǐng)人:馬維爾國(guó)際貿(mào)易有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
邵东县| 临漳县| 三都| 阿克苏市| 军事| 丰宁| 宜章县| 宁晋县| 嘉善县| 望谟县| 禄劝| 龙海市| 新建县| 平南县| 边坝县| 元氏县| 太白县| 阿瓦提县| 合水县| 涟水县| 莫力| 台南市| 水城县| 恭城| 延边| 萍乡市| 卫辉市| 长垣县| 曲周县| 中西区| 勐海县| 永修县| 富顺县| 扬州市| 阳朔县| 湾仔区| 合川市| 威远县| 安泽县| 利辛县| 砀山县|