欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于多核處理器的硬件鎖實(shí)現(xiàn)方法及裝置的制作方法

文檔序號(hào):6382488閱讀:250來源:國(guó)知局
專利名稱:用于多核處理器的硬件鎖實(shí)現(xiàn)方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及多核微處理器設(shè)計(jì)領(lǐng)域,具體涉及一種用于多核處理器的硬件鎖實(shí)現(xiàn)方法及裝置。
背景技術(shù)
鎖同步是軟件系統(tǒng)中多個(gè)任務(wù)間廣泛使用的同步方法,而且現(xiàn)代軟件對(duì)鎖的訪問頻度很高,因此提高鎖的訪問效率,對(duì)于提高軟件性能具有較大的好處。硬件鎖通常是現(xiàn)代微處理器中提高鎖訪問效率的常用手段之一。硬件鎖通常擁有一定容量的集成在處理器內(nèi)的存儲(chǔ)單元,訪問速度快,而且與Cache等多層次存儲(chǔ)系統(tǒng)隔離,因此避免了頻繁的Cache失效、替換等操作,故相比利用存儲(chǔ)系統(tǒng)實(shí)現(xiàn)的軟件鎖,硬件鎖擁有更高的訪問效率。硬件鎖的存儲(chǔ)是集中式的,在處理器中位于一個(gè)固定的位置。在現(xiàn)代多核微處理 器中,受物理布局和體系結(jié)構(gòu)的限制,各個(gè)處理器核訪問硬件鎖時(shí)經(jīng)過的路徑是不同的,各個(gè)核訪問同一硬件鎖的執(zhí)行速度通常是不平衡的,這會(huì)導(dǎo)致硬件鎖的同步時(shí)間增長(zhǎng)。如圖I所示,現(xiàn)有技術(shù)含有硬件鎖部件的多核處理器共有N+1個(gè)內(nèi)核(Core。 CoreN),每?jī)蓚€(gè)內(nèi)核共用一個(gè)路由器(Router),多級(jí)路由器將所有內(nèi)核連接在一起,并共享同一個(gè)硬件鎖。因?yàn)榈接布i的路由器級(jí)數(shù)的不同,各個(gè)內(nèi)核訪問硬件鎖的延遲是不一致的,例如Core2相對(duì)于Coretl需要多經(jīng)過一級(jí)路由器才能訪問到硬件鎖,其訪問的絕對(duì)延遲必然大于Coretl,這樣的結(jié)構(gòu)導(dǎo)致不同的處理器核之間訪問硬件鎖絕對(duì)延遲的不平衡。雖然軟件上各個(gè)核發(fā)出鎖訪問的機(jī)率相同,但是硬件上絕對(duì)訪問延遲的不同導(dǎo)致了鎖訪問不平衡,絕對(duì)訪問延遲短的核(如Coreci)能夠頻繁地訪問鎖,而絕對(duì)訪問延遲長(zhǎng)的核(如CoreN)則很難獲取鎖,而鎖同步機(jī)制在各個(gè)核訪問鎖的次數(shù)均衡的情況下才能擁有最高的效率,故上述情況將導(dǎo)致鎖同步的時(shí)間增大,降低硬件鎖的應(yīng)用效能。如何實(shí)現(xiàn)各個(gè)核對(duì)硬件鎖的訪問次數(shù)的平衡以提高鎖同步應(yīng)用的性能,成為了多核微處理器設(shè)計(jì)領(lǐng)域關(guān)于硬件鎖設(shè)計(jì)的關(guān)鍵技術(shù)問題。

發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種能夠使各處理器核獲取硬件鎖的機(jī)會(huì)均衡、硬件實(shí)現(xiàn)代價(jià)小、擴(kuò)展性好、結(jié)構(gòu)簡(jiǎn)單、易于實(shí)現(xiàn)的用于多核處理器的硬件鎖實(shí)現(xiàn)方法及裝置。為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案為
一種用于多核處理器的硬件鎖實(shí)現(xiàn)方法,其實(shí)施步驟如下
1)建立與處理器核一一對(duì)應(yīng)的鎖請(qǐng)求隊(duì)列,初始化設(shè)置各個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值,通過所述鎖請(qǐng)求隊(duì)列按照先入先出的原則分別緩存各處理器核發(fā)送的硬件鎖訪問請(qǐng)求;
2)獲取鎖請(qǐng)求隊(duì)列的最小權(quán)值,選擇最小權(quán)值對(duì)應(yīng)的鎖請(qǐng)求隊(duì)列獲得服務(wù),將鎖請(qǐng)求隊(duì)列的權(quán)值在獲得服務(wù)后遞增,同時(shí)從獲得服務(wù)的鎖請(qǐng)求隊(duì)列中選出最先進(jìn)入的硬件鎖訪問請(qǐng)求執(zhí)行鎖存儲(chǔ)空間訪問操作并返回應(yīng)答報(bào)文。
作為本發(fā)明用于多核處理器的硬件鎖實(shí)現(xiàn)方法的進(jìn)一步改進(jìn)
所述步驟I)中初始化設(shè)置各個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值的詳細(xì)步驟如下
1.1)初始化設(shè)置各個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值計(jì)數(shù)器和權(quán)值遞增值;
1.2)將權(quán)值計(jì)數(shù)器的值初始化為權(quán)值遞增值作為鎖請(qǐng)求隊(duì)列的權(quán)值。所述步驟2)中獲取鎖請(qǐng)求隊(duì)列的最小權(quán)值具體是指采用二叉樹結(jié)構(gòu)獲取鎖請(qǐng)求隊(duì)列的最小權(quán)值。所述采用二叉樹結(jié)構(gòu)獲取鎖請(qǐng)求隊(duì)列的最小權(quán)值的詳細(xì)步驟如下
2.I)將各個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值和權(quán)編號(hào)分別輸入二叉樹的末梢節(jié)點(diǎn);
2.2)所述二叉樹的每一個(gè)節(jié)點(diǎn)將子節(jié)點(diǎn)輸入的權(quán)項(xiàng)的權(quán)值進(jìn)行比較并選擇權(quán)值較小 的權(quán)項(xiàng)作為輸出至父節(jié)點(diǎn)的權(quán)項(xiàng),最終由所述二叉樹的根節(jié)點(diǎn)將最終選擇得到的權(quán)項(xiàng)作為最終選擇得到的權(quán)值最小的鎖請(qǐng)求隊(duì)列;
2.3)選擇最小權(quán)值對(duì)應(yīng)的鎖請(qǐng)求隊(duì)列獲得服務(wù)。所述步驟2)中將鎖請(qǐng)求隊(duì)列的權(quán)值在獲得服務(wù)后遞增的詳細(xì)步驟如下將有效的鎖請(qǐng)求隊(duì)列的權(quán)值在獲得服務(wù)后的下一個(gè)周期將權(quán)值遞增值累加到對(duì)應(yīng)的權(quán)值計(jì)數(shù)器作為新的權(quán)值;同時(shí)判斷獲得服務(wù)的鎖請(qǐng)求隊(duì)列的權(quán)值計(jì)數(shù)器的值是否等于權(quán)值計(jì)數(shù)器的最大計(jì)數(shù)值,如果是則將所有鎖請(qǐng)求隊(duì)列的權(quán)值計(jì)數(shù)器初始化為權(quán)值遞增值。本發(fā)明還提供一種用于多核處理器的硬件鎖裝置,包括
鎖請(qǐng)求隊(duì)列單元,包含多個(gè)與處理器核一一對(duì)應(yīng)的鎖請(qǐng)求隊(duì)列,所述鎖請(qǐng)求隊(duì)列按照先入先出的原則分別緩存各處理器核發(fā)送的硬件鎖訪問請(qǐng)求;
權(quán)值計(jì)數(shù)邏輯單元,用于初始化設(shè)置各個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值,并將鎖請(qǐng)求隊(duì)列的權(quán)值在獲得服務(wù)后遞增;
最小權(quán)值判斷邏輯,用于獲取鎖請(qǐng)求隊(duì)列的最小權(quán)值;
隊(duì)列選擇器,用于選擇權(quán)值最小且請(qǐng)求有效的鎖請(qǐng)求隊(duì)列獲得服務(wù);
硬件鎖存儲(chǔ)空間訪問邏輯,用于從獲得服務(wù)的鎖請(qǐng)求隊(duì)列中選出最先進(jìn)入的硬件鎖訪問請(qǐng)求執(zhí)行鎖存儲(chǔ)空間訪問操作并返回應(yīng)答報(bào)文。作為本發(fā)明用于多核處理器的硬件鎖裝置的進(jìn)一步改進(jìn)
所述權(quán)值計(jì)數(shù)邏輯單元包括與鎖請(qǐng)求隊(duì)列一一對(duì)應(yīng)的多個(gè)權(quán)值計(jì)數(shù)邏輯,所述權(quán)值計(jì)數(shù)邏輯包括步進(jìn)寄存器、加法器、第一選擇器、權(quán)值計(jì)數(shù)器、第二選擇器和比較器,所述步進(jìn)寄存器用于存儲(chǔ)對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值遞增值;所述權(quán)值計(jì)數(shù)器用于存儲(chǔ)對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值;當(dāng)對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值計(jì)數(shù)器尚未初始化或者收到全部計(jì)數(shù)器復(fù)位命令時(shí),第一選擇器將權(quán)值遞增值寫入權(quán)值計(jì)數(shù)器作為對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值并通過第二選擇器輸出;當(dāng)對(duì)應(yīng)鎖請(qǐng)求隊(duì)列在上一個(gè)周期被選擇的權(quán)值最小的鎖請(qǐng)求隊(duì)列時(shí),加法器將對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值計(jì)數(shù)器加上步進(jìn)寄存器存儲(chǔ)的權(quán)值遞增值后寫入權(quán)值計(jì)數(shù)器作為對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值并通過第二選擇器輸出;對(duì)對(duì)應(yīng)鎖請(qǐng)求隊(duì)列在上一個(gè)周期未被選擇的權(quán)值最小的鎖請(qǐng)求隊(duì)列時(shí),第二選擇器直接讀取對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值計(jì)數(shù)器的數(shù)值作為對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值輸出;且所述第二選擇器在對(duì)應(yīng)鎖請(qǐng)求隊(duì)列無效時(shí)優(yōu)先選擇權(quán)值計(jì)數(shù)器的最大計(jì)數(shù)值作為對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值輸出;所述比較器則在權(quán)值計(jì)數(shù)器的數(shù)值等于權(quán)值計(jì)數(shù)器的最大計(jì)數(shù)值時(shí)向各個(gè)權(quán)值計(jì)數(shù)邏輯發(fā)送全部計(jì)數(shù)器復(fù)位命令。所述最小權(quán)值判斷邏輯為二叉樹結(jié)構(gòu),所述二叉樹結(jié)構(gòu)的末梢節(jié)點(diǎn)的輸入端分別與各個(gè)權(quán)值計(jì)數(shù)邏輯相連,所述二叉樹結(jié)構(gòu)的根節(jié)點(diǎn)的輸出端與隊(duì)列選擇器相連,所述二叉樹結(jié)構(gòu)的末梢節(jié)點(diǎn)分別獲取各個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值和權(quán)編號(hào),所述二叉樹結(jié)構(gòu)的每一個(gè)節(jié)點(diǎn)將兩個(gè)子節(jié)點(diǎn)輸入的權(quán)項(xiàng)的權(quán)值進(jìn)行比較并選擇權(quán)值較小的權(quán)項(xiàng)作為輸出至父節(jié)點(diǎn)的權(quán)項(xiàng),并由所述二叉樹結(jié)構(gòu)的根節(jié)點(diǎn)將最終選擇得到的權(quán)項(xiàng)作為最終選擇得到的最小權(quán)值并輸出給隊(duì)列選擇器。本發(fā)明用于多核處理器的硬件鎖實(shí)現(xiàn)方法具有下述優(yōu)點(diǎn)
I、本發(fā)明通過鎖請(qǐng)求隊(duì)列分別緩存各處理器核發(fā)送的硬件鎖訪問請(qǐng)求、計(jì)算每一個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值并選擇權(quán)值最小且請(qǐng)求有效的鎖請(qǐng)求隊(duì)列,并從中選出最先進(jìn)入的硬件鎖訪問請(qǐng)求,能夠?yàn)槎嗪颂幚砥髦胁煌恢玫奶幚砥骱颂峁┗疽恢碌恼?qǐng)求服務(wù)概率,能夠使各處理器核獲取硬件鎖的機(jī)會(huì)均衡,有利于提升鎖同步效率,避免了因鎖請(qǐng)求服務(wù)次數(shù)的不平衡而導(dǎo)致的同步效率低下問題,同時(shí)本實(shí)現(xiàn)方法具有硬件實(shí)現(xiàn)代價(jià)小的優(yōu)點(diǎn)。2、本發(fā)明實(shí)現(xiàn)的硬件鎖部件允許各個(gè)核訪問該部件的絕對(duì)延遲不同,但仍具有接近平衡訪問時(shí)的鎖應(yīng)用效果,因此該部件在多核處理器中的物理位置是十分靈活的,并不要求處于距離各核的路徑延遲相同,而且對(duì)于各種核數(shù)的處理器均適用,具有良好的可擴(kuò)展特性。3、本發(fā)明用于實(shí)現(xiàn)平衡訪問的邏輯結(jié)構(gòu)簡(jiǎn)單,易于實(shí)現(xiàn)。本發(fā)明用于多核處理器的硬件鎖裝置為與本發(fā)明用于多核處理器的硬件鎖實(shí)現(xiàn)方法相對(duì)應(yīng)的裝置,因此與用于多核處理器的硬件鎖實(shí)現(xiàn)方法相同的技術(shù)效果,在此不再贅述。


