JP3802061B2 - アドレス変換速度アップのための並列アクセスマイクロ−tlb - Google Patents
アドレス変換速度アップのための並列アクセスマイクロ−tlb Download PDFInfo
- Publication number
- JP3802061B2 JP3802061B2 JP52688796A JP52688796A JP3802061B2 JP 3802061 B2 JP3802061 B2 JP 3802061B2 JP 52688796 A JP52688796 A JP 52688796A JP 52688796 A JP52688796 A JP 52688796A JP 3802061 B2 JP3802061 B2 JP 3802061B2
- Authority
- JP
- Japan
- Prior art keywords
- address
- μtlb
- virtual
- entry
- mmu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000013519 translation Methods 0.000 title claims description 25
- 239000000872 buffer Substances 0.000 claims description 61
- 230000015654 memory Effects 0.000 claims description 39
- 238000006243 chemical reaction Methods 0.000 claims description 19
- 230000010365 information processing Effects 0.000 claims description 4
- 238000000034 method Methods 0.000 description 20
- 230000008569 process Effects 0.000 description 19
- 238000012986 modification Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000037351 starvation Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/681—Multi-level TLB, e.g. microTLB and main TLB
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Description
本発明は、バーチャルメモリを支持する情報処理装置においてアドレス変換の速度アップのために使用される変換索引バッファ(TLB)を含むメモリマネージメントユニット(MMU)に関し、さらに2個以上の保留中の(ペンディング)アドレス変換要求から1個を選択するアービタを含むMMUに関する。
(背景技術)
バーチャルメモリシステムを支持する情報処理装置において、中央処理装置(CPU)によって参照されるアドレス空間は、“バーチャルメモリ”と呼ばれ、このCPUによって特定される各バーチャルアドレスは、メモリマネジメントユニット(MMU)によってフィジカルな(あるいは実)アドレスに変換される。MMUはこの実アドレスをメインメモリサブシステム(MSU)に送り、MSUはアクセスされたアイテムを検索しあるいは記憶する。従来の幾つかのMMUでは1サイクル中に数個の変換要求(例えば、現在実行中の命令の2個のオペランドのバーチャルアドレスと、次に実行すべき命令のバーチャルアドレスに対応したもの)を受け取ることができる。しかしながら、これらのMMUは1度に1個のバーチャルアドレスしか変換することができない。従って、あまり大きなハードウエアコストの追加を招くことなく、1度に1個以上のバーチャルアドレスを変換することが可能なMMUが望まれている。
種々の理由で、バーチャルから実アドレスへの幾つかの変換機構は2個の段階を含んでいる。アドレス変換に必要な平均時間を減少させるためには、少なくとも幾つかのアドレスは、1段階で直接バーチャルアドレスから実アドレスへ変換できることが望ましい。
(発明の開示)
1個の命令キャッシュと2個のデータキャッシュによってそれぞれMMUに供給される3個の要求に同時にサービスする事が可能なマイクロ変換索引バッファ(μTLB)を含むメモリマネージメントユニット(MMU)を開示する。μTLBは、8エントリーの完全連想テーブルであって、各エントリーは1個のバーチャルアドレスと、対応する実アドレスとさらに種々のステータスビットを記憶することができる。μTLBの各エントリーは3個の比較器と結合され、それによってμTLBは、命令キャッシュおよび2個のデータキャッシュからMMUによってそれぞれ受信された3個のバーチャルアドレスとμTLBのエントリーに記憶された各バ
もし特定のバーチャルアドレスを記憶するエントリーがμTLBにおいて見いだせない場合は、この特定のバーチャルアドレスに対して1度に1アドレスの通常の変換を実行する。この変換は、2個の非常に大きな変換索引テーブル、可能ならば(このような大きなTLBにおいてミス(不一致)の場合は)メインメモリにあるテーブル、へのアクセスを含んでいる。バーチャルアドレスから実アドレスヘの正規変換が正常に終了すると、バーチャルアドレスおよび実アドレスはμTLBのエントリーに挿入されてもよい。
アービタは、MMUによる即値処理のために、優先度が低いキャッシュからの要求のサービスにおいて過度の遅延を避け得る方法を用いて、異なる優先度のキャッシュから受信された数個のペンディング要求の内から1個を選択する。特に、もしアービタが特定の優先度のキャッシュからの要求を最終的に選択しかつこの最終の選択の時点で優先度の低いペンディング要求が有った場合、アービタはこの特定の優先度のキャッシュからの要求を選択しない。
【図面の簡単な説明】
図1は、本発明にかかるMMUを示す。
図2は、本発明にかかるマイクロTLBを示す。
図3は、アドレス変換要求アービタによって実行される処理を示すフローチャートである。
(発明を実施するための最良の形態)
図1に、本発明にかかるMMUの一実施例を示す。CPU101は、バーチャルアドレスを命令キャッシュ(Iキャッシュ)102またはデータキャッシュ103(偶数データキャッシュ)と104(奇数データキャッシュ)の一方にそれぞれ送る事によって、命令アドレスあるいはデータ(オペランド)アドレスを特定する。偶数および奇数データキャッシュ103、104は、メモリインターリーブのために設けられているが、その他はキャッシュ102と同様に、類似でありかつ一般的なものである。その他の実施例では、例えば1個の命令キャッシュと1個のデータキャッシュのように、種々のキャッシュの組み合わせが可能である。
各キャッシュ102、103、104は仮想的にアドレスされ、同一のサイクルにおいてCPU101から読み出しまたは書き込み要求を受信することができる。もし適当なキャッシュにおいて、特定のバーチャルアドレスのアイテムが存在すれば、このアイテムはCPUに戻され(書き込み要求の場合はキャッシュ中に書き込まれる)、MMU124によって特定のバーチャルアドレスをフィジカルな即ち実アドレスに変換する必要は無い。各バーチャルアドレスは64ビットであり、その低位の13ビットはページ内のオフセットを特定する。このようにして、MMU124は、バーチャルアドレスの高位の51ビットを実アドレスに変換して、ページの開始アドレスを特定する。以下に使用する「バーチャルアドレス」と言う用語は、これらの51個の高位ビットを意味する。
要求されたアイテムが適当なキャッシュ内に存在しない場合は、MMU124は次に特定のバーチャルアドレスをフィジカルアドレスに変換し、その後メインメモリ123中のそのフィジカルアドレスに記憶されたアイテム(命令またはオペランド)を検索する(または書き込む)。MMU124は最初、例えば8エントリー完全連想キャッシュメモリであるマイクロTLB(μTLB)108中の特定バーチャルアドレスに対応する実アドレスを発見しようとする。μTLB108の各エントリーは、51ビットのバーチャルアドレスタグ、対応するフィジカルアドレスおよび種々のステータスビット(例えば保護ビット)を記憶することができ、さらに3個の比較器と結合され、それによってμTLB108は、キャッシュ102、103および104からMMU124によって受信された3個のバーチャルアドレスをそれぞれ、μTLB108のエントリー中に記憶された各バーチャルアドレスと同時に比較する能力を持つようになる。その他の実施例では、μTLB108は適当な比較のためのハードウエアを有する他の適当なメモリであってもよい。
μTLB108の1エントリーのステータスビットは、6個の保護ビット(ユーザーとスーパバイザモードのための読み出し/書き込み/実行)と、有効ビットおよび修正ビット(modify bit)を含む。修正ビットは、μTLB108のエントリーに記憶された実アドレスにおいてスタートするメモリページが修正されていて、そのため別のディスクページによって上書きされる前にディスクに書き込まれるべきがどうかを示す。有効ビットは、エントリー中に記憶された有効変換があるか否かを示す。
μTLB108の構造を図2に示す。μTLB108の8個のエントリー202のそれぞれのバーチャルアドレスフィールドは、24個の51ビット比較器(CMP51)201のうちの3個への入力として示されている。なおこの比較器201はその他の入力として、バーチャルアドレスVA0、VA1およびVA2を受信する。エントリー202の1個の有効ビットが1にセットされ、そのエントリーに記憶されたバーチャルアドレスがVA0、VA1またはVA2に等しければ、μTLB108においてヒット(一致)が生じ、このエントリーの実アドレスとステータスビット(即ち有効、保護および修正ビット)が、コマンド要求バッファ109、110または111にそれぞれ記憶される。
修正ビットがゼロにセットされてはいるがしかしその特定のバーチャルアドレスが書き込み要求に関連している、μTLB108中の有効エントリーにおけるバーチャルアドレスに、ある特定のバーチャルアドレスが一致する場合(キャッシュ102、103および104の対応する1個から受け取った、コマンド要求バッファ109、110または111の1個中のコマンド情報によって示すように)、μTLB108においてミス(不一致)またはヒットを示すコマンド要求バッファに対応するフィールドは、ミスを示すようにセットされる。以下に記載するように、この変換がTLB117および118を通過するようにすることが必要である。これは、この変換に対応するTLB118のエントリー中の修正ビットを、以下に示す理由で1にセットするためにである。
μTLB108は、MMU124によって生成されたライン203上の無効(invalidate)信号を受信することができる。この信号は、導入された場合、各エントリーの有効ビットをゼロに設定することによってμTLB108の内容を無効にする。さらに、無効信号の導入の結果、μTLB108におけるミスまたはヒットを示すコマンド要求バッファ109、110および111のフィールドを、ミスを示すように設定する。無効信号はまた、特定のCPU命令が実行される場合(即ち、別のプロセスの実行が開始される場合)、文脈(context)スイッチに導入される。
μTLB108が特定のバーチャルアドレスに対応するエントリーを含まない場合、MMUはこの特定のバーチャルアドレスを2個の段階において変換する。第1の段階では、このバーチャルアドレスは、領域id(Rid)および論理アドレス(LA)に変換される。第2の段階では、領域idおよび論理アドレスは、214バイトのページの開始アドレスを特定する実アドレスに変換される。
段階1および2における変換は先ずTLB117と118をそれぞれアクセスすることによって試みられる。TLB117は128エントリーの完全連想メモリであって、このメモリはバーチャルアドレスを領域idおよび論理アドレスに変換する。TLB117の各エントリーは、1個のバーチャルアドレスと、対応する領域id、対応するオフセット(第2段階の変換を実行するのに必要な対応する論理アドレスは、バーチャルアドレスとこのオフセットとの合計から計算される)、および6個の保護ビット(ユーザーおよびスーパバイザモードのための読み出し/書き込み/実行)を記憶している。
TLB118は1024エントリー(256×4)の4ウエイセットの連想SRAMであって、このSRAMは領域idと論理アドレス対を実アドレスに変換する。TLB118の各エントリーはメモリ123に記憶されたページテーブルから検索され、実アドレス(RA)、6個の保護ビット(ユーザーおよびスーパバイザモードのための読み出し/書き込み/実行)および修正ビットを記憶する。この修正ビットは、開始アドレスがRAであるメインメモリ中のページが修正されている場合、1にセットされる。TLB118のエントリーの修正ビットは、メモリ中の対応するページテーブルエントリーの修正ビットを更新し続ける。これら最後のエントリーの修正ビットを更新し続けることは、次のような理由で重要である。すなわち、情報処理装置のオペレーションシステムでは、メモリ中の所定のページを他のディスクページがそのメモリページ内に読み込まれる前にディスク中に書き込むべきか否かを決定するに当たって、この修正ビットに依存しているためである。この理由のために、μTLB108が特定のバーチャルアドレスを記憶する有効エントリーを保持する場合であっても、TLB117および118を介した変換はある状況下で(μTLB108のエントリーの修正ビットに関連して上述したように)進行し、修正ページに対応するTLB118のエントリーの修正ビットを確実に1にセットする(これは、μTLB108におけるヒットのために、TLB117および118がバイパスされた場合は起こらない)。
もし、TLB117かまたはTLB118の何れかが必要な変換を保持しない場合、要求された変換を検索しそれをTLB117かTLB118にロードするために、MMU124は、メインメモリ123によって記憶されたテーブルヘのメモリアクセスを開始する。バーチャルアドレスからフィジカルアドレスヘの2レベルの変換が起こった後、MMU124は、バーチャルアドレス/フィジカルアドレス対を(TLB117のアクセスされたエントリー中に記憶される6個の保護ビットとTLB118のアクセスされたエントリーの6個の保護ビットの論理ANDである、6個の保護ビットを含む種々のステータスビットと同様に)、μTLB108の1個のエントリーに挿入してもよい。
μTLBを有することの幾つかの利点は、キャッシュ102、103および104が、バーチャルアドレスVA1、VA2およびVA3に記憶された情報に対する要求を、同じサイクル(サイクル1)においてCPU101から受け取る状態を考察することによって、説明される。サイクル2では、次に示す事象が発生する。
1)MMU入力バッファ105、106および107がバーチャルアドレスVA1、VA2およびVA3をそれぞれ各キャッシュ102、103および104から受信する。
2)MMU入力バッファ105、106および107の出力を受信するμTLB108は、μTLB108の8個のエントリーのそれぞれに対し、VA1、VA2およびVA3をそれぞれ比較する。μTLB108の各エントリーは、汎用レジスタとして実行され、さらに上述したように、エントリーに記憶されたバーチャルアドレスと、MMU入力バッファ105、106および107からμTLB108によってそれぞれ受信されたバーチャルアドレスとの同時比較を行うため、3個の比較器と結合されている。このようにして、μTLB108は、CPU101によってキャッシュ102、103および104にそれぞれ供給された3個のバーチャルアドレスへの並行アクセスをサポートすることができる。
3)キャッシュ102、103および104は、VA1、VA2およびVA3に対応するエントリーをそれぞれサーチする。
サイクル3では、以下の事象が発生する。
1)キャッシュ102でミスが有った場合、コマンド要求バッファ109はMMU入力バッファ105からVA1を受信し、キャッシュ102からコマンド要求データを受信する。さもないと、CPU101がキャッシュ102からまたはキャッシュ102へ特定のバーチャルアドレスのアイテムを読みだしあるいは書き込むので、有効コマンド要求はバッファ109に記憶されない。類似の事象が、コマンド要求バッファl10および111に対して発生する。
2)コマンド要求バッファ109は同様に、VA1がμTLB108において見いだされたか否かを示すμTLBヒット/ミス情報と、μTLB108中でヒットした場合VA1に対応する実アドレスとを受信する。類似の事象がバッファ110と111に対して発生する。μTLB108の使用はMMU124によるバーチャルアドレスの通常の2段階変換を遅延させないことに注意すべきである。これは、コマンド要求バッファ109、l10および111が、キャッシュミスの場合キャッシュ102、103および104からそれらがコマンド要求を受信するのと同一のサイクル内でμTLB108のサーチ結果を受信すると言う理由による。
サイクル4において以下の事象が発生する。
1)アービタ113は、マルチプレクサ112を制御して、コマンド要求バッファ109、110、111または126の1個から有効なコマンド要求を選択する。I/Oコントローラ125におけるコマンドバッファ126は直接メモリアクセス(DMA)要求を記憶する。具体化するために、コマンド要求バッファ109が選択されたものと仮定しよう。バッファ109の内容は、マルチプレクサ115を介して最新要求バッファ(CRB)116に送られる。バッファ109はこの結果キャッシュ102からの別のコマンド要求を自由に受け入れることができるようになる。以後のサイクルにおいて、MMU124は、記憶されたコマンド要求の処理が完了しMMU124が別のコマンド要求の処理を始めるまで、MUX115にCRB116の内容の選択を行わせる。
2)CRB116の内容がμTLBのヒットを示した場合、MMU124はVA1の2段階変換を開始せず、μTLB108から返還された保護ビットが保護違反を示していないものと仮定した場合、むしろCRB116における要求(サイクル3においてバッファ109によってμTLB108から受信されるVA1に対応した実アドレスを含む)が、MMU124によってメインメモリ123に与えられる。この時点でCRB116は、バッファ109、110、111または125の内の1個からの別の有効コマンド要求を受け入れて処理することが可能となる。CRB116の内容がμTLBのミスを示している場合、MMU124はTLB117とTLB118の並行アクセスを開始し、それぞれにアドレス変換の第1および第2の段階を実行する。
サイクル5では、CRB116の内容がμTLBのミスを示しているものと仮定して、以下の事象が発生する。
1)TLB117が、領域idおよびVA1に対応する論理アドレス(Rid1とLA1)を見いだすためにアクセスされる。もしTLB118がVA1に対応するエントリーを有さないと、次にMMU124はRid1とLA1を記憶するテーブルを検索するためにメモリ123に1個以上の要求を初めなければならない。
2)TLB118は、Rid最終キャッシュ109、VA1のRid/論理アドレス対に対応する実アドレスを見いだすためにアクセスされる。なおこのRid最終キャッシュ109は、MMU124が2段階アドレス変換を実行したキャッシュ109から受信した、以前のバーチャルアドレスに関連したRidである。MMU124は類似のRidをキャッシュ110および111に対して記憶する。各値、即ちRid最終キャッシュ109とVA1をそれぞれ、RidiとLA1(これらはTLB117がサーチされるまで使用可能ではない)と仮定すると、MMU124は同時にTLB117と118のサーチを開始することができ、それによって2段階変換のための時間を2サイクルから1サイクルに減少することができる。
サイクル6では、サイクル5においてヒットがTLB117と118の両者で発生したと仮定して、以下の事象が発生する。Rid1がRid最終キャッシュ109に等しくないか、あるいはLA1がVA1に等しくない場合、領域idと論理アドレス対Rid1とLA1対応する実アドレスRA1に対してTLB118をサーチする必要がある(この場合VA1に対応する実アドレスのMUS123への配送は、早くてもサイクル7において発生する)。Rid1がRid最終キャッシュ109に等しく、LA1がVA1に等しいと、TLB117および118によって変換された保護ビットを調査し保護違反が発生していないことを確認したのち、MMU124はメモリ123をアクセスして、サイクル5でTLB118によって返還された実アドレス(即ちRA1)において始まるメモリページからの読み出し、あるいはこのぺ一ジヘの書き込みを行う。
VA1に対する連続した2段階変換後、MMU124はμTLB108に新しいエントリーを挿入してVA1とTLB118から変換された対応する実アドレスRA1を記憶する(確かな状況では無いけれどもその幾つかを後述する)。このエントリーの有効ビットは1にセットされる。同様に、TLB117および118によって戻された対応する保護ビットの論理ANDである、6個の保護ビット(ユーザーの読み出し/書き込み/実行およびスーパバイザの読みだし/書き込み/実行)を、μTLB108の新しいエントリーに挿入する。さらに、要求が書き込みアクセスに対するものである場合、μTLB108に挿入されるエントリーの修正ビットは1にセットされ、それによってRA1から始まるメモリページが修正されていることを示す。
μTLB108に対する置き換えの方針は、ファーストイン・ファーストアウト(FIFO)である。殆どのプログラムによって表示されているリファレンスの局所性を与えると、CPU101は将来VA1を恐らく何回も参照するものと思われる。通常、CPU101によって特定されるバーチャルアドレスの高いパーセンテージのものが、その小さなサイズにも係わらす、μTLB108においてヒットするものと期待される。
以下の状況を含むある状況下では、μTLB108に新たなエントリーが挿入されない。
1)μTLB108において、VA1に対するエントリーが既に存在する場合。この状態は、MMU124がμTLB108でミスした場合VA1に対する2段階変換を実行したと言う事実に係わらす発生する。このミスの後、キャッシュ109からのVA1に対する要求の以前に、キャッシュ110あるいは111からのVA1に対する要求が2段階変換に対して実施される(その結果、VA1に対するμTLB108の挿入となる)。μTLB108のエントリーを無駄にしないために、MMU124は、挿入以前にVA1に対してエントリーが既に存在するか否かをチェックする。
2)VA1に対する要求はキャッシュ可能ではない。キャッシュ可能ではない要求に関連したバーチャルアドレスは繰り返して参照されることはない。
3)カレント要求は保護違反を生じる。
MMU124中にμTLB108を設けることによって、MMU124による正規の2段階変換を遅延させることなく、以下のものを含む種々の効果を生じる。
a)μTLB108は、同一のサイクルにおいて、3個の要求(即ち、各キャッシュ102、103および104からの要求)に対してサービスアップすることができる。反対に、μTLB108が無い場合、MMU124は1度に1個のバーチャルアドレス上の2段階アドレス変換のみを実行する。
b)さらに、MMU124は数個のペンディング中のコマンド要求の内の1個を単に選択するためのサイクルを必要とする。これは勿論、このような選択を必要としないμTLB108によって避けることができる。
c)1サイクルを要するμTLB108におけるヒットとは異なって、2段階変換は、サイクル5でTLB117と同時にTLB118をアクセスする場合Rid1とLA1に対する適正な値が推測されないと、少なくとも2サイクルを必要とする。この問題はしばしば、(優先度の低いキャッシュの)“欠乏”(starvation)として言及される。
上記で議論したように、MMUは(μTLB108から離れて)1度に1個のアドレスのみを変換するので、アービタ113は、変換のためのコマンド要求バッファ109、110、111および126の内の1個に記憶された有効コマンド要求を選択せねばならない。
一実施例では、アービタ113はこの選択を以下のようにして行う。アービタ113は常にコマンド要求、すなわちDMA要求、をコマンド要求バッファ126からもしあれば選択する。コマンドバッファ109、110および111には最高、中間、および最低の優先度がそれぞれ与えられる。もしコマンド要求バッファ109におけるペンディング要求が常に選択されると、コマンドバッファ110または111中に要求をサービスするに当たって潜在的に過度の遅延問題が発生する。これは、CRB116におけるカレント要求(これはコマンド要求バッファ109から取り出される)が処理される間に、キャッシュ102からの新たな要求がコマンド要求バッファ109に到達することができるためである。
アービタ113は、欠乏の問題を回避するために、図3のフローチャート200に示された処理を、論理回路において実行する。アービタは、選択に当たって若しより低い優先度のコマンド要求バッファにペンディング要求が有れば、特定のコマンド要求バッファにおいて要求を選択する場合このバッファに関連したマスクビットを設定することにより、欠乏を回避している。これによって、選択すべき次の要求が、確実により優先度の低いコマンド要求バッファから来るようにする。
マスクビットmask_102とmask_103を初期値0に設定するステップ301において処理を開始する。次に、処理はステップ301から判定ステップ302に移行する。判定ステップ302では、アービタ113はコマンド要求バッファ126においてペンディング中のDMA要求があるか否かを判定する。もし、ペンディングDMA要求があれば、処理はステップ302からステップ303に移行し、その間にMMUはDMA要求に対して1段階変換を実行する。その後、処理はステップ303から判定ステップ302に移行する。
ペンディングDMA要求が無い場合、処理は判定ステップ302から判定ステップ304に移行し、そこでアービタ113はコマンド要求バッファ109(すなわちキャッシュ102から)においてペンディング中のコマンド要求があるか否か、およびmask_102が0であるか否かを判定する。もし、判定ステップ304において調査された条件の少なくとも1個が満足されない場合、次に処理は以下に詳細に示すステップ308に移行する。もし、判定ステップ304で調査された条件の両方が満足された場合、処理はステップ305に移行する。
ステップ305では、アービタ113は、コマンド要求バッファ110または111(すなわち、キャッシュ103または104から)の何れかに有効コマンド要求があるか否かを判定する。もしこのような要求が無い場合、処理は後述するステップ307に移行する。もし、コマンド要求バッファ110または111の何れかに有効コマンド要求が有った場合、処理はステップ306に移行し、そこでmask_102は1に設定され、mask_103は0に設定される。(mask_102を1に設定することによって、コマンド要求バッファ109からの現在ペンディング中の要求が処理された後にアービタ113によって選択される次の要求が、コマンド要求バッファ109からの別の要求ではないことを確実にする。)この後処理はステップ306からステップ307に移行する。ステップ307では、MMU124はコマンド要求バッファ109中のペンディング中の要求に対して2段階アドレス変換を実行する。次に処理はステップ307から判定ステップ302に移行する。
ステップ308において、アービタ113はコマンド要求バッファ110(すなわちキャッシュ103から)においてペンディング中のコマンド要求があるか否か、さらにmask_103が0か否かを判定する。もし判定ステップ312において調査された条件の少なくとも一方が満足されないと、次に処理は後述するステップ312に移行する。判定ステップ308で調査された条件が両方とも満足されると、次に処理はステップ309に移行する。
ステップ309では、アービタ113はコマンド要求バッファ111(すなわちキャッシュ104から)に有効コマンド要求があるか否かを判定する。もしこのような要求が無い場合、次に処理は後述するステップ311に移行する。コマンド要求バッファ111に有効コマンド要求が有る場合、次に処理はステップ310に移行し、そこでmask_102を1にセットし、さらにmask_103を1にセットする。(mask_102とmask_103の1へのセットによって、コマンド要求バッファ110からの現在ペンディング中の要求が処理された後アービタ113よって選択される次の要求が、コマンド要求バッファ110からの別の要求またはコマンド要求バッファ109からの要求では無いことが保証される。)処理は次にステップ310からステップ311に移行する。ステップ311では、MMU124は、コマンド要求バッファ110におけるペンディング中の要求に対して2段階アドレス変換を実行する。次に処理はステップ311から判定ステップ302に移行する。
ステップ312では、アービタ113はコマンド要求バッファ111(すなわちキャッシュ104から)においてペンディング中の要求があるか否かを判定する。もし無ければ、次に処理は後述するステップ314に移行する。もしアービタ113がこの様な要求がステップ312において存在すると判定すると、次に処理はステップ313に移行し、ここでMMU124はこの要求に対して2段階アドレス変換を実行する。処理はステップ313からステップ314に移行し、mask_102とmask_103は0に設定される。
以上の開示は、説明を目的とするものであり、限定的な物ではない。更なる修正は当業者に取って容易であるが、これらは添付の請求の範囲内に入るものである。
Claims (5)
- 複数のキャッシュメモリに接続され、バーチャルアドレスからフィジカルアドレスへのアドレス変換を行うメモリマネージメントユニットにおいて、
前記複数のキャッシュメモリから前記バーチャルアドレスを受信する複数の入力バッファと、
前記バーチャルアドレスと前記フィジカルアドレスとステータス情報とから構成される複数のエントリを有し、前記複数の入力バッファから複数のバーチャルアドレスを入力して、前記入力した複数のバーチャルアドレスと前記複数のエントリに含まれるバーチャルアドレスとの比較を同時に行い、バーチャルアドレスが一致したエントリのフィジカルアドレスとステータス情報の出力を行う変換索引バッファと、
前記複数のキャッシュメモリからのコマンド受信する複数のコマンド要求バッファと、
前記複数のコマンド要求バッファからのコマンドを受信するとともに、前記受信した複数のコマンドそれぞれに対応する前記変換索引バッファからの複数のフィジカルアドレスおよびステータス情報を受信し、前記複数の受信したコマンドのうちの1個を選択するとともに、前記選択されたコマンドに対応するフィジカルアドレスおよびステータス情報を選択する仲裁手段とを有することを特徴とする、情報処理装置のメモリマネージメントユニット。 - 前記メモリマネージメントユニットは、さらに第2の変換索引バッファを有し、前記第2の変換索引バッファは前記仲裁手段からのバーチャルアドレスを論理アドレスに変換することを特徴とする、請求項1に記載のメモリマネージメントユニット。
- 前記第2の変換索引バッファは、前記入力した複数のバーチャルアドレスと前記複数のエントリに含まれるバーチャルアドレスとの比較において、いずれのエントリにも一致しない場合にアクセスされることを特徴とする、請求項2に記載のメモリマネージメントユニット。
- 前記複数のキャッシュメモリのうち、いずれか一つは命令キャッシュメモリであり、他は全てデータキャッシュメモリで有ることを特徴とする、請求項1に記載のメモリマネージメントユニット。
- 前記変換索引バッファにおける前記複数のエントリは、ファーストイン・ファーストアウト制御によりエントリの置換を行うことを特徴とする、請求項1に記載のメモリマネージメントユニット。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US39781095A | 1995-03-03 | 1995-03-03 | |
US397,810 | 1995-03-03 | ||
PCT/US1996/002383 WO1996027832A1 (en) | 1995-03-03 | 1996-02-29 | Parallel access micro-tlb to speed up address translation |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006035582A Division JP2006146965A (ja) | 1995-03-03 | 2006-02-13 | ペンディング要求間の仲裁方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11501744A JPH11501744A (ja) | 1999-02-09 |
JP3802061B2 true JP3802061B2 (ja) | 2006-07-26 |
Family
ID=23572718
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP52688796A Expired - Fee Related JP3802061B2 (ja) | 1995-03-03 | 1996-02-29 | アドレス変換速度アップのための並列アクセスマイクロ−tlb |
JP2006035582A Pending JP2006146965A (ja) | 1995-03-03 | 2006-02-13 | ペンディング要求間の仲裁方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006035582A Pending JP2006146965A (ja) | 1995-03-03 | 2006-02-13 | ペンディング要求間の仲裁方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US5835962A (ja) |
EP (1) | EP0813709B1 (ja) |
JP (2) | JP3802061B2 (ja) |
DE (2) | DE813709T1 (ja) |
WO (1) | WO1996027832A1 (ja) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0760134A1 (de) * | 1994-05-11 | 1997-03-05 | Gmd - Forschungszentrum Informationstechnik Gmbh | Speichervorrichtung zum speichern von daten |
US6446224B1 (en) | 1995-03-03 | 2002-09-03 | Fujitsu Limited | Method and apparatus for prioritizing and handling errors in a computer system |
US5999198A (en) * | 1997-05-09 | 1999-12-07 | Compaq Computer Corporation | Graphics address remapping table entry feature flags for customizing the operation of memory pages associated with an accelerated graphics port device |
US6175898B1 (en) * | 1997-06-23 | 2001-01-16 | Sun Microsystems, Inc. | Method for prefetching data using a micro-TLB |
US5999743A (en) * | 1997-09-09 | 1999-12-07 | Compaq Computer Corporation | System and method for dynamically allocating accelerated graphics port memory space |
US5986677A (en) * | 1997-09-30 | 1999-11-16 | Compaq Computer Corporation | Accelerated graphics port read transaction merging |
US5936640A (en) * | 1997-09-30 | 1999-08-10 | Compaq Computer Corporation | Accelerated graphics port memory mapped status and control registers |
US6026467A (en) * | 1997-10-01 | 2000-02-15 | Lucent Technologies Inc. | Content-addressable memory implemented with a memory management unit |
US6057863A (en) * | 1997-10-31 | 2000-05-02 | Compaq Computer Corporation | Dual purpose apparatus, method and system for accelerated graphics port and fibre channel arbitrated loop interfaces |
US6078338A (en) * | 1998-03-11 | 2000-06-20 | Compaq Computer Corporation | Accelerated graphics port programmable memory access arbiter |
US6230223B1 (en) | 1998-06-01 | 2001-05-08 | Compaq Computer Corporation | Dual purpose apparatus method and system for accelerated graphics or second memory interface |
US6223239B1 (en) | 1998-08-12 | 2001-04-24 | Compaq Computer Corporation | Dual purpose apparatus, method and system for accelerated graphics port or system area network interface |
US6343351B1 (en) * | 1998-09-03 | 2002-01-29 | International Business Machines Corporation | Method and system for the dynamic scheduling of requests to access a storage system |
US6167476A (en) * | 1998-09-24 | 2000-12-26 | Compaq Computer Corporation | Apparatus, method and system for accelerated graphics port bus bridges |
US6212611B1 (en) | 1998-11-03 | 2001-04-03 | Intel Corporation | Method and apparatus for providing a pipelined memory controller |
EP1046998A1 (en) * | 1999-04-22 | 2000-10-25 | Texas Instruments Incorporated | Digital signal processors with virtual addressing |
US6560664B1 (en) * | 2000-02-18 | 2003-05-06 | Hewlett Packard Development Company, L.P. | Method and apparatus for translation lookaside buffers to access a common hardware page walker |
US6799219B1 (en) * | 2000-08-31 | 2004-09-28 | Fujitsu Limited | Method and apparatus for avoiding starvation in computer network |
US6553477B1 (en) * | 2000-11-06 | 2003-04-22 | Fujitsu Limited | Microprocessor and address translation method for microprocessor |
US6938148B2 (en) * | 2000-12-15 | 2005-08-30 | International Business Machines Corporation | Managing load and store operations using a storage management unit with data flow architecture |
US7206904B2 (en) * | 2002-03-20 | 2007-04-17 | Hewlett-Packard Development Company, L.P. | Method and system for buffering multiple requests from multiple devices to a memory |
JP3970705B2 (ja) * | 2002-07-05 | 2007-09-05 | 富士通株式会社 | アドレス変換装置、アドレス変換方法および2階層アドレス変換装置 |
US20040117589A1 (en) * | 2002-12-12 | 2004-06-17 | International Business Machines Corp. | Interrupt mechanism for a data processing system having hardware managed paging of disk data |
US20040117583A1 (en) * | 2002-12-12 | 2004-06-17 | International Business Machines Corporation | Apparatus for influencing process scheduling in a data processing system capable of utilizing a virtual memory processing scheme |
US20040117588A1 (en) * | 2002-12-12 | 2004-06-17 | International Business Machines Corporation | Access request for a data processing system having no system memory |
US20040117590A1 (en) * | 2002-12-12 | 2004-06-17 | International Business Machines Corp. | Aliasing support for a data processing system having no system memory |
US20050182903A1 (en) * | 2004-02-12 | 2005-08-18 | Mips Technologies, Inc. | Apparatus and method for preventing duplicate matching entries in a translation lookaside buffer |
JP4520790B2 (ja) * | 2004-07-30 | 2010-08-11 | 富士通株式会社 | 情報処理装置およびソフトウェアプリフェッチ制御方法 |
US7761774B2 (en) * | 2005-10-28 | 2010-07-20 | Qualcomm Incorporated | High speed CAM lookup using stored encoded key |
US7631163B2 (en) * | 2006-02-17 | 2009-12-08 | Sigmatel, Inc. | Fast virtual to physical memory mapping |
JP2007233615A (ja) * | 2006-02-28 | 2007-09-13 | Fujitsu Ltd | アドレス変換装置 |
US7904789B1 (en) * | 2006-03-31 | 2011-03-08 | Guillermo Rozas | Techniques for detecting and correcting errors in a memory device |
US20110145542A1 (en) * | 2009-12-15 | 2011-06-16 | Qualcomm Incorporated | Apparatuses, Systems, and Methods for Reducing Translation Lookaside Buffer (TLB) Lookups |
US8880844B1 (en) | 2010-03-12 | 2014-11-04 | Trustees Of Princeton University | Inter-core cooperative TLB prefetchers |
CN102207889B (zh) * | 2010-03-31 | 2013-10-23 | 国际商业机器公司 | 命令控制方法和命令控制器 |
US8429378B2 (en) * | 2010-07-06 | 2013-04-23 | Qualcomm Incorporated | System and method to manage a translation lookaside buffer |
JP5845902B2 (ja) * | 2012-01-04 | 2016-01-20 | トヨタ自動車株式会社 | 情報処理装置及びメモリアクセス管理方法 |
US9684601B2 (en) * | 2012-05-10 | 2017-06-20 | Arm Limited | Data processing apparatus having cache and translation lookaside buffer |
WO2014016650A1 (en) * | 2012-07-27 | 2014-01-30 | Freescale Semiconductor, Inc. | Circuitry for a computing system and computing system |
US10083035B2 (en) * | 2013-07-15 | 2018-09-25 | Texas Instruments Incorporated | Dual data streams sharing dual level two cache access ports to maximize bandwidth utilization |
US10452557B2 (en) * | 2015-01-28 | 2019-10-22 | Hitachi, Ltd. | Storage apparatus, computer system, and method for improved read operation handling |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6047623B2 (ja) * | 1982-02-12 | 1985-10-22 | 株式会社日立製作所 | アドレス変換方式 |
JPS6184754A (ja) * | 1984-10-03 | 1986-04-30 | Hitachi Ltd | 拡張アドレス変換装置 |
JPS63231550A (ja) * | 1987-03-19 | 1988-09-27 | Hitachi Ltd | 多重仮想空間制御方式 |
US5222223A (en) * | 1989-02-03 | 1993-06-22 | Digital Equipment Corporation | Method and apparatus for ordering and queueing multiple memory requests |
US5155809A (en) * | 1989-05-17 | 1992-10-13 | International Business Machines Corp. | Uncoupling a central processing unit from its associated hardware for interaction with data handling apparatus alien to the operating system controlling said unit and hardware |
US5305444A (en) * | 1990-12-21 | 1994-04-19 | Sun Microsystems, Inc. | Apparatus for increasing the number of hits in a translation lookaside buffer including instruction address lookaside register |
GB2251102B (en) * | 1990-12-21 | 1995-03-15 | Sun Microsystems Inc | Translation lookaside buffer |
US5319760A (en) * | 1991-06-28 | 1994-06-07 | Digital Equipment Corporation | Translation buffer for virtual machines with address space match |
US5386527A (en) * | 1991-12-27 | 1995-01-31 | Texas Instruments Incorporated | Method and system for high-speed virtual-to-physical address translation and cache tag matching |
US5428757A (en) * | 1992-04-29 | 1995-06-27 | International Business Machines Corporation | Method for reducing translation look aside buffer purges in a multitasking system |
-
1996
- 1996-02-29 DE DE0813709T patent/DE813709T1/de active Pending
- 1996-02-29 JP JP52688796A patent/JP3802061B2/ja not_active Expired - Fee Related
- 1996-02-29 WO PCT/US1996/002383 patent/WO1996027832A1/en active IP Right Grant
- 1996-02-29 EP EP96911211A patent/EP0813709B1/en not_active Expired - Lifetime
- 1996-02-29 DE DE69637294T patent/DE69637294T2/de not_active Expired - Lifetime
- 1996-12-24 US US08/772,835 patent/US5835962A/en not_active Expired - Lifetime
-
2006
- 2006-02-13 JP JP2006035582A patent/JP2006146965A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
DE69637294D1 (de) | 2007-11-29 |
DE69637294T2 (de) | 2008-05-08 |
EP0813709A1 (en) | 1997-12-29 |
WO1996027832A1 (en) | 1996-09-12 |
DE813709T1 (de) | 1998-10-22 |
JP2006146965A (ja) | 2006-06-08 |
US5835962A (en) | 1998-11-10 |
EP0813709A4 (en) | 2001-02-07 |
EP0813709B1 (en) | 2007-10-17 |
JPH11501744A (ja) | 1999-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3802061B2 (ja) | アドレス変換速度アップのための並列アクセスマイクロ−tlb | |
US5353426A (en) | Cache miss buffer adapted to satisfy read requests to portions of a cache fill in progress without waiting for the cache fill to complete | |
US4654790A (en) | Translation of virtual and real addresses to system addresses | |
JP2554449B2 (ja) | キャッシュ・メモリを有するデータ処理システム | |
US5586283A (en) | Method and apparatus for the reduction of tablewalk latencies in a translation look aside buffer | |
EP0036110B1 (en) | Cache addressing mechanism | |
KR100274327B1 (ko) | 캐시가 일관된 다중 처리기 컴퓨터 시스템에서 다중 미결동작을 제공하기 위한 장치 및 그 방법 | |
JP4065660B2 (ja) | 機能が並列に分散された変換索引バッファ | |
JP3666689B2 (ja) | 仮想アドレス変換方法 | |
US20070094450A1 (en) | Multi-level cache architecture having a selective victim cache | |
US10083126B2 (en) | Apparatus and method for avoiding conflicting entries in a storage structure | |
JP7340326B2 (ja) | メンテナンス動作の実行 | |
JP2006172499A (ja) | アドレス変換装置 | |
US5956752A (en) | Method and apparatus for accessing a cache using index prediction | |
US20050198441A1 (en) | Multiprocessor system | |
JP3449487B2 (ja) | 変換索引緩衝機構 | |
US20120173843A1 (en) | Translation look-aside buffer including hazard state | |
CN110046107B (zh) | 存储器地址转换装置和方法 | |
CN109983538B (zh) | 存储地址转换 | |
JP2000259498A (ja) | マルチスレッド・プロセッサの命令キャッシュ | |
JPH07117913B2 (ja) | キャッシュメモリ管理装置 | |
US6480940B1 (en) | Method of controlling cache memory in multiprocessor system and the multiprocessor system based on detection of predetermined software module | |
JP2000148589A (ja) | メモリ管理装置、方法及びプログラムを記憶した記憶媒体 | |
JPS623354A (ja) | キヤツシユメモリ・アクセス方式 | |
US20040024974A1 (en) | Cache controller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051213 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060213 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060328 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060427 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090512 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100512 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100512 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110512 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120512 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130512 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140512 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |