TWI587209B - 用於針對異構多處理器系統中的共用儲存區域進行動態位址協商的方法、多處理器計算設備及非臨時性電腦可讀取儲存媒體 - Google Patents

用於針對異構多處理器系統中的共用儲存區域進行動態位址協商的方法、多處理器計算設備及非臨時性電腦可讀取儲存媒體 Download PDF

Info

Publication number
TWI587209B
TWI587209B TW103127105A TW103127105A TWI587209B TW I587209 B TWI587209 B TW I587209B TW 103127105 A TW103127105 A TW 103127105A TW 103127105 A TW103127105 A TW 103127105A TW I587209 B TWI587209 B TW I587209B
Authority
TW
Taiwan
Prior art keywords
address
processing core
program
mapping
virtual address
Prior art date
Application number
TW103127105A
Other languages
English (en)
Other versions
TW201519080A (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 TW201519080A publication Critical patent/TW201519080A/zh
Application granted granted Critical
Publication of TWI587209B publication Critical patent/TWI587209B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • 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/544Buffers; Shared memory; Pipes
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)

Description

用於針對異構多處理器系統中的共用儲存區域進行動態位 址協商的方法、多處理器計算設備及非臨時性電腦可讀取儲存媒體
本發明係關於針對異構多處理器系統中的共用儲存區域的動態位址協商。
在過去的幾年中,已經看到行動和無線網路技術飛速發展。該發展已經由更好的通訊、硬體和更可靠的協定推動。現在,無線服務提供者能夠向他們的客戶提供一直擴展的特徵和服務系列,並且向使用者提供對資訊、資源和通訊的前所未有的存取級別。為了跟上這些增強的步伐,行動電子設備(例如,蜂巢式電話、手錶、媒體播放機等)已經變得比以前更複雜,且現在通常包括多個處理器、片上系統(SoC)、以及允許行動設備使用者在其行動設備上執行複雜及功率密集的軟體應用(例如,視訊流、視訊處理等)的其他資源。隨著複雜性和功耗的增加, 提高行動設備的計算和功率管理效能的新的和改進的儲存管理解決方案對於使用者而言將是有益的。
各種態樣包括對具有第一處理核心和第二處理核心的多處理器計算設備的共用儲存區域提供存取的方法,其包括:由該第一處理核心中的第一程序請求與該第二處理核心中的第二程序進行位址協商;在該第一處理核心中獲取該第一程序的第一位址映射;向該第二處理核心發送該第一位址映射;回應於發送該第一位址映射,在該第一處理核心中接收公共虛擬位址;將該公共虛擬位址儲存為該第一處理核心的第一作業系統核心內的該共用儲存區域的第一屬性;及,在該第一程序的該公共虛擬位址處映射該共用儲存區域。
在一個態樣中,該方法可以包括在該第二處理核心中接收該第一位址映射;在該第二處理核心中獲取該第二程序的第二位址映射;在該第二處理核心中執行位址匹配操作,以決定該第一和第二位址映射是否包括匹配的虛擬位址;將該匹配的虛擬位址作為公共虛擬位址並且作為該第二處理核心的第二作業系統核心的該共用儲存區域的第二屬性進行儲存;向該第一處理核心發送公共虛擬位址;及,在針對該第二處理核心的該第二程序的該公共虛擬位址處映射該共用儲存區域的實體頁面。
在另一態樣中,該第一處理核心和該第二處理核心中的每一個包括硬體記憶體管理單元(MMU)。再一態樣中,在該第二處理核心中接收該第一位址映射可以包括:在該第二處理核心的位址協商處理執行緒中接收該第一位址映射。
其他態樣包括一種多處理器計算設備,其可以包括:用於由第一處理核心中的第一程序請求與第二處理核心中的第二程序進行位址協商的手段;用於在該第一處理核心中獲取該第一程序的第一位址映射的手段;用於向該第二處理核心發送該第一位址映射的手段;用於回應於發送該第一位址映射,在該第一處理核心中接收公共虛擬位址的手段;用於將該公共虛擬位址儲存為該第一處理核心的第一作業系統核心內的該共用儲存區域的第一屬性的手段;及用於在該第一程序的該公共虛擬位址處映射該共用儲存區域的手段。
在一個態樣中,多處理器計算設備可以包括:用於在該第二處理核心中接收該第一位址映射的手段;用於在該第二處理核心中獲取該第二程序的第二位址映射的手段;用於在該第二處理核心中執行位址匹配操作,以決定該第一位址映射和該第二位址映射是否包括匹配的虛擬位址的手段;用於將該匹配的虛擬位址作為公共虛擬位址並且作為該第二處理核心的第二作業系統核心的該共用儲存區域的第二屬性進行儲存的手段;用於向該第一處理核心發送該公共虛擬位址的手段;及用於在針對該第 二處理核心的該第二程序的該公共虛擬位址處映射該共用儲存區域的實體頁面的手段。
另一態樣中,多處理器計算設備可以包括用於在該第二處理核心中接收該第一位址映射的手段可以包括:用於在該第二處理核心的位址協商處理執行緒中接收該第一位址映射的手段。
其他態樣包括一種多處理器計算設備,其具有:第一處理核心、第二處理核心以及共用儲存區域,該共用儲存區域耦接到該第一處理核心和該第二處理核心,並且其中該第一處理核心被配置為具有處理器可執行指令,以執行包括如下各項的操作:由第一程序請求與該第二處理核心中的第二程序進行位址協商;獲取該第一程序的第一位址映射;向該第二處理核心發送該第一位址映射;回應於向該第二處理核心發送該第一位址映射,接收公共虛擬位址;將該公共虛擬位址儲存為第一作業系統核心內的該共用儲存區域的第一屬性;及在該第一程序的該公共虛擬位址處映射該共用儲存區域。
在一態樣,該第二處理核心可以被配置為具有處理器可執行指令,以執行包括如下各項的操作:接收該第一位址映射;獲取該第二程序的第二位址映射;執行位址匹配操作,以決定該第一位址映射和該第二位址映射是否包括匹配的虛擬位址;將該匹配的虛擬位址作為公共虛擬位址並且作為第二作業系統核心的該共用儲存區域的第二屬性進行儲存;向該第一處理核心發送公共虛擬位 址;及在針對該第二程序的該公共虛擬位址處映射該共用儲存區域的實體頁面。
在一個態樣中,該第一處理核心和該第二處理核心中的每一個可以包括硬體記憶體管理單元(MMU)。在另一個態樣中,該第二處理核心被配置為具有處理器可執行指令,以執行如下操作:使得接收該第一位址映射包括在位址協商處理執行緒中接收該第一位址映射。
其他態樣包括一種非臨時性電腦可讀取儲存媒體,具有儲存在其上的處理器可執行的軟體指令,該處理器可執行的指令被配置為使得多處理器計算設備的第一處理核心執行包括如下各項的操作:由第一程序請求與第二處理核心中的第二程序進行位址協商;獲取該第一程序的第一位址映射;向該第二處理核心發送該第一位址映射;回應於向該第二處理核心發送該第一位址映射,接收公共虛擬位址;將該公共虛擬位址儲存為第一作業系統核心內的共用儲存區域的第一屬性;及在該第一程序的該公共虛擬位址處映射該共用儲存區域。
在一個態樣中,所儲存的處理器可執行的軟體指令可以被配置為使得該多處理器計算設備的該第二處理核心執行包括如下各項的操作:接收該第一位址映射;獲取該第二程序的第二位址映射;執行位址匹配操作,以決定該第一位址映射和該第二位址映射是否包括匹配的虛擬位址;將該匹配的虛擬位址作為公共虛擬位址並且作 為第二作業系統核心的該共用儲存區域的第二屬性進行儲存;向該第一處理核心發送該公共虛擬位址;及在針對該第二程序的該公共虛擬位址處映射該共用儲存區域的實體頁面。
在另一個態樣中,所儲存的處理器可執行的軟體指令可以被配置為使得該多處理器計算設備的該第二處理核心執行如下操作:使得接收該第一位址映射可以包括在位址協商處理執行緒中接收該第一位址映射。
100‧‧‧片上系統(SOC)
102‧‧‧數位信號處理器(DSP)
104‧‧‧數據機處理器
106‧‧‧圖形處理器
108‧‧‧應用處理器
110‧‧‧協同處理器
112‧‧‧記憶體
114‧‧‧定製電路
116‧‧‧系統資源
118‧‧‧時鐘
120‧‧‧電壓調節器
124‧‧‧互連模組
200‧‧‧電腦系統
202‧‧‧主作業系統
204‧‧‧DSP作業系統
206‧‧‧處理器間通訊模組
208‧‧‧主作業系統使用者程序(程序A)
210‧‧‧DSP程序(程序B)
300‧‧‧電腦系統架構
302‧‧‧作業系統
304‧‧‧庫模組
306‧‧‧應用程式(A0-An)
308‧‧‧周邊設備
310‧‧‧中央處理單元(CPU)
312‧‧‧系統記憶體管理單元
316‧‧‧中央處理單元記憶體管理單元
320‧‧‧軟體元件
322‧‧‧硬體元件
400‧‧‧多處理器計算系統
402‧‧‧記憶體管理單元(MMU)
408‧‧‧記憶體管理單元(MMU)
500‧‧‧方法
502‧‧‧方塊
504‧‧‧方塊
506‧‧‧方塊
508‧‧‧方塊
510‧‧‧方塊
512‧‧‧方塊
514‧‧‧方塊
516‧‧‧方塊
518‧‧‧方塊
520‧‧‧方塊
522‧‧‧方塊
524‧‧‧方塊
526‧‧‧方塊
528‧‧‧方塊
530‧‧‧方塊
532‧‧‧方塊
550‧‧‧方法
552‧‧‧方塊
554‧‧‧方塊
556‧‧‧方塊
558‧‧‧方塊
560‧‧‧方塊
562‧‧‧方塊
600‧‧‧智慧型電話
601‧‧‧多核處理器
602‧‧‧內部記憶體
604‧‧‧顯示器
606‧‧‧揚聲器
608‧‧‧天線
610‧‧‧蜂巢式電話收發機
612‧‧‧功能表選擇按鈕或搖臂開關
614‧‧‧聲音編碼/解碼(CODEC)電路
701‧‧‧多核處理器
702‧‧‧揮發性記憶體
704‧‧‧磁碟機
708‧‧‧壓縮光碟(CD)及/或DVD驅動器
710‧‧‧無線電/天線
718‧‧‧鍵盤
720‧‧‧定位滑鼠墊
722‧‧‧顯示器
800‧‧‧伺服器
801‧‧‧處理器
802‧‧‧揮發性記憶體
803‧‧‧磁碟機
804‧‧‧壓縮光碟(CD)或DVD光碟機
806‧‧‧網路存取埠
808‧‧‧網路
附圖被併入本案且構成本說明書的一部分,該等附圖圖示了本發明的示例性態樣,並與上文提供的一般描述以及下文提供的具體描述一起用於解釋本發明的特徵。
圖1是適合實現各個態樣的示例性片上系統的架構圖。
圖2是圖示在一個態樣中,多處理器計算系統的示例性邏輯和功能元件的方塊圖,該多處理器計算系統包括被配置為傳送位址映射和公共虛擬位址的兩個處理器。
圖3是圖示根據各個態樣的示例性處理核心的邏輯元件和介面的方塊圖,該示例性處理核心可以被配置成實現根據各個態樣的記憶體管理方案。
圖4是圖示一個態樣中的多處理器計算系統的方塊圖,該多處理器計算系統具有共用記憶體和多個異構處理器,該多個異構處理器包括獨立作業系統和單獨的記憶體管理單元(MMU)。
圖5A是圖示一個態樣中,對多處理器計算設備的通用應用處理器與輔助處理器之間共用的儲存區域提供存取的方法的程序流程圖。
圖5B是圖示一個態樣中,將通用軟體應用的一些部分從應用處理器卸載到多處理器計算設備的輔助處理器的方法的程序流程圖。
圖6是適合用於各態樣的示例性行動計算裝置的組件方塊圖。
圖7是適合用於各態樣的示例性膝上型電腦的元件方塊圖。
圖8是適合用於各態樣的示例性伺服器電腦的元件方塊圖。
將參照附圖來詳細地描述各態樣。只要有可能,將貫穿附圖使用相同的元件符號來表示相同或相似的部件。對具體示例和實現的提及是用於說明的目的,且其不意在限制本發明或請求項的保護範圍。
整體而言,各個態樣包括對片上系統(SOC)中的通用應用處理器與輔助處理器(DSP)之間共用的 記憶體提供存取的方法以及被配置為執行所述方法的處理器。可以經由配置處理器使得應用處理器上的第一程序(P1)請求與輔助處理器上的第二程序(P2)進行位址協商(例如,經由對作業系統核心進行系統調用)、從第一作業系統獲取第一位址映射、以及向輔助處理器發送第一位址映射,來提供對共用記憶體的存取。第二程序(P2)可以接收第一位址映射、從第二作業系統獲取第二位址映射、調用位址匹配演算法或常式以辨識第一位址映射和第二位址映射中的匹配/覆蓋位址、將匹配/覆蓋位址儲存為公共虛擬位址、並向應用處理器發送公共虛擬位址(例如,經由系統調用、遠端方法調用等)。第一程序和第二程序(亦即,P1和P2)可以各自使用公共虛擬位址來將實體頁面映射到記憶體。經由共用位址映射和公共虛擬位址,各個態樣允許兩個異構處理器更有效地通訊。
在本案中一般使用術語「計算系統」和「計算設備」來代表伺服器、個人電腦和行動設備中的任何一個或全部,例如蜂巢式電話、智慧型電話、平板電腦、膝上型電腦、筆記型電腦、超級筆記本、掌上型電腦、個人資料助理(PDA)、無線電子郵件接收器、具有多媒體網際網路功能的蜂巢式電話、全球定位系統(GPS)接收器、無線遊戲控制器以及包括可程式設計處理器的類似的個人電子設備。雖然各個態樣在諸如具有有限的處理功率和電池壽命的智慧型電話之類的行動設備中特別有用,但 是該等態樣在包括可程式設計處理器和輔助處理器的任何計算設備中通常是有用的。
在本案中一般使用術語「監視器代理」來代表支援虛擬化技術及/或使計算資源能夠抽象化(或虛擬化)的任何硬體元件或軟體,包括硬體監控器、在晶片上製造的專用硬體、超管理器(hypervisor)、虛擬機器監控程式、虛擬機器器監視器、執行在高級作業系統(HLOS)之外的監視器軟體、以及作為裝置驅動程式的一部分執行的軟體監控器中的任何一個或全部,其可以位元於HLOS、其記憶體管理系統及/或其分配器功能之外。
在本案中使用術語「片上系統」(SOC)來代表單個積體電路(IC),該單個積體電路(IC)包含整合在單個基板上的多個資源及/或處理器。單個SOC可以包含用於數位、類比、複合信號以及射頻功能的電路。單個SOC亦可以包括任何數量的通用及/或專用處理器(數位信號處理器、數據機處理器、視訊處理器等)、記憶體塊(例如,ROM、RAM、快閃記憶體等)、以及資源(例如,計時器、電壓調節器、振盪器等)。SOC亦可以包括用於控制集成資源和處理器以及用於控制周邊設備的軟體。
近年來,行動計算裝置已經變得複雜,且現在通常包括多個處理器核心、SOC、輔助處理器、包括專用處理器(例如,通訊數據機晶片、GPS接收器等)的功能模組、複雜記憶體系統、複雜的電互連(例如,匯流 排及/或結構)、以及適合執行複雜和功率密集的軟體應用(例如,視訊流應用等)的很多其他資源。隨著複雜度的增加,需要新的處理和記憶體管理方案來提高行動設備的效能和功耗特徵。
為了提高效能和最大化電池壽命,行動設備應用處理器可以被配置為將操作卸載到輔助處理器,從而能夠提高處理及/或功率效率。將操作卸載到輔助處理器的操作可以包括將軟體應用的一些部分轉換或轉變成適合在設備的輔助處理器上執行的代碼、同時在不同的異構處理器中執行該軟體應用的不同部分、以及將執行結果傳送回應用處理器。例如,行動設備可以被配置為分析軟體應用的目標代碼,辨識在執行目標代碼期間需要執行的操作,基於所辨識的操作將目標代碼劃分成目標程式碼片段,決定目標程式碼片段是否可以在輔助處理器中執行,將一或多個目標程式碼片段轉換成適合在輔助處理器中執行的格式,並使得輔助處理器與在應用處理器上執行的未轉變的目標程式碼片段並行地執行經轉變的目標程式碼片段。
經由在輔助處理器中執行代碼部分中的一些,當與僅僅在行動設備的主應用處理器或CPU中執行整個軟體應用相比時,可以在效能、效率及/或功耗(本案中的「效能特徵」)態樣達到顯著收益。但是,現有記憶體管理系統可能限制了在行動設備中使用這些方案的有效性。
由於現代行動計算裝置架構的複雜性,行動設備的效能特徵很大程度上取決於設備的通訊匯流排的速度、寬度和頻寬。然而,當將代碼部分卸載到輔助處理器並將執行結果發送給應用處理器時,現有的記憶體管理系統可能需要廣泛使用系統匯流排來向記憶體寫入資料以及從記憶體讀取資料。對設備的通訊匯流排的這種廣泛使用可能減少或抵消了經由卸載操作在效能、效率或功耗態樣獲得的任何收益。
各個態樣提供了對在多處理器系統中在兩個或多個異構處理器(例如,應用處理器和輔助處理器)之間共用的儲存區域進行存取的改進的記憶體管理方案。經由允許異構處理器對相同的儲存區域進行讀取和寫入並且對此類共用儲存區域提供存取和使用,各個態樣減少了當將軟體應用的一些部分卸載到行動設備的輔助處理器中並在輔助處理器中執行時經由系統匯流排及/或組織傳送的信息量。
通常,多處理器系統之每一者異構處理器包括:獨立於系統中的其他作業系統和處理器的、執行記憶體管理操作的作業系統。例如,多處理器系統可以包括:執行第一類型作業系統(例如,FreeBSD、LINUX、OS X等)的第一處理器、以及執行第二類型作業系統(例如,微軟Windows 8)的第二處理器。這些作業系統中的每一個可以包括用於由在其處理器上執行的應用程式來管理系統記憶體的分配和使用的記憶體管理系統。例 如,每個作業系統可以包括虛擬記憶體管理器(OS VMM),該虛擬記憶體管理器(OS VMM)被配置為向應用程式分配虛擬記憶體位址並確保由一個程序所使用的記憶體不會干擾已經由另一程序使用的記憶體。當程序需要存取實體記憶體時,由專用於處理器的記憶體管理單元(MMU)將這些虛擬位址轉變成實體記憶體位址。
因而,在現有系統中,每個處理器使用獨立的作業系統和單獨的MMU來執行記憶體管理操作,並且在處理器之間沒有用於協調記憶體位址的分配和使用的執行控制。但是,多處理器系統可以包括其異構處理器中的兩個或多個異構處理器可存取的儲存區域。因此,若當執行卸載操作時,兩個或更多個處理器可以經由引用共用記憶體進行通訊,則這會是有利的。例如,若處理器經由引用共用記憶體進行通訊,則當將軟體應用的一部分卸載到輔助處理器時,經由系統匯流排/結構傳送的信息量將減少。然而,現有的記憶體管理方案需要每個處理器執行獨立於系統中的其他處理器的記憶體定址操作,且作為結果,處理器不能傳送指標、相對位址、虛擬位址、或經由引用共用記憶體。
例如,使用現有的記憶體管理方案存取共用儲存區域可能需要第一處理器中的第一程序(P1)建立共用儲存區域,向第二處理器中的第二程序(P2)告知存在共用記憶體,向第一處理器中的第一作業系統核心發出請求以將共用儲存區域映射到其定址空間,以及接收針對 共用儲存區域的虛擬位址(VA1)分配(亦即,第一作業系統可以向第一程序分配虛擬位址VA1)。第二程序(P2)可以接收存在共用儲存區域的通知,向第二處理器中的第二作業系統核心發出請求以映射共用儲存區域,以及接收針對該相同共用儲存區域的不同的虛擬位址(VA2)分配。
由於在習知系統中,每個作業系統獨立地分配虛擬位址,且在處理器之間不存在用於協調對這些記憶體位址的分配或使用的執行控制,所以由第一處理器針對共用儲存位置而分配的虛擬位址(VA1)將與由第二處理器針對相同的共用儲存位置所分配的虛擬位址(VA2)不同。因為這些虛擬位址不同,所以這兩個處理器不能直接傳送指標、相對位址、虛擬位址、或經由引用共用記憶體。
作為示例,考慮一種情形,在該情形中,執行在第一處理器中的第一程序(P1)在共用儲存區域中建立了鏈表(例如,清單[資料,下一個]),使得鏈表的「下一個」欄位包括後續的節點/位址的虛擬位址。若P1要試圖使用現有方案,經由將清單頭部的虛擬位址傳遞給P2,來與第二處理核心中執行的第二程序(P2)共用該鏈表,則P2必須重新計算所有的「下一個」指標,因為其針對共用的儲存區域具有不同的虛擬位址(亦即,VA2)。重新計算這些指標是對資源的低效使用,其對多處理器系統的效能和功耗特徵造成了負面影響。
經由將多處理器系統組態為分配儲存位址使得可以在兩個不同的異構處理器中使用相同的虛擬位址來引用相同的實體位址,各態樣克服了習知系統中的這些局限性。經由在不同的處理器中分配相同的虛擬位址,各個態樣允許處理器避免執行位址轉變操作並更直接地傳送指標、相對位址、虛擬位址、或經由引用共用記憶體。各個態樣減少了當將通用軟體應用的一些部分卸載到輔助處理器時執行的操作量,從而提高了行動設備的效能特性。各個態樣亦減少了經由系統匯流排和結構所傳送的信息量,從而進一步提高了設備的效能特性。
一態樣,行動設備的第一處理核心可以被配置為建立共用儲存區域,產生共用儲存區域的映射,以及向行動設備的第二處理核心發送映射。第二處理核心可以被配置為接收映射,將所接收的映射與其虛擬儲存區域(VMA)或其自身的共用儲存區域的映射中的位址範圍進行比較,辨識兩個映射/位址之間的交集(例如,雙方未使用的虛擬位址的範圍),並將所辨識的交集傳送回第一處理核心。第一和第二處理核心兩者皆可以使用在所辨識的交集中包含的公共虛擬位址來引用共用儲存區域中的實體位址。這允許第一和第二處理器上的第一和第二程序(亦即,P1和P2)傳送指標、相對位址、虛擬位址、儲存引用等。
各個態樣可以在多處理器電腦系統上實現,包括諸如在圖1中所圖示的片上系統(SOC)。SOC 100 可以包括多個異構處理核心,例如數位信號處理器(DSP)102、數據機處理器104、圖形處理器106、以及應用處理器108。SOC 100亦可以包括一或多個協同處理器110(例如,向量輔助處理器等),該等一或多個協同處理器110連接到異構處理器102、104、106、108中的一或多個。各處理器102、104、106、108、110可以包括一或多個核心,並且各處理器/核心可以執行獨立於其他處理器/核心的操作。例如,SOC 100可以包括執行第一類型作業系統(例如,FreeBSD、LINUX、OS X等)的處理器和執行第二類型作業系統(例如,微軟®Windows 8)的處理器。
處理器102、104、106、108、110可以是相互鄰近(例如,位於單個基板、晶片、集成晶片上)的獨立處理核心。與若資料信號不得不離開晶片的可能的頻率/時脈速率相比,處理器102、104、106、108、110的鄰近度允許記憶體112以高得多的頻率/時脈速率進行操作。此外,處理器102、104、106、108、110的鄰近度允許共用片上記憶體和資源(例如,電壓軌)、以及用於核心之間更協調的合作。
處理器102、104、106、108可以經由互連/匯流排模組124相互連接且互連到一或多個記憶體單元112、系統資源116和定製電路114,該互連/匯流排模組124可以包括可重新配置的邏輯閘陣列及/或實現匯流 排架構(例如,核心連接、AMBA等)。可以由諸如高效能片上網路(NoC)之類的高級互連來提供通訊。
應用處理器108可以是中央處理單元(CPU)、CPU的元件、或耦合到CPU的處理單元。在一態樣中,CPU可以被配置為向處理器102-110、系統元件、資源、或周邊設備的各種記憶體讀取和寫入資訊。在一態樣,處理器可以經由相應的處理器102-110、資源、及/或周邊設備的儲存管理系統控制器向記憶體進行讀取和寫入。
片上系統(SOC)100可以包括連接到處理器102-108中的一或多個處理器的協同處理器110。這些協同處理器110對於處理需要快速且並存執行的應用(例如,多媒體和視訊流應用)可能是特別有用的。在一態樣,協同處理器110可以實現單指令多資料(SIMD)指令集架構(ISA),該單指令多資料(SIMD)指令集架構(ISA)包括獨立的硬體暫存器、記憶體、及/或執行硬體。在一態樣,SIMD向量輔助處理器可以是應用處理器108的一部分,或緊密地耦接到應用處理器108。
SOC 100亦可以包括類比電路和定製電路114,該類比電路和定製電路114用於管理感測器資料、類比到數位轉換、無線資料傳輸以及用於執行其他專門操作(例如,處理用於在行動設備的電子顯示器和揚聲器上呈現的已編碼的音訊和視訊信號)。
SOC 100亦可以包括系統元件和資源116,例如,電壓調節器、振盪器、鎖相迴路、周邊設備橋路、資料控制器、記憶體控制器、系統控制器、存取埠、計時器、以及用於支援在計算設備上執行的處理器和軟體客戶端(例如,網路瀏覽器等)的其他類似元件。系統元件/資源116和定製電路114亦可以包括用於與諸如相機、電子顯示器、無線通訊設備、外部記憶體晶片等周邊設備進行對接的電路。
SOC 100亦可以包括用於與諸如時鐘118和電壓調節器120之類的SOC外部的資源進行通訊的輸入/輸出模組(未圖示)。SOC外部的資源(例如,時鐘118、電壓調節器120)可以由內部SOC處理器/核心中的兩個或更多個共用(例如,DSP 102、數據機處理器104、圖形處理器106、應用處理器108等)。
圖2圖示了一態樣中,多處理器計算系統200的示例性邏輯和功能元件,該多處理器計算系統200包括被配置為傳送位址映射和公共虛擬位址的處理器。所圖示的電腦系統200包括硬體元件和軟體元件兩者。硬體元件可以包括應用處理器108、數位信號處理器(DSP)102、互連模組124、以及共用記憶體112模組。軟體元件可以包括主作業系統202、DSP作業系統204、處理器間通訊模組206、主作業系統使用者程序(程序A)208、以及DSP程序(程序B)210。在各個態樣中,處理器間通訊模組可以被包括作為虛擬機器、主作業系統202、客戶作 業系統、高級作業系統(HLOS)、監視器代理、管理程式等的一部分。DSP程序210可以是被配置為使數位元信號處理器102執行一或多個操作的子常式、程序、程序、執行緒、或服務。主作業系統使用者程序208可以是通用軟體應用程式的程序。
通常,在一個處理核心中共用、存取及/或操作的程序可以經由快速記憶體讀/寫操作進行通訊。另一態樣,不同處理核心中的獨立程序之間的通訊通常經由相對較慢的函式撥叫、方法調用、程序調用、訊息交換、域通訊端(例如,Unix域通訊端)或其他形式的程序間通訊(IPC)來完成。遠端程序調用(RPC)和遠端方法調用(RMI)是程序間通訊,其允許調用程序來使得子常式、程序、程序、執行緒或服務(本案中統稱為「服務」)在通常位於另一處理器、晶片、或計算設備上的另一位址空間中執行。
在多處理器系統中,可用於不同處理器(例如,處理器108、102)的記憶體和資源經常在分開的域中(例如,保護域、實體域等)。此外,處理器通常用不同的作業系統進行配置、及/或實施不同的硬體描述語言(HDL)或指令集架構(ISA)。在此類系統中,RPC/RMI機制可以提供良好定義的介面,其允許在第一處理器上的調用程序以使得服務在第二處理器中執行,並使第二處理器將服務執行的結果發送回第一處理器。
參照圖2,主作業系統使用者程序208可以調用DSP程序210,並使其開始執行DSP 102上的通用應用程式操作。在完成操作之後,DSP服務210可以將那些操作的結果傳送給主作業系統使用者程序208。在各個實施例中,此類處理器間通訊可以經由處理器間通訊模組206來完成,該處理器間通訊模組206可以被配置為經由上文所討論的IPC機制中的任何一個或經由直接記憶體讀/寫操作來執行、管理、或便於實現處理器108、102之間的通訊。
圖3圖示了根據各個態樣可以被配置為實現記憶體管理方案的示例性處理核心(例如,應用處理器108等)的邏輯元件和介面。所圖示的電腦系統架構300包括硬體元件322和軟體元件320兩者。軟體元件320可以包括作業系統302、庫模組304、以及一或多個應用程式(A0-An)306。硬體元件322可以包括周邊設備308(例如,硬體加速器、輸入/輸出設備等)、中央處理單元(CPU)310、中央處理單元記憶體管理單元(CPU MMU)316、一或多個系統記憶體管理單元(本案中是指「系統MMU」或「SMMU」)312,以及一或多個記憶體314。
通常,可以將針對行動計算裝置而寫入的應用軟體編譯成可執行代碼,該可執行代碼通常被稱為「應用」、「app」、或應用程式306。每個應用程式306可以是單個程序或執行緒、或可以包括複數個程序或執行 緒。應用程式306可以經由應用程式介面(API)向庫模組304發出高階語言(HLL)庫調用。庫模組304可以經由應用二進位介面(ABI)調用作業系統302上的服務(例如,經由作業系統調用)。作業系統302可以使用特定的指令集架構(ISA)來與硬體元件進行通訊,該特定的指令集架構是由硬體322執行的特定操作代碼(opcode)和本端命令的列表。以此方式,該指令集架構可以將硬體322定義為作業系統302所看到的那樣。
作業系統302可以被配置為在應用程式306中協調和控制各個記憶體314的分配和使用,其可以包括在多個應用程式(A0-An)306之間劃分實體記憶體。在一個態樣中,這可以經由記憶體位址空間轉變程序來實現,在該記憶體位址空間轉變程序中,作業系統302將虛擬位址(VA)分配給各個應用程式(A0-An)306,然後在執行應用程式(A0-An)306之前,基於虛擬位址(VA)來分配實體記憶體位址(PA)。
作業系統302可以包括一或多個記憶體管理系統(例如,虛擬記憶體管理器等),該等一或多個記憶體管理系統用於經由各個應用程式(A0-An)306來管理對系統記憶體的分配和使用。這些記憶體管理系統可以用於確保由一個程序所使用的記憶體不干擾已經由另一程序使用的記憶體。例如,作業系統302可以包括基於軟體的記憶體管理器,該基於軟體的記憶體管理器被配置為執行使得作業系統302能夠使特定的實體位址呈現為另一 位址(亦即,虛擬位址)的虛擬定址操作。這些虛擬定址操作可以包括向應用程式(A0-An)306分配虛擬記憶體位址。
除了上文討論的基於軟體的記憶體管理系統之外,系統亦可以包括一或多個基於硬體的記憶體管理系統,例如所描述的中央處理單元(CPU)記憶體管理單元(MMU)316和系統MMU 312。CPU MMU 316和系統MMU 312可以各自包括一或多個硬體元件,這些硬體元件負責執行這種與記憶體相關的操作,例如將虛擬位址轉變成實體位址、快取記憶體控制、匯流排仲裁和記憶體保護。
在一個態樣中,CPU MMU 316可以負責向主CPU 310提供位址轉變服務和保護功能,並且系統MMU 312可以負責向其他硬體元件(例如,數位信號處理器、數據機處理器、圖形處理器等)提供位址轉變服務和保護功能。在一個實施例中,多處理器系統之每一者處理器可以包括獨立的MMU。
記憶體管理系統(例如,CPU MMU 316等)可以包括轉變後備緩衝器(TLB,translation look-aside buffer),該TLB是可以用於記憶體位址轉變(例如,將虛擬位址轉變成實體位址等)的高速緩衝記憶體。在一個態樣中,轉變後備緩衝器(TLB)可以是內容可定址的記憶體(CAM),其可以是硬體關聯的陣列記憶體,其中儲存的資訊被組織成鍵-值格式(例如, 雜湊表)。上述鍵可以是虛擬位址且值可以是實體位址。在各個態樣中,轉變後備緩衝器可以是硬體管理的、軟體管理的、或由硬體和軟體的組合管理的。
作為記憶體位址轉變程序的一部分,記憶體管理系統(例如,OS VMM、系統MMU 312、CPU MMU 316等)可以經由向轉變後備緩衝器發送虛擬位址作為鍵來執行內容可定址的記憶體搜尋,以便向轉變後備緩衝器請求實體位址。若虛擬位址鍵在轉變後備緩衝器中具有相應的實體位址值(亦即,「TLB命中」發生),則內容可定址的記憶體搜尋可以獲取並返回相應的實體位址。若所請求的位址不在轉變後備緩衝器中(亦即,「TLB缺失」發生),則記憶體位址轉變程序可以經由讀取多個記憶體位置的內容並計算實體位址來執行頁面遊動(例如,軟體頁面遊動、硬體頁面遊動等)。在經由頁面遊動來決定實體位址之後,可以在轉變後備緩衝器中儲存虛擬位址到實體位址的映射。
在包括軟體管理的轉變後備緩衝器的態樣中,TLB缺失可以使得作業系統遊動頁面表格並在軟體中執行轉變。在包括硬體管理的轉變後備緩衝器的態樣中,記憶體管理系統可以執行硬體表格遊動,以決定是否存在針對指定虛擬位址鍵的有效頁面表格條目。
圖4圖示了一態樣中的多處理器計算系統400,該多處理器計算系統400具有共用記憶體112和複數個異構處理器102、108,其中每個異構處理器包括獨 立的作業系統和分開的記憶體管理單元(MMU)402、408。
使用現有的記憶體管理解決方案,存取共用儲存區域可能需要應用處理器108中的第一程序(P1)來建立共用儲存區域,(例如,經由系統調用或IPC)向DSP 102中的第二程序告知存在共用儲存區域,向應用處理器的作業系統核心發出用於將共用儲存區域映射到其位址空間的請求,並接收針對共用儲存區域的虛擬位址(VA1)分配。第二程序(P2)可以從第一程序(P1)接收通知,向DSP作業系統核心發出用於映射共用儲存區域的請求,並且接收針對該同一共用儲存區域的另一個不同的虛擬位址(VA2)。
如上文所討論的,由於每個作業系統獨立地分配虛擬位址並且在處理器之間沒有用於協調這些記憶體位址的分配和使用的執行控制,所以由第一處理器針對共用儲存位置所分配的虛擬位址(VA1)將與由第二處理器針對相同的共用儲存位置所分配的虛擬位址(VA2)不同。這樣一來,兩個處理器不能直接傳送指標、相對位址、虛擬位址或經由引用共用記憶體,不同的虛擬位址是在不同處理器中分配的。
在各個態樣中,多處理器計算系統400可以被配置為分配記憶體位址,使得可以由兩個異構處理器102、108使用同一虛擬位址,以便引用共用的記憶體114中的同一實體位址。經由在不同的處理器中分配相同 的虛擬位址,各個態樣允許處理器傳送指標、相對位址、虛擬位址或經由引用共用記憶體。各個態樣亦減少了當將通用軟體應用的一些部分卸載到輔助處理器時所執行的操作量,從而提高了系統400的效能特性。各個態樣亦減少了經由系統匯流排和結構所傳送的信息量,從而進一步提高了設備的效能特性。
通常,作業系統追蹤程序位址空間,作為所謂的虛擬儲存區域的位址範圍清單。在作業系統核心中的任務結構維護標識由程序所使用的虛擬位址範圍的虛擬儲存區域(VMA)的清單。
在各個態樣中,多處理器計算系統400可以被配置為使得當執行在應用處理器108中的第一程序(P1)建立共用儲存區域時,其映射儲存區域並將該映射發送給DSP 102。然後,執行在DSP 102中的第二程序(P2)將所接收的位址映射與其位址範圍或其自身的共用儲存區域的映射進行比較,辨識在兩個映射/位址之間的交集(例如,雙方未使用的虛擬位址的範圍),並將所辨識的交集傳送回應用處理器108。然後,兩個處理器102、108將共用儲存區域映射到在交集中所辨識的公共虛擬位址。
圖5A圖示了提供對多處理器計算設備中的通用應用處理器和輔助處理器(例如,DSP)之間共用的儲存區域進行存取的方法500的一態樣。方法500的一態樣可以在行動計算裝置中由具有第一作業系統(OS)核心應用處理器和具有第二OS核心的輔助處理器來執行。 在方塊502中,應用處理器可以請求(例如,經由系統調用第一OS核心)與輔助處理器進行位址協商。這可以由第一應用處理器中的第一程序(P1)向第一OS核心發出系統調用,請求與第二處理核心中的第二程序(P2)進行位址協商來完成。
在方塊504中,應用處理器可以回應於請求位址協商來接收/獲得第一程序(P1)的位址映射。在一個態樣中,可以經由輔助處理器中的位址協商處理執行緒,在輔助處理器中接收第一程序(P1)的位址映射。在方塊506中,應用處理器可以向第二處理核心發送所獲得的位址映射。在方塊508中,應用處理器可以等待來自輔助處理器的回應及/或執行其他處理任務。
在方塊510中,輔助處理器可以從應用處理器接收第一程序(P1)的位址映射。在方塊512中,輔助處理器可以請求並獲得第二程序(P2)的位址映射,例如經由向第二OS核心發出系統調用。在方塊514中,輔助處理器可以實施/執行位址匹配常式/程序以決定第一程序和第二程序(P1和P2)的位址映射是否包括任何匹配的虛擬位址或交集。這可以經由排序和比較位址或經由此項技術中已知的任何位址匹配演算法來完成。
在判斷方塊516中,輔助處理器可以判斷位址匹配常式是否辨識出任何匹配的位址或交集。當輔助處理器決定第一和第二程序(P1和P2)的位址映射不包括任何匹配的位址或交集時(例如,決定方塊516=「否」), 則在方塊524中,輔助處理器可以使用習知方案來映射針對第二程序(P2)的共用儲存區域的實體頁面。
當輔助處理器決定第一和第二程序(P1和P2)的位址映射包括匹配的位址或交集時(亦即,判斷方塊516=「是」),則在方塊518中,輔助處理器經由將匹配的虛擬位址儲存為第二OS核心中的共用儲存區域的屬性,來將這些匹配的虛擬位址儲存為公共虛擬位址。亦即,每個程序的邏輯位址空間可以包括映射的儲存區域,且每個映射的儲存區域可以包括各種屬性,例如用於控制防寫並且決定記憶體是否可共用。在方塊518中,輔助處理器可以將匹配的虛擬位址儲存為共用儲存區域的這些屬性中的一個屬性。在方塊520中,輔助處理器可以在針對第二程序(P2)的公共位址處映射共用儲存區域的實體頁面。在方塊522中,輔助處理器可以將公共虛擬位址發送給應用處理器。
在判斷方塊516中,應用處理器可以輪詢通訊連接埠或通訊端,以判斷是否從輔助處理器接收到公共虛擬位址。當應用處理器決定沒有接收到公共虛擬位址且已經經過了足夠的時間量(例如,判斷方塊526=「否」)時,在方塊532中,應用處理器可以使用習知方案來針對第一程序(P1)映射共用儲存區域的實體頁面。
當應用處理器決定接收到公共虛擬位址時(亦即,判斷方塊526=「是」),應用處理器可以在方塊528中將公共虛擬位址儲存為第一OS核心中的共用儲存區域 的屬性。在方塊530中,應用處理器可以在針對第一程序(P1)的公共位址處映射共用儲存區域的實體頁面。
圖5B圖示了一個態樣中,將通用軟體應用的一些部分卸載到輔助處理器(例如,DSP)的方法550。方法550的操作可以由多處理器計算設備中的應用處理器來執行。
在方塊552中,應用處理器可以分析通用軟體應用,以辨識在行動設備在應用處理器中執行期間需要在該行動設備中執行的操作。在方塊554中,應用處理器可以基於所辨識的操作,將軟體應用分成段。在方塊556中,應用處理器可以決定一段通用軟體應用可以在輔助處理器中執行。在方塊558中,應用處理器可以將該段轉換、轉變或編譯成適合在輔助處理器中執行的代碼。在方塊560中,應用處理器可以將所產生的代碼儲存在應用處理器和輔助處理器皆可存取的共用儲存區域中。在方塊562中,應用處理器可以使輔助處理器從共用儲存區域中取出代碼並執行代碼。在一態樣中,這可以由應用處理器向輔助處理器傳送記憶體引用(例如,經由向輔助處理器發送虛擬儲存位址或鏈表的頭部)來完成。
各個態樣可以在各種計算設備上實現,這些態樣的示例在圖6-8中示出。圖6圖示了具有智慧型電話600形式的行動計算裝置,該智慧型電話600包括多核處理器601,該多核處理器601耦接到內部記憶體602、顯示器604(例如,觸控式螢幕顯示器)以及揚聲器606。 此外,智慧型電話600可以包括用於接收和發送電磁輻射的天線608,該天線608可以連接到耦接到多核處理器601的無線資料連結及/或數據機或蜂巢式電話收發機610。智慧型電話600通常亦包括用於接收使用者輸入的功能表選擇按鈕或搖臂開關612。
多核處理器601可以包括與上文所描述的以及在圖1中所圖示的電路和結構相似的電路和結構,並且包括在圖2和圖3中所圖示的邏輯或功能元件中的任何一個或全部。數據機601亦可以包括多個處理核心,並且其可以耦接到用於接收和發送射頻信號的天線608。
通常的智慧型電話600亦可以包括聲音編碼/解碼(CODEC)電路614,該CODEC電路614將從麥克風接收的聲音數位化成適合無線傳輸的資料封包,並將所接收的聲音資料封包進行解碼,以產生向揚聲器提供的類比信號從而產生聲音。此外,多核處理器601、無線收發機610和CODEC 614中的一或多個可以包括數位信號處理器(DSP)電路(未單獨示出)。
通常的行動計算裝置將與圖7中圖示的組件有共同之處,圖7圖示了示例性的個人膝上型電腦700。此類個人電腦700通常包括多核處理器701,該多核處理器701耦接到揮發性記憶體702和諸如磁碟機704之類的大容量非揮發性記憶體。電腦700亦可以包括耦接到處理器701的壓縮光碟(CD)及/或DVD驅動器708。電腦設備700亦可以包括耦合到處理器701的、用於建立資 料連接或接收外部記憶體設備的許多連接器埠,例如用於將處理器701耦接到網路的網路連接電路。計算設備700可以具有用於發送和接收電磁輻射的無線電/天線710,該無線電/天線710連接到耦接至處理器701的無線資料連結。如在電腦領域中公知的,電腦700亦可以包括鍵盤718、定位滑鼠墊720、以及顯示器722。
各個態樣亦可以在各種市售伺服器設備中的任何一個(例如,在圖8中所圖示的伺服器800)上實現。此類伺服器800通常包括多個處理器系統,這些處理器系統中的一或多個可以是或包括多核處理器801。處理器801可以耦接到揮發性記憶體802和諸如磁碟機803之類的大容量非揮發性記憶體。伺服器800亦可以包括耦接到處理器801的軟碟機、壓縮光碟(CD)或DVD光碟機804。伺服器800亦可以包括耦接到處理器801的、用於與網路808建立資料連接的網路存取埠806,例如耦接到其他廣播系統電腦和伺服器的區域網路。
處理器601、701、801可以是任何可程式設計的多核多處理器、微電腦或多處理器晶片,這些可程式設計的多核多處理器、微電腦或多處理器晶片能夠由軟體指令(應用)配置為執行包括本案中描述的各個態樣的功能和操作的各種功能。可以提供多個處理器,例如一個專用於無線通訊功能的處理器以及一個專用於執行其他應用的處理器。通常,可以在存取軟體應用以及將這些軟體應用載入到處理器601、701、801中之前,將這些軟體 應用儲存在內部記憶體602、702、802中。在一些行動計算裝置中,可以將另外的儲存晶片(例如,安全資料(SD)卡)插入到行動設備中並耦接到處理器601、701、801中。內部記憶體602、702、802可以是揮發性記憶體、或非揮發性記憶體(例如快閃記憶體),或二者的混合。為了本描述的目的,通常提到的記憶體是指處理器601、701、801可存取的所有記憶體,包括內部記憶體602、702、802、插入到行動設備中的卸載式存放裝置器、以及在處理器601、701、801本身中的記憶體。
多處理器硬體設計,例如上文參照圖1所描述的那些,可以包括在相同封裝中的、通常位於同一片矽片上的不同能力的多個處理核心。對稱的多處理硬體包括連接到單個共用的主記憶體並由單個作業系統控制的兩個或更多個相同的處理器。不對稱的或「松耦接的」多處理硬體可以包括:兩個或更多個異構處理器/核心,其各自可以由獨立的作業系統和硬體描述語言或指令集架構來控制,並連接到一或多個共用的記憶體/資源。
用於在可程式設計處理器上執行以實現各個態樣的操作的電腦程式代碼或「代碼」可以以諸如C、C++、C #、Smalltalk、Java、JavaScript、Visual Basic、結構化查詢語言(例如,Transact-SQL)、Perl之類的高級程式設計語言或以各種其他程式設計語言來編寫。如本案中所使用的,儲存在電腦可讀取儲存媒體上 的程式碼或程式指其格式是處理器可理解的機器語言代碼(例如,目標代碼)。
將許多行動計算裝置作業系統核心組織到使用者空間(其中無特權的代碼執行)和核心空間(其中特權代碼執行)中。這種分開在安卓®和其他通用公共許可(GPL)環境中是特別重要的,在該等其他通用公共許可環境中,作為核心空間的一部分的代碼必須是GPL許可的,而執行在使用者空間中的代碼不需要是GPL許可的。應該理解的是,除非另行明確聲明,否則在此討論的各種軟體元件/模組可以在核心空間或使用者空間中執行。
如在本案中使用的,術語「元件」、「模組」、「系統」、「服務」、「引擎」、「監聽器」、「管理器」等意在包括電腦相關的實體,例如但不限於,硬體、韌體、硬體與軟體的組合、軟體、執行中的軟體,其被配置為執行特定的操作或功能。例如,元件可以是但不限於執行在處理器上的程序、處理器、物件、可執行程式、執行的執行緒、程式、及/或電腦。舉例說明,執行在計算設備上的應用和計算設備皆可以被稱為元件。一或多個元件可以常駐在程序及/或執行的執行緒中,一個元件可以位於一個處理器或核心上、及/或分佈在兩個或更多個處理器或核心之間。此外,這些元件可以從具有儲存在其上的各種指令及/或資料結構的各種非臨時性電腦可讀取媒體來執行。元件可以通過經由本端及/或遠端程序、功能或程序 調用、電子信號、資料封包、記憶體讀/寫、以及其他已知的與電腦、處理器、及/或程序相關的通訊方法的方式進行通訊。
未來,可獲得或可預期許多不同類型的記憶體和儲存技術,其全部適合用於各個態樣。此類記憶體技術/類型包括此項技術中已知的相變記憶體(PRAM)、動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體、非揮發性隨機存取記憶體(NVRAM)、偽靜態的隨機存取記憶體(PSRAM)、雙倍資料速率同步動態隨機存取記憶體(DDR SDRAM)以及其他隨機存取記憶體(RAM)和唯讀記憶體(ROM)技術。DDR SDRAM記憶體可以是雙倍資料速率(DDR)類型1同步動態隨機存取記憶體(SDRAM)記憶體、DDR類型2 SDRAM記憶體、DDR類型3 SDRAM記憶體、或DDR類型4 SDRAM記憶體。上文提及的每一儲存技術包括例如適合用於儲存指令、程式、控制信號、及/或用於在電腦或其他數位電子設備中使用或由電腦或其他數位電子設備使用的元件。除非在申請專利範圍語言中特別記載,否則對與個別類型的記憶體、介面、標準或儲存技術有關的術語及/或技術細節的任何提及僅是為了說明的目的,而不旨在將請求項的保護範圍限制到特定的儲存系統或技術。
提供前述的方法描述和程序流程圖僅僅作為說明性示例,而不旨在需要或暗示各個態樣的方塊必須按照所提供的循序執行。如將由普通熟習此項技術者應當理 解的,前述態樣中的方塊的順序可以按照任何順序來執行。諸如「此後」、「隨後」、「下一個」等詞不是旨在限制方塊的順序;這些詞僅用於引導讀者通讀方法的描述。此外,任何提及的單數形式的請求項要素,例如,使用冠詞「a」、「an」、「the」不能被解釋為將該元素限製成單數。
結合本文所揭示的態樣所描述的各種示例性的邏輯區塊、模組、電路和演算法步驟均可以實現成電子硬體、電腦軟體、或者二者的組合。為了清楚地圖示硬體和軟體之間的這種可交換性,上面已經對各種示例性的部件、方塊、模組、電路以及步驟圍繞其功能進行了整體描述。至於這種功能是實現成硬體還是實現成軟體,取決於具體應用和向整個系統施加的設計約束。熟習此項技術者可以針對每個特定應用,以變通的方式實現所描述的功能,但是,這種實現決策不應解釋為導致背離本案的保護範圍。
可以利用通用處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)或其他可程式設計邏輯裝置、個別閘門或電晶體邏輯、個別硬體部件、或者被設計為執行本文所述功能的它們的任何組合來實現或執行用於實施結合本文公開的各態樣所描述的各種示意性的邏輯、邏輯區塊、模組、以及電路的硬體。通用處理器可以是微處理器,但在可選方案中,處理器可以是任何一般的處理器、控制 器、微控制器或狀態機。亦可以將處理器實現為計算設備的組合,例如,DSP和微處理器的組合、多個微處理器、結合有DSP核心的一或多個微處理器、或者任何其他這類配置。或者,一些步驟或方法可以由專門針對給定功能的電路來執行。
在一或多個示例性的態樣,所述功能可以用硬體、軟體、韌體或其任意組合的方式來實現。若使用軟體實現,則可以將這些功能作為一或多個指令或代碼儲存在非臨時性電腦可讀取媒體或者非臨時性處理器可讀取媒體上。本案中公開的方法或演算法的步驟可以具體實現在處理器可執行的軟體模組中,該處理器可執行的軟體模組可以常駐在非臨時性電腦可讀的或處理器可讀的儲存媒體上。非臨時性電腦可讀的或處理器可讀的儲存媒體可以是可以由電腦或處理器存取的任何儲存媒體。經由示例而非限制的方式,這種非臨時性電腦可讀或處理器可讀的媒體可以包括RAM、ROM、EEPROM、快閃記憶體、CD-ROM或其他光碟記憶體、磁碟記憶體或其他磁性存放裝置、或者能夠用於儲存具有指令或資料結構形式的期望的程式碼並可以由電腦存取的任何其他媒體。如本案所使用的,磁碟和光碟包括壓縮光碟(CD)、鐳射光碟、光碟、數位多功能光碟(DVD)、軟碟和藍光光碟,其中磁碟通常磁性地複製資料,而光碟則用鐳射來光學地複製資料。上面的組合亦應當被包括在非臨時性電腦可讀取媒體和處理器可讀取媒體的範圍之內。此外,方法和演算 法的操作可以作為代碼及/或指令中的一個或任何組合,或代碼及/或指令集常駐在非臨時性處理器可讀取媒體及/或電腦可讀取媒體上,該非臨時性處理器可讀取媒體及/或電腦可讀取媒體可以併入電腦程式產品。
提供所揭示的態樣的以上描述使此項技術中的任何技藝人士能夠實現或使用本發明。對於熟習此項技術者來說,對這些態樣的各種修改是顯而易見的,並且本案定義的整體原理亦可以在不脫離本發明的精神或保護範圍的前提下適用於其他態樣。因此,本發明並不旨在限於本案中示出的態樣,而是與後面的申請專利範圍和本案所揭示的原理和新穎特徵的最寬範圍相一致。
500‧‧‧方法
502‧‧‧方塊
504‧‧‧方塊
506‧‧‧方塊
508‧‧‧方塊
510‧‧‧方塊
512‧‧‧方塊
514‧‧‧方塊
516‧‧‧方塊
518‧‧‧方塊
520‧‧‧方塊
522‧‧‧方塊
524‧‧‧方塊
526‧‧‧方塊
528‧‧‧方塊
530‧‧‧方塊
532‧‧‧方塊

