| 【発明の名称】 |
メモリ管理機構 |
| 【発明者】 |
【氏名】毛利 篤史
|
| 【要約】 |
【課題】マイクロプロセッサの動作周波数を向上させる。
【解決手段】複数のアドレス変換情報を格納するページ表を有する計算機に備えられる、仮想ページアドレスと物理ページアドレスとを変換するメモリ管理機構において、少なくとも一つの上記アドレス変換情報を格納するTLB1(1)と、TLB1(1)よりも多くのアドレス変換情報を格納するTLB2(1000)と、ページ表に格納されているアドレス変換情報を読みこみ、読みこんだアドレス変換情報を上記第二のアドレス変換バッファへ登録することを制御する第二制御部(31)と、第二制御部(31)がアドレス変換情報を登録した時に、上記アドレス変換情報を入力し、入力したアドレス変換情報をTLB1(1)へ登録することを制御する第一制御部(9)とを備え、さらに、TLB1は、アドレス変換情報をマージ処理して登録するマージ処理部(3)を備える。 |
【特許請求の範囲】
【請求項1】 仮想ページを特定する仮想ページアドレスと物理ページを特定する物理ページアドレスとを対応づける複数のアドレス変換情報を格納するページ表を有する計算機に備えられる、仮想ページアドレスと物理ページアドレスとを変換するメモリ管理機構において、少なくとも一つの上記アドレス変換情報を格納する第一のアドレス変換バッファと、上記第一のアドレス変換バッファよりも多くの上記アドレス変換情報を格納する第二のアドレス変換バッファと、上記ページ表に格納されているアドレス変換情報を読みこみ、読みこんだアドレス変換情報を上記第二のアドレス変換バッファへ登録することを制御する第二の制御部と、上記第二の制御部が上記登録したアドレス変換情報を入力し、入力したアドレス変換情報を上記第一のアドレス変換バッファへ登録することを制御する第一の制御部とを備えることを特徴とするメモリ管理機構。 【請求項2】 上記第二の制御部は、上記第二のアドレス変換バッファへ新たなアドレス変換情報を登録する領域がない場合に、既に第二のアドレス変換バッファへ登録されているアドレス変換情報から無効にするアドレス変換情報を選択し、上記第一の制御部へ上記選択したアドレス変換情報を通知し、上記第一の制御部は、上記選択したアドレス変換情報が上記第一のアドレス変換バッファに格納されているかを検索し、検索した結果、上記選択したアドレス変換情報が格納されている場合は、上記選択したアドレス変換情報を無効にすることを特徴とする請求項1記載のメモリ管理機構。 【請求項3】 上記アドレス変換情報は、仮想ページアドレスを含み、上記第一のアドレス変換バッファは、さらに、仮想ページアドレスを入力し、上記第一のアドレス変換バッファに格納されたアドレス変換情報に含まれる仮想ページアドレスと入力した仮想ページアドレスとを比較し、比較した結果から上記入力した仮想ページアドレスが上記アドレス変換情報に含まれているかを判定する比較部を備えることを特徴とする請求項1または2記載のメモリ管理機構。 【請求項4】 上記比較部は、新たに登録するアドレス変換情報を入力し、第一のアドレス変換バッファに格納されたアドレス変換情報と上記新たに登録するアドレス変換情報とを比較して比較結果を出力し、上記第一のアドレス変換バッファは、さらに、上記比較部から比較結果を入力し、第一のアドレス変換バッファへ格納されているアドレス変換情報によって特定される物理ページと上記新たに登録するアドレス変換情報によって特定される物理ページとが連続しているページであるかを判定するマージ処理部を備えることを特徴とする請求項3記載のメモリ管理機構。 【請求項5】 上記マージ処理部は、連続していると判定した場合に、既に登録されているアドレス変換情報へ新たに登録するアドレス変換情報を併合して一つのアドレス変換情報として登録することを特徴とする請求項4記載のメモリ管理機構。 【請求項6】 上記アドレス変換情報は、アドレス変換情報によって特定される物理ページの属性の情報を含み、上記マージ処理部は、上記新たに登録するアドレス変換情報と既に登録されているアドレス変換情報とにそれぞれ含まれる物理ページの属性の情報が一致する場合に、上記既に登録されているアドレス変換情報へ上記新たに登録するアドレス変換情報を併合して一つのアドレス変換情報として登録することを特徴とする請求項5記載のメモリ管理機構。 【請求項7】 上記マージ処理部は、上記既に登録されているアドレス変換情報へ上記新たに登録するアドレス変換情報を併合して一つのアドレス変換情報として登録した場合は、上記新たに登録するアドレス変換情報に関する情報をマージ情報として、上記一つのアドレス変換情報へ設定し、比較部は、上記第一のアドレス変換バッファに格納されているアドレス変換情報にマージ情報が設定されている場合には、上記マージ情報を用いて、入力した仮想ページアドレスが上記アドレス変換情報に含まれているかを判定することを特徴とする請求項6記載のメモリ管理機構。 【請求項8】 上記第一のアドレス変換バッファは、複数のアドレス変換情報を格納し、上記複数のアドレス変換情報それぞれに対応する複数の比較部と複数のマージ処理部とを備えることを特徴とする請求項4から7いずれかに記載のメモリ管理機構。
|
【発明の詳細な説明】【0001】 【発明の属する技術分野】本発明は、階層的アドレス変換バッファ構成を採る高速処理可能なメモリ管理機構に関するものである。 【0002】 【従来の技術】近年、マイクロプロセッサは、動作周波数の向上を図るために、パイプライン処理により命令実行が行われている。パイプライン処理とは、複数の命令をオーバラップさせて同時実行する技術である。1個の命令の処理過程を複数の小さな処理過程(パイプライン・ステージ)に分割する。各ステージが順に接続されて1本のパイプラインを形成し、命令がパイプの一端から入って複数のステージを進み最後にパイプのもう一方の端から出て行く。このパイプラインの単位時間当りの処理性能は、最も遅いステージの処理時間により決まる。そのため、通常は、各ステージの処理時間が均一になるように設計されている。Nステージからなるパイプライン処理では、パイプライン処理されない場合に比較して、理想的にはN倍の処理性能を達成することが可能である。近年、マイクロプロセッサの動作周波数を向上させる競争は激しさを増してきており、各パイプラインステージの処理時間はますます短くなってきている。 【0003】一方、近年のマイクロプロセッサでは、WindowsCEやLinuxのような汎用オペレーティング・システム(OS)を動作させて、プログラム開発効率の向上を図るのが当たり前のようになってきている。そのため、マイクロプロセッサに、メモリ管理機構(Memory Management Unit)を内蔵するようになってきている。メモリ管理機構(MMU)では、一般的に仮想記憶方式によりメモリの管理を実施している。仮想記憶とは、物理的に限られた容量しかないメモリを多くのプロセスで分割使用する手段である(プロセッサ・アーキテクチャpp437−456)。すなわち、物理メモリを複数のブロックに分割し、そのブロックを各プロセスに割り当てる方法である。 【0004】この仮想記憶という技術が考案される以前は、プログラムが物理メモリの容量を越えてしまった場合は、その容量の中でプログラムを実行できるようにする全責任はプログラマにあった。すなわち、まずプログラムを小片に分割し互いに排他的なものを見出す。そして、これらオーバレイ部分をどういう順序で主記憶にロードするかを、全てユーザのプログラムで制御する。プログラマは、実行中に物理メモリの制限を越えないように動作を保証しなければならない。こういうことがプログラマの生産性を阻害する要因であった。このような苦労からプログラマを解放する目的で考え出されたのが仮想記憶であり、プログラマに対しては実装する物理メモリよりも大きく連続する仮想のアドレス空間を提供する機構である。 【0005】図6に、従来から用いられている仮想記憶方式における仮想アドレスの変換方式について示す。仮想アドレス(1050)は仮想ページアドレスを示す上位フィールド(1051)とページ内オフセットを示す下位フィールド(1052)に分割される。仮想アドレス空間と物理メモリ空間は、ページ内オフセット(1052)で示されるページサイズに分割される。仮想アドレス空間には、仮想ページアドレス(1051)で示される個数だけのページが存在する。仮想アドレス空間中のどのページが、物理メモリ空間中のどのページに割り当てられるかはページ表(1056)により管理される。このページ表の基点となるアドレスであるページ表ベース(1054)と、表の大きさの値であるページ表限界(1055)は、それぞれのシステムレジスタに格納されている。仮想アドレスから物理アドレスを生成するためには、仮想アドレスの仮想ページアドレス(1051)とページ表ベース(1054)を加算器(1053)により加算し、この値に基づいてページ表内の一つのページ表エントリ(1057)を特定する。この時に、加算器(1053)の出力がページ表限界(1055)を超えないことを確認する(1058)。この値を超えている場合は、エラーを検知する。特定されたページ表エントリ(1057)から物理アドレス空間中の物理ページアドレスを取り出し、仮想アドレスのページ内オフセットと結合させて物理アドレス(1060)を生成する。そして、この物理アドレス(1060)により、主記憶等の物理メモリのアクセスを行う。 【0006】この仮想記憶方式では、当然仮想アドレス空間で扱うページ数よりも、物理メモリ空間で扱うページ数は少ない。そのため、物理メモリ上にない仮想アドレス空間上のページをプログラムがアクセスした場合には、ページ・フォールトと呼ばれる例外が発生する。ページ・フォールトでは、新たにページ表エントリを追加したり、2次記憶(ディスク等)から物理メモリにプログラムをロードする処理が必要となる。ページフォールトに伴う一連の処理等は、ユーザプログラムが意識する必要はなく、オペレーティング・システムの管理下に置かれるのが一般的である。 【0007】図7に、メモリ管理機構を内蔵した従来のマイクロプロセッサ(1150)を示す。このマイクロプロセッサは、CPUコア(1152)と、メモリ管理部(1161)と、命令キャッシュメモリ(1155)と、データキャッシュメモリ(1156)と、バスインターフェイス部(1157)より構成されている。マイクロプロセッサ(1150)は、バスインターフェイス部(1157)を介して外部メモリ(1158)のリード/ライト処理を実施している。CPUコア(1152)は、5段のパイプラインステージ(1160)より構成されている。このパイプラインは、命令フェッチを行うIFステージと、命令のデコード処理を行うDステージと、命令の実行を行うEステージと、オペランドのアクセスを行うMステージと、実行結果を汎用レジスタへ書き戻すWステージより構成されている。メモリ管理部(1161)は、TLB(Translation Lookaside Buffer)として、命令TLB(1153)と、データTLB(1154)とをそれぞれ内蔵している。命令TLB(1153)は、IFステージからの命令フェッチ用仮想アドレスを物理アドレスへ変換する。また、データTLB(1154)は、Mステージからのオペランドアクセス用の仮想アドレスを物理アドレスへ変換する。このようにして生成された物理アドレスによって、命令キャッシュメモリ(1155)及びデータキャッシュメモリ(1156)のアクセスを行う。命令及びデータキャッシュメモリ上に所望の命令及びデータがそれぞれあった場合は、CPUコアは、所望の命令及びデータに対して処理を施す。命令及びデータキャッシュメモリ上に所望の命令及びデータがなかった場合は、バスインターフェイス部(1157)を介して外部メモリへアクセスを行う。 【0008】図8に、図7に示したTLB(Translation LookasideBuffer)の詳細な構成を示す。図8に一例として示すTLBは、図7の命令TLB(1153)、データTLB(1154)において適用される機構である。TLBとは、仮想アドレスと物理アドレスのペアを保持しているアドレス変換バッファである。プロセッサは仮想アドレスでページ表をアクセスする代わりに、TLBをアクセスすることにより高速にアドレス変換を行うことが可能である。 【0009】次に、図8に示すダイレクトマッピング方式のTLB(図8ではTLB2と呼んでいる)について説明する。ダイレクトマッピング方式とは、仮想アドレスの一部をデコードしてエントリ選択を行い、選択されたエントリのタグと入力論理アドレスを比較して、そのヒットミスにより選択されたエントリのデータを出力する構成を備える方式をいう。 【0010】TLB2(1000)は、アドレスデコーダ部(1001)と、TLBタグ部(1002)と、TLBデータ部(1003)と、アドレス比較部(1004)と、データ出力部(1005)より構成されている。アドレスデコーダ部の結果により選択されたTLBタグ部(1002)のある行(1010)(以下、「タグ部(1010)」という)と、TLBデータ部のある行(1011)(以下、「データ部(1011)」という)を合わせて、ページテーブルエントリ(PTE)と呼んでいる。各PTEには、図6に示すページ表内のページ表エントリのコピーを持つことが可能である。通常、TLBは、複数エントリより構成されており、近年の大容量TLBでは64エントリを備えるマイクロプロセッサも出てきている。 【0011】図8のTLB2(1000)において、各PTEにあるタグ部(1010)は、以下の2フィールド(a)〜(b)より構成されている。 (a)VPA[1:19]:Virtual Page Address(仮想ページアドレス) (b)ASID:Address Space ID(Identification Number)(アドレス空間ID) OSは、プロセス毎にASIDを管理することにより多重仮想アドレス空間を実現することが可能である。 【0012】また、各PTE内のデータ部(1011)は、以下の6フィールド(c)〜(h)より構成されている。 (c)PPA[1:19]:Physical Page Address(物理ページアドレス) 最小ページサイズ4kBに対応した物理ページアドレスを保持。MMUレジスタMPSZで示されるページサイズに応じて、使用サイズが変更される。 4kBページ:PPA[1:19]全て使用16kBページ:PPA[1:17]を不使用64kBページ:PPA[1:15]を不使用(d)N:Non Cachable Area bit(ノンキャッシャブルビット) 0=キャッシング可能領域1=キャッシング不可領域(e)AC[0:2]:Access Control bits(アクセス制御ビット) AC[0]:0=リードアクセス可能、1=リードアクセス不可AC[1]:0=ライトアクセス可能、1=ライトアクセス不可AC[2]:0=実行可能、1=実行不可【0013】(f)M:Modify bit(変更ビット) 命令TLBにはなく、データTLBにのみ存在する。 0=ライトアクセス未発生1=ライトアクセス発生(g)G:Global Page bit(グローバル・ページビット) 0=ローカル・ページ1=グローバル・ページ(h)V:Entry Valid bit(有効ビット) 0=無効エントリ1=有効エントリ【0014】次に、図8に示すTLB2の動作について説明する。まず、仮想アドレス(1050)が入力されてくると、アドレスデコード部(1001)にて、この仮想アドレス内の仮想ページアドレスの下位アドレスをデコードし、TLBタグ部(1002)及びTLBデータ部(1003)から一つのページテーブルエントリ(1010,1011)を選択する。選択されたページテーブルエントリ内のタグ部(1010)は、アドレス比較器(1004)に入力される。また、アドレス比較器(1004)には、仮想アドレス(1050)と、MMUレジスタ(1100)内のASIDと、選択されたページテーブルエントリ内のデータ部(1011)のG,Vビットが入力される。 【0015】アドレス比較器(1004)では、入力された仮想アドレス(1050)、MMUレジスタ(1100)内のASIDと、タグ部(1010)のVPA,ASIDがそれぞれ比較される。ASIDの比較はGビットが0の時のみ有効であり、全体の比較結果はVビットが1の時のみ有効である。Vビットが0であれば、無条件で比較結果は不一致となる。アドレス比較器(1004)で比較した結果一致したと判明(TLBヒット)すれば、プログラムで発生したメモリアクセス先の仮想ページに対するページ表エントリがTLB2(1000)に登録されていることを意味する。よって、選択されたページテーブルエントリのデータ部(1011)のPPAがデータ出力部(1005)より出力される。出力されたPPAは、論理アドレス(1050)中のオフセットアドレスと結合処理(1014)されて、物理アドレス(1015)として出力される。 【0016】同時に、ヒットしたページテーブルエントリ内のデータ部(1011)のN,ACビットは、TLB2制御部(1101)へ出力される。Nビットがセット(=1)されていると、生成された物理アドレスでアクセスしたデータをキャッシュメモリに登録しないような処理が実行される。ACビットは、生成された物理アドレスを用いて実施されるアクセスに対する例外を検出するために使用される。また、生成された物理アドレス(1015)を用いて実施されるアクセスがライト処理である場合には、物理ページが変更されたことを示しており、データ部(1011)内のMビットをセットする処理が実施される。通常、OSは、物理ページを物理メモリからページアウトする場合に、Mビットがセットされていれば物理ページの内容を2次記憶に書き戻す処理を実施する。 【0017】アドレス比較器(1004)において、比較結果が一致しなかった場合(TLBミス)は、その結果がTLB2制御部(1101)に伝達される。TLB2制御部(1101)では、TLBミスに伴う例外処理が必要であることをCPUコア(1052)に伝達する。この例外発生に伴う例外処理ルーチンは、CPUコア(1052)でソフトウェア的に処理される。すなわち、ソフトウェアでは、TLBミスは仮想ページに対するページ表エントリがTLBに登録されていないことを意味するため、TLBミスを起こしたページ表エントリをTLB2へ登録するための一連の処理を行う。さらに、メモリアクセスを再実行するために、TLBミスを発生した命令へ戻る処理を行う。このため、TLB2内のTLBタグ部(1002)とTLBデータ部(1003)は、CPUコア(1052)で実行されるロード/ストア命令によりアクセス可能となっている。ストア命令によりデータを書き込む場合は経路(1110)から、ロード命令によりデータを読み出す場合は経路(1111)により実行される。 【0018】また、図8に示すように、TLB2(1000)を制御するために、MMUレジスタ(1100)がある。MMUレジスタ(1100)は、TLBタグ部(1002)及びTLBデータ部(1003)と同様に、CPUコアからのロード/ストア命令によりアクセス可能である。このMMUレジスタ(1100)は、命令TLB及びデータTLBで共通して使用されるものである。 【0019】次に、図9は、図8にあるMMUレジスタ(1100)の一例を表した図である。 ◇MTOP(MMU TLB Operation DesignationRegister)(1200) TLBのオペレーションを指定する。 bit0<Pi>:命令TLB全エントリパージ0=TLBをパージしない1=TLBの全エントリをパージするbit1<Pd>:データTLB全エントリパージ0=TLBをパージしない1=TLBの全エントリをパージするbit31<S>:命令TLB及びデータTLBサーチ0=TLBをサーチしない1=MPVAレジスタ内の仮想アドレスとASIDを用いてTLBをサーチする。マッチしたTLBエントリのインデックス・アドレスをMIDXレジスタへ登録する。 【0020】◇MPSZ(MMU Page Size Designation Register)(1201) メモリのページサイズを指定する。 bit30−31<Size>:ページサイズ指定00=4KB Page01=16KB Page10=64KB Page11=Reserved【0021】◇MASID(MMU Address Space ID Register)(1202) オペレーティングシステムが管理するプロセスのアドレス空間IDを保持する。 Bit24−31<ASID>:アドレス空間ID(8ビット) 【0022】◇MIEVA(MMU Instruction Exception Virtual Address Register)(1203) 例外を発生した命令の仮想アドレス(ページアドレス)とMASIDレジスタ内アドレス空間IDを保持する。 bit1−19<EVA>:例外仮想アドレス(ページアドレス) bit24−31<ASID>:アドレス空間ID(8ビット) 【0023】◇MDEVA(MMU Operand Exception VirtualAddress Register)(1204) 例外を発生したオペランドの仮想アドレス(ページアドレス)とMASIDレジスタ内アドレス空間IDを保持する。 bit1−19<EVA>:例外仮想アドレス(ページアドレス) bit24−31<ASID>:アドレス空間ID(8ビット) 【0024】◇MESTS(MMU Exception Status Register)(1205) MMU例外を起こした要因を示す。 bit27<DS>:オペランドストアフラグ(ストア処理が例外を発生させた) bit28<DA>:オペランドアクセス例外フラグbit29<DT>:オペランドTLBミス例外フラグbit30<IA>:命令アクセス例外フラグbit31<IT>:命令TLBミス例外フラグ【0025】◇MPTB(MMU Page Table Base Register)(1206) 現在のページ表のベースアドレスを保持する。 bit1−27<PTBase>:ページテーブル表ベース【0026】◇MPVA(MMU Purge Virtual Address Register)(1207) TLBサーチ操作で使用される情報を保持する。 bit1−19<PVA>:TLBタグ部のVPAと比較されるページアドレスMMUレジスタMPSZで示されるページサイズに応じて、使用サイズが変更される。 4kBページ:PVA[1:19]全て使用16kBページ:PVA[1:17]を不使用64kBページ:PVA[1:15]を不使用bit24−31<PASID>:TLBタグ部のASIDと比較されるASID【0027】◇MIDX(MMU Search InDeX Register)(1208) TLBサーチ操作の結果がセットされる。 bit8<I>:ITLBマッチ検出フラグbit9−15<IDXI>:マッチしたITLBエントリのインデックス・アドレスbit24<D>:DTLBマッチ検出フラグbit25−31<IDXD>:マッチしたDTLBエントリのインデックス・アドレス【0028】以上、図8で説明したTLB2を用いた仮想記憶方式によるアドレス変換処理は、CPUコアからは命令フェッチとオペランドアクセスで発生する。近年、プロセッサの処理速度の向上は目覚しく数100MHzで動作するものが珍しくなくなってきた。このため、パイプラインの1ステージにかけることができる処理時間がますます短くなってきている。しかも、プログラム実行時に使用するメモリサイズが大きくなってきているため、MMUでアドレス変換効率の向上を図るためのTLBのエントリ数が増加してきている。そして、このTLBエントリ数増加が、マイクロプロセッサの動作周波数向上の足かせとなってきている。 【0029】 【発明が解決しようとする課題】そこで、この発明は、TLBへのエントリ数を削減することによってマイクロプロセッサの動作周波数を向上させることを目的とする。 【0030】 【課題を解決するための手段】この発明に係るメモリ管理機構は、仮想ページを特定する仮想ページアドレスと物理ページを特定する物理ページアドレスとを対応づける複数のアドレス変換情報を格納するページ表を有する計算機に備えられる、仮想ページアドレスと物理ページアドレスとを変換するメモリ管理機構において、少なくとも一つの上記アドレス変換情報を格納する第一のアドレス変換バッファと、上記第一のアドレス変換バッファよりも多くの上記アドレス変換情報を格納する第二のアドレス変換バッファと、上記ページ表に格納されているアドレス変換情報を読みこみ、読みこんだアドレス変換情報を上記第二のアドレス変換バッファへ登録することを制御する第二の制御部と、上記第二の制御部が上記登録したアドレス変換情報を入力し、入力したアドレス変換情報を上記第一のアドレス変換バッファへ登録することを制御する第一の制御部とを備えることを特徴とする。 【0031】上記第二の制御部は、上記第二のアドレス変換バッファへ新たなアドレス変換情報を登録する領域がない場合に、既に第二のアドレス変換バッファへ登録されているアドレス変換情報から無効にするアドレス変換情報を選択し、上記第一の制御部へ上記選択したアドレス変換情報を通知し、上記第一の制御部は、上記選択したアドレス変換情報が上記第一のアドレス変換バッファに格納されているかを検索し、検索した結果、上記選択したアドレス変換情報が格納されている場合は、上記選択したアドレス変換情報を無効にすることを特徴とする。 【0032】上記アドレス変換情報は、仮想ページアドレスを含み、上記第一のアドレス変換バッファは、さらに、仮想ページアドレスを入力し、上記第一のアドレス変換バッファに格納されたアドレス変換情報に含まれる仮想ページアドレスと入力した仮想ページアドレスとを比較し、比較した結果から上記入力した仮想ページアドレスが上記アドレス変換情報に含まれているかを判定する比較部を備えることを特徴とする。 【0033】上記比較部は、新たに登録するアドレス変換情報を入力し、第一のアドレス変換バッファに格納されたアドレス変換情報と上記新たに登録するアドレス変換情報とを比較して比較結果を出力し、上記第一のアドレス変換バッファは、さらに、上記比較部から比較結果を入力し、第一のアドレス変換バッファへ格納されているアドレス変換情報によって特定される物理ページと上記新たに登録するアドレス変換情報によって特定される物理ページとが連続しているページであるかを判定するマージ処理部を備えることを特徴とする。 【0034】上記マージ処理部は、連続していると判定した場合に、既に登録されているアドレス変換情報へ新たに登録するアドレス変換情報を併合して一つのアドレス変換情報として登録することを特徴とする。 【0035】上記アドレス変換情報は、アドレス変換情報によって特定される物理ページの属性の情報を含み、上記マージ処理部は、上記新たに登録するアドレス変換情報と既に登録されているアドレス変換情報とにそれぞれ含まれる物理ページの属性の情報が一致する場合に、上記既に登録されているアドレス変換情報へ上記新たに登録するアドレス変換情報を併合して一つのアドレス変換情報として登録することを特徴とする。 【0036】上記マージ処理部は、上記既に登録されているアドレス変換情報へ上記新たに登録するアドレス変換情報を併合して一つのアドレス変換情報として登録した場合は、上記新たに登録するアドレス変換情報に関する情報をマージ情報として、上記一つのアドレス変換情報へ設定し、比較部は、上記第一のアドレス変換バッファに格納されているアドレス変換情報にマージ情報が設定されている場合には、上記マージ情報を用いて、入力した仮想ページアドレスが上記アドレス変換情報に含まれているかを判定することを特徴とする。 【0037】上記第一のアドレス変換バッファは、複数のアドレス変換情報を格納し、上記複数のアドレス変換情報それぞれに対応する複数の比較部と複数のマージ処理部とを備えることを特徴とする。 【0038】 【発明の実施の形態】実施の形態1.この発明に係る実施の形態1のメモリ管理機構は、ソフトウェアから扱える大容量TLB2(第二のアドレス変換バッファ)の上位階層に、ハードウェア処理する高速処理可能な小用量TLB1(第一のアドレス変換バッファ)を設けて、このTLB1をパイプラインの1ステージ処理に組み込むようにしたメモリ管理機構に関するものである。 【0039】図1に、本発明のメモリ管理機構を示す。マイクロプロセッサの構成は、図7と同様である。図1のTLB2(1000)は、図8に示す従来のTLB2と同一方式のダイレクトマッピング方式TLBである。TLB2(1000)では、従来と同様に、仮想アドレス(1050)の入力とMMUレジスタ(30)内のASIDに対してTLBの検索を行う。TLBヒットした場合は、物理アドレス(1015)を生成する。一方、TLBミスした場合は、この結果がTLB2制御部(31)に伝達され、CPUコアに対して例外処理が発生する。また、TLB2(1000)内のTLBタグ部(1002)とTLBデータ部(1003)は、CPUコア(1152)からロード/ストア命令によりアクセス可能であり、ストア命令時には経路(1110)からデータが入力され、ロード時には経路(1111)からデータが読み出される。TLB2制御部(第二の制御部)(31)は、図8に示す従来のTLB2制御部(1101)とは異なり、TLB1制御部(第一の制御部)(9)と信号(33)をやり取りして制御する(この制御に関しては後述する)。 【0040】また、MMUレジスタ(30)は、図9に示す従来のMMUレジスタ群と同一構成である。しかし、MMUレジスタ(30)は、従来のものと異なり、TLB1制御部(9)と信号(32)をやり取りして制御する。すなわち、TLB1で検知した各種例外情報等もMMUレジスタ(30)に反映される場合がある。 【0041】図1のTLB1(1)は、本発明で新たに追加したTLBである。本発明のTLB1(1)は、一例として、フルアソシアティブ方式のTLBで示している。フルアソシアティブ方式は、エントリ毎に比較器を内蔵しており、仮想アドレス全てをこの比較器で比較を行い、TLBのヒット/ミスの判定を実施する方式である。TLB1(1)の各エントリには、TLB2(1000)のコピーを保持するために、TLB2のTLBタグ部(1002)とTLBデータ部(1003)の一つのエントリ(1010,1011)と同一構成のタグ部レジスタ(2)とデータ部レジスタ(4)を内蔵している。また、エントリのマージ処理を司るマージ処理部(3)と、比較器(5)を内蔵している。これらTLB1(1)は、通常1セット以上のエントリを内蔵する。TLB1(1)の各エントリのうち、いずれかがヒットした場合、出力制御部(6)を通してヒットしたエントリの物理ページアドレスが出力される。物理ページアドレスは、結合処理部(20)によりページ内オフセットと結合されて物理アドレスを生成する。また、ヒットしたエントリ内のN,AC,Mビットの情報は、TLB1制御部(9)に転送されて例外検出等の各種処理に利用される。 【0042】TLB1(1)の各エントリのうち、いずれもヒットしなかった場合は、TLB1ミスであることがTLB1制御部(9)に出力されて、TLB1(1)の登録処理が開始される。TLB1(1)の各エントリがいずれも有効なデータを保持しているため、新規データを上書きする必要がある場合は、いずれのエントリに上書きするかをLRU(Least Recently Used)制御部(8)にて判定する。また、新規データを既にTLB1のいずれかのエントリに登録してあるデータにマージ可能な場合は、マージ処理部(3)によりマージ処理が実施される。マージ処理部(3)によって実施されるマージ処理機構により、TLB1は自身のエントリ数より多い、TLB2エントリのコピーを保持することが可能となっている。 【0043】TLB1(1)の各エントリを更新するのは、CPUコア(1152)のストア命令によりTLB2(1000)にアクセスする経路(1110)か、TLB2から直接データを読み出す経路(1111)のいずれかをセレクタ(21)により選択し、経路(22)によりデータを取り込む場合がある。これら新規データによりTLB1をアクセスするのは、以下の場合である。 ・TLB1無効化処理。 ・TLB1マージ処理。 ・TLB1登録処理。 TLB1検索処理は、TLB1に所望の仮想アドレスが登録されているかどうかを検索する。TLB無効化処理は、TLB1に既に登録されているエントリを無効化する。TLBマージ処理は、新規にTLB1に登録するエントリがマージ可能かどうかを調査する。TLB1登録処理は、新規にTLB1へエントリを登録する。 【0044】図2に、図1に示すTLB1(1)の一つのエントリの詳細なブロック構成を示す。22aは、CPUコアまたはTLB2から本エントリに入力されるアドレス空間ID(ASID)、仮想ページアドレス(VPA)である。22bは、CPUコアまたはTLB2から本エントリへ入力される物理ページアドレス(PPA),ノンキャッシャブルビット(N)、アクセス制御ビット(AC)、変更ビット(M)、グローバルビット(G)、有効ビット(V)である。2は本エントリ内のタグ部レジスタであり、ASIDとVPAが格納されている。4は本エントリ内のデータ部レジスタであり、PPA,N,AC,M,G,Vが格納されている。 【0045】81はページサイズレジスタ(PSZ)であり、エントリマージ処理を実行した後のページサイズの最大値を保持している。82は上限レジスタ(UL)であり、PSZレジスタで示すページ範囲の中のマージされた最上位ページを示している。83はシフタであり、PSZレジスタ値を1ビット左シフトする。また、マージ処理管理部MERGE(80)は、比較器の結果信号(70〜76)を受けて、PSZ,ULレジスタのメインテナンスを実施することにより、マージ処理を制御する。比較器CMP1(50)は、外部バス22aから入力されるASIDと、タグ部レジスタ2のASIDを比較する。但し、データ部レジスタ4のグローバルビットGが有効である時(=1)は、比較器CMP1の結果は双方のASIDの値に依らずに一致しているという結果となる。 【0046】比較器CMP2(51)は、外部バス22aから入力されるVPAの一部と、タグ部レジスタ2のVPAの相当部分を比較する。比較器CMP3(52)は、外部バス22aから入力されるVPAの最大マージ可能ページサイズに相当する下位アドレスと、タグ部レジスタ2のVPAの相当部分を比較する。例えば、最大マージ可能ページサイズが16ページである場合(以下、最大マージ可能ページサイズは16ページで説明する)には、比較器CMP3(52)では、VPAの下位4ビットを比較することになる。そして、比較器CMP2(51)では、比較器CMP3(52)で比較したアドレスを除く残りのVPAアドレスを比較する。大小比較器SUB(53)は、タグ部レジスタ2のVPAの下位4ビットと、4ビットの上限レジスタULを比較し、VPAがULより小さいかどうかを判定する。 【0047】比較器CMP4(54)は、外部バス22bから入力されるPPAの一部と、データ部レジスタ4のPPAの相当部分を比較する。比較器CMP5(55)は、外部バス22bから入力されるPPAの最大マージ可能ページサイズに相当する4ビットの下位アドレスと、データ部レジスタ4のPPAの相当部分を比較する。比較器CMP4(54)では、比較器CMP5で比較したアドレスを除く残りのPPAアドレスを比較する。比較器CMP6(56)では、外部バス22bから入力されるN,AC,M,Gビットと、データ部レジスタ4の相当するビットを比較する。 【0048】また、比較器CMP3(52)、比較器CMP5(55)と、大小比較器SUB(53)では、ページサイズレジスタPSZ(81)の値に依って、比較条件が異なってくる(これら比較条件については後で説明する)。また、比較器CMP1(50),CMP2(51),CMP3(52),SUB(53),CMP4(54),CMP5(55),CMP6(56)の結果(それぞれ70,71,72,73,74,75,76)は、TLB1検索処理と、TLB1無効化処理と、TLB1マージ処理で使用される。 【0049】TLB1検索処理と、TLB1無効化処理では、比較器の結果(70,71,72)と、データ部レジスタ4の有効ビットVから、TLBがヒットかミスかをヒット判定部(60)で判定する。そして、TLBヒットした場合は、セレクタ(61)を介して、データ部レジスタ4の内容を読み出す。TLB1無効化処理で、TLBヒットした場合は、データ部レジスタ4の有効ビットVを無効にする。 【0050】TLB1マージ処理では、比較結果(70,71,72,73,74,75,76)全てを用いて、マージ処理が可能かどうかの判定を行なう。マージ処理とは、既にTLB1に登録されているページのエントリ(被マージエントリ)へ、新規に登録するページのエントリ(マージエントリ)のデータをまとめてしまう処理を指している。すなわち、被マージエントリのページサイズレジスタPSZと上限レジスタULの内容を制御することにより、複数のページを一つのエントリへ登録することが可能となる。 【0051】マージ処理は、単独の被マージエントリでかつVPAの下位4ビットが全て“0”であるエントリから開始される。この被マージエントリにおけるPSZ,ULレジスタの値は以下に示すものとなっている。 (PSZ,UL)=(4’b0000,4’b0001):単独ページ被マージエントリに登録されるマージされるマージエントリは、既に被マージエントリに登録されている最大アドレスページに連続するアドレスのページである。すなわち、被マージエントリが単独エントリである場合には、マージされるエントリのVPA,PPAは、被マージエントリのものと下位1ビットが異なるのみである。また、VPA,PPA以外のASID,N,AC,Gビットは全て一致している必要があり、かつ被マージエントリのMビットは“0”でなければならない。このように、単独ページに連続するページがマージヒットし、2ページがマージされたエントリのPSZ,ULレジスタの値は、以下に示すものとなっている。 (PSZ,UL)=(4’b0001,4’b0010):2ページマージ【0052】これと同様に、3ページ以降もマージ可能である。マージ処理時に比較するVPA,PPAの値は、ULレジスタに示す値において最上位にある“1”より以下のビットを全て無視して、それぞれ比較器CMP3(52)、比較器CMP5(55)で比較する。また、マージエントリのページが被マージエントリの次ページであることは、VPAの下位4ビットとULレジスタの値を比較器SUB(53)で一致が検出されることにより判定することが可能である。すなわち、ULレジスタの値は、被マージエントリの次のページの下位4ビットを保持している。3〜16個のページが登録された後のPSZ,ULレジスタの値は、以下に示すものとなっている。 【0053】 (PSZ,UL)=(4’b0011,4’b0011):3ページマージ (PSZ,UL)=(4’b0011,4’b0100):4ページマージ (PSZ,UL)=(4’b0111,4’b0101):5ページマージ (PSZ,UL)=(4’b0111,4’b0110):6ページマージ (PSZ,UL)=(4’b0111,4’b0111):7ページマージ (PSZ,UL)=(4’b0111,4’b1000):8ページマージ (PSZ,UL)=(4’b1111,4’b1001):9ページマージ (PSZ,UL)=(4’b1111,4’b1010):10ページマージ (PSZ,UL)=(4’b1111,4’b1011):11ページマージ (PSZ,UL)=(4’b1111,4’b1100):12ページマージ (PSZ,UL)=(4’b1111,4’b1101):13ページマージ (PSZ,UL)=(4’b1111,4’b1110):14ページマージ (PSZ,UL)=(4’b1111,4’b1111):15ページマージ (PSZ,UL)=(4’b1111,4’b0000):16ページマージ【0054】PSZレジスタの値は、マージ処理時ではなく、TLB1検索処理時に使用する。すなわち、TLB1検索処理時には、VPAの下位4ビットの値は、PSZレジスタで示す“1”の部分を無視して、比較器CMP3(52)で比較する。さらに、VPAの下位4ビットとULレジスタ値を比較器SUB(53)で比較し、VPAの下位4ビットの値がULレジスタの値よりも小さい場合に、TLB検索により所望のページデータがTLBに登録されていたことが示される。 【0055】図3に、図1に示す本発明のTLB1,TLB2を用いた物理アドレスから仮想アドレスへの変換処理のフローチャートを示す。本アドレス変換処理機構に仮想アドレスが入力されてくると(S11)、まず、この仮想アドレス等を用いてTLB1の検索を実施する(S12)。このTLB1検索において、TLBヒットすれば(S12でヒット)、所望の物理アドレス生成を行い、目的であったアドレス変換処理が完了する(S13)。一方、TLB1検索において、TLBミスすれば(S12でミス)、TLB2検索を実施する(S14)。 【0056】このTLB2検索において、TLBヒットすれば(S14でヒット)、TLB2内のヒットしたエントリデータをS23〜S28の工程によりTLB1に格納し、S11に戻り、再度仮想アドレスにてTLB1検索処理を実施して(S12)所望の物理アドレスの生成を実施する。以下、S23〜S28の工程を説明する。TLB2内のヒットしたエントリデータは、タグ部及びデータ部全て読み出されて(S23)、TLB1への格納処理に使用される。TLB1への格納では、まず、マージ処理が可能であるかどうかをチェックするためのTLB1検索を実施する(S24)。この検索において、TLB1ヒットすれば(S24でヒット)、図2を用いて説明したTLB1マージ処理を実施し、TLB1格納処理を完了する(S25)。 【0057】一方、TLB1検索において、TLBミスすれば(S24でミス)、新規に登録可能なエントリがTLB1内に存在するため、TLB1のエントリを更新する必要のない場合は(S26でなし)、そのままTLB1の登録を実施する(S28)。そして、TLB1のエントリが全て使用されているため、あるエントリを更新する必要がある場合は(S26であり)、リプレースアルゴリズム従って、TLB1のあるエントリの更新処理を実施する(S27)。これら一連のTLB1格納処理を完了する(S28)。S28を完了した後に、S11に戻り、再度TLB1検索処理を実施して(S12)、所望の物理アドレス生成を行う(S13)。 【0058】一方、TLB2検索において、TLBミスすれば(S14でミス)、例外処理によってアドレス変換用のデータを生成し(S15)、ソフトウェアによって上記アドレス変換用のデータのアドレス変換処理を行い(S16)、変換したアドレスデータをTLB2へ登録する(S17)。次に、S18〜S22の工程により、このデータをTLB2に格納する処理を実施する。このTLB2への格納処理にて、TLB2内に新規に登録可能なエントリが存在するため、TLB2のエントリを更新する必要のない場合は(S18でなし)、そのままTLB2への登録処理を実施し(S22)、S23へ進む。そして、TLB2内のエントリが全て使用されているため、あるエントリを更新する必要がある場合は(S18であり)、ソフトウェアが更新エントリを決定してTLB2更新処理を実施する。このTLB2更新処理の前に、更新される前のデータをTLB2から読み出し(S19)、TLB1検索を実施する必要がある(S20)。このTLB1検索において、TLBヒットした場合は(S20でヒット)、TLB2の更新前データがTLB1にも存在したことを意味するため、このヒットしたエントリを無効化する必要がある(S21)。 【0059】一方、TLB1検索において、TLBミスした場合には(S20でミス)、TLB1においては特に何もする必要はなく、TLB2の登録処理に進む(S22)。以上、TLB1,TLB2を用いた仮想アドレスから物理へのアドレス変換手順についてフローチャートを用いて説明した。この実施の形態において、一例として示すアドレスバッファ機構は、これらアドレス変換処理のうち、ソフトウェア処理で行うのはTLB2検索でミスして例外発生した後のアドレス変換処理及び登録処理のみであり、他の処理は全てハードウェアで処理するための制御機構を備えている。これら制御機構により、ソフトウェアは、TLB1を意識することなく、TLB2のメインテナンス処理のみを実施していればよい。 【0060】図4に、図1に示す本発明のTLB1,TLB2を用いて実施する物理アドレスから仮想アドレスへの変換処理のタイミングチャートを示す。最上段のタイミングチャートは、TLB1がヒットした場合のものである。真中のタイミングチャートは、TLB1がミスし、かつ、TLB2がヒットした場合のものである。そして、最下段のタイミングチャートは、TLB1がミスし、かつ、TLB2もミスした場合のものである。これらTLB1,TLB2は、いずれもオペランドアクセス用のものである。命令フェッチ用のTLB1,TLB2も別途備えているけれども、本説明では必ずヒットすると仮定している。 【0061】本発明のマイクロプロセッサは、5段のパイプラインステージより構成されるCPUコアを内蔵している。これらパイプラインステージは、命令フェッチを行うIFステージと、命令デコードを行うDステージと、命令実行を行うEステージと、オペランドアクセスを行うMステージと、そして、命令実行結果を格納するWステージである。 【0062】最上段のもののようにTLB1がヒットした場合は、TLB1アクセスは1クロックサイクル内に完了するため、パイプライン処理が乱れることなく、5クロックサイクルで1命令の実行が完了する。これに対して真中のもののように、TLB1がミスしTLB2がヒットした場合、ヒットしたTLB2エントリのデータをTLB1にマージ、あるいは、登録し(検索を含めて2クロックサイクル:CK4−CK5)、再度TLB1検索を実施する(CK6)のに、3クロックサイクル余分にかかることになる。 【0063】さらに、最下段のもののように、TLB1,TLB2いずれもミスした場合には、CK4に示す例外処理が複数クロックサイクルかかり、例外処理で生成したアドレス変換用のデータをTLB2に登録し(CK5)、その後、TLB1への格納処理に3クロックサイクルかかることになる。また、図10は、図8に一例として示すTLB2を用いて、実施した仮想アドレス空間から物理アドレス空間へのマッピングの一例を示す。図4と図10に示すように、図4では、図10に比べ、1サイクルの時間が短くなっている。従って、TLB1を用いることにより、パイプラインステージの各ステージに要する時間を短縮することが可能になる。 【0064】前述した命令フェッチ用のTLB1,TLB2によるアドレス変換処理においてミスが発生した場合も、オペランドアクセス処理と同様な処理サイクル数がかかる。図5に、図1に示す本発明のTLB1,TLB2を用いて実施した仮想アドレス空間から物理アドレス空間へのマッピングの一例を示す。仮想アドレス空間(90)上の連続する6ページVPT1,VPT2,VPT3,VPT4,VPT5,VPT6は、物理アドレス空間(91)上ではそれぞれPPT1,PPT2,PPT3,PPT4,PPT5,PPT6へマッピングされている。これら物理アドレス空間上の6個のページのうち、ページPPT1,PPT2,PPT3の3ページは連続するページであり、その空間属性はいずれも等しい。これら連続する3ページのアドレス変換情報をTLB2(1000)に登録した場合には3エントリ必要となるのに対して、TLB1(1)に登録した場合、これら3ページをマージすることが可能(もちろん前述したように、マージするための条件を満たす必要がある)であるため、1エントリのみの使用で済む可能性がある。 【0065】以上述べてきたように、本発明のアドレス変換機構では、小容量ではあるが高速アドレス変換可能なTLB1と、比較的大容量なTLB2とを組み合わせることにより、アドレス変換処理によって生じるCPUコアのパイプライン処理の速度的ペナルティを最小限に抑えることが可能となった。また、TLB1にエントリマージ機構を組み込むことにより、TLBミスによるペナルティも抑えることが可能となっている。 【0066】以上のように、このメモリ管理機構は、仮想ページアドレスとページ内オフセット値より構成される仮想アドレスで参照する空間上に配置されたプログラムに従ってデータを処理する中央演算処理装置と、該仮想アドレスの仮想ページアドレスを物理ページアドレスに置き換えた物理アドレスで参照される空間上に、該プログラムと該データを格納する主記憶装置から構成される計算機システムであって、該仮想ページアドレスで特定されるページと、該物理ページアドレスで特定されるページ間のアドレス変換を高速に行うために、該アドレス変換情報を管理しているページ表エントリを登録可能な第一のアドレス変換バッファと(TLB1)、第一のアドレス変換バッファより大容量の第二のアドレス変換バッファ(TLB2)を備え、最新のアドレス変換リクエストアドレスに対するアドレス変換情報が、該中央演算処理装置か該第二のアドレス変換バッファに書き込まれた後に、該第一のアドレス変換バッファにも書き込むように制御する制御手段を具備し、該アドレス変換リクエストに対して、より高速なアドレス変換処理が可能な第一のアドレス変換バッファでアドレス変換処理を行うことを特徴とする。 【0067】また、上記第二のアドレス変換バッファに新アドレス変換情報を登録する時に、既に登録されている旧アドレス変換情報を削除する必要がある場合は、該旧アドレス変換情報が上記第一のアドレス変換バッファにも存在するかどうかを検索し、存在する場合は該第一のアドレス変換バッファから該旧アドレス変換情報を削除するように制御する制御手段(TLB1制御部)を備える。 【0068】上記第一のアドレス変換バッファに新アドレス変換情報を登録する時に、該新アドレス変換情報が示す仮想及び物理ページが、既に登録されている旧アドレス変換情報が示す仮想及び物理ページに連続するページであることを調査し、該新アドレス変換情報が示す各種ページ属性が、既に登録されている該旧アドレス変換情報が示す各種ページ属性が同一であることを調査する制御手段(マージ処理部)とを備える。 【0069】さらに、マージ処理部は、新アドレス変換情報に示すページが、既に登録されている旧アドレス変換情報に示すページに対して、仮想アドレス空間上においても物理アドレス空間上においても連続しており、かつ同一の空間属性を備えることが判明した時に、該新アドレス変換情報と該旧アドレス変換情報を一つのアドレス変換情報として併合して登録するように制御する。 【0070】また、第一のアドレス変換バッファにおいて、新及び旧アドレス変換情報を併合して登録した後に、さらにアドレス変換リクエスト処理を行った時に、該併合アドレス変換情報によりアドレス変換処理が実行される制御手段(比較部)を備える。 【0071】 【発明の効果】この発明のメモリ管理機構によれば、小容量ではあるが高速アドレス変換可能なTLB1と、比較的大容量なTLB2とを組み合わせることにより、アドレス変換処理によって生じるCPUコアのパイプライン処理の速度的ペナルティを最小限に抑えることが可能となった。 【0072】またTLB1にマージ処理機構を組み込むことにより、TLBミスによるペナルティも抑えることが可能となっている。 【0073】またTLB1にマージ処理機構を組み込むことにより、少ない容量のアドレス変換バッファへより多くのアドレス変換情報を格納することができる。 【0074】また、TLB1にマージ処理によって併合されたアドレス変換情報を検索する比較部を備えることにより、少ないアドレス変換情報で検索可能な仮想ページアドレスを増やすことができる。
|
| 【出願人】 |
【識別番号】000006013 【氏名又は名称】三菱電機株式会社
|
| 【出願日】 |
平成12年10月25日(2000.10.25) |
| 【代理人】 |
【識別番号】100099461 【弁理士】 【氏名又は名称】溝井 章司 (外2名)
|
| 【公開番号】 |
特開2002−132581(P2002−132581A) |
| 【公開日】 |
平成14年5月10日(2002.5.10) |
| 【出願番号】 |
特願2000−325028(P2000−325028) |
|