説明

コマンド制御装置、及びコマンド制御装置のコマンド制御方法

【課題】コマンド制御装置に対し、e−SATAのデバイスポートを介して複数の外部装置が接続された際に、コマンド応答速度を高速化する。
【解決手段】接続された外部機器の種類や動作速度、発行されたコマンドの種類、コマンドごとの発行頻度、レスポンスを構成するFISの数、転送するデータ量に応じて優先度を定め、優先度の高いコマンド処理を優先して行い、これが終了するまで他のコマンド処理を待機させる。例えば動作速度の速いHDDに対するコマンド処理を実行中であれば、これよりも動作速度の遅いODDからの割込みがあっても、前者が全て終了するまでは後者を待機させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コマンド制御装置、及びコマンド制御装置のコマンド制御方法に係り、特にコマンド応答速度を向上したコマンド制御装置、及びコマンド制御装置のコマンド制御方法に関するものである。
【背景技術】
【0002】
PC(Personal Computer)などのホスト装置と、内蔵するHDD(Hard Disk Drive)やODD(Optical Disk Drive)との間のインタフェース方式は、処理速度の高速化と省スペース化のため、データを並列に送るPATA(Parallel Advanced Technology Attachment)から直列に送るSATA(Serial Advanced Technology Attachment)への移行が進んでいる。SATAにおいては伝送するデータのビットレートが高く処理速度が速いため、例えば消費電力を低減するための技術開発が進められている。
特許文献1においては、SATAのプロトコルを維持しながらパワーセーブを行う方法を開示している。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2008−186462号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
昨今のPCでは、前記したSATAのようなPCに内蔵した機器に対するインタフェースとは別に、USB(Universal Serial Bus)3.0やe−SATAのようにPCの外部機器に対するインタフェースの高速化が進んでいる。これらは複数の外部機器を接続できるようにすることで、いっそう利便性を高めており、例えばPCに複数のHDDやODDを外付けして拡張メモリとする際のインタフェースを提供している。
【0005】
例えばe−SATAの場合、SATAケーブル一本で最大15個の外部機器との接続をするための取決めであるポートマルチプライヤやマルチレーンに基づき、外部機器を接続するようにしている。そのうち、ポートマルチプライヤでは外部機器との通信をFIS(File Input Stream)単位で行っている。FISはコマンドやレスポンスを構成する要素であり、機能に応じて必要とするデータ容量を有する。そのデータ容量は4バイトの倍数であって、冒頭に付されたコードでデータ容量を知ることができる。
【0006】
PCのホスト装置と接続された複数の外部機器との間では、発生した割込みに応じて、コマンドやレスポンスのFISが完結するまでFISを転送しながら通信を行っている。一つのコマンドやレスポンスは、複数のFISにより構成される。従って、通信の途中で割込みが発生することにより、一つの外部機器とのコマンドとレスポンスの通信が完了しないうちに、他の外部機器と通信を行うこととなる。すなわち、個々のFISに応じた重み付けなどをしてFISを振分け、外部機器と通信を行うような配慮はされていなかった。
【0007】
従い、例えばホスト装置が高速転送のできる外部機器からのレスポンスを受信中であっても、転送速度の遅い外部機器からのレスポンスが割込んだ場合に、後者のFISが先に送受信されて前者のFISは送受信待ちとなる。このため実質的に前者の応答速度が低下するなどの問題があった。
本発明の目的は前記した問題に鑑み、コマンド応答速度を向上したコマンド制御装置、及びコマンド制御装置のコマンド制御方法を提供することにある。
【課題を解決するための手段】
【0008】
前記課題を解決するため本発明は、複数の外部装置に対してコマンドを発行して送信し該コマンドに応じて前記外部装置が発行したレスポンスを受信して処理するコマンド制御装置であって、前記外部装置が接続され該外部装置との間で前記コマンドとレスポンスをFISで授受する複数のデバイスポートと、該複数のデバイスポートに対して前記コマンドを分配して供給し、前記複数のデバイスポートから供給された前記レスポンスからいずれかを選択するポートマルチプライヤと、前記コマンドを発行して前記ポートマルチプライヤに供給し、前記ポートマルチプライヤから供給された前記レスポンスを処理し、前記ポートマルチプライヤにおける前記コマンドの分配と前記レスポンスの選択を制御するホストポートを有し、該ホストポートは、前記複数のデバイスポートの一つを所定の事項に基づき優先デバイスポートと定め、前記優先デバイスポートを介して前記外部装置と前記コマンドとレスポンスを授受する場合には、前記コマンドとレスポンスを構成するFISの授受が完了するまでは他のデバイスポートとのFISの授受を行わないように前記ポートマルチプライヤを制御することを特徴としている。
【0009】
また本発明は、一つの優先デバイスポートを含む複数のデバイスポートを介して、外部装置に対してコマンドを発行して送信し該コマンドに応じて前記外部装置が発行したレスポンスを受信して処理するホストポートを有するコマンド制御装置のコマンド制御方法であって、前記ホストポートが前記デバイスポートに対してReadコマンドを発行した際に、前記優先デバイスポートに対して前記コマンドを発行したか否かを判定するReadコマンド判定ステップと、該Readコマンド判定ステップでの判定の結果、前記優先デバイスポートに対して前記Readコマンドを発生したと判定された場合にはコマンド処理中であることを示すフラグを有効にする有効フラグ設定ステップを有するReadコマンド発行時のフラグ設定フローと、前記Readコマンドに対するレスポンスが終了した際に、前記優先デバイスポートに対するコマンド処理が終了したか否かを判定するコマンド処理終了判定ステップと、該コマンド処理終了判定ステップでの判定の結果、前記優先デバイスポートに対するコマンド処理が終了したと判定された場合にはコマンド処理中であることを示すフラグを無効にする無効フラグ設定ステップを有する無効フラグ設定フローと、前記外部装置が前記デバイスポートに対してデータ割込みを行った際に、前記優先デバイスポートに対するデータ割込みであるか否かを判定する割込み判定ステップを有し、該割込み判定ステップでの判定の結果、前記優先デバイスポートに対するデータ割込みであると判定された場合には、前記割込みデータを前記ホストポートに送信し、前記割込み判定ステップでの判定の結果、前記優先デバイスポートに対するデータ割込みではないと判定されない場合には、前記有効フラグ設定フロー及び前記無効フラグ設定フローで設定された前記フラグを参照し、前記フラグが有効である場合には、前記フラグが無効になるまで前記割込みデータを待機させ、前記フラグが無効である場合には、前記割込みデータを前記ホストポートに送信することを特徴としている。
【0010】
また本発明は、一つの優先デバイスポートを含む複数のデバイスポートを介して、外部装置に対してコマンドを発行して送信し該コマンドに応じて前記外部装置が発行したレスポンスを受信して処理するホストポートを有するコマンド制御装置のコマンド制御方法であって、前記ホストポートが前記デバイスポートに対してコマンドを発行した際に、前記優先デバイスポートに対して前記コマンドが発行されたか否かを判定するコマンド判定ステップと、該コマンド判定ステップでの判定の結果、前記優先デバイスポートに対して前記コマンドが発行されたと判定された場合には前記コマンドがHDDへのReadコマンドであるか否かを判定するHDDReadコマンド判定ステップと、該HDDReadコマンド判定ステップでの判定の結果、前記コマンドがHDDへのReadコマンドであると判定された場合には前記優先デバイスポートがコマンド処理中であることを示すフラグを有効にする優先デバイスポートの有効フラグ設定ステップと、前記コマンド判定ステップでの判定の結果、前記優先デバイスポートに対して前記コマンドが発行されていないと判定された場合には前記コマンドがODDへのReadコマンドであるか否かを判定するODDReadコマンド判定ステップと、該ODDReadコマンド判定での判定の結果、前記コマンドがODDへのReadコマンドであると判定された場合には、前記優先デバイスポートの有効フラグ設定ステップで設定された前記フラグを参照し、前記フラグが有効である場合には前記コマンドを受信したデバイスポートがコマンド処理中であることを示すフラグを有効にする非優先デバイスポートの有効フラグ設定ステップを有する有効フラグ設定フローと、前記コマンドに対するレスポンスが終了した際に、前記優先デバイスポートに対するコマンド処理が終了したか否かを判定するコマンド処理終了判定ステップと、該コマンド処理終了判定ステップでの判定の結果、前記優先デバイスポートに対するコマンド処理が終了したと判定された場合には前記優先デバイスポートがコマンド処理中であることを示すフラグを無効にし、前記優先デバイスポート以外のデバイスポートに対するコマンド処理が終了したと判定された場合には前記非優先デバイスポートがコマンド処理中であることを示すフラグを無効にする無効フラグ設定ステップを有する無効フラグ設定フローと、前記外部装置が前記デバイスポートに対してデータ割込みを行った際に、前記優先デバイスポートに対するデータ割込みであるか否かを判定する割込み判定ステップを有し、該割込み判定ステップでの判定の結果、前記優先デバイスポートに対するデータ割込みであると判定された場合には、前記割込みデータを前記ホストポートに送信し、前記割込み判定ステップでの判定の結果、前記優先デバイスポートに対するデータ割込みではないと判定されない場合には、前記有効フラグ設定フロー及び前記無効フラグ設定フローで設定された前記非優先デバイスポートのフラグを参照し、前記フラグが有効である場合には、前記フラグが無効になるまで前記割込みデータを待機させ、前記フラグが無効である場合には、前記割込みデータを前記ホストポートに送信することを特徴としている。
【発明の効果】
【0011】
本発明によれば、コマンド応答速度を向上したコマンド制御装置、及びコマンド制御装置のコマンド制御方法を提供でき、ユーザの使い勝手の向上に寄与できるという効果がある。
【図面の簡単な説明】
【0012】
【図1】本発明の一実施例に関わるコマンド制御装置のブロック図である。
【図2】従来のコマンド制御装置の動作を示すシーケンス図である。
【図3】本発明の一実施例に関わるコマンド制御装置のシーケンス図である。
【図4】本発明の一実施例に関わるコマンド受信割込み処理のフロー図である。
【図5】本発明の一実施例に関わるコマンド終了割込み処理のフロー図である。
【図6】本発明の一実施例に関わるデータ送信割込み処理のフロー図である。
【図7】本発明の一実施例に関わるコマンド受信割込み処理の別なフロー図である。
【図8】本発明の一実施例に関わるコマンド終了割込み処理の別なフロー図である。
【図9】本発明の一実施例に関わるデータ送信割込み処理の別なフロー図である。
【発明を実施するための形態】
【0013】
本発明の実施例においては、個々のFISに応じた重み付けなどをしたうえでFISを振分けて、ホスト装置と外部機器が通信を行うことに一つの特徴がある。
前記した重み付けの例を述べる。一つ目の例として、接続された外部機器の転送速度に応じてポートマルチプライヤを切替えることでFISを振分ける場合がある。例えば転送速度が6.0Gbpsと3.0Gbpsの外部機器が接続されているとすれば、前者に係るレスポンスのFISを優先する。
【0014】
二つ目の例として、接続された外部装置に対してホスト装置が発行するコマンドに応じてポートマルチプライヤを切替える場合がある。詳しくは後記する。
三つ目の例として、接続された外部装置の種類に応じてポートマルチプライヤを切替える場合がある。例えばHDDとODDが接続されるとすれば、一般に応答速度の速いHDDからのレスポンスのFISを優先する。
【0015】
四つ目の例として、接続された外部装置の使用頻度に応じてポートマルチプライヤを切替える場合がある。例えばホスト装置が発行するコマンドの数を集計して、発行数の多い外部装置からのレスポンスのFISを優先する。
五つ目の例として、接続された外部装置に対してホスト装置が発行するコマンドから、例えば通信に必要なFISの数を算出し、これに応じてポートマルチプライヤを切替える場合がある。FISの数が大きい方を優先するか否かは、その場合に応じて定めれば良い。
六つ目の例として、レスポンスにデータ転送が伴う際に転送するデータ量の大小に応じて、ポートマルチプライヤを切替える場合がある。データ量が大きい方を優先するか否かは、やはりその場合に応じて定めれば良い。
【0016】
以下、本発明の実施例について図を参照しながら説明する。
図1は、本発明の一実施例に関わるコマンド制御装置のブロック図である。ここではSATAのデバイスポートとして、デバイスポート0(106)とデバイスポート1(107)の二つを有する場合を示したが、もちろんこれは一例であって、さらに多くのデバイスポートを有する場合も本実施例の範疇にある。
【0017】
ホストポート101は、デバイスポート0(106)やデバイスポート1(107)に接続された外部機器(図示せず)に対するコマンドを生成し、ポートマルチプライヤ103を制御して対象とする外部機器にコマンドを送信する。ポートマルチプライヤ103は分配器(切替え器)であって、ホストポート101の制御に従い、前記コマンドを対象とする外部機器に、前記いずれかのデバイスポートを介して分配する。
【0018】
外部機器から供給されたレスポンスは、デバイスポート0(106)ないしデバイスポート1(107)より入力され、ポートマルチプライヤ103でホストポート101の指示に基づきいずれかが選択されて、前記コマンドを発生したホストポート101に供給される。ホストポート101は供給されたレスポンスに応じて所定の処理を行う。なお、バッファ102、104、105は、前記した各構成要素の間で送受信されるコマンドやレスポンスを一時的に格納するバッファメモリである。PLL(Phase Lock Loop)108はポートマルチプライヤ103へ供給する動作クロックの発生器である。例えば前記したデバイスポートが二つであれば、少なくも基本動作クロックと、これに対して2倍の周波数である位相同期した動作クロックを生成して、ポートマルチプライヤ103へ供給する。
【0019】
図2は、従来のコマンド制御装置の動作を示すシーケンス図であり、図3は、本発明の一実施例に関わるコマンド制御装置のシーケンス図である。これを用いて、例えば前記した一つ目の例や三つ目の例、すなわち接続された外部機器の転送速度や種類に応じてポートマルチプライヤを切替える場合のシーケンスを説明する。
【0020】
図2に示すように、従来のコマンド制御装置では前記したような重み付けによるFISの振分けは行っていない。前記したホストポート101やポートマルチプライヤ103を含むホスト装置からHDDに対して、HDDに対するReadコマンドとして定められたReadDMAのReadコマンド201が発せられ、これに対してHDDからホスト装置に対してデータのレスポンス205と207を返す場合を考える。レスポンス205と207は各々一つのFISである。この時、既にホスト装置からODDに対してReadコマンド204が発せられており、レスポンス205と207の間のタイミングで、ODDからホスト装置に対してデータのレスポンス206が割込んだとする。レスポンス206、及びこれに続くレスポンス208も各々一つのFISである。ポートマルチプライヤ103は、HDDからのレスポンスの途中からODDからのレスポンスに切替えてホスト装置にFISを送ることになる。したがいHDDからのレスポンス205に引続きレスポンス207があったとしても、レスポンス207はODDからのレスポンス206よりも後でホスト装置へ供給されることとなる。この場合、HDDは応答速度が速いことが特徴であるにもかかわらず、実質的な応答速度は低下する問題がある。
【0021】
これに対して本実施例においては、外部装置の転送速度ないし種類に応じてレスポンスを構成するFISの重み付けをしており、例えばHDDからのレスポンスを優先している。このため、図3に示すようにHDDからの全てのレスポンスであるレスポンス205と207が終了するまで、ODDからのホスト装置へのレスポンス206を待機させている。このため、HDDの実質的な応答速度が低下する問題は解消される。
なお図2と図3において、ODDに対するReadコマンド204に先行して、ATAPI202と記したReadコマンドと、これに対するレスポンス203を記している。これは、ODDとのインタフェースでは、ATAPIコマンド202に対してODDがReadできる状態にあることを示すレスポンス203をホスト装置に返した後、さらにReadコマンド204をホスト装置からODDに送ることで、データのレスポンス206を得る取決めであることを反映している。
【0022】
次に図3のシーケンスに対応したフロー図を説明する。図4は、本発明の一実施例に関わるコマンド受信割込み処理のフロー図である。図5は、本発明の一実施例に関わるコマンド終了割込み処理のフロー図である。図6は、本発明の一実施例に関わるデータ送信割込み処理のフロー図である。
以下、デバイスポートとしてはデバイスポート0(106)とデバイスポート1(107)の二つがある場合を例にとって説明する。またデバイスポート1(107)に対してデバイスポート0(106)は優先デバイスポートとする。例えば装置を起動し、あるいは外部機器が接続された際の機器認証において、ホストポート101は外部機器の種類や動作速度を判別する。外部機器として例えばHDDとODDが接続されていた場合には、ホストポート101は動作速度の速いHDDが接続されたデバイスポートをデバイスポート0(106)と定義し、ODDが接続されたデバイスポートをデバイスポート1(107)と定義するものとする。
【0023】
図4のフローは、ホストポート101がReadコマンドを発行した時に開始される。ステップS401では、ホストポート101は発行したReadコマンドがデバイスポート0(106)へのコマンド(たとえばReadDMAコマンド)であるか否かを判定する。デバイスポート0(106)へのコマンドである場合には(図中のY)、ステップS402でホストポート101は、デバイスポート0(106)がコマンド処理中であることを示すフラグを有効にし、内蔵するメモリ(或いは先のバッファメモリ102でも良い。以下同様)に記憶して次のReadコマンドが発行されるまで待機する。デバイスポート0(106)へのコマンドでない場合には(図中のN)、そのまま次のReadコマンドが発行されるまで待機する。
【0024】
図5のフローは、Readコマンドに対するレスポンスが終了した時に開始される。ステップS501ではホストポート101は、デバイスポート0(106)のコマンド処理が終了したか否かを判定する。すなわち、レスポンスの中のあるFISが終了した際に、全てのレスポンスのFISが終了したか否かをFISが有する情報に基づき判定する。デバイスポート0(106)のコマンド処理が終了した場合には(図中のY)、ステップS502でホストポート101は、デバイスポート0(106)がコマンド処理中であることを示すフラグを無効にし、内蔵するメモリに記憶して次のレスポンスの終了まで待機する。デバイスポート0(106)のコマンド処理の終了ではない場合には(図中のN、例えばデバイスポート1(107)のコマンド処理終了の場合が該当する)、そのまま次のレスポンスの終了まで待機する。
【0025】
図6のフローは、いずれかのデバイスポートにデータ割込みが発生した時に開始される。ステップS601ではホストポート101は、デバイスポート0(106)に対して外部装置からのデータ割込みがあるか否かを判定する。デバイスポート0(106)に対してデータ割込みがある場合には(図中のY)、ステップS603でポートマルチプライヤ103は、割込んだデータをホストポート101へ送信して次のデータ割込みまで待機する。デバイスポート0(106)へのデータ割込みでない場合には(図中のN)、デバイスポート1(107)へのデータ割込みであるので、ステップS602でホストポート101は、デバイスポート0(106)が現在コマンド処理中であるか否かを判定する。この判定は、先に図4のステップS402と図5のステップS502で記載した、コマンド処理に係るフラグを参照することにより行われる。
【0026】
デバイスポート0(106)が現在コマンド処理中である場合には(図中のY)、そのままデバイスポート0(106)の処理を優先させるため、ポートマルチプライヤ103は、デバイスポート1(107)に割込んだデータをホストポート101に送信せずに、前記処理が終了するまで待機させる。デバイスポート0(106)が現在コマンド処理中でない場合には(図中のN)、ステップS603でポートマルチプライヤ103は、デバイスポート1(107)に割込んだデータをホストポート101へ送信して、次のデータ割込みまで待機する。ステップS602でデバイスポート0(106)が現在コマンド処理中である(図中のY)と判定された場合でも、デバイスポート1(107)に割込んだデータは、デバイスポート0(106)のコマンド処理が終了した後、ホストポート101へ送信される。
【0027】
図6はHDDがデバイスポート0(106)に、ODDがデバイスポート1(107)に接続された場合に、前記したようなHDDの実質的な応答速度を低下させない効果を有する。すなわち図5において、ホストポート101がデバイスポート0(106)へ送信したコマンドに対するレスポンスのFISが完了するまでは(例えば図3の例ではレスポンス207が完了するまでは)、デバイスポート0(106)がコマンド処理中であることを示すフラグを有効にしていることにより、この効果を得ている。
【0028】
次に本発明の別な実施例について説明する。図7は、本発明の一実施例に関わるコマンド受信割込み処理の別なフロー図である。図8は、本発明の一実施例に関わるコマンド終了割込み処理の別なフロー図である。図9は、本発明の一実施例に関わるデータ送信割込み処理の別なフロー図である。これらはホスト装置とHDDがHDDに対するReadコマンドであるreadDMAを処理している際に、ホストポート101がODDに対するReadコマンドであるRead10/12を発行した場合、ODDのこのコマンドに対するレスポンスであるデータ転送を待機させる例を示している。これは例えば前記した二つ目の例、すなわちコマンドの種類に応じてポートマルチプライヤ103を切替える場合に対応している。
【0029】
図7のフローは、ホストポート101がコマンドを発行した時に開始される。ステップS701でホストポート101は、発行したコマンドがデバイスポート0(106)へのコマンドであるか否かを判定する。ステップS701での判定の結果、デバイスポート0(106)へのコマンドである場合には(図中のY)、ステップS702でホストポート101は、コマンドはHDDに対するReadコマンドであるreadDMAであるか否かを判定する。ステップS702での判定の結果、コマンドがreadDMAであると判定された場合には(図中のY)、ステップS703でホストポート101は、デバイスポート0(106)がコマンド処理中であることを示すフラグを有効にし、内蔵するメモリに記憶して次のコマンドが発行されるまで待機する。コマンドがreadDMAではないと判定された場合には(図中のN)、そのまま次のコマンドが発行されるまで待機する。
【0030】
先のステップS701で、デバイスポート0(106)へのコマンドではないと判定された場合には(図中のN)、ステップS704でホストポート101は、デバイスポート1(107)にODDに対するReadコマンドであるread10/12が発行されているか否かを判定する。read10/12が発行された場合には(図中のY)、ステップS705でホストポート101は、デバイスポート0(106)がreadDMAコマンドを処理中であるか否かを判定する。この判定は、先にステップS703(或いは後記するステップS802)で設定されるフラグを参照して行われる。ステップS705での判定の結果、デバイスポート0(106)がreadDMAコマンドを処理中であると判定された場合には(図中のY)、ステップS706でホストポート101は、デバイスポート1(107)がコマンド処理中であることを示すフラグを有効にし、内蔵するメモリに記憶して次のコマンドが発行されるまで待機する。
【0031】
先のステップS704でread10/12が発生されていないと判定された場合(図中のN)、及びステップS705でデバイスポート0(106)がreadDMAコマンドを処理中でないと判定された場合には(図中のN)、そのまま次のコマンドが発行されるまで待機する。
【0032】
図8のフローは、コマンドに対するレスポンスが終了した時に開始される。ステップS801でホストポート101は、デバイスポート0(106)のコマンド処理が終了したか否かを判定する。ステップS801での判定の結果、コマンド処理が終了したと判定された場合には(図中のY)、ステップS802でホストポート101は、デバイスポート0(106)がコマンド処理中であることを示すフラグを無効にし、内蔵するメモリに記憶して次のレスポンス終了まで待機する。デバイスポート0(106)のコマンド処理の終了ではない場合には(図中のN)、デバイスポート1(107)のコマンド処理の終了であるので、ステップS803でホストポート101は、デバイスポート1(107)がコマンド処理中であることを示すフラグを無効にし、内蔵するメモリに記憶して次のレスポンス終了まで待機する。
【0033】
すなわち、デバイスポート1(107)がコマンド処理中であることを示すフラグとは、デバイスポート0(106)がreadDMAのコマンドに対する処理中である際、デバイスポート1(107)にread10/12のコマンドがある場合に有効とされる。この時、後記するようにread10/12のコマンドに応じてデバイスポート1(107)に割込んだレスポンスは、ホストポート101への転送を一時待機させられる。デバイスポート0(106)の前記した処理が終了して前記フラグは無効となると、後記するようにデバイスポート1(107)に割込んだデータの転送処理が行われる。
【0034】
図9のフローは、いずれかのデバイスポートにデータ割込みが発生した時に開始される。ステップS901ではホストポート101は、デバイスポート0(106)に対して外部装置からのデータの割込みがあるか否かを判定する。ステップS901での判定の結果、データ割込みがあると判定された場合には(図中のY)、ステップS903でポートマルチプライヤ103は、割込んだデータをホストポート101へ送信して、次のデータ割込みまで待機する。デバイスポート0(106)へのデータ割込みではないと判定された場合には(図中のN)、デバイスポート1(107)へのデータ割込みであるので、ステップS902でホストポート101は、デバイスポート1(107)が現在Readコマンド処理中であるか否かを判定する。この判定は、先に図7のステップS706と図8のステップS803で記載した、デバイスポート1(107)のコマンド処理に係るフラグを参照することにより行われる。すなわち、デバイスポート1(107)がReadコマンド処理中であるとは、ODDに対するReadコマンドであるread10/12が発行されおり、一方デバイスポート0(106)はHDDに対するReadコマンドであるReadDMAに対する処理を行っている状態を示す。
【0035】
ステップS902での判定の結果、デバイスポート1(107)がコマンド処理中であると判定された場合には(図中のY)、デバイスポート0(106)側の処理を優先させるため、ポートマルチプライヤ103は、デバイスポート1(107)に割込んだデータをホストポート101に送信せずに、前記処理が終了するまで待機させる。デバイスポート1(107)がコマンド処理中でないと判定された場合には(図中のN)、ステップS903でポートマルチプライヤ103は、デバイスポート1(107)に割込んだデータをホストポート101へ送信して、次のデータ割込みまで待機する。ステップS902でデバイスポート1(107)が現在コマンド処理中であると判定された場合でも、デバイスポート1(107)に割込んだデータは、デバイスポート0(106)のコマンド処理が終了した後、ホストポート101へ送信される。
図9は、Readコマンドの種類を判別したうえで、HDDからのレスポンスであるデータを優先し、前記したようなHDDの実質的な応答速度を低下させない効果を有する。すなわち図8において、ホストポート101がデバイスポート0(106)へ送信したコマンドに対するレスポンスのFISが完了するまでは(例えば図3の例ではレスポンス207が完了するまでは)、デバイスポート1(107)がコマンド処理中であることを示すフラグを有効にしていることにより、この効果を得ている。
【0036】
ここまで示した実施形態は一例であって、本発明を限定するものではない。例えば図1に示したコマンド制御装置については、いくつかの変形例が考えられる。このほかにも本発明の趣旨に基づきながら異なる実施形態を考えられるが、いずれも本発明の範疇にある。
【符号の説明】
【0037】
101:ホストポート、103:ポートマルチプライヤ、106,107:デバイスポート。

