(57)【要約】【課題】データ処理装置に関する装置及び方法を提供する。【解決手段】該データプロセッサはソフトウェア仮想マシンを実行するために適した機能を含む。データプロセッサは高速動作に適したオブジェクトレベルのメモリ保護をサポートする命令セットを提供する。再プログラム可能不揮発性メモリに比較して相対的に少ないランダムアクセスメモリ（ＲＡＭ）を有する構成に対処するため、及び該再プログラム可能不揮発性メモリへのアクセスを改善するためにメモリ制御論理が提供される。【選択図】      図２
2005135395.tif 000002
【特許請求の範囲】
【請求項１】
第１のアドレスを受信することと、
該第１のアドレスに所定のアドレス構成要素が含まれる場合に、第２のアドレスを作成し、該第２のアドレスにあるメモリロケーションにアクセスすることと、
該第１のアドレスに所定のアドレス構成要素が含まれない場合に、第１のアドレスのメモリロケーションにアクセスすることと、
第１のアドレスが複数のアドレスビットを備え、所定のアドレス構成要素が第１のアドレスのアドレスビットのすべて未満を備えることと、
第１のアドレス及び第２のアドレスが１つの共通したアドレス構成要素を有することを特徴とするデータ処理装置でデータを転送するための方法。
【請求項２】
所定のアドレス構成要素が第１のアドレスの高位バイトを備えることを特徴とする請求項１の方法。
【請求項３】
データ処理装置のアドレス空間の第１のページで仮想マシンを実行することをさらに備え、第１のアドレスが第１のページのアドレスであり、第２のアドレスがデータ処理装置のアドレス空間の別のページにあることを特徴とする請求項１の方法。
【請求項４】
データ処理装置のアドレス空間が複数のページを備え、第１のアドレスが第１のページのアドレスであり、第２のアドレスが、第１のページとは異なる第２のページのアドレスであることを特徴とする請求項１の方法。
【請求項５】
入力アドレスを提示するためのアドレス入力ラインと、
アドレス入力ラインの少なくともいくつかに結合されるアドレス変換論理と、
出力アドレスを提示するためにアドレス変換論理に結合されるアドレス出力ラインと、
アドレス入力ラインから第１の入力アドレスを受け取り、第１の入力アドレスの一部が所定の値を含む場合に第１の入力アドレスとは異なるアドレス出力ラインで第１の出力アドレスを生成するように動作可能であるアドレス変換論理とを備えることを特徴とするアドレスを処理するためのメモリ管理装置を備えるデータプロセッサ。
【請求項６】
アドレス変換論理が入力アドレスの高位ビットに存在する所定の値を検出するように、さらに構成されることを特徴とする請求項５のデータプロセッサ。
【請求項７】
メモリ管理装置がさらに変換テーブルを備え、Ｍ＞Ｎの場合に該変換テーブルがＭビット値を備え、該変換テーブルがＮビット値によってアドレス指定され、変換テーブルがアドレス入力ラインのＮ個のラインに基づいてＭビット値の１つを生成し、生成されたＭビット値がアドレス出力ラインのＭ個のラインで使用されることを特徴とする請求項５のデータプロセッサ。
【請求項８】
アドレス出力ラインの残りのラインがアドレス入力ラインから出現することを特徴とする請求項７のデータプロセッサ。
【請求項９】
データ処理装置の第１のデータ記憶装置構成要素から第１の値にアクセスすることと、
メモリ内の領域を表す基本アドレスと第１の値を結合し、第１のアドレスを生成することと、
データ処理装置の第２のデータ記憶装置構成要素から第２の値にアクセスすることと、
データ処理装置の第３のデータ記憶装置構成要素から第３の値にアクセスすることと、
第１のアドレスにより示されるメモリ内のロケーションに記憶される値と第２の値を結合し、第４の値を生成することと、
第３の値を第４の値と比較し、比較結果を生成することと、
前記比較結果に基づき、第２のアドレスにより示されるロケーションで始まるメモリにアクセスするか、または例外動作を実行するのかのどちらかであり、第２のアドレスが基本アドレスから計算されることとを備えるデータ処理装置でデータを転送するための方法。
【請求項１０】
第１のデータ記憶装置構成要素に第１の値を記憶するステップと、第２のデータ記憶構成要素に第２の値を記憶するステップと、第３の値を記憶するステップとの１つまたは複数のステップをさらに含み、記憶することの１つまたは複数のステップが、データ処理装置が初期化されるときにだけ実行されることを特徴とする請求項９の方法。
【請求項１１】
第１の値、第２の値、第３の値の１つまたは複数がそれぞれ第１のデータ記憶装置構成要素、第２のデータ記憶装置構成要素、及び第３のデータ記憶装置構成要素に不揮発的に記憶されることを特徴とする請求項９の方法。
【請求項１２】
それぞれ第１の値、第２の値、及び第３の値とともに第１のデータ記憶装置構成要素、第２のデータ記憶装置構成要素、及び第３のデータ記憶装置構成要素の１つまたは複数をロードすることをさらに備えることを特徴とする請求項９の方法。
【請求項１３】
第２のアドレスが、基本アドレス及びオフセット値に基づいて計算されることを特徴とする請求項９の方法。
【請求項１４】
第２のアドレスが基本アドレス及びオフセット値をともに加算することにより計算されることを特徴とする請求項１３の方法。
【請求項１５】
例外動作が、第４のデータ記憶装置構成要素の内容にアクセスすることを備え、データ処理装置による以後の処理が第４のデータ記憶装置構成要素の内容に基づき計算されたメモリ内のロケーションで始まる命令から続行することを特徴とする請求項９の方法。
【請求項１６】
以後の処理が続行するメモリ内のロケーションが、第４のデータ記憶装置構成要素の内容をオフセット値と加算することにより計算されることを特徴とする請求項１５の方法。
【請求項１７】
メモリ内の領域がデータオブジェクトを表すことを特徴とする請求項９の方法。
【請求項１８】
アクセスするステップがメモリ内の別の領域へアクセスされた内容をコピーするステップであることを特徴とする請求項９の方法。
【請求項１９】
アクセスするステップがアクセスされた内容に情報を書き込むステップであることを特徴とする請求項９の方法。
【請求項２０】
第１のアドレスが第１の値及び基本アドレスを追加することによって生成されることを特徴とする請求項９の方法。
【請求項２１】
メモリと、
復号プログラム命令に応えて制御信号を発生させるための命令デコード論理と、
制御信号を受信するために結合され、制御信号に従って論理動作を実行するように構成されるデータ処理論理と、
メモリに、及び命令デコーダに結合され、復号される命令を記憶するように動作可能である命令レジスタと、
復号される命令のアドレスを記憶するように動作可能なプログラムカウンタと、
ベクトルアドレスを記憶するためのベクトルアドレスデータ領域と、
第１の値を記憶するための第１のデータ領域と、
第２の値を記憶するための第２のデータ領域と、
第３の値を記憶するための第３のデータ領域と、
第１の命令を復号することに応えて、第１の制御信号をアサートするように構成される命令デコーダと、
第１の値を第１の命令に含まれる第１のオペランドと結合し、第１のアドレスを作成し、
第２の値を第１のアドレスによって示されるロケーションにあるメモリに記憶される値を結合し、第４の値を生じさせ、第３の値を第４の値に比較し、比較結果を作成し、前記比較結果に基づき、第２のアドレスによって示されるロケーションで始まるメモリにアクセスする、またはベクトルアドレスに基づいたアドレスでプログラムカウンタを更新するかのどちらかで、第２のアドレスが第１のオペランドから計算されるように構成される、第１の制御信号に応えるデータ処理論理とを備えることを特徴とするデータ処理装置。
【請求項２２】
メモリが再プログラム可能不揮発性メモリであることを特徴とする請求項２１のデータ処理装置。
【請求項２３】
メモリがＥＥＰＲＯＭ（電気的消去・プログラム可能型読取専用メモリ）及びフラッシュメモリの１つであることを特徴とする請求項２１のデータ処理装置。
【請求項２４】
データ処理論理が、データ処理装置の初期化に応えて、ベクトルアドレスデータ領域、第１のデータ領域、第２のデータ領域及び第３のデータ領域の１つまたは複数にデータをロードするようにさらに構成されることを特徴とする請求項２１のデータ処理装置。
【請求項２５】
ベクトルアドレスデータ領域、第１のデータ領域、第２のデータ領域及び第３のデータ領域の１つまたは複数が不揮発性メモリを備えることを特徴とする請求項２１のデータ処理装置。
【請求項２６】
不揮発性メモリがＥＥＰＲＯＭ（電気的消去・プログラム可能型読取専用メモリ）またはＰＲＯＭ（プログラマブル読取専用メモリ）の１つであることを特徴とする請求項２５のデータ処理装置。
【請求項２７】
ベクトルアドレスデータ領域、第１のデータ領域、第２のデータ領域、及び第３のデータ領域の１つまたは複数がハードワイヤード論理を備えることを特徴とする請求項２１のデータ処理装置。
【請求項２８】
命令デコーダが、第２の命令を復号することに応えて制御信号の第２の集合をアサートするように構成され、データ処理論理が、第２の制御信号に応えてベクトルアドレスデータ領域、第１のデータ領域、第２のデータ領域、及び第３のデータ領域の１つまたは複数に、第２の命令に含まれるデータをロードするようにさらに構成されることを特徴とする請求項２１のデータ処理装置。
【請求項２９】
データ処理論理が、第１の制御信号に応えて、第１の命令に含まれる第２のオペランドと第１のオペランドを結合し、第２のアドレスを作成するように構成されることを特徴とする請求項２１のデータ処理装置。
【請求項３０】
第１のオペランド及び第２のオペランドが第２のアドレスを作成するために合計されることを特徴とする請求項２９のデータ処理装置。
【請求項３１】
再プログラム可能不揮発性メモリ内の領域への書き込み動作を検出することと、
書き込み動作により書き込まれるデータがキャッシュに入れられる動的メモリ内のメモリの領域を識別するキャッシュロケーションを突き止め、該キャッシュロケーションにより識別されるメモリの領域がキャッシュ領域と呼ばれることと、
再プログラム可能不揮発性メモリの領域にデータを書き込む代わりに、キャッシュ領域にデータを書き込み、
キャッシュ領域が再プログラム可能不揮発性メモリと関連付けられることを特徴とする再プログラム可能不揮発性メモリを備えるデータ処理装置におけるメモリアクセス方法。
【請求項３２】
キャッシュロケーションを突き止めるステップが、
データが動的メモリに記憶できるかどうかを判断することと、記憶できない場合に、
動的メモリ内の１つまたは複数のメモリロケーションを識別することと、
該１つまたは複数のメモリロケーションの内容を再プログラム可能不揮発性メモリに書き込むことと、
メモリの領域内のキャッシュロケーションとして動的メモリのアドレスを提供することとを備えることを特徴とする請求項３１の方法。
【請求項３３】
動的メモリのキャッシュロケーションを突き止めるステップが、動的メモリのセグメント内のキャッシュロケーションを突き止めることに制限されることを特徴とする請求項３２の方法。
【請求項３４】
再プログラム可能不揮発性メモリ内の領域に対する第２の書き込み動作を検出することと、再プログラム可能不揮発性メモリ内の領域にデータを書き込む代わりにキャッシュロケーションにより識別されるメモリの領域に対する第２の書き込み動作と関連付けられるデータを書き込むこととをさらに含むことを特徴とする請求項３１の方法。
【請求項３５】
再プログラム可能不揮発性メモリ内の第２の領域への第２の書き込み動作を検出することと、第２の領域と関連付けられた動的メモリ内のキャッシュ領域があるかどうか、及び第２の領域と関連付けられたキャッシュ領域に対する第２の書き込み動作に関連付けられる書き込みデータがあるかどうかを判断することとをさらに含むことを特徴とする請求項３１の方法。
【請求項３６】
再プログラム可能不揮発性メモリのアドレス空間が動的メモリのアドレス空間と同等又はそれ以上であることを特徴とする請求項３１の方法。
【請求項３７】
１つまたは複数のメモリロケーションを識別するステップがデータのサイズに基づいていることを特徴とする請求項３２の方法。
【請求項３８】
１つまたは複数のメモリロケーションを識別するステップがデータの内容に基づいていることを特徴とする請求項３２の方法。
【請求項３９】
１つまたは複数のメモリロケーションを識別するステップがデータに対してハッシュ関数を適用し、ハッシュ結果を生じさせ、該１つまたは複数のロケーションが該ハッシュ結果に基づいて決定されることを含むことを特徴とする請求項３８の方法。
【請求項４０】
再プログラム可能不揮発性メモリがＥＥＰＲＯＭ（電気的消去・プログラム可能型読取専用メモリ）及びフラッシュメモリの１つであることを特徴とする請求項３１の方法。
【請求項４１】
動的メモリ内のメモリの領域を定義するアドレス範囲を獲得することをさらに含むことを特徴とする請求項３１の方法。
【請求項４２】
再プログラム可能不揮発性メモリから読み取り動作を検出することと、再プログラム可能不揮発性メモリを読み取り、読み取り動作を達成することとをさらに含むことを特徴とする請求項３１の方法。
【請求項４３】
再プログラム可能不揮発性メモリから読み取り動作を検出することと、動的メモリ内のメモリの領域から１つまたは複数のメモリロケーションを読み取り、読み取り動作を達成することとをさらに含むことを特徴とする請求項３１の方法。
【請求項４４】
動的メモリにアクセスするためのバスと、
再プログラム可能不揮発性メモリと、
メモリバスと、再プログラム可能不揮発性メモリとに動作可能に結合されるメモリアクセス論理と、
メモリバスを介して動的メモリとデータを転送するために、及び再プログラム可能不揮発性メモリとデータを転送するためにメモリアクセス論理に動作可能に結合されるプロセッサ論理と、
再プログラム可能不揮発性メモリに対する書き込み動作を検出するように構成されるメモリアクセス論理と、
書き込み動作を検出するメモリアクセス論理に応答するように、及び書き込み動作により書き込まれるデータがキャッシュに入れることができるメモリの領域内のキャッシュロケーションを識別し、該キャッシュロケーションにより識別されるメモリの領域にデータを記憶するように構成されたメモリアクセス論理とを備えることを特徴とするデータ処理装置。
【請求項４５】
メモリアクセス論理がさらに、
該データがメモリの領域に記憶できるかどうかを判断し、
メモリの領域内のキャッシュロケーションとしてメモリの領域内のアドレスを提供し、
メモリの領域内にデータを記憶できないと判断される場合には、
メモリの領域内の１つまたは複数のメモリロケーションを識別し、
再プログラム可能不揮発性メモリに１つまたは複数のメモリロケーションの内容を書き
込むように構成され、
１つまたは複数のメモリロケーションが書き込み動作をキャッシュに入れるために使用できることを特徴とする請求項４４のデータ処理装置。
【請求項４６】
再プログラム可能不揮発性メモリのアドレス空間が動的メモリのアドレス空間と同等又はそれ以上であることを特徴とする請求項４４のデータ処理装置。
【請求項４７】
再プログラム可能不揮発性メモリがＥＥＰＲＯＭ（電気的消去・プログラム可能型読取専用メモリ）及びフラッシュメモリの１つであることを特徴とする請求項４４のデータ処理装置。
【請求項４８】
動的メモリがランダムアクセスメモリであることを特徴とする請求項４４のデータ処理装置。
【請求項４９】
メモリアクセス論理が、再プログラム可能不揮発性メモリから読み取り動作を検出し、そこから読み取り動作を達成するようにさらに構成されることを特徴とする請求項４４のデータ処理装置。
【請求項５０】
メモリアクセス論理が、再プログラム可能不揮発性メモリから読み取り動作を検出し、動的メモリ内のメモリの領域にアクセスし、読み取り動作を達成するようにさらに構成されることを特徴とする請求項４４のデータ処理装置。
【請求項５１】
再プログラム可能不揮発性メモリに対する書き込み動作を検出することと、
書き込み動作に関連付けられる宛て先アドレスがアドレスの第１の範囲内にある場合に、再プログラム可能不揮発性メモリの書き込み動作に関連付けられるデータの高速書き込み動作を実行することとを備えることを特徴とするメモリアクセス方法。
【請求項５２】
アドレスの第１の範囲が再プログラム可能不揮発性メモリのアドレス空間全体に及ぶことを特徴とする請求項５１の方法。
【請求項５３】
宛て先アドレスがアドレスの第１の範囲内にない場合に、再プログラム可能不揮発性メモリに対するデータの低速書き込み動作を実行することを特徴とする請求項５１の方法。
【請求項５４】
アドレスの第１の範囲が再プログラム可能不揮発性メモリのアドレス空間未満のアドレス範囲に及ぶことを特徴とする請求項５１の方法。
【請求項５５】
宛て先アドレスがアドレスの複数の範囲のいずれかに該当する場合に高速書き込み動作を実行するステップが実行されることを特徴とする請求項５１の方法。
【請求項５６】
不揮発性メモリに対する書き込み動作を検出することと、
アクセスモードを決定することと、
アクセスモードが第１のモードである場合には、不揮発性メモリに対する書き込み動作に関連付けられるデータの高速書き込み動作を実行することと、
アクセスモードが第２のモードである場合には、書き込み動作と関連付けられるデータの低速書き込み動作を実行することと、
アクセスモードが第３のモードである場合に、
書き込み動作に関連付けられる宛て先アドレスがアドレスの第１の範囲内にある場合には、不揮発性メモリに対する書き込み動作に関連付けられるデータの高速書き込み動作を実行することと、
宛て先アドレスがアドレスの第１の範囲内にない場合には、不揮発性メモリに対するデータの低速書き込み動作を実行することと、
アクセスモードが第４のモードである場合に、
書き込み動作により書き込まれるデータをキャッシュに入れることができる動的メモリ内のメモリの領域を識別するキャッシュロケーションを突き止め、該キャッシュロケーションにより識別される該メモリの領域がキャッシュ領域と呼ばれ、
不揮発性メモリの領域にデータを書き込む代わりに該キャッシュ領域にデータを書き込むこととを備え、該キャッシュ領域が不揮発性メモリの領域と関連付けられることを特徴とするメモリアクセス方法。
【請求項５７】
メモリに対する書き込み動作がいつ実行されているのかを突き止めるための書き込み検出論理と、
書き込み動作に関連付けられる宛て先アドレスがアドレスの第１の範囲に該当するときに検出されたアドレスを示すように構成されたアドレス検出論理と、
アドレス検出論理に動作可能に結合され、アドレス検出論理が検出されたアドレスを示すときに書き込み動作と関連付けられるデータの浅い書き込み動作を実行するように構成された書き込み制御論理とを備えることを特徴とする再プログラム可能不揮発性メモリにアクセスするためのメモリ制御論理。
【請求項５８】
第１のアドレスレジスタ及び第２のアドレスレジスタをさらに備え、アドレスの第１の範囲が第１のアドレスレジスタ及び第２のアドレスレジスタに記憶されるデータを備えることを特徴とする請求項５７のメモリ制御論理。
【請求項５９】
複数のレジスタ組をさらに備え、各レジスタ組がメモリのアドレス空間内のアドレスの範囲を表し、アドレス検出論理が、宛て先アドレスが複数のレジスタ組によって表されるアドレスの範囲のいずれかに該当するときに検出されたアドレスを示すようにさらに構成されることを特徴とする請求項５７のメモリ制御論理。
【請求項６０】
再プログラム可能不揮発性メモリがＥＥＰＲＯＭ（電気的消去・プログラム可能型読取専用メモリ）及びフラッシュメモリの１つであることを特徴とする請求項５７のメモリ制御論理。
【請求項６１】
メモリに対する書き込み動作がいつ実行されているのかを判断するための書き込み検出ロジックと、書き込み動作に関連付けられるデータの浅い書き込み動作を実行するように構成される書き込み制御論理を備えることを特徴とする再プログラム可能不揮発性メモリにアクセスするためのメモリ制御論理。
【請求項６２】
再プログラム可能不揮発性メモリがＥＥＰＲＯＭ（電気的消去・プログラム可能型読取専用メモリ）及びフラッシュメモリの１つであることを特徴とする請求項６１のメモリ制御論理。
【請求項６３】
再プログラム可能不揮発性メモリに対する書き込み動作を検出し、該書き込み動作が再プログラム可能不揮発性メモリに書き込まれる、関連付けられた宛て先アドレス及び関連付けられた１つまたは複数のデータを有することと、
動作モードを決定することと、
動作モードが第１の運転モードを示す場合には、
宛て先アドレスがアドレスの第１の範囲内にある場合には再プログラム可能不揮発性メモリに対する各データの部分的な書き込み動作を実行することと、
再プログラム可能不揮発性メモリに対する各データの完全書き込み動作を実行することと、
動作モードが第２の運転モードを示す場合には、再プログラム可能不揮発性メモリに対する各データの完全書き込み動作を実行することと、
動作モードが第３の運転モードを示す場合には、再プログラム可能不揮発性メモリに対する各データの部分的な書き込み動作を実行することと、
動作モードが第４の運転モードを示す場合には、
データをキャッシュに入れることのできる動的メモリのメモリの領域を識別するキャッシュロケーションを決定することと、
再プログラム可能不揮発性メモリに書き込む代わりにキャッシュロケーションにより識別されるメモリの領域にデータを書き込むこととを備えることを特徴とする再プログラム可能不揮発性メモリにアクセスするためのメモリアクセス方法。
【請求項６４】
再プログラム可能不揮発性メモリがＥＥＰＲＯＭ（電気的消去・プログラム可能型読取専用メモリ）及びフラッシュメモリの１つであることを特徴とする請求項６３の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してコンピュータプロセッサに関し、さらに詳細には仮想マシンに適したコンピュータプロセッサエンハンスメント（拡張）に関する。
【背景技術】
【０００２】
仮想マシンという概念は、何年もの間、学問研究の話題であった。しかしながら、その考え方はサンマイクロシステムズ社（Ｓｕｎ Ｍｉｃｒｏｓｙｓｔｅｍｓ， Ｉｎｃ．）によってそのＪａｖａプログラミング言語及びランタイム環境により普及されてきた。Ｊａｖａ仮想マシンは、（バイトコードとして知られている）コンパイルされたＪａｖａバイナリコードと、実際にバイトコードを実現し基礎をなすハードウェアプラットホーム（例えばマイクロプロセッサ）との間のインタフェースとしての役割を果たすソフトウェアである。いったんＪａｖａ仮想マシンがプラットホームに提供されると、どのようなＪａｖａプログラムもそのプラットホームで実行できる。
【０００３】
名前が暗示するように、仮想マシンは、物理プロセッサの抽象概念（仮想表現）であり、通常、従来のプロセッサにおける仮想の対照物からなる。例えば、Ｊａｖａ仮想マシンは、命令セット、レジスタセット、スタック、「ガーベージヒープ」、及びメソッド領域などのような要素を指定する。この抽象的または論理的に定義されたプロセッサの現実的な実施が、実際のプロセッサによって実行される、または、マイクロチッププロセッサ自体（いわゆるマイクロコード）の中に内蔵されるネイティブ機械コードである。
【０００４】
仮想マシンがアプリケーションを発見する領域は、スマートカードの使用領域である。通常、スマートカードとはマイクロプロセッサ及びメモリチップ、または、非プログラマブルロジック付きメモリチップだけのどちらかで埋め込まれたカードである。マイクロプロセッサベースのスマートカードは、カード上の情報を追加し、削除し、及び、それ以外の場合には操作することが可能であり、多くの機能に容易に適応できる。例えば、台湾の国民健康カードは、多数のベンダーからダウンロードされた多数のプログラムを記憶できる汎用スマートカードである。他の例には、単一のベンダーからの多数の購入に対してユーザに報酬を与えるために多数の「ロイヤルティ」アプリケーションを保持でき、従業員ＩＤカードとしても機能できるクレジットカードが含まれている。Ｊａｖａ Ｃａｒｄは、Ｊａｖａプログラミング言語の基礎をなす技術に基づいている。Ｊａｖａ仮想マシンの仕様及び言語の定義は、Ｊａｖａ技術をスマートカードで使用可能にするように適応されている。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、部分的には仮想マシンをベースにしたスマートカードの潜在的な利点によって、一般的にはスマートカードなどのようなリソース制限環境での仮想マシン技術の使用によって動機付けられている。
【０００６】
例えば、スマートカードは通常、ＲＯＭ（読取専用メモリ）、ＲＡＭ（ランダムアクセスメモリ）、及びＥＥＰＲＯＭ（電気的消去・プログラム可能型読取専用メモリ）の３種類のメモリを使用している。仮想マシンで使用されるプログラミング言語（例えばＪａｖａ）は抽象的な言語であり、通常はさまざまな種類のメモリを認識しないメモリモデルを使用する。仮想マシン環境の抽象メモリ空間からスマートカードに記憶または接続された物理メモリへの変換は仮想マシンにより実行される。
【０００７】
Ｊａｖａはオブジェクト指向言語であるため、オブジェクトの作成及び破壊にかなり依存している。オブジェクト指向言語では、プロシジャ（つまり関連オブジェクトのない関数）をサポートするための機能がないため、手続きプログラミングを行うことはできない。したがって、指定されたタスクを実行するためにオブジェクトを作成、破壊及び呼び出すことが必要である。
【０００８】
通常、スマートカードのＲＡＭ容量は非常に限られている。つまり、２Ｋ（バイト）から４Ｋが一般的である。プログミングオブジェクトが、限られたＲＡＭで作成される場合には、オブジェクト作成に使用可能なメモリの量が非常に限られているために複雑なタスクを実行することは非常に困難になる。スマートカードは典型的には、ＲＡＭの２Ｋから４Ｋに比較すると、通常３２Ｋから９６ＫのオーダーのＥＥＰＲＯＭでＲＡＭよりはるかに多いＥＥＰＲＯＭ容量を有している。その結果、仮想マシンはオブジェクトインスタンスデータのインスタンス化のためにＥＥＰＲＯＭを使用し、Ｊａｖａスタック及び「一時的ＲＡＭアレイ」のためだけにＲＡＭを使用する。
【０００９】
オブジェクトインスタンスデータ用のＥＥＰＲＯＭメモリを割り当てることにより、ＲＡＭ容量よりはるかに多くのＥＥＰＲＯＭ容量があるために、大型プログラムの作成が可能になる。しかしながら、この付加的な容量には多大なコストがかかる。ＲＡＭは通常、データを読み書きするために１クロックサイクルを必要とする。同様に、ＥＥＰＲＯＭ読み取りは、通常１クロックで実行される。他方、ＥＥＰＲＯＭ書き込み動作は、完了するために通常約４ｍＳ、つまり３．５７ＭＨｚで実行中の約１４２８９クロックサイクルを要する。オブジェクト作成は、オブジェクトを備えるデータの初期化を伴い、ＥＥＰＲＯＭへの書き込みを必要とする。したがって、オブジェクトの作成及びオブジェクトインスタンスデータの更新は極めてゆっくりとしたプロセスであることが理解できる。
【００１０】
同様に、仮想マシンヒープはＥＰＲＯＭから割り当てられる。ヒープとは、たえず読み取られ、さらに重要なことには、書き込まれる動的データ構造のことである。したがって、動的に割り当てられたメモリに書き込むのは非常にゆっくりとしたプロセスである。一般的にはスタック上にない変数は、ＥＥＰＲＯＭヒープから割り当てられるため、非スタック変数に対する書き込みは非常に低速となる。
【００１１】
関心事の別の領域は、適切なメモリ管理を提供する領域にある。スマートカード環境及び他の類似の制限された操作環境との関連で、システムメモリ容量は非常に限られたリソースである。従来、制限されたメモリ容量は、プロセッサにおいて、特に、各ユーザがシステム上で唯一の人物であるかのように多数のユーザが同時にさまざまなプログラムを実行できるマルチタスキングクシステムにおいて、常に問題となっている。最も初期のマルチタスキングシステムは「スワッピング」と呼ばれるメモリのマルチタスキング方法をサポートしていた。このシステムは、ディスクに優先順位が低いプログラムの実行状態全体を保存し、このようにして、メモリを解放して別のさらに優先順位が高いプログラムを実行可能にする。また、スワッピングは、低速Ｉ／Ｏデバイス（例えば、テープドライバ）を用いたデータ転送が完了するのを待って、プログラムがアイドルであるときに起こることがある。
【００１２】
スワッピングがメモリへのアクセスを提供するという点で効果的であるが、プログラムのアドレス空間全体がディスクに及びディスクからスワッピングされなければならないため、性能は最適とはいえない。プログラム全体をスワップアウトするという考え方は、プログラムのアドレス空間がいくつかの固定サイズのページに分割された「ページング」という概念に進化を遂げていった。それから、これらのページのそれぞれは、システムによって要求されるように、プログラム全体をスワップアウトしてシステム性能を向上させる必要もなく、ディスクにスワップアウトされ戻されることが可能であった。
【００１３】
多数のプログラムがプロセッサ上で実行しているときにはメモリ保護機構が必要とされる。ハードウェア命令を介してメモリ保護は従来１つの方法または２つの異なる方法で実現されてきた。第１の方法は特別なデータビットを介して各機械語に追加された。この方法は特別なハードウェアを必要とし、業界規格と互換性がなく、メモリ管理ロジックのためにまもなく打ち切られた。この方法は、メモリ保護を実現するために、メモリ管理装置（ＭＭＵ）と呼ばれる構成要素に依存している。ＭＭＵアプローチは、通常４Ｋｂｙｔｅｓ以上のオーダーでページレベルの粒度を提供する。
【００１４】
別のメモリ管理技法はメモリアクセス速度に関する。「キャッシュ」は高速メモリであり、本来は、実際的な場合では有効アクセス時間が低速メモリより高速メモリのものに近くなるように、より低速なコアメモリに対しスレーブとして想定されていた。キャッシュは、より低速なＲＡＭメモリの平均アクセス時間を短縮するためにもともと使用され、ディスクドライブなどのような機械的な記憶媒体でも使用されていた。
【００１５】
スマートカード環境において、及び、一般的にスマートカード適用以外の任意の類似したリソース制限環境において仮想マシンを操作するのに適切な操作環境を提供するニーズがある。
【課題を解決するための手段】
【００１６】
本発明は、データ構造へのアクセス時間を向上するための特殊化された種類の命令を提供する。本発明の一態様ではセキュリティ機能が提供される。本発明の他の態様では、アクセス時間の向上は、セキュリティ機能を受け入れるために提供される。
【００１７】
本発明はさらに再プログラム可能な不揮発性メモリにアクセスするためのメモリアクセス技法を特色とするデータ処理アーキテクチャを提供する。本発明の一態様では、そのようなメモリにアクセスするためのキャッシュ機構が提供される。本発明の他の態様では、そのようなメモリに書き込むための機構が提供される。
【００１８】
本発明はなおさらに、仮想マシンの実現を高めるように変更可能なメモリ管理技法を提供する。
【発明の効果】
【００１９】
本発明によれば、データ構造へのアクセス時間を向上するための特殊化された種類の命令を提供することができる。
【００２０】
本発明によれば、さらに再プログラム可能な不揮発性メモリにアクセスするためのメモリアクセス技法を特色とするデータ処理アーキテクチャを提供することができる。
【００２１】
本発明によれば、なおさらに、仮想マシンの実現を高めるように変更可能なメモリ管理技法を提供することができる。
【発明を実施するための最良の形態】
【００２２】
本発明は、以下の図面と併せて後に続く記述によって理解可能である。
【００２３】
図１は、コンピューティング環境の高レベル汎用ブロック図表現の中に組み込まれた、本発明によるデータ処理装置（プロセッサ）１０の例示的な実施の形態を示している。データ処理装置１０で具体化されるような本発明の多様な態様は以下の図で示される。データ処理装置および他の構成要素を同時に接続するバス１４が示されている。バス１４は、データバス、構成要素の間で制御信号をアサートするための信号ライン、構成要素に必要とされるような電力を提供するための電力線などを含むが必ずそれらに限定されない、構成要素間で必要とされる可能性がある多様な物理的な接続の表現である。
【００２４】
図１に示される構成要素は典型的であるが、コンピューティング環境を網羅していない。読み取り専用メモリ（ＲＯＭ）１１が提供可能である。ＲＯＭは、一定のシステムで必要とされるようなプログラムコード及びデータを格納できる。ランダムアクセスメモリ（ＲＡＭ）１２が提供可能である。動的ＲＡＭは、一般的には、動作中に記憶装置の一時域を提供するために使用される。１つまたはそれより多くの周辺装置１３も提供可能である。
【００２５】
図２は、本発明によるデータ処理装置１０の例示的な実施の形態における一般化されたブロック図である。データ処理装置は、本発明に従って動作するように構成されたプロセッサロジックの構成要素を備える。プロセッサロジックの例示的な実施の形態は、演算論理装置（ＡＬＵ）２４及び制御論理２３を備えることがある。ＡＬＵ２４は、通常、データ処理装置の命令セットによって指定される多様な動作を実現するように構成されたロジックを備える。制御論理２３は、通常、ＡＬＵ及び他の構成要素の動作を調整してプログラムを備える命令を実行するために、多様な制御信号を提供するように構成された論理を備える。一般に構成要素を接続する多様な線として図中に概略して表示されている制御信号ラインによって制御信号が分散されることを理解できる。１つのそのような制御信号は、制御論理に提供されるＡＬＵからの中断信号２４ａである。
【００２６】
命令デコーダ構成要素２２は、データ処理装置１０の命令セットを受信し復号するように構成される論理を備える。命令デコーダ構成要素は、復号される特定の命令に応じて制御信号及びデータ信号を生成し、図中に概略して示されている信号ラインを介して、次に命令の実行を達成するために適切な制御信号を生成する制御論理２３に前述の信号を渡す。
【００２７】
データ処理装置１０は、さらに複数のデータ記憶構成要素を備える。特定の実施の形態では、データ記憶装置構成要素はデータレジスタ２１ａ〜２１ｈである。例えば、命令レジスタ２１ａが命令デコーダ２２に供給される命令を記憶するために提供できる。汎用レジスタ２１ｂの集合は、データを記憶するために提供できる。通常、データ処理装置の命令セットにはＡＤＤ（加算）、ＳＵＢＴＲＡＣＴ（減算）、ＣＯＭＰＡＲＥ（比較）などのようなデータ操作命令が含まれている。これらの命令は、データを記憶し検索するために汎用レジスタ２１ｂを使用できる。プログラムカウンタ２１ｃは、命令レジスタ２１ａの中にフェッチされる次の命令のアドレスを格納するレジスタである。図１は、追加のデータ記憶構成要素、すなわちＰＲＯＴＩＮＤＥＸレジスタ２１ｄ、ＰＲＯＴＭＡＳＫレジスタ２１ｅ、ＰＲＯＴＩＤレジスタ２１ｆ、ベクトルベースレジスタ（ＶＢＲ）２１ｇ及びＥＥＰＲＯＭ＿ＭＯＤＥレジスタ２１ｈを示す。これらのレジスタの目的は、本明細書の適切な部分で後述される。
【００２８】
データ処理装置１０は、さらに再プログラム可能な不揮発性メモリを備える。図２で例示された特定の実施の形態は、再プログラム可能な不揮発性メモリとしてＥＥＰＲＯＭメモリ２６を示している。代替構成には、フラッシュメモリなどのような他の類似した再プログラム可能な不揮発性メモリが含まれることがある。メモリコントローラは本発明によるＥＥＰＲＯＭメモリ２６にアクセスを提供するように構成されるＥＥＰＲＯＭコントローラ２７として具体化される。適切な制御ライン及び内部データバスが多様な構成要素を相互接続するために存在することが理解される。そのようなラインは図２に概略的に表されている。
【００２９】
ＥＥＰＲＯＭメモリ２６に加えて、外部メモリ（例えば、動的ＲＡＭ）へのアクセスは、適切なメモリバス１４ａを介して提供できる。メモリ管理装置（ＭＭＵ）２５は、データ処理装置１０のメモリアクセス論理構成要素の例示的な実施の形態を構成する。ＡＬＵ２４により必要とされるメモリアクセスはＭＭＵ２５によって処理できる。ＭＭＵは、本発明に従ってアドレス変換を実行するように構成される。図２に図示される実施の形態で分かるように、ＭＭＵは（ＥＥＰＲＯＭコントローラ２７を介して）ＥＥＰＲＯＭメモリ２６にアクセスを提供するのにも役立つ。
【００３０】
図３は、本発明によるＭＭＵ２５の例示的な実施の形態を概略的に示す。図に示されているように、データ処理装置１０の特定の実施の形態では２４ビットアドレス指定方式が使用されている。言うまでもなく、他のアドレスサイズも本発明に従って容易に収容可能であることが理解できる。
【００３１】
図３は、ＡＬＵ２４からのアドレス信号がＭＭＵ２５に提供されることを示している。特定の実施の形態では、これは、ＡＬＵからＭＭＵにアドレスラインを提供することにより達成できる。ＭＭＵは、特定の実施の形態ではメモリバスに連結されるＭＭＵアドレスライン３４ａ〜３４ｃを備え図２に図示されるメモリバス１４ａに、アドレス信号を提供する。
【００３２】
ＭＭＵ２５は、値を提供するデータストア３１を備える。図示されている実施の形態では、０ｘＢ０という値が提供される。データストア３１からの値はコンパレータ３０に与えられる。コンパレータは、アドレスビットの部分集合に対してデータストア３１からの値の比較を実行する。図示された実施の形態では、２４ビットアドレスの最上の８ビット（Ａ23−Ａ16）がコンパレータ３０によって比較される。コンパレータの出力信号３０ａは、本発明の特定の実施の形態では適切に構成されたマルチプレクサである場合があるデータスイッチ３２を制御するために使用される。
【００３３】
ＭＭＵ２５は、さらにデータ変換テーブル構成要素３３を備える。データテーブルは、入力値３３ａに基づいて出力値３３ｂを生成するように構成されている。本発明の特定の実施の形態では、アドレスビットの別の部分集合がデータテーブル３３への入力として、つまりアドレスビットＡ15〜Ａ8への入力として働く。データテーブルの出力３３ｂは、１６本のビット線上で提供される１６ビット値である。その１６本のビット線は上位８個のビットと下位８個のビットとに分割できる。
【００３４】
アドレスビットＡ23〜Ａ16を表すアドレスラインは、データスイッチ３２の入力３２ａに提供される。データテーブル構成要素３３からの上位８ビットはデータスイッチの入力３２ｂに提供される。データスイッチは、コンパレータ出力信号３０ａが第１のデータ状態にあるときに、その出力３２ｃに入力３２ａを提供するように構成される。データスイッチは、コンパレータ出力信号が第２のデータ状態にあるときに、出力３２ｃに入力３２ｂを提供するように構成される。
【００３５】
アドレスビットＡ15〜Ａ8を表すアドレスラインは、データスイッチ３２の入力３２ｄに提供される。データテーブル構成要素３３からの下位の８ビットはデータスイッチの入力３２ｅに提供される。データスイッチは、コンパレータ出力信号３０ａが第１のデータ状態にあるときに、その出力３２ｆに入力３２ｄを提供するように構成される。データスイッチは、コンパレータ出力信号が第２のデータ状態にあるときに出力３２ｆに入力３２ｅを提供するように構成される。
【００３６】
ＭＭＵ２５は、ＭＭＵアドレスライン３４ａに、すなわち、アドレスビットＡ7〜Ａ0に直接的にアドレスビットの第３の部分集合を依然として渡すように構成されている。
【００３７】
図３Ａは、アドレスビット変換がないときの動作を示す。ＡＬＵ２５からのアドレスの上位８ビット（Ａ23〜Ａ16）が値０ｘＢ０を格納しないとき、コンパレータ３０はコンパレータ出力信号３０ａを第１のデータ状態に置くように構成される。その結果、データスイッチ３２は、ＡＬＵ２５からＭＭＵアドレスライン３４ｃ，３４ｂに直接的にアドレスラインＡ23〜Ａ8を渡すにすぎない。アドレスラインＡ7〜Ａ0は常にＭＭＵアドレスライン３４ａに直接的に渡される。その結果、アドレス変換は起こらない。これが、破線によって図３Ａに示されている。
【００３８】
図３Ｂは、ＭＭＵ２５の変換動作を示している。ＡＬＵ２５からのアドレスの最上の８ビット（Ａ23〜Ａ16）が値０ｘＢ０を格納しないとき、コンパレータ３０はコンパレータ出力信号３０ａを第２のデータ状態に置くように構成される。その結果、データスイッチ３２はデータテーブル３３からＭＭＵアドレスライン３４ｃに出力ライン１５〜８を渡す。同様に、データテーブルからの出力ライン７〜０はＭＭＵアドレスライン３４ｂに渡される。アドレスラインＡ7〜Ａ0は、再びＭＭＵアドレスライン３４ａに直接的に渡される。
【００３９】
図４は、非連続物理メモリから、ＭＭＵ２５によって提供可能な連続メモリ空間へマッピングを例示するメモリマップ見本を示している。図４は、仮想マシンにアドレス空間を与えるために、どのようにしてこのマッピング方式が適用できるのかも示している。第１に、マッピングの説明をする。図は物理メモリのメモリマップ４２を示している。物理メモリは、３種類のメモリ、すなわち、ＥＥＰＲＯＭ、ＲＡＭ、及びＲＯＭを備える。この特定の実施では２４ビットである物理メモリのアドレス空間は、３種類のメモリの間で区切られている。図４に図示される見本では、ＲＯＭは下位アドレス空間を占有し、ＥＥＰＲＯＭが上位アドレス空間を占有してＲＡＭメモリをアドレス空間の中間部分に割り当てる。物理メモリの６４Ｋの断片４１は拡大されて示されている。メモリ断片のアドレス空間は０ｘＢ０ＦＦＦＦから０ｘＢ０００００に広がる。
【００４０】
図３に図示されるＭＭＵ詳細を考える。アドレス（例えば、０ｘ８７６０）がＡＬＵ２４からＭＭＵ２５に与えられると、ＭＭＵが、書き込み動作または読み取り動作のための記憶場所０ｘ８７６０のコンテンツにアクセスするために、変更せずにこのアドレスをバス１４ａ（図２）に渡すにすぎないことが分かる。それから、図示されている特定の例の場合、記憶場所０ｘ８７６０はＲＯＭの中にあるため、アクセスは読み取り動作となる可能性がある。
【００４１】
ここで、ＡＬＵ２４が、アドレスを、例えば０ｘＢ０ｂ3ｂ2ｂ1ｂ0を提供するときを考える（ｂnは４ビット値）。ＭＭＵ２５はそのアドレスを形式０ｘＮ3Ｎ2Ｎ1Ｎ0ｂ1ｂ0の別のアドレスにマッピングする（Ｎnは４ビット値）。図３で分かるように、下位８ビット（０ｘｂ1ｂ0）は通過される。しかしながら、データテーブル３３は、ＡＬＵによってもたらされる元の１６ビット値（０ｘＢ０ｂ3ｂ2）を置換するために新しい１６ビット値（０ｘＮ3Ｎ2Ｎ1Ｎ0）を提供する。さらに、新しい１６ビット値が中間の８ビット（０ｘｂ3ｂ2）に基づいて選択される。したがって、ＭＭＵは、６４Ｋのメモリ断片４を備える２５６個の連続２５６バイトページのそれぞれを、２バイトの境界に位置する物理メモリ４２の中の任意の２５６バイトページにマッピングできる。例えば、２５６バイトページ４３ａは、ページ境界制約を被る物理メモリアドレス空間内の任意のページとなることがある物理メモリ内の２５６バイトページにマッピングされて図示されている。同様のことが断片４１を備える他の２５６バイトページにも当てはまる。セグメント４３ｆは、２つまたはそれより多くの２５６バイトページの連続集合体が同じサイズの物理メモリにおける別の領域にマッピングされ得ることを示し、物理アドレス空間に渡る全てにそれぞれ２５６バイトページをばらまく必要がないという考えを強調している。
【００４２】
一定の値０ｘＢ０を供給するデータストア３１が変更される場合には、別の６４Ｋ断片をマッピングできる。なお、断片４１の中の２５６バイトページはそれ自体に、または、断片４１の中の別の２５６バイトページにマッピング可能である。データテーブル（変換テーブル）３３の内容がマッピング機能を決定することが分かる。
【００４３】
したがって、ＭＭＵ２５などのような本発明に従って具体化されたメモリ制御論理は、その物理メモリアドレス空間の連続的部分を複数のセグメントに区切る興味深い能力、および、それぞれのそのようなセグメントをその物理メモリ内のどこかに等しい大きさのセグメントにマッピングする興味深い能力を有する。言い換えると、ＭＭＵはアドレス空間の部分集合だけにアドレス変換を提供できる。２５６バイトページサイズの粒度は、１バイト粒度から幾らか大きい粒度（例えば、別の典型的なページサイズは１２８バイトである可能性がある）まで任意のページサイズになるように変更可能であることが分かる。図３を参照すると、ページサイズは（ＡＬＵからの）アドレスラインＡ23〜Ａ0を再グループ化することによってＭＭＵ内で変更可能である。
【００４４】
単なる一例として、（図３を参照して）ＭＭＵが以下のように再構成される極端な（且つありそうもない）例を考える：
Ｇ２アドレスラインは、Ａ15〜Ａ8の代わりにＡ15とＡ2から構成され、および、
Ｇ３アドレスラインはＡ7〜Ａ0（４バイトページ）の代わりにＡ1とＡ0から構成される。
データテーブル３３は４０４８（２14）の２２ビット値を提供し、それによって、マップの４バイトページが４バイトの境界に当たるという制限付きで、ＭＭＵが、６４Ｋブロックに格納された４０４８個の４バイトの「ページ」を、物理メモリ内の他の４バイトページにマッピング可能になる。
【００４５】
別の実施によれば、Ｇ１アドレスラインの数は、断片４１の可能な場所を変えるために数を増減され得る。図３に示されているように、Ｇ１アドレスラインは２４ビットのアドレス空間の上位８ビットを備える。図示されているように、図３のＭＭＵ２５は、６４Ｋの境界上にあるように断片４１を制限する。しかしながら、多様な効果を達成するために、他の多数の置換が、ＭＭＵに提供されるアドレスラインに対して行うことができることが理解され得る。
【００４６】
今回、仮想マシンの概念を念頭に、もう一度、図４のメモリマップを考える。図は、仮想マシンのモニタ構成要素ＶＭがメモリ内に、特にＲＡＭメモリ内にロードされていることを示している。ＶＭは０ｘＢ０ＦＦＦＦから（０ｘＢ０ｈ3ｈ2ｈ1ｈ0＋１）まで物理アドレス空間を占有する。仮想マシンＲＡＭメモリ（ＶＭ ＲＡＭ）は０ｘＢ０ｈ3ｈ2ｈ1ｈ0から０ｘＢ０００００までアドレス空間を占有する。この構成は、仮想マシンに、０ｘＢ０ＦＦＦＦから０ｘＢ０００００までの物理アドレス空間を占有する６４Ｋの仮想アドレス空間を与える。したがって、メモリ断片４１は仮想マシンの仮想アドレス空間を表す。図４の左端部分に図示されているアドレス範囲は、仮想マシンの仮想アドレス範囲０ｘＦＦＦＦ〜０ｘ００００を表す。
【００４７】
仮想マシンが初期化されると、初期化ルーチンの１つが変換テーブルの初期化を実行する。このように、本発明におけるこの態様の実施の形態では、変換テーブルは、データ処理装置の物理アドレス空間内に関連するアドレスを有するデータ処理装置１０内のデータ記憶構成要素（例えば、データ変換テーブル３３）である。ＭＭＵ２５はこのアドレスを認識し、そのテーブルを使って要求されたＩ／Ｏを実行するように構成される。こうして、以下のコード断片の見本を使って、仮想マシンの初期化シーケンスの一部としてテーブルを初期化できる。
【００４８】
void VM_init()
[
for (i = ROM_START; i < ROM_END; ++i)
translate[i] = &ROM[i];
for (i = RAM_START; i < RAM_END; ++i)
translate[i] = &RAM[i];
]
ここにおいて、ROM[ ]とRAM[ ]は、物理ページへの仮想ページのマッピングを保持するアレイであり、translate[ ]は変換テーブル３３である。
【００４９】
仮想マシンの動作は、データ処理装置１０によって、０ｘＢ０ＦＦＦＦと（０ｘＢ０ｈ3ｈ2ｈ1ｈ0＋１）との間の物理メモリ４２に記憶された仮想マシンモニタを実施するコードの実行に相当する。仮想マシンにより実行されるアプレットはＶＭ ＲＡＭ領域にロードされる。データ処理装置が仮想マシンコードを実行するとき、アドレス基準は０ｘＦＦＦＦＦＦ〜０ｘ０の物理メモリアドレス空間４２内のアドレスである。しかしながら、仮想マシンがアプレットコードを「実行する」ときには、アドレス基準は０ｘＦＦＦＦ〜０ｘ０の仮想メモリアドレス空間内のアドレスである。仮想マシンコードは仮想アドレスのリアルアドレスへの変換を実行しなければならない。
【００５０】
仮想マシンには仮想アドレスの物理アドレスへの変換を実行する機能性が含まれている。以下のコード断片を使用できる：
char VM_read_byte (unsigned int addr)
[
char*p = (char*) ((addr & 0xff) | (translate [addr (( 8]));
return (*p);
]
このサブルーチンは、物理アドレス空間内で実行され、物理アドレス空間４２内のアドレスを表す値を返す。アドレスが０ｘＢ０で開始する２４ビットアドレス空間でＶＭが実行するので、ＭＭＵ２５は、前述されたマッピングに従って、以下のアドレス基準
((addr & 0xff) | (translate [addr (( 8]))
を解決する。図４Ａはこのマッピングプロセスを図式で示している。
【００５１】
図５、図５Ａ及び図６は、本発明の別の態様に従って、データを読み取るための特定の実施の形態を例示している。図５は、本発明に従って保護される読み取り動作を達成するための制御シーケンスを強調している。図６は、読み取り動作に関与し図２に示されたデータ処理装置１０の構成要素を（太線で）強調する。図５Ａは、オブジェクト上でのＰＭＯＶ命令の作用を概略的に示す。
【００５２】
本発明のこの態様による命令の見本は、以下のアセンブリコードフォーマット命令：
PMOV .L @(K, Rm), Rn
により表すことが可能である。ここにおいて、
PMOVはデータ転送命令用の簡略記述であり、
.Lは転送されるデータ要素（例えばバイト）のサイズ（または数）を示し、
(K, Rm)は、レジスタＲmの内容にＫを加算することで形成されるソースアドレスを表し、
Rmはオブジェクト（図５Ａ）に対するポインタであり、
Rnは宛て先レジスタであり、
符号@は間接アドレス指定のための従来の表記である。
【００５３】
言うまでもなく、この命令の見本が単なる例示にすぎず、本発明のこの態様を説明するために有効であることが理解できる。しかしながら、当業者は、命令の無数の考えられる変形があることを容易に理解する。例えば、データサイズを異なって指定できる。転送に関与するデータの量は任意の適切なサイズであることがある。例えば、「.L」のクオリファイアーは、通常、転送されるバイトの数を指定する。「.B」、「.W」などのような他のクオリファイアーを提供することができる。さらに一般的には、必要に応じてブロックレベル転送（例えば２５６バイト）を実行するＰＭＯＶ命令を与えることができる。代替のアドレス指定モードを提供できる。ここでは、間接アドレス指定がソースだけに提供される。しかしながら、宛て先を間接的にアドレス指定することもできる。示されるように、第１のオペランドはソースオペランドであり、第２のオペランドは宛て先を指定する。言うまでもなく、両オペランドを逆にすることができる。
【００５４】
命令デコーダ２２が前記ＰＭＯＶ命令を復号すると、復号された命令に対応する信号が読み取り動作を達成するために制御論理２３に提供される。本発明のこの態様における特定の実施の形態では、制御論理２３は、図５に示された動作のシーケンスを実行するために、制御信号をアサートするように構成される。第１に、ステップ５１では、ＡＬＵ２４がレジスタＲm内に格納された値をフェッチするために制御される。これは、データが読み取られるオブジェクトのアドレスである。データ記憶構成要素ＰＲＯＴＩＮＤＥＸ２１ｄに格納された値は、第２のアドレスを入手するためにＲmからアドレスに追加される。第２のアドレスは、それが別のアドレスに変換されてよい場合には、ＭＭＵ２５に提供される。それから、ＭＭＵにより提供されるアドレスは、アドレス指定された記憶場所に格納される内容を検索するために使用される。前記の説明から、アドレス指定された記憶場所がデータ処理装置のメモリ空間内のどこかにあることを思い出す。本発明のこの態様における特定の実施の形態では、検索された内容は、ＡＬＵ２４に提供される８ビット値である。
【００５５】
次に、ステップ５２では、ＡＬＵ２４は、データ記憶装置構成要素ＰＲＯＴＭＡＳＫ２１ｅに格納された値をフェッチし前記した値を使って検索された内容を論理的にＡＮＤ（論理積）するように制御される。その結果はステップ５３でＰＲＯＴＩＤ２１ｆに格納された値と比較される。
【００５６】
それから、一致が検出されると、ＡＬＵ２４は、ステップ５５で、命令デコーダ２２によって提供される値Ｋを、ソースレジスタＲmに格納されたアドレスと一緒に追加し、読み取られるデータが位置している第３のアドレスも獲得するように制御される。データがアクセスされ、図５Ａに示されるように宛て先レジスタＲnに記憶される。
【００５７】
ステップ５３の比較が一致を生じさせない場合には、ＡＬＵ２４は、ステップ５４で、制御信号２４ａをアサートすることによって例外をトリガーするように制御される。制御信号は制御論理２３に提供される。本発明の特定のインプリメンテーションに従って、制御論理は、ＡＬＵ２４を制御し、データ記憶装置構成要素ＶＢＲ２１ｇに含まれる値を検索し、アドレスを作成するために制御論理により供給される一定の値に該値を追加し、制御信号２４ａに応えて追加の制御信号をアサートするように構成される。それからアドレスはプログラムカウンタ２１ｃにロードされ、実行がそのアドレスで再開する。
【００５８】
前記から、この読み取り動作の「保護されている」態様がＰＲＯＴＭＡＳＫ２１ｅとＰＲＯＴＩＤ２１ｆを含む動作から生じることが理解できる。当業者は、ステップ５４で実行される処理がベクタ割り込みと呼ばれることのある動作に相当することを容易に理解するだろう。ＶＢＲレジスタ２１ｇは、アドレスのテーブル（割り込みベクタテーブル）に対するポインタを表す。ベクトルテーブルコンテンツが動的であろうと、あるいはブートアップ時であろうと、通常アプリケーションによって定義されることが当業者によって理解され、認識される。ＰＭＯＶコマンドを用いる読み取り違反のケースでは、制御論理２３により提供される一定値はこの特定の読み取り違反に関連付けられるベクトルテーブル内の特定のエントリを表す。この一定値がプログラム可能であり、ブートアップ時に初期化されるか、あるいは制御論理２３でハードコード化される代わりに（例えばメモリから）動的に更新できることが理解できる。
【００５９】
図７、図７Ａ及び図６は、本発明に従ってデータを書き込むための特定の実施形態を描く。図７は、本発明に従って保護されている書き込み動作を達成するための制御シーケンスを強調する。図６は、書き込み動作に関与する図２に図示されるデータ処理装置１０の構成要素を（太線で）強調する。図７Ａは、オブジェクトに対するＰＭＯＶ命令の作用を概略して描く。
【００６０】
本発明のこの態様による命令の見本は、以下のアセンブリコードフォーマット命令によって表すことが可能で、
PMOV .L Rn， @(K,Rm)
この場合、ＰＭＯＶはデータ転送命令のためのニーモニックであり、
．Ｌは転送されるデータ要素（例えばバイト）のサイズ（または数）を示し、
Ｒmは書き込まれるオブジェクト（図７Ａ）を指し、
（Ｋ，Ｒn）のＫはオブジェクト内のロケーションを表し、Ｒnはソースであり、
＠符号は間接アドレス指定のための従来の表記である。
ここでは、前記の読み取り動作のケースでのように、この命令の見本が単に例示的にすぎず、本発明のこの態様を説明するために有効であることに留意する。しかしながら、当業者は、命令に無数の考えられる変形があることを容易に理解するであろう。例えば、データサイズは異なるように指定できる。転送に関与するデータの量は、任意の適切なサイズである場合がある。例えば、「．Ｌ」修飾子は、通常転送されるバイトの数を指定する。「．Ｂ」、「．Ｗ」などの他の修飾子等を提供することができる。さらに一般的には、所望される場合に、ブロックレベルの転送（例えば２５６バイト）を実行するＰＭＯＶ命令を提供できる。
【００６１】
本発明のこの態様のこの特定の実施形態では、同じニーモニック、ＰＭＯＶが読み取り動作及び書き込み動作に使用される。したがって、該２つの動作を区別するために、オペランドを指定するための構文は読み取り動作と書き込み動作の間で異なる。これにより、アセンブラは区別をつけ、読み取り動作または書き込み動作のどちらかを表すために適切なオペコードを生成できる。別々のニーモニックが、１つは読み取り用に、もう１つは書き込み用に使用できることが理解できる。代わりに、別の構文規約も使用できる。
【００６２】
命令デコーダ２２がＰＭＯＶ命令を復号すると、復号された命令に対応する信号が、書き込み動作を達成するために制御論理２３に与えられる。本発明のこの態様の特定の実施形態では、制御論理２３は、図７に示されている動作のシーケンスを実行するために、制御信号をアサートするように構成される。第１に、ステップ７１で、ＡＬＵ２４はレジスタＲm（つまりオブジェクトに対するポインタ）に記憶される値及びデータ記憶構成要素ＰＲＯＴＩＮＤＥＸ２１ｄに記憶される値をフェッチし、該２つの値を追加し、第２のアドレスを獲得するように制御される。第２のアドレスは、それが別のアドレスに変換されてよいＭＭＵ２５に提供される。ＭＭＵ２５によって提供されるアドレスは、次にアドレス指定されたメモリロケーションに含まれる内容を検索するために使用される。本発明のこの態様の特定の実施形態では、検索される内容はＡＬＵ２４に提供される８ビット値である。
【００６３】
ステップ７２では、ＡＬＵ２４は次にデータ記憶構成要素ＰＲＯＴＭＡＳＫ２１ｅに含まれる値をフェッチし、検索された内容と該値を論理的にＡＮＤ（論理積）するように制御される。結果は、ステップ７３でＰＲＯＴＩＤ２１ｆに記憶される値と比較される。
【００６４】
一致が検出されると、次にＡＬＵ２４は、ステップ７５で命令デコーダ２２によって提供される値ＫをレジスタＲmの内容に追加し、書き込み動作に関連付けられるデータが書き込まれるメモリ内の（つまりオブジェクトの）領域を示す計算されたアドレスを獲得するように制御される。制御論理２３は、次に制御信号をアサートし、図７Ａに描かれているように、計算されたアドレスで示されるメモリ内の領域へのソースレジスタＲnに記憶されるデータの書き込み動作を実行する。ソースレジスタＲnが書き込まれるデータ（例えば１バイトまたは複数バイトを備える）を記憶するか、あるいはそれがソースデータのメモリ内のロケーションを指すことができることが理解できる。代わりに、ソースレジスタはオブジェクトに書き込まれるデータのブロックのメモリ内での開始アドレスを表すことができる。
【００６５】
ステップ７３からの比較が一致を生じさせない場合には、ＡＬＵ２４はステップ７４で制御信号２４ａをアサートすることにより例外をトリガーするように制御される。制御信号は制御論理２３に提供される。本発明の特定のインプリメンテーションに従って、制御論理は、ＡＬＵ２４を制御し、データ記憶構成要素ＶＢＲ２１ｇに記憶される値を検索し、該値を制御論理によって供給される一定値に追加し、アドレスを作成するために制御信号２４ａに応えて追加制御信号をアサートするように構成される。次に、アドレスはプログラムカウンタ２１ｃにロードされ、実行がそのアドレスで再開する。
【００６６】
前記から、書き込み動作の「保護されている」態様がＰＲＯＴＭＡＳＫ２１ｅとＰＲＯＴＩＤ２１ｆを含む動作から生じることが理解できる。当業者は、ステップ７４で実行される処理が、ベクタ割り込みと呼ばれることのある動作に相当することを容易に理解するだろう。前述されたように、ＶＢＲレジスタ２１ｇはアドレスのテーブル（割り込みベクタテーブル）に対するポインタを表す。ＰＭＯＶコマンドを用いる書き込み違反のケースでは、制御論理２３によって提供される一定値は、この特定の書き込み違反に関連付けられるベクトルテーブル内の特定のエントリを表す。該一定値は読み取り違反のための一定値と同じである場合がある、あるいは同じではない場合がある。この一定値がプログラム可能であり、ブートアップ時に初期化される、あるいは制御論理２３でハードコード化される代わりに（例えばメモリから）動的に更新できることがさらに理解される。
【００６７】
ここで図８から図１３を参照すると、本発明の態様に従ったメモリアクセス方法の例示的な実施例が説明される。データ処理装置１０は、さらにＥＥＰＲＯＭ＿ＭＯＤＥデータ記憶装置構成要素２１ｈを備える。このレジスタの内容はＥＥＰＲＯＭメモリ２６のためのアクセスモードを示す。例えば、図８に描かれているように、「３」というＥＥＰＲＯＭ＿ＭＯＤＥ値は、ＥＥＰＲＯＭメモリ空間に対するすべての読み取りアクセス及び書き込みアクセスが例外を生じさせ、まもなく説明される方法で例外ハンドラによって処理されることを示すために使用できる。本発明のこの態様の他の実施形態では、ＥＥＰＲＯＭ＿ＭＯＤＥレジスタ２１ｈが便利であるデータ処理装置１０内のどこでも実現できることが理解できる。例えば、データストアはＥＥＰＲＯＭコントローラ２７内で提供できる。
【００６８】
図９は、ＥＥＰＲＯＭアクセス例外を生じさせる際に関与する図２に描かれているデータ処理装置１０の構成要素を太字で強調する。命令レジスタ２１ａでフェッチされる命令は命令デコーダ２２によって復号される。復号された命令により生成された適切な制御信号は制御論理２３に提供される。ＡＬＵ２４は次に制御論理によりアサートされ、ＡＬＵに提供される制御信号に従って制御される。メモリ参照が行われると、アドレスは命令のオペランド（複数の場合がある）から決定され、ＭＭＵ２５に提供される。本発明の特定の実施形態に従って、ＥＥＰＲＯＭコントローラ２７はＥＥＰＲＯＭメモリと関連付けられるアドレス空間を認識するように構成される。ＥＥＰＲＯＭコントローラは、それがアドレスをＥＥＰＲＯＭアドレスであると認識するとＥＥＰＲＯＭ＿ＭＯＤＥレジスタ２１ｈ内の値をチェックするようにさらに構成される。ＥＥＰＲＯＭ＿ＭＯＤＥが「３」である場合には、ＥＥＰＲＯＭコントローラは制御論理２３に提供される制御信号２７ａをアサートするように構成できる。（例えば、ＶＢＲレジスタ２１ｇと関連して説明されるような）適切な例外処理は、適切な例外ハンドラで実行を続行するために制御論理によって実行できる。
【００６９】
図９に図示されている例示的な実施形態は、ＥＥＰＲＯＭ＿ＭＯＤＥ「３」の場合、ＥＥＰＲＯＭコントローラ２７が、ＥＥＰＲＯＭアドレス空間の全範囲に入るアドレスで制御信号２７ａをトリガーするように構成されることを示している。言うまでもなく、コントローラはＥＥＰＲＯＭアドレス空間のアドレスの部分集合で制御信号をトリガーするように構成できることが理解できる。これは１つまたは複数の所定の（またはプログラム可能で定義可能な）アドレス範囲内で、アドレスを認識することを含む場合がある。適切なデータ記憶装置構成要素（例えばレジスタ）は、複数のアドレス範囲を実現するために提供できることが理解できる。
【００７０】
図１０は、本発明によるキャッシュ方法を描く。アプリケーション１０１は、ＥＥＰＲＯＭメモリ１０３、またはなんらかの他の類似した再プログラム可能不揮発性メモリを用いて、Ｉ／Ｏ動作を実行すると示されている。キャッシュ機構１０２は、すべてのＩ／Ｏ動作のキャッシュ機能を提供する。本発明のこの態様に従って、キャッシュ機構は読み取り動作に加えて書き込み動作をキャッシュする。本発明のこの態様の特定の実施形態では、図中に図示されているようなキャッシュ機構は例外ハンドラルーチンとして実現され、キャッシュメモリとしてＲＡＭを使用する。
【００７１】
図１１は本発明のキャッシュ方法の追加の態様を描く。アプリケーション１１１はＥＥＰＲＯＭメモリ１１３、またはなんらかの他の類似した再プログラム可能不揮発性メモリを用いてＩ／Ｏ動作を実行する。本発明のこの態様に従って、キャッシュ機構１１２は（明示的に示されていない「書き込み」キャッシュに対し）書き込み動作だけをＥＥＰＲＯＭメモリにキャッシュする。キャッシュされた書き込み動作により更新されるメモリロケーションが、「書き込み」キャッシュの内容に基づいて読み取られるという例外はあるが、読み取り動作はＥＥＰＲＯＭから直接的に実行される。本発明のこの態様の特定の実施形態では、キャッシュ機構は例外ハンドラルーチンとして実現され、「書き込み」キャッシュはＲＡＭによって提供される。
【００７２】
いっとき図９を再び参照すると、制御信号２７ａを検出すると、制御論理２３は、本発明のある特定の実施形態で、図１０または図１１に図示されるキャッシュ動作を達成するように構成できることが理解できる。ある特定のインプリメンテーションでは、データ処理装置１０はキャッシュ動作を実行するためにハードワイヤード論理を含むことができる。代わりに、制御論理２３は、制御信号２７ａに応えて例外ハンドリングを実行し、例外ハンドラルーチンに実行を転送できる。
【００７３】
図１２は、本発明のこの態様の実施形態に従った「書き込み」キャッシュ動作の間の処理を描く。図９に説明されているように、アプリケーションによるＥＥＰＲＯＭメモリ２６に対する書き込み動作１２３が検出できる。キャッシュ１２４はオペレーション１２２において、キャッシュされるデータを記憶するために空間を作る、あるいは他のキャッシュされたメモリを「追い出す」必要がある場合がある。本発明のこの態様では、データはＥＥＰＲＯＭメモリまたは他の類似した再プログラム可能不揮発性メモリに対する書き込み動作に関連付けられた書き込みデータである。図に示されているキャッシュ１２４は、キャッシュ処理及びキャッシュメモリを表すことが理解できる。例えば、特定の実施形態では、キャッシュ処理は例外を介したソフトウェアルーチンアクセスである場合がある。キャッシュメモリはＲＡＭメモリ１２自体である場合がある。従来のキャッシュ方式では、高速キャッシュメモリがＲＡＭの読み取りアクセスを改善するために使用されることに注目すべきである。したがって、本発明のこの態様のこの特定の実施形態において、ＲＡＭがキャッシュメモリの役割を果たすことは皮肉である。
【００７４】
通常、キャッシュは多くのキャッシュラインに編成され、各キャッシュラインが（キャッシュラインサイズと呼ばれる）メモリの特定の数の連続バイトを保持する。キャッシュは、通常、複数のキャッシュラインを、例えばアドレスビットハッシングなどのハッシングアルゴリズムなどの単純なマッピング関数に基づいたグループに編成する。その結果、キャッシュに入れられるデータは、マッピング関数によって決定されたキャッシュライングループに該当するキャッシュラインだけに記憶される。キャッシュラインがそのグループの中で使用できない（キャッシュミス）場合、キャッシュはそのグループの中からキャッシュラインを追い出さなければならない。編成及び追い出し機構は、現在のキャッシュ配備においては標準的な慣行であり、本発明の態様に従って、「書き込み」キャッシュのために適応されている。例えば、本発明の実施形態に従って、キャッシュラインを追い出すことは、書き込み動作を達成するためにＥＥＰＲＯＭメモリ内の領域への書き込み動作を実行することを含む。したがって、これがキャッシュ内のキャッシュラインを解放し、キャッシュに入れられるデータを記憶する。ＥＥＰＲＯＭへの書き込み動作をいつ実行するのかという問題は、読み取りキャッシュに従来利用される方針により答えることができる。
【００７５】
ＥＥＰＲＯＭからデータを（メモリ１２４内に）キャッシュに入れる必要がある場合、データを保持するために使用可能なキャッシュラインを見つける類似したプロセス１２３が実行される。このロケーションが現在有効なデータアイテムにより占有される場合は、キャッシュラインの現時点の内容は「追い出され」、新しいデータでキャッシュラインを充填する前にデータが失われないように、ＥＥＰＲＯＭに書き込まれなければならない。キャッシュラインが、現時点で、データを保持していない場合には、キャッシュラインは事前の準備なく、新しいデータで充填できる。したがって、それが有効なデータを保持していたか、あるいはしていなかったのかに応じて、キャッシュラインを充填する前に必要となる場合もあれば、ならない場合もある追い出しプロセスがある。
【００７６】
図１３はＥＥＰＲＯＭメモリ２６に対する「読み取り」動作中の処理を描く。本発明の１つの態様では、読み取りは、オペレーション１３２において、それが最も最近の「書き込み」データを有している場合にはキャッシュから満たすことができる。それ以外の場合、オペレーション１３２において、ＥＥＰＲＯＭからの読み取りが実行される。しかしながら、図１０に示されているように、本発明の別の態様は「書き込み」キャッシュに加えて、従来の読み取りキャッシュを提供する。そして、図１３に関しては、読み取り動作の追加のキャッシュが、キャッシュ機構にさらに重い負担を課す可能性がある。他方、それは読み取り動作スループットを改善する可能性がある。キャッシュ関数がキャッシュ読み取り動作を規定するかどうかは、本発明の慣行に関連しない検討事項に基づいた設計上の選択の問題である。
【００７７】
図１４から図１６は、ＥＥＰＲＯＭメモリ２６に、あるいは他のなんらかの再プログラム可能不揮発性メモリに書き込む方法の例の実施形態を描いている。いっとき典型的な再プログラム可能不揮発性メモリセル（例えば、ＥＥＰＲＯＭ、フラッシュメモリ）の構造を示す図１８を参照する。この図は、プログラミング動作中に電子をロードされる（プログラミングされる）フローティングゲートのプロセスを概略的に描く。この図は、酸化ゲートを横切ってチャネル領域から、電子が蓄積されるフローティングゲート構造の中へ入る電子の流れを図式的に示す。この図はフローティングゲートから電子をアンロードする（消去する）ための電子トンネリングのプロセスも示す。トンネリング効果により、電子はフローティングゲート構造からドレインのｎ+溝の中へトンネルを通り抜ける。
【００７８】
図１４及び図１５を参照すると、ＥＥＰＲＯＭメモリ２６（図２）または他の類似した再プログラム可能不揮発性メモリへの書き込み回数（高速書き込み動作、浅い（ｓｈａｌｌｏｗ）書き込み動作、非永続型書き込み）の増加に対処する本発明の一態様を示す。
【００７９】
図３から、ＥＥＰＲＯＭ＿ＭＯＤＥレジスタ２１ｈがＥＥＰＲＯＭメモリのアクセスモードを示すことを思い出す。したがって、本発明のこの態様の実施形態として、ＥＥＰＲＯＭ＿ＭＯＤＥ値（例えば「２」）を使用して、ＥＥＰＲＯＭメモリに対するすべての書き込み動作が「高速書き込み」を使用して実行されることを示すことができる。したがって、ＥＥＰＲＯＭコントローラ２７がＥＥＰＲＯＭメモリ２６に対する書き込み動作を検出すると、ＥＥＰＲＯＭ＿ＭＯＤＥレジスタは、モード「２」が選択されるかどうかを判断するために調べられる。この動作に関与するデータ処理装置１０の要素は図１５に太字で強調される。
【００８０】
あるインプリメンテーションでは、高速書き込み動作が、使用されている特定のＥＥＰＲＯＭデバイスの製造メーカーによって推奨される指定書き込みサイクル時間未満の間、ＥＥＰＲＯＭで書き込みサイクルを実行することを含む。通常、ＥＥＰＲＯＭをプログラミングするための論理及びサポート回路は、ＥＥＰＲＯＭコントローラ２７に設けることができる。しかしながら、プログラミング構成要素をデータ処理装置１０の外部に設け、バス１４（図１）上の適切な制御ラインを介してＥＥＰＲＯＭコントローラによって制御できる。
【００８１】
言うまでもなく、高速書き込み動作は、完全な書き込みサイクルを実行することから、データ保持時間より短い保持時間を有するであろうデータを生じさせることが理解される。しかしながら、特定のアプリケーションでは、短縮された保持時間が許容できてよい。Ｊａｖａｃａｒｄ環境におけるＪａｖａ ＶＭなどの仮想マシンのケースでは、本発明によるＥＥＰＲＯＭの高速書き込み動作は、通常このような環境にある制限されたＲＡＭ容量に対する実際的な解決策を提供できる。ＥＥＰＲＯＭ容量は、通常ＪａｖａｃａｒｄでのＲＡＭ可用性より大きい。ＶＭアプレットが一度実行するため、それを行うのに十分な長さでメモリへのアクセスを必要とする状況では、長期のＥＥＰＲＯＭ保持は必要とされない。したがって、本発明の高速書き込み動作は、ＶＭアプレットにそれが実行するのに必要とするメモリ空間を提供できる。
【００８２】
別のＥＥＰＲＯＭメモリアクセスモード、例えばモード「１」が提供される。このモードでは、すべてのＥＥＰＲＯＭ書き込みはＥＥＰＲＯＭデバイスの製造メーカーによって推奨される標準書き込みサイクル時間を使用して実行される（「低速」書き込み、深い（ｄｅｅｐ）書き込み、永続書き込み）。本発明に従って、ＥＥＰＲＯＭアクセスモードを動的に変更し、任意の指定されたインスタンスについて必要に応じて高速書き込みまたは低速書き込みを可能にすることができる。モード「１」アクセスは、低速書き込みを使用してすべての書き込み動作を実行することを含む。図１６を参照すること。
【００８３】
本発明のある態様に従って、高速書き込み動作及び低速書き込み動作が、アドレスロケーションに応じて実行できる。このようにして、さらに別のＥＥＰＲＯＭメモリアクセスモード、例えばモード「０」が提供される。図１７は、本発明のこの態様の特定の実施形態を描く。アドレス範囲ＥＥＰＲＯＭ＿ＦＡＳＴ＿ＥＮＤからＥＥＰＲＯＭＭ＿ＦＡＳＴ＿ＳＴＡＲＴが定義される。この特定の実施形態では、ＥＥＰＲＯＭコントローラ２７は、アドレス指定されたメモリロケーションがその範囲に該当するときに、アドレスのこの範囲を認識し、高速書き込み動作を実行するように構成される。この範囲外のＥＥＰＲＯＭアドレスへの書き込み動作は低速書き込み動作で実行される。特定のインプリメンテーションでは、アドレス範囲は、データ処理装置１０内、例えばＥＥＰＲＯＭコントローラ２７内で提供されるレジスタ（または、いくつかのこのようなデータ記憶構成要素）に記憶できる。アドレス範囲は物理的に固定された値であるか、あるいは修正可能である。
【００８４】
本発明のこの態様の別の実施形態では、ＥＥＰＲＯＭアドレス空間は等しいサイズまたは等しくないサイズの複数のセグメントに区分できる。各セグメントは、高速書き込みセグメントまたは低速書き込みセグメントであると識別できる。レジスタまたは類似するデータ記憶装置構成要素は、各セグメントのアドレス範囲を識別するために提供できる。別のレジスタはセグメントごとに書き込みモード（高速、低速）を示すために使用できる。ＥＥＰＲＯＭコントローラ２７は、これらのレジスタの情報にアクセスし、指定された書き込み動作にどの書き込みモードを適用するのかを決定できる。
【００８５】
さらに本発明に従って、前記ＥＥＰＲＯＭメモリアクセスモードは実行時に選択できる。したがって、本発明によるマイクロプロセッサの特定の実施形態は、１つ、２つ、または３つすべての運転モードを提供できる。２つまたは３つ以上のメモリアクセスモードが提供される場合、各アクセスモードは実行時に選択できる。適切なＥＥＰＲＯＭ＿ＭＯＤＥ値をレジスタ２１ｈに書き込む（図２）適切な制御（例えばソフトウェア）が提供できる。各アプリケーションは、それによりそれがどのＥＥＰＲＯＭメモリアクセス方針を使用することを所望するのかを判断できる。さらに、アクセスモードは、アプリケーションがそうするのが適切であるとみなす時はいつでもアプリケーション内で変更することもできる。
【００８６】
本発明の別の実施形態では、モード「３」動作（キャッシング）は、動作モード２−０と結合できる。したがって、本発明のこの態様によるマイクロプロセッサは、マイクロプロセッサで実行中のアプリケーションが、すべてのＥＥＰＲＯＭ運転モードの間で動的に切り替わることができる複数の実行時運転モードを提供できる。
【図面の簡単な説明】
【００８７】
【図１】本発明のデータ処理態様を組み込むシステムの一般化されたブロック図である。
【図２】本発明によるデータ処理装置の例示的な実施の形態を示す図である。
【図３】本発明によるメモリアクセスの例示的な実施の形態を示す図である。
【図３．Ａ】図３で具体化されるような本発明の一実施の形態によるメモリマッピングを示す図である。
【図３．Ｂ】図３で具体化されるような本発明の一実施の形態によるメモリマッピングを示す図である。
【図４】図３に具体化されるような本発明の一態様によるメモリマップ見本を示す図である。
【図４．Ａ】マッピングプロセスの図式的な説明図である。
【図５】本発明による読み取りアクセス動作の一実施の態様を示す図である。
【図５．Ａ】本発明による読み取りアクセス動作の一実施の態様を示す図である。
【図６】本発明による読み取りアクセス動作の一実施の態様を示す図である。
【図７】本発明による書き込みアクセス動作の一実施の形態を示す図である。
【図７．Ａ】本発明による書き込みアクセス動作の一実施の形態を示す図である。
【図８】本発明によるキャッシュ機構の例示的な実施の形態を示す図である。
【図９】本発明によるキャッシュ機構の例示的な実施の形態を示す図である。
【図１０】本発明によるキャッシュ機構の例示的な実施の形態を示す図である。
【図１１】本発明によるキャッシュ機構の例示的な実施の形態を示す図である。
【図１２】本発明によるキャッシュ機構の例示的な実施の形態を示す図である。
【図１３】本発明によるキャッシュ機構の例示的な実施の形態を示す図である。
【図１４】本発明による書き込み動作の実施の形態を示す図である。
【図１５】本発明による書き込み動作の実施の形態を示す図である。
【図１６】本発明の書き込み動作における追加の実施の形態を示す図である。
【図１７】本発明の書き込み動作における追加の実施の形態を示す図である。
【図１８】典型的な再プログラム可能な不揮発性メモリセルの概略図である。
【符号の説明】
【００８８】
１０  データ処理装置
１１  読み取り専用メモリ（ＲＯＭ）
１２  ＲＡＭメモリ
１３  周辺装置
１４  バス
１４a  メモリバス
２１a〜２１h  データレジスタ
２１a  命令レジスタ
２１b  汎用レジスタ
２１c  プログラムカウンタ
２１d  ＰＲＯＴＩＮＤＥＸレジスタ
２１e  ＰＲＯＴＭＡＳＫレジスタ
２１f  ＰＲＯＴＩＤレジスタ
２１g  ベクトルベースレジスタ（ＶＢＲ）
２１h  ＥＥＰＲＯＭ＿ＭＯＤＥレジスタ
２２  命令デコーダ
２３  制御論理
２４  演算論理装置（ＡＬＵ）
２４a  中断信号
２５  メモリ管理装置（ＭＭＵ）
２６  ＥＥＰＲＯＭメモリ
２７  ＥＥＰＲＯＭコントローラ
２７a  制御信号
３０  コンパレータ
３０a  出力信号
３１  データストア
３２  データスイッチ
３２a  データスイッチの入力
３２b  データスイッチの入力
３２c  データスイッチの出力
３２d  データスイッチの入力
３２f  データスイッチの出力
３２e  データスイッチの入力
３３  データ変換テーブル
３３a  入力値
３３b  出力値
３４a〜c  ＭＭＵアドレスライン
４１  ６４Ｋの断片
４２  メモリマップ
４２f  セグメント
１０１，１１１  アプリケーション
１０２，１１２  キャッシュ機構
１０３，１１３  ＥＥＰＲＯＭメモリ
１２４  キャッシュ
【図１】
2005135395.tif 000003
【図２】
2005135395.tif 000004
【図３】
2005135395.tif 000005
【図３．Ａ】
2005135395.tif 000006
【図３．Ｂ】
2005135395.tif 000007
【図４】
2005135395.tif 000008
【図４．Ａ】
2005135395.tif 000009
【図５】
2005135395.tif 000010
【図５．Ａ】
2005135395.tif 000011
【図６】
2005135395.tif 000012
【図７】
2005135395.tif 000013
【図７．Ａ】
2005135395.tif 000014
【図８】
2005135395.tif 000015
【図９】
2005135395.tif 000016
【図１０】
2005135395.tif 000017
【図１１】
2005135395.tif 000018
【図１２】
2005135395.tif 000019
【図１３】
2005135395.tif 000020
【図１４】
2005135395.tif 000021
【図１５】
2005135395.tif 000022
【図１６】
2005135395.tif 000023
【図１７】
2005135395.tif 000024
【図１８】
2005135395.tif 000025