專利名稱:能夠找到開放命令周期以發(fā)出預(yù)充電包的存儲器控制器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及存儲器控制器。本發(fā)明尤其涉及極端數(shù)據(jù)速率(XDRextreme data rate)存儲器控制器。更具體地說,本發(fā)明涉及一種能夠找到開放命令周期以便向XDR存儲器件發(fā)出預(yù)充電包的XDR存儲器控制器。
背景技術(shù):
存儲器控制器一般用來對存儲器件(memory device)上來自各種請求設(shè)備的存取請求(即,讀取和寫入)進(jìn)行管理。在接收到來自請求設(shè)備的存取請求以及地址和控制信息后,存儲器控制器將地址信息解碼為存儲體、行和列地址。然后,存儲器控制器將地址和控制信號發(fā)送到適當(dāng)?shù)拇鎯ζ骷?,用于?zhí)行所請求的存儲器操作。對于讀取操作,存儲器控制器發(fā)送讀取命令,再將從存儲器件中檢索到的讀取數(shù)據(jù)返回給請求設(shè)備。對于寫入操作,存儲器控制器將寫入數(shù)據(jù)與寫入命令一起發(fā)送到存儲器件。
在執(zhí)行讀取或?qū)懭氩僮鲿r,存儲器控制器負(fù)責(zé)產(chǎn)生適當(dāng)?shù)目刂菩盘栃蛄?,用于訪問存儲器件中的所需地址。用于操作的控制信號序列通常包括激活(或打開)存儲器件內(nèi)存儲體的一行,然后在所激活的行中相對于所選列進(jìn)行寫入或讀取,最后預(yù)充電(或關(guān)閉)所激活的行。
近年來,開發(fā)了若干種動態(tài)隨機(jī)存取存儲器(DRAM),比如雙數(shù)據(jù)速率(DDR)DRAM、極端數(shù)據(jù)速率(XDR)DRAM等。有關(guān)XDR DRAM器件的細(xì)節(jié)可以參見Rambus所發(fā)表的XDR DRAM技術(shù)規(guī)范。XDR存儲器控制器的設(shè)計者不僅要符合XDR DRAM技術(shù)規(guī)范,而且要符合諸如面積、功率、時序、性能等其他設(shè)計要求?!伴_放命令周期”(open command cycle)表示包可以在請求總線上發(fā)送到XDRDRAM,因為當(dāng)前沒有其他包占用該總線。通常,每個包有一個命令,不過明顯的例外是兩個預(yù)充電命令可以包含在一個預(yù)充電包(precharge packet)中。本公開提供了一種能夠找到開放命令周期以便發(fā)出預(yù)充電包的XDR存儲器控制器。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一種優(yōu)選實施方式,響應(yīng)于并發(fā)地接收兩個請求包,確定是否其中一個請求包包括非預(yù)充電命令而另一個請求包包括預(yù)充電命令。如果其中一個請求包包括非預(yù)充電命令而另一個請求包包括預(yù)充電命令,那么具有非預(yù)充電命令的請求包繼續(xù)進(jìn)行。另外,預(yù)充電命令被延遲并且其動態(tài)偏移被相應(yīng)地調(diào)整。
從以下詳述中可以看到本發(fā)明的所有特性和優(yōu)點。
在結(jié)合附圖閱讀時,通過參照以下舉例實施方式的詳述,可以最好地理解本發(fā)明本身以及優(yōu)選使用方式及其目的和優(yōu)點,其中圖1是一種體現(xiàn)本發(fā)明的優(yōu)選實施方式的存儲器子系統(tǒng)的框圖;圖2是根據(jù)本發(fā)明的優(yōu)選實施方式的圖1中的存儲器子系統(tǒng)中的存儲器控制器的一部分的框圖;和圖3是根據(jù)本發(fā)明的優(yōu)選實施方式的圖2中的存儲器控制器找到開放命令周期以發(fā)出預(yù)充電包的方法的高級流程圖。
具體實施例方式
下面,參照附圖尤其參照圖1,描述體現(xiàn)本發(fā)明的優(yōu)選實施方式的極端數(shù)據(jù)速率(XDR)的存儲器子系統(tǒng)的框圖。如圖所示,XDR存儲器子系統(tǒng)10包括XDR存儲器控制器12和XDR輸入/輸出單元(cell)15以及兩個DRAM器件14a-14b。輸入/輸出單元15提供了存儲器控制器12與XDR通道之間的物理層接口,并可以被看作是用于本發(fā)明的串行化器/去串行化器。有關(guān)輸入/輸出單元15的細(xì)節(jié)可以參見Rambus所發(fā)表的XIO技術(shù)規(guī)范,其相關(guān)內(nèi)容在此作為參考。如本領(lǐng)域技術(shù)人員所知的,圖中示出了例如在數(shù)據(jù)處理系統(tǒng)中XDR存儲器子系統(tǒng)10通過總線與處理器11連接。DRAM器件14a-14b最好是XDR DRAM器件。有關(guān)XDR DRAM器件14a-14b的細(xì)節(jié)可以參見Rambus所發(fā)表的XDRDRAM技術(shù)規(guī)范,其相關(guān)內(nèi)容在此作為參考。
下面參照圖2,描述了根據(jù)本發(fā)明的優(yōu)選實施方式的存儲器控制器12的一部分的框圖。如圖所示,存儲器控制器12包括多個片21a-21f。由于片21a-21f實際上彼此完全相同,因此只進(jìn)一步詳述片21a。片21a包括存儲體序列器22和命令編碼器23。命令編碼器23將存儲體序列器22和命令網(wǎng)格器(mesher)24發(fā)出的DRAM命令指示轉(zhuǎn)換成對應(yīng)的請求包。來自片21a-21f的請求包隨后由命令網(wǎng)格器24進(jìn)行處理,以形成要發(fā)送到輸入/輸出單元(比如圖1中的輸入/輸出單元15)并進(jìn)一步發(fā)送到DRAM器件(比如圖1中的DRAM器件14a-14b)的請求包。
通常,DRAM器件允許自動預(yù)充電,這意味著DRAM器件在讀取或?qū)懭氩僮鞯淖詈罅忻钪?,自動對行預(yù)充電一段最小時間。由于XDR體系結(jié)構(gòu)不支持自動預(yù)充電,因此它需要一個明確的預(yù)充電命令以便在行被存取后“關(guān)閉”該行。因此,DRAM器件14a-14b能接收預(yù)充電和刷新預(yù)充電命令。此外,DRAM器件14a-14b使得預(yù)充電和刷新預(yù)充電命令可以有動態(tài)偏移。動態(tài)偏移允許預(yù)充電命令或刷新預(yù)充電命令在XDR DRAM器件內(nèi)以比存儲器控制器發(fā)出該命令的時間稍后的時間被執(zhí)行(這取決于動態(tài)偏移的值)。對于預(yù)充電命令,動態(tài)偏移可以是+3、+2、+1或+0。同樣,對于刷新預(yù)充電命令,動態(tài)偏移也可以是+3、+2、+1或+0。于是,預(yù)充電或刷新預(yù)充電命令在執(zhí)行之前在DRAM器件14a-14b內(nèi)部先延遲這么多(3、2、1或0)個命令周期。動態(tài)偏移特性使得存儲器控制器12可以具有更大的調(diào)度靈活性。對于其他的非預(yù)充電命令,存儲器控制器12不使用這種動態(tài)偏移能力(也就是說,諸如激活、讀取、寫入等命令的動態(tài)偏移值都是+0)。
存儲體序列器22可以在適當(dāng)?shù)臅r候發(fā)出預(yù)充電+3或刷新預(yù)充電+3命令指示。這些命令指示最好采取可被發(fā)送到命令編碼器23和命令網(wǎng)格器24的脈沖形式。存儲器控制器內(nèi)部的有效行斷言(row-asserted)時間(即tRAS)計數(shù)器和寄存器設(shè)置可以控制預(yù)充電+3脈沖和刷新預(yù)充電+3脈沖的時序(timing)。
對于本實施方式中的XDR DRAM器件,在四個連續(xù)的命令周期內(nèi)總有至少一個不用于Act(即,激活或刷新激活)命令或Col(即,讀取、寫入或掩蔽寫入)命令的命令周期。因此,行預(yù)充電(ROWP)包可以在此刻被發(fā)送。ROWP包可以包括一個或兩個預(yù)充電命令。例如,一個ROWP包中的兩個預(yù)充電命令可能在“寫入后的早期讀取”周轉(zhuǎn)時間(Early Read After Write turnaround)中是必要的(“寫入后的早期讀取”是一種可以用來改善性能的XDR DRAM特性)。其他請求包類型只包括一個命令。
由于在儲存器控制器12內(nèi)的存儲體序列器之間沒有交互作用,因此片21a中的存儲體序列器22并不知道片21b-21f中的存儲體序列器的操作。這樣,沖突檢測和避免的責(zé)任(即,必要時的預(yù)充電命令延遲)便落在命令網(wǎng)格器24上。如果兩個預(yù)充電命令(或一個預(yù)充電命令和一個刷新預(yù)充電命令)同時出現(xiàn),那么命令網(wǎng)格器24將它們合并成一個行預(yù)充電(ROWP)包。
命令網(wǎng)格器24包括預(yù)充電合并邏輯,用于按如下方式處理預(yù)充電和刷新預(yù)充電命令(1)如果兩個預(yù)充電命令同時到達(dá),那么將預(yù)充電命令之一移動到ROWP包的刷新預(yù)充電字段(即,POP字段到ROP字段);和(2)如果一個預(yù)充電命令和一個刷新預(yù)充電命令同時到達(dá),那么不必做專門處理。
最終,利用邏輯OR功能將兩個預(yù)充電命令合并成一個ROWP包。兩個預(yù)充電命令可以在啟用了早期讀取的寫入-讀取周轉(zhuǎn)時間中同時到達(dá)。由于兩個刷新預(yù)充電命令永遠(yuǎn)不會同時到達(dá)命令網(wǎng)格器24,因此可以不考慮這種情況。
下列從存儲體序列器22到命令網(wǎng)格器24的輸出用于沖突檢測(1)Do Non-預(yù)充電命令(1比特)用任一Do Act或Do Col指示來斷言。這一輸出用于預(yù)充電命令與Act或Col(即非預(yù)充電)命令之間的沖突檢測。它還用于避免合法Col包的比特被預(yù)充電合并邏輯所移動(因為它沒有預(yù)充電字段)。
(2)Do Any Col(1比特)用任一Do Col指示來斷言。在命令編碼器23內(nèi)建立與此等價的信號。在命令編碼器23內(nèi),這一等價信號用于中斷ROWP包的產(chǎn)生,這是因為存儲體序列器22可與“極端”配置中的Col命令脈沖同時發(fā)出預(yù)充電+3脈沖。當(dāng)然,預(yù)充電+3與Col命令的沖突將被檢測到,并且Col命令將獲勝,而預(yù)充電+3將變成預(yù)充電+2并再作嘗試(如下所述)。在命令網(wǎng)格器24內(nèi),這一斷言的信號用于防止從同一片輸入的請求包被阻塞(在這種情況下它將是Col命令)。
下面參照圖3,描述了根據(jù)本發(fā)明的優(yōu)選實施方式的圖2中的存儲器控制器找到開放命令周期以發(fā)送預(yù)充電包的方法的高級流程圖。從步驟30開始,來自總線的讀取和寫入命令以及來自定時器的刷新請求被(圖2中的)存儲體序列器轉(zhuǎn)換成適當(dāng)?shù)腄RAM命令指示。然后,來自存儲體序列器和命令網(wǎng)格器的DRAM命令指示被(圖2中的)命令編碼器轉(zhuǎn)換成請求包,如塊32中所示。判斷是否兩個命令同時到達(dá)命令網(wǎng)格器24,如塊33中所示。如果只有一個命令,那么將請求包發(fā)送到(圖1中的)輸入/輸出單元15,如塊34中所示,然后過程返回到塊32。
否則,如果兩個命令同時到達(dá)命令網(wǎng)格器24,那么判斷是否兩個命令之一是非預(yù)充電命令(意味著Act命令或Col命令)而另一個命令是預(yù)充電或刷新預(yù)充電命令,如塊35中所示。如果兩個命令之一是非預(yù)充電命令而另一個命令是預(yù)充電或刷新預(yù)充電命令,那么允許非預(yù)充電命令繼續(xù)進(jìn)行而預(yù)充電或刷新預(yù)充電命令被延遲一個命令周期,如塊36中所示。此外,遞減預(yù)充電或刷新預(yù)充電命令的動態(tài)偏移,如塊36中所示。例如,預(yù)充電+3命令變?yōu)轭A(yù)充電+2命令,預(yù)充電+2命令變?yōu)轭A(yù)充電+1命令,或者預(yù)充電+1命令變?yōu)轭A(yù)充電+0命令。同樣,刷新預(yù)充電+3命令變?yōu)樗⑿骂A(yù)充電+2命令,刷新預(yù)充電+2命令變?yōu)樗⑿骂A(yù)充電+1命令,或者刷新預(yù)充電+1命令變?yōu)樗⑿骂A(yù)充電+0命令。
否則,如果兩個命令都是預(yù)充電命令,那么又判斷是否一個命令是預(yù)充電命令而另一個命令是刷新預(yù)充電命令,如塊37中所示。如果一個命令是預(yù)充電命令而另一個命令是刷新預(yù)充電命令,那么兩個命令被合并成一個請求包,如塊31中所示,然后發(fā)送到(圖1中的)輸入/輸出單元15。
否則,判斷是否兩個命令都是預(yù)充電命令,如塊38中所示。如果兩個命令都是預(yù)充電命令,那么改變請求包之一(即,POP字段移動到ROP字段),如塊39中所示,然后命令被合并成一個請求包,如塊31中所示,然后發(fā)送到(圖1中的)輸入/輸出單元15。否則,不將任何請求包發(fā)送到輸入/輸出單元15,并且過程返回到塊32。
如上所述,本發(fā)明提供了一種能夠找到開放命令周期以便發(fā)出預(yù)充電包的存儲器控制器。本發(fā)明的存儲器控制器在必要時執(zhí)行沖突檢測和合并預(yù)充電命令。本發(fā)明的存儲器控制器通過以較復(fù)雜的命令網(wǎng)格器為代價來實現(xiàn)更簡單、更小的獨立存儲體序列器。本發(fā)明的存儲器控制器不包括進(jìn)行檢查來確保滿足相同存儲體組的預(yù)充電-預(yù)充電時間(即tPP)和不同存儲體組的預(yù)充電-預(yù)充電時間(即tPP-D)。這種智能位于存儲器控制器的前端,不過這超出了本發(fā)明的范圍。
盡管以上具體地參照一種優(yōu)選實施方式說明和描述了本發(fā)明,然而,本領(lǐng)域技術(shù)人員可以理解,在不背離本發(fā)明的精神和范圍的前提下,本發(fā)明其形式和細(xì)節(jié)可以作出各種變化。
權(quán)利要求
1.一種用于存儲器控制器找到開放命令周期以在當(dāng)前沒有其他包占用總線時發(fā)出預(yù)充電包的方法,所述方法包括響應(yīng)于并發(fā)接收兩個請求包,確定是否其中一個所述請求包包括非預(yù)充電命令而另一個所述請求包包括預(yù)充電命令;和在確定其中一個所述請求包包括非預(yù)充電命令而另一個所述請求包包括預(yù)充電命令時,立即將具有非預(yù)充電命令的所述請求包發(fā)送到輸入/輸出單元;將具有預(yù)充電命令的所述請求包延遲一個命令周期;和改變所述預(yù)充電命令的動態(tài)偏移。
2.權(quán)利要求1的方法,其中所述方法還包括確定是否兩個所述請求包都包括預(yù)充電命令;在確定兩個所述請求包都包括預(yù)充電命令時,改變其中一個所述請求包中的至少一個命令字段;和合并請求包并將所述合并的請求包發(fā)送到所述輸入/輸出單元。
3.權(quán)利要求1的方法,其中所述方法還包括確定是否其中一個所述請求包包括預(yù)充電命令而另一個所述請求包包括刷新預(yù)充電命令;和在確定其中一個所述請求包包括預(yù)充電命令而另一個所述請求包包括刷新預(yù)充電命令時,合并請求包并將所述合并的請求包發(fā)送到所述輸入/輸出單元。
4.權(quán)利要求1的方法,其中所述非預(yù)充電命令是Act或Col命令。
5.權(quán)利要求1的方法,其中所述預(yù)充電命令是預(yù)充電+3命令、預(yù)充電+2命令或預(yù)充電+1命令。
6.權(quán)利要求1的方法,其中所述存儲器控制器用于控制極端數(shù)據(jù)速率(XDR)存儲器。
7.一種用于存儲器控制器找到開放命令周期以在當(dāng)前沒有其他包占用總線時發(fā)出預(yù)充電包的方法,所述方法包括響應(yīng)于并發(fā)接收兩個請求包,確定是否其中一個所述請求包包括非預(yù)充電命令而另一個所述請求包包括刷新預(yù)充電命令;和在確定其中一個所述請求包包括非預(yù)充電命令而另一個所述請求包包括刷新預(yù)充電命令時,立即將具有非預(yù)充電命令的所述請求包發(fā)送到輸入/輸出單元;將具有刷新預(yù)充電命令的所述請求包延遲一個命令周期;和改變所述刷新預(yù)充電命令的動態(tài)偏移。
8.權(quán)利要求7的方法,其中所述非預(yù)充電命令是Act或Col命令。
9.權(quán)利要求7的方法,其中所述刷新預(yù)充電命令是刷新預(yù)充電+3命令、刷新預(yù)充電+2命令或刷新預(yù)充電+1命令。
10.權(quán)利要求7的方法,其中所述存儲器控制器用于控制極端數(shù)據(jù)速率(XDR)存儲器。
11.一種存儲器控制器,它能夠找到開放命令周期以便在當(dāng)前沒有其他包占用總線時發(fā)出預(yù)充電包,所述存儲器控制器包括用于響應(yīng)于并發(fā)接收兩個請求包,確定是否其中一個所述請求包包括非預(yù)充電命令而另一個所述請求包包括預(yù)充電命令的裝置;和在確定其中一個所述請求包包括非預(yù)充電命令而另一個所述請求包包括預(yù)充電命令時,用于立即將具有非預(yù)充電命令的所述請求包發(fā)送到輸入/輸出單元的裝置;用于將具有預(yù)充電命令的所述請求包延遲一個命令周期的裝置;和用于改變所述預(yù)充電命令的動態(tài)偏移的裝置。
12.權(quán)利要求11的存儲器控制器,其中所述存儲器控制器還包括用于確定是否兩個所述請求包都包括預(yù)充電命令的裝置;在確定兩個所述請求包都包括預(yù)充電命令時,用于改變其中一個所述請求包中的至少一個命令字段的裝置;和用于合并請求包并將所述合并的請求包發(fā)送到所述輸入/輸出單元的裝置。
13.權(quán)利要求11的存儲器控制器,其中所述存儲器控制器還包括用于確定是否其中一個所述請求包包括預(yù)充電命令而另一個所述請求包包括刷新預(yù)充電命令的裝置;和在確定其中一個所述請求包包括預(yù)充電命令而另一個所述請求包包括刷新預(yù)充電命令時,用于合并請求包并將所述合并的請求包發(fā)送到所述輸入/輸出單元的裝置。
14.權(quán)利要求11的存儲器控制器,其中所述非預(yù)充電命令是Act或Col命令。
15.權(quán)利要求11的存儲器控制器,其中所述預(yù)充電命令是預(yù)充電+3命令、預(yù)充電+2命令或預(yù)充電+1命令。
16.權(quán)利要求11的存儲器控制器,其中所述存儲器控制器用于控制極端數(shù)據(jù)速率(XDR)存儲器。
17.一種存儲器控制器,它能夠找到開放命令周期以便在當(dāng)前沒有其他包占用總線時發(fā)出預(yù)充電包,所述存儲器控制器包括用于響應(yīng)于并發(fā)接收兩個請求包,確定是否其中一個所述請求包包括非預(yù)充電命令而另一個所述請求包包括刷新預(yù)充電命令的命令網(wǎng)格器;和在確定其中一個所述請求包包括非預(yù)充電命令而另一個所述請求包包括刷新預(yù)充電命令時,用于立即將具有非預(yù)充電命令的所述請求包發(fā)送到輸入/輸出單元的命令網(wǎng)格器;用于將具有刷新預(yù)充電命令的所述請求包延遲一個命令周期的延時裝置;和用于改變所述刷新預(yù)充電命令的動態(tài)偏移的裝置。
18.權(quán)利要求17的存儲器控制器,其中所述非預(yù)充電命令是Act或Col命令。
19.權(quán)利要求17的存儲器控制器,其中所述刷新預(yù)充電命令是刷新預(yù)充電+3命令、刷新預(yù)充電+2命令或刷新預(yù)充電+1命令。
20.權(quán)利要求17的存儲器控制器,其中所述存儲器控制器用于控制極端數(shù)據(jù)速率(XDR)存儲器。
全文摘要
公開了一種存儲器控制器,它能夠找到開放命令周期以便向極端數(shù)據(jù)速率(XDR)動態(tài)隨機(jī)存取存儲器(DRAM)器件發(fā)出預(yù)充電包。響應(yīng)于并發(fā)接收兩個請求包,確定是否其中一個請求包包括非預(yù)充電命令而另一個請求包包括預(yù)充電命令。如果其中一個請求包包括非預(yù)充電命令而另一個請求包包括預(yù)充電命令,那么具有非預(yù)充電命令的請求包繼續(xù)進(jìn)行。另外,預(yù)充電命令被延遲,并相應(yīng)地調(diào)整其動態(tài)偏移。
文檔編號G11C11/4063GK1917084SQ20061009977
公開日2007年2月21日 申請日期2006年6月30日 優(yōu)先權(quán)日2005年8月16日
發(fā)明者賴安·A.·赫肯多夫, 馬克·D.·貝洛斯 申請人:國際商業(yè)機(jī)器公司