(57)【要約】  アクセス検出器が、シリアルストレージデバイスとインタフェースする複数のシリアルポートのうちの１つへのアクセスのアクセスタイプを検出する。このアクセスは、パラレルチャネルのタスクファイルレジスタを介してパラレルストレージデバイスとインタフェースする複数のパラレルチャネルのうちの１つを目的とする。マッピング回路が、シリアルポートをパラレルチャネルにマッピングする。ステートマシーンは、アクセスタイプとマッピングされたシリアルポートに基づいてパラレルチャネルのうちの１つからの応答をエミュレートする。【選択図】  図１
2008537219.tif 000002
【特許請求の範囲】
【請求項１】
一の第１のハードドライブとインタフェースする一の第１のホストコントローラを含み、
一の第１のデータ転送動作に対して、前記第１のホストコントローラ上の一のデバイス／ヘッドレジスタ内の一のデバイスビットは、前記第１のホストコントローラ上の他のレジスタより先に書き込みされ、
前記第１のホストコントローラ上の前記デバイス／ヘッドレジスタに書き込みされたデータに基づいて、転送データは、前記第１のホストコントローラ上の別のレジスタに書き込みされる、装置。
【請求項２】
一の第２のハードドライブとインタフェースする一の第２のホストコントローラをさらに含み、
一の第２のデータ転送動作に対して、前記第２のホストコントローラ上の一のデバイス／ヘッドレジスタ内の一のデバイスビットは、前記第２のホストコントローラ上の他のレジスタより先に書き込みされ、
前記第２のホストコントローラ上の前記デバイス／ヘッドレジスタに書き込みされたデータに基づいて、転送データは、前記第２のホストコントローラ上の別のレジスタに書き込みされる請求項１に記載の装置。
【請求項３】
前記第１のハードドライブおよび前記第２のハードドライブは、シリアルアドバンストテクノロジアタッチメントデバイスである請求項２に記載の装置。
【請求項４】
前記第１のデータ転送動作および前記第２のデータ転送動作は、前記第１のホストコントローラおよび前記第１のハードドライブと、前記第２のホストコントローラおよび前記第２のハードドライブとの間でデータを同時且つ独立して転送する動作を含む請求項２に記載の装置。
【請求項５】
前記第１のハードドライブおよび前記第２のハードドライブのうち１つは、一のマスタドライブとしてマッピングされる請求項２に記載の装置。
【請求項６】
複数のパラレルチャネルと、
複数のシリアルストレージデバイスとインタフェースする複数のシリアルポートと、
一の第１のシリアルポート上の一のデバイス／ヘッドレジスタと、
を含み、
前記複数のパラレルチャネルは、前記複数のシリアルポートにマッピングされ、
一の第１のデータ転送動作に対して、前記デバイス／ヘッドレジスタは、前記第１のシリアルポート上の他のレジスタより先に書き込みされ、
前記第１のシリアルポートの前記デバイス／ヘッドレジスタに書き込みされたデータに基づいて、前記第１のシリアルポート上の別のレジスタがアクセスされる、装置。
【請求項７】
前記第１のシリアルポート上の別のレジスタへのアクセスでは、前記第１のシリアルポート上の別のレジスタにデータを書き込みする請求項６に記載の装置。
【請求項８】
前記第１のシリアルポート上の別のレジスタへのアクセスでは、前記第１のシリアルポート上の別のレジスタからデータを読み出しする請求項６に記載の装置。
【請求項９】
一の第２のシリアルポート上の一のデバイス／ヘッドレジスタをさらに含み、
一の第１のデータ転送動作に対して、前記デバイス／ヘッドレジスタは、前記第２のシリアルポート上の他のレジスタより先に書き込みされ、
前記第２のシリアルポートの前記デバイス／ヘッドレジスタに書き込みされたデータに基づいて、前記第２のシリアルポート上の別のレジスタがアクセスされる請求項６に記載の装置。
【請求項１０】
前記第２のシリアルポート上の別のレジスタへのアクセスでは、前記第２のシリアルポート上の別のレジスタにデータを書き込みする請求項９に記載の装置。
【請求項１１】
前記第２のシリアルポート上の別のレジスタへのアクセスでは、前記第２のシリアルポート上の別のレジスタからデータを読み出しする請求項９に記載の装置。
【請求項１２】
前記第１のデータ転送動作および前記第２のデータ転送動作は、前記第１のシリアルポートおよび対応するシリアルストレージデバイスと、前記第２のシリアルポートおよび対応するシリアルストレージデバイスとの間でデータを同時且つ独立して転送する動作を含む請求項９に記載の装置。
【請求項１３】
前記第１のシリアルポート上の他のレジスタへの書き込みより先の一の第１のシリアルポート上の一のデバイス／ヘッドレジスタへの書き込みでは、前記第１のシリアルポートの一のデバイス／ヘッドレジスタ内の一のデバイスビットに書き込みする請求項６に記載の装置。
【請求項１４】
前記第１のシリアルポート上の他のレジスタへの書き込みより先の一の第１のシリアルポート上の一のデバイス／ヘッドレジスタへの書き込みでは、前記第１のシリアルポートの一のバスマスタレジスタまたはタスクファイルレジスタへの書き込みより先に前記デバイス／ヘッドレジスタ内の前記デバイスビットに書き込みする請求項１４に記載の装置。
【請求項１５】
前記第１のシリアルポート上の別のレジスタへのアクセスでは、前記第１のシリアルポートに対応する前記バスマスタレジスタまたは前記タスクファイルレジスタのうち少なくとも１つにアクセスする請求項６に記載の装置。
【請求項１６】
複数のシリアルストレージデバイスと、
前記複数のシリアルストレージデバイスに結合された一のチップセットと、
を含み、
前記チップセットは、一のシリアルストレージコントローラを有し、
前記シリアルストレージコントローラは、
前記複数のシリアルストレージデバイスとインタフェースする複数のシリアルポートを複数のパラレルチャネルにマッピングする一のマッピング回路と、
一のアクセスタイプに基づいて前記複数のパラレルチャネルのうちの１つからの一の応答をエミュレートするよう前記マッピング回路に結合される一のステートマシーンと、
前記複数のシリアルポートのうちの１つを選択するよう前記ステートマシーンと前記複数のシリアルポートに結合される一のシリアルポートセレクタと、
前記選択されたシリアルポートにマッピングされた前記パラレルチャネルの複数のタスクファイルレジスタをエミュレートするよう前記ステートマシーンに結合された複数のレジスタと、
を含み、
前記選択されたシリアルポートの一のデバイス／ヘッドレジスタ内の一のデバイスビットは、対応するバスマスタレジスタまたはタスクファイルレジスタより先に書き込みされるシステム。
【請求項１７】
前記ステートマシーンは、
前記デバイスビットに応じて前記複数のパラレルチャネルのうちの１つにマッピングされる前記選択されたシリアルポートにデータを書き込みする一の第１の書き込みステートと、
前記デバイスビットに応じて前記複数のパラレルチャネルのうちの１つにマッピングされる前記選択されたシリアルポートからデータを読み出しする一の第１の読み出しステートと、
を含む請求項１６に記載のシステム。
【請求項１８】
別のシリアルポートに対応する一のレジスタにデータを書き込みすることなく、前記選択されたシリアルポートに対応する少なくとも一のバスマスタレジスタまたはタスクファイルレジスタにデータを書き込みする請求項１６に記載のシステム。
【請求項１９】
前記複数のシリアルストレージデバイスとインタフェースする複数のシリアルポートのうちの１つに対するアクセスの一の第１のアクセスタイプを検出する一のアクセス検出器をさらに含み、
前記アクセスは、複数のパラレルチャネルのうちの１つを目的とする請求項１６に記載のシステム。
【請求項２０】
前記第１のアクセスタイプは、バスマスタコマンドレジスタの一のスタートビットを論理１に設定することを除いて一のバスマスタレジスタ、一の非データコマンドレジスタ、および一のデバイス制御レジスタのうちの１つへの一の第１の書き込みを含む請求項１６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストレージインタフェースに関する。特に、本発明は、ホストコントローラへのインタフェースに関する。
【背景技術】
【０００２】
フロッピー（登録商標）ドライブ、ハードドライブ、およびＣＤ−ＲＯＭドライブなどのストレージデバイスは、通常、Integrated Drive Electronics（ＩＤＥ）インタフェースを介してコンピュータに接続され、これは、アドバンストテクノロジアタッチメント（ＡＴＡ）とも呼ばれる。パラレルＡＴＡは、最大２つのデバイスが単一のポートに接続されるのを、マスタ／スレーブ通信技術を使用して可能にする。１つのＡＴＡデバイスがマスタとして構成され、もう１つのＡＴＡデバイスがスレーブとして構成される。この構成では、１つのデバイスのコントローラが、もう１つのデバイスに、コンピュータに対してデータを送受信することのできる時期を伝えることが可能になる。両方のデバイスは、未終端のマルチドロップバスである１つのリボンケーブルを介して互いにディジーチエーン接続される。このバス、または、接続は一般的に、パラレルチャネルと称される。さらに、パーソナルコンピュータ（ＰＣ）は、２つのパラレルＡＴＡチャネル、すなわち、一次チャネルおよび二次チャネルを有しうる。
【０００３】
パラレルＡＴＡインタフェースは、１９８９年以来実質的に変化することなく存在しており、最も多く生産されているディスクドライブデバイスインタフェースである。しかし、より高速な転送およびストレージ帯域幅に対する需要が高まるにしたがって、パラレルＡＴＡはその性能限界に近づきつつある。シリアルＡＴＡインタフェースが、パラレルＡＴＡに取って代わるべく導入されている。シリアルＡＴＡは、２つのデバイスのそれぞれを個別のケーブルに、ポイントツーポイント様式で接続する。シリアルＡＴＡの利点には次のものが含まれる。最大１５０ＭＢ／秒の高速データ転送速度（１００ＭＢ／秒のパラレルＡＴＡに対して）、低費用、単純な設置および設定、低ピン数など。
【０００４】
しかし、現在パラレルＡＴＡが大量に存在するので、パラレルＡＴＡからシリアルＡＴＡへの移行が困難となりうる。移行に費用がかかることを回避し、また、簡単な移行経路を提供すべく、パラレルＡＴＡ用のソフトウェアドライバはシリアルＡＴＡに対応するよう変更され、また、パラレルＡＴＡデバイスと互換性がある新しいシリアルＡＴＡインタフェースが設計されている。たとえば、ハードウェアエミュレータは、パラレルＡＴＡドライバに対して透過的に動作するハードウェア回路であり、それにより、パラレルＡＴＡドライバは、シリアルＡＴＡデバイスをそれらがパラレルＡＴＡデバイスであるかのように制御可能となる。シリアルＡＴＡデバイスをパラレルＡＴＡドライバとともに使用する場合に、独立且つ同時のデータ転送が必要である。
【０００５】
本発明の特徴および利点を、以下の本発明の詳細な説明において明らかにする。
【発明を実施するための最良の形態】
【０００６】
以下の説明において、本発明の完全なる理解を与えるためにいくつかの実施形態を、説明目的として提示する。しかし、当業者にはこれらの特定の実施形態は、本発明を実施するのに必要不可欠ではないということは明らかであろう。また、周知の電気構造および回路は、本発明が曖昧とならないようブロック図で示す。
【０００７】
図１は、本発明の一実施形態を実施可能なコンピュータシステム１００を示す図である。コンピュータシステム１００は、プロセッサ１１０、相互接続部１２０、メモリ制御ハブ（ＭＣＨ）１３０、基本入力／出力システムメモリ１３５、システムメモリ１４０、入力／出力制御ハブ（ＩＣＨ）１５０、シリアルＡＴＡデバイス１７６および１７８、マスストレージデバイス１７０、および入力／出力装置１８０１〜１８０Ｋを含む。
【０００８】
プロセッサ１１０は、組み込みプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、スーパースケーラーコンピュータ、ベクトルプロセッサ、単一命令複数データ（ＳＩＭＤ）コンピュータ、複合命令セットコンピュータ（ＣＩＳＣ）、縮小命令セットコンピュータ（ＲＩＳＣ）、超長命令語（ＶＬＩＷ）といった任意のタイプのアーキテクチャまたはハイブリッドアーキテクチャの中央演算処理装置を示す。一実施形態では、プロセッサ１１０は、ＩＡ−３２およびＩＡ−６４といったインテルアーキテクチャ（ＩＡ）プロセッサと互換性がある。プロセッサ１１０は一般的に、仮想メモリおよびキャッシュメモリといったメモリ管理タスクをサポートするために多数の制御レジスタを含む。メモリ管理タスクには、ページングおよびセグメンテーションを含む。プロセッサ１１０を有するチップは、１つのプロセッサコアしか有さなくても、１つ以上のプロセッサコアを有してもよい。相互接続部１２０は、プロセッサ１１０が、たとえば、ＭＣＨ１３０である他のプロセッサまたはデバイスと通信することを可能にするようインタフェース信号を供給する。相互接続部１２０は、ユニプロセッサまたはマルチプロセッサ構成をサポートしうる。相互接続部１２０は、パラレル、シーケンシャル、パイプライン、非同期、同期、またはこれらの任意の組み合わせでありうる。相互接続部１２０は、ポイントツーポイント様式であってもよく、または２つ以上のチップに接続することができる。
【０００９】
ＭＣＨ１３０は、システムメモリ１４０およびＩＣＨ１５０といったメモリや入力／出力装置の制御および構成を供給する。ＭＣＨ１３０は、単独実行モード、ホストから周辺機器へのバスインタフェース、メモリ制御といった複数の機能を統合するチップセットに集積されてもよい。明確にすることを目的とするので、すべての周辺機器バスを示しているわけではない。システム１００には、周辺コンポーネント相互接続部（ＰＣＩ）、加速グラフィックポート（ＡＧＰ）、業界標準アーキテクチャ（ＩＳＡ）バス、および汎用シリアルバス（ＵＳＢ）などといった周辺機器バスも含みうる。一実施形態では、ＭＣＨ１３０は、プロセッサ１１０と同じチップ内であることが可能である。他の実施形態では、同じＭＣＨ１３０が、プロセッサを有するチップのすべてのコアまたはプロセッサに対して動作する場合もある。別の実施形態では、ＭＣＨ１３０は、プロセッサを有するチップの様々なコアまたはプロセッサに対して別個に動作する様々な部分を含む場合もある。
【００１０】
ＢＩＯＳメモリ１３５は、起動コードおよびデータを保存する。ＢＩＯＳメモリ１３５は、一般的に、読み出し専用メモリ（ＲＯＭ）といった不揮発性メモリ、フラッシュメモリ、および他の類似するメモリで実施される。ＢＩＯＳメモリ１３５は、ＭＣＨ１３０内に保存されてもよい。ＢＩＯＳメモリ１３５は、ＩＣＨ１５０を介してシリアルＡＴＡデバイス１７６および１７８を制御するパラレルＡＴＡドライバ１３８を含みうる。
【００１１】
システムメモリ１４０は、システムコードおよびデータを保存する。システムメモリ１４０は、一般的に、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）またはスタティックランダムアクセスメモリ（ＳＲＡＭ）で実施される。リフレッシュする必要のないメモリを含む他のタイプのメモリを使用してもよい。システムメモリは、本発明の一実施形態を実施するプログラムコードまたはコードセグメントを含みうる。システムメモリはさらにパラレルＡＴＡドライバ１４５を含みうる。パラレルＡＴＡドライバ１４５は、オペレーティングシステム（ＯＳ）またはアプリケーションプログラムの一部でありうる。パラレルＡＴＡドライバ１４５は、ＩＣＨ１５０を介してシリアルＡＴＡデバイス１７６および１７８にアクセスする。ＢＩＯＳメモリ１３５内のパラレルＡＴＡドライバ１３８と、メモリ１４０内のパラレルＡＴＡドライバ１４５は、共存してもしなくてもよい。
【００１２】
ＩＣＨ１５０は、Ｉ／Ｏ機能をサポートするよう設計される多数の機能を有する。ＩＣＨ１５０も、Ｉ／Ｏ機能を実行するためにＭＣＨ１３０とともに、またはＭＣＨ１３０とは別個にチップセットに集積されうる。ＩＣＨ１５０は、ＰＣＩバスインタフェース、プロセッサインタフェース、インタラプトコントローラ、ダイレクトメモリアクセス（ＤＭＡ）コントローラ、パワーマネジメントロジック、タイマ、汎用シリアルバス（ＵＢＳ）インタフェース、マスストレージインタフェース、低ピン数（ＬＰＣ）インタフェースといった多数のインタフェースおよびＩ／Ｏ機能を含みうる。特に、ＩＣＨ１５０は、シリアルＡＴＡデバイス１７６および１７８を制御するＡＴＡコントローラ１５５を含む。ＡＴＡコントローラ１５５は、パラレルＡＴＡデバイスドライバとの後方互換のためのハードウェアエミュレータを有する。ＡＴＡコントローラ１５５は、顧客が、現行のパラレルＡＴＡドライバを使用しながらシリアルＡＴＡインタフェースの利点を享受できるように移行するための経路を提供する。
【００１３】
シリアルＡＴＡデバイス１７６および１７８は、コード、プログラム、ファイル、データ、アプリケーション、オペレーティングシステムなどのアーカイブ情報を保存するマスストレージデバイスまたはハードディスクである。シリアルＡＴＡデバイス１７６および１７８は、シリアルＡＴＡインタフェース信号１７９を介してハードドライブコントローラ１５５に接続される。シリアルＡＴＡインタフェース、プロトコル、および標準は、シリアルＡＴＡワークグループ著の「Serial ATA/High Speed Serialized AT Attachment」（改訂１．０．０．１、２００１年４月９日発行）に提案する草案に従う。マスストレージデバイス１７０は、他のアーカイブ情報を保存する。マスストレージデバイス１７０には、コンパクトディスク（ＣＤ）ＲＯＭ１７２、フロッピー（登録商標）ディスケット１７４、およびハードドライブ１７６、並びに任意の他の磁気または光学ストレージデバイスが含まれうる。マスストレージデバイス１７０は、機械可読媒体を読み出しする機構を提供する。
【００１４】
Ｉ／Ｏ装置１８０１〜１８０Ｋには、Ｉ／Ｏ機能を実行する任意のＩ／Ｏ装置を含みうる。Ｉ／Ｏ装置１８０１〜１８０Ｋの例としては、入力装置（例、キーボード、マウス、トラックボール、ポインティングデバイス）、メディアカード（例、オーディオ、ビデオ、グラフィック）、ネットワークカード用のコントローラ、および任意の他の周辺機器コントローラが挙げられる。
【００１５】
パラレルＡＴＡインタフェースでは、起動後、ハードウェア若しくはソフトウェアのリセット、または、エグゼクティブデバイス診断コマンドの実行後、スレーブデバイスは、ＡＴＡリボンケーブル内のＰＤＩＡＧワイヤを介してマスタデバイスに診断ステータスを提示する。ＰＤＩＡＧ信号のステータスを観察後、マスタデバイスはステータスおよびエラーレジスタを適宜更新する。シリアルＡＴＡインタフェースでは、このような２つのシリアルＡＴＡデバイス間の直接的な通信は存在しない。さらに、パラレルＡＴＡインタフェースでは、同じチャネル上にある両方のＡＴＡデバイスが、ケーブル上の信号活動を観察する。たとえば、ＡＴＡコマンドブロックレジスタ（データおよびコマンドレジスタは除く）への書き込みアクセスは、両方のデバイスによって確認且つ承諾される。一方で、シリアルＡＴＡインタフェースでは、各シリアルＡＴＡデバイスが互いとは無関係である。
【００１６】
パラレルＡＴＡドライバ１３８に明白であるようインタラクションを模倣することを目的として、ＡＴＡコントローラ１５５内のエミュレータは、仮想ＡＴＡチャネル上にパラレルＡＴＡデバイスとしてマッピングされる両方のシリアルＡＴＡデバイス１７６および１７８に対してソフトウェアアクセスを転送および操作する。さらに、エミュレータは、シリアルＡＴＡデバイスのインタラプトをＩＲＱ１４またはＩＲＱ１５に送る。
【００１７】
図２は、ハードウェアエミュレータ２１０を使用するＡＴＡコントローラ１５５を示す図である。ＡＴＡコントローラ１５５は、エミュレータ２１０とシリアルＡＴＡホストコントローラ（１および２）２２０および２３０を含む。エミュレータ２１０は、パラレルＡＴＡドライバ１３８とインタラクトする場合、パラレルＡＴＡデバイスの応答をエミュレートする。エミュレータ２１０は、パラレルＡＴＡドライバ１３８に対して透過的に動作するハードウェア回路であり、したがって、パラレルＡＴＡドライバ１３８は依然として、シリアルＡＴＡデバイス１７６および１７８をそれらがパラレルＡＴＡデバイスであるかのように制御することができる。エミュレータ２１０は、ＡＴＡドライバがシリアルＡＴＡデバイス１７６および１７８用に直接書き込みされる場合は無効にされうる。
【００１８】
シリアルＡＴＡホストコントローラ２２０および２３０は、シリアルポートとも呼ばれ、シリアルＡＴＡデバイス１７６および１７８に対してそれぞれレジスタ、制御回路、およびインタフェース回路を含む。特に、シリアルＡＴＡホストコントローラ２２０および２３０は、それぞれ、シリアルポートタスクファイル（１および２）２２５および２３５を含み、これらのシリアルポートタスクファイルは、対応するシリアルＡＴＡデバイス１７６および１７８を制御および構成する動作レジスタを含む。ＡＴＡ仕様に定義される１つのそのようなレジスタは、デバイス／ヘッドレジスタであり、これは、デバイスおよびヘッド数を含む。
【００１９】
エミュレータ２１０は、ポート１選択信号またはポート２選択信号を介してパラレルチャネルにマッピングされたシリアルポートを選択する。エミュレータ２１０は、書き込みデータ信号パスを介して選択されたシリアルポートにデータを書き込みする。また、対応する読み出しデータ信号パスを介して選択されたシリアルポートからデータを読み出しする。シリアルＡＴＡホストコントローラ２２０および２３０は、エミュレータ２１０にステータスおよびエラー状態を供給する。
【００２０】
図３は、図２に示すＡＴＡコントローラ内のエミュレータ２１０を示す図である。エミュレータ２１０は、アクセス検出器３１０、マッピング回路３２０、エミュレーションステートマシーン３３０、エミュレートされたタスクファイルレジスタセット３４０、およびシリアルポートセレクタ３５０を含む。アクセス検出器３１０は、シリアルストレージデバイス１７６および１７８にインタフェースするシリアルポート２２０および２３０のうちの１つに対するアクセスのアクセスタイプを検出する。アクセスは、パラレルＡＴＡドライバ１３８から供給され、パラレルチャネルのタスクファイルレジスタを介してパラレルストレージデバイスにインタフェースするパラレルチャネルのうちの１つに向けられる。
【００２１】
マッピング回路３２０は、シリアルポートをパラレルチャネルにマッピングする。マッピングは、アドレス翻訳によって行われうる。シリアルポートはさらに、デバイス／ヘッドレジスタ内のデバイス（ＤＥＶ）ビットに応じてマスタまたはスレーブのパラレルチャネルにマッピングされうる。
【００２２】
エミュレーションステートマシーン３３０は、アクセス検出器３１０により検出されるアクセスタイプ、およびマッピング回路３２０により供給されるマッピングされたシリアルポートに基づいてパラレルチャネルのうちの１つからの応答をエミュレートする。ステートマシーン３３０は、アクセスタイプに応じて一連の動作を行うための多数のステートを含む。たとえば、様々なアクセスタイプに応じた応答のエミュレーションに対応する幾つかのステートと、インタラプト生成のエミュレーションに対応するインタラプトステートがある。
【００２３】
エミュレートされたタスクファイルレジスタセット３４０は、パラレルチャネルのタスクファイルレジスタをエミュレートする。これらのレジスタは、デバイス（ＤＥＶ）、ビジー（ＢＳＹ）ビット、およびエラーレジスタに関する情報を含みうる。
【００２４】
シリアルポートセレクタ３５０は、マッピング回路３２０によって供給されるマッピングされたシリアルポートに基づいてシリアルポート２２０および２３０のうちの１つを選択する。たとえば、パラレルＡＴＡドライバ１３８が、パラレルチャネルへのアクセスを生成すると、マッピング回路３２０はパラレルチャネルのアドレスをシリアルポートに翻訳しうる。あるいは、マッピング回路３２０は、デバイス／ヘッドレジスタ内のデバイス（ＤＥＶ）ビットに応じてマッピングしてもよい。このマッピング情報は、シリアルポートセレクタ３５０に、直接、または、ステートマシーン３３０を介して渡され、対応するシリアルポートが選択される。選択は、選択されたシリアルＡＴＡホストコントローラ２２０または２３０を有効にすることによって行われうる。
【００２５】
図４は、アクセスタイプに基づいてパラレルチャネルからの応答をエミュレートするプロセス４００を示すフローチャートである。開始後、プロセス４００では、マスタまたはスレーブチャネルとしてパラレルチャネルにマッピングされるシリアルＡＴＡポートへのアクセスを検出する（工程４１０）。アクセスは、パラレルＡＴＡドライバ１３８により行われる。次に、プロセス４００では、アクセスのタイプを決定する（工程４２０）。この決定は、アドレスや読み出し／書き込み情報といったアクセス情報を復号化することにより可能である。アクセスのタイプは、幾つかあるアクセスタイプのうちの１つでありうる。
【００２６】
プロセス４００では、アクセスが第１のアクセスタイプであるか否か決定する。たとえば、アクセスが、バスマスタレジスタ（ＢＭ−ＩＤＥ）、非データコマンドレジスタ、およびデバイス制御レジスタのうちの１つへの第１の読み出しであるか否か決定する（工程４３０）。アクセスは、バスマスタレジスタ（ＢＭ−ＩＤＥ）（バスマスタコマンドレジスタのスタートビットを論理１に設定することを除く）、非データコマンドレジスタ、およびデバイス制御レジスタのうちの１つへの第１の書き込みであってもよい（工程４３０）。第１のアクセスタイプである場合、プロセス４００では、第１のタイプのアクセスをエミュレートし（工程４３５）、次に終了する。第１のアクセスタイプではない場合、プロセス４００では、アクセスは別のアクセスタイプであると決定し（工程４４０）、他のアクセスタイプをエミュレートする（工程４４５）。他のアクセスタイプは、起動、ハードウェアまたはソフトウェアのリセット、またはデバイスの診断コマンドの実行後にスレーブパラレルチャネルにマッピングされた選択されたシリアルポートの、デバイス／ヘッドレジスタへのアクセス、または、ステータスレジスタ、代替レジスタ、またはエラーレジスタへの読み出しアクセスでありうる。他のアクセスタイプはさらに、起動、ハードウェアまたはソフトウェアのリセット、またはデバイスの診断コマンドの実行後にマスタパラレルチャネルにマッピングされたシリアルポートのステータスレジスタまたは代替レジスタへの読み出しアクセスでもありうる。他のアクセスタイプは、起動、ハードウェアまたはソフトウェアのリセット、またはデバイスの診断コマンドの実行後にマスタパラレルチャネルにマッピングされたシリアルポートのエラーレジスタへの読み出しアクセスでもありうる。
【００２７】
ＳＡＴＡデバイス１７６または１７８にコマンドを設定するには、各ホストコントローラ２２０または２３０が一般的に、一連のイベントを実行する。ホストコントローラは、チャネルがビジーではないことを確認するためステータスレジスタを読み出しする。ホストコントローラは、デバイス／ヘッドレジスタに書き込みし、正しいデバイスが選択されたことを確実にする。ホストコントローラは、セクタカウントレジスタに書き込みし、転送されるセクタ数を示す。ホストコントローラは、セクタ数レジスタに書き込みし、論理ブロックアドレッシング（ＬＢＡ）アドレスの一部をロードする。ホストコントローラは、シリンダローレジスタに書き込みし、ＬＢＡアドレスの一部をロードする。ホストコントローラは、シリンダハイレジスタに書き込みし、ＬＢＡアドレスの一部をロードする。ホストコントローラは、コマンドレジスタに、４つの段階、すなわち、ディスパッチ、Ｉ／Ｏの開始、ＩＲＱ、および完了で実行されるべきコマンドを書き込みする。
【００２８】
ホストからのコマンドは、選択後に、選択されたシリアルＡＴＡデバイスにより受信される。ホストコントローラは、デバイス／ヘッドレジスタ内のＤＥＶビットを使用して２つのデバイスを区別する。ＤＥＶビットは、どのデバイスがデータを送受信したいのかを示すようプログラムされる。「０」は、マスタデバイスとして設計されうるデバイス０を選択する。そうでなければ、ＤＥＶビットは、スレーブデバイスとして設計されうるデバイス１を選択する。従来のコントローラ動作では、しかし、レジスタの内容は、両方のデバイスとそれらのコントローラに送られる。したがって、従来のコントローラ動作では、レジスタの書き込みは、マスタおよびスレーブの両方のタスクファイルレジスタ２２５および２３６、およびＢＭ−ＩＤＥレジスタに転送される。
【００２９】
図５は、本発明の一実施形態による、アクセスタイプが第１のアクセスタイプである場合に応答をエミュレートするプロセス４３５を示すフローチャートである。プロセス４３５は、図３に示すステートマシーン３３０における第１のステートによって行われる。開始後、プロセス４３５では、アクセスが書き込みアクセスであるか否かを決定する（工程５１０）。本発明の一実施形態では、ＤＥＶビットは、任意の関連付けられた書き込みの前にＢＭ−ＩＤＥレジスタまたはタスクファイル２２５または２３５に書き込みされる。ＤＥＶビットがゼロである場合、デバイス０が選択される。ＤＥＶビットが１である場合、デバイス１が選択される。
【００３０】
したがって、エミュレーションハードウェアは、マスタおよびスレーブの両方のＢＭ−ＩＤＥレジスタとシャドウタスクファイルに書き込みサイクルを転送しないモードを有する。代わりに、書き込みサイクルは、ＤＥＶビットに応じて特定のデバイスに転送される。これは、エミュレータが書き込みサイクルを、マスタおよびスレーブの両方のデバイスのタスクファイルレジスタおよびＢＭ−ＩＤＥ  Ｉ／Ｏレジスタに転送する従来の動作とは異なる。
【００３１】
アクセスが書き込みアクセスである場合、プロセス４３５では、デバイス（ＤＥＶ）ビットに応じてパラレルチャネルにマッピングされた選択されたシリアルポートにデータを書き込みし（工程５１５）、次に終了する。書き込みサイクルに基づいて、両方のホストレジスタセットを設定するのではなく、選択されたデバイスのホストレジスタセットが設定される。したがって、マスタおよびスレーブＡＴＡデバイスは、互いに対して完全に無関係にアクセスされる。したがって、パラレルＡＴＡドライブにはマスタドライブおよびスレーブドライブのように見える２つのシリアルＡＴＡドライブに、同時且つ独立したデータ転送が実行できる。アクセスが読み出しアクセスである場合、プロセス４３５では、ＤＥＶビットに応じてパラレルチャネルにマッピングされた選択されたシリアルポートからデータを読み出しする（工程５２０）。次に、プロセス４３５は、読み出しデータをアクセスリクエスタに返し、次に終了する。
【００３２】
図６は、ＤＥＶビット設定を行うためのソフトウェアプログラミングシーケンスの一実施形態を示す図である。工程６１０において、プロセス６００では、選択されたデバイスに対応するシリアルポートのデバイス／ヘッドレジスタのＤＥＶビットに書き込みする。工程６２０において、プロセス６００では、他のＢＭ−ＩＤＥレジスタおよび関連付けられるタスクファイルレジスタをプログラムする。一実施形態では、プロセス６００では、選択されたシリアルポートに関連付けられたＢＭ−ＩＤＥおよびタスクファイルレジスタに書き込みする。工程６３０において、プロセス６００は、コマンドタスクファイルレジスタをプログラムし、ＢＭ−ＩＤＥコマンドレジスタのスタートビットを設定する。工程６４０において、プロセス６００では、デバイス／ヘッドレジスタのＤＥＶビットに異なる値を書き込みする。工程６５０において、プロセス６００では、他のＢＭ−ＩＤＥレジスタおよび関連付けられるタスクファイルレジスタを必要に応じてプログラムする。工程６６０では、プロセス６００では、終了する前に、コマンドタスクファイルレジスタをプログラムし、ＢＭ−ＩＤＥコマンドレジスタのスタートビットを設定する。
【００３３】
本発明を例示的な実施形態を参照して説明したが、この説明は、制限的な意味合いで解釈すべきではない。例示する実施形態の様々な変更、並びに本発明の他の実施形態は、本発明が関連する技術の当業者には明らかであり、本発明の精神および範囲内にあるものとする。たとえば、上述の説明はシリアルおよびパラレルＡＴＡインタフェースに関するものであるが、この技術は、任意のポイントツーポイントインタフェースにも適用することができる。
【００３４】
本発明は、ハードウェア、ソフトウェア、ファームウェア、マイクロコード、またはこれらの任意の組み合わせによって実施することができる。ソフトウェア、ファームウェア、またはマイクロコードにより実施される場合は、本発明の構成要素は、必要なタスクを実行するためのプログラムコードまたはコードセグメントである。コードセグメントは、手順、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または、命令、データ構造、またはプログラムステートメントの任意の組み合わせを表わしうる。コードセグメントは、別のコードセグメントまたはハードウェア回路に、情報、データ、引数、パラメータ、またはメモリコンテンツを送信および／または受信することによって、結合されうる。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク伝送などを含む任意の適切な手段を介して渡す、転送する、または伝送されうる。プログラムまたはコードセグメントは、プロセッサ可読媒体に格納されても、搬送波として具現化されるコンピュータデータ信号、搬送波により変調された信号によって、伝送媒体を介して伝送されてもよい。「プロセッサ可読媒体」には、情報を格納または転送可能な任意の媒体を含みうる。プロセッサ可読媒体の例としては、電子回路、半導体メモリデバイス、ＲＯＭ、フラッシュメモリ、消去可能ＲＯＭ（ＥＲＯＭ）、フロッピー（登録商標）ディスケット、コンパクトディスク（ＣＤ−ＲＯＭ）、光学ディスク、ハードディスク、光ファイバ媒体、無線周波数（ＲＦ）リンクなどが挙げられる。コンピュータデータ信号は、電子ネットワークチャネル、光ファイバ、空気、電磁気、ＲＦリンクなどといった伝送媒体上を伝播可能な任意の信号を含みうる。コードセグメントは、インターネット、イントラネットなどのコンピュータネットワークを介してダウンロードしうる。
【００３５】
なお、本発明は、フローチャート、工程系統図、構造図、またはブロック図として通常示されるプロセスとして説明しうる。フローチャートは、動作を一連のプロセスとして説明するが、動作の多くは、並列または同時に行うことができる。さらに、動作の順序は再アレンジすることができる。プロセスは、その動作が完了すると終了する。プロセスは、方法、関数、手順、サブルーチン、サブプログラムなどに対応しうる。プロセスが関数に対応する場合、この終了とは、関数が呼び出し関数またはメイン関数に戻ることを指す。
【図面の簡単な説明】
【００３６】
【図１】本発明の一実施形態を実施可能なシステムを示す図である。
【００３７】
【図２】ハードウェアエミュレータを使用する図１に示すＡＴＡコントローラを示す図である。
【００３８】
【図３】図２に示すＡＴＡコントローラ内のエミュレータを示す図である。
【００３９】
【図４】本発明の一実施形態による、アクセスタイプに基づいてパラレルチャネルからの応答をエミュレートするプロセスを示すフローチャートである。
【００４０】
【図５】本発明の一実施形態による、アクセスタイプが第１のアクセスタイプである場合の応答をエミュレートするプロセスを示すフローチャートである。
【００４１】
【図６】ＤＥＶビット設定に関してソフトウェアプログラミングシーケンスの一実施形態を示すフローチャートである。
【図１】
2008537219.tif 000003
【図２】
2008537219.tif 000004
【図３】
2008537219.tif 000005
【図４】
2008537219.tif 000006
【図５】
2008537219.tif 000007
【図６】
2008537219.tif 000008
【国際調査報告】
2008537219.tif 000009
2008537219.tif 000010