(57)【特許請求の範囲】
【請求項１】
コンピュータシステムにおいて仮想アドレスを物理アドレスに変換する方法であって、
該仮想アドレスを、プログラム命令の実行またはフェッチ中に受け取る工程と、
該仮想アドレスが仮想アドレス空間の上部にあるか、下部にあるかを決定する工程と、
該仮想アドレスが該仮想アドレス空間の該下部にある場合、
該仮想アドレスを第１のベースアドレスに加算し、該物理アドレスを生成する工程と、
該仮想アドレスを上限に対して比較する工程と、
該仮想アドレスが該上限よりも大きな値を有する場合、アクセスが不正であることを示す工程と、
該仮想アドレスが該仮想アドレス空間の該上部にある場合、
該仮想アドレスを第２のベースアドレスに加算し、該物理アドレスを生成する工程と、
該仮想アドレスを下限に対して比較する工程と、
該仮想アドレスが該下限よりも小さい値を有する場合、アクセスが不正であることを示す工程と、
を含む、方法。
【請求項２】
前記仮想アドレスが、前記仮想アドレス空間の前記下部にある場合、該仮想アドレス空間の該下部が書き込みアクセスから保護されているかどうかを決定する工程と、そうである場合、該仮想アドレスへの書き込みアクセスを否認する工程と、
該仮想アドレスが、該仮想アドレス空間の前記上部にある場合、該仮想アドレス空間の該上部が書き込みアクセスから保護されているかどうかを決定する工程と、そうである場合、該仮想アドレスへの書き込みアクセスを否認する工程と、をさらに含む、請求項１に記載の方法。
【請求項３】
メモリへのオペレーティングシステムアクセス中に、アドレス変換をディセーブルする工程をさらに含む、請求項１に記載の方法。
【請求項４】
前記仮想アドレス空間の前記上部が、読み出し専用ライブラリルーチンを含む、請求項１に記載の方法。
【請求項５】
前記プログラム命令が、直接メモリアクセス（ＤＭＡ）動作のために、前記コンピュータシステム内のキャッシュをバイパスする命令を含み得る、請求項１に記載の方法。
【請求項６】
前記アクセスがヌルポインタと関連するどうかを、前記仮想アドレスをヌルポインタアドレスの範囲に対して比較することにより決定する工程と、該仮想アドレスが該ヌルポインタアドレスの範囲内に入る場合、アクセスが不正であることを示す工程とをさらに含む、請求項１に記載の方法。
【請求項７】
前記方法が、マイクロプロセッサチップに組み込まれたメモリ管理ユニット内で行われる、請求項１に記載の方法。
【請求項８】
コンピュータシステムにおいて仮想アドレスを物理アドレスに変換する装置であって、
プログラム命令の実行またはフェッチ中に、該仮想アドレスを受け取る入力と、
該仮想アドレスが仮想アドレス空間の下部にある場合、該仮想アドレスと第１のベースアドレスとの和を生成し、該仮想アドレスが該仮想アドレス空間の上部にある場合、該仮想アドレスと第２のベースアドレスとの和を生成する、加算器と、
該仮想アドレスが該仮想アドレス空間の該下部にあり、かつ該仮想アドレスが上限よりも大きい値を有する場合、不正アクセスを示し、該仮想アドレスが該仮想アドレス空間の該上部にあり、かつ該仮想アドレスが下限よりも小さい値を有する場合、不正アクセスを示す、アクセス確証回路と、
を含む、装置。
【請求項９】
前記加算器が、
前記仮想アドレスを前記第１のベースアドレスに加算する第１の加算回路と、
該仮想アドレスを前記第２のベースアドレスに加算する第２の加算回路と、
該第１の加算回路の出力と該第２の加算回路の出力のいずれかを選択する選択回路と、
を含む、請求項８に記載の装置。
【請求項１０】
前記アクセス確証回路が、前記仮想アドレス空間の前記下部が書き込みアクセスから保護されているかどうかを決定するように構成されており、そうである場合、該仮想アドレス空間の該下部への書き込みアクセスを否認し、該仮想アドレス空間の前記上部が書き込みアクセスから保護されているかどうかを決定するように構成されており、そうである場合、該仮想アドレス空間の該上部への書き込みアクセスを否認する、請求項８に記載の装置。
【請求項１１】
メモリへのオペレーティングシステムアクセス中に、アドレス変換をディセーブルする機構をさらに含む、請求項８に記載の装置。
【請求項１２】
前記仮想アドレス空間の前記上部が、読み出し専用ライブラリルーチンを含む、請求項８に記載の装置。
【請求項１３】
直接メモリアクセス（ＤＭＡ）動作のために、コンピュータシステム内のキャッシュをバイパスする機構をさらに含む、請求項８に記載の装置。
【請求項１４】
前記アクセス確証回路が、前記アクセスがヌルポインタと関連するかどうかを、前記仮想アドレスをヌルポインタアドレスの範囲に対して比較することにより決定するように構成され、該仮想アドレスが該ヌルポインタアドレスの範囲内に入る場合、該アクセスが不正であることを示す、請求項８に記載の装置。
【請求項１５】
前記装置がマイクロプロセッサチップに組み込まれた、請求項８に記載の装置。
【請求項１６】
コンピュータシステムにおいて仮想アドレスを物理アドレスに変換する装置であって、
プログラム命令の実行またはフェッチ中に、該仮想アドレスを受け取る入力と、
該仮想アドレスが仮想アドレス空間の下部にある場合、該仮想アドレスと第１のベースアドレスとの和を生成し、該仮想アドレスが該仮想アドレス空間の上部にある場合、該仮想アドレスと第２のベースアドレスとの和を生成する、加算器と、
該仮想アドレスが該仮想アドレス空間の該下部にあり、かつ該仮想アドレスが上限よりも大きい値を有する場合、不正アクセスを示し、該仮想アドレスが該仮想アドレス空間の該上部にあり、かつ該仮想アドレスが下限よりも小さい値を有する場合、不正アクセスを示す、アクセス確証回路と、
を含み、該加算器が、
該仮想アドレスを該第１のベースアドレスに加算する第１の加算回路と、
該仮想アドレスを該第２のベースアドレスに加算する第２の加算回路と、
該第１の加算回路の出力と該第２の加算回路の出力との間で選択する選択回路とを含み、
該アクセス確証回路が、該仮想アドレス空間の該下部が書き込みアクセスから保護されているかどうかを決定するように構成され、そうである場合、該仮想アドレス空間の該下部への書き込みアクセスを否認し、該仮想アドレス空間の該上部が書き込みアクセスから保護されているかどうかを決定するように構成され、そうである場合、該仮想アドレス空間の該上部への書き込みアクセスを否認する、装置。
【請求項１７】
前記アクセス確証回路が、前記アクセスがヌルポインタと関連するかどうかを、前記仮想アドレスをヌルポインタアドレスの範囲に対して比較することにより決定するように構成され、該仮想アドレスが該ヌルポインタアドレスの範囲内に入る場合、アクセスが不正であることを示す、請求項１６に記載の装置。
【請求項１８】
コンピュータシステムであって、
中央処理ユニットと、
メインメモリと、
該中央処理ユニットと該メインメモリとの間に接続された、仮想アドレスを物理アドレスに変換する第１のメモリ管理ユニットと、
を含み、該第１のメモリ管理ユニットが、
該仮想アドレスが仮想アドレス空間の下部にある場合、該仮想アドレスと第１のベースアドレスとの和を生成し、該仮想アドレスが該仮想アドレス空間の上部にある場合、該仮想アドレスと第２のベースアドレスとの和を生成する加算器と、
該仮想アドレスが該仮想アドレス空間の該下部にあり、かつ該仮想アドレスが上限よりも大きい値を有する場合、不正アクセスを示し、該仮想アドレスが該仮想アドレス空間の該上部にあり、かつ該仮想アドレスが下限よりも小さい値を有する場合、不正アクセスを示す、アクセス確証回路と、
を含む、コンピュータシステム。
【請求項１９】
前記中央処理ユニットと前記メインメモリとの間に接続されたキャッシュメモリをさらに含み、前記第１のメモリ管理ユニットが、該中央処理ユニットと該キャッシュメモリとの間に接続されている、請求項１８に記載のコンピュータシステム。
【請求項２０】
前記中央処理ユニットと前記メインメモリとの間に接続された命令キャッシュと、
該中央処理ユニットと該メインメモリとの間に接続されたデータキャッシュと、
前記第１のメモリ管理ユニットと同一に構成される第２のメモリ管理ユニットとをさらに含み、
該第１のメモリ管理ユニットが、該中央処理ユニットと該命令キャッシュとの間に接続され、該第２のメモリ管理ユニットが、該中央処理ユニットと該データキャッシュとの間に接続され、それにより該第１のメモリ管理ユニットが命令アクセスのための変換を行い、該第２のメモリ管理ユニットがデータアクセスのための変換を行う、請求項１８に記載のコンピュータシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータシステムにおいて仮想アドレスを物理アドレスにコンバートするメモリ管理ユニットに関する。より具体的には、本発明は、不正なメモリアクセスからの保護を提供する、単純で効率的かつ迅速に仮想アドレスを物理アドレスにコンバートする方法および装置に関する。
【０００２】
【従来の技術】
現代のコンピュータシステムは、典型的に、メモリ管理機能を支援するハードウェアおよびオペレーティングシステム機構（例えば、仮想メモリおよびページング）を含む。これらのシステムは長い間に複雑化しており、仮想メモリおよびページングを支援するメモリ管理ユニット（ＭＭＵ）および変換ルックアサイドバッファ（ＴＬＢ）、ならびに相応するオペレーティングシステム機構のようなハードウェア構造を含むようになっている。
【０００３】
このメモリ管理回路機構は、現在、コンピュータシステムにおける演算回路機構のかなりの部分を構成している。その結果、このメモリ管理回路機構を設計するというタスクは多大な技術資源を消費し、それによりコンピュータシステムの開発に伴う時間と経費が増す。さらには、この付加的なメモリ管理回路機構を半導体チップ上に組み込むことにより、チップのダイサイズが大きくなる。このことは、チップ製造における歩留まりを低下させ得、それによりシステムコストを大きく増加させ得る。付加的回路機構においてはまた、回路信号がより長い距離を送られる必要があるため、プロセッサクロック速度が低下し得るか、あるいはメモリアクセスの待ち時間が増加し得、それによりシステム性能が低減し得る。このことは、メモリアクセスの待ち時間を増加させる結果となる。従来のメモリ管理ユニットはまた、典型的に、連想メモリ（ＣＡＭ）を実装するための回路機構を含み、これらのメモリは多大な電力を消費する。
【０００４】
メモリ管理機能はまた、オペレーティングシステムにおけるコードのかなりの部分を構成するため、オペレーティングシステムの複雑性が大きく増加し得る。このことは、相応してオペレーティングシステムの開発にかかる時間と経費を増加させる。
【０００５】
さらには、ページング機構の性能利点が、現代のオブジェクト指向プログラミング言語により書かれたプログラムに対していくらか小さくなる。オブジェクトへのリファレンスは、多数のページに亘り広く分散する傾向にある。従って、このようなオブジェクト指向プログラムは、乏しいページング性能を示す傾向にある。
【０００６】
【発明が解決しようとする課題】
ここで必要とされることは、従来の仮想メモリページングシステムの複雑性を取り除いた、メモリ管理機構である。
【０００７】
【課題を解決するための手段】
本発明の１つの局面によると、コンピュータシステムにおいて仮想アドレスを物理アドレスに変換する方法は、該仮想アドレスを、プログラム命令の実行またはフェッチ中に受け取る工程と、該仮想アドレスが仮想アドレス空間の上部にあるか、下部にあるかを決定する工程と、該仮想アドレスが該仮想アドレス空間の該下部にある場合、該仮想アドレスを第１のベースアドレスに加算し、該物理アドレスを生成する工程と、該仮想アドレスを上限に対して比較する工程と、該仮想アドレスが該上限よりも大きな値を有する場合、アクセスが不正であることを示す工程と、該仮想アドレスが該仮想アドレス空間の該上部にある場合、該仮想アドレスを第２のベースアドレスに加算し、該物理アドレスを生成する工程と、該仮想アドレスを下限に対して比較する工程と、該仮想アドレスが該下限よりも小さい値を有する場合、アクセスが不正であることを示す工程とを含む。
【０００８】
本発明の１つの実施形態によると、前記仮想アドレスが、前記仮想アドレス空間の前記下部にある場合、該仮想アドレス空間の該下部が書き込みアクセスから保護されているかどうかを決定する工程と、そうである場合、該仮想アドレスへの書き込みアクセスを否認する工程と、該仮想アドレスが、該仮想アドレス空間の前記上部にある場合、該仮想アドレス空間の該上部が書き込みアクセスから保護されているかどうかを決定する工程と、そうである場合、該仮想アドレスへの書き込みアクセスを否認する工程とをさらに含む。
【０００９】
本発明の１つの実施形態によると、メモリへのオペレーティングシステムアクセス中に、アドレス変換をディセーブルする工程をさらに含む。
【００１０】
本発明の１つの実施形態によると、前記仮想アドレス空間の前記上部が、読み出し専用ライブラリルーチンを含む。
【００１１】
本発明の１つの実施形態によると、前記プログラム命令が、直接メモリアクセス（ＤＭＡ）動作のために、前記コンピュータシステム内のキャッシュをバイパスする命令を含み得る。
【００１２】
本発明の１つの実施形態によると、前記アクセスがヌルポインタと関連するどうかを、前記仮想アドレスをヌルポインタアドレスの範囲に対して比較することにより決定する工程と、該仮想アドレスが該ヌルポインタアドレスの範囲内に入る場合、アクセスが不正であることを示す工程とをさらに含む。
【００１３】
本発明の１つの実施形態によると、前記方法が、マイクロプロセッサチップに組み込まれたメモリ管理ユニット内で行われる。
【００１４】
本発明の別の局面によると、コンピュータシステムにおいて仮想アドレスを物理アドレスに変換する装置は、プログラム命令の実行またはフェッチ中に、該仮想アドレスを受け取る入力と、該仮想アドレスが仮想アドレス空間の下部にある場合、該仮想アドレスと第１のベースアドレスとの和を生成し、該仮想アドレスが該仮想アドレス空間の上部にある場合、該仮想アドレスと第２のベースアドレスとの和を生成する加算器と、該仮想アドレスが該仮想アドレス空間の該下部にあり、かつ該仮想アドレスが上限よりも大きい値を有する場合、不正アクセスを示し、該仮想アドレスが該仮想アドレス空間の該上部にあり、かつ該仮想アドレスが下限よりも小さい値を有する場合、不正アクセスを示す、アクセス確証回路とを含む。
【００１５】
本発明の１つの実施形態によると、前記加算器が、前記仮想アドレスを前記第１のベースアドレスに加算する第１の加算回路と、該仮想アドレスを前記第２のベースアドレスに加算する第２の加算回路と、該第１の加算回路の出力と該第２の加算回路の出力のいずれかを選択する選択回路とを含む。
【００１６】
本発明の１つの実施形態によると、前記アクセス確証回路が、前記仮想アドレス空間の前記下部が書き込みアクセスから保護されているかどうかを決定するように構成されており、そうである場合、該仮想アドレス空間の該下部への書き込みアクセスを否認し、該仮想アドレス空間の前記上部が書き込みアクセスから保護されているかどうかを決定するように構成されており、そうである場合、該仮想アドレス空間の該上部への書き込みアクセスを否認する。
【００１７】
本発明の１つの実施形態によると、メモリへのオペレーティングシステムアクセス中に、アドレス変換をディセーブルする機構をさらに含む。
【００１８】
本発明の１つの実施形態によると、前記仮想アドレス空間の前記上部が、読み出し専用ライブラリルーチンを含む。
【００１９】
本発明の１つの実施形態によると、直接メモリアクセス（ＤＭＡ）動作のために、コンピュータシステム内のキャッシュをバイパスする機構をさらに含む。
【００２０】
本発明の１つの実施形態によると、前記アクセス確証回路が、前記アクセスがヌルポインタと関連するかどうかを、前記仮想アドレスをヌルポインタアドレスの範囲に対して比較することにより決定するように構成され、該仮想アドレスが該ヌルポインタアドレスの範囲内に入る場合、該アクセスが不正であることを示す。
【００２１】
本発明の１つの実施形態によると、前記装置がマイクロプロセッサチップに組み込まれる。
【００２２】
本発明のさらに別の局面によると、コンピュータシステムにおいて仮想アドレスを物理アドレスに変換する装置は、プログラム命令の実行またはフェッチ中に、該仮想アドレスを受け取る入力と、該仮想アドレスが仮想アドレス空間の下部にある場合、該仮想アドレスと第１のベースアドレスとの和を生成し、該仮想アドレスが該仮想アドレス空間の上部にある場合、該仮想アドレスと第２のベースアドレスとの和を生成する加算器と、該仮想アドレスが該仮想アドレス空間の該下部にあり、かつ該仮想アドレスが上限よりも大きい値を有する場合、不正アクセスを示し、該仮想アドレスが該仮想アドレス空間の該上部にあり、かつ該仮想アドレスが下限よりも小さい値を有する場合、不正アクセスを示す、アクセス確証回路とを含み、該加算器が、該仮想アドレスを該第１のベースアドレスに加算する第１の加算回路と、該仮想アドレスを該第２のベースアドレスに加算する第２の加算回路と、該第１の加算回路の出力と該第２の加算回路の出力との間で選択する選択回路とを含み、該アクセス確証回路が、該仮想アドレス空間の該下部が書き込みアクセスから保護されているかどうかを決定するように構成され、そうである場合、該仮想アドレス空間の該下部への書き込みアクセスを否認し、該仮想アドレス空間の該上部が書き込みアクセスから保護されているかどうかを決定するように構成され、そうである場合、該仮想アドレス空間の該上部への書き込みアクセスを否認する。
【００２３】
本発明の１つの実施形態によると、前記アクセス確証回路が、前記アクセスがヌルポインタと関連するかどうかを、前記仮想アドレスをヌルポインタアドレスの範囲に対して比較することにより決定するように構成され、該仮想アドレスが該ヌルポインタアドレスの範囲内に入る場合、アクセスが不正であることを示す。
【００２４】
本発明のさらに別の局面によると、コンピュータシステムは、中央処理ユニットと、メインメモリと、該中央処理ユニットと該メインメモリとの間に接続された、仮想アドレスを物理アドレスに変換する第１のメモリ管理ユニットとを含み、該第１のメモリ管理ユニットが、該仮想アドレスが仮想アドレス空間の下部にある場合、該仮想アドレスと第１のベースアドレスとの和を生成し、該仮想アドレスが該仮想アドレス空間の上部にある場合、該仮想アドレスと第２のベースアドレスとの和を生成する加算器と、該仮想アドレスが該仮想アドレス空間の該下部にあり、かつ該仮想アドレスが上限よりも大きい値を有する場合、不正アクセスを示し、該仮想アドレスが該仮想アドレス空間の該上部にあり、かつ該仮想アドレスが下限よりも小さい値を有する場合、不正アクセスを示す、アクセス確証回路とを含む。
【００２５】
本発明の１つの実施形態によると、前記中央処理ユニットと前記メインメモリとの間に接続されたキャッシュメモリをさらに含み、前記第１のメモリ管理ユニットが、該中央処理ユニットと該キャッシュメモリとの間に接続されている。
【００２６】
本発明の１つの実施形態によると、前記中央処理ユニットと前記メインメモリとの間に接続された命令キャッシュと、該中央処理ユニットと該メインメモリとの間に接続されたデータキャッシュと、前記第１のメモリ管理ユニットと同一に構成される第２のメモリ管理ユニットとをさらに含み、該第１のメモリ管理ユニットが、該中央処理ユニットと該命令キャッシュとの間に接続され、該第２のメモリ管理ユニットが、該中央処理ユニットと該データキャッシュとの間に接続され、それにより該第１のメモリ管理ユニットが命令アクセスのための変換を行い、該第２のメモリ管理ユニットがデータアクセスのための変換を行う。
【００２７】
本発明は、コンピュータシステムにおいて仮想アドレスを物理アドレスに変換する方法および装置を提供する。システムは、プログラム命令の実行またはフェッチ中に仮想アドレスを受け取る。システムは、仮想アドレスが仮想アドレス空間の上部にあるか、下部にあるかを決定する。仮想アドレスが仮想アドレス空間の下部にある場合、システムはこの仮想アドレスを第１のベースアドレスに加算し、物理アドレスを生成する。システムはまた、仮想アドレスを上限に対して比較する。仮想アドレスが上限よりも大きい値を有する場合、システムは不正アクセスを示す。仮想アドレスが仮想アドレス空間の上部にある場合、システムはこの仮想アドレスを第２のベースアドレスに加算し、物理アドレスを生成する。システムはまた、仮想アドレスを下限に対して比較する。仮想アドレスが下限よりも小さい値を有する場合、システムはそのアクセスが不正であることを示す。従って、システムは不正なメモリアクセスからの保護を提供する。本発明の１つの局面によると、システムは仮想アドレスが仮想アドレス空間の書き込みアクセスから保護されている部分内にあるかどうかを決定する。そうである場合、システムは仮想アドレスへの書き込みアクセスを否認する。従って、本発明は、ぺージングを不用にし、仮想−物理アドレス変換プロセスを単純な加算動作に減らす。このことは、より迅速なプロセッサクロック速度をもたらし、コンピュータシステムの設計費および製造費を大きく削減することができる。
【００２８】
【発明の実施の形態】
以下の説明は、当業者が本発明を生産および使用することができるように示されており、特定のアプリケーションのコンテクストおよびその要件において提供される。開示される実施形態に対する多様な改変は、当業者にとって明らかであり、本明細書中において定義される基本原理が、本発明の精神および範囲から逸脱することなく他の実施形態および用途に適用され得る。従って、本発明は、示される実施形態に限定されることを意図せず、本明細書中に開示される原理および特徴と一致する最大の範囲が与えられる。
【００２９】
（コンピュータシステム）
図１は、本発明の実施形態によるコンピュータシステムを示す。このコンピュータシステムは、中央処理ユニット１０２、メモリ管理ユニット（ＭＭＵ）１０６、キャッシュ１１６、バス１１３、メモリ１２０、周辺デバイス１２２および周辺デバイス１２４を含む。概して、中央処理ユニット１０２は、コンピュータ動作を行う任意のタイプの回路機構を含み得る。これは、メインフレームコンピュータ、パーソナルコンピュータ、ワークステーション、デバイス制御器およびスマート機器（例えば、スマートマイクロウェーブオーブン）のための中央処理ユニットを含むが、それらに限定されない。
【００３０】
中央処理ユニット１０２は、仮想アドレス１０４をＭＭＵ１０６へ送り、ＭＭＵ１０６は仮想アドレス１０４を物理アドレス１１５に変換する。図示する実施形態において、ＭＭＵ１０６は６つの値を含む。「読み出し専用」値１０９（１ビット）、上限値１１０（１５ビット）、およびベースアドレス値１０８（１６ビット）は、仮想アドレス空間２０２の下部領域に関連づけられている。「読み出し専用」値１１１（１ビット）、下限値１１４（１５ビット）、およびベースアドレス値１１２（１６ビット）は、仮想アドレス空間２０２の上部領域に関連づけられている。読み出し専用値１０９、上限１１０およびベースアドレス１０８は、第１の３２ビットレジスタ内に適合し、読み出し専用値１１１、下限１１４およびベースアドレス１１２は、第２の３２ビットレジスタに適合することに注目されたい。これらの値を２つの３２ビットレジスタ内に収めることは、迅速なコンテキストスイッチングを容易にする。上記６個の値は、図２を参照しながら以下でより詳細に説明する。
【００３１】
ＭＭＵ１０６からの物理アドレス１１５はキャッシュ１１６内へ送られ、キャッシュ１１６は、メモリ１２０から最近リファレンスされたメモリアイテムのコピーを記憶する。キャッシュ１１６は、別々の命令キャッシュおよびデータキャッシュを含む任意のタイプのキャッシュメモリであり得る。図１に図示する実施形態は、物理的にアドレスされる一体型命令およびデータキャッシュを含む。高性能コンピュータシステムは、ＭＭＵ動作と並行してキャッシュアクセスを起動するために、仮想インデックス付け物理タグ付けキャッシュを含み得ることに注目されたい。しかし、図示する実施形態においては、ＭＭＵ１０６は、伝搬遅延をほとんど引き起こさない単純な加算動作のみを含む、非常に単純な設計を有する。このことにより、ＭＭＵ動作はシステム性能を著しく低下させることなく、キャッシュルックアップの前に行われることができる。本発明の別の実施形態は、ＭＭＵ１０６と並行して動作する仮想インデックス付けキャッシュメモリを含む。
【００３２】
キャッシュ１１６は、バス１１３を介してメモリ１２０に接続される。バス１１３は、メモリ１２０とマイクロプロセッサチップ１００との間でデータを伝送する任意のタイプのコミュニケーションチャネルであり得る。バス１１３は、さらにマイクロプロセッサ１００を周辺デバイス１２２および１２４に接続する。周辺デバイス１２２および１２４は、コンピュータシステムに取り付けられ得る任意のタイプの周辺デバイスであり得、例えば、ディスクドライブまたはキーボードを含む。他の実施形態において、周辺デバイス１２２および１２４は、周辺バスを介してＣＰＵ１０２に接続され、周辺バスはプロセッサメモリバスから分離している。メモリ１２０は、中央処理ユニット１０２による実行および操作用のコードおよびデータを記憶する任意のタイプのランダムアクセスメモリであり得る。
【００３３】
（メモリマッピング）
図２は、本発明の実施形態に従って、どのように仮想アドレス空間２０２の領域が対応する物理アドレス２２０の領域へマッピングされるかを示す。本実施形態において、ＭＭＵ１０６（図１を参照）は、仮想アドレス空間２０２の２つの領域を、物理アドレス空間２２０内の対応する領域へマッピングする。
【００３４】
下部領域２０８は、仮想アドレス空間２０２の底部近くから始まり、上部へ延びる。下部領域２０８は、物理アドレス空間２２０内の対応する領域へマッピングされ、この領域は物理アドレス空間２２０内のベースアドレス１０８から上部へ延びる。下部領域２０８の上限は、仮想アドレス空間２０２内の上限１１０により定められる。
【００３５】
上部領域２０４は、仮想アドレス空間２０２内の最高アドレス可能位置から始まり、下部へ延びる。上部領域２０４は、物理アドレス空間２２０内の対応する領域へマッピングされ、この領域は物理アドレス空間２２０内のベースアドレス１１２から下部へ延びる。上部領域２０４の下限は、仮想アドレス空間２０２内の下限１１４により定められる。上部領域２０４は、実際には物理メモリにおいおて下部領域２０８よりも下の領域へマッピングされ得ることに注目されたい。
【００３６】
図１に示すシステムにおいて、各領域は「読み出し専用ビット」に関連付けられ、これは「読み出し専用」保護を領域に提供することを容易もする。図示する実施形態において、読み出し専用ビット１０９および１１１は、それぞれ下部領域２０８および上部領域２０４に関連付けられる。読み出し専用ビット１０９がアサートされる場合、仮想アドレス空間２０２の下部領域２０８は修正され得ない。読み出し専用ビット１０９がアサートされない場合、仮想アドレス空間２０２の下部領域２０８は修正され得る。読み出し専用ビット１１１がアサートされる場合、仮想アドレス空間２０２の上部領域２０４は修正され得ない。読み出し専用ビット１１１がアサートされない場合、仮想アドレス空間２０２の上部領域２０４は修正され得る。これらの読み出し専用ビットは、シンプルダイナミックリンクライブラリ機構（複数のプログラムによって安全に共有されることができるように、ライブラリを「読み出し専用」にする機構）をシステムが支援することを可能にする。
【００３７】
図１および図２に図示する実施形態の１つの利点は、変換の粒度が粗くてもよいことである。この粗雑性が増すほど、仮想アドレス変換プロセス中に修正を要する仮想アドレス１０４のビットが少なくなる。それにより、変換プロセス中に用いられる加算器のサイズを小さくすることができ、ひいては速度を高めることができる。さらには、粗雑性が増すほど、仮想アドレス１０４のより多くの下位ビットが即座にキャッシュ１１６へパスされることができ、そのことがキャッシュの性能を高める。
【００３８】
上記の構成は、６４Ｋバイト境界線内に入るように再配置することを可能にすることに注目されたい。２つのベースアドレス１０８および１１２は、２つの領域の開始物理アドレスの上位１６ビットを含み、対応する上限１１０および下限１１４は、これら２つの領域の各長さを含む。
【００３９】
本発明の１つの実施形態において、これら２つの領域外のアクセスはハードウェアトラップを引き起こす。このようなハードウェアトラップ中に、ＭＭＵ１０６は自動的にディセーブルされるため、トラップ処理「スーパバイザ」コードが、マッピングされていないメモリ内に常駐することが可能になる。必要であれば、スーパバイザコードはメモリ境界を拡張することができる。
【００４０】
また、下部領域２０８は、アドレス０に至るまで下に延びることがないことにも注目されたい。仮想アドレス空間２０２の最初の６４Ｋバイトは、ヌルポインタ領域２１０により占められる。これはヌルポインタをデリファレンスすることをチェックする機構を提供する。この機構は、６４Ｋバイト長よりも大きいデータ構造（これは一般的制限である）がない限り適切に動作する。データ構造がこれよりも大きい場合、ヌルポインタからの大きなオフセットが下部領域２０８内の有効なアドレス上にマッピングされ得る。
【００４１】
（アドレス変換回路機構）
図３は、本発明の実施形態による、仮想アドレス１０４から物理アドレス１１５への変換に関わるいくつかの回路機構を示す。
【００４２】
図３の左側の回路機構は、仮想アドレス１０４を生成する。この回路機構はシフター３０６、マルチプレクサ（ＭＵＸ）３１０および加算器３１２を含む。加算器３１２はレジスタ３０２の内容を、レジスタ３０４または即値フィールド３０８のいずれかの内容と加算する。このことは、配列ベースアドレスレジスタ３０２、およびレジスタ３０４または即値フィールド３０８のいずれかの配列インデックスを記憶することにより、配列インデックス付けを容易にする。
【００４３】
即値フィールド３０８は、命令フィールドからの数値を配列インデックスとして用いることを容易にすることに注目されたい。即値フィールド３０８は、シフター３０６内へシフトされ得、シフター３０６はインデックスを配列要素サイズで積算するために用いられる。当然ながら、このことは配列要素サイズが２の累乗であると仮定している。一般的な配列要素サイズは、バイトサイズ配列要素の場合１バイト（シフトなし）、半ワード配列要素の場合２バイト（１ビットシフト）、ワードサイズ配列要素の場合４バイト（２ビットシフト）、または２倍精度配列要素の場合８バイト（３ビットシフト）である。
【００４４】
一旦、仮想アドレス１０４が構成されると、図３の回路機構の右側へ送られる。この回路機構は、仮想アドレスの物理アドレスへの変換を行う。本実施形態において、仮想アドレス１０４および物理アドレス１１５の下位１６ビットは回路機構を変換されずに単に通過するため、回路機構は仮想アドレス１０４および物理アドレス１１５の上位１６ビット上でのみ動作することに注目されたい。
【００４５】
仮想アドレス１０４の上位１６ビットは加算器３１４を介して送られ、加算器３１４はそれらのビットをベースアドレス１０８に加算して和を生成し、この和がマルチプレクサ（ＭＵＸ）３１８の一方の入力へ送られる。
【００４６】
仮想アドレス１０４の上位１６ビットはさらに加算器３１６へ送られ、加算器３１６はそれらのビットをベースアドレス１１２に加算して和を生成し、この和がＭＵＸ３１８の他方の入力へ送られる。
【００４７】
仮想アドレス１０４の最上位ビット（ビット３１）は、ＭＵＸ３１８の選択入力に送られる。ビット３１は、仮想アドレス１０４が仮想アドレス空間２０２の上部領域２０４にあるか、下部領域２０８にあるかを示す。仮想アドレス１０４が上部領域２０４にある場合、加算器３１６の出力はＭＵＸ３１８の出力となる。そうでない場合、加算器３１４の出力はＭＵＸ３１８の出力となる。
【００４８】
ＭＵＸ３１８の出力は、物理アドレス１１５の上位１６ビットとなる。仮想アドレス１０４の下位１６ビットは、単に回路を通過し、物理アドレス１１５の下位１６ビットとなることに再度言及する。
【００４９】
（不正アクセスを検出する回路機構）
図４は、本発明の実施形態による、不正メモリアクセスの検出に関わるいくつかの回路機構を示す。この回路機構は、図３に示す回路機構と並行して動作する。図４に示す回路機構は、ＡＮＤゲート４０４、４１２、４１６および４１５、ならびに、ＯＲゲート４０８、４１４および４１７を含む。回路機構は、さらに比較ユニット４０６および４１０を含む。
【００５０】
比較ユニット４０６および４１０は、仮想アドレス１０４が下限１１４よりも下にあるかどうか、上限１１０を超えるかどうかをそれぞれ決定する。比較ユニット４０６は、仮想アドレス１０４が下限１１４よりも低いかどうかを決定する。比較ユニット４１０は、上限１１０が仮想アドレス１０４よりも低いかどうかを決定する。
【００５１】
ＡＮＤゲート４０４および４１２は、不正書き込み動作を検出する。ＡＮＤゲート４０４は、記憶信号４０２と図１の読み出し専用ビット１１１のＡＮＤをとる。ＡＮＤゲート４０４の出力は、動作が書き込み動作であり、かつ読み出し専用ビット１１１が設定される場合アサートされ、これは不正アクセスを示す。ＡＮＤゲート４１２は、記憶信号４０２と読み出し専用ビット１０９とのＡＮＤをとる。ＡＮＤゲート４１２の出力は、動作が書き込み動作であり、かつ読み出し専用ビット１０９が設定される場合アサートされ、これは同じく不正アクセスを示す。
【００５２】
ＡＮＤゲート４０４および４１２ならびに比較ユニット４０６および４１０の出力は、ＡＮＤゲート４１６および４１５、ならびにＯＲゲート４０８、４１４および４１７を介して送られ、不正アクセス信号４１８を形成する。不正アクセス信号４１８は、仮想アドレス１０４が仮想アドレス空間２０２の上部にあり、かつＡＮＤゲート４０４または比較ユニット４０６のいずれかがアサートされる場合、アサートされる。不正アクセス信号４１８は、仮想アドレス１０４が仮想アドレス空間２０２の下部にあり、かつＡＮＤゲート４１２または比較ユニット４１０のいずれかがアサートされる場合にも、アサートされる。
【００５３】
仮想アドレス１０４のビット３１およびＯＲゲート４０８の出力が、ＡＮＤゲート４１６を通過することに注目されたい。これは、仮想アドレス１０４が仮想アドレス空間２０２の上部にある場合にのみ、図４の回路の上半分をアクティブにする。同様に、ビット３１の逆（ｉｎｖｅｒｓｅ）およびＯＲゲート４１４の出力は、ＡＮＤゲート４１５を通過する。これは、仮想アドレス１０４が仮想アドレス空間２０２の下部にある場合に、図４の回路の下半分をアクティブにする。
【００５４】
ヌルポインタ領域２１０を検出する回路機構については図示していないことに注目されたい。ヌルポインタ領域２１０へのアクセスは、仮想アドレス１０４をヌルポインタ領域２１０の６４Ｋ上限に対して比較する別の比較ユニットを用いることにより検出され得る。仮想アドレス１０４がこの上限よりも下にある場合、不正アクセスが示される。あるいは、ヌルポインタ領域２１０へのアクセスは、仮想アドレス１０４の最初の１６ビットを超えた上位ビットを調べることにより検出されてもよい。これらのビットが全て０値である場合、仮想アドレス１０４はヌルポインタ領域２１０内に入る。
【００５５】
また、仮想アドレスの代わりに物理アドレスの上で境界チェックを行うことが可能であり、これは結果的に不正確な非同期メモリ例外とは反対の正確なメモリ例外となることにも注目されたい。
【００５６】
（複製メモリ管理ユニット）
図５は、本発明の実施形態による、命令リファレンスおよびデータリファレンスを供給する複製メモリ管理ユニットを有するコンピュータシステムを示す。本実施形態において、ＣＰＵ１０２内の命令フェッチユニット５０２は、ＭＭＵ５０６を介して命令キャッシュ５１０に接続される。この経路は、命令リファレンスを取り扱う。データリファレンスについては、ＣＰＵ１０２内のロード記憶ユニット５０４が、ＭＭＵ５０８を介してデータキャッシュ５１２に接続される。
【００５７】
ＭＭＵ５０８はＭＭＵ５０６の正確な複製であり、これらのＭＭＵは一致した状態に保たれていることに注目されたい。これは、ＭＭＵ５０６およびＭＭＵ５０８が読み出し専用ビット１０９および１１１、ならびに上限１１０、下限１１４、ベースアドレス１０８およびベースアドレス１１２において同じ値を含むことを意味する。
【００５８】
本発明の単純なＭＭＵ設計は、ＭＭＵが半導体基板上の大きな面積を占めることなく複製されることを可能にする。複数のＭＭＵを供給することによっても、命令リファレンスとデータリファレンスとの間のアドレス変換コンテンションが低減されることに注目されたい。
【００５９】
（アドレス変換のプロセス）
図６は、本発明の実施形態による、仮想アドレスを物理アドレスに変換するプロセスを示すフローチャートである。システムは、プログラム命令の実行またはフェッチ中に仮想アドレス１０４を受け取ることにより開始する（工程６０２）。システムは、仮想アドレス１０４が仮想アドレス空間２０２の上部または下部にあるかどうかを決定する（工程６０４）。これは仮想アドレス１０４の最上位ビットを調べることにより決定され得る。ビットがアサートされる場合、仮想アドレス１０４は上部にある。そうでない場合、仮想アドレス１０４は下部にある。
【００６０】
仮想アドレス１０４が仮想アドレス空間２０２の下部領域２０８にある場合、システムは仮想アドレス１０４をベースアドレス１０８に加算し、物理アドレス１１５を生成する（工程６０６）。システムはまた、仮想アドレス１０４を上限１１０に対して比較する（工程６１０）。仮想アドレス１０４が上限１１０よりも大きい場合、システムは不正アクセス信号４１８をアサートする（工程６１４）。システムはまた、読み出し専用ビット１０９を調べる。仮想アドレス空間２０２の下部領域２０８が「読み出し専用」であり、かつアクセスが記憶動作である場合もまた、システムは不正アクセス信号４１８をアサートする（工程６１８）。
【００６１】
仮想アドレス１０４が仮想アドレス空間２０２の上部領域２０４にある場合、システムは仮想アドレス１０４をベースアドレス１１２に加算し、物理アドレス１１５を生成する（工程６０８）。システムはまた、仮想アドレス１０４を下限１１４に対して比較する（工程６１２）。仮想アドレス１０４が下限１１４よりも小さい場合、システムは不正アクセス信号４１８をアサートする（工程６１６）。システムはまた、読み出し専用ビット１１１を調べる。仮想アドレス空間２０２の上部領域２０４が「読み出し専用」であり、かつアクセスが記憶動作である場合もまた、システムは不正アクセス信号４１８をアサートする（工程６２０）。
【００６２】
上部領域２０４および下部領域２０８の両方に対して、コンバート動作は加算であることに注目されたい。上部領域２０４は仮想アドレス空間２０２の最上部から始まり、オフセットは下部へ進むため、上部領域２０４のためのコンバートは、減算動作を含むように見え得る。しかし、下部へのオフセットは、２の補数算術を用いる加算器により実現され得る。
【００６３】
図５に図示する実施形態において、ＭＭＵ５０６は全て「読み出し専用」である命令を扱うことから、「読み出し専用」のためのテストはＭＭＵ５０６には冗長である。
【００６４】
本発明は、コンピュータシステムにおいて仮想アドレスを物理アドレスに変換する方法および装置を提供する。システムは、プログラム命令の実行またはフェッチ中に仮想アドレスを受け取る。システムは、仮想アドレスが仮想アドレス空間の上部にあるか、下部にあるかを決定する。仮想アドレスが仮想アドレス空間の下部にある場合、システムはこの仮想アドレスを第１のベースアドレスに加算し、物理アドレスを生成する。システムはまた、仮想アドレスを上限に対して比較する。仮想アドレスが上限よりも大きい値を有する場合、システムは不正アクセスを示す。仮想アドレスが仮想アドレス空間の上部にある場合、システムはこの仮想アドレスを第２のベースアドレスに加算し、物理アドレスを生成する。システムはまた、仮想アドレスを下限に対して比較する。仮想アドレスが下限よりも小さい値を有する場合、システムはそのアクセスが不正であることを示す。従って、システムは不正なメモリアクセスからの保護を提供する。本発明の１つの局面によると、システムは仮想アドレスが仮想アドレス空間の書き込みアクセスから保護されている部分内にあるかどうかを決定する。そうである場合、システムは仮想アドレスへの書き込みアクセスを否認する。従って、本発明は、ぺージングを不用にし、仮想−物理アドレス変換プロセスを単純な加算動作に減らす。このことは、より迅速なプロセッサクロック速度をもたらし、コンピュータシステムの設計費および製造費を大きく削減することができる。
【００６５】
上記本発明の実施形態の説明は、例示および説明を目的としてのみ示してきた。この説明は、網羅的であること、あるいは本発明を開示された形態に限定することを意図していない。従って、多様な改変および変更が行われ得ることは、当業者には明らかである。さらに、上記開示は本発明を限定することを意図しない。本発明の範囲は、添付の特許請求の範囲により規定される。
【００６６】
【発明の効果】
本発明のメモリ管理ユニットにより、従来の仮想メモリページングシステムの複雑性を取り除くことができる。
【図面の簡単な説明】
【図１】本発明の実施形態によるコンピュータシステムを示す図である。
【図２】本発明の実施形態に従って、どのように仮想アドレス空間の領域が対応する物理アドレスの領域へマッピングされるかを示す図である。
【図３】本発明の実施形態による、仮想アドレスの物理アドレスへの変換に関わるいくつかの回路機構を示す図である。
【図４】本発明の実施形態による、不正なメモリアクセスの検出に関わるいくつかの回路機構を示す図である。
【図５】本発明の実施形態による、命令リファレンスおよびデータリファレンスを供給する複製メモリ管理ユニットを有する、コンピュータシステムを示す図である。
【図６】本発明の実施形態による、仮想アドレスを物理アドレスに変換するプロセスを示すフローチャートである。
【符号の説明】
１０２  中央処理ユニット
１０６  メモリ管理ユニット（ＭＭＵ）
１０８  ベースアドレス
１１０  上限
１１１  読み出し専用値
１１２  ベースアドレス
１１３  バス
１１４  下限
１１６  キャッシュ
１２０  メモリ
２０２  仮想アドレス空間
【図１】
0004499237.tif 000002
【図２】
0004499237.tif 000003
【図３】
0004499237.tif 000004
【図４】
0004499237.tif 000005
【図５】
0004499237.tif 000006
【図６】
0004499237.tif 000007