專利名稱:多處理器系統(tǒng)以及其中的排他控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多處理器系統(tǒng)以及其中的排他控制方法,更具體地,涉及在執(zhí)行排他控制之前獲得鎖并在執(zhí)行排他控制之后釋放鎖的多處理器系統(tǒng)以及其中的排他控制方法。
背景技術(shù):
以往,作為多線程程序設(shè)計的執(zhí)行環(huán)境,需要MESI(ModifiedExclusive Shared Invalid,修改、排他、共享、無效)那樣的高速緩存一致性協(xié)議和支持不可分(原子)傳送的總線。但是,安裝有它們的CPU(Central Processing Unit,中央處理單元)以及總線將是高成本的。
目前,作為低成本的CPU,也根據(jù)Linux支持的必要性而具有TLB(Translation Look-aside Buffer,轉(zhuǎn)換后援緩沖器)。在使用了這種CPU的情況下,只要安裝支持原子傳送的總線,就能夠構(gòu)筑多處理器系統(tǒng)。在這種情況下,即使沒有總線窺探(スヌ一プ)的硬件支持,如果利用與NUMA(Non-Uniform Memory Access非均勻存儲器訪問)相同的OS(Operating System操作系統(tǒng)),則也可以使用TLB的支持來維持高速緩存一致性。
在此,之所以需要支持原子傳送的總線,是為了可以進(jìn)行CPU之間的排他控制。例如為了排他地改寫各CPU的TLB,需要對鎖變量原子地進(jìn)行讀出修改寫入。但是,準(zhǔn)備單處理器而設(shè)計的、低成本的嵌入式處理器及其總線規(guī)則,并不支持原子讀出修改寫入。
下面,參照圖5說明原子讀出修改寫入的必要性。其中,將鎖變量lock分配到了存儲器上。
首先,CPU從存儲器讀出鎖變量lock(S1),判斷是否lock=1(S2)。只要lock=1,即鎖變量成為鎖定狀態(tài)(在S2為是),CPU就反復(fù)讀出鎖變量lock(S1)。另一方面,在lock=0、即鎖變量為非鎖定狀態(tài)的情況下(在S2為否),CPU改寫為lock=1,由此獲得排他控制所需要的鎖(S3)。在獲得鎖之后,CPU執(zhí)行規(guī)定的排他控制(S4)。在完成排他控制之后,CPU改寫為lock=0,由此釋放鎖(S5)。
但是,在從讀出lock=0到改寫為lock=1的期間,如果其他的CPU讀出lock=0,則有可能誤認(rèn)為能夠獲得鎖。為了防止這種情況,必須原子地執(zhí)行上述的鎖變量的讀出操作S1和寫入操作S3。
此外,用于使CPU執(zhí)行上述的原子讀出修改寫入的程序,由于使用在原子傳送中所需要的專用命令,所以不用C那樣的高級語言,而必須用匯編語言來描述。
美國專利第5175829號說明書(以下記作專利文獻(xiàn)1)公開了將原子傳送組裝到CPU以及局部總線內(nèi)的裝置。這種多處理器系統(tǒng),為了消減總線帶寬,而通過采用共享總線方式并使用MESI協(xié)議而使得不能獲得鎖的CPU不重復(fù)無用的讀訪問。
美國專利第5175829號說明書(以下記作專利文獻(xiàn)2)公開了將用于管理鎖的交換寄存器內(nèi)置于CPU內(nèi)的裝置。該裝置用存儲在存儲器中的鎖變量時刻對存儲在交換寄存器中的鎖變量進(jìn)行交換更新,并對該交換寄存器進(jìn)行用于獲得鎖的讀訪問。該裝置也是以高成本并且復(fù)雜的原子讀出修改寫入功能的存在為前提。
美國專利第5666515號說明書(以下記作專利文獻(xiàn)3)公開了通過發(fā)送重試信號而加鎖、減輕了總線帶寬的飽和的裝置。該裝置也是以高成本并且復(fù)雜的原子讀出修改寫入功能的存在為前提。
專利文獻(xiàn)1美國專利第5175829號說明書專利文獻(xiàn)2美國專利第5535365號說明書專利文獻(xiàn)3美國專利第5666515號說明書
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種能夠用簡單的構(gòu)成實現(xiàn)與具有鎖變量的原子讀出修改寫入功能的高成本的系統(tǒng)同樣的功能的多處理器系統(tǒng)以及其中的排他控制方法。
本發(fā)明的多處理器系統(tǒng)具備多個處理器和鎖寄存器。處理器的各個在執(zhí)行排他控制之前,為了獲得鎖而斷言讀出信號,并且在執(zhí)行排他控制之后,為了釋放鎖而斷言寫入信號。鎖寄存器與多個處理器連接。鎖寄存器包括保存單元、鎖變量輸出單元和鎖變量輸入單元。保存單元保存鎖定狀態(tài)或者非鎖定狀態(tài)的第1鎖變量。鎖變量輸出單元在處理器的1個斷言讀出信號時,輸出此前保存在保存單元中的第1鎖變量。鎖變量輸入單元在處理器的1個斷言讀出信號時,將鎖定狀態(tài)的第1鎖變量設(shè)定到保存單元,并且在處理器的1個斷言寫入信號時,將非鎖定狀態(tài)的第1鎖變量設(shè)定到保存單元。
在上述多處理器系統(tǒng)中,在某一處理器斷言讀出信號時,從鎖寄存器讀出第1鎖變量,并且將鎖定狀態(tài)的第1鎖變量寫入到鎖寄存器。在所讀出的第1鎖變量為非鎖定狀態(tài)的情況下,該處理器能夠獲得鎖。由于讀出第1鎖變量并且寫入鎖定狀態(tài)的第1鎖變量,所以此后即使另一處理器斷言讀出信號,也會因為從鎖寄存器讀出鎖定狀態(tài)的第1鎖變量,而使該另一處理器不能獲得鎖。這樣,本發(fā)明的多處理器系統(tǒng)僅設(shè)置鎖寄存器,就能夠?qū)崿F(xiàn)與具有鎖變量的原子讀出修改寫入功能的高成本的系統(tǒng)相同的功能。
優(yōu)選地,鎖寄存器進(jìn)一步包括總線重試單元??偩€重試單元在第1鎖變量被設(shè)定為鎖定狀態(tài)的期間,在處理器的1個斷言讀出信號時,生成用于提供給處理器的總線重試信號。
在此情況下,由于處理器接收總線重試信號并且由此認(rèn)識到不可能獲得鎖,所以能夠使其不會隨便地斷言讀出信號。
優(yōu)選地,多處理器系統(tǒng)進(jìn)一步具備第1總線、存儲器、第2總線。第1總線與多個處理器共同連接。存儲器與第1總線連接。第2總線與多個處理器共同連接。鎖寄存器連接到第2總線。
在此情況下,在由于某一處理器已獲得了鎖而另一處理器等待其釋放鎖時,該另一處理器經(jīng)由第2總線斷言讀出信號而從鎖寄存器讀出第1鎖變量,另一方面,獲得了鎖的處理器經(jīng)由第1總線訪問存儲器。因而,不會妨礙從獲得了鎖的處理器對存儲器的訪問。
進(jìn)而優(yōu)選地,存儲器存儲1個、或者2個或2個以上的第2鎖變量。處理器的各個斷言讀出信號而從鎖寄存器讀出第1鎖變量,且在所讀出的第1鎖變量為非鎖定狀態(tài)的情況下,從存儲器讀出第2鎖變量,在所讀出的第2鎖變量為非鎖定狀態(tài)的情況下,將第2鎖變量改寫為鎖定狀態(tài)。
在此情況下,處理器首先從鎖寄存器讀出第1鎖變量而獲得鎖,接著從存儲器讀出第2鎖變量而獲得鎖。這樣,因為分階段地獲得鎖,所以能夠設(shè)定多個鎖變量。
此外,本發(fā)明的排他控制方法,是具備多個處理器和與多個處理器連接的、保存鎖定狀態(tài)或者非鎖定狀態(tài)的第1鎖變量的鎖寄存器的多處理器中的排他控制方法,包括在處理器的1個為了獲得鎖而斷言讀出信號時,從鎖寄存器讀出第1鎖變量并且將鎖定狀態(tài)的第1鎖變量寫入到鎖寄存器的步驟;在所讀出的第1鎖變量為非鎖定狀態(tài)的情況下,由該1個處理器執(zhí)行排他控制的排他控制步驟;以及在執(zhí)行排他控制之后,在該1個處理器為了釋放鎖而斷言寫入信號時,將非鎖定狀態(tài)的第1鎖變量寫入到鎖寄存器的步驟。
在上述排他控制方法中,如果某一處理器斷言讀出信號,則從鎖寄存器讀出第1鎖變量,并且將鎖定狀態(tài)的第1鎖變量寫入到鎖寄存器。在所讀出的第1鎖變量為非鎖定狀態(tài)的情況下,該處理器能夠獲得鎖。由于讀出第1鎖變量并且寫入鎖定狀態(tài)的第1鎖變量,所以此后即使另一處理器斷言讀出信號,也會從鎖寄存器讀出鎖定狀態(tài)的第1鎖變量。因而,該另一處理器不能獲得鎖。這樣,本發(fā)明的排他控制方法僅設(shè)置鎖寄存器,就能夠?qū)崿F(xiàn)與具有鎖變量的原子讀出修改寫入功能的高成本的系統(tǒng)相同的功能。
優(yōu)選地,排他控制方法進(jìn)一步包括在第1鎖變量為鎖定狀態(tài)的期間,在處理器的1個斷言讀出信號時,生成用于提供給處理器的總線重試信號的步驟。
在此情況下,由于處理器接收總線重試信號并由此認(rèn)識到不可能獲得鎖,所以能夠使其不會隨便地斷言讀出信號。
優(yōu)選地,多處理器系統(tǒng)進(jìn)一步具備存儲1個、或者2個或2個以上的第2鎖變量的存儲器。上述排他控制步驟包括在所讀出的第1鎖變量為非鎖定狀態(tài)的情況下,從存儲器讀出第2鎖變量的步驟;在所讀出的第2鎖變量為非鎖定狀態(tài)的情況下,將第2鎖變量改寫為鎖定狀態(tài)的步驟;以及在將第2鎖變量改寫為鎖定狀態(tài)之后,執(zhí)行排他控制的步驟。
在此情況下,處理器首先從鎖寄存器讀出第1鎖變量而獲得鎖,接著從存儲器讀出第2鎖變量而獲得鎖。這樣,因為分階段地獲得鎖,所以能夠設(shè)定多個鎖變量。
具體實施例方式
以下,參照附圖詳細(xì)地說明本發(fā)明的實施方式。圖中,對于相同或者相當(dāng)?shù)牟糠謽?biāo)注相同符號而不重復(fù)其說明。
參照圖1,本實施方式的多處理器系統(tǒng)10具備CPU11以及12;總線主控器13以及14;交叉總線15以及16;系統(tǒng)存儲器17;鎖寄存器18。
CPU11以及12、總線主控器13以及14共同連接到交叉總線15。CPU11以及12、總線主控器13以及14還共同連接到另一個交叉總線16。系統(tǒng)存儲器17連接到交叉總線15,鎖寄存器18連接到交叉總線16。CPU11或者12經(jīng)由交叉總線15可以訪問系統(tǒng)存儲器17,經(jīng)由交叉總線16還可以訪問鎖寄存器18。總線主控器13或者14經(jīng)由交叉總線15可以訪問系統(tǒng)存儲器17,經(jīng)由交叉總線16還可以訪問鎖寄存器18。
鎖寄存器18是用于管理在排他控制中所需要的鎖的寄存器。CPU11或者12在執(zhí)行排他控制之前斷言讀出信號而從鎖寄存器18獲得鎖,在執(zhí)行排他控制之后斷言寫入信號而釋放該鎖。鎖寄存器18雖然被映射到存儲器上,但可以被分配與系統(tǒng)存儲器17所不同的地址。
參照圖2,鎖寄存器18從CPU11或者12接收讀出信號READ以及寫入信號WRITE,輸出讀出數(shù)據(jù)總線信號READ databus以及總線重試信號BUS Retry。鎖寄存器18具備延遲觸發(fā)器(DFF)19以及20;OR電路21;AND電路22以及23;多路復(fù)用器24。OR電路21接收讀出信號READ和DFF19的輸出信號。AND電路22接收OR電路21的輸出信號、寫入信號WRITE的邏輯反相信號以及復(fù)位信號RESET的邏輯反相信號。DFF19與時鐘信號CLK同步地鎖存AND電路22的輸出信號。在讀出信號READ是H(邏輯高)電平“1”的情況下,多路復(fù)用器24選擇輸出DFF19的輸出信號的輸出信號。另一方面,在讀出信號READ是L(邏輯低)電平“0”的情況下,多路復(fù)用器24選擇輸出DFF20的輸出信號。DFF20與時鐘信號CLK同步地鎖存多路復(fù)用器24的輸出信號,作為讀出數(shù)據(jù)總線信號READ databus輸出。AND電路23接收讀出信號READ以及DFF19的輸出信號,生成總線重試信號BUS Retry。
DFF19具有保存鎖定狀態(tài)“1”或者非鎖定狀態(tài)“0”的主鎖變量LOCK的功能。OR電路21以及AND電路22具有在CPU11或者12斷言讀出信號READ時將鎖定狀態(tài)“1”的主鎖變量LOCK設(shè)定到DFF19中,在CPU11或者12斷言寫入信號WRITE時將非鎖定狀態(tài)“0”的主鎖變量LOCK設(shè)定到DFF19中的功能。多路復(fù)用器24以及DFF20具有在CPU11或者12斷言讀出信號READ時,輸出此前保存在DFF19中的主鎖變量LOCK的功能。AND電路23具有在主鎖變量LOCK被設(shè)定為鎖定狀態(tài)“1”的期間、在CPU11或者12斷言讀出信號READ時,生成用于提供給CPU11以及12的總線重試信號BUS Retry的功能。
此外,在系統(tǒng)存儲器17中,存儲有1個、或者2個或2個以上的子鎖變量lock。由于CPU11或者12不具有窺探高速緩存,所以將用于分配子鎖變量lock的存儲區(qū)域設(shè)定在非高速緩存區(qū)域。
以下,參照圖3說明鎖寄存器18的動作。
如果復(fù)位信號RESET被斷言為H電平,則在時鐘信號CLK上升的時刻t1,進(jìn)行鎖寄存器18的初始化。具體地,AND電路22與讀出信號READ以及寫入信號WRITE沒有關(guān)系,輸出L電平的信號,DFF19將之鎖存。即,DFF19保存非鎖定狀態(tài)“0”的主鎖變量LOCK。
接著,在為了確認(rèn)1個CPU11或者12是否可以獲得鎖而將讀出信號READ斷言為H電平時,AND電路22的輸出信號變成H電平。DFF19在時鐘信號CLK上升的時刻t2,鎖存并輸出其H電平的信號。由于DFF19的輸出信號被提供給OR電路21,所以在讀出信號READ恢復(fù)為L電平之后,DFF19還繼續(xù)鎖存H電平的信號,由此保存鎖存狀態(tài)“1”的主鎖變量LOCK。
在讀出信號READ恢復(fù)為L電平時,多路復(fù)用器24選擇DFF20的輸出信號,由于DFF20繼續(xù)鎖存L電平的信號,所以讀出數(shù)據(jù)總線信號READdatabus維持L電平不變。因而,認(rèn)識到該CPU11或者12可以獲得鎖。
在認(rèn)識到可以獲得鎖之后,即使為了確認(rèn)其他的CPU12或者11是否能夠獲得鎖而將讀出信號READ斷言為H電平,由于DFF19的輸出信號已變成H電平,AND電路23也將總線重試信號BUS Rrery斷言為H電平。因而,認(rèn)識到該其他的CPU不能獲得鎖。此外,由于讀出信號READ被斷言為H電平并且多路復(fù)用器24選擇DFF19的輸出信號,所以在時鐘信號CLK上升的時刻t3,DFF20鎖存H電平的信號,由此將讀出數(shù)據(jù)總線信號READ databus斷言為H電平。
接著,在該CPU11或者12為了釋放鎖而將寫入信號WRITE斷言為H電平時,AND電路22的輸出信號變成L電平。DFF19在時鐘信號CLK上升的時刻t4鎖存并輸出其L電平信號。由此,主鎖變量LOCK被清除為非鎖定狀態(tài)“0”。
其后,在為了再次確認(rèn)CPU11或者12是否可以獲得鎖而將讀出信號READ斷言為H電平時,在時鐘信號CLK上升的時刻t5,DFF19與前一次同樣地鎖存并輸出H電平的信號。此時,由于多路復(fù)用器24選擇L電平的信號,所以DFF20將之鎖存并輸出。因而,讀出數(shù)據(jù)總線信號READdatabus恢復(fù)為L電平,從而認(rèn)識到CPU11或者12可以獲得鎖。
以下,參照圖4說明使用了該鎖寄存器18的多處理器系統(tǒng)10全體的動作。
CPU11或者12從鎖寄存器18讀出主鎖變量LOCK(S11),判斷是否LOCK=1,即主鎖變量LOCK是否為鎖定狀態(tài)“1”(S12)。在非鎖定狀態(tài)“0”的情況下(在S12為否),CPU11或者12從系統(tǒng)存儲器17讀出子鎖變量lock(S13),判斷是否lock=1,即子鎖變量lock是否為鎖定狀態(tài)“1”(S14)。在非鎖定狀態(tài)“0”的情況下(在S14為否),CPU11或者12將“1”寫入到子鎖變量lock,由此獲得鎖(S15)。在鎖的獲得之后,CPU11或者12執(zhí)行規(guī)定的排他控制(S16)。排他控制結(jié)束后,CPU11或者12將“0”寫入到子鎖變量lock,由此釋放鎖(S17)。
如上所述,如果采用本發(fā)明的實施方式,則在CPU11或者12斷言讀出信號READ時,由于從鎖寄存器18讀出主鎖變量LOCK并且立即將鎖定狀態(tài)“1”的主鎖變量LOCK寫入到鎖寄存器18,所以其后,即使另一CPU12或者11斷言讀出信號LOCK,也會從鎖寄存器18讀出鎖定狀態(tài)“1”的主鎖變量LOCK。因此,另一CPU12或者11不能獲得鎖。因而,通過僅設(shè)置鎖寄存器18就能夠?qū)崿F(xiàn)與具有鎖變量的原子讀出修改寫入功能的高成本的多處理器系統(tǒng)相同的功能。
此外,在主鎖變量LOCK被設(shè)定為鎖定狀態(tài)“1”的期間,如果CPU11或者12斷言讀出信號READ,則由于總線重試信號BUS Retry生成并且CPU11以及12接收該總線重試信號BUS Retry而認(rèn)識到不可能獲得鎖,所以能夠使其不會隨便地斷言讀出信號READ。
此外,由于經(jīng)由專用的交叉總線16進(jìn)行用于獲得或者釋放鎖的從CPU11或者12對鎖寄存器18的訪問,所以在由于CPU11或者12獲得了鎖而另一CPU12或者11等待其釋放鎖時,另一CPU12或者11經(jīng)由交叉總線16斷言讀出信號READ而從鎖寄存器18讀出主鎖變量LOCK,另一方面,獲得了鎖的CPU11或者12經(jīng)由交叉總線15訪問系統(tǒng)存儲器17。因而,不會妨礙從獲得了鎖的CPU11或者12對系統(tǒng)存儲器17的訪問。
此外,由于以預(yù)先將1個、或者2個或2個以上的子鎖變量lock存儲在系統(tǒng)存儲器17中、CPU11或者12首先從鎖寄存器18讀出主鎖變量LOCK而獲得鎖、接著從系統(tǒng)存儲器17讀出子鎖變量lock而獲得鎖的方式分階段地獲得鎖,所以能夠設(shè)定多個鎖變量lock。
以上,說明了本發(fā)明的實施方式,但上述的實施方式只不過是用于實現(xiàn)本發(fā)明的示例。因而,本發(fā)明并不限于上述的實施方式,而是可以在不脫離其主旨的范圍內(nèi)適宜對上述的實施方式進(jìn)行變形。
圖1是表示本發(fā)明的實施方式的多處理器系統(tǒng)的整體結(jié)構(gòu)的功能方框圖;圖2是表示圖1中的鎖寄存器的結(jié)構(gòu)的電路圖;圖3是表示圖2所示的鎖寄存器的動作的時序圖;圖4是表示圖1所示的多處理器系統(tǒng)的鎖獲得動作的流程圖;以及圖5是表示以往的多處理器的鎖獲得動作的流程圖。
符號說明10多處理器系統(tǒng)11、12CPU15、16交叉總線17系統(tǒng)存儲器18鎖寄存器LOCK主鎖變量lock子鎖變量READ讀出信號WRITE寫入信號BUS Retry總線重試信號READ databus讀出數(shù)據(jù)總線信號
權(quán)利要求
1.一種多處理器系統(tǒng),其特征在于,具備多個處理器,其各個在執(zhí)行排他控制之前,為了獲得鎖而斷言讀出信號,并且在執(zhí)行排他控制之后,為了釋放鎖而斷言寫入信號;以及鎖寄存器,其與上述多個處理器連接;其中,上述鎖寄存器包括保存單元,其保存鎖定狀態(tài)或者非鎖定狀態(tài)的第1鎖變量;鎖變量輸出單元,其在上述處理器的1個斷言讀出信號時,輸出此前保存在上述保存單元中的第1鎖變量;以及鎖變量輸入單元,其在上述處理器的1個斷言讀出信號時,將鎖定狀態(tài)的第1鎖變量設(shè)定到上述保存單元,并且在上述處理器的1個斷言寫入信號時,將非鎖定狀態(tài)的第1鎖變量設(shè)定到上述保存單元。
2.如權(quán)利要求1所述的多處理器系統(tǒng),其特征在于,上述鎖寄存器進(jìn)一步包括總線重試單元,其在上述第1鎖變量被設(shè)定為鎖定狀態(tài)的期間,在上述處理器的1個斷言讀出信號時,生成用于提供給上述處理器的總線重試信號。
3.如權(quán)利要求1所述的多處理器系統(tǒng),其特征在于,進(jìn)一步具備與上述多個處理器共同連接的第1總線;與上述第1總線連接的存儲器;以及與上述多個處理器共同連接的第2總線;其中,上述鎖寄存器連接到上述第2總線。
4.如權(quán)利要求1所述的多處理器系統(tǒng),其特征在于,進(jìn)一步具備存儲1個、或者2個或2個以上的第2鎖變量的存儲器;上述處理器的各個斷言讀出信號而從上述鎖寄存器讀出第1鎖變量,且在所讀出的第1鎖變量為非鎖定狀態(tài)的情況下,從上述存儲器讀出第2鎖變量,在所讀出的第2鎖變量為非鎖定狀態(tài)的情況下,將第2鎖變量改寫為鎖定狀態(tài)。
5.一種多處理器系統(tǒng)中的排他控制方法,是具備多個處理器和與上述多個處理器連接的、保存鎖定狀態(tài)或者非鎖定狀態(tài)的第1鎖變量的鎖寄存器的多處理器中的排他控制方法,其特征在于,包括在上述處理器的1個為了獲得鎖而斷言讀出信號時,從上述鎖寄存器讀出第1鎖變量并且將鎖定狀態(tài)的第1鎖變量寫入到上述鎖寄存器的步驟;在所讀出的第1鎖變量為非鎖定狀態(tài)的情況下,由該1個處理器執(zhí)行排他控制的排他控制步驟;以及在執(zhí)行排他控制之后,在該1個處理器為了釋放鎖而斷言寫入信號時,將非鎖定狀態(tài)的第1鎖變量寫入到上述鎖寄存器的步驟。
6.如權(quán)利要求5所述的多處理器系統(tǒng)中的排他控制方法,其特征在于,進(jìn)一步包括在上述第1鎖變量為鎖定狀態(tài)的期間,在上述處理器的1個斷言讀出信號時,生成用于提供給上述處理器的總線重試信號的步驟。
7.如權(quán)利要求5所述的多處理器系統(tǒng)中的排他控制方法,其特征在于上述多處理器系統(tǒng)進(jìn)一步具備存儲1個、或者2個或2個以上的第2鎖變量的存儲器;上述排他控制步驟包括在所讀出的第1鎖變量為非鎖定狀態(tài)的情況下,從上述存儲器讀出第2鎖變量的步驟;在所讀出的第2鎖變量為非鎖定狀態(tài)的情況下,將第2鎖變量改寫為鎖定狀態(tài)的步驟;以及在將第2鎖變量改寫為鎖定狀態(tài)之后,執(zhí)行排他控制的步驟。
全文摘要
本發(fā)明提供一種能夠用簡單的結(jié)構(gòu)實現(xiàn)與具有鎖變量的原子讀出修改寫入功能的高成本的系統(tǒng)同樣的功能的多處理器系統(tǒng)。如果某一CPU斷言讀出信號READ,則從鎖寄存器18讀出鎖變量LOCK,并且將鎖定狀態(tài)“1”的鎖變量LOCK寫入到鎖寄存器18。在所讀出的鎖變量LOCK是非鎖定狀態(tài)“0”的情況下,該CPU能夠獲得鎖。由于讀出鎖變量LOCK并且寫入鎖定狀態(tài)“1”的主鎖變量LOCK,所以此后即使另一CPU斷言讀出信號READ,也會因為從鎖寄存器18讀出鎖定狀態(tài)“1”的鎖變量LOCK,而使該另一CPU不能獲得鎖。
文檔編號G06F12/00GK101061462SQ20058004002
公開日2007年10月24日 申請日期2005年11月21日 優(yōu)先權(quán)日2004年11月26日
發(fā)明者上田真 申請人:國際商業(yè)機器公司