專利名稱:在PCIe接口上實現快速通路互連協議的制作方法
技術領域:
本發明領域總地涉及計算機系統接口,更具體地但不排他地涉及在PCIe接口上實現 Intel Quickpath Interconnect (快速通路互連)_協議。背景信息計算機系統常見地采用一個或多個互連以利于系統組件之間(例如處理器和存儲器之間)的通信。互連和/或擴充接口也可用于支持內建和附加設備,例如10(輸入/輸出)設備和擴充卡等。在個人計算機引入后的許多年里,主要形式的互連是并行總線。并行總線結構用于內部數據傳輸和擴充總線兩者,例如ISA(工業標準架構)、MCA(微通道架構)、EISA(擴展的工業標準架構)以及VESA局部總線。在1990年代早期英特爾公司引入了 PCI (外圍組件互連)計算機總線。PCI在較早期總線技術上的改進不僅在于提高了總線速度,還在于使用共享地址和數據線引入自動配置和基于事務的數據傳輸。隨著時間推移,計算機處理器時鐘速率以比并行總線時鐘速率更快的步伐增加。結果,計算機工作負荷經常受互連瓶頸而不是處理器速度限制。盡管并行總線支持每循環大數據量(例如在PC1-X下32位或甚至64位)的傳遞,它們的時鐘速率受定時失真因素限制,由此導致對最大總線速率的實際限制。為了克服這個問題,研發出高速串行互連。早期串行互連的例子包括串行ATA、USB (通用串行總線)、火線和RapidIO。另一廣泛使用的標準串行互連是PCI Express,也稱PCIe,它是在PCIel.0標準下在2004年引入的。PCIe被設計成代替舊的PCI和PC1-X標準,同時提供舊有系統支持。PCIe利用點對點串行鏈路,而不是共享的并行總線架構。每個鏈路使用一個或多個快線(lane)支持兩個PCIe端口之間的點對點通信信道,其中每個快線包括雙向串行鏈路。快線使用縱橫開關架構物理地路由,所述縱橫開關架構同時支持多個設備之間的通信。因其固有優勢,PCIe在今日的個人計算機中已取代PCI成為最盛行的互連。PCIe是由PC1-SIG (特殊興趣小組)管理的工業標準。因此,PCIe片可從許多ASIC和硅賣方獲得。最近,英特爾引入了快速通路互連 (QPI)。QPI —開始被實現為點對點處理器互連,它取代使用高性能處理器(例如Intel Xeon _和Itanium 處理器)的平臺上的前端總線。QPI是可升級的,并且在具有采用共享存儲器資源的多個處理器的系統中尤其占優勢。QPI事務使用多層協議架構利用基于分組的傳輸。其特征之一是支持一致性事務(例如存儲器一致性),PCIe則不支持這個。因此,將例如事務一致性的QPI特征和功能擴展至利用PCIe接口的系統將是有利的。
當結合附圖參照下面的詳細描述,本發明前述方面和許多伴隨的優勢將變得更為易懂并更容易理解,在附圖中,相同的附圖標記在各個圖中表示相同的部件,除非另有規定:圖1示出QPI協議棧的層;圖2是示出QPI鏈路的結構的示意圖3示出PCIe協議棧的層;圖4是示出PCIexl6鏈路結構的示意圖;圖5是示出PCIex8鏈路結構的示意圖;圖6是示出PCIex4鏈路結構的示意圖;圖7示出由在PCIe接口上實現QPI協議的一個實施例采用的協議層;圖8示出當工作在利用20個快線的全寬度模式時根據QPI流控制單元(flit)的數據位的映射;圖9示出根據一個實施例80位QPI流控制單元的位在PCIe xl6接口上的映射;圖10示出根據一個實施例80位QPI流控制單元的位在PCIe x8接口上的映射;圖11示出根據一個實施例80位QPI流控制單元的位在PCIe x4接口上的映射;圖12示出根據一個實施例QPI位在使用128b/130b編碼的PCIe xl6接口上的映射;圖13示出根據一個實施例用于將QPI鏈路層實現在PCIe物理層接口的信號;圖14是示出根據一個實施例用于將QPI鏈路層實現在PCIe物理層接口的邏輯和物理塊的方框圖;圖15示出根據一個實施例兩個80位QPI流控制單元在PCIe xl6接口上的映射;圖16是示出根據一個實施例配置成在PCIe接口上實現QPI協議的刀片服務器的一對刀片的示意圖;圖17是示出使用圖16的刀片服務器根據QPI協議支持本地監聽(home snoop)的發消息操作的消息流程圖;以及圖18是示出使用圖16的刀片服務器根據QPI協議支持源監聽(source snoop)的發消息操作的消息流程圖。
具體實施例方式本文描述了在PCIe接口上實現QPI協議的方法和裝置的實施例。在以下描述中,陳述許多具體細節以提供對本發明的實施例的透徹理解。然而,相關領域內技術人員將理解本發明可省去一個或多個特定細節而實現,或通過其它方法、組件、材料等實現。在其它例子中,公知的結構、材料或操作不被示出或詳細說明以避免對本發明某些方面產生混淆。貫穿本說明書,對“一個實施例”或“一實施例”的引用意味著結合該實施例描述的特定特征、結構或特性被包括在本發明的至少一個實施例中。因此,在本說明書通篇的多個位置中的短語“在一個實施例中”或“在一實施例中”的出現不一定全部指向同一實施例。而且,具體特征、結構、或特性可以任何合適的方式在一個或多個實施例中組合。怏諫通路互連總覽QPI事務是藉由在多層協議上傳輸的分組消息來促成的。如圖1所示,這些層包括物理層、鏈路層、傳輸層和協議層。在物理層,數據以20位phit (物理單元)交換。在鏈路層,phit被聚集成80位的flit (流控制單元)。在協議層,使用基于分組的傳輸在代理之間傳遞消息。物理層定義互連的物理結構并負責應對在兩代理之間特定鏈路上的信號的運作細節。該層管理信號線上的數據傳輸,包括電平、定時方面以及涉及在并行快線兩側發送和接收信息的每個位的邏輯結果。如圖2所示,每個互連鏈路的物理連通性由20個差分信號對加上差分前進時鐘來構成。每個端口支持由兩個單向鏈路構成的一鏈路對,以完成兩組件之間的連接。這同時支持兩個方向上的話務。具有QPI端口的組件使用一對單向點對點鏈路通信,這對鏈路被定義為鏈路對,如圖2所示。每個端口包括發送(Tx)鏈路接口和接收(Rx)鏈路接口。對于所示例子,組件A具有連接至組件B Rx端口的Tx端口。一個單向鏈路從組件A向組件B發送,而另一鏈路從組件B向組件A發送。“發送”鏈路和“接收”鏈路是對于特定QPI代理而定義的。組件A發送鏈路將數據從組件A Tx端口發送至組件B Rx端口。該相同的組件A發送鏈路是端口 B接收鏈路。協議棧向上的第二層是鏈路層,它負責可靠數據傳輸和流控制。鏈路層也提供將物理信道虛擬化成多個虛擬信道和消息類。在物理層初始化和訓練結束后,其邏輯子塊在鏈路層指引下工作,該鏈路層負責流控制。從該鏈路工作點向前,邏輯子塊以流控制單元粒度(80位)與鏈路層通信并以物理單元粒度(20位)橫跨鏈路地傳輸流控制單元。流控制單元由整數個物理單元構成,其中物理單元被定義為在一個單元間隔(UI)上傳輸的位數。例如,全寬度QPI鏈路使用四個物理單元發送和接收一完整的流控制單元。每個流控制單元包括72位的負載和8位CRC。路由層負責確保消息被送至其正確的目的地,并提供通過互連結構引導分組的構架。如果從鏈路層遞交的消息去往另一設備中的代理,則路由層將其提交給正確的鏈路以在該鏈路上發送。去往該本地設備上的代理的所有消息被向上傳遞給協議層。協議層發揮多種功能。它使用回寫協議管理接口的高速緩存一致性。它也具有用于管理非一致性發消息的一組規則。消息是使用分組在協議層上的代理之間傳遞的。協議層管理跨多個鏈路的消息傳遞,這牽涉到多個設備中的多個代理。跨分布式高速緩存和存儲器控制器的系統高速緩存一致性是通過參與一致性存儲器空間事務的分布式代理維持的,它受由協議層定義的規則作用。QPI —致性協議既支持本地監聽行為又支持源監聽行為,如下文中進一步詳細描述的那樣。PCI Express 的簡介和QPI —樣,PCIe支持點對點互連,該點對點互連使用由用于發送和接收中的每一個的一個或多個快線構成的串行鏈路。PCIe鏈路具有至少一個快線——每個快線代表一組差分信號對(一個對用于傳輸,一個對用于接收)。為了縮放帶寬,鏈路可集合多個快線,這由xN表示,其中N可以是所支持的鏈路寬度中的任何一個。例如,在PCIe3.0規范上,PCIe鏈路包括對xl、x2、x4、x8、xl2、xl6和x32快線寬度的操作。在硬件初始化過程中,在快線寬度與鏈路每端的兩個代理的工作頻率的協商之后建立每個PCI Express鏈路。如圖3所示,PCI Express使用分層的協議,包括物理層、數據鏈路層和事務層。物理層進一步包括邏輯子塊和電氣子塊。PCI Express使用分組在各組件之間傳達信息。分組被形成在事務層和數據鏈路層中以將信息從發送組件攜帶至接收組件。隨著發送的分組流過其它層,它們被擴充以具有在那些層處理分組所需的附加信息。在接收側,逆過程發生并且分組從其物理層表現轉變為數據鏈路層表現,并最終(對于事務層分組)轉變為可由接收設備的事務層處理的形式。圖3示出事務層分組信息通過各個層的概念流。盡管QPI PHY和PCIe PHY之間具有某些相似,但也存在區別。這些區別的其中一些是鏈路配置和數據編碼。圖4示出PCIe xl6鏈路的物理連通性。如通過“xl6”標識的那樣,該鏈路采用16個快線,每個快線包括一差分信號對。與其采用獨立的時鐘信號,PCIe下的時鐘數據卻是被嵌入到數據傳輸中并經由鏈路末端點處的物理層恢復。具有支持xl6鏈路的電路的PCIe互連也可被配置成兩個x8鏈路。另外,響應于檢測到錯誤,xl6鏈路的寬度可自動地減小至x8鏈路,或甚至減小至x4鏈路。圖5示出采用快線0-7的PCIe x8鏈路的一個例子,而圖6示出采用快線0_3的PCIe x4鏈路的一個例子。PCIe h的 QPI根據本發明的某些方面,披露了在PCIe接口上實現QPI協議的技術。如圖7所示,QPI協議的協議層、路由層和鏈路層被實現在PCIe物理層(PHY)上,這里對PCIe邏輯PHY作了一些修改以支持QPI鏈路層接口。這允許在PCIe接口(和相應的硬件電路)上使用QPI而不需要對電氣架構作任何修改。結果,可使用已有的PCIe設計(包括已有的PCI片)實現QPI。PCIe上的QPI實現支持鏈路分叉和鏈路降級,還有快線逆反。在一個實施例中,X16鏈路可分叉成兩個獨立的X8鏈路。另外,存在錯誤時Χ16鏈路可降級成Χ8或Χ4鏈路。降級的x8可以是物理快線O……7或8……15,而降級的x4可以是物理快線O……3、4……
7、8……11、12……15。x8鏈路可或者在快線O……3或者在4……7降級成x4的。在降級模式下,快線可以是逆反的。在一個實施例中,當針對QPI協議配置時,PCIe PHY根據遵循PCIe3.0的物理層,該物理層使用128b/130b編碼而沒有物理層組幀(例如STP、END)。PCIe上的QPI鏈路可工作在遵循PCIe的速率(例如8GT/s)以`及其它能由鏈路兩端的設備支持的速率下。QPI協議棧保持其鏈路層,包括流控制單元、分組格式、CRC和重試機制。如前所述,在鏈路層的轉移單元是80位流控制單元。因此,為了維持在PCIe PHY上使用QPI鏈路層,執行傳輸的數據位格式的映射。當使用QPI鏈路的全寬度時,80位流控制單元由四個20位物理單元構成,這些物理單元依次在四個UI上被接收。這示出于圖8,其中標注為CO……C7的數據對應于8個CRC位,而標注為IO……171的數據對應于負載數據的72個位(信息位)。另外,CRC和負載數據被圖示為編組成若干個8位字節。在各實施例中,80位流控制單元數據從4個20位物理單元被重新映射到xl6、x8和x4PCIe鏈路上。例如,在一個實施例中,在使用4個Π的20位物理單元中的80位流控制單元數據從20個快線被重映射到使用5個Π的PCIe xl6PHY的PCIe的16個快線上。這示出于圖9,圖9示出在每個Π期間傳遞的數據位以及根據圖7的最初80位流控制單元的8位字節的編組。在圖10的實施例中,80位流控制單元數據被映射到使用10個UI的PCIe x8配置的8個快線上。在圖11的實施例中,80位流控制單元數據被映射到使用20個UI的PCIe x4配置的4個快線上。在前面的實施例中,選擇CRC位和信息位的位置以確保脈沖串長度錯誤被檢測至IJ。下面的錯誤檢測特性被確保:(i)隨機的單倍、雙倍和三倍位錯誤,( )長度達到8的脈沖串錯誤以及(iii)對于xl6鏈路的線錯誤檢測。在一個實施例中,當傳輸QPI流控制單元時采用相同的QPI CRC多項式。由于該鏈路是xl6(或x8或x4)PCIe鏈路,因此位的布局與QPI不同。用于CRC計算的QPI流控制單元級多項式可表示如下:
I71x79+I70x78+I69x77++10x8+C7x7+C0x°在初始化后,在一個實施例中當發送QPI流控制單元時,PXIe PHY工作在128b/130b編碼之下,128b/130b編碼具有如PCIe3.0規范定義的相同擾碼規則和塊對準規貝丨J。在初始化期間,PXIe PHY將從8b/10b編碼開始,8b/10b編碼在2.5GT/s數據率下以進行最初鏈路訓練,并在發送任何QPI流控制單元前通過速度改變操作切換至128b/130b編碼。圖12中示出根據一個實施例的128/130b編碼的一個例子。在128/130b編碼中,攜帶QPI流控制單元的數據塊略為不同于PCIe數據塊。與同步報頭一直為IOb的PCIe數據塊不同,QPI數據塊分別在奇數和偶數快線中使用Olb和IOb的同步報頭位,如圖12所示。QPI數據流開始于第一 QPI數據塊并在接收到除SKP有序集以外的有序集時或者在由接收機檢測到組幀錯誤時結束。如果同步報頭位在奇數和偶數快線中分別為Olb和IOb,則塊是QPI數據塊,并且它也遵從另一 QPI數據塊或僅具有邏輯IDL或有效的有序集的PCIe數據塊。對于QPI數據流,沒有其它任何一種PCIe3.0發射機組幀規則需要被遵守。由于每個流控制單元是80位,具有QPI流控制單元的數據塊不攜帶128b/130b編碼的任一組幀令牌。組幀邏輯由于其固定的大小可望勾畫出流控制單元邊界。流控制單元可跨騎在兩數據塊之間,如圖12所示。如前所述,在PCIe上的QPI協議下,QPI協議的上層保持相同。這些層的最低層是QPI鏈路層。因此,利用QPI鏈路層和PCIe物理層之間的接口。用于促成這種接口的信號的一個實施例示出于圖13。16位-20位轉換當使用工作在正常全寬度模式的PCIxl6鏈路時,來自16個快線的數據被映射到20位的物理單元。PCIe邏輯物理層每個時鐘對xl6鏈路傳遞8UI價值的數據(8x16=128)。QPI鏈路層工作在8UI時鐘,但在2流控制單元(160b)接口之上。每個流控制單元具有其本身的流控制單元有效信號(即它可能在一個時鐘上傳輸單個流控制單元)。X16至x20轉換邏輯本質上是128b-160b轉換。在一個實施例中,流控制單元被盡可能快地傳遞至QPI鏈路層(即在傳遞流控制單元前不等待累加160b)。該邏輯部分也提供在PCIe物理層的8UI時鐘和PCIe數據鏈路層的16W時鐘之間進行轉換的接口。圖14示出一方框圖,該方框圖示出用于執行這種轉換的接口的一個實施例。圖15示出根據一個實施例在160b和128b之間的位映射。左側的數據位方框示出通過PCIe邏輯物理層(128b接口)傳遞的8UI時鐘域(PCIe)的數據。它示出40M時鐘周期(時間向下遞增;408nx5n/流控制單元)。右側的數據位方框示出對于QPI鏈路層對各個流控制單元的映射。實線表示流控制單元邊界,而虛線表示Sn時鐘邊界。除了將QPI流控制單元映射到PCIe xl6、x8和x4鏈路外,該理念可延伸至使用本文公開的類似原理到PCIe x2和xl鏈路的映射。通常,利用較高寬度的鏈路是優選的,因為這減少了每個事務的循環次數(并因此減少了等待時間),但也可利用較窄寬度的鏈路。還要注意,傳統PCIe鏈路(即利用PCIe協議的PCIe鏈路)和在其上實現QPI鏈路的PCIe鏈路兩者可存在于同一系統中。PCIe鏈路不需要具有相同的寬度,或利用相同的時鐘速率(即速度)。此外,在同一系統中,在PCIe上的QPI鏈路可采用不同的鏈路寬度和時鐘速率。
在PCIe上維持高速緩存一致性的示例性實現QPI的固有特征之一是支持一致性內存事務。這是經由與存儲器事務相關的相應消息實現的,這些消息由QPI協議的高層處理。如由QPI協議層定義的那樣,使用分組將消息傳達至可應用代理。下面的消息類由QPI協議利用。
權利要求
1.一種方法,包括: 在具有共享存儲器資源并包括可訪問所述共享存儲器資源的多個設備的計算機系統中實現高速緩存一致性協議,所述多個設備包括具有本地高速緩存的至少一個處理器,其中所述計算機系統包括外圍組件互連快速(PCIe)接口電路,在所述PCIe接口電路上允許通過使用所述高速緩存一致性協議來實現一致性存儲器事務。
2.如權利要求1所述的方法,其特征在于,所述高速緩存一致性協議是快速通路互連(QPI)協議,所述方法還包括使用在所述PCIe接口電路上傳送的QPI消息來實現一致性存儲器事務。
3.如權利要求2所述的方法,其特征在于,還包括: 將QPI flit(流控制單元)映射到工作在采用16個快線的全寬度下的PCIe xl6接口。
4.如權利要求2所述的方法,其特征在于,還包括: 將QPI flit (流控制單元)映射到采用8個快線或工作在采用4個快線的四分之一寬度下的PCIe xl6接口上。
5.如權利要求2所述的方法,其特征在于,還包括: 將QPI flit (流控制單元)映射到采用8個快線的PCIe x8接口上。
6.如權利要求2所述的方法,其特征在于,還包括: 將QPI flit(流控制單元)映射到工作在采用4個快線的半寬度下的PCIe x8接口。
7.如權利要求2所述的方法,其特征在于,還包括在PCIe物理層采用128b/130b編碼。
8.如權利要求2所述的方法,其特征在于,還包括在PCIe物理層上實現QPI鏈路層、路由層和協議層。
9.如權利要求1所述的方法,其特征在于,所述系統利用經由所述PCIe接口電路通信地耦合的多個處理器,其中每個處理器通信地耦合至至少一個共享存儲器資源并包括本地高速緩存,此外每個處理器被允許訪問與另一處理器通信耦合的存儲器資源并同時保持存儲器一致性。
10.一種方法,包括: 在外圍組件互連快速(PCIe)接口電路上實現快速通路互連(QPI)協議。
11.如權利要求10所述的方法,其特征在于,所述QPI協議是通過將QPIflit(流控制單元)映射到16個快線上在利用所述16個快線的PCIe xl6接口上實現的。
12.如權利要求10所述的方法,其特征在于,所述QPI協議是通過將QPIflit (流控制單元)映射到8個快線上在利用所述8個快線的PCIe xl6接口上實現的。
13.如權利要求10所述的方法,其特征在于,所述QPI協議是通過將QPIflit (流控制單元)映射到4個快線上在利用所述4個快線的PCIe xl6或PCIe x8接口之一上實現的。
14.如權利要求10所述的方法,其特征在于,還包括在所述PCIe接口的物理層采用128b/130b 編碼。
15.—種系統,包括: 多個處理器,所述多個處理器中的每一個具有本地高速緩存并可操作地耦合至具有針對所述系統的一部分共享存儲器的相應存儲器存儲;以及 可操作地耦合至少兩個處理器的外圍組件互連快速(PCIe)接口電路, 其中所述至少兩個處理器被配置成使用在PCIe接口電路上傳送的相應QPI消息實現快速通路互連(QPI)協議以支持所述系統中的一致性存儲器事務。
16.如權利要求15所述的系統,其特征在于,所述系統包括具有多個刀片的刀片服務器,所述刀片包括被配置成經由相應的底板或邊緣連接器通信地耦合刀片組件的PCIe接口電路。
17.如權利要求15所述的系統,其特征在于,所述處理器被配置成與經由使用在PCIe接口電路上傳送的QPI消息執行一致性存儲器事務相結合地實現本地監聽和源監聽中的至少一個。
18.如權利要求15所述的系統,其特征在于,在其上傳送QPI消息的PCIe接口電路包括PCIe xl6接口、PCIe x8或PCIe x4接口中的至少一個。
19.如權利要求15所述的系統,其特征在于,在其上傳送QPI消息的PCIe接口電路包括從PCIe xl6鏈路、PCIe x8和PCIe x4鏈路構成的組中選取的兩個或更多個PCIe鏈路。
20.如權利要求15所述的系統,其特征在于,在其上QPI發消息的PCIe接口電路利用至少兩個獨立的PCIe鏈路,所述PCIe鏈路利用不同鏈路寬度或不同時鐘速率中的至少一個。
全文摘要
用于在PCIe接口上實現英特爾快速通路互連(QPI)的方法和裝置。QPI協議的高層通過使用在相應PCIe x16、x8和x4快線配置上的QPI數據位映射在PCIe接口的物理層上實現。利用QPI鏈路層-PCIe物理層接口以從下層的PCIe物理層(和相應的PCIe接口電路)中提取QPI鏈路層、路由層和協議層,這允許在PCIe硬件上利用QPI協議消息。因此,可在PCIe接口電路上實現QPI功能,例如對一致性存儲器事務的支持。
文檔編號H04L29/06GK103119908SQ201180045925
公開日2013年5月22日 申請日期2011年9月23日 優先權日2010年9月24日
發明者R·J·薩弗蘭克, D·達斯莎瑪, G·N·斯里尼瓦薩 申請人:英特爾公司