網絡處理器中的多內核互聯的制作方法
【專利摘要】一種網絡處理器包括用于處理數據包數據的多個處理器內核。為了為處理器內核提供對內存子系統的訪問,一個互連電路對處理器內核和L2高速緩存與其他內存設備之間的通信進行引導。這些處理器內核被分成若干組,每組共享一條單獨總線,并且該L2高速緩存被分成多個條,每個條可以訪問一條單獨的總線。該互連電路處理存儲和從跨多條總線從這些處理器內核檢索數據的請求,并處理從這些高速緩存條返回數據的響應。其結果是,該網絡處理器為多個處理器內核提供高帶寬內存訪問。
【專利說明】網絡處理器中的多內核互聯
[0001]相關申請
[0002]本申請2011年10月31日提交的美國申請13/285,629號申請的繼續申請并要求其優先權,該申請的整體教導通過引用結合于此。
【背景技術】
[0003]典型的網絡處理器對高級網絡協議的工作(如數據包處理操作)進行調度和排隊,并且在將數據包轉發到連接設備之前允許相對于所接收到的數據包內的高級網絡協議(例如,傳輸層和應用層)進行處理。通常由網絡處理器執行的功能包括數據包過濾、隊列管理和優先級、服務質量增強、以及訪問控制。通過利用特定于處理數據包數據的特征,網絡服務器可以優化聯網設備的接口。
【發明內容】
[0004]本發明的實施例提供了一種用于對網絡處理器中的數據傳送和處理進行控制的系統。互連電路引導一組多個處理器內核與高速緩存之間的通信。多條內存總線各自將一組對應的多個處理器內核連接到該互連電路上。該高速緩存被分成多個條,其中每個條通過一條單獨總線連接到該互連電路上。該互連電路提供了將從該多個處理器內核接收的請求分布在這些高速緩存條之間。
[0005]在進一步的實施例中,該互連電路可以通過修改這些請求的一個地址部分來轉換這些請求。此轉換可以包括在每個請求上執行一個散列函數,這提供了這些請求在該多個條之間的一個偽隨機分布。該互連電路或這些高速緩存條可以進一步被配置成用于維持多個標簽,這些標簽指示一個偶聯到該多個處理器內核上的LI高速緩存的狀態。該互連電路將所接收的請求內的標簽引導至多個信道,由此同時處理多個標簽。
[0006]在又進一步的實施例中,該互連電路可以包括多個數據輸出緩沖器。這些數據輸出緩沖器中的每個緩沖器可以從該多個條中的每個條接收數據,和通過這些內存總線中的一條對應內存總線輸出數據。該互連電路還可以包括多個請求緩沖器,其中,這些請求緩沖器中的每個緩沖器從每組處理器接收多個請求并將該請求輸出到這些條中的一個對應的條。
[0007]在進一步的實施例中,一個或多個橋接電路可以偶聯到這些內存總線上。這些橋接電路可以將這些處理器內核連接到一個或多個片上協處理器。進一步地,為了保持內存一致性,這些高速緩存條可以延遲將一個提交信號傳輸至該多個處理器內核。然后,響應于接收到對已經將無效信號傳輸至該多個處理器內核中的全部內核的一個指示,這些高速緩存條傳輸該提交信號。該互連電路和多條內存總線可以被配置成用于控制無效信號在比到達該多個條之一的提交所需的時間更少的時間到達一個LI高速緩存并控制一個后續信號到達接收該無效信號的該多個處理器內核之一。
【專利附圖】
【附圖說明】[0008]根據本發明的示例性實施例的以下更具體的說明,上述內容將是明顯的,如在這些附圖中展示的,其中貫穿這些不同的視圖的相同的參照字符是指相同的部分。這些圖不一定是按比例繪制,而是著重展示本發明的實施例。
[0009]圖1為一個框圖,展示了一個網絡服務處理器,可以在該網絡服務處理器中實現本發明的實施例。
[0010]圖2為一個實施例中的一致內存互聯(CMI)電路和相關聯的組件的框圖。
[0011]圖3為一個框圖,展示了一個實施例中的對至這些高速緩存條的請求進行的處理。
[0012]圖4為一個框圖,展示了到這些高速緩存條的存儲請求中實現的緩沖器。
[0013]圖5為一個框圖,展示了在這些高速緩存條輸出的數據中實現的緩沖器。
[0014]圖6為一個實施例中的高速緩存條的框圖。
【具體實施方式】
[0015]在詳細說明本發明的示例實施例之前,下面緊接著描述了一種可以在其中執行這些實施例的示例網絡安全處理器,以幫助讀者理解本發明的創造性特征。
[0016]圖1是一個框圖,展示了一個網絡服務處理器100。該網絡服務處理器100使用至少一個處理器內核120提供高應用性能。
[0017]該網絡服務處理器100處理在所接收的數據包中封裝的開放系統互聯網絡L2-L7層協議。如本領域技術人員所熟知的,開放系統互聯(OSI)參考模型定義了七層網絡協議層(L1-7)。物理層(LI)表示將一臺設備連接到一個傳輸媒介的實際接口,包括電氣接口及物理接口。數據鏈路層(L2)執行數據組幀。網絡層(L3)將數據格式化為數據包。傳輸層(L4)處理端到端的傳輸。會話層(L5)管理設備之間的通信,例如,無論通信是半雙工的還是全雙工的。表現層(L6)管理數據格式化及表現,例如,語法、控制代碼、特殊圖形及字符集。應用層(L7)允許用戶之間的通信,例如,文件傳送及電子郵件。
[0018]該網絡服務處理器100可能為上層網絡協議(例如,L4-L7)規劃和排列工作(包處理操作),并且允許在接收到的待執行的數據包中進行上層網絡協議的處理,以便以線速轉發數據包。線速是在傳輸和接收數據的網絡上傳送數據的速率。通過處理這些協議來以線速轉發這些數據包,該網絡服務處理器不會降低網絡數據傳送速率。
[0019]多個接口單元122接收到一個數據包以進行處理。PCI接口 124也可以接收一個數據包。這些接口單元122通過檢查所接收到的數據包中包括的L2網絡協議報頭中的各種字段來執行所接收到的數據包的預處理,并且然后將該數據包轉發到一個數據包輸入單元126。至少一個接口單元122a可以從多個X附接單元接口(XAUI)、精簡X附接單元接口(RXAUI)、或系列千兆媒體獨立接口(SGMII)接收數據包。至少一個接口單元122b可以從一個茵特拉肯接口(ILK)接收連接。
[0020]該數據包輸入單元126執行所接收數據包中包括的網絡協議頭(例如L3及L4頭)的進一步的預處理。該預處理包括對于TCP/用戶數據包協議(UDP) (L3網絡協議)的校驗和檢查。
[0021]一個空閑池分配器128維護多個指針池,以釋放2級高速緩存內存130及外部DRAM108中的內存。該數據包輸入單元126使用這些指針池中的一個來將所接收到的數據包數據存儲在2級高速緩存內存130或外部DRAM108中,并且使用這些指針池中的另一個來為這些處理器內核120分配工作條目隊列。
[0022]數據包輸入單元126然后將數據包數據寫入2級緩存器130或外部DRAM108中的緩沖器中。優選地,該數據包數據被以便于在這些處理器內核120中的至少一個中執行的高層軟件的格式寫入這些緩存器中。因此,促進了高級網絡協議的進一步處理。
[0023]網絡服務處理器100還可包括一個或多個特定用途協處理器。當包括在內時,這些協處理器將一些處理從這些內核120中分流,由此使得該網絡服務處理器能夠實現高通量數據包處理。例如,提供了一個壓縮/解壓縮協處理器132,其專用于執行所接收到的數據包的壓縮及解壓縮。協處理單元的其他實施例包括RAID/De-Dup單元162,這加快了磁盤存儲應用程序的數據分塊及數據復制處理。
[0024]另一個協處理器是超級有限自動機(HFA)單元160,該單元包括多個專用HFA線程引擎,這些引擎被適配成用于加快防病毒、入侵檢測系統及其他內容處理應用程序所必需的模式和/或特征匹配。使用一個HFA單元160,模式和/或特征匹配得到加快,例如被以超過每秒萬兆比特的倍數的速率執行。該HFA單元160在一些實施例中可包括確定型有限自動機(DFA)、非確定型有限自動機(NFA)、或HFA算法單元中的任一個。
[0025]一個I/O接口 136管理整體協議及仲裁并且提供一致的I/O劃分。該I/O接口136包括一個I/O橋138及一個獲取及添加單元140。該I/O橋包括兩個橋,一個I/O數據包橋(IOBP) 138a及一個I/O總線橋(IOBN) 138b。I/O數據包橋138a被配置成用于管理整體協議及仲裁并且提供主要與數據包輸入及輸出相一致的I/O劃分。I/O總線橋138b被配置成用于管理整體協議及仲裁并且提供主要與該I/O總線相一致的I/O劃分。該獲取及添加單元140中的寄存器用來維持那些用于通過一個數據包輸出單元146轉發已處理的數據包的輸出隊列的長度。I/O橋138包括多個緩沖隊列,用于存儲有待在一個一致內存互聯(CMI) 144、一個I/O總線142、數據包輸入單元126及數據包輸出單元146之間傳送的信肩、O
[0026]各種各樣的I/O接口(M10)116可包括多個輔助接口,如通用I/0(GP10)、閃存、IEEE802 二線管理接口(MDIO)、串行管理中斷(SMI)、通用異步收發兩用機(UART)、精簡千兆比特媒體獨立接口(RGMII)、媒體獨立接口(MII)、二線串行接口(TWSI)及其他串行接□。
[0027]網絡服務提供者100還可包括一個支持MIPS EJTAG標準的聯合測試行動組(JTAG)接口 123。根據JTAG及MIPS EJTAG標準,該網絡服務提供者100內的多個內核將各自具有一個內部測試訪問端口( “TAP”)控制器。這允許對該網絡服務提供者100的多核調試支持。
[0028]一個調度/同步及順序(SSO)模塊148為這些處理器內核120排列并調度工作。通過將一個工作條目隊列加入到一個隊列來排列工作。例如,該數據包輸入單元126為每次數據包的到來添加一個工作條目隊列。一個定時器單元150用來為這些處理器內核120
調度工作。
[0029]處理器內核120從SSO模塊148請求工作。SSO模塊148為這些處理器內核120的其中之一選擇(即,調度)工作,并且將一個指針返回到該工作條目隊列以向該處理器內核120描述該項工作。[0030]處理器內核120依次包括指令高速緩存152、I級數據高速緩存154、及加密加速156。在一個實施例中,該網絡服務處理器100包括32個超標量精簡指令集計算機(RISC)型處理器內核120。在一些實施例中,這些超標量RISC型處理器內核120各自包括MIPS643版處理器內核的一個擴展。在一個實施例中,這些超標量RISC型處理器內核120各自包括一個cnMIPS II處理器內核。
[0031]2級高速緩存內存130及外部DRAM108被所有的處理器內核120及I/O協處理器設備共享。每個處理器內核120由該CMI144偶聯到該2級高速緩存內存130。該CMI144是用于這些處理器內核100、該I/O接口 136和該2級高速緩存內存130及控制器之間的所有內存及I/O事務的通信信道。在一個實施例中,該CMI144可擴展到32個處理器內核120,通過完全寫入支持完全一致的I級數據緩存154。優選地,該CMI144被高度緩沖了區分I/O優先級的能力。該CMI偶聯到一個軌跡控制單元164,該軌跡控制單元被配置成用于捕獲總線請求,這樣軟件隨后可以讀取該請求并且在該CMI上生成事件順序的軌跡。
[0032]2級高速緩存內存控制器131維持內存參考一致性。它針對每個填寫請求返回一個塊的最新副本,無論該塊是存儲在2級高速緩存內存130中、在外部DRAM108中、還是在“飛行中”。它還針對每個處理器內核120中的數據緩存154存儲了這些標簽的復制本。它將高速緩存-塊-存儲請求的地址與這些數據-高速緩存標簽比較,并且每當一個存儲指令通過該I/O接口 136來自另一個處理器內核或來自一個I/O部件時使一個數據-高速緩存標簽對于一個處理器內核120無效(兩個副本)。
[0033]在一些實施例中,多個DRAM控制器133支持高達128千兆字節的DRAM。在一個實施例中,該多個DRAM控制器包括四個DRAM控制器,這些DRAM控制器各自支持32千兆字節的DRAM。優選地,每個DRAM控制器133支持到DRAM108的一個64比特接口。此外,DRAM控制器133可以支持優選的協議,如DDR-1II協議。
[0034]在這些處理器內核120已經處理一個數據包后,數據包輸出單元146從2級高速緩存內存130、108中讀取該數據包數據,執行L4網絡協議后處理(例如,生成一個TCP/UDP校驗和),通過這些接口單元122或PCI接口 124轉發該數據包并且釋放該數據包使用的L2高速緩存內存130/DRAM108。
[0035]這些DRAM控制器133管理發向/來自DRAM108的飛行中事務(負載/存儲)。在一些實施例中,這些DRAM控制器133包括四個DRAM控制器,該DRAM108包括四個DRAM內存,并且每個DRAM控制器連接到一個DRAM內存。DFA單元160在一個旁路高速緩存訪問路徑135上直接偶聯到這些DRAM控制器133。該旁路高速緩存訪問路徑135允許該HFA單元不使用2級高速緩存內存130而直接從內存讀取,這可以提高HFA操作的效率。
[0036]本發明的實施例可以在圖1中所示的網絡服務處理器100中實現,并且其可以更具體地針對數據包輸入單元(PKO) 126以及接口單元122。以下參照圖2至圖4進一步詳細描述了示例實施例。
[0037]圖2為一個實施例中的一致內存互聯(CMI)電路244和相關聯的組件的框圖。CMI244為用于對多組處理器內核220A-D、I/0橋238A-B、與2級高速緩存內存條230A-D之間的內存和I/O事務進行引導的通信信道和控制電路。CMI244可以在網絡處理器100內被實現為CMI144,其中,處理器內核220A-D被實現為處理器內核120,I/O橋238A-B被實現為I/O橋138a-b,并且2級高速緩存內存條230A-D被實現為2級高速緩存130。[0038]隨著網絡處理器中所實現的處理器內核的數量的增加,提供如此大量來源的內存子系統的受控訪問成為問題。具有大量處理器內核(例如,32個)的網絡處理器中存在的一個第一挑戰是如何將將請求從這些內核傳送至內存系統。之前的設計使用了環形總線,該環形總線可以產生更高的(和可變的)延遲。設計多內核芯片的一個第二挑戰是服務那么大量內核生成的大量請求。一個第三類似的挑戰涉及處理器內核的LI標簽(下文中被稱為復制標簽,或DUT)的結構,該結構必須容納每個查找請求的要求并可能對DUT進行更新。第四,必須將響應數據從高速緩存傳送回FILL總線。在每個高速緩存條具有一次僅服務一條總線請求的能力并且每個請求需要多達4個周期的情況下,可能沒有充分利用FILL總線。一個第五挑戰涉及與總線存儲請求相關聯的數據,必須將該數據從請求源傳送至將服務該請求的高速緩存條。此問題可與該第五挑戰(涉及響應數據)比較,但其中來源和目的地顛倒。第六,這些處理器內核需要訪問這些I/O橋的另一側上的設備。最后,一個第七挑戰涉及貫穿該存儲器子系統保持內存一致性。
[0039]本發明的實施例提供了用于通過四個一致內存總線(CMB) 225A-D集對這些多個處理器內核和該L2高速緩存和內存子系統之間的事務進行處理。每個CMB225A-D包括多個單獨ADD/ST0RE/C0MMIT/FILL總線。四個CMB225A-D的整個分組和I/O橋總線10C/10R通過一致內存互聯(CMI) 244連接在一起。同樣,四個附加CMB235A-D包括多個單獨ADD/STORE/COMMIT/FILL總線,并且將這些高速緩存條230A-D連接到CMI244。
[0040]這些CMB225A-D各自可以支持一組對應的處理器內核220A-D。在本示例實施例中,每組處理器內核220A-D包括8個處理器內核,但其可以被修改以包括附加或更少的內核。為了提供對網絡處理器的I/O部分的內存訪問,總線225A-B其中的兩條總線附接了一個IO橋(IOB) 238A-B。該10B0238A可以用于通過專用I/O命令(IOC)和I/O響應(IOR)總線為處理器內核220A-D提供對NCB側I/O設備的訪問。10B0238A和10B1238B兩者可以通過分別與處理器內核220A-B共享CMB總線225A-B來訪問該L2高速緩存和內存子系統。[0041 ] 高速緩存條230A-D中的每個條可以包括一個2級高速緩存控制器(L2C),該高速緩存控制器控制CMB225A-D與高速緩存條230A-D之間的命令和響應的傳送,同時維持該系統的共享內存一致性模型。以下參照圖6進一步詳細描述了該L2C。
[0042]通過將處理器內核220A-D和I/O橋238A-B分成四組,由單個CMB225A-D服務每組,可以使用較低的延遲仲裁邏輯。僅在一組處理器內核220A-D(和I/O橋238A-B,在帶有附接IO橋的CMB的情況下)之間做出本地仲裁決定,作為覆蓋小得多的物理區域的源。仲裁請求和那些請求的同意可以在一個單個周期內完成,如果試圖在網絡處理器的所有處理器內核和I/O橋之間進行仲裁,這將是一個不可實現的速率。此外,所有CMB225A-D可以用相同低、固定延遲連接到該互連電路中的請求緩沖器。其結果是,以低延遲將請求從這些內核傳送至該內存系統。
[0043]為了服務該大量處理器內核生成的大量請求,該L2高速緩存被分成四個單獨的高速緩存條230A-D。其結果是,可以服務的請求的帶寬變成四倍。可以使用互斥或(XOR)功能使每個請求的物理地址散列,該互斥或功能被配置成用于為所有常見的地址跨步產生高速緩存塊跨這4個高速緩存條的近隨機分布。這將CMB請求的空間局部性轉換成跨這四個高速緩存條230A-D的近隨機分布,從而允許每個周期更好地利用四次標簽查找。相反地,如果該L2高速緩存反而是一個一致結構,每個周期僅發生一次標簽查找,從而嚴重限制了L2高速緩存帶寬。其結果是,該網絡處理器可以服務該大量內核生成的大量請求。以下參照圖3描述了請求處理和引導的一種示例配置。
[0044]在處理數據請求時,CMI244必須查找和可能更新DUT。在4條總線饋送請求的情況下,該過程每個周期需要多達4次DUT查找。為了容納多次DUT查找,可以將DUT分成8個集合(也被稱為“信道”),每個集合每個周期可以執行一次查找。互連電路244每個周期能夠將多達4個CMB請求開槽(slot)至該DUT,其條件是它們需要使用不同的集合。此配置提供2:1的資源對請求的比率,從而增加了可以在同一周期服務多個請求的幾率。其結果是,網絡處理器內核的LI標簽可以容納每個請求的要求以查找和更新DUT。以下參照圖3進一步詳細描述了對DUT進行更新的過程。
[0045]通過一條對應的總線225A-D和CMI244將存儲或檢索數據的請求從一組處理器內核220A-D中的一個內核傳送至將對該請求進行服務的高速緩存條230A-D。為了對來自該多個處理器內核的請求進行服務,從存儲源(或者I/O橋238A-B或者處理器內核220A-D)讀取存儲數據的過程可以與寫入高速緩存條230A-D存儲緩沖器的過程解耦。這可以使用四個2讀取/2寫入端口自定義數據緩沖器來完成。每個緩沖器可以從兩個CMB225A-D總線接收數據,并將數據發送至兩個高速緩存條230A-D。此配置允許每個CMB225A-DST0RE總線在每個周期期間提供給定量值(例如,128字節)存儲數據,并允許每個高速緩存條每個周期接收相同量值(例如,128字節)的存儲數據,而獨立于需要提供或接收該數據的具體CMB225A-D或高速緩存條230A-D。此配置CMB存儲數據請求的仲裁和針對寫入高速緩存條230A-D緩沖器的仲裁,由此允許充分利用可用的總線資源。其結果是,充分利用了高速緩存條的數據輸入容量。以下參照圖4詳細描述了數據緩沖器的配置。
[0046]高速緩存條提供對請求的響應,并且該響應必須從該高速緩存條傳送回CMB235A-D FILL總線。每個高速緩存條230A-D可能僅能夠一次服務一個CMB請求,并且每個請求需要多達4個周期。為了保持充分利用這些CMB235A-D FILL總線,高速緩存條230A-D FILL緩沖器讀取端口可以與CMB235A-D FILL總線解耦,并且可以在互連電路244中實現一個3寫入端口可繞過緩沖器以預獲取發往CMB235A-D FILL總線的數據。這允許多達3個高速緩存條讀出響應數據并對其進行排隊以發送至同一總線。這些緩沖器提供用于協調這些CMB235A-D FILL總線和這些高速緩存條230A-D FILL端口以使利用最大化。其結果是,充分利用高速緩存條的數據輸出容量。以下參照圖5進一步詳細描述了 FILL緩沖器的此配置。
[0047]除了高速緩存條230A-D以外,處理器內核220A-D還需要訪問10B238A-B的另一側上的設備(例如,圖1中的網絡處理器100的I/O總線142上的接口單元122a-b和其他設備)。通過10B0238A的專用I/O命令(IOC)總線提供此訪問。這些CMB235A ADD/STORE總線從處理器內核220A-D提供請求,并且互連電路244可以將那些請求轉化成該IOC總線所需的形式。此外,互連電路244必須針對該單個IOC總線處理仲裁。當I/O橋238A提供響應數據時,其將該數據放在I/O響應(IOR)總線上。然后,互連電路244接收此數據,對其進行適當格式化,并通過該CMB235A-D FILL總線將該數據返回至請求內核。其結果是,為處理器內核220A-D提供了對跨10B238A-B的設備的訪問。
[0048]為了保持內存子系統一致性,鑒于多總線結構,必須考慮存儲請求所生成的無效信號和提交信號。當處理器內核220A-D或I/O設備(通過I/O橋238A-B)請求存儲操作時,其從對應的高速緩存條230A-D的L2C接收一個提交信號以通知其他內核或I/O設備現在能夠從那個存儲器看到數據。通過針對其自己的存儲器等待所有突出的提交信號,可以確定其更早的存儲將在后續存儲之前可見。這提供了一種用信號通知其他內核和設備它們可以繼續進行的機制。因為多個內核可以在與生成存儲的內核/設備不同的總線上,該提交信號與其相關聯的LI無效信號之間存在一種重要的排序關系。如果被發送信號的內核在其接收到無效信號之前接收到該信號,其可以看到舊數據,從而引起內存系統中失去一致性。通過抑制傳輸該提交信號直到首先確認所有總線的無效信號已經被發送至跨所有總線225A-D的處理器內核220A-D,高速緩存條230A-D的L2C可以防止此一致性喪失。在一些實施例中,該電路可以被配置成用于保證這些無效信號在比到達該存儲源的提交所需的時間更少的時間到達該LI并保證一個后續信號到達接收該無效信號的內核。其結果是,保持了內存一致性。[0049]圖3為一個框圖,展示了一個實施例中的對至這些高速緩存條的請求進行的處理。如以上參照圖2所述,這些內核側CMB225A-D和這些高速緩存側CMB235A-D兩者包括多條ADD總線,這些總線攜帶發起內存事務的地址和控制信息。這些事務的來源可以是處理器內核220A-B和10B238A-B。如圖3中所示,CMI互連電路244提供用于處理地址和將其從內核側CMB225A-D轉發至高速緩存側CMB235A-D。此處,參照圖2,在CMB225A-D的與高速緩存條230A-D(也被稱為“TAD” (TAD0-TAD1))的任一 FIFO緩沖器對應的ADD總線(ADD0-ADD3)處接收請求的地址。這四條ADD總線中的任一總線可以將事務引導至任一高速緩存條230A-D。無論從哪一條ADD總線發起該事務,請求的地址選擇對該事務進行處理的高速緩存條230A-D。可以使用互斥或(XOR)功能使每個請求的物理地址散列,該互斥或功能被配置成用于為所有常見的地址跨步產生高速緩存塊跨這四個高速緩存條230A-D(TAD0-TAD3)的近隨機分布。這將CMB請求的空間局部性轉換成跨這四個高速緩存條230A-D(TAD0-TAD3)的近隨機分布,從而允許每個周期更好地利用四次標簽查找。
[0050]到達ADD總線上的事務首先進入目的高速緩存條的FIFO之一。每個FIFO每個周期可以緩沖多達四個ADD總線事務。一種算法確定進一步處理多個地址的順序。
[0051]CMI互連電路244處的調度器可以確定哪些事務可以退出這些FIFO。多達四個事務(這四個TAD中的每個可能發出一個事務)每個周期競爭電路244中的LlD標簽管。這些LlD標簽管(如管0-7所示)具有這些LI數據高速緩存標簽的副本(即,它們為復制標簽、或DUT)。這些LlD標簽管確定該事務是否使LI高速緩存中的塊的副本無效。如果是,則互連電路244將最終針對該事務在COMMIT和FILL總線上發送一個LlD高速緩存無效命令。
[0052]當接收到一個請求時,互連電路244可以對該請求的地址(或地址的一部分,如地址位〈9:7?進行分析以選擇每個事務使用哪個LlD標簽管。如果所呈現的多達四個事務中的每個事務不同之處全在于地址位〈9: 7>,則交叉開關在該周期期間調度所有事務。該實現方式將DUT分成包含LlD標簽管0-3的DUT0-3、和包含LlD標簽管4_7的DUT4-7。
[0053]當互連電路244對來自高速緩存條FIFO的事務進行調度時,該事務同時進入分別在互連電路244 (通過ADD總線)和該高速緩存條內的一個LlD標簽管和L2標簽管兩者。對該DUT的狀態進行更新以與這些LI標簽的狀態匹配。該高速緩存條飛行中的緩沖器最終使用來自這些標簽管的結果完成該事務。當不存在競爭DUT和高速緩存條資源時,旁路(未示出)可以避免任何過度的FIFO延遲。
[0054]每個請求可以要求該高速緩存條的L2標簽的查找、以及所有處理器內核的LI標簽的狀態。此狀態被保持為DUT,為LI標簽在L2中的副本。因為將這些請求均勻地分布在這些高速緩存條上的地址散列函數可能沒有用于LI,如散列函數所需的位可能不能及時獲得。為了提供足夠的帶寬而在DUT中每周期執行4次查找,可以將DUT分成8個單獨的集合(“信道”),其中每個地址映射到一個信道內。因為每周期僅選擇4個地址而具有8個DUT信道,可能將基于常態地址分布選擇不止一個請求(最大多達4個)。
[0055]圖4為一個框圖,展示了在到這些高速緩存條的請求中實現的緩沖器。如以上參照圖2所述,這些高速緩存側CMB235A-D包括多條STORE總線,每條總線攜帶在內存事務過程中有待存儲到高速緩存條230A-D的數據。通過一條對應的總線225A-D和CMI244將存儲或檢索數據的請求從一組處理器內核220A-D中的一個內核傳送至將對該請求進行服務的高速緩存條230A-D。為了對來自該多個處理器內核的若干請求進行服務,四個2讀取/2寫入端口數據緩沖器422A-D從這些STORE總線接收數據(ST0RE0-ST0RE1)。每個緩沖器422A-D可以從兩條CMB225A-D STORE總線接收數據,并可以將數據發送至兩個高速緩存條230A-D。此配置允許每條CMB225A-D STORE總線在每個周期期間提供給定量值(例如,128字節)存儲數據,并允許每個高速緩存條每個周期接收相同量值(例如,128字節)的存儲數據,而獨立于需要提供或接收該數據的具體CMB225A-D或高速緩存條230A-D。
[0056]圖5為一個框圖,展示了在這些高速緩存條輸出的數據中實現的緩沖器。如以上參照圖2所述,高速緩存條提供對請求的響應,并且必須將該響應從該高速緩存條傳送回這些CMB235A-D FILL總線(圖5中示為TADOFILL...TADIFILL)。每個高速緩存條230A-D可能僅能夠一次服務一個CMB請求,并且每個請求需要多達4個周期。為了保持充分利用CMB235A-D FILL總線,FILL緩沖器532A-D可以被實現為將高速緩存條230A-D讀取端口與CMB235A-D FILL解耦。FILL緩沖器532A-D可以是在互連電路244中可以實現的3寫入端口可繞過緩沖器以預獲取發往CMB235A-D FILL總線的數據。這允許多達3個高速緩存條讀出響應數據并對其進行排隊以發送至同一總線。緩沖器532A-D提供用于協調這些CMB235A-D FILL總線和這些高速緩存條230A-D FILL端口以使這些CMB235A-D FILL總線中的每條總線的利用最大化。
[0057]圖6為以上參照圖2描述的高速緩存條230A-D中的每個條中存在的L2C控制電路的框圖。該高速緩存條包含用于L2高速緩存的其部分的高速緩存標簽和數據兩者。四個四線組包含該數據。每個四線組具有256KB的L2高速緩存。高速緩存條還包括多個地址和數據緩沖器。這些地址緩沖器包括對所有接收到的L2讀取和寫入操作進行跟蹤的飛行中的地址緩沖器(LFB)、以及對被寫入到DRAM (通過LMC)的所有塊進行跟蹤的受害(victim)地址緩沖器(VAB)。L2C在其LFB中保持并處理多達16個同時L2/DRAM事務,并且還在VAB/VBF中管理多達16個飛行中的L2高速緩存受害操作/完全寫入操作。
[0058]數據緩沖器包括:填充緩沖器(FBF),每當從L2高速緩存或DRAM讀取數據時使用這些填充緩沖器;存儲緩沖器(SBF),其用于所有STORE事務;以及受害數據緩沖器(VDB),其用于將數據寫入到DRAM。針對L2/DRAM填充事務,L2C通過與LFB入口相關聯的FBF入口從或者L2高速緩存或者內存返回數據。針對L2/DRAM存儲事務,L2C首先將STORE總線數據存入到與該LFB入口相關聯的SBF入口,然后或者更新高速緩存或者將滿的高速緩存塊存儲直接寫入到DRAM。除了至高速緩存塊中的所有字節的存儲操作,L2高速緩存中丟失的所有L2/DRAM事務需要DRAM填充操作。部分高速緩存塊存儲操作需要DRAM填充操作以獲得沒有存儲的字節。L2C將DRAM填充數據放到FBF內,然后將其寫入L2高速緩存(如需要),并且將其轉發到FILL總線上(如需要)。
[0059]雖然已參照其示例實施例對本發明進行了具體地解釋和說明,本領域技術人員將理解可不脫離所附權利要求書所包括的本發明的范圍在其中做出形式上的各種改變及詳細說明。
【權利要求】
1.一種計算機芯片上的計算機系統,包括: 一個互連電路; 多條內存總線,每條總線將一組對應的多個處理器內核連接到該互連電路上;以及 一個高速緩存,被分成多個條,其中每個條通過一條單獨總線連接到該互連電路上; 該互連電路被配置成用于將從該多個處理器內核接收的多個請求分布在該多個條之間。
2.如權利要求1所述的系統,其中,該互連電路通過修改這些請求的一個地址部分來轉換這些請求。
3.如權利要求2所述的系統,其中,該互連電路在這些請求的每個請求上執行一個散列函數,該散列函數提供這些請求在該多個條之間的一個偽隨機分布。
4.如權利要求1所述的系統,其中,該互連電路被配置成用于維持多個標簽,這些標簽指示一個偶聯到該多個處理器內核之一上的LI高速緩存的一種狀態,并且其中,該互連電路進一步被配置成用于將該多個請求中的多個標簽引導至多個信道,由此同時處理這些對應的標簽。
5.如權利要求1所述的系統,其中,該互連電路進一步包括多個數據輸出緩沖器,這些數據輸出緩沖器中的每個緩沖器被配置成用于從該多個條中的每個條接收數據并通過該多條內存總線中的一條對應總線輸出數據。
6.如權利要求1所述的系統,其中,該互連電路進一步包括多個請求緩沖器,這些請求緩沖器中的每個緩沖器從每組多個處理器接收多個請求并將該請求輸出到該多個條中的一個對應的條。
7.如權利要求1所述的系統,進一步包括偶聯到這些內存總線中的至少一條內存總線上的至少一個橋接電路,該至少一個橋接電路將該多個處理器內核連接到至少一個片上協處理器。
8.如權利要求1所述的系統,其中,這些條被配置成用于延遲將一個提交信號傳輸至該多個處理器內核,響應于接收到對已經將多個無效信號傳輸至該多個處理器內核中的全部內核的一個指示,這些條傳輸該提交信號。
9.如權利要求1所述的系統,其中,該互連電路和該多條內存總線可以被配置成用于控制多個無效信號在比到達該多個條之一的一個提交所需的時間更少的時間到達一個LI高速緩存并控制一個后續信號到達接收該無效的該多個處理器內核之一。
【文檔編號】G06F12/08GK103959261SQ201280059239
【公開日】2014年7月30日 申請日期:2012年10月29日 優先權日:2011年10月31日
【發明者】R·E·凱斯勒, D·H·阿舍, J·M·珀維勒, B·D·多比 申請人:凱為公司