軟件模塊的并行操作的制作方法
【專利說(shuō)明】軟件模塊的并行操作
[0001]領(lǐng)域
[0002]本發(fā)明的各實(shí)施例一般涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及軟件模塊的并行操作。
[0003]背景
[0004]此處提供的背景描述用于一般呈現(xiàn)本公開(kāi)的上下文。在此背景部分描述的程度范圍內(nèi),目前署名的發(fā)明人的工作以及該說(shuō)明書(shū)在提交日不以其他方式成為現(xiàn)有技術(shù)的各方面既未被明確表示為針對(duì)本公開(kāi)的現(xiàn)有技術(shù),也未被隱含地承認(rèn)為針對(duì)本公開(kāi)的現(xiàn)有技術(shù)。除非以其他方式在此指明,該部分中描述的方法并不是對(duì)于本公開(kāi)的權(quán)利要求的現(xiàn)有技術(shù),并且不因被包括在此部分中而被承認(rèn)為是現(xiàn)有技術(shù)。
[0005]并行計(jì)算的正確使用極大地提高計(jì)算效率,從而提供較佳的用戶體驗(yàn)。例如,隨著諸如智能電話和計(jì)算平板等移動(dòng)計(jì)算設(shè)備的使用日益增加,啟動(dòng)時(shí)間對(duì)于用戶體驗(yàn)而言變得更為重要。在系統(tǒng)啟動(dòng)時(shí),多個(gè)啟動(dòng)模塊(例如,軟件可執(zhí)行圖像)可用于初始化計(jì)算設(shè)備的多個(gè)設(shè)備和/或各接口。許多移動(dòng)計(jì)算設(shè)備具有多個(gè)處理器,因此能夠?qū)浖M(jìn)行并行執(zhí)行。然而,啟動(dòng)模塊一般被設(shè)計(jì)用于串行操作。
[0006]附圖簡(jiǎn)述
[0007]通過(guò)結(jié)合附圖的以下詳細(xì)描述,各實(shí)施例將容易理解。為便于此描述,相同的附圖標(biāo)記指示相同的結(jié)構(gòu)元件。各實(shí)施例通過(guò)示例而非限制圖示于附圖的各圖中。
[0008]圖1示意性地圖示按照各個(gè)實(shí)施例、可以在計(jì)算設(shè)備中用于多個(gè)軟件模塊(在該示例中,各啟動(dòng)模塊)的并行操作的各組件。
[0009]圖2示意性地圖示按照各個(gè)實(shí)施例、調(diào)用單個(gè)啟動(dòng)模塊的多個(gè)啟動(dòng)模塊的示例。
[0010]圖3示意性地描述了按照各個(gè)實(shí)施例、可以在并行啟動(dòng)過(guò)程期間發(fā)生于計(jì)算設(shè)備的兩個(gè)處理線程上的操作的示例。
[0011]圖4示意性地描述了按照各個(gè)實(shí)施例、可由與處理線程相關(guān)聯(lián)的調(diào)度器實(shí)現(xiàn)的示例方法。
[0012]圖5示意性地描述了按照各個(gè)實(shí)施例、可由異常處理程序?qū)崿F(xiàn)的示例方法。
[0013]圖6示意性地描述了按照各個(gè)實(shí)施例、可于其上實(shí)現(xiàn)所公開(kāi)的方法和計(jì)算機(jī)可讀介質(zhì)的示例計(jì)算設(shè)備。
[0014]詳細(xì)描述
[0015]在以下詳細(xì)描述中,參照形成詳細(xì)描述一部分的附圖,其中各圖中相同的附圖標(biāo)記指示相同的部件,附圖中通過(guò)圖示示出可實(shí)現(xiàn)的各實(shí)施例。應(yīng)當(dāng)理解,可以使用其他實(shí)施例,并且可以作出結(jié)構(gòu)上或邏輯上的改變,而不背離本公開(kāi)的范圍。盡管以下詳細(xì)描述使用各啟動(dòng)模塊的并行操作用于各計(jì)算機(jī)啟動(dòng)過(guò)程作為示例,但是所公開(kāi)的技術(shù)可用于實(shí)現(xiàn)除啟動(dòng)過(guò)程以外的任務(wù)的并行執(zhí)行。因此,以下詳細(xì)描述并非是限制性意義的,各實(shí)施例的范圍由所附權(quán)利要求及其等價(jià)物所限定。
[0016]各操作可以以最有助于理解所要求保護(hù)的主題的方式又被描述為多個(gè)不連續(xù)的動(dòng)作或操作。然而,描述次序不應(yīng)被視為意指這些操作必須取決于次序。特別是,這些操作可能不以所呈現(xiàn)的次序執(zhí)行。所述操作可以與和所述實(shí)施例不同的次序執(zhí)行。在附加實(shí)施例中,各附加操作可被執(zhí)行以及/或者所述操作可被省略。
[0017]出于本公開(kāi)的目的,短語(yǔ)“A和/或B”意指㈧、⑶或(A和B)。出于本公開(kāi)的目的,短語(yǔ) “A、B 和 / 或 C,,意指(A)、(B)、(C)、(A 和 B)、(A 和 C)、(B 和 C)或(A、B 和 C)。
[0018]該描述可以使用短語(yǔ)“在實(shí)施例中”或“在各實(shí)施例中”,這些短語(yǔ)的每一個(gè)可以指相同或不同實(shí)施例中的一個(gè)或多個(gè)。而且,關(guān)于本公開(kāi)的各實(shí)施例使用的術(shù)語(yǔ)“包括”、“包含”、“具有”等等是同義詞。
[0019]如此處使用的,術(shù)語(yǔ)“模塊”或“軟件模塊”可以指形成軟件可執(zhí)行圖像的多個(gè)可執(zhí)行指令以及/或者可由一個(gè)或多個(gè)處理器執(zhí)行的計(jì)算機(jī)程序。如此處使用的,術(shù)語(yǔ)“啟動(dòng)模塊”可以指在計(jì)算設(shè)備的啟動(dòng)過(guò)程期間例如由基本輸入/輸出系統(tǒng)(“B1S”)執(zhí)行的軟件模塊。各啟動(dòng)模塊可以服務(wù)于各種目的,包括但不限于輸入/輸出設(shè)備、計(jì)算機(jī)設(shè)備接口(例如,至輸入/輸出設(shè)備)等等的初始化。
[0020]在各個(gè)實(shí)施例中,諸如啟動(dòng)模塊之類的模塊可以包括入口點(diǎn)函數(shù),該入口點(diǎn)函數(shù)可以包括在加載模塊以執(zhí)行各種初始化任務(wù)時(shí)執(zhí)行的指令。例如,入口點(diǎn)函數(shù)可以初始化一個(gè)或多個(gè)模塊間“服務(wù)功能”。模塊間“服務(wù)功能”可由另一模塊調(diào)用,例如,由另一模塊自身的入口點(diǎn)函數(shù)或服務(wù)功能調(diào)用,并且可以包括做任何工作的指令。
[0021]模塊可以通過(guò)模塊間功能調(diào)用彼此交互。在各個(gè)實(shí)施例中,可寫(xiě)共享數(shù)據(jù)可能不由各模塊直接訪問(wèn),而是替代地通過(guò)對(duì)數(shù)據(jù)擁有模塊所提供的服務(wù)功能的調(diào)用來(lái)訪問(wèn)。在各個(gè)實(shí)施例中,模塊所提供的服務(wù)功能可能沒(méi)有調(diào)用順序要求。這可以確保此處描述的并行執(zhí)行方案中的數(shù)據(jù)完整性。
[0022]參照?qǐng)D1,配置有本公開(kāi)案的可應(yīng)用方面的計(jì)算設(shè)備100可以包括在操作上與存儲(chǔ)器104耦合的多個(gè)處理器102a-n。在各個(gè)實(shí)施例中,每個(gè)處理器102a、102b...102m(以下簡(jiǎn)稱102)可以提供處理線程。在各個(gè)實(shí)施例中,存儲(chǔ)器104可以是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(“DRAM”),但是它也可以是其他類型的存儲(chǔ)器。在各實(shí)施例中,B1S啟動(dòng)程序106可以包括多個(gè)啟動(dòng)模塊112a-m。一般而言,各啟動(dòng)模塊112a-m可能不被設(shè)計(jì)用于并行操作。然而,如以下將更詳細(xì)描述的,通過(guò)本公開(kāi)的特征,各啟動(dòng)模塊112a-m可以在多個(gè)并行處理線程中排序和執(zhí)行以加速啟動(dòng)過(guò)程。
[0023]在各個(gè)實(shí)施例中,在多個(gè)啟動(dòng)模塊112a_m之間可能有內(nèi)在依存關(guān)系,有時(shí)由“依存表達(dá)式”描述。例如,依存表達(dá)式“接口 A和接口 B均可用”可以僅在接口 A和B兩者(在一些情況下可以是各種其他啟動(dòng)模塊的服務(wù)功能)通過(guò)恰當(dāng)啟動(dòng)模塊112的操作初始化之后被滿足。
[0024]在各個(gè)實(shí)施例中,調(diào)度器108a_n的多個(gè)實(shí)例可例如由B1S啟動(dòng)程序106初始化。在各個(gè)實(shí)施例中,每個(gè)調(diào)度器108a、108b、...108η (下文簡(jiǎn)稱108)可以是計(jì)算機(jī)代碼的單個(gè)副本的實(shí)例(見(jiàn)圖6),計(jì)算機(jī)代碼可由多個(gè)處理器102a-n的一個(gè)或多個(gè)執(zhí)行。在各個(gè)實(shí)施例中,全局變量可以在調(diào)度器108a-n的各實(shí)例間共享,而局部(例如,堆棧)變量可以在各實(shí)例間不同。在各個(gè)實(shí)施例中,每個(gè)調(diào)度器108可以被配置成管理由處理器102所提供的相應(yīng)處理線程上的啟動(dòng)模塊112a-m的操作。
[0025]在各個(gè)實(shí)施例中,多個(gè)不同頁(yè)表110a-n可例如由調(diào)度器108a_n初始化,用于與每個(gè)處理器102相關(guān)聯(lián)。如以下進(jìn)一步詳述,在各個(gè)實(shí)施例中,頁(yè)表110a-n可助益例如通過(guò)頁(yè)錯(cuò)誤來(lái)捕捉模塊間功能調(diào)用。頁(yè)錯(cuò)誤又可以使控制被傳遞至多個(gè)異常處理程序120a-n,如以下將描述。
[0026]如前所述,多個(gè)啟動(dòng)模塊112a_m可以在計(jì)算設(shè)備100的啟動(dòng)過(guò)程期間被操作。啟動(dòng)模塊112a-m的操作(例如通過(guò)多個(gè)處理器102a_n)可以初始化計(jì)算設(shè)備100的各個(gè)設(shè)備、接口(例如,可由其他啟動(dòng)模塊調(diào)用的服務(wù)功能)或其他組件,以使它們可以在計(jì)算設(shè)備100的常規(guī)操作期間被使用。
[0027]在各個(gè)實(shí)施例中,每個(gè)啟動(dòng)模塊112a、112b...112m (以下簡(jiǎn)稱112)可以與相應(yīng)的標(biāo)志114a、114、...114m(以下簡(jiǎn)稱114)相關(guān)聯(lián)。標(biāo)志114a_m可以被存儲(chǔ)在對(duì)于多個(gè)處理器102a_m可訪問(wèn)的存儲(chǔ)器(例如,在RAM或寄存器中)的一部分中。每個(gè)標(biāo)志114可以被配置成存儲(chǔ)相關(guān)聯(lián)的啟動(dòng)模塊112是否被例如多個(gè)處理器102a-n中的任一個(gè)視為在操作中或以其他方式“忙碌”的指示。
[0028]在多個(gè)不同情況下,啟動(dòng)模塊112可例如由調(diào)度器108的實(shí)例和/或多個(gè)異常處理程序120a-n的實(shí)例通過(guò)將相應(yīng)的標(biāo)志114改變?yōu)樵诓僮髦谢颉懊β怠眮?lái)指定。例如,無(wú)論啟動(dòng)模塊的服務(wù)功能是否已被建立,在特定啟動(dòng)模塊112的入口點(diǎn)函數(shù)尚未完成時(shí),該特定啟動(dòng)模塊112可以被視為在操作中。作為另一示例,在特定啟動(dòng)模塊112的服務(wù)功能之一的執(zhí)彳丁尚未完成時(shí),例如由于被另一啟動(dòng)申旲塊調(diào)用而尚未完成,該特定啟動(dòng)申旲塊112可以被視為忙碌。
[0029]在各個(gè)實(shí)施例中,為使特定啟動(dòng)模塊112被視為在操作中或忙碌,該特定啟動(dòng)模塊112的入口點(diǎn)函數(shù)和/或服務(wù)功能不需要活動(dòng)地執(zhí)行。例如,啟動(dòng)模塊112的入口點(diǎn)函數(shù)和/或服務(wù)功能可以被調(diào)用并且等待從另一啟動(dòng)模塊的服務(wù)功能返回。在這種情況下,啟動(dòng)模塊112仍可以被視為在操作中或忙碌。
[0030]在各個(gè)實(shí)施例中,啟動(dòng)模塊112可以例如由調(diào)度器108或異常處理程序112的實(shí)例改變相應(yīng)的標(biāo)志114而被指示為“不在操作中”或“就緒”,其中啟動(dòng)模塊112的入口點(diǎn)函數(shù)已完成,且啟動(dòng)模塊112的服務(wù)功能沒(méi)有一個(gè)在活動(dòng)地執(zhí)行或等待從下游服務(wù)功能返回(例如,啟動(dòng)模塊112準(zhǔn)備好接受功能調(diào)用)。
[0031]以此方式,標(biāo)志114a