Claims (14)

  1. 一種對具有一第一處理核心和一第二處理核心的一多處理器計算設備的一共用儲存區域提供存取的方法,該方法包括以下步驟:由該第一處理核心中的一第一程序請求與該第二處理核心中的一第二程序進行位址協商;回應於請求與該第二處理核心中的該第二程序進行位址協商,在該第一處理核心中獲取該第一程序的一第一位址映射;向該第二處理核心發送該第一位址映射,以為了使得該第二處理核心獲得在該第二處理核心中的該第二程序的一第二位址映射;回應於向該第二處理核心發送該第一位址映射,在該第一處理核心中接收一公共虛擬位址,該接收的公共虛擬位址包括:被包含在該第一程序的該第一位址映射和該第二程序的該第二位址映射二者中的一位址;將該接收的公共虛擬位址儲存為該第一處理核心的一第一作業系統核心內的該共用儲存區域的一第一屬性;及在該第一程序的該接收的公共虛擬位址處映射該共用儲存區域。
  2. 根據請求項1述及之方法,亦包括以下步驟: 在該第二處理核心中執行位址匹配操作,以決定該第一位址映射和該第二位址映射是否包括一匹配的虛擬位址;將該匹配的虛擬位址作為該公共虛擬位址並且作為該第二處理核心的一第二作業系統核心的該共用儲存區域的一第二屬性進行儲存;向該第一處理核心發送該公共虛擬位址;及在針對該第二處理核心的該第二程序的該公共虛擬位址處映射該共用儲存區域的實體頁面。
  3. 根據請求項2述及之方法,其中該第一處理核心和該第二處理核心之每一者處理核心包括一硬體記憶體管理單元(MMU)。
  4. 根據請求項2述及之方法,其中在該第二處理核心中接收該第一位址映射包括以下步驟:在該第二處理核心的一位址協商處理執行緒中接收該第一位址映射。
  5. 一種多處理器計算設備,包括:用於由一第一處理核心中的一第一程序請求與一第二處理核心中的一第二程序進行位址協商的手段;用於回應於請求與該第二處理核心中的該第二程序進行位址協商,在該第一處理核心中獲取該第一程序的一第一位址映射的手段; 用於向該第二處理核心發送該第一位址映射以為了使得該第二處理核心獲得在該第二處理核心中的該第二程序的一第二位址映射的手段;用於回應於向該第二處理核心發送該第一位址映射,在該第一處理核心中接收一公共虛擬位址的手段,該接收的公共虛擬位址包括:被包含在該第一程序的該第一位址映射和該第二程序的該第二位址映射二者中的一位址;用於將該接收的公共虛擬位址儲存為該第一處理核心的一第一作業系統核心內的一共用儲存區域的一第一屬性的手段;及用於在該第一程序的該接收的公共虛擬位址處映射該共用儲存區域的手段。
  6. 根據請求項5述及之多處理器計算設備,亦包括:用於在該第二處理核心中執行位址匹配操作,以決定該第一位址映射和該第二位址映射是否包括一匹配的虛擬位址的手段;用於將該匹配的虛擬位址作為該公共虛擬位址並且作為該第二處理核心的一第二作業系統核心的該共用儲存區域的一第二屬性進行儲存的手段;用於向該第一處理核心發送該公共虛擬位址的手段;及 用於在針對該第二處理核心的該第二程序的該公共虛擬位址處映射該共用儲存區域的實體頁面的手段。
  7. 根據請求項6述及之多處理器計算設備,其中用於接收該第二處理核心中的該第一位址映射的手段包括:用於在該第二處理核心的一位址協商處理執行緒中接收該第一位址映射的手段。
  8. 一種多處理器計算設備,包括:一第一處理核心;一第二處理核心;及一共用儲存區域,該共用儲存區域耦接到該第一處理核心和該第二處理核心,其中該第一處理核心被配置為具有處理器可執行指令,以執行包括如下各項的操作:由一第一程序請求與該第二處理核心中的一第二程序進行位址協商;回應於請求與該第二處理核心中的該第二程序進行位址協商,獲取該第一程序的一第一位址映射;向該第二處理核心發送該第一位址映射,以為了使得該第二處理核心獲得在該第二處理核心中的該第二程序的一第二位址映射;回應於向該第二處理核心發送該第一位址映射,接收一公共虛擬位址,該接收的公共虛擬位址包括:被包含在該第一程序的該第一位址映射和該第二程序的該第二位址映射二者中的一位址; 將該接收的公共虛擬位址儲存為一第一作業系統核心內的該共用儲存區域的一第一屬性;及在該第一程序的該接收的公共虛擬位址處映射該共用儲存區域。
  9. 根據請求項8述及之多處理器計算設備,其中該第二處理核心被配置為具有處理器可執行指令,以執行包括如下各項的操作:執行位址匹配操作,以決定該第一位址映射和該第二位址映射是否包括一匹配的虛擬位址;將該匹配的虛擬位址作為該公共虛擬位址並且作為一第二作業系統核心的該共用儲存區域的一第二屬性進行儲存;向該第一處理核心發送該公共虛擬位址;及在針對該第二程序的該公共虛擬位址處映射該共用儲存區域的實體頁面。
  10. 根據請求項9述及之多處理器計算設備,其中該第一處理核心和該第二處理核心之每一者處理核心包括一硬體記憶體管理單元(MMU)。
  11. 根據請求項9述及之多處理器計算設備,其中該第二處理核心被配置為具有處理器可執行指令,以執行如下操作:使得接收該第一位址映射包括在一位址協商處理執行緒中接收該第一位址映射。
  12. 一種非臨時性電腦可讀取儲存媒體,具有儲存在其上的處理器可執行的軟體指令,該等處理器 可執行的軟體指令被配置為使得一多處理器計算設備的一第一處理核心執行包括如下各項的操作:由一第一程序請求與該多處理器計算設備的一第二處理核心中的一第二程序進行位址協商;回應於請求與該第二處理核心中的該第二程序進行位址協商,獲取該第一程序的一第一位址映射;向該第二處理核心發送該第一位址映射,以為了使得該第二處理核心獲得在該第二處理核心中的該第二程序的一第二位址映射;回應於向該第二處理核心發送該第一位址映射,來接收一公共虛擬位址,該接收的公共虛擬位址包括:被包含在該第一程序的該第一位址映射和該第二程序的該第二位址映射二者中的一位址;將該接收的公共虛擬位址儲存為一第一作業系統核心內的一共用儲存區域的一第一屬性;及在該第一程序的該接收的公共虛擬位址處映射該共用儲存區域。
  13. 根據請求項12述及之非臨時性電腦可讀取儲存媒體,其中所儲存的處理器可執行軟體指令被配置成使得該多處理器計算設備的該第二處理核心執行包括如下各項的操作:執行位址匹配操作,以決定該第一位址映射和該第二位址映射是否包括一匹配的虛擬位址; 將該匹配的虛擬位址作為該公共虛擬位址並且作為一第二作業系統核心的該共用儲存區域的一第二屬性進行儲存;向該第一處理核心發送該公共虛擬位址;及在針對該第二程序的該公共虛擬位址處映射該共用儲存區域的實體頁面。
  14. 根據請求項13述及之非臨時性電腦可讀取儲存媒體,其中所儲存的處理器可執行軟體指令被配置為使得該多處理器計算設備的該第二處理核心執行如下操作:使得接收該第一位址映射包括在一位址協商處理執行緒中接收該第一位址映射。
