專利名稱:存儲器控制器和動態(tài)隨機(jī)存取存儲器接口的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及存儲器接口,并且,更具體地,涉及存儲器控制器和動態(tài)隨機(jī)存取存儲器(DRAM)接口。
背景技術(shù):
目前的標(biāo)準(zhǔn)存儲器接口通常實(shí)現(xiàn)并行命令和地址總線。例如,用于DDR3 SDRAM的JEDEC規(guī)范定義了 16個地址引腳(AO-A15 ),3個庫(bank)地址引腳(BA0-BA2 ),和5個命令引腳(CS#,CKE#, RAS#, CAS#, WE#),共計(jì) 24 個引腳。用于 GDDR5 SGRAM 的 JEDEC 規(guī)范定義了 14個地址引腳(A0-A12 JPiRFU (保留))和4個庫地址引腳(BA0-BA3)(經(jīng)由雙倍數(shù)據(jù)速率尋址來共享9個物理引腳)、I個地址總線反轉(zhuǎn)引腳(ABI#)和5個命令引腳(CS#,CKE#, RAS#, CAS#, WE#),共計(jì) 15 個引腳。其他類型的接口實(shí)現(xiàn)高速串行接口。例如,DisplayPort'R和PeripheralComponent Interconnect Express ^ (PCIe)(外圍組件互連標(biāo)準(zhǔn))具有一個或多個用于命令和數(shù)據(jù)傳送的通路(用于通信的差分信號)。然而,串行接口通常需要廣泛的校準(zhǔn)以提供必要的數(shù)據(jù)傳輸帶寬。例如,PCIe標(biāo)準(zhǔn)定義了鏈路訓(xùn)練序列,其必須在數(shù)據(jù)可以通過該串行鏈路傳輸之前執(zhí)行。鏈路訓(xùn)練序列發(fā)現(xiàn)鏈路中的通路數(shù)量、該鏈路的最大速度和該鏈路的物理性質(zhì),諸如每個通路的時序偏差。串行鏈路需要在該鏈路可以高速操作之前確定這些參數(shù),同時保持?jǐn)?shù)據(jù)傳輸?shù)臏?zhǔn)確性。這些接口可能還需要諸如Dis丨)layPort_'_;__中的輔助信道的低速邊帶通信信道以啟動校準(zhǔn)。常規(guī)存儲器接口的一個缺點(diǎn)是并行命令和地址總線需要大量的互連。存儲器控制器和存儲器設(shè)備之間的路由可能變得復(fù)雜并在印刷電路板的布局中需要很多物理空間。雖然轉(zhuǎn)換成純粹的串行命令和地址總線可以減少所需的互連數(shù)量,但是廣泛校準(zhǔn)的要求導(dǎo)致了在任何數(shù)據(jù)可通過鏈路被傳輸之前的上電延遲。此外,可能需要邊帶通信信道以校準(zhǔn)串行鏈路,該串行鏈路增加了在正常操作期間用不到的額外互連。如上所述,本領(lǐng)域需要一種用于將命令和地址發(fā)送到存儲器設(shè)備的改進(jìn)技術(shù)。
發(fā)明內(nèi)容
本發(fā)明的一個實(shí)施例提出了一種經(jīng)配置以與存儲器設(shè)備通信的存儲器接口。所述存儲器接口包括用于將參考時鐘信號傳輸?shù)剿龃鎯ζ髟O(shè)備的差分時鐘信道、用于將一個或多個命令傳輸?shù)剿龃鎯ζ髟O(shè)備的未校準(zhǔn)并行命令總線和用于將一個或多個地址傳輸?shù)剿龃鎯ζ髟O(shè)備的串行地址總線,其中每個地址均識別所述存儲器設(shè)備內(nèi)的位置。本發(fā)明的另一實(shí)施例提出了一種包括存儲器設(shè)備和經(jīng)配置以與所述存儲器設(shè)備通信的存儲器接口的系統(tǒng)。所述存儲器接口包括用于將參考時鐘信號傳輸?shù)剿龃鎯ζ髟O(shè)備的差分時鐘信道、用于將一個或多個命令傳輸?shù)剿龃鎯ζ髟O(shè)備的未校準(zhǔn)并行命令總線和用于將一個或多個地址傳輸?shù)剿龃鎯ζ髟O(shè)備的串行地址總線,其中每個地址均識別所述存儲器設(shè)備內(nèi)的位置。本發(fā)明的又一實(shí)施例提出了一種用于與存儲器設(shè)備通信的方法。所述方法包括以下步驟將參考時鐘信號經(jīng)由差分時鐘信道傳輸?shù)剿龃鎯ζ髟O(shè)備,將一個或多個命令經(jīng)由未校準(zhǔn)并行命令總線傳輸?shù)剿龃鎯ζ髟O(shè)備,以及將一個或多個地址經(jīng)由串行地址總線傳輸?shù)剿龃鎯ζ髟O(shè)備,其中每個地址均識別所述存儲器設(shè)備內(nèi)的位置。所公開的技術(shù)的一個優(yōu)勢是相對于行業(yè)標(biāo)準(zhǔn)并行接口,減少了將命令和地址傳輸?shù)酱鎯ζ髟O(shè)備所需的互連的數(shù)量。另外,通過從地址總線分離命令總線,小的未校準(zhǔn)并行命令總線可以被用于啟動串行地址總線的校準(zhǔn),從而避免了對在正常操作期間用不到的獨(dú)立低速邊帶通信信道的需要。
因此,可以詳細(xì)地理解上述本發(fā)明的特征,并且可以參考實(shí)施例得到對如上面所概括的本發(fā)明更具體的描述,其中一些實(shí)施例在附圖中示出。然而,應(yīng)當(dāng)注意的是,附圖僅用于示意性地表示本發(fā)明的典型實(shí)施例,因此不應(yīng)被認(rèn)為是對本發(fā)明范圍的限制,本發(fā)明可以具有其他等效的實(shí)施方式。圖I為示出了經(jīng)配置以實(shí)現(xiàn)本發(fā)明一個或多個方面的計(jì)算機(jī)系統(tǒng)的框圖;圖2示出了根據(jù)本發(fā)明一個實(shí)施例的并行處理子系統(tǒng);圖3示出了根據(jù)本發(fā)明一個實(shí)施例的存儲器接口的一部分;圖4示出了根據(jù)本發(fā)明一個實(shí)施例的包括多個DRAM模塊的并行處理存儲器;圖5示出了根據(jù)本發(fā)明另一實(shí)施例的包括多個DRAM模塊的并行處理存儲器;以及圖6展示了根據(jù)本發(fā)明一個實(shí)施例的用于初始化存儲器接口的方法的流程圖。
具體實(shí)施例方式在下面的描述中,將闡述大量的具體細(xì)節(jié)以提供對本發(fā)明更深入的理解。然而,本領(lǐng)域的技術(shù)人員應(yīng)該清楚,本發(fā)明可以在沒有一個或多個這些具體細(xì)節(jié)的情況下得以實(shí)施。在其他例子中,沒有描述公知的特征以避免對本發(fā)明造成混淆。系統(tǒng)概述圖I為示出了經(jīng)配置以實(shí)現(xiàn)本發(fā)明的一個或多個方面的計(jì)算機(jī)系統(tǒng)100的框圖。計(jì)算機(jī)系統(tǒng)100包括中央處理單元(CPU) 102和經(jīng)由存儲器橋105通信的系統(tǒng)存儲器104。存儲器橋105可以是例如北橋芯片,經(jīng)由總線或其他通信路徑(例如超傳輸(HyperTransport)鏈路)連接到I/O (輸入/輸出)橋107。I/O橋107,其可以是例如南橋芯片,從一個或多個用戶輸入設(shè)備108 (例如鍵盤、鼠標(biāo))接收用戶輸入并且經(jīng)由存儲器橋105將所述輸入轉(zhuǎn)發(fā)到CPU 102。并行處理子系統(tǒng)112經(jīng)由總線或其他通信路徑(例如PCIExpress、加速圖形端口或超傳輸鏈路)耦合到存儲器橋105 ;在一個實(shí)施例中,并行處理子系統(tǒng)112是將像素傳遞到顯示設(shè)備110(例如基于傳統(tǒng)CRT或IXD的監(jiān)視器)的圖形子系統(tǒng)。系統(tǒng)盤114也連接到I/O橋107。開關(guān)116提供I/O橋107與其他諸如網(wǎng)絡(luò)適配器118和各種外插卡120和121的組件之間的連接。其他組件(未明確示出),包括USB或其他端口連接、CD驅(qū)動器、DVD驅(qū)動器、膠片錄制設(shè)備及類似組件,也可以連接到I/O橋107。使圖I中所示各種組件互連的通信路徑可以采用任何適合的協(xié)議實(shí)現(xiàn),諸如PCI (外圍組件互連)、PCI-Express.AGP (加速圖形端口)、超傳輸或者任何其他總線或點(diǎn)到點(diǎn)通信協(xié)議,并且不同設(shè)備間的連接可采用本領(lǐng)域已知的不同協(xié)議。在一個實(shí)施例中,并行處理子系統(tǒng)112包含被優(yōu)化用于圖形和視頻處理的電路,包括例如視頻輸出電路,并且構(gòu)成圖形處理單元(GPU)。在另一個實(shí)施例中,并行處理子系統(tǒng)112包含被優(yōu)化用于通用處理的電路,同時保留底層(underlying)的計(jì)算架構(gòu),本文將更詳細(xì)地進(jìn)行描述。在又一個實(shí)施例中,可以將并行處理子系統(tǒng)112與一個或多個其他系統(tǒng)元件集成起來,諸如存儲器橋105、CPU 102以及I/O橋107,以形成片上系統(tǒng)(SoC)。應(yīng)該理解,本文所示系統(tǒng)是示例性的,變化和修改都是可能的。連接拓?fù)?,包括橋的?shù)量和布置、CPU 102的數(shù)量以及并行處理子系統(tǒng)112的數(shù)量,可根據(jù)需要修改。例如,在一些實(shí)施例中,系統(tǒng)存儲器104直接連接到CPU 102而不是通過橋,并且其他設(shè)備經(jīng)由存儲器橋105和CPU 102與系統(tǒng)存儲器104通信。在其他替代性拓?fù)渲?,并行處理子系統(tǒng)112連接到I/O橋107或直接連接到CPU 102,而不是連接到存儲器橋105。在其他實(shí)施例中,I/ 0橋107和存儲器橋105可能被集成到單個芯片上。大量實(shí)施例可以包括兩個或多個CPU102以及兩個或多個并行處理系統(tǒng)112。本文所示的特定組件是可選的;例如,任意數(shù)量的外插卡或外設(shè)都可能得到支持。在一些實(shí)施例中,開關(guān)116被去掉,網(wǎng)絡(luò)適配器118和外插卡120、121直接連接到I/O橋107。圖2示出了根據(jù)本發(fā)明的一個實(shí)施例的并行處理子系統(tǒng)112。如圖所示,并行處理子系統(tǒng)112包括一個或多個并行處理單元(PI3U) 202,每個并行處理單元202都耦合到本地并行處理(PP)存儲器204。通常,并行處理子系統(tǒng)包括U個PPU,其中U彡I。(本文中,類似對象的多個實(shí)體以標(biāo)識該對象的參考數(shù)字和需要時標(biāo)識所述實(shí)體的括號中的數(shù)字來表示。)PPU 202和并行處理存儲器204可使用一個或多個集成電路設(shè)備來實(shí)現(xiàn),諸如可編程處理器、專用集成電路(ASIC)或存儲器設(shè)備,或者以任何其他技術(shù)可行的方式來實(shí)現(xiàn)。再參考圖I,在一些實(shí)施例中,并行處理子系統(tǒng)112的一些或所有PPU202是具有渲染管線的圖形處理器,它可以經(jīng)配置以執(zhí)行與下述相關(guān)的各種任務(wù)經(jīng)由存儲器橋105從CPU 102和/或系統(tǒng)存儲器104所提供的圖形數(shù)據(jù)生成像素?cái)?shù)據(jù)。PPU 202經(jīng)配置以與本地并行處理存儲器204 (可被用作圖形存儲器,包括例如常用幀緩沖區(qū)(buffer))交互以存儲和更新像素?cái)?shù)據(jù),傳遞像素?cái)?shù)據(jù)到顯示設(shè)備110等等。在一些實(shí)施例中,并行處理子系統(tǒng)112可包括一個或多個作為圖形處理器而操作的PPU 202以及包括一個或多個用于通用計(jì)算的其他PPU 202。這些PPU可以是相同的或不同的,并且每個PPU均可具有其自己的專用并行處理存儲器設(shè)備或不具有專用的并行處理存儲器設(shè)備。一個或多個PPU 202可輸出數(shù)據(jù)到顯示設(shè)備110,或者每個PPU 202均可輸出數(shù)據(jù)到一個或多個顯示設(shè)備110。在操作中,CPU 102是計(jì)算機(jī)系統(tǒng)100的主處理器,控制和協(xié)調(diào)其他系統(tǒng)組件的操作。具體地,CPU 102發(fā)出控制PPU 202的操作的命令。在一些實(shí)施例中,CPU 102為每個PPU 202寫入命令流到入棧緩沖區(qū)(pushbuffer)中(在圖I或圖2中未明確示出),所述入棧緩沖區(qū)可位于系統(tǒng)存儲器104、并行處理存儲器204、或CPU 102和PPU 202都可訪問的其他存儲位置中。入棧緩沖區(qū)是CPU 102和PPU 202均可訪問的存儲器緩沖區(qū)。CPU 102向入棧緩沖區(qū)寫入命令流和圖形數(shù)據(jù)。PPU 202從所述入棧緩沖區(qū)讀取命令流,然后相對于CPU 102的操作異步地執(zhí)行命令?,F(xiàn)在參考圖2,每個PPU 202均包括與計(jì)算機(jī)系統(tǒng)100的其余部分通信的I/O (輸A /輸出)單元205。在一些實(shí)施例中,并行處理子系統(tǒng)112可作為外插卡來實(shí)現(xiàn),所述外插卡可被插入到計(jì)算機(jī)系統(tǒng)100的擴(kuò)展插槽中。在其他實(shí)施例中,PPU 202可以和諸如存儲器橋105或I/O橋107的總線橋一起集成在單個芯片上。而在其他實(shí)施例中,PPU 202的一些或所有元件可以和CPU 102—起集成在單個芯片上。I/O單元205生成用于傳輸?shù)紺PU 102的數(shù)據(jù)包(或其他信號),并且還從CPU 102接收所有到達(dá)的數(shù)據(jù)包(或其他信號),將到達(dá)的數(shù)據(jù)包引導(dǎo)到PPU 202的適當(dāng)組件。例如,可將與處理任務(wù)有關(guān)的命令引導(dǎo)到主機(jī)接口 206,而可將與存儲器操作有關(guān)的命令(例如,對并行處理存儲器204的讀取或?qū)懭?引導(dǎo)到存儲器交叉開關(guān)單元210。主機(jī)接口 206讀取每個入棧緩沖區(qū),并且將該入棧緩沖區(qū)指定的工作輸出到前端212。有利地,每個PPU202都實(shí)現(xiàn)高度并行處理架構(gòu)。如詳細(xì)示出的,Pro202(0)包括處理集群陣列230,該陣列230包括C個通用處理集群(GPC )208,其中CS I。每個GPC 208都 能夠并發(fā)執(zhí)行大量的(例如,幾百或幾千)線程,其中每個線程均是程序的實(shí)例(instance)。在各種應(yīng)用中,可分配不同的GPC 208用于處理不同類型的程序或用于執(zhí)行不同類型的計(jì)算。例如,在圖形應(yīng)用中,第一組GPC 208可被分配以執(zhí)行曲面細(xì)分(tessellation)操作并產(chǎn)生用于曲面元(patch)的基元(primitive)拓?fù)?,并且第二組GPC 208可被分配以執(zhí)行曲面細(xì)分著色以評估用于所述基元拓?fù)涞那嬖獏?shù)并確定頂點(diǎn)位置和每頂點(diǎn)的其他屬性。取決于因每種程序或計(jì)算所產(chǎn)生的工作量,GPC 208的分配可以改變。GPC 208經(jīng)由工作分布單元200來接收將要執(zhí)行的處理任務(wù),所述工作分布單元200從前端單元212接收定義處理任務(wù)的命令。處理任務(wù)包括將被處理的數(shù)據(jù)的索引,例如表面(曲面元)數(shù)據(jù)、基元數(shù)據(jù)、頂點(diǎn)數(shù)據(jù)和/或像素?cái)?shù)據(jù),以及定義數(shù)據(jù)將被如何處理(例如,什么程序?qū)⒈粓?zhí)行)的狀態(tài)參數(shù)和命令。工作分布單元200可以經(jīng)配置以獲取與這些任務(wù)相對應(yīng)的索引,或者工作分布單元200可以從前端212接收這些索引。前端212確保在入棧緩沖區(qū)所指定的處理啟動前,將GPC 208配置為有效狀態(tài)。例如,當(dāng)PPU 202被用于圖形處理時,用于每個曲面元的處理工作量被分為近似相等大小的任務(wù),以使曲面細(xì)分處理能夠分布給多個GPC 208。工作分布單元200可經(jīng)配置以按照能夠向多個GPC 208提供任務(wù)進(jìn)行處理的頻率來產(chǎn)生任務(wù)。相反,在常規(guī)系統(tǒng)中,處理一般由單個處理引擎執(zhí)行,而其他處理引擎則保持空閑,等到該單個處理引擎完成其任務(wù)才開始他們的處理任務(wù)。在本發(fā)明的一些實(shí)施例中,各部分GPC 208經(jīng)配置以執(zhí)行不同類型的處理。例如第一部分可經(jīng)配置以執(zhí)行頂點(diǎn)著色和拓?fù)渖桑诙糠挚山?jīng)配置以執(zhí)行曲面細(xì)分和幾何著色,第三部分可經(jīng)配置以執(zhí)行屏幕空間中的像素著色以產(chǎn)生經(jīng)渲染的圖像。由GPC 208產(chǎn)生的中間數(shù)據(jù)可以被存儲在緩沖區(qū)中以使得該中間數(shù)據(jù)可以在GPC208之間傳輸以進(jìn)行進(jìn)一步處理。任意一個GPC 208都可以處理將被寫到并行處理存儲器204中任意DRAM模塊220的數(shù)據(jù)。交叉開關(guān)單元210經(jīng)配置以路由每個GPC 208的輸出到存儲器接口 214的輸入或到另一個GPC 208用于進(jìn)一步處理。GPC208通過交叉開關(guān)單元210與存儲器接口 214通信,以對各種外部存儲器設(shè)備進(jìn)行讀取或?qū)懭?。在一個實(shí)施例中,交叉開關(guān)單元210具有到存儲器接口 214的連接以和I/O單元205通信,以及到本地并行處理存儲器204的連接,從而使得在不同GPC 208內(nèi)的處理內(nèi)核能夠與系統(tǒng)存儲器104或?qū)τ赑PU 202而言非本地的其他存儲器通信。圖2所示的實(shí)施例中,交叉開關(guān)單元210直接與I/O單元205連接。交叉開關(guān)單元210可使用虛擬信道來分開GPC 208與存儲器接口 214之間的業(yè)務(wù)流。另外,GPC 208可被編程以執(zhí)行與種類繁多的應(yīng)用相關(guān)的處理任務(wù),包括但不限于,線性和非線性數(shù)據(jù)變換、視頻和/或音頻數(shù)據(jù)過濾、建模操作(例如,應(yīng)用物理定律以確定對象的位置、速率和其他屬性)、圖像渲染操作(例如,曲面著色、頂點(diǎn)著色、幾何著色、和/或像素著色程序)等等。PPU 202可將數(shù)據(jù)從系統(tǒng)存儲器104和/或本地并行處理存儲器204傳送到內(nèi)部(片上)存儲器中,處理所述數(shù)據(jù),并且將結(jié)果數(shù)據(jù)寫回到系統(tǒng)存儲器104和/或本地并行處理存儲器204,其中這樣的數(shù)據(jù)可以由其他系統(tǒng)組件訪問,所述其他系統(tǒng)組件包括CPU 102或另一個并行處理子系統(tǒng)112。PPU 202可配備有任意容量(amount)的本地并行處理存儲器204,并且可以以任意組合方式使用本地存儲器和系統(tǒng)存儲器。例如,在統(tǒng)一存儲器架構(gòu)(UMA)實(shí)施例中,PPU202可以是圖形處理器。在這樣的實(shí)施例中,將不提供或幾乎不提供專用的圖形(并行處理)存儲器,并且PPU 202會以排他或幾乎排他的方式使用系統(tǒng)存儲器。在UMA實(shí)施例中,PPU 202可被集成到橋式芯片中或處理器芯片中,或作為具有高速鏈路(例如,PCI-Express)的分立芯片提供,所述高速鏈路經(jīng)由橋式芯片或其他通信方式將PPU 202連接到系統(tǒng)存儲器。如上所述,并行處理子系統(tǒng)112可以包括任意數(shù)量的PPU 202。例如,在可在單個外插卡上提供多個PPU 202、或可將多個外插卡連接到存儲器橋105、或可將一個或多個PPU 202集成到橋式芯片中。在多PI3U系統(tǒng)中的PPU 202可以彼此相同或不同。例如,不同的PPU 202可能具有不同數(shù)量的處理內(nèi)核、不同容量的本地并行處理存儲器等等。在出現(xiàn)多個PPU 202的情況下,可并行操作這些PPU從而以高于單個PPU 202可能達(dá)到的吞吐量來處理數(shù)據(jù)。包含一個或多個PPU 202的系統(tǒng)可以以各種配置和形式因素來實(shí)現(xiàn),包括臺式電腦、筆記本電腦或手持式個人計(jì)算機(jī)、服務(wù)器、工作站、游戲控制臺、嵌入式系統(tǒng)等等。存儲器接口圖3示出了根據(jù)本發(fā)明的一個實(shí)施例的存儲器接口的一部分。在諸如JEDEC DDR3SDRAM接口的常規(guī)存儲器接口中,命令總線和地址總線是單端并行接口。例如,DDR3 SDRAM包括5個命令引腳和19個地址引腳(16個地址引腳和3個庫地址引腳)。每個連接都是從存儲器接口到DRAM模塊單向的。如圖3所示,存儲器接口 214實(shí)現(xiàn)差分時鐘信號(CK/CK#)312、單端點(diǎn)對點(diǎn)或點(diǎn)對多點(diǎn)命令總線314和差分高速點(diǎn)對點(diǎn)串行地址總線316。時鐘信號312與各種DDRx接口(即DDR2、DDR3等)的差分時鐘信號相似。在一個實(shí)施例中,命令總線314包括5個互連,諸如DDR3 SDRAM接口中的CS#、RAS#、CAS#、WE#命令信號,但具有不同的編碼。應(yīng)該了解任何數(shù)量N的接口可被包括在命令總線314中。接口的數(shù)量可被優(yōu)化以反映在命令總線314上可被編碼的命令的總數(shù)。例如,3個互連使得被命令總線編碼的命令多達(dá)8個。在一個實(shí)施例中,地址總線316是高速點(diǎn)對點(diǎn)差分串行鏈路。換言之,地址總線316包括兩個連接在存儲器接口 214和DRAM模塊220之間的互連。在另一實(shí)施例中,通過增加額外的點(diǎn)對點(diǎn)差分串行鏈路,地址總線316的帶寬是可伸縮的。上電時校準(zhǔn)地址總線316以在高頻可靠地運(yùn)轉(zhuǎn)。采用常規(guī)串行命令/地址總線,通常包括低速邊帶通信信道以在校準(zhǔn)前與DRAM模塊220通信。然而,在圖3所示的存儲器接口 214中,通過設(shè)計(jì),命令總線314在上電時立即可用,不需要任何校準(zhǔn)。因此,所有串行鏈路訓(xùn)練可經(jīng)由在命令總線314上發(fā)出的命令執(zhí)行,不需要單獨(dú)的邊帶通信信道。例如,存儲器接口 214可以在命令總線314上將命令發(fā)送到DRAM模塊220,指示DRAM模塊220開始地址鏈路訓(xùn)練序列。然后,存儲器接口 214經(jīng)由地址總線316將訓(xùn)練模式的序列(S卩,預(yù)定義的比特序列)傳輸?shù)紻RAM模塊220。DRAM模塊220接收該訓(xùn)練模式并經(jīng)由數(shù)據(jù)總線(未示出)將所接收的模式傳回存儲器接口。DRAM模塊220可以存儲通過地址總線316發(fā)送的訓(xùn)練模式,所述訓(xùn)練模式隨后通過經(jīng)由命令總線314發(fā)出命令而被存儲器接口 214所讀取。存儲器接口 214分析DRAM模塊220接收到的數(shù)據(jù)以確定時序信息和參數(shù)以用來在地址總線316上傳輸數(shù)據(jù)。存儲器接口 214可以采用不同的傳輸參數(shù)重復(fù)地址鏈路訓(xùn)練序列。一旦存儲器接口 214完成了地址鏈路訓(xùn)練序列,高速的地址總線316就可以被用于將地址傳輸?shù)紻RAM模塊220。有利地,命令總線314被用于在正常操作期間將命令 傳輸?shù)紻RAM模塊220。不同于實(shí)現(xiàn)邊帶信令接口以校準(zhǔn)串行鏈路的常規(guī)串行存儲器接口,存儲器接口 214經(jīng)由命令總線314傳輸命令以初始化地址總線316。另外,在正常操作期間經(jīng)由命令總線313將命令發(fā)送到DRAM模塊220,從而在命令和地址都經(jīng)由相同串行鏈路傳輸時緩解所需額外帶寬的串行鏈路。在一個實(shí)施例中,與經(jīng)由地址總線316發(fā)送地址大體同時地經(jīng)由命令總線314發(fā)送命令。換言之,在與經(jīng)由地址總線316傳輸?shù)刂返闹辽僖徊糠窒嗤臅r鐘周期期間經(jīng)由命令總線314傳輸命令。在其他實(shí)施例中,可以與經(jīng)由地址總線316發(fā)送地址相偏離(SP,不在相同時鐘周期)來經(jīng)由命令總線314發(fā)送命令。應(yīng)該了解上述作為并行處理子系統(tǒng)112—部分的存儲器接口 214和DRAM模塊220也可以經(jīng)由其他類型的存儲器接口實(shí)現(xiàn)。例如,存儲器橋105可以實(shí)現(xiàn)存儲器接口 214以與系統(tǒng)存儲器104通信。另外,在其他實(shí)施例中,并行處理存儲器可以包括兩個或更多DRAM模塊220并且每個DRAM模塊220均可以包括獨(dú)立的存儲器接口。在其他實(shí)施例中,將在以下描述,單個存儲器接口可以經(jīng)由邏輯設(shè)備連接到多個DRAM模塊220。而在其他實(shí)施例中,存儲器設(shè)備可以是諸如MRAM、FRAM或SRAM存儲器設(shè)備的不同類型的存儲器,以及本公開不應(yīng)該被解釋為僅僅限制在DRAM存儲器設(shè)備實(shí)現(xiàn)方案。圖4示出了根據(jù)本發(fā)明一個實(shí)施例的包括多個DRAM模塊220的并行處理存儲器204。如圖4所示,除多個DRAM模塊220之外,并行處理存儲器204還可以包括邏輯設(shè)備410。邏輯設(shè)備410提供到存儲器接口 214的接口。邏輯設(shè)備410接收時鐘信號312、經(jīng)由命令總線314傳輸?shù)拿詈陀傻刂房偩€316傳輸?shù)牡刂贰1M管未明確示出,時鐘信號312被提供給每個DRAM模塊220。在一個實(shí)施例中,邏輯模塊410包括時鐘扇出(fanout)緩沖區(qū),其提供足夠的功率以向多達(dá)8個單獨(dú)的DRAM模塊220供應(yīng)時鐘信號。在一個實(shí)施例中,由邏輯設(shè)備410所接收的命令經(jīng)由共享的并行總線412傳輸?shù)矫總€DRAM模塊220。由邏輯設(shè)備410所接收的地址可以經(jīng)由單獨(dú)的串行鏈路(例如416(0 )、416 (I)、…、和416 (J))傳輸?shù)较鄳?yīng)的DRAM模塊220。例如,邏輯模塊410可以包含分析經(jīng)由命令總線314接收到的命令以確定哪個DRAM模塊220被該特定的命令所識別出來的電路。命令可被用來控制邏輯設(shè)備410內(nèi)的解復(fù)用器(demultiplexor),該解復(fù)用器對應(yīng)于被所述命令識別出來的DRAM模塊220,將地址總線316連接到串行鏈路416 (0)到416(J)中的一個。因此,命令經(jīng)由共享的并行總線412被轉(zhuǎn)發(fā)到正確的DRAM模塊220,而地址經(jīng)由串行鏈路416 (0)到416 (J)的其中一個被轉(zhuǎn)發(fā)到正確的DRAM模塊220。
應(yīng)該了解存儲器接口 214可以利用上述與圖3有關(guān)的接口(即,并行命令接口加上用于地址的高速差分串行接口),而邏輯設(shè)備410后面的接口可以實(shí)現(xiàn)到每個DRAM模塊220的不同類型的接口。例如,在一個實(shí)施例中,邏輯設(shè)備410可以經(jīng)由與JEDEC DDR3 SDRAM規(guī)范所描述的接口相似的并行總線接口連接到每個DRAM模塊220。盡管該DDR3 SDRAM規(guī)范被限制在特定帶寬內(nèi),但是邏輯設(shè)備410的帶寬可以更大,因?yàn)槎鄠€操作可以被邏輯設(shè)備410緩沖并被并行傳輸?shù)讲煌腄RAM模塊220。因此,存儲器接口 214和CPU 102之間的表面帶寬遠(yuǎn)遠(yuǎn)大于任何DRAM模塊220各自的可用帶寬。圖5示出了根據(jù)本發(fā)明另一實(shí)施例的包括多個DRAM模塊220的并行處理存儲器204。如圖所示,并行處理存儲器204包括連接到存儲器接口 214的邏輯設(shè)備510。邏輯設(shè)備510與邏輯設(shè)備410相似,除了 DRAM模塊220被包括在邏輯設(shè)備510內(nèi)部。換言之,在圖4的并行處理處理存儲器204中DRAM模塊220可以是經(jīng)由印刷電路板耦合到邏輯設(shè)備410的單獨(dú)的集成電路,而圖5的并行處理存儲器204可以包括單個集成電路,該單個集成電路實(shí)現(xiàn)體現(xiàn)在邏輯設(shè)備410以及單獨(dú)的DRAM模塊220所體現(xiàn)的邏輯。然后,各種耦合到邏輯設(shè)備510的信號中的每一者都經(jīng)由集成電路內(nèi)的互連被路由到相應(yīng)的DRAM模塊220。 圖6展示了根據(jù)本發(fā)明一個實(shí)施例的用于初始化存儲器接口 214的方法600的流程圖。雖然本方法的步驟是結(jié)合圖1-5的系統(tǒng)描述的,但本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解被配置以任何順序執(zhí)行該方法步驟的任何系統(tǒng)都在本發(fā)明的范圍之內(nèi)。所述方法始于步驟610,其中GPU 240經(jīng)由命令總線314將命令傳輸?shù)讲⑿刑幚泶鎯ζ?04以開始用于高速差分串行地址總線316的鏈路訓(xùn)練例程。在一個實(shí)施例中,所述命令向并行處理存儲器204指示訓(xùn)練模式序列將要在地址總線316上被GPU 240所傳輸。并行處理存儲器204經(jīng)配置以將在地址總線316上接收到的數(shù)據(jù)存儲在一個或多個鏈路訓(xùn)練寄存器中。在步驟612,GPU 240經(jīng)由地址總線316將訓(xùn)練標(biāo)志序列傳輸?shù)讲⑿刑幚泶鎯ζ?04。并行處理存儲器204將接收到的數(shù)據(jù)存儲在鏈路訓(xùn)練寄存器中。在步驟614,GPU240將命令傳輸?shù)讲⑿刑幚泶鎯ζ?04以請求讀取存儲在鏈路訓(xùn)練寄存器中的接收到的數(shù)據(jù)。并行處理存儲器204經(jīng)由數(shù)據(jù)總線將接收到的數(shù)據(jù)傳輸?shù)紾PU240,類似于正常的存儲器讀取操作。在其他的實(shí)施例中,數(shù)據(jù)可以經(jīng)由其他互連傳輸?shù)紾PU 240。在步驟616,GPU 240分析從鏈路訓(xùn)練寄存器讀取的值以確定用于地址總線316的配置參數(shù)。例如,GPU 240可以確定在步驟612傳輸?shù)讲⑿刑幚泶鎯ζ?04的數(shù)據(jù)是否與在步驟614從并行處理存儲器204接收的數(shù)據(jù)相匹配。在步驟618,GPU 240確定是否將新的訓(xùn)練標(biāo)志序列傳輸?shù)讲⑿刑幚泶鎯ζ?04。在一個實(shí)施例中,如果傳輸?shù)讲⑿刑幚泶鎯ζ?04的數(shù)據(jù)與從并行處理存儲器204讀取的數(shù)據(jù)不匹配,那么GPU 240將調(diào)整地址總線316的配置并通過返回步驟612,如上討論的,來經(jīng)由串行鏈路重新發(fā)送鏈路訓(xùn)練序列。在另一個實(shí)施例中,GPU 240實(shí)現(xiàn)狀態(tài)機(jī)以配置地址總線。只要所述狀態(tài)不指示鏈路訓(xùn)練完成,那么GPU 240就會基于目前的狀態(tài)傳輸新的訓(xùn)練標(biāo)志序列并且方法600會返回步驟612。但是,如果GPU 240確定鏈路訓(xùn)練完成,那么方法600就會前進(jìn)到步驟620,其中GPU 240將存儲器接口轉(zhuǎn)變到正常操作模式。在正常操作模式中,GPU 240可以將用于存儲器操作的命令和地址分別在命令總線314和地址總線316上發(fā)送到并行處理存儲器204。然后,方法600終止??傊?,所公開的技術(shù)能夠使GPU經(jīng)由并行命令總線和高速串行地址總線將命令和地址傳輸?shù)酱鎯ζ髟O(shè)備。并行命令總線可以被用于在上電時啟動與存儲器設(shè)備的通信。此夕卜,經(jīng)由并行命令總線將啟動串行地址總線校準(zhǔn)的命令發(fā)送到存儲器設(shè)備。一旦設(shè)備被校準(zhǔn),正常操作就可以恢復(fù),其中經(jīng)由并行命令總線傳輸命令并經(jīng)由串行地址總線傳輸?shù)刂?。所公開的技術(shù)的一個優(yōu)勢是相對于行業(yè)標(biāo)準(zhǔn)并行接口,減少了將命令和地址傳輸?shù)酱鎯ζ髟O(shè)備所需的互連的數(shù)量。另外,通過從地址總線分離命令總線,小的并行命令總線可被用于啟動串行地址總線的校準(zhǔn),從而避免了對在正常操作期間用不到的獨(dú)立低速邊帶通信信道的需要。雖然上述內(nèi)容是針對本發(fā)明實(shí)施例的,但是在不脫離本發(fā)明基本范圍的情況下,可以設(shè)計(jì)出本發(fā)明其他和更多的實(shí)施例。例如,本發(fā)明的各個方面可以在硬件或軟件或硬件和軟件的結(jié)合上實(shí)現(xiàn)。本發(fā)明的一個實(shí)施例可以作為與計(jì)算機(jī)系統(tǒng)一起使用的程序產(chǎn)品實(shí)現(xiàn)。所述程序產(chǎn)品的程序定義實(shí)施例(包括本文描述的方法)的功能并可以被包含在各種計(jì)算機(jī)可讀存儲介質(zhì)上。示例性的計(jì)算機(jī)可讀存儲介質(zhì)包括,但不限于(i )信息被永久保存在其上的非可寫存儲介質(zhì)(例如,計(jì)算機(jī)內(nèi)的只讀存儲器設(shè)備,諸如可被CD-ROM驅(qū)動器讀取的CD-ROM光盤、閃存、ROM芯片或任何類型的固態(tài)非易失性失半導(dǎo)體存儲器)jP(ii) 可變信息被保存在其上的可寫存儲介質(zhì)(例如,磁盤驅(qū)動器內(nèi)的軟盤或者硬盤驅(qū)動器或者任何類型的固態(tài)隨機(jī)存取半導(dǎo)體存儲器)。當(dāng)執(zhí)行指向本發(fā)明的功能的計(jì)算機(jī)可讀指令時,這樣的計(jì)算機(jī)可讀存儲介質(zhì)就是本發(fā)明的實(shí)施例。鑒于上述描述,本發(fā)明的范圍由隨后的權(quán)利要求確定。
權(quán)利要求
1.一種經(jīng)配置以與存儲器設(shè)備通信的存儲器接口,所述存儲器接口包括 差分時鐘信道,其用于將參考時鐘信號傳輸?shù)剿龃鎯ζ髟O(shè)備; 并行命令總線,其用于將一個或多個命令傳輸?shù)剿龃鎯ζ髟O(shè)備,其中所述并行命令總線不要求在上電時校準(zhǔn);和 串行地址總線,其用于將一個或多個地址傳輸?shù)剿龃鎯ζ髟O(shè)備,其中每個地址均識別所述存儲器設(shè)備內(nèi)的位置。
2.根據(jù)權(quán)利要求I所述的存儲器接口,其中經(jīng)由所述并行命令總線傳輸?shù)拿钆c經(jīng)由所述串行地址總線大體同時傳輸?shù)牡刂废嚓P(guān)聯(lián)。
3.根據(jù)權(quán)利要求I所述的存儲器接口,其中所述存儲器設(shè)備包括動態(tài)隨機(jī)存取存儲器(DRAM)0
4.根據(jù)權(quán)利要求I所述的存儲器接口,其中在上電操作之后但在所述一個或多個地址經(jīng)由所述串行地址總線傳輸之前,所述串行地址總線經(jīng)由鏈路訓(xùn)練例程校準(zhǔn)。
5.根據(jù)權(quán)利要求4所述的存儲器接口,進(jìn)一步包括數(shù)據(jù)總線,其中所述鏈路訓(xùn)練例程包括 經(jīng)由所述并行命令總線將第一命令傳輸?shù)剿龃鎯ζ髟O(shè)備,以指示訓(xùn)練模式序列將經(jīng)由所述串行地址總線發(fā)送到所述存儲器設(shè)備; 經(jīng)由所述串行地址總線將所述訓(xùn)練模式序列傳輸?shù)剿龃鎯ζ髟O(shè)備,其中所述存儲器設(shè)備將反映接收到的所述訓(xùn)練模式序列的版本的值存儲在鏈路訓(xùn)練寄存器中; 經(jīng)由所述并行命令總線將第二命令傳輸?shù)剿龃鎯ζ髟O(shè)備,以請求對存儲在所述鏈路訓(xùn)練寄存器中的所述值的訪問; 經(jīng)由所述數(shù)據(jù)總線讀取存儲在所述鏈路訓(xùn)練寄存器中的所述值;和基于從所述鏈路訓(xùn)練寄存器中讀取的所述值,確定與所述串行地址總線相關(guān)聯(lián)的傳輸參數(shù)。
6.根據(jù)權(quán)利要求I所述的存儲器接口,其中所述存儲器設(shè)備包括 多個DRAM模塊;和 邏輯設(shè)備,所述邏輯設(shè)備耦合至所述存儲器接口并包括邏輯,所述邏輯經(jīng)配置以將經(jīng)由所述命令總線接收到的命令傳輸?shù)剿龆鄠€DRAM模塊中每一個所述DRAM模塊,并且對于每一條命令,將經(jīng)由所述串行地址總線接收到的一個或多個地址傳輸?shù)接伤雒钏R別的所述多個DRAM模塊中的特定DRAM模塊。
7.根據(jù)權(quán)利要求6所述的存儲器接口,其中所述多個DRAM模塊包含在與所述邏輯設(shè)備相同的集成電路內(nèi)。
8.一種系統(tǒng),包括 存儲器設(shè)備;和 存儲器接口,經(jīng)配置以與所述存儲器設(shè)備通信,所述存儲器接口包括 差分時鐘信道,其用于將參考時鐘信號傳輸?shù)剿龃鎯ζ髟O(shè)備; 并行命令總線,其用于將一個或多個命令傳輸?shù)剿龃鎯ζ髟O(shè)備, 其中所述并行命令總線不要求在上電時校準(zhǔn),和 串行地址總線,其用于將一個或多個地址傳輸?shù)剿龃鎯ζ髟O(shè)備, 其中每個地址均識別所述存儲器設(shè)備內(nèi)的位置。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其中經(jīng)由所述并行命令總線傳輸?shù)拿钆c經(jīng)由所述串行地址總線大體同時傳輸?shù)牡刂废嚓P(guān)聯(lián)。
10.一種用于與存儲器設(shè)備通信的方法,所述方法包括 經(jīng)由差分時鐘信道將參考時鐘信號傳輸?shù)剿龃鎯ζ髟O(shè)備; 經(jīng)由并行命令總線將一個或多個命令傳輸?shù)剿龃鎯ζ髟O(shè)備,其中所述并行命令總線不要求在上電時校準(zhǔn);以及 經(jīng)由串行地址總線將一個或多個地址傳輸?shù)剿龃鎯ζ髟O(shè)備,其中每個地址均識別所述存儲器設(shè)備內(nèi)的位置。
全文摘要
公開了一種存儲器控制器和一種動態(tài)隨機(jī)存取存儲器(DRAM)接口。存儲器控制器實(shí)現(xiàn)用于DRAM接口的信號。DRAM接口包括差分時鐘信號、未校準(zhǔn)并行命令總線和高速串行地址總線。命令總線可以被用于當(dāng)上電時啟動與存儲器設(shè)備的通信以及用于啟動地址總線的校準(zhǔn)。
文檔編號G06F13/16GK102968393SQ201210320820
公開日2013年3月13日 申請日期2012年8月31日 優(yōu)先權(quán)日2011年8月31日
發(fā)明者阿洛克·古普塔, 巴里·A·瓦格納 申請人:輝達(dá)公司