專利名稱:避免行激活與列讀取或列寫入命令之間沖突的方法及設備的制作方法
技術領域:
本發(fā)明一般地涉及避免行激活與列讀取或列寫入命令之間沖突的方法及設備。具體來說,本發(fā)明涉及這樣的方法及設備,其用于在“偶”命令周期啟動激活命令和在“奇”命令周期啟動列命令,以避免高速芯片到芯片的存儲器子系統(tǒng)中的沖突。
背景技術:
計算機系統(tǒng)開發(fā)者不懈地追求提升計算機系統(tǒng)的性能。開發(fā)者可著眼于優(yōu)化軟件部件和/或硬件部件以便實現(xiàn)此目的。一種硬件優(yōu)化途徑是改進從存儲器讀和寫至存儲器的處理器速率。
硬件開發(fā)者已經設計出動態(tài)隨機存取存儲器(DRAM)接口,其包括高速芯片到芯片的數據傳送技術。該接口技術可被實施于標準的CMOS DRAM存儲器核心和CMOS控制器芯片上,用于諸如高性能主存儲器、PC圖形、游戲控制臺、高級數字用戶系統(tǒng)、高性能聯(lián)網系統(tǒng)等應用,以及需要高帶寬存儲器子系統(tǒng)的其他高要求應用。
該高速接口包括命令總線,其被用來在讀操作和寫操作期間在存儲器控制器和存儲器之間發(fā)送命令。用于任一操作的典型命令序列將是“激活”命令、一個或多個“列”命令和“預充電”命令。也被稱為行命令的激活命令打開或讀出行或頁。列命令讀取自或寫入到行或列內的列。并且最后,預充電命令關閉行或頁。
然而,現(xiàn)有技術出現(xiàn)的挑戰(zhàn)是激活命令與列命令相沖突的可能性。開發(fā)者可利用嚴格的時分復用(TDM)輪來管理兩類命令之間的定時。然而,該技術方案可能降低整體性能,其與計算機開發(fā)者的目的背道而馳。
因此,需要的是一種方法及設備,用以管理激活命令和列命令,以便以對存儲器子系統(tǒng)性能最小的沖擊來避免沖突。
發(fā)明內容
已經發(fā)現(xiàn),利用包括以下邏輯的系統(tǒng)可解決前述問題,該邏輯允許激活命令在“奇”命令周期或者在最后未完成的列命令已被發(fā)出之后的任意時刻開始。存儲器控制器包括控制邏輯、激活允許邏輯和最后列計數器邏輯??刂七壿嬙趯懟蜃x操作的開始之時發(fā)送特定值到激活允許邏輯和最后列計數器邏輯,比如新命令加載值、讀計數值和寫計數值。依次地,控制邏輯從激活允許邏輯接收激活允許信號,其表示可發(fā)出新激活命令的時刻。這里所述的本發(fā)明還提供用以充分間隔開激活命令的機制。
存儲器控制器發(fā)出新激活命令,控制邏輯向激活允許邏輯發(fā)送新命令加載值,其可以是四位值“0001”。激活允許邏輯將該值加載到四位移位寄存器中,由此移位寄存器的最大有效位(MSB)對應于“激活允許信號”。當該值被加載到四位移位寄存器中時,激活允許信號變低,其防止控制邏輯發(fā)出隨后的激活命令,直至激活允許信號為高(真)。例如,利用四位值“0001”,MSN在四個命令周期之后變高(例如“1000”)。在一個實施例中,激活允許邏輯可相反地操作,使得最低有效位(LSB)對應于“激活允許信號”。
此外,取決于激活命令對應于讀操作或寫操作,控制邏輯將讀計數值或寫計數值提供到最后列計數器邏輯。最后列計數器邏輯將該值加載到四位寄存器中,負責跟蹤最后未完成的列命令完成的時刻點。
在每個命令周期,激活允許邏輯的移位寄存器“移位”所加載的值。當移位寄存器值達到“1000”時,激活允許信號變?yōu)檎?,其向控制邏輯通知它可啟動新激活命令。如果新激活命令已準備好發(fā)出,則控制邏輯將新命令值提供到激活允許邏輯,其于是重置激活允許信號。
然而,如果第二激活命令尚未準備好啟動,則在下一命令周期,MSB被移位至LSB,MSB之前的位被設置為“1”,得到值“0101”。隨后的命令周期產生移位寄存器值1010、0101、1010、0101等??梢钥吹?,激活允許信號(即MSB)在“偶”命令周期為真,其使得控制邏輯能夠在“偶”命令周期發(fā)出新激活命令,于是避免了可能在“奇”命令周期發(fā)出的列命令。
除了在每個命令周期進行動作的激活允許邏輯之外,最后列計數器邏輯也在每個命令周期進行動作。最后列計數器邏輯在每個命令周期遞減其寄存器的值,當寄存器的值達到零時,“列命令完成信號”被設置為真,其表示最后的未完成列命令完成。當激活允許邏輯檢測列命令完成信號為真時,激活允許邏輯將其鎖存器設置為“1111”,其保持激活允許信號為真,直至新激活命令被發(fā)出。
在一個實施例中,激活允許邏輯、最后列計數器邏輯或者二者可通過子程序實現(xiàn),比如通過軟件或固件。在另一實施例中,存儲器可包括極限數據率(XDRTM)DRAM。在該實施例中,存儲器控制器包括與命令和數據總線通信的XDRTMIO CELL(XIOTM)接口。
前文是概要,因此必要地包含了簡化、概括和細節(jié)省略;因而本領域技術人員將理解,該概要僅為說明性的,并不旨在任何方式的限制。如僅由權利要求所限定的本發(fā)明的其他方面、發(fā)明特征和優(yōu)點將在如下闡述的非限制性具體描述中變得更為明顯。
通過參照附圖,將更好地理解本發(fā)明,其各個目的、特征和優(yōu)點對于本領域技術人員變得明顯。
圖1是示出了存儲器控制器的圖例,其管理行激活和列讀取或列寫入命令;圖2是示出了確定最后未完成的列命令何時完成的邏輯的圖例;圖3是示出了確定新激活命令何時可被發(fā)出的邏輯的圖例;圖4是示出了激活允許邏輯鎖存值、信號值以及特定時刻的可能請求包的圖例;圖5是示出了在確定與激活命令相對應的最后列命令何時完成時采取的步驟的流程圖;圖6是示出了在確定新激活命令何時可被發(fā)出時采用的步驟的流程圖;以及圖7是能夠實施本發(fā)明的計算裝置的方框圖。
具體實施例方式
下文旨在提供本發(fā)明的實例的具體描述,不應當被認為是限制發(fā)明本身。任何數量的變形可落入本發(fā)明的范圍之內,該范圍在附于說明書的權利要求書中被限定。
圖1是示出了存儲器控制器的圖例,其管理行激活和列讀取或列寫入命令。存儲器控制器100在命令總線190上發(fā)出命令到存儲器195。在命令總線190上發(fā)送的特定命令包括“激活”命令、“列”命令和“預充電”命令。其他命令可在該總線上被發(fā)出,但是不干擾本發(fā)明中所述的命令流。激活命令表示讀或寫操作的開始。列命令可相對于激活命令而出現(xiàn)于“奇”命令周期,并且確定數據被發(fā)送到或接收自存儲器195的時刻。預充電命令表示特定讀或寫操作的結束。例如,讀操作可包括如下命令序列“激活”、“列”、“列”、“預充電”。數據總線185是雙向總線,且被存儲器控制器100用來發(fā)送/接收數據到/自存儲器195。
在一個實施例中,存儲器195是極限數據率(XDR)DRAM,命令總線190和數據總線185被配置為與XDR DRAM連通。在此實施例中,存儲器控制器100包括與命令總線190和數據總線185相連通的XIO宏。該XIO宏接口包括必要的I/O電路,用以發(fā)送命令和數據到XDR DRAM以及用以捕獲讀取數據。它也包括用于校準存儲器通道的控制電路。
存儲器控制器100包括控制邏輯110、激活允許邏輯120和最后列計數器邏輯130。控制邏輯110在讀或寫操作開始時發(fā)送特定值到激活允許邏輯120和最后列計數器邏輯130,比如新命令加載140、讀計數值150和寫計數值160。此外,控制邏輯110從激活允許邏輯120接收激活允許信號180,其表示新激活命令何時可被發(fā)出。
當存儲器控制器100發(fā)出激活命令時,控制邏輯110發(fā)送新命令加載140到激活允許邏輯120。新命令加載140是四位值“0001”,其被加載到包含于激活允許邏輯120中的四位移位寄存器中(對于與四位移位寄存器有關的進一步細節(jié),見圖3及相應文字)。此時,激活允許邏輯120將激活允許信號180重置為“0”,其防止控制邏輯110發(fā)出后續(xù)激活命令,直至激活允許信號180被設置為真。值“0001”防止激活命令彼此過于緊密地發(fā)出。
激活允許邏輯120在每個命令周期移位所加載的值,直至該值變?yōu)椤?000”。移位寄存器的最高有效位(MSB)對應于激活允許信號180,因此,當該值變?yōu)椤?000”時,激活允許信號180變?yōu)檎?。這向控制邏輯110通知它可啟動新激活命令。如果新激活命令準備好發(fā)出,則控制邏輯110將新命令加載140提供到激活允許邏輯120,由此重置激活允許信號180。
然而,如果第二激活命令未準備好在下一命令周期啟動,則MSB被移位到LSB,MSB之前的位被設置為“1”,得到值“0101”。后續(xù)命令周期得到移位寄存器值1010、0101、1010、0101等。如在圖4中更具體看到的,激活允許信號180在“偶”周期為真,其造成控制邏輯110能夠在“偶”周期發(fā)出新激活命令,于是避免在“奇”命令周期發(fā)出的列命令。
當新激活命令被發(fā)出時,激活命令的對應列命令在特定時刻結束。一旦列命令結束,控制邏輯110能夠在任何時刻發(fā)出新激活命令。最后列計數器邏輯130負責跟蹤每個未完成的列命令完成的時刻。一般地,這意味著最后激活命令的對應列命令完成的時刻點。當控制邏輯110發(fā)出激活命令時,控制邏輯110提供讀計數值150或寫計數值160到最后列計數器邏輯130,這取決于激活命令是對應于讀操作還是對應于寫操作。最后列計數器邏輯130將這些值的一個加載到讀或寫寄存器中,并且在每個命令周期遞減寄存器的值。
當寄存器值為零時,它表示激活命令的對應列命令的每一個已完成,列命令完成信號170被設定為真(對于與最后列計數器邏輯細節(jié)有關的進一步情況,見圖2及相應文字)。當激活允許邏輯120檢測列命令完成信號170為真時,激活允許邏輯120將其鎖存器設置為“1111”,其保持激活允許信號180為真,直至新激活命令被發(fā)出。
圖2是示出了確定最后未完成的列命令何時完成的邏輯的圖例。最后列計數器邏輯130與圖1中所示相同,包括列讀取命令計數邏輯和列寫入命令計數邏輯。寄存器200、遞減器210和門220構成了列讀取命令計數邏輯,最后列計數器130利用它檢測最后未完成的列讀取命令何時被完成。寄存器230、遞減器240和門250構成了列寫入命令計數邏輯,最后列計數器130利用它檢測最后未完成的列寫入命令何時被完成。
當初始化時,寄存器200和230被設置為“0”。寄存器200的四位輸出(全0)是對門220的輸入。由于門220是NOR門,門220的輸出是“1”,其也是對門260的輸入之一。此外,由于寄存器230被設置為“0”,寄存器230的四位輸出(全0)是對門250的輸入,于是門250的輸出是“1”。門250的輸出是對門260的第二輸入。由于門260是AND門,并且兩個輸入都是“1”,所以門260的輸出也是“1”,其是列命令完成信號170。該信號是對激活允許邏輯120的輸入,其表示激活命令可在任何命令周期發(fā)出。列命令完成信號170與圖1中所示相同。
當激活命令被發(fā)出時,如果激活命令對應于讀操作,則控制邏輯110將讀計數值150提供到最后列計數器邏輯130,如果激活命令對應于寫操作,則將寫計數值160提供到最后列計數器邏輯130。為了簡單,下文描述了這樣的處理,其中最后列計數器邏輯130利用寄存器200、遞減器210和門220跟蹤讀操作。正如本領域技術人員所能理解的,最后列計數器邏輯130以類似方式利用寄存器230、遞減器240和門250跟蹤寫操作??刂七壿?10、讀計數值150和寫計數值160與圖1中所示相同。
最后列計數器130接收讀計數值150和將該值載入到寄存器200中。例如,該值可以是“7”,其表示最后列命令在七個命令周期中完成。寄存器200將該值輸出到遞減器210和門220。由于門220的輸入現(xiàn)在并非全“0”,門220的輸出是“0”,于是列命令完成信號170被重置為“0”。
遞減器210在每個命令周期遞減,直至遞減器210達到“0”。遞減器210的輸出被回饋到寄存器200的輸入,從而寄存器200的輸出在每個命令周期減少,直至其輸出為“0”。當寄存器200的輸出全“0”時,門220的輸出是“1”,列命令完成信號170為真。如果新激活命令在遞減器210遞減至零之前被發(fā)出,則以新的讀計數值或寫計數值重新加載最后列計數器邏輯130。
圖3是示出了確定新激活命令何時可被發(fā)出的邏輯的圖例。激活允許邏輯120向控制邏輯110通知關于通過設置激活允許信號180為真來啟動新激活命令的可允許時刻的情況。激活允許邏輯120、激活允許信號180和控制邏輯110與圖1中所示相同。
當初始化時,由于列命令完成信號170為“真”,硬件加載“111”到鎖存器310至340中。鎖存器310至340的輸出分別是對門350至380的輸入。激活允許信號180是門380的輸出,由于鎖存器3340的輸出是“1”,門380的輸出是“1”,因而激活允許信號180為真,表示新激活命令可在任何命令周期被發(fā)出。
當控制邏輯110發(fā)出激活命令時,控制邏輯110將新命令加載140提供到激活允許邏輯120。新命令加載140是“0001”,由此“1”被加載到鎖存器0310中,“0”被加載到鎖存器1320、鎖存器2330和鎖存器3340中??刂七壿?10也發(fā)送讀計數值或寫計數值到最后列計數器130,于是將列命令完成信號170重置為“0”。于是,由于列命令完成信號170和鎖存器3340的輸出均為零,門380的輸出是“0”,因此激活允許信號180是“0”。新命令加載140和最后列計數器邏輯130與圖1中所示相同。
在下一命令周期,門350的輸出是鎖存器1320的輸入,門360的輸出是對于其輸出是對鎖存器2330的輸入的門390的輸入,門370的輸出是對鎖存器3340的輸入,門380的輸出是對鎖存器0310的輸入。因此,值“0001”被移位以得到“0010”。對于接下來兩個命令周期,鎖存器值移位至“0100”和“1000”。當該值達到“1000”時,鎖存器3349的輸出是“1”,其將門380的輸出改變?yōu)椤?”(即激活允許信號180),向控制邏輯110通知它被允許發(fā)出另一新激活命令。
在下一命令周期,由于門380的輸出被輸入到門390和鎖存器0310,鎖存器值變?yōu)椤?101”,由此將激活允許信號180重置為“0”。激活允許邏輯120被設計成一旦其鎖存器達到“1000”,則值在“0101”和“1010”之間切換,其切換激活允許信號180。結果,控制邏輯110被允許每隔一個命令周期(即“偶”命令周期)發(fā)出激活命令。
當最后列計數器邏輯130確定最后未完成的列命令完成時,列命令完成信號170被設置為真。這將門350至380的輸出強制為“1”,由此將值“1111”重新加載到鎖存器310至340中。鎖存器保持于“1111”,直至激活允許邏輯120從控制邏輯110接收新命令加載。
圖4是示出了激活允許邏輯鎖存值、信號值以及特定時刻的可能請求包的圖例。激活允許邏輯120和最后列計數器邏輯130(均在圖1中示出)標識了允許新激活命令的命令周期時刻。列命令完成信號170和激活允許信號180與圖1中所示相同。行425至440分別對應于在圖3中示出的鎖存器340至310的輸出值。行425的值對應于激活允許信號180的狀態(tài)。
在時刻t1,控制邏輯發(fā)出激活包402。此時,控制邏輯也將讀計數值或寫計數值提供到最后列計數器邏輯,于是列命令完成信號170被重置為低。此外,在時刻t1,控制邏輯將新命令加載“0001”加載到激活允許邏輯中,于是行425至440的值分別為“0001”(列450),其將激活允許信號180強制為低。
在時刻t2,控制邏輯可發(fā)出可能列命令404。此外,行425至440的值分別被移位至“0010”,如列452中所示。在時刻t3,控制邏輯可發(fā)出可能預充電命令406,行425至440的值被分別移位至“0100”,如列454中所示。在時刻t4,控制邏輯可發(fā)出可能列命令408,行425至440的值被分別移位至“1000”,如列456中所示。于是,激活允許信號180被設置為真,其向控制邏輯通知新激活命令(例如可能激活命令410)可在下一命令周期被發(fā)出。
在時刻t5,控制邏輯可發(fā)出可能激活命令410,因為激活允許信號180在時刻t4變?yōu)檎妗4送庠跁r刻t5,行425至440的值分別被重新配置為“0101”,如列458中所示(關于與鎖存器值重新配置有關的進一步細節(jié),見圖3及其對應文字)。由于行425的值在時刻t5為零,激活允許信號180被重置為零。
在時刻t6,控制邏輯可發(fā)出可能列命令412,行425至440的值被分別移位至“1010”,如列460中所示,于是激活允許信號180被設置為真。在時刻t7,控制邏輯可發(fā)出可能的激活命令414,因為激活允許信號180在時刻t6變?yōu)檎?。此外在時刻t7,行425至440的值被分別移位至“0101”,如列462中所示,其將激活允許信號180強制為低。
在時刻t8,控制邏輯可發(fā)出最后列命令416。最后列命令416是最后未完成的列命令。此外,行425至440的值被分別移位至“1010”,如列464中所示,于是激活允許信號180被設置為真。
最后列計數器邏輯跟蹤最后列命令416的定時。于是,一旦最后列命令完成,最后列計數器邏輯將列命令完成信號170變?yōu)椤罢妗薄_@表示該控制邏輯可在任何后續(xù)命令周期,比如分別在時刻t9和t10,發(fā)出新激活命令,比如可能激活命令418和420。此外,當列命令完成信號170為真時,行425至440的值被設置為“1111”,如列466和468中所示,因此激活允許信號180變?yōu)檎?,直至控制邏輯發(fā)出另一激活命令信號(關于與鎖存器值設置有關的進一步細節(jié),見圖3及其對應文字)。
圖5是示出了在確定與激活命令相對應的最后列命令如何完成時采取的步驟的流程圖。圖5是圖1中所示最后列計數器邏輯130的非硬件實施(例如軟件或固件)的流程圖。
處理始于500,此時處理等待列計數器請求(步驟510)。在該時間內,列命令完成標記被設置為真,因為沒有激活列命令。列命令完成標記向激活允許邏輯或子程序通知最后列命令完成,新激活命令可在任何時刻被發(fā)出。列計數器請求可能來自于存儲器控制器中所含的控制邏輯或控制軟件。在步驟520,處理在列寄存器530中加載與最后未完成的列命令完成時的時刻相對應的計數器值,列命令完成標記被設置成假。計數器值可對應于讀操作或寫操作。列寄存器530可被存儲于易失性存儲器區(qū)域比如計算機存儲器中。
進行關于是否出現(xiàn)下一命令周期的確定(判定540)。處理利用命令周期將其計數與可發(fā)出列命令的時刻同步。如果下一命令周期未出現(xiàn),則處理跳轉到“否”分支542,此處處理循環(huán)返回以等待下一命令周期。該循環(huán)繼續(xù),直至命令周期出現(xiàn),判定540在此處跳轉到“是”分支544。
關于新的列計數器請求是否被請求進行確定(判定545)。如果新的列計數器請求被請求,處理跳轉到“是”分支547,其循環(huán)返回以加載新計數器值。另一方面,如果新的列計數器請求未被請求,判定545跳轉到“否”分支549,此處處理遞減列寄存器530中的值(步驟550)。例如,如果處理原本在列寄存器530中加載值“7”,則處理將該值遞減至“6”。
關于列寄存器530中的值是否為零進行確定,其表示最后未完成的列命令完成(判定560)。如果該值不是零,則處理跳轉到“否”分支562,其循環(huán)返回以等待下一命令周期。該循環(huán)繼續(xù),直至列寄存器530的值為零,此處判定560跳轉到“是”分支568。
在步驟570,處理聲明列命令完成標記。該列命令完成標記向激活允許邏輯或子程序通知最后的未完成列命令完成,因此新激活命令可在任何時刻被發(fā)出。
關于處理是否應當繼續(xù)進行確定(判定580)。如果處理應當繼續(xù),判定580跳轉到“是”分支582,其循環(huán)返回以等待另一列計數器請求。該循環(huán)繼續(xù),直至處理應當中止,此處判定580跳轉到“否”分支588,于是處理結束于590。
圖6是示出了在確定新激活命令何時可被發(fā)出時采用的步驟的流程圖。處理在600處開始,此處處理將激活允許寄存器608重置為零(步驟605)。處理利用激活允許寄存器608來相對于新激活命令對命令周期進行計數,并且可被存儲于易失性區(qū)域比如計算機存儲器中。
在步驟610處,處理將激活允許標記設置為“1”。處理利用激活允許標記表示可發(fā)出新激活命令。例如,如果標記值是“1”,則處理可發(fā)出新激活命令。處理在步驟615等待新激活命令。當處理接收新激活命令時,處理在步驟620將激活允許標記設置為“0”,表示第二激活命令此時不可被發(fā)出。
處理在步驟625遞增激活允許寄存器608中的值,并且關于激活允許寄存器608的值是否大于或等于行激活至行激活至不同存儲體的定時參數(trr)進行確定(判定630)。trr參數防止激活命令彼此過近地發(fā)出。圖4中所示實例示出了trr值是“4”。如本領域技術人員所能理解的,4之外的值可被用于trr參數。
如果激活允許寄存器608的值不大于或等于trr,判定630跳轉到“否”分支632,保持激活允許標記設置為零(步驟635)。另一方面,如果激活允許寄存器608中的值大于或等于trr,則判定630跳轉到“是”分支634。關于激活允許寄存器608的值是否可被2整除進行確定(判定640)。當激活允許寄存器608的值可被2整除時,這表示命令周期相對于激活命令被發(fā)出的時刻是“偶”命令周期。如果激活允許寄存器608的值可被2整除,則判定640跳轉到“是”分支642,此處激活允許標記被設置為“1”,表示新激活命令可被發(fā)出(步驟650)。另一方面,如果激活允許寄存器608的值不可被2整除,則判定640跳轉到“否”分支644,此處激活允許標記被保持為“0”(步驟645)。
關于是否繼續(xù)處理進行確定(判定660)。如果處理應當終止,則判定660跳轉到“否”分支662,此處處理結束于665。另一方面,如果處理應當繼續(xù),則判定660跳轉到“是”分支664,此處進行下一命令周期是否出現(xiàn)的確定(判定670)。如果新命令周期未出現(xiàn),則判定670跳轉到“否”分支672,此處處理循環(huán)返回以等待下一命令周期。該循環(huán)繼續(xù),直至下一命令周期出現(xiàn),此處判定670跳轉到“是”分支674。
關于是否處理接收新激活命令以及激活允許標記為“1”進行確定(判定680)。如果處理接收新激活命令以及激活允許標記是“1”,則判定680跳轉到“是”分支682,此處處理重置激活允許寄存器608中的值(步驟685),并且將激活允許標記設置為“0”。另一方面,如果處理未接收新激活命令或者激活允許標記不是“1”,則處理跳轉到“否”分支684。
關于列命令完成信號是否為真進行確定(判定690)。列命令完成信號由最后列計數器邏輯130(圖1中所示)提供,或者可由對應子程序提供,其步驟在圖5中示出。當列命令完成信號為真時,這表示對應于激活命令的最后列命令完成,新激活命令可在任何時刻被發(fā)出。如果列命令完成信號為真,則判定690跳轉到“是”分支694,此處處理重置激活允許寄存器608的值,將激活允許標記設置為“1”,等待新激活命令。另一方面,如果列命令完成信號不為真,則判定690跳轉到“否”分支692,此處處理遞增激活允許寄存器608的值,關于是否允許新激活命令來分析該遞增的值。
圖7是能夠實施本發(fā)明的計算裝置的方框圖。圖7中所示體系結構包括共享公共存儲器和公共總線的異構處理器。處理器單元體系結構(PEA)700經過輸入輸出770向/從外部裝置發(fā)送和接收信息,利用處理器單元總線760將該信息分發(fā)到控制平面710和數據平面740??刂破矫?10管理PEA 700和將工作分發(fā)到數據平面740。
此外,處理器單元總線760將讀和寫請求提供到存儲器接口控制器(MIC)780。存儲器接口控制器780將請求傳送到存儲器接口790,其繼而與外部存儲器通信。在一個實施例中,該存儲器可以是極限數據率(XDRTM)DRAM,在此實施例中,存儲器接口790是與XDRTMDRAM通信的XIOTM接口。
控制平面710包括處理單元720,其運行操作系統(tǒng)(OS)725。例如,處理單元720可以是嵌入于PEA 700中的Power PC核心,OS 725可以是Linux操作系統(tǒng)。處理單元720管理用于PEA 700的公共存儲器映射表。存儲器映射表對應于PEA 700中所含的存儲器位置,比如L2存儲器730以及數據平面740中所含的非專用存儲器。
數據平面740包括協(xié)同處理聯(lián)合體(SPC)745、750和755。每個SPC被用來處理數據信息,每個SPC可具有不同指令集。例如,PEA700可被用于無線通信系統(tǒng)中,每個SPC可負責獨立的處理任務,比如調制、碼片速率處理任務、編碼和網絡接口。在另一實例中,每個SPC可具有相同指令集,可被并行地用來進行受益于并行處理的操作。每個SPC包括協(xié)同處理單元(SPU),其是處理核心,比如數字信號處理器、微控制器、微處理器或這些核心的組合。
SPC 745、750和755被連接至處理器單元總線760,其在控制平面710、數據平面740與輸入/輸出770之間傳遞信息??偩€760是片上一致性多處理器總線。輸入/輸出770包括柔性輸入-輸出邏輯,其基于連接至PEA 700的外圍裝置,動態(tài)地將接口引腳分派給輸入-輸出控制器。例如,PEA 700可連接至兩個外設裝置,比如外設A和外設B,由此每個外設被連接至PEA 700上特定數量的輸入和輸出引腳。在此實例中,柔性輸入-輸出邏輯被配置為將連接至外設A的PEA 700外部輸入和輸出引腳連通到第一輸入-輸出控制器,將連接至外設B的PEA 700外部輸入和輸出引腳連通到第二輸入-輸出控制器。
盡管圖7中所示計算機系統(tǒng)能夠執(zhí)行這里所述處理,但是該計算機系統(tǒng)僅為計算機系統(tǒng)的一個實例。本領域技術人員將理解許多其他計算機系統(tǒng)設計能夠進行這里所述的處理。
本發(fā)明的優(yōu)選實施之一是客戶機應用,即例如可常駐于計算機的隨機存取存儲器內的代碼模塊中的指令集(程序碼)。在被計算機需要之前,指令集可存儲在另一計算機存儲器中,例如在硬盤驅動器中,或者在可移動存儲器比如光盤(用于CD ROM中的最終使用)或軟盤中,或者經由Internet或其他計算機網絡下載。因此,本發(fā)明可被實施為用于在計算機中使用的計算機程序產品。此外,盡管所述各種方法通常實施于由軟件選擇性地激活或重新配置的通用計算機中,但是本領域的普通技術人員還將理解,這些方法可在硬件中、在固件中或者在構造為進行所需方法步驟的更專用設備中加以實施。
盡管本發(fā)明的特定實施例已被示出和描述,但是對于本領域技術人員明顯的是,基于其中的教導,可進行變化和改型,而不脫離本發(fā)明及其更寬方面。因此,所附權利要求將在其范圍之內涵蓋所有這樣的變化和改型,只要它們是在本發(fā)明的真實精神和范圍之內。而且,將理解本發(fā)明僅由所附權利要求限定。本領域技術人員將理解,如果旨在具體數量的所引入權利要求要素,則這樣的意圖將被明示于權利要求中,在沒有這樣的記載時則不存在這樣的限制。對于非限制性的實例,作為對理解的幫助,所附權利要求包含了引導詞匯“至少一個”和“一個或多個”的使用,以引入權利要求要素。然而,這些詞匯的使用不應當被理解為意指通過不定冠詞“一”或“一個”所引入權利要求要素將含有這樣引入的權利要求要素的任何特定權利要求限制為僅含一個這樣要素的發(fā)明,即使同一權利要求包括了引導詞匯“一個或多個”或“至少一個”以及不定冠詞比如“一”或“一個”;這對于定冠詞在權利要求中的使用同樣成立。
權利要求
1.一種系統(tǒng),包括存儲器控制器,具有用于執(zhí)行以下操作的沖突避免邏輯提供與第一激活命令相對應的新命令加載值;基于新命令加載值,識別命令周期以允許第二激活命令;以及響應于該識別,允許第二激活命令。
2.根據權利要求1的系統(tǒng),其中沖突避免邏輯還用于提供讀計數值和寫計數值,該系統(tǒng)還包括最后列計數器邏輯,用于接收讀計數值或寫計數值,以及基于讀計數值或寫計數值,發(fā)出最后列命令完成信號。
3.根據權利要求2的系統(tǒng),其中最后列計數器邏輯包括一個或多個存儲讀計數值或寫計數值的寄存器。
4.根據權利要求3的系統(tǒng),其中最后列計數器邏輯還包括連接至寄存器、在每個命令周期遞減讀計數值或寫計數值的遞減器。
5.根據權利要求2的系統(tǒng),其中最后列命令完成信號與對應于第一激活命令的最后列命令相一致。
6.根據權利要求2的系統(tǒng),其中沖突避免邏輯還用于響應于檢測發(fā)出的最后列命令完成信號而允許第二激活命令。
7.根據權利要求1的系統(tǒng),其中沖突避免邏輯包括存儲新命令加載值的移位寄存器。
8.根據權利要求7的系統(tǒng),其中移位寄存器在每個命令周期移位新命令加載值。
9.根據權利要求1的系統(tǒng),其中沖突避免邏輯還用于發(fā)出表示第二激活命令可允許的激活允許信號。
10.根據權利要求1的系統(tǒng),其中該識別與偶命令周期對應,該系統(tǒng)還用于在奇命令周期發(fā)出列命令。
11.根據權利要求1的系統(tǒng),其中第一激活命令和第二激活命令對應于極限數據率DRAM接口。
12.根據權利要求1的系統(tǒng),其中存儲器控制器被包含于處理單元體系結構中。
13.一種計算機實現(xiàn)的方法,包括接收與第一激活命令相對應的新命令加載值;基于新命令加載值確定何時允許第二激活命令;以及響應于該確定而設置激活允許標記。
14.根據權利要求13的方法,還包括接收與第一激活命令相對應的計數值;遞減計數值;基于該遞減確定計數值是否為零;以及響應于該確定而設置最后列命令完成標記。
15.根據權利要求14的方法,其中最后列命令完成標記與對應于第一激活命令的最后列命令相一致。
16.根據權利要求14的方法,其中激活允許標記是響應于檢測最后列命令完成標記被設置而設置的。
17.根據權利要求13的方法,還包括檢測激活允許標記被設置;以及響應于該檢測而發(fā)出第二激活命令。
18.根據權利要求13的方法,其中該確定還包括檢測新命令周期;響應于該檢測,遞增新命令加載值;以及基于該遞增,評估遞增的新命令加載值是否大于四。
19.根據權利要求18的方法,還包括將遞增的新命令加載值除以二;以及確定該相除是否產生余數。
20.根據權利要求13的方法,其中該確定與偶命令周期對應。
21.根據權利要求20的方法,還包括在奇命令周期上發(fā)出列命令,該列命令對應于第一激活命令。
22.一種程序產品,包括計算機可操作介質,具有計算機可讀代碼,該計算機代碼用于接收對應于第一激活命令的新命令加載值;基于新命令加載值,確定何時允許第二激活命令;以及響應于該確定而設置激活允許標記。
23.根據權利要求22的程序產品,其中計算機可讀代碼還用于接收對應于第一激活命令的計數值;遞增計數值;基于該遞增,確定計數值是否為零;以及響應于該確定,設置最后列命令完成標記。
24.根據權利要求23的程序產品,其中最后列命令完成標記與對應于第一激活命令的最后列命令相一致。
25.根據權利要求23的程序產品,其中激活允許標記是響應于檢測最后列命令完成標記被設置而設置的。
26.根據權利要求22的程序產品,其中計算機可讀代碼還用于檢測激活允許標記被設置;以及響應于該檢測,發(fā)出第二激活命令。
27.根據權利要求22的程序產品,其中計算機可讀代碼還用于檢測新命令周期;響應于該檢測,遞增新命令加載值;以及響應于該遞增,評估遞增的新命令加載值是否大于四。
28.根據權利要求27的程序產品,其中計算機可讀代碼還用于將遞增的新命令加載值除以二;以及確定該相除是否產生余數。
29.根據權利要求22的程序產品,其中該確定與奇命令周期對應。
30.根據權利要求29的程序產品,其中計算機可讀代碼還用于在奇命令周期發(fā)出列命令。
全文摘要
提供了避免行激活和列讀取或列寫入命令之間沖突的方法及設備。存儲器控制器包括控制邏輯、激活允許邏輯和最后列計數器邏輯??刂七壿嬙谧x或寫操作開始時將特定值發(fā)送到激活允許邏輯和最后列計數器邏輯,比如新命令加載值、讀計數值和寫計數值。依次地,控制邏輯從激活允許邏輯接收激活允許信號,其表示新激活命令可被發(fā)出的時刻。結果,存儲器控制允許激活命令在“奇”命令周期或者最后未完成的列命令已被發(fā)出之后的任何時刻開始。
文檔編號G06F3/06GK1786895SQ200510124678
公開日2006年6月14日 申請日期2005年11月14日 優(yōu)先權日2004年12月9日
發(fā)明者馬克·戴維·比羅斯, 里安·阿貝爾·??隙喾?申請人:國際商業(yè)機器公司