背景技術(shù):
便攜式計(jì)算設(shè)備(例如,蜂窩電話、智能電話、平板計(jì)算機(jī)、便攜式數(shù)字助理(pda)以及便攜式游戲控制臺(tái))以及其它計(jì)算設(shè)備持續(xù)提供不斷擴(kuò)展的一系列功能和服務(wù),并且為用戶提供前所未有水平的對(duì)信息、資源和通信的訪問(wèn)。為了與這些服務(wù)增強(qiáng)保持同步,這樣的設(shè)備已經(jīng)變得更加強(qiáng)大并且更加復(fù)雜?,F(xiàn)今便攜式計(jì)算設(shè)備通常包括片上系統(tǒng)(soc),其包括嵌入在單個(gè)基板上的一個(gè)或多個(gè)芯片組件(例如,一個(gè)或多個(gè)中央處理單元(cpu)、圖形處理單元(gpu)、數(shù)字信號(hào)處理器等)。soc可以經(jīng)由高性能數(shù)據(jù)和控制接口耦合到一個(gè)或多個(gè)易失性存儲(chǔ)器設(shè)備,例如,動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)。
高性能dram存儲(chǔ)器通常需要執(zhí)行各種類型的硬件維護(hù)事件。例如,可以以相對(duì)高的時(shí)鐘頻率(例如,ghz時(shí)鐘頻率)執(zhí)行周期性校準(zhǔn)和訓(xùn)練,以便提供接口的無(wú)誤操作。存儲(chǔ)器刷新是在dram存儲(chǔ)器的操作期間所要求的后臺(tái)維護(hù)過(guò)程,因?yàn)槊勘忍氐拇鎯?chǔ)器數(shù)據(jù)是隨著芯片上的小電容器的電荷的存在或者缺少而被存儲(chǔ)的。隨著時(shí)間過(guò)去,存儲(chǔ)器單元中的電荷泄漏掉,因此在沒(méi)有刷新的情況下,所存儲(chǔ)的數(shù)據(jù)最終將丟失。為了防止這種情況,dram控制器周期性地讀取每個(gè)單元并且重寫其,從而將電容器上的電荷恢復(fù)到其原始水平。
這些硬件維護(hù)事件可能不期望地阻塞cpu業(yè)務(wù)。例如,在現(xiàn)有系統(tǒng)中,硬件維護(hù)事件是由存儲(chǔ)器控制器控制的獨(dú)立的事件,其可能導(dǎo)致活動(dòng)的cpu進(jìn)程與這些周期性的獨(dú)立的dram硬件事件之間的存儲(chǔ)器訪問(wèn)沖突。當(dāng)發(fā)生沖突時(shí),cpu進(jìn)程可能在dram硬件事件正被服務(wù)的同時(shí)暫時(shí)地停止。為dram服務(wù)還可能關(guān)閉或者重置cpu進(jìn)程正在使用的打開(kāi)的頁(yè)面。停止cpu進(jìn)程是不期望的,因此,dram硬件事件通常是在單個(gè)的基礎(chǔ)上來(lái)完成的。soc硬件可以具有推遲dram硬件事件的能力,但是通常僅在極短時(shí)間段(例如,基于納秒級(jí)別)內(nèi)。因此,由于大量單獨(dú)的dram硬件事件導(dǎo)致的概率性阻塞,活動(dòng)的cpu進(jìn)程可能引起不期望的低效。
因此,需要提供用于減少由周期性的易失性存儲(chǔ)器維護(hù)事件導(dǎo)致的存儲(chǔ)器訪問(wèn)沖突以及改善cpu進(jìn)程存儲(chǔ)器效率的系統(tǒng)和方法。
技術(shù)實(shí)現(xiàn)要素:
公開(kāi)了用于調(diào)度易失性存儲(chǔ)器維護(hù)事件的系統(tǒng)、方法和計(jì)算機(jī)程序。一個(gè)實(shí)施例是一種方法,其包括:存儲(chǔ)器控制器確定用于執(zhí)行針對(duì)易失性存儲(chǔ)器設(shè)備的維護(hù)事件的服務(wù)時(shí)間(tos)窗口,所述易失性存儲(chǔ)器設(shè)備經(jīng)由存儲(chǔ)器數(shù)據(jù)接口耦合到所述存儲(chǔ)器控制器;所述存儲(chǔ)器控制器向處理單元提供中斷信號(hào);確定所述維護(hù)事件的優(yōu)先級(jí);以及根據(jù)所述優(yōu)先級(jí)來(lái)調(diào)度所述維護(hù)事件。
另一實(shí)施例是一種系統(tǒng),其包括:動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)設(shè)備和片上系統(tǒng)(soc)。所述soc包括處理設(shè)備和dram控制器,其經(jīng)由存儲(chǔ)器數(shù)據(jù)接口電耦合到所述dram設(shè)備。所述dram控制器包括調(diào)度器模塊,所述調(diào)度器模塊被配置為確定用于執(zhí)行用于所述dram設(shè)備的維護(hù)事件的服務(wù)時(shí)間(tos)窗口。所述tos窗口由被提供給所述處理設(shè)備的中斷信號(hào)以及用于執(zhí)行所述維護(hù)的最后期限來(lái)定義。所述處理單元從所述dram控制器接收所述中斷信號(hào)。響應(yīng)于所述中斷信號(hào),所述處理單元確定所述維護(hù)事件的優(yōu)先級(jí)。根據(jù)所述優(yōu)先級(jí)來(lái)調(diào)度所述維護(hù)事件。
附圖說(shuō)明
在各圖中,除非另外指出,否則類似的附圖標(biāo)記貫穿各個(gè)視圖指代類似的部分。對(duì)于諸如“102a”或者“102b”之類的字母字符名稱的附圖標(biāo)記而言,字母字符名稱可以對(duì)在同一圖中存在的兩個(gè)類似的部分或者元素進(jìn)行區(qū)分。當(dāng)旨在附圖標(biāo)記包含在所有圖中具有相同的附圖標(biāo)記的所有部分時(shí),可以省略用于附圖標(biāo)記的字母字符名稱。
圖1是用于調(diào)度易失性存儲(chǔ)器維護(hù)事件的系統(tǒng)的實(shí)施例的框圖。
圖2是示出圖1的系統(tǒng)的組件和操作的框圖/流程圖。
圖3是示出用于調(diào)度圖1和2的系統(tǒng)中的dram維護(hù)事件的方法的實(shí)施例的流程圖。
圖4是示出用于調(diào)度dram維護(hù)事件的服務(wù)時(shí)間(tos)窗口的時(shí)間線。
圖5是示出用于根據(jù)優(yōu)先級(jí)表來(lái)調(diào)度cpu線程a、b和c以及dram維護(hù)事件的系統(tǒng)的另一實(shí)施例的框圖/流程圖。
圖6是示出用于在沒(méi)有經(jīng)由內(nèi)核調(diào)度器進(jìn)行調(diào)度的情況下周期性地執(zhí)行圖5的系統(tǒng)中的dram維護(hù)事件的方法的實(shí)施例的時(shí)間線。
圖7是示出用于根據(jù)優(yōu)先級(jí)表來(lái)調(diào)度dram維護(hù)事件的方法的實(shí)施例的時(shí)間線。
圖8是示出用于根據(jù)優(yōu)先級(jí)表來(lái)調(diào)度dram維護(hù)事件的系統(tǒng)的另一實(shí)施例的框圖/流程圖。
圖9是示出用于生成用于調(diào)度dram維護(hù)事件的優(yōu)先級(jí)表的方法的實(shí)施例的流程圖。
圖10示出用于確定用于dram維護(hù)事件的優(yōu)先級(jí)的優(yōu)先級(jí)表的示例性實(shí)施例。
圖11是示出在tos窗口期間執(zhí)行的dram刷新事件的時(shí)間線。
圖12是示出用于在tos窗口已經(jīng)到期之后執(zhí)行dram刷新事件的硬件干預(yù)方法的實(shí)施例的時(shí)間線。
圖13是可以將用于調(diào)度dram維護(hù)事件的系統(tǒng)和方法并入的便攜式計(jì)算設(shè)備的實(shí)施例的框圖。
圖14是用于調(diào)度多處理器soc中的易失性存儲(chǔ)器維護(hù)事件的系統(tǒng)的另一實(shí)施例的框圖。
圖15是示出圖14中的dram控制器中的決策模塊的實(shí)施例的組合流程圖/框圖。
圖16是示出用于調(diào)度圖14的多處理器soc中的dram維護(hù)事件的方法的實(shí)施例的流程圖。
圖17是示出用于單獨(dú)地調(diào)度以及控制圖14的多處理器soc中的dram維護(hù)的方法的實(shí)施例的時(shí)間線。
圖18是圖15的決策優(yōu)先級(jí)表的實(shí)施例的表。
圖19是由圖14的處理器中的每個(gè)處理器單獨(dú)地生成的通知的示例性實(shí)現(xiàn)的數(shù)據(jù)圖。
具體實(shí)施方式
“示例性”一詞在本文中用于意指“用作例子、實(shí)例或說(shuō)明”。在本文中被描述為“示例性的”任何方面未必被解釋為比其它方面優(yōu)選或者有優(yōu)勢(shì)。
在該描述中,術(shù)語(yǔ)“應(yīng)用”或者“圖像”還可以包括具有可執(zhí)行內(nèi)容的文件,例如:目標(biāo)代碼、腳本、字節(jié)代碼、標(biāo)記語(yǔ)言文件和補(bǔ)丁。另外,本文中所提及的“應(yīng)用”還可以包括本質(zhì)上不可執(zhí)行的文件,例如,可能需要打開(kāi)的文檔或者需要訪問(wèn)的其它數(shù)據(jù)文件。
術(shù)語(yǔ)“內(nèi)容”還可以包括具有可執(zhí)行內(nèi)容的文件,例如:目標(biāo)代碼、腳本、字節(jié)代碼、標(biāo)記語(yǔ)言文件和補(bǔ)丁。另外,本文中所提及的“內(nèi)容”還可以包括本質(zhì)上不可執(zhí)行的文件,例如,可能需要打開(kāi)的文檔或者需要訪問(wèn)的其它數(shù)據(jù)文件。
如該描述中使用的,術(shù)語(yǔ)“組件”、“數(shù)據(jù)庫(kù)”、“模塊”、“系統(tǒng)”等旨在指代計(jì)算機(jī)相關(guān)實(shí)體,任一硬件、固件、硬件和軟件的組合、軟件、或者執(zhí)行中的軟件。例如,組件可以是但不限于在處理器上運(yùn)行的進(jìn)程、處理器、對(duì)象、可執(zhí)行文件、執(zhí)行的線程、程序和/或計(jì)算機(jī)。通過(guò)說(shuō)明的方式,在計(jì)算設(shè)備上運(yùn)行的應(yīng)用和計(jì)算設(shè)備都可以是組件。一個(gè)或多個(gè)組件可以位于進(jìn)程和/或執(zhí)行的線程內(nèi),并且組件可以被本地化在計(jì)算機(jī)上和/或分布在兩個(gè)或更多個(gè)計(jì)算機(jī)之間。另外,這些組件可以從具有存儲(chǔ)在其上的各種數(shù)據(jù)結(jié)構(gòu)的各種計(jì)算機(jī)可讀介質(zhì)執(zhí)行。組件可以通過(guò)本地和/或遠(yuǎn)程進(jìn)程的方式進(jìn)行通信,例如根據(jù)具有一個(gè)或多個(gè)數(shù)據(jù)分組的信號(hào)(例如,來(lái)自一個(gè)組件的數(shù)據(jù),該組件通過(guò)信號(hào)的方式與本地系統(tǒng)、分布式系統(tǒng)和/或跨越諸如互聯(lián)網(wǎng)之類的具有其它系統(tǒng)的網(wǎng)絡(luò)的另一組件交互)。
在該描述中,術(shù)語(yǔ)“通信設(shè)備”、“無(wú)線設(shè)備”、“無(wú)線電話”、“無(wú)線通信設(shè)備”和”無(wú)線手機(jī)“可互換地使用。隨著第三代(“3g”)無(wú)線技術(shù)和第四代(“4g”)的出現(xiàn),較大的帶寬能力已經(jīng)使得更多的便攜式計(jì)算設(shè)備能夠具有更多種無(wú)線能力。因此,便攜式計(jì)算設(shè)備可以包括蜂窩電話、尋呼機(jī)、pda、智能電話、導(dǎo)航設(shè)備或者具有無(wú)線連接或者鏈路的手持計(jì)算機(jī)。
150605u1cn
圖1示出了用于經(jīng)由存儲(chǔ)器控制器提供對(duì)易失性存儲(chǔ)器硬件維護(hù)事件的內(nèi)核調(diào)度的系統(tǒng)100的實(shí)施例。系統(tǒng)100可以在任何計(jì)算設(shè)備中實(shí)現(xiàn),其包括個(gè)人計(jì)算機(jī)、工作站、服務(wù)器、便攜式計(jì)算設(shè)備(pcd)(例如,蜂窩電話、便攜式數(shù)字助理(pda)、便攜式游戲控制臺(tái)或者平板計(jì)算機(jī))。系統(tǒng)100包括片上系統(tǒng)(soc)102,其電耦合到一個(gè)或多個(gè)存儲(chǔ)器設(shè)備。存儲(chǔ)器設(shè)備可以包括易失性存儲(chǔ)器(例如,動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)104)和非易失性存儲(chǔ)器118。dram104可以經(jīng)由高性能數(shù)據(jù)總線107和控制總線105電耦合到soc102。
soc102包括各種片上或者芯上(on-die)組件。在圖1的實(shí)施例中,soc102包括經(jīng)由soc總線116互連的以下各項(xiàng):一個(gè)或多個(gè)處理設(shè)備(例如,中央處理單元(cpu)106、圖形處理單元(gpu)、數(shù)字信號(hào)處理器(dsp)等)、dram控制器108、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)110、只讀存儲(chǔ)器(rom)112、以及存儲(chǔ)控制器114。存儲(chǔ)控制器114耦合到非易失性存儲(chǔ)器118,并且控制相關(guān)聯(lián)的存儲(chǔ)器事務(wù)。應(yīng)當(dāng)明白的是,非易失性存儲(chǔ)器118可以包括任何非易失性存儲(chǔ)器,例如,閃存、閃存驅(qū)動(dòng)器、安全數(shù)字(sd)卡、固態(tài)驅(qū)動(dòng)器(ssd)或者其它類型。cpu106可以包括用于確定當(dāng)前cpu處理負(fù)載的一個(gè)或多個(gè)傳感器126。dram104可以包括用于確定dram104的溫度的一個(gè)或多個(gè)溫度傳感器128。
dram控制器108包括用于調(diào)度、控制和執(zhí)行各種dram硬件維護(hù)事件的各個(gè)模塊130。如以下更詳細(xì)地描述的,dram控制器108可以經(jīng)由與cpu106的信令和通信以及由操作系統(tǒng)120提供的功能(例如,內(nèi)核調(diào)度器122、中斷處理程序124等)實(shí)現(xiàn)dram硬件維護(hù)。在這點(diǎn)上,存儲(chǔ)器硬件維護(hù)模塊130還可以包括調(diào)度器模塊132,其用于通過(guò)生成中斷信號(hào)并且經(jīng)由例如中斷請(qǐng)求(irq)總線117將其發(fā)送給cpu106來(lái)發(fā)起對(duì)dram維護(hù)事件的調(diào)度。調(diào)度器模塊132可以將用于定義用于執(zhí)行所調(diào)度的維護(hù)事件的服務(wù)時(shí)間(tos)窗口的定時(shí)器/控制模塊134并入其中。在一個(gè)實(shí)施例中,如本領(lǐng)域所已知的,dram硬件維護(hù)事件可以包括刷新操作、校準(zhǔn)操作和訓(xùn)練操作。刷新模塊136包括用于刷新dram104的易失性存儲(chǔ)器的邏輯單元。校準(zhǔn)模塊138包括用于周期性地校準(zhǔn)電壓信號(hào)電平的邏輯單元。訓(xùn)練模塊140包括用于周期性地調(diào)整在dram操作期間使用的定時(shí)參數(shù)的邏輯單元。
圖2了示出用于調(diào)度、控制和執(zhí)行dram硬件維護(hù)事件的各個(gè)組件之間的接口的實(shí)施例。調(diào)度器132和定時(shí)器/控制模塊134(其位于dram控制器108中)與操作系統(tǒng)120的中斷處理程序124以接口方式連接。cpu106從dram控制器108接收中斷信號(hào),該中斷信號(hào)指示dram硬件維護(hù)事件將被內(nèi)核調(diào)度器122調(diào)度。在接收到中斷時(shí),在cpu106上運(yùn)行的中斷處理程序124與優(yōu)先級(jí)表202以接口方式連接,優(yōu)先級(jí)表202可以用于為與所接收的中斷信號(hào)相關(guān)聯(lián)的特定dram硬件維護(hù)事件分配優(yōu)先級(jí)。中斷處理程序124與內(nèi)核調(diào)度器122以接口方式連接,以根據(jù)由優(yōu)先級(jí)表202定義的優(yōu)先級(jí)來(lái)調(diào)度dram硬件維護(hù)事件。應(yīng)當(dāng)明白的是,利用對(duì)應(yīng)的中斷處理程序的多個(gè)中斷可以用于為不同類型的維護(hù)事件中的所有維護(hù)事件服務(wù)。
圖3示出了由系統(tǒng)100實(shí)現(xiàn)的用于提供對(duì)dram硬件維護(hù)事件的內(nèi)核調(diào)度的方法300。在框302處,dram控制器108確定用于經(jīng)由內(nèi)核調(diào)度器122調(diào)度、控制和執(zhí)行一個(gè)或多個(gè)dram硬件維護(hù)事件的服務(wù)時(shí)間(tos)窗口。圖4示出了描繪示例性tos窗口408的存儲(chǔ)器維護(hù)事件時(shí)間線400。時(shí)間線400的y軸表示隨著時(shí)間(x軸)的存儲(chǔ)器維護(hù)事件。在一個(gè)實(shí)施例中,tos窗口408被定義為中斷信號(hào)402與在其之前dram硬件維護(hù)事件可以被執(zhí)行的預(yù)定的最后期限之間的持續(xù)時(shí)間。如圖4中所示,中斷信號(hào)402可以是在參考線404所示的時(shí)間t1處接收的。dram控制器108可以經(jīng)由定時(shí)器和控制模塊134監(jiān)測(cè)tos窗口408,以確定所調(diào)度的dram維護(hù)事件是否已經(jīng)在參考線406所示的最后期限時(shí)間t2之前完成。
再次參照?qǐng)D3,在框304處,dram控制器108將一個(gè)或多個(gè)中斷信號(hào)402提供給cpu106,其指示一個(gè)或多個(gè)dram硬件維護(hù)事件將在tos窗口408期間被執(zhí)行。中斷處理程序124接收中斷信號(hào)402。在框306處,響應(yīng)于中斷信號(hào)402,中斷處理程序124可以確定將在tos窗口408期間被執(zhí)行的一個(gè)或多個(gè)dram硬件維護(hù)事件的優(yōu)先級(jí)。應(yīng)當(dāng)明白的是,tos窗口408表示如下情況下的、在其期間一個(gè)或多個(gè)dram維護(hù)事件可以被最佳地推遲執(zhí)行的可用的服務(wù)窗口:在cpu空閑時(shí)間期間、當(dāng)cpu106具有較少負(fù)載(允許完成關(guān)鍵的、高優(yōu)先級(jí)任務(wù))時(shí)或者根據(jù)其它優(yōu)先級(jí)方案,其任何一種可以被體現(xiàn)在優(yōu)先級(jí)表202中。還應(yīng)當(dāng)明白的是,dram維護(hù)事件可以被調(diào)度為在tos窗口408期間作為一批維護(hù)事件而不是現(xiàn)有系統(tǒng)所要求的單獨(dú)的維護(hù)事件來(lái)執(zhí)行,例如通過(guò)發(fā)出多個(gè)刷新命令或者通過(guò)組合刷新和訓(xùn)練事件。以這種方式,可以消除或者顯著減少存儲(chǔ)器訪問(wèn)沖突,并且可以改善cpu進(jìn)程存儲(chǔ)器效率。
在一個(gè)實(shí)施例中,優(yōu)先級(jí)可以是根據(jù)優(yōu)先級(jí)表202確定的,優(yōu)先級(jí)表202例如基于維護(hù)事件的類型(例如,刷新、校準(zhǔn)、訓(xùn)練等)、由負(fù)載傳感器126確定的當(dāng)前cpu負(fù)載以及由傳感器128確定的當(dāng)前dram溫度。在框308處,由中斷處理程序124根據(jù)在框306期間所確定的優(yōu)先級(jí),將一個(gè)或多個(gè)dram硬件維護(hù)事件作為新線程插入到內(nèi)核調(diào)度器122的輸入隊(duì)列上。內(nèi)核調(diào)度器122可以遵循標(biāo)準(zhǔn)慣例,以基于優(yōu)先級(jí),公平地分派其隊(duì)列中的活動(dòng)中的所有活動(dòng)。在框310處,一個(gè)或多個(gè)dram硬件維護(hù)事件可以經(jīng)由內(nèi)核調(diào)度器122,根據(jù)優(yōu)先級(jí)來(lái)執(zhí)行。如上所述,在一個(gè)實(shí)施例中,dram硬件維護(hù)事件可以被分組在一起,以形成tos窗口408內(nèi)的有利的時(shí)間處的單個(gè)較長(zhǎng)的dram維護(hù)操作。在所調(diào)度的dram硬件維護(hù)事件被執(zhí)行之前tos窗口408到期的情況下(即,到達(dá)最后期限t2),定時(shí)器和控制模塊134可以通過(guò)停止cpu106上的業(yè)務(wù)以及執(zhí)行期望的維護(hù),來(lái)覆蓋內(nèi)核調(diào)度并且執(zhí)行硬件干預(yù)。如果發(fā)生干預(yù),那么定時(shí)器和控制模塊134可以維護(hù)過(guò)去干預(yù)的日志,其可以由cpu106訪問(wèn)。
圖5示出了系統(tǒng)100的涉及與三個(gè)處理線程(線程a502、線程b504和線程c506)相關(guān)的dram刷新操作的另一示例性實(shí)現(xiàn)。如圖5中所示,操作系統(tǒng)120可以包括用于調(diào)度存儲(chǔ)器操作和dram硬件維護(hù)事件的一個(gè)或多個(gè)基于優(yōu)先級(jí)的輸入隊(duì)列。在該例子中,系統(tǒng)支持三個(gè)優(yōu)先級(jí)水平。輸入隊(duì)列508用于調(diào)度與最高優(yōu)先級(jí)(優(yōu)先級(jí)0)相關(guān)聯(lián)的操作。輸入隊(duì)列510用于調(diào)度與下一最高優(yōu)先級(jí)(優(yōu)先級(jí)1)相關(guān)聯(lián)的操作。輸入隊(duì)列512用于調(diào)度與最低優(yōu)先級(jí)(優(yōu)先級(jí)2)相關(guān)聯(lián)的操作。應(yīng)當(dāng)明白的是,可以支持任何數(shù)量的優(yōu)先級(jí)水平、類型和方案。
如上所述,dram104可以涉及來(lái)自刷新模塊136、校準(zhǔn)模塊138和訓(xùn)練模塊140的周期性的硬件服務(wù)事件。在一個(gè)實(shí)施例中,模塊136、138和140可以包括用于使用由模塊134提供的定時(shí)器來(lái)跟蹤周期性服務(wù)間隔的相應(yīng)的硬件。每個(gè)定時(shí)器可以跟蹤tos窗口408,在tos窗口408內(nèi),應(yīng)當(dāng)完成對(duì)應(yīng)的dram硬件維護(hù)事件。
隨著用于每個(gè)事件的服務(wù)時(shí)間臨近,調(diào)度器132可以向cpu106發(fā)出中斷信號(hào)402。應(yīng)當(dāng)明白的是,中斷信號(hào)402可以使得操作系統(tǒng)120的中斷處理程序124基于優(yōu)先級(jí)表202,將對(duì)應(yīng)的事件線程添加到輸入隊(duì)列508、510和512中的一個(gè)輸入隊(duì)列上。圖8示出了其中中斷處理程序124接收用于刷新操作的中斷信號(hào)402的例子。中斷處理程序124可以訪問(wèn)優(yōu)先級(jí)表202,并且確定刷新操作將被分配最低優(yōu)先級(jí)(即,用于優(yōu)先級(jí)2的操作的輸入隊(duì)列512)??梢曰趤?lái)自負(fù)載傳感器126和/或溫度傳感器128的輸入,來(lái)確定優(yōu)先級(jí)。在圖8的例子中,將線程a502作為優(yōu)先級(jí)0的操作添加到輸入隊(duì)列508中,將線程b504作為優(yōu)先級(jí)1的操作添加到輸入隊(duì)列510中,并且將線程c506作為優(yōu)先級(jí)2的操作添加到輸入隊(duì)列512中。在中斷處理程序124確定刷新操作將被分配優(yōu)先級(jí)2的操作之后,可以將刷新操作802添加到與優(yōu)先級(jí)2的操作相對(duì)應(yīng)的輸入隊(duì)列512中。
根據(jù)內(nèi)核調(diào)度算法,內(nèi)核調(diào)度器122可以分派線程a、b和c以及刷新線程802。在一個(gè)實(shí)施例中,例如,內(nèi)核調(diào)度算法可以遵循靜態(tài)優(yōu)先級(jí)方案、優(yōu)先化的輪詢方案或者優(yōu)先化的乒乓方案,這些都是本領(lǐng)域中公知的。應(yīng)當(dāng)明白的是,當(dāng)刷新線程802執(zhí)行時(shí),對(duì)應(yīng)的刷新驅(qū)動(dòng)器514可以用于命令dram控制器108中的刷新模塊136執(zhí)行刷新事件。額外的校準(zhǔn)和訓(xùn)練驅(qū)動(dòng)器514可以用于命令校準(zhǔn)模塊138和訓(xùn)練模塊140分別執(zhí)行對(duì)應(yīng)的dram維護(hù)事件。應(yīng)當(dāng)明白的是,在進(jìn)行服務(wù)之前,每個(gè)驅(qū)動(dòng)器514可以檢查硬件,以確定是否由于在事件被執(zhí)行之前tos窗口408到期而已經(jīng)發(fā)生硬件干預(yù)。
如上所述,模塊134中的定時(shí)器可以跟蹤服務(wù)事件應(yīng)當(dāng)何時(shí)被完成的最后期限。例如,在重cpu負(fù)載之下,dram維護(hù)事件線程和相關(guān)聯(lián)的驅(qū)動(dòng)器514可以在最后期限之前不執(zhí)行。如果發(fā)生這種情況,那么dram控制器108知曉由定時(shí)器跟蹤的最后期限,并且硬件將立即干預(yù),停止cpu業(yè)務(wù),以及執(zhí)行所要求的dram服務(wù)。在干預(yù)之后,硬件可以如先前所描述地繼續(xù)進(jìn)行。
圖6是示出用于在沒(méi)有經(jīng)由內(nèi)核調(diào)度器122的dram控制器108調(diào)度的情況下周期性地刷新圖5的例子中的dram104的傳統(tǒng)方法的實(shí)施例的存儲(chǔ)器業(yè)務(wù)時(shí)間線。應(yīng)當(dāng)明白的是,該例子示出了傳統(tǒng)方法,其將刷新操作作為單獨(dú)的服務(wù)事件來(lái)周期性地調(diào)度,而與內(nèi)核調(diào)度、優(yōu)先級(jí)等無(wú)關(guān)。如圖6中所示,各個(gè)刷新602以恒定的周期發(fā)生,而不是由dram控制器108經(jīng)由內(nèi)核調(diào)度器122調(diào)度。因此,當(dāng)處理線程a502、線程b504和線程c506時(shí),每個(gè)刷新602要求對(duì)應(yīng)的線程被停止,以使得刷新操作能夠被執(zhí)行。圖7示出了其中上述系統(tǒng)和方法用于調(diào)度刷新602的群組的、圖6的例子。圖7示出了每個(gè)存儲(chǔ)器訪問(wèn)沖突可以通過(guò)將刷新602調(diào)度為在空閑時(shí)間期間執(zhí)行來(lái)避免,并且從而改善cpu進(jìn)程存儲(chǔ)器效率。
圖9是示出用于生成優(yōu)先級(jí)表202的優(yōu)先級(jí)校準(zhǔn)方法900的實(shí)施例的流程圖。本領(lǐng)域技術(shù)人員將明白的是,可以調(diào)整在方法900中使用的某些值,以適應(yīng)不同的平臺(tái)、存儲(chǔ)器類型、軟件構(gòu)建等。還應(yīng)當(dāng)明白的是,可以通過(guò)原始設(shè)備制造商(oem)來(lái)提供這些值。
如框902處所示出的,可以跨域各個(gè)溫度值來(lái)執(zhí)行優(yōu)先級(jí)校準(zhǔn)。在框904處,可以跨域cpu負(fù)載的各個(gè)值(例如,百分比值、范圍等)來(lái)執(zhí)行優(yōu)先級(jí)校準(zhǔn)。在跨越各值進(jìn)行掃描期間,可以減小校準(zhǔn)、訓(xùn)練和刷新硬件事件的線程優(yōu)先級(jí)。應(yīng)當(dāng)明白的是,這對(duì)應(yīng)于將整數(shù)值優(yōu)先級(jí)從0向上增加直到硬件干預(yù)(當(dāng)調(diào)度無(wú)法在tos窗口內(nèi)完成時(shí))的次數(shù)超過(guò)門限為止。在這點(diǎn)上,可以針對(duì)該溫度值(t)和cpu負(fù)載值(x),對(duì)優(yōu)先級(jí)記錄日志(框912),在該流程之后可以返回到框904。參照?qǐng)D9,框906指示可以將系統(tǒng)運(yùn)行固定的時(shí)間段,以對(duì)硬件干預(yù)進(jìn)行計(jì)數(shù)(框908)。在決策框910處,如果硬件干預(yù)的次數(shù)小于門限,那么可以減小優(yōu)先級(jí)。如果硬件干預(yù)的次數(shù)超過(guò)門限,那么執(zhí)行框912。
圖10示出了包括用于溫度值(列1004)和cpu百分比負(fù)載(行1002)的組合的優(yōu)先級(jí)值的示例性優(yōu)先級(jí)表202。例如,可以為用于85度的溫度值和80%的cpu負(fù)載的優(yōu)先級(jí)值分配最高優(yōu)先級(jí)水平(優(yōu)先級(jí)=0),這是因?yàn)橹豤pu負(fù)載和高dram溫度。
如上所述,dram控制器108可以經(jīng)由定時(shí)器和控制模塊134監(jiān)測(cè)tos窗口408,以確定所調(diào)度的dram維護(hù)事件是否已經(jīng)在對(duì)應(yīng)的最后期限之前完成。圖11是示出刷新602的群組在線程1101和1103的執(zhí)行之間的空閑時(shí)間中的tos窗口1106期間被成功調(diào)度和執(zhí)行的時(shí)間線1100。圖12示出了當(dāng)線程1101正在執(zhí)行時(shí)并且在刷新602的群組可以被執(zhí)行之前tos窗口1106到期時(shí)的時(shí)間線1200。在這種情況中,dram控制器108檢測(cè)到錯(cuò)過(guò)最后期限并且發(fā)起如上所述的硬件干預(yù)??梢杂捎?jì)數(shù)器對(duì)用于每種類型的維護(hù)事件的干預(yù)的運(yùn)行歷史記錄日志,其可以被在cpu106上運(yùn)行的操作系統(tǒng)120來(lái)讀取和/或重啟。操作系統(tǒng)120可以周期性地讀取并且清除該干預(yù)歷史,并且將先前讀數(shù)的日志存儲(chǔ)在非易失性存儲(chǔ)器118中。這允許操作系統(tǒng)120測(cè)量已經(jīng)在固定連續(xù)的時(shí)間段(例如,在圖9的框908中的持續(xù)時(shí)間方面相等)內(nèi)發(fā)生的干預(yù)的次數(shù)。在非易失性存儲(chǔ)器118中存儲(chǔ)的日志可以由操作系統(tǒng)120用于確保系統(tǒng)100仍然保持可接受的校準(zhǔn),并且干預(yù)的發(fā)生次數(shù)還沒(méi)有顯著地惡化。例如,如果日志顯示系統(tǒng)100已經(jīng)降級(jí),并且已經(jīng)遭遇超過(guò)圖9中的框910中所描述的校準(zhǔn)門限的值的干預(yù),那么系統(tǒng)可以通過(guò)增加針對(duì)每個(gè)表?xiàng)l目的優(yōu)先級(jí)(不包括已經(jīng)是最高的優(yōu)先級(jí)0),來(lái)有意地調(diào)整優(yōu)先級(jí)表202,從而減小干預(yù)率。相反,如果日志報(bào)告在延長(zhǎng)的時(shí)間段(例如,48小時(shí),其與圖9中的框908的示例性實(shí)施例中使用的時(shí)間段相比分外長(zhǎng))期間,系統(tǒng)100正在經(jīng)歷零或者接近零的干預(yù),那么這可以指示優(yōu)先級(jí)表202的條目已經(jīng)被給予高于所需的優(yōu)先級(jí),那么系統(tǒng)100可以包括減小用于每個(gè)條目的優(yōu)先級(jí)的能力,從而使得干預(yù)率上升。
如上所述,可以將系統(tǒng)100并入任何期望的計(jì)算系統(tǒng)中。圖13示出了包括soc102的示例性便攜式計(jì)算設(shè)備(pcd)1300。在該實(shí)施例中,soc103包括多核cpu1302。多核cpu1302可以包括第零核1310、第一核1312和第n核1314。例如,這些核中的一個(gè)核可以包括圖形處理單元(gpu),其中其它核中的一個(gè)或多個(gè)包括cpu。
顯示器控制器328和觸摸屏控制器330可以耦合到cpu1302。進(jìn)而,在soc102之外的觸摸屏顯示器1306可以耦合到顯示器控制器328和觸摸屏控制器330。
圖13還示出了視頻編碼器334(例如,逐行倒相(pal)編碼器、順序傳送彩色與存儲(chǔ)制式(secam)編碼器或者美國(guó)國(guó)家電視系統(tǒng)委員會(huì)(ntsc)編碼器)耦合到多核cpu1302。進(jìn)一步地,視頻放大器336耦合到視頻編碼器334和觸摸屏顯示器1306。此外,視頻端口338耦合到視頻放大器336。如圖13中所示,通用串行總線(usb)控制器340耦合到多核cpu1302。此外,usb端口342耦合到usb控制器340。dram104和用戶識(shí)別模塊(sim)卡346還可以耦合到多核cpu1302。
進(jìn)一步地,如圖13中所示,數(shù)字照相機(jī)348可以耦合到多核cpu1302。在示例性方面中,數(shù)字照相機(jī)348是電荷耦合器件(ccd)照相機(jī)或者互補(bǔ)金屬氧化物半導(dǎo)體(cmos)照相機(jī)。
如圖13中進(jìn)一步所示,立體聲音頻編碼器解碼器(codec)350可以耦合到多核cpu1302。此外,音頻放大器352可以耦合到立體聲音頻codec350。在示例性方面中,第一立體聲揚(yáng)聲器354和第二立體聲揚(yáng)聲器356耦合到音頻放大器352。圖13示出了麥克風(fēng)放大器358還可以耦合到立體聲音頻codec350。此外,麥克風(fēng)360可以耦合到麥克風(fēng)放大器358。在特定的方面中,頻率調(diào)制(fm)無(wú)線電調(diào)諧器362可以耦合到立體聲音頻codec350。此外,fm天線364耦合到fm無(wú)線電調(diào)諧器362。進(jìn)一步地,立體聲耳機(jī)366可以耦合到立體聲音頻codec350。
圖13還示出了射頻(rf)收發(fā)機(jī)368可以耦合到多核cpu1302。rf開(kāi)關(guān)370可以耦合到rf收發(fā)機(jī)368以及rf天線372。小鍵盤204可以耦合到多核cpu602。此外,具有麥克風(fēng)的單聲道耳機(jī)376可以耦合到多核cpu1302。進(jìn)一步地,振動(dòng)器設(shè)備378可以耦合到多核cpu1302。
圖13還示出了電源380可以耦合到soc102和soc202。在特定的方面中,電源380是直流(dc)電源,其向pcd1300的需要功率的各個(gè)組件提供功率。此外,在特定的方面中,電源是可充電dc電池或者dc電源,其是從交流電(ac)到連接到ac電源的dc變壓器得到的。
圖13還指示pcd1300還可以包括網(wǎng)卡388,其可以用于訪問(wèn)數(shù)據(jù)網(wǎng)絡(luò),例如,局域網(wǎng)、個(gè)域網(wǎng)或者任何其它網(wǎng)絡(luò)。網(wǎng)卡388可以是藍(lán)牙網(wǎng)卡、wifi網(wǎng)卡、個(gè)域網(wǎng)(pan)卡、個(gè)域網(wǎng)超低功率技術(shù)(peanut)網(wǎng)卡、電視/電纜/衛(wèi)星調(diào)諧器、或者本領(lǐng)域中公知的任何其它網(wǎng)卡。進(jìn)一步地,網(wǎng)卡388可以被并入到芯片中,即網(wǎng)卡388可以是芯片中的完整方案,而可以不是單獨(dú)的網(wǎng)卡388。
參照?qǐng)D13,應(yīng)當(dāng)明白的是,存儲(chǔ)器104、觸摸屏顯示器1306、視頻端口338、usb端口342、照相機(jī)348、第一立體聲揚(yáng)聲器354、第二立體聲揚(yáng)聲器356、麥克風(fēng)360、fm天線364、立體聲耳機(jī)366、rf開(kāi)關(guān)370、rf天線372、小鍵盤204、單聲道耳機(jī)376、振動(dòng)器378和電源380可以在片上系統(tǒng)102之外。
應(yīng)當(dāng)明白的是,上述用于調(diào)度易失性存儲(chǔ)器維護(hù)事件的系統(tǒng)和方法可以被并入到多處理器soc中,多處理器soc包括共享同一易失性存儲(chǔ)器的兩個(gè)或更多個(gè)單獨(dú)的存儲(chǔ)器客戶端。圖14示出了圖1的soc102包括以下三個(gè)存儲(chǔ)器客戶端的實(shí)施例:cpu106、圖形處理單元(gpu)1402和調(diào)制解調(diào)器處理單元(mpu)1404。每個(gè)處理器自主地并且相互獨(dú)立地運(yùn)行,但是能夠經(jīng)由soc總線116相互通信以及與rom112、sram110、dram控制器108和存儲(chǔ)控制器114進(jìn)行通信。如上所述并且如圖14中所示,cpu106、gpu1402和mpu1404可以注冊(cè)為由多客戶端決策模塊1400所包括,并且經(jīng)由irq總線117從dram控制器108接收中斷信號(hào)。
可以將任何數(shù)量的額外的處理器和/或處理器類型并入到soc102中。每種處理器類型可以包括單數(shù)和/或多個(gè)并行執(zhí)行單元,其在它們各自的處理器類型上運(yùn)行的內(nèi)核和調(diào)度功能單元(例如,內(nèi)核調(diào)度器122、中斷處理程序124—圖1)的命令下執(zhí)行線程。如圖14中進(jìn)一步所示,cpu106、gpu1402和mpu1404可以分別包括操作系統(tǒng)120a、120b和120c以及對(duì)應(yīng)的負(fù)載傳感器126a、126b和126c。結(jié)合圖1-13所描述的內(nèi)核調(diào)度系統(tǒng)和方法可以擴(kuò)展用于cpu106、gpu1402和mpu1404中的每一個(gè)。
如以下更詳細(xì)地描述的,dram控制器108還可以包括多客戶端決策模塊1400,其包括用于通過(guò)將soc處理器中的每個(gè)處理器的內(nèi)核調(diào)度考慮在內(nèi),來(lái)確定何時(shí)要調(diào)度dram維護(hù)事件的邏輯單元。內(nèi)核調(diào)度可以以上述方式來(lái)執(zhí)行。在圖14的多處理器環(huán)境中,隨著tos臨近,定時(shí)器和控制模塊134可以向cpu106、gpu1402和mpu1404中的每一個(gè)發(fā)出一個(gè)或多個(gè)中斷。作為響應(yīng),在每個(gè)操作系統(tǒng)120a、120b和120c內(nèi)的中斷服務(wù)例程(isr)可以向它們各自的調(diào)度器輸入隊(duì)列發(fā)出對(duì)應(yīng)的事件。在這點(diǎn)上,可以復(fù)制事件,并且將其排隊(duì)用于每種處理器類型??梢詫⒎腔顒?dòng)的或者處于睡眠模式的處理器從對(duì)中斷進(jìn)行響應(yīng)中暫時(shí)地排除,并且從多客戶端決策模塊1400的處理中排除,直到它們?cè)俅巫兊没顒?dòng)為止。任何處理器可以在任何時(shí)間將其自身從多客戶端決策中排除。每個(gè)處理器可以通過(guò)例如以下操作來(lái)這樣做:除了屏蔽來(lái)自該處理器的中斷處理程序124的維護(hù)事件中斷117以外,還執(zhí)行到多客戶端決策模塊1400的寫,該寫表示該處理器應(yīng)當(dāng)不再被包括在多客戶端決策中。
cpu106、gpu1402和mpu1404單獨(dú)地運(yùn)行,并且通過(guò)生成單獨(dú)的調(diào)度通知并且將該通知提供給dram控制器108來(lái)調(diào)度dram維護(hù)事件。在一個(gè)實(shí)施例中,每個(gè)處理器內(nèi)核調(diào)度器確定它們自己的“用于維護(hù)的最佳時(shí)間”,并且然后調(diào)度與dram控制器108的通知,dram控制器108具有最終權(quán)威來(lái)基于從每個(gè)處理器接收的調(diào)度通知來(lái)決定實(shí)際的調(diào)度。應(yīng)當(dāng)明白的是,dram控制器108可以以隨機(jī)的次序來(lái)接收調(diào)度通知,而不是遵循任何一致的模式。多客戶端決策模塊1400可以利用所存儲(chǔ)的特征化數(shù)據(jù)以及dram業(yè)務(wù)利用率數(shù)據(jù),來(lái)確定何時(shí)要執(zhí)行dram維護(hù)事件。存儲(chǔ)器業(yè)務(wù)利用率模塊1406(圖14)可以確定并且報(bào)告dram104上的業(yè)務(wù)活動(dòng)的當(dāng)前水平。以這種方式,用于每個(gè)soc處理器的內(nèi)核調(diào)度器可以單獨(dú)地確定執(zhí)行dram維護(hù)事件的最佳時(shí)間,但是多客戶端決策模塊1400進(jìn)行何時(shí)這樣做的最終決策。
圖15示出了多客戶端決策模塊1400的實(shí)施例的通用操作和數(shù)據(jù)輸入。cpu106、gpu1402和mpu1404通過(guò)提供通知1502,來(lái)單獨(dú)地向多客戶端決策模塊1400通知執(zhí)行dram維護(hù)事件的最佳時(shí)間。通知1502可以經(jīng)由到dram控制器108的寫操作來(lái)實(shí)現(xiàn)。
圖19示出了包括客戶端id1902、客戶端優(yōu)先級(jí)數(shù)據(jù)1904、客戶端負(fù)載數(shù)據(jù)1906和維護(hù)事件id1908的寫操作1900的示例性實(shí)現(xiàn)??蛻舳薸d1902可以用于標(biāo)識(shí)哪個(gè)處理器正在發(fā)送通知1502??蛻舳藘?yōu)先級(jí)數(shù)據(jù)1904可以包括被分配給該處理器的優(yōu)先級(jí)。在一個(gè)實(shí)施例中,根據(jù)預(yù)先定義的優(yōu)先級(jí)方案,可以為每種處理器類型(例如,cpu、gpu、mpu等)分配優(yōu)先級(jí)。處理器的優(yōu)先級(jí)可以與對(duì)dram訪問(wèn)時(shí)延的敏感度相反。換言之,可以為對(duì)時(shí)延相對(duì)更敏感的處理器分配較高的優(yōu)先級(jí)。在圖14的例子中,可以為mpu1404分配“最高優(yōu)先級(jí)”,為gpu1402分配“最低優(yōu)先級(jí)”,以及為cpu分配“中間優(yōu)先級(jí)”。如圖15中所示,可以不為優(yōu)先級(jí)數(shù)據(jù)提供通知。在替代的實(shí)施例中,可以存儲(chǔ)處理器優(yōu)先級(jí)數(shù)據(jù)1502,或者以其它方式將其提供給dram控制器108。再次參照?qǐng)D19,經(jīng)由寫操作1900提供的客戶端負(fù)載數(shù)據(jù)1906可以包括例如由處理器觀察到的平均負(fù)載(即,處理器利用率)??梢杂韶?fù)載傳感器126測(cè)量處理器利用率。維護(hù)事件id1908可以包括標(biāo)識(shí)正被調(diào)度的dram維護(hù)事件的類型的事件類型(例如,刷新、訓(xùn)練、校準(zhǔn))。在一個(gè)實(shí)施例中,維護(hù)事件id1908還可以用于將來(lái)自處理器的配置和狀態(tài)信息發(fā)送給多客戶端決策模塊1400。例如,可以由每個(gè)處理器周期性發(fā)送獨(dú)立的客戶端負(fù)載數(shù)據(jù)1906,或者可以從處理器發(fā)送排除請(qǐng)求,以從多客戶端決策中暫時(shí)地移除。
再次參照?qǐng)D15,多客戶端決策模塊1400可以被配置為根據(jù)一個(gè)或多個(gè)決策規(guī)則來(lái)確定何時(shí)要執(zhí)行dram維護(hù)事件。在一個(gè)實(shí)施例中,基于逐個(gè)通知來(lái)應(yīng)用決策規(guī)則。換言之,隨著接收到每個(gè)通知1502,將決策規(guī)則應(yīng)用于該通知。多客戶端決策模塊1400可以使用各種類型的數(shù)據(jù)來(lái)應(yīng)用決策規(guī)則。在圖15的實(shí)施例中,輸入數(shù)據(jù)包括決策表1506、處理器優(yōu)先級(jí)數(shù)據(jù)1504和存儲(chǔ)器業(yè)務(wù)利用率數(shù)據(jù)1508。以下參照?qǐng)D18描述了示例性決策表1506??梢杂赡K1406(圖14)來(lái)提供存儲(chǔ)器業(yè)務(wù)利用率數(shù)據(jù)1508。
圖16是示出用于調(diào)度圖14的多處理器soc中的dram維護(hù)事件的基于規(guī)則的方法1600的實(shí)施例的流程圖。在框1602處,dram控制器108可以確定用于執(zhí)行dram維護(hù)事件的tos窗口。在框1604處,dram控制器108向soc102上的多個(gè)處理器中的每個(gè)處理器提供中斷信號(hào)。在框1606處,每個(gè)處理器通過(guò)生成對(duì)應(yīng)的通知1502來(lái)單獨(dú)地調(diào)度dram維護(hù)事件???602、1604和1606可以以上述方式進(jìn)行操作。
隨著每個(gè)通知1502被dram控制器108接收到(框1608),多客戶端決策模塊1400可以應(yīng)用一個(gè)或多個(gè)決策規(guī)則,以確定何時(shí)要執(zhí)行dram維護(hù)事件。多客戶端決策模塊1400可以跟蹤哪個(gè)處理器(哪些處理器)已經(jīng)在當(dāng)前tos窗口內(nèi)發(fā)送了通知。在決策框1610處,多客戶端決策模塊1400可以確定是否存在具有與當(dāng)前通知的優(yōu)先級(jí)相比較高優(yōu)先級(jí)的任何未完成的通知1502。如果存在具有與當(dāng)前通知相比較高優(yōu)先級(jí)的未完成的通知,那么多客戶端決策模塊1400可以等待下一通知1502的到達(dá)(將控制返回到框1608)。例如,考慮從gpu1402(其具有“最低優(yōu)先級(jí)”)接收到當(dāng)前通知1502的情況。如果尚未從cpu106或者mpu1404(這二者具有較高優(yōu)先級(jí))接收到通知,那么dram控制器108可以等待接收下一通知。如果不存在具有與當(dāng)前通知相比較高優(yōu)先級(jí)的任何未完成的通知,那么控制傳遞給決策框1612。在決策框1612處,多客戶端決策模塊1400確定是“現(xiàn)在去往”并且服務(wù)dram維護(hù)事件,還是等待從一個(gè)或多個(gè)處理器接收另外的通知。如果最高優(yōu)先級(jí)的處理器是最后利用通知來(lái)進(jìn)行響應(yīng)的,那么這意味著沒(méi)有未完成的通知,并且基于規(guī)則的方法1600可以自動(dòng)地前進(jìn)到框1614。
在一個(gè)實(shí)施例中,決策框1612可以通過(guò)訪問(wèn)決策表1506(圖15)來(lái)實(shí)現(xiàn)。圖18示出了示例性決策表1506,其基于cpu負(fù)載(列1802)、gpu負(fù)載(列1804)和mpu負(fù)載(列1806)的各種組合來(lái)指定“現(xiàn)在去往”或者“等待”動(dòng)作(列1808)。在圖18的例子中,雖然處理器負(fù)載是根據(jù)“低”或者“高”值來(lái)指定的,但是可以實(shí)現(xiàn)數(shù)字范圍或者其它值。可以保留處理器負(fù)載值1802、1804和1806,直到經(jīng)由寫操作1900的下一值更新覆蓋當(dāng)前值為止。出于即使在沒(méi)有dram維護(hù)事件期間也向多客戶端決策模塊1400提供準(zhǔn)確的負(fù)載信息的目的,可以周期性地發(fā)送處理器負(fù)載值更新。
再次參照?qǐng)D16,如果決策表1506指示“寫”動(dòng)作,那控制返回到框1608。如果決策表1506指示“現(xiàn)在去往”動(dòng)作,那么dram控制器108可以開(kāi)始監(jiān)測(cè)dram業(yè)務(wù)利用率(框1614)。當(dāng)dram業(yè)務(wù)利用率下降到低于預(yù)定或者可編程的門限時(shí)(決策框1620),dram控制器108可以開(kāi)始為dram事件服務(wù)(框1622)。當(dāng)監(jiān)測(cè)dram業(yè)務(wù)利用率時(shí),dram控制器108可以跟蹤tos窗口是否已經(jīng)到期(決策框1616)。如果tos窗口在為dram維護(hù)事件服務(wù)之前到期,那么dram控制器可以以上述方式執(zhí)行硬件干預(yù)(框1618)。
圖17是示出基于規(guī)則的方法1600的操作的兩個(gè)例子的時(shí)間線。時(shí)間線1700示出由dram控制器108接收的通知1502的次序,并且時(shí)間線1702示出所產(chǎn)生的用于為dram維護(hù)事件服務(wù)的定時(shí)。參照時(shí)間線1700,從cpu106(“中間優(yōu)先級(jí)”)接收第一通知1704a。由于還沒(méi)有從較高優(yōu)先級(jí)的處理器(即gpu1402和mpu1404)接收到通知,所以dram控制器108等待下一通知。從gpu1402(“最低優(yōu)先級(jí)”)接收第二通知1706a。由于最高優(yōu)先級(jí)的處理器(mpu1404)仍然未完成,所以dram控制器在檢查業(yè)務(wù)利用率模塊1406并且在tos窗口1711a內(nèi)為dram維護(hù)事件服務(wù)之前,等待接收最后的通知(1708a)。時(shí)間線1702示出了當(dāng)接收到最后的通知1708a時(shí)生成信號(hào)1710a。
在稍后的時(shí)間處,可以調(diào)度第二dram維護(hù)事件。對(duì)于該dram維護(hù)事件,以不同的次序接收通知。從mpu(其具有“最高優(yōu)先級(jí)”)接收第一通知1708a。響應(yīng)于接收到通知1708a,dram控制器108可以確定不存在具有較高優(yōu)先級(jí)的任何未完成的通知。作為響應(yīng),多客戶端決策模塊1400可以訪問(wèn)決策表1506,以確定是開(kāi)始為dram服務(wù)(“現(xiàn)在去往”動(dòng)作)還是等待直到下一通知為止(“等待”動(dòng)作)。在該例子中,mpu1404具有“高”負(fù)載(圖18中的第二行),并且多客戶端決策模塊1400確定對(duì)應(yīng)的動(dòng)作是“等待”?;跊Q策表1506,dram控制器108等待從cpu106(“中間優(yōu)先級(jí)”)接收下一通知1704b。由于與gpu1402相關(guān)聯(lián)的未完成的通知不是較高優(yōu)先級(jí),所以多客戶端決策模塊1400可以訪問(wèn)決策表1506,以確定是開(kāi)始為dram服務(wù)(例如,“現(xiàn)在去往”動(dòng)作)還是等待直到下一通知為止(例如,“等待”動(dòng)作)。在該例子中,cpu106的寫操作1900指示“高”負(fù)載。此外,mpu104已經(jīng)完成將其負(fù)載從“高”更新為“低”值的單獨(dú)的寫操作1900,并且多客戶端決策模塊1400確定對(duì)應(yīng)的動(dòng)作(例如,圖18中的第三行)是“現(xiàn)在去往”??梢匀鐖D16中的框1620中所描述的針對(duì)存儲(chǔ)器業(yè)務(wù)低于門限來(lái)檢查業(yè)務(wù)利用率模塊1406,并且然后dram控制器開(kāi)始為dram維護(hù)事件服務(wù)。時(shí)間線1702示出了當(dāng)接收到通知1704b時(shí)并且在從最低優(yōu)先級(jí)的處理器(即gpu1402)接收到通知1706b之前,生成信號(hào)1710b。gpu1402通知1706b仍然可能發(fā)生,但是可能被多客戶端決策模塊1400忽略,因?yàn)閐ram維護(hù)已經(jīng)在當(dāng)前tos窗口1711b內(nèi)完成。例如,如圖17中所示,當(dāng)發(fā)出信號(hào)1710b時(shí),可以關(guān)閉tos窗口1711b。
應(yīng)當(dāng)明白的是,可以將本文描述的方法步驟中的一個(gè)或多個(gè)步驟作為計(jì)算機(jī)程序指令(例如,上述模塊)存儲(chǔ)在存儲(chǔ)器中??梢杂扇魏芜m當(dāng)?shù)奶幚砥髋c對(duì)應(yīng)的模塊結(jié)合或者合作來(lái)執(zhí)行這些指令,以執(zhí)行本文所描述的方法。
在本說(shuō)明書中描述的各過(guò)程或者各過(guò)程流中的某些步驟自然而然地在其它步驟之前,以便本發(fā)明如所描述地運(yùn)作。然而,本發(fā)明并不限于所描述的步驟的次序,如果這樣的次序或者順序不改變本發(fā)明的功能。也就是說(shuō),應(yīng)認(rèn)識(shí)到的是,在不脫離本發(fā)明的范圍和精神的情況下,一些步驟可以在其它步驟之前、之后或者與其并行地(與其基本上同時(shí))執(zhí)行。在一些實(shí)例中,可以在不脫離本發(fā)明的情況下,省略或者不執(zhí)行某些步驟。此外,諸如“之后”、“然后”、“接下來(lái)”等的詞語(yǔ)并非旨在限制這些步驟的次序。這些詞語(yǔ)僅用于引導(dǎo)讀者通讀示例性方法的描述。
此外,本領(lǐng)域技術(shù)人員在編程時(shí)能夠基于例如本說(shuō)明書中的流程圖以及相關(guān)聯(lián)的描述,編寫計(jì)算機(jī)代碼,或者識(shí)別合適的硬件和/或電路,從而在沒(méi)有困難的情況下實(shí)現(xiàn)所公開(kāi)的發(fā)明。
因此,特定的程序代碼指令集或者詳細(xì)的硬件設(shè)備的公開(kāi)并不被視為對(duì)于充分地理解如何實(shí)現(xiàn)和使用本發(fā)明而言是必需的。在以上描述中并且結(jié)合可以示出各個(gè)過(guò)程流的圖,詳細(xì)地解釋了所要求保護(hù)的計(jì)算機(jī)實(shí)現(xiàn)的過(guò)程的發(fā)明的功能。
在一個(gè)或多個(gè)示例性方面中,所描述的功能可以用硬件、軟件、固件、或其任意組合來(lái)實(shí)現(xiàn)。如果用軟件來(lái)實(shí)現(xiàn),所述功能可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上或作為計(jì)算機(jī)可讀介質(zhì)上的一個(gè)或多個(gè)指令或代碼進(jìn)行傳輸。計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)二者,通信介質(zhì)包括促進(jìn)將計(jì)算機(jī)程序從一個(gè)地方傳輸?shù)搅硪粋€(gè)地方的任何介質(zhì)。存儲(chǔ)介質(zhì)可以是可以由計(jì)算機(jī)訪問(wèn)的任何可用介質(zhì)。通過(guò)舉例而非限制的方式,這種計(jì)算機(jī)可讀介質(zhì)可以包括ram、rom、eeprom、nand閃存、nor閃存、m-ram、p-ram、r-ram、cd-rom或其它光盤存儲(chǔ)、磁盤存儲(chǔ)或其它磁存儲(chǔ)設(shè)備、或者可以用于攜帶或存儲(chǔ)具有指令或數(shù)據(jù)結(jié)構(gòu)形式的期望程序代碼并且可以被計(jì)算機(jī)訪問(wèn)的任何其它介質(zhì)。
另外,任何連接被適當(dāng)?shù)胤Q為計(jì)算機(jī)可讀介質(zhì)。例如,如果利用同軸電纜、光纖電纜、雙絞線、數(shù)字用戶線(“dsl”)或無(wú)線技術(shù)(例如,紅外線、無(wú)線電和微波)從網(wǎng)站、服務(wù)器或其它遠(yuǎn)程源發(fā)送軟件,則同軸電纜、光纖電纜、雙絞線、dsl或無(wú)線技術(shù)(例如,紅外線、無(wú)線電和微波)被包括在介質(zhì)的定義中。
如本文中所使用的,磁盤(disk)和光盤(disc)包括壓縮光盤(“cd”)、激光光盤、光盤、數(shù)字多功能光盤(“dvd”)、軟盤和藍(lán)光光盤,其中磁盤通常磁性地復(fù)制數(shù)據(jù),而光盤則用激光來(lái)光學(xué)地復(fù)制數(shù)據(jù)。上述各項(xiàng)的組合也應(yīng)當(dāng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。
對(duì)于本領(lǐng)域技術(shù)人員而言,本發(fā)明涉及的在不脫離其精神和范圍的情況下的替代實(shí)施例將變得顯而易見(jiàn)。因此,雖然已經(jīng)示出并且詳細(xì)地描述了所選擇的方面,但是將理解的是,可以在不脫離本發(fā)明的精神和范圍(如以下權(quán)利要求所定義的)的情況下在其中進(jìn)行各種替換和改變。