代碼執(zhí)行的靈活加速的制作方法
【專利說(shuō)明】代碼執(zhí)行的靈活加速
【背景技術(shù)】
[0001] 各種硬件加速設(shè)計(jì)用于在最小化功耗的同時(shí)改進(jìn)計(jì)算裝置的性能。例如,最小化 功耗對(duì)于改進(jìn)電池壽命是至關(guān)重要的,該是消費(fèi)者移動(dòng)計(jì)算裝置的關(guān)鍵市場(chǎng)特征之一。取 決于特定細(xì)分市場(chǎng),可實(shí)現(xiàn)各種巧片上系統(tǒng)(SoC)技術(shù)W實(shí)現(xiàn)卓越的每瓦特性能。
[0002] 然而,硬件加速具有固定的功能性并且相對(duì)昂貴和不靈活。傳統(tǒng)硬件字節(jié)碼加速 器使用x86指令集體系結(jié)構(gòu)(ISA)擴(kuò)展進(jìn)行訪問(wèn)。因?yàn)閤86 ISA用于加速,所W此類硬件 加速器可在編碼空間、管巧面積和功耗方面效率低。
【附圖說(shuō)明】
[0003] 本文中所述的概念在附圖中W示例而非限制的方式示出。為了圖示的簡(jiǎn)明和清晰 起見(jiàn),圖中所示元素不一定按比例畫出。在適當(dāng)之處,標(biāo)號(hào)已在圖中重復(fù)W指示對(duì)應(yīng)或類似 的元素。
[0004] 圖1是用于加速代碼執(zhí)行的計(jì)算裝置的至少一個(gè)實(shí)施例的簡(jiǎn)化框圖; 圖2是圖1的計(jì)算裝置的環(huán)境的至少一個(gè)實(shí)施例的簡(jiǎn)化框圖;W及 圖3和4是用于在圖1的計(jì)算裝置上加速代碼執(zhí)行的方法的至少一個(gè)實(shí)施例的簡(jiǎn)化流 程圖。
【具體實(shí)施方式】
[0005] 雖然本公開內(nèi)容易于實(shí)現(xiàn)各種修改和備選形式,但其特定實(shí)施例已通過(guò)附圖中的 示例示出并將在本文中詳細(xì)描述。然而,應(yīng)理解的是,無(wú)意將公開內(nèi)容的概念限制為公開的 特殊形式,而是與此相反,本發(fā)明將涵蓋與本公開內(nèi)容和隨附權(quán)利要求一致的所有修改、等 同物和備選。
[0006] 說(shuō)明書中對(duì)"一個(gè)實(shí)施例"、"一實(shí)施例"、"說(shuō)明性實(shí)施例"等的引用指示所述實(shí)施 例可包括特定特征、結(jié)構(gòu)或特性,但每個(gè)實(shí)施例可包括或不包括該特定特征、結(jié)構(gòu)或特性。 另外,此類詞語(yǔ)不一定指同一實(shí)施例。此外,在結(jié)合某個(gè)實(shí)施例描述某個(gè)特定特征、結(jié)構(gòu)或 特性時(shí),認(rèn)為結(jié)合無(wú)論是否明確描述的其它實(shí)施例來(lái)實(shí)現(xiàn)此類特征、結(jié)構(gòu)或特性是在本領(lǐng) 域技術(shù)人員的認(rèn)知之內(nèi)。
[0007] 公開的實(shí)施例可在一些情況下W硬件、固件、軟件或其任何組合的形式實(shí)現(xiàn)。公 開的實(shí)施例也可實(shí)現(xiàn)為可由一個(gè)或多個(gè)處理器讀和執(zhí)行的暫時(shí)性或非暫時(shí)性機(jī)器可讀(例 如,計(jì)算機(jī)可讀)存儲(chǔ)媒體上攜帶或存儲(chǔ)的指令。機(jī)器可讀存儲(chǔ)媒體可實(shí)施為用于W機(jī)器可 讀的形式存儲(chǔ)或傳送信息的任何存儲(chǔ)裝置、機(jī)制或其它物理結(jié)構(gòu)(例如,易失性或非易失性 存儲(chǔ)器、媒體盤或其它媒體裝置)。
[000引在圖中,一些結(jié)構(gòu)或方法特征可W特定布置和/或順序示出。然而,應(yīng)領(lǐng)會(huì)的是, 此類特定布置和/或順序可不是必需的。相反,在一些實(shí)施例中,此類特征可W與說(shuō)明性附 圖所示不同的方式和/或順序布置。另外,特定附圖中包括的結(jié)構(gòu)或方法無(wú)意暗示在所有 實(shí)施例中要求此類特征,并且在一些實(shí)施例中,此類特征可不被包括或者可與其它特征組 合。
[0009] 現(xiàn)在參照?qǐng)D1,計(jì)算裝置100可實(shí)施為能夠加速代碼執(zhí)行和執(zhí)行本文中所述功能 的任何類型的計(jì)算裝置。例如,計(jì)算裝置100可實(shí)施為移動(dòng)電話、智能電話、平板計(jì)算裝置、 個(gè)人數(shù)字助理、消息傳遞裝置、消費(fèi)者電子裝置、手持機(jī)、膝上型計(jì)算機(jī)、臺(tái)式計(jì)算和/或任 何其它計(jì)算/通信裝置。如圖1所示,說(shuō)明性計(jì)算裝置100包括處理器102、輸入/輸出 (I/O)子系統(tǒng)104、存儲(chǔ)器106、硬件加速器108、一個(gè)或更多個(gè)外設(shè)裝置110及數(shù)據(jù)存儲(chǔ)裝 置112。當(dāng)然,在其它實(shí)施例中,計(jì)算裝置100可包括其它或另外的組件,如通常在計(jì)算裝置 (例如,各種輸入/輸出裝置)中找到的那些組件。另外,在一些實(shí)施例中,一個(gè)或更多個(gè)說(shuō) 明性組件可包含在另一組件中,或者另外來(lái)自另一組件的一部分。例如,在一些實(shí)施例中, 存儲(chǔ)器106或其部分可包含在處理器102中。
[0010] 處理器102可實(shí)施為能夠執(zhí)行本文中所述功能的任何類型的處理器。例如,處理 器可實(shí)施為單核或多核處理器、數(shù)字信號(hào)處理器、微控制器或其它處理器或處理/控制電 路。類似地,存儲(chǔ)器106可實(shí)施為能夠執(zhí)行本文中所述功能的任何類型的易失性或非易失 性存儲(chǔ)器。在操作中,存儲(chǔ)器106可存儲(chǔ)在計(jì)算裝置100的操作期間使用的各種數(shù)據(jù)和軟 件,如操作系統(tǒng)、應(yīng)用程序、程序、庫(kù)及驅(qū)動(dòng)器。存儲(chǔ)器106 W通信方式經(jīng)I/O子系統(tǒng)104禪 合到處理器102,子系統(tǒng)104可實(shí)施為電路和/或組件W便于與計(jì)算裝置100的處理器102、 存儲(chǔ)器106和其它組件的輸入/輸出操作。例如,I/O子系統(tǒng)104可實(shí)施為或者另外包括存 儲(chǔ)器控制器集線器、輸入/輸出控制集線器、固件裝置、通信鏈路(即,點(diǎn)到點(diǎn)鏈路、總線鏈 路、導(dǎo)線、電纜、光導(dǎo)、印刷電路板跡線等)和/或組件和子系統(tǒng)W便于輸入/輸出操作。在 一些實(shí)施例中,I/O子系統(tǒng)104可形成SoC的一部分,并且與計(jì)算裝置100的處理器102、存 儲(chǔ)器106和其它組件一起包含在單個(gè)集成電路巧片上。此外,在一些實(shí)施例中,處理器102 包括字節(jié)碼加速支持114 W加速代碼執(zhí)行。字節(jié)碼加速支持114可實(shí)施為能夠加速在處理 器102上執(zhí)行的一個(gè)或更多個(gè)指令或字節(jié)碼的執(zhí)行并且能夠執(zhí)行本文中所述功能的任何 類型的組件或電路。
[0011] 硬件加速器108可實(shí)施為能夠加速與軟件應(yīng)用程序相關(guān)聯(lián)的一個(gè)或更多個(gè)指令 或字節(jié)碼的執(zhí)行并且能夠執(zhí)行本文中所述功能的任何類型的硬件裝置或組件。例如,硬件 加速器108可實(shí)施為或者另外包括圖形加速器、浮點(diǎn)加速器或其它硬件加速器裝置。如下 所述,在一些實(shí)施例中,硬件加速器108可配置成加速不取決于計(jì)算裝置100的操作系統(tǒng) (0巧的代碼。在一些實(shí)施例中,硬件加速器108可與計(jì)算裝置100的一個(gè)或更多個(gè)其它組 件一起形成SoC的一部分。
[0012] 計(jì)算裝置100的計(jì)算裝置110可包括任何數(shù)量的外設(shè)或接口裝置或組件。例如, 外設(shè)裝置110可包括通信電路W便與遠(yuǎn)程裝置進(jìn)行通信。外設(shè)裝置110中包括的特定裝置 可例如取決于計(jì)算裝置100的預(yù)期使用。數(shù)據(jù)存儲(chǔ)裝置112可實(shí)施為配置用于數(shù)據(jù)的短期 或長(zhǎng)期存儲(chǔ)的任何類型的裝置,如存儲(chǔ)器裝置和電路、存儲(chǔ)器卡、硬盤驅(qū)動(dòng)器、固態(tài)驅(qū)動(dòng)器 或其它數(shù)據(jù)存儲(chǔ)裝置。
[0013] 如圖2所示,計(jì)算裝置100可建立用于加速代碼的環(huán)境200。說(shuō)明性實(shí)施例中的環(huán) 境200包括虛擬機(jī)202、加速器運(yùn)行時(shí)間庫(kù)204、0S加速器裝置驅(qū)動(dòng)器206、加速器虛擬裝置 208及內(nèi)部動(dòng)態(tài)二進(jìn)制轉(zhuǎn)換模塊210。
[0014] 虛擬機(jī)202可探測(cè)計(jì)算裝置100 W確定計(jì)算裝置100是否使用例如計(jì)算裝置100 的現(xiàn)有I/O接口支持加速器虛擬裝置208。加速器運(yùn)行時(shí)間庫(kù)204可實(shí)現(xiàn)加速器虛擬裝置 208的應(yīng)用程序編程接口(API)。為此,加速器運(yùn)行時(shí)間庫(kù)204可允許通過(guò)OS加速器裝置驅(qū) 動(dòng)器206和通過(guò)存儲(chǔ)器映射的I/O訪問(wèn)加速器虛擬裝置208。如下所述,在一些實(shí)施例中, 0S加速器裝置驅(qū)動(dòng)器206只用于初始化加速器虛擬裝置208。之后,可經(jīng)存儲(chǔ)器映射的1/ 0訪問(wèn)加速器虛擬裝置208 W觸發(fā)代碼加速。0S加速器裝置驅(qū)動(dòng)器206可用于使用例如標(biāo) 準(zhǔn)操作系統(tǒng)I/O指令初始化加速器虛擬裝置208。加速器虛擬裝置208可包括內(nèi)部動(dòng)態(tài)二 進(jìn)制轉(zhuǎn)換模塊210,該模塊可用于加速代碼執(zhí)行。在一些實(shí)施例中,內(nèi)部動(dòng)態(tài)二進(jìn)制轉(zhuǎn)換模 塊210通過(guò)使用硬件加速器108和/或字節(jié)碼加速支持114將非ISA代碼(例如,DalV化字 節(jié)碼、JavaScript、HTML5等)透明轉(zhuǎn)換成內(nèi)部ISA代碼來(lái)虛擬化加速器虛擬裝置208。在 包括本說(shuō)明性實(shí)施例的一些實(shí)施例中,內(nèi)部動(dòng)態(tài)二進(jìn)制轉(zhuǎn)換模塊210在處理器102的內(nèi)部, 并且對(duì)于包括計(jì)算裝置100的操作系統(tǒng)等外部軟