向混合可編程多核器件映射網(wǎng)絡(luò)應(yīng)用的制作方法
【專利摘要】本發(fā)明的各實(shí)施例涉及向混合可編程多核器件映射網(wǎng)絡(luò)應(yīng)用。描述了一種混合可編程邏輯,其在接收的數(shù)據(jù)包上使用可編程邏輯元件以及與可編程邏輯元件交錯(cuò)的處理器執(zhí)行包處理功能。報(bào)頭數(shù)據(jù)可以由可編程邏輯元件調(diào)度以用于向與處理器關(guān)聯(lián)的處理線程分配。處理器可以在報(bào)頭數(shù)據(jù)上使用由可編程邏輯元件提供的處理線程和硬件加速功能來(lái)執(zhí)行包處理功能。
【專利說明】向混合可編程多核器件映射網(wǎng)絡(luò)應(yīng)用
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及將包處理功能映射到混合可編程邏輯器件上,混合可編程邏輯器件包含許多可編程處理器、專用功能塊和可編程FPGA結(jié)構(gòu)。
【背景技術(shù)】
[0002]包處理器可以從物理接口接受入口包,在包上執(zhí)行分類和過濾操作,并且然后向流量管理器轉(zhuǎn)發(fā)包。流量管理器與切換結(jié)構(gòu)對(duì)接以將包切換到出口包處理器和物理接口上。雖然沒有明確定義的“包處理”功能,但包處理可包括但不限于:MAC捕獲和包的組幀(framing)、包解析、將包分類成流、路由統(tǒng)計(jì)和計(jì)數(shù)器的維護(hù)、IP轉(zhuǎn)譯、IP表查找或者包封裝和解封裝。包處理器的最終應(yīng)用可以針對(duì)協(xié)議棧的OSI傳輸層、網(wǎng)絡(luò)層或應(yīng)用層中的一個(gè)或多個(gè)層。
【發(fā)明內(nèi)容】
[0003]本發(fā)明提供了一種混合可編程邏輯器件,其包括可編程現(xiàn)場(chǎng)可編程門陣列邏輯結(jié)構(gòu)(例如,可編程邏輯元件)和多核分布式處理子系統(tǒng)(例如,多核處理器)。注意,術(shù)語(yǔ)“混合”指的是在相同器件(即,相同芯片)中集成可編程邏輯元件的結(jié)構(gòu)和處理器的器件。在所提供的架構(gòu)中,可編程邏輯元件可以提供“后期綁定”的硬件加速功能,這意味著可以在制造器件之后定義用于形成硬件加速功能的具體功能和邏輯架構(gòu)。例如,通過在運(yùn)行時(shí)編程混合可編程邏輯器件的軟件,可編程邏輯元件可以被劃分或分組為硬件加速器。還注意,術(shù)語(yǔ)“器件”指的是在此描述的混合可編程邏輯器件的任何實(shí)施例或者組合或者多個(gè)實(shí)施例。
[0004]本發(fā)明處理包含控制數(shù)據(jù)、報(bào)頭數(shù)據(jù)和有效載荷數(shù)據(jù)的數(shù)據(jù)包。注意,“報(bào)頭數(shù)據(jù)”指的是與包關(guān)聯(lián)的管理信息,比如關(guān)于包的源和目的地的信息,包的數(shù)據(jù)加密或者是與包本身的消息分離的任何其他信息。此外,注意,“有效載荷數(shù)據(jù)”指的是給予包的消息的實(shí)際數(shù)據(jù)。此外,注意,“控制數(shù)據(jù)”指的是有效載荷數(shù)據(jù)的子集,其包括對(duì)指示或重新編程混合可重編程邏輯器件功能而言必要的信息。
[0005]在某些實(shí)施例中,混合可編程邏輯器件可以接收包括報(bào)頭數(shù)據(jù)和有效載荷數(shù)據(jù)的數(shù)據(jù)包。器件可以包括可編程邏輯元件以及在可編程邏輯元件之間瓷磚式平鋪的處理器。注意,術(shù)語(yǔ)“瓷磚式平鋪”指的是排列處理器以使得它們?cè)诳删幊踢壿嬙g交錯(cuò)或散布。例如,處理器可以在具有可編程邏輯元件的二維平面中被連續(xù)地排列以使得在連續(xù)的處理器之間沒有其他的可編程邏輯元件。報(bào)頭數(shù)據(jù)可以由可編程邏輯元件調(diào)度以用于向與處理器關(guān)聯(lián)的處理線程分配。處理器可以在報(bào)頭數(shù)據(jù)上使用由可編程邏輯元件提供的處理線程和硬件加速功能來(lái)執(zhí)行包處理功能。
[0006]在某些實(shí)施例中,可以按照一種速度接收數(shù)據(jù)包,而處理器可以按照不同速度操作。調(diào)度電路可以在器件的輸入和處理器之間以關(guān)于時(shí)鐘速度異步的速率傳輸報(bào)頭數(shù)據(jù)。
【專利附圖】
【附圖說明】
[0007]當(dāng)結(jié)合附圖考慮以下詳細(xì)描述時(shí),本發(fā)明的上述和其他優(yōu)點(diǎn)將顯而易見,貫穿附圖中,相同的參考符號(hào)指的是相同的部件,其中:
[0008]圖1A是根據(jù)本發(fā)明的實(shí)施例的具有硬化數(shù)據(jù)總線和入口 /出口的混合可編程邏輯器件;
[0009]圖1B是根據(jù)本發(fā)明的實(shí)施例的包含鄰接可編程邏輯元件的處理器的混合可編程邏輯器件的擴(kuò)展視圖;
[0010]圖1C是根據(jù)本發(fā)明的實(shí)施例的包含在處理器和可編程邏輯元件之間的接口的混合可編程邏輯器件的擴(kuò)展視圖;
[0011]圖2是根據(jù)本發(fā)明的實(shí)施例的到混合可編程邏輯器件上的包分類功能的圖解映射;
[0012]圖3是根據(jù)本發(fā)明的實(shí)施例的包分類功能的調(diào)度塊的更詳細(xì)視圖;
[0013]圖4是根據(jù)本發(fā)明的實(shí)施例的包分類功能的存儲(chǔ)器接口的圖解視圖;
[0014]圖5是根據(jù)本發(fā)明的實(shí)施例的調(diào)度電路;
[0015]圖6是根據(jù)本發(fā)明的實(shí)施例的用于重新配置混合可編程邏輯器件的電路;
[0016]圖7是根據(jù)本發(fā)明的實(shí)施例的包分類功能的出口塊的更詳細(xì)的視圖;
[0017]圖8是根據(jù)本發(fā)明的實(shí)施例的用于向混合可編程邏輯器件中的處理器路由數(shù)據(jù)包的例示性過程。
【具體實(shí)施方式】
[0018]典型地在專用硬件(比如ASIC功能塊)中實(shí)現(xiàn)包處理功能。然而,必須靈活編程包處理功能,因?yàn)槁?lián)網(wǎng)協(xié)議不斷改變。因此,在允許用專用處理器的速度容易地重新配置的器件上實(shí)現(xiàn)包處理將是希望的。
[0019]圖1A是根據(jù)本發(fā)明的實(shí)施例的混合可編程邏輯器件100。器件100包括可編程邏輯元件130和處理器150的區(qū)域。通用輸入/輸出電路110可以包括在運(yùn)行時(shí)可以由外部軟件控制或者編程的一個(gè)或多個(gè)普通管腳。在某些實(shí)施例中,通用輸入/輸出電路110可以被配置為輸入或者輸出數(shù)據(jù),可以讀取或?qū)懭霐?shù)據(jù),可以被用作用于喚醒事件的IRQ,或者可以用于從器件100外圍的源傳送數(shù)據(jù)。高速串行接口 120可以有助于在數(shù)據(jù)的外部源(未示出)、可編程邏輯元件130和使用高速收發(fā)器塊的處理器150之間的信息的傳送。例如,高速串行接口 120可以與以太網(wǎng)連接對(duì)接以接收信息包,用可編程邏輯元件130和處理器150處理這些包,并且將包切換到不同物理接口。在某些實(shí)施例中,高速串行接口 120可以按照比通用輸入/輸出電路110高得多的速度傳送數(shù)據(jù)。例如,高速串行接口 120可以按照每秒數(shù)十千兆比特的速率讀取和寫入數(shù)據(jù),而通用輸入/輸出電路110可以按照數(shù)百兆比特的速率寫入數(shù)據(jù)。在某些實(shí)施例中,高速串行接口 120可以按照線速率操作,這意味著器件100的總吞吐率(例如,在多個(gè)串行信道上每秒100千兆比特),而處理器150和可編程邏輯元件130按照分配的速率操作,這意味著處理線程(以及在那些處理線程期間使用的對(duì)應(yīng)的存儲(chǔ)器和硬件加速塊)的總吞吐量不遜于用于器件100的目標(biāo)應(yīng)用的最小吞吐量。
[0020]可編程邏輯元件130可以包括邏輯門和存儲(chǔ)器的任何組合。在某些實(shí)施例中,這些可編程邏輯元件可以被分組為邏輯陣列塊(“LAB”),這指的是在由加利福尼亞的圣何塞的Altera公司所提供器件中的可編程邏輯資源的單元。然而,本發(fā)明適用于來(lái)自任何源的可編程邏輯元件。在某些實(shí)施例中,可編程邏輯元件可以被分組為硬件加速塊。每個(gè)硬件加速塊可以被指明為在所接收的數(shù)據(jù)上執(zhí)行某一類型的硬件事件。在某些實(shí)施例中,硬件加速塊可以可配置,從而使得該事件被定制到該特定情況。例如,硬件加速塊可以接受參數(shù),這些參數(shù)進(jìn)一步定義將在所接收的數(shù)據(jù)包上執(zhí)行的硬件事件。例如,用于配置硬件加速塊的參數(shù)可以由處理器150生成??梢酝ㄟ^數(shù)據(jù)總線160、水平和豎直連接器167 (下面關(guān)于圖1C描述)或者這兩者向硬件加速塊傳輸參數(shù)。在某些實(shí)施例中,可編程邏輯元件130可以包括任何合適的存儲(chǔ)器群集,比如M20K存儲(chǔ)器群集。
[0021]在某些實(shí)施例中,硬件加速塊被配置為執(zhí)行專用包處理功能。這些功能可包括使用循環(huán)冗余校驗(yàn)或者計(jì)算校驗(yàn)和的錯(cuò)誤檢測(cè)、使用多協(xié)議標(biāo)簽交換(MPLS)或者VLAN標(biāo)記的標(biāo)記掩蔽、使用外部存儲(chǔ)器訪問的IP查找、加密、數(shù)據(jù)壓縮或者任何其他軟件低效的包處理功能。
[0022]在某些實(shí)施例中,在已經(jīng)制造和部署了器件100之后(例如,在器件100的運(yùn)行時(shí)期間或者通過遠(yuǎn)程更新過程),可編程邏輯元件130可以可配置成不同硬件加速塊。因此,由可編程邏輯元件130組成的硬件加速塊可以是后期綁定的,這允許器件100在任何數(shù)量的域中的任何數(shù)量的應(yīng)用中是通用的。例如,器件100可以被更新以考慮最新的誤差校正、視頻和圖像處理或者數(shù)據(jù)管理標(biāo)準(zhǔn)。這不同于商業(yè)網(wǎng)絡(luò)處理單元、流水線處理器以及具有處理器和固定硬件加速塊二者的ASIC器件,因?yàn)檫@些器件不允許在部署之后定義硬件加速器。
[0023]在某些實(shí)施例中,可編程邏輯元件130可以基本上類似于由加利福尼亞的圣何塞的Altera公司所售的Stratix_ V FPGA的可編程邏輯元件。然而,應(yīng)當(dāng)理解,適合于FPGA或者PLD的任何可編程邏輯元件可以被用作可編程邏輯元件130。
[0024]處理器150可以包括具有多核設(shè)計(jì)的任何合適數(shù)量的處理器。這些多核設(shè)計(jì)可以基于廠商(比如arm、MIPS、Intel或Tensilica)的微處理器IP。這一微處理器IP允許創(chuàng)建定制的嵌入式處理器(例如,移除浮點(diǎn)單元)和定制的指令集架構(gòu)的能力。在某些實(shí)施例中,處理器可以被“硬化”,這意味著它們由固定邏輯元件而不是可編程邏輯元件組成。這一特征提供將功能強(qiáng)大的多核處理器集成到可編程邏輯結(jié)構(gòu)中。在某些實(shí)施例中,處理器可以是多線程的。
[0025]如圖1中示意性地描繪的,處理器150被瓷磚式平鋪在不存在可編程邏輯元件130的器件100的部分中的四列裝配結(jié)構(gòu)中。在其他實(shí)施例中,可以使用更少或者更多列的處理器。在某些實(shí)施例中,列或者處理器的數(shù)量以及每一列中處理器的數(shù)量可以比圖1A中描繪的更多或者更少。列數(shù)量和每一列中處理器150的數(shù)量可以取決于用于每個(gè)處理器的處理器架構(gòu)。例如,當(dāng)減少每個(gè)處理器的指令高速緩存和數(shù)據(jù)高速緩存時(shí),更多的處理器可以被瓷磚式平鋪在器件100上。在一個(gè)示例中,使用具有16KB的指令高速緩存和數(shù)據(jù)高速緩存的MIPS34K多線程處理器。在這一示例中,當(dāng)縮小到28nm的設(shè)計(jì)目標(biāo)時(shí),每個(gè)處理器消耗器件上小于0.25平方mm (毫米)的硅面積,這相當(dāng)于30個(gè)Stratix? V LAB。應(yīng)該理解的是,處理器150備選地可以在器件100上以行布置。
[0026]在某些實(shí)施例中,處理器150是多線程的。多線程處理器向如下應(yīng)用提供優(yōu)勢(shì),在應(yīng)用中通常需要與片外存儲(chǔ)器或查找對(duì)接,這可能花費(fèi)多個(gè)時(shí)鐘周期的處理時(shí)間并且因此增加延時(shí),或者隱藏加速器處理的延時(shí)。例如,通過阻止處理器中的一個(gè)線程到這一查找任務(wù),處理器能夠繼續(xù)執(zhí)行其他功能。在某些實(shí)施例中,多線程可以通過對(duì)由處理器150接收的數(shù)據(jù)的時(shí)間分片操作來(lái)實(shí)現(xiàn)。在其他實(shí)施例中,多線程可以由公知的操作系統(tǒng)機(jī)制來(lái)實(shí)現(xiàn)。
[0027]器件上的處理器150的瓷片式平鋪布局允許高效制造和提供用于器件的處理器、可編程邏輯元件和I/O接口之間的通信的互連網(wǎng)絡(luò)。這是因?yàn)榭删幊踢壿嬙?30和器件100的其他元件(比如存儲(chǔ)器(未示出))與處理器150分離。此外,處理器150的瓷片式平鋪布局允許在器件100中的相同金屬層中的處理器150和可編程邏輯元件130的結(jié)構(gòu),以及包含數(shù)據(jù)總線的互連堆疊的結(jié)構(gòu)。
[0028]器件100還包括外部存儲(chǔ)器135和嵌入式三態(tài)內(nèi)容可尋址存儲(chǔ)器(TCAM)存儲(chǔ)器137。硬化的數(shù)據(jù)總線160可以由專用電路組件組成,專用電路組件傳送數(shù)據(jù)到處理器150、可編程邏輯元件130、入口 /出口處理塊136、外部存儲(chǔ)器135和嵌入式TCAM存儲(chǔ)器137并且從處理器150、可編程邏輯元件130、入口 /出口處理塊136、外部存儲(chǔ)器135和嵌入式TCAM存儲(chǔ)器137傳送數(shù)據(jù),而不是被保留作器件上的其他用途。在某些實(shí)施例中,硬化的數(shù)據(jù)總線160可以被稱為芯片互連上的網(wǎng)絡(luò)。在這樣的實(shí)施例中,硬化的數(shù)據(jù)總線160可以專用于尋路由和/或攜帶去往和來(lái)自入口/出口處理塊的數(shù)據(jù)到器件的其他元件。硬化的數(shù)據(jù)總線160可以允許在器件內(nèi)部和外部二者的高性能數(shù)據(jù)傳送。在某些實(shí)施例中,硬化的數(shù)據(jù)總線160可以包括水平和豎直連接器167 (圖1C)的一部分。在其他實(shí)施例中,硬化的數(shù)據(jù)總線160可以完全從水平和豎直連接器167分離。
[0029]硬化的數(shù)據(jù)總線160可以具有各種各樣的拓?fù)洹@?,硬化的?shù)據(jù)總線160可以具有環(huán)形拓?fù)洹⒐蚕淼目偩€協(xié)議(比如由英國(guó)劍橋的ARM控股設(shè)計(jì)的AXI ),來(lái)自Sonics、Arteris或其他第三方公司的互連技術(shù)或者由加利福尼亞的圣何塞的Altera公司設(shè)計(jì)的Avalon?互連。在某些實(shí)施例中,硬化的數(shù)據(jù)總線160可以是分層的。例如,硬化的數(shù)據(jù)總線160可以是4路劃分。在另一示例(未示出)中,硬化的數(shù)據(jù)總線160可以是整體的。在又一示例(未示出)中,硬化的數(shù)據(jù)總線可以被分段。
[0030]在某些實(shí)施例(未示出)中,器件100可以不包括硬化的數(shù)據(jù)總線160。在這樣的實(shí)施例中,可以在器件100的組件之間使用可編程邏輯100來(lái)路由信號(hào)。關(guān)于美國(guó)專利申請(qǐng)的圖1A圖示并討論這樣的實(shí)施例,該美國(guó)專利申請(qǐng)的申請(qǐng)?zhí)枮開,名稱為
“Hybrid Programmable Many-Core Device with On-chip Interconnect,,(代理人案卷號(hào)000174-0767-101/A03939),與此同時(shí)提交,在此通過引用將其全部并入。
[0031]在某些實(shí)施例中,硬化的數(shù)據(jù)總線160的部分可以通過可以對(duì)器件300編程的軟件分級(jí)連接或斷開。這一軟件可以包括由加利福尼亞的圣何塞的Altera公司設(shè)計(jì)的
Quartus?軟件或者任何其他合適的軟件。在某些實(shí)施例中,硬化的數(shù)據(jù)總線160的帶寬被設(shè)計(jì)用于實(shí)現(xiàn)特定應(yīng)用的線速率。例如,如果硬化的數(shù)據(jù)總線160是64位,并且以IGHz運(yùn)行并具有80%的效率,則它可以提供51Gbps的帶寬并且用于以50Gbps流視頻應(yīng)用為目標(biāo)。在另一示例中,如果硬化的數(shù)據(jù)總線160是64位并且以1.5GHz運(yùn)行并具有80%的效率,則它可以提供150Gbps的帶寬并且以10Gb的流量切換應(yīng)用為目標(biāo)。在某些實(shí)施例中,可以添加單獨(dú)的硬化的數(shù)據(jù)總線以攜帶用于處理器輸入和輸出的數(shù)據(jù)作為L(zhǎng)AB輸入和輸出。
[0032]在某些實(shí)施例中,硬化的數(shù)據(jù)總線160可以被放置在處理器150和可編程邏輯元件130上(例如,在上文的金屬層中)或與處理器150和可編程邏輯元件130相鄰。以這一方式,硬化的數(shù)據(jù)總線160對(duì)器件100的組件的侵略性最小。
[0033]外部存儲(chǔ)器135可以包括到外部存儲(chǔ)器(比如DDR存儲(chǔ)器)的任何合適的接口。夕卜部存儲(chǔ)器135可以緩沖應(yīng)用中的數(shù)據(jù),其中器件300處理視頻數(shù)據(jù)或者包數(shù)據(jù)。在某些實(shí)施例中,嵌入式TCAM存儲(chǔ)器137可以包括對(duì)聯(lián)網(wǎng)應(yīng)用有用的內(nèi)容可尋址存儲(chǔ)器的任何合適的塊。在某些實(shí)施例中,嵌入式TCAM存儲(chǔ)器137可以使用和接口電路161 (圖1C)基本上類似的電路來(lái)與可編程邏輯元件130和處理器150對(duì)接。在某些實(shí)施例中,TCAM存儲(chǔ)器137可以由SRAM或者嵌入式SRAM包緩沖存儲(chǔ)器替換。
[0034]入口 /出口處理塊136可以接收數(shù)據(jù)并且向器件300的其他元件轉(zhuǎn)發(fā)該數(shù)據(jù)。例如,入口 /出口處理塊136可以接收數(shù)據(jù)包并且向器件300提供協(xié)議終止或包組幀服務(wù)。在某些實(shí)施例中,入口 /出口處理塊136可以向硬化的數(shù)據(jù)總線160轉(zhuǎn)發(fā)接收的數(shù)據(jù)。在某些實(shí)施例中,入口 /出口處理塊可以包括硬化的ASIC塊??梢愿鶕?jù)在序列號(hào)為8,314,636的美國(guó)專利中所公開的ASIC塊構(gòu)成這些塊,本文通過引用將該美國(guó)專利全部并入。在某些實(shí)施例中,入口 /出口處理塊可以由可編程邏輯元件130構(gòu)建。
[0035]圖1B是根據(jù)本發(fā)明的實(shí)施例的包含鄰近于可編程邏輯元件130的處理器150的混合可編程邏輯器件100的擴(kuò)展視圖。兩個(gè)處理器在圖1B中被示意性地描繪為包含三個(gè)組件(處理器核170、指令高速緩存180和數(shù)據(jù)高速緩存190)的正方形。圖1B中還示意性地描繪了被分組為L(zhǎng)AB132的可編程邏輯元件130。在某些實(shí)施例中,處理器150的尺寸(例如,長(zhǎng)度、高度或?qū)挾?的物理大小是可編程邏輯元件150或由可編程邏輯元件150組成的LAB的相同尺寸的倍數(shù)。例如,如圖1B中所描繪的,兩個(gè)處理器中的每個(gè)處理器的寬度等于3個(gè)LAB132。這允許向可編程邏輯元件或其他邏輯塊高效組裝具有不同尺寸、,具有處理器的不同比率的器件。
[0036]圖1C是根據(jù)本發(fā)明的實(shí)施例的包含在處理器150和可編程邏輯元件130之間的接口 161的混合可編程邏輯器件100的擴(kuò)展視圖。可以在每個(gè)LAB或LAB的行和處理器150之間包括接口 161。接口 161可以包括UM/LE頂電路162、接口邏輯164和接口端口 166。LIM/LEIM電路162指的是可編程輸入復(fù)用器“LAB輸入復(fù)用器”和“邏輯元件輸入復(fù)用器”的匯集,并且可以包括任何合適數(shù)量的LIM和LEIM多路復(fù)用器,正如在加利福尼亞的圣何塞的Altera公司所售的器件中常見的UM和LEM多路復(fù)用器。接口邏輯164可以包括用于向接口端口 166緩沖數(shù)據(jù)的任何合適的電路組件。接口端口 166可以包括用于向處理器150中的一個(gè)處理器物理地傳送信號(hào)的任何合適的電路。
[0037]在某些實(shí)施例中,在器件100上也可以包括水平和豎直連接器167。水平和豎直連接器167可以在處理器150、可編程邏輯元件130、通用輸入/輸出接口以及片上和片外存儲(chǔ)器之間傳送數(shù)據(jù)。在某些實(shí)施例中,水平和豎直連接器可以連接到接口電路161以使得來(lái)自任何可編程邏輯元件130的任何信號(hào)可以通過UM/LEM電路162和接口邏輯164而被遞送到接口端口 166。例如,LIM/LEIM電路162內(nèi)的多路復(fù)用器可以選擇哪個(gè)信號(hào)驅(qū)動(dòng)水平/豎直連接器167中的任何全局線以將任何可編程邏輯元件130與處理器150連接。
[0038]圖2是根據(jù)本發(fā)明的實(shí)施例的到混合可編程邏輯器件上的包分類功能200的圖解映射。包分類功能200包括從外部源(比如以太網(wǎng)端口的傳入數(shù)據(jù)管腳)接收數(shù)據(jù)并將其傳輸?shù)饺肟趬K210的高速收發(fā)器212。包分類功能200還包括將數(shù)據(jù)從出口塊220傳輸?shù)酵獠吭?比如以太網(wǎng)端口的傳出數(shù)據(jù)管腳)的高速收發(fā)器214。在某些實(shí)施例中,數(shù)據(jù)包可以由收發(fā)器212接收。這些包可以包含按照任何合適的包幀格式的控制數(shù)據(jù)、報(bào)頭數(shù)據(jù)和有效載荷數(shù)據(jù)。通過確定包的格式(比如標(biāo)識(shí)包的組幀和報(bào)頭),入口塊210可以預(yù)處理接收的數(shù)據(jù)包。通過確定與接收的包關(guān)聯(lián)的路由協(xié)議(比如TCP/IP),入口塊210也可以預(yù)處理接收的數(shù)據(jù)。在某些實(shí)施例中,入口塊210可以為包分類功能200提供介質(zhì)訪問控制(MAC)層功能。
[0039]在某些實(shí)施例中,入口塊210的功能可以由器件100 (圖1A)的入口 /出口處理塊136實(shí)現(xiàn)??梢允褂糜不腁SIC塊或后期綁定的可編程邏輯(例如,F(xiàn)PGA結(jié)構(gòu)250的可編程邏輯元件)來(lái)實(shí)現(xiàn)入口塊210。在其中在FPGA結(jié)構(gòu)250中實(shí)現(xiàn)入口塊210的實(shí)施例中,MAC層可以被定制以使得包分類功能200適于寬泛范圍的各種應(yīng)用。例如,路由端口、信道或兩者的數(shù)量可以被增加。
[0040]一旦入口處理塊210預(yù)處理接收的數(shù)據(jù),則使用數(shù)據(jù)總線260將其發(fā)送到調(diào)度塊230、包緩沖器塊240或處理器270中的一個(gè)或多個(gè)。數(shù)據(jù)總線260可以基本上類似于硬化的數(shù)據(jù)總線160 (圖1A)。調(diào)度塊230可以基于處理器270的資源調(diào)度接收的數(shù)據(jù)包的處理。在某些實(shí)施例中,調(diào)度塊230可以在FPGA結(jié)構(gòu)250的可編程邏輯元件中被實(shí)現(xiàn)。在某些實(shí)施例中,調(diào)度塊230可以將接收的數(shù)據(jù)包的報(bào)頭數(shù)據(jù)傳輸?shù)教幚砥?70,并且將接收的數(shù)據(jù)包的有效載荷數(shù)據(jù)傳輸?shù)桨彌_器塊240。在其中一個(gè)或多個(gè)處理器270是多線程的實(shí)施例中,調(diào)度塊230可以將接收的包的報(bào)頭數(shù)據(jù)傳輸?shù)教幚砥?70的可用線程。
[0041]處理器270可以使用FPGA結(jié)構(gòu)250在數(shù)據(jù)上執(zhí)行一個(gè)或者多個(gè)包處理任務(wù)。這樣的包處理任務(wù)可以包括MAC捕捉、包組幀、包解析、包分類、路由表和路由統(tǒng)計(jì)的維護(hù)、控制包的維護(hù)、包加密和解密、路由地址轉(zhuǎn)換、IP表查找、包分段和分裂、包封裝和解封裝、包修改(即包復(fù)制和標(biāo)記)、包服務(wù)質(zhì)量維護(hù)(訪問控制列表的維護(hù)、包監(jiān)管(policing)和包整形)、工業(yè)標(biāo)準(zhǔn)緩沖和延時(shí)要求的維護(hù)以及任何用戶優(yōu)選的包處理模式的維護(hù)中的一個(gè)或多個(gè)。在某些實(shí)施例中,調(diào)度塊230可以使用數(shù)據(jù)總線260發(fā)送控制信號(hào)到一個(gè)或者多個(gè)處理器270以便協(xié)調(diào)到可用處理器線程的數(shù)據(jù)的分配。在這樣的實(shí)施例中,一旦控制信號(hào)的關(guān)聯(lián)的報(bào)頭數(shù)據(jù)已由處理器270處理,則它們還可以被發(fā)送到出口塊220以協(xié)調(diào)包的重排序。
[0042]包緩沖器塊240可以在任何合適的儲(chǔ)存存儲(chǔ)器中存儲(chǔ)接收的數(shù)據(jù)包的有效載荷數(shù)據(jù)。在某些實(shí)施例中,儲(chǔ)存存儲(chǔ)器可以在實(shí)現(xiàn)包分類功能200的器件(比如器件100 (圖1A))的內(nèi)部。例如,儲(chǔ)存存儲(chǔ)器可以包括連接到數(shù)據(jù)總線260的本地SRAM存儲(chǔ)器。這一本地存儲(chǔ)器可以在處理器270的片上,通過2.硅中介層或真實(shí)的3D連接而連接到處理器,或者通過裸片的通用或者串行管腳連接到處理器270。
[0043]一旦被處理,則可以用在包緩沖器270中存儲(chǔ)的對(duì)應(yīng)的有效載荷數(shù)據(jù)重新組裝報(bào)頭數(shù)據(jù),并且然后通過出口塊220和收發(fā)器214路由到外部目的地。在某些實(shí)施例中,基于與在入口塊210接收的數(shù)據(jù)包的格式關(guān)聯(lián)的協(xié)議(例如,TCP流ID),出口塊220可以緩沖和重排序包。出口塊220可以使用硬化的ASIC塊或后期綁定的可編程邏輯來(lái)被實(shí)現(xiàn)。在某些實(shí)施例中,出口塊220可以在FPGA結(jié)構(gòu)250的可編程邏輯元件中被實(shí)現(xiàn)。
[0044]FPGA結(jié)構(gòu)250可以包含任何合適數(shù)量的可編程邏輯元件130(圖1A)。在某些實(shí)施例中,F(xiàn)PGA結(jié)構(gòu)250內(nèi)的可編程邏輯元件的分組可以被配置成不同的硬件加速塊??梢栽谝呀?jīng)制造或部署(例如,在包分類功能200的運(yùn)行時(shí)期間)器件100后出現(xiàn)這種配置。因此,包分類功能200的包分類能力可以是后期綁定的,這允許數(shù)據(jù)包的更通用的路由。例如,在用最新的路由協(xié)議、錯(cuò)誤控制、數(shù)據(jù)加密、IP查找、IP地址轉(zhuǎn)譯或任何其他合適的包處理功能部署后,可以重新配置包分類功能200。以下關(guān)于圖5描述這一重新配置過程。
[0045]處理器270可以基本上類似于處理器150 (圖1A)。處理器270可以通過數(shù)據(jù)總線260向和從FPGA結(jié)構(gòu)250中的一個(gè)或者多個(gè)硬件加速塊傳輸包數(shù)據(jù)。這些硬件加速塊可以執(zhí)行與以上關(guān)于處理器270討論的包處理任務(wù)關(guān)聯(lián)的任何例程或者子例程。在某些實(shí)施例中,處理器270和FPGA結(jié)構(gòu)250中的硬件加速塊可以訪問提供直接存儲(chǔ)器訪問(DMA)的硬件加速器互連(未示出)。此外,這一硬件加速器互連可以提供到片外存儲(chǔ)器的訪問或者查找。在某些實(shí)施例中,片外存儲(chǔ)器可以包括嵌入式TCAM存儲(chǔ)器137 (圖1A)。
[0046]在某些實(shí)施例中,包分類功能200可以按照“運(yùn)行到完成”模式操作。在這種模式中,處理器270和FPGA結(jié)構(gòu)250的資源可用或者不可用。當(dāng)調(diào)度塊230接收包時(shí),其被指派為在處理器270之一的可用線程中被處理。指派的線程然后在包的壽命期間被占用,即,直到與包關(guān)聯(lián)的數(shù)據(jù)由處理器270和FPGA結(jié)構(gòu)250處理并且由出口塊220重新組裝。
[0047]在某些實(shí)施例中,入口塊210、出口塊220和調(diào)度塊230可以按照線速率操作,這意味著實(shí)現(xiàn)包分類功能200的器件(例如,器件100(圖1A))的總吞吐率,而處理器270可以按照分布式速率操作,這意味著處理線程(以及與那些處理線程一起使用的FPGA結(jié)構(gòu)250的對(duì)應(yīng)的存儲(chǔ)器和硬件加速塊)的總吞吐量不遜于用于目標(biāo)路由應(yīng)用的最小吞吐量。在這樣的實(shí)施例中,出口塊220重排序來(lái)自相同TCP流的包,因此傳出包的順序和傳入包的相同。
[0048]圖3是根據(jù)本發(fā)明的實(shí)施例的包分類功能200 (圖2)的調(diào)度塊230的更詳細(xì)視圖。調(diào)度塊230組幀(frame)包數(shù)據(jù),并將其分配到處理器270 (圖2)的可用線程。此外,當(dāng)在處理器270之間沒有可用的線程時(shí),調(diào)度塊230管理包數(shù)據(jù)的流(即,執(zhí)行包流控制操作)。
[0049]調(diào)度塊230在輸入MAC310處接收包數(shù)據(jù)。輸入MAC310可以是來(lái)自包分類功能200 (圖2)的介質(zhì)訪問控制層的任何合適的數(shù)據(jù)流。在某些實(shí)施例中,輸入MAC310可以從入口塊210接收數(shù)據(jù)。輸入MAC310然后將數(shù)據(jù)轉(zhuǎn)發(fā)到預(yù)處理塊320。在某些實(shí)施例中,輸入MAC310可以加密或解密接收的數(shù)據(jù)。在其他實(shí)施例中,加密或解密可以由處理器270執(zhí)行。通過確定包內(nèi)信息的格式(比如例如包的哪部分包含有效載荷數(shù)據(jù)并且包的哪部分包含報(bào)頭數(shù)據(jù)),預(yù)處理塊320組幀包。一旦包被組幀,則預(yù)處理塊320分配報(bào)頭數(shù)據(jù)到分派互連330,并分配有效載荷數(shù)據(jù)到包緩沖器340。在某些實(shí)施例中,預(yù)處理塊320可以與調(diào)度分派330通信以檢查處理器270之間是否有任何可用線程。如果有可用線程,則報(bào)頭數(shù)據(jù)和有效載荷數(shù)據(jù)可以被如上所述地分配。如果沒有可用的線程,則預(yù)處理塊320可以背壓(back-pressure)輸入MAC310,傳輸包有效載荷數(shù)據(jù)到包緩沖器340以用于存儲(chǔ),或二者。備選地,預(yù)處理塊320可以丟棄與包關(guān)聯(lián)的數(shù)據(jù)。
[0050]在某些實(shí)施例中,通過比較包的報(bào)頭和有效載荷中的一個(gè)或多個(gè)與已知控制包標(biāo)準(zhǔn),預(yù)處理塊320可以確定接收的包是否是控制包。在這樣的實(shí)施例中,預(yù)處理塊320可以通過分派互連330截取并路由這些控制包到處理器270中的一個(gè)或者多個(gè)處理器,處理器270被指派為管家處理器。這些管家處理器可以實(shí)現(xiàn)功能,比如電源和時(shí)鐘管理。在某些實(shí)施例中,這些管家處理器可以由地點(diǎn)或路由工具的用戶指明。在其他實(shí)施例中,管家處理器可以由在運(yùn)行時(shí)期間實(shí)現(xiàn)包分類功能200的器件(例如,器件100)指明。在其他實(shí)施例中,控制包可以由駐留在預(yù)處理塊320中的硬件子例程處理。在這樣的實(shí)施例中,預(yù)處理塊320可以將控制包轉(zhuǎn)譯成指令并路由到處理線程350。
[0051]包緩沖器340可以基本上類似于包緩沖器塊240。包緩沖器塊240可以存儲(chǔ)有效載荷數(shù)據(jù),直到與該有效載荷數(shù)據(jù)關(guān)聯(lián)的包準(zhǔn)備好用于重新組裝。在某些實(shí)施例中,當(dāng)包的關(guān)聯(lián)的報(bào)頭數(shù)據(jù)已經(jīng)由處理器270處理時(shí),重新組裝包。在某些實(shí)施例中,包緩沖器340可以包括實(shí)現(xiàn)包分類功能200的器件(例如,器件100)內(nèi)部的存儲(chǔ)器。這一存儲(chǔ)器可以包括關(guān)于包緩沖器240 (圖2)所討論的存儲(chǔ)器。在其他實(shí)施例中,包緩沖器340可以包括位于實(shí)現(xiàn)包分類功能的器件外的存儲(chǔ)器。
[0052]分派互連330從預(yù)處理塊320接收包報(bào)頭數(shù)據(jù),并將其分發(fā)到處理線程350。在某些實(shí)施例中,可以使用硬化的數(shù)據(jù)總線160 (圖1)來(lái)實(shí)現(xiàn)分派互連330。在某些實(shí)施例中,通過定期因特網(wǎng)包探索(pinging) —個(gè)或者多個(gè)處理器270,分派互連330可以確定是否有任何可用處理線程350。分派互連330可以用唯一處理器地址或者處理線程地址標(biāo)記報(bào)頭數(shù)據(jù)。這一地址可以由處理器270使用,確定它們是否應(yīng)該處理到達(dá)數(shù)據(jù)總線160的特定報(bào)頭數(shù)據(jù),以及使用什么特定處理線程,或者它們是否應(yīng)該忽略特定報(bào)頭數(shù)據(jù)。處理線程350可以包括處理器270的任何處理線程。
[0053]在某些實(shí)施例中,分派互連330可以將與相同TCP流中的包關(guān)聯(lián)的報(bào)頭數(shù)據(jù)分配到相關(guān)的處理器群集,比如被指明執(zhí)行相同包處理任務(wù)(例如,包加密和解密、路由地址轉(zhuǎn)譯、IP表查找等)的那些處理器270。以這一方式,由分派互連330使用的數(shù)據(jù)總線的負(fù)載以及重排序的包中的出口塊220的負(fù)載可以被減小。在某些實(shí)施例中,調(diào)度塊230可以被簡(jiǎn)化為只包含分派互連330。在此類實(shí)施例中,分派互連330可以接收?qǐng)?bào)頭數(shù)據(jù)和與處理線程可用性關(guān)聯(lián)的數(shù)據(jù),而且連同特定處理器或者處理線程的地址一起輸出報(bào)頭數(shù)據(jù)。
[0054]圖4是根據(jù)本發(fā)明的實(shí)施例的包分類功能200的存儲(chǔ)器接口的示意圖。如圖4中所示,分派互連330通過存儲(chǔ)器接口 420和本地存儲(chǔ)器410而將包數(shù)據(jù)分配到處理器270(圖2)。處理器270然后使用消息傳遞互連430將這一包數(shù)據(jù)傳輸?shù)接布铀倨?40以便硬件加速器440執(zhí)行與包處理任務(wù)關(guān)聯(lián)的任何例程或者子例程。此外,處理器270可以使用包互連405訪問外部存儲(chǔ)器,比如包緩沖器340的存儲(chǔ)器。在某些實(shí)施例中,可以通過數(shù)據(jù)總線160 (圖1)來(lái)實(shí)現(xiàn)分派互連330、包互連405和消息傳遞互連430中的一個(gè)或者多個(gè)。
[0055]處理器270包括存儲(chǔ)器接口 410、本地存儲(chǔ)器420和處理器線程350。雖然處理器270被圖示為具有用于每個(gè)處理器線程的單個(gè)存儲(chǔ)器接口和本地存儲(chǔ)器,但可能有在單個(gè)處理器上運(yùn)行的多個(gè)處理線程之間共享的單個(gè)存儲(chǔ)器接口和本地存儲(chǔ)器。存儲(chǔ)器接口 410從分派互連330接收?qǐng)?bào)頭數(shù)據(jù),并在本地存儲(chǔ)器420或者外部存儲(chǔ)器(未示出)中的一個(gè)或多個(gè)中將其存儲(chǔ)并取回。在某些實(shí)施例中,存儲(chǔ)器接口 410可以使用并行直接存儲(chǔ)器訪問(DMA)引擎以僅從本地存儲(chǔ)器420中存儲(chǔ)和取回報(bào)頭數(shù)據(jù)。在這樣的實(shí)施例中,來(lái)自包的報(bào)頭數(shù)據(jù)被存儲(chǔ)在其中正處理它的特定處理器的本地存儲(chǔ)器中,完全由該特定處理器的代碼管理,并且沒有與處理器270的任何其他存儲(chǔ)器一致地或與處理器270的任何其他存儲(chǔ)器保持一致地被索引。換句話說,在處理期間,沒有虛擬存儲(chǔ)器或頁(yè)表操作用于存儲(chǔ)和取回報(bào)頭數(shù)據(jù)。這提高了包處理任務(wù)的效率,因?yàn)獒槍?duì)數(shù)據(jù)訪問不需要高速緩存管理。在某些實(shí)施例中,報(bào)頭數(shù)據(jù)可以包含指向位置的指針,所附的報(bào)頭數(shù)據(jù)被存儲(chǔ)在該位置,比如像緩沖器塊240的外部存儲(chǔ)器。在這樣的實(shí)施例中,存儲(chǔ)器接口 410可以通過包互連405來(lái)使用指針以從存儲(chǔ)庫(kù)請(qǐng)求有效載荷數(shù)據(jù)。在其他實(shí)施例中,報(bào)頭數(shù)據(jù)可以被本地存儲(chǔ)到特定處理器。
[0056]在某些實(shí)施例中,處理器270可以從廣播流中的調(diào)度塊230接收數(shù)據(jù)。當(dāng)空閑時(shí),與每個(gè)處理器關(guān)聯(lián)的存儲(chǔ)器接口 410中的每個(gè)存儲(chǔ)器接口的DMA引擎監(jiān)聽被尋址到該處理器的處理線程的報(bào)頭數(shù)據(jù)。該地址可以是在報(bào)頭數(shù)據(jù)之前在分派互連330上發(fā)送的控制字,或者被路由到存儲(chǔ)器接口 410的另一信號(hào)。這一通信方案為分派互連330提供近乎完美的利用(即接近零的控制開銷)。下面關(guān)于圖5進(jìn)一步描述這一過程。
[0057]消息傳遞互連430可以將數(shù)據(jù)從處理器270的處理器線程350傳輸?shù)揭粋€(gè)或多個(gè)硬件加速器440。硬件加速器440可以是FPGA結(jié)構(gòu)250內(nèi)的可編程邏輯元件的分組,F(xiàn)PGA結(jié)構(gòu)250執(zhí)行與包處理任務(wù)關(guān)聯(lián)的例程或者子例程。一旦硬件加速器440根據(jù)特定例程或者子例程處理報(bào)頭數(shù)據(jù),它就可以使用消息傳遞互連430將該報(bào)頭數(shù)據(jù)傳輸回處理器線程350的它的關(guān)聯(lián)的處理線程。一旦根據(jù)特定的包處理任務(wù)完成了處理報(bào)頭數(shù)據(jù)的處理器線程350,它們就可以將處理的報(bào)頭數(shù)據(jù)存儲(chǔ)在本地存儲(chǔ)器420中并將指示該報(bào)頭數(shù)據(jù)已被處理的信號(hào)傳輸?shù)秸{(diào)度塊230。調(diào)度塊230然后可以向出口塊220指示與處理的報(bào)頭數(shù)據(jù)關(guān)聯(lián)的包準(zhǔn)備好和它的關(guān)聯(lián)的有效載荷數(shù)據(jù)一起重新組裝。經(jīng)重新組裝的包然后可以與相同TCP流中的其他包一起被重排序并且被傳輸?shù)剿鼈兊淖罱K路由目的地。
[0058]用于包處理任務(wù)加速的FPGA結(jié)構(gòu)250的使用可能是有益的,因?yàn)樗试S包處理算法的部分被卸載到FPGA中的硬件,同時(shí)使用用于大量指令的易于編程的軟件代碼。此外,當(dāng)任務(wù)對(duì)于硬件實(shí)現(xiàn)方式來(lái)說算法過于復(fù)雜時(shí),軟件代碼的使用可以是有利的。
[0059]在某些實(shí)施例中,處理器270可以被劃分成不同的類。處理器的每個(gè)不同的類可以執(zhí)行不同的處理任務(wù)。例如,第一組處理器可以預(yù)處理包以標(biāo)識(shí)流ID,而第二組處理器可以基于流id而將包分配到不同處理以幫助維持順序。關(guān)于如下美國(guó)專利申請(qǐng)的圖7A討論這種將處理器劃分成類,所述美國(guó)專利申請(qǐng)的序列號(hào)為_,名稱為
“Hybrid Programmable Many-Core Device with On-chip Interconnect,,(代理人案卷號(hào)000174-0767-101/A03939),與此同時(shí)提交,本文通過引用將其全部并入。
[0060]在某些實(shí)施例中,不同類的處理器270和FPGA結(jié)構(gòu)250的可編程邏輯元件可以用于管理實(shí)現(xiàn)包處理功能200的器件(例如,器件100 (圖1A))的功率使用。例如,可以基于和每個(gè)分區(qū)關(guān)聯(lián)的處理器和邏輯元件的處理能力需求而動(dòng)態(tài)地上電或斷電與器件100的分區(qū)關(guān)聯(lián)的處理器和可編程邏輯元件。關(guān)于如下美國(guó)專利申請(qǐng)的圖7B描述該處理,所述美國(guó)專利申請(qǐng)的序列號(hào)為_,名稱為“Hybrid Programmable Many-Core Device with
On-chip Interconnect代理人案卷號(hào)000174-0767-101/A03939),與此同時(shí)提交,本文通過引用將其全部并入。
[0061]雖然處理器270已經(jīng)被討論為以分布式模型運(yùn)行,但是在某些實(shí)施例中,處理器的分組可以執(zhí)行流水線功能。在這樣的實(shí)施例中,處理器的不同分組可以通過消息傳遞互連430而具有不同的代碼基和加速器連接。此外,消息傳遞互連430將提供處理器之間的通信路徑。這些路徑允許處理器的分組在分組之間傳遞包。
[0062]圖5是根據(jù)本發(fā)明的實(shí)施例的調(diào)度電路500。調(diào)度電路500包括按照水平和豎直連接器505形式的數(shù)據(jù)總線,其可以基本上類似于水平和豎直連接器167(圖1C)、硬化的數(shù)據(jù)總線160 (圖1A)或者數(shù)據(jù)總線260 (圖2)。調(diào)度電路500可以調(diào)度水平和豎直連接器或硬化的數(shù)據(jù)總線上的、調(diào)度塊230和處理器270 (圖2)之間的數(shù)據(jù)傳輸。處理器530可以是處理器270之一。在某些實(shí)施例中,處理器530可以是一列瓷磚式平鋪的處理器中的部分,比如關(guān)于處理器150 (圖1A)所述的那些處理器。在這樣的實(shí)施例中,調(diào)度電路500的副本可與處理器150中的每個(gè)處理器集成。
[0063]在某些實(shí)施例中,在調(diào)度塊230和處理器270之間的數(shù)據(jù)傳輸速率可以與處理器530的時(shí)鐘速率不同或異步。例如,處理器的操作速度可以快于或者慢于入口塊210的操作速度。因此,在調(diào)度塊230和處理器530之間使用水平和豎直連接器505傳輸數(shù)據(jù)的速率可以不同于處理器530的時(shí)鐘的速度。
[0064]在這樣的實(shí)施例中,總線接口 510可以提供如下機(jī)制,該機(jī)制允許在水平和豎直連接器505上以與關(guān)于處理器530的時(shí)鐘速度異步的速率傳輸數(shù)據(jù)。在某些實(shí)施例中,總線接口 510可以通過水平和豎直連接器505接收尋址數(shù)據(jù)。在這樣的實(shí)施例中,這一尋址數(shù)據(jù)可以包含如下信息,該信息指示與該消息關(guān)聯(lián)的報(bào)頭數(shù)據(jù)是指由特定的一個(gè)或者多個(gè)處理器內(nèi)的處理線程處理??偩€接口電路510可以只傳輸尋址到處理器530內(nèi)的處理線程的報(bào)頭數(shù)據(jù),并且忽略未尋址到處理器530內(nèi)的處理線程的其他數(shù)據(jù)。例如,總線接口電路510可以包含預(yù)定的或硬編碼的值,在軟件中或者在與總線電路510關(guān)聯(lián)的硬件中,預(yù)定的或硬編碼的值是處理器530內(nèi)的處理線程的地址??偩€接口電路510可以定期地或不斷地監(jiān)視通過用于地址的水平和豎直連接器505傳輸?shù)臄?shù)據(jù)。當(dāng)檢測(cè)到地址時(shí),總線接口電路510可以將與地址關(guān)聯(lián)的報(bào)頭數(shù)據(jù)緩沖到處理器530,并且使用線程電路520將數(shù)據(jù)從緩沖器傳輸?shù)教幚砥?30。線程電路520維護(hù)與執(zhí)行處理器530中的各種任務(wù)關(guān)聯(lián)的一個(gè)或多個(gè)程序計(jì)數(shù)器。在某些實(shí)施例中,線程電路520從總線接口電路510接收數(shù)據(jù),并且基于它維護(hù)的程序計(jì)數(shù)器中的一個(gè)或者多個(gè)程序計(jì)數(shù)器確定適當(dāng)?shù)臅r(shí)間以發(fā)送該數(shù)據(jù)到處理器530。以這種方式,調(diào)度電路500可以允許器件的處理器、可編程邏輯元件以及數(shù)據(jù)總線按照不同時(shí)鐘速度操作,因此打破在與網(wǎng)絡(luò)總線關(guān)聯(lián)的組件和處理器時(shí)鐘速度之間的任何定時(shí)或時(shí)鐘依賴。
[0065]在某些實(shí)施例中,可以使用異步通信的任何合適的方法來(lái)在器件的可編程邏輯元件和處理器530之間發(fā)送數(shù)據(jù)。在某些實(shí)施例中,調(diào)度電路500的功能可以由兩個(gè)或者更多個(gè)處理器的分組而非調(diào)度電路500來(lái)實(shí)現(xiàn)。處理器的這些分組可以標(biāo)識(shí)哪個(gè)處理器發(fā)送從器件的水平和豎直導(dǎo)體接收(即從可編程邏輯元件傳輸)的數(shù)據(jù),并將數(shù)據(jù)分配到所標(biāo)識(shí)的處理器??梢灶愃朴诒O(jiān)視以上關(guān)于總線接口電路510描述的程序而確定這種識(shí)別。
[0066]在某些實(shí)施例中,調(diào)度電路500可以包括程序指令存儲(chǔ)器(未示出),其可以包括外部存儲(chǔ)器的任何合適的組合。在某些實(shí)施例中,可以在操作期間修改器件上的處理器(比如處理器530)的指令集以使得它們被重新配置具有新指令集。根據(jù)新的或者根據(jù)正則表達(dá)式(regex)的更新的規(guī)則,這一新指令集可以允許器件實(shí)現(xiàn)新的或者不同的功能,比如檢查數(shù)據(jù)。
[0067]在這樣的實(shí)施例中,程序指令存儲(chǔ)器可以檢測(cè)用于處理器中的一個(gè)或者多個(gè)處理器的新操作模式。例如,程序指令存儲(chǔ)器可以包含用于在水平和豎直連接器505上監(jiān)視數(shù)據(jù)包的指令??梢酝ㄟ^數(shù)據(jù)包的包報(bào)頭標(biāo)識(shí)的某些數(shù)據(jù)包可以包含控制包,該控制包包含用于重新配置具有新功能或者更新的功能的處理器530的指令。通過定期或連續(xù)監(jiān)視水平和豎直連接器以匹配控制包報(bào)頭,總線接口電路510可以監(jiān)視這些控制包。響應(yīng)于檢測(cè)到新操作模式,處理器530的操作可以被停止。例如,一旦總線接口電路510檢測(cè)到控制包報(bào)頭,則它可以緩沖該包的有效載荷數(shù)據(jù)并將有效載荷數(shù)據(jù)傳送到線程電路520。線程電路520然后可以執(zhí)行處理器530的線程或者流水線的創(chuàng)建、執(zhí)行或者插入指令中的一個(gè)或者多個(gè)指令,這使得處理器530停止操作并沖掉所有未決指令。線程電路520然后可以從總線接口電路510中的緩沖器向處理器530傳送控制包的有效載荷,該控制包包含用于重新配置處理器530的指令。在某些實(shí)施例中,控制包的報(bào)頭中信息可以針對(duì)處理器的分組,比如器件上的一列或者多列中的處理器的分組。在這樣的實(shí)施例中,對(duì)于器件上的使用每個(gè)處理器的關(guān)聯(lián)的總線接口電路的每個(gè)針對(duì)的處理器,上述過程可以基本上并行發(fā)生。
[0068]在某些實(shí)施例中,可以處理接收的包以增強(qiáng)網(wǎng)絡(luò)安全性。例如,含有用于HTTP協(xié)議的URL的TCP流的第一部分可能需要被阻止以防止垃圾郵件或病毒。為了實(shí)現(xiàn)這種增強(qiáng)的安全性,可以使用深度包檢查。深度包檢查操作檢查包本身的有效載荷?;诖鎯?chǔ)在TCAM存儲(chǔ)器137 (圖1A)中、編碼到本地存儲(chǔ)器、或者作為器件100 (例如,可編程邏輯元件130)本身的硬件中編譯的正則表達(dá)式的規(guī)則,深度數(shù)據(jù)包檢查操作可以包括正則表達(dá)式。在其他實(shí)施例中,基于在器件的輸入(例如,入口塊210 (圖2))處接收的編程文件,調(diào)度塊230 (圖2)可以重新配置該器件。一旦接收了編程文件,則與正則表達(dá)式處理關(guān)聯(lián)的處理器270的一個(gè)或者多個(gè)分組可以被關(guān)閉、重新配置和重新啟動(dòng)。
[0069]圖6是根據(jù)本發(fā)明的實(shí)施例的用于重新配置混合可編程邏輯器件100 (圖1)的電路。圖6是圖1的增強(qiáng)的剪切視圖。外部快閃存儲(chǔ)器控制器610可以使用任何合適的外部設(shè)備或者軟件(比如由加利福尼亞的圣何塞的Altera公司所提供的MAX? II器件)由編程文件填充。外部快閃存儲(chǔ)器控制器310可以使用任何合適的傳輸協(xié)議將這些文件傳輸?shù)焦苣_605。一旦調(diào)度塊230檢測(cè)到已經(jīng)接收到編程文件,它就將它們傳輸?shù)綄⒈恢匦屡渲镁哂行碌幕蛘吒碌恼齽t表達(dá)式的處理器150 (或者處理器270)。在某些實(shí)施例中,控制區(qū)域塊620可以通過發(fā)送控制信號(hào)到針對(duì)重新配置的處理器來(lái)有助于處理器的重新配置。
[0070]圖7是根據(jù)本發(fā)明的實(shí)施例的包分類功能200 (圖2)的出口塊220的更詳細(xì)視圖。出口塊220可以從基本上類似于包互連405 (圖4)的包互連705接收數(shù)據(jù),并將其傳輸?shù)街嘏判驂K710。重排序塊710重新組裝具有對(duì)應(yīng)的有效載荷數(shù)據(jù)的報(bào)頭數(shù)據(jù)以形成處理的包。在某些實(shí)施例中,重排序塊710可以從處理器270 (圖2)接收指示該特定報(bào)頭數(shù)據(jù)已經(jīng)被處理的控制信號(hào)。重排序塊710然后可以請(qǐng)求對(duì)應(yīng)于來(lái)自包緩沖器340 (圖3)的特定報(bào)頭數(shù)據(jù)的有效載荷數(shù)據(jù)。一旦報(bào)頭數(shù)據(jù)與相應(yīng)的有效載荷數(shù)據(jù)匹配,則完整的包被重排序以跟隨與到達(dá)入口塊210的包相同的TCP流。重排序的包然后被發(fā)送到后處理塊720。在后處理塊720處,可以使用錯(cuò)誤控制算法或任何其他合適的后處理算法來(lái)加密、處理重排序的包。該包然后由FIF0730復(fù)用以輸出MAC740,并被路由到它們的最終目的地。
[0071]在某些實(shí)施例中,處理器150 (圖1A)或者270 (圖2)可以與流量管理電路(比如排隊(duì)網(wǎng)絡(luò)或隊(duì)列管理器)通信,以便將數(shù)據(jù)饋送到入口塊210。這樣的流量管理電路可以包括由加利福尼亞的圣何塞的Altera公司的Stratix?系列FPGA中實(shí)現(xiàn)和由Altera公司所售的Altera流量管理參考設(shè)計(jì)。
[0072]圖8是根據(jù)本發(fā)明實(shí)施例的用于路由數(shù)據(jù)包到混合可編程邏輯器件(比如器件100 (圖1A))中的處理器的例示性過程。過程800開始于步驟810。在步驟810,數(shù)據(jù)包被接收。這些包可包含按照任何合適的包幀格式的控制數(shù)據(jù)、報(bào)頭數(shù)據(jù)和有效載荷數(shù)據(jù)。在某些實(shí)施例中,可以在器件的收發(fā)器處接收數(shù)據(jù)包,比如關(guān)于高速收發(fā)器212 (圖2)描述的那些。過程800進(jìn)行到步驟820。在步驟820,用唯一地址標(biāo)記每個(gè)包的報(bào)頭數(shù)據(jù)。唯一地址可以標(biāo)識(shí)處理器270 (圖2)和在處理器270中的特定處理器上運(yùn)行的處理線程之間的特定處理器。這一地址然后可以由處理器270使用以確定它們是否應(yīng)該處理它們接收的特定報(bào)頭數(shù)據(jù),使用什么特定處理線程,或者它們是否應(yīng)該忽略特定報(bào)頭數(shù)據(jù)。在某些實(shí)施例中,可基于哪些處理線程可用于處理數(shù)據(jù)來(lái)指派唯一地址。例如,唯一地址可以標(biāo)識(shí)當(dāng)前未處理數(shù)據(jù)的處理線程的列表中的第一個(gè)處理線程。在某些實(shí)施例中,處理線程的這一列表可以由器件100維護(hù)。過程800進(jìn)行到步驟830。
[0073]在步驟830,可通過共享的互連將報(bào)頭數(shù)據(jù)和關(guān)聯(lián)的唯一地址傳輸?shù)教幚砥?70。這一共享的互連可以是到相同數(shù)據(jù)總線上的處理器270中的每個(gè)處理器的廣播數(shù)據(jù)。在某些實(shí)施例中,共享的互連可以在關(guān)于圖5所討論的水平和豎直連接器505中實(shí)現(xiàn)。因此,處理器270中的每個(gè)處理器可以接收通過共享的互連傳輸?shù)膱?bào)頭數(shù)據(jù)。過程800進(jìn)行到步驟840。在步驟840,每個(gè)處理器可以監(jiān)視在共享的互連上接收的報(bào)頭數(shù)據(jù)以確定它是否被用處理器或者在該處理器上運(yùn)行的特定處理器線程的唯一地址標(biāo)記。如果特定的報(bào)頭數(shù)據(jù)被用匹配處理器或者在該處理器上運(yùn)行的特定處理器線程的地址的唯一地址標(biāo)記,則過程800進(jìn)行到步驟850。否則,處理器可以忽略(即不存儲(chǔ))特定的報(bào)頭數(shù)據(jù)并且步驟840可以由處理器重復(fù)直到檢測(cè)到匹配。在步驟850,如果報(bào)頭被用和該處理器或者在該處理器上運(yùn)行的特定處理器線程的地址匹配的唯一地址標(biāo)記,則在特定處理器的本地存儲(chǔ)器中存儲(chǔ)報(bào)頭數(shù)據(jù)。根據(jù)一個(gè)或者多個(gè)包處理任務(wù),報(bào)頭數(shù)據(jù)然后可以由與特定處理器關(guān)聯(lián)的可編程邏輯元件處理。在某些實(shí)施例中,這些可編程邏輯元件可包括關(guān)于FPGA結(jié)構(gòu)250 (圖2)所討論的硬件加速塊。此外,這些包處理任務(wù)可以類似于關(guān)于處理器270所描述的那些包處理任務(wù)。過程800然后結(jié)束。
[0074]將理解的是,前述僅僅例示了本發(fā)明的原理,并且可以由本領(lǐng)域技術(shù)人員做出各種修改而不脫離本發(fā)明的范圍和精神。本領(lǐng)域技術(shù)人員將領(lǐng)會(huì)到本發(fā)明可以由除了所描述實(shí)施例以外的實(shí)施例實(shí)現(xiàn),提出所述實(shí)施例是為了例示的目的而非限制,并且本發(fā)明僅由所附的權(quán)利要求限制。
【權(quán)利要求】
1.一種混合可編程邏輯器件,包括: 收發(fā)器,所述收發(fā)器接收數(shù)據(jù)包,其中所述數(shù)據(jù)包包括報(bào)頭數(shù)據(jù)和有效載荷數(shù)據(jù); 可編程邏輯元件,其中所述可編程邏輯元件的第一部分提供硬件加速功能; 處理器,所述處理器與可編程邏輯元件交錯(cuò),其中所述處理器中的每個(gè)處理器使用所述硬件加速功能和處理線程來(lái)處理接收的所述報(bào)頭數(shù)據(jù),并且所述可編程邏輯元件的第二部分調(diào)度報(bào)頭數(shù)據(jù)向所述處理線程的分配。
2.根據(jù)權(quán)利要求1所述的器件,還包括本地存儲(chǔ)器,所述本地存儲(chǔ)器存儲(chǔ)所述有效載荷數(shù)據(jù),并且其中可編程邏輯的所述第二部分還被配置為: 將接收的所述數(shù)據(jù)包組幀為報(bào)頭數(shù)據(jù)和有效載荷數(shù)據(jù); 將所述有效載荷數(shù)據(jù)緩沖到所述本地存儲(chǔ)器中; 確定哪些處理線程可用;以及 基于所述確定,向可用處理線程路由所述有效載荷數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的器件,其中可編程邏輯的所述第二部分還被配置為: 確定是否不存在可用處理線程;以及 響應(yīng)于所述確定,丟棄接收的所述數(shù)據(jù)包中的一個(gè)或者多個(gè)所述數(shù)據(jù)包。
4.根據(jù)權(quán)利要求1所述的器件,其中所述硬件加速功能包括路由表的維護(hù)、有效載荷數(shù)據(jù)的加密、有效載荷數(shù)據(jù)的壓縮和IP表查找中的一個(gè)或者多個(gè)。
5.根據(jù)權(quán)利要求1所述的器件,其中所述可編程邏輯元件的第三部分: 重新組裝經(jīng)處理的報(bào)頭數(shù)據(jù)與關(guān)聯(lián)的有效載荷數(shù)據(jù)以形成重新組裝的包;以及 基于接收的所述包的TCP流ID,維護(hù)所述重新組裝的包的順序。
6.根據(jù)權(quán)利要求1所述的器件,其中所述處理器中的每個(gè)處理器還包括: 本地存儲(chǔ)器; 存儲(chǔ)器接口,所述存儲(chǔ)器接口: 從可編程邏輯元件的所述第二部分接收?qǐng)?bào)頭數(shù)據(jù); 使用直接存儲(chǔ)器訪問將接收的所述報(bào)頭數(shù)據(jù)存儲(chǔ)在所述本地存儲(chǔ)器中,其中所述處理器直接從所述本地存儲(chǔ)器訪問存儲(chǔ)的所述報(bào)頭數(shù)據(jù)以執(zhí)行至少一個(gè)包處理任務(wù)。
7.根據(jù)權(quán)利要求6所述的器件,其中所述處理器的每個(gè)處理器線程與地址關(guān)聯(lián),并且所述存儲(chǔ)器接口: 針對(duì)與該處理線程關(guān)聯(lián)的附帶地址,監(jiān)視接收的所述報(bào)頭數(shù)據(jù);以及僅當(dāng)所述附帶地址和與該處理線程關(guān)聯(lián)的所述地址相匹配時(shí),將接收的所述報(bào)頭數(shù)據(jù)存儲(chǔ)在本地存儲(chǔ)器中。
8.根據(jù)權(quán)利要求1所述的器件,其中可編程邏輯元件的所述第二部分為每個(gè)報(bào)頭數(shù)據(jù)指派與可用處理線程關(guān)聯(lián)的唯一地址。
9.根據(jù)權(quán)利要求1所述的器件,還包括水平和豎直連接器,所述水平和豎直連接器包括固定邏輯元件。
10.根據(jù)權(quán)利要求9所述的器件,其中所述水平和豎直連接器在所述可編程邏輯元件的所述第二部分和所述處理器之間傳輸數(shù)據(jù)。
11.根據(jù)權(quán)利要求1所述的器件,其中所述處理器被物理地調(diào)節(jié)大小以使得所述處理器中的每個(gè)處理器的長(zhǎng)度、寬度或者高度中的至少一個(gè)等于所述可編程邏輯元件的相同物理尺寸的倍數(shù)。
12.根據(jù)權(quán)利要求1所述的器件,其中所述處理器中的每個(gè)處理器包括固定邏輯元件。
13.根據(jù)權(quán)利要求1所述的器件,其中可編程邏輯元件的所述第二部分向所述處理器的分組分配與相同TCP流關(guān)聯(lián)的報(bào)頭數(shù)據(jù)。
14.根據(jù)權(quán)利要求1所述的器件,還包括由所述處理器中的每個(gè)處理器共享的互連,所述互連在所述可編程邏輯元件的所述第二部分和所述處理器之間傳輸報(bào)頭數(shù)據(jù),其中所述處理器通過所述互連在廣播流中接收所述報(bào)頭數(shù)據(jù)。
15.一種混合可編程邏輯器件,包括: 收發(fā)器,所述收發(fā)器以第一速度接收數(shù)據(jù)包,其中所述數(shù)據(jù)包包括報(bào)頭數(shù)據(jù)和有效載荷數(shù)據(jù); 可編程邏輯元件,其中所述可編程邏輯元件的第一部分提供硬件加速功能; 處理器,所述處理器與所述可編程邏輯元件交錯(cuò),所述處理器以不同于所述第一速度的時(shí)鐘速度可操作;以及 調(diào)度電路,所述調(diào)度電路以關(guān)于所述時(shí)鐘速度異步的速率在所述收發(fā)器和處理器之間傳輸報(bào)頭數(shù)據(jù)。
16.根據(jù)權(quán)利要求15所述的器件,其中所述調(diào)度電路監(jiān)視接收的數(shù)據(jù)以檢測(cè)控制包,所述控制包包含用于重新配置所述處理器中的一個(gè)或者多個(gè)處理器的指令。
17.根據(jù)權(quán)利要求16所述的器件,其中所述處理器基于所述控制包中的所述指令來(lái)執(zhí)行深度包檢查。
18.一種用于在混合可編程邏輯器件中向處理器路由數(shù)據(jù)包的方法,其中所述處理器中的每個(gè)處理器包括本地存儲(chǔ)器并運(yùn)行處理線程,所述方法包括: 在收發(fā)器處接收包括報(bào)頭數(shù)據(jù)和有效載荷數(shù)據(jù)的數(shù)據(jù)包; 用與所述處理器中的一個(gè)處理器中的可用處理線程關(guān)聯(lián)的唯一地址來(lái)標(biāo)記每個(gè)報(bào)頭數(shù)據(jù); 在由所述處理器中的每個(gè)處理器共享的互連上,向所述處理器廣播所述報(bào)頭數(shù)據(jù)和唯一地址;以及 在每個(gè)處理器處: 針對(duì)與在所述處理器上運(yùn)行的處理線程關(guān)聯(lián)的唯一地址,監(jiān)視在共享的所述互連上接收的所述報(bào)頭數(shù)據(jù);以及 如果所述報(bào)頭被用與在所述處理器上運(yùn)行的處理線程關(guān)聯(lián)的所述唯一地址標(biāo)記,則將所述報(bào)頭數(shù)據(jù)存儲(chǔ)在所述處理器的所述本地存儲(chǔ)器中。
19.根據(jù)權(quán)利要求18所述的方法,其中所述混合可編程邏輯器件包括可編程邏輯元件和所述處理器,所述處理器和所述可編程邏輯元件交錯(cuò),還包括: 在每個(gè)處理器處,向執(zhí)行至少一個(gè)包處理功能的所述可編程邏輯元件的分組傳輸存儲(chǔ)的報(bào)頭數(shù)據(jù)。
20.根據(jù)權(quán)利要求19所述的方法,其中所述處理器和所述可編程邏輯元件直接從所述本地存儲(chǔ)器訪問存儲(chǔ)的所述報(bào)頭數(shù)據(jù)。
【文檔編號(hào)】G06F15/173GK104050143SQ201410093242
【公開日】2014年9月17日 申請(qǐng)日期:2014年3月13日 優(yōu)先權(quán)日:2013年3月14日
【發(fā)明者】M·D·赫頓, A·基爾科里斯 申請(qǐng)人:阿爾特拉公司