使用多核心處理器的并行處理的制作方法
【專利說明】使用多核心處理器的并行處理
[0001]相關(guān)申請(qǐng)交叉引用
[0002]本申請(qǐng)要求2012年12月20號(hào)提交的美國(guó)臨時(shí)申請(qǐng)序列號(hào)61/740,374的權(quán)益。
[0003]本申請(qǐng)要求2013年3月5號(hào)提交的美國(guó)專利申請(qǐng)序列號(hào)13/786,144的權(quán)益。
技術(shù)領(lǐng)域
[0004]本發(fā)明大體上涉及并行處理。更具體地,本發(fā)明涉及使用多核心處理器的并行處理。
【背景技術(shù)】
[0005]多核心處理器是具有兩個(gè)或多個(gè)獨(dú)立的實(shí)際中央處理單元(稱為“核心”)的單一計(jì)算部件,實(shí)際中央處理單元是讀取并執(zhí)行程序指令的單元。多核心處理器被用于許多應(yīng)用領(lǐng)域,包括一般用途的、嵌入式的、網(wǎng)絡(luò)、數(shù)字信號(hào)處理(DSP),以及圖形。通過使用多核心處理器所取得的性能上的改進(jìn)在很大程度上取決于所用的軟件算法及其實(shí)施。特別是,可能取得的改進(jìn)被可被同時(shí)并行在多個(gè)核心上運(yùn)行的軟件的部分所限制。
[0006]在多核心網(wǎng)絡(luò)處理中,一個(gè)關(guān)鍵的挑戰(zhàn)是如何利用這些裝置中所有的核心以獲得最大的網(wǎng)絡(luò)性能,盡管在對(duì)稱多處理操作系統(tǒng)中存在固有的性能限制。在當(dāng)前的多核心網(wǎng)絡(luò)處理器架構(gòu)中,數(shù)據(jù)包的處理是由一個(gè)或多個(gè)核心處理器完成的。各個(gè)核心處理器和核心處理器的各個(gè)線程、存儲(chǔ)器管理等之間的同步是通過軟件編程來實(shí)現(xiàn)的。此外,當(dāng)數(shù)據(jù)包的處理從一個(gè)核心傳遞到另一個(gè)核心時(shí),狀態(tài)或同步信息在核心之間被傳遞或在處理數(shù)據(jù)包的核心的線程之間傳遞。
[0007]大量的資源被消耗在在線程或處理器之間傳遞狀態(tài)/同步信息,從而降低了用于執(zhí)行實(shí)際網(wǎng)絡(luò)應(yīng)用相關(guān)的任務(wù)的資源的可用性。因此,傳遞狀態(tài)/同步信息的開銷降低了處理器的效率。
[0008]另外,在現(xiàn)有的結(jié)構(gòu)中,在等待下一個(gè)數(shù)據(jù)包到達(dá)時(shí),核心處理器不執(zhí)行任何有用的網(wǎng)絡(luò)相關(guān)的操作。核心處理器可以是空閑狀態(tài),直到下一個(gè)數(shù)據(jù)包到達(dá)核心處理器。在目前具有管線專用核心的陣列的多核心處理器的系統(tǒng)中,多核心處理器被專用核心的性能和管線深度所限制。多核心還受到最慢核心的限制。
[0009]概述
[0010]這里介紹的是使用多核心處理器進(jìn)行并行處理的方法、系統(tǒng)、范例和結(jié)構(gòu)。所公開的解決方案可以在各種應(yīng)用中被使用,例如通用處理、網(wǎng)絡(luò)處理、存儲(chǔ)系統(tǒng)等。在一實(shí)施方式中,上述多核心處理器可以在通信網(wǎng)絡(luò)中被用作(網(wǎng)絡(luò))處理器用于處理數(shù)據(jù)包。該網(wǎng)絡(luò)處理器包括用于原子地(atomically,不可分割地)和并行地處理數(shù)據(jù)的多個(gè)多線程核心處理器和多個(gè)專用處理器。網(wǎng)絡(luò)處理器通過對(duì)數(shù)據(jù)包執(zhí)行一組網(wǎng)絡(luò)操作以處理數(shù)據(jù)包。該組網(wǎng)絡(luò)操作可以是基于應(yīng)用/網(wǎng)絡(luò)協(xié)議,如資源預(yù)留協(xié)議(RSVP)。
[0011]特定的數(shù)據(jù)包是通過單核心處理器和核心處理器的單線程進(jìn)行處理的。該核心處理器可以請(qǐng)求一個(gè)或多個(gè)專用處理器以對(duì)數(shù)據(jù)包執(zhí)行一組網(wǎng)絡(luò)操作的子集。專用處理器是專門處理特定的一組共享資源的所有的訪問和更新、使得這些共享資源總是原子地被訪問和更新的任何處理元件。該專用處理器可以是專門設(shè)計(jì)用于處理狀態(tài)數(shù)據(jù)的某些類型(例如,測(cè)量器、隊(duì)列、統(tǒng)計(jì)數(shù)據(jù)、卷目錄表(VTOC)等)的硬件或已被專用于處理特定的一組共享資源的通用的核心。一個(gè)或多個(gè)專用處理器通過原子地執(zhí)行一組操作處理數(shù)據(jù)包。也就是說,網(wǎng)絡(luò)處理器確保當(dāng)特定的數(shù)據(jù)包被處理時(shí),用于處理特定數(shù)據(jù)包的網(wǎng)絡(luò)處理器的共享資源不被網(wǎng)絡(luò)處理器的其它資源使用。在該過程中所涉及的共享資源的鎖定確保了過程的原子性。
[0012]在網(wǎng)絡(luò)處理器內(nèi)的入口模塊分配存儲(chǔ)器用于傳入數(shù)據(jù)包并將該數(shù)據(jù)包存儲(chǔ)在網(wǎng)絡(luò)處理器的存儲(chǔ)器中。對(duì)于大小超過緩沖區(qū)大小的數(shù)據(jù)包,入口模塊生成包緩沖區(qū)鏈,其鏈接含有數(shù)據(jù)包的部分的各種緩沖區(qū)。入口模塊將傳入數(shù)據(jù)包添加到輸入隊(duì)列,核心處理器中的一個(gè)從其中獲得數(shù)據(jù)包用于進(jìn)一步的處理。在網(wǎng)絡(luò)處理器中的輸出包處理器基于與輸出隊(duì)列相關(guān)聯(lián)的服務(wù)質(zhì)量(QoS)將處理過的數(shù)據(jù)包添加到多個(gè)輸出隊(duì)列中的一個(gè),并基于QoS轉(zhuǎn)發(fā)包含在輸出隊(duì)列中的數(shù)據(jù)包到它們的目標(biāo)地址。
[0013]由于核心處理器的單線程對(duì)數(shù)據(jù)包執(zhí)行所有組網(wǎng)絡(luò)操作,沒有狀態(tài)信息或同步信息在處理器之間傳遞,這導(dǎo)致更快和更有效地?cái)?shù)據(jù)包的處理。此外,存儲(chǔ)器讀取和寫入的次數(shù)被最小化以降低由于存儲(chǔ)器讀取和寫入造成的延遲。所討論的方法、系統(tǒng)、結(jié)構(gòu)和范例增加了每包有效操作(EOPP)的數(shù)量,也即,對(duì)數(shù)據(jù)包可被執(zhí)行以執(zhí)行應(yīng)用相關(guān)的任務(wù)的指令的數(shù)量。
[0014]本發(fā)明的一些實(shí)施方式,除了以上描述的或代替以上描述的,具有其它的方面、元件、特征和步驟。這些潛在的補(bǔ)充和替代將在整個(gè)說明書的其余部分中被描述。
【附圖說明】
[0015]圖1是本發(fā)明的一實(shí)施方式可以操作的示例性的網(wǎng)絡(luò)處理器。
[0016]圖2示出了由網(wǎng)絡(luò)處理器處理數(shù)據(jù)包的過程的流程圖。
[0017]圖3示出了在核心處理器的單線程中對(duì)數(shù)據(jù)包執(zhí)行一組網(wǎng)絡(luò)操作的過程的流程圖。
[0018]圖4示出了在圖1的網(wǎng)絡(luò)處理器中根據(jù)RSVP(RFC 2475)應(yīng)用/網(wǎng)絡(luò)協(xié)議處理數(shù)據(jù)包的流程圖。
[0019]圖5示出了處理輸入數(shù)據(jù)包的過程的流程圖。
[0020]圖6示出了用于表示存儲(chǔ)在圖1的網(wǎng)絡(luò)處理器的存儲(chǔ)器中的數(shù)據(jù)包的結(jié)構(gòu)的例子的框圖。
[0021]圖7示出了將數(shù)據(jù)包存儲(chǔ)在圖1的網(wǎng)絡(luò)處理器的存儲(chǔ)器中的過程的流程圖。
[0022]圖8是用于將數(shù)據(jù)包添加到圖1的網(wǎng)絡(luò)處理器的輸入隊(duì)列的過程的流程圖。
[0023]圖9是圖1的網(wǎng)絡(luò)處理器的輸出隊(duì)列結(jié)構(gòu)的框圖。
[0024]圖10示出了處理輸出數(shù)據(jù)包的過程的流程圖。
[0025]圖11示出了圖1的網(wǎng)絡(luò)處理器的出口模塊的框圖。
具體實(shí)施例
[0026]在本說明書中提到的“一實(shí)施方式”、“一種實(shí)施方式”,或類似的描述,意味著被描述的特定特征、功能或特性是被包括在本發(fā)明的至少一個(gè)實(shí)施方式中。在本說明書中出現(xiàn)這樣的短語(yǔ)并不一定都指代相同的實(shí)施方式,也不是必然互相排斥的。
[0027]這里介紹的是使用多核心處理器進(jìn)行并行處理的方法、系統(tǒng)、范例和結(jié)構(gòu)。所公開的解決方案可以在各種應(yīng)用中被使用,例如通用處理、網(wǎng)絡(luò)處理、存儲(chǔ)系統(tǒng)等。在一實(shí)施方式中,上述多核心處理器可以在通信網(wǎng)絡(luò)中被用作網(wǎng)絡(luò)處理器用于處理數(shù)據(jù)包。網(wǎng)絡(luò)處理器通過對(duì)數(shù)據(jù)包執(zhí)行一組網(wǎng)絡(luò)操作以處理數(shù)據(jù)包。該組網(wǎng)絡(luò)操作可以是基于應(yīng)用/網(wǎng)絡(luò)協(xié)議,如資源預(yù)留協(xié)議(RSVP)。
[0028]特定的數(shù)據(jù)包是通過單核心處理器和核心處理器的單線程進(jìn)行處理的。核心處理器可以請(qǐng)求一個(gè)或多個(gè)專用處理器對(duì)數(shù)據(jù)包執(zhí)行一組網(wǎng)絡(luò)操作的子集。一個(gè)或多個(gè)專用處理器通過原子地執(zhí)行一組操作來處理數(shù)據(jù)包。也就是說,網(wǎng)絡(luò)處理器確保當(dāng)特定數(shù)據(jù)包被處理時(shí),用于處理特定數(shù)據(jù)包的網(wǎng)絡(luò)處理器的共享資源不會(huì)被網(wǎng)絡(luò)處理器的其它資源使用。
[0029]在網(wǎng)絡(luò)處理器內(nèi)的入口模塊分配存儲(chǔ)器用于傳入數(shù)據(jù)包并將該數(shù)據(jù)包存儲(chǔ)在網(wǎng)絡(luò)處理器的存儲(chǔ)器中。對(duì)于大小超過緩沖區(qū)大小的數(shù)據(jù)包,入口模塊生成包緩沖區(qū)鏈,其鏈接含有數(shù)據(jù)包的部分的各種緩沖區(qū)。入口模塊將傳入數(shù)據(jù)包添加到輸入隊(duì)列,核心處理器中的一個(gè)從其中獲得數(shù)據(jù)包用于進(jìn)一步的處理。在網(wǎng)絡(luò)處理器中的輸出包處理器基于與輸出隊(duì)列相關(guān)聯(lián)的服務(wù)質(zhì)量(QoS)將處理過的數(shù)據(jù)包添加到多個(gè)輸出隊(duì)列中的一個(gè),并基于QoS轉(zhuǎn)發(fā)包含在輸出隊(duì)列中的數(shù)據(jù)包到它們的目標(biāo)地址。
[0030]由于核心處理器的單線程對(duì)數(shù)據(jù)包執(zhí)行所有組網(wǎng)絡(luò)操作,沒有狀態(tài)信息或同步信息在處理器之間傳遞,這導(dǎo)致更快和更有效的數(shù)據(jù)包的處理。此外,存儲(chǔ)器讀取和寫入的次數(shù)被最小化以降低由于存儲(chǔ)器讀取和寫入造成的延遲。所討論的方法、系統(tǒng)、結(jié)構(gòu)和范例增加了每包有效操作(EOPP)的數(shù)量,也即,對(duì)數(shù)據(jù)包可被執(zhí)行以執(zhí)行應(yīng)用相關(guān)的任務(wù)的指令的數(shù)量。
[0031]圖1是示例的網(wǎng)絡(luò)處理器100,在該網(wǎng)絡(luò)處理器100中,本發(fā)明的一實(shí)施方式可被操作。來自各種源計(jì)算機(jī)系統(tǒng)(未示出)的數(shù)據(jù)包經(jīng)由通信網(wǎng)絡(luò)(未示出)被傳送到目標(biāo)計(jì)算機(jī)系統(tǒng)(未示出)。該通信網(wǎng)絡(luò)包括各種系統(tǒng),例如路由器(未示出),其便于轉(zhuǎn)發(fā)數(shù)據(jù)包到它們相應(yīng)的目標(biāo)地址。路由器執(zhí)行操作包括:接收數(shù)據(jù)包,對(duì)接收到的數(shù)據(jù)包執(zhí)行錯(cuò)誤檢查,發(fā)現(xiàn)數(shù)據(jù)包的下一跳地址,對(duì)數(shù)據(jù)包分段等,然后包被轉(zhuǎn)發(fā)到它們相應(yīng)的下一跳地址。在一實(shí)施方式中,網(wǎng)絡(luò)處理器100可以被用于這樣的路由器以執(zhí)行上面所討論的操作。
[0032]網(wǎng)絡(luò)處理器100包括多個(gè)多線程核心處理器,如核心處理器105,多個(gè)專用處理器,如專用處理器115,存儲(chǔ)器,如控制存儲(chǔ)器120和數(shù)據(jù)存儲(chǔ)器125,入口模塊130以接收并將傳入數(shù)據(jù)包存儲(chǔ)在存儲(chǔ)器中,以及出口模塊135以轉(zhuǎn)發(fā)處理過的數(shù)據(jù)包到它們的目標(biāo)地址。內(nèi)部命令網(wǎng)絡(luò)110,如交叉開關(guān),能夠允許在網(wǎng)絡(luò)處理器100中的的各種部件之間的通信。
[0033]核心處理器的每一個(gè)處理數(shù)據(jù)包。然而,數(shù)據(jù)包是由單核處理器,如核心處理器105,和由核心處理器105的單線程進(jìn)行處理。核心處理器105通過對(duì)數(shù)據(jù)包執(zhí)行一組網(wǎng)絡(luò)操作處理數(shù)據(jù)包。核心處理器105可請(qǐng)求一個(gè)或多個(gè)專用處理器以對(duì)數(shù)據(jù)包執(zhí)行一組網(wǎng)絡(luò)操作的子集。該一個(gè)或多個(gè)專用處理器通過原子地執(zhí)行該組網(wǎng)絡(luò)操作的子集處理該數(shù)據(jù)包。也就是說,網(wǎng)絡(luò)處理器100確保當(dāng)特定的數(shù)據(jù)包通過核心處理器105或?qū)S锰幚砥?15被處理時(shí),用于處理特定數(shù)據(jù)包的網(wǎng)絡(luò)處理器100的共享資源不被網(wǎng)絡(luò)處理器100的其它資源所使用。
[0034]核心處理器和專用處理器并行執(zhí)行一組網(wǎng)絡(luò)操作。對(duì)數(shù)據(jù)包執(zhí)行的一組網(wǎng)絡(luò)操作可以是基于應(yīng)用/網(wǎng)絡(luò)協(xié)議,如RSVP。在一實(shí)施方式中,RSVP可以是由請(qǐng)求注解(RFC) 2475定義的協(xié)議。在RSVP(RFC2475)中的一組網(wǎng)絡(luò)操作可以包括接收數(shù)據(jù)包、執(zhí)行錯(cuò)誤處理、執(zhí)行查表操作、測(cè)量、生成靜態(tài)、監(jiān)管或擁塞控制、轉(zhuǎn)發(fā)數(shù)據(jù)包到它們的目標(biāo)地址等。
[0035]在一實(shí)施方式中,專用處理器可以執(zhí)行頻繁執(zhí)行的任務(wù),如為數(shù)據(jù)包查找下一跳地址的查表、測(cè)量、監(jiān)管、擁塞控制等。核心處理器可以執(zhí)行例如錯(cuò)誤檢查、監(jiān)督由專用處理器執(zhí)行的操作等的任務(wù)。在一實(shí)施方式中,網(wǎng)絡(luò)處理器100可具有用于所識(shí)別的網(wǎng)絡(luò)操作的每一個(gè)的專用處理器。然而,在另一實(shí)施方式中,網(wǎng)絡(luò)處理器100可具有專用處理器執(zhí)行一個(gè)以上的網(wǎng)絡(luò)操作。網(wǎng)絡(luò)處理器100確保對(duì)數(shù)據(jù)包的某些操作是通過使用與請(qǐng)求對(duì)數(shù)據(jù)包進(jìn)行操作的線程相關(guān)聯(lián)的信號(hào)量來原子地執(zhí)行的。
[0036]信號(hào)量用于發(fā)信號(hào)給目標(biāo)處理器,例如核心處理器或?qū)S?