説明

アドレス変換装置、アドレス変換装置の制御方法及び演算処理装置

【課題】プロセス(コンテキスト)の切り替え時にエントリを無効化せずとも、アドレス変換に係る検索を適切なエントリだけを対象として行えるアドレス変換装置を提供する。
【解決手段】アクセス要求したプロセスのコンテキストとエントリのコンテキストとが一致すると判定された場合にオンとされるマッチフラグ36をエントリ毎に設け、アクセス要求で指定された仮想アドレスVAを物理アドレスPAに変換する場合に、マッチフラグ36がオンであるエントリだけを対象としてアドレス変換に用いるエントリを検索する。アクセス要求したプロセスのコンテキストに対応するものでないエントリのマッチフラグ36はオフされるので、プロセス(コンテキスト)の切り替え時にエントリを無効化しなくとも、アクセス要求したプロセスのコンテキストに対応するエントリだけを対象とした検索が可能となる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アドレス変換装置、アドレス変換装置の制御方法及び演算処理装置に関する。
【背景技術】
【0002】
計算機では、実際の物理メモリが提供可能なメモリ空間を越えるメモリ空間を利用するプログラムの走行や、複数の処理を並行して行うマルチタスクの処理のために仮想記憶が利用される。演算処理装置としてのプロセッサが仮想記憶モードで動作しているとき、プロセッサによるメインメモリ等へのアクセスは、プロセッサから出力された仮想アドレス(VA:Virtual Address)を物理アドレス(PA:Physical Address)に変換して行われる。
【0003】
この仮想アドレスから物理アドレスへの変換を、アクセスのたびにメインメモリ(主記憶)に格納されたアドレス変換テーブルを参照して行うと性能の低下を招いてしまう。そこで、仮想アドレスから物理アドレスへのアドレス変換テーブルの情報の一部を保持(キャッシュ)するアドレス変換バッファ(TLB:Translation Lookaside Buffer)を設け、物理アドレスへの変換を高速に行う手法がとられる。
【0004】
また、TLBのアクセスをさらに効率的に行うために、容量が小さい(エントリ数が少ない)が高速にアクセス可能なマイクロTLBと、低速かつ大容量(エントリ数が多い)のメインTLBとからなる2階層の構成を採用することが多くなってきている。プロセッサからメインメモリ等へのアクセス時には、まずマイクロTLBが参照され、仮想アドレスに対応する情報が見つからなければ、メインTLBが参照される。さらに、メインTLBに仮想アドレスに対応する情報が見つからなければ、メインメモリのアドレス変換テーブルが参照される。高い性能を求められるプロセッサにおいては、マイクロTLBの実装面積、性能、高速アクセスなどの面で様々な工夫が行われている。
【0005】
マイクロTLBの一例を図10に示す。図10に示すマイクロTLBは、後述する3つのアドレスモードをもつアーキテクチャにおいて、各エントリが保持するアドレス情報のアドレスモードを示す2ビットの情報をコンテキストIDとして登録し、複数のアドレスモードについてアドレス変換を行う。
【0006】
図10において、101はCAM(Content Addressable Memory:連想メモリ)部である。CAM部101は、タグ部とデータ部を有する。タグ部には、エントリが有効であるか無効であるかを示す有効フラグ(V)102、コンテキストID(CTIDR<i>)103、及び仮想アドレス(VAD<i>)104がエントリ(Entry)<i>として保持される。また、データ部には、仮想アドレス(VAD<i>)104に対応する物理アドレス(PAD<i>)105がエントリ<i>として保持される。なお、iは添え字であり、i=1、2、3、…、Nの自然数である。また、106はCPUが有するレジスタの値等のCPUの内部状態を表すコンテキストを保持するコンテキストレジスタである。コンテキストレジスタ106は、第1〜第3のレジスタ106−1〜106−3を有する。
【0007】
第1のアドレスモードのコンテキストIDを例えば“00”とし、第1のアドレスモードのコンテキスト(CTXEa)が、コンテキストレジスタ106の第1のレジスタ106−1に保持される。また、第2のアドレスモードのコンテキストIDを例えば“01”とし、第2のアドレスモードのコンテキスト(CTXEb)が、コンテキストレジスタ106の第2のレジスタ106−2に保持される。同様に、第3のアドレスモードのコンテキストIDを例えば“10”とし、第3のアドレスモードのコンテキスト(CTXEc)が、コンテキストレジスタ106の第3のレジスタ106−3に保持される。ここで、コンテキストは、OS等が動かすプロセスを識別するための情報(プロセスを特定する情報)である。
【0008】
プロセッサによるメインメモリ等へのアクセス時には、プロセッサからのアクセス要求に含まれる仮想アドレス及びコンテキストIDを用いてマイクロTLBを検索する。詳細には、アクセス要求に係る仮想アドレスVAの上位部VAU(VPN)及びコンテキストID(CTID)を検索用のタグとして使用し、CAM部101の全エントリ(エントリ<1>〜エントリ<N>)を並行動作により同時に検索する。仮想アドレスVAにおける上位部VAU(VPN)は仮想ページ番号に相当する部分であり、仮想アドレスVAにおける残りの下位部VAL(POF)はページ内オフセットに相当する部分である。
【0009】
検索の結果、有効フラグ(V)102が有効を示し、かつコンテキストID(CTID)とコンテキストID(CTIDR)、及び仮想アドレスVAの上位部VAU(VPN)と仮想アドレスVADがともに一致するエントリがあれば、TLBエントリヒットとする。そして、ヒットしたエントリにおける物理アドレスPADを出力し、それを上位部PAU(PPN)として下位部PAL(POF)と連結して、変換後のアドレス、すなわち物理アドレスPAを求める。一方、マイクロTLBのエントリがヒットしなかった場合には、アクセス要求に係る仮想アドレス及びコンテキストをメインTLBに供給し、供給した仮想アドレス及びコンテキストを用いたメインTLBの検索が行われる。
【0010】
ここで、物理アドレスPAにおける上位部PAU(PPN)は物理ページ番号に相当する部分であり、物理アドレスPAにおける下位部PAL(POF)はページ内オフセットに相当する部分である。また、ページ内オフセットに相当する下位部PAL(POF)は、仮想アドレスVAでページ内オフセットに相当する下位部VAL(POF)を何ら変換していないものであり、等しいデータ(アドレス値)である。
【0011】
現在実行しているプロセスのIDと情報が保存されたときのプロセスIDとを比較し、比較したプロセスのIDが一致する場合にのみ、物理アドレスに変換する仮想アドレスと保存されている仮想アドレスとの比較を行うようにしたTLBが提案されている。また、プロセッサで扱うプロセスがTLBのプロセスID部では扱えない数になった場合にTLBにおけるアドレスの情報を選択的に無効にするTLBが提案されている。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】特開2000−163318号公報
【特許文献2】特開昭63−81548号公報
【発明の概要】
【発明が解決しようとする課題】
【0013】
一般に、複数のプロセスが動作する場合には、プロセス毎に異なる仮想アドレス空間が割り当てられる。すなわち、プロセス毎に仮想アドレスと物理アドレスとの対応関係が異なる。したがって、同じアドレスモードでプロセスを切り替えることによりコンテキストスイッチが発生し、コンテキストレジスタの情報が書き替えられると、書き替え前にマイクロTLBに登録されていたアドレスモードの情報(エントリ)は、異なるコンテキストの情報であるので使用できない。そのため、書き替え前に登録されていたアドレスモードのマイクロTLBに登録済みの情報(エントリ)については、有効フラグ(V)102を落とすことによりすべて無効化する。
【0014】
つまり、同じアドレスモードでコンテキストが(A)から(B)に変わった場合には、そのアドレスモードのマイクロTLBの登録情報(エントリ)はすべて無効化される。その後、再度コンテキストが変わり、コンテキストが(B)から(A)に戻った場合には、コンテキストが(A)の情報はマイクロTLBに登録されていないため、マイクロTLBのエントリがヒットせずにアドレス変換に時間を要する結果となり、性能の低下を招いていた。例えば、OS(オペーレーティングシステム)のいわゆる特権モードとユーザモードの切り替えが頻繁に行われると、マイクロTLBの登録情報の無効化(フラッシュ)が頻繁に発生し、性能が低下してしまう。
【0015】
1つの側面では、本発明は、アドレス変換に係る検索範囲を絞ることを可能とすることを目的とする。
【課題を解決するための手段】
【0016】
アドレス変換装置の一態様は、プロセスを実行する命令制御部からのアクセス要求に含まれる仮想アドレスを物理アドレスに変換するアドレス変換装置において、仮想アドレスと物理アドレスとの対応関係を示す第1のアドレス情報と、第1のアドレス情報が有効であるかを示す有効情報と、第1のアドレス情報に対応するコンテキスト情報がプロセスを実行する命令制御部からのアクセス要求に含まれるコンテキスト情報と一致するかを示す一致情報とを保持する第1のエントリを複数有する第1のアドレス変換部と、複数の第1のエントリの各々に保持された第1のアドレス情報のアドレスモードを示すコンテキスト情報を、複数の第1のエントリの各々に対応して保持する情報保持部と、アクセス要求に含まれるコンテキスト情報と、情報保持部に保持されたコンテキスト情報を比較するとともに、比較した結果が一致する場合、一致する情報保持部に保持されたコンテキスト情報に対応する第1のエントリに保持された一致情報を、コンテキスト情報の一致を示すように変更する比較部と、複数の第1のエントリのうち、有効情報が有効を示しかつ一致情報が一致を示す第1のエントリから、アクセス要求に含まれる仮想アドレスと同一の仮想アドレスを含む第1のアドレス情報を検索し、検索した第1のアドレス情報に含まれる物理アドレスを出力する制御部とを有する。
【発明の効果】
【0017】
一実施態様では、アドレス変換に係る検索範囲を絞ることができる。
【図面の簡単な説明】
【0018】
【図1】本発明の実施形態におけるプロセッサを含むプロセッサシステムの構成例を示す図である。
【図2】本実施形態におけるTLBの構成例を示す図である。
【図3】本実施形態におけるマイクロTLBの構成例を示す図である。
【図4】本実施形態におけるコンテキスト比較部を説明するための図である。
【図5】本実施形態におけるCAM部を説明するための図である。
【図6】本実施形態におけるメインTLBの構成例を示す図である。
【図7】TLB検索に係るパイプライン処理を説明するための図である。
【図8】本実施形態におけるTLB検索処理の一例を示すフローチャートである。
【図9】本実施形態におけるTLB検索処理の一例を示すフローチャートである。
【図10】マイクロTLBの一例を示す図である。
【発明を実施するための形態】
【0019】
以下、本発明の実施形態を図面に基づいて説明する。
【0020】
図1は、本発明の一実施形態におけるプロセッサシステムの構成例を示す図である。
図1において、11は演算処理装置としてのCPU(Central Processing Unit)であり、17は主記憶部である。CPU11は、命令制御部・演算部12と、1次キャッシュ(L1キャッシュ)14及びアドレス変換バッファ(TLB:Translation Lookaside Buffer)部15を有する1次キャッシュ部13と、2次キャッシュ(L2キャッシュ)16とを有する。CPU11(命令制御部・演算部12、1次キャッシュ部13、2次キャッシュ16)は、例えば1つのチップに形成され、図示しないバス等を介してメインメモリ等の主記憶部17と接続されている。
【0021】
命令制御部・演算部12は、CPU11が実行する命令処理の制御や命令に基きデータに対する演算を行う。命令制御部・演算部12は、処理すべき命令や命令の対象となるデータを記憶装置から読み込み、読み込んだ命令を解釈して解釈結果に従い演算等を行う。1次キャッシュ14、2次キャッシュ16、主記憶部17は、命令制御部・演算部12が読み込む命令やデータ、及び命令制御部・演算部12から出力される演算結果等を記憶する記憶装置である。
【0022】
1次キャッシュ14は、2次キャッシュ16に記憶される情報(命令、データ等)の一部が記憶され、命令制御部・演算部12からの要求に対して2次キャッシュ16よりも高速に命令やデータ等を応答することが可能である。2次キャッシュ16には、主記憶部17に記憶される命令、データ等の一部が記憶される。また、主記憶部17には、仮想アドレスから物理アドレスへのアドレス変換を行う際に用いられるアドレス変換テーブル(仮想アドレスと物理アドレスとの対応関係を示す情報)が記憶されている。TLB部15は、この仮想アドレスから物理アドレスへのアドレス変換テーブルの情報の一部を保持(キャッシュ)し、命令制御部・演算部12から出力された仮想アドレスを物理アドレスに変換する。
【0023】
データの読み込み等の要求が命令制御部・演算部12から発行されると、まずTLB部15にて仮想アドレスを物理アドレスに変換し、物理アドレスを用いて記憶装置(1次キャッシュ14、2次キャッシュ16、主記憶部17)に対してアクセスを行う。そして、要求に対応するデータが1次キャッシュ14に存在する場合には、1次キャッシュ14から命令制御部・演算部12にデータが供給される。要求に対応するデータが1次キャッシュ14に存在しない場合には、2次キャッシュ16を検索し、2次キャッシュ16に存在すれば、2次キャッシュ16から1次キャッシュ14を介して命令制御部・演算部12にデータが供給される。要求に対応するデータが2次キャッシュ16にも存在しない場合には、主記憶部17から2次キャッシュ16及び1次キャッシュ14を介して命令制御部・演算部12にデータが供給される。
【0024】
図2は、TLB部15の構成例を示す図である。本実施形態におけるTLB部15は、データキャッシュと同様に2階層の構造が用いられ、容量が小さい(エントリ数が少ない)が高速にアクセス可能なマイクロTLB21と、低速かつ大容量(エントリ数が多い)のメインTLB22とを有する。例えば、マイクロTLB21は参照方式としてフルアソシアティブ方式が用いられ、メインTLB22は参照方式としてセットアソシアティブ方式が用いられる。
【0025】
TLB部15は、命令制御部・演算部12から要求REQが発行されると、要求REQにおいて指定された仮想アドレスVAを用いて情報を検索し、仮想アドレスVAを物理アドレスPAに変換する。本実施形態では、要求REQにおいて指定された仮想アドレスVAの上位部VAU(VPN)とコンテキストCTXTを用いてTLB部15での検索を行う。ここで、仮想アドレスVAにおける上位部VAU(VPN)は仮想ページ番号に相当する部分であり、仮想アドレスVAにおける残りの下位部VAL(POF)はページ内オフセットに相当する部分である。例えば、仮想アドレスVAを64ビット(<63:0>)とし、上位部VAU(VPN)を63〜13ビット目(<63:13>)とし、下位部VAL(POF)を12〜0ビット目(<12:0>)とする。コンテキストCTXT(例えば13ビット)は、OS等が動かすプロセスを識別するための情報(プロセスを特定する情報)である。
【0026】
まず、仮想アドレスVAの上位部VAU(VPN)とコンテキストCTXTを用いてマイクロTLB21を検索し、対応する物理アドレスの情報(物理アドレスPAの上位部PAU(PPN))が検索されれば、検索された物理アドレスの情報が出力される。出力された情報を上位部PAU(PPN)として下位部PAL(POF)と連結して、変換後のアドレスである物理アドレスPAが求められる。ここで、物理アドレスPAにおける上位部PAU(PPN)は物理ページ番号に相当する部分であり、物理アドレスPAにおける下位部PAL(POF)はページ内オフセットに相当する部分である。また、ページ内オフセットに相当する下位部PAL(POF)は、仮想アドレスVAでページ内オフセットに相当する下位部VAL(POF)を何ら変換していないものであり、等しいデータ(アドレス値)である。例えば、物理アドレスPAを48ビット(<47:0>)とし、上位部PAU(PPN)を47〜13ビット目(<47:13>)とし、下位部PAL(POF)を12〜0ビット目(<12:0>)とする。
【0027】
マイクロTLB21を検索した結果、対応する物理アドレスの情報がマイクロTLB21にない場合には、仮想アドレスVAの上位部VAU(VPN)とコンテキストCTXTをメインTLB22に供給して、メインTLB22を検索する。対応する物理アドレスの情報(物理アドレスPAの上位部PAU(PPN))がメインTLB22にあれば、その情報PHYADがメインTLB22からマイクロTLB21に出力され、マイクロTLB21に登録される。そして、再度マイクロTLB21の検索を行い、対応する物理アドレスの情報(物理アドレスPAの上位部PAU(PPN))が出力される。なお、メインTLB22からの情報を登録するマイクロTLB21のエントリは、例えば後述する有効フラグやLRUアルゴリズム等を用いて適宜決定すれば良い。
【0028】
図3は、マイクロTLB21の構成例を示す図である。なお、図3には、第1〜第3の3つのアドレスモードをもつアーキテクチャにおけるマイクロTLB21を一例として示している。マイクロTLB21は、コンテキスト比較部31、コンテキストレジスタ32、コンテキストアレイ33、及びCAM(Content Addressable Memory:連想メモリ)部34を有する。
【0029】
コンテキストレジスタ32は、第1〜第3のレジスタ32−1〜32−3を有する。第1のレジスタ32−1には、第1のアドレスモードのコンテキスト(CTXEa)が保持される。同様に、第2のレジスタ32−2には、第2のアドレスモードのコンテキスト(CTXEb)が保持され、第3のレジスタ32−3には、第3のアドレスモードのコンテキスト(CTXEc)が保持される。
【0030】
コンテキストアレイ33は、CAM部34に保持されるエントリと同数のレジスタ33−iを有する。なお、iは添え字であり、i=1、2、3、…、Nの自然数である(以下の説明においても同様)。言い換えれば、コンテキストアレイ33のレジスタ33−iは、CAM部34に保持される各エントリ(Entry)<i>に対応して設けられている。レジスタ33−iの各々には、CAM部34の対応するエントリ<i>のコンテキスト(CTXR<i>)が保持される。
【0031】
コンテキスト比較部31は、コンテキストID(CTID)、コンテキストレジスタ32に保持されているコンテキスト、及びコンテキストアレイ33に保持されているコンテキストが入力される。コンテキストID(CTID)は、アドレスモードを示す2ビットの情報である。
【0032】
コンテキスト比較部31は、コンテキストアレイ33のすべてのエントリについて、コンテキストレジスタ32に保持されているコンテキストとコンテキストアレイ33に保持されているコンテキストとをエントリ毎に比較する。すなわち、第1〜第3のレジスタ32−1〜32−3に保持されているコンテキスト(CTXEa、CTXEb、CTXEc)とレジスタ33−iに保持されているコンテキスト(CTXR<i>)とを比較する。
【0033】
コンテキスト比較部31は、現在のアドレスモードのコンテキストとレジスタ33−iに保持されているコンテキスト(CTXR<i>)とが一致した場合には、そのエントリに対応するコンテキストマッチ信号CTXMTをアクティブにして出力する。つまり、コンテキスト比較部31は、CAM部34に保持されているエントリのコンテキストが現在のアドレスモードのコンテキスト(アクセス要求したプロセスのコンテキスト)と一致する場合にコンテキストマッチ信号CTXMTをアクティブにして出力する。
【0034】
図4にコンテキスト比較部の構成例を示す。なお、図4においては、1つのエントリ分に対応する構成のみを示しているが、コンテキスト比較部は図4に示す構成をCAM部34に保持されているエントリ数分有している。
【0035】
図4において、41、42、43は比較器である。比較器41は、コンテキストレジスタ32の第1のレジスタ32−1に保持されているコンテキスト(CTXEa)と、コンテキストアレイ33のレジスタ33−iに保持されているコンテキスト(CTXR<i>)とを比較する。比較器42は、コンテキストレジスタ32の第2のレジスタ32−2に保持されているコンテキスト(CTXEb)と、コンテキストアレイ33のレジスタ33−iに保持されているコンテキスト(CTXR<i>)とを比較する。比較器43は、コンテキストレジスタ32の第3のレジスタ32−3に保持されているコンテキスト(CTXEc)と、コンテキストアレイ33のレジスタ33−iに保持されているコンテキスト(CTXR<i>)とを比較する。比較器41、42、43は、対象のコンテキストが一致した場合に、出力をアクティブにする。
【0036】
そして、比較器41、42、43からの比較結果に応じた出力が、コンテキストID(CTID)に応じて選択され、コンテキストマッチ信号CTXMT<i>として出力される。第1のアドレスモードのときには比較器41の出力が選択されてコンテキストマッチ信号CTXMT<i>として出力される。また、第2のアドレスモードのときには比較器42の出力が、第3のアドレスモードのときには比較器43の出力がそれぞれコンテキストマッチ信号CTXMT<i>として選択され、出力される。
【0037】
図3に戻り、CAM部34は、タグ部とデータ部を有する。タグ部には、有効フラグ(V)35、マッチフラグ(M)36、及び仮想アドレス(VAD<i>)37がエントリ<i>として保持される。また、データ部には、仮想アドレス(VAD<i>)37に対応する物理アドレス(PAD<i>)38がエントリ<i>として保持される。有効フラグ(V)35は、エントリが有効であるか無効であるかを示すものである。例えば、エントリが有効である場合には有効フラグ(V)35を“1”とし、エントリが無効である場合には有効フラグ(V)35を“0”とする。なお、本実施形態では、コンテキストレジスタが書き換えられても、書き換え前のコンテキストに対応するエントリの有効フラグ(V)35はおとされずに(無効化されずに)維持される。マッチフラグ(M)36は、エントリが現在のアドレスモードのコンテキストの情報であるか否かを示すものであり、対応するコンテキストマッチ信号CTXMT<i>がアクティブであればマッチフラグ(M)36がオン(“1”)になる。
【0038】
CAM部34は、要求REQにおいて指定された仮想アドレスVAの上位部VAU(VPN)を検索用のタグとして使用し、全エントリ(エントリ<1>〜エントリ<N>)を並行動作により同時に検索する。そして、有効フラグ(V)35が有効を示すとともにマッチフラグ(M)36がオンであり、かつ仮想アドレスVAの上位部VAU(VPN)と仮想アドレスVADが一致する場合には、対応するエントリのエントリマッチ信号ENTMTをアクティブにして出力する。エントリマッチ信号ENTMTは、TLBエントリがヒットした場合にアクティブにされ、ミスの場合にインアクティブにされる。
【0039】
エントリマッチ信号ENTMTの一つがアクティブである場合、すなわちTLBエントリがヒットした場合には、ヒットしたエントリにおける物理アドレスPADがCAM部34より出力される。そして、出力された物理アドレスPADを上位部PAU(PPN)として下位部PAL(POF)と連結して、変換後のアドレスである物理アドレスPAを求める。なお、マイクロTLBのエントリがヒットしなかった場合には、要求REQにおいて指定された仮想アドレス及びコンテキストをメインTLBに供給する。
【0040】
図5は、CAM部34の内部構成例を示す図である。なお、図5においては、1つのエントリ分に対応するTLBエントリのヒット/ミス判定に係る構成のみを示しているが、CAM部34は図5に示す構成をエントリ数分有している。
【0041】
図5において、51は比較器であり、52は3入力の論理積演算回路(AND回路)である。比較器51は、要求REQにおいて指定された仮想アドレスVAの上位部VAUとエントリの仮想アドレス(VAD<i>)37とを比較し、一致した場合には出力をアクティブ(真)にする。AND回路52は、有効フラグ(V)35、マッチフラグ(M)36、及び比較器51の出力が入力され、演算結果をエントリマッチ信号ENTMT<i>として出力する。
【0042】
図6は、メインTLB22の構成例を示す図である。図6には、2wayセットアソシアティブ方式を用いたメインTLB22を一例として示している。図6において、61はタグ部であり、62はデータ部であり、63−0、63−1は比較器である。タグ部61は、way0のタグ部61−0及びway1のタグ部61−1を有する。同様に、データ部62は、way0のデータ部62−0及びway1のデータ部62−1を有する。
【0043】
way0のタグ部61−0には、エントリが有効であるか無効であるかを示す有効フラグ(V)、コンテキスト(CTX0<j>)、及び仮想アドレス(VADA0<j>)がエントリとして保持される。同様に、way1のタグ部61−1には、エントリが有効であるか無効であるかを示す有効フラグ(V)、コンテキスト(CTX1<j>)、及び仮想アドレス(VADA1<j>)がエントリとして保持される。また、way0のデータ部62−0には、仮想アドレス(VADA0<j>)に対応する物理アドレス(PAD0<j>)がエントリとして保持され、way1のデータ部62−1には、仮想アドレス(VADA1<j>)に対応する物理アドレス(PAD1<j>)がエントリとして保持される。なお、jは添え字であり、j=1、2、3、・・・の自然数である。
【0044】
メインTLB22では、要求REQにおいて指定された仮想アドレスVAの上位部VAUの一部である第2の上位部VAUBをインデックスタグINDEXとしてタグ部61−0、61−1及びデータ部62−0、62−1がそれぞれ参照される。タグ部61−0、61−1からはインデックスタグINDEXにより一意に特定されるエントリが比較器63−0、63−1に出力される。
【0045】
比較器63−0は、コンテキストCTXT及び仮想アドレスVAの上位部VAUの一部である第1の上位部VAUAと、タグ部61−0から出力されたエントリのコンテキスト(CTX0<j>)及び仮想アドレス(VADA0<j>)とを比較する。その結果、コンテキストCTXTとコンテキスト(CTX0<j>)、及び仮想アドレスVAの第1の上位部VAUAと仮想アドレス(VADA0<j>)がともに一致し、かつ有効フラグ(V)が有効を示している場合には、エントリヒットとする。これにより、インデックスタグINDEXにより一意に特定され、データ部62−0から出力された物理アドレス(PAD0<j>)が、対応する物理アドレスPHYADとしてマイクロTLBに出力される。
【0046】
また、比較器63−1は、コンテキストCTXT及び仮想アドレスVAの第1の上位部VAUAと、タグ部61−1から出力されたエントリのコンテキスト(CTX1<j>)及び仮想アドレス(VADA1<j>)とを比較する。その結果、コンテキストCTXTとコンテキスト(CTX1<j>)、及び仮想アドレスVAの第1の上位部VAUAと仮想アドレス(VADA1<j>)がともに一致し、かつ有効フラグ(V)が有効を示している場合には、エントリヒットとする。これにより、インデックスタグINDEXにより一意に特定され、データ部62−1から出力された物理アドレス(PAD1<j>)が、対応する物理アドレスPHYADとしてマイクロTLBに出力される。
【0047】
図7は、本実施形態におけるTLB検索に係るパイプライン処理を説明するための図である。図7には、マイクロTLBではエントリがヒットせずにメインTLBでエントリヒットして、そのデータをマイクロTLBに書き込むまでの処理を一例として示している。図7において、Pステージ及びTステージの処理は、マイクロTLBのパイプラインに係る処理であり、MPステージ、MTステージ、MMステージ、MBステージ及びMRステージの処理は、メインTLBのパイプラインに係る処理である。
【0048】
Pステージ(コンテキストアレイアクセスステージ)では、マイクロTLBにおいてコンテキストアレイ33に対するアクセスを行う。そして、コンテキストレジスタ32に保持されているコンテキストとコンテキストアレイ33に保持されているコンテキストの比較がコンテキスト比較部31により行われる。すなわち、マイクロTLB21のCAM部34に保持されているエントリ<i>のコンテキストがアクセス要求したプロセスのコンテキスト(現在のアドレスモードのコンテキスト)と一致するか否かの判定を行う。続く、Tステージ(マイクロTLBアクセスステージ)では、マイクロTLBにおいてCAM部34に対するアクセスを行う。要求REQにおいて指定された仮想アドレスVAに対応する物理アドレスPAの情報を持つエントリが、CAM部34に保持されているエントリの中に存在するか検索を行う。
【0049】
検索の結果、指定された仮想アドレスVAに対応する物理アドレスPAの情報を持つエントリがマイクロTLB21(CAM部34)に存在しない、すなわちヒットしない場合には、メインTLBに対して要求を発行しメインTLBのパイプラインに係る処理に移る。MPステージ(プライオリティステージ)では、要求(リクエスト)がいくつかあるので、その選択を行う。MTステージ(メインTLBアクセスステージ)では、仮想アドレスVAの一部をインデックスタグとして使用し、メインTLB22のメモリ(タグ部61、データ部62)に対するアクセスを行う。MMステージ(メインTLBマッチステージ)では、メインTLB22のメモリ(タグ部61)から読み出された結果の中に、要求REQにおいて指定された仮想アドレスVA等に対応するものが存在するか、マッチ回路である比較器63−0、63−1により判定する。MBステージ(エントリセレクトステージ)では、MMステージでの判定の結果、指定された仮想アドレスVA等に対応するものが存在すると判定された場合に、メモリ(データ部62)から読み出された対応するデータが選択される。MRステージ(マイクロTLBライトステージ)では、MBステージで選択されたデータをマイクロTLB21に書き込む(登録する)。MRステージにおけるマイクロTLB21への登録は、例えば有効フラグやLRUアルゴリズム等を用いて書き込むエントリを適宜決定し行われる。
【0050】
図8は、本実施形態におけるTLB検索処理の例を示すフローチャートである。図8に示す処理は、マイクロTLB21におけるコンテキストアレイ検索処理であり、図7に示したPステージのサイクルにおいて各エントリに対し並列して実行される。コンテキストアレイ検索処理では、コンテキストアレイ33のレジスタ33−iに保持されているコンテキストとコンテキストレジスタ32の第1〜第3のレジスタ32−1〜32−3に保持されているコンテキストとの比較判定が行われる。
【0051】
コンテキストアレイ検索処理が開始されると、ステップS11にて、コンテキスト比較部31は、レジスタ33−iに保持されているコンテキスト(CTXR<i>)と第1のレジスタ32−1に保持されているコンテキスト(CTXEa)が一致するか否かを判定する。一致すると判定した場合にはステップS12に進み、一致しないと判定した場合にはステップS13に進む。
【0052】
ステップS12にて、コンテキスト比較部31は、入力されるコンテキストID(CTID)に基づいて、アドレスモードが第1のアドレスモードであるか否かを判定する。アドレスモードが第1のアドレスモードであると判定した場合にはステップS17に進み、第1のアドレスモードではないと判定した場合にはステップS13に進む。
【0053】
ステップS13にて、コンテキスト比較部31は、レジスタ33−iに保持されているコンテキスト(CTXR<i>)と第2のレジスタ32−2に保持されているコンテキスト(CTXEb)が一致するか否かを判定する。一致すると判定した場合には、ステップS14に進み、一致しないと判定した場合にはステップS15に進む。ステップS14にて、コンテキスト比較部31は、アドレスモードが第2のアドレスモードであるか否かを判定し、第2のアドレスモードであると判定した場合にはステップS17に進み、第2のアドレスモードではないと判定した場合にはステップS15に進む。
【0054】
ステップS15にて、コンテキスト比較部31は、レジスタ33−iに保持されているコンテキスト(CTXR<i>)と第3のレジスタ32−3に保持されているコンテキスト(CTXEc)が一致するか否かを判定する。一致すると判定した場合には、ステップS16に進み、一致しないと判定した場合にはステップS18に進む。ステップS16にて、コンテキスト比較部31は、アドレスモードが第3のアドレスモードであるか否かを判定し、第3のアドレスモードであると判定した場合にはステップS17に進み、第3のアドレスモードではないと判定した場合にはステップS18に進む。
【0055】
エントリ<i>のコンテキストが現在のアドレスモードのコンテキストと一致すると判定した場合に進むステップS17にて、コンテキスト比較部31は、コンテキストマッチ信号CTXMT<i>をアクティブにして出力する。これにより、エントリ<i>のマッチフラグ(M)36が“1”に設定され、処理が終了する。一方、そうでない場合に進むステップS18では、エントリ<i>のマッチフラグ(M)36が“0”とされ、処理が終了する。
【0056】
なお、前述の説明では、レジスタ33−iに保持されているコンテキストと第1〜第3のレジスタ32−1〜32−3に保持されているコンテキストとの比較は、説明の便宜上、第1〜第3のアドレスモードについて順に行うようにしているが、実際の動作では第1〜第3のアドレスモードについて並列して行われる。
【0057】
図9は、本実施形態におけるTLB検索処理の例を示すフローチャートである。図9に示す処理は、マイクロTLB21におけるTLB検索処理であり、図7に示したTステージのサイクルにおいて各エントリに対し並列して実行される。
【0058】
TLB検索処理が開始されると、ステップS21にて、CAM部34は、エントリ<i>の有効フラグ(V)35が“1”であるか否かを判定し、“1”であると判定した場合にはステップS22に進む。一方、エントリ<i>の有効フラグ(V)35が“1”ではないと判定した場合には、エントリ<i>についてTLBエントリミスとして処理を終了する。
【0059】
ステップS22にて、CAM部34は、エントリ<i>のマッチフラグ(M)36が“1”であるか否かを判定し、“1”であると判定した場合にはステップS23に進む。一方、エントリ<i>のマッチフラグ(M)36が“1”ではないと判定した場合には、エントリ<i>についてTLBエントリミスとして処理を終了する。
【0060】
ステップS23にて、CAM部34は、エントリ<i>の仮想アドレス値(VAD<i>)37と要求REQにおいて指定された仮想アドレスVAの上位部VAUとが一致するか否かを判定する。その結果、一致すると判定した場合には、エントリ<i>についてTLBエントリヒットとして、また一致しないと判定した場合には、エントリ<i>についてTLBエントリミスとして、処理を終了する。なお、前述の説明では、説明の便宜上、有効フラグ(V)35、マッチフラグ(M)36、及び仮想アドレス値(VAD<i>)37に係る判定を順に行うようにしているが、実際の動作ではこれらの判定は並列して行われる。
【0061】
本実施形態によれば、あるアドレスモードでプロセスが切り替わることによりコンテキストスイッチが発生し、コンテキストレジスタ33の情報が書き替えられても、マイクロTLB21に登録されている情報を無効化せずに(有効フラグ(V)35をおとさずに)保持する。また、マイクロTLB21に登録されている情報のコンテキストをコンテキストアレイ33にエントリ毎に保持する。また、マイクロTLB21にマッチフラグ(M)36をエントリ毎に設け、そのマッチフラグ(M)36によってマイクロTLB21に登録されている情報の有効性を判断する。
【0062】
マイクロTLB21では、命令制御部・演算部12から発行されたアクセスの要求を受けると、Pステージのサイクルで、アクセス要求したプロセスのコンテキスト(現在のアドレスモードのコンテキスト)と、コンテキストアレイ33に保持されているコンテキストとが一致するか否かを、コンテキスト比較部31により確認する。一致する場合には、そのエントリのマッチフラグ(M)36をオン(“1”)にし、一致しない場合には、そのエントリのマッチフラグ(M)36をオフ(“0”)にする。
【0063】
Pステージに続くTステージのサイクルで、マイクロTLB21のCAM部34にアクセスする際、マッチフラグ(M)36も参照してマイクロTLB21の検索を行う。これにより、マッチフラグ(M)36がオンであるエントリだけを対象とした、すなわちCAM部34に保持されているエントリの中から、アクセス要求したプロセスのコンテキストに対応するエントリだけを対象とした検索を行うことができる。また、プロセスが切り替わることによりコンテキストスイッチが発生し、コンテキストレジスタ33の情報が書き替えられると、切り替え後のコンテキストに対応するものではないエントリのマッチフラグ(M)36はオフになるので、マイクロTLB21での仮想アドレスに係る検索からは除かれる。したがって、コンテキストレジスタ33の情報が書き替えられても、エントリの有効フラグ(V)35をオフ、すなわちそのエントリの情報を無効化する必要がなく、元のプロセスに再度切り替わった場合にエントリミスの発生を抑制することができる。その結果、アドレス変換に要する時間の増加を抑制し、性能低下を抑えることができる。
【0064】
例えば、第1のアドレスモードでコンテキストが(A)であるときの情報が、エントリ<1>としてCAM部34に保持されているとする。そして、第1のアドレスモードで、かつコンテキストが(A)でアクセスの要求が発行されたとする。このとき、Pステージでの比較の結果、コンテキストが一致するので、エントリ<1>のマッチフラグ(M)36がオンに設定され、有効なエントリとされる。さらに、Tステージでの参照において、要求において指定された仮想アドレスとエントリ<1>の仮想アドレス(VAD<1>)が一致した場合には、TLBエントリヒットとしてアドレス変換が行われ、対応する物理アドレスが求められる。
【0065】
この状態で、第1のアドレスモードでコンテキストが(B)へ切り替わった場合には、Pステージでの比較の結果、コンテキストが一致しないので、エントリ<1>のマッチフラグ(M)36がオフに設定される。続く、Tステージでの参照においては、マッチフラグ(M)36がオフであるので、エントリ<1>はTLBミスとなる。
【0066】
その後、再度第1のアドレスモードでコンテキストが(A)へ切り替わり、第1のアドレスモードで、かつコンテキストが(A)でアクセスの要求が発行された場合には、Pステージでの比較の結果、コンテキストが一致し、エントリ<1>のマッチフラグ(M)36がオンに設定される。そして、Tステージでの参照において、エントリ<1>は有効なエントリとして参照される。
【0067】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【0068】
11 CPU
12 命令制御部・演算部
13 1次キャッシュ部
14 1次キャッシュ
15 アドレス変換バッファ(TLB)部
16 2次キャッシュ
17 主記憶部
21 マイクロTLB
22 メインTLB
31 コンテキスト比較部
32 コンテキストレジスタ
33 コンテキストアレイ
34 CAM(連想メモリ)部
35 有効フラグ
36 マッチフラグ

