(57)【要約】【課題】デバイス・ドライバを使用せずに、アプリケーション・ソフトウエアを介してデバイスを直接管理するソフトウエア的な解決法を提供する。【解決手段】本発明の記憶媒体は、１または複数の動作を実行し、またデバイスを直接管理するアプリケーション・ソフトウエアを含む。アプリケーション・ソフトウエアは、そのデバイスを管理するためにアプリケーション・ソフトウエアが使用できるアプリケーション・データ構造（例えば、オブジェクトやアレイ）を初期化する命令、およびデバイスに付随するメモリに対してデバイス・ドライバを使用せずにアプリケーション・データ構造をマッピングする命令を含む。アプリケーション・データ構造は一次元のデータ構造または多次元のデータ構造を記憶することができる。アプリケーション・データ構造によって管理されるデバイスにはディスプレイが含まれ、アプリケーション・ソフトウエアにはＪａｖａコードが含まれる。【選択図】図１
2005011347.tif 000002
【特許請求の範囲】
【請求項１】
１または複数の動作を実行し、デバイスを直接管理するアプリケーション・ソフトウエアを含む記憶媒体であって、前記アプリケーション・ソフトウエアが、
前記デバイスを管理するために前記アプリケーション・ソフトウエアが利用できるアプリケーション・データ構造を初期化する命令、および
前記アプリケーション・データ構造を前記デバイスに付随するメモリにマッピングすることによって、アプリケーション・ソフトウエアに有利なように、前記デバイスに付随するメモリへアクセスするデバイス・ドライバの関数呼出しの使用を回避するための命令、
を含んでおり、
前記アプリケーション・データ構造のフォーマットが前記デバイスに付随するメモリのフォーマットと異なっている、
記憶媒体。
【請求項２】
アプリケーション・ソフトウエアから直接的にデバイスの要素にアクセスする方法であって、
前記デバイスを管理するために前記アプリケーション・ソフトウエアが利用できるアプリケーション・データ構造を初期化する工程、および
前記アプリケーション・ソフトウエアがメモリにアクセスできるように、前記アプリケーション・データ構造を前記デバイスに付随するメモリにマッピングすることによって、前記アプリケーション・ソフトウエアに有利なように、前記デバイスに付随するメモリにアクセスするためのデバイス・ドライバ関数呼出しの使用を回避するための工程、
を含み、
前記アプリケーション・データ構造のフォーマットが前記デバイスに付随するメモリのフォーマットと異なっている、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に高級プログラミング言語を介したデバイス・ドライバ・メモリへのアクセスに関する。
【背景技術】
【０００２】
多くの種類のデバイスはそのデバイスが動作するためにデバイス・ドライバを必要とする。そのようなデバイスにはディスプレイおよびキーボードが含まれる。デバイス・ドライバは実行可能なソフトウエアであり、それは高級プログラミング言語とデバイスとの間のプログラミング・インタフェースを提供する。デバイス・ドライバは、それを用いてそれが制御するデバイスとの間でデータのやり取りを行なうために、一般にメモリの一部をアロケートする必要がある。
【０００３】
少なくともいくつかの高級言語（例えばＪａｖａ（登録商標））に関しては、そのような言語は一般に、Ｃのような“ネイティブ（ｎａｔｉｖｅ）”言語で書かれたデバイス・ドライバへの“呼出し（ｃａｌｌ）”を必要とする。高級レベルの応用では、一般にデバイス・ドライバ・メモリ中の対応するデータ構造との間でデータの受け渡しをするためのデータ構造が使用される。これら２つのデータ構造は直接的な互換性を持たないかもしれないため、これら２つの間でマッピングが必要とされる。高級言語からデバイス・ドライバ・メモリ中のデータ構造へのデータ構造のマッピングは多量の計算を要する。更に、高級レベルの応用とデバイス・ドライバとの間で内容変更を許容する呼出しは望ましくない待ち時間を導入する。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ここに開示される主題は、一般にデバイス・ドライバを使用せずに、アプリケーション・ソフトウエアを介してデバイスを直接管理するソフトウエア的な解決法を指向している。単に一例としてであるが、ここに述べる実施の形態はディスプレイ・デバイスを管理するＪａｖａアプリケーションを指向しているが、ここに述べる原理はＪａｖａ言語およびディスプレイ・デバイス以外でも応用可能である。
【課題を解決するための手段】
【０００５】
いくつかの実施の形態では、記憶媒体は、１または複数の動作を実行しデバイスを直接管理するアプリケーション・ソフトウエアを含む。このアプリケーション・ソフトウエアは、そのデバイスを管理するためにアプリケーション・ソフトウエアが使用できるアプリケーション・データ構造（例えば、オブジェクトやアレイ）を初期化する命令を含み、更にデバイスに付随するメモリに対してデバイス・ドライバを使用せずにアプリケーション・データ構造をマッピングする命令を含む。その他の実施の形態では、本発明の方法はハードウエア・デバイスを管理するためのアプリケーション・データ構造を初期化する工程、およびそのハードウエア・デバイスに付随するメモリに対して、デバイス・ドライバを使用せずにアプリケーション・データ構造をマッピングする工程を含む。アプリケーション・データ構造は一次元のデータ構造または多次元のデータ構造を記憶することができる。いくつかの実施の形態では、アプリケーション・ソフトウエアによって管理されるデバイスにはディスプレイが含まれ、アプリケーション・ソフトウエアにはＪａｖａコードが含まれる。
【０００６】
（注意および用語）
以下の説明および特許請求の範囲を通して、特定のシステム部品を指すために特別な用語が用いられる。当業者は理解されるであろうように、会社が異なれば同じ部品が異なる名称で呼ばれる。この書類では、名称は異なるが機能は違わない部品を区別するつもりはない。以下の議論および特許請求の範囲において、“含む”という表現は開かれた意味で用いられており、従って“含むが、それに限定されない”と解釈されるべきである。また、“結合”あるいは“つなぐ”という用語は間接的および直接的の両方の結合を意味する。従って、第１のデバイスが第２のデバイスに結合するとき、その接続は直接接続でもよいし、その他のデバイスや接続を介した間接接続でもよい。
【０００７】
本発明の好適な実施の形態をより詳しく説明するために、ここで添付図面を参照する。
【０００８】
以下の議論は本発明の各種実施の形態に関するものである。それらの実施の形態のうちの１または複数のものは好適なものであるが、開示される実施の形態は、特に断らない限り、特許請求の範囲を含む本開示の範囲を限定するものとして解釈されるべきでないし、あるいは使用されるべきではない。更に、当業者は理解されるであろうが、以下の説明は広い応用を有しており、任意の実施の形態についての説明はその実施の形態の一例を意味するものでしかなく、特許請求の範囲を含む本開示の範囲がその実施の形態に限定されるということを暗示するものと解釈されるべきではない。
【実施例】
【０００９】
ここで図１を参照すると、本発明の好適な実施の形態に従うシステム１００が示されている。図示のように、本システムは少なくとも２つのプロセッサ１０２および１０４を含んでいる。プロセッサ１０２は、この開示の目的でＪａｖａスタック・マシン（Ｊａｖａ  Ｓｔａｃｋ  Ｍａｃｈｉｎｅ（“ＪＳＭ”））と呼ばれ、またプロセッサ１０４はメイン・プロセッサ・ユニット（Ｍａｉｎ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ（“ＭＰＵ”））と呼ばれる。システム１００はまた、ＪＳＭ１０２およびＭＰＵ１０４の両方につながれ、従って両プロセッサによってアクセス可能なメモリ１０６を含んでいる。“コンプレッサ”１５４はＪＳＭ１０２とメモリ１０６に結合する。コンプレッサおよび関連ソフトウエアの使用については、後に詳しく説明する。
【００１０】
更に図１を参照すると、システム１００はまたＪａｖａ仮想マシン（Ｊａｖａ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ（“ＪＶＭ”））１０８、コンパイラ１１０、およびディスプレイ１１４を含む。ＪＳＭ１０２は、ユーザがシステム１００の各種状況を制御できるようにするためのキーボード等の１または複数の入力／出力（“Ｉ／Ｏ”）デバイスへのインタフェースを含むことが好ましい。更に、データ・ストリームはＩ／Ｏ空間からＪＳＭ１０２に受信されて、ＪＳＭ１０２によって処理されよう。その他の部品（特に図示していない）には、他のデバイスとのワイヤレス通信を許容するためのバッテリおよびアナログ・トランシーバが含まれるが、これらに限定されない。システム１００は広範囲の電子システムを代表するものであるか、あるいはそれに適用されるものであるが、例示的な電子システムとしては、バッテリ駆動の移動電話が含まれよう。
【００１１】
システム１００で実行されるＪａｖａコードは複数の“バイトコード（Ｂｙｔｅｃｏｄｅ）”１１２を含む。バイトコード１１２はＪＶＭ１０８に供給され、コンパイラ１１０によってコンパイルされて、ＪＳＭ１０２に供給され、更に／またはＭＰＵ１０４に供給されて、そこで実行される。ＪＶＭ１０８は一般にソフトウエアとハードウエアの組合せを含む。ソフトウエアにはコンパイラ１１０が含まれ、ハードウエアにはＪＳＭ１０２が含まれよう。ＪＶＭはクラス・ローダ（ｃｌａｓｓ  ｌｏａｄｅｒ）、バイトコード・ベリファイア（ｂｙｔｅｃｏｄｅ  ｖｅｒｉｆｉｅｒ）、ガーベッジ・コレクタ（ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｏｒ）、およびＪＳＭプロセッサ１０２で実行されないバイトコードを解釈するためのバイトコード・インタープリタ・ループ（ｂｙｔｅｃｏｄｅ  ｉｎｔｅｒｐｒｅｔｅｒ  ｌｏｏｐ）を含む。
【００１２】
図２はディスプレイ１１４の管理に関連する各種の部品を示す。図示のように、アプリケーション・ソフトウエア１５０（例えば、Ｊａｖａアプリケーション）はアプリケーション・データ構造１５２を含む。アプリケーション・データ構造１５２はアレイやオブジェクトのような任意の適切なタイプの構造を含むことができる。以下ではデータ構造１５２をアレイとして説明するが、もっと広くその他のタイプの構造でも構わない。アプリケーション・アレイ１５２は再フォーマット論理回路１５４につながれ、後者は次にディスプレイ・メモリ１５６につながれる。ディスプレイ・メモリ１５６はディスプレイ１１４が使用するようにアロケートされたメモリ１０６の一部を含むことができる。更に詳細には、ディスプレイ１１４上に表示すべき情報はディスプレイ・メモリ１５６に記憶することが好ましい。ディスプレイ・インタフェース１６０はディスプレイ・メモリ１５６からディスプレイ・データを抽出して、適切な電気的インタフェースを提供することによって表示すべき所望の情報がディスプレイ１１４に正しく表示されるようにする。
【００１３】
上述のように、ソフトウエア・アプリケーション１５０はアプリケーション・アレイ１５２を含む。一般にＪａｖａアプリケーションは１つより多いアプリケーション・アレイを含むが、本発明の好適な実施の形態を説明する都合上、ソフトウエア・アプリケーション１５０はディスプレイ１１４を管理するために使用できる少なくとも１つのアプリケーション・アレイ１５２を含む。
【００１４】
アプリケーション・アレイ１５２は好ましくはＪａｖａアレイであり、従って、Ｊａｖａプログラミング言語に特有な要求に適合する。例えば、アレイ１５２はｎビット（またはバイト）のアドレッシング可能なデータ構造であろう。Ｊａｖａでは、ｎは典型的には３２ビットであり、そのことはアレイ１５２が３２ビット（４バイト）増分を単位としてアドレッシングされることを意味する。しかし、ディスプレイ・メモリ１５６はＪａｖａアレイ１５２とは異なるようにフォーマットされよう。例えば、アプリケーション・アレイ１５２はｎビットでアドレッシング可能なデータ構造であり、他方、ディスプレイ・メモリ１５６はｎとは異なるｍビットでアドレッシング可能なデータ構造を取ることができよう。いくつかの実施の形態では、ディスプレイのカラー定義に適した任意のビット数、例えばｍは８でもよいが、ｎは３２ビットでよい。
【００１５】
本発明の好適な実施の形態に従えば、Ｊａｖａアプリケーション１５０はアプリケーション・アレイ１５２を通してディスプレイ・メモリ１５６にアクセスする。Ｊａｖａアプリケーション１５０は、テキストおよび／またはグラフィック・データ（“ディスプレイ・データ”）をアプリケーション・アレイ１５２に書き込むことによって、そのようなディスプレイ・データをディスプレイ１１４上に表示させることができる。既に述べたように、アプリケーション・アレイ１５２はｎビットでアドレッシング可能で、ディスプレイ・メモリはｍビットでアドレッシング可能であり、ここでｎはｍとは異なっている（例えば、ｎはｍよりも大きい）。従って、アプリケーション・アレイはディスプレイ・メモリとは違ったようにフォーマットされる。ｎがｍとは異なるため、アプリケーション・アレイ１５２からのディスプレイ・データは、再フォーマットなしで直接ディスプレイ・メモリ１５６にコピーすることができない。アプリケーション・アレイ１５２中のデータがアプリケーション・ソフトウエアによってアクセス（読み出しまたは書き込み）されるとき、データが書き込まれるときはディスプレイ・メモリ１５６と互換性のあるフォーマットに自動的に再フォーマットされるし、また読み出されるときは、アプリケーション・アレイと互換性のあるフォーマットにディスプレイ・メモリのフォーマットから再フォーマットされる。ディスプレイ・メモリのｍ次元がメモリ・アクセスのグラニュラリティ（粒度、ｇｒａｎｕｌａｒｉｔｙ）と一致するかどうかはｎ／ｍの比に依存し、圧縮された物理領域へのアクセスがメモリ・アクセスのグラニュラリティと整合しないときは、ディスプレイ・メモリ中の書き込みは、再フォーマット論理回路１５４によってリード・モディファイ・ライト（ｒｅａｄ−ｍｏｄｉｆｙ−ｗｒｉｔｅ）で置き換える必要がある。アプリケーション・アレイ１５２からのディスプレイ・データを再フォーマットする工程がｎビット幅の広いデータ値をｍビットの狭いデータ値に縮小する工程を含むため、再フォーマット論理回路１５４は“コンプレッサ”と呼ばれるが、本開示および特許請求の範囲は本質的にデータ圧縮に限定されない。
【００１６】
図３はコンプレッサ１５４の機能を更に示している。アプリケーション・アレイ１５２に付随する仮想アドレス空間１６０は、ディスプレイ・メモリ１５６に記憶され、圧縮された実際の物理アドレス空間１６６に書き込むべき、アプリケーション１５０からのディスプレイ・データを含む。図３の例では、仮想メモリ空間１６０は０×Ａ０００という先頭アドレスを有し、アドレス０×Ｃ０００から始まる物理アドレス空間１６２上へマッピングされるものとして示されている。好適な実施の形態では、目的の実際のメモリは圧縮されたメモリ空間１６６であるため、物理アドレス空間１６２の一部あるいはすべては存在しない。
【００１７】
圧縮を可能とするためには、コンプレッサ１５４は仮想アドレス空間１６０中の高レベル表現（３２ビットをベースとするメモリ・ブロック）を、圧縮されたアドレス空間１６６中の低レベル表現（８ビットをベースとするメモリ・ブロック）にマッピングすることが好ましい。仮想アドレス空間１６０のデータ内容は低レベル表現の最大値を超えないことが好ましい。例えば、もし圧縮されたアドレス空間１６６が８ビット幅であれば、アプリケーション・アレイ１５２に付随する仮想アドレス空間１６０は８ビットの塊で意味のあるデータを記憶する。図３に示すように、意味のあるデータの塊はアドレス０×Ａ００３、０×Ａ００７、０×Ａ００Ｂ等々に示されており、アドレス空間の残りの部分（例えば、０×Ａ０００−０×Ａ００２、０×Ａ００４−０×Ａ００６等々）は予め決められた値０にセットされている。
【００１８】
上で述べたように、本発明の好適な実施の形態は、デバイス・メモリ・マップ・メモリのＪａｖａ表現として使用されるＪａｖａアプリケーション・アレイ１５２を含む。例示的なＪａｖａの手法を次に示すが、ここでアプリケーション・アレイ１５２は“ＶＧＡ”（“Ｖｉｄｅｏ  Ｇｒａｐｈｉｃｓ  Ａｄａｐｔｅｒ（ビデオ・グラフィックス・アダプタ）”）と名づけられたアレイである。
【００１９】
ＣｌａｓｓＤｉｓｐｌａｙＢｉｔｍａｐ
｛
ｐｕｂｌｉｃ  ｉｎｔ  ＶＧＡ［３２０×２００］；
ＤｉｓｐｌａｙＢｉｔ（）
｛
／／アレイをデバイス・ドライバにマッピングする
ｍａｐＡｒｒａｙＯｎ（ＶＧＡ，０×Ｃ０００）
｝
ｖｏｉｄ  ｄｒｉｖｅｒＳｅｔＰｉｘｅｌ（ｉｎｔ  Ｘ，  ｉｎｔ  Ｙ，  ｉｎｔ  ｖａｌｕｅ）
｛
ＶＧＡ［Ｘ＋Ｙ＊３２０］＝ｖａｌｕｅ；
｝
｝
【００２０】
上に与えた手法で、ＪａｖａアレイＶＧＡはアドレス０×Ｃ０００においてディスプレイ・メモリにマッピングされる。このマッピングを完全に実行するために、アプリケーション・プログラミング・インタフェース（“ＡＰＩ”）が導入され、それがアレイのベースを１つのアドレスへマッピングする。“ｍａｐＡｒｒａｙＯｎ”というメソッドはオブジェクトＤｉｓｐｌａｙＢｉｔｍａｐの“コンストラクタ”と呼ばれる。Ｊａｖａコードは１つのピクセルの値を、命令ＶＧＡ［Ｘ＋Ｙ＊３２０］を使ってディスプレイ・メモリの座標Ｘ，Ｙに書き込む。
【００２１】
図４Ａおよび４Ｂはコンプレッサ１５４の使用に適用される各種の制約を示す。図４Ａで、もしＭＰＵ１０４（図１）上で走るオペレーティング・システムがフラット（またはリニア）なアドレッシング・モードあるいはセグメント・モードを使用するのであれば、アプリケーション・アレイ１５２に付随する仮想メモリ空間１６０は連続的な仮想メモリ範囲を含むことが好ましい。連続的な仮想メモリ範囲１６０は物理メモリ１６２上にマッピングされるように思えるが、実際には連続的な仮想メモリ範囲１６０は圧縮された物理メモリ１６６上に圧縮される。
【００２２】
図４Ｂで、もしオペレーティング・システムがページ・モードのアドレッシングを使用するのであれば、仮想メモリ空間１６０は複数の仮想ページ（ＶＰ０，ＶＰ１，．．．，ＶＰＮ−１）に分割される。コンプレッサ１５４の動作に従って、ページ・モードでのアドレッシングに関して仮想メモリ空間１６０は図示のように連続的な仮想メモリ範囲を含む。仮想空間ページの物理的マッピングは、物理ページＰＰ０ないしＰＰＮ−１が連続的であるとして、物理メモリ空間１６２へのページのマッピングと見ることができる。実際には、ページは圧縮された物理メモリ１６６（ディスプレイ・メモリ）に圧縮される。一般に、圧縮された物理メモリ空間１６６の先頭アドレスには制約がない。１または複数のアドレスに既存のメモリがない場合には、システム中の１または複数のソフトウエア層が責任を持ってメモリ・ホール（ｍｅｍｏｒｙ  ｈｏｌｅ）を考慮する。
【００２３】
コンプレッサ１５４は、物理領域を別の圧縮された物理領域に移動させる１または複数のプログラミング可能な値を保持する多重レジスタを含む。プログラミング可能な値はＪＶＭ１０８の制御下にあり、非圧縮メモリ領域の先頭アドレス、非圧縮領域の末尾アドレスあるいは全体のサイズ、目的ディスプレイ・メモリ１５６の先頭アドレス、アプリケーション・ソフトウエア中のアレイ中の要素当たりのビット数（“ｎ”）、圧縮領域中の要素当たりのビット数（“ｍ”）あるいは等価的比率ｍ／ｎを含む。不整合書込みアクセスを管理するためのその他の情報、例えばメモリのグラニュラリティ・アクセス（例えば、８ビット、１６ビット、３２ビット）が含まれる。コンプレッサ１５４はＪＶＭ１０８がデバイス・メモリ・マップ・メモリ（ｄｅｖｉｃｅ  ｍｅｍｏｒｙ  ｍａｐｐｅｄ  ｍｅｍｏｒｉｅｓ）に効率的にアクセスできるようにする。
【００２４】
図５は、アプリケーション・アレイ１５２が一次元アレイである好適な実施の形態において、Ｊａｖａの“メタデータ”がどのように扱われるかを示す。Ｊａｖａの各オブジェクトはメタデータを含んでおり、それはオブジェクトを管理するために使用される。メタデータはオブジェクトのタイプ、オブジェクトのサイズ、およびその他のオブジェクトに特有なパラメータなどの情報を含むことができる。図示のように、アプリケーション・アレイ１５２は、“ヘッド”メタデータ１７０、テイル・メタデータ１７４、およびオブジェクト・フィールド１７２を含むデータ構造１６８を含む。ヘッド・メタデータ１７０はオブジェクト・フィールド１７２に先行し、テイル・メタデータ１７４はオブジェクト・フィールド１７２に続く。好適な実施の形態では、メタデータ・フィールド１７０および１７４はコンプレッサ１５４によって圧縮されない。すなわち、コンプレッサ１５４はオブジェクト・フィールド１７２を圧縮するが、ヘッドおよびテイルのメタデータ・フィールド１７０および１７４は圧縮しないことが好ましい。
【００２５】
なおも図５を参照すると、もしもオペレーティング・システムがフラットあるいはセグメント・モードのアドレッシング・モードを採用すれば、またもし図５に示すようにヘッドおよび／またはテイル・メタデータが存在するならば、物理メモリ１６６に圧縮される物理メモリ１６２ｂに対し先行および後続するメモリ（１６２ａ）およびメモリ（１６２ｃ）は、少なくともいくつかの実施の形態に従って動作するようにここに述べるプロセスに関して存在することが好ましい。
【００２６】
ページ・モードのアドレッシングでは、ヘッドまたはテイルのメタデータは、仮想アドレス空間１６０中の別々のページ１６０ａ（ＶＰ０）、１６０ｃ（ＶＰＮ）上にマッピングされよう。従って、ヘッド・メタデータ１７０、オブジェクト・フィールド１７２、およびテイル・メタデータ１７４は図５に示すように連続的な仮想アドレス・ブロックに記憶され、一方で物理空間では、それらは圧縮された領域（１６２ｂ）および圧縮されない領域（１６２ａ，１６２ｃ）にマッピングされよう。この構成において、圧縮可能なメモリ空間の先頭および末尾のフロントはページ整合していることが好ましい。いくつかの実施の形態ではヘッダ内部にメタデータのみを有するものもある。
【００２７】
ここで図６を参照すると、一次元アレイの不連続なオブジェクト構成を持つ別の実施の形態が示されている。ヘッド・メタデータ１８２、ポインタ・フィールド１８４、およびテイル・メタデータ１８６はメモリ中で連続していることが好ましい。ポインタ・フィールド１８４はオブジェクト・フィールド１８８を指す値（“ポインタ”）を含む。ポインタ１８４を使用してオブジェクト・フィールドにアクセスするために、体系的な間接的手法が用いられる。
【００２８】
フラット、セグメント、あるいはページ・モードのアドレッシングでは、ＪＶＭ１０８が好ましいことに２つの連続した明確なメモリ空間を使用することから、ここに述べた好適なプロセスを使用する上で制約はない。メモリ・ブロック１８２、１８４、および１８６は、フラット、セグメント、あるいはページ・モードの連続的なメモリ・ゾーンＶＰ０内部にマッピングされ、物理メモリ・ページＰＰ０にマッピングされるときにも圧縮されない。しかし、オブジェクト・フィールド１８８は、ＶＰ１ないしＶＰＮ−１においてフラット、セグメント、あるいはページ・ベースのメモリ・ゾーンを用いてマッピングされ、それらは次にディスプレイ・メモリ１５６に付随する圧縮された物理メモリ空間１６６にマッピングされる。この構成で、圧縮されたメモリ空間１６６の前後の物理メモリは存在する必要がない。
【００２９】
Ｊａｖａでは多次元アレイの生成および利用が許されている。図７は多次元データ構造１９０を記憶するアプリケーション・アレイ１５２の利用を示している。仮想アドレッシング可能ブロック１９２は多次元データ構造１９０の１つの次元を含み、第２の次元は図示のように仮想アドレッシング可能ブロック１９４、１９６、および１９８を含む。ブロック１９２はブロック１９４、１９６、および１９８へのポインタを含む。マッピングの制約に従って、フラット、セグメント、あるいはページ・ベースのアドレッシングにおいて、アレイ（ブロック１６３、１６５、および１６７）の最後の次元を表すすべてのオブジェクト・フィールドは連続的な圧縮された物理メモリ１６６に物理的にマッピングされる。
【００３０】
図８は不連続な（図６に示すような）二次元アレイ１９０を示しており、１つの次元はブロック１９２を含み、その他の次元はブロック１９４、１９６、および１９８を含む。図８のこの構成で、アレイ（ブロック２０２、２０４、および２０６）の最後の次元を表すすべてのオブジェクト・フィールドは連続的な圧縮された物理メモリ１６６（ディスプレイ・メモリ）に物理的にマッピングされる。
【００３１】
本発明の好適な実施の形態は、他のデバイス管理方式に比べて本質的に優れた利点を提供する。例えば、高級言語では、ディスプレイ上に情報を表示させるために、ディスプレイ・ドライバに対する呼出しを行なう必要があるのが一般的である。好適な実施の形態では、ＭＰＵ１０４は本来のデバイス・ドライバを実行させるためにインタラプトされる必要がない。好適な実施の形態では、関数呼出しやインタラプト・サービスのハンドラを使用する必要がない。この結果、待ち時間は短縮される。更に、ディスプレイ・メモリ内でのアドレスを変換するための計算はソフトウエアよりもむしろハードウエアで実行される。
【００３２】
本発明の好適な実施の形態について示し説明してきたが、本発明の精神及び教えるところから外れることなく、当業者はこれの修正を行い得る。ここに述べた実施の形態はほんの一例に過ぎず、限定する意図のものではない。ここに開示した本発明に対し多くの変形および修正が可能であり、それらは本発明の範囲内に含まれる。従って、以上の説明によって保護の範囲は限定されない。請求項の各々、およびすべての項はこの明細書に本発明の１つの実施の形態として含まれるものである。
【００３３】
以上の説明に関して更に以下の項を開示する。
（１）１または複数の動作を実行し、デバイスを直接管理するアプリケーション・ソフトウエアを含む記憶媒体であって、前記アプリケーション・ソフトウエアが、
前記デバイスを管理するために前記アプリケーション・ソフトウエアが利用できるアプリケーション・データ構造を初期化する命令、および
前記アプリケーション・データ構造を前記デバイスに付随するメモリにマッピングすることによって、アプリケーション・ソフトウエアに有利なように、前記デバイスに付随するメモリへアクセスするデバイス・ドライバの関数呼出しの使用を回避するための命令、
を含んでおり、
前記アプリケーション・データ構造のフォーマットが前記デバイスに付随するメモリのフォーマットと異なっている、
記憶媒体。
【００３４】
（２）第１項に記載の記憶媒体であって、前記マッピングを行なう前記命令が、アプリケーション・ソフトウエアが前記アプリケーション・データ構造を初期化するときに実行される記憶媒体。
【００３５】
（３）第１項に記載の記憶媒体であって、前記アプリケーション・データ構造がアプリケーション・アレイを含んでいる記憶媒体。
【００３６】
（４）第３項に記載の記憶媒体であって、前記アプリケーション・アレイを前記デバイスに付随するメモリにマッピングする前記命令が、前記アプリケーション・アレイをディスプレイに付随するメモリにマッピングする命令を含んでいる記憶媒体。
【００３７】
（５）第３項に記載の記憶媒体であって、前記アプリケーション・アレイを初期化する前記命令が、Ｊａｖａアレイを初期化する命令を含んでいる記憶媒体。
【００３８】
（６）第３項に記載の記憶媒体であって、前記アプリケーション・アレイを初期化する前記命令が、多次元のＪａｖａアレイを初期化する命令を含んでいる記憶媒体。
【００３９】
（７）第３項に記載の記憶媒体であって、前記アプリケーション・アレイを初期化する前記命令が、一次元のＪａｖａアレイを初期化する命令を含んでいる記憶媒体。
【００４０】
（８）第３項に記載の記憶媒体であって、前記アプリケーション・アレイを初期化する前記命令が、ｎビットのアプリケーション・アレイを初期化する命令を含んでおり、また前記アプリケーション・アレイを前記デバイスに付随するメモリにマッピングする前記命令が、前記アプリケーション・アレイを前記デバイスに付随するｍビットのメモリにマッピングする命令を含んでおり、ｍがｎと異なっている記憶媒体。
【００４１】
（９）第８項に記載の記憶媒体であって、ｎがｍよりも大きい記憶媒体。
【００４２】
（１０）第３項に記載の記憶媒体であって、前記アプリケーション・アレイがオブジェクト・フィールドおよびメタデータを含んでおり、前記アプリケーション・アレイを前記デバイスに付随するメモリにマッピングする前記命令が、前記オブジェクト・フィールドを前記ハードウエア・デバイスに付随するメモリにマッピングするが、前記メタデータはマッピングしない命令を含んでいる記憶媒体。
【００４３】
（１１）第１０項に記載の記憶媒体であって、前記メタデータおよびオブジェクト・フィールドが前記アプリケーション・アレイの連続的な部分には記憶されていない記憶媒体。
【００４４】
（１２）第１項に記載の記憶媒体であって、前記アプリケーション・ソフトウエアが、データをデータ構造に書き込むことによって前記データを前記デバイスに付随するメモリと互換性のある形式に自動的に再フォーマットさせる命令を含んでいる記憶媒体。
【００４５】
（１３）第１項に記載の記憶媒体であって、前記アプリケーション・ソフトウエアが、データをデータ構造から読み出すことによって前記データを前記デバイスに付随するメモリと互換性のある形式から前記アプリケーション・データ構造と互換性のある形式に自動的に再フォーマットさせる命令を含んでいる記憶媒体。
【００４６】
（１４）アプリケーション・ソフトウエアから直接的にデバイスの要素にアクセスする方法であって、
前記デバイスを管理するために前記アプリケーション・ソフトウエアが利用できるアプリケーション・データ構造を初期化する工程、および
前記アプリケーション・ソフトウエアがメモリにアクセスできるように、前記アプリケーション・データ構造を前記デバイスに付随するメモリにマッピングすることによって、前記アプリケーション・ソフトウエアに有利なように、前記デバイスに付随するメモリにアクセスするためのデバイス・ドライバ関数呼出しの使用を回避するための工程、
を含み、
前記アプリケーション・データ構造のフォーマットが前記デバイスに付随するメモリのフォーマットと異なっている、
方法。
【００４７】
（１５）第１４項に記載の方法であって、初期化の間にマッピングが行なわれる方法。
【００４８】
（１６）第１４項に記載の方法であって、前記アプリケーション・データ構造がアプリケーション・アレイを含んでいる方法。
【００４９】
（１７）第１６項に記載の方法であって、前記アプリケーション・アレイを前記デバイスに付随するメモリにマッピングする前記工程が、前記アプリケーション・アレイをディスプレイに付随するメモリにマッピングする工程を含んでいる方法。
【００５０】
（１８）第１６項に記載の方法であって、前記アプリケーション・アレイを初期化する前記工程がＪａｖａアレイを初期化する工程を含んでいる方法。
【００５１】
（１９）第１６項に記載の方法であって、前記アプリケーション・アレイを初期化する前記工程が多次元のＪａｖａアレイを初期化する工程を含んでいる方法。
【００５２】
（２０）第１６項に記載の方法であって、前記アプリケーション・アレイを初期化する前記工程が一次元のＪａｖａアレイを初期化する工程を含んでいる方法。
【００５３】
（２１）第１６項に記載の方法であって、前記アプリケーション・アレイを初期化する前記工程が、ｎビットのアプリケーション・アレイを初期化する工程を含んでおり、また前記アプリケーション・アレイを前記デバイスに付随するメモリにマッピングする前記工程が、前記アプリケーション・アレイを前記デバイスに付随するｍビットのメモリにマッピングする工程を含んでおり、ｍがｎと異なっている方法。
【００５４】
（２２）第２１項に記載の方法であって、ｎがｍよりも大きい方法。
【００５５】
（２３）第１６項に記載の方法であって、前記アプリケーション・アレイがオブジェクト・フィールドおよびメタデータを含んでおり、前記アプリケーション・アレイを前記デバイスに付随するメモリにマッピングする前記工程が、前記オブジェクトを前記ハードウエア・デバイスに付随するメモリにマッピングするが、前記メタデータはマッピングしない工程を含んでいる方法。
【００５６】
（２４）第２３項に記載の方法であって、前記メタデータおよびオブジェクト・フィールドが前記アプリケーション・アレイの連続的な部分には記憶されていない方法。
【００５７】
（２５）第１４項に記載の方法であって、前記アプリケーション・ソフトウエアが、データを前記データ構造に書き込むことによって前記データを前記デバイスに付随するメモリと互換性のある形式に動的に再フォーマットさせる命令を含んでいる方法。
【００５８】
（２６）第１４項に記載の方法であって、前記アプリケーション・ソフトウエアが、データを前記データ構造から読み出すことによって前記データを前記デバイスに付随するメモリと互換性のある形式から前記アプリケーション・データ構造と互換性のある形式に動的に再フォーマットさせる命令を含んでいる方法。
【００５９】
（２７）いくつかの実施例において、記憶媒体は、１または複数の動作を実行し、またデバイスを直接管理するアプリケーション・ソフトウエアを含む。アプリケーション・ソフトウエアは、そのデバイスを管理するためにアプリケーション・ソフトウエアが使用できるアプリケーション・データ構造（例えば、オブジェクトやアレイ）を初期化する命令、およびデバイスに付随するメモリに対してデバイス・ドライバを使用せずにアプリケーション・データ構造をマッピングする命令を含む。アプリケーション・データ構造は一次元のデータ構造または多次元のデータ構造を記憶することができる。アプリケーション・データ構造によって管理されるデバイスにはディスプレイが含まれ、アプリケーション・ソフトウエアにはＪａｖａコードが含まれる。
【図面の簡単な説明】
【００６０】
【図１】本発明の好適な実施の形態に従うシステムの回路図であり、プロセッサがハードウエア・デバイスに付随するメモリを直接管理できるようにするためのコンプレッサを含む回路図。
【図２】図１のシステムを更に示す回路図。
【図３】アプリケーションがハードウエア・デバイスのメモリを管理できるようにするためのコンプレッサの動作を示す図。
【図４】システムに関する制約を示す各種実施の形態を示す図。
【図５】アプリケーション・ソフトウエアがメタデータを含むオブジェクトに作用するときのシステムの使用を示す図。
【図６】不連続なデータ構造に作用するシステムの動作を示す図。
【図７】多次元データ構造に作用するシステムの各種実施の形態を示す図。
【図８】多次元データ構造に作用するシステムの各種実施の形態を示す図。
【符号の説明】
【００６１】
１００  システム
１０２  プロセッサ（ＪＳＭ）
１０４  プロセッサ（ＭＰＵ）
１０６  メモリ
１０８  ＪＶＭ
１１０  コンパイラ
１１２  バイトコード
１１４  ディスプレイ
１５０  アプリケーション・ソフトウエア
１５２  アプリケーション・データ構造（アプリケーション・アレイ）
１５４  コンプレッサ（再フォーマット論理回路）
１５６  ディスプレイ・メモリ
１６０  ディスプレイ・インタフェース
１６０  仮想アドレス空間
１６０ａ，１６０ｃ  ページ
１６２  物理アドレス空間
１６２ａ，１６２ｂ，１６２ｃ  メモリ空間
１６３，１６５，１６７  ブロック
１６６  圧縮された物理アドレス空間
１６８  データ構造
１７０  ヘッド・メタデータ
１７２  オブジェクト・フィールド
１７４  テイル・メタデータ
１８２  ヘッド・メタデータ
１８４  ポインタ・フィールド
１８６  テイル・メタデータ
１８８  オブジェクト・フィールド
１９０  多次元データ構造
１９２，１９４，１９６，１９８  仮想アドレッシング可能ブロック
２０２，２０４，２０６  ブロック
【図１】
2005011347.tif 000003
【図２】
2005011347.tif 000004
【図３】
2005011347.tif 000005
【図４】
2005011347.tif 000006
【図５】
2005011347.tif 000007
【図６】
2005011347.tif 000008
【図７】
2005011347.tif 000009
【図８】
2005011347.tif 000010