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