本公開涉及數(shù)據(jù)處理系統(tǒng)領(lǐng)域。更具體地,本公開涉及對數(shù)據(jù)處理設(shè)備內(nèi)的存儲器的沖突存儲器訪問的管理。
背景技術(shù):
已知提供了一種數(shù)據(jù)處理設(shè)備,該數(shù)據(jù)處理設(shè)備包括被實(shí)行存儲器訪問的存儲器。數(shù)據(jù)處理設(shè)備可包括多個存儲器訪問請求源。作為示例,數(shù)據(jù)處理系統(tǒng)可包括多個處理器,每個處理器執(zhí)行程序指令并且共享公共的存儲器地址空間。已知的關(guān)于這種布置的問題在于:存儲器訪問可能沖突以及可能引起一致性問題和其他危害,例如寫之后再寫的危害,讀之后再寫的危害,等等。處理這些問題的一種已知技術(shù)是采用存儲器鎖定。利用這種方法,一處理器希望訪問與另一處理器共享的存儲器項(xiàng)目時將首先請求占有鎖并且僅當(dāng)獲得了此鎖時才允許進(jìn)行存儲器訪問。當(dāng)存儲器訪問已完成時,該鎖然后被釋放。如果另一處理器已經(jīng)著手進(jìn)行對該存儲器項(xiàng)目的訪問,則鎖將不能得到,并且因此潛在沖突將被防止,請求過程稍后將重新嘗試以獲得鎖。雖然這樣的存儲器鎖定方法是安全的,但其具有降低性能的問題,因?yàn)樵诖鎯ζ髟L問可被執(zhí)行前需要采取大量額外的步驟。
對于此問題的另一種方法是利用推測性存儲器訪問,其中存儲器訪問被發(fā)起,然后硬件監(jiān)控器確定在第一存儲器訪問完成并且確認(rèn)其結(jié)果之前是否有另一沖突的或者潛在沖突的存儲器訪問發(fā)出。如果這樣的另一沖突存儲器訪問出現(xiàn),則第一存儲器訪問被取消并且在稍后時間重試。雖然這樣的方法在一些情況中(例如當(dāng)沖突不太可能時)可以改善性能,但是這種方法可能降低性能,或者甚至在一些病態(tài)情況中可能由于出現(xiàn)沖突的水平而阻礙任何前進(jìn)進(jìn)程。
技術(shù)實(shí)現(xiàn)要素:
從一方面可見,本技術(shù)提供了一種存儲器控制器,該存儲器控制器被配置為利用選定管理算法來管理對數(shù)據(jù)處理設(shè)備內(nèi)的存儲器的沖突存儲器訪問,選定管理算法是依據(jù)數(shù)據(jù)處理設(shè)備的一個或多個當(dāng)前狀態(tài)參數(shù)從多個候選管理算法中動態(tài)地選出的。
本技術(shù)認(rèn)識到當(dāng)用于管理沖突存儲器訪問的管理算法依據(jù)數(shù)據(jù)處理設(shè)備的一個或多個檢測到的當(dāng)前狀態(tài)參數(shù)被動態(tài)地選定時,能夠獲得改進(jìn)的性能。一種管理算法在一些狀態(tài)中可能比在其他狀態(tài)中更有效。本技術(shù)允許系統(tǒng)適應(yīng)當(dāng)前盛行條件并且采用與那些盛行條件匹配的用于沖突存儲器訪問的管理算法。
將會認(rèn)識到用作選擇存儲器管理算法的部分的一個或多個當(dāng)前狀態(tài)參數(shù)可采取各種不同形式。作為示例,系統(tǒng)可展示出隨時間以規(guī)律方式變化的行為,并且這可被用于選擇針對給定時間的最適當(dāng)?shù)墓芾硭惴āT谄渌麑?shí)施例中,用于控制存儲器管理算法的選擇的有用狀態(tài)參數(shù)是指示檢測到的沖突存儲器訪問的量的一個或多個沖突水平參數(shù)。按照這種方式,當(dāng)前出現(xiàn)的沖突水平可被用于動態(tài)地選擇用于管理該沖突的適當(dāng)存儲器管理算法。利用不同管理算法將會更好地管理不同量的沖突存儲器訪問。
出現(xiàn)的沖突的水平可以各種不同方式來量度。在一些實(shí)施例中,一個或多個沖突水平參數(shù)包括指示針對存儲器的全部被訪問區(qū)域檢測到的沖突存儲器訪問的量的全局沖突水平參數(shù)就足夠了。因此,在一些實(shí)施例中,來自系統(tǒng)的沖突的整體或總體水平作為整體可被用于控制用于管理沖突的管理算法。
在其他實(shí)施例中,更精細(xì)粒度的控制可能更適當(dāng),并且一個或多個沖突水平參數(shù)可包括指示針對存儲器的各個不同區(qū)域檢測到的沖突存儲器訪問的量的多個每區(qū)域沖突水平參數(shù)、指示針對各個不同處理過程檢測到的沖突存儲器訪問的量的多個每過程沖突水平參數(shù)、和/或指示針對各個不同的處理線程檢測到的沖突存儲器訪問的量的多個每線程沖突水平參數(shù)中的一者或多者。對沖突量的這樣的更精細(xì)水平的量度允許更精細(xì)水平地控制例如以每區(qū)域、每過程或每線程的方式(在適當(dāng)?shù)那闆r下)來選擇管理算法。
為了收集有關(guān)出現(xiàn)的沖突的水平的信息,一些實(shí)施例可以包括一個或多個沖突計數(shù)器,這些沖突計數(shù)器被配置為存儲各自的指示檢測到的沖突存儲器訪問的數(shù)量的沖突計數(shù)值。這些沖突計數(shù)器可以按照全局、每區(qū)域、每過程和/或每線程地方式被提供。
在以每區(qū)域的方式提供沖突計數(shù)器的情形中,提供這些沖突計數(shù)器的一種有效方式是作為探聽控制器的部分,其中探聽控制器用于在所述存儲器內(nèi)的存儲器區(qū)域的一粒度級下管理數(shù)據(jù)的不同復(fù)本之間的一致性。探聽控制器存儲的標(biāo)簽數(shù)據(jù)可以補(bǔ)充以指示針對那些區(qū)域檢測到的沖突的計數(shù)值。探聽控制器存儲的標(biāo)簽數(shù)據(jù)的管理可被用于以類似方式管理計數(shù)值,即在當(dāng)相關(guān)聯(lián)區(qū)域被添加到探聽控制器跟蹤的區(qū)域或從探聽控制器跟蹤的區(qū)域移除的同時,計數(shù)值被增加、維持和驅(qū)逐。
沖突計數(shù)器可以采取各種不同形式。一種示例形式是飽和計數(shù)器。飽和計數(shù)器將在給定計數(shù)值范圍中向上或向下計數(shù),并且當(dāng)達(dá)到此范圍的邊界時,計數(shù)值將被維持。這種飽和計數(shù)器提供了他們消耗的資源的量與他們提供的用于選擇沖突管理算法的有用信息之間的良好平衡。
在具有這種沖突計數(shù)器的系統(tǒng)內(nèi),沖突-增加-注釋算法可被用于當(dāng)檢測到?jīng)_突時改變沖突計數(shù)值。這種沖突-增加-注釋算法例如可以采取如下形式:每當(dāng)檢測到?jīng)_突時使得計數(shù)值增大1,直到計數(shù)器達(dá)到最大值為止,超過該最大值,記錄進(jìn)一步?jīng)_突將沒有任何影響,因?yàn)榕c最高程度沖突相匹配的管理算法選擇已被指示出用于選擇。
沖突-減少-注釋算法應(yīng)被提供為使得沖突計數(shù)值適當(dāng)?shù)馗欕S時間出現(xiàn)的沖突的程度也是適當(dāng)?shù)摹.?dāng)檢測到由計數(shù)值中的相應(yīng)一個計數(shù)值跟蹤到無沖突的預(yù)定數(shù)量的訪問和/或自從上次對計數(shù)值施加了產(chǎn)生增大的改變起已經(jīng)經(jīng)過了預(yù)定時間間隔中的一者或兩者時,這樣的沖突-減少-注釋算法可對該計數(shù)值進(jìn)行改變。因此,如果沒有檢測到?jīng)_突,則沖突計數(shù)值將隨時間穩(wěn)定地減少/減輕。
沖突-增加-注釋算法和沖突-減少-注釋算法對于整個系統(tǒng)可以是相同的,或者替代地(如果需要)可以每區(qū)域、每過程或每線程而不同以便改善計數(shù)值反映所跟蹤的沖突的程度的準(zhǔn)確性。
用于管理沖突存儲器訪問的不同候選管理算法可以采取各種不同形式。在一些實(shí)施例中,這些算法包括發(fā)起推測性存儲器訪問,而不論一個或多個沖突水平參數(shù)的值如何。另一種可能的候選管理算法是這樣一種方法,其中如果一個或多個沖突水平參數(shù)的值在預(yù)定范圍內(nèi),則發(fā)起推測性存儲器訪問,而如果一個或多個沖突水平參數(shù)的值在此范圍外,則利用存儲器鎖定發(fā)起存儲器訪問。
另一種可能的存儲器管理算法是這樣一種方法,其中如果針對給定過程的第一推測性訪問遇到了干擾訪問,則系統(tǒng)等待針對該給定處理過程指定的一段時間量并且重試推測性訪問。也可應(yīng)用的依據(jù)檢測到的當(dāng)前參數(shù)進(jìn)行選擇的另一種不同候選算法是這樣一種方法,其中如果針對給定處理過程的第一推測性訪問遇到干擾訪問,則系統(tǒng)等待依據(jù)檢測到的一個或多個沖突水平參數(shù)的一段時間量,然后重試推測性訪問??杀粍討B(tài)選擇的又一種可能候選存儲器管理算法是這樣一種方法,其中如果針對給定處理過程的第一推測性訪問遇到干擾訪問,則系統(tǒng)利用存儲器鎖定來重試訪問。
本技術(shù)可以被用在存儲器訪問是事務(wù)性存儲器訪問的存儲器系統(tǒng)中。
從另一方面看,本技術(shù)提供了一種存儲器控制器裝置,該存儲器控制器裝置用于利用選定管理算法來管理對數(shù)據(jù)處理設(shè)備內(nèi)的存儲器的沖突存儲器訪問,選定管理算法是依據(jù)數(shù)據(jù)處理設(shè)備的一個或多個當(dāng)前狀態(tài)參數(shù)從多個候選管理算法動態(tài)地選出的。
從又一方面看,本技術(shù)提供一種管理對數(shù)據(jù)處理設(shè)備中的存儲器的沖突存儲器訪問的方法,該方法包括以下步驟:依據(jù)數(shù)據(jù)處理設(shè)備的一個或多個當(dāng)前狀態(tài)參數(shù)動態(tài)地從多個候選管理算法中選擇選定管理算法;以及利用選定管理算法來管理存儲器訪問。
附圖說明
現(xiàn)在將參考附圖并僅借助于示例來描述本發(fā)明的實(shí)施例,在附圖中:
圖1示意性地圖示用于執(zhí)行一致性存儲器訪問的數(shù)據(jù)處理設(shè)備,其中在存儲器訪問間可能出現(xiàn)沖突。
圖2、3、4和5示意性地圖示用于收集和存儲指示出現(xiàn)的沖突的量的狀態(tài)參數(shù)的不同布置;
圖6示意性地圖示從用于管理存儲器沖突的多個候選管理算法間進(jìn)行動態(tài)選擇的第一示例。
圖7示意性地圖示從用于管理存儲器沖突的多個候選管理算法間進(jìn)行動態(tài)選擇的第二示例。
圖8是示意性地圖示所涉及的算法選擇的流程圖;
圖9是示意性地圖示基于計時器的算法選擇的流程圖;
圖10是示意性地圖示沖突-增加-注釋算法的流程圖;
圖11是示意性地圖示沖突-減少-注釋算法的流程圖;
圖12是示意性地圖示用于管理存儲器訪問之間的沖突的管理算法的動態(tài)選擇的又一示例。
具體實(shí)施方式
圖1示意性地圖示數(shù)據(jù)處理設(shè)備2,該數(shù)據(jù)處理設(shè)備包括多個處理器核心4、6、8、10,每個處理器核心具有相關(guān)聯(lián)的L1緩存10、12、14、16并且共享L2緩存18以及存儲器系統(tǒng)內(nèi)的更高層。本領(lǐng)域技術(shù)人員將會認(rèn)識到,存儲器地址空間的數(shù)據(jù)塊可以作為本地復(fù)本存儲在L1緩存存儲器10、12、14、16中的一個或多個緩存存儲器中,以便給出對該數(shù)據(jù)行的低延時且低開銷的訪問。因?yàn)閿?shù)據(jù)可能被保持在多個位置,所以管理數(shù)據(jù)的一致性是非常重要的。存儲器控制器20(其包括探聽控制器22)具有管理此一致性的功能,諸如通過利用根據(jù)一致性協(xié)議(例如MESI協(xié)議)的探聽請求。
可應(yīng)用的另一種存儲器管理的技術(shù)是將存儲器或至少存儲器的區(qū)域作為事務(wù)性存儲器,存儲器訪問在事務(wù)性存儲器中被原子地執(zhí)行。有若干不同的方式可以增加這種事務(wù)性存儲器支持以應(yīng)對可能出現(xiàn)沖突存儲器訪問的困難。當(dāng)?shù)谝淮鎯ζ髟L問正在進(jìn)行但尚未完成,而與第一存儲器訪問交疊的第二存儲器訪問被發(fā)出或者試圖發(fā)出時,可能出現(xiàn)沖突存儲器訪問。應(yīng)對這種問題的一種方式是采用利用存儲器鎖定的管理算法。在存儲器訪問可發(fā)起之前,過程/線程必須請求并被準(zhǔn)許對于存儲器鎖令牌的占有。與該存儲器鎖令牌相關(guān)聯(lián)的存儲器訪問然后可被執(zhí)行,并且當(dāng)該存儲器訪問已經(jīng)完成時,存儲器鎖令牌可被釋放。針對每個存儲器區(qū)域有一個存儲器鎖令牌,因此如果另一處理/線程已經(jīng)占有令牌,則當(dāng)潛在沖突存儲器訪問希望獲得對該令牌的占有時,則不能獲得該令牌,因此潛在沖突存儲器訪問將等待,直到令牌可用為止。這樣的利用存儲器鎖令牌的技術(shù)有時被稱作存儲器鎖定技術(shù)。
應(yīng)對潛在沖突存儲器訪問的另一種技術(shù)是推測性地發(fā)出每個存儲器訪問,并且然后監(jiān)控是否隨后出現(xiàn)潛在沖突存儲器訪問。推測性地發(fā)出的存儲器訪問不能提交其(一個或多個)結(jié)果,直到確保在執(zhí)行第一存儲器訪問所花的時間期間未出現(xiàn)或者將不會出現(xiàn)潛在沖突存儲器訪問。如果潛在沖突訪問確實(shí)出現(xiàn),則推測性地發(fā)出的第一存儲器訪問被取消并且稍后重試。
所提及的這種推測性存儲器訪問發(fā)出的變體將涉及:隨后重試失敗的推測性訪問一次或多次,如果第一推測性訪問失敗則利用存儲器鎖定機(jī)制來執(zhí)行存儲器訪問,在可隨機(jī)改變的隨后時間處重試存儲器訪問,或者是其他變型。
圖1中示出的存儲器控制器20用于支持上述用于管理沖突存儲器訪問的候選管理算法。存儲器控制器20依據(jù)所檢測到的數(shù)據(jù)處理設(shè)備2的一個或多個當(dāng)前狀態(tài)參數(shù)來動態(tài)地在這多個候選管理算法之間進(jìn)行選擇。這些當(dāng)前狀態(tài)參數(shù)可以采取各種不同形式,并且在已經(jīng)注意到時間和要被執(zhí)行的具有候選管理算法的適當(dāng)性之間存在關(guān)聯(lián)性的系統(tǒng)中可以如時間一樣簡單。
可以用于控制執(zhí)行的管理算法的動態(tài)選擇的當(dāng)前狀態(tài)參數(shù)的一種具體形式是一個或多個沖突水平參數(shù),這些參數(shù)指示按照全局、每過程(process)、每線程(thread)、每區(qū)域或它們的各種組合的方式檢測到的沖突存儲器訪問的量。
全局沖突水平參數(shù)指示針對存儲器的所有訪問區(qū)域檢測到的沖突存儲器訪問的量。每區(qū)域沖突水平參數(shù)指示針對存儲器的相應(yīng)區(qū)域檢測到的沖突存儲器訪問的量。每過程沖突水平參數(shù)指示針對相應(yīng)處理過程檢測到的沖突存儲器訪問的量。每線程沖突水平參數(shù)指示針對相應(yīng)處理線程檢測到的沖突存儲器訪問的量。
上述沖突水平參數(shù)可以利用一個或多個沖突計數(shù)器(可以是飽和計數(shù)器)來跟蹤。這些飽和計數(shù)器將響應(yīng)于檢測到存儲器訪問沖突或沒有檢測到存儲器訪問沖突而被遞增和遞減(或者以其他形式改變)(和/或不論是否檢測到的沖突而隨時間逐漸的遞減)。對于在計數(shù)器中保持的這些計數(shù)值的管理因此由沖突-增加-注釋算法和沖突-減少-注釋算法二者來控制。這些算法可以跨所有計數(shù)器是一致的,或者可以永久地或動態(tài)地跨不同計數(shù)器不同地配置。
圖2示意性地圖示存儲器控制器20,該存儲器控制器20包括全局沖突計數(shù)器24和每過程沖突計數(shù)器26。計數(shù)控制電路28接收指示何時檢測到存儲器訪問沖突的信號和其他狀態(tài)參數(shù)(諸如時間),并通過利用沖突-增加-注釋算法和沖突-減少-注釋算法來利用這些參數(shù)遞增或遞減計數(shù)值。
圖3示意性地圖示存儲器控制器20,該存儲器控制器20包括多個每線程沖突計數(shù)器30。這些沖突計數(shù)器中的每個沖突計數(shù)器跟蹤針對如操作系統(tǒng)排定的特定線程出現(xiàn)的存儲器訪問沖突。
圖4示意性地圖示存儲器控制器20,該存儲器控制器20包括探聽控制器22,探聽控制器22管理不同存儲器區(qū)域之間的一致性。探聽控制器22中的每行存儲標(biāo)識存儲器區(qū)域的數(shù)據(jù)(例如,TAG(標(biāo)簽)值)并且與此相關(guān)聯(lián)地提供每區(qū)域沖突計數(shù)器32,該每區(qū)域沖突計數(shù)器32存儲指示針對存儲器內(nèi)的該特定區(qū)域出現(xiàn)的存儲器訪問沖突的數(shù)量的沖突計數(shù)值。這些沖突計數(shù)器可以以與標(biāo)識不同存儲器區(qū)域的TAG值相同的方式來管理,并且可以根據(jù)探聽控制器22為了一致性而正跟蹤哪些存儲器區(qū)域的管理,二者都被增加到探聽控制器22內(nèi)的條目以及從探聽控制器22中的條目丟棄。
圖5示意性地圖示存儲器控制器20的又一示例實(shí)施例,該存儲器控制器20包括探聽控制器22,該探聽控制器具有4路存儲器34,該存儲器34存儲標(biāo)識為了一致性管理而跟蹤的區(qū)域。每路內(nèi)的每個條目存儲每區(qū)域和每路沖突計數(shù)器36。
圖2、3、4、5圖示可以如何跟蹤數(shù)據(jù)處理設(shè)備的當(dāng)前狀態(tài)參數(shù)以及如何把當(dāng)前狀態(tài)參數(shù)保持在數(shù)據(jù)處理設(shè)備內(nèi)的各種不同示例。這些當(dāng)前狀態(tài)參數(shù)然后被存儲器控制器用來從用于管理沖突存儲器訪問的多個候選管理算法中進(jìn)行選擇以便所使用的管理算法較好地匹配處理設(shè)備的當(dāng)前狀態(tài)。
圖6示意性地圖示基于一個或多個狀態(tài)參數(shù)對用于管理沖突存儲器訪問的存儲器管理算法的動態(tài)選擇。在步驟38,存儲器管理算法被選擇。初始選擇的存儲器管理算法可以是如下中一者:嘗試一次;嘗試兩次;或者鎖定。這些算法對應(yīng)于:嘗試推測性存儲器訪問一次并然后默認(rèn)進(jìn)行存儲器鎖定訪問;嘗試推測性存儲器訪問兩次并然后默認(rèn)進(jìn)行存儲器鎖定訪問;或者從一開始就嘗試存儲器鎖定訪問。
如果選擇了嘗試一次管理算法,則過程進(jìn)行到步驟40,此處執(zhí)行第一推測性訪問。如果此推測性訪問由于沖突存儲器訪問而失敗,則在步驟42處檢測到此失敗。如果第一推測性訪問成功,則過程結(jié)束。如果第一推測性訪問失敗,則步驟44判斷可用于第一推測性訪問的沖突計數(shù)器(不論針對全局、每過程、每線程、每區(qū)域或這些的組合)是否超過閾值。如果此沖突計數(shù)器小于閾值(表明沖突水平一般比較低),則在步驟46可執(zhí)行第二推測性訪問。如果在步驟44與閾值比較的沖突計數(shù)器值高于閾值,則過程進(jìn)行到步驟48處以利用存儲器鎖定算法。存儲器鎖定算法在步驟48處取得存儲器鎖,在步驟50執(zhí)行存儲器訪問,然后在步驟52釋放存儲器鎖。事務(wù)性存儲器、數(shù)據(jù)庫其他一致性存儲器系統(tǒng)中的鎖定在本領(lǐng)域是已知的,并且在此將不詳細(xì)論述。
如果在步驟38處的選擇選擇了嘗試兩次算法,則步驟54執(zhí)行第一推測性存儲器訪問。如果此第一推測性存儲器訪問失敗,則在步驟46處執(zhí)行第二推測性訪問。如果第二推測性存儲器訪問失敗,則過程進(jìn)行到步驟48,此處遵循存儲器鎖定算法。
圖7圖示出依據(jù)諸如沖突計數(shù)器值之類的當(dāng)前狀態(tài)參數(shù)來從用于管理沖突存儲器訪問的多個候選管理算法中進(jìn)行動態(tài)選擇的第二示例。在步驟56,執(zhí)行第一推測性存儲器訪問。如果該訪問成功,則過程在步驟58終結(jié)。如果在步驟60檢測到第一推測性訪問不成功,則過程進(jìn)行到步驟62,此處將可應(yīng)用的(一個或多個)沖突計數(shù)器值與閾值比較。如果(一個或多個)沖突計數(shù)器值指示沖突量高于對應(yīng)于閾值的量,則處理進(jìn)行到步驟64,此處通過在步驟64處首先取得鎖值、在步驟66執(zhí)行訪問以及在步驟68釋放鎖值來提供存儲器鎖定算法。將會認(rèn)識到,如果鎖當(dāng)前是由另一處理/線程保持時,在步驟64中取得鎖的過程中可能會有延遲。
如果在步驟62處確定沖突計數(shù)器值小于閾值,則處理進(jìn)行到步驟70,此處系統(tǒng)等待一段時間,此時間依賴于正在執(zhí)行存儲器訪問的處理/線程和當(dāng)前沖突計數(shù)器值。將會認(rèn)識到,如果需要,等待時長可根據(jù)各種其他狀態(tài)參數(shù)而變化。當(dāng)超過等待時長時,步驟72執(zhí)行第二推測性訪問。如果此第二推測性訪問失敗,則系統(tǒng)切換為使用系統(tǒng)鎖定算法以及步驟64處的處理過程。
所管理的存儲器訪問可以具有很多種不同形式并且包括影響存儲器中的數(shù)據(jù)結(jié)構(gòu)的各種方式。一個示例實(shí)施例將涉及單個存儲器地址并涉及一次或多次讀和/或?qū)懙臄?shù)據(jù)結(jié)構(gòu)。在一些示例實(shí)施例中,數(shù)據(jù)可跨“存儲器的區(qū)域”,涉及對這些多個區(qū)域中的位置的讀和/或?qū)?。所有這些示例可被認(rèn)為是推測性構(gòu)建或在鎖定控制下構(gòu)建的訪問。因此,可能在推測性訪問中具有沖突,推測性訪問是復(fù)合訪問的分量訪問中任何分量訪問的部分。
這種涉及多個分量的訪問的示例是向內(nèi)存(In-memory)FIFO中增加條目。這可以藉由如下步驟利用鎖來執(zhí)行。
取得鎖
讀取fifo寫指針
如果fifo已滿,則失敗
將數(shù)據(jù)寫入fifo寫指針指向的位置
使得fifo寫指針前進(jìn)
寫入新的fifo寫指針值
釋放鎖
替代地,訪問可以通過如下步驟而推測性地被執(zhí)行:
開始事務(wù)
讀取fifo寫指針
如果fifo已滿,則失敗
將數(shù)據(jù)寫入fifo寫指針指向的位置
使得fifo寫指針前進(jìn)
寫入新的fifo寫指針值
提交或失敗的事務(wù)
圖8是示意性地圖示在存儲器訪問發(fā)出時執(zhí)行算法選擇的另一示例實(shí)施例。在步驟74,過程進(jìn)行等待,直到準(zhǔn)備要發(fā)出存儲器訪問。步驟76隨后讀取設(shè)備的當(dāng)前狀態(tài)參數(shù)。步驟78選擇要被應(yīng)用于存儲器訪問的、作為當(dāng)前狀態(tài)參數(shù)的函數(shù)的管理算法。步驟80然后發(fā)出存儲器訪問,該存儲器訪問由在步驟78中選擇的選定存儲器管理算法掌控。
圖9圖示執(zhí)行基于計時器的算法選擇的另一示例實(shí)施例。步驟82等待,直到系統(tǒng)注釋的時間值指示自從上一算法選擇操作被執(zhí)行起已經(jīng)經(jīng)過了大于閾值的時間。在步驟82之后,步驟84用于讀取設(shè)備的狀態(tài)參數(shù)。步驟86然后選擇作為在步驟84處讀取的狀態(tài)參數(shù)的函數(shù)的、要被用于未來存儲器訪問的存儲器管理算法。因此,上述處理周期性地基于當(dāng)前狀態(tài)參數(shù)而重新評估哪個存儲器管理算法應(yīng)被使用。
圖10示意性地圖示沖突-增加-注釋算法。在步驟88,處理等待,直到?jīng)_突被檢測到為止。當(dāng)沖突被檢測到時,步驟90使得可應(yīng)用于檢測到的沖突的一個或多個計數(shù)器遞增。如果維護(hù)了不止一個計數(shù)值,則可在不止一個地方發(fā)生遞增,如檢測到的沖突可被用于遞增例如全局計數(shù)值、過程計數(shù)值、區(qū)域計數(shù)值和線程計數(shù)值(如果這些都可應(yīng)用于引起沖突的存儲器訪問)。全局計數(shù)值將針對出現(xiàn)的所有沖突而遞增,而每過程、每區(qū)域和每線程計數(shù)器將僅在與計數(shù)器相關(guān)的過程/區(qū)域/線程匹配的沖突出現(xiàn)時才遞增。
圖11示意性地圖示沖突-減少-注釋算法。在步驟92,判斷是否大于閾值數(shù)的無沖突連續(xù)訪問已經(jīng)執(zhí)行。如果此條件被滿足,則處理進(jìn)行到步驟94,此處執(zhí)行(一個或多個)相關(guān)沖突計數(shù)器的遞減。如上,這些計數(shù)器可包括全局計數(shù)器、每過程計數(shù)器、每區(qū)域計數(shù)器和/或每線程計數(shù)器。
如果在步驟92處確定還沒有執(zhí)行了大于閾值數(shù)量的無沖突連續(xù)訪問,則處理進(jìn)行到步驟96,此處判斷自從上次遞減被應(yīng)用起是否已經(jīng)逝去了一定閾值時間。如果多于閾值的時間已經(jīng)過去,則處理進(jìn)行到步驟94,此處再次執(zhí)行遞減。因此,步驟96用于即使沒有執(zhí)行存儲器訪問也隨著時間流逝而向沖突計數(shù)值施加遞減。
將會認(rèn)識到,即使全部算法流相同,也可以對不同計數(shù)器應(yīng)用不同沖突-增加-注釋算法和不同沖突-減少-注釋算法和/或?qū)Σ煌嫈?shù)器應(yīng)用這些不同算法的不同參數(shù)。按照這種方式,對于各個計數(shù)器值,不同計數(shù)器值的更新可以被剪裁。
圖12是示意性地圖示動態(tài)管理算法選擇的另一示例。在步驟98,處理等待,直到確定需要對管理算法進(jìn)行選擇。這種需求可以若干不同方式出現(xiàn),諸如,例如定時器、自從做出上次選擇起已經(jīng)發(fā)出了若干訪問、當(dāng)每個存儲器訪問發(fā)出時、作為外部激勵的結(jié)果,等等。當(dāng)需要選擇操作時,處理于是進(jìn)行到步驟100,此處判斷可應(yīng)用于要發(fā)出的存儲器訪問的過程/區(qū)域/線程的當(dāng)前沖突水平參數(shù)是否大于閾值。如果沖突水平參數(shù)大于閾值,則處理進(jìn)行到步驟102,此處存儲器鎖定算法被采用并且存儲器訪問被發(fā)出。如果沖突水平小于閾值水平,則處理進(jìn)行到步驟104,此處推測性存儲器訪問發(fā)出被選擇作為要采用的管理算法。
雖然在此已經(jīng)參照附圖詳細(xì)描述了示意性實(shí)施例,但應(yīng)理解權(quán)利要求并不限于那些具體實(shí)施例,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍和精神的情況下可實(shí)行各種改變、增加和修改。例如,可以做出對從屬權(quán)利要求的特征和獨(dú)立權(quán)利要求的特征的各種組合。