用于管理高速緩存一致性的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的主題是一種用于管理高速緩存一致性的機(jī)制。
[0002]更具體地,本發(fā)明涉及一種在通過共享存儲(chǔ)器來共享數(shù)據(jù)的兩個(gè)處理單元之間的數(shù)據(jù)交換方法。
【背景技術(shù)】
[0003]為了滿足不斷增長(zhǎng)的對(duì)計(jì)算能力的需求,在計(jì)算機(jī)系統(tǒng)中使用的處理器必須能夠執(zhí)行高于以往的每秒操作數(shù)量。多年來,處理器工作頻率的提高使得能夠提出滿足不斷增長(zhǎng)的對(duì)計(jì)算機(jī)能力的需求的處理器。由于工作頻率的提高還會(huì)增加所釋放的熱量,因而處理器刻蝕的細(xì)度(fineness)已逐步降低以將待耗散的熱量控制在在可接受的限度內(nèi)。然而,隨著刻蝕細(xì)度已低至一微米以下且現(xiàn)已達(dá)到十納米左右,微處理器電路的小型化已變得比以往更加復(fù)雜。
[0004]因此,已研究出另一種方法,以在待耗散的熱量不增加或者僅略微增加的情況下下繼續(xù)增強(qiáng)處理器的計(jì)算能力:同時(shí)并行地執(zhí)行多個(gè)操作,而不是尋求增加由同一執(zhí)行核心順序執(zhí)行的操作數(shù)量。因此研發(fā)出了多核處理器。
[0005]此外,為了減少處理器執(zhí)行指令的執(zhí)行時(shí)間,為每個(gè)執(zhí)行核心添加了高速緩沖存儲(chǔ)器。所述存儲(chǔ)器是位于系統(tǒng)的核心與隨機(jī)存取存儲(chǔ)器(RAM)之間的存儲(chǔ)器。由于該存儲(chǔ)器的訪問時(shí)間比隨機(jī)存取存儲(chǔ)器的訪問時(shí)間短得多,因此核心可更快地訪問存儲(chǔ)在該存儲(chǔ)器中的某些數(shù)據(jù),從而使得能夠加快指令的執(zhí)行。
[0006]對(duì)于微處理器系統(tǒng),如圖1所示,每個(gè)執(zhí)行核心可具有不與其他核心共享的高速緩沖存儲(chǔ)器。在所述配置中,如果共享存儲(chǔ)器中由第一核心修改的數(shù)據(jù)也包含在第二核心的高速緩存中并且沒有更新為由第一核心執(zhí)行的修改,那么第一核心對(duì)共享存儲(chǔ)器中的數(shù)據(jù)進(jìn)行的修改會(huì)引起兩個(gè)核心的高速緩存之間的不一致。因此,存在第二核心將從自身高速緩存中讀取不正確數(shù)據(jù)的風(fēng)險(xiǎn)。因此,有必要提供有效的機(jī)制來確保多核處理器的不同執(zhí)行核心的高速緩存之間的一致性。
[0007]為滿足該問題所研發(fā)的一種機(jī)制是通過“窺探(esp1nnqge)”獲得一致性。根據(jù)所述機(jī)制,對(duì)存儲(chǔ)器的每次寫入通過由處理器的所有核心共享的總線發(fā)送。通過在共享總線上的窺探,每個(gè)核心因而可以獲知其他核心的存儲(chǔ)器寫入操作,并由此能夠更新自身的緩存以確保該高速緩存與其他核心的高速緩存的一致性。
[0008]由于高速緩存的尺寸減小,因此有必要更新(renouveler)高速緩存的內(nèi)容以使出現(xiàn)緩存缺陷的可能性最小化,即,使核心在自身高速緩存中找到其試圖讀取的數(shù)據(jù)的可能性最大化,從而避免在更高級(jí)別的高速緩存或RAM中提取所述數(shù)據(jù)。如果在緩存中修改的數(shù)據(jù)僅寫入RAM,當(dāng)該數(shù)據(jù)在高速緩存更新時(shí)被從該緩存中刪除的時(shí)候,那么將數(shù)據(jù)寫入高速緩存和將相同的數(shù)據(jù)寫入RAM在時(shí)間上會(huì)出現(xiàn)偏差。根據(jù)所用的高速緩存更新算法,數(shù)據(jù)被寫入存儲(chǔ)器的順序甚至可能與這些數(shù)據(jù)之前被輸入高速緩存的順序不同。因此,采用窺探一致性機(jī)制可能出現(xiàn)以下情況:對(duì)第一核心的寫入操作進(jìn)行窺探的第二核心會(huì)在對(duì)應(yīng)的數(shù)據(jù)已寫入共享存儲(chǔ)器或完成寫入共享存儲(chǔ)器之前就獲知第一核心的寫入指針的變化。那么這會(huì)導(dǎo)致第二核心使用與第一核心更新的數(shù)據(jù)不對(duì)應(yīng)的數(shù)據(jù)來更新自身的高速緩存。于是高速緩存一致性無(wú)法再得到保障。
[0009]避免所述問題的一個(gè)方案在于使第二核心在讀取共享存儲(chǔ)器中更新的數(shù)據(jù)之前等待一定的時(shí)間,以在讀取操作之前留下用于將更新的數(shù)據(jù)寫入共享存儲(chǔ)器的時(shí)間。然而,所述方案減緩了緩存的更新并由此降低了處理器的性能水平。
[0010]另一方案在于使用由不同核心共享的時(shí)鐘來對(duì)所有寫入操作打上時(shí)間戳。因此,對(duì)第一核心寫入共享存儲(chǔ)器的寫入操作進(jìn)行檢測(cè)的第二核心能夠重構(gòu)執(zhí)行這些寫入操作的順序,并能夠確保在共享存儲(chǔ)器中讀取與所檢測(cè)到的寫入指針的更新相對(duì)應(yīng)的數(shù)據(jù)。然而,所述方案很大程度上依靠高速緩存一致性機(jī)制的資源。每個(gè)寫入數(shù)據(jù)必須與其寫入日期一起存儲(chǔ),因而增大了在核間總線上待交換的且待存儲(chǔ)在不同存儲(chǔ)器中的數(shù)據(jù)量。
[0011]因此,需要一種確保計(jì)算機(jī)系統(tǒng)不同核心的高速緩存之間的一致性,而無(wú)需明顯降低所述系統(tǒng)的性能水平且不增加待存儲(chǔ)在存儲(chǔ)器中的數(shù)據(jù)量的高速緩存一致性機(jī)制。
【發(fā)明內(nèi)容】
[0012]根據(jù)第一方面,本發(fā)明的主題涉及一種通過第一處理單元與第二處理單元兩者共享的存儲(chǔ)器在兩個(gè)處理單元之間發(fā)送消息的方法;
[0013]待發(fā)送的消息包括完整性校驗(yàn)和報(bào)頭,
[0014]每個(gè)處理單元包括偽隨機(jī)二進(jìn)制字符串生成器和密碼模塊;
[0015]所述第一處理單元的生成器和所述第二處理單元的生成器使用同一種子初始化,并彼此同步;
[0016]所述方法包括以下步驟:
[0017]-所述第一處理單元的偽隨機(jī)二進(jìn)制字符串生成器生成第一偽隨機(jī)二進(jìn)制字符串;
[0018]-所述第一處理單元的密碼模塊通過對(duì)所述待發(fā)送的消息應(yīng)用依賴于所生成的第一偽隨機(jī)二進(jìn)制字符串的對(duì)合變換來對(duì)所述待發(fā)送的消息加密;
[0019]-所述第一處理單元發(fā)送并在共享的存儲(chǔ)器中存儲(chǔ)已加密的消息;
[0020]-所述第二處理單元的偽隨機(jī)二進(jìn)制字符串生成器生成第二偽隨機(jī)二進(jìn)制字符串;
[0021 ]所述第一二進(jìn)制字符串和所述第二二進(jìn)制字符串相同;
[0022]-所述第二處理單元的密碼模塊通過對(duì)存儲(chǔ)在共享存儲(chǔ)器中的所述消息應(yīng)用依賴于所述第二偽隨機(jī)二進(jìn)制字符串的對(duì)合變換來對(duì)所存儲(chǔ)的消息解密,解密所述消息包括解密所述消息的報(bào)頭、驗(yàn)證已解密的報(bào)頭以及根據(jù)報(bào)頭驗(yàn)證的結(jié)果來解密完整的消息;
[0023]依賴于所述第一偽隨機(jī)二進(jìn)制字符串的對(duì)合變換和依賴于所述第二偽隨機(jī)二進(jìn)制字符串的對(duì)合變換相同;
[0024]-所述第二處理單元基于已解密的消息的完整性校驗(yàn)來驗(yàn)證所述已解密的消息的完整性。
[0025]所述方法使得第二處理單元能夠確保在存儲(chǔ)器中讀取的且已解密的消息確實(shí)是第一處理單元發(fā)送且存儲(chǔ)在共享存儲(chǔ)器中的消息。此外,解密時(shí)使用所述報(bào)頭使得能夠進(jìn)行對(duì)存儲(chǔ)器中讀取的消息的第一驗(yàn)證,同時(shí)僅需要比完整消息的解密和完整性校驗(yàn)少的計(jì)算。因此,與解密完整的消息相比,能夠更快速地檢測(cè)到不正確消息的讀取。
[0026]依賴于二進(jìn)制字符串的對(duì)合變換可以是應(yīng)用在所述二進(jìn)制字符串與待加密或待解密的消息之間的異或運(yùn)算(XOR)。
[0027]通過自身對(duì)合的加密消息和解密消息的所述變換使用單一變換,同時(shí)要求降低的用于加密和解密的計(jì)算能力。此外,所述變換可以逐位地應(yīng)用到消息,從而使得能夠僅對(duì)所述消息的一部分尤其是消息報(bào)頭解密。
[0028]驗(yàn)證所述報(bào)頭包括將所述報(bào)頭與預(yù)定報(bào)頭進(jìn)行比較。
[0029]根據(jù)一個(gè)優(yōu)點(diǎn),非限制性的特征在于,所述完整性校驗(yàn)是誤差檢測(cè)碼。
[0030]該誤差檢測(cè)碼可以是循環(huán)冗余校驗(yàn)(CRC)或校驗(yàn)和(checksum)。
[0031]使用所述代碼使得能夠驗(yàn)證在存儲(chǔ)器中讀取的加密消息的解密已被正確地執(zhí)行并由此驗(yàn)證所讀取的消息確實(shí)是第一處理單元發(fā)送并存儲(chǔ)在共享存儲(chǔ)器中的消息。
[0032]所述共享存儲(chǔ)器可以是循環(huán)緩沖存儲(chǔ)器。
[0033]偽隨機(jī)二進(jìn)制字符串生成器的周期可以長(zhǎng)于共享存儲(chǔ)器的比特容量。
[0034]使用循環(huán)緩沖存儲(chǔ)器,可以在寫入操作已被輸入到該緩沖存儲(chǔ)器的所有位置的情況下避免舊數(shù)據(jù)無(wú)意的解密。
[0035]根據(jù)本發(fā)明的第二方面涉及一種計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括當(dāng)在處理器上執(zhí)行該程序時(shí),用于實(shí)現(xiàn)根據(jù)第一方面所述的方法的代碼指令。
[0036]根據(jù)本發(fā)明的第三方面涉及一種系統(tǒng),該系統(tǒng)包括:
[0037]-至少一個(gè)第一處理單元,配置為訪問與第一處理單元共享的存儲(chǔ)器;
[0038]所述第一處理單元包括:
[0039]-用于生成第一偽隨機(jī)二進(jìn)制字符串的偽隨機(jī)二進(jìn)制字符串生成器;
[0040]-密碼模塊,用于通過對(duì)待發(fā)送的消息應(yīng)用依賴于所生成的第一偽隨機(jī)二進(jìn)制字符串的對(duì)合變換來對(duì)所述待發(fā)送的消息加密;
[0041 ]所述待發(fā)送的消息包括完整性校驗(yàn)和報(bào)頭;
[0042]-用于發(fā)送已加密的消息并將該消息存儲(chǔ)在共享的存儲(chǔ)器中的裝置;
[0043]以及至少一個(gè)第二處理單元,配置為訪問與第一處理單元共享的存儲(chǔ)器;
[0044]所述第二處理單元包括:
[0045]-用于生成第二偽隨機(jī)二進(jìn)制字符串的偽隨機(jī)二進(jìn)制字符串生成器;
[0046]所述第一處理單元的生成器和所述第二處理單元的生成器使用同一種子初始化并彼此同步,所述第一二進(jìn)制字符串與所述第二二進(jìn)制字符串相同;
[0047]-密碼模塊,用于通過對(duì)存儲(chǔ)在共享的存儲(chǔ)器中的已加密的消息應(yīng)用依賴于所述第二偽隨機(jī)二進(jìn)制字符串的對(duì)合變換來對(duì)所存儲(chǔ)的已加密的消息解密,解密所述消息包括解密所述消息的報(bào)頭、驗(yàn)證已解密的報(bào)頭以及根據(jù)報(bào)頭驗(yàn)證的結(jié)果來解密完整的消息;
[0048]依賴于所述第一偽隨機(jī)二進(jìn)制字符串的對(duì)合變換和依賴于所述第二偽隨機(jī)二進(jìn)制字符串的對(duì)合變換相同;
[0049]-用于根據(jù)已解密的消息的完整性校驗(yàn)來驗(yàn)證所述已解密的消息的完整性的裝置。
[0050]所述計(jì)算機(jī)程序產(chǎn)品和系統(tǒng)的優(yōu)點(diǎn)與以上