專(zhuān)利名稱(chēng):對(duì)片上多核系統(tǒng)中的高速接口進(jìn)行控制的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于通信設(shè)備技術(shù)領(lǐng)域,特別涉及高速接口的控制方法及系統(tǒng),可用于片 上多核系統(tǒng)接收和發(fā)送數(shù)據(jù)。
背景技術(shù):
片上系統(tǒng)一般根據(jù)功能可分為三部分,分別是數(shù)據(jù)處理部分,數(shù)據(jù)存儲(chǔ)部分和數(shù) 據(jù)交換接口部分,數(shù)據(jù)能否快速可靠的進(jìn)入片上系統(tǒng)進(jìn)而得到及時(shí)的處理,直接關(guān)系到系 統(tǒng)的總體性能,例如在常見(jiàn)網(wǎng)絡(luò)處理器中,多個(gè)多線程包處理單元,通常稱(chēng)為PE、通用的主 處理器ARM、高速小容量靜態(tài)隨機(jī)存取存儲(chǔ)器SRAM、大容量動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器DRAM、數(shù)據(jù) 交換接口單元構(gòu)成。通??己司W(wǎng)絡(luò)處理器的性能參數(shù)主要有主設(shè)備的平均等待時(shí)間和從 設(shè)備的平均響應(yīng)時(shí)間、延遲、吞吐量和總線利用率。其中最重要的就是包的吞吐量。為了能 夠快速的對(duì)外部設(shè)備的數(shù)據(jù)進(jìn)行處理和轉(zhuǎn)發(fā),包處理單元解析發(fā)往本設(shè)備的數(shù)據(jù)報(bào)文中的 包頭信息,提取包目的地,服務(wù)分類(lèi)等信息,通過(guò)查找轉(zhuǎn)發(fā)表確定數(shù)據(jù)報(bào)文的下一跳目的地 址,進(jìn)而修改數(shù)據(jù)包并發(fā)往相應(yīng)網(wǎng)絡(luò)端口,實(shí)現(xiàn)對(duì)數(shù)據(jù)包的處理。圖1提供了一個(gè)傳統(tǒng)的 網(wǎng)絡(luò)處理器體系結(jié)構(gòu)示意圖。該體系結(jié)構(gòu)包含的主設(shè)備有多個(gè)包處理單元101以及主處理 器103,其主要負(fù)責(zé)異常情況的處理,以及多種共享的從設(shè)備資源,包括SRAM單元107、DRAM 單元109、初始化模塊111和數(shù)據(jù)交換接口 113。這些設(shè)備單元全部通過(guò)一組系統(tǒng)共享總線 105相互連接,通常情況下網(wǎng)絡(luò)處理器芯片與外部的MAC設(shè)備115連接。來(lái)自MAC設(shè)備的 單個(gè)數(shù)據(jù)包一般最大為1518Byte,數(shù)據(jù)流通過(guò)MAC層時(shí),數(shù)據(jù)包被切割為64Byte大小的微 包,第一個(gè)微包是數(shù)據(jù)包中的第一個(gè)數(shù)據(jù)塊,接收到這個(gè)微包時(shí)接口設(shè)置S0P標(biāo)記,在接收 到數(shù)據(jù)包中的最后一個(gè)微包時(shí),接口設(shè)置E0P標(biāo)記。如果外部的數(shù)據(jù)包小于微包的最小長(zhǎng) 度,則將其填充并將其表示成一個(gè)微包,這時(shí)接口既設(shè)置S0P標(biāo)記,又設(shè)置E0P標(biāo)記。數(shù)據(jù) 微包可在S0P和E0P標(biāo)識(shí)下進(jìn)行重組,網(wǎng)絡(luò)數(shù)據(jù)處理單元會(huì)分配一個(gè)新的緩存給標(biāo)記有S0P 的數(shù)據(jù)微包,S0P數(shù)據(jù)會(huì)放置在緩存的起始位置。對(duì)于沒(méi)有標(biāo)志S0P的數(shù)據(jù)包會(huì)被直接置 于上一個(gè)微包之后,只有在完整的數(shù)據(jù)包接收后,才能知道它的長(zhǎng)度。在外接多個(gè)慢速M(fèi)AC時(shí),傳統(tǒng)的方法是采用端口的輪詢(xún)機(jī)制,在接收數(shù)據(jù)時(shí)通常 是按照以下的步驟進(jìn)行的第一步即高速包處理引擎線程在發(fā)出數(shù)據(jù)接收指令或數(shù)據(jù)發(fā)送指令前,首先需 要通過(guò)數(shù)據(jù)交換接口獲取MAC設(shè)備的端口狀態(tài),即哪些端口已準(zhǔn)備好發(fā)送數(shù)據(jù),哪些端口 已準(zhǔn)備好接收數(shù)據(jù),對(duì)于準(zhǔn)備好發(fā)送數(shù)據(jù)的端口,包處理單元才會(huì)發(fā)出接收請(qǐng)求。第二步接收控制器根據(jù)包處理單元的接受請(qǐng)求把相應(yīng)端口的數(shù)據(jù)放進(jìn)接收緩存 里進(jìn)行下一步的處理,這個(gè)過(guò)程中由于每個(gè)線程負(fù)責(zé)的端口都不同,一個(gè)線程負(fù)責(zé)一個(gè)端 口數(shù)據(jù)的接收,它們也是按照一定的順序進(jìn)行工作的,所以接收進(jìn)來(lái)的包的順序也沒(méi)有被 打亂。第三步包處理單元將數(shù)據(jù)包的頭部信息更新后寫(xiě)入DRAM存儲(chǔ)器以及通過(guò)查找 表確定數(shù)據(jù)包將要發(fā)送的端口。
第四步把數(shù)據(jù)包和控制信息寫(xiě)入待發(fā)送的發(fā)送緩存單元,發(fā)送控制器在輪詢(xún)到 所要發(fā)送的端口已經(jīng)準(zhǔn)備好接收數(shù)據(jù)時(shí),處理好的數(shù)據(jù)包能夠正確的發(fā)送出去。以網(wǎng)絡(luò)處理器掛接7個(gè)1端口 MAC設(shè)備為例,一個(gè)就緒輪詢(xún)周期包含12條指令,其 中用兩條指令從7個(gè)MAC分別收集接收和發(fā)送就緒標(biāo)志,其他為空指令。此時(shí)輪詢(xún)時(shí)間僅占 總時(shí)間的一小部分,大部分的時(shí)間都用在數(shù)據(jù)轉(zhuǎn)發(fā)上,這種輪詢(xún)方式在外接多個(gè)慢MAC時(shí) 效率是非常高的。但是隨著外接MAC數(shù)量的減少,輪詢(xún)方式在數(shù)據(jù)轉(zhuǎn)發(fā)效率上會(huì)逐減,特別 是外接兩個(gè)單端口千兆MAC,一個(gè)用于接收,另一個(gè)用于發(fā)送,這時(shí)兩條指令從兩個(gè)MAC分 別收集接收和發(fā)送就緒標(biāo)志,其它為空指令,一個(gè)輪詢(xún)周期需要36個(gè)總線周期,在100MHz 的頻率下輪詢(xún)時(shí)間為360ns,轉(zhuǎn)發(fā)兩個(gè)64字節(jié)的數(shù)據(jù)需要320ns。輪詢(xún)時(shí)間占總時(shí)間的約 53%,時(shí)間都用在輪詢(xún)就緒標(biāo)志上去了,效率非常低,并且最高數(shù)據(jù)吞吐率僅為1. 5Gbps,無(wú) 法滿(mǎn)足用戶(hù)日益增長(zhǎng)的對(duì)網(wǎng)絡(luò)處理器用于高速環(huán)境的需求。
發(fā)明內(nèi)容
本發(fā)明為了解決上述技術(shù)的不足,提出對(duì)片上多核系統(tǒng)中的高速接口進(jìn)行控制的 方法及系統(tǒng),可以滿(mǎn)足用戶(hù)日益增長(zhǎng)的對(duì)網(wǎng)絡(luò)處理器用于高速環(huán)境的需求。實(shí)現(xiàn)本發(fā)明目的技術(shù)思路是將多個(gè)數(shù)據(jù)包處理單元作為主控端分配多個(gè)數(shù)據(jù)包 處理單元的線程從一個(gè)高速外部設(shè)備端口接收數(shù)據(jù)包。為了解決單個(gè)數(shù)據(jù)包處理單元速度 慢的問(wèn)題,采用多個(gè)包處理單元并行工作來(lái)處理一個(gè)高速端口的數(shù)據(jù)流,使數(shù)據(jù)包處理單 元的處理能力不受限于其的最高處理速度;主動(dòng)請(qǐng)求方式用在數(shù)據(jù)接收過(guò)程中,不需要先 輪詢(xún)端口的就緒狀態(tài),主動(dòng)請(qǐng)求方式下的數(shù)據(jù)接收可以接近線速工作;要保證接收進(jìn)來(lái)數(shù) 據(jù)的順序不被打亂,同時(shí)線程能夠以設(shè)定的順序工作;要保證數(shù)據(jù)接口在發(fā)送數(shù)據(jù)時(shí)能夠 高效可靠,采用兩個(gè)有效標(biāo)志位置位的方式避免了數(shù)據(jù)包處理單元和存儲(chǔ)單元還未將控制 信息和數(shù)據(jù)包全部寫(xiě)入發(fā)送單元就將數(shù)據(jù)從發(fā)送緩存單元中發(fā)送出去而造成的不定態(tài)。這 樣可以接收處理和轉(zhuǎn)發(fā)外部高速設(shè)備的數(shù)據(jù)流的,從而滿(mǎn)足性能要求。本發(fā)明的技術(shù)方案如下—、本發(fā)明對(duì)片上多核系統(tǒng)中的聞速接口進(jìn)彳丁控制的系統(tǒng)數(shù)據(jù)包處理單元,用于控制高速接口中數(shù)據(jù)包的接收、處理數(shù)據(jù)包和控制高速接 口中數(shù)據(jù)包的發(fā)送;接收緩存器,用于暫存來(lái)自外部設(shè)備中高速端口的數(shù)據(jù)包;接收控制器,根據(jù)數(shù)據(jù)包處理單元直接發(fā)出的接收請(qǐng)求選通外部設(shè)備端口把數(shù)據(jù) 包放入接收緩存單元;發(fā)送緩存器,用于存放來(lái)自DRAM中的將要發(fā)送到外部的數(shù)據(jù)包;發(fā)送控制器,根據(jù)數(shù)據(jù)包處理單元發(fā)出的發(fā)送控制信息把發(fā)送緩存單元中的數(shù)據(jù) 包發(fā)送到指定的外部設(shè)備端口;數(shù)據(jù)包信息寄存器,用來(lái)存放接收控制器產(chǎn)生的接收進(jìn)來(lái)的數(shù)據(jù)包信息;有效標(biāo)志位,用來(lái)標(biāo)記數(shù)據(jù)包處理單元是否已將數(shù)據(jù)包和數(shù)據(jù)包發(fā)送控制信息寫(xiě) 入發(fā)送緩存單元;線程郵箱,用來(lái)存放線程工作的狀態(tài)信息;大容量動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器DRAM,用于存儲(chǔ)來(lái)自數(shù)據(jù)包處理單元處理后的數(shù)據(jù)包。上述系統(tǒng)中,所述的數(shù)據(jù)包信息寄存器,它們分別是快端口序列號(hào)寄存器,入隊(duì)序 列號(hào)寄存器,包序列號(hào)寄存器,微包序列號(hào)寄存器;快端口序列號(hào)寄存器,用于存放接收的不同數(shù)據(jù)包中的微包信息,這些微包信息 通過(guò)包處理單元的讀取對(duì)不同數(shù)據(jù)包中的微包進(jìn)行區(qū)分;包序列號(hào)寄存器,用于存放接收的一個(gè)數(shù)據(jù)包的包頭信息,每存放一個(gè)包頭,包序 列號(hào)寄存器的值自增一,并把自增一后的包序列號(hào)寄存器中的值傳遞給入隊(duì)序列號(hào)寄存 器;微包序列號(hào)寄存器,用于存放數(shù)據(jù)包的非包頭信息,每存放一個(gè)非包頭,微包序列 號(hào)寄存器的值自增一,并把自增一后的微包序列號(hào)寄存器中的值傳遞給入隊(duì)序列號(hào)寄存 器;入隊(duì)序列號(hào)寄存器,用于存放包序列號(hào)寄存器和微包序列號(hào)寄存器自增一后的 值,線程根據(jù)入隊(duì)序列號(hào)寄存器、包序列號(hào)寄存器和微包序列號(hào)寄存器中的信息保持?jǐn)?shù)據(jù) 包之間的順序和微包之間的順序。二、本發(fā)明對(duì)片上多核系統(tǒng)中的高速接口進(jìn)行控制的方法,包括如下步驟(1)將片上多核系統(tǒng)的數(shù)據(jù)包處理單元分為接收處理單元和發(fā)送處理單元,分別 設(shè)置接收處理單元和發(fā)送處理單元的相應(yīng)線程的工作方式;(2)在數(shù)據(jù)接收端,為外部設(shè)備的一個(gè)高速端口分配M個(gè)相同可編程的接收處理 單元,M取值為2,4,8,16 ;(3)為每個(gè)接收處理單元設(shè)置N個(gè)線程,并使在同一時(shí)刻只有一個(gè)線程處于工作 狀態(tài),其它線程出于休眠或者等待狀態(tài),N取值為4,8,16,32 ;(4)為每個(gè)接收處理單元的所有線程分配一個(gè)接收緩存單元,用以暫存來(lái)自外部 高速端口的數(shù)據(jù)包;(5)在不需要查詢(xún)各個(gè)端口就緒狀態(tài)的情況下,接收處理單元的工作線程直接發(fā) 出接收請(qǐng)求;(6)接收處理單元的線程根據(jù)接收請(qǐng)求接收和處理數(shù)據(jù)包,為了使接收進(jìn)來(lái)的數(shù) 據(jù)包保持原來(lái)的順序,為每個(gè)線程分配四個(gè)寄存器用來(lái)暫存接收進(jìn)來(lái)的數(shù)據(jù)包信息(7)為每個(gè)接收處理單元的線程分配一個(gè)郵箱,接收處理單元的多個(gè)線程通過(guò)郵 箱及時(shí)交換工作狀態(tài)信息,便于線程切換;(8)在數(shù)據(jù)發(fā)送端,為外部設(shè)備的一個(gè)高速端口分配數(shù)個(gè)相同可編程的發(fā)送處理 單元;(9)為每個(gè)發(fā)送處理單元設(shè)置N個(gè)線程,其中第一個(gè)為調(diào)度線程,其它幾個(gè)為填充 線程,并通過(guò)調(diào)度線程控制填充線程的工作狀態(tài),N取值為4,8,16,32 ;(10)設(shè)置每個(gè)發(fā)送處理單元的填充線程共享多個(gè)發(fā)送緩存單元,并將發(fā)送緩沖單 元?jiǎng)澐譃閿?shù)據(jù)域和控制域,分別用來(lái)暫存將要發(fā)送到外部設(shè)備的數(shù)據(jù)包和數(shù)據(jù)包的發(fā)送控 制信息;(11)在數(shù)據(jù)準(zhǔn)備發(fā)送至外部設(shè)備時(shí),為每個(gè)發(fā)送緩沖單元設(shè)置數(shù)據(jù)域標(biāo)志位和控 制域標(biāo)志位,發(fā)送處理單元的線程查詢(xún)數(shù)據(jù)域標(biāo)志位和控制域標(biāo)志位后根據(jù)發(fā)送控制信息 發(fā)送數(shù)據(jù)包。
本發(fā)明與現(xiàn)有技術(shù)相比具有以下優(yōu)點(diǎn)1)本發(fā)明采用多個(gè)處理單元并行處理來(lái)自外部設(shè)備的高速數(shù)據(jù),比單個(gè)包處理單 元的處理速度快很多,可以使接收處理單元的處理能力不受限于其的最高處理速度;2)本發(fā)明由于將包處理單元分為接收處理單元和發(fā)送處理單元,使其能夠?qū)W⒂?本處理單元的工作,不會(huì)引起接收和發(fā)送數(shù)據(jù)包過(guò)程的混亂;3)本發(fā)明由于通過(guò)接收處理單元的工作線程直接發(fā)出接收請(qǐng)求,不需要先查詢(xún)數(shù) 據(jù)包端口的就緒狀態(tài),使得數(shù)據(jù)包能夠及時(shí)進(jìn)入片上系統(tǒng)得到處理和轉(zhuǎn)發(fā);4)本發(fā)明由于為外部設(shè)備的一個(gè)數(shù)據(jù)包端口分配M個(gè)相同可編程的接收處理單 元,確保了每次發(fā)出的接收請(qǐng)求都能得到執(zhí)行,這種方式下線程對(duì)數(shù)據(jù)包的接收可以接近 線速工作;5)本發(fā)明由于為每個(gè)接收處理單元的線程提供一個(gè)郵箱,使接收處理單元的線程 可通過(guò)郵箱及時(shí)交換工作狀態(tài)信息,進(jìn)行高速切換;6)本發(fā)明由于為一個(gè)數(shù)據(jù)包端口分配了多個(gè)接收處理單元的線程,并采用四個(gè)寄 存器用來(lái)暫存接收進(jìn)來(lái)高速端口的數(shù)據(jù)包信息,使得接收進(jìn)來(lái)的數(shù)據(jù)包的順序不會(huì)被打亂 而造成處理失敗;7)本發(fā)明在數(shù)據(jù)發(fā)送端,采用兩個(gè)有效標(biāo)志位置位的方式確保數(shù)據(jù)能夠高效可 靠的發(fā)送到外部設(shè)備,避免了因發(fā)送處理單元的線程還未將發(fā)送控制信息和數(shù)據(jù)包寫(xiě)入發(fā) 送緩存單元的控制域和數(shù)據(jù)域,線程就將數(shù)據(jù)從發(fā)送緩存單元上發(fā)送出去而造成的發(fā)送失 敗,提高了發(fā)送的成功率。
圖1是典型的網(wǎng)絡(luò)處理器系統(tǒng)體系結(jié)構(gòu)示意圖;圖2是本發(fā)明的控制系統(tǒng)結(jié)構(gòu)示意圖;圖3是本發(fā)明的控制方法總流程圖;圖4是本發(fā)明控制方法中的接收處理單元線程切換子流程圖;圖5是本發(fā)明控制方法中的發(fā)送處理單元的線程調(diào)度子流程圖;圖6是本發(fā)明控制方法中保持?jǐn)?shù)據(jù)包順序存儲(chǔ)的示意圖;圖7是本發(fā)明控制方法中數(shù)據(jù)包發(fā)送示意圖。
具體實(shí)施例方式本發(fā)明通過(guò)舉例的方式展示,但是并不限制于附圖,在附圖中相同的參考號(hào)代表 相似的結(jié)構(gòu)。以下結(jié)合具體實(shí)施例,對(duì)本發(fā)明做進(jìn)一步詳細(xì)的描述參考圖2,為本發(fā)明的控制系統(tǒng),包含數(shù)據(jù)包處理單元202,數(shù)據(jù)包信息寄存器 204,接收緩存器206,發(fā)送緩存器208,接收控制器210,發(fā)送控制器212,有效標(biāo)志位214,線 程郵箱216和大容量動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器DRAM218,其中數(shù)據(jù)包處理單元202,作為網(wǎng)絡(luò)處理器包處理的核心元件,它與其它單元頻繁交換 數(shù)據(jù),在本實(shí)施例中數(shù)據(jù)包處理單元包括四個(gè)數(shù)據(jù)包接收處理單元,兩個(gè)數(shù)據(jù)包發(fā)送處理 單元。該六個(gè)數(shù)據(jù)包處理單元作為主控端,是數(shù)據(jù)包處理任務(wù)的發(fā)起者,每個(gè)數(shù)據(jù)包處理單元有四個(gè)線程;接收緩存器206,用于暫存來(lái)自外部的數(shù)據(jù)包,該接收緩存器分為十六個(gè)接收緩存 單元,每個(gè)接收處理單元的線程分配有一個(gè)接收緩存單元;接收控制器210,根據(jù)數(shù)據(jù)包接收處理單元發(fā)出的接收請(qǐng)求選通外部設(shè)備端口,由 線程把數(shù)據(jù)包放入到被分配的接收緩存單元中;數(shù)據(jù)包信息寄存器204,用來(lái)存放數(shù)據(jù)包接收處理單元接收進(jìn)來(lái)的數(shù)據(jù)包信息,為 數(shù)據(jù)包包序的保持提供信息,該數(shù)據(jù)包信息寄存器包括快端口序列號(hào)寄存器204a、入隊(duì)序 列號(hào)寄存器204b、包序列號(hào)寄存器204c和微包序列號(hào)寄存器204d。其中快端口序列號(hào)寄存器204a,用于存放不同數(shù)據(jù)包中的微包信息,由接收控制器 210判斷接收進(jìn)來(lái)的微包是不是包頭,如果是包頭,接收控制器就將包頭是哪個(gè)數(shù)據(jù)包的信 息放入快端口序列號(hào)寄存器204a中,這些微包信息通過(guò)數(shù)據(jù)包接收處理單元的讀取對(duì)不 同數(shù)據(jù)包中的微包進(jìn)行區(qū)分;包序列號(hào)寄存器204c,用于存放接收的一個(gè)數(shù)據(jù)包的包頭信息,由接收控制器 210判斷接收進(jìn)來(lái)的微包是不是包頭,如果是包頭,數(shù)據(jù)包接收處理單元的線程每存放一個(gè) 包頭,包序列號(hào)寄存器的值自增一,并把自增一后的包序列號(hào)寄存器中的值傳遞給入隊(duì)序 列號(hào)寄存器;微包序列號(hào)寄存器204d,用于存放數(shù)據(jù)包的非包頭信息,由接收控制器210判斷 接收進(jìn)來(lái)的微包是不是包頭,如果是非包頭,數(shù)據(jù)包接收處理單元的線程每存放一個(gè)非包 頭,微包序列號(hào)寄存器的值自增一,并把自增一后的微包序列號(hào)寄存器中的值傳遞給入隊(duì) 序列號(hào)寄存器;入隊(duì)序列號(hào)寄存器204b,用于存放包序列號(hào)寄存器和微包序列號(hào)寄存器自增一后 的值;所述這四個(gè)寄存器協(xié)助線程完成如下功能1)微包之間的排序,這是保證數(shù)據(jù)包 不會(huì)亂;2)數(shù)據(jù)包之間的排序,這是保證先接收的數(shù)據(jù)包先排隊(duì);3)不同數(shù)據(jù)包中微包的 識(shí)別,這是保證數(shù)據(jù)包能正確重組;發(fā)送緩存器208,用于存放將要發(fā)送到外部的數(shù)據(jù)包和數(shù)據(jù)包控制信息,接收緩存 分為十六個(gè)單元,每個(gè)單元分為數(shù)據(jù)域和控制域;發(fā)送控制器212,根據(jù)數(shù)據(jù)包處理單元202發(fā)出的發(fā)送控制信息和有效標(biāo)志位214 把發(fā)送緩存單元中的數(shù)據(jù)包發(fā)送到指定的外部設(shè)備端口;有效標(biāo)志位214,用來(lái)標(biāo)記數(shù)據(jù)包處理單元是否已將數(shù)據(jù)包寫(xiě)入發(fā)送緩存單元,有 效標(biāo)志位分為第一有效標(biāo)志位和第二有效標(biāo)志位;線程郵箱216,用來(lái)存放線程工作的狀態(tài)信息;大容量動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器DRAM218,用于存儲(chǔ)來(lái)自數(shù)據(jù)包處理單元處理后的數(shù) 據(jù)包。有效標(biāo)志位214、線程郵箱216、快端口序列號(hào)寄存器204a、入隊(duì)序列號(hào)寄存器 204b、包序列號(hào)寄存器204c和微包順序號(hào)寄存器204d是數(shù)據(jù)處理的具體參與者;接收控制 器210、接收緩存器206、大容量動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器DRAM218、發(fā)送控制器212和發(fā)送緩存 器208作為數(shù)據(jù)處理的具體實(shí)施者。它們作為共享資源可被任一主控端訪問(wèn),本實(shí)施例中 該控制系統(tǒng)連接兩個(gè)外部設(shè)備的高速端口,整個(gè)系統(tǒng)的工作原理如下
首先,由數(shù)據(jù)包接收處理單元202直接發(fā)出接收請(qǐng)求,接收控制器210根據(jù)接收請(qǐng) 求選通外部設(shè)備端口,線程把數(shù)據(jù)包接收進(jìn)接收緩存單元,由接收控制器產(chǎn)生相應(yīng)數(shù)據(jù)包 的信息并存放到數(shù)據(jù)包信息寄存器204中;接著,在接收完成之后由接收控制器210產(chǎn)生產(chǎn)生喚醒下一個(gè)線程的信號(hào),由數(shù) 據(jù)包接收處理單元202對(duì)接收緩存器206中的數(shù)據(jù)包進(jìn)行處理,并根據(jù)數(shù)據(jù)包信息寄存器 中的信息把處理后的微包按接收進(jìn)來(lái)的順序轉(zhuǎn)存到DRAM218中,組成一個(gè)完整的數(shù)據(jù)包;然后,由數(shù)據(jù)包發(fā)送處理單元202把該數(shù)據(jù)包的發(fā)送控制信息寫(xiě)入發(fā)送緩存單元 中控制域,置這個(gè)單元對(duì)應(yīng)的第一有效標(biāo)志位有效;最后,由DRAM把數(shù)據(jù)包轉(zhuǎn)存到發(fā)送緩存單元中的數(shù)據(jù)域,置這個(gè)單元對(duì)應(yīng)的第二 有效標(biāo)志位有效;發(fā)送控制器212根據(jù)有效標(biāo)志位214和這個(gè)單元的控制域信息把發(fā)送緩 存單元中的數(shù)據(jù)包發(fā)送到指定的外部設(shè)備端口。參照?qǐng)D3,本發(fā)明的控制方法包括如下步驟步驟1 :系統(tǒng)初始化后,設(shè)置數(shù)據(jù)包接收處理單元線程的工作方式。參照?qǐng)D4,本步驟的具體實(shí)現(xiàn)如下(la)設(shè)定系統(tǒng)初始化后第一個(gè)數(shù)據(jù)包接收處理單元的一號(hào)線程開(kāi)始工作,在第一 個(gè)數(shù)據(jù)包處接收理單元的一號(hào)線程工作完成后,切換到第二個(gè)數(shù)據(jù)包接收處理單元的五號(hào) 線程開(kāi)始工作;(lb)在第一個(gè)數(shù)據(jù)包接收處理單元的其他線程處于空閑或休眠態(tài)時(shí),由第二個(gè)數(shù) 據(jù)包接收處理單元的五號(hào)線程喚醒第一個(gè)數(shù)據(jù)包接收處理單元的二號(hào)線程開(kāi)始工作;(lc)在第二個(gè)數(shù)據(jù)包接收處理單元的其他線程處于空閑或休眠態(tài)時(shí),由第一個(gè)數(shù) 據(jù)包接收處理單元的二號(hào)線程喚醒第二個(gè)數(shù)據(jù)包接收處理單元的六號(hào)線程開(kāi)始工作;(Id)在第一個(gè)數(shù)據(jù)包接收處理單元的其他線程處于空閑或休眠態(tài)時(shí),由第二個(gè)數(shù) 據(jù)包接收處理單元的六號(hào)線程喚醒第一個(gè)數(shù)據(jù)包接收處理單元的三號(hào)線程開(kāi)始工作;(le)在第二個(gè)數(shù)據(jù)包接收處理單元的其他線程處于空閑或休眠態(tài)時(shí),由第一個(gè)數(shù) 據(jù)包接收處理單元的三號(hào)線程喚醒第二個(gè)數(shù)據(jù)包接收處理單元的七號(hào)線程開(kāi)始工作;(If)在第一個(gè)數(shù)據(jù)包接收處理單元的其他線程處于空閑或休眠態(tài)時(shí),由第二個(gè)數(shù) 據(jù)包接收處理單元的七號(hào)線程喚醒第一個(gè)數(shù)據(jù)包接收處理單元的四號(hào)線程開(kāi)始工作;(lh)在第二個(gè)數(shù)據(jù)包接收處理單元的其他線程處于空閑或休眠態(tài)時(shí),由第一個(gè)數(shù) 據(jù)包接收處理單元的四號(hào)線程喚醒第二個(gè)數(shù)據(jù)包接收處理單元的八號(hào)線程開(kāi)始工作;(li)在第一個(gè)數(shù)據(jù)包接收處理單元的其他線程處于空閑或休眠態(tài)時(shí),由第二個(gè)數(shù) 據(jù)包接收處理單元的八號(hào)線程喚醒第一個(gè)數(shù)據(jù)包接收處理單元的一號(hào)線程開(kāi)始工作。步驟2 :設(shè)置數(shù)據(jù)包發(fā)送處理單元線程的工作方式。參照?qǐng)D5,本步驟的具體實(shí)現(xiàn)如下(2a)設(shè)置每個(gè)數(shù)據(jù)包發(fā)送處理單元的第一個(gè)線程為調(diào)度線程,用于查詢(xún)是否有新 的數(shù)據(jù)包等待發(fā)送,并為其它線程分配發(fā)送任務(wù);其它三個(gè)線程為填充線程,分別用一號(hào)、 二號(hào)和三號(hào)標(biāo)記,用于發(fā)送數(shù)據(jù)包;(2b)如果是有一個(gè)新的數(shù)據(jù)包等待發(fā)送,調(diào)度線程則將此任務(wù)分配給一號(hào)填充線 程;如果是有一個(gè)正在發(fā)送的數(shù)據(jù)包,說(shuō)明某個(gè)填充線程在工作,此時(shí)不再分配任務(wù),等待 一個(gè)新的數(shù)據(jù)包;〔0091〕 (2c)當(dāng)一號(hào)、二號(hào)和三號(hào)填充線程均處于空閑或休眠態(tài)時(shí),調(diào)度線程將一個(gè)新數(shù) 據(jù)包發(fā)送任務(wù)分配給二號(hào)填充線程,二號(hào)填充線程根據(jù)一號(hào)填充線程發(fā)送的完成信號(hào)確定 發(fā)送緩存單元號(hào),同時(shí)向三號(hào)填充線程發(fā)送準(zhǔn)備信號(hào);
〔0092〕 口山當(dāng)二號(hào)填充線程完成發(fā)送任務(wù)后進(jìn)入空閑或休眠態(tài)時(shí),調(diào)度線程將下一個(gè)新 數(shù)據(jù)包發(fā)送任務(wù)分配給三號(hào)填充線程。調(diào)度線程按照以上方式繼續(xù)分配任務(wù)給填充線程, 直到組成該數(shù)據(jù)包的所有微包都被發(fā)送到外部設(shè)備端口。
〔0093〕 步驟3 :為一個(gè)外部設(shè)備端口分配兩個(gè)相同的數(shù)據(jù)包接收處理單元,接收處理單 元的工作線程直接發(fā)出主動(dòng)接收請(qǐng)求,而不需要先查詢(xún)外部數(shù)據(jù)包端口的就緒狀態(tài)。
〔0094〕 步驟4 :接收控制器從接收處理單元的工作線程所發(fā)出的接收請(qǐng)求中提取出的有 效信息,選通外部設(shè)備端口,由線程把外部設(shè)備端口中的微包存放到接收緩存器中對(duì)應(yīng)的 接收緩存單元,該有效信息是接收請(qǐng)求中包含的外部設(shè)備端口號(hào)。
〔0095〕 步驟5 :接收處理單元的工作線程按照步驟4的方式繼續(xù)接收數(shù)據(jù)包中的其它微 包,由接收控制器產(chǎn)生相應(yīng)微包的相關(guān)信息,在整個(gè)數(shù)據(jù)包接收完畢后,產(chǎn)生該數(shù)據(jù)包的相 關(guān)信息,并存放到數(shù)據(jù)包信息寄存器,然后由接收控制器再產(chǎn)生一個(gè)用于喚醒下一個(gè)線程 的信號(hào)。
〔0096〕 步驟6 :在整個(gè)數(shù)據(jù)包放入接收緩存單元后,接收緩存器把數(shù)據(jù)包傳送到數(shù)據(jù)包 接收處理單元中進(jìn)行處理,由數(shù)據(jù)包接收處理單元產(chǎn)生數(shù)據(jù)包發(fā)送控制信息,數(shù)據(jù)包接收 處理單元為數(shù)據(jù)包分配0狀1的存儲(chǔ)空間,數(shù)據(jù)包接收處理單元根據(jù)數(shù)據(jù)包信息寄存器中 的信息把處理后的數(shù)據(jù)包按順序轉(zhuǎn)存到0狀1的存儲(chǔ)空間,并根據(jù)數(shù)據(jù)包的存儲(chǔ)順序生成 傳輸隊(duì)列順序;當(dāng)一個(gè)完整的數(shù)據(jù)包被接收到后,接收線程從入隊(duì)序列號(hào)寄存器中讀取隊(duì) 列序列號(hào),并與包序列號(hào)寄存器中的信息相比較,如果相等將這個(gè)數(shù)據(jù)包放到傳輸隊(duì)列;如 果不相等,數(shù)據(jù)包接收處理單元的線程進(jìn)入休眠并等待序列號(hào)改變,當(dāng)序列號(hào)改變時(shí),數(shù)據(jù) 包處理單元的線程再次讀取隊(duì)列序列號(hào)并再次與包序列號(hào)寄存器中的信息相比較,若相 等,把數(shù)據(jù)包放入傳輸隊(duì)列。
〔0097〕 由于數(shù)據(jù)包最大不超過(guò)1518806,片上大容量動(dòng)態(tài)隨機(jī)存取存儲(chǔ)單元0狀1為每 個(gè)數(shù)據(jù)包都分配2紐”6的存儲(chǔ)空間。本步驟所述的把數(shù)據(jù)包按順序轉(zhuǎn)存到0狀1的存儲(chǔ)空 間,參照?qǐng)D6所示,其步驟包括如下
〔0098〕 〈6幻為每一個(gè)數(shù)據(jù)包接收處理單元的線程分配一個(gè)郵箱,該郵箱用于記錄線程的 工作狀態(tài)信息,線程通過(guò)該郵箱進(jìn)行通信。工作線程在向下一個(gè)線程的郵箱寫(xiě)入狀態(tài)信息 之前,首先要讀取它自身的郵箱并確定需要傳遞哪些狀態(tài)信息,需要傳遞哪些信息是根據(jù)所收到的微包的類(lèi)型來(lái)確定的,如果這個(gè)微包是一個(gè)包頭,則該線程就用新的狀態(tài)信息初 始化郵箱;如果這個(gè)微包是一個(gè)包尾,則不需要傳遞狀態(tài)信息,并向郵箱中寫(xiě)入一個(gè)0值; 如果所收到的微包是一個(gè)中間包,則該線程將更改自身郵箱中的狀態(tài)信息,并將結(jié)果寫(xiě)入 到下一個(gè)線程的郵箱中;
〔0099〕 出幻根據(jù)0狀1中數(shù)據(jù)包分配的存儲(chǔ)空間,負(fù)責(zé)轉(zhuǎn)存數(shù)據(jù)包第一個(gè)微包的線程首 先把微包存入第一個(gè)存儲(chǔ)單元,然后通過(guò)郵箱通知負(fù)責(zé)轉(zhuǎn)存本數(shù)據(jù)包第二個(gè)微包的線程所 要存放的地址空間;
〔0100〕 出。)根據(jù)存儲(chǔ)數(shù)據(jù)包信息寄存器和郵箱中的信息,負(fù)責(zé)轉(zhuǎn)存數(shù)據(jù)包第二個(gè)微包的 線程把微包存入第二個(gè)存儲(chǔ)單元,然后通過(guò)郵箱通知負(fù)責(zé)轉(zhuǎn)存本數(shù)據(jù)包下一個(gè)微包的線程所要存放的地址空間;(6d)根據(jù)存儲(chǔ)數(shù)據(jù)包信息寄存器和郵箱中的信息,按順序根據(jù)上一個(gè)線程通知的 空間地址,本線程把相應(yīng)的微包存入指定的地址空間,然后通過(guò)郵箱通知負(fù)責(zé)轉(zhuǎn)存本數(shù)據(jù) 包下一個(gè)微包的線程所要存放的地址空間;(6e)根據(jù)存儲(chǔ)數(shù)據(jù)包信息寄存器和郵箱中的信息,按順序根據(jù)上一個(gè)線程通知的 空間地址,本線程把相應(yīng)的微包存入指定的地址空間,然后通過(guò)郵箱通知負(fù)責(zé)轉(zhuǎn)存本數(shù)據(jù) 包最后一個(gè)微包的線程所要存放的地址空間;(6f)根據(jù)存儲(chǔ)數(shù)據(jù)包信息寄存器和郵箱中的信息,按順序根據(jù)上一個(gè)線程通知的 空間地址,本線程把最后一個(gè)微包存入指定的地址空間。步驟7 :分配兩個(gè)數(shù)據(jù)包發(fā)送處理單元共同服務(wù)于兩個(gè)外部設(shè)備端口 ;數(shù)據(jù)包發(fā) 送處理單元的調(diào)度線程根據(jù)數(shù)據(jù)包傳輸隊(duì)列,確定DRAM中準(zhǔn)備發(fā)送的數(shù)據(jù)包并為待發(fā)送 的數(shù)據(jù)包分配發(fā)送緩存單元地址。步驟8 :數(shù)據(jù)包發(fā)送處理單元的填充線程把DRAM單元相應(yīng)的數(shù)據(jù)包轉(zhuǎn)存到分配好 的發(fā)送緩存單元的地址空間中。根據(jù)轉(zhuǎn)存的數(shù)據(jù)包順序產(chǎn)生發(fā)送隊(duì)列,并把數(shù)據(jù)包的發(fā)送 控制信息寫(xiě)入發(fā)送數(shù)據(jù)緩存單元相應(yīng)單元的控制域后,置位這個(gè)單元對(duì)應(yīng)的第一個(gè)有效標(biāo) 志位;在0狀11218中的數(shù)據(jù)包寫(xiě)入發(fā)送數(shù)據(jù)緩存單元的數(shù)據(jù)域后,置這個(gè)單元對(duì)應(yīng)的第二 個(gè)標(biāo)志位有效。步驟9 :為每個(gè)發(fā)送隊(duì)列設(shè)置一個(gè)發(fā)送單元計(jì)數(shù)器,用于標(biāo)記發(fā)送隊(duì)列上是否有 一個(gè)新的數(shù)據(jù)包、一個(gè)正在發(fā)送的數(shù)據(jù)包或者沒(méi)有數(shù)據(jù)包需要發(fā)送。調(diào)度線程讀取這個(gè)發(fā)送隊(duì)列的發(fā)送單元計(jì)數(shù)器,如果是有一個(gè)新的數(shù)據(jù)包等待發(fā) 送,則將此任務(wù)分配給填充線程;如果是有一個(gè)正在發(fā)送的數(shù)據(jù)包,說(shuō)明某個(gè)發(fā)送線程在工 作,此時(shí)不再分配任務(wù),等待一個(gè)新的數(shù)據(jù)包;若沒(méi)有數(shù)據(jù)包需要發(fā)送,就產(chǎn)生一個(gè)skip命 令,發(fā)送控制器在處理一個(gè)發(fā)送緩存單元時(shí),要等待該單元有效,填充線程根據(jù)skip命令 使下一個(gè)發(fā)送緩存單元有效,但是不向其寫(xiě)入數(shù)據(jù),使發(fā)送控制器跳過(guò)該發(fā)送緩存單元而 不向外部設(shè)備端口發(fā)送數(shù)據(jù)。步驟10 :填充線程根據(jù)調(diào)度線程分配的任務(wù),通過(guò)發(fā)送控制器查詢(xún)有效標(biāo)志位 后,根據(jù)控制域信息選通外部設(shè)備端口,由填充線程將數(shù)據(jù)包發(fā)送到指定的外部設(shè)備端口, 同時(shí)清除有效標(biāo)志位,為下一個(gè)數(shù)據(jù)包發(fā)送做準(zhǔn)備。本步驟中填充線程發(fā)送數(shù)據(jù)包的具體方式參照?qǐng)D7所示首先,調(diào)度線程將控制信息寫(xiě)入發(fā)送緩存單元相應(yīng)的控制域后,置這個(gè)單元對(duì)應(yīng) 的第一個(gè)有效標(biāo)志位有效;在DRAM存儲(chǔ)器中的數(shù)據(jù)寫(xiě)入發(fā)送緩存單元相應(yīng)的數(shù)據(jù)域后,置 這個(gè)單元對(duì)應(yīng)的第二個(gè)有效標(biāo)志位有效。然后,發(fā)送指針701在系統(tǒng)初始化后指向一號(hào)發(fā)送緩存單元,判斷兩個(gè)有效標(biāo)志 位是否都有效,如果不是,則發(fā)送指針保持不變,直到兩個(gè)有效標(biāo)志位都有效;如果兩個(gè)有 效標(biāo)志位都有效,發(fā)送控制器讀取單元的控制信息。根據(jù)控制信息選通外部MAC703的端口 號(hào),填充線程將這個(gè)發(fā)送緩存單元中的數(shù)據(jù)發(fā)送到外部MAC703相應(yīng)的端口上,每發(fā)送出一 個(gè)發(fā)送數(shù)據(jù)緩存單元中的微包后發(fā)送指針增一,指向下一個(gè)發(fā)送緩存單元,最后,由發(fā)送控制器清除一號(hào)發(fā)送緩存單元的兩個(gè)有效標(biāo)志位;填充線程通過(guò)發(fā) 送指針和發(fā)送控制器按照上述方式繼續(xù)發(fā)送數(shù)據(jù)緩存單元中的微包,當(dāng)發(fā)送指針指向最后一個(gè)發(fā)送緩存單元時(shí),發(fā)送指針下一跳將指向一號(hào)發(fā)送緩存單元,重新開(kāi)始發(fā)送。 以上所述對(duì)本發(fā)明的目的、控制方法和系統(tǒng)的技術(shù)方案進(jìn)行了詳細(xì)說(shuō)明,應(yīng)當(dāng)理 解的是,對(duì)本領(lǐng)域普通技術(shù)人員來(lái)說(shuō),可以根據(jù)上述說(shuō)明加以改進(jìn)或變換,而所有這些改進(jìn) 和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1.一種對(duì)片上多核系統(tǒng)中的高速接ロ進(jìn)行控制的系統(tǒng),包括 數(shù)據(jù)包處理單元(202),用于控制高速接口中數(shù)據(jù)包的接收、處理數(shù)據(jù)包和控制高速接口中數(shù)據(jù)包的發(fā)送; 接收緩存器(206),用于暫存來(lái)自外部設(shè)備中高速端ロ的數(shù)據(jù)包; 接收控制器(210),根據(jù)數(shù)據(jù)包處理單元直接發(fā)出的接收請(qǐng)求選通外部設(shè)備端ロ把數(shù)據(jù)包放入接收緩存單元; 發(fā)送緩存器(208),用于存放來(lái)自DRAM中的將要發(fā)送到外部的數(shù)據(jù)包; 發(fā)送控制器(212),根據(jù)數(shù)據(jù)包處理單元發(fā)出的發(fā)送控制信息把發(fā)送緩存單元中的數(shù)據(jù)包發(fā)送到指定的外部設(shè)備端ロ; 數(shù)據(jù)包信息寄存器(204),用來(lái)存放接收控制器產(chǎn)生的接收進(jìn)來(lái)的數(shù)據(jù)包信息; 有效標(biāo)志位(214),用來(lái)標(biāo)記數(shù)據(jù)包處理單元是否已將數(shù)據(jù)包和數(shù)據(jù)包發(fā)送控制信息寫(xiě)入發(fā)送緩存單元; 線程郵箱(216),用來(lái)存放線程工作的狀態(tài)信息; 大容量動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器DRAM(218),用于存儲(chǔ)來(lái)自數(shù)據(jù)包處理單元處理后的數(shù)據(jù)包。
2.根據(jù)權(quán)利要求I所述的對(duì)片上多核系統(tǒng)中的高速接ロ進(jìn)行控制的系統(tǒng),其特征在于,所述的數(shù)據(jù)包信息寄存器,它們分別是快端ロ序列號(hào)寄存器(204a),入隊(duì)序列號(hào)寄存器(204b),包序列號(hào)寄存器(204c),微包序列號(hào)寄存器(204d); 快端ロ序列號(hào)寄存器(204a),用于存放接收的不同數(shù)據(jù)包中的微包信息,這些微包信息通過(guò)包處理單元的讀取對(duì)不同數(shù)據(jù)包中的微包進(jìn)行區(qū)分; 包序列號(hào)寄存器(204c),用于存放接收的ー個(gè)數(shù)據(jù)包的包頭信息,每存放一個(gè)包頭,包序列號(hào)寄存器的值自增一,并把自增ー后的包序列號(hào)寄存器中的值傳遞給入隊(duì)序列號(hào)寄存器; 微包序列號(hào)寄存器(204d),用于存放數(shù)據(jù)包的非包頭信息,每存放ー個(gè)非包頭,微包序列號(hào)寄存器的值自增一,并把自增ー后的微包序列號(hào)寄存器中的值傳遞給入隊(duì)序列號(hào)寄存器; 入隊(duì)序列號(hào)寄存器(204b),用于存放包序列號(hào)寄存器和微包序列號(hào)寄存器自增ー后的值,線程根據(jù)入隊(duì)序列號(hào)寄存器、包序列號(hào)寄存器和微包序列號(hào)寄存器中的信息保持?jǐn)?shù)據(jù)包之間的順序和微包之間的順序。
3.一種對(duì)片上多核系統(tǒng)中的高速接ロ進(jìn)行控制的方法,包括如下步驟 (1)將片上多核系統(tǒng)的數(shù)據(jù)包處理單元分為接收處理單元和發(fā)送處理單元,分別設(shè)置接收處理単元和發(fā)送處理單元的相應(yīng)線程的工作方式; (2)在數(shù)據(jù)接收端,為外部設(shè)備的ー個(gè)高速端ロ分配M個(gè)相同可編程的接收處理単元,M 取值為 2,4,8,16 ; (3)為每個(gè)接收處理單元設(shè)置N個(gè)線程,并使在同一時(shí)刻只有ー個(gè)線程處于工作狀態(tài),其它線程出于休眠或者等待狀態(tài),N取值為4,8,16,32 ; (4)為每個(gè)接收處理単元的所有線程分配一個(gè)接收緩存單元,用以暫存來(lái)自外部高速端ロ的數(shù)據(jù)包; (5)在不需要查詢(xún)各個(gè)端ロ就緒狀態(tài)的情況下,接收處理単元的工作線程直接發(fā)出接收請(qǐng)求; (6)接收處理単元的線程根據(jù)接收請(qǐng)求接收和處理數(shù)據(jù)包,為了使接收進(jìn)來(lái)的數(shù)據(jù)包保持原來(lái)的順序,為每個(gè)線程分配四個(gè)寄存器用來(lái)暫存接收進(jìn)來(lái)的數(shù)據(jù)包信息 (7)為每個(gè)接收處理単元的線程分配ー個(gè)郵箱,接收處理単元的多個(gè)線程通過(guò)郵箱及時(shí)交換工作狀態(tài)信息,便于線程切換; (8)在數(shù)據(jù)發(fā)送端,為外部設(shè)備的ー個(gè)高速端ロ分配數(shù)個(gè)相同可編程的發(fā)送處理單元; (9)為每個(gè)發(fā)送處理單元設(shè)置N個(gè)線程,其中第一個(gè)為調(diào)度線程,其它幾個(gè)為填充線程,并通過(guò)調(diào)度線程控制填充線程的工作狀態(tài),N取值為4,8,16,32 ; (10)設(shè)置每個(gè)發(fā)送處理單元的填充線程共享多個(gè)發(fā)送緩存單元,并將發(fā)送緩沖單元?jiǎng)澐譃閿?shù)據(jù)域和控制域,分別用來(lái)暫存將要發(fā)送到外部設(shè)備的數(shù)據(jù)包和數(shù)據(jù)包的發(fā)送控制信息; (11)在數(shù)據(jù)準(zhǔn)備發(fā)送至外部設(shè)備吋,為每個(gè)發(fā)送緩沖單元設(shè)置數(shù)據(jù)域標(biāo)志位和控制域標(biāo)志位,發(fā)送處理單元的線程查詢(xún)數(shù)據(jù)域標(biāo)志位和控制域標(biāo)志位后根據(jù)發(fā)送控制信息發(fā)送數(shù)據(jù)包。
4.根據(jù)權(quán)利要求3所述的對(duì)片上多核系統(tǒng)中的高速接ロ進(jìn)行控制的方法,其特征在于,所述步驟(I)中設(shè)置接收處理単元的相應(yīng)線程工作方式,為外部設(shè)備的ー個(gè)高速端ロ分配兩個(gè)四線程的接收處理単元,按如下規(guī)則進(jìn)行 (Ia)設(shè)定系統(tǒng)初始化后第一個(gè)包處理單元的一號(hào)線程開(kāi)始工作,第一個(gè)包處理單元的一號(hào)線程工作完成后,切換到第二個(gè)包處理單元的五號(hào)線程開(kāi)始工作; (Ib)在第一個(gè)包處理單元的其他線程處于空閑或休眠態(tài)時(shí),由第二個(gè)包處理單元的五號(hào)線程喚醒第一個(gè)包處理單元的二號(hào)線程開(kāi)始工作; (Ic)在第二個(gè)包處理單元的其他線程處于空閑或休眠態(tài)時(shí),由第一個(gè)包處理單元的ニ號(hào)線程喚醒第二個(gè)包處理單元的六號(hào)線程開(kāi)始工作; (Id)在第一個(gè)包處理單元的其他線程處于空閑或休眠態(tài)時(shí),由第二個(gè)包處理單元的六號(hào)線程喚醒第一個(gè)包處理單元的三號(hào)線程開(kāi)始工作; (Ie)在第二個(gè)包處理單元的其他線程處于空閑或休眠態(tài)時(shí),由第一個(gè)包處理單元的三號(hào)線程喚醒第二個(gè)包處理單元的七號(hào)線程開(kāi)始工作; (If)在第一個(gè)包處理單元的其他線程處于空閑或休眠態(tài)時(shí),由第二個(gè)包處理單元的七號(hào)線程喚醒第一個(gè)包處理單元的四號(hào)線程開(kāi)始工作; (Ih)在第二個(gè)包處理單元的其他線程處于空閑或休眠態(tài)時(shí),由第一個(gè)包處理單元的四號(hào)線程喚醒第二個(gè)包處理單元的八號(hào)線程開(kāi)始工作; (Ii)在第一個(gè)包處理單元的其他線程處于空閑或休眠態(tài)時(shí),由第二個(gè)包處理單元的八號(hào)線程喚醒第一個(gè)包處理單元的一號(hào)線程開(kāi)始工作。
5.根據(jù)權(quán)利要求3所述的對(duì)片上多核系統(tǒng)中的高速接ロ進(jìn)行控制的方法,所述步驟(I)中設(shè)置發(fā)送處理單元的相應(yīng)線程工作方式,為外部設(shè)備的ー個(gè)高速端ロ分配一個(gè)四線程的發(fā)送處理單元,按如下步驟進(jìn)行首先,由發(fā)送處理單元的調(diào)度線程讀取發(fā)送緩存單元信息,確定發(fā)送緩存單元中是否有一個(gè)新的數(shù)據(jù)包或者有一個(gè)正在發(fā)送的數(shù)據(jù)包如果是有一個(gè)新的數(shù)據(jù)包等待發(fā)送,調(diào)度線程則將此任務(wù)分配給一號(hào)填充線程;如果是有ー個(gè)正在發(fā)送的數(shù)據(jù)包,表示某個(gè)填充線程正在工作,故不再分配任務(wù),等待一個(gè)新的數(shù)據(jù)包; 然后,在填充線程處于空閑或休眠態(tài)時(shí),由調(diào)度線程將ー個(gè)新數(shù)據(jù)包發(fā)送任務(wù)分配給二號(hào)填充線程,二號(hào)填充線程根據(jù)一號(hào)填充線程發(fā)送的完成信號(hào)確定發(fā)送緩存單元號(hào),同時(shí)向三號(hào)填充線程發(fā)送準(zhǔn)備信號(hào),并由調(diào)度線程將下ー個(gè)新數(shù)據(jù)包的發(fā)送任務(wù)分配給三號(hào)填充線程。
6.根據(jù)權(quán)利要求3所述的對(duì)片上多核系統(tǒng)中的高速接ロ進(jìn)行控制的方法,其中,所述步驟出)中接收處理単元的線程根據(jù)接收請(qǐng)求接收數(shù)據(jù)包,是在高速端ロ的數(shù)據(jù)包進(jìn)入片上系統(tǒng)之前,先由外部設(shè)備將數(shù)據(jù)包分割為數(shù)個(gè)大小相同的微包,每個(gè)接收處理単元的エ作線程根據(jù)接收請(qǐng)求負(fù)責(zé)ー個(gè)微包的接收,并根據(jù)接收請(qǐng)求確定接收請(qǐng)求中指定端ロ的數(shù)據(jù)包是否準(zhǔn)備就緒,如果端ロ就緒則接收該端ロ的微包,否則將這個(gè)接收請(qǐng)求丟棄。
7.根據(jù)權(quán)利要求3所述的對(duì)片上多核系統(tǒng)中的高速接ロ進(jìn)行控制的方法,其特征在于,步驟(11)所述的發(fā)送處理單元的線程根據(jù)數(shù)據(jù)域標(biāo)志位和控制域標(biāo)志位發(fā)送數(shù)據(jù),按如下步驟進(jìn)行 (Ila)發(fā)送處理單元的線程將發(fā)送控制信息寫(xiě)入發(fā)送緩存單元的控制域后,置這個(gè)單元對(duì)應(yīng)的第一個(gè)有效標(biāo)志位有效; (Ilb)發(fā)送處理單元的線程將數(shù)據(jù)包寫(xiě)入發(fā)送緩存單元的數(shù)據(jù)域后,置這個(gè)單元對(duì)應(yīng)的第二個(gè)有效標(biāo)志位有效; (He)發(fā)送處理單元的線程確認(rèn)發(fā)送緩存單元對(duì)應(yīng)的兩個(gè)有效標(biāo)志位是否同時(shí)有效,若同時(shí)有效,發(fā)送處理單元的線程則根據(jù)這個(gè)發(fā)送緩存單元的控制域信息把數(shù)據(jù)包發(fā)送到指定的外部設(shè)備中。
全文摘要
本發(fā)明公開(kāi)了一種對(duì)片上多核系統(tǒng)中的高速接口進(jìn)行控制的方法及系統(tǒng),主要解決現(xiàn)有系統(tǒng)接收和發(fā)送數(shù)據(jù)效率低的問(wèn)題。該系統(tǒng)包括數(shù)據(jù)包處理單元、數(shù)據(jù)包信息寄存器、郵箱和有效標(biāo)志位;每個(gè)數(shù)據(jù)包處理單元有多個(gè)線程;在數(shù)據(jù)的接收端,線程以接近線速的速度直接發(fā)出接收請(qǐng)求,并根據(jù)接收請(qǐng)求接收數(shù)據(jù)包并產(chǎn)生數(shù)據(jù)包信息;將此數(shù)據(jù)包信息放入數(shù)據(jù)包信息寄存器,線程根據(jù)數(shù)據(jù)包信息寄存器中的數(shù)據(jù)包信息和線程郵箱中的工作狀態(tài)信息保持接收進(jìn)來(lái)的數(shù)據(jù)包順序;在數(shù)據(jù)的發(fā)送端,線程根據(jù)有效標(biāo)志位的置位情況和控制域信息把數(shù)據(jù)包高速準(zhǔn)確的發(fā)送到外部設(shè)備的相應(yīng)端口上。本發(fā)明具有高效可靠的接收和發(fā)送數(shù)據(jù)的優(yōu)點(diǎn),可用于網(wǎng)絡(luò)數(shù)據(jù)處理。
文檔編號(hào)G06F15/167GK102662908SQ20121012009
公開(kāi)日2012年9月12日 申請(qǐng)日期2012年4月23日 優(yōu)先權(quán)日2012年4月23日
發(fā)明者余廣明, 史江一, 孫杰, 李康, 邸志雄, 郝躍, 馬佩軍 申請(qǐng)人:西安電子科技大學(xué)