JP2024010097A - クロス命令セットアーキテクチャプロシージャ呼出のためのスレッドウィービング - Google Patents

クロス命令セットアーキテクチャプロシージャ呼出のためのスレッドウィービング Download PDF

Info

Publication number
JP2024010097A
JP2024010097A JP2023183216A JP2023183216A JP2024010097A JP 2024010097 A JP2024010097 A JP 2024010097A JP 2023183216 A JP2023183216 A JP 2023183216A JP 2023183216 A JP2023183216 A JP 2023183216A JP 2024010097 A JP2024010097 A JP 2024010097A
Authority
JP
Japan
Prior art keywords
function
cpu
processor
isa
objects
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.)
Pending
Application number
JP2023183216A
Other languages
English (en)
Inventor
リンジー テイト ジョナサン
Tate Lindsey Jonathan
マイケル リンク グレゴリー
Gregory Michael Link
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Magic Leap Inc
Original Assignee
Magic Leap Inc
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 Magic Leap Inc filed Critical Magic Leap Inc
Publication of JP2024010097A publication Critical patent/JP2024010097A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/47Retargetable compilers
    • 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/4401Bootstrapping
    • G06F9/4406Loading of operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】クロス命令セットアーキテクチャプロシージャ呼出のためのスレッドウィービングを提供する。【解決手段】方法は、第1~第3機能を有するアプリケーションを記憶する。第1機能は、アプリケーションの起動用に第2、第3機能を呼び出す主要機能であり、アプリケーションを第1、第2異種プロセッサにコンパイルし、夫々第1、第2CPU ISAオブジェクトを作成し、第1CPU ISAオブジェクトからの第3機能除去と、第2CPU ISAオブジェクトからの第1、第2機能除去とにより、第1、第2CPU ISAオブジェクトをプルーニングし、夫々第1、第2CPU ISAオブジェクト内に第1、第2RPCをプロキシ挿入し、夫々第2CPU ISAオブジェクト内の第3機能と第1のCPU ISAオブジェクト内の第2機能とをポイントし、第2CPU ISAオブジェクトを共通アプリケーションライブラリにセクションリネーミングする。【選択図】なし

Description

