專利名稱:使用于多處理器系統(tǒng)的同步方法與裝置的制作方法
技術領域:
本發(fā)明涉及一種使用于多處理器(multi-processor)系統(tǒng)的同步(synchronization)方法與裝置,且特別是涉及一種使用旋轉鎖(spinlock)的同步方法與裝置。
背景技術:
在多處理器系統(tǒng)中,旋轉鎖是必要的同步機制。在不同處理器上執(zhí)行的程序,如果同時去修改共享的數(shù)據(jù)結構,會造成數(shù)據(jù)錯誤,必須通過旋轉鎖的機制,只有成功取得(acquire)該數(shù)據(jù)結構的旋轉鎖的程序,才有權去修改共享的數(shù)據(jù)結構,如此可以保障共享的數(shù)據(jù)結構的正確。
旋轉鎖的設計會影響整個多處理器系統(tǒng)的效能,傳統(tǒng)做法的旋轉鎖是使用存儲器當中的一個地址,通過處理器的原子操作(atomic operation,如test-and-set、load-linked、store-conditional等)以及軟件程序來取得旋轉鎖。如果取得成功,就可以去修改共享的數(shù)據(jù)結構。如果取得失敗,處理器就會進入循環(huán)(loop),不斷檢查旋轉鎖的狀態(tài)。當多個處理器都在檢查旋轉鎖的時候,會消耗許多總線(bus)與存儲器的頻寬(bandwidth),系統(tǒng)效能會因此下降。
發(fā)明內容
本發(fā)明的目的是提供一種使用于多處理器系統(tǒng)的同步方法,可節(jié)省系統(tǒng)的總線與存儲器頻寬。
本發(fā)明的另一目的是提供一種使用于多處理器系統(tǒng)的同步裝置,不需要原子操作就能達成多處理器的同步,而且可節(jié)省電能消耗,提高系統(tǒng)效能。
為達成上述及其它目的,本發(fā)明提出一種使用于多處理器系統(tǒng)的同步方法,其特征在于在處理器取得旋轉鎖失敗之后,以及成功取得旋轉鎖之前,暫停其時鐘脈沖(clock signal),以暫停其動作。
上述使用于多處理器系統(tǒng)的同步方法,在一實施例中還包括下列步驟首先,接收處理器取得旋轉鎖的請求(request),傳回旋轉鎖的狀態(tài)至處理器。若旋轉鎖處于未鎖定狀態(tài),則將旋轉鎖的狀態(tài)改為鎖定狀態(tài)。反之,若旋轉鎖處于鎖定狀態(tài),則暫停處理器的動作,并且將處理器排入隊列(queue)。然后,接收處理器釋放(release)旋轉鎖的請求,將旋轉鎖的狀態(tài)改為未鎖定狀態(tài)。最后,若有其它處理器在隊列中等待,則根據(jù)既定策略自隊列中選出一個處理器,恢復選出的處理器的動作。
從另一觀點來看,本發(fā)明另提出一種使用于多處理器系統(tǒng)的同步裝置,包括旋轉鎖控制器以及時鐘控制器(clock controller)。旋轉鎖控制器接收并處理多個處理器取得與釋放旋轉鎖的請求。時鐘控制器則提供多個時鐘脈沖至上述處理器,并且根據(jù)旋轉鎖控制器的指示,在處理器取得旋轉鎖失敗之后,以及成功取得旋轉鎖之前,暫停此處理器的時鐘脈沖,以暫停此處理器的動作。
依照本發(fā)明的較佳實施例所述,本發(fā)明是在處理器取得旋轉鎖失敗之后,暫停其動作。然后在處理器的等待結束,成功取得旋轉鎖之前,恢復其動作。在暫停時,處理器不會象已有技術一樣不斷從存儲器讀取旋轉鎖狀態(tài),所以可節(jié)省系統(tǒng)的總線與存儲器頻寬,進而節(jié)省電能消耗,提高系統(tǒng)效能。本發(fā)明使用旋轉鎖控制器集中控制處理器對于旋轉鎖的取用,所以不需要原子操作就能達成多處理器的同步。
目前的可攜式多媒體電子產品為求達到高效能與低耗電,多采用單芯片的多處理器系統(tǒng)。本發(fā)明特別適用于單芯片多處理器系統(tǒng),只需要在單芯片系統(tǒng)中增加少許的邏輯線路就可以實現(xiàn)。
為讓本發(fā)明的上述和其它目的、特征和優(yōu)點能更明顯易懂,下文特舉本發(fā)明的較佳實施例,并配合附圖,作詳細說明如下。
圖1與圖2為根據(jù)于本發(fā)明一實施例的使用于多處理器系統(tǒng)的同步方法流程圖。
圖3為根據(jù)于本發(fā)明一實施例的使用于多處理器系統(tǒng)的同步裝置示意圖。
圖4至圖6為圖3的旋轉鎖控制器的可能結構示意圖。主要元件標記說明100~190、200~240流程圖步驟300多處理器系統(tǒng)310同步裝置311~314處理器320總線矩陣330時鐘控制器340旋轉鎖控制器350存儲器410總線接口單元420控制邏輯單元430仲裁單元440緩存器組441取得緩存器442釋放緩存器443隊列緩存器444仲裁緩存器445優(yōu)先緩存器520控制邏輯單元
540緩存器組541地址緩存器550存儲器620控制邏輯單元640地址緩存器具體實施方式
圖1為根據(jù)于本發(fā)明一實施例的使用于多處理器系統(tǒng)的同步方法流程圖的其中一部分。圖1本身分為兩個部分,在垂直虛線左邊是處理器取得旋轉鎖的流程,右邊是本方法的核心,也就是同步裝置接受并處理來自處理器的請求的流程。
首先,在步驟100,處理器開始嘗試取得旋轉鎖。在步驟110,處理器會自同步裝置提供的取得緩存器(acquisition register)讀取旋轉鎖的狀態(tài),而這個讀取動作本身也等于向同步裝置發(fā)出取得旋轉鎖的請求。在步驟160,同步裝置收到處理器的請求后,會將旋轉鎖狀態(tài)傳回給處理器。
接下來,同步裝置會在步驟170檢查旋轉鎖狀態(tài),處理器也會在步驟120檢查旋轉鎖狀態(tài)。如果這時候旋轉鎖處于未鎖定狀態(tài),表示未被占用,同步裝置會在步驟190將旋轉鎖的狀態(tài)改為鎖定狀態(tài)。另一方面,處理器會在步驟150成功取得旋轉鎖,也就是占有旋轉鎖,然后就可以去修改共享的數(shù)據(jù)結構。
反之,如果在同步裝置收到請求時旋轉鎖已經處于鎖定狀態(tài),表示有其它處理器占有旋轉鎖,目前的取得動作已經失敗。這時候,同步裝置會在步驟180暫停取得旋轉鎖失敗的處理器的動作,并且將這個處理器排入隊列等待。在本實施例中,同步裝置是以暫停處理器的時鐘脈沖,來暫停處理器的動作。
另一方面,當處理器在步驟120發(fā)現(xiàn)旋轉鎖已經處于鎖定狀態(tài),就會進入回到步驟110的循環(huán)繼續(xù)嘗試取得旋轉鎖,但是很快就會在步驟130被同步裝置暫停動作。當隊列中的等待結束,在步驟140被同步裝置恢復動作之后,處理器會回到步驟110,繼續(xù)嘗試取得旋轉鎖。如果這時候沒有其它競爭者,處理器就可以成功占有旋轉鎖。
現(xiàn)在請參照圖2,圖2為根據(jù)于本實施例的同步方法流程圖的另一部分。圖2同樣分為兩個部分,在垂直虛線左邊是處理器釋放旋轉鎖的流程,右邊是同步裝置方面接受并處理來自處理器的請求的流程。
首先,處理器在步驟200開始釋放旋轉鎖,在步驟210寫入任一數(shù)值到同步裝置提供的釋放緩存器(release register)。在本實施例中,這個寫入動作等于向同步裝置提出釋放旋轉鎖的請求。接著在步驟220,同步裝置收到處理器的請求后,會將旋轉鎖的狀態(tài)改為未鎖定狀態(tài)。然后在步驟230,同步裝置會檢查是否有其它處理器在隊列中等待取得旋轉鎖。如果有,同步裝置會在步驟240根據(jù)既定策略從隊列中選出一個處理器,并且恢復選出的處理器的動作。在本實施例中,上述既定策略可以是先進入隊列的處理器先恢復動作(先進先出),或是根據(jù)既定優(yōu)先次序(priority),從隊列中選出最優(yōu)先的處理器,或是公知的其它選擇或分配策略。
現(xiàn)在請參照圖3,圖3為根據(jù)于本實施例的多處理器系統(tǒng)300的架構示意圖。多處理器系統(tǒng)300包括處理器311~314、總線矩陣(bus matrix)320、存儲器350、以及本發(fā)明提出的同步裝置310。
圖1及圖2當中虛線右邊的流程,就是由同步裝置310負責執(zhí)行。同步裝置310包括旋轉鎖控制器340以及時鐘控制器330。旋轉鎖控制器340通過總線矩陣320接收處理器311~314取得與釋放旋轉鎖的請求,并且處理上述請求。時鐘控制器330則提供時鐘脈沖至處理器311~314,并且根據(jù)旋轉鎖控制器340的指示,在處理器311~314其中的任何一個取得旋轉鎖失敗之后,以及成功取得旋轉鎖之前,暫停上述處理器的時鐘脈沖,以暫停其動作。
圖4為旋轉鎖控制器340的結構示意圖。旋轉鎖控制器340包括總線接口單元410、仲裁單元430、控制邏輯單元420、以及緩存器組440。其中,總線接口單元410自總線矩陣320接收來自處理器311~314的請求。控制邏輯單元420自總線接口單元410接收上述請求,然后處理上述請求,同時維護管理旋轉鎖的相關信息。若有處理器需要暫停動作時,仲裁單元430會根據(jù)控制邏輯單元420的指示,發(fā)出指示信號至時鐘控制器330,以暫停處理器的動作。
上述旋轉鎖的相關信息,在本實施例中包括旋轉鎖的狀態(tài)、等待取得旋轉鎖的處理器隊列、以及自隊列中選擇處理器的既定策略等等。本實施例的旋轉鎖狀態(tài)只有兩個,就是鎖定或未鎖定。上述既定策略,是為了決定如何自隊列中選出最先取得旋轉鎖的處理器,在本實施例中可以是先進先出(first in first out)、根據(jù)既定優(yōu)先次序、或公知的其它方式。如果是根據(jù)優(yōu)先次序,這個既定的次序也可以包含在旋轉鎖的相關信息中。
至于旋轉鎖的相關信息如何儲存,有三種方式。第一種是全部儲存于緩存器(register)。第二種是部分儲存于緩存器,部分儲存于存儲器。第三種是全部儲存于存儲器。而圖4表示的是全部儲存于緩存器的做法。
圖4的緩存器組440就是用來儲存旋轉鎖的相關信息,包括取得緩存器441、釋放緩存器442、隊列緩存器443、仲裁緩存器444、以及優(yōu)先緩存器445。其中,取得緩存器441儲存旋轉鎖的狀態(tài)。若有處理器讀取取得緩存器441,則視同發(fā)出取得旋轉鎖的請求。若有處理器將任何數(shù)值寫入釋放緩存器442,則視同發(fā)出釋放旋轉鎖的請求。隊列緩存器443儲存等待取得旋轉鎖的處理器隊列。仲裁緩存器444儲存自隊列中選擇處理器的既定策略。而優(yōu)先緩存器445則儲存各處理器的既定優(yōu)先次序。
圖5表示的是以上述第二種方式儲存旋轉鎖相關信息的旋轉鎖控制器340。在圖5當中有一部分的旋轉鎖相關信息儲存在緩存器組540,其余部分的相關信息則儲存在耦接于控制邏輯單元520的存儲器550。緩存器組540包括地址緩存器541,以儲存上述其余部分在存儲器550之內的所在地址。當然,緩存器組540也包括其它緩存器,用以儲存歸屬于緩存器組540的相關信息。因為控制邏輯單元520是通過地址緩存器541取用存儲器550之內的旋轉鎖相關信息,只要改變地址緩存器541的內容,就可以在執(zhí)行時間實時分配或變動相關信息的存儲器地址。如此可增加應用上的彈性。
除了使用內建于旋轉鎖控制器340的存儲器550之外,在本發(fā)明的范圍中,也可以使用外部的存儲器儲存旋轉鎖相關信息,例如圖3的系統(tǒng)存儲器350。如果使用外部存儲器,控制邏輯單元520會通過總線矩陣320存取外部存儲器的相關信息。
最后,圖6表示的是以上述第三種方式儲存旋轉鎖相關信息的旋轉鎖控制器340。在圖6當中,所有相關信息都儲存在耦接于控制邏輯單元620的存儲器550。而地址緩存器640是用來儲存旋轉鎖相關信息在存儲器550之內的所在地址。同樣的,除了內建的存儲器之外,相關信息也可以使用外部存儲器儲存。
綜上所述,本發(fā)明是在處理器取得旋轉鎖失敗之后,暫停其動作。然后在處理器的等待結束,成功取得旋轉鎖之前,恢復其動作。在暫停時,處理器不會象已有技術一樣不斷從存儲器讀取旋轉鎖狀態(tài),所以可節(jié)省系統(tǒng)的總線與存儲器頻寬,進而節(jié)省電能消耗,提高系統(tǒng)效能。本發(fā)明使用旋轉鎖控制器集中控制處理器對于旋轉鎖的取用,所以不需要原子操作就能達成多處理器的同步。
目前的可攜式多媒體電子產品為求達到高效能與低耗電,多采用單芯片的多處理器系統(tǒng)。本發(fā)明特別適用于單芯片多處理器系統(tǒng),只需要在單芯片系統(tǒng)中增加少許的邏輯線路就可以實現(xiàn)。
雖然本發(fā)明已以較佳實施例披露如上,然其并非用以限定本發(fā)明,任何所屬技術領域的技術人員,在不脫離本發(fā)明的精神和范圍內,當可作些許的更動與改進,因此本發(fā)明的保護范圍當視權利要求所界定者為準。
權利要求
1.一種使用于多處理器系統(tǒng)的同步方法,其特征是在處理器取得旋轉鎖失敗之后,以及該處理器成功取得該旋轉鎖之前,暫停該處理器的動作。
2.根據(jù)權利要求1所述的使用于多處理器系統(tǒng)的同步方法,其特征是還包括下列步驟暫停該處理器的時鐘脈沖,以暫停該處理器的動作。
3.根據(jù)權利要求1所述的使用于多處理器系統(tǒng)的同步方法,其特征是還包括下列步驟接收該處理器取得該旋轉鎖的請求,傳回該旋轉鎖的狀態(tài)至該處理器;若該旋轉鎖處于未鎖定狀態(tài),則將該旋轉鎖的狀態(tài)改為鎖定狀態(tài);若該旋轉鎖處于鎖定狀態(tài),則暫停該處理器的動作,并且將該處理器排入隊列;接收該處理器釋放該旋轉鎖的請求,將該旋轉鎖的狀態(tài)改為未鎖定狀態(tài);以及若有處理器在該隊列中等待,則根據(jù)既定策略自該隊列中選出一個處理器,恢復選出的該處理器的動作。
4.根據(jù)權利要求3所述的使用于多處理器系統(tǒng)的同步方法,其特征是該既定策略為先進入該隊列的處理器先恢復動作。
5.根據(jù)權利要求3所述的使用于多處理器系統(tǒng)的同步方法,其特征是該既定策略為根據(jù)既定優(yōu)先次序,自該隊列中選出最優(yōu)先的處理器。
6.一種使用于多處理器系統(tǒng)的同步裝置,其特征是包括旋轉鎖控制器,接收并處理多個處理器取得與釋放旋轉鎖的請求;以及時鐘控制器,提供多個時鐘脈沖至上述這些處理器,并且根據(jù)該旋轉鎖控制器的指示,在處理器取得該旋轉鎖失敗之后,以及該處理器成功取得該旋轉鎖之前,暫停該處理器的時鐘脈沖,以暫停該處理器的動作。
7.根據(jù)權利要求6所述的使用于多處理器系統(tǒng)的同步裝置,其特征是該旋轉鎖控制器包括總線接口單元,自總線矩陣接收上述這些請求;控制邏輯單元,自該總線接口單元接收上述這些請求,處理上述這些請求,并且維護管理該旋轉鎖的相關信息;以及仲裁單元,若有處理器需要暫停動作,則根據(jù)該控制邏輯單元的指示,發(fā)出指示信號至該時鐘控制器,以暫停該處理器的動作。
8.根據(jù)權利要求7所述的使用于多處理器系統(tǒng)的同步裝置,其特征是該相關信息包括該旋轉鎖的狀態(tài)以及等待取得該旋轉鎖的處理器隊列。
9.根據(jù)權利要求8所述的使用于多處理器系統(tǒng)的同步裝置,其特征是該旋轉鎖的狀態(tài)為鎖定與未鎖定中之一種。
10.根據(jù)權利要求8所述的使用于多處理器系統(tǒng)的同步裝置,其特征是該相關信息還包括既定策略,該既定策略決定如何自該隊列中選出最先取得該旋轉鎖的處理器。
11.根據(jù)權利要求8所述的使用于多處理器系統(tǒng)的同步裝置,其特征是該相關信息還包括上述這些處理器取得該旋轉鎖的既定優(yōu)先次序。
12.根據(jù)權利要求7所述的使用于多處理器系統(tǒng)的同步裝置,其特征是該旋轉鎖控制器還包括緩存器組,以儲存該相關信息。
13.根據(jù)權利要求12所述的使用于多處理器系統(tǒng)的同步裝置,其特征是該緩存器組還包括取得緩存器,儲存該旋轉鎖的狀態(tài),并接受取得該旋轉鎖的請求;釋放緩存器,接受釋放該旋轉鎖的請求;以及隊列緩存器,儲存等待取得該旋轉鎖的處理器隊列。
14.根據(jù)權利要求13所述的使用于多處理器系統(tǒng)的同步裝置,其特征是該緩存器組還包括仲裁緩存器,以儲存既定策略,該既定策略決定如何自該隊列中選出最先取得該旋轉鎖的處理器。
15.根據(jù)權利要求13所述的使用于多處理器系統(tǒng)的同步裝置,其特征是該緩存器組還包括優(yōu)先緩存器,以儲存上述這些處理器取得該旋轉鎖的既定優(yōu)先次序。
16.根據(jù)權利要求7所述的使用于多處理器系統(tǒng)的同步裝置,其特征是該旋轉鎖控制器還包括緩存器組,以儲存該相關信息的其中一部分,該相關信息的其余部分則儲存于存儲器,該緩存器組包括地址緩存器,以儲存該其余部分于該存儲器的所在地址。
17.根據(jù)權利要求16所述的使用于多處理器系統(tǒng)的同步裝置,其特征是該存儲器為包含于該旋轉鎖控制器的內部存儲器以及獨立于該旋轉鎖控制器之外的外部存儲器中之一個。
18.根據(jù)權利要求7所述的使用于多處理器系統(tǒng)的同步裝置,其特征是該相關信息儲存于存儲器當中,而且該旋轉鎖控制器還包括地址緩存器,以儲存該相關信息于該存儲器的所在地址。
19.根據(jù)權利要求18所述的使用于多處理器系統(tǒng)的同步裝置,其特征是該存儲器為包含于該旋轉鎖控制器的內部存儲器以及獨立于該旋轉鎖控制器之外的外部存儲器中之一個。
全文摘要
一種使用于多處理器系統(tǒng)的同步方法與裝置,上述方法包括下列步驟。首先,接收處理器取得旋轉鎖的請求,傳回旋轉鎖的狀態(tài)至處理器。若旋轉鎖處于未鎖定狀態(tài),則將旋轉鎖的狀態(tài)改為鎖定狀態(tài)。反之,若旋轉鎖處于鎖定狀態(tài),則暫停處理器的時鐘脈沖以暫停其動作,并且將處理器排入隊列。然后,接收處理器釋放旋轉鎖的請求,將旋轉鎖的狀態(tài)改為未鎖定狀態(tài)。最后,若有其它處理器在隊列中等待,則根據(jù)既定策略自隊列中選出一個處理器,恢復選出的處理器的動作。
文檔編號G06F15/16GK1924811SQ200510093629
公開日2007年3月7日 申請日期2005年8月31日 優(yōu)先權日2005年8月31日
發(fā)明者段正明 申請人:財團法人工業(yè)技術研究院