TW201716998A - 系統單晶片中應用程式設定檔驅動之排程及組態 - Google Patents

系統單晶片中應用程式設定檔驅動之排程及組態 Download PDF

Info

Publication number
TW201716998A
TW201716998A TW105122088A TW105122088A TW201716998A TW 201716998 A TW201716998 A TW 201716998A TW 105122088 A TW105122088 A TW 105122088A TW 105122088 A TW105122088 A TW 105122088A TW 201716998 A TW201716998 A TW 201716998A
Authority
TW
Taiwan
Prior art keywords
profile
application
data set
workload
revised
Prior art date
Application number
TW105122088A
Other languages
English (en)
Inventor
詹姆士 里亞爾 伊斯萊傑
威爾森 鄺
馬克 貝斯特
Original Assignee
高通公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 高通公司 filed Critical 高通公司
Publication of TW201716998A publication Critical patent/TW201716998A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3093Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3414Workload generation, e.g. scripts, playback
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3013Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is an embedded system, i.e. a combination of hardware and software dedicated to perform a certain function in mobile devices, printers, automotive or aircraft systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3442Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本發明揭示用於主動資源分配及組態之方法及系統的各種實施例。一種例示性方法首先藉由包含一設定檔引導最佳化特徵之一編譯器編譯且連結一設定檔經檢測應用程式,該設定檔引導最佳化特徵插入對一分析工具執行階段之調用。使用表示可能工作負荷之一或多個工作負荷資料集來在一目標裝置上執行該設定檔經檢測應用程式。在執行期間,基於對該等所插入調用之辨識而產生與該一或多個工作負荷資料集中之每一者相關聯的一基於檢測之設定檔資料集。接下來,基於該等基於檢測之設定檔資料集而重新編譯且重新連結該設定檔經檢測應用程式,以產生對原始程式碼之一組設定檔引導最佳化,藉此產生一最佳化應用程式。可執行且監測該最佳化應用程式,以產生適用於向該目標裝置提供用於最佳工作負荷分配及資源組態之指令的一經修訂設定檔資料集。

Description

