(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-21
(45)【発行日】2024-11-29
(54)【発明の名称】クロス命令セットアーキテクチャプロシージャ呼出のためのスレッドウィービング
(51)【国際特許分類】
G06F 8/41 20180101AFI20241122BHJP
G06F 9/54 20060101ALI20241122BHJP
【FI】
G06F8/41
G06F9/54 D
(21)【出願番号】P 2023183216
(22)【出願日】2023-10-25
(62)【分割の表示】P 2021500607の分割
【原出願日】2019-07-10
【審査請求日】2023-10-25
(32)【優先日】2018-07-10
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】514108838
【氏名又は名称】マジック リープ, インコーポレイテッド
【氏名又は名称原語表記】Magic Leap,Inc.
【住所又は居所原語表記】7500 W SUNRISE BLVD,PLANTATION,FL 33322 USA
(74)【代理人】
【識別番号】100078282
【氏名又は名称】山本 秀策
(74)【代理人】
【識別番号】100113413
【氏名又は名称】森下 夏樹
(74)【代理人】
【識別番号】100181674
【氏名又は名称】飯田 貴敏
(74)【代理人】
【識別番号】100181641
【氏名又は名称】石川 大輔
(74)【代理人】
【識別番号】230113332
【氏名又は名称】山本 健策
(72)【発明者】
【氏名】ジョナサン リンジー テイト
(72)【発明者】
【氏名】グレゴリー マイケル リンク
【審査官】児玉 崇晶
(56)【参考文献】
【文献】国際公開第2015/143641(WO,A1)
【文献】米国特許出願公開第2013/0061240(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/44
G06F 8/76
G06F 8/41
G06F 9/448
G06F 9/54
(57)【特許請求の範囲】
【請求項1】
アプリケーションを実行する方法であって、
(1)第1の機能、第2の機能、および第3の機能を有するアプリケーションの第1の機能を実行することであって、前記第1の機能は、主要機能であり、第1のプロセッサにコンパイルされる第1の中央処理ユニット(CPU)命令セットアーキテクチャ(ISA)オブジェクトのうちの少なくとも1つを伴う前記第1のプロセッサ上で、前記主要機能は、
(2)前記第1のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第1のプロセッサ上の第1のリモートプロキシ呼出(RPC)、
(3)第2のプロセッサにコンパイルされる第2のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第2のプロセッサ上の前記第3の機能、
(4)前記第2のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第2のプロセッサ上の前記第2のRPC、および、
(5)前記第1のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第1のプロセッサ上の前記第2の機能
の連続的実行を引き起こす、こと
を含み、
前記アプリケーションは、前記第1のCPU ISAオブジェクトおよび前記第2のCPU ISAオブジェクトの機能によって使用されるデータセクションを有する、方法。
【請求項2】
前記第1の機能は、前記第2の機能をポイントする、請求項1に記載の方法。
【請求項3】
前記第1の機能は、前記第1のRPCをポイントする、請求項1に記載の方法。
【請求項4】
前記第1の機能は、前記データセクションを使用する、請求項1に記載の方法。
【請求項5】
前記第3の機能は、前記データセクションを使用する、請求項1に記載の方法。
【請求項6】
方法を実行するためにプロセッサによって実行可能である命令のセットを記憶したコンピュータ可読媒体であって、前記方法は、
(1)第1の機能、第2の機能、および第3の機能を有するアプリケーションの第1の機能を実行することであって、前記第1の機能は、主要機能であり、第1のプロセッサにコンパイルされる第1の中央処理ユニット(CPU)命令セットアーキテクチャ(ISA)オブジェクトのうちの少なくとも1つを伴う前記第1のプロセッサ上で、前記主要機能は、
(2)前記第1のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第1のプロセッサ上の第1のリモートプロキシ呼出(RPC)、
(3)第2のプロセッサにコンパイルされる第2のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第2のプロセッサ上の前記第3の機能、
(4)前記第2のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第2のプロセッサ上の前記第2のRPC、および、
(5)前記第1のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第1のプロセッサ上の前記第2の機能
の連続的実行を引き起こす、こと
を含み、
前記アプリケーションは、前記第1のCPU ISAオブジェクトおよび前記第2のCPU ISAオブジェクトの機能によって使用されるデータセクションを有する、コンピュータ可読媒体。
【請求項7】
前記第1の機能は、前記第2の機能をポイントする、請求項6に記載のコンピュータ可読媒体。
【請求項8】
前記第1の機能は、前記第1のRPCをポイントする、請求項6に記載のコンピュータ可読媒体。
【請求項9】
前記第1の機能は、前記データセクションを使用する、請求項6に記載のコンピュータ可読媒体。
【請求項10】
前記第3の機能は、前記データセクションを使用する、請求項6に記載のコンピュータ可読媒体。
【請求項11】
異種マルチプロセッサであって、
第1および第2の異種プロセッサと、
メモリと、
前記メモリ上のアプリケーションと
を備え、
前記アプリケーションは、
第1の機能、第2の機能、および第3の機能、ならびに第1のリモートプロキシ呼出(RPC)および第2のRPCを含み、
(1)前記第1の機能は、前記第1のプロセッサにコンパイルされる第1の中央処理ユニット(CPU)命令セットアーキテクチャ(ISA)オブジェクトのうちの少なくとも1つを伴う前記第1のプロセッサ上で実行される主要機能であり、前記主要機能は、
(2)前記第1のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第1のプロセッサ上の前記第1のRPC、
(3)第2のプロセッサにコンパイルされる第2のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第2のプロセッサ上の前記第3の機能、
(4)前記第2のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第2のプロセッサ上の前記第2のRPC、および、
(5)前記第1のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第1のプロセッサ上の前記第2の機能
の連続的実行を引き起こし、
前記アプリケーションは、前記第1のCPU ISAオブジェクトおよび前記第2のCPU ISAオブジェクトの機能によって使用されるデータセクションを有する、異種マルチプロセッサ。
【請求項12】
前記第1の機能は、前記第2の機能をポイントする、請求項11に記載の異種マルチプロセッサ。
【請求項13】
前記第1の機能は、前記第1のRPCをポイントする、請求項11に記載の異種マルチプロセッサ。
【請求項14】
前記第1の機能は、前記データセクションを使用する、請求項11に記載の異種マルチプロセッサ。
【請求項15】
前記第3の機能は、前記データセクションを使用する、請求項11に記載の異種マルチプロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2018年7月10日に出願された米国仮特許出願第62/696,132号からの優先権を主張し、その全てが、参照によりその全体として本明細書に援用される。
【0002】
1.発明の背景
本発明は、コードを開始する方法、アプリケーションを実行する方法、および異種マルチプロセッサに関する。
【背景技術】
【0003】
2.関連技術の説明
複雑なコンピュータシステムは、それぞれ、一意の命令セットアーキテクチャを伴う異なるベンダからの複数のプロセッサコアを伴う異種アプローチを頻繁に利用する。異種マルチプロセッサのためのコードを発生させることは、プログラマにとって困難なタスクであり得る。プログラマは、本質的に、2つの別個のバイナリ非互換のコアと別個に互換性のあるプロシージャ呼出に対処し、他のプロセッサがより効率的であり得る境界線において1つのスレッドから別のものに遷移し得るプロシージャ呼出に対処しなければならない。この種類の複雑性は、ソフトウェア作者が、高レベルのC++スレッドプリミティブおよびライブラリ等の従来の高レベルのコンピュータ言語を使用して、機能的な正しさに焦点を当てることを困難にする。
【発明の概要】
【課題を解決するための手段】
【0004】
本発明は、コードを開始する方法を提供し、方法は、(i)メモリ内にアプリケーションを記憶することであって、アプリケーションは、第1の機能、第2の機能、および第3の機能を有し、第1の機能は、アプリケーションを起動するために第2の機能および第3の機能を呼び出す主要機能である、ことと、(ii)アプリケーションを第1の異種プロセッサおよび第2の異種プロセッサにコンパイルし、それぞれ、第1中央処理ユニット(CPU)命令セットアーキテクチャ(ISA)オブジェクトおよび第2のCPU ISAオブジェクトを作成することと、(iii)第1のCPU ISAオブジェクトから第3の機能を除去し、第2のCPU ISAオブジェクトから第1の機能および第2の機能を除去することによって、第1のCPU ISAオブジェクトおよび第2のCPU ISAオブジェクトをプルーニングすることと、(iv)それぞれ、第1のCPU ISAオブジェクトおよび第2のCPU ISAオブジェクト内に第1リモートプロシージャ呼出(RPC)および第2のRPCをプロキシ挿入し、それぞれ、第2のCPU ISAオブジェクト内の第3の機能および第1のCPU ISAオブジェクト内の第2の機能をポイントすることと、(v)第2のCPU ISAオブジェクトをセクションリネーミングし、第1のCPU ISAオブジェクトおよび第2のCPU ISAオブジェクトの共通アプリケーションライブラリを作成することとを含む。
【0005】
本発明はまた、方法を実行するためにプロセッサによって実行可能である命令のセットをその上に記憶しているコンピュータ可読媒体を提供する。本方法は、(i)メモリ内にアプリケーションを記憶することであって、アプリケーションは、第1の機能、第2の機能、および第3の機能を有し、第1の機能は、第1のアプリケーションを起動するために第2の機能および第3の機能を呼び出す主要機能である、ことと、(ii)アプリケーションを第1の異種プロセッサおよび第2の異種プロセッサにコンパイルし、それぞれ、第1中央処理ユニット(CPU)命令セットアーキテクチャ(ISA)オブジェクトおよび第2のCPU ISAオブジェクトを作成することと、(iii)第1のCPU ISAオブジェクトから第3の機能を除去し、第2のCPU ISAオブジェクトから第1の機能および第2の機能を除去することによって、第1のCPU ISAオブジェクトおよび第2のCPU ISAオブジェクトをプルーニングすることと、(iv)それぞれ、第1のCPU ISAオブジェクトおよび第2のCPU ISAオブジェクト内に第1のリモートプロシージャ呼出(RPC)および第2のRPCをプロキシ挿入し、それぞれ、第2のCPU ISAオブジェクト内の第3の機能および第1のCPU ISAオブジェクト内の第2の機能をポイントすることと、(v)第2のCPU ISAオブジェクトをセクションリネーミングし、第1のCPU ISAオブジェクトおよび第2のCPU ISAオブジェクトの共通アプリケーションライブラリを作成することとを含んでもよい。
【0006】
本発明は、アプリケーションを実行する方法をさらに提供し、方法は、(1)第1の機能、第2の機能、および第3の機能を有するアプリケーションの第1の機能を実行することを含み、第1の機能は、主要機能であり、第1のプロセッサにコンパイルされる第1の中央処理ユニット(CPU)命令セットアーキテクチャ(ISA)オブジェクトのうちの少なくとも1つを伴う第1のプロセッサ上で、主要機能は、(2)第1のCPU ISAオブジェクトのうちの少なくとも1つを伴う第1のプロセッサ上の第1のリモートプロシージャ呼出(RPC)、(3)第2のプロセッサにコンパイルされる第2のCPU ISAオブジェクトのうちの少なくとも1つを伴う第2のプロセッサ上の第3の機能、(4)第2のCPU ISAオブジェクトのうちの少なくとも1つを伴う第2のプロセッサ上の第2のRPC、および(5)第1のCPU ISAオブジェクトのうちの少なくとも1つを伴う第1のプロセッサ上の第2の機能の連続的実行を引き起こす。
【0007】
本発明はまた、異種マルチプロセッサを提供し、異種マルチプロセッサは、第1の異種プロセッサおよび第2の異種プロセッサと、メモリと、メモリ上のアプリケーションとを含み、アプリケーションは、第1の機能、第2の機能、および第3の機能、ならびに第1のリモートプロシージャ呼出(RPC)および第2のRPCを含み、(1)第1の機能は、第1のプロセッサにコンパイルされる第1の中央処理ユニット(CPU)命令セットアーキテクチャ(ISA)オブジェクトのうちの少なくとも1つを伴う第1のプロセッサ上で実行される主要機能である。主要機能は、(2)第1のCPU ISAオブジェクトのうちの少なくとも1つを伴う第1のプロセッサ上の第1のRPC、(3)第2のプロセッサにコンパイルされる第2のCPU ISAオブジェクトのうちの少なくとも1つを伴う第2のプロセッサ上の第3の機能、(4)第2のCPU ISAオブジェクトのうちの少なくとも1つを伴う第2のプロセッサ上の第2のRPC、および(5)第1のCPU ISAオブジェクトのうちの少なくとも1つを伴う第1のプロセッサ上の第2の機能の連続的実行を引き起こす。
本明細書は、例えば、以下の項目も提供する。
(項目1)
コードを開始する方法であって、
(i)メモリ内にアプリケーションを記憶することであって、前記アプリケーションは、第1の機能、第2の機能、および第3の機能を有し、前記第1の機能は、前記アプリケーションを起動するために前記第2の機能および前記第3の機能を呼び出す主要機能である、ことと、
(ii)前記アプリケーションを第1の異種プロセッサおよび第2の異種プロセッサにコンパイルし、それぞれ、第1の中央処理ユニット(CPU)命令セットアーキテクチャ(ISA)オブジェクトおよび第2のCPU ISAオブジェクトを作成することと、
(iii)前記第1のCPU ISAオブジェクトから前記第3の機能を除去し、前記第2のCPU ISAオブジェクトから第1の機能および第2の機能を除去することによって、前記第1のCPU ISAオブジェクトおよび前記第2のCPU ISAオブジェクトをプルーニングすることと、
(iv)それぞれ、前記第1のCPU ISAオブジェクトおよび前記第2のCPU ISAオブジェクト内に第1のリモートプロシージャ呼出(RPC)および第2のRPCをプロキシ挿入し、それぞれ、前記第2のCPU ISAオブジェクト内の前記第3の機能および前記第1のCPU ISAオブジェクト内の前記第2の機能をポイントすることと、
(v)前記第2のCPU ISAオブジェクトをセクションリネーミングし、前記第1のCPU ISAオブジェクトおよび前記第2のCPU ISAオブジェクトの共通アプリケーションライブラリを作成することと
を含む、方法。
(項目2)
前記第1の機能は、前記第2の機能をポイントする、項目1に記載の方法。
(項目3)
前記第1の機能は、前記第1のRPCをポイントする、項目1に記載の方法。
(項目4)
それぞれ、前記第1のCPU ISAオブジェクト内の前記第3の機能および前記第2のCPU ISAオブジェクト内の前記第2の機能を前記第1のRPCおよび前記第2のRPCと置換することをさらに含む、項目1に記載の方法。
(項目5)
前記アプリケーションは、前記第1のCPU ISAオブジェクトおよび前記第2のCPU ISAオブジェクトの機能によって使用されるデータ構造を有する、項目1に記載の方法。
(項目6)
前記コンパイルすること(ii)の間、前記データ構造は、前記第2のプロセッサにコンパイルされる、項目5に記載の方法。
(項目7)
前記プルーニングすること(iii)の間、前記データ構造は、前記第2のCPU ISAオブジェクトから除去される、項目6に記載の方法。
(項目8)
前記第1の機能は、前記データ構造を使用する、項目5に記載の方法。
(項目9)
前記第3の機能は、前記データ構造を使用する、項目5に記載の方法。
(項目10)
前記第2のCPU ISAオブジェクト内の前記第3の機能は、前記第1のCPU ISAオブジェクト内の前記データ構造をポイントする、項目9に記載の方法。
(項目11)
(1)前記第1のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第1のプロセッサ上で前記主要機能を実行することであって、前記主要機能は、
(2)前記第1のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第1のプロセッサ上の前記第1のRPC、
(3)前記第2のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第2のプロセッサ上の前記第3の機能、
(4)前記第2のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第2のプロセッサ上の前記第2のRPC、および、
(5)前記第1のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第1のプロセッサ上の前記第2の機能
の連続的実行を引き起こす、こと
をさらに含む、項目4に記載の方法。
(項目12)
コンピュータ可読媒体であって、前記コンピュータ可読媒体は、方法を実行するためにプロセッサによって実行可能である命令のセットをその上に記憶しており、前記方法は、
(i)メモリ内にアプリケーションを記憶することであって、前記アプリケーションは、第1の機能、第2の機能、および第3の機能を有し、前記第1の機能は、第1のアプリケーションを起動するために前記第2の機能および前記第3の機能を呼び出す主要機能である、ことと、
(ii)前記アプリケーションを第1の異種プロセッサおよび第2の異種プロセッサにコンパイルし、それぞれ、第1の中央処理ユニット(CPU)命令セットアーキテクチャ(ISA)オブジェクトおよび第2のCPU ISAオブジェクトを作成することと、
(iii)前記第1のCPU ISAオブジェクトから前記第3の機能を除去し、前記第2のCPU ISAオブジェクトから第1の機能および第2の機能を除去することによって、前記第1のCPU ISAオブジェクトおよび前記第2のCPU ISAオブジェクトをプルーニングすることと、
(iv)それぞれ、前記第1のCPU ISAオブジェクトおよび前記第2のCPU ISAオブジェクト内に第1のリモートプロシージャ呼出(RPC)および第2のRPCをプロキシ挿入し、それぞれ、前記第2のCPU ISAオブジェクト内の前記第3の機能および前記第1のCPU ISAオブジェクト内の前記第2の機能をポイントすることと、
(v)前記第2のCPU ISAオブジェクトをセクションリネーミングし、前記第1のCPU ISAオブジェクトおよび前記第2のCPU ISAオブジェクトの共通アプリケーションライブラリを作成することと
を含む、コンピュータ可読媒体。
(項目13)
アプリケーションを実行する方法であって、
(1)第1の機能、第2の機能、および第3の機能を有するアプリケーションの第1の機能を実行することであって、前記第1の機能は、主要機能であり、第1のプロセッサにコンパイルされる第1の中央処理ユニット(CPU)命令セットアーキテクチャ(ISA)オブジェクトのうちの少なくとも1つを伴う前記第1のプロセッサ上で、前記主要機能は、
(2)前記第1のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第1のプロセッサ上の第1のリモートプロシージャ呼出(RPC)、
(3)第2のプロセッサにコンパイルされる第2のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第2のプロセッサ上の前記第3の機能、
(4)前記第2のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第2のプロセッサ上の前記第2のRPC、および、
(5)前記第1のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第1のプロセッサ上の前記第2の機能
の連続的実行を引き起こす、こと
を含む、方法。
(項目14)
異種マルチプロセッサであって、
第1の異種プロセッサおよび第2の異種プロセッサと、
メモリと、
前記メモリ上のアプリケーションと
を備え、
前記アプリケーションは、
第1の機能、第2の機能、および第3の機能、ならびに第1のリモートプロシージャ呼出および第2のリモートプロシージャ呼出(RPC)を含み、
(1)前記第1の機能は、前記第1のプロセッサにコンパイルされる第1の中央処理ユニット(CPU)命令セットアーキテクチャ(ISA)オブジェクトのうちの少なくとも1つを伴う前記第1のプロセッサ上で実行される主要機能であり、前記主要機能は、
(2)前記第1のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第1のプロセッサ上の前記第1のRPC、
(3)第2のプロセッサにコンパイルされる第2のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第2のプロセッサ上の前記第3の機能、
(4)前記第2のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第2のプロセッサ上の前記第2のRPC、および、
(5)前記第1のCPU ISAオブジェクトのうちの少なくとも1つを伴う前記第1のプロセッサ上の前記第2の機能
の連続的実行を引き起こす、異種マルチプロセッサ。
【図面の簡単な説明】
【0008】
本発明は、付随の図面を参照して、実施例を用いてさらに説明される。
【0009】
【
図1】
図1は、概念的な異種マルチプロセッサアプリケーションを図示するブロック図である。
【0010】
【
図2】
図2~
図6は、異種マルチプロセッサアプリケーションの開発を図示するブロック図である。
【
図3】
図2~
図6は、異種マルチプロセッサアプリケーションの開発を図示するブロック図である。
【
図4】
図2~
図6は、異種マルチプロセッサアプリケーションの開発を図示するブロック図である。
【
図5】
図2~
図6は、異種マルチプロセッサアプリケーションの開発を図示するブロック図である。
【
図6】
図2~
図6は、異種マルチプロセッサアプリケーションの開発を図示するブロック図である。
【0011】
【
図7】
図7~
図11は、異種マルチプロセッサのランタイム実行を図示する。
【
図8】
図7~
図11は、異種マルチプロセッサのランタイム実行を図示する。
【
図9】
図7~
図11は、異種マルチプロセッサのランタイム実行を図示する。
【0012】
【
図12】
図12は、異種マルチプロセッサアプリケーションを展開するためのビルドシステムをホストすることができるコンピュータの形態における機械のブロック図である。
【発明を実施するための形態】
【0013】
(本発明の詳細な説明)
図1は、一次命令セットアーキテクチャ(ISA)上で起動するためのコード12と、二次ISA上で起動するためのコード14と、共通データ16とを含む概念的な異種マルチプロセッサアプリケーション10を図示する。
【0014】
コード14は、第1の機能18および第2の機能20を含む。第1の機能18は、主要機能であり、これは、異種マルチプロセッサアプリケーション10を起動するために実行される第1の機能である。コード14は、第3の機能22を含む。共通データ16は、データ構造24を含む。第1の機能18は、26において、第2の機能20をポイントし、28において、第3の機能22をポイントする。第3の機能22は、30において、第2の機能20をポイントする。第1の機能18および第3の機能22は、それぞれ、32および34において、データ構造24に依拠する。
【0015】
アプリケーションは、3つを上回る機能を有し得ることを理解されたい。議論の目的のために、異種マルチプロセッサの構造は、3つの機能のみを有するように説明され、これは、本発明を説明するために十分であり、本発明を不明瞭にし得る不必要な乱雑さを含まない。しかしながら、付加的機能が、この説明に使用される3つの機能の前に、その間に、および/またはその後に含まれてもよく、同一の方法を介して、任意のISAに所属する本システムにおける任意の他の機能を呼び出してもよい。
【0016】
図2は、本発明のある実施形態による、異種マルチプロセッサアプリケーション40を作成するための第1の動作を図示する。アプリケーションが、ソースコードにおいて書き込まれ、メモリ内に記憶される。アプリケーションは、次いで、第1の異種マルチプロセッサおよび第2の異種マルチプロセッサにコンパイルされ、それぞれ、第1の中央処理ユニット(CPU)ISAオブジェクト42Aおよび第2のCPU ISAオブジェクト42Bを作成する。プロセッサは、異なるISAを有し、したがって、それらの機能に関して異なるオブジェクトに依拠する。CPU ISAオブジェクト42Aおよび42Bは、したがって、異なるプロセッサのISAの異なる要件に従って、相互に異なる。CPU ISAオブジェクト42Aおよび42Bは、同一のソースコードからコンパイルされ、したがって、同一の機能ブロックを有する。例えば、CPU ISAオブジェクト42Aは、第1の機能18Aを含み、CPU ISAオブジェクト42Bもまた、第1の機能18Bを含む。CPU ISAオブジェクト42Aおよび42Bの機能的コンポーネントは、
図1を参照して説明される概念的な異種マルチプロセッサアプリケーション10の機能的コンポーネントと同一である。第1のCPU ISAオブジェクト42Aのコンポーネントおよびそれらの間のリンクは、第1のCPU ISAオブジェクト42Aおよびそれらのリンクが「A」を添付されている(例えば、「20」から「20A」)ことを除いて、
図1における概念的な異種マルチプロセッサアプリケーション10のコンポーネントと同一の参照番号を有する。同様に、第2のCPU ISAオブジェクト42Bのコンポーネントは、それらが「B」を添付されている(例えば、「20」から「20B」)ことを除いて、
図1における異種マルチプロセッサアプリケーション10のコンポーネントと同一である。
【0017】
図3は、異種マルチプロセッサアプリケーション40を構築するために実行されるプルーニング動作を図示する。第1のCPU ISAオブジェクト42Aでは、コード14Aおよび第3の機能22Aは、除去される。第3の機能22Aの除去はまた、データ構造24Aへのリンク34Aを除去する。第2のCPU ISAオブジェクト42Bでは、二次ISA上で起動するためのコード12Bは、第1の機能18Bおよび第2の機能20Bとともに除去される。共通データ16Bおよびデータ構造24Bもまた、第2のCPU ISAオブジェクト42Bから除去される。第2のCPU ISAオブジェクト42Bからのコンポーネントの除去はまた、26B、28B、および32Bにおけるリンクを切断する。一次ISA上で起動するためのコード12Aは、「リンカ入力セクション」、「.textセクション」、または「オブジェクトファイルセクション」と称される、「.text」ネーミング構造を有する。二次ISA上で起動するためのコード14Bは、「.text.isab」ネーミング構造を有する。
【0018】
図4は、異種マルチプロセッサアプリケーション40の構造において実行されるプロキシ挿入動作を図示する。第1のプロキシセクション46および第2のプロキシセクション48が、それぞれ、第1のCPU ISAオブジェクト42Aおよび第2のCPU ISAオブジェクト42Bの中に挿入される。第1のプロキシセクション46は、第1のリモートプロシージャ呼出(RPC)50を含む。第1の機能18Aは、第1のRPC50をポイントする。第1のRPC50は、52において、第2のCPU ISAオブジェクト42Bの第3の機能22Bをポイントする。実践では、
図2における第3の機能22Aは、
図4における第1のRPC50と置換されることができる。
【0019】
第2のプロキシセクション48は、第2のリモートプロシージャ呼出(RPC)54を含む。第3の機能22Bは、30Bにおいて、第2のRPC54をポイントする。第2のRPC54は、56において、
図4における第2の機能20Aをポイントする。第2のプロキシセクション48は、この時点で、リネーミングされておらず、リンク56は、したがって、アクティブではない。しかしながら、リンク56は、第2のプロキシセクション48がリネーミングされた後の異種マルチプロセッサアプリケーション40の最終的な機能を図示するために、
図4に含まれる。同様に、リンク34Bは、二次ISA上で起動するためのコード14Bがリネーミングされた後の異種マルチプロセッサアプリケーション40の最終的な機能を図示するために、データ構造24Aをポイントするように示される。
【0020】
図5は、異種マルチプロセッサアプリケーション40を構築するために実行されるセクションリネーミング動作を図示する。二次ISA上で起動するためのコード14Bおよび第2のプロキシセクション48は、第1のCPU ISAオブジェクト42Aのネーミングと一致するように、「.text.isab」から「.text」にリネーミングされる。
図6は、
図5におけるセクションリネーミング後のアプリケーションライブラリ内の最終リンクを図示する。セクションリネーミングは、第1の機能18A、第2の機能20A、および第3の機能22Bと、第1のRPC50および第2のRPC54とを含有する包括的な「.text」セクション60を作成する。
【0021】
ソースコードは、例えば、C++コードにおいて記述されてもよく、その後、
図2における第1の機能18A、第2の機能20A、および第3の機能24Aによって表されるような処理スレッドは、「ウィービング」イベントと称されることができるものにおいて、プロシージャが呼び出した境界において1つのバイナリ非互換のコアから別のものに不可視に遷移する。ソフトウェア作者は、最初に、従来の高レベルのC++スレッドプリミティブおよびライブラリを使用して、機能的な正しさに焦点を当ててもよく、次いで、モジュール式の方法で、コードを書き換える必要なくまたは異なるライブラリのセットに依拠する必要なく、コードの個々のブロックをより効率的なプロセッサに移行させてもよい。システムが、例えば、デジタル信号プロセッサ(DSP)と、汎用中央処理ユニット(CPU)とを有し得る。ソフトウェア作者の視点から、DSP上である機能を起動するために、行われる必要があることは、以下の通り、これが具体的な非「.text」プログラムセクション内に設置されることを規定する属性タグをある機能に追加することだけであり得る。
【化1】
【0022】
上記の実施例では、ソースファイルをコンパイルした後、結果として生じるオブジェクトファイルは、「.text_dsp」セクション内に機能「foo」を含有し得る。ビルドシステムは、オブジェクトファイルから「.text_dsp」セクションを認識および削除し、次いで、DSPのISAのためのソースファイルを再コンパイルする。「foo」機能への任意の参照は、DSP上でリモートプロシージャ呼出を開始するためにシム機能と置換されるであろう。類似する様式で、逆のことが、DSPオブジェクトファイルに関して起こり、.text内の任意の機能が、削除され、.text_dspセクション内の機能におけるそれらへの任意の参照が、CPU上に戻るようにリモートプロシージャ呼出を開始するためにシム機能と置換される。2つのプロセッサが、同じコンパイルされた構造レイアウトを有し、同一の仮想メモリに対する同じビューを有し、ウィービングイベントの時点でコヒーレントなキャッシュを有する限り、アプリケーションは、実行のフローの単純かつコヒーレントなプログラマビューを維持しながら、1つのプロセッサアーキテクチャから他のものにシームレスに遷移することが可能であるはずである。
【0023】
図7は、ランタイム実行の間に実行される第1の動作を図示する。異種マルチプロセッサ70が、
図6の異種マルチプロセッサアプリケーション40のコンポーネントを記憶する主要メモリ72を有する。第1の機能18Aは、アプリケーションを起動するために実行される主要機能である。ブロック74は、第1の機能18Aが、第1のCPU ISAオブジェクトを使用して、第1のプロセッサ上で実行されることを示す。ブロック76は、第2のCPU ISAオブジェクトを使用する第2のプロセッサが、アイドル状態であることを示す。第1の機能18Aは、32Aにおいて、例えば、データをルックアップする目的のために、データ構造24Aに依拠する。第1の機能18Aは、26Aおよび26Bにおいて、第2の機能20Aおよび第1のRPC50を実行する。
【0024】
図8は、第1の機能18Aが第1のRPC50を開始するとき、異種マルチプロセッサ70上で実行される第2のプロセスを図示する。ブロック78は、第1のRPC50が、第1のISAオブジェクトを使用して、第1のCPU上で実行されることを示す。ブロック78は、第2のCPUが、依然としてアイドル状態であることを示す。第1のRPC50は、52において、第3の機能22Bを実行する。
【0025】
図9は、第1のRPC50が第3の機能22Bを開始するとき、異種マルチプロセッサ70上で実行される第3の動作を図示する。ブロック80は、第1のISAオブジェクトを使用する第1のCPUが、一時停止されていることを示す。ブロック82は、第3の機能22Bが、第2のISAオブジェクトを使用して、第2のCPUを用いて実行されることを示す。第3の機能22Bは、34Bにおいて、例えば、ルックアップを実行する目的のために、データ構造24Aを利用する。第3の機能22Bは、30Bにおいて、第2のRPC54を実行する。
【0026】
図10は、第2のRPC54が実行されるとき、異種マルチプロセッサ70上で実行される第4の動作を図示する。ブロック80は、第1のCPUが依然として一時停止されていることを示す。ブロック84は、第2のRPC54が、第2のISAオブジェクトを使用して、第2のCPUを用いて実行されることを示す。第2のRPC54は、56において、第2の機能20Aを実行する。
【0027】
図11は、第2の機能20Aが実行されるとき、異種マルチプロセッサ70上で実行される第5の動作を図示する。ブロック86は、第1の機能20Aが、第1のISAオブジェクトを使用して、第1のCPUを用いて実行されることを示す。ブロック88は、第2のCPUが一時停止されていることを示す。
【0028】
図12は、コンピュータシステム900の例示的形態における機械の図表現を示し、コンピュータシステム900内で本明細書に議論される方法論のうちのいずれか1つ以上のものを、機械に実施させるための命令のセットが実行され得る。代替実施形態では、機械は、スタンドアロンデバイスとして動作する、または、他の機械に接続(例えば、ネットワーク化)されてもよい。さらに、単一の機械のみが、図示されるが、用語「機械」はまた、本明細書に議論される方法論のうちのいずれか1つ以上のものを実施するための命令のセット(または複数のセット)を個々にまたは共同で実行する機械の任意の集合を含むように解釈されるものとする。
【0029】
例示的コンピュータシステム900は、バス908を介して相互に通信するプロセッサ902(例えば、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、または両方)と、主要メモリ904(例えば、読取専用メモリ(ROM)、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)(例えば、同期DRAM(SDRAM)またはラムバスDRAM(RDRAM))等)と、スタティックメモリ906(例えば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)等)とを含む。
【0030】
コンピュータシステム900は、ディスクドライブユニット916と、ネットワークインターフェースデバイス920とをさらに含んでもよい。
【0031】
ディスクドライブユニット916は、機械可読媒体922を含み、その上に、本明細書に説明される方法論または機能のうちのいずれか1つ以上のものを具現化する命令924(例えば、ソフトウェア)の1つ以上のセットが記憶される。ソフトウェアはまた、完全にまたは少なくとも部分的に、コンピュータシステム900によるその実行の間、主要メモリ904内および/またはプロセッサ902内に常駐してもよく、主要メモリ904およびプロセッサ902もまた、機械可読媒体を構成する。
【0032】
ソフトウェアはさらに、ネットワークインターフェースデバイス920を介して、ネットワーク928を経由して伝送または受信されてもよい。
【0033】
機械可読媒体922は、例示的実施形態において、単一の媒体であるように示されるが、用語「機械可読媒体」は、命令の1つ以上のセットを記憶する単一の媒体または複数の媒体(例えば、一元化または分散データベース、ならびに/もしくは関連付けられるキャッシュおよびサーバ)を含むように解釈されるべきである。用語「機械可読媒体」はまた、機械による実行のために命令のセットを記憶する、エンコードする、または搬送することが可能であり、本発明の方法論のうちのいずれか1つ以上のものを機械に実施させる、任意の媒体を含むように解釈されるものとする。用語「機械可読媒体」は、故に、限定ではないが、ソリッドステートメモリ、光学および磁気媒体、ならびに搬送波信号を含むように解釈されるものとする。
【0034】
ある例示的実施形態が、説明され、付随の図面に示されたが、そのような実施形態は、単に、本発明の例証であり、本発明の制限ではなく、本発明は、修正が当業者に想起され得るため、示されて説明される具体的構造および配列に制限されないことを理解されたい。