TWI661702B - 互連複數個處理引擎的晶片上路由器之矩陣及使用其進行路由的方法 - Google Patents
互連複數個處理引擎的晶片上路由器之矩陣及使用其進行路由的方法 Download PDFInfo
- Publication number
- TWI661702B TWI661702B TW103145445A TW103145445A TWI661702B TW I661702 B TWI661702 B TW I661702B TW 103145445 A TW103145445 A TW 103145445A TW 103145445 A TW103145445 A TW 103145445A TW I661702 B TWI661702 B TW I661702B
- Authority
- TW
- Taiwan
- Prior art keywords
- output port
- chip
- input
- router
- authorization
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 62
- 238000000034 method Methods 0.000 title claims abstract description 43
- 239000011159 matrix material Substances 0.000 title claims abstract description 13
- 239000013598 vector Substances 0.000 claims description 140
- 238000013475 authorization Methods 0.000 claims description 81
- 238000011144 upstream manufacturing Methods 0.000 claims description 6
- 238000004891 communication Methods 0.000 claims description 5
- 230000008878 coupling Effects 0.000 claims 1
- 238000010168 coupling process Methods 0.000 claims 1
- 238000005859 coupling reaction Methods 0.000 claims 1
- 238000005457 optimization Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 241000724291 Tobacco streak virus Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
- H04L49/253—Routing or path finding in a switch fabric using establishment or release of connections between ports
- H04L49/254—Centralised controller, i.e. arbitration or scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/101—Packet switching elements characterised by the switching fabric construction using crossbar or matrix
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/109—Integrated on microchip, e.g. switch-on-chip
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/15—Interconnection of switching modules
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
- H04L49/201—Multicast operation; Broadcast operation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3018—Input queuing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本發明涉及互連複數個處理引擎的晶片上路由器之矩陣及使用其進行路由的方法,具體地,本發明的實施例涉及使用晶片上可配置路由器的單個晶片上的複數個處理引擎的可擴充的互連方案。該互連方案支援通過該處理引擎通訊的資料封包的單播和多播路由。每個晶片上可配置路由器包括路由表,該路由表是通過軟體可程式設計的,並且可被配置為以公平且無鎖死的方式將進入的資料封包正確地遞送至其輸出埠。特別地,晶片上可配置路由器的每個輸出埠均包括輸出埠仲裁器,以在該晶片上可配置路由器的輸出埠處存在爭奪時避免鎖死,並且保證在所轉移的資料封包之間的遞送的公平性。
Description
本發明涉及在單個晶片上的複數個處理引擎之間的資料封包的轉移。更具體地,本發明涉及互連複數個處理引擎的晶片上路由器(on-chip router)的矩陣以及使用其進行路由(routing)的方法。
隨著電晶體尺寸變小,更多的計算部件、記憶體和處理引擎能夠被集成在單個晶片之上。此高度集成允許並行地處理更多系統任務的能力,以達到更高的系統性能。
該技術部件、記憶體和處理引擎要求用於在它們之間轉移資料封包的通訊結構。隨著處理引擎數量的增加,互連技術(比如,匯流排架構和環狀架構)不再可擴充來為這些引擎提供足夠的通訊頻寬。
晶片上網路(on-chip network)是用於單個晶片上的大量處理引擎的互連技術。該網路包括複數個晶片上路由
器,在其中每個晶片上路由器連接至該網路中的最鄰近的晶片上路由器。每個處理引擎均被連接至該晶片上路由器中的一個;並且,晶片上路由器能夠與複數個處理引擎連接。在處理引擎之間通訊的資料通過該晶片上路由器的網路進行傳輸。
然而,現有技術的晶片上路由器存在問題。例如,現有技術的晶片上路由器具有固定的路由演算法。照此,如果處理引擎的位址變化,或者如果更多的處理引擎被加入網路或從網路中移除,現有技術的晶片上路由器會停止運行。此外,現有技術的晶片上路由器僅支援處理引擎之間的單播資料封包和固定的仲裁方案(arbitration scheme)。
用於單個晶片上的複數個處理引擎的互連方案是可擴充的,並且包括用於連接該複數個處理引擎的可配置路由器的晶片上網路。根據在利用該網路的晶片上運行的應用的要求,該網路靈活且可擴充地用於連接更多或更少的處理引擎。該晶片上路由器是可重新配置的,以適應網路拓撲上和處理引擎的位址上的變化。在該處理引擎之間通訊的資料封包被定義為能夠支援單播路由機制和多播路由機制兩者的格式。每個晶片上路由器均支援使用公平且無鎖死的仲裁方案的基於表格的單播資料封包和多播資料封包。該公平且無鎖死的仲裁方案允許晶片上路由器保證以公平且無鎖死的方式向其輸出埠正確傳遞輸入資料封包。對於多播資料封包,每個晶片上路由器提供兩種重新配置模式,用於將該資料封包
轉發至正確的期望輸出埠。一種模式是在接收到授權時就發送副本,即便輸入埠並未收到所有期望輸出埠的資訊,而另一種模式是在同時向所有的期望輸出埠發送副本之前,等待從所有期望輸出埠接收所有授權。在每個晶片上路由器中,路由表是通過軟體可程式設計的。
在一方面,提供了一種晶片。該晶片包括網路。該網路通常包括複數個處理引擎以及晶片上路由器之矩陣。該晶片上路由器中的每個與不同組的處理引擎可通訊地耦接,並且與該晶片上路由器矩陣中的最接近於該晶片路由器的晶片上路由器可通訊地耦接。該複數個處理引擎一起通過該晶片上路由器之矩陣進行通訊。在一些實施例中,該晶片上路由器是通過軟體可程式設計的。
晶片上路由器中的每個均包括輸入埠、輸出埠和位於輸出埠中的每個輸出埠的輸出埠仲裁器。該輸出埠仲裁器使用全域授權向量和局部授權向量,該全域授權向量是由該晶片上路由器的全部輸出埠仲裁器共用的,該局部授權向量該輸出埠仲裁器獨有的,用於授權來自輸入埠中的一個的查詢請求。
在一些實施例中,該網路是可擴充的,以支援附加的處理引擎。例如,該附加的處理引擎能夠與複數個晶片上路由器耦接。對於另一個示例,附加的晶片上路由器能夠被加入至該矩陣,並且該附加的處理引擎與該附加的晶片上路由器耦接。
在一些實施例中,連接兩個晶片上路由器的連結比
連接晶片上路由器和處理引擎的連結寬數倍,使得路由器對路由器連結能夠並行地傳輸複數個資料封包,用於減少網路壅塞。
在一些實施例中,位於網路的邊緣的晶片上路由器能夠連接至該網路之外的部件,用於簡化該網路的線路物理佈局。
在另一方面,提供了一種晶片上路由器。該晶片上路由器包括M個輸入埠、N個輸出埠和交叉開關,該交叉開關用於連接該M個輸入埠和該N個輸出埠。
該M個輸入埠中的每個通常均包括:輸入佇列,用於儲存從上游晶片上路由器或從與該輸入埠連接的處理引擎所接收的輸入資料封包;路由塊,用於識別位於該輸入佇列的頭部的資料封包的至少一個期望輸出埠;以及轉發控制塊,用於將查詢請求發送至該至少一個期望輸出埠中的每個,並從該至少一個期望輸出埠中的每個接收授權,並且將該資料封包轉發至該至少一個期望輸出埠中的每個。
該N個輸出埠中的每個均包括輸出埠仲裁器,用於收集從至少一個輸入埠到該輸出埠的查詢請求,並且用於授權該查詢請求中的一個。
該交叉開關由該輸出埠仲裁器的輸出進行控制。在一些實施例中,該交叉開關包括一組N個M輸入多路器,其中M和N分別是晶片上路由器的輸入埠和輸出埠的數量。每個M輸入多路器是M-1個常用的2輸入多路器的二進位樹(binary tree),並且具有2輸入多路器的延遲的log2(M)倍
的延遲。
在一些實施例中,該資料封包包括控制位元,該控制位元表示該資料封包是否是單播資料封包和多播資料封包中的一個。
在一些實施例中,該晶片上路由器進一步包括可重新配置的單播路由表和多播路由表,用於識別資料封包的一個或複數個期望輸出埠。該M個輸入埠中的每個被配置為具有其自身的單播路由表和多播路由表。備選地,該M個輸入埠被配置為共用路由表。
在一些實施例中,該晶片上路由器執行兩種可配置模式中的一種,用於從輸入埠向輸出埠轉發多播資料封包。
該輸出埠仲裁器被配置為,為來自該M個輸入埠中的一個或複數個的多播資料封包和單播資料封包,對向該輸出埠發送的複數個查詢請求的授權進行仲裁。在一些實施例中,該輸出埠仲裁器使用全域優先順序向量(global_priority_vector)變數、局部優先順序向量(local_priority_vector)變數和優先順序向量(priority_vector)變數,該全域優先順序向量變數由所有的輸出埠仲裁器共用,該局部優先順序向量變數由每個輸出埠仲裁器維護,該優先順序向量變數也由每個輸出埠仲裁器維護。該全域優先順序向量變數用於分配多播資料封包之間的授權。該局部優先順序向量變數用於分配單播資料封包之間的授權。該優先順序向量變數被動態地分配以全域優先順序向量和局部優先順序向量中的一個的值。
在一些實施例中,為每個輸出埠仲裁器的優先順序向量值分配的值取決於轉發模式和該輸出埠仲裁器是否已從任何多播資料封包接收到查詢請求。每個輸出埠仲裁器基於對應的優先順序向量值,僅對一個查詢請求進行授權。
在一些實施例中,基於授權輸出,該共用的全域優先順序向量變數和所有的局部優先順序向量變數在每個迴圈之後被更新,從而所有的資料封包總是有機會獲得授權,並且保證無鎖死。
在另一個方面,提供了一種在晶片上路由器上執行的方法。初始化全域優先順序向量變數,以將優先順序給予複數個輸入埠中的一個,該全域優先順序向量變數由晶片上路由器的所有N個輸出埠仲裁器所共用。該全域優先順序向量變數通常用於在多播資料封包之間分配授權。初始化N個局部優先順序向量變數中的每個到複數個輸入埠中的一個,該局部優先順序向量變數由N個輸出埠仲裁器所維護。該N個局部優先順序向量變數中的每個通常用於在單播資料封包之間分配授權。然後決定轉發模式。在一些實施例中,該轉發模式是通過軟體可重新配置的。
在該N個輸出埠仲裁器的每個處,決定查詢請求是否來自多播資料封包。基於轉發模式是第一模式的決定,或者基於查詢請求並不來自多播資料封包的決定,設置優先順序向量的值為局部優先順序向量的值。基於轉發模式是第二模式的決定,或者基於查詢請求是來自多播資料封包的決定,設置優先順序向量的值為全域優先順序向量的值。根據
對應的輸出埠的可用性,基於該優先順序向量將授權發送至輸入埠。
然後更新該全域優先順序向量變數和該N個局部優先順序向量變數。
在一些實施例中,當轉發模式是第一模式或者沒有輸入埠得到授權時,不更新該全域優先順序向量變數。相反,當轉發模式是第二模式並且至少一個輸入埠得到授權時,該全域優先順序向量變數被更新為具有次高優先順序的輸入埠。
在一些實施例中,當對應的輸出埠仲裁器從多播資料封包接收至少一個查詢請求或者沒有授權被發送時,不更新局部優先順序向量變數。相反,當對應的輸出埠仲裁器沒有從任何多播資料封包接收查詢請求並且授權被發送時,更新局部優先順序向量變數。
在一些實施例中,該第一模式是在接收授權時就發送副本,即便輸入埠並未從所有期望輸出埠收到資訊,並且第二模式在同時向所有的期望輸出埠發送副本之前,等待從所有期望輸出埠接收所有授權。
100‧‧‧網路
105‧‧‧處理引擎(PE)
110‧‧‧路由器
200‧‧‧方法
205-235‧‧‧步驟
300‧‧‧方法
305-320‧‧‧步驟
400‧‧‧晶片上路由器
405‧‧‧輸入佇列
410‧‧‧路由塊
415‧‧‧轉發控制塊
420‧‧‧輸出埠仲裁器
425‧‧‧交叉開關
500‧‧‧資料封包
505‧‧‧資料部分
510‧‧‧資料頭部分
515‧‧‧控制位元
515a‧‧‧控制位元
515b‧‧‧控制位元
600‧‧‧路由表
650‧‧‧路由表
700‧‧‧方法
705-745‧‧‧步驟
800‧‧‧方法
805-835‧‧‧步驟
第一圖示出了根據本發明的實施例的一種可配置的晶片上路由器的可擴充的網路的方框圖,該可擴充的網路用於在單個晶片中連接複數個處理引擎(PE);第二圖示出了根據本發明的實施例的處理位於晶片上路由器的每個輸入埠的資料封包的方法;
第三圖示出了根據本發明的實施例的處理位於晶片上路由器的每個輸出埠的資料封包的方法;第四圖示出了根據本發明的實施例的晶片上路由器的方框圖;第五圖示出了根據本發明的實施例的資料封包格式;第六A圖至第六B圖示出了根據本發明的實施例的示例性可配置的單播(第六A圖)和多播(第六B圖)路由表;第七圖示出了根據本發明的實施例的位於晶片上路由器的每個輸入埠的資料封包轉發控制的方法;第八圖示出了根據本發明的實施例的在晶片上路由器的每個輸出埠處的仲裁方法;第九圖示出了根據本發明的實施例的示例性使用案例;第十圖示出了根據本發明的實施例的在晶片上路由器中的交叉開關的示意圖。
從下面的本發明的示例實施例的更具體的描述來看,前述內容將是顯而易見的,本發明的示例實施例在附圖中被示出,在附圖中類似的附圖標記貫穿不同附圖指的是相同的部分。附圖不一定是按比例的,重點反而是放在用於示出本發明的實施例。
在下面的具體實施方式中,許多詳細內容以說明為
目的被提出。然而,本領域的普通技術人員應認識到,不使用這些特定的細節也能夠實施本發明。因此,本發明並不旨在受限於所示實施例,而是被賦予符合本文所描述的原理和特徵的最寬範圍。
用於單個晶片上的複數個處理引擎的可擴充互連方案是可擴充的,並且包括用於連接該複數個處理引擎的可配置路由器的晶片上網路。根據在利用該網路的晶片上運行的應用的要求,該網路靈活且可擴充地用於連接更多或更少的處理引擎。該晶片上路由器是可重新配置的,以適應網路拓撲上和處理引擎的位址上的變化。在該處理引擎之間通訊的資料封包被定義為能夠支援單播和多播路由機制兩者的格式。每個晶片上路由器均支援使用公平且無鎖死的仲裁方案的基於表格的單播資料封包和多播資料封包。該公平且無鎖死的仲裁方案允許晶片上路由器保證以公平且無鎖死的方式向其輸出埠正確傳遞輸入資料封包。對於多播資料封包,每個晶片上路由器提供兩種重新配置模式,用於將該資料封包轉發至正確的期望輸出埠。一種模式是在接收到授權時就發送副本,即便輸入埠並未收到所有期望輸出埠的資訊,而另一種模式是在同時向所有的期望輸出埠發送副本之前,等待從所有期望輸出埠接收所有授權。在每個晶片上路由器中,路由表是通過軟體可程式設計的。
第一圖示出了根據本發明的實施例的一種可配置的晶片上路由器110的可擴充的網路100的方框圖,該可擴充的網路100用於在單個晶片中連接複數個處理引擎(PE)
105。在第一圖中,每個晶片上路由器110與4個PE 105連接;然而,根據應用需求(比如,晶片上路由器的面積預算),晶片上路由器能夠與更多或更少的PE連接。每個晶片上路由器110還可與其他的晶片上路由器連接,以形成網路100。雖然第一圖示出了每個晶片上路由器110連接至4個最鄰近的晶片上路由器110以形成2-D網狀網路,但與晶片上路由器110連接的最鄰近的晶片上路由器的數量可以不同,用於支援不同的網路拓撲。例如,2-D網狀網路能夠以基於IC技術的3-D矽通孔、在頂側和/或在底層上、通過使中間層上的每個晶片上路由器與最接近的路由器連接而升級至3-D網狀網路。
由於處理引擎的數量能夠變化,該網路靈活並且容易擴充。為了支援晶片上的更大數量的處理引擎,每個晶片上路由器能夠與更多處理引擎連接和/或附加的晶片上路由器能夠被加入至網路中。
為減少位於路由器對路由器連結處的網路中的資料壅塞,路由器對路由器連結能夠寬於路由器對PE連結。如第一圖中所示,路由器對路由器連結是路由器對PE連結的4倍寬,從而每個路由器對路由器連結能夠並行地運送4個資料封包。備選地,代替使用更寬的連結,每個路由器對路由器連結均可以是複數個平行線路,其中每個線路均是獨立的。該備選方案類似於街道上允許多輛汽車同時駕駛的多條線。
在網路100之內的處理引擎105能夠穿過如第一圖所示的網路100的邊緣處的晶片上路由器110的輸入埠和輸出埠與在網路100之外的其他引擎/塊通訊。此配置使在晶片
中用於網路的線路物理佈局變得簡單。
每個晶片上路由器110從輸入埠接收輸入資料封包,並將這些資料封包轉發至正確的輸出埠。不在晶片上路由器110處使用確定性路由演算法,而是在網路100中的每個晶片上路由器110裝備有可配置的路由表,該路由表能夠通過軟體重新程式設計,用於適配於網路拓撲或位址變更、用於避免鎖死、和/或用於減少輸出埠處的爭奪。
第二圖示出了根據本發明的實施例的一種處理位於晶片上路由器的每個輸入埠的資料封包的方法200。該方法200開始於步驟205。輸入埠等待直至其接收輸入資料封包。該輸入資料封包能夠來自與該輸入埠連接的局部PE或上游晶片上路由器。在步驟205中,該輸入資料封包被儲存在輸入埠的輸入佇列中。在一些實施例中,該輸入佇列是FIFO佇列。如果該輸入佇列滿了,該資料封包的來源(即,PE或者上游的晶片上路由器)被通知停止發送新的資料封包。
如果在步驟210中該輸入佇列不為空,則在該輸入佇列的頭部的資料封包被處理用於轉發。在步驟215中,該資料封包被檢查其是否是多播資料封包或單播資料封包。根據該資料封包的類型(即,多播或單播),該輸入埠將查找對應的多播表或單播表,以找出該資料封包必須送出去的輸出埠。在步驟220a中,如果該資料封包是多播資料封包,則使用多播路由表執行多播路由查找。備選地,在步驟220b中,如果該資料封包是單播資料封包,則使用單播路由表執行單播路由查找。多播路由和單播路由將在下文中詳細說明。
在輸入埠得知該資料封包的期望輸出埠清單後,在步驟225中,查詢請求被發送至在該列表中的每個期望輸出埠,以檢查該輸出埠是否能夠接收其資料封包。
在步驟235中,在向輸出埠轉發資料封包的副本的處理之前,輸入埠等待以從輸入埠接收授權。在步驟230中,授權從輸出埠接收。在步驟235中,資料封包的副本被發送或轉發至輸出埠。如在他處所討論的,在一些實施例中,存在兩種模式用於轉發多播資料封包。在步驟235之後,方法200返回至步驟205。
第三圖示出了根據本發明的實施例的處理位於晶片上路由器的每個輸出埠的資料封包的方法300。該方法300開始於步驟305。輸出埠等待以從輸入埠接收查詢請求。
由於每個輸出埠能夠從想要向該輸出埠發送資料封包的不同輸入埠接收複數個查詢請求,每個輸出埠被裝備有輸出埠仲裁器以處理對這些查詢請求的授權。在步驟310中,如果複數個查詢請求在該(同一)輸出埠被接收,則執行仲裁。該仲裁是較公平的(例如,用於每個查詢請求的優先順序在每個迴圈中被更新,從而當請求在當前迴圈中獲得授權時,在下個迴圈中其將具有最低優先順序)和無鎖死的(例如,在獲得授權的請求輸入埠之間總是存在輸入埠在每個迴圈中被轉發)。
在步驟315中,授權被給予或發送至已向該輸出埠發送查詢請求的一個輸入埠。
在步驟320中,交叉開關被設置以使對應的輸入埠
或授權的輸入埠能夠向正確的輸出埠發送資料封包。在步驟320之後,該方法300返回至步驟305。
第四圖示出了根據本發明的實施例的晶片上路由器400的方框圖。在第一圖中所討論的晶片上路由器被類似地配置為晶片上路由器400。晶片上路由器400具有M個輸入埠和N個輸出埠,其中M和N取決於網路拓撲。每個輸入埠具有輸入佇列405,以向輸入埠儲存輸入資料封包。在路由塊410處,輸入埠檢查在該輸入佇列的頭部的資料封包是否是基於資料封包中的「目的引擎ID(Destination Engine ID)」欄位的多播或單播,然後從該晶片上路由器中的可重新配置的路由表查找該資料封包的期望輸出埠。
轉發控制塊415向期望輸出埠發送查詢請求並且從期望輸出埠接收授權,然後執行該資料封包的複製(在多播的情況下)並轉發至授權輸出埠。存在有N個輸出埠仲裁器420,該N個輸出埠中的每一個輸出埠各一個。每個輸出埠仲裁器420為發送至其對應的輸出埠的所有的查詢請求處理仲裁。來自這些輸出埠仲裁器的授權信號被用於設置交叉開關425,用於從輸入埠向其正確的輸出埠轉發資料封包。該交叉開關425具有M個輸入埠和N個輸出埠,與晶片上路由器的輸入埠和輸出埠的數量一致。轉發控制塊415、輸出埠仲裁器420和交叉開關425中的每個將在下文中詳細討論。
第五圖示出了根據本發明的實施例的資料封包500的格式。資料封包500包括資料部分505,該資料部分505在發送引擎和接收引擎之間傳輸。資料封包500還包括資料
頭部分510,該資料頭部分510包括控制位元515a、515b(統稱515),用於在網路中路由資料封包500。在資料頭部分510中,通過晶片上路由器檢查「目的引擎ID」欄位。假定該「目的引擎ID」欄位具有n位元。在一些實施例中,位於最高有效位元(即,在n位元中位於位置n-1的位元)的「0」表示該資料封包是單播的,並且位於最高有效位元的「1」表明該資料封包是多播的。
對於單播資料封包,在「目的引擎ID」欄位中n-1個最低有效位元的值表示用於該資料封包的目的引擎的位址。該n-1個最低有效位元的值被稱為「單播目的引擎位址(Unicast Destination Engine Address)」,並且在第五圖中被示為「UC Dst.Addr.」。使用該「單播目的引擎位址」,輸入埠將查找其單播路由表,以找出哪個輸出埠是該資料封包所期望的。
對於多播資料封包,在「目的引擎ID」欄位中n-1個最低有效位元的值表示用於該資料封包的多播組的身份。該n-1個最低有效位元的值被稱為「多播組ID(Multicast Group ID)」,並且在第五圖中被示為「MC Group ID」。使用該「多播組ID」,輸入埠將查找其多播路由表,以找出哪些輸出埠是該資料封包所期望的。
第六A圖示出了根據本發明的實施例的在晶片上路由器中的示例性可配置的單播路由表600。在第六A圖所示的示例中,該「UC Dst.Addr.」是5位元寬,具有從0至31範圍內的值。該路由表600為每個單播目的地址列出期望輸
出埠ID。假定晶片上路由器具有8個輸出埠。如第六A圖所示,具有單播目的地址0的資料封包將轉到輸出埠3,具有單播目的地址1的資料封包將轉到輸出埠0,依此類推。
第六B圖示出了根據本發明的實施例的在晶片上路由器中的示例性可配置的多播路由表650。在第六B圖所示的示例中,該「MC Group ID」是5位元寬,具有從0至31範圍內的值。該路由表650為每個多播組ID列出期望輸出埠ID。輸出埠遮罩是8位元向量,其中每個位元表示輸出埠。資料封包被複製,並被發送至對應於在輸出埠遮罩中為多播組ID所設置的位元的所有輸出埠。假定晶片上路由器具有8個輸出埠。如第六B圖所示,具有多播組ID 0的資料封包將被複製並被發送至輸出埠3和5(因為輸出埠遮罩是00101000),具有多播組ID 1的資料封包將被複製並被發送至輸出埠0、1、2和3(因為輸出埠遮罩是00001111),依此類推。
在多播路由中,複數個位元通常被設置在輸出埠遮罩中用於每個多播組ID。然而,有可能僅一個位元能夠被設置在輸出埠遮罩中。在此情況下,這種多播資料封包類似於單播資料封包被處理。換句話說,此單播路由是多播路由的特定情況。
所有的路由表600、650通過軟體是可重新配置的。每個輸入埠均能夠具有其自身的單播路由表和多播路由表。備選地,所有的輸入埠能夠共用單個單播表和/或單個多播表。然而,應當可以理解的是,雖然單獨的路由表提供較高
的靈活性,但單獨的路由表具有較高的矽面積。同樣應當可以理解的是,雖然共用的路由表提供較低的矽面積,但共用的路由表限制靈活性。
第七圖示出了根據本發明的實施例的位於晶片上路由器的每個輸入埠的資料封包轉發控制的方法700。在一些實施例中,該方法700通過第四圖中的轉發控制415來執行。方法700開始於步驟705。在步驟705中,從路由塊接收用於新的資料封包的期望輸出埠。
在輸入埠得知該新資料封包的期望輸出埠之後,在步驟710中,查詢請求被發送至該期望輸出埠。
在步驟715中,從該輸出埠的輸出埠仲裁器接收授權。在向輸出埠轉發資料封包之前,輸入埠通常等待接收授權。對於單播資料封包,僅存在一個期望輸出埠。照此,在接收授權之後,該資料封包將被發送至該輸出埠。對於多播資料封包,通常存在複數個期望輸出埠。照此,輸入埠將發送複數個查詢請求,向該期望輸出埠中的每個發送一個查詢請求。對於從輸出埠接收的每個授權,該資料封包被複製並被發送至該輸出埠。在一些實施例中,提供了兩種轉發模式。通過設置名為cfg_轉發模式(cfg_forward_mode)的寄存器,該模式選擇是通過軟體可配置的:如果cfg_轉發模式被設置為0,則在接收輸出埠的授權之後發送資料封包的副本,即便輸出埠並未收到其他期望輸出埠的資訊。輸出埠在下一迴圈中再向剩餘的期望輸出埠發送查詢請求。重複該進程,直至該多播資料封包的副本被轉發至所
有期望輸出埠。如果cfg_轉發模式被設置為1,則在同時向所有的期望輸出埠發送該多播資料封包的副本之前,輸入埠等待接收來自所有期望輸出埠的所有授權。
在通過率(throughout)而不是資料封包被接收的順序非常重要的應用中,該cfg_轉發模式寄存器能夠被設置為0。應當注意的是,在這種情況下不能夠保證資料封包遞送的順序,因為輸入埠處一接收到授權,資料封包就被發出。
然而,在一些應用中,在PE處所接收的資料封包的序列對於保證PE接收正確的資料封包用於處理是重要的。如果輸入埠處一接收到授權資料封包就被發出,則PE有可能接收次序顛倒的資料封包。照此,當發送資料封包的順序重要時,該cfg_轉發模式寄存器能夠被設置為1。在此情況下,為確保遞送順序,在同時發送多播資料封包的副本之前,輸入埠等待接收來自所有輸出埠的所有授權。當兩個或複數個競爭行動等待其轉為行進時(例如,兩個輸入埠每個均等待接收所有授權),會導致鎖死。然而,如在下文中所詳細討論的,由每個晶片上路由器所執行的仲裁方案能夠有利地避免鎖死。簡單地說,晶片上路由器的輸出埠一起工作,以同時向單個輸入埠發送授權,從而為了行進,輸入埠在迴圈中得到所有授權。
參考第七圖,在步驟720中,決定cfg_轉發模式是否被設置為0。如果在步驟720中決定cfg_轉發模式被設置為1,則在步驟725中,決定所有授權是否從所有期望輸出埠接
收。如果所有授權還未從所有期望輸出埠接收,進程700返回至步驟710。否則,在步驟730中,資料封包的副本被發送至所有期望輸出埠。在步驟730之後,進程700返回至步驟705。
如果在步驟720中決定cfg_轉發模式被設置為0,則在步驟735中,一旦從輸出埠接收授權,資料封包的副本就被發送至授權的輸出埠。
在步驟740中,更新期望輸出埠列表。如果在步驟745中決定期望輸出埠清單為空,則進程700返回至步驟705。否則,該進程返回至步驟710,其中查詢請求被發出至(剩餘的)期望輸出埠。
如上所述,單播路由實際上是多播路由的特定情況,在該特定情況中每個資料封包僅存在一個期望輸出埠。因此,第七圖中所描述的資料封包轉發方法支援單播資料封包和多播資料封包兩者。
第八圖示出了根據本發明的實施例的在晶片上路由器的每個輸出埠處的仲裁方法800。該方法800在輸出埠的仲裁塊中執行,用於處理來自複數個輸入埠的查詢請求。每個輸出埠維護其自身的名為局部優先順序向量的變數和其自身的名為優先順序向量的變數。所有的輸出埠共用名為全域優先順序向量的相同變數。這些向量的位元寬度等於輸入埠的數量。這些優先順序向量中的每個均具有一位元且僅有一位元被設置為1。在每個向量中位元「1」的位置表示對應的輸入埠獲得得到授權的最高優先順序。在每個輸出埠仲裁器
中,局部優先順序向量變數被用於給想要去往該輸出埠的單播資料封包授權。為了避免鎖死,全域優先順序向量變數由所有輸出埠仲裁器使用,用於給多播資料封包授權。優先順序向量變數由輸出埠仲裁器使用,以給發送至該輸出埠的查詢請求中的一個授權。
在步驟805中,每個輸出埠仲裁器的局部優先順序向量變數和共用的全域優先順序向量變數被初始化,以將最高優先順序給予中意的輸入埠。在一些實施例中,步驟805在開始時(比如,在重置時)被執行。這些向量的初始化值通過軟體是可重新配置的。照此,根據開始時輸出埠希望給予最高優先順序的輸入埠,所有輸出埠可能具有不同的初始化的局部優先順序向量。
在步驟810中,決定是否存在任何查詢請求來自多播資料封包和cfg_轉發模式寄存器是否是1。如果在步驟810中決定存在來自多播資料封包的查詢請求並且cfg_轉發模式寄存器是1,那麼在步驟820中,其優先順序向量變數被設置為全域優先順序向量變數的值。以此設置,如果多播資料封包得到輸出埠仲裁器的授權,確保能從所有其期望輸出埠仲裁器得到授權。因為全域優先順序向量由所有輸出埠仲裁器所共用。此設計保證在不同多播資料封包之間無鎖死。
如果在步驟810中決定cfg_轉發模式寄存器是0或者輸出埠仲裁器未接收來自任何多播資料封包的查詢請求,那麼在步驟815中,其優先順序向量變數被設置為其局部優先順序向量變數的值。
在步驟825中,決定輸出埠是否可用。如果輸出埠不可用,那麼該方法800返回至步驟810。否則,在為優先順序向量變數賦值之後,在步驟830中,一旦其對應的輸出埠可用,輸出埠仲裁器向所接收的查詢請求中的一個發送授權。通常地,如果下游的晶片上路由器或連接至此埠的引擎已準備好接受新的資料封包,則輸出埠可用。
在一些實施例中,授權演算法是基於如下的優先順序向量的值:假定輸入埠數量是M,優先順序向量具有M位元,一個位元表示輸出埠的優先順序。該優先順序向量具有一個且僅有一個位元被設置為1。假定位元「1」位於從右至左數的位元位i。優先順序順序以遞減順序從輸入埠i、i+1、i+2、…、M-1、0、…、i-1被給予查詢請求。如果輸出埠仲裁器僅接收一個查詢請求,那麼該查詢請求得到授權。如果輸出埠仲裁器接收複數個查詢請求,那麼授權被給予所有查詢請求之中具有最高優先順序的查詢請求。換句話說,如果輸出埠仲裁器從輸入埠i接收查詢請求,那麼該查詢請求獲得授權。如果該輸出埠仲裁器從不同於輸入埠i的輸入埠接收一個或複數個查詢請求,那麼授權被給予具有最高優先順序的輸入埠。
在授權進程完成之後,在步驟835中,更新共用的全域優先順序向量變數和所有輸出埠仲裁器的局部優先順序向量變數。
全域優先順序向量變數被如下更新:如果cfg_轉發模式是0,或者沒有輸入埠得到授權,那麼全域優先順序向量
不改變。否則,假定當前全域優先順序向量變數具有位於位置i的位元「1」,那麼輸入埠以i、i+1、…、M、0、…、i-1的順序被檢查,以在這些輸入埠中查看哪個是第一個從所有其期望輸出埠為所有其查詢請求獲得授權的。假定與此檢查匹配的第一個輸入埠是輸入埠j,那麼在全域優先順序向量變數中的位元j+1被設置為1,並且所有其他位元被設置為0。這意味著現在輸入埠j+1具有最高優先順序,並且對於發向所有輸出埠仲裁器的下一個多播查詢請求,輸入埠j具有最低優先順序。
每個輸出埠仲裁器的局部優先順序向量變數被如下更新:如果輸出埠仲裁器未從多播資料封包接收任何查詢請求,或者沒有授權被發送(因為不存在查詢請求或者輸出埠不可用),那麼局部優先順序向量不改變。否則,假定向輸入埠k給予授權,那麼局部優先順序向量變數中的位元k+1被設置為1,並且所有其他位元被設置為0。這意味著現在輸入埠k+1具有最高優先順序,並且對於發向該輸出埠仲裁器的下一個查詢請求,輸入埠k具有最低優先順序。
在步驟825之後,方法800返回至步驟810。
上文所描述的仲裁和優先順序更新進程保證公平,因為每個輸入埠總是有機會獲得授權。如果輸入埠這次獲得授權,其將在下次獲取授權時具有最低優先順序。此外,所提出的仲裁還保證在兩種轉發模式中在多播資料封包之間無鎖死。
第九圖示出了示出了根據本發明的實施例的示例性
使用案例。該使用案例示出了通過晶片上路由器的資料封包路由中的前兩個迴圈。假定晶片上路由器具有5個輸入埠和3個輸出埠,並且cfg_轉發模式寄存器被設置為1,這意味著在同時向所有期望輸出埠發送多播資料封包的副本之前,每個輸入埠必須等待接收來自所有期望輸出埠的所有授權。還假定在該晶片上路由器的迴圈1中,輸入埠0期望向輸出埠0和輸出埠1發送多播資訊,並且輸入埠1-4中的每個分別期望向輸出埠1、0、2和2發送單播資訊。每個輸出埠具有其自己的優先順序向量變數和其自己的優先順序變數。輸出埠共用相同的全域優先順序向量變數。每個輸出埠仲裁器的局部優先順序向量變數和共用的全域優先順序向量變數首先被初始化,以向中意的輸入埠給予最高優先順序。如第九圖所示,該共用的全域優先順序向量被初始化為00001(輸入埠0),由位於輸出埠0的輸出埠仲裁器使用的局部優先順序向量變數被初始化為00001(輸入埠0),由位於輸出埠1的輸出埠仲裁器使用的局部優先順序向量變數被初始化為00010(輸入埠1),並且由位於輸出埠2的輸出埠仲裁器使用的局部優先順序向量變數被初始化為00100(輸入埠2)。
因為輸出埠0已接收到用於多播資訊的至少一個查詢請求,用於輸出埠0的優先順序向量被設置為全域優先順序向量的值(例如,00001,其是輸入埠0)。類似地,因為輸出埠1已接收到用於多播資訊的至少一個查詢請求,用於輸出埠1的優先順序向量被設置為全域優先順序向量的值(例如,00001,其是輸入埠0)。因為輸出埠2僅接收到用於單
播資訊的查詢請求,用於輸出埠2的優先順序向量被設置為其局部優先順序向量的值(例如,00100,其是輸入埠2)。
基於迴圈1中的優先順序向量值,由於輸出埠0已從當前被給予最高優先順序的輸入埠0接收到查詢請求,其將向輸入埠0提供授權,由於輸出埠1已從當前被給予最高優先順序的輸入埠0接收到查詢請求,其將向輸入埠0提供授權,並且因為輸出埠2已從在輸入埠2之後被給予次高優先順序的輸入埠3接收到查詢請求,其將向輸入埠3提供授權。因此,輸入埠0和3向期望輸出埠發出資料封包。
在下一個迴圈(迴圈2)中,由於先前在迴圈1中的查詢請求未被授權,輸入埠1、2和4再次嘗試其查詢請求,再次分別向輸出埠1、0和2發送查詢請求。在迴圈2中,輸入埠0現在期望向輸出埠0和輸出埠2發送多播資料封包,並且輸入埠3期望向輸出埠1發送單播資料封包。共用的全域優先順序向量變數被更新為下一個優先順序埠,其是00010。用於輸出埠0的局部優先順序向量變數的值保持不變(即,00001,其是輸入埠0),因為輸出埠0在先前的迴圈中已從多播資訊接收查詢請求。類似地,用於輸出埠1的局部優先順序向量變數的值保持不變(即,00010,其是輸入埠1),因為輸出埠1在先前的迴圈中已從多播資訊接收查詢請求。然而,用於輸出埠2的局部優先順序向量的值被從00100更新為10000(輸入埠4),因為在先前迴圈中輸出埠2已從單播資訊接收查詢請求,並且授權被發送至輸入埠3。
基於迴圈2中的優先順序向量值,由於輸出埠0已
從在輸入埠1之後的被給予次高優先順序的輸入埠2接收到查詢請求,其將向輸入埠2提供授權,由於輸出埠1已從當前被給予最高優先順序的輸入埠1接收到查詢請求,其將向輸入埠1提供授權,並且由於輸出埠2已從當前被給予最高優先順序的輸入埠4接收到查詢請求,其將向輸入埠4提供授權。因此,輸入埠1、2和4向期望輸出埠發出資料封包。
在下一個迴圈(迴圈3)中,輸入埠0和3再次嘗試其查詢請求,再次分別向輸出埠0和1發送查詢請求。在每個隨後的迴圈中將從輸出埠接收授權的輸入埠相應地被決定。
在輸出埠仲裁器向輸出埠發送其授權之後,其還設置交叉開關,用於將被授權輸入埠連接至其正確的輸出埠。該交叉開關邏輯在第十圖中被示出。交叉開關實際上是N個多路器的組,其中N是晶片上路由器輸出埠的數量。每個多路器具有M個輸入端其中M是晶片上路由器的輸入埠的數量。每個多路器由對應的輸出埠仲裁器所發送的授權控制。例如,如果輸出埠仲裁器n向輸入埠m發送授權,該多路器n被設置,直至資料封包從輸入埠m被發送至輸出埠n。
每個多輸入多路器由常見的2輸入多路器的二進位樹建立。因此,對於M輸入多路器,2輸入端多路器的數量是M-1。M輸入多路器的延遲是2輸入端多路器的延遲的log2(M)倍。
本發明的實施例涉及單個晶片上的複數個處理引擎的可擴充的互連方案,該互連方案使用晶片上的可配置路由
器。該互連方案支援通過該處理引擎通訊的資料封包的單播路由和多播路由。在每個晶片上可配置路由器包括路由表,該路由表是通過軟體可程式設計的,並且被配置為以公平且無鎖死的方式將進入的資料封包正確地遞送至其輸出埠。特別地,晶片上可配置路由器的每個輸出埠包括輸出埠仲裁器,以當在該晶片上可配置路由器的輸出埠處存在爭奪時避免鎖死,並且保證在所轉移的資料封包之間的遞送的公平性。
本領域的普通技術人員將認識到也存在的其他使用和優點。雖然本發明已參考許多特定細節進行描述,本領域的普通技術人員將認識到,不脫離本發明的精神,本發明能夠以其他特定形式被體現。因此,本領域的普通技術人員將會理解,本發明不受前述的示例性細節所限制,但反而由所附申請專利範圍定義。
Claims (28)
- 一種包括網路的晶片,其中所述網路包括:複數個處理引擎;以及一晶片上路由器之矩陣,其中每個所述晶片上路由器均與所述處理引擎的一群組通訊耦接,並且與所述晶片上路由器之矩陣中最接近於該晶片上路由器的晶片上路由器通訊耦接,且其中每個所述晶片上路由器均包括複數個輸入埠、複數個輸出埠和複數個輸出埠仲裁器,在每個所述輸出埠處有該等輸出埠仲裁器的一者,其中該等輸出埠仲裁器的每一者使用一單一全域授權向量和一局部授權向量,所述全域授權向量由所述晶片上路由器的所有輸出埠仲裁器所共用,所述局部授權向量是該等輸出埠仲裁器的一者所獨有以授權來自其中一個所述輸入埠之一查詢請求,使得由該等輸出埠仲裁器之一者執行的該查詢請求的授權是基於該等輸出埠仲裁器所共用的全域授權向量及與該等輸出埠仲裁器之一者有關的局部授權向量。
- 如申請專利範圍第1項所述的晶片,其中所述複數個處理引擎一起通過所述晶片上路由器之矩陣進行通訊。
- 如申請專利範圍第1項所述的晶片,其中所述網路係可擴充以支援附加的處理引擎。
- 如申請專利範圍第3項所述的晶片,其中所述附加的處理引擎與所述複數個晶片上路由器耦接。
- 如申請專利範圍第3項所述的晶片,其中對該矩陣加入附加的晶片上路由器,且所述附加的處理引擎與所述附加的晶片上路由器耦接。
- 如申請專利範圍第1項所述的晶片,其中連接兩個晶片上路由器之一連結比連接一晶片上路由器和一處理引擎之一連結寬數倍,使得一路由器對路由器之連結能夠並行傳輸複數個資料封包,用於減少網路壅塞。
- 如申請專利範圍第1項所述的晶片,其中位於所述網路的一邊緣處之晶片上路由器能夠連接至所述網路外部的部件,以簡化所述網路的一線路物理佈局。
- 如申請專利範圍第1項所述的晶片,其中所述晶片上路由器可由軟體予以配置。
- 一種晶片上路由器,包括:M個輸入埠,其中各所述M個輸入埠包括:一輸入佇列,用於儲存輸入的資料封包,所述輸入資料封包是從連接於該輸入埠之一上游晶片上路由器或一處理引擎所接收;一路由塊,用於識別在所述輸入佇列的頭部處的一資料封包的至少一個期望輸出埠;以及一轉發控制塊,用於將一查詢請求發送至各所述至少一個期望輸出埠,並從各所述至少一個期望輸出埠接收授權,以及將該資料封包轉發至各所述至少一個期望輸出埠;N個輸出埠,其中各所述N個輸出埠均包括一輸出埠仲裁器,該等輸出埠仲裁器的每一者配置成:用於收集從該等輸入埠的至少一個到與該等輸出埠仲裁器的該者相關的該輸出埠的多個查詢請求,並且基於由該等輸出埠仲裁器共用的一單一全域授權向量,用於授權其中一個所述查詢請求;以及一交叉開關,用於連接所述M個輸入埠和所述N個輸出埠,其中所述交叉開關由所述輸出埠仲裁器的輸出進行控制。
- 如申請專利範圍第9項所述的晶片上路由器,其中所述交叉開關包括一組N個M輸入多路器,其中M和N分別是所述晶片上路由器的輸入埠和輸出埠的數量。
- 如申請專利範圍第10項所述的晶片上路由器,其中每個M輸入多路器是M-1個通用2輸入多路器之一二進位樹,並且具有一延遲,其為2輸入多路器的延遲的log2(M)倍。
- 如申請專利範圍第9項所述的晶片上路由器,其中所述資料封包包括控制位元,所述控制位元表示所述資料封包是否是單播資料封包和多播資料封包中其一。
- 如申請專利範圍第9項所述的晶片上路由器,進一步包括:可重新配置的單播路由表和多播路由表,用於識別一資料封包的一或多個期望輸出埠。
- 如申請專利範圍第13項所述的晶片上路由器,其中各所述M個輸入埠係配置為具有其自身的單播路由表和多播路由表。
- 如申請專利範圍第13項所述的晶片上路由器,其中所述M個輸入埠係配置以共用所述路由表。
- 如申請專利範圍第9項所述的晶片上路由器,其中所述晶片上路由器執行兩種可配置模式中的一種模式,用於從輸入埠轉發多播資料封包至輸出埠。
- 如申請專利範圍第9項所述的晶片上路由器,其中所述輸出埠仲裁器係配置為以對來自所述M個輸入埠中的一或多個輸入埠的多播資料封包和單播資料封包之到達該輸出埠的複數個查詢請求的授權進行仲裁。
- 一種晶片上路由器,包括:M個輸入埠,其中各所述M個輸入埠的每一者包括:一輸入佇列,用於儲存輸入的資料封包,其是從連接於該輸入埠之一上游晶片上路由器或一處理引擎所接收;一路由塊,用於識別在所述輸入佇列的頭部處的一資料封包的至少一期望輸出埠;以及一轉發控制塊,用於將一查詢請求發送至各所述至少一個期望輸出埠,並從各所述至少一個期望輸出埠接收一授權,以及將該資料封包轉發至各所述至少一個期望輸出埠;N個輸出埠,其中各所述N個輸出埠均包括一輸出埠仲裁器,用於收集從至少一個輸入埠到該輸出埠的多個查詢請求並且用於授權其中一個所述查詢請求;以及一交叉開關,用於連接所述M個輸入埠和所述N個輸出埠,其中所述交叉開關由所述輸出埠仲裁器的輸出進行控制,其中所述輸出埠仲裁器係使用:一全域優先順序向量變數,由所有的輸出埠仲裁器共用,所述全域優先順序向量變數用於分配多播資料封包之間的授權;一局部優先順序向量變數,由每個輸出埠仲裁器維護,所述局部優先順序向量變數用於分配單播資料封包之間的授權;以及一優先順序向量變數,也由每個輸出埠仲裁器維護,所述優先順序向量變數被動態地分配以所述全域優先順序向量和所述局部優先順序向量中的一個向量的值。
- 如申請專利範圍第18項所述的晶片上路由器,其中為每個輸出埠仲裁器的優先順序向量值分配的值取決於轉發模式和該輸出埠仲裁器是否已從任何多播資料封包接收到查詢請求。
- 如申請專利範圍第18項所述的晶片上路由器,其中每個輸出埠仲裁器基於對應的優先順序向量值,僅對該等查詢請求的一者進行授權。
- 一種晶片上路由器,包括:M個輸入埠,其中各所述M個輸入埠的每一者包括:一輸入佇列,用於儲存輸入的資料封包,其是從連接於該輸入埠之一上游晶片上路由器或一處理引擎所接收;一路由塊,用於識別在所述輸入佇列的頭部處的一資料封包的至少一期望輸出埠;以及一轉發控制塊,用於將一查詢請求發送至各所述至少一個期望輸出埠,並從各所述至少一個期望輸出埠接收一授權,以及將該資料封包轉發至各所述至少一個期望輸出埠;N個輸出埠,其中各所述N個輸出埠均包括一輸出埠仲裁器,用於收集從至少一個輸入埠到該輸出埠的多個查詢請求並且用於授權其中一個所述查詢請求;以及一交叉開關,用於連接所述M個輸入埠和所述N個輸出埠,其中所述交叉開關由所述輸出埠仲裁器的輸出進行控制,其中所述輸出埠仲裁器係使用:一全域優先順序向量變數,由所有的輸出埠仲裁器共用,所述全域優先順序向量變數用於分配多播資料封包之間的授權;一局部優先順序向量變數,由每個輸出埠仲裁器維護,所述局部優先順序向量變數用於分配單播資料封包之間的授權;以及一優先順序向量變數,也由每個輸出埠仲裁器維護,所述優先順序向量變數被動態地分配以所述全域優先順序向量和所述局部優先順序向量中的一個向量的值,其中基於授權輸出,所述共用的全域優先順序向量變數和所有的局部優先順序向量變數在每個迴圈之後被更新。
- 一種在晶片上路由器上執行的方法,所述方法包括:初始化一全域優先順序向量變數,以將優先順序給予複數個輸入埠中的一個輸入埠,所述全域優先順序向量變數由所述晶片上路由器的所有N個輸出埠仲裁器所共用,其中所述全域優先順序向量變數用於在多播資料封包之間分配授權;初始化N個局部優先順序向量變數中的每個變數到所述複數個輸入埠中的一個輸入埠,所述局部優先順序向量變數由N個輸出埠仲裁器所維護,其中所述N個局部優先順序向量變數中的每個變數用於在單播資料封包之間分配授權;確定一轉發模式;在所述N個輸出埠仲裁器的每個輸出埠仲裁器處:確定一查詢請求是否來自一多播資料封包;基於所述轉發模式是一第一模式之確定,或者基於所述查詢請求並不來自一多播資料封包之確定,設置一優先順序向量的值為所述局部優先順序向量的值;基於所述轉發模式是一第二模式之確定,或者基於所述查詢請求是來自一多播資料封包之確定,設置一優先順序向量的值為所述全域優先順序向量的值,以及根據一對應輸出埠的可用性,基於所述優先順序向量將授權發送至一輸入埠;以及更新所述全域優先順序向量變數和所述N個局部優先順序向量變數。
- 如申請專利範圍第22項所述的方法,其中當所述轉發模式是所述第一模式或者沒有輸入埠得到授權時,不更新所述全域優先順序向量變數。
- 如申請專利範圍第22項所述的方法,當所述轉發模式是所述第二模式並且至少一個輸入埠得到授權時,所述全域優先順序向量變數被更新為具有一次高優先順序的一輸入埠。
- 如申請專利範圍第22項所述的方法,其中當所述對應的輸出埠仲裁器從一多播資料封包接收至少一個查詢請求或者沒有授權被發送時,不更新一局部優先順序向量變數。
- 如申請專利範圍第22項所述的方法,其中當所述對應的輸出埠仲裁器沒有從任何多播資料封包接收查詢請求並且一授權被發送時,更新一局部優先順序向量變數。
- 如申請專利範圍第22項所述的方法,其中所述第一模式在接收授權時就發送一副本,即使一輸入埠並未從所有期望輸出埠收到資訊,且其中所述第二模式在同時向全部所述期望輸出埠發送副本之前係等待以從所有期望輸出埠接收所有授權。
- 一種晶片,具有一網路,該網路包括:複數個處理引擎;以及晶片上路由器之一矩陣,其中每個所述晶片上路由器均與所述處理引擎的一群組通訊耦接,並且與所述晶片上路由器之矩陣中最接近於晶片上路由器的晶片上路由器通訊耦接,且其中每個所述晶片上路由器均包括複數個輸入埠、複數個輸出埠和位在該等輸出埠的每一者的一輸出埠仲裁器,其中該輸出埠仲裁器使用一全域授權向量和一局部授權向量,所述全域授權向量由所述晶片上路由器的所有輸出埠仲裁器所共用,所述局部授權向量是該輸出埠仲裁器所獨有以授權來自其中一個所述輸入埠之一查詢請求,其中基於授權輸出所述全域授權向量的值和所述局部授權向量的值在每個迴圈之後被更新,使該等輸入埠的每一者於下個迴圈中具有接收一授權的最低優先順序,該等輸入埠的查詢請求於先前的迴圈中被授權。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/142,497 US9548945B2 (en) | 2013-12-27 | 2013-12-27 | Matrix of on-chip routers interconnecting a plurality of processing engines and a method of routing using thereof |
US14/142,497 | 2013-12-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201547241A TW201547241A (zh) | 2015-12-16 |
TWI661702B true TWI661702B (zh) | 2019-06-01 |
Family
ID=53483205
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103145445A TWI661702B (zh) | 2013-12-27 | 2014-12-25 | 互連複數個處理引擎的晶片上路由器之矩陣及使用其進行路由的方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9548945B2 (zh) |
JP (1) | JP6556450B2 (zh) |
KR (4) | KR102319463B1 (zh) |
CN (1) | CN104954254B (zh) |
HK (1) | HK1210882A1 (zh) |
TW (1) | TWI661702B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104378288B (zh) * | 2014-11-19 | 2017-11-21 | 清华大学 | 基于路由交换范式的构件组装方法及系统 |
US9923730B2 (en) * | 2014-12-17 | 2018-03-20 | Intel Corporation | System for multicast and reduction communications on a network-on-chip |
US10050843B2 (en) * | 2015-02-18 | 2018-08-14 | Netspeed Systems | Generation of network-on-chip layout based on user specified topological constraints |
US9864728B2 (en) * | 2015-05-29 | 2018-01-09 | Netspeed Systems, Inc. | Automatic generation of physically aware aggregation/distribution networks |
US10594505B2 (en) * | 2016-01-27 | 2020-03-17 | Quanta Computer Inc. | System and method for avoiding deadlock in transmission of broadcast traffic in a server system |
US9853916B2 (en) * | 2016-04-01 | 2017-12-26 | Intel Corporation | Modular fabric internal datapath |
US10142258B2 (en) * | 2016-04-08 | 2018-11-27 | Advanced Micro Devices, Inc. | Methods and apparatus for processing in a network on chip (NOC) |
US10372640B2 (en) | 2016-11-21 | 2019-08-06 | International Business Machines Corporation | Arbitration of data transfer requests |
US10587504B2 (en) * | 2017-02-08 | 2020-03-10 | International Business Machines Corporation | Packet broadcasting mechanism for mesh interconnected multi-computers |
US10476814B2 (en) * | 2017-07-21 | 2019-11-12 | Aruba Networks Inc. | Arbiter circuit for crossbar |
CN107807901A (zh) * | 2017-09-14 | 2018-03-16 | 武汉科技大学 | 一种可扩展的可重构多核处理器连接方法 |
US20200099993A1 (en) * | 2018-09-21 | 2020-03-26 | Advanced Micro Devices, Inc. | Multicast in the probe channel |
CN110866599A (zh) * | 2019-11-08 | 2020-03-06 | 芯盟科技有限公司 | 芯片、及在芯片内建立数据路径的方法 |
US11398980B2 (en) | 2019-11-19 | 2022-07-26 | Advanced Micro Devices, Inc. | Packet router with virtual channel hop buffer control |
US11245643B2 (en) * | 2020-05-20 | 2022-02-08 | Tenstorrent Inc. | Speculative resource allocation for routing on interconnect fabrics |
CN111666139B (zh) * | 2020-05-26 | 2022-11-11 | 中国人民解放军国防科技大学 | 一种多输入多输出多服务等级数据队列的调度方法及装置 |
CN111970201A (zh) * | 2020-08-28 | 2020-11-20 | 迈普通信技术股份有限公司 | 一种多芯片级联的转发系统及转发控制方法 |
US20230224239A1 (en) * | 2022-01-13 | 2023-07-13 | Nvidia Corporation | Network multicasting using alternate sets of directives |
CN114679422B (zh) * | 2022-03-25 | 2024-04-26 | 中国电子科技集团公司第五十八研究所 | 一种基于双网络的无死锁多裸芯集成微系统高性能架构 |
CN114915594B (zh) * | 2022-07-14 | 2022-09-30 | 中科声龙科技发展(北京)有限公司 | 均衡路由的方法、网络互连系统、交叉开关装置及芯片 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6667984B1 (en) * | 1998-05-15 | 2003-12-23 | Polytechnic University | Methods and apparatus for arbitrating output port contention in a switch having virtual output queuing |
US20060059269A1 (en) * | 2004-09-13 | 2006-03-16 | Chien Chen | Transparent recovery of switch device |
US7461167B1 (en) * | 2002-11-22 | 2008-12-02 | Silicon Image, Inc. | Method for multicast service in a crossbar switch |
WO2013119241A1 (en) * | 2012-02-09 | 2013-08-15 | Intel Corporation | Modular decoupled crossbar for on-chip router |
US8638665B2 (en) * | 2008-04-30 | 2014-01-28 | Nec Corporation | Router, information processing device having said router, and packet routing method |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4929939A (en) | 1988-10-31 | 1990-05-29 | International Business Machines Corporation | High-speed switching system with flexible protocol capability |
US5319347A (en) | 1992-04-30 | 1994-06-07 | Sgs-Thomson Microelectronics, Inc. | Parallelized magnitude comparator for comparing a binary number to a fixed value |
JP2001024641A (ja) * | 1999-07-06 | 2001-01-26 | Nec Corp | クロスバー型スイッチのアービタにおける接続許可システム及び方法 |
ATE319249T1 (de) | 2000-01-27 | 2006-03-15 | Ibm | Verfahren und vorrichtung für klassifizierung von datenpaketen |
JP4489308B2 (ja) * | 2001-01-05 | 2010-06-23 | 富士通株式会社 | パケットスイッチ |
US7685436B2 (en) | 2003-10-02 | 2010-03-23 | Itt Manufacturing Enterprises, Inc. | System and method for a secure I/O interface |
EP1553738A1 (en) | 2004-01-12 | 2005-07-13 | Thomson Licensing S.A. | Method and apparatus for generating data packets |
US20060140126A1 (en) * | 2004-12-27 | 2006-06-29 | Intel Corporation | Arbitrating virtual channel transmit queues in a switched fabric network |
US8054744B1 (en) | 2007-10-25 | 2011-11-08 | Marvell International Ltd. | Methods and apparatus for flow classification and flow measurement |
US9159420B1 (en) | 2011-08-16 | 2015-10-13 | Marvell Israel (M.I.S.L) Ltd. | Method and apparatus for content addressable memory parallel lookup |
WO2013054497A1 (ja) * | 2011-10-14 | 2013-04-18 | パナソニック株式会社 | 中継器、中継器の制御方法、およびコンピュータプログラム |
US8711860B2 (en) | 2011-12-22 | 2014-04-29 | Telefonaktiebolaget L M Ericsson (Publ) | Controller for flexible and extensible flow processing in software-defined networks |
US20140153443A1 (en) | 2012-11-30 | 2014-06-05 | International Business Machines Corporation | Per-Address Spanning Tree Networks |
CN104022960B (zh) | 2013-02-28 | 2017-05-31 | 新华三技术有限公司 | 基于OpenFlow协议实现PVLAN的方法和装置 |
US9973599B2 (en) | 2013-12-04 | 2018-05-15 | Mediatek Inc. | Parser for parsing header in packet and related packet processing apparatus |
-
2013
- 2013-12-27 US US14/142,497 patent/US9548945B2/en active Active
-
2014
- 2014-12-25 JP JP2014263372A patent/JP6556450B2/ja active Active
- 2014-12-25 TW TW103145445A patent/TWI661702B/zh active
- 2014-12-29 CN CN201410838063.4A patent/CN104954254B/zh active Active
- 2014-12-29 KR KR1020140192064A patent/KR102319463B1/ko active IP Right Grant
-
2015
- 2015-11-20 HK HK15111512.9A patent/HK1210882A1/zh unknown
-
2021
- 2021-10-25 KR KR1020210142837A patent/KR102459838B1/ko active IP Right Grant
-
2022
- 2022-10-24 KR KR1020220137402A patent/KR102637136B1/ko active IP Right Grant
-
2024
- 2024-02-08 KR KR1020240019845A patent/KR20240024150A/ko active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6667984B1 (en) * | 1998-05-15 | 2003-12-23 | Polytechnic University | Methods and apparatus for arbitrating output port contention in a switch having virtual output queuing |
US7461167B1 (en) * | 2002-11-22 | 2008-12-02 | Silicon Image, Inc. | Method for multicast service in a crossbar switch |
US20060059269A1 (en) * | 2004-09-13 | 2006-03-16 | Chien Chen | Transparent recovery of switch device |
US8638665B2 (en) * | 2008-04-30 | 2014-01-28 | Nec Corporation | Router, information processing device having said router, and packet routing method |
WO2013119241A1 (en) * | 2012-02-09 | 2013-08-15 | Intel Corporation | Modular decoupled crossbar for on-chip router |
Also Published As
Publication number | Publication date |
---|---|
KR20150077373A (ko) | 2015-07-07 |
US9548945B2 (en) | 2017-01-17 |
JP2015128294A (ja) | 2015-07-09 |
KR20220148777A (ko) | 2022-11-07 |
CN104954254B (zh) | 2019-08-09 |
KR102459838B1 (ko) | 2022-10-28 |
KR102319463B1 (ko) | 2021-10-29 |
HK1210882A1 (zh) | 2016-05-06 |
CN104954254A (zh) | 2015-09-30 |
KR20240024150A (ko) | 2024-02-23 |
TW201547241A (zh) | 2015-12-16 |
KR20210131293A (ko) | 2021-11-02 |
KR102637136B1 (ko) | 2024-02-16 |
US20150188848A1 (en) | 2015-07-02 |
JP6556450B2 (ja) | 2019-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI661702B (zh) | 互連複數個處理引擎的晶片上路由器之矩陣及使用其進行路由的方法 | |
US9742630B2 (en) | Configurable router for a network on chip (NoC) | |
US10853282B2 (en) | Arbitrating portions of transactions over virtual channels associated with an interconnect | |
US10735335B2 (en) | Interface virtualization and fast path for network on chip | |
US7773616B2 (en) | System and method for communicating on a richly connected multi-processor computer system using a pool of buffers for dynamic association with a virtual channel | |
US10218581B2 (en) | Generation of network-on-chip layout based on user specified topological constraints | |
US11730325B2 (en) | Dual mode interconnect | |
US10983910B2 (en) | Bandwidth weighting mechanism based network-on-chip (NoC) configuration | |
US20080107106A1 (en) | System and method for preventing deadlock in richly-connected multi-processor computer system using dynamic assignment of virtual channels | |
US9185026B2 (en) | Tagging and synchronization for fairness in NOC interconnects | |
US9203739B2 (en) | Adaptive routing apparatus and method | |
US20040225734A1 (en) | Method and system to control the communication of data between a plurality of inteconnect devices | |
US7773617B2 (en) | System and method for arbitration for virtual channels to prevent livelock in a richly-connected multi-processor computer system | |
US20180198682A1 (en) | Strategies for NoC Construction Using Machine Learning | |
US10990552B1 (en) | Streaming interconnect architecture for data processing engine array | |
REDDY et al. | Design of Reconfigurable NoC Architecture for Low Area and Low Power Applications | |
US9928204B2 (en) | Transaction expansion for NoC simulation and NoC design | |
WO2008057821A2 (en) | System and method for preventing deadlock in richly-connected multi-processor computer system | |
Abts et al. | Scalable Switch Microarchitecture |