(57)【特許請求の範囲】
【請求項１】
情報を転送するための相互接続手段と、
前記相互接続手段に結合されたメイン・メモリと、
入出力ページ番号をメモリ・アドレス・ページ番号にマップする変換マップを含み、該変換マップ中の各項目は、前記メイン・メモリ中のデータ・ページのアドレスと、データ・ページとの間のデータ・トランザクション中に入出力アダプタによって使用されるトランザクション構成情報とを含む、前記相互接続手段に結合された入出力アダプタと、
前記トランザクション構成情報を生成し該トランザクション構成情報を前記変換マップに記憶するためのキャッシュと命令実行手段とを含む、前記相互接続手段に結合されたプロセッサと、を備え、
各項目のトランザクション構成情報は前記データ・ページ内のデータが順次データであるかどうかを示すインディケータを含む、
ことを特徴とする計算システム。
【請求項２】
情報を転送するための相互接続手段と、
前記相互接続手段に結合されたメイン・メモリと、
入出力ページ番号をメモリ・アドレス・ページ番号にマップする変換マップを含み、該変換マップ中の各項目は、前記メイン・メモリ中のデータ・ページのアドレスと、データ・ページとの間のデータ・トランザクション中に入出力アダプタによって使用されるトランザクション構成情報とを含む、前記相互接続手段に結合された入出力アダプタと、
前記トランザクション構成情報を生成し該トランザクション構成情報を前記変換マップに記憶するためのキャッシュと命令実行手段とを含む、前記相互接続手段に結合されたプロセッサと、を備え、
各項目のトランザクション構成情報は前記データ・ページ内のデータがキャッシュ線境界に沿って整列するかどうか、すなわちキャッシュ線が一つのデータ・ブロックで占められるかどうかを示すインディケータを含む、
ことを特徴とする計算システム。
【請求項３】
メイン・メモリと、入出力ページ番号をメモリ・アドレス・ページ番号にマップする変換マップを含む入出力アダプタと、を含む計算システムにおいて、コンピュータが実施する方法であって、
（ａ）前記メイン・メモリ中のデータ・ページのアドレスと、前記データ・ページとの間のデータ・トランザクション中に前記入出力アダプタによって使用されるトランザクション構成情報とを含む各項目を前記変換マップ中に生成するステップを含み、
各項目のトランザクション構成情報は前記データ・ページ内のデータが順次データであるかどうかを示すインディケータを含む、
ことを特徴とする方法。
【請求項４】
（ｂ）前記入出力アダプタが前記データ・ページとのデータ・トランザクションを実行する前に、前記インディケータを検査して該データ・ページ内のデータが順次データであるかどうかを判定するステップと、
（ｃ）ステップ（ｂ）において、そのデータ・ページ内のデータが順次データであると判定されたとき、
（ｃ.１）前記データ・ページへのデータ書込みの際、前記入出力アダプタがキャッシュ線より小さいデータのブロックをキャッシュ線内において合体させるサブステップ、
（ｃ.２）前記データ・ページからのデータ読取りの際、前記入出力アダプタが追加データを事前に取り込むサブステップ、
の各サブステップを実行するステップと、
をさらに含むことを特徴とする請求項３に記載の方法。
【請求項５】
メイン・メモリと、入出力ページ番号をメモリ・アドレス・ページ番号にマップする変換マップを含む入出力アダプタと、を含む計算システムにおいて、コンピュータが実施する方法であって、
（ａ）前記メイン・メモリ中のデータ・ページのアドレスと、前記データ・ページとの間のデータ・トランザクション中に前記入出力アダプタによって使用されるトランザクション構成情報とを含む各項目を前記変換マップに生成するステップを含み、
各項目のトランザクション構成情報は前記データ・ページ内のデータがキャッシュ線境界に沿って整列するかどうか、すなわちキャッシュ線が一つのデータ・ブロックで占められるかを示すインディケータを含む、
ことを特徴とする方法。
【請求項６】
（ｂ）前記入出力アダプタが前記データ・ページとのＤＭＡデータ・トランザクションを実行する前に、前記インディケータを検査して前記データ・ページ内のデータがキャッシュ線境界に沿って整列するかどうかを判定するステップと、
（ｃ）ステップ（ｂ）において、前記インディケータが前記データ・ページ内のデータがキャッシュ線境界に沿って整列することを示すとき、高速ＤＭＡを実行するステップと、
（ｄ）ステップ（ｂ）において、前記前記インディケータが前記データ・ページ内のデータがキャッシュ線境界に沿って整列しないことを示すとき、安全ＤＭＡを実行するステップと、
をさらに含むことを特徴とする請求項５に記載の方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、入出力アドレス変換機構にアクセス・ヒントを使用することに関する。
【０００２】
【従来の技術】
大部分の現代のコンピュータ・システムは、中央演算処理装置（ＣＰＵ）とメイン・メモリとを含む。ＣＰＵが命令およびオペランドを復号して実行することができる速度は、命令およびオペランドをメイン・メモリからＣＰＵに転送できる速度に依存する。多数のコンピュータ・システムは、ＣＰＵが命令およびオペランドをメイン・メモリから得るために必要とされる時間を短縮するために、ＣＰＵとメイン・メモリの間にキャッシュ・メモリを含む。
【０００３】
キャッシュ・メモリとは、近い将来にＣＰＵによって使用されると考えられるメイン・メモリの内容の部分を一時的に保持するために使用される小容量の高速バッファ・メモリである。キャッシュ・メモリの主な目的は、データ取出しの場合にも、命令取出しの場合にも、メモリ・アクセスを実行するのに必要な時間を短縮することである。キャッシュ・メモリに位置する情報は、メイン・メモリに位置する情報よりもずっと短い時間でアクセスすることができる。したがって、キャッシュ・メモリを含むＣＰＵは、命令およびオペランドが取り出され、あるいは記憶されるのを待つのに費やす時間がより短い。
【０００４】
キャッシュ・メモリは、１つまたは複数のデータ・ワードの多数のブロックから成る。各ブロックには、そのコピー元であるメイン・メモリのブロックはどれかを固有に識別するアドレス・タグが関連付けられる。プロセッサがメモリを参照するたびに、要求されたデータのコピーがキャッシュ・メモリに存在するかどうかを調べるためにアドレス・タグの比較が行われる。所望のメモリ・ブロックがキャッシュ・メモリ中にない場合、そのブロックは、メイン・メモリから検索され、キャッシュ・メモリに記憶され、プロセッサに供給される。
【０００５】
ＣＰＵは、キャッシュ・メモリを使用してメイン・メモリからデータを検索するだけでなく、メイン・メモリに直接データを書き込む代わりにキャッシュ・メモリにデータを書き込む。プロセッサがデータをメモリに書き込みたいとき、キャッシュ・メモリは、アドレス・タグを比較して、データを書き込むべきデータ・ブロックがキャッシュ・メモリに存在しているかどうかを調べる。そのデータ・ブロックがキャッシュ・メモリに存在する場合、データは、キャッシュ・メモリ中のそのデータ・ブロックに書き込まれる。多数のシステムでは次いで、そのデータ・ブロック用の「ダーティ・ビット」がセットされる。ダーティ・ビットは、そのデータ・ブロック中のデータがダーティであり（すなわち、修正されており）、したがって、そのデータ・ブロックがキャッシュ・メモリから削除される前に、修正済みのデータをメイン・メモリに書き込んでおかなければならないことを示す。データを書き込むべきデータ・ブロックがキャッシュ・メモリ中に存在しない場合、そのデータ・ブロックをキャッシュ・メモリに取り込み、あるいは直接メイン・メモリに書き込まなければならない。キャッシュ・メモリに新しいデータが置かれたときに上書きされ、あるいはキャッシュ・メモリからコピーされるデータ・ブロックを犠牲ブロックまたは犠牲線と呼ぶ。
【０００６】
キャッシュ・メモリに関する他の関連情報に関しては、「Cache Memory with Variable Fetch and Replacement Schemes」と題する、１９９０年５月２２日にAllen Baum他に発行された米国特許第４，９２８，２３９号を参照されたい。
【０００７】
メモリと対話する入出力（Ｉ／Ｏ）アダプタは、計算システムのすべての機能に統合されるように設計する必要がある。このために、入出力アダプタ内のアドレス変換マップを使用して、入出力バス・アドレスをメモリ・アドレスに変換することが多い。そのようなアドレス変換マップは、入出力アクセスによってメモリのどんな部分でも参照できるように、入出力バス・アドレス範囲がメモリ・アドレス範囲よりも小さいときに使用されている。
【０００８】
従来技術では、入出力アドレス変換マップはソフトウェアによって管理されている。アドレス変換マップ中の各項目は、オペレーティング・システム・ソフトウェアによって明示的に割り振られロードされる。１つまたは複数のプロセッサがキャッシュを使用するシステム中のメイン・メモリに入出力アダプタがアクセスするとき、メモリにおいてアクセスされるデータの完全性を保証する措置を取る必要がある。たとえば、入出力アダプタがメモリのデータにアクセスするとき（書込みまたは読取り）、データの更新済みバージョンがシステム上のプロセッサのキャッシュに存在するかどうかを判定することが重要である。データの更新済みバージョンが存在する場合、入出力アダプタがデータの更新済みバージョンにアクセスするように何らかの措置を取らなければならない。データの更新済みバージョンがメモリ参照で使用されるようにする動作を、本明細書では、コヒーレンス動作と呼ぶ。
【０００９】
入出力アダプタによってシステム・メモリからアクセスされるデータのコヒーレンスを保証するために様々な方式が提案されている。たとえば、以前の方式には、入出力動作を実行する前にキャッシュを明示的にフラッシュしておくソフトウェアが含まれる。
【００１０】
入出力アダプタを設計する際、入出力アダプタが計算システムに対して最適化されるようにするために計算システムを分析する必要がある。ある種の入出力バスでは、データ・トランザクションがアトミックである必要がある。すなわち、アトミック・データ・トランザクション中には他のトランザクションを「ロック・アウト」する必要がある。そのような入出力バスとのインタフェースをとる入出力アダプタは、この機能を実施できる必要がある。しかし、入出力アダプタがアトミック・トランザクションを実行すると、それによってシステム性能が低下する。
【００１１】
同様に、データが順次に記憶されるとき、入出力アダプタがメモリからデータを読み取る際にそのデータを事前に取り出し、メモリにデータを書き込む際にそのデータを合体させれば有利である。事前取出しとは、実際にデータの要求が出される前にそのデータを取り出すことを意味する。一般に、あるデータが事前に取り出されるものとして選択されるのは、そのデータが、実際にアクセスされているデータの次のデータであるからである。合体は、メモリ・バス上に転送できる単位よりも小さな単位で入出力バスからデータが到着したときに使用される。たとえば、合体は、キャッシュ線よりも小さなブロックに使用することができる。キャッシュ線全体をメモリ・バスを介してメモリに転送する前に、入出力バスから受け取られたブロックをキャッシュ線内で合体させることによって、データ転送はより効果的になる。データが順次に記憶されないとき、そのような事前取出しおよび合体はシステム性能を阻害する恐れがある。
【００１２】
システム・キャッシュ中の対応するデータをすべて無効化すると、データ・トランザクションに関して有利であることがある。書込み時にデータを更新し、あるいは読取り時にキャッシュ・データをクレンズすることが好ましいこともある。さらに、データがキャッシュ線境界上で整列するシステムの場合、その整列に依存する「高速」ＤＭＡを実行することができる。しかし、データがキャッシュ線上で整列しないシステムの場合、より低速の「安全な」ＤＭＡを実行する必要がある。
【００１３】
【発明が解決しようとする課題】
入出力アダプタが、計算システム内での多数の異なる使用法が容易になるように設計されているとき、入出力アダプタは、各使用法に関して、およびすべてのタイプのデータ・トランザクションを実行する際に、最適に動作することが望ましい。しかしそのような使い勝手のよい入出力アダプタは、従来技術にはない。
本発明はかかる使い勝手のよい入出力アダプタを提供することにある。
【００１４】
【課題を解決するための手段】
本発明の好ましい実施例によれば、メイン・メモリと入出力アダプタとを含む計算システムが提供される。入出力アダプタは、変換マップにアクセスする。変換マップの項目は、入出力ページ番号をメモリ・アドレス・ページ番号にマップする。変換マップの項目は、各項目がメイン・メモリ中のデータ・ページのアドレスとトランザクション構成情報とを含むように生成される。トランザクション構成情報は、実行を最適化するために、データ・ページとの間のデータ・トランザクション中に入出力アダプタによって使用される。
【００１５】
たとえば、各項目ごとのトランザクション構成情報は、そのデータ・ページ内のデータが順次データであるかどうかを示すインディケータを含む。入出力アダプタがデータ・ページとのトランザクションを実行する前に、このインディケータが検査され、そのデータ・ページ内のデータが順次データであるかどうかが判定される。そのデータ・ページ内のデータが順次データであると判定されると、そのデータ・ページからのデータのデータ読取り時に入出力アダプタ内への追加データの事前取込みが行われる。また、データ・ページへのデータのデータ書込み時に入出力アダプタによってキャッシュ線内でデータが合体される。
【００１６】
また、各項目ごとのトランザクション構成情報は、キャッシュ中の対応するデータが、メイン・メモリ中のデータ・ページからのデータを読み取り、あるいは前記データ・ページにデータを書き込んだ後に無効化すべきかどうかを示すインディケータを含むことができる。入出力アダプタがデータ・ページに対するデータ・トランザクションを実行する前に、このインディケータを検査して、入出力アダプタがメイン・メモリ中のデータ・ページにデータを書き込んだ後にキャッシュ中の対応するデータを無効化すべきかどうか判定する。入出力アダプタがメイン・メモリ中のデータ・ページにデータを書き込んだ後にキャッシュ中の対応するデータを無効化すべきであると判定されると、キャッシュ中の対応するデータは、データ・ページへのデータのデータ書込み時に無効化される。入出力アダプタがメイン・メモリ中のデータ・ページにデータを書き込んだ後にキャッシュを無効化すべきでないと判定されると、キャッシュ中の対応するデータはデータ・ページへのデータのデータ書込み時に更新される。また、キャッシュ中の対応するデータは、データ・ページからのデータの読取り時にキャッシュからクレンズされる。
【００１７】
各項目ごとのトランザクション構成情報は、データ・ページ内のデータがキャッシュ線境界に沿って整列するかどうかを示すインディケータを含むことができる。入出力アダプタがデータ・ページとのＤＭＡデータ・トランザクションを実行する前に、このインディケータが検査され、そのデータ・ページ内のデータがキャッシュ線境界に沿って整列するかどうか（すなわち、キャッシュ線を一つのデータ・ブロックで占めるかどうか）が判定される。この整列には、ソフトウェアが各バッファの端部を次のキャッシュ線境界まで「パッド」するケースも含まれる。そのデータ・ページ内のデータがキャッシュ線境界に沿って整列すると判定されると、高速ＤＭＡトランザクションが実行される。そのデータ・ページ内のデータがキャッシュ線境界に沿って整列しないと判定されると、安全ＤＭＡトランザクションが実行される。たとえば、メモリ中の第１アドレスへのデータ・ブロックの高速ＤＭＡ書込みを実行するときは、完全なキャッシュ線のためのデータがない場合でも（上述のようにキャッシュ線境界までパッドで埋めてキャッシュ線に一つのデータ・ブロックだけが含まれる状態とし、一つのキャッシュ線全体について）、書込み無効化または書込み更新が実行される。
【００１８】
安全ＤＭＡを実行するときは、第１アドレスの古いデータを含む完全なキャッシュ線が、入出力アダプタによって読み取られ、古いデータをそのデータ・ブロックで置き換えることによって修正され、次いでメモリおよび（ある種の実施例では）キャッシュに書き込み直される。安全ＤＭＡでは、古いデータと共にキャッシュ線中に存在する可能性がある「ダーティ」情報の破壊が防止される。高速ＤＭＡでは、データがキャッシュ線境界に沿って整列するので（すなわち、データ・ブロックがキャッシュ線全体を占め、保存すべき他のデータはないので）、そのようなダーティ情報はない。
【００１９】
各項目ごとのトランザクション構成情報は、入出力アダプタが、メイン・メモリ中のデータ・ページからデータを読み取るときと、メイン・メモリ中のデータ・ページにデータを書き込むときに、メイン・メモリとの他のトランザクションをロック・アウトするかどうかを示すインディケータを含むこともできる。入出力アダプタがデータ・ページとのデータ・トランザクションを実行する前に、このインディケータが検査され、入出力アダプタが、メイン・メモリ中のデータ・ページからデータを読み取るときと、メイン・メモリ中のデータ・ページにデータを書き込むときに、メイン・メモリとの他のトランザクションをロック・アウトするかどうかが判定される。入出力アダプタが、メイン・メモリ中のデータ・ページからデータを読み取るときと、メイン・メモリ中のデータ・ページにデータを書き込むときに、メイン・メモリとの他のトランザクションをロック・アウトすると判定されると、入出力アダプタが、メイン・メモリ中のデータ・ページからデータを読み取るときと、メイン・メモリ中のデータ・ページにデータを書き込むとき、メイン・メモリとの他のトランザクションはロック・アウトされる。入出力アダプタは、ロックされていないトランザクションに出会うまで、追加ロック・トランザクションを実行する間、メイン・メモリとのトランザクションをロック・アウトし続けることができる。
【００２０】
【作用】
本発明の好ましい実施例により、各ページ・アドレスごとの項目を含む変換マップにインディケータを記憶することによって各メモリ・ページごとのデータ・トランザクションを構成することができる。これによって入出力アダプタとメモリの間で効率的なデータ転送が行われる。
【００２１】
【実施例】
図１は、コンピュータ・システムの概略ブロック図を示す。プロセッサ１０、プロセッサ１１、およびメモリ１２は、メモリ・バス９に接続されるものとして示されている。プロセッサ１０は、データ・キャッシュ１７を使用する。プロセッサ１１は、データ・キャッシュ１８を使用する。メモリ・バス９には、入出力（Ｉ／Ｏ）アダプタ１３も接続されている。入出力アダプタ１３は、入出力バス１４に接続されている。入出力バス１４には入出力装置１５および入出力装置１６も接続されている。変換マップ１９は、入出力バス１４に使用されるアドレスを、メモリによって使用されるアドレスに変換するために使用される。
【００２２】
図２は、本発明の好ましい実施例による変換マップ１９の実施態様を示す。変換マップ１９は、入出力バス・アドレス２１をメモリ・アドレス２３に変換するために使用される。
【００２３】
好ましい実施例では、変換時に、入出力ページ・アドレスを使用して、変換マップ１９内の対応するメモリ・ページにアクセスされる。図２に示した実施例では、入出力ページ番号は変換マップ１９へのインデックスとして使用される。入出力アドレス・オフセットは、メモリ・アドレス・オフセットと同じものである。たとえば、好ましい実施例では、入出力バス１４はそれぞれ、２０ビット入出力ページ番号と１２ビット・オフセットとを有する３２ビット・アドレスを使用する。メモリ・バス９は、それぞれ、２８ビット・メモリ・ページ番号と１２ビット・オフセットとを有する、４０ビット・アドレスを使用する。
【００２４】
好ましい実施例では、変換マップ１９は、各メモリ・ページごとに、コヒーレンス・インデックスも含む。コヒーレンス・インデックスは、仮想アドレスから導かれる部分であり、プロセッサ１０内のキャッシュ１７およびプロセッサ１１内のキャッシュ１８にインデックス付けするために使用される。コヒーレンス・インデックスがメモリ・アクセス・トランザクションの一部として渡されると、それによって、プロセッサ１０および１１は、それぞれ、キャッシュ１７および１８中の情報にコヒーレンシ矛盾がないかどうかを容易に探すことができる。プロセッサ１０またはプロセッサ１１上で動作するオペレーティング・システム・ソフトウェアは、入出力アダプタ１３によってアクセスされる変換マップ１９にアドレス変換情報をロードする。この情報には、コヒーレンス・インデックスと、以下で説明するその他のフィールドが含まれる。
【００２５】
図３は、本発明の好ましい実施例による変換マップ１９中の項目３０のフォーマットを示す。項目３０のページ・フィールド３１は、メモリ１２中のアドレスの物理ページ番号の４０ビットを含む。項目３０のコヒーレンス・インデックス（ＣＩ）フィールド３２は、メモリ１２中のアドレスの物理ページ番号の１２ビット・コヒーレンシ・インデックスを含む。キャッシュ制御ヒント（ＣＣ）フィールド３５は、２ビットのキャッシュ制御ヒントを含む。ページ・タイプ（ＰＴ）フィールド３７は、２ビットのページ・タイプを含む。有効インディケータ（Ｖ）フィールド３８は、１ビット有効インディケータを含む。キャッシュ制御ヒント・フィールド３５およびページ・タイプ・フィールド３７中の各ビットは、入出力アダプタ１３とメモリ１２の間のデータ・トランザクションのページごとの「構成」を提示するインディケータとして働く。
【００２６】
ページ・タイプ（ＰＴ）フィールド３７中の第１のビットは、ロッキングがイネーブルされているかどうかを示す。ロッキングがイネーブルされている場合、入出力装置１５や入出力装置１６など、入出力バス１４に接続された入出力装置は、数トランザクション間だけメイン・メモリ１２をロックしてアトミック・シーケンスを実行することができる。ロッキングは、入出力バス１４、または入出力バス１４に接続された他の入出力バスがメモリ・トランザクション中にロッキングを必要とするときに必要とされることがある。しかし、メモリをロックすると、システム性能が低下し、したがって、ロッキングは、その機能を必要とするページ上でしかイネーブルされない。プロセッサ１０またはプロセッサ１１上で動作するオペレーティング・システム・ソフトウェアは、入出力アダプタ１３内の変換マップ１９にアドレス変換情報をロードする際、対応するページ用のロッキングがイネーブルされているかどうかを示す値をページ・タイプ・フィールド３７に置く。
【００２７】
図４は、ページ・タイプ・フィールド３７中のロッキング・ビットがどのようにデータ・トランザクションに対する入出力アダプタ１３の動作に影響を及ぼすかを示す。入出力アダプタ１３は、データ・トランザクションを実行するとき、ステップ４１およびステップ４２で、ページ・タイプ・フィールド３７を検査して、ページ・タイプ・フィールドの第１のビットがロッキングを示す論理１にセットされているかどうかを判定する。そのページがロックされていない場合、ステップ４６で、データ・トランザクションが実行される。そのページがロックされている場合、ステップ４３で入出力アダプタ１３はメモリ１２とのトランザクションをロック・アウトする。ステップ４４で、次のデータ・トランザクションが、ロックされていないデータ・トランザクションであることを入出力アダプタ１３が検出するまで、ロックされたデータ・トランザクションが実行される。入出力アダプタ１３は、次のデータ・トランザクションが、ロックされていないデータ・トランザクションであることを検出すると、ステップ４５に進む。ステップ４５で、入出力アダプタ１３はメモリ１２とのトランザクションをロック解除する。
【００２８】
ページ・タイプ（ＰＴ）フィールド３７中の第２ビットは、どんなタイプの直接メモリ・アクセス（ＤＭＡ）トランザクションを使用すべきかを示す。ページ・タイプ・フィールド３７中の第２ビットの第１の値の場合、ＤＭＡタイプは「高速」である。高速ＤＭＡタイプの場合、入出力アダプタ１３は、ソフトウェアが各バッファの端部を次のキャッシュ線境界まで「パッド」するケースを含め、そのページ入出力アクセスのためのデータがキャッシュ線境界上で整列するとみなす。ページ・タイプ・フィールド３７中の第２ビットの第２の値の場合、ＤＭＡタイプは「安全」である。安全ＤＭＡタイプの場合、入出力アダプタ１３は、そのページの入出力アクセスのためのデータがキャッシュ線境界上で整列しないとみなす。たとえば、メモリ中の第１アドレスへのデータ・ブロックの高速ＤＭＡ書込みを実行するときは、第１のアドレスの古いデータを含む完全なキャッシュ線上で書込み無効化または書込み更新が行われる。安全ＤＭＡを実行するときには、第１のアドレスの古いデータを含む完全なキャッシュ線が入出力アダプタによって読み取られ、古いデータをそのデータ・ブロックで置き換えることによって修正され、次いでメモリおよび（ある種の実施例では）キャッシュに書き込まれる。安全ＤＭＡによって、古いデータと共にキャッシュ線中に存在する可能性がある「ダーティ」情報の破壊が防止される。高速ＤＭＡでは、データがキャッシュ線境界に沿って整列するので、そのようなダーティ情報はない。
【００２９】
図５は、ページ・タイプ・フィールド３７中の第２ビットがどのように、データ・トランザクションに対する入出力アダプタ１３の実行に影響を及ぼすかを示す。入出力アダプタ１３は、データ・トランザクションを実行する時、ステップ５１およびステップ５２で、ページ・タイプ・フィールド３７を検査して、ページ・タイプ・フィールド３７の第２ビットがクリアされて、高速ＤＭＡを実行すべきであることを示す論理ゼロになっているかどうかを判定する。高速ＤＭＡが示されている場合、ステップ５３で、高速ＤＭＡトランザクションが実行される。安全ＤＭＡが示されている場合、ステップ５４で、安全ＤＭＡトランザクションが実行される。
【００３０】
以下の表１は、ページ・タイプ・フィールド３７によって示されるページ・タイプを要約したものである。
【００３１】
【表１】
0004136001.tif 000002
【００３２】
キャッシュ制御ヒント（ＣＣ）フィールド３５中の第１ビットは、そのページが順次データを含むか、それとも非順次データを含むかを示す。そのページが順次データを含むとき、アクセスは単調に増加する。したがって、入出力アダプタ１３がデータをメモリ１２から読み取り、そのデータを入出力バス１４に送るときに、追加データをメモリ１２から事前に取り出しておくことによってシステム性能が向上する。同様に、キャッシュ制御ヒント・フィールド３５が、あるページが順次データを含むことを示すとき、入出力アダプタ１３は、入出力バス１４からデータを受け取ってメモリ１２に書き込む際、入出力バス１４からのデータをメモリ１２に書き込む前にそのデータを完全なキャッシュ線内で合体させる。
【００３３】
図６は、キャッシュ制御ヒント・フィールド３５中の第１ビットがどのように、データ・トランザクションに対する入出力アダプタ１３の実行に影響を及ぼすかを示す。入出力アダプタ１３は、データ・トランザクションを実行するとき、ステップ６２で、キャッシュ制御ヒント・フィールド３５を検査して、キャッシュ制御ヒント・フィールド３５の第１ビットが、データが順次データあることを示す論理１にセットされているかどうかを判定する。そのページが順次ページでない場合、ステップ６５で、データ・トランザクションが実行される。そのデータが順次データである場合、ステップ６３で、入出力アダプタ１３は、事前取出し（メモリ１２からのデータ読取りの場合）または合体（メモリ１２にデータを書き込む場合）をイネーブルする。ステップ６４で、データ・トランザクションが実行される。
【００３４】
キャッシュ制御ヒント・フィールド３５中の第２ビットは、入出力アダプタがメモリ１２との間でデータを移動するとき、キャッシュ１７やキャッシュ１８などプロセッサ・キャッシュでデータをどのように処理すべきであるかを示す。キャッシュ項目を無効化すべきであることをキャッシュ制御ヒント・フィールド３５が示すページの場合、入出力アダプタがメモリ１２からデータを読み取るとき、またはメモリ１２にデータを書き込むときに必ず、キャッシュ１７およびキャッシュ１８中の対応する項目が無効化される。
【００３５】
キャッシュ項目をクレンズ／更新すべきであることをキャッシュ制御ヒント（ＣＣ）フィールド３５中の第２ビットが示すページの場合、入出力アダプタがメモリ１２からデータを読み取るときに必ず、キャッシュ１７およびキャッシュ１８中の対応する項目がクレンズされ、入出力アダプタがメモリ１２にデータを書き込むときに必ず、キャッシュ１７およびキャッシュ１８中の対応する項目が更新される。キャッシュ中の「ダーティ」データは、メモリ１２へのデータのコヒーレント転送を実行することによってクレンズされる。
【００３６】
本発明の他の好ましい実施例では、第２キャッシュ制御ヒント・ビットは入出力アダプタによって無視される。この実施例では、入出力アダプタがメモリ１２との間でデータを移動するとき、キャッシュ項目を無効化し、あるいはクレンズ／更新し、あるいはこれらの動作を任意に組み合わせることによって、プロセッサ・キャッシュ中でデータを処理することができる。たとえば、クリーンとマーク付けされた（すなわち、ダーティとマーク付けされていない）キャッシュ線からの読取りの場合、そのページ用のキャッシュ制御ヒント・フィールド３５中の第２ビットが、キャッシュ項目を無効化すべきであることを示す場合でも、キャッシュ線は無効化されない。
【００３７】
図７は、キャッシュ制御ヒント・フィールド３５中の第２ビットがどのように、データ・トランザクションに対する入出力アダプタ１３の実行に影響を及ぼすかを示す。入出力アダプタ１３は、データ・トランザクションを実行するとき、ステップ７１およびステップ７２で、キャッシュ制御ヒント・フィールド３５を検査して、ページ・タイプ・フィールド３７の第２ビットがクリアされて、データ・キャッシュ中の項目を無効化すべきであることを示す論理ゼロになっているかどうかを判定する。データ・キャッシュ中の項目を無効化すべきである場合、ステップ７３で、データ・トランザクションが実行される。ステップ７４で、対応するキャッシュ項目が無効化される。そのデータを無効化すべきではないが、その代わりにクレンズ（入出力アダプタがメモリ１２からデータを読み取るとき）あるいは更新（入出力アダプタがメモリ１２にデータを書き込むとき）すべきである場合、ステップ７５で、データ・トランザクションが実行される。ステップ７４で、対応するキャッシュ項目が、クレンズ（入出力アダプタがメモリ１２からデータを読み取るとき）あるいは更新（入出力アダプタがメモリ１２にデータを書き込むとき）される。
【００３８】
表２は、キャッシュ制御ヒント・フィールド３５によって示されるキャッシュ制御ヒントを要約したものである。
【００３９】
【表２】
0004136001.tif 000003
【００４０】
前記の議論は、本発明の典型的な方法および実施例を開示して説明したものに過ぎない。当業者に理解されるように、本発明は、その趣旨からも基本的特性からも逸脱することなく他の特定の形で実施することができる。したがって、本発明の開示は、特許請求の範囲に記載された本発明の範囲を例示するものであり、制限するものではない。
【００４１】
以下、本発明の好適な実施態様を例示する。
１．  計算システムにおいて、
情報を転送するための相互接続手段と、
相互接続手段に結合されたメイン・メモリと、
変換マップ中の各項目が、メイン・メモリ中のデータ・ページのアドレスと、データ・ページとの間のデータ・トランザクション中に入出力アダプタによって使用されるトランザクション構成情報とを含む、入出力ページ番号をメモリ・アドレス・ページ番号にマップする変換マップにアクセスする、相互接続手段に結合された入出力アダプタと、
トランザクション構成情報を生成してトランザクション構成情報を変換マップに記憶するためのキャッシュ命令実行手段を含む、相互接続手段に結合されたプロセッサとを備えることを特徴とする計算システム。
【００４２】
２．  各項目ごとのトランザクション構成情報が、データ・ページ内のデータが順次データであるかどうを示すインディケータを含むことを特徴とする上記１に記載の計算システム。
【００４３】
３．  各項目ごとのトランザクション構成情報が、入出力アダプタがメイン・メモリ中のデータ・ページにデータを書き込んだ後にキャッシュ中の対応するデータを無効化すべきであるかどうかを示すインディケータを含むことを特徴とする上記１に記載の計算システム。
【００４４】
４．  各項目ごとのトランザクション構成情報が、データ・ページ内のデータがキャッシュ線境界に沿って整列しているかどうかを示すインディケータを含むことを特徴とする上記１に記載の計算システム。
【００４５】
５．  各項目ごとのトランザクション構成情報が、入出力アダプタが、メイン・メモリ中のデータ・ページからデータを読み取るときと、メイン・メモリ中のデータ・ページにデータを書き込むときに、メイン・メモリとの他のトランザクションをロック・アウトするかどうかを示すインディケータを含むことを特徴とする上記１に記載の計算システム。
【００４６】
６．  メイン・メモリと、入出力ページ番号をメモリ・アドレス・ページ番号にマップする変換マップにアクセスできる入出力アダプタとを含む計算システムにおける、コンピュータが実施する方法において、
（ａ）メイン・メモリ中のデータ・ページのアドレスと、データ・ページとの間のデータ・トランザクション中に入出力アダプタによって使用されるトランザクション構成情報とを含む、変換マップ中の各項目を生成するステップを含むことを特徴とする方法。
【００４７】
７．  ステップ（ａ）で、各項目ごとのトランザクション情報が、データ・ページ内のデータが順次データであるかどうかを示すインディケータを含むことを特徴とする上記６に記載の方法。
【００４８】
８．  （ｂ）入出力アダプタがデータ・ページとのデータ・トランザクションを実行する前に、データ・ページ内のデータが順次データであるかどうかを判定するためのインディケータを検査するステップと、  （ｃ）ステップ（ｂ）で、そのデータ・ページが順次データ・ページであると判定されたとき、
（ｃ．１）データ・ページへのデータのデータ書込み時に、入出力アダプタによってデータをキャッシュ線内で合体させるサブステップと、
（ｃ．２）データ・ページからのデータのデータ読取り時に、事前に入出力アダプタ内に追加データを取り込んでおくサブステップとを実行するステップも含むことを特徴とする上記７に記載の方法。
【００４９】
９．  ステップ（ａ）で、各項目ごとのトランザクション構成情報が、入出力アダプタがメイン・メモリ中のデータ・ページにデータを書き込んだ後にキャッシュ中の対応するデータを無効化すべきであるかどうかを示すインディケータを含むことを特徴とする上記６に記載の方法。
【００５０】
１０．  （ｂ）入出力アダプタがデータ・ページに対するデータ・トランザクションを実行する前に、インディケータを検査して、入出力アダプタがメイン・メモリ中のデータ・ページにデータを書き込んだ後にキャッシュ中の対応するデータを無効化すべきであるかどうかを判定するステップと、
（ｃ）ステップ（ｂ）で、入出力アダプタがメイン・メモリ中のデータ・ページにデータを書き込んだ後に、キャッシュ中の対応するデータを無効化すべきであると判定されたとき、
（ｃ．１）データ・ページへのデータのデータ書込み時に、キャッシュ中の対応するデータを無効化するサブステップを実行するステップと、  （ｄ）ステップ（ｂ）で、入出力アダプタがメイン・メモリ中のデータ・ページにデータを書き込んだ後に、キャッシュ中の対応するデータは無効化すべきでないと判定されたとき、
（ｄ．１）データ・ページへのデータのデータ書込み時に、キャッシュ中の対応するデータを更新するサブステップと、
（ｄ．２）データ・ページからのデータのデータ読取り時に、キャッシュ中の対応するデータをクレンズするサブステップとを実行するステップとをさらに含むことを特徴とする上記９に記載の方法。
【００５１】
１１．  ステップ（ａ）で、各項目ごとのトランザクション構成情報が、データ・ページ内のデータがキャッシュ線境界に沿って整列しているかどうかを示すインディケータを含むことを特徴とする上記６に記載の方法。
【００５２】
１２．  （ｂ）入出力アダプタがデータ・ページとのＤＭＡデータ・トランザクションを実行する前に、データ・ページ内のデータがキャッシュ線境界に沿って整列しているかどうかを判定するためのインディケータを検査するステップと、
（ｃ）ステップ（ｂ）で、データ・ページ内のデータがキャッシュ線境界に沿って整列していると判定されたときに、高速ＤＭＡトランザクションを実行するステップと、
（ｄ）ステップ（ｂ）で、データ・ページ内のデータがキャッシュ線境界に沿って整列していないと判定されたときに、安全ＤＭＡトランザクションを実行するステップとを含むことを特徴とする上記１１に記載の方法。
【００５３】
１３．  ステップ（ａ）で、各項目ごとのトランザクション構成情報が、入出力アダプタが、メイン・メモリ中のデータ・ページからデータを読み取るときと、メイン・メモリ中のデータ・ページにデータを書き込むときに、メイン・メモリとの他のトランザクションをロック・アウトするかどうかを示すインディケータを含むことを特徴とする上記６に記載の方法。
【００５４】
１４．  （ｂ）入出力アダプタが、データ・ページとのデータ・トランザクションを実行する前に、入出力アダプタが、メイン・メモリ中のデータ・ページからデータを読み取るときと、メイン・メモリ中のデータ・ページにデータを書き込むときに、メイン・メモリとの他のトランザクションをロック・アウトするかどうかを判定するためのインディケータを検査するステップと、
（ｃ）ステップ（ｂ）で、入出力アダプタが、メイン・メモリ中のデータ・ページからデータを読み取るときと、メイン・メモリ中のデータ・ページにデータを書き込むときに、メイン・メモリとの他のトランザクションをロック・アウトすると判定されたときに、入出力アダプタが、メイン・メモリ中のデータ・ページからデータを読み取るときと、メイン・メモリ中のデータ・ページにデータを書き込むときに、メイン・メモリとの他のトランザクションをロック・アウトするステップも含むことを特徴とする上記１３に記載の方法。
【００５５】
【発明の効果】
以上の説明のように、本発明によれば、各ページ・アドレスごとの項目を含む変換マップにインディケータを記憶することによって各メモリ・ページごとのデータ・トランザクションを構成することができ、これによって入出力アダプタとメモリの間で効率的なデータ転送が行われるようになる。
【図面の簡単な説明】
【図１】本発明の好ましい実施例による入出力（Ｉ／Ｏ）アダプタを含むコンピュータ・システムの概略ブロック図を示す。
【図２】本発明の好ましい実施例による、図１に示した入出力アダプタによってアクセスされる変換マップの実施態様を示す図である。
【図３】本発明の好ましい実施例による、図２に示した変換マップ中の項目のフォーマットを示す図である。
【図４】変換マップ中のロッキング・インディケータが、本発明の好ましい実施例によるデータ・トランザクション中にどのように入出力アダプタの実行に影響を及ぼすかを示すフローチャートである。
【図５】変換マップ中のＤＭＡタイプ・インディケータが、本発明の好ましい実施例によるデータ・トランザクション中にどのように入出力アダプタの実行に影響を及ぼすかを示すフローチャートである。
【図６】変換マップ中のデータ・タイプ・インディケータが、本発明の好ましい実施例によるデータ・トランザクション中にどのように入出力アダプタの実行に影響を及ぼすかを示すフローチャートである。
【図７】変換マップ中のキャッシュ制御インディケータが、本発明の好ましい実施例によるデータ・トランザクション中にどのように入出力アダプタの実行に影響を及ぼすかを示すフローチャートである。
【符号の説明】
９  メモリ・バス
１０  プロセッサ
１２  メモリ
１３  入出力アダプタ
１４  入出力バス
１７  データ・キャッシュ
１９  変換マップ
２１  入出力バス・アドレス
２３  メモリ・アドレス
３０  項目
３１  ページ・フィールド
３２  コヒーレンス・インデックス（ＣＩ）フィールド
３５  キャッシュ制御ヒント（ＣＣ）フィールド
３７  ページ・タイプ（ＰＴ）フィールド
３８  有効インディケータ（Ｖ）フィールド
【図１】
0004136001.tif 000004
【図２】
0004136001.tif 000005
【図３】
0004136001.tif 000006
【図４】
0004136001.tif 000007
【図５】
0004136001.tif 000008
【図６】
0004136001.tif 000009
【図７】
0004136001.tif 000010