系統單晶片中應用程式設定檔驅動之排程及組態
攜帶型計算裝置(「PCD」)已在社會中變得普遍存在。使用者依賴於其PCD進行購買交易、組織排程、擷取視訊、提供娛樂、調研資訊、經由電子郵件、文字及語音通信、產生互動式地圖、及大體上提供無數其他功能性。PCD設計者藉由利用可全部封裝於相對小外觀尺寸中之各種系統單晶片(「SoC」)來實現所有此功能性。SoC可包括經組態以出於一或多個目的而一起工作之任何數目個資源的組合。舉例而言,駐留在SoC上之資源可包括處理器(諸如CPU、DSP、GPU、數據機等)、記憶體組件(諸如快取記憶體、堆疊式封裝記憶體、雙資料速率記憶體等)、匯流排、電源(諸如電池)、控制器、感測器、傳輸器及其類似者。
簡而言之,所需功能性愈多,在用於排程資源之容量的軟體任務之間存在的競爭愈多。因此,為了向面臨對愈來愈多功能性之需求的使用者保持高水準之服務品質(「QoS」),設計者不斷地尋求更有效地利用SoC上之資源的方式。
對資源之應用軟體請求的平台級排程對於設計者具有挑戰性。SoC內之排程組件對於最佳化功率消耗、一貫地滿足處理期限及一起有助於維持可接受QoS之總體目標的此等其他目標至關重要。因此,排程對資源之需求及管理資源設定對於SoC設計者為重要業務。值得 注意地,當來自具有未知或不確定需要之許多不同應用的任務全部排入佇列調用共同資源時,排程對資源之需求及管理資源設定亦為棘手之業務。就此而言,即使當僅存在一個任務請求資源時,而不僅僅是在許多任務之情況下,排程對資源之需求及管理資源設定亦為棘手的。當任務資源需求設定檔未知時,即使在單個任務情況下,指派正確資源及資源效能位準亦為困難的。
在努力有效率地調用資源、管理資源設定及優先化資源之分配的過程中,先前技術解決方案依賴於固定排程方案(例如,先入先出),抑或假定應用之過去需求結合資源之過去效能將指示應用之將來需求及資源之將來效能的試探式方法。儘管試探式解決方案通常比純粹固定之排程方法有助於較佳資源管理,但已知試探式解決方案不能夠考慮應用之即時效能需要及/或替代性可用資源之處理容量,從而限制了典型SoC能夠提供給使用者之功能量。因此,此項技術中已知的資源排程及組態解決方案在分配資源、整理資源可用性、斜升及/或斜降資源等方面係低效的。因此,在此項技術中存在對於辨識正執行應用程式之將來要求及以主動方式排程及組態資源以便最佳化功率消耗與效能之間的取捨之資源排程及組態解決方案的需要。
本發明揭示用於一系統單晶片(「SoC」)中的主動資源分配及組態之方法及系統的各種實施例。該解決方案之一例示性實施例首先藉由包含一設定檔引導最佳化特徵之一編譯器編譯且連結一設定檔經檢測應用程式。編譯且連結該設定檔經檢測應用程式之步驟包含插入對一分析工具執行階段之調用。使用表示該目標裝置之可能或臨界工作負荷的一或多個工作負荷資料集來在包括一SoC之一目標裝置(諸如一攜帶型計算裝置)上執行該設定檔經檢測應用程式。在執行期間,監測該設定檔經檢測應用程式,且基於對該等所插入調用之辨識而產生 與該一或多個工作負荷資料集中之每一者相關聯的一基於檢測之設定檔資料集。接下來,基於該等基於檢測之設定檔資料集而重新編譯且重新連結該設定檔經檢測應用程式。重新編譯且重新連結該設定檔經檢測應用程式包含產生對原始程式碼之一組設定檔引導最佳化,藉此產生一最佳化應用程式。該最佳化應用程式為一「可出貨產品」,該可出貨產品可經執行及監測以產生適用於向該目標裝置提供用於最佳工作負荷分配及資源組態之指令的一經修訂設定檔資料集。
用於一系統單晶片中之主動資源分配及組態的解決方案之另一例示性實施例以使用表示可能工作負荷之一或多個工作負荷資料集來在一目標裝置上執行一應用程式開始。在該應用程式執行期間監測該應用程式,且產生與該一或多個工作負荷資料集中之每一者相關聯的一設定檔資料集。接著可基於該設定檔資料集而重新編譯且重新連結該應用程式。重新編譯且重新連結該應用程式包含產生對原始程式碼之一組設定檔引導最佳化及自最佳化產生一最佳化應用程式。接著可執行且監測該最佳化應用程式,以產生適用於向該目標裝置提供用於最佳工作負荷分配及資源組態之指令的一經修訂設定檔資料集。
26‧‧‧動態電壓及頻率縮放(DVFS)模組
27‧‧‧設定檔資料集
27A‧‧‧設定檔資料集
27B‧‧‧設定檔資料集
99‧‧‧主機電腦
100‧‧‧攜帶型計算裝置(PCD)
101‧‧‧設定檔引導最佳化排程器執行階段(PGO-SR)模組
102‧‧‧系統單晶片/晶片上系統
103‧‧‧類比至數位轉換器(ADC)控制器
110‧‧‧中央處理單元(CPU)
112‧‧‧記憶體
114‧‧‧監測模組
126‧‧‧類比信號處理器
128‧‧‧顯示控制器
130‧‧‧觸控式螢幕控制器
132‧‧‧觸控式螢幕顯示器
134‧‧‧視訊編碼器
136‧‧‧視訊放大器
138‧‧‧視訊埠
140‧‧‧通用串列匯流排(USB)控制器
142‧‧‧通用串列匯流排(USB)埠
146‧‧‧用戶身分模組(SIM)卡
148‧‧‧數位相機
150‧‧‧立體聲音訊編解碼器
152‧‧‧音訊放大器
154‧‧‧第一立體聲揚聲器
156‧‧‧第二立體聲揚聲器
157‧‧‧熱感測器
157A‧‧‧熱感測器
157B‧‧‧熱感測器
157C‧‧‧熱感測器
158‧‧‧麥克風放大器
160‧‧‧麥克風
162‧‧‧頻率調變(FM)無線電調諧器
164‧‧‧頻率調變(FM)天線
166‧‧‧立體聲頭戴式耳機
168‧‧‧射頻(RF)收發器
170‧‧‧射頻(RF)開關
172‧‧‧射頻(RF)天線
174‧‧‧小鍵盤
176‧‧‧麥克風
178‧‧‧振動器裝置
180‧‧‧PMIC
188‧‧‧電源供應器
205‧‧‧平台排程器
210‧‧‧特定資源
215‧‧‧設定檔引導最佳化(PGO)最佳化應用程式
222‧‧‧第零核心
224‧‧‧第一核心
226‧‧‧核心
228‧‧‧核心
230‧‧‧第N核心
300‧‧‧方法
305‧‧‧原始程式碼
310A‧‧‧LLVM編譯器
310B‧‧‧LLVM編譯器
315A‧‧‧應用程式
315B‧‧‧設定檔引導最佳化(PGO)最佳化應用程式
315C‧‧‧應用程式
315D‧‧‧設定檔引導最佳化(PGO)最佳化應用程式
320‧‧‧工作負荷資料集
330‧‧‧設定檔引導最佳化(PGO)
335‧‧‧應用程式介面(API)
340‧‧‧設定檔工具
400‧‧‧方法
500‧‧‧方法
515‧‧‧應用程式
520‧‧‧工作負荷資料集
540‧‧‧分析工具
600‧‧‧方法
615‧‧‧應用程式
620‧‧‧工作負荷資料集
在圖式中,除非另有指示,否則相同參考數字貫穿各視圖指代相同部件。對於具有諸如「102A」或「102B」之字母字符名稱的參考數字,字母字符名稱可區分存在於相同圖或不同圖中之兩個相同部件或元件。當希望參考標號涵蓋所有圖式中具有相同參考標號的所有部分時,可省略參考標號之字母字符名稱。
圖1為說明用於在系統單晶片(「SoC」)中實施主動資源分配及組態(「PRAC」)方法的晶片上系統之一實施例的功能方塊圖;圖2為說明呈無線電話形式之用於在圖1之SoC中實施主動資源分配及組態(「PRAC」)方法及系統的PCD之例示性、非限制性態樣的 功能方塊圖;圖3為說明使用編譯器檢測以產生用於應用程式之設定檔資料集之主動資源分配及組態(「PRAC」)的例示性方法的功能方塊圖;圖4為說明使用編譯器及目標裝置之設定檔工具以產生用於應用程式之設定檔資料集之主動資源分配及組態(「PRAC」)的例示性方法的功能方塊圖;圖5為說明僅使用目標裝置之設定檔工具以產生用於應用程式之設定檔資料集之主動資源分配及組態(「PRAC」)的例示性方法的功能方塊圖;且圖6為說明在通用執行環境中使用設定檔資料進行主動資源分配及組態(「PRAC」)的例示性方法的功能方塊圖。
詞「例示性」在本文中用以意謂「充當實例、例子或說明」。在本文中被描述為「例示性」之任何態樣未必應被認作排他式的、較佳或優於其他態樣。
在本描述中,術語「應用程式」與「程式」可互換地使用,且亦可包括具有可執行內容之檔案,諸如:目的碼、指令碼、位元組程式碼、標示語言檔案及修補程式。應用程式或程式可包含待由給定資源執行之任務,如將由一般熟習此項技術者理解。此外,本文中所提及之「應用程式」亦可包括在本質上並不可執行之檔案,諸如可能需要打開之文件或需要存取之其他資料檔案。
術語「編譯器」本文中用以指代一程式,該程式處理以特定程式設計語言撰寫之語句且將語句轉換成機器語言或可由目標裝置的處理組件,諸如駐留於系統單晶片(「SoC」)上之處理組件執行的「目的碼」。術語「LLVM」或「LLVM編譯器」在本文中以例示性方式使用,且並不意欲暗示解決方案之範疇限於LLVM編譯器之使用。具體 言之,關於LLVM編譯器,其將由一般熟習此項技術者理解為經設計為具有定義明確介面之一組可再用程式庫的編譯器基礎結構。LLVM編譯器以C++程式設計語言撰寫,且經設計用於以任意程式設計語言撰寫之程式或應用程式的編譯階段、連結階段、執行階段及閒置階段最佳化。具有使用LLVM之編譯器的例示性程式設計語言包括但可不限於Common Lisp、ActionScript、Ada、D、Fortran、OpenGL Shading Language、Go、Haskell、Java bytecode、Julia、Objective-C、Swift、Python、Ruby、Rust、Scala、C#及Lua。LLVM可提供完整編譯器系統之中間層,從而自編譯器取得程式碼且產生經最佳化程式碼或中間表示(「IR」)。接著可將新經最佳化程式碼轉換且連結成機器相依性組合程式碼用於目標平台,諸如目標裝置中之SoC的執行環境。
術語「連結程式」在本文中用以指代一電腦程式,該電腦程式取得由編譯器產生之一或多個目的檔案且將目的檔案組合成單個可執行檔案、程式庫檔案或可由目標裝置之處理組件執行的另一目的檔案。
如在本描述中所使用,術語「執行階段」指代閘道器應用程式,正執行之程式藉由該閘道器應用程式與目標裝置之執行環境互動。如將由一般熟習此項技術者理解,在給定SoC上執行之執行環境或作業系統可含有狀態值及/或控制由執行程式或應用程式經由其執行階段存取之資源。其亦可含有一或多個執行階段,諸如瀏覽器執行階段、Java執行階段以及作業系統執行階段。
術語「資源」在本文中用以大體上指代可駐留於目標裝置中之SoC上且由在與SoC相關聯的執行環境中執行之應用程式調用的任何應用程式、模組、資料庫、處理組件或其類似者。舉例而言,資源可為(但不限於為)中央處理單元(「CPU」)、數位信號處理器 (「DSP」)、圖形處理單元(「GPU」)、記憶體組件等。如一般熟習此項技術者將理解,給定資源可經組態而以功率消耗、熱能產生、使用者經歷等為代價而提供不同位準之效能或容量。
在本描述及其圖中,術語「系統軟體」廣泛地涵蓋與執行環境相關聯之任何軟體實體,諸如(但不限於)作業系統、功率管理邏輯、工作排程器模組、動態控制及電壓按比例調整模組等。
在本描述中,術語「設定檔資料」、「設定檔資料集」及其類似者指代描述程式或應用程式之執行階段行為的一組資料。作為實例而非限制,設定檔資料集可描述對於給定應用程式何功能調用最多、熱路徑、LLVM區塊之區塊計數、調用路徑資訊、執行緒之數目、執行緒設定檔、記憶體存取型樣、快取記憶體利用率等。
在本描述中,術語「設定檔引導最佳化」指代使用自執行程式搜集之設定檔資訊來重新編譯且連結程式,以便產生程式之又一經最佳化版本的處理。
在本描述中,術語「設定檔經檢測應用程式」指代已由編譯器檢測以包括調用(例如,對設定檔執行階段之調用)來收集該應用程式之設定檔資料的應用程式。設定檔資料可為(但不限於為)在執行應用程式期間得出的區塊計數、函式調用計數、分支計數等。如將由一般熟習此項技術者在本發明之內容脈絡內認識到,「剖析」為量測(例如)程式之記憶體空間或時間複雜度、程式之特定指令的使用及/或程式之函式調用的頻率及持續時間之動態程式分析的形式。如進一步將由一般熟習此項技術者理解,可藉由使用稱為分析工具之工具「檢測」程式原始程式碼抑或其二進位可執行形式達成「剖析」應用程式或程式。
在本描述中,「檢測」、「經檢測」及其類似者指代監測或量測程式效能位準、診斷錯誤及寫入追蹤資訊的能力。檢測可以監測系統中 之特定組件的程式碼指令形式而予以實施。值得注意地,當設定檔經檢測應用程式含有檢測程式碼時,可使用諸如執行階段之管理工具而對其加以管理。如將由一般熟習此項技術者理解,檢測提供檢閱應用程式之效能。
如在本描述中所使用,該「組件」、「資料庫」、「模組」、「系統」、「處理組件」及其類似者意欲指代電腦相關之實體,韌體、硬體與軟體之組合、軟體或在執行中之軟體。舉例而言,組件可為(但不限於為)在處理器上執行之程序、處理器、物件、可執行體、執行緒、程式及/或電腦。藉助於說明,在計算裝置上執行之應用程式及計算裝置兩者皆可為組件。一或多個組件可駐留於程序及/或執行緒內,且組件可位於一個電腦上,及/或分佈於兩個或更多個電腦之間。此外,此等組件可自上面儲存有各種資料結構之各種電腦可讀媒體執行。組件可(諸如)根據具有一或多個資料封包的信號(例如,來自藉助於信號與本端系統、分佈式系統及/或跨越諸如網際網路之網路而與其他系統中之另一組件互動的一個組件的資料)藉助於本端及/或遠端程序而通信。
在本描述中,術語「中央處理單元(「CPU」)」、「數位信號處理器(「DSP」)」、「圖形處理單元(「GPU」)」、及「晶片」可互換地使用。此外,CPU、DSP、GPU或晶片可由總體上在本文中被稱作「核心」之一或多個相異處理組件組成。另外,若CPU、DSP、GPU、晶片或核心為消耗各種功率位準以按各種函式效率之位準而操作的PCD或SoC內之功能組件,則一般熟習此項技術者將認識到使用此等術語並不限制將所揭示實施例或其等效物應用於PCD或SoC內之處理組件的內容脈絡。亦即,儘管在處理組件之內容脈絡中描述了許多實施例,但設想主動資源分配及組態(「PRAC」)解決方案可應用於PCD或SoC內之任何功能組件,包括(但不限於)數據機、相機、無線網路 介面控制器(「WNIC」)、顯示器、視訊編碼器、周邊裝置、電池等。
在本描述中,應理解,術語「熱」及「熱能」可與能夠產生或耗散可以「溫度」單元量測之能量的裝置或組件相關聯而予以使用。此外,應理解,術語「熱足跡」、「熱動力學」及其類似者可用於PCD內之兩個或更多個組件之間的熱關係之內容脈絡內,且可以溫度之單元而可定量。因此,應進一步理解,術語「溫度」,參考一些標準值,設想可指示「熱能」產生裝置之相對溫曖、或熱的不存在、或組件間熱關係的任何量測。舉例而言,當兩個組件處於「熱」平衡時兩個組件之「溫度」相同。
在本描述中,術語「熱緩解技術」、「熱策略」、「熱管理」、「熱緩解量測」、「調節至效能位準」、「熱緩解決策」及其類似者基本上可互換地使用。值得注意地,一般熟習此項技術者將認識到,取決於特定使用內容脈絡,在此段落中所列出的術語中之任一者可用以描述可操作來以熱能產生為代價而增大效能、以效能為代價減小熱能產生、或在此等目標之間交替的硬體及/或軟體。PRAC解決方案之實施例可基於熱策略目標而主動地排程工作負荷、分配工作負荷、對處理器設定進行組態等。
在本描述中,術語「攜帶型計算裝置」(「PCD」)用以描述在有限容量電源供應器,諸如靠電池操作的任何裝置。儘管電池操作之PCD已被使用了數十年,但伴隨著第三代(「3G」)及第四代(「4G」)無線技術之出現的可充電電池之技術進步已啟用具有多種能力之多種PCD。因此,PCD可為蜂巢式電話、衛星電話、尋呼機、PDA、智慧型電話、導航裝置、智慧型書或閱讀器、媒體播放器、前述裝置之組合、具有無線連接之膝上型電腦等等。
在本描述中,術語「效能設定」、「二進位(bin)設定」、「功率位 準」及其類似者可互換地使用以指代經供應至處理組件之功率/效能位準。PRAC解決方案之實施例可(例如)基於與執行應用程式相關聯之設定檔資料而使處理組件組態以在給定功率位準處操作。
PRAC解決方案之實施例用以使試探性平台級排程器組件確定性地知曉與正執行的應用程式相關聯之工作負荷,使得可有效率地將任務排程至資源。PRAC解決方案在執行環境中利用程式設定檔,以動態地影響排程決策及效能設定,藉此最佳化與程式設定檔相關聯之執行程式的效能輸出及功率消耗。
由一PRAC實施例使用之程式設定檔基本上界定執行應用程式隨時間推移之工作負荷處理要求。鑒於程式設定檔資料而作出資源分配決策之平台排程器系統組件可避免引起慢速效能之處理資源過低分配,及/或引起不必要功率消耗之處理資源過度分配。
一些PRAC實施例利用由編譯器/連結程式直接配備至應用程式中的效能API調用。PRAC解決方案可隨後在目標裝置上執行應用程式期間以適當次數調用嵌式效能API,藉此幫助平台排程器作出與資源可用性及效能設定相關之決策。
圖1為說明用於在系統單晶片(「SoC」)102中實施主動資源分配及組態(「PRAC」)方法的晶片上系統之一實施例的功能方塊圖。PRAC解決方案之實施例有利地利用設定檔資料集中之後驗搜集之資料,以在執行應用程式期間作出關於工作負荷分配及資源設定之有效率先驗決策。
如在圖1之高階說明中可見,設定檔引導最佳化應用程式(「PGO最佳化應用程式」)215可在晶片102之執行環境中執行。如將由一般熟習此項技術者理解,執行應用程式可儲存於記憶體(圖1中未展示)中且由一或多個核心執行,諸如CPU 110之核心222、224、226、228。如一般熟習此項技術者將進一步理解,當執行應用程式時,其 可能需要存取一或多個資源210(例如,記憶體、數據機、GPU、CPU等)。可經由應用程式介面(「API」)實現此等請求或「調用」,如一般熟習此項技術者將理解。
返回至圖1說明,PGO最佳化應用程式215與適用於在正執行應用程式215時指示應用程式215之即將來臨要求的設定檔資料集27相關聯。不同於依賴於瞭解應用程式之過去行為以預測應用程式之將來需要的先前技術解決方案,PRAC解決方案之實施例亦參看設定檔資料集27以基於已知、高度可能之即將來臨要求而作出關於資源分配及設定的主動決策。在一些PRAC實施例中,設定檔資料集27可駐留於PGO最佳化應用程式215自身之已自原始程式碼編譯的目的碼內。在其他PRAC實施例中,設定檔資料集27可與PGO最佳化應用程式215分離而存在。
PRAC解決方案之一優勢為,資源可在由PGO最佳化應用程式215需要(或釋放)之前開始斜升(或斜降)至最佳設定,且因而,系統102之效能位準及功率消耗可經最佳化以達到給定QoS位準。類似地,PRAC解決方案之一優勢為,當需要接近時可判定最佳地經定位以服務於PGO最佳化應用程式215之需要的資源──舉例而言,基於對於即將來臨工作負荷執行緒之處理要求的瞭解,PRAC解決方案可與平台排程器205配合工作以將工作負荷執行緒分配至鑒於其他處理組件上之熱熱點而選擇之特定處理組件。值得注意地,PRAC解決方案可在PGO最佳化應用程式215之後續執行中取決於系統102當時之熱足跡而將相同工作負荷執行緒驅動至完全不同之處理組件。
在操作中,監測模組114(可形成執行階段101之部分)監測PGO最佳化應用程式215之執行進展且告知PGO排程器執行階段模組101。在瞭解PGO最佳化應用程式215之即將來臨或即將發生之需要的情況下,PGO排程器執行階段模組101可依賴於設定檔資料集27以預測最 佳資源分配及設定。因此,PGO排程器執行階段模組101可與平台排程器205配合起作用以將工作負荷分配至最佳地經定位以處理工作負荷之特定資源210(CPU 110亦可視為資源210)。類似地,PGO排程器執行階段模組101可與DVFS模組26配合工作以搶先地調整資源210之設定以適應即將來臨工作負荷。舉例而言,DVFS模組26可斜升特定資源210,以使得當即將來臨之工作負荷實際上分配至特定資源210時,特定資源210「準備就緒」。或者,當終止或解除分配工作負荷時,DVFS模組26可按加快速率斜降特定資源210。以此等方式,PRAC解決方案可鑒於將某一位準之功能性提供給PCD 100之使用者而最小化功率消耗。
下文結合圖3至圖6描述對可如何產生且執行PGO最佳化應用程式215及其設定檔資料集27的更詳細解釋。
圖2為說明呈無線電話形式之用於在圖1之SoC中實施主動資源分配及組態(「PRAC」)方法及系統的PCD之例示性、非限制性態樣的功能方塊圖。如所展示,PCD 100包括包含耦接至一起之多核心中央處理單元(「CPU」)110與類比信號處理器126的晶片上系統102。CPU 110可包含第零核心222,第一核心224、及第N核心230,如一般熟習此項技術者所理解。另外,替代或除了CPU 110以外,亦可使用數位信號處理器(「DSP」),如一般熟習此項技術者所理解。值得注意地,可設想可藉由PRAC解決方案控制同質及異質處理系統。
大體而言,動態電壓及頻率縮放(「DVFS」)模組26可負責以遞增方式對個別處理組件或資源210,諸如核心222、224、230實施調節技術,以幫助PCD 100最佳化其功率位準且維持高位準之功能性。由DVFS模組26實施之特定設定(及任何調整之時序)可依賴於與根據PRAC解決方案而經最佳化之正執行應用程式相關聯的一或多個設定檔資料組而由PGO排程器執行階段(「PGO-SR」)模組101指定。
監測模組114與貫穿晶片上系統102而分散之多個操作感測器(例如,熱感測器157A、157B)、與PCD 100之CPU 110以及與PGO-SR模組101通信。在一些實施例中,監測模組114亦可監測「晶片外」感測器157C,以獲得與PCD 100之觸控溫度相關聯的溫度讀數。此外,監測模組114可監測感測器157用於偵測功率消耗位準或記憶體頻寬可用性。PGO-SR模組101可配合監測模組114工作以識別一或多個熱因素之狀態改變,且使用儲存於記憶體112中之設定檔資料來發指令給平台排程器205相應地分配資源。
如圖2中所說明,顯示控制器128及觸控式螢幕控制器130耦接至數位信號處理器110。在晶片上系統102外部之可選觸控式螢幕顯示器132耦接至顯示控制器128,且觸控式螢幕控制器130。PCD 100可進一步包括視訊編碼器134(例如,相位交替線(「PAL」)編碼器)、彩色電視系統(「sequential couleur avec memoire;SECAM」)編碼器、國家電視系統委員會(「NTSC」)編碼器或任何其他類型之視訊編碼器134。視訊編碼器134耦接至多核心中央處理單元(「CPU」)110。視訊放大器136耦接至視訊編碼器134及觸控式螢幕顯示器132。視訊埠138耦接至視訊放大器136。如圖2中所描繪,通用串列匯流排(「USB」)控制器140耦接至CPU 110。又,USB埠142耦接至USB控制器140。記憶體112及用戶身分模組(SIM)卡146亦可耦接至CPU 110。另外,如圖2中所展示,數位相機148可耦接至CPU 110。在一例示性態樣中,數位相機148為電荷耦合裝置(「CCD」)相機或互補金屬氧化物半導體(「CMOS」)相機。
如在圖2中進一步說明,立體聲音訊編解碼器150可耦接至類比信號處理器126。此外,音訊放大器152可耦接至立體聲音訊編解碼器150。在一例示性態樣中,第一立體聲揚聲器154及第二立體聲揚聲器156耦接至音訊放大器152。圖2展示麥克風放大器158亦可耦接至立體 聲音訊編解碼器150。另外,麥克風160可耦接至麥克風放大器158。在一特定態樣中,頻率調變(「FM」)無線電調諧器162可耦接至立體聲音訊編解碼器150。又,FM天線164耦接至FM無線電調諧器162。另外,立體聲頭戴式耳機166可耦接至立體聲音訊編解碼器150。
圖2進一步指示射頻(「RF」)收發器168可耦接至類比信號處理器126。RF開關170可耦接至RF收發器168及RF天線172。如圖2中所展示,小鍵盤174可耦接至類比信號處理器126。又,具有麥克風之單聲道耳機176可耦接至類比信號處理器126。另外,振動器裝置178可耦接至類比信號處理器126。圖2亦展示電源供應器188(例如,電池)經由PMIC 180耦接至晶片上系統102。在一特定態樣中,電源供應器包括可充電DC電池或自交流電(「AC」)導出至連接至AC電源之DC變壓器的DC電源供應器。
CPU 110亦可耦接至一或多個內部、晶片上熱感測器157A、157B以及一或多個外部、晶片外熱感測器157C。晶片上熱感測器157可包含一或多個與絕對溫度成正比(「PTAT」)溫度感測器,溫度感測器係基於垂直PNP結構且通常專用於互補金屬氧化物半導體(「CMOS」)極大型積體(「VLSI」)電路。晶片外熱感測器157可包含一或多個熱敏電阻。熱感測器157可產生藉由類比至數位轉換器(「ADC」)控制器103轉換成數位信號之電壓降。然而,可在不脫離本發明之範疇的情況下使用其他類型之熱感測器157A、157B、157C。
DVFS模組26及PGO-SR模組101可包含由CPU 110執行之軟體。然而,DVFS模組26及PGO-SR模組101亦可自硬體及/或韌體形成而不脫離本發明之範疇。PGO-SR模組101結合DVFS模組26及排程器模組205可負責可幫助PCD 100避免過多功率消耗同時維持高位準之功能性及使用者體驗的工作負荷分配及資源設定。
觸控式螢幕顯示器132、視訊埠138、USB埠142、相機148、第一 立體聲揚聲器154、第二立體聲揚聲器156、麥克風160、FM天線164、立體聲頭戴式耳機166、RF開關170、RF天線172、小鍵盤174、單聲道耳機176、振動器178、電源供應器188、PMIC 180及熱感測器157C在晶片上系統102外部。然而,應理解,監測模組114亦可藉助於類比信號處理器126及CPU 110自此等外部裝置中之一或多者接收一或多個指示或信號,以輔助對於在PCD 100上可操作之資源的即時管理。
在一特定態樣中,本文中所描述的方法步驟中之一或多者可由儲存於形成一或多個PGO-SR模組101、DVFS模組26及排程器模組205之記憶體112中的可執行指令及參數實施。形成模組101、26、205之此等指令可由CPU 110、類比信號處理器126或另一處理器以及ADC控制器103執行以執行本文所描述之方法。另外,處理器110、126、記憶體112、儲存於其中之指令、或其一組合可充當用於執行本文中所描述的方法步驟中之一或多者的構件(在經組態以如此操作時)。
圖3為說明使用編譯器檢測以產生用於應用程式之設定檔資料集之主動資源分配及組態(「PRAC」)的例示性方法300的功能方塊圖。在方法300中,主機電腦99上之LLVM編譯器310A的程式引導最佳化(「PGO」)特徵用以編譯原始程式碼305。LLVM編譯器310A在應用程式之原始程式碼305上執行,以產生可由目標裝置100上之處理器執行的目的碼。作為編譯步驟之部分,可利用檢測以在原始程式碼305中之某些地點中插入對分析工具執行階段之調用及計數器遞增,藉此將彼等調用及計數器遞增嵌入於所得可執行目的碼中。將使用調用以在應用程式315A在目標裝置100上執行時收集關於應用程式315A之資訊,諸如呈基本區塊、函式、間接函式調用、執行緒、執行緒設定檔、記憶體使用、快取記憶體使用等之形式的程式315A之區域的執行計數。接著將目的碼,亦即設定檔經檢測應用程式315A傳遞(11)至 可執行程式碼之目標裝置100。
接著在目標裝置100上使用表示可能工作負荷之一或多個工作負荷資料集320執行在分析工具執行階段中連結的應用程式315A。對於每一工作負荷資料集320,藉由分析工具執行階段產生基於檢測之設定檔資料集27A。接著可將基於檢測之設定檔資料集27A提供回(13)至主機電腦99以使得應用程式315A可由LLVM編譯器310B重新編譯且重新連結。編譯器310B查看原始程式碼305及設定檔資料集27A,且向原始程式碼產生一組設定檔引導最佳化330。設定檔資料集27A可含有指示何功能最常由應用程式315A調用、應用程式315A之熱路徑、LLVM區塊之區塊計數、調用路徑資訊等的資料。使用設定檔資料集27A以產生PGO 330、PRAC實施例可有效地變換原始程式碼,以使得產生更有效率之目的碼,亦即PGO最佳化應用程式315B。舉例而言,當與舊版設定檔經檢測應用程式315A相比較時,PGO最佳化應用程式315B可包括緩解對於完全函式調用設定及拆除之需要、在調用開關之前對於共同開關語句之檢查、將檢測調用插入至API 335的內嵌函式調用,以使得當一條熱程式碼或應用程式315B之重要部分將執行時,應用程式315B自身將調用API 335。
一旦產生PGO最佳化應用程式315B,則可將其提供(15)至目標裝置100。PGO最佳化應用程式315B為應用程式315之可在具有最佳資源分配及組態之目標裝置100上執行而產生高QoS的形式。有利地,歸因於起始基於檢測之最佳化及排程器API 335之插入,PGO排程器執行階段101可實際上調用至系統軟體中以向軟體指示何時應接通/斷開核心、指示在近期將來中可能需要多少執行緒、預期記憶體行為等。對系統軟體之此等提示可實現產生目標裝置100之功率及效能最佳化的硬體最佳化。
值得注意地,設定檔資料集27B在一些實施例中可形成應用程式 315B之部分,而在其他實施例中可與結合應用程式315B相關聯而「存活」。對於並不將對於各種資源之調用或對於即將來臨之處理要求的提示嵌入至應用程式315B自身中的實施例,系統軟體抑或設定檔執行階段可在執行階段處讀取目標裝置100上之設定檔資料集27B以便作出主動資源分配及組態決策。
可設想,在一些PRAC實施例中,可隨時間推移更新且修訂(可能藉由監測模組114)設定檔資料集27B以便達成對(諸如)額外工作負荷之進一步最佳化。除了讀取設定檔資料集27B以外,當應用程式315B隨時間推移在目標上存活時,應用程式之行為(產生於特定目標裝置100及/或應用程式正由使用者使用之程度)亦可提供可寫回至設定檔資料集27B且藉以用於將來執行之最佳化的更多資訊
圖4為說明使用編譯器310及目標裝置100之設定檔工具340以產生用於應用程式之設定檔資料集27之主動資源分配及組態(「PRAC」)的例示性方法400的功能方塊圖。在方法400中,使用主機電腦99上之LLVM編譯器310A以對原始程式碼305進行編譯。LLVM編譯器310A在應用程式之原始程式碼305上執行,以產生可由目標裝置100上之處理器執行的目的碼。接著將目的碼,亦即應用程式315C傳遞(11)至可執行程式碼之目標裝置100。
接著使用表示可能工作負荷之範圍的多個工作負荷資料集320而在目標裝置100上執行應用程式315C。對於每一工作負荷資料集320,回應於當執行應用程式315C時應用程式315C之行為而藉由分析工具340產生基於樣本之設定檔資料集27A。接著可將基於樣本之設定檔資料集27A提供(13)至主機電腦99,以使得應用程式315C可由LLVM編譯器310B重新編譯且重新連結。編譯器310B查看原始程式碼305及設定檔資料集27A,且向原始程式碼產生一組設定檔引導最佳化330。設定檔資料集27A可含有指示何功能最常由應用程式315C調 用、應用程式315C之熱路徑、LLVM區塊之區塊計數、調用路徑資訊等的資料。使用設定檔資料集27A以產生PGO 330,PRAC實施例可有效地變換原始程式碼,以使得產生更有效率之目的碼,亦即PGO最佳化應用程式315D。舉例而言,當與舊版應用程式315C相比較時,PGO最佳化應用程式315D可包括緩解對於完全函式調用設定及拆除之需要、在調用開關之前對於共同開關語句之檢查、將檢測調用插入至API 335的內嵌函式調用,以使得當一條熱程式碼或應用程式315D之重要部分將執行時,應用程式315D自身將調用API 335。
一旦產生PGO最佳化應用程式315D,則可將其提供(15)至目標裝置100。PGO最佳化應用程式315D為應用程式315之可在具有最佳資源分配及組態之目標裝置100上執行而產生高QoS的形式。有利地,歸因於起始基於檢測之最佳化及排程器API 335之插入,PGO排程器執行階段101可實際上調用至系統軟體中以發指令給軟體何時應接通/斷開核心、在近期將來中可能需要多少執行緒、預期記憶體行為等。對系統軟體之此等提示可實現產生目標裝置100之功率及效能最佳化的硬體最佳化。
值得注意地,設定檔資料集27B在一些實施例中可形成應用程式315D之部分,而在其他實施例中可與結合應用程式315D相關聯而「存活」。對於並不將對於各種資源之調用或對於即將來臨之處理要求的提示嵌入至應用程式315D自身中的實施例,系統軟體抑或設定檔執行階段可在執行階段處讀取目標裝置100上之設定檔資料集27B以便作出主動資源分配及組態決策。
可設想,在一些PRAC實施例中,可隨時間推移更新且修訂設定檔資料集27B以便達成進一步最佳化。除了讀取設定檔資料集27B以外,當應用程式315D隨時間推移在目標上存活時,應用程式之行為(產生於特定目標裝置100及/或應用程式正由使用者使用之程度)亦可 提供可寫回至設定檔資料集27B且藉以用於將來執行之最佳化的更多資訊。
基本上,與例示性方法300實施例相比,例示性PRAC方法400實施例無需使用LLVM編譯器檢測而產生設定檔資料集27。實情為,例示性PRAC方法400利用分析工具340,儘管分析工具340可包括由電腦99代管之部分,但主要在目標裝置100上執行以在程式315C執行時擷取設定檔資料27。類似於與圖3實施例中之LLVM編譯器310A相關聯的檢測,分析工具340對系統資源取樣、檢查時脈頻率、監測器執行緒計數、判定熱路徑等。
圖5為說明僅使用目標裝置100之設定檔工具540以產生用於應用程式315之設定檔資料集27之主動資源分配及組態(「PRAC」)的例示性方法500的功能方塊圖。值得注意地,例示性PRAC方法500可適用於並不可供用於主機電腦上之第一遍次或第二遍次LLVM編譯的應用程式。舉例而言,可設想由第三方開發者開發且提供至目標裝置100之應用程式可受益於經由PRAC方法所提供之最佳化。
類似於上文所描述之方法400實施例的一部分,方法500實施例使用分析工具540以在根據工作負荷資料集520而執行應用程式515時開發設定檔資料集27。使用設定檔資料集27,系統軟體(例如,瀏覽器執行階段、高階作業系統等)可提供排程器模組205及/或DVFS模組26,及/或具有啟用主動工作負荷分配、處理器組態及其類似者之資訊的單獨執行階段模組(並未描繪)。有利地,使用設定檔資料集27作為導引用於預料及有效率地滿足應用程式515之需求的應用程式515之後續執行可由分析工具540監測且用以更新及改進設定檔資料集27。
圖6為說明在通用執行環境中使用設定檔資料27進行主動資源分配及組態(「PRAC」)的例示性方法600的功能方塊圖。可設想PRAC解決方案之實施例可適用於任何執行環境,且因而不限於上文所描述 或暗示之特定執行環境。如圖6中所說明,可在執行各種工作負荷資料集620期間基於應用程式615之監測而產生設定檔資料集27。隨著隨時間推移鑒於使用資料集27對應用程式615之後續執行而改進設定檔資料集27,可改良組態資源及分配工作負荷之效率。
為了讓本發明如所描述而起作用,本說明書中描述之程序或處理流程中的某些步驟自然地先於其他步驟。然而,若此次序或序列不會更改本發明之功能性,則本發明不限於所描述之步驟的次序。亦即,已認識到一些步驟可在其他步驟之前、之後或與其平行(大體上與其同步)執行而不背離本發明之範疇及精神。在一些情況下,可在不背離本發明之情況下省略或不執行某些步驟。另外,諸如「在其之後」、「接著」、「接下來」、「隨後」等詞並不意欲限制步驟之次序。此等詞僅用以引導讀者貫穿對例示性方法之描述。
另外,舉例而言,一般熟習程式設計技術之技術人員能夠基於本說明書中之圖及相關聯描述而輕鬆地撰寫電腦程式碼或識別適當硬體及/或電路以實施所揭示發明。因此,對特定一組程式碼指令或詳細硬體裝置之揭示不被視為對於充分理解如何製作及使用本發明而言係必要的。在上文的描述中且結合可說明各種處理流程之圖式更詳細地解釋所主張電腦實施之程序的創造性功能性。
在一或多個例示性態樣中,所描述功能可以硬體、軟體、韌體或其任何組合實施。若以軟體實施,則可將功能作為一或多個指令或程式碼而儲存於電腦可讀媒體上或經由電腦可讀媒體來傳輸。電腦可讀媒體包括電腦儲存媒體及通信媒體兩者,通信媒體包括促進電腦程式自一處傳送至另一處之任何媒體。儲存媒體可為可由電腦存取之任何可用媒體。作為實例而非限制,此類電腦可讀媒體可包含RAM、ROM、EEPROM、CD-ROM或其他光碟儲存器、磁碟儲存器或其他磁性儲存裝置,或可用以攜載或儲存呈指令或資料結構形式之所要程序 碼且可由電腦存取的任何其他媒體。
又,任何連接恰當地稱為電腦可讀媒體。舉例而言,若使用同軸電纜、光纖電纜、雙絞線、數位用戶線(「DSL」)或諸如紅外線、無線電及微波之無線技術而自網站、伺服器或其他遠端源傳輸軟體,則同軸電纜、光纖電纜、雙絞線、DSL或諸如紅外線、無線電及微波之無線技術包括於媒體之定義中。
如本文中所使用之磁碟及光碟包括緊密光碟(「CD」)、雷射光碟、光學光碟、數位影音光碟(「DVD」)、軟碟及藍光光碟,其中磁碟通常以磁性方式再現資料,而光碟用雷射以光學方式再現資料。以上各者之組合亦應包括於電腦可讀媒體之範疇內。
因此,儘管已經詳細說明且描述了所選擇態樣,但應理解,在不脫離如以下申請專利範圍所界定的本發明之精神及範疇的情況下,可在其中進行各種取代及更改。
26‧‧‧動態電壓及頻率縮放(DVFS)模組
27A‧‧‧設定檔資料集
27B‧‧‧設定檔資料集
99‧‧‧主機電腦
100‧‧‧攜帶型計算裝置(PCD)
101‧‧‧設定檔引導最佳化排程器執行階段(PGO-SR)模組
205‧‧‧平台排程器
300‧‧‧方法
305‧‧‧原始程式碼
310A‧‧‧LLVM編譯器
310B‧‧‧LLVM編譯器
315A‧‧‧應用程式
315B‧‧‧設定檔引導最佳化(PGO)最佳化應用程式
320‧‧‧工作負荷資料集
330‧‧‧設定檔引導最佳化(PGO)
335‧‧‧應用程式介面(API)

