專利名稱:轉(zhuǎn)發(fā)資源訪問(wèn)方法和路由系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通信技術(shù),特別涉及轉(zhuǎn)發(fā)資源訪問(wèn)方法和路由系統(tǒng)。
背景技術(shù):
目前,路由系統(tǒng)的多核化非常普遍,其中,在多核路由系統(tǒng)中,至少有一個(gè)核作為主核,運(yùn)行操作系統(tǒng),用于負(fù)責(zé)管理和建立轉(zhuǎn)發(fā)資源,剩余的核為從核,不運(yùn)行操作系統(tǒng),用于負(fù)責(zé)利用所述轉(zhuǎn)發(fā)資源進(jìn)行報(bào)文轉(zhuǎn)發(fā)。為了提高多核路由系統(tǒng)的轉(zhuǎn)發(fā)性能,通過(guò)非對(duì)稱多處理(AMP =Asymmertric Multiprocessing)模式處理路由系統(tǒng)的多核是優(yōu)先選擇。通常,在AMP模式下,需要區(qū)分轉(zhuǎn)發(fā)資源的寫(xiě)者和讀者,其中,由于主核用于負(fù)責(zé)管理和建立轉(zhuǎn)發(fā)資源,其可作為轉(zhuǎn)發(fā)資源的寫(xiě)者,而從核用于負(fù)責(zé)利用轉(zhuǎn)發(fā)資源進(jìn)行報(bào)文轉(zhuǎn)發(fā),其可作為轉(zhuǎn)發(fā)資源的讀者。在AMP模式下,使用傳統(tǒng)的自旋鎖(Spin-Lock)控制多核對(duì)轉(zhuǎn)發(fā)資源互斥訪問(wèn)。 但是,該互斥訪問(wèn)會(huì)影響多核路由系統(tǒng)的轉(zhuǎn)發(fā)性能,特別是在整個(gè)路由系統(tǒng)中核的數(shù)量非常多時(shí),該影響會(huì)非常明顯。其中,互斥訪問(wèn)影響多核路由系統(tǒng)的轉(zhuǎn)發(fā)性能主要是由于自旋鎖所在cache區(qū)域頻繁更新造成的,而自旋鎖所在cache區(qū)域頻繁更新的原因是針對(duì)每一核,不論是主核還是從核,當(dāng)其訪問(wèn)轉(zhuǎn)發(fā)資源時(shí),就需要將自旋鎖更新至自身的cache區(qū)域中,并更新該自旋鎖的取值,而由于多核對(duì)cache —致性的探聽(tīng),則會(huì)導(dǎo)致每次更新cache 的操作都會(huì)使其他核的cache區(qū)域無(wú)效,這使得其他核下次更新自旋鎖時(shí)需要從內(nèi)存讀取相關(guān)內(nèi)容,比如,如果是主核下次更新自旋鎖時(shí)從內(nèi)存讀取相關(guān)內(nèi)容,則會(huì)降低主核管理轉(zhuǎn)發(fā)資源的效率,而如果是從核下次更新自旋鎖時(shí)從內(nèi)存讀取相關(guān)內(nèi)容,則會(huì)降低從核轉(zhuǎn)發(fā)報(bào)文的效率;并且,自旋鎖的更新通常是基于報(bào)文的,由于報(bào)文發(fā)送的頻度非常高,從而導(dǎo)致自旋鎖更新的頻度也非常高,大大浪費(fèi)資源。
發(fā)明內(nèi)容
本發(fā)明提供了轉(zhuǎn)發(fā)資源訪問(wèn)方法和路由系統(tǒng),以避免采用傳統(tǒng)自旋鎖控制多核對(duì)轉(zhuǎn)發(fā)資源互斥訪問(wèn)帶來(lái)的問(wèn)題。本發(fā)明提供的技術(shù)方案包括—種轉(zhuǎn)發(fā)資源訪問(wèn)方法,該方法應(yīng)用于包含主核和從核的多核路由系統(tǒng)中,該方法包括配置針對(duì)整個(gè)轉(zhuǎn)發(fā)資源表的互斥訪問(wèn)鎖,所述互斥訪問(wèn)鎖中存在各個(gè)從核對(duì)應(yīng)的請(qǐng)求位和應(yīng)答位;每一從核檢測(cè)所述互斥訪問(wèn)鎖中自身對(duì)應(yīng)的請(qǐng)求位當(dāng)前是否取值為第一設(shè)定值, 如果否,則利用所述轉(zhuǎn)發(fā)資源表中的轉(zhuǎn)發(fā)資源執(zhí)行報(bào)文轉(zhuǎn)發(fā)處理,如果是,則在所述互斥訪問(wèn)鎖中自身對(duì)應(yīng)的應(yīng)答位當(dāng)前未取值為第二設(shè)定值時(shí),設(shè)置所述互斥訪問(wèn)鎖中自身對(duì)應(yīng)的應(yīng)答位取值為第二設(shè)定值,并返回檢測(cè)所述互斥訪問(wèn)鎖中自身對(duì)應(yīng)的請(qǐng)求位當(dāng)前是否取值為第一設(shè)定值;
所述主核在向所述轉(zhuǎn)發(fā)資源表寫(xiě)轉(zhuǎn)發(fā)資源時(shí)先清除所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的應(yīng)答位所取的第二設(shè)定值,之后設(shè)置所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位取值為第一設(shè)定值,并檢測(cè)所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的應(yīng)答位當(dāng)前是否被該各個(gè)從核設(shè)置為第二設(shè)定值,如果是,則執(zhí)行向所述轉(zhuǎn)發(fā)資源表寫(xiě)轉(zhuǎn)發(fā)資源的操作,并在寫(xiě)轉(zhuǎn)發(fā)資源完成后,清除所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位所取的第一設(shè)定值;如果否,則返回檢測(cè)所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的應(yīng)答位是否被該各個(gè)從核設(shè)置為第二設(shè)定值。一種路由系統(tǒng),該路由系統(tǒng)包括主核和多個(gè)從核;其關(guān)鍵在于,該路由系統(tǒng)還包括互斥訪問(wèn)鎖配置單元;所述互斥訪問(wèn)鎖配置單元用于配置針對(duì)整個(gè)轉(zhuǎn)發(fā)資源表的互斥訪問(wèn)鎖,所述互斥訪問(wèn)鎖中存在各個(gè)從核對(duì)應(yīng)的請(qǐng)求位和應(yīng)答位;每一從核包括第一檢測(cè)單元、轉(zhuǎn)發(fā)單元和第一設(shè)置單元;其中,所述第一檢測(cè)單元,用于檢測(cè)所述互斥訪問(wèn)鎖中自身所在從核對(duì)應(yīng)的請(qǐng)求位當(dāng)前是否取值為第一設(shè)定值;所述轉(zhuǎn)發(fā)單元,用于在所述第一檢測(cè)單元的檢測(cè)結(jié)果為否時(shí),利用所述轉(zhuǎn)發(fā)資源表中的轉(zhuǎn)發(fā)資源執(zhí)行報(bào)文轉(zhuǎn)發(fā)處理;所述第一設(shè)置單元,用于在所述第一檢測(cè)單元的檢測(cè)結(jié)果為是時(shí),在所述互斥訪問(wèn)鎖中自身所在從核對(duì)應(yīng)的應(yīng)答位當(dāng)前未取值為第二設(shè)定值時(shí),設(shè)置所述互斥訪問(wèn)鎖中自身所在從核對(duì)應(yīng)的應(yīng)答位取值為第二設(shè)定值,并觸發(fā)所述第一檢測(cè)單元繼續(xù)執(zhí)行檢測(cè);所述主核包括清除單元、第二設(shè)置單元、第二檢測(cè)單元和寫(xiě)單元;其中,所述清除單元,用于在其所處的主核向所述轉(zhuǎn)發(fā)資源表寫(xiě)轉(zhuǎn)發(fā)資源時(shí)先清除所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的應(yīng)答位所取的第二設(shè)定值,并發(fā)送設(shè)置通知給所述第二設(shè)置單元;以及在接收到清除通知后,清除所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位所取的第一設(shè)定值;所述第二設(shè)置單元,用于接收到所述設(shè)置通知后,設(shè)置所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位取值為第一設(shè)定值,并發(fā)送檢測(cè)通知給所述第二檢測(cè)單元;所述第二檢測(cè)單元,用于接收到所述檢測(cè)通知后,檢測(cè)所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的應(yīng)答位當(dāng)前是否被該各個(gè)從核設(shè)置為第二設(shè)定值,如果檢測(cè)結(jié)果為否,則繼續(xù)執(zhí)行檢測(cè);所述寫(xiě)單元,用于在所述第二檢測(cè)單元的檢測(cè)結(jié)果為是時(shí),向所述轉(zhuǎn)發(fā)資源表寫(xiě)轉(zhuǎn)發(fā)資源的操作,并在寫(xiě)轉(zhuǎn)發(fā)資源完成后,發(fā)送清除通知給所述清除單元。由以上技術(shù)方案可以看出,本發(fā)明中,通過(guò)主核在向所述轉(zhuǎn)發(fā)資源表寫(xiě)轉(zhuǎn)發(fā)資源時(shí)先清除所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的應(yīng)答位所取的第二設(shè)定值,之后設(shè)置所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位取值為第一設(shè)定值,可以看出該主核對(duì)轉(zhuǎn)發(fā)資源的寫(xiě)訪問(wèn)需要互斥,但是,該互斥并不需要刷新所述互斥訪問(wèn)鎖對(duì)應(yīng)的cache區(qū)域,而只是設(shè)置所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位取值為第一設(shè)定值,并且,針對(duì)每一從核,該每一從核僅根據(jù)所述互斥訪問(wèn)鎖中自身對(duì)應(yīng)的請(qǐng)求位當(dāng)前未取值為第一設(shè)定值時(shí),利用所述轉(zhuǎn)發(fā)資源表中的轉(zhuǎn)發(fā)資源執(zhí)行報(bào)文轉(zhuǎn)發(fā)處理,即從核對(duì)轉(zhuǎn)發(fā)資源的讀訪問(wèn)無(wú)需互斥,這顯然與傳統(tǒng)自旋鎖控制轉(zhuǎn)發(fā)資源互斥訪問(wèn)不同,完全避免了采用傳統(tǒng)自旋鎖控制多核對(duì)轉(zhuǎn)發(fā)資源互斥訪問(wèn)帶來(lái)的問(wèn)題。
圖1為本發(fā)明實(shí)施例提供的流程圖;圖2為本發(fā)明實(shí)施例提供的路由系統(tǒng)結(jié)構(gòu)圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述。本發(fā)明提供的流程可包括圖1所示的步驟參見(jiàn)圖1,圖1為本發(fā)明實(shí)施例提供的流程圖。該流程應(yīng)用于包含主核和從核的多核路由系統(tǒng)中,其中,主核運(yùn)行操作系統(tǒng),用于負(fù)責(zé)管理和建立轉(zhuǎn)發(fā)資源,從核不運(yùn)行操作系統(tǒng),用于負(fù)責(zé)利用所述轉(zhuǎn)發(fā)資源進(jìn)行報(bào)文轉(zhuǎn)發(fā)。如圖1所示,該流程可包括以下步驟步驟101,配置針對(duì)整個(gè)轉(zhuǎn)發(fā)資源表的互斥訪問(wèn)鎖,所述互斥訪問(wèn)鎖中存在各個(gè)從核對(duì)應(yīng)的請(qǐng)求位和應(yīng)答位。這里,轉(zhuǎn)發(fā)資源表用于存放轉(zhuǎn)發(fā)資源,配置針對(duì)整個(gè)轉(zhuǎn)發(fā)資源表的互斥訪問(wèn)鎖,即為所有轉(zhuǎn)發(fā)資源配置一個(gè)互斥訪問(wèn)鎖。如果應(yīng)用于至少一個(gè)轉(zhuǎn)發(fā)資源寫(xiě)者、多個(gè)轉(zhuǎn)發(fā)資源讀者的AMP模式下,則該AMP模式下,所有轉(zhuǎn)發(fā)資源只有一個(gè)互斥訪問(wèn)鎖,并非針對(duì)每一轉(zhuǎn)發(fā)資源分別配置一個(gè)互斥訪問(wèn)鎖。以下為便于描述,可簡(jiǎn)稱互斥訪問(wèn)鎖為biglock。步驟102,每一從核檢測(cè)biglock中自身對(duì)應(yīng)的請(qǐng)求位當(dāng)前是否取值為第一設(shè)定值,如果否,則利用所述轉(zhuǎn)發(fā)資源表中的轉(zhuǎn)發(fā)資源執(zhí)行報(bào)文轉(zhuǎn)發(fā)處理,如果是,則在biglock 中自身對(duì)應(yīng)的應(yīng)答位當(dāng)前未取值為第二設(shè)定值時(shí),設(shè)置biglock中自身對(duì)應(yīng)的應(yīng)答位取值為第二設(shè)定值,并返回檢測(cè)biglock中自身對(duì)應(yīng)的請(qǐng)求位當(dāng)前是否取值為第一設(shè)定值。本步驟102中,每一從核檢測(cè)所述互斥訪問(wèn)鎖中自身對(duì)應(yīng)的請(qǐng)求位當(dāng)前是否取值為第一設(shè)定值的操作可在完成一個(gè)報(bào)文的轉(zhuǎn)發(fā)后執(zhí)行,也可在開(kāi)始一個(gè)報(bào)文的轉(zhuǎn)發(fā)之前執(zhí)行,本發(fā)明并不具體限定。步驟103,主核在向所述轉(zhuǎn)發(fā)資源表寫(xiě)轉(zhuǎn)發(fā)資源時(shí)先清除biglock中各個(gè)從核對(duì)應(yīng)的應(yīng)答位所取的第二設(shè)定值,之后設(shè)置biglock中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位取值為第一設(shè)定值,并檢測(cè)biglock中各個(gè)從核對(duì)應(yīng)的應(yīng)答位當(dāng)前是否被該各個(gè)從核設(shè)置為第二設(shè)定值,如果是,則執(zhí)行向所述轉(zhuǎn)發(fā)資源表寫(xiě)轉(zhuǎn)發(fā)資源的操作,如果否,則返回檢測(cè)biglock中各個(gè)從核對(duì)應(yīng)的應(yīng)答位是否被該各個(gè)從核設(shè)置為第二設(shè)定值。在步驟102和步驟103中,第一設(shè)定值、第二設(shè)定值取值無(wú)關(guān),兩者可以相等,比如均為1,也可以不等,比如一個(gè)取值為0,另一個(gè)取值為1,本發(fā)明并不具體限定。另外,本步驟103中,所述主核清除biglock中各個(gè)從核對(duì)應(yīng)的應(yīng)答位所取的第二設(shè)定值包括所述主核更新biglock中各個(gè)從核對(duì)應(yīng)的應(yīng)答位所取的第二設(shè)定值為其他值。所述主核清除所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位所取的第一設(shè)定值包括所述主核更新所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位所取的第一設(shè)定值為其他值還有,本步驟103中,主核之所以設(shè)置所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位
6取值為第一設(shè)定值,目的是為了表示該主核當(dāng)前正請(qǐng)求biglock,這樣,防止從核也請(qǐng)求 biglock,實(shí)現(xiàn)主核寫(xiě)轉(zhuǎn)發(fā)資源的互斥訪問(wèn)。而當(dāng)主核檢測(cè)出biglock中各個(gè)從核對(duì)應(yīng)的應(yīng)答位被該各個(gè)從核設(shè)置為第二設(shè)定值時(shí),則表示主核成功獲取到biglock,可以執(zhí)行向所述轉(zhuǎn)發(fā)資源表寫(xiě)轉(zhuǎn)發(fā)資源的操作。至此,完成圖1所示的流程。
從圖1所示的流程可以看出,本發(fā)明中,從核對(duì)轉(zhuǎn)發(fā)資源的讀訪問(wèn)無(wú)需互斥,僅需要主核對(duì)轉(zhuǎn)發(fā)資源的寫(xiě)訪問(wèn)互斥,而該互斥并不需要對(duì)biglock對(duì)應(yīng)的cache區(qū)域頻繁刷新,這完全避免了采用傳統(tǒng)自旋鎖控制多核對(duì)轉(zhuǎn)發(fā)資源互斥訪問(wèn)帶來(lái)的問(wèn)題。以上對(duì)本發(fā)明提供的方法進(jìn)行描述,下面對(duì)本發(fā)明提供的路由系統(tǒng)進(jìn)行描述參見(jiàn)圖2,圖2為本發(fā)明實(shí)施例提供的路由系統(tǒng)結(jié)構(gòu)圖。如圖2所示,該路由系統(tǒng)包括主核和多個(gè)從核;其關(guān)鍵在于,該路由系統(tǒng)還包括互斥訪問(wèn)鎖配置單元。其中,所述互斥訪問(wèn)鎖配置單元用于配置針對(duì)整個(gè)轉(zhuǎn)發(fā)資源表的互斥訪問(wèn)鎖,而所述互斥訪問(wèn)鎖中存在各個(gè)從核對(duì)應(yīng)的請(qǐng)求位和應(yīng)答位;而每一從核,如圖2所示,可包括以下單元第一檢測(cè)單元、轉(zhuǎn)發(fā)單元和第一設(shè)置單元;其中,所述第一檢測(cè)單元,用于檢測(cè)所述互斥訪問(wèn)鎖中自身所在從核對(duì)應(yīng)的請(qǐng)求位當(dāng)前是否取值為第一設(shè)定值;其中,所述第一檢測(cè)單元檢測(cè)所述互斥訪問(wèn)鎖中自身所在從核對(duì)應(yīng)的請(qǐng)求位當(dāng)前是否取值為第一設(shè)定值的操作是在所述轉(zhuǎn)發(fā)單元完成一個(gè)報(bào)文的轉(zhuǎn)發(fā)后執(zhí)行,或者是在所述轉(zhuǎn)發(fā)單元開(kāi)始一個(gè)報(bào)文的轉(zhuǎn)發(fā)之前執(zhí)行,本發(fā)明并不限定。所述轉(zhuǎn)發(fā)單元,用于在所述第一檢測(cè)單元的檢測(cè)結(jié)果為否時(shí),利用所述轉(zhuǎn)發(fā)資源表中的轉(zhuǎn)發(fā)資源執(zhí)行報(bào)文轉(zhuǎn)發(fā)處理;所述第一設(shè)置單元,用于在所述第一檢測(cè)單元的檢測(cè)結(jié)果為是時(shí),在所述互斥訪問(wèn)鎖中自身所在從核對(duì)應(yīng)的應(yīng)答位當(dāng)前未取值為第二設(shè)定值時(shí),設(shè)置所述互斥訪問(wèn)鎖中自身所在從核對(duì)應(yīng)的應(yīng)答位取值為第二設(shè)定值,并觸發(fā)所述第一檢測(cè)單元繼續(xù)執(zhí)行檢測(cè);至于所述主核,如圖2所示,該主核可包括以下單元清除單元、第二設(shè)置單元、第二檢測(cè)單元和寫(xiě)單元;其中,所述清除單元,用于在其所處的主核向所述轉(zhuǎn)發(fā)資源表寫(xiě)轉(zhuǎn)發(fā)資源時(shí)先清除所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的應(yīng)答位所取的第二設(shè)定值,并發(fā)送設(shè)置通知給所述第二設(shè)置單元;以及在接收到清除通知后,清除所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位所取的第一設(shè)定值;所述第二設(shè)置單元,用于接收到所述設(shè)置通知后,設(shè)置所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位取值為第一設(shè)定值,并發(fā)送檢測(cè)通知給所述第二檢測(cè)單元;所述第二檢測(cè)單元,用于接收到所述檢測(cè)通知后,檢測(cè)所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的應(yīng)答位當(dāng)前是否被該各個(gè)從核設(shè)置為第二設(shè)定值,如果檢測(cè)結(jié)果為否,則繼續(xù)執(zhí)行檢測(cè);所述寫(xiě)單元,用于在所述第二檢測(cè)單元的檢測(cè)結(jié)果為是時(shí),向所述轉(zhuǎn)發(fā)資源表寫(xiě)轉(zhuǎn)發(fā)資源的操作,并在寫(xiě)轉(zhuǎn)發(fā)資源完成后,發(fā)送清除通知給所述清除單元。需要說(shuō)明的是,本發(fā)明中,所述第一設(shè)定值和所述第二設(shè)定值相同,或者不同。另外,本發(fā)明中,所述清除單元清除所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的應(yīng)答位所取的第二設(shè)定值可包括所述清除單元更新所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的應(yīng)答位所取的第二設(shè)定值為其他值;所述清除單元清除所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位所取的第一設(shè)定值包括所述清除單元更新所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位所取的第一設(shè)定值為其他值。至此,完 成本發(fā)明提供的路由系統(tǒng)描述。由以上技術(shù)方案可以看出,本發(fā)明中,通過(guò)主核在向所述轉(zhuǎn)發(fā)資源表寫(xiě)轉(zhuǎn)發(fā)資源時(shí)先清除所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的應(yīng)答位所取的第二設(shè)定值,之后設(shè)置所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位取值為第一設(shè)定值,可以看出該主核對(duì)轉(zhuǎn)發(fā)資源的寫(xiě)訪問(wèn)需要互斥,但是,該互斥并不需要刷新所述互斥訪問(wèn)鎖對(duì)應(yīng)的cache區(qū)域,而只是設(shè)置所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位取值為第一設(shè)定值,并且,針對(duì)每一從核,該每一從核僅根據(jù)所述互斥訪問(wèn)鎖中自身對(duì)應(yīng)的請(qǐng)求位當(dāng)前不取值為第一設(shè)定值時(shí),利用所述轉(zhuǎn)發(fā)資源表中的轉(zhuǎn)發(fā)資源執(zhí)行報(bào)文轉(zhuǎn)發(fā)處理,即從核對(duì)轉(zhuǎn)發(fā)資源的讀訪問(wèn)無(wú)需互斥,這顯然與傳統(tǒng)自旋鎖控制轉(zhuǎn)發(fā)資源互斥訪問(wèn)不同,完全避免了采用傳統(tǒng)自旋鎖控制多核對(duì)轉(zhuǎn)發(fā)資源互斥訪問(wèn)帶來(lái)的問(wèn)題。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
權(quán)利要求
1.一種轉(zhuǎn)發(fā)資源訪問(wèn)方法,該方法應(yīng)用于包含主核和從核的多核路由系統(tǒng)中,其特征在于,該方法包括配置針對(duì)整個(gè)轉(zhuǎn)發(fā)資源表的互斥訪問(wèn)鎖,所述互斥訪問(wèn)鎖中存在各個(gè)從核對(duì)應(yīng)的請(qǐng)求位和應(yīng)答位;每一從核檢測(cè)所述互斥訪問(wèn)鎖中自身對(duì)應(yīng)的請(qǐng)求位當(dāng)前是否取值為第一設(shè)定值,如果否,則利用所述轉(zhuǎn)發(fā)資源表中的轉(zhuǎn)發(fā)資源執(zhí)行報(bào)文轉(zhuǎn)發(fā)處理,如果是,則在所述互斥訪問(wèn)鎖中自身對(duì)應(yīng)的應(yīng)答位當(dāng)前未取值為第二設(shè)定值時(shí),設(shè)置所述互斥訪問(wèn)鎖中自身對(duì)應(yīng)的應(yīng)答位取值為第二設(shè)定值,并返回檢測(cè)所述互斥訪問(wèn)鎖中自身對(duì)應(yīng)的請(qǐng)求位當(dāng)前是否取值為第一設(shè)定值;所述主核在向所述轉(zhuǎn)發(fā)資源表寫(xiě)轉(zhuǎn)發(fā)資源時(shí)先清除所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的應(yīng)答位所取的第二設(shè)定值,之后設(shè)置所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位取值為第一設(shè)定值,并檢測(cè)所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的應(yīng)答位當(dāng)前是否被該各個(gè)從核設(shè)置為第二設(shè)定值,如果是,則執(zhí)行向所述轉(zhuǎn)發(fā)資源表寫(xiě)轉(zhuǎn)發(fā)資源的操作,并在寫(xiě)轉(zhuǎn)發(fā)資源完成后,清除所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位所取的第一設(shè)定值;如果否,則返回檢測(cè)所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的應(yīng)答位當(dāng)前是否被該各個(gè)從核設(shè)置為第二設(shè)定值。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,每一從核檢測(cè)所述互斥訪問(wèn)鎖中自身對(duì)應(yīng)的請(qǐng)求位當(dāng)前是否取值為第一設(shè)定值的操作是在完成一個(gè)報(bào)文的轉(zhuǎn)發(fā)后執(zhí)行,或者是在開(kāi)始一個(gè)報(bào)文的轉(zhuǎn)發(fā)之前執(zhí)行。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一設(shè)定值和所述第二設(shè)定值無(wú)關(guān), 兩者相同或者不同。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述主核清除所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的應(yīng)答位所取的第二設(shè)定值包括所述主核更新所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的應(yīng)答位所取的第二設(shè)定值為其他值;所述主核清除所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位所取的第一設(shè)定值包括所述主核更新所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位所取的第一設(shè)定值為其他值。
5.一種路由系統(tǒng),該路由系統(tǒng)包括主核和多個(gè)從核;其特征在于,該路由系統(tǒng)還包括 互斥訪問(wèn)鎖配置單元;所述互斥訪問(wèn)鎖配置單元用于配置針對(duì)整個(gè)轉(zhuǎn)發(fā)資源表的互斥訪問(wèn)鎖,所述互斥訪問(wèn)鎖中存在各個(gè)從核對(duì)應(yīng)的請(qǐng)求位和應(yīng)答位;每一從核包括第一檢測(cè)單元、轉(zhuǎn)發(fā)單元和第一設(shè)置單元;其中,所述第一檢測(cè)單元,用于檢測(cè)所述互斥訪問(wèn)鎖中自身所在從核對(duì)應(yīng)的請(qǐng)求位當(dāng)前是否取值為第一設(shè)定值;所述轉(zhuǎn)發(fā)單元,用于在所述第一檢測(cè)單元的檢測(cè)結(jié)果為否時(shí),利用所述轉(zhuǎn)發(fā)資源表中的轉(zhuǎn)發(fā)資源執(zhí)行報(bào)文轉(zhuǎn)發(fā)處理;所述第一設(shè)置單元,用于在所述第一檢測(cè)單元的檢測(cè)結(jié)果為是時(shí),在所述互斥訪問(wèn)鎖中自身所在從核對(duì)應(yīng)的應(yīng)答位當(dāng)前未取值為第二設(shè)定值時(shí),設(shè)置所述互斥訪問(wèn)鎖中自身所在從核對(duì)應(yīng)的應(yīng)答位取值為第二設(shè)定值,并觸發(fā)所述第一檢測(cè)單元繼續(xù)執(zhí)行檢測(cè);所述主核包括清除單元、第二設(shè)置單元、第二檢測(cè)單元和寫(xiě)單元;其中,所述清除單元,用于在其所處的主核向所述轉(zhuǎn)發(fā)資源表寫(xiě)轉(zhuǎn)發(fā)資源時(shí)先清除所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的應(yīng)答位所取的第二設(shè)定值,并發(fā)送設(shè)置通知給所述第二設(shè)置單元;以及在接收到清除通知后,清除所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位所取的第一設(shè)定值;所述第二設(shè)置單元,用于接收到所述設(shè)置通知后,設(shè)置所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位取值為第一設(shè)定值,并發(fā)送檢測(cè)通知給所述第二檢測(cè)單元;所述第二檢測(cè)單元,用于接收到所述檢測(cè)通知后,檢測(cè)所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的應(yīng)答位當(dāng)前是否被該各個(gè)從核設(shè)置為第二設(shè)定值,如果檢測(cè)結(jié)果為否,則繼續(xù)執(zhí)行檢測(cè);所述寫(xiě)單元,用于在所述第二檢測(cè)單元的檢測(cè)結(jié)果為是時(shí),向所述轉(zhuǎn)發(fā)資源表寫(xiě)轉(zhuǎn)發(fā)資源的操作,并在寫(xiě)轉(zhuǎn)發(fā)資源完成后,發(fā)送清除通知給所述清除單元。
6.根據(jù)權(quán)利要求5所述的路由系統(tǒng),其特征在于,所述第一檢測(cè)單元檢測(cè)所述互斥訪問(wèn)鎖中自身所在從核對(duì)應(yīng)的請(qǐng)求位當(dāng)前是否取值為第一設(shè)定值的操作是在所述轉(zhuǎn)發(fā)單元完成一個(gè)報(bào)文的轉(zhuǎn)發(fā)后執(zhí)行,或者是在所述轉(zhuǎn)發(fā)單元開(kāi)始一個(gè)報(bào)文的轉(zhuǎn)發(fā)之前執(zhí)行。
7.根據(jù)權(quán)利要求5所述的路由系統(tǒng),其特征在于,所述第一設(shè)定值和所述第二設(shè)定值無(wú)關(guān),兩者相同,或者不同。
8.根據(jù)權(quán)利要求5所述的路由系統(tǒng),其特征在于,所述清除單元清除所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的應(yīng)答位所取的第二設(shè)定值包括所述清除單元更新所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的應(yīng)答位所取的第二設(shè)定值為其他值;所述清除單元清除所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位所取的第一設(shè)定值包括 所述清除單元更新所述互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位所取的第一設(shè)定值為其他值。
全文摘要
本發(fā)明提供了轉(zhuǎn)發(fā)資源訪問(wèn)方法和路由系統(tǒng)。該方法包括配置針對(duì)整個(gè)轉(zhuǎn)發(fā)資源表的互斥訪問(wèn)鎖,互斥訪問(wèn)鎖存在各個(gè)從核對(duì)應(yīng)的請(qǐng)求位和應(yīng)答位;每一從核檢測(cè)互斥訪問(wèn)鎖中自身對(duì)應(yīng)的請(qǐng)求位當(dāng)前是否取值為第一設(shè)定值,是則在互斥訪問(wèn)鎖中自身對(duì)應(yīng)的應(yīng)答位當(dāng)前不為第二設(shè)定值時(shí),將自身對(duì)應(yīng)的應(yīng)答位取值為第二設(shè)定值,返回檢測(cè);主核在向轉(zhuǎn)發(fā)資源表寫(xiě)轉(zhuǎn)發(fā)資源時(shí)清除各個(gè)從核對(duì)應(yīng)的應(yīng)答位所取的第二設(shè)定值,之后設(shè)置各個(gè)從核對(duì)應(yīng)的請(qǐng)求位取值為第一設(shè)定值,檢測(cè)各個(gè)從核對(duì)應(yīng)的應(yīng)答位是否被該各個(gè)從核設(shè)置為第二設(shè)定值,如果是,向轉(zhuǎn)發(fā)資源表寫(xiě)轉(zhuǎn)發(fā)資源,在寫(xiě)轉(zhuǎn)發(fā)資源完成后,清除互斥訪問(wèn)鎖中各個(gè)從核對(duì)應(yīng)的請(qǐng)求位所取的第一設(shè)定值;如果否,返回檢測(cè)。
文檔編號(hào)H04L12/56GK102355423SQ20111031817
公開(kāi)日2012年2月15日 申請(qǐng)日期2011年10月19日 優(yōu)先權(quán)日2011年10月19日
發(fā)明者曹淋 申請(qǐng)人:邁普通信技術(shù)股份有限公司