本公開內容涉及具有整合式處理器的dram(動態(tài)隨機存取存儲器)電路的領域以及與這樣的存儲器進行通信的方法。
背景技術:
現(xiàn)代計算機通常包括處理電路,該處理電路耦接至一個或更多個動態(tài)隨機存取存儲器(dram)電路并且通常被實現(xiàn)為片上系統(tǒng)(soc)。通常需要周期性刷新操作的這樣的存儲器是密集的并且相對快速地訪問,因此在大多數(shù)計算機中被用作主ram數(shù)據存儲裝置。然而,由于在soc與dram電路之間要傳送的數(shù)據量不斷增加,這樣的數(shù)據傳送往往減慢計算機的操作并且導致相對高的能量消耗。
已經提出的解決方案是除了soc中的處理器以外還提供其內部整合有一個或更多個處理器的dram電路。這樣的解決方案通過允許將某些處理任務委派給dram處理器來降低在dram電路與soc之間的數(shù)據傳送的水平,使得可以在避免dram電路與soc之間的數(shù)據傳送的同時執(zhí)行這些處理任務。
然而,提供具有整合式處理器的dram電路的挑戰(zhàn)在于與soc的對接耗時且實現(xiàn)成本高。
公布為wo2010/141221的國際專利申請描述了用于仲裁對與內部處理器相關聯(lián)的存儲器陣列的訪問的系統(tǒng)和方法。仲裁涉及通過由用于傳送請求信號和授權信號的電氣連接構成的控制接口而將包括存儲器控制器的外部處理器與內部處理器對接。
在例如公開wo2010/141221中描述的系統(tǒng)中的問題在于,必須修改結合有存儲器控制器的外部處理器,以允許仲裁控制信號被傳送至內部控制器以及從內部控制器傳出,這導致解決方案昂貴且復雜。
技術實現(xiàn)要素:
本公開內容的實施方式的目的在于至少部分地解決現(xiàn)有技術中的一個或更多個問題。
根據一個方面,提供一種存儲器電路,其包括:存儲器陣列,其包括一個或更多個存儲體;第一處理器;以及處理器控制接口,其用于從中央處理器接收去往第一處理器的數(shù)據處理命令,處理器控制接口適于當?shù)谝惶幚砥饕呀浲瓿稍L問存儲器陣列的一個或更多個存儲體時向中央處理器指示這些存儲體變得可以由中央處理器訪問。
根據一個實施方式,存儲器電路是動態(tài)隨機存取存儲器(dram)電路,該動態(tài)隨機存取存儲器(dram)電路還包括刷新控制電路,所述刷新控制電路適于:從中央處理器接收用于在存儲器陣列的至少一個存儲體中執(zhí)行數(shù)據刷新操作的刷新事務;確定第一處理器是否正在訪問所述至少一個存儲體,以及如果是,則延遲數(shù)據刷新操作的開始時間。
根據一個實施方式,刷新控制電路包括刷新掛起寄存器,并且延遲數(shù)據刷新操作的開始時間包括在刷新掛起寄存器中指示刷新操作掛起。
根據一個實施方式,處理器控制接口包括在存儲器電路的地址空間內可訪問的一組控制寄存器。
根據一個實施方式,存儲器電路的地址空間包括與該組控制寄存器永久關聯(lián)的一個或更多個地址。
根據一個實施方式,存儲器電路的地址空間包括與該組控制寄存器相關聯(lián)的一個或更多個地址,并且該一個或更多個地址適于在寄存器去激活控制信號被激活的情況下被轉變?yōu)榇鎯ζ麝嚵械牡刂贰?/p>
根據一個實施方式,存儲器電路適于從中央處理器接收用于使該組控制寄存器在存儲器電路的地址空間內可訪問的激活信號。
根據一個實施方式,激活信號經由地址總線提供,并且可以由處理器控制接口檢測。
根據一個實施方式,用于使該組控制寄存器可訪問的存儲器訪問序列是其中不是所有字都被寫入的脈沖訪問序列。
根據一個實施方式,使該組控制寄存器可訪問的存儲器訪問序列是在第一時間段內對所述存儲體之一中的存儲區(qū)內的存儲單元進行的多個存儲器訪問。
根據一個實施方式,存儲器電路適于基于以下中的一個或更多個來檢測存儲訪問序列:接收存儲器訪問序列的時間段;以及存儲器訪問序列的持續(xù)時間。
根據另一方面,提供了一種系統(tǒng),其包括:多個存儲器電路;以及中央處理器,所述中央處理器經由公共的n位數(shù)據總線耦接至存儲器電路中的每一個,每個存儲器電路包括耦接至n位數(shù)據總線的n位總線接口。
根據另一方面,提供了一種訪問存儲器電路的方法,該存儲器電路包括:具有一個或更多個存儲體的存儲器陣列、第一處理器以及處理器控制接口,該方法包括:由處理器控制接口從中央處理器接收去往第一處理器的數(shù)據處理命令;當?shù)谝惶幚砥饕呀浲瓿稍L問存儲器陣列中的存儲體中的一個或更多個時由處理器控制接口向中央處理器指示這些存儲體變得可以被中央處理器訪問。
根據一個實施方式,存儲器電路是動態(tài)隨機存取存儲器(dram)電路,該方法還包括:由刷新控制電路接收用于在存儲器陣列的存儲體中執(zhí)行數(shù)據刷新操作的刷新事務;由刷新控制電路確定第一處理器是否正在訪問存儲體,以及如果是,則延遲數(shù)據刷新操作的開始時間。
根據一個實施方式,處理器控制接口包括一組控制寄存器,該方法還包括:由處理器控制接口從中央處理器接收用于使該組控制寄存器在存儲器電路的地址空間內可訪問的激活信號。
附圖說明
通過閱讀以下參照附圖作為說明而非限制給出的實施方式的詳細描述,上述和其他特征和優(yōu)點將變得明顯,在附圖中:
圖1示意性地示出了根據示例實施方式的、包括具有整合式處理器的dram電路的計算機系統(tǒng);
圖2示意性地示出了根據一個示例的dram數(shù)據總線;
圖3示意性地示出了根據本公開內容的實施方式的dram數(shù)據總線;
圖4更詳細地示意性示出根據示例實施方式的圖1的計算機系統(tǒng)的一部分;
圖5更詳細地示意性示出了根據示例實施方式的圖4的存儲體;
圖6是示出根據示例實施方式的、將處理任務委派給dram處理器的方法中的操作的流程圖;
圖7示意性地示出了根據示例實施方式的刷新控制電路;
圖8是示出根據示例實施方式的刷新控制方法中的各步驟的流程圖;
圖9詳細地示意性示出根據另一示例實施方式的圖4的dram電路的一部分;以及
圖10是示出根據示例實施方式的使dram處理器控制接口在dram地址空間中可見的方法中的操作的流程圖。
具體實施方式
本公開內容描述了根據一個示例的包括整合式處理器的存儲器電路的實施方式,在該示例中存儲器電路是dram電路。盡管在圖中未示出,但是本領域的技術人員將會理解,dram電路是其中數(shù)據由存儲單元的陣列存儲的存儲器件,每個存儲單元包括用于存儲表示數(shù)據位的電壓電平的電容器和用于控制對存儲單元的訪問的開關。然而,本文描述的原理可以容易地應用于可能需要或可能不需要刷新操作的其他類型的存儲器電路。本文描述的實施方式的優(yōu)點在于,一個或更多個處理器在存儲器電路中的整合不會妨礙未提供與這樣的整合式處理器的通信的傳統(tǒng)存儲器接口被用于與存儲器電路進行通信。
圖1示意性地示出了根據示例實施方式的計算機系統(tǒng)100。計算機系統(tǒng)100包括在該示例中實現(xiàn)為片上系統(tǒng)(soc)的中央處理設備102,中央處理設備102包括一個或更多個處理器(未示出)和用于與若干dram電路進行通信的ddr主接口(ddrmasterinterface)103。
在圖1的示例中,存在標記為dram0至dram3的四個dram電路,但是在替選實施方式中,可以存在任何數(shù)量的dram電路。
dram電路dram0包括dram存儲器陣列(ma)104和一個或更多個內部處理器(p)106,內部處理器(p)將在下文中被稱作dram處理器。dram電路dram0例如還包括與每個dram處理器相關聯(lián)的dram處理器控制接口(i)107,以允許在soc102中的一個或更多個處理器與對應的處理器106進行通信并且控制對應的處理器106。ddr從接口108例如被設置在dram電路dram0中以用于與ddr主接口103進行通信。
類似地,dram電路dram1、dram2以及dram3分別包括dram存儲器陣列114、124、134以及一個或更多個內部處理器(p)116、126、136。dram電路dram1、dram2、dram3還例如分別包括dram處理器控制接口117、127、137,以允許soc102中的一個或更多個處理器分別控制處理器116、126、136。ddr從接口118、128、138例如被設置在電路dram1、dram2、dram3中以用于與ddr主接口103進行通信。
ddr主接口103與從接口108、118、128、138中的每一個之間的通信例如經由總線鏈路140,總線鏈路140包括地址總線、數(shù)據總線,并且在一些情況下包括一個或更多個另外的控制線(在圖1中未示出)。通過總線鏈路140與dram電路dram0至dram3的通信例如遵從ddr協(xié)議之一。
術語“ddr協(xié)議”在本文中被用于指定以下協(xié)議中的任何協(xié)議:ddr1、ddr2、ddr3、ddr4、rldram(減少延遲的隨機存取存儲器)、rldram2以及與這些協(xié)議相似的任何協(xié)議。
圖2示意性地示出用于將soc(未示出)連接至四個dram電路dram0至dram3的64位寬數(shù)據總線(databus)??梢钥闯觯瑪?shù)據總線被拆分,使得每個電路dram0至dram3接收64位寬數(shù)據總線的16位。例如,dram0電路接收位0至15并且包含字節(jié)0、1、8、9、16、17等,dram1電路接收位16至31并且包含字節(jié)2、3、10、11、18、19等,dram2電路接收位32至47并且包含字節(jié)4、5、12、13、20、21等,以及dram3電路接收位48至63并且包含字節(jié)6、7、14、15、22、23等。這樣的布置的優(yōu)點在于不需要單獨尋址各個dram電路。然而,當處理器被整合在每個dram電路中時,提供圖2的數(shù)據總線布置的缺點在于每個dram電路存儲非連續(xù)的數(shù)據,這導致在soc處理器的控制下執(zhí)行該數(shù)據的任何處理的高復雜度。
圖3示意性地示出了用于將soc(仍未示出)連接至四個dram電路dram0至dram3的64位寬數(shù)據總線(databus)。在該示例中,每個dram電路包括耦接至64位數(shù)據總線的64位總線接口,因此每個dram電路接收在數(shù)據總線上傳輸?shù)乃形?。因此,每個dram電路包含總存儲器的連續(xù)部分。更一般地,假設soc的數(shù)據總線是n位,其中n是等于或大于2的整數(shù),則dram電路中的每一個也具有n位數(shù)據總線。
還提供了一種機制,其例如使得soc能夠針對每個dram存儲器訪問選擇dram電路。
在一個實施方式中,soc或附加的地址解碼電路能夠在輸出線上提供片選信號cs。如圖3中的虛線cs所示,例如為每個dram電路提供信號cs,以便針對給定的存儲器訪問選擇這些dram電路之一。在存在四個dram電路的情況下,信號cs例如是2位信號,值“00”、“01”、“10”、“11”分別與dram電路dram0、dram1、dram2和dram3相關聯(lián)。如果存在不同數(shù)量的dram電路,則信號cs可以包括不同數(shù)量的位。
在另一實施方式中,soc或附加的地址解碼電路能夠向每個dram電路提供專用片選信號cs。在這種情況下,虛線cs是包括提供給dram0電路的專用信號cs[0]、提供給dram1電路的專用信號cs[1]、提供給dram2電路的專用信號cs[2]、以及提供給dram3電路的專用信號cs[3]的4位寬總線。
在替選實施方式中,dram電路中的每一個適于解碼總地址范圍中的不同地址范圍。為此,dram電路dram0至dram3的地址解碼器300至303分別具有例如各自適于解碼對應的地址范圍的電路。然而,這樣的解決方案的缺點在于,由于dram電路彼此不再相同,因此增加了制造過程的復雜性。
另一替選解決方案是提供一組分別與每個地址解碼器300至303相關聯(lián)的熔絲,所述熔絲分別由虛線矩形310至313表示。熔絲例如是由激光器通過施加在熔絲兩端的電壓或通過熔絲的電流進行編程的類型,并且它們在dram電路的制造之后被編程,使得每個dram電路被配置成解碼特定的地址范圍。
作為又一替選解決方案,每個dram電路接受的地址范圍可以通過在電路的重置操作之后或通電之后直接被提供給dram電路的輸入引腳的輸入信號來被電氣地配置。輸入引腳可以是為此特定目的提供的專用引腳,或者可以在配置階段期間使用dram電路的標準輸入/輸出引腳來實現(xiàn)限定的地址范圍。
應該注意,圖3的數(shù)據總線可能導致數(shù)據線的電容增加,其中每個數(shù)據線被耦接至不止一個dram電路。為了應對這種情況,可以在每個數(shù)據線上添加緩沖電路。這可能會將存儲器訪問的等待時間增加一個或更多個周期,但是可能會導致總等待時間的百分比增長相對不明顯。此外或可替選地,如果dram電路被安裝在符合dimm(雙列直插式存儲器模塊)標準之一的存儲器模塊中,則對于本領域的技術人員明顯的是,附加的線電容和/或緩沖電路的添加可以被這樣的dimm存儲器模塊所掩蔽。
圖4更詳細地示意示出了soc102和dram電路dram0。其它dram電路dram1至dram3例如包括相似的結構。
soc102例如包括處理器p1和p2,每個處理器能夠訪問dram電路dram0。處理器p1、p2例如每個由被存儲在對應的指令存儲器(在圖4中未示出)中的指令控制。盡管在圖4的示例中,soc中存在兩個處理器,但是在替選實施方式中,可以存在任何數(shù)量的處理器。
dram電路dram0例如包括:多個子存儲器406、408、410和412;包括dram電路的全局dram處理器控制接口(gi)的公共ddr從接口(ddrslaveinterface)414;以及耦接至子存儲器中的每一個的公共刷新控制器(refreshcontroller)416。盡管在圖4的示例中存在四個子存儲器,但是可以存在任何數(shù)量m個子存儲器。
詳細示出了子存儲器406,并且其他子存儲器例如包括相同的元件。子存儲器406例如包括形成dram電路dram0的存儲器陣列的子部分的存儲體(memorybank)418。子存儲器406還包括例如耦接至存儲體418的處理器(dramprocessor)420,處理器420包括:具有本地dram處理器控制接口(li)423的存儲體控制電路(memoryarraycontrol(存儲器陣列控制))422、刷新控制電路(refreshcontrol)424、指令存儲器425、處理管線(pipeline)426、以及處理器的本地存儲器(localmemory)428。
在圖4的實施方式中,dram0電路的dram處理器控制接口由全局接口415和每個子存儲器中的本地接口423來實現(xiàn)。然而,在替選實施方式中,dram處理器控制接口可以僅由全局接口415或僅由每個子存儲器中的本地接口423來實現(xiàn)。
如下面將更詳細地描述的,刷新控制電路424允許在由dram處理器之一進行數(shù)據處理操作的同時對由子存儲器接收的刷新事務進行控制。
存儲體控制電路422例如提供去往該存儲體的ddr存儲器請求與dram處理器請求之間的多路復用。
處理管線426例如包括在存儲在指令存儲器425中的指令的控制下操作的數(shù)據處理元件。假設dram處理器相對于soc處理器具有補充作用,則它們例如使用不同的指令集。例如,與soc處理器使用的指令集相比,dram處理器使用縮減的指令集。例如,在一些實施方式中,由dram處理器執(zhí)行的一個或更多個指令由soc處理器通過全局接口415和/或本地接口423直接寫入dram處理器指令存儲器425中。可替選地或另外,由dram處理器執(zhí)行的一個或更多個指令由soc處理器直接寫入存儲體418中,然后soc處理器可以指示dram處理器將來自存儲體418的指令加載到其指令存儲器425中。
本地存儲器428例如在對存儲體418中保存的數(shù)據執(zhí)行操作時臨時地或以其他方式存儲由處理管線426使用的數(shù)據。
盡管在圖4中未示出,但是在soc與dram電路之間可能還存在一個或更多個其他中間電路。例如,在按照所謂的完全寄存器型或完全緩沖的dimm標準安裝dram電路的情況下,可以提供高級存儲緩沖器(amb)以允許附加的復雜處理功能。
圖5更詳細地示意示出了根據示例實施方式的圖4的存儲體418。如圖所示,存儲體418例如包括dram存儲器行(memoryrow)502的塊和訪問寄存器(accessregister)504。
在dram電路dram0的存儲體418的地址的讀操作期間,由地址的一部分選擇存儲體418。然后,基于該地址識別存儲體18的要讀取的行,并且該行的數(shù)據被加載到訪問寄存器504中。然后,可以從訪問寄存器504讀出形成該行的一個或更多個字,并且將形成該行的一個或更多個字提供給soc102的處理器、或者在要執(zhí)行內部處理操作的情況下提供給處理器420的本地存儲器428。
在dram電路dram0的存儲體418的地址的寫操作期間,由地址的一部分選擇存儲體418。然后,基于該地址識別存儲體418的要寫的行,并且將該行加載到訪問寄存器504中。然后,形成該行的一個或更多個字可以被寫入由soc102的處理器訪問的訪問寄存器、或者在要執(zhí)行內部處理操作的情況下被寫入處理器420的本地存儲器428。當訪問寄存器504被重新用于訪問存儲體502的另一行時,或者如果要執(zhí)行刷新操作,則訪問寄存器504的內容被重新寫到存儲體418的相應行中。
應該注意,從存儲器行502到訪問寄存器504或者從訪問寄存器504到存儲體的存儲器行502的數(shù)據行的傳遞操作是在幾個時鐘周期內執(zhí)行的相對慢的操作,并且一旦它們開始就不應當被中斷。
此外,soc處理器p1、p2和/或內部dram處理器不可能以精細的交錯的方式訪問dram電路中的同一個存儲體。例如,以下場景說明如下:
-dram處理器開始利用存儲體的行之一加載存儲體的訪問寄存器,該操作需要幾個周期;以及
-在加載操作結束之前,soc處理器之一請求將存儲體的另一行加載到相同的訪問寄存器中,soc處理器期望在設定的周期數(shù)之內完成該加載操作。
這增加了潛在問題,因為ddr協(xié)議不允許來自soc處理器的請求被忽略或者被延遲,并且存儲體電路也不允許在存儲體中的加載操作被中途取消。此外,ddr協(xié)議沒有限定允許dram電路通知soc處理器訪問它的任何機制:
-不能立即處理存儲器訪問請求;
-請求的數(shù)據不能立即可用;或者
-請求的數(shù)據變得可用的時間。
因此,在以上強調的情況下,soc處理器可能被考慮為,在與加載操作相關聯(lián)的設定數(shù)目的周期之后訪問寄存器包含所請求的數(shù)據,而實際上并不是這樣。
至少部分通過限定由也與ddr協(xié)議兼容的soc處理器和dram處理器使用的訪問協(xié)議來解決該問題,如現(xiàn)在參照圖6詳細描述的。
圖6是示出根據本公開內容的實施方式的訪問dram電路的方法中的操作的流程圖。
在操作601中,soc的一個或更多個處理器加載將要被一個或更多個dram處理器處理的數(shù)據加載到dram電路的相應的存儲體中。例如,如果圖4的子存儲器406的處理器420要執(zhí)行處理操作,則數(shù)據例如被加載到存儲體418中。
在操作602中,soc處理器中的一個或更多個使用dram電路的dram處理器控制接口向一個或更多個dram處理器指示它們可以開始處理數(shù)據。
在操作603中,執(zhí)行由dram處理器進行的數(shù)據處理,并且在該處理期間,由soc的處理器執(zhí)行的軟件不訪問相應的存儲體。在soc處理器之一確實嘗試訪問存儲體同時dram處理器之一正在處理該存儲體中的數(shù)據的情況下,則例如提供無限響應,并且在一些實施方式中,可以在dram處理器控制接口的寄存器中設置錯誤標志,以指示發(fā)生該錯誤并且便利調試。
在一些實施方式中,每個dram處理器專用于其子存儲器中的給定存儲體。或者,在一些情況下,不止一個dram處理器可能能夠訪問相同的存儲體。在這種情況下,可以在dram處理器之間實現(xiàn)仲裁過程,以允許dram處理器正確地訪問存儲體。本領域的技術人員將認識到,這樣的仲裁過程不受用于與soc通信的ddr接口的限制,并且因此可以實現(xiàn)任何適當?shù)闹俨眠^程。
在后續(xù)的操作604中,確定由dram處理器進行的數(shù)據處理何時完成。完成后,接下來的操作是605,其中存儲體變得可以由soc處理器訪問。例如,dram處理器控制接口被用于向由soc處理器執(zhí)行的軟件通知dram處理器已經完成對存儲體中的數(shù)據的處理。例如,dram處理器控制接口包括可由soc處理器訪問的寄存器,所述寄存器包括指示dram處理器是否已經完成其任務或者至少已經完成任務中的其需要訪問存儲體的部分的狀態(tài)位。當dram處理器已經完成對存儲體中的數(shù)據的處理并且已經將其釋放使得其變得可以被soc處理器再次訪問時,dram處理器例如被配置成不再訪問存儲體,直到由soc處理器指示執(zhí)行另一處理操作。
在一些情況下,可能允許soc處理器中途停止由dram處理器進行的處理,以快速訪問存儲在相關存儲體中的數(shù)據。例如,這在由soc處理器執(zhí)行的高優(yōu)先級任務的情況下會是適當?shù)?。這通過例如經由dram處理器控制接口激活停止命令來實現(xiàn)。例如,在接收到停止命令以后,dram處理器需要幾個周期來完成一個或更多個當前訪問操作,并且當存儲體準備好被訪問時,經由dram處理器控制接口通知soc處理器。
如關于圖6描述的dram存儲器訪問方法的優(yōu)點在于其確保dram處理器決不會與soc處理器競爭。此外,soc處理器能夠按照ddr類型協(xié)議以絕對標準的方式訪問dram電路的存儲體。
當然,在dram處理器正在處理數(shù)據時,soc處理器將被拒絕訪問某些存儲體。然而,由于每個dram電路中可能存在幾個存儲體,一個dimm模塊中可能存在幾個dram電路,以及潛在地可能存在幾個dimm模塊,因此不可能阻斷soc處理器的操作。實際上,其他dram處理器的先前請求的處理操作的結果可能可用于收集。
圖7更詳細地示意示出了根據示例實施方式的dram子存儲器的刷新控制電路(refreshcontrol)424。
如上所述,dram電路需要周期性的刷新操作,以防止數(shù)據丟失。例如,某些dram技術可能通常需要在64ms的周期內刷新存儲體的所有線。例如,被整合在soc102的存儲控制器中的刷新控制系統(tǒng)生成周期性刷新事務,其在一些情況下可以作為對于給定dram電路將多個刷新事務分組的刷新數(shù)據包而被傳輸。
應該注意,在刷新周期中通常存在一定容限,以允許刷新操作被延遲例如至少幾十微秒。在一些情況下,在下一次刷新操作到來之前執(zhí)行刷新操作就足夠了。此外,刷新操作不會修改由存儲體保存的數(shù)據。
刷新控制電路424有利地允許刷新操作被延遲直到dram處理器結束訪問存儲體。
刷新控制電路424接收刷新事務(refresh),并且例如包括刷新掛起寄存器(refreshpending)702以及延遲刷新計數(shù)器(delayedrefreshcounter)704。
現(xiàn)在將參照圖8更詳細地描述圖7的刷新控制電路424的操作。
圖8是示出處理刷新事務的方法中的操作的流程圖。該方法例如由dram電路的子存儲器406至412中的每一個的刷新控制電路424本地執(zhí)行。最初,假設dram電路——例如圖4的電路dram0——已經接收到刷新事務,刷新控制器416已經將刷新事務傳播到子存儲器406、408、410、412中的每一個的刷新控制電路424,并且能夠立即執(zhí)行刷新操作的那些刷新控制電路424立即執(zhí)行刷新操作。
在操作801中,子存儲器之一的刷新控制電路424接收刷新事務,而其存儲體被由dram處理器420訪問的存儲體占據。
在操作802中,延遲刷新計數(shù)器704存儲刷新事務,并且例如在刷新掛起寄存器702中指示刷新事務掛起。例如一旦完成當前存儲體訪問就發(fā)起刷新事務。例如僅在完成刷新操作之后才重置刷新掛起寄存器702。刷新掛起寄存器702例如可以由dram處理器和soc處理器訪問,并且這些處理器例如被配置成在刷新掛起寄存器被重置之前不嘗試訪問存儲體。在一些實施方式中,dram處理器控制接口的狀態(tài)位例如被用于指示處理操作已經完成,并且還向soc指示不再有掛起刷新事務。
圖9更詳細地示意示出了根據示例實施方式的圖4的子存儲器406的一部分。
存儲體418例如耦接至地址總線(addrbus)并且經由雙向多路復用器902耦接至數(shù)據總線(databus)。特別地,雙向多路復用器例如具有一對輸入/輸出端口,一個被耦接至存儲體418,另一個被耦接至dram處理器控制接口(dramprocessorcontrolinterface)904,其例如對應于全局接口415和/或本地接口423。多路復用器902的另外的輸入/輸出端口被耦接至數(shù)據總線,并且可以基于由地址解碼器906提供的選擇信號而被耦接至存儲體418或接口904。
接口904例如包括一個或更多個控制寄存器908并且可選地包括一些共享存儲器910。共享存儲器910的目的在于例如允許將信息傳遞至dram處理器或者從dram處理器傳遞信息而不會將其停止。接口904例如允許以下功能中的至少一個或更多個:
-初始化給定dram電路中的dram處理器;
-向dram處理器傳送參數(shù)并且發(fā)起dram處理器的程序執(zhí)行;
-讀取關于dram處理器的結果和狀態(tài)信息;以及
-停止dram處理器。
也可以使用dram處理器控制接口來實現(xiàn)這里未列出的其他功能。
dram處理器控制接口例如還允許由給定dram電路的dram處理器中的一個或更多個的子集來執(zhí)行操作,或者由給定dram電路的所有dram處理器全局地執(zhí)行操作。
接口904例如構成dram電路的可尋址存儲空間的一部分。
在一些實施方式中,dram電路的可尋址存儲空間大于dram電路的存儲體中的可尋址存儲空間,以允許接口904的地址位置可以由soc的處理器永久地訪問。在這樣的情況下,如果地址處于與接口904相關聯(lián)的地址范圍內,則地址解碼器906例如控制多路復用器902將數(shù)據總線耦接至接口904。
或者,在一些實施方式中,接口904的地址位置最初對于soc是可見的,并且如果不需要接口904則由特定的去激活命令致使其不可訪問,這意味著例如不使用dram處理器。例如,在這樣的實施方式中,緊接著dram電路的重置或通電之后,某個地址范圍對應于dram處理器控制接口904的存儲空間。然而,如果去激活命令被激活,則該地址范圍可以轉變?yōu)闃藴蔰ram存儲空間。
在其他實施方式中,接口904的地址位置最初對于soc是不可見的,并且如果使用接口則可以通過特定的激活命令致使其可訪問,如現(xiàn)在將參照圖10描述的。
圖10是示出使dram處理器控制接口在dram電路的地址空間內可訪問的方法的操作的流程圖。
在操作1001中,執(zhí)行dram重置操作,或者給dram電路通電。最初,某個地址范圍對應于緊接dram電路的重置或通電之后dram電路的標準dram地址空間。
在操作1002中,例如由dram處理器控制接口904和/或地址解碼器906確定是否已經接收到接口激活命令。如果接收到這樣的命令,則接下來的操作是1003。
在操作1003中,通過將地址范圍變換到dram處理器控制接口904的存儲空間,使得dram處理器控制接口在dram電路的地址空間內可見。
激活或去激活命令例如對應于從soc經由dram電路的專用輸入引腳被傳送至地址解碼器906的信號,如圖9中由虛線914表示。
或者,去激活或激活命令例如對應于一個或更多個控制寄存器916中保存的值,一個或更多個控制寄存器916存在于用于諸如mrs(模式寄存器組)命令這樣的專門事務的某些dram電路中。例如,當?shù)刂房偩€上的地址處于由控制寄存器916限定的地址范圍內時,地址解碼器906控制多路復用器902將數(shù)據總線耦接至接口904。替代利用在某些dram電路中存在的現(xiàn)有寄存器,可以添加一個或更多個新寄存器,其中一個或更多個新寄存器例如被配置成可以使用mrs事務來訪問。
作為又一替選方案,可以由soc經由dram電路的標準存儲器總線、例如使用地址總線來傳送激活或去激活信號。為此,地址解碼器906和/或接口904適于檢測來自soc的特定命令序列,特定命令序列在本文將被稱為魔術序列。魔術序列例如是與虛擬存儲訪問相對應的命令序列,換句話說,魔術序列是遵從用于與dram電路進行通信的標準協(xié)議但是可以與真實存儲器訪問相區(qū)別的命令序列。其例如被選擇為在dram電路的正常工作下極不可能或不太可能發(fā)生的命令序列。替代單個魔術序列,在一些實施方式中,可以存在幾個魔術序列,并且接口906的地址范圍例如取決于應用哪個魔術序列。
在一些實施方式中,為了避免魔術序列的誤報檢測,dram電路例如包括時鐘周期計數(shù)器或者刷新計數(shù)器,時鐘周期計數(shù)器或者刷新計數(shù)器對已經接收的時鐘周期數(shù)量或刷新事務數(shù)量進行計數(shù)。然后,如果是以下情況,則例如排除將序列看作是魔術序列:
-其在第一時刻之前即在第一數(shù)目的時鐘周期或刷新操作之前到達,例如在完全完成啟動序列之前到達,這意味著其可能在啟動期間被意外地生成;
-其在第二時刻之后即在第二數(shù)目的時鐘周期或刷新操作之后到達,例如在完成啟動序列之后很長時間后到達,而管理dram處理器并且可能生成魔術序列的軟件驅動器一般在緊接著操作系統(tǒng)被加載之后并且應用被加載之前被激活;
-其花費多于一段時間發(fā)生,即超過一定數(shù)量的時鐘周期或刷新操作,而實際的魔術序列很可能在相對緊湊的時間段內發(fā)生。
魔術序列的一個示例是,一旦高速緩沖存儲器已經被激活,soc處理器進行的對存儲器的相同區(qū)域的多個連續(xù)訪問,而沒有對存儲器的其他區(qū)域的任何其他中間訪問。特別地,通常在啟動序列期間非常早地激活高速緩沖存儲器,這是因為soc處理器往往非常緩慢地操作,直到高速緩沖存儲器被激活。一旦激活高速緩沖存儲器,在相同的存儲區(qū)域內出現(xiàn)多個連續(xù)訪問是非常不可能的。
魔術序列的另一示例是限定某些非高速緩存存儲區(qū)域,然后對這些區(qū)域進行多次連續(xù)的訪問。特別地,現(xiàn)代處理器通常包括mmu(存儲器管理單元),其允許指示存儲區(qū)域不可高速緩存。通常,應用程序沒有理由要求存儲器的一部分不可高速緩存,因為這將導致性能的大幅降低,而沒有任何相反的優(yōu)勢。如果高速緩存接通,這意味著高速緩存被使用,則幾乎不會對相同的dram存儲區(qū)域進行多個連續(xù)的訪問。因此,魔術序列例如通過存在對給定dram存儲區(qū)域的多個存儲訪問來被檢測。
作為魔術序列的又一示例,可以使用在直寫(writethrough)時可高速緩存存儲器的事實,如現(xiàn)在將更詳細地描述的那樣。
當存儲區(qū)域可緩存時,根據操作的“讀分配”模式的讀操作包括:
a.驗證讀操作的目標區(qū)域是否已經在高速緩存中;
b.(i)如果目標區(qū)域已經在高速緩存中,則讀取高速緩存線,并且完成讀操作;
b.(ii)如果目標區(qū)域尚未在高速緩存中,則將目標區(qū)域加載到高速緩存中,然后讀取高速緩存線,并且完成讀操作。
可以使用兩個模式中的一個即“寫分配”模式或“直寫”模式來執(zhí)行寫操作。
根據寫分配模式的寫操作包括:
a.驗證寫操作的目標區(qū)域是否已經在高速緩存中;
b.(i)如果目標區(qū)域已經在高速緩存中,則寫緩存線,并且完成寫操作;
b.(ii)如果目標區(qū)域尚未在高速緩存中,則將目標區(qū)域加載到高速緩存線,然后寫入高速緩存線,并且完成寫操作;
c.當高速緩存線從高速緩存中被移除并且被用于更新主存儲器時,數(shù)據將從高速緩存被寫入主存儲器。
根據直寫模式的寫操作包括:
a.驗證寫操作的目標區(qū)域是否已經在高速緩存中;
b.如果目標區(qū)域已經在高速緩存中,則寫入相應的高速緩存線;
c.不管目標區(qū)域是否已經在高速緩存中,都將數(shù)據寫入主存儲器中。
直寫模式可以使用脈沖寫事務,其中事務的一些字未被寫入,因為脈沖長度比要寫入的數(shù)據長。另一方面,寫分配模式僅使用其中寫入事務的所有字的脈沖寫事務。
soc的處理器例如能夠經由mmu來指定對存儲器的每一頁的訪問是否:
1)可高速緩存;或者
2)使用讀分配和通常稱作“寫分配”模式的寫分配可高速緩存;或者
3)使用讀分配和通常稱作“直寫”模式的直寫可高速緩存。
在這些模式中,通常寫分配模式提供最佳性能。然而,直寫模式在某些硬件配置中使用,例如,如果存在幀緩沖器,則該幀緩沖器由不具有執(zhí)行總線監(jiān)聽的能力的顯示處理器讀取,因此無法從處理器的高速緩存中取回要讀取的數(shù)據。
在現(xiàn)代soc中,處理器能夠使用總線監(jiān)聽,以取回要在另一處理器的緩存中讀取的數(shù)據。因此,通常不需要使用直寫模式。
因此,魔術序列可以對應于使用直寫模式進行的訪問,該訪問可以通過執(zhí)行其中不寫入某些字的脈沖訪問這一事實來檢測。例如,寫激活信號對于至少一個數(shù)據值被去激活。
魔術序列的另一示例是使用在時間和空間中異常的位置的一組存儲器訪問。特別地,當使用高速緩存時,使用高速緩存而不是dram電路的存儲體來執(zhí)行對相同存儲地址的重復訪問。因此,例如在幾個字內,并且在相對短的時間段內,例如在幾百微秒內,存儲體的相對小的區(qū)域內的重復訪問可以被認為是解釋為魔術序列的不可能事件。
本文描述的實施方式的優(yōu)點在于具有內部處理器的dram電路可以根據ddr協(xié)議進行操作,同時通過在一定程度上減少在dram電路與soc之間的數(shù)據傳送操作來允許性能改進。此外,通過將處理器控制接口實現(xiàn)為在存儲器電路的地址空間內可訪問的一組控制寄存器,可以在中央處理器中沒有專用硬件的情況下實現(xiàn)接口。因此,這樣的解決方案可以被應用于中央處理器設備的現(xiàn)有設計,而不需要對硬件進行改變。特別地,接口例如由中央處理器執(zhí)行的軟件實現(xiàn),該軟件實現(xiàn)訪問排除協(xié)議,以防止中央處理器在內部處理器執(zhí)行操作時訪問存儲器陣列中的一個或更多個存儲體。中央處理器例如能夠知道內部處理器何時執(zhí)行操作,這是因為中央處理器負責將處理命令指向內部處理器,并且可以經由處理器控制接口訪問指示內部處理器何時完成操作的數(shù)據。因此,訪問排除協(xié)議阻止來自中央處理器和內部處理器的同時訪問嘗試,從而避免這些處理器之間的沖突仲裁的需要。
提供用于延遲存儲器電路內的刷新操作的機制的優(yōu)點在于,中央處理器可以以標準的方式產生刷新操作,例如通過中央處理器的存儲控制器。因此,存儲控制器不需要知道在由存儲器電路的內部處理器正在執(zhí)行的進程中有哪些操作。
已經描述了至少一個示意性實施方式,本領域的技術人員將容易地做出各種改變、修改和改進。
例如,對于本領域的技術人員明顯的是,盡管已經描述了針對每個dram處理器存在一個dram處理器控制接口的實施方式,但是在一些實施方式中,一個這樣的接口可以在幾個處理器之間共享。
此外,對于本領域的技術人員明顯的是,可以在替選實施方式中以任意組合方式組合關于各種實施方式所描述的各種特征。