TWI567646B - 容許一架構之編碼模組使用另一架構之程式庫模組的架構間相容性模組 - Google Patents

容許一架構之編碼模組使用另一架構之程式庫模組的架構間相容性模組 Download PDF

Info

Publication number
TWI567646B
TWI567646B TW104105063A TW104105063A TWI567646B TW I567646 B TWI567646 B TW I567646B TW 104105063 A TW104105063 A TW 104105063A TW 104105063 A TW104105063 A TW 104105063A TW I567646 B TWI567646 B TW I567646B
Authority
TW
Taiwan
Prior art keywords
module
bit
architecture
library
encoding
Prior art date
Application number
TW104105063A
Other languages
English (en)
Other versions
TW201545058A (zh
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 TW201545058A publication Critical patent/TW201545058A/zh
Application granted granted Critical
Publication of TWI567646B publication Critical patent/TWI567646B/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/30003Arrangements for executing specific machine instructions
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • 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/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
    • 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/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

容許一架構之編碼模組使用另一架構之程式庫模組的架構間相容性模組
本文描述的實施例通常關於電子裝置上編碼的執行。特別是,這裡所描述的實施例通常關於電子裝置上不同架構的編碼的執行。
直到最近,大多數智慧手機、手機及平板計算機等,都是基於32位元架構。他們具有32位元架構處理器及32位元作業系統。各種各樣的32位元編碼已為這些32位元架構被撰寫。例如,許多移動應用程式已為這些裝置被撰寫。此外,32位元程式庫已為這些32位元架構被撰寫。
最近已可取得具有64位元架構的智慧手機。這些64位元架構係基於64位元架構處理器和64位元作業系統。例如,來自蘋果公司的iPhone 5S最近已可取得。iPhone 5S包括具有64位元架構的A7處理器晶片和 被稱為iOS 7的64位元作業系統。其它64位元架構的智慧手機也已被發表和/或正在開發中。
至少在這些64位元架構的智慧手機部署期間的初始階段,可能會希望能夠提供反向相容性,使得已開發的32位元編碼是能夠在這些智慧手機上運行。這將容許各種各樣現有的32位元移動應用程式和其它32位元編碼得以繼續使用。
iPhone 5S和iOS 7提供這樣的反向相容性。它們能夠執行32位元編碼以及64位元編碼。此外,32位元編碼能夠使用32位元程式庫。
100‧‧‧計算機系統
102‧‧‧64位元處理器
104‧‧‧64位元架構資源
106‧‧‧32位元或64位元編碼執行模式
108‧‧‧傳統耦接機構
110‧‧‧記憶體
112‧‧‧64位元作業系統模組
114‧‧‧64位元編碼模組
116‧‧‧32位元編碼模組
118‧‧‧64位元程式庫模組
120‧‧‧32位元程式庫模組
122‧‧‧32位元/64位元相容性模組
200‧‧‧計算機系統
202‧‧‧32位元處理器
210‧‧‧記憶體
212‧‧‧32位元作業系統模組
216‧‧‧16位元編碼模組
218‧‧‧32位元程式庫模組
222‧‧‧16位元/32位元相容性模組
300‧‧‧計算機系統
302‧‧‧128位元處理器
310‧‧‧記憶體
312‧‧‧128位元作業系統模組
316‧‧‧64位元編碼模組
318‧‧‧128位元程式庫模組
322‧‧‧64位元/128位元相容性模組
400‧‧‧計算機系統
402‧‧‧16位元處理器
410‧‧‧記憶體
412‧‧‧16位元作業系統模組
416‧‧‧32位元編碼模組
418‧‧‧16位元程式庫模組
422‧‧‧16位元/32位元相容性模組
516‧‧‧第一架構(例如,32位元)編碼模組
518‧‧‧第二架構(例如,64位元)程式庫模組
522‧‧‧相容性模組
530‧‧‧控制流傳遞接收模組
532‧‧‧應用程式二進制介面轉變模組
534‧‧‧處理器模式轉變模組
536‧‧‧控制流傳遞輸出模組
616‧‧‧32位元編碼模組
618‧‧‧64位元程式庫模組
620‧‧‧32位元程式庫
622‧‧‧32位元/64位元相容性模組
630‧‧‧控制流傳遞接收模組
632‧‧‧應用程式二進制介面轉變模組
634‧‧‧處理器模式轉變模組
636‧‧‧控制流傳遞輸出模組
640‧‧‧封套程式庫
642-1‧‧‧第一封套模組
644-1‧‧‧第一32位元功能模組
642-N‧‧‧第N封套模組
644-N‧‧‧第N32位元功能模組
646‧‧‧到/來自32位元模組的控制流傳遞
648‧‧‧到/來自64位元程式庫模組的控制流傳遞
750‧‧‧方法
751‧‧‧方塊
752‧‧‧方塊
753‧‧‧方塊
754‧‧‧方塊
755‧‧‧方塊
756‧‧‧方塊
800‧‧‧計算機系統
806‧‧‧編碼類型執行模式
816‧‧‧32位元編碼模組
818‧‧‧64位元編碼模組
822‧‧‧32位元/64位元相容性模組
834‧‧‧處理器模式轉變模組
860‧‧‧位址空間
862‧‧‧標頭
864‧‧‧標頭
866‧‧‧動態加載器模組
868‧‧‧運行時架構
869‧‧‧編碼類型
870‧‧‧編碼位址
871‧‧‧編碼大小
872‧‧‧控制流傳遞操作的指示
900‧‧‧管線
902‧‧‧提取階段
904‧‧‧長度解碼階段
906‧‧‧解碼階段
908‧‧‧分配階段
910‧‧‧重命名階段
912‧‧‧排程階段
914‧‧‧暫存器讀取/記憶體讀取階段
916‧‧‧執行階段
918‧‧‧回寫/記憶體寫入階段
922‧‧‧例外處理階段
924‧‧‧提交階段
930‧‧‧前端單元
932‧‧‧分支預測單元
934‧‧‧指令快取記憶體單元
936‧‧‧指令轉譯後備緩衝區
938‧‧‧指令提取單元
940‧‧‧解碼單元
950‧‧‧執行引擎單元
952‧‧‧重命名/分配器單元
954‧‧‧失效單元
956‧‧‧排程器單元
958‧‧‧物理暫存器檔案單元
960‧‧‧執行群集
962‧‧‧執行單元
964‧‧‧記憶體存取單元
970‧‧‧記憶體單元
972‧‧‧資料指令轉譯後備緩衝區單元
974‧‧‧資料快取記憶體單元
976‧‧‧L2快取記憶體單元
990‧‧‧核心
1000‧‧‧指令解碼器
1002‧‧‧互連網路
1004‧‧‧L2快取記憶體的區域子集
1006‧‧‧L1快取記憶體單元
1006A‧‧‧L1資料快取記憶體單元
1008‧‧‧純量單元
1010‧‧‧向量單元
1012‧‧‧純量暫存器
1014‧‧‧向量暫存器
1020‧‧‧混合單元
1022A‧‧‧數值轉換單元
1022B‧‧‧數值轉換單元
1024‧‧‧複製單元
1026‧‧‧寫入遮罩暫存器
1028‧‧‧寬為16的算術邏輯單元
1100‧‧‧處理器
1102A‧‧‧核心
1102N‧‧‧核心
1104A‧‧‧快取記憶體單元
1104N‧‧‧快取記憶體單元
1106‧‧‧共享快取記憶體單元
1108‧‧‧特殊用途邏輯
1110‧‧‧系統代理單元
1112‧‧‧環型互連單元
1114‧‧‧積體記憶體控制器單元
1116‧‧‧匯流排控制器單元
1200‧‧‧系統
1210‧‧‧處理器
1215‧‧‧處理器
1220‧‧‧控制器集線器
1240‧‧‧記憶體
1245‧‧‧協同處理器
1250‧‧‧輸入/輸出集線器
1260‧‧‧輸入/輸出裝置
1290‧‧‧圖形記憶體控制器集線器
1295‧‧‧連接
1300‧‧‧系統
1314‧‧‧輸入/輸出裝置
1315‧‧‧處理器
1316‧‧‧第一匯流排
1318‧‧‧匯流排橋
1320‧‧‧第二匯流排
1322‧‧‧鍵盤和/或滑鼠
1324‧‧‧音頻輸入/輸出
1327‧‧‧通信裝置
1328‧‧‧儲存單元
1330‧‧‧指令/編碼和資料
1332‧‧‧記憶體
1334‧‧‧記憶體
1338‧‧‧協同處理器
1339‧‧‧高性能介面
1350‧‧‧點對點介面
1352‧‧‧個別的點對點介面
1354‧‧‧個別的點對點介面
1370‧‧‧處理器
1372‧‧‧積體記憶體和輸入/輸出控制邏輯
1376‧‧‧點對點介面電路
1378‧‧‧點對點介面電路
1380‧‧‧處理器
1382‧‧‧積體記憶體和輸入/輸出控制邏輯
1386‧‧‧點對點介面電路
1388‧‧‧點對點介面電路
1390‧‧‧晶片組
1392‧‧‧介面
1394‧‧‧點對點介面電路
1396‧‧‧介面
1398‧‧‧點對點介面電路
1400‧‧‧系統
1414‧‧‧輸入/輸出裝置
1415‧‧‧舊有輸入/輸出裝置
1500‧‧‧系統晶片
1502‧‧‧互連單元
1510‧‧‧應用處理器
1520‧‧‧協同處理器
1530‧‧‧靜態隨機存取記憶體單元
1532‧‧‧直接記憶體存取單元
1540‧‧‧顯示單元
1602‧‧‧高階語言
1604‧‧‧x86編譯器
1606‧‧‧x86二進制碼
1608‧‧‧替代指令集編譯器
1610‧‧‧替代指令集二進制編碼
1612‧‧‧指令轉換器
1614‧‧‧不具有x86指令集核心的處理器
1616‧‧‧具有至少一個x86指令集核心的處理器
本發明較佳為藉由參照下面的描述和用來說明實施例的附圖來理解。在附圖中:
圖1係本發明實施例可在計算機系統實現的第一實施例之方塊圖。
圖2係本發明實施例可在計算機系統實現的第二實施例之方塊圖。
圖3係本發明實施例可在計算機系統實現的第三實施例之方塊圖。
圖4係本發明實施例可在計算機系統實現的第四實施例之方塊圖。
圖5係架構間相容性模組的實施例之方塊圖。
圖6係具有封套程式庫的架構間相容性模組的實施例之方塊圖。
圖7係使用跨定位功能的架構間相容性模組的封套程式庫截取控制流傳遞的方法的實施例的方塊流程圖。
圖8係架構間相容性模組,其可操作以使用動態加載器模組的運行時架構來決定何時改變相容模式之方塊圖。
圖9A係顯示循序管線的實施例和暫存器重命名亂序發送/執行管線的實施例之方塊圖。
圖9B係包括耦接到執行引擎單元和也耦接到記憶體單元的前端單元的處理器核心的實施例之方塊圖。
圖10A係連同到晶片上的互連網路的連接及第2級(L2)快取記憶體的本機子集的單一處理器核心的實施例之方塊圖。
圖10B係圖10A的處理器核心的部分的放大圖的實施例之方塊圖。
圖11係可具有一個以上核心、可具有積體記憶體控制器且可具有積體圖形的處理器的實施例之方塊圖。
圖12係計算機架構的第一實施例之方塊圖。
圖13係計算機架構的第二實施例之方塊圖。
圖14係計算機架構的第三實施例之方塊圖。
圖15係系統單晶片架構的實施例之方塊圖。
圖16係根據本發明實施方式,利用軟體指令轉換器來轉換在來源指令的二進制指令到目標指令集中的二進制指令之方塊圖。
【發明內容及實施方式】
正如在先前技術部分討論的,iPhone 5S和iOS 7容許反向相容性。32位元編碼與64位元編碼都能夠在iPhone 5S上執行。32位元編碼使用一組32位元程式庫。同樣地,64位元編碼使用一組64位元程式庫。然而,用於提供反向相容性的這種方法有一缺點,iPhone 5S需要包括這些程式庫的32位元和64位元版本。特別是,一組32位元程式庫被包括、連接且用於32位元編碼。另一組64位元程式庫被包括、連接且用於64位元編碼。儲存32位元程式庫和64位元程式庫兩者將比儲存單一程式庫消耗較多儲存空間。
本文揭露架構間相容性模組,用以容許給定架構的編碼(例如32位元編碼、舊有編碼等)使用不同架構的程式庫(例如64位元編碼、較新的架構等)。在以下描述中,許多具體細節被闡述(例如特定架構處理器和作業系統、新與舊有架構之間的差異、架構間相容性模組的例子、處理器配置、操作的順序等)。然而,實施例可以在沒有這些具體細節下被實施。在其它實例中,眾所皆知的電路、架構和技術沒有被詳細顯示以避免模糊對描述的理解。
圖1是計算機系統100的第一實施例的方塊圖,其中本發明的實施例可以被實現。在各種實施例中,計算機系統可以包括智慧手機、蜂巢行動電話、移動電話、個人數位助理(PDA)、可攜式媒體播放器、手持裝置、平板電腦、平板電腦、筆記型電腦、桌上電腦、工作站、視頻遊戲主機、機上盒、伺服器、網路裝置或該領域已知的其它電子裝置。在一些實施例中,計算機系統可以代表一個具有有限記憶體資源的小型手持計算機系統,例如,如智慧手機、蜂巢行動電話、PDA、平板計算機或手持裝置,雖然本發明的範圍並不如此侷限。
該計算機系統包括處理器102的實施例和記憶體110的實施例。該處理器和該記憶體可以耦接在一起,或藉由傳統耦接機構108彼此通信(例如藉由一個以上匯流排、集線器、記憶體控制器、晶片組元件或類似物)。在該領域中已知各種不同的連接機構是適用的。該記憶-體可以包括一個或多個記憶體裝置和/或在計算機系統傳統使用的一個或多個不同的記憶體類型。
在所示實施例中,處理器係64位元架構處理器,雖然本發明的範圍並不如此侷限。在一些實施例中,處理器可以是一般用途處理器。可替代地,處理器可以是特殊用途處理器。合適的特殊用途處理器的例子包括但不限於,通信處理器、圖形處理器、網路處理器、密碼處理器、協同處理器、嵌入式處理器、數位信號處理器(DSP)和控制器(例如微控制器),僅舉幾個例子。該 處理器可以是任何各種的複雜指令集計算(CISC)處理器、精簡指令集計算(RISC)處理器、超長指令字集(VLIW)處理器、其混合、其它類型的處理器,或這些不同處理器的組合(例如在不同的核心)。
如圖所示,在一些實施例中,64位元架構處理器可具有64位元架構資源104,其無法提供給32位元架構處理器。例如,64位元架構資源可包括在32位元處理器中找不到的進階架構資源和/或性能增強特性。例如,64位元處理器可具有額外的架構暫存器、增強應用程式二進制介面(ABI)、用以程序呼叫的改進參數傳遞邏輯或類似物。例如,相較於IA-32架構,Intel® 64架構具有更多數目的暫存器、額外浮點單一指令多重資料(SIMD)能力、容許藉由暫存器傳遞參數而不是藉由堆疊存取的64位元ABI。這些進階架構資源和/或性能增強特性可以幫助提高軟體性能。這些資源或特性是發展趨勢朝向64位元計算的原因之一。
再次參照圖1,記憶體110包括各種不同類型的軟體模組。在所示實施例中,軟體模組包括64位元作業系統模組112。該64位元作業系統模組可包括與該處理器的64位元ABI相容的系統級軟體。64位元作業系統模組通常設計成能夠利用一些或全部的64位元處理器的64位元架構資源104。
該記憶體還包括一個或多個32位元編碼模組116和可選的一個或多個64位元編碼模組114。在一些實 施例中,這些可以包括編譯和/或二進制編碼。這樣的32位元和64位元編碼模組的實例包括但不限於應用程式模組。在智慧手機或其它移動裝置的特定例子中,應用程式模組可以代表移動應用程式或應用程式程序。在一觀點中,32位元編碼模組可以表示舊有或現存之前為32位元架構前身所撰寫的編碼模組,儘管本發明的範圍並不如此侷限。在另一觀點,32位元編碼模組可改為新寫入的32位元編碼模組。32位元編碼模組可能已為32位元架構處理器被編譯。
該記憶體還包括64位元程式庫模組118。在一些實施例中,如虛線所示,該記憶體和/或該計算機系統可以選擇性包括32位元程式庫模組120。可替代地,在其它實施例中,如由“X”表示,藉由32位元程式庫模組,即使當32位元編碼模組被儲存在記憶體並能夠在64位元處理器上運行,該記憶體和/或該計算機系統可選擇性省略這樣的32位元程式庫模組。32位元和64位元程式庫模組的實例包括但不限於那些為C標準程式庫、數學庫、系統庫和類似物。
在操作期間,32位元編碼和64位元編碼兩者都可能在64位元處理器上運行。例如,64位元作業系統模組的指令或編碼、32位元編碼模組和64位元程式庫模組可以在64位元處理器上執行或運行。藉由容許舊有的32位元應用程式在較新的64位元處理器上運行,可潛在地用以提供反向相容性。在一些實施例中,32位元和64 位元編碼兩者都可在同一執行緒中運行。在一些實施例中,64位元處理器可具有可選擇的32位元或64位元編碼執行模式106,用以指示無論是64位元編碼或是32位元編碼(或在一些實施例中32位元編碼還有64位元編碼)目前正在被處理器執行。例如,在一個實施例中,模式106可以表示容許64位元編碼而不容許32位元編碼在64位元處理器上執行的第一64位元模式,以及容許32位元編碼在64位元處理器上執行的第二32位元模式。在一觀點中,32位元模式也可容許64位元編碼在64位元處理器上執行。在另一觀點中,32位元模式可能不容許64位元編碼在64位元處理器上執行。64位元處理器可藉由預設在64位元模式選擇地操作,直到模式被改變以進入到32位元模式中,雖然這並不是必需的。其它處理器不一定具有不同的模式以執行不同類型的編碼(例如,可具有32位元/64位元混合模式)。
如上述,藉由容許32位元編碼在64位元架構上運行,iPhone 5S也容許反向相容性。這是藉由具有32位元和64位元版本程式庫兩者完成。第一組的32位元程式庫被包括、連接且用於32位元編碼(例如,32位元舊有移動應用程式)。第二組的64位元程式庫被包括、連接且用於64位元編碼。該32位元編碼只能使用32位元程式庫模組。然而,這種方法的潛在缺點是需要繼續提供32位元程式庫讓32位元編碼使用。首先,額外的儲存空間被需要以保存32位元程式庫。特別是對智慧 手機、平板電腦以及其它小型電子裝置,儲存空間的容量通常傾向是有限的。另外,容納32位元程式庫所需要的額外儲存空間,可能傾向於增加該裝置的整體製造成本。
這種方法的另一個潛在缺點是32位元編碼只能使用32位元程式庫而不能使用64位元程式庫。由於32位元程式庫通常並非設計成能夠利用64位元架構資源104(例如,進階架構和/或性能增強資源),這可能傾向於限制性能。這些資源通常不提供給32位元程式庫意欲在其上運行的對應(例如前身)32位元架構處理器。32位元程式庫並非被設計來使用且不能夠使用所有這些64位元架構資源。因此,32位元程式庫通常不能夠實現由於藉由64位元程式庫可實現的64位元架構資源的性能提升。
再次參考圖1,計算機系統包括32位元前往和/或來自64位元(32位元/64位元)相容性模組122的一實施例。32位元/64位元相容性模組是用於32位元和64位元架構的架構間相容性模組的一例子,儘管在其它實施例中可以使用其它架構來代替。在一些實施例中,32位元/64位元相容性模組可以被配置或操作以容許32位元模組116通訊到並使用64位元程式庫模組118(例如C標準程式庫、數學程式庫、GNU C函式庫(glibc)、系統程式庫等)。在一些實施例中,該相容性模組可容許32位元編碼在它的位址空間使用任意的64位元程式庫模組(例如,而不是只侷限在一組特殊模組如WoW64.dll、 WoW64Win.dll、Wow64Cpu.dll或Ntdll.dll中)。32位元/64位元相容性模組可以被配置或操作使各種相容性適當變化,以容許32位元編碼模組使用64位元程式庫模組。例如,這些改變可以包括改變大多數32位元編碼模組的ABI和64位元程式庫模組之間的差異。在一些實施例中,32位元/64位元相容性模組可包括二進制轉換模組。在一些實施例中,32位元/64位元相容性模組可以被配置或操作以使編碼類型執行模式改變(例如在32位元和64位元編碼執行模式之間改變)。在各種不同的實施例中,32位元/64位元相容性模組可以以硬體(例如積體電路、電晶體或其它電路元件等)、韌體(例如唯讀記憶體、可抹除可程式化唯讀記憶體、快取記憶體或其它持久性或非揮發性記憶體和微編碼、微指令或儲存在其中的其它低階指令)、軟體(例如儲存在記憶體中的較高階指令)、或其組合中實現。
有利的是,相容性模組可有助於提供反向相容性並容許32位元編碼模組被執行或在具有64位元作業系統模組的系統中的64位元處理器上運行。由於32位元編碼模組能夠使用64位元程式庫模組,且使用32位元程式庫模組不是必要的,32位元程式庫模組在一些實施例中可選擇地被省略。即在一些實施例中,記憶體和/或計算機系統可以不具有32位元程式庫模組。有利的是,省略了32位元程式庫模組可有助於釋放反之需要儲存它們的儲存空間且/或可藉由需要提供較少的整體儲存空間 量,有助於減少製造系統的成本。特別是對智慧手機、平板電腦和其它相對小的電子裝置,避免需要儲存32位元程式庫模組可提供優點。或者,在其它實施例中,如果需要的話,32位元編碼模組可被包括。在一些實施例中,配合相容性模組的使用,至少一32位元編碼模組可使用至少一64位元程式庫模組,即使其它的32位元編碼模組使用32位元程式庫模組。
有利的是,容許32位元編碼模組使用64位元程式庫模組也可有助於改善性能。例如,64位元程式庫模組和32位元程式庫模組相比,可更能夠善用64位元處理器的64位元架構資源104(例如進階架構和/或性能增強資源)。例如,64位元程式庫模組相較於32位元程式庫模組能夠使用更多的暫存器,64位元程式庫模組能夠經由暫存器而不是如同在32位元程式庫模組中透過堆疊傳遞參數等。其結果是,如果32位元編碼模組能夠具有執行某些所需進程的64位元程式庫模組,而不是32位元程式庫模組,64位元程式庫模組能夠更快執行進程和/或更快傳遞所需結果。如果過去用於執行此進程的32位元程式庫模組被代替,這可有助於改善目前已經可達成的性能。
圖1顯示64位元處理器、64位元作業系統以及64位元和32位元編碼和程式庫模組。然而,本發明的範圍並不如此侷限。在其它實施例中,可以選擇地使用其它架構。例如,在一些實施例中,X位元架構編碼模組可 使用Y位架構程式庫模組,並且可以在使用Y位元架構作業系統的Y位架構處理器上運行,其中X和Y不相同。
為了進一步說明,圖2-4顯示計算機系統的若干其它實施例,其中本發明的實施例可被實施。圖2-4的計算機系統和其元件與圖1的計算機系統有一定的相似性。為了避免混淆說明,這些計算機系統的差異和/或額外特徵和其元件將主要被描述而不重複描述所有的類似特徵。然而,可以理解的是這些計算機系統和元件可具有與圖1的對應元件的相同、相似或對應的特徵。
圖2是具有16位元到和/或來自32位元(16位元/32位元)的相容性模組222的計算機系統200的第二實施例的方塊圖。該計算機系統包括32位元處理器202和記憶體210。該記憶體儲存32位元作業系統模組212、一個以上16位編碼模組216以及32位元程式庫模組218。該16位元/32位元相容模組可容許16位元編碼模組使用32位元程式庫模組。該記憶體還可選擇地儲存一個以上32位元編碼模組(未圖示),其也可以選擇地使用32位元程式庫模組。在一些實施例中,該記憶體和/或該計算機系統還可具有16位元程式庫模組。可替代地,該16位元程式庫模組可選擇地被省略。
圖3是具有64位元到和/或來自128位元(64位元/128位元)的相容性模組322的計算機系統300的第三實施例的方塊圖。該計算機系統包括128位元處理器 302和記憶體310。該記憶體儲存128位元作業系統模組312、一個以上64位編碼模組316以及128位元程式庫模組318。該64位元/128位元相容模組可容許64位元編碼模組使用128位元程式庫模組。該記憶體還可選擇地儲存一個以上128位元編碼模組(未圖示),其也可以選擇地使用128位元程式庫模組。在一些實施例中,該記憶體和/或該計算機系統還可具有64位元程式庫模組。可替代地,該64位元程式庫模組可選擇地被省略。
圖4是具有16位元到和/或來自32位元(16位元/32位元)的相容性模組422的計算機系統400的第四實施例的方塊圖。該計算機系統包括16位元處理器402和記憶體410。該記憶體儲存16位元作業系統模組412、一個以上32位編碼模組416以及16位元程式庫模組418。該16位元/32位元相容模組可容許32位元編碼模組使用16位元程式庫模組。該記憶體還可選擇地儲存一個以上16位元編碼模組(未圖示),其也可以選擇地使用16位元程式庫模組。在一些實施例中,該記憶體和/或該計算機系統還可具有32位元程式庫模組。可替代地,該32位元程式庫模組可選擇地被省略。
這些只是一些額外的例子。其它實施例仍然是預期的。例如,在另一個實施例中,32位元到和/或來自64位元(32位元/64位元)相容性模組可容許64位元編碼模組使用32位元程式庫模組,並且可以在具有32位元作業系統的32位元處理器上運行。為了說明某些概 念,32位元編碼模組、64位元處理器、64位元作業系統以及32位元/64位元相容性模組將經常在圖中被顯示並說明。然而,可以理解的是在其它實施例中,別處描述的其它的架構變化在此是適用的。
圖5是第一架構(例如,32位元)到和/或來自第二架構(例如,64位元)相容性模組522的實施例的方塊圖。該第一架構/第二架構相容性模組可操作以使一個以上第一架構(例如,32位元)編碼模組516相容於並且能夠使用一組第二架構(例如,64位元)程式庫模組518。該第一架構/第二架構相容性模組中,該第一架構編碼模組和該第二架構程式庫模組彼此耦接,或是以其它方式彼此通信。在圖例中,該第一架構編碼模組和該第二架構程式庫模組以虛線顯示,以指示它們並非本發明的一部分。
該相容性模組包括控制流傳遞接收模組530。該控制流傳遞接收模組可被配置或操作來截取或以其它方式接收輸入控制流傳遞操作,例如,如來自第一架構編碼模組的呼叫程序操作,或者來自第二架構程式庫模組的來自程序操作返回。該控制流傳遞接收模組也可被配置或操作以接收一個以上的輸入參數或對應於接收到的輸入控制流傳遞操作的其它參數。例如,這些參數可從堆疊或從用於傳遞這種參數的暫存器中檢索。
該相容性模組還包括ABI轉變模組532。該ABI通常代表兩個程序模組之間的介面,其中之一通常是 程式庫模組或在機器編碼層級的作業系統模組。ABI通常包括詳細信息如尺寸、佈局和資料的校準、功能如何被呼叫、呼叫約定的細節以及信息應如何在程序模組之間傳遞(例如,如何將參數傳遞和返回檢索值)或類似物。例如,該ABI可指定參數是否藉由堆疊或暫存器在模組之間傳遞,其中特定的暫存器被使用,依照參數被放置在堆疊上的順序等。通常在該第一架構(例如,32位元)編碼模組的ABI和該第二架構(例如,64位元)程式庫模組的ABI之間會有至少一些差異。該ABI轉變模組可配置或操作進行更改,以幫助縮小這些ABI之間的差距。該ABI轉變模組可使各種不同類型的ABI改變,這取決於所涉及的特定第一和第二架構和ABI。例如,該ABI轉變模組可使ABI改變需要映射或中繼輸入控制流傳遞操作和其相關聯的參數至對應的輸出控制流傳遞操作和其相關聯的參數。作為一個例子,該ABI轉變模組可使ABI改變需要映射或中繼從該第一架構編碼模組接收的呼叫程序操作至將被輸出到該第二架構程式庫模組的對應的呼叫程序操作的不同的呼叫約定(例如,映射輸入參數可能藉由堆疊提供至在暫存器中傳遞的對應的輸出參數)。在一些實施例中,取決於特定的ABI、資料尺寸或輸入參數的格式也可以被改變至輸出參數的對應的尺寸或格式。作為另一實例,該ABI轉變模組可使ABI改變需要映射或中繼來自從該第二構架庫模組接收的程序操作的返回至將被提供給該第一架構編碼模組的不同呼叫約定程序操作的對應的返 回(例如,映射輸入參數可能在暫存器中傳遞至經由堆疊提供的對應的輸出參數)。
再次參照圖5,該相容性模組還包括處理器模式轉變模組534。該處理器模式轉變模組可被配置或操作以改變該處理器的該編碼類型執行模式,在適當時指示特定類型的編碼被執行(例如,32位元或64位元編碼)。如前面提到的,一些處理器可具有不同的模式,其中這些不同類型的編碼可被執行,雖然這不是必需的。例如,在一些實施例中,64位元處理器可具有第一64位元模式,其容許64位元編碼而不是32位元編碼執行,以及第二32位元模式,其容許32位元編碼執行。在一些情況下,該第二32位元模式還可容許64位元編碼執行,但在其它情況下,該32位元模式可能不容許64位元編碼執行。其它處理器可具有不同的模式(用於並非32位元和/或64位元編碼的編碼),額外模式(例如,用於除了32位元和64位元編碼之外的16位元編碼)等。還有其它處理器不一定為不同類型的編碼具有不同的模式。例如,處理器可選擇地/潛在地具有單一混合模式(例如,32位元/64位元混合模式),其中不同類型的編碼可被執行。在這種情況下,該處理器模式轉變模組可選擇地被省略。
不同類型的處理器可以用不同的方式實現不同編碼類型執行模式。作為一個說明性範例,某些可從加州聖克拉拉的Intel公司取得的64位元處理器,經由編碼區段描述符指出64位元和32位元/64位元混合相容性模 式。該編碼區段描述符用於記憶體分段。記憶體分段通常是指將記憶體分割成區段或部分。查閱記憶體位置或記憶體位址通常包括區段識別符和該識別區段內的偏移量。具體而言,在這些64位元處理器中,該編碼區段描述符具有被稱為L位元的特定位元,用以指示該編碼類型執行模式。根據已採用的慣例,該L位元被清除至二進制0(即0)以指示在64位元模式,其中64位元編碼而非32位元編碼被容許執行。相反地,L位元被設置為二進制1(即1)以指示32位元/64位元混合相容模式,其中32位元編碼與64位元編碼兩者都可執行。
在這種實施例中,編碼類型執行模式經由編碼區段描述符被指示,該處理器模式轉變模組可操作或配置為基於該L位元也就是編碼區段描述符與基於將被執行的編碼在什麼區段等做出模式改變判斷。例如,在一些實施例中,不同類型的編碼可保持在不同區段,雖然在其它實施例中這不是必需的。例如,可能有具有32位元編碼而非64位元編碼的一個以上32位元編碼區段,以及具有64位元編碼而非32位元編碼的一個以上64位元編碼區段。在一個實例中,有單一的32位元編碼區段、用於64位元作業系統編碼的64位元編碼區段,以及用於64位元用戶階層編碼和64位元程式庫的64位元編碼區段,雖然本發明的範圍並不如此侷限。這些32位元和64位元編碼區段可在本機描述符表(LDT)中表示。在這樣的實施例中,在32位元編碼區段和64位元區段之間的所有控制流 傳遞操作,可使用區段間或所謂的「遠」控制流傳遞。換句話說,從執行64位元編碼到執行32位元編碼的轉變,或者從執行32位元編碼到執行64位元編碼,可能只跟隨從另一區段的遠或區段間控制流傳遞發生。在這樣的實施例中,這樣的遠或區段間控制流傳遞操作可被檢查,以了解何時對不同類型編碼做區段之間的傳遞。在這樣的情況下,這可被用來使處理器編碼類型執行模式改變判斷。其它處理器可能表明這種編碼類型執行模式和/或使模式改變判斷不同。
如上述,在一些實施例中,可以有一個以上32位元編碼區段。在一些實施例中,32位元編碼模組(例如,具有舊有編碼)可能已基於平面定址編譯。在平面定址中,編碼和資料區段的基底位址可能已被設置為零。另外,編碼和資料區段皆可能已被設置成40億位元組的極限或最大值。在一些實施例中,具有這些32位元編碼模組的一個以上已創建的32位元編碼區段還可以被配置為使用這種平面定址的方法。這可以幫助避免打破在32位元編碼模組的初始編譯期間所作出的假設和/或重新編譯32位元編碼模組的需求。
再次參照圖5,該相容性模組還包括控制流傳遞輸出模組536。該控制流傳遞輸出模組可以被配置或操作以輸出或提供對應於先前由控制流傳遞接收模組接收的輸入控制流傳遞操作的輸出控制流傳遞操作。該控制流傳遞輸出模組還可以被配置或操作使用適合用於目標或目的 地模組的呼叫約定準則以及根據藉由該ABI轉變模組所做的ABI改變以執行該輸出控制流傳遞操作。舉例而言,該控制流傳遞輸出模組可以輸出呼叫程序操作至對應於藉由該控制流傳遞接收模組從該第一架構編碼模組接收的初始呼叫程序操作的第二架構程式庫模組,且其反映該ABI轉變模組所做的更改。
圖6是具有封套程式庫640的32位元/64位元相容性模組622的實施例的方塊圖。在一些實施例中,該封套程式庫可以對應且反映一個以上對應的給定架構的實際程式庫的620,其在圖示中為32位元程式庫620。在一些實施例中,該封套程式庫可以具有用於在實際程式庫(例如32位元程式庫)的各對應的功能模組的封套模組。在圖示的實施例中,該32位元程式庫包括第一32位元功能模組644-1(例如命名為「餘弦」)至第N32位元功能模組644-N,其中N可以是適用於特定實現的任何數目。同樣地,該封套程式庫包括第一封套模組642-1(例如也命名為「餘弦」)至第N封套模組642-N。該第一32位元功能模組對應於該第一封套模組上至該第N 32位元功能模組對應於第N封套模組。在一些實施例中,該封套程式庫可以包括用於32位元C標準程式庫中的各功能模組的封套模組,用於在一個或一組程式庫中的各功能模組的封套模組(例如32位元執行緒程式庫、32位元數學程式庫、32位元系統程式庫等),雖然本發明的範圍並不如此侷限。在一些實施例中,一組64位元程式庫模組 618(例如64位元程式庫)可具有用於在該32位元程式庫620中的各對應的功能模組的64位元程式庫模組和/或用於在該封套程式庫640中的各封套模組,儘管這不是必需的。
在一些實施例中,該封套程式庫可以截取或從用於32位元程式庫的該32位元編碼模組接收控制流傳遞操作。例如,該32位元編碼模組可發出控制流傳遞操作(例如呼叫程序操作)至該第一32位元功能模組(例如命名為「餘弦」),以及對應的第一封套模組(例如也命名為「餘弦」)可截取該控制流傳輸操作。該封套模組可如本文其它地方描述處理該接收控制流傳遞操作。例如,該圖示的第一封套模組具有控制流傳遞接收模組630、ABI轉變模組632、處理器模式轉變模組634以及控制流傳遞輸出模組636。以上這些可類似於或相同於那些在本文其它地方描述的(例如結合圖5)。
該控制流傳遞輸出模組可以提供對應的或衍生的呼叫程序功能至64位元程式庫模組。在一些實施例中,該封套程式庫還可截取或從64位元程式庫模組接收控制流傳遞操作。例如,該64位元程式庫模組可從程序操作發出回應返回,以及對應的第一封套模組可截取該控制流傳遞操作。該第一封套模組可以處理如前述(例如使ABI改變等)來自程序操作的該接收返回,並從程序操作提供對應的或衍生的返回至該32位元編碼模組。在一些實施例中,該封套模組可以被邏輯地劃分成蹦床模組至來 自呼叫者32位元編碼模組的傳遞控制(例如在呼叫中),64位元程式庫模組,和反向蹦床或返回存根至從該64位元程式庫模組至該32位元編碼模組的傳遞控制(例如在返回中)。
上述實施例關於32位元編碼模組、32位元程式庫、64位元程式庫以及32位元/64位元相容性模組,儘管本發明的範圍並不如此侷限。在其它實施例中,這些參照至該32位元編碼模組、該32位元程式庫、該64位元程式庫以及該32位元/64位元相容性模組可藉由本文其它地方描述的其它架構的變體(例如那些顯示和描述於圖2-4)來置換。
圖7係使用跨定位功能的架構間相容性模組的封套程式庫截取控制流傳遞的方法750的實施例的方塊流程圖。在一些實施例中,該方法可以用圖6的封套程式庫640執行。替代地,類似的或不同的封套程式庫可選擇地被使用。
在方塊751,該方法包括在一個以上其它程式庫被搜尋之前配置被用以搜尋功能模組的該封套程式庫。例如,這可以包括在64位元程式庫被用以搜尋該功能模組之前和/或在可選的32位元程式庫(如果32位元程式庫存在)被用以搜尋該功能模組之前,配置被用以搜尋功能模組的該封套程式庫。選擇地,該封套程式庫可以被配置為在任何其它程式庫被搜尋之前被搜尋。在一些實施例中,配置該封套程式庫在一個以上其它程式庫之前被搜 尋,可以藉由利用動態連接器模組搜尋功能的順序來完成。通常,該動態連接器模組可以依照該程式庫已裝載的順序在該程式庫中搜尋運行中的功能。如果第一程式庫在第二程式庫之前被裝載,然後該動態連接器模組可以在第二程式庫中搜尋所期望的功能之前,在第一程式庫搜尋所期望的功能。因此,該封套程式庫可在任何其它該封套程式庫意於或期望優先搜尋的程式庫之前被裝載。在一些實施例中,這可以藉由預先裝載該封套程式庫完成,例如,如藉由使用LD_PRELOAD指令。可替代地,也可以使用裝載該封套程式庫的其它方式。在一觀點中,該封套程式庫可以被預先裝載或在來自涉及期望被封套模組截取的程式庫模組的編碼模組的該第一控制流傳遞操作之前被裝載。
在方塊752中,該方法包括接收企圖來自用於一組32位元程式庫模組的32位元功能模組的該32位元編碼模組的控制流傳遞舉例而言,這可以包括接收指示特定的32位元程式庫功能模組(例如,具有特定功能的名稱)的呼叫程序操作。
在方塊753中,該方法包括搜尋該封套程式庫(例如,在搜尋該32位元程式庫模組之前和/或在搜尋該64位元程式庫模組之前,如果它們存在),並判斷對應於該32位元功能模組的封套模組。在一些實施例中,所識別的封套模組可以具有與期望的實際程式庫模組相同的功能名稱(例如,32位元程式庫模組)。例如,該封 套程式庫可以被用以搜尋名為「餘弦」的32位元程式庫功能模組且也被稱為「餘弦」的封套模組可以被識別。可替代地,映射表或提供封套模組和32位元程式庫功能模組之間除了基於他們的命名之外的對應關係的其它方式,可以選擇地被使用。
在方塊754中,該方法包括將控制流傳遞至所識別的封套模組。有利的是,由於該封套程式庫被配置在一個以上其它程式庫之前被搜尋,該控制流傳遞是到所識別的封套模組,而不是實際程式庫模組。該封套模組實質上是邏輯處理或在32位元編碼模組和實際程式庫模組之間的介入。
在方塊755中,該封套模組使得該試圖控制流傳遞至與到一個以上64位元功能模組的控制流傳遞相容的該32位元功能模組。這可以如在本文別處所述被完成。例如,輸入參數可以被映射到輸出參數,可能做出其它ABI變化,可能符合輸出呼叫約定等。
在方塊756中,該封套模組使該控制流傳遞至一個以上64位元功能模組。例如,該封套模組可以提供對應及通常反映於在方塊752中該控制流傳遞嘗試接收的控制流傳遞操作。
上述方法是關於32位元編碼模組、32位元程式庫功能模組和64位元程式庫功能模組,儘管本發明的範圍並不如此侷限。在其它實施例中,這些參照至該32位元編碼模組、該32位元程式庫功能模組和該64位元程 式庫功能模組可以藉由本文別處所述其它架構的變體所取代(例如圖2~4所顯示及所述的)。
圖8是計算機系統800的方塊圖,其具有被配置或操作藉由存取運行時架構868以判斷在不同類型的編碼816、818之間傳輸的架構間相容性模組822。該計算機系統具有位址空間860。該位址空間包括不同類型的編碼816、818。在圖示的實施例中,這些不同類型的編碼包括32位元編碼模組816和64位元編碼模組818,儘管本發明的範圍並不如此侷限。因此,在一些實施例中,兩種以上不同類型的編碼(例如,32位元和64位元編碼)可以被包括或混合在相同位址空間中。傳統上,通常不將這些不同類型的編碼模組包括在同一位址空間中。該32位元編碼模組具有指示該32位元編碼類型的標頭862。同樣地,該64位元編碼模組具有指示該不同64位元編碼類型的標頭864。標頭的適合類型的一個可能的例子是可執行和可連接格式(ELF)標頭。
該計算機系統還包括運行時或動態加載器模組866。該動態加載器模組可以具有二進制可執行的運行時加載的功能。該運行時加載器模組容許兩種以上不同類型的編碼(例如32位元編碼與64位元編碼)被包括或混合在相同位址空間。傳統的運行時程式庫,如運行時加載器,通常不容許這樣不同類型的編碼被包括或混合在相同位址空間中。該運行時加載模組具有運行時架構868(例如,資料架構)。該運行時加載模組可以被配置或操作在 加載編碼或程式庫模組到位址空間的時候,追踪編碼或程式庫模組的類型(例如,不論是32位元或64位元)。例如,該運行時加載器模組可以存取該32位元和該64位元編碼模組的該標頭862、864,並判斷所指示的編碼類型。該運行時加載器模組可在運行時儲存編碼類型869。該運行時加載器模組還可以選擇地儲存編碼位址870(例如,該編碼部分的基底運行時位址)和/或在運行時架構中的編碼大小871,儘管這不是必需的。在一些實施例中,其它系統二進制模組其構成該運行時加載器模組866和/或其有助於實現動態加載的各方面也可以被修改。例如,連接器、加載器和glibc可以被修改以容許不同類型的編碼被包括或混合在相同位址空間。舉例而言,這樣的模組可以被修改以介面到和利用該運行時架構868和該編碼類型869。
再次參考圖8,該計算機系統還包括架構間相容性模組822。在圖示的例子中,該相容性模組是32位元/64位元相容性模組,儘管本發明的範圍並不如此侷限。該32位元/64位元相容性模組包括處理器模式轉變模組834。該處理器模式轉變模組和/或32位元/64位元相容性模組係與該運行時加載模組和/或該運行時架構耦接或通信。該處理器模式轉變模組和/或32位元/64位元相容性模組也與處理器的編碼類型執行模式806耦接或通信。
在一些實施例中,該32位元/64位元相容性 模組822可以被配置或操作藉由存取該運行時架構868,以判斷是否控制流傳遞是位於不同類型編碼之間,例如在32位元和64位元編碼之間。例如,該相容性模組可以使用該運行時架構以判斷正在被執行的控制流傳遞的目標編碼是否為32位元或64位元編碼。在一些實施例中,每當控制流傳遞操作被執行時(或在一些實施例中,每當遠距或區段間控制流傳遞操作被執行時),該處理器模式轉變模組可以在運行時架構中存取該編碼類型869。在一些實施例中,該相容性模組可接收所述的控制流傳遞操作的指示872。該處理器模式轉變模組可以被操作以使用這些編碼類型來判斷在目標位置的編碼類型是否與目前編碼類型一樣和/或是否該處理器的目前編碼類型執行模式806需要被改變。
本文所述的該架構間相容性模組可以在不同實施例中以不同的方式來實現。為了進一步說明某些概念,研究架構間相容性模組可以在64位元版本的Android環境中實現的一種可能方式的例子的進一步細節,可能是有幫助的。Android是基於大多用於觸控螢幕移動裝置如智慧手機和平板電腦的Linux核心的作業系統。該預期的64位元Android環境中可能包括Android架構的64位元ABI相容版本(Dalvik、zygote、系統程式庫如libc等)以及在64位元處理器上運行的Linux核心。該64位元ABI相容的Dalvik,其為Android的程序虛擬機器,可以包括Dalvik的能力來處理JNI(Java本機介面)呼叫至 64位元程式庫並生成64位元JIT(及時)編碼。
有不同類型的Android應用程式。其中一種類型是純粹Java應用程式。純粹Java應用程式只包含Java位元組編碼,但沒有本機或架構特定編碼。Android可以藉由呼叫該Dalvik虛擬機器以執行這樣的純粹Java應用程式。通常,純粹Java應用程式可以在不進一步修改Android環境下執行。
另一種類型的Android應用程式是本機應用程式。本機應用程式包含本機或架構特定編碼。例如,本機應用程式可以同時擁有Java位元組編碼和本機編碼。數學程式庫、圖形程式庫、系統程式庫、C標準程式庫等,可能屬於這一類別。該本機編碼可以使用Java的JNI(Java本機介面)技術來執行。例如,該本機應用程式可以使用該JNI介面來呼叫本機方法。該本機方法的呼叫可以使用位於Dex檔案的invoke_direct Dalvik位元組編碼來表示。該invoke_direct可以引起具有參數的方法和/或指示方法來呼叫。在一些實施例中,在Dalvik中該invoke_direct位元組編碼的實現方式可以被修改以容許跨架構操作性和相容性(例如,容許32位元編碼模組使用64位元程式庫模組和64位元ABI)。
為了進一步說明,考慮用以實現Dalvik中invoke_direct位元組編碼的代表性呼叫堆疊流程。當應用程式呼叫本機程式庫模組,Dalvik使用System.loadLibrary呼叫以加載本機程式庫模組至該位址 空間。接著Dalvik的System.loadLibrary呼叫進入Runtime.loadLibrary。Runtime.loadLibrary接著對nativeLoad做一個JNI呼叫。然後,nativeLoad呼叫dvmLoadNativeCode。dvmLoadNativeCode這個模組實現LoadLibrary的核心。例如,傳統上,dvmLoadNativeCode將加載32位元本機程式庫模組以回應來自32位元編碼模組的呼叫至32位元本機程式庫模組。
在一些實施例中,如本文別處所述invoke_direct可被修改以容許跨架構操作性和相容性。例如,invoke_direct可被修改以容許32位元編碼模組以使用64位元程式庫模組和64位元ABI(例如,映射32位元本機程式庫模組的呼叫到64位元本機程式庫模組的呼叫)。例如,該invoke_direct可以被修改以截取來自用於32位元本機程式庫模組的32位元編碼模組(例如,移動應用程式程序)的呼叫,並進行適當的ABI轉變以映射該接收的呼叫到對應的輸出呼叫至64位元本機程式庫模組。在一些實施例中,invoke_direct可選擇地包括具有如本文別處描述特性的封套模組,儘管這不是必需的。在一些實施例中,本機程式庫模組被搜尋的順序可被控制,以使封套模組首先被辨識(例如,在32位元本機程式庫模組和/或64位元程式庫模組之前)。例如,至封套模組的路徑的優先順序可以被給予相較於至32位元和64位元本機程式庫模組的路徑較高的優先權。這可以被用於容許封套模組截取呼叫(例如,32位元程式庫模組)。
在一些實施例中,dvmLoadNativeCode也可以被修改以持續追踪正在被執行(例如,實現處理器編碼類型執行模式開關)的編碼類型(例如,32位元編碼或是64位元編碼)。例如,dvmLoadNativeCode可被修改以包括和使用運行時架構和/或編碼類型信息(例如,類似於圖8中的編碼類型869)。
示範性的核心架構、處理器和計算機架構
處理器核心可以用不同的方式來實現,用於不同的目的以及在不同的處理器。例如,這種核心的實現可以包括:1)用於一般用途計算的一般用途循序核心;2)用於一般用途計算的高性能的一般用途亂序核心;3)主要用於圖形和/或科學(生產量)計算的特殊用途核心。不同處理器的實現方式可以包括:1)中央處理器包括一個以上用於一般用途計算的一般用途循序核心和/或一個以上用於一般用途計算的一般用途亂序核心;和2)協同處理器包括一個以上主要用於圖形和/或科學(生產量)的特殊用途核心。這樣不同的處理器導致不同的計算機系統架構,其可包括:1)在從中央處理器獨立的晶片上的協同處理器;2)在與中央處理器相同封裝的獨立晶片上的協同處理器;3)在與中央處理器相同晶片上的協同處理器(在此情況下,這樣一個協同處理器時有時被稱為特殊用途邏輯,諸如積體圖形和/或科學(生產量)邏輯,或者作為特殊用途核心);及4)系統單晶片,其可 以在同一晶片包括所述中央處理器(有時被稱為應用核心或應用處理器)、上述協同處理器以及額外的功能。示範性的核心架構將接著描述,再接著示範性的處理器和計算機架構的描述。
示範性的核心架構
循序和亂序核心方塊圖
圖9A是顯示根據本發明的實施例的示範性的循序管線和示範性的暫存器重命名,亂序發送/執行管線的方塊圖。圖9B是顯示根據本發明的實施例的循序架構核心和示範性的暫存器重命名和被包括在處理器中的亂序發送/執行架構核心的方塊圖。在圖9A~B中的實線框顯示該循序管線和循序核心,而可選的另外的虛線框顯示暫存器重命名,亂序發送/執行管線和核心。鑑於該循序方面是該亂序方面的一個子集,該亂序方面將進行說明。
在圖9A中,處理器管線900包括提取階段902、長度解碼階段904、解碼階段906、分配階段908、重命名階段910、排程(也稱為調度或發送)階段912、暫存器讀取/記憶體讀取階段914、執行階段916、回寫/記憶體寫入階段918、異常處理階段922和提交階段924。
圖9B顯示了包括耦接到執行引擎單元950的前端單元930和皆耦接到記憶體單元970的處理器核心990。該核心990可以是精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令字組(VLIW) 核心、或混合的或替代的核心類型。作為另一種選擇,核心990可以是特殊用途的核心,例如,如網路或通信核心、壓縮引擎、協同處理器核心、一般用途計算圖形處理單元(GPGPU)核心、圖形核心或類似物。
該前端單元930包括耦接到指令快取記憶體單元934的分支預測單元932,其耦接到指令轉譯後備緩衝區(TLB)936,其耦接到指令提取單元938,其耦接到解碼單元940。該解碼單元940(或解碼器)可以解碼指令並產生作為輸出的一個以上微運算、微編碼登錄點、微指令、其它指令或其它控制信號,其從該原始指令解碼,或反映該原始指令或源自該原始指令。該解碼單元940可使用各種不同的機制來實現。合適機制的例子包括但不限於查找表、硬體實現、可程式邏輯陣列(PLA)、微編碼唯讀記憶體(ROM)等。在一個實施例中,該核心990包括微編碼ROM或其它媒體,其儲存用於某些巨集指令的微編碼(例如,在解碼單元940或在前端單元930)。該解碼單元940被耦接到在執行引擎單元950中的重命名/分配器單元952。
該執行引擎單元950包括耦接到失效單元954和一組一個以上排程器單元956的重命名/分配器單元952。該排程器單元956表示任何數目的不同排程器,包括保留站、中央指令窗口等。該排程器單元956耦接到物理暫存器檔案單元958。各物理暫存器檔案單元958代表一個以上物理暫存器檔案,其中不同的物理暫存器檔案儲 存一個以上不同的資料類型,如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,指令指標是下一個將被執行指令的位址)等。在一個實施例中,物理暫存器檔案單元958包括向量暫存器單元、寫入遮罩暫存器單元和純量暫存器單元。這些暫存器單元可以提供架構向量暫存器、向量遮罩暫存器和一般用途暫存器。物理暫存器檔案單元958被失效單元954重疊以說明暫存器重命名和亂序執行可以被實現的各種方式(例如,利用重排序緩衝器和失效暫存器檔案;利用未來檔案、歷史緩衝器和失效暫存器檔案;利用暫存器映射和暫存器池;等)。該失效單元954和物理暫存器檔案單元958耦接到執行群集960。該執行群集960包括一組一個以上執行單元962和一組一個以上記憶體存取單元964,該執行單元962可以執行各種操作(例如,移位、加、減、乘)且在不同類型的資料上(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。而一些實施例可以包括專用於特定功能或功能組的若干執行單元,其它實施例可僅包括一個執行單元或皆執行所有功能的複數執行單元。排程器單元956、物理暫存器檔案單元958及執行群集960顯示可能為複數,因為某些實施例中對某些類型的資料/操作創建單獨的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線和/或記憶體存取管線,其各自具有排程器單元、物理暫存器檔案單元和/或執行群集,並在一個單獨的記憶體存取管線的情 況下,某些實施例中被實現,其中只有該管道的執行群集具有記憶體存取單元964)。還應該理解的是,其中單獨的管線被使用,一個以上這些管道可以是亂序發送/執行而其餘是循序。
該組記憶體存取單元964耦接到記憶體單元970,其包括耦接到資料快取單元974的資料轉譯後備緩衝區單元972,資料快取單元974耦接到第2階(L2)快取記憶體單元976。在一個示範性的實施例中,記憶體存取單元964可以包括負載單元、儲存位址單元和儲存資料單元,其中各耦接到在記憶體單元970中的資料轉譯後備緩衝區單元972。指令快取記憶體單元934更耦接到在記憶體單元970中的第2階(L2)快取記憶體單元976。L2快取記憶體單元976耦接到一個以上其它階層的快取記憶體且最後到主記憶體。
舉例而言,示範性的暫存器重命名、亂序發送/執行核心架構可實現該管道900如下:1)該指令提取單元938執行提取與長度解碼階段902和904;2)該解碼單元940執行解碼階段906;3)該重命名/分配器單元952執行該分配階段908和重命名階段910;4)該排程器單元956執行該排程階段912;5)該物理暫存器檔案單元958和該記憶體單元970執行該暫存器讀取/記憶體讀取階段914;該執行群集960執行該執行階段916;6)該記憶體單元970和該物理暫存器檔案單元958執行回寫/該記憶體寫入階段918;7)各種單元可能參與該異常處 理階段922;8)該失效單元954和該物理暫存器檔案單元958執行提交階段924。
核心990可以支持一個以上指令集(例如,x86指令集(具有新版本已經加入的一些擴充);加州桑尼維爾的MIPS科技的MIPS指令集;加州桑尼維爾的ARM控股的ARM指令集(具有可選的如NEON額外擴充),其包括本文所述的指令。在一個實施例中,核心990包括邏輯以支持緊縮資料指令集擴充(例如,AVX1、AVX2),由此容許被使用緊縮資料執行的多數多媒體應用程式使用的運算。
應當理解的是,該核心可以支持多執行緒(執行兩個以上平行運算集或執行緒),並且可以多種方式這樣做,其包括分時多執行緒、同步多執行緒(其中單一物理核心為物理核心為同步多執行緒的各執行緒提供邏輯核心),或者其組合(例如,分時提取和解碼和此後的同步多執行緒,如英特爾超執行緒技術)。
而暫存器重命名是在亂序執行的內容中描述,應當理解的是,暫存器重命名可以被使用在循序架構中。儘管所示的處理器的實施例還包括分離指令和資料快取記憶體單元934/974和共享L2快取記憶體單元976,可替換實施例可以具有用於指令和資料兩者的單一內部快取記憶體,例如,如第一階(L1)內部快取記憶體,或多階內部快取記憶體。在一些實施例中,該系統可以包括內部快取記憶體和該核心和/或該處理器外部的外部快取記憶 體的組合。可替代地,所有的快取記憶體可以是在核心和/或處理器之外部。
具體示範性的循序核心架構
圖10A-B顯示循序核心架構更具體示例的方塊圖,其核心將是在晶片中數個邏輯方塊之一(包括相同類型和/或不同類型的其它核心)。該邏輯方塊藉由高頻寬互連網路(例如,環形網路)與某些固定功能邏輯、記憶體I/O介面和其它取決於應用必要的I/O邏輯通信。
圖10A是根據本發明的實施方式的單一處理器核心,連同其連接到晶片上的互連網路1002與其第2階(L2)快取記憶體的區域子集1004的方塊圖。在一個實施例中,指令解碼器1000支援具有緊縮資料指令集擴充的x86指令集。L1快取記憶體1006容許低延遲時間存取快取記憶體內純量和向量單元。而在一個實施例中(為了簡化設計),純量單元1008和向量單元1010使用單獨的暫存器組(分別為純量暫存器1012和向量暫存器1014)和在它們之間傳輸的資料被寫入到記憶體中,然後從第1階(L1)快取記憶體1006讀回,本發明的替代實施例可使用不同的方法(例如,使用單一暫存器組或包括容許資料在兩個暫存器檔案之間傳送而不會被寫入和讀回的通信路徑)。
L2快取記憶體的區域子集1004是整體L2快取記憶體的一部分,其被分割成單獨的區域子集,各處理 器核心一個。各處理器核心具有直接存取路徑至它自己的L2快取記憶體的區域子集1004。被處理器核心讀取的資料被儲存在其L2快取記憶體子集1004,並且可以迅速地被存取,平行地與其它處理器核心存取他們自己的區域L2快取記憶體子集。被處理器核心寫入的資料被儲存在它自己的L2快取記憶體子集1004且如果需要的話將從其它子集被清除。該環形網路確保共享資料的一致性。該環形網路是雙向的以容許代理如處理器核心、L2快取記憶體和其它邏輯方塊在該晶片內彼此通信。各環形資料路徑是每個方向1012位元寬。
圖10B是根據本發明實施例,圖10A中該處理器核心的一部分的展開圖。圖10B包括該L1快取記憶體1004的一部分L1資料快取記憶體1006A,以及更詳細的有關該向量單元1010和該向量暫存器1014。具體地,該向量單元1010是寬為16的向量處理單元(VPU)(見寬為16的算術邏輯單元1028),其執行一個以上整數、單精度浮點和雙精度浮點指令。該VPU支援以混合單元1020混合暫存器輸入、以數值轉換單元1022A-B進行數值轉換和以記憶體輸入上的複製單元1024進行複製。寫入遮罩暫存器1026容許預測結果向量寫入。
具有積體記憶體控制器和圖形的處理器
圖11係根據本發明的實施例可具有一個以上核心、可具有積體記憶體控制器且可具有積體圖形的處理 器1100的實施例之方塊圖。圖11中的實線框顯示了處理器1100具有單一核心1102A、系統代理1110、一組一個以上匯流排控制器單元1116,而可選的額外虛線框顯示了具有複數核心1102A-N的替代處理器1100、系統代理單元1110中的一組一個以上積體記憶體控制單元1114以及特殊用途邏輯1108。
因此,該處理器1100的不同實現可以包括:1)中央處理器,其具有特殊用途邏輯1108其為積體圖形和/或科學(生產量)邏輯(其可以包括一個以上核心)以及核心1102A-N是一個以上一般用途核心(例如,一般用途循序核心、一般用途亂序核心、這兩者的組合);2)協同處理器,其具有主要用於圖形和/或科學(生產量)的大量特殊用途核心的核心1102A-N;和3)協同處理器,其具有大量一般用途循序核心的核心1102A-N。因此,該處理器1100可以是一般用途處理器、協同處理器或特殊用途處理器,例如,如網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(一般用途圖形處理單元)、高生產量多積體核心(MIC)協同處理器(包括30個或更多的核心)、嵌入式處理器或類似物。該處理器可以在一個以上晶片上被實現。該處理器1100可以為一部分和/或在一個以上使用任意數量的製程技術的基底上實現,例如,如雙極性互補式金氧半導體、互補式金氧半導體或N型金氧半導體。
該記憶體階層包括在該核心中一個以上階層 的快取記憶體、一組或一個以上共享快取記憶體單元1106和耦接到一組積體記憶體控制器單元1114的外部記憶體(未圖示)。該組共享快取記憶體單元1106可以包括一個以上中間階層快取記憶體,諸如第2級(L2)、第3級(L3)、第4級(L4)或其它階層的快取記憶體、末階快取記憶體(LLC)和/或其組合。而在一個實施例中,環型互連單元1112互連該積體圖形邏輯1108、該組共享快取記憶體單元1106以及該系統代理單元1110/積體記憶體控制器單元1114,可選的實施例可使用任何數量的眾所皆知的技術互連這些單元。在一個實施例中,一致性在一個或一個以上的快取記憶體單元1106和核心1102A-N之間被維持。
在一些實施例中,一個以上核心1102A-N能夠多緒執行。該系統代理1110包括這些協調和運行核心1102A-N的元件。該系統代理單元1110可以包括例如功率控制單元(PCU)和顯示單元。該PCU可以是或包括需要調節核心1102A-N和該積體圖形邏輯1108的功率狀態的邏輯和元件。該顯示單元是用於驅動一個以上外部連接顯示器。
該核心1102A-N可以是就架構指令集而言是同質或非同質;即兩個以上核心1102A-N可以能夠執行相同的指令集,而其它可能只能夠執行該指令集的一個子集或不同的指令集。
示範性的計算機架構
圖12-15是示範性的計算機架構的方塊圖。在該領域已知的其它系統的設計和架構為筆記型電腦、桌上電腦、手持電腦、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換機、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微控制器、蜂巢式電話、可攜式媒體播放器、手持裝置以及其它各種電子裝置,也是適用的。在一般情況下,各種各樣的系統或電子裝置能夠結合如本文所揭露的處理器和/或其它執行邏輯通常是適用的。
現在參考圖12,其顯示根據本發明一個實施例的系統1200的方塊圖。該系統1200可以包括一個以上處理器1210、1215,其耦接到控制器集線器1220。在一個實施例中,該控制器集線器1220包括圖形記憶體控制器集線器(GMCH)1290和輸入/輸出集線器(IOH)1250(其可能是在單獨的晶片上);該GMCH 1290包括記憶體和耦接到記憶體1240和協同處理器1245的圖形控制器;該IOH 1250係耦接輸入/輸出(I/O)裝置1260到該GMCH 1290。可替換地,該記憶體和圖形控制器其一或兩者都整合在處理器內(如本文所述),該記憶體1240和該協同處理器1245直接耦接到該處理器1210以及該控制器集線器1220在具有該IOH 1250的單一晶片中。
額外的處理器1215的可選性質在圖12中以 虛線表示。各處理器1210、1215可以包括一個以上在此描述的處理核心且可以是該處理器1100的一些版本。
該記憶體1240可以例如是,動態隨機存取記憶體(DRAM)、相變記憶體(PCM),或者是兩者的組合。至少一個實施例中,該控制器集線器1220與該處理器1210、1215經由多點匯流排,諸如前端匯流排(FSB)、點對點介面,如快速路徑互連(QPI)或類似的連接1295通信。
在一個實施例中,協同處理器1245是特殊用途處理器,例如,如高生產量的MIC處理器、網路或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似物。在一個實施例中,控制器集線器1220可以包括積體圖形加速器。
就指標度量的範圍包括架構、微架構、熱力,功率消耗特性等而言,該物理資源1210,1215之間可以有各種的差異。
在一個實施例中,該處理器1210執行控制一般類型的資料處理運算的指令。嵌入該指令的可能是協同處理器指令。該處理器1210識別應該由附加的協同處理器1245執行的類型的這些協同處理器指令。於是該處理器1210在協同處理器匯流排或其它互連上發出這些協同處理器指令(或表示協同處理器指令的控制信號)至協同處理器1245。協同處理器1245接受並執行接收到的該協同處理器指令。
現在參考圖13,其顯示的是根據本發明的實施例的更具體的第一示範性系統1300的方塊圖。如圖13所示,多處理器系統1300是點對點互連系統,並且包括經由點對點互連1350耦接的第一處理器1370和第二處理器1380。處理器1370和1380各自可以是處理器1100的一些版本。在本發明的一個實施例中,處理器1370及1380分別為處理器1210和1215,而協同處理器1338為協同處理器1245。在另一實施例中,處理器1370及1380分別為處理器1210和協同處理器1245。
處理器1370和1380被顯示,其分別包括積體記憶體控制器(IMC)單元1372和1382。處理器1370還包括作為其匯流排控制器單元點對點(P-P)介面1376和1378的一部分;類似地,第二處理器1380包括P-P介面1386和1388。處理器1370、1380可以利用P-P介面電路1378、1388經由點對點(P-P)界面1350交換信息。如圖13所示,IMCs 1372和1382耦接該處理器到各自的記憶體,即記憶體1332和記憶體1334,其可以是區域地附加到各自的處理器的主記憶體的一部分。
處理器1370、1380可以各自利用點對點介面電路1376、1394、1386、1398經由個別的點對點介面1352、1354與晶片組1390交換信息。晶片組1390可以經由高性能介面1339可選地與該協同處理器1338交換信息。在一個實施例中,該協同處理器1338是特殊用途處理器,例如,如高生產量的MIC處理器、網路或通信處 理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似物。
共享快取記憶體(未圖示)可以包括在任一個處理器內或兩個處理器的外部,但經由P-P互連與該處理器連接,使如果處理器被置入低功率模式時,任一個或兩個處理器的區域快取記憶體的信息可被儲存在共享快取記憶體中。
晶片組1390可以經由介面1396耦接到第一匯流排1316。在一個實施例中,第一匯流排1316可以是周邊元件互連(PCI)匯流排,或匯流排諸如快速週邊組件互連(PCI Express)匯流排或另一種第三代輸入/輸出互連匯流排,儘管本發明的範圍並不如此侷限。
如圖13所示,各種輸入/輸出裝置1314可以耦接到第一匯流排1316,連同耦接第一匯流排1316的匯流排橋1318到第二匯流排1320。在一個實施例中,一個以上額外處理器1315,諸如協同處理器、高生產量的MIC處理器、GPGPU、加速器(例如,如圖形加速器或數位信號處理(DSP)單元)、場效可程式化閘陣列或任何其它的處理器,耦接到第一匯流排1316。在一個實施例中,第二匯流排1320可以是低接腳數(LPC)匯流排。在一個實施例中,各種裝置可以耦接到第二匯流排1320包括,例如鍵盤和/或滑鼠1322、通信裝置1327和儲存單元1328,如磁碟機或其它大容量儲存裝置,其可以包括指令/編碼和資料1330。此外,音頻輸入/輸出1324可耦 接到該第二匯流排1320。須注意的是,其它架構也是可能的。例如,代替圖13的點對點架構,系統可以實現多點匯流排或其它這種架構。
現在參考圖14,顯示根據本發明實施例的第二更具體的示範性系統1400的方塊圖。在圖13和圖14中相似的元件具有相似的參考標號,圖13的某些方面已經從圖14中被刪去,以避免模糊圖14的其它方面。
圖14顯示該處理器1370、1380可以個別地包括積體記憶體和輸入/輸出控制邏輯(「CL」)1372和1382。因此,該CL 1372、1382包括積體記憶體控制器單元和包括輸入/輸出控制邏輯。圖14顯示,不僅是該記憶體1332,1334耦接到該CL 1372、1382,輸入/輸出裝置1414也耦接到該積體記憶體和輸入/輸出控制邏輯1372、1382。舊有輸入/輸出裝置1415耦接到晶片組1390。
現在參考圖15,顯示根據本發明實施例的系統晶片1500的方塊圖。在圖11中相似的元件具有相似的參考標號。另外,虛線框是更進階的系統晶片上的可選特性。在圖15中,互連單元1502被耦接到:應用處理器1510,其包括一組一個以上核心202A-N和共享快取記憶體單元1106;系統代理單元1110;匯流排控制器單元1116;積體記憶體控制器單元1114;一組或一個以上協同處理器1520其可包括積體圖形邏輯、圖像處理器、音頻處理器和視頻處理器;靜態隨機存取記憶體(SRAM)單元1530;直接記憶體存取(DMA)單元1532;及用於 耦接到一個以上外部顯示器的顯示單元1540。在一個實施例中,該協同處理器1520包括特殊用途處理器,例如,如網路或通訊處理器、壓縮引擎、GPGPU、高生產量1MIC處理器、嵌入式處理器或類似物。
本文揭露的機制的實施例可以用硬體、軟體、韌體或這些實現方式的組合來實現。本發明的實施例可以被實現為計算機程式或在包括至少一個處理器、儲存系統(包括揮發性和非揮發性記憶體和/或儲存元件)、至少一個輸入裝置以及至少一個輸出裝置的可程式化系統上執行的程式編碼。
程式編碼,諸如在圖13所顯示的編碼1330,可以應用到輸入指令以執行本文所述的功能並生成輸出信息。該輸出信息可以用已知的方式應用於一個以上輸出裝置。本申請的目的,處理系統包括具有處理器的任何系統,例如,如數位信號處理器(DSP)、微控制器、特殊用途積體電路(ASIC)或微處理器。
該程式編碼可以用高階程序或物件導向程式語言來實現,以與處理系統進行通信。如果需要的話,該程式編碼還可以用組合或機器語言來實現。事實上,本文中描述的機制並不限於在任何特定的程式語言的範圍。在任何情況下,該語言可以已編譯或已直譯的語言。
至少一個實施例中的一個以上觀點可以由儲存在代表處理器中各種邏輯的機器可讀媒體上的代表性指令被實現,其中,當由機器讀取,使該機器製造邏輯以執 行本文所描述的技術。這樣的表示,被稱為「IP核心」可以被儲存在實體的機器可讀媒體和供給到各種客戶或生產設施以加載到該製造機器,其實際上構成該邏輯或處理器。
這樣的機器可讀儲存媒體可以包括,但不限於,非暫態的、製品的實體安排或由機器或裝置形成,包括儲存媒體,諸如硬碟、任何其它類型的磁碟包括軟碟、光碟、唯讀光碟(CD-ROM)、可抹寫光碟(CD-RW)和光磁碟、半導體裝置,諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM),如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電子可抹除可程式化唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁卡或光卡,或者任何其它適於儲存電子指令的媒體類型。
因此,本發明的實施例還包括非暫態的、實體的機器可讀媒體,其包含指令或包含設計資料,如硬體描述語言(HDL),其定義本文中所述的架構、電路、裝置,處理器和/或系統特徵。此類實施例也可以關於程式產品。
模擬(包括二進制翻譯、編碼變形等)
在某些情況下,指令轉換器可用於將指令從來源指令集轉換至目標指令集。例如,該指令轉換器可以轉換(例如,使用靜態二進制轉換、包括動態編譯的動態 二進制轉換)、變形、模擬或轉換指令至一個以上由核心處理的其它指令。該指令轉換器可以用軟體、硬體、韌體或其組合來實現。該指令轉換器可以是在處理器上、不在處理器上或部分在處理器上和部分不在處理器上。
圖16是根據本發明實施例的方塊圖,其對比使用軟體指令轉換器用以轉換在來源指令集的二進制指令至在目標指令集的二進制指令。在所示實施例中,該指令轉換器是軟體指令轉換器,雖然可替代地,該指令轉換器可以用軟體、韌體、硬體或其各種組合來實現。圖16顯示高階語言1602的程式可以使用x86編譯器1604被編譯以生成x86的二進制編碼1606,其可被具有至少一個x86指令集核心的處理器1616本機地執行,該具有至少一個x86指令集核心的處理器1616代表任何處理器,其可藉由相容地執行或處理,執行如具有至少一個x86指令集核心的英特爾處理器大致上相同的功能(1)英特爾x86指令集核心的指令集的重要部分或(2)應用程式的目標編碼版本或目標為在具有至少一個x86指令集核心的英特爾處理器上運行的其它軟體,以實現如具有至少一個x86指令集核心的英特爾處理器大致上相同的結果。該x86編譯器1604代表一個編譯器,其可操作以產生x86二進制碼1606(例如,目標碼),其可具有或不具有額外的關聯處理,在具有至少一個x86指令集核心的處理器1616上執行。類似地,圖16顯示高階語言1602的程式可以使用替代指令集編譯器1608被編譯,以產生替代性的指令集二 進制編碼1610,其可由不具有x86指令集核心的處理器1614本機地執行(例如,具有執行加州桑尼維爾的MIPS科技的MIPS指令集和/或執行加州桑尼維爾的ARM控股公司的ARM指令集的核心的處理器)。該指令轉換器1612被用以轉換該x86二進制編碼1606至可由不具有x86指令集核心的處理器1614本機地執行的編碼,這種轉換後的編碼是不太可能與該替代指令集二進制編碼1610一樣,因為能夠這樣的指令轉換器很難製造;然而,該轉換後的編碼將完成一般運算並組成來自替代指令集的指令。因此,該指令轉換器1612代表軟體、韌體、硬體或其組合,藉由模仿、模擬或任何其它程序,容許處理器或其它不具有x86指令集的處理器或核心的電子裝置來執行x86二進制編碼1606。
元件、特徵以及為圖6-8中任一個所描述的細節也可選擇地在圖1-5中任一個使用。此外,元件、特徵和為在此描述的任何裝置所在此描述的細節,也可以選擇地被用在和/或應用於任何在此描述的方法,其在實施例中可以藉由和/或與這樣的裝置來執行。本文所述的任何處理器可以被包括在本文揭露的任何計算機系統或其它系統。
在說明書和專利申請範圍中,用語「耦接」和/或「連接」以及它們的衍生詞可能已被使用。這些用語並不作為彼此的同義詞。相反地,在實施例中,「連接」可以用於表示兩個或更多元件彼此直接物理和/或電 接觸。「耦接」可意味著兩個或更多元件彼此直接物理和/或電接觸。然而,「耦接」還可以意味著兩個或更多元件並非彼此直接接觸,但仍協同操作或彼此相互作用。在圖式中,箭頭用於顯示連接和耦接。
用語「和/或」可能已被使用。如本文所使用的,用語「和/或」意味著其中一個或兩者(例如,A和/或B意指A或B或A和B兩者)。
在上述的說明中,為了提供實施例的徹底理解具體的細節已被闡述。然而,其它實施例可以在沒有這些具體細節的情況下實施。本發明的範圍不由以上提供的具體例子決定,而是僅由下面的申請專利範圍決定。在其它實例中,眾所皆知的電路、架構、裝置和操作已以方塊圖的形式和/或無細節顯示,以避免模糊對本描述的理解。在認為適當的地方,參考標號或參考標號的終端部,已在圖中重複以表示對應的或類似的元件,其可以選擇地具有相似或相同的特性,除非指明或顯而易見。在某些情況下,其中複數元件已被顯示和描述,在適當情況下,他們可選擇地替代為整合在一起的單一元件。在其它情況下,單一元件已被顯示和描述,在適當情況下,它可選擇地被分離成兩個或更多的元件。
各種操作和方法已被描述。某些方法已被以流程圖中的相對基本形式描述,但操作可選擇地被加入到方法和/或從方法刪除。此外,雖然流程圖顯示根據實施例的操作的特定順序,該順序是示範性的。替代實施例可 以執行不同順序的操作、結合某些操作、重疊某些操作等。
一些實施例包括一種製品(例如,計算機程式產品),其包括機器可讀媒體。該媒體可包括一種機制,其提供例如以機器可讀的形式儲存信息。該機器可讀媒體可以提供或已經儲存在其上,指令的順序,如果和/或當由機器執行時可操作以使該機器執行和/或導致該機器執行一個以上操作、方法或在此揭露的技術。
在一些實施例中,該機器可讀媒體可以包括實體的和/或非暫態的機器可讀儲存媒體。例如,實體的和/或非暫態的機器可讀儲存媒體可包括軟碟、光儲存媒體、光碟、光學資料儲存裝置、唯讀光碟、磁碟、磁光碟、唯讀記憶體(ROM)、可程式化唯讀記憶體(PROM)、可抹除可程式化唯讀記憶體(EPROM)、電子可抹除可程式化唯讀記憶體(EEPROM)、隨機存取記憶體(RAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、快取記憶體、相變記憶體、相變資料儲存材料、非揮發性記憶體、非揮發性資料儲存裝置、非暫態記憶體、非暫態資料儲存裝置或類似物。該非暫態機器可讀儲存媒體不包括暫態傳播信號。
合適機器的實例包括,但不限於計算裝置或包括一個以上處理器的其它電子裝置。此類計算裝置和電子裝置的例子包括但不限於蜂巢式電話、智慧手機、平板電腦、小筆電、移動網路裝置(MID)、媒體播放器、膝 上電腦、筆記型電腦、桌上電腦、智慧電視、桌上型易網機、機上盒、視頻遊戲控制器,僅舉幾個例子。
參見本說明書各處,例如「一個實施例」、「實施例」、「一個以上實施例」、「一些實施例」,表示特定的特徵可以被包括在本發明的實踐中,但並不一定需要。同樣地,為使揭露流暢且協助瞭解各種發明觀點,各種特徵有時聚集在單一的實施例、圖式、或其說明中。然而,此揭示之方法不應被解讀成反映該發明需要比各申請專利範圍中所明確地揭露之特性更多的特性之意圖。而是,當下文之申請專利範圍反映發明性觀點其處於比所揭示之單一實施例的所有特性更少的特性中。因此,在實施方式之後的申請專利範圍,特此基於各自申請專利範圍其本身為該發明之個別實施例被明確地結合於此實施方式之內。
實施方式範例
下面的範例關於進一步的實施方式。在範例中的細節可在一個以上實施方式被使用於任何地方。
範例1包括一種架構間相容性裝置,其包括控制流傳遞接收模組,其用以從第一架構編碼模組接收用於第一架構程式庫模組的第一呼叫程序操作。該第一呼叫程序操作涉及第一複數輸入參數。應用程式二進制介面(ABI)轉變模組,其與該控制流傳遞接收模組耦接。該ABI轉變模組使ABI改變以轉換涉及該第一複數輸入參數 的該第一呼叫程序操作到涉及第二複數輸入參數且與第二架構程式庫模組相容的對應的第二呼叫程序操作。控制流傳遞輸出模組,其與該ABI轉變模組耦接,該控制流傳遞輸出模組用以提供該第二呼叫程序操作至該第二架構程式庫模組。
範例2包括範例1之裝置,其中該ABI轉變模組係從堆疊接收該第一複數輸入參數中的第一參數。藉由該第二架構程式庫模組,儲存對應於該第一參數的該第二複數輸入參數中的第二參數於預計將被用於該第二參數的暫存器。
範例3包括範例1的裝置,其中該控制流傳遞接收模組、該ABI轉變模組以及該控制流傳遞輸出模組,係對應於該第一架構程式庫模組的第一封套模組的一部分。
範例4包括範例3的裝置,更包括複數封套模組,其各對應於不同的第一架構程式庫模組,其中每一該複數封套模組具有控制流傳遞接收模組、ABI轉變模組以及控制流傳遞輸出模組。
範例5包括範例4的裝置,其中該第一封套模組具有與第一架構程式庫模組相同的名稱,且其中每一該複數封套模組具有與該對應於不同的第一架構程式庫模組相同的名稱。
範例6包括範例1的裝置,更包括處理器模式轉變模組,其用以判斷選自第一架構編碼和第二架構編 碼的將被執行的編碼類型,該處理器模式轉變模組改變與將被執行的該已判斷編碼類型相容的處理器的編碼類型執行模式。
範例7包括範例6的裝置,其中該處理器模式轉變模組係根據在具有所有第一架構編碼之第一區段與具有所有第二架構編碼之第二區段之間傳遞的區段間控制流,用以判斷將被執行的編碼類型。
範例8包含的範例1~7中的任一項裝置,其中該控制流傳遞接收模組係用以從32位元編碼模組接收用於32位元程式庫模組的該第一呼叫程序操作,其中該ABI轉變模組係用以轉換該第一呼叫程序操作至該對應於與64位元程式庫模組相容的第二呼叫程序操作,且其中該控制流傳遞輸出模組係用以提供該第二呼叫程序操作至該64位元程式庫模組。
範例9包括範例1至7中任一項裝置,其中能被該第一架構編碼模組使用的架構整數暫存器的最大位元寬度與能被該第二架構編碼模組使用的架構整數暫存器的最大位元寬度不同。
範例10是一種架構間相容性方法,包括接收用於來自第一架構編碼模組的第一架構程式庫模組的第一呼叫程序操作。該第一呼叫程序操作涉及第一複數輸入參數。該方法也包括提供對應於涉及第二複數輸入參數的第二呼叫程序操作到第二架構程式庫模組。
範例11包括範例10的方法,其中該接收包 括從32位元編碼模組接收用於32位元程式庫模組的該第一呼叫程序操作,且其中該提供包括提供該第二呼叫程序操作至64位元程式庫模組。
範例12包括範例10的方法,更包括從堆疊接收該第一複數輸入參數中的第一參數,以及儲存該第二複數輸入參數中的第二參數於該第二架構程式庫模組用於接收該第二參數的暫存器,其中該第二參數對應於該第一參數。
範例13包括範例10的方法,其中該接收包括接收具有與第一架構程式庫模組有相同名稱的封套模組的該第一呼叫程序操作。
範例14包括範例13的方法,更包括配置該封套模組用以在第一架構程式庫模組和第二架構程式庫模組之前藉由動態連接器被搜索。
範例15包括範例10的方法中,在不具有該第一架構程式庫模組的電子裝置中執行。
範例16是一種計算機系統包括記憶體,其用以儲存32位元編碼模組及64位元程式庫模組。64位元處理器,其與該記憶體耦接。該系統也包括跨架構間相容性模組,其用以從該32位元編碼模組截取用於32位元程式庫模組的呼叫程序操作,並用以提供對應的呼叫程序操作至該64位元程式庫模組。
範例17包括範例16的計算機系統,其中該跨架構間相容性模組係用以使應用程式二進制介面 (ABI)改變以轉換用於該32位元程式庫模組的該呼叫程序操作至用於該64位元程式庫模組的該對應的呼叫程序操作。
範例18包括範例16的計算機系統,其中該32位元編碼模組和該64位元程式庫模組將被儲存在記憶體的不同區段,且其中用以儲存該32位元編碼模組的區段係使用平面式定址。
範例19包括範例16的計算機系統,其中該跨架構間相容性模組包括與從該32位元編碼模組截取該呼叫程序操作的32位元程式庫模組具有相同名稱的封套模組。
範例20包含範例16~19中任一項的計算機系統,其中該計算機系統不具有該32位元程式庫模組。
範例21包括範例20的計算機系統,其中該計算機系統不具有任何32位元程式庫模組。
範例22包括的範例16~19中任一項的計算機系統,其中該計算機系統包括智慧手機。
範例23是一種製品包括非暫態機器可讀儲存媒體,其儲存指令,如果被機器執行,將導致該機器用以執行操作,包括從第一架構編碼模組接收用於第一架構程式庫模組的第一呼叫程序操作,該第一呼叫程序操作涉及第一複數輸入參數。該操作也包含使應用程式二進制介面(ABI)改變以轉換涉及該第一複數輸入參數的該第一呼叫程序操作至涉及第二複數輸入參數的對應的第二呼叫程 序操作。該操作也包含提供該第二呼叫程序操作至第二架構程式庫模組。
範例24包括製造範例23的物品,其中該指令如果由機器執行,將導致該機器用以執行操作,包括從32位元編碼模組接收用於32位元程式庫模組的該第一呼叫程序操作,以及提供該第二呼叫步驟操作至64位元程式庫模組。
範例25包括範例23至24的任何製品,更進一步儲存指令,如果被機器執行,將導致該機器用以執行操作,包括從堆疊接收該第一複數輸入參數中的第一參數,以及儲存該第二複數輸入參數中的第二參數於該第二架構程式庫模組用於接收該第二參數的暫存器,其中該第二參數對應於該第一參數。
範例26包括操作以執行任何範例10-15的方法的裝置。
範例27包括一裝置,其包含用於執行任何範例10-15的方法的方法。
範例28包括一裝置,其包含模組、單元、方法或者其任何組合,以執行範例10-15其中之一的方法。
範例29包括一種製品包括可選的非暫態機器可讀儲存媒體,其選擇性儲存或提供指令,如果被處理器、計算機系統或其它機器執行,將導致該處理器、計算機系統或其它機器執行任何範例10-15的方法。
範例30包括計算機系統或其它電子裝置,其 包括匯流排或其它互連、與該互連耦接的處理器、與該互連耦接的快閃記憶體以及與該互連耦接的選擇性天線,該計算機系統或其它電子裝置操作以執行任何範例10-15的方法。
範例31包括可操作以執行大體上如本文所述的一個以上操作或任何方法的裝置。
範例32包括大體上如本文所述的架構間相容性模組。
516‧‧‧第一架構(例如,32位元)編碼模組
518‧‧‧第二架構(例如,64位元)程式庫模組
522‧‧‧相容性模組
530‧‧‧控制流傳遞接收模組
532‧‧‧應用程式二進制介面轉變模組
534‧‧‧處理器模式轉變模組
536‧‧‧控制流傳遞輸出模組

Claims (25)

  1. 一種架構間相容性裝置,包括:控制流傳遞接收模組,其用以從第一架構編碼模組接收用於第一架構程式庫模組的第一呼叫程序操作,該第一呼叫程序操作涉及第一複數輸入參數;應用程式二進制介面(ABI)轉變模組,其與該控制流傳遞接收模組耦接,該ABI轉變模組使ABI改變以轉換涉及該第一複數輸入參數的該第一呼叫程序操作到涉及第二複數輸入參數且與第二架構程式庫模組相容的對應的第二呼叫程序操作;以及控制流傳遞輸出模組,其與該ABI轉變模組耦接,該控制流傳遞輸出模組用以提供該第二呼叫程序操作至該第二架構程式庫模組。
  2. 如申請專利範圍第1項之裝置,其中該ABI轉變模組係:從堆疊接收該第一複數輸入參數中的第一參數;以及藉由該第二架構程式庫模組,儲存對應於該第一參數的該第二複數輸入參數中的第二參數於預計將被用於該第二參數的暫存器。
  3. 如申請專利範圍第1項之裝置,其中該控制流傳遞接收模組、該ABI轉變模組以及該控制流傳遞輸出模組,係對應於該第一架構程式庫模組的第一封套封套模組的一部分。
  4. 如申請專利範圍第3項之裝置,更包括複數封套 模組,其各對應於不同的第一架構程式庫模組,其中每一該複數封套模組具有控制流傳遞接收模組、ABI轉變模組以及控制流傳遞輸出模組。
  5. 如申請專利範圍第4項之裝置,其中該第一封套模組具有與第一架構程式庫模組相同的名稱,且其中每一該複數封套模組具有與該對應於不同的第一架構程式庫模組相同的名稱。
  6. 如申請專利範圍第1項之裝置,更包括處理器模式轉變模組,其用以判斷選自第一架構編碼和第二架構編碼的將被執行的編碼類型,該處理器模式轉變模組改變與將被執行的該已判斷編碼類型相容的處理器的編碼類型執行模式。
  7. 如申請專利範圍第6項之裝置,其中該處理器模式轉變模組係根據在具有所有第一架構編碼之第一區段與具有所有第二架構編碼之第二區段之間傳遞的區段間控制流,用以判斷將被執行的編碼類型。
  8. 如申請專利範圍第1項之裝置,其中該控制流傳遞接收模組係用以從32位元編碼模組接收用於32位元程式庫模組的該第一呼叫程序操作,其中該ABI轉變模組係用以轉換該第一呼叫程序操作至該對應於與64位元程式庫模組相容的第二呼叫程序操作,且其中該控制流傳遞輸出模組係用以提供該第二呼叫程序操作至該64位元程式庫模組。
  9. 如申請專利範圍第1項之裝置,其中能被該第一 架構編碼模組使用的架構整數暫存器的最大位元寬度與能被該第二架構編碼模組使用的架構整數暫存器的最大位元寬度不同,且其中該第二架構程式庫模組係從數學程式庫模組和C標準程式庫模組中選擇。
  10. 一種架構間相容性方法,包括:接收用於來自第一架構編碼模組的第一架構程式庫模組的第一呼叫程序操作,該第一呼叫程序操作涉及第一複數輸入參數;以及提供對應於涉及第二複數輸入參數的第二呼叫程序操作到第二架構程式庫模組。
  11. 如申請專利範圍第10項之方法,其中該接收包括從32位元編碼模組接收用於32位元程式庫模組的該第一呼叫程序操作,且其中該提供包括提供該第二呼叫程序操作至64位元程式庫模組。
  12. 如申請專利範圍第10項之方法,更包括:從堆疊接收該第一複數輸入參數中的第一參數;以及儲存該第二複數輸入參數中的第二參數於該第二架構程式庫模組用於接收該第二參數的暫存器,其中該第二參數對應於該第一參數。
  13. 如申請專利範圍第10項之方法,其中該接收包括接收具有與第一架構程式庫模組有相同名稱的封套模組的該第一呼叫程序操作。
  14. 如申請專利範圍第13項之方法,更包括配置該封套模組用以在第一架構程式庫模組和第二架構程式庫模 組之前藉由動態連接器被搜尋。
  15. 如申請專利範圍第10項之方法,在不具有該第一架構程式庫模組的電子裝置中執行。
  16. 一種計算機系統,包括:記憶體,其用以儲存32位元編碼模組及64位元程式庫模組;64位元處理器,其與該記憶體耦接;以及架構間相容性模組,其用以從該32位元編碼模組截取用於32位元程式庫模組的呼叫程序操作,並用以提供對應的呼叫程序操作至該64位元程式庫模組。
  17. 如申請專利範圍第16項之計算機系統,其中該架構間相容性模組係用以使應用程式二進制介面(ABI)改變以轉換用於該32位元程式庫模組的該呼叫程序操作至用於該64位元程式庫模組的該對應的呼叫程序操作。
  18. 如申請專利範圍第16項之計算機系統,其中該32位元編碼模組和該64位元程式庫模組將被儲存在記憶體的不同區段,且其中用以儲存該32位元編碼模組的區段係使用平面式定址。
  19. 如申請專利範圍第16項之計算機系統,其中該架構間相容性模組包括與從該32位元編碼模組截取該呼叫程序操作的該32位元程式庫模組具有相同名稱的封套模組。
  20. 如申請專利範圍第16項之計算機系統,其中該計算機系統不具有該32位元程式庫模組。
  21. 如申請專利範圍第20項之計算機系統,其中該計算機系統不具有任何32位元程式庫模組。
  22. 如申請專利範圍第16項之計算機系統,其中該計算機系統包括智慧手機。
  23. 一種製品,包括非暫態機器可讀取儲存媒體,其儲存指令,如果被機器執行,將導致該機器用以執行操作,包括:從第一架構編碼模組接收用於第一架構程式庫模組的第一呼叫程序操作,該第一呼叫程序操作涉及第一複數輸入參數;使應用程式二進制介面(ABI)改變以轉換涉及該第一複數輸入參數的該第一呼叫程序操作至涉及第二複數輸入參數的對應的第二呼叫程序操作;以及提供該第二呼叫程序操作至第二架構程式庫模組。
  24. 如申請專利範圍第23項的製品,其中該指令如果被該機器執行,將導致該機器用以執行操作,包括:從32位元編碼模組接收用於32位元程式庫模組的該第一呼叫程序操作;以及提供該第二呼叫步驟操作至64位元程式庫模組。
  25. 如申請專利範圍第23項的製品,更進一步儲存指令,如果被機器執行,將導致該機器用以執行操作,包括:從堆疊接收該第一複數輸入參數中的第一參數;以及儲存該第二複數輸入參數中的第二參數於該第二架構 程式庫模組用於接收該第二參數的暫存器,其中該第二參數對應於該第一參數。
TW104105063A 2014-03-28 2015-02-13 容許一架構之編碼模組使用另一架構之程式庫模組的架構間相容性模組 TWI567646B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/229,795 US10120663B2 (en) 2014-03-28 2014-03-28 Inter-architecture compatability module to allow code module of one architecture to use library module of another architecture

Publications (2)

Publication Number Publication Date
TW201545058A TW201545058A (zh) 2015-12-01
TWI567646B true TWI567646B (zh) 2017-01-21

Family

ID=52630760

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104105063A TWI567646B (zh) 2014-03-28 2015-02-13 容許一架構之編碼模組使用另一架構之程式庫模組的架構間相容性模組

Country Status (7)

Country Link
US (1) US10120663B2 (zh)
JP (1) JP6124463B2 (zh)
KR (1) KR101817397B1 (zh)
CN (1) CN104951296B (zh)
DE (1) DE102015002582A1 (zh)
GB (1) GB2524616B (zh)
TW (1) TWI567646B (zh)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104246695B (zh) * 2012-03-22 2019-05-10 英特尔公司 嵌套仿真和动态链接环境
US9958932B2 (en) 2014-11-20 2018-05-01 Apple Inc. Processor including multiple dissimilar processor cores that implement different portions of instruction set architecture
US9477490B2 (en) * 2015-01-05 2016-10-25 Dell Software Inc. Milestone based dynamic multiple watchdog timeouts and early failure detection
US9778945B2 (en) * 2015-02-10 2017-10-03 Red Hat Israel, Ltd. Providing mode-dependent virtual machine function code
US11403099B2 (en) * 2015-07-27 2022-08-02 Sony Interactive Entertainment LLC Backward compatibility by restriction of hardware resources
US9928115B2 (en) 2015-09-03 2018-03-27 Apple Inc. Hardware migration between dissimilar cores
WO2017052555A1 (en) * 2015-09-24 2017-03-30 Hewlett Packard Enterprise Development Lp Process and thread launch features
US10452409B2 (en) * 2015-10-23 2019-10-22 Oracle International Corporation Universal adapter for native calling
US9753776B2 (en) * 2015-12-01 2017-09-05 International Business Machines Corporation Simultaneous multithreading resource sharing
US10007498B2 (en) 2015-12-17 2018-06-26 Architecture Technology Corporation Application randomization mechanism
US10284592B1 (en) 2015-12-17 2019-05-07 Architecture Technology Corporation Application randomization mechanism
US10412116B1 (en) 2015-12-17 2019-09-10 Architecture Technology Corporation Mechanism for concealing application and operation system identity
US10200401B1 (en) * 2015-12-17 2019-02-05 Architecture Technology Corporation Evaluating results of multiple virtual machines that use application randomization mechanism
US10412114B1 (en) 2015-12-17 2019-09-10 Architecture Technology Corporation Application randomization mechanism
US10853118B2 (en) * 2015-12-21 2020-12-01 Intel Corporation Apparatus and method for pattern-driven page table shadowing for graphics virtualization
US10261921B2 (en) * 2016-02-19 2019-04-16 Rajnarine Brigmohan Universal secure platform virtualization system and method thereof
US10303488B2 (en) * 2016-03-30 2019-05-28 Sony Interactive Entertainment Inc. Real-time adjustment of application-specific operating parameters for backwards compatibility
US10853040B2 (en) 2017-03-31 2020-12-01 Microsoft Technology Licensing, Llc Address space splitting for legacy application compatibility
CN107423084B (zh) * 2017-04-24 2021-02-02 武汉斗鱼网络科技有限公司 程序修改方法及装置
US10554685B1 (en) 2017-05-25 2020-02-04 Architecture Technology Corporation Self-healing architecture for resilient computing services
US11275587B2 (en) * 2018-05-02 2022-03-15 Micron Technology, Inc. Static identifications in object-based memory access
US10761855B2 (en) 2018-05-02 2020-09-01 Micron Technology, Inc. Securing conditional speculative instruction execution
US10977101B2 (en) 2018-12-12 2021-04-13 International Business Machines Corporation Interoperability between programs associated with different addressing modes
US11249760B2 (en) 2019-04-10 2022-02-15 International Business Machines Corporation Parameter management between programs
EP3748440B1 (en) * 2019-06-03 2023-11-08 ABB Schweiz AG Workflow of an apparatus
CN112083934A (zh) * 2019-06-13 2020-12-15 青岛海信移动通信技术股份有限公司 一种终端和处理方法
CN111026452B (zh) * 2019-11-20 2023-10-20 北京明朝万达科技股份有限公司 一种远程32位进程注入64位进程的方法及系统
CN111142969A (zh) * 2019-12-27 2020-05-12 贵阳动视云科技有限公司 64位程序调用32位程序模块的方法、装置、介质及设备
US11294695B2 (en) * 2020-05-28 2022-04-05 International Business Machines Corporation Termination of programs associated with different addressing modes
CN113760338B (zh) * 2020-06-05 2023-07-18 北京字跳网络技术有限公司 切换应用程序二进制接口abi的方法、装置及电子设备
US11403100B2 (en) * 2020-08-31 2022-08-02 Microsoft Technology Licensing, Llc Dual architecture function pointers having consistent reference addresses
US11231918B1 (en) 2020-08-31 2022-01-25 Microsoft Technologly Licensing, LLC Native emulation compatible application binary interface for supporting emulation of foreign code
CN112486570B (zh) * 2020-11-06 2023-06-02 麒麟软件有限公司 一种不同类型CPU的Glibc兼容方法
EP4053722B1 (en) 2021-03-01 2023-11-29 Irdeto B.V. Secured computer code and systems, methods, and storage media for creating the secured computer code from original computer code
CN113076263A (zh) * 2021-05-06 2021-07-06 北京字节跳动网络技术有限公司 一种进程运行的方法、装置、计算机设备及存储介质
US11947993B2 (en) 2021-06-22 2024-04-02 International Business Machines Corporation Cooperative input/output of address modes for interoperating programs
US11556356B1 (en) * 2021-09-23 2023-01-17 International Business Machines Corporation Dynamic link objects across different addressing modes
CN114510267B (zh) * 2022-04-20 2023-03-21 麒麟软件有限公司 基于Linux系统的程序ABI接口兼容性计算方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW367445B (en) * 1996-07-03 1999-08-21 Intel Corp Signaling protocol conversion between a processor and a high-performance system bus
US6715063B1 (en) * 2000-01-14 2004-03-30 Advanced Micro Devices, Inc. Call gate expansion for 64 bit addressing
TWI279686B (en) * 2002-05-16 2007-04-21 Intel Corp Protocol independent transmission using a 10 gigabit attachment unit interface
TWI280765B (en) * 2004-04-05 2007-05-01 Nokia Corp System and method for initiating auxiliary communication interfaces via a primary communication interface
TW200941339A (en) * 2007-12-17 2009-10-01 Advanced Micro Devices Inc Uses of known good code for implementing processor architectural modifications

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5604885A (en) 1991-02-01 1997-02-18 Texas Instruments Incorporated Apparatus and method enabling a computer to transfer control between two program segments that call one another but operate in different modes
US5473777A (en) * 1993-07-19 1995-12-05 Moeller; Christopher P. Wrapper for enabling an object otented application to maintain virtual memory using procedural function calls
US5379432A (en) * 1993-07-19 1995-01-03 Taligent, Inc. Object-oriented interface for a procedural operating system
US6438621B1 (en) 1994-11-14 2002-08-20 Microsoft Corporation In-memory modification of computer programs
US5870587A (en) 1996-03-20 1999-02-09 International Business Machines Corporation Information-handling system, method, and article of manufacture including a mechanism for providing an improved application binary interface
US8065504B2 (en) * 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
WO2000045260A1 (fr) * 1999-01-29 2000-08-03 Fujitsu Limited Compilateur, procede de compilation et support de stockage sur lequel est stocke un programme pour la mise en oeuvre dudit procede
US6662361B1 (en) 2000-01-14 2003-12-09 International Business Machines Corporation Method, system, program, and data structures for transforming an instruction in a first bit architecture to an instruction in a second bit architecture
US6725366B1 (en) * 2000-09-07 2004-04-20 International Business Machines, Corporation System and method for 32 bit code branching to 64 bit targets
US7406681B1 (en) * 2000-10-12 2008-07-29 Sun Microsystems, Inc. Automatic conversion of source code from 32-bit to 64-bit
GB0026363D0 (en) * 2000-10-27 2000-12-13 Sgs Thomson Microelectronics Bi-endian libraries
US7406682B2 (en) * 2001-03-26 2008-07-29 Emc Corporation Translator-compiler for converting legacy management software
AT411044B (de) 2001-10-16 2003-09-25 Burg Design Gmbh Dekorelement
US7124445B2 (en) * 2002-06-21 2006-10-17 Pace Anti-Piracy, Inc. Protecting software from unauthorized use by converting source code modules to byte codes
US7353502B2 (en) * 2002-07-03 2008-04-01 The Mathworks, Inc. System and method for creation of software components
US8423976B2 (en) 2003-03-13 2013-04-16 Northrop Grumman Corporation Extreme pipeline and optimized reordering technology
GB0316531D0 (en) 2003-07-15 2003-08-20 Transitive Ltd Method and apparatus for performing native binding
US7519951B2 (en) * 2003-09-30 2009-04-14 International Business Machines Corporation Multi-attribute dynamic link library packaging
US7634768B2 (en) * 2005-02-17 2009-12-15 Intel Corporation Methods and apparatus to support mixed-mode execution within a single instruction set architecture process of a virtual machine
US7966624B2 (en) * 2007-08-22 2011-06-21 Intel Corporation Using message passing interface (MPI) profiling interface for emulating different MPI implementations
US8832679B2 (en) * 2007-08-28 2014-09-09 Red Hat, Inc. Registration process for determining compatibility with 32-bit or 64-bit software
US20090144046A1 (en) 2007-09-28 2009-06-04 Rothman Michael A Method to encapsulate an option rom for operation in multiple firmware and platform architectures
JP4352086B2 (ja) * 2007-12-21 2009-10-28 株式会社東芝 情報処理装置およびオペレーティングシステム判別方法
US20100077378A1 (en) * 2008-09-25 2010-03-25 International Business Machines Corporation Virtualised Application Libraries
US9189620B2 (en) * 2009-06-30 2015-11-17 Intel Corporation Protecting a software component using a transition point wrapper
US8561183B2 (en) * 2009-07-31 2013-10-15 Google Inc. Native code module security for arm instruction set architectures
US8832676B2 (en) * 2009-09-30 2014-09-09 Zynga Inc. Apparatuses, methods and systems for a social networking application updater
CN102713839B (zh) * 2009-10-08 2015-11-25 爱迪德技术有限公司 用于动态函数调用系统中的积极自我修改的系统和方法
US9075688B2 (en) * 2010-02-09 2015-07-07 Accenture Global Services Limited Enhanced upgrade path
KR101211673B1 (ko) 2010-12-08 2012-12-12 한국과학기술연구원 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템 및 그 방법
US20120222024A1 (en) * 2011-02-24 2012-08-30 Kushal Das Mechanism for Managing Support Criteria-Based Application Binary Interface/Application Programming Interface Differences
US9891939B2 (en) 2011-03-03 2018-02-13 Microsoft Technology Licensing, Llc Application compatibility with library operating systems
CN103092599A (zh) 2011-11-05 2013-05-08 京瓷办公信息系统株式会社 软件开发套件
US20140195783A1 (en) * 2011-12-29 2014-07-10 Krishnan Karthikeyan Dot product processors, methods, systems, and instructions
US9513977B2 (en) * 2012-01-10 2016-12-06 Intel Corporation ISA bridging with callback
US9063759B2 (en) * 2012-03-28 2015-06-23 International Business Machines Corporation Optimizing subroutine calls based on architecture level of called subroutine
RU2012127581A (ru) * 2012-07-02 2014-01-10 ЭлЭсАй Корпорейшн Генератор исходного кода для разработки и тестирования программного обеспечения для многопроцессорных сред
JP5976930B2 (ja) 2012-08-08 2016-08-24 インテル コーポレイション バーチャルファンクションを無効にするコールのためのサポートを含むisaブリッジング
US20140282371A1 (en) * 2013-03-14 2014-09-18 Media Direct, Inc. Systems and methods for creating or updating an application using a pre-existing application
US20160077850A1 (en) 2013-04-19 2016-03-17 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for binary compatibility
US9424420B2 (en) * 2013-08-02 2016-08-23 Red Hat, Inc. Restricting application binary interfaces

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW367445B (en) * 1996-07-03 1999-08-21 Intel Corp Signaling protocol conversion between a processor and a high-performance system bus
US6715063B1 (en) * 2000-01-14 2004-03-30 Advanced Micro Devices, Inc. Call gate expansion for 64 bit addressing
TWI279686B (en) * 2002-05-16 2007-04-21 Intel Corp Protocol independent transmission using a 10 gigabit attachment unit interface
TWI280765B (en) * 2004-04-05 2007-05-01 Nokia Corp System and method for initiating auxiliary communication interfaces via a primary communication interface
TW200941339A (en) * 2007-12-17 2009-10-01 Advanced Micro Devices Inc Uses of known good code for implementing processor architectural modifications

Also Published As

Publication number Publication date
CN104951296A (zh) 2015-09-30
GB201500818D0 (en) 2015-03-04
TW201545058A (zh) 2015-12-01
KR101817397B1 (ko) 2018-01-11
CN104951296B (zh) 2019-02-15
KR20150112778A (ko) 2015-10-07
US10120663B2 (en) 2018-11-06
GB2524616A (en) 2015-09-30
JP6124463B2 (ja) 2017-05-10
US20150277867A1 (en) 2015-10-01
DE102015002582A1 (de) 2015-10-01
JP2015191657A (ja) 2015-11-02
GB2524616B (en) 2018-05-09

Similar Documents

Publication Publication Date Title
TWI567646B (zh) 容許一架構之編碼模組使用另一架構之程式庫模組的架構間相容性模組
EP3274816B1 (en) User-level fork and join processors, methods, systems, and instructions
JP6227621B2 (ja) 複数の試験ソースに対するor試験及びand試験機能を提供するために命令をフュージングする方法及び装置
KR101854520B1 (ko) 타이트하게 커플링된 이종 컴퓨팅을 위한 하드웨어 프로세서스들 및 방법들
CN106708753B (zh) 在使用共享虚拟存储器的处理器中加速操作的装置和方法
KR101964350B1 (ko) 다중 레지스터 메모리 액세스 명령어들, 프로세서들, 방법들 및 시스템들
CN109508206B (zh) 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统
CN110347431B (zh) 自适应空间访问预取器装置和方法
TWI733760B (zh) 記憶體複製指令、處理器、方法及系統
JP2015534188A (ja) ユーザレベルのスレッディングのために即時のコンテキスト切り替えを可能とする新規の命令および高度に効率的なマイクロアーキテクチャ
TW201643706A (zh) 用以執行融合單一週期遞增-比較-跳越之指令與邏輯
JP5985526B2 (ja) システムコールのためのロバスト且つ高性能な命令
KR101966713B1 (ko) 마스크 레지스터에서의 비트들을 반전 및 치환하기 위한 장치 및 방법
CN110659129A (zh) 用于数据表示之间的一致、加速的转换的装置和方法
TW201800948A (zh) 提取資料至具保證完成指示快取階之處理器、方法、系統及指令
TWI752034B (zh) 用以校驗具有指示校驗位元值之位元的位元校驗處理器、方法、系統與指令
US9880839B2 (en) Instruction that performs a scatter write
TWI697836B (zh) 處理包括高功率及標準指令之指令集的方法與處理器
US20220197658A1 (en) Isa opcode parameterization and opcode space layout randomization

Legal Events

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