(関連出願の相互参照)
本願は、2018年7月10日に出願された米国仮特許出願第62/696,132号からの優先権を主張し、その全てが、参照によりその全体として本明細書に援用される。
1.発明の背景
本発明は、コードを開始する方法、アプリケーションを実行する方法、および異種マルチプロセッサに関する。
2.関連技術の説明
複雑なコンピュータシステムは、それぞれ、一意の命令セットアーキテクチャを伴う異なるベンダからの複数のプロセッサコアを伴う異種アプローチを頻繁に利用する。異種マルチプロセッサのためのコードを発生させることは、プログラマにとって困難なタスクであり得る。プログラマは、本質的に、2つの別個のバイナリ非互換のコアと別個に互換性のあるプロシージャ呼出に対処し、他のプロセッサがより効率的であり得る境界線において1つのスレッドから別のものに遷移し得るプロシージャ呼出に対処しなければならない。この種類の複雑性は、ソフトウェア作者が、高レベルのC++スレッドプリミティブおよびライブラリ等の従来の高レベルのコンピュータ言語を使用して、機能的な正しさに焦点を当てることを困難にする。
本発明は、コードを開始する方法を提供し、方法は、(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オブジェクトの共通アプリケーションライブラリを作成することとを含む。
本発明はまた、方法を実行するためにプロセッサによって実行可能である命令のセットをその上に記憶しているコンピュータ可読媒体を提供する。本方法は、(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オブジェクトの共通アプリケーションライブラリを作成することとを含んでもよい。
本発明は、アプリケーションを実行する方法をさらに提供し、方法は、(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の異種プロセッサおよび第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の機能
の連続的実行を引き起こす、異種マルチプロセッサ。
本発明は、付随の図面を参照して、実施例を用いてさらに説明される。
図1は、概念的な異種マルチプロセッサアプリケーションを図示するブロック図である。
図2~図6は、異種マルチプロセッサアプリケーションの開発を図示するブロック図である。 図2~図6は、異種マルチプロセッサアプリケーションの開発を図示するブロック図である。 図2~図6は、異種マルチプロセッサアプリケーションの開発を図示するブロック図である。 図2~図6は、異種マルチプロセッサアプリケーションの開発を図示するブロック図である。 図2~図6は、異種マルチプロセッサアプリケーションの開発を図示するブロック図である。
図7~図11は、異種マルチプロセッサのランタイム実行を図示する。 図7~図11は、異種マルチプロセッサのランタイム実行を図示する。 図7~図11は、異種マルチプロセッサのランタイム実行を図示する。 図7~図11は、異種マルチプロセッサのランタイム実行を図示する。 図7~図11は、異種マルチプロセッサのランタイム実行を図示する。
図12は、異種マルチプロセッサアプリケーションを展開するためのビルドシステムをホストすることができるコンピュータの形態における機械のブロック図である。
(本発明の詳細な説明)
図1は、一次命令セットアーキテクチャ(ISA)上で起動するためのコード12と、二次ISA上で起動するためのコード14と、共通データ16とを含む概念的な異種マルチプロセッサアプリケーション10を図示する。
コード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に依拠する。
アプリケーションは、3つを上回る機能を有し得ることを理解されたい。議論の目的のために、異種マルチプロセッサの構造は、3つの機能のみを有するように説明され、これは、本発明を説明するために十分であり、本発明を不明瞭にし得る不必要な乱雑さを含まない。しかしながら、付加的機能が、この説明に使用される3つの機能の前に、その間に、および/またはその後に含まれてもよく、同一の方法を介して、任意のISAに所属する本システムにおける任意の他の機能を呼び出してもよい。
図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のコンポーネントと同一である。
図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」ネーミング構造を有する。
図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と置換されることができる。
第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をポイントするように示される。
図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を作成する。
ソースコードは、例えば、C++コードにおいて記述されてもよく、その後、図2における第1の機能18A、第2の機能20A、および第3の機能24Aによって表されるような処理スレッドは、「ウィービング」イベントと称されることができるものにおいて、プロシージャが呼び出した境界において1つのバイナリ非互換のコアから別のものに不可視に遷移する。ソフトウェア作者は、最初に、従来の高レベルのC++スレッドプリミティブおよびライブラリを使用して、機能的な正しさに焦点を当ててもよく、次いで、モジュール式の方法で、コードを書き換える必要なくまたは異なるライブラリのセットに依拠する必要なく、コードの個々のブロックをより効率的なプロセッサに移行させてもよい。システムが、例えば、デジタル信号プロセッサ(DSP)と、汎用中央処理ユニット(CPU)とを有し得る。ソフトウェア作者の視点から、DSP上である機能を起動するために、行われる必要があることは、以下の通り、これが具体的な非「.text」プログラムセクション内に設置されることを規定する属性タグをある機能に追加することだけであり得る。
上記の実施例では、ソースファイルをコンパイルした後、結果として生じるオブジェクトファイルは、「.text_dsp」セクション内に機能「foo」を含有し得る。ビルドシステムは、オブジェクトファイルから「.text_dsp」セクションを認識および削除し、次いで、DSPのISAのためのソースファイルを再コンパイルする。「foo」機能への任意の参照は、DSP上でリモートプロシージャ呼出を開始するためにシム機能と置換されるであろう。類似する様式で、逆のことが、DSPオブジェクトファイルに関して起こり、.text内の任意の機能が、削除され、.text_dspセクション内の機能におけるそれらへの任意の参照が、CPU上に戻るようにリモートプロシージャ呼出を開始するためにシム機能と置換される。2つのプロセッサが、同じコンパイルされた構造レイアウトを有し、同一の仮想メモリに対する同じビューを有し、ウィービングイベントの時点でコヒーレントなキャッシュを有する限り、アプリケーションは、実行のフローの単純かつコヒーレントなプログラマビューを維持しながら、1つのプロセッサアーキテクチャから他のものにシームレスに遷移することが可能であるはずである。
図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を実行する。
図8は、第1の機能18Aが第1のRPC50を開始するとき、異種マルチプロセッサ70上で実行される第2のプロセスを図示する。ブロック78は、第1のRPC50が、第1のISAオブジェクトを使用して、第1のCPU上で実行されることを示す。ブロック78は、第2のCPUが、依然としてアイドル状態であることを示す。第1のRPC50は、52において、第3の機能22Bを実行する。
図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を実行する。
図10は、第2のRPC54が実行されるとき、異種マルチプロセッサ70上で実行される第4の動作を図示する。ブロック80は、第1のCPUが依然として一時停止されていることを示す。ブロック84は、第2のRPC54が、第2のISAオブジェクトを使用して、第2のCPUを用いて実行されることを示す。第2のRPC54は、56において、第2の機能20Aを実行する。
図11は、第2の機能20Aが実行されるとき、異種マルチプロセッサ70上で実行される第5の動作を図示する。ブロック86は、第1の機能20Aが、第1のISAオブジェクトを使用して、第1のCPUを用いて実行されることを示す。ブロック88は、第2のCPUが一時停止されていることを示す。
図12は、コンピュータシステム900の例示的形態における機械の図表現を示し、コンピュータシステム900内で本明細書に議論される方法論のうちのいずれか1つ以上のものを、機械に実施させるための命令のセットが実行され得る。代替実施形態では、機械は、スタンドアロンデバイスとして動作する、または、他の機械に接続(例えば、ネットワーク化)されてもよい。さらに、単一の機械のみが、図示されるが、用語「機械」はまた、本明細書に議論される方法論のうちのいずれか1つ以上のものを実施するための命令のセット(または複数のセット)を個々にまたは共同で実行する機械の任意の集合を含むように解釈されるものとする。
例示的コンピュータシステム900は、バス908を介して相互に通信するプロセッサ902(例えば、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、または両方)と、主要メモリ904(例えば、読取専用メモリ(ROM)、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)(例えば、同期DRAM(SDRAM)またはラムバスDRAM(RDRAM))等)と、スタティックメモリ906(例えば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)等)とを含む。
コンピュータシステム900は、ディスクドライブユニット916と、ネットワークインターフェースデバイス920とをさらに含んでもよい。
ディスクドライブユニット916は、機械可読媒体922を含み、その上に、本明細書に説明される方法論または機能のうちのいずれか1つ以上のものを具現化する命令924(例えば、ソフトウェア)の1つ以上のセットが記憶される。ソフトウェアはまた、完全にまたは少なくとも部分的に、コンピュータシステム900によるその実行の間、主要メモリ904内および/またはプロセッサ902内に常駐してもよく、主要メモリ904およびプロセッサ902もまた、機械可読媒体を構成する。
ソフトウェアはさらに、ネットワークインターフェースデバイス920を介して、ネットワーク928を経由して伝送または受信されてもよい。
機械可読媒体922は、例示的実施形態において、単一の媒体であるように示されるが、用語「機械可読媒体」は、命令の1つ以上のセットを記憶する単一の媒体または複数の媒体(例えば、一元化または分散データベース、ならびに/もしくは関連付けられるキャッシュおよびサーバ)を含むように解釈されるべきである。用語「機械可読媒体」はまた、機械による実行のために命令のセットを記憶する、エンコードする、または搬送することが可能であり、本発明の方法論のうちのいずれか1つ以上のものを機械に実施させる、任意の媒体を含むように解釈されるものとする。用語「機械可読媒体」は、故に、限定ではないが、ソリッドステートメモリ、光学および磁気媒体、ならびに搬送波信号を含むように解釈されるものとする。
ある例示的実施形態が、説明され、付随の図面に示されたが、そのような実施形態は、単に、本発明の例証であり、本発明の制限ではなく、本発明は、修正が当業者に想起され得るため、示されて説明される具体的構造および配列に制限されないことを理解されたい。

Claims (15)

  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に記載の異種マルチプロセッサ。
JP2023183216A 2018-07-10 2023-10-25 クロス命令セットアーキテクチャプロシージャ呼出のためのスレッドウィービング Pending JP2024010097A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862696132P 2018-07-10 2018-07-10
US62/696,132 2018-07-10
PCT/US2019/041151 WO2020014324A1 (en) 2018-07-10 2019-07-10 Thread weave for cross-instruction set architecture procedure calls
JP2021500607A JP7374981B2 (ja) 2018-07-10 2019-07-10 クロス命令セットアーキテクチャプロシージャ呼出のためのスレッドウィービング

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2021500607A Division JP7374981B2 (ja) 2018-07-10 2019-07-10 クロス命令セットアーキテクチャプロシージャ呼出のためのスレッドウィービング

Publications (1)

Publication Number Publication Date
JP2024010097A true JP2024010097A (ja) 2024-01-23

Family

ID=69142713

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2021500607A Active JP7374981B2 (ja) 2018-07-10 2019-07-10 クロス命令セットアーキテクチャプロシージャ呼出のためのスレッドウィービング
JP2023183216A Pending JP2024010097A (ja) 2018-07-10 2023-10-25 クロス命令セットアーキテクチャプロシージャ呼出のためのスレッドウィービング

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2021500607A Active JP7374981B2 (ja) 2018-07-10 2019-07-10 クロス命令セットアーキテクチャプロシージャ呼出のためのスレッドウィービング

Country Status (5)

Country Link
US (1) US20210271484A1 (ja)
EP (1) EP3821340A4 (ja)
JP (2) JP7374981B2 (ja)
CN (1) CN112585581A (ja)
WO (1) WO2020014324A1 (ja)

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2061117C (en) * 1991-12-02 1998-09-29 Neta J. Amit Apparatus and method for distributed program stack
US5497463A (en) * 1992-09-25 1996-03-05 Bull Hn Information Systems Inc. Ally mechanism for interconnecting non-distributed computing environment (DCE) and DCE systems to operate in a network system
JP2000099332A (ja) * 1998-09-25 2000-04-07 Hitachi Ltd 遠隔手続き呼び出し最適化方法とこれを用いたプログラム実行方法
US20100153934A1 (en) * 2008-12-12 2010-06-17 Peter Lachner Prefetch for systems with heterogeneous architectures
CN102741828B (zh) * 2009-10-30 2015-12-09 英特尔公司 对计算机平台的异构处理器的双向通信支持
US9923840B2 (en) * 2012-08-20 2018-03-20 Donald Kevin Cameron Improving performance and security of multi-processor systems by moving thread execution between processors based on data location
US10437591B2 (en) * 2013-02-26 2019-10-08 Qualcomm Incorporated Executing an operating system on processors having different instruction set architectures
US20140359590A1 (en) * 2013-05-30 2014-12-04 National Instruments Corporation Development and Deployment of Parallel Floating-Point Math Functionality on a System with Heterogeneous Hardware Components
WO2015143641A1 (en) * 2014-03-26 2015-10-01 Empire Technology Development Llc Compilation of application into multiple instruction sets for a heterogeneous processor
US20150301955A1 (en) * 2014-04-21 2015-10-22 Qualcomm Incorporated Extending protection domains to co-processors
WO2016090554A1 (en) * 2014-12-09 2016-06-16 Intel Corporation System and method for execution of application code compiled according to two instruction set architectures
US20180260218A1 (en) * 2017-03-07 2018-09-13 Vinodh Gopal Instruction set architectures for fine-grained heterogeneous processing

Also Published As

Publication number Publication date
EP3821340A1 (en) 2021-05-19
US20210271484A1 (en) 2021-09-02
EP3821340A4 (en) 2021-11-24
JP2021532456A (ja) 2021-11-25
CN112585581A (zh) 2021-03-30
WO2020014324A1 (en) 2020-01-16
JP7374981B2 (ja) 2023-11-07

Similar Documents

Publication Publication Date Title
KR102364552B1 (ko) 그래프 기반 프로그램 명세의 실행
KR102361155B1 (ko) 특정 데이터 포트 연결의 식별에 기반한 그래프 구성요소의 자동화된 클러스터링을 통한 그래프 기반 프로그램 명세의 컴파일
KR102364553B1 (ko) 태스크의 호출 관리
JP5984158B2 (ja) 異種構成コンピュータ上でハイ・レベルのプログラムをコンパイルし、実行するための技法
KR101240092B1 (ko) 컴퓨터 플랫폼에서의 방법 및 컴퓨터 플랫폼
KR102375349B1 (ko) 연관된 태스크들을 제어하기 위한 그래프 기반 프로그램 명세의 구성요소들의 실행 상태 관리
US20160117152A1 (en) Method and system of a command buffer between a cpu and gpu
US10853049B2 (en) Methods for enabling a computer to migrate microservices and to perform microservice templating
JP2008276740A (ja) 並列スレッド・コンピューティングの仮想のアーキテクチャ及び命令セット
US8341615B2 (en) Single instruction multiple data (SIMD) code generation for parallel loops using versioning and scheduling
JP2009259241A (ja) 汎用プロセッサによるリターゲティングされたグラフィックプロセッサ加速コードの実行
US9086873B2 (en) Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture
US10761821B1 (en) Object oriented programming model for graphics processing units (GPUS)
JP6400296B2 (ja) マルチモード支援プロセッサ及びマルチモードを支援する処理方法
KR20080105345A (ko) 병렬 처리 장치 및 방법
US9665354B2 (en) Apparatus and method for translating multithread program code
US10002401B2 (en) Method and apparatus for efficient processing of graphics commands
JP7374981B2 (ja) クロス命令セットアーキテクチャプロシージャ呼出のためのスレッドウィービング
US20230236878A1 (en) Efficiently launching tasks on a processor
Krauweel et al. Simpler coordination of JavaScript web workers
US20200174761A1 (en) Conditional construct splitting for latency hiding
US20220391216A1 (en) Graphics processing
US11327758B2 (en) Non-transitory computer-readable recording medium, assembly instruction conversion method and information processing apparatus
JP2002041283A (ja) サブパイプライン変換構造、及びバイナリの互換性を持たせる方法
Clarkson Compiler and Runtime Support for Heterogeneous Programming

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231025