(57)【要約】【課題】取外し可能なデータ記憶システムの性能を強化するデータフロー制御およびブリッジングアーキテクチャを提供する。【解決手段】１つの実現例では、この発明は、選択されたコマンドに関連付けられるデータ転送段階がホストコンピューティングシステムとターゲットの取外し可能なデータ記憶ユニットとの間で直接に発生するバイパスバスインプリメンテーションを提供する。１つの実現例では、この発明は、さらに、ＡＴＡＰＩインターフェイスなどの取外し可能な媒体インターフェイスをホストコンピューティングシステムにエミュレートし、ＡＴＡインターフェイスなどの固定媒体インターフェイスを実行するターゲットの取外し可能な記憶ユニットのためにこれらのコマンドを翻訳するデータフローおよびブリッジングアーキテクチャを提供する。さらに別の実現例では、この発明は、シリアルＡＴＡインターフェイスをサポートするデータフローおよびブリッジングアーキテクチャを提供する。【選択図】図４
2007026440.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
第１のインターフェイスと、
取外し可能なデータ記憶ユニットが取外し可能に接続され得る第２のインターフェイスと、
タスクファイルレジスタと、
コマンドデータバッファと、
前記第１のインターフェイスおよび前記第２のインターフェイスに動作可能に接続されるデータフロー制御回路とを含み、前記データフロー制御回路は、
前記第１のインターフェイスを介して前記タスクファイルレジスタで受取られたコマンドを前記コマンドデータバッファに書込み、
前記第１のインターフェイスと前記第２のインターフェイスとの間のデータの直接的な転送を準備するために、前記第２のインターフェイスを前記タスクファイルレジスタに条件付きで接続するように動作し、前記装置は、さらに、
プロセッサと、
メモリと、
前記メモリに物理的に格納された、コマンドを処理するためのアプリケーションとを含み、前記アプリケーションは、前記プロセッサおよび前記装置に、
前記コマンドデータバッファに格納されたコマンドを解釈させ、
前記コマンドデータバッファに格納された前記コマンドに基づいて、少なくとも１つのコマンドを前記取外し可能なデータ記憶ユニットに条件付きで伝送させることができる命令を含む、装置。
【請求項２】
コマンド実行のステータスを示すマシン状態レジスタをさらに含み、前記データフロー制御回路と、前記アプリケーションを実行する前記プロセッサとは、前記マシン状態レジスタによって示される前記ステータスに応答する、請求項１に記載の装置。
【請求項３】
前記データフロー制御回路と、前記アプリケーションを実行する前記プロセッサとは、ともに、前記マシン状態レジスタに書込み、前記マシン状態レジスタを読取るように動作する、請求項２に記載の装置。
【請求項４】
前記コマンドデータバッファは少なくとも１つのＦＩＦＯ（First In First Out）を含む、請求項１に記載の装置。
【請求項５】
前記タスクファイルレジスタはＡＴＡ／ＡＴＡＰＩ（Advanced Technology Attachment/Advanced Technology Attachment Packet Interface）タスクファイルレジスタである、請求項１に記載の装置。
【請求項６】
前記アプリケーションは、前記プロセッサおよび前記装置に、
前記取外し可能なデータ記憶ユニットに伝送するために前記コマンドデータバッファに格納された前記コマンドを翻訳させ、かつ、
前記翻訳されたコマンドを前記取外し可能なデータ記憶ユニットに伝送させることができる命令をさらに含む、請求項１に記載の装置。
【請求項７】
前記アプリケーションは、前記プロセッサおよび前記装置に、
前記翻訳されたコマンドに応答して、前記取外し可能なデータ記憶ユニットから応答データを受取らせ、かつ、
前記第１のインターフェイスを介してホスト装置に伝送するために前記応答データを翻訳させることができる命令をさらに含む、請求項６に記載の装置。
【請求項８】
取外し可能なデータ記憶ユニットをさらに含む、請求項１に記載の装置。
【請求項９】
前記取外し可能なデータ記憶ユニットはハードディスクドライブである、請求項８に記載の装置。
【請求項１０】
前記データフロー制御回路は、前記第１のインターフェイスの少なくとも１つの信号を前記第２のインターフェイスの少なくとも１つの信号に直接に渡すように動作する、請求項１に記載の装置。
【請求項１１】
前記第２のインターフェイスは、自動化されたカートリッジライブラリ機構内に位置する、請求項１に記載の装置。
【請求項１２】
ＳＡＴＡ（Serial Advanced Technology Attachment）ホストアダプタを含むホストシステムとターゲットのＳＡＴＡ（Serial Advanced Technology Attachment）ベースの取外し可能なデータ記憶ユニットとの間の通信インターフェイスを与える装置であって、
シリアルＡＴＡ（Advanced Technology Attachment）信号をパラレルＡＴＡ（Advanced
Technology Attachment）信号に変換するように動作する第１のブリッジ回路と、
パラレルＡＴＡ信号をシリアルＡＴＡ信号に変換するように動作する第２のブリッジ回路と、
プロセッサ、メモリ、およびコマンドデータバッファを含むマイクロコントローラユニットと、
前記第１および第２のブリッジ回路ならびに前記マイクロコントローラユニットに動作可能に接続されるデータフロー制御回路とを含み、前記データフロー制御回路はＡＴＡＰＩ（Advanced Technology Attachment Packet Interface）タスクファイルを維持し、前記データフロー制御回路は、
前記第１のブリッジ回路を介してＡＴＡＰＩタスクファイルレジスタで受取られたコマンドを前記コマンドデータバッファに書込み、
前記マイクロコントローラユニットによって伝送された制御信号に応答して、ホストシステムとターゲットの取外し可能なデータ記憶ユニットとの間のデータの直接的な転送を準備するために、前記第１のブリッジ回路を前記第２のブリッジ回路に接続するように動作し、前記装置は、さらに、
前記メモリに物理的に格納された、コマンドを処理するためのアプリケーションを含み、前記アプリケーションは、前記プロセッサに、
前記コマンドデータバッファに格納されたコマンドを解釈させ、
前記コマンドデータバッファに格納された前記コマンドに基づいて、少なくとも１つのコマンドを前記第２のブリッジ回路を介して前記取外し可能なデータ記憶ユニットに条件付きで伝送させることができる命令を含む、装置。
【請求項１３】
前記第２のブリッジ回路に取外し可能に接続されるＳＡＴＡベースの取外し可能なデータ記憶ユニットをさらに含む、請求項１２に記載の装置。
【請求項１４】
前記第１のブリッジ回路に取付けられるＳＡＴＡ（Serial Advanced Technology Attachment）ホストアダプタをさらに含む、請求項１２に記載の装置。
【請求項１５】
前記ＳＡＴＡベースの取外し可能なデータ記憶ユニットはＳＡＴＡ（Serial Advanced Technology Attachment）ハードディスクドライブである、請求項１３に記載の装置。
【請求項１６】
装置であって、
インターフェイスコネクタを含むターゲットＳＡＴＡ（Serial Advanced Technology A
ttachment）ハードディスクドライブを封入するカートリッジと、
キャリアコントローラおよびマッチングインターフェイスコネクタを含むキャリアとを含み、前記キャリアは前記カートリッジを受入れ、前記マッチングインターフェイスコネクタを前記ターゲットＳＡＴＡハードディスクドライブの前記インターフェイスコネクタに解放可能に取付けるように構成され、前記キャリアコントローラは、
シリアルＡＴＡ（Advanced Technology Attachment）信号をパラレルＡＴＡ（Advanced
Technology Attachment）信号に変換するように動作する第１のブリッジ回路と、
前記マッチングインターフェイスコネクタに結合され、パラレルＡＴＡ信号をシリアルＡＴＡ信号に変換するように動作する第２のブリッジ回路と、
プロセッサ、メモリ、およびコマンドデータバッファを含むマイクロコントローラユニットと、
前記第１および第２のブリッジ回路ならびに前記マイクロコントローラユニットに動作可能に接続されるデータフロー制御回路とを含み、前記データフロー制御回路はＡＴＡＰＩ（Advanced Technology Attachment Packet Interface）タスクファイルを維持し、前記データフロー制御回路は、
前記第１のブリッジ回路を介してＡＴＡＰＩタスクファイルレジスタで受取られたコマンドを前記コマンドデータバッファに書込み、
前記マイクロコントローラユニットによって伝送された制御信号に応答して、ホストシステムとターゲットの取外し可能なデータ記憶ユニットとの間のデータの直接的な転送を準備するために、前記第１のブリッジ回路を前記第２のブリッジ回路に接続するように動作し、前記キャリアコントローラは、さらに、
前記メモリに物理的に格納された、コマンドを処理するためのアプリケーションを含み、前記アプリケーションは、前記プロセッサに、
前記コマンドデータバッファに格納されたコマンドを解釈させ、
前記コマンドデータバッファに格納された前記コマンドに基づいて、少なくとも１つのコマンドを前記第２のブリッジ回路を介して前記ターゲットＳＡＴＡハードディスクドライブに条件付きで伝送させることができる命令を含む、装置。
【請求項１７】
コマンド実行のステータスを示すマシン状態レジスタをさらに含み、前記データフロー制御回路と、前記アプリケーションを実行する前記プロセッサとは、前記マシン状態レジスタによって示される前記ステータスに応答する、請求項１６に記載の装置。
【請求項１８】
前記データフロー制御回路と、前記アプリケーションを実行する前記プロセッサとは、ともに、前記マシン状態レジスタに書込み、前記マシン状態レジスタを読取るように動作する、請求項１７に記載の装置。
【請求項１９】
前記コマンドデータバッファは少なくとも１つのＦＩＦＯ（First In First Out）を含む、請求項１６に記載の装置。
【請求項２０】
前記アプリケーションは、前記プロセッサおよび前記装置に、
前記ターゲットＳＡＴＡハードディスクドライブに伝送するために前記コマンドデータバッファに格納された前記コマンドを翻訳させ、かつ、
前記翻訳されたコマンドを前記ターゲットＳＡＴＡハードディスクドライブに伝送させることができる命令をさらに含む、請求項１６に記載の装置。
【請求項２１】
前記アプリケーションは、前記プロセッサおよび前記装置に、
前記翻訳されたコマンドに応答して、前記ターゲットＳＡＴＡハードディスクドライブから応答データを受取らせ、かつ、
前記第１のブリッジ回路を介してホスト装置に伝送するために前記応答データを翻訳させることができる命令をさらに含む、請求項２０に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、「カートリッジキャリア（Cartridge Carrier）」と題される、ジョン・Ａ・ハミング（John A. Hamming）の名義の米国特許出願連続番号第１０／９４０，１１１号、ならびに「ロック可能な取出システムおよび方法（Lockable Ejection System and Method）」と題される、パトリック・Ｈ・マコーマック（Patrick H. McCormack）およびジョン・Ａ・ハミングの名義の米国特許出願連続番号第１０／９６２，４８４号という共通に所有される米国特許出願を参照し、これらはすべての目的で引用によって本明細書に全文が援用される。
【０００２】
発明の分野
この発明は、ハードディスクドライブを含むデータ記憶装置に関し、より特定的には、ホストコンピューティングシステムに設置されたキャリアからハードディスクドライブが取外し可能であるデータ記憶装置に関する。
【背景技術】
【０００３】
発明の背景
情報の価値および使用が増大するにつれて、個人および企業は情報を処理し、格納するためのさらに他の方法を求めている。この発展の１つの局面は、携帯型記憶装置における記憶容量の増加の需要が累進的に高まってきたことである。パーソナルコンピュータおよびワークステーションの出現により、デジタルデータが格納される媒体を取外すことがしばしば必要である。ユーザは、記憶媒体を異なる場所および／または異なるコンピュータシステムに携帯するためにそれを取外したいと思うだろう。さらに、格納されたコンピュータデータが機密事項を扱うものであったり、機密のものであったり、またはバックアップコピーが必要とされるときには、記憶媒体を安全な場所に移すことが望ましいであろう。１つの選択肢は、取外し可能なカートリッジに入れられるハードディスクドライブを使用することである。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
取外し可能なハードディスクドライブは典型的には、埃もしくは他の汚染物質、または硬い表面への急激な落下からハードディスクドライブを保護するために、分離材料を有するより大きな外殻またはカートリッジに収容される。したがって、カートリッジ１００（図１）は、ハードディスクドライブを収容する高耐久化された容器であり得る。カートリッジは、次いで、デスクトップまたはサーバシステムに設置されたキャリアを介して、より大きなコンピュータシステムまたはネットワークに接続される。キャリアは典型的には、キャリアに挿入されたハードディスクドライブをホストデスクトップまたはサーバシステムのマザーボードに動作可能に接続するようにインターフェイスおよび制御回路を含む。元のカートリッジが再び挿入されるか、または異なるカートリッジがデスクトップまたはサーバに設置されたキャリアに再び挿入されることができる。この挿入／取外しサイクルは、動作中に何度も発生し得る。
【０００５】
ハードディスクドライブカートリッジがキャリアに挿入されるたびに、ハードディスクドライブカートリッジは複数のインターフェイスコネクタによってホストコンピュータと電気的および論理的に相互接続されなければならない。そのために、キャリアはホストコンピュータと取外し可能なハードディスクドライブとの間のインターフェイスの橋渡しを
する。ハードディスクドライブは典型的には、取外し可能な媒体に向けられる機能をサポートしない、ＡＴＡ（Advanced Technology Attachment）プロトコルなどのデバイスインターフェイスおよびコマンドセットをサポートする。したがって、取外し可能なハードディスクシステムの実現への１つの技術的な課題は、ホストコンピュータに適切なデバイスインターフェイスを与えることである。たとえば、米国特許第６，６３３，４４５号は、キャリアがドライブ制御回路を含み、取外し可能なカートリッジがディスク媒体および読取／書込ヘッドを含む取外し可能なディスク記憶システムを開示する。キャリアはホストコンピュータとの通信のためにＡＴＡＰＩ（Advanced Technology Attachment Packet Interface）型インターフェイスを与え、ハードドライブ制御電子機器と通信するために、ＡＴＡプロトコルインターフェイスに好適な受取られたコマンドを変換する。
【０００６】
データ記憶業界は、さらに、データ記憶動作を高速化することに非常に注目してきた。上述の取外し可能なディスクドライブ技術はその意図される目的のために機能するが、ホストコンピューティングシステムとターゲットハードディスクドライブとの間のブリッジングおよび翻訳動作は、読取および書込動作の速度などのシステム性能を劣化させる可能性がある。上記の観点から、取外し可能なハードディスクドライブシステムにおけるデータ記憶動作の高速化に向けられる方法、装置、およびシステムの必要性が当該技術分野において存在する。この発明の実施例は実質的にこの必要性を満たす。
【課題を解決するための手段】
【０００７】
発明の概要
この発明は、取外し可能なデータ記憶システムの性能を強化するデータフロー制御およびブリッジングアーキテクチャに向けられる方法、装置、およびシステムを提供する。１つの実現例では、この発明は、選択されたコマンドに関連付けられるデータ転送段階がホストコンピューティングシステムとターゲットの取外し可能なデータ記憶ユニットとの間で直接に発生するバイパスバスインプリメンテーションを提供する。１つの実現例では、この発明は、さらに、ＡＴＡＰＩインターフェイスなどの取外し可能な媒体インターフェイスをホストコンピューティングシステムにエミュレートし、ＡＴＡインターフェイスなどの固定媒体インターフェイスを実行するターゲットの取外し可能な記憶ユニットのためにこれらのコマンドを翻訳するデータフローおよびブリッジングアーキテクチャを提供する。さらに別の実現例では、この発明は、シリアルＡＴＡインターフェイスをサポートするデータフローおよびブリッジングアーキテクチャを提供する。
【発明を実施するための最良の形態】
【０００８】
好ましい実施例の説明
教訓的な目的で、この発明の実施例は、図１、図２Ａ、図２Ｂ、および図３に示される取外し可能なカートリッジシステムに関連して動作する。しかしながら、この発明は、幅広い種類の取外し可能な媒体システムに関連して機能することができる。図１は取外し可能なカートリッジの実施例を示す。カートリッジ１００はその使用に必要などのような形状または大きさであってもよい。カートリッジ１００は、カートリッジ１００をキャリアに位置決めするのを助けるため、およびカートリッジ１００がキャリアに適切に挿入されることをユーザに知らせるために、ノッチ１０２および向きタブチャネル１０４を有し得る。図２Ａおよび図２Ｂは、この発明の１つの実現例に従うカートリッジキャリアの図である。カートリッジキャリア２００は、１つの実現例では、ドッキング機構であり、中にカートリッジ１００が挿入される。以下により詳細に記載されるように、カートリッジキャリア２００は、ホストコンピューティング装置のマザーボードと、カートリッジ１００に入れられるターゲットハードディスクドライブ７０との間の相互接続をもたらす。カートリッジキャリア２００は、上部カバー２０２、底部カバー２０４、および基部２０６を有することができ、それによって筐体を形成する。基部２０６は、底部カバー２０４および上部カバー２０２を接続し、筐体内に位置決めされる。カートリッジキャリア２００は
、デスクトップまたはサーバボックスのベイに設置するために３．５インチのフォームファクタに収まるように設計されてもよい。必要な任意の寸法を有するキャリア２００が作られてもよいが、外側の寸法はおおよそ、９０〜１１０ｍｍの幅、３０〜５０ｍｍの高さ、および約１３０〜１９０ｍｍの長さの間であり得る。図２Ｂが示すように、カートリッジキャリア２００は、ホストコンピューティング装置と以下に記載されるカートリッジキャリア電子機器との間の物理的な接続を考慮に入れるようにコネクタアセンブリ２２０を含む。もちろん、他の実現例が可能である。たとえば、キャリアは、ホストコンピューティングシステムの外側にあるドックなどのスタンドアロンのユニットであってもよい。
【０００９】
カートリッジキャリア２００は、１つの実現例では、筐体へのアクセスをもたらすために、およびカートリッジ１００をキャリアの中に誘導するために、開口アセンブリ２１０を有する。開口アセンブリ２１０は、ドア２０８、ライトパイプ開口２１４、および取出ボタン２１６を有し得る。開口アセンブリ２１０は、キャリア２００のプロファイルに合わせてカーブを付けられてもよく、キャリア２００よりも高さおよび幅が大きくてもよい。開口アセンブリ２１０は、スナップ式嵌合、摩擦嵌め、接着剤を用いる取付などの任意の手段によってキャリア２００に取外し可能に接続されてもよい。ドア２０８は、カートリッジが存在しないときに閉じられるばねであるように設計されることができ、カートリッジ１００に接触するように複数の竪管２１８ａ、２１８ｂを含み得る。ひだはドアおよびカートリッジ１００上の摩耗の跡を減少させる。上記の米国出願連続番号第１０／９４０，１１１号および第１０／９６２，４８４号は、挿入時に、カートリッジのデータ記憶ユニット間のインターフェイスコネクタを、キャリアの対応するインターフェイスコネクタに物理的に接続するなどの、カートリッジキャリアシステムの機械的な構成および動作の詳細をさらに提供する。
【００１０】
図４は、この発明の１つの実現例に従うハイレベルシステムアーキテクチャを示す機能ブロック図であり、このアーキテクチャは、キャリアコントローラ２０１および取外し可能なデータ記憶システム、ここではターゲットハードディスクドライブ（ＨＤＤ）（Hard
Disk Drive）７０の主要な構成要素を含む。１つの実現例では、キャリアコントローラ２０１のシステムアーキテクチャは概して、シリアル−パラレルインターフェイスブリッジ３２、３４、データフローコントローラ３６、マイクロコントローラユニット（ＭＣＵ）（Microcontroller Unit）４０、および電子的にプログラム可能な読出専用メモリ（ＥＥＰＲＯＭ）（Electronically Erasable Programmable Read-Only Memory）回路３９を含む。図４が示すように、カートリッジベースのハードディスクドライブ（ＨＤＤ）７０（カートリッジ１００に入れられる）はシリアル−パラレルインターフェイスブリッジ３４に接続するが、ホストコンピュータまたはサーバのマザーボード上のホストアダプタ３１はシリアル−パラレルインターフェイスブリッジ３２に接続する。１つの実現例では、カートリッジ１００に入れられるターゲットＨＤＤ７０は、標準的なＡＴＡ−６コマンドセットを実行するシリアルＡＴＡ（ＳＡＴＡ）（Serial Advanced Technology Attachment）ドライブである。たとえば、ターゲットＨＤＤ７０は、４０ＧＢから１２０ＧＢの範囲の容量のシリアルＡＴＡハードディスクドライブ（２  １／２″）であってもよい。１つの実現例では、ターゲットＨＤＤ７０はＦＡＴ（File Allocation Table）３２ファイルシステムでフォーマットされる。ＦＡＴ３２ファイルシステムは、マイクロソフト（登録商標）ウインドウズ（登録商標）、ノベルネットウェア（Novell NetWare）（登録商標）、アップルＭＡＣ  ＯＳ−Ｘ（登録商標）、およびリナックス（Linux）を含むいくつかのオペレーティングシステムによって認識される。もちろん、ターゲットＨＤＤ７０は、より大きなデータ容量またはより小さなデータ容量および他のファイルシステムをサポートしてもよい。１つの実現例では、ターゲットＨＤＤ７０は、ＡＴＡタスクファイル７２を実行するレジスタの組を含み、ＡＴＡタスクファイル７２を実行するレジスタの組は、ホストサイドおよびターゲットサイドの両方がアクセスできる、メモリの中の規定された位置を有する入力／出力レジスタの従来の組である。したがって、１つの実現例では、
シリアル−パラレルインターフェイスブリッジ３４はホストモードＳＡＴＡインターフェイス接続をターゲットＳＡＴＡ  ＨＤＤ７０にもたらす。
【００１１】
１つの実現例では、キャリアコントローラ２０１の電子構成要素は、ＳＡＴＡホストアダプタ３１からのＳＡＴＡベースのＡＴＡＰＩブロックコマンド／ステータス応答を、ターゲットＨＤＤ７０のＳＡＴＡドライブインターフェイスのＳＡＴＡベースのＡＴＡコマンドに翻訳する。１つの実現例では、キャリアコントローラ２０１は、インターフェイスブリッジ回路３２、３４によって与えられる２つのＳＡＴＡインターフェイス、つまりキャリア−マザーボードＳＡＴＡインターフェイス、およびＨＤＤ−キャリア（ホットプラグ）ＳＡＴＡインターフェイスを含む。典型的には、キャリア−マザーボードＳＡＴＡインターフェイス３２は、システムの電源が切られた状態でホストコンピューティング装置にキャリアを設置するときに接続され、ＳＡＴＡデバイスモードの物理的なインターフェイスをホストコンピューティングシステムに与える。ＨＤＤ−キャリア（ホットプラグ）ＳＡＴＡインターフェイスは、キャリア電力がかけられるときにカートリッジ１００の挿入および取外しを可能にするように設計され、ＳＡＴＡホストモードの物理的なインターフェイスをターゲットＨＤＤ７０に与える。ＳＡＴＡ／ＰＡＴＡインターフェイスブリッジ３２および３４は、１つの実現例では、ＳＡＴＡをパラレルＡＴＡ（ＰＡＴＡ）（Parallel Advanced Technology Attachment）に、またその逆に、変換する集積回路である。典型的には、ブリッジ回路は必要なシリアル−パラレル変換を実行するために論理およびバッファを処理することを含む。カリフォルニア州サニーベイル（Sunnyvale）のマーベルセミコンダクター社（Marvell Semiconductor, Inc.）によって提供される８８ＳＡ８０４０シリアルＡＴＡブリッジチップなどの任意の好適なＳＡＴＡ／ＰＡＴＡブリッジ回路が使用されることができる。
【００１２】
図４が示すように、１６ビットのパラレルバスはＳＡＴＡ／ＰＡＴＡブリッジ３２をデータフローコントローラ３６に接続する。データフローコントローラ３６は、１つの実現例では、タスクファイルレジスタ３８によって維持されるＡＴＡ／ＡＴＡＰＩタスクファイルを実行する。ＳＡＴＡ／ＰＡＴＡブリッジ３２は、ＳＡＴＡホストアダプタ３１とのＳＡＴＡ接続を、データフローコントローラ３６によって維持されるＡＴＡ／ＡＴＡＰＩタスクファイルレジスタ３８にマッピングする。第２の１６ビットのパラレルバスはデータフローコントローラ３６をＳＡＴＡ／ＰＡＴＡブリッジ３４に接続する。追加のパラレルバスはデータフローコントローラ３６をマイクロコントローラユニット４０に接続する。さらに、図４が示すように、マイクロコントローラユニット４０も、データフローコントローラ３６とインターフェイスブリッジ３４との間の１６ビットのパラレルバスに接続されて、ターゲットＨＤＤ７０からおよびターゲットＨＤＤ７０へのコマンドデータの受取および伝送を準備する。以下により詳細に記載されるように、データフローコントローラ３６は、マイクロコントローラユニット４０またはＳＡＴＡ／ＰＡＴＡブリッジ３２、３４のいずれかにデータのフローを選択的に方向付けるように動作する。データフローコントローラ３６はさまざまな物理的な構成で実現されることができる。たとえば、データフローコントローラ３６は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）（Field Programmable Gate Array）、結合プログラム可能論理回路（ＣＰＬＤ）（Complex Programmable Logic Device）、または特定用途向け集積回路（ＡＳＩＣ）（Application-Specific Integrated Circuit）などのプログラム可能な論理回路であってもよい。１つの実現例では、データフローコントローラ３６は、ホストシステムとターゲットＨＤＤ７０との間のデータ転送を高速化するためにブリッジ回路３２と３４との間のＵＤＭＡ（Ultra Direct Memory Access）またはＤＭＡ（Direct Memory Access）バーストをルーティングするが、翻訳および実行のためにＡＴＡＰＩコマンドをマイクロコントローラユニット４０へルーティングする。
【００１３】
マイクロコントローラユニット４０は、より十分に以下に記載されるように、ホストア
ダプタ３１に与えられるＡＴＡＰＩコマンドセットおよびインターフェイスから、ターゲットＨＤＤ７０に与えられるＡＴＡコマンドセットおよびインターフェイスへのコマンドブロックの解釈を仲裁する。マイクロコントローラユニット４０は、１つの実現例では、８０５１ＣＰＵ（Central Processing Unit）コア、ランダムアクセスメモリ（ＲＡＭ）（Random Access Memory）、コマンドデータを格納するためのコマンドデータＦＩＦＯ（First In First Out）４２、ならびに周辺装置および通信ポートを含むマイクロコントローラである。この発明の実施例において使用されることができる好適なマイクロコントローラは、カリフォルニア州サンホセ（San Jose）のサイプレスセミコンダクター社（Cypress Semiconductor Corporation）によって、ＣＹ７Ｃ６８０１３という型番で製造される。もちろん、他のＣＰＵコアおよび他のマイクロコントローラユニットが使用されることができる。１つの実現例では、ＥＥＰＲＯＭ回路３９は、ブート時にマイクロコントローラユニット４０のＲＡＭにロードされるファームウェアを格納する。上述のように、マイクロコントローラユニット４０およびデータフローコントローラ３６は、１つの実現例では、レジスタの組を使用するパラレルバスで通信する。１つの実現例では、コマンドデータＦＩＦＯ４２はコマンドデータにバッファを与え、３つの別個のＦＩＦＯ構造を含む。１つの実現例では、コマンドデータＦＩＦＯ４２は、ホストシステムからＡＴＡＰＩコマンドデータを受取るための第１のＦＩＦＯ、ターゲットＨＤＤ７０からＡＴＡコマンドデータを受取るための第２のＦＩＦＯ、およびターゲットＨＤＤ７０またはホストシステムのいずれかに伝送するためにコマンドデータを格納する第３のＦＩＦＯを含む。たとえば、マイクロコントローラユニット４０は、ホストシステムから受取られ、コマンドデータＦＩＦＯ４２の第１のＦＩＦＯに格納されたＡＴＡＰＩコマンドを翻訳することができ、インターフェイスブリッジ３４を介してターゲットＨＤＤ７０に伝送するためにＡＴＡコマンドを形成することができ、ＡＴＡコマンドをメモリに格納することができる。
【００１４】
以下に、より詳細に記載されるように、データフローコントローラ３６は、１つの実現例では、ホストコンピューティング装置から受取られたコマンドの処理を調整するためにデータフローコントローラ３６およびマイクロコントローラユニット４０が使用するマシン状態レジスタ３９を保持する。１つの実現例では、マイクロコントローラユニット４０およびデータフローコントローラ３６はともに、２つの構成要素間の通信インターフェイスを与え、コマンド処理のステータスを示す、マシン状態レジスタ３９などのレジスタの組に読み書きする。上述のように、データフローコントローラ３６は、ＡＴＡＰＩタスクファイルレジスタ３８を保持し、タスクファイル３８の制御レジスタに書込まれているパケットコマンドなどの、タスクファイルレジスタ３８の状態変化に応答する。いくつかの実現例では、ＡＴＡＰＩタスクファイルの状態変化は、マシン状態および他のレジスタの状態変化を引起す。たとえば、マシン状態レジスタ３９は、１つの実現例では、４ビットのレジスタであり、その状態はアイドル状態、コマンド状態、データ転送状態などのさまざまな起こり得るコマンド処理状態（図６Ａおよび図６Ｂならびに対応する以下の記載を参照）に対応する。
【００１５】
図５Ａおよび図５Ｂはともに、この発明の１つの実現例に従うキャリアコントローラ２０１の動作を示す状態図を提供する。図５Ａが示すように、キャリアコントローラ２０１は、コマンドパケットが検出される（３０４）、またはスタンバイタイマが経過する（３０８）までタスクファイル３８のレジスタの要求に応えるメインループを実行する。スタンバイタイマは、キャリアコントローラ２０１がアイドル状態に戻った後に開始されるカウンタである。スタンバイタイマが経過すれば、キャリアコントローラ２０１は節電のためにターゲットＨＤＤ７０をスタンバイモードにセットする（３０９）ようにコマンドをターゲットＨＤＤ７０に発行する。図５Ｂが示すように、スタンバイコマンドが発行された後、キャリアコントローラ２０１はＡＴＡコマンドのステータスを確認し、それを等価のＡＴＡＰＩセンスに翻訳する（３３８）。キャリアコントローラ２０１はＡＴＡＰＩコマンドシーケンスを完成させ、ステータスをタスクファイルレジスタ３８に戻し（３４０
）、メインループに戻る。別の実現例では、ターゲットＨＤＤ７０自体が、キャリアコントローラ２０１に対して自律的に動作するスタンバイ機構を実行し、キャリアコントローラ２０１でスタンバイ機能性を実現する必要性をなくす。図５Ａが示すように、キャリアコントローラ２０１は、さらに、ターゲットＨＤＤ７０が存在するかどうかを確認する（３０６）。カートリッジが存在しない場合、キャリアコントローラ２０１はカートリッジ存在フラグをクリアし、ＭＣＵ４０のメモリに格納された媒体情報を消去する（３０７）。
【００１６】
コマンドパケットがタスクファイルレジスタ３８に書込まれる（３０４）場合、キャリアコントローラ２０１は、コマンドブロックに入れられたコマンドパケットバイトを受取るようにマイクロコントローラユニット４０においてコマンドブロック（ＣＤＢ）ＦＩＦＯを準備し、コマンドブロックをパーズし、コマンド実行を開始する（３１０）。１つの実現例では、キャリアコントローラ２０１はターゲットＨＤＤ７０が存在するかどうかを確認する（３１２）。ターゲットＨＤＤ７０が存在する場合、キャリアコントローラ２０１は、１つの実現例では、ターゲットＨＤＤ７０が以前に存在したかどうかを確認する（３１４）。１つの実現例では、この確認はマイクロコントローラユニット４０によって保持されるフラグにアクセスすることによって実行され、このフラグは、セットされるとき、前回確認されたときにターゲットＨＤＤがキャリア２００にロードされたことを示す。ターゲットＨＤＤ７０が以前に存在しなかった場合、キャリアコントローラ２０１は「媒体は変化した」というセンスコードを戻し、新しいターゲットＨＤＤ７０をマウントし、この新しいターゲットＨＤＤ７０は、ＡＴＡ  ＩＤ（Identification）、機能セットを読取り、書込保護オプションを感知し、（１つの実現例では）ターゲットＨＤＤ７０を認証するためにパスワード交換を実行する。
【００１７】
ターゲットＨＤＤ７０が存在せず、受取られたコマンドが実行のためにターゲットＨＤＤ７０へのアクセスを要求する（３１８）場合、キャリアコントローラ２０１はＭＣＵ４０のメモリの中の「媒体は存在しない」というセンスコードを待ち行列に入れる（３１３）。たとえば、読取または書込コマンドはターゲットＨＤＤ７０へのアクセスを要求するが、ＡＴＡＰＩ「調査」コマンドはターゲットＨＤＤ７０へのアクセスを要求しない。図５Ａが示すように、受取られたコマンドがターゲットＨＤＤ７０へのアクセスを要求し、それが存在しない場合、キャリアコントローラ２０１はエラーステータスをタスクファイルレジスタ３８に戻す。その他の場合は、キャリアコントローラ２０１は図５Ｂに示されるコマンドを処理する。１つの実現例では、ＡＴＡＰＩセンスコードはＭＣＵ４０のメモリに格納される。１つの実現例では、センスコードがエラー状況に対応する場合、タスクファイルレジスタ３８におけるエラービットはホストシステムに対してセンスコードの存在を示すようにセットされる。ホストシステムは最終的には、リクエストセンス（Request Sense）コマンドを発行することによって、格納されたセンスコードを取得する。
【００１８】
図５Ｂは、さまざまなＡＴＡＰＩコマンドおよびこれらのコマンドに応答して実行される動作を示す。たとえば、ＡＴＡＰＩ  ＩＮＱＵＩＲＹ（ＩＮＱ）コマンドに応答して、キャリアコントローラ２０１は、キャリアファームウェア識別子、キャリアシリアルナンバーなどの、マイクロコントローラユニット４０によって実行される、ファームウェアの構成に基づいたパラメータデータを戻す（３５０）。開始／終了（start/stop）コマンドに応答して、キャリアコントローラ２０１はＡＴＡスタンバイ（Standby）コマンドを介してターゲットＨＤＤ７０に一命令を実行させる（３５６）。同様に、キャリアコントローラ２０１は、ＳＥＥＫコマンドに応答して、ＡＴＡシーク（Seek）コマンドを介してターゲットＨＤＤ７０に一命令を実行させる（３５２）。図５Ｂにおけるブロック３５４は、ＰＲＥＶＥＮＴ／ＡＬＬＯＷ、ＴＥＳＴ  ＵＮＩＴ  ＲＥＡＤＹ、ＲＥＱＵＥＳＴ  ＳＥＮＳＥ、ＲＥＡＤ  ＣＡＰＡＣＩＴＹ、ＭＯＤＥ  ＳＥＮＳＥ、およびＭＯＤＥ  ＳＥＬＥＣＴなどのその他のＡＴＡＰＩベースのコマンドを示す。キャリアコントローラ２０
１は、ＲＥＱＵＥＳＴ  ＳＥＮＳＥコマンドに応答して、待ち行列に入れられたセンス状況を戻す。ＲＥＡＤ  ＣＡＰＡＣＩＴＹコマンドに応答して、キャリアコントローラ２０１は、ターゲットＨＤＤ７０がマウントされたときに得られた識別データから得られる媒体容量を戻す。ＭＯＤＥ  ＳＥＮＳＥコマンドに応答して、キャリアコントローラ２０１は選択されたページに依存するデータを戻す。たとえば、ページに対応するデータのいくつかはパスワードパラメータである場合もあれば、他のデータタイプは接続速度データである場合もある。１つの実現例では、キャリアコントローラ２０１によって与えられる接続速度データは、要求を満たすように単に与えられる任意のデータである。ＴＥＳＴ  ＵＮＩＴ  ＲＥＡＤＹコマンドに対するキャリアコントローラ２０１の応答は、ターゲットＨＤＤ７０の存在に依存する。キャリアコントローラ２０１は、さらに、従来のＡＴＡＰＩ装置と同様のロッキング機構をもたらすようにＰＲＥＶＥＮＴ／ＡＬＬＯＷ（媒体取外し）コマンドをサポートする。１つの実現例では、キャリアコントローラ２０１はＭＯＤＥ  ＳＥＬＥＣＴコマンドに応答して動作せず、（パスワードコマンドデータの可能性を除いて）受取られたデータを単に廃棄する。
【００１９】
ＲＥＡＤコマンドまたはＷＲＩＴＥコマンドに応答して、キャリアコントローラ２０１は、より十分に以下に記載されるように、インターフェイスブリッジ回路３２、３４およびデータフローコントローラ３６を介して、ＳＡＴＡホストアダプタ３１とターゲットＨＤＤ７０との間の、コマンドに対応するデータの直接的な転送をセットアップする（３３２）。キャリアコントローラ２０１は、さらに、コマンド実行のためにターゲットＨＤＤ７０を準備するようにそのコマンドをＡＴＡコマンドに翻訳し、それをＳＡＴＡ／ＰＡＴＡブリッジ回路３４を介してターゲットＨＤＤ７０に伝送する（３３４）。その後、データフローコントローラ３６は、さまざまな動作を実行して、マイクロコントローラユニット４０による介入なくＳＡＴＡホストアダプタ３１とターゲットＨＤＤ７０との間で直接にデータを転送することを準備する。図５Ａが示すように、キャリアコントローラ２０１は、さらに、ＡＴＡコマンドのステータスを確認し、ステータスを等価のＡＴＡＰＩセンスに翻訳し（３３８）、ＡＴＡＰＩコマンドシーケンスを完成させ、ステータスをＳＡＴＡホストアダプタ３１に戻す（３４０）。この態様で、マイクロコントローラユニット４０による介入およびその動作に関連付けられるオーバーヘッドが低減されるので、ホストシステムとターゲットＨＤＤ７０との間のデータ転送速度は改善される。インテリジェントデュアルブリッジングシステムアーキテクチャもホストシステムの構成の問題を最小限にし、ユニークなドライバの開発を必要としない。つまり、この発明のいくつかの実現例は標準的なＳＡＴＡドライバとともに使用されることができる。キャリアコントローラ２０１をＳＡＴＡデータストリームに置くことによって、ターゲットＨＤＤが挿入されたかどうかにかかわらず、オペレーティングシステムのホストドライバがキャリアへのＳＡＴＡ通信を保持することが確実になる。
【００２０】
図６Ａ、図６Ｂ、および図６Ｃは、ＲＡＭに格納されたファームウェアを実行するデータフローコントローラ（ＤＦＣ）（Data Flow Controller）３６およびマイクロコントローラユニット（ＭＣＵ）４０によって実現されるマシン状態レジスタの遷移およびプロセスフローを示す。以下の記載が提供するように、キャリアコントローラ２０１はホストから受取られたＡＴＡコマンドおよびＡＴＡＰＩコマンドの両方を処理することができる。さらに、キャリアコントローラ２０１は、データ転送がホストシステムとターゲットＨＤＤ７０との間で直接に発生するかどうか、またはＭＣＵ４０がコマンドに関連付けられるデータ転送に介入するかどうかによって、特定のＡＴＡＰＩコマンドを異なったように処理する。図６Ａおよび図６Ｂは、ＡＴＡＰＩコマンドを処理することに関連付けられるマシン状態レジスタの遷移およびプロセスフローを示し、図６Ｃは、ＡＴＡコマンドを処理することに関連付けられるマシン状態レジスタの遷移およびプロセスフローを示す。図６Ｂは、ＡＴＡＰＩコマンドを処理することに関連付けられるプロセスフローをより具体的に示し、このプロセスフローでは、コマンドデータが受取られた後、データ転送がデータ
フローコントローラ３６を介してホストシステムとターゲットＨＤＤ７０との間で直接に発生する。
【００２１】
図６Ａが示すように、マシン状態レジスタ３９はＩＤＬＥ状態にある間、００００にセットされる。データフローコントローラ３６がタスクファイル３８のコマンドレジスタでパケットコマンド（Ａ０ｈ）を受取るとき、データフローコントローラ３６はマシン状態レジスタ３９をRecv_CMDpkt状態（１０００）にセットする。この状態を検出すると、マイクロコントローラユニット４０はタスクファイルレジスタを読取り、コマンドを実行するために適切に動作する。１つの実現例では、次のクロック信号で、データフローコントローラ３６はタスクファイル３８のステータスレジスタにおいてＢＳＹビットをセットし、マイクロコントローラユニット４０がコマンドに対して動作するまでこの状態に留まる。１つの実現例では、ＭＣＵ４０は、ＳＡＴＡホストアダプタ３１からのコマンドパケットバイトの受取を開始するようにマシン状態レジスタ３９をGet_CMDpkt状態（１００１）にセットする。１つの実現例では、ＭＣＵ４０は、さらに、コマンドパケットの長さ（ＡＴＡＰＩコマンドには１２バイトまたは６ワード）である転送されるべきワードの数で、データフローコントローラ３６によって維持されるデータカウントレジスタをプログラムする。ＭＣＵ４０は、さらに、データフローコントローラ３６がコマンドパケットデータをコマンドデータＦＩＦＯ４２のＦＩＦＯに書込むことを可能にするように、コマンドデータＦＩＦＯ４２への外部アクセスを可能にする。最後に、ＭＣＵ４０は、タスクファイル３８のステータスレジスタにおいてＤＲＱビットを１にセットし、次いでＢＳＹビットを０にセットすることによってSending_CMDpkt状態（１０１０）への遷移を可能にし、ＳＡＴＡホストアダプタ３１に、タスクファイル３８のデータレジスタを介してコマンドデータＦＩＦＯ４２にデータをストローブさせる。
【００２２】
コマンドパケットバイトがタスクファイル３８のデータレジスタに書込まれるとき、データフローコントローラ３６はコマンドパケットバイトをコマンドデータＦＩＦＯ４２のＦＩＦＯに直接に書込み、各々のワードが受取られるときにデータカウントレジスタをデクリメントする。図６Ａが示すように、コマンドパケットの転送が完了するとき、データフローコントローラ３６はタスクファイル３８のステータスレジスタにおいてＤＲＱビットを０にセットし、ＢＳＹビットを１にセットする。データフローコントローラ３６は、さらに、マシン状態レジスタ３９の状態をCMDpkt_DONE状態（１０１１）に進める。
【００２３】
ＭＣＵ４０は、次いで、コマンドデータＦＩＦＯに格納されたコマンドパケットを読取り、コマンドをパーズし、そのコマンドに応答して動作する。この発明の１つの実現例に従って、キャリアコントローラ２０１は２つの異なる態様でＡＴＡＰＩコマンドを処理する。上述のように、キャリアコントローラ２０１は、ターゲットＨＤＤ７０とホストシステムとの間での、コマンドに対応する直接的な転送を準備するために、ＲＥＡＤコマンドおよびＷＲＩＴＥコマンドなどの特定のコマンドを処理する。以下に、より十分に記載されるように、ＭＣＵ４０はＲＥＡＤコマンドまたはＷＲＩＴＥコマンドを等価のＡＴＡコマンドに翻訳し、そのコマンドをターゲットＨＤＤ７０に発行する。一旦ターゲットＨＤＤ７０がデータ転送の準備が整うと、キャリアコントローラ２０１は図６Ｂに示されるプロセスフローに進み、このプロセスフローは以下に、より十分に記載される。
【００２４】
キャリアコントローラ２０１は、異なる非直接的な態様で他の（非読取／書込ブロック）ＡＴＡＰＩコマンドを処理する。さらに、非直接的な態様で処理されるＡＴＡＰＩコマンドについてでさえ、いくつかのＡＴＡＰＩコマンドはホストシステムへまたはホストシステムからのデータの転送を要求するが、他のＡＴＡＰＩコマンド（ＳＴＡＲＴ／ＳＴＯＰ、ＳＥＥＫなど）はデータの転送を要求しない。図６Ａが示すように、ＡＴＡＰＩコマンドがホストへ／ホストからのデータ転送を要求しない場合、ＭＣＵ４０はコマンドを処理および実行し、マシン状態レジスタをステータス表示状態（０１０１）に進める。
【００２５】
ＡＴＡＰＩコマンドがホストシステムへまたはホストシステムからのデータ転送を要求する場合、図６Ａに示されるプロセスフローが実行される。１つの実現例では、ＭＣＵ４０は、データがＳＡＴＡホストアダプタ３１に戻されるべきであるか、またはＳＡＴＡホストアダプタ３１から受取られるべきであることを示すために、マシン状態レジスタ３９をSend_DATA状態（００１０）にセットする。Send_DATA状態は、１つの実現例では、ＡＴＡＰＩ  ＩＮＱ、ＭＯＤＥ  ＳＥＮＳＥ／ＳＥＬＥＣＴ、ＲＥＱＵＥＳＴ  ＳＥＮＳＥなどの非直接的なコマンドを処理するように主に意図される。この状態をセットする前に、ＭＣＵ４０は転送されるべきワードの数（１６ビット）で、データフローコントローラ３６によって維持されるデータカウントレジスタをプログラムする。さらに、データがホストから転送されるべきである場合、Send_DATA状態（００１０）をセットする前に、ＭＣＵ４０はコマンドデータＦＩＦＯ４２のＦＩＦＯにおいて適切なデータを準備する。ＭＣＵ４０は、Send_DATA状態をセットする前にいくつかの動作を実行してもよい。たとえば、ＡＴＡＰＩ  ＩＤ（Identification）コマンドをエミュレートするプロセスの一部は、ＡＴＡ  ＩＤコマンドをターゲットＨＤＤ７０に送ってもよく、タスクファイル３８のレジスタを介してホストシステムに伝送するためにコマンドデータＦＩＦＯ４２の別のＦＩＦＯに格納される応答を構成するように戻りデータを受取り、パーズする。
【００２６】
図６Ａが示すように、Send_DATA状態（００１０）をセットした後、ＭＣＵ４０はタスクファイル３８のステータスレジスタにおいてＢＳＹビットをクリアし、ＤＲＱビットをセットする。Send_Data状態とＤＲＱビットの設定とに応答して、データフローコントローラ３６は、コマンドデータＦＩＦＯ４２からデータを読取るためのまたはコマンドデータＦＩＦＯ４２にデータを書込むための制御信号をセットアップし、マシン状態レジスタ３９をSending_DATA状態（００１１）にセットする。ＤＭＡビットが０にセットされる場合、データフローコントローラ３６はホストとともにＰＩＯプロトコルを使用する。ＤＭＡビットが１にセットされる場合、データフローコントローラ３６はＤＭＡプロトコルを利用してデータを転送する。１つの実現例では、データ転送の方向は方向（Direction）ビット（たとえば、０−入−書込コマンド、１−出−読取コマンド）から決定される。
【００２７】
ＤＲＱビットをセットすることは、データフローコントローラ３６に、マシン状態レジスタ３９をSending_DATA状態（００１１）に進めさせる。この状態で、ホストは、データ転送が完了するまでタスクファイル３８のレジスタからデータを書込むか、またはデータを読取る。データフローコントローラ３６は、各々のワードが転送されるときにデータカウントレジスタの値を減らす。ＵＤＭＡ転送モードが使用される場合、データフローコントローラ３６は、ホストがＤＭＡＣＫ、ならびにＳＴＯＰ（ディアサートされる）およびＨＤＭＡＲＤＹ（アサートされる）についての適切な状況をアサートするのを待つ。次いで、データがホストに転送されるべきである場合、データフローコントローラ３６はＤＳＴＲＯＢＥを介してホストをストローブする。データがホストから転送されるべきである場合、ホストはＨＳＴＲＯＢＥを介してタスクファイルレジスタ３８にデータをストローブする。
【００２８】
ＵＤＭＡ転送が進むにつれて、データカウントレジスタは送られる各々のワードを逆に数える。転送の間、データフローコントローラ３６のホストのいずれかは、バス制御信号（ホストからのＳＴＯＰ／ＤＭＡＣＫ、およびデータフローコントローラ３６からのＤＤＭＡＲＤＹ／ＤＭＡＲＱ）の使用によっていつでもＵＤＭＡの停止を強制し得る。これは、完全なＵＤＭＡ転送を複合セグメントまたはバーストに分割するという効果を有する。ＵＤＭＡのこれらの各々の停止時に、およびホストがＤＭＡＣＫ（現在のＵＤＭＡセグメントの結論を知らせる）をディアサートする時点で、ＵＤＭＡのそのセグメントのＣＲＣ（Cyclic Redundancy Code）値はホストによってデータフローコントローラ３６に送られる。このＣＲＣは、ＵＤＭＡの現在のセグメントにおいて送られたデータ全域で計算され
る。データフローコントローラ３６は、転送されたデータの正確さを検証するために、このＣＲＣを内部で計算されたものと比較する。本明細書に記載される実現例では、ＣＲＣ値は、コマンドがデータをホストに戻していたか、またはデータをホストから受取っていたかにかかわらず、ホストからデータフローコントローラに流れる。セグメントのためのセットされた大きさは存在せず、転送全体を単一のセグメントとして送ることが可能である。
【００２９】
同様に、ＤＭＡ転送モードが使用される場合、データフローコントローラ３６はホストからＤＭＡＣＫをアサートするように待つ。ホストはＩＯＲを使用してタスクファイル３８のレジスタにデータをストローブし、ＩＯＷを使用してタスクファイルのレジスタからデータをストローブする。データが転送されるとき、データフローコントローラ３６はデータカウントレジスタの値を０になるまで減らし、マシン状態レジスタをDATA_Complete状態（０１００）に進める。データフローコントローラ３６は、さらに、タスクファイル３８のステータスレジスタにおいてＢＳＹビットを１にセットし、ＤＲＱビットをクリアする（転送されるデータはそれ以上ない）。さらに、転送されるべきデータのさらに他のブロックが存在する場合、図６Ａに示されるループが繰返される。受取られたコマンドがホストからデータを要求する場合、ＭＣＵ４０は次いでコマンドデータＦＩＦＯ４２のＦＩＦＯに格納されたコマンドをパーズし、コマンドを実行するように準備する。ホストがコマンドを含むデータの転送を終えるとき、コマンドが実行される。
【００３０】
データ転送が完了し、コマンドが実行された後、ＭＣＵ４０はＳＴＡＴＵＳ状態（０１０１）に進む。ＭＣＵ４０はＳＴＡＴＵＳ状態（０１０１）を使用して、最後のコマンドのためのステータスが準備できたことを示す。マシン状態レジスタ３９をＳＴＡＴＵＳ状態にセットする前に、ＭＣＵ４０はタスクファイル３８のレジスタにおいて特定の情報をセットする。たとえば、エラーがコマンドに関連して検出される場合、ＭＣＵ４０はタスクファイル３８のステータスレジスタにエラービットをセットし、（適切な場合）センス状況を待ち行列に入れ、タスクファイル３８のエラーレジスタにセンスタイプをセットする。エラーが検出されない場合、ＭＣＵ４０は、ＥＲＲビットおよびタスクファイル３８におけるエラーレジスタが確実にクリアされるようにする。さらに、ＭＣＵ４０は次いで、ホスト装置へのステータス割込を発生させるためにタスクファイル３８にＨｏｓｔＩＮＴビットをセットし、ＢＳＹビットをクリアし、コマンド処理などを確認するためにホストがタスクファイルにおける他のレジスタを読取ることを可能にする。１つの実現例では、タスクファイル３８のステータスレジスタが読取られ、マシン状態レジスタ３９をＩＤＬＥ状態にセットした後、データフローコントローラ３６はＨｏｓｔＩＮＴビットをクリアする。
【００３１】
上述のように、ＲＥＡＤコマンドおよびＷＲＩＴＥコマンドなどの特定のコマンドは、ＳＡＴＡホストコントローラ３１とターゲットＨＤＤ７０との間の直接的なデータ転送を伴う。以下が示すように、いくつかの直接的なコマンド処理状態では、ターゲットＨＤＤ７０からの特定のインターフェイス信号はキャリアコントローラ２０１のホストサイドインターフェイスに直接に渡される。たとえば、データフローコントローラ３６は、直接的なＤＭＡ／ＵＤＭＡデータ転送の間、ホストサイドＤＭＡＲＱ信号をターゲットサイドＤＭＡＲＱ信号にパッチする。以下に記載する目的で、インターフェイス信号識別子に関連するＨ＿（たとえば、Ｈ＿ＤＭＡＲＱ）の使用はホストサイドインターフェイス信号を指し、Ｔ＿（たとえば、Ｔ＿ＤＭＡＲＱ）の使用はターゲットサイドインターフェイス信号を指す。図６Ｂは、ＭＣＵ４０の介入なくデータを直接に転送するためのプロセスフローおよびマシン状態レジスタコードを示す。１つの実現例では、ＭＣＵ４０は、ＳＡＴＡホストアダプタ３１とターゲットＨＤＤ７０との間の直接的な通信をセットアップする動作を開始するためのＡＴＡＰＩ  ＷＲＩＴＥコマンドまたはＲＥＡＤコマンドを検出した後、マシン状態レジスタ３９をwriteORread_DATA１状態（１１００）にセットする。ＭＣＵ
４０をデータ転送経路から取外すことは、高性能のデータ転送を容易にし、データ速度を増加させる。
【００３２】
writeORread_DATA１状態（１１００）に入る前に、ＭＣＵ４０は、ＲＥＡＤコマンドまたはＷＲＩＴＥコマンドを処理するようにターゲットＨＤＤ７０を準備する。１つの実現例では、ＭＣＵ４０は等価のＤＭＡ／ＵＤＭＡまたはＰＩＯ読取もしくは書込ＡＴＡコマンドを準備し、データを読取るまたはデータを書込むように等価のＤＭＡ／ＵＤＭＡまたはＰＩＯ読取もしくは書込ＡＴＡコマンドを準備するためにそれをターゲットＨＤＤ７０に送る。プログラムされた入力／出力（ＰＩＯ）（Programmed Input/Output）転送の場合、ＭＣＵ４０はＡＴＡ  ＰＩＯベースの読取または書込コマンドをターゲットＨＤＤ７０に伝送する。ターゲットＨＤＤ７０はコマンドを処理し、そのタスクファイル７２のステータスレジスタにおいてＤＲＱビットをセットし、ＢＳＹビットをクリアする。この状態を検出し、方向ビットを確認すると、データフローコントローラ３６はタスクファイル３８のレジスタを介してＳＡＴＡホストアダプタ３１をターゲットＨＤＤ７０のデータレジスタに直接にインターフェイスで接続する。１つの実現例では、データフローコントローラ３６は、ホストサイド制御信号Ｈ＿ＤＩＯＷ♯およびＨ＿ＤＩＯＲ♯ならびにＨ＿ＩＯＲＤＹを、直接にターゲットＨＤＤ７０の等価の信号に適切にインターフェイスで接続する。１つの実現例において、データレジスタを超えて、ホストアダプタ３１がその他のタスクファイルレジスタにアクセスするとき、ホストアダプタ３１はデータフローコントローラ３６内のタスクファイルレジスタ（つまり、タスクファイル３８）にアクセスすることになる。たとえば、１つの実現例では、ＭＣＵ４０は、Sending_DATA状態をセットした後、ターゲットＨＤＤサイドのアドレスを強制的に１Ｆ０（Ａ０＝Ａ１＝Ａ２＝０，ＣＳ０＝０，ＣＳ１＝１）にし、これはホストがターゲットＨＤＤ７０のデータレジスタを直接に読取るまたは書込むことを可能にする。ＭＣＵ４０は、上述のように、タスクファイル３８のステータスレジスタにおいてＤＲＱビットを１にセットし、ＢＳＹビットを０にセットすることによってデータ転送を可能にする。データ転送の間、１６ビットのＦＤ＜１５：０＞バスは、データフローコントローラ論理を介してホストバスＨ  ＤＤ０−１５に渡される（方向は方向ビットの設定に依存する）。ＳＡＴＡホストアダプタ３１およびターゲットＨＤＤ７０は、Sending_DATA状態（１１０１）にある間、データを直接に転送する。
【００３３】
データ転送の間、データフローコントローラ３６は、データカウントレジスタの値を０になるまで減らす。１つの実現例では、データフローコントローラ３６は、データ転送コマンドの進行を確認するためにタイムアウト機構を適用することができる。データフローコントローラ３６は、データカウントレジスタの値がタイムアウト後に減らされなかった場合に回復方法を適用することができる。いずれの転送モード（ＤＭＡまたはＰＩＯ）でも、各々のワードがインターフェイスを介してストローブされるとき、データフローコントローラ３６はデータカウントレジスタの値を減らす。データカウントレジスタの値が０になるとき、データフローコントローラ３６はタスクファイル３８のステータスレジスタにおいてＢＳＹビットをセットし、マシン状態レジスタをDATA_Complete状態（１１１０）に移動する。さらに、コマンドが処理されているが、ＳＡＴＡキャリアが廃棄されたことをＭＣＵ４０が検出する場合（ターゲットＨＤＤの取外しを示す）、ＭＣＵはマシン状態レジスタ３９をエラー状態（１１１１）に遷移させる。
【００３４】
図６Ｂが示すように、DATA_Complete状態は、コマンドが完了されたことを示す。１つの実現例では、ＣＲＣ値は転送を検証するためにホストからターゲットＨＤＤ７０に直接に交換される。DATA_Complete状態を検出した後、ＭＣＵ４０は、起こり得るエラーを識別するためにデータカウントレジスタおよびその他のマシン状態情報を検証する。ＭＣＵ４０は、次いで、ターゲットＨＤＤのステータス（ＣＲＣ（Cyclic Redundancy Check）検証確認を組入れる）を確認し、タスクファイルを介して当該ホストにこのステータスを
ミラーリングする。エラーがない場合、ＭＣＵ４０はタスクファイル３８のステータスレジスタおよびエラーレジスタにおいてエラービットをクリアする。ＭＣＵ４０は、次いで、転送を完了させるためにマシン状態レジスタ３９をＳＴＡＴＵＳ状態（０１０１）にセットする。そうではなく、ＭＣＵ４０がエラーを検出する場合、ＭＣＵ４０は適切なセンス状況を待ち行列に入れ、ホストタスクファイル３８のエラーレジスタにセンスキーを置き、ステータスレジスタにおいてホストタスクファイルのエラービットをセットする。ＭＣＵ４０は、次いで、エラーに関する転送を完了させるために状態を０１０１（ＳＴＡＴＵＳ）にセットする。上述のように、ＭＣＵ４０は、さらに、ＢＳＹビットをクリアし、ＩＮＴビットをセットする。
【００３５】
ＤＭＡ転送をサポートするために、データフローコントローラ３６はホストとターゲットＨＤＤ７０との間のさまざまな制御信号をインターフェイスで接続する。たとえば、ホスト制御信号Ｈ＿ＤＭＡＣＫ♯は、ターゲットＨＤＤ  Ｔ＿ＤＭＡＣＫ♯入力にパッチされる。ターゲットＨＤＤ  Ｔ＿ＤＭＡＲＱ出力も、ホストＨ＿ＤＭＡＲＱ入力に渡される。制御信号（ホストまたはターゲット）の定義は、前にセットされた機能コマンドによって選択されるＤＭＡまたはＵＤＭＡモードによって変わる。データフローコントローラ３６は、さらに、ホストＨ＿ＤＩＯＲ♯、Ｈ＿ＨＤＭＡＲＤＹ♯、Ｈ＿ＨＳＴＲＯＢＥ出力を、ターゲットＴ＿ＤＩＯＲ♯、Ｔ＿ＨＤＭＡＲＤＹ♯、Ｔ＿ＨＳＴＲＯＢＥ入力に接続し、ホストＨ＿ＤＩＯＷ♯／ＳＴＯＰ出力をＴ＿ＤＩＯＷ♯／ＳＴＯＰ入力に接続する。Ｔ＿ＩＯＲＤＹ／Ｔ＿ＤＤＭＡＲＤＹ♯／Ｔ＿ＤＳＴＲＯＢＥは、ターゲット装置からホストＨ＿ＩＯＲＤＹ／Ｈ＿ＤＤＭＡＲＤＹ♯／Ｈ＿ＤＳＴＲＯＢＥに接続される。しかしながら、データ転送のために選択されたＤＭＡまたはＵＤＭＡモードは、接続される制御信号に影響を与え得る。
【００３６】
ＤＭＡ転送の場合、ターゲットＨＤＤ７０は、ＡＴＡ  ＤＭＡ読取または書込コマンド（ホストから受取られたＡＴＡＰＩパケットコマンドに等価である）を伝送するＭＣＵ４０に応答して転送を開始する準備が整っていることを示し、Ｔ＿ＤＭＡＲＱ信号をアサートする。このことにより、次に、ホストサイドＨ＿ＤＭＡＲＱ信号がアサートされる（およびホストに与えられる）。１つの実現例では、データフローコントローラ３６は、ターゲットＨＤＤ７０によってセットされているＴ＿ＤＭＡＲＱビットを検出すると、マシンレジスタ３９をSending_DATA状態（１１０１）に進める。
【００３７】
上述のように、キャリアコントローラ２０１も、ＳＡＴＡホストアダプタ３１から受取られたＡＴＡコマンドを受取り、処理するように動作する。ＡＴＡコマンドのためのサポートは、システムブート動作の間、ホストのＢＩＯＳ（Basic Input/Output System）がキャリアコントローラ２０１と対話できるようにする。典型的には、ＡＴＡＰＩコマンドは立上げの後およびドライバがロードされた後に使用されるであろう。図６Ｃは、ホストから受取られたＡＴＡコマンドを実行することに関連付けられるマシン状態レジスタの遷移およびプロセスフローを示す。図６Ｃが示すように、データフローコントローラ３６は、タスクファイル３８のコマンドレジスタに書込まれているＡＴＡコマンドを検出すると、マシン状態レジスタ３９をＡＴＡ受取コマンド（Receive Command）状態（０００１）に進める。図６Ｃが示すように、データフローコントローラ３６は、さらに、タスクファイル３８においてＢＳＹビットをセットする。ＭＣＵ４０は、次いで、受取られたＡＴＡコマンドをパーズし、実行する。上記と同様に、いくつかのＡＴＡコマンドはデータの転送を要求し得るが、他のＡＴＡコマンドは要求しない。図６Ｃが示すように、ホストシステムへまたはホストシステムからのデータ転送をもたらさないコマンドの場合、ＭＣＵ４０は、コマンド実行の後、マシン状態レジスタ３９をＳＴＡＴＵＳ状態（０１０１）に進める。直接にこの状態に進む（データをホストに渡さない）コマンドの例は、セット機能（０ｘＥＦ）、スリープ（０ｘＥ６）、速やかなスタンバイ（０ｘＥ０）、電源モード確認（０ｘＥ５）、ドライブ診断の実行（０ｘ９０）、速やかなアイドル（０ｘＥ１）、お
よび空命令（０ｘ００）を含む。１つの実現例では、セット機能コマンドはＭＣＵ４０によってターゲットＨＤＤ７０にエコーとして返される。この態様で、ホストによって選択された適切なＤＭＡモードは、ホストタスクファイル３８、およびターゲットＨＤＤ７０によって実行されるタスクファイル７２に適用される。
【００３８】
しかしながら、ＡＴＡコマンドがデータ転送を要求する場合、ＭＣＵ４０は図６Ａに関連して上述された間接的なデータ転送状態に進む。しかしながら、１つの実現例では、ＡＴＡコマンドはＡＴＡＰＩコマンドとは異なったようにステータスを与える。たとえば、ＡＴＡコマンドを渡すデータは、ステータスを与えるためにホストに割込むことはない。タスクファイルにおいてＢＳＹ＝０、ＲＤＹ＝１になるまでの遷移が単に存在するだけである。ホストは次いで、「１」がエラーを示し、「０」がエラーがないことを示すＥＲＲビットを読取り得る。エラー状況が存在する場合、ＥＲＲレジスタはより多くの情報を有し、ホストによって確認され得る。
【００３９】
明確にするために、本明細書に記載される実現例のさらに他の特徴のすべてが示され、記載されるわけではない。たとえば、キャリアコントローラ２０１は、ホストオペレーティングシステムに渡されたＳＡＴＡからのターゲットＨＤＤ診断を管理すること、ＬＥＤ（Light Emitting Diode）表示器およびカートリッジ取出機構を動作させること、ターゲットＨＤＤの書込保護機能を処理することなどの他の動作を実行することができる。もちろん、いかなるこのような実際の実現例の開発においても、アプリケーションおよびビジネスに関連する制約の遵守などの開発者の具体的な目標を達成するために、実現例に特有の多くの決定がなされなければならず、これらの具体的な目標は実現例ごとに、および開発者ごとに異なることが認識される。さらに、このような開発活動は、複雑で時間を要するかもしれないが、それにも関わらずこの開示の利点を有する当業者にとって工学技術についての普通の仕事であろうということが認識される。
【００４０】
この発明は、記憶ライブラリまたはオートローダ機構などのさまざまなデータ記憶装置またはシステムに組入れられることもできる。１つの実現例では、キャリアコントローラ２０１の１つ以上の繰返し（または、キャリアコントローラ２０１の機能性のサブセット）が、自動化されたカートリッジライブラリ機構に組入れられることができる。１つの実現例では、ターゲットＨＤＤ７０が取外し可能に接続するインターフェイスが、自動化されたカートリッジライブラリ機構に直接に組入れられることができる。テープ記憶ライブラリシステムと同様に、１つの実現例では、システムはキャビネットハウジング、少なくとも１つのキャリアコントローラ２０１、ならびにキャリアコントローラ２０１のインターフェイスに搬送および接続するための複数の一覧の位置からカートリッジ（ターゲットＨＤＤ７０を含む）を選択するように動作するロボット機構（たとえば、ピッカーまたはロボットアームハンドアセンブリを含む）を含んでもよい。
【００４１】
最後に、この発明はＡＴＡ／ＡＴＡＰＩプロトコルを利用するホストシステムおよびハードディスクドライブに関連して動作するように記載されてきたが、この発明は任意の好適なデバイスプロトコルを利用する、コンピューティング環境におけるアプリケーションを有する。さらに、実施例はカートリッジキャリアの文脈で本明細書に記載される。本明細書に記載されるデータフローおよびブリッジングアーキテクチャは、さまざまな取外し可能なデータ記憶システムに関連して実現されることができる。さらに、ブリッジ回路、データフローコントローラ、およびＭＣＵは別個の論理回路として上述されてきたが、これらの回路に対応する機能性はこの発明の範囲から逸脱することなくさまざまな態様で統合または組合せられてもよい。したがって、この発明は具体的な実施例を参照して記載されている。この発明の他の実施例は当業者に明らかである。したがって、特許請求の範囲は上述の実施例に限定されるものではないことが意図される。
【図面の簡単な説明】
【００４２】
【図１】データ記憶システムを入れる取外し可能なカートリッジの実施例の図である。
【図２Ａ】カートリッジキャリアの実施例の図である。
【図２Ｂ】カートリッジキャリアの実施例の図である。
【図３】取外し可能なカートリッジをカートリッジキャリアに挿入する図である。
【図４】この発明の１つの実現例に従う取外し可能なデータ記憶ユニットシステムのハイレベルシステムアーキテクチャを示す機能ブロック図である。
【図５Ａ】キャリア制御論理の動作を示す状態図である。
【図５Ｂ】キャリア制御論理の動作を示す状態図である。
【図６Ａ】データフローコントローラおよびマイクロコントローラが如何にコマンド処理を調整するかを示すプロセスフローならびにマシン状態図である。
【図６Ｂ】データフローコントローラおよびマイクロコントローラが如何にコマンド処理を調整するかを示すプロセスフローならびにマシン状態図である。
【図６Ｃ】データフローコントローラおよびマイクロコントローラが如何にコマンド処理を調整するかを示すプロセスフローならびにマシン状態図である。
【符号の説明】
【００４３】
２０１  キャリアコントローラ
３１  ＳＡＴＡホストアダプタ
３２、３４  ＳＡＴＡ／ＰＡＴＡブリッジ
３６  データフローコントローラ
３８  タスクファイルレジスタ
３９  マシン状態レジスタ
３９  ＥＥＰＲＯＭ回路
４０  マイクロコントローラユニット
４２  コマンドデータＦＩＦＯ
７０  ターゲットハードディスクドライブ
７２  タスクファイルレジスタ
【図１】
2007026440.tif 000003
【図２Ａ】
2007026440.tif 000004
【図２Ｂ】
2007026440.tif 000005
【図３】
2007026440.tif 000006
【図４】
2007026440.tif 000007
【図５Ａ】
2007026440.tif 000008
【図５Ｂ】
2007026440.tif 000009
【図６Ａ】
2007026440.tif 000010
【図６Ｂ】
2007026440.tif 000011
【図６Ｃ】
2007026440.tif 000012