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