本公開的領(lǐng)域
本申請大體上涉及處理系統(tǒng),且更特定來說,涉及處理系統(tǒng)中的存儲器物理層接口。
相關(guān)技術(shù)的描述
例如系統(tǒng)芯片(SOC)等處理系統(tǒng)使用存儲器來存儲數(shù)據(jù)或指令以供稍后使用。舉例來說,SOC可包括處理單元,例如中央處理單元(CPU)、圖形處理單元(GPU),且加速處理單元(APU)可從存儲器讀取指令或數(shù)據(jù)、使用所述指令或數(shù)據(jù)執(zhí)行操作,且隨后將結(jié)果寫回到存儲器中。處理系統(tǒng)可包括存儲器物理層接口以用于控制對例如動態(tài)隨機存取存儲器(DRAM)等存儲器模塊的存取,所述存儲器模塊可用于存儲信息,使得所存儲的信息可由處理單元在處理系統(tǒng)的操作期間存取。處理系統(tǒng)中的存儲器物理層接口常規(guī)上被稱作“存儲器PHY”。存儲器控制器通常用于控制存儲器PHY的操作。
在可從DRAM準確地讀取數(shù)據(jù)或?qū)?shù)據(jù)準確地寫入到DRAM之前,通常使用在存儲器PHY與DRAM之間的接口上交換的序列來訓(xùn)練存儲器PHY。接口訓(xùn)練程序可包括全局接口初始化機制以便在讀取和寫入的接口端點處執(zhí)行命令發(fā)出和數(shù)據(jù)樣本時序的相對粗粒度的同步。全局同步的訓(xùn)練序列可(例如)使用以周期性方式被命令間隙(其可被稱作“氣泡”)打斷的DRAM命令的連續(xù)流構(gòu)建。此序列在連續(xù)流內(nèi)創(chuàng)建一連串時間/事件標記,其可用于建構(gòu)粗糙/全局接口時序或使其同步。更細粒度的每個信號訓(xùn)練程序隨后可用于找到用于對數(shù)據(jù)信號進行取樣的最佳時序和電壓偏移。每個信號訓(xùn)練程序的訓(xùn)練序列可包括從DRAM讀取和/或?qū)懭氲紻RAM的“1”和“0”的隨機混合。響應(yīng)于訓(xùn)練序列而從DRAM返回的信號用于確定“數(shù)據(jù)眼”的輪廓,其為展示表示作為時間和電壓的函數(shù)的數(shù)據(jù)信號的值的上升沿、下降沿和高/低電壓的曲線圖。
通過在處理系統(tǒng)中的處理器上運行的BIOS代碼起始常規(guī)的訓(xùn)練程序。然而,BIOS通常在邏輯上或物理上遠離存儲器PHY。舉例來說,BIOS和存儲器PHY可被數(shù)據(jù)管道、高速緩沖存儲器和緩沖器分離。這些介入的接口和子系統(tǒng)塊可能會扭曲或更改從BIOS傳輸?shù)挠?xùn)練控制和數(shù)據(jù)序列,例如,可能將額外的氣泡引入到訓(xùn)練序列中,從而使其難以找到有效的訓(xùn)練算法。因此,BIOS通常將復(fù)雜的訓(xùn)練序列播種和數(shù)據(jù)后處理方案并入到訓(xùn)練代碼中。這兩種方法都具有顯著的缺陷。舉例來說,在后處理期間移動、開采數(shù)據(jù)且對數(shù)據(jù)操作所需的額外時間會增加執(zhí)行訓(xùn)練所需的總時間。如果總訓(xùn)練時間預(yù)算是固定的,那么花在后處理的額外時間意味著必須在其它地方節(jié)約時間以將總訓(xùn)練時間保持在預(yù)算內(nèi)??赏ㄟ^運行較短的模式來節(jié)約時間,其可導(dǎo)致較大的訓(xùn)練誤差。對于另一實例,訓(xùn)練序列播種用于從系統(tǒng)狀態(tài)開始訓(xùn)練,其中避免了上文所描述的可能會阻止算法收斂的管道問題,但找到適當(dāng)?shù)姆N子值來正確地界定初始系統(tǒng)狀態(tài)需要密集系統(tǒng)和平臺表征。所述種子值可包括表征以下各者的信息:數(shù)據(jù)管道、存儲器PHY或沿著從BIOS穿過存儲器PHY到DRAM且回到BIOS的路徑的其它邏輯或物理實體。必須在實驗室針對每個處理系統(tǒng)或DRAM的實施表征種子值中的每一者。因此,隨著處理系統(tǒng)和相關(guān)聯(lián)的存儲器裝置的數(shù)目和多樣性增加,必須產(chǎn)生的種子信息的數(shù)量和種類會快速擴大,這可能會增大BIOS代碼大小且使得BIOS更為難以維持。
附圖簡述
通過參考附圖,可更好地理解本公開,且使其眾多特征和優(yōu)勢對于本領(lǐng)域技術(shù)人員顯而易見。在不同圖式中使用相同的參考符號會指示類似或等同的項目。
圖1是根據(jù)一些實施方案的包括一個或多個中央處理單元(CPU)處理器核心和圖形處理單元(GPU)的加速處理單元(APU)的框圖。
圖2是根據(jù)一些實施方案的包括存儲器PHY和DRAM的處理單元的一部分的框圖。
圖3是根據(jù)一些實施方案的可在例如圖1中所示的加速處理單元等處理單元中實施的訓(xùn)練存儲器PHY的方法的流程圖。
圖4是示出根據(jù)一些實施方案的用于設(shè)計和制造實施處理系統(tǒng)的組件的至少一部分的集成電路裝置的方法的流程圖。
詳細描述
如本文論述,BIOS與存儲器PHY之間的數(shù)據(jù)管道可使得更難以找到可在BIOS中實施來控制提供給DRAM的訓(xùn)練序列的時序的有效訓(xùn)練算法。此外,訓(xùn)練序列中的改變可使得BIOS中的訓(xùn)練算法更難以處理DRAM返回的信號。將訓(xùn)練算法從BIOS移動到存儲器PHY可減少可能由后處理引入的系統(tǒng)時序預(yù)算上的壓力,執(zhí)行所述后處理來補償由數(shù)據(jù)管道導(dǎo)致的訓(xùn)練序列中的失真,進而提高對時序序列的時序的控制,且在一些實施方案中,減少或消除對播種訓(xùn)練算法的需要。在存儲器PHY中實施訓(xùn)練算法還可簡化用于實施存儲器PHY的硬件的設(shè)計,且允許工程師創(chuàng)建根據(jù)處理系統(tǒng)而調(diào)諧的更有效的訓(xùn)練算法。在硬件中實施訓(xùn)練算法的實施方案(例如,作為用于實施存儲器PHY的硬件的部分)還可允許“全速”執(zhí)行測試,這意味著可以DRAM接口的最大速率傳輸命令和訓(xùn)練序列。
在一些實施方案中,存儲器PHY內(nèi)的例如微控制器等集成控制器可用于控制訓(xùn)練算法,所述訓(xùn)練算法用于配置所述存儲器PHY以便與相關(guān)聯(lián)的DRAM通信,進而不需要在BIOS與存儲器PHY之間的數(shù)據(jù)管道上提供訓(xùn)練序列。訓(xùn)練算法因此可實施為無種訓(xùn)練算法,因為在沿著數(shù)據(jù)管道傳達訓(xùn)練序列時不需要考慮訓(xùn)練序列的失真或更改。如本文所使用,“種子”信息是指表征由訓(xùn)練算法產(chǎn)生的訓(xùn)練序列或命令通過的信號路徑的信息。訓(xùn)練算法使用種子信息來建立初始系統(tǒng)狀態(tài),使得訓(xùn)練算法可收斂于同步解,例如,使得對所返回信號的后處理可收斂于對存儲器PHY與相關(guān)聯(lián)的DRAM之間的相位差(或時序延遲)與電壓偏移的解。“播了種的”訓(xùn)練算法因此需要種子信息來進行收斂。相比而言,“無種”訓(xùn)練算法可在不使用種子信息建立初始狀態(tài)的情況下收斂于同步解。然而,在一些實施方案中,BIOS仍可提供可由無種訓(xùn)練算法使用的配置信息,例如識別DRAM的配置的信息,但從BIOS接收此信息對于確保收斂可能不是必需的。
在一些實施方案中,微控制器耦合到:第一訓(xùn)練引擎,其產(chǎn)生被遞送到DRAM的可編程命令序列;第二訓(xùn)練引擎,其產(chǎn)生訓(xùn)練序列;以及第三訓(xùn)練引擎,其基于提供給DRAM的訓(xùn)練序列而將從DRAM接收的業(yè)務(wù)與其預(yù)期值進行比較。舉例來說,所述第三訓(xùn)練引擎可使一個或多個所傳輸?shù)挠?xùn)練序列與所接收的信號相關(guān)以確定所傳輸?shù)男蛄信c所接收的序列之間的時序延遲。第三訓(xùn)練引擎還可調(diào)節(jié)由存儲器PHY使用的時序或電壓偏移參數(shù)。第一訓(xùn)練引擎可對由第二和第三訓(xùn)練引擎執(zhí)行的任務(wù)的執(zhí)行進行定序。
圖1是根據(jù)一些實施方案的包括一個或多個中央處理單元(CPU)105、110處理器核心和圖形處理單元(GPU)115的加速處理單元(APU)100的框圖。APU 100可實施為系統(tǒng)芯片(SOC)。CPU處理器核心105、110可獨立地、同時地或并行地執(zhí)行指令。雖然圖1中所示的APU 100包括兩個CPU處理器核心105、110,但受益于本公開的本領(lǐng)域普通技術(shù)人員應(yīng)了解,APU 100中的處理器核心的數(shù)目與設(shè)計選擇有關(guān)。APU 100的一些實施方案可包括多于或少于圖1中所示的兩個CPU處理器核心105、110。GPU 115用于創(chuàng)建既定用于輸出到顯示器的視覺圖像。GPU 115的一些實施方案還可包括多個處理核心(未示出)。
CPU處理器核心105包括基本輸入/輸出系統(tǒng)(BIOS)120,其可實施于硬件、固件、軟件或其組合中。BIOS 120的一些實施方案用于(例如)響應(yīng)于包括APU 100的系統(tǒng)被通電或啟動而初始化或測試APU100的組件。BIOS 120還可用于加載操作系統(tǒng)??墒褂靡粋€或多個數(shù)據(jù)管道(圖1中未示出)將由BIOS 120產(chǎn)生的指令或命令傳達到APU100中的其它位置。BIOS 120可替代地實施于CPU處理器核心110或APU 100內(nèi)的其它位置中。
圖1中所示的APU 100還包括其它SOC邏輯125。其它SOC邏輯125的一些實施方案可包括DMA引擎(未示出),以便產(chǎn)生地址且初始化存儲器讀取或?qū)懭胙h(huán)、以便執(zhí)行存儲器間的數(shù)據(jù)傳遞,或以便在CPU處理器核心105、110或GPU 115之間傳遞數(shù)據(jù)。其它SOC邏輯125還可包括路由邏輯、相干邏輯,或用于實施其它功能性的邏輯。其它SOC邏輯125的一些實施方案包括存儲器控制器(MC)130來協(xié)調(diào)APU 100與其它存儲器(例如,外部動態(tài)隨機存取存儲器(DRAM)135)之間的數(shù)據(jù)流。存儲器控制器130包括用于控制從外部存儲器讀取信息以及將信息寫入到外部存儲器的邏輯。存儲器控制器130還可包括刷新邏輯,其用于將信息周期性地重新寫入到DRAM,使得保持DRAM的存儲器單元中的信息。DRAM的一些實施方案可為雙倍數(shù)據(jù)速率(DDR)DRAM,在此情況下,存儲器控制器130可能夠在存儲器時鐘的上升沿和下降沿兩者上傳遞去往和來自DRAM的數(shù)據(jù)。
存儲器控制器130可使用經(jīng)由存儲器物理層接口140(其可被稱作存儲器PHY 140)傳輸?shù)男盘杹砜刂评鏒RAM 135等其它存儲器模塊的操作。存儲器PHY 140包括用于驅(qū)動信號的電路,所述信號操縱可耦合到APU 100的其它存儲器模塊的操作。舉例來說,存儲器PHY 140可提供控制例如DRAM 135等存儲器模塊的讀取、寫入、刷新或擦除部分的信號。存儲器PHY 140可能夠在不同操作點處操作,所述操作點可由存儲器PHY 140的操作頻率和/或操作電壓確定。舉例來說,其它SOC邏輯125可包括時鐘145,其提供用于操縱存儲器PHY 140和/或存儲器控制器130和參考電壓(VDD)150中的同步的時鐘信號,所述參考電壓操縱由存儲器PHY 140和/或存儲器控制器130使用的電壓。
應(yīng)該訓(xùn)練存儲器PHY 140以便提高存儲器PHY 140與DRAM135之間的通信期間的讀取或?qū)懭胄阅?。存儲器PHY 140因此包括集成的訓(xùn)練控制邏輯155,其用于:產(chǎn)生訓(xùn)練序列或命令;將訓(xùn)練序列或命令傳輸?shù)紻RAM 135;響應(yīng)于傳輸?shù)挠?xùn)練或命令而接收由DRAM135產(chǎn)生的信號;以及基于來自DRAM 135的響應(yīng)而調(diào)節(jié)存儲器PHY140的讀取/寫入?yún)?shù)。
將訓(xùn)練控制邏輯155集成到存儲器PHY 140中與使用BIOS 120中實施的算法來訓(xùn)練存儲器PHY 140的常規(guī)實踐相比具有若干優(yōu)勢。由于不需要在BIOS 120與存儲器PHY 140之間的數(shù)據(jù)管道上傳輸訓(xùn)練序列,所以可減少或消除對由訓(xùn)練控制邏輯155使用的訓(xùn)練算法的后處理和/或播種。此外,將支持存儲器PHY 140的訓(xùn)練的訓(xùn)練控制邏輯155并入到存儲器PHY 140中顯著沒有設(shè)計BIOS 120來支持存儲器PHY 140的訓(xùn)練那么復(fù)雜。舉例來說,為了設(shè)計BIOS訓(xùn)練算法,必須向負責(zé)設(shè)計BIOS訓(xùn)練算法的工程師導(dǎo)出過多的復(fù)雜存儲器PHY初始化和控制細節(jié)。舉例來說,存儲器PHY 140可包括用于界定時序、鎖定頻率等的數(shù)百個寄存器(出于清楚起見在圖1中未示出),且這些寄存器中的每一者需要以正確序列初始化和存取。BIOS工程師可能不熟悉存儲器PHY 140的操作,或至少顯著沒有負責(zé)設(shè)計存儲器PHY 140的工程師那么熟悉存儲器PHY 140的操作。將設(shè)計存儲器PHY訓(xùn)練算法的責(zé)任放到存儲器PHY工程師的手上可因此導(dǎo)致更有效的設(shè)計,這可進一步減少對訓(xùn)練算法的播種的需要。另外,對多個PHY例子的訓(xùn)練必須序列化,且BIOS資格與新訓(xùn)練代碼的發(fā)布和種子信息的實驗室表征緊密聯(lián)系。此外,在使用BIOS訓(xùn)練算法來訓(xùn)練存儲器PHY 140之前,APU 100中的許多塊可需要經(jīng)過配置且運行來支持BIOS 120與存儲器PHY 140之間的數(shù)據(jù)管道,這可能會增加每個目標平臺的上市時間。
圖2是根據(jù)一些實施方案的包括存儲器PHY 205和DRAM210(例如,圖1中所示的存儲器PHY 140和DRAM 135)的處理單元的一部分200的框圖。存儲器PHY 205包括控制器215,所述控制器用于基于訓(xùn)練算法來控制存儲器PHY 205的讀取訓(xùn)練和寫入訓(xùn)練以便與DRAM 210通信??刂破?15的一些實施方案可實施于硬件、固件、軟件或其組合中。在一些實施方案中,控制器215還可被稱作微控制器215。由于控制器215被集成到存儲器PHY 205中且因此未通過數(shù)據(jù)管道與存儲器PHY 205分開,所以由控制器215實施的訓(xùn)練算法可為無種訓(xùn)練算法。如本文論述,不需要使用表征由訓(xùn)練算法產(chǎn)生的訓(xùn)練序列或命令通過的信號路徑或數(shù)據(jù)管道的信息來配置無種訓(xùn)練算法(例如,用于對所返回的信號的后處理)。控制器215可響應(yīng)于上電、垂直回掃頻率變化、功率狀態(tài)轉(zhuǎn)變(例如,在閑置與活動狀態(tài)之間)、以預(yù)定頻率周期性地,或響應(yīng)于其它事件或信號,而起始訓(xùn)練。
控制器215可與BIOS(例如,圖1中所示的BIOS 120)交互。在一些實施方案中,BIOS可通過加載存儲器陣列(例如,本地靜態(tài)隨機存取存儲器(SRAM))而配置控制器215,從而提供與DRAM 210相關(guān)聯(lián)的配置信息,或響應(yīng)于系統(tǒng)啟動而指令控制器215起始訓(xùn)練序列。然而,一旦已經(jīng)配置控制器215,控制器215的一些實施方案基本上與BIOS獨立地且基本上在沒有來自BIOS的輸入的情況下控制存儲器PHY 205的訓(xùn)練。舉例來說,控制器215實施訓(xùn)練算法,所述訓(xùn)練算法與BIOS獨立地操作且可在不接收來自BIOS的訓(xùn)練命令或訓(xùn)練序列的情況下訓(xùn)練存儲器PHY 205。由于控制器215可在沒有來自BIOS的輸入(其將必須在數(shù)據(jù)管道上從BIOS傳輸?shù)娇刂破?15)的情況下控制存儲器PHY 205的訓(xùn)練,所以可將訓(xùn)練算法實施為無種訓(xùn)練算法。
控制器215耦合到第一訓(xùn)練引擎220,其還可被稱作地址命令狀態(tài)機(ACSM)220。ACSM 220產(chǎn)生命令,所述命令可在存儲器PHY205的訓(xùn)練期間提供給DRAM 210。對于實施于硬件中以作為存儲器PHY 205的集成部分的第一訓(xùn)練引擎220的實施方案,可“全速地”產(chǎn)生可編程命令。所述命令可以按由控制器215確定的序列存儲在寄存器(未示出)中。隨后可響應(yīng)于控制器215將開始位寫入到ACSM 220中的控制寄存器中而向DRAM 210發(fā)出所述命令。由ACSM 220產(chǎn)生的命令可包括用于從DRAM 210中的指定位置讀取信息的讀取命令,和用于將信息寫入到DRAM 210中的指定位置的寫入命令。ACSM 220的一些實施方案可產(chǎn)生將并發(fā)的讀取命令和寫入命令進行組合的環(huán)回命令,其將信號驅(qū)動到存儲器PHY 205的物理引腳,所述信號隨后沿著穿過存儲器PHY 205的路徑返回。環(huán)回命令因此可用于測試存儲器PHY 205,而不需要DRAM 210連接到存儲器PHY205的物理引腳。ACSM 220的一些實施方案可產(chǎn)生循環(huán)命令,所述循環(huán)命令在命令之間的指定延遲下反復(fù)地執(zhí)行一個或多個命令,從而在執(zhí)行期間循環(huán)或重復(fù)單個指令、以序列循環(huán)經(jīng)過多個命令,和類似者。
控制器215還耦合到第二訓(xùn)練引擎225,其可被稱作PRBS模式產(chǎn)生器檢查器(PPGC)225。PPGC 225的一些實施方案是可編程的,且可產(chǎn)生用作用于訓(xùn)練存儲器PHY 205的訓(xùn)練序列的數(shù)據(jù)流。舉例來說,PPGC 225可響應(yīng)于由控制器215提供的信令而產(chǎn)生用于任何16位或更少位的多項式的數(shù)據(jù)流。PPGC 225的一些實施方案包括用于產(chǎn)生訓(xùn)練序列的單獨產(chǎn)生器235,和用于檢查在存儲器PHY 205與DRAM 210之間流動的包括訓(xùn)練序列的讀取流或?qū)懭肓鞯耐降臋z查器230。PPGC 225的操作可由從ACSM 220接收的信令控制。舉例來說,ACSM 220可提供對操作(例如,在產(chǎn)生器235處產(chǎn)生訓(xùn)練序列)的執(zhí)行進行定序的信令。
控制器215還耦合到第三訓(xùn)練引擎,其可被稱作數(shù)據(jù)訓(xùn)練狀態(tài)機(DTSM)240。DTSM 240將從DRAM 210接收的業(yè)務(wù)與提供給DRAM210的訓(xùn)練序列進行比較,以便確定是否調(diào)節(jié)由存儲器PHY 205使用的時序參數(shù)或電壓偏移參數(shù)。舉例來說,PPGC 225可將訓(xùn)練序列的表示提供給DTSM 240以便與在存儲器PHY 205的讀取訓(xùn)練或?qū)懭胗?xùn)練期間從DRAM 210返回的序列進行比較。在開始訓(xùn)練循環(huán)之前,控制器215可配置DTSM 240來控制由存儲器PHY 205使用的時序參數(shù)或電壓偏移參數(shù)。控制器215隨后可對ACSM 220和PPGC 225進行編程來驅(qū)動一個或多個訓(xùn)練序列。DTSM 240隨后可將由PPGC225產(chǎn)生的訓(xùn)練序列與已經(jīng)從DRAM 210接收的序列進行比較。舉例來說,DTSM 240可使訓(xùn)練序列與處于多個不同延遲的接收序列相關(guān)?;谒霰容^,DTSM 240決定是否例如通過遞增或遞減這些參數(shù)中的一或多者而調(diào)節(jié)時序參數(shù)或電壓偏移參數(shù)。舉例來說,可基于根據(jù)訓(xùn)練序列與接收序列的相關(guān)度而確定的延遲來增加或減小時序偏移。DTSM 240的一些實施方案還可實施具有上限閾值或下限閾值比較邏輯的數(shù)據(jù)過濾器或二進制加法器以便訓(xùn)練到數(shù)據(jù)輪廓眼位置。
可使用多組先入先出(FIFO)緩沖器在將訓(xùn)練序列提供給DRAM210之前對訓(xùn)練序列進行緩沖,且在從DRAM 210接收到所接收的序列之后對所接收的序列進行緩沖。舉例來說,可使用一組出站FIFO緩沖器245對出站業(yè)務(wù)進行緩沖,且可使用一組入站FIFO緩沖器250對入站業(yè)務(wù)進行緩沖。可使用一個或多個接收器255在通道上將信號接收到DRAM 210,且將它們提供給入站FIFO緩沖器250??墒褂靡粋€或多個驅(qū)動器260、265在所述通道上將來自出站FIFO緩沖器245的信號傳輸?shù)紻RAM 210。舉例來說,可使用驅(qū)動器260將數(shù)據(jù)(DQ)或時序(DQS)信號驅(qū)動到通道270上,且接收器255可在通道270上接收數(shù)據(jù)(DQ)或時序(DQS)信號。對于另一實例,可使用驅(qū)動器265在通道275上將地址(ADDR)或命令(CMD)驅(qū)動到DRAM 210。可調(diào)節(jié)由接收器255或驅(qū)動器260、265使用的時序延遲和電壓偏移。
存儲器PHY 205包括時序/電壓控制邏輯280。DTSM 240可將信號提供給時序/電壓控制邏輯280來指示對時序參數(shù)的調(diào)節(jié)。舉例來說,DTSM 240可基于提供給DRAM 210的訓(xùn)練序列與從DRAM 210接收的序列的比較而指令時序/電壓控制邏輯280遞增或遞減時序延遲或電壓偏移。時序/電壓控制邏輯280隨后可將控制信號提供給接收器255或驅(qū)動器260、265來調(diào)節(jié)由接收器255或驅(qū)動器260、265使用的時序延遲或電壓偏移。時序/電壓控制邏輯280的一些實施方案可用于調(diào)節(jié)多個級中的時序延遲或電壓偏移,所述多個級例如為接收啟用級、寫入平衡級、讀取訓(xùn)練級、寫入訓(xùn)練級,和用于確定存儲器PHY 205與DRAM 210之間的接口的數(shù)據(jù)眼輪廓的電壓電平的級。
圖3是根據(jù)一些實施方案的可在例如圖1中所示的加速處理單元100等處理單元中實施的訓(xùn)練存儲器PHY的方法300的流程圖。方法300的實施方案可實施于訓(xùn)練控制邏輯中,例如圖1中所示的訓(xùn)練控制邏輯155、或圖2中所示的控制器215、ACSM 220、PPGC 225、DTSM 240和時序/電壓控制邏輯280。
在框305處,所述訓(xùn)練控制邏輯執(zhí)行接收啟用訓(xùn)練來確定何時啟用存儲器PHY在與DRAM的接口上接收數(shù)據(jù)。一些實施方案通過傳輸用于從DRAM讀取選定地址的讀取命令而執(zhí)行接收啟用訓(xùn)練。使用氣泡序列穿插所述讀取命令,所述氣泡在從DRAM接收的信號中產(chǎn)生氣泡的對應(yīng)序列。訓(xùn)練控制邏輯隨后監(jiān)視從DRAM接收的信號,以便使存儲器PHY中的命令產(chǎn)生的時間與來自DRAM的命令響應(yīng)返回到存儲器PHY的時間對準。將氣泡間距時間間隔范圍的大小設(shè)定成大于最差情況往返等待時間加上路徑中的任何內(nèi)部存儲器PHY和DRAM等待時間。這避免了命令響應(yīng)關(guān)聯(lián)與較早或較晚響應(yīng)的任何潛在混疊。存儲器PHY可被配置成在接收啟用訓(xùn)練級期間保持在連續(xù)讀取狀態(tài)中。舉例來說,控制器215可配置ACSM 220、PPGC 225和DTSM 240且隨后起始訓(xùn)練級。ACSM 220可發(fā)出命令/地址以便將訓(xùn)練序列寫入到DRAM 210,且隨后發(fā)出命令/地址以便從DRAM 210讀取回訓(xùn)練序列。在一些實施方案中,實際上響應(yīng)于所發(fā)出的命令沒有將信息寫入到DRAM 210,且忽視了DQ總線。僅監(jiān)視返回的DQS。所發(fā)出的命令因此類似于讀取命令,但DTSM 240不關(guān)心響應(yīng)于所述命令返回了何種數(shù)據(jù)。DTSM 240僅關(guān)注于調(diào)節(jié)從DRAM 210回來的DQS選通的時序。訓(xùn)練序列可由PPGC 225產(chǎn)生且提供給DRAM 210。DTSM 240隨后可使來自DRAM 210的接收數(shù)據(jù)與訓(xùn)練序列相關(guān)以便識別往返延遲,且指令時序/電壓控制邏輯280調(diào)諧適當(dāng)?shù)慕邮掌?驅(qū)動器(例如,接收器255和驅(qū)動器260、265)的參數(shù),以便清除檢測到的往返延遲。
在框310處,訓(xùn)練邏輯執(zhí)行寫入平衡以將存儲器PHY所使用的時鐘信號對準到DRAM所使用的時鐘信號。訓(xùn)練邏輯的一些實施方案因此可傳輸存儲器PHY時鐘信號和時序(DQS)信號,其用于對DRAM處的時鐘的值進行取樣。訓(xùn)練邏輯隨后可使用在DQ總線上返回的DRAM時鐘的取樣值(例如)通過引入延遲來使DQS信號與DRAM內(nèi)部的存儲器時鐘相位對準,而使存儲器PHY時鐘與DRAM時鐘對準。舉例來說,響應(yīng)于來自控制器215的信令,ACSM 220可產(chǎn)生寫入命令,所述寫入命令致使包括上升沿的存儲器PHY時鐘信號與提供給DRAM 210的DQS信號對DRAM中的存儲器時鐘進行取樣。DRAM時鐘的取樣值隨后可返回到存儲器PHY 205。PPGC 225中的檢查器230產(chǎn)生內(nèi)部比較值且將此值提供給DTSM 240。DTSM240隨后可將所述內(nèi)部比較值與從DRAM 210接收的取樣時鐘信號值進行比較,且基于所述比較而產(chǎn)生調(diào)節(jié)信號以使寫入DQS對準到DRAM 210中的時鐘。DTSM 240隨后可指令時序/電壓控制邏輯280調(diào)諧接收器255和驅(qū)動器260、265的時序參數(shù)以便使存儲器PHY時鐘和DRAM時鐘同步。舉例來說,如果內(nèi)部比較值是“0”且DRAM時鐘的取樣值是“1”,那么DTSM 240可指令時序/電壓控制邏輯280將存儲器PHY 205的時序提前預(yù)定時間量。如果內(nèi)部比較值是“1”且DRAM時鐘的取樣值是“1”,那么DTSM 240可指令時序/電壓控制邏輯282將存儲器PHY 205的時序延遲預(yù)定時間量。此過程可迭代以便將存儲器PHY時鐘和DRAM時鐘的同步調(diào)諧到預(yù)定容限內(nèi)。
在框315處,訓(xùn)練邏輯執(zhí)行讀取/寫入相位訓(xùn)練以便基于存儲器PHY與DRAM之間的讀取/寫入數(shù)據(jù)路徑來確定數(shù)據(jù)眼輪廓的一維時間邊界。訓(xùn)練邏輯的一些實施方案可因此傳輸一連串命令以便將訓(xùn)練序列寫入到DRAM中的地址中,且隨后以不同延遲循環(huán)讀取DRAM的所尋址的序列之外的訓(xùn)練序列,以便確定數(shù)據(jù)眼輪廓的一維時間邊界。舉例來說,響應(yīng)于來自控制器215的信令,ACSM 220可發(fā)出命令以便將由PPGC 225產(chǎn)生的一個或多個序列寫入到DRAM 210中的一個或多個地址。ACSM 220隨后可將一連串讀取命令發(fā)出到以不同的延遲值循環(huán)的DRAM 210中的地址。DTSM 240隨后可將所循環(huán)的讀取命令中的每一者的所接收的序列與所提供的訓(xùn)練序列進行比較以便確定數(shù)據(jù)眼輪廓的左邊緣和右邊緣。DTSM 240隨后可指令時序/電壓控制邏輯280調(diào)諧接收器255的時序參數(shù)(例如,相位),從而對應(yīng)于數(shù)據(jù)眼輪廓中的預(yù)定位置,例如左邊緣與右邊緣之間的中點。
在框320處,訓(xùn)練邏輯執(zhí)行二維(2D)讀取/寫入相位訓(xùn)練以便基于存儲器PHY與DRAM之間的讀取/寫入數(shù)據(jù)路徑來確定數(shù)據(jù)眼輪廓的電壓電平。訓(xùn)練邏輯的一些實施方案因此可傳輸一連串讀取/寫入命令以便讀取和寫入去往和來自DRAM的訓(xùn)練序列??墒褂貌煌臅r序延遲和不同的電壓偏移執(zhí)行所述一連串讀取/寫入命令以便確定數(shù)據(jù)眼輪廓中的電壓電平。舉例來說,響應(yīng)于來自控制器215的信令,ACSM 220可發(fā)出命令以便使用初始時序延遲將由PPGC 225產(chǎn)生的一個或多個序列寫入到DRAM 210中的一個或多個地址。ACSM220隨后可將一連串循環(huán)讀取命令發(fā)出到DRAM 210中的地址??膳c將不同的電壓偏移值提供給接收器255或驅(qū)動器260、265同時地發(fā)出讀取/寫入命令。DTSM 240隨后可將所循環(huán)的讀取命令中的每一者的所接收的序列與所提供的訓(xùn)練序列進行比較以便針對初始時序延遲確定數(shù)據(jù)眼輪廓的左邊緣與右邊緣之間的電壓電平??筛淖?例如,遞增或遞減)所述時序延遲且可重復(fù)確定電壓電平的過程。可迭代此過程以便確定時序延遲和電壓電平范圍上的二維數(shù)據(jù)眼輪廓。一些實施方案可替代地迭代地選擇電壓電平且循環(huán)經(jīng)過選定電壓電平的時序延遲來確定二維數(shù)據(jù)眼輪廓。
DTSM 240指令時序/電壓控制邏輯280調(diào)諧接收器255或驅(qū)動器260、265的時序延遲和電壓偏移,以便對應(yīng)于數(shù)據(jù)眼輪廓中的提供最佳電壓電平和時序延遲的位置。可基于取樣訓(xùn)練數(shù)據(jù)中的正確樣本和不正確樣本的數(shù)目來確定對時序延遲或電壓偏移的調(diào)節(jié)。DTSM240的一些實施方案可基于取樣訓(xùn)練數(shù)據(jù)中的正確樣本與不正確樣本的預(yù)定比率來確定最佳的時序延遲和電壓偏移。舉例來說,DTSM 240可調(diào)諧時序延遲和電壓偏移,直到由存儲器PHY 205接收的正確樣本與不正確樣本的數(shù)目的比率處于或低于預(yù)定比率為止。DTSM 240的一些實施方案可在可確定更好的最佳訓(xùn)練位置的預(yù)期下使用所述預(yù)定比率來更改數(shù)據(jù)眼輪廓的形狀。舉例來說,可基于預(yù)定比率來擴大或收縮2D眼輪廓。對2-D數(shù)據(jù)眼輪廓的形狀的其它更改也是可能的。
本文所描述的技術(shù)的實施方案與在系統(tǒng)BIOS中實施且必須在數(shù)據(jù)管道上傳達給存儲器PHY的常規(guī)訓(xùn)練算法相比具有若干優(yōu)勢。集成的訓(xùn)練邏輯的一些實施方案可減少總訓(xùn)練時間,或允許在實施越來越復(fù)雜的訓(xùn)練序列的同時維持基本上恒定的訓(xùn)練時間。將訓(xùn)練邏輯集成到存儲器PHY中允許將高速命令/數(shù)據(jù)產(chǎn)生和控制定位成靠近存儲器PHY數(shù)據(jù)管道,這允許對訓(xùn)練序列的細粒度控制等。訓(xùn)練邏輯的實施方案還可通過強制固件算法開發(fā)與硬件機構(gòu)設(shè)計之間的更緊密耦合來增強無種訓(xùn)練。還可針對不同的存儲器PHY例子并行地執(zhí)行訓(xùn)練。當(dāng)將訓(xùn)練邏輯集成到存儲器PHY中時,硅系統(tǒng)調(diào)試和硬件初啟過程可更容易實施。
當(dāng)將訓(xùn)練邏輯集成到存儲器PHY中時,還可改進設(shè)計過程。舉例來說,可與SOC的剩余部分獨立地開發(fā)并測試用于存儲器PHY的訓(xùn)練硬件和訓(xùn)練算法??稍赟OC中的存儲器PHY與其它邏輯之間的邊界處含有系統(tǒng)復(fù)雜性和存儲器PHY行為的細節(jié)。系統(tǒng)配置還可支持從RTL模擬自然擴展到集成訓(xùn)練算法開發(fā)環(huán)境中。另外,用于存儲器PHY和對應(yīng)訓(xùn)練算法的訓(xùn)練硬件可封裝為跨越多個SOC(包括第三方SOC)的完整IP。
在一些實施方案中,上文所描述的設(shè)備和技術(shù)實施于包括一個或多個集成電路(IC)裝置(還被稱作集成電路封裝或微芯片)(例如,上文參考圖1到3所描述的存儲器PHY)的系統(tǒng)中??稍谶@些IC裝置的設(shè)計和制造中使用電子設(shè)計自動化(EDA)和計算機輔助設(shè)計(CAD)軟件工具。這些設(shè)計工具通常表示為一個或多個軟件程序。所述一個或多個軟件程序包括可由計算機系統(tǒng)執(zhí)行以進行以下操作的代碼:操縱計算機系統(tǒng)對表示一個或多個IC裝置的電路的代碼進行操作,以便執(zhí)行用于設(shè)計或調(diào)適制造系統(tǒng)來制造電路的過程的至少一部分。此代碼可包括指令、數(shù)據(jù)或指令與數(shù)據(jù)的組合。表示設(shè)計工具或制造工具的軟件指令通常存儲在計算系統(tǒng)可存取的計算機可讀存儲媒體中。同樣,表示IC裝置的設(shè)計或制造的一個或多個階段的代碼可存儲在同一計算機可讀存儲媒體或不同計算機可讀存儲媒體中且從所述計算機可讀存儲媒體進行存取。
計算機可讀存儲媒體可包括可由計算機系統(tǒng)在使用期間存取以便將指令和/或數(shù)據(jù)提供給計算機系統(tǒng)的任何存儲媒體,或存儲媒體的組合。此類存儲媒體可包括(但不限于)光學(xué)媒體(例如,壓縮光盤(CD)、數(shù)字多功能光盤(DVD)、藍光光盤)、磁性媒體(例如,軟盤、磁帶或磁性硬盤驅(qū)動器)、易失性存儲器(例如,隨機存取存儲器(RAM)或高速緩沖存儲器)、非易失性存儲器(例如,只讀存儲器(ROM)或快閃存儲器),或基于微機電系統(tǒng)(MEMS)的存儲媒體。計算機可讀存儲媒體可嵌入計算系統(tǒng)(例如,系統(tǒng)RAM或ROM)中、固定地附接到計算系統(tǒng)(例如,磁性硬盤驅(qū)動器)、可移除地附接到計算系統(tǒng)(例如,光盤或基于通用串行總線(USB)的快閃存儲器),或經(jīng)由有線或無線網(wǎng)絡(luò)耦合到計算機系統(tǒng)(例如,網(wǎng)絡(luò)可存取存儲裝置(NAS))。
圖4是示出用于設(shè)計和制造實施根據(jù)一些實施方案的一個或多個方面的IC裝置的示例性方法400的流程圖。如上文所述,針對以下過程中的每一者所產(chǎn)生的代碼存儲在或以其它方式體現(xiàn)在非暫時性計算機可讀存儲媒體中以供對應(yīng)的設(shè)計工具或制造工具存取和使用。
在框402處,產(chǎn)生IC裝置的功能規(guī)范??赏ㄟ^多種編程語言或建模語言(包括C、C++、SystemC、Simulink或MATLAB)中的任一者來表示所述功能規(guī)范(常常被稱作微型架構(gòu)規(guī)范(MAS))。
在框404處,使用所述功能規(guī)范來產(chǎn)生表示IC裝置的硬件的硬件描述代碼。在一些實施方案中,使用至少一種硬件描述語言(HDL)來表示所述硬件描述代碼,所述硬件描述語言包括多種計算機語言、規(guī)范語言,或用于IC裝置的電路的規(guī)范化描述和設(shè)計的建模語言中的任一者。所產(chǎn)生的HDL代碼通常表示IC裝置的電路的操作、電路的設(shè)計和組織,以及用于通過模擬來驗證IC裝置的正確操作的測試。HDL的實例包括模擬HDL(AHDL)、Verilog HDL、SystemVerilog HDL和VHDL。對于實施同步數(shù)字電路的IC裝置,硬件描述符代碼可包括寄存器傳遞級(RTL)代碼來提供對同步數(shù)字電路的操作的抽象表示。對于其它類型的電路,硬件描述符代碼可包括行為級代碼來提供電路操作的抽象表示。由硬件描述代碼表示的HDL模型通常經(jīng)受一輪或多輪的模擬和調(diào)試來通過設(shè)計驗證。
在驗證由硬件描述代碼表示的設(shè)計之后,在框406處,使用合成工具來合成硬件描述代碼以便產(chǎn)生表示或界定IC裝置的電路的初始物理實現(xiàn)方式的代碼。在一些實施方案中,所述合成工具產(chǎn)生一個或多個網(wǎng)表,其包括電路裝置例子(例如,門、晶體管、電阻器、電容器、電感器、二極管等)以及電路裝置例子之間的網(wǎng)或連接。替代地,可在不使用合成工具的情況下手動地產(chǎn)生網(wǎng)表的全部或一部分。與硬件描述代碼一樣,網(wǎng)表可經(jīng)受一個或多個測試和驗證過程,之后產(chǎn)生最終的一組一個或多個網(wǎng)表。
替代地,可使用示意性編輯器工具起草IC裝置的電路的示意圖,且隨后可使用示意性捕獲工具捕獲所得的電路圖,且產(chǎn)生表示電路圖的組件和連接性的一個或多個網(wǎng)表(存儲在計算機可讀媒體上)。所捕獲的電路圖隨后可經(jīng)受一輪或多輪模擬來進行測試和驗證。
在框408處,一個或多個EDA工具使用在框406處產(chǎn)生的網(wǎng)表來產(chǎn)生表示IC裝置的電路的存儲器物理布局的代碼。此過程可包括(例如)放置工具,其使用網(wǎng)表來確定或固定IC裝置的電路的每個元件的位置。此外,布線工具依賴放置過程而添加并布線根據(jù)網(wǎng)表連接電路元件所需的電線。所得的代碼表示IC裝置的三維模型??梢詳?shù)據(jù)庫文件格式(例如,圖形數(shù)據(jù)庫系統(tǒng)II(GDSII)格式)表示所述代碼。呈此格式的數(shù)據(jù)通常表示幾何形狀、文本標記,和關(guān)于呈分層形式的電路布局的其它信息。
在框410處,將存儲器物理布局代碼(例如,GDSII代碼)提供給制造設(shè)施,所述制造設(shè)施使用存儲器物理布局代碼來配置或以其它方式調(diào)適制造設(shè)施的制造工具(例如,通過掩模工具)來制造IC裝置。也就是說,可將存儲器物理布局代碼編程到一個或多個計算機系統(tǒng)中,所述一個或多個計算機系統(tǒng)隨后可完全地或部分地控制制造設(shè)施的工具的操作,或其中執(zhí)行的制造操作。
在一些實施方案中,上文所描述的技術(shù)的某些方面可由執(zhí)行軟件的處理系統(tǒng)的一個或多個處理器實施。所述軟件包括存儲在或另外有形地體現(xiàn)在非暫時性計算機可讀存儲媒體上的一組或多組可執(zhí)行命令。所述軟件可包括命令和某些數(shù)據(jù),其當(dāng)由一個或多個處理器執(zhí)行時會操縱所述一個或多個處理器執(zhí)行上文所描述的技術(shù)的一個或多個方面。所述非暫時性計算機可讀存儲媒體可包括(例如)磁盤或光盤存儲裝置、固態(tài)存儲裝置,例如快閃存儲器、高速緩沖存儲器、隨機存取存儲器(RAM),或其它非易失性存儲器裝置,和類似者。存儲在非暫時性計算機可讀存儲媒體上的可執(zhí)行命令可呈由一個或多個處理器解譯或可以其它方式執(zhí)行的源代碼、匯編語言代碼、目標代碼,或其它命令格式。
應(yīng)注意,不需要上文在一般描述中所描述的所有活動或要素、可能不需要特定活動或裝置的一部分,且可執(zhí)行一個或多個其它活動,或包括除了所描述的要素之外的要素。此外,列舉活動的次序不一定是執(zhí)行活動的次序。而且,已經(jīng)參考特定實施方案描述了概念。然而,本領(lǐng)域技術(shù)人員應(yīng)了解,可在不脫離所附權(quán)利要求書中所陳述的本公開的范圍的情況下作出各種修改和改變。因此,可在說明性意義而不是限制性意義上對待說明書和圖,且希望所有此類修改包括在本公開的范圍內(nèi)。
上文已關(guān)于特定實施方案描述了益處、其它優(yōu)勢和問題的解決方案。然而,這些益處、優(yōu)勢、問題的解決方案以及可導(dǎo)致任何益處、優(yōu)勢或解決方案發(fā)生或變得更加突出的任何特征不應(yīng)被解釋為任何或所有權(quán)利要求的關(guān)鍵、所需或?qū)嵸|(zhì)特征。另外,上文公開的特定實施方案僅是說明性的,因為所公開的標的可以按受益于本文教示的益處的本領(lǐng)域技術(shù)人員顯而易見的不同但等效的方式加以修改和實踐。除了所附權(quán)利要求書中所描述的內(nèi)容之外,不希望對本文示出的構(gòu)造或設(shè)計的細節(jié)進行限制。因此顯然的是,可更改或修改上文所公開的特定實施方案,且所有此類變化都被視為在所公開的標的的范圍內(nèi)。因此,本文尋求的保護在所附權(quán)利要求書中予以陳述。