(57)【特許請求の範囲】
【請求項１】
周辺装置とコンピュータ・ネットワークとの間のインタフェースにおける共用メモリの競合を削減する装置であって、当該インタフェースは、パケットデータが当該インタフェースを介して当該共用メモリへ順次伝送されるようにデータ転送プロトコルを実施し、当該パケットの制御メカニズムは、共用メモリの所定の場所に常駐し、
共用メモリと、共用メモリ・アービトレータと、前記周辺装置と前記共用メモリ・アービトレータの間に置かれ、当該パケットデータに関する読取りオペレーションにおいて次に要求されるデータを先取りする先取りモジュールとを備え、
当該先取りモジュールは、周辺装置共用メモリ要求を処理するアクセス状態マシーンと、少なくとも１つの先取りアドレス・レジスタと、少なくとも１つの有効フラグを有する少なくとも１つの先取りバッファと、先取りフェンス・レジスタと、を備える装置。
【請求項２】
前記共用メモリが、ページ・モード・ダイナミックＲＡＭ（ＤＲＡＭ）アレイをさらに備える、請求項１に記載の装置。
【請求項３】
前記アクセス状態マシーンが、前記共用メモリをアクセスするために、バイト書込み、バイト読取り、及びロング・ワード読取りモードのいずれかを使用する、請求項１に記載の装置。
【請求項４】
共用メモリ要求が書込要求であるならば、前記アクセス状態マシーンが、前記共用メモリ・アービトレータから前記共用メモリへ１バイト書込みを要求し、前記アクセス状態マシーンが肯定応答を出す、請求項１に記載の装置。
【請求項５】
前記共用メモリ要求が読取りオペレーションであり、要求された共用メモリ・アドレスが先取りアドレス・フェンス・レジスタより下位にあるならば、前記アクセス状態マシーンが前記共用メモリ・アービトレータからの１バイト読取りを要求する、請求項１に記載の装置。
【請求項６】
要求された共用メモリ・アドレスが先取りアドレス・フェンス・レジスタより上位にあり、ワード・アラインされた前記メモリ・アドレスが先取りアドレス・レジスタ０（ＰＡＲ０）又は先取りアドレス・レジスタ１（ＰＡＲ１）とマッチしないならば、前記アクセス状態マシーンが、前記共用メモリ・アービトレータから単一ロング・ワード読取りを要求する、請求項１に記載の装置。
【請求項７】
周辺装置とコンピュータ・ネットワークとの間のインタフェースにおける共用メモリの競合を削減する方法であって、当該インタフェースは、パケットデータが当該インタフェースを介して当該共用メモリへ順次伝送されるようにデータ転送プロトコルを実施し、当該パケットの制御メカニズムは、共用メモリの所定の場所に常駐し、当該方法は、
共用メモリにデータを記憶するステップと、
当該共用メモリにおいて次に要求されるデータを先取りするステップと、を含み、
当該先取りオペレーションは、共用メモリ競合の可能性を削減し、当該共用メモリに関する周辺装置読取りオペレーションのメモリ・アクセス時間を削減し、当該先取りステップは、
周辺装置共用メモリ要求を処理するアクセス状態マシーンと、少なくとも１つの先取りアドレス・レジスタと、少なくとも１つの有効フラグを有する少なくとも１つの先取りバッファと、先取りフェンス・レジスタと、を備える当該先取りモジュールによって行われる方法。
【請求項８】
バイト書込み、バイト読取り、及びロング・ワード読取りモードのいずれかにより、前記共用メモリにアクセスするステップをさらに含む請求項７に記載の方法。
【請求項９】
前記アクセス状態マシーンが、共用メモリ・アービトレータから前記共用メモリへ１バイト書込みを要求するステップと、前記共用メモリ要求が書込要求であるならば、前記アクセス状態マシーンが肯定応答を出すステップと、をさらに含む請求項７に記載の方法。
【請求項１０】
前記共用メモリ要求が読取りオペレーションであり、要求された共用メモリ・アドレスが先取りアドレス・フェンス・レジスタより下位にあるならば、前記アクセス状態マシーンが前記共用メモリ・アービトレータからの１バイト読取りを要求するステップをさらに含む請求項７に記載の方法。
【請求項１１】
周辺装置とＩ／Ｏカード装置との間のＭＩＯデータ転送プロトコルを実施するインタフェースにおける共用メモリの競合を削減する方法であって、
共用メモリにデータを順次記憶するステップと、
プログラマブル・レジスタに、先取りオペレーションが開始する、所定の数Ｎを加えた共用メモリ・アドレスを記憶するステップと、
当該プログラマブル・レジスタのアドレスよりも大きい、共用メモリ・アドレスを有する、どのような周辺装置読取り要求に対しても、当該共用メモリにおいて、次に要求されるデータを先取りするステップと、を含み、
当該先取りステップは、
周辺装置共用メモリ要求を処理するアクセス状態マシーンと、少なくとも１つの先取りアドレス・レジスタと、少なくとも１つの有効フラグを有する少なくとも１つの先取りバッファと、先取りフェンス・レジスタと、を備える先取りモジュールによって行われる方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ・ネットワークに関連する。特に、本発明は、周辺装置とコンピュータ・ネットワークのインターフェースとなるＩ／Ｏ機能を持っているコンピュータの共用メモリ方式に関する。
【０００２】
【従来の技術】
モジュール式のＩ／Ｏ（「ＭＩＯ」）インターフェースは、プリンタのような、周辺装置とコンピュータＩ／Ｏカードの間のインターフェースである。ＭＩＯは、ヒューレット・パッカード社によって開発された（米国特許第5,197,128号）。
【０００３】
Ｉ／Ｏカードの上に定常的に置かれる共用メモリを介して、周辺装置とＩ／Ｏカードは通信する。Ｉ／Ｏカード上に置かれたメモリ・アービトレータは、周辺装置とＩ／Ｏカード間の共用メモリの配置を管理する。Ｉ／Ｏカードと周辺装置間の、データ転送を速める提案が、いろいろなされている。例えば、米国特許第5,412,782号には、プログラムＩ／ＯとＦＩＦＯバッファを通じてデータをホストと交換するローカル・エリア・ネットワーク・システムのためのイーサネット・アダプタが記載されている。プログラムＩ／Ｏバッファがフルであるとき、プログラムＩ／Ｏは着信パケットが直接ホスト・メモリにコピーされることを許可するＤＭＡリング・バッファ・バックアップを備える。少量のパケットがネットワークから受け取られたとき、アダプタは早い受取り割り込みを生成するようにプログラムされる（それによって待ち時間が低下する）場合がある。また、アダプタは、パケット終了の受信を重複ぢきるようにホストに大量のパケットをコピーすることを許可する第２の初期割込を生成するようにプログラムされる場合がある。パケットがホストからアダプタに完全に送信される前に、アダプタはパケット通信を開始するように（それによってさらに、待ち時間を損なって）プログラムされる場合がある。
【０００４】
米国特許第5,434,872号には、ホスト・コンピュータによって送信バッファに組み立てられたデータのフレームを送信するために専用の送信バッファとロジックを含むネットワーク・インターフェースの中で、データ送信を早く開始するためのシステムが記載されている。ホストによって送信バッファにダウンロードされるフレームのデータ量は、送信データ・バッファ中のフレーム常駐のデータ量の閾値を決定するためにモニタされる。フレームの全てのデータを送信バッファに送信することに先立って、フレームの十分な量が送信バッファの中に常駐してることを閾値が示すとき、ネットワーク・インターフェース・コントローラはフレームの送信を始めるロジックを含む。モニタリング・ロジックには、与えられた設定値にパフォーマンスを最適化するホスト・システムで閾値セットを記憶するホスト・コンピュータによって、プログラム可能な閾値記憶装置が含まれる。
【０００５】
米国特許第5,307,459号には、完了したデータ・フレーム送信の最適化された指示信号を供給することによってホスト・プロセッサ割込待ち時間を減らすネットワーク・アダプタが記載されている。ネットワーク・アダプタは、ネットワークとバッファ間でデータ・フレームを送信するためのネットワーク・インタフェース・ロジックと、バッファ・メモリとホスト・システム間でデータ・フレームを送信するためのホスト・インタフェース・ロジックとを含む。更に、ネットワーク・アダプタは、代替可能記憶域に記憶された閾値と、それによって初期指示信号を生成するデータ転送カウンタとを比較する閾値ロジックを含む。初期指示信号は、データ・フレームの送信が完了される前に、ホスト・プロセッサに送られる初期割込信号を生成するために使用される。
【０００６】
図１は、周辺装置にインターフェースを供給するＩ／Ｏカードを含むコンピュータの従来技術の共用メモリ方式のブロック構成図である。図１の中で示されるように、例えば、一般的にＩ／ＯカードＣＰＵ15aとＩ／ＯカードＬＡＮコントローラ16aと共用メモリ・アービトレータ13aとを含むＩ／Ｏカード12aに、周辺装置10が、Ｉ／Ｏカード設計では既知のＭＩＯインタフェース11aを介して、直接インタフェースされる。この構成は、共用メモリ中で競合を生じる周辺要求毎に、共用メモリ14aとの仲介を行うＩ／Ｏカード・メモリ・アービトレータを必要とする。したがって、Ｉ／Ｏカード肯定応答の受取に対する周辺装置要求の送信の遅延の量、すなわち、周辺装置がＩ／Ｏ共用メモリにデータを読み書きするための時間は、周辺装置とＩ／Ｏカードによって共用メモリに同時にアクセスする要求によって大きく変化する。
【０００７】
【発明が解決しようとする課題】
周辺読取要求からＩ／Ｏカード肯定応答への遅延量の最小限が、メモリ競合のない共用メモリ・アクセスのために必要である時間量によって決定する。
【０００８】
従って、本発明の目的は、そのような競合を排除するか軽減し、そして、それによって、周辺装置要求の送信と周辺読取書込データのためのＩ／Ｏカード肯定応答の受信の間の遅延量が減るように設計された、Ｉ／Ｏカードを提供することである。
【０００９】
更に、本発明の目的は、ヒューレット・パッカード社によって開発されたＭＩＯプロトコルのようなデータ転送プロトコルを実行するネットワーク周辺装置において、周辺装置要求の送信とＩ／Ｏカード肯定応答の受信の間の周辺読取データの遅延量を大幅に削減する、先取り（prefetch）オペレーションを提供することである。
【００１０】
【課題を解決するための手段】
先取りオペレーションは、周辺装置要求の送信とＩ／Ｏカード肯定応答の受信の間の周辺書込データの遅延量を常に縮めることにはならない。しかしながら、大部分のシステム環境、例えばネットワーク・プリンタで、Ｉ／Ｏカードは、ネットワークからのプリント・データ受け取って、プリンタにＩ／Ｏカード・インターフェースを介してプリント・データを送信する。この結果、周辺要求の過半数は、書込要求というよりはむしろ読取要求となる。従って、本発明により、読取要求のための遅延量が減少し、システム効率全体が改善されることとなる。ここで、ネットワーク・プリンタ環境で説明された先取りオペレーションの一つの利点は、Ｉ／Ｏカードからプリンタへプリント・データを送信するのに必要である時間が縮められ、次に、プリント・ジョブを処理するプリンタの要求時間が減少するということである。
【００１１】
周辺装置とＩ／Ｏカード間の通信プロトコルは、一般的にヘッダとバッファから成るパケット・データ構造に基づく。パケット・ヘッダは、バッファのスタート・アドレス、データ・レングス、及びＩ／Ｏカードと周辺装置間の情報送信のために使用されるパケット・バッファ・フィールドの最大データ・レングスを含む。パケット・ヘッダのデータ・レングス・フィールドは、有効なバッファ・データのバイト数を示す。パケット・バッファは、周辺装置とＩ／Ｏカード間でデータまたはメッセージを送信するために使用される。パケットは、Ｉ／Ｏカード・ソフトウェアによって割り当てられる。パケットのメモリ・アドレス・ブロックは、低位アドレスで始まって、高位アドレスに進行する順次構成である。
【００１２】
周辺装置とＩ／Ｏカード間のデータ転送速度は、周辺要求の送信と共用メモリ・アクセスのＩ／Ｏカード肯定応答の受信の間の遅延量によって決められる。例えば、周辺装置がプリンタかプロッタであるならば、パケットの過半数は、データ・パケットである。周辺装置要求の遅延をＩ／Ｏカード肯定応答時間まで縮めることによって、プリンタ・データ転送速度は増加する。
【００１３】
従来技術の方式では、周辺装置は、共用メモリを通じて各々のメモリ・アクセスでパケット・データの各々のバイトを読む。周辺装置メモリ・アクセスがＩ／Ｏカード・メモリ・アクセスと競合するならば、周辺装置要求とＩ／Ｏカード肯定応答時間の間の遅延の量は増加し、したがって、データ転送速度は低下する。
【００１４】
ここで記載した先取りオペレーションは、次に要求されるデータを先取りすることによって共用メモリの競合の可能性を減少する。パケットが順番に共用メモリにあるので、次のデータ要求が予測できる。共用メモリ競合の減少に加えて、データが先取りバッファから手に入るとき、ここで記載した先取りオペレーションは、周辺装置読取要求によるメモリ・アクセス時間を縮める。先取りバッファからの周辺装置読取要求によるアクセス時間は、共用メモリからの読取要求に比べて短い。
【００１５】
ここで記載された先取り技術により、Ｉ／Ｏカード中に、Ｉ／Ｏカード・インターフェースを通じてＩ／Ｏカードから周辺装置への読取データ転送速度を増すハードウェア拡張機能を供給する。周辺装置が、レーザ・プリンタやインクジェット・プロッタのような印刷装置である環境において、増加した読取データ転送速度は、Ｉ／Ｏカードと印刷装置によって、より速いプリント・ジョブの処理に変換される。
【００１６】
【発明の実施の形態】
ここで記述した先取り技術は、周辺装置読取要求の送信とその要求のＩ／Ｏカード肯定応答の受信の間の遅延の量を減少させるＩ／Ｏカードのハードウェア拡張機能を提供する。ここで、ネットワーク・プリンタのためのＭＩＯデータ先取り技術として実施の形態を記述するが、この先取り技術は、最適なＩ／Ｏプロトコルを使用する周辺装置と互換性を持つ。
【００１７】
図２は、本発明の共用メモリ方式のための先取り技術を実行するＩ／Ｏカードのブロック構成図である。図２において、先取り装置20は、周辺装置インターフェース11bと共用メモリ・アービトレータ13bの間に置かれている。ここで、本発明に関連するＩ／Ｏカード共用メモリ14bとして、ページ・モードを持つダイナミックＲＡＭ（ＤＲＡＭ）アレイが、使用される。
【００１８】
図３は、本発明の図２の共用メモリ方式のために先取り技術を実行するＩ／Ｏカードの詳細なブロック構成図である。図３の中で示されるように、先取り装置20には４つの主な構成要素がある。
１．アクセス状態マシーン32
２．先取りアドレス・レジスタ31
３．有効フラグを有する先取りバッファ35、36、37、38
４．先取りフェンス・レジスタ33
アクセス状態マシーン
アクセス状態マシーン32（ＡＳＭ）は、全ての周辺装置共用メモリ要求を処理することに対して責任を持つ。ＡＳＭは、共用メモリをアクセスするための３つのモード（即ち、バイト書込み、バイト読取り、及びロングワード読取り）のいずれかを使用する。３つのモードの各々を、以下に記述する。
【００１９】
共用メモリ要求が書込要求であるならば、ＡＳＭは共用メモリ・アービトレータ13bから共用メモリ14bに１バイト書込みを要求し、ＡＳＭがＩ／Ｏカード肯定応答を出す。
【００２０】
共用メモリ要求が読取オペレーションであり、要求された共用メモリ・アドレスが先取りアドレス・フェンス・レジスタ（ＰＡＦＲ）33より下位であるとき、ＡＳＭは共用メモリ・アービトレータから１バイト読取りを要求する。要求された共用メモリ・アドレスが、ＰＡＦＲより上位であり、ワード・アライン・アドレスが先取りアドレス・レジスタ０（ＰＡＲ０）又は先取りアドレス・レジスタ１（ＰＡＲ１）（図３の31）とマッチにしない場合、ＡＳＭは、要求されたアドレスの最上位１４のビットと２ビットの０とが連結したスタート・アドレスを有する共用メモリ・アービトレータから、単一ロング・ワード読取りを要求する（即ち、単一ロング・ワード読取要求アドレスは、連続した（アラインされた）ワードである）。単一ロング・ワード読取要求中に、データの各々のバイトが共用メモリからの読取られるとき、それは、図３中の35と37でそれぞれ示される最適なバンク０又はバンク１の先取りバッファの中に記憶される。更に、ＡＳＭは、それを記憶した先取りバッファ36、38の有効性を検査する。周辺要求データが有効な先取りバッファから利用可能であるとき、ＡＳＭはＩ／Ｏカード肯定応答を出す。
【００２１】
周辺装置読取り要求が、先取りバッファ36、38のバンク０（35）又はバンク１（37）の３番目のバイトからの読取りであるとき、ＡＳＭ32も、共用メモリ・アービトレータ13bから単一ロング・ワード読取りを要求する。この場合、ＡＳＭは周辺要求データを含まない先取りバッファのバンクを無効にする。ＡＳＭは、共用メモリ・アービトレータに対する単一ロング・ワード読取要求のために、現在の周辺アドレス＋２に等しいスタート・アドレス（即ち、次のワードを連続して並べた周辺アドレス）を生成する。データの各々のバイトが共用メモリからの読取りであるとき、ＡＳＭはバッファの有効性を検査する。
【００２２】
ここで記述した先取り技術の実行を単純化するために、キャッシュの様なデータ可干渉性（coherency）ハードウェアを供給することは、必要でない。むしろ、先取りオペレーションは、周辺装置が陳腐なデータを読取らないように保護する方法で、実行される。
【００２３】
最初に、先取りオペレーションは、先取りフェンス・レジスタ33（より詳細には他で論ずる）の使用によって、Ｉ／Ｏメールボックスから陳腐なデータを読取らないように周辺装置をプ保護する。
【００２４】
次に、周辺装置書込要求の間、データは直接共用メモリに書かれ、周辺アドレスの最上位14ビットがＰＡＲ０かＰＡＲ１と一致するならば、先取りバッファのバンクは無効にされる。
【００２５】
三番目に、周辺装置を不正確なパケット・ヘッダ・データの読取りから保護するために、周辺装置が周辺装置メールボックス・パケット・ポインタの最下位バイトを読むとき、ＡＳＭは先取りバッファの両方のバンクを無効にする。本発明の実施例において、周辺装置は、パケットのスタート・アドレスを得るために、周辺装置メールボックス・パケット・ポインタを読み出さなければならない。先取りアルゴリズム（以下に論じる）によって、ＡＳＭの詳細を説明する。
【００２６】
先取りアドレス・レジスタ
先取りアドレス・レジスタは、ＰＡＲ０とＰＡＲ１から成る。各々のレジスタは、１４ビット幅である。ＡＳＭは、先取りオペレーションの間、単一ロング・ワード（Single Long Word）読取要求アドレスの最上位１４ビットをＰＡＲ０又はＰＡＲ１に書き込む。
【００２７】
有効フラグ付先取りバッファ。
【００２８】
先取りバッファは、４バイトのバッファ35、37の２つのバンク（バンク０とバンク１で表わされる）から成る。バッファの各々のバイトは、データ・バイトが有効であるか否かを示すフラグを含む。バンク０の最初のバイトが、ワード・アラインされた周辺アドレス（即ち、ＰＡＲ０＋０）のデータを含み、バンク０の二番目のバイトが、ワード・アラインされた周辺アドレスに１を加えた（即ち、ＰＡＲ０＋１の）データを含み、バンク０の３番目のバイトが、ワード・アラインされた周辺アドレスに２を加えた（即ち、ＰＡＲ０＋２の）データを含み、そして、バンク０の４番目のバイトが、ワード・アラインされた周辺アドレスに３を加えた（即ち、ＰＡＲ０＋３の）データを含む。この方式は、正しい状態をバンク１のために保持するが、ワード・アラインされた周辺アドレスＰＡＲ１はＰＡＲ０の代わりに使用される。
【００２９】
先取りアドレス・フェンス・レジスタ
本発明の実施例において、先取りアドレス・フェンス・レジスタ（ＰＡＦＲ）33は、１６ビット幅のＩ／Ｏカード・プログラム可能レジスタである。
このレジスタは、先取りオペレーションが開始する共用メモリ・アドレス＋１を表す。したがって、ＰＡＦＲより大きい共用メモリ・アドレスを持つ周辺装置読取要求が、先取りされる。また、このレジスタは、先取りオペレーションを禁止するためにＡＳＭによって使用される。Ｉ／Ｏカードは、ＰＡＦＲレジスタに”ＦＦＦＦ”Ｈ（１６進数）を書くことによって、先取りオペレーションを禁止する。先取りオペレーションが共用メモリと先取りバッファ間でデータ可干渉を扱わないため、Ｉ／Ｏメールボックス（共用メモリ・アドレス”００００〜０００７”Ｈ）は、先取りのために割込み可能となっていない。Ｉ／Ｏカードは、Ｉ／Ｏメールボックスの先取りを禁止するために”０００７”Ｈ以上のアドレスでＰＡＦＲに書込まなければならない。
【００３０】
ページ・モードを有するダイナミック・ランダム・アクセス・メモリ
共用メモリの様なページ・モードを持つランダム・アクセス・メモリ（ＤＲＡＭ）の選択的な（オプショナル）使用が、先取りオペレーションのパフォーマンスを改善する。オペレーションのページ・モードを提供するＤＲＡＭは、同じ行の範囲内でメモリ・セルの高速ランダム・アクセスを可能とする特徴を含む。更に、４バイトのデータを読取るための１回のメモリ・アクセスは、従来技術Ｉ／Ｏカードと比較して、Ｉ／Ｏカードと周辺装置の間の共用メモリの競合を減少する。
【００３１】
先取りアルゴリズム
本発明のＭＩＯ実行のための先取りアルゴリズムの一部を以下の擬似コード・フォーマットに示す。
【００３２】
【表１】
if (MIO read request and (MIO_ADDR > MPFR)) then
begin
if ((MIO_ADDR[15:2]=MPAR0[13:0]) and (Bank 0 Buffer[MIO_ADDR[1:0]] Flag Valid) then
begin
1) Read data from Prefetch Bank 0 buffer[MIO_ADDR[1:0]] and acknowledge request.
2) if (MIO_ADDR[1:0]=2) then read 4 bytes into bank 1 buffers with starting address of MIO address+2;.
end
else if ((MIO_ADDR[15:2]=MPAR1 [13:0]) and (Bank 1 Buffer[MIO_ADDR[1:0]] Flag Valid)
then
begin
1) Read data from Prefetch Bank 1 buffer[MIO_ADDR[1:0]] and acknowledge request.
2) If (MIO_ADDR[1:0]=2) then read 4 bytes into bank 0 buffers with starting address of MIO address+2.
end
else begin
1) Read 4 bytes of data starting from concatenate address of MIO_ADDR[15:2] and 0 into last unused bank of buffers.
2) When requested read data is valid in prefetch buffer then acknowledge request.
end
end
else begin
if (MIO read request) then
begin
1) Read byte data from shared memory and acknowledge request.
2) if (MIO_ADDR = address of the Peripheral mailbox packet pointer least significant byte) then invalidate Bank 0 and Bank 1 buffers.
end
else /* write request */
begin
1) Write byte data to shared memory and acknowledge request.
2) If (MIO_ADDR[15:2] = MPAR0) then invalidate Bank 0 buffers.
3) If (MIO_ADDR[15:2] = MPAR1) then invalidate Bank 1 buffers.
end
end
【００３３】
先取りが有るものと無いもののＩ／Ｏカードの周辺読取遅延の比較
先取りオペレーションの無い周辺装置読取遅延の分析を以下に示す。この例は、アラインされたパケット・バッファ・ロング・ワードのスタート・アドレスを持つ８バイトのパケット・バッファ・データを使用する（即ち、スタート・アドレスの最下位の２ビットは、”００”である）。
【００３４】
前提条件は以下の通りである。
１．共用メモリの競合のないＩ／Ｏカード肯定応答の受取に対する周辺装置読取要求の送信からの遅延は、１Ｔである。
２．競合をもつ遅延は、２Ｔである。
３．周辺装置読取りの５０%は、Ｉ／Ｏカードと競合する。
【００３５】
各周辺読取要求に関連する順序と遅延を以下のテーブルに示す。
【００３６】
テーブル１．先取りの無い周辺読取要求
【００３７】
【表２】
0003748308.tif 000002
【００３８】
テーブル１（表２）で示されるように、パケット・バッファから８バイトを読み取る合計遅延時間は、１２Ｔであり、１バイト読取毎に平均１．５Ｔの遅延をもたらす。
【００３９】
以下は、上記と同じ構成と条件をもつ先取りオペレーションを有するＩ／Ｏカードの遅延の分析である。この例は、パケット・バッファのスタート・アドレスが先取りフェンス・レジスタより上位にあること、先取りハードウェアが先取りバッファの２つのバンクで構成されること、そして、共用メモリがページ・モードＤＲＡＭで実行されることを条件とする。
【００４０】
さらに、遅延計算を単純化するために、共用メモリからの４バイトの読取遅延は、周辺装置がＩ／Ｏカードから２バイトを読取るための時間より短いと仮定する。この前提は、共用メモリがページ・モードＤＲＡＭで実行され、先取り機能が割込み可能なとき、先取り状態マシーンが常に共用メモリから４バイトを読取る（即ち、ロング・ワード読取りの）ため、妥当なものである。更に、要求されたデータを先取りバッファから入手するとき、Ｉ／Ｏカード肯定応答の受信に対する周辺装置読取要求の送信からの遅延の量は、普通の遅れＴの５０%であると仮定する。
【００４１】
テーブル２．先取りを有する周辺読取要求
【００４２】
【表３】
0003748308.tif 000003
【００４３】
テーブル２（表３）は、先取りオペレーションを有する８バイト・パケット・バッファに読込む合計遅延時間が、４．５Ｔであることを示す。これは、１バイト読取毎に平均０．５６Ｔの遅延をもたらすことを示し、先取りオペレーションを使用しない読取りに比べて２８０％の改善となっている。
【００４４】
Ｉ／Ｏカード肯定応答の受取に対する周辺装置要求の送信からの遅延の量の改善のほうが、パケット・バッファを大きくすることよりも効果的であることが明らかである。
【００４５】
本願発明は、例として次の実施態様を含む。
（１）周辺装置とコンピュータ・ネットワークとをインタフェースする装置であって、共用メモリと、共用メモリ・アービトレータと、前記周辺装置と前記共用メモリ・アービトレータの間に置かれ、共用メモリの競合を削減する先取り手段と、を有する前記装置。
（２）前記共用メモリが、ページ・モード・ダイナミックＲＡＭ（ＤＲＡＭ）アレイである、（１）記載の装置。
（３）前記先取り手段が、周辺装置共用メモリ要求を処理するアクセス状態マシーンと、少くとも１つの先取りアドレス・レジスタと、少くとも１つの有効フラグを有する少くとも１つの先取りバッファと、先取りフェンス・レジスタと、を有する、（１）又は（２）記載の装置。
（４）前記アクセス状態マシーンが、前記共用メモリをアクセスするために、バイト書込み、バイト読取り、及びロング・ワード読取りモードのいずれかを使用する、（３）記載の装置。
（５）前記アクセス状態マシーンが、前記共用メモリ・アービトレータから前記共用メモリへ１バイト書込みを要求し、前記共用メモリ要求が書込要求であるならば、前記アクセス状態マシーンが肯定応答を出す、（３）又は（４）記載の装置。
【００４６】
（６）前記共用メモリ要求が読取りオペレーションならば、前記アクセス状態マシーンが前記共用メモリ・アービトレータからの１バイト読取りを要求し、要求された共用メモリ・アドレスが先取りアドレス・フェンス・レジスタより下位にある、（３）乃至（５）いずれか記載の装置。
（７）要求された共用メモリ・アドレスが先取りアドレス・フェンス・レジスタより上位にあり、ワード・アラインされた前記メモリ・アドレスが先取りアドレス・レジスタ０（ＰＡＲ０）又は先取りアドレス・レジスタ１（ＰＡＲ１）とマッチしないならば、前記アクセス状態マシーンが、前記共用メモリ・アービトレータから単一ロング・ワード読取りを要求する、（３）乃至（６）記載の装置。
（８）単一ロング・ワード読取要求の間、前記共用メモリから読取られるように、データの各々のバイトが、バンク０又はバンク１先取りバッファに記憶される、（７）記載の装置。
（９）前記共用メモリから読取られるデータの各々のバイトが前記先取りバッファに記憶されるように、前記アクセス状態マシーンが前記先取りバッファの有効性を検査する、（３）乃至（８）記載の装置。
（１０）周辺要求データが有効先取りバッファから入手されるとき、前記アクセス状態マシーンが肯定応答を出す、（３）乃至（９）記載の装置。
【００４７】
（１１）周辺装置読取要求が前記先取りバッファのバンク０バンク１の３番目のバイトからの読取りならば、前記アクセス状態マシーンが前記共用メモリ・アービトレータから単一ロング・ワード読取りを要求し、前記アクセス状態マシーンが周辺要求データを含まない前記先取りバッファのバンクを無効にする、（３）乃至（１０）記載の装置。
（１２）前記アクセス状態マシーンが、前記共用メモリ・アービトレータに単一ロング・ワード読取りを要求するために、現在の周辺アドレスに次のワード・アラインされた周辺アドレスをプラスしてスタート・アドレスを生成する、（３）乃至（１１）記載の装置。
（１３）前記アクセス状態マシーンが、データの各々のバイトが前記共用メモリから読取られるように、前記先取りバッファの有効性を検査する、（３）乃至（１２）記載の装置。
（１４）周辺装置が、前記先取りフェンス・レジスタの使用によって、Ｉ／Ｏメールボックスから陳腐なデータを読取らないように保護される、（３）乃至（１３）記載の装置。
（１５）データが直接前記共用メモリに書き込まれ、周辺装置書込要求の間にワード・アラインされた周辺アドレスが先取りアドレス・レジスタＰＡＲ０又はＰＡＲ１と一致するならば、前記先取りバッファのバンクが無効にされる、（３）乃至（１４）記載の装置。
【００４８】
（１６）周辺装置が周辺装置メールボックス・パケット・ポインタの最下位バイトを読み取るとき、前記アクセス状態マシーンが前記先取りバッファの両方のバンクを無効にし、前記周辺装置を、不正確なパケット・ヘッダ・データの読取りから保護する、（３）乃至（１５）記載の装置。
（１７）前記周辺装置が、前記パケットのスタート・アドレスを得るために周辺装置メールボックス・パケット・ポインタを読取る、（３）乃至（１６）記載の装置。
（１８）前記先取りアドレス・レジスタが、先取りアドレス・レジスタＰＡＲ０とＰＡＲ１から成り、前記アクセス状態マシーンが、先取りオペレーションの間、単一ロング・ワード読取要求アドレスの最上位ビットを先取りアドレス・レジスタＰＡＲ０又はＰＡＲ１へ書込む、（３）乃至（１７）記載の装置。
（１９）前記先取りバッファが、それぞれバンク０及びバンク１として定義されるバッファの２つのバンクから成る、（３）乃至（１８）記載の装置。
（２０）バッファの各々のバイトが、データ・バイトが有効であるか否かを示すフラグを含む、（３）乃至（１９）記載の装置。
【００４９】
（２１）バンク０の第一のバイトがワード・アラインされた周辺アドレス（ＰＡＲ０＋０）のデータを含み、バンク０の第二のバイトがワード・アラインされた周辺アドレスに１加えた（ＰＡＲ０＋１）のデータを含み、バンク０の第三のバイトがワード・アラインされた周辺アドレスに２加えた（ＰＡＲ０＋２）のデータを含み、バンク０の第四のバイトがワード・アラインされた周辺アドレスに３加えた（ＰＡＲ０＋３）のデータを含む、（３）乃至（２０）記載の装置。
（２２）バンク１の第一のバイトがワード・アラインされた周辺アドレス（ＰＡＲ１＋０）のデータを含み、バンク１の第二のバイトがワード・アラインされた周辺アドレスに１加えた（ＰＡＲ１＋１）のデータを含み、バンク１の第三のバイトがワード・アラインされた周辺アドレスに２加えた（ＰＡＲ１＋２）のデータを含み、バンク１の第四のバイトがワード・アラインされた周辺アドレスに３加えた（ＰＡＲ１＋３）のデータを含む、（３）乃至（２１）記載の装置。
（２３）前記先取りアドレス・フェンス・レジスタが、先取りオペレーションが開始したときに、あらかじめ決められた数Ｎをプラスした共用メモリ・アドレスを示すプログラム可能レジスタを含み、それによって、前記先取りアドレス・フェンス・レジスタより大きい共用メモリ・アドレス有する周辺装置読取要求が先取りされる、（３）乃至（２２）記載の装置。
（２４）前記先取りアドレス・フェンス・レジスタが、先取りオペレーションを禁止するために前記アクセス状態マシーンによって使用される、（３）乃至（２３）記載の装置。
【００５０】
【発明の効果】
本発明によると、共用メモリへのアクセスの競合を排除し軽減することによって、周辺装置要求の送信と周辺読取書込データのためのＩ／Ｏカード肯定応答の受信の間の遅延量が減少するＩ／Ｏカードを提供することができる。また、ＭＩＯプロトコルのようなデータ転送プロトコルを実行するネットワーク周辺装置において、周辺装置要求の送信とＩ／Ｏカード肯定応答の受信の間の周辺読取データの遅延量を大幅に削減する、先取りオペレーションを提供することができる。
【図面の簡単な説明】
【図１】周辺装置にインターフェースを提供するＩ／Ｏカードを含むコンピュータの従来技術の共用メモリ方式のブロック図。
【図２】共用メモリ方式のために先取り技術を実行する本発明のＩ／Ｏカードのブロック図。
【図３】図２の共用メモリ方式のために先取り技術を実行する本発明のＩ／Ｏカードの詳細なブロック図。
【符号の説明】
１０    周辺装置
１１ｂ  インタフェース
１２ｂ  Ｉ／Ｏカード
１３ｂ  共用メモリ・アービトレータ
１４ｂ  共用メモリ
１５ｂ  Ｉ／ＯカードＣＰＵ
１６ｂ  Ｉ／ＯカードＬＡＮコントローラ
２０  先取り装置
【図１】
0003748308.tif 000004
【図２】
0003748308.tif 000005
【図３】
0003748308.tif 000006