[go: up one dir, main page]

JP5650240B2 - オフデバイス・サービスを用いた実行コードのランタイム・プロビジョニングのための技術 - Google Patents

オフデバイス・サービスを用いた実行コードのランタイム・プロビジョニングのための技術 Download PDF

Info

Publication number
JP5650240B2
JP5650240B2 JP2012543562A JP2012543562A JP5650240B2 JP 5650240 B2 JP5650240 B2 JP 5650240B2 JP 2012543562 A JP2012543562 A JP 2012543562A JP 2012543562 A JP2012543562 A JP 2012543562A JP 5650240 B2 JP5650240 B2 JP 5650240B2
Authority
JP
Japan
Prior art keywords
executable code
host
code
core
execution
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.)
Expired - Fee Related
Application number
JP2012543562A
Other languages
English (en)
Other versions
JP2013514570A (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 JP2013514570A publication Critical patent/JP2013514570A/ja
Application granted granted Critical
Publication of JP5650240B2 publication Critical patent/JP5650240B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

本開示は一般にクライアント・デバイスで実行されるプログラムのランタイム中の実行コードのプロビジョニングに関する。特に、オフデバイス・プロビジョニング・サービスを伴う技術が記載される。
今日、中央処理ユニット(CPU)の動作周波数はおおよそ成長が止まっており、一部の場合には減少してさえいる。このため、なおも増加している処理要求に対処するため、複数のプロセッサ・コアを有する異種プロセッサが段々と重要になっている。近年の異種マルチコア・デバイスは例えばCPUコア、グラフィカル処理ユニット(GPU)コア、デジタル信号プロセッサ(DSP)コアなどを備えうる。
マルチコア・デバイスの異種性は、様々なハードウェア構成及び様々な実行プラットフォームを有する対象デバイスでポータブル・アプリケーションが実行可能であることを要求する。このようなポータブル・アプリケーションはバイトコードを保持する実行ファイルに基づきうる。(Java(登録商標)仮想マシン(JVM)のような)デバイス固有の仮想マシンはバイトコードを解釈・実行するか、ランタイム・コンパイルを用いてバイトコードを実行コード(すなわち、バイナリコード又は機械コード)に変換する。
携帯電話機、スマートフォン、携帯情報端末(PDA)のような移動体デバイスは徐々に高性能になっており、それ故、異種マルチコア・システムの有望な候補である。しかし、移動体デバイスは処理能力、バッテリ電力などの観点で制限されたリソースを有する。そこで、移動体デバイスの個別のハードウェア・ソフトウェア環境に適合されたオフデバイス・コンパイル・サービスを用いて、利用可能なリソースをコンパイル・タスクから解放することが示唆されている。
特許文献1は移動体クライアント・デバイスのための例示のオフデバイス・コンパイルのシナリオを記載する。ソースコードはローカル・ファイルシステムを介してクライアント・デバイスのメモリに格納される。クライアント・デバイスのCPUで、ソースコード・ファイルを読み出すように構成されたプログラム(例えば、インストーラ・アプリケーション)が実行される。クライアント・プログラムはまず、クライアント・デバイスのハードウェア・ソフトウェア環境を示すコード・コンパイル要求を生成する。その後、コード・コンパイル要求は、リモートのネットワーク・サーバへ送信され、リモートのネットワーク・サーバは、示されたハードウェア・ソフトウェア環境についてコードをコンパイルする能力を有するならば受理メッセージで応答する。
受理メッセージを受信すると、クライアントプログラムはローカル・ファイルシステムを介してソースコード・ファイルを読み出し、これをサーバへ送信する。サーバは受信したソースコードをコンパイルして(クライアント・デバイスの個別のハードウェア・ソフトウェア環境に適合された)実行コードを生成し、コンパイルされたコードをクライアント・デバイスへ返す。クライアント・デバイスはコンパイルされたコードをローカル・ファイルシステムに格納してもよい。クライアント・デバイスは様々なプロセッサ・コアでその後に処理される単一のソフトウェアの様々なコンポーネントについて様々なコンパイル要求を発行してもよい。
国際公開第2009/055731号
オフデバイス・サービスから実行コードを取得するためのより効率的な技術が必要である。
第1側面によれば、ホスト・コアと、ホスト・コアとは異なるコアに実装された少なくとも1つの処理要素とを備えるクライアント・デバイスのための実行コードを取得する方法が提供される。本方法は、ホスト・コアによって実行されるホスト・プログラムのランタイムにホスト・コアによって実行される、ホスト・プログラムに埋め込まれた非実行コード部分を判定する工程と、検出された非実行コード部分に対する実行コードをリモートのネットワーク・サーバに要求する工程と、要求した実行コードをネットワーク・サーバから受信する工程と、受信した実行コードを処理要素による実行のために提供する工程とを有する。例として、受信した実行コードを実行のために提供する工程は、クライアント・デバイスが実行コードを格納する工程を含んでもよい。
本方法は、処理要素が、受信した実行コードの実行を開始する工程をさらに含んでもよい。この開始する工程は、ホスト・コアによってホスト・プログラムのランタイムで実行されてもよいし、他の任意の方法で実行されてもよい。受信した実行コードは、受信直後に(例えば、次のクロックサイクルで)実行されてもよいし、後の時点で実行されてもよい。さらに、受信したコードが一度も実行されないシナリオ(例えば、一度も通らないIF分岐に受信したコードが属する場合)が存在してもよい。
1つの実装では、実行コードを要求する処理は、ホスト・プログラムから非実行コード部分を抽出する工程と、抽出した非実行コード部分をネットワーク・サーバへ送信する工程とを含む。非実行コード部分は例えばソースコードを含んでもよい。ホスト・プログラムはバイトコード形式で提供されてもよい。
非実行コード部分は様々な方法でホスト・プログラムに埋め込まれうる。例えば、非実行コード部分自体がホスト・プログラムに埋め込まれてもよいし、非実行コード部分の位置を指し示すリンク、参照又は識別子の形式でホスト・プログラムに埋め込まれてもよい。この位置はクライアント・デバイス自体のものであってもよいし、ネットワークのものでもよい。1つの変形によれば、非実行コード部分は文字列の形式でホスト・プログラムに埋め込まれる。文字列はソースコードの形式で非実行コード部分を含んでもよい。これに代えて、文字列は、非実行コード部分を指し示すユニバーサル・リソース・ロケータ(URL)列の形式を取ってもよい。URLは例えばリモートのネットワーク・サーバを指し示してもよく、1つのシナリオでは要求される個別の実行コードを指し示してもよい。
本方法は、デバイスのモード設定を判定する工程と、モード決定を示す情報をネットワーク・サーバへ送信する工程とをさらに有してもよい。その後、ネットワーク・サーバはモード設定情報を考慮に入れて実行コードを取得してもよい。更なる変形では、デバイスのモード設定の変更が判定されてもよい。モード設定の変更を判定したことに応じて、実行コードを求める新たな要求が開始されてもよい。この新たな要求に応じて受信された実行コードは新たなモード設定を考慮に入れてネットワーク・サーバによって取得されていてもよい。モード設定は一般にデバイスの1つ以上の動作モードに関する。この動作モードは例えば、性能モード(例えば、高性能/低性能)と電力モード(例えば、通常電力モード/節電モード)とのうちの少なくとも1つに関する。モード設定関連の機能は単一コア・シナリオ(一方でのホスト・コアと他方での処理要素との間の区別がなされないシナリオ)にも適用できることに留意されたい。
1つのシナリオでは、実行コードは、暗号形式と署名付き形式とのうちの少なくとも1つで受信される。このシナリオでは、本方法は、(例えば、実行コードの実行を開始する前に)受信した実行コードを復号する工程をさらに有してもよい。これに加えて、又はこれに代えて、本方法は、(例えば、実行コードの実行を開始する前に)実行コードに付与された署名を確認する工程を有してもよい。さらに、ホスト・プログラムから抽出された非実行コード部分は、ネットワーク・サーバへ送信される前に、暗号化と署名とのうちの少なくとも1つが行われてもよい。
ネットワーク・サーバから受信した実行コードはローカルのキャッシュに格納されてもよいし、ホスト・プログラムの実行又はホスト・プログラム内の非実行コード部分の検出をさらに行う場合にキャッシュから読み出されてもよい。その後、処理要素による読み出された実行コードの実行が開始されてもよい。このようなクライアント側でのキャッシュ・シナリオでは、ネットワーク・サーバ及びネットワークコネクションは、不要な反復タスクの負荷が軽減される。
ホスト・プログラムはホスト・コアで実行される仮想マシンによって実行されてもよい。仮想マシンはJavaに基づいてもよい。1つの実装では、ホスト・プログラムはOpenCL規格に従って記述される。しかし、ホスト・プログラムはまた、ランタイムでコンパイルされる必要のある(例えばソースコード形式の)計算タスクをプログラムに埋め込むことを認める任意の他の言語で記述されてもよい。
デバイスは、ホスト・プログラムのようなバイトコードを保持する実行ファイルと互換性を有するオペレーティングシステムを実行してもよい。一例として、アンドロイド・オペレーティングシステムがデバイス上で実行されてもよく、ホスト・プログラムはアンドロイド・アプリケーション又はアンドロイド・アプリケーションの一部であってもよい。アンドロイド・オペレーティングシステム及びアンドロイド・アプリケーションの代わりに、他のJavaベースのオペレーティングシステム及びアプリケーションが同様にデバイス上に実装されてもよい。
別の側面によれば、クライアント・デバイスに実行コードを提供する方法が提供される。クライアント・デバイスは、ホスト・コアと、ホスト・コアとは異なるコアに実装された少なくとも1つの処理要素とを備え、ホスト・コアは、埋め込まれた非実行コード部分を含むホスト・プログラムを実行する。本方法は、ホスト・プログラムのランタイムにネットワーク・サーバによって実行される、埋め込まれた非実行コード部分に関する実行コードを求める要求を受信する工程と、要求された実行コードを取得する工程と、取得した実行コードをデバイスへ送信する工程とを有する。実行コード要求は、実行コード自体を含んでもよいし、実行コードへの参照を含んでもよい。例として、実行コード要求はURLに基づいてもよい。
1つの実装では、要求された実行コードを取得する工程は、要求された実行コードを生成するために非実行コード部分をコンパイルする工程を含む。別の実装では、要求された実行コードはローカルのキャッシュ又はデータベースからネットワーク・サーバによって読み出される。このような読み出しは、実行コード要求とともに受信されたコード識別子に基づいてもよい。
さらに別の変形によれば、ネットワーク・サーバは、デバイスに関するハードウェア情報と、ソフトウェア情報と、モード設定情報とのうちの少なくとも1つを受信するように適合される。このような実装では、非実行コード部分はハードウェア情報と、ソフトウェア情報と、モード設定情報とのうちの少なくとも1つを考慮に入れて取得(例えば、コンパイル又は読み出し)されてもよい。
更なる側面によれば、1つ以上の計算デバイス、例えばスマートフォンのような移動体クライアント・デバイスで実行された場合に、本明細書に記載される任意の方法及び方法の側面の各工程を実行させるプログラムコード部分を含むコンピュータプログラムが提供される。コンピュータプログラムは、計算デバイスに含まれるかこれに関連する固定メモリ又は書き換え可能メモリ、CD−ROM、DVDなどのようなコンピュータで読み取り可能な記憶媒体に格納されてもよい。これに加えて、又はこれに代えて、コンピュータプログラムは、例えば電話線又は無線リンクのようなインターネット及び/又は通信コネクションのようなデータ・ネットワークを介して計算デバイスにダウンロードされるように提供されてもよい。
さらに別の側面によれば、クライアント・デバイスが提供される。本クライアント・デバイスは、ホスト・プログラムを実行し、ホスト・プログラムに埋め込まれた非実行コード部分をホスト・プログラムのランタイムで判定するように適合されたホスト・コアを備える。本クライアント・デバイスは、検出された非実行コード部分に対する実行コードをリモートのネットワーク・サーバに要求し、要求した実行コードをネットワーク・サーバから受信するように適合されたインタフェースと、ホスト・コアとは異なるコアに実装された少なくとも1つの処理要素とをさらに備え、ホスト・コアは、処理要素による実行のためにホスト・プログラムのランタイムで受信した実行コードを提供するように適合される。
クライアント・デバイスは固体端末の形式で構成されてもよいし、移動体端末の形式で構成されてもよい。移動体の構成では、クライアント・デバイスは、携帯電話機、スマートフォン、PDA、ネットブック、ノートブックなどの形式で実現されてもよい。クライアント・デバイスは、無線リンクを介してリモートのネットワーク・サーバと通信する無線通信能力を有してもよい。
相補的な側面によれば、ホスト・コアと、ホスト・コアとは異なるコアに実装された少なくとも1つの処理要素とを備えるクライアント・デバイスに実行コードを提供するように構成されたネットワーク・サーバが提供される。ホスト・コアは、埋め込まれた非実行コード部分を含むホスト・プログラムを実行する。ネットワーク・サーバは、埋め込まれた非実行コード部分に関する実行コードを求める要求を受信するように適合されたインタフェースと、要求された実行コードをホスト・プログラムのランタイムで取得するように適合されたコンポーネントとを備え、インタフェースは実行コードをデバイスへ送信するようにさらに適合される。
要求された実行コードを取得するように適合されたコンポーネントは、コンパイラとして構成されてもよいし、以前にネットワーク・サーバによってコンパイルされた実行コードを一時的に保持するキャッシュとして構成されてもよいし、事前にコンパイルされた実行コードを保持するデータベースとして構成されてもよい。実行コードは、クライアント・デバイスに関するハードウェア情報と、ソフトウェア情報と、モード設定情報とのうちの少なくとも1つを考慮に入れてネットワーク・サーバによって取得されてもよい。
以下に、図面に説明される例示の実施形態を参照して本開示がより詳細に記載される。
クライアント・デバイスの実施形態及びネットワーク・サーバの実施形態を含む実行コードを要求し提供するためのシステムの概略図を説明する。 例示の方法の実施形態における図1のクライアント・デバイス及びネットワーク・サーバの動作を説明する概略フローチャートを示す。
以下の記載は、説明のためであって限定のためではなく、本開示の完全な理解を提供するために個別の詳細が説明される。本明細書で開示される技術はこれらの個別の詳細から逸脱する他の実施形態で実施されてもよいことを当業者は理解するだろう。例えば、以下の実施形態は主にOpenCLフレームワークに関して記載されるが、本開示がこのような実施に限定されないことを当業者は理解するだろう。従って、本明細書で用いられる用語及び表現はOpenCLによる本開示の実現に限定されるものとして解釈されるべきではない。
本明細書で説明される機能は個別のハードウェア回路を用いて実施されてもよいし、プログラム式マイクロプロセッサ又は汎用コンピュータと連動して機能するソフトウェアを用いて実施されてもよいし、特定用途向け集積回路(ASIC)を用いて実施されてもよいし、1つ以上のDSPを用いて実施されてもよいことを当業者はさらに理解するだろう。本明細書に記載される技術はマイクロプロセッサと、マイクロプロセッサに結合されたメモリとに具現化され、プロセッサによって実行される場合に本明細書に開示される方法及び方法の側面を実行する1つ以上のプログラムでメモリに符号化されてもよいことも当業者は理解するだろう。
図1はオフデバイス・コードのプロビジョニング・サービスを用いて実行コードを要求し取得するためのシステムを説明する。本システムは、通信ネットワーク12を介してリモートのネットワーク・サーバ14と通信するように構成されたクライアント・デバイス10を備える。本実施形態では、クライアント・デバイス10はスマートフォンのような移動体端末として構成される。通信ネットワーク12は、例えばGSM、W−CDMA又はLTE通信技術に基づく1つ以上の無線リンクを備える。ネットワーク・サーバ14はサービスプロバイダ又はネットワークオペレータのコアネットワークに位置する。
図1に説明されるように、クライアント・デバイス10は異種構成を有し、少なくともCPU20、GPU22及びDSP24を含む複数のプロセッサを備える。各プロセッサ20、22、24は1つ以上のプロセッサ・コア26、28、30を備える。クライアント・デバイス10は、ネットワーク・サーバ14と通信するように適合されたインタフェース32をさらに備える。インタフェース32はソフトウェアの形式で実現されてもよいし、ハードウェアの形式で実現されてもよいし、これらの組み合わせとして実現されてもよい。インタフェース32はネットワーク・サーバ14に実行コードを要求し、ネットワーク・サーバ14から実行コードを受信するように適合される。クライアント・デバイスのローカルキャッシュ34は、プロセッサ・コア26、28、30のうちの1つ以上による即時実行又は後での実行のためにネットワーク・サーバ14から受信した実行コードを一時的に格納するように適合される。
ネットワーク・サーバ14はクライアント・デバイス10と通信するように適合されたインタフェース50を備える。クライアント・デバイス10のインタフェース32と同様に、ネットワーク・サーバ14のインタフェース50はソフトウェアの形式で実現されてもよいし、ハードウェアの形式で実現されてもよいし、これらの組み合わせとして実現されてもよい。ネットワーク・サーバ14は、クライアント・デバイス10によって要求された実行コードを取得するように適合されたコンポーネント52をさらに備える。図1に説明される例示の実装では、コンポーネント52はコンパイラとして構成される。コンポーネント52は様々な方法で実現されてもよく、例えばクライアント・デバイス10によって要求されうる複数のコード機能について事前にコンパイルされた実行コードを保持するデータベースの形式で実現されてもよいことが理解されるだろう。さらに、ネットワーク・サーバ14はコンポーネント52によってコンパイルされた実行コードをキャッシュするためのキャッシュ54を備える。キャッシュ54のプロビジョンは、コンポーネント52から同様のコンパイル・タスクを繰り返して実行することによる負荷を軽減する。
本実施形態では、CPU20による実行のためにアンドロイド又は仮想マシンの形式で実行可能な別のJavaベースのオペレーティングシステムがクライアント・デバイス10にインストールされる。クロノスOpenCLワーキンググループによって規定されるOpenCLフレームワーク(例えば、2012年8月8日付けのOpenCL仕様書バージョン1.0、文書改訂29版を参照)はCPU20、GPU22及びDSP24による異種集合体のプログラミングに利用される。
一般に、OpenCLアプリケーションは、一方でホストで動作するプログラム(「ホスト・プログラム」)と、他方で1つ以上のOpenCLデバイスで動作するプログラム(「カーネル」)との組合せと見なされうる。本実施形態では、ホスト・プログラム40はCPU20のコア26(「ホスト・コア」)で実行され、OpenCLデバイスはGPU22及びDSP24によって実現される。各OpenCLデバイスは計算ユニットの集合体として定義され、各計算ユニットは1つ以上の処理要素(PE:Processing Element)から構成される。図1に説明される実施形態では、GPUコア28は2つのこのようなPE42、44を備え、DSPコア30は1つのPE46を備える。
ホスト・コア26で実行されるホスト・プログラム40はPE42、44、46での計算タスクを実現するために、GPU22及びDSP24へコマンドを投入するように構成される。計算タスクは、ホスト・プログラム40で宣言され、非実行ソースコード部分の形式でホスト・プログラムに埋め込まれた1つ以上のカーネル48によって定義される。ホスト・プログラム40自体はCPU20で実行される仮想マシンによって実行可能なバイトコードの形式で提供されてもよい。
以下のソースコードの断片はホスト・プログラム40のソースコードに文字列の形式でどのようにカーネル48の1つが埋め込まれるかを説明する。
const char *embedded_code =“__kernel void some_computation(…) {
int x = 3;
int y = get_local_id(0);
… /* OpenCLの計算はここから */
}“;

program = clCreateProgramFromSource(…, embedded_code, …);
clBuildProgramExecutable(program, …);
kernel = clCreateKernel(program, …);

clExecuteKernel(…, kernel, …);
ホスト・プログラム40をバイトコードに変換した後であっても、カーネル48は結果のバイトコードにソースコード表現で(例えば文字列の形式で)埋め込まれたままであることが理解されるだろう。埋め込まれたソースコード表現はネットワーク・サーバ14によって(典型的にはアプリケーションの起動中に)ホスト・プログラム40のランタイムでコンパイルされるだけだろう。
ソースコード列をホスト・プログラム40に埋め込む代わりに、ネットワーク・サーバ14を指し示すURL列(1つの実施形態ではコンパイルされる要求対象のソースコード又は事前にコンパイルされた要求対象のコードを識別子によって参照するURL列)の形式で埋め込まれてもよい。さらに、ソースコードは(例えばアプリケーション・バンドルの形式で)ホスト・プログラム40と一緒にクライアント・デバイス10に格納されたファイルへの参照の形式でホスト・プログラム40に埋め込まれてもよい。
ネットワーク・サーバ14により提供されるオフデバイス・コンパイル・サービスの利用によって、クライアント・デバイス10は、かなりの処理リソース及びメモリリソースを必要とするだろう洗練されたコンパイラを実装する必要性の負荷が軽減される。これは、クライアント・デバイス10はOpenCLアプリケーションを実行できるが、必要なコンパイル・タスクを実行できなくてもよいことを意味する。よって、クライアント・デバイス10の計算リソースはコンパイル・タスクに利用可能でなくてもよいので、クライアント・デバイス10は実際にOpenCLフレームワークの十分な利用を排除する(OpenCLフレームワークは並列計算タスクと結びつくが、コンパイラは従来型のシーケンシャルプログラムである)。
あるシナリオでは先行コンパイルがオフデバイス・コンパイルに対する許容可能な代替でありうるが、典型的なアンドロイド・アプリケーションの可搬性によって、先行コンパイルは非実用的なものになる。先行コンパイルは特定の対象デバイスのハードウェア・ソフトウェア環境に合わせて個別に調整された実行コード(すなわち、バイナリコード又はマシンコード)を生じる結果となるので、バイトコード実行のアイデアを無にする。図2の概略フロー図200を参照して以下に詳細に記載されるように、リソースに制限のあるクライアント・デバイス10でOpenCLコンパイル・タスクを実行するのではなく、制約の少ないネットワーク・サーバ14へソースコード・カーネル48が渡され、ネットワーク・サーバ14は要求された実行コードを返す。図2に説明される様々なステップはホスト・プログラム40のランタイムで実行される。
CPU20でバイトコード形式のホスト・プログラム40を実行する際に、1つ以上のソースコード・カーネル48に対応する1つ以上の非実行コード部分は初期ステップ202でホスト・プログラムに埋め込まれているものとして判定される。この判定は例えば、ホスト・プログラム40内の各ソースコード・カーネル48について関数clCreateProgramFromSourceを検出することに基づきうる(ホスト・プログラム40の上記のソースコードの断片を参照)。従来、この関数はローカルのOpenCLランタイム・コンパイラを呼び出すために実装される。本実施形態では、関数はその代わりに、ネットワーク・サーバ14にソースコード・カーネル48に対する実行コードを要求するために実装される。この目的のために、検出されたソースコード・カーネル48について実行コード要求が生成される。その後、ステップ204で、この要求はインタフェース32を介してネットワーク・サーバ14へ送信される。
1つの変形では、埋め込まれたソースコード・カーネル48はホスト・プログラム40からソースコード列として抽出され、要求は実行コードが要求される対象の抽出されたソースコード・カーネル48を含む。別の変形では、ソースコード・カーネル48の識別子だけが要求と一緒にネットワーク・サーバ14へ送信され、所定のシナリオにおいてソースコード・カーネル48の送信が省略されうる。例として、ソースコード・カーネル48は(ホスト・プログラム40におけるソースコード・カーネル48の以前の検出の際に)前もってすでに送信されていてもよいし、ネットワーク・サーバ14はローカルのデータベースを介してソースコード・カーネル48へのアクセスを有してもよい。ソースコード・カーネル48の識別子はホスト・プログラム40に埋め込まれたURL列から導出されてもよい。
ソースコード・カーネル48又はその識別子に加えて、さらなる情報がネットワーク・サーバ14へ送信されてもよい。この付加的情報は、ネットワーク・サーバ14によって返されるコンパイル済コードがクライアント・デバイス10に展開されるハードウェア・ソフトウェア環境に合致することを保証するために、クライアント・デバイス10の個別のハードウェア・ソフトウェア環境に関連してもよい。これに加えて、又はこれに代えて、クライアント・デバイス10に関するモード設定情報がネットワーク・サーバ14へ送信されてもよい。後述するように、この付加的情報は要求された実行コードを取得する際にネットワーク・サーバ14によって使用されてもよい。
ステップ206で、実行コード要求はインタフェース50を介してネットワーク・サーバ14により受信される。要求には、ソースコード・カーネル48又はその識別子(並びに、場合によってはデバイスに関するハードウェア/ソフトウェア情報及び/又はモード設定情報)が付随する。次のステップ208で、ネットワーク・サーバ14はソースコード・カーネル48に関する要求された実行コードを取得する。1つの実施形態では、ネットワーク・サーバのコンポーネント52は、要求された実行コード(すなわち、バイナリコード又は機械コード)を生成するために、要求を介して受信された(又はローカルのデータベースから読み出された)ソースコード・カーネル48をコンパイルする。代替の実施形態では、要求された実行コードは既にサーバキャッシュ54において利用可能である(例えば、クライアント・デバイス10や他のクライアント・デバイスによって以前に同様のコンパイル・タスクが既に要求されているからである)。
ソースコード・カーネル48をコンパイルするか、キャッシュ54又はローカルのデータベースからコンパイル済の実行コードを読み出す場合に、クライアント・デバイス10から受信された付加的情報を考慮に入れてもよい。例えば、コンパイルされたコードがクライアント・デバイス10の個別のハードウェア・ソフトウェア環境に合致するようにコンパイル処理が制御されてもよい。追加の手法又は代替の手法として、クライアント・デバイス10から受信された個別のモード設定情報が検討されるようにコンパイルが制御されてもよい。例として、モード設定情報は、クライアント・デバイス10で現在稼動している(高性能/低性能のような)性能モードと、(通常電力モード/節電モードのような)電力モードとのうちの少なくとも1つに関してもよい。言い換えると、例えばクライアント・デバイス10の節電設定又は高性能(例えば、ゲーム)設定を結果の実行コードが支援するようにコンパイルが制御されてもよい。
1つの実装では、クライアント・デバイス10は、実行バイナリコードを求める初期要求の後に、(例えば通常電力モードから節電モードへのものやその逆である)モード設定変更を判定した際にネットワーク・サーバ14へ新たな要求を送信するように構成される。実行コードが要求される対象のソースコード・カーネル48は初期要求を処理する際にネットワーク・サーバ14によってキャッシュされているかもしれないので、モード設定変更の指標と一緒にソースコード・カーネル48の識別子を送信すれば十分でありうる。その後、ネットワーク・サーバ14はクライアント・デバイス10の新たなモード設定を考慮に入れて(キャッシュされた)ソースコード・カーネル48をコンパイルする。
コンパイル又は他の手段によって実行コードが取得されると、ステップ210で、ネットワーク・サーバ14はインタフェース50及び通信ネットワーク12を介してクライアント・デバイス10へ実行コードを返す。その後、ステップ212で、実行コードはインタフェース32を介してクライアント・デバイス10によって受信される。さらに、ステップ214で、ホスト・プログラム40は受信したコードをローカルのキャッシュ34に格納し、関連する処理要素42、44又は46によって、受信した実行コードの実行を開始する。(あるグラフィカル・タスクのような)並列に実行されるタスクの場合に、ホスト・プログラム40は(GUPコア28のPE42及びPE44のような)2つ以上のPEによる、受信された実行コードの実行を並列に開始してもよい。
実行コードは即座に(例えば、受信後の次のクロック・サイクルで)実行される必要はなく、後の時点で実行されてもよいことに留意されたい。さらに、あるシナリオでは、受信された実行コードは(例えば一度も満たされない条件を有する条件付きコード文に実行が依存する場合に)一度も実行されなくてもよい。
ネットワーク・サーバ14からソースコード・カーネル48に対して受信された実行コードは更なる(2回目、3回目などの)実行のためにクライアント・デバイス10のローカルのキャッシュ34に格納されたままであってもよい。このような更なる実行はホスト・プログラムの更なる起動の文脈や、実行中のホスト・プログラム40内のソースコード・カーネル48の更なる検出の文脈で発生しうる。よって、実行コード要求はクライアント・デバイスによって、比較的低頻度で、例えばコア28、30のうちの1つ以上を電源停止させる新たな電力モードにクライアント・デバイス10がなったことを理由に再コンパイルが必要な場合に(例えばスタンバイ・モードになるか音楽再生モードになった場合に)発行されるだろう。
ある実施形態では、クライアント・デバイス10からネットワーク・サーバ14へ転送される非実行コード及び/又はネットワーク・サーバ14からクライアント・デバイス10へ返送される実行コードは、第三者による不注意のコードの改変を避けるために、(例えば公開鍵基盤PKIを用いて)署名されてもよい。さらに、第三者にコードが読み取れないようにするために暗号化技術が用いられてもよい。このような実装では、コードのコンパイル及び/又はコードの実行の前に、署名確認ステップ及び/又は復号ステップが実施されてもよい。
上記の有利な実装の説明から明らかになったように、本明細書に開示される技術は、OpenCLフレームワーク又は非実行コード部分がホスト・プログラムに埋め込まれる他の任意のフレームワークと組み合わせてオフデバイス・コードのプロビジョニング・サービスを利用可能にする。このような技術は、実行ファイルが携帯されることが予想されるアンドロイドや同様のオペレーティングシステムを実行する、リソースに制約のあるクライアント・デバイスの場合に特に有益である。
本明細書に提示される技術はその好適な実施形態に関して記載されてきたが、この記載は説明の目的のためだけであることが理解されるだろう。従って、本発明は添付の特許請求の範囲のみによって限定されることが意図される。

Claims (18)

  1. ホスト・コア(26)と、前記ホスト・コア(26)とは異なるコア(28、30)に実装された少なくとも1つの処理要素(42、44、46)とを備えるクライアント・デバイス(10)が実行コードを取得する方法であって、ホスト・プログラム(40)のランタイムに前記ホスト・コア(26)によって実行される、
    ‐前記ホスト・プログラム(40)に埋め込まれた非実行コード部分(48)を判定する工程と、
    ‐前記検出された非実行コード部分(48)に対する実行コードをリモートのネットワーク・サーバ(14)に要求する工程と、
    ‐前記要求した実行コードを前記ネットワーク・サーバ(14)から受信する工程と、
    ‐前記受信した実行コードを前記処理要素(42、44、46)による実行のために提供する工程とを有することを特徴とする方法。
  2. 前記実行コードを要求する工程は、前記ホスト・プログラム(40)から前記非実行コード部分(48)を抽出する工程と、前記抽出した非実行コード部分(48)を前記ネットワーク・サーバ(14)へ送信する工程とを含むことを特徴とする請求項1に記載の方法。
  3. 前記非実行コード部分(48)は、ソースコード列の形式か、前記非実行コード部分(48)を参照する識別子の形式か、又は前記非実行コード部分(48)を指し示すURL列の形式で前記ホスト・プログラム(40)に埋め込まれることを特徴とする請求項1又は2に記載の方法。
  4. 前記デバイス(10)のモード設定を判定する工程と、
    前記モード定を示す情報を前記ネットワーク・サーバ(14)へ送信する工程とをさらに有することを特徴とする請求項1乃至3の何れか1項に記載の方法。
  5. 前記デバイス(10)のモード設定の変更を判定する工程と、
    前記モード設定の変更に応じて前記実行コードを求める新たな要求を開始する工程とをさらに有することを特徴とする請求項1乃至4の何れか1項に記載の方法。
  6. 前記モード設定は、性能モードと電力モードとのうちの少なくとも1つに関することを特徴とする請求項4又は5に記載の方法。
  7. 前記実行コードは、暗号形式と署名付き形式とのうちの少なくとも1つで受信され、
    前記方法は、
    ‐前記受信した実行コードを復号する工程と、
    ‐前記実行コードに付与された署名を確認する工程とのうちの少なくとも1つをさらに有することを特徴とする請求項1乃至6の何れか1項に記載の方法。
  8. ‐前記受信した実行コードをローカルのキャッシュ(34)に格納する工程と、
    ‐前記ホスト・プログラム(40)の実行又は前記ホスト・プログラム(40)内の前記非実行コード部分の判定をさらに行う場合に前記キャッシュ(34)から前記実行コードを読み出す工程とをさらに有することを特徴とする請求項1乃至7の何れか1項に記載の方法。
  9. 前記ホスト・プログラム(40)は前記ホスト・コア(26)で実行中の仮想マシンによって実行されることを特徴とする請求項1乃至8の何れか1項に記載の方法。
  10. 前記ホスト・プログラムはOpenCL規格に従って記述されることを特徴とする請求項1乃至9の何れか1項に記載の方法。
  11. 前記デバイス(10)はアンドロイド・オペレーティングシステムを実行することを特徴とする請求項1乃至10の何れか1項に記載の方法。
  12. ホスト・コア(26)と、前記ホスト・コア(26)とは異なるコア(28、30)に実装された少なくとも1つの処理要素(42、44、46)とを備えるクライアント・デバイス(10)に実行コードを提供する方法であって、前記ホスト・コア(26)は、埋め込まれた非実行コード部分(48)を含むホスト・プログラム(40)を実行し、前記方法は、前記ホスト・プログラム(40)のランタイムにネットワーク・サーバ(14)によって実行される、
    ‐前記埋め込まれた非実行コード部分(48)に関する実行コードを求める要求を受信する工程と、
    ‐前記要求された実行コードを取得する工程と、
    ‐前記取得した実行コードを前記デバイス(10)へ送信する工程とを有することを特徴とする方法。
  13. 前記要求された実行コードを取得する工程は、前記要求された実行コードを生成するために前記非実行コード部分(48)をコンパイルする工程を含むことを特徴とする請求項12に記載の方法。
  14. 前記デバイス(10)に関するハードウェア情報と、ソフトウェア情報と、モード設定情報とのうちの少なくとも1つを受信する工程と、
    前記ハードウェア情報と、前記ソフトウェア情報と、前記モード設定情報とのうちの少なくとも1つを考慮に入れて前記非実行コード部分を取得する工程とをさらに有することを特徴とする請求項12又は13に記載の方法。
  15. 装置で実行される場合に請求項1乃至14の何れか1項に記載の方法の各工程を実行させるためのプログラムコード部分を有するコンピュータプログラム。
  16. コンピュータで読み取り可能な記憶媒体に格納されたことを特徴とする請求項15に記載のコンピュータプログラム。
  17. クライアント・デバイス(10)であって、
    ‐ホスト・プログラム(40)を実行し、前記ホスト・プログラム(40)に埋め込まれた非実行コード部分(48)を前記ホスト・プログラム(40)のランタイムで判定するように適合されたホスト・コア(26)と、
    ‐前記検出された非実行コード部分(48)に対する実行コードをリモートのネットワーク・サーバ(14)に要求し、前記要求した実行コードを前記ネットワーク・サーバ(14)から受信するように適合されたインタフェース(32)と、
    ‐前記ホスト・コア(26)とは異なるコア(28、30)に実装された少なくとも1つの処理要素(42、44、46)とを備え、
    前記ホスト・コア(26)は、前記処理要素(42、44、46)による実行のために前記ホスト・プログラム(40)のランタイムで前記受信した実行コードを提供するように適合されることを特徴とするクライアント・デバイス(10)。
  18. ホスト・コア(26)と、前記ホスト・コア(26)とは異なるコア(28、30)に実装された少なくとも1つの処理要素(42、44、46)とを備えるクライアント・デバイス(10)に実行バイナリコードを提供するように構成されたネットワーク・サーバ(14)であって、前記ホスト・コア(26)は、埋め込まれた非実行コード部分(48)を含むホスト・プログラム(40)を実行し、前記サーバ(14)は、
    ‐前記埋め込まれた非実行コード部分(48)に関する実行コードを求める要求を受信するように適合されたインタフェース(50)と、
    ‐前記要求された実行コードを前記ホスト・プログラムのランタイムで取得するように適合されたコンポーネント(52)とを備え、
    ‐前記インタフェース(50)は前記実行コードを前記デバイス(10)へ送信するようにさらに適合されることを特徴とするネットワーク・サーバ(14)。
JP2012543562A 2009-12-18 2010-11-17 オフデバイス・サービスを用いた実行コードのランタイム・プロビジョニングのための技術 Expired - Fee Related JP5650240B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
EP09015723.1 2009-12-18
EP09015723A EP2336882A1 (en) 2009-12-18 2009-12-18 Technique for run-time provision of executable code using off-device services
US32358810P 2010-04-13 2010-04-13
US61/323,588 2010-04-13
PCT/EP2010/067646 WO2011072971A1 (en) 2009-12-18 2010-11-17 Technique for run-time provision of executable code using off-device services

Publications (2)

Publication Number Publication Date
JP2013514570A JP2013514570A (ja) 2013-04-25
JP5650240B2 true JP5650240B2 (ja) 2015-01-07

Family

ID=42102533

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012543562A Expired - Fee Related JP5650240B2 (ja) 2009-12-18 2010-11-17 オフデバイス・サービスを用いた実行コードのランタイム・プロビジョニングのための技術

Country Status (4)

Country Link
US (1) US20120272223A1 (ja)
EP (1) EP2336882A1 (ja)
JP (1) JP5650240B2 (ja)
WO (1) WO2011072971A1 (ja)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8365153B2 (en) 2007-10-26 2013-01-29 Qualcomm Incorporated Server-based code compilation
FR2957700B1 (fr) * 2010-03-22 2012-04-13 Bull Sas Procede, programme d'ordinateur et dispositif d'optimisation de chargement et de demarrage d'un systeme d'exploitation dans un systeme informatique via un reseau de communication
US20130141443A1 (en) * 2011-12-01 2013-06-06 Michael L. Schmit Software libraries for heterogeneous parallel processing platforms
US8689233B2 (en) * 2012-01-25 2014-04-01 International Business Machines Corporation Distributed function execution for hybrid systems
US9075913B2 (en) 2012-02-27 2015-07-07 Qualcomm Incorporated Validation of applications for graphics processing unit
US8966636B2 (en) * 2012-10-16 2015-02-24 International Business Machines Corporation Transforming unit tests for security testing
US9992306B2 (en) 2012-12-21 2018-06-05 E*Trade Financial Corporation Dynamic execution
US10097989B2 (en) 2012-12-21 2018-10-09 E*Trade Financial Corporation Dynamic communication
CN105359090A (zh) 2013-04-26 2016-02-24 纽约市哥伦比亚大学理事会 用于移动应用的系统和方法
US9696973B1 (en) * 2016-02-24 2017-07-04 Semmle Limited Compilation cache with imports scanner
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
US10668378B2 (en) * 2018-01-26 2020-06-02 Valve Corporation Distributing shaders between client machines for precaching
KR102354720B1 (ko) 2018-02-13 2022-01-21 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 계산 장치 및 방법
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11397579B2 (en) 2018-02-13 2022-07-26 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
CN116991225A (zh) 2018-02-14 2023-11-03 上海寒武纪信息科技有限公司 处理器的控制装置、方法及设备
EP3624020B1 (en) 2018-05-18 2025-07-02 Shanghai Cambricon Information Technology Co., Ltd Computation method and product thereof
CN110728364B (zh) 2018-07-17 2024-12-17 上海寒武纪信息科技有限公司 一种运算装置和运算方法
WO2020001438A1 (zh) 2018-06-27 2020-01-02 上海寒武纪信息科技有限公司 片上代码断点调试方法、片上处理器及芯片断点调试系统
JP6867518B2 (ja) 2018-08-28 2021-04-28 カンブリコン テクノロジーズ コーポレイション リミティド データ前処理方法、装置、コンピュータ機器及び記憶媒体
US11703939B2 (en) 2018-09-28 2023-07-18 Shanghai Cambricon Information Technology Co., Ltd Signal processing device and related products
CN111383637A (zh) 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
CN111831543B (zh) 2019-04-18 2024-07-16 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
US11934940B2 (en) 2019-04-18 2024-03-19 Cambricon Technologies Corporation Limited AI processor simulation
US11676028B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
EP3772022B1 (en) 2019-06-12 2024-11-06 Shanghai Cambricon Information Technology Co., Ltd Method for determining quantization parameters in neural network and related products
JP7146954B2 (ja) 2019-08-23 2022-10-04 安徽寒武紀信息科技有限公司 データ処理方法、装置、コンピュータデバイス、及び記憶媒体
JP7146952B2 (ja) 2019-08-23 2022-10-04 安徽寒武紀信息科技有限公司 データ処理方法、装置、コンピュータデバイス、及び記憶媒体
JP7146955B2 (ja) 2019-08-23 2022-10-04 安徽寒武紀信息科技有限公司 データ処理方法、装置、コンピュータデバイス、及び記憶媒体
CN112434781B (zh) 2019-08-26 2024-09-10 上海寒武纪信息科技有限公司 用于处理数据的方法、装置以及相关产品
EP4024280A4 (en) 2019-08-27 2022-11-16 Anhui Cambricon Information Technology Co., Ltd. DATA PROCESSING METHOD AND EQUIPMENT, COMPUTER EQUIPMENT AND STORAGE MEDIA
CN113298843B (zh) 2020-02-24 2024-05-14 中科寒武纪科技股份有限公司 数据量化处理方法、装置、电子设备和存储介质
CN113408717B (zh) 2020-03-17 2025-09-09 安徽寒武纪信息科技有限公司 计算装置、方法、板卡和计算机可读存储介质
US12417101B2 (en) * 2023-02-22 2025-09-16 Micron Technology, Inc. Overlay code retrieval from a host system

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3000A (en) * 1843-03-10 Improvement in sugar-boilers
US4022A (en) * 1845-05-01 Improvement in machines for hackling and cleaning hemp and flax
FR2728980B1 (fr) 1994-12-30 1997-01-31 Thomson Csf Dispositif de securisation de systemes d'information organises autour de microprocesseurs
JP2000122871A (ja) * 1998-10-14 2000-04-28 Hitachi Ltd アプリケーション配布方法
KR100441115B1 (ko) 2001-06-27 2004-07-19 주식회사 인터와이즈 정보 단말기의 자바 프로그램 처리 속도 향상을 위한 자바컴파일 온 디멘드 서비스 시스템 및 그 방법
US7124445B2 (en) 2002-06-21 2006-10-17 Pace Anti-Piracy, Inc. Protecting software from unauthorized use by converting source code modules to byte codes
US20040225747A1 (en) 2003-05-09 2004-11-11 Zafer Kadi Providing compiled bytecode applications to a wireless device
JP2005275971A (ja) * 2004-03-25 2005-10-06 Sanyo Electric Co Ltd ネットワーク接続用機器アダプタシステム
US9998802B2 (en) * 2004-06-07 2018-06-12 Sling Media LLC Systems and methods for creating variable length clips from a media stream
US8365153B2 (en) 2007-10-26 2013-01-29 Qualcomm Incorporated Server-based code compilation

Also Published As

Publication number Publication date
EP2336882A1 (en) 2011-06-22
JP2013514570A (ja) 2013-04-25
US20120272223A1 (en) 2012-10-25
WO2011072971A1 (en) 2011-06-23

Similar Documents

Publication Publication Date Title
JP5650240B2 (ja) オフデバイス・サービスを用いた実行コードのランタイム・プロビジョニングのための技術
CN101836188B (zh) 基于服务器的代码编译
CN109766722B (zh) 一种区块链中构建智能合约的方法
CN105100191B (zh) 一种云编译实现Java应用安装的方法、装置及系统
US8677329B2 (en) Methods and apparatuses for a compiler server
US9946873B2 (en) Methods and apparatuses for secure compilation
US8701104B2 (en) System and method for user agent code patch management
CN106055375B (zh) 应用程序安装方法及装置
CN113761482A (zh) 一种程序代码保护方法和装置
EP3872630B1 (en) Request processing method and apparatus, electronic device, and computer storage medium
KR20170071360A (ko) 사용자 단말장치, 서버, 및 그 어플리케이션 실행 방법
CN107577609A (zh) 一种基于主机端动态链接的嵌入式系统动态模块调试方法
CN107315619A (zh) 一种实现补丁安全的热修复方法、移动终端及热修复系统
JP3757235B2 (ja) ネイティブコンパイル方法、ネイティブコンパイル前処理方法、コンピュータプログラム、サーバ、通信システム、および移動体通信端末装置
CN113946602A (zh) 数据查找方法、装置、设备和介质
CN111090442B (zh) 一种应用更新方法、装置和存储介质
CN112463165A (zh) 一种程序镜像构建方法、系统、计算设备及可读存储介质
JP2007528064A (ja) 無線装置オペレーティング環境における未検証プログラムの実行
CN118797721A (zh) 一种智能合约虚拟机系统及智能合约执行方法
CN115456623A (zh) 区块链交易验证方法、装置、存储介质及电子设备
JP2010140233A (ja) エミュレーションシステム及びエミュレーション方法
CN113742668B (zh) 信息获取方法、装置、计算机设备和计算可读存储介质
CN118708196A (zh) 应用搬家方法及相关装置
CN109388919B (zh) 一种安卓art虚拟机中动态加载加密后插件的解决方法
CN116737272A (zh) 一种应用启动方法、装置、电子设备及计算机可读介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140820

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140829

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141002

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141112

R150 Certificate of patent or registration of utility model

Ref document number: 5650240

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

LAPS Cancellation because of no payment of annual fees