(57)【特許請求の範囲】
【請求項１】
シリアルＡＴＡ接続用のデータ転送を、データ転送速度の調整を使用して実行する方法であって、
送り側装置と受け側装置との間のシリアルＡＴＡ接続を通じて出力するデータが利用可能であるときにデータ送り状態に入るステップであって、前記送り側装置は、該送り側装置によって出力されるデータストリームへのＡＬＩＧＮプリミティブの挿入を制御するために使用される調整値を格納する調整値レジスタと、データ送り状態及びデータ受取状態を管理する有限状態機械と、を含む、該ステップと、
前記調整値に基づいて前記シリアルＡＴＡ接続を通じたデータ転送速度を低下させるために、データの代わりにＡＬＩＧＮプリミティブを出力すべきであるかを判定するステップと、
前記ＡＬＩＧＮプリミティブを前記送り側装置から前記シリアルＡＴＡ接続を通じて前記受け側装置に出力するステップと、
を含む、方法。
【請求項２】
シリアルＡＴＡ接続を通じたデータ転送を、データ転送速度の調整を使用して実行するシステムであって、
送り側装置であり、
該送り側装置によって出力されるデータストリームへのＡＬＩＧＮプリミティブの挿入を制御するために使用される調整値を格納する調整値レジスタと、
データ送り状態及びデータ受取状態を管理する有限状態機と、
を含み、
前記シリアルＡＴＡ接続を通じて出力するデータが利用可能であるときにデータ送り状態に入り、
前記調整値に基づいて前記シリアルＡＴＡ接続を通じたデータ転送速度を低下させるために、データの代わりにＡＬＩＧＮプリミティブを出力すべきであるかを判定し、
前記ＡＬＩＧＮプリミティブを受け側装置に出力する、
ように構成された該送り側装置と、
前記送り側装置から受け取るデータを格納し、前記ＡＬＩＧＮプリミティブを破棄するように構成された前記受け側装置と、
を備える、システム。
【請求項３】
前記調整値が、連続するデータ転送サイクルにおいて出力されるＡＬＩＧＮプリミティブの量を指定する、請求項２に記載のシステム。
【請求項４】
前記調整値が、連続するデータ転送サイクルであって、前記シリアルＡＴＡ接続を通じた前記データ転送速度を調整するためにＡＬＩＧＮプリミティブを出力することなくデータを出力することのできる該データ転送サイクルの最大数を指定する、請求項２に記載のシステム。
【請求項５】
前記送り側装置が、更に、最も最近に出力されたＡＬＩＧＮプリミティブの後に発生したデータ転送サイクルの数を示すデータカウントを維持するように、構成されている、請求項２に記載のシステム。
【請求項６】
前記送り側装置が、更に、ＡＬＩＧＮプリミティブが出力されるときに前記データカウントをリセットし、データが出力されるデータ転送サイクルごとに前記データカウントをインクリメントするように、構成されている、請求項５に記載のシステム。
【請求項７】
前記送り側装置がシリアルＡＴＡホストコントローラであり、前記受け側装置が、前記シリアルＡＴＡホストコントローラのデータ転送速度よりも小さいデータ転送速度を有するシリアルＡＴＡ記憶装置である、請求項２に記載のシステム。
【請求項８】
前記送り側装置がシリアルＡＴＡ記憶装置であり、前記受け側装置が、前記シリアルＡＴＡ記憶装置のデータ転送速度よりも小さいデータ転送速度を有するシリアルＡＴＡホストコントローラである、請求項２に記載のシステム。
【請求項９】
前記送り側装置がシリアルＡＴＡマルチプライヤであり、前記受け側装置がシリアルＡＴＡ記憶装置である、請求項２に記載のシステム。
【請求項１０】
前記送り側装置がシリアルＡＴＡホストコントローラであり、前記受け側装置がシリアルＡＴＡマルチプライヤである、請求項２に記載のシステム。
【発明の詳細な説明】
【発明の分野】
【０００１】
[0001]本発明の一以上の側面は、シリアルＡＴＡ（ＳＡＴＡ）プロトコルを使用したシリアルデータ転送に関するものであり、より詳細には、フロー制御のためのＨＯＬＤプリミティブの使用が最小になるようにデータ転送速度を調整することに関するものである。
【発明の背景】
【０００２】
[0002]ＳＡＴＡディスクアクセスプロトコルは、システムメモリと一以上のディスクとの間でデータを転送する目的で使用されている。殆どのＳＡＴＡ記憶装置は、システムメモリの帯域幅と比較して、極めて限られたデータ転送スループットを有している。磁気プラッタ方式のドライブの場合、持続書き込みスループットは１００ＭＢ／秒もの低さとなることがある。結果として、これらのＳＡＴＡ記憶装置は、ＳＡＴＡの仕様によって記載されているように、３００ＭＢ／秒の転送速度を維持することのできる高速ホストプロセッサに接続されるとき、パフォーマンスボトルネックとなることがある。
【０００３】
[0003]フロー制御メカニズムが、データ転送速度を調整する目的で、ＳＡＴＡプロトコルによって規定されている。具体的には、ホストプロセッサからＳＡＴＡ記憶装置へのデータ転送を調整して、受信データの先入れ先出し（ＦＩＦＯ）がオーバーフローしないようにすることができる。到来するデータを格納するデータＦＩＦＯにおいてハイウォーターマークに達したとき、ＳＡＴＡ記憶装置はＨＯＬＤプリミティブを出力する。ホストプロセッサは、このＨＯＬＤプリミティブを受け取ると、ＨＯＬＤＡプリミティブを出力し、ＳＡＴＡ記憶装置へのデータの送りを停止し、ＨＯＬＤプリミティブを受け取ったことを通知する。ＳＡＴＡ記憶装置は、ＨＯＬＤＡプリミティブを受け取った後、到来するデータを格納するための空間がデータＦＩＦＯにおいて利用可能になったとき、すなわち、ローウォーターマークに達したときに、データの受け入れを再開することができる。ＳＡＴＡ記憶装置は、ＨＯＬＤプリミティブの代わりにＲ＿ＩＰプリミティブを出力することによって、自身がデータを受け入れていることを伝達する。ホストプロセッサは、このＲ＿ＩＰプリミティブを受け取ったとき、ＨＯＬＤＡプリミティブの代わりにデータの送りを開始する。
【０００４】
[0004]十分な時間が経過した後の実効転送速度は、ＳＡＴＡ記憶装置の持続データ転送速度から、Ｒ＿ＩＰ−ＨＯＬＤ−ＨＯＬＤＡ−Ｒ＿ＩＰシーケンスのフロー制御オーバーヘッドを引いたものである。このフロー制御は非効率的である。なぜならば、ＳＡＴＡ記憶装置とホスト装置との間の転送の度に、ＳＡＴＡインタフェースを介したラウンドトリップ方式のハンドシェーク（ｒｏｕｎｄ−ｔｒｉｐ  ｈａｎｄｓｈａｋｅ）に起因して、数サイクルの遅延（規定されている最大値を上限とする）が発生するためである。到来するデータがより多く格納されるようにデータＦＩＦＯのサイズを単純に大きくするという方法を使用して、フロー制御シーケンスの最初の発生を遅らせることができるが、データＦＩＦＯがひとたび一杯になると、実効転送速度は向上しない。
【０００５】
[0005]従って、ＳＡＴＡ記憶装置の実効データ転送速度を向上させることが望ましい。更に、データＦＩＦＯのサイズを大きくする以外の方法によって、ダイエリアを最小にすることも望ましい。
【発明の概要】
【０００６】
[0006]本発明は、ＳＡＴＡ記憶装置の実効データ転送速度を向上させる新規のシステム及び方法に関するものである。実効データ転送速度が、データを送るときにＡＬＩＧＮプリミティブを挿入することによって低下される。受け側装置は、ＡＬＩＧＮプリミティブを単に破棄する。従って、受信データＦＩＦＯは早急には一杯にならず、フロー制御のために必要なＲ＿ＩＰ−ＨＯＬＤ−ＨＯＬＤＡ−Ｒ＿ＩＰシーケンスの頻度が減少する。ＡＬＩＧＮプリミティブの利点は、データ転送を無効にして後に有効にするためのラウンドトリップ方式のハンドシェークの遅延が発生しないことである。
【０００７】
[0007]本発明の種々の実施形態は、シリアルＡＴＡ接続を通じたデータ転送を、データ転送速度の調整を使用して、実行するシステムを含んでいる。このシステムは、シリアルＡＴＡ接続を通じて受け側装置に出力するデータが利用可能であるときにデータ送り状態に遷移するように構成された送り側装置を含んでいる。送り側装置は、シリアルＡＴＡ接続を通じたデータ転送速度を低下させるために、データの代わりにＡＬＩＧＮプリミティブを出力すべきであるかを判定し、ＡＬＩＧＮプリミティブを受け側装置に出力するように構成されている。受け側装置は、送り側装置から受け取るデータを格納し、ＡＬＩＧＮプリミティブを破棄するように構成されている。
【０００８】
[0008]本発明の種々の実施形態は、シリアルＡＴＡ接続を通じたデータ転送をデータ転送速度の調整を使用して実行する方法を含んでおり、この方法は、送り側装置と受け側装置との間のシリアルＡＴＡ接続を通じて出力するデータが利用可能であるときにデータ送り状態に入るステップと、シリアルＡＴＡ接続を通じたデータ転送速度を低下させるために、データの代わりにＡＬＩＧＮプリミティブを出力すべきであるかを判定するステップと、ＡＬＩＧＮプリミティブを送り側装置からシリアルＡＴＡ接続を通じて受け側装置に出力するステップと、を含んでいる。
【０００９】
[0009]上述した本発明の特徴を詳細に理解することができるように、以下では、上に簡潔に要約した本発明について、実施形態を参照しながら更に具体的に説明する。実施形態の幾つかは、添付の図面に示されている。しかしながら、添付の図面は、本発明の代表的な実施形態のみを示しており、従って、本発明の範囲を制限するようには解釈されるべきものではない。というのも、本発明は、同等の効果を有する別の実施形態もその範囲に含むからである。
【図面の簡単な説明】
【００１０】
【図１Ａ】本発明の一以上の側面に係る、ＣＰＵ及びＳＡＴＡ装置を含むコンピュータシステムの例示的な実施形態のブロック図である。
【図１Ｂ】本発明の一以上の側面に係る、図１ＡのＳＡＴＡ装置のブロック図である。
【図２】本発明の一以上の側面に係る、データ送り状態においてデータ転送速度の調整を実行する方法の例示的な実施形態を示す図である。
【図３】本発明の一以上の側面に係る、データ受取（Ｒｃｖ  Ｄａｔａ）状態においてデータ転送速度の調整を実行する方法の例示的な実施形態を示す図である。
【詳細な説明】
【００１１】
[0014]以下の説明においては、本発明を更に完全に理解することができるように、数多くの具体的な細部を説明している。しかしながら、これらの具体的な細部の一以上を使用せずに本発明を実施することができることは、当業者には明らかであろう。更には、本発明が曖昧になることを避けるため、周知の特徴については説明していない。
【００１２】
[0015]本発明は、ＳＡＴＡ記憶装置の実効データ転送速度を向上させる新規のシステム及び方法に関するものである。実効データ転送速度は、データを送るときにＡＬＩＧＮプリミティブを挿入することによって、低下される。受け側装置は、ＡＬＩＧＮプリミティブを単に破棄する。従って、受信データＦＩＦＯは早急には一杯にならず、フロー制御に必要なＲ＿ＩＰ−ＨＯＬＤ−ＨＯＬＤＡ−Ｒ＿ＩＰシーケンスの頻度が減少する。ＡＬＩＧＮプリミティブの利点は、データ転送を無効にして後に有効にするためのラウンドトリップ方式のハンドシェークの遅延が発生しないことである。対照的に、従来のホストコントローラは、割り込みを発生させず、代わりに、ＳＡＴＡバスがいったん利用可能になったときにソフトウェア介入なしにコマンドを再発行する。
【００１３】
[0016]図１は、本発明の一以上の側面に係るコンピュータシステムであるシステム１００の例示的な実施形態のブロック図であり、このシステム１００は、ＣＰＵ  １２０と、メディア通信プロセッサ１３０と、ＳＡＴＡマルチプライヤ１７０と、ＳＡＴＡ装置１５０，１５５，１６０，１６５と、を含んでいる。本発明の幾つかの実施形態においては、ＳＡＴＡ装置１５０，１５５，１６０，１６５は、ハードディスクドライブなどの大容量記憶装置である。ＳＡＴＡ装置１５０，１５５，１６０，１６５は、ＳＡＴＡ規格に準拠しており、従って、従来のフロー制御シグナリングに加えて、データ転送速度の調整を使用するように構成することができる。システム１００は、ＣＰＵ  １２０によって使用されるプログラム及びデータを格納するシステムメモリ１１０を含んでおり、このデータとしては、ＳＡＴＡ装置１５０，１５５，１６０，１６５から読み取る、又はＳＡＴＡ装置１５０，１５５，１６０，１６５に書き込むことのできるデータが含まれる。
【００１４】
[0017]システム１００は、デスクトップコンピュータ、サーバ、ラップトップコンピュータ、パームサイズコンピュータ、タブレットコンピュータ、ゲームコンソール、携帯無線端末（例えば、携帯情報端末（ＰＤＡ）、携帯電話）、コンピュータベースのシミュレータ、その他とすることができる。ＣＰＵ  １２０は、システムメモリ１１０との直接的なインタフェースとして機能するシステムメモリコントローラを含み得る。本発明の別の実施形態においては、ＣＰＵ  １２０は、システムインタフェース（例えば、Ｉ／Ｏ（入力／出力）インタフェース、ブリッジデバイス）を通じてシステムメモリ１１０と通信することができる。
【００１５】
[0018]デバイスドライバ１１２は、システムメモリ１１０に格納されている。デバイスドライバ１１２は、システム設計者若しくはシステム１００の製造者、又はその両者によって提供され、ＣＰＵ  １２０上で実行されているオペレーティングシステム（図示していない）とメディア通信プロセッサ（ｍｅｄｉａ  ａｎｄ  ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ｐｒｏｃｅｓｓｏｒ）１３０との間のインタフェースとして機能するように構成されている。メディア通信プロセッサ１３０は、ＣＰＵ  １２０と、一以上のハードディスクドライブ（例えば、ハードディスクドライブ１５０，１５５）との間に接続されている。メディア通信プロセッサ１３０は、高帯域幅のフロントサイドバス１２５によってＣＰＵ  １２０に接続されている。本発明の幾つかの実施形態においては、メディア通信プロセッサ１３０は、ＰＣＩ（周辺機器インタフェース：ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｆａｃｅ）ＨｙｐｅｒＴｒａｎｓｐｏｒｔＴＭ（登録商標）プロトコルを使用して、フロントサイドバス１２５を通じてＣＰＵ  １２０とのインタフェースとして機能する。
【００１６】
[0019]メディア通信プロセッサ１３０は、システムメモリ１１０と一以上のハードディスクドライブとの間のデータ転送を支援するものであり、シリアルＡＴＡホストコントローラ１４０を含んでおり、当該シリアルＡＴＡホストコントローラ１４０は、ＳＡＴＡリンク１７５を介してＳＡＴＡマルチプライヤ１７０に接続されており、且つ、ＳＡＴＡリンク１４５を介して一以上のＳＡＴＡ装置１５０，１５５，１６０，１６５に接続されている。ＳＡＴＡマルチプライヤ１７０及びとＳＡＴＡ装置１５０，１５５，１６０，１６５は、データ転送速度の調整をサポートするように構成されている。ＳＡＴＡ装置１５０，１５５，１６０，１６５のそれぞれは、個々のディスク内でのデータの格納及び読み取りを制御するドライブエレクトロニクスを含んでおり、この場合の制御としては、シリアルＡＴＡホストコントローラ１４０から受け取るデータのバッファリングと、シリアルＡＴＡホストコントローラ１４０に出力するデータのバッファリングとが含まれる。同様に、ＳＡＴＡマルチプライヤ１７０は、シリアルＡＴＡホストコントローラ１４０から受け取るデータを、ＳＡＴＡ装置１６０又はＳＡＴＡ装置１６５に出力することができるように格納する一以上のデータ先入れ先出し（ＦＩＦＯ）メモリを含んでいる。ＳＡＴＡマルチプライヤ１７０は、ＳＡＴＡ装置１６０及びＳＡＴＡ装置１６５によってシリアルＡＴＡホストコントローラ１４０に出力されるデータを格納する一以上のデータＦＩＦＯも含んでいる。
【００１７】
[0020]本発明の別の実施形態においては、メディア通信プロセッサ１３０は、ユニバーサルシリアルバス（ＵＳＢ）、アクセラレーテッドグラフィックスポート（ＡＧＰ）などの追加のポートを含み得る。ＳＡＴＡ装置１５０，１５５，１６０，１６５のそれぞれは、交換又は取り外すことができ、従って、システム１００は、任意の時間において、より少ない、又はより多くのＳＡＴＡ装置を含み得る。
【００１８】
[0021]表１は、データ転送速度の調整における改良された効率を示すための、従来のフロー制御の交換と、データ転送速度の調整と、を示している。送り側、すなわちシリアルＡＴＡホストコントローラ１４０、又はＳＡＴＡ装置１５０，１５５，１６０，１６５のうちの一つは、最初の４つの転送サイクルにおいて、データＮ、データＮ＋１、データＮ＋２、データＮ＋３を出力する。従来のフロー制御を使用しているときには、受け側、すなわちＳＡＴＡ装置１５０，１５５，１６０，１６５のうちの一つ、又はシリアルＡＴＡホストコントローラ１４０は、ＨＯＬＤプリミティブ（受信データＦＩＦＯがハイウォーターマークに達したことを示す）を出力して、それ以上のデータが送られるべきではないことを送り側に通知する。データ転送速度の調整を使用しているときには、受け側はＨＯＬＤプリミティブを送る必要がない。なぜならば、データ転送速度を低下させるためにＡＬＩＧＮプリミティブが送り側によって出力されているためである。従って、受信データＦＩＦＯはハイウォーターマークに達していない。
【００１９】
[0022]この例においては、ＨＯＬＤプリミティブは、受け側によって出力されてから四つの転送サイクル後に、送り側によって受け取られる。送り側は、データの代わりにＨＯＬＤＡ（一時停止ＡＣＫ）プリミティブを受け側に送ることによって、ＨＯＬＤプリミティブに応答する。受け側は、（四つの転送サイクル後に）ＨＯＬＤＡが受け取られるまでＨＯＬＤプリミティブを出力し続け、次いで、受信データＦＩＦＯがローウォーターマークレベルまで排出されているため、受け側は、データを受け取ることができることを示すためのＲ＿ＩＰプリミティブを出力する。送り側は、（四つの転送サイクル後に）Ｒ＿ＩＰプリミティブが受け取られるまで、ＨＯＬＤＡプリミティブを出力し続け、次いで、送り側は受け側へのデータの出力を再開する。
【００２０】
[0023]対照的に、データ転送速度の調整を使用するときには、八つの転送サイクルのラウンドトリップ遅延がデータ転送速度に影響することがない。従来の多くのシステムにおいては、ラウンドトリップ遅延は八つの転送サイクルよりも大きく、従って、従来のフロー制御を使用するときには、データ転送速度はそれ以上に低減し得る。幸いなことに、ラウンドトリップ遅延は、ＳＡＴＡ仕様によって最大３２転送サイクルに制限されている。しかしながら、表１に示したように、従来のフロー制御を使用する代わりに、データ転送速度の調整を使用して、データ受信ＦＩＦＯがオーバーフローすることを回避することによって、実効データ転送速度を向上させることができる。具体的には、表１に示した１３転送サイクルのうち、従来のフロー制御を使用するときには５サイクルでデータが転送されるのに対して、データ転送速度の調整を使用するときには９サイクルでデータが転送される。
【表１】
0004902624.tif 000002
【００２１】
[0024]ＳＡＴＡ仕様では、クロックの回復を目的として、２５６回のデータ転送ごとに二つのＡＬＩＧＮプリミティブを送ることが要求される。しかしながら、それ以上のＡＬＩＧＮプリミティブの出力を阻止する制限は存在しない。ＡＬＩＧＮプリミティブは、リンク層及びトランスポート層の状態機械によって無視され、物理層によって取り込まれる。従って、ＡＬＩＧＮプリミティブを使用してデータ転送速度を低下させ、従来のフロー制御メカニズム（Ｒ＿ＩＰ−ＨＯＬＤ−ＨＯＬＤＡ−Ｒ＿ＩＰシーケンス）を使用する必要性を最小にすることができる。送り側装置のデータ転送速度が、受け側装置の持続データ転送速度に一致するような割合でＡＬＩＧＮプリミティブが挿入されると、従来のフロー制御が最小になり、達成しうる最高の実効データ転送速度が得られる。
【００２２】
[0025]ＣＰＵ  １２０は、一般には、ＳＡＴＡ装置１５０，１５５，１６０，１６５と比較して高いデータ転送速度を有するが、シリアルＡＴＡホストコントローラ１４０が送り側装置であるとき、又はＳＡＴＡ装置１５０，１５５，１６０，１６５が送り側装置であるとき、データ転送調整手法を使用してデータ転送速度を低下させることが可能である。重要な点として、ＳＡＴＡ仕様に準拠する装置は、何らの変更なしに受け側装置として機能することができる。送り側装置は、図１Ｂ及び図２を参照しながら説明するように、データ転送速度を調整する目的でＡＬＩＧＮプリミティブを挿入するように構成されている。
【００２３】
[0026]図１Ｂは、本発明の一以上の側面に係る、図１ＡのＳＡＴＡ装置１５０のブロック図である。ＳＡＴＡ装置１５０に関連して説明する要素の全て又は一部は、シリアルＡＴＡホストコントローラ１４０、ＳＡＴＡマルチプライヤ１７０、及びＳＡＴＡ装置１５５，１６０，１６５においても、データ転送速度の調整を実行する目的に使用することができる。ＳＡＴＡ装置１５０は、記憶装置１９５と、有限状態機械１９０と、受信（データ）ＦＩＦＯ  １８５と、送信（データ）ＦＩＦＯ  １８７と、調整値１８０と、を含んでいる。有限状態機械１９０は、ＳＡＴＡプロトコルを実施し、このプロトコルには、データ送り（Ｓｅｎｄ  Ｄａｔａ）状態及びデータ受取（Ｒｃｖ  Ｄａｔａ）状態（図２及び図３を参照しながら説明する）が含まれている。受信ＦＩＦＯ  １８５は、ＳＡＴＡリンク１４５を介して受け取るデータを格納する、すなわち、記憶装置１９５における格納のためにデータをバッファリングする。送信ＦＩＦＯ  １８７は、ＳＡＴＡリンク１４５を介して出力されるデータを格納する、すなわち、記憶装置１９５から読み取られるデータをバッファリングする。ＳＡＴＡマルチプライヤ１７０、シリアルＡＴＡホストコントローラ１４０といった幾つかの装置においては、記憶装置１９５が省かれる。なぜならばこれらの装置はＳＡＴＡ通信のルーティング機能を実行するためである。
【００２４】
[0027]調整値１８０は、ＳＡＴＡ装置１５０によって出力されるデータストリームにＡＬＩＧＮプリミティブを挿入するために使用される情報を格納しているレジスタである。この調整値は、挿入されるＡＬＩＧＮプリミティブの数と、有限状態機械１９０によって維持されるデータカウントと比較するためのデータカウント閾値とを含み得る。調整値は、固定とすることができ、又は、デバイスドライバ１１２によってプログラムすることができる。システム１００におけるＳＡＴＡ装置のそれぞれへの実効データ転送速度を最大にするために、調整値が各受け側装置用にプログラムされていてもよい。
【００２５】
[0028]図２は、本発明の一以上の態様に係る、データ送り状態においてデータ転送速度の調整を実行する方法の例示的な実施形態を示す図である。図２の方法は、シリアルＡＴＡホストコントローラ１４０、ＳＡＴＡマルチプライヤ１７０、及びＳＡＴＡ装置１５０，１５５，１６０，１６５によって実行することのできるプロトコルの実施形態を示している。ステップ２００において、ＳＡＴＡリンク１４５を介して出力されるデータが利用可能であるため、有限状態機械１９０がデータ送り状態に入る。ステップ２０５において、有限状態機械１９０は、フレームデータの全てが転送されたかを判定し、転送された場合、ステップ２１０において、有限状態機械１９０はＣＲＣ送り（ＳｅｎｄＣＲＣ）状態に入る。ＣＲＣ送り（ＳｅｎｄＣＲＣ）状態は、ＳＡＴＡ仕様に記載されている。
【００２６】
[0029]ステップ２０５において、有限状態機械１９０が、フレームデータの全てが転送されていないと判定した場合、ステップ２１５において、有限状態機械１９０は、物理（Ｐｈｙ）層からＳＹＮＣを受け取っているかを判定し、受け取っている場合、ステップ２２０において、有限状態機械１９０は、ＳＡＴＡ仕様に規定されているように、アイドル（ＩＤＬＥ）状態に入る。受け取っていない場合、状態２２５において、有限状態機械１９０は、物理層が動作可能状態ではないかを判定する。ステップ２２５において、有限状態機械１９０が、物理層が動作可能状態ではないと判定した場合、ステップ２３０において、有限状態機械１９０は、ＳＡＴＡ仕様に規定されているように、通信エラー（ＮｏＣｏｍｍＥｒｒ）状態２３０に入る。動作可能状態である場合、ステップ２３５において、有限状態機械１９０は、現在のフレーム転送のエスケープ（ｅｓｃａｐｅ  ｃｕｒｒｅｎｔ  ｆｒａｍｅ  ｔｒａｎｓｆｅｒ）を受け取っているかを判定する。現在のフレーム転送のエスケープを受け取っている場合、ステップ２４０において、有限状態機械１９０は、ＳＡＴＡ仕様に規定されているように、同期エスケープ（ＳｙｎｃＥｓｃａｐｅ）状態に入る。受け取っていない場合、ステップ２４５において、有限状態機械１９０は、ＨＯＬＤプリミティブを受け取っているかを判定し、受け取っている場合、ステップ２５０において、有限状態機械１９０は、ＳＡＴＡ仕様に規定されているように、受取一時停止（ＲｃｖＨｏｌｄ）状態に入る。
【００２７】
[0030]ステップ２４５において、有限状態機械１９０が、ＨＯＬＤプリミティブを受け取っていないと判定した場合、ステップ２５５において、有限状態機械１９０は、送信データＦＩＦＯが空であるかを判定する。送信データＦＩＦＯが空である場合、ステップ２６０において、有限状態機械１９０は、ＳＡＴＡ仕様に規定されているように、送り一時停止（ＳｅｎｄＨｏｌｄ）状態に入る。空ではない場合、ステップ２６５において、有限状態機械１９０は、受け側へのデータ転送速度を低下させるためにＡＬＩＧＮプリミティブを挿入すべきであるかを判定する。
【００２８】
[0031]有限状態機械１９０は、ＡＬＩＧＮプリミティブの間に発生したデータ転送サイクルの数のデータカウントを維持している。データ転送サイクルとは、その間にデータが受け側に出力される転送サイクル（例えば、クロックサイクル、一定数のクロックサイクル）である。本発明の幾つかの実施形態においては、二つのデータ転送サイクルの間に一つのＡＬＩＧＮプリミティブが挿入され、本発明の別の実施形態においては、二つのデータ転送サイクルの間に複数のＡＬＩＧＮプリミティブが挿入される。挿入されるＡＬＩＧＮプリミティブの数は、調整値１８０によって指定することができる。ＡＬＩＧＮプリミティブの間のデータ転送サイクルの数は、調整値１８０によって指定される。
【００２９】
[0032]ステップ２６５において、有限状態機械１９０が、ＡＬＩＧＮプリミティブを挿入すべきではないと判定した場合、ステップ２８０において、有限状態機械１９０は、送信ＦＩＦＯ  １８７から出力される（ポップされる）データを、ＳＡＴＡリンク１４５を介して受け側に送信する。ステップ２８５において、有限状態機械１９０は、データカウントをインクリメントする。ステップ２６５において、有限状態機械１９０が、ＡＬＩＧＮプリミティブを挿入すべきであると判定した場合、ステップ２７０において、有限状態機械１９０は、データカウントをリセットする。ステップ２７５において、有限状態機械１９０は、調整値１８０に基づいて一以上のＡＬＩＧＮプリミティブを出力する。本発明の幾つかの実施形態においては、ＳＡＴＡリンクの送信状態図には、新しい状態である「ＡＬＩＧＮ挿入（ｉｎｓｅｒｔ  ＡＬＩＧＮ（ｓ））」が含められる。有限状態機械１９０は、このＡＬＩＧＮ挿入状態に入って、ステップ２７０及びステップ２７５を完了し、次いで、データ送り状態に戻る。
【００３０】
[0033]図３は、本発明の一以上の側面に係る、データ受取（Ｒｃｖ  Ｄａｔａ）状態においてデータ転送速度の調整を実行する方法の例示的な実施形態を示す図である。図３の方法は、シリアルＡＴＡホストコントローラ１４０、ＳＡＴＡマルチプライヤ１７０、及びＳＡＴＡ装置１５０，１５５，１６０，１６５によって実行することのできるプロトコルの実施形態を示している。ステップ３００において、有限状態機械１９０は、ＳＡＴＡリンク１４５を介してデータ又はプリミティブを受け取ったため、データ受取（Ｒｃｖ  Ｄａｔａ）状態に入る。ステップ３０５において、有限状態機械１９０は、ＥＯＦ（エンドオブフレーム）を受け取っているかを判定し、受け取っている場合、ステップ３０３において、有限状態機械１９０は、ＥＯＦ受取（ＲｃｖＥＯＦ）状態に入る。ＥＯＦ受取（ＲｃｖＥＯＦ）状態は、ＳＡＴＡ仕様に記載されている。
【００３１】
[0034]ステップ３０１において、有限状態機械１９０が、ＥＯＦを受け取っていないと判定した場合、ステップ３１５において、有限状態機械１９０は、物理層からＷＴＲＭを受け取っているかを判定する。ＷＴＲＭを受け取っている場合、ステップ３１０において、有限状態機械１９０は、ＳＡＴＡ仕様に記載されているように、不良エンド（ＢａｄＥｎｄ）状態に入る。受け取っていない場合、ステップ３１５において、有限状態機械１９０は、ＳＹＮＣを物理層から受け取っているかを判定し、受け取っている場合、ステップ３２０において、有限状態機械１９０は、ＳＡＴＡ仕様に記載されているように、アイドル（ＩＤＬＥ）状態に入る。受け取っていない場合、ステップ３２５において、有限状態機械１９０は、物理層が動作可能状態ではないかを判定する。ステップ３２５において、有限状態機械１９０が、物理層が動作可能状態ではないと判定した場合、ステップ３３０において、有限状態機械１９０は、ＳＡＴＡ仕様に記載されているように、通信エラー（ＮｏＣｏｍｍＥｒｒ）状態に入る。動作可能状態である場合、ステップ３３５において、有限状態機械１９０は、現在のフレーム転送のエスケープを受け取っているかを判定する。現在のフレーム転送のエスケープが受け取っている場合、ステップ３４０において、有限状態機械１９０は、ＳＡＴＡ仕様に記載されているように、同期エスケープ（ＳｙｎｃＥｓｃａｐｅ）状態に入る。受け取っていない場合、ステップ３４５において、有限状態機械１９０は、ＨＯＬＤプリミティブを受け取っているかを判定し、受け取っている場合、ステップ３５０において、有限状態機械１９０は、ＳＡＴＡ仕様に規定されているように、受取一時停止（ＲｃｖＨｏｌｄ）状態に入る。
【００３２】
[0035]ステップ３４５において、有限状態機械１９０が、ＨＯＬＤプリミティブを受け取っていないと判定した場合、ステップ３５５において、有限状態機械１９０は、受信ＦＩＦＯ  １８５がハイウォーターマーク（ＨＷＭ）に達しているかを判定する。受信ＦＩＦＯ  １８５がＨＷＭに達している場合、ステップ３６０において、有限状態機械１９０は、ＳＡＴＡ仕様に規定されているように、一時停止（Ｈｏｌｄ）状態に入る。達していない場合、ステップ３６５において、有限状態機械１９０は、ＡＬＩＧＮプリミティブを受け取っているかを判定し、受け取っている場合、ステップ３７０において、有限状態機械１９０は、ＡＬＩＧＮプリミティブを破棄する、すなわち、ＡＬＩＧＮプリミティブを受信ＦＩＦＯ  １８５にプッシュしない。ステップ３６５において、有限状態機械１９０が、ＡＬＩＧＮプリミティブを受け取っていないと判定した場合、ステップ３７５において、有限状態機械１９０は、データを受信ＦＩＦＯ  １８５に格納（プッシュ）する。
【００３３】
[0036]図２又は図３の方法ステップ、或いはこれらに均等の方法ステップを実行するように構成されているあらゆるシステムが、本発明の範囲内に含まれることが、当業者には理解されるであろう。受け側のデータ転送速度よりも高いデータ転送速度を有する送り側からデータが送られるとき、ＡＬＩＧＮプリミティブを挿入することによって、データ転送速度が低下する。受け側装置は、ＡＬＩＧＮプリミティブを単に破棄する。従って、受信データＦＩＦＯは早急には一杯にならず、受信データＦＩＦＯがオーバーフローすることを回避するために必要となる従来の高遅延のフロー制御シーケンスの頻度が減少する。従来のフロー制御シーケンスの回数が減少することによって、ＳＡＴＡ仕様の範囲内で動作しながら実効データ転送速度が向上する。
【００３４】
[0037]上記の説明は本発明の実施形態を対象としているが、本発明の別の更なる実施形態は本発明の基本的な範囲から逸脱することなく創出し得るものであり、本発明の範囲は、請求項によって定義される。従って、上記の説明及び図面は、本発明を制限するものではなく説明を目的としているものと解釈されたい。方法クレームにおけるステップの列挙は、請求項に明示的に記載していない限りは、それらのステップを何らかの特定の順序において実行することを暗黙的に指定するものではない。
【００３５】
[0038]すべての商標は、それぞれの所有者の財産である。
【符号の説明】
【００３６】
１００…システム、１１０…システムメモリ、１１２…デバイスドライバ、１２０…ＣＰＵ、１２５…フロントサイドバス、１３０…メディア通信プロセッサ、１４０…ＳＡＴＡホストコントローラ、１４５，１６１，１６６，１７５…ＳＡＴＡリンク、１５０，１５５，１６０，１６５…ＳＡＴＡ装置、１７０…ＳＡＴＡマルチプライヤ、１８０…調整値、１８５…受信ＦＩＦＯ、１８７…送信ＦＩＦＯ、１９０…有限状態機械、１９５…記憶装置。
【図１Ａ】
0004902624.tif 000003
【図１Ｂ】
0004902624.tif 000004
【図２】
0004902624.tif 000005
【図３】
0004902624.tif 000006