Claims (30)

  1. 一種用於一系統單晶片(「SoC」)中之主動資源分配及組態的方法,該方法包含:藉由包含一設定檔引導最佳化特徵之一編譯器編譯且連結一設定檔經檢測應用程式,其中編譯且連結該設定檔經檢測應用程式包含插入對一分析工具執行階段之調用;使用一或多個工作負荷資料集在一目標裝置上執行該設定檔經檢測應用程式,其中該等工作負荷資料集表示可能工作負荷;在該設定檔經檢測應用程式執行期間監測該設定檔經檢測應用程式,且基於對該等所插入調用之辨識而產生與該一或多個工作負荷資料集中之每一者相關聯的一基於檢測之設定檔資料集;基於該等基於檢測之設定檔資料集而重新編譯且重新連結該設定檔經檢測應用程式,其中重新編譯且重新連結該設定檔經檢測應用程式包含產生對原始程式碼之一組設定檔引導最佳化且產生一最佳化應用程式;執行該最佳化應用程式且產生一經修訂設定檔資料集,其中該經修訂設定檔資料集向該目標裝置提供用於工作負荷分配及資源組態之指令。
  2. 如請求項1之方法,其中該編譯器為一LLVM編譯器。
  3. 如請求項1之方法,其中一設定檔資料集在分配與該應用程式相關聯的一工作負荷之前發指令給該SoC中之一或多個組件以調整一功率位準。
  4. 如請求項1之方法,其進一步包含基於該最佳化應用程式之後續 執行而更新該經修訂設定檔資料集。
  5. 如請求項1之方法,其中該經修訂設定檔資料集形成該最佳化應用程式之部分。
  6. 如請求項1之方法,其中該經修訂設定檔資料集與該最佳化應用程式分離。
  7. 如請求項1之方法,其中該目標裝置為呈一行動電話形式之一攜帶型計算裝置。
  8. 一種用於一系統單晶片(「SoC」)中之主動資源分配及組態的系統,該系統包含:一第一處理器,其與一第一記憶體組件通信,該第一處理器經組態以:藉由包含一設定檔引導最佳化特徵之一編譯器編譯且連結一設定檔經檢測應用程式,其中編譯且連結該設定檔經檢測應用程式包含插入對一分析工具執行階段之調用;及基於該等基於檢測之設定檔資料集而重新編譯且重新連結該設定檔經檢測應用程式,其中重新編譯且重新連結該設定檔經檢測應用程式包含產生對原始程式碼之一組設定檔引導最佳化且產生一最佳化應用程式;一第二處理器,其與一第二記憶體組件通信,該第二處理器經組態以:使用一或多個工作負荷資料集在一目標裝置上執行該設定檔經檢測應用程式,其中該等工作負荷資料集表示可能工作負荷;及執行該最佳化應用程式且產生一經修訂設定檔資料集,其中該設定檔資料集向該目標裝置提供用於工作負荷分配及資源組態之指令;及 一監測模組,其經組態以:在該設定檔經檢測應用程式執行期間監測該設定檔經檢測應用程式,且基於對該等所插入調用之辨識而產生與該一或多個工作負荷資料集中之每一者相關聯的一基於檢測之設定檔資料集。
  9. 如請求項8之系統,其中該編譯器為一LLVM編譯器。
  10. 如請求項8之系統,其中一設定檔資料集在分配與該應用程式相關聯的一工作負荷之前發指令給該SoC中之一或多個組件以調整一功率位準。
  11. 如請求項8之系統,其進一步包含該第二處理器基於該最佳化應用程式之後續執行而更新該經修訂設定檔資料集。
  12. 如請求項8之系統,其中該經修訂設定檔資料集形成該最佳化應用程式之部分。
  13. 如請求項8之系統,其中該經修訂設定檔資料集與該最佳化應用程式分離。
  14. 如請求項8之系統,其中該目標裝置為呈一行動電話形式之一攜帶型計算裝置。
  15. 一種用於一系統單晶片(「SoC」)中之主動資源分配及組態的系統,該方法包含:用於藉由包含一設定檔引導最佳化特徵之一編譯器編譯且連結一設定檔經檢測應用程式的構件,其中編譯且連結該設定檔經檢測應用程式包含插入對一分析工具執行階段之調用;用於使用一或多個工作負荷資料集在一目標裝置上執行該設定檔經檢測應用程式的構件,其中該等工作負荷資料集表示可能工作負荷;用於在該設定檔經檢測應用程式執行期間監測該設定檔經檢 測應用程式,且基於對該等所插入調用之辨識而產生與該一或多個工作負荷資料集中之每一者相關聯的一基於檢測之設定檔資料集的構件;用於基於該等基於檢測之設定檔資料集而重新編譯且重新連結該設定檔經檢測應用程式的構件,其中重新編譯且重新連結該設定檔經檢測應用程式包含產生對原始程式碼之一組設定檔引導最佳化且產生一最佳化應用程式;用於執行該最佳化應用程式且產生一經修訂設定檔資料集的構件,其中該經修訂設定檔資料集向該目標裝置提供用於工作負荷分配及資源組態之指令。
  16. 如請求項15之系統,其中該編譯器為一LLVM編譯器。
  17. 如請求項15之系統,其中一設定檔資料集在分配與該應用程式相關聯的一工作負荷之前發指令給該SoC中之一或多個組件以調整一功率位準。
  18. 如請求項15之系統,其進一步包含用於基於該最佳化應用程式之後續執行而更新該經修訂設定檔資料集的構件。
  19. 如請求項15之系統,其中該經修訂設定檔資料集形成該最佳化應用程式之部分。
  20. 如請求項15之系統,其中該經修訂設定檔資料集與該最佳化應用程式分離。
  21. 如請求項15之系統,其中該目標裝置為呈一行動電話形式之一攜帶型計算裝置。
  22. 如請求項16之系統,其中該目標裝置為呈一行動電話形式之一攜帶型計算裝置。
  23. 一種電腦程式產品,其包含在其中體現有一電腦可讀程式碼之一電腦可用媒體,該電腦可讀程式碼經調適以執行來實施一種 用於一系統單晶片(「SoC」)中之主動資源分配及組態的方法,該方法包含:藉由包含一設定檔引導最佳化特徵之一編譯器編譯且連結一設定檔經檢測應用程式,其中編譯且連結該設定檔經檢測應用程式包含插入對一分析工具執行階段之調用;使用一或多個工作負荷資料集在一目標裝置上執行該設定檔經檢測應用程式,其中該等工作負荷資料集表示可能工作負荷;在該設定檔經檢測應用程式執行期間監測該設定檔經檢測應用程式,且基於對該等所插入調用之辨識而產生與該一或多個工作負荷資料集中之每一者相關聯的一基於檢測之設定檔資料集;基於該等基於檢測之設定檔資料集而重新編譯且重新連結該設定檔經檢測應用程式,其中重新編譯且重新連結該設定檔經檢測應用程式包含產生對原始程式碼之一組設定檔引導最佳化且產生一最佳化應用程式;執行該最佳化應用程式且產生一經修訂設定檔資料集,其中該經修訂設定檔資料集向該目標裝置提供用於工作負荷分配及資源組態之指令。
  24. 如請求項23之電腦程式產品,其中該編譯器為一LLVM編譯器。
  25. 如請求項23之電腦程式產品,其中一設定檔資料集在分配與該應用程式相關聯的一工作負荷之前發指令給該SoC中之一或多個組件以調整一功率位準。
  26. 如請求項23之電腦程式產品,其進一步包含基於該最佳化應用程式之後續執行而更新該經修訂設定檔資料集。
  27. 如請求項23之電腦程式產品,其中該經修訂設定檔資料集形成 該最佳化應用程式之部分。
  28. 如請求項23之電腦程式產品,其中該經修訂設定檔資料集與該最佳化應用程式分離。
  29. 如請求項23之電腦程式產品,其中該目標裝置為呈一行動電話形式之一攜帶型計算裝置。
  30. 如請求項24之電腦程式產品,其中該目標裝置為呈一行動電話形式之一攜帶型計算裝置。
