(57)【特許請求の範囲】
【請求項１】
アドレス変換ユニットのメモリを第１のアドレス範囲を有する第１の領域及び第２のアドレス範囲を有する第２の領域に分離する回路であって、
前記アドレス変換ユニットに結合され、少なくとも第１のコマンドがアドレス変換ユニットに送出され、前記メモリの各エントリが現在有効状態に置かれていることを検出して第１のカウント値を生成するように構成されたカウンタと、
前記カウンタに結合され、前記カウンタが前記第２のアドレス範囲内のメモリのエントリをアドレスする前記第１のカウント値を生成するように制御するように構成されたインクリメント・コントローラと、
を備えた回路。
【請求項２】
通信媒体と、
前記通信媒体に結合された第１の電子システムと、
前記通信媒体に結合された第２の電子システムであって、
第１のバスと第２のバスを有する複数のバスと、
前記第１のバスに結合された少なくとも１つのマイクロプロセッサと、
前記第１のバスに結合されたメイン・メモリと、
前記第１のバスと前記第２のバスに結合されたブリッジ・エレメントと、
前記第２のバスに結合されたネットワーク・インターフェース回路と、
を含む第２の電子システムを具備し、
前記ネットワーク・インターフェース回路は、
前記通信媒体に結合され、第１のアドレス範囲を有する第１の領域及び第２のアドレス範囲を有する第２領域に分離されたメモリを有するアドレス変換ユニットと、
前記アドレス変換ユニットに結合された置き換え回路とを具備しており、
前記置き換え回路は、
前記アドレス変換ユニットに結合され、少なくとも第１のコマンドがアドレス変換ユニットに送出され、前記メモリの各エントリが現在有効状態に置かれていることを検出して第１のカウント値を生成するように構成されたカウンタと、
前記カウンタに結合され、前記カウンタが前記第２のアドレス範囲内のメモリのエントリをアドレスする前記第１のカウント値生成するように制御するように構成されたインクリメント・コントローラと、
を具備しているネットワーク。
【請求項３】
電子システムを通信媒体に結合するネットワーク・インターフェース内に設けられたアドレス変換ユニットのメモリを分離する方法であって、
システム・ソフトウェアによって、メモリ・エレメント内のアンロック領域の開始アドレスをセットし、この場合この開始アドレスに先行するアドレスはロック領域の終了アドレスであり、
第１のコマンドが前記アドレス変換ユニットに送出され、メモリの各エントリが有効状態にあるとき、前記開始アドレスと同一のカウント値を前記アドレス変換ユニットのカウンタにロードし、
前記カウント値をインクリメントし、
前記カウンタが前記アンロック領域の最後のエントリをアドレスするカウント値を与えたとき前記カウント値を前記開始アドレスに再ロードする
方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータ転送の分野に関し、特にシステム・ソフトウェア及び最小限の回路を用いてアドレス可能なメモリをロック及びアンロック領域に分離することによってアドレス変換ユニット（ＡＴＵ）の性能を向上させる回路と方法に関する。
【０００２】
【従来の技術】
この１０年の間に、物理アドレスを用いた直接メモリ・アクセス（ＤＭＡ）ではなく仮想アドレスを用いた直接仮想アクセスによってメイン・メモリをアクセスする入出力（Ｉ／Ｏ）装置に関して多くのシステム体系が開発された。ＤＶＭＡシステムに関する１つの利点は、Ｉ／Ｏ装置によるデータ・アクセスの単純化であった。例えば、ＤＭＡを通してメモリをアクセスするＩ／Ｏ装置（ＤＭＡ  Ｉ／Ｏ装置）は、データを多くの潜在的に不連続な物理ページに分散させ、またデータを集めるように制御されなければならない。１ページを越える長さのデータを集めることは、潜在的に不連続な物理ページのグループをアクセスすることによって通常行われる。これに対して、ＤＶＭＡを通してメイン・メモリをアクセスするＩ／Ｏ装置（ＤＶＭＡ  Ｉ／Ｏ装置）は、データ・アクセスが連続した仮想ページを通して行われるためにこのような制御は必要としない。
【０００３】
ＤＶＭＡシステムはこの「分散・集積」の問題を単純化したが、これらのシステムは、メイン・メモリからデータをアクセスする前に、ＤＶＭＡ  Ｉ／Ｏ装置から送出された仮想アドレスを物理アドレスに変換することを必要とする。図１に示すように従来のＤＶＭＡシステム１００は、時にＩ／Ｏアドレス変換バッファと呼ばれるＩ／Ｏメモリ・マネジメント・ユニット「Ｉ／Ｏ  ＭＭＵ」１１０を利用して仮想アドレスをメイン・メモリ１２０が使用する物理アドレスに変換している。図示の通り、Ｉ／Ｏ  ＭＭＵ１１０は、Ｉ／Ｏバス１４０とメモリ・バス１５０を結合するブリッジ・エレメント１３０内に設けられている。
【０００４】
一般に、Ｉ／Ｏ  ＭＭＵ１１０は、限定数「ｒ」の内部メモリのアドレス変換を含むように構成され、最小限の追加コストでシステム性能を増大させている。これらアドレス変換のそれぞれは、内部メモリの指定されたエントリに割り当てられる。例えば、内部メモリは１６個のフル・アソシエイティブ・エントリを持つことができる。エントリはタグ・ビットによって「アンロック」エントリ（例えば、本質的に概ねダイナミックな内容を含むエントリ）及び「ロック」エントリ（例えば、本質的に概ねスタティックな内容のためにアンロック・エントリに比べて変更される頻度が少ない）として固有に設計される。エントリの置き換えの際にタグ・ビットをチェックするためＩ／Ｏ  ＭＭＵ内にサーチ・エンジンが設けられている。
【０００５】
しかし、従来のエントリ・ロック機構は現在のシステムに多くの欠点を強要する。従来のエントリ・ロック機構の１つの欠点は、タグ・ビットを収容するためのメモリの増加、サーチ・エンジン回路の開発及び限定されたＩ／Ｏ  ＭＭＵ空間の使用に関するコストの増加である。更に、長いルックアップ時間の存在による性能上のコストがある。
【０００６】
【発明が解決しようとする課題】
マルチメディア通信の出現によって、ネットワークは複数のデータ・タイプをサポートすることを要請されている。その結果、ネットワークの製造業者は彼等の努力を非同期通信モード（ＡＴＭ）ネットワークに集中させようとしている。ＡＴＭネットワークでは、非常に多くの、恐らく数百の仮想チャネルが同時に動作する。従って、もしＤＶＭＡシステム１００がＩ／Ｏネットワーク・インターフェース・ロジック１７０と結合したＡＴＭネットワークをサポートするように構成されると、メイン・メモリからアドレス変換を過剰にフェッチするために大幅な性能低下を来すであろう。
【０００７】
実質的に性能低下を避けるために、アドレス変換ユニット（「ＡＴＵ」）がＩ／Ｏバスに結合されたネットワーク・インターフェース回路（「ＮＩＣ」）内に設けられる。ＮＩＣはＡＴＭネットワーク環境をＤＶＭＡシステムに接続するために用いられる。従って、Ｉ／Ｏ  ＭＭＵはＡＴＵによってバイパスされ、仮想アドレスの代わりに物理アドレスがＩ／Ｏバス上に送出される。このタスクを実行するため、ＡＴＵは修正可能な一組の仮想−物理アドレス変換を含み、これにより、タグ・ビットを利用した従来のロック機構を適用したＩ／Ｏ  ＭＭＵと同様の欠点が生じる。
【０００８】
従って、タグ・ビットの使用を避け、ＡＴＵ内の内部メモリのどの部分が概ねスタティックで、どの部分がダイナミックであるかを振り分けるソフトウェアに依存するエントリ・ロック機構を開発するのが有利である。
【０００９】
【課題を解決するための手段】
本発明は、アドレス変換ユニット内のメモリのアドレス・エントリを、ロック及びアンロック領域に分離する回路及び方法に関する。ロック領域は、アンロック領域よりも少ない事象（例えばシステム・ソフトウェアの制御下でのみ）によって無効化される（例えば無効状態にセットして）メモリの部分である。従って、アドレス変換ユニットの置き換え回路はアンロック領域にストアされたアドレス変換だけを無効化できる。これによってデスクリプタ・リングのアドレス変換のように本来スタティックなアドレス変換をよりスタティックでないアドレス変換に置き換えることができる。その結果、本アドレス変換ユニットを利用したシステムの性能は向上する。
【００１０】
この回路は、アドレス変換ユニットに結合したカウンタと、このカウンタに結合したインクリメント・コントローラとを含む。カウンタは「変換」コマンドがアドレス変換ユニットへ送出され、メモリの各エントリが現在有効状態に置かれていることを検出してカウント値を生成するように構成されている。インクリメント・コントローラは第２アドレス範囲のエントリに関するカウント値を生成するようにカウンタを制御するように構成されている。
【００１１】
【発明の実施の形態】
以下の詳細な説明において、本発明は、システム・ソフトウェアと最小限の回路を用いてメモリ・エレメントのアドレス可能なエントリを「ロック領域」及び「アンロック領域」に分離することによってアドレス変換ユニット（「ＡＴＵ」）の性能を向上させる回路と方法について説明する。このような分離は従来のシステムで用いられていたようなタグ・ビットを使わずに行われ、図６の置き換え回路によって更新できるメモリの量を限定する。
【００１２】
特定の制御回路やここで定義されたバイナリ表現を説明するのに多くの用語が頻繁に用いられている。「ワード」は好ましくは４バイト（３２ビット）長であるが「２x 」バイト長（ｘ≧０）で良い。「パケット」は連続してストアされ、送信され又は受信される複数のワードである。「アドレス変換」は仮想アドレスと物理アドレスの間のマッピングである。「フラッシュ」動作は、１つ以上のメモリ位置からアドレス変換を削除することである。用語「アサート」は予め選択された論理値の活性化又は設定として定義される。更に「仮想アドレス」は仮想アドレス全体又はその一部（例えば仮想ページ番号）として解釈される。同様に「物理アドレス」は物理アドレス全体又はその一部（例えば物理ページ番号）として解釈される。
【００１３】
図２Ａを参照すると、例えば、カリフォルニア州マンテン・ビューのサン・マイロシステムズ社によって製造されたワークステーション等の電子システム２００の実施形態が示されている。電子システム２００は、本発明がＤＭＡタイプのシステムと共に動作するように意図されているけれども、ＤＶＭＡシステムとして動作する。
【００１４】
図示の通り、電子システム２００は、メモリ・バス２３０を介してメイン・メモリ２２０に結合し、これらの間での通信を可能にしている１つ以上のマルチプロセッサ２１０1〜２１０j（ｊはｊ≧１の全体の数）を含む。システム・バス２３０は、更にＩ／Ｏ  ＭＭＵを含むブリッジ・エレメント２４０に結合されてそのシステム・バス２３０に結合されたコンポーネント（例えばメイン・メモリ２２０、マイクロプロセッサ２１０1〜２１０j等）及びＩ／Ｏバス２７０に結合された複数のＩ／Ｏ装置２６０1〜２６０k（ｋは、ｋ≧２の全体の数）の間の通信を可能にしている。Ｉ／Ｏバス２７０は、これに限らないけれども、カリフォルニア州サンタ・クララのインテル社が開発した周辺装置接続（ＰＣＩ）バスを含む。例えば、ＰＣＩバスは６４ビットのアドレス／データの伝送を約６６メガヘルツ（「ＭＨｚ」）でサポートし、３２ビットのアドレス／データの伝送を約３３ＭＨｚでサポートする。
【００１５】
図示してないが、メイン・メモリ２２０は複数のフリー・メモリ・バッファ、受信（「ＲＸ」）デスクリプタ・リング及びＲＸコンプリーション・リングを含み、ＲＸ動作（図示せず）をサポートしている。同様に、送信（ＴＸ）動作をサポートする類似の要素がある。通常バッファは仮想メモリでは連続してアドレスされるメモリ位置であるが、物理メモリでは必ずしも連続していない。バッファは１つ以上の仮想ページを占有する様々なサイズで良い。各デスクリプタ・リングは複数のデスクリプタを含み、その１つが図２Ｂに示されている。
【００１６】
図２Ｂを参照すると、セグメント・リアセンブリ（「ＳＡＲ」）ユニットによって用いられ、パケット・データをメイン・メモリ２２０とネットワークの間で転送する基本的データ構造であるデスクリプタ・フォーマット２８９のサンプルが示されている。１実施形態では、デスクリプタはリング状（図示せず）に構成される（デスクリプタ間は６４バイト間隔）。これらのデスクリプタは、ネットワークに送信すべき１組のデータ・パケットを指示し（送信の場合）、又は入来するパケットを保持する１組のフリー・メモリ・バッファを指示する（受信の場合）。１実施形態では、各デスクリプタは固定長であり、３２ビット・ワードの連続した３ワードから１６ワードまでの複数のワードを含む。デスクリプタは仮想メモリ内にリング状に連続して置かれる。メイン・メモリ内に置かれた各デスクリプタはメイン・メモリ内に置かれたデータ・バッファ（送信（「ＴＸ」）の場合）を指示する。
【００１７】
デスクリプタ２８９のブロック２７１に示すように、ワード０はアプリケーション固有の制御ビットを含む。ブロック２７３は、ワード１がデータ・バッファの始めを指示する仮想アドレス（「ＶＡ」）ポインタを含むことを示している。ブロック２７５は、デスクリプタ２８９のワード２がアプリケーション固有の情報を含むことを示している。デスクリプタの終わり２７７及び２７９は、ブロック２７３に含まれる仮想アドレスにマップする物理アドレス（「ＰＡ」）の物理ページ位置で、このデスクリプタ２８９に関する情報を含む。ブロック２７７は、ワード「Ｐ」が最初の物理ページに対する変換エントリ１を含むことを示している。物理アドレスの各物理ページはそれ自身のエントリを含む。１実施形態では、ブロック２７９に示すように、最後のワード「Ｐ＋Ｋ」において、「Ｐ」は２より大きい所定数、Ｋはデータ・バッファのページ数−１に等しい。もしデータ・バッファが１０ページであれば、デスクリプタ２８９の最後には１０個の変換エントリがある。従って、１ページより大きなオブジェクトの物理アドレスのキャッシュ化はデスクリプタ内に複数のエントリを埋め込むことによってサポートされる。
【００１８】
物理変換のフォーマット２８１も図２Ｂに示されている。１実施形態では、このフォーマット２８１は、有効ビット２８３、保護ビット２８５及び実際の物理ページ・ビット２８７を含む。デスクリプタ内では、有効ビット２８３は、特定の変換エントリがＡＴＵに置かれるのか（有効ビット２８３がセットされた場合）又は無視される（有効ビット２８３がクリアされた場合）かを決定する。保護ビット２８５は図５の制御線５６０を介して転送され、ＡＴＵの物理変換を用いて仮想アドレスに対してページがアクセス可能かどうかを決定する。例えば、読み出し専用ページは読み出し専用ページ保護ビットによって書き込みから保護される。物理ページ・ビット２８７は、仮想アドレス空間のデータ・バッファの対応する部分に対する仮想アドレスから物理アドレスへのマッピングを与える。データ・バッファ・ポインタ２７３によって指示されたデータ・バッファは、１つ以上の仮想ページにわたることができ、必ずしも物理メモリ内に連続して置かれない。
【００１９】
図３を参照すると、複数のＩ／Ｏ装置の１つ例えばＩ／Ｏ装置２６０k はネットワーク・インターフェース回路（「ＮＩＣ」）を含む。ＮＩＣ２６０k は、Ｉ／Ｏバス・インターフェース・ロジック３００及びＡＴＭコア３１０を含み、これらは一緒に動作してデータをこの電子システムと他の遠隔地にある電子システムとの間で通常全二重媒体３２０を用いて転送する。媒体３２０には、光ファイバ、より線対、あるいは１秒間に１５５メガ・ビット（Ｍｂｐｓ）、６２２Ｍｂｐｓ又は６２２Ｍｂｐｓより高速の転送速度を通常サポートする他の高速通信媒体が含まれる。
【００２０】
ＡＴＭコア３１０は、データ・セル（例えばチェック・サム・バイトを除く標準ＡＴＭセル）のセグメント化と再アセンブリを行うセグメント・リアセンブリ（「ＳＡＲ」）ユニットを有し、メモリとしてはオフチップのメモリ３３０を利用する。ＡＴＭコア３１０は、有名なＡＴＭに関する物理インターフェースの全体的テスト及び動作（ＵＴＯＰＩＡ）の標準に準拠したＡＴＭ／物理インターフェース３４０とデータ・セルを交換する。ＡＴＭ／物理インターフェース３４０は、チェックサムを、送出されるデータ・セルのヘッダに挿入してＡＴＭセルを生成するように位置づけられ、あるいは入来するＡＴＭセルのチェックサムが正しいかどうか計算し、もし正しければそのデータ・セルをＡＴＭコア３１０へ転送する前にそのチェックサムを取り除くように位置づけられる。物理層３５０は、電圧線を正しく終端するために設けられている。ＡＴＭコアの説明は、ラソール・オスコウイ（Rasoul Oskouy）及びデントン・Ｅ・ジェントリ（Denton E. Gentry ）による出願中の米国特許出願「ハードウェアとソフトウェアの間でデータ転送を調和させる方法及び装置（Method and Apparatus for Coordinating Data Transfer Between Hordware and Software ）」（１９９６年７月７日出願：出願番号第０８／４９９，３１７）に見られる。この米国特許は本願の譲受人によって所有されている。
【００２１】
ＡＴＭセルの送信には、ＡＴＭコア３１０にＴＸデスクリプタ・リングの開始位置が与えられる。ＡＴＭコア３１０は最初のＴＸデスクリプタをフェッチし、最初のＴＸデスクリプタに関するデータ・バッファの仮想アドレスを得る。次に、データ・バッファがアクセスされ、データをＳＡＲユニット３１１に転送し、物理媒体３２０を介して送信する１つ以上のＡＴＭセルにセグメント化する。ＡＴＭセルの送信後（又は少なくともデータをＳＡＲユニット３１１のローカル・バッファにストアした後）、ＳＡＲユニット３１１は状態情報をＴＸコンプリーション・デスクリプタ・リングに書き込み、システムに割り込みを行ってプロセッサにその旨を知らせることによって、その完了について応答する。
【００２２】
受信中には、入来するＡＴＭセルはデータのパケットに再アセンブルされ、対応するＲＸデスクリプタに含まれている仮想アドレス・ポインタによって指示されたフリー・メモリ・バッファにストアされる。
【００２３】
図４を参照すると、Ｉ／Ｏバス２７０（例えばこの実施形態に対して約６ＭＨｚで動作する６４ビットのアドレス／データ線を有するＰＣＩバス）に結合されたＩ／Ｏバス・インターフェース・ロジック３００の実施形態が示されている。このＩ／Ｏバス・インターフェース・ロジック３００は、Ｉ／Ｏバス線４１５を介してスレーブ・インターフェース装置４１０に結合されたＩ／Ｏレジスタ及びトランシーバ４００（例えば、ＰＣＩレジスタ及びトランシーバ）を含む。スレーブ・インターフェース装置４１０は、ＡＴＵの様々な機構を制御するために用いられるＡＴＵ制御レジスタ（図示せず）を含むことができる。更に、Ｉ／Ｏバス・インターフェース・ロジック３００は、入力バス４２５を介した１つ以上の読み出しバッファ４２０や、１つ以上の書き込みバッファ４３０及びマスタ・アドレス生成ユニット４４０を有する。図示していないが、入力バス４２５は更にマスタ・アドレス生成ユニット４４０、つまり図５のＦＩＦＯストレージ・エレメントに結合され、デスクリプタに関する情報を受信する。読み出しバッファ４２０は、Ｉ／Ｏバス２７０からの情報を一時的にストアするのに用いられ、一方書き込みバッファ４３０は、ＳＡＲユニットからの書き込みデータ経路を介した情報を一時的にストアするのに使用される。
【００２４】
マスタ・アドレス生成ユニット４４０内には、ＡＴＭコアのＳＡＲユニット３１１からの情報を受信するアドレス変換ユニット（「ＡＴＵ」）４５０が設けられている。この情報には、変換されるべき仮想アドレス、アドレスのサイズ及びアクセスのタイプ（例えば、デスクリプタ・リングへのアクセス又はバッファへのアクセス）が含まれる。ＡＴＵ４５０の存在は、電子システムが（ｉ）仮想アドレスを物理アドレスに変換し、その結果図２ＡのＩ／Ｏ  ＭＭＵ２５０をバイパスする、又は（ii）仮想アドレスを図２ＡのＩ／Ｏ  ＭＭＵ２５０へ送信する、ことを可能にする。
【００２５】
図５を参照すると、ＡＴＵ４５０の実施形態が示されている。ＡＴＵ４５０はフル・アソシエイティブに構成することができる。しかし、望ましい変換ヒット率を達成するために直接マップ又はＮウェイ・アソシエイティブ等他のメモリ・アクセス体系を利用することが考えられている。
【００２６】
ＡＴＵ４５０はコンテント・アドレッサブル・メモリ（「ＣＡＭ」）エレメント５００及びランダム・アクセス・メモリ（「ＲＡＭ」）エレメント５０２を有し、これらは合わせてｎ個のアドレス変換（ｎは、ｎ≧１の全体の数）を有する。具体的には、ＣＡＭエレメント５００は、エントリのアドレス・ルックアップ・サーチを行うと共に「ｎ」個のエントリの中の１つへ仮想アドレス及び制御情報をローディングするのをサポートするロジックを有する。制御情報は、セットされているときそのエントリがアドレス変換のために現在用いられている仮想アドレスを含んでいることを示すＣＡＭ有効ビットを有する。ＣＡＭエレメント５００は、更に（ｉ）複数の入力ポート及び（ii）複数の出力ポートを有する。
【００２７】
この複数の入力ポートはＣＡＭエレメント５００のエントリにアドレス及び制御情報をロードするのに用いられる。図示の通り、ＣＡＭエレメント５００に情報をロードするのに用いられる５つの入力ポートがある。第１の入力ポートはデータ入力（「Ｄin」）であり、選択エレメント（例えばＭＵＸ５０５）からアドレス線５２９を介して与えられる選択された仮想アドレスをロードするのに用いられる。第２の入力ポートはアドレス更新（「Ａupdate」）ポートであり、ＣＡＭ更新アドレス線５３０を介して、データ線５２９上の仮想アドレスをロードするように選択されたエントリのエントリ番号を受信する。第３の入力ポートはコマンド（「ＣＡＭ command」）ポートであり、ＣＡＭエレメント５００がコマンド線５２４を介してコマンド情報を受信し、その動作を制御する。コマンドのタイプには、これに限らないが、「変換」又は「更新」が含まれる。更に、第４の入力ポートは、エントリ有効（「Valid」）ポートであり、Ａupdate ポートによってアドレスされたエントリのＣＡＭ有効ビットを表す制御線５２８が、そのエントリが「有効」（例えば、「有効」状態又は現在使用されている）であるか、「無効」（例えば、「無効」状態又は失効）であるかによってアサートまたはデアサートされる。第５の入力ポートは、アドレス・ルックアップ（「Ａlookup」）ポートであり、ＣＡＭエレメント５００は、ルックアップ・アドレス線を介して仮想アドレス（例えば、ページ番号）を受信し、そのエントリのそれぞれにストアされている仮想アドレスと比較する。一致すれば、出力「Ｈｉｔ」ポート及びその制御線（「ＣＡＭ−Ｈit」５３６と呼ばれる）がアサートされる（すなわち、活性化された信号が生成される）。その結果、信号出力（「Ｓout 」）ポートは信号線５３４を介して仮想アドレスを含むＣＡＭエントリのエントリ番号を伝送する。
【００２８】
依然図５を参照すると、ＲＡＭエレメント５０２は、ＣＡＭエレメント５００にストアされた仮想アドレスに対する対応する物理アドレスを含むように構成されている。ＣＡＭエレメント５００と同様に、ＲＡＭエレメント５０２は、複数の入出力ポートを有する。特に、ＲＡＭエレメント５０２は、ＣＡＭエレメント５００にロードされている仮想アドレスに対応する物理アドレスをデータ線５４８を介してロードするために用いられるデータ入力「Ｄin」ポートを有する。ＲＡＭエレメント５０２は更に、エントリ・ルックアップ及びエントリ更新用のアドレス（「Ａ」）ポートを有する。書き込みイネーブル（「Ｗen」）ポートは、エントリ更新（例えば、Ｗen線５５０がアサートされる）とエントリ・ルックアップ（例えば、Ｗen線５５０がデアサートされる）とを区別するために用いられる。更に、ＲＡＭエレメントは、変換されるかサーチされる仮想アドレスに対応する物理アドレスをアドレス線５６２を介して出力する第１の出力（「Ｄout1」）ポート及び選択されたエントリに含まれる書き込み保護情報を制御線５６０を介して出力する第２の出力（「Ｄout2」）ポートを有する。更に、ＲＡＭエレメント５０２は、エントリ状態（「Ｅstat」）ポートを有し、ＣＡＭ及びＲＡＭエレメントのどのエントリがアクセスされたかを示す情報をエントリ状態線５７２を介して出力する。
【００２９】
ＣＡＭ及びＲＡＭエレメント５００及び５０２に加えて、ＡＴＵ４５０は更に、アドレス変換のロード及びフラッシュを制御する第１グループの制御ロジックと、ＡＴＵがアドレス線５１６を介して仮想アドレスを出力するか物理アドレスを出力するかを制御する第２グループの制御ロジックを有する。Ｉ／Ｏ  ＭＭＵをバイパスするのに用いられるインジケータには、これに限らないが、セットされ、あるいはクリアされつつある上位アドレス・ビット、アクセスされつつあるアドレス空間の特定のサブセット等が含まれる。例えば、１実施形態では、図２Ａに示されるようなブリッジ・エレメント２４０は、アクセスの際アドレスの下位４１ビットを物理アドレスとして扱う６４ビットのアドレス空間内のアドレス範囲を与える。
【００３０】
図示のように、第１グループの制御ロジックには、複数の選択エレメント５０４〜５０６及び５０８（例えば、複数入力のマルチプレクサ）及び先入れ、先出し（「ＦＩＦＯ」）メモリ・エレメント５１４が含まれる。ＦＩＦＯメモリ・エレメント５１４は、デスクリプタのフェッチの際入力バス４２５から読み出される仮想／物理アドレス変換を一時的にストアするために用いられる。
【００３１】
複数の選択エレメント５０４〜５０６及び５０８は、制御線５８１〜５８４を介してＡＴＵ制御状態マシン（「ＡＴＵＣＳＭ」）５８０によって制御される。第１の選択エレメント５０４は、ＣＡＭエレメント５００内でサーチすべき仮想アドレスを送出するためルックアップ・アドレス線５３２を介してＣＡＭエレメント５００のＡlookupポートに結合される。この選択エレメントは入力として仮想アドレス（又は仮想ページ番号）をソフトウェア・フラッシュ・アドレス線（「ＳＷフラッシュ・アドレス線」）５１８、ハードウェア・フラッシュ・アドレス線（「ＨＷフラッシュ・アドレス線」）５２０及び通常の変換ローディング用アドレス線５２２を介して受信する。第２の選択エレメント５０５は、データ線５２９を介してＣＡＭエレメント５００のＤinポートに結合され、（ｉ）線５５４を介してデスクリプタ・フェッチから得られた仮想アドレスをロードするか、（ii）バッファの仮想アドレスをＣＡＭエレメント５００に書き込むソフトウェアによって手動で指定されたデータ・バッファの仮想アドレスをロードする。これはスレーブ・インターフェース装置４１０のアクセスであり、結果として仮想アドレスが線５５８上に置かれる。第３の選択エレメント５０６はアドレス線５４６を介してアドレス・ポートに結合され、ＲＡＭ更新アドレスをＲＡＭ更新アドレス線５３８を介してアドレス・ポートに送信するか、ＣＡＭエレメント５０２からのエントリ番号出力をＳout ポートから信号線５３４を介してアドレス・ポートに送信する。第４の選択エレメント５０８は、アドレス線５４８を介してＤinポートに結合され、線５４０及び５４４からの物理アドレス及び制御情報を入力する。
【００３２】
第２グループの制御ロジックはヒット／ミス・ロジック回路５１２及び第５の選択回路５１０を含む。ヒット／ミス・ロジック回路５１２は、組み合わせロジックであり、第５の選択回路がアドレス線５１６に（ｉ）線５６２から受信した変換された物理アドレスを出力するか、（ii）Ｉ／Ｏ  ＭＭＵによって次に変換されるべき線５２６の仮想アドレスを出力するかを制御するように構成されている。このような制御は、ＡＴＵヒット制御線５６４のアサート又はデアサートによって行われる。
【００３３】
変換されたアドレスは、第５の選択エレメントから、（ｉ）ＣＡＭヒット線５３６がアサートされ、従って、「ルックアップ・ミス」を示していなければ、（ii）ＡＴＵ４５０がシステム・ソフトウェアによってディスエーブルされてなく、ＡＴＵイネーブル線５６６がアサートされていれば、（iii）サイクル状態線５６８がアサートされており、この特定の変換を無効にすべきであることを示していなければ、あるいは（iv）保護ビット５６０が、読み出し専用ページに対する書き込み試行（これに限定されない）を含む理由で進行中のサイクルが禁止されていることを示していなければ、全ての条件の下で出力される。
【００３４】
図示のように、ＡＴＵ４５０は、ＣＡＭ及びＲＡＭエレメント５００及び５０２内に含まれるメモリを有し、限られた数のアドレス変換をサポートするように構成されている。従って、ロック・エントリ機構を（ｉ）概ねスタティックなアドレス変換（例えば、リング・デスクリプタに対する変換）をメモリの「ロック」領域に、（ii）概ねダイナミックなアドレス変換（例えば、バッファに対する変換）をメモリの「アンロック」領域に含むように構成することが有利である。このようなロック・エントリ機構は、Ｉ／Ｏ  ＭＭＵ変換「ミス」に関してメイン・メモリに対するフェッチの数を低減することによって電子システムの性能を向上させる。
【００３５】
ロック・エントリ機構は、図５のＡＴＵ制御状態マシン５８０の部分、つまり図６に示す置き換え回路内に設けられる。この置き換え回路は少なくともＡＴＵ置き換えエレメント６１０、ＣＡＭアドレス・エンコード回路６２０、選択エレメント６３０、インクリメント回路６４０及びＣＡＭアドレス・デコード回路６５０を含む。更新制御回路６００はＣＡＭ更新アドレス制御線５３０に結合され、ＣＡＭエレメントのどのエントリに図４及び図５のＩ／Ｏバス線４１５又は入力バス４２５から仮想アドレスをロードするかを選択する。しかし、ＲＡＭ更新アドレス線５３８は、同一のエントリ選択を受信して動作の一貫性を維持するためＣＡＭ更新アドレス線５３０に結合されるように意図されている。
【００３６】
ＡＴＵ置き換えエレメント６１０は、１つのＣＡＭエントリにそれぞれ対応する複数のメモリ・エレメント（例えば、「ｎ」個のメモリ・エレメント６１１1 〜６１１n ）である。図６に示すように、複数のメモリ・エレメント６１１1 〜６１１n はそれぞれクロック線６１２を介して所定の周波数「ＣＬＫ」でクロックされる１ビットのレジスタとして設けられている。しかしながら、メモリ・エレメント６１１1〜６１１nは１ビット・レジスタ以外の他のタイプのメモリ装置を含むことができるように意図されている。
【００３７】
複数のクロック・イネーブル制御線６１４1・・・又は６１４nの中の１つ（例えば、クロック・イネーブル制御線６１４1 ）がＣＡＭアドレス・デコード回路６５０によってアサートされると、そのクロック・イネーブル制御線に関するメモリ・エレメント（例えば、メモリ・エレメント６１１1 ）がＣＡＭ有効ビット値をロードすることによって「セット」される。そのメモリ・エレメントに対応するＣＡＭ及びＲＡＭエントリが有効アドレス変換を含んでいることを表すために、ＣＡＭ有効ビット値（例えば論理１）がデータ入力線６１３を介してロードされる。
【００３８】
ＣＡＭアドレス・エンコード回路６２０は、ＡＴＵ置き換え回路６１０に結合された組み合わせロジックであり、複数のメモリ・エレメント６１１1〜６１１nのそれぞれの内容を監視する。典型的には、この監視は、データ線６１５1 〜６１５n を介して与えられたメモリ・エレメント６１１1〜６１１nの内容を読み、少なくとも１つのメモリ・エレメント６１１1・・・又は６１１nがセット（例えば、少なくとも１つのＣＡＭエントリが変換のために使用されていないかどうかを判定する）されていないかどうかを確かめることによって行われる。ＣＡＭアドレス・エンコード回路６２０は、更に選択エレメント６３０のＡＴＵフル選択線６２１及び多くの（例えばｌｏｇ2 （ｎ））データ入力線６３１（「Ｅ−Ｎum」線６３１と呼ばれる）を含む。
【００３９】
少なくとも１つのセットされていないメモリ・エレメント（「空メモリ・エレメント」と呼ばれる）を検出すると、ＣＡＭアドレス・エンコード回路６２０は３つの動作を行う。すなわち、ＣＡＭアドレス・エンコード回路６２０は、（ｉ）空メモリ・エレメントを選択し、（ii）ＡＴＵ置き換えエレメント６１０の空メモリ・エレメントの場所を表すエントリ番号をＥ−Ｎum線６３１を介して選択エレメント６３０に出力し、（iii)ＡＴＵフル選択線６２１をデアサートする。その後エントリ番号は、選択エレメント６３０を介してＣＡＭ更新アドレス線５３０へ転送され、それによってアドレス変換の仮想アドレスをそのエントリ番号に対応するＣＡＭエレメントのエントリにロードする。さらに、アドレス変換の物理アドレスは、そのエントリ番号に対応するＲＡＭエレメントのエントリにロードされることが望ましい。しかし、もし空メモリ・エレメントが１つも存在しなければ、ＣＡＭアドレス・エンコード回路６２０はＡＴＵフル選択線６２１をアサートし、それによって選択エレメント６３０が、以下に説明するように、インクリメント回路６４０によって生成されたカウント値を出力するように制御する。
【００４０】
更に、図示されているように、選択エレメント６３０は複数入力のマルチプレクサ又は互いに結合された複数入力のマルチプレクサのグループであり、複数のデータ入力の中の１つを出力する。選択エレメント６３０のデータ入力には、Ｅ−Ｎum線６３１を介したエントリ番号、入力線６３２（「フラッシュ」線と呼ばれる）を介した「フラッシュ・エントリ番号」（図７のフラッシュ制御回路７００によって与えられる）及び入力線６３３（「カウント」線と呼ばれる）を介したインクリメント回路６４０からのカウント値が含まれる。出力としてこれらの入力を選択することは、ＣＡＭアドレス・エンコード回路６２０によるＡＴＵフル選択線のアサート又はデアサート及びＡＴＵ制御状態マシン（図示せず）がフラッシュ無効化更新制御線６２２のアサート又はデアサートによって表されるフラッシュ動作をサポートしているかどうかによって制御される。
【００４１】
ＣＡＭエントリに対する全てのＣＡＭ有効ビット及びＡＴＵ置き換えエレメントのメモリ・エレメント６１１1〜６１１nが「セット」されることによって示されるように、全てのアドレス変換が活発に使用されていると、ＡＴＵフル選択線６２１はアサートされる。ＡＴＵフル選択線６２１のアサートによって、インクリメント回路６４０から与えられたカウント値がＣＡＭ更新アドレス線５３０を介して選択エレメント６３０から出力される。このカウント値は、ＣＡＭ及びＲＡＭエレメントのどのエントリに新しいアドレス変換をロードすべきかを表す。インクリメント回路６４０は、ＡＴＵフル選択線６２１がアサートされ、ＣＡＭ更新コマンドが図５のＡＴＵ制御状態マシン５８０によって生成されたときインクリメントされ且つイネーブルされる「モジュロｎ」カウンタ６４１を含む。インクリメント回路６４０は更に、以下に説明するロック・エントリ機構６６０を含む。
【００４２】
更に、ＣＡＭアドレス・デコード回路６５０は、前のサイクルにおけるＣＡＭエントリの変更に基づいてＡＴＵ置き換えエレメント６１０の内容を更新するため、フィードバック・ループ６５１を介して選択エレメント６３０に結合された組み合わせロジックを含む。このエントリの変更は、エントリ番号、フラッシュ・エントリ番号又はＣＡＭ更新アドレス線５３０を介して送信されるカウント値によって表される。ＣＡＭアドレス・デコード回路６５０は、更にＡＴＵ制御状態マシン（図示せず）に結合され、ＣＡＭコマンド線５２４を介していつＣＡＭ更新コマンドがアサートされるかを監視すると共に、それに応答して、更新されるＣＡＭエントリに対応するメモリ・エレメント６１１1〜６１１nに関するクロック・イネーブル制御線６１４1〜６１４nをアサートする。
【００４３】
依然図６を参照する。システム・ソフトウェアと共に動作し、どのアドレス変換が「ロック」領域にストアされるかを決定するロック・エントリ機構６６０と「ロック」領域に対して用意されたＡＴＵの多くのエントリが示されている。
【００４４】
ＡＴＵ４５０をイネーブルする前に、デスクリプタ・リングのアドレス変換又はその他の概ねスタティックなデータ構造は、ＡＴＵの「ｎ」個のエントリの最初のエントリ（「エントリ０」）からシステム・ソフトウェアによって手動でＡＴＵに書き込まれる。概ねスタティックなアドレス変換を収容するのに「ｑ」個のエントリが必要であるとすると（ｑは全体の数、ｑ＜ｎ）、メモリを「ロック」及び「アンロック」領域に分離するための専用のＡＴＵ制御レジスタに複数のビットをセット（値「ｑ」に）することによってエントリ「０」から「ｑ−１」がロック領域に置かれるであろう。具体的には、その複数のビットはメモリ内のアンロック領域の最初のエントリ番号を表す。しかし、最後の１エントリ（例えば「エントリｎ−１」）はアンロック領域に置かれなければならないようになっている。
【００４５】
カウンタ６４１がリセットされると、ＡＴＵ制御レジスタの複数のビットの値がインクリメント・コントローラ６４２からカウンタ６４１へロードされる。その後は、カウンタ６４１はカウント値「ｎ」に達するまでインクリメントされる。次の使用のため（ＡＴＵフル及びＣＡＭコマンドが更新コマンドの時）、カウント値は次の一連の置き換えのため「ｑ」にセットされる。
【００４６】
置き換え回路６００は、ロック領域の無効又は不使用のエントリを自由に使って仮想アドレスから物理アドレスへの新しいアドレス変換を含むが、インクリメント回路６４０によって生成されたカウント値によってロック領域の如何なるエントリも無効化できない。ロック領域のエントリはシステム・ソフトウェアによってのみ
（１）  そのエントリに関連する変換のソフトウェア・フラッシュ又は
（２）  前に説明したように、エントリの再初期化又は重ね書きのために行うソフトウェアによる手動変更、を通して無効化される。その他のソフトウェア・フラッシュ動作を利用することも考えられている。更に、最終ページのアクセスの検出によってそのエントリを無効化しないようになっている。従って、システム・ソフトウェアは、ロック領域がデータ・バッファに使われることを許可しているとき、バッファのアクセスが完了した後にシステム・ソフトウェアはＡＴＵからのエントリを手動でフラッシュしなければならない。
【００４７】
図７を参照する。ロック又はアンロックのメモリ内のエントリの置き換えに用いられるソフトウェアのフラッシュ・サイクルのフローチャートが示されている。ブリッジ・エレメント２４０内のＩ／Ｏ  ＭＭＵ２５０とＡＴＵ４５０の間の一貫性を維持するのにソフトウェア・フラッシュだけで十分である。しかし、置き換え回路もフラッシュ動作を行うことによって、Ｉ／Ｏ  ＭＭＵとＡＴＵとの間の一貫性を維持するように支援している。
【００４８】
ステップ７００に示すように、システム・ソフトウェアはフラッシュする必要がある仮想ページをスレーブ・インターフェース装置４１０内にあるソフトウェア・フラッシュ・レジスタに書き込む。ステップ７０５では、変換コマンドがＣＡＭエレメント５００に送られる。ステップ７１０及び７１５において、ＡＴＵ制御状態マシンはＣＡＭヒット信号を監視してアサートされたかデアサートされたかを判定する。ＡＴＵ制御状態マシンが、ＣＡＭヒット信号がデアサートされ、「ルックアップ・ミス」が生じたことを判定すると、フラッシュは必要なく、従ってソフトウェア・フラッシュ・サイクルを終了させる（ステップ７２０及び７２５）。
【００４９】
しかし、ＣＡＭヒット信号がアサートされると、フラッシュされるべき仮想ページはＡＴＵ４５０のＣＡＭエントリ内に依然含まれており、フラッシュする必要がある（ステップ７３０）。ステップ７３５では、その仮想ページに関するエントリ番号がエントリ状態線５７２から捕捉される。次にステップ７４０では、更新コマンドが線５２４を介してＣＡＭエレメントに送られる。ルックアップ・アドレス線５３２から受信した情報は無関係であるのでＣＡＭ有効ビットは無効化される（ステップ７４５）。ＣＡＭ更新アドレス線５３０を介して転送されたエントリ番号は前に捕捉したエントリ状態番号と等しい（ステップ７５０）。一旦ソフトウェア・フラッシュが完了すると、そのサイクルは終了する。
【００５０】
ここに記載した本発明は多くの異なった方法及び多くの異なった構成を用いて設計することができる。本発明を様々な実施形態について説明したけれども、本発明の精神と範囲から逸脱することなく、他の実施形態が当業者には想起されるであろう。従って、本発明は特許請求の範囲について評価されるべきである。
【図面の簡単な説明】
本発明の特徴と利点は本発明の詳細な説明から明らかになるであろう。
【図１】  ブリッジ・エレメント内に設けられたＩ／Ｏメモリ・マネジメント・ユニットを含む従来のＤＶＭＡシステムのブロック図である。
【図２】  ブリッジ・エレメント内にＩ／Ｏメモリ・マネジメント・ユニットを設け、ネットワーク・インターフェース回路（「ＮＩＣ」）内にアドレス変換ユニット（「ＡＴＵ」）を設けた電子システムの実施形態のブロック図（Ａ）と、電子システムのメイン・メモリにストアされたデスクリプタ・リングからのデスクリプタのデータ構造の実施形態のブロック図（Ｂ）である。
【図３】  ネットワークの通信媒体とネットワークに結合されたワークステーションのＩ／Ｏバスとを接続するＮＩＣの一般的実施形態のブロック図である。
【図４】  アドレス変換ユニットを含むＩ／Ｏバス・インターフェース・ロジックの一実施形態のブロック図である。
【図５】  図４のアドレス変換ユニット（「ＡＴＵ」）の好ましい実施形態のブロック図である。
【図６】  図５のアドレス変換ユニットのエントリの分離を制御するＡＴＵ制御状態マシンの置き換え回路の一実施形態のブロック図である。
【図７】  ソフトウェア・フラッシュのためのロック・エントリ機構によって行われる動作ステップの実施形態を示すフローチャートである。
【符号の説明】
２０４・・・ネットワーク・インターフェース回路（ＮＩＣ）
２２０・・・メイン・メモリ
２５０・・・Ｉ／Ｏ  ＭＭＵ
３００・・・Ｉ／Ｏバス・インターフェース・ロジック
３１０・・・ＡＴＭコア
４５０・・・ＡＴＵ
５００・・・ＣＡＭエレメント
５０２・・・ＲＡＭエレメント
６２０・・・ＣＡＭアドレス・エンコード回路
６４０・・・インクリメント回路
６５０・・・ＣＡＭアドレス・デコード回路
【図１】
0003857391.tif 000002
【図２】
0003857391.tif 000003
【図３】
0003857391.tif 000004
【図４】
0003857391.tif 000005
【図５】
0003857391.tif 000006
【図６】
0003857391.tif 000007
【図７】
0003857391.tif 000008