增加在基于約束鏈路的多處理器系統(tǒng)中的輸入輸出中心的制作方法
【專利摘要】描述了涉及增加在基于約束鏈路的多處理器系統(tǒng)中的輸入輸出中心的方法和裝置。在一個實施例中,第一輸入輸出中心(IOH)和第二IOH耦合鏈路互連以及多個處理器,耦合到所述第一和第二IOH的處理器包括為單個IOH預(yù)分配的資源。還公開并要求保護其他實施例。
【專利說明】增加在基于約束鏈路的多處理器系統(tǒng)中的輸入輸出中心
【技術(shù)領(lǐng)域】
[0001]本公開一般涉及電子領(lǐng)域。更具體地,一些實施例涉及增加在基于約束鏈路的多處理器系統(tǒng)中的輸入輸出中心。
【背景技術(shù)】
[0002]中央處理單元(CPU)可經(jīng)由輸入輸出中心(IOH)與輸入/輸出(IO)設(shè)備通信。某些CPU可能由于例如缺乏資源而只能夠支持單個Ι0Η。在這樣的系統(tǒng)中,該問題可能會降低性能,減少IO吞吐量,增加IO延遲,等等。
【專利附圖】
【附圖說明】
[0003]將參考附圖提供詳細(xì)描述。在附圖中,參考標(biāo)記最左邊的數(shù)字表示參考標(biāo)記第一次出現(xiàn)的附圖。不同的附圖中使用相同的標(biāo)記指示類似或相同的項。
[0004]圖1圖示出根據(jù)實施例的計算系統(tǒng)的框圖。
[0005]圖2和圖4-5圖示出根據(jù)一些實施例的具有多個IOH的計算系統(tǒng)的框圖。
[0006]圖3圖示出根據(jù)實施例的附加IOH的內(nèi)容的框圖。
【具體實施方式】
[0007]在以下的描述中,闡述了許多具體細(xì)節(jié)以便提供對各種實施例的透徹理解。但是,可以在沒有這些具體細(xì)節(jié)的情況下實施本發(fā)明的一些實施例。在其它實例中,沒有詳細(xì)地描述已知的方法、過程、部件和電路,以便不模糊特定的實施例。可以使用各種手段,例如半導(dǎo)體集成電路(“硬件”)、組成一個或多個程序的計算機可讀指令(“軟件”)或硬件和軟件的某種組合,來執(zhí)行本發(fā)明的實施例的各個方面。為了該公開的目的,提及“邏輯”應(yīng)當(dāng)是指硬件、軟件或其某種組合。
[0008]本文所討論的一些實施例可提供具有成本效益的、高性能的和/或平衡的解決方案,來增加基于鏈路的多處理器系統(tǒng)中的輸入輸出中心(IOH)的數(shù)量。例如,這樣的技術(shù)可用在CPU(本文中可互換地稱作“處理器”)沒有能力支持額外數(shù)量的IOH或沒有資源去添加更多IOH的情況。在實施例中,每個處理器可包括一個或多個處理器內(nèi)核。此外,在實施例中,一個或多個處理器內(nèi)核和本文討論的多個IOH可能存在于單個集成電路(IC)管芯中。
[0009]本文討論了關(guān)于計算系統(tǒng)部件的各種實施例,如這里討論的例如參照圖1-5的部件。更具體地,圖1圖示出根據(jù)本發(fā)明的實施例的計算系統(tǒng)100的框圖。系統(tǒng)100可包括一個或多個代理102-1至102-M(本文中統(tǒng)稱為“多個代理102”或更一般地稱為“代理102”)。在實施例中,代理102可以是計算系統(tǒng)(如本文所討論的系統(tǒng))的部件。
[0010]如圖1所示,代理102可經(jīng)由網(wǎng)絡(luò)結(jié)構(gòu)104進行通信。在實施例中,網(wǎng)絡(luò)結(jié)構(gòu)104可包括一個或多個互連(或互連網(wǎng)絡(luò)),它們經(jīng)由串行(如,點對點)鏈路和/或共享通信網(wǎng)絡(luò)進行通信。例如,一些實施例可便于允許與全緩沖雙列直插存儲器模塊(FBD)通信的鏈路上的部件調(diào)試或驗證,例如,其中FBD鏈路是用于將存儲器模塊耦合到主機控制器設(shè)備(例如處理器或存儲器中心(memory hub))的串行鏈路。調(diào)試信息可從FBD通道主機傳送,從而可以通過通道流量跟蹤捕獲工具(例如一個或多個邏輯分析器)沿通道觀測調(diào)試信息。
[0011]在一個實施例中,系統(tǒng)100可支持分層協(xié)議方案,其中可包括物理層、鏈路層、路由層、傳輸層、和/或協(xié)議層。對于點對點網(wǎng)絡(luò),結(jié)構(gòu)104可進一步促進從一種協(xié)議(例如,高速緩存處理器或高速緩存感知存儲器控制器)到另一種協(xié)議的數(shù)據(jù)(例如,呈分組形式)的傳輸。此外,在一些實施例中,網(wǎng)絡(luò)結(jié)構(gòu)104可提供遵守一個或多個高速緩存一致性協(xié)議的通信。
[0012]另外,如圖1中箭頭方向所示,代理102可經(jīng)由網(wǎng)絡(luò)結(jié)構(gòu)104傳送和/或接收數(shù)據(jù)。因此,一些代理可利用單向鏈路,而其他代理可利用雙向鏈路進行通信。例如,一個或多個代理(如代理102-M)可傳送數(shù)據(jù)(例如,經(jīng)由單向鏈路106),其他代理(如代理102-2)可接收數(shù)據(jù)(例如,經(jīng)由單向鏈路108),而某個(某些)代理(如代理102-1)可即發(fā)送又接收數(shù)據(jù)(例如,經(jīng)由雙向鏈路110)。
[0013]此外,根據(jù)實施例,一個或多個代理102可包括一個或多個10H120,如將例如參照圖2進一步討論的。
[0014]更具體地,圖2是根據(jù)實施例的計算系統(tǒng)200的框圖。在實施例中,基于快速路徑互連(QPI)的系統(tǒng)可用在圖2的系統(tǒng)中。一般地,QPI是鏈路互連,用于耦合系統(tǒng)中的代理(如參照圖1所討論的代理)。通過QPI耦合的代理可具有QPI代理的特征。QPI鏈路是一種分層架構(gòu)。稱為“鏈路層”的層為信息傳輸(系統(tǒng)中的代理之間)實現(xiàn)每個消息類信用機制,并且如果有足夠的緩沖區(qū)的話,在接收端保存接收到的消息。即使QPI被用來描述各種實施例,本發(fā)明的實施例并不限于QPI,并且任何類型的鏈路或點對點(如,串行)的互連都可被使用。
[0015]如圖2所示的實施例中,每個CPU代理有2個QPI鏈路。IOH代理(如,IOHO和IOHl)有2個QPI鏈路、以及在另一側(cè)通過PCIe信道接口(外設(shè)部件互連標(biāo)準(zhǔn)快速?(PCIe)互連(依照PCI Express?規(guī)范基本規(guī)范2.0版本(2007年I月17日發(fā)布))耦合的輸入/輸出設(shè)備。在實施例中,一個或多個IOH代理可能還有一些其他的加速技術(shù)合并在一些實施例中。
[0016]一般來說,一個QPI需求是指:CPU代理需要為系統(tǒng)中可從從其收到請求的每個QPI代理預(yù)分配資源。例如,傳入請求跟蹤器(IRT)就是這樣一種用于跟蹤傳入請求的預(yù)分配的資源。在目前的一些實現(xiàn)中,CPU設(shè)計可具有為兩個更多的QPI代理(一個IOH和一個CPU代理)預(yù)分配的資源。單個IOH代理可能有用于系統(tǒng)中所有的QPI代理的共享資源池。任何QPI代理接收到的請求可由元組〈發(fā)送者NodelD,發(fā)送者RequestID〉標(biāo)識。一般地,QPI發(fā)送者發(fā)送給CPU的請求數(shù)量可能不會超過接收CPU預(yù)分配給發(fā)送者的資源。在一些實施例中,CPU可能不具備通過硬件的路由以從一個QPI鏈路傳遞請求或消息至其他QPI鏈路。QPI代理可能將請求發(fā)送到系統(tǒng)中的任何其他QPI代理。
[0017]此外,單個IOH可被命名為Ι0Η0,其NodeID=O,其在ORBO中處理鏈路LO (綁定CPU0)上的未完成請求并具有NI個條目。IOHO可在ORBl中處理鏈路LI (綁定CPUl)上的未完成請求并具有N2個條目。每個CPU依次耦合到再多一個的CPU和Ι0Η0。此外,單個IOH可被耦合到CPUO和CPUl。
[0018]在具有單個IOH的示例性系統(tǒng)中,如果需要再多一個IOH (如,增加輸入輸出設(shè)備的總數(shù)或由IOH提供的其他平臺級的特征),可能不會使用額外的Ι0Η,在某種程度上是由于以下三個主要原因:(I)通過再添加一個10H(QPI代理),因為QPI協(xié)議的預(yù)分配要求,所以需要在CPU中增加資源(諸如IRT跟蹤器);(2) CPU可能僅能識別出兩個更多的結(jié)點ID,因此將不能識別出新添加的QPI代理;以及(3) CPU可能只有兩個鏈路,且再添加一個IOH可能需要CPU中有通過路徑的路由。其結(jié)果是,添加這些特征可能需要CPU硬件的重大改變,這可能是非常昂貴的。
[0019]為此,一個實施例通過改變IOH來添加一個或多個Ι0Η。該解決方案可以利用現(xiàn)有的IOH硬件并增加額外的邏輯,這相對于改變CPU設(shè)計來說較便宜,詳見下文。
[0020]更具體地,參照圖2,示出了基于QPI鏈路的多處理器系統(tǒng),在現(xiàn)有的IOH硬件上添加了第二個Ι0Η。在一些實施例中,利用本文討論的技術(shù)可以添加多于一個Ι0Η。在圖2的系統(tǒng)中,有兩個CPU代理,命名為CPUO和CPUl,其NodeID分別是I和2。CPUO有NI個保留的為IOHO預(yù)分配的IRT條目,CPUl有N2個為IOHO預(yù)分配的IRT條目。名為IOHO和IOHl的兩個IOH可能共享同一 NodeIDO。CPUO耦合到CPUl和Ι0Η0,且仍有僅為具有NodeID為O的單個IOH預(yù)分配的IRT資源。這里假設(shè)CPUO只有一個Ι0Η。CPUl耦合到CPUO和IOHl,且仍有僅為具有NodeID為O的單個IOH預(yù)分配的IRT資源。這里假設(shè)CPUl只有一個Ι0Η。IOHO和IOHl使用它們的QPI鏈路(LO)耦合到一個CPU (這里分別為CPUO和CPUl)。IOHO和IOHl的第二鏈路(LI)用來將這兩個IOH彼此耦合,如圖所示。
[0021]圖3圖示出根據(jù)實施例的部件和添加的IOH (如,參考圖2討論的10H1)內(nèi)部的耦合的框圖。以下根據(jù)一些實施例,羅列了一些IOHO的細(xì)節(jié),同樣,相似的細(xì)節(jié)也可用于解釋IOHl:
[0022]1.主ORB或ORBO:在基于單個IOH的系統(tǒng)中,ORBO用來存儲/處理來自PCIe代理且目標(biāo)為CPUO的請求。在基于兩個IOH的系統(tǒng)中,ORBO可能處理綁定到本地耦合的CPU(SP,CPU0)的全部請求。這可能包括源自本地PCIe代理的請求以及源自遠(yuǎn)程IOH (在這個例子中是IOHl)的請求。
[0023]a.0RBO仍然有與CPUO中為IOH (NodeID=O)預(yù)分配的IRT資源相等的大量條目。
[0024]b.這些可用的ORB被在本地PCIe請求和來自遠(yuǎn)程IOH的請求之間共享。
[0025]2.從ORB或ORBl:在基于單個IOH的系統(tǒng)中,ORBl用來存儲/處理來自PCIe代理且目標(biāo)為CPUl的請求。在基于兩個IOH的系統(tǒng)中,ORBl處理來自本地PCIe代理且綁定到遠(yuǎn)程CPU (即,CPUl)和遠(yuǎn)程IOH (即,IOHl)的請求。
[0026]a.0RBl可能有比遠(yuǎn)程CPUl能夠為IOH (NodeID=O)預(yù)分配的(N2個條目)多的條目(N3)。在一些實施例中,“歸屬” IOH負(fù)責(zé)確保這種超額預(yù)訂(over-subscription)不會超過CPU的預(yù)分配限制和/或萬一不幸檢測到死鎖時,確保事務(wù)不會死鎖,計時器清除它所擁有的所有未完成的聞速緩存行。
[0027]3.RIQ:存在稱為“遠(yuǎn)程IOH請求隊列(RIQ)”的隊列,其臨時存儲/保存來自遠(yuǎn)程IOH (IOHl)且目標(biāo)為CPUO的請求。這個隊列中的條目數(shù)可等于IOHl中的ORBl的條目數(shù)。這允許遠(yuǎn)程IOH (IOHl)中的ORBl具有多于本地ORBO的條目,從而隱藏遠(yuǎn)程請求處理的延遲。
[0028]4.MUXl:復(fù)用器選擇邏輯(MuxI)選擇來自本地PCIe代理和RIQ的請求。
[0029]5.1RH 傳入QPI請求處理機”(IRH)用于存儲/處理源自系統(tǒng)中任何其他QPI代理且目標(biāo)為該IOH的QPI請求。它可能具有用于所有請求代理的共享資源。
[0030]6.路徑R3是用于所有請求類型的請求路徑,其從主ORB到耦合到本地CPU的QPI鏈路(即鏈路L0)。
[0031]7.路徑R4:這是用于針對主ORB發(fā)送的請求接收自本地CPU的所有應(yīng)答的路徑。
[0032]8.路徑R6和R9:R6是用于所有本地起源的請求且目標(biāo)為遠(yuǎn)程IOH或遠(yuǎn)程CPU的路徑。R9是用于針對通過R6發(fā)送的請求接收自遠(yuǎn)程IOH或CPU的應(yīng)答的路徑。
[0033]9.路徑R7、R71用于源自遠(yuǎn)程IOH且目標(biāo)為CPUO的所有請求。
[0034]10.路徑R8用于針對通過用于遠(yuǎn)程IOH發(fā)起請求的響應(yīng)R7路徑接收的請求的所有應(yīng)答的路徑。
[0035]11.路徑R13是通過從鏈路LO到鏈路LI的路徑的路由,用于本地CPU (CPUO)發(fā)起且目標(biāo)為遠(yuǎn)程IOH (IOHl)的所有請求。
[0036]12.路徑R16:該路徑用于通過從LI到LO的路徑的響應(yīng)路由,針對在本地CPU(CPUO)發(fā)起且目標(biāo)為遠(yuǎn)程IOH (IOHl)的請求。
[0037]在一些實施例中,這些技術(shù)可被縮放。此外,所解釋的實施例用于:在雙CPU單IOH系統(tǒng)中添加第二 Ι0Η,此處CPU沒有通過跨鏈路的路徑的路由,并且需要預(yù)分配資源來處理來自其他QPI代理的請求。這也可以被縮放為以下架構(gòu):為單IOH的單CPU添加額外的Ι0Η。例如,如果存在一個具有上面解釋的架構(gòu)的CPU,且除此之外,如果CPU或IOH具有一些約束,從而IOH可能僅被耦合到CPU的一個鏈路,那么,類似的技術(shù)可被用于再添加一個IOH至如圖4所示的這類系統(tǒng)。
[0038]在一些實施例中可能提供:添加m個額外的IOH至具有η個CPU和m個IOH的系統(tǒng)中,例如,在具有η個CPU代理和m個IOH代理的系統(tǒng)中,其中n,m>2。由于CPU的數(shù)目很多,系統(tǒng)可能會需要具有多QPI鏈路的CPU,及CPU中的支持跨鏈路的路由。
[0039]根據(jù)實施例,如果CPU的預(yù)分配資源已耗盡,且系統(tǒng)中沒有范圍添加更多的Ι0Η,則m個更多的IOH可能會耦合。這在圖5中示出。每對耦合的IOH可能被表示為一個Ι0Η,且在每對IOH里一個IOH可能將請求的目標(biāo)定為一組CPU,而另一個IOH將請求的目標(biāo)定為其余的CPU。相應(yīng)地,一些實施例可能在QPI平臺中再添加一個Ι0Η,而無需CPU知道和支持,并且無需任何對CPU的設(shè)計要求。因此,基于QPI的設(shè)計可以提供代理能力來隱藏另一個QPI代理。此外,在CPU210H和10H210H之間可以處理多個QPI域。這可能涉及增加新QPI事務(wù)流,例如,QPI規(guī)范中未提到。例如,微架構(gòu)的實施例可以通過這種方式提供:以如上所述使用相同的NodeID的兩個Ι0Η,保持單個IOH功能不變。其結(jié)果是,每個IOH對遠(yuǎn)程CPU來說都是隱藏的,但對本地CPU是可見的。CPU可能仍然擁有它們自己的路由來與彼此進行交互。反過來,IOH到IOH的QPI鏈路可能用于IOH之間的通信。還需要注意的是在本發(fā)明的一些實施例中,兩個或更多個IOH可通過菊花鏈連接,在菊花鏈的端部任一或兩個IOH耦合到一個或兩個CPU。
[0040]本文可以利用各種存儲設(shè)備(如圖2-4所示的存儲器)來存儲數(shù)據(jù)(包括指令)。例如,存儲設(shè)備可包括易失性和/或非易失性存儲器(或存儲設(shè)備)。非易失性存儲器可以包括以下中的一個或多個:只讀存儲器(ROM)、可編程R0M( PROM)、可擦除PR0M( EPROM)、電EPROM(EEPROM)、磁盤驅(qū)動、軟盤、壓縮磁盤ROM (⑶-ROM)、數(shù)字多功能盤(DVD )、閃速存儲器、磁光盤、或能夠存儲電子數(shù)據(jù)(例如,包括指令)的其它類型的非易失性機器可讀介質(zhì)。易失性存儲(或存儲器)設(shè)備可包括隨機存取存儲器(RAM)、動態(tài)RAM (DRAM)、同步DRAM (SDRAM)、靜態(tài)RAM(SRAM)、或其他類型的存儲設(shè)備。此外,參照圖1-5討論的各種部件可以通過計算機網(wǎng)絡(luò)(例如,經(jīng)由調(diào)制解調(diào)器、網(wǎng)絡(luò)接口設(shè)備、或其他通信裝置)與其他部件進行通信。
[0041]在本發(fā)明的各種實施例中,本文討論的操作(例如參照圖1-5)可以被實現(xiàn)為硬件(例如,電路)、軟件、固件、微碼或其組合,可以將其作為計算機程序產(chǎn)品來提供,例如包括(例如,非瞬態(tài)的)機器可讀介質(zhì)或(例如,非瞬態(tài)的)計算機可讀介質(zhì),其上存儲有指令(或軟件程序),所述指令用于對計算機編程以執(zhí)行本文討論的過程。另外,術(shù)語“邏輯”可包括,通過舉例的方式,軟件、硬件或軟件和硬件的組合。機器可讀介質(zhì)可以包括存儲設(shè)備,例如本文所討論的那些。此外,這種計算機可讀介質(zhì)可以作為計算機程序產(chǎn)品被下載,其中,可以從遠(yuǎn)程計算機(例如,服務(wù)器)例如經(jīng)由通信鏈路(例如,總線、調(diào)制解調(diào)器或網(wǎng)絡(luò)連接)通過數(shù)據(jù)信號的方式將程序傳輸?shù)秸埱笥嬎銠C(例如,客戶端)。
[0042]在說明書中提及的“一個實施例”或“一實施例”表示結(jié)合所述實施例描述的特定特征、結(jié)構(gòu)或特性可以被包括在至少一個實現(xiàn)中。在說明書中各處出現(xiàn)的短語“在一個實施例中”可以或可以不都指代同一實施例。
[0043]此外,在說明書和權(quán)利要求書中,可以使用術(shù)語“耦合”與“連接”以及它們的派生詞。在本發(fā)明的一些實施例中,“連接”可以用于指示兩個或更多個元件彼此直接物理或電接觸?!榜詈稀笨梢灾竷蓚€或更多個元件直接物理或者電接觸。但是,“耦合”還可以指兩個或更多個元件可以并不是彼此直接接觸,但仍可以彼此協(xié)作或交互。
[0044]因此,盡管已經(jīng)以特定于結(jié)構(gòu)特征和/或方法動作的語言描述了本發(fā)明的實施例,但是應(yīng)當(dāng)理解,所要求保護的主題可以并不限于所描述的特定特征或動作。而是,特定特征和動作被公開作為實現(xiàn)所要求保護的主題的示例形式。
【權(quán)利要求】
1.一種裝置,包括: 第一輸入輸出中心(IOH); 第二 Ι0Η,其經(jīng)由第一鏈路互連耦合到所述第一 Ι0Η,其中,所述第一 IOH和所述第二IOH共享單個結(jié)點標(biāo)識符,所述標(biāo)識符被多個處理器使用,并且其中,所述多個處理器包括為單個IOH預(yù)分配的資源。
2.如權(quán)利要求1所述的裝置,其中,所述第一IOH包括遠(yuǎn)程IOH請求隊列(RIQ),所述遠(yuǎn)程IOH請求隊列用于臨時存儲來自遠(yuǎn)程IOH的請求。
3.如權(quán)利要求1所述的裝置,其中,所述第一IOH包括傳入請求處理機(IRH),所述傳入請求處理機用于處理源自任何其他代理且目標(biāo)為所述第一 IOH的請求。
4.如權(quán)利要求1所述的裝置,其中,所述第一IOH包括:第一請求處理機,對應(yīng)于所述多個處理器中的第一處理器;以及第二請求處理機,對應(yīng)于所述多個處理器中的第二處理器。
5.如權(quán)利要求4所述的裝置,其中,所述第一請求處理機或所述第二請求處理機包括未完成請求緩沖區(qū)(0RB),所述未完成請求緩沖區(qū)用于存儲來自代理且目標(biāo)為所述第一或第二處理器的請求。
6.如權(quán)利要求1所述的裝置,其中,所述預(yù)分配的資源包括傳入請求跟蹤器(IRT),所述傳入請求跟蹤器用于跟蹤在所述裝置的每個代理處的傳入請求。
7.如權(quán)利要求1所述的裝置,其中,所述多個處理器中的每一對都經(jīng)由第二鏈路互連耦合。
8.如權(quán)利要求1所述的裝置,還包括鏈路層,所述鏈路層實現(xiàn)用于多個代理間信息傳輸?shù)拿恳粋€消息類信用機制。
9.如權(quán)利要求1所述的裝置,其中,所述第一鏈路互連包括快速路徑互連(QPI)。
10.如權(quán)利要求1所述的裝置,其中,所述多個處理器中的一個或多個包括一個或多個處理器內(nèi)核。
11.如權(quán)利要求1所述的裝置,其中,所述第一Ι0Η、所述第二 IOH以及所述多個處理器在同一集成電路管芯上。
12.—種方法,包括: 經(jīng)由第一鏈路互連將第一 IOH耦合到第二 IOH ; 所述第一 IOH和所述第二 IOH共享單個結(jié)點標(biāo)識符以供多個處理器使用, 其中,所述多個處理器包括為單個IOH預(yù)分配的資源。
13.如權(quán)利要求12所述的方法,還包括:將來自遠(yuǎn)程IOH的請求臨時存儲在遠(yuǎn)程IOH請求隊列(RIQ)中。
14.如權(quán)利要求12所述的方法,還包括:將來自代理且目標(biāo)為所述多個處理器的請求存儲在未完成請求緩沖區(qū)(ORB)中。
15.如權(quán)利要求12所述的方法,其中,所述預(yù)分配的資源包括傳入請求跟蹤器(IRT),用于跟蹤在每個代理處的傳入請求。
【文檔編號】G06F15/80GK103493031SQ201180069873
【公開日】2014年1月1日 申請日期:2011年12月21日 優(yōu)先權(quán)日:2011年3月2日
【發(fā)明者】D·D·夏爾馬, C·P·喬希, G·拉賈馬尼 申請人:英特爾公司