TW103127105A 2013-08-07 2014-08-07 用於針對異構多處理器系統中的共用儲存區域進行動態位址協商的方法、多處理器計算設備及非臨時性電腦可讀取儲存媒體 TWI587209B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/961,085 US9311011B2 (en) 2013-08-07 2013-08-07 Dynamic address negotiation for shared memory regions in heterogenous multiprocessor systems

Publications (2)

Publication Number Publication Date
TW201519080A TW201519080A (zh) 2015-05-16
TWI587209B true TWI587209B (zh) 2017-06-11

Family

ID=51390221

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103127105A TWI587209B (zh) 2013-08-07 2014-08-07 用於針對異構多處理器系統中的共用儲存區域進行動態位址協商的方法、多處理器計算設備及非臨時性電腦可讀取儲存媒體

Country Status (7)

Country Link
US (1) US9311011B2 (zh)
EP (1) EP3030967B1 (zh)
JP (1) JP6110038B2 (zh)
KR (1) KR101722379B1 (zh)
CN (1) CN105431827B (zh)
TW (1) TWI587209B (zh)
WO (1) WO2015021037A1 (zh)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9236064B2 (en) 2012-02-15 2016-01-12 Microsoft Technology Licensing, Llc Sample rate converter with automatic anti-aliasing filter
US9678872B2 (en) * 2015-01-16 2017-06-13 Oracle International Corporation Memory paging for processors using physical addresses
US10157160B2 (en) 2015-06-04 2018-12-18 Intel Corporation Handling a partition reset in a multi-root system
US9990327B2 (en) * 2015-06-04 2018-06-05 Intel Corporation Providing multiple roots in a semiconductor device
US9665415B2 (en) * 2015-09-26 2017-05-30 Intel Corporation Low-latency internode communication
US10095517B2 (en) * 2015-12-22 2018-10-09 Intel Corporation Apparatus and method for retrieving elements from a linked structure
US10628192B2 (en) * 2015-12-24 2020-04-21 Intel Corporation Scalable techniques for data transfer between virtual machines
CN105573852B (zh) * 2016-02-03 2018-11-30 南京大学 一种虚拟地址隔离环境下超高速数据对象通信的方法
KR102650828B1 (ko) * 2016-05-20 2024-03-26 삼성전자주식회사 둘 이상의 프로세서에 의해 공유되는 메모리 장치 및 상기 메모리 장치를 포함하는 시스템
US10380342B2 (en) * 2016-07-29 2019-08-13 Qualcomm Incorporated Kernel-based detection of target application functionality using virtual address mapping
US10296074B2 (en) * 2016-08-12 2019-05-21 Qualcomm Incorporated Fine-grained power optimization for heterogeneous parallel constructs
US10152243B2 (en) * 2016-09-15 2018-12-11 Qualcomm Incorporated Managing data flow in heterogeneous computing
US10248565B2 (en) * 2016-09-19 2019-04-02 Qualcomm Incorporated Hybrid input/output coherent write
CN106681847B (zh) * 2016-12-30 2020-08-11 深圳Tcl数字技术有限公司 基于Android系统的消息处理方法及装置
CN106791152B (zh) * 2016-12-30 2019-08-27 Oppo广东移动通信有限公司 一种通信方法及移动终端
US10776144B2 (en) * 2017-01-08 2020-09-15 International Business Machines Corporation Address space management with respect to a coherent accelerator processor interface architecture
US10496292B2 (en) * 2017-01-19 2019-12-03 International Business Machines Corporation Saving/restoring guarded storage controls in a virtualized environment
KR101857907B1 (ko) 2017-02-15 2018-05-14 포항공과대학교 산학협력단 IoT 디바이스를 위한 이기종 분산 공유 메모리
US10289330B2 (en) 2017-03-30 2019-05-14 Western Digital Technologies, Inc. Allocating shared memory among multiple tasks in a multiprocessor environment
CN109426571B (zh) * 2017-08-28 2022-05-13 阿里巴巴集团控股有限公司 函数调用和数据访问的方法、系统、存储介质、处理器和装置
CN109460373B (zh) * 2017-09-06 2022-08-26 阿里巴巴集团控股有限公司 一种数据共享方法、终端设备和存储介质
WO2019080150A1 (zh) * 2017-10-25 2019-05-02 华为技术有限公司 一种双活存储系统和地址分配方法
CN109840225B (zh) * 2017-11-27 2023-06-09 中国航空工业集团公司西安航空计算技术研究所 一种异构双核处理器访问eFPGA的控制电路
US10924508B2 (en) * 2017-12-21 2021-02-16 Sonicwall Inc. Providing access to data in a secure communication
US10853134B2 (en) * 2018-04-18 2020-12-01 Xilinx, Inc. Software defined multi-domain creation and isolation for a heterogeneous System-on-Chip
US11275587B2 (en) 2018-05-02 2022-03-15 Micron Technology, Inc. Static identifications in object-based memory access
CN109240602B (zh) * 2018-08-06 2021-01-15 联想(北京)有限公司 数据存取方法
US11347653B2 (en) * 2018-08-31 2022-05-31 Nyriad, Inc. Persistent storage device management
US11544069B2 (en) * 2018-10-25 2023-01-03 Micron Technology, Inc. Universal pointers for data exchange in a computer system having independent processors
US10296451B1 (en) * 2018-11-01 2019-05-21 EMC IP Holding Company LLC Content addressable storage system utilizing content-based and address-based mappings
KR20200109973A (ko) * 2019-03-15 2020-09-23 에스케이하이닉스 주식회사 메모리 공유를 위한 메모리 시스템 및 그것을 포함하는 데이터 처리 시스템
US11748178B2 (en) * 2019-04-02 2023-09-05 Intel Corporation Scalable and accelerated function as a service calling architecture
US11256624B2 (en) 2019-05-28 2022-02-22 Micron Technology, Inc. Intelligent content migration with borrowed memory
US11334387B2 (en) 2019-05-28 2022-05-17 Micron Technology, Inc. Throttle memory as a service based on connectivity bandwidth
US11061819B2 (en) * 2019-05-28 2021-07-13 Micron Technology, Inc. Distributed computing based on memory as a service
US11438414B2 (en) * 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections
US11100007B2 (en) 2019-05-28 2021-08-24 Micron Technology, Inc. Memory management unit (MMU) for accessing borrowed memory
US11169930B2 (en) 2019-05-28 2021-11-09 Micron Technology, Inc. Fine grain data migration to or from borrowed memory
CN110569066B (zh) * 2019-07-26 2023-08-01 深圳震有科技股份有限公司 多核系统共用代码段的控制方法、智能终端及存储介质
US11119931B1 (en) * 2019-09-18 2021-09-14 Facebook Technologies, Llc Data pipeline for microkernel operating system
CN110650020B (zh) * 2019-09-25 2022-05-10 天津市滨海新区信息技术创新中心 拟态模糊判决方法、装置及系统
CN111190854B (zh) * 2019-12-31 2024-03-26 京信网络系统股份有限公司 通信数据处理方法、装置、设备、系统和存储介质
US11385820B2 (en) * 2020-03-04 2022-07-12 Micron Technology, Inc. Command batching for a memory sub-system
US11474885B2 (en) 2020-04-07 2022-10-18 Micron Technology, Inc. Method for an internal command of a first processing core with memory sub-system that caching identifiers for access commands
CN112214444A (zh) * 2020-09-24 2021-01-12 深圳云天励飞技术股份有限公司 一种核间通信方法、arm、dsp及终端
CN112230931B (zh) * 2020-10-22 2021-11-02 上海壁仞智能科技有限公司 适用于图形处理器的二次卸载的编译方法、装置和介质
CN115185450A (zh) 2021-04-01 2022-10-14 戴尔产品有限公司 用于迁移、复制和备份的基于阵列的拷贝机制
CN113641404A (zh) * 2021-07-20 2021-11-12 北京百度网讯科技有限公司 程序运行方法、装置、处理器芯片、电子设备和存储介质
CN116033342B (zh) * 2022-05-30 2023-11-24 荣耀终端有限公司 地理围栏的处理方法、设备及存储介质
CN117807016A (zh) * 2024-03-01 2024-04-02 上海励驰半导体有限公司 多核异构系统与外部设备的通信方法、设备、存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6601146B2 (en) * 1998-06-16 2003-07-29 International Business Machines Corporation Technique for efficiently transferring moderate amounts of data across address space boundary
TW200622908A (en) * 2004-09-30 2006-07-01 Ibm System and method for sharing resources between real-time and virtualizing operating systems

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7073173B1 (en) * 2000-12-04 2006-07-04 Microsoft Corporation Code and thread differential addressing via multiplex page maps
US7305492B2 (en) * 2001-07-06 2007-12-04 Juniper Networks, Inc. Content service aggregation system
US7321958B2 (en) * 2003-10-30 2008-01-22 International Business Machines Corporation System and method for sharing memory by heterogeneous processors
US8255922B1 (en) 2006-01-09 2012-08-28 Oracle America, Inc. Mechanism for enabling multiple processes to share physical memory
US7975260B1 (en) 2006-01-27 2011-07-05 Symantec Corporation Method of direct access and manipulation of debuggee memory from debugger
US7676514B2 (en) * 2006-05-08 2010-03-09 Emc Corporation Distributed maintenance of snapshot copies by a primary processor managing metadata and a secondary processor providing read-write access to a production dataset
US7734890B2 (en) * 2006-10-06 2010-06-08 Okralabs Llc Method and system for using a distributable virtual address space
US8555081B2 (en) 2007-10-30 2013-10-08 Vmware, Inc. Cryptographic multi-shadowing with integrity verification
US7996648B2 (en) * 2007-12-19 2011-08-09 Microsoft Corporation Coupled symbiotic operating systems
US8531471B2 (en) 2008-11-13 2013-09-10 Intel Corporation Shared virtual memory
US8438341B2 (en) * 2010-06-16 2013-05-07 International Business Machines Corporation Common memory programming
US8566537B2 (en) 2011-03-29 2013-10-22 Intel Corporation Method and apparatus to facilitate shared pointers in a heterogeneous platform

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6601146B2 (en) * 1998-06-16 2003-07-29 International Business Machines Corporation Technique for efficiently transferring moderate amounts of data across address space boundary
TW200622908A (en) * 2004-09-30 2006-07-01 Ibm System and method for sharing resources between real-time and virtualizing operating systems