TW105122088A 2015-07-20 2016-07-13 系統單晶片中應用程式設定檔驅動之排程及組態 TW201716998A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/803,110 US9940109B2 (en) 2015-07-20 2015-07-20 Application profile driven scheduling and configuration in a system on a chip

Publications (1)

Publication Number Publication Date
TW201716998A true TW201716998A (zh) 2017-05-16

Family

ID=56409194

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105122088A TW201716998A (zh) 2015-07-20 2016-07-13 系統單晶片中應用程式設定檔驅動之排程及組態

Country Status (3)

Country Link
US (1) US9940109B2 (zh)
TW (1) TW201716998A (zh)
WO (1) WO2017014911A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10360005B2 (en) * 2016-10-24 2019-07-23 International Business Machines Corporation Local function call tailoring for function pointer calls
US10503233B2 (en) * 2017-04-14 2019-12-10 Intel Corporation Usage scenario based monitoring and adjustment
US10503626B2 (en) * 2018-01-29 2019-12-10 Oracle International Corporation Hybrid instrumentation framework for multicore low power processors
CN109298940B (zh) * 2018-09-28 2019-12-31 考拉征信服务有限公司 计算任务分配方法、装置、电子设备及计算机存储介质
CN109739639A (zh) * 2018-12-07 2019-05-10 珠海格力电器股份有限公司 一种示教器内存使用管理方法、装置、终端及存储介质
US11537372B2 (en) * 2020-03-25 2022-12-27 ManyCore Corporation Generating compilable machine code programs from dynamic language code
US20220269542A1 (en) * 2021-02-19 2022-08-25 Micron Technology, Inc. Management of a computing device usage profile
US11321907B1 (en) * 2021-03-02 2022-05-03 Samsung Electronics Co., Ltd. Method and apparatus for graphics driver optimization using daemon-based resources
FR3121534B1 (fr) * 2021-04-02 2023-04-07 Safran Aerosystems Serveur, système et procédé de configuration pour la génération d’informations de configuration pour une plateforme multi-systèmes

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7886283B2 (en) * 2004-09-17 2011-02-08 The Regents Of The University Of California Phantom serializing compiler and method of operation of same
US8205200B2 (en) * 2005-11-29 2012-06-19 Intel Corporation Compiler-based scheduling optimization hints for user-level threads
US8136102B2 (en) 2006-06-20 2012-03-13 Google Inc. Systems and methods for compiling an application for a parallel-processing computer system
US8161304B2 (en) * 2009-01-20 2012-04-17 Microsoft Corporation Power management for large memory subsystems
US8935683B2 (en) 2011-04-20 2015-01-13 Qualcomm Incorporated Inline function linking
US8966462B2 (en) 2012-08-10 2015-02-24 Concurix Corporation Memory management parameters derived from system modeling
US20130080760A1 (en) 2012-08-10 2013-03-28 Concurix Corporation Execution Environment with Feedback Loop
US8959495B2 (en) 2012-09-14 2015-02-17 Oracle International Corporation Unifying static and dynamic compiler optimizations in source-code bases
US9329970B2 (en) * 2013-03-15 2016-05-03 International Business Machines Corporation Selecting an operator graph configuration for a stream-based computing application
GB2505564B (en) * 2013-08-02 2015-01-28 Somnium Technologies Ltd Software development tool
US9841914B2 (en) * 2015-05-05 2017-12-12 Sap Se Managed energy-efficient hybrid main memory systems

Also Published As

Publication number Publication date
US9940109B2 (en) 2018-04-10
WO2017014911A1 (en) 2017-01-26
US20170024191A1 (en) 2017-01-26

Similar Documents

Publication Publication Date Title
TW201716998A (zh) 系統單晶片中應用程式設定檔驅動之排程及組態
US9710309B2 (en) Task scheduling in big and little cores
US10942716B1 (en) Dynamic computational acceleration using a heterogeneous hardware infrastructure
TWI594117B (zh) 剖析應用程式碼以識別用於fpga實施之程式碼部份
US8984200B2 (en) Task scheduling in big and little cores
US10445118B2 (en) Methods and apparatus to facilitate field-programmable gate array support during runtime execution of computer readable instructions
US9619298B2 (en) Scheduling computing tasks for multi-processor systems based on resource requirements
US7844960B2 (en) Optimizing software program execution during class loading phase
US9817643B2 (en) Incremental interprocedural dataflow analysis during compilation
CN104123184A (zh) 一种用于为构建过程中的任务分配资源的方法和系统
Shuja et al. Analysis of vector code offloading framework in heterogeneous cloud and edge architectures
US9678792B2 (en) Shared resources in a docked mobile environment
Georgiou et al. Analyzing programming languages' energy consumption: An empirical study
JP2017073000A (ja) 並列化方法、並列化ツール、車載装置
KR20200097579A (ko) 프로세스 스케줄링을 위한 전자 장치, 저장 매체 및 방법
US8990788B2 (en) Compilation of code in a data center
US11573777B2 (en) Method and apparatus for enabling autonomous acceleration of dataflow AI applications
Medeiros et al. Transparent aging-aware thread throttling
CN113260976A (zh) 用于在编译源代码中调度指令技术
Wu et al. The study of android parallel programming based on the dual-core cortex-A9
WO2024060256A1 (en) Self-evolving and multi-versioning code
KR102305122B1 (ko) 클라우드 기반 함수 실행 서비스를 제공하는 시스템 및 이의 자원 할당 방법
US8566811B2 (en) Fine-grained performance configuration of application
Gómez-Iglesias et al. High-Level Approaches for Leveraging Deep-Memory Hierarchies on Modern Supercomputers
WO2018137258A1 (en) Loadable modules with partial linking and load-time relocation