專利名稱:用于多個內(nèi)核的并行執(zhí)行的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及多任務(wù)操作系統(tǒng)。更具體地說,本發(fā)明涉及通過使用公共中斷處理器和公共調(diào)度器以允許執(zhí)行多個內(nèi)核,從而在單個操作系統(tǒng)中支持多個內(nèi)核的特征。
背景技術(shù):
通?;谑褂貌僮飨到y(tǒng)的特殊應(yīng)用,對操作系統(tǒng)進(jìn)行設(shè)計,并對其操作進(jìn)行優(yōu)化。常常期望該操作系統(tǒng)具有一種類型的操作系統(tǒng)在另一操作系統(tǒng)中可用的特征。
例如,諸如Linux和Windows的通用計算機操作系統(tǒng)具有廣泛的一組特征,諸如文件系統(tǒng)、設(shè)備驅(qū)動程序、應(yīng)用程序、庫等。這樣的操作系統(tǒng)允許多個程序的并行執(zhí)行,并試圖優(yōu)化與并行地執(zhí)行程序的服務(wù)相關(guān)聯(lián)的響應(yīng)時間(也稱作等待時間)和CPU使用或負(fù)荷。然而,不幸的是,這樣的操作系統(tǒng)通常不適合于嵌入式實時應(yīng)用;例如,諸如機器人、電信系統(tǒng)、機床、汽車系統(tǒng)等的控制。諸如這些以及許多其他的基于真實世界、事件和控制的應(yīng)用需要所謂的硬實時性能。硬實時性能保證了最壞情況響應(yīng)時間。通用操作系統(tǒng)(GPOS)通常折衷了針對應(yīng)用程序的平均性能的程序執(zhí)行時間的可預(yù)測性。包括iTRONTM等的幾種已知的實時操作系統(tǒng)(RTOS)提供了硬實時特征。然而,遺憾的是,大多數(shù)RTOS不具有許多GPOS特征,并且,例如不提供對不同的文件系統(tǒng)、設(shè)備驅(qū)動程序、應(yīng)用程序庫等的支持。在許多應(yīng)用中,期望具有RTOS的性能和通用操作系統(tǒng)的特征。
例如,Linux是公知的通用操作系統(tǒng),具有包括現(xiàn)代操作系統(tǒng)特征、大量開發(fā)工具、聯(lián)網(wǎng)等的現(xiàn)代設(shè)備所期望的許多特征。然而,未將Linux設(shè)計為嵌入式操作系統(tǒng)。諸如而不限于機頂盒、移動電話以及汽車導(dǎo)航系統(tǒng)的許多現(xiàn)代設(shè)備,不僅需要諸如Linux的通用操作系統(tǒng)的特征,而且需要如實時性能的嵌入式操作系統(tǒng)的特征。
例如,iTRON是普遍用在大量嵌入式設(shè)備中的成熟的實時嵌入式操作系統(tǒng)。iTRON具有嵌入式設(shè)備所期望的許多特征,但是其缺乏諸如聯(lián)網(wǎng)、對不同文件系統(tǒng)的支持等的Linux的特征。
對GPOS和RTOS二者都需要的一個示例是在汽車中使用的導(dǎo)航系統(tǒng)的控制器。該控制器從GPS傳感器讀取數(shù)據(jù)以計算該汽車的位置和方向?;诋?dāng)前位置、目的地以及從導(dǎo)航數(shù)據(jù)DVD中提取的拓?fù)涞貓D,該控制器計算最佳路徑并在LCD屏上進(jìn)行顯示??梢杂糜|摸板覆蓋LCD屏,用來向?qū)Ш较到y(tǒng)輸入?yún)?shù)。讀傳感器的任務(wù)、觸摸板輸入的任務(wù)需要硬實時;計算路徑的任務(wù)、顯示圖形的任務(wù)、從DVD中讀取的任務(wù)是標(biāo)準(zhǔn)編程任務(wù),并使用通用操作系統(tǒng)的特征??梢酝ㄟ^使用諸如iTRON的RTOS內(nèi)核來實現(xiàn)硬實時性能,而同時可以在Linux內(nèi)核上運行通用任務(wù)。
對GPOS和RTOS二者都需要的另一示例是使用視頻數(shù)據(jù)壓縮硬件的固態(tài)數(shù)字視頻攝像機的控制器。在這樣的應(yīng)用中,期望讀取來自壓縮硬件的數(shù)據(jù)流并執(zhí)行圖像處理功能,同時在LCD屏上顯示并在可移動存儲介質(zhì)上存儲數(shù)據(jù)。也可能例如必須使用同一控制系統(tǒng)來管理光學(xué)變焦機構(gòu)和自動調(diào)焦機構(gòu)。如果系統(tǒng)使用一些傳統(tǒng)部件,則可能已存在針對特定RTOS(例如,iTRON)可用的廣泛的控制軟件??梢酝ㄟ^硬實時操作系統(tǒng)(hRTOS)來很好地處理控制電機的任務(wù)、數(shù)據(jù)收集和存儲的任務(wù),而同時可以由通常在GPOS下的標(biāo)準(zhǔn)編程來更好地管理顯示、圖像處理及其他功能。此外,將在iTRON中可用的廣泛的軟件移植到另一RTOS的成本通常是非常高的,而且在iTRON中提供顯示和文件系統(tǒng)支持等可能同樣不簡單。因此,在該示例中,對于該應(yīng)用,將RTOS的特點與通用操作系統(tǒng)的特點相組合的系統(tǒng)將是最佳的。
對GPOS和RTOS二者都需要的另一示例是在為了對特定功能進(jìn)行加速或附加特定功能性而需要使用專用硬件的系統(tǒng)中。例如,在許多多媒體設(shè)備中,必須使用圖形加速器芯片或用于音頻或視頻的DSP或CODEC。在一些情況下,如果操作系統(tǒng)可以為一些任務(wù)提供有保證的性能,則可以去除對附加硬件的需要。例如,在支持流式音頻的系統(tǒng)中,可能必須具有保證以確定的速率對壓縮的和編碼的音頻進(jìn)行解碼以避免分組丟失并保持確定的輸出質(zhì)量的高性能任務(wù)。在一些情況下,包括GPOS和RTOS的系統(tǒng)可能能夠去除對專業(yè)化硬件的需要,由此降低了產(chǎn)品成本。
可以將所有的真實世界系統(tǒng)分類為硬實時(HRT)系統(tǒng)、軟實時(SRT)系統(tǒng)或非實時(NRT)系統(tǒng)。硬實時系統(tǒng)是這樣的系統(tǒng),即,在該系統(tǒng)中,一個或更多個活動必須永不錯過最終期限或定時約束,否則認(rèn)為該任務(wù)已失敗。軟實時系統(tǒng)是這樣的系統(tǒng),即,該系統(tǒng)具有計時要求,但是只要應(yīng)用要求在總體上繼續(xù)得到滿足,則偶爾錯過這些計時要求具有可忽略的效果。最后,非實時系統(tǒng)是即非硬實時又非軟實時的系統(tǒng)。非實時任務(wù)不具有任何最終期限或定時約束。在許多現(xiàn)代應(yīng)用中,必須支持各種實時系統(tǒng)性能。例如,考慮網(wǎng)絡(luò)設(shè)備對安全應(yīng)用的要求。網(wǎng)絡(luò)設(shè)備可能必須在高速網(wǎng)絡(luò)連接上對每個網(wǎng)絡(luò)分組進(jìn)行采樣而不錯過單個分組(硬實時任務(wù))。硬實時任務(wù)將把這些分組存放在緩沖器中以隨后對其進(jìn)行處理。這可以使用hRTOS來實現(xiàn)。必須對該緩沖器中的這些分組采樣進(jìn)行處理和分類,但是偶爾的是,如果處理和分類慢下來,則只要該緩沖器未溢出,就將不存在問題(軟實時任務(wù))。這可以使用hRTOS中的任務(wù)與GPOS中的任務(wù)的組合來實現(xiàn)。在請求時,可以使用網(wǎng)絡(luò)服務(wù)器來對已處理的和已分類的數(shù)據(jù)進(jìn)行遞送。通常不存在對該活動的定時約束(即,非實時任務(wù));因此,可以在GPOS中執(zhí)行該任務(wù)。
鑒于以上所述,存在對于實現(xiàn)多內(nèi)核環(huán)境的系統(tǒng)(例如,GPOS和RTOS)的需要,該系統(tǒng)有效地且方便地提供多內(nèi)核的性能和特征并支持各種實時性能。
發(fā)明內(nèi)容
為了實現(xiàn)上述和其他目的,并根據(jù)本發(fā)明的目的,為在多個內(nèi)核之間的并行執(zhí)行和資源共享提供了多種技術(shù)。
描述了用于在多內(nèi)核環(huán)境中并行執(zhí)行多個內(nèi)核的一種方法、系統(tǒng)、計算機代碼和裝置。在本發(fā)明的一個方法實施例中,配置了主內(nèi)核和至少一個二級內(nèi)核,至少一個二級內(nèi)核處于所述主內(nèi)核的至少部分控制之下,并且配置了可選的公共調(diào)度器,該公共調(diào)度器對在所述主內(nèi)核和所述二級內(nèi)核的至少一個二級內(nèi)核中未決的處理的執(zhí)行進(jìn)行調(diào)度,并且配置了公共中斷處理器,該公共中斷處理器對所述主內(nèi)核和所述二級內(nèi)核中的至少一個二級內(nèi)核中的中斷和中斷處理的執(zhí)行進(jìn)行處理。根據(jù)另一實施例,還提供了一種用于實現(xiàn)上述方法的裝置。根據(jù)又一實施例,還提供了用于實現(xiàn)上述方法的計算機代碼。
提供了本發(fā)明的另一方法實施例,用于在多內(nèi)核環(huán)境中的多個內(nèi)核之間共享系統(tǒng)資源,其中,配置了主內(nèi)核和至少一個二級內(nèi)核,所述至少一個二級內(nèi)核在所述主內(nèi)核的至少部分控制之下,并且配置了用于在內(nèi)核之間進(jìn)行系統(tǒng)資源共享的應(yīng)用程序接口(API),調(diào)用內(nèi)核設(shè)置有用于其他內(nèi)核中的至少一些的合適的偽API調(diào)用。根據(jù)另一實施例,還提供了用于實現(xiàn)該方法的裝置。根據(jù)又一實施例,還提供了用于實現(xiàn)該方法的計算機代碼。
從應(yīng)結(jié)合附圖來閱讀的以下詳細(xì)描述中,本發(fā)明的其他特征、優(yōu)點和目的將變得更加清楚和更加易于理解。
在附圖中,通過示例的方式而非通過限制的方式來解釋本發(fā)明,并且在附圖中,相似的標(biāo)號表示相似的元件。在附圖中圖1例示了根據(jù)本發(fā)明實施例的使得能夠在一個硬件平臺上運行多個內(nèi)核的示例性體系結(jié)構(gòu)的圖;圖2例示了根據(jù)本發(fā)明實施例的用于并行地運行多個內(nèi)核的方法的流程圖;圖3例示了根據(jù)本發(fā)明實施例的用于圖2中所描述的主內(nèi)核的選擇的示例性方法的流程圖;
圖4例示了根據(jù)本發(fā)明實施例的用于圖2中所描述的啟動主內(nèi)核的示例性方法的流程圖;圖5例示了根據(jù)本發(fā)明實施例的用于圖2中所描述的(多個)二級內(nèi)核的選擇和添加的示例性方法的流程圖;圖6例示了根據(jù)本發(fā)明實施例的用于圖2中所描述的啟動二級內(nèi)核的示例性方法的流程圖;圖7例示了根據(jù)本發(fā)明實施例的用于多個內(nèi)核的公共中斷處理器和公共調(diào)度器的示例性體系結(jié)構(gòu)的框圖;圖8例示了根據(jù)本發(fā)明實施例的用于圖7的情境中的多個內(nèi)核的中斷屏蔽級的示例性圖表;圖9例示了根據(jù)本發(fā)明實施例的用于圖2的框圖和圖8的條形圖中所示的多個內(nèi)核的中斷屏蔽級的其他方面。
圖10例示了根據(jù)本發(fā)明實施例的用于通過周期信號來切換內(nèi)核的示例性方法的流程圖;圖11例示了本發(fā)明實施例的示例性框圖,其中,將公共系統(tǒng)調(diào)用用于多內(nèi)核資源共享;以及圖12例示了典型計算機系統(tǒng),在對該計算機系統(tǒng)進(jìn)行適當(dāng)?shù)呐渲没蛟O(shè)計時,其可以用作在其中可以具體實施本發(fā)明的計算機系統(tǒng)。
除非另外指明,否則不必按比例量度附圖中的圖示。
具體實施例方式
通過參照詳細(xì)附圖以及這里闡述的說明來最佳地理解本發(fā)明。
下面參照附圖詳述本發(fā)明的實施例。然而,本領(lǐng)域中的技術(shù)人員將容易理解,這里給出的關(guān)于這些附圖的詳細(xì)說明是出于說明性目的的,而本發(fā)明的范圍超出這些有限的實施例。
將在下面稍詳細(xì)地描述的本發(fā)明的一個方面是要操作兩個或更多個操作系統(tǒng)內(nèi)核而同時保持這兩個操作系統(tǒng)內(nèi)核的特征和能力。
通常,可能存在開發(fā)多內(nèi)核系統(tǒng)的許多動機。四個原因是1.一個內(nèi)核的性能特性可能是另一內(nèi)核中所期望的(例如,實時功能性可能是通用操作系統(tǒng)中所期望的)2.一個操作系統(tǒng)(或內(nèi)核)的特征可能是另一操作系統(tǒng)(或內(nèi)核)中所期望的(例如,文件系統(tǒng)、設(shè)備驅(qū)動程序、實時API、庫)3.在一些情況下,通過使用多內(nèi)核系統(tǒng)來去除對專業(yè)化硬件的需要,由此降低產(chǎn)品成本4.可能存在對于可以支持各種實時性能的、包括hRTOS和GPOS的系統(tǒng)的需要。
圖1例示了根據(jù)本發(fā)明實施例的使得能夠在一個硬件平臺上運行多個內(nèi)核的示例性體系結(jié)構(gòu)的圖。如該圖所示,在標(biāo)有“CPU”的傳統(tǒng)中央處理單元上執(zhí)行標(biāo)有內(nèi)核0、內(nèi)核1、內(nèi)核2、內(nèi)核n的多個內(nèi)核。應(yīng)理解,盡管該圖和以下公開內(nèi)容示出并詳述了單CPU系統(tǒng)的情境中的實施例和示例,但是按照本發(fā)明的教示并根據(jù)已知的技術(shù),本發(fā)明并不限于單CPU實現(xiàn),并且可以進(jìn)行合適的配置以使用多CPU系統(tǒng)來適當(dāng)?shù)貓?zhí)行本發(fā)明的教示。這里,稱內(nèi)核0為主內(nèi)核,內(nèi)核1、內(nèi)核2、...、內(nèi)核n代表由內(nèi)核0執(zhí)行的一定數(shù)量的內(nèi)核,內(nèi)核的數(shù)量通常可能受到系統(tǒng)資源的限制。這些內(nèi)核可以屬于通用操作系統(tǒng)(GPOS)或?qū)崟r操作系統(tǒng)(RTOS),并且各內(nèi)核可以在其所提供的特征和能力中寬泛地變化。
接下來將稍詳細(xì)地描述本發(fā)明的內(nèi)核選擇方面。圖2例示了根據(jù)本發(fā)明實施例的用于并行地運行多個內(nèi)核的方法的流程圖。所示的本處理中的各步驟將在后續(xù)附圖中更詳細(xì)地單獨地進(jìn)行示出。該處理由選擇在步驟210中選擇的具有最大能力和最多特征的通用操作系統(tǒng)或操作系統(tǒng)的內(nèi)核(例如,圖1中的那些內(nèi)核)作為主內(nèi)核(內(nèi)核0)開始,并在步驟220中啟動主內(nèi)核(內(nèi)核0)。在本示例的情境中,啟動該主內(nèi)核包括硬件加電、裝入引導(dǎo)裝入器,該引導(dǎo)裝入器適當(dāng)?shù)匮b入或執(zhí)行內(nèi)核0。內(nèi)核0在啟動時啟動中斷處理器、調(diào)度器、任務(wù)管理器等,并通過安裝合適的驅(qū)動程序來對系統(tǒng)硬件進(jìn)行初始化。接著,在步驟230中,添加在該主內(nèi)核中不具備的但期望具備的具有給定的目標(biāo)應(yīng)用所期望的特定特征的內(nèi)核作為該主內(nèi)核的動態(tài)模塊(例如,內(nèi)核1、內(nèi)核2、...、內(nèi)核n)。該處理在步驟230處循環(huán),回到步驟230,直至添加了所有期望的內(nèi)核為止。
各二級內(nèi)核在激活時優(yōu)選地被分配唯一的內(nèi)核標(biāo)識方式(ID),下面將稍詳細(xì)地例示該標(biāo)識的使用。優(yōu)選地預(yù)分配這些內(nèi)核ID。在步驟240中,根據(jù)已預(yù)分配的中斷屏蔽和內(nèi)核ID,由主內(nèi)核對已添加的內(nèi)核進(jìn)行選擇,然后在步驟250中,激活已添加的(或二級)內(nèi)核內(nèi)核1、內(nèi)核1、...、內(nèi)核n作為動態(tài)模塊。
圖3例示了根據(jù)本發(fā)明實施例的用于圖2中所描述的主內(nèi)核的選擇的示例性方法的流程圖。該處理在選擇具有最期望的能力和特征的公共中斷處理器的步驟310開始。接著在步驟320中,將該公共中斷處理器所屬的內(nèi)核指定為主內(nèi)核。在步驟330中,選擇調(diào)度器作為公共調(diào)度器。該調(diào)度器可以是主內(nèi)核或任何其他內(nèi)核的調(diào)度器。取決于具體應(yīng)用的需要,本發(fā)明的另選實施例可以實現(xiàn)或相反使得主內(nèi)核和/或本系統(tǒng)能夠使用任何合適的中斷處理器或調(diào)度器。在本發(fā)明另一實施例中,可以不存在主控制內(nèi)核,而是由公共任務(wù)調(diào)度器和公共中斷處理器來控制多內(nèi)核系統(tǒng)中的所有內(nèi)核,這些內(nèi)核并不直接地互相控制。在本發(fā)明另一實施例中,可以不使用主內(nèi)核的中斷處理器,而是在主內(nèi)核之外實現(xiàn)另一中斷處理器,在該情形下,可以根據(jù)已知的技術(shù)來實現(xiàn)中斷處理器仿真器,并且可以另外實現(xiàn)本發(fā)明的其他新穎方面。應(yīng)理解,在本實施例中,將其默認(rèn)中斷處理器用于公共中斷處理器的內(nèi)核自動地成為多內(nèi)核系統(tǒng)的主內(nèi)核。還應(yīng)理解的是,在一些應(yīng)用中,系統(tǒng)設(shè)計者可以選擇去除主內(nèi)核的默認(rèn)中斷處理器并用另一中斷處理器來代替它,其中,任一情況下,將主內(nèi)核可用的有效的中斷處理器認(rèn)為是針對本實施例的目的的內(nèi)核的一部分。根據(jù)本發(fā)明的教示的公共中斷處理器的其他合適的實現(xiàn)變化的多樣性對于本領(lǐng)域中的技術(shù)人員將變得更清楚。
回到圖3,在步驟340和步驟350中,分別將唯一的ID和中斷屏蔽級分配給主內(nèi)核。下面將稍詳細(xì)地描述中斷屏蔽級。
圖4例示了根據(jù)本發(fā)明實施例的用于圖2中所描述的啟動主內(nèi)核的示例性方法的流程圖。該處理在安裝主內(nèi)核的公共中斷處理器的步驟410開始。接著在步驟420中安裝公共調(diào)度器。在步驟430中安裝公共應(yīng)用程序接口(API)用于資源共享。預(yù)先已知,是否將存在一個或更多個二級內(nèi)核,或者,所選擇的二級內(nèi)核的何種特定資源將對資源共享是可用的。用于資源共享的公共API允許資源的無限共享,而無需預(yù)先知曉資源API的細(xì)節(jié)。在步驟440中,安裝周期任務(wù)或處理,該周期任務(wù)或處理根據(jù)取決于具體應(yīng)用的期望的切換方案而將執(zhí)行切換到二級內(nèi)核。在優(yōu)選的實施例中,通過硬件計時器中斷來觸發(fā)內(nèi)核之間的切換。取決于具體應(yīng)用的需要,本領(lǐng)域中的技術(shù)人員可以按照本發(fā)明的教示來建議其他合適的可能是非周期的或是事件驅(qū)動的切換方案。通過示例的方式而非通過限制的方式,包括周期方案、非周期方案、基于事件的方案、基于優(yōu)先級的方案的合適的內(nèi)核切換方案可以用于內(nèi)核之間的切換。
圖5例示了根據(jù)本發(fā)明實施例的用于圖2中所描述的(多個)二級內(nèi)核的選擇和添加的示例性方法的流程圖。該處理在步驟510開始,在該步驟中,選擇具有從在其中將安裝多內(nèi)核軟件的系統(tǒng)的需要導(dǎo)出的一組期望的能力和特征的二級內(nèi)核。分別在步驟520和步驟530中將唯一的ID和中斷屏蔽級分配給二級內(nèi)核。
圖6例示了根據(jù)本發(fā)明實施例的用于圖2中所描述的啟動二級內(nèi)核的示例性方法的流程圖。該處理在步驟610開始,在該步驟中,將用于二級內(nèi)核的所謂“連接程序(hook)”安裝到主內(nèi)核的公共中斷處理器中。接著在步驟620中,將用于二級內(nèi)核的連接程序安裝到公共調(diào)度器中。在步驟630中,將用于二級內(nèi)核的連接程序安裝到公共應(yīng)用編程接口(API)中。該連接程序使得實現(xiàn)了從主內(nèi)核中的控制應(yīng)用(例如,中斷處理器或調(diào)度器或公共API)到與該連接程序相關(guān)聯(lián)的特定二級內(nèi)核的控制路徑。
接下來將稍詳細(xì)地描述本發(fā)明的中斷屏蔽和內(nèi)核優(yōu)先級方面。所有現(xiàn)代計算機系統(tǒng)都具有可以選擇性地啟用或禁用的中斷。中斷屏蔽級確定允許哪些中斷以及不允許哪些中斷對處理器進(jìn)行中斷。圖7例示了根據(jù)本發(fā)明實施例的用于多個內(nèi)核的公共中斷處理器和公共調(diào)度器的示例性體系結(jié)構(gòu)的框圖。在該圖中,內(nèi)核0的屏蔽級是這樣的以致允許所有的中斷。在本發(fā)明的優(yōu)選實施例中,為各二級內(nèi)核分配僅當(dāng)該內(nèi)核運行時才啟用的中斷范圍。在本實施例中,這通過使用屏蔽級來實現(xiàn)。
大多數(shù)現(xiàn)代處理器支持中斷屏蔽級。如上所指出的,內(nèi)核屏蔽級確定內(nèi)核允許哪些中斷以及不允許哪些中斷。然而應(yīng)注意,即使中斷可能是內(nèi)核所允許的,但也可能不由該內(nèi)核來處理它。因此,本實施例具有關(guān)于內(nèi)核和中斷的三個中斷條件(1)內(nèi)核可以阻塞中斷,(2)內(nèi)核可以允許中斷但不對該中斷進(jìn)行處理,以及(3)內(nèi)核可以允許中斷并且對該中斷進(jìn)行處理。假定將某個內(nèi)核允許并處理的中斷分配給該內(nèi)核。此外,內(nèi)核0允許并處理所有的中斷。也可以將各中斷唯一地分配給任一其他內(nèi)核。因此,在本實施例的方法下,中斷必須是內(nèi)核0所允許并處理的,并且一個且僅一個其他內(nèi)核可以允許并處理該中斷。本發(fā)明的一些實施例還為中斷提供了優(yōu)先級,可以由CPU的設(shè)計來指定這些優(yōu)先級,或者由本領(lǐng)域中的技術(shù)人員所知的其他方法來指定。
在本實施例的典型應(yīng)用中,在多內(nèi)核系統(tǒng)的設(shè)計處理中,優(yōu)選地指定中斷的優(yōu)先級,以使得將最高優(yōu)先級的中斷分配給具有最高的執(zhí)行優(yōu)先級的內(nèi)核。如圖7所示,內(nèi)核1具有高于內(nèi)核0的優(yōu)先級,內(nèi)核2具有高于內(nèi)核1的優(yōu)先級,等等。內(nèi)核n具有最高的優(yōu)先級。因此,內(nèi)核0可以被內(nèi)核1、內(nèi)核2、...、內(nèi)核n占先。內(nèi)核1可以被內(nèi)核2至內(nèi)核n占先。內(nèi)核n不能被任何內(nèi)核占先。按照本發(fā)明的教示,其他另選的和合適的中斷優(yōu)先化方案對于本領(lǐng)域中的技術(shù)人員將容易地變得清楚。
接下來將稍詳細(xì)地描述本發(fā)明的中斷處理方面。本發(fā)明的新穎方面在于首先對公共中斷處理器進(jìn)行選擇。與該公共中斷處理器相關(guān)聯(lián)的內(nèi)核稱為主內(nèi)核。在優(yōu)選的實施例中,由內(nèi)核0中斷處理器對所有的中斷進(jìn)行處理。在接收中斷(710)時,內(nèi)核0執(zhí)行非內(nèi)核特定中斷服務(wù)例程,并接著將控制傳遞到該特定中斷所分配給的內(nèi)核的中斷處理器。再參照圖7,當(dāng)分配給內(nèi)核n的中斷N發(fā)生時,首先由內(nèi)核0處理器對其進(jìn)行處理,然后調(diào)用內(nèi)核n的中斷服務(wù)例程,在該情況下內(nèi)核n在此稱為目標(biāo)內(nèi)核(720)。應(yīng)注意,當(dāng)調(diào)用中斷處理器時,中斷處理器執(zhí)行內(nèi)核獨立中斷處理功能;并且,將控制傳遞到目標(biāo)內(nèi)核的中斷服務(wù)例程。使用中斷屏蔽級來優(yōu)選地識別目標(biāo)內(nèi)核。在這種方式中,內(nèi)核0的中斷處理器用作多內(nèi)核系統(tǒng)的公共中斷處理器。
圖8例示了根據(jù)本發(fā)明實施例的用于圖7的情境中的多個內(nèi)核的中斷屏蔽級的示例性圖表。該圖示出本實施例中的中斷屏蔽級如何用于為各中斷確定目標(biāo)內(nèi)核。在該圖表的左側(cè)或軸上將中斷號示出為升序號,N為中斷的總數(shù)量。
豎條的打點的(或大部分空白的)區(qū)域(810)示出相應(yīng)內(nèi)核所處理并允許的中斷。陰影區(qū)域(820)示出相應(yīng)內(nèi)核所允許的中斷。磚塊紋理區(qū)域(830)示出當(dāng)相應(yīng)內(nèi)核正運行時,即在CPU時間的控制之下,被阻塞的中斷。
圖9例示了根據(jù)本發(fā)明實施例的用于圖2的框圖和圖8的條形圖中所示的多個內(nèi)核的中斷屏蔽級的其他方面。該圖中所示為屏蔽級如何確定內(nèi)核將處理哪些中斷、內(nèi)核可以禁用哪些中斷以及給定的內(nèi)核可以啟用哪些中斷的示例。在該圖表的左側(cè)或軸上將中斷號示出為升序號(910),N為中斷的總數(shù)量。
具體地說,在最右邊條處的豎條中,將第i個內(nèi)核表示為Ki,“ai”(920)表示可以由內(nèi)核Ki啟用的中斷,“bi”(930)表示可以由內(nèi)核Ki禁用的中斷,“ci”(940)表示可以由內(nèi)核Ki處理的中斷。
接下來將稍詳細(xì)地描述本發(fā)明的調(diào)度方面。在大多數(shù)傳統(tǒng)操作系統(tǒng)中,使用硬件計時器來周期性地調(diào)用調(diào)度器。通常將硬件計時器設(shè)置為觸發(fā)周期中斷以起動調(diào)度事件。多內(nèi)核系統(tǒng)中的各內(nèi)核可以取決于該操作系統(tǒng)的目的而具有用于調(diào)用調(diào)度器的不同的周期。非限制性地例如,在通用操作系統(tǒng)的情況下,10毫秒周期對于期望的性能可能是足夠的。然而,在實時內(nèi)核的情況下,可能必須每100毫秒具有一次調(diào)度事件。
在本實施例中,為多內(nèi)核系統(tǒng)選擇公共調(diào)度器。所有的調(diào)度事件優(yōu)選地首先由該公共調(diào)度器進(jìn)行接收。在執(zhí)行內(nèi)核獨立調(diào)度功能之后,該調(diào)度器優(yōu)選地對當(dāng)前運行的內(nèi)核的調(diào)度器的控制(730)進(jìn)行傳遞。為了該示例的目的,將當(dāng)前運行的內(nèi)核定義為當(dāng)調(diào)度事件發(fā)生時運行的內(nèi)核。
接下來將稍詳細(xì)地描述本發(fā)明的多內(nèi)核執(zhí)行方面。本發(fā)明的另一新穎方面在于即使當(dāng)較高優(yōu)先級的內(nèi)核正在執(zhí)行時,系統(tǒng)也允許在機會出現(xiàn)時(即,高優(yōu)先級的內(nèi)核中的任務(wù)不在運行狀態(tài)-例如,等待、睡眠、休眠、...等)執(zhí)行較低優(yōu)先級的內(nèi)核中的任務(wù)。
圖10例示了根據(jù)本發(fā)明實施例的用于通過周期信號來切換內(nèi)核的示例性方法的流程圖。在該圖所示的實施例中,通用內(nèi)核(內(nèi)核0,未示出)運行周期處理,該周期處理通過在步驟1005中產(chǎn)生觸發(fā)內(nèi)核切換處理的周期信號來從一個內(nèi)核切換到另一內(nèi)核,由此該處理開始進(jìn)行首先確定在另一內(nèi)核中存在任何未決任務(wù)。這可以通過許多合適的方法來實現(xiàn);該圖中示出了一個合適的方法,其中,采用了一系列輪詢方法來確定鏈中的內(nèi)核是否具有任何要執(zhí)行的未決任務(wù)。在所示的示例中,在步驟1005中產(chǎn)生周期信號時,內(nèi)核1輪詢?nèi)魏我獔?zhí)行的未決任務(wù)。如果內(nèi)核1具有一個或更多個要執(zhí)行的未決任務(wù)(“是”路徑),則例如通過將當(dāng)前運行id改變?yōu)閮?nèi)核1的id以由此將CPU時間轉(zhuǎn)換為執(zhí)行該(多個)未決任務(wù)來實現(xiàn)內(nèi)核1中的(多個)未決任務(wù)的執(zhí)行。如果內(nèi)核1不具有要執(zhí)行的未決任務(wù)(“否”路徑),則該處理繼續(xù)輪詢下一內(nèi)核;例如步驟1020中的內(nèi)核2,針對鏈中的各后續(xù)內(nèi)核以相同的方式繼續(xù)該處理,直到達(dá)到最后內(nèi)核(步驟1030中的內(nèi)核n)為止。一旦已執(zhí)行了內(nèi)核中的所有的未決任務(wù)或沒有發(fā)現(xiàn)未決任務(wù)(即,通過步驟1010至1030的“否”路徑),該處理就終止了,并且重新開始執(zhí)行內(nèi)核0任務(wù)。然而,在本發(fā)明的一些另選實施例中,不是在返回對主內(nèi)核的控制之前必須完成所有的未決任務(wù),而是可以根據(jù)已知的技術(shù)來實現(xiàn)另一輪詢或切換方案(非限制性地例如,首先僅服務(wù)最高優(yōu)先級的內(nèi)核,并接著服務(wù)在隨后的途徑上的較低優(yōu)先級內(nèi)核等)以在將控制返回到主內(nèi)核之前服務(wù)未決處理的至少一部分。該處理在步驟1005中產(chǎn)生下一周期信號時重新開始。取決于具體應(yīng)用的需要,本領(lǐng)域中的技術(shù)人員將認(rèn)識到按照本發(fā)明的教示的多種另選的和合適的切換方案。
接下來將稍詳細(xì)地描述本發(fā)明的多內(nèi)核資源共享方面。本發(fā)明的又一新穎方面在于可以在主內(nèi)核與任何二級內(nèi)核之間以及二級內(nèi)核之間對資源進(jìn)行共享。在許多應(yīng)用中,通常期望從一個操作系統(tǒng)內(nèi)核使用其他操作系統(tǒng)內(nèi)核的特征和資源。在一些情況下,這可能是實現(xiàn)多內(nèi)核系統(tǒng)的主要促進(jìn)因素。
圖11例示了本發(fā)明實施例的示例性框圖,其中,將公共系統(tǒng)API用于多內(nèi)核資源共享。在本實施例中,通過為支持主內(nèi)核與二級內(nèi)核之間的資源共享(例如,文件系統(tǒng)、設(shè)備驅(qū)動程序、庫等)的各內(nèi)核定義偽API系統(tǒng)調(diào)用(例如,系統(tǒng)調(diào)用1、系統(tǒng)調(diào)用2、...、系統(tǒng)調(diào)用n)來實現(xiàn)多內(nèi)核資源共享。在優(yōu)選的實施例中,主內(nèi)核具有針對各內(nèi)核的偽API調(diào)用,主內(nèi)核支持主內(nèi)核與二級內(nèi)核之間的資源共享。當(dāng)將二級內(nèi)核激活為主內(nèi)核的動態(tài)模塊時,由真實(actual)API調(diào)用代替?zhèn)蜛PI調(diào)用。
當(dāng)從主內(nèi)核執(zhí)行真實API調(diào)用時,二級內(nèi)核調(diào)用與該API相對應(yīng)的特定函數(shù)調(diào)用,并且在二級內(nèi)核下運行該函數(shù)。以這種方式,使得主內(nèi)核可以利用二級內(nèi)核的API。因此,應(yīng)用(用戶和系統(tǒng))可以得到二級內(nèi)核的特征。當(dāng)用戶應(yīng)用(1110)請求主內(nèi)核(1120)執(zhí)行內(nèi)核n的API時,主內(nèi)核(1120)使用用于資源共享的公共API系統(tǒng)調(diào)用0(1130)來調(diào)用用于內(nèi)核n(1140)中的資源共享的公共API系統(tǒng)調(diào)用n。用于內(nèi)核n中的資源共享的公共API系統(tǒng)調(diào)用n(1150)調(diào)用用戶應(yīng)用所請求的特定API。
下面詳述本發(fā)明的具體實施例,該實施例將該處理示例為應(yīng)用于Linux(GPOS)和iTRON(RTOS)操作系統(tǒng)。應(yīng)理解,本領(lǐng)域中的技術(shù)人員將容易地認(rèn)識到如何對任何合適的GPOS和RTOS進(jìn)行適當(dāng)?shù)嘏渲靡愿鶕?jù)本發(fā)明的教示來進(jìn)行操作。如同本發(fā)明認(rèn)識到的,包括諸如Linux內(nèi)核的GPOS和諸如iTRON內(nèi)核的RTOS的混合系統(tǒng)將具有許多現(xiàn)代嵌入式設(shè)備所最期望的特征。
在上述教示的上下文中,在本實施例中,選擇Linux內(nèi)核作為通用操作內(nèi)核(k0),并選擇iTRON作為二級內(nèi)核(k1)。分別選擇Linux的調(diào)度器和中斷處理器作為系統(tǒng)的公共調(diào)度器和公共中斷處理器。在啟動計算機時,首先啟動Linux內(nèi)核。插入iTRON內(nèi)核作為Linux內(nèi)核的運行時間動態(tài)模塊。例如將唯一的內(nèi)核ID 0和1分別分配給Linux和iTRON??梢詾閕TRON內(nèi)核1分配中斷屏蔽級11至15(例如適合于Hitachi SH-4實現(xiàn)中)。因此,例如若iTRON內(nèi)核正在運行具有屏蔽級1至10的中斷,則不允許中斷。
因為將Linux調(diào)度器用作系統(tǒng)的公共調(diào)度器,所以系統(tǒng)使用硬件計時器來周期地調(diào)用Linux調(diào)度器。當(dāng)觸發(fā)調(diào)度事件時,調(diào)用該Linux調(diào)度器。該Linux調(diào)度器確定當(dāng)調(diào)用該調(diào)度器時正在運行的內(nèi)核的內(nèi)核id。如果正在運行的內(nèi)核是Linux,那么例如調(diào)用linux_schedule()函數(shù),如通過以下偽代碼所例示的#define DUET_NUM_KERNELS 2 /* 假設(shè)兩個內(nèi)核(一個主內(nèi)核比方說Linux和一個二級內(nèi)核比方說itron) */#define DUET_NUM_POINTERS 3typedef int(*duetptr)(unsigned long);typedef int(*duetptr2)(signed long,unsigned long,unsigned long *,unsigned long *);int linux_do_IRQ(unsigned long);int duet_running_kernel=0;int linux_sys_call(signed long function_id,unsigned long argc,unsignedlong * arg_type,unsigned long * arg_arr){return 0;}duetptr duetptrarr[DUET_NUM_KERNELS][DUET_NUM_POINTERS]={{linux_schedule,linux_do_IRQ,0},{0,0,0}};duetptr2 duetptr2arr[DUET_NUM_KERNELS][DUET_NUM_POINTERS]={{linux_sys_call,0,0},
{0,0,0}};asmlinkage int sys_duet_sys_call(signed long kernel_id,signed longfunction_id,unsigned long argc,unsigned long*arg_type,unsigned long*arg_arr){if(duetptr2arr[kernel_id][2])return duetptr2arr[kernel_id][2](function_id,argc,arg_type,arg_arr);elsereturn-200; /* 無效內(nèi)核 */}asmlinkage void schedule(void){duetptrarr[duet_running_kernel]
(0);}可以取決于哪個內(nèi)核正在運行而對某些中斷進(jìn)行屏蔽。例如,當(dāng)iTRON內(nèi)核正在運行時,對具有屏蔽級1至10的所有中斷(例如,SH-4實現(xiàn))進(jìn)行屏蔽。如果具有屏蔽級11至15的中斷發(fā)生,則調(diào)用Linux中斷處理器。Linux中斷處理器執(zhí)行非iTRON專用代碼,接著使用do_IRQ來執(zhí)行iTRON中斷處理器,如通過以下偽代碼所例示的asmlinkage int do_IRQ(unsigned long r4,unsigned long r5,unsigned long r6,unsigned long r7,struct pt_regs regs){return duetptrarr[duet_running_kernel][1]((unsigned long)&regs);}在本實施例中,如果需要安裝二級內(nèi)核(諸如iTRON),那么主內(nèi)核首先安裝以在內(nèi)核之間切換執(zhí)行為目的的周期信號。該周期信號可以由硬件計時器來觸發(fā)。當(dāng)該周期信號發(fā)生時,中斷處理器確定在二級內(nèi)核(iTRON)中是否存在任何未決執(zhí)行任務(wù),如果不存在,則將執(zhí)行傳遞到Linux內(nèi)核。這允許在二級內(nèi)核空閑的同時在主內(nèi)核中執(zhí)行任務(wù)。
在本實施例中,當(dāng)主內(nèi)核(例如,Linux內(nèi)核)將執(zhí)行傳遞到二級內(nèi)核(例如,iTRON內(nèi)核)時,首先將中斷屏蔽級改變?yōu)樵摱墐?nèi)核(iTRON)的中斷屏蔽級是優(yōu)選的。非限制性地例如,當(dāng)將執(zhí)行傳送到iTRON時,通過調(diào)用如下所示的linux_2_itron()來設(shè)置中斷屏蔽級。其將中斷屏蔽設(shè)置為0x000000A0?,F(xiàn)將僅允許11與15之間的中斷。如果具有中斷級0至10的中斷發(fā)生,則忽略該中斷,如通過以下偽代碼所例示的void linux_2_itron(void){/* 屏蔽 */duet_imasks=0x000000A0;/* 設(shè)置iTRON調(diào)度,IRQ */duet_running_kernel=1;}當(dāng)將執(zhí)行從iTRON傳送回Linux時,將中斷屏蔽設(shè)置為允許所有中斷的0x00000000。應(yīng)注意,在對執(zhí)行進(jìn)行傳送之前,還將內(nèi)核id改變?yōu)橐獙⒃搱?zhí)行傳遞到的內(nèi)核的id。例如,當(dāng)將執(zhí)行從Linux傳遞到iTRON時,內(nèi)核id從0改變?yōu)?。當(dāng)將執(zhí)行返回Linux時,內(nèi)核id從1改變?yōu)?,如通過以下偽代碼所例示的void itron_2_linux(void){/* 設(shè)置linux調(diào)度,IRQ */duet_running_kernel=0;/* 無屏蔽 */duet_imasks=0x00000000;}在Hitachi SHx系列處理器上實現(xiàn)以上系統(tǒng)。Hitachi SHx處理器和許多其他處理器都支持顯式中斷優(yōu)先級。在硬件中不支持中斷優(yōu)先級的系統(tǒng)中,可以通過仿真或一些其他技術(shù)來在軟件中實現(xiàn)中斷優(yōu)先級。
大多數(shù)傳統(tǒng)實時嵌入式系統(tǒng)使用基于事件的編程;即,當(dāng)特定事件發(fā)生時執(zhí)行任務(wù)。在良好編程的嵌入式計算機系統(tǒng)中,系統(tǒng)CPU大部分時間處于休息空閑狀態(tài)。可以將大多數(shù)(若非所有的)嵌入式應(yīng)用視為包括三種類型的任務(wù);這三種類型的任務(wù)是,硬實時(HRT)、軟實時(SRT)和非實時或常規(guī)(NRT),在接下來將對其進(jìn)行稍詳細(xì)描述的本發(fā)明的實施例中將影響這些任務(wù)模型以及相應(yīng)的中斷模型。在該情境中,本發(fā)明的另一方面利用嵌入式系統(tǒng)中的該典型空閑時間來提高通用操作系統(tǒng)的性能和占空度。在本發(fā)明的影響上述任務(wù)模型和系統(tǒng)空閑時間的一個實施例中,將HRT任務(wù)實現(xiàn)為RTOS內(nèi)核中的一個或多個任務(wù),非限制性地例如使用iTRON API的iTRON內(nèi)核;使用一個或多個RTOS內(nèi)核來實現(xiàn)SRT任務(wù),非限制性地例如iTRON API和/或一個或多個GPOS內(nèi)核,非限制性地例如Linux庫(系統(tǒng)調(diào)用和內(nèi)核API);并且,使用一個或多個GPOS內(nèi)核來實現(xiàn)NRT任務(wù),非限制性地例如標(biāo)準(zhǔn)Linux API。
本實施例適合于使用已知的或尚待開發(fā)的RTOS和GPOS系統(tǒng)的任何組合;然而,為了后續(xù)討論清楚,將假設(shè)RTOS是iTRON且GPOS是Linux。根據(jù)本實施例的方法,只要在iTRON內(nèi)核中存在未決執(zhí)行任務(wù),Linux處理就不會得到對其進(jìn)行執(zhí)行的機會。如果存在多于一個準(zhǔn)備執(zhí)行的任務(wù),則首先執(zhí)行具有最高優(yōu)先級的任務(wù),接著執(zhí)行具有次最高優(yōu)先級的任務(wù)等等,直到不再存在處于準(zhǔn)備好的或未決狀態(tài)的任務(wù)為止。
在iTRON系統(tǒng)中不存在未決執(zhí)行任務(wù)的情況下,將執(zhí)行控制傳遞到Linux,其中,同樣首先執(zhí)行具有最高執(zhí)行優(yōu)先級的任務(wù)。為了保持等待時間合理地小,所有的SRT任務(wù)都具有比標(biāo)準(zhǔn)Linux處理(即,NRT任務(wù))更高的執(zhí)行優(yōu)先級。在優(yōu)選的實施例中,使用Linux“RT優(yōu)先級”來實現(xiàn)Linux中的SRT與NRT之間的優(yōu)先級系統(tǒng)。因此,直到不存在SRT未決執(zhí)行任務(wù)才執(zhí)行NRT處理。在另選的實施例中,可以實現(xiàn)任何合適的公共域或?qū)S袃?yōu)先級管理系統(tǒng)以管理HRT、SRT和NRT處理的優(yōu)先級和調(diào)度。
如先前所提到的,本發(fā)明的另一新穎方面在于這樣的處理,即,通過該處理多個內(nèi)核可以共享諸如文件系統(tǒng)、設(shè)備驅(qū)動程序、庫等的資源。在本發(fā)明的一個實施例中,通過為支持資源共享的各內(nèi)核定義偽API調(diào)用來實現(xiàn)該資源共享處理。非限制性地例如,非常期望從GPOS內(nèi)核(例如,Linux)中使用在RTOS內(nèi)核(例如,iTRON)中可利用的特征。下面非限制性地通過偽代碼示例表示針對iTRON內(nèi)核的偽API調(diào)用#define ITRON_BAS_ERR300int itron_syscall(signed long function_id,unsigned long argc,unsignedlong * arg_type,unsigned long * arg_arr){switch(function_id)
/************************************************//* 函數(shù)代碼 *//************************************************//* 4.1節(jié)任務(wù)管理服務(wù)調(diào)用 */case TFN_CRE_TSK/*(-0x05)*/case TFN_DEL_TSK/*(-0x06)*/case TFN_ACT_TSK/*(-0x07)*//*4.4.1節(jié)信標(biāo)(semaphore)服務(wù)調(diào)用 */case TFN_CRE_SEM/*(-0x21)*/return(cre_sem((ID)arg_arr
,(T_CSEM *)arg_arr[1])-ITRON_BAS_ERR);case TFN_DEL_SEM/*(-0x22)*/return(del_sem((ID)arg_arr
)-ITRON_BAS_ERR);case TFN_SIG_SEM/*(-0x23)*/return(sig_sem((ID)arg_arr
)-ITRON_BAS_ERR);defaultreturn INVALID_FUNCTION}}
當(dāng)首次激活(裝入)二級內(nèi)核作為動態(tài)運行時間模塊時,將偽API調(diào)用連接到真實API。當(dāng)在Linux下激活iTRON作為動態(tài)模塊時,由真實API調(diào)用代替?zhèn)蜛PI調(diào)用。以這種方式,使得主內(nèi)核(例如,本示例中的Linux)可以利用全部二級內(nèi)核(例如,本示例中的iTRON)API,如在以下偽代碼中所非限制性地例示的asmlinkage int sys_duet_sys_call(signed long kernel_id,singed longfunction_id,unsigned long argc,unsigned long *arg_type,unsigned long*arg_arr){if(duetptr2arr[kernel_id][2])return duetptr2arr[kernel_id][2](function_id,argc,arg_type,arg_arr);elsereturn INVALID_KERNEL_;/* 無效內(nèi)核 */}duetptr2 duetptr2arr[DUET_NUM_KERNELS][DUET_NUM_POINTERS]={{linux_sys_call,0,0},{0,0,0}};為了將本實施例用于Linux的運行時間動態(tài)模塊,可以通過示例且非限制性的方式使用以下偽代碼void duet_init_itron(void)/* 設(shè)置duet進(jìn)度,IRQ */duetptrarr[1]
=itron_schedule;duetptrarr[1][1]=itron_IRQ;duetptr2arr[1][2]=itron_syscall;/* 安裝itron_syscall */duet_imaskc=0x000000D0;
duet_imasks=0x00000000;}當(dāng)移除RTOS模塊(例如,iTRON)時,如在以下偽代碼中所非限制性地例示地移除偽APIvoid duet_deinit_itron(void){duetptr2arr[1][2]=0;/* 卸載itron_syscall */duet_imaskc=0x000000F0;duet_imasks=0x00000000;}以這種或類似的方式,通過使用偽API調(diào)用,主內(nèi)核可以執(zhí)行專門使得主內(nèi)核可以通過偽API來利用的二級內(nèi)核函數(shù)??梢云谕?,該機制使得可以使用兩個內(nèi)核之間的復(fù)雜的相互作用,該相互作用包括但不限于數(shù)據(jù)共享、任務(wù)同步和通信功能(信標(biāo)、事件標(biāo)志、數(shù)據(jù)隊列、信箱)。通過使用偽API和使用GPOS(例如,Linux)系統(tǒng)調(diào)用,按照本發(fā)明的教示,本領(lǐng)域中的技術(shù)人員可以在實時嵌入式程序中開發(fā)可以利用Linux的豐富特性(例如,文件系統(tǒng)、驅(qū)動程序、網(wǎng)絡(luò)等)的程序。本發(fā)明的一些實施例可能不包括上述公共調(diào)度器和/或公共偽API,因為它們是可選的。即,可以使用本發(fā)明的公共中斷處理器來運行多個內(nèi)核,而無需公共調(diào)度器和/或公共偽API。然而,在許多應(yīng)用中,公共調(diào)度器提供提高的性能和更佳的誤差處理。不需要多個內(nèi)核之間的資源共享的應(yīng)用可以不實現(xiàn)本發(fā)明的上述公共偽API方面。
圖12例示了典型計算機系統(tǒng),在對該計算機系統(tǒng)進(jìn)行適當(dāng)?shù)呐渲煤驮O(shè)計時,其可以用作在其中可以具體實施本發(fā)明的計算機系統(tǒng)。計算機系統(tǒng)1200包括任意數(shù)量的處理器1202(也稱作中央處理單元或CPU),處理器1202連接到包括主存儲器1206(通常為隨機存取存儲器或RAM)、主存儲器1204(通常為只讀存儲器或ROM)的存儲設(shè)備。CPU1202可以是包括微控制器和微處理器的各種類型,諸如可編程設(shè)備(例如,CPLD和FPGA)和諸如門陣列ASIC或通用微處理器的不可編程設(shè)備。如本領(lǐng)域中公知的,主存儲器1204用作將數(shù)據(jù)和指令單向地傳送到CPU,并且通常使用主存儲器1206來以雙向方式傳送數(shù)據(jù)和指令。這兩個主存儲器都可以包括任何合適的諸如上述的那些計算機可讀介質(zhì)。也可以將海量存儲設(shè)備1208雙向地連接到CPU1202,并且海量存儲設(shè)備1208提供附加的數(shù)據(jù)存儲容量并可以包括任何上述的計算機可讀介質(zhì)??蓪⒑A看鎯υO(shè)備1208用于存儲程序、數(shù)據(jù)等,且海量存儲設(shè)備1208通常是諸如硬盤的二級存儲介質(zhì)。應(yīng)理解,在適當(dāng)?shù)那闆r下,可以將海量存儲設(shè)備1208內(nèi)保持的信息以標(biāo)準(zhǔn)方式并入作為主存儲器1206的一部分的虛擬存儲器。諸如CD-ROM1214的專用海量存儲設(shè)備也可以將數(shù)據(jù)單向傳遞給CPU。
也可以將CPU1202連接到接口1210,接口1210連接到一個或更多個輸入/輸出設(shè)備,諸如視頻監(jiān)視器、跟蹤球、鼠標(biāo)、鍵盤、麥克風(fēng)、觸控式顯示器、傳感器讀卡器(transducer card reader)、磁帶閱讀器或紙帶閱讀器、圖形輸入板、指示筆、聲音或手寫識別器或顯著成績?nèi)坏刂T如其他計算機的其他公知的輸入設(shè)備。最后,可選的是,可以使用1212處總體地示出的外部連接將CPU1202連接到諸如數(shù)據(jù)庫、計算機、電信網(wǎng)絡(luò)或互聯(lián)網(wǎng)絡(luò)的外部設(shè)備。使用這樣的連接,可以設(shè)想,在執(zhí)行本發(fā)明的教示中所描述的方法步驟的處理中,CPU可以從網(wǎng)絡(luò)接收信息,或者可以將信息輸出到網(wǎng)絡(luò)。
本領(lǐng)域中的技術(shù)人員將容易地認(rèn)識到,根據(jù)本發(fā)明的教示,可以將任何上述步驟和/或系統(tǒng)模塊合適地進(jìn)行替換、重排、去除,并且取決于具體應(yīng)用的需要,可以插入附加的步驟和/或系統(tǒng)模塊,并且可以使用多種合適的處理和系統(tǒng)模塊中的任何處理和系統(tǒng)模塊來實現(xiàn)本實施例的方法和系統(tǒng),并不限于任何特定的計算機硬件、軟件、RTOS、GPOS、固件、微代碼等。
已充分描述了本發(fā)明的至少一個實施例,對于本領(lǐng)域中的技術(shù)人員來說,根據(jù)本發(fā)明的多個內(nèi)核的并行執(zhí)行以及在多個內(nèi)核之間的資源共享的其他等同的或另選的方法將是清楚的。以上已通過例示的方式描述了本發(fā)明,所公開的具體實施例不旨在將本發(fā)明限制在所公開的具體形式。因此,本發(fā)明欲涵蓋落入以下權(quán)利要求的精神和范圍的所有的變型例、等同物以及另選例。
相關(guān)申請的交叉引用本PCT專利申請要求于2004年7月6日根據(jù)35 U.S.C.119(e)而提交的專利號為60/586486的美國臨時申請的權(quán)益。
權(quán)利要求
1.一種用于在多內(nèi)核環(huán)境中并行執(zhí)行多個內(nèi)核的方法,該多內(nèi)核執(zhí)行方法包括以下步驟從所述多內(nèi)核環(huán)境中選擇主內(nèi)核;啟動所述主內(nèi)核;添加至少一個二級內(nèi)核,所述至少一個二級內(nèi)核在所述主內(nèi)核的至少部分控制之下;以及使一中斷處理器成為公共中斷處理器,該公共中斷處理器對所述主內(nèi)核和所述二級內(nèi)核中的至少一個二級內(nèi)核中的中斷和中斷處理的執(zhí)行進(jìn)行處理。
2.根據(jù)權(quán)利要求1所述的多內(nèi)核執(zhí)行方法,其中,所述主內(nèi)核能夠作為通用操作系統(tǒng)。
3.根據(jù)權(quán)利要求1所述的多內(nèi)核執(zhí)行方法,其中,所述至少一個二級內(nèi)核中的至少一個能夠作為實時操作系統(tǒng)。
4.根據(jù)權(quán)利要求1所述的多內(nèi)核執(zhí)行方法,其中,所述被選擇作為所述主內(nèi)核的內(nèi)核是所述多內(nèi)核環(huán)境中的具有最期望的能力的內(nèi)核。
5.根據(jù)權(quán)利要求1所述的多內(nèi)核執(zhí)行方法,該多內(nèi)核執(zhí)行方法還包括以下步驟使一調(diào)度器成為公共調(diào)度器,該公共調(diào)度器對所述主內(nèi)核和所述二級內(nèi)核中的至少一個二級內(nèi)核中的未決的處理的執(zhí)行進(jìn)行調(diào)度。
6.根據(jù)權(quán)利要求5所述的多內(nèi)核執(zhí)行方法,其中,所述公共調(diào)度器是從所述多內(nèi)核環(huán)境中的操作系統(tǒng)中選擇的具有最期望的能力的調(diào)度器。
7.根據(jù)權(quán)利要求1所述的多內(nèi)核執(zhí)行方法,其中,所述公共中斷處理器是從所述多內(nèi)核環(huán)境中的操作系統(tǒng)中選擇的具有最期望的能力的中斷處理器。
8.根據(jù)權(quán)利要求5所述的多內(nèi)核執(zhí)行方法,其中,所述公共中斷處理器或所述公共調(diào)度器在所述主內(nèi)核中。
9.根據(jù)權(quán)利要求1所述的多內(nèi)核執(zhí)行方法,其中,在引導(dǎo)執(zhí)行所述多內(nèi)核環(huán)境的計算機時,在啟動所述至少一個二級內(nèi)核之前啟動所述主內(nèi)核。
10.根據(jù)權(quán)利要求1所述的多內(nèi)核執(zhí)行方法,其中,激活所述至少一個二級內(nèi)核中的至少一個,作為所述主內(nèi)核的運行時間動態(tài)模塊。
11.根據(jù)權(quán)利要求1所述的多內(nèi)核執(zhí)行方法,該多內(nèi)核執(zhí)行方法還包括以下步驟將唯一的內(nèi)核標(biāo)識分配給所述主內(nèi)核;以及將至少一個中斷屏蔽級分配給所述主內(nèi)核,所述至少一個中斷屏蔽級確定所述主內(nèi)核所允許的中斷。
12.根據(jù)權(quán)利要求1所述的多內(nèi)核執(zhí)行方法,該多內(nèi)核執(zhí)行方法還包括以下步驟將唯一的內(nèi)核標(biāo)識分配給所述至少一個二級內(nèi)核;以及將至少一個中斷屏蔽級分配給所述至少一個二級內(nèi)核,所述至少一個中斷屏蔽級確定特定的二級內(nèi)核所允許的中斷。
13.根據(jù)權(quán)利要求5所述的多內(nèi)核執(zhí)行方法,該多內(nèi)核執(zhí)行方法還包括以下步驟在所述主內(nèi)核的所述公共調(diào)度器或所述公共中斷處理器中安裝用于所述至少一個二級內(nèi)核的連接程序。
14.根據(jù)權(quán)利要求1所述的多內(nèi)核執(zhí)行方法,該多內(nèi)核執(zhí)行方法還包括以下步驟執(zhí)行將處理執(zhí)行控制從當(dāng)前有效內(nèi)核切換到下一有效內(nèi)核的任務(wù),其中,所述下一有效內(nèi)核是所述至少一個二級內(nèi)核中的一個。
15.根據(jù)權(quán)利要求14所述的多內(nèi)核執(zhí)行方法,其中,所述處理執(zhí)行控制任務(wù)是周期任務(wù),并且通過根據(jù)二級內(nèi)核輪詢優(yōu)先級方案進(jìn)行輪詢來確定所述下一有效內(nèi)核,用于最高優(yōu)先級的二級內(nèi)核的所述二級內(nèi)核具有至少一個要執(zhí)行的未決處理,在完成所述至少一個二級內(nèi)核中的所述未決處理的至少一部分之后,將處理執(zhí)行控制轉(zhuǎn)移到所述主內(nèi)核。
16.根據(jù)權(quán)利要求1所述的多內(nèi)核執(zhí)行方法,該多內(nèi)核執(zhí)行方法還包括以下步驟調(diào)用所述公共中斷處理器,之后所述公共中斷處理器執(zhí)行至少一個內(nèi)核獨立中斷處理功能,并將處理執(zhí)行控制傳遞到與該中斷相關(guān)聯(lián)的目標(biāo)內(nèi)核的中斷服務(wù)例程。
17.根據(jù)權(quán)利要求16所述的多內(nèi)核執(zhí)行方法,其中,由所述至少一個二級內(nèi)核的屏蔽級來確定所述目標(biāo)內(nèi)核。
18.根據(jù)權(quán)利要求5所述的多內(nèi)核執(zhí)行方法,該多內(nèi)核執(zhí)行方法還包括以下步驟調(diào)用所述公共調(diào)度器;確定多內(nèi)核環(huán)境中的哪個內(nèi)核是當(dāng)前正在執(zhí)行的內(nèi)核;將處理執(zhí)行控制轉(zhuǎn)移到所述當(dāng)前正在執(zhí)行的內(nèi)核;以及由所述當(dāng)前內(nèi)核執(zhí)行至少一個內(nèi)核特定調(diào)度功能。
19.根據(jù)權(quán)利要求1所述的多內(nèi)核執(zhí)行方法,該多內(nèi)核執(zhí)行方法還包括以下步驟所述主內(nèi)核將處理執(zhí)行控制傳遞到所述至少一個二級內(nèi)核中的一個,該所述一個二級內(nèi)核由此成為有效內(nèi)核;所述主內(nèi)核將其中斷屏蔽級改變?yōu)榕c所述有效內(nèi)核相對應(yīng);以及所述主內(nèi)核將當(dāng)前運行的內(nèi)核標(biāo)識代碼改變?yōu)榕c所述有效內(nèi)核相關(guān)聯(lián)的標(biāo)識代碼。
20.根據(jù)權(quán)利要求1所述的多內(nèi)核執(zhí)行方法,該多內(nèi)核執(zhí)行方法還包括以下步驟安裝用于在所述主內(nèi)核與所述至少一個二級內(nèi)核之間進(jìn)行資源共享的應(yīng)用程序接口。
21.一種用于在多內(nèi)核環(huán)境中的多個內(nèi)核之間共享系統(tǒng)資源的方法,該系統(tǒng)資源共享方法包括以下步驟從所述多內(nèi)核環(huán)境中選擇主內(nèi)核;啟動所述主內(nèi)核;添加至少一個二級內(nèi)核,所述至少一個二級內(nèi)核在所述主內(nèi)核的至少部分控制之下;以及安裝應(yīng)用程序接口,該應(yīng)用程序接口用于在所述主內(nèi)核或所述至少一個二級內(nèi)核的第一內(nèi)核與所述主內(nèi)核或所述至少一個二級內(nèi)核的第二內(nèi)核之間進(jìn)行系統(tǒng)資源共享,所述第一內(nèi)核設(shè)置有至少針對所述第二內(nèi)核合適的偽應(yīng)用程序接口調(diào)用。
22.根據(jù)權(quán)利要求21所述的系統(tǒng)資源共享方法,該系統(tǒng)資源共享方法還包括以下步驟在來自所述第一內(nèi)核的所述偽應(yīng)用程序接口調(diào)用激活所述第二內(nèi)核時,所述第二內(nèi)核以用于所述第二內(nèi)核的真實應(yīng)用程序接口調(diào)用替換在其中限定了所述偽應(yīng)用程序接口的內(nèi)核中的所述偽應(yīng)用程序接口調(diào)用。
23.根據(jù)權(quán)利要求22所述的系統(tǒng)資源共享方法,該系統(tǒng)資源共享方法還包括以下步驟在來自所述第一內(nèi)核的所述真實應(yīng)用程序接口調(diào)用時,執(zhí)行所述第二內(nèi)核的特定系統(tǒng)功能,由此使得在所述第一內(nèi)核中可以利用所述第二內(nèi)核的資源。
24.一種用于在多內(nèi)核環(huán)境中并行執(zhí)行多個內(nèi)核的系統(tǒng),該多內(nèi)核系統(tǒng)包括用于從所述多內(nèi)核環(huán)境中選擇主內(nèi)核的裝置;用于添加至少一個二級內(nèi)核并且至少部分地控制所述至少一個二級內(nèi)核的裝置;用于執(zhí)行所述主內(nèi)核和所述至少一個二級內(nèi)核的裝置;用于對所述主內(nèi)核和所述二級內(nèi)核中的至少一個二級內(nèi)核中的中斷和中斷處理的執(zhí)行進(jìn)行處理的裝置。
25.根據(jù)權(quán)利要求24所述的多內(nèi)核系統(tǒng),該多內(nèi)核系統(tǒng)還包括用于對所述主內(nèi)核和所述二級內(nèi)核中的至少一個二級內(nèi)核中的未決的處理的執(zhí)行進(jìn)行調(diào)度的裝置。
26.一種用于在多內(nèi)核環(huán)境中的多個內(nèi)核之間共享系統(tǒng)資源的系統(tǒng),該系統(tǒng)包括用于從所述多內(nèi)核環(huán)境中選擇主內(nèi)核的裝置;用于添加至少一個二級內(nèi)核并且至少部分地控制所述至少一個二級內(nèi)核的裝置;用于執(zhí)行所述主內(nèi)核和所述至少一個二級內(nèi)核的裝置;以及用于在所述主內(nèi)核或所述至少一個二級內(nèi)核中的第一內(nèi)核與所述主內(nèi)核或所述至少一個二級內(nèi)核中的第二內(nèi)核之間進(jìn)行系統(tǒng)資源共享的裝置。
27.一種用于多內(nèi)核環(huán)境中的多個內(nèi)核的并行執(zhí)行的計算機程序產(chǎn)品,該計算機程序產(chǎn)品包括從所述多內(nèi)核環(huán)境中選擇主內(nèi)核的計算機代碼;添加至少一個二級內(nèi)核并且至少部分地控制所述至少一個二級內(nèi)核的計算機代碼;執(zhí)行所述主內(nèi)核和所述至少一個二級內(nèi)核的計算機代碼;實現(xiàn)公共中斷處理器的計算機代碼,該公共中斷處理器對所述主內(nèi)核和所述二級內(nèi)核中的至少一個二級內(nèi)核中的中斷和中斷處理的執(zhí)行進(jìn)行處理;以及存儲所述計算機代碼的計算機可讀介質(zhì)。
28.根據(jù)權(quán)利要求27所述的計算機程序產(chǎn)品,該計算機程序產(chǎn)品還包括實現(xiàn)公共調(diào)度器的計算機代碼,該公共調(diào)度器對所述主內(nèi)核和所述二級內(nèi)核中的至少一個二級內(nèi)核中的未決的處理的執(zhí)行進(jìn)行調(diào)度。
29.根據(jù)權(quán)利要求27所述的計算機程序產(chǎn)品,其中,所述計算機可讀介質(zhì)是從包括在載波中包含的數(shù)據(jù)信號、CD-ROM、硬盤、軟盤、帶驅(qū)動器和半導(dǎo)體存儲器的組中選擇的一種。
30.一種用于在多內(nèi)核環(huán)境中的多個內(nèi)核之間進(jìn)行系統(tǒng)資源共享的計算機程序產(chǎn)品,該計算機程序產(chǎn)品包括從所述多內(nèi)核環(huán)境中選擇主內(nèi)核的計算機代碼;添加至少一個二級內(nèi)核并且至少部分地控制該至少一個二級內(nèi)核的計算機代碼;執(zhí)行所述主內(nèi)核和所述至少一個二級內(nèi)核的計算機代碼;在所述主內(nèi)核或所述至少一個二級內(nèi)核中的第一內(nèi)核與所述主內(nèi)核或所述至少一個二級內(nèi)核的第二內(nèi)核之間共享系統(tǒng)資源的計算機代碼;為所述第一內(nèi)核設(shè)置用于至少所述第二內(nèi)核的合適的偽應(yīng)用程序接口調(diào)用的計算機代碼;以及存儲所述計算機代碼的計算可讀介質(zhì)。
31.根據(jù)權(quán)利要求30所述的計算機程序產(chǎn)品,該計算機程序產(chǎn)品還包括如下計算機代碼在來自所述第一內(nèi)核的所述偽應(yīng)用程序接口調(diào)用激活所述第二內(nèi)核時,以用于所述第二內(nèi)核的真實應(yīng)用程序接口調(diào)用替換在其中限定了所述偽API的內(nèi)核中的所述偽應(yīng)用程序接口調(diào)用。
32.根據(jù)權(quán)利要求30所述的計算機程序產(chǎn)品,該計算機程序產(chǎn)品還包括如下計算機代碼在來自所述第一內(nèi)核的所述真實應(yīng)用程序接口時,執(zhí)行所述第二內(nèi)核的特定系統(tǒng)功能,由此使得在所述第一內(nèi)核中可以利用所述第二內(nèi)核的資源。
33.根據(jù)權(quán)利要求30所述的計算機程序產(chǎn)品,其中,所述計算機可讀介質(zhì)是從包括在載波中包含的數(shù)據(jù)信號、CD-ROM、硬盤、軟盤、帶驅(qū)動器和半導(dǎo)體存儲器的組中選擇的一種。
全文摘要
本發(fā)明公開了一種用于多個內(nèi)核的并行執(zhí)行的方法和系統(tǒng)。提供了一種用于使用公共中斷處理器和可選的公共調(diào)度器來并行地運行多個內(nèi)核的方法。還提供了在所述多個內(nèi)核之間對執(zhí)行進(jìn)行切換的技術(shù)。示出了使用中斷屏蔽級的在所述多個內(nèi)核之間的執(zhí)行和中斷占先。還提供了用于在不同的內(nèi)核上運行的任務(wù)之間共享資源的技術(shù)。
文檔編號G06F13/24GK1997966SQ200580023031
公開日2007年7月11日 申請日期2005年7月1日 優(yōu)先權(quán)日2004年7月6日
發(fā)明者拉吉夫·S·德賽, 辛格·拉吉帕特·賈斯溫德爾 申請人:茵姆拜迪歐有限公司