JP2016532959A - 異種マルチプロセッサシステムにおける共有メモリ領域のための動的なアドレスのネゴシエーション - Google Patents

異種マルチプロセッサシステムにおける共有メモリ領域のための動的なアドレスのネゴシエーション Download PDF

Info

Publication number
JP2016532959A
JP2016532959A JP2016533375A JP2016533375A JP2016532959A JP 2016532959 A JP2016532959 A JP 2016532959A JP 2016533375 A JP2016533375 A JP 2016533375A JP 2016533375 A JP2016533375 A JP 2016533375A JP 2016532959 A JP2016532959 A JP 2016532959A
Authority
JP
Japan
Prior art keywords
address
processing core
map
processor
shared memory
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2016533375A
Other languages
English (en)
Other versions
JP6110038B2 (ja
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 JP2016532959A publication Critical patent/JP2016532959A/ja
Application granted granted Critical
Publication of JP6110038B2 publication Critical patent/JP6110038B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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

Abstract

モバイルコンピューティングデバイスは、共有メモリを読み取り共有メモリに情報を書き込むことによって、マルチプロセッサシステムの補助プロセッサ(たとえば、DSP)において汎用ソフトウェアアプリケーションの部分をコンパイルして実行するように構成され得る。アプリケーションプロセッサ上の第1のプロセス(P1)は、補助プロセッサ上の第2のプロセス(P2)とのアドレスのネゴシエーションを要求し、第1のオペレーティングシステムから第1のアドレスマップを取得し、第1のアドレスマップを補助プロセッサに送ることができる。第2のプロセス(P2)は、第1のアドレスマップを受け取り、第2のオペレーティングシステムから第2のアドレスマップを取得し、第1のアドレスマップおよび第2のアドレスマップの中の一致するアドレスを特定し、一致したアドレスを共通仮想アドレスとして記憶し、共通仮想アドレスをアプリケーションプロセッサに送り返すことができる。第1のプロセスおよび第2のプロセス(すなわち、P1およびP2)は各々、共通仮想アドレスを使用して、物理ページをメモリにマッピングすることができる。

Description

本発明は、異種マルチプロセッサシステムにおける共有メモリ領域のための動的なアドレスのネゴシエーションに関する。
モバイル技術およびワイヤレス技術は、過去数年の間に爆発的な発展をとげてきた。この発展は、より優れた通信、ハードウェア、およびより信頼できるプロトコルによって促進されている。ワイヤレスサービスプロバイダは現在、拡大し続ける多数の機能およびサービスを自分の顧客に提供し、かつ情報、リソースおよび通信に対するかつてないレベルのアクセスをユーザに提供することができる。これらの強化と歩調を合わせるために、モバイル電子デバイス(たとえば、携帯電話、腕時計、メディアプレーヤーなど)は、以前よりも複雑になり、今や一般的に、複数のプロセッサ、システムオンチップ(SoC)、および、モバイルデバイスのユーザがモバイルデバイス上で複雑かつ電力負荷の大きいソフトウェアアプリケーション(たとえば、ビデオストリーミング、ビデオ処理など)を実行することを可能にする他のリソースを含む。複雑さおよび電力消費のこの増加に伴い、モバイルデバイスの計算性能および電力管理性能を改善する新しい改善されたメモリ管理の方法が、消費者に有益であろう。
様々な方法は、第1のプロセッシングコアにおける第1のプロセスによって、第2のプロセッシングコアにおける第2のプロセスとのアドレスのネゴシエーションを要求するステップと、第1のプロセッシングコアにおける第1のプロセスの第1のアドレスマップを取得するステップと、第1のアドレスマップを第2のプロセッシングコアに送るステップと、第1のアドレスマップを送ったことに応答して第1のプロセッシングコアにおいて共通仮想アドレスを受け取るステップと、第1のプロセッシングコアの第1のオペレーティングシステムカーネルの内部の共有メモリ領域の第1の属性として共通仮想アドレスを記憶するステップと、第1のプロセスの共通仮想アドレスにおいて共有メモリ領域をマッピングするステップとを含む、第1のプロセッシングコアおよび第2のプロセッシングコアを有するマルチプロセッサコンピューティングデバイスの共有メモリ領域へのアクセス権を提供する方法を含む。
ある態様では、方法は、第2のプロセッシングコアにおいて第1のアドレスマップを受け取るステップと、第2のプロセッシングコアにおいて第2のプロセスの第2のアドレスマップを取得するステップと、第2のプロセッシングコアにおいてアドレス照合動作を実行して、第1のアドレスマップおよび第2のアドレスマップが一致する仮想アドレスを含むかどうかを判定するステップと、共通仮想アドレスとして、かつ、第2のプロセッシングコアの第2のオペレーティングシステムカーネルの共有メモリ領域の第2の属性として、一致した仮想アドレスを記憶するステップと、共通仮想アドレスを第1のプロセッシングコアに送るステップと、第2のプロセッシングコアにおける第2のプロセスのための共通仮想アドレスにおいて共有メモリ領域の物理ページをマッピングするステップとを含み得る。
さらなる態様では、第1のプロセッシングコアおよび第2のプロセッシングコアの各々は、ハードウェアメモリ管理ユニット(MMU)を含み得る。さらなる態様では、第2のプロセッシングコアにおいて第1のアドレスマップを受け取るステップは、第2のプロセッシングコアのアドレスネゴシエーションハンドラスレッドにおいて第1のアドレスマップを受け取るステップを含み得る。
さらなる態様は、第1のプロセッシングコアにおける第1のプロセスによって、第2のプロセッシングコアにおける第2のプロセスとのアドレスのネゴシエーションを要求するための手段と、第1のプロセッシングコアにおける第1のプロセスの第1のアドレスマップを取得するための手段と、第1のアドレスマップを第2のプロセッシングコアに送るための手段と、第1のアドレスマップを送ったことに応答して第1のプロセッシングコアにおいて共通仮想アドレスを受け取るための手段と、第1のプロセッシングコアの第1のオペレーティングシステムカーネルの内部の共有メモリ領域の第1の属性として共通仮想アドレスを記憶するための手段と、第1のプロセスの共通仮想アドレスにおいて共有メモリ領域をマッピングするための手段とを含み得る、マルチプロセッサコンピューティングデバイスを含む。
ある態様では、マルチプロセッサコンピューティングデバイスは、第2のプロセッシングコアにおいて第1のアドレスマップを受け取るための手段と、第2のプロセッシングコアにおいて第2のプロセスの第2のアドレスマップを取得するための手段と、第2のプロセッシングコアにおいてアドレス照合動作を実行して、第1のアドレスマップおよび第2のアドレスマップが一致する仮想アドレスを含むかどうかを判定するための手段と、共通仮想アドレスとして、かつ、第2のプロセッシングコアの第2のオペレーティングシステムカーネルの共有メモリ領域の第2の属性として、一致した仮想アドレスを記憶するための手段と、共通仮想アドレスを第1のプロセッシングコアに送るための手段と、第2のプロセッシングコアにおける第2のプロセスのための共通仮想アドレスにおいて共有メモリ領域の物理ページをマッピングするための手段とを含み得る。
さらなる態様では、第2のプロセッシングコアにおいて第1のアドレスマップを受け取るための手段は、第2のプロセッシングコアのアドレスネゴシエーションハンドラスレッドにおいて第1のアドレスマップを受け取るための手段を含み得る。
さらなる態様は、第1のプロセッシングコアと、第2のプロセッシングコアと、第1のプロセッシングコアおよび第2のプロセッシングコアに結合された共有メモリ領域とを有するマルチプロセッサコンピューティングデバイスを含み、ここで、第1のプロセッシングコアは、第1のプロセスによって、第2のプロセッシングコアにおける第2のプロセスとのアドレスのネゴシエーションを要求するステップと、第1のプロセスの第1のアドレスマップを取得するステップと、第1のアドレスマップを第2のプロセッシングコアに送るステップと、第1のアドレスマップを第2のプロセッシングコアに送ったことに応答して共通仮想アドレスを受け取るステップと、第1のオペレーティングシステムカーネルの内部の共有メモリ領域の第1の属性として共通仮想アドレスを記憶するステップと、第1のプロセスの共通仮想アドレスにおいて共有メモリ領域をマッピングするステップとを含む動作を実行するように、プロセッサ実行可能命令によって構成される。
ある態様では、第2のプロセッシングコアは、第1のアドレスマップを受け取るステップと、第2のプロセスの第2のアドレスマップを取得するステップと、アドレス照合動作を実行して、第1のアドレスマップおよび第2のアドレスマップが一致する仮想アドレスを含むかどうかを判定するステップと、共通仮想アドレスとして、かつ、第2のオペレーティングシステムカーネルの共有メモリ領域の第2の属性として、一致した仮想アドレスを記憶するステップと、共通仮想アドレスを第1のプロセッシングコアに送るステップと、第2のプロセスのための共通仮想アドレスにおいて共有メモリ領域の物理ページをマッピングするステップとを含む動作を実行するように、プロセッサ実行可能命令によって構成され得る。
ある態様では、第1のプロセッシングコアおよび第2のプロセッシングコアの各々は、ハードウェアメモリ管理ユニット(MMU)を含み得る。さらなる態様では、第2のプロセッシングコアは、第1のアドレスマップを受け取るステップがアドレスネゴシエーションハンドラスレッドにおいて第1のアドレスマップを受け取るステップを含み得るように動作を実行するように、プロセッサ実行可能命令によって構成され得る。
さらなる態様は、第1のプロセスによって、第2のプロセッシングコアにおける第2のプロセスとのアドレスのネゴシエーションを要求するステップと、第1のプロセスの第1のアドレスマップを取得するステップと、第1のアドレスマップを第2のプロセッシングコアに送るステップと、第1のアドレスマップを第2のプロセッシングコアに送ったことに応答して共通仮想アドレスを受け取るステップと、第1のオペレーティングシステムカーネルの内部の共有メモリ領域の第1の属性として共通仮想アドレスを記憶するステップと、第1のプロセスの共通仮想アドレスにおいて共有メモリ領域をマッピングするステップとを含む動作を、マルチプロセッサコンピューティングデバイスの第1のプロセッシングコアに実行させるように構成される、プロセッサ実行可能ソフトウェア命令を記憶した、非一時的コンピュータ可読記憶媒体を含む。
ある態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、マルチプロセッサコンピューティングデバイスの第2のプロセッシングコアに、第1のアドレスマップを受け取るステップと、第2のプロセスの第2のアドレスマップを取得するステップと、アドレス照合動作を実行して、第1のアドレスマップおよび第2のアドレスマップが一致する仮想アドレスを含むかどうかを判定するステップと、共通仮想アドレスとして、かつ、第2のオペレーティングシステムカーネルの共有メモリ領域の第2の属性として、一致した仮想アドレスを記憶するステップと、共通仮想アドレスを第1のプロセッシングコアに送るステップと、第2のプロセスのための共通仮想アドレスにおいて共有メモリ領域の物理ページをマッピングするステップとを含む動作を実行させるように構成され得る。
さらなる態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、マルチプロセッサコンピューティングデバイスの第2のプロセッシングコアに、第1のアドレスマップを受け取るステップがアドレスネゴシエーションハンドラスレッドにおいて第1のアドレスマップを受け取るステップを含み得るように動作を実行させるように構成され得る。
本明細書に組み込まれ、本明細書の一部を構成している添付の図面は、本発明の例示的な態様を示すものであり、上で与えられた一般的な説明および下で与えられる詳細な説明とともに本発明の特徴を説明するのに役立つ。
様々な態様を実装するのに適した、例示的なシステムオンチップのアーキテクチャ図である。 アドレスマップと共通仮想アドレスとを通信するように構成される2つのプロセッサを含むある態様のマルチプロセッサコンピューティングシステムの中の例示的な論理コンポーネントと機能コンポーネントとを示すブロック図である。 様々な態様による、メモリ管理の方法を実施するように構成され得る例示的なプロセッシングコアの論理コンポーネントとインターフェースとを示すブロック図である。 独立したオペレーティングシステムと別個のメモリ管理ユニット(MMU)とを含む、共有メモリと複数の異種プロセッサとを有するある態様のマルチプロセッサコンピューティングシステムを示すブロック図である。 マルチプロセッサコンピューティングデバイスの汎用アプリケーションプロセッサと補助プロセッサとの間で共有されるメモリ領域へのアクセス権を提供するある態様の方法を示すプロセスフロー図である。 マルチプロセッサコンピューティングデバイスのアプリケーションプロセッサから補助プロセッサへと汎用ソフトウェアアプリケーションの部分をオフロードするある態様の方法を示すプロセスフロー図である。 様々な態様とともに使用するのに適した例示的なモバイルコンピューティングデバイスのコンポーネントブロック図である。 様々な態様とともに使用するのに適した例示的なラップトップコンピュータのコンポーネントブロック図である。 様々な態様とともに使用するのに適した例示的なサーバコンピュータのコンポーネントブロック図である。
様々な態様が、添付の図面を参照して詳細に説明される。可能である場合、同じまたは同様の部分を参照するために図面全体を通じて同じ参照番号が使用される。特定の例および実装形態に対して行われる参照は、例示が目的であり、本発明の範囲および特許請求の範囲を限定することは意図されていない。
概して、様々な態様は、システムオンチップ(SOC)において汎用アプリケーションプロセッサと補助プロセッサ(たとえば、DSP)との間で共有されるメモリへのアクセス権を提供する方法、さらには、その方法を実行するように構成されるプロセッサを含む。共有メモリへのアクセス権は、アプリケーションプロセッサ上の第1のプロセス(P1)が(たとえば、オペレーティングシステムカーネルへのシステムコールを介して)補助プロセッサ上の第2のプロセス(P2)とのアドレスのネゴシエーションを要求し、第1のオペレーティングシステムから第1のアドレスマップを取得し、第1のアドレスマップを補助プロセッサに送るように、プロセッサを構成することによって提供され得る。第2のプロセス(P2)は、第1のアドレスマップを受け取り、第2のオペレーティングシステムから第2のアドレスマップを取得し、アドレス照合アルゴリズムまたはルーチンを呼び出して第1のアドレスマップおよび第2のアドレスマップの中の一致する/重複するアドレスを特定し、一致した/重複したアドレスを共通仮想アドレスとして記憶し、(たとえば、システムコール、remote method invocationなどを介して)共通仮想アドレスをアプリケーションプロセッサに送ることができる。第1のプロセスおよび第2のプロセス(すなわち、P1およびP2)は各々、共通仮想アドレスを使用して、物理ページをメモリにマッピングすることができる。アドレスマップおよび共通仮想アドレスを共有することによって、様々な態様は、2つの異種プロセッサがより効率的に通信することを可能にする。
「コンピューティングシステム」および「コンピューティングデバイス」という用語は、総称的に、サーバ、パーソナルコンピュータ、ならびに、携帯電話、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、ネットブック、ウルトラブック、パームトップコンピュータ、携帯情報端末(PDA)、ワイヤレス電子メール受信機、マルチメディアインターネット対応携帯電話、全地球測位システム(GPS)受信機、ワイヤレスゲームコントローラ、および、プログラマブルプロセッサを含む同様の個人用電子デバイスのような、モバイルデバイスの、いずれか1つまたはすべてを指すように、本明細書において使用される。様々な態様は、処理電力とバッテリー寿命とが限られたスマートフォンのようなモバイルデバイスにおいて特に有用であるが、これらの態様は、一般に、プログラマブルプロセッサおよび補助プロセッサを含む任意のコンピューティングデバイスにおいて有用である。
「モニタエージェント」という用語は、総称的に、ハードウェアモニタ、チップ上に製作される専用ハードウェア、ハイパーバイザ、仮想マシンモニタ、ハイレベルオペレーティングシステム(HLOS)の外部で実行されるモニタソフトウェア、ならびに、HLOS、メモリ管理システム、および/またはアロケータ機能の外部にあり得る、デバイスドライバの一部として実行されるソフトウェアモニタのいずれか1つまたはすべてを含む、仮想化技術をサポートする、かつ/またはコンピューティングリソースの抽象化(または仮想化)を可能にする、任意のハードウェアコンポーネントまたはソフトウェアを指すために本明細書において使用される。
「システムオンチップ」(SOC)という用語は、単一の基板上に統合された複数のリソースおよび/またはプロセッサを含む単一の集積回路(IC)チップを指すために本明細書において使用される。単一のSOCは、デジタル、アナログ、混合信号、および高周波機能のための回路を含み得る。単一のSOCは、任意の数の汎用および/または専用のプロセッサ(デジタル信号プロセッサ、モデムプロセッサ、ビデオプロセッサなど)、メモリブロック(たとえば、ROM、RAM、Flashなど)、およびリソース(たとえば、タイマー、電圧調整器、発振器など)も含み得る。SOCは、統合されたリソースおよびプロセッサを制御するための、また周辺デバイスを制御するためのソフトウェアも含み得る。
近年、モバイルコンピューティングデバイスのアーキテクチャは複雑さが増してきており、今では一般に、複数のプロセッサコア、SOC、コプロセッサ、専用プロセッサ(たとえば、通信モデムチップ、GPS受信機など)を含む機能モジュール、複合メモリシステム、複雑な電気配線(たとえば、バスおよび/または構造物)、複雑かつ電力負荷の大きなソフトウェアアプリケーション(たとえば、ビデオストリーミングアプリケーションなど)を実行するのに適した多数の他のリソースを含む。この複雑さの増大とともに、新たな処理およびメモリ管理の方法が、モバイルデバイスの性能および電力消費特性を改善するために必要とされる。
性能を改善しバッテリー寿命を最大にするために、モバイルデバイスのアプリケーションプロセッサは、補助プロセッサへと動作をオフロードして、それによって処理および/または電力効率の改善を可能にするように構成され得る。補助プロセッサへと動作をオフロードする動作は、デバイスの補助プロセッサ上での実行に適したコードへとソフトウェアアプリケーションの部分を変換または転換するステップと、異なる異種プロセッサにおいてそのソフトウェアアプリケーションの異なる部分を同時に実行するステップと、実行の結果をアプリケーションプロセッサに通信し戻すステップとを含み得る。たとえば、モバイルデバイスは、ソフトウェアアプリケーションのオブジェクトコードを分析し、オブジェクトコードの実行の間に実行されることが必要とされる動作を特定し、特定された動作に基づいてオブジェクトコードをオブジェクトコードセグメントへと区分し、オブジェクトコードセグメントが補助プロセッサにおいて処理され得るかどうかを判定し、補助プロセッサにおける実行に適したフォーマットへと1つまたは複数のオブジェクトコードセグメントを転換し、補助プロセッサに、アプリケーションプロセッサ上で実行される転換されていないオブジェクトコードセグメントと並列に転換されたオブジェクトコードセグメントを実行させるように構成され得る。
補助プロセッサにおいてコード部分のいくつかを実行することによって、単にモバイルデバイスのメインアプリケーションプロセッサまたはCPUにおいてソフトウェアアプリケーション全体を実行することと比較して、性能、効率、および/または電力消費(本明細書の「性能特性」)における大きな向上が実現され得る。しかしながら、既存のメモリ管理システムは、モバイルデバイスにおいてそのような方法を使用することの有効性を制限し得る。
現在のモバイルコンピューティングデバイスのアーキテクチャの複雑さにより、モバイルデバイスの性能特性は、デバイスの通信バスの速度、幅、および帯域幅に大きく依存する。それでも、既存のメモリ管理システムは、コードの部分を補助プロセッサにオフロードして実行の結果をアプリケーションプロセッサに送るときに、メモリからデータを読み取りメモリにデータを書き込むために、システムバスの大量の使用を必要とし得る。デバイスの通信バスのそのような大量の使用は、動作をオフロードすることによって達成される、性能、効率、または電力消費のあらゆる向上を低下させ、または打ち消し得る。
様々な態様は、マルチプロセッサシステム中の2つ以上の異種プロセッサ(たとえば、アプリケーションプロセッサおよび補助プロセッサ)の間で共有されるメモリ領域へのアクセス権を提供する、改善されたメモリ管理の方法を提供する。異種プロセッサが、同じメモリ領域を読み取り、そこへ書き込むことを可能にし、そのような共有メモリ領域へのアクセス権および使用権を提供することによって、様々な態様は、モバイルデバイスの補助プロセッサにおいてソフトウェアアプリケーションの部分をオフロードし実行するときに、システムバスおよび/または構造物を介して通信される情報の量を減らす。
全般に、マルチプロセッサシステム中の各々の異種プロセッサは、システム中の他のオペレーティングシステムおよびプロセッサとは独立にメモリ管理動作を実行するオペレーティングシステムを含む。たとえば、マルチプロセッサシステムは、第1のタイプのオペレーティングシステム(たとえば、FreeBSD、LINUX(登録商標)、OS Xなど)を実行する第1のプロセッサと、第2のタイプのオペレーティングシステム(たとえば、Microsoft Windows(登録商標)8)を実行する第2のプロセッサとを含み得る。これらのオペレーティングシステムの各々は、そのプロセッサ上で実行されるアプリケーションプログラムによるシステムメモリの割振りおよび使用を管理するための、メモリ管理システムを含み得る。たとえば、各オペレーティングシステムは、仮想メモリアドレスをアプリケーションプログラムに割り振り、あるプロセスによって使用されるメモリが別のプロセスによってすでに使用されているメモリと干渉しないことを確実にするように構成される、仮想メモリマネージャ(OS VMM)を含み得る。プロセスが物理メモリへのアクセス権を必要とするとき、これらの仮想アドレスが、プロセッサに固有のメモリ管理ユニット(MMU)によって物理メモリアドレスに転換される。
したがって、既存のシステムでは、各プロセッサは、独立のオペレーティングシステムおよび別個のMMUを使用してメモリ管理動作を実行し、メモリアドレスの割振りまたは使用を調整するためのプロセッサ間の実行上の制御権はない。しかしながら、マルチプロセッサシステムは、異種プロセッサの2つ以上にアクセス可能であるメモリ領域を含み得る。したがって、オフロード動作を実行するときに2つ以上のプロセッサがこの共有メモリへの参照を介して通信できれば、有利であろう。たとえば、補助プロセッサにソフトウェアアプリケーションの部分をオフロードするときにシステムバス/構造物を介して通信される情報の量は、プロセッサが共有メモリへの参照を介して通信するとすれば減らされるであろう。それでも、既存のメモリ管理の方法は、各プロセッサがシステム中の他のプロセッサとは独立にメモリアドレス指定動作を実行することを要求し、結果として、プロセッサは、ポインタ、相対アドレス、仮想アドレスを通信することができず、または共有メモリへの参照を介して通信することができない。
たとえば、既存のメモリ管理の方法を使用して共有メモリ領域にアクセスすることは、第1のプロセッサにおける第1のプロセス(P1)が、共有メモリ領域を作成することと、共有メモリの存在を第2のプロセッサにおける第2のプロセス(P2)に通知し、共有メモリ領域をそのアドレス空間にマッピングするための要求を第1のプロセッサにおける第1のオペレーティングシステムカーネルに出し、その共有メモリ領域のための仮想アドレス(VA1)割当てを受け取る(すなわち、第1のオペレーティングシステムが仮想アドレスVA1を第1のプロセスに割り当てることができる)ことを必要とし得る。第2のプロセス(P2)は、共有メモリ領域の存在の通知を受け取り、共有メモリ領域をマッピングするための要求を第2のプロセッサにおける第2のオペレーティングシステムカーネルに出し、同じ共有メモリ領域のための異なる仮想アドレス(VA2)割当てを受け取ることができる。
従来のシステムでは、各オペレーティングシステムが仮想アドレスを独立に割り当て、これらのメモリアドレスの割振りまたは使用を調整するためのプロセッサ間の実行上の制御権がないので、共有メモリ位置に対して第1のプロセッサによって割り当てられる仮想アドレス(VA1)は、同じ共有メモリ位置に対して第2のプロセッサによって割り当てられる仮想アドレス(VA2)と同じではない。これらの仮想アドレスは異なるので、2つのプロセッサは、ポインタ、相対アドレス、仮想アドレスを直接通信することができず、または共有メモリへの参照を介して通信することができない。
ある例として、リンクされたリスト(たとえば、list[data, next])の「next」フィールドが後続のノード/アドレスの仮想アドレスを含むように、第1のプロセッサにおいて実行される第1のプロセス(P1)が共有メモリ領域においてリンクされたリストを作る状況を考える。P1が、既存の方法を使用して、第2のプロセッシングコアにおいて実行される第2のプロセス(P2)にリストの先頭の仮想アドレスを渡すことによって、リンクされたリストをP2と共有することを試みるとすると、P2は、共有メモリ領域に対して異なる仮想アドレス(すなわち、VA2)を有するので、すべての「next」ポインタを再計算する必要があるであろう。これらのポインタを再計算するのはリソースの非効率な使用であり、これは、マルチプロセッサシステムの性能および電力消費特性に悪影響を与える。
様々な態様は、同じ仮想アドレスが同じ物理アドレスを参照するために2つの異なる異種プロセッサにおいて使用され得るように、メモリアドレスを割り当てるようにマルチプロセッサシステムを構成することによって、従来のシステムにおけるこれらの制約を克服する。異なるプロセッサにおいて同じ仮想アドレスを割り当てることによって、様々な態様は、プロセッサが、アドレス転換動作の実行を回避することと、ポインタ、相対アドレス、仮想アドレスをより直接的に通信すること、または共有メモリへの参照を介して通信することとを可能にする。様々な態様は、汎用ソフトウェアアプリケーションの部分を補助プロセッサにオフロードするときに実行される動作の数を減らし、それによって、モバイルデバイスの性能特性を改善する。様々な態様はまた、システムバスおよび構造物を介して通信される情報の量を減らし、さらに、デバイスの性能特性を改善する。
ある態様では、モバイルデバイスの第1のプロセッシングコアは、共有メモリ領域を作成し、共有メモリ領域のマップを生成し、マップをモバイルデバイスの第2のプロセッシングコアに送るように構成され得る。第2のプロセッシングコアは、マップを受け取り、受け取られたマップを仮想メモリエリア(VMA)中のアドレス範囲または共有メモリ領域の固有のマップと比較し、2つのマップ/アドレスの共通部分(たとえば、双方において使用されていない仮想アドレスの範囲)を特定し、特定された共通部分を第1のプロセッシングコアに通信し戻すように構成され得る。第1のプロセッシングコアと第2のプロセッシングコアの両方が、特定された共通部分に含まれる共通仮想アドレスを使用して、共有メモリ領域中の物理アドレスを参照することができる。これは、第1のプロセッサおよび第2のプロセッサ上の第1のプロセスおよび第2のプロセス(すなわち、P1およびP2)が、ポインタ、相対アドレス、仮想アドレス、メモリ参照などを通信することを可能にする。
様々な態様は、図1に示されるようなシステムオンチップ(SOC)を含む、いくつかのマルチプロセッサコンピュータシステム上で実装され得る。SOC 100は、デジタル信号プロセッサ(DSP)102、モデムプロセッサ104、グラフィクスプロセッサ106、およびアプリケーションプロセッサ108のような、いくつかの異質のプロセッシングコアを含み得る。SOC 100はまた、異種プロセッサ102、104、106、108の1つまたは複数に接続された1つまたは複数のコプロセッサ110(たとえば、ベクトルコプロセッサなど)を含み得る。各プロセッサ102、104、106、108、110は、1つまたは複数のコアを含んでよく、各プロセッサ/コアは、他のプロセッサ/コアとは独立に動作を実行することができる。たとえば、SOC 100は、第1のタイプのオペレーティングシステム(たとえば、FreeBSD、LINUX(登録商標)、OS Xなど)を実行するプロセッサと、第2のタイプのオペレーティングシステム(たとえば、Microsoft(登録商標) Windows(登録商標)8)を実行するプロセッサとを含み得る。
プロセッサ102、104、106、108、110は、互いに(たとえば、単一の基板、ダイ、集積チップなどの上で)極めて近接している独立したプロセッシングコアであり得る。プロセッサ102、104、106、108、110が近接していることで、メモリ112は、データ信号がチップ外を移動しなければならない場合に可能な周波数/クロック速度よりもはるかに高い周波数/クロック速度で動作することが可能になる。その上、プロセッサ102、104、106、108、110が近接していることで、オンチップメモリおよびリソース(たとえば、電圧レール)の共有、ならびにコア間のより協調した連携が可能になる。
プロセッサ102、104、106、108は、一連の再構成可能な論理ゲートを含み、かつ/またはバスアーキテクチャ(たとえば、CoreConnect、AMBAなど)を実装し得る、相互接続/バスモジュール124を介して、相互に接続され、かつ、1つまたは複数のメモリ要素112、システムリソース116ならびにカスタム回路114に相互接続され得る。通信は、高性能ネットワークオンチップ(NoC)のような、高度な相互接続によって提供され得る。
アプリケーションプロセッサ108は、中央処理装置(CPU)、CPUのコンポーネント、またはCPUに結合されるプロセッシングユニットであり得る。ある態様では、CPUは、プロセッサ102〜110の様々なメモリ、システムコンポーネント、リソース、または周辺機器から情報を読み取り、かつそれらに情報を書き込むように構成され得る。ある態様では、プロセッサは、それぞれのプロセッサ102〜110、リソース、および/または周辺機器のメモリ管理システムコントローラを介して、メモリを読み取り、メモリに書き込むことができる。
システムオンチップ(SOC)100は、プロセッサ102〜108の1つまたは複数に接続されるコプロセッサ110を含み得る。そのようなコプロセッサ110は特に、マルチメディアおよびビデオストリーミングアプリケーションのような、高速で並列の実行を必要とするアプリケーションを処理するのに有用であり得る。ある態様では、コプロセッサ110は、独立のハードウェアレジスタ、メモリ、および/または実行ハードウェアを含む、single instruction multiple data(SIMD)命令セットアーキテクチャ(ISA)を実装することができる。ある態様では、SIMDベクトルコプロセッサは、アプリケーションプロセッサ108の一部であってよく、またはそれと密接に結合されてよい。
SOC 100はまた、センサデータ、アナログデジタル変換、ワイヤレスデータ送信を管理し、モバイルデバイスの電子ディスプレイおよびスピーカーにおいてレンダリングするための符号化されたオーディオ信号およびビデオ信号の処理のような、他の特殊な動作を実行するための、アナログ回路およびカスタム回路114を含み得る。
SOC 100は、電圧調整器、発振器、位相ロックループ、周辺ブリッジ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、ならびに、プロセッサ、およびコンピューティングデバイス上で実行されるソフトウェアクライアント(たとえば、ウェブブラウザなど)をサポートするために使用される他の同様のコンポーネントのような、システムコンポーネントおよびリソース116をさらに含み得る。システムコンポーネント/リソース116およびカスタム回路114はまた、カメラ、電子ディスプレイ、ワイヤレス通信デバイス、外部メモリチップなどのような周辺デバイスとインターフェースをとるための回路を含み得る。
SOC 100は、クロック118および電圧調整器120のような、SOCの外部のリソースと通信するための入力/出力モジュール(図示されず)をさらに含み得る。SOCの外部のリソース(たとえば、クロック118、電圧調整器120)は、内部SOCプロセッサ/コア(たとえば、DSP 102、モデムプロセッサ104、グラフィクスプロセッサ106、アプリケーションプロセッサ108など)の2つ以上によって共有され得る。
図2は、アドレスマップと共通仮想アドレスとを通信するように構成されるプロセッサを含むある態様のマルチプロセッサコンピューティングシステム200の中の例示的な論理コンポーネントと機能コンポーネントとを示す。示されたコンピュータシステム200は、ハードウェアコンポーネントとソフトウェアコンポーネントの両方を含む。ハードウェアコンポーネントは、アプリケーションプロセッサ108と、デジタル信号プロセッサ(DSP)102と、相互接続モジュール124と、共有メモリモジュール112とを含み得る。ソフトウェアコンポーネントは、ホストオペレーティングシステム202と、DSPオペレーティングシステム204と、プロセッサ間通信モジュール206と、ホストオペレーティングシステムユーザプロセス(プロセスA)208と、DSPプロセス(プロセスB)210とを含み得る。様々な態様において、プロセッサ間通信モジュール206は、仮想マシン、ホストオペレーティングシステム202、ゲストオペレーティングシステム、ハイレベルオペレーティングシステム(HLOS)、モニタエージェント、ハイパーバイザなどの一部として含まれ得る。DSPプロセス210は、1つまたは複数の動作をデジタル信号プロセッサ102に実行させるように構成されたサブルーチン、プロシージャ、プロセス、スレッド、またはサービスであり得る。ホストオペレーティングシステムユーザプロセス208は、汎用ソフトウェアアプリケーションプログラムのプロセスであり得る。
一般に、1つのプロセッシングコアを共有する、1つのプロセッシングコアへのアクセス権を有する、かつ/または1つのプロセッシングコア内で動作するプロセスは、高速なメモリ読取り/書込み動作を介して通信し得る。一方、異なるプロセッシングコアにおける独立したプロセスの間の通信は、通常、比較的遅い関数呼出し、メソッド呼出し、プロシージャ呼出し、メッセージ交換、ドメインソケット(たとえば、Unix(登録商標)ドメインソケット)、および他の形態のプロセス間通信(IPC)を介して達成される。リモートプロシージャ呼出し(RPC)およびremote method invocation(RMI)は、呼出しプロセスがサブルーチン、プロシージャ、プロセス、スレッド、またはサービス(本明細書では総称して「サービス」)を、通常は別のプロセッサ、チップまたはコンピューティングデバイス上の別のアドレス空間において実行させることを可能にするプロセス間通信である。
マルチプロセッサシステムでは、異なるプロセッサ(たとえば、プロセッサ108、102)にとって利用可能なメモリおよびリソースは、しばしば、別個のドメイン(たとえば、保護ドメイン、物理ドメインなど)の中にある。加えて、プロセッサは通常、異なるオペレーティングシステムで構成され、かつ/または異なるハードウェア記述言語(HDL)もしくは命令セットアーキテクチャ(ISA)を実装する。そのようなシステムでは、RPC/RMI機構は、第1のプロセッサ上の呼出しプロセスがサービスを第2のプロセッサにおいて実行させることを可能にし、第2のプロセッサがサービスの実行の結果を第1のプロセッサに送り返すことを可能にする明確なインターフェースを提供し得る。
図2を参照すると、ホストオペレーティングシステムユーザプロセス208は、DSPプロセス210を呼び出して、DSPプロセス210に、DSP 102上で汎用アプリケーションプログラムの動作の実行を開始させることができる。動作を完了した後で、DSPサービス210は、それらの動作の結果をホストオペレーティングシステムユーザプロセス208に通信することができる。様々な実施形態において、そのようなプロセッサ間通信は、プロセッサ間通信モジュール206を介して達成されてよく、プロセッサ間通信モジュール206は、上で論じられたIPC機構のいずれかを介して、または直接のメモリ読取り/書込み動作を介して、プロセッサ108、102の間の通信を実行し、管理し、または支援するように構成され得る。
図3は、様々な態様によるメモリ管理の方法を実施するように構成され得る、例示的なプロセッシングコア(たとえば、アプリケーションプロセッサ108など)の論理コンポーネントおよびインターフェースを示す。示されたコンピュータシステムアーキテクチャ300は、ハードウェアコンポーネント322とソフトウェアコンポーネント320の両方を含む。ソフトウェアコンポーネント320は、オペレーティングシステム302、ライブラリモジュール304、および1つまたは複数のアプリケーションプログラム(A0からAn)306を含み得る。ハードウェアコンポーネント322は、周辺機器308(たとえば、ハードウェアアクセラレータ、入力/出力デバイスなど)、中央処理装置(CPU)310、中央処理装置メモリ管理ユニット(CPU MMU)316、1つまたは複数のシステムメモリ管理ユニット(本明細書では「システムMMU」または「SMMU」)312、および1つまたは複数のメモリ314を含み得る。
一般に、モバイルコンピューティングデバイスのために書かれたアプリケーションソフトウェアは、一般に「アプリケーション」、「アプリ」、またはアプリケーションプログラム306と呼ばれるものである、実行可能コードへとコンパイルされ得る。各アプリケーションプログラム306は、単一のプロセスもしくはスレッドであってよく、または複数のプロセスもしくはスレッドを含んでよい。アプリケーションプログラム306は、アプリケーションプログラムインターフェース(API)を介して、高水準言語(HLL)ライブラリコールをライブラリモジュール304に出すことができる。ライブラリモジュール304は、アプリケーションバイナリインターフェース(ABI)を介して、オペレーティングシステム302上で(たとえば、オペレーティングシステムコールを介して)サービスを呼び出すことができる。オペレーティングシステム302は、ハードウェア322によって実装された固有のオペコード(opcode)およびネイティブコマンドのリストである固有の命令セットアーキテクチャ(ISA)を使用して、ハードウェアコンポーネントと通信することができる。このようにして、命令セットアーキテクチャは、オペレーティングシステム302によって見られるようにハードウェア322を定義することができる。
オペレーティングシステム302は、アプリケーションプログラム306の間での様々なメモリ314の割振りおよび使用を調整して制御するように構成されてよく、これは、複数のアプリケーションプログラム(A0〜An)306にわたって物理メモリを区分することを含み得る。ある態様では、これは、オペレーティングシステム302が仮想アドレス(VA)を各アプリケーションプログラム(A0〜An)306に割り当て、次いでアプリケーションプログラム(A0〜An)306の実行の前に仮想アドレス(VA)に基づいて物理メモリアドレス(PA)を割り振る、メモリアドレス空間転換処理を介して達成され得る。
オペレーティングシステム302は、様々なアプリケーションプログラム(A0からAn)306によるシステムメモリの割振りおよび使用を管理するための、1つまたは複数のメモリ管理システム(たとえば、仮想メモリマネージャなど)を含み得る。これらのメモリ管理システムは、あるプロセスによって使用されるメモリが別のプロセスによってすでに使用されているメモリと干渉しないことを確実にするように機能し得る。たとえば、オペレーティングシステム302は、オペレーティングシステム302が特定の物理アドレスを別のアドレス(すなわち、仮想アドレス)に見えるようにすることを可能にする、仮想アドレス指定動作を実行するように構成される、ソフトウェアベースのメモリマネージャを含み得る。これらの仮想アドレス指定動作は、仮想メモリアドレスをアプリケーションプログラム(A0〜An)306に割り振ることを含み得る。
上で論じられたソフトウェアベースのメモリ管理システムに加えて、システムは、示される中央処理装置(CPU)メモリ管理ユニット(MMU)316およびシステムMMU 312のような、1つまたは複数のハードウェアベースのメモリ管理システムを含み得る。CPU MMU 316およびシステムMMU 312は各々、物理アドレスへの仮想アドレスの転換、キャッシュ制御、バス調停、およびメモリ保護のような、様々なメモリに関連する動作を実行することを担う、1つまたは複数のハードウェアコンポーネントを含み得る。
ある態様では、CPU MMU 316は、アドレス転換サービスおよび保護機能をメインCPU 310に提供することを担ってよく、システムMMU 312は、アドレス転換サービスおよび保護機能を他のハードウェアコンポーネント(たとえば、デジタル信号プロセッサ、モデムプロセッサ、グラフィクスプロセッサなど)に提供することを担ってよい。ある実施形態では、マルチプロセッサ中のプロセッサの各々は、独立したMMUを含み得る。
メモリ管理システム(たとえば、CPU MMU 316など)は、メモリアドレス転換(たとえば、物理アドレスへの仮想アドレスの転換など)のために使用され得るキャッシュメモリである、トランスレーションルックアサイドバッファ(TLB)を含み得る。ある態様では、トランスレーションルックアサイドバッファ(TLB)は、記憶された情報がキー-値のフォーマット(たとえば、ハッシュテーブル)へと編成されるハードウェア連想アレイメモリであり得る、コンテンツアドレッサブルメモリ(CAM)であり得る。キーは仮想アドレスであってよく、値は物理アドレスであってよい。様々な態様において、トランスレーションルックアサイドバッファは、ハードウェアで管理され、ソフトウェアで管理され、またはハードウェアとソフトウェアの組合せによって管理され得る。
メモリアドレス転換処理の一部として、メモリ管理システム(たとえば、OS VMM、システムMMU 312、CPU MMU 316など)は、トランスレーションルックアサイドバッファをキーとして仮想アドレスに送ることによって、トランスレーションルックアサイドバッファから物理アドレスを要求するために、コンテンツアドレッサブルメモリの検索を実行することができる。仮想アドレスのキーがトランスレーションルックアサイドバッファ中に対応する物理アドレス値を有する(すなわち、「TLBヒット」が発生する)場合、コンテンツアドレッサブルメモリの検索は、対応する物理アドレスを取り出し、返すことができる。要求されたアドレスがトランスレーションルックアサイドバッファ中にない(すなわち、「TLBミス」が発生する)場合、メモリアドレス転換処理は、複数のメモリ位置の内容を読み取り、物理アドレスを計算することによって、ページウォーク(たとえば、ソフトウェアページウォーク、ハードウェアページウォークなど)を実行することができる。物理アドレスがページウォークによって決定された後で、仮想アドレスから物理アドレスへのマッピングが、トランスレーションルックアサイドバッファに記憶され得る。
ソフトウェアで管理されるトランスレーションルックアサイドバッファを含む態様では、TLBミスは、オペレーティングシステムに、ページテーブルをウォークさせ、ソフトウェアにおいて転換を実行させ得る。ハードウェアで管理されるトランスレーションルックアサイドバッファを含む態様では、メモリ管理システムは、ハードウェアテーブルウォークを実行して、指定された仮想アドレスキーに対して有効なページテーブルエントリーが存在するかどうかを判定することができる。
図4は、各々が独立したオペレーティングシステムと別個のメモリ管理ユニット(MMU)402、408とを含む、共有メモリ112と複数の異種プロセッサ102、108とを有するある態様のマルチプロセッサコンピューティングシステム400を示す。
既存のメモリ管理の方法を使用すると、共有メモリ領域にアクセスすることは、アプリケーションプロセッサ108における第1のプロセス(P1)が、共有メモリ領域を作成することと、共有メモリ領域の存在をDSP 102中の第2のプロセス(P2)に(たとえば、システムコールまたはIPCを介して)通知することと、共有メモリ領域をそのアドレス空間へとマッピングするための要求をアプリケーションプロセッサのオペレーティングシステムカーネルに出すことと、共有メモリ領域のための仮想アドレス(VA1)割当てを受け取ることとを必要とし得る。第2のプロセス(P2)は、第1のプロセス(P1)から通知を受け取り、共有メモリ領域をマッピングするための要求をDSPオペレーティングシステムカーネルに出し、同じ共有メモリ領域のための異なる仮想アドレス(VA2)割当てを受け取ることができる。
上で論じられたように、各オペレーティングシステムは、仮想アドレスを独立に割り当て、これらのメモリアドレスの割振りまたは使用を調整するためのプロセッサ間の実行上の制御権がないので、共有メモリ位置に対して第1のプロセッサによって割り当てられる仮想アドレス(VA1)は、その同じ共有メモリ位置に対して第2のプロセッサによって割り当てられる仮想アドレス(VA2)と同じではない。したがって、異なる仮想アドレスが異なるプロセッサに割り当てられた場合、2つのプロセッサは、ポインタ、相対アドレス、仮想アドレスを直接通信できず、または共有メモリへの参照を介して通信できない。
様々な態様において、マルチプロセッサコンピューティングシステム400は、共有メモリ112の中の同じ物理アドレスを参照するために両方の異種プロセッサ102、108によって同じ仮想アドレスが使用され得るように、メモリアドレスを割り当てるように構成され得る。異なるプロセッサにおいて同じ仮想アドレスを割り当てることによって、様々な態様は、プロセッサが、ポインタ、相対アドレス、仮想アドレスを通信すること、または共有メモリへの参照を介して通信することを可能にする。様々な態様はまた、汎用ソフトウェアアプリケーションの部分を補助プロセッサにオフロードするときに実行される動作の数を減らし、それによって、システム400の性能特性を改善する。様々な態様はまた、システムバスおよび構造物を介して通信される情報の量を減らし、さらに、デバイスの性能特性を改善する。
一般に、オペレーティングシステムは、仮想メモリエリアと呼ばれるアドレス範囲のリストとして、プロセスアドレス空間の記録をとる。オペレーティングシステムカーネルの内部のタスク構造は、プロセスによって使用される仮想アドレスの範囲を特定する仮想メモリエリア(VMA)のリストを保持する。
様々な態様において、マルチプロセッサコンピューティングシステム400は、アプリケーションプロセッサ108において実行される第1のプロセス(P1)が共有メモリ領域を作成するときに、P1がメモリ領域をマッピングしてマップをDSP 102に送るように構成され得る。DSP 102において実行される第2のプロセス(P2)は次いで、受け取られたアドレスマップをそのアドレス範囲または共有メモリ領域の固有のマップと比較し、2つのマップ/アドレスの共通部分(たとえば、双方において使用されていない仮想アドレスの範囲)を特定し、特定された共通部分をアプリケーションプロセッサ108に通信し戻す。次いで、両方のプロセッサ102、108は、共有メモリ領域を共通部分において特定される共通仮想アドレスにマッピングする。
図5Aは、マルチプロセッサコンピューティングデバイス中の汎用アプリケーションプロセッサと補助プロセッサ(たとえば、DSP)との間で共有されるメモリ領域へのアクセス権を提供するある態様の方法500を示す。態様の方法500は、第1のオペレーティングシステム(OS)カーネルを有するアプリケーションプロセッサおよび第2のOSカーネルを有する補助プロセッサによって、モバイルコンピューティングデバイスにおいて実行され得る。ブロック502において、アプリケーションプロセッサは、補助プロセッサとのアドレスのネゴシエーションを(たとえば、第1のOSカーネルへのシステムコールを介して)要求することができる。これは、アプリケーションプロセッサにおける第1のプロセッサ(P1)が、第2のプロセッシングコアにおける第2のプロセス(P2)とのアドレスのネゴシエーションを要求するシステムコールを第1のOSカーネルに出すことによって達成され得る。
ブロック504において、アプリケーションプロセッサは、アドレスのネゴシエーションを要求したことに応答して、第1のプロセス(P1)のアドレスマップを受け取る/取得することができる。ある態様では、第1のプロセス(P1)のアドレスマップは、補助プロセッサ中のアドレスネゴシエーションハンドラスレッドによって補助プロセッサにおいて受け取られ得る。ブロック506において、アプリケーションプロセッサは、取得されたアドレスマップを第2のプロセッシングコアに送ることができる。ブロック508において、アプリケーションプロセッサは、補助プロセッサからの応答を待機し、かつ/または他の処理タスクを実行することができる。
ブロック510において、補助プロセッサは、アプリケーションプロセッサから第1のプロセス(P1)のアドレスマップを受け取ることができる。ブロック512において、補助プロセッサは、システムコールを第2のOSカーネルに出すことなどによって、第2のプロセス(P2)のアドレスマップを要求して取得することができる。ブロック514において、補助プロセッサは、アドレス照合ルーチン/プロシージャを実行/実施して、第1のプロセスおよび第2のプロセス(P1およびP2)のアドレスマップが任意の一致する仮想アドレスまたは共通部分を含むかどうかを判定することができる。これは、アドレスを並べ替えて比較することによって、または、当技術分野において知られている任意の既知のアドレス照合アルゴリズムを介して、達成され得る。
判定ブロック516において、補助プロセッサは、アドレス照合ルーチンが任意の一致するアドレスまたは共通部分を特定したかどうかを判定することができる。第1のプロセスおよび第2のプロセス(P1およびP2)のアドレスマップが一致するアドレスまたは共通部分を含まないと補助プロセッサが判定するとき(すなわち、判定ブロック516=「No」)、ブロック524において、補助プロセッサは、従来の方法を使用して、第2のプロセス(P2)のための共有メモリ領域の物理ページをマッピングすることができる。
第1のプロセスおよび第2のプロセス(P1およびP2)のアドレスマップが一致するアドレスまたは共通部分を含むと補助プロセッサが判定するとき(すなわち、判定ブロック516=「Yes」)、補助プロセッサは、ブロック518において、一致した仮想アドレスを第2のOSカーネル中の共有メモリ領域の属性として記憶することによって、一致した仮想アドレスを共通仮想アドレスとして記憶することができる。すなわち、各プロセスの論理アドレス空間は、メモリのマッピングされた領域を含んでよく、各々のマッピングされたメモリ領域は、たとえば書込み保護を制御しメモリが共有可能かどうかを判定するための、様々な属性を含み得る。補助プロセッサは、ブロック518において、共有メモリ領域のこれらの属性の1つとして、一致した仮想アドレスを記憶することができる。ブロック520において、補助プロセッサは、第2のプロセス(P2)のための共通アドレスにおいて、共有メモリ領域の物理ページをマッピングすることができる。ブロック522において、補助プロセッサは、共通仮想アドレスをアプリケーションプロセッサに送ることができる。
判定ブロック516において、アプリケーションプロセッサは、通信ポートまたはソケットにポーリングして、共通仮想アドレスが補助プロセッサから受け取られたかどうかを判定することができる。共通仮想アドレスが受け取られておらず、十分な長さの時間が過ぎたとアプリケーションプロセッサが判定するとき(すなわち、判定ブロック526=「No」)、ブロック532において、アプリケーションプロセッサは、従来の方法を使用して、第1のプロセス(P1)のための共有メモリ領域の物理ページをマッピングすることができる。
共通仮想アドレスが受け取られたとアプリケーションプロセッサが判定するとき(すなわち、判定ブロック526=「Yes」)、アプリケーションプロセッサは、ブロック528において、共通仮想アドレスを第1のOSカーネルの内部の共有メモリ領域の属性として記憶することができる。ブロック530において、アプリケーションプロセッサは、第1のプロセス(P1)のための共通アドレスにおいて、共有メモリ領域の物理ページをマッピングすることができる。
図5Bは、汎用ソフトウェアアプリケーションの部分を補助プロセッサ(たとえば、DSP)にオフロードするある態様の方法550を示す。方法550の動作は、マルチプロセッサコンピューティングデバイス中のアプリケーションプロセッサによって実行され得る。
ブロック552において、アプリケーションプロセッサは、汎用ソフトウェアアプリケーションを分析して、アプリケーションプロセッサの実行の間にモバイルデバイスにおいて実行されることが必要とされる動作を特定することができる。ブロック554において、アプリケーションプロセッサは、特定された動作に基づいて、ソフトウェアアプリケーションをセグメントへと区分することができる。ブロック556において、アプリケーションプロセッサは、汎用ソフトウェアアプリケーションのセグメントが補助プロセッサにおいて実行され得ると決定することができる。ブロック558において、アプリケーションプロセッサは、補助プロセッサにおける実行に適したコードへと、セグメントを変換し、転換し、またはコンパイルすることができる。ブロック560において、アプリケーションプロセッサは、アプリケーションプロセッサと補助プロセッサの両方がアクセス可能である共有メモリ領域に、生成されたコードを記憶することができる。ブロック562において、アプリケーションプロセッサは、補助プロセッサに、共有メモリ領域からコードを取り出させ、コードを実行させることができる。ある態様では、これは、アプリケーションプロセッサが、たとえば補助プロセッサに仮想メモリアドレスまたはリンクされたリストのヘッダを送ることでメモリ参照を補助プロセッサに通信することによって、達成され得る。
様々な態様が、種々のコンピューティングデバイス上で実装されてよく、それらの例が図6〜図8に示される。図6は、内部メモリ602に結合されたマルチコアプロセッサ601と、ディスプレイ604(たとえば、タッチスクリーンディスプレイ)と、スピーカー606とを含むスマートフォン600の形態のモバイルコンピューティングデバイスを示す。加えて、スマートフォン600は、マルチコアプロセッサ601に結合されたワイヤレスデータリンクおよび/またはモデムもしくは携帯電話送受信機610に接続され得る、電磁放射を送信および受信するためのアンテナ608を含み得る。スマートフォン600は、通常、ユーザ入力を受け取るためのメニュー選択ボタンまたはロッカースイッチ612も含む。
マルチコアプロセッサ601は、上で説明され図1に示されたものと同様の回路および構造を含み、図2および図3に示される論理コンポーネントまたは機能コンポーネントのいずれかまたはすべてを含み得る。モデム601はまた、複数のプロセッシングコアを含んでよく、高周波信号を受信および送信するためのアンテナ608に結合され得る。
典型的なスマートフォン600はまた、マイクロフォンから受信された音をワイヤレス送信に適したデータパケットにデジタル化し、受信された音のデータパケットを復号し、スピーカーに供給されて音を発生させるアナログ信号を生成する、音声符号化/復号(コーデック)回路614を含む。また、マルチコアプロセッサ601、ワイヤレス送受信機610、およびコーデック614の1つまたは複数は、デジタル信号プロセッサ(DSP)回路(個別に図示されず)を含み得る。
典型的なモバイルコンピューティングデバイスは、共通して、例示的なパーソナルラップトップコンピュータ700を示す図7に示されたコンポーネントを有する。そのようなパーソナルコンピュータ700は、一般に、揮発性メモリ702、およびディスクドライブ704のような大容量不揮発性メモリに結合された、マルチコアプロセッサ701を含む。コンピュータ700はまた、プロセッサ701に結合されたコンパクトディスク(CD)および/またはDVDドライブ708を含み得る。コンピュータデバイス700はまた、プロセッサ701をネットワークに結合するためのネットワーク接続回路のような、データ接続を確立するための、または外部メモリデバイスを受け入れるための、プロセッサ701に結合されたいくつかのコネクタポートを含み得る。コンピューティングデバイス700は、プロセッサ701に結合されたワイヤレスデータリンクに接続された電磁放射を送受信するための無線/アンテナ710を有し得る。コンピュータ700は、コンピュータ技術分野においてよく知られているように、キーボード718と、ポインティングマウスパッド720と、ディスプレイ722とをさらに含み得る。
様々な態様はまた、図8に示されるサーバ800のような種々の市販のサーバデバイスのいずれでも実装され得る。そのようなサーバ800は通常、複数のプロセッサシステムを含み、プロセッサシステムの1つまたは複数は、マルチコアプロセッサ801であってよく、またはマルチコアプロセッサ801を含んでよい。プロセッサ801は、揮発性メモリ802、およびディスクドライブ803のような大容量不揮発性メモリに結合され得る。サーバ800はまた、プロセッサ801に結合された、フロッピー(登録商標)ディスクドライブ、コンパクトディスク(CD)、またはDVDディスクドライブ804を含み得る。サーバ800はまた、他のブロードキャストシステムコンピュータおよびサーバに結合されたローカルエリアネットワークのような、ネットワーク808とのデータ接続を確立するための、プロセッサ801に結合されたネットワークアクセスポート806を含み得る。
プロセッサ601、701、801は、本明細書で説明される様々な態様の機能および動作を含む、様々な機能を実行するためのソフトウェア命令(アプリケーション)によって構成され得る、任意のプログラマブルマルチコアマルチプロセッサ、マイクロコンピュータまたは複数のプロセッサチップであり得る。1つのプロセッサをワイヤレス通信機能専用とし、1つのプロセッサを他のアプリケーションの実行専用とするなど、複数のプロセッサが設けられ得る。通常、ソフトウェアアプリケーションは、アクセスされてプロセッサ601、701、801にロードされる前に、内部メモリ602、702、802に記憶され得る。いくつかのモバイルコンピューティングデバイスでは、追加のメモリチップ(たとえば、Secure Data (SD)カード)が、モバイルデバイスに差し込まれ、プロセッサ601、701、801に結合され得る。内部メモリ602、702、802は、揮発性メモリ、もしくはフラッシュメモリなどの不揮発性メモリ、または両方の混合物であり得る。本明細書では、メモリに対する一般的な言及は、内部メモリ602、702、802、モバイルデバイスに接続されたリムーバブルメモリ、およびプロセッサ601、701、801自体の中のメモリを含む、プロセッサ601、701、801によってアクセス可能なすべてのメモリを指す。
図1を参照して上で論じられたようなマルチプロセッサハードウェア設計は、同じパッケージの内部の、しばしば同じシリコン片上に、異なる機能の複数のプロセッシングコアを含み得る。対称なマルチプロセッシングハードウェアは、単一の共有されたメインメモリに接続され単一のオペレーティングシステムによって制御される2つ以上の同一のプロセッサを含む。非対称のまたは「緩く結合された」のマルチプロセッシングハードウェアは、各々、独立したオペレーティングシステムおよびハードウェア記述言語または命令セットアーキテクチャによって制御され、1つまたは複数の共有メモリ/リソースに接続され得る、2つ以上の異種プロセッサ/コアを含み得る。
様々な態様の動作を遂行するためにプログラマブルプロセッサ上で実行するためのコンピュータプログラムコードすなわち「コード」は、C、C++、C#、Smalltalk、Java(登録商標)、JavaScript(登録商標)、Visual Basic、Structured Query Language (たとえば、Transact-SQL)、Perlのような高水準プログラミング言語で、または様々な他のプログラミング言語で書かれ得る。本明細書で使用されるコンピュータ可読記憶媒体に記憶されるプログラムコードまたはプログラムは、そのフォーマットがプロセッサによって理解可能である機械語コード(オブジェクトコードのような)を指す。
多くのモバイルコンピューティングデバイスのオペレーティングシステムのカーネルは、(非特権コードが動作する場合)ユーザ空間へと編成され、(特権コードが動作する場合)カーネル空間へと編成される。この分離は、カーネル空間の一部であるコードが一般公有使用許諾(GPL)で許諾される必要がある一方で、ユーザ空間内で実行されるコードがGPLで許諾されることが必要とされない、Android(登録商標)および他のGPL環境において特に重要である。本明細書で説明される様々なソフトウェアコンポーネント/モジュールは、明示的に別段述べられない限り、カーネル空間またはユーザ空間のいずれかに実装され得ることを理解されたい。
本出願で使用されるような、「コンポーネント」、「モジュール」、「システム」、「サービス」、「エンジン」、「リスナー」、「マネージャ」などの用語は、限定はされないが、特定の動作または機能を実行するように構成された、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアなど、コンピュータ関連のエンティティを含むことが意図される。たとえば、コンポーネントは、限定はされないが、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータであり得る。例を挙げると、コンピューティングデバイス上で実行されているアプリケーションとコンピューティングデバイスの両方が、コンポーネントと呼ばれ得る。1つまたは複数のコンポーネントは、プロセスおよび/または実行スレッドの中に存在してよく、1つのコンポーネントは、1つのプロセッサまたはコアに局在してよく、かつ/または2つ以上のプロセッサまたはコアの間に分散してよい。加えて、これらのコンポーネントは、様々な命令および/またはデータ構造を記憶している様々な非一時的コンピュータ可読媒体から実行することができる。コンポーネントは、ローカルおよび/またはリモートプロセス、関数呼出しまたはプロシージャ呼出し、電子信号、データパケット、メモリ読出し/書込み、ならびに他の知られているコンピュータ、プロセッサ、および/または通信方法に関するプロセスによって通信できる。
いくつかの異なるタイプのメモリおよびメモリ技術が利用可能であり、または将来考えられ、それらのすべてが様々な態様を実装し、様々な態様とともに使用するのに適している。そのようなメモリ技術/タイプは、相変化メモリ(PRAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、非揮発性ランダムアクセスメモリ(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コアと連動する1つまたは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。代替的に、いくつかのステップまたは方法は、所与の機能に固有の回路によって実行され得る。
1つまたは複数の例示的な態様では、説明される機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、非一時的コンピュータ可読媒体上または非一時的プロセッサ可読媒体上の1つまたは複数の命令またはコードとして記憶され得る。本明細書で開示される方法またはアルゴリズムのステップは、非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体上に存在し得るプロセッサ実行可能ソフトウェアモジュールにおいて具現化され得る。非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされ得る、任意の記憶媒体であり得る。限定ではなく例として、そのような非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体は、RAM、ROM、EEPROM、フラッシュメモリ、CD-ROMもしくは他の光ディスク(disc)ストレージ、磁気ディスク(disk)ストレージもしくは他の磁気ストレージデバイス、または、命令もしくはデータ構造の形で所望のプログラムコードを記憶するのに使用されコンピュータによってアクセスされ得る任意の他の媒体を含み得る。ディスク(disk)およびディスク(disc)は、本明細書で使用される場合、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常はデータを磁気的に再生し、ディスク(disc)は、レーザを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体の範囲に含まれる。さらに、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る、非一時的プロセッサ可読媒体/または非一時的コンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せまたはセットとして存在し得る。
開示される態様の前述の説明は、当業者が本発明を作成または使用することを可能にするために提供されている。これらの態様に対する様々な修正は、当業者には容易に明らかであり、本明細書で定義された一般的な定義は、本発明の要旨または範囲から逸脱することなく、他の態様に適用され得る。したがって、本発明は、本明細書に示される態様に限定されることは意図されず、以下の特許請求の範囲、ならびに、本明細書で開示されている原理および新規な特徴と一致する最も広い範囲を与えられるべきである。
100 SOC
102 デジタル信号プロセッサ
104 モデムプロセッサ
106 グラフィクスプロセッサ
108 アプリケーションプロセッサ
110 コプロセッサ
112 メモリ、メモリ要素、メモリモジュール
114 アナログおよびカスタム回路、共有メモリ
116 システムコンポーネントおよびリソース
118 クロック
120 電圧調整器
124 相互接続、相互接続/バス、相互接続/バスモジュール、相互接続モジュール
200 マルチプロセッサコンピューティングシステム、コンピュータシステム
202 ホストオペレーティングシステム
204 DSPオペレーティングシステム
206 プロセッサ間通信モジュール
208 プロセスA、ホストオペレーティングシステムユーザプロセス
210 プロセスB、DSPプロセス
300 コンピュータシステムアーキテクチャ
302 オペレーティングシステム
304 ライブラリ、ライブラリモジュール
306 アプリケーションプログラム
308 周辺機器
310 プロセッサ、中央処理装置(CPU)、メインCPU
312 システムMMU
316 CPU MMU、中央処理装置メモリ管理ユニット(CPU MMU)
320 ソフトウェア、ソフトウェアコンポーネント
322 ハードウェア、ハードウェアコンポーネント
400 マルチプロセッサコンピューティングシステム
402 MMU
408 MMU
500 方法
550 方法
600 スマートフォン
601 マルチコアプロセッサ、モデム
602 内部メモリ
604 ディスプレイ
606 スピーカー
608 アンテナ
610 携帯電話送受信機、ワイヤレス送受信機
612 メニュー選択ボタンまたはロッカースイッチ
614 コーデック回路、音声符号化/復号(コーデック)回路、コーデック
700 パーソナルラップトップコンピュータ、パーソナルコンピュータ、コンピュータ、コンピュータデバイス、コンピューティングデバイス
701 プロセッサ
702 揮発性メモリ、内部メモリ
704 ディスクドライブ
708 CDおよび/またはDVDドライブ
710 アンテナ、無線/アンテナ
718 キーボード
720 ポインティングマウスパッド
722 ディスプレイ
800 サーバ
801 マルチコアプロセッサ、プロセッサ
802 揮発性メモリ、内部メモリ
803 ディスクドライブ
804 フロッピー(登録商標)、CDまたはDVDディスクドライブ、フロッピー(登録商標)ディスクドライブ、コンパクトディスク(CD)、またはDVDディスクドライブ
806 ネットワークアクセスポート
808 ネットワーク

Claims (14)

  1. 第1のプロセッシングコアおよび第2のプロセッシングコアを有するマルチプロセッサコンピューティングデバイスの共有メモリ領域へのアクセス権を提供する方法であって、
    前記第1のプロセッシングコアにおける第1のプロセスによって、前記第2のプロセッシングコアにおける第2のプロセスとのアドレスのネゴシエーションを要求するステップと、
    前記第1のプロセッシングコアにおける前記第1のプロセスの第1のアドレスマップを取得するステップと、
    前記第1のアドレスマップを前記第2のプロセッシングコアに送るステップと、
    前記第1のアドレスマップを送ったことに応答して前記第1のプロセッシングコアにおいて共通仮想アドレスを受け取るステップと、
    前記第1のプロセッシングコアの第1のオペレーティングシステムカーネルの内部の前記共有メモリ領域の第1の属性として前記共通仮想アドレスを記憶するステップと、
    前記第1のプロセスの前記共通仮想アドレスにおいて前記共有メモリ領域をマッピングするステップと
    を備える、方法。
  2. 前記第1のアドレスマップを前記第2のプロセッシングコアにおいて受け取るステップと、
    前記第2のプロセッシングコアにおける前記第2のプロセスの第2のアドレスマップを取得するステップと、
    前記第2のプロセッシングコアにおいてアドレス照合動作を実行して、前記第1のアドレスマップおよび前記第2のアドレスマップが一致する仮想アドレスを含むかどうかを判定するステップと、
    前記共通仮想アドレスとして、かつ、前記第2のプロセッシングコアの第2のオペレーティングシステムカーネルの前記共有メモリ領域の第2の属性として、前記一致した仮想アドレスを記憶するステップと、
    前記共通仮想アドレスを前記第1のプロセッシングコアに送るステップと、
    前記第2のプロセッシングコアにおける前記第2のプロセスのための前記共通仮想アドレスにおいて前記共有メモリ領域の物理ページをマッピングするステップと
    をさらに備える、請求項1に記載の方法。
  3. 前記第1のプロセッシングコアおよび前記第2のプロセッシングコアの各々が、ハードウェアメモリ管理ユニット(MMU)を含む、請求項2に記載の方法。
  4. 前記第2のプロセッシングコアにおいて前記第1のアドレスマップを受け取るステップが、前記第2のプロセッシングコアのアドレスネゴシエーションハンドラスレッドにおいて前記第1のアドレスマップを受け取るステップを備える、請求項2に記載の方法。
  5. 第1のプロセッシングコアにおける第1のプロセスによって、第2のプロセッシングコアにおける第2のプロセスとのアドレスのネゴシエーションを要求するための手段と、
    前記第1のプロセッシングコアにおける前記第1のプロセスの第1のアドレスマップを取得するための手段と、
    前記第1のアドレスマップを前記第2のプロセッシングコアに送るための手段と、
    前記第1のアドレスマップを送ったことに応答して前記第1のプロセッシングコアにおいて共通仮想アドレスを受け取るための手段と、
    前記第1のプロセッシングコアの第1のオペレーティングシステムカーネルの内部の共有メモリ領域の第1の属性として前記共通仮想アドレスを記憶するための手段と、
    前記第1のプロセスの前記共通仮想アドレスにおいて前記共有メモリ領域をマッピングするための手段と
    を備える、マルチプロセッサコンピューティングデバイス。
  6. 前記第1のアドレスマップを前記第2のプロセッシングコアにおいて受け取るための手段と、
    前記第2のプロセッシングコアにおける前記第2のプロセスの第2のアドレスマップを取得するための手段と、
    前記第2のプロセッシングコアにおいてアドレス照合動作を実行して、前記第1のアドレスマップおよび前記第2のアドレスマップが一致する仮想アドレスを含むかどうかを判定するための手段と、
    前記共通仮想アドレスとして、かつ、前記第2のプロセッシングコアの第2のオペレーティングシステムカーネルの前記共有メモリ領域の第2の属性として、前記一致した仮想アドレスを記憶するための手段と、
    前記共通仮想アドレスを前記第1のプロセッシングコアに送るための手段と、
    前記第2のプロセッシングコアにおける前記第2のプロセスのための前記共通仮想アドレスにおいて前記共有メモリ領域の物理ページをマッピングするための手段とをさらに備える、請求項5に記載のマルチプロセッサコンピューティングデバイス。
  7. 前記第2のプロセッシングコアにおいて前記第1のアドレスマップを受け取るための手段が、前記第2のプロセッシングコアのアドレスネゴシエーションハンドラスレッドにおいて前記第1のアドレスマップを受け取るための手段を備える、請求項6に記載のマルチプロセッサコンピューティングデバイス。
  8. 第1のプロセッシングコアと、
    第2のプロセッシングコアと、
    前記第1のプロセッシングコアおよび前記第2のプロセッシングコアに結合された共有メモリ領域と
    を備え、前記第1のプロセッシングコアが、
    第1のプロセスによって、前記第2のプロセッシングコアにおける第2のプロセスとのアドレスのネゴシエーションを要求するステップと、
    前記第1のプロセスの第1のアドレスマップを取得するステップと、
    前記第1のアドレスマップを前記第2のプロセッシングコアに送るステップと、
    前記第1のアドレスマップを前記第2のプロセッシングコアに送ったことに応答して、共通仮想アドレスを受け取るステップと、
    第1のオペレーティングシステムカーネルの内部の前記共有メモリ領域の第1の属性として前記共通仮想アドレスを記憶するステップと、
    前記第1のプロセスの前記共通仮想アドレスにおいて前記共有メモリ領域をマッピングするステップと
    を備える動作を実行するように、プロセッサ実行可能命令によって構成される、マルチプロセッサコンピューティングデバイス。
  9. 前記第2のプロセッシングコアが、
    前記第1のアドレスマップを受け取るステップと、
    前記第2のプロセスの第2のアドレスマップを取得するステップと、
    アドレス照合動作を実行して、前記第1のアドレスマップおよび前記第2のアドレスマップが一致する仮想アドレスを含むかどうかを判定するステップと、
    前記共通仮想アドレスとして、かつ、第2のオペレーティングシステムカーネルの前記共有メモリ領域の第2の属性として、前記一致した仮想アドレスを記憶するステップと、
    前記共通仮想アドレスを前記第1のプロセッシングコアに送るステップと、
    前記第2のプロセスのための前記共通仮想アドレスにおいて前記共有メモリ領域の物理ページをマッピングするステップと
    を備える動作を実行するように、プロセッサ実行可能命令によって構成される、請求項8に記載のマルチプロセッサコンピューティングデバイス。
  10. 前記第1のプロセッシングコアおよび前記第2のプロセッシングコアの各々が、ハードウェアメモリ管理ユニット(MMU)を含む、請求項9に記載のマルチプロセッサコンピューティングデバイス。
  11. 前記第2のプロセッシングコアが、前記第1のアドレスマップを受け取るステップがアドレスネゴシエーションハンドラスレッドにおいて前記第1のアドレスマップを受け取るステップを備えるように動作を実行するように、プロセッサ実行可能命令によって構成される、請求項9に記載のマルチプロセッサコンピューティングデバイス。
  12. マルチプロセッサコンピューティングデバイスの第1のプロセッシングコアに、
    第1のプロセスによって、前記マルチプロセッサコンピューティングデバイスの第2のプロセッシングコアにおける第2のプロセスとのアドレスのネゴシエーションを要求するステップと、
    前記第1のプロセスの第1のアドレスマップを取得するステップと、
    前記第1のアドレスマップを前記第2のプロセッシングコアに送るステップと、
    前記第1のアドレスマップを前記第2のプロセッシングコアに送ったことに応答して、共通仮想アドレスを受け取るステップと、
    第1のオペレーティングシステムカーネルの内部の共有メモリ領域の第1の属性として前記共通仮想アドレスを記憶するステップと、
    前記第1のプロセスの前記共通仮想アドレスにおいて前記共有メモリ領域をマッピングするステップと
    を備える動作を実行させるように構成されるプロセッサ実行可能ソフトウェア命令を記憶した、非一時的コンピュータ可読記憶媒体。
  13. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記マルチプロセッサコンピューティングデバイスの前記第2のプロセッシングコアに、
    前記第1のアドレスマップを受け取るステップと、
    前記第2のプロセスの第2のアドレスマップを取得するステップと、
    アドレス照合動作を実行して、前記第1のアドレスマップおよび前記第2のアドレスマップが一致する仮想アドレスを含むかどうかを判定するステップと、
    前記共通仮想アドレスとして、かつ、第2のオペレーティングシステムカーネルの前記共有メモリ領域の第2の属性として、前記一致した仮想アドレスを記憶するステップと、
    前記共通仮想アドレスを前記第1のプロセッシングコアに送るステップと、
    前記第2のプロセスのための前記共通仮想アドレスにおいて前記共有メモリ領域の物理ページをマッピングするステップと
    を備える動作を実行させるように構成される、請求項12に記載の非一時的コンピュータ可読記憶媒体。
  14. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記マルチプロセッサコンピューティングデバイスの前記第2のプロセッシングコアに、前記第1のアドレスマップを受け取るステップがアドレスネゴシエーションハンドラスレッドにおいて前記第1のアドレスマップを受け取るステップを備えるように動作を実行させるように構成される、請求項13に記載の非一時的コンピュータ可読記憶媒体。
JP2016533375A 2013-08-07 2014-08-05 異種マルチプロセッサシステムにおける共有メモリ領域のための動的なアドレスのネゴシエーション Expired - Fee Related JP6110038B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/961,085 2013-08-07
US13/961,085 US9311011B2 (en) 2013-08-07 2013-08-07 Dynamic address negotiation for shared memory regions in heterogenous multiprocessor systems
PCT/US2014/049764 WO2015021037A1 (en) 2013-08-07 2014-08-05 Dynamic address negotiation for shared memory regions in heterogeneous muliprocessor systems

Publications (2)

Publication Number Publication Date
JP2016532959A true JP2016532959A (ja) 2016-10-20
JP6110038B2 JP6110038B2 (ja) 2017-04-05

Family

ID=51390221

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016533375A Expired - Fee Related JP6110038B2 (ja) 2013-08-07 2014-08-05 異種マルチプロセッサシステムにおける共有メモリ領域のための動的なアドレスのネゴシエーション

Country Status (7)

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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101857907B1 (ko) 2017-02-15 2018-05-14 포항공과대학교 산학협력단 IoT 디바이스를 위한 이기종 분산 공유 메모리
JP2019537762A (ja) * 2017-10-25 2019-12-26 ホアウェイ・テクノロジーズ・カンパニー・リミテッド アクティブ/アクティブ記憶システムおよびアドレス割当方法
JP2021521533A (ja) * 2018-04-18 2021-08-26 ザイリンクス インコーポレイテッドXilinx Incorporated 異種システムオンチップのためのソフトウェア定義マルチドメイン作成分離

Families Citing this family (45)

* 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 삼성전자주식회사 둘 이상의 프로세서에 의해 공유되는 메모리 장치 및 상기 메모리 장치를 포함하는 시스템
US10289847B2 (en) * 2016-07-29 2019-05-14 Qualcomm Incorporated Updating virtual memory addresses of target application functionalities for an updated version of application binary code
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
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 阿里巴巴集团控股有限公司 一种数据共享方法、终端设备和存储介质
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
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
US11334387B2 (en) 2019-05-28 2022-05-17 Micron Technology, Inc. Throttle memory as a service based on connectivity bandwidth
US11438414B2 (en) 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections
US11169930B2 (en) 2019-05-28 2021-11-09 Micron Technology, Inc. Fine grain data migration to or from borrowed memory
US11100007B2 (en) 2019-05-28 2021-08-24 Micron Technology, Inc. Memory management unit (MMU) for accessing borrowed memory
US11061819B2 (en) 2019-05-28 2021-07-13 Micron Technology, Inc. Distributed computing based on memory as a service
US11256624B2 (en) 2019-05-28 2022-02-22 Micron Technology, Inc. Intelligent content migration with 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 戴尔产品有限公司 用于迁移、复制和备份的基于阵列的拷贝机制
CN116033342B (zh) * 2022-05-30 2023-11-24 荣耀终端有限公司 地理围栏的处理方法、设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020062401A1 (en) * 1998-06-16 2002-05-23 Marc Alan Auslander Technique for efficiently transferring moderate amounts of data across address space boundary
US20080086620A1 (en) * 2006-10-06 2008-04-10 Morris Robert P Method and system for using a distributable virtual address space
US20090164749A1 (en) * 2007-12-19 2009-06-25 Microsoft Corporation Coupled symbiotic operating systems
US20100118041A1 (en) * 2008-11-13 2010-05-13 Hu Chen Shared virtual memory
US20110314238A1 (en) * 2010-06-16 2011-12-22 International Business Machines Corporation Common memory programming
US8255922B1 (en) * 2006-01-09 2012-08-28 Oracle America, Inc. Mechanism for enabling multiple processes to share physical memory

Family Cites Families (8)

* 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
US20060070069A1 (en) * 2004-09-30 2006-03-30 International Business Machines Corporation System and method for sharing resources between real-time and virtualizing operating systems
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
US8819676B2 (en) 2007-10-30 2014-08-26 Vmware, Inc. Transparent memory-mapped emulation of I/O calls
US8566537B2 (en) 2011-03-29 2013-10-22 Intel Corporation Method and apparatus to facilitate shared pointers in a heterogeneous platform

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020062401A1 (en) * 1998-06-16 2002-05-23 Marc Alan Auslander Technique for efficiently transferring moderate amounts of data across address space boundary
US8255922B1 (en) * 2006-01-09 2012-08-28 Oracle America, Inc. Mechanism for enabling multiple processes to share physical memory
US20080086620A1 (en) * 2006-10-06 2008-04-10 Morris Robert P Method and system for using a distributable virtual address space
US20090164749A1 (en) * 2007-12-19 2009-06-25 Microsoft Corporation Coupled symbiotic operating systems
US20100118041A1 (en) * 2008-11-13 2010-05-13 Hu Chen Shared virtual memory
US20110314238A1 (en) * 2010-06-16 2011-12-22 International Business Machines Corporation Common memory programming

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101857907B1 (ko) 2017-02-15 2018-05-14 포항공과대학교 산학협력단 IoT 디바이스를 위한 이기종 분산 공유 메모리
JP2019537762A (ja) * 2017-10-25 2019-12-26 ホアウェイ・テクノロジーズ・カンパニー・リミテッド アクティブ/アクティブ記憶システムおよびアドレス割当方法
JP2021521533A (ja) * 2018-04-18 2021-08-26 ザイリンクス インコーポレイテッドXilinx Incorporated 異種システムオンチップのためのソフトウェア定義マルチドメイン作成分離
JP7250043B2 (ja) 2018-04-18 2023-03-31 ザイリンクス インコーポレイテッド 異種システムオンチップのためのソフトウェア定義マルチドメイン作成分離

Also Published As

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

Similar Documents

Publication Publication Date Title
JP6110038B2 (ja) 異種マルチプロセッサシステムにおける共有メモリ領域のための動的なアドレスのネゴシエーション
TWI721060B (zh) 用於輸入/輸出裝置之可縮放虛擬化的位址轉譯設備、方法及系統
US9047090B2 (en) Methods, systems and devices for hybrid memory management
JP5911985B2 (ja) ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供
US20160019168A1 (en) On-Demand Shareability Conversion In A Heterogeneous Shared Virtual Memory
US10860332B2 (en) Multicore framework for use in pre-boot environment of a system-on-chip
US20070260827A1 (en) Method to support heterogeneous memories
US10565131B2 (en) Main memory including hardware accelerator and method of operating the same
KR20080063125A (ko) 분할 시스템에서 메모리를 액세스하는 디바이스들에 대한게스트 대 호스트 어드레스 변환
US20200319913A1 (en) System, apparatus and method for accessing multiple address spaces via a virtualization device
US11438414B2 (en) Inter operating system memory services over communication network connections
WO2019085811A1 (zh) 一种实现驱动的系统及方法
TW201810027A (zh) 孔徑存取處理器、方法、系統及指令
CN112740211A (zh) 引导固件沙箱化
US20190026231A1 (en) System Memory Management Unit Architecture For Consolidated Management Of Virtual Machine Stage 1 Address Translations
US20220164303A1 (en) Optimizations of buffer invalidations to reduce memory management performance overhead
US20130073779A1 (en) Dynamic memory reconfiguration to delay performance overhead
JP2015537301A (ja) 補助プロセッサへのホストオペレーティングシステムサービスの公開
US20210064539A1 (en) Unified address translation
US20200226067A1 (en) Coherent multiprocessing enabled compute in storage and memory
US20220327063A1 (en) Virtual memory with dynamic segmentation for multi-tenant fpgas

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161007

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170110

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170308

R150 Certificate of patent or registration of utility model

Ref document number: 6110038

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees