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