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