本發(fā)明涉及一種資源共享機(jī)制,且特別涉及一種可避免競爭情況(racecondition)的共享裝置的使用方法及資源共享系統(tǒng)。
背景技術(shù):
:一般而言,當(dāng)資源被兩個(gè)或以上的處理器同時(shí)存取時(shí),會(huì)造成數(shù)據(jù)不完整或是無法同步的情形稱之為競爭情況,尤其在處理器越多或是數(shù)據(jù)量越大的時(shí)候,問題產(chǎn)生的機(jī)率也就相對提高。因此必須使用傳輸保護(hù)機(jī)制來避免發(fā)生上述問題。其中仲裁者機(jī)制是普遍應(yīng)用解決此問題的方法。一般仲裁者機(jī)制是由一個(gè)作為仲裁者的處理器來給予權(quán)限標(biāo)記,擁有標(biāo)記的處理器則擁有存取共享資源的權(quán)力。仲裁者會(huì)依照處理器的申請順序,來訂定存取排程,并且根據(jù)優(yōu)先權(quán)順序來避免相互競爭的發(fā)生。然而,現(xiàn)有的仲裁者機(jī)制存在有下述缺點(diǎn)。(1)僅針對處理器端與儲(chǔ)存裝置端進(jìn)行監(jiān)控,缺乏對仲裁者的監(jiān)控機(jī)制。(2)無法因應(yīng)不同的處理器來動(dòng)態(tài)調(diào)整優(yōu)先權(quán)順序。即,由于每個(gè)處理器內(nèi)部設(shè)定與固件不可能完全相同,并且對于儲(chǔ)存裝置的存取行為也不盡相同,無法對各處理器使用同一套判斷標(biāo)準(zhǔn)來衡量優(yōu)先權(quán)順序。(3)在原先的仲裁者失去行為能力或是被關(guān)機(jī)時(shí),只會(huì)依照已定義好的優(yōu)先權(quán)順序來進(jìn)行遞補(bǔ),而在缺乏對仲裁者的監(jiān)控機(jī)制以及無法動(dòng)態(tài)調(diào)整優(yōu)先權(quán)順序的情況下,難以保證選出一個(gè)穩(wěn)定且合適的新仲裁者。倘若選出的新仲裁者依舊傳輸效率不佳、時(shí)常當(dāng)機(jī),整個(gè)系統(tǒng)架構(gòu)就會(huì)顯得不穩(wěn)且易出狀況,甚至又需再更換一次仲裁者,造成整個(gè)仲裁者架構(gòu)耗費(fèi)太多時(shí)間在更換仲裁者,效率不彰。技術(shù)實(shí)現(xiàn)要素:本發(fā)明提供一種共享裝置的使用方法及資源共享系統(tǒng),可解決多個(gè)處理器同時(shí)存取共享裝置所產(chǎn)生的競爭情況(racecondition)。本發(fā)明的共享裝置的使用方法,包括:由仲裁者節(jié)點(diǎn)建立優(yōu)先權(quán)順序,當(dāng)仲裁者節(jié)點(diǎn)同時(shí)接收到兩個(gè)或兩個(gè)以上處理器各自所傳送的申請共享裝置的使用權(quán)限的要求時(shí),依據(jù)優(yōu)先權(quán)順序決定其中一個(gè)處理器具有共享裝置的使用權(quán)限。在此,共享裝置提供給多個(gè)處理器來使用,并且以其中一個(gè)處理器作為仲裁者節(jié)點(diǎn)。上述由仲裁者節(jié)點(diǎn)建立優(yōu)先權(quán)順序包括:依據(jù)各處理器的識(shí)別信息,并設(shè)定各個(gè)處理器的初始權(quán)重值;獲得各處理器的狀態(tài)診斷信息,其中狀態(tài)診斷信息代表各處理器分別與仲裁者節(jié)點(diǎn)及共享裝置之間的傳輸狀態(tài),而狀態(tài)診斷信息包括一個(gè)或多個(gè)狀態(tài)診斷碼,且一個(gè)狀態(tài)診斷碼對應(yīng)至一個(gè)狀態(tài)權(quán)重值;對每一個(gè)處理器,基于其所對應(yīng)的初始權(quán)重值、以及所包括的一個(gè)或多個(gè)狀態(tài)診斷碼對應(yīng)的狀態(tài)權(quán)重值,計(jì)算出各個(gè)處理器的優(yōu)先權(quán)分?jǐn)?shù),以建立優(yōu)先權(quán)順序。本發(fā)明的資源共享系統(tǒng),包括多個(gè)處理器以及共享裝置。共享裝置耦接至上述處理器,提供給上述處理器來使用。以其中一個(gè)處理器作為仲裁者節(jié)點(diǎn),并且由仲裁者節(jié)點(diǎn)建立優(yōu)先權(quán)順序,包括:依據(jù)各處理器的識(shí)別信息設(shè)定各處理器的初始權(quán)重值;獲得各處理器的狀態(tài)診斷信息,其中狀態(tài)診斷信息代表各處理器分別與仲裁者節(jié)點(diǎn)及共享裝置之間的傳輸狀態(tài),狀態(tài)診斷信息包括一個(gè)或多個(gè)狀態(tài)診斷碼,且一個(gè)狀態(tài)診斷碼對應(yīng)至一個(gè)狀態(tài)權(quán)重值;以及對各處理器,基于其所對應(yīng)的初始權(quán)重值、以及所包括的所有狀態(tài)診斷碼的狀態(tài)權(quán)重值,計(jì)算出各個(gè)處理器的優(yōu)先權(quán)分?jǐn)?shù),以建立優(yōu)先權(quán)順序。并且,當(dāng)仲裁者節(jié)點(diǎn)同時(shí)接收到兩個(gè)或兩個(gè)以上處理器各自所傳送的申請共享裝置的使用權(quán)限的要求時(shí),依據(jù)優(yōu)先權(quán)順序決定其中一個(gè)處理器具有共享裝置的使用權(quán)限?;谏鲜?,利用每個(gè)處理器分別與仲裁者節(jié)點(diǎn)及共享裝置之間的傳輸狀態(tài),并且配合各個(gè)處理器的特性來決定優(yōu)先權(quán)順序。據(jù)此,能夠因不同處理器而給予適合的判斷依據(jù),做出一個(gè)適合整個(gè)資源共享系統(tǒng)的優(yōu)先權(quán)順序。通過上述方法可避免在多個(gè)處理器同時(shí)進(jìn)行存取而發(fā)生競爭進(jìn)而導(dǎo)致數(shù)據(jù)不完整,并且解決了存取效率與遞補(bǔ)優(yōu)先順序的問題。為讓本發(fā)明的上述特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉實(shí)施例,并配合說明書附圖作詳細(xì)說明如下。附圖說明圖1是依照本發(fā)明一實(shí)施例的資源共享系統(tǒng)的方塊圖。圖2a~圖2d是依照本發(fā)明一實(shí)施例的連線狀態(tài)診斷的示意圖。圖3是依照本發(fā)明一實(shí)施例的共享裝置的使用方法的流程圖。圖4是依照本發(fā)明一實(shí)施例的匯整狀態(tài)診斷信息的示意圖。圖5是依照本發(fā)明一實(shí)施例的處理器端的連線狀態(tài)診斷的流程圖。圖6是依照本發(fā)明一實(shí)施例的仲裁者端的連線狀態(tài)診斷的流程圖。圖7是依照本發(fā)明一實(shí)施例的仲裁者遞補(bǔ)機(jī)制的示意圖。附圖標(biāo)記說明:100:資源共享系統(tǒng)110:共享裝置120_1:處理器(仲裁者節(jié)點(diǎn))120_2~120_n、mpu.a、mpu.b、mpu.g:處理器130_1~130_n:儲(chǔ)存空間140_1~140_n:優(yōu)先權(quán)表格150_1~150_n:診斷碼表格s305~s320:共享裝置的使用方法各步驟s505~s530:處理器端的連線狀態(tài)診斷各步驟s605~s630:仲裁者端的連線狀態(tài)診斷各步驟具體實(shí)施方式圖1是依照本發(fā)明一實(shí)施例的資源共享系統(tǒng)的方塊圖。請參照圖1,資源共享系統(tǒng)100包括共享裝置110以及多個(gè)處理器120_1~120_n,并且共享裝置110允許所有處理器120_1~120_n對其進(jìn)行存取。在本實(shí)施例中,為了方便說明僅繪示一個(gè)共享裝置110,而在其他實(shí)施例中,資源共享系統(tǒng)100可以具備多個(gè)不同或相同的共享裝置110。資源共享系統(tǒng)100可以是一臺(tái)主機(jī),也可以是由多臺(tái)主機(jī)所構(gòu)成的伺服器系統(tǒng),并且不限定上述處理器120_1~120_n是設(shè)置在同一主機(jī)內(nèi)。而當(dāng)上述處理器120_1~120_n設(shè)置在不同的主機(jī)時(shí),彼此之間可通過有線或無線的傳輸方式來進(jìn)行溝通。處理器120_1~120_n例如為中央處理單元(centralprocessingunit,cpu)、圖像處理單元(graphicprocessingunit,gpu)、物理處理單元(physicsprocessingunit,ppu)、可編程的微處理器(microprocessor)、嵌入式控制晶片、數(shù)字信號處理器(digitalsignalprocessor,dsp)、特殊應(yīng)用集成電路(applicationspecificintegratedcircuits,asic)或其他類似裝置。共享裝置110可以是伺服器等具有儲(chǔ)存裝置的電子裝置、或者是通用序列總線(universalserialbus,usb)儲(chǔ)存碟等移動(dòng)儲(chǔ)存裝置、亦可以是可拆卸的儲(chǔ)存裝置等。例如為非揮發(fā)性存儲(chǔ)器(non-volatilememory)、隨機(jī)存取存儲(chǔ)器(randomaccessmemory,ram)或硬盤等儲(chǔ)存裝置。非揮發(fā)性存儲(chǔ)器例如為電子可抹除可編程只讀存儲(chǔ)器(electricallyerasableprogrammablereadonlymemory,eeprom)。資源共享系統(tǒng)100具有仲裁者機(jī)制,即,在上述處理器120_1~120_n中設(shè)定其中一個(gè)來作為仲裁者節(jié)點(diǎn)。在本實(shí)施例中,以處理器120_1來作為仲裁者節(jié)點(diǎn)。由仲裁者節(jié)點(diǎn)120_1給予共享裝置110的權(quán)限標(biāo)記至處理器120_2~120_n其中一個(gè)。而擁有權(quán)限標(biāo)記的處理器則擁有存取共享裝置110的使用權(quán)限。每個(gè)處理器120_1~120_n內(nèi)部都含有對應(yīng)的儲(chǔ)存空間130_1~130_n來分別存放優(yōu)先權(quán)表格140_1~140_n(記錄優(yōu)先權(quán)順序)以及診斷碼表格150_1~150_n(記錄狀態(tài)診斷信息)。仲裁者節(jié)點(diǎn)120_1在建立優(yōu)先權(quán)表格140_1之后,會(huì)與處理器120_2~120_n的優(yōu)先權(quán)表格140_2~140_n進(jìn)行同步。每個(gè)處理器120_1~120_n彼此間可通過任何方式(例如集成電路(inter-integratedcircuit,i2c)總線)連接著,并且可以互相傳輸需要的信息。例如,狀態(tài)診斷信息或是優(yōu)先權(quán)順序均是由上述連線方法進(jìn)行傳輸。由于每一個(gè)處理器120_2~120_n(非仲裁者節(jié)點(diǎn)120_1)除了與共享裝置110之間傳輸數(shù)據(jù)之外,僅會(huì)與仲裁者節(jié)點(diǎn)120_1做權(quán)限申請,因此每一個(gè)處理器120_2~120_n內(nèi)所儲(chǔ)存的診斷碼表格150_2~150_n中,只會(huì)記錄自己與仲裁者節(jié)點(diǎn)120_1及與共享裝置110之間的傳輸狀態(tài)。另外,仲裁者節(jié)點(diǎn)120_1會(huì)記錄其自身與處理器之間的傳輸狀態(tài),并且進(jìn)一步匯整所有處理器120_2~120_n所回報(bào)的診斷碼信息至診斷碼表格 150_1。因此在仲裁者節(jié)點(diǎn)120_1的診斷碼表格150_1中記錄有其自身以及所有處理器120_2~120_n的傳輸狀態(tài)。各診斷碼表格150_2~150_n代表其分別與仲裁者節(jié)點(diǎn)120_1及與共享裝置110之間的傳輸狀態(tài)。診斷碼表格150_2~150_n包括一個(gè)或多個(gè)狀態(tài)診斷碼,每一個(gè)狀態(tài)診斷碼對應(yīng)至一種傳輸狀態(tài)。狀態(tài)診斷碼是基于傳輸效率所定義出來的,包含在進(jìn)行傳輸時(shí)會(huì)遇到的各種傳輸狀態(tài)。例如,仲裁者節(jié)點(diǎn)120_1(仲裁者端)、處理器120_2~120_n(處理器端)及共享裝置110(裝置端)在進(jìn)行傳輸?shù)姆獍紩?huì)帶有狀態(tài)診斷碼。而仲裁者端及處理器端在接收到狀態(tài)診斷碼時(shí)都會(huì)記錄下來。底下列舉幾種范例做說明可能會(huì)發(fā)生的傳輸狀態(tài)。狀態(tài)診斷碼“0x00”代表傳輸成功。狀態(tài)診斷碼“0x01”代表待決(pending)。即,傳輸正在執(zhí)行當(dāng)中,等待共享裝置110回應(yīng)。例如,表示共享裝置110可能正在進(jìn)行傳輸,其使用權(quán)限尚未被釋放。狀態(tài)診斷碼“0x02”代表無法使用(notavailable)。即,仲裁者節(jié)點(diǎn)120_1并未有回應(yīng),或者與共享裝置110傳輸?shù)耐ǖ辣黄渌麄鬏斔加?,?dǎo)致無法進(jìn)行傳輸。有可能是仲裁者節(jié)點(diǎn)120_1沒有正確釋放使用權(quán)限,或是上一個(gè)擁有使用權(quán)限的處理器仍占用該通道。狀態(tài)診斷碼“0x05”代表非法通道(illegalchannel)。即,無法與共享裝置110建立傳輸連線,找不到任何通道與共享裝置110進(jìn)行連結(jié)。例如,在其中一個(gè)處理器獲得共享裝置110的使用權(quán)限后,找不到通道對裝置進(jìn)行存取,可能是硬件線路受阻或是損壞。狀態(tài)診斷碼“0x0a”代表逾時(shí)(timeout),其表示擁有共享裝置110的使用權(quán)限的處理器未在規(guī)定時(shí)間內(nèi)傳輸完成并向仲裁者節(jié)點(diǎn)120_1歸還使用權(quán)限。狀態(tài)診斷碼“0x10”代表循環(huán)冗余檢查(cyclicredundancycheck,crc)錯(cuò)誤,其表示傳輸封包的crc檢查失敗。狀態(tài)診斷碼“0x11”代表否定認(rèn)可(negativeacknowledgement,nak),即,仲裁者節(jié)點(diǎn)120_1在規(guī)定時(shí)間內(nèi)未收到擁有共享裝置110的使用權(quán)限的處理器的回應(yīng),代表該處理器可能出現(xiàn)異常而無法正確釋放使用權(quán)限。狀態(tài)診斷碼“0x1f”代表身份確認(rèn)(identification),即,仲裁者節(jié)點(diǎn)120_1確認(rèn)各處理器120_2~120_n的身份。由于每一個(gè)處理器120_2~120_n不一 定相同,內(nèi)部的固件版本、處理器核心數(shù)、處理器時(shí)脈、處理器種類、處理器用途也不一樣,所以仲裁者節(jié)點(diǎn)120_1需要確認(rèn)各處理器120_2~120_n的身份。而在整個(gè)資源共享系統(tǒng)100下,不論是仲裁者端、處理器端、裝置端都有可能因?yàn)樽陨硖幚韱栴}造成傳輸失敗,因此通過連線狀態(tài)診斷方式來隨時(shí)監(jiān)控各端的傳輸狀態(tài),并記錄下對應(yīng)的狀態(tài)診斷碼。圖2a~圖2d是依照本發(fā)明一實(shí)施例的連線狀態(tài)診斷的示意圖。在本實(shí)施例是以處理器120_2來進(jìn)行說明,其他處理器亦以此類推。圖2a及圖2b表示處理器120_2與仲裁者節(jié)點(diǎn)120_1之間的傳輸范例,圖2c及圖2d表示處理器120_2與共享裝置110之間的傳輸范例。在此,圖2a~圖2d所提及的傳輸狀態(tài)僅為舉例說明,并不以此為限。在圖2a中,處理器120_2向仲裁者節(jié)點(diǎn)120_1發(fā)出一要求。當(dāng)仲裁者節(jié)點(diǎn)120_1收到此要求時(shí),會(huì)傳送回應(yīng)數(shù)據(jù)以及表示傳輸成功的狀態(tài)診斷碼“0x00”一并回送給處理器120_2。例如,假設(shè)處理器120_2向仲裁者節(jié)點(diǎn)120_1傳送申請共享裝置110的使用權(quán)限的要求,且處理器120_2接收到的狀態(tài)診斷碼為“0x00”,表示傳輸成功。同時(shí),處理器120_2會(huì)將狀態(tài)診斷碼“0x00”記錄到診斷碼表格150_2。例如,仲裁者節(jié)點(diǎn)120_1的處理器代號為“mpu.a”,則將“0x00”記錄到與“mpu.a”對應(yīng)的欄位中。參照圖2b,在處理器120_2向仲裁者節(jié)點(diǎn)120_1發(fā)出要求之后,倘若處理器120_2在一個(gè)設(shè)定的時(shí)間內(nèi)沒有接收到仲裁者節(jié)點(diǎn)120_1的回應(yīng),處理器120_2會(huì)自行產(chǎn)生狀態(tài)診斷碼“0x02”(無法使用),并記錄“0x02”至診斷碼表格150_2。另外,在處理器120_2向仲裁者節(jié)點(diǎn)120_1傳送申請共享裝置110的使用權(quán)限的要求之后,倘若已經(jīng)有其他處理器正在使用共享裝置110,則仲裁者節(jié)點(diǎn)120_1會(huì)回傳狀態(tài)診斷碼“0x02”(無法使用)至處理器120_2,使得處理器120_2記錄“0x02”至診斷碼表格150_2。在圖2c中,處理器120_2已獲得共享裝置110的使用權(quán)限并向共享裝置110進(jìn)行傳輸時(shí),倘若處理器120_2找不到任何通道與共享裝置110進(jìn)行連結(jié),則處理器120_2會(huì)產(chǎn)生狀態(tài)診斷碼“0x05”,并將其記錄至診斷碼表格150_2。在圖2d中,處理器120_2已獲得共享裝置110的使用權(quán)限并向共享裝 置110進(jìn)行傳輸時(shí),倘若連線通道沒問題,但是處理器120_2無法從共享裝置110端得到任何回應(yīng),此時(shí),處理器120_2判定目前狀態(tài)為待決狀態(tài),并產(chǎn)生狀態(tài)診斷碼“0x01”且將其記錄至診斷碼表格150_2。在如上所述的連線狀態(tài)診斷的方式,通過已定義的狀態(tài)診斷碼來掌握處理器端分別與仲裁者端及與裝置端之間的傳輸狀態(tài)。此外,亦可一次傳送多個(gè)狀態(tài)診斷碼,而不限于一個(gè)。另外,在有處理器端取得使用權(quán)限而開始對共享裝置110進(jìn)行傳輸時(shí),仲裁者端會(huì)去監(jiān)控處理器端的使用狀態(tài)。例如,檢查處理器端是否逾期未歸還權(quán)限或是處理器端本身已經(jīng)異常。以處理器120_2(取得使用權(quán)限)進(jìn)行說明,仲裁者節(jié)點(diǎn)120_1在發(fā)現(xiàn)處理器120_2逾期未歸還使用權(quán)限,會(huì)先在診斷碼表格150_1中記錄一筆狀態(tài)診斷碼“0x0a”至對應(yīng)于處理器120_2的欄位。之后,仲裁者節(jié)點(diǎn)120_1發(fā)送請求來確認(rèn)處理器120_2是否正常運(yùn)作。若發(fā)現(xiàn)處理器120_2沒有正常運(yùn)作,則仲裁者節(jié)點(diǎn)120_1診斷碼表格150_1中,再記錄一筆狀態(tài)診斷碼“0x11”至對應(yīng)于處理器120_2的欄位,并強(qiáng)制釋放出使用權(quán)限。仲裁者節(jié)點(diǎn)120_1在匯整其自身以及處理器端全部的狀態(tài)診斷碼之后,便更可以進(jìn)一步來決定優(yōu)先權(quán)順序,進(jìn)而在發(fā)生競爭情況(racecondition)時(shí)或需要遞補(bǔ)仲裁者時(shí),基于優(yōu)先權(quán)順序來給予一個(gè)最佳選擇以及最有效率的方法。底下即搭配上述資源共享系統(tǒng)100來說明共享裝置110的使用方法各個(gè)步驟。圖3是依照本發(fā)明一實(shí)施例的共享裝置的使用方法的流程圖。請參照圖3,在步驟s305~s315中,由仲裁者節(jié)點(diǎn)120_1建立優(yōu)先權(quán)順序。具體而言,在步驟s305中,仲裁者節(jié)點(diǎn)120_1依據(jù)各處理器120_1~120_n的識(shí)別信息來設(shè)定各群組的初始權(quán)重值。例如,基于各處理器120_1~120_n的識(shí)別信息將這些處理器(包括仲裁者節(jié)點(diǎn))120_1~120_n分群為多個(gè)群組,并設(shè)定各群組的初始權(quán)重值。在資源共享系統(tǒng)100的架構(gòu)當(dāng)中,每一個(gè)處理器的用途均不一樣,有的處理器專門處理運(yùn)算,有的只是負(fù)責(zé)存放不重要的數(shù)據(jù),所以每個(gè)處理器對權(quán)限需求的輕重緩急也不一定相同。故,利用分群的方式,將需要優(yōu)先處理的處理器分配至在高優(yōu)先權(quán)的組別(例如以群組編號來表示);將較 不緊急以及需求性較低的處理器分配至低優(yōu)先權(quán)的組別,再將此各群組編號轉(zhuǎn)化成一個(gè)權(quán)重初始值,如表1所示。表1群組編號初始權(quán)重值1100295390485580......處理器端所對應(yīng)的群組的初始權(quán)重值會(huì)因?yàn)椴煌匦缘奶幚砥鞫喈?。例如某些處理器傳輸?shù)據(jù)量較大,所以產(chǎn)生逾時(shí)的機(jī)率或出現(xiàn)crc錯(cuò)誤的機(jī)率較高,因此在事先定義初始權(quán)重值的階段,便可降低這一類型群組的初始權(quán)重值。目的是讓此架構(gòu)能夠因不同處理器而給予適合的判斷依據(jù),做出一個(gè)適合整個(gè)架構(gòu)的優(yōu)先權(quán)順序。仲裁者節(jié)點(diǎn)120_1向所有處理器120_2~120_n發(fā)送夾帶有狀態(tài)診斷碼“0x1f”的詢問信息,而處理器120_2~120_n在收到此詢問信息之后會(huì)回傳自己的識(shí)別信息至仲裁者節(jié)點(diǎn)120_1。在此,識(shí)別信息例如為固件版本、處理器編號、處理器內(nèi)部設(shè)定、處理器核心數(shù)、處理器時(shí)脈、處理器種類、處理器用途其中之一或其組合。而仲裁者節(jié)點(diǎn)120_1再對照經(jīng)由已定義的對應(yīng)表(表2)找出各處理器(包括仲裁者節(jié)點(diǎn))所屬的群組編號,并將結(jié)果記錄下來。表2所示的對應(yīng)表是以固件版本為例。群組編號1對應(yīng)至固件版本“25.01.xx”,群組編號2對應(yīng)至固件版本“23.02.xx”等等。表2群組編號固件版本125.01.xx223.02.xx......n其他接著,在步驟s310中,仲裁者節(jié)點(diǎn)120_1獲得各處理器(包括仲裁者 節(jié)點(diǎn)120_1、處理器120_2~120_n以及共享裝置110)的狀態(tài)診斷信息,并且給予每一個(gè)狀態(tài)診斷碼一個(gè)對應(yīng)的狀態(tài)權(quán)重值,如表3所示。由于處理器端在每筆對共享裝置110的傳輸都伴隨著狀態(tài)診斷碼,仲裁者端可隨時(shí)同步處理器端的狀態(tài)診斷碼來作為更新優(yōu)先權(quán)列表或是遞補(bǔ)仲裁者端的依據(jù)。通過狀態(tài)診斷碼衡量處理器端、仲裁者端、裝置端的傳輸效率。表3狀態(tài)診斷碼狀態(tài)權(quán)重值0x000.00x010.10x020.20x030.30x040.4......0xff0.9例如,仲裁者節(jié)點(diǎn)120_1會(huì)定時(shí)自各處理器120_2~120_n接收其各自所記錄的狀態(tài)診斷信息。舉例來說,圖4是依照本發(fā)明一實(shí)施例的匯整狀態(tài)診斷信息的示意圖。請參照圖4,在本實(shí)施中,仲裁者節(jié)點(diǎn)120_1的處理器代號為mpu.a。并且,為求方便說明,僅繪示出處理器120_2~120_5,其處理器代號分別為mpu.b、mpu.c、mpu.d、mpu.e。在診斷碼表格150_2~150_5中,代號mpu.a對應(yīng)的欄位用以記錄各處理器120_2~120_5與仲裁者節(jié)點(diǎn)120_1之間進(jìn)行傳輸所獲得的狀態(tài)診斷碼;而代號device對應(yīng)的欄位用以記錄各處理器120_2~120_5與共享裝置110之間進(jìn)行傳輸所獲得的狀態(tài)診斷碼。而仲裁者節(jié)點(diǎn)120_1在獲得各處理器120_2~120_n的診斷碼表格150_2~150_n之后,進(jìn)行匯整而獲得表4。表4所示為仲裁者節(jié)點(diǎn)120_1的診斷碼表格150_1。在表4中,以診斷碼表格150_2為例,將處理器120_2與仲裁者節(jié)點(diǎn)120_1之間進(jìn)行傳輸所獲得的狀態(tài)診斷碼“0x01”及“0x03”記錄至診斷碼表格150_1的處理器代號mpu.b(對應(yīng)至處理器120_2)對應(yīng)的欄位中。以此類推,將其他狀態(tài)診斷信息中與仲裁者節(jié)點(diǎn)120_1(代號 mpu.a)相關(guān)的狀態(tài)診斷碼記錄至診斷碼表格150_1中對應(yīng)的欄位。另外,由于共享裝置110不具備任何判斷能力所以無法自行發(fā)出狀態(tài)診斷碼,因此,由各處理器與共享裝置110進(jìn)行傳輸并基于傳輸狀態(tài)來給予對應(yīng)的狀態(tài)診斷碼。即,診斷碼表格150_2~150_n中的代號device對應(yīng)欄位中所記錄的狀態(tài)診斷碼是代表共享裝置110的狀態(tài)。故,將診斷碼表格150_2~150_n中的代號device對應(yīng)欄位中所記錄的狀態(tài)診斷碼記錄至表4中的代號device對應(yīng)欄位。表4代號狀態(tài)診斷碼mpu.a0x00mpu.b0x01,0x03mpu.c0x02,0x10mpu.d0x02,0x0ampu.e0x02……mpu.y0x02,0x03,0x04,0x0ddevice0x00,0x01在獲得表4之后,在步驟s315中,仲裁者節(jié)點(diǎn)120_1計(jì)算出各處理器120_1~120_n的優(yōu)先權(quán)分?jǐn)?shù),以建立優(yōu)先權(quán)順序。即,逐一對每一個(gè)處理器,基于其所對應(yīng)的群組的初始權(quán)重值、以及其所包括的狀態(tài)診斷碼的狀態(tài)權(quán)重值,計(jì)算出對應(yīng)的優(yōu)先權(quán)分?jǐn)?shù),以建立優(yōu)先權(quán)順序。而計(jì)算出各處理器的優(yōu)先權(quán)分?jǐn)?shù)是依據(jù)下列公式:priority_w=ini_w×(1+state_total_w)。上述priority_w代表處理器的優(yōu)先權(quán)分?jǐn)?shù),ini_w代表處理器所對應(yīng)的群組的初始權(quán)重值,state_total_w代表處理器所包括的所有狀態(tài)權(quán)重值的加總。仲裁者節(jié)點(diǎn)120_1會(huì)搜集所有處理器端的狀態(tài)診斷碼,利用這些狀態(tài)診斷碼對應(yīng)的狀態(tài)權(quán)重值以及處理器端所對應(yīng)的群組的初始權(quán)重值,來計(jì)算出優(yōu)先權(quán)分?jǐn)?shù)。以處理器120_2為例,其代號為mpu.b,群組編號為2。根據(jù)表3,群組編號2的初始權(quán)重值為95。根據(jù)表4,處理器120_2包括狀態(tài)診斷碼“0x01” 及“0x03”,并且根據(jù)表3可以得知其狀態(tài)權(quán)重值分別為0.1與0.3。將上述初始權(quán)重值95以及狀態(tài)權(quán)重值0.1、0.3代入上述公式可獲得處理器120_2的優(yōu)先權(quán)分?jǐn)?shù)133,即,95×(1+(0.1+0.3))=133。以此類推,仲裁者節(jié)點(diǎn)120_1可算出每個(gè)處理器的優(yōu)先權(quán)分?jǐn)?shù),并基此來建立優(yōu)先權(quán)順序,進(jìn)而獲得優(yōu)先權(quán)表格140_1(表5)。在表5中,優(yōu)先權(quán)分?jǐn)?shù)越低,表示對應(yīng)的處理器的優(yōu)先權(quán)順序越高;優(yōu)先權(quán)分?jǐn)?shù)越高,表示對應(yīng)的處理器的優(yōu)先權(quán)順序越低。之后,由仲裁者節(jié)點(diǎn)120_1將優(yōu)先權(quán)表格140_1同步至各個(gè)處理器。表5優(yōu)先權(quán)順序處理器代號優(yōu)先權(quán)分?jǐn)?shù)1mpu.a1002mpu.t1103mpu.g1204mpu.b1335mpu.z1776mpu.c190……nmpu.h245n+1mpu.y255而后,在步驟s320中,當(dāng)仲裁者節(jié)點(diǎn)120_1同時(shí)接收到兩個(gè)或兩個(gè)以上處理器所傳送的申請共享裝置110的使用權(quán)限的要求時(shí),依據(jù)優(yōu)先權(quán)順序決定由具有高優(yōu)先權(quán)的處理器具有共享裝置110的使用權(quán)限。以表5的處理器代號mpu.t及mpu.b為例,則由處理器代號mpu.t的處理器獲得共享裝置110的使用權(quán)限。底下再舉例來詳細(xì)說明連線狀態(tài)診斷的方式。圖5是依照本發(fā)明一實(shí)施例的處理器端的連線狀態(tài)診斷的流程圖。在本實(shí)施例中,以處理器120_2欲使用共享裝置110來進(jìn)行說明。在步驟s505中,處理器120_2向仲裁者節(jié)點(diǎn)120_1傳送申請共享裝置110的使用權(quán)限的要求。接著,在步驟s510中,處理器120_2基于仲裁者節(jié)點(diǎn)120_1的回應(yīng)來記錄對應(yīng)的狀態(tài)診斷碼。在步驟s515中,處理器120_2根據(jù)仲裁者節(jié)點(diǎn)120_1的回應(yīng)來判斷是否取得使用權(quán)限。若處理器120_2取得使用權(quán)限之后,在步驟s520中,處理器120_2便可開始對共享裝置110進(jìn)行數(shù)據(jù)傳輸。接著,在步驟s525中,處理器120_2基于傳輸結(jié)果來記錄共享裝置110對應(yīng)的狀態(tài)診斷碼。若處理器120_2未取得使用權(quán)限,如步驟s530所示,結(jié)束此次申請。步驟s505及步驟s510為處理器120_2與仲裁者節(jié)點(diǎn)120_1之間的連線狀態(tài)診斷,可同時(shí)參照圖2a以及圖2b的說明。而在處理器120_2取得使用權(quán)限之后的步驟s520及步驟s525為處理器120_2與共享裝置110之間的連線狀態(tài)診斷,可同時(shí)參照圖2c及圖2d的說明。圖6是依照本發(fā)明一實(shí)施例的仲裁者端的連線狀態(tài)診斷的流程圖。在本實(shí)施例中,以處理器120_2欲使用共享裝置110來進(jìn)行說明。在步驟s605中,仲裁者節(jié)點(diǎn)120_1自處理器120_2接收申請共享裝置110的使用權(quán)限的要求。接著,在步驟s610中,仲裁者節(jié)點(diǎn)120_1解析上述要求而獲得對應(yīng)上述要求的狀態(tài)診斷碼,并記錄此狀態(tài)診斷碼。例如,由于仲裁者節(jié)點(diǎn)120_1能夠接收到處理器120_2所傳送的要求,因此,會(huì)在診斷碼表格140_1中的處理器120_2對應(yīng)的欄位,記錄下狀態(tài)診斷碼“0x00”以表示傳輸成功。之后,在步驟s615中,仲裁者節(jié)點(diǎn)120_1傳送申請結(jié)果至處理器120_2。在只有處理器120_2發(fā)出要求的情況下,仲裁者節(jié)點(diǎn)120_1在確認(rèn)共享裝置110的使用權(quán)限已被釋出之后,則傳送允許使用共享裝置110的回應(yīng)以及狀態(tài)診斷碼“0x00”(表示傳輸成功)至處理器120_2。另一方面,仲裁者節(jié)點(diǎn)120_1在確認(rèn)共享裝置110的使用權(quán)限尚未被釋出之后,則傳送不允許使用共享裝置110的回應(yīng)以及狀態(tài)診斷碼“0x00”至處理器120_2。另外,在步驟s610中,倘若仲裁者節(jié)點(diǎn)120_1經(jīng)分析后判斷處理器120_2所傳送的要求的申請內(nèi)容的crc有誤,則仲裁者節(jié)點(diǎn)120_1除了在診斷碼表格140_1中的處理器120_2對應(yīng)的欄位,記錄狀態(tài)診斷碼“0x00”(表示傳輸成功)之外,亦會(huì)記錄下狀態(tài)診斷碼“0x10”以表示crc錯(cuò)誤。并且,在步驟s615中,仲裁者節(jié)點(diǎn)120_1會(huì)同時(shí)將狀態(tài)診斷碼“0x10”以及“0x00”傳送至處理器120_2。由上述舉例可以知道,可一次傳送多個(gè)狀態(tài)診斷碼,而不限于一個(gè)。另外,倘若有其他處理器同時(shí)與處理器120_2發(fā)出要求的情況下,仲 裁者節(jié)點(diǎn)120_1則依據(jù)優(yōu)先權(quán)表格140_1所記錄的優(yōu)先權(quán)順序來決定由何者來取得共享裝置110的使用權(quán)限。在允許處理器120_2使用共享裝置110的情況下,在步驟s620中,仲裁者節(jié)點(diǎn)120_1記錄處理器120_2回傳的狀態(tài)診斷碼。并且,在步驟s625中,仲裁者節(jié)點(diǎn)120_1還會(huì)依據(jù)處理器120_2是否在規(guī)定時(shí)間內(nèi)歸還使用權(quán)限來記錄對應(yīng)的狀態(tài)診斷碼。在不允許處理器120_2使用共享裝置110的情況下,如步驟s630所示,結(jié)束此次申請。而在判定傳送申請權(quán)限的要求的處理器具有共享裝置110的使用權(quán)限之后,仲裁者節(jié)點(diǎn)120_1會(huì)持續(xù)監(jiān)控傳送上述要求的處理器是否在規(guī)定時(shí)間內(nèi)歸還共享裝置110的使用權(quán)限。并且,仲裁者節(jié)點(diǎn)120_1依據(jù)處理器是否在規(guī)定時(shí)間內(nèi)歸還共享裝置110的使用權(quán)限來記錄對應(yīng)的狀態(tài)診斷碼。通過上述連線狀態(tài)診斷的方式,可以全面地監(jiān)控仲裁者端、處理器端、裝置端,因此可以在問題發(fā)生之前進(jìn)行仲裁者的遞補(bǔ)或是其他應(yīng)變措施。并且,仲裁者端每隔一段時(shí)間即會(huì)同步所有處理器端的狀態(tài)診斷碼,并且在同步之后重新計(jì)算各處理器的優(yōu)先權(quán)分?jǐn)?shù)以重新產(chǎn)生的優(yōu)先權(quán)順序,并且將重新產(chǎn)生的優(yōu)先權(quán)順序更新給各處理器。而當(dāng)仲裁者節(jié)點(diǎn)對應(yīng)的優(yōu)先權(quán)分?jǐn)?shù)超過預(yù)設(shè)的門檻值,則取消現(xiàn)有的仲裁者節(jié)點(diǎn)的資格,并以優(yōu)先權(quán)分?jǐn)?shù)最低的處理器來作為新的仲裁者節(jié)點(diǎn)。仲裁者節(jié)點(diǎn)除了一般使用情況(例如仲裁者節(jié)點(diǎn)被關(guān)機(jī),或是失去心跳(heartbeat)封包)需要遞補(bǔ)仲裁者節(jié)點(diǎn)之外,如果能在仲裁者節(jié)點(diǎn)失去仲裁能力之前就能檢測出來,提早更換仲裁者,這才是一個(gè)穩(wěn)健可靠的系統(tǒng)重要的指標(biāo)。因此,當(dāng)優(yōu)先權(quán)表格中仲裁者節(jié)點(diǎn)的優(yōu)先權(quán)分?jǐn)?shù)不符合標(biāo)準(zhǔn)時(shí),便會(huì)啟動(dòng)仲裁者遞補(bǔ)機(jī)制,由優(yōu)先權(quán)表格中優(yōu)先權(quán)分?jǐn)?shù)最低的處理器遞補(bǔ)為新的仲裁者節(jié)點(diǎn)。圖7是依照本發(fā)明一實(shí)施例的仲裁者遞補(bǔ)機(jī)制的示意圖。在本實(shí)施例中,假設(shè)原本的仲裁者節(jié)點(diǎn)為mpu.a,預(yù)設(shè)的門檻值為150。如圖7所示,原本的仲裁者節(jié)點(diǎn)mpu.a的優(yōu)先權(quán)分?jǐn)?shù)已經(jīng)超過150,故,仲裁者節(jié)點(diǎn)mpu.a會(huì)啟動(dòng)仲裁者遞補(bǔ)機(jī)制,而以優(yōu)先權(quán)表格中優(yōu)先權(quán)分?jǐn)?shù)最低的處理器mpu.b來作為新的仲裁者節(jié)點(diǎn)。又,優(yōu)先權(quán)分?jǐn)?shù)亦可作為啟動(dòng)錯(cuò)誤通報(bào)機(jī)制的依據(jù)。例如,當(dāng)處理器 或共享裝置的優(yōu)先權(quán)分?jǐn)?shù)超過定義的標(biāo)準(zhǔn)閥值,就會(huì)啟動(dòng)錯(cuò)誤通報(bào)機(jī)制,來停止對共享裝置進(jìn)行傳輸或者停止繼續(xù)使用處理器,直到使用者或維護(hù)人員做狀況排除。在新的仲裁者節(jié)點(diǎn)接手之后,對于后續(xù)的優(yōu)先權(quán)分?jǐn)?shù)的計(jì)算具有下列幾種方式。底下以處理器mpu.a作為前一個(gè)仲裁者節(jié)點(diǎn),處理器mpu.b作為新的仲裁者節(jié)點(diǎn)來進(jìn)行說明,然,并不以此為限。新的仲裁者節(jié)點(diǎn)mpu.b可以重新設(shè)定優(yōu)先權(quán)表格,即,不接續(xù)前一個(gè)仲裁者節(jié)點(diǎn)mpu.a所獲得的優(yōu)先權(quán)分?jǐn)?shù),而重新計(jì)算其他各處理器的優(yōu)先權(quán)分?jǐn)?shù)。另外,新的仲裁者節(jié)點(diǎn)mpu.b可沿用前一個(gè)仲裁者節(jié)點(diǎn)mpu.a所建立的優(yōu)先權(quán)表格,以前一個(gè)仲裁者節(jié)點(diǎn)mpu.a所獲得的各處理器的優(yōu)先權(quán)分?jǐn)?shù)來作為初始權(quán)重值,并接續(xù)計(jì)算后續(xù)的優(yōu)先權(quán)分?jǐn)?shù)。即,新的仲裁者節(jié)點(diǎn)mpu.b可將經(jīng)由前一個(gè)仲裁者節(jié)點(diǎn)mpu.a計(jì)算而獲得的各處理器的優(yōu)先權(quán)分?jǐn)?shù),設(shè)定為初始權(quán)重值。之后,沿用公式priority_w=ini_w×(1+state_total_w)來持續(xù)獲得狀態(tài)診斷碼,進(jìn)而更新優(yōu)先權(quán)分?jǐn)?shù)。將先前獲得的優(yōu)先權(quán)分?jǐn)?shù)設(shè)定為初始權(quán)重值的目的在于:可以掌握先前系統(tǒng)架構(gòu)上的使用狀態(tài)。而倘若其中一處理器(例如為處理器mpu.g)的優(yōu)先權(quán)分?jǐn)?shù)持續(xù)上升而超過定義的標(biāo)準(zhǔn)閥值(例如1000)時(shí),仲裁者節(jié)點(diǎn)mpu.b會(huì)發(fā)送一通知信息來通報(bào)使用者,以由使用者來排除處理器mpu.g的問題。在狀況排除后,由已排除問題的處理器mpu.g來發(fā)送一重置指令(例如,重置指令所包括的狀態(tài)診斷碼為0x20)給仲裁者節(jié)點(diǎn)mpu.b,使得仲裁者節(jié)點(diǎn)mpu.b清除處理器mpu.g舊有的優(yōu)先權(quán)分?jǐn)?shù),并且以處理器mpu.g的識(shí)別信息來設(shè)定初始權(quán)重值(參照步驟s305的記載),以重新計(jì)算優(yōu)先權(quán)分?jǐn)?shù)。又,當(dāng)對整個(gè)系統(tǒng)進(jìn)行維修,而修復(fù)完全部分有問題的處理器、共享裝置之后,使用者可直接對仲裁者節(jié)點(diǎn)mpu.b來下達(dá)一清空指令(例如,清空指令所包括的狀態(tài)診斷碼為0x21),以將優(yōu)先權(quán)表格以及診斷碼表格清空。另外,可針對允許使用共享裝置以及不允許使用共享裝置兩種狀況,分別設(shè)定對應(yīng)的狀態(tài)診斷碼。例如,允許使用共享裝置的狀況對應(yīng)的狀態(tài) 診斷碼為0x06,不允許使用共享裝置的狀況對應(yīng)的狀態(tài)診斷碼為0x07。在仲裁者節(jié)點(diǎn)判定允許傳送要求的處理器使用共享裝置時(shí),可在其自己的診斷碼表格對應(yīng)的處理器欄位中記錄0x06,而在判定不允許時(shí)記錄0x07。并且,進(jìn)一步通過微調(diào)狀態(tài)診斷碼0x06與0x07對應(yīng)的狀態(tài)權(quán)重值,解決饑餓(starvation)現(xiàn)象。例如,將狀態(tài)診斷碼0x06的狀態(tài)權(quán)重值設(shè)定為0.01,而狀態(tài)診斷碼0x07的狀態(tài)權(quán)重值設(shè)定0,據(jù)此,在計(jì)算優(yōu)先權(quán)分?jǐn)?shù)時(shí)仲裁者節(jié)點(diǎn)會(huì)基于狀態(tài)診斷碼0x06的狀態(tài)權(quán)重值,而將多次取得共享裝置的使用權(quán)限的處理器的優(yōu)先權(quán)分?jǐn)?shù)提高。這是因?yàn)?,在成功取得共享裝置的使用權(quán)限的處理器相對會(huì)記錄有較多的0x06,因此在計(jì)算優(yōu)先權(quán)分?jǐn)?shù)時(shí)會(huì)提高狀態(tài)權(quán)重值的加總后的數(shù)值,使得優(yōu)先權(quán)分?jǐn)?shù)提高。據(jù)此,讓其他處理器亦能夠取得共享裝置的使用權(quán)限。另外,在取得各處理器在經(jīng)由連線狀態(tài)診斷后所獲得的狀態(tài)診斷信息之前,當(dāng)仲裁者節(jié)點(diǎn)同時(shí)接收到兩個(gè)或兩個(gè)以上處理器各自所傳送欲使用共享裝置的要求時(shí),以各處理器的初始權(quán)重值來決定共享裝置的使用權(quán)限。綜上所述,利用每個(gè)處理器分別與仲裁者節(jié)點(diǎn)及共享裝置之間的傳輸狀態(tài),并且配合各個(gè)處理器的特性來決定優(yōu)先權(quán)順序,可避免在多個(gè)處理器同時(shí)進(jìn)行存取而發(fā)生競爭進(jìn)而導(dǎo)致數(shù)據(jù)不完整,并且解決了存取效率與遞補(bǔ)優(yōu)先順序的問題。依照每一個(gè)處理器的不同,來微調(diào)優(yōu)先權(quán)的判斷機(jī)制,再配合連線診斷機(jī)制來獲得一個(gè)適當(dāng)?shù)膬?yōu)先權(quán)順序。由優(yōu)先權(quán)順序作為各種沖突、問題、遞補(bǔ)等機(jī)制的依據(jù),讓仲裁者端達(dá)到真正的公平而且適當(dāng)?shù)馁Y源分配。由于對每筆傳輸做連線狀態(tài)診斷,而獲得狀態(tài)診斷碼,藉此掌握了每一個(gè)處理器與共享裝置之間的傳輸狀態(tài)。當(dāng)維修人員進(jìn)行維護(hù)時(shí),可參照狀態(tài)診斷碼來獲得問題發(fā)生點(diǎn),以便進(jìn)行狀況排除。雖然本發(fā)明已以實(shí)施例公開如上,然其并非用以限定本發(fā)明,任何所屬
技術(shù)領(lǐng)域:
中技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作些許的變動(dòng)與潤飾,故本發(fā)明的保護(hù)范圍當(dāng)視所附的權(quán)利要求所界定者為準(zhǔn)。當(dāng)前第1頁12