【特許請求の範囲】
【請求項1】
プロセスを実行する命令制御部からのアクセス要求に含まれる仮想アドレスを物理アドレスに変換するアドレス変換装置において、
仮想アドレスと物理アドレスとの対応関係を示す第1のアドレス情報と、前記第1のアドレス情報が有効であるかを示す有効情報と、前記第1のアドレス情報に対応するコンテキスト情報が前記アクセス要求に含まれるコンテキスト情報と一致するかを示す一致情報と、を保持する第1のエントリを複数有する第1のアドレス変換部と、
前記複数の第1のエントリの各々に保持された第1のアドレス情報のアドレスモードを示すコンテキスト情報を、前記複数の第1のエントリの各々に対応して保持する情報保持部と、
前記アクセス要求に含まれるコンテキスト情報と、前記情報保持部に保持されたコンテキスト情報を比較するとともに、前記比較した結果が一致する場合、一致する前記情報保持部に保持されたコンテキスト情報に対応する第1のエントリに保持された一致情報を、コンテキスト情報の一致を示すように変更する比較部と、
前記複数の第1のエントリのうち、有効情報が有効を示しかつ一致情報が一致を示す第1のエントリから、前記アクセス要求に含まれる仮想アドレスと同一の仮想アドレスを含む第1のアドレス情報を検索し、検索した第1のアドレス情報に含まれる物理アドレスを出力する制御部と、
を有することを特徴とするアドレス変換装置。
【請求項2】
前記アドレス変換装置はさらに、
仮想アドレスと物理アドレスとの対応関係を示す第2のアドレス情報を保持する第2のエントリを複数有する第2のアドレス変換部を有し、
前記制御部は、
前記複数の第1のエントリから、前記アクセス要求に含まれる仮想アドレスと同一の仮想アドレスを含む第1のアドレス情報を検索できない場合、前記複数の第2のエントリから、前記アクセス要求に含まれる仮想アドレスと同一の仮想アドレスを含む第2のアドレス情報を検索し、検索した第2のアドレス情報に含まれる物理アドレスを出力することを特徴とする請求項1記載のアドレス変換装置。
【請求項3】
前記命令制御部は、
複数のステージを有するパイプラインを備え、
前記比較部は、
前記パイプラインが有する複数のステージのうち、第1のステージで、前記アクセス要求に含まれるコンテキスト情報と、前記情報保持部に保持されたコンテキスト情報を比較し、
前記制御部は、
前記複数のステージにおける前記第1のステージの次の第2のステージで、前記複数の第1のエントリのうち、有効情報が有効を示しかつ一致情報が一致を示す第1のエントリから、前記アクセス要求に含まれる仮想アドレスと同一の仮想アドレスを含む第1のアドレス情報を検索することを特徴とする請求項1又は2記載のアドレス変換装置。
【請求項4】
前記比較部は、
前記アクセス要求に含まれるコンテキスト情報と、前記情報保持部が有する複数の第1のエントリに保持されたコンテキスト情報の全てを同時に比較することを特徴とする請求項1〜3の何れか1項に記載のアドレス変換装置。
【請求項5】
前記制御部は、
前記複数の第1のエントリのうち、前記複数の第1のエントリの全てから、有効情報が有効を示しかつ一致情報が一致を示し、前記アクセス要求に含まれる仮想アドレスと同一の仮想アドレスを含む第1のアドレス情報を同時に検索することを特徴とする請求項1〜4の何れか1項に記載のアドレス変換装置。
【請求項6】
前記制御部は、
プロセスの切り替え時に、切り替え後のプロセスに対応するコンテキスト情報を保持する第1のエントリの有効情報が有効である旨を示すように変更することを特徴とする請求項1〜5の何れか1項に記載のアドレス変換装置。
【請求項7】
仮想アドレスと物理アドレスとの対応関係を示す第1のアドレス情報と、前記第1のアドレス情報が有効であるかを示す有効情報と、前記第1のアドレス情報に対応するコンテキスト情報がアクセス要求に含まれるコンテキスト情報と一致するかを示す一致情報を保持する第1のエントリを複数有する第1のアドレス変換部と、前記複数の第1のエントリの各々に保持された第1のアドレス情報のアドレスモードを示すコンテキスト情報を、前記複数の第1のエントリの各々に対応して保持する情報保持部を有し、プロセスを実行する命令制御部からのアクセス要求に含まれる仮想アドレスを物理アドレスに変換するアドレス変換装置の制御方法において、
前記アドレス変換装置が有する比較部が、前記アクセス要求に含まれるコンテキスト情報と、前記情報保持部に保持されたコンテキスト情報を比較し、
前記比較した結果が一致する場合、前記比較部が、一致した前記情報保持部に保持されたコンテキスト情報に対応する第1のエントリに保持された一致情報を、コンテキスト情報の一致を示すように変更し、
前記アドレス変換装置が有する制御部が、前記複数の第1のエントリのうち、有効情報が有効を示しかつ一致情報が一致を示す第1のエントリから、前記アクセス要求に含まれる仮想アドレスと同一の仮想アドレスを含む第1のアドレス情報を検索し、
前記制御部が、前記検索した第1のアドレス情報に含まれる物理アドレスを出力する、
ことを特徴とするアドレス変換装置の制御方法。
【請求項8】
プロセスを実行するとともに、仮想アドレスを含むアクセス要求を出力する命令制御部と、
仮想アドレスと物理アドレスとの対応関係を示す第1のアドレス情報と、前記第1のアドレス情報が有効であるかを示す有効情報と、前記第1のアドレス情報に対応するコンテキスト情報が前記アクセス要求に含まれるコンテキスト情報と一致するかを示す一致情報と、を保持する第1のエントリを複数有する第1のアドレス変換部と、
前記複数の第1のエントリの各々に保持された第1のアドレス情報のアドレスモードを示すコンテキスト情報を、前記複数の第1のエントリの各々に対応して保持する情報保持部と、
前記アクセス要求に含まれるコンテキスト情報と、前記情報保持部に保持されたコンテキスト情報を比較するとともに、前記比較した結果が一致する場合、一致する前記情報保持部に保持されたコンテキスト情報に対応する第1のエントリに保持された一致情報を、コンテキスト情報の一致を示すように変更する比較部と、
前記複数の第1のエントリのうち、有効情報が有効を示しかつ一致情報が一致を示す第1のエントリから、前記アクセス要求に含まれる仮想アドレスと同一の仮想アドレスを含む第1のアドレス情報を検索し、検索した第1のアドレス情報に含まれる物理アドレスを出力する制御部と、
を有することを特徴とする演算処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate