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