專利名稱:自動(dòng)硬件數(shù)據(jù)鏈路初始化方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及在兩個(gè)設(shè)備之間的總線上交換數(shù)據(jù)分組,更具體地,本發(fā)明涉及自動(dòng)初始化兩個(gè)設(shè)備上的通信接口。
背景技術(shù):
為了形成一個(gè)完整(或者近似完整)的系統(tǒng),芯片上系統(tǒng)(SOC)一般在單個(gè)芯片上包括一個(gè)或多個(gè)集成的處理器核心;某類嵌入存儲(chǔ)器,如處理器核心之間共享的緩存;以及外圍接口,如外部總線接口。外部總線接口常用于通過(guò)這些系統(tǒng)和外部設(shè)備如外部存儲(chǔ)控制器或者圖形處理單元(GPU)之間的外部總線傳遞分組中的數(shù)據(jù)。為了提高系統(tǒng)性能,這種設(shè)備之間的數(shù)據(jù)傳輸率已經(jīng)穩(wěn)定增長(zhǎng)了多年。
遺憾的是,隨著設(shè)備之間的數(shù)據(jù)傳輸率增長(zhǎng),設(shè)備之間傳輸?shù)臄?shù)據(jù)的字節(jié)可變得偏離(skew),這是由于不同的原因,如內(nèi)部電容、用在不同設(shè)備上的驅(qū)動(dòng)器和/或接收器的不同、內(nèi)部總線路徑的不同路由等。這種偏離可導(dǎo)致從一個(gè)設(shè)備傳輸?shù)臄?shù)據(jù)被另一個(gè)設(shè)備錯(cuò)誤地讀取。這種失準(zhǔn)可導(dǎo)致不正確組合的數(shù)據(jù)饋入處理器核心,這可具有不可預(yù)測(cè)的結(jié)果和可能的災(zāi)難性的效果。
最小化這類偏離的一種方法是執(zhí)行軟件控制下的某種類型的訓(xùn)練,由此可調(diào)整一個(gè)設(shè)備的內(nèi)部驅(qū)動(dòng)器和/或接收器,而另一個(gè)設(shè)備輸出特別設(shè)計(jì)的數(shù)據(jù)分組(例如具有已知數(shù)據(jù)模式)。遺憾的是,在可執(zhí)行這種軟件代碼前,可能存在充分的延遲(例如在系統(tǒng)上電周期后)。進(jìn)而,在軟件中執(zhí)行這種訓(xùn)練可不希望地延遲或者中斷實(shí)際應(yīng)用代碼的執(zhí)行。如果鏈路沒有被自動(dòng)訓(xùn)練,還存在由于不能從存儲(chǔ)器通過(guò)鏈路取得應(yīng)用代碼而可導(dǎo)致的潛在問(wèn)題。
因此,需要的是用于自動(dòng)訓(xùn)練和激活設(shè)備之間的通信鏈路的方法和裝置,最好具有少的或沒有軟件干預(yù)。
發(fā)明內(nèi)容
本發(fā)明一般地提供用于自動(dòng)訓(xùn)練和激活兩個(gè)或多個(gè)設(shè)備之間的通信鏈路的方法和裝置。
一個(gè)實(shí)施例提供一種訓(xùn)練本地設(shè)備的方法,用于在沒有軟件干預(yù)的情況下通過(guò)通信鏈路與遠(yuǎn)程設(shè)備通信。該方法在硬件控制下一般包括(a)從本地設(shè)備通過(guò)通信鏈路將多個(gè)第一預(yù)定義的分組傳輸?shù)竭h(yuǎn)程設(shè)備;(b)對(duì)一個(gè)或更多的第一預(yù)定義的數(shù)據(jù)分組監(jiān)視通信鏈路,該第一預(yù)定義的數(shù)據(jù)分組從遠(yuǎn)程設(shè)備通過(guò)通信鏈路被傳輸?shù)奖镜卦O(shè)備;(c)從本地設(shè)備通過(guò)通信鏈路向遠(yuǎn)程設(shè)備傳輸包括由第二預(yù)定義的分組跟隨的多個(gè)第一預(yù)定義的分組的同步序列,以響應(yīng)由本地設(shè)備從遠(yuǎn)程設(shè)備接收一個(gè)或更多的第一預(yù)定義的數(shù)據(jù)分組;以及(d)只在從遠(yuǎn)程設(shè)備接收指示遠(yuǎn)程設(shè)備被訓(xùn)練的一個(gè)或更多的第二預(yù)定義的分組之后,允許在軟件控制下的分組交換。
另一實(shí)施例提供一種訓(xùn)練用于通過(guò)鏈路通信的兩個(gè)設(shè)備的方法。該方法一般包括在每個(gè)設(shè)備中進(jìn)行初始硬件控制的鏈路訓(xùn)練,以補(bǔ)償在通過(guò)鏈路傳輸?shù)臄?shù)據(jù)比特間的偏離;在各設(shè)備間進(jìn)行硬件控制的握手以指示成功的鏈路訓(xùn)練;以及在每個(gè)設(shè)備中進(jìn)行周期的硬件控制的鏈路訓(xùn)練,以定期地對(duì)在通過(guò)鏈路傳輸?shù)臄?shù)據(jù)比特間的偏離進(jìn)行調(diào)整。
另一實(shí)施例提供一種自初始化總線接口,用于在包括總線接口的第一設(shè)備和第二設(shè)備間通過(guò)通信鏈路通信。自初始化總線接口一般包括硬件狀態(tài)機(jī),配置于在鏈路訓(xùn)練狀態(tài)期間將第一預(yù)定的分組傳輸?shù)降诙O(shè)備,并且轉(zhuǎn)變?yōu)榧せ顮顟B(tài),以響應(yīng)檢測(cè)從第二設(shè)備接收的第二預(yù)定的分組,指示第二設(shè)備被訓(xùn)練。
另一實(shí)施例提供一種系統(tǒng),該系統(tǒng)一般包括具有多條并行比特線的總線;第一處理設(shè)備;以及第二處理設(shè)備,經(jīng)由總線與第一處理設(shè)備耦合。在每個(gè)第一和第二處理設(shè)備上的自初始化總線接口一般配置于在沒有軟件交互的情況下進(jìn)行初始鏈路訓(xùn)練以補(bǔ)償通過(guò)鏈路傳輸?shù)臄?shù)據(jù)比特間的偏離,與另一設(shè)備的握手以指示成功的鏈路訓(xùn)練,以及周期鏈路訓(xùn)練以對(duì)在通過(guò)總線傳輸?shù)臄?shù)據(jù)比特間的偏離進(jìn)行調(diào)整。
所以通過(guò)參照在附圖中圖示的本發(fā)明的實(shí)施例,可以進(jìn)行以上簡(jiǎn)單概述的本發(fā)明的更具體的說(shuō)明,并可詳細(xì)理解實(shí)現(xiàn)本發(fā)明的上述特征、優(yōu)點(diǎn)和目的。
然而,要注意的是,附圖僅僅圖示本發(fā)明的典型實(shí)施例,因此不被視為限制其范圍,因?yàn)楸景l(fā)明可允許其它等效實(shí)施例。
圖1說(shuō)明其中可應(yīng)用本發(fā)明的各實(shí)施例的包括中央處理單元(CPU)的示范系統(tǒng)。
圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例的通信接口的框圖。
圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、對(duì)應(yīng)于鏈路訓(xùn)練狀態(tài)機(jī)的狀態(tài)圖。
圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于自動(dòng)鏈路訓(xùn)練的示范操作的流程圖。
圖5是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于在本地和遠(yuǎn)程設(shè)備上執(zhí)行的自動(dòng)鏈路訓(xùn)練的示范操作的圖。
具體實(shí)施例方式
本發(fā)明的原理提供可用于自動(dòng)訓(xùn)練和激活兩個(gè)或多個(gè)設(shè)備之間的通信鏈路的方法和裝置。在一些實(shí)施例中,一個(gè)或多個(gè)狀態(tài)機(jī)可用于監(jiān)視和控制自動(dòng)訓(xùn)練和激活期間的接收和傳輸邏輯的動(dòng)作,從而減少或者消除了軟件干預(yù)的需要。結(jié)果,訓(xùn)練和激活可通過(guò)上電周期后的很少延遲而開始。
如這里使用的,術(shù)語(yǔ)狀態(tài)機(jī)一般指系統(tǒng)中的對(duì)象,其經(jīng)過(guò)定義序列的狀態(tài),以響應(yīng)各種事件,每個(gè)狀態(tài)常由特定的可觀察的動(dòng)作指示,如信號(hào)產(chǎn)生。本發(fā)明的各實(shí)施例將參照實(shí)現(xiàn)為硬件部件的狀態(tài)機(jī)來(lái)描述,各硬件部件響應(yīng)各種事件,一般產(chǎn)生用于控制其它一些部件的動(dòng)作的一個(gè)或多個(gè)信號(hào)。然而,狀態(tài)機(jī)的各種動(dòng)作可通過(guò)軟件控制的寄存器來(lái)確定,如用于保存可調(diào)整閾計(jì)數(shù)器值或者期滿周期的寄存器。
進(jìn)而,在下面的說(shuō)明中參考本發(fā)明的各實(shí)施例。然而,應(yīng)該理解,本發(fā)明不限于具體描述的各實(shí)施例。而是,下面的特征和組件的任何組合,無(wú)論是否涉及不同的實(shí)施例,被視為可實(shí)現(xiàn)和實(shí)施本發(fā)明。而且,在各種實(shí)施例中,本發(fā)明相對(duì)現(xiàn)有技術(shù)提供許多優(yōu)點(diǎn)。然而,雖然本發(fā)明的各實(shí)施例可取得相對(duì)其它可能方案和/或現(xiàn)有技術(shù)的優(yōu)點(diǎn),但通過(guò)一個(gè)給定實(shí)施例是否取得特定優(yōu)點(diǎn)并不限制本發(fā)明。因此,如下各方面、特征、實(shí)施例和優(yōu)點(diǎn)僅僅是示例性的,除非明白表示,不視為權(quán)利要求的部分或者限制。
示范系統(tǒng)圖1說(shuō)明包括中央處理單元(CPU)110的示范計(jì)算機(jī)系統(tǒng)100,其中可使用本發(fā)明的實(shí)施例。如所示,CPU110可包括一個(gè)或更多的處理器核心112,其每個(gè)可包括任意數(shù)量的不同類型功能單元,該功能單元包括但不限于各算術(shù)邏輯單元(ALU)、各浮點(diǎn)單元(FPU)和各單指令多數(shù)據(jù)(SIMD)單元。使用多個(gè)處理器核心的CPU的示例包括CPU的Power PC線,其可從國(guó)際商業(yè)機(jī)器公司(IBM)得到。
如圖示,每個(gè)處理器核心112可訪問(wèn)其自身的一級(jí)(L1)緩存114以及更大的共享二級(jí)(L2)緩存116。一般地,由處理器核心112使用的數(shù)據(jù)拷貝可本地地存儲(chǔ)在L2緩存116中,防止或減少對(duì)外部主存儲(chǔ)器140的相對(duì)慢的訪問(wèn)數(shù)量。類似地,由處理器核心經(jīng)常使用的數(shù)據(jù)可存儲(chǔ)在其L1緩存114中,防止或減少對(duì)L2緩存116的相對(duì)減慢訪問(wèn)數(shù)量。
CPU110可經(jīng)由系統(tǒng)或前端總線(FSB)128與各外部設(shè)備通信,外部設(shè)備如圖形處理單元(GPU)130和/或存儲(chǔ)控制器136。CPU110可包括FSB接口120,以在各外部設(shè)備與各處理核心112間(通過(guò)L2緩存)經(jīng)由FSB128傳遞數(shù)據(jù)。在GPU130上的FSB接口132可具有與FSB接口120類似的部件,被配置用于與一個(gè)或更多的圖形處理器134、輸入輸出(I/O)單元138和存儲(chǔ)控制器136(圖示說(shuō)明為與GPU130集成)經(jīng)由總線接口單元(BIU)135交換數(shù)據(jù)。
如所示,F(xiàn)SB接口120可包括物理層122、鏈路層124和處理層126。物理層122可包括各硬件部件,用于實(shí)現(xiàn)通過(guò)FSB128接收和發(fā)送數(shù)據(jù)所需要的硬件協(xié)議。物理層122可與鏈路層124交換數(shù)據(jù),鏈路層124可格式化從處理層126接收或要發(fā)送到處理層126的數(shù)據(jù)。處理層126可與處理器核心112經(jīng)由核心總線接口(CBI)118交換數(shù)據(jù)。對(duì)一些實(shí)施例,可通過(guò)FSB發(fā)送數(shù)據(jù)作為分組。因此,鏈路層124可包括電路(未顯示),配置該電路以編碼為分組或“分組化”從處理層126接收的數(shù)據(jù),并且解碼從物理層122接收的數(shù)據(jù)分組。
自動(dòng)鏈路初始化如前述,在CPU110和GPU130之間通過(guò)FSB128(或各設(shè)備之間任何其它類型的高速接口)傳輸?shù)臄?shù)據(jù)字節(jié)可變得偏離,這是由于不同的原因,如內(nèi)部電容、內(nèi)部部件中的不同(如驅(qū)動(dòng)器和接收器)、內(nèi)部數(shù)據(jù)路徑的不同路由等。為了補(bǔ)償這樣的偏離,兩個(gè)設(shè)備都可使用某類機(jī)制(如該機(jī)制可一起工作),以自動(dòng)訓(xùn)練且激活各通信鏈路。這里描述的架構(gòu)可用于在鏈路的兩側(cè)之間達(dá)到并維持同步(這里也稱為鏈路訓(xùn)練),包括每個(gè)設(shè)備可指示其它設(shè)備其被同步的握手協(xié)議。
例如,如在圖2中所示,鏈路層124可包括一個(gè)或更多的狀態(tài)機(jī)230,一般地配置其監(jiān)視本地物理層122,以及與本地設(shè)備通信的遠(yuǎn)程設(shè)備的物理層(如在GPU130的FSB接口132中的物理層)。雖然只顯示通信鏈路的一側(cè)(CPU120側(cè)),但應(yīng)當(dāng)理解在鏈路的另一側(cè)(如GPU130側(cè))可執(zhí)行類似操作。如所示,狀態(tài)機(jī)230也可分別地監(jiān)視并控制在鏈路層124中的鏈路傳輸和接收邏輯210和220,以及用于保存向和從鏈路層124傳輸?shù)臄?shù)據(jù)的彈性緩沖區(qū)202。一般而言,術(shù)語(yǔ)彈性緩沖區(qū)指這樣的緩沖區(qū)其具有可調(diào)整的大小和/或延遲,以依靠鏈路層能多么迅速地填充或卸載(unload)數(shù)據(jù),而對(duì)變化的時(shí)間量保存變化的數(shù)據(jù)量。
如所示,可提供比特去偏離部件204以補(bǔ)償在接收的數(shù)據(jù)的比特間的偏離。如,通過(guò)多路復(fù)用各種時(shí)間延遲版本的比特信號(hào)以消除偏離,可達(dá)到合適的比特對(duì)準(zhǔn)。對(duì)于一些實(shí)施例,在這里稱為物理同步(Phy-Sync)分組214的已知的數(shù)據(jù)分組由在鏈路的另一端的設(shè)備傳輸時(shí),比特去偏離部件204可自動(dòng)調(diào)整每個(gè)比特以達(dá)到合適的對(duì)準(zhǔn)。物理同步也可涉及使用摸擬相位檢測(cè)電路將每個(gè)單獨(dú)的數(shù)據(jù)比特對(duì)準(zhǔn)與數(shù)據(jù)傳輸?shù)臅r(shí)鐘信號(hào)。換言之,在各單獨(dú)的比特線上的信號(hào)實(shí)際上被延遲,以便合適地將其對(duì)準(zhǔn)滯后其的一個(gè)或更多的比特信號(hào)。對(duì)各種比特信號(hào)可進(jìn)行這些調(diào)整,直到產(chǎn)生的字節(jié)匹配在Phy-Sync分組中傳輸?shù)囊阎J?。?duì)一些實(shí)施例,在一個(gè)或更多的狀態(tài),狀態(tài)機(jī)230可生成一個(gè)或更多的信號(hào),導(dǎo)致鏈路傳輸邏輯210傳輸Phy-Sync分組流,允許對(duì)遠(yuǎn)程設(shè)備的物理層的類似調(diào)整。
示范的鏈路初始化狀態(tài)圖3是根據(jù)本發(fā)明的一實(shí)施例,說(shuō)明對(duì)應(yīng)于狀態(tài)機(jī)230的各種狀態(tài)的狀態(tài)圖300。如所示,狀態(tài)機(jī)230可開始在禁用狀態(tài)302直到確定ENABLED信號(hào)。雖未顯示,但應(yīng)注意,如果未確定ENABLED信號(hào),那么顯示的每種狀態(tài)(鏈路訓(xùn)練304、鏈路同步306和鏈路激活308和鏈路未激活310)也可直接轉(zhuǎn)變?yōu)榻脿顟B(tài)。也應(yīng)注意的是,對(duì)于一些實(shí)施例,可假定鏈路始終處于操作中并且可去除禁用狀態(tài)302。對(duì)于禁用狀態(tài)的各實(shí)施例,在缺少穩(wěn)定(如反跳(debounced)某段時(shí)間)的功率信號(hào)時(shí)或在ENABLED信號(hào)在程序控制下(如經(jīng)由可由程序代碼訪問(wèn)的控制寄存器)未確定(de-assert)時(shí),F(xiàn)SB接口120可保留在該狀態(tài)。如所示,在禁用時(shí),鏈路可從禁用狀態(tài)302轉(zhuǎn)變?yōu)殒溌酚?xùn)練狀態(tài)304。
在鏈路訓(xùn)練狀態(tài)304,可調(diào)整物理層122的硬件(驅(qū)動(dòng)器和接收器)來(lái)匹配在鏈路另一端的遠(yuǎn)程設(shè)備的硬件(例如為合適的比特/字節(jié)去偏離和時(shí)鐘對(duì)準(zhǔn)而調(diào)整)。進(jìn)入該狀態(tài)后,鏈路傳輸邏輯210開始傳輸Phy-Sync分組214的連續(xù)流,啟用遠(yuǎn)程設(shè)備硬件的訓(xùn)練。鏈路接收邏輯220也被啟用并且開始尋找從遠(yuǎn)程設(shè)備接收的Phy-Sync分組的訓(xùn)練過(guò)程。物理層122可保留在該狀態(tài),而沒有Phy-Sync分組214從遠(yuǎn)程設(shè)備接收,并且如果禁用ENABLED信號(hào)就可以轉(zhuǎn)換回禁用狀態(tài)。
對(duì)于一些實(shí)施例,在遠(yuǎn)程設(shè)備開始傳輸Phy-Sync分組(指示遠(yuǎn)程設(shè)備也已進(jìn)入鏈路訓(xùn)練狀態(tài))時(shí),并且在成功訓(xùn)練本地設(shè)備的物理鏈路122的接收器硬件時(shí),發(fā)生從鏈路訓(xùn)練狀態(tài)304到鏈路同步狀態(tài)306的轉(zhuǎn)變。對(duì)于一些實(shí)施例,例如,在去偏離邏輯204對(duì)比特對(duì)準(zhǔn)已適當(dāng)調(diào)整導(dǎo)致檢測(cè)Phy-Sync分組時(shí),通過(guò)確定PHY_LINK_TRAINED信號(hào),物理層硬件可指示成功的訓(xùn)練。可替代地,在一些預(yù)定數(shù)量的Phy-Sync分組已被接收并且計(jì)數(shù)時(shí),鏈路接收邏輯220可確定已訓(xùn)練成功。
在鏈路同步狀態(tài)306,鏈路傳輸邏輯210可傳輸包括一些數(shù)量(M)的Phy-Sync分組的同步序列(Sync序列),其后跟隨著具有已知數(shù)據(jù)模式的不同類型的分組(顯示為圖2中的鏈路同步分組216)。對(duì)于一些實(shí)施例,Phy-Sync和鏈路同步分組的區(qū)別可能僅在于一些小量的比特值。無(wú)論如何,傳輸鏈路同步分組向遠(yuǎn)程設(shè)備指示本地設(shè)備被訓(xùn)練。類似地,從遠(yuǎn)程設(shè)備接收鏈路同步分組指示遠(yuǎn)程設(shè)備被訓(xùn)練。對(duì)于一些實(shí)施例,鏈路接收邏輯220可通過(guò)確定LINK_SYNC_RECEIVED信號(hào)指示接收鏈路同步分組,導(dǎo)致傳輸?shù)芥溌芳せ顮顟B(tài)308。
鏈路激活狀態(tài)308指示鏈路兩側(cè)的物理和鏈路層122和124已進(jìn)行必要的握手,以確認(rèn)其相互間可傳送信息。因此,在這種狀態(tài),分組可任意在本地和遠(yuǎn)程設(shè)備間傳送。由于由環(huán)境因素導(dǎo)致的各驅(qū)動(dòng)器、接收器和布線的時(shí)間變化,本地和遠(yuǎn)程設(shè)備可處于放棄同步的危險(xiǎn)中(由于比特偏離)。因此,為了維持同步并且停留在鏈路激活狀態(tài)308,可要求在鏈路上的每個(gè)設(shè)備定期地傳輸同步序列(由鏈路同步分組跟隨的M個(gè)Phy-Sync分組),從而允許鏈路硬件的周期調(diào)整。對(duì)于一些實(shí)施例,如果在某期滿周期內(nèi)(如可調(diào)整的鏈路同步期滿周期)周期同步序列沒有被接收,可開始鏈路的重新訓(xùn)練。
例如,如果沒有在預(yù)定的鏈路同步期滿周期內(nèi)接收同步序列,就可發(fā)生到鏈路未激活狀態(tài)的轉(zhuǎn)變。如果ENABLED信號(hào)仍被確定,就可發(fā)生從鏈路未激活狀態(tài)310回到鏈路訓(xùn)練狀態(tài)304的轉(zhuǎn)變,否則可發(fā)生回到禁用狀態(tài)302的轉(zhuǎn)變。對(duì)于一些實(shí)施例,鏈路未激活狀態(tài)310是可選的并且可去除。
示范的鏈路訓(xùn)練操作圖4是說(shuō)明示范操作400的流程圖,示范操作400相對(duì)在圖3中說(shuō)明的每個(gè)狀態(tài)在本地設(shè)備進(jìn)行。操作400在步驟402開始,如系統(tǒng)功率增加(powerup)時(shí),就進(jìn)入禁用狀態(tài)302。在步驟404,設(shè)備保留在禁用狀態(tài)302,直到確定ENABLED信號(hào)。在步驟406,一旦確定ENABLED信號(hào),設(shè)備就轉(zhuǎn)變?yōu)殒溌酚?xùn)練狀態(tài)304,并且啟用鏈路接收邏輯。在步驟408,鏈路傳輸邏輯408開始將Phy-Sync分組發(fā)送到遠(yuǎn)程設(shè)備。
一旦接收Phy-Sync分組(或訓(xùn)練物理鏈路),PHY_LINK_TRAINED信號(hào)可在步驟412確定,使得轉(zhuǎn)變到鏈路同步狀態(tài)306。在步驟414,同步序列(鏈路同步分組跟隨的Phy-Sync分組)被傳輸?shù)竭h(yuǎn)程設(shè)備,提供表示訓(xùn)練本地設(shè)備。在步驟416,本地設(shè)備保留在鏈路同步狀態(tài)306直到從遠(yuǎn)程設(shè)備接收鏈路同步分組,表示遠(yuǎn)程設(shè)備也被訓(xùn)練。一旦從遠(yuǎn)程設(shè)備接收鏈路同步分組,本地設(shè)備就可轉(zhuǎn)變?yōu)殒溌芳せ顮顟B(tài)308,并且在步驟418各分組可隨意交換。如所示,本地設(shè)備在步驟420可定期地將同步序列發(fā)送到遠(yuǎn)程設(shè)備。如果在步驟422同步序列沒有定期地從遠(yuǎn)程設(shè)備接收,那么本地設(shè)備將開始重新訓(xùn)練,例如,轉(zhuǎn)變回鏈路訓(xùn)練狀態(tài)304。
圖5說(shuō)明在本地設(shè)備上進(jìn)行對(duì)應(yīng)操作500時(shí),將在遠(yuǎn)程設(shè)備上進(jìn)行的鏈路訓(xùn)練操作550。雖然圖5說(shuō)明性地顯示由本地設(shè)備開始的鏈路訓(xùn)練,但應(yīng)當(dāng)明白的是在系統(tǒng)功率增加時(shí),鏈路的任何一端實(shí)際上可獨(dú)立開始訓(xùn)練,并且將哪個(gè)設(shè)備(如CPU或GPU)視為本地設(shè)備和遠(yuǎn)程設(shè)備是有些隨意的。
在任何情形下,操作500通過(guò)從本地設(shè)備將Phy-Sync分組傳輸?shù)竭h(yuǎn)程設(shè)備開始。在步驟552,在遠(yuǎn)程設(shè)備檢測(cè)Phy-Sync分組,遠(yuǎn)程設(shè)備開始傳輸Phy-Sync分組。典型地,鏈路的兩側(cè)在啟用時(shí)開始傳輸Phy-Sync分組,如果其狀態(tài)機(jī)指示遠(yuǎn)程側(cè)需要它們。在步驟504,在本地設(shè)備接收Phy-Sync分組,本地設(shè)備傳輸同步(Sync)序列給遠(yuǎn)程設(shè)備作為響應(yīng)。在步驟556,遠(yuǎn)程設(shè)備接收同步序列使得轉(zhuǎn)變到鏈路激活狀態(tài)。遠(yuǎn)程設(shè)備可在步驟558通過(guò)發(fā)回同步序列給本地設(shè)備作為響應(yīng)。在步驟508,本地設(shè)備接收同步序列使得轉(zhuǎn)變?yōu)殒溌芳せ顮顟B(tài)。在步驟510和560,對(duì)于在鏈路激活狀態(tài)的兩個(gè)設(shè)備,它們可自由地交換分組。如所示,為了維持同步,在步驟512和562,每個(gè)設(shè)備可定期地發(fā)送同步序列。如果在步驟514或564任何一個(gè)設(shè)備未能在預(yù)定的周期內(nèi)接收同步序列,在步驟516或566(從此可開始鏈路重新訓(xùn)練)那個(gè)設(shè)備可轉(zhuǎn)變?yōu)殒溌肺醇せ顮顟B(tài)。
總結(jié)通過(guò)在硬件中進(jìn)行特別設(shè)計(jì)的操作,用于通過(guò)通信鏈路在兩個(gè)或更多的設(shè)備間通信的部件可自動(dòng)訓(xùn)練而不要求軟件交互。因此,設(shè)備可在功率增加時(shí)立即開始鏈路訓(xùn)練,這可根據(jù)軟件需要的時(shí)間而導(dǎo)致全面訓(xùn)練的鏈路的可用性。
雖然前述針對(duì)本發(fā)明的各實(shí)施例,然而可不脫離其基本范圍而設(shè)計(jì)本發(fā)明的其它和進(jìn)一步的實(shí)施例,并且本發(fā)明的范圍由權(quán)利要求書確定。
權(quán)利要求
1.一種訓(xùn)練本地設(shè)備的方法,用于在沒有軟件干預(yù)的情況下通過(guò)通信鏈路與遠(yuǎn)程設(shè)備通信,該方法在硬件控制下包括(a)從本地設(shè)備通過(guò)通信鏈路將多個(gè)第一預(yù)定義的分組傳輸?shù)竭h(yuǎn)程設(shè)備;(b)對(duì)一個(gè)或更多的第一預(yù)定義的數(shù)據(jù)分組監(jiān)視通信鏈路,該第一預(yù)定義的數(shù)據(jù)分組從遠(yuǎn)程設(shè)備通過(guò)通信鏈路被傳輸?shù)奖镜卦O(shè)備;(c)從本地設(shè)備通過(guò)通信鏈路向遠(yuǎn)程設(shè)備傳輸包括由第二預(yù)定義的分組跟隨的多個(gè)第一預(yù)定義的分組的同步序列,以響應(yīng)由本地設(shè)備從遠(yuǎn)程設(shè)備接收一個(gè)或更多的第一預(yù)定義的數(shù)據(jù)分組;以及(d)只在從遠(yuǎn)程設(shè)備接收指示遠(yuǎn)程設(shè)備被訓(xùn)練的一個(gè)或更多的第二預(yù)定義的分組之后,允許在軟件控制下的分組交換。
2.根據(jù)權(quán)利要求1所述的方法,還包括從本地設(shè)備通過(guò)通信鏈路定期地將同步序列傳輸?shù)竭h(yuǎn)程設(shè)備。
3.根據(jù)權(quán)利要求2所述的方法,還包括如果在預(yù)定的期滿周期內(nèi)同步序列未從遠(yuǎn)程設(shè)備接收,則由本地設(shè)備重復(fù)步驟(a)-(c)。
4.根據(jù)權(quán)利要求1所述的方法,其中對(duì)從遠(yuǎn)程設(shè)備通過(guò)通信鏈路傳輸?shù)奖镜卦O(shè)備的一個(gè)或更多的第一預(yù)定義的數(shù)據(jù)分組監(jiān)視通信鏈路包括對(duì)通過(guò)通信鏈路接收的數(shù)據(jù)比特間的偏離進(jìn)行調(diào)整。
5.根據(jù)權(quán)利要求4所述的方法,其中對(duì)通過(guò)通信鏈路接收的數(shù)據(jù)比特間的偏離進(jìn)行調(diào)整包括相對(duì)于其它比特和/或時(shí)鐘信號(hào)延遲一個(gè)或更多的比特,直到第一預(yù)定義的數(shù)據(jù)分組被檢測(cè)。
6.根據(jù)權(quán)利要求5所述的方法,還包括確定信號(hào)以指示已經(jīng)檢測(cè)到第一預(yù)定義的數(shù)據(jù)分組。
7.根據(jù)權(quán)利要求1所述的方法,還包括確定信號(hào)以指示已經(jīng)由本地設(shè)備從遠(yuǎn)程設(shè)備接收到一個(gè)或更多的第二數(shù)據(jù)分組。
8.一種訓(xùn)練用于通過(guò)鏈路通信的兩個(gè)設(shè)備的方法,包括在每個(gè)設(shè)備中進(jìn)行初始硬件控制的鏈路訓(xùn)練,以補(bǔ)償在通過(guò)鏈路傳輸?shù)臄?shù)據(jù)比特間的偏離;在各設(shè)備間進(jìn)行硬件控制的握手以指示成功的鏈路訓(xùn)練;以及在每個(gè)設(shè)備中進(jìn)行周期的硬件控制的鏈路訓(xùn)練,以定期地對(duì)在通過(guò)鏈路傳輸?shù)臄?shù)據(jù)比特間的偏離進(jìn)行調(diào)整。
9.根據(jù)權(quán)利要求8所述的方法,其中在每個(gè)設(shè)備中進(jìn)行初始的硬件控制的鏈路訓(xùn)練包括由每個(gè)設(shè)備將第一預(yù)定義的數(shù)據(jù)分組的流發(fā)送到另一設(shè)備,并且從另一設(shè)備接收第一預(yù)定義的數(shù)據(jù)分組的流。
10.根據(jù)權(quán)利要求8的所述的方法,其中在各設(shè)備間進(jìn)行硬件控制的握手以指示成功的鏈路訓(xùn)練包括從每個(gè)設(shè)備到另一設(shè)備發(fā)送包括至少一個(gè)第二預(yù)定義的數(shù)據(jù)分組的分組序列。
11.一種自初始化總線接口,用于在包括總線接口的第一設(shè)備和第二設(shè)備間通過(guò)通信鏈路通信,該自初始化總線接口包括硬件狀態(tài)機(jī),配置于在鏈路訓(xùn)練狀態(tài)期間將第一預(yù)定的分組傳輸?shù)降诙O(shè)備,并且轉(zhuǎn)變?yōu)榧せ顮顟B(tài),以響應(yīng)檢測(cè)從第二設(shè)備接收的第二預(yù)定的分組,指示第二設(shè)備被訓(xùn)練。
12.根據(jù)權(quán)利要求11所述的自初始化總線接口,其中數(shù)據(jù)分組的軟件控制的交換只在激活狀態(tài)被允許。
13.根據(jù)權(quán)利要求11所述的自初始化總線接口,還包括去偏離電路,用于調(diào)整在一條或多條通信鏈路的比特線上接收的信號(hào)的延遲,以響應(yīng)從第二設(shè)備接收的第一預(yù)定的分組。
14.根據(jù)權(quán)利要求11所述的自初始化總線接口,其中狀態(tài)機(jī)還配置于定期地將包括一個(gè)或更多的第一預(yù)定的數(shù)據(jù)分組以及至少一個(gè)第二預(yù)定的數(shù)據(jù)分組的同步序列傳輸?shù)降诙O(shè)備。
15.根據(jù)權(quán)利要求14所述的自初始化總線接口,其中狀態(tài)機(jī)還配置于如果預(yù)定的時(shí)間周期經(jīng)過(guò)而未從第二設(shè)備接收包括一個(gè)或更多的第一預(yù)定的數(shù)據(jù)分組以及至少一個(gè)第二預(yù)定的數(shù)據(jù)分組的同步序列,就轉(zhuǎn)變回鏈路訓(xùn)練狀態(tài)。
16.一種系統(tǒng),包括具有多條并行比特線的總線;第一處理設(shè)備;第二處理設(shè)備,經(jīng)由總線與第一處理設(shè)備耦合;以及在每個(gè)第一和第二處理設(shè)備上的自初始化總線接口,每個(gè)設(shè)備中的總線接口配置于在沒有軟件交互的情況下進(jìn)行初始鏈路訓(xùn)練以補(bǔ)償通過(guò)鏈路傳輸?shù)臄?shù)據(jù)比特間的偏離,與另一設(shè)備的握手以指示成功的鏈路訓(xùn)練,以及周期鏈路訓(xùn)練以對(duì)在通過(guò)總線傳輸?shù)臄?shù)據(jù)比特間的偏離進(jìn)行調(diào)整。
17.根據(jù)權(quán)利要求16所述的系統(tǒng),其中在每個(gè)設(shè)備上的總線接口配置于在初始鏈路訓(xùn)練期間傳輸?shù)谝活A(yù)定的分組的流。
18.根據(jù)權(quán)利要求17所述的系統(tǒng),其中在每個(gè)設(shè)備上的總線接口包括去偏離電路,其配置于延遲在一條或多條總線比特線上接收的比特信號(hào),直到第一預(yù)定的分組被檢測(cè)。
19.根據(jù)權(quán)利要求16所述的系統(tǒng),其中由每個(gè)設(shè)備的總線接口進(jìn)行的握手包括通過(guò)向另一設(shè)備發(fā)送第二預(yù)定的數(shù)據(jù)分組指示該設(shè)備被訓(xùn)練;以及從另一設(shè)備接收第二預(yù)定的數(shù)據(jù)分組指示另一設(shè)備被訓(xùn)練。
20.根據(jù)權(quán)利要求16所述的系統(tǒng),其中由每個(gè)設(shè)備的總線接口進(jìn)行的周期鏈路訓(xùn)練包括定期地向另一設(shè)備傳輸包括多個(gè)第一預(yù)定的數(shù)據(jù)分組和至少一個(gè)第二數(shù)據(jù)分組的同步序列。
21.根據(jù)權(quán)利要求20所述的系統(tǒng),其中每個(gè)設(shè)備的總線接口還配置于如果未從另一設(shè)備定期地接收同步序列,就重復(fù)初始鏈路訓(xùn)練。
22.根據(jù)權(quán)利要求16所述的系統(tǒng),其中第一處理設(shè)備是中央處理單元(CPU)而第二處理設(shè)備是圖像處理單元(GPU)。
全文摘要
本發(fā)明提供可用于自動(dòng)訓(xùn)練并且激活在兩個(gè)或多個(gè)設(shè)備間的通信鏈路的方法和裝置。在一些實(shí)施例中,一個(gè)或多個(gè)狀態(tài)機(jī)可用于在自動(dòng)訓(xùn)練和激活期間監(jiān)視并且控制接收和傳輸邏輯的動(dòng)作,從而減少或消除了軟件干預(yù)的需要。結(jié)果,訓(xùn)練和激活可以上電周期后的很少延遲開始。
文檔編號(hào)H04L29/02GK1744065SQ20051007371
公開日2006年3月8日 申請(qǐng)日期2005年5月20日 優(yōu)先權(quán)日2004年9月2日
發(fā)明者羅伯特·A·希勒, 布魯斯·M·沃克 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司