Also Published As

Publication number Publication date
JP2016532959A (ja) 2016-10-20
TW201519080A (zh) 2015-05-16
KR101722379B1 (ko) 2017-04-05
EP3030967A1 (en) 2016-06-15
WO2015021037A1 (en) 2015-02-12
EP3030967B1 (en) 2019-11-13
US20150046661A1 (en) 2015-02-12
KR20160040214A (ko) 2016-04-12
CN105431827B (zh) 2017-08-22
CN105431827A (zh) 2016-03-23
JP6110038B2 (ja) 2017-04-05
US9311011B2 (en) 2016-04-12

Similar Documents

Publication Publication Date Title
TWI587209B (zh) 用於針對異構多處理器系統中的共用儲存區域進行動態位址協商的方法、多處理器計算設備及非臨時性電腦可讀取儲存媒體
US10860332B2 (en) Multicore framework for use in pre-boot environment of a system-on-chip
JP5911985B2 (ja) ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供
US20160019168A1 (en) On-Demand Shareability Conversion In A Heterogeneous Shared Virtual Memory
US9461994B2 (en) Trusted computing base evidence binding for a migratable virtual machine
US9047090B2 (en) Methods, systems and devices for hybrid memory management
US11526440B2 (en) Providing multiple memory modes for a processor including internal memory
US20080244222A1 (en) Many-core processing using virtual processors
JP2014504416A (ja) 組み合わせたcpu/gpuアーキテクチャシステムにおけるデバイスの発見およびトポロジーのレポーティング
JP2006522385A (ja) マルチスレッドのコンピュータ処理を提供する装置および方法
TW201810027A (zh) 孔徑存取處理器、方法、系統及指令
KR20230041593A (ko) 프로그래밍가능한 인터리브 입도를 갖는 cxl 타입-2 디바이스들을 위한 확장가능한 주소 디코딩 체계
US20230281113A1 (en) Adaptive memory metadata allocation
US11221962B2 (en) Unified address translation
US11080188B1 (en) Method to ensure forward progress of a processor in the presence of persistent external cache/TLB maintenance requests
US20230315334A1 (en) Providing fine grain access to package memory

Legal Events

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