專利名稱:用于一致性多核處理器的請求仲裁方法及裝置的制作方法
技術領域:
本發(fā)明涉及計算機技術領域,具體設計一種用于一致性多核處理器的請求仲裁方法及裝置
背景技術:
隨著人類社會的不斷進步以及計算機硬件的飛速發(fā)展,單核處理器已經不能滿足性能需求,多核處理器的出現(xiàn)和發(fā)展成為大勢所趨。多核處理器相對于單核處理器具有很明顯的優(yōu)勢第一多核處理器通過集成多個單線程核心或者集成多個多線程處理核心,使得整個處理器可以同時執(zhí)行的線程數(shù)或任務數(shù)是單處理器的數(shù)倍,這極大提高了處理器的并行性能。
第二 多個內核集成在片內,極大地縮短了核間的互連線,核間通信延遲變低,提高了通信效率,數(shù)據(jù)傳輸寬帶也得到了提高,功耗也隨著器件的減少而得到降低。第三多核結構簡單,易于優(yōu)化設計,擴展性強,最終推動了多核的發(fā)展并成為逐漸取代單處理器成為主流。目前,多核處理器系統(tǒng)的處理器數(shù)目不斷增加,不只是電腦,手機也早就進入了雙核時代,隨著2012年中國臺灣的手機廠商宏達電(HTC)發(fā)布全球首款四核手機,標志著手機進入了四核時代。隨著多核處理器系統(tǒng)中的處理器的數(shù)目增加,多核處理器的請求也會越來越多,有時多個處理器會發(fā)起多個請求,而且這些請求的優(yōu)先級在大多數(shù)情況下是相同的,沒有固定不變的優(yōu)先級,而且每次最多有一個請求得到響應,所以仲裁結果應該體現(xiàn)出公平性,不能出現(xiàn)某個請求長時間得不到響應,而另一個請求得到一次以上的響應的情況,應該對于這些請求應該進行公平、輪流仲裁。
發(fā)明內容
為了克服已有多核處理器的無法解決一致性的多個請求的公平仲裁問題、限制了處理器性能的不足,本發(fā)明提供一種有效解決一致性多核處理器的多個請求的公平仲裁問題、提升處理器性能的用于一致性多核處理器的請求仲裁方法及裝置。本發(fā)明解決其技術問題所采用的技術方案是一種用于一致性多核處理器的請求仲裁方法,當一致性多核處理器發(fā)起η個請求,并且這些請求的優(yōu)先級相同,每次最多有一個請求得到響應時,假設這η個請求為req[l], req[2], req[3], ···, req[n],某一次仲裁過程中,初始狀態(tài)下規(guī)定優(yōu)先級順序為req[l] > req[2] > req[3]>…〉req[m]>…〉req[n],某個請求 req[m]得到響應,那么下一次仲裁時請求的優(yōu)先級被改變,其順序改變?yōu)閞eq [m+1] >req [m+2] >··· >req [n_l] >req [n] >req[l]>…〉req[m_l]> req[m] , n>m>l,進而實現(xiàn)優(yōu)先級順序的變換,公平、輪流仲裁。一種一致性多核處理器的請求仲裁裝置,所述的裝置包括兩個優(yōu)先級仲裁模塊和譯碼模塊,其中,譯碼模塊,用于在每次仲裁結束以后調整優(yōu)先級順序,從而實現(xiàn)公平仲裁,具體如下對于上一次仲裁的結果信號grant_in[n:l]進行譯碼,假設上次仲裁是請求req[m]得到響應,那么grant_in[m]有效,grant_in[n: I]的其他位均無效,譯碼結果covercode[η: I]為covercode[n:m+l]的所有位均有效,covercode[m: I]的所有位均為無效;優(yōu)先級仲裁模塊,用于對于一致性多核處理器的η個請求進行仲裁,規(guī)定當前請求輸入信號req[n:l]的最低位優(yōu)先級最高,即初始優(yōu)先級順序為req[l]> req[2]>req[3]>…〉req[m]>…〉req[η],譯碼結果 covercode [η: I]和當前請求 req[n: I]通過與門,進而屏蔽req[m]以及比初始狀態(tài)下req[m]優(yōu)先級高的請求,從而產生新的請求new_req[n:l]。第一優(yōu)先級仲裁模塊對new_req[n: I]進行仲裁,若有仲裁結果輸出,則信號avid O有效,該仲裁模塊按照優(yōu)先級順序仲裁出唯一的請求;兩個優(yōu)先級仲裁模塊包括第一優(yōu)先級仲裁模塊和第二優(yōu)先級仲裁模塊,當?shù)谝粌?yōu)先級仲裁模塊進行仲裁的同時第二優(yōu)先級仲裁模塊對信號req[n:0]進行仲裁,若avid O有效,則通過avid O取反后和第二優(yōu)先級仲裁模塊的仲裁結果通過與門,從而屏蔽第二優(yōu)先級仲裁模塊的仲裁結果;若avid無效,則結果由第二優(yōu)先級仲裁模塊決定。 本發(fā)明的有益效果主要表現(xiàn)在1、當一致性多核處理器發(fā)起多個請求,而這些請求的優(yōu)先級相同時,每次仲裁結束以后調整優(yōu)先級順序,可以實現(xiàn)優(yōu)先級順序的動態(tài)環(huán)形變換,進行公平、輪流仲裁;2、提升了處理器性能。
圖I是本發(fā)明的整體結構示意圖。圖2是本發(fā)明的電路原理圖。圖3是本發(fā)明的譯碼模塊譯碼方式示意圖。
具體實施例方式下面結合附圖對本發(fā)明做進一步說明。參照圖f圖3,一種用于一致性多核處理器的請求仲裁方法,當一致性多核處理器發(fā)起η個請求,并且這些請求的優(yōu)先級相同,每次最多有一個請求得到響應時,假設這η個請求為req [I], req[2], req[3], ···, req [η],某一次仲裁過程中,初始狀態(tài)下規(guī)定優(yōu)先級順序為req[l]> req[2]> req[3]> …〉req[m]> …〉req [η],某個請求 req [m]得到響應,那么下一次仲裁時請求的優(yōu)先級被改變,其順序改變?yōu)閞eq[m+l]>req[m+2]>···>req[n-l]>req[n]> req[l]>…〉req[m_l]> req[m]進而實現(xiàn)優(yōu)先級順序的變換,公平、輪流仲裁。一種一致性多核處理器的請求仲裁裝置,所述的裝置包括兩個優(yōu)先級仲裁模塊和譯碼模塊,其中,譯碼模塊,用于在每次仲裁結束以后調整優(yōu)先級順序,從而實現(xiàn)公平仲裁,具體如下對于上一次仲裁的結果信號grant_in[n:l]進行譯碼,假設上次仲裁是請求req[m]得到響應,那么grant_in[m]有效,grant_in[n: I]的其他位均無效,譯碼結果covercode [η: I]為covercode [n:m+l]的所有位均有效,covercode [m: I]的所有位均為無效;
優(yōu)先級仲裁模塊,用于對于一致性多核處理器的η個請求進行仲裁,規(guī)定當前請求輸入信號req[n:l]的最低位優(yōu)先級最高,即初始優(yōu)先級順序為req[l]> req[2]>req[3]>…〉req[m]>…〉req[n],譯碼結果 covercode [η: I]和當前請求 req[n: I]通過與門,進而屏蔽req[m]以及比初始狀態(tài)下req[m]優(yōu)先級高的請求,從而產生新的請求new_req[n:l]。第一優(yōu)先級仲裁模塊對new_req[n: I]進行仲裁,若有仲裁結果輸出,則信號avid O有效,該仲裁模塊按照優(yōu)先級順序仲裁出唯一的請求;兩個優(yōu)先級仲裁模塊包括第一優(yōu)先級仲裁模塊和第二優(yōu)先級仲裁模塊,當?shù)谝粌?yōu)先級仲裁模塊進行仲裁的同時第二優(yōu)先級仲裁模塊對信號req[n:0]進行仲裁,若avid O有效,則通過avid O取反后和第二優(yōu)先級仲裁模塊的仲裁結果通過與門,從而屏蔽第二優(yōu)先級仲裁模塊的仲裁結果;若avid無效,則結果由第二優(yōu)先級仲裁模塊決定。在圖I中,一致性多核處理器系統(tǒng)中有η個處理器,這些處理器的地位是平等的,這些處理器可以同時發(fā)起多個請求到仲裁器,要求仲裁器進行仲裁,這些請求的優(yōu)先級是 相同的,這些請求最多只有一個得到響應,仲裁結果應該體現(xiàn)出公平性,不能出現(xiàn)某個請求長時間得不到響應,而另一個請求得到一次以上的響應的情況,應該對于這些請求應該進行公平、輪流仲裁。在圖2中,仲裁的具體步驟如下第一步一致性多核處理器同時發(fā)起η個請求,假設這些請求為req[l], req[2],req[3], ···, req[η],這些請求的優(yōu)先級相同,假設初始狀態(tài)下這η個請求的優(yōu)先級順序為req[l] > req[2] > req[3] >··· > req[m] >··· > req[n]。第二步信號grant_in[n: I]為上一次的仲裁輸出結果,假設上一次仲裁req[m]得到響應,那么grant_in[m]=l,而這次仲裁的優(yōu)先級順序應該為req[m+l]> req[m+2]>···>req[n-l]>req[n]> req[l]>··· > req[m_l]> req[m]。信號 grant_in[n: I]經過譯碼模塊譯碼之后,得到屏蔽信號covercodetn: I],具體的譯碼方式會在圖3中詳解,得到的屏蔽信號covercode [n:m+Ι]所有位均有效,而covercode [m: I]所有位均無效。屏蔽信號covercode [η: I]和請求信號req [η: I]通過與門以后得到新的請求信號new_req[n: I]。因為covercode [m: I]所有位均無效,所以new_req[m: I]所有位均無效,從而可以屏蔽req [m]以及比初始狀態(tài)下req[m]優(yōu)先級高的請求。第三步第一優(yōu)先級仲裁模塊對neW_req[n:l]進行仲裁,仲裁模塊的優(yōu)先級順序為初始優(yōu)先級順序,即req [I] > req[2]> req [3] >…〉req[m]>…〉req [η] 若有初始狀態(tài)下優(yōu)先級比req[m]低的請求產生,而此時我們應該將初始狀態(tài)下優(yōu)先級比req[m]低的請求的優(yōu)先級調整為高于req[m]以及初始狀態(tài)下優(yōu)先級比req[m]高的請求。所以如果初始狀態(tài)下優(yōu)先級比req[m]低的請求產生,那么有仲裁結果產生,則信號avid O有效,第一優(yōu)先級仲裁模塊可以根據(jù)優(yōu)先級順序req [I] > req[2]> req [3] >…〉req[m]>…〉req [η]仲裁出唯一的仲裁結果req_0ut ;如果第一優(yōu)先級仲裁模塊沒有仲裁結果輸出,則信號avidO無效,表示沒有初始狀態(tài)下比req[m]優(yōu)先級低,而這次仲裁時應該優(yōu)先級比req[m]高的請求產生,則第二優(yōu)先級仲裁模塊可以根據(jù)優(yōu)先級順序req[l]> req[2]> req[3]>…〉req[m]>…〉req[n]仲裁出唯一的仲裁結果req_out。使得優(yōu)先級順序轉變?yōu)閞eq [m+1] >req [m+2] >··· >req [n-1] >req [n] > req[l] >··· > req[m_l]> req[m]。在圖3中信號grant_in[n: I]經過譯碼模塊譯碼后得到屏蔽信號covercode [η: I]。信號grant_in[n: I]為上一次的仲裁輸出結果,假設上一次仲裁req[m]得到響應,那么grant_in[m]=l。具體的譯碼方式為若grant_in[m] =1, covercode[m: I]所有位均無效,covercode [n:m+1]的所有位均有效。這樣屏蔽信號covercode [η: I]與請求信號req [η: I]經過與門以后可以屏蔽req [m]以及比初始狀態(tài)下req [m]優(yōu)先級高的請求,使得優(yōu)先級順序轉變?yōu)?req [m+1] > req[m+2] >...>req[n_l] >req[n] > req[l]>…〉req[m_l]>req[m]。實例一假設一致性多核處理器系統(tǒng)中有四個處理器,即這是一個四核處理器系統(tǒng),這四個處理器的地位相同,分別為處理器I、處理器2、處理器3以及處理器4。處理器I發(fā)出的請求為req[l],處理器2發(fā)出的請求為req[2],處理器3發(fā)出的請求為req[3],處理器3發(fā)出的請求為req [4],初始狀態(tài)下優(yōu)先級順序為req [ I] >req [2] >req [3] >req [4]。假設首次仲裁時只有處理器I發(fā)出請求req[l],其他三個處理器沒有發(fā)出請求,請求信號req[4:1]為 4’ bOOOl,那么第一步信號grant_in[4:1]為4’b0000,這樣可以得到屏蔽信號covercode [4:1] 為 4,bllll。第二步屏蔽信號covercode[4:1]和請求信號req[4:1]通過與門,得到新的請求信號 new_req[n: I]為 4’bOOOl。第三步請求信號neW_req[n: I]通過第一優(yōu)先級仲裁模塊之后有仲裁結果產生,req_out 為 4’ bOOOl,即 req[l]得到響應。實例二 假設一致性多核處理器系統(tǒng)中有四個處理器,即這是一個四核處理器系統(tǒng),這四個處理器的地位相同,分別為處理器I、處理器2、處理器3以及處理器4。處理器I發(fā)出的請求為req [I],處理器2發(fā)出的請求為req [2],處理器3發(fā)出的請求為req [3],處理器3發(fā)出的請求為req[4],初始狀態(tài)下優(yōu)先級順序為req[l] >req[2] >req[3] >req[4]。假設上一次仲裁時處理器I發(fā)出的請求req[l]得到響應,而這次仲裁時只有處理器3發(fā)出請求req[3],其他三個處理器沒有發(fā)出請求,請求信號req[4:l]為4’b0100,那么第一步信號grant_in[4:1]為4’bOOOl,這樣可以得到屏蔽信號covercode [4:1]為 4,blll0。第二步屏蔽信號covercode[4:1]和請求信號req[4:1]通過與門,得到新的請求信號 new_req[n: I]為 4’ b0100。第三步請求信號neW_req[n: I]通過第一優(yōu)先級仲裁模塊之后有仲裁結果產生,req_out 為 4’ b0100,即 req[3]得到響應。實例三假設一致性多核處理器系統(tǒng)中有四個處理器,即這是一個四核處理器系統(tǒng),這四個處理器的地位相同,分別為處理器I、處理器2、處理器3以及處理器4。處理器I發(fā)出的請求為req [I],處理器2發(fā)出的請求為req [2],處理器3發(fā)出的請求為req [3],處理器3發(fā)出的請求為req[4],初始狀態(tài)下優(yōu)先級順序為req[l]>req[2]>req[3]>req[4]。假設上一次仲裁時處理器3發(fā)出的請求req[3]得到響應,而這次仲裁時四個處理器均發(fā)出請求,請求信號req [4:1]為4’ bill I,那么第一步信號grant_in[4:1]為4’b0100,這樣可以得到屏蔽信號covercode [4:1]為 4,bl000。第二步屏蔽信號covercode[4:1]和請求信號req[4:1]通過與門,得到新的請求信號new_req[n: I]為4’blOOO,從而可以屏蔽初始狀態(tài)下優(yōu)先級比req[4]高但是在這次仲裁時優(yōu)先級應該比req[4]低的req[l]、req[2]和req[3]。第三步請求信號neW_req[n: I]通過第一優(yōu)先級仲裁模塊之后有仲裁結果產生,req_out 為 4’ blOOO,即 req[4]得到響應。實例四假設一致性多核處理器系統(tǒng)中有四個處理器,即這是一個四核處理器系統(tǒng),這四個處理器的地位相同,分別為處理器I、處理器2、處理器3以及處理器4。處理器I發(fā)出的請求為req [I],處理器2發(fā)出的請求為req [2],處理器3發(fā)出的請求為req [3],處理器3發(fā)出的請求為req[4],初始狀態(tài)下優(yōu)先級順序為req[l]>req[2]>req[3]>req[4]。假設上一次仲裁時處理器4發(fā)出的請求req[4]得到響應,而這次仲裁時處理器I發(fā)出請求req[l]以及處理器2發(fā)出req[2],其他兩個處理器沒有發(fā)出請求,請求信號req[4:1]為4’b0011,那么
第一步信號grant_in[4:1]為4’blOOO,這樣可以得到屏蔽信號covercode [4:1]為 4,b0000。第二步屏蔽信號covercode[4:1]和請求信號req[4:1]通過與門,得到新的請求信號 new_req[n: I]為 4’ b0000。第三步請求信號neW_req[n: I]通過第一優(yōu)先級仲裁器之后沒有仲裁結果產生,那么最終的仲裁結果req_0Ut由第二優(yōu)先級仲裁模塊決定,因為優(yōu)先級順序為req[l]>req[2] > req[3] >…〉req[m]>…〉req[n],可以得到仲裁結果 req_out 為 4’b0001,即req[l]得到響應。從以上實施例子中可以通過圖2中的電路后,假設初始狀態(tài)下優(yōu)先級順序為req[l]> req[2]> req[3]>…〉req[m]>…〉req[n],若某一次仲裁過程中,某個請求req[m]得到響應,那么下一次仲裁時將req[m]以及在初始優(yōu)先級順序中優(yōu)先級高于req[m]的請求req[l], req[2], ···, req[m]作為一個整體(這m個請求的優(yōu)先級關系不變),這個整體的優(yōu)先級降至req [m+1], req [m+2], req [n]以后,即優(yōu)先級順序變?yōu)閞eq [m+1] >req[m+2]>***>req[n-l]>req[n]> req[l]>…〉req[m_l]> req[m]。從而實現(xiàn)優(yōu)先級的動態(tài)變化,實現(xiàn)公平、輪流仲裁,提高系統(tǒng)性能。
權利要求
1.一種用于一致性多核處理器的請求仲裁方法,其特征在于當一致性多核處理器發(fā)起η個請求,并且這些請求的優(yōu)先級相同,每次最多有一個請求得到響應時,假設這η個請求為req[l],req[2],req[3],…,req[n],初始狀態(tài)下規(guī)定優(yōu)先級順序為req[l]> req[2]>req[3]>…〉req[m]>…〉req[n],某一次仲裁過程中,某個請求req[m]得到響應,那么下一次仲裁時請求的優(yōu)先級被改變,其順序改變?yōu)閞eq [m+1] >req [m+2] >··· >req [n_l] >req [n] >req[l]>…〉req[m_l]> req[m] , n>m>l,進而實現(xiàn)優(yōu)先級順序的變換,公平、輪流仲裁。
2.一種用于實現(xiàn)如權利要求I所述的一致性多核處理器的請求仲裁方法的裝置,其特征在于所述的裝置包括兩個優(yōu)先級仲裁模塊和譯碼模塊,其中, 譯碼模塊,用于在每次仲裁結束以后調整優(yōu)先級順序,從而實現(xiàn)公平仲裁,具體如下對于上一次仲裁的結果信號grant_in[n:l]進行譯碼,假設上次仲裁是請求req[m]得到響應,那么grant_in[m]有效,grant_in[n: I]的其他位均無效,譯碼結果covercode [η: I]為covercode [n:m+1]的所有位均有效,covercode [m: I]的所有位均為無效; 優(yōu)先級仲裁模塊,用于對于一致性多核處理器的η個請求進行仲裁,規(guī)定當前請求輸入信號req[n:l]的最低位優(yōu)先級最高,即初始優(yōu)先級順序為req[l]> req[2]> req[3]>…> req[m]>…〉req[η],譯碼結果covercode [η: I]和當前請求req[n: I]通過與門,進而屏蔽req[m]以及比初始狀態(tài)下req[m]優(yōu)先級高的請求,從而產生新的請求new_req[n: I]。第一優(yōu)先級仲裁模塊對new_req[n: I]進行仲裁,若有仲裁結果輸出,則信號avid O有效,該仲裁模塊按照優(yōu)先級順序仲裁出唯一的請求; 兩個優(yōu)先級仲裁模塊包括第一優(yōu)先級仲裁模塊和第二優(yōu)先級仲裁模塊,當?shù)谝粌?yōu)先級仲裁模塊進行仲裁的同時第二優(yōu)先級仲裁模塊對信號req[n:0]進行仲裁,若avid O有效,則通過avid O取反后和第二優(yōu)先級仲裁模塊的仲裁結果通過與門,從而屏蔽第二優(yōu)先級仲裁模塊的仲裁結果;若avid無效,則結果由第二優(yōu)先級仲裁模塊決定。
全文摘要
一種用于一致性多核處理器的請求仲裁方法,當一致性多核處理器發(fā)起n個請求,并且這些請求的優(yōu)先級相同,每次最多有一個請求得到響應時,假設這n個請求為req[1],req[2],req[3],…,req[n],某一次仲裁過程中,某個請求req[m]得到響應,那么下一次仲裁時請求的優(yōu)先級被改變,其順序改變?yōu)閞eq[m+1]>req[m+2]>…>req[n-1]>req[n]> req[1]>…> req[m-1]> req[m] ,n>m>1,實現(xiàn)優(yōu)先級順序的變換,公平、輪流仲裁。以及一種實現(xiàn)用于一致性多核處理器的請求仲裁方法的裝置。本發(fā)明有效解決一致性多核處理器的多個請求的公平仲裁問題、提升處理器性能。
文檔編號G06F13/14GK102902640SQ20121036705
公開日2013年1月30日 申請日期2012年9月28日 優(yōu)先權日2012年9月28日
發(fā)明者呂飛龍, 王樹朋, 黃凱, 葛海通 申請人:杭州中天微系統(tǒng)有限公司