TW201209572A - Apparatus, method, and system for improving power performance efficiency by coupling a first core type with a second core type - Google Patents

Apparatus, method, and system for improving power performance efficiency by coupling a first core type with a second core type Download PDF

Info

Publication number
TW201209572A
TW201209572A TW100122413A TW100122413A TW201209572A TW 201209572 A TW201209572 A TW 201209572A TW 100122413 A TW100122413 A TW 100122413A TW 100122413 A TW100122413 A TW 100122413A TW 201209572 A TW201209572 A TW 201209572A
Authority
TW
Taiwan
Prior art keywords
code
core
active
execution
optimized
Prior art date
Application number
TW100122413A
Other languages
English (en)
Other versions
TWI516908B (zh
Inventor
Youfeng Wu
Shi-Liang Hu
Edson Borin
Cheng Wang
Jr Mauricio Breternitz
Wei Liu
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of TW201209572A publication Critical patent/TW201209572A/zh
Application granted granted Critical
Publication of TWI516908B publication Critical patent/TWI516908B/zh

Links

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • 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

Description

201209572 六、發明說明: c發明所屬之技術領域3 發明領域 本發明係有關處理器之領域,以及係特別論及使電 力、效能效率最佳化。 【先前技術3 發明背景 半導體處理和邏輯設計方面之進步,業已容許增加可 能存在於積體電路裝置上面之邏輯的數量。結果,彼等電 腦系統組態,業已自一個系統中之單一的或多重的積體電 路,演進至存在於個別積體電路上面之多重核心、多重硬體 線程、和多重邏輯處理器。一個處理器或積體電路,通常係 由一個單一實體處理器晶粒所構成,其中,該處理器晶粒, 可能包括任何數目之核心、硬體線程、或邏輯處理器。 積體電路上面之處理元件--核心、硬體線程、和邏輯處 理器--在數量上的持續增加,使得更多之工作,能夠並列地 被完成。然而,一些全部採用亂序式核心的處理器,在某 些情況下,可能會導致電力之無效率和/或效能之無效 率。結果,為面對此種電力--效能效率之問題,已有某些硬 體--軟體協同設計式系統被開發出。在該系統中,可能會有 一個寬的單一順序式處理器被利用,同時,軟體可有效率 地最佳化及排程在該順序式硬體上面運行的程式。 然而,硬體--軟體協同設計式系統,通常會伴隨兩項 反面之影響:(1)利用一個二進制轉譯器來轉譯和/或最佳 化程式碼,可能會減緩某些具有短的運行工作和小的響應 201209572 時間等限制條件之應用程式(二進制轉譯脆弱點 (glassj aw));和(2)—個順序式處理器,就某些較適合並列= 執行之程式類型而言,可能會無法很好地被執行(―個順 式脆弱點)。 為例示忒二進制轉譯(BT)之脆弱點議題,有—個用以 執行微軟Excel應用軟體之典型分佈圖的範例會、 从檢 驗。就所執行之100億動態X86指令而言,模擬例示出, 23%之動態指令,係來自靜態指令,彼等會被重複少^ 100,000次,此可tb被稱為非活躍程式碼。若此等护二 使用二進制轉譯軟體(具轉譯/解譯有關之典型前2 理’和最佳化之效能增益)來解譯及轉譯,該非活躍程心 比起内置式Χ86執行,將需要大約3似以上之指令來^行碼 而且,該轉譯會使得整個10 Β指令,執行14乂以上之指^。 考慮大約有25%被執行之程式碼,係屬非活躍程式^則 平均而言,轉譯前置處理,將會使得該非活躍程式石馬 運行上要慢4·4Χ,以及會使得整個執行比起該内置式 行,在運行上要慢1.7Χ。 机 為例示該順序式之脆弱點,有—個順序式處理器之致 能的範例,係減於-财鱗如如叫魅期間之亂 序式處理H而純紐。在衫程柄義龍備之順序 式和乱序式(000)處理器的模擬期間,可見到的是,大約 =之程式,在該000處理器上面,運行要快ι57χ,而 有4〇%之程式,在該順序式處理器上面,運行要快 雖航等難騎_频,以及在絲上可能會 ,彼等可例示出的是,兩者系統有潛在可能會包括 201209572 電力和/或效能方面之無效率。 【發明内容】 依據本發明的一個實施例,係特別提出一種設備,其 包含有:一個積體電路,其包括一個適於不依程式順序來 執行程式碼之亂序式處理器核心(〇〇〇);和一個適於依程 式順序來執行該程式碼之活躍區段的順序式處理器核心。 圖式簡單說明 本發明係藉由範例來加以例示,以及並非意圖受限於 所附諸圖之圖例。 第1圖係例示一個包括兩個非對稱式核心之處理器的 實施; 第2圖係例示一個包括一個内置式核心、一個軟體管理 式核心、和一個程式碼分配模組之處理器的實施例; 第3圖係例示一個用以在一些核心中分配程式碼使達 成最大效能和最大電力節省之處理器的實施例; 第4圖係例示一個在一個亂序式核心和一個順序式核 心中分配程式碼使達成最大效能和最大電力節省之方法的 流程圖之實施例;而 第5圖則例示另一個在一個亂序式核心和一個順序式 核心中分配程式碼使達成最大效能和最大電力節省之方法 的流程圖之實施例。 【實施方式3 較佳實施例之詳細說明 在下文之說明中,係闡明眾多之特定細節,諸如特定 201209572 類型之處理器核心、特定之處理器組態、特定之活躍程式 碼區域識別運算法、儲存轉譯/最佳化之程式碼的特定結 構、硬體/軟體間之工作的特定區分、特定之處理器單元 /邏輯、等等的範例,使提供本發明之徹底理解。然而, 本技藝之專業人員可顯而易見到的是,此等特定細節並不 需要被採用來實現本發明。在其他實例中,一些習見之組 件或方法’諸如特定的和他型之處理器架構、有關所說明 之運算法的特定邏輯電路/程式碼、特定之程式碼實現 體、特定之二進制轉譯細節、和微處理器之其他特定運作 細節’並未詳加說明’以期避免不當地使本發明混淆。 本說明書所說明之方法和設備,係為實現一種具有一 個軟體管理式核心之内置式核心,使達成最大之效能和電 力節省。特言之,在彼等核心間之合作,主要係參照一個 亂序式核心和一個協同設計順序式核心,來加以討論。然 而,本說明書所說明之設備和方法,並非如此受限,因為 彼等係可能在一些非對稱式核心間之任何程式碼分配中加 以實現。舉例而言,本說明書所說明之程式碼分配方法和 設備,係可能供兩個可實現獨特的指令集架構(ISA)之亂序 式核心利用。此外,在此等核心間之合作,在討論上經常 為硬體機構與程式碼/軟體間之劃界。然而,硬體、軟體、 和/或韌體之任何混和或獨佔性使用,係可能被利用來實 現下文所說明之方法和設備。 參照第1圖’所例示係一個包括多重核心之處理器的實 施例。此處理器1〇〇 ,包括任何之處理器,諸如微處理器、 201209572 内嵌式處理器、數位信號處理器(DSP)、網路處理器、或其 他可執行程式碼之裝置。該處理器100,在一個實施例中, 包括至少兩個不同類型之核心―核心1〇1和〗〇2。然而,該處 理器100,可能會包括任何數目之處理元件。 丨印呢柱_兀1干,你指稱_個線程單 凡、一個線程時槽、—個程序單元、-個脈絡(context)、一 個邏輯處理器、—個硬體線U核心、和/或任何其 他το件m夠保存_個處理器有關之狀態,諸如一個 執行狀態或架構狀態。換言之…個處理元件,在一個實 施例中’係指稱任何有能力獨立地與程式碼相聯結之硬 體’諸如一個軟體線程、作 庙田β斗、上 式碼。-個龍處理3 Ρ 或其他程 慝理益,通指稱一個積體電路,盆 線Γ會包括任何數目之其他處理元件,諸如核心或硬體 系一獨立架構 積體電路上面的一個邏輯電路’其中,每個 二=r至少某些專屬型執行資源相關聯。: 能夠”草—個硬體線程’通常係指稱位於1 格=某構狀態之_路上面的任何邏輯電 ㊉“獨立維護之架構狀態,共享針對執行資 其::。誠如可見到的是’當某一定之資源被共享,心 I者為專屬於某—架構狀態時,—個硬體線程與核心 ^間的界線將會重疊。此外,—個核心和—個硬體線二之 或常會被-個作業系統,視為個別之邏輯性處理/王’ 201209572 該作業系統能夠個別地排定每個邏輯性處理器上面之運作。 該實體處理器100,如第1圖中所例示’包括兩個核心, 核心101和102。在此,該等核心101和102,係被認為屬非 對稱式核心,亦即,具不同之組態、功能性單元、和/或 邏輯電路之核心。在一個實施例中,核心1〇丨包括一個亂序 式處理器核心,而核心102包括一個順序式處理器核心。然 而,該等核心1〇U〇102,可能係個別地選自任何類型之核 心’諸如一個内置式核心、一個軟體管理式核心、一個適 於執行一個内置式指令集架構(ISA)之核心、一個適於執行 一個經轉譯之指令集架構(ISA)的核心 '一個協同設計式核 心、或其他已知之核心。此外,為進一步之討論,第i圖中 所例示之功能性單元,會在下文做更詳細之說明。 誠如所描述’核心101包括兩個硬體線程1〇10〇1〇lb , 彼等亦可能被稱為硬體線程時槽1〇13和1〇11)。相形之下, 核心102包括一個硬體線程1〇2a。所以,一個軟體實體,諸 如一個作業系統,在一個實施例中,有潛在可能會將處理 器100視為三個單獨之處理器,亦即,三個能夠同時執行三 個軟體線程之邏輯性處理ϋ或處理元件。或者,-個軟體 實體,可能僅會將處理H⑽視為具有兩個單獨之處理器― 線程時槽lGla和1Glb,而所㈣Μ式㈣,Μ 理該核心102上面之程式碼的執行。 誠如上文所暗指,一個第-線程係與架構狀態暫存器 101a相聯、個第二線程係與架構狀態暫存器谢匕相聯 以及個第二線程係、與架構狀態暫存器⑻咖聯結。 201209572 誠如所例不,彼等架構狀態暫存器⑻a,會在彼等架構狀 態暫存器lGlb中被複製,故個別之架構狀態/脈絡,能夠 就邏輯性處理器l〇la和邏輯性處理器1〇比而加以儲存。彼 等架構狀態暫存||lG2a,可能係與暫存||1()la、1Glb相同。 或者彼等暫存器l〇2a,可能改為核心1〇2之架構所獨具。在 核心101中,其他較小之資源,諸如重新命名分配器邏輯13〇 中之指令指標和重新命名邏輯,可能亦會就該等線程1〇1& 和101b加以複製。某些資源,諸如重新安排/退出單元135 中之重排序緩衝器、ILTB 120、加載/儲存緩衝器、和佇 列’可成會透過分割而被共享。其他資源,諸如通用内部 暫存器、分頁表基底暫存器、低階資料快取區和資料_TLB 115、執行單元14〇、和部份之重新安排/退出單元135,有 潛在可能會完全被共享。 該處理器100,經常會包括其他資源,彼等可能會完全 被共享,可能會透過分割而被共享,可能為一些處理元件 所專用。在第1圖中,係例示一個具有某一處理器之例示性 邏輯單元/資源的純範例性處理器之實施例。值得注意的 是’一個處理器可能包括或不然省略此等功能性單元中的 任何一個,加上包括任何其他未加描述而習見之功能性單 元、邏輯、或韌體。誠如所例示,該核心101係例示為一個 簡化之亂序式(〇〇〇)處理器核心。此〇〇〇核心,包括一個 用以預測要被執行/採行之分支的分支標的緩衝器120 ’和 一個用以儲存指令有關之位址轉譯登錄項之指令轉譯緩衝 器(I-TLB) 120。 201209572 該核心101進一步包括一個解碼模組125,使柄合至一 個接取單元120,而解碼所接取之元件。該接取邏輯,在一 個實施例中,包括分別與線程時槽l〇la、l〇lb相聯結之個 別定序器。通常,該核心101係與一個第一指令集架構(ISA) 相聯結’後者可界定/指明在該處理器丨〇〇上面可執行之指 令。在此’通常,一些屬該第一ISA之一部分的機器碼指令, 包括某一部份之指令(稱為一個作業碼),其可註明/指明一 個要被執行之指令或運作。該解碼邏輯125,包括一個電路, 其可由彼等之作業碼,來辨識此等指令,以及可在管線中傳 遞經解碼之指令,以便如該第一ISA所界定地加以處理。 在一個範例中,該分配器和重新命名器區塊丨3〇,包括 一個分配器’使保留資源,諸如暫存器檔案,而儲存彼等 指令處理結果。然而’該等線程101a和101b,係有潛在可 能具亂序執行之能力,其中,該分配器和重新命名區塊 130,亦可保留其他資源,諸如重新排序緩衝器,使追蹤彼 等才曰令結果。該單元丨3〇亦可能包括一個暫存器重新命名 器使重新命名程式/指令參照暫存器,給該處理器1〇〇内 。之其他暫存器。該重新排序器/退出單元135,包括一個 組件,諸如上文所提及之重新排序緩衝器、加載緩衝器、 和儲存緩衝器,使支援亂序執行和隨後此亂序執行之指令 的顺序退出。 S亥排程器和執行單元區塊140’在一個實施例中,包括 個排耘器單元,使排定該執行單元上面之指令/運作。 !而個浮點指令係在一個具有一個可用之浮點執 10 201209572 灯早疋之執仃早兀的—料上面被排定。彼等與該等執行 1相聯結之暫存器構案亦會被納人,使儲存資訊指令處 。果。-些㈣性執行單元包括:—個浮點執行單元、 個1數執仃早7〇、-個跳轉執行單元、—個加載執行單 兀、一個儲存執行單元、和其他習見之執行單元。 有一個較低階之f料快取區和資料轉譯緩衝器(D-TLB) 150耗合至該執行單元14G。該資料快取區,係為儲存最 γ吏用/針對運作之元素,諸如資料運算元,彼等有潛在 σ ^會被保持在δ己憶體相參狀態中。該 係為儲存最近之虛擬/線性對實體位址的轉譯。就某—特 =之範例而言…個處理器可能會包括分頁表結構,而將 實體記憶體分割成多數之虛擬分頁。 誠如上文所陳述,在一個實施例中,該核心1〇2包括一 個協同設計順序式核心。結果,第旧例示的是一個順序式 核心之簡化式管線。此管線包括;__個接取單元121、—個 解I單元126、-個執行單元141、和一個較低階之資料快 取區151。此等單元之工作方式,可能與該核心⑼中之對 應單元相類似。然而,在一個順序式核心中,該等指令/ 運作在執行上,係依程式順序,而非如在該核心1 〇 1中的潛 在可能之亂序式執行。在一個範例中,該亂序式核心1〇1, 係被稱為-個内置式核心’而該順序式核心1G2,係被稱為 一個協同設計式核心。或者,該順序式核心1〇2,係一個内 置式核心’以及該亂序式核心l0l,係一個協同設計式核心^ 在此,該等核心101和102,會共享對一個用以快取儲 11 201209572 存最近接取之元素的較高階或更無序之快取區的存取。值 得注意的是’較高階或更無序,係指稱—些加增的或離該 /亍單元更遠之快取儲存位階。在一個實施例中該較高 1¾之决取區11〇’係一個最終位階之資料快取區—處理器 上面之°己隐體系中的最後一個快取區--諸如一個第二或第 —P自之資料快取區。然而,該較高階之快取區11〇 ,並非如 匕又限因為其可能會包括一個指令快取區,或者與之相 聯、”。。一個循序區段(trace)快取區―某一類型之指令快取區 〜取而代之的&可能會麵合在簡碼器125後面,使儲存最 近解碼過之循序區段。 在所說明之組態中,該處理器1 〇 〇亦包括一個匯流排介 面模組105 ’使與此處理器100外部類似系統記憶體175、晶 片集、北橋晶片、或其他積體電路等裝置相通訊。該記憶 體175,可能專屬於該處理器1〇〇,或與一個系統之其他裝 置共享。該記憶體175常見類型之範例’包括動態隨機存取 記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、非揮發性 s己憶體(NV記憶體)、和其他習見之儲存裝置。 在一個實施例中,程式碼係基於最大化之效能和電 力,使分配於該等核心101與102之間。舉例而言,彼等程 式碼區域經辨識,可在該兩核心101、1〇2上面有較佳之執 行。結果,當此等程式碼區域中有一個被遭遇/偵測到時, 該程式碼區段,便會分配給該適當之核心。此等區域之辨 識,可能係藉由硬體、軟體、或彼等之組合,以靜態方式(在 該程式碼執行前’諸如透過程式分佈圖分析)或動態方式(在 12 201209572 該程式碼執行期間)’來加以完成。 在—個動態解決方案之 心,諸如核心1〇1…各 例中,-個處理器核 其效能、電力節二個内定之核心,使基於 或彼等之— 任何其他習見之處理考量、 101上面執^ =_碼°接著’該内定程式碼在核心 會加以辨:?在核心⑽上面或可執行較佳娜 隨後遭遇該等經辨識之程式碼區段時,彼 刀],'·。_心102以供執行。值得注意的是,該等區域 二2上面之執行可能包括:為核心ι〇ι暖身之推測性 執:::2:之此等區域的序列執行,此 此等區域/上面之其他區域的執行;或 時執〜—"程式碼在核心1〇2上面之執行的並列同 &在靜態解決方案之範例中,一個編譯器或使用者,可 ,能會以比方說指令或劃界,來辨識—些在—個或另—個核 面執行較佳之程式碼區段。在此,該核心會執行程 ^碼’直至遭遇此種指令為止。或響應來自核心丨⑽之監控, 5 *由核U· 102之獨特初始碼(觸發),該經辨識之程式碼區 段,接著便會基於此遭遇之指令,而在核心1〇2上面執行。° 辨識程式碼區段在一個或另一個核心上面有較佳之運 订’係動態地或靜態地加以完成’在某些實施例中,該内 置式程式碼會被轉譯及/或最佳化,以備在另一個核心上 面運订。舉例而言,蚊核心1G1包括-個可辨識某—第〜 iSA類型之解碼邏輯〗25,以及該核心1〇2包括一個可辨熾某 13 201209572
一第二ISA類型之解碼邏輯126。在此狀況中,若該第一ISA 類型的一個程式碼區域,係要在該核心102上面執行,則咳 程式碼區域,便會被轉譯成該第二ISA類型,以備在該核心 102上面執行。值得注意的是,彼等ISA類型間之轉譯係純 屬例示性。取而代之的是,要在該核心101上面執行之亂序 式經最佳化的程式碼,可能會就順序式核心1〇2之執行而加 以再最佳化。在此情景中,該核心102可能會包括與該杪心 101相同之ISA或其子集。然而,最佳化係針對該程式碼加 以執行,以確保在一個單一寬的順序式核心上面,能運行 更有效率。 該等核心HM與核dG2間為要有效率地分配程式碼的 合作,可能係在硬體、_、軟體、或彼等之組合令加以 實現。上文有關要識別程式碼區域之動態解決方案的範 例’會做進-步之檢驗,關示合作機構之範難實施例: 在此範例中’ -_置格式巾讀式碼經最魏,係可在 亂序式核心KU上面執行。在—個程式碼區域或該程式碼之 執行期間’與該核心1G1和/或核心吻目聯結之監控与硬 L可能會被利用來決定與該核心叫執行該程式碼區域相 關聯之效能。或者,-個類似軟體、作職統_碼、微 碼、或其他程式碼等程式碼,可能會在該核心收上面執 二,使決定/監控在執行該程式碼區域中之核㈣i的效 二若,該程式碼區域,在該核心m上面或將 2 體、軟體、_、或料之組合,便可 4被利絲轉譯V佳化該程式碼區域,使在該核 201209572 心102上面執行。 …=當該核心101再次遭遇該程式碼區域-指令指標 指向邊程式碼區域時,#舍 會有個用以辨識該程式碼區域 =別碼指令被接取到或被解碼,或者有另—種辨識一個 ^域之方法被偵測到—_轉輝/最佳化版本之程 =碼區域’便會在該核心1G2上面執行。在—個實施例中, 102上面執仃該程式碼區域期間,該核心I。}可能 協同地執行其他程式碼區域,使增加整體程式執行效 此。值得注意的是,同時或並列地執行,可 該等核心ΗΠ、Η)2上面分開的軟體線程之執行。 其相形之下,彼等線程可能會在該核心ι〇ι、1〇2上面做 管線處理。就此情景的—個範例而言,假定該兩軟體線程, 各包括多重階段(活躍性、非活躍性、等等)之程式碼。在此, 來卜個第-線程之非活躍程式碼,可能會在該核心ι〇ι上 執行以及在遭遇一個活躍區域時,便會有一個經轉譯 =活躍區域’在職,。1()2±面執行。在核上面執行 ,轉譯之程式碼活躍區域期間,來自該第二線程之非活躍 :式碼,可能會在該核心101上面執行。在該核心1〇2上面, 當該第-轉譯之活_式碼執行完㈣,另—個來自該 第-敕體線程之活躍區域,便可能會接著被執行。誠如可 自此鈿例見到的是,該等程式碼階段,可能會針對每個核 u做父替處理(interleaved),而促成管線處理類型之執行。 在另一個實施例中,程式碼可能會相對於該兩核心而依序 被執行,諸如一個程式碼區域在該核心101上面,該經辨識 15 201209572 之程式碼區域在該核心102上面,以及接著隨後是另一個程 式碼區域在該核心101上面。 此外’即使當有一個程式碼區域,最初被辨識為在該 核心102上面執行時,該執行之效能,亦可能會被監控。兩 者核心上面之效能’接著可能會考慮決定何者核心最適合 執行邊程式碼區域,以達成最大之效能和電力節省。舉例 而5,若有一個程式碼區域,被辨識要在該核心1〇2上面, 被執行為_譯之程式碼,但難心'1()2上面之效能,係低 於。亥核〜101上面之效能(或者該核心上面之效能增 益,並未勝過在核心201上面執行之電力節省),則該程式 碼可能會在隨後遭遇時,再分配給該核心⑻。 第1圖係例示-個範例性處理器之分離的邏輯視圖,而 展現不同之模組、單元、和/或邏輯。然而,值得注意的 是,一個彻本朗書所說明之方法和設備的處理器,並 不需要包括該等例示之單元。而且,該處理器可能會省略 所顯示之某些或所有單元。此外,上文大多數之討論,已 參照-個亂序式處理器核心、和_個順序式處理器核心。然 而’誠如前文所述,該兩處理器核心,可能係任何版本之 非對稱式核心,諸如一個内罟— 個内置式核心和一個軟體管理式核 心。此外’第_描述兩個核心;“…個處理器亦可 能包括任何數目之核心,諸如同—類型之多重核心,加上 多於兩個類型各不相同之核心。 第1圖亦例示—個以點對點之方式與-個至某-外在 記憶體控制器(控制器中心 16 201209572 然而’許多當今之處理器,已開始包括一個處理器級 (〇n-pr〇Cessor)記憶體介面模組—一個晶片級(〇n_chip)模組― 而具有一個用以互聯多重核心之環形組態,加上共享式快 取區和其他介面。雖然未例示出,該處理器,在一個實 施例中’包括一個環形互聯耦合之核心、快取區、和記憶 體控制器組件。 在此,快取區服務器,係被用來管理一個實體分配快 取區之某一片段。就一個範例而言,每個快取區組件,係 為管理一個並列式核心--一個與該快取區服務器相聯結之 核心,以利其管理該快取區被分配之片段。與一個環形互 聯體上面之快取區服務器處理資料流及與快取區片段之介 面甚為類似,彼等核心服務器/組件,係為處理資料流及 與快取區片段形成界接。另外,該環形互聯體可能會耗合 至記憶體控制器介面邏輯(MClLH〇/或其他控制器,使虚 其他模組、此種記憶體、和/或—個圖形處理器相界接。 參照第2圖,所例示係一個用以在兩個核心中分配程式 馬之私式碼分配模組的實施例。在—個實施例中,一此核 :Γ,係屬非對稱式核心。舉例而言,該核心_ 核 個適於不依原始程式順序來執行程式碼之 心,以及該核心搬係一個適 ) 之順序式(或序列)核心。—個非· 斤來執订程式碼 心類^β . μ _盡舉之範例性表列的其他核 。頰型包括.一個内置式核心、 軟體管理式核心、-個内置式:^内置式核心、一個
枋、 飞1SA核心、—個經轉嗶之ISA ^心、一個協同設計式核心、— ° 個推測性執行核心、和一 17 201209572 個非推測性執行核心。 在:個實施例中,該程式碼分配模組210,係基於最大 矛電力節省,而在該等核心2〇1與2〇2之間分配程 A ^ _如本說明書所使用之模組,可能係指稱硬體、 軟體㈣、或彼等之組合。另外,-個模組、單元、或 輯可月t*係使集中在一個核心或處理器中,加上使分配 处舉例而5,该程式碼分配模組210,可能包括分配一 個與核〜201、核心2〇2、處理器細、或—個内含該處理器 2〇〇之系統相關聯的儲存器内所保存之程式碼 ,諸如微碼或 軟體在此,分g⑶式碼在執行時,係為執行該程式碼之 刀配。相形之下’帅式媽分配程序,可能係由硬體、軟 體、勒體、或彼等之組合,來加以管理。 在個實施例中’該程式碼分配模組210,係為辨識程 式碼的一個活躍區段°程式碼會在下文參照第4圖有更詳細 之冴’。然而’就此節討論有關之例示性範例而言程式 碼可A包括任何要以—個處理元件來執行之程式碼,諸如 -it#碼4機|§碼。程式碼的__個活躍部分,可能係指稱 某-部份之程式碼’其基於考量,諸如電力、效能、熱量、 其他S見之處理n度量、或彼等之組合,在—個核心上面 執行’比起在另-個核心上面會更適合。在此,假定該核 心201係—個可内置執行該程式碼之内定核心,則該程式碼 的個活躍區段之辨識,包括決定某一部份更適合在該核 〜202上面執行之程式碼。在核心為一個〇〇〇核心,以 及核〜202為-個順序式核心之實施例中,—個程式碼活躍 18 201209572 部分’則可能係指稱程式碼的—個活躍點,其較適合在一 個潛在可能具有較多可用資源使執行—個高度再發舰段 之序列核心2G2上面執行。就—個範例而言,—個程式碼活 躍部分,係由該程式碼部分的—個再發性樣式,或某些其 他習見之度量,諸如指令計數或循環計數,來加以辨識。 經* 個具有高再發‘隨式之程式碼區段,可能會最佳 化’使在-個顺序式核心上面更有效率地被執行4本上, 在此範例中,非活躍程式碼(低再發性),係分配給内置式 OOO核心ΗΠ ’而活躍程式碼(高再發性),係分配給受軟體 管理之順序式核心1〇2。 -個程式碼活躍部分,可能會靜態地、動態地、或以 彼等之組合加以辨識。在第—情形巾,—個編譯器或使用 者,可能會決定某一程式碼區段為活躍程式碼。在此,一 個活躍程式碼識別碼指令,可能會劃分—個程式碼區段為 活躍性的,亦即,要在核心202上面執行,而非在核心1〇1 上面。該核心201内之解碼邏輯,在一個實施例中,適於解 碼一個來自該程式碼之活躍程式碼識別碼指令,其係為辨 識該程式碼之活躍部分。此種指令之接取或解碼,可能會 觸發该核心202上面之程式碼的活躍區段之轉譯和/或執 行。在此範例中,該程式碼分配模組21〇,包括該解碼邏輯, 而使彳貞測δ亥活躍程式碼彳貞測指令。而且,該模組2 1 〇亦可能 包括其他硬體和/或軟體,使貫徹該轉譯/最佳化,加上 S亥核心202上面之活躍程式碼的執行。或者,該活躍程式碼 區段’可能會預先加以最佳化/轉譯,以便在該核心2〇2上 19 201209572 面執行。 在另一個範例中, 執行期門)辨η轻々 式碼为配模組210’可動態地(在 轨仃期間)辨識程式碑 中,該等如加和“域。在-個實施例 用來繪出-個類似核:心2°2中所包含之硬體,刪 〆l 201之核心上面的程式 分佈圖。基於該分佈_之特徵 /式馬之執灯的 聯之效能-該程式瑪@ D 執行相關 碼。類似料Μ被觸為活躍程式 (.%209 - „ . 皿控程式碼可能會在一個類似核 ^ &行,使執行正在類似核心、2()1之另一個 ,心上面執行的程式竭之監控/繪製分佈圖。值得注意的 疋’此種&控程式碼’可能是保存在該等核心、處理器200 内之儲存結構中的程式碼,或者是保存在—_含處理器 2〇〇之系統中的程式碼。舉例而言,該監控程式碼可能是 保存在核心2(Η、核心202、或處理器之儲存結構中的微 碼、或其他程式碼。而且,該監控程式碼,可能係由傳統 式執行單元,加上處理器200上面之其他韌體或邏輯,來加 以執行。 就又一個範例而言,一個活躍程式碼之靜態辨識,係 作為一個線索。但該程式碼執行之動態繪製分佈圖,能夠 忽略程式碼之某一區域為活躍性的靜態識別;此類型之靜 態辨識,係經常被稱為一個編譯器或使用者線索,而可能 供動態地繪製分佈圖,考慮來決定何者核心適合做程式碼 分配。此外,如同動態地繪製分佈圖之性質,辨識程式碼 的一個區域為活躍性的,並非限制該程式碼區段,總是被 20 201209572 辨識為活躍性的。舉_言, 核心加上面執行。監控在該核—個乱序式 命仿、、上面之執行’係監控 “核〜201執行該程式碼的一個 現體,婪#扮 之效粑位準。基於該實 在核心2〇IT、2G1上面之效能,被衫為充份低於其或將 ^ 畔彳了者,以及/或相UG1上面之程式 于2的再發性樣式,係高至足以被預測會隱藏核心轉變 則置處理;則該程式碼區段,便會被辨識為活躍性的。在 轉澤和/或最佳化之後,—個經轉譯之版本的程式碼區 段,便會在該核心2〇2上面執行。與該核心2(Η上面之執行 的監控相類似,上述經轉.譯之版本的程式碼之執行,可能 會在雜〜202上面被健,諸如透職效能監控程式碼之 執行。若該效能在核心2G2上面,係較在核心2Gi上面為低, 則該程式碼區段之辨識為活躍性的,便可能會動態地被逆 轉(活躍%式碼區段’可能會被重新標記為非活躍程式碼)。 一有個耘式碼之區段、位點、或區域,被辨識為 活躍性的,該程式碼分配模組21〇,在一個實施例中,便會 最佳化及/或轉譯該程式碼之活躍區段,使取得經最佳化 /轉譯之活躍程式碼。在一個實施例中,該轉譯和/或最 佳化之程式碼’諸如二進制轉譯程式碼,係保存在該核心 202之儲存邏輯中。就一個範例而言,該二進制轉譯程式 碼,可能係為該核心202中所保存之微碼的一部分。該轉譯 /最佳化之程式碼’在被執行時,可使該程式碼區段被轉 譯/最佳化,以利在該核心2〇2上面執行。在一個實施例 中’該等核心201、202,可能會識別該同一ISA、或彼等的 21 201209572 一個子集,在此,該轉譯/最佳化,僅僅係轉譯〆最佳化 程式碼,使在該核心202上面執行會更有效率。在另一個實 施例中’該等核心201、202,可識別不同之ISA,在此,該 轉譯包括將該程式碼區域’自該核心201可識別的一個 IS A,轉譯成該核心202可識別的另一個IS A。雖然該轉譯/ 最佳化,係參照轉譯/最佳化程式碼之執行,來加以討論, 任何轉譯/最佳化程式碼有關之習見機構,縱使是獨佔性 硬體’係可能加以利用。 在-個實施例中,在遭遇以該核心2〇1辨識出之活躍程 式碼區段時,該活躍程式碼(其經轉譯之版本)會在該核心 202上面執行。任何決定何時遭遇—個活躍程式碼區域之習 ㈣器’係可能加以利用。少數高階之範例包括:遭遇 參照—個與該程式碼區域相_之指令位址;接取/解 亍一個用以識別—個程式 撕排定/執行-個用以指示-個經 =之=活躍蝴之指令,為要在另-個核心上面 執仃,業已遭遇一個來自用扣_ 監控器的外部觸發信號;料…自活躍程式碼區域之 就一個例示性範例而言, -個在硬體、軟體、或彼等之^式碼分配模組210,包括 當該監控器模組,辨識到二中實現之監控器元件。 該活躍區域轉譯成-個經轉譯===躍區域’或者將 此種暫存可能包括使該指令二 、"亥程式碼經轉譯之區域 22 201209572 的一個位置相聯結。接著,當有一個指令 器),隨後參照該指令位㈣,㈣暫存之指令:歧可決 定出,已遭遇該程式碼的一個活躍區域。值得注竟的是, 在此係可能使祕何形式之制,諸如同步或非同步中斷 類型之處理該遭遇事件。另外,硬體、微竭、和/或勃體, 可能會有能力直接處理-個活躍程式碼區段之遭遇,而無 中斷式之處理,亦即,該觸發事件並不會 服務。值得注意的是,該等核心一,== -定之硬體結構’諸如-個映射結構,使_—些暫存為 活躍程式碼之位址。 響應在該核心2〇1上面遭遇一個活躍程式碼區段,會有 -個經轉譯及/或最佳化之版本的活職⑭隨,在該 核心202上面執行^不管該活躍程式碼區段,在該核心2〇ι 上面如何被辨識及遭遇’任何能夠在另—個核心上面執行 程式碼之習m係可能加以利用。在—個實施例中, -個合作模組,會被利用來促成此種執行。舉例而古,該 等核心洲、202,可能會共享某4之硬體結構,以及/ 或者包括祕it道而共享資訊。就—贿例㈣該等核 心1〇1、1G2,可能會共享—個資料快取區,以致在執行自 核心2_至核心202時’該資料實體上並不會被移動, 而是早已存在於該共享之快取區中。同理,—個暫存器擋 案,諸如-個影子暫存器棺案,在—個實施例中,會丘享 於核心2CH與202之間,以致暫存器狀態(脈絡),並無必要自 -個核心遷移至另一個核心。就一個他型體而言,取而代 23 201209572 之共享-個暫存器檔案…個高速互聯體可㈣來實際遷 移脈絡或其_部分,使自_個核心至另—個核心、。另外, 在不常有之_下,軟體可能會_料執行此種轉移。 _就一個範例而言,一些進入一個活躍程式碼區段内之 輸入值,會自該核心201轉移至該核心2〇2,使支援該活躍 程式竭區段在難,。2〇2上面之執行。在執行之後,彼等輸 出值接著會轉移回至該核心20卜在一個實施例中,唯有來 自程式碼區段而經辨識之輸入/輸出值會被轉移,亦即, 一個局部的脈絡交換。值縣意的是,料輸人值可能會 被《玄使用者(軟體/編s睪器)以及/或者被硬體/勃體運算 法辨識。在此,直接存取硬體可能會被調適,使讀取來自 該核心201之暫存器、緩衝器、或其他結構的輸人值,以及 將彼等寫入至該核心2〇2。反之’相同或不同之硬體,可能 會被利用來讀取來自該核心2〇2之值,以及將彼等寫入至該 核〜201 〇然而,在辨識此等值變得過於繁複的情況下整 個脈絡交換、複製、或共享,可能會被執行,使在該等核 心201與202之間提供值。 其次參照第3圖,所描述係一個處理器的實施例,使在 核〜間分配程式碼,而達成最大之效能和電力節省。誠如 上文所述,一個處理器3〇〇,包括兩個處理器核心;彼等各 屬個不同之核心類型。就一個範例而言,一個核心3〇1係 一個内置亂序式(〇〇〇)處理器核心,而一個核心3〇2係一個 軟體管理順序式處理器核心。該等核心% 1和3Q2,可能會 但非必要辨識不同之ISA類型。事實上’該核心3〇2可能識 24 201209572 別該核心301之ISA的一個子集。或者該核心302可能會包括 一個局部地與該核心3〇1之18八相重疊的單獨之ISA。誠如上 文所說明,一個核心或處理器,經常係藉由該核心或處理 器中之解碼硬體/軟體,使與一個ISA相聯結—經識別之指 令的定義。 在一個實施例中,該監控器模組305,係為監控内置式 程式碼325在内置式〇〇〇核心3〇1上面之執行;透過此監 控,該模組305係為辨識該程式碼325之活躍區段/區域 327。該監控器模組,可能係由硬體、軟體、或彼等之組合 所構成。在一個實施例中,該監控器模組3〇5,包括可監控 執行之硬體。就一個範例而言,該硬體包括微架構和/或 架構性鉤件(hook),諸如用以測量退出推出(push〇m)之退出 推出標籤/計數器、用以計數指令之數量的指令計數器、 用以測里整體執行長度和/或時間之整職行執行測量邏 輯、用以計數—個程式碼區段被執行之次數的再發性計數 Γ等等使決定該程式碼325之執行期間的效能/電力度 θ。此類型之硬體,可能係位於_個積體電路/處理器之 可、Ρ刀内,諸如在亂序式核心301内,在順序式核心刈之 内’以及在不包含在000處理器核心3〇1或順序式處理器核 %302内<積體電路的非相聯結之部分。 心=1實_巾,該難11馳3G5包括軟體,諸如 _ ""式碼,其在被執行時,係為監控程式碼325之執 :二:識程式碼325的一個活躍區域327。就-個例 阳舌,該處理器300包括儲存結構,諸如唯讀記憶 25 201209572 離〇M)結構、可裡式 碼、或機器碼,彼等在·㊃,使保存程式媽、微 而,可促使該監控發生。然 3〇2相聯結1機器^ ’可能使儲存在任何與該等核心3〇卜 行』之使i,並絲f取式媒體中。值得注意的是,術語『執 而s 、 $限於藉由—些傳統執行單元之執行, 舍私, 此该經執行之程式碼,可能 2㈣硬體可測量之再發性、電力、和效能度量的相同 碼,可追縱 就一個範例而言,該監控硬體和/或程式 /決定該程式碼之碼區段錢的再糾 ㈣料發性樣式。就-個單純 。d Π個資料結構,與_個程式碼區段(程式碼 區域327)之參昭值相碑έ士 值相聯|〇,诸如一個指令位址,而具有該 =令㈣/程式碼區段已在核心3G1上面執行過之次數的〆 ▲個找。值得注意的是,該計數可能側聯-個絕對性 計數(總計數)或暫時性計數(某段時間中之計數)。 在個實知例中’該監控器模組305適於辨識/谓測咳 程式碼325之活躍部分327。該監控模組奶,在—個^ 中’係為剛量該程式碼325之活躍部分327在該〇〇〇處理器 核心301上面的執行期間有關的一個或多個效能度量。而 且,該模組305係為響應該〇〇〇處王里器核心上面之效能度量 的低於一個臨界值,而辨識該程式碼325之活躍部分Μ?。 —個非盡舉之例示性表列的效能度量之範例包括:指令退 出推出、指令執行數、執行一個程式碼區域之時間量、遭 26 201209572 遇/執行一個程式碼區域之次數、一個程式碼區域執行期 間所消耗之電量、一個程式碼區域執行期間之不同電力狀 態中所耗費的時間量、一個程式碼區域執行期間之熱密 度、等等。 使用以上諸範例中的一個,假定該〇〇〇核心3(H,正在 執行該裎式碼325。而且,該監控器程式碼正在執行,而決 定該程式碼325的一些區域在該核心301上面執行之次數。 當計數符合或超過某一臨界值時,在一個實施例中,該監 控器模組305會辨識/決定出,該區域327為活躍程式碼。 若所使用為三之臨界值’則當正在該核心3〇2上面執行之監 控器程式碼’偵測到該活躍區域327在該核心301上面第三 次再被執行,該區域327便會被辨識為一個活躍程式碼區 域。上述決定一個再發性樣式之特定範例,可能使推断而 見到,一個類似之程序—計數、相對於一個臨界值進行比 較、以及辨識—可能會就任何測得之效能度量而加以採用。 此外,決定一個效能度量,並非受限於單純之計數,而是 可旎包括任何用以決定—個核心、處理器、或電腦系統内 之實行或電力節省效能的習見演算法。 然而,辨識該程式碼325内之活躍區域327,並非受限 於動態效能監控。取而代之的是,編譯器或靜態程式分析, 可能會破利用來決些很可能更適合在該順序式核心 302上面執行的程式碼區段。舉例而言,假定程式分析透露 出’該活躍區域327,很可能會多次再被執行。響應此項發 現’ -個編譯器或制者,可能會插入 一些用以辨識一個 27 201209572 程式碼區段為活躍料碼之指令或财。糾,#該核心 301之解碼g ’遭遇此等指令時,彼等會識別該區域327為 要找核心3〇2上面執行之活躍程式碼。值得注意的是,在 二實知例中’彼等使用者可能會基於彼等對—個程式之 而不用人之彳 1式分析,來辨識此等程式碼區域。 、在—個實補中,響應辨識該區域327為活躍性,該程 式馬327會以3亥最佳化/轉譯元件训加以最佳化或轉 睪而知到最佳化之活躍程式碼3()4。與該監控器模組奶 卞相類似。亥最佳化元件31〇,可能會在硬體、軟體、 勃體、或彼等之組合中加以實現。舉例而言,彼等轉譯和 /或最佳化程式碼,可能係儲存在—些與該等核心撕、核 ; 或處理器_相聯結之結構中。為例示計,二進制轉 料式碼係儲存在與該核心3〇2相聯結之動體中。而且, s進制轉#程式碼會被執行,*將該活躍區域327,自該 ' 1有關之内置式格式,轉譯成魏心'3财關之格式。 值得注意的是,轉譯可能係在似或其他格式之間,而最佳 化可能會包括任何純行而使程式碼最佳化之 習見方法,諸 、-使程式碼自在〇〇〇核心則上面之並列執行最佳化 成在h u3G2上面之序職行及反之亦然的習見技術。 」而在1¾體巾使用二進制轉譯程式碼,係純屬例示 因為任何轉澤程式碼或最佳化程式碼,可能會保存在 一個電«統中之任何處,諸如該核心如内之微碼或一 個系統記憶内之正規程式碼。而且,該最佳化程式碼,可 '任何方式來執行,使轉譯或最佳化該活躍區域327, 28 201209572 事貫上,任何用以就一個 見方法或設備,諸如當前 澤程式碼之方法和設備, 而得到最佳化之活躍程式碼3 〇 4。 核心而轉譯或最佳化程式碼之習 軟體管理式處理器中習見用以轉 係可能加以使用。 無_、韌體、硬體、或 用,轉譯可能會以靜態或動態方气來/…否要被使 〜万式來加以執行。事實上, 與監控之完成在運行期間可能屬動態的或在執行之前可能 屬靜態的甚為相似,轉譯和最佳執订之叫了月匕 料化可能係以類似方式加入 執订。在-個編譯器或使用者辨識該活躍區域327之範例 中’该最佳化和轉譯,可能會在該點處發生(在執行之前)。 在此,一贿躍程式碼標識符指令,可能會被湘來既辨 制活躍程式砸域327亦㈣轉碼A佳化之程式碼3〇4 的位置’而’無論該區段327被辨識在執行之前或其間是 否為活躍程式碼,該最佳化和轉譯,在某些實施例中,會 動態地發生(在運行期間)。 在一個實施例中,該活躍區域3 2 7,係與其他執行並列 地加以轉譯/最佳化。在一個範例中,該核心3〇2開始會與 該核心301之執行區域327,並列地執行最佳化程式碼。在 此’该監控器模纟且3〇5,會彳貞測在該核心3〇1上面之活躍程 式碼區域327的執行,故最佳化係在該核心302上面開始。 正當來自該活躍區域327之進一步指令,仍正在該核心301 上面執行之際,該核心302會開始最佳化。結果,該核心302 本質上係與該核心3〇丨上面之活躍程式碼327的執行並列地 最佳化該活躍程式碼327。在另一個範例中,該核心301係 29 201209572 與該核心302之最佳化活躍程式碼327並列地,執行程式碼 325之其他區段或其他互斥性程式碼。在另一個實施例中, 該活躍區域327之最佳化,係序列地被完成。舉例而言,該 核心301會執行該活躍區域327,以及接著該等核心3〇1或 302,隨繼會最佳化該活躍程式碼區域327。 在一個實施例中,該程式碼3 2 7係儲存在其原始記憶體 位置處,以及會在作業中被該核心302轉譯。然而,在大部 伤之情況中,在執行之前轉譯/最佳化整個程式碼區段, 會疋較有效率的《結果,在該最佳化/轉譯元件31 〇就一個 類似核心302之核心而最佳化程式碼之後,該最佳化之活躍 程式碼304,係儲存在其他處。另一個有關最佳化之活躍程 式碼304的位置,可能係記憶體内的另一個位置,諸如本地 系統δ己憶體位置。然而,由於該活躍程式碼327 ,經常係與 經常之執行相關聯,使最佳化之版本3〇4保持較接近核心 302,係潛在可能屬有利的。所以,在此例示之實施例中, 3玄核心303包括一個用以保存該最佳化之活躍程式碼3〇4的 程式碼快取區3〇2。值得注意的是,該程式碼快取區3〇3可 忐會是:該核心302的一個分開之快取區結構;一個共用之 快取區結構,諸如該核心302中的一個共用之指令或資料快 取區;或者其他與核心302相聯結之通用儲存結構。 口頭參照該監控器模組305之討論,一個遭遇該活躍程 式碼區域327之實施例,包括一個可參照一個與一個程式碼 區段相聯結之指令位址的程式計數器。誠如所描述,一個 映射模組315’係為保存與一個最佳化之活躍程式碼參照值 30 201209572 317相聯結的程式碼區域參照值,諸如該等指令位址。本質 上,該映射模組315的一個登錄項,可使該活躍程式碼區域 327 ’與其最佳化之版本(最佳化之活躍程式碼3〇4)相聯結。 就一個例示性範例而言,一個參照值316,包括一個與該活 躍區域327相聯結之位址,諸如該指令位址。在此情景中, 當該核心301遭遇(一個程式計數器指向)該映射模組315在 攔位316中所保存之指令位址時,則該監控模組3〇5會指 出,該活躍區域327已被遭遇到,以及要在該核心3〇2上面 執行。一個在上文扼要說明而會在下文更詳細加以討論之 合作模組320 ’接著會促使資料和/或脈絡,移動至該核心 302以供執行。 決定該活躍區域327已被遭遇到及要在該核心3〇2上面 執行,在以上之範例中,係僅針對該參照值316。該等榔位 317與欄位316之聯結’可能接著會被利用來迅速決定該區 域327之最佳化的活躍程式碼版本304究位於何處。結果, 該欄位317可能會包括該最佳化之活躍程式碼304的位置之 任何參照值。此種參照值之少數簡單範例包括:該程式碼 快取區303中保存最佳化之程式碼3〇4的登錄項之位址、自 該程式碼快取區303之起點至保存最佳化之活躍程式碼的 登錄項304之差距值、和一個與該登錄項304相聯結之實體 的或線性位址。該映射模組315,係例示在一個簡單之列表 結構中,其可能係在硬體、軟體、韌體、或彼等之組合中, 加以實現及/或維護。然而,任何使一個位置與另一個位 置相聯結之習見方法,可能會被利用而使該活躍程式碼327 31 201209572 與一個最佳化之版本相聯結β 雖然未明確例示出,該監控器模組3G5與該映射模組 315相結合之部分’可能會形成-侧發器独,使指示該 最佳化之活躍程式碼3〇4,為要在該核心搬上面執行,而 非該核心301上面之内置式程式碼327。就一個範例而言, 當該核心301有關的一個程式計數器,移至次一指令位址 時’該觸發器硬體,會檢查相對於該映射硬體列表315中所 儲存之參照值的位.在此,假定該程式計數器,指出上 述參照該欄位316中所保存之程式喝區域327的指令位址。 接著,該觸發器硬體,會基於該映射表315中之登錄項指 示有-個有_程式碼賊32之最佳化的减碼區域3〇4 存在。結果,程式碼區域327在核心3〇1上面之執行,係可 能被取消,因為有一個最佳化之版本早已存在,以及要在 該核心302上面執行。 在-個實施例中,該核心3〇1會終止執行(停止或轉變 成低電力狀態),直至該核心3G2完成該最佳化之程式碼的 執行為止。然而,此可能會無法充分利用到該處理器3〇〇之 處理能力。所以’在另-個實施例中,正當該最佳化之活 躍程式碼304,正在該核心3〇2上面執行之際,該核心3〇1會 交叉執行另一個軟體線程(程式碼325以外之程式碼)。就再 有的-個範例而言,該核心3G1可能會以推測方式,執行該 程式碼325之其他部分,其本質上係進行執行之超前 (nm-ahead)助手線程,或者係執行該程式碼325之其他不依 程式碼區域327的亂序式部分。 32 201209572 該合作模組320,在一個實施例中,可在核心3〇1、3〇2 之間,提供合作之功能性。就此最簡單之範例而言,該合 作模組320,包括一個可在該等核心3〇卜3〇2間轉移資訊之 互聯體。然而,在另一個實施例中,該合作模組包括其他 硬體,其可能係專屬個別之核心,或是在其間共用,使促 成前述之合作。舉例而言,該核心3〇2可能共用該核心3〇1 的一個影子暫存器檔案,以致當該最佳化之活躍程式碼 3〇4,在該核心302上面執行時,—個暫存器狀態自核心 至核心302之全脈絡交換,並非勢必要被執行不可。取而代 之的是,該核心302在該情景中,能夠直接存取該影子暫存 器檔案。然而,s亥合作模組並非僅受限於一些共用之結構 和/或互聯體。事實上,該合作模組32〇,可能包括硬體、 韌體、軟體、或彼等之組合,使提供對暫存器、儲存結構、 和兩者核心301、302内之緩衝器的直接讀取和/或寫入存 取。結果,該合作模組320,在一個實施例中,能夠將該最 佳化之活躍程式碼執行所需的資料^/暫存器值,自該核心 3〇1轉移至該核心302。而且,其亦能夠將結果自該核心3〇2 轉移回該核心301,使在該核心3〇1上面,能夠進行後繼之 適當執行。 雖然該監控器模組305,起初已參照監控該内置式核心 301上面之執行加以討論,該監控模組3〇5,在一個實施例 中’亦係要監控最佳化之程式碼在該核心3〇2上面的執行。 結果,該監控器模組305,能夠使該核心3〇1上面之程式碼 區段327的效能,與該核心3〇2上面之最佳化版本3〇4的效能 33 201209572 相比較。此外,當該核心302上面之效能低於該核心3〇1上 面之效能時,或者比起耗電量之增加,其效能增益在該核 心302上面係較小,則辨識該區域327為活躍程式碼之決 定,係可能使逆轉。就一個範例而言,該映射模組315指示 此種决疋之登錄項,會重新被指派或使無效;以致該核心 301在下次遭遇該活躍程式碼327時,該監控器模組3〇5,便 不會偵測该參照值316,以及不會指示該區域327的一個最 佳化之活躍程式碼版本應在該核心302上面執行。本質上, 該先前辨識出之區域327,會反向遷移回至該亂序式核心 3(Π。 就一個進一步示範此效能比較之特定例示性範例而 言,假定該程式碼區域327,基於—個高再發性樣式,和一 個高指令執行計數,被辨識為活躍程式碼。結果,該程式 碼327會被該核心3〇2上面所存在之二進制轉譯程式碼最佳 化’使得到最佳化之程式碼3〇4。當該最佳化之程式碼3〇4, 係存在於該程式碼快取區303中時,該映射表315中的一個 登錄項會被建立,而使該程式碼區域327,與最佳化之版本 304相聯心當該核心3()1在下次遭遇一個與該欄位316中之 參照值相匹配的參照值時,則該最佳化之程式碼3〇4的執 行,便會在該核心302上面被觸發,而非在該核心3〇1上面, 執行該程式碼區域327。值得注意的是,該合作模組,透過 轉移、共用、或脈絡交換,可將來自該核心3〇1之適當值, 提供給該核心302 ^在該核心302執行該最佳化之活躍程式 碼304期間,該同-效能度量_·指令執行計數·會被該監控 34 201209572 器模組3G5追蹤。若該指令執行計數,係切贿式碼區域 327在核心301上面之執行,則上述被辨識為活躍程式碼之 區域327的現狀,在未來將會繼續。然而,若該指八執行呀 數,在該核心302上面係較大,或者有—個顯著之電力增量 被偵測到,則該區域327為活躍程式碼之辨識,使可能如上 文所描述地加以逆轉。 除在該等核心301和302之間提供通訊以外,該合作模 組320,可能亦包括其他可管理不同類型之多重核心的特 徵。就-個第-範例而言,-個電力管理器可體現一個電 力演算法,使確保該等核心301和302 ’在該同—時間下, 不會在最大之電力下運作。然而’此範例係純屬例示性。 而且,其他之電力演算法,係可能容許此種最大運作。就 另-個電力考量而言’該核心3G2在監控該核心3gi上面之 執行期間,可能會存在於某-低於最大之電力狀態(某一低 電力狀態)中。舉例而言,當該核心3〇1係與一些可執行其 自身之監控機構時’則該核心302並不需要供全電力,直至 有一個程式碼之最佳化版本要被執行為止。結果,藉由關 掉核心3G2直至執行有需要時為止,係有潛在可能使電力節 省。反之,正當該核心3〇2在執行該最佳化的活躍程式碼之 際,該核心301可能會使減能(進入某一超過最大之電力狀 態,諸如一種ACPI低電力狀態)。 回至第4圖,所例示係一種有關在一個亂序式核心與一 個順序式核心、間分配程式碼使達成最大之效能和電力節省 之方法的流程圖之實施例。雖然第4圖之流程,係例示在一 35 201209572 種貫質上之序列形式中,該流程圖之執行可能會在某一 不同之順序中,加上會在並列中。舉例而言,流程和415 可能係在該㈣在絲巾在-個亂序式心上面執行 之刚在程式編譯期間被執行。此外,每個流程可能係利用 硬體、㉜體、或透過程式碼之執行,來加以執行。 在流程4G5中,程式碼在_個處理器之亂序式(〇〇⑺處 =核心上面之執行會被監控。參照程式碼,在一個實施 二古係指稱⑴執行一個編譯器程式,或以動態方式或以 =方式,使編譯其他之程式碼;(2)執行主程式諸如一 乍業系統、“㈣程式、應驗式碼、或其他軟體程 ^⑺執行其他之程式碼’諸如與魅程式碼相聯結之程 式庫,(4)執行其他之程式碼,諸如助手線程或其他任務, 其可能不會直接與社程式相或⑺彼等之组合。 一個編譯驗常包括m或程絲,而將原始本 文/程式碼,轉譯成目標本文/程式碼。通常,以-個編 澤益編軸式,應_式碼,係在將高階程式語言碼轉變 成低階機器碼或組合語言碼之多重階段和回合中加以完 成。然而,單-回合編料,可能仍會就簡單之編譯加以利 用一個編譯器可能會利用任何習見之編譯技術,以及執行 任何習見之編譯器運作,諸如字彙分析、預處理、剖析、語 意分析、程式碼產生、程式碼變換、和程式碼最佳化。 :-些較大之編譯器,經t包括多重階段,但此等階段 最常見係包含在兩個一般性階段中:⑴—個前端段,亦即, 通㊉在此可⑥會有句法處理、語意處理、和某些變換/最 36 201209572 變換、屏’和(2卜個後端段,亦即,通常在此會有分析、 個中^佳化、和程式碼產生發生。某些編譯11係指稱一 之#儉=段’聽㈣在—個編譯11之前端段與後端段間 ^复、_。結果’對插入'聯結、產生、或一個編譯 發㈣參照’可能會在任何前叙时或回合中 發生。°上在—個編譯器之任何其他習見之階段或回合中 ’監控料碼之執行,包括追縱該程 式馬内之碼段/區域的執行之次數。 =何分組指令,程式碼之習見方式來加=域二 I:::,每次有一個與某—程式段相關聯之指令 位址被4 0 〇 Q核d _式計 計數便會遞增。若姉式齋,,、、時—個再發性 臨界值/ ㈣H±計數,超過一個 U值在-個實施例中,該程式碼區段 中,被辨識為活躍程式碼。 《在机程410 或連同決定再發性樣式或分開地, 行,可能會包括決定/追縱-個 A馬之執 能度量。誠如上文所揭示,一此範=碼區段相^ 令退出推出、綱執行之指崎量包括:指 時間量、-個程式碼區域被遭遇/執:之式碼區域之 程式碼區域期間所消耗之電量、〜- 執行個 耗費在不同電力狀態中之時間量_個程式碼區域期間 間之熱密度。然、而,任何與處理$ "自&式碼區域期 或度量之組合,係可能在該程式相聯結之習見度量, 式螞執行期間加以監控。 37 201209572 在流程410中,該程式碼之活躍區段係基於再發性樣 式、效此度量、或彼等之組合,來加以辨識。與上述範例 相類似’在-㈣發輯數與—㈣界值相比較之情況 中,效能度量可能亦會與-個臨界值相比較。舉例而言,, -個監控料能會計數超過-個推出次數臨界值之退出推 出數。而且’若該等推出超過—個計數臨界值,則該程式 碼區段,便會制識為-個活躍程式碼區段。_此範例 僅揭示一個考量之單—效能度量,辨識程式碼之活躍程式 碼區段,可能縣於效能度量和/或再發性樣式之任何紐 合。舉例而言,-個演算法可能係被策劃來評估多數之效 能度量、電力考量、和一個再發性樣式,使辨識—個程式 碼區段為活__。正如該演算法切會是實現體專屬 性’以及置換之數目或將會是範圍廣的…個組合式演算 法之細節,並未詳加討論’以縣不必要地使朗内容混 淆。誠如上文所述,辨識程式碼區段為活躍程式碼,可能 會在該程式碼之執行前加以完成,諸如在練式碼之編譯 期間,藉由-個編譯器’或者在運行時間下藉由一個運 行時間編譯器、硬體、勒體、其他之軟體、或彼等之組合。 響應辨識該活躍程式碼區域,該程式碼之活躍區段, 係就-個㈣設計核理器心上面之執行加以最佳化, 使在流程415中’得到該程式竭之最佳化的活躍區段。在一 個實施例中’此種最佳化包括,使該程式碼之活躍區段, 自可被—個與魏序式處理器心㈣結之解碼邏輯識別 的内置式指令,轉譯成可被-個與該協同設計式核心相聯 38 201209572 結之解碼邏輯識別的協同設計式指令。然而,轉譯並非必 要。事實上,在一些實施例中,該協同設計式核心,可能 係一個能夠執行與該亂序式核心相同之〗SA或其子集的序 列式核心。在此情景中,該程式碼可能不會使自一個ISA轉 譯成另一個ISA,而是使自一個有關亂序式執行之格式,轉 譯/最佳化成一個有關序列式執行之格式。任何轉譯和/ 或最佳化程式碼之習見方法,諸如—些習見之分析、轉譯、 變換、和/或最佳化程式碼的編譯器方法,可能會被利用。 就一個特定之例示性範例而言,二進制轉譯程式碼,可能 係存在於該協同設計式核心上面,而使該程式碼,轉譯/ 最佳化成該程式碼之最佳化活躍區段。 該程式碼之最佳化活躍區段,會在流程42〇中分配給該 協同設計式處理器核心。在-個實施例中,該分配包括將 該程式碼之最佳化活躍區段,寫入至__個與該協同設計式 核心相聯結之程式碼快取區。然而,該分配可能會自任何 之儲存結構以及隨時而加以完成。舉例而言,該最佳化之 活躍區段,可能係使儲麵某―系統記龍内以及使在 執行之則,立刻分配給該協同設計式核心。 在流程425巾’該程式碼被辨識之活躍區段,係與該程 式碼之最佳化活躍區段相關聯。舉例而言,—個對該程式 碼之活躍區段的參難,和—個對該最佳化之活輕獅 參照值,顧存在-個程式碼映㈣表的―個登錄項中。 繼續該程式碼快取區_,上述對該最佳化之活躍區段的 參照值’包括任何對該程式碼快取區内之最佳化活躍程式 39 201209572 碼的位置之參照值’諸如一個位址或差距。然而,任何習 見之資料結構和/或方法,可能會被利用,而使該活躍程 式碼區段與其最佳化之版本的位置相聯結。 接著,當該等程式碼區段,係在該亂序式核心上面執 行期間遭遇到時,該程式碼之最佳化活躍區段,便會在流 程430中,以該協同設計式處理器核心,來加以執行,而非 該亂序式核心。誠如上文所陳述,該程式碼之最佳化活躍 區段的執行,基於該設計實現體,可_與其他程式碼在 該亂序式核心上面之執行並列地發生,或者與其他程式碼 在該亂序式核心上面之執行序列地發生。然而,在該並列 式實現體巾,該亂序式核心、,可能有能力執行其他來自與 該最佳化活躍程式碼之同一線程的程式碼,加上來自其他 線程交替處理之程式碼。 在流程435中,在該協同設計式處理器核心上面之最 化活躍區段的執行,係在—個與該時式處理器核心上 之執行的流程405中所執行之監控相類似的方式中加以 工舉例而a,流程405中所監控之同一效能度量,亦可 會在以該順序式協同設計式處理器核心來執行該程式碼: 最佳化活躍區段期間受到監控。而且,其可能指示出的是 該程式碼之活躍區段,係響應該等指示在該順序式核心 面比起在轉面效能較低之效織量, 薦L序式核心來# # μ ^ . f執仃,而彳Μ_序式如,執行該程式 之最佳化活躍區段。 心和一個 第5圖,所描述係另一個在一個亂序式核 40 201209572 順序式核心中分配程式碼使達成最大之效能和電力節省的 方法有關之流程圖的實施例。在流程505中,響應辨識一個 包括就一個第一處理器核心加以最佳化之第一程式碼類型 的程式碼區域為活躍程式碼’該程式瑪區域’會與一個轉 譯之活躍區域相聯結,後者包括自該第一程式碼類型轉譯 成一個要就一個第二處理器核心加以最佳化之第二類型的 程式碼區域。 在一個實施例中,該第一處理器核心,包括一個亂序 式處理器核心,該第一程式碼類型,包括一個就該亂序式 處理器核心加以最佳化之亂序式程式碼類型,該第二處理 器核心,包括一個順序式處理器核心,以及該第二程式碼 類型,包括一個就該順序式處理器核心加以最佳化之順序 式程式碼類型。就一個範例而言,該亂序式處理器核心, 係與一個可識別一個第一指令集架構(ISA)之解碼邏輯相 聯結,以及該順序式處理器核心,係與一個可識別一個第 二ISA之解碼邏輯相聯結。在此,該第二程式碼類型,係進 一步就該第二ISA加以最佳化。 在一個實施例中,上述與第一處理器核心相聯結之解 碼邏輯,係要至少解碼一個來自該程式碼而指示該程式碼 區域為活躍程式碼之指令。在此,一個使用者可能包括該 程式碼中可辨識該活躍區域之指令。或者,一個編譯器, 在編譯該程式碼時,可能會響應該程式碼之分析而插入該 指令。在另一個實施例中,硬體可監控該第一核心上面之 程式碼區域的執行,以及可基於此硬體監控,來辨識該程 41 201209572 式碼區域為活躍程式碼。 此外,該程式碼區域,可能係與一個轉譯之活躍區域 相聯結,其係透過更新一個資料結構中的一個登錄項,而使 一個該程式碼區域之參照值,與一個對該轉譯之活躍區域的 參照值相聯結。舉例而言,上述對該轉譯之活躍區域的參照 值可能包括:一個位址、一個指令位址、一個快取區記憶體 内之位置、一個程式計數器值、和一個指令作業碼。 在流程510中,該第二處理器核心上面之轉譯的活躍區 域,係響應在以該第一處理器核心執行該程式碼期間的遭 遇到該程式碼區域而被執行。就一個範例而言,當該第一 處理器核心之指令指標,參照該程式碼之活躍區域時,該 轉譯之區域,便會在該第二處理器上面執行。然而,任何 時刻遭遇一個指令,便可能觸發該第二核心上面之執行。 舉例而言,接取一個特定之指令,或者解碼一個特定之位 址,可能會改為觸發該執行。 在一個實施例中,在諸核心間辨識及分配程式碼時, 電力考量亦會被納入。就一個例示性範例而言,當該第二 處理器核心,執行該轉譯之活躍區域時,該第一處理器核 心,係使轉變成一種可節省電力之低電力狀態。而且,一 些特定之電力考量,在一個實施例中,可能會限制兩者核 心同時在最大之電力下運作。 使一個内置式核心與一個不同之協同設計式核心相耦 合的結果所致,有潛在可能得到最佳之電力和執行利益, 縱使是在一個單一之應用中。舉例而言,藉由一個亂序式 42 201209572 核心,和一個軟體管理順序式核心,一個在該軟體管理式 核心上面效率不彰之程式碼,會遷移至該亂序式核心。而 且,反之,一個在該亂序式核心上面效率不彰之程式碼, 會遷移至該軟體管理式核心。透過硬體、軟體、韌體、或 彼等之組合,因而内置式程式碼、活躍程式碼偵測、和活 躍程式碼最佳化之並列執行,可能會有效率地被管理,同 時,多重線程之個別區段,可能會在亂序式核心與協同設 計順序式核心之間,在一種管線之形式中,被有效率地交 替處理。結果,最大之效能可能會得到,同時可透過不同 之電力效益技術,達成較佳之電力效能,諸如在某些實現 體中,透過在該順序式核心上面之執行期間,將該亂序式 核心置於一種低電力狀態下。 一個如本說明書所使用之模組,係指稱任何之硬體、 軟體、韌體,或彼等之組合。經常,彼等被例示為分開之 模組邊界,一般會有變化及有潛在可能會相重疊。舉例而 言,一個第一模組和一個第二模組,可能會共用硬體、軟 體、韌體、或彼等之組合,同時有潛在可能會保有某些獨 立之硬體、軟體、或韌體。在一個實施例中,術語『邏輯』 之使用包括硬體,諸如電晶體、暫存器、或其他硬體,諸 如可程式化邏輯裝置。然而,在另一個實施例中,邏輯亦 包括軟體或與硬體整合之程式碼,諸如韌體或微碼。 一個如本說明書所使用之值,包括一個數字、狀態、 邏輯狀態、或二進制邏輯狀態之任何習見的表示。經常, 邏輯位準、邏輯值、或邏輯性值之使用,亦被稱為一個1和 43 201209572 〇,彼等僅表示二進制邏輯狀態。舉例而言,一個丨係指稱 一個尚邏輯位準,以及—個〇係指稱一個低邏輯位準。在一 個實施例中,一個儲存單元格,諸如一個電晶體或快閃單 元格,可能有能力保存—個單一邏輯值或多重邏輯值。然 而’電腦系統中之值的其他表示業已被使用。舉例而言, 十進制數之十,亦可能被表示一個1010之二進制值,和一 個十六進制字符Α。所以,—個值包括任何能夠被保存在一 個電腦系統中之資訊的表示值。 此外’彼等狀態可能係由一些值或部份之值來表示。 就一個範例而言,—個第一值,諸如一個邏輯一可能表 示一個内定值或起始狀態,而一個第二值,諸如邏輯零, 可能表示一個非内定狀態。此外,術語「重置」和「設定」, 在一個實施例中,係分別指稱一個内定值和一個被更新之 值或狀態。舉例而言,—個内定值係有潛在可能包括一個 高邏輯值’亦即,重置,而一個被更新之值,係有潛在可 能包括-個低邏輯值,亦即,設定。值得注意的是,彼等 值之任何組合,可能會被利用來表示任何數目之狀態。 上文所闡明之方法、硬體、軟體、勒體、或程式碼的 實施例’可能係經由一個可被一個處理元件執行之機器可 存取式媒體錢H可讀取式雜上面所儲存的指令或程式 碼,來加以實現。一個機器可存取式/可讀取式媒體,可 能包括任何可提供⑽,儲麵/或傳物種在形式上被 -個類似電腦或電子系統等機器讀取之資_㈣。舉例 而吕,一個機器可存取式媒體,包括隨機存取記憶體 44 201209572 (RAM),諸如靜態隨機存取記憶體(SRAM)或動態隨機存取 記憶體(DRAM);唯讀記憶體(ROM);磁性或光學儲存媒 體;快閃記憶體裝置;電氣儲存裝置;光學儲存裝置;聲 頻儲存裝置;其他形式用以保存一些傳播之信號(例如,載 波、紅外線信號、數位信號)的儲存裝置;等等。 整篇說明書引用“一個實施例”或“某一實施例”,係意 謂一個配合該實施例所說明之特定特徵、結構、或特性, 而包括在本發明之至少一個實施例中。因此,出現在整篇 說明書各處之片語“在一個實施例中”或“在某一實施例 中”,並非必然全係指稱同一實施例。此外,該等特定之特 徵、結構、或特性,可能會在一個或多個實施例中,以任 何適當之方式相結合。 在前述之具體說明中,業已參照一些特定之範例性實 施例做了詳細說明。然而,很顯然的是,各種修飾體和變 更形式,係可能針對其完成,而不違離所附申請專利範圍 中所闡明本發明之廣意精神和界定範圍。該等具體說明和 繪圖,因而理當被視為例示性,而非有限制意。此外,前 文使用之實施例和其他範例性語言,並非必然指稱同一實 施例或同一範例,而可能係指稱不同的和有別的實施例, 加上有潛在可能指稱同一實施例。 【圖式簡單說明】 第1圖係例示一個包括兩個非對稱式核心之處理器的 實施; 第2圖係例示一個包括一個内置式核心、一個軟體管理 45 201209572 式核心、和一個程式碼分配模組之處理器的實施例; 第3圖係例示一個用以在一些核心中分配程式碼使達 成最大效能和最大電力節省之處理器的實施例; 第4圖係例示一個在一個亂序式核心和一個順序式核 心中分配程式碼使達成最大效能和最大電力節省之方法的 流程圖之實施例;而 第5圖則例示另一個在一個亂序式核心和一個順序式 核心中分配程式碼使達成最大效能和最大電力節省之方法 的流程圖之實施例。 【主要元件符號說明】 100, 200, 300...處理器 101,102,201,202,301,302…核心 101a, 101b, 102a...架構狀態暫存器 101a,101b, 102a...硬體線程 101a,101b...硬體線程時槽 110.. .較高階之快取區
115.. .低階資料快取區和資料~TLB 120.. .指令分支標的緩衝器(ILTB) 121…接取單元 125.. .解碼器 125, 126...解碼邏輯 126.. .解碼單元 130.. .重新命名分配器邏輯 135.. .重新安排/退出單元 46 201209572 140.. .排程器/執行單元 141.. .執行單元 150.. .資料轉譯緩衝器(D-TLB) 151.. .資料快取區 105.. .匯流排介面模組 170.. .控制器中心 175.. .系統記憶體 210.. .程式碼分配模組 303.. .程式碼快取區 304.. .最佳化之活躍程式碼 305.. .監控器模組 310.. .最佳化/轉譯元件 315.. .映射模組 315.. .映射硬體列表 316.. .參照值 317.. .最佳化之活躍程式碼參照值 320.. .合作模組 325.. .内置式程式碼 327.. .活躍區段/區域 405,410,415,420,425,430,435, 505, 510··.流程 47

Claims (1)

  1. 201209572 七、申請專利範圍: l 一種設備,其包含有: _ 一個積體電路,其包括一個適於不依程式順序來執 订程式碼之亂序式(〇〇〇)處理器核心;和 —個適於依程式順序來執行該程式碼 八,〜 亦躍部 刀的順序式處理器核心。 2.如申請專利範圍第W之設備,其中,該積體電路進— 步包含有-個適於辨識該程式碼之該活躍部分的 器硬體。 现 3·如申請專利範圍第2項之設備,其中,該適於辨識該程 式碼之該活躍部分的監控器硬體包括: 使該監控器硬體適於: 監控該程式碼在該(XX)處理器核心上面之執行; —基於監控該程式碼在該咖處理器核心上面之執 行,來決定該程式碼之該活躍部分有關的再發性樣式;以 及 土 ;。亥再發/生樣式,來辨識該程式碼之該活躍部 分。 4. 如申請專利第3項之設備,射,該適於基於監控 該程式碼在前(X)處理器核心上面之執行來決定該程 式馬m躍。卩分有_再發性樣式之監控器硬體包 括: 使該監控器硬體適於決定隨時間該程式碼之該活 躍部分被執行的次數;以及 48 201209572 其中,該適於基於該再發性樣式來辨識該程式碼之 該活躍部分的監控器硬體包括: 使該監控器硬體適於響應該次數之大於一個活躍 程式碼臨界值,來辨識該程式碼之活躍部分。 5. 如申請專利範圍第3項之設備,其中,該監控器硬體係 包括在該積體電路選自由該000處理器核心、該順序式 處理器核心、和該積體電路未包括在該〇〇〇處理器核心 或該順序式處理器核心中之非聯結部分所構成的群組 之部分中。 6. 如申請專利範圍第2項之設備,其中,該適於辨識該程 式碼之該活躍部分的監控器硬體包括: 使該監控器硬體適於測量該000處理器核心之執 行期間有關該程式碼的活躍部分之效能度量,以及響應 在該000處理器核心上面之效能度量的低於一臨界 值,來辨識該程式碼之該活躍部分。 7. 如申請專利範圍第6項之設備,其中,該監控器硬體亦 適於測量該順序式處理器核心之執行期間有關該程式 碼的該活躍部分之效能度量,以及響應在該順序式處理 器核心上面之效能度量的低於該000處理器核心之執行 期間有關該程式碼的活躍部分之效能度量,來指示該程 式碼之該活躍部分不再被視為程式碼的一個活躍部分。 8. 如申請專利範圍第1項之設備,其中,該積體電路進一 步包含有: 一個適於將來自該000處理器核心之輸入值提供 49 201209572 給該順序式處理器核心的合作硬體。 9.如申請專利範圍第8項之設備,其中,該適於將來自該 000處理器核心之輸入值提供給該順序式處理器核心 的合作硬體包含有: 一個適於執行至少自該〇〇〇處理器核心至該順序 式處理器核心之局部脈絡交換的脈絡交換邏輯,其中, s亥至少之局部脈絡包括至少該等輸入值。 ίο.如申請專利範圍第8項之設備,其中,該適於將來自該 000處理器核心之輸入值提供給該順序式處理器核心 的合作硬體包含有: 一個適於讀取來自該000處理器核心中之暫存器 的輸入值及將該等輸入值寫入至該順序式處理器核心 中之輸入暫存器的指引存取硬體。 11·如申請專利範圍第2項之設備,其中,該積體電路進一 步包含有一個用以保存最佳化程式碼之程式碼儲存邏 輯,其在被執行時,可使就該順序式處理器核心上面所 執行之該程式碼之該活躍部分最佳化,以及其中,該最 佳化程式碼係要響應該監控器硬體之辨識該程式碼的 5亥活躍部分而被執行以最佳化該程式碼之該活躍部分。 12.如_料利顧第丨丨項之設備,其卜該最佳化程式碼 包括最佳化微碼,以及其中,在被執行時可使就該順序 式處理器核心上面所執行之該程式碼之該活躍部分最 佳化的該最佳化微碼包括: 4最佳化微碼在被執行時,可將來自該處理器 50 201209572 核心之解碼器所識別的一第一指令集架構(ISA)之程式 碼的活躍部分,轉譯成該順序式處理器核心之解碼器所 識別的一第二ISA。 13. 如申請專利範圍第12項之設備,其中,該順序式處理器 核心係要與一個程式碼快取區相聯結,使該程式碼快取 區適於在將來自該第一ISA之程式碼的活躍部分被轉譯 成該第二ISA以後,保存該程式碼之第二部分的最佳化 版本。 14. 如申請專利範圍第2項之設備,其中,該積體電路進一 步包含有一個觸發器硬體,其適於: 響應該監控器硬體之辨識該程式碼的該活躍部 分,而指示該程式碼之該活躍部分為活躍程式碼,以及 響應該000處理器核心之遭遇該程式碼的該活躍部 分,且該觸發器硬體之指示該程式碼的該活躍部分為活 躍程式碼,而觸發該程式碼之該活躍部分在該順序式處 理器核心上面的執行。 15. 如申請專利範圍第14項之設備,其中,該適於指示該程 式碼之該活躍部分為活躍程式碼的該觸發器硬體包括: 該觸發器硬體適於保存一個對於該程式碼之該活 躍部分的參照值,而與一個對於該程式碼之該活躍部分 的最佳化版本之參照值相聯結,後者係經最佳化以便在 該順序式處理器核心上面被執行。 16. —種設備,其包含有: 一個處理器,其包括: 51 201209572 —個適於執行程式碼之亂序式核心. —個協同設計式核心;和 -個程式碼分配模組,其適於辨識該程式碼的 =部分,以及就該㈣設計式核心而最佳化該程 =活躍部分,以得到最佳化之活躍程式碼,其中1 同設計式核心,係用以響應該程㉔分賴組之辨識 程^式碼的活躍部分,和魏序式核心為執行而遭射 :碼之活躍部分,而執行該最佳化之活躍程式碼。 °申请專利範圍第16項之設備,其中 式竭之魅躍料的程柄分配触包含^ _程 -個解碼邏輯’其適於自該程式碼解碼出一 式碼標識符指令,其係用以辨識該程式媽之該活躍部八。 8.如申請專利範圍第16項之設 刀 . 及適於辨識該程 式碼之該活躍部分的程式碼分配模組包含有. 一個監控器模組,其適於監控該程式碼在該亂序式 核心上面之執行,以及由監控該程式碼在該亂序式核: 上面之執行,而辨識該程式碼之該活躍部分。 19·如申請專利範圍第18項之設備’其中該監控器模組包 含有一個在該協同設計式核心中之執行邏輟, 再適於執 行監控程式碼,其中,該監㈣式碼,在_協同設計 式核心中之該執行邏輯執行時,係用以監控該程弋碼在 該亂序式核心上面之執行,以及辨識該程式石馬之該活躍 部分。 20.如申請專利範圍第16項之設備,其中,該適於就該協同 52 201209572 設計式核心最佳化該程式碼之該活躍部分以得到最佳 化之活躍程式仙程式喝分配肺,包含有—個可執行 轉譯程式碼之執行邏輯,其中,該轉譯裎式碼在被執行 時,係用以轉譯該程式碼之該活躍部分,以得到該最佳 化之活躍裎式碼,以及其中,該程式碼之該活躍部分包 括由該i序式核心之解石馬器可識別的一第一指令集架 構(ISA)的一部份之指令以及該最佳化之活躍程式碼 包括由該協同设計式核心之解碼器可識別的-第二ISA 的一部份之指令。 21. 如申請專利範圍第16項之設備 ,其中,該協同設計式核 ’V> ’係用以響應該程式碼分配模組之辨識該程式碼的該 /舌躍。卩77 ’和該亂序式核心為執行而遭遇該程式碼之該 活躍部分’而執行該最佳化活躍程式碼,其中包括: 響應一個與該亂序式核心相聯結之程式計數器的 參照一個與該程式碼之該活躍部分相聯結的指令位 址,和一個映射列表使該程式碼之該活躍部分與該最佳 化之活躍程式碼相聯結,而指示該程式碼之該活躍部分 為活躍程式碼,該協同設計式核心係用以執行該 之活躍程式碼。 22. 如申請專利範m第21項之設備,其進—步包含有一個要 與該協同没計式核心相聯結之程式碼快取區其中,— 個使該程式碼之該活躍部分與該最佳化之活躍程式碼 相聯結而指示該程式碼之該活躍部分為活躍程式碼的 映射列表包括: 53 201209572 該映射列表的一個登錄項,係保存一個對於該程式 碼之該活躍部分的參照值和一個對於該最佳化之活躍 程式碼的參照值,其中,該對於最佳化之活躍程式碼的 參照值包括一個對於該程式碼快取區中之最佳化的活 躍程式碼之位置的參照值。 23. 如申請專利範圍第16項之設備,其中,該處理器係耦合 至一個系統記憶體,其係選自一個由隨機存取記憶體 (RAM)、雙倍資料率(DDR贿機存取記憶體、和一個緩 衝隨機存取記憶體所構成之群組,其中,該系統記憶體 係用以保存程式碼。 24. —種處理器,其包含有: 一個與解碼邏輯相聯結而適於識別一個第一指令 集架構(ISA)類型之第一核心; 一個與解碼邏輯相聯結而適於識別一個第二指令 集架構(ISA)類型之第二核心; 一個監控器模組,其用以監控屬該第一ISA類型之 程式碼在該第一核心上面的執行,以及用以辨識該程式 碼之一活躍區域;和 一個轉譯模組,其用以將該程式碼之該活躍區域自 該第一ISA類型轉譯成該第二ISA類型,以得到該程式碼 的一轉譯活躍區域; 其中,該第二處理器核心,係用以響應該第一處理 器核心隨後之遭遇該程式碼的該活躍區域,和該監控器 硬體之辨識該程式碼的該活躍區域,而執行該程式碼的 54 201209572 該轉譯活躍區域。 25. 如申請專利範圍第24項之設備,其中,該監控器模組包 含有監控器程式碼,其在被執行時,用以監控程式碼在 該第一核心上面之執行,以及用以辨識該程式碼的一個 活躍區域;以及其中,該轉譯模組包含有轉譯程式碼, 其在被執行時,用以轉譯該程式碼之該活躍區域,以至 少局部地與該程式碼在該第一核心上面之執行並列地 得到該程式碼的該轉譯活躍區域。 26. 如申請專利範圍第24項之設備,其中,該監控器模組包 含有一個監控器硬體,其用以監控程式碼在該第一核心 上面之執行,以及用以辨識該程式碼的一個活躍區域。 27. 如申請專利範圍第24項之設備,其中,正當該監控器模 組在監控該程式碼在該第一核心上面執行,以及在辨識 該程式碼之該活躍區域時,該第二核心係適於存在於一 低電力狀態中,以及其中,正當該第二核心在執行該程 式碼的該轉譯活躍區域時,該第一核心係適於存在於一 低電力狀態中。 28. 如申請專利範圍第24項之設備,其中,該第一核心係適 於與該第二核心執行該程式碼的該轉譯活躍區域並列 地執行該程式碼的一個非活躍區域。 29. 如申請專利範圍第24項之設備,其中,該等第一核心和第 二核心係適於不會同時在一個最大之電力狀態中運作。 30. —種包含有程式碼之機器可讀取式媒體,其在被該機器 執行時,可使該機器執行如下運作: 55 201209572 監控該機器内的一個處理器中之亂序式處理器核 心上面之程式碼的執行; 辨識該程式碼之活躍區段; 就該機器内之一個協同設計式處理器核心上面的 執行,最佳化該程式碼之活躍區段,以得到該程式碼之 最佳化活躍區段; 將該程式碼之最佳化活躍區段,分配給該協同設計 式處理器核心;以及 以該協同設計式處理器核心,來執行該程式碼之最 佳化活躍區段。 31. 如申請專利範圍第35項之機器可讀取式媒體,其中,監 控程式碼在一個亂序式處理器上面之執行包括: 決定一個與該程式碼之區段相聯結的效能度量。 32. 如申請專利範圍第31項之機器可讀取式媒體,其中,辨 識該程式碼之活躍區段包括:基於相較一效能臨界值之 效能度量,來決定該程式碼之區段為該程式碼之活躍區 段。 33. 如申請專利範圍第35項之機器可讀取式媒體,其中,就 該機器内之一個協同設計式處理器核心上面的執行而 最佳化該程式碼之活躍區段包括: 使該程式碼之活躍區段,自該等可被與該亂序式處 理器核心相聯結之解碼邏輯識別的内置式(native)指 令,轉譯成可被與該協同設計式核心相聯結之解碼邏輯 識別的協同設計式指令。 56 201209572 34. 如申請專利範圍第35項之機器可讀取式媒體,其中,分 配該程式碼之最佳化活躍區段給該協同設計式處理器 核心包括: 將該程式碼之最佳化活躍區段,寫入至一個與該協 同設計式核心相聯結之程式碼快取區。 35. —種包括程式碼之機器可讀取式媒體,其在被該機器執 行時,可使該機器執行如下運作: 響應辨識該程式碼的一個包括就該機器中的一個 第一處理器核心加以最佳化之第一程式碼類型的區域 為活躍程式碼,而使該程式碼區域與一個轉譯之活躍區 域相聯結,後者包括之程式碼區域,係自該第一程式碼 類型轉譯成一個第二類型,其係要就該機器中的一個第 二處理器核心加以最佳化;以及 響應在該第一處理器核心執行該程式碼期間之遭 遇該程式碼區域,而回應該程式碼區域之與該轉譯之活 躍區域相聯結,以在該第二處理器核心上面執行該轉譯 之活躍區域。 36. 如申請專利範圍第35項之機器可讀取式媒體,其中,該 第一處理器核心包括一個亂序式處理器核心,該第一程 式碼類型包括一個就該亂序式處理器核心加以最佳化 之亂序式程式碼類型,該第二處理器核心包括一個順序 式處理器核心,以及該第二程式碼類型包括一個就該順 序式處理器核心類型加以最佳化之順序式程式碼類型。 37. 如申請專利範圍第36項之機器可讀取式媒體,其中,該 57 201209572 亂序式處理器核心係使與一個可識別一個第一指令集 架構(ISA)之解碼邏輯相聯結,該第—程式碼類型係進 一步就該第一ISA加以最佳化,該順序式處理器核心係 使與一個可識別一個第二ISA之解碼邏輯相聯結,以及 該第二程式碼類型係進一步就該第二ISA加以最佳化。 38. 如申請專利範圍第35項之機器可讀取式媒體,其中,辨 識該程式碼區域為活躍程式碼,包括一個與該第一處理 器核心相聯結之解碼邏輯,其可解碼至少一個來自該程 式碼而指示該程式碼之區域為活躍程式碼的指令。 39. 如申請專利範圍第35項之機器可讀取式媒體其中,辨 識該程式碼區域為活躍程式碼,包括一個在該機器内之 硬體,其可監控s玄程式碼區域在該第_核心上面之執 行,以及可基於該硬體之監控該程式碼區域在該第一核 心上面之執行,來辨識該程式碼區域為活躍程式碼。 40. 如申請專利範圍第35項之機器可讀取式媒體其中,使 該程式碼區域與一個轉譯之活躍區域相聯結,包括以與 一個對該轉譯之活躍區域的參照值相聯結之對該程式 碼區域的—個參照值,來更新一個資料結構的一個登錄 項,以及其中,對該轉譯之活躍區域的一個參照值,和 對5亥程式碼區域的一個參照值,各係個別地選自一個如 下構成之群組:一個位址、一個指令位址、一個在快取 區δ己憶體内之位置、一個程式計數器值、和一個指令作 業碼。 41. 如申晴專利範圍第35項之機器可讀取式媒體,其中,響 58 201209572 應在該程式碼以該第一處理器核心執行期間之遭遇該 程式碼區域,以及該程式碼區域之與該轉譯的活躍區域 相聯結,而在該第二處理器核心執行該轉譯之活躍區域 期間,使該第一處理器核心,轉變至一低電力狀態。 42. —種方法,其包括: 辨識程式碼的一個活躍區段; 就以一個順序式處理器核心之執行而最佳化該程 式碼的該活躍區段,以得到該程式碼的一個最佳化活躍 區段, 以一個處理器之亂序式核心來執行該程式碼;以及 響應該亂序式核心在以該亂序式處理器執行該程 式碼期間之遭遇該程式碼的該活躍區段以及辨識該程 式碼之該活躍區段,而以該順序式處理器核心來執行該 程式碼之該最佳化活躍區段,而代替該亂序式處理器核 心來執行該程式碼之該活躍區段。 43. 如申請專利範圍第42項之方法,其進一步包括使該程式碼 之該活躍區段與該程式碼之該最佳化活躍區段相聯結。 44. 如申請專利範圍第43項之方法,其中,使該程式碼之該 活躍區段與該程式碼之該最佳化活躍區段相聯結,包括 儲存一個對於該程式碼之該活躍區段的參照值,和一個 對於該程式碼之該最佳化活躍區段的參照值。 45. 如申請專利範圍第42項之方法,其中,辨識該程式碼的 一個活躍區段包括: 在以該亂序式處理器核心執行該程式碼的一個區 59 201209572 &期間監控一個效能度量,以及 基於相較-個效能臨界值之效能度量來辨識該程 式碼之區段為該程式媽之該活躍區段。 抓如申請專利腳糾項之枝,其;—步包括,在以該 順序式處理器核心來執行該程式石馬之該最佳化 段1 月間監控該效能度量,以及響應以該順序式處理器核 之指示效能低於以該亂序式處理的效能度量 的-個區段期間之效能度量,而指:;執行該程式瑪 區段要《該亂序式核心來執行替以之该活躍 佳化活躍退段要以該順序式核心程式碼之該最 47·如申請專利範圍第42項之方法,丁 處理器核心之執行來最佳化該程式^以一個順序式 到該程式竭之1最佳化活躍區段活躍區段以得 减碼’而將該程式碼轉譯成該程式2執行二進制轉譯 段。 .之該最佳化活躍區 48.-種包括程式碼之機器 行時,機—執 60
TW100122413A 2010-06-29 2011-06-27 藉由耦合第一核心類型與第二核心類型來改善電力效能效率之設備、方法及系統 TWI516908B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/826,107 US20110320766A1 (en) 2010-06-29 2010-06-29 Apparatus, method, and system for improving power, performance efficiency by coupling a first core type with a second core type

Publications (2)

Publication Number Publication Date
TW201209572A true TW201209572A (en) 2012-03-01
TWI516908B TWI516908B (zh) 2016-01-11

Family

ID=45353677

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100122413A TWI516908B (zh) 2010-06-29 2011-06-27 藉由耦合第一核心類型與第二核心類型來改善電力效能效率之設備、方法及系統

Country Status (8)

Country Link
US (1) US20110320766A1 (zh)
EP (1) EP2588958B1 (zh)
JP (1) JP2013532331A (zh)
KR (1) KR101507702B1 (zh)
CN (1) CN102934084B (zh)
AU (1) AU2011276656B2 (zh)
TW (1) TWI516908B (zh)
WO (1) WO2012005949A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI620122B (zh) * 2014-12-24 2018-04-01 英特爾股份有限公司 用於資料推測執行的設備和方法

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8799693B2 (en) * 2011-09-20 2014-08-05 Qualcomm Incorporated Dynamic power optimization for computing devices
US9098309B2 (en) 2011-09-23 2015-08-04 Qualcomm Incorporated Power consumption optimized translation of object code partitioned for hardware component based on identified operations
US10185566B2 (en) * 2012-04-27 2019-01-22 Intel Corporation Migrating tasks between asymmetric computing elements of a multi-core processor
CN103514110B (zh) * 2012-06-20 2016-08-24 华为技术有限公司 非易失性存储设备的缓存管理方法及装置
US10437591B2 (en) 2013-02-26 2019-10-08 Qualcomm Incorporated Executing an operating system on processors having different instruction set architectures
US9405551B2 (en) * 2013-03-12 2016-08-02 Intel Corporation Creating an isolated execution environment in a co-designed processor
US9606818B2 (en) 2013-03-14 2017-03-28 Qualcomm Incorporated Systems and methods of executing multiple hypervisors using multiple sets of processors
US9396012B2 (en) 2013-03-14 2016-07-19 Qualcomm Incorporated Systems and methods of using a hypervisor with guest operating systems and virtual processors
US10114756B2 (en) 2013-03-14 2018-10-30 Qualcomm Incorporated Externally programmable memory management unit
US10423216B2 (en) * 2013-03-26 2019-09-24 Via Technologies, Inc. Asymmetric multi-core processor with native switching mechanism
US9563432B2 (en) * 2013-04-19 2017-02-07 Nvidia Corporation Dynamic configuration of processing pipeline based on determined type of fetched instruction
KR20150019349A (ko) * 2013-08-13 2015-02-25 삼성전자주식회사 다중 쓰레드 실행 프로세서 및 이의 동작 방법
US9552205B2 (en) * 2013-09-27 2017-01-24 Intel Corporation Vector indexed memory access plus arithmetic and/or logical operation processors, methods, systems, and instructions
US10503513B2 (en) * 2013-10-23 2019-12-10 Nvidia Corporation Dispatching a stored instruction in response to determining that a received instruction is of a same instruction type
KR20150050135A (ko) 2013-10-31 2015-05-08 삼성전자주식회사 복수의 이종 코어들을 포함하는 전자 시스템 및 이의 동작 방법
US9547496B2 (en) 2013-11-07 2017-01-17 Microsoft Technology Licensing, Llc Energy efficient multi-modal instruction issue
GB2521367A (en) * 2013-12-17 2015-06-24 Ibm Adaptable and extensible runtime and system for heterogeneous computer systems
US9395797B2 (en) 2014-07-02 2016-07-19 Freescale Semiconductor, Inc. Microcontroller with multiple power modes
US9575537B2 (en) * 2014-07-25 2017-02-21 Intel Corporation Adaptive algorithm for thermal throttling of multi-core processors with non-homogeneous performance states
US9190989B1 (en) 2014-10-07 2015-11-17 Freescale Semiconductor, Inc. Integrated circuit power management
US9411363B2 (en) * 2014-12-10 2016-08-09 Intel Corporation Synchronization in a computing device
US9563431B2 (en) * 2014-12-26 2017-02-07 Intel Corporation Techniques for cooperative execution between asymmetric processor cores
US9547483B1 (en) * 2015-11-06 2017-01-17 International Business Machines Corporation Feedback directed optimized compiling of optimized executable code
US10605920B2 (en) * 2016-01-13 2020-03-31 Ams Sensors Singapore Pte. Ltd. Power savings through refresh control for distance sensing devices
US10235178B2 (en) 2017-06-02 2019-03-19 Microsoft Technology Licensing, Llc Performance scaling for binary translation
CN109996185B (zh) * 2017-12-29 2022-02-15 腾讯科技(深圳)有限公司 终端的定位方法和装置、存储介质、电子装置
KR102042495B1 (ko) * 2018-11-30 2019-11-08 아주대학교산학협력단 멀티 코어 시스템의 저전력 운영을 위한 데이터 흐름 최적화 장치 및 방법
US11016766B2 (en) 2019-06-29 2021-05-25 Intel Corporation Apparatus and method for compiler hints for inter-core offload
US10983796B2 (en) 2019-06-29 2021-04-20 Intel Corporation Core-to-core end “offload” instruction(s)
US20200409764A1 (en) * 2019-06-29 2020-12-31 Intel Corporation Core-to-core "snoop" instruction variants
US10929129B2 (en) 2019-06-29 2021-02-23 Intel Corporation Apparatus and method for modifying addresses, data, or program code associated with offloaded instructions
US11321144B2 (en) 2019-06-29 2022-05-03 Intel Corporation Method and apparatus for efficiently managing offload work between processing units
US11372711B2 (en) 2019-06-29 2022-06-28 Intel Corporation Apparatus and method for fault handling of an offload transaction
US11182208B2 (en) 2019-06-29 2021-11-23 Intel Corporation Core-to-core start “offload” instruction(s)
US11030000B2 (en) 2019-06-29 2021-06-08 Intel Corporation Core advertisement of availability
US20210200580A1 (en) * 2019-12-28 2021-07-01 Intel Corporation Performance monitoring in heterogeneous systems
US11669491B2 (en) * 2020-04-09 2023-06-06 Samsung Electronics Co., Ltd. Processor, system on chip including heterogeneous core, and operating methods thereof for optimizing hot functions for execution on each core of a heterogeneous processor

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0769825B2 (ja) * 1989-02-10 1995-07-31 三菱電機株式会社 並列処理装置
JPH02301830A (ja) * 1989-05-17 1990-12-13 Mitsubishi Electric Corp 情報処理方式
JP2970553B2 (ja) * 1996-08-30 1999-11-02 日本電気株式会社 マルチスレッド実行方法
US5802338A (en) * 1996-10-01 1998-09-01 International Business Machines Corporation Method of self-parallelizing and self-parallelizing multiprocessor using the method
JP3209205B2 (ja) * 1998-04-28 2001-09-17 日本電気株式会社 プロセッサにおけるレジスタ内容の継承装置
JP3604029B2 (ja) * 1999-01-12 2004-12-22 日本電気株式会社 マルチスレッドプロセッサ
US6681387B1 (en) * 1999-12-01 2004-01-20 Board Of Trustees Of The University Of Illinois Method and apparatus for instruction execution hot spot detection and monitoring in a data processing unit
JP2001167066A (ja) * 1999-12-08 2001-06-22 Nec Corp プロセッサ間通信方法及びマルチプロセッサシステム
US20020066081A1 (en) * 2000-02-09 2002-05-30 Evelyn Duesterwald Speculative caching scheme for fast emulation through statically predicted execution traces in a caching dynamic translator
US6691306B1 (en) * 2000-12-22 2004-02-10 Lsi Logic Corporation Use of limited program space of general purpose processor for unlimited sequence of translated instructions
US7100060B2 (en) * 2002-06-26 2006-08-29 Intel Corporation Techniques for utilization of asymmetric secondary processing resources
US7802236B2 (en) * 2002-09-09 2010-09-21 The Regents Of The University Of California Method and apparatus for identifying similar regions of a program's execution
US8146063B2 (en) * 2003-02-20 2012-03-27 Koninklijke Philips Electronics N.V. Translation of a series of computer instructions
US7093147B2 (en) * 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
US7480899B2 (en) * 2004-03-22 2009-01-20 International Business Machines Corporation Method and apparatus for autonomic test case feedback using hardware assistance for code coverage
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US20060123397A1 (en) * 2004-12-08 2006-06-08 Mcguire James B Apparatus and method for optimization of virtual machine operation
US20060212677A1 (en) * 2005-03-15 2006-09-21 Intel Corporation Multicore processor having active and inactive execution cores
US7734895B1 (en) * 2005-04-28 2010-06-08 Massachusetts Institute Of Technology Configuring sets of processor cores for processing instructions
US7461275B2 (en) * 2005-09-30 2008-12-02 Intel Corporation Dynamic core swapping
US7703088B2 (en) * 2005-09-30 2010-04-20 Intel Corporation Compressing “warm” code in a dynamic binary translation environment
US7506205B2 (en) * 2006-02-14 2009-03-17 Atmel Corporation Debugging system and method for use with software breakpoint
JP4439491B2 (ja) * 2006-05-24 2010-03-24 株式会社ソニー・コンピュータエンタテインメント マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法
US20080263324A1 (en) * 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
US20080244538A1 (en) * 2007-03-26 2008-10-02 Nair Sreekumar R Multi-core processor virtualization based on dynamic binary translation
US8190652B2 (en) * 2007-12-06 2012-05-29 Intel Corporation Achieving coherence between dynamically optimized code and original code
JP2009199384A (ja) * 2008-02-22 2009-09-03 Nec Corp データ処理装置
US8615647B2 (en) * 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
CN102171650B (zh) * 2008-11-24 2014-09-17 英特尔公司 用于将顺序程序分解为多个线程、执行所述线程和重构该顺序执行的系统、方法和装置
US9569270B2 (en) * 2009-04-21 2017-02-14 Empire Technology Development Llc Mapping thread phases onto heterogeneous cores based on execution characteristics and cache line eviction counts
US8458676B2 (en) * 2009-06-30 2013-06-04 International Business Machines Corporation Executing platform-independent code on multi-core heterogeneous processors

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI620122B (zh) * 2014-12-24 2018-04-01 英特爾股份有限公司 用於資料推測執行的設備和方法

Also Published As

Publication number Publication date
KR20130032333A (ko) 2013-04-01
KR101507702B1 (ko) 2015-04-07
US20110320766A1 (en) 2011-12-29
EP2588958A2 (en) 2013-05-08
TWI516908B (zh) 2016-01-11
EP2588958B1 (en) 2019-11-06
AU2011276656B2 (en) 2015-08-20
JP2013532331A (ja) 2013-08-15
WO2012005949A2 (en) 2012-01-12
CN102934084B (zh) 2016-11-16
WO2012005949A3 (en) 2012-05-18
EP2588958A4 (en) 2016-11-02
CN102934084A (zh) 2013-02-13
AU2011276656A1 (en) 2013-01-10

Similar Documents

Publication Publication Date Title
TW201209572A (en) Apparatus, method, and system for improving power performance efficiency by coupling a first core type with a second core type
TWI742032B (zh) 用於使用者等級執行緒暫止的方法、設備及指令
TWI628594B (zh) 用戶等級分叉及會合處理器、方法、系統及指令
JP4472339B2 (ja) マルチコアマルチスレッドプロセッサ
Marr et al. Hyper-Threading Technology Architecture and Microarchitecture.
TWI494850B (zh) 通透地提供給作業系統之非對稱多核心處理器系統
US7502914B2 (en) Transitive suppression of instruction replay
JP2017224342A (ja) プロセッサ及び装置
US10162687B2 (en) Selective migration of workloads between heterogeneous compute elements based on evaluation of migration performance benefit and available energy and thermal budgets
CN105144082B (zh) 基于平台热以及功率预算约束,对于给定工作负荷的最佳逻辑处理器计数和类型选择
JP2016207232A (ja) 共有メモリへのアクセスの同期を緩和するプロセッサ、方法、システム、及びプログラム
TW201237760A (en) Dynamic core selection for heterogeneous multi-core systems
US10191742B2 (en) Mechanism for saving and retrieving micro-architecture context
US10437638B2 (en) Method and apparatus for dynamically balancing task processing while maintaining task order
US9372698B2 (en) Method and apparatus for implementing dynamic portbinding within a reservation station
TW201234270A (en) Apparatus, method, and system for early deep sleep state exit of a processing element
CN110647404A (zh) 用于多线程处理器中的屏障同步的系统、设备和方法
CN110196771A (zh) 经由时钟请求消息传递协议在cpu管芯上进行功率管理的方法、装置和系统
TWI730312B (zh) 在處理器管線中管理指令順序
US6757807B1 (en) Explicitly clustered register file and execution unit architecture
US10083033B2 (en) Apparatus and method for efficient register allocation and reclamation
CN111752889A (zh) 用于具有指令再循环的多级保留站的方法和设备
EP3757772A1 (en) System, apparatus and method for a hybrid reservation station for a processor
CN109683959B (zh) 处理器的指令执行方法及其处理器
KR100861701B1 (ko) 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍시스템 및 방법

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees