專利名稱:管理數(shù)據(jù)完整性的通用輸入/輸出體系結(jié)構(gòu)、協(xié)議和方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及通用輸入/輸出(GIO)總線體系結(jié)構(gòu)領(lǐng)域,更具體的說,本發(fā)明涉及一種體系結(jié)構(gòu)、協(xié)議以及相關(guān)的方法,用來在GIO總線體系結(jié)構(gòu)中的元件之間管理數(shù)據(jù)的完整性。
背景技術(shù):
計算裝置例如計算機系統(tǒng)、服務(wù)器、網(wǎng)絡(luò)交換機和路由器、無線通信設(shè)備以及其它電子設(shè)備一般由許多電子組件或元件組成。這些元件通常包括處理器、微控制器或其它控制邏輯、存儲器系統(tǒng)、(多個)輸入和輸出接口、外圍元件等。為了便于這些元件之間的通信,計算裝置長期依賴于通用輸入/輸出(GIO)總線體系結(jié)構(gòu),以使得該計算裝置的這些根本不同的元件能夠互相通信來支持由這樣的裝置提供的種種應(yīng)用。
這種傳統(tǒng)的GIO總線體系結(jié)構(gòu)最普遍的一種形式或許就是外圍組件互連總線或PCI總線體系結(jié)構(gòu)。PCI總線標準(1998年12月18日發(fā)布的外圍組件互連(PCI)局域總線規(guī)范,修訂版2.2)規(guī)定了多接點式(multi-drop)、并行總線體系結(jié)構(gòu),用于在計算裝置中以仲裁的方式來互連芯片、擴充板以及處理器/存儲器子系統(tǒng)。為了本發(fā)明的目的,PCI局域總線標準的內(nèi)容在這里作為參考而被明確地引用。
傳統(tǒng)的PCI總線實現(xiàn)具有133兆字節(jié)每秒的吞吐量(即,33兆赫茲32字節(jié)),而PCI 2.2標準允許每個管腳64字節(jié)的并行連接,時鐘達到133MHz,從而產(chǎn)生超過1GBps的理論吞吐量。在這方面,由這樣的傳統(tǒng)多接點式PCI總線體系結(jié)構(gòu)提供的吞吐量到目前為止已經(jīng)提供了足夠的帶寬來適應(yīng)即使是最先進的計算裝置(例如,多處理器服務(wù)器應(yīng)用、網(wǎng)絡(luò)裝置等)的內(nèi)部通信需要。然而,聯(lián)系到寬帶因特網(wǎng)訪問的廣泛應(yīng)用,處理能力的新近進展將處理速度超過了1GHz的閾值,諸如PCI總線體系結(jié)構(gòu)的傳統(tǒng)GIO體系結(jié)構(gòu)已經(jīng)變成這樣的計算裝置中的瓶頸。
通常與傳統(tǒng)GIO體系結(jié)構(gòu)聯(lián)系在一起的另一個限制是,它們通常不能很好的適宜于操作/處理同步(或者說時間相關(guān))數(shù)據(jù)流。這樣的同步數(shù)據(jù)流的一個例子是多媒體數(shù)據(jù)流,該多媒體數(shù)據(jù)流需要同步傳輸機制來確保接收數(shù)據(jù)與使用數(shù)據(jù)同速,并且音頻部分與視頻部分同步。
傳統(tǒng)的GIO體系結(jié)構(gòu)異步處理數(shù)據(jù),或以帶寬允許的隨機時間間隔處理數(shù)據(jù)。這種同步數(shù)據(jù)的異步處理可能導(dǎo)致音頻與視頻的不重合,作為結(jié)果,某些同步多媒體內(nèi)容供應(yīng)商制定了使某些數(shù)據(jù)優(yōu)先于其它數(shù)據(jù)的規(guī)則,例如使音頻數(shù)據(jù)優(yōu)先于視頻數(shù)據(jù),從而最終用戶至少接收相對穩(wěn)定的音頻流(即,不被打斷),使得他們可以欣賞或了解正在被流式播放的歌曲、故事等等。
本發(fā)明以示例而非限制的方式被說明,附圖中類似的標號指示類似的元件,并且其中圖1是電子裝置的方框圖,該電子裝置包括本發(fā)明的實施例的一個或多個方面以便于該裝置的一個或多個組成元件之間的通信;圖2是根據(jù)本發(fā)明一個示例性實施例的示例性通信棧的示圖,該通信棧由電子裝置的一個或多個元件使用以便于這些元件之間的通信;圖3是根據(jù)本發(fā)明教導(dǎo)的示例性事務(wù)層(transaction layer)數(shù)據(jù)報的示圖;圖4是根據(jù)本發(fā)明一個方面的示例性通信鏈路的示圖,該通信鏈路包括一個或多個虛擬信道以便于電子設(shè)備的一個或多個元件之間的通信;圖5是根據(jù)本發(fā)明一個實施例,用于在EGIO(增強型通用輸入/輸出)體系結(jié)構(gòu)中提供同步通信資源的示例性方法的流程圖;圖6是根據(jù)本發(fā)明的一個方面,用于在EGIO體系結(jié)構(gòu)中實現(xiàn)流控制的示例性方法的流程圖;圖7是根據(jù)本發(fā)明的一個方面,用于在EGIO體系結(jié)構(gòu)中實現(xiàn)數(shù)據(jù)完整性特征的示例性方法的流程圖;圖8是根據(jù)本發(fā)明的一個示例性實施例的示例性通信代理的方框圖,以選擇性實現(xiàn)本發(fā)明的一個或多個方面;圖9是本發(fā)明的事務(wù)層中使用的各種分組頭部格式的方框圖;圖10是根據(jù)本發(fā)明示例性實施例的示例性存儲器體系結(jié)構(gòu)的方框圖,該存儲器體系結(jié)構(gòu)被用于幫助本發(fā)明的一個或多個方面;圖11是根據(jù)本發(fā)明一個方面的示例性鏈路狀態(tài)機圖的狀態(tài)圖;以及圖12是含有內(nèi)容的可訪問介質(zhì)的方框圖,所述內(nèi)容當由電子設(shè)備訪問時實現(xiàn)本發(fā)明的一個或多個方面。
具體實施例方式
本發(fā)明的多個實施例一般地涉及通用輸入/輸出(GIO)體系結(jié)構(gòu)、協(xié)議和相關(guān)方法,以實現(xiàn)其中的流控制。在這方面,介紹了創(chuàng)新的增強型通用輸入/輸出(EGIO)互連體系結(jié)構(gòu)、相關(guān)通信協(xié)議和有關(guān)方法。根據(jù)一個示例性實施例,EGIO體系結(jié)構(gòu)的元件包括根復(fù)合體(root complex)(例如,在橋內(nèi)實現(xiàn))、以及端點(end point)中的一個或多個,每個元件至少包含EGIO特征的一個子集以支持這些元件之間的EGIO通信。
使用(多條)串行通信信道來執(zhí)行這些元件的EGIO設(shè)備之間的通信,所述串行通信信道使用EGIO通信協(xié)議,所述協(xié)議如下面將要詳細介紹的那樣支持一個或多個創(chuàng)新特征,所述特征包括但不局限于虛擬通信信道、基于尾部(tailer)的錯誤轉(zhuǎn)發(fā)(error forwarding)、對老式(legacy)的基于PCI的設(shè)備及其中斷的支持、多種請求響應(yīng)類型、流控制和/或數(shù)據(jù)完整性管理功能。根據(jù)本發(fā)明的一個方面,通過引入EGIO通信協(xié)議棧,在每個計算裝置的元件中都支持了通信協(xié)議,該棧包括物理層、數(shù)據(jù)鏈路層和事務(wù)層。
在本說明書各處提及的“一個實施例”或“實施例”指的是,所描述的與該實施例有關(guān)的具體特征、結(jié)構(gòu)或特性被包括在本發(fā)明的至少一個實施例中。因此,在本說明書多個位置出現(xiàn)的短語“在一個實施例中”或“在實施例中”不必都指同一個實施例。此外,所述具體特征、結(jié)構(gòu)或特性可以適當?shù)姆绞浇Y(jié)合在一個或多個實施例中。
根據(jù)前述內(nèi)容和下面的描述,本領(lǐng)域技術(shù)人員應(yīng)當意識到,本發(fā)明的一個或多個元件可以容易地以硬件、軟件、傳播的信號或它們的組合來實現(xiàn)。
術(shù)語在深入討論創(chuàng)新的EGIO互連體系結(jié)構(gòu)、通信協(xié)議和相關(guān)方法的細節(jié)之前,引入將在該詳細描述中使用的詞匯表元素是很有幫助的·通告(Advertise)在EGIO流控制的上下文中使用,通過使用EGIO協(xié)議的流控制更新消息來指示接收器發(fā)送有關(guān)它的流控制信用(credit)可用性的信息的動作;·完成器(Completer)請求所指向的邏輯設(shè)備;·完成器ID完成器的總線標識符(例如,號碼)、設(shè)備標識符和功能標識符中的一個或多個的組合,其唯一標識了請求的完成器;·完成(completion)用于終止或部分終止一個序列的分組被稱為完成。根據(jù)一個示例性實現(xiàn),完成對應(yīng)于在前請求,并且在某些情況下含有數(shù)據(jù);·配置空間EGIO體系結(jié)構(gòu)中的四個地址空間中的一個。具有配置空間地址的分組被用于配置設(shè)備;·組件物理設(shè)備(即,在單個封裝之中);·數(shù)據(jù)鏈路層EGIO體系結(jié)構(gòu)的中間層,位于事務(wù)層(上層)和物理層(下層)之間;·數(shù)據(jù)鏈路層分組(DLLP)數(shù)據(jù)鏈路層分組是在數(shù)據(jù)鏈路層產(chǎn)生并使用的分組,來支持在數(shù)據(jù)鏈路層處執(zhí)行的鏈路管理功能;·下行流(downstream)指的是元件的相對位置或離開主橋的信息流;·端點具有00h類型配置空間頭部的EGIO設(shè)備;·流控制用于將來自接收器的接收緩沖器信息發(fā)送到發(fā)送器,以防止接收緩沖器溢出,并且允許發(fā)送器裝置服從排序規(guī)則;·流控制分組(FCP)事務(wù)層分組,用于將來自一個組件中的事務(wù)層的流控制信息發(fā)送到另一個組件中的事務(wù)層;·功能多功能設(shè)備的一個獨立部分,在配置空間中由唯一的功能標識符(例如,功能號碼)標識;·層次(Hierarchy)定義了在EGIO體系結(jié)構(gòu)中實現(xiàn)的I/O互連拓撲結(jié)構(gòu)。層次由對應(yīng)于最靠近枚舉設(shè)備(enumerating device)(例如,主CPU)的鏈路的根復(fù)合體來表征;·層次域EGIO層次被根復(fù)合體分成多個段,所述根復(fù)合體產(chǎn)生不只一個EGIO接口,其中這些段被稱為層次域;·主橋?qū)⒅鰿PU復(fù)合體連接到根復(fù)合體;主橋可以提供根復(fù)合體;·IO空間EGIO體系結(jié)構(gòu)的四個地址空間中的一個;·管線(Lane)物理鏈路的一組差分信號對,一對用于發(fā)送并且一對用于接收。N鏈路由N條管線組成;·鏈路兩個組件之間的雙單工(dual-simplex)通信路徑;兩個端口(一個發(fā)送,一個接收)的集合以及它們的(多條)互連管線的集合;·邏輯總線在配置空間中具有相同總線號碼的一系列設(shè)備之間的邏輯連接;·邏輯設(shè)備EGIO體系結(jié)構(gòu)的元件,其在配置空間中對應(yīng)于唯一的設(shè)備標識符;·存儲器空間EGIO體系結(jié)構(gòu)的四個地址空間中的一個;·消息具有消息空間類型的分組;·消息空間EGIO體系結(jié)構(gòu)的四個地址空間中的一個。如PCI中定義的特殊周期作為消息空間的子集而被包括在其中,并且因此提供了(多個)與老式設(shè)備的接口;·(多個)老式軟件模型初始化、發(fā)現(xiàn)、配置以及使用老式設(shè)備所需的(多個)軟件模型(例如,在例如EGIO至老式橋中包含的PCI軟件模型有助于與老式設(shè)備的交互);·物理層EGIO體系結(jié)構(gòu)層,其直接面對兩個組件之間的通信介質(zhì);端口與組件相關(guān)聯(lián)的接口,在該組件和EGIO鏈路之間;·接收器通過鏈路接收分組信息的組件是接收器(有時稱為目標);·請求用于開始序列的分組被稱為請求。請求包括一些操代碼,并且在某些情況下,包括地址和長度、數(shù)據(jù)或其它信息;·請求器(requester)首先將序列引入到EGIO域的邏輯設(shè)備;·請求器ID請求器的總線標識符(例如,總線號碼)、設(shè)備標識符和功能標識符中的一個或多個的組合,其唯一的標識請求器。在大多數(shù)情況下,EGIO橋或交換器(switch)將請求從一個接口轉(zhuǎn)發(fā)到另一個接口而不修改請求器ID。來自除了EGIO總線的總線的橋通常應(yīng)當存儲請求器ID,以在為該請求產(chǎn)生一個完成時使用。
·根復(fù)合體包括主橋和一個或多個根端口的實體;·根端口根復(fù)合體上的EGIO端口,其通過相關(guān)聯(lián)的虛擬PCI-PCI橋來映射EGIO互連層次的一部分;·序列與請求器執(zhí)行單個邏輯傳送相關(guān)聯(lián)的零個或多個完成以及單個請求;·序列ID請求器ID和標記的一個和多個的組合,其中所述組合唯一地標識作為公共序列一部分的完成和請求;·分裂事務(wù)(split transaction)含有初始事務(wù)(分裂請求)的單個邏輯傳送,目標(完成器或橋)以分裂響應(yīng)終止該事務(wù),隨后由完成器(或橋)開始一個或多個事務(wù)(分裂完成),以將讀取數(shù)據(jù)(如果讀取)或完成消息發(fā)送回請求器;·符號(symbol)作為8比特/10比特編碼的結(jié)果而產(chǎn)生的10比特數(shù)值;
·符號時間在管線上放置符號所需的時間段;·標記由請求器分配到給定序列以區(qū)分它和其它序列的號碼-序列ID的一部分;·事務(wù)層分組(TLP)TLP是在事務(wù)層中產(chǎn)生以運送請求或完成的分組;·事務(wù)層EGIO體系結(jié)構(gòu)的最外層(最上層),其在事務(wù)級別進行操作(例如,讀取、寫入等等);·事務(wù)描述符分組頭部的元素,與地址、長度和類型一起描述事務(wù)的屬性。
示例性電子裝置以及EGIO體系結(jié)構(gòu)圖1提供了根據(jù)本發(fā)明示例性實施例的電子裝置100的方框圖,該電子裝置100包括增強型通用輸入/輸出(EGIO)互連體系結(jié)構(gòu)、協(xié)議及相關(guān)方法。如所示,電子裝置100被描述為包含多個電子元件,包括(多個)處理器102、根復(fù)合體(例如,包括主橋)104、交換器108以及端點110中的一個或多個,每個元件都如所示進行耦合。根據(jù)本發(fā)明的教導(dǎo),至少根復(fù)合體104、(多個)交換器108以及端點110被賦予了EGIO通信接口106的一個或多個示例,以有助于本發(fā)明的實施例的一個或多個方面。
如所示,元件102、104、108和110中的每一個都經(jīng)由EGIO接口106通過通信鏈路112可進行通信地耦合到至少一個其它元件,其中通信鏈路112支持一條或多條EGIO通信信道。根據(jù)一個示例性實現(xiàn),在主電子裝置的初始化事件期間或者在外圍設(shè)備動態(tài)連接到電子裝置(例如,熱插拔設(shè)備)之后,建立了EGIO互連體系結(jié)構(gòu)的操作參數(shù)。如上面所介紹的,電子裝置100被確定為代表多種傳統(tǒng)和非傳統(tǒng)計算系統(tǒng)、服務(wù)器、網(wǎng)絡(luò)交換器、網(wǎng)絡(luò)路由器、無線通信用戶單元、無線通信電話基礎(chǔ)設(shè)施元件、個人數(shù)字助理、機頂盒或任何電子裝置中的任何一個或多個,所述任何電子裝置將從通過這里描述的EGIO互連體系結(jié)構(gòu)、通信協(xié)議或相關(guān)方法的至少一個子集的綜合而產(chǎn)生的通信資源獲益。
根據(jù)圖1圖示的示例性實現(xiàn),電子裝置100具有一個或多個處理器102。如這里所使用的,(多個)處理器102控制電子裝置100的功能性能力的一個或多個方面。在這個方面,(多個)處理器102可以代表多種控制邏輯的任何一個,控制邏輯包括但不局限于微處理器、可編程邏輯器件(PLD)、可編程邏輯陣列(PLA)、專用集成電路(ASIC)、微控制器等等的一個或多個。
如上所述,根復(fù)合體104提供電子裝置EGIO體系結(jié)構(gòu)的一個或多個其它元件108、110與處理器102和/或處理器/存儲器復(fù)合體之間的EGIO通信接口。如這里所使用的,根復(fù)合體104指的是最靠近于主控制器、存儲器控制器集線器、IO控制器集線器、上述的任何組合或芯片組/CPU元件的某種組合(即,處于計算系統(tǒng)環(huán)境)的EGIO層次的邏輯實體。在這方面,盡管在圖1中被描述為單個單元,根復(fù)合體104可以被認為是具有多個物理組件的單個邏輯實體。
根據(jù)圖1所圖示的示例性實現(xiàn),根復(fù)合體104組裝有一個或多個EGIO接口106以便于與其它外圍設(shè)備進行通信,所述外圍設(shè)備例如是(多個)交換器108、(多個)端點110以及(多個)老式橋114或116,盡管沒有對老式橋114或116進行具體描述。根據(jù)一個示例性實現(xiàn),每個EGIO接口106代表不同的EGIO層次域。在此方面,圖1所圖示的實現(xiàn)表示了具有三(3)個層次域的根復(fù)合體104。應(yīng)當知道,盡管所作的表述包括多個單獨EGIO接口106,但是可以預(yù)期其它的實施例,其中單個接口106具有多個端口以適應(yīng)和多個設(shè)備進行通信。
根據(jù)一個示例性實現(xiàn),根復(fù)合體104負責(zé)識別EGIO體系結(jié)構(gòu)的每個元件的通信需求(例如,虛擬信道需求、同步信道需求等等)。根據(jù)一個示例性實現(xiàn),這樣的通信需求在主裝置100的初始化事件期間或它的任何元件的初始化事件期間(例如,熱插拔事件)被傳送到根復(fù)合體104。在另一個實施例中,根復(fù)合體104詢問這些元件以識別通信需求。一旦識別了這些通信參數(shù),根復(fù)合體104就例如通過協(xié)商過程來為體系結(jié)構(gòu)的每個元件建立EGIO通信設(shè)備的款項和條件。
在這里公開的EGIO體系結(jié)構(gòu)中,交換器有選擇地將端點耦合到多個EGIO層次和/或域以及它們之間。根據(jù)一個示例性實現(xiàn),EGIO交換器具有至少一個上行流(upstream)端口(即、朝著根復(fù)合體104的方向)和至少一個下行流端口。根據(jù)一個實現(xiàn),交換器108將最靠近主橋的一個端口(即,接口的一個端口或接口106自身)作為上行流端口,而所有其它的端口是下行流端口。根據(jù)一個實現(xiàn),交換器108對于配置軟件(例如,老式配置軟件)表現(xiàn)為PCI-PCI橋,并且使用PCI橋機制來對事務(wù)進行路由。
在交換器108的上下文中,對等事務(wù)被定義為這樣的事務(wù),其中的接收端口和發(fā)送端口都是下行流端口。根據(jù)一個實現(xiàn),交換器108支持除了那些與從任何端口到任何其它端口的鎖定事務(wù)序列相關(guān)聯(lián)的事務(wù)層分組(TLP)之外的所有類型的事務(wù)層分組。在這方面,所有廣播消息一般都會從交換器108上的接收端口被路由到它的所有其它端口。不能被路由到端口的事務(wù)層分組一般會被交換器108確定為不支持的TLP。當將事務(wù)層分組(TLP)從接收端口傳送到發(fā)送端口時,交換機108一般不修改它們,除非需要進行修改以適應(yīng)發(fā)送端口(例如,耦合到老式橋114、116的發(fā)送端口)的不同協(xié)議需求。
應(yīng)當意識到,交換器108代表其它設(shè)備工作,并且在這方面,它不會預(yù)先知道流量類型和模式。根據(jù)下面將要詳細討論的一個實現(xiàn),本發(fā)明的流控制和數(shù)據(jù)完整性方面以每個鏈路(per-link)為基礎(chǔ)而實現(xiàn),而不是以端到端(end-to-end)為基礎(chǔ)實現(xiàn)。因此,根據(jù)這樣的實現(xiàn),交換器108參與用于流控制和數(shù)據(jù)完整性的協(xié)議。為了參與流控制,交換器108為每個端口維持單獨的流控制以提高交換器108的性能特性。類似地,交換器108通過使用TLP檢錯機制檢查進入交換器的每個TLP而以每個鏈路為基礎(chǔ)來支持數(shù)據(jù)完整性過程,這在下面將詳細描述。根據(jù)一個實現(xiàn),交換器108的下行流端口允許形成新的EGIO層次域。
繼續(xù)參考圖1,端點110被定義為具有00hex(十六進制00)(00h)類型配置空間頭部的任何設(shè)備。端點設(shè)備110代表它自身或是代表截然不同的非EGIO設(shè)備,可以是EGIO語義事務(wù)的請求器或完成器。這樣的端點110示例包括但不局限于EGIO兼容(EGIO compliant)圖形設(shè)備、EGIO兼容存儲器控制器以及/或者實現(xiàn)了EGIO和諸如通用串行總線(USB)、以太網(wǎng)等某些其它接口之間的連接的設(shè)備。與下文詳細討論的老式橋114、116不同,擔(dān)當非EGIO兼容設(shè)備的接口的端點110不會為這些非EGIO兼容設(shè)備提供完全軟件支持。雖然將主處理器復(fù)合體102連接到EGIO體系結(jié)構(gòu)的設(shè)備是根復(fù)合體104,但是它可以與位于EGIO體系結(jié)構(gòu)中的其它端點具有相同的設(shè)備類型,它們只是通過其相對于處理器復(fù)合體102的位置來加以區(qū)分。
根據(jù)本發(fā)明的教導(dǎo),端點110可以被概括為下列三個類別的一個或多個(1)老式與EGIO兼容端點,(2)老式端點,以及(3)EGIO兼容端點,每個在EGIO體系結(jié)構(gòu)中具有不同的操作規(guī)則。
如上所述,EGIO兼容端點110與老式端點(例如,118、120)不同,在于EGIO端點110將具有00h類型配置空間頭部。這些端點(110、118和120)的每個都作為完成器支持配置請求。這些端點允許產(chǎn)生配置請求,并且可以被分類為老式端點或EGIO兼容端點,但是該分類需要遵守另外的規(guī)則。
老式端點(例如,118、120)被允許作為完成器來支持IO請求并且被允許產(chǎn)生IO請求。如果老式端點(118、120)的軟件支持需求要求,則它被允許例如根據(jù)傳統(tǒng)的PCI操作作為完成者產(chǎn)生鎖定語義(locksemantics)。老式端點(118、120)一般不發(fā)布鎖定請求。
EGIO兼容端點110一般不作為完成器來支持IO請求并且不產(chǎn)生IO請求。EGIO端點110不作為完成器來支持鎖定請求,并且不作為請求器來產(chǎn)生鎖定請求。
EGIO至老式橋114、116是專用端點110,其包括用于老式設(shè)備(118、120)的基本軟件支持例如完全軟件支持,其中所述橋?qū)⑺隼鲜皆O(shè)備連接到EGIO體系結(jié)構(gòu)。在這方面,EGIO-老式橋114、116一般具有一個上行流端口(也可以具有多個),并具有多個下行流端口(也可以只有一個)。根據(jù)老式軟件模型(例如,PCI軟件模型)來支持鎖定請求。EGIO-老式橋114、116的上行流端口應(yīng)當以每個鏈路為基礎(chǔ)來支持流控制并且遵守EGIO體系結(jié)構(gòu)的流控制和數(shù)據(jù)完整性規(guī)則,這在下文將詳細介紹。
如這里所使用的,通信鏈路112被確定為代表多種通信介質(zhì)中的任何一個,所述多種通信介質(zhì)包括但不局限于銅線、光纖、(多條)無線通信信道、紅外通信鏈路等等。根據(jù)一個示例性實現(xiàn),EGIO鏈路112是差分串行線路對,一對中的每個都支持發(fā)送和接收通信,從而提供了對全雙工通信能力的支持。根據(jù)一個實現(xiàn),鏈路提供具有初始(基本)操作頻率為2.5Ghz的可變串行時鐘頻率。每個方向的接口寬度可依x1、x2、x4、x8、x12、x16、x32物理管線而變。如上所述以及下面將要詳細介紹的,EGIO鏈路112可以在設(shè)備之間支持多條虛擬信道,從而使用一條或多條虛擬信道在這些設(shè)備之間提供對同步流量的不間斷通信的支持,所述多條虛擬信道例如是一條音頻信道和一條視頻信道。
示例性EGIO接口體系結(jié)構(gòu)根據(jù)圖2所圖示的示例性實現(xiàn),EGIO接口106可以表示為包括了事務(wù)層202、數(shù)據(jù)鏈路層204和物理層206的通信協(xié)議棧。如所示,物理鏈路層接口被描述為包括邏輯子塊208和物理子塊210,其中每個都將在進行下面詳細討論。
事務(wù)層202根據(jù)本發(fā)明的教導(dǎo),事務(wù)層202提供EGIO體系結(jié)構(gòu)和設(shè)備核心之間的接口。在這方面,事務(wù)層202的主要職責(zé)是為主設(shè)備(或代理)中的一個或多個邏輯設(shè)備裝配和拆解分組(即,事務(wù)層分組或TLP)。
地址空間、事務(wù)類型和用途事務(wù)形成了在發(fā)起代理和目標代理之間的信息傳送的基礎(chǔ)。根據(jù)一個示例性實施例,在創(chuàng)新的EGIO體系結(jié)構(gòu)中定義了四個地址空間,包括例如配置地址空間、存儲器地址空間、輸入/輸出地址空間以及消息地址空間,每個都具有自己唯一的既定用途(例如見圖7,下面進行了詳細的說明)。
存儲器空間(706)事務(wù)包括讀取請求和寫入請求中的一個或多個,以將數(shù)據(jù)發(fā)送到存儲器映射位置或從該位置取出數(shù)據(jù)。存儲器空間事務(wù)可以使用兩種不同的地址格式,例如短地址格式(例如,32比特地址)或長地址格式(例如,64比特的長度)。根據(jù)一個示例性實施例,EGIO體系結(jié)構(gòu)使用鎖定協(xié)議語義(即,代理可以鎖定對所修改的存儲器空間的訪問)來提供傳統(tǒng)的讀取、修改和寫入序列。更具體地說,根據(jù)特定設(shè)備規(guī)則(橋、交換器、端點、老式橋),允許對下行流鎖定的支持。如上所述,支持該鎖定語義以幫助老式設(shè)備。
IO空間(704)事務(wù)用于訪問IO地址空間(例如,16比特IO地址空間)中的輸入/輸出映射存儲器寄存器。諸如英特爾體系結(jié)構(gòu)處理器以及其它處理器的某些處理器102通過處理器的指令集而包括IO空間定義。因此,IO空間事務(wù)包括讀取請求和寫入請求以將數(shù)據(jù)傳送至IO映射位置或從該位置取出數(shù)據(jù)。
配置空間(702)事務(wù)用于訪問EGIO設(shè)備的配置空間。配置空間的事務(wù)包括讀取請求和寫入請求。由于如此多的傳統(tǒng)處理器一般不含有本地配置空間,所以通過一種機制來映射該空間,所述機制即是與傳統(tǒng)PCI配置空間訪問機制(例如,使用基于CFC/CFC8的PCI配置機制#1)相兼容的軟件?;蛘?,也可以使用存儲器別名機制來訪問配置空間。
消息空間(708)事務(wù)(或簡稱為消息)被定義為支持通過(多個)接口106而在EGIO代理之間進行帶內(nèi)通信。由于傳統(tǒng)的處理器不包括對本地消息空間的支持,所以這是通過EGIO代理在接口106中實現(xiàn)的。根據(jù)一個示例性實現(xiàn),諸如中斷和電源管理請求的傳統(tǒng)“邊帶(side-band)”信號作為消息而被實現(xiàn)以減少所需的用來支持這些老式信號的引腳數(shù)目。一些處理器以及PCI總線包括“特殊周期”的概念,其也被映射到EGIO接口106中的消息。根據(jù)一個實施例,消息通常分為兩類標準消息和廠商定義消息。
根據(jù)所圖示的示例性實施例,標準消息包括通用消息組和系統(tǒng)管理消息組。通用消息可以是單一目的地消息或廣播/組播消息。系統(tǒng)管理消息組可以包括中斷控制消息、電源管理消息、排序控制原語(primitive)和錯誤信令中的一個或多個,它們的例子將在下文介紹。
根據(jù)一個示例性實現(xiàn),通用消息包括支持鎖定事務(wù)的消息。根據(jù)該示例性實現(xiàn),引入了UNLOCK(解鎖)消息,其中交換器(例如,108)一般會通過可能參與鎖定事務(wù)的任何端口來運送UNLOCK消息。在沒有被鎖定的時候接收到UNLOCK消息的端點設(shè)備(例如,110、118、120)將忽略該消息。否則,將在接收到UNLOCK消息之后解鎖鎖定設(shè)備。
根據(jù)一個示例性實現(xiàn),系統(tǒng)管理消息組包括用于排序和/或同步的專用消息。一個這樣的消息是FENCE(防護)消息,用于在由EGIO體系結(jié)構(gòu)的接收元件產(chǎn)生的事務(wù)上施加嚴格的排序規(guī)則。根據(jù)一個實現(xiàn),只是諸如端點的網(wǎng)絡(luò)元件的一個精選子集對該FENCE消息作出反應(yīng)。除了前述的內(nèi)容,例如通過使用下文討論的尾部(tailer)錯誤轉(zhuǎn)發(fā),這里還預(yù)見了用于指示可校正錯誤、不可校正錯誤和致命錯誤的消息。
根據(jù)上文所介紹的本發(fā)明的一個方面,系統(tǒng)管理消息組使用帶內(nèi)消息提供中斷信令。根據(jù)一個實現(xiàn),引入了ASSERT_INTx/DEASSERT_INTx消息對,其中斷言(assert)中斷消息的發(fā)布通過主橋104被發(fā)送到處理器復(fù)合體。根據(jù)所圖示的示例性實現(xiàn),ASSERT_INTx/DEASSERT_INTx消息對的使用規(guī)則反映了PCI規(guī)范中的PCI INTx#信號的消息的使用規(guī)則,如上所述。對于來自任何一個設(shè)備的Assert_INTx的每次發(fā)送,通常都有對應(yīng)的Deassert_INTx的發(fā)送。對于特定‘x’(A、B、C或D),一般在發(fā)送Deassert_INTx之前只發(fā)送一次Assert_INTx。交換器一般會將Assert_INTx/Deassart_INTx消息路由到根復(fù)合體104,其中根復(fù)合體一般會跟蹤Assert_INTx/Deassart_INTx消息以產(chǎn)生虛擬中斷信號,并且將這些信號映射到系統(tǒng)中斷資源。
除了通用和系統(tǒng)管理消息組之外,EGIO體系結(jié)構(gòu)建立了標準框架結(jié)構(gòu),其中核心邏輯(例如芯片組)廠商可以定義它們自己的廠商定義消息以迎合它們的平臺的特定操作需求。該框架結(jié)構(gòu)是通過公共消息頭部而建立的,在所述頭部中廠商定義消息的編碼被規(guī)定為“預(yù)留”。
事務(wù)描述符事務(wù)描述符是用于將事務(wù)信息從起點運送到服務(wù)點并送回的機制。它提供可擴展裝置用于提供可以支持新類型的新興應(yīng)用的一般互連解決方案。在這方面,事務(wù)描述符支持系統(tǒng)中的事務(wù)的標識、缺省事務(wù)排序的修改,以及使用虛擬信道ID機制關(guān)聯(lián)事務(wù)與虛擬信道。參考圖3,示出了事務(wù)描述符的示圖。
參考圖3,根據(jù)本發(fā)明的教導(dǎo)示出了包括示例性事務(wù)描述符的數(shù)據(jù)報的示圖。根據(jù)本發(fā)明的教導(dǎo),示出的事務(wù)描述符300包括全局標識符字段302、屬性字段304和虛擬信道標識符字段306。在所圖示的示例性實現(xiàn)中,全局標識符字段302被描述為包括本地事務(wù)標識符字段308和源標識符字段310。
·全局事務(wù)標識符302如這里所使用的,全局事務(wù)標識符對所有待處理的請求都是唯一的。根據(jù)圖3所圖示的示例性實現(xiàn),全局事務(wù)標識符302包括兩個子字段本地事務(wù)標識符字段308和源標識符字段310。根據(jù)一個實現(xiàn),本地事務(wù)標識符字段308是由每個請求器產(chǎn)生的8比特字段,并且對于需要該請求器的完成的所有待處理請求它是唯一的。源標識符唯一地標識EGIO層次中的EGIO代理。因此,本地事務(wù)標識符字段和源ID一起提供了在層次域中的事務(wù)的全局標識。
根據(jù)一個實現(xiàn),本地事務(wù)標識符308允許來自單個請求源的請求/完成不依順序(遵守下面詳細討論的排序規(guī)則)而被操作。例如,讀取請求源可以產(chǎn)生讀取A1和A2。處理這些讀取請求的目的地代理會首先返回請求A2事務(wù)ID的完成,并且隨后返回A1的完成。在完成分組頭部中,本地事務(wù)ID信息將標識哪個事務(wù)將被完成。這種機制對于使用分布式存儲器系統(tǒng)的裝置尤為重要,因為它可以更有效的方式來操作讀取請求。應(yīng)當注意,對這種不依順序讀取完成的支持假定了發(fā)布讀取請求的設(shè)備將確保完成的緩沖器空間的預(yù)先分配。如上所述,只要EGIO交換機108不是端點(即,僅僅傳送完成請求到適當?shù)亩它c),它們就不需要預(yù)留緩沖器空間。
單個讀取請求可以產(chǎn)生多個完成。屬于單個讀取請求的完成可以相互不依順序的返回。這通過在完成分組頭部(即,完成頭部)中提供對應(yīng)于部分完成的初始請求的地址偏移來只支持。
根據(jù)一個示例性實現(xiàn),源標識符字段310包含16比特值,其對每個邏輯EGIO設(shè)備是唯一的。應(yīng)當注意單個EGIO設(shè)備可以包括多個邏輯設(shè)備。在系統(tǒng)配置期間以對標準PCI總線枚舉機制透明的方式分配源ID值。EGIO設(shè)備使用例如在對那些設(shè)備的初始配置訪問期間可用的總線號碼信息以及用于表示例如設(shè)備號碼和流號碼的內(nèi)部可用信息,在內(nèi)部自動地建立源ID。根據(jù)一個實現(xiàn),該總線號碼信息是在EGIO配置周期期間使用與PCI配置所使用的相類似的機制而產(chǎn)生的。根據(jù)一個實現(xiàn),總線號碼由PCI初始化機制分配并由每個設(shè)備捕獲。在熱插拔和熱交換設(shè)備的情況下,這些設(shè)備將需要在每個配置周期訪問上重新捕獲該總線號碼信息以能夠?qū)岵灏慰刂破?例如,標準熱插拔控制器(SHPC))軟件棧透明。
根據(jù)EGIO體系結(jié)構(gòu)的一個實現(xiàn),物理組件可以包含一個或多個邏輯設(shè)備(或代理)。每個邏輯設(shè)備被設(shè)計成響應(yīng)于指定到其特定設(shè)備號碼的配置周期,即,在邏輯設(shè)備中加入了設(shè)備號碼的概念。根據(jù)一個實現(xiàn),在單個物理組件中允許多達十六個邏輯設(shè)備。每個這樣的邏輯設(shè)備可以包括一個或多個流化(streaming)引擎,例如最多16個。因此,單個物理組件可以包括多達256個流化引擎。
由不同源標識符標記的事務(wù)屬于不同的邏輯EGIO輸入/輸出(IO)源,并且從而從排序的方面來看可以相互完全獨立地操作這些事務(wù)。對于三方、對等事務(wù)的情況,如果需要可以使用防護排序控制原語來強制排序。
如這里所使用的,事務(wù)描述符300的全局事務(wù)標識符字段302遵守下列規(guī)則的至少一個子集(a)每個需要完成的請求用全局事務(wù)ID(GTID)來標記;(b)由代理發(fā)起的所有待處理的需要完成的請求一般應(yīng)當分配唯一的GTID;
(c)不需要完成的請求不使用GTID的本地事務(wù)ID字段308,并且本地事務(wù)ID字段被認為是預(yù)留的;(d)目標不需要以任何方式來修改請求GTID,而只是為所有與請求相關(guān)聯(lián)的完成在完成分組的頭部中回應(yīng)它,其中發(fā)起者使用GTID將(多個)完成與原始請求相匹配。
·屬性字段304如這里所使用的,屬性字段304指明了事務(wù)的特性和關(guān)系。在這方面,屬性字段304被用于提供允許修改事務(wù)的缺省操作的額外信息。這些修改可以應(yīng)用于在系統(tǒng)中操作事務(wù)的不同方面,例如排序、硬件一致性(coherency)管理(例如探聽(snoop)屬性)和優(yōu)先級。一種示例性格式以子字段312-318來表示屬性字段304。
如所示,屬性字段304包括優(yōu)先級子字段312。優(yōu)先級子字段可以由發(fā)起者修改以為事務(wù)分配優(yōu)先級。在一個示例性實現(xiàn)中,事務(wù)或代理的服務(wù)特性的等級或質(zhì)量可以在優(yōu)先級子字段312中實現(xiàn),從而影響其它系統(tǒng)元件進行的處理。
預(yù)留屬性字段314為將來或廠商定義用途而被預(yù)留。通過使用預(yù)留屬性字段可以實現(xiàn)使用優(yōu)先級或安全屬性的用途模型。
排序?qū)傩宰侄?16被用于提供用來傳達排序類型的可選信息,所述信息可以修改同一排序平面(plane)(其中排序平面包括由具有對應(yīng)的源ID的IO設(shè)備和主處理器(102)發(fā)起的流量)內(nèi)的缺省排序規(guī)則。根據(jù)一個示例性實現(xiàn),排序?qū)傩浴?’表示將應(yīng)用缺省的排序規(guī)則,而排序規(guī)則‘1’表示松散(relaxed)排序,其中在同一方向上寫入可以超過寫入,并且在同一方向上讀取完成可以超過寫入。使用松散排序語義的設(shè)備主要用于以缺省排序來為讀取/寫入狀態(tài)信息移動數(shù)據(jù)和事務(wù)。
探聽屬性字段318被用于提供用來傳達高速緩存一致性管理的類型的可選信息,所述信息可以修改同一排序平面內(nèi)的缺省高速緩存一致性管理規(guī)則,其中排序平面包括由具有對應(yīng)的源ID的IO設(shè)備和主處理器(102)發(fā)起的流量。根據(jù)一個示例性實現(xiàn),探聽屬性字段318值‘0’對應(yīng)于缺省高速緩存一致性管理方案,其中探聽事務(wù)以增強硬件級別的高速緩存一致性。另一方面,探聽屬性字段318中的值‘1’中止缺省高速緩存一致性管理方案,并且事務(wù)沒有被探聽。相反,所訪問的數(shù)據(jù)或者是非可高速緩存的(non-cacheable),或者其一致性由軟件來管理。
·虛擬信道ID字段306如這里所使用的,虛擬信道ID字段306標識與事務(wù)相關(guān)聯(lián)的獨立虛擬信道。根據(jù)一個實施例,虛擬信道標識符(VCID)是4比特字段,其允許以每個事務(wù)為基礎(chǔ)來標識多達16個虛擬信道(VC)。下面的表I中提供了VCID定義的一個示例
表I虛擬信道ID編碼虛擬信道根據(jù)本發(fā)明的一個方面,EGIO接口106的事務(wù)層202支持在EGIO通信鏈路112的帶寬內(nèi)建立和使用(多條)虛擬信道。如上所述的本發(fā)明的虛擬信道(VC)方面被用于基于將要通過信道傳輸?shù)膬?nèi)容的所需的獨立性而在單個物理EGIO鏈路112中定義單獨的邏輯通信接口。在這方面,虛擬信道可以基于一個或多個特性來建立,例如帶寬需求、服務(wù)等級、服務(wù)類型(例如系統(tǒng)服務(wù)信道)等等。
(多條)虛擬信道和流量(或事務(wù))等級標識符的組合被提供以支持某些等級的應(yīng)用支持的有區(qū)別的服務(wù)和服務(wù)質(zhì)量(QoS)。如這里所使用的,流量(或事務(wù))等級是事務(wù)層分組標簽,其通過EGIO組織結(jié)構(gòu)而未經(jīng)修改端到端地進行傳輸。在每個服務(wù)點(例如,交換器、根復(fù)合體等等)處,服務(wù)點使用流量等級標簽來應(yīng)用適當?shù)姆?wù)策略。在這方面,單獨的VC被用于映射流量,所述流量將從不同操作策略和服務(wù)優(yōu)先級獲益。例如,就確保T時間段內(nèi)所傳輸?shù)臄?shù)據(jù)量X而言,需要確定性服務(wù)質(zhì)量的流量可以被映射到同步(或時間協(xié)同)虛擬信道。映射到不同虛擬信道的事務(wù)相互之間可以沒有任何排序需求。即,虛擬信道作為單獨邏輯接口來操作,其具有不同的流控制規(guī)則和屬性。
根據(jù)本發(fā)明的一個示例性實現(xiàn),EGIO兼容元件的每個EGIO通信端口(輸入或輸出)包括端口能力數(shù)據(jù)結(jié)構(gòu)(未具體描述)。包括(a)由端口支持的虛擬信道的數(shù)目,(b)與每個虛擬信道相關(guān)聯(lián)的流量等級,(c)端口VC狀態(tài)寄存器,(d)端口VC控制寄存器,以及(e)與這樣的虛擬信道相關(guān)聯(lián)的仲裁方案中的一個或多個的關(guān)于端口能力的信息保持在端口能力數(shù)據(jù)結(jié)構(gòu)中。根據(jù)一個示例性實現(xiàn),以每個鏈路、每個VC為基礎(chǔ)在耦合的元件之間協(xié)商通信操作參數(shù)和關(guān)聯(lián)的端口能力參數(shù)。
對于由主處理器102發(fā)起的流量,虛擬信道可以要求基于缺省排序機制規(guī)則的排序控制,或者可以完全不依順序地操作流量。根據(jù)一個示例性實現(xiàn),VC包含下列兩種類型的流量通用IO流量和同步流量。即,根據(jù)該示例性實現(xiàn),描述了兩類虛擬信道(1)通用IO虛擬信道,和(2)同步虛擬信道。
如這里所使用的,事務(wù)層202為組件主動支持的一個或多個虛擬信道的每個保持獨立流控制。如這里所使用的,所有的EGIO兼容組件一般都會支持缺省通用IO類型虛擬信道,例如虛擬信道0,它的服務(wù)等級是“盡最大努力(best effort)”,其中在這一類型的不同虛擬信道之間不需要排序關(guān)系。缺省地,VC0被用于通用IO流量,而VC1或更高(VC1-VC7)被分配用于操作同步流量。在另一個實現(xiàn)中,任何虛擬信道都可以被分配用于操作任何流量類型。參考圖4,示出了包括多條獨立管理的虛擬信道的EGIO鏈路的概念示圖。
參考圖4,根據(jù)本發(fā)明的一個方面,示出了包括多條虛擬信道(VC)的示例性EGIO鏈路112的示圖。根據(jù)圖4所圖示的示例性實現(xiàn),示出的EGIO鏈路112包括在EGIO接口106之間創(chuàng)建的多條虛擬信道402、404。根據(jù)一個示例性實現(xiàn),對于虛擬信道402,示出了來自多個源406A...N的流量,這些流量至少由它們的源ID來區(qū)分。如所示,建立了虛擬信道402,并且在來自不同源(例如,代理、接口等)的事務(wù)之間沒有排序需求。
類似地,示出的虛擬信道404包括來自多個源多個事務(wù)408A...N的流量,其中每個事務(wù)由至少一個源ID指示。根據(jù)圖示的示例,來自源ID0 406A的事務(wù)被嚴格排序,除非由事務(wù)頭部的屬性字段304所修改,而來自源408N的事務(wù)沒有這樣的排序規(guī)則。
同步信道如上所述,建立同步信道以在電子裝置100的EGIO體系結(jié)構(gòu)中的請求器代理和(多個)完成器代理之間傳輸對時間敏感的內(nèi)容(例如,多媒體內(nèi)容流)。根據(jù)一個示例性實現(xiàn),在EGIO體系結(jié)構(gòu)之間存在兩個不同的同步通信范例,例如,端點到根復(fù)合體模型以及對等(或端點到端點)通信模型。
在端點到根復(fù)合體模型中,主要的同步流量是對根復(fù)合體104的存儲器讀取和寫入請求以及來自根復(fù)合體104的讀取完成。在對等模型中,同步流量局限為單播(unicast)、僅壓入(push-only)事務(wù)(例如,諸如存儲器寫入的公布事務(wù)或消息)。僅壓入事務(wù)可以在單個主域中或是多個主域中。
為了支持具有保證帶寬和確定性服務(wù)延遲的同步數(shù)據(jù)傳輸,在請求器/完成器對和EGIO通信組織結(jié)構(gòu)之間建立了同步“協(xié)定”。根據(jù)一個實施例,“協(xié)定”將執(zhí)行資源預(yù)留和流量調(diào)整以防止虛擬信道上的擁塞和過度預(yù)約。
參考圖5,示出了用于在EGIO體系結(jié)構(gòu)中建立并管理同步通信信道的示例性方法。根據(jù)圖5所圖示的示例性實施例,方法以方框502開始,其中識別了EGIO組織結(jié)構(gòu)的一個或多個元件(即、根復(fù)合體104、交換器108、端點110、鏈路112、橋114等等)的通信能力。
根據(jù)一個示例性實現(xiàn),EGIO組織結(jié)構(gòu)的至少一個子集的通信能力對根復(fù)合體104的帶寬管理器公開,該帶寬管理器管理EGIO體系結(jié)構(gòu)中的同步通信資源的地址分配。在元件的初始化期間發(fā)生元件的通信能力的公開,例如在主電子裝置100啟動的時候,或者在EGIO兼容設(shè)備熱插拔到主電子裝置的時候。根據(jù)一個實施例,公開的信息(例如來自EGIO代理106中的數(shù)據(jù)結(jié)構(gòu))包括端口標識、端口地址分配、(多個)虛擬信道分配、帶寬能力等等中的一個或多個。該信息保存在可由帶寬管理器訪問的數(shù)據(jù)結(jié)構(gòu)中以用于生成同步協(xié)定,這在下文將詳細描述。
在電子裝置100的常規(guī)操作過程期間,可能需要或期望在裝置100中的兩個(或多個)代理之間建立同步通信信道。在這種情況下,在方框504中,根復(fù)合體104的帶寬管理器從(或代表)請求器/完成器對接收對EGIO組織結(jié)構(gòu)中的同步通信資源的請求。如這里所使用的,請求包括諸如帶寬和服務(wù)延遲需求的期望通信資源的指示。
在方框506中,在接收到同步通信資源的請求之后,根復(fù)合體104的帶寬管理器分析EGIO體系結(jié)構(gòu)的至少一個適當子集的可用通信資源,以在方框508中確定同步通信資源的請求是否合適。根據(jù)一個實施例,根復(fù)合體104的帶寬管理器分析包括了請求器和完成器之間的通信路徑的與端口106、(多個)交換器108、(多條)鏈路112等相關(guān)聯(lián)的信息,來確定是否可以滿足合同步通信請求的帶寬和服務(wù)延遲需求。在另一個實施例中,請求器/完成器對只是以逐個鏈路為基礎(chǔ)在它們自身和任何介入元件之間建立同步協(xié)定(或關(guān)于操作參數(shù)的協(xié)商協(xié)約)如果在方框508中根復(fù)合體104的帶寬管理器確定請求的通信資源不可用,則根復(fù)合體丟棄同步信道的請求,并且在方框510中可以提供所請求的資源不可用的指示。根據(jù)某些實施例,可用資源的指示會提供給請求器/完成器對,隨后請求器/完成器對還是根據(jù)所指示的可用資源,可以決定重新發(fā)布同步通信資源的請求。在另一個實施例中,帶寬管理器將通知請求了資源的實體分配了某個帶寬(其可能小于所請求的)。在這種情況下,請求實體不需要重新發(fā)布請求。
根據(jù)一個示例性實施例,在確定是否能滿足對同步通信資源的請求時,并且在方框512中建立同步協(xié)定時,根復(fù)合體104的帶寬管理器如下計算請求器/完成器對的帶寬需求BW=(N*Y)/T[1]公式將分配帶寬(BW)定義為在特定時間段(T)內(nèi)具有特定有效載荷大小(Y)的事務(wù)的特定數(shù)目(N)的函數(shù)。
同步協(xié)定中的另一個重要參數(shù)是延遲?;趨f(xié)定,同步事務(wù)可以在特定的延遲(L)內(nèi)完成。一旦帶寬管理器允許請求器/完成器對進行同步通信,在常規(guī)操作條件下,完成器和介入的EGIO體系結(jié)構(gòu)元件(例如,交換器、(多條)鏈路、根復(fù)合體等等)向請求器保證帶寬和延遲。
因此,在方框512中產(chǎn)生的同步協(xié)定規(guī)定了由(多個)EGIO接口106實現(xiàn)的特定服務(wù)紀律,該接口106參與了EGIO體系結(jié)構(gòu)中的同步通信。以下述方式將服務(wù)紀律作用于EGIO交換器108和完成器(例如,端點110、根復(fù)合體104等等),即注入請求的服務(wù)受特定服務(wù)時間間隔(t)支配。該機制用于提供當請求器發(fā)出的同步分組被處理時的控制方法。
因此,在方框514中以下述方式管理同步流量,即只有遵照協(xié)商的同步協(xié)定而被注入到EGIO體系結(jié)構(gòu)的分組才允許立即前進,并且開始由EGIO體系結(jié)構(gòu)元件處理。通過流控制機制,阻止了試圖注入比按照協(xié)商協(xié)議允許的更多的同步流量的不兼容請求器進行這樣的操作,這將在下文詳細描述(例如見數(shù)據(jù)鏈路層特征集)。
根據(jù)一個示例性實現(xiàn),同步時間段(T)被均勻的劃分為多個虛擬時隙(t)的單元。在一個虛擬時隙中最多允許一個同步請求。根據(jù)一個實施例,作為EGIO接口的數(shù)據(jù)結(jié)構(gòu)中的頭部信息來提供由EGIO組件支持的虛擬時隙的大小(或持續(xù)時間)。在另一個實現(xiàn)中,在接收到初始化事件(例如,冷啟動、復(fù)位等等)時,通過來自EGIO組件的廣播消息來報告虛擬時隙的大小。在另一個實現(xiàn)中,在接收到專用請求消息時,通過來自EGIO組件的專用信息消息來報告虛擬時隙的大小。在另一個實現(xiàn)中,虛擬時隙的大小可以是固定的,并且同步帶寬管理器軟件可以下述方式交錯嵌入有效(active)和無效(inactive)時隙(在帶寬分配期間),所述方式有效地創(chuàng)建“較寬”的時隙。
根據(jù)一個實施例,虛擬時隙(t)的持續(xù)時間是100ns。同步時間段(T)的持續(xù)時間取決于所支持的基于時間仲裁方案(例如,基于時間加權(quán)輪詢(weighted round-robin,WRR)(或加權(quán)順序))的階段(phase)數(shù)目。根據(jù)一個實施例,階段數(shù)目由同步虛擬時隙的數(shù)目規(guī)定,并且由每個元件中保持的端口仲裁表中的條目數(shù)目指示。當端口仲裁表大小等于128時,在同步時間段中有128個虛擬時隙(t),即,T=12.8μs。
根據(jù)一個示例性實施例,在EGIO配置期間建立同步事務(wù)的最大有效載荷大小(Y)。在配置之后,在給定EGIO層次域最大有效載荷大小是固定的。固定最大有效載荷大小的值被用于同步帶寬預(yù)算,而不考慮與請求器/完成器之間的同步事務(wù)相關(guān)聯(lián)的數(shù)據(jù)有效載荷的實際大小。
在討論了同步時間段(T)、虛擬時隙(t)和最大有效載荷(Y)的條件下,時間段中的虛擬時隙的最大數(shù)目是Nmax=T/t[2]并且,最大可指定同步帶寬是BWmax=Y(jié)/t[3]從而,同步帶寬可以分配的粒度(granularity)定義如下BW粒度=Y(jié)/T[4]將同步帶寬BW鏈路分配給通信鏈路112與按照每個同步時間段(T)分配N鏈路虛擬時隙相類似,其中N鏈路由下式給出
N鏈路=BW鏈路/BW粒度[5]為了保持對鏈路的受調(diào)節(jié)的訪問,用作同步流量的出口(egressport)的交換器端口建立具有多達Nmax個條目的數(shù)據(jù)結(jié)構(gòu),其中Nmax是在給定鏈路帶寬、粒度和延遲需求的條件下容許的同步會話的最大數(shù)目。表中的一個條目代表同步時間段(T)中的一個虛擬時隙。當表條目被給定端口號碼(PN)的值時,意味著該時隙被分配給由端口號碼指定的入口(ingress port)。因此,當端口仲裁表中的N鏈路條目被給定了PN的值時,N鏈路虛擬時隙被分配給入口。只有當由出口的同步時間計數(shù)器(其每隔t時間增加1,并且當?shù)竭_T時重新開始計數(shù))訪問的表條目被設(shè)定為PN時,出口才會容許來自入口的對其它服務(wù)的一個同步請求事務(wù)。即使在入口中準備好了待處理的同步請求,直到下一輪仲裁(例如,基于時間、加權(quán)輪詢(WRR)仲裁)才會處理它。以此方式,基于時間的端口仲裁數(shù)據(jù)結(jié)構(gòu)用作同步帶寬分配和流量調(diào)節(jié)。
如這里所使用的,上面討論的事務(wù)延遲由通過EGIO組織結(jié)構(gòu)的延遲和完成器產(chǎn)生的延遲兩者組成。為每個事務(wù)定義同步事務(wù)延遲,并且以虛擬時隙t為單位測量同步事務(wù)延遲。
對于端點到根復(fù)合體通信模型中的請求器,讀取延遲定義為往返程延遲,即,從設(shè)備向它的事務(wù)層遞交存儲器讀取請求分組(在發(fā)送方)時到對應(yīng)的讀取完成到達設(shè)備的事務(wù)層(接收方)時的延時。對于任一個通信模型中的請求器,寫入延遲定義為從請求器發(fā)送存儲器寫入請求到其事務(wù)層的發(fā)送端時到數(shù)據(jù)寫入變得在完成器的存儲器子系統(tǒng)中全局可見時的延時。當訪問存儲器地址的所有代理獲得更新數(shù)據(jù)時,對存儲器的寫入達到全局可見的情況。
作為同步協(xié)定的一部分,提供了同步事務(wù)延遲的上邊界和下邊界。請求器中的同步數(shù)據(jù)緩沖器大小可以使用最小和最大同步事務(wù)延遲來確定。如下文所詳細介紹的,最小同步事務(wù)延遲比最大同步事務(wù)延遲小得多。
對于請求器,可以根據(jù)下面的等式(6)來計算最大同步(讀取或?qū)懭?事務(wù)延遲(L),
L=L組織結(jié)構(gòu)+L完成器[6]其中L組織結(jié)構(gòu)是EGIO組織結(jié)構(gòu)的最大延遲,而L完成器是完成器的最大延遲。
EGIO鏈路112或EGIO組織結(jié)構(gòu)的事務(wù)延遲定義為從事務(wù)在發(fā)送端公布時到它在接收端可用時的延時。這適用于讀取和寫入事務(wù)兩者。在這方面,L組織結(jié)構(gòu)取決于拓撲結(jié)構(gòu)、由每條鏈路112引起的延遲以及從請求器到完成器的路徑中的仲裁點。
繼續(xù)參考圖5,過程前進到方框516,其中帶寬管理器確定同步通信信道的使用是否完成。即,帶寬管理器確定同步通信對話是否已經(jīng)結(jié)束,并且因而確定為支持同步信道而分配的虛擬信道資源是否可被釋放而由EGIO組織結(jié)構(gòu)使用。根據(jù)一個實施例,帶寬管理器從一個或多個請求器/完成器對接收指示,即不再需要同步資源的指示。在另一個實施例中,在某個無效時間段之后帶寬管理器推斷出同步通信已經(jīng)結(jié)束。
如果在方框516中帶寬管理器確定同步通信沒有結(jié)束,則過程回到方框514。
或者,過程前進到方框518,其中帶寬管理器取消同步協(xié)定,從而釋放該帶寬以支持余下的虛擬信道。根據(jù)一個實施例,帶寬管理器通知EGIO體系結(jié)構(gòu)的一個或多個其他元件,同步協(xié)議不再有效。
事務(wù)排序盡管使所有響應(yīng)依次序被處理可能更簡單,但是事務(wù)層202試圖通過準許事務(wù)的重新排序來提高性能。為了便于這樣的重新排序,事務(wù)層202“標記”事務(wù)。即根據(jù)一個實施例,事務(wù)層202添加事務(wù)描述符到每個分組,使得它的傳輸時間可以由EGIO體系結(jié)構(gòu)中的元件來優(yōu)化(例如,通過重新排序),且不會丟失分組最初被處理的相對順序。這樣的事務(wù)描述符被用于幫助請求和完成分組通過EGIO接口層次而進行路由。
因而,EGIO互連體系結(jié)構(gòu)和通信協(xié)議的創(chuàng)新方面之一是它提供了不依順序通信,從而通過減少空閑或等待狀態(tài)來提高數(shù)據(jù)吞吐量。在這方面,事務(wù)層202使用了一組規(guī)則來定義EGIO事務(wù)的排序需求。定義了事務(wù)排序需求來確保軟件的正確操作,所述軟件被設(shè)計成支持生產(chǎn)者-消費者排序模型,同時允許基于不同排序模型(例如,圖形附著應(yīng)用的松散排序)的應(yīng)用的改進的事務(wù)操作靈活性。下文描述了兩種不同類型的排序需求單個排序平面模型和多個排序平面模型。
·基本事務(wù)排序-單個“排序平面”模型假定以下兩個組件通過與圖1相似的EGIO體系結(jié)構(gòu)連接起來存儲器控制集線器,提供到主處理器和存儲器子系統(tǒng)的接口;以及IO控制集線器,提供到IO子系統(tǒng)的接口。兩個集線器都含有用于操作輸入和輸出流量的內(nèi)部隊列,并且在這個簡單模型中所有IO流量都被映射到單個“排序平面”。(注意,事務(wù)描述符源ID信息為EGIO層次中的每個代理都提供了唯一的標識符,還要注意,映射到源ID的IO流量可以攜帶不同事務(wù)排序?qū)傩?。在IO發(fā)起(IO-initiated)的流量和主發(fā)起(host-initiated)的流量之間規(guī)定了本系統(tǒng)配置的排序規(guī)則。根據(jù)上述說法,映射到源ID的IO流量和主處理器發(fā)起的流量代表在單個“排序平面”中傳遞的流量。
參考表II,下面提供了該事務(wù)排序規(guī)則的示例。該表中定義的規(guī)則普遍適用于包括存儲器、IO配置和消息的EGIO系統(tǒng)中的所有類型的事務(wù)。在下面的表II中,列代表兩個事務(wù)的第一個,而行代表第二個。表條目指明了兩個事務(wù)之間的排序關(guān)系。表條目定義如下是—一般會允許第二個事務(wù)超過第一個事務(wù)以避免死鎖。(當發(fā)生阻塞時,需要第二個事務(wù)超過第一個事務(wù)。一般應(yīng)當考慮公平以防止饑餓(starvation))。
Y/N—沒有需求。第一個事務(wù)可選地超過第二個事務(wù)或者被其阻塞。
否—一般不會允許第二個事務(wù)超過第一個事務(wù)。這需要保持嚴格的排序。
表II單個排序平面的事務(wù)排序和死鎖避免
表III事務(wù)排序解釋·高級事務(wù)排序—“多個平面”事務(wù)排序模型前述部分定義了單個“排序平面”內(nèi)的排序規(guī)則。如上所述,EGIO互連體系結(jié)構(gòu)和通信協(xié)議使用唯一的事務(wù)描述符機制來關(guān)聯(lián)事務(wù)和額外的信息,以支持更復(fù)雜的排序關(guān)系。事務(wù)描述符中的字段允許創(chuàng)建多個“排序平面”,從IO流量排序來看這些排序平面是互相獨立的。
每個“排序平面”都包括對應(yīng)于具體IO設(shè)備(由唯一的源ID指定)的排隊/緩沖邏輯以及傳輸主處理器發(fā)起的流量的排隊/緩沖邏輯。“平面”內(nèi)的排序一般只在這兩者之間定義。對獨立于其它“排序平面”的每個“排序平面”都實施了在前述部分規(guī)定的用來支持生產(chǎn)者/消費者用途模型并且防止死鎖的規(guī)則。例如,由“平面”N發(fā)起的請求的讀取完成可以繞過由“平面”M發(fā)起的請求的讀取完成。然而,平面N的讀取完成和平面M的讀取完成都不能繞過由主機發(fā)起的公布存儲器寫入。
盡管平面映射機制的使用允許存在多個排序平面,但是排序平面中的一些或全部可以“折疊”到一起以簡化實現(xiàn)(即,將多個單獨控制的緩沖器/FIFO結(jié)合成單個)。當所有平面折疊在一起時,僅使用事務(wù)描述符源ID機制來幫助事務(wù)的路由,并且它不用于在IO流量的獨立流之間松散排序。
除了上述的內(nèi)容,事務(wù)描述符機制規(guī)定了使用排序?qū)傩栽趩蝹€排序平面內(nèi)修改缺省排序。從而可以以每個事務(wù)為基礎(chǔ)而控制排序的修改。
事務(wù)層協(xié)議分組格式如上所述,創(chuàng)新EGIO體系結(jié)構(gòu)使用基于分組的協(xié)議以在相互通信的兩個設(shè)備的事務(wù)層之間交換信息。EGIO體系結(jié)構(gòu)通常支持存儲器、IO、配置和消息事務(wù)類型。一般使用要求或完成分組運送這些事務(wù),其中只有當要求時,即要求返回數(shù)據(jù)或請求事務(wù)的確認接收時,才使用完成分組。
參考圖9,根據(jù)本發(fā)明的教導(dǎo)示出了示例性事務(wù)層協(xié)議的示圖。根據(jù)圖9所圖示的示例性實現(xiàn),圖示的TLP頭部900包括格式字段、類型字段、擴展類型/擴展長度(ET/EL)字段和長度字段。應(yīng)當知道,某些TLP在頭部之后包括如頭部中列出的格式字段確定的數(shù)據(jù)。沒有TLP可以含有多于MAX_PAYLOAD_SIZE設(shè)定的極限的數(shù)據(jù)。根據(jù)一個示例性實現(xiàn),TLP數(shù)據(jù)是4字節(jié)自然對齊的,并且以4字節(jié)雙字(DW)增加。
如這里所使用的,根據(jù)下面的定義格式(FMT)字段規(guī)定了TLP的格式·000-2DW頭部,無數(shù)據(jù)
·001-3DW頭部,無數(shù)據(jù)·010-4DW頭部,無數(shù)據(jù)·101-3DW頭部,有數(shù)據(jù)·110-4DW頭部,有數(shù)據(jù)·預(yù)留所有其它的編碼類型字段用于指示TLP中使用的類型編碼。根據(jù)一個實現(xiàn),一般應(yīng)該解碼格式[2:0]和類型[3:0]兩者來確定TLP格式。根據(jù)一個實現(xiàn),類型[3:0]字段中的值用于確定擴展類型/擴展長度字段是否被用于擴展類型字段或長度字段。ET/EL字段一般只用于擴展存儲器類型讀取請求的長度字段。
長度字段提供了有效載荷長度的指示,還是以DW增加,如下所示0000 0000=1DW0000 0001=2DW......1111 1111=256DW下面提供了示例性TLP事務(wù)類型的至少一個子集、它們對應(yīng)的頭部格式以及描述的總結(jié),表IV中
表IVTLP類型總結(jié)附錄A中提供了有關(guān)請求和完成的其它細節(jié),其中的說明在這里作為參考而被明確引入。
流控制與傳統(tǒng)流控制方案普遍關(guān)聯(lián)的限制之一是它們對可能發(fā)生的問題有反應(yīng)(reactive),而不是在預(yù)先(proactively)降低發(fā)生這些問題首先發(fā)生的機會。例如在傳統(tǒng)的PCI系統(tǒng)中,發(fā)送者將向接收者發(fā)送信息直到它接收到停止/中止發(fā)送的消息。其中停止/中止發(fā)送直到下一個通知。這些請求隨后可以跟隨有重新發(fā)送起始于發(fā)送的給定點處的分組的請求。而且,目前這樣的流控制機制是基于硬件的,它們不適合上述動態(tài)建立、獨立管理的虛擬信道應(yīng)用。本領(lǐng)域技術(shù)人員將理解,這一反應(yīng)(reactive)方法導(dǎo)致周期浪費,并且在這方面可能效率較低。
為了解決這個限制,EGIO接口106的事務(wù)層202包括流控制機制,其預(yù)先降低發(fā)生溢出情況的機會,同時還規(guī)定以發(fā)起者和(多個)完成者之間建立的虛擬信道的每個鏈路為基礎(chǔ)來遵守排序規(guī)則。
根據(jù)本發(fā)明的一個方面,引入了流控制“信用”的概念,其中接收者共享下列信息(a)緩沖器(信用)大小,和(b)對于發(fā)送者和接收者之間建立的每條虛擬信道(即以每條虛擬信道為基礎(chǔ))的發(fā)送者當前可用緩沖器空間。這使得發(fā)送者的事務(wù)層202能夠保持可用緩沖器空間的估值(例如,可用信用的計數(shù)),并且如果確定發(fā)送將在接收緩沖器內(nèi)產(chǎn)生溢出情況則能夠預(yù)先節(jié)流通過任何虛擬信道進行的發(fā)送,其中所述可用緩沖器空間分配給通過被識別的虛擬信道進行的發(fā)送。
根據(jù)本發(fā)明的一個方面,如上所述,事務(wù)層202有選擇地調(diào)用流控制來防止與虛擬信道相關(guān)聯(lián)的接收緩沖器的溢出并且能夠遵循排序規(guī)則。根據(jù)一個實現(xiàn),由發(fā)送者使用處理層202的流控制機制以通過EGIO鏈路112來跟蹤代理(接收者)中的可用隊列/緩沖器空間。在這方面,與傳統(tǒng)的流控制機制不同,發(fā)送者而非接收者負責(zé)確定何時接收者暫時不能通過虛擬信道接收更多內(nèi)容。如這里所使用的,流控制沒有暗示請求已經(jīng)到達它的最終完成器。
在EGIO體系結(jié)構(gòu)中,流控制與數(shù)據(jù)完整性機制相互獨立,其中所述數(shù)據(jù)完整性機制用于實現(xiàn)發(fā)送者和接收者之間的可靠信息交換。即,流控制能夠保證從發(fā)送者到接收者的事務(wù)層分組(TLP)信息流完好,這是由于數(shù)據(jù)完整性機制(下文討論)保證通過重新傳輸改正錯誤的和丟失的TLP。如這里所使用的,事務(wù)層的流控制機制包括EGIO鏈路112的虛擬信道。在這方面,將在由接收者通告的流控制信用(FCC)中反映由接收者支持的每個虛擬信道。
根據(jù)一個示例性實現(xiàn),由事務(wù)層202和數(shù)據(jù)鏈路層204合作來執(zhí)行流控制。即,使用數(shù)據(jù)鏈路層分組(DLLP)在EGIO鏈路112的兩端之間(例如,以每個VC為基礎(chǔ))傳輸流控制信息,以由事務(wù)層202的流控制機制使用。為了方便描述流控制機制,區(qū)分出下列分組信息類型或流控制信用類型(a)公布請求頭部(PH)(b)公布請求數(shù)據(jù)(PD)(c)非公布請求頭部(NPH)(d)非公布請求數(shù)據(jù)(NPD)(e)讀取、寫入和消息完成頭部(CPLH)(f)讀取和消息完成數(shù)據(jù)(CPLD)
如上所述,預(yù)先流控制的EGIO實現(xiàn)中的測量單元是流控制信用(FCC)。根據(jù)僅僅一個實現(xiàn),對于數(shù)據(jù),流控制信用是十六(16)字節(jié)。對于頭部,流控制信用的單元是一個頭部。如上所述,每個虛擬信道都保持了獨立流控制。因此,事務(wù)層202中的流控制機制為分組信息的每個前述類型(如上所述的(a)-(f),)以每個VC為基礎(chǔ)來維持并跟蹤信用的單獨的指示符。根據(jù)所圖示的示例性實現(xiàn),分組的發(fā)送根據(jù)下述內(nèi)容來消耗流控制信用-存儲器/IO/配置讀取請求1NPH單元-存儲器寫入請求1PH+nPD單元(其中n與數(shù)據(jù)有效載荷的大小相關(guān)聯(lián),例如由流控制單元大小(例如,16字節(jié))劃分的數(shù)據(jù)的長度)-IO/配置寫入請求1NPH+1NPD-消息請求取決于消息,至少1PH和/或1NPH單元-帶有數(shù)據(jù)的完成1CPLH+nCPLD單元(其中n與由諸如16字節(jié)的流控制數(shù)據(jù)單元大小劃分的數(shù)據(jù)大小有關(guān))-沒有數(shù)據(jù)的完成1CPLH對于所跟蹤的每種類型的信息,有三個概念寄存器來監(jiān)測消耗的信用(發(fā)送者內(nèi))、信用極限(發(fā)送者內(nèi))和分配的信用(接收者內(nèi)),每個概念寄存器有八(8)比特寬。信用消耗寄存器含有自從初始化以來所消耗的流控制單元的例如模256的總量的計數(shù)。已經(jīng)引入了流控制機制的體系元件,參考圖6,示出了初始化和操作的示例性方法。
圖6是根據(jù)本發(fā)明的僅僅一個示例性實施例的EGIO體系結(jié)構(gòu)的流控制機制的示例性操作方法的流程圖。根據(jù)圖6所圖示的示例性實現(xiàn),方法從方框602開始,其中當硬件初始化或復(fù)位時,初始化這里所描述的與至少一個初始虛擬信道相關(guān)聯(lián)的流控制機制。根據(jù)一個示例性實現(xiàn),當初始化EGIO元件的EGIO接口106的數(shù)據(jù)鏈路層204時,初始化與VC0(例如,用于大量(bulk)通信的缺省虛擬信道)相關(guān)聯(lián)的流控制機制。
在方框604中,事務(wù)層202的流控制機制更新一個或多個流控制寄存器的參數(shù)。即,在初始化時信用消耗寄存器被設(shè)定為全零(0),并且當事務(wù)層承諾發(fā)送信息到數(shù)據(jù)鏈路層時增加。增加的大小與承諾發(fā)送的信息消耗的信用數(shù)量有關(guān)。根據(jù)一個實現(xiàn),當達到或超過最大計數(shù)(例如,全1)時,計數(shù)器翻轉(zhuǎn)為零。根據(jù)一個實現(xiàn),使用無符號8比特模算術(shù)來維持計數(shù)器。
在發(fā)送者中保持的信用極限寄存器含有可能消耗的流控制單元的最大數(shù)值的極限。在接口初始化(例如,啟動、復(fù)位等)后,信用極限寄存器設(shè)定為全零,并且隨后在接收消息后被更新以反映在流控制更新消息(上文進行了描述)中指示的值。
在接收者中保持的信用分配寄存器保持了自從初始化以來授與發(fā)送者的信用總數(shù)的計數(shù)。根據(jù)接收者的緩沖器大小和分配策略來初始設(shè)定該計數(shù)。該值可以包括在流控制更新消息中。
在方框606中,EGIO接口106確定是否需要額外的虛擬信道,即除缺省VC0之外。如果是這樣,隨著建立這些額外VC,則在方框608中事務(wù)層初始化與這些VC相關(guān)聯(lián)的流控制機制,進而更新(多個)流控制寄存器。
如上所述,當初始化與虛擬信道相關(guān)聯(lián)的流控制機制時,值隨著接收者事務(wù)層從它的接收緩沖器移除已處理的信息而增加。增加的大小與產(chǎn)生可用空間的大小有關(guān)。根據(jù)一個實施例,接收者一般會將分配的信用最初設(shè)定為等于或大于下列值的值-PH1流控制單元(FCU);-PDFCU等于設(shè)備最大有效載荷大小的極大可能設(shè)定-NPH1FCU-NPDFCU等于設(shè)備最大有效載荷大小的極大可能設(shè)定-交換設(shè)備-CPLH1FCU-交換設(shè)備-CPLDFCU等于設(shè)備最大有效載荷大小的極大可能設(shè)定和設(shè)備將產(chǎn)生的極大讀取請求中的較小的一個。
-根和端點設(shè)備-CPLH或CPLD255FCU(全1),發(fā)送者認為該值無窮大,因而其從不會阻塞。根據(jù)這樣的實現(xiàn),接收者一般不會為任何消息類型而將信用分配寄存器值設(shè)定為大于127FCU。
根據(jù)另一個實現(xiàn),與上述使用計數(shù)器方法保持信用分配寄存器不同,接收者(或發(fā)送者)可以基于下述等式動態(tài)計算可用的信用C_A=(最近接收的發(fā)送的信用單元數(shù)值)+(可用的接收緩沖器空間)[7]如上所述,發(fā)送者將為發(fā)送者將使用的每個虛擬信道實現(xiàn)概念寄存器(消耗的信用,信用極限)。類似地,接收者為接收者支持的每個虛擬信道實現(xiàn)概念寄存器。一旦為適合的VC建立了(多個)流控制寄存器,隨著過程前進到方框610,EGIO接口106就準備好參與EGIO通信。
在方框610中,發(fā)送者中的EGIO接口106接收數(shù)據(jù)報用于沿著VC發(fā)送。在方框612中,在發(fā)送所接收的數(shù)據(jù)報之前,用來發(fā)送數(shù)據(jù)報通過EGIO鏈路的EGIO元件的事務(wù)層202中的流控制機制證實該發(fā)送不會導(dǎo)致接收者處的溢出情況。根據(jù)一個示例性實現(xiàn),事務(wù)層202的流控制機制基于或至少部分基于使用可用寄存器以及發(fā)送數(shù)據(jù)報將消耗的信用數(shù)量來作出這個確認。
為了預(yù)先制止如果這樣做將引起接收緩沖器溢出的信息的發(fā)送,如果消耗的信用的計數(shù)加上與將要發(fā)送的數(shù)據(jù)相關(guān)的信用單元的數(shù)目,小于或等于信用單元值,則允許發(fā)送者發(fā)送一類信息,即Cred_Req=(Cred_Consumed+<Info_cred>)mod 2[字段大小][8]其中字段大小對于PH、NPH、CLPH等于八(8),對于PD、NPD和CPLD等于十二(12)。
當發(fā)送者接收指示非無窮信用(即,<255FCU)的完成的流控制信息時,發(fā)送者將根據(jù)可用信用來節(jié)流完成。當考慮信用使用及返回時,來自不同事務(wù)的信息不混合在一個信用中。類似地,當考慮信用使用及返回時,來自一個事務(wù)的頭部和數(shù)據(jù)信息也從不混合在一個使用中。因此,當某個分組由于缺乏流控制信用而被阻塞傳輸時,發(fā)送者在確定應(yīng)當準許哪個類型的分組繞過“停滯”分組時將遵循排序規(guī)則(上文)。
如果在方框612中流控制機制確定接收者沒有合適的緩沖器空間來接收數(shù)據(jù)報,則流控制機制暫時中止沿相關(guān)虛擬信道的發(fā)送,直到發(fā)送者的(多個)流控制寄存器進行了更新以準許該發(fā)送,如方框614所示。根據(jù)一個示例性實施例,通過流控制更新消息來接收更新,下文將對此進行詳細描述。
如果在方框612中,流控制機制推斷出數(shù)據(jù)報的發(fā)送不會導(dǎo)致接收者處的溢出情況,則EGIO接口106開始發(fā)送數(shù)據(jù)報,如方框616所示。如上所述,數(shù)據(jù)報的發(fā)送涉及事務(wù)層202、數(shù)據(jù)鏈路層204和/或物理層206處的處理步驟(例如,添加頭部、數(shù)據(jù)完整性信息等等)。
根據(jù)一個實施例,響應(yīng)于通過虛擬信道的數(shù)據(jù)報的接收,接收者中的流控制機制將發(fā)布流控制更新。該更新可以是確認分組中的頭部形式等等。在這樣的實施例中,事務(wù)的流控制信用的返回不認為是意味著事務(wù)已經(jīng)完成或事務(wù)已經(jīng)實現(xiàn)系統(tǒng)可見(visibility)。使用存儲器寫入請求語義的消息信號中斷(MSI)象任何其它存儲器寫入一樣被處理。如果隨后的FC更新消息(來自接收者)指示了比最初指示的值更低的信用極限值,則發(fā)送者應(yīng)當承認新的較低極限,并且提供一個消息錯誤。
根據(jù)這里所描述的流控制機制,如果接收者接收到比分配的信用更多的信息(超過分配的信用),則接收者將向違規(guī)的發(fā)送者指示接收者溢出錯誤,并且對引起溢出的分組發(fā)起數(shù)據(jù)鏈路級別的重試請求。
在方框618中,在接收到流控制更新信息之后,與發(fā)送者中特定虛擬信道有關(guān)的流控制機制進而更新(多個)流控制寄存器以助于隨后的流控制。
上面已經(jīng)介紹了體系結(jié)構(gòu)元件和示例性操作細節(jié),示出了用來傳輸流控制信息的示例性協(xié)議。根據(jù)一個示例性實施例,使用流控制分組在數(shù)據(jù)鏈路層204上傳輸流控制信息。
·流控制分組(FCP)根據(jù)一個實現(xiàn),使用流控制分組(FCP)在設(shè)備之間傳輸保持上述寄存器所需的流控制信息。參考圖9,示出了示例性流控制分組。根據(jù)一個實施例,流控制分組900包括用于具體虛擬信道的關(guān)于六個信用寄存器的狀態(tài)的輸送信息和2-DW頭部格式,其中六個信用寄存器由接收事務(wù)層的流控制邏輯為每個VC保持。
根據(jù)本發(fā)明的教導(dǎo)的一個實施例,如圖9所示有兩種類型的FCP初始FCP和更新FCP。如上所述,在初始化事務(wù)層時,發(fā)布初始FCP 902。在初始化事務(wù)層之后,更新FCP 904被用于更新寄存器中的信息。
在常規(guī)操作期間接收到初始FCP 902引起本地流控制機制的復(fù)位以及初始FCP 902的發(fā)送。初始FCP 902的內(nèi)容包括為PH、PD、NPH、NPD、CPHL、CPHD和信道ID(例如,與應(yīng)用FC信息相關(guān)聯(lián)的虛擬信道)中的每個所通告的信用的至少一個子集。
更新FCP 904的格式與初始FCP 902的格式類似。應(yīng)當知道,盡管FC頭部不包括其它事務(wù)層分組頭部格式普遍具有的長度字段,但是分組的大小是明確的,因為沒有與該分組相關(guān)的額外DW數(shù)據(jù)。
錯誤轉(zhuǎn)發(fā)與傳統(tǒng)的錯誤轉(zhuǎn)發(fā)機制不同,EGIO體系結(jié)構(gòu)依靠附加到被識別為由于如下描述的多個原因而且具有的缺陷的(多個)數(shù)據(jù)報上的尾部信息。根據(jù)一個示例性實現(xiàn),事務(wù)層202使用了多種公知錯誤檢測技術(shù)中的任何一種,例如循環(huán)冗余校驗(CRC)錯誤控制等等。
根據(jù)一個實現(xiàn),為了有助于錯誤轉(zhuǎn)發(fā)特征,EGIO體系結(jié)構(gòu)使用了“尾部”,其附加到攜帶已知壞數(shù)據(jù)的TLP上??赡苁褂梦膊垮e誤轉(zhuǎn)發(fā)的情況示例包括示例#1來自主存儲器的讀取遇到無法糾正的ECC錯誤示例#2向主存儲器的PCI寫入的奇偶錯誤示例#3內(nèi)部數(shù)據(jù)緩沖器或高速緩存中的數(shù)據(jù)完整性錯誤根據(jù)一個示例性實現(xiàn),錯誤轉(zhuǎn)發(fā)僅用于讀取完成數(shù)據(jù)或?qū)懭霐?shù)據(jù)。即,對于與數(shù)據(jù)報相關(guān)的管理開銷中發(fā)生錯誤的情形,例如頭部中的錯誤(例如請求階段、地址/命令等等),一般不使用錯誤轉(zhuǎn)發(fā)。如這里所使用的,具有頭部錯誤的請求/完成通常不能被轉(zhuǎn)發(fā),這是由于不能確定地識別真實目的地,并且因此該錯誤轉(zhuǎn)發(fā)可能引起直接或間接影響,例如數(shù)據(jù)損壞、系統(tǒng)故障等等。根據(jù)一個實施例,錯誤轉(zhuǎn)發(fā)用于傳播錯誤通過系統(tǒng)以及系統(tǒng)診斷。錯誤轉(zhuǎn)發(fā)不使用數(shù)據(jù)鏈路層重試,因此只有在EGIO鏈路112上出現(xiàn)如TLP錯誤檢測機制(例如,循環(huán)冗余校驗(CRC)等等)所確定的發(fā)送錯誤時,才重試以尾部結(jié)束的TLP。因此尾部可能最終引起請求的發(fā)起者重新發(fā)布它(在上述的事務(wù)層)或者采取某個其它的動作。
如這里所使用的,所有EGIO接收者(例如,位于EGIO接口106中)都能夠處理以尾部結(jié)束的TLP。在發(fā)送者中對加入尾部的支持是可選的(因而與老式設(shè)備兼容)。交換器108對尾部和TLP的其余部分一起進行路由。具有對等(peer)路由支持的主橋104一般會一起路由尾部和TLP的其余部分,但不是必需如此。錯誤轉(zhuǎn)發(fā)一般適用于寫入請求(公布的或非公布的)或讀取完成中的數(shù)據(jù)。發(fā)送者知道的含有壞數(shù)據(jù)的TLP應(yīng)當以尾部結(jié)束。
根據(jù)一個示例性實現(xiàn),尾部由2DW組成,其中字節(jié)[7:5]是全零(例如,000),并且比特[4:1]是全一(例如,1111),而預(yù)留所有其它比特。EGIO接收者會認為以尾部結(jié)束的TLP中的所有數(shù)據(jù)都是損壞的。如果應(yīng)用錯誤轉(zhuǎn)發(fā),則接收者將指定TLP的所有數(shù)據(jù)標記為壞(“中毒”)。在事務(wù)層中,分析器(parser)一般會分析到整個TLP的末端并馬上校驗隨后的數(shù)據(jù),以了解數(shù)據(jù)是否結(jié)束。
數(shù)據(jù)鏈路層204如上所述,圖2的數(shù)據(jù)鏈路層204充當事務(wù)層202和物理層206之間的中間級(stage)。數(shù)據(jù)鏈路層204的主要責(zé)任是提供用于通過EGIO鏈路112在兩個組件之間交換事務(wù)層分組(TLP)的可靠機制。數(shù)據(jù)鏈路層204的發(fā)送方接收由事務(wù)層202裝配的TLP、應(yīng)用分組序列標識符(例如,標識號碼)、計算并應(yīng)用錯誤檢測代碼(例如,CRC代碼)并且向物理層206遞交修改的TLP,用于通過挑選的一條或多條在EGIO鏈路112的帶寬中建立的虛擬信道而進行傳輸。
接收數(shù)據(jù)鏈路層204負責(zé)校驗所接收TLP的完整性(例如,使用CRC機制等等),并且負責(zé)向事務(wù)層204遞交完整性校驗是肯定的那些TLP,以用于在轉(zhuǎn)發(fā)到設(shè)備核心之前進行分解。由數(shù)據(jù)鏈路層204提供的服務(wù)通常包括數(shù)據(jù)交換、錯誤檢測與重試、初始化與電源管理服務(wù),以及數(shù)據(jù)鏈路層內(nèi)部通信服務(wù)。基于前述分類提供的每種服務(wù)列舉如下數(shù)據(jù)交換服務(wù)-從發(fā)送事務(wù)層接受用于發(fā)送的TLPi.接受通過鏈路從物理層接收的TLP,并且將它們傳輸?shù)浇邮帐聞?wù)層錯誤檢測&重試-TLP序列號碼與CRC生成-已發(fā)送TLP存儲器,用于數(shù)據(jù)鏈路層重試-數(shù)據(jù)完整性校驗-確認以及重試DLLP-記錄機制和錯誤報告的錯誤指示i.鏈路Ack超時定時器初始化與電源管理服務(wù)-跟蹤鏈路狀態(tài)并能夠傳輸有效/復(fù)位/斷開連接狀態(tài)到事務(wù)層數(shù)據(jù)鏈路層內(nèi)部通信服務(wù)-用于包括錯誤檢測以及重試的鏈路管理功能-在兩個直接相連的組件的數(shù)據(jù)鏈路層之間進行傳輸-沒有暴露給事務(wù)層如在EGIO接口106中所使用的,數(shù)據(jù)鏈路層204對于事務(wù)層202表現(xiàn)為具有不同延遲的信息導(dǎo)管(conduit)。饋送到發(fā)送數(shù)據(jù)鏈路層的所有信息在較晚的時間處將出現(xiàn)在接收數(shù)據(jù)鏈路層的輸出端。延遲將取決于許多因素,包括管道延遲、鏈路112的寬度和操作頻率、通過介質(zhì)的通信信號的發(fā)送、以及由數(shù)據(jù)鏈路層重試引起的延時。由于這些延時,發(fā)送數(shù)據(jù)鏈路層可以向發(fā)送事務(wù)層202施加反壓力(backpressure),并且接收數(shù)據(jù)鏈路層將有效信息的存在和缺失傳輸?shù)浇邮帐聞?wù)層202。
根據(jù)一個實現(xiàn),數(shù)據(jù)鏈路層204跟蹤EGIO鏈路112的狀態(tài)。在這方面,DLL 204與事務(wù)202和物理層206傳輸鏈路狀態(tài),并且通過物理層206執(zhí)行鏈路管理。根據(jù)一個實現(xiàn),數(shù)據(jù)鏈路層含有鏈路控制與管理狀態(tài)機來執(zhí)行這樣的管理任務(wù),參考圖11圖示了所述狀態(tài)機的一個示例。根據(jù)圖11的示例性實現(xiàn),鏈路控制與管理狀態(tài)機的狀態(tài)1100定義如下示例性DLL鏈路狀態(tài)·LinkDown(鏈路停用)(LD)-物理層報告鏈路是不可操作的,或者沒有連接端口·LinkInit(鏈路初始化)(LI)-物理層報告鏈路是可操作的并且正在初始化·LinkActive(鏈路有效)(LA)-常規(guī)操作模式·LinkActDefer(鏈路動作延期)(LAD)-常規(guī)操作中斷,物理層試圖恢復(fù)每個狀態(tài)的對應(yīng)管理規(guī)則·LinkDown(LD)跟隨在組件復(fù)位之后的初始狀態(tài)在進入LD后-將所有數(shù)據(jù)鏈路層狀態(tài)信息復(fù)位成缺省值在LD中時-不和事務(wù)層或物理層交換TLP信息-不和物理層交換DLLP信息-不產(chǎn)生或接受DLLP退出轉(zhuǎn)入LI,如果-來自事務(wù)層的指示是鏈路沒有被SW禁用·LinkInit(LI)在LI中時-不和事務(wù)層或物理層交換TLP信息-不和物理層交換DLLP信息-不產(chǎn)生或接受DLLP
退出轉(zhuǎn)入LA,如果-來自物理層的指示是鏈路訓(xùn)練(training)成功退出轉(zhuǎn)入LD,如果-來自物理層的指示是鏈路訓(xùn)練(training)失敗·LinkActive(LA)在LinkActive中時-和事務(wù)層與物理層交換TLP信息-和物理層交換DLLP信息-產(chǎn)生并接受DLLP。
退出進入LinkActDefer,如果-來自數(shù)據(jù)鏈路層重試管理機制的指示是需要鏈路的重新訓(xùn)練,或者如果物理層報告重新訓(xùn)練正在進行中。
·LinkActDefer(LAD)在LinkActDefer中時-不和事務(wù)層或物理層交換TLP信息-不和物理層交換DLLP信息-不產(chǎn)生或接受DLLP退出進入LinkActive,如果-來自物理層的指示是重新訓(xùn)練成功退出進入LinkDown,如果-來自物理層的指示是重新訓(xùn)練失敗數(shù)據(jù)完整性管理如這里所使用的,數(shù)據(jù)鏈路層分組(DLLP)被用于支持EGIO鏈路數(shù)據(jù)完整性機制。在這方面,根據(jù)一個實現(xiàn),EGIO體系結(jié)構(gòu)規(guī)定了下列DLLP來支持鏈路完整性管理·Ack DLLPTLP序列號碼確認-用于指示成功接收了某些數(shù)量的TLP·Nak DLLPTLP序列號碼否定確認-用于指示數(shù)據(jù)鏈路層重試
·Ack超時DLLP指示最近發(fā)送的序列號碼-用于檢測某些形式的TLP丟失如上所述,事務(wù)層202向數(shù)據(jù)鏈路層204提供TLP邊界信息,使得DLL 204能夠?qū)⑿蛄刑柎a和循環(huán)冗余校驗(CRC)錯誤檢測應(yīng)用于TLP。根據(jù)一個示例性實現(xiàn),接收數(shù)據(jù)鏈路層通過校驗序列號碼、CRC代碼和來自接收物理層的任何錯誤指示來驗證接收的TLP。如果TLP中有錯誤,則使用數(shù)據(jù)鏈路層重試來恢復(fù)。盡管這里的描述使用了CRC,本領(lǐng)域技術(shù)人員應(yīng)當理解也可以使用其它形式的錯誤檢測,例如數(shù)據(jù)報內(nèi)容的哈希散列(hash)等等。
CRC、序列號碼以及重試管理(發(fā)送者)在概念“計數(shù)器”和“標志”方面,以下描述了用于確定TLP、CRC和序列號碼以支持數(shù)據(jù)鏈路層重試的機制CRC與序列號碼規(guī)則(發(fā)送者)·使用下列8比特計數(shù)器o TRANS_SEQ-存儲應(yīng)用于正在準備發(fā)送的TLP的序列號碼.在LinkDown狀態(tài)下設(shè)定為全‘0’.在每個TLP發(fā)送后,增加1.當全‘1’時,增加引起翻轉(zhuǎn)使得全‘0’.Nak DLLP的接收引起值被重新設(shè)定為Nak DLLP中指示的序列號碼o ACKD_SEQ-存儲在最近接收的鏈路到鏈路確認DLLP中確認的序列號碼。
.在LinkDown狀態(tài)下設(shè)定為全‘1’·每個TLP被分配8比特序列號碼o計數(shù)器TRANS_SEQ存儲這個號碼o如果TRANS_SEQ等于(ACKD_SEQ-1)模256,則發(fā)送者一般不會發(fā)送另一TLP,直到Ack DLLP更新ACKD_SEQ,使得條件(TRANS_SEQ==ACKD_SEQ-1)模256不再準確。
·TRANS_SEQ應(yīng)用于TLP,通過o為TLP預(yù)先準備(Prependirg)單個字節(jié)值o為TLP預(yù)先準備單個預(yù)留字節(jié)·使用下述算法為TLP計算32b CRC,并將其附加在TLP末端o使用的多項式是0x04C11DB7-與以太網(wǎng)使用的相同的CRC-32o計算過程是1)CRC-32計算的初始值是通過為序列號碼預(yù)先準備24個‘0’而形成的DW2)以從包括頭部的字節(jié)0的DW到TLP的最后DW的順序,使用來自事務(wù)層的TLP的每個DW而繼續(xù)CRC計算3)取來自計算的比特序列的補碼,結(jié)果是TLP CRC4)CRC DW附加在TLP的末端·已發(fā)送TLP的拷貝一般會存儲在數(shù)據(jù)鏈路層重試緩沖器中·當從其它設(shè)備接收到Ack DLLP時o ACKD_SEQ裝入在DLLP中指定的值o重試緩沖器清除序列號碼在下述范圍內(nèi)的TLP.從ACKD_SEQ的先前值+1.到ACKD_SEQ的新值·當從鏈路上的其它組件接收到Nak DLLP時o如果正在向物理層傳輸TLP,則繼續(xù)該傳輸直到該TLP的傳輸完成o不從事務(wù)層獲得另外的TLP,直到完成了下述步驟o重試緩沖器清除序列號碼在下述范圍內(nèi)的TLP.從ACKD_SEQ的先前值+1.到在Nak DLLP的Nak序列號碼字段中指定的值o重試緩沖器中所有剩余的TLP都重新提交到物理層,用于以原始順序重新發(fā)送.注意這將包括序列號碼在下述范圍內(nèi)的所有TLPo在Nak DLLP的Nak序列號碼字段中指定的值+1
o TRANS_SEQ的值-1.如果在重試緩沖器中沒有剩余的TLP,則Nak DLLP錯誤o根據(jù)錯誤跟蹤和記錄部分,一般會報告錯誤的Nak DLLPo發(fā)送者不需要其它的動作CRC與序列號碼(接收者)類似地,在概念“計數(shù)器”和“標志”方面,以下描述了用于確定TLP、CRC和序列號碼以支持數(shù)據(jù)鏈路層重試的機制·使用下列8比特計數(shù)器o NEXT_RCV_SEQ-為下一個TLP存儲期望的序列號碼.在LinkDown狀態(tài)下設(shè)定為全‘0’.對于接受的每個TLP,增加1,或者當通過接受TLP而清除DLLR_IN_PROGRESS標志(下文描述)時.每次接收到鏈路層DLLP并且DLLR_IN_PROGRESS標志被清除時,裝入值(Trans.Seq.Num+1)o如果NEXT_RCV_SEQ的值與已接收的TLP或Ack超時DLLP指定的值不同,則指示在發(fā)送者和接收者之間的序列號碼同步丟失;在這種情況下·如果設(shè)定了DLLR_IN_PROGRESS標志,則o復(fù)位DLLR_IN_PROGRESS標志o發(fā)送“發(fā)送壞DLLR DLLP”錯誤到錯誤記錄/跟蹤o注意這指示錯誤地發(fā)送了DLLR DLLP(Nak)·如果沒有設(shè)定DLLR_IN_PROGRESS標志,則o設(shè)定DLLR_IN_PROGRESS標志并且發(fā)起Nak DLLPo注意這指示TLP丟失·使用下述3比特計數(shù)器
o DLLRR_COUNT-對在特定時間段內(nèi)發(fā)布的DLLR DLLP的次數(shù)進行計數(shù).在LinkDown狀態(tài)下設(shè)定為b’100.對于發(fā)布的每個Nak DLLP,增加1·當計數(shù)達到b’100時o鏈路控制狀態(tài)機從LinkActive移動到LinkActDefero DLLRR_COUNT隨后被復(fù)位為b’000·如果DLLRR_COUNT不等于b’000,每256個符號時間減1o即,在b’000飽和·使用下述標志o DLLR_IN_PROGESS·下面描述設(shè)定/清除條件·當設(shè)定了DLLR_IN_PROGESS時,丟棄所有已接收的TLP(直到接收到由DLLR_DLLP指示的TLP)·當DLLR_IN_PROGESS是清空的時,如下所述校驗已接收的TLP·對于將要接受的TLP,下述條件一般應(yīng)當為真o已接收的TLP序列號碼等于NEXT_RCV_SEQo物理層沒有指示在TLP接收過程中的任何錯誤o TLP CRC校驗不指示錯誤·當接受了TLP時o TLP的事務(wù)層部分被轉(zhuǎn)發(fā)到接收事務(wù)層o如果設(shè)定,則清空DLLR_IN_PROGESS標志o增加NEXT_RCV_SEQ·當沒有接受TLP時o設(shè)定DLLR_IN_PROGESS標志o發(fā)送Nak_DLLP
·Ack/Nak序列號碼字段一般會包含值(NEXT_RCV_SEQ-1)·Nak類型(NT)字段一般會指示Nak的原因o b’00-由物理層識別的接收錯誤o b’01-TLP CRC校驗失敗o b’10-序列號碼不準確o b’11-由物理層識別的成幀錯誤·接收者一般不會允許從接收TLP的CRC到發(fā)送Nak的時間超過1023個符號時間,如從組件的端口所測量的那樣。
o注意沒有增加NEXT_RCV_SEQ·如果接收數(shù)據(jù)鏈路層沒有接收到在其后的512符號時間內(nèi)跟隨著NakDLLP的期望TLP,則重復(fù)Nak DLLP。
o如果經(jīng)過四次嘗試后仍然沒有接收到期望的TLP,則接收者將.進入LinkActDefer狀態(tài),并啟動由物理層進行的鏈路重新訓(xùn)練.將主要錯誤的發(fā)生指示給錯誤跟蹤與記錄·當下列條件為真時,一般會發(fā)送數(shù)據(jù)鏈路層確認DLLPo數(shù)據(jù)鏈路控制與管理狀態(tài)機處于LinkActive狀態(tài)o已經(jīng)接受了TLP,但還沒有通過發(fā)送確認DLLP進行確認o從最后的確認DLLP起已經(jīng)經(jīng)過了超過512個符號時間·可以比所需要的更頻繁地發(fā)送數(shù)據(jù)鏈路層確認DLLP·數(shù)據(jù)鏈路層確認DLLP在Ack序列Num字段內(nèi)規(guī)定值(NEXT_RCV_SEQ-1)Ack超時機制考慮TLP在鏈路112上被損壞使得接收者不能檢測到TLP的存在的情況。當發(fā)送隨后的TLP時將檢測到丟失的TLP,因為TLP序列號碼與接收者處的期望序列號碼不匹配。然而發(fā)送數(shù)據(jù)鏈路層204通常不能限定下一TLP從發(fā)送傳輸層到在發(fā)送數(shù)據(jù)鏈路層204上面出現(xiàn)的時間。Ack超時機制允許發(fā)送者限定接收者所需的檢測丟失TLP的時間。
Ack超時機制規(guī)則.如果發(fā)送重試緩沖器含有沒有接收到Ack DLLP的TLP,并且如果在超過1024個符號時間的時間段內(nèi)沒有發(fā)送TLP或鏈路DLLP,則一般會發(fā)送Ack超時DLLP。
.在發(fā)送Ack超時DLLP之后,數(shù)據(jù)鏈路層一般不會傳送任何TLP到物理層用于發(fā)送,直到從鏈路的另一方的組件接收到確認DLLP。
o如果在超過1023個符號時間的時間段內(nèi)沒有接收到確認DLLP,則再次發(fā)送Ack超時DLLP,在第四次連續(xù)發(fā)送Ack超時DLLP之后的1024個符號時間內(nèi)仍沒有接收到確認DLLP,進入LinkActDefer狀態(tài)并且啟動由物理層進行的鏈路保持.將主要錯誤的發(fā)生指示給錯誤跟蹤與記錄。
上文已經(jīng)介紹了數(shù)據(jù)鏈路層204的數(shù)據(jù)完整性機制的體系結(jié)構(gòu)上的元件以及協(xié)議元件,參考圖7,其中根據(jù)一個示例性實施例示出了數(shù)據(jù)完整性機制的示例性實現(xiàn)。
圖7是根據(jù)本發(fā)明的一個示例性實施例的用于在EGIO體系結(jié)構(gòu)中監(jiān)視數(shù)據(jù)完整性的示例性方法的流程圖。根據(jù)圖7所圖示的示例性實現(xiàn),方法以方框702開始,其中在EGIO元件的EGIO接口106處通過虛擬信道接收數(shù)據(jù)報。如上所述,數(shù)據(jù)報在提升進入數(shù)據(jù)鏈路層204之前通過物理鏈路層206接收。根據(jù)某些實施例,物理層206確定所接收的數(shù)據(jù)報是否符合分組成幀(framing)需求等。在某些實施例中,丟棄未能滿足這樣的成幀需求的數(shù)據(jù)報,而不會提升或由數(shù)據(jù)鏈路層204的數(shù)據(jù)完整性機制分析。如果證實了成幀,物理層從數(shù)據(jù)報剝?nèi)コ蓭吔缫燥@露數(shù)據(jù)鏈路層分組,其被提升到數(shù)據(jù)鏈路層。
在方框704中,在從物理層206接收到數(shù)據(jù)報之后,在數(shù)據(jù)鏈路層204中證實數(shù)據(jù)鏈路層分組的完整性。如上所述,數(shù)據(jù)鏈路層204的數(shù)據(jù)完整性機制使用序列號碼、CRC信息等等中的一個或多個來證實包括TLLP和其他事物的DLLP中的信息正確。
如果在方框704中數(shù)據(jù)鏈路層204識別了所接收DLLP的完整性中的缺陷,則數(shù)據(jù)鏈路層204調(diào)用上面提到的錯誤處理機制實例。
如果在方框704中,數(shù)據(jù)鏈路層204證實了所接收DLLP的完整性,則在方框708中所接收DLLP的至少一個子集被提升到事務(wù)層202。根據(jù)一個示例性實現(xiàn),剝?nèi)メ槍?shù)據(jù)鏈路層的信息(例如,頭部、注腳(footer)等)以顯露TLLP,其被傳送到事務(wù)層用于進一步的處理。
物理層206繼續(xù)參考圖2,示出了物理層206。如這里所使用的,物理層206使事務(wù)202和數(shù)據(jù)鏈路204與用于鏈路數(shù)據(jù)相互交換的信令技術(shù)相隔離。根據(jù)圖2所圖示的示例性實現(xiàn),物理層劃分為邏輯208和物理210功能子塊。
如這里所使用的,邏輯子塊208負責(zé)物理層206的“數(shù)字”功能。在這方面,邏輯子塊204具有兩個主要劃分發(fā)送部分,準備輸出信息用于由物理子塊210進行發(fā)送;以及接收者部分,用于在將所接收信息傳送到鏈路層204之前識別并準備該信息。邏輯子塊208和物理子塊210通過狀態(tài)與控制寄存器接口協(xié)調(diào)端口狀態(tài)。由邏輯子塊208指導(dǎo)物理層206的控制與管理功能。
根據(jù)一個示例性實現(xiàn),EGIO體系結(jié)構(gòu)使用8b/10b發(fā)送代碼。使用該方案,8比特字符被視為3比特和5比特,所述3比特和5比特各自映射到4比特代碼組和6比特代碼組。這些代碼組被連接以形成10比特符號。EGIO體系結(jié)構(gòu)使用的8b/10b編碼方案提供了專用符號,其與用來表示字符的數(shù)據(jù)符號完全不同。這些專用符號用于下面的多種鏈路管理機制。專用符號還用于成幀DLLP和TLP,使用完全不同的專用符號允許快速便捷地區(qū)分這兩類分組。
物理子塊210包括發(fā)送者和接收者。邏輯子塊208向發(fā)送者供應(yīng)符號,發(fā)送者串行化這些符號并將其發(fā)送到鏈路112。鏈路112向接收者供應(yīng)串行化符號。接收者將所接收信號轉(zhuǎn)換為比特流,比特流被解串行化,并且連同從輸入串行流中恢復(fù)的符號時鐘一起被供應(yīng)道邏輯子塊208。應(yīng)當理解,如這里所使用的,EGIO鏈路112可以代表多種通信介質(zhì)中的任何一種,包括電通信鏈路、光通信鏈路、RF通信鏈路、紅外線通信鏈路、無線通信鏈路等等。在這方面,包括物理層206的物理子塊210的(多個)發(fā)送者和/或(多個)接收者中的每一個都適合于一種或多種上述通信鏈路。
示例性通信代理根據(jù)本發(fā)明的一個示例性實現(xiàn),圖8示出了含有與本發(fā)明相關(guān)聯(lián)的特征的至少一個子集的示例性通信代理的方框圖。根據(jù)圖8所圖示的示例性實現(xiàn),所描述的通信代理800包括控制邏輯802、EGIO通信引擎804、數(shù)據(jù)結(jié)構(gòu)的存儲器空間806、以及可選的一個或多個應(yīng)用808。
如這里所使用的,控制邏輯802向EGIO通信引擎804的一個或多個元件中的每個提供處理資源以選擇性地實現(xiàn)本發(fā)明的一個或多個方面。在這個方面,控制邏輯802被規(guī)定為代表微處理器、微控制器、有限狀態(tài)機、可變成邏輯器件、現(xiàn)場可編程門陣列、或當執(zhí)行時使控制邏輯實現(xiàn)上述之一功能的內(nèi)容中的一個或多個。
所描述的EGIO通信引擎804包括事務(wù)層接口202、數(shù)據(jù)鏈路層接口204、以及包括邏輯子塊208和物理子塊210以連接通信代理800和EGIO鏈路112的物理層接口206中的一個或多個。如這里所使用的,EGIO通信引擎804的元件執(zhí)行與上述的功能相同或類似的功能。
根據(jù)圖8所圖示的示例性實現(xiàn),所描述的通信代理800包括數(shù)據(jù)結(jié)構(gòu)806。如下文參考圖10將要詳細介紹的,數(shù)據(jù)結(jié)構(gòu)806可以包括存儲器空間、IO空間、配置空間和消息空間,所述空間由通信引擎804使用以便于EGIO體系結(jié)構(gòu)的元件之間進行通信。
如這里所使用的,應(yīng)用808被規(guī)定為代表由通信引擎800選擇性調(diào)用的多種應(yīng)用的任何一種,以實現(xiàn)EGIO通信協(xié)議和相關(guān)的管理功能。根據(jù)一個示例性實現(xiàn),帶寬管理器、流控制機制、數(shù)據(jù)完整性機制和對老式中斷的支持被實現(xiàn)為通信代理800中的可執(zhí)行內(nèi)容,所述可執(zhí)行內(nèi)容可由EGIO通信引擎804的一個或多個合適元件有選擇地調(diào)用。
示例性(多種)數(shù)據(jù)結(jié)構(gòu)參考圖10,描述了(多個)EGIO接口106使用的一種或多種數(shù)據(jù)結(jié)構(gòu)的示圖。根據(jù)本發(fā)明的一個實現(xiàn),更具體地說,參考圖10所圖示的示例性實現(xiàn),定義了四(4)個地址空間以在EGIO體系結(jié)構(gòu)中使用配置空間1010、IO空間1020、存儲器空間1030以及消息空間1040。如所示,配置空間1010包括頭部字段1012,其包括定義了EGIO類別的信息,其中主設(shè)備(例如,端點、交換器、根復(fù)合體等等)屬于該類別。這些地址空間的每個都執(zhí)行他們?nèi)缟纤龅母髯怨δ堋?br>
其它實施例圖12是根據(jù)本發(fā)明另一個實施例的其上存有多個指令的存儲器介質(zhì)的方框圖,其中所述指令包括實現(xiàn)EGIO互連體系結(jié)構(gòu)和通信協(xié)議的一個或多個方面的指令。
大體而言,圖12圖示了其上(中)存儲有內(nèi)容1202的機器可訪問介質(zhì)/設(shè)備1200,所述內(nèi)容包括以下內(nèi)容的至少一個子集,即當訪問機器執(zhí)行所述內(nèi)容時,所述內(nèi)容實現(xiàn)了本發(fā)明的創(chuàng)新EGIO接口106。如這里所使用的,機器可訪問介質(zhì)1200被規(guī)定為代表本領(lǐng)域技術(shù)人員公知的多種介質(zhì)的任何一個,例如易失性存儲器設(shè)備、非易失性存儲器設(shè)備、磁存儲介質(zhì)、光存儲介質(zhì)、傳播信號等等。類似地,可執(zhí)行指令被規(guī)定為表達本領(lǐng)域公知的多種軟件語言的任何一種,例如C++、Visual Basic、超文本標記語言(HTML)、Java、可擴充標記語言(XML)等等。此外,應(yīng)當認識到介質(zhì)1200不需要與任何主系統(tǒng)共處在一起。即,介質(zhì)1200可以位于遠程服務(wù)器中,所述服務(wù)器可通信地耦合到執(zhí)行系統(tǒng)并可由執(zhí)行系統(tǒng)訪問。因此,圖12的軟件實現(xiàn)應(yīng)當認為是示例性的,因為另一個存儲介質(zhì)與軟件實施例被認為位于本發(fā)明的精神和范圍之內(nèi)。
盡管以詳細的描述以及對結(jié)構(gòu)特征和/或方法步驟的專用語言的抽象描述了本發(fā)明,但是應(yīng)當理解,在所附權(quán)利要求中定義的本發(fā)明不必限制為所描述的具體特征或步驟。相反,所述具體特征和步驟只是作為實現(xiàn)所主張的發(fā)明的示例性形式而被公開。然而很明顯,可以對其進行各種修改和變化而不會背離本發(fā)明較寬的精神和范圍。因此本說明書和附圖被認為是示例性的而不是限制性的。說明書和摘要沒有被規(guī)定為是窮盡性的或是要將本發(fā)明限制為所公開的確定形式。
所附權(quán)利要求中使用的術(shù)語不應(yīng)被解釋成將本發(fā)明限制為說明書中公開的具體實施例。相反,所附權(quán)利要求完全確定了本發(fā)明的范圍,其中根據(jù)已有權(quán)利要求解釋原則來解釋所述權(quán)利要求。
權(quán)利要求
1.一種方法,包括在通用輸入/輸出接口處從通過通用輸入/輸出鏈路被耦合的遠程通用輸入/輸出接口接收數(shù)據(jù)報;驗證嵌入在所述所接收數(shù)據(jù)報中的一個或多個分組的內(nèi)容;并且在將所述嵌入的分組提升到所述通用輸入/輸出接口的事務(wù)層之前,在所述數(shù)據(jù)報的肯定驗證的基礎(chǔ)上向所述遠程通用輸入/輸出接口發(fā)布以下確認,即成功地接收了所述數(shù)據(jù)報。
2.如權(quán)利要求1所述的方法,所述驗證步驟包括證實在所述通用輸入/輸出接口的物理鏈路層處從所述通用輸入/輸出鏈路無錯地接收了所述數(shù)據(jù)報。
3.如權(quán)利要求2所述的方法,所述驗證步驟還包括識別與所述所接收數(shù)據(jù)報相關(guān)聯(lián)的序列號碼;并且基于或至少部分基于在所述接口之間的通信中使用的最近的序列號碼,證實準確的序列號碼與所接收的數(shù)據(jù)報相關(guān)聯(lián)。
4.如權(quán)利要求3所述的方法,所述驗證步驟還包括識別所述所接收數(shù)據(jù)報中的內(nèi)容完整性指示;基于或至少部分基于所述數(shù)據(jù)報的內(nèi)容,獨立計算內(nèi)容完整性指示;并且證實所述所識別的指示與所述所計算的指示匹配。
5.如權(quán)利要求4所述的方法,其中所述內(nèi)容完整性指示是循環(huán)冗余校驗值。
6.如權(quán)利要求2所述的方法,所述驗證步驟還包括識別所述所接收數(shù)據(jù)報中的內(nèi)容完整性的指示;基于或至少部分基于所述所接收數(shù)據(jù)報的內(nèi)容,獨立計算內(nèi)容完整性指示;并且證實所述所識別的指示與所述所計算的指示匹配。
7.如權(quán)利要求6所述的方法,其中所述內(nèi)容完整性指示是所述數(shù)據(jù)報內(nèi)容的至少一個子集的哈希散列。
8.如權(quán)利要求1所述的方法,所述驗證步驟包括識別所述所接收數(shù)據(jù)報中的有效載荷完整性指示;基于或至少部分基于所述數(shù)據(jù)報的有效載荷,獨立計算所述有效載荷完整性指示;并且證實所述所識別的指示與所述所計算的指示匹配。
9.如權(quán)利要求1所述的方法,所述驗證步驟包括識別與所述所接收數(shù)據(jù)報相關(guān)聯(lián)的序列號碼;并且基于或至少部分基于在所述接口之間的通信中使用的最近的序列號碼,證實準確的序列號碼與所述所接收的數(shù)據(jù)報相關(guān)聯(lián)。
10.如權(quán)利要求1所述的方法,所述發(fā)布確認的步驟包括如果驗證了所述數(shù)據(jù)報,則發(fā)布肯定確認。
11.如權(quán)利要求1所述的方法,所述發(fā)布確認的步驟包括如果驗證所述數(shù)據(jù)報失敗,則發(fā)布否定確認。
12.如權(quán)利要求11所述的方法,所述發(fā)布否定確認的步驟還包括保持連續(xù)否定確認的計數(shù);并且重新初始化所述通用輸入/輸出接口和所述遠程通用輸入/輸出接口之間的所述通用輸入/輸出鏈路。
13.如權(quán)利要求1所述的方法,還包括提升已驗證的分組到所述通用輸入/輸出接口的事務(wù)層。
14.一種通用輸入/輸出接口,包括物理層,將所述通用輸入/輸出接口耦合到通用輸入/輸出通信鏈路;和數(shù)據(jù)鏈路層,與所述物理層相耦合,用來通過所述通用輸入/輸出通信鏈路從遠程通用輸入/輸出接口接收數(shù)據(jù)報,驗證嵌入在所述所接收數(shù)據(jù)報中的一個或多個分組,并且基于或至少部分基于所述驗證的結(jié)果,向所述遠程通用輸入/輸出接口發(fā)布以下確認,即成功接收了所述數(shù)據(jù)報。
15.如權(quán)利要求14所述的通用輸入/輸出接口,其中所述數(shù)據(jù)鏈路層從所述物理層接收以下指示,即從所述通用輸入/輸出鏈路無錯地接收了所述數(shù)據(jù)報。
16.如權(quán)利要求15所述的通用輸入/輸出接口,其中所述數(shù)據(jù)鏈路層識別與所述所接收數(shù)據(jù)報相關(guān)聯(lián)的序列號碼,并且基于或至少部分基于在所述接口之間的通信中使用的最近的序列號碼,證實準確的序列號碼與所述所接收的數(shù)據(jù)報相關(guān)聯(lián)以驗證所述所接收的數(shù)據(jù)報。
17如權(quán)利要求16所述的通用輸入/輸出接口,其中所述數(shù)據(jù)鏈路層識別所述所接收數(shù)據(jù)報中的有效載荷完整性指示,基于或至少部分基于所述數(shù)據(jù)報的有效載荷,計算所述指示的另一版本,并且證實所述所識別的指示與所述所計算的指示匹配,以驗證所述所接收數(shù)據(jù)報的內(nèi)容。
18如權(quán)利要求17所述的通用輸入/輸出接口,其中所述數(shù)據(jù)鏈路層在驗證了所述所接收數(shù)據(jù)報的內(nèi)容之后,將所述所接收數(shù)據(jù)報的內(nèi)容提升到所耦合的所述通用輸入/輸出接口的事務(wù)層。
19.如權(quán)利要求17所述的通用輸入/輸出接口,其中如果驗證所述所接收數(shù)據(jù)報的內(nèi)容失敗,則所述數(shù)據(jù)鏈路層發(fā)布否定確認。
20.如權(quán)利要求19所述的通用輸入/輸出接口,其中所述數(shù)據(jù)鏈路層在發(fā)布一個或多個否定確認之后通過所述物理層開始所述通信鏈路的重新初始化。
21.如權(quán)利要求14所述的通用輸入/輸出接口,其中所述數(shù)據(jù)鏈路層識別所述所接收數(shù)據(jù)報中的有效載荷完整性指示,基于或至少部分基于所述數(shù)據(jù)報的有效載荷,計算所述指示的另一版本,并且證實所述所識別的指示與所述所計算的指示匹配,以驗證所述所接收數(shù)據(jù)報的內(nèi)容。
22.如權(quán)利要求21所述的通用輸入/輸出接口,其中所述指示是循環(huán)冗余校驗值。
23.一種電子組件,適于在電子設(shè)備中使用,包括如權(quán)利要求14所述的通用輸入/輸出接口。
24.一種電子裝置,包括多個如權(quán)利要求23所述的電子組件。
25.一種含有內(nèi)容的存儲介質(zhì),所述內(nèi)容當由訪問設(shè)備執(zhí)行時引起所述設(shè)備實現(xiàn)通用輸入/輸出接口,所述設(shè)備利用所述通用輸入/輸出接口與遠程的其它設(shè)備的通用輸入/輸出接口進行通信,其中所述通用輸入/輸出接口在通用輸入/輸出接口處通過通用輸入/輸出鏈路從遠程通用輸入/輸出接口接收數(shù)據(jù)報,驗證嵌入在所述所接收數(shù)據(jù)報中的一個或多個分組的內(nèi)容,并且在將所述嵌入的分組提升到所述通用輸入/輸出接口的事務(wù)層之前,在所述數(shù)據(jù)報的肯定驗證的基礎(chǔ)上向所述遠程通用輸入/輸出接口發(fā)布以下確認,即成功地接收了所述數(shù)據(jù)報。
26.如權(quán)利要求25所述的存儲介質(zhì),用來實現(xiàn)所述通用輸入/輸出接口的所述內(nèi)容還包括以下內(nèi)容所述內(nèi)容用來證實在所述通用輸入/輸出接口的物理鏈路層處接收了數(shù)據(jù)報并且在所述通用輸入/輸出鏈路上沒有錯誤的通信。
27.如權(quán)利要求25所述的存儲介質(zhì),用來實現(xiàn)所述通用輸入/輸出接口的所述內(nèi)容還包括以下內(nèi)容所述內(nèi)容用來識別與所述所接收數(shù)據(jù)報相關(guān)聯(lián)的序列號碼,并且基于或至少部分基于在所述接口之間的通信中使用的最近的序列號碼,證實準確的序列號碼與所述所接收的數(shù)據(jù)報相關(guān)聯(lián)。
28.如權(quán)利要求27所述的存儲介質(zhì),用來實現(xiàn)所述通用輸入/輸出接口的所述內(nèi)容還包括以下內(nèi)容所述內(nèi)容用來識別所述所接收數(shù)據(jù)報中的內(nèi)容完整性指示,基于或至少部分基于所述數(shù)據(jù)報的內(nèi)容,計算內(nèi)容完整性指示的獨立版本,并且證實所述所識別的指示與所述所計算的指示匹配。
29.如權(quán)利要求28所述的存儲介質(zhì),用來實現(xiàn)所述通用輸入/輸出接口的所述內(nèi)容還包括以下內(nèi)容所述內(nèi)容用來在識別了準確的序列號碼和內(nèi)容完整性的肯定證實之后提升嵌入到所述所接收數(shù)據(jù)報的一個或多個分組的至少一個子集。
30.如權(quán)利要求29所述的存儲介質(zhì),用來實現(xiàn)所述通用輸入/輸出接口的所述內(nèi)容還包括以下內(nèi)容所述內(nèi)容用來在檢測到錯誤的序列號碼或沒能證實內(nèi)容完整性或二者的結(jié)合之后發(fā)布否定確認。
31.如權(quán)利要求30所述的存儲介質(zhì),用來實現(xiàn)所述通用輸入/輸出接口的所述內(nèi)容還包括以下內(nèi)容所述內(nèi)容用來在發(fā)布一個或多個否定確認之后引起所述實現(xiàn)設(shè)備重新初始化帶有所述遠程通用輸入/輸出接口的所述通用輸入/輸出鏈路。
全文摘要
本發(fā)明公開了一種增強型通用輸入/輸出通信體系結(jié)構(gòu)、協(xié)議以及相關(guān)的方法。
文檔編號G06F13/14GK1547823SQ02816582
公開日2004年11月17日 申請日期2002年8月23日 優(yōu)先權(quán)日2001年8月24日
發(fā)明者埃里克·韋阿賈, 埃里克 韋阿賈, 阿亞諾維奇, 賈斯明·阿亞諾維奇, J 哈里曼, 戴維·J·哈里曼, M 李, 戴維·M·李, 范寧, 布萊茲·范寧, 格勒梅爾, 比克·格勒梅爾, 肯·克雷塔, 雷塔, A 穆爾, 韋恩·A·穆爾 申請人:英特爾公司