亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

使用多核心處理器的并行處理的制作方法_2

文檔序號:9422687閱讀:來源:國知局
處理器,何時請求已經(jīng)完成以及何時任何數(shù)據(jù)安全地被使用。例如,附有表更新操作的信號量可以通過核心處理器105被測試,以確定查表的結(jié)果是否已返回到核心處理器105。在發(fā)送任何請求至一個或多個專用處理器之后,核心處理器105上的線程可以繼續(xù)進(jìn)行其它任務(wù),直到該線程需要使用請求的結(jié)果。在使用任何請求的結(jié)果之前,核心處理器105將測試被附到特定的請求的信號量。如果請求已經(jīng)被完成,并且該結(jié)果已被返回到核心處理器105,則該線程將繼續(xù)處理。如果請求尚未被完成,則當(dāng)信號量被測試時,核心處理器105將使該線程處于睡眠模式,并且將切換以處理其它線程。當(dāng)信號量被返回時,核心處理器105將喚醒線程并且線程將繼續(xù)處理,猶如信號量在測試時間已可用。
[0037]核心處理器獲得來自專用處理器,例如輸入包隊(duì)列處理器115,的輸入隊(duì)列中的數(shù)據(jù)包。核心處理器105可以請求輸入包隊(duì)列處理器115返回數(shù)據(jù)包。來自核心處理器的請求被添加到請求隊(duì)列,并且基于先入先出(FIFO)被服務(wù)。請求隊(duì)列可以具有來自每個核心處理器的各個線程的請求。例如,如果在網(wǎng)絡(luò)處理器100中有四個核心處理器并且四個核心處理器的每一個能夠執(zhí)行三個線程,請求隊(duì)列可以在請求隊(duì)列中有多達(dá)12(4X3)個請求。
[0038]該入口模塊130執(zhí)行存儲器管理操作包括:(i)分配存儲器給傳入數(shù)據(jù)包,和(ii)將傳入數(shù)據(jù)包存儲在存儲器中。入口模塊130將數(shù)據(jù)包存儲在存儲器中,例如數(shù)據(jù)存儲器125。此外,入口模塊130可以在控制存儲器120中存儲指向數(shù)據(jù)包的指針。在一實(shí)施方式中,對數(shù)據(jù)包的訪問是通過控制存儲器120提供的。該數(shù)據(jù)包被存儲在數(shù)據(jù)存儲器125的緩沖區(qū)中。緩沖區(qū)的每一個具有可配置的大小。如果數(shù)據(jù)包的大小超過緩沖區(qū)的大小,入口模塊130會拆分?jǐn)?shù)據(jù)包并在多個緩沖區(qū)中存儲數(shù)據(jù)包的部分。入口模塊130生成數(shù)據(jù)包的數(shù)據(jù)包緩沖區(qū)鏈。該數(shù)據(jù)包緩沖區(qū)鏈?zhǔn)侵羔樈Y(jié)構(gòu),其鏈接包含該數(shù)據(jù)包的各個部分的緩沖區(qū)。在創(chuàng)建數(shù)據(jù)包緩沖區(qū)鏈后,數(shù)據(jù)包通過將指針添加到數(shù)據(jù)包緩沖區(qū)鏈而被添加到輸入隊(duì)列。如果輸入隊(duì)列已經(jīng)包含了數(shù)據(jù)包,在輸入隊(duì)列中的最后一個數(shù)據(jù)包的數(shù)據(jù)包緩沖區(qū)鏈被鏈接到新添加的數(shù)據(jù)包的數(shù)據(jù)包緩沖區(qū)鏈。
[0039]輸入包隊(duì)列處理器115從輸入隊(duì)列的頭部返回數(shù)據(jù)包至請求隊(duì)列中的第一個線程。如果在輸入隊(duì)列中沒有數(shù)據(jù)包,該請求線程被切換到睡眠模式,直到數(shù)據(jù)包能夠被返回到線程。當(dāng)數(shù)據(jù)包被返回到核心處理器105的線程時,核心處理器105以單線程對數(shù)據(jù)包執(zhí)行網(wǎng)絡(luò)操作。核心處理器105可請求一個或多個專用處理器以原子地執(zhí)行網(wǎng)絡(luò)操作的子集。當(dāng)專用處理器在原子地執(zhí)行操作時,請求專用處理器的核心處理器105的線程可以被切換到睡眠模式,直到由專用處理器執(zhí)行的結(jié)果被傳回到線程。在這一點(diǎn)上使這一核心處理器進(jìn)入睡眠模式避免了信號量等待周期,并允許其它處理器能夠更有效地集中于處理后臺任務(wù)。
[0040]在數(shù)據(jù)包被處理之后,核心處理器105請求專用處理器,例如輸出包隊(duì)列處理器140以將處理過的數(shù)據(jù)包添加到多個輸出隊(duì)列中的一個。該輸出包隊(duì)列處理器140基于對數(shù)據(jù)包約定的QoS將數(shù)據(jù)包添加到特定的輸出隊(duì)列。出口模塊135基于輸出隊(duì)列的QoS獲得來自輸出隊(duì)列的數(shù)據(jù)包,并且轉(zhuǎn)發(fā)數(shù)據(jù)包到它們相應(yīng)的目標(biāo)地址。在數(shù)據(jù)包被轉(zhuǎn)發(fā)至下一跳地址后,被分配給該數(shù)據(jù)包的存儲器通過輸出包隊(duì)列處理器140被釋放或清空。
[0041]在一實(shí)施方式中,控制存儲器120和數(shù)據(jù)存儲器125可以是在網(wǎng)絡(luò)處理器100的相同或不同的物理存儲器裝置上??刂拼鎯ζ?20具有在數(shù)據(jù)存儲器125中的所有緩沖區(qū)的列表。在控制存儲器120中的列表可以是一對一映射到在數(shù)據(jù)存儲器125中的緩沖區(qū)。在一實(shí)施方式中,該一對一映射可包括指向數(shù)據(jù)存儲器125的緩沖區(qū)的指針。在控制存儲器120中的一對一映射具有指向數(shù)據(jù)緩沖區(qū)的任何給定的地址的指針。
[0042]該控制存儲器120或數(shù)據(jù)存儲器125代表隨機(jī)存取存儲器(RAM)、閃存、內(nèi)容可尋址存儲器(CAM),如三態(tài)內(nèi)容可尋址存儲器,或類似物,或這些裝置的組合的任何形式。在使用中,控制存儲器120可以包含數(shù)據(jù)結(jié)構(gòu),如包緩沖區(qū)鏈、輸出包隊(duì)列頭部結(jié)構(gòu)和具有命令,如經(jīng)常被執(zhí)行的存儲器讀取或存儲器寫入,的數(shù)據(jù)結(jié)構(gòu)。
[0043]內(nèi)部命令網(wǎng)絡(luò)110可以是分布式交叉開關(guān)或數(shù)據(jù)網(wǎng)絡(luò)或信號量網(wǎng)絡(luò)以便于在網(wǎng)絡(luò)處理器100中的各種部件如核心處理器、專用處理器、控制存儲器、數(shù)據(jù)存儲器等之間的通信。內(nèi)部命令網(wǎng)絡(luò)110從核心處理器處獲取輸入并將其輸出至特定的目標(biāo)。例如,如果核心處理器想要將數(shù)據(jù)寫入到控制存儲器120中,則該輸入可以是數(shù)據(jù)并且該目標(biāo)可以是控制存儲器120。內(nèi)部命令網(wǎng)絡(luò)110包含多個開關(guān),其中核心處理器的每一個被連接到一系列開關(guān),其將特定的核心處理器連接到特定的目的地。
[0044]網(wǎng)絡(luò)處理器100通過使用專用硬件處理器執(zhí)行各種操作,例如網(wǎng)絡(luò)操作、存儲器管理等。此外,由于對數(shù)據(jù)包的所有網(wǎng)絡(luò)操作是在核心處理器的單線程中被執(zhí)行的,沒有在處理的各個階段之間傳遞狀態(tài)信息或同步信息的開銷。而且,存儲器管理是由硬件模塊,如入口模塊130、輸入包隊(duì)列處理器115、輸出包隊(duì)列處理器140等執(zhí)行。因此,由網(wǎng)絡(luò)處理器100提供的性能是顯著增加的。此外,執(zhí)行一組網(wǎng)絡(luò)操作的編程模型可以是單線程編程模型,其沒有多線程編程復(fù)雜。
[0045]圖2是根據(jù)本公開的技術(shù)的實(shí)施方式的一流程圖,示出了由網(wǎng)絡(luò)處理器處理數(shù)據(jù)包的過程200。該過程200可在網(wǎng)絡(luò)處理器,如圖1的網(wǎng)絡(luò)處理器100,中被執(zhí)行。在步驟205,網(wǎng)絡(luò)處理器100接收來自在計算機(jī)網(wǎng)絡(luò)中的一個或多個源計算機(jī)系統(tǒng)的多個數(shù)據(jù)包。在步驟210,網(wǎng)絡(luò)處理器100對每個數(shù)據(jù)包執(zhí)行一組網(wǎng)絡(luò)操作。執(zhí)行的該組網(wǎng)絡(luò)操作可以是基于特定的應(yīng)用/網(wǎng)絡(luò)協(xié)議。數(shù)據(jù)包的每一個在網(wǎng)絡(luò)處理器100的特定的核心處理器的單線程中被處理。在步驟215,網(wǎng)絡(luò)處理器100基于對數(shù)據(jù)包約定的QoS轉(zhuǎn)發(fā)處理過的數(shù)據(jù)包到它們相應(yīng)的目標(biāo)地址。
[0046]圖3是根據(jù)本公開的技術(shù)的實(shí)施方式的一流程圖,示出了用于在核心處理器的單線程中對數(shù)據(jù)包執(zhí)行一組網(wǎng)絡(luò)操作的過程300。過程300可以在網(wǎng)絡(luò)處理器,如圖1的網(wǎng)絡(luò)處理器100,中被執(zhí)行。某些網(wǎng)絡(luò)操作由核心處理器執(zhí)行而某些由網(wǎng)絡(luò)處理器100的專用處理器執(zhí)行。在一實(shí)施方式中,頻繁執(zhí)行的操作可通過專用處理器被執(zhí)行。例如,在執(zhí)行網(wǎng)絡(luò)協(xié)議如RSVP(RFC 2475)的網(wǎng)絡(luò)處理器100中,網(wǎng)絡(luò)操作,例如測量、監(jiān)管、生成統(tǒng)計數(shù)據(jù)等,可以通過專用處理器來執(zhí)行。
[0047]在步驟305,核心處理器,如核心處理器105請求專用處理器原子地執(zhí)行一組網(wǎng)絡(luò)操作的子集。核心處理器105將信號量附加到請求操作的核心處理器105的線程。在步驟310,專用處理器對數(shù)據(jù)包原子地執(zhí)行一組網(wǎng)絡(luò)操作的子集。在步驟315,專用處理器向特定的存儲器地址發(fā)布操作的執(zhí)行的結(jié)果。
[0048]返回參照步驟310,原子地執(zhí)行一組操作包括確保當(dāng)網(wǎng)絡(luò)處理器100的共享資源正在由特定的資源更新時,其它資源不被允許訪問該共享資源。附加到核心處理器105的線程的信號量切換線程到睡眠模式,直到專用處理器已完成對數(shù)據(jù)包執(zhí)行操作并將執(zhí)行的結(jié)果發(fā)布到指定的存儲器地址。在專用處理器已經(jīng)完成執(zhí)行操作后,信號量喚醒核心處理器的線程并且剩下的網(wǎng)絡(luò)操作被繼續(xù)。在一實(shí)施方式中,如果核心處理器的線程是不依賴于由專用處理器進(jìn)行操作的執(zhí)行的結(jié)果,該線程可以不被切換到睡眠模式。該線程可以繼續(xù)處理對數(shù)據(jù)包的下一組操作。
[0049]圖4是根據(jù)公開的技術(shù)的實(shí)施方式的一流程圖,示出了使用RSVP(RFC 2475)應(yīng)用/網(wǎng)絡(luò)協(xié)議來處理數(shù)據(jù)包的過程400。該過程400可在網(wǎng)絡(luò)處理器,例如圖1的網(wǎng)絡(luò)處理器100,中被執(zhí)行。在步驟402,核心處理器,如核心處理器105,的線程發(fā)送一請求到輸入包隊(duì)列處理器115以獲得數(shù)據(jù)包。該請求還包括與線程相關(guān)聯(lián)的信號量。如果輸入包隊(duì)列處理器115的請求隊(duì)列已經(jīng)具有來自核心處理器105的其它線程或其它核心處理器的請求,來自核心處理器105的特定線程的請求基于FIFO被添加到請求隊(duì)列。
[0050]在確定步驟404,核心處理器105確定信號量是否已指示該輸入包隊(duì)列處理器115返回數(shù)據(jù)包至線程。響應(yīng)于確定該輸入包隊(duì)列處理器115還沒有返回數(shù)據(jù)包至線程,在步驟406,線程被切換到睡眠模式,直到數(shù)據(jù)包被返回到線程。另一方面,響應(yīng)于確定該輸入包隊(duì)列處理器115已返回數(shù)據(jù)包至線程,在步驟408,核心處理器105繼續(xù)處理數(shù)據(jù)包。在一實(shí)施方式中,當(dāng)數(shù)據(jù)包被返回到核心處理器105時,輸入隊(duì)列包處理器115返回指針,其指向存儲在網(wǎng)絡(luò)處理器100的數(shù)據(jù)存儲器125中的數(shù)據(jù)包。此外,數(shù)據(jù)包的一部分,如數(shù)據(jù)包的頭部,從數(shù)據(jù)存儲器125讀出并寫入到核心處理器105的本地存儲器。當(dāng)處理數(shù)據(jù)包時,核心處理器105可參照存儲在本地存儲器的部分。
[0051]在確定步驟408,核心處理器105確定在數(shù)據(jù)包中是否有任何錯誤。檢測到的錯誤包括,例如,數(shù)據(jù)包的大小。如果該數(shù)據(jù)包的大小小于預(yù)定義的最小數(shù)據(jù)包的大小,核心處理器105確定該數(shù)據(jù)包是錯誤的數(shù)據(jù)包。核心處理器105也可通過為數(shù)據(jù)包計算校驗(yàn)和檢查其它的錯誤。最初地,當(dāng)包到達(dá)時,入口模塊130計算校驗(yàn)和來驗(yàn)證是否數(shù)據(jù)包被正確地接收。校驗(yàn)和可以被修改,以對應(yīng)于通過核心處理器105對數(shù)據(jù)包的任何修改。響應(yīng)于確定數(shù)據(jù)包是錯誤的數(shù)據(jù)包,在步驟410,核心處理器105發(fā)送請求至輸出包隊(duì)列處理器140以丟棄該數(shù)據(jù)包。另一方面,響應(yīng)于確定該數(shù)據(jù)包不是錯誤的數(shù)據(jù)包,核心處理器105繼續(xù)在步驟412處理該數(shù)據(jù)包。
[0052]在步驟412,核心處理器105發(fā)送請求至專用處理器以執(zhí)行查表操作以確定數(shù)據(jù)包的下一跳地址。該請求還包括與線程相關(guān)聯(lián)的信號量。在步驟414,專用處理器執(zhí)行查表操作以確定用于數(shù)據(jù)包的下一跳地址,并向特定的存儲器地址發(fā)布結(jié)果。網(wǎng)絡(luò)處理器100同時支持IPv4和IPv6,即IP版本4和6。另外,專用處理器還可以根據(jù)對數(shù)據(jù)包約定的QoS確定數(shù)據(jù)包可能會被添加到的輸出隊(duì)列的隊(duì)列標(biāo)識(ID)。在一實(shí)施方式中,查表操作還可以包括反向路徑驗(yàn)證和微流參數(shù)。微流是包的應(yīng)用到應(yīng)用流的單一實(shí)例,其通過源地址、源端口、目標(biāo)地址、目標(biāo)端口和協(xié)議ID區(qū)分。下一跳地址可以包括互聯(lián)網(wǎng)協(xié)議(IP)地址。
[0053]在確定步驟416,核心處理器105確定信號量是否已指示查表操作已執(zhí)行并且結(jié)果已經(jīng)被發(fā)布到存儲器的特定的位置。響應(yīng)于確定結(jié)果尚未發(fā)布,在步驟418,核心處理器105的線程被切換到睡眠模式,直到結(jié)果被發(fā)布。另一
當(dāng)前第2頁1 2 3 4 5 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1