【特許請求の範囲】
【請求項1】
複数の外部装置に対してコマンドを発行して送信し該コマンドに応じて前記外部装置が発行したレスポンスを受信して処理するコマンド制御装置であって、
前記外部装置が接続され該外部装置との間で前記コマンドとレスポンスをFISで授受する複数のデバイスポートと、
該複数のデバイスポートに対して前記コマンドを分配して供給し、前記複数のデバイスポートから供給された前記レスポンスからいずれかを選択するポートマルチプライヤと、
前記コマンドを発行して前記ポートマルチプライヤに供給し、前記ポートマルチプライヤから供給された前記レスポンスを処理し、前記ポートマルチプライヤにおける前記コマンドの分配と前記レスポンスの選択を制御するホストポートを有し、
該ホストポートは、前記複数のデバイスポートの一つを所定の事項に基づき優先デバイスポートと定め、前記優先デバイスポートを介して前記外部装置と前記コマンドとレスポンスを授受する場合には、前記コマンドとレスポンスを構成するFISの授受が完了するまでは他のデバイスポートとのFISの授受を行わないように前記ポートマルチプライヤを制御することを特徴とするコマンド制御装置。
【請求項2】
請求項1に記載のコマンド制御装置において、前記優先デバイスポートを定めるための所定の事項とは、前記外部機器の種類、前記外部機器の動作速度、前記コマンドの種類、前記コマンドの発行頻度、前記レスポンスを構成するFISの数、前記レスポンスが含む転送データ量のうち少なくも一つであることを特徴とするコマンド制御装置。
【請求項3】
一つの優先デバイスポートを含む複数のデバイスポートを介して、外部装置に対してコマンドを発行して送信し該コマンドに応じて前記外部装置が発行したレスポンスを受信して処理するホストポートを有するコマンド制御装置のコマンド制御方法であって、
前記ホストポートが前記デバイスポートに対してReadコマンドを発行した際に、前記優先デバイスポートに対して前記コマンドを発行したか否かを判定するReadコマンド判定ステップと、
該Readコマンド判定ステップでの判定の結果、前記優先デバイスポートに対して前記Readコマンドを発生したと判定された場合にはコマンド処理中であることを示すフラグを有効にする有効フラグ設定ステップ
を有するReadコマンド発行時のフラグ設定フローと、
前記Readコマンドに対するレスポンスが終了した際に、前記優先デバイスポートに対するコマンド処理が終了したか否かを判定するコマンド処理終了判定ステップと、
該コマンド処理終了判定ステップでの判定の結果、前記優先デバイスポートに対するコマンド処理が終了したと判定された場合にはコマンド処理中であることを示すフラグを無効にする無効フラグ設定ステップ
を有する無効フラグ設定フローと、
前記外部装置が前記デバイスポートに対してデータ割込みを行った際に、前記優先デバイスポートに対するデータ割込みであるか否かを判定する割込み判定ステップを有し、
該割込み判定ステップでの判定の結果、前記優先デバイスポートに対するデータ割込みであると判定された場合には、前記割込みデータを前記ホストポートに送信し、
前記割込み判定ステップでの判定の結果、前記優先デバイスポートに対するデータ割込みではないと判定されない場合には、前記有効フラグ設定フロー及び前記無効フラグ設定フローで設定された前記フラグを参照し、
前記フラグが有効である場合には、前記フラグが無効になるまで前記割込みデータを待機させ、
前記フラグが無効である場合には、前記割込みデータを前記ホストポートに送信することを特徴とするコマンド制御装置のコマンド制御方法。
【請求項4】
一つの優先デバイスポートを含む複数のデバイスポートを介して、外部装置に対してコマンドを発行して送信し該コマンドに応じて前記外部装置が発行したレスポンスを受信して処理するホストポートを有するコマンド制御装置のコマンド制御方法であって、
前記ホストポートが前記デバイスポートに対してコマンドを発行した際に、前記優先デバイスポートに対して前記コマンドが発行されたか否かを判定するコマンド判定ステップと、
該コマンド判定ステップでの判定の結果、前記優先デバイスポートに対して前記コマンドが発行されたと判定された場合には前記コマンドがHDDへのReadコマンドであるか否かを判定するHDDReadコマンド判定ステップと、
該HDDReadコマンド判定ステップでの判定の結果、前記コマンドがHDDへのReadコマンドであると判定された場合には前記優先デバイスポートがコマンド処理中であることを示すフラグを有効にする優先デバイスポートの有効フラグ設定ステップと、
前記コマンド判定ステップでの判定の結果、前記優先デバイスポートに対して前記コマンドが発行されていないと判定された場合には前記コマンドがODDへのReadコマンドであるか否かを判定するODDReadコマンド判定ステップと、
該ODDReadコマンド判定での判定の結果、前記コマンドがODDへのReadコマンドであると判定された場合には、前記優先デバイスポートの有効フラグ設定ステップで設定された前記フラグを参照し、前記フラグが有効である場合には前記コマンドを受信したデバイスポートがコマンド処理中であることを示すフラグを有効にする非優先デバイスポートの有効フラグ設定ステップ
を有する有効フラグ設定フローと、
前記コマンドに対するレスポンスが終了した際に、前記優先デバイスポートに対するコマンド処理が終了したか否かを判定するコマンド処理終了判定ステップと、
該コマンド処理終了判定ステップでの判定の結果、前記優先デバイスポートに対するコマンド処理が終了したと判定された場合には前記優先デバイスポートがコマンド処理中であることを示すフラグを無効にし、前記優先デバイスポート以外のデバイスポートに対するコマンド処理が終了したと判定された場合には前記非優先デバイスポートがコマンド処理中であることを示すフラグを無効にする無効フラグ設定ステップ
を有する無効フラグ設定フローと、
前記外部装置が前記デバイスポートに対してデータ割込みを行った際に、前記優先デバイスポートに対するデータ割込みであるか否かを判定する割込み判定ステップを有し、
該割込み判定ステップでの判定の結果、前記優先デバイスポートに対するデータ割込みであると判定された場合には、前記割込みデータを前記ホストポートに送信し、
前記割込み判定ステップでの判定の結果、前記優先デバイスポートに対するデータ割込みではないと判定されない場合には、前記有効フラグ設定フロー及び前記無効フラグ設定フローで設定された前記非優先デバイスポートのフラグを参照し、
前記フラグが有効である場合には、前記フラグが無効になるまで前記割込みデータを待機させ、
前記フラグが無効である場合には、前記割込みデータを前記ホストポートに送信することを特徴とするコマンド制御装置のコマンド制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2011−145870(P2011−145870A)
【公開日】平成23年7月28日(2011.7.28)
【国際特許分類】
【出願番号】特願2010−5859(P2010−5859)
【出願日】平成22年1月14日(2010.1.14)
【出願人】(501009849)株式会社日立エルジーデータストレージ (646)
【Fターム(参考)】