TWI583153B - 用於促進訊息單向排序之裝置、系統和方法 - Google Patents
用於促進訊息單向排序之裝置、系統和方法 Download PDFInfo
- Publication number
- TWI583153B TWI583153B TW100134346A TW100134346A TWI583153B TW I583153 B TWI583153 B TW I583153B TW 100134346 A TW100134346 A TW 100134346A TW 100134346 A TW100134346 A TW 100134346A TW I583153 B TWI583153 B TW I583153B
- Authority
- TW
- Taiwan
- Prior art keywords
- message
- loop
- interconnect
- category
- belonging
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17325—Synchronisation; Hardware support therefor
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multi Processors (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Stored Programmes (AREA)
Description
本發明之領域大體上係有關電腦系統,並更特別但不專獨係有關針對互連技術促進訊息、封包、和資訊的傳輸操作之技術,尤其是有關促進訊息之排序的技術。
一個互連網路,像是環圈、匯流排、點對點、或網目組構等,典型上係具有針對轉送進展或效能因素的數個獨立訊息類別。例如,可將一個特定類型的訊息群聚成一個訊息類別,以促進控制和維持各個訊息類別之不同類型的獨立流程。同樣地,訊息類別可係具有不同的性質,並且維持在一個訊息類別中的封鎖並不會阻止在另一個訊息類別中的交通流動。同樣地,數個訊息類別可係在一個鍊結層上執行,並且容許至數個協定層代理器的數個獨立發送通道。訊息類別的一些範例可係針對監聽、資料回應、非資料回應、特殊控制功能、非同調等等。
此外,在一個特定類別中的一個訊息對於在同一個類別中的其他訊息來說,還有對於在不同類別中的其他訊息來說,可能會是無序的。再次地,這可能是針對轉送進展或效能因素而言。然而,在一些事例中,會有需要使在不同訊息類別中的訊息維持某種相關順序的功能性需求。例如,在一個快取同調性協定中,可能會需要保證對應於一個特定快取列位址的訊息不能夠超越在另一個訊息類別中被傳送至同一個代理器的針對同一個快取列位址的先前訊息。
目前並不存在有針對促進在互連或互連網路之區段之間所傳送的獨立訊息類別之排序的解決方案。
依據本發明之一實施例,係特地提出一種方法,其包含下列步驟:針對在數個互連之間或在一個互連網路中之數個區段之間被傳送的具有數個獨立訊息類別的數個訊息施行一單向訊息排序機構,其中在一第一訊息類別中的一個訊息係確保會比被傳送至一個目標節點的屬於一第二訊息類別之一相關訊息更早抵達該目標節點。
依據本發明之另一實施例,係特地提出一種裝置,其包含:一第一有緩衝路徑,其係設計來從一第一互連接收對應於一第一訊息類別的數個訊息,並係設計來將所接收的對應於該第一訊息類別之數個訊息傳送至一第二互連;一第二有緩衝路徑,其係設計來從該第一互連接收對應於一第二訊息類別的數個訊息,並係設計來將所接收的對應於該第二訊息類別之數個訊息傳送至該第二互連;以及一個單向訊息排序機構,其係設計成確保下列事情:對於從該第一互連所接收到的屬於該等第一和第二訊息類別之數個相關聯訊息,屬於該第一訊息類別之訊息會比屬於該第二訊息類別之訊息更早被傳送到該第二互連。
依據本發明之又一實施例,係特地提出一種系統,其包含:第一和第二環圈互連,其各具有多個節點,並包含有用於在節點之間傳輸訊息的分開的至少兩個路線,包括用於傳輸第一和第二訊息類別的第一和第二環圈;多個處理器核心,其操作性地耦接至該等第一和第二環圈互連中的各別節點,各個處理器核心具有至少一階的快取;多個快取代理器,其操作性地耦接至該等第一和第二環圈互連中的各別節點,各個快取代理器係設計來傳送和接收屬於該等第一和第二訊息類別的訊息;以及一第一有緩衝單向訊息排序機構,其操作性地耦接在該等第一和第二環圈互連之間,並係設計成確保下列事情:對於從該第一環圈互連中的一個代理器所傳送的預定要到該第二環圈互連中之一或多個代理器的屬於該等第一和第二訊息類別之訊息,屬於該第一類別之訊息會比屬於該第二類別之訊息更早被轉送到該第二環圈互連。
隨著前文所述之觀點和本發明的許多附屬優點藉由配合隨附圖式參考下文中之詳細說明而變得更易瞭解,前文所述之觀點和本發明的許多附屬優點也會變得更易於識出,於此等圖式中,除非有特別指明其他情況,否則在這許多圖案中相似參考號碼係指涉相似的部件:第1圖為依據本發明的一個實施例而例示出一個示範系統架構的示意圖,此系統架構包括有兩個環圈互連,和用於促進在這兩個環圈互連之間所傳輸的不同訊息類別之訊息之排序的複數個單向訊息排序機構;第2a~2e圖依據一個實施例,例示對於一個迷你環方案之使用,此迷你環圈方案係用於確保訊息排序在運用獨立訊息類別的環圈互連架構中之一環圈中有被維持;第3圖為依據本發明的一個實施例而例示出一個單向訊息排序機構之高階細節的一個方塊圖;第4圖為依據本發明的一個實施例而例示出耦接至一個環圈互連之環圈停止節點的一個進入(Ingress)和外出(Egress)方塊之更進一步細節的示意圖;第5圖為依據本發明的一個實施例而例示出耦接在各別環圈互連之環圈停止節點之間的一個進入和外出方塊對之細節的示意圖;第6圖為依據本發明的一個實施例而例示出用於促進一種單向訊息排序機構的電路部件之示意圖;並且第7a和7b圖示出一個流程圖,此流程圖例示出由第6圖之單向訊息排序機構所實施以促進不同訊息類別之訊息的單向排序之操作。
於此係說明用於促進在其他方面為獨立的訊息類別之單向排序的方法、裝置和系統的數個實施例。在後文之說明中,係闡述許多具體細節來提供對本發明之實施例的通盤瞭解。然而,熟於此技者會可識出,本發明係可在沒有這些具體細節中之一或多者,或者是配合其他方法、成份、材料等,的情況下實行。在一些其他情況中,並未示出或詳細說明習知的結構、材料或操作,以避免混淆本發明之觀點。
於本說明書通篇中之對於「一個實施例」或「一實施例」之指涉係指配合此實施例所說明的一個特定的特徵、結構或特性係包括在本發明的至少一個實施例中。因此,本說明書通篇中之「在一個實施例中」或「在一實施例中」等詞語的出現並不必然全係指涉同一個實施例。此外,在一或多個實施例中,這些特定特徵、結構或特性係可以任何合適的方式而加以結合。
在許多實施例中,所請求之標的係描述用於促進再其他方面為獨立的訊息類別之單向排序的方法、裝置和系統。在一個範例中,係在維持相對於跨一個無序有緩衝切換環圈互連的一個全球觀測(Global Observation,GO)訊息之排序的脈絡中描述一個竊聽訊息。然而,所請求之標的並不受限於要針對竊聽和GO訊息使用,其亦將跨具有將於後文中有所論述的某些特性之數種互連拓樸變化,而延伸至任何這樣的排序需求。
於本文中所揭露的本發明之數個實施例係揭露用以確保在兩個獨立訊息類別之間的單向排序之方法、裝置和系統。在一個實施例中,係描繪用於確保來自於一第一訊息類別的一個領先者訊息有相對於來自於一第二訊息類別的隨後者訊息而被排序的一個範例。
為求明晰,於本文中,圖式中之個別部件也可係由其在圖中之標記來指涉,而不是由特定索引號碼來指涉。例如,對於第1圖中之節點所做的標記提供可識別節點和/或其功能的資訊;這樣的資訊是不能單由分開的索引號碼來傳遞的。此外,可係將指涉一個特定類型之部件(相對於一個特定部件而言)的參考號碼示為後面有「(典)」(意指「典型」)的索引號碼。會可瞭解,這些部件的組態會是可能有存在但為求明晰而未示於所繪之圖中的類似部件之典型。
在一個實施例中,係提供對於跨環圈互連而傳輸的數個獨立訊息類別中之訊息的單向排序。在第1圖中的系統100示出一個示範架構,於此架構下,係可實施對於數個獨立訊息類別的單向排序。系統100例示出支援複數個處理器核心102的一個進階系統架構,各個處理器核心102耦接至在兩個環圈互連中之一者上的各別的一個節點104,這兩個環圈互連被標記為環圈0和環圈1,並於本文中如此指涉。為求簡明,係將環圈0和環圈1互連各自的節點示為以一條單線連接。如於細節106中所示的,在一個實施例中,這些環圈互連各係包括有連接各個節點的四個分別的「線路」或電子路徑組,因此,就環圈0和環圈1而言係各形成四個環圈。在實務上,係有對應於所例示之各個線路的複數個實體電子路徑。熟於此技者會可瞭解,於此使用一條單線來示出連接僅係為求簡明和明晰,因為各個特定連接可係採用一或多個電子路徑。
於系統100之脈絡中,係藉由使用數個獨立訊息類別來實施一個快取同調性方案。在一個環圈互連架構下,係可藉由運用針對各個訊息類別的各別線路來實施數個獨立訊息類別。例如,在前文中所述的實施例中,環圈0和環圈1各包括四個環接路徑或線路,這四個環接路徑或線路被標記為且於本文中係以AD、AK、IV和BL指涉。因此,因為是在分開的實體互連路徑上傳送訊息,所以就發送觀點來看,這些訊息是彼此獨立的。考慮到可能會有不同量的緩衝延遲被施加到這些分開的互連路徑之可能性,那麼,當這些訊息類別係採用分開的獨立環圈互連路徑時,一個給定訊息類別可能會「超越」另一個訊息類別的訊息。然而,這在一些情況中是不被允許的。
在一個實施例中,資料係以一種循環方式在節點之間傳遞。例如,針對各個真實或邏輯的時鐘週期而言,資料是在環圈中從一個節點前進到一個相鄰節點。在一個實施例中,各種信號和資料係可繞著環圈以順時針或逆時針方向行進。在一個實施例中,環圈0和環圈1中有至少一些節點是無緩衝的。
環圈0和環圈1各包括有多個節點104。各個被標記為Cbo n(其中n是一個數字)的節點為對應於享有相同號碼n的一個處理器核心(如由此核心之引擎號碼n所識別的)之節點。系統100中也有示出其他類型的節點,包括一個QPI 0/1節點和一個IIO節點,QPI 0/1節點提供至一個快速路徑互連(QuickPath Interconnect,QPI)組構108的介面,而IIO節點提供至輸入/輸出介面110的介面。同樣地,環圈1包括
有一個QPI 2節點,其提供與一個QPI組構112的一個介面。還進一步示出標記為「X」的多個節點,這些節點是用於計時用途。請注意,這些QPI、IIO和X節點僅係對一個實作架構的示範,其他架構可能會具有更多或更少的各種類型之節點,或是完全沒有。此外,亦係可實施其他類型的節點。
包括在系統100中的另一組節點為有緩衝切換環圈停止節點,標記為Sbo NW(西北)、Sbo NE(東北)、Sbo SW(西南)和Sbo SE(東南),其中NW、NE、SW和SE命名是對應於這些環圈停止節點之與示於第1圖中的圖形相關聯的相對地理位置。這些環圈停止節點提供使信號和對應訊息能夠在環圈0和環圈1之間穿越的進入和外出點。對於北邊的有緩衝切換環圈停止點Sbo NW和Sbo NE而言,這是由一個NW進入方塊114、一個NE外出方塊116、一個NE進入方塊120和一個NW外出方塊118所促進的。對於南邊的有緩衝切換環圈停止點Sbo SW和Sbo SE而言,這是由一個SW進入方塊122、一個SE外出方塊124、一個SE進入方塊126和一個SW外出方塊128所促進的。在環圈0和環圈1間之運用一對進入/外出方塊對的這些過道實施運用一種單向訊息排序機構的一種「半隧道」,此單向訊息排序機構係組配來以確保屬於一第一訊息類別之訊息會先於屬於一第二訊息類別的相關訊息被遞送的方式促進訊息資料在環圈0和環圈1之間的傳輸。
在維持一個多處理器(或多核心)環境中之快取同調性的脈絡中,係運用許多機構來確保資料沒有被竄改。例如,在系統100中,係提供各個處理器核心102對於一個共享記憶體儲藏130的存取權,共享記憶體儲藏130典型上會包含一或多個動態隨機存取記憶體(dynamic random access memory,DRAM)排組。為求簡明,圖中並未示出用於促進對此共享記憶體儲藏之連接的記憶體介面電路;然而,係將在各個環圈0和環圈1中的處理器核心示為分別經由一個基地代理器(home agent)節點0(HA 0)和一個基地代理器節點1(HA 1)而連接至此記憶體儲藏。
當各個處理器核心執行其各別的程式碼時,會有許多記憶體存取被執行。如所廣知的,現代的處理器係運用一或多個階層的記憶體快取來儲存比較靠近核心的經快取記憶體行,因而使得能夠對此種記憶體做較快速的存取。然而,這需要將記憶體從共享(即,主要)記憶體儲藏複製到本地快取,也就是說,在這個系統中可能會出現對同一個記憶體行的多次複製。為了維持記憶體完整性,係運用一個快取同調性協定。在已廣知的MESI快取同調性協定之下,當一個處理器(或核心)對一個記憶體行做出從主要記憶體至其本地快取的第一次複製時,係運用一個機構來將此快取行標記為獨占的(Exclusive,E),以使得試圖要存取同一個快取行的另一個核心知道它並沒有對此記憶體行的獨占存取權。若有二或更多個核心具有同一個快取行的複本,且在此行中的資料並沒有被改變(即,在快取中的資料與在主要記憶體之行中的相同),則這些快取行係處於共享(shared,S)狀態中。一旦對在本地快取中的資料做出改變,則這個行會針對那個快取被標記為經修改(modified,M),並且這個行的其他複本會被標記為無效(Invalid,I),因為他們已經不再反映出此行之資料的經改變狀態了。一旦在經修改快取行中的值被寫回主要記憶體中,狀態便會返回到獨占。
近期,英特爾公司(Intel Corporation)引介了一種新的轉送(Forward),或稱為「F」狀態,將其加至經修改MESI快取同調性協定,而稱為MESIF快取同調性協定。F狀態指出一個快取應該作為對於針對此給定行之任何請求的指定回應者而行動。在運用MESI協定的快取系統中,由持有處於S狀態中之行的複數個快取所接收到的一個快取行請求會接收到複數個回應。在運用MESIF協定的快取系統中,一個快取行請求只會被持有處於F狀態之行的快取回應。
應注意,MESI和MESIF協定是快取同調性協定的範例,因此,這些協定並不是要限制,而僅係在本文中使用來解釋對於示範訊息類別的使用。
擁有複數個階層的快取也是很常見的,有最靠近處理器核心的具有最少潛時和最小尺寸的快取、以及更遠一點的較大可是具有較多潛時的快取。例如,一種典型組態可係運用第一和第二階快取,一般係被稱為L1和L2快取。另一種一般組態可更進一步地運用第三階,或是L3快取。
在系統100之脈絡中,最高階的快取被稱作是最後階快取(Last Level Cache,LLC)。例如,若也有運用L1和L2快取,則針對一個給定核心的LLC可典型上包含一個L3型快取,或者是若另一個快取是一個L1快取的話,則包含一個L2型快取。當然,這可延伸到更後面的快取階層,而LLC係對應於最後(即,最高)階的快取。
於第1圖中之所例示的組態中,各個處理器核心係包括有耦接至一個L1或L1/L2快取134的一個處理引擎132,他們對那個核心而言是「私有的」。同時,各個處理器核心亦係與一個分散式LLC 136的一個「截片」共置,當中,其他核心各皆具有對所有這些分散式截片的存取權。在本發明的一個實施例下,分散式LLC是利用由對應位址範圍所劃分的N個區塊而實體分散在N個核心之間。在這個分散方案下,所有的N個核心係與所有的N個LLC截片通聯,利用一個位址雜湊來針對任何給定位址找出「基地」截片。係運用合適的互連電路以促進在核心與截片之間的通聯;然而,為求簡單明晰,在第1圖中並沒有示出這樣的電路。
再做更進一步例示,系統100中的各個節點104係與一個快取代理器138聯繫,快取代理器138係組配來執行與關聯於由此系統所實施的一個同調性快取協定之信號和資料起始和接收有關的傳訊,其中各個快取代理器138係處置對應於被映對至其共置LLC 136之位址的快取相關操作。此外,在一個實施例中,基地代理器HA0和HA1各係運用各別快取過濾器140和142,並且這許多快取行為和基地代理器存取和更新儲存在一個目錄144中的快取行使用資料,目錄144被實施在共享記憶體130之一部份中。熟於此技者會可識出,係可使用其他技術來維持隸屬於快取行使用的資訊。
隨著一個系統中的核心數增加,需要維持快取同調性的訊息交通之量也跟著增加。係可使用不同途徑來減少訊息交通衝突及減少潛時。這些途徑當中的一種是使用環圈互連,例如由系統100所運用的。此外,若係針對不同訊息類別使用分開的線路,則效能會被更進一步地增進。
然而,將訊息類別分開在獨立的互連路徑上可能會導致與訊息類別排序有關的問題。例如,在一個快取同調性協定下,係(部份)運用全球觀測(GO)和竊聽(Snoop,Snp)訊息之組合來管理快取行狀態資料。當一個GO訊息和一個Snp訊息隸屬於同一個快取行時,GO訊息必須領先Snp訊息,以提供對核心之所有權的明確轉移。
在後文之說明中,及如於此所做的更進一步使用,係大略將操作劃分成兩個種類--由處理核心所執行的、和由系統之其餘部份所執行的。因此,與一個處理器核心相關聯的操作係以核心(Core)操作來指涉,而系統的其餘部份被稱為非核心(Uncore)。後文係描述於使用GO和竊聽傳訊及用以支援快取同調性的相關操作之脈絡中。然而,亦可運用類似原則來支援其他類型的訊息類別之單向排序。
當非核心將一個GO反應回傳給一個核心時,係預期接下來的對接收此GO的請求之位址的一個竊聽會得知那個GO的結果。例如,若非核心針對一個對所有權讀取(read for ownership,RFO)請求傳送GO,且在下一個非核心時脈中有尾隨此GO的對同一個位址之竊聽,那麼在某些事例中,會預期核心將此行轉變成M狀態,並以一個RspIFwdM(核心快取被修改,將會轉送資料並使其複本無效)反應回應給非核心。為了實施這個原則,此協定將請求和回應通道(Request and Response Channels)鍊結在單一個隧道中,以使得核心會以適當順序在分開的核心時脈中接收這2個訊息,來使核心能夠滿足保證。然而,非核心必須比GO訊息晚至少1個時鐘週期傳送竊聽訊息,以使順序完全明確。
依據本發明的數個觀點,係提供一個機構來跨由許多中繼段(於此範例中,各個中繼段是一整個環圈或半個環圈)所組成的有在各個中繼段之間做緩衝的一個未排序互連,而實施在兩個訊息類別(於此範例中,GO<=Snp,即,Snp不能越過GO)之間的單向排序。互連和緩衝二者對各個訊息類別而言都是分開的。
對各個中繼段(不管是從原始傳送者開始還是從中間中繼段緩衝開始)而言,係假設傳送者有方法可確認在接收者處接收到「領先者」訊息(GO)。在各個中繼段是具有彈回流量控制的一整個環圈或半個環圈的例子中,這是經由記憶訊息係在何時被傳送並且知道一個彈回訊息要花多少個週期才能重新出現在傳送者之環圈停止的傳送者處之「迷你環圈」來完成。若訊息沒有於盯梢其路徑的迷你環圈所指出的時間在環圈上繞過傳送者,則傳送者會知道訊息已經被接收。這個前提也可係藉由完全歸記(credit)訊息、接收者之明顯應答或一些其他手段來達成。
此機構因而會需要確保在各個中繼段間所做的緩衝內,所接收到的「隨後者」(Snp)訊息不能先於先前所接收到的任何相關「領先者」(GO)訊息被傳送。於此範例中之對於「相關度」的適當衡量會是要使用快取行位址和接收者(對於一個給定快取行位址而言,傳送者總是相同的),但快取行位址並沒有出現在GO訊息中。於此範例中的次佳量測會是一個傳送者接收者對,但Snp訊息可具有複數個接收者,這會使此途徑變得複雜。於此的這個範例因而首先假設經過一個給定緩衝器的所有的GO訊息對於經過同一個緩衝器的所有的SNP訊息而言都是相關的,並且接著展示可如何只在Snp/GO是來自於相同傳送者時將此機構延伸來排序Snp/GO。
第2a~e圖依據本發明的一個實施例,例示出對於一個迷你環圈方案之使用,以確保訊息排序有針對運用數個獨立訊息類別的一個環圈互連架構而被維持。在第2a~e圖中的各個圖表係表示示出由核心2之代理器(代理器6)所產生的GO和Snp訊息之進程的時間(即,時間框架)中的一個狀態。於此範例中,核心2的處理引擎(processing engine,Eng)想要執行對具有對應於一個快取行之位址的一個記憶體位置的一個寫入請求,此快取行具有儲存在與節點Cbo 6(與核心6共置)相關聯之LLC中且由代理器6服務的一個獨占複本。為了指出一個快取行之所有權的轉移,一個GO訊息必須要被接收。為了使所有權轉移明確,GO訊息必須比對應於針對同一個位址之後來異動的任何Snp訊息更先被接收。同時,對應於此快取行的實際資料係可利用資料轉移設施而被不同步發送至請求者,這些資料轉移設施與用於GO和Snp訊息的環圈是分開的。例如,如於上文中所論述的,此系統中的各個核心可係經由一個(與環圈架構)分開的互連而被連接至各個LLC。或者是,可係使用在一個環圈互連架構中的一或多個環圈路徑來做資料轉移。
所例示之時間框架係在代理器6已經起始要將儲存在代理器6之LLC中的快取行資料之複本遞送至核心2之時開始。此時,一個GO訊息於節點Cbo 6被置於環圈(即,環圈0)上。要將一個訊息置於環圈上,必須要有對應於此訊息類別的一個空槽。於所例示的實施例中,可施用環圈為AK;因此,在AK環圈上於節點Cbo 6必須要有一個空槽,以將GO訊息置於環圈0的環圈AK上。
為作例示,在第2a圖中係將代理器6描繪成在時間週期「0」將一個GO訊息於節點Cbo 6置於環圈0的環圈AK中。在各個連續時間週期期間內,環圈AK上的訊息資料以逆時針方式在此環圈的相鄰節點之間前進。因此,GO訊息的向前進展係由標為「GO n」的圓圈描繪,其中n係代表時間週期。在一個實施例中,一個時間週期係對應於針對此環圈互連所使用的一個時鐘週期。一般而言,此時鐘週期可與用於核心的時鐘週期相同、可為核心時鐘週期之倍數、或可被分開計時。
隨著GO訊息通過此環圈,它會抵達其目標節點,也就
是與核心2共置的節點Cbo 2。一個訊息有可能會因為計時不協調和/或緩衝可用性的關係,而在其預定目標節點被「彈回」。被彈回的一個訊息之範例係描繪於對應於第2a圖中之時間框架200的時間週期8。由是,此訊息不會被核心2接收,其將會繞著這個環圈被轉送,直到它可以在其預定目標被接收為止。這有一個範例描繪在第2b~d圖中。
由代理器6所運用的迷你環圈盯梢其置於環圈上之訊息的進程,以使其能由於沒有在經過適當時間週期推移時於其對應節點(即,節點Cbo 6)檢測到訊息的出現,而判定此訊息是否已被接收。例如,環圈0有16個節點,因此時間週期推移是16個時間週期。因而,於時間週期16,代理器6會檢查於Cbo 6的AK環圈資料,看看其是否係對應於其於時間週期0置於環圈上的一個GO訊息。若不是的話,此代理器就知道GO訊息已在其目標被接收,沒有被彈回。若此AK環圈訊息是同一個GO訊息,則此訊息已被彈回;由是,在迷你環圈中的環圈計數器會針對此GO訊息被重設,如於第2b圖中之時間框架202所描繪的。
此處理程序繼續,GO訊息第二次旅經環圈0節點直到抵達對應於時間框架204的時間週期24,如於第2c圖中所示。此時,在至核心2的介面有足夠的可用緩衝空間可接收此GO訊息。當一個目標核心能夠接收一個訊息時,此訊息被稱為「沉沒」。因此,此GO訊息係在對應於時間週期24的時間框架204沉沒。
如於第2d圖中所示,於時間框架200和202對應於此GO
訊息資料的槽繼續通過環圈0,直到其於對應於時間框架206的時間週期32返回節點Cbo 6為止。此時,代理器6檢查對應的AK環圈訊息資料,並判定其並不符合在16個時間週期前所傳送的訊息資料。因此,代理器6判定GO訊息已沉沒,不需要再在其迷你圈中追蹤GO了。此外,由於GO訊息已沉沒,所以現在可以在環圈0之環圈IV上傳送對應於此位址的一個Snp訊息。這描繪在第2e圖中,其中,時間框架208係對應於Snp被置於環圈0之IV環圈上的6個時間週期後。和GO訊息類別一樣,Snp訊息僅可在一個給定時間週期期間內有對應空槽可用時被置於環圈上。同樣地,和之前一樣,Snp訊息僅可在有適宜緩衝空間可用時沉沒(即,在目標節點被接收)。因此,此Snp訊息可通過此環圈的少一部分一或多次,直到沉沒。
前面的迷你環圈方案保證對於有關相同位址之在映對至環圈0之不同環圈的數個獨立訊息類別中之訊息的單向排序。例如,由於有關一項異動的一個Snp訊息要到一個對應GO訊息沉沒之後才能被置於環圈上,所以此Snp訊息絕對不會先於GO訊息沉沒。
然而,當訊息必須在環圈互連之間,例如在系統100中之環圈0和環圈1之間,跨越時,此迷你環圈方案並沒有促進對於在數個獨立訊息類別中之訊息的單向排序。如於下文中所詳細說明的,這是經由運用於這兩個環圈之間跨越的有緩衝切換中之單向訊息排序機構來促進。
第3圖是一個高階方塊圖,其示出對應於系統100之單
向排序機構的有緩衝切換之更進一步的細節。在第3圖中,係示出針對北方有緩衝切換之方塊的細節--然而,會可瞭解,南方有緩衝切換(例如,在Sbo SW和Sbo SE節點之間的過道)亦係以類似方式組配。
在一個實施例中,NW進入方塊114包括針對各個訊息類別環圈的一個進入方塊;於此範例中,這些是包括一個AD進入方塊300、一個AK進入方塊302、一個IV進入方塊304和一個BL進入方塊306。在一個實施例中,除了IV進入方塊304以外,這些進入方塊各包括有一對寫入(Write,WR)埠。係運用一個仲裁器308來管理針對這些進入方塊之至NE外出方塊116的信號之傳輸。在一個實施例中,NE外出方塊包括一個AD外出方塊310、一個AK外出方塊312、一個IV外出方塊314和一個BL外出方塊316。
第3圖亦示出NE進入方塊120和NW外出方塊118。會可瞭解,這些方塊各具有與示於第3圖之上面部份並於上文中所說明之其各別進入和外出方塊類似的組態。如更進一步示出的,環圈0和環圈1之環圈互連路徑各包括有針對各個獨立訊息類別環圈的一對信號路徑,一個是用於順時針(clockwise,CW)繞環圈傳送訊息,而另一個是用於逆時針(counterclockwise,CCW)傳送訊息。因此,會有對應於各個訊息類別的一對輸入信號被一個進入區塊接收、被緩衝、並被轉送至一個外出方塊。如於上文中所論述的,各個信號路徑係利用複數個電氣過道而作實體實施,為求簡明,係將其稱為「信號路徑」或「線路」。
第4圖依據本發明的一個實施例,示出一個進入和外出區塊之更進一步深入的細節。進入方塊400包括解多工器402、404、406和408,用以將AD和BL信號解多工至AD可彈回FIFO 410、AD經歸記FIFO 412、BL可彈回FIFO 414和BL經歸記FIFO 416。各別的仲裁器418和420係用來仲裁要由一個相對SBo之外出區塊接收的AD和BL輸出。同時,CCW和CW的AK和IV信號係在各別AK可彈回FIFO 422和IV可彈回FIFO 424中被緩衝。AK和IV FIFO的輸出被提供為至相對SBo之外出區塊的輸入。
外出方塊426接收由對應的一個輸入方塊所輸出的信號。解多工器428和430分別將AD和BL信號解多工至AD可彈回FIFO 432、AD經歸記FIFO 434、BL可彈回FIFO 436和BL經歸記FIFO 438。這些FIFO之輸出係由仲裁器440、442、444和446仲裁。此外,來自於進入方塊輸出的AK和IV信號係分別由AK外出方塊448和IV外出方塊450接收。
第4圖亦示出在AK可彈回FIFO 422和IV可彈回FIFO 424之間的GO/Snp互鎖,以及在AK外出方塊448和IV外出方塊450之間的GO/竊聽互鎖。GO/竊聽互鎖的一個實施例之細節係在下文中參考第5圖論述。如由第4圖中之虛線框所示出和在第5圖中所例示的,此GO/竊聽互鎖包括同時為進入和外出方塊對之一部份的成份。簡言之,此互鎖提供一種單向訊息排序機構,此單向訊息排序機構確保在一個給定進入方塊接收的屬於第一類別之訊息(例如,在AK上的GO訊息)不能被在同一個進入方塊接收的屬於第二類別之
訊息(例如,在IV上的竊聽訊息)超越。同時,屬於第一類別的訊息被允許在可施用情況下超越屬於第二類別的訊息。
第5圖示出對於進入和外出方塊組態的另一個例示。於此圖中,係將資料示為在一個進入方塊從一個進入Sbo節點(Sbo NW)被接收,在此進入方塊間被傳遞至一個外出方塊,並被轉送至一個外出Sbo節點(Sbo NE)。
第6圖示出一個單向訊息排序機構200之一實施例的更進一步的細節。此機構運用一個GO外出佇列602、一個Snp外出FIFO 604、一個GO進入FIFO 606和一個Snp進入FIFO 608。GO外出佇列602包括一個飛行向量指標(In-flight Vector pointer,IFV Ptr)610,而Snp外出FIFO包括一個Snp序列號(Snp Serial Number,SSN)資料方塊612和一個竊聽世代(Snp Epoch)方塊614。GO進入FIFO 606包括一個GO世代資料方塊616,而Snp進入FIFO包括一個SSN資料方塊618和一個Snp世代資料方塊620。接近機構200之頂端,有一個迷你環圈622、一個「世代增額計數器」(epoch delta counter,EDC)暫存器624、一個「外出序列號」(Egress Serial Number,ESN)暫存器626、和一個決定方塊628。在此圖之中間部份描繪有一個「GO世代向量」(GO epoch vector,GO-EV)暫存器630、一個「GO飛行向量」(GO In-flight Vector,GO-IFV)暫存器632、一個尾指標(Tail Ptr)634、一個頭指標(Head Ptr)636和一個分離計數器(separation counter,Sep Ctr)638。接近此圖之底端,有一個GO世代暫存器640、一個Snp世代暫存器642、和一個進入序列號(Ingress Serial Number,ISN)暫存器644。
這些進入和外出FIFO典型上係由連接上文中所述的環圈0和1之有緩衝切換所使用的緩衝器之典型。然而,如於第2圖中進一步詳示的,各個緩衝切換係運用針對運用不同路徑之複數個訊息類別的緩衝行為和有關電路。會可瞭解,係可對系統100中之各個有緩衝切換實施類似電路。
GO/竊聽互鎖之功能係由示於第6圖中的電路部份提供,其係耦接在這些進入和外出緩衝器(即,GO外出佇列602、Snp外出FIFO 604、GO進入FIFO 606和Snp進入FIFO 608)之間。如於上文中所論述的,GO/竊聽互鎖包含一個單向訊息排序機構,其確保在一個給定進入方塊接收的屬於第一類別之訊息(例如,GO訊息)不會被在同一個進入方塊接收的屬於第二類別之訊息(例如,竊聽訊息)超越。
依據本發明的一個實施例,並參考第7A和7B圖之流程圖及第6圖之示意圖,係執行下面所述的操作來促進GO和Snp訊息之單向排序,以使針對相同快取行的GO訊息保證是領先對應的Snp訊息。這些操作在下面和這個流程圖中係使用對應操作號碼來說明。
1.在第7A圖之方塊700中,此處理程序係從在一個緩衝器進入(例如,GO進入FIFO 606)接收到到各個GO訊息時,於ISN暫存器644中增量一個「進入序列號」開始。在一個實施例中,ISN有2X的範圍(GO進入+GO-IFV大小(於下文中在操作4說明)),亦即,它有一個包裝位元。儲存在GO世代暫存器640中的目前「GO世代」位元係與GO訊息一起儲存(在由同一個週期中所接收到的Snp訊息所做的任何設定之後,請見操作2),如由GO世代資料方塊616所示的,且「GO世代」位元被重置(這是領先操作2中之設定)。「Snp世代」位元接著在Snp世代暫存器642中被設定(這是領先操作2中之重置)。「GO世代」位元之初始值是一,而「Snp世代」位元之初始值是零。
2.如於方塊702中所示,在緩衝器進入接收到各個Snp訊息時,目前ISN(在由同一個週期中所接收到的GO訊息所做的任何增量之前,請見操作1)係以Snp序列號(SSN)儲存在Snp FIFO項目中(例如,在Snp進入FIFO 608中的SSN資料方塊618中)。目前「Snp世代」位元(在由同一個週期中所接收到的GO訊息所做的任何設定之前,請見操作1)係與Snp訊息一起儲存在Snp世代資料方塊620中,並且「Snp世代」位元在Snp世代暫存器642中被重置。「GO世代」位元接著在GO世代暫存器640中被設定。
3.在緩衝器外出傳送各個GO訊息時,係運用緩衝器迷你環圈622來追蹤下一個接收器對GO訊息之接收(細節在後面的幾個操作中),如於流程圖方塊704所示。迷你環圈622係以類似於上文中所說明的迷你環圈之方式作業,以確保在一個環圈互連內的單向訊息排序。在類似上文中所述的一種方式中,它會在GO訊息通過外出環圈(即,此訊息正被傳輸進入的那個環圈)中之節點時盯梢其進程,並判定這些GO訊息於何時沉沒。
4.「GO飛行向量」(GO-IFV)632追蹤在GO外出佇列602或迷你環圈622內飛行的GO訊息,如於流程圖方塊706中所示。在功能上,GO-IFV 632之大小可從一個項目變化到許多項目;其用途係要基於方向/極性寬容GO外出佇列和外出之迷你環圈深度和亂序性質,並基於彈回寬容迷你環圈,如下文所述。建議大小會是在迷你環圈深度和GO外出佇列之大小加上迷你環圈深度之間。與GO飛行向量相關聯的對應資料包括尾指標634、頭指標646和分離計數器638。
5.在各個GO訊息從緩衝器進入移動到緩衝器外出時,於尾指標634設定GO-IFV位元,並增量尾指標和分離計數器638。將(預先增量)尾指標儲存在GO外出佇列602中之外出項目的IFV-Ptr欄中。將來自於一個分開的「GO世代向量」(GO-EV)暫存器630中之進入項目的GO世代位元儲存在相同指標位置。這些操作係描繪在流程圖方塊708中。
6.在緩衝器外出傳送各個GO訊息時,將來自於外出項目的IFV Ptr 610儲存於迷你環圈622中,如於流程圖方塊710中所示。
7.在各次迷你環圈解除配置(即,GO沉沒)時,使用儲存在迷你環圈項目中的指標來清除對應的GO-IFV位元,如於流程圖方塊712中所示。
8.如於第7B圖中之流程圖方塊714所示,在各個週期期間內,GO-IFV暫存器632之在頭指標(頭Ptr 636)處的位元會被檢查。若其為零,則分離計數器為非零,頭Ptr 636被增量,Sep Ctr 638被減量,且在ESN暫存器626中的「外出序列號」(ESN)被增量。若除此之外,在頭Ptr被增量之前,於頭Ptr處之GO-EV位元被設定,則「世代增額計數器」(EDC)被減量。在一個實施例中,EDC之範圍為+/-(Snp進入+Snp外出大小),且永遠為負或零。
9.若GO-IFV分離計數器為「滿」(即,等於GO-IFV大小),則停止將GO訊息從進入移動到外出,如於流程圖方塊716中所示。
10.在緩衝器外出傳送各個Snp訊息時,來自於Snp外出FIFO之FIFO項目的在SSN資料方塊612中之值相對於在ESN暫存器626中的值被檢查,條件在於EDC暫存器624之值。若EDC值(在由Snp訊息所做的一次推測增量之後,請見操作12)為負,或其為零且SSN等於ESN,那麼在緩衝器中的所有的GO訊息在Snp訊息抵達的時候都已經在目標被接收了,且此Snp訊息可被傳送。否則(EDC非負,且SSN大於ESN),此Snp訊息就不能被傳送。這些操作係示於流程圖方塊718中。
11.如於流程圖方塊720中所示,當一個Snp訊息在這項檢查中失敗時,其SSN會被紀錄。在ESN變成與SSN相等之前,緩衝器不會嘗試傳送任何Snp訊息。EDC並不需要被檢查,因為在這個事例中,它不會在ESN變成與SSN相等之前變成負值。這意味著,各個Snp訊息最多只會被擊落一次。
12.當通過了Snp訊息檢查,且此Snp訊息已被轉送到至接收者(即,從Snp外出FIFO 604被轉送)時,若對應Snp世代位元被設定,則EDC暫存器624被增量,如於流程圖方塊722中所示。
將這個概念延伸到逐來源穿隧(per-source tunneling),係運用逐來源ISN、ESN、GO和Snp世代位元、以及EDC。並不需要逐來源GO-IFV。在一個實施例中,GO和Snp訊息二者皆已經在訊息酬載中載運來源,所以並不需要額外的儲存。在外出的Snp訊息檢查可能會變得更複雜,因為它會需要選擇適當計數器來作比較。將這個概念延伸到每一週期接收兩個GO訊息,可完成下列各項:(1)對於接收到兩個GO訊息的任何週期,ISN被增量二;(2)所接收到的這兩個GO訊息中最多有一者可具有一個世代(在GO進入FIFO中看起來較年長的那個)。將這個概念延伸到可具有預定要被反向亂序傳送之數個Snp訊息的一個Snp外出佇列(取代FIFO),可完成下列各項:(1)將要抵達的Snp訊息載運指出他們所預定之方向的指示;(2)GO訊息被以維持於進入的兩個GO世代位元貼標籤,一個位元對應於各Snp訊息方向;(3)依Snp訊息被預定的方向而定,他們被以維持於進入的兩個Snp世代位元中之一者貼標籤;(4)依據針對各個Snp方向的對應GO世代位元,有兩個EDC被維持於外出,且在各個GO訊息如由迷你環圈所追蹤地沉沒時被更新;(5)在從外出配送之前,各個Snp依據其所預定之方向檢查適當的EDC。
運用此方案中之世代部份是因為並沒有任何可避免ESN在Snp FIFO項目中之SSN前任意疾走之物。世代控制ESN/SSN比較何時為相關,及其可於何時被忽略。
運用此方案中之序列號部份是因為一個Snp需要與緊接在先的相關GO排序。當GO被接收(且也可能開始一個新的世代)時,並不曉得它是否會變成在與其相關的一個Snp之前最後一個被接收的GO。序列號容許此Snp識別同一世代之緊接在先的GO已於何時在下一個中繼段被接收。
無論何時,在一個Snp抵達兩個GO之間時,一個新的竊聽世代會被指派。在此Snp之後的GO會被指派下一個GO世代。在此Snp之前的最後一個GO抵達時,仍在緩衝器(或迷你環圈)中的所有的GO都會有一個明確的序列號,因為序列號的大小是2X(GO進入+GO-IFV大小)。當下一個Snp抵達時,它會得到同一個序列號。即使它是在任何更多GO被傳送之前到達外出的頭,基於明確的序列號,它也會知道它是較年幼的(即,在GO之後被接收)。隨後的GO會被指派下一個世代;所以如果那個GO是在此Snp之前被傳送,那麼此Snp會基於負EDC而忽略序列號比較。EDC絕不會變地太負以致於讓它繞回正值,因為它的大小是基於(Snp進入+Snp外出大小),且對於各個Snp而言,世代改變最多只有一。
於前文中之範例中,係在一對環圈互連之間實施單向訊息排序機構。然而,於本文中所揭露的這些概念亦可係實施在其他類型的環圈中。
例如,考慮具有一個任意拓樸的一個互連,其具有由鏈路所互連的任何數量的節點。各個節點提供在多個本地代理器間之至此互連的其他部份的介面。各個節點亦作用為此互連中的一個路由器。這些節點可具有複數個輸入和輸出埠--包括用於傳送/接收訊息自/至本地代理器的複數個本地埠。此外,輸入或輸出埠可有相關聯的緩衝器。然而,這些節點可亦為無緩衝器(例如,2D網目(2D Mesh)節點被緩衝,並具有4個輸入/輸出埠,和一個本地埠,而在一個實施例中的環圈節點係無緩衝器的,且具有2個輸入/輸出節點,和1或2個本地埠)。
於此示範互連中的訊息被劃分成多個類別(例如,環圈訊息被劃分成4個主要類別,AD/BL/AK/IV)。連接節點的點對點鏈路是針對不同訊息類別提供分開的實體鏈路,而容許不同類別之訊息被並行傳送(例如,利用環圈組態),抑或是被虛擬化,以使所有訊息類別共享相同的實體鍊路且需要仲裁並以插置方式被傳送(例如,一些2D網目,或QPI組構)。
各個節點以所接收到的順序傳遞屬於同一個類別且介於相同輸入和輸出埠之間的的訊息,然而,若節點有被緩衝,則其可重新排序屬於不同類別的訊息(這容許藉由此互連之對於不同訊息類別的轉送進程)。請注意,在此互連中的一個來源節點和一個目標節點之間被傳送的屬於同一個類別的訊息可以不(或甚至需要)以被傳送之順序抵達(在容許訊息彈回時這是可以發生的,如稍後將說明的)。
節點可以有也可以沒有用於在轉送訊息之前將其儲存的輸入埠或輸出埠緩衝器(以FIFO之形式)。具有複數個輸入或輸出埠的數個節點係具有一個內部互連(具有實體或虛擬化的數個鏈路)和相關聯流量控制、仲裁等等,使其能夠將訊息從輸入埠傳輸至輸出埠。這些節點是支援針對不同訊息類別的虛擬通道並共享在輸入和輸出埠之間的共用實體鏈路,抑或是具有逐訊息類別緩衝與在輸入和輸出埠之間的內部互連。
若此節點有被緩衝,則其於其(輸入)緩衝為滿的時候使用後壓(這可以是基於訊息類型或目標埠)。若此節點有被緩衝,則被鏈路之末端節點後壓的訊息會待在傳送者節點的(輸出)緩衝器中;但若此節點無緩衝,則訊息會在此互連上被彈回並重新選路在最終會領導其回到目前節點的鏈路路徑,以使其能得到另一個機會來被先前將其彈回的節點接受(這些是無損耗互連,訊息不會被丟棄)。請注意,訊息可更進一步被分劃成已歸記和未歸記,其中,已歸記訊息一向被保證能被接受。而歸記可以是末端對末端或點對點。
請注意,一個互連所具有的節點可係混合有緩衝和無緩衝節點(例如,系統100互連具有經由兩個雙向有緩衝切換節點所互連的由無緩衝節點所組成的兩個環圈)。
在這樣的一個一般類型互連中,可能會有屬於兩個不同訊息類別C1和C2的兩個訊息帶有這樣的要求:若任何節點A將以某種方式相關(例如,關於同一個位址)的一對這些訊息傳送至任何其他節點B,那麼C2訊息(在前面所述的範例中,是竊聽)應該要在相關的C1訊息(於此範例中,是GO)之後被B接收,亦即,C2訊息在從A到B的路徑上不應繞過相關C1訊息。請注意,這並不會阻止C1訊息繞過C2訊息。
為簡化這個問題的答案,我們首先要求這兩個訊息於此互連中是採取相同的節點路線,因為若它們於此互連上是採取不同路線,那麼要控制其抵達順序可能會無法達成,或者是會需要外部機構。請注意,這樣的共用路線可包括圓形路徑,以防訊息可彈回的情況;若兩個訊息都可彈回,則我們要求其彈回路徑也要是一樣的。接下來,我們將在來源和目標節點之間的路徑分解成數個區段,以使各個區段不是僅由有緩衝節點所組成,就是僅由無緩衝節點組成(在這些區段之間的介面處之節點是特殊節點,他們作用為將某些輸入埠連接至某些輸出埠的無緩衝節點,並作用為連接其他輸入/輸出埠的有緩衝節點,例如系統100中之緩衝器切換節點)。最後,在這個路徑的各個區段上,我們施行保證C2訊息不會繞過相關C1訊息的數個規則(對特定接收者而言)。
在系統100之示範環圈互連的事例中,所關注的這兩個訊息為竊聽和GO(屬於兩個不同訊息類別)。於此互連的無緩衝部份(即,環圈),這些訊息係在分開的實體鍊路上傳送。這些SBo為此互連之(實體伸展的)有緩衝節點,具有針對每個訊息類別(更確切而言,是針對各個AD/BL/AK/IV類別)的數個輸入和輸出FIFO與在輸入和輸出FIFO之間的分開的數個實體鏈路。
為了在無緩衝路徑(例如,此互連中之環圈)上引入順序,係運用迷你環圈機構來確保竊聽只在GO於此路徑之另一端被接收之後才被傳送。為了在有緩衝路徑(例如,此互連中之有緩衝切換節點)上引入順序,係在各個有緩衝節點內(即,在有緩衝節點的各對輸入和輸出埠之間)實施半開隧方案。請注意,所提出的在有緩衝路徑(和迷你環圈機構)上之半開隧可避免竊聽繞過GO,無論這些訊息的來源和目標為何。可將此方案延伸,來針對每個目標(包括於目標處的資產,例如,快取行位址等等),且理論上甚至是針對每個來源/目標對,而施行這樣的排序要求,但成本會越來越高。
若C1訊息不能在此路徑的無緩衝部份上被彈回,那麼迷你環圈機構會衰退成一個簡單的機構,於此機構中,傳送者可在(所有較早/相關)C1訊息之後立即傳送任何C2訊息,而無須等到C1訊息在目前路徑之端點被接受之後。
若在一個傳送者節點和一個接收者節點之間的路徑之有緩衝區段含有複數個節點(例如,在一個2D網目中),那麼各個這樣的節點會在各對輸入和輸出埠之間實施半開隧方案。因此,在不同輸入和輸出埠之間的竊聽和GO序列及世代會被分別貼標籤和識別。各個輸出埠會接著依其所接收的C1和C2訊息所來自的輸入埠之脈絡而排序這些訊息。這當然會對本文所提出之方案增加更進一步的複雜度,但必要的改變/延伸是很簡單明瞭的。
總括而言:若在互連中的一個來源和一個目標節點之間的路徑上,各個節點保證對(所接收之)任何C1訊息之至此路徑上之下一個節點(例如,在此路徑之無緩衝和有緩衝區段之介面處的節點,或在此路徑之有緩衝區段中的一個相鄰節點,或在此路徑之無緩衝區段中的一個節點)的遞送會先於所有(所接收之)相關/在後的C2訊息,那麼歸納而言,從來源所傳送的任何C1訊息都會先於所傳送的所有相關/在後的C2訊息而於目標被接收。
上文中對於所例示之本發明之實施例的說明,包括在發明摘要中所說明的,並非係意欲要將本發明窮盡或限制在所揭露的這些拘泥形式中。雖然於本文中係為求例示目的而說明本發明的數個特定實施例和範例,但在本發明之範疇內可能會有多種相等修改體,如熟於相關技藝者會可識出的,可有鑑於上文中之詳細說明而對本發明作出這些修改。於後附申請專利範圍中所使用的詞語不應被解讀為將本發明限制於在本說明書及圖式中所揭露的特定實施例。相反地,本發明之範疇係要完全由後附申請專利範圍決定,後附申請專利範圍係要依據已建立的申請專利範圍解讀宗旨來解釋。
100...系統
102...處理器核心
104...節點
106...細節
108...快速路徑互連(QPI)組構
110...輸入/輸出介面
114...NW進入方塊
116...NE外出方塊
118...NW外出方塊
120...NE進入方塊
122...SW進入方塊
124...SE外出方塊
126...SE進入方塊
128...SW外出方塊
130...共享記憶體/共享記憶體儲藏
132...處理引擎(Eng)
134...第一階/第二階(L1/L2)快取
136...最後階快取(LLC)
138‧‧‧快取代理器
140、142‧‧‧快取過濾器
144‧‧‧目錄
200~208‧‧‧時間框架
300‧‧‧AD進入方塊
302‧‧‧AK進入方塊
304‧‧‧IV進入方塊
306‧‧‧BL進入方塊
308、418、420、440~446‧‧‧仲裁器
310‧‧‧AD外出方塊
312、448‧‧‧AK外出方塊
314、450‧‧‧IV外出方塊
316‧‧‧BL外出方塊
400‧‧‧進入方塊
402~408、428、430‧‧‧解多工器
410、432‧‧‧AD可彈回FIFO
412、434‧‧‧AD經歸記FIFO
414、436‧‧‧BL可彈回FIFO
416、438‧‧‧BL經歸記FIFO
422‧‧‧AK可彈回FIFO
424‧‧‧IV可彈回FIFO
426‧‧‧外出方塊
600‧‧‧機構
602‧‧‧全球觀測(GO)外出佇列
604‧‧‧竊聽(Snp)外出FIFO
606‧‧‧全球觀測(GO)進入FIFO
608‧‧‧竊聽(Snp)進入FIFO
610‧‧‧飛行向量指標(IFV Ptr)
612、618‧‧‧竊聽序列號(SSN)資料方塊
614‧‧‧竊聽(Snp)世代方塊
616‧‧‧全球觀測(GO)世代資料方塊
620‧‧‧竊聽(Snp)世代資料方塊
622‧‧‧迷你環圈
624‧‧‧世代增額計數器(EDC)暫存器
626‧‧‧外出序列號(ESN)暫存器
628‧‧‧決定方塊
630‧‧‧全球觀測(GO)世代向量(GO-EV)暫存器
632‧‧‧全球觀測(GO)飛行向量(GO-IFV)暫存器
634‧‧‧尾指標(Ptr)
636‧‧‧頭指標(Ptr)
638‧‧‧分離計數器(Sep Ctr)
640‧‧‧全球觀測(GO)世代暫存器
642‧‧‧竊聽(Snp)世代暫存器
644‧‧‧進入序列號(ISN)暫存器
700~722‧‧‧方塊
第1圖為依據本發明的一個實施例而例示出一個示範系統架構的示意圖,此系統架構包括有兩個環圈互連,和用於促進在這兩個環圈互連之間所傳輸的不同訊息類別之訊息之排序的複數個單向訊息排序機構;
第2a~2e圖依據一個實施例,例示對於一個迷你環方案之使用,此迷你環圈方案係用於確保訊息排序在運用獨立訊息類別的環圈互連架構中之一環圈中有被維持;
第3圖為依據本發明的一個實施例而例示出一個單向訊息排序機構之高階細節的一個方塊圖;
第4圖為依據本發明的一個實施例而例示出耦接至一個環圈互連之環圈停止節點的一個進入(Ingress)和外出(Egress)方塊之更進一步細節的示意圖;
第5圖為依據本發明的一個實施例而例示出耦接在各別環圈互連之環圈停止節點之間的一個進入和外出方塊對之細節的示意圖;
第6圖為依據本發明的一個實施例而例示出用於促進一種單向訊息排序機構的電路部件之示意圖;
第7a和7b圖示出一個流程圖,此流程圖例示出由第6圖之單向訊息排序機構所實施以促進不同訊息類別之訊息的單向排序之操作。
100‧‧‧系統
102‧‧‧處理器核心
104‧‧‧節點
106‧‧‧細節
108‧‧‧快速路徑互連(QPI)組構
110‧‧‧輸入/輸出介面
114‧‧‧NW進入方塊
116‧‧‧NE外出方塊
118‧‧‧NW外出方塊
120‧‧‧NE進入方塊
122‧‧‧SW進入方塊
124‧‧‧SE外出方塊
126‧‧‧SE進入方塊
128‧‧‧SW外出方塊
130‧‧‧共享記憶體/共享記憶體儲藏
132‧‧‧處理引擎(Eng)
134‧‧‧第一階/第二階(L1/L2)快取
136‧‧‧最後階快取(LLC)
138‧‧‧快取代理器
140、142‧‧‧快取過濾器
144‧‧‧目錄
Claims (19)
- 一種資訊傳輸方法,其包含下列步驟:針對在處理器上之互連網路中之互連或區段之間被傳送的訊息施行一單向訊息排序機構,該等訊息分屬於複數個獨立訊息類別中之一者,該等獨立訊息類別包含一第一訊息類別和一第二訊息類別,其中,要被傳送至一個目標節點的屬於該第一訊息類別一個訊息會比要被傳送至該目標節點的屬於該第二訊息類別的一相關訊息更早抵達該目標節點,並且其中,該等互連或區段係使用與屬於該第一訊息類別之訊息不同的電子路線來傳輸屬於該第二訊息類別之訊息。
- 如申請專利範圍第1項之方法,其中,該等互連或區段包含第一環圈互連和第二環圈互連。
- 如申請專利範圍第1項之方法,其中,該等互連或區段包含數個有緩衝節點。
- 如申請專利範圍第1項之方法,其中,該等訊息可支援在運用複數個處理器或處理器核心的一個系統中的一個快取同調性協定。
- 如申請專利範圍第4項之方法,其中,該第一訊息類別包含全球觀測訊息,該第二訊息類別包含與該快取同調性協定有關的竊聽訊息。
- 如申請專利範圍第1項之方法,其中,該單向訊息排序之施行沒有使用對於對應於該等訊息的來源和目標節點的識別。
- 如申請專利範圍第1項之方法,其進一步包含下列步驟:在一第一互連和一第二互連之間運用一個有緩衝 機構,該第一互連和該第二互連分別各包含多個線接過道且分別各耦接至多個節點,其中,該有緩衝機構包括分別對應於該等第一和第二訊息類別的有緩衝路徑,並係設計成會持留在該有緩衝機構中於比屬於該第一訊息類別的訊息所被接收之週期更晚的一個週期中接收到的屬於該第二訊息類別的一個訊息並將屬於該第二訊息類別之該訊息延遲而使其不在屬於該第一類別之該訊息已被傳送出去且已於其下一個目標被接收到之前從該有緩衝機構被傳送出去。
- 如申請專利範圍第7項之方法,其進一步包含下列步驟:針對各個有緩衝路徑而運用進入和外出緩衝器。
- 一種資訊傳輸裝置,其包含:一第一有緩衝路徑,其係設計來從一第一互連接收對應於一第一訊息類別的訊息,並係設計來將所接收的對應於該第一訊息類別之訊息傳送至一第二互連,其中,該第一互連及該第二互連分別各包含多個線接過道且分別各耦接至多個節點;一第二有緩衝路徑,其係設計來從該第一互連接收對應於一第二訊息類別的訊息,並係設計來將所接收的對應於該第二訊息類別之訊息傳送至該第二互連;以及一個單向訊息排序機構,其係設計成確保下述事情:對於從該第一互連所接收到的屬於該等第一和第二訊息類別之相關聯訊息,屬於該第一訊息類別之訊息會比屬於該第二訊息類別之訊息更早被傳送到該第二互連。
- 如申請專利範圍第9項之裝置,其中,該等第一和第二有緩衝路徑各包括一個進入緩衝器和一個外出緩衝器。
- 如申請專利範圍第10項之裝置,其中:該等進入緩衝器係設計來接收來自一第一環圈互連的一個環圈停止節點的訊息,該第一環圈互連具有與該第一訊息類別相關聯的第一環圈及與該第二訊息類別相關聯的第二環圈,並且該等外出緩衝器係設計來將訊息傳送出去至一第二環圈互連的一個環圈停止節點,該第二環圈互連具有與該第一訊息類別相關聯的第一環圈及與該第二訊息類別相關聯的第二環圈。
- 如申請專利範圍第9項之裝置,其進一步包含:操作性地耦接至該等第一和第二有緩衝路徑的一個互鎖機構,其管理對於被從該第一互連接收並被傳送至該第二互連的屬於該等第一和第二訊息類別之訊息的有序傳送,其中,該互鎖機構係設計成確保下述事情:在比屬於該第一訊息類別的一個訊息於該第一有緩衝路徑所被接收之週期更晚的一個週期中於該第二有緩衝路徑中被接收的屬於該第二訊息類別的一個訊息在屬於該第一類別之該訊息被傳送出去且於其下一個目標被接收之前不會被傳送出去至該第二互連。
- 如申請專利範圍第9項之裝置,其中,一組相關聯訊息包括:屬於該第一訊息類別的一個訊息、和屬於該第二訊息類別的一或多個訊息。
- 一種資訊傳輸系統,其包含:第一和第二環圈互連,其各分別具有多個節點,並各包含有用於在節點之間傳輸訊息的分開的至少兩個路線,包括用於傳輸第一訊息類別之訊息的第一環圈和 用於傳輸第二訊息類別之訊息的第二環圈;多個處理器核心,其操作性地耦接至該等第一和第二環圈互連中的個別節點,各個處理器核心具有至少一階的快取;多個快取代理器,其操作性地耦接至該等第一和第二環圈互連中的個別節點,各個快取代理器係設計來傳送和接收屬於該等第一和第二訊息類別的訊息;以及一第一有緩衝單向訊息排序機構,其操作性地耦接在該等第一和第二環圈互連之間,並係設計成確保下述事情:對於從該第一環圈互連中的一個代理器所傳送的預定要到該第二環圈互連中之一或多個代理器的屬於該等第一和第二訊息類別之訊息,屬於該第一訊息類別之訊息會比屬於該第二訊息類別之訊息更早被轉送到該第二環圈互連。
- 如申請專利範圍第14項之系統,其中,一個有緩衝單向訊息排序機構包括針對該等第一和第二訊息類別各者的進入和外出緩衝器,該系統進一步包含:在該第一環圈互連中的一第一環圈停止節點,其耦接至該等進入緩衝器,以及在該第二環圈互連中的一第二環圈停止節點,其耦接至該等外出緩衝器。
- 如申請專利範圍第14項之系統,其進一步包含:一第二有緩衝單向訊息排序機構,其操作性地耦接在該等第一和第二環圈互連之間,並係設計成確保下述事情:對於從該第二環圈互連中的一個代理器所傳送的預定要到該第一環圈互連中之一或多個代理器的屬於 該等第一和第二訊息類別之訊息,屬於該第一訊息類別之訊息會比屬於該第二訊息類別之訊息更早被轉送到該第一環圈互連。
- 如申請專利範圍第16項之系統,其中,該等第一和第二有緩衝單向訊息排序機構各包括針對該等第一和第二訊息類別各者的進入和外出緩衝器,該系統進一步包含:在該第一環圈互連中的一第一環圈停止節點,其耦接至該第一有緩衝單向訊息排序機構的該等進入緩衝器,並耦接至該第二有緩衝單向訊息排序機構的該等外出緩衝器,以及在該第二環圈互連中的一第二環圈停止節點,其耦接至該第二有緩衝單向訊息排序機構的該等進入緩衝器,並耦接至該第一有緩衝單向訊息排序機構的該等外出緩衝器。
- 如申請專利範圍第14項之系統,其中,該第一訊息類別包括由該系統所運用的一個快取同調性協定之全球觀測訊息,且該第二訊息類別包括與該快取同調性協定相關聯的竊聽訊息。
- 如申請專利範圍第14項之系統,其中,該第一有緩衝單向訊息排序機構施行訊息排序,以使在比屬於該第一訊息類別的一個訊息更晚的一個週期中於該排序機構的一個進入緩衝器被接收的屬於該第二訊息類別的一個訊息在屬於該第一訊息類別之該訊息被傳送至該第二環圈互連且於其下一個目標被接收之前不能被傳送至該第二環圈互連。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/889,802 US8554851B2 (en) | 2010-09-24 | 2010-09-24 | Apparatus, system, and methods for facilitating one-way ordering of messages |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201225584A TW201225584A (en) | 2012-06-16 |
TWI583153B true TWI583153B (zh) | 2017-05-11 |
Family
ID=45871767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100134346A TWI583153B (zh) | 2010-09-24 | 2011-09-23 | 用於促進訊息單向排序之裝置、系統和方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8554851B2 (zh) |
EP (1) | EP2619954A4 (zh) |
TW (1) | TWI583153B (zh) |
WO (1) | WO2012040689A2 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8185602B2 (en) | 2002-11-05 | 2012-05-22 | Newisys, Inc. | Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters |
US8554851B2 (en) | 2010-09-24 | 2013-10-08 | Intel Corporation | Apparatus, system, and methods for facilitating one-way ordering of messages |
GB2499765B (en) * | 2010-12-09 | 2014-02-19 | Ibm | Multicore system and method of reading the core data |
US20120095607A1 (en) * | 2011-12-22 | 2012-04-19 | Wells Ryan D | Method, Apparatus, and System for Energy Efficiency and Energy Conservation Through Dynamic Management of Memory and Input/Output Subsystems |
US8982695B2 (en) * | 2012-09-29 | 2015-03-17 | Intel Corporation | Anti-starvation and bounce-reduction mechanism for a two-dimensional bufferless interconnect |
US9391839B2 (en) * | 2014-06-11 | 2016-07-12 | Amplisine Labs, LLC | Ad hoc wireless mesh network |
US9350732B1 (en) * | 2014-11-07 | 2016-05-24 | Elliptic Technologies Inc. | Integrity protection for data storage |
CN105740164B (zh) * | 2014-12-10 | 2020-03-17 | 阿里巴巴集团控股有限公司 | 支持缓存一致性的多核处理器、读写方法、装置及设备 |
US9785556B2 (en) * | 2014-12-23 | 2017-10-10 | Intel Corporation | Cross-die interface snoop or global observation message ordering |
US20160191420A1 (en) * | 2014-12-27 | 2016-06-30 | Intel Corporation | Mitigating traffic steering inefficiencies in distributed uncore fabric |
US9606942B2 (en) | 2015-03-30 | 2017-03-28 | Cavium, Inc. | Packet processing system, method and device utilizing a port client chain |
US10003551B2 (en) | 2015-03-30 | 2018-06-19 | Cavium, Inc. | Packet memory system, method and device for preventing underrun |
US10374994B1 (en) * | 2018-02-21 | 2019-08-06 | King.Com Ltd. | Messaging system |
CN110677468B (zh) * | 2019-09-23 | 2022-10-18 | 创新先进技术有限公司 | 消息处理方法、装置以及设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1198435C (zh) * | 2001-05-29 | 2005-04-20 | 松下电器产业株式会社 | 内容接收和播放装置和数据包接收方法 |
CN1812405A (zh) * | 2004-12-10 | 2006-08-02 | 微软公司 | 在请求-响应传输协议上的可靠的单向消息传递 |
US20070030852A1 (en) * | 2005-08-08 | 2007-02-08 | Mark Szczesniak | Method and apparatus for enabling routing of label switched data packets |
US20070055827A1 (en) * | 2005-09-07 | 2007-03-08 | Benjamin Tsien | Hiding conflict, coherence completion and transaction ID elements of a coherence protocol |
US20070225044A1 (en) * | 2006-03-27 | 2007-09-27 | Ka Law | Multi-channel wireless networks |
US20080304479A1 (en) * | 2007-06-07 | 2008-12-11 | Scott Steven L | One-way message notificatoin with out-of-order packet delivery |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282190B1 (en) * | 1997-12-17 | 2001-08-28 | Nortel Networks Limited | Network centric call processing architecture using distributed call segments |
US20030195989A1 (en) * | 2001-07-02 | 2003-10-16 | Globespan Virata Incorporated | Communications system using rings architecture |
US20060041715A1 (en) * | 2004-05-28 | 2006-02-23 | Chrysos George Z | Multiprocessor chip having bidirectional ring interconnect |
US8151059B2 (en) * | 2006-11-29 | 2012-04-03 | Intel Corporation | Conflict detection and resolution in a multi core-cache domain for a chip multi-processor employing scalability agent architecture |
US7929526B2 (en) * | 2007-09-28 | 2011-04-19 | Oracle America, Inc. | Direct messaging in distributed memory systems |
US20100274972A1 (en) * | 2008-11-24 | 2010-10-28 | Boris Babayan | Systems, methods, and apparatuses for parallel computing |
US8078911B2 (en) * | 2009-10-16 | 2011-12-13 | Microsoft Corporation | Error recovery for application-level intermediaries |
US8554851B2 (en) | 2010-09-24 | 2013-10-08 | Intel Corporation | Apparatus, system, and methods for facilitating one-way ordering of messages |
-
2010
- 2010-09-24 US US12/889,802 patent/US8554851B2/en not_active Expired - Fee Related
-
2011
- 2011-09-23 TW TW100134346A patent/TWI583153B/zh active
- 2011-09-26 EP EP11827705.2A patent/EP2619954A4/en not_active Withdrawn
- 2011-09-26 WO PCT/US2011/053208 patent/WO2012040689A2/en active Application Filing
-
2013
- 2013-10-08 US US14/048,254 patent/US9288260B2/en not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1198435C (zh) * | 2001-05-29 | 2005-04-20 | 松下电器产业株式会社 | 内容接收和播放装置和数据包接收方法 |
CN1812405A (zh) * | 2004-12-10 | 2006-08-02 | 微软公司 | 在请求-响应传输协议上的可靠的单向消息传递 |
US20070030852A1 (en) * | 2005-08-08 | 2007-02-08 | Mark Szczesniak | Method and apparatus for enabling routing of label switched data packets |
US20070055827A1 (en) * | 2005-09-07 | 2007-03-08 | Benjamin Tsien | Hiding conflict, coherence completion and transaction ID elements of a coherence protocol |
US20070225044A1 (en) * | 2006-03-27 | 2007-09-27 | Ka Law | Multi-channel wireless networks |
US20080304479A1 (en) * | 2007-06-07 | 2008-12-11 | Scott Steven L | One-way message notificatoin with out-of-order packet delivery |
Also Published As
Publication number | Publication date |
---|---|
WO2012040689A2 (en) | 2012-03-29 |
US9288260B2 (en) | 2016-03-15 |
TW201225584A (en) | 2012-06-16 |
EP2619954A2 (en) | 2013-07-31 |
US20120079032A1 (en) | 2012-03-29 |
WO2012040689A3 (en) | 2012-05-31 |
US20140214955A1 (en) | 2014-07-31 |
US8554851B2 (en) | 2013-10-08 |
EP2619954A4 (en) | 2017-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI583153B (zh) | 用於促進訊息單向排序之裝置、系統和方法 | |
US7940666B2 (en) | Communication node architecture in a globally asynchronous network on chip system | |
JP4700773B2 (ja) | スイッチをベースとするマルチプロセッサシステムに使用するための順序サポート機構 | |
US9755997B2 (en) | Efficient peer-to-peer communication support in SoC fabrics | |
US20110173258A1 (en) | Collective Acceleration Unit Tree Flow Control and Retransmit | |
CN104731733B (zh) | 用于跨数据处理系统的接口的频率确定的系统和方法 | |
US20060277369A1 (en) | Method and apparatus for increasing cache network bandwidth | |
CN104731758B (zh) | 用于在多处理器数据处理中通信的系统和方法 | |
JP2010218364A (ja) | 情報処理システム、通信制御装置および方法 | |
US20110238956A1 (en) | Collective Acceleration Unit Tree Structure | |
Abousamra et al. | Proactive circuit allocation in multiplane NoCs | |
US9185026B2 (en) | Tagging and synchronization for fairness in NOC interconnects | |
US20150242318A1 (en) | System and a method for data processing with management of a cache consistency in a network of processors with cache memories | |
CN104731757A (zh) | 用于基于已删除命令确定命令速率的系统和方法 | |
US9678906B2 (en) | Oldest link first arbitration between links grouped as single arbitration elements | |
US20190042428A1 (en) | Techniques for requesting data associated with a cache line in symmetric multiprocessor systems | |
US10664398B2 (en) | Link-level cyclic redundancy check replay for non-blocking coherence flow | |
EP2817722B1 (en) | Integrated circuit converging interconnect node control | |
Agyeman et al. | An efficient 2d router architecture for extending the performance of inhomogeneous 3d noc-based multi-core architectures | |
US20190138630A1 (en) | Techniques for implementing a split transaction coherency protocol in a data processing system | |
JP4687925B2 (ja) | 優先調停システム及び優先調停方法 | |
US10642760B2 (en) | Techniques for command arbitation in symmetric multiprocessor systems | |
US10346089B2 (en) | Data processing system having a write request network and a write data network | |
Rampal et al. | A Network-on-Chip router for deadlock-free multicast mesh routing | |
Danashtalab et al. | Basic concepts on on-chip networks |