JP6352486B2 - コールバックによるisaブリッジング - Google Patents

コールバックによるisaブリッジング Download PDF

Info

Publication number
JP6352486B2
JP6352486B2 JP2017078938A JP2017078938A JP6352486B2 JP 6352486 B2 JP6352486 B2 JP 6352486B2 JP 2017078938 A JP2017078938 A JP 2017078938A JP 2017078938 A JP2017078938 A JP 2017078938A JP 6352486 B2 JP6352486 B2 JP 6352486B2
Authority
JP
Japan
Prior art keywords
instruction set
library
set architecture
emulator
callback
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
JP2017078938A
Other languages
English (en)
Other versions
JP2017142842A (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 インテル コーポレイション
Priority to JP2017078938A priority Critical patent/JP6352486B2/ja
Publication of JP2017142842A publication Critical patent/JP2017142842A/ja
Application granted granted Critical
Publication of JP6352486B2 publication Critical patent/JP6352486B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

ここに与えられる背景の説明は、開示のコンテクストを全体的に提示するためのものである。特段の断りがない場合、このセクションにおいて説明される題材は、本出願の請求項に対する従来技術でなく、本セクションに含めることによって従来技術として自認されない。
計算装置は、それの命令セットアーキテクチャ(ISA)により特徴付けされる。典型的には、計算装置は、オペレーティングシステム(OS)サービスを含み、OSサービスは、アプリケーションの開発者が計算装置上で実行されるアプリケーションを開発することを容易にするため、計算装置のISAのために開発されたランタイムライブラリサービス(LIB)を含む。例えば、各種スマートフォンは、ARMプロセッサとそれのISAを利用することによって特徴付けされる。これらのスマートフォンは、各スマートフォンについて開発された各種アプリケーションのサポートにおいてiOSやAndroidなどのOSを含む。ある計算装置は、Java(登録商標)やAndroid Application FrameworkなどのISAから独立した実行環境を提供する。しかしながら、多数のアプリケーションが、ISAに依存したランタイムライブラリのサービスを呼び出すISA依存部分を含む。さらに、これらのISA依存部分は、しばしばISAに依存したランタイムライブラリからのコールバックを求めるコールバックファンクションを含み、このようなコールバックは、ランタイムまでしばしば検出されず、バイナリ変換などの従来のアプローチをニーズに対処するのに不適切なものにする。
本発明の実施例は、限定することなく、同様の参照が同様の要素を示す添付図面に示される実施例により説明される。
図1は、コールバックによるISAブリッジングが搭載された一例となる計算装置を示す。 図2は、図1のISAブリッジングレイヤをさらに詳細に示す。 図3は、ソースISAのアプリケーションとターゲットISAのライブラリサービスとの間でコール及びコールバックをブリッジングする方法を示す。 図4は、ソースISAのアプリケーションとターゲットISAのライブラリサービスとの間でコール及びコールバックをブリッジングする方法を示す。 図5は、本開示の実施例により全てが構成される図3及び4の方法の全ての又は選択された側面を実施するよう構成される命令を有する一例となる非一時的なコンピュータ可読記憶媒体を示す。
コールバックによるISAブリッジングに関連する方法、装置及び記憶媒体が開示される。各種実施例では、少なくとも1つのコンピュータ可読記憶媒体は、命令の実行に応答して、アプリケーションのコールバックファンクションをコールバックするためのライブラリサービスを実現するため、ターゲットISAを備えたターゲット装置がターゲット装置に対するISAブリッジングレイヤを提供することを可能にするよう構成される命令を有する。ライブラリサービスは、ターゲットISAについて実現され、アプリケーションは、ターゲットISAと異なるソースISAについて少なくとも部分的に実現されてもよい。ISAブリッジングレイヤは、アプリケーションがライブラリサービスをコールし、ライブラリサービスが2つの命令セットアーキテクチャ間でコールバックファンクションをコールバックすることを可能にするよう連携するよう構成されるソースISAエミュレータとライブラリエミュレータとを有してもよい。
例示的な実施例の各種態様が、他の当業者に当業者が自分の作業の本質を伝えるため一般に利用される用語を用いて説明される。しかしながら、他の実施例は説明された態様の一部のみにより実施されてもよいことが当業者に明らかであろう。説明のため、例示的な実施例の完全な理解を提供するため、具体的な数字、題材及びコンフィギュレーションが提供される。しかしながら、他の実施例はこれら具体的な詳細になしに実施可能であることが、当業者に明らかであろう。他の例では、周知の特徴は、例示的な実施例を不明瞭にしないように省略又は簡単化される。
各種処理が、例示的な実施例を理解するのに最も役立つ方法により複数の別々の処理として説明される。しかしながら、説明の順序は、これらの処理が必ずしも順序に依存することを意味するように解釈されるべきでない。特に、これらの処理は、提示の順序で実行される必要はない。さらに、別々の処理としての処理の説明は、当該処理が独立の及び/又は別々のエンティティにより実行される必要があることを要求するものとして解釈されるべきでない。別々のモジュールとしてのエンティティ及び/又はモジュールの説明は、これらのモジュールが別々のものであり、及び/又は別々の処理を実行することを要求するものとして解釈されるべきでない。各種実施例では、図示及び/又は説明された処理、エンティティ、データ及び/又はモジュールは、マージ、さらなるサブパーツに分割及び/又は省略されてもよい。
“一実施例では”又は“実施例では”というフレーズは、繰り返し利用される。これらのフレーズは、一般に同一の実施例を参照するものでないが、参照してもよい。特段の断りがない場合、“有する”及び“含む”という用語は同義的である。フレーズ“A/B”は、“A又はB”を意味する。フレーズ“A及び/又はB”は、“(A),(B)又は(A及びB)”を意味する。“A、B及びCの少なくとも1つ”というフレーズは、“(A),(B),(C),(A及びB),(A及びC),(B及びC)又は(A,B及びC)”を意味する。
図1は、本開示の各種実施例によるコールバックによるISAブリッジングを搭載した一例となる計算装置を示す。図示されるように、例示的な実施例について、計算装置102は、図示されるように互いに接続される、オペレーティングシステム(OS)122、ISAブリッジングレイヤ123及びそこで実行されるアプリケーション120、グラフィック処理ユニット(GPI)106、ディスプレイユニット108及びネットワーキングインタフェース110を有するよう構成されるプロセッサメモリ構成104を有する。OS122は、サービス124のライブラリを含む。さらに、計算装置102はまた、アプリケーション120とOS122との間の任意的なミドルウェア121を有してもよい。以下でより詳細に説明されるように、ISAブリッジングレイヤ123は、アプリケーション120が全体的に又は部分的に(例えば、ISAに独立したミドルウェア121がまた利用されるときなど)ソースISAにおいて実現されることを可能にするための各種ランタイム機能及びサービス(限定することなく、ダイナミックバインディングなどを含む)を備えるよう構成され、OS122(ライブラリサービス124を含む)は、ソースISAと異なるターゲットISAにおいて実現されてもよい。さらに、アプリケーション120は、ライブラリサービス124の各種サービスが各種状態の下でアプリケーション120の各種コールバックファンクション125をコールバックすることを要求するライブラリファンクション125をコールバックすることを要求するライブラリサービス124の利用特性を含むアプリケーション(特に、ソースISAを用いて実現される部分)であってもよい。ISAブリッジングレイヤ123はまた、プロセスバーチャルマシーン(PVM)と呼ばれてもよい。
計算装置102は、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、PDA(Personal Digital Assistant)、ゲームコンソール、インターネット機器又は同様の他の計算装置であってもよい。計算装置102の具体例は、限定することなく、カリフォルニア州のPalo AltoのHewlett Packardから入手可能なサーバ、テキサス州のAustinのDell Computerから入手可能なデスクトップ又はラップトップコンピュータ、カリフォルニア州のCupertinoのApple Computerから入手可能なスマートフォン及び計算タブレット、日本の東京の任天堂から入手可能なゲームコンソールなどを含むものであってもよい。
プロセッサメモリ構成104は、限定することなく、各種実行速度及び電力消費のシングル又はマルチコアプロセッサ、及びDRAM、FLASHなどの各種タイプの1以上のレベルのキャッシュを備えた各種アーキテクチャのメモリと備えた構成を含む広範なプロセッサメモリ構成を表すことが意図される。各種実施例では、GPU106は、OS122に対してビデオ復号化及び/又はグラフィック処理ファンクションを提供するよう構成され、ディスプレイユニット108は、HDビデオなどのマルチメディアコンテンツが再生されるのを可能にするよう構成される。同様に、GPU106及びディスプレイユニット108は、当該技術において知られる広範なグラフィックプロセッサ及びディスプレイ要素を表すことが意図される。同様に、ネットワーク134は、当該技術において知られる広範なネットワークを表すことが意図される。ネットワーク134の具体例は、有線又は無線、ローカル又はワイドエリア、プライベート又はインターネットを含むパブリックネットワークを含むものであってもよい。
OS122(ライブラリサービス124を含む)は、ライブラリサービス124の呼び出しを規定するアプリケーションプログラミングインタフェース(API)の除き、当該技術において知られる広範なオペレーティングシステム要素を表すことが意図される。OS122は、メモリリソースを管理し、タスクの実行をスケジューリングするよう構成されるカーネル、各種デバイスリソースを管理するよう構成されるデバイスドライバなどの従来のコンポーネントを含むものであってもよい。実施例では、OS122は、AndroidアプリケーションフレームワークのサポートにおけるAndroidのバーチャルマシーンなど、ミドルウェア121(利用される場合)のサポートにおけるバーチャルマシーンを含むものであってもよい。実施例について、アプリケーション120のコールバックファンクション125の呼び出しを実行するため、ライブラリサービス124の呼び出しを規定することに加えて、ライブラリサービス124のAPIはまた、アプリケーション120のコールバックファンクション125の対応するスタブ及びシグネチャを有してもよい。OS122の具体例は、限定することなく、ワシントン州のRedmondのMicrosoft Corporationから入手可能なWindows(登録商標)オペレーティングシステム、ノースカロライナ州のRaleighのRed Hat(登録商標)などから入手可能なLinux(登録商標)、Open Handset Allianceにより開発されたAndroidTM、又はカリフォルニア州のCupertinoのApple(登録商標) Computerから入手可能なiOSを含むものであってもよい。
同様に、ミドルウェア121は、限定することなく、ISAから独立したミドルウェアを含む当該技術において知られる広範なミドルウェア要素を表すことが意図される。ミドルウェア121の具体例は、限定することなく、Androidアプリケーションフレームワーク、Java(登録商標)又は他のアプリケーションフレームワーク又はISAから独立した実行環境を含むものであってもよい。
同様に、アプリケーション120(コールバックファンクション125を含む)は、当該技術において知られる広範なアプリケーションを表すことが意図される。アプリケーション120の具体例は、限定することなく、カレンダ、ワードプロセッシング、スプレッドシート、Twitter、Facebookなどのパーソナルアシスタント、プロダクティビティ又はソーシャルネットワーキングアプリケーション、又はブラウザなどの汎用アプリケーションエージェントを含むものであってもよい。ブラウザの具体例は、限定することなく、ワシントン州のRedmondのMicrosoft Corporationから入手可能なInternet Explorer又はカリフォルニア州のMountain ViewのMozillaから入手可能なFirefoxを含むものであってもよい。
図2を参照して、本開示の各種実施例による一例となるISAブリッジングレイヤ123が示される。図示されるように、実施例について、ISAブリッジングレイヤ123は、限定することなく、ダイナミックバインディングサービスを含む各種ランタイム機能及びサービスを提供するよう構成されるISAブリッジングローダ202、ソースISAエミュレータ204及びターゲットISAライブラリエミュレータ206(以降、単にLIBエミュレータ)を有してもよい。ソースISAエミュレータ204は、ソースISAコンテクスト212及びバイナリ変換エンジン215を有する。ソースISAエミュレータ204は、ソースISAコンテクスト212において、限定することなく、現在の実行命令ポインタ(IP)などを含むソースISAアーキテクチャの実行コンテクストを維持する。バイナリ変換エンジン215は、ソースISA命令をターゲットISA命令に変換するよう構成される。LIBエミュレータ206は、ターゲットISAライブラリ(LIB)コンテクスト222、ゲート224及びラッパファンクション226を有する。LIBエミュレータ206は、ターゲットISAライブラリ(LIB)コンテクスト222において、ターゲットISAライブラリの実行コンテクストを維持する。各種実施例では、ソース及びターゲットISAアーキテクチャにおいてアプリケーション120によるライブラリサービス124の呼び出しを実行するよう構成される、ライブラリサービス124毎のゲート224及びラッパファンクション226の対応するペアがあってもよい。同様に、ターゲット及びソースISAアーキテクチャにおいてライブラリサービス124によるコールバックファンクション125のコールバックを実現するよう構成される、コールバックファンクション125毎のゲート224及びラッパファンクション226の対応するペアがあってもよい。
ISAブリッジングローダ202は、アプリケーション120をロードするよう構成される。アプリケーション120をロードする際、ISAブリッジングローダ202は、コール元のライブラリサービスに関するアプリケーション120の何れか未定なシンボリックネームをライブラリサービス124の適切なサービスに決定するよう構成される。実施例では、ISAブリッジングローダ202は、コール元のライブラリサービスに関連するアプリケーション120の未定なシンボリックネームをライブラリサービス124の対応するゲート224のアドレスに決定するよう構成されてもよい。さらに、ISAブリッジングローダ202は、コールバックファンクション125のシンボリックネーム又はリファレンスを内部ネームに変更し、シンボリックネーム又はリファレンスを対応するラッパファンクション226に対するコールバックファンクション125に関連付けるよう構成されてもよい。
ISAブリッジングローダ202は、複数の既知の方法の何れかによってOS122(又は使用される場合、ミドルウェア121)のローダからのロード処理の制御を取得する。このような既知の方法の具体例は、OS122又はミドルウェア121によりサポートされるとき、バイナリフォーマットベースの制御移転又はロード/プレロード変数の利用を含む。他の実施例では、OS122(又は使用される場合、ミドルウェア121)のローダが、代わりにISAブリッジングローダ202への制御の移転を実行するよう変更されてもよい。
上述されるように、ソースISAエミュレータ204は、ソースISA実行コンテクスト212を維持するよう構成される。ソースISAエミュレータ204は、アプリケーション120の実行中にソースISA IP(命令ポインタ)をトラッキングするよう構成されてもよい。アプリケーション120がライブラリサービス124を呼び出すことを試みるとき、ソースISA実行をモニタリングするソースISAエミュレータ204が代わりに、LIBエミュレータ206への実行制御の呼び出し及び移転してもよい。各種実施例では、ソースISAエミュレータ204は、ライブラリサービス124の対応するゲート224に対して実行制御を呼び出し及び移転してもよい。
LIBエミュレータ206は、同様にターゲットISAライブラリ(LIB)実行コンテクスト222を維持するよう構成されてもよい。
ライブラリサービス124に対応するゲート224は、ライブラリサービス124に対するコールを対応するラッパファンクション226にそれぞれリダイレクトし、当該コールを処理及び設定するよう構成されてもよい。一方、コールバックファンクション125に対応するゲート224は、対応するラッパファンクション226からソースISAエミュレータ204へのコールバックの実行制御をそれぞれ移転するよう構成されてもよい。各種実施例では、各ゲート224は、対応するラッパファンクション226又はソースISAエミュレータ204へのリダイレクトを実行するよう構成される命令を有してもよい。各種実施例では、各ゲート224の命令は、実行制御リダイレクションを実現するため、バイナリ変換エンジン215と連携するよう構成されるソースISA命令であってもよい。各種実施例では、各ゲート224は更に、対応するラッパファンクション226を特定するインジケータを有してもよい。
各種実施例では、対応するライブラリサービス124に対するコールを処理及び設定するため、ライブラリサービス124に対応する各ラッパファンクション226は、ソースISAコンテクスト212からコールの関連するパラメータ値を抽出し、当該コールをソースISAアプリケーションバイナリインタフェース(ABI)フォーマットからターゲットISA ABIフォーマットに変換し、変換されたコールをパラメータ値と共にLIBコンテクスト222に保存するよう構成されてもよい。
コールバックファンクション125に対するコールバックに対して、実行制御は、コールバックファンクション125の対応するラッパファンクション226に移転されてもよい。各種実施例では、アプリケーション120のコールバックファンクション125に対するコールバックを処理及び設定のため、コールバックファンクション125に対応する各ラッパファンクション226は、当該コールバックをターゲットISA ABIフォーマットからソースISA ABIフォーマットに変換し、コールバックの関連するパラメータ値をアタッチし、変換されたコールバックをパラメータ値と共にソースISAコンテクスト212に保存するよう構成されてもよい。
コールバックファンクション125に対応するゲート224は、ターゲットISAのソースISAフォーマットにおいて提示されるコールバックファンクションをエミュレートするため、コールバックファンクション125に対応するラッパファンクション226により準備されるソースISAコンテクストによってソースISAエミュレータ204を呼び出すよう構成されてもよい。
図3〜4を参照して、本開示の各種実施例によるコールバックによる一例となるISAブリッジング方法が示される。図示されるように、方法300は、コールを(ソースISAの)アプリケーション120から(ターゲットISAの)ライブラリサービス124にブリッジングするためのパート300aと、コールを(ターゲットISAの)ライブラリサービス124から(ソースISAの)アプリケーション120のコールバックファンクションにブリッジングするためのパート300bとの2つのパートを含むものであってもよい。
パート300aは、ブロック302から開始される。ブロック302において、ISAブリッジングローダ202はアプリケーション120をロードする。アプリケーション120をロードする際、上述されるように、ISAブリッジングローダ202は、ライブラリサービス124に対してアプリケーション120のシンボリックネーム又はリファレンスを決定し、コールバックファンクション125のシンボリックネーム又はリファレンスを修正してもよい。ブロック302から、パート300aは、ブロック304に移行する。ブロック304において、実行中に、アプリケーション120はライブラリサービス124の1つを呼び出してもよい。各種実施例では、アプリケーション120は、コールされたライブラリサービス124によるそれのコールバックファンクション125の1つに対するコールバックを要求してもよい。実施例では、アプリケーション120は、コールされたライブラリサービス124に対するコールの一部として、コールバックされるべきコールバックファンクション125に対するポインタを有してもよい。コールバックファンクション125に対するポインタをわたす代わりに、ライブラリサービス124のラッパファンクション226は、コールバックファンクション125の対応するラッパファンクション226をわたしてもよい。
ブロック304から、パーツ300aはブロック306に移行する。ブロック306において、ソースISAエミュレータ204は、例えば、ソースISA IPをモニタリングし、IPがターゲットライブラリのアドレス範囲内のアドレスを参照していると判断することによってコールを検出すると、当該コールをリダイレクトし、LIBエミュレータ206のライブラリサービス124の対応するゲート224に対して実行制御を移転する。ブロック306から、パーツ300aはブロック308に移行する。ブロック308において、ゲート224は更に、当該コールをリダイレクトし、コールされたライブラリサービス124の対応するラッパファンクション226に対して実行制御を移転してもよい。ブロック308から、パーツ300aはブロック310に移行する。ブロック310において、上述されるように、コールされたライブラリサービス124のラッパファンクション226は当該コールを処理し、コールされたライブラリサービス124による実行のため、LIBコンテクスト222にコールを設定する。ブロック310から、パート300aはブロック312に移行する。ブロック312において、コールされたライブラリサービス124のゲート224は、LIBコンテクスト222から当該コールのリターン値を収集し、ソースISAコンテクスト212を更新し、ライブラリサービスのコールのリターン値をアプリケーション125に返すため、ソースISAエミュレータ202に対する実行制御を移転する。
図4を参照して、パーツ300bはブロック404において開始される。ブロック404において、コールされたライブラリサービス124の実行中又は終了すると、ライブラリサービス124は、アプリケーション120によりわたされたコールバックポインタをコールするなどによって、アプリケーション120のコールバックファンクション125をコールバックする。ブロック404から、パート300bは、コールバックポインタがコールバックファンクション125に対応するラッパファンクション226であるとき、ブロック406に移行する。ブロック406において、実行制御は、修正されたリファレンスに従って、コールバックファンクション125の対応するラッパファンクション226に移転されてもよい。ブロック406から、パート300bはブロック408に移行する。ブロック408において、ラッパファンクション226は、コールバックを処理し、上述されるように、アプリケーション120のコールバックファンクション125による実行のため、ソースISAコンテクスト212にコールバックを設定し、その後、コールバックファンクション125の対応するゲート224に対して実行制御を移転する。ブロック408から、パート300bはブロック410に移行する。ブロック410において、コールバックファンクション125に対応するゲート224は、コールバックをリダイレクトし、ラッパファンクション226による準備されるソースISAコンテクストによってISAエミュレータに対して実行制御を移転する。
さらに、ブロック412において、ソースISA IPをモニタリングし、当該IPがコールバックファンクション125に対応するゲート224のアドレス範囲内のアドレスを参照していると判断するなどによってコールを検出すると、ソースISAエミュレータ204は、エミュレーションを継続するため、ソースISA IPをコールバックファンクションにリダイレクトする。ブロック412から、パート300bはブロック414に移行する。ブロック414において、コールバックファンクション125のゲート224は、ソースISAコンテクスト212からコールバックのリターン値を収集し、LIBコンテクスト222を更新し、ライブラリサービス124にコールバックファンクション125のリターン値を返すため、LIBエミュレータ204に対して実行制御を移転する。
図5は、本開示の各種実施例による図3及び4の方法の全て又は選択された態様を実施するよう構成される命令を有する一例となる非一時的なコンピュータ可読記憶媒体を示す。図示されるように、非一時的なコンピュータ可読記憶媒体502は、複数のプログラミング命令504を有する。プログラミング命令504は、計算装置102などの計算装置が、プログラミング命令の実行に応答して、図3及び4を参照して上述された方法300のISAブリッジング処理の全て又は選択された態様を実行することを可能にするよう構成される。他の実施例では、プログラミング命令504は、複数の非一時的なコンピュータ可読記憶媒体502に配置されてもよい。
図1を再び参照して、一実施例について、プロセッサメモリ構成104のプロセッサの少なくとも1つは、図3及び4の方法300の処理(又はそれの一部)を実行するよう構成されるISAブリッジングレイヤ123の計算ロジック(又はそれの一部)と共にパッケージングされてもよい。一実施例について、プロセッサメモリ構成104のプロセッサの少なくとも1つは、システム・イン・パッケージ(SiP)を構成するため、図3及び4の方法300の処理(又はそれの一部)を実行するよう構成されるISAブリッジングレイヤ123の計算ロジック(又はそれの一部)と一緒にパッケージングされてもよい。一実施例について、プロセッサメモリ構成104のプロセッサの少なくとも1つは、図3及び4の方法300の処理(又はそれの一部)を実行するよう構成されるISAブリッジングレイヤ123の計算ロジック(又はそれの一部)と同一ダイ上で統合されてもよい。一実施例について、プロセッサメモリ構成104のプロセッサの少なくとも1つは、システム・オン・チップ(SoC)を構成するため、図3及び4の方法の処理(又はそれの一部)を実行するよう構成されるISAブリッジングレイヤ123の計算ロジック(又はそれの一部)と同一ダイ上に統合されてもよい。少なくとも1つの実施例について、SoCは、デスクトップコンピュータ、ラップトップコンピュータ、スマートフォン、計算タブレット、インターネット機器、PDA(Personal Digital Assistant)、ポータブルゲーム再生装置、サーバ又は他の計算装置において利用されてもよい。
図1を更に参照して、理解の簡単化のため、本開示は1つのソースISAを1つのターゲットISAにブリッジングする1つのISAブリッジングレイヤ123により説明された。しかしながら、本開示はこれに限定されるものでない。実施例では、複数の異なるISAブリッジングレイヤ123が、複数の異なるソースISAをターゲットISAにブリッジングするため設けられてもよい。これらの実施例のいくつかについて、要求されたブリッジングを検出するためディスパッチャが更に設けられてもよく、要求されたISAブリッジングを提供するため、適切なISAブリッジングレイヤ123をインスタンス化する。
さらに、各種実施例では、本開示は、必要とされるブリッジング量を低減するため、(ソースISAにおける)アプリケーション120の部分について(ターゲットISAにおいて)代替されるバイナリにより実現されてもよい。他の実施例では、ラッパファンクションの一部などのブリッジングに用いられるリソースの一部は、ISAブリッジングレイヤ123にアクセス可能なリモートサーバに配置されてもよい。
さらに、理解の簡単化のため、ISAブリッジングレイヤ123は、異なるソースISAとターゲットISAとをブリッジングするよう構成されるものとして説明された。しかしながら、本開示はこれに限定されるものでない。各種アプリケーションについて、ISAブリッジングレイヤ123は、同一のソースISAとターゲットISAとをブリッジングするのに利用されてもよい。このようなアプリケーションでは、バイナリ変換エンジン215などの説明された要素の1以上が必要とされない可能性がある。このようなアプリケーションの具体例は、計算装置102に対するエンハンスされた動作セキュリティを提供するものであってもよい。他のアプリケーションは、同様に当該ブリッジングから利用してもよい。
従って、特定の実施例がここに図示及び説明されたが、図示及び説明された特定の実施例について広範な他の及び/又は等価な実現形態が置換されてもよいことが、当業者により理解されるであろう。
従って、本開示は、あるISAサポートアプリケーションコールされたバイナリサービスからコールバックを時々要求する利用特性を有する他のISAのために開発されたISAサポートアプリケーションを備えた計算装置の技術的問題に対する解決手段であってもよいことが理解されるであろう。本開示の効果は、限定することなく、計算装置のISAにおいてアプリケーションをフルに変換又は再実現するための必要性を回避することを含むものであってもよい。
本開示は、計算装置に対してエンハンスされたセキュリティを提供する技術的問題に対する解決手段であってもよいことが理解されるであろう。本開示の効果は、限定することなく、提供されるアイソレーションのロウバスト性を含むものであってもよい。

Claims (18)

  1. ターゲット命令セットアーキテクチャをサポートするターゲットコンピュータプロセッサを備えたターゲット装置に、前記ターゲット装置上に実行されるアプリケーションによってコールされる前記ターゲット装置のライブラリのライブラリサービスを実行し、前記アプリケーションのコールバックファンクションをコールバックするため、命令セットアーキテクチャブリッジングレイヤを前記ターゲット装置に提供させるプログラムであって、
    前記ライブラリサービスは前記ターゲット命令セットアーキテクチャについて実現され、前記アプリケーションはソースコンピュータプロセッサのソース命令セットアーキテクチャについて少なくとも部分的に実現され、
    前記ソース及びターゲットコンピュータプロセッサのソース及びターゲット命令セットアーキテクチャは、異なるコンピュータプロセッサファミリの異なるコンピュータプロセッサ命令セットアーキテクチャであり、
    前記命令セットアーキテクチャブリッジングレイヤは、前記ソース及びターゲット命令セットアーキテクチャにわたって、前記アプリケーションが前記ライブラリサービスを可能にし、前記ライブラリサービスが前記コールバックファンクションをコールバックすることを可能にするためそれぞれと連携するライブラリエミュレータとソース命令セットアーキテクチャエミュレータとを有し、
    前記ソース命令セットアーキテクチャエミュレータは前記ソース命令セットアーキテクチャの実行コンテクストを維持し、前記ライブラリエミュレータはライブラリ実行コンテクストを維持し、
    前記ライブラリエミュレータは更に、前記ライブラリサービスに対応するラッパファンクションにコールをリダイレクトする前記ライブラリサービスに対応するゲートを有し、前記ライブラリサービスに対応するラッパファンクションは、前記コールを処理し、前記ライブラリ実行コンテクストにおいて前記コールを設定するプログラム。
  2. 前記ゲートは第1のゲートであり、
    前記ライブラリエミュレータは更に、前記ソース命令セットアーキテクチャエミュレータにコールバックをリダイレクトする前記コールバックファンクションに対応する第2のゲートを有する、請求項1記載のプログラム。
  3. 前記ラッパファンクションは第1のラッパファンクションであり、
    前記ライブラリエミュレータは更に、前記コールバックを処理し、前記ソース命令セットアーキテクチャの実行コンテクストにおいて前記コールバックを設定し、前記コールバックファンクションに対応する前記ライブラリエミュレータのゲートに前記コールバックをリダイレクトする前記コールバックファンクションに対応する第2のラッパファンクションを有する、請求項1記載のプログラム。
  4. 前記命令セットアーキテクチャブリッジングレイヤは更に、ローダを有し、
    前記ローダは、前記アプリケーションをロードし、前記ライブラリエミュレータが前記コールを可能にするのに介入することを可能にする方法で前記ライブラリサービスを参照するシンボル名を修正する、請求項1記載のプログラム。
  5. 前記ローダは更に、前記ソース命令セットアーキテクチャエミュレータが前記コールバックを可能にするのに介入することを可能にする方法で前記アプリケーションのコールバックファンクションを参照するシンボル名を修正する、請求項4記載のプログラム。
  6. コールバックによってソースコンピュータプロセッサのソース命令セットアーキテクチャをターゲットコンピュータプロセッサのターゲット命令セットアーキテクチャにブリッジする方法であって、
    前記ソース及びターゲットコンピュータプロセッサのソース及びターゲット命令セットアーキテクチャは、異なるコンピュータプロセッサファミリの異なるコンピュータプロセッサ命令セットアーキテクチャであり、
    当該方法は、
    計算装置の命令セットアーキテクチャブリッジングレイヤのソース命令セットアーキテクチャエミュレータが、ソース命令セットアーキテクチャ実行コンテクストを維持するステップであって、前記計算装置は前記ターゲット命令セットアーキテクチャにより実現されるライブラリサービスを有し、前記計算装置は前記ターゲットコンピュータプロセッサを有する、維持するステップと、
    前記計算装置の命令セットアーキテクチャブリッジングレイヤのライブラリエミュレータが、ライブラリ実行コンテクストを維持し、前記ライブラリサービスをコールするため、前記計算装置上で実行され、前記ソース命令セットアーキテクチャにより少なくとも部分的に実現されるアプリケーションと、前記ソース及びターゲット命令セットアーキテクチャにわたって、前記アプリケーションのコールバックファンクションをコールバックするために前記ライブラリサービスとを実行するように前記ソース命令セットアーキテクチャエミュレータと前記ライブラリエミュレータとの間で連携するステップであって、前記連携は、前記ライブラリサービスに対応するライブラリエミュレータのゲートが前記ライブラリサービスに対応するラッパファンクションに前記コールをリダイレクトすることを含む、維持するステップと、
    前記ライブラリサービスに対応するラッパファンクションが、前記コールを処理し、前記ライブラリ実行コンテクストにおいて前記コールを設定するため処理するステップと、
    を有する方法。
  7. 前記ラッパファンクションは第1のラッパファンクションであり、
    当該方法は更に、前記コールバックファンクションに対応するライブラリエミュレータの第2のラッパファンクションに前記コールバックをリダイレクトし、前記コールバックを処理し、前記ソース命令セットアーキテクチャの実行コンテクストにおいて前記コールバックを設定するステップを有する、請求項6記載の方法。
  8. 前記ゲートは第1のゲートであり、
    当該方法は更に、前記コールバックファンクションに対応するライブラリエミュレータの第2のラッパファンクションに前記コールバックをリダイレクトし、前記コールバックを処理し、前記ソース命令セットアーキテクチャの実行コンテクストにおいて前記コールバックを設定するステップを有する、請求項6記載の方法。
  9. 前記ソース命令セットアーキテクチャエミュレータと前記ライブラリエミュレータとに関連するローダが、前記ライブラリエミュレータが前記コールを可能にするのに介入することを可能にする方法で前記ライブラリサービスを参照するシンボル名を修正することを含む、前記アプリケーションをロードするステップを更に有する、請求項6記載の方法。
  10. 前記ローダが、前記ソース命令セットアーキテクチャエミュレータが前記コールバックを可能にするのに介入することを可能にする方法で前記アプリケーションのコールバックファンクションを参照するシンボル名を修正するステップを更に有する、請求項9記載の方法。
  11. ソースコンピュータプロセッサのソース命令セットアーキテクチャにより少なくとも部分的に実現されるアプリケーションを実行する装置であって、
    ターゲット命令セットアーキテクチャを有するターゲットコンピュータプロセッサとメモリ構成であって、前記ソース及びターゲットコンピュータプロセッサのソース及びターゲット命令セットアーキテクチャは、異なるコンピュータプロセッサファミリの異なるコンピュータプロセッサ命令セットアーキテクチャである、ターゲットコンピュータプロセッサとメモリ構成と、
    ソース命令セットアーキテクチャエミュレータとライブラリエミュレータとを有する命令セットアーキテクチャブリッジングレイヤであって、前記ソース及びターゲット命令セットアーキテクチャにわたって、前記ソース命令セットアーキテクチャにより少なくとも部分的に実現されるアプリケーションが前記ターゲット命令セットアーキテクチャにより実現される前記装置のライブラリサービスをコールすることを可能にし、前記ライブラリサービスが前記装置のコールバックファンクションをコールバックすることを可能にするよう連携するため、前記ターゲットコンピュータプロセッサ及びメモリによって実行される命令セットアーキテクチャブリッジングレイヤと、
    を有し、
    前記ソース命令セットアーキテクチャエミュレータは前記ソース命令セットアーキテクチャの実行コンテクストを維持し、前記ライブラリエミュレータはライブラリ実行コンテクストを維持し、
    前記ライブラリエミュレータは更に、前記ライブラリサービスに対応するラッパファンクションに前記コールをリダイレクトする前記ライブラリサービスに対応するゲートを有し、
    前記ライブラリエミュレータは更に、前記ライブラリサービスに対応するラッパファンクションを有し、前記ラッパファンクションは、前記コールを処理し、前記ライブラリ実行コンテクストにおいて前記コールを設定する装置。
  12. 前記ゲートは第1のゲートであり、
    前記ライブラリエミュレータは更に、前記ソース命令セットアーキテクチャエミュレータに前記コールバックをリダイレクトする前記コールバックファンクションに対応する第2のゲートを有する、請求項11記載の装置。
  13. 前記ラッパファンクションは第1のラッパファンクションであり、
    前記ライブラリエミュレータは更に、前記コールバックを処理し、前記ソース命令セットアーキテクチャの実行コンテクストにおいて前記コールバックを設定し、前記コールバックファンクションに対応する前記ライブラリエミュレータのゲートに前記コールバックをリダイレクトする前記コールバックファンクションに対応する第2のラッパファンクションを有する、請求項11記載の装置。
  14. 前記命令セットアーキテクチャブリッジングレイヤは更に、ローダを有し、
    前記ローダは、前記アプリケーションをロードし、前記ライブラリエミュレータが前記コールを可能にするのに介入することを可能にする方法で前記ライブラリサービスを参照するシンボル名を修正する、請求項11記載の装置。
  15. 前記ローダは更に、前記ソース命令セットアーキテクチャエミュレータが前記コールバックを可能にするのに介入することを可能にする方法で前記アプリケーションのコールバックファンクションを参照するシンボル名を修正する、請求項14記載の装置。
  16. 前記ライブラリサービスを有するオペレーティングシステムを更に有する、請求項11記載の装置。
  17. 命令セットアーキテクチャから独立したアプリケーション実行環境を更に有し、
    前記アプリケーションは更に、前記命令セットアーキテクチャから独立したアプリケーション実行環境の少なくとも1つの他のサービスを利用する、請求項11記載の装置。
  18. 請求項1乃至5何れか一項記載のプログラムを記憶するコンピュータ可読記憶媒体。
JP2017078938A 2017-04-12 2017-04-12 コールバックによるisaブリッジング Active JP6352486B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017078938A JP6352486B2 (ja) 2017-04-12 2017-04-12 コールバックによるisaブリッジング

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017078938A JP6352486B2 (ja) 2017-04-12 2017-04-12 コールバックによるisaブリッジング

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2014550609A Division JP2015507269A (ja) 2012-01-10 2012-01-10 コールバックによるisaブリッジング

Publications (2)

Publication Number Publication Date
JP2017142842A JP2017142842A (ja) 2017-08-17
JP6352486B2 true JP6352486B2 (ja) 2018-07-04

Family

ID=59628688

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017078938A Active JP6352486B2 (ja) 2017-04-12 2017-04-12 コールバックによるisaブリッジング

Country Status (1)

Country Link
JP (1) JP6352486B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04123144A (ja) * 1990-09-13 1992-04-23 Toshiba Corp デバッグ装置
US20020069402A1 (en) * 2000-10-05 2002-06-06 Nevill Edward Colles Scheduling control within a system having mixed hardware and software based instruction execution
US7107584B2 (en) * 2001-10-23 2006-09-12 Microsoft Corporation Data alignment between native and non-native shared data structures
WO2006040506A1 (en) * 2004-10-12 2006-04-20 Picsel (Research) Limited Run tune dynamic linking
GB2426840A (en) * 2005-06-04 2006-12-06 Transitive Ltd Method of executing program code where a portion of the target code calls a native code portion which then calls a second target code portion.

Also Published As

Publication number Publication date
JP2017142842A (ja) 2017-08-17

Similar Documents

Publication Publication Date Title
JP5976930B2 (ja) バーチャルファンクションを無効にするコールのためのサポートを含むisaブリッジング
US9513977B2 (en) ISA bridging with callback
US10761867B2 (en) Nested emulation and dynamic linking environment
US8266618B2 (en) Graphics hardware resource usage in a fully virtualized computing environment
US10191774B2 (en) Hardware acceleration of web applications
US20130167150A1 (en) Application Management
US9778942B2 (en) Generating a replacement binary for emulation of an application
CN108376066B (zh) 代码处理装置及代码处理方法
TWI590073B (zh) 用於提供存取虛擬命名空間中資源的虛擬整合呼叫
US20140222410A1 (en) Hybrid emulation and kernel function processing systems and methods
US9830307B1 (en) Ahead of time compilation of content pages
JP2009516296A (ja) 非同期ジャストインタイムコンパイル
JP6352486B2 (ja) コールバックによるisaブリッジング
US20160019193A1 (en) Converting terminal-based legacy applications to web-based applications
Liu et al. KMRE: An Efficient and Compatible Runtime to Execute Android Application on Linux System
Heidari Android Elastic Service Execution and Evaluation

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180423

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180606

R150 Certificate of patent or registration of utility model

Ref document number: 6352486

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250