圖I為現(xiàn)有技術(shù)包含硬件鎖的多核處理器的內(nèi)部結(jié)構(gòu)示意圖。圖2為本發(fā)明實(shí)施例方法的流程示意圖。圖3為本發(fā)明實(shí)施例裝置的框架結(jié)構(gòu)示意圖。圖4為本發(fā)明實(shí)施例中權(quán)值計(jì)數(shù)邏輯的框架結(jié)構(gòu)示意圖。圖5為本發(fā)明實(shí)施例中二叉樹結(jié)構(gòu)的判斷邏輯結(jié)構(gòu)示意圖。圖例說明1、鎖請(qǐng)求隊(duì)列單元;2、權(quán)值計(jì)數(shù)邏輯單元;21、權(quán)值計(jì)數(shù)邏輯;211、步進(jìn)寄存器;212、加法器;213、第一選擇器;214、權(quán)值計(jì)數(shù)器;215、第二選擇器;216、比較器;
3、最小權(quán)值判斷邏輯;4、隊(duì)列選擇器;5、硬件鎖存儲(chǔ)空間訪問邏輯。
具體實(shí)施例方式如圖2所示,本實(shí)施例用于多核處理器的硬件鎖實(shí)現(xiàn)方法的實(shí)施步驟如下
1)建立與處理器核一一對(duì)應(yīng)的鎖請(qǐng)求隊(duì)列,初始化設(shè)置各個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值,通過所述鎖請(qǐng)求隊(duì)列按照先入先出的原則分別緩存各處理器核發(fā)送的硬件鎖訪問請(qǐng)求;
2)獲取鎖請(qǐng)求隊(duì)列的最小權(quán)值,選擇最小權(quán)值對(duì)應(yīng)的鎖請(qǐng)求隊(duì)列獲得服務(wù),將鎖請(qǐng)求隊(duì)列的權(quán)值在獲得服務(wù)后遞增,同時(shí)從獲得服務(wù)的鎖請(qǐng)求隊(duì)列中選出最先進(jìn)入的硬件鎖訪問請(qǐng)求執(zhí)行鎖存儲(chǔ)空間訪問操作并返回應(yīng)答報(bào)文。本實(shí)施例中,步驟I)中初始化設(shè)置各個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值的詳細(xì)步驟如下
I.I)初始化設(shè)置各個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值計(jì)數(shù)器和權(quán)值遞增值;1.2)將權(quán)值計(jì)數(shù)器的值初始化為權(quán)值遞增值作為鎖請(qǐng)求隊(duì)列的權(quán)值。步驟2)中獲取鎖請(qǐng)求隊(duì)列的最小權(quán)值具體是指采用二叉樹結(jié)構(gòu)獲取鎖請(qǐng)求隊(duì)列的最小權(quán)值。本實(shí)施例中,采用二叉樹結(jié)構(gòu)獲取鎖請(qǐng)求隊(duì)列的最小權(quán)值的詳細(xì)步驟如下
2.I)將各個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值和權(quán)編號(hào)分別輸入二叉樹的末梢節(jié)點(diǎn);
2.2)所述二叉樹的每一個(gè)節(jié)點(diǎn)將子節(jié)點(diǎn)輸入的權(quán)項(xiàng)的權(quán)值進(jìn)行比較并選擇權(quán)值較小的權(quán)項(xiàng)作為輸出至父節(jié)點(diǎn)的權(quán)項(xiàng),最終由所述二叉樹的根節(jié)點(diǎn)將最終選擇得到的權(quán)項(xiàng)作為最終選擇得到的權(quán)值最小的鎖請(qǐng)求隊(duì)列;
2.3)選擇最小權(quán)值對(duì)應(yīng)的鎖請(qǐng)求隊(duì)列獲得服務(wù)。本實(shí)施例中,步驟2)中將鎖請(qǐng)求隊(duì)列的權(quán)值在獲得服務(wù)后遞增的詳細(xì)步驟如下將有效的鎖請(qǐng)求隊(duì)列的權(quán)值在獲得服務(wù)后的下一個(gè)周期將權(quán)值遞增值累加到對(duì)應(yīng)的權(quán)值計(jì)數(shù)器作為新的權(quán)值;同時(shí)判斷獲得服務(wù)的鎖請(qǐng)求隊(duì)列的權(quán)值計(jì)數(shù)器的值是否等于權(quán)值計(jì)·數(shù)器的最大計(jì)數(shù)值,如果是則將所有鎖請(qǐng)求隊(duì)列的權(quán)值計(jì)數(shù)器初始化為權(quán)值遞增值。如圖3所示,本實(shí)施例用于多核處理器的硬件鎖裝置包括
鎖請(qǐng)求隊(duì)列單元I,包含多個(gè)與處理器核一一對(duì)應(yīng)的鎖請(qǐng)求隊(duì)列,所述鎖請(qǐng)求隊(duì)列按照先入先出的原則分別緩存各處理器核發(fā)送的硬件鎖訪問請(qǐng)求;
權(quán)值計(jì)數(shù)邏輯單元2,用于初始化設(shè)置各個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值,并將鎖請(qǐng)求隊(duì)列的權(quán)值在獲得服務(wù)后遞增;
最小權(quán)值判斷邏輯3,用于獲取鎖請(qǐng)求隊(duì)列的最小權(quán)值;
隊(duì)列選擇器4,用于選擇權(quán)值最小且請(qǐng)求有效的鎖請(qǐng)求隊(duì)列獲得服務(wù);
硬件鎖存儲(chǔ)空間訪問邏輯5,用于從獲得服務(wù)的鎖請(qǐng)求隊(duì)列中選出最先進(jìn)入的硬件鎖訪問請(qǐng)求執(zhí)行鎖存儲(chǔ)空間訪問操作并返回應(yīng)答報(bào)文。鎖請(qǐng)求隊(duì)列單元I擁有與處理器核數(shù)相同的鎖請(qǐng)求隊(duì)列(圖中為隊(duì)列O 隊(duì)列N,共計(jì)N+1個(gè)鎖請(qǐng)求隊(duì)列,N+1為多核處理器的處理器核數(shù)),其主要功能是將鎖訪問請(qǐng)求的報(bào)文分發(fā)到相應(yīng)的鎖請(qǐng)求隊(duì)列中,分發(fā)的原則是依據(jù)報(bào)文中的內(nèi)核編號(hào)。鎖請(qǐng)求隊(duì)列內(nèi)的請(qǐng)求按照先進(jìn)先出的原則順序執(zhí)行,能夠保證同一個(gè)核對(duì)硬件鎖訪問的存儲(chǔ)一致性。不同鎖請(qǐng)求隊(duì)列間的請(qǐng)求則是亂序執(zhí)行的,例如由不同的核發(fā)出的A、B兩個(gè)先后到達(dá)的鎖訪問請(qǐng)求,如果分別進(jìn)入了不同的鎖請(qǐng)求隊(duì)列,那么B可能先于A被服務(wù)。權(quán)值計(jì)數(shù)邏輯單元2是支持硬件鎖平衡訪問特性的核心部件。如圖4所示,本實(shí)施例中的權(quán)值計(jì)數(shù)邏輯單元2包括與鎖請(qǐng)求隊(duì)列一一對(duì)應(yīng)的多個(gè)權(quán)值計(jì)數(shù)邏輯21,權(quán)值計(jì)數(shù)邏輯21包括步進(jìn)寄存器211、加法器212、第一選擇器213、權(quán)值計(jì)數(shù)器214、第二選擇器215和比較器216。步進(jìn)寄存器211用于存儲(chǔ)對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值遞增值,步進(jìn)寄存器211決定該隊(duì)列被訪問后權(quán)值計(jì)數(shù)器214的步進(jìn)累加值;權(quán)值計(jì)數(shù)器214用于存儲(chǔ)對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值;當(dāng)對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值計(jì)數(shù)器214尚未初始化或者收到全部計(jì)數(shù)器復(fù)位命令時(shí),第一選擇器213將權(quán)值遞增值寫入權(quán)值計(jì)數(shù)器214作為對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值并通過第二選擇器215輸出;當(dāng)對(duì)應(yīng)鎖請(qǐng)求隊(duì)列在上一個(gè)周期被選擇的權(quán)值最小的鎖請(qǐng)求隊(duì)列時(shí),加法器212將對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值計(jì)數(shù)器214加上步進(jìn)寄存器211存儲(chǔ)的權(quán)值遞增值后寫入權(quán)值計(jì)數(shù)器214作為對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值并通過第二選擇器215輸出;對(duì)對(duì)應(yīng)鎖請(qǐng)求隊(duì)列在上一個(gè)周期未被選擇的權(quán)值最小的鎖請(qǐng)求隊(duì)列時(shí),第二選擇器215直接讀取對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值計(jì)數(shù)器214的數(shù)值作為對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值輸出;且第二選擇器215在對(duì)應(yīng)鎖請(qǐng)求隊(duì)列無效時(shí)優(yōu)先選擇權(quán)值計(jì)數(shù)器214的最大計(jì)數(shù)值作為對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值輸出;比較器216則在權(quán)值計(jì)數(shù)器214的數(shù)值等于權(quán)值計(jì)數(shù)器214的最大計(jì)數(shù)值時(shí)向各個(gè)權(quán)值計(jì)數(shù)邏輯21發(fā)送全部計(jì)數(shù)器復(fù)位命令。本實(shí)施例的權(quán)值計(jì)數(shù)邏輯單元2對(duì)每路鎖請(qǐng)求隊(duì)列都有對(duì)應(yīng)的權(quán)值計(jì)數(shù)邏輯21(圖中為權(quán)值計(jì)數(shù)邏輯O 權(quán)值計(jì)數(shù)邏輯N,共計(jì)N+1個(gè)權(quán)值計(jì)數(shù)邏輯21,N+1為多核處理器的處理器核數(shù)),該權(quán)值計(jì)數(shù)邏輯21包含有權(quán)值計(jì)數(shù)器214和步進(jìn)寄存器211,權(quán)值計(jì)數(shù)器214在每次鎖請(qǐng)求隊(duì)列被選擇后累加步進(jìn)寄存器211。步進(jìn)寄存器211的值與內(nèi)核訪問硬件鎖的絕對(duì)路徑延遲相關(guān),延遲越大的核對(duì)應(yīng)的步進(jìn)寄存器值越小,反之則越大;最小權(quán)值判斷邏輯3按照二叉樹型結(jié)構(gòu)組織,以盡量小的邏輯延遲實(shí)現(xiàn)最小權(quán)值的判斷,生成對(duì)當(dāng)前權(quán)值最小的有效隊(duì)列的選擇信號(hào);硬件鎖存儲(chǔ)空間訪問邏輯5實(shí)現(xiàn)對(duì)被選出的鎖請(qǐng)求報(bào)文的讀寫服務(wù),并返回對(duì)應(yīng)的寫應(yīng)答或者讀應(yīng)答報(bào)文。權(quán)值計(jì)數(shù)邏輯單元2在同步復(fù)位、 隊(duì)列被選擇、請(qǐng)求隊(duì)列有效這三根信號(hào)的控制下,步進(jìn)寄存器211、加法器212、第一選擇器213、權(quán)值計(jì)數(shù)器214、第二選擇器215和比較器216相互配合,共同生成最終輸出的當(dāng)前權(quán)值和全部計(jì)數(shù)器復(fù)位信號(hào)。本實(shí)施例中,權(quán)值計(jì)數(shù)邏輯單元2的詳細(xì)工作過程如下
Al)硬件鎖部件復(fù)位或者收到計(jì)數(shù)器復(fù)位信號(hào)后,權(quán)值計(jì)數(shù)器214的值初始化為對(duì)應(yīng)的步進(jìn)寄存器211的值,同步復(fù)位信號(hào)有效,第一選擇器213選擇通道lx。這里步進(jìn)寄存器211的值與對(duì)應(yīng)核訪問硬件鎖的絕對(duì)延遲有關(guān),延遲越大的核對(duì)應(yīng)的步進(jìn)值越小,反之則越大,具體步進(jìn)值的選擇可在實(shí)現(xiàn)中根據(jù)實(shí)際情況調(diào)整;
A2)相關(guān)鎖請(qǐng)求隊(duì)列被選擇并執(zhí)行后,隊(duì)列被選擇信號(hào)有效,第一選擇器213選擇通道01,權(quán)值計(jì)數(shù)器214在下一個(gè)時(shí)鐘周期到來后變?yōu)槠湓蹬c步進(jìn)寄存器211的累加值;
A3)權(quán)值計(jì)數(shù)器214的權(quán)值若超出最大計(jì)數(shù)值,則比較器216會(huì)產(chǎn)生全部計(jì)數(shù)器復(fù)位信號(hào),復(fù)位硬件鎖部件中的全部權(quán)值計(jì)數(shù)器214 ;
A4)相關(guān)鎖請(qǐng)求隊(duì)列有效時(shí),當(dāng)前權(quán)值通過第二選擇器215選擇通道1,即權(quán)值計(jì)數(shù)器214的值,若相關(guān)鎖請(qǐng)求隊(duì)列無效,則當(dāng)前權(quán)值選擇通道0,固定為最大計(jì)數(shù)值。權(quán)值計(jì)數(shù)器214累加超過最大計(jì)數(shù)值后,產(chǎn)生的全部計(jì)數(shù)器復(fù)位信號(hào)會(huì)影響上述訪問平衡方法的有效性,因此應(yīng)盡量減小溢出發(fā)生的次數(shù),故權(quán)值計(jì)數(shù)器214的位寬應(yīng)較大,一般選擇為32位以上。最小權(quán)值判斷邏輯3負(fù)責(zé)生成選擇當(dāng)前權(quán)值最小的有效請(qǐng)求隊(duì)列的控制信號(hào)。本實(shí)施例中,最小權(quán)值判斷邏輯3為二叉樹結(jié)構(gòu),二叉樹結(jié)構(gòu)的末梢節(jié)點(diǎn)的輸入端分別與各個(gè)權(quán)值計(jì)數(shù)邏輯21相連,二叉樹結(jié)構(gòu)的根節(jié)點(diǎn)的輸出端與隊(duì)列選擇器4相連,二叉樹結(jié)構(gòu)的末梢節(jié)點(diǎn)分別獲取各個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值和權(quán)編號(hào),所述二叉樹結(jié)構(gòu)的每一個(gè)節(jié)點(diǎn)將兩個(gè)子節(jié)點(diǎn)輸入的權(quán)項(xiàng)的權(quán)值進(jìn)行比較并選擇權(quán)值較小的權(quán)項(xiàng)作為輸出至父節(jié)點(diǎn)的權(quán)項(xiàng),并由所述二叉樹結(jié)構(gòu)的根節(jié)點(diǎn)將最終選擇得到的權(quán)項(xiàng)作為最終選擇得到的最小權(quán)值并輸出給隊(duì)列選擇器4。最小權(quán)值判斷邏輯3為二叉樹結(jié)構(gòu),能夠減小邏輯級(jí)數(shù)、縮短路徑延遲、力口快邏輯處理的時(shí)間。二叉樹結(jié)構(gòu)的末梢節(jié)點(diǎn)分別獲取各個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值和權(quán)編號(hào),二叉樹結(jié)構(gòu)的每一個(gè)節(jié)點(diǎn)將兩個(gè)子節(jié)點(diǎn)輸入的權(quán)項(xiàng)的權(quán)值進(jìn)行比較并選擇權(quán)值較小的權(quán)項(xiàng)作為輸出至父節(jié)點(diǎn)的權(quán)項(xiàng),并由二叉樹結(jié)構(gòu)的根節(jié)點(diǎn)將最終選擇得到的權(quán)項(xiàng)作為最終選擇得到的權(quán)值最小且請(qǐng)求有效的鎖請(qǐng)求隊(duì)列。圖中樹葉上任意一個(gè)權(quán)X包含有兩部分值當(dāng)前權(quán)值和權(quán)的編號(hào),比較邏輯僅比較權(quán)值,但選擇較小的結(jié)果時(shí)要包含權(quán)的編號(hào),如此逐級(jí)比較,最后一級(jí)(樹根)選出的結(jié)果即是最小的有效請(qǐng)求隊(duì)列的編號(hào),此編號(hào)將被傳遞到隊(duì)列選擇器4來選擇目標(biāo)隊(duì)列中的請(qǐng)求。這里需要注意的是,如果某請(qǐng)求隊(duì)列內(nèi)容為空,那么對(duì)應(yīng)的當(dāng)前權(quán)值應(yīng)置為計(jì)數(shù)器的最大值,否則可能選出無效的隊(duì)列,導(dǎo)致邏輯錯(cuò)誤。如圖5所示,兩個(gè)子節(jié)點(diǎn)輸入的權(quán)項(xiàng)的權(quán)值(權(quán)O和權(quán)I)進(jìn)行比較并選擇權(quán)值較小的權(quán)項(xiàng)作為輸出至父節(jié)點(diǎn)的權(quán)項(xiàng)(權(quán)值為MinO),以此類推向根節(jié)點(diǎn)上溯,最終得出整個(gè)二叉樹結(jié)構(gòu)中權(quán)值最小的權(quán)項(xiàng)(權(quán)值為Mink)。隊(duì)列選擇器4負(fù)責(zé)從所有鎖請(qǐng)求隊(duì)列中讀出指定隊(duì)列的當(dāng)前鎖訪問請(qǐng)求的報(bào)文,選擇信號(hào)為最小權(quán)值判斷邏輯3輸出的控制信號(hào),讀出的報(bào)文被傳遞給硬件鎖存儲(chǔ)空間訪問邏輯5。硬件鎖存儲(chǔ)空間訪問邏輯5負(fù)責(zé)服務(wù)鎖存儲(chǔ)空間的訪問,該邏輯根據(jù)報(bào)文的讀寫 屬性,執(zhí)行相應(yīng)的讀寫功能,并返回寫應(yīng)答或者讀應(yīng)答報(bào)文,其邏輯結(jié)構(gòu)與基本的存儲(chǔ)空間訪問基本一致。本實(shí)施例用于多核處理器的硬件鎖裝置的工作步驟如下
BI)建立鎖請(qǐng)求隊(duì)列單元1,鎖請(qǐng)求隊(duì)列單元I包含與處理器核一一對(duì)應(yīng)的鎖請(qǐng)求隊(duì)列,權(quán)值計(jì)數(shù)邏輯單元2初始化設(shè)置各個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值,通過所述鎖請(qǐng)求隊(duì)列按照先入先出的原則分別緩存各處理器核發(fā)送的硬件鎖訪問請(qǐng)求;
B2)最小權(quán)值判斷邏輯3獲取鎖請(qǐng)求隊(duì)列的最小權(quán)值,隊(duì)列選擇器4選擇最小權(quán)值對(duì)應(yīng)的鎖請(qǐng)求隊(duì)列獲得服務(wù),權(quán)值計(jì)數(shù)邏輯單元2將鎖請(qǐng)求隊(duì)列的權(quán)值在獲得服務(wù)后遞增,同時(shí)硬件鎖存儲(chǔ)空間訪問邏輯5從獲得服務(wù)的鎖請(qǐng)求隊(duì)列中選出最先進(jìn)入的硬件鎖訪問請(qǐng)求執(zhí)行鎖存儲(chǔ)空間訪問操作并返回應(yīng)答報(bào)文。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,本發(fā)明的保護(hù)范圍并不僅局限于上述實(shí)施例,凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護(hù)范圍。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理前提下的若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種用于多核處理器的硬件鎖實(shí)現(xiàn)方法,其特征在于其實(shí)施步驟如下 1)建立與處理器核一一對(duì)應(yīng)的鎖請(qǐng)求隊(duì)列,初始化設(shè)置各個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值,通過所述鎖請(qǐng)求隊(duì)列按照先入先出的原則分別緩存各處理器核發(fā)送的硬件鎖訪問請(qǐng)求; 2)獲取鎖請(qǐng)求隊(duì)列的最小權(quán)值,選擇最小權(quán)值對(duì)應(yīng)的鎖請(qǐng)求隊(duì)列獲得服務(wù),將鎖請(qǐng)求隊(duì)列的權(quán)值在獲得服務(wù)后遞增,同時(shí)從獲得服務(wù)的鎖請(qǐng)求隊(duì)列中選出最先進(jìn)入的硬件鎖訪問請(qǐng)求并執(zhí)行鎖存儲(chǔ)空間訪問操作,然后返回應(yīng)答報(bào)文。
2.根據(jù)權(quán)利要求I所述的用于多核處理器的硬件鎖實(shí)現(xiàn)方法,其特征在于,所述步驟O中初始化設(shè)置各個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值的詳細(xì)步驟如下 1.1)初始化設(shè)置各個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值計(jì)數(shù)器和權(quán)值遞增值; 1.2)將權(quán)值計(jì)數(shù)器的值初始化為權(quán)值遞增值作為鎖請(qǐng)求隊(duì)列的權(quán)值。
3.根據(jù)權(quán)利要求2所述的用于多核處理器的硬件鎖實(shí)現(xiàn)方法,其特征在于所述步驟2)中獲取鎖請(qǐng)求隊(duì)列的最小權(quán)值具體是指采用二叉樹結(jié)構(gòu)獲取鎖請(qǐng)求隊(duì)列的最小權(quán)值。
4.根據(jù)權(quán)利要求3所述的用于多核處理器的硬件鎖實(shí)現(xiàn)方法,其特征在于所述采用二叉樹結(jié)構(gòu)獲取鎖請(qǐng)求隊(duì)列的最小權(quán)值的詳細(xì)步驟如下 2.I)將各個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值和權(quán)編號(hào)分別輸入二叉樹的末梢節(jié)點(diǎn); 2.2)所述二叉樹的每一個(gè)節(jié)點(diǎn)將子節(jié)點(diǎn)輸入的權(quán)項(xiàng)的權(quán)值進(jìn)行比較并選擇權(quán)值較小的權(quán)項(xiàng)作為輸出至父節(jié)點(diǎn)的權(quán)項(xiàng),最終由所述二叉樹的根節(jié)點(diǎn)將最終選擇得到的權(quán)項(xiàng)作為最終選擇得到的權(quán)值最小的鎖請(qǐng)求隊(duì)列; 2.3)選擇最小權(quán)值對(duì)應(yīng)的鎖請(qǐng)求隊(duì)列獲得服務(wù)。
5.根據(jù)權(quán)利要求4所述的用于多核處理器的硬件鎖實(shí)現(xiàn)方法,其特征在于所述步驟2)中將鎖請(qǐng)求隊(duì)列的權(quán)值在獲得服務(wù)后遞增的詳細(xì)步驟如下將有效的鎖請(qǐng)求隊(duì)列的權(quán)值在獲得服務(wù)后的下一個(gè)周期將權(quán)值遞增值累加到對(duì)應(yīng)的權(quán)值計(jì)數(shù)器作為新的權(quán)值;同時(shí)判斷獲得服務(wù)的鎖請(qǐng)求隊(duì)列的權(quán)值計(jì)數(shù)器的值是否等于權(quán)值計(jì)數(shù)器的最大計(jì)數(shù)值,如果是則將所有鎖請(qǐng)求隊(duì)列的權(quán)值計(jì)數(shù)器初始化為權(quán)值遞增值。
6.一種用于多核處理器的硬件鎖裝置,其特征在于,包括 鎖請(qǐng)求隊(duì)列單元(1),包含多個(gè)與處理器核一一對(duì)應(yīng)的鎖請(qǐng)求隊(duì)列,所述鎖請(qǐng)求隊(duì)列按照先入先出的原則分別緩存各處理器核發(fā)送的硬件鎖訪問請(qǐng)求; 權(quán)值計(jì)數(shù)邏輯單元(2),用于初始化設(shè)置各個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值,并將鎖請(qǐng)求隊(duì)列的權(quán)值在獲得服務(wù)后遞增; 最小權(quán)值判斷邏輯(3),用于獲取鎖請(qǐng)求隊(duì)列的最小權(quán)值; 隊(duì)列選擇器(4),用于選擇權(quán)值最小且請(qǐng)求有效的鎖請(qǐng)求隊(duì)列獲得服務(wù); 硬件鎖存儲(chǔ)空間訪問邏輯(5),用于從獲得服務(wù)的鎖請(qǐng)求隊(duì)列中選出最先進(jìn)入的硬件鎖訪問請(qǐng)求執(zhí)行鎖存儲(chǔ)空間訪問操作并返回應(yīng)答報(bào)文。
7.根據(jù)權(quán)利要求6所述的用于多核處理器的硬件鎖訪問裝置,其特征在于所述權(quán)值計(jì)數(shù)邏輯單元(2)包括與鎖請(qǐng)求隊(duì)列一一對(duì)應(yīng)的多個(gè)權(quán)值計(jì)數(shù)邏輯(21),所述權(quán)值計(jì)數(shù)邏輯(21)包括步進(jìn)寄存器(211)、加法器(212)、第一選擇器(213)、權(quán)值計(jì)數(shù)器(214)、第二選擇器(215)和比較器(216),所述步進(jìn)寄存器(211)用于存儲(chǔ)對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值遞增值;所述權(quán)值計(jì)數(shù)器(214)用于存儲(chǔ)對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值;當(dāng)對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值計(jì)數(shù)器(214)尚未初始化或者收到全部計(jì)數(shù)器復(fù)位命令時(shí),第一選擇器(213)將權(quán)值遞增值寫入權(quán)值計(jì)數(shù)器(214)作為對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值并通過第二選擇器(215)輸出;當(dāng)對(duì)應(yīng)鎖請(qǐng)求隊(duì)列在上一個(gè)周期被選擇的權(quán)值最小的鎖請(qǐng)求隊(duì)列時(shí),加法器(212)將對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值計(jì)數(shù)器(214)加上步進(jìn)寄存器(211)存儲(chǔ)的權(quán)值遞增值后寫入權(quán)值計(jì)數(shù)器(214)作為對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值并通過第二選擇器(215)輸出;對(duì)對(duì)應(yīng)鎖請(qǐng)求隊(duì)列在上一個(gè)周期未被選擇的權(quán)值最小的鎖請(qǐng)求隊(duì)列時(shí),第二選擇器(215)直接讀取對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值計(jì)數(shù)器(214)的數(shù)值作為對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值輸出;且所述第二選擇器(215)在對(duì)應(yīng)鎖請(qǐng)求隊(duì)列無效時(shí)優(yōu)先選擇權(quán)值計(jì)數(shù)器(214)的最大計(jì)數(shù)值作為對(duì)應(yīng)鎖請(qǐng)求隊(duì)列的權(quán)值輸出;所述比較器(216)則在權(quán)值計(jì)數(shù)器(214)的數(shù)值等于權(quán)值計(jì)數(shù)器(214)的最大計(jì)數(shù)值時(shí)向各個(gè)權(quán)值計(jì)數(shù)邏輯(21)發(fā)送全部計(jì)數(shù)器復(fù)位命令。
8.根據(jù)權(quán)利要求6或7所述的用于多核處理器的硬件鎖裝置,其特征在于所述最小權(quán)值判斷邏輯(3)為二叉樹結(jié)構(gòu),所述二叉樹結(jié)構(gòu)的末梢節(jié)點(diǎn)的輸入端分別與各個(gè)權(quán)值計(jì)數(shù)邏輯(21)相連,所述二叉樹結(jié)構(gòu)的根節(jié)點(diǎn)的輸出端與隊(duì)列選擇器(4)相連,所述二叉樹結(jié)構(gòu)的末梢節(jié)點(diǎn)分別獲取各個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值和權(quán)編號(hào),所述二叉樹結(jié)構(gòu)的每一個(gè)節(jié)點(diǎn)將兩個(gè)子節(jié)點(diǎn)輸入的權(quán)項(xiàng)的權(quán)值進(jìn)行比較并選擇權(quán)值較小的權(quán)項(xiàng)作為輸出至父節(jié)點(diǎn)的權(quán)項(xiàng),并由所述二叉樹結(jié)構(gòu)的根節(jié)點(diǎn)將最終選擇得到的權(quán)項(xiàng)作為最終選擇得到的最小權(quán)值并輸出給隊(duì)列選擇器(4)。
全文摘要
本發(fā)明公開了一種用于多核處理器的硬件鎖實(shí)現(xiàn)方法及裝置,方法步驟如下1)建立與處理器核一一對(duì)應(yīng)的鎖請(qǐng)求隊(duì)列,初始化設(shè)置各個(gè)鎖請(qǐng)求隊(duì)列的權(quán)值,所述鎖請(qǐng)求隊(duì)列按照先入先出的原則分別緩存各處理器核發(fā)送的硬件鎖訪問請(qǐng)求;2)選擇權(quán)值最小且請(qǐng)求有效的鎖請(qǐng)求隊(duì)列獲得服務(wù),將鎖請(qǐng)求隊(duì)列的權(quán)值在獲得服務(wù)后遞增,同時(shí)從獲得服務(wù)的鎖請(qǐng)求隊(duì)列中選出最先進(jìn)入的硬件鎖訪問請(qǐng)求并執(zhí)行鎖存儲(chǔ)空間訪問操作,然后返回應(yīng)答報(bào)文;裝置包括鎖請(qǐng)求隊(duì)列單元、權(quán)值計(jì)數(shù)邏輯單元、最小權(quán)值判斷邏輯、隊(duì)列選擇器、硬件鎖存儲(chǔ)空間訪問邏輯。本發(fā)明具有能夠使各處理器核獲取硬件鎖的機(jī)會(huì)均衡、硬件實(shí)現(xiàn)代價(jià)小、擴(kuò)展性好、結(jié)構(gòu)簡(jiǎn)單、易于實(shí)現(xiàn)的優(yōu)點(diǎn)。
文檔編號(hào)G06F9/46GK102937915SQ201210493920
公開日2013年2月20日 申請(qǐng)日期2012年11月28日 優(yōu)先權(quán)日2012年11月28日
發(fā)明者任巨, 張明, 龔銳, 鄧宇, 石偉, 郭御風(fēng), 竇強(qiáng), 羅莉, 馬愛永, 王永文 申請(qǐng)人:中國(guó)人民解放軍國(guó)防科學(xué)技術(shù)大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
手游| 琼海市| 炎陵县| 大庆市| 黄大仙区| 佛冈县| 油尖旺区| 招远市| 陇西县| 化德县| 阳朔县| 榆中县| 伊通| 博湖县| 永仁县| 全州县| 江都市| 信宜市| 和田县| 湛江市| 横山县| 金湖县| 马关县| 石楼县| 华容县| 灵台县| 九江县| 清涧县| 财经| 定远县| 湖口县| 方正县| 德惠市| 洞口县| 杭锦后旗| 大港区| 灵山县| 扬中市| 九江市| 沂源县| 蓬溪县|