專利名稱:多核并行先進先出隊列處理系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種多核處理器系統(tǒng)對共享資源的訪問技術(shù),尤其涉及先進先出隊列多核并行處理技術(shù)。
背景技術(shù):
隨著網(wǎng)絡(luò)通信技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)客戶對網(wǎng)絡(luò)要求越來越高,傳統(tǒng)的單處理器在處理性能上越來越不能適應(yīng)需要,因此多核處理器得到了越來越多網(wǎng)絡(luò)設(shè)備提供商的青睞。在多核處理器系統(tǒng)中,對共享臨界資源的互斥操作是影響其性能的關(guān)鍵因素之一。目前通常的做法是通過對共享資源加鎖來實現(xiàn)互斥操作,隊列是共享資源的主要組織形式之一。
為了保證多個核之間對隊列操作的互斥,每個核在操作隊列時加鎖,此時其它核在對隊列進行操作時會失敗,在取得鎖的核操作完畢并且解鎖以后其它核對隊列的訪問才能夠成功,因此在CPU的核數(shù)目非常多時這種操作會導(dǎo)致CPU的效率急劇下降。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是克服現(xiàn)有技術(shù)中,軟件加鎖來實現(xiàn)多核處理器操作隊列性能較低的缺點,提供一種隊列處理技術(shù),以提高多核處理器并行操作隊列時的效率。
本發(fā)明為解決上述技術(shù)問題所采用的技術(shù)方案是所述提供一種多核并行先進先出隊列處理系統(tǒng)多個核通過CPU接口總線與自動排號裝置相連;自動排號裝置包括讀地址產(chǎn)生模塊、寫地址產(chǎn)生模塊、隊列序號存儲器、讀回數(shù)據(jù)產(chǎn)生模塊、加1模塊;讀地址產(chǎn)生模塊,CPU接口總線通過讀地址產(chǎn)生模塊與隊列序號存儲器的讀地址相連,用于每個核讀隊列序號存儲器時,根據(jù)該核送出的地址,產(chǎn)生入隊序號寄存器地址和出隊序號寄存器地址,送到隊列序號存儲器的讀地址;寫地址產(chǎn)生模塊,CPU接口總線通過寫地址產(chǎn)生模塊與隊列序號存儲器的讀地址相連,用于將每個核送出的地址鎖存到隊列序號存儲器的寫地址;隊列序號存儲器能分別從入隊序號寄存器地址、出隊序號寄存器地址中讀出入隊序號、出隊序號;隊列序號存儲器讀出讀地址中入隊序號和出隊序號送到讀回數(shù)據(jù)產(chǎn)生模塊鎖存;將寫地址中的入隊序號和出隊序號送到讀回數(shù)據(jù)產(chǎn)生模塊鎖存;隊列序號存儲器包括入隊序號寄存器、出隊序號寄存器,入隊序號寄存器、出隊序號寄存器分別存儲當(dāng)前隊列的入隊序號、出隊序號;讀回數(shù)據(jù)產(chǎn)生模塊,分別與隊列序號存儲器、CPU接口總線、加1模塊相連,用于對隊列序號存儲器送出的入隊序號和出隊序號進行鎖存;并判斷入隊序號與出隊序號的相關(guān)性,若符合相關(guān)性,從隊列序號存儲器的寫地址中選擇需要輸出的序號送加1模塊,讀回數(shù)據(jù)產(chǎn)生模塊返回要輸出的序號;若不符合相關(guān)性,讀回數(shù)據(jù)產(chǎn)生模塊返回告警信號到CPU接口總線;加1模塊,連接于讀回數(shù)據(jù)產(chǎn)生模塊和隊列序號存儲器之間,用于接收讀回數(shù)據(jù)產(chǎn)生模塊發(fā)送的序號,并加上1個地址計數(shù)單位后送到隊列序號存儲器。
上述的序號為自然數(shù),所述1個地址計數(shù)單位為1。
優(yōu)選的,為了使每次的讀取操作少做一次地址偏移動作,設(shè)上述的序號為操作隊列的地址值,所述1個地址計數(shù)單位為當(dāng)前隊列的1個操作單元地址的字節(jié)數(shù)。
本發(fā)明還提供了一種多核并行先進先出隊列操作方法,包括以下步驟a、始化隊列數(shù)組,并預(yù)設(shè)自動排號裝置中入隊序號寄存器和出隊序號寄存器的初始值;b、每個核讀取自動排號裝置中入隊序號寄存器中的值確定數(shù)組位置,判斷當(dāng)前入隊序號與出隊序號的相關(guān)性,若符合相關(guān)性對隊列數(shù)組實現(xiàn)入隊操作,同時自動排號裝置實現(xiàn)將當(dāng)前入隊序號寄存器中的值加1個計數(shù)單位;若不符合相關(guān)性,則返回告警信號給當(dāng)前核。
c、每個核讀取出自動排號裝置中出隊序號寄存器中的值確定數(shù)組位置,判斷當(dāng)前入隊序號與出隊序號的相關(guān)性,若符合相關(guān)性對隊列數(shù)組實現(xiàn)出隊操作,同時自動排號裝置中實現(xiàn)將當(dāng)前出隊序號寄存器中的值加1個計數(shù)單位;若不符合相關(guān)性,則返回告警信號給當(dāng)前核。
上述,入隊序號與出隊序號的相關(guān)性為當(dāng)入隊時入隊序號加1個地址計數(shù)單位后不等于出隊序號;當(dāng)出隊時出隊序號不等于入隊序號。
本發(fā)明的有益效果是本發(fā)明由于實現(xiàn)了多個核對同一隊列的入隊、出隊操作完全不需要互斥,因此對多核處理系統(tǒng)性能有較大提升。并且出入隊的效率同核的個數(shù)完全獨立,也就是增加新的核對隊列的操作幾乎沒有性能上的影響。對硬件要求較低,結(jié)構(gòu)簡單,對硬件資源占用少。
以下結(jié)合附圖與實施例對本發(fā)明做進一步說明。
圖1為本發(fā)明的系統(tǒng)結(jié)構(gòu)圖;圖2為實施例自動排號裝置的結(jié)構(gòu)圖。
具體實施例方式
假如有10個任務(wù)需要3個核進行處理,任務(wù)0在入隊時從自動排號機中取得一個序號0,于是將任務(wù)0放入數(shù)組第0個單元中,任務(wù)1在入隊時從自動排號機中取得下一個序號1,于是將任務(wù)1放入數(shù)組第1個單元中…那么這10個任務(wù)通過一個自動排號裝置分別領(lǐng)到0-9的號碼,按照這個號碼分別編入到隊列數(shù)組中。這一部分是任務(wù)的入隊操作。
下面核空閑時通過另外一個自動排號裝置領(lǐng)到需要處理的號碼核0首先取得序號0,于是處理數(shù)組第0個單元對應(yīng)的任務(wù)0,同時核1再從自動排號裝置中取下一個序號1,于是處理數(shù)組1對應(yīng)的任務(wù)1。每個核每處理完一個任務(wù)再從自動排號裝置中取得下一個號碼。這樣三個核會保證將隊列中所有的任務(wù)都順序處理完畢而不會產(chǎn)生沖突。
在這個模型中,自動排號裝置需要完成加1然后寫的原子操作。如果用軟件來實現(xiàn)又需要涉及到加鎖,因此使用硬件來實現(xiàn)如圖1所示的多核并行先進先出隊列處理系統(tǒng)多個核通過CPU接口總線與自動排號裝置相連;自動排號裝置包括讀地址產(chǎn)生模塊、寫地址產(chǎn)生模塊、隊列序號存儲器、讀回數(shù)據(jù)產(chǎn)生模塊、加1模塊;CPU接口總線通過讀地址產(chǎn)生模塊與隊列序號存儲器的讀地址相連;CPU接口總線通過寫地址產(chǎn)生模塊與隊列序號存儲器的讀地址相連;讀回數(shù)據(jù)產(chǎn)生模塊分別與連接隊列序號存儲器、CPU接口總線、加1模塊相連;加1模塊連接于讀回數(shù)據(jù)產(chǎn)生模塊和隊列序號存儲器之間。
具體可通過FPGA來實現(xiàn)這個自動排號裝置,采用一種可以預(yù)設(shè)初值的FPGA,保證隊列先進先出的加1然后寫的原子操作,產(chǎn)生每次讀操作遞加的序號,并且能夠保證入隊出隊兩個序號的相關(guān)性,自動排號裝置以此為基礎(chǔ)維護一個多核的無競爭多輸入多輸出的隊列。對于隊列長度為n的隊列,初始化一個大小為n的數(shù)組。數(shù)組中放置所需要處理的任務(wù)指針。
自動排號裝置每個隊列地址應(yīng)該可以設(shè)置初始序號,隊列長度。每個隊列的序號等于隊列長度以后自動從0開始。對于一個隊列至少應(yīng)該實現(xiàn)兩個隊列地址,即入隊地址、出隊地址,可以分別從這兩個地址讀出入隊序號和出隊序號。入隊序號與出隊序號有相關(guān)性出隊地址不應(yīng)該等于入隊地址,入隊地址在繞回以后加1不能等于出隊地址,即當(dāng)入隊時入隊地址加1不能等于出隊地址以及出隊時出隊地址不能等于入隊地址。
在FPGA中的初始值設(shè)置為數(shù)組的首地址,每次讀操作FPGA自動增加1個地址計數(shù)單位,該1個地址計數(shù)單位為當(dāng)前隊列的1個操作單元地址的字節(jié)數(shù),即4。則能夠保證每次從FPGA中讀取的值即為下一個序號對應(yīng)數(shù)組指針。相比設(shè)置1個地址計數(shù)單位為自然數(shù),可以使軟件少做一次從首地址偏移的動作。FPGA有一個先讀后寫的寄存器操作,為實現(xiàn)成百上千個這樣的寄存器,可使用內(nèi)嵌雙口RAM。
FPGA與每個核接口方法有核的通用I/O腳;核的擴展總線;PCI總線的slave設(shè)備;HT總線的端點設(shè)備;PCi-Express總線的端點設(shè)備;仿真DDR/DDR2內(nèi)存接口等。
如圖2所示的自動排號裝置,包括地址譯碼器、2選1邏輯模塊、寫信號產(chǎn)生模塊、讀地址產(chǎn)生模塊、寫地址產(chǎn)生模塊、隊列序號存儲器、讀回數(shù)據(jù)產(chǎn)生模塊、加1模塊。
多個核通過地址線分別與地址譯碼器、寫信號產(chǎn)生模塊、讀地址產(chǎn)生模塊、寫地址產(chǎn)生模塊相連后,再與隊列序號存儲器相連;每個核讀寫信號通過寫信號產(chǎn)生模塊與隊列序號存儲器相連;每個核寫數(shù)據(jù)通過2選1邏輯模塊與隊列序號存儲器相連;隊列序號存儲器通過讀回數(shù)據(jù)產(chǎn)生模塊輸出數(shù)據(jù),讀回數(shù)據(jù)產(chǎn)生模塊通過加1模塊將讀回數(shù)據(jù)加1輸回到隊列序號存儲器。
隊列序號存儲器采用FPGA的內(nèi)嵌雙口RAM,包括有入隊序號寄存器、出隊序號寄存器。每一個隊列只需要硬件存儲當(dāng)前入隊地址和出隊地址,每個地址占用4字節(jié)地址,因此只需要硬件輔助提供4字節(jié)存貯空間。系統(tǒng)可實現(xiàn)對多個隊列的入隊、出隊操作,即隊列序號存儲器分別為每個隊列提供2個4字節(jié)的存貯空間,2個存貯空間分別記錄該隊列當(dāng)前的入隊地址和出隊地址。設(shè)置加1操作為每次讀入隊和出隊地址序號遞加值為4,即一個指針長度。
初始化操作時,2選1邏輯模塊檢測到來自CPU接口總線的寫地址操作信號,接通CPU接口總線與雙口RAM,每個核通過對一個寫地址操作來初始化入隊、出隊序號寄存器的值,同時將入隊地址和出隊地址設(shè)置為兩個相鄰的地址。
正常工作后,每當(dāng)核讀入隊地址時,讀地址產(chǎn)生模塊根據(jù)CPU給出的地址自動產(chǎn)生入隊地址和出隊地址,送給隊列序號存儲器的讀地址,隊列序號存儲器在讀地址中讀出要操作的當(dāng)前隊列的入隊地址和出隊地址對應(yīng)的序號,送到讀回數(shù)據(jù)產(chǎn)生模塊鎖存;另一方面,入隊地址通過寫地址產(chǎn)生模塊被鎖存給隊列序號存儲器的寫地址。核的讀脈沖經(jīng)寫信號產(chǎn)生模塊處理后變成雙口RAM的寫脈沖,讀回數(shù)據(jù)產(chǎn)生模塊從隊列序號存儲器的寫地址中選擇需要輸出的序號加1后寫回雙口RAM的入隊序號寄存器中,2選1邏輯模塊檢測到來自加1模塊的寫操作,接通加1模塊與雙口RAM,從而實現(xiàn)入隊序號寄存器讀后加1的功能,設(shè)置入隊地址的指針為任務(wù)指針;另外,讀回數(shù)據(jù)產(chǎn)生模塊如果發(fā)現(xiàn)入隊序號加1后等于出隊序號,即隊列將滿,讀回數(shù)據(jù)產(chǎn)生模塊將控制回寫的信號不被加1,同時設(shè)置核讀回數(shù)據(jù)為“滿”的告警信號,以通知核,入隊操作失敗。
每當(dāng)核讀出隊地址時,讀地址產(chǎn)生模塊也會連續(xù)產(chǎn)生入隊地址和出隊地址送給隊列序號存儲器的讀地址,入隊序號和出隊序號從隊列序號存儲器送到讀回數(shù)據(jù)產(chǎn)生模塊鎖存,出隊序號寄存器的序號通過讀回數(shù)據(jù)產(chǎn)生模塊送出;另一方面,出隊地址被鎖存給隊列序號存儲器寫地址,核讀脈沖經(jīng)寫信號產(chǎn)生模塊處理后變成雙口RAM的寫脈沖將CPU讀回數(shù)據(jù)加1后的數(shù)據(jù)寫回雙口RAM的出隊序號寄存器中,2選1邏輯模塊檢測到來自加1模塊的寫操作,接通加1模塊與雙口RAM,從而實現(xiàn)出隊序號寄存器讀后加1的功能,設(shè)置出隊地址的指針為任務(wù)指針;另外,讀回數(shù)據(jù)產(chǎn)生模塊如果發(fā)現(xiàn)出隊序號寄存器讀出來后等于入隊序號寄存器的值,即隊列將空,讀回數(shù)據(jù)產(chǎn)生模塊將控制回寫的信號不被加1,同時設(shè)置核讀回數(shù)據(jù)為“空”的告警信號,以通知核,出隊操作失敗。
權(quán)利要求
1.多核并行先進先出隊列處理系統(tǒng),其特征在于,多個核通過CPU接口總線與自動排號裝置相連;所述自動排號裝置包括讀地址產(chǎn)生模塊、寫地址產(chǎn)生模塊、隊列序號存儲器、讀回數(shù)據(jù)產(chǎn)生模塊、加1模塊;讀地址產(chǎn)生模塊,CPU接口總線通過讀地址產(chǎn)生模塊與隊列序號存儲器的讀地址相連,用于每個核讀隊列序號存儲器時,根據(jù)該核送出的地址,產(chǎn)生入隊序號寄存器地址和出隊序號寄存器地址,送到隊列序號存儲器的讀地址;寫地址產(chǎn)生模塊,CPU接口總線通過寫地址產(chǎn)生模塊與隊列序號存儲器的讀地址相連,用于將每個核送出的地址鎖存到隊列序號存儲器的寫地址;隊列序號存儲器,包括有入隊序號寄存器、出隊序號寄存器,所述隊列序號存儲器用于讀出讀地址中要操作的當(dāng)前隊列的入隊序號和出隊序號送到讀回數(shù)據(jù)產(chǎn)生模塊鎖存;將寫地址中的入隊序號和出隊序號送到讀回數(shù)據(jù)產(chǎn)生模塊鎖存;入隊序號寄存器、出隊序號寄存器分別存儲當(dāng)前隊列的入隊序號、出隊序號;讀回數(shù)據(jù)產(chǎn)生模塊,分別與隊列序號存儲器、CPU接口總線、加1模塊相連,用于對隊列序號存儲器送出的入隊序號和出隊序號進行鎖存;并判斷入隊序號與出隊序號的相關(guān)性,若符合相關(guān)性,從隊列序號存儲器的寫地址中選擇需要輸出的序號送加1模塊,讀回數(shù)據(jù)產(chǎn)生模塊返回要輸出的序號;若不符合相關(guān)性,讀回數(shù)據(jù)產(chǎn)生模塊返回告警信號到CPU接口總線;加1模塊,連接于讀回數(shù)據(jù)產(chǎn)生模塊和隊列序號存儲器之間,用于接收讀回數(shù)據(jù)產(chǎn)生模塊發(fā)送的序號,并加上1個地址計數(shù)單位后送到隊列序號存儲器;所述入隊序號與出隊序號的相關(guān)性為當(dāng)入隊時入隊地址加1后不等于出隊地址;當(dāng)出隊時出隊地址不等于入隊地址。
2.如權(quán)利要求1所述的多核并行先進先出隊列處理系統(tǒng),其特征在于,所述入隊序號、出隊序號為自然數(shù),所述1個地址計數(shù)單位為1。
3.如權(quán)利要求1所述的多核并行先進先出隊列處理系統(tǒng),其特征在于,所述入隊序號、出隊序號為操作隊列的地址值,所述1個地址計數(shù)單位為當(dāng)前隊列的1個操作單元地址的字節(jié)數(shù)。
4.如權(quán)利要求1所述的多核并行先進先出隊列處理系統(tǒng),其特征在于,所述隊列序號存儲器包含有多個隊列的入隊序號寄存器、出隊序號寄存器。
5.如權(quán)利要求1、2、3或4所述的多核并行先進先出隊列處理系統(tǒng),其特征在于,所述隊列序號存儲器中同一隊列的入隊序號寄存器和出隊序號寄存器的地址為兩個相鄰地址。
6.如權(quán)利要求5所述的多核并行先進先出隊列處理系統(tǒng),其特征在于,所述隊列序號存儲器對同一隊列的入隊序號寄存器、出隊序號寄存器分別分配4字節(jié)的存貯空間。
7.如權(quán)利要求6所述的多核并行先進先出隊列處理系統(tǒng),其特征在于,所述自動排號裝置采用FPGA實現(xiàn)。
8.多核并行先進先出隊列操作方法,包括以下步驟a、初始化隊列數(shù)組,并預(yù)設(shè)自動排號裝置中入隊序號寄存器和出隊序號寄存器的初始值;b、每個核讀取自動排號裝置中入隊序號寄存器中的值確定數(shù)組位置,判斷當(dāng)前入隊序號與出隊序號的相關(guān)性,若符合相關(guān)性對隊列數(shù)組實現(xiàn)入隊操作,同時自動排號裝置實現(xiàn)將當(dāng)前入隊序號寄存器中的值加1個計數(shù)單位;若不符合相關(guān)性,則返回告警信號給當(dāng)前核;c、每個核讀取出自動排號裝置中出隊序號寄存器中的值確定數(shù)組位置,判斷當(dāng)前入隊序號與出隊序號的相關(guān)性,若符合相關(guān)性對隊列數(shù)組實現(xiàn)出隊操作,同時自動排號裝置中實現(xiàn)將當(dāng)前出隊序號寄存器中的值加1個計數(shù)單位;若不符合相關(guān)性,則返回告警信號給當(dāng)前核;所述入隊序號與出隊序號的相關(guān)性為當(dāng)入隊時入隊序號加1個地址計數(shù)單位后不等于出隊序號;當(dāng)出隊時出隊序號不等于入隊序號。
全文摘要
多核并行先進先出隊列處理系統(tǒng)及方法,涉及一種多核處理器系統(tǒng)對共享資源的訪問技術(shù)。克服現(xiàn)有技術(shù)中軟件加鎖來實現(xiàn)多核處理器操作隊列性能較低的缺點,提高多核處理器并行操作隊列時的效率。通過自動排號裝置多個核實現(xiàn)對同一隊列的入隊、出隊操作,每個核讀取自動排號裝置中入隊序號寄存器中的值確定數(shù)組位置,判斷當(dāng)前入隊序號與出隊序號的相關(guān)性,若符合相關(guān)性對隊列數(shù)組實現(xiàn)入隊操作,同時自動排號裝置實現(xiàn)將當(dāng)前入隊序號寄存器中的值加1個計數(shù)單位;若不符合相關(guān)性,則返回告警信號給當(dāng)前核。由于實現(xiàn)了多個核對同一隊列的入隊、出隊操作完全不需要互斥,因此對多核處理系統(tǒng)性能有較大提升。對硬件要求較低,結(jié)構(gòu)簡單,對硬件資源占用少。
文檔編號G06F9/46GK1889046SQ20061002152
公開日2007年1月3日 申請日期2006年8月3日 優(yōu)先權(quán)日2006年8月3日
發(fā)明者梁暉, 李建國, 劉學(xué)明 申請人:邁普(四川)通信技術(shù)有限公司