在便攜式計(jì)算裝置中將資源請(qǐng)求分批成事務(wù)及使此事務(wù)分叉的制作方法
【專利摘要】在具有基于節(jié)點(diǎn)的資源架構(gòu)的便攜式計(jì)算裝置中,分批或以其它方式事務(wù)處理資源請(qǐng)求以幫助最小化處理實(shí)體間的消息傳遞或其它消息傳遞,或提供其它益處。在定義架構(gòu)的資源圖中,所述圖的每一節(jié)點(diǎn)或資源表示由處理器或其它處理實(shí)體控制的一或多個(gè)資源的功能性的封裝,每一邊緣表示客戶端請(qǐng)求,且所述圖的鄰近節(jié)點(diǎn)表示資源依賴性。使針對(duì)所述資源中的兩者或兩者以上提供的資源請(qǐng)求的單個(gè)事務(wù)分叉以使得實(shí)現(xiàn)發(fā)出所述單個(gè)事務(wù)的客戶端與處理所述單個(gè)事務(wù)的所述請(qǐng)求的所述資源之間的并行處理。
【專利說明】在便攜式計(jì)算裝置中將資源請(qǐng)求分批成事務(wù)及使此事務(wù)分叉
[0001]優(yōu)先權(quán)及相關(guān)串請(qǐng)案聲明
[0002]本申請(qǐng)案依據(jù)35U.S.C.§ 119(e)主張2011年12月7日申請(qǐng)的標(biāo)題為“在便攜式計(jì)算裝置中分批及分叉資源請(qǐng)求(BATCHING AND FORKING RESOURCE REQUESTS IN APORTABLE COMPUTING DEVICE) ”的第61/567,963號(hào)美國臨時(shí)專利申請(qǐng)案的優(yōu)先權(quán),所述申請(qǐng)案的全部內(nèi)容特此以引用的方式并入。
[0003]另外,本申請(qǐng)案為2010年9月15日申請(qǐng)的標(biāo)題為“用于管理便攜式計(jì)算裝置的資源的系統(tǒng)及方法(SYSTEM AND METHOD FOR MANAGING RESOURCES OF A PORTABLE COMPUTINGDEVICE) ”的第12/882,395號(hào)美國專利申請(qǐng)案的部分接續(xù)申請(qǐng)案,所述申請(qǐng)案的內(nèi)容以引用的方式并入本文中。
【背景技術(shù)】
[0004]便攜式計(jì)算裝置(“PCD”)正逐漸流行。這些裝置可包含蜂窩式電話、便攜式/個(gè)人數(shù)字助理(“PDA”)、便攜式游戲控制臺(tái)、便攜式導(dǎo)航單元、掌上型計(jì)算機(jī)及其它便攜式電子裝置。這些裝置中的每一者可具有主功能。舉例來說,蜂窩式電話通常具有接收及發(fā)射電話呼叫的主功能。
[0005]除了這些裝置的主功能之外,許多裝置包含外圍功能。舉例來說,蜂窩式電話可包含進(jìn)行如上文所描述的蜂窩式電話呼叫的主功能,及靜態(tài)相機(jī)、攝像機(jī)、全球定位系統(tǒng)(“GPS”)導(dǎo)航、網(wǎng)絡(luò)瀏覽、發(fā)送及接收電子郵件、發(fā)送及接收文字消息及一鍵通能力等外圍功能。隨著PCD的功能性增加,支持所述功能性所需要的計(jì)算或處理能力也增加。可通過增加PCD中的處理器的數(shù)目來增加處理能力。隨著處理器的計(jì)算能力及數(shù)目增加,對(duì)有效地管理處理器存在更大的需求。
[0006] 例如上文所描述的功能等功能可體現(xiàn)于可被稱作資源的各種對(duì)應(yīng)硬件及軟件元件中。處理器可在例如應(yīng)用程序等軟件的控制下在各種時(shí)間請(qǐng)求各種資源。在多處理器PCD中,第一處理器可控制不同于由第二處理器控制的資源的資源。然而,第一處理器可需要能夠請(qǐng)求由第二處理器控制的資源。
【發(fā)明內(nèi)容】
[0007]用于在具有多個(gè)資源的便攜式計(jì)算裝置中分批或以其它方式事務(wù)處理資源請(qǐng)求的方法及系統(tǒng)可幫助最小化處理器間消息傳遞或其它消息傳遞,或提供其它益處。在具有基于節(jié)點(diǎn)的軟件架構(gòu)的便攜式計(jì)算裝置中,資源可包含于節(jié)點(diǎn)中。在示范性方法中,實(shí)例化多個(gè)節(jié)點(diǎn)。節(jié)點(diǎn)的多個(gè)資源可由有向非循環(huán)圖來定義。所述圖的每一節(jié)點(diǎn)或資源表示由處理器或其它處理實(shí)體控制的一或多個(gè)資源的功能性的封裝。所述圖的每一邊緣表示客戶端請(qǐng)求。所述圖的鄰近節(jié)點(diǎn)表示資源依賴性。根據(jù)示范性方法,可提供對(duì)資源中的兩者或兩者以上的資源請(qǐng)求的單個(gè)事務(wù)。
[0008]另外,可使資源請(qǐng)求的此單個(gè)事務(wù)分叉以使得可能發(fā)生并行處理。舉例來說,在分叉事務(wù)的情況下,發(fā)出資源請(qǐng)求的單個(gè)事務(wù)的客戶端可繼續(xù)運(yùn)行,發(fā)出其它請(qǐng)求或執(zhí)行一些其它處理,而不要等待事務(wù)完成,即等待由資源服務(wù)的事務(wù)內(nèi)所發(fā)出的請(qǐng)求。接收及負(fù)責(zé)事務(wù)中的請(qǐng)求的資源可與客戶端繼續(xù)運(yùn)行并行地處理這些請(qǐng)求,如上文所描述。
【專利附圖】
【附圖說明】
[0009]在圖中,各圖中相同參考數(shù)字始終指代相同部分,除非另有指示。對(duì)于具有例如“102A”或“102B”等字母字符標(biāo)記的參考數(shù)字,字母字符標(biāo)記可以區(qū)分同一圖中存在的兩個(gè)相同部分或元件。當(dāng)意欲參考數(shù)字包含在所有圖中具有相同參考數(shù)字的所有部分時(shí),可省略參考數(shù)字的字母字符標(biāo)記。
[0010]圖1為說明用于便攜式計(jì)算裝置(“PCD”)中的分布式資源管理的系統(tǒng)的示范性元件的功能框圖;
[0011]圖2為說明第一處理器需要請(qǐng)求由第二處理器控制的資源的情況的實(shí)例的功能框圖;
[0012]圖3為管理P⑶的資源的節(jié)點(diǎn)架構(gòu)的第一方面的圖;
[0013]圖4為用于P⑶的示范性資源的群組的有向非循環(huán)資源圖;
[0014]圖5為管理P⑶的資源的節(jié)點(diǎn)架構(gòu)的第二方面的總圖;
[0015]圖6為管理P⑶的資源的節(jié)點(diǎn)架構(gòu)的第二方面的具體圖;
[0016]圖7為說明用于創(chuàng)建用于管理PCD的資源的節(jié)點(diǎn)架構(gòu)的方法的流程圖;
[0017]圖8為說明用于創(chuàng)建用于管理PCD的資源的節(jié)點(diǎn)架構(gòu)的方法的圖7的延續(xù)流程圖;
[0018]圖9為說明用于接收PCD的軟件架構(gòu)中的節(jié)點(diǎn)結(jié)構(gòu)數(shù)據(jù)的圖7到8的子方法或例程的流程圖;
[0019]圖10為說明用于創(chuàng)建PCD的軟件架構(gòu)中的節(jié)點(diǎn)的圖7到8的子方法或例程的流程圖;
[0020]圖11為說明用于創(chuàng)建PCD的軟件架構(gòu)中的客戶端的圖10的子方法或例程的流程圖;
[0021]圖12為說明用于創(chuàng)建對(duì)PCD的軟件架構(gòu)中的資源的客戶端請(qǐng)求的方法的流程圖;
[0022]圖13說明兩個(gè)處理器之間的通信路徑,所述兩個(gè)處理器各自控制其自身資源圖的資源;
[0023]圖14為說明用于創(chuàng)建用于管理PCD的資源的節(jié)點(diǎn)架構(gòu)的方法的另一流程圖,其中資源中的一些為分布式資源;
[0024]圖15為說明用于創(chuàng)建對(duì)PCD的軟件架構(gòu)中的分布式資源的客戶端請(qǐng)求的方法的
另一流程圖;
[0025]圖16為說明用于處理對(duì)P⑶的軟件架構(gòu)中的非代理分布式資源的狀態(tài)查詢的方法的流程圖;
[0026]圖17A為說明用于處理對(duì)P⑶的軟件架構(gòu)中的非代理分布式資源的狀態(tài)查詢的方法的第一部分的流程圖;
[0027]圖17B為說明用于處理對(duì)P⑶的軟件架構(gòu)中的非代理分布式資源的狀態(tài)查詢的方法的第二部分的流程圖。
[0028]圖18為說明用于分批或事務(wù)處理多個(gè)資源請(qǐng)求的方法的流程圖。
[0029]圖19為示范性資源圖,其中圖拓?fù)渑懦梨i條件。
[0030]圖20為另一示范性資源圖,其中圖拓?fù)洳慌懦梨i條件。
[0031]圖21為說明發(fā)生死鎖的情況的示范性事件時(shí)間線。
[0032]圖22為說明保守式鎖定方法防止死鎖的情況的另一示范性事件時(shí)間線。
[0033]圖23為說明資源用來處理可為資源請(qǐng)求事務(wù)的部分的資源請(qǐng)求的方法的流程圖。
[0034]圖24為展示用于管理便攜式計(jì)算裝置中的分批及分叉資源請(qǐng)求的方法及系統(tǒng)的實(shí)施例的操作的時(shí)間線圖。
【具體實(shí)施方式】
[0035]詞“示范性”在本文中用以意謂“充當(dāng)實(shí)例、例項(xiàng)或說明”。本文中描述為“示范性”的任何方面不一定要解釋為相比其它方面優(yōu)選或有利。
[0036]在此描述中,術(shù)語“應(yīng)用程序”還可包含具有可執(zhí)行內(nèi)容的文件,例如:目標(biāo)代碼、腳本、字節(jié)代碼、標(biāo)記語言文件及補(bǔ)丁。另外,本文中所指代的“應(yīng)用程序”還可包括本質(zhì)上不可執(zhí)行的文件,例如可能需要打開的文檔或其它需要存取的數(shù)據(jù)文件。
[0037]術(shù)語“內(nèi)容”還可包含具有可執(zhí)行內(nèi)容的文件,例如:目標(biāo)代碼、腳本、字節(jié)代碼、標(biāo)記語言文件及補(bǔ)丁。另外,本文中所提到的“內(nèi)容”還可包括本質(zhì)上不可執(zhí)行的文件,例如可能需要打開的文檔或其它需要存取的數(shù)據(jù)文件。
[0038]如此描述中所使用,術(shù)語“組件”、“數(shù)據(jù)庫”、“模塊”、“系統(tǒng)”等等意欲指計(jì)算機(jī)相關(guān)實(shí)體,即硬件、固件、硬件與軟件的組合、軟件或執(zhí)行軟件。舉例來說,組件可為(但不限于為)在處理器上運(yùn)行的進(jìn)程、處理器、對(duì)象、可執(zhí)行程序、執(zhí)行線程、程序及/或計(jì)算機(jī)。作為說明,運(yùn)行于計(jì)算裝置上的應(yīng)用程序及計(jì)算裝置兩者可為組件。一個(gè)或一個(gè)以上組件可駐存在進(jìn)程和/或執(zhí)行線程內(nèi),且組件可位于一個(gè)計(jì)算機(jī)上且/或分布在兩個(gè)或兩個(gè)以上計(jì)算機(jī)之間。另外,這些組件可從各種計(jì)算機(jī)可讀媒體處執(zhí)行,所述計(jì)算機(jī)可讀媒體具有存儲(chǔ)于其上的各種數(shù)據(jù)結(jié)構(gòu)。所述組件可例如根據(jù)具有一個(gè)或一個(gè)以上數(shù)據(jù)包的信號(hào)(例如,來自借助于所述信號(hào)與局域系統(tǒng)、分布式系統(tǒng)中的另一組件交互及/或跨越例如因特網(wǎng)等網(wǎng)絡(luò)而與其它系統(tǒng)交互的一個(gè)組件的數(shù)據(jù))借助于本地及/或遠(yuǎn)程處理而通信。
[0039]在此描述中,可互換地使用術(shù)語“通信裝置”、“無線裝置”、“無線電話”、“無線通信裝置”及“無線手持機(jī)”。隨著第三代(“3G”)及第四代(“4G”)無線技術(shù)的到來,更大帶寬可用性使得更多便攜式計(jì)算裝置能夠具有更多種類的無線能力。
[0040]在此描述中,術(shù)語“便攜式計(jì)算裝置”(“PCD”)用以描述操作于有限容量電力供應(yīng)器(例如,電池)上的任何裝置。盡管電池操作PCD已使用了數(shù)十年,但可再充電電池的技術(shù)進(jìn)展加上第三代(“3G”)及第四代(“4G”)無線技術(shù)的到來使得眾多PCD能夠具有多種能力。因此,P⑶可為蜂窩式電話、衛(wèi)星電話、尋呼機(jī)、個(gè)人數(shù)字助理(“PDA”)、智能手機(jī)、導(dǎo)航裝置、智能本或閱讀器、媒體播放器、前述裝置的組合及具有無線連接的膝上型計(jì)算機(jī)
坐坐寸寸ο
[0041]圖1為用于實(shí)施用于便攜式計(jì)算裝置中的分布式資源管理的方法及系統(tǒng)的呈無線電話形式的PCDlOO的示范性非限制方面的功能框圖。如圖所示,PCDlOO包含芯片上系統(tǒng)102,其具有多核心中央處理單元(“CPU”)110A、圖形處理器IlOB及模擬信號(hào)處理器126。這些處理器110A、110B、126可在一或多個(gè)系統(tǒng)總線或另一互連架構(gòu)上耦合在一起,如所屬領(lǐng)域的一般技術(shù)人員所知的。
[0042]CPUl IOA可包括第零核心222、第一核心224等到第N核心226,如所屬領(lǐng)域的一般技術(shù)人員所理解。在替代實(shí)施例中,替代CPU110A及圖形處理器110B,還可使用一或多個(gè)數(shù)字信號(hào)處理器(“DSP”),如所屬領(lǐng)域的一般技術(shù)人員所理解。另外,在替代實(shí)施例中,可包含兩個(gè)或兩個(gè)以上多核心處理器。
[0043]如圖1中所說明,顯示控制器128及觸摸屏控制器130耦合到多核心CPU110A。在芯片上系統(tǒng)102外部的觸摸屏顯示器132耦合到顯示控制器128及觸摸屏控制器130。P⑶100中也包含視頻譯碼器/解碼器(“編解碼器”)134,例如逐行倒相(“PAL”)編碼器、順序與存儲(chǔ)彩色電視系統(tǒng)(“SECAM”)編碼器、國家電視系統(tǒng)委員會(huì)(“NTSC”)編碼器或耦合到多核心中央處理單元(“CPU”)IlOA的任何其它類型的視頻編碼器134。視頻放大器136耦合到視頻編碼器134及觸摸屏顯示器132。視頻端口 138耦合到視頻放大器136。如圖2中所描繪,通用串行總線(“USB”)控制器140耦合到CPU110Ao而且,USB端口 142耦合到USB控制器140。訂戶身份模塊(SIM)卡146還可耦合到CPU110A。另外,如圖1中所示,數(shù)碼相機(jī)148可耦合到CPU110A。在示范性方面中,數(shù)碼相機(jī)148為電荷耦合裝置(“CXD”)相機(jī)或互補(bǔ)金屬氧化物半導(dǎo)體(“CMOS”)相機(jī)。
[0044]如圖1中進(jìn)一步說明,立體聲音頻C0DEC150可耦合到模擬信號(hào)處理器126。此外,音頻放大器152可耦合到立體聲音頻C0DEC150。在示范性方面中,第一立體聲揚(yáng)聲器154及第二立體聲揚(yáng)聲器156耦合到音頻放大器152。圖1展示麥克風(fēng)放大器158也可耦合到立體聲音頻C0DEC150。另外,麥克風(fēng)160可耦合到麥克風(fēng)放大器158。在特定方面中,調(diào)頻(“FM”)收音機(jī)調(diào)諧器162可耦合到立體聲音頻C0DEC150。而且,F(xiàn)M天線164耦合到FM收音機(jī)調(diào)諧器162。另外,立體聲頭戴受話器166可耦合到立體聲音頻C0DEC150。
[0045]圖1進(jìn)一步指示射頻(“RF”)收發(fā)器168可耦合到模擬信號(hào)處理器126。RF開關(guān)170可耦合到RF收發(fā)器168及RF天線172。如圖1中所示,小鍵盤174可耦合到模擬信號(hào)處理器126。而且,具有麥克風(fēng)的單聲道頭戴耳機(jī)176可耦合到模擬信號(hào)處理器126。另夕卜,振動(dòng)器裝置178可耦合到模擬信號(hào)處理器126。圖1還展示耦合到芯片上系統(tǒng)102的電力供應(yīng)器180,例如電池。在特定方面中,電力供應(yīng)器180包含從連接到AC電源的交流(“AC”)到DC變壓器導(dǎo)出的可再充電電池或直流(“DC”)電力供應(yīng)器。
[0046]P⑶100的上文所描述的元件中的一些可包括硬件,而另一些可包括軟件,且又一些可包括硬件與軟件的組合。術(shù)語“資源”在本文中用以指可由處理器控制的任何此類元件,不論是硬件、軟件還是其組合。資源可在一方面中經(jīng)定義為此元件的功能性的封裝。除了可以其它方式指示術(shù)語“處理器”情況之外,所述術(shù)語“處理器”在本文中用以指例如CPU110、圖形處理器110B、模擬信號(hào)處理器126等處理器或指在軟件、固件或類似控制邏輯的控制之下操作的任何其它處理器、控制器或類似元件。對(duì)兩個(gè)或兩個(gè)以上“處理實(shí)體”的參考包含在不同芯片上的處理器、同一處理器芯片的不同處理核心、同一核心上的執(zhí)行線程或其間可存在數(shù)據(jù)傳送損失或效率不高的任何其它處理實(shí)體。
[0047]如下文更詳細(xì)所描述,資源的實(shí)例為執(zhí)行于處理器上的軟件元件。處理器上的執(zhí)行線程(例如,與執(zhí)行應(yīng)用程序相關(guān)的線程)可通過致使在資源上發(fā)出“請(qǐng)求”來存取資源。如下文所描述,經(jīng)由在本發(fā)明中被稱作“框架”的基于軟件的系統(tǒng)來處理資源請(qǐng)求。術(shù)語“客戶端”在本發(fā)明中寬泛地用以指影響請(qǐng)求資源的功能的元件。因此,在本文中使用所述術(shù)語時(shí),線程可出于發(fā)出資源請(qǐng)求的目的創(chuàng)建或利用客戶端。在一些情況下,應(yīng)注意資源可創(chuàng)建或使用客戶端,以使得資源可致使發(fā)出對(duì)另一資源的資源請(qǐng)求。如下文更詳細(xì)所描述,所述其它資源可在本文中被稱作“依賴”資源,這是歸因于請(qǐng)求資源與被請(qǐng)求資源之間的依賴性關(guān)系。資源及客戶端可由存儲(chǔ)器中的數(shù)據(jù)結(jié)構(gòu)表示。
[0048]因?yàn)橘Y源是由多處理器P⑶100中的特定處理器控制的,所以并非P⑶100中的每一處理器能存取P⑶100中的每一資源。圖2說明P⑶100中的第一處理器202可需要發(fā)出對(duì)由P⑶100中的第二處理器206控制的資源204的資源請(qǐng)求203的情況的實(shí)例。應(yīng)注意,第一處理器202也可控制多個(gè)資源205。同樣,第二處理器206可控制多個(gè)額外資源207。
[0049]在第一處理器202正執(zhí)行與例如視頻播放器應(yīng)用程序有關(guān)的線程208的情況下,線程208可需要調(diào)整第一處理器202的一或多個(gè)操作參數(shù),這增強(qiáng)了第一處理器202的性能。(盡管線程208及資源204概念上出于清楚的目的被說明成駐存在其相應(yīng)資源202及206中,但所屬領(lǐng)域的一般技術(shù)人員會(huì)理解此些元件由處理器的存儲(chǔ)器空間中的處理器根據(jù)充分理解的計(jì)算原理執(zhí)行或以其它方式操作。)此些操作參數(shù)可包含例如時(shí)鐘速度及總線速度。舉例來說,各種處理器可使用相同總線時(shí)鐘,但處理器中的僅一者可直接(硬件級(jí))控制總線時(shí)鐘。增加時(shí)鐘速度可導(dǎo)致例如視頻播放器應(yīng)用程序的較佳性能,這是因?yàn)橐曨l的播放通常為比一些其它任務(wù)更處理能力密集的任務(wù)。因?yàn)樘幚砟芰νǔ1磉_(dá)成每秒百萬指令(“MIPS”),所以線程208可發(fā)出對(duì)特定數(shù)目的MIPS的呼叫。資源電力管理器204可包含算法,其響應(yīng)于對(duì)指定數(shù)目的MIPS的請(qǐng)求而導(dǎo)致信號(hào)210改變,所述信號(hào)可表示時(shí)鐘速度、總線速度或促使第一處理器202在請(qǐng)求的MIPS級(jí)處操作的其它參數(shù)。
[0050]線程可有可能經(jīng)由總線或協(xié)議所特有的應(yīng)用程序編程接口(API)存取資源電力管理器204,第一處理器202可經(jīng)由所述總線或接口與第二處理器206通信。然而,下文所描述的框架可提供比資源特定及總線特定API更統(tǒng)一的方式來處理資源請(qǐng)求。如下文所描述,經(jīng)由框架以統(tǒng)一方式來發(fā)出及服務(wù)資源請(qǐng)求,而不考慮請(qǐng)求是針對(duì)由發(fā)出資源請(qǐng)求的相同處理器控制的資源還是針對(duì)由不同處理器控制的資源。由發(fā)出資源請(qǐng)求的相同處理器控制的資源可被稱作“本地”資源。由除了發(fā)出資源請(qǐng)求的處理器之外的處理器控制的資源可在本文中被稱作“遠(yuǎn)程資源”或“分布式資源”。
[0051]另外,發(fā)出對(duì)遠(yuǎn)程資源的請(qǐng)求會(huì)招致呈時(shí)間延遲或時(shí)延形式的處理開銷。S卩,與處理器之間待發(fā)送的資源請(qǐng)求有關(guān)的一或多個(gè)消息需要特定的時(shí)間量。在一些情況下,單個(gè)資源請(qǐng)求可產(chǎn)生多個(gè)處理器間消息。本說明書中所描述的資源請(qǐng)求分批特征可在一些情況下幫助最小化處理器間消息的數(shù)目。
[0052]圖3為包括表示P⑶100的軟件或硬件(或兩者)的功能框的圖。線“A”左邊的框表示由CPU110A控制的TCDlOO的資源。此些資源可包含:CPU110A自身,其通常也被稱作第一硬件元件(硬件元件#1) ;CPU110A的時(shí)鐘442,其通常也被稱作第二硬件元件(硬件元件#2);總線仲裁器或調(diào)度器422,其通常也被稱作第三硬件元件(硬件元件#3);總線程序A-444A,其通常也被稱作第一軟件元件(軟件元件#1);總線程序B-444B,其通常也被稱作第二軟件元件(軟件元件#2);時(shí)鐘程序AHB,其通常也被稱作第三軟件元件(軟件元件#3);及由軟件元件監(jiān)視的動(dòng)作或功能,其通常被指示為按鍵448。CPU110A控制或存取上文所參考的資源,因?yàn)橘Y源在CPUlIOA的存儲(chǔ)器空間內(nèi),且不存在將禁止CPUlIOA存取所述資源的其它限制,例如安全限制。舉例來說,CPU110A可能夠控制或存取所述資源的硬件寄存器。應(yīng)注意,PCD100可包含控制或存取除了上文所參考的資源之外的資源的其它CPUl 10 (見例如圖2)。
[0053]可包括計(jì)算機(jī)指令庫的框架管理器440管理封裝資源的功能性的節(jié)點(diǎn)。即,可存取節(jié)點(diǎn)以間接地存取資源。為了便利起見,封裝資源的功能性的節(jié)點(diǎn)可在本文中被稱作包含、包括、具有(等)資源。每一節(jié)點(diǎn)可包含一或多個(gè)資源。節(jié)點(diǎn)可以軟件代碼、固件或類似媒體來定義,且在PCD100的操作期間實(shí)例化為例如存儲(chǔ)器112 (圖1)中的數(shù)據(jù)結(jié)構(gòu)。節(jié)點(diǎn)601可在啟動(dòng)、加電、初始化、開機(jī)等序列期間或在PCD100的操作期間的任何其它合適時(shí)間實(shí)例化。應(yīng)注意,本文中對(duì)實(shí)例化、發(fā)出請(qǐng)求或以其它方式與資源交互的參考應(yīng)理解為意謂與包含所述資源的節(jié)點(diǎn)交互。對(duì)于本發(fā)明的剩余部分,一般或非特定節(jié)點(diǎn)將用參考數(shù)字601來表示,如下文參看圖5所描述。
[0054]舉例來說,節(jié)點(diǎn)601可包含具有通常對(duì)應(yīng)于第一硬件元件或中央處理單元110的單個(gè)資源的第一節(jié)點(diǎn)602。在本發(fā)明中所描述的軟件架構(gòu)的情況下,節(jié)點(diǎn)601的每一資源可具備包括一或多個(gè)字母數(shù)字字符的獨(dú)特名稱。在圖3中所說明的示范性實(shí)施例中,將資源名稱“/core/cpu”指派給第一節(jié)點(diǎn)602的資源。此示范性資源名稱通常對(duì)應(yīng)于所屬領(lǐng)域的一般技術(shù)人員所已知的常規(guī)文件命名結(jié)構(gòu)。然而,如所屬領(lǐng)域的一般技術(shù)人員所認(rèn)識(shí)到,含有字母數(shù)字字符及/或符號(hào)的任何其它組合的其它類型的資源名稱恰當(dāng)?shù)卦诒景l(fā)明的范圍內(nèi)。
[0055]舉例來說,節(jié)點(diǎn)601可進(jìn)一步包含具有多個(gè)資源的第二節(jié)點(diǎn)622。在此示范性實(shí)施例中,第二節(jié)點(diǎn)622具有包括對(duì)應(yīng)于總線仲裁器或調(diào)度器422的單個(gè)硬件元件的第一資源。第二節(jié)點(diǎn)622的第二資源包括通常對(duì)應(yīng)于總線程序A444A的第一軟件元件的軟件元件。第二節(jié)點(diǎn)622的第三資源包括通常對(duì)應(yīng)于總線程序B444B的第二軟件元件的另一軟件元件。所屬領(lǐng)域的一般技術(shù)人員認(rèn)識(shí)到給定節(jié)點(diǎn)601的資源及資源類型的任何組合及任何數(shù)目恰當(dāng)?shù)卦诒景l(fā)明的范圍內(nèi)。
[0056]圖3還說明通常對(duì)應(yīng)于兩個(gè)軟件元件448、450的動(dòng)作或功能的第一客戶端648。在圖3中所說明的示范性實(shí)施例中,第一客戶端648通常對(duì)應(yīng)于按鍵動(dòng)作,所述按鍵動(dòng)作可在由便攜式計(jì)算裝置100支持的特定應(yīng)用程序模塊105內(nèi)發(fā)生。然而,所屬領(lǐng)域的一般技術(shù)人員認(rèn)識(shí)到,軟件元件的除了按鍵之外的其它動(dòng)作及/或功能恰當(dāng)?shù)卦诒景l(fā)明的范圍內(nèi)。下文將結(jié)合圖11來描述關(guān)于客戶端請(qǐng)求648及其相應(yīng)創(chuàng)建的其它細(xì)節(jié)。
[0057]圖3還說明特定架構(gòu)元件之間的關(guān)系。舉例來說,圖3說明客戶端648與第一節(jié)點(diǎn)602之間的關(guān)系。特定來說,第一客戶端648可產(chǎn)生用虛線說明的客戶端請(qǐng)求675A,所述客戶端請(qǐng)求由包括資源“/core/cpu”的第一節(jié)點(diǎn)602管理或處理。通常,存在預(yù)定或設(shè)定數(shù)目個(gè)類型的客戶端請(qǐng)求675。下文將結(jié)合圖11更詳細(xì)描述客戶端請(qǐng)求675。
[0058]圖3中所顯示的其它關(guān)系包含用虛線680說明的依賴性。依賴性為另一節(jié)點(diǎn)601的相應(yīng)資源之間的關(guān)系。依賴性關(guān)系通常指示第一資源(A)依賴于可將信息提供給第一資源(A)或?qū)嵤┠骋恍袨榈牡诙Y源(B)。此信息可為由第二資源(B)執(zhí)行的操作的結(jié)果,或所述信息可僅包括由第一資源(A)所需要的狀態(tài)信息,或其任何組合。第一資源(A)及第二資源(B)可為相同節(jié)點(diǎn)601的部分,或其可為不同節(jié)點(diǎn)601的部分。應(yīng)注意,客戶端請(qǐng)求675可不僅源于執(zhí)行線程(例如在上文所描述的按鍵動(dòng)作的實(shí)例中),而且源于其它節(jié)點(diǎn)601。為了從依賴節(jié)點(diǎn)601獲得信息或行為,節(jié)點(diǎn)601可將客戶端請(qǐng)求675發(fā)出到其依賴節(jié)點(diǎn)601。因此,指示依賴性的虛線680還可指示潛在客戶端請(qǐng)求675的方向。
[0059]在圖3中,第一節(jié)點(diǎn)602依賴于第二節(jié)點(diǎn)622,如由依賴性箭頭680B所指示,所述依賴性箭頭源起第一節(jié)點(diǎn)602且伸展到第二節(jié)點(diǎn)622。圖3還說明第一節(jié)點(diǎn)602還依賴于第三節(jié)點(diǎn)642,如依賴性箭頭680A所說明。圖3還說明第二節(jié)點(diǎn)622依賴于第四節(jié)點(diǎn)646,如依賴性箭頭680C所說明。所屬領(lǐng)域的一般技術(shù)人員認(rèn)識(shí)到,用圖3的虛線箭頭說明的依賴性680本質(zhì)上僅為示范性的,且相應(yīng)節(jié)點(diǎn)601之間的依賴性的其它組合在本發(fā)明的范圍內(nèi)。
[0060]框架管理器440負(fù)責(zé)維持上文所描述的關(guān)系,其包含,但不限于,圖3中所說明的客戶端請(qǐng)求675及依賴性680。例如依賴性等一些此類關(guān)系借助于資源及其節(jié)點(diǎn)601已被定義于PCD100中的軟件代碼中的方式在PCD啟動(dòng)時(shí)間(即,加電、初始化、開機(jī)等)處存在,框架管理器440在所述啟動(dòng)時(shí)間處存取所述軟件代碼以開始節(jié)點(diǎn)實(shí)例化過程。例如客戶端請(qǐng)求675等其它此類關(guān)系在已實(shí)例化節(jié)點(diǎn)601之后(例如在應(yīng)用程序調(diào)用資源的應(yīng)用程序線程的執(zhí)行期間)出現(xiàn)。不管客戶端請(qǐng)求675是源自除了節(jié)點(diǎn)601之外的執(zhí)行應(yīng)用程序線程或類似元件(例如,客戶端請(qǐng)求675A)還是源自節(jié)點(diǎn)601,皆經(jīng)由框架管理器440引導(dǎo)客戶端請(qǐng)求675??蚣芄芾砥?40引導(dǎo)節(jié)點(diǎn)601之間的信息的傳送。概念上,框架管理器440充當(dāng)矩陣,經(jīng)由所述矩陣多個(gè)線程可基本上與節(jié)點(diǎn)601并發(fā)通信。盡管不同線程可涉及不同數(shù)據(jù),但相同框架管理器軟件代碼可服務(wù)不同線程。
[0061]如下文更詳細(xì)所描述,節(jié)點(diǎn)601的依賴節(jié)點(diǎn)一經(jīng)實(shí)例化(即,當(dāng)已解決任何給定節(jié)點(diǎn)601的依賴性680時(shí)),框架管理器440就可實(shí)例化所述節(jié)點(diǎn)??蚣芄芾砥?40試圖實(shí)例化已定義于PCD100的軟件架構(gòu)中的所有節(jié)點(diǎn)601。當(dāng)支持依賴性的資源存在或處于用于處理與依賴性680有關(guān)的信息的準(zhǔn)備狀態(tài)時(shí)完成或解決依賴性680。
[0062]舉例來說,如果尚未實(shí)例化包括單個(gè)資源“/clk/cpu”的第三節(jié)點(diǎn)642,那么包括單個(gè)資源“/core/cpu”的第一節(jié)點(diǎn)602可不由框架管理器440實(shí)例化,這是由于第一節(jié)點(diǎn)602與第三節(jié)點(diǎn)642之間存在的依賴性關(guān)系680A。一旦第三節(jié)點(diǎn)642已由框架管理器440實(shí)例化,那么框架管理器440可實(shí)例化第二節(jié)點(diǎn)602,這是由于依賴性關(guān)系680A。
[0063]如果框架管理器440不能夠?qū)嵗囟ü?jié)點(diǎn)601 (因?yàn)槠湟蕾囆?80中的一或多者不完成或未被解決),那么框架管理器440將繼續(xù)運(yùn)行或執(zhí)行對(duì)應(yīng)于成功實(shí)例化的所述節(jié)點(diǎn)601的步驟??蚣芄芾砥?40通常將跳過對(duì)特定節(jié)點(diǎn)601的呼叫(其可能歸因于尚未創(chuàng)建依賴資源的不完整依賴性而不存在),且將反映所述不完整狀態(tài)的消息傳回到所述呼
口 H。
[0064]在例如圖1中所說明的多核心環(huán)境中,框架管理器440可在單獨(dú)核心(例如,圖1的第O、第一及第N核心222、224及226)上創(chuàng)建或?qū)嵗?jié)點(diǎn)601。只要節(jié)點(diǎn)601不依賴于彼此且如果如下文所描述的特定節(jié)點(diǎn)的對(duì)應(yīng)依賴性全部完成,那么通常可在多核心環(huán)境中在單獨(dú)核心上且并行地創(chuàng)建節(jié)點(diǎn)601。在多處理器環(huán)境中,可在各種處理器(例如,圖1的CPUl 10A、圖形處理器IlOB等)上創(chuàng)建或?qū)嵗?jié)點(diǎn)601。即,一些節(jié)點(diǎn)601可存在于一個(gè)處理器的存儲(chǔ)器空間中,而另一些節(jié)點(diǎn)601可存在于另一處理器的存儲(chǔ)器空間中。然而,應(yīng)注意僅經(jīng)由框架管理器440,一個(gè)處理器上的節(jié)點(diǎn)601可不由另一處理器上的節(jié)點(diǎn)601存取。
[0065]類似于上文所描述(主要)框架管理器440的遠(yuǎn)程框架管理器300可與框架管理器440并列存在,且作為對(duì)框架管理器440的擴(kuò)展。遠(yuǎn)程框架管理器300與框架管理器440協(xié)作或合作以協(xié)調(diào)不同處理器上的節(jié)點(diǎn)601之間的處理器間信息傳送。即,在所涉及的節(jié)點(diǎn)601存在于不同處理器上的情況下,遠(yuǎn)程框架管理器300幫助框架管理器440維持上文所描述的關(guān)系(例如,依賴性及客戶端請(qǐng)求)。因此,經(jīng)由框架管理器440及300的組合效果,一個(gè)處理器上的節(jié)點(diǎn)601可不呈現(xiàn)為可由另一處理器上的節(jié)點(diǎn)601存取。此外,框架管理器440及300的組合可執(zhí)行在本文中歸結(jié)于框架管理器440的所有功能,不管所涉及的節(jié)點(diǎn)601是存在于相同處理器上還是不同處理器上。在所述多處理器實(shí)施例中,框架管理器300及440所包括的軟件的個(gè)別復(fù)本可駐存在處理器中的每一者的域中。因此,每一處理器能存取相同框架管理器軟件。
[0066]圖4方便地以有向非循環(huán)圖(“DAG”)400的形式重新組織上文所描述的節(jié)點(diǎn)602、622、642及646。圖400為定義上文所描述的軟件架構(gòu)的另一方式。在圖論的詞典中,圖400的頂點(diǎn)對(duì)應(yīng)于節(jié)點(diǎn)601,圖400的邊緣對(duì)應(yīng)于客戶端請(qǐng)求675,且鄰近節(jié)點(diǎn)或頂點(diǎn)表示資源依賴性。所屬領(lǐng)域的一般技術(shù)人員將認(rèn)識(shí)到,圖400由于依賴性而為有向圖且為非循環(huán)的,這是因?yàn)榭蚣芄芾砥?40防止定義資源A依賴于資源B且資源B依賴于資源A的循環(huán)。即,框架管理器440將不實(shí)例化經(jīng)(錯(cuò)誤地)定義為依賴于彼此的兩個(gè)節(jié)點(diǎn)601。圖的非循環(huán)性質(zhì)對(duì)防止死鎖來說是重要的,這是因?yàn)?如下文所描述)每一節(jié)點(diǎn)601在其被存取時(shí)被鎖定(從事務(wù)處理的意義上說)。如果兩個(gè)節(jié)點(diǎn)601將依賴于彼此(在第二線程將存取及鎖定這些兩個(gè)節(jié)點(diǎn)601中的一者的同時(shí)第一線程將存取及鎖定這些兩個(gè)節(jié)點(diǎn)601中的另一者的情況下),那么兩個(gè)線程將掛斷。然而,在軟件開發(fā)者或在定義軟件架構(gòu)中所涉及的其它這樣的人認(rèn)為需要在軟件架構(gòu)中定義依賴于彼此的兩個(gè)資源的相當(dāng)稀少情況下,兩個(gè)(或兩個(gè)以上)資源可包含于彼此相同的節(jié)點(diǎn)601中。相同節(jié)點(diǎn)中的兩個(gè)資源將共享相同鎖定狀態(tài)。至少部分出于此原因,軟件開發(fā)者或其它這樣的人可選擇在架構(gòu)中定義復(fù)數(shù)資源節(jié)點(diǎn),例如節(jié)點(diǎn)622。
[0067]盡管本發(fā)明可出于清楚及方便的目的參考“節(jié)點(diǎn)”601而非節(jié)點(diǎn)601的“資源”,但應(yīng)理解客戶端請(qǐng)求可被引導(dǎo)到指定資源而非節(jié)點(diǎn)。換句話說,從客戶端或客戶端請(qǐng)求的其它發(fā)布人(例如,另一節(jié)點(diǎn)601)的角度來看,如上文所描述可為封裝一或多個(gè)資源的功能性的數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn)601可為透明的。從客戶端的角度來看,發(fā)出對(duì)資源而非對(duì)節(jié)點(diǎn)的請(qǐng)求。同樣,從客戶端的角度來看,架構(gòu)的狀態(tài)查詢、事件或其它元素與資源而非節(jié)點(diǎn)相關(guān)聯(lián)。
[0068]例如示范圖400等資源圖用于理解根據(jù)下文關(guān)于圖6到10所描述的依賴性的節(jié)點(diǎn)601的實(shí)例化。例如節(jié)點(diǎn)642及646等葉節(jié)點(diǎn)在非葉節(jié)點(diǎn)之前實(shí)例化,因?yàn)槿~節(jié)點(diǎn)不具有依賴性。一般來說,節(jié)點(diǎn)601必須在依賴于其的節(jié)點(diǎn)可經(jīng)實(shí)例化之前實(shí)例化。此外,可看到服務(wù)資源請(qǐng)求對(duì)應(yīng)于遍歷有向非循環(huán)圖,其中頂點(diǎn)對(duì)應(yīng)于節(jié)點(diǎn)601,邊緣對(duì)應(yīng)于客戶端請(qǐng)求675,且鄰近節(jié)點(diǎn)或頂點(diǎn)表示資源依賴性。
[0069]在多處理器P⑶100中,第一處理器可存取或能夠控制第一資源圖中的節(jié)點(diǎn)601的第一集合,而第二處理器可存取或能夠控制第二資源圖中的節(jié)點(diǎn)601的第二集合,其中第一及第二資源圖不共享任何資源,即其為互斥的資源圖。即,在所述環(huán)境中,每一處理器具有其自身的資源圖,所述資源圖定義資源及不可由其它處理器存取的其它元件之間的關(guān)系。本發(fā)明的分布式資源管理涉及在兩個(gè)或兩個(gè)以上處理器各自存取其自身資源圖中的資源且不存取其它處理器的資源圖中的資源的情況下,維持上文所描述的關(guān)系(例如,依賴性及客戶端請(qǐng)求)。
[0070]在一些實(shí)施例中,在存取資源時(shí)上文所參考的限制可由硬件配置來限制。S卩,處理器可不具有其可影響硬件裝置(例如,寄存器)的手段,這是因?yàn)橛布b置是由另一處理器控制或在另一處理器的存儲(chǔ)器空間中。或者,或另外,在存取資源時(shí)的限制可施加于軟件中,原因例如最小化處理器到安全風(fēng)險(xiǎn)(例如,可感染另一處理器的病毒)的暴露。
[0071]圖5為管理圖1的P⑶100的資源的系統(tǒng)的軟件架構(gòu)500B1的另一方面的總圖。在PCD100及所涉及的所有資源及其它元件由相同處理器控制(即,所有資源及其它元件包含于相同資源圖中)的架構(gòu)的上下文中,出于清楚的目的描述此方面。在此總圖中,每一節(jié)點(diǎn)601的一或多個(gè)資源并不具備獨(dú)特名稱。圖5的節(jié)點(diǎn)或資源圖500B1僅包括由架構(gòu)或框架管理器440支持的節(jié)點(diǎn)601、客戶端648、事件690及查詢功能695。用橢圓形及箭頭680來說明每一節(jié)點(diǎn)601,其中特定方向表示節(jié)點(diǎn)601內(nèi)的資源之間的相應(yīng)依賴性。
[0072]圖5還說明第一節(jié)點(diǎn)601A的客戶端648可如何將客戶端請(qǐng)求675發(fā)出到第一節(jié)點(diǎn)601A。在發(fā)出這些客戶端請(qǐng)求675之后,第二節(jié)點(diǎn)601B可觸發(fā)事件690,或提供對(duì)查詢695的響應(yīng),其中對(duì)應(yīng)于事件690及查詢695的消息流回到客戶端648。
[0073]圖6為管理圖1的P⑶100的資源的系統(tǒng)的軟件架構(gòu)500B2的上文所描述的方面的更具體圖。圖6說明節(jié)點(diǎn)或資源圖500B2,其僅包括具有特定但還是示范性的資源名稱的節(jié)點(diǎn)601,以及對(duì)應(yīng)于圖3的客戶端648、事件690及查詢功能695。用橢圓形及箭頭680來說明每一節(jié)點(diǎn)601,其中特定方向表示節(jié)點(diǎn)601內(nèi)的資源之間的相應(yīng)依賴性。
[0074]舉例來說,第一節(jié)點(diǎn)602具有依賴性箭頭680B來指示第一節(jié)點(diǎn)602依賴于第二節(jié)點(diǎn)622的三個(gè)資源。類似地,包括第二軟件元件444B且在圖1lC中通常用于參考字母“C”表示的第三資源“/bus/ahb/sysB/”具有依賴性箭頭680C,其指示此第三資源(C)依賴于第四節(jié)點(diǎn)646的單個(gè)“/clk/sys/ahb”資源。
[0075]圖6還說明來自節(jié)點(diǎn)601的輸出數(shù)據(jù),所述輸出數(shù)據(jù)可包括一或多個(gè)事件690或查詢功能695。查詢功能695類似于事件690。查詢功能695可具有可或可不為獨(dú)特的查詢處理。查詢功能通常不是外部識(shí)別的,且其通常不具有狀態(tài)。查詢功能695可用以確定節(jié)點(diǎn)601的特定資源的狀態(tài)。查詢功能695及事件690可與建立的客戶端648具有關(guān)系,且這些關(guān)系由方向箭頭697表示以指示來自相應(yīng)事件690及查詢功能695的信息被傳遞到特定客戶端648。
[0076]圖5到6的節(jié)點(diǎn)或資源圖500B表示在處理器的控制之下存在于存儲(chǔ)器中且由框架管理器440管理的關(guān)系。節(jié)點(diǎn)或資源圖500B可由框架管理器440自動(dòng)產(chǎn)生,作為用于識(shí)別由框架管理器440管理的相應(yīng)元件之間的關(guān)系及用于由軟件小組進(jìn)行故障檢測的有用工具。
[0077]圖7為說明用于創(chuàng)建或?qū)嵗糜诠芾鞵⑶100的資源的軟件結(jié)構(gòu)的方法1000A的流程圖。在所涉及的所有資源及其它元件由相同處理器控制(即,所有資源及其它元件包含于相同資源圖中)的架構(gòu)的上下文中,出于清楚的目的描述此方法???005為用于管理P⑶100的資源的方法或過程1000的第一例程。在框1005中,例程可由框架管理器440執(zhí)行或運(yùn)行以用于接收節(jié)點(diǎn)結(jié)構(gòu)數(shù)據(jù)。節(jié)點(diǎn)結(jié)構(gòu)數(shù)據(jù)可包括依賴性陣列,其概述了特定節(jié)點(diǎn)601可具有的與其它節(jié)點(diǎn)601的依賴性。下文將結(jié)合圖9更詳細(xì)描述關(guān)于節(jié)點(diǎn)結(jié)構(gòu)數(shù)據(jù)及此例程或子方法705的其它細(xì)節(jié)。
[0078]接下來,在框1010中,框架管理器440可復(fù)查依賴性數(shù)據(jù),所述依賴性數(shù)據(jù)為框1005中所接收的節(jié)點(diǎn)結(jié)構(gòu)數(shù)據(jù)的部分。在決策框1015中,框架管理器440可確定節(jié)點(diǎn)結(jié)構(gòu)數(shù)據(jù)是否定義葉節(jié)點(diǎn)601。葉節(jié)點(diǎn)601通常意謂待基于節(jié)點(diǎn)結(jié)構(gòu)數(shù)據(jù)創(chuàng)建的節(jié)點(diǎn)不具有任何依賴性,例如圖3到4中的節(jié)點(diǎn)642及646。如果決策框1015的詢問為肯定的,意謂用于創(chuàng)建當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)結(jié)構(gòu)數(shù)據(jù)不具有任何依賴性,那么框架管理器440繼續(xù)到例程框1025。
[0079]如果決策框1015的詢問為否定的,那么跟著“否”分支到?jīng)Q策框1020,其中框架管理器確定節(jié)點(diǎn)結(jié)構(gòu)數(shù)據(jù)內(nèi)的所有硬依賴性是否存在。硬依賴性可包括資源在沒有硬依賴性的情況下無法存在的情況。同時(shí),軟依賴性可包括資源可使用依賴資源作為可選步驟的情況。軟依賴性意謂即使在軟依賴性不存在時(shí)仍可在節(jié)點(diǎn)架構(gòu)內(nèi)創(chuàng)建或?qū)嵗哂熊浺蕾囆缘墓?jié)點(diǎn)601或節(jié)點(diǎn)601的資源。
[0080]軟依賴性的實(shí)例可包括優(yōu)化特征,所述優(yōu)化特征對(duì)于含有多個(gè)資源的面向資源的節(jié)點(diǎn)601的操作來說并不關(guān)鍵。對(duì)于未創(chuàng)建的具有軟依賴性的所述節(jié)點(diǎn)或資源,即使在軟依賴性不存在時(shí),框架管理器440仍可針對(duì)存在的所有硬依賴性創(chuàng)建或?qū)嵗?jié)點(diǎn)或資源。回調(diào)特征可用以參考軟依賴性,以使得當(dāng)軟依賴性變得可用于框架管理器440時(shí),框架管理器440將通知參考軟依賴性的每一回調(diào),軟依賴性現(xiàn)在可用了。
[0081]如果決策框1020的詢問為否定,那么跟著“否”分支到框1027,其中節(jié)點(diǎn)結(jié)構(gòu)數(shù)據(jù)由框架管理器440存儲(chǔ)于暫時(shí)存儲(chǔ)裝置(例如,存儲(chǔ)器)中,且框架管理器440創(chuàng)建與此未實(shí)例化節(jié)點(diǎn)相關(guān)聯(lián)的回調(diào)特征。
[0082]如果決策框1015的詢問為肯定的,那么跟著“是”分支到例程1025,其中基于例程框1005中所接收的節(jié)點(diǎn)結(jié)構(gòu)數(shù)據(jù)創(chuàng)建或?qū)嵗?jié)點(diǎn)601。下文將結(jié)合圖9描述例程框1025的其它細(xì)節(jié)。接下來,在框1030中,框架管理器440使用其獨(dú)特資源名稱發(fā)布新創(chuàng)建的節(jié)點(diǎn)601,使得其它節(jié)點(diǎn)601可將信息發(fā)送到新創(chuàng)建的節(jié)點(diǎn)601或從新創(chuàng)建的節(jié)點(diǎn)601接收信
肩、O
[0083]現(xiàn)參看圖8(其為圖7的延續(xù)流程圖),在框1035中,框架管理器440通知依賴于新創(chuàng)建的節(jié)點(diǎn)601的其它節(jié)點(diǎn)601新創(chuàng)建的節(jié)點(diǎn)601已被實(shí)例化且準(zhǔn)備接收或發(fā)射信息。根據(jù)一個(gè)示范性方面,當(dāng)創(chuàng)建類似圖5的節(jié)點(diǎn)601B的依賴節(jié)點(diǎn)時(shí)立即觸發(fā)通知,即遞歸地執(zhí)行通知。因此,如果構(gòu)造了圖5的節(jié)點(diǎn)601B,那么立即通知節(jié)點(diǎn)601A。此通知可允許構(gòu)造節(jié)點(diǎn)601A (因?yàn)楣?jié)點(diǎn)601B為節(jié)點(diǎn)601A的最終依賴性)。節(jié)點(diǎn)601B的構(gòu)造可致使通知其它節(jié)點(diǎn)601等等。節(jié)點(diǎn)601B直到依賴于節(jié)點(diǎn)601B的最終資源完成為止方才完成。
[0084]第二稍微復(fù)雜的實(shí)施方案為將所有通知置于單獨(dú)通知隊(duì)列中,且接著在單個(gè)時(shí)間點(diǎn)處開始穿過隊(duì)列,即反復(fù)地執(zhí)行通知。因此當(dāng)構(gòu)造圖5的節(jié)點(diǎn)601B時(shí),將到節(jié)點(diǎn)601A的通知推到列表上。接著,執(zhí)行所述列表且通知節(jié)點(diǎn)601A。這致使將到其它額外節(jié)點(diǎn)601 (除了節(jié)點(diǎn)601A之外,圖5中未說明)的通知置于相同列表上,且接著在發(fā)送到節(jié)點(diǎn)601A的通知之后發(fā)送那個(gè)通知。到其它節(jié)點(diǎn)601的通知(除了到節(jié)點(diǎn)601A的通知之外)直到與節(jié)點(diǎn)601B及節(jié)點(diǎn)601A相關(guān)聯(lián)的工作已完成之后方才發(fā)生。[0085]邏輯上,這兩個(gè)實(shí)施方案為等效的,但其在實(shí)施時(shí)具有不同的存儲(chǔ)器消耗性質(zhì)。遞歸實(shí)現(xiàn)為簡單的,但可消耗任意量的堆疊空間,其中堆疊消耗是依賴性圖的深度的函數(shù)。反復(fù)實(shí)施稍微復(fù)雜且需要多一點(diǎn)靜態(tài)存儲(chǔ)器(通知列表),但堆疊使用為恒定的而不管依賴性圖的深度如何(例如圖5中所說明)。
[0086]而且,框1035中的節(jié)點(diǎn)創(chuàng)建的通知不限于其它節(jié)點(diǎn)。其還可在內(nèi)部用于別名構(gòu)造。系統(tǒng)500A中的任何任意元件可在節(jié)點(diǎn)變得可用(不僅僅是其它節(jié)點(diǎn))時(shí)使用相同機(jī)制來請(qǐng)求通知。節(jié)點(diǎn)及非節(jié)點(diǎn)兩者可使用相同的通知機(jī)制。
[0087]在決策框1040中,框架管理器440基于當(dāng)前節(jié)點(diǎn)601的創(chuàng)建確定現(xiàn)在是否釋放其它節(jié)點(diǎn)601或軟依賴性以用于創(chuàng)建或?qū)嵗?。決策框1040通常確定是否可創(chuàng)建資源,因?yàn)槟承┮蕾囆躁P(guān)系680已被最近已經(jīng)歷創(chuàng)建或?qū)嵗漠?dāng)前節(jié)點(diǎn)實(shí)現(xiàn)了。
[0088]如果決策框1040的詢問是肯定的,那么跟著“是”分支返回到例程框1025,其中現(xiàn)可創(chuàng)建或?qū)嵗尫诺墓?jié)點(diǎn)601,因?yàn)橛蓜倓?chuàng)建的節(jié)點(diǎn)601實(shí)現(xiàn)了依賴性。
[0089]如果決策框1040的詢問是否定的,那么跟著“否”分支到框1045,其中框架管理器440可管理如圖2中所說明的軟件架構(gòu)的元件之間的通信。接下來,在框1050中,框架管理器440可繼續(xù)通過使用與特定資源相關(guān)聯(lián)的資源名稱而日志記錄或記錄由資源采取的動(dòng)作。在由框架管理器440或由框架管理器440所管理的元件(例如,資源、節(jié)點(diǎn)601、客戶端648、事件695及查詢功能697)中的任一者采取的任何動(dòng)作之后,框1045可由框架管理器440執(zhí)行???045展示節(jié)點(diǎn)架構(gòu)的另一方面,其中框架管理器440可維持活動(dòng)的運(yùn)行日志,其根據(jù)其由創(chuàng)建特定元件(例如,節(jié)點(diǎn)601的資源)的創(chuàng)造者提供的獨(dú)特識(shí)別符或名稱列出了由每一元件執(zhí)行的動(dòng)作。
[0090]與現(xiàn)有技術(shù)相比較,列出經(jīng)指派給系統(tǒng)的每一資源的獨(dú)特名稱的在框1050中的活動(dòng)的此日志記錄為獨(dú)特的,且可提供例如用于除錯(cuò)及錯(cuò)誤故障檢測中的顯著優(yōu)點(diǎn)。節(jié)點(diǎn)架構(gòu)500A的另一獨(dú)特方面在于單獨(dú)小組可在彼此獨(dú)立的不同硬件及/或軟件元件上工作,其中每一小組將能夠使用獨(dú)特且容易跟蹤的資源名稱,而不需要?jiǎng)?chuàng)建表來轉(zhuǎn)譯由其它小組及/或原始設(shè)備制造者(OEM)指派的意義不大且常?;煜馁Y源名稱。
[0091 ] 接下來,在決策框1055中,框架管理器440確定是否已請(qǐng)求由框架管理器440記錄的動(dòng)作的日志。如果決策框1055的詢問是否定的,那么跟著“否”分支到過程的末尾,其中過程返回到例程1005。如果決策框1055的詢問是肯定的,那么跟著“是”分支到框1060,其中框架管理器440將包括有意義的資源名稱及由資源名稱執(zhí)行的相應(yīng)動(dòng)作的活動(dòng)日志發(fā)送到輸出裝置,例如打印機(jī)或顯示屏及/或兩者。過程接著返回到上文所描述的例程框1005。
[0092] 圖9為說明用于接收定義PCD100的軟件架構(gòu)的節(jié)點(diǎn)結(jié)構(gòu)數(shù)據(jù)的圖7的子方法或例程1005的流程圖。接收方法可在任何合適時(shí)間發(fā)生,例如當(dāng)啟動(dòng)或初始化PCD100時(shí)。在所述情況下,在處理器從存儲(chǔ)器讀取對(duì)應(yīng)軟件代碼時(shí)接收節(jié)點(diǎn)結(jié)構(gòu)數(shù)據(jù),以準(zhǔn)備根據(jù)架構(gòu)實(shí)例化節(jié)點(diǎn)601。框1105為圖7的子方法或例程1005中的第一步驟。在框1105中,框架管理器440可接收軟件或硬件元件(例如,圖7的CPUllO及時(shí)鐘442)的獨(dú)特名稱。如先前所論述,節(jié)點(diǎn)601必須參考至少一個(gè)資源。每一資源在系統(tǒng)500A中具有獨(dú)特名稱。系統(tǒng)500A內(nèi)的每一元件可用獨(dú)特名稱來識(shí)別。從字符的角度來看,每一元件具有獨(dú)特名稱。換句話說,通常在系統(tǒng)500A內(nèi)不存在具有相同名稱的兩個(gè)元件。根據(jù)系統(tǒng)的示范性方面,節(jié)點(diǎn)601的資源通常可具有跨越系統(tǒng)的獨(dú)特名稱,但客戶端或事件名稱并不需要為獨(dú)特的,但其可在需要時(shí)為獨(dú)特的。
[0093]為了便利起見,使用斜杠“/”字符以用于創(chuàng)建獨(dú)特名稱的常規(guī)樹文件命名結(jié)構(gòu)或文件命名“隱喻”可被使用,例如,但不限于,用于CPUllO的“/core/cpu”及用于時(shí)鐘442的“/clk/cpu”。然而,如所屬領(lǐng)域的一般技術(shù)人員所認(rèn)識(shí)到,含有字母數(shù)字字符及/或符號(hào)的任何其它組合的其它類型的資源名稱恰當(dāng)?shù)卦诒景l(fā)明的范圍內(nèi)。
[0094]接下來,在框1110中,框架管理器440可接收與創(chuàng)建的節(jié)點(diǎn)601的一或多個(gè)資源相關(guān)聯(lián)的一或多個(gè)驅(qū)動(dòng)函數(shù)的數(shù)據(jù)。驅(qū)動(dòng)函數(shù)通常包括待由特定節(jié)點(diǎn)601的一或多個(gè)資源完成的動(dòng)作。舉例來說,在圖7A到7B中,節(jié)點(diǎn)602的資源/core/cpu的驅(qū)動(dòng)函數(shù)可請(qǐng)求總線帶寬的量及其所需要的CPU時(shí)鐘頻率,以便提供已被請(qǐng)求的請(qǐng)求的處理量。這些請(qǐng)求將通過節(jié)點(diǎn)642及節(jié)點(diǎn)622中的資源的客戶端來進(jìn)行。節(jié)點(diǎn)642中的/clk/cpu的驅(qū)動(dòng)函數(shù)通常將負(fù)責(zé)實(shí)際上根據(jù)其從節(jié)點(diǎn)602的/core/cpu資源接收的請(qǐng)求來設(shè)定物理時(shí)鐘頻率。
[0095]在框1115中,框架管理器440可接收節(jié)點(diǎn)屬性數(shù)據(jù)。節(jié)點(diǎn)屬性數(shù)據(jù)通常包括定義例如安全性(節(jié)點(diǎn)可經(jīng)由用戶空間應(yīng)用程序存取)、遠(yuǎn)程能力(節(jié)點(diǎn)可從系統(tǒng)中的其它處理器存取)及可存取性(資源可支持多個(gè)并發(fā)客戶端)等節(jié)點(diǎn)策略的數(shù)據(jù)??蚣芄芾砥?40還可定義允許資源越權(quán)默認(rèn)框架行為(例如,請(qǐng)求評(píng)估或日志記錄策略)的屬性。
[0096]隨后,在框1120中,框架管理器440可接收創(chuàng)建的特定節(jié)點(diǎn)601的定制用戶數(shù)據(jù)。用戶數(shù)據(jù)可包括空“星號(hào)”域,如所屬領(lǐng)域的一般技術(shù)人員關(guān)于“C”編程語言所理解。對(duì)于所屬領(lǐng)域的一般技術(shù)人員來說,用戶數(shù)據(jù)也被稱作“相信我”域。示范性定制用戶數(shù)據(jù)可包含,但不限于,例如頻率表、寄存器映射等表。框1120中所接收的用戶數(shù)據(jù)不由系統(tǒng)500A參考,但允許在不由框架管理器440辨識(shí)或完全支持定制的情況下定制資源。此用戶數(shù)據(jù)結(jié)構(gòu)為意欲擴(kuò)展以供特定或具體用途的在“C”編程語言中的基本類。
[0097]所屬領(lǐng)域的一般技術(shù)人員認(rèn)識(shí)到用于擴(kuò)展特定類的具體用途的其它種類的數(shù)據(jù)結(jié)構(gòu)在本發(fā)明的范圍內(nèi)。舉例來說,在“C++”(C加加)編程語言中,等效結(jié)構(gòu)可包括關(guān)鍵字“公用”,其將變?yōu)楣?jié)點(diǎn)601內(nèi)的資源的擴(kuò)展機(jī)制。
[0098]接下來,在框1125中,框架管理器440可接收依賴性陣列數(shù)據(jù)。依賴性陣列數(shù)據(jù)可包括創(chuàng)建的節(jié)點(diǎn)601所依賴的一或多個(gè)資源601的獨(dú)特及具體名稱。舉例來說,如果創(chuàng)建圖6的第一節(jié)點(diǎn)602,那么在此框1125中,依賴性陣列數(shù)據(jù)可包括第二節(jié)點(diǎn)622的三個(gè)資源的資源名稱及第一節(jié)點(diǎn)602所依賴的第三節(jié)點(diǎn)642的單個(gè)資源名稱。
[0099]隨后,在框1130中,框架管理器440可接收資源陣列數(shù)據(jù)。資源陣列數(shù)據(jù)可包括用于創(chuàng)建的當(dāng)前節(jié)點(diǎn)的參數(shù),例如與圖7B到7C的第一節(jié)點(diǎn)602有關(guān)的參數(shù)(如果創(chuàng)建了此第一節(jié)點(diǎn)602的話)。資源陣列數(shù)據(jù)可包括以下數(shù)據(jù)中的一或多者:其它資源的名稱;單位;最大值;資源屬性;外掛數(shù)據(jù);及類似于框1120的定制用戶數(shù)據(jù)的任何定制資源數(shù)據(jù)。外掛數(shù)據(jù)通常識(shí)別從軟件庫檢索的功能,且通常列出可由創(chuàng)建的特定節(jié)點(diǎn)或多個(gè)節(jié)點(diǎn)支持的客戶端類型。外掛數(shù)據(jù)還允許定制客戶端創(chuàng)建及毀滅。在框1130之后,過程返回到圖7的框1010。
[0100]在圖9中,屬性數(shù)據(jù)框1115、定制用戶數(shù)據(jù)框1120及依賴性陣列數(shù)據(jù)框1125已用虛線來說明,以指示這些特定步驟為可選的且對(duì)于任何給定節(jié)點(diǎn)601來說并非需要的。同時(shí),獨(dú)特名稱框1105、驅(qū)動(dòng)函數(shù)框1110及資源陣列數(shù)據(jù)框1130已用實(shí)線來說明,以指示例程1005的這些步驟對(duì)于創(chuàng)建節(jié)點(diǎn)601來說通常是重要的。
[0101]圖10為說明用于創(chuàng)建P⑶100的軟件架構(gòu)中的節(jié)點(diǎn)的圖7的子方法或例程1025的流程圖。例程框1205為用于根據(jù)一個(gè)示范性實(shí)施例實(shí)例化或創(chuàng)建節(jié)點(diǎn)601的子方法或例程1025中的第一例程。在例程框1205中,在此步驟中創(chuàng)建與經(jīng)實(shí)例化的節(jié)點(diǎn)601相關(guān)聯(lián)的一或多個(gè)客戶端648。下文將結(jié)合圖11更詳細(xì)描述關(guān)于例程框1205的其它細(xì)節(jié)。
[0102]在框1210中,框架管理器可創(chuàng)建或?qū)嵗瘜?duì)應(yīng)于框705的節(jié)點(diǎn)結(jié)構(gòu)數(shù)據(jù)的一或多個(gè)資源。接下來,在框1215中,框架管理器440可激活在例程框1005的例程框1110中接收的驅(qū)動(dòng)函數(shù)。根據(jù)一個(gè)示范性方面,可使用例程框1005的資源陣列數(shù)據(jù)框1130中接收的最大值來激活驅(qū)動(dòng)函數(shù)。根據(jù)另一優(yōu)選示范性方面,可用與節(jié)點(diǎn)結(jié)構(gòu)數(shù)據(jù)一起從例程1005傳遞的可選初始值來激活每一驅(qū)動(dòng)函數(shù)。如果不提供初始數(shù)據(jù),那么驅(qū)動(dòng)函數(shù)初始化為0,最小值。通常還以已知驅(qū)動(dòng)函數(shù)被初始化的方式來激活驅(qū)動(dòng)函數(shù)。這使得資源能夠執(zhí)行初始化所特有的任何操作,但不需要在正?;蚶滩僮髌陂g執(zhí)行。過程接著返回到圖7的步驟 1030。
[0103]圖11為說明用于創(chuàng)建或?qū)嵗疨⑶100的軟件架構(gòu)中的客戶端648的圖10的子方法或例程1205的流程圖。框1305為例程框1205的第一步驟,其中創(chuàng)建了一或多個(gè)資源601的客戶端648。在框1205中,框架管理器440接收經(jīng)指派給創(chuàng)建的客戶端648的名稱。類似于資源名稱,客戶端648的名稱可包括任何類型的字母數(shù)字及/或符號(hào)。
[0104]接下來,在框1310中,如果存在用于創(chuàng)建的此客戶端648的任何特定定制,那么定制用戶數(shù)據(jù)可由框架管理器440接收???310已用虛線來說明以指示步驟為可選的。框1310的定制用戶數(shù)據(jù)類似于上文結(jié)合節(jié)點(diǎn)601的資源的創(chuàng)建論述的定制用戶數(shù)據(jù)。
[0105]在框1315中,框架管理器440接收經(jīng)指派給創(chuàng)建的特定客戶端的客戶端類型分類。關(guān)于此寫入的客戶端類型分類可包括四個(gè)類型中的一者:(a)需要、(b)脈沖、(C)向量及(d)等時(shí)??蛻舳祟愋头诸惲斜砜扇Q于由系統(tǒng)101管理的資源及取決于依賴于節(jié)點(diǎn)601的資源的應(yīng)用程序而擴(kuò)展。
[0106]所需要的分類通常對(duì)應(yīng)于從需要的客戶端648傳遞到特定資源601的標(biāo)量值的處理。舉例來說,需要的請(qǐng)求可包括特定數(shù)目的每秒百萬指令(MIPs)。同時(shí),脈沖類別通常對(duì)應(yīng)于請(qǐng)求的處理以在某一時(shí)間段內(nèi)完成某一活動(dòng)而無開始時(shí)間或停止時(shí)間的任何標(biāo)記。
[0107]等時(shí)類別通常對(duì)應(yīng)于通常重新出現(xiàn)且具有良好定義的開始時(shí)間及良好定義的結(jié)束時(shí)間的動(dòng)作的請(qǐng)求。向量類別通常對(duì)應(yīng)于通常為需要為串聯(lián)或并聯(lián)的多個(gè)動(dòng)作的部分的數(shù)據(jù)陣列。
[0108]隨后,在框1320中,框架管理器440接收指示是否將可獲得648表示為同步或非同步的數(shù)據(jù)。同步客戶端648為通常需要框架管理器440鎖定節(jié)點(diǎn)601的資源直到資源601從同步客戶端648傳回?cái)?shù)據(jù)及資源601已完成請(qǐng)求的任務(wù)的指示為止的客戶端。
[0109]另一方面,非同步客戶端648可由一或多個(gè)線程并行地處理,所述線程由框架管理器440存取。框架440可創(chuàng)建到線程的回調(diào),且可在已由相應(yīng)線程執(zhí)行回調(diào)時(shí)傳回值。所屬領(lǐng)域的一般技術(shù)人員認(rèn)識(shí)到,在執(zhí)行同步客戶端648的任務(wù)時(shí),非同步客戶端648并不像同步客戶端648 —樣將資源鎖上。
[0110]在框1320之后,在決策框1325中,框架管理器440確定由客戶端645識(shí)別的資源是否可用。如果決策框1325的詢問是否定的,那么跟著“否”分支到框1330,其中將空值或消息傳回到用戶,其指示在此時(shí)無法創(chuàng)建客戶端648。
[0111]如果決策框1325的詢問是肯定的,那么跟著“是”分支到?jīng)Q策框1335,其中框架管理器440確定由客戶端648識(shí)別的每一資源是否支持框1310中提供的客戶端類型。如果決策框1335的詢問是否定的,那么跟著“否”分支回到框1330,其中傳回空值或消息,其指示在此時(shí)無法創(chuàng)建客戶端648。
[0112]如果決策框1335的詢問是肯定的,那么跟著“是”分支到框1340,其中框架管理器440在存儲(chǔ)器中創(chuàng)建或?qū)嵗蛻舳?48。接下來,在框1345中,如果在框1310中接收任何定制用戶數(shù)據(jù)(例如,可選變?cè)?,那么這些可選變?cè)膳c其相應(yīng)資源一起映射到特定節(jié)點(diǎn)601。接下來,在框1350中,新創(chuàng)建的客戶端645在閑置狀態(tài)中或在請(qǐng)求狀態(tài)上耦合到其對(duì)應(yīng)一或多個(gè)資源,如上文所描述。過程接著返回到圖10的框1210。
[0113]圖12為說明用于創(chuàng)建對(duì)P⑶100的軟件架構(gòu)中的資源601的客戶端請(qǐng)求675的方法1400的流程圖。通常在如上文結(jié)合圖7到11所描述的客戶端及節(jié)點(diǎn)創(chuàng)建(實(shí)例化)之后執(zhí)行方法1400。
[0114]框1405為用于創(chuàng)建對(duì)資源601的客戶端請(qǐng)求675的方法1400中的第一步驟。此方法1400將描述框架管理器440如何處理以下三個(gè)類型的客戶端請(qǐng)求675: (a)需要、(b)脈沖及(c)向量。正如上文所提及的請(qǐng)求675的名稱所建議,客戶端請(qǐng)求675通常對(duì)應(yīng)于上文創(chuàng)建及描述的客戶端類型。
[0115]在框1405中,框架管理器440可接收與特定客戶端請(qǐng)求675相關(guān)聯(lián)的數(shù)據(jù),所述客戶端請(qǐng)求例如上文所提及的三者中的一者:(a)需要、(b)脈沖及(C)向量。與所需要的請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)通常包括從需要的客戶端648傳遞到特定資源601的標(biāo)量值。舉例來說,需要的請(qǐng)求可包括特定數(shù)目的每秒百萬指令(MIPs)。脈沖請(qǐng)求包括在特定時(shí)間段內(nèi)完成某一活動(dòng)而無開始時(shí)間或停止時(shí)間的任何標(biāo)記的請(qǐng)求。用于向量請(qǐng)求的數(shù)據(jù)通常包括需要串聯(lián)或并聯(lián)完成的多個(gè)動(dòng)作的陣列。向量請(qǐng)求可包括任意長度的值。向量請(qǐng)求通常具有大小值及值的陣列??蓴U(kuò)展節(jié)點(diǎn)601的每一資源以具有指針域以便支持向量請(qǐng)求。在“C”編程語言中,指針域由聯(lián)集函數(shù)支持,如所屬領(lǐng)域的一般技術(shù)人員所理解。
[0116]接下來,在框1410中,框架管理器440經(jīng)由上文結(jié)合圖11所描述的方法所創(chuàng)建的客戶端648發(fā)出請(qǐng)求。隨后,在框1415中,如果請(qǐng)求為需要的類型或向量類型,那么框架管理器440雙緩沖穿過客戶端的請(qǐng)求數(shù)據(jù)。如果請(qǐng)求為脈沖類型,那么框架管理器440跳過框 1415。
[0117]對(duì)于需要的請(qǐng)求,在框1415中,在存儲(chǔ)器中維持來自先前請(qǐng)求的值,以使得框架管理器440可確定在請(qǐng)求的值的當(dāng)前集合中的先前請(qǐng)求的值之間是否存在任何差異。對(duì)于向量請(qǐng)求,先前請(qǐng)求通常不維持于存儲(chǔ)器中,但節(jié)點(diǎn)601的資源可在特定實(shí)施方案需要時(shí)維持所述先前請(qǐng)求。因此,對(duì)于向量類型的請(qǐng)求,框1415是可選的。
[0118]在框1420中,框架管理器440計(jì)算請(qǐng)求的值的當(dāng)前集合中的請(qǐng)求的值的先前集合之間的增量或差異。在決策框1425中,框架管理器確定請(qǐng)求的值的當(dāng)前集合是否等同于請(qǐng)求的值的先前集合。換句話說,框架管理器440確定請(qǐng)求的值的當(dāng)前集合與請(qǐng)求的值的先前集合之間是否存在差異。如果請(qǐng)求的值的當(dāng)前集合與先前集合之間不存在差異,那么跟著“是”分支(其跳過框1430到框1470)到框1475,其中過程結(jié)束。
[0119]如果決策框1425的詢問是否定的,意謂相對(duì)于先前請(qǐng)求的值的集合,請(qǐng)求的值的集合是不同的,那么跟著“否”分支到?jīng)Q策框1430。
[0120]在決策框1430中,框架管理器440確定當(dāng)前請(qǐng)求是否為非同步請(qǐng)求。如果決策框1430的詢問是否定的,那么跟著“否”分支到框1440,其中對(duì)應(yīng)于客戶端請(qǐng)求675的資源601由框架管理器440鎖定。如果決策框1430的詢問是肯定的,意謂當(dāng)前請(qǐng)求為非同步請(qǐng)求類型,那么跟著“是”分支到框1435,其中如果多核心系統(tǒng)(類似圖1的系統(tǒng))當(dāng)前由框架管理器440管理,那么請(qǐng)求可被推入到另一線程上,且可由另一核心執(zhí)行。框1435已用虛線來說明以指示如果P⑶100為單核心中央處理系統(tǒng),那么此步驟可為可選的。
[0121]隨后,在框1440中,對(duì)應(yīng)于請(qǐng)求675的資源601由框架管理器440鎖定。接下來,在框1445中,資源601執(zhí)行更新功能,其通常對(duì)應(yīng)于圖9的框1130中所接收的資源陣列數(shù)據(jù)的外掛數(shù)據(jù)。更新功能通常包括根據(jù)新客戶端請(qǐng)求負(fù)責(zé)新資源狀態(tài)的功能。更新功能將其先前狀態(tài)與客戶端請(qǐng)求中的請(qǐng)求狀態(tài)相比較。如果請(qǐng)求狀態(tài)大于先前狀態(tài),那么更新功能將執(zhí)行客戶端請(qǐng)求。然而,如果請(qǐng)求狀態(tài)等于或小于資源正操作處于的當(dāng)前狀態(tài),那么將不執(zhí)行客戶端請(qǐng)求以便增加效率,因?yàn)榕f狀態(tài)實(shí)現(xiàn)了或滿足了請(qǐng)求狀態(tài)。更新功能從客戶端進(jìn)行新的請(qǐng)求,且將其與所有其它作用中請(qǐng)求聚合以確定資源的新狀態(tài)。
[0122]作為實(shí)例,多個(gè)客戶端可正請(qǐng)求總線時(shí)鐘頻率??偩€時(shí)鐘的更新功能通常將最大地進(jìn)行所有客戶端請(qǐng)求,且使用其作為總線時(shí)鐘的新的所要狀態(tài)。其并不是所有資源將使用相同更新功能的狀況,但存在將由多個(gè)資源使用的一些更新功能。一些常見更新功能為進(jìn)行最大的客戶端請(qǐng)求,進(jìn)行最小的客戶端請(qǐng)求及合計(jì)客戶端請(qǐng)求?;蛘呷绻滟Y源需要以某一獨(dú)特方式聚合請(qǐng)求,那么資源可定義其自身的定制更新功能。
[0123]接下來,在框1450中,框架管理器440將數(shù)據(jù)傳遞到對(duì)應(yīng)于客戶端648的資源,以使得資源可執(zhí)行節(jié)點(diǎn)601的資源所特有的驅(qū)動(dòng)函數(shù)。驅(qū)動(dòng)函數(shù)應(yīng)用如由更新功能計(jì)算的資源狀態(tài)。這可需要更新硬件設(shè)定,將請(qǐng)求發(fā)出到依賴性資源,呼叫舊式功能或上文的某一組
口 ο
[0124]在先前實(shí)例中,更新功能計(jì)算請(qǐng)求的總線時(shí)鐘頻率。驅(qū)動(dòng)函數(shù)可接收所述請(qǐng)求的頻率且其可更新時(shí)鐘頻率控制HW以在所述頻率處運(yùn)行。應(yīng)注意驅(qū)動(dòng)函數(shù)有時(shí)并不可以滿足更新功能所計(jì)算的精確請(qǐng)求狀態(tài)。在此狀況下,驅(qū)動(dòng)函數(shù)可選擇最佳地滿足請(qǐng)求的頻率。舉例來說,總線時(shí)鐘HW可僅能夠在128MHz及160MHz處運(yùn)行,但請(qǐng)求狀態(tài)可為150MHz。在此狀況下,驅(qū)動(dòng)函數(shù)應(yīng)在160MHz (其超過請(qǐng)求狀態(tài))處運(yùn)行。
[0125]接下來,在框1455中,框架440從已在框1450中執(zhí)行驅(qū)動(dòng)函數(shù)的資源接收狀態(tài)控制。隨后,在框1460中,如果是針對(duì)資源來定義的,那么可觸發(fā)事件690以使得將數(shù)據(jù)傳遞回到對(duì)應(yīng)于事件690的客戶端648。可在另一線程中處理事件。這可最小化鎖定資源所花費(fèi)的時(shí)間量,且允許如圖1中所說明的多核心系統(tǒng)中的并行操作??啥x對(duì)資源的一或多個(gè)事件690,定義的方式類似于可定義對(duì)資源的請(qǐng)求的方式,如此方法1400中所描述。換句話說,事件創(chuàng)建過程可很大程度上與客戶端創(chuàng)建過程是并行的。不同于事件的一件事在于有可能定義僅在越過某些閾值時(shí)觸發(fā)的事件。
[0126]僅基于閾值觸發(fā)的事件的此定義允許通知何時(shí)超額訂購資源(其具有比其所支持的用戶多的并發(fā)用戶),其指示系統(tǒng)過載條件或當(dāng)資源變低/停止使用(其可允許關(guān)閉其它事物)時(shí)恢復(fù)在超額訂購系統(tǒng)時(shí)停用的功能性等。因?yàn)榭蓪?duì)閾值進(jìn)行事件注冊(cè),所以其可減少系統(tǒng)需要對(duì)事件通知進(jìn)行的工作量,以僅在存在真的必要的事件時(shí)才發(fā)生。也有可能在每一狀態(tài)改變時(shí)注冊(cè)事件。
[0127]接下來,在可選框1465中,如果經(jīng)處理的請(qǐng)求為向量請(qǐng)求,那么通常執(zhí)行此可選框1465??蛇x框1465通常包括檢查或確定以評(píng)估向量指針是否仍定位于用戶傳遞到向量中的相同數(shù)據(jù)上。如果此可選框1465的詢問是肯定的,意謂指針仍指向由用戶傳遞到向量中的相同數(shù)據(jù),那么清除指針以使得不維持對(duì)舊數(shù)據(jù)的參考。當(dāng)處理向量請(qǐng)求時(shí),與脈沖請(qǐng)求及需要的請(qǐng)求相比較,通常執(zhí)行此可選框1465以考慮到上文所描述的雙緩沖框1415。
[0128]隨后,在框1470中,框架440解鎖被請(qǐng)求資源以使得其它客戶端請(qǐng)求648可由特定節(jié)點(diǎn)601的當(dāng)前但現(xiàn)釋放的被請(qǐng)求資源來處理。過程接著返回到第一框1405以用于接收下一個(gè)客戶端請(qǐng)求。
[0129]上文所描述的方法及數(shù)據(jù)結(jié)構(gòu)基本上與其適用于單處理器P⑶100 —樣適用于多處理器P⑶100。然而,遠(yuǎn)程框架300 (圖3)可提供可增強(qiáng)多處理器實(shí)施例中的操作的額外特征。舉例來說,遠(yuǎn)程框架300可有利地呈現(xiàn)對(duì)應(yīng)用程序員或類似人員透明的處理器間通信的細(xì)節(jié)。因此,例如應(yīng)用程序可定義對(duì)目標(biāo)資源發(fā)出請(qǐng)求而不需要在客戶端定義中包含控制所述資源的處理器域的任何識(shí)別。而是,遠(yuǎn)程框架300確保請(qǐng)求將到達(dá)目標(biāo)資源而不管哪一處理器控制客戶端及哪一處理器控制目標(biāo)資源。另外,遠(yuǎn)程框架300管理處理器間通信以使得例如應(yīng)用程序不需要包含與處理器之間的通信路徑(例如,總線)的協(xié)議或其它方面有關(guān)的任何指令。此外,因?yàn)椴煌幚砥鏖g通信路徑可使用不同協(xié)議,所以遠(yuǎn)程框架300允許資源定義指定協(xié)議以及資源的其它方面。下文關(guān)于圖13到23描述與分布式資源管理有關(guān)的這些及其它特征。
[0130]圖13說明由第一處理器(未圖示)控制的第一資源1302充當(dāng)對(duì)應(yīng)于由第二處理器(未圖示)控制的第二資源1304的分布式或遠(yuǎn)程資源的實(shí)例或情況。術(shù)語“分布式資源”或“遠(yuǎn)程資源”在本發(fā)明中用以指一個(gè)處理器上的對(duì)應(yīng)于另一處理器上的“本地”資源的資源。第二資源1304在此實(shí)例中充當(dāng)?shù)诙幚砥鞯谋镜刭Y源。分布式資源用作存取對(duì)應(yīng)本地資源的工具。在此實(shí)例中,術(shù)語“資源”可與術(shù)語“節(jié)點(diǎn)”互換地使用,因?yàn)閼?yīng)理解資源可包含于節(jié)點(diǎn)中。
[0131]折線1301說明由第一處理器控制的資源(在線1301左邊)與由第二處理器控制的資源(在線1301右邊)之間的分界。第一資源1302為由第一處理器控制的兩個(gè)或兩個(gè)以上資源中的一者。一個(gè)此資源可為第一資源1302所依賴的協(xié)議資源1306。同樣,第二資源1304為由第二處理器控制的兩個(gè)或兩個(gè)以上資源中的一者。在一些實(shí)施例中,僅分布式資源而非本地資源依賴于協(xié)議資源。因此,在所述實(shí)施例中,僅第一(分布式)資源1302依賴于協(xié)議資源1306。然而,在其它實(shí)施例中,任何資源可依賴于協(xié)議資源。因此,在替代實(shí)施例中,第二資源1304還可依賴于協(xié)議資源(未圖示)。第一及第二資源1302及1306還可以如上文一般關(guān)于資源或節(jié)點(diǎn)所描述的相同方式依賴于額外資源,但所述額外資源出于清楚起見在圖13中并未展示。應(yīng)注意,由第一處理器控制的資源由第一資源圖(即,有向非循環(huán)圖)定義,且由第二處理器控制的資源由第二此類資源圖(其并不與第一資源圖共享任何資源)定義。
[0132]第一及第二資源1302及1304在其相應(yīng)處理器的控制之下能夠經(jīng)由通信路徑1303傳達(dá)信息。通信路徑1303表示第一及第二處理器之間的物理媒體與用以經(jīng)由所述媒體通信的傳送協(xié)議的一或多個(gè)層的組合。因此,第一資源1302與第二資源1304之間的任何通信必須遵照協(xié)議。協(xié)議資源1306及1308定義協(xié)議或可指向庫中的協(xié)議定義(未圖示)。遠(yuǎn)程框架300及(主)框架440彼此相結(jié)合地操作以管理資源及其間的通信。如下文所描述,客戶端1312在第一處理器的控制之下可對(duì)第一資源1302發(fā)出一或多個(gè)資源請(qǐng)求。第一資源1302使用對(duì)應(yīng)第二資源1304的功能性來服務(wù)資源請(qǐng)求。
[0133]圖14為說明用于創(chuàng)建或?qū)嵗植际劫Y源(例如,圖13的第一資源1302)的方法1400的流程圖。圖14的流程圖意欲說明除了上文關(guān)于用于實(shí)例化資源的方法(例如,圖7到10所說明的方法)所描述的特征之外或擴(kuò)增所述特征的特征。因此,除了可以其它方式指示的情況之外,可包含圖7到10中的框中的任一者或全部,但其出于清楚起見而在圖14中未被展示。
[0134]如由框1402所指示,框架管理器300及440接收定義節(jié)點(diǎn)(例如,含有第一資源1302的節(jié)點(diǎn))的節(jié)點(diǎn)結(jié)構(gòu)數(shù)據(jù)。在示范性實(shí)施例中,以基本上與上文關(guān)于圖7到10所描述的方式相同的方式來處理依賴性,除了可在任何時(shí)間實(shí)例化協(xié)議資源之外,如由框1406所指示。依賴于協(xié)議資源的資源不需要等待直到其協(xié)議資源經(jīng)實(shí)例化為止。以上文關(guān)于圖7到10所描述的方式的依賴性的實(shí)例化通常由框1408說明。
[0135]盡管實(shí)例化通常遵循上文關(guān)于圖7到10所描述的方法,但應(yīng)注意到,無法實(shí)例化分布式資源直到已實(shí)例化其所對(duì)應(yīng)的本地資源為止。因此,本地資源的實(shí)例化可以與依賴資源的實(shí)例化可延遲依賴于其的資源的實(shí)例化相同的方式延遲分布式資源的實(shí)例化。還應(yīng)注意,經(jīng)由通信路徑1303及框架管理器300及440在第一及第二處理器之間傳達(dá)的與本地資源的實(shí)例化的狀態(tài)有關(guān)的消息通常遵照指定協(xié)議。舉例來說,在實(shí)例化第一處理器上的協(xié)議資源1306之后,根據(jù)遠(yuǎn)程框架管理器300操作的第一過程可將經(jīng)編碼或以其它方式遵照協(xié)議的用于通知的請(qǐng)求發(fā)送到第二處理器。當(dāng)已實(shí)例化第二資源1304時(shí),根據(jù)遠(yuǎn)程框架管理器300操作的第二處理器可通過將指示已實(shí)例化第二資源1304的響應(yīng)發(fā)送到第一處理器來對(duì)用于通知的請(qǐng)求作出響應(yīng)。遠(yuǎn)程框架管理器300可管理所述通信及其它通信,作為實(shí)例化軟件架構(gòu)的過程的部分。
[0136]第一處理器上的協(xié)議資源1306除了其它功能之外還可包含創(chuàng)建客戶端(例如,圖13中所示的客戶端1312)及將可由執(zhí)行線程使用的處理傳回到客戶端的功能。執(zhí)行線程(例如,應(yīng)用程序或其它軟件元件的執(zhí)行的部分)可調(diào)用功能來創(chuàng)建所述客戶端1312。線程可使用客戶端1312以如上文一般關(guān)于客戶端所描述的方式來發(fā)出資源請(qǐng)求及以其它方式使用客戶端1312。資源請(qǐng)求是協(xié)議特定的,且允許線程存取第二資源1304而不需要線程提供與協(xié)議有關(guān)的任何信息。從線程及其客戶端的角度來看,協(xié)議可為不相關(guān)的或透明的。
[0137]如由框1410所指示,框架300及440確定在接收的節(jié)點(diǎn)結(jié)構(gòu)數(shù)據(jù)中是否指定聚合方法。如果確定指定聚合方法,那么在分布式及本地資源(節(jié)點(diǎn))中設(shè)定聚合方法,如由框1412所指示。存在兩種聚合類型:局部及代理。在定義資源時(shí),可選擇兩個(gè)聚合類型中的一者。因此,在實(shí)例化資源(節(jié)點(diǎn))時(shí),設(shè)定資源以執(zhí)行局部聚合或遠(yuǎn)程聚合。
[0138]資源通過將算法應(yīng)用于其可“并發(fā)”接收的多個(gè)資源請(qǐng)求來執(zhí)行局部聚合。在此上下文中,兩個(gè)(或兩個(gè)以上)請(qǐng)求在其皆保持在作用中時(shí)是“并發(fā)的”。舉例來說,第一處理器可發(fā)出資源請(qǐng)求以將其速度設(shè)定為50MIPS,且在已完成或以其它方式終止第一處理器的請(qǐng)求之前,第二處理器可發(fā)出資源請(qǐng)求以將其速度設(shè)定為100MIPS。聚合可根據(jù)例如添加多個(gè)并發(fā)資源請(qǐng)求中的每一者的變?cè)?通過從所有多個(gè)資源請(qǐng)求中的所述變?cè)?dāng)中確定最大變?cè)?,通過從所有多個(gè)資源請(qǐng)求中的所述變?cè)?dāng)中確定最小變?cè)?,或通過任何其它方法)等方法來執(zhí)行。聚合方法可與定義資源(節(jié)點(diǎn))的節(jié)點(diǎn)結(jié)構(gòu)數(shù)據(jù)中的聚合類型一起指定或定義。
[0139]節(jié)點(diǎn)結(jié)構(gòu)數(shù)據(jù)可指示節(jié)點(diǎn)將實(shí)例化為代理節(jié)點(diǎn)或非代理節(jié)點(diǎn)。下文關(guān)于圖16到17描述可使用此特征的方式。如由框1414所指示,節(jié)點(diǎn)類型設(shè)定為所指示的類型。在非代理節(jié)點(diǎn)的狀況下,以由節(jié)點(diǎn)結(jié)構(gòu)確定的方式局部地聚合客戶端請(qǐng)求,且使用將局部聚合請(qǐng)求發(fā)送到本地資源的驅(qū)動(dòng)函數(shù)。由分布式資源處理查詢及事件。在代理節(jié)點(diǎn)的狀況下,客戶端請(qǐng)求未被聚合而是替代地個(gè)別地發(fā)送到本地資源。另外,將所有查詢及事件轉(zhuǎn)發(fā)到本地資源。
[0140]如由框1416所指示,發(fā)生實(shí)例化過程中的任何剩余步驟。實(shí)例化分布式節(jié)點(diǎn)的所述方面可基本上與上文關(guān)于圖7到10所描述的方面相同。如由框1418所指示,如果定義額外節(jié)點(diǎn),那么對(duì)于所述節(jié)點(diǎn)重復(fù)或繼續(xù)所述方法。
[0141]圖15為說明用于服務(wù)客戶端請(qǐng)求的方法1500的流程圖。圖15的流程圖意欲說明除了上文關(guān)于用于服務(wù)客戶端請(qǐng)求的方法(例如,圖12中所說明的方法)所描述的特征之外或擴(kuò)增所述特征的特征。因此,除了可以其它方式指示的情況之外,可包含圖12中的框中的任一者或全部,但其出于清楚起見而在圖15中未被展示。
[0142]如由框1502所指示,例如圖13中的第一節(jié)點(diǎn)1302的所述資源等分布式資源接收客戶端請(qǐng)求。如由框1504所指示,確定與被請(qǐng)求資源相關(guān)聯(lián)的聚合類型為局部的還是遠(yuǎn)程的。如果聚合類型是局部的,那么被請(qǐng)求資源將請(qǐng)求變?cè)c相同窗內(nèi)發(fā)生的其它變?cè)酆希缬煽?506所指示。如上文所描述,聚合與處理并發(fā)資源請(qǐng)求有關(guān)。如果與被請(qǐng)求資源相關(guān)聯(lián)的聚合類型為遠(yuǎn)程,那么其將被留給對(duì)應(yīng)本地資源(例如,圖13中的第二資源1304)以將所述請(qǐng)求與其它請(qǐng)求聚合。
[0143]不管是局部的還是遠(yuǎn)程的,聚合涉及客戶端請(qǐng)求的三個(gè)連續(xù)狀態(tài):(I)發(fā)出請(qǐng)求、(2)進(jìn)展中請(qǐng)求及(3)應(yīng)用請(qǐng)求。在并發(fā)地發(fā)出客戶端請(qǐng)求的情況下(即,兩個(gè)客戶端請(qǐng)求各自在實(shí)際上彼此同時(shí)或在上文所參考的窗內(nèi)開始發(fā)出請(qǐng)求狀態(tài)),首先出現(xiàn)的客戶端請(qǐng)求使得鎖定被請(qǐng)求資源,且在首先出現(xiàn)的客戶端請(qǐng)求之后處理第二次出現(xiàn)的客戶端請(qǐng)求。在進(jìn)展中請(qǐng)求狀態(tài)期間處理或服務(wù)客戶端請(qǐng)求。在已完成客戶端請(qǐng)求之后,客戶端請(qǐng)求經(jīng)指派應(yīng)用請(qǐng)求狀態(tài)。聚合在多個(gè)并發(fā)客戶端請(qǐng)求已到達(dá)應(yīng)用請(qǐng)求狀態(tài)的情況下開始活動(dòng)。舉例來說,如果資源已被定義為使用上文所參考的最大聚合方法,且客戶端“A”請(qǐng)求50MIPS同時(shí)(可能是幾微秒之后),客戶端“B”請(qǐng)求100MIPS,那么將串行化這些初始請(qǐng)求。因此,當(dāng)處理第一客戶端請(qǐng)求時(shí),資源將被設(shè)定為第一客戶端請(qǐng)求的變?cè)?0MIPS。接著,當(dāng)處理第二客戶端請(qǐng)求時(shí),根據(jù)最大聚合方法,資源將被設(shè)定為100,因?yàn)?00為50及100間的最大值。其后,當(dāng)這些初始客戶端請(qǐng)求中的兩者處于應(yīng)用請(qǐng)求狀態(tài)下時(shí),客戶端“B”可發(fā)出另一客戶端請(qǐng)求達(dá)25MIPS。根據(jù)最大聚合方法,被請(qǐng)求資源將被設(shè)定為50,因?yàn)?0為50及25間的最大值。
[0144]如由框1508所指示,確定被請(qǐng)求資源依賴于協(xié)議資源,例如圖13中的協(xié)議資源1306。如果被請(qǐng)求資源依賴于協(xié)議資源,那么協(xié)議資源經(jīng)調(diào)用且用以使資源請(qǐng)求遵照協(xié)議資源所定義的協(xié)議,如由框1510及1512所分別指示。如由框1514所指示,遵照協(xié)議,發(fā)送反映聚合結(jié)果(框1506的結(jié)果)的資源請(qǐng)求,或如果遠(yuǎn)程資源將執(zhí)行聚合,那么將資源請(qǐng)求轉(zhuǎn)發(fā)到本地資源,例如圖13中的第二資源1304。分布式資源的驅(qū)動(dòng)函數(shù)(未圖示)調(diào)用協(xié)議。
[0145]盡管圖15中未圖示,但可以基本上與上文關(guān)于圖12所描述的方式相同的方式來處理涉及分布式資源的事件。監(jiān)視橫跨閾值的值的類型的事件可在與代理資源組合時(shí)尤其有用,如下文所描述。
[0146]圖16為說明用于服務(wù)對(duì)非代理類型的分布式資源的狀態(tài)查詢的方法1600的流程圖。由如上文關(guān)于圖5到6所描述的框架440管理狀態(tài)查詢。圖16到17的流程圖意欲說明除了上文關(guān)于圖5到6所描述的特征或擴(kuò)增所述特征的特征。因此,除了可以其它方式指示的情況之外,可包含上文關(guān)于圖5到6所描述的特征中的任一者或全部,但其出于清楚起見而在圖16到17中未被展示。
[0147]如由框1602所指示,例如圖13中的第一節(jié)點(diǎn)1302的所述資源等分布式資源接收狀態(tài)查詢。在此實(shí)例中,第一節(jié)點(diǎn)1302表示非代理節(jié)點(diǎn)或資源。如由框1604所指示,將狀態(tài)查詢轉(zhuǎn)發(fā)到對(duì)應(yīng)本地資源,例如圖13中的第二資源1304。如由框1606所指示,響應(yīng)于狀態(tài)查詢將本地資源的狀態(tài)發(fā)送回到分布式資源。如由框1608所指示,分布式資源接著可提供表示本地資源的狀態(tài)的狀態(tài)指示到查詢請(qǐng)求者(客戶端)。
[0148]圖17A為說明用于服務(wù)對(duì)代理類型的分布式資源的狀態(tài)查詢的方法1700的第一部分的流程圖。如由框1702所指示,例如圖13中的第一節(jié)點(diǎn)1302的所述資源等分布式資源接收狀態(tài)查詢。在此實(shí)例中,第一節(jié)點(diǎn)1302表示代理節(jié)點(diǎn)或資源。如由框1704及1706分別指示,每次分布式資源接收到本地資源的狀態(tài)的指示,分布式資源更新其狀態(tài)以反映本地資源的狀態(tài)。如由框1608所指示,分布式資源將其自身狀態(tài)的指示提供到查詢請(qǐng)求者(客戶端)。因此,在代理分布式資源的狀況下,其狀態(tài)僅在其從對(duì)應(yīng)本地資源接收到狀態(tài)改變的通知時(shí)改變。
[0149]如由框所指示,將狀態(tài)查詢轉(zhuǎn)發(fā)到對(duì)應(yīng)本地資源,例如圖13中的第二資源1304。如由框1606所指示,響應(yīng)于狀態(tài)查詢將本地資源的狀態(tài)發(fā)送回到分布式資源。
[0150]圖17B為說明用于服務(wù)對(duì)代理類型的分布式資源的狀態(tài)查詢的方法1700的第二部分的流程圖。此第二部分反映了本地資源的角度,且非同步及與圖17A中所說明的第一部分并行地操作。如由框1710所指示,監(jiān)視本地資源(例如,圖13的第二節(jié)點(diǎn)1304)的狀態(tài)。如由框1712及1714分別指示,如果檢測到本地資源的狀態(tài)的改變,那么將本地資源的狀態(tài)的指示發(fā)送到對(duì)應(yīng)分布式資源。
[0151]在適當(dāng)情況下的代理分布式資源的使用可促進(jìn)最小化處理器間流通量的所要目標(biāo),因?yàn)闋顟B(tài)信息僅在本地資源的狀態(tài)改變時(shí)從本地資源的處理器發(fā)送到分布式資源的處理器。相對(duì)比地,在非代理資源的狀況下,發(fā)送狀態(tài)查詢,且每次分布式資源接收狀態(tài)查詢時(shí)傳回狀態(tài)信息。在例如分布式資源而非對(duì)應(yīng)本地資源的狀態(tài)與待在第一處理器的控制之下執(zhí)行的任務(wù)最相關(guān)的情況下,可使用代理資源。
[0152]如上文關(guān)于圖5到6所注明,事件及查詢是軟件架構(gòu)的相關(guān)方面。監(jiān)視超越閾值的值的類型的事件可在與代理資源組合時(shí)尤其有用,因?yàn)閮H在本地資源的狀態(tài)超越閾值時(shí)而非每當(dāng)本地資源的狀態(tài)改變時(shí)發(fā)送處理器間消息。
[0153]在一些情況下,可需要在單個(gè)“資源請(qǐng)求事務(wù)”中一起分組或“分批”數(shù)個(gè)單獨(dú)資源請(qǐng)求。在其中多個(gè)資源請(qǐng)求針對(duì)由彼此相同的處理器控制的遠(yuǎn)程或封閉式資源的情況下,事務(wù)處理資源請(qǐng)求可幫助最小化經(jīng)由通信路徑1303(圖13)在第一及第二處理器之間發(fā)射的消息的數(shù)目。如所屬領(lǐng)域的一般技術(shù)人員充分理解,“事務(wù)”是根據(jù)通常由首字母縮略詞ACID所指的性質(zhì)(原子性、一致性、隔離及耐久性)而發(fā)生的動(dòng)作。原子性意謂執(zhí)行或皆不執(zhí)行事務(wù)的構(gòu)成步驟中的全部,以便避免與部分執(zhí)行的事務(wù)相關(guān)聯(lián)的問題。一致性意謂事務(wù)將使系統(tǒng)從一個(gè)連續(xù)/連貫狀態(tài)到另一狀態(tài)。隔離意謂其它操作無法存取在尚未完成的事務(wù)期間修改的數(shù)據(jù)。鎖定對(duì)數(shù)據(jù)的存取通常用以確保事務(wù)的隔離性質(zhì)。如上文所描述,資源在響應(yīng)于資源請(qǐng)求而存取所述資源時(shí)被鎖定,且在資源請(qǐng)求完成時(shí)解鎖。耐久性與從系統(tǒng)故障恢復(fù)有關(guān)。術(shù)語“事務(wù)”在本說明書中用以指至少根據(jù)原子性及隔離的性質(zhì)而一起執(zhí)行的資源請(qǐng)求的群組。用于資源請(qǐng)求事務(wù)的框架或編程接口在其設(shè)計(jì)中支持一致性,但系統(tǒng)在事務(wù)之后是否到達(dá)連續(xù)狀態(tài)取決于個(gè)別事務(wù)處理的資源請(qǐng)求的動(dòng)作,且因此不一定是框架或編程接口的性質(zhì)。
[0154]提供資源請(qǐng)求事務(wù)可涉及兩個(gè)方面。在一個(gè)方面中,可定義資源請(qǐng)求事務(wù)。在定義資源請(qǐng)求事務(wù)時(shí),資源請(qǐng)求事務(wù)被指派獨(dú)特名稱或識(shí)別符,指定鎖定類型,且列出了在資源請(qǐng)求事務(wù)中可涉及的資源。定義資源請(qǐng)求事務(wù)的結(jié)果可為可由實(shí)體參考以便發(fā)出資源請(qǐng)求事務(wù)(或創(chuàng)建其實(shí)例)的句柄。
[0155]提供資源請(qǐng)求事務(wù)的第二方面涉及發(fā)出或創(chuàng)建經(jīng)定義資源請(qǐng)求事務(wù)的實(shí)例。資源請(qǐng)求事務(wù)可由資源發(fā)出(例如,作為到其所依賴的其它資源的一批資源請(qǐng)求),或由除了資源之外的實(shí)體(例如由執(zhí)行線程或由由PCD100的上文所描述的資源圖所定義的資源中的一者中所不包括的裝置驅(qū)動(dòng)程序)發(fā)出。與其它資源請(qǐng)求一樣,資源請(qǐng)求事務(wù)是一種類型的客戶端請(qǐng)求。能夠以上文所描述的方式發(fā)出客戶端請(qǐng)求(或在“擁有”客戶端的常見計(jì)算機(jī)科學(xué)用于中)的任何實(shí)體可發(fā)出資源請(qǐng)求事務(wù)。
[0156]為了發(fā)出資 源請(qǐng)求事務(wù),資源、線程或其它此類實(shí)體執(zhí)行“開始”或設(shè)定先前定義的資源請(qǐng)求事務(wù)的軟件代碼,將資源請(qǐng)求發(fā)出到經(jīng)定義為資源請(qǐng)求事務(wù)的部分的各種資源,及接著結(jié)束資源請(qǐng)求事務(wù),初始化分批請(qǐng)求的處理及結(jié)束資源請(qǐng)求事務(wù)。結(jié)束資源請(qǐng)求事務(wù)的過程可涉及將這一批請(qǐng)求從第一處理實(shí)體發(fā)射到第二處理實(shí)體,在第二處理實(shí)體處處理分批請(qǐng)求,在第一處理實(shí)體處等待處理完成的通知,及接著在接收到通知時(shí)在第一處理實(shí)體處執(zhí)行對(duì)局部資源代理或注冊(cè)的回調(diào)的任何更新。
[0157]圖18為說明用于發(fā)出資源請(qǐng)求事務(wù)的方法1800的流程圖。下文參考示范性偽代碼來描述方法1800。下文為通常表示由發(fā)出資源請(qǐng)求事務(wù)的實(shí)體執(zhí)行的代碼的偽代碼的實(shí)例:
[0158]
【權(quán)利要求】
1.一種用于管理具有多個(gè)資源的便攜式計(jì)算裝置中的資源請(qǐng)求的方法,所述方法包括: 用客戶端發(fā)出資源請(qǐng)求事務(wù),所述資源請(qǐng)求需要所述多個(gè)資源中的兩個(gè)或兩個(gè)以上資源;及 使所述事務(wù)分叉以使得所述客戶端不等待所述事務(wù)的完成,且因此所述客戶端可發(fā)出額外事務(wù)或請(qǐng)求到其它資源。
2.根據(jù)權(quán)利要求1所述的方法,其中發(fā)出所述資源請(qǐng)求事務(wù)包括: 提供對(duì)事件序列的指示,所述事件包含事務(wù)的開始、事務(wù)的結(jié)束及所述事務(wù)的所述開始與所述事務(wù)的所述結(jié)束之間的多個(gè)資源請(qǐng)求,每一資源請(qǐng)求指示由有向非循環(huán)圖定義的所述多個(gè)資源中的一或多者; 鎖定由所述多個(gè)資源請(qǐng)求指示的所述資源; 將與所述多個(gè)資源請(qǐng)求中的每一者相關(guān)聯(lián)的信息添加到隊(duì)列; 響應(yīng)于所述事務(wù)的所述結(jié)束的所述指示將所述隊(duì)列發(fā)射到接收者;及 在發(fā)射所述隊(duì)列之后解鎖所述多個(gè)資源。
3.根據(jù)權(quán)利要求2所述的方法,其中將所述隊(duì)列發(fā)射到接收者包括將所述隊(duì)列從第一處理實(shí)體發(fā)射到第二處理實(shí) 體。
4.根據(jù)權(quán)利要求2所述的方法,其中鎖定由所述多個(gè)資源請(qǐng)求指示的每一資源包括響應(yīng)于對(duì)所述事務(wù)的所述開始的指示鎖定由所述多個(gè)資源請(qǐng)求指示的所有資源。
5.根據(jù)權(quán)利要求4所述的方法,其中: 發(fā)射所述隊(duì)列包括將所述隊(duì)列從第一處理實(shí)體發(fā)射到第二處理實(shí)體;及鎖定由所述多個(gè)資源請(qǐng)求指示的每一資源包括鎖定對(duì)應(yīng)于由所述第二處理實(shí)體控制的多個(gè)遠(yuǎn)程資源的由所述第一處理實(shí)體控制的多個(gè)局部資源。
6.根據(jù)權(quán)利要求4所述的方法,其中鎖定由所述多個(gè)資源請(qǐng)求指示的每一資源進(jìn)一步包括: 根據(jù)所述有向非循環(huán)圖排序由所述多個(gè)資源請(qǐng)求指示的所述多個(gè)資源的表示;及 按對(duì)應(yīng)于排序所述表示的結(jié)果的次序鎖定由所述多個(gè)資源請(qǐng)求指示的所有資源。
7.根據(jù)權(quán)利要求2所述的方法,其中鎖定由所述多個(gè)資源請(qǐng)求指示的每一資源包括響應(yīng)于對(duì)資源請(qǐng)求的指示鎖定由所述資源請(qǐng)求指示的資源。
8.根據(jù)權(quán)利要求7所述的方法,其中: 發(fā)射所述隊(duì)列包括將所述隊(duì)列從第一處理實(shí)體發(fā)射到第二處理實(shí)體;及鎖定由所述多個(gè)資源請(qǐng)求指示的每一資源包括鎖定對(duì)應(yīng)于由所述第二處理實(shí)體控制的多個(gè)遠(yuǎn)程資源的由所述第一處理實(shí)體控制的多個(gè)局部資源。
9.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括: 在所述事務(wù)的分叉期間,將每一資源置于用于服務(wù)所述事務(wù)的一或多個(gè)請(qǐng)求的不連貫狀態(tài)中,所述不連貫狀態(tài)延遲與請(qǐng)求相關(guān)聯(lián)的清除工作。
10.根據(jù)權(quán)利要求9所述的方法,其進(jìn)一步包括:響應(yīng)于接收到關(guān)于所述事務(wù)的外部請(qǐng)求,改變用于與所述外部請(qǐng)求相關(guān)聯(lián)的所述資源中的一或多者的所述不連貫狀態(tài)以使得一或多個(gè)資源可服務(wù)所述外部請(qǐng)求。
11.一種用于管理具有多個(gè)資源的便攜式計(jì)算裝置中的資源請(qǐng)求的計(jì)算機(jī)系統(tǒng),所述系統(tǒng)包括: 處理器,其可操作以用于: 用客戶端發(fā)出資源請(qǐng)求事務(wù),所述資源請(qǐng)求需要所述多個(gè)資源中的兩個(gè)或兩個(gè)以上資源;及 使所述事務(wù)分叉以使得所述客戶端不等待所述事務(wù)的完成,且因此所述客戶端可發(fā)出額外事務(wù)或請(qǐng)求到其它資源。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述處理器可進(jìn)一步操作以用于: 提供對(duì)事件序列的指示,所述事件包含事務(wù)的開始、事務(wù)的結(jié)束及所述事務(wù)的所述開始與所述事務(wù)的所述結(jié)束之間的多個(gè)資源請(qǐng)求,每一資源請(qǐng)求指示由有向非循環(huán)圖定義的所述多個(gè)資源中的一或多者; 鎖定由所述多個(gè)資源請(qǐng)求指示的所述資源; 將與所述多個(gè)資源請(qǐng)求中的每一者相關(guān)聯(lián)的信息添加到隊(duì)列; 響應(yīng)于所述事務(wù)的所述結(jié)束的所述指示將所述隊(duì)列發(fā)射到接收者;及 在發(fā)射所述隊(duì)列之后解鎖所述多個(gè)資源。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),其中將所述隊(duì)列發(fā)射到接收者包括將所述隊(duì)列從第一處理實(shí)體發(fā)射到第二處理實(shí)體。
14.根據(jù)權(quán)利要求12所述的系統(tǒng),其中鎖定由所述多個(gè)資源請(qǐng)求指示的每一資源包括所述處理器可操作以用于響應(yīng)于對(duì)所述事務(wù)的所述開始的指示鎖定由所述多個(gè)資源請(qǐng)求指示的所有資源。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述處理器可進(jìn)一步操作以用于: 發(fā)射所述隊(duì)列包括將所述隊(duì)列從第一處理實(shí)體發(fā)射到第二處理實(shí)體;及 鎖定由所述多個(gè)資源請(qǐng)求指示的每一資源包括鎖定對(duì)應(yīng)于由所述第二處理實(shí)體控制的多個(gè)遠(yuǎn)程資源的由所述第一處理實(shí)體控制的多個(gè)局部資源。
16.根據(jù)權(quán)利要求14所述的系統(tǒng),其中鎖定由所述多個(gè)資源請(qǐng)求指示的每一資源進(jìn)一步包括所述處理器可操作以用于: 根據(jù)所述有向非循環(huán)圖排序由所述多個(gè)資源請(qǐng)求指示的所述多個(gè)資源的表示;及 按對(duì)應(yīng)于排序所述表示的結(jié)果的次序鎖定由所述多個(gè)資源請(qǐng)求指示的所有資源。
17.根據(jù)權(quán)利要求12所述的系統(tǒng),其中鎖定由所述多個(gè)資源請(qǐng)求指示的每一資源包括所述處理器可操作以用于響應(yīng)于對(duì)資源請(qǐng)求的指示鎖定由所述資源請(qǐng)求指示的資源。
18.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述處理器可進(jìn)一步操作以用于發(fā)射所述隊(duì)列包括將所述隊(duì)列從第一處理實(shí)體發(fā)射到第二處理實(shí)體;及 鎖定由所述多個(gè)資源請(qǐng)求指示的每一資源包括所述處理器可操作以用于鎖定對(duì)應(yīng)于由所述第二處理實(shí)體控制的多個(gè)遠(yuǎn)程資源的由所述第一處理實(shí)體控制的多個(gè)局部資源。
19.根據(jù)權(quán)利要求11所述的系統(tǒng),其中在所述事務(wù)的分叉期間,所述處理器可操作以用于將每一資源置于用于服務(wù)所述事務(wù)的一或多個(gè)請(qǐng)求的不連貫狀態(tài)中,所述不連貫狀態(tài)延遲與請(qǐng)求相關(guān)聯(lián)的清除工作。
20.根據(jù)權(quán)利要求19所述的系統(tǒng),其中響應(yīng)于接收到關(guān)于所述事務(wù)的外部請(qǐng)求,所述處理器可操作以用于改變用于與所述外部請(qǐng)求相關(guān)聯(lián)的所述資源中的一或多者的所述不連貫狀態(tài)以使得一或多個(gè)資源可服務(wù)所述外部請(qǐng)求。
21.一種用于管理具有多個(gè)資源的便攜式計(jì)算裝置中的資源請(qǐng)求的計(jì)算機(jī)系統(tǒng),所述系統(tǒng)包括: 用于用客戶端發(fā)出資源請(qǐng)求事務(wù)的裝置,所述資源請(qǐng)求需要所述多個(gè)資源中的兩個(gè)或兩個(gè)以上資源 '及 用于使所述事務(wù)分叉以使得所述客戶端不等待所述事務(wù)的完成且因此所述客戶端可發(fā)出額外事務(wù)或請(qǐng)求到其它資源的裝置。
22.根據(jù)權(quán)利要求21所述的系統(tǒng),其中所述用于發(fā)出所述資源請(qǐng)求事務(wù)的裝置包括: 用于提供對(duì)事件序列的指示的裝置,所述事件包含事務(wù)的開始、事務(wù)的結(jié)束及所述事務(wù)的所述開始與所述事務(wù)的所述結(jié)束之間的多個(gè)資源請(qǐng)求,每一資源請(qǐng)求指示由有向非循環(huán)圖定義的所述多個(gè)資源中的一或多者; 用于鎖定由所述多個(gè)資源請(qǐng)求指示的所述資源的裝置; 用于將與所述多個(gè)資源請(qǐng)求中的每一者相關(guān)聯(lián)的信息添加到隊(duì)列的裝置; 用于響應(yīng)于所述事務(wù)的所述結(jié)束的所述指示將所述隊(duì)列發(fā)射到接收者的裝置;及 用于在發(fā)射所述隊(duì)列之后解鎖所述多個(gè)資源的裝置。
23.根據(jù)權(quán)利要求22所述的系統(tǒng),其中所述用于將所述隊(duì)列發(fā)射到接收者的裝置包括用于將所述隊(duì) 列從第一處理實(shí)體發(fā)射到第二處理實(shí)體的裝置。
24.根據(jù)權(quán)利要求21所述的系統(tǒng),其中所述用于鎖定由所述多個(gè)資源請(qǐng)求指示的每一資源的裝置包括用于響應(yīng)于對(duì)所述事務(wù)的所述開始的指示鎖定由所述多個(gè)資源請(qǐng)求指示的所有資源的裝置。
25.根據(jù)權(quán)利要求24所述的系統(tǒng),其中所述用于發(fā)射所述隊(duì)列的裝置包括用于將所述隊(duì)列從第一處理實(shí)體發(fā)射到第二處理實(shí)體的裝置;及 所述用于鎖定由所述多個(gè)資源請(qǐng)求指示的每一資源的裝置包括用于鎖定對(duì)應(yīng)于由所述第二處理實(shí)體控制的多個(gè)遠(yuǎn)程資源的由所述第一處理實(shí)體控制的多個(gè)局部資源的裝置。
26.根據(jù)權(quán)利要求24所述的方法,其中所述用于鎖定由所述多個(gè)資源請(qǐng)求指示的每一資源的裝置進(jìn)一步包括: 用于根據(jù)所述有向非循環(huán)圖排序由所述多個(gè)資源請(qǐng)求指示的所述多個(gè)資源的表示的裝置;及 用于按對(duì)應(yīng)于排序所述表示的結(jié)果的次序鎖定由所述多個(gè)資源請(qǐng)求指示的所有資源的裝置。
27.根據(jù)權(quán)利要求22所述的系統(tǒng),其中所述用于鎖定由所述多個(gè)資源請(qǐng)求指示的每一資源的裝置包括用于響應(yīng)于對(duì)資源請(qǐng)求的指示鎖定由所述資源請(qǐng)求指示的資源的裝置。
28.根據(jù)權(quán)利要求27所述的系統(tǒng),其中: 所述用于發(fā)射所述隊(duì)列的裝置包括用于將所述隊(duì)列從第一處理實(shí)體發(fā)射到第二處理實(shí)體的裝置 '及 所述用于鎖定由所述多個(gè)資源請(qǐng)求指示的每一資源的裝置包括用于鎖定對(duì)應(yīng)于由所述第二處理實(shí)體控制的多個(gè)遠(yuǎn)程資源的由所述第一處理實(shí)體控制的多個(gè)局部資源的裝置。
29.根據(jù)權(quán)利要求21所述的系統(tǒng),其進(jìn)一步包括用于將每一資源置于用于服務(wù)所述事務(wù)的一或多個(gè)請(qǐng)求的不連貫狀態(tài)中的裝置,所述不連貫狀態(tài)在所述事務(wù)期間延遲與請(qǐng)求相關(guān)聯(lián)的清除工作。
30.根據(jù)權(quán)利要求21所述的系統(tǒng),其進(jìn)一步包括用于響應(yīng)于接收到關(guān)于所述事務(wù)的外部請(qǐng)求改變用于與所述外部請(qǐng)求相關(guān)聯(lián)的所述資源中的一或多者的所述不連貫狀態(tài)以使得一或多個(gè)資源可服務(wù)所述外部請(qǐng)求的裝置。
31.一種包括計(jì)算機(jī)可用媒體的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)可用媒體具有體現(xiàn)于其中的計(jì)算機(jī)可讀程序代碼,所述計(jì)算機(jī)可讀程序代碼適于執(zhí)行以實(shí)施用于管理具有多個(gè)資源的便攜式計(jì)算裝置中的資源請(qǐng)求的方法,所述方法包括: 用客戶端發(fā)出資源請(qǐng)求事務(wù),所述資源請(qǐng)求需要所述多個(gè)資源中的兩個(gè)或兩個(gè)以上資源;及 使所述事務(wù)分叉以使得所述客戶端不等待所述事務(wù)的完成,且因此所述客戶端可發(fā)出額外事務(wù)或請(qǐng)求到其它資源。
32.根據(jù)權(quán)利要求31所述的計(jì)算機(jī)程序產(chǎn)品,其中實(shí)施所述方法的所述程序代碼進(jìn)一步包括: 提供對(duì)事件序列的指示,所述事件包含事務(wù)的開始、事務(wù)的結(jié)束及所述事務(wù)的所述開始與所述事務(wù)的所述結(jié)束之間的多個(gè)資源請(qǐng)求,每一資源請(qǐng)求指示由有向非循環(huán)圖定義的所述多個(gè)資源中的一或多者; 鎖定由所述多個(gè)資源請(qǐng)求指示的所述資源; 將與所述多個(gè)資源請(qǐng)求中的每一者相關(guān)聯(lián)的信息添加到隊(duì)列; 響應(yīng)于所述事務(wù)的所述結(jié)束的所述指示將所述隊(duì)列發(fā)射到接收者;及 在發(fā)射所述隊(duì)列之后解鎖所述多個(gè)資源。
33.根據(jù)權(quán)利要求32所述的計(jì)算機(jī)程序產(chǎn)品,其中將所述隊(duì)列發(fā)射到接收者包括將所述隊(duì)列從第一處理實(shí)體發(fā)射到第二處理實(shí)體。
34.根據(jù)權(quán)利要求32所述的計(jì)算機(jī)程序產(chǎn)品,其中鎖定由所述多個(gè)資源請(qǐng)求指示的每一資源包括響應(yīng)于對(duì)所述事務(wù)的所述開始的指示鎖定由所述多個(gè)資源請(qǐng)求指示的所有資源。
35.根據(jù)權(quán)利要求34所述的計(jì)算機(jī)程序產(chǎn)品,其中發(fā)射所述隊(duì)列包括:將所述隊(duì)列從第一處理實(shí)體發(fā)射到第二處理實(shí)體;及鎖定由所述多個(gè)資源請(qǐng)求指示的每一資源鎖定對(duì)應(yīng)于由所述第二處理實(shí)體控制的多個(gè)遠(yuǎn)程資源的由所述第一處理實(shí)體控制的多個(gè)局部資源。
36.根據(jù)權(quán)利要求34所述的計(jì)算機(jī)程序產(chǎn)品,其中鎖定由所述多個(gè)資源請(qǐng)求指示的每一資源進(jìn)一步包括: 根據(jù)所述有向非循環(huán)圖排序由所述多個(gè)資源請(qǐng)求指示的所述多個(gè)資源的表示;及 按對(duì)應(yīng)于排序所述表示的結(jié)果的次序鎖定由所述多個(gè)資源請(qǐng)求指示的所有資源。
37.根據(jù)權(quán)利要求32所述的計(jì)算機(jī)程序產(chǎn)品,其中鎖定由所述多個(gè)資源請(qǐng)求指示的每一資源包括響應(yīng)于對(duì)資源請(qǐng)求的指示鎖定由所述資源請(qǐng)求指示的資源。
38.根據(jù)權(quán)利要求31所述的計(jì)算機(jī)程序產(chǎn)品,其中發(fā)射所述隊(duì)列包括:將所述隊(duì)列從第一處理實(shí)體發(fā)射到第二處理實(shí)體;及鎖定由所述多個(gè)資源請(qǐng)求指示的每一資源鎖定對(duì)應(yīng)于由所述第二處理實(shí)體控制的多個(gè)遠(yuǎn)程資源的由所述第一處理實(shí)體控制的多個(gè)局部資源。
39.根據(jù)權(quán)利要求31所述的計(jì)算機(jī)程序產(chǎn)品,其中實(shí)施所述方法的所述程序代碼進(jìn)一步包括: 在所述事務(wù)的分叉期間,將每一資源置于用于服務(wù)所述事務(wù)的一或多個(gè)請(qǐng)求的不連貫狀態(tài)中,所述不連貫狀態(tài)延遲與請(qǐng)求相關(guān)聯(lián)的清除工作。
40.根據(jù)權(quán)利要求31所述的計(jì)算機(jī)程序產(chǎn)品,其中實(shí)施所述方法的所述程序代碼進(jìn)一步包括:響應(yīng)于接收到關(guān)于所述事務(wù)的外部請(qǐng)求,改變用于與所述外部請(qǐng)求相關(guān)聯(lián)的所述資源中的一或多者的所述不連貫狀態(tài)以使得一或多個(gè)資源可服務(wù)所述外部請(qǐng)求。
【文檔編號(hào)】G06F9/52GK103988180SQ201280059980
【公開日】2014年8月13日 申請(qǐng)日期:2012年11月9日 優(yōu)先權(quán)日:2011年12月7日
【發(fā)明者】諾曼·S·加爾加石, 維諾德·維賈雅拉詹 申請(qǐng)人:高通股份有限公司