(57)【特許請求の範囲】
【請求項１】
ハード・ディスク・コントローラのバッファ・メモリにアクセスを提供する方法であって、
前記バッファ・メモリにアクセスする誤り訂正ユニットに第１の時間量を割り当てる工程と、
前記バッファ・メモリにアクセスするホスト・インターフェース・ユニットに第２の時間量を割り当てる工程と、
前記第１の時間量および前記第２の時間量を動的に監視する工程と、
前記第１の時間量以下の第１持続時間の間、前記誤り訂正ユニットを使用して前記バッファ・メモリにアクセスする工程と、
前記第２の時間量を、前記第１の時間量と第１持続時間との差に関連した量だけ調整する工程と、
前記調整の後の第２の時間量以下の第２の持続時間の間、前記ホスト・インターフェース・ユニットを使用して前記バッファ・メモリにアクセスする工程と、
前記バッファ・メモリにアクセスするディスク・フォーマッタ・ユニットに対して第３の時間量を割り当てる工程と、
前記ディスク・フォーマッタ・ユニットに前記バッファ・メモリへのアクセスを許可する工程と、
前記第３の時間量以下の第３の持続時間の間、前記ディスク・フォーマッタ・ユニットを使用して前記バッファ・メモリにアクセスする工程と
を含み、
前記バッファ・メモリへのアクセスは繰り返しのアクセス・サイクル中に提供され、一回の前記アクセス・サイクル中においては、前記誤り訂正ユニット、前記ホスト・インターフェース・ユニット、または前記ディスク・フォーマッタ・ユニットが前記バッファ・メモリへ１回を超えてアクセスすることがなく、
前記ディスク・フォーマッタ・ユニットは、前記第３の持続時間経過した後から所定の第4の持続時間内に前記バッファ・メモリへのアクセスが提供される方法。
【請求項２】
大容量記憶デバイス・コントローラの共有コントローラ・リソースへのアクセスを提供する方法であって、
前記共有コントローラ・リソースにアクセスする第１アクセス・ユニットに第１の時間量を割り当てる工程と、
前記共有コントローラ・リソースにアクセスする第２アクセス・ユニットに対して第２の時間量を割り当てる工程と、
前記第１の時間量以下の第１持続時間の間、前記第１アクセス・ユニットを使用して前記共有コントローラ・リソースにアクセスする工程と、
前記第１の時間量および前記第２の時間量を動的に監視する工程と、
前記第２の時間量を、前記第１の時間量と前記第１持続時間との差に関連した量だけ調整する工程と、
前記調整の後の第２の時間量以下の第２持続時間の間、前記第２アクセス・ユニットを使用して前記共有コントローラ・リソースにアクセスする工程と、
前記共有コントローラ・リソースにアクセスする第３アクセス・ユニットに第３の時間量を割り当てる工程と、
前記第３アクセス・ユニットに前記共有コントローラ・リソースへのアクセスを許可する工程と、
前記第３の時間量以下の第３の持続時間の間、前記第３アクセス・ユニットを使用して前記共有コントローラ・リソースにアクセスする工程と
を含み、
前記共有コントローラ・リソースへのアクセスは繰り返しのアクセス・サイクル中に提供され、一回の前記アクセス・サイクル中においては、前記第１アクセス・ユニット、前記第２アクセス・ユニット、または前記第３アクセス・ユニットが前記共有コントローラ・リソースへ１回を超えてアクセスすることがなく、
前記第３アクセス・ユニットはディスク・フォーマッタ・ユニットであり、前記ディスク・フォーマッタ・ユニットは、前記ディスク・フォーマッタ・ユニットが前記共有コントローラ・リソースに前回アクセスした後の所定時間周期内に前記共有コントローラ・リソースへのアクセスが提供される方法。
【請求項３】
共有メモリを含む大容量記憶デバイスのコントローラ回路であって、
前記共有メモリにアクセスすべく割り当てられた第１の時間量に関連して、前記大容量記憶デバイスから読取りされたデータを訂正するのに使用される誤り訂正回路と、
前記共有メモリにアクセスすべく割り当てられた第２の時間量に関連して、ホスト・システムとのデータのやり取りに使用されるホスト・システム・インターフェース回路と、
前記共有メモリにアクセスすべく割り当てられた第３の時間量に関連して、前記大容量記憶デバイスに対するインターフェースとして使用される記憶デバイス・フォーマッタ回路と、
前記割り当てられた第１の時間量、第２の時間量、および第３の時間量を記憶する複数のレジスタのセットと、
前記割り当てられた第１の時間量、第２の時間量、および第３の時間量を動的に監視するための調停制限カウンタと、
少なくとも前記ホスト・システム・インターフェース回路と前記誤り訂正回路と前記記憶デバイス・フォーマッタ回路とによる前記共有メモリへのアクセスを調停するべく使用される調停回路と
を含み、
前記調停回路は、前記第１の時間量以下の第１持続時間の間、前記誤り訂正回路に前記共有メモリへのアクセスを許可して、前記第２の時間量を、前記第１の時間量と前記第１持続時間との差に関連する量だけ調整し、
前記調停回路はさらに、繰り返しのアクセス・サイクル中に前記共有メモリへのアクセスを提供し、一回の前記アクセス・サイクル中においては、前記誤り訂正ユニット、前記ホスト・システム・インターフェース回路、または前記記憶デバイス・フォーマッタ回路が前記共有メモリへ１回を超えてアクセスすることがなく、
前記記憶デバイス・フォーマッタ回路は、前記記憶デバイス・フォーマッタ回路が前記共有メモリに前回アクセスした後の所定時間周期内に前記共有メモリへのアクセスが提供される大容量記憶デバイスのコントローラ回路。
【請求項４】
前記調停回路はステート・マシンである、請求項３に記載の大容量記憶デバイスのコントローラ回路。
【請求項５】
コンピュータ・システムであって、
ホスト・システムと、
前記ホスト・システムに接続されて、前記ホスト・システムとのデータのやり取りに使用されるホスト・システム・インターフェース回路と、
大容量記憶デバイスから読み取られたエラー・データを訂正するべく使用される誤り訂正回路と、
前記大容量記憶デバイスへのインターフェースに使用される記憶デバイス・フォーマッタ回路と、
少なくとも前記ホスト・システム・インターフェース回路と前記誤り訂正回路と前記記憶デバイス・フォーマッタ回路とによる共有バッファ・メモリへのアクセスを調停するべく使用されるアービッタ回路であって、前記共有バッファ・メモリにアクセスする前記誤り訂正回路に第１の時間量を割り当て、前記共有バッファ・メモリにアクセスする前記ホスト・システム・インターフェース回路に第２の時間量を割り当て、前記共有バッファ・メモリにアクセスする前記記憶デバイス・フォーマッタ回路に第３の時間量を割り当て、前記第１の時間量以下の第１持続時間の間前記誤り訂正回路に前記共有バッファ・メモリへのアクセスを与え、前記第２の時間量を前記第１の時間量と前記第１持続時間との差に関連する量だけ調整するアービッタ回路と、
前記割り当てられた第１の時間量、第２の時間量、および第３の時間量を記憶する複数のレジスタのセットと、
前記割り当てられた第１の時間量、第２の時間量、および第３の時間量を動的に監視するための調停制限カウンタと
を含み、
前記アービッタ回路はさらに、繰り返しのアクセス・サイクル中に前記共有バッファ・メモリへのアクセスを提供し、一回の前記アクセス・サイクル中においては、前記誤り訂正回路、前記ホスト・システム・インターフェース回路、または前記記憶デバイス・フォーマッタ回路が前記共有バッファ・メモリへ１回を超えてアクセスすることがなく、
前記記憶デバイス・フォーマッタ回路は、前記記憶デバイス・フォーマッタ回路が前記共有バッファ・メモリに前回アクセスした後の所定時間周期内に前記共有バッファ・メモリへのアクセスが提供されるコンピュータ・システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
（技術分野）
本発明は大容量データ記憶デバイス・コントローラに関する。より詳しくは、本発明はディスク・コントローラ・メモリへのアクセスを調停する方法およびシステムに関する。
【０００２】
【従来の技術】
（背景技術）
大容量データ記憶装置は、コンピュータ・システムの重大要素である。一般的に、大容量記憶ユニットはハード・ディスク、光学ドライブのような不揮発性メモリまたは他のタイプの記憶デバイスからなる。コンピュータ・システムは一般的にランダム・アクセス・メモリ（ＲＡＭ）回路のような揮発性システム・メモリも含んでいる。現在のほとんどのパーソナル・コンピュータは、２５６メガバイトを超えないＲＡＭを含み、一方同じコンピュータがしばしば１０ギガバイトまたはそれ以上の容量までのハード・ディスクを含んでいる。
【０００３】
コンピュータの大容量記憶ユニットは、不揮発性基板上にプログラムとデータを記憶するのに使用される。従って、大容量記憶デバイスは、コンピュータと大容量記憶デバイスがパワーダウンしたときにおいてさえも、データを維持する。これに反して、揮発性システム・メモリはプログラム・コードとデータの一時的保持装置として作用する。一般的に、揮発性システム・メモリは大容量記憶デバイスよりも急速にアクセスすることができる。マイクロプロセッサが、システム・メモリ内にないプログラムまたはデータにアクセスする必要があるとき、マイクロプロセッサは、より大型であるがより遅い大容量記憶デバイスからシステム・メモリへのデータを最初にコピーする。プロセッサは、システム・メモリからデータをすばやくアクセスするであろう。さらに、ある一定の条件下で、新しいまたは訂正データがシステム・メモリに記憶された場合に、マイクロプロセッサはそのデータを大容量記憶デバイスに書き込む。
【０００４】
大容量記憶ユニットは一般的にハード・ディスクとハード・ディスク・コントローラ（ＨＤＣ）からなる。コントローラはハード・ディスクを作動し、データをディスクに書き込まれるようにフォーマットし、データをディスクから読取りされるようにチェックし、ホスト・システムへのデータとこれからのデータとの通信をし、また、待ち時間（ラテンシー）とハード・ディスクとホスト・コンピュータ・システム間のデータ転送速度における差を補償するようにデータをバッファする。
【０００５】
【発明が解決しようとする課題】
一般的に、ＨＤＣはディスクとホスト間のデータをバッファするように使用できるバッファ・メモリを含んでいる。ディスク、ホストおよびローカル・コントローラのような数個の基本的ユニットが、バッファ・メモリが相互作用する必要があるので、バッファ・メモリへのアクセスはある方式で調整しなければならない。従って、ＨＤＣは、アクセスを要求する種々のデバイス中のバッファ・メモリへのアクセスを交渉するようにアクセス・アービッタを利用できる。しかし、従来のシステムは一般的にアービッタを利用しており、このアービッタは、各アクセス・サイクルに対して、アクセス時間の固定された長さをアクセス・ユニットに提供しており効率が悪い。従って、従来のシステムは、アクセス・ユニットによってバッファ・メモリの利用の変更を動的に適応することに欠けている。
【０００６】
【課題を解決するための手段】
（発明の開示）
本発明は大容量記憶デバイス・コントローラの共有リソースへのアクセスを調停する方法およびシステムを開示する。本発明の一実施例において、コントローラはハード・ディスク・コントローラであり、また共有リソースはハード・ディスク・コントローラのローカル・バッファ・メモリである。コントローラ内の数個のユニットないし回路は、各々バッファ・メモリにアクセスして情報を記憶または検索する。これらのユニットはコントローラ・マイクロプロセッサ、ホスト・インターフェース・ユニット、ディスク・フォーマッタ・ユニット、バッファ・メモリ・リフレッシュ・ユニット、ディスク・フォーマット・データ・フェッチ・ユニットおよび誤り訂正ユニットを含んでいる。バッファ・メモリへのアクセスの調停において、ユニットの種々のアクセス要求が考慮される。例えば、一実施例において、ディスク・コントローラは最も時間に限界的で、予測でき、周期的なアクセス要求を有しており、他のユニットはあまり限界的でなく、それほど予測できないアクセス要求を有し、またホスト・インターフェース・ユニットは最も予測できず、かつ、最も時間的限界でないアクセス要求を有している。
【０００７】
本発明の一実施例は、サイクルで動作し、このサイクル中各ユニットは連続するアクセス持続期間で提供される。最も重要な（限界的な）アクセス要求を有するディスク・フォーマッタは、時間遅延のような周期的アクセスを提供され、アクセスのない期間中で特定時間周期を超えないような周期的アクセスを提供される。
【０００８】
高いレベルにおいて、アクセス・サイクルは二つの部分に分割される。第１部分は、ディスク・フォーマッタがバッファ・メモリにアクセスする期間中の時間を表わす。アクセス・サイクルの第２部分は、残りのユニット、すなわち、ディスク・フォーマッタ以外のユニットがバッファ・メモリにアクセスする期間中の時間を表わす。しかし、残りのユニットがバッファ・メモリにアクセスしている間、ディスク・フォーマッタはバッファ・メモリにアクセスすることができない。一実施例において、ディスク・フォーマッタは所定時間の長さ内で周期的アクセスが保証され、残りのユニットの合成アクセス時間が所定の時間の長さに制限される。同様にして、残りのユニットがアクセスを受信することを保証するために、ディスク・フォーマッタのアクセス時間も所定の長さに制限される。アクセス・サイクルの二つの部分の各々が最大持続期間を有しておれば、アクセス・サイクル自体は最大許容持続期間を有している。
【０００９】
次のレベルにおいて、残りのユニットに割り当てられたアクセス・サイクルの部分が再度分割される。残りのユニットの各々が、残りの非ディスク・フォーマッタ・ユニットに割り当てられた時間内で最大時間の長さが割り当てられる。いずれの残りのユニットもその最大割り当てを使用しなければ、未使用時間が残りのユニットの最後のものに提供される。最後のユニットがそれに対して利用可能な全時間に使用されなければ、調停サイクルが早期に終了する。従って、ディスク・フォーマッタがバッファ・メモリに対して再度アクセスを提供する前の時間は特定する最大持続期間よりも短く終了する。
【００１０】
一実施例において、アクセス・サイクル中、残りのユニットの各々がシーケンス的に全割り当て時間の一部を利用したときに、残りのユニットに割り当てられた全アクセス時間から、時間が控除(deduct)される。最後のユニットの他が全てアクセスを提供した後、割り当てられた時間の残りはなんでもみな最後のユニットに割り当てられる。
【００１１】
【発明の実施の形態】
次の説明において、添付図面を参照して、その一部を形成しまた、本発明を実施する特定実施例を図示する方法で示す。他の実施例は本発明の範囲から逸脱することなしに利用でき、また構造上の変形が可能であることが理解できる。可能な限り、同じ参照番号を、同じまたは同様の要素を示すように全図を通して使用する。多数の特定する詳細について、本発明を完全に理解するために説明する。しかし、本発明は特定する詳細な説明なしに、あるいはここに説明するある一定の別の等価なデバイスおよび方法で実行することが可能なことは当業者にとって明白である。他の例において、周知の方法、プロシージャ、要素およびデバイスは、本発明の不必要に不明瞭な状況にならないように、詳細に説明しない。
【００１２】
次なる詳細な説明は、次のセクションに編成される。すなわち、「本発明の一実施例に使用するのに適したシステムの一実施例の構造上の概略説明」、「調停工程の一実施例の詳細な説明」、「代表的なタイミング・シナリオ」および「代表的な調停制限計算」である。
【００１３】
（本発明の一実施例に使用するのに適したシステムの一実施例の構造上の概略説明）
図１はシステム１００の一実施例のブロック図を示し、そのハード・ディスク・コントローラ（ＨＤＣ）１２２が一般的に使用される。ＨＤＣコア１０２がホスト・バス・インターフェース１１０を介してホスト・システム・バス１１２を使用してホスト・システム１０８に接続されている。このホスト・システム１０８は、一つまたはそれ以上のホスト・システム・マイクロプロセッサ、システムＲＡＭ、モニタ、キーボードおよび他のデバイスで構成できる。
【００１４】
ホスト・システム１０８は、ホスト・システム・バス１１２を介してハード・ディスク１１４に記憶されるべきデータを交換またはこれからデータを検索する。ホスト・システム１０８からＨＤＣコア１０２への指令、例えばどのデータを検索するか、あるいはデータを記憶したことをホスト・システム・バス１１２を通して伝送する指令をする。
【００１５】
さらに、コントローラ・マイクロプロセッサ１０４が、マイクロプロセッサ・インターフェース１０６を介してＨＤＣコア１０２に接続されている。コントローラ・マイクロプロセッサ１０４は、一実施例において、ホスト・システム・マイクロプロセッサから区別され、ホスト・システム１０８からの指令を受信し、実行するとともに、ＨＤＣコア１０２を管理する。ハード・ディスク１１４がディスク・フォーマッタ１１６を介してＨＤＣコア１０２に接続されている。以下により詳しく説明するように、ディスク・フォーマッタ１１６はハード・ディスク１１４の操作を制御する。図示実施例において、ハード・ディスク１１４は磁気ディスク・デバイスおよび関連する回路要素からなる。コントローラ・バッファ・メモリ１１８が、バッファ・インターフェース１２０を介してＨＤＣコア１０２に接続されている。一実施例において、バッファ・メモリ１１８はランダム・アクセス・メモリ（ＲＡＭ）を使用して構成されている。ＲＡＭは動的または静的とすることができる。
【００１６】
図２はＨＤＣコア１０２と、関連するポート２０４、２０８、２１０、２１６の一実施例を示す。バス・インターフェース２０２が、ホスト・バス・ポート２０４のデータ・ライン、制御ラインおよび割り込みラインを介してホスト・システム１０８に情報を伝送し、またこれから情報を受信する。マイクロプロセッサ・インターフェース・ロジック２０６がコントローラ・マイクロプロセッサ１０４を、コントローラ・マイクロプロセッサ２０８のタイミング・ライン、アドレス・ラインおよびデータ・ラインを介してＨＤＣコア１０２に接続している。マイクロプロセッサ・バス２２０は、コントローラ・マイクロプロセッサ１０４をしてＨＤＣ１０２コア内の種々のユニットと通信するとともに、これらを制御できるようにしている。
【００１７】
図２に示したように、ディスク・フォーマッタ１１６がディスク・ポート２１０のデータ・ラインと制御ラインを介してディスク１１４に接続されている。リード・ソロモン・誤り訂正コード（ＥＣＣ）エンジン２１２がバスを介してディスク・フォーマッタ１１６に接続されている。ＥＣＣエンジン２１２は、ディスク上の誤り訂正コード発生の書込みだけでなく、ディスク上の誤り訂正の読込みを実行する。バッファ・コントローラ２１４がバッファ・ポート２１６のアドレス・ライン、タイミング・ラインおよびデータ・ラインを介してバッファ・メモリ１１８に接続されている。一実施例において、バッファ・コントローラ２１４はアービッタ（図示省略）を含み、ディスク・フォーマッタ１１６、ＥＣＣエンジン２１２、ホスト・バス・インターフェース２０２およびマイクロプロセッサ・インターフェース２０６、付加的に以下に説明する他のユニットによるバッファ・メモリ１１８へのアクセスを制御する。このアービッタについては、後ほど詳細に説明する。バッファ・メモリ１１８にアクセスする種々のユニットは、データ・バス２１８を介して行われる。データ・バス２１８がバッファ・ポート２１６を介してバッファ・メモリ１１８に接続されている。
【００１８】
図３はＨＤＣバス・アーキテクチャの一実施例を示す。バッファ・メモリ１１８にアクセスするユニットが、それぞれの「先入れ先出し」( ＦＩＦＯ) バッファ３０８、３１２、３１４、３１６、３１８および３２０によって実行される。これらのＦＩＦＯバッファはサイズに違いがある。一実施例において、ＦＩＦＯバッファは各々６４と９６バイトの間の記憶容量を有している。コントローラ・マイクロプロセッサ１０４がマイクロプロセッサＦＩＦＯ３０８を介してバッファ・メモリ１１８にアクセスする。バッファ・メモリ１１８は、コントローラ・マイクロプロセッサ１０４のためにメイン・メモリとして作用するとともに、命令とデータを記憶する。
【００１９】
ディスク・フォーマット・データ・フェッチ・ユニット３０４が、バッファ・メモリ１１８からディスク・フォーマット・データをフェッチするように作動する。ディスク・フォーマッタ１１６がこのデータ使用して、ホスト・システム・データをハード・ディスク１１４上に配置し、組織化する。メモリ・リフレッシュ・ユニット３０６は、バッファ・メモリがダイナミックＲＡＭを使用したときに、必要インターバルでバッファ・メモリ１１８をリフレッシュするように動作する。次に説明するように、一実施例において、ディスク・フォーマット・データ・フェッチ・ユニット３０４とメモリ・リフレッシュ・ユニット３０６両者が、バッファ・メモリ・アクセス調停の目的のために一つの調停スロットを共有する。従って、ただ一つのディスク・フォーマット・データ・フェッチ・ユニット３０４とメモリ・リフレッシュ・ユニット３０６のみが、単一アクセス・サイクル内でバッファ・メモリ１１８にアクセスできる。しかし、他の実施例において、メモリ・リフレッシュ・ユニット３０６とディスク・フォーマット・データ・フェッチ・ユニット３０４は各々それ自体の調停スロットを有している。ディスク・フォーマット・データ・フェッチ・ユニット３０４とメモリ・リフレッシュ・ユニット３０６は、そのそれぞれのＦＩＦＯバッファ３１４と３１６を介してバッファ・メモリ１１８にアクセスする。
【００２０】
図３に示したように、ＥＣＣエンジン２１２はＦＩＦＯ３１８を介してバッファ・メモリ１１８に接続されている。ＥＣＣエンジンＦＩＦＯ３１８は、データがバッファ・メモリ１１８内にある間、ハード・ディスク１１４から読み取られたデータを訂正するのに使用される。バッファ・コントローラ２１４が読取／訂正／書込工程によって訂正を首尾よく達成する。
【００２１】
ホスト・バス・インターフェース１１０がＦＩＦＯ３２０を介してバッファ・メモリ１１８に接続されている。ホスト・バス・インターフェース１１０が、ホスト・システム１０８とバッファ・メモリ１１８間のデータと指令をチャネルする。
【００２２】
図４はディスク・フォーマッタ１１６、ディスク・フォーマット・データ・フェッチ・ユニット３０４、メモリ・リフレッシュ・ユニット３０６、ＥＣＣエンジン２１２、マイクロプロセッサＦＩＦＯ３０８、ホスト・バス・インターフェース１１０およびアービッタ４０２間の接続回路網(connectivity)の一実施例を示す。アービッタ４０２はバッファ・メモリにアクセスする種々のユニット間をアービット（調停）する。アービッタ４０２は反復アクセス・サイクル中、ユニットを要求するためにアクセスを許可する。アクセス・サイクルは、一つの時間周期であり、この間、アクセスが、バッファ・メモリにアクセスする各ユニットに対して、または、アクセス・スロットを共有する一連のユニットに対して提供される。一実施例において、各ユニットは、アービッタ４０２が要求されたアクセスを許可することによる「ＡＣＫ」と名付けられた承認ラインだけでなく、バッファ・メモリ１１８へのアクセスを要求するための「ＲＥＱ」と名付けられたリクエスト・ラインを有している。
【００２３】
アービッタ４０２に接続された一連の調停制限レジスタ４１０−４１８は、それぞれのユニット調停制限を保持している。一実施例において、与えられた調停制限が、バッファ・メモリ１１８にアクセス可能な間、ユニットに対して利用可能なアクセス・サイクル当りのＨＤＣクロック・サイクルの数として特定される。調停制限レジスタは、ディスク・フォーマッタ調停制限レジスタ４１０、共有ディスク・フォーマット・データ・フェッチ・ユニットおよびメモリ・リフレッシュ・ユニット調停制限レジスタ４１２、ＥＣＣエンジン調停制限レジスタ４１４、マイクロプロセッサＦＩＦＯ調停制限レジスタ４１６およびホスト・バス・インターフェース（グローバル）調停制限レジスタ４１８を含んでいる。ディスク・フォーマット・データ・フェッチ・ユニット３０４およびメモリ・リフレッシュ・ユニット３０６は、同じ調停制限を共有し、また同じ調停制限レジスタ４１２を使用していることに注意しなければならない。次に説明する理由で、ホスト・バス・インターフェース調停制限レジスタ４１８は、グローバル調停制限レジスタとも呼ばれる。調停制限レジスタ４１０−４１８は、アクセス・サイクル中の各ユニットの最大特定アクセス持続期間中、ＨＤＣクロック・サイクル内で規定された時間制限を記憶する。一実施例において、アクセス持続期間は連続する時間周期の間である。さらに以下に説明するように、アービッタ４０２に調停制限カウンタ４０６とグローバル調停制限カウンタ４０８も接続され、調停制限値をロードし、デクリメントすることによってユニットのアクセス持続時間のトラックを維持するように使用される。グローバル調停制限カウンタ４０８がホスト・バス・インターフェースの利用可能アクセス時間をトラックし、調停制限カウンタ４０６が残りのユニットのために利用可能アクセス時間をトラックする。
【００２４】
図５は、書込データがＨＤＣ１０２の種々のユニットを通る場合の代表的ディスク書込シーケンス５００を示す。ホスト・システム１０８からのデータ５０２が、ホスト・バス・インターフェース１１０に到達し、ホスト・バス・インターフェースＦＩＦＯ３２０を介してバッファ・メモリ１１８に通される。ＦＩＦＯ３２０が、バッファ・メモリ１１８にアクセスするために待機している間、必要とされるデータ５０２をバッファする。一実施例において、データがセクターよりも小さいユニット（単位）で、一般的に５１２バイトでディスク１１４から読み取られるか、または記憶される。セクター未満のデータ量がアクセスするのに必要な場合、それでも全セクターがアクセスされる。少なくともデータの完全なセクターがバッファ・メモリ１１８内に記憶された後、データ５０２が巡回冗長検査（ＣＲＣ）タグと共動してディスク・フォーマッタＦＩＦＯ３１２を介してディスク・フォーマッタ１１６に方向付けられる。ＣＲＣはデータの正確さを確認するのに使用できるデータから発生されたコードである。ＦＩＦＯ３１２が、バッファ・メモリ１１８から到来したデータ５０２をバッファする。データ５０２とＣＲＣ５０８がディスク・フォーマッタ１１６の途中にある間、データ５０２とＣＲＣ５０８はＥＣＣエンジン２１２をも通過し、誤り訂正コード（ＥＣＣ）５１０を発生する。ＥＣＣ５１０は、ディスク・フォーマッタ１１６を通過してデータ５０２とＣＲＣ５０８に付加され、次に全てがディスク・フォーマッタ１１６によってハード・ディスク１１４に書き込まれる。
【００２５】
図６はデータがＨＤＣ１０２のユニットを通る場合の代表的ディスク読取シーケンス６００を示す。ＥＣＣ技術が使用されて、セクターのデータ６０４、ＣＲＣ６０６およびＥＣＣ６０２がハード・ディスク１１４への書き込み・読み出し工程中に破壊(corrupt) する可能性が補償される。次に説明するように、ＥＣＣエンジン２１２は、ハード・ディスク１１４から検索された後の未訂正データ６０４および（または）ＣＲＣ６０６を訂正するタスクを実行する。未訂正データ６０４、ＣＲＣ６０６およびＥＣＣ６０２がハード・ディスク１１４から読み取られるにつれて、ディスク・フォーマッタ１１６が未訂正データ６０４、ＣＲＣ６０６およびＥＣＣ６０２をＥＣＣエンジン２１２に送る。ディスク・フォーマッタ１１６がＥＣＣ６０２を除去し、未訂正データ６０４とＣＲＣ６０６をディスク・フォーマッタＦＩＦＯ３１２に伝送し、次にバッファ・メモリ１１８に送る。ディスク・フォーマッタＦＩＦＯ３１２が、バッファ・メモリ１１８へのアクセスを待機中、いずれの待ち時間（ラテンシー）も吸収する。未訂正データ６０４とＣＲＣ６０６がバッファ・メモリ１１８に記憶されるのに対して、ＥＣＣエンジン２１２がアルゴリズムを実行し、これが未訂正データ６０４、ＣＲＣ６００およびＥＣＣ６０２から誤り訂正情報６１２を生成する。ＥＣＣエンジン２１２がこの誤り訂正情報６１２をＥＣＣ ＦＩＦＯ３１８に通す。次に、バッファ・コントローラ２１４がＥＣＣ ＦＩＦＯ３１８内の誤り訂正情報６１２を使用して、バッファ・メモリ１１８内に残留する未訂正データ６０４とＣＲＣ６０６内のエラーを訂正するように試行される。バッファ・コントローラ２１４が、バッファ・メモリ１１８からの未訂正データ６０４および（または）ＣＲＣ６０６を読み取り、ＥＣＣ ＦＩＦＯ３１８内の情報６１４を使用して未訂正データ６０４および（または）ＣＲＣ６０６を適切に訂正することによって、データ６０４とＣＲＣ６０６を訂正し、また訂正データ６１６および（または）ＣＲＣ６１８をバッファ・メモリ１１８に戻して書き込む。次に、訂正データ６１６とＣＲＣ６１８がホスト・バス・インターフェースＦＩＦＯ３２０に送られる。こうしてＣＲＣ６１８がチェックされる。ＣＲＣチェックでデータ訂正操作が首尾よく実行されたかどうかが決定される。データ６１６が正しければ、データ６１６がホスト・バス・インターフェース１１０とホスト・システム１０８に送られる。データ６１６が正しくなければ、エラー信号が発生され、ホスト・システムに向けられる。
【００２６】
上述したように、ＨＤＣ１０２内の数個のユニットが、ディスク・データの一般的な読取り又は書込みのいずれか中にバッファ・メモリ１１８にアクセスする。バッファ・メモリがマイクロプロセッサのメイン・メモリとして作用するので、読取りと書込みシーケンス中に表されたアクセスのほか、コントローラ・マイクロプロセッサ１０４もバッファ・メモリ１１８にアクセスする。さらに、ディスクの書込み、または読取りが実行されるときに、ディスク・フォーマッタ１１６は、ディスク・フォーマット・データ・フェッチ・ユニット３０４によって検索され、バッファ・メモリ１１８に記憶されたディスク・フォーマット情報を利用する。バッファ・メモリのダイナミックＲＡＭ１１８もまた、周期的にリフレッシュされる必要があり、またこれで、バッファ・メモリ・リフレッシュ・ユニット３０６がバッファ・メモリにアクセスもする。
【００２７】
（調停工程の一実施例の詳細な説明）
調停方法および装置の一実施例が、全てのユニット要求アクセスによって周期的にアクセスすることを保証し、ユニット内の利用可能なアクセス時間の有効な割り当てを動的に提供する。アービッタ４０２が設定可能な調停制限の使用によって機能する。一実施例において、調停制限は、対応するユニットのための最大アクセス時間を表わすクロック・サイクル数に対応する。この制限はＲＯＭまたはＥＥＰＲＯＭのような不揮発性メモリ内にプログラムできる。別の方法として、調停制限はホスト・システムまたはコントローラ・マイクロプロセッサによってオン・ザ・フライ(on the fly)を決定し、設定することができる。
【００２８】
図７はアクセス・サイクル７００の一実施例を示す。アクセスサイクルの間、アービッタ４０２が所定の反復順でアクセス要求のために各ユニットをチェックする。ユニットがアービッタ４０２に対してそのＲＥＱラインになければ、アービッタ４０２が次のユニットのＲＥＱラインをチェックする。アービッタ４０２が、バッファ・メモリ・アクセスを要求するユニットを見つけるまで、アクセス・サイクルの回りで続行する。メモリ・リフレッシュ・ユニット３０６とディスク・フォーマット・データ・フェッチ・ユニット３０４が、同じアクセス・サイクル・スロットを競い合うことに注目すべきである。与えられたアクセス・サイクルにおいて、アービッタがメモリ・リフレッシュ・ユニット３０６またはディスク・フォーマット・データ・フェッチ、ユニット３０４の一つに対するアクセスのみを許可する。両方のユニット３０４／３０６が、同じサイクル内で要求されたアクセスを有する場合は、バッファ・メモリがその内容の消失を回避するためにリフレッシュを必要とするので、アービッタ４０２がメモリ・リフレッシュ・ユニット３０６に優先権を与える。すなわち、ディスク・フォーマット・データ・フェッチ・ユニット３０４が、次のアクセス・サイクルがアクセスを得るまで待機する。
【００２９】
図８−１１は調停工程の単一アクセスサイクルの一実施例の詳細なフローチャート８００を示す。一実施例において、調停工程はアービッタ・ステート・マシンを使用して制御される。調停工程がサイクルで行われるので、開始位置の選択は重要ではない。しかし、図示の目的で、開始工程８０２を示す。調停工程８０４−８１４の最初の部分は、ディスク・フォーマッタ・アクセスに向けられている。工程８０４において、ディスク・フォーマッタ１１６がディスク・フォーマッタＲＥＱラインのチェックによってバッファ・メモリ・アクセスが要求されているかどうかをアービッタ４０２がチェックする。ディスク・フォーマッタ１１６がアクセスを要求されておれば、アービッタ４０２は、工程８０６で、ディスク・フォーマッタのＡＣＫラインに乗せることによって、アクセスを許可する。工程８０８に進行し、アービッタ４０２がディスク・フォーマッタ調停制限を対応する調停制限レジスタ４１０から読取り、制限を調停制限カウンタ４０６にロードする。調停制限カウンタ４０６が、各ＨＤＣクロック・サイクル中、デクリメント（一つカウント・ダウン）される。次に、工程８１０、８１２において、調停制限カウンタ４０６がゼロに達したかどうか、さらにディスク・フォーマッタの要求ラインＲＥＱがなおも作動しているかどうかをアービッタ４０２が繰り返しチェックする。調停制限カウンタ４０６がゼロに達しているか、またはディスク・フォーマッタの要求ラインＲＥＱが不作動であれば、工程８１４においてアービッタ４０２は、ディスク・フォーマッタ承認ＡＣＫラインを取り下げる。上述した工程８０４において、ディスク・フォーマッタ１１６がアクセスを要求していなければ、アービッタが直接工程８０４から工程８１６に進行する。
【００３０】
調停工程の残りに進行する前に、工程８１６において、アービッタ４０２がグローバル調停制限レジスタ４１８からグローバル調停制限カウンタ４０８に調停制限をロードする。グローバル調停制限カウンタ４０８がアクセス・サイクルの残りの各クロック・サイクル中、デクリメントされる。従って、ＥＣＣエンジン２１２、マイクロプロセッサＦＩＦＯ３０８、ディスク・フォーマット・データ・フェッチ／メモリ・リフレッシュ・ユニット３０４／３０６およびバス・インターフェース・ユニット１１０がバッファ・メモリ１１８にアクセスしている間、グローバル調停制限がデクリメントされる。一度、グローバル調停制限カウンタ４０８がゼロに達すると、新しいアクセス・サイクルが始まり、再びディスク・フォーマッタ１１６へ、アクセスが要求される。
【００３１】
グローバル調停制限は、二つの目的を発揮する。第１に、グローバル調停制限は、ディスク・フォーマッタ１１６以外の全てのユニットに対して利用可能な時間を制限する。第２に、グローバル調停制限は、実際にホスト・インターフェース・ユニット１１０のための調停制限として機能する。ＥＣＣエンジン２１２、マイクロプロセッサＦＩＦＯ３０８およびディスク・フォーマット・データ・フェッチ／メモリ・リフレッシュ・ユニット３０４／３０６の各々は、それ自体の調停制限を有する。これらのユニットの各々がバッファ・メモリ１１８にアクセスしているときに、調停制限カウンタ４０６は、対応する調停制限からカウント・ダウンする。さらに、これらのユニットの各々がバッファ・メモリ１１８にアクセスしているとき、グローバル調停制限カウンタ４０８がグローバル調停制限からカウント・ダウンして、ホスト・インターフェース・ユニット１１０に対して要求されている時間を決定する。一度、ＥＣＣエンジン２１２、マイクロプロセッサＦＩＦＯ３０８およびディスク・フォーマット・データ・フェッチ／メモリ・リフレッシュ・ユニット３０４／３０６がそのアクセスを完了すると、ホスト・インターフェース・ユニット１１０には、グローバル調停制限カウンタ４０８の残り時間、アクセスが与えられる。
【００３２】
一度、グローバル調停制限カウンタ４０８がロードされると、アービッタ４０２が工程８１８に進行して、ＥＣＣエンジン２１２がＥＣＣエンジンＲＥＱラインをチェックすることによってアクセスが要求されているかどうかを決定する。ＥＣＣエンジン２１２がアクセスを要求されておれば、アービッタが工程８２０に進行し、ＥＣＣエンジンのＡＣＫラインを主張することによってアクセスを許可する。この時点で、アービッタ４０２が、対応する調停制限レジスタ４１２からＥＣＣエンジン調停制限を読取り、工程８２２に進行し、調停制限カウンタ４０６を設定する。ＥＣＣエンジンのアクセス時間周期中、調停制限カウンタ４０６が各クロック・サイクルでデクリメントされる。グローバル調停制限カウンタ４０８もこのサイクル中にデクリメントされることに注意しなければならない。次に、工程８２４、８２６において、調停制限カウンタ４０６がゼロに達したかどうか、また、ＥＣＣエンジンの要求ラインＲＥＱがなおも作動(raise) しているかどうか、アービッタ４０２が反復チェックする。調停制限カウンタ４０６がゼロに達したか、またはＥＣＣエンジンの要求ラインＲＥＱが不作動になれば、アービッタ４０２は、工程８２８において、ＥＣＣエンジンのＡＣＫラインを取り下げる。工程８１８において、ＥＣＣエンジン２１２がアクセスを要求しないのであれば、アービッタ４０２が直接、工程８３０に進行する。
【００３３】
一度、アービッタ４０２がアクセス・サイクルのＥＣＣエンジン部分を完了すると、ＥＣＣエンジン・アクセスに関して上述したのと同様の方式で、工程８３０−８４０において、アービッタ４０２がマイクロプロセッサＦＩＦＯ３０８へのアクセスを要求するように進行する。ＥＣＣエンジン２１２に関して、アクセスがマイクロプロセッサＦＩＦＯ３０８に対して許可されている間、調停制限カウンタ４０６とグローバル調停制限カウンタ４０８両者が、各クロック・サイクルでデクリメントされる。一度、アービッタ４０２がアクセス・サイクルのマイクロプロセッサＦＩＦＯ部分を完了すると、アービッタ４０２が工程８４２に進行する。
【００３４】
本実施例において、アービッタ４０２は、単一のアクセス・サイクルで、メモリ・リフレッシュ・ユニット３０６とディスク・フォーマット・データ・フェッチ・ユニット３０４の１つのみへのアクセスを許可する。従って、フローチャートは工程８４２でこの特徴に適応するように分岐している。バッファ・メモリ・リフレッシュ・ユニットの要求がディスク・フォーマット・データ・フェッチ・ユニットの要求に対して優先権を獲得する。従って、アービッタ４０２が、まずリフレッシュ・ユニット３０６がアクセスを要求しているかどうかを決定する。リフレッシュ・ユニット３０６がアクセスを要求しておれば、アービッタ４０２が、前回のユニットにつき上述したものと同様にしてシーケンス８４４−８５２に順行する。もちろん、この場合において、アービッタ制限カウンタ４０６はリフレッシュ／データ・フェッチ調停制限でロードされる。リフレッシュ・ユニット３０６がアクセスを要求していなければ、アービッタ４０２は工程８５４に進行し、ディスク・フォーマット・データ・フェッチ・ユニット３０４がアクセスを要求しているかどうかを決定する。もし要求しておれば、アービッタ４０２が、リフレッシュ・ユニット３０６のシーケンスと同様にシーケンス８５６−８６４に順行する。ディスク・フォーマット・データ・フェッチ・ユニット３０４もリフレッシュ・ユニット３０６もアクセスを要求していなければ、アービッタ４０２が直接工程８５４から工程８６６に進行する。この時点において、アービッタ４０２がホスト・インターフェース１１０にアクセスを要求する。
【００３５】
本実施例において、ホスト・インターフェース１１０のアクセス持続期間は、グローバル調停制限によってのみ制限される。上述したように、アクセスがディスク・フォーマッタ１１６に要求された後で、かつ、アクセスがＥＣＣエンジン２１２によって要求される前に、グローバル調停制限カウンタ４０６がリセットされ、さらにユニットがホスト・インターフェース１１０に先立って、バッファ・メモリ１１８にアクセスする間に、続いてデクリメントされる。ホスト・インターフェース１１０は、前回ユニットによって使用されなかったグローバル調停制限の残りのためにアクセスが許可される。ディスク・フォーマッタ１１６がバッファ・メモリ２８にアクセスしている間の時間の長さは、グローバル調停制限カウンタ４０８またはホスト・インターフェース１１０に割り当てられた時間の長さに影響を与えないことに注意しなければならない。これはグローバル調停制限カウンタ４０８が、ディスク・フォーマッタ１１６がアクセス・サイクル中にその順番が来た後でのみ設定されるからである。従って、ホスト・インターフェースは、連続したある長さの時間(block of time) でグローバル調停制限と同じくらいの所定最小時間と最大時間の範囲のアクセス時間が柔軟に要求される。
【００３６】
ホスト・インターフェース１１０へのアクセスを割り当てるために、工程８６６において、ホスト・インターフェース１１０がアクセスを要求しているかどうかアービッタがまずチェックする。もしそうであれば、工程８６８において、アービッタがホスト・インターフェースＡＣＫラインを主張し、これによってバッファ・メモリ１１８へのアクセスを許可する。グローバル調停制限カウンタ４０８がデクリメントを続行している一方で、ホスト・インターフェース・ユニット１１０がアクセスを許可する。本実施例において、グローバル調停制限が前のユニットの調停制限に順応するのに十分な大きさであり、さらにホスト・インターフェース・ユニットのために少なくともある一定の残りの時間を有している。次に、工程８７０、８７２において、アービッタ４０２は、グローバル調停制限カウンタ４０８がゼロに達したかどうか、またホスト・インターフェース・ユニット１１０がいまだアクセスを要求しているかどうかを、確認するために、繰り返しチェックする。グローバル調停制限カウンタ４０８がゼロに達すれば、あるいはホスト・インターフェース・ユニット１１０が、工程８７４においてそのＲＥＱラインに降下すれば、アービッタ４０２は、ホスト・インターフェースのＡＣＫラインを取り下げる。工程８６６において、ホスト・インターフェース１１０がアクセスを要求しなければ、アービッタ４０２が工程８６６から工程８７６を進行させる。この時点において、アービッタ４０２が一つのアクセス・サイクルを完了し、フローチャート８００の開始工程（状態）８０２に復帰する。
【００３７】
本発明の他の実施例において、ホスト・インターフェース・ユニットの調停制限が減算法よりはむしろ加算法で決定することができる。この場合において、グローバル調停制限カウンタ４０８が、ホスト・インターフェース１１０のために最小調停制限で初期化される。ＥＣＣエンジン２１２、マイクロプロセッサＦＩＦＯ３０８、メモリ・リフレッシュ３０６またはディスク・フォーマット・データ・フェッチ・ユニット３０４のいずれかによるアクセスが解除されると、調停制限カウンタ４０６に残留する値がグローバル調停制限カウンタ４０８に加算される。次に、グローバル調停制限カウンタ４０８が、ホスト・インターフェース１１０がバッファ・メモリ１１８にアクセスしている間だけデクリメントされる。この工程がこれまでに詳述したような技法と同じ結果を生じることになる。他の実施例において、早期のアクセス・ユニットの未使用アクセス時間は、いずれかの続いているユニットへの割り当てが可能である。さらに他の実施例において、早期のアクセス・ユニットの未使用アクセス時間が、最後のアクセス・ユニットよりもむしろ特定する続きのユニットに割り当てが可能である。
【００３８】
（代表的なタイミング・シナリオ）
図１２はアービッタ操作を示すいくつかの代表的調停制限と関連するタイミング図を示す。図示実施例で上述したように、調停制限は、ユニットがバッファ・メモリ１１８にアクセスできる間、対応するユニットに対して利用可能な各アクセス・サイクルのＨＤＣクロック・サイクルの数を表わしている。図示時間ライン９０２−９１８に関して、時間は図面の左側に向かって始まる。第１の時間ライン９０２は、トップ・レベルにおいて、調停工程が二つの部分に分割される状態を示している。第１部分はディスク・フォーマッタ１１６に割り当てられた時間、すなわちディスク調停制限からなる。第２部分は他の全てのユニットに割り当てられた時間、すなわちグローバル調停制限からなる。第２の時間ライン９０４は、動的ホスト・インターフェース調停制限と称されるホスト・インターフェース１１０に利用可能な時間が、ＥＣＣ２１２、マイクロプロセッサ３０８、リフレッシュ／データ・フェッチ３０４／３０６ユニットに対して許可された時間だけ減じられたグローバル調停制限と称される時間であることを表す。時間ライン９０６は、一実施例において、ＥＣＣ調停制限とマイクロプロセッサ調停制限とリフレッシュ／フォーマット・データ・フェッチ調停制限の合成されたものは、グローバル調停制限未満であり、これによって最小時間の長さが保証され、最小ホスト・インターフェース調停制限がホスト・インターフェース・ユニット１１０に割り当てられる、ということを示している。従って、たとえＥＣＣ２１２、マイクロプロセッサ３０８およびリフレッシュ／データ・フェッチ３０４／３０６ユニットが、それら全ての利用可能なアクセス時間を使用したとしても、ホスト・インターフェース１１０がバッファ・メモリ１１８にアクセスするための時間がなおも残っている。
【００３９】
図１２は代表的なバッファ・メモリ調停シーケンス９０８−９１８のタイミング図形を示す。各図形において、一つの完全なアクセス・サイクルは、どのようにアクセス・サイクル時間が変化するかという図で、示される。第１の代表的な調停シーケンス９０８は、全てのユニットがその最大アクセス時間を要求されたときに各ユニットに、割り当てられる相対的アクセス時間を示す。この場合において、総合アクセス・サイクル時間は、その最大状態にある。次のシーケンス９１０において、ＥＣＣエンジン２１２がそのＲＥＱラインを主張せず、また９０６で示された割り当てられた調停時間の途中約半分のところでアクセスが停止している。本例において、マイクロプロセッサＦＩＦＯ３０８は、まったくアクセスを要求しないが、ホスト・インターフェース１１０が要求し、残りの全ての利用可能時間が許可される。次のシーケンス９１２において、ＥＣＣエンジン２１２、リフレッシュ／データ・フェッチ・ユニット３０４／３０６およびマイクロプロセッサ３０８はバッファ・アクセスを要求しない。従って、完全なグローバル調停制限がホスト・インターフェース１１０に対する利用を可能にする。このシーケンスにおいて、ディスク・フォーマッタ１１６とホスト・インターフェース１１０が、各々に対する利用可能な時間を全て使用する。
【００４０】
次のシーケンス９１４において、ディスク・フォーマッタ１１６がそのＲＥＱラインを解放し、その利用可能な時間の約半分を使用するだけである。このシーケンスにおいて、ＥＣＣエンジン２１２、リフレッシュ／データ・フェッチ・ユニット３０４／３０６およびホスト・インターフェース１１０が、その利用可能なアクセス時間を全て使用する。ディスク・フォーマッタ１１６がそのアクセスを早期に放棄するので、完全なアクセス・サイクル時間は前回のシーケンス未満である。ＥＣＣ２１２、マイクロプロセッサ３０８およびリフレッシュ／データ・フェッチ３０４／３０６ユニットは、アクセスを要求しないことを除いては、シーケンス９１６はシーケンス９１４と同様である。しかし、ホスト・インターフェース１１０がこの場合に最大アクセスを要求し、また、他のユニットによって放棄された時間を使用する。最後のシーケンス９１８が表わしているのは、ディスク・フォーマッタ１１６がその全アクセス時間を要求し、ＥＣＣ２１２、マイクロプロセッサ３０８またはリフレッシュ／データ・フェッチ３０４／３０６ユニットはアクセスを要求せず、また、ホスト・インターフェース１１０のみがその利用可能なアクセス時間の端数(fraction)を要求するということである。この場合において、グローバル調停制限が決して到達しないので、総アクセス・サイクル時間が実質的に最大可能アクセス・サイクル時間未満となる。
【００４１】
（代表的調停制限計算）
調停制限は、次に含むようないくつかの要素に基づいている。すなわち、ディスク・フォーマッタＦＩＦＯサイズ、バッファ・メモリ・データ・バスの幅、ハード・ディスク・データ読取／書込速度、ＨＤＣ１０２のクロック速度、要求データがバッファ・メモリ１１８から読み取られる前の時間遅延と、アービッタ４０２が他の要素中でその操作が実行されるのに要する時間である。これらの要素は一般的に一定であり、ハード・ディスク・ユニットの設計と製造の時間で決定することができる。調停制限が不揮発性メモリに記憶されるか、またはこれらの要素はシステムの動作中、動的に決定することができる。
【００４２】
本発明の一実施例において、グローバル調停制限がハード・ディスク１１４の利用を最適になるように設定される。これはディスク・フォーマッタＦＩＦＯ３１２が決して空または、いっぱいになったままにらないことを保証することによって達成される。グローバル調停制限は、前のサイクル上でディスク・フォーマッタ１１６がバッファ・メモリ１１８にアクセスすることを放棄した時間と、次のサイクル上にあるバッファ・メモリ１１８からＦＩＦＯ３１２にデータの再度到来した時間との間のクロック・サイクル数を規定する。ＦＩＦＯ３１２内のデータがディスク書込にある限り、またＦＩＦＯ３１２がディスク読取上にない限り、ハード・ディスク１１４が最適に利用できる。
【００４３】
図５を参照して、ディスク書込み操作中、データ５０２がバッファ・メモリ１１８からディスク・フォーマッタＦＩＦＯ３１２に転送される。ディスク・フォーマッタ１１６がバッファ・メモリ１１８にアクセスしていないとき、ディスク・フォーマッタＦＩＦＯ３１２が続いて空となり、データがディスク・データ・レートでハード・ディスク１１４に書込まれる。ディスク・データ・レートは、データがハード・ディスク１１４に書込みされるか、またはこれから読取られる速度である。一実施例において、フルのディスク・フォーマッタＦＩＦＯ３１２を完全に空にする時間は、従って、次のように規定される：
空に至る時間＝( ＦＩＦＯサイズ）／（ディスク・データ・レート）
この時間はクロック周波数を乗算して、クロック・サイクル内の時間を発生させる。
【００４４】
空に至るクロック・サイクル＝（クロック周波数）×( ＦＩＦＯサイズ）／（ディスク・データ・レート）
グローバル調停制限をほぼクロック・サイクルの数に設定することにより、ハード・ディスク１１４のために、いっぱいのディスク・フォーマッタＦＩＦＯ３１２を空にし、ディスク・フォーマッタ１１６は、これがちょうど空になったときに、ＦＩＦＯ３１２を再充填することができる。従って、ディスク利用は最適になる。
【００４５】
グローバル調停制限の設定において、ある付加的な考慮がなされる。第１に、アービッタ４０２が、ユニットへのアクセスを許可するために、調停遅延と呼ばれるクロック・サイクルの有限数をとる。第２に、バッファ・メモリ１１８が転送データを開始するようにセットアップするために、セットアップ時間と呼ばれるクロック・サイクルの有限数をとる。第３に、バッファ・メモリ１１８からディスク・フォーマッタＦＩＦＯ３１２にデータを転送するために、読取遅延と呼ばれるクロック・サイクルの有限数をとる。従って、「空に至るクロック・サイクル」数が、調停遅延、セットアップ時間および読取遅延によって減じられ、これによってバッファ・メモリ１１８からのデータは、ＦＩＦＯ３１２がちょうど空になったときにディスク・フォーマッタＦＩＦＯ３１２に到来する。一実施例におけるこのような調整で、グローバル調停制限が次のようにして計算される：
グローバル調停制限＝（クロック周波数）×( ＦＩＦＯサイズ）／（ディスク・データ・レート）−（調停遅延）−（セットアップ遅延）−（読取遅延）
このグローバル調停制限は、ディスク書込みのタイミングに基づいているが、ディスク読取りのタイミングはアナログであり、同様の結果を生じる。
【００４６】
グローバル調停制限がなされる同じ調整が、減算する代わりに、ディスク・フォーマッタ調停制限に加算される。本質的に、グローバル調停制限から得られるサイクルはディスク・フォーマッタ調停制限に与えられ、フォーマッタ利用度を最大にする。しかし、ディスク・フォーマッタ調停制限が調整される前に、ベース調停制限が組み立てられる。
【００４７】
ディスク・フォーマッタ調停制限の計算において、ディスク・フォーマッタＦＩＦＯ３１２が空にされることと、充填されることが同時であるという事実を考慮する必要がある。好ましい実施例において、ディスク・フォーマッタ１１６がアクセスされ、またデータがバッファ・メモリ１１８からディスク・フォーマッタＦＩＦＯ３１２に転送されるときに、ディスク・フォーマッタ１１６がＦＩＦＯ３１２と、ハード・ディスク１１４を同時に空にする。ディスク・フォーマッタＦＩＦＯ３１２が同時に充填され、空にされるとき、充填される正味速度は、データがＦＩＦＯ３１２に配置される速度とデータがＦＩＦＯ３１２から移動される速度との差である。バッファ・データ・レートと呼ばれるデータがＦＩＦＯ３１２に配置される速度は、ＨＤＣバスの幅にクロック周波数を乗算したものに等しい。これによって、充填速度は次式で表すことができる： 充填速度(fill rate) ＝（バス幅）×（クロック周波数）−（ディスク・データ・レート）
ディスク・フォーマッタＦＩＦＯサイズが充填速度で割り算され、ディスク・フォーマッタＦＩＦＯ３１２を充填する時間が決定される。この結果はクロック周波数を乗算してクロック・サイクル数を発生させ、ディスク・フォーマッタＦＩＦＯ３１２を充填する： 充填に至るクロック・サイクル＝( ＦＩＦＯサイズ）×（クロック周波数）／（バス幅）×（クロック周波数）−（ディスク・データ・レート）
上述したように、ディスク・フォーマッタＦＩＦＯ３１２を充填するサイクル数の計算において、調停、セットアップおよび遅延時間が考慮される。しかし、ＦＩＦＯ３１２が充填されると、バッファ・メモリ１１８内のページ境界線が交差する機会がある。ページ境界線が交差したときに、別のセットアップ遅延が発生し、またこれで第２セットアップ遅延が計算中に含まれることになる。従って、得られるディスク・フォーマッタ調停制限が、調停遅延の付加的なオーバーヘッド時間だけ、すなわち、セットアップ遅延の２倍増加し、また読取遅延は： ディスク・フォーマッタ調停制限＝( ＦＩＦＯサイズ）×（クロック周波数）／（バス幅）×（クロック周波数）−（ディスク・データ・レート）＋（調停遅延）＋２×（セットアップ遅延）＋（読取遅延）
上述したようなディスク・フォーマッタとグローバル調整制限で、ディスク・フォーマッタ１１６とハード・ディスク１１４は最適の利用性を達成する。ＨＤＣ１０２内の他のユニットの調停制限は、グローバル調停制限によって制限を受ける。メモリ・リフレッシュ／ディスク・フォーマット・データ・フェッチ・ユニット３０４／３０６およびＥＣＣエンジン２１２は、一般的に予想できるバッファ利用特性を有している。従って、調停制限はこれらの特性に基づいて容易に選択できる。マイクロプロセッサＦＩＦＯの調停制限は、妥当な利用期待度を有している。最終的に、ホスト・バス・インターフェース利用度はかなり予想がしにくく、バス・インターフェース・ユニット１１０は残りのアクセス時間に割り当てられる。
【００４８】
本発明の他の実施例において、二つまたはそれ以上のユニットがグローバル調停制限の範囲外でアクセス時間が割り当てられる。さらに他の実施例において、どのユニットもグローバル調停制限の範囲外でアクセス時間に割り当てられるものはない。むしろ、全てのユニットがグローバル調停制限内でアクセスを許可され、またこれによってグローバル調停制限のみが最大アクセス・サイクル時間を規定する。さらに他の実施例において、グローバル調停制限下で制限されたユニット数は変更することができる。任意に、付加的なグローバル調停制限は同時にまたはシーケンス的に作動するように付加できる。他の実施例では、付加的なユニットが、ディスク・フォーマッタ１１６と同様の方式で、グローバル調停制限外でバッファ・メモリ１１８にアクセスすることを意図している。
【００４９】
ある代表的な好ましい実施例につき説明し、添付図面で示したが、このような実施例は単に示しただけで、広範な本発明を限定するものではないことを理解しなければならない。さらに、本発明は図示し説明した特定構造および構成に制限するのもではないことを理解すべきである。なぜなら、種々の修正例ないし変形例が、権利請求された本発明の精神と範囲から逸脱することなしに当業者に思いつく可能性があるからである。本発明の範囲はこの詳細な説明によって制限されず、ここに添付の請求の範囲によってなされることを意図している。
【図面の簡単な説明】
【図１】本発明の一実施例を実行するのに適用されたコンピュータ・システムの一実施例のブロック図
【図２】ディスク・コントローラ回路の一実施例を示す図
【図３】ディスク・コントローラのバス・アーキテクチャの一実施例を示す図
【図４】ディスク・コントローラ調停アーキテクチャの一実施例を示す図
【図５】一般的なディスク書込シーケンスとデータ・フォーマットの一実施例を示す図
【図６】一般的なディスク読取シーケンスとデータ・フォーマットの一実施例を示す図
【図７】調停シーケンスの一実施例を示す図
【図８】調停工程の一実施例のフロー・チャートを示す図
【図９】調停工程の一実施例のフロー・チャートを示す図
【図１０】調停工程の一実施例のフロー・チャートを示す図
【図１１】調停工程の一実施例のフロー・チャートを示す図
【図１２】調停制限の時間ラインとある代表的アクセス・タイミング図形を示す図
【図１】
0004313516.tif 000002
【図２】
0004313516.tif 000003
【図３】
0004313516.tif 000004
【図４】
0004313516.tif 000005
【図５】
0004313516.tif 000006
【図６】
0004313516.tif 000007
【図７】
0004313516.tif 000008
【図８】
0004313516.tif 000009
【図９】
0004313516.tif 000010
【図１０】
0004313516.tif 000011
【図１１】
0004313516.tif 000012
【図１２】
0004313516.tif 000013