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