JP6430970B2 - 異なる命令セットアーキテクチャを有するプロセッサ上におけるオペレーティングシステムの実行 - Google Patents

異なる命令セットアーキテクチャを有するプロセッサ上におけるオペレーティングシステムの実行 Download PDF

Info

Publication number
JP6430970B2
JP6430970B2 JP2015558884A JP2015558884A JP6430970B2 JP 6430970 B2 JP6430970 B2 JP 6430970B2 JP 2015558884 A JP2015558884 A JP 2015558884A JP 2015558884 A JP2015558884 A JP 2015558884A JP 6430970 B2 JP6430970 B2 JP 6430970B2
Authority
JP
Japan
Prior art keywords
processor
operating system
execution
code
instruction set
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.)
Active
Application number
JP2015558884A
Other languages
English (en)
Other versions
JP2016507849A5 (ja
JP2016507849A (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 JP2016507849A publication Critical patent/JP2016507849A/ja
Publication of JP2016507849A5 publication Critical patent/JP2016507849A5/ja
Application granted granted Critical
Publication of JP6430970B2 publication Critical patent/JP6430970B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Stored Programmes (AREA)

Description

関連出願の相互参照
本出願は、2013年2月26日に出願された参照によりその内容の全体を本明細書に明示的に組み込むものとする本願の所有者が所有する米国非仮特許出願第13/777,314号からの優先権を主張するものである。
本開示は一般的には、マルチプロセッサデバイスでのオペレーティングシステムの実行に関する。
技術の進歩によって、コンピューティングデバイスはより小型でかつより強力になっている。たとえば、小型で、軽量でかつ、ユーザにより持ち運びが容易なポータブルワイヤレス電話機、携帯情報端末(PDA)、タブレットコンピュータ、ポケットベルデバイスなどのワイヤレスコンピューティングデバイスを含む多種多様なポータブルパーソナルコンピューティングデバイスが目下存在している。このような多くのコンピューティングデバイスは、この中に一体化させた他のデバイスを含む。たとえばワイヤレス電話機はまた、デジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダおよびオーディオファイルプレーヤを含むことが可能である。さらにこのようなコンピューティングデバイスは、インターネットへのアクセスに使用可能なウェブブラウザアプリケーションやスチルカメラやビデオカメラを利用するとともにマルチメディア再生の機能性を提供するマルチメディアアプリケーションなどのソフトウェアアプリケーションを含む実行可能命令を処理することが可能である。このためこれらのデバイスは、デスクトップコンピュータなどのより大型のデバイスによって実行されるのが典型的であるような機能を実行することが可能である。
いくつかの電子デバイスは、複数のプロセッサを含むことがある。たとえばモバイルフォンは、中央処理ユニット(CPU)(時に、アプリケーションプロセッサとも呼ばれる)と、デジタル信号プロセッサ(DSP)と、を含むことがある。各プロセッサは、ある種の計算タスクを実行するために他のプロセッサと比べてより適していることがある。たとえば、主プロセッサの役割をし得るとともにモバイルフォンオペレーティングシステムを実行し得るCPUは、ウェブブラウザや表計算コードなどの「制御コード」の実行についてより高効率であることがある。他方DSPは、信号処理や他の数学集約的な機能を実行する際にCPUと比べてより高効率であることがある。
異なるプロセッサは、異なる作業負荷向けに最適化されることがあり、また異なるアーキテクチャ(たとえば、命令セット)を有することがある。たとえば電話機は、第1のアーキテクチャに従って実装されたCPUと、第2のアーキテクチャに従って実装されたDSPと、を含むことがある。異なるプロセッサが異なるアーキテクチャを有するため、各プロセッサはそれ自体のオペレーティングシステムを実行することがある。これらのプロセッサ上で同じオペレーティングシステムが実行される場合であっても、各プロセッサはそれ自体のオペレーティングシステムインスタンスを実行する別々のマシンの役割をする。アーキテクチャの違いのために、この2つのオペレーティングシステムインスタンスはデータを共有して処理タスクを互いに担い合うことが不可能なことがある。さらにメモリは各環境から割り当てられており、共有のプールから割り当てられていない。
モバイルアプリケーションがより複雑になるに従って、ある種のアプリケーションまたはそのスレッドは、CPU実行またはDSP実行についてより適切であることがある。しかし、CPUとDSPは異なるオペレーティングシステムを実行するため、電話機がアプリケーション(および、その各スレッド)をCPU上でだけまたはDSP上でだけ実行することを強いられることがある。その結果モバイルアプリケーションは、従来ではCPU向けに開発されており、DSPなどの利用可能な他のプロセッサの処理能力の活用に取り組んでいない。
パーソナルコンピューティング分野では、いくつかのソフトウェアベンダーが「ユニバーサル」バイナリ(「ファット(fat)」バイナリとも呼ばれる)を提供することによって異なるコンピュータでの異なるアーキテクチャの使用に対処するように取り組んでいる。一般にユニバーサルバイナリは、同じソフトウェアについての複数のアーキテクチャの各々ごとの異なるバージョンを含む。ある特定のコンピュータにおけるユニバーサルバイナリのインストールまたは実行の間に、当該コンピュータのアーキテクチャに基づいて適切なバージョンのソフトウェアが特定されて、インストールまたは実行される。しかし、各コンピュータ上に存在するアーキテクチャは1つだけであるため、ユニバーサルバイナリは異なるアーキテクチャを有するプロセッサを用いて同じソフトウェアインスタンスを同時に実行するための方法を提供していない。さらに、プロセッサ間で共有されるデータ構造を実装しかつ処理することは困難なことがある。
異なるアーキテクチャを有する複数のプロセッサ上でソフトウェア(たとえば、オペレーティングシステム)の同じインスタンスを同時に実行するシステムおよび方法を開示する。たとえば本開示に基づけば、CPUとDSPが異なる命令セットアーキテクチャを有する場合であっても、ゲームに関するグラフィックおよびユーザインターフェース(UI)スレッドがモバイルフォンのCPU上で実行される一方、ゲームに関するマルチメディア処理スレッドがモバイルフォンのDSP上で実行されることがある。記載した技法によればCPUコードとDSPコードとが、対称型マルチプロセッシング(SMP)マシン上にあるかのようにして存在するように見せ得る。したがって、データ構造および通信プリミティブが共有されることがあり、また異種のアーキテクチャにわたるマルチスレッドが利用されることがある。
第1の実装形態によれば、複数のバージョンのオペレーティングシステム機能(たとえば、カーネルコード)が、複数のプロセッサへのアクセスを有する単一のオペレーティングシステムインスタンス内に設けられることがある。たとえばオペレーティングシステムは1つまたは複数の機能の各々について、CPUの命令セットを使用して実装される第1のバージョンとDSPの命令セットを使用して実装される第2のバージョンとへのアクセスを有することがある。両バージョンの機能がランタイム時に利用可能となるため、アプリケーション開発者には利用可能なアーキテクチャの1つまたは複数を実行するようなアプリケーション(および、その個々のスレッドまたは一部)を設計するための機会が与えられ得ることが理解されよう。
さらに、オペレーティングシステムのスケジューラは、特定のコードがCPUによって実行されるように意図されたものかまたはDSPによって実行されるように意図されたものか(または、実行されるべきかどうか)を判定するように構成されることがある。メモリ(たとえば、仮想および/または物理的アドレス空間)とカーネルデータ構造とは、プロセッサおよびその上で実行されるコードによって共有されることがある。一実装形態では、オペレーティングシステムに対するDSP要求がCPUに伝えられた後に処理結果がDSPに戻すように送られること、あるいはこの逆となることがある。さらに、同じタスクの異なる部分(すなわち、ソフトウェアスレッド)は異なるプロセッサによって実行されることがある。
第2の実装形態によれば、DSPコードは「リモートの」オペレーティングシステム環境を稼働させることがある。DSPにおいて発生するオペレーティングシステムイベント(たとえば、ページフォールト、例外、システムリクエスト、トラップ、その他)がCPUによって取り扱われることがある。したがって、タスクがDSP環境で稼働するように見えている場合であっても、実際にはオペレーティングシステムリクエストがCPU環境によって取り扱われていることがある。
ある特定の実施形態では、方法は第1のプロセッサ(たとえば、DSP)上で第1のコードを実行するステップを含む。本方法はさらに、第1のコードを実行する間にオペレーティングシステムイベントを実行するステップを含む。本方法はさらに、オペレーティングシステムイベントを実行するにあたり、第1のコードの実行を停止するとともに第2のプロセッサ(たとえば、CPU)上でオペレーティングシステムイベントを取り扱うための第2のコードの実行を始動するステップを含む。本方法は、オペレーティングシステムイベントを取り扱う第2のコードの実行の完了にあたり、第2のコードを停止するとともに、第1のプロセッサ(たとえば、DSP)上で第1のコードの実行を再開するステップを含む。
別の特定の実施形態では、装置は第1の命令セットを有する第1のプロセッサを含む。本装置はさらに、第1の命令セットと異なる第2の命令セットを有する第2のプロセッサを含む。本装置はさらに、第1のプロセッサおよび第2のプロセッサの上で同時に実行可能なオペレーティングシステムの少なくとも一部分を記憶しているメモリを含む。
別の特定の実施形態では、方法は、オペレーティングシステムのスケジューラにおいて、実行のためにタスクをスケジュール設定させる要求を受け取るステップを含む。このオペレーティングシステムは、第1のアーキテクチャを有する第1のプロセッサおよび第2のアーキテクチャを有する第2のプロセッサ上で同時に実行可能である。本方法はさらに、そのタスクが第1のプロセッサ上の第1のアーキテクチャを用いたかつ第2のプロセッサ上の第2のアーキテクチャを用いた実行のために利用可能であるとの判定に応答して、少なくとも1つの選択基準に基づいて第1のプロセッサ上のタスクをスケジュール設定するステップを含む。本方法はさらに、タスクの実行の間に、タスクの実行を第1のプロセッサから第2のプロセッサに切り替えるステップを含む。
別の特定の実施形態では、装置は第1の命令セットと関連付けされた命令を処理するための第1の手段を含む。本装置はさらに、第2の命令セットと関連付けされた命令を処理するための第2の手段を含む。本装置はさらに、処理するための第1の手段および処理するための第2の手段上で同時に実行可能なオペレーティングシステムの少なくとも一部分を記憶するための手段を含む。
別の特定の実施形態では、非一時的コンピュータ可読記録媒体はオペレーティングシステムの単一のインスタンスを含む。オペレーティングシステムのこの単一のインスタンスは、第1のプロセッサおよび第2のプロセッサを含んだ電子デバイスで実行されたときに、この第1のプロセッサおよび第2のプロセッサ上でのオペレーティングシステムの同時実行をさせる命令を含む。第1のプロセッサは第1の命令セットアーキテクチャと関連付けされており、また第2のプロセッサは第1の命令セットアーキテクチャと異なる第2の命令セットアーキテクチャと関連付けされている。
別の特定の実施形態では、装置は第1の命令セットアーキテクチャと関連付けされた第1のプロセッサに対してかつ第2の命令セットアーキテクチャと関連付けされた第2のプロセッサに対してアクセス可能なメモリを含む。このメモリは、少なくとも1つのデータ構造を記憶している。このデータ構造は、第1の命令セットアーキテクチャ上で実行するようにコンパイルされた第1の機能(function)に関する第1の位置特定識別子を含む。このデータ構造はさらに、第2の命令セットアーキテクチャ上で実行するようにコンパイルされた第2の機能に関する第2の位置特定識別子を含む。
開示した実施形態のうちの少なくとも1つによって提供される特定の利点の1つは、オペレーティングシステムの単一のインスタンスとそのオペレーティングシステムと関連付けされたアプリケーション/スレッドとを、異種のアーキテクチャを有する複数のプロセッサ上で同時に実行する能力である。たとえばオペレーティングシステムコードおよび/またはアプリケーションコードは、選択基準(たとえば、当該タイプのコードを実行するのにどのプロセッサが最も負荷が小さいか、どのプロセッサが最も適しているか、その他)に基づいて、複数の利用可能プロセッサのうちのある特定のプロセッサ上で実行するようにスケジュール設定されることがある。開示した実施形態のうちの少なくとも1つによって提供される別の利点は、サードパーティアプリケーションについては従来では使用されてないプロセッサのコンピューティング能力(たとえば、DSP)の活用が可能なアプリケーションをアプリケーション開発者が開発できる能力である。本開示の他の態様、利点および特徴は、以下の図面の簡単な説明、発明を実施するための形態および特許請求の範囲の部分を含む本出願全体を吟味することによって明らかとなろう。
異なるアーキテクチャを有する複数のプロセッサ上でのオペレーティングシステムの単一のインスタンスの実行をサポートするように動作可能なシステムのある特定の実施形態を例証するための図である。 図1のオペレーティングシステムデータ構造のある特定の実施形態を例証するための図である。 オペレーティングシステムの単一のインスタンスを異なるアーキテクチャを有する複数のプロセッサ上で実行する方法のある特定の実施形態を例証するための流れ図である。 オペレーティングシステムの単一のインスタンスを異なるアーキテクチャを有する複数のプロセッサ上で実行する方法の別の特定の実施形態を例証するための流れ図である。 異なるアーキテクチャを有する複数のプロセッサ上でのオペレーティングシステムの単一のインスタンスの実行をサポートするように動作可能な構成要素を含むワイヤレスデバイスのブロック図である。
図1は、異なるアーキテクチャ(または、「命令セットアーキテクチャ(ISA)」または「命令セット」と呼ばれる)を有する複数のプロセッサ上でのオペレーティングシステムの単一のインスタンスの同時実行をサポートするように動作可能なシステム100の例証の一実施形態の図である。たとえば図1のシステム100では、オペレーティングシステム(O/S)104およびこれに関連付けされたコンポーネント/アプリケーションが第1のISAを有する第1のプロセッサ110および第2のISAを有する第2のプロセッサ112上で同時に実行されることがある。図1には2つのプロセッサを示しているが、これは単に例証のためであることに留意すべきである。本明細書に記載した技法は、3つ以上のプロセッサを含むシステムで使用されることがある。
ある特定の実施形態では、プロセッサ110、112のうちの少なくとも1つを、CPU命令セットと関連付けされた命令を実行するように構成されたCPUなどの中央処理ユニット(CPU)とすることがある。たとえばCPUは、複数の実行コア(たとえば、デュアルコアCPU、クァッドコアCPU、その他)を有することがある。マルチプロセッサ電子デバイス(たとえば、モバイルフォンなどのモバイルコンピューティングデバイス)ではそのCPUは、入力/出力(I/O)コード、ユーザインターフェース(U/I)コード、ブラウザコード、表計算コード、その他などの制御コードを実行する役割をすることおよび/または制御コードを実行するのにより適することがある。たとえば、モバイルフォンがU/Iタスク(または、スレッド)とマルチメディア処理タスク(または、スレッド)の両方を含んだゲームを実行するときにそのCPUは、U/Iタスクを実行するときの方がマルチメディア処理タスクを実行するときと比べてより効率的に実行することがある。
ある特定の実施形態では、プロセッサ110、112のうちの少なくとも1つを、DSP命令セットと関連付けされた命令を実行するように構成されたプロセッサなどのデジタル信号プロセッサ(DSP)とすることがある。たとえばDSPは、複数のハードウェアスレッドを有することがあり、またマルチスレッドとリアルタイム処理のダイナミック交互配置をサポートすることがある。マルチプロセッサ電子デバイス(たとえば、モバイルフォン)ではDSPは、ワイヤレス信号処理機能および数学集約的なコードを実行する役割をすることおよび/または実行するのにより適することがある。たとえばモバイルフォンがU/Iタスク(または、スレッド)とマルチメディア処理タスク(または、スレッド)の両方を含んだゲームを実行するときにそのDSPは、マルチメディア処理タスクを実行するときの方がU/Iタスクを実行するときと比べてより効率的に実行することがある。
記載した技法と連携して様々なプロセッサの組合せを使用し得ることに留意すべきである。一例としてシステム100は、同じタイプであるが異なる命令セットを有する複数のプロセッサを含むことがある。例証のために、プロセッサ110、112の両方をCPUとするが、CPUのISAは異なることがある。別法として、プロセッサ110、112の両方をDSPとするが、DSPのISAは異なることがある。別の例では、プロセッサ110、112のうちの一方をCPUとすることがあり、かつプロセッサ110、112のうちのもう一方をDSPとすることがある。CPUやDSP以外のプロセッサをシステム100に存在させることもある。他のタイプのプロセッサには、ネットワーク処理ユニット(NPU)、グラフィック処理ユニット(GPU)、その他(ただし、これらに限らない)を含むことがある。さらに、本明細書の説明ではCPUタイプのアーキテクチャおよびDSPタイプのアーキテクチャに言及しているが、これは単に例示のためであることにも留意されたい。記載した技法と連携して様々なアーキテクチャ/命令セットが使用されることがある。異なるアーキテクチャが異なる機能、異なるオペコード、共通の機能に関する異なるタイプおよび異なる数のアーギュメント、その他をサポートすることがある。
システム100は、データ記憶能力を含むことがある。データ記憶は、揮発性メモリ(たとえば、ランダムアクセスメモリ(RAM)、レジスタベースのメモリまたはキャッシュベースのメモリ)および/または不揮発性メモリ(たとえば、ハードディスク)を含むことがある。図1の実施形態では、システム100はメモリ116を含む。本明細書でさらに記載するようにメモリ116は、プロセッサ110、112にわたるオペレーティングシステム104の同時実行をサポートするために少なくとも1つのオペレーティングシステムデータ構造118を記憶する「コヒーレント」メモリとすることがある。たとえばオペレーティングシステムデータ構造118は、図2を参照しながらさらに説明するようなロック(lock)、スケジュール設定キューおよび機能ポインタのテーブルを含むことがある。
オペレーティングシステム104は一般に、システム100においてシステムレベル(たとえば、カーネルレベル)機能を実行するように動作可能とし得る。たとえばオペレーティングシステム104は、ブロッキング/アンブロッキングを実行することがあり、またハードウェアリソース(たとえば、プロセッサ110、112やメモリ116)に関するアブストラクションおよびハードウェアリソースへの多重化アクセスを提供することがある。システムレベルの機能性の提供に加えてオペレーティングシステム104は、1つまたは複数のアプリケーション(たとえば、ユーザモードアプリケーション)の実行をサポートすることがある。たとえばアプリケーション102は、ユーザや管理者によってシステム100にインストールされたサードパーティアプリケーションとすることがある。
オペレーティングシステム104は、オペレーティングシステム機能を実行するために1つまたは複数のモジュールまたは論理ブロックを含むことがある。たとえばオペレーティングシステム104は、スケジューラ106とイベントハンドラ107とを含むことがある。スケジューラ106はプロセッサ110、112におけるタスクの実行をスケジュール設定するように構成されることがあり、またイベントハンドラ107はオペレーティングシステムイベントを取り扱う(たとえば、これに応答する)ように構成されることがある。ある特定の実施形態ではオペレーティングシステム104は、プロセッサ110、112のいずれかがプロセッサ110、112のもう一方が使用中または依拠している可能性があるオペレーティングシステム状態(たとえば、メモリ116のデータ)を変更することを防止する安全機構または制御を含むことがある。
ある特定のタスク114を実行する要求の(たとえば、オペレーティングシステム104やアプリケーション102からの)受け取りに応答してスケジューラ106は、この特定のタスク114が第1のプロセッサ110の第1の命令セットをサポートするか、第2のプロセッサ112の第2の命令セットをサポートするか、あるいはこの両方をサポートするか(たとえば、これを用いた実行のために利用可能であるかどうか)を判定することがある。ある特定の実施形態では、タスクがある特定の命令セットをサポートするかどうかの判定は、システム100がこの特定の命令セットの命令を使用して表現されたタスク(および、関連する任意のサブルーチン、オペレーティングシステムコール、その他)に対応するコードへのアクセスを有するかどうかの判定を含む。要求されたタスク114が命令セットのうちの一方だけをサポートするとスケジューラ106が判定した場合、スケジューラ106は、対応するサポートされるプロセッサ110または112上での実行について要求されたタスク114をスケジュール設定することがある。
スケジューラ106によって要求されたタスク114が複数の命令セット/複数のプロセッサをサポートすると判定された場合、スケジューラ106は実行のためにタスク114をスケジュール設定する対象となるある特定のプロセッサを選択することがある。その上でのタスク114をスケジュール設定するある特定のプロセッサ110、112が選択されると、スケジューラ106は対応する命令セットを用いてタスクを開始するためにシステムコールを提供することがある。
ある特定の実施形態では、スケジューラ106は、この特定のプロセッサの選択にあたり選択基準108を使用することがある。選択基準108は、最小負荷のプロセッサの識別を含むことがある。たとえばスケジューラ106は、タスク114がその上でスケジュール設定されるプロセッサ110、112から最小負荷のものを選択し、負荷バランスを実現することがある。別法としてまたは追加として選択基準108には、タスクのタイプを含むことがある。たとえばスケジューラ106は、CPU上でU/Iタスクをスケジュール設定することがあり、またDSP上で数学集約的なタスクをスケジュール設定することがある。別法としてまたは追加として選択基準108には、タスク114と関連付けされた最低パワー使用の識別を含むことがある。たとえばスケジューラ106は、タスク114の実行中にパワーの消費が最小量となるプロセッサ110または112上でタスク114をスケジュール設定し、これによりシステム100でのパワー消費全体を低減することがある。スケジューラ106によって他の選択基準が使用されることもある。
ある特定の実施形態では、タスク114が第1のプロセッサ110の第1の命令セットと第2のプロセッサ112の第2の命令セットの両方をサポートするとき、スケジューラ106はプロセッサ110、112のうちの一方からもう一方にタスクの実行を切り替えるように構成されることがある。さらに、このような動的な切替えは、タスク114の実行の間でかつシステムのより高次のコンポーネント(たとえば、アプリケーション102)に対してトランスペアレントで実行されることがある。たとえばタスク114は、(たとえば、システムコールを用いて)120で示したように第1のプロセッサ110から第2のプロセッサ112に、またはこの逆に「移行する(migrated)」ことがある。このような移行は、少なくとも部分的に同じコヒーレントメモリ116およびこの上に記憶されたオペレーティングシステムデータ構造118へのアクセスを有する第1のプロセッサ110および第2のプロセッサ112によって可能とされることがある。複数の命令セットをサポートするタスクを動的に移行させる能力によって1つの命令セットだけをサポートするタスクのための処理リソースが開放され得ることが理解されよう。
上ではタスクに関するスケジュール設定および移行について説明しているが、サブタスクに関するスケジュール設定および移行についても図1のシステム100で実行され得ることに留意すべきである。たとえば、ゲームに関するI/Oタスク/スレッド、マルチメディア処理タスク/スレッドおよびグラフィックタスク/スレッドが、CPU、DSPおよびGPUのそれぞれで同時にスケジュール設定されかつ実行されることがある。適切なプロセッサ上へのタスクのスケジュール設定によって、図1のシステム100における効率が上昇しかつパワー消費が低下することがある。したがって、システム100がモバイルフォンなどの電池駆動式デバイスに組み込まれたとき、システム100において性能および電池寿命の上昇が得られることがある。たとえばユーザは、ゲームをCPU上で単独に走らせている場合と比べてモバイルフォンの充電を要することなく自身のモバイルフォン上でより長くゲームをプレイ可能となることがある。
動作中において、オペレーティングシステム104、そのタスク(たとえば、タスク114)および/またはこれに関連付けされたアプリケーション(たとえば、アプリケーション102)は、プロセッサ110、112が異なるアーキテクチャを有する場合であってもプロセッサ110、112のうちの一方または両方の上で実行されることがある。たとえば、図1のシステム100での動作の第1の実施形態に従って、プロセッサ110、112のうちの一方が「主」プロセッサとなることがあり、またもう一方のプロセッサが「副」プロセッサとなることがある。このような実施形態では、副プロセッサからオペレーティングシステムへの要求が主プロセッサにわたることがあり、また処理結果が副プロセッサに送り返されることがある。
例証のために、主プロセッサをCPUとすることがあり、かつ副プロセッサをDSPとすることがある。DSPは、「リモートの」オペレーティングシステム環境を実行することがある。第1のコード(たとえば、DSP特有のコード)の実行の間にDSPは、オペレーティングシステムイベントを検出および/または実行することがある。オペレーティングシステムイベントは、実行の流れをオペレーティングシステムのユーザモードからオペレーティングシステムのカーネルモードへ切り替えさせるイベントとすることがある。オペレーティングシステムイベントの例には、ページフォールト、トラップ、システムフォールト、システムリクエスト(たとえば、ミューテックスやセマフォなどの同期オブジェクトと関連付けされる)、ハードウェアエラー(たとえば、バスエラー)、アドレスエラー、許可違反、その他(ただし、これらに限らない)が含まれる。DSPは、オペレーティングシステムイベントを取り扱うのにCPUに依拠することがある。たとえばオペレーティングシステムイベントを実行するにあたりDSPは、第1のコードの実行を停止することがあり、かつCPU上でオペレーティングシステムイベントを取り扱うように構成された第2のコードの実行を始動することがある。ある特定の実施形態では、CPUにおけるイベント取扱いコードの始動は、プロセッサ間メッセージ伝達を用いて、スケジューラ106によって、コヒーレントメモリ116を用いて、アプリケーションプログラミングインターフェース(API)を用いて、またはこれらの任意の組合せによって実行される。したがってプロセッサ110、112の各々は、コードの実行中および/または停止中にプロセッサ110、112のうちのもう一方と通信するように構成されることがある。CPUにおけるイベント取扱いコードは、オペレーティングシステムイベントを取り扱うことがあり、また任意の実行結果をDSPに提供することがある。イベント取扱いの完了にあたりイベントハンドラがCPUで停止されることがあり、またDSPコードがDSPで再開されることがある。
図1のシステム100での動作の第2の実施形態に従って、オペレーティングシステム104は複数のバージョンのオペレーティングシステムルーチン、モジュールおよび機能を含むことがある。たとえば、第1のプロセッサ110がCPUでありかつ第2のプロセッサ112がDSPであるとき、オペレーティングシステム104の単一のインスタンスは、1つまたは複数のルーチン、モジュールおよび機能について少なくとも2つのバージョン(CPUのISAにおける命令で表された第1のバージョンとDSPのISAにおける命令で表された第2のバージョン)を含むことがある。このような実施形態ではスケジューラ106は、プロセッサ110または112のいずれかの上でアプリケーション102(または、そのコンポーネント)を自由にスケジュール設定することがある、というのはオペレーティングシステム104がいずれのプロセッサを用いたアプリケーション102により出されるオペレーティングシステムコールにも応答する能力を有するためである。
図1のシステム100はしたがって、オペレーティングシステム104、そのコンポーネント、およびこれに関連付けされたアプリケーションの異なるアーキテクチャを有する複数のプロセッサ上での同時実行を可能にすることがある。これによって、図1のシステム100における効率が上昇しかつパワー消費が低下することがある。図1のシステム100はまた、従来ではサードパーティアプリケーション(たとえば、DSP)で使用されていないプロセッサの能力を活用するアプリケーションのアプリケーション開発者による開発を可能にすることがある。これによってアプリケーション開発者にとって図1のシステム100は、異なるアーキテクチャを有するプロセッサの間での動的なアプリケーションスケジュール設定やデータ共有をサポートしないシステムと比べてより魅力的となることがある。
図2は、図1のオペレーティングシステムデータ構造118に記憶され得るとともに全体を200で示した機能テーブルの特定の実施形態を例証するための図である。図1のオペレーティングシステムデータ構造118を参照しながら説明したように、図2のテーブルは複数の命令セットで利用可能な「正しい」バージョンの機能(すなわち、機能の実行を試みるプロセッサに対する命令セットとマッチングしたバージョンの機能)を識別するために使用されることがある。
共有データ構造によって共通のオペレーティングシステムを稼働させる際の困難の1つは、機能のアドレスを包含したデータ構造の処理であることがある。たとえば、第1の命令セットを有する第1のプロセッサと第2の命令セットを有する第2のプロセッサとが共通のオペレーティングシステムを有するとき、第1の命令セットと第2の命令セットの両方に実装された機能を利用可能とすることが必要となることがある。しかしこの機能は異なるアドレスに現れることがある。したがって、機能のアドレスを記憶するデータ構造(たとえば、「機能ポインタ」)は、そのアドレスがプロセッサの命令セットに応じて様々となり得るある特定のプロセッサ/命令セットについて「正しい」機能を指示できる必要がある。
記載した技法によれば、このようなデータ構造の処理に関する困難はインダイレクションのレベルを用いることによって軽減させ得る。たとえばメモリは、異なる命令セットアーキテクチャを有する複数のプロセッサにアクセス可能な共有データ構造を記憶することがある。データ構造は、第1の命令セットアーキテクチャ上で実行するようにコンパイルされた第1の機能に関する第1の位置特定識別子と、第2の命令セットアーキテクチャ上で実行するようにコンパイルされた第2の機能に関する第2の位置特定識別子と、を含むことがある。これらの位置特定識別子は、本明細書でさらに説明するような命令、オフセット、仮想アドレス、その他とすることがある。さらに第1の機能と第2の機能とを、同じオペレーティングシステム機能の異なるバージョンとすることがある。インダイレクションのレベルを導入することによって記載した技法は、同じハイレベル(たとえば、アプリケーションレベル)コードの複数のアーキテクチャ上での実行を可能とさせ得るので有利である。たとえばそのコードは、オペレーティングシステム機能「X」に対するコールを含むことがある。第1のアーキテクチャと関連付けされた第1のプロセッサ上で実行されたときに、「X」へのコールは第1のアーキテクチャに特有でありかつメモリ内の第1の物理的アドレスに位置する「X」の第1の実装形態に対してマッピングされることがある。第2のアーキテクチャと関連付けされた第2のプロセッサ上で実行されたときに、「X」への同じコールが第2のアーキテクチャに特有でありかつメモリ内の第2の物理的アドレスに位置する「X」の第2の実装形態に対してマッピングされることがある。
こうした「アーキテクチャ独立の」コード実行を実装する3つの実施形態について本明細書に記載している。図2では、3つのオペレーティングシステム機能(すなわち、「OSスケジュール」機能と、「OS読取り」機能と、「OS書込み」機能と)について示している。機能の各々の第1のバージョン(「proc1」)と機能の各々の第2のバージョン(「proc2」)とはメモリ202内の異なる位置で利用可能である。
第1の実施形態(図2では、「オプション1」と名付ける)では、テーブル210、212は「正しい」機能に実行をリダイレクトさせる短い(たとえば、一定長の)命令シーケンスを含むことがある。第1のテーブル210は第1のプロセッサ上のある特定の仮想アドレスにマッピングされることがあり、また第2のテーブル212は第2のプロセッサ上の同じ仮想アドレスにマッピングされることがある。しかしテーブル210、212は、プロセッサアーキテクチャに応じて異なる物理的アドレスに至る(たとえば、分岐するまたはジャンプする)ことがある。各プロセッサの仮想アドレスから物理的アドレスへの変換によって同じ仮想アドレスにおける「正しい」テーブルのマッピングが可能となり得る。機能に対する間接的な参照は、実際の機能ではなくテーブルエントリに向けられている。
たとえば図2に示したように、プロセッサ1が「分岐」命令をサポートすることがあり、またプロセッサ2が「ジャンプ」命令をサポートすることがある。プロセッサ1に関するテーブル210は、「OSスケジュール」機能、「OS読取り」機能および「OS書込み」機能の第1のバージョンについての分岐命令シーケンスを含むことがある。プロセッサ2に関するテーブル212は、「OSスケジュール」機能、「OS読取り」機能および「OS書込み」機能の第2のバージョンについてのジャンプ命令シーケンスを含むことがある。ハイレベルコードでの機能「OSスケジュール」へのコールはある特定の仮想アドレスに記憶されたテーブルの第1のエントリに向けられることがある。ハイレベルコードから見ると、どのプロセッサがハイレベルコードを実行しているかによらず機能マッピングテーブルについて同じ仮想アドレスが使用される。ハイレベルコードがプロセッサ1上で実行される場合、テーブル210がアクセスを受けることがあり、また「OSスケジュール」機能の「proc1」バージョンへの分岐が実行されることがある。すなわち、ハイレベルコードがプロセッサ1上で実行される場合、プロセッサ1についてはハイレベルコードの機能マッピングテーブルに関する仮想アドレスが(たとえば、プロセッサ1に特有の仮想対物理的アドレスのマッピングテーブルを介して)テーブル210の物理的アドレスにマッピングされるため、テーブル212ではなくテーブル210が「選択される」ことがある。ハイレベルコードがプロセッサ2上で実行される場合、テーブル212がアクセスを受けることがあり、また「OSスケジュール」機能の「proc2」バージョンへのジャンプが実行されることがある。すなわち、ハイレベルコードがプロセッサ2上で実行される場合、プロセッサ2についてはハイレベルコードの機能マッピングテーブルに関する仮想アドレスが(たとえば、プロセッサ2に特有の仮想対物理的アドレスマッピングテーブルを介して)テーブル212の物理的アドレスにマッピングされるため、テーブル210ではなくテーブル212が「選択される」ことがある。したがって第1の実施形態は、位置独立性のコードに関する「プロシージャリンクテーブル」と同様となることがある。
第2の実施形態(図2では、「オプション2」と名付ける)では、テーブル220、222は、各機能のアドレスを含むことがある。ある機能へのアドレスを直接記憶するのではなく、(たとえば、ハイレベルコードによって使用される)データ構造は、テーブル220、222内にアドレスまたは索引(index)を包含することがある。テーブル220、222は、第1および第2のプロセッサアーキテクチャのそれぞれに関する機能のアドレスを包含することがある。各プロセッサの仮想アドレス対物理的アドレスの変換によって、同じ仮想アドレスにおける「正しい」テーブル220、222のマッピングが可能となり得る。
たとえば図2に示したように、プロセッサ1に関する機能テーブルは、「OSスケジュール」機能、「OS読取り」機能および「OS書込み」機能の第1のバージョンに関するアドレス(たとえば、仮想アドレス)を含むことがある。プロセッサ2に関する機能テーブルは、「OSスケジュール」機能、「OS読取り」機能および「OS書込み」機能の第2のバージョンに関するアドレス(たとえば、仮想アドレス)を含むことがある。ハイレベルコードでの機能「OSスケジュール」へのコールはある特定の仮想アドレスに記憶されたテーブルの第1のエントリに向けられることがある。第1の実施形態を参照しながら上で説明したように、ハイレベルコードから見ると、どのプロセッサがハイレベルコードを実行しているかによらず機能マッピングテーブルについて同じ仮想アドレスが使用される。ハイレベルコードがプロセッサ1上で実行される場合、テーブル220がアクセスを受けることがあり、またテーブル220の第1のエントリから得られた「OSスケジュール」の「proc1」バージョンのアドレスが使用されることがある。すなわち、ハイレベルコードがプロセッサ1上で実行される場合、プロセッサ1についてはハイレベルコードの機能マッピングテーブルに関する仮想アドレスが(たとえば、プロセッサ1に特有の仮想対物理的アドレスのマッピングテーブルを介して)テーブル220の物理的アドレスにマッピングされるため、テーブル222ではなくテーブル220が「選択される」ことがある。ハイレベルコードがプロセッサ2上で実行される場合、テーブル222がアクセスを受けることがあり、またテーブル220の第1のエントリから得られた「OSスケジュール」機能の「proc2」バージョンのアドレスが使用されることがある。すなわち、ハイレベルコードがプロセッサ2上で実行される場合、プロセッサ2についてはハイレベルコードの機能マッピングテーブルに関する仮想アドレスが(たとえば、プロセッサ2に特有の仮想対物理的アドレスマッピングテーブルを介して)テーブル222の物理的アドレスにマッピングされるため、テーブル220ではなくテーブル222が「選択される」ことがある。したがって第2の実施形態は、位置独立性のコードに関する「グローバルオフセットテーブル」と同様となることがある。
第3の実施形態(図2では、「オプション3」と名付ける)では、単一のテーブル230は、第1と第2のプロセッサ命令セットの両方に実装される機能のアドレスを含むことがある。ある機能へのアドレスを直接記憶するのではなく、(たとえば、ハイレベルコードによって使用される)データ構造は、テーブル230内にアドレスまたは索引を包含することがある。2種類のテーブルではなく単一のテーブル230が使用されるため、テーブル230はプロセッサ命令セットアーキテクチャによってさらに索引付けされることがある。したがって、テーブル230内の検索によって機能/テーブル索引/オフセット、さらにはアーキテクチャ(たとえば、「proc1」または「proc2」)の両方が指定されることがある。テーブル230は図示したように、第1と第2のプロセッサアーキテクチャの両方に関する機能のアドレスを包含することがある。上に記載した第1および第2の実施形態と異なり単一のテーブル230が使用されるため、第3の実施形態では仮想アドレス対物理的アドレスのマッピングがプロセッサ間で同じに維持されることがあることが理解されよう。
たとえば、図2に示したように機能テーブルは、プロセッサ1のアーキテクチャとプロセッサ2のアーキテクチャの両方に、「OSスケジュール」機能、「OS読取り」機能および「OS書込み」のバージョンに関するアドレスを含むことがある。ハイレベルコードでの機能「OSスケジュール」へのコールはある特定の仮想アドレスに記憶されたテーブルの第1のエントリに向けられることがある。ハイレベルコードがプロセッサ1上で実行される場合、テーブル230に対する検索が、検索によって「OSスケジュール」機能と「proc1」アーキテクチャに関するオフセットが指定されるようにして実行されることがあり、また「OSスケジュール」の「proc1」バージョンについて得られたアドレスが使用されることがある。ハイレベルコードがプロセッサ2上で実行される場合、テーブル230に対する検索が、検索によって「OSスケジュール」機能と「proc2」アーキテクチャに関するオフセットが指定されるようにして実行されることがあり、また「OSスケジュール」機能の「proc2」バージョンについて得られたアドレスが使用されることがある。
第2および第3の実施形態では、機能へのポインタはまったく記憶されていないが、代わりにテーブルエントリ指示が記憶されているとともに、その機能に関するアドレスがコールサイトにおいて常時検索されることに留意すべきである。
動作中において、データ構造内の機能へのポインタは代わりに対応するテーブルエントリを指示することがある。オプション1では、テーブル内のエントリが命令/命令シーケンスであり、このため図2のテーブルで導入されたインダイレクションのレベルを伴わずに実施されるような同じ方式でポインタをコールすることが可能である。オプション2およびオプション3については、テーブルが読み取られることがあり、次いで指定のプロセッサに関する「正しい」機能アドレスが(たとえば、後続の分岐またはジャンプで使用するために)利用可能となることがある。
図2を参照しながら説明したようなオプションは組み合わせられ得ることに留意すべきである。たとえば図2に示した複数の実施形態があるシステム(たとえば、図1のシステム100)に同時に実装されることがある。例証のために、テーブル210および212を参照しながら説明したような「プロシージャリンクテーブル」の実施形態が、テーブル220および222を参照しながら説明したような「グローバルオフセットテーブル」の実施形態と連携して使用されることがある。プロセッサ1上で第1の時間にわたって機能がハイレベルコードでコールされると、このコールはテーブル210内のコードのセグメントを解決し、ここでこのコードのセグメントが適切なバージョンの機能に分岐するとともに、さらにテーブル220に対して分岐の到達先を追加する。機能への後続のハイレベルコールによって、テーブル220内のアドレスを到達先として使用するテーブル210の分岐命令が得られる。さらに、データ構造内の機能指示を、所与の命令セットに関する正しい機能のアドレスに変換する目的を果たす他の構造やプロシージャも使用され得ることに留意すべきである。
図3は、異なるアーキテクチャを有する複数のプロセッサ上でオペレーティングシステムの単一のインスタンスを実行する方法300のある特定の実施形態の例証のための流れ図である。図示した実施形態では方法300は、図1のシステム100によって実行されることがあり、また図2の機能およびテーブルの参照により説明され得る。
方法300は、302において第1のプロセッサ上で第1のコードを実行するステップを含むことがある。ある特定の実施形態ではその第1のプロセッサはマルチスレッド式DSPとすることがある。たとえば図1の第1のプロセッサ110は、図2の「OSスケジュール」、「OS読取り」または「OS書込み」機能などの第1のタスクに対応する第1のコードを実行することがある。
方法300はまた、304において第1のコードを実行する間に、実行の流れをユーザモードからカーネルモードに遷移させるオペレーティングシステムイベントを実行するステップを含むことがある。このオペレーティングシステムイベントは、ページフォールト、トラップ、システムフォールト、システムリクエスト、ハードウェアエラー、アドレスエラー、許可違反、その他とすることがある。たとえば第1のコードを実行する間に図1の第1のプロセッサ110はあるオペレーティングシステムイベントを実行することがある。
方法300はさらに、306においてオペレーティングシステムイベントを実行するにあたり、第1のコードの実行を停止するとともに第2のプロセッサ上で第2のコードの実行を始動するステップを含むことがある。第2のコードは、オペレーティングシステムイベントを取り扱うように構成されることがある。第2のプロセッサは、マルチコアCPUとすることがある。たとえばオペレーティングシステムイベントを実行するにあたり図1の第1のプロセッサ110は、第1のコードの実行を停止することがあり、かつ図1の第2のプロセッサ112上で第2のコードを実行させることがある。
方法300は、308においてオペレーティングシステムイベントを取り扱う第2のコードが完了するにあたり、第2のコードを停止するとともに第1のプロセッサ上で第1のコードの実行を再開するステップを含むことがある。たとえば第2のコードの実行が図1の第2のプロセッサ112によって停止されることがあり、かつ第1のコードの実行が図1の第1のプロセッサ110で再開されることがある。
図3の方法300はしたがって、「副」プロセッサによる「リモートの」オペレーティングシステム環境の実行を可能にするとともに、オペレーティングシステムイベントの取扱いは「主」プロセッサに依拠することがある。たとえば、コードがある特定のオペレーティングシステムを実行するCPU向けに記述されかつコンパイルされている場合であっても、そのコードはCPUと連携してこの特定のオペレーティングシステムを稼働しているDSP上で実行されることがあり、かつこのDSPはイベントの取扱いおよび他のオペレーティングシステムタスクについてはCPUに依拠することがある。DSP上で稼働するプロセスから見れば、CPU上で稼働していたとすれば利用可能であったはずのファシリティ/サービスを依然として利用可能とさせ得る。
ある特定の実施形態では、図3の方法300は、DSP、CPU、コントローラ、フィールドプログラマブルゲートアレイ(FPGA)デバイス、特定用途向け集積回路(ASIC)、別のハードウェアデバイス、ファームウェアデバイス、またはこれらの任意の組合せによって実装させ得る。一例として図3の方法300は図5に関連して説明するような命令を実行するプロセッサによって実行されることが可能である。
図4は、異なるアーキテクチャを有する複数のプロセッサ上でオペレーティングシステムの単一のインスタンスを実行する方法400の別の特定の実施形態を例証するための流れ図である。図示した実施形態では方法400は、図1のシステム100によって実行されることがあり、また図2の機能およびテーブルの参照により説明され得る。
方法400は、402でオペレーティングシステムのスケジューラにおいて、実行のためにタスクをスケジュール設定させる要求を受け取るステップを含むことがある。このオペレーティングシステムは、第1のアーキテクチャを有する第1のプロセッサおよび第2のアーキテクチャを有する第2のプロセッサ上で同時に実行可能である。たとえば図1においてスケジューラ106は、実行のためにタスク114をスケジュール設定する要求を受け取ることがある。
方法400はさらに、404においてそのタスクが複数の命令セットをサポートするかどうかを判定するステップを含むことがある。たとえば図1においてスケジューラ106は、タスク114が第1のプロセッサ110の第1の命令セットと第2のプロセッサ112の第2の命令セットの両方をサポートするかどうかを判定することがある。タスクが単一の命令セットをサポートするときに方法400は、406においてサポートされた命令セットを有するプロセッサ上でタスクをスケジュール設定しかつ開始させるステップを含むことがある。
タスクが複数の命令セットをサポートするときに方法400は、408においてサポートされたプロセッサのうちの1つの上でタスクをスケジュール設定するステップと、410においてスケジュール設定されたプロセッサの命令セットを用いてタスクを開始させるステップと、を含むことがある。スケジュール設定されたプロセッサは、選択基準(たとえば、最小負荷のプロセッサ、タスクのタイプ、タスクと関連付けされた最低パワー使用、その他)に基づいて選択されることがある。たとえば図1においてスケジューラ106は、選択基準108に基づいて第1のプロセッサ110上で実行するためにタスク114をスケジュール設定することがあり、また第1の命令セットを用いたタスク114を開始するためのシステムコールを発生させることがある。
方法400はさらに、412においてタスクの実行の間にタスクの実行を他のプロセッサにまた他の命令セットに切り替えるステップを含むことがある。たとえば図1において、第1のプロセッサ110上におけるタスク114の実行の間に、120に示したようにタスク114の実行が第2のプロセッサ112に切り替えられることがある。
図示した実施形態では、タスクの実行を切り替えるステップは、414において第1のプロセッサ上でタスクの実行を他の命令セットに切り替えるためのシステムコールを出すステップを含むことがある。416に進むと、第1のプロセッサ(すなわち、410で使用されたスケジュール設定されたプロセッサ)のスケジュールからタスクが除去されることがある。418に進むと、第2のプロセッサ(すなわち、他の命令セットと関連付けされた他のプロセッサ)のスケジュールにタスクが追加されることがある。420に続いて方法400は、第2の命令セットを有する第2のプロセッサ上のシステムコールから復帰するステップを含むことがある。
図4の方法400はしたがって、マルチISAシステムにおいて、このようなシステムの実行性能、リソース使用および/またはパワー消費を改善させ得る選択基準に従ったタスクの動的なスケジュール設定を可能とさせ得る。
ある特定の実施形態では、図4の方法400は、DSP、CPU、コントローラ、フィールドプログラマブルゲートアレイ(FPGA)デバイス、特定用途向け集積回路(ASIC)、別のハードウェアデバイス、ファームウェアデバイス、またはこれらの任意の組合せによって実装させ得る。一例として図4の方法400は、図5に関連して説明するような命令を実行するプロセッサによって実行させることが可能である。
図5を参照すると、電子デバイス500のブロック図を示している。ある特定の実施形態では電子デバイス500またはその構成要素は、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末(PDA)、固定位置データユニット、コンピューティングデバイス、またはこれらの任意の組合せの中に含まれることがある。
電子デバイス500は、メモリ532に結合されたCPU510およびDSP574を含む。CPU510は複数のコア(たとえば、第1のコア570および第2のコア572)を含むことがあり、またDSP574は複数のハードウェアスレッド(たとえば、第1のハードウェアスレッド576および第2のハードウェアスレッド578)を含むことがある。図5には2つのコアと2つのハードウェアスレッドを示しているが、コアおよび/またはハードウェアスレッドを異なる数だけ有する他の構成も使用し得ることに留意すべきである。
図5は、CPU510に対してかつディスプレイ528に対して結合されたディスプレイコントローラ526を含む。CPU510に対してかつDSP574に対して符号器/復号器(CODEC)534を結合させることがある。CODEC534にはスピーカ536およびマイクロフォン538を結合させることが可能である。図5はまた、DSP574に対してかつ(たとえば、無線周波数(RF)インターフェースを介して)アンテナ542に対してワイヤレスコントローラ540を結合させることが可能であることを示している。したがって図5の実施形態では、CPU510が表示機能を実行するために使用されることがあり、DSP574がワイヤレス信号処理機能を実行するために使用されることがあり、かつCPU510とDSP574の両方にオーディオI/O機能の実行を可能とさせることがある。
メモリ532は、実行可能命令556を含んだ有形で非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体とすることがある。たとえばメモリ532は、図1のスケジューラ106、図1のイベントハンドラ107および図1の選択基準108など、図1のオペレーティングシステム104および/またはそのコンポーネントの少なくとも一部分を記憶することがある。メモリ532(たとえば、RAM)がオペレーティングシステムの一部分を記憶しているとき、オペレーティングシステムの残りの部分は別のメモリまたは記憶デバイス(たとえば、ハードディスク)に記憶されることがある。メモリ532はまた、オペレーティングシステムデータ構造558(たとえば、図1のオペレーティングシステムデータ構造118および/または図2のテーブル)を記憶することがある。命令556は、図3の方法300および図4の方法400を含む様々な機能および方法を実行するようにCPU510やDSP574などのプロセッサによって実行されることがある。
ある特定の実施形態では、CPU510、DSP574、ディスプレイコントローラ526、メモリ532、CODEC534およびワイヤレスコントローラ540が、システムインパッケージまたはシステムオンチップデバイス522内に含まれている。ある特定の実施形態では、システムオンチップデバイス522に対して入力デバイス530および電源544が結合されている。さらにある特定の実施形態では図5に示したように、ディスプレイ528、入力デバイス530、スピーカ536、マイクロフォン538、アンテナ542および電源544がシステムオンチップデバイス522に対して外部にある。しかしディスプレイ528、入力デバイス530、スピーカ536、マイクロフォン538、アンテナ542および電源544の各々はインターフェースやコントローラなどシステムオンチップデバイス522の構成要素に結合させることが可能である。
記載した実施形態に関連して、装置は第1の命令セットと関連付けされた命令を処理するための第1の手段を含む。たとえばこの処理をするための第1の手段は、図1の第1のプロセッサ110、図1の第2のプロセッサ112、図5のCPU510、図5のDSP574、別のプロセッサ(たとえば、NPUまたはGPU)、命令を処理するように構成された別のデバイスまたはモジュール、またはこれらの任意の組合せを含むことがある。
本装置はまた、第2の命令セットと関連付けされた命令を処理するための第2の手段を含むことがある。たとえばこの処理をするための第2の手段は、図1の第1のプロセッサ110、図1の第2のプロセッサ112、図5のCPU510、図5のDSP574、別のプロセッサ(たとえば、NPUまたはGPU)、命令を処理するように構成された別のデバイスまたはモジュール、またはこれらの任意の組合せを含むことがある。
本装置はさらに、処理するための第1の手段および処理するための第2の手段上で同時に実行可能なオペレーティングシステムの少なくとも一部分を記憶するための手段を含むことがある。たとえば、オペレーティングシステムの少なくとも一部分を記憶するための手段は、図1のコヒーレントメモリ116、図5のメモリ532、データを記憶するように構成された別のデバイスまたはモジュール、またはこれらの任意の組合せを含むことがある。
本装置はまた、オペレーティングシステムと関連付けされた少なくとも1つの共有データ構造を記憶するための手段を含むことがある。たとえばこの少なくとも1つの共有データ構造を記憶するための手段は、図1のメモリ116、図5のメモリ532、データを記憶するように構成された別のデバイスまたはモジュール、またはこれらの任意の組合せを含むことがある。
本装置は、処理するための第1の手段または処理するための第2の手段のいずれかの上で第1の命令セットと第2の命令セットの両方をサポートするタスクの実行をスケジュール設定するための手段を含むことがある。たとえばこのスケジュール設定するための手段は、図1のスケジューラ106、実行のためにタスクをスケジュール設定するように構成された別のデバイスまたはモジュール、またはこれらの任意の組合せを含むことがある。
当業者であればさらに、本明細書に開示した実施形態と関連して記載した論理ブロック、構成、モジュール、回路、およびアルゴリズムステップが電子ハードウェア、プロセッサによって実行されるコンピュータソフトウェア、またはこの両者の組合せとして実装し得ることを理解されよう。様々な例示の構成要素、ブロック、構成、モジュール、回路およびステップについて一般にその機能性に関して上で説明してきた。このような機能性がハードウェアとして実装されるのかプロセッサ実行可能な命令として実装されるのかは、その特定の用途およびシステム全体に課せられる設計制約に依存する。当業者は記載した機能性を各特定の用途について多様な方法で実装することがあり得るが、このような実装決定が本開示の趣旨から逸脱したものと解釈すべきではない。
本明細書に開示した実施形態と関連して記載した方法またはアルゴリズムのステップはハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、またはこの2つの組合せで直接的に具現化させ得る。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、プログラム可能読取り専用メモリ(PROM)、消去可能プログラム可能読取り専用メモリ(EPROM)、電気的消去可能プログラム可能読取り専用メモリ(EEPROM)、レジスタ、ハードディスク、取外し可能ディスク、コンパクトディスク読取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、または当技術分野で周知の他の任意の形式の非一時的記憶媒体の中に存在することがある。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替形態として、記憶媒体をプロセッサと一体化させることがある。このプロセッサと記憶媒体は特定用途向け集積回路(ASIC)内に存在することがある。このASICは、コンピューティングデバイスまたはユーザ端末に存在することがある。代替形態として、プロセッサと記憶媒体がコンピューティングデバイスまたはユーザ端末内に個別構成要素として存在することがある。
たとえば記載した実施形態によれば、非一時的コンピュータ読取り可能記憶媒体(たとえば、CD、DVD、メモリデバイス、その他)はオペレーティングシステムの単一のインスタンスを記憶することがある。オペレーティングシステムは、第1のプロセッサおよび第2のプロセッサを含んだ電子デバイスで実行されたときに、第1のプロセッサおよび第2のプロセッサ上でのオペレーティングシステムの同時実行をさせる命令を含むことがある。第1のプロセッサは第1の命令セットアーキテクチャと関連付けされており、かつ第2のプロセッサは第1の命令セットアーキテクチャと異なる第2の命令セットアーキテクチャと関連付けされている。
開示した実施形態に関する上の説明は当業者による開示した実施形態の製作または使用を可能にするように提供したものである。これらの実施形態に対する様々な修正は当業者には容易に明らかであろう、また本明細書で規定した原理は本開示の趣旨を逸脱することなく他の実施形態に適用し得る。したがって本開示を本明細書に示した実施形態に限定するように意図していないが、添付の特許請求の範囲による規定に従った原理および新規の特徴と矛盾しない可能な最も広い範囲と一致させるべきである。
100 システム
102 アプリケーション
104 オペレーティングシステム(O/S)
106 スケジューラ
107 イベントハンドラ
108 選択基準
110 第1のプロセッサ
112 第2のプロセッサ
114 タスク
116 コヒーレントメモリ
118 オペレーティングシステムデータ構造
202 メモリ
210 第1のテーブル
212 第2のテーブル
220 テーブル
222 テーブル
230 テーブル
500 電子デバイス
510 CPU
522 システムオンチップデバイス
526 ディスプレイコントローラ
528 ディスプレイ
530 入力デバイス
532 メモリ
534 CODEC
536 スピーカ
538 マイクロフォン
540 ワイヤレスコントローラ
542 アンテナ
544 電源
556 実行可能命令
558 オペレーティングシステムデータ構造
570 第1のコア
572 第2のコア
574 DSP
576 第1のハードウェアスレッド
578 第2のハードウェアスレッド

Claims (14)

  1. 複数のプロセッサを備えるシステムにおいて、複数のプロセッサ上でオペレーティングシステムの単一のインスタンスを実行する方法であって、各プロセッサは関連付けられた異なる命令セットアーキテクチャを有し、前記方法は、
    第1の命令セットアーキテクチャと関連付けられ、かつ仮想アドレスに基づいて共有データ構造内の第1のテーブルエントリにアクセスするように構成される第1のプロセッサ上で第1のコードを実行するステップであって、前記第1のテーブルエントリは前記仮想アドレスにマッピングされる、ステップと、
    前記オペレーティングシステムによって、前記第1のコードを実行する間に、オペレーティングシステムイベントを実行するステップであって、前記オペレーティングシステムは、前記第1のプロセッサおよび第2のプロセッサの上で同時に実行可能であり、前記第2のプロセッサは、第2の異なる命令セットアーキテクチャと関連付けられ、かつ前記仮想アドレスに基づいて前記共有データ構造内の第2のテーブルエントリにアクセスするように構成される、ステップと、
    前記オペレーティングシステムによって、前記オペレーティングシステムイベントを実行するときに、前記第1のコードの実行を停止するとともに、前記第2のプロセッサ上で前記オペレーティングシステムイベントを取り扱うための第2のコードの実行を始動するステップであって、前記第2のテーブルエントリは前記仮想アドレスにマッピングされる、ステップと、
    前記オペレーティングシステムによって、前記オペレーティングシステムイベントを取り扱う前記第2のコードの実行が完了するときに、前記第2のコードを停止するとともに前記第1のプロセッサ上で前記第1のコードの実行を再開するステップであって、前記第1のテーブルエントリと前記第2のテーブルエントリは前記共有データ構造内の第1の位置特定識別子と第2の位置特定識別子のそれぞれに対応する、ステップと
    を含み、
    前記第1の位置特定識別子と前記第2の位置特定識別子とは異なる、方法。
  2. 前記第1のプロセッサと前記第2のプロセッサの各々は、前記共有データ構造を備える同じコヒーレントメモリにアクセスするように構成され、前記第1のプロセッサおよび前記第2のプロセッサはモバイルコンピューティングデバイスに一体化される、請求項1に記載の方法。
  3. 前記共有データ構造の共通の仮想アドレス空間は、
    前記第1のプロセッサ上で実行するようにコンパイルされた機能の第1のバージョンに対応する第1の機能テーブルであって、前記機能の前記第1のバージョンは前記第1のコードを用いて表される、第1の機能テーブルと、
    前記第2のプロセッサ上で実行するようにコンパイルされた前記機能の第2のバージョンに対応する第2の機能テーブルであって、前記機能の前記第2のバージョンは前記第2のコードを用いて表される、第2の機能テーブルと
    を備える、請求項1または2に記載の方法。
  4. 前記第1のプロセッサおよび前記第2のプロセッサは、プロセッサ間メッセージ伝達、共有メモリ、アプリケーションプログラミングインターフェース(API)、またはこれらの任意の組合せを介して互いに通信するように構成される、請求項1〜3のいずれか一項に記載の方法。
  5. 前記第1のプロセッサは複数のハードウェアスレッドを有するデジタル信号プロセッサ(DSP)を備え、前記第2のプロセッサはマルチコア中央処理ユニット(CPU)を備える、請求項1〜4のいずれか一項に記載の方法。
  6. 前記オペレーティングシステムイベントは、ページフォールト、トラップ、システムフォールト、システムリクエスト、ハードウェアエラー、アドレスエラー、許可違反、またはこれらの任意の組合せを備える、請求項1〜5のいずれか一項に記載の方法。
  7. 前記オペレーティングシステムイベントは、実行の流れをオペレーティングシステムのユーザモードから前記オペレーティングシステムのカーネルモードに遷移させる、請求項1〜6のいずれか一項に記載の方法。
  8. 複数のプロセッサを備えるシステムにおいて、複数のプロセッサ上でオペレーティングシステムの単一のインスタンスを実行する方法であって、各プロセッサは関連付けられた異なる命令セットアーキテクチャを有し、前記方法は、
    第1の命令セットアーキテクチャを有する第1のプロセッサおよび第2の異なる命令セットアーキテクチャを有する第2のプロセッサ上で同時に実行可能なオペレーティングシステムのスケジューラによって前記第1のプロセッサまたは前記第2のプロセッサ上での実行のためにタスクをスケジュール設定させる要求を受け取るステップであって、前記第1のプロセッサは仮想アドレスに基づいて共有データ構造内の第1のテーブルエントリにアクセスするように構成され、前記第1のテーブルエントリは前記仮想アドレスにマッピングされ、前記第2のプロセッサは前記仮想アドレスに基づいて前記共有データ構造内の第2のテーブルエントリにアクセスするように構成され、前記第2のテーブルエントリは前記仮想アドレスにマッピングされる、受け取るステップと、
    前記要求および、前記タスクが前記第1のプロセッサ上の前記第1の命令セットアーキテクチャを用いた実行のために利用可能でありかつ前記第2のプロセッサ上の前記第2の命令セットアーキテクチャを用いた実行のために利用可能であると前記スケジューラが判定したことに応答して、前記スケジューラによって、少なくとも1つの選択基準に基づいて前記第1のプロセッサを選択して前記第1のプロセッサ上で前記タスクをスケジュール設定するステップと、
    前記スケジューラによって、前記タスクの実行の間に、前記第1のプロセッサを使用する他のタスクのために、前記タスクの実行を前記第1のプロセッサから前記第2のプロセッサに切り替えるステップと
    を含む、方法。
  9. 前記少なくとも1つの選択基準は、前記タスクと関連付けられた最低パワー使用を備える、請求項8に記載の方法。
  10. 前記少なくとも1つの選択基準は、最小負荷のプロセッサ、前記タスクのタイプ、前記タスクと関連付けられた最低パワー使用、またはこれらの任意の組合せを備え、前記タスクの実行を切り替えるステップは、
    前記第1のプロセッサからのシステムコールを始動するステップと、
    前記タスクを前記第1のプロセッサのスケジュールから除去するステップと、
    前記タスクを前記第2のプロセッサのスケジュールに追加するステップと、
    前記第2のプロセッサ上の前記システムコールから復帰するステップと
    を含む、請求項8または9に記載の方法。
  11. 複数のプロセッサを備えるシステムにおいて、複数のプロセッサ上でオペレーティングシステムの単一のインスタンスを実行するための装置であって、各プロセッサは関連付けられた異なる命令セットアーキテクチャを有し、前記装置は、
    第1の命令セットアーキテクチャと関連付けられ、かつ仮想アドレスに基づいて共有データ構造内の第1のテーブルエントリにアクセスするように構成される第1のプロセッサと、
    第2の異なる命令セットアーキテクチャと関連付けられ、かつ前記仮想アドレスに基づいて前記共有データ構造内の第2のテーブルエントリにアクセスするように構成される第2のプロセッサと、
    前記第1のプロセッサおよび前記第2のプロセッサの上で同時に実行可能な前記オペレーティングシステムの少なくとも一部分を記憶するメモリであって、前記オペレーティングシステムは、
    前記第1のプロセッサ上で第1のコードを実行することであって、前記第1のテーブルエントリは前記仮想アドレスにマッピングされる、実行することと、
    記第1のコードを実行する間に、オペレーティングシステムイベントを実行することと、
    記オペレーティングシステムイベントを実行するときに、前記第1のコードの実行を停止するとともに、前記第2のプロセッサ上で前記オペレーティングシステムイベントを取り扱うための第2のコードの実行を始動することであって、前記第2のテーブルエントリは前記仮想アドレスにマッピングされる、始動することと、
    記オペレーティングシステムイベントを取り扱う前記第2のコードの実行が完了するときに、前記第2のコードを停止するとともに前記第1のプロセッサ上で前記第1のコードの実行を再開することであって、前記第1のテーブルエントリと前記第2のテーブルエントリは前記共有データ構造内の第1の位置特定識別子と第2の位置特定識別子のそれぞれに対応する、停止かつ再開すること
    を行う、メモリと
    を備え、
    前記第1の位置特定識別子と前記第2の位置特定識別子とは異なる、装置。
  12. 前記第1のテーブルエントリと前記第2のテーブルエントリは異なり、
    前記第1のプロセッサおよび前記第2のプロセッサはモバイルコンピューティングデバイスに一体化される、請求項11に記載の装置。
  13. 複数のプロセッサを備えるシステムにおいて、複数のプロセッサ上でオペレーティングシステムの単一のインスタンスを実行するための装置であって、各プロセッサは関連付けられた異なる命令セットアーキテクチャを有し、前記装置は、
    第1の命令セットアーキテクチャと関連付けられ、かつ仮想アドレスに基づいて共有データ構造内の第1のテーブルエントリにアクセスするように構成される第1のプロセッサと、
    第2の異なる命令セットアーキテクチャと関連付けられ、かつ前記仮想アドレスに基づいて前記共有データ構造内の第2のテーブルエントリにアクセスするように構成される第2のプロセッサと、
    前記第1のプロセッサおよび前記第2のプロセッサの上で同時に実行可能なオペレーティングシステムの少なくとも一部分を記憶するメモリであって、前記オペレーティングシステムは、
    前記オペレーティングシステムのスケジューラにおいて、前記第1のプロセッサまたは前記第2のプロセッサ上での実行のためにタスクをスケジュール設定させる要求を受け取ることであって、前記第1のテーブルエントリは前記仮想アドレスにマッピングされ、前記第2のテーブルエントリは前記仮想アドレスにマッピングされる、受け取ることと、
    前記要求および、前記タスクが前記第1のプロセッサ上の前記第1の命令セットアーキテクチャを用いた実行のために利用可能でありかつ前記第2のプロセッサ上の前記第2の命令セットアーキテクチャを用いた実行のために利用可能であると前記スケジューラが判定したことに応答して、少なくとも1つの選択基準に基づいて前記第1のプロセッサを選択して前記第1のプロセッサ上で前記タスクをスケジュール設定することと、
    前記タスクの実行の間に、前記第1のプロセッサを使用する他のタスクのために、前記タスクの実行を前記第1のプロセッサから前記第2のプロセッサに切り替えること
    を備える、メモリと
    を備える、装置。
  14. オペレーティングシステムの単一のインスタンスを備える非一時的コンピュータ可読記録媒体であって、
    前記オペレーティングシステムの前記単一のインスタンスは、第1のプロセッサおよび第2のプロセッサを備える電子デバイスで実行されるときに、前記プロセッサに請求項1〜10のいずれか一項に記載の方法を実施させる、非一時的コンピュータ可読記録媒体。
JP2015558884A 2013-02-26 2014-02-14 異なる命令セットアーキテクチャを有するプロセッサ上におけるオペレーティングシステムの実行 Active JP6430970B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/777,314 2013-02-26
US13/777,314 US10437591B2 (en) 2013-02-26 2013-02-26 Executing an operating system on processors having different instruction set architectures
PCT/US2014/016391 WO2014133784A2 (en) 2013-02-26 2014-02-14 Executing an operating system on processors having different instruction set architectures

Publications (3)

Publication Number Publication Date
JP2016507849A JP2016507849A (ja) 2016-03-10
JP2016507849A5 JP2016507849A5 (ja) 2017-03-02
JP6430970B2 true JP6430970B2 (ja) 2018-11-28

Family

ID=50272697

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015558884A Active JP6430970B2 (ja) 2013-02-26 2014-02-14 異なる命令セットアーキテクチャを有するプロセッサ上におけるオペレーティングシステムの実行

Country Status (6)

Country Link
US (1) US10437591B2 (ja)
EP (2) EP2962198B1 (ja)
JP (1) JP6430970B2 (ja)
KR (1) KR102140061B1 (ja)
CN (1) CN105074666B (ja)
WO (1) WO2014133784A2 (ja)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9606818B2 (en) 2013-03-14 2017-03-28 Qualcomm Incorporated Systems and methods of executing multiple hypervisors using multiple sets of processors
US9396012B2 (en) 2013-03-14 2016-07-19 Qualcomm Incorporated Systems and methods of using a hypervisor with guest operating systems and virtual processors
US10114756B2 (en) * 2013-03-14 2018-10-30 Qualcomm Incorporated Externally programmable memory management unit
WO2016003646A1 (en) * 2014-06-30 2016-01-07 Unisys Corporation Enterprise management for secure network communications over ipsec
US9910721B2 (en) * 2014-12-09 2018-03-06 Intel Corporation System and method for execution of application code compiled according to two instruction set architectures
CN107273101A (zh) * 2016-04-06 2017-10-20 晨星半导体股份有限公司 嵌入式系统的操作方法与控制芯片
US10216599B2 (en) 2016-05-26 2019-02-26 International Business Machines Corporation Comprehensive testing of computer hardware configurations
US10223235B2 (en) 2016-05-26 2019-03-05 International Business Machines Corporation Comprehensive testing of computer hardware configurations
US10157164B2 (en) * 2016-09-20 2018-12-18 Qualcomm Incorporated Hierarchical synthesis of computer machine instructions
JP6859642B2 (ja) * 2016-09-23 2021-04-14 カシオ計算機株式会社 制御装置、電子時計、処理制御方法、及びプログラム
US10684984B2 (en) * 2016-12-21 2020-06-16 Intel Corporation Computing devices and server systems with processing cores having different instruction set architectures
US10552207B2 (en) 2016-12-21 2020-02-04 Intel Corporation Systems and methods for multi-architecture computing including program stack translation
US10713213B2 (en) 2016-12-21 2020-07-14 Intel Corporation Systems and methods for multi-architecture computing
EP3343267B1 (en) 2016-12-30 2024-01-24 Magic Leap, Inc. Polychromatic light out-coupling apparatus, near-eye displays comprising the same, and method of out-coupling polychromatic light
CN106791152B (zh) * 2016-12-30 2019-08-27 Oppo广东移动通信有限公司 一种通信方法及移动终端
US11275709B2 (en) 2017-05-02 2022-03-15 Intel Corporation Systems and methods for multi-architecture computing
US10578870B2 (en) 2017-07-26 2020-03-03 Magic Leap, Inc. Exit pupil expander
CN111448497B (zh) 2017-12-10 2023-08-04 奇跃公司 光波导上的抗反射涂层
KR102491606B1 (ko) * 2018-01-09 2023-01-26 삼성전자주식회사 커맨드 세트 기반 리플레이를 통해 수행 정보를 수집하는 프로세서 장치
CN112136152A (zh) 2018-03-15 2020-12-25 奇跃公司 由观看设备的部件变形导致的图像校正
US11579441B2 (en) 2018-07-02 2023-02-14 Magic Leap, Inc. Pixel intensity modulation using modifying gain values
WO2020014324A1 (en) * 2018-07-10 2020-01-16 Magic Leap, Inc. Thread weave for cross-instruction set architecture procedure calls
US10795458B2 (en) 2018-08-03 2020-10-06 Magic Leap, Inc. Unfused pose-based drift correction of a fused pose of a totem in a user interaction system
US12016719B2 (en) 2018-08-22 2024-06-25 Magic Leap, Inc. Patient viewing system
US10831698B2 (en) 2018-09-25 2020-11-10 International Business Machines Corporation Maximizing high link bandwidth utilization through efficient component communication in disaggregated datacenters
US11650849B2 (en) 2018-09-25 2023-05-16 International Business Machines Corporation Efficient component communication through accelerator switching in disaggregated datacenters
US11163713B2 (en) 2018-09-25 2021-11-02 International Business Machines Corporation Efficient component communication through protocol switching in disaggregated datacenters
US11182322B2 (en) * 2018-09-25 2021-11-23 International Business Machines Corporation Efficient component communication through resource rewiring in disaggregated datacenters
US11012423B2 (en) 2018-09-25 2021-05-18 International Business Machines Corporation Maximizing resource utilization through efficient component communication in disaggregated datacenters
US10802988B2 (en) 2018-09-25 2020-10-13 International Business Machines Corporation Dynamic memory-based communication in disaggregated datacenters
US10915493B2 (en) 2018-09-25 2021-02-09 International Business Machines Corporation Component building blocks and optimized compositions thereof in disaggregated datacenters
WO2020132484A1 (en) 2018-12-21 2020-06-25 Magic Leap, Inc. Air pocket structures for promoting total internal reflection in a waveguide
WO2021025284A1 (en) * 2019-08-07 2021-02-11 Samsung Electronics Co., Ltd. Electronic device for executing instructions using processor cores and various versions of instruction set architectures
US11080400B2 (en) * 2019-08-28 2021-08-03 Palo Alto Networks, Inc. Analyzing multiple CPU architecture malware samples
US10840961B1 (en) * 2019-10-23 2020-11-17 Motorola Solutions, Inc. Method and apparatus for managing feature based user input routing in a multi-processor architecture using single user interface control
US11334324B2 (en) * 2019-11-08 2022-05-17 Software Ag Systems and/or methods for error-free implementation of non-java program code on special purpose processors
EP4058936A4 (en) 2019-11-14 2023-05-03 Magic Leap, Inc. SYSTEMS AND METHODS FOR VIRTUAL AND AUGMENTED REALITY
US11256522B2 (en) * 2019-11-22 2022-02-22 Advanced Micro Devices, Inc. Loader and runtime operations for heterogeneous code objects
CN115004158A (zh) * 2020-01-30 2022-09-02 华为技术有限公司 在多核处理器上执行扩展集中的处理器指令的设备、方法和计算机程序
US11962518B2 (en) 2020-06-02 2024-04-16 VMware LLC Hardware acceleration techniques using flow selection
US11824931B2 (en) 2020-09-28 2023-11-21 Vmware, Inc. Using physical and virtual functions associated with a NIC to access an external storage through network fabric driver
US11606310B2 (en) 2020-09-28 2023-03-14 Vmware, Inc. Flow processing offload using virtual port identifiers
US11636053B2 (en) 2020-09-28 2023-04-25 Vmware, Inc. Emulating a local storage by accessing an external storage through a shared port of a NIC
US12021759B2 (en) * 2020-09-28 2024-06-25 VMware LLC Packet processing with hardware offload units
US11829793B2 (en) 2020-09-28 2023-11-28 Vmware, Inc. Unified management of virtual machines and bare metal computers
CN113176928B (zh) * 2021-04-27 2022-08-30 深圳市研唐科技有限公司 一种异构虚拟机的运行方法和装置
US11748074B2 (en) 2021-05-28 2023-09-05 Software Ag User exit daemon for use with special-purpose processor, mainframe including user exit daemon, and associated methods
US11995024B2 (en) 2021-12-22 2024-05-28 VMware LLC State sharing between smart NICs
US11863376B2 (en) 2021-12-22 2024-01-02 Vmware, Inc. Smart NIC leader election
US11928062B2 (en) 2022-06-21 2024-03-12 VMware LLC Accelerating data message classification with smart NICs
US11899594B2 (en) 2022-06-21 2024-02-13 VMware LLC Maintenance of data message classification cache on smart NIC
US11928367B2 (en) 2022-06-21 2024-03-12 VMware LLC Logical memory addressing for network devices

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62286155A (ja) 1986-06-05 1987-12-12 Sharp Corp マルチcpu制御方式
US5369767A (en) * 1989-05-17 1994-11-29 International Business Machines Corp. Servicing interrupt requests in a data processing system without using the services of an operating system
US6286092B1 (en) 1999-05-12 2001-09-04 Ati International Srl Paged based memory address translation table update method and apparatus
US6526462B1 (en) 1999-11-19 2003-02-25 Hammam Elabd Programmable multi-tasking memory management system
US6904483B2 (en) 2001-03-20 2005-06-07 Wind River Systems, Inc. System and method for priority inheritance
GB2378277B (en) 2001-07-31 2003-06-25 Sun Microsystems Inc Multiple address translations
JP2003099272A (ja) 2001-09-20 2003-04-04 Ricoh Co Ltd タスク切替システムと方法およびdspとモデム
US6981072B2 (en) 2003-06-05 2005-12-27 International Business Machines Corporation Memory management in multiprocessor system
US7424709B2 (en) 2003-09-15 2008-09-09 Intel Corporation Use of multiple virtual machine monitors to handle privileged events
US20050251806A1 (en) 2004-05-10 2005-11-10 Auslander Marc A Enhancement of real-time operating system functionality using a hypervisor
US7707341B1 (en) 2004-05-11 2010-04-27 Advanced Micro Devices, Inc. Virtualizing an interrupt controller
US8271976B2 (en) 2004-06-30 2012-09-18 Microsoft Corporation Systems and methods for initializing multiple virtual processors within a single virtual machine
US7299337B2 (en) 2005-05-12 2007-11-20 Traut Eric P Enhanced shadow page table algorithms
US20070006178A1 (en) 2005-05-12 2007-01-04 Microsoft Corporation Function-level just-in-time translation engine with multiple pass optimization
JP4457047B2 (ja) * 2005-06-22 2010-04-28 株式会社ルネサステクノロジ マルチプロセッサシステム
US7739476B2 (en) 2005-11-04 2010-06-15 Apple Inc. R and C bit update handling
US7945913B2 (en) 2006-01-19 2011-05-17 International Business Machines Corporation Method, system and computer program product for optimizing allocation of resources on partitions of a data processing system
JP4936517B2 (ja) 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
US8468532B2 (en) * 2006-06-21 2013-06-18 International Business Machines Corporation Adjusting CPU time allocated to next thread based on gathered data in heterogeneous processor system having plurality of different instruction set architectures
US8082551B2 (en) 2006-10-30 2011-12-20 Hewlett-Packard Development Company, L.P. System and method for sharing a trusted platform module
US7685409B2 (en) 2007-02-21 2010-03-23 Qualcomm Incorporated On-demand multi-thread multimedia processor
US8789063B2 (en) 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems
US8250254B2 (en) 2007-07-31 2012-08-21 Intel Corporation Offloading input/output (I/O) virtualization operations to a processor
US8284205B2 (en) 2007-10-24 2012-10-09 Apple Inc. Methods and apparatuses for load balancing between multiple processing units
US8296743B2 (en) 2007-12-17 2012-10-23 Intel Corporation Compiler and runtime for heterogeneous multiprocessor systems
US8245236B2 (en) 2008-02-27 2012-08-14 International Business Machines Corporation Lock based moving of threads in a shared processor partitioning environment
US20090282198A1 (en) 2008-05-08 2009-11-12 Texas Instruments Incorporated Systems and methods for optimizing buffer sharing between cache-incoherent cores
US8166254B2 (en) 2008-06-06 2012-04-24 International Business Machines Corporation Hypervisor page fault processing in a shared memory partition data processing system
US8464011B2 (en) 2008-10-27 2013-06-11 Advanced Micro Devices, Inc. Method and apparatus for providing secure register access
US8301863B2 (en) 2008-11-17 2012-10-30 International Business Machines Corporation Recursive logical partition real memory map
CN101739235A (zh) 2008-11-26 2010-06-16 中国科学院微电子研究所 将32位dsp与通用risc cpu无缝混链的处理器装置
US8291414B2 (en) 2008-12-11 2012-10-16 International Business Machines Corporation Shared resource service provisioning using a virtual machine manager
US20100242014A1 (en) 2009-03-17 2010-09-23 Xiaohan Zhu Symmetric multi-processor operating system for asymmetric multi-processor architecture
US20110010716A1 (en) * 2009-06-12 2011-01-13 Arvind Raghuraman Domain Bounding for Symmetric Multiprocessing Systems
US9152200B2 (en) 2009-06-23 2015-10-06 Hewlett-Packard Development Company, L.P. Resource and power management using nested heterogeneous hypervisors
US8479196B2 (en) 2009-09-22 2013-07-02 International Business Machines Corporation Nested virtualization performance in a computer system
US8719839B2 (en) 2009-10-30 2014-05-06 Intel Corporation Two way communication support for heterogenous processors of a computer platform
US8868848B2 (en) 2009-12-21 2014-10-21 Intel Corporation Sharing virtual memory-based multi-version data between the heterogenous processors of a computer platform
US8443376B2 (en) 2010-06-01 2013-05-14 Microsoft Corporation Hypervisor scheduler
US20110320766A1 (en) 2010-06-29 2011-12-29 Youfeng Wu Apparatus, method, and system for improving power, performance efficiency by coupling a first core type with a second core type
WO2012023150A2 (en) 2010-08-19 2012-02-23 Ineda Systems Pvt. Ltd Handheld electronic devices
US8739171B2 (en) 2010-08-31 2014-05-27 International Business Machines Corporation High-throughput-computing in a hybrid computing environment
US20120072638A1 (en) 2010-09-16 2012-03-22 Unisys Corp. Single step processing of memory mapped accesses in a hypervisor
CN103339604B (zh) 2011-01-31 2016-10-26 株式会社索思未来 程序生成装置、程序生成方法、处理器装置以及多处理器系统
US8307169B2 (en) 2011-03-10 2012-11-06 Safenet, Inc. Protecting guest virtual machine memory
JP5648544B2 (ja) 2011-03-15 2015-01-07 富士通株式会社 スケジューリングプログラム、および情報処理装置
US8984330B2 (en) 2011-03-28 2015-03-17 Siemens Corporation Fault-tolerant replication architecture
WO2012141677A1 (en) 2011-04-11 2012-10-18 Hewlett-Packard Development Company, L.P. Performing a task in a system having different types of hardware resources
US9043562B2 (en) 2011-04-20 2015-05-26 Microsoft Technology Licensing, Llc Virtual machine trigger
US8677360B2 (en) 2011-05-12 2014-03-18 Microsoft Corporation Thread-related actions based on historical thread behaviors
US20130013889A1 (en) 2011-07-06 2013-01-10 Jaikumar Devaraj Memory management unit using stream identifiers
US9250969B2 (en) 2011-08-30 2016-02-02 At&T Intellectual Property I, L.P. Tagging a copy of memory of a virtual machine with information for fetching of relevant portions of the memory
US20140053272A1 (en) 2012-08-20 2014-02-20 Sandor Lukacs Multilevel Introspection of Nested Virtual Machines
US20140101405A1 (en) * 2012-10-05 2014-04-10 Advanced Micro Devices, Inc. Reducing cold tlb misses in a heterogeneous computing system
US10114756B2 (en) 2013-03-14 2018-10-30 Qualcomm Incorporated Externally programmable memory management unit
US9606818B2 (en) 2013-03-14 2017-03-28 Qualcomm Incorporated Systems and methods of executing multiple hypervisors using multiple sets of processors
US9396012B2 (en) 2013-03-14 2016-07-19 Qualcomm Incorporated Systems and methods of using a hypervisor with guest operating systems and virtual processors

Also Published As

Publication number Publication date
KR102140061B1 (ko) 2020-07-31
WO2014133784A2 (en) 2014-09-04
JP2016507849A (ja) 2016-03-10
CN105074666A (zh) 2015-11-18
KR20150122178A (ko) 2015-10-30
CN105074666B (zh) 2020-04-21
US20140244983A1 (en) 2014-08-28
EP2962198B1 (en) 2019-04-24
WO2014133784A3 (en) 2014-10-23
EP2962198A2 (en) 2016-01-06
US10437591B2 (en) 2019-10-08
EP3525099A1 (en) 2019-08-14

Similar Documents

Publication Publication Date Title
JP6430970B2 (ja) 異なる命令セットアーキテクチャを有するプロセッサ上におけるオペレーティングシステムの実行
JP7087029B2 (ja) 中央処理装置(cpu)と補助プロセッサとの間の改善した関数コールバック機構
US9529643B2 (en) Method and system for accelerating task control flow
JP4690988B2 (ja) 持続的なユーザレベルスレッド用の装置、システムおよび方法
US10114756B2 (en) Externally programmable memory management unit
US9606818B2 (en) Systems and methods of executing multiple hypervisors using multiple sets of processors
US9619298B2 (en) Scheduling computing tasks for multi-processor systems based on resource requirements
US20140282507A1 (en) Systems and methods of using a hypervisor with guest operating systems and virtual processors
JP5710434B2 (ja) アシスト・ハードウエア・スレッドの拡張可能な状態追跡のための方法、情報処理システム、およびプロセッサ
JP2016149164A (ja) トランザクションメモリ動作を実行するように構成されたプロセッサ
WO2016193774A1 (en) Multi-core processor for execution of strands of instructions grouped according to criticality
US11526358B2 (en) Deterministic execution replay for multicore systems
TWI760756B (zh) 共用代碼之系統與代碼共用方法
US20150363227A1 (en) Data processing unit and method for operating a data processing unit
US20160078246A1 (en) Notification of Blocking Tasks
US20140019990A1 (en) Integrated circuit device and method for enabling cross-context access

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20150820

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170125

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170125

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180406

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: 20181005

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181101

R150 Certificate of patent or registration of utility model

Ref document number: 6430970

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250