(57)【特許請求の範囲】
【請求項１】
複数のアプリケーションが実行される高レベルのソフトウェアスタックと、
ハードウェアプラットフォームタイプを有する、基礎となるハードウェアプラットフォームと、
前記高レベルのソフトウェアスタックと前記基礎となるハードウェアプラットフォームとの間に存在し、前記複数のアプリケーションのうちの２つ又はそれ以上が、前記ハードウェアプラットフォームタイプとは独立に、前記基礎となるハードウェアプラットフォームと対話するのを可能にするように構成される、ミドルウェア層と
を備え、前記ミドルウェア層は、命令セットアーキテクチャ（ＩＳＡ）エミュレータを備える、デバイス。
【請求項２】
前記高レベルのソフトウェアスタック内に少なくとも１つのオペレーティングシステム（ＯＳ）を更に備える、請求項１に記載のデバイス。
【請求項３】
前記ハードウェアプラットフォームタイプは、ＡＲＭ命令セットアーキテクチャ（ＩＳＡ）を備える、請求項１に記載のデバイス。
【請求項４】
前記複数のアプリケーションは、ＡＲＭベースのアプリケーションを備え、前記ミドルウェア層は、前記ＡＲＭベースのアプリケーションが異なるアーキテクチャ上で実行することを可能にするように更に構成される、請求項１に記載のデバイス。
【請求項５】
前記ミドルウェア層は、オフロードされたレガシーの命令セットアーキテクチャを受け取るように更に構成される、請求項１に記載のデバイス。
【請求項６】
前記ミドルウェア層は、オフロードされた低性能の命令セットアーキテクチャを受け取るように更に構成される、請求項１に記載のデバイス。
【請求項７】
前記ミドルウェア層は、アーキテクチャ独立のバイナリトランスレータ／エミュレータを備える、請求項１に記載のデバイス。
【請求項８】
前記バイナリトランスレータ／エミュレータは、前記高レベルのソフトウェアスタックを対話するように構成される、請求項７に記載のデバイス。
【請求項９】
第１のソフトウェアアプリケーションを実行する第１のデバイスを備えるシステムであって、
前記第１のデバイスは、
ハードウェアプラットフォームタイプを有する、基礎となるハードウェアプラットフォームと、
前記第１のソフトウェアアプリケーションと前記基礎となるハードウェアプラットフォームとの間に存在するミドルウェア層とを備え、
前記第１のデバイスの前記ミドルウェア層は、命令セットアーキテクチャ（ＩＳＡ）エミュレータを備え、前記ハードウェアプラットフォームタイプに関わらず、前記第１のソフトウェアアプリケーションと、前記第１のデバイスとネットワーク接続される第２のデバイスにおいて実行される第２のソフトウェアアプリケーションとの間の対話を可能にするように構成される、
システム。
【請求項１０】
前記ミドルウェア層は、アーキテクチャ独立のバイナリトランスレータ／エミュレータを備える、請求項９に記載のシステム。
【請求項１１】
前記第１のデバイスと前記第２のデバイスの少なくとも一方は、モバイル電子デバイスである、請求項９に記載のシステム。
【請求項１２】
機械制御される方法であって、
第１のデバイス上の第１のソフトウェアスタック内で実行されている第１のソフトウェアアプリケーションから、第２のデバイスのミドルウェア層において、該第２のデバイス上の第２のソフトウェアスタック内で実行されている第２のソフトウェアアプリケーションと通信するよう求める要求を受信するステップであって、前記第１及び第２のデバイスは、それぞれ、ハードウェアプラットフォームタイプを有するハードウェアプラットフォームを備える、ステップと、
前記第２のデバイスの前記ミドルウェア層において、前記ハードウェアプラットフォームタイプに関わらず、前記要求を許可するステップと、
レガシー命令セットアーキテクチャ及び／又は低性能命令セットアーキテクチャを前記ミドルウェア層にオフロードするステップと、
を含む、方法。
【請求項１３】
プロセッサによって実行されると、該プロセッサに、
第１のデバイス上の第１のソフトウェアスタック内で実行されている第１のソフトウェアアプリケーションから、第２のデバイスのミドルウェア層において、該第２のデバイス上の第２のソフトウェアスタック内で実行されている第２のソフトウェアアプリケーションと通信するよう求める要求を受信するステップであって、前記第１及び第２のデバイスは、それぞれ、ハードウェアプラットフォームタイプを有するハードウェアプラットフォームを備える、ステップと、
前記第２のデバイスの前記ミドルウェア層により、前記ハードウェアプラットフォームタイプに関わらず、前記要求を許可するステップと、
レガシー命令セットアーキテクチャ及び／又は低性能命令セットアーキテクチャを前記ミドルウェア層にオフロードするステップと、
を実行させる、コンピュータプログラム。
【請求項１４】
前記プロセッサに更に、ＡＲＭベースのアプリケーションが異なるアーキテクチャ上で実行することを可能にさせる、請求項１３に記載のコンピュータプログラム。
【請求項１５】
請求項１３又は１４に記載のコンピュータプログラムを記憶する非一時的な機械読取可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
開示される技術は、一般に、ハードウェア／ソフトウェアのークテクチャに関し、より具体的には、プラットフォーム独立のアーキテクチャのためのミドルウェアに関する。
【背景技術】
【０００２】
現在、オペレーティングシステム（ＯＳ）及びソフトウェアアプリケーションのスタックはこれらが実行されるプラットフォームアーキテクチャに完全に縛られている。したがって、対応するバックエンドのアーキテクチャは、その特定のプラットフォームに固有のアプリケーションプログラミングインタフェース（ＡＰＩ）及び命令セットに基づいて開発されなければならず、これらから開始しなければならない。ネイティブのハードウェア及び命令セットが何らかの形で、アプリケーション／ＯＳスタックの必要性に適合するよう修正されない限り、プラットフォームは実行可能ではない可能性がある。
【０００３】
レガシーアプリケーションがレガシーの命令セットアーキテクチャ（ＩＳＡ：instruction  set  architecture）に依拠する場合、今日のプラットフォーム及びオペレーティングシステムには、ネイティブのもの以外に、このようなアプリケーションをサポートする方法がなく、双方による需要を増加させるだけであって、その結果、例えば効率の低下や電力消費の増加のような、複数のマイナスの結果のいずれかをもたらすこととなる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、改善されたハードウェア／ソフトウェアのアーキテクチャの必要性が、特にこれらの間に存在するミドルウェアに関して依然として存在する。
【課題を解決するための手段】
【０００５】
開示される技術の実施形態は、限定ではなく例として図面に例示されており、図面においては、同様の参照番号は類似の要素を示している。
【０００６】
開示される技術の特定の実施形態は、特定のハードウェア及び／又は命令セットアーキテクチャ（ＩＳＡ）について開発されたアプリケーションが、これらを実行しなければならないハードウェアプラットフォームのタイプとは独立に実行可能にされる、例えばサポートされることを可能にする。そのような実施形態は、ハードウェア設計の特殊性、並びに一部の場合においては対応するハードウェア及び／又はＩＳＡに依拠するアプリケーションをサポートするのに必要な対応するオーバヘッドを取り除くように機能し得る。
【図面の簡単な説明】
【０００７】
【図１】現在のプラットフォーム依存のハードウェア／ソフトウェアアーキテクチャの例を示すブロック図である。
【図２】開示される技術の特定の実施形態による、プラットフォーム独立のハードウェア／ソフトウェアアーキテクチャの例を示すブロック図である。
【図３】図２のプラットフォーム独立のアーキテクチャにおけるミドルウェア層のような、開示される技術の特定の実施形態によるミドルウェア層の例を示す図である。
【図４】開示される技術の実施形態の特定の態様が実装され得るデバイスの例を示す図である。
【図５】開示される技術の特定の実施形態による、ネットワーク化されたシステムの例を示すブロック図である。
【発明を実施するための形態】
【０００８】
特定の実装は、高レベルのアプリケーション／ＯＳスタックと、対応するプラットフォームアーキテクチャとの間のトランスレータとして動作する、柔軟かつ適応的で容易に修正可能なバイナリのエミュレータを用いることを含む。プラットフォームで実行されるアプリケーションの観点から、このミドルウェア層は、ハードウェアを抽象化して、例えば標準のインタフェース等の汎用インタフェース又はこれらのアプリケーションが通信するのに用いることが可能なプログラム可能なエミュレータインタフェースのいずれかを提供してもよい。そのような実施形態は、例えばプラットフォームがＡＲＭであるか、ＩＡ  ＩＳＡであるかに関わらず、あるいは実質的に任意のタイプのアーキテクチャであるかに関わらず、アプリケーションが、プラットフォーム上のネイティブのハードウェアと対話するのを可能にする。
【０００９】
特定の実装は、全ての対応するアプリケーションを、例えばＡＲＭ又は何らかの他のタイプのアーキテクチャ等の基礎となるプラットフォームに関わらず移植可能にすることができる。諸実装は、プラットフォームハードウェア設計が、例えばハードウェアで実装されるようなレガシーサポートをやめることを可能にし、そして本質的に、ハードウェアの進化／再設計を通じて持続的な性能改善に励む際の重荷から解放され得る。
【００１０】
アプリケーションスタックは、開示される技術に係るミドルウェア層によって提供されるインタフェースオプションに依拠して、バックエンドのハードウェアと通信する。これらのインタフェースオプションは、新たな世界標準の命令セット（universal  standard  instruction  set）、又は現在のＩＳＡの場合は、関連するアプリケーションの改善された移植性を含み得る。
【００１１】
開示される技術の特定の実装は、特定のタイプの機能性をネイティブに実装するのではなく、その特定のタイプの機能性をエミュレートすることを含み得る。そのようなアーキテクチャにおけるプロセッサは、例えば中央処理装置（ＣＰＵ）及び／又はグラフィクス処理装置（ＧＰＵ）の能力に関して測定されるような、例えばＡＲＭ  ＩＳＡをエミュレートするのに十分な処理能力を有し得る。このコンテキストにおいて、バイナリエミュレータをミドルウェアと見なしてよい。
【００１２】
例えば小規模アーキテクチャ（minute  architecture）等の小さなコアを伴う特定の実施形態において、機能性及び／又は性能に関するトレードオフを促進するために、より長いレイテンシを要する命令をエミュレータにオフロードしてもよい。そのような実施形態は、ミドルウェア内の互換性のある層を保持しつつ、例えばｘ８７ＩＳＡ等のレガシーＩＳＡ、異質のＩＳＡ及び／又はあまり頻繁に実行されないＩＳＡをオフロードするための機構を含み得る。これらの実装を、例えばユニバーサルシリアルバス（ＵＳＢ）接続を介するＲＳ−２３２プロトコルのエミュレーションを含むシナリオまで拡大して、レガシーポートの数を低減させることも可能である。
【００１３】
図１は、現在のプラットフォーム依存のハードウェア／ソフトウェアアーキテクチャ１００の例を示すブロック図である。アーキテクチャ１００は、例えばアプリケーション及び／又はソフトウェアコンポーネント等のソフトウェア層１００と、ハードウェアプラットフォーム１３０とを含む。ミドルウェア層１２０は、双方向の矢印１２８によって示されるようにハードウェアプラットフォーム１３０と対話し、双方向の矢印１１２によって示されるように、アプリケーションプログラミングインタフェース層１１５によってソフトウェア層１１０とも対話する。
【００１４】
図２は、開示される特定の実施形態に係るプラットフォーム独立のハードウェア／ソフトウェアアーキテクチャ２００の例を示すブロック図である。この例において、アーキテクチャ２００は、高レベルのソフトウェアスタック２１０、例えばオペレーティングシステム（ＯＳ）及びソフトウェアアプリケーションと、例えばＡＲＭアーキテクチャのようなハードウェアプラットフォーム２３０とを含む。アーキテクチャ２００は、高レベルのソフトウェアスタック２１０とハードウェアプラットフォーム２３０との間に存在するミドルウェア層２２０を更に含む。ミドルウェア層２２０は、双方向の矢印２１２によって示されるようにソフトウェア層２１０と対話し、双方向の矢印２２８によって示されるようにハードウェアプラットフォーム２３０とも対話する。
【００１５】
この例において、バイナリエミュレータのミドルウェア２２０は、高レベルのソフトウェアスタック２１０の一部となることがあり、したがって、新たな及び／又は複数の命令セットをサポートするか、性能を改善するように、ネイティブのハードウェアプラットフォーム２３０を設計し直さなければならないという負荷を必要とせずに、例えば柔軟性、プログラム可能性、素早いターンアラウンドのような従来のソフトウェアに関連付けられた利点の一部又は全てを有することがある。
【００１６】
特定の実施形態において、ミドルウェア層２２０は、ＡＲＭベースのアプリケーションを他のアーキテクチャで実行できるように、またその反対も可能にし、その結果、アプリケーションとプラットフォームの改善された相互運用性が得られる。これは、プラットフォーム、アプリケーション及び最終的には複数の消費者に利用可能な選択についての広範な適用性につながる可能性がある。
【００１７】
特定の実装において、アーキテクチャ２００は、例えば負荷をかけることなく、アーキテクチャ２００を解放して新たな性能指標を目標とするために、レガシーのＩＳＡ又は低性能のＩＳＡの対処をミドルウェア２２０にオフロードすることを可能にし得る。
【００１８】
図３は、図２のプラットフォーム独立のアーキテクチャ２００のミドルウェア層２２０のような、開示される技術の特定の実施形態に係るミドルウェア層３００の例を図示している。ミドルウェア層３００は、様々なタイプのプラットフォームアーキテクチャとインタフェースすることができるプログラム可能なインタフェース３０２を含む。ミドルウェア層３００は、トランスレータ／エミュレータ３０４、標準アプリケーション／ＯＳインタフェース３０６、プログラム可能ＡＲＭ又は他のインタフェース３０８、あるいはこれらの任意の組み合わせも含み得る。
【００１９】
図４は、開示される技術の実施形態の特定の態様が実装され得るデバイス４００の例を図示している。デバイス４００は、これらに限られないが、デスクトップコンピュータ又はラップトップコンピュータのようなコンピューティングデバイス、ハンドヘルドコンピュータ又はタブレットコンピュータのようなモバイルデバイス、スマートフォンのような通信デバイス、あるいはキオスク又はＡＴＭのような業界固有の機械を含み得る。
【００２０】
デバイス４００は、ハウジング４０２、ハウジング４０２と関連するディスプレイ４０４、ハウジング４０２と関連する入力機構４０６、ハウジング４０２内のプロセッサ及びハウジング４０２内のメモリ４１０を含む。入力機構４０６は、キーボードのような物理的デバイスを含んでもよく、タッチスクリーン内に実装される仮想キーパッドのような仮想デバイスを含んでもよい。プロセッサ４０８は実質的に、上述されるような複数の動作のいずれかを実行し得る。メモリ４１０は、プロセッサ４０８によって実行された処理の結果得らえる情報を格納し得る。
【００２１】
図５は、開示される技術の特定の実施形態に係るネットワーク化されたシステム５００の例を示すブロック図である。この例において、システム５００は、インターネット、イントラネット、ホームネットワーク又はこれらの任意の組み合わせのようなネットワーク５０２を含む。パーソナルコンピュータ５０４及び５０６は、ネットワーク５０２に接続して、相互に又はネットワークに接続された他のデバイスと通信することができる。
【００２２】
システム５００は、３つのモバイル電子デバイス５０８〜５１２も含む。これらのうち２つのモバイル電子デバイス５０８及び５１０は、携帯電話又はスマートフォンのような通信デバイスである。もう１つのモバイルデバイス５１２は、パーソナルデジタルアシスタント（ＰＤＡ）又はタブレットデバイスのようなハンドヘルドコンピューティングデバイスである。リモートストレージデバイス５１４は、コンピュータ５０４、５０６、又はモバイル電子デバイス５０８〜５１２のいずれかによってアクセスされて使用されるデータの一部又は全てを格納してよい。
【００２３】
特定の実装において、図２のアーキテクチャ２００のような、プラットフォーム独立のハードウェア／ソフトウェアアーキテクチャは、図示されるシステム５００内のデバイスのいずれか又は全てに及び得る。例えばデスクトップコンピュータ５０４上で実行しているアプリケーションは、モバイルデバイス５１２上で実行しているアプリケーションとの対話を求める可能性がある。プラットフォーム独立のアーキテクチャは、基礎となるハードウェアプラットフォームに関わらず、そのような２つのデバイス５０４と５１２との間の通信を可能にし、促進し得る。
【００２４】
開示される技術の実施形態を、様々なタイプのアーキテクチャに組み込むことが可能である。例えば特定の実施形態を、以下のいずれか又は組み合わせとして実装してよい。すなわち、１つ若しくは複数のマイクロチップ又はマザーボードを使用して相互接続される集積回路、グラフィクス及び／又はビデオプロセッサ、マルチコアプロセッサ、ハードワイヤードロジック、メモリデバイスによって格納されマイクロプロセッサによって実行されるソフトウェア、ファームウェア、特定用途向け集積回路（ＡＳＩＣ）並びに／あるいはフィールドプログラマグルゲートアレイ（ＥＰＧＡ）のうちのいずれか又は組み合わせとして実装してよい。本明細書で使用されるとき、「ロジック」という用語は、例としてソフトウェア、ハードウェア又はこれらの任意の組み合わせを含むことがある。
【００２５】
本明細書では、特定の実施形態を図示して説明してきたが、開示される技術の実施形態の範囲を逸脱することなく、広範な変更及び／又は等価な実装を、図示及び説明された特定の実施形態と置き換えてもよいことが当業者には認識されよう。本出願は、本明細書において図示及び説明される実施形態の全ての適応又は変形を網羅するように意図されている。したがって、明らかに、開示される技術の実施形態は、特許請求の範囲及びその均等物によってのみ限定されるよう意図されている。
【図１】
0006033881.tif 000002
【図２】
0006033881.tif 000003
【図３】
0006033881.tif 000004
【図４】
0006033881.tif 000005
【図５】
0006033881.tif 000006