(58)【調査した分野】(Int.Cl.,DB名)
前記制御部は、使用する機器の追加が要求された場合には、前記記憶部に記憶された情報のうち、前記選択された機器および追加が要求された機器についての最大通信データ量を示す情報にもとづいて、前記各インタフェース回路における単位時間当たりの前記通信データ量が前記所定範囲に収まるように前記スイッチ指示を更新することを特徴とする請求項2記載の情報処理装置。
通信ポートを備え、前記通信ポートを介して、少なくとも1つの機器との入出力インタフェースを制御する複数のインタフェース回路と、複数のハブと、スイッチと、制御部とを有する情報処理装置の制御方法において、
前記インタフェース回路の前記通信ポートに接続する第1の通信ポートと、前記第1の通信ポートに接続する複数の第2の通信ポートとを備える前記ハブを、前記インタフェース回路ごとに設け、
前記各インタフェース回路と複数の前記機器との間に位置する前記スイッチが、スイッチ指示にもとづいて、前記ハブが備える前記第2の通信ポートと、前記機器との接続をスイッチングし、
前記制御部が、前記機器が稼働した際に前記インタフェース回路のバスを占有する最大割合である稼働時バス占有率と、前記機器が非稼働の際に前記インタフェース回路のバスを占有する最大割合である非稼働時バス占有率と、前記機器が実データを送受信していない状態で、前記機器と前記インタフェース回路との間で行われる通信によるバス占有率であるシステム占有率とに対して、使用対象となる前記機器の前記稼働時バス占有率と、使用しない前記機器の前記非稼働時バス占有率と、前記システム占有率との和が所定範囲に収まるように前記スイッチ指示を出力する、
ことを特徴とする情報処理装置の制御方法。
【発明を実施するための形態】
【0014】
以下、本発明の実施の形態を図面を参照して説明する。
〔第1の実施の形態〕
図1は第1の実施の形態に係る情報処理装置の構成例を示す図である。情報処理装置1は、I/F回路(インタフェース回路)11−1〜11−n、スイッチ12および制御部13を備える。
【0015】
I/F回路11−1〜11−nは、通信ポートPを有し、通信ポートPを介して、機器D1〜Dmとの入出力インタフェースを制御する。なお、機器D1〜Dmは、装置内部にあらかじめ搭載されている内部機器であってもよいし、装置外部から接続される外部機器であってもよい。
【0016】
スイッチ12は、I/F回路11−1〜11−nと機器D1〜Dm間に配置される。スイッチ12は、スイッチ指示にもとづいて、I/F回路11−1〜11−nの各通信ポートPと機器D1〜Dmとの接続をスイッチングする。
【0017】
制御部13は、スイッチ指示をスイッチ12へ出力し、I/F回路11−1〜11−nの各通信ポートPの負荷に応じて、スイッチ12を制御する。例えば、制御部13は、I/F回路11−1〜11−nのそれぞれにおける単位時間当たりの通信データ量が所定範囲に収まるようにスイッチ指示を出力する。
【0018】
ここで、
図1の下部に示すように、スイッチ12が、I/F回路11−1、11−2と機器D1〜D4とのスイッチングを行う場合の例について説明する。また、機器D1の負荷が0.5、機器D2の負荷が0.6、機器D3の負荷が0.5、機器D4の負荷が0.3であるとする。ここで言う「負荷」とは、例えば、I/F回路11−1,11−2のそれぞれが単位時間に通信可能な最大データ量を1としたときの、機器ごとの単位時間当たりの最大通信データ量を示す。
【0019】
接続状態St1では、I/F回路11−1の通信ポートP1に機器D1、D2が接続し、I/F回路11−2の通信ポートP2に機器D3、D4が接続している。このとき、通信ポートP1の負荷が1.1、通信ポートP2の負荷が0.8となるため、I/F回路11−2では、機器D3、D4の負荷は許容範囲内にあるが、I/F回路11−1では、機器D1、D2の負荷が許容範囲を超えていることになる。
【0020】
これに対し、接続状態St2は、本実施の形態における制御部13のスイッチ制御により機器配置を行った場合の状態であり、スイッチ12を介して、I/F回路11−1の通信ポートP1には、機器D1、D3が接続し、I/F回路11−2の通信ポートP2には、機器D2、D4が接続している。この接続状態St2では、通信ポートP1の負荷が1、通信ポートP2の負荷が0.9となる。このため、I/F回路11−1、11−2の両方で機器の負荷は許容範囲内に収まることになる。
【0021】
このように、情報処理装置1は、I/F回路と機器とを互いに接続するスイッチに対して、I/F回路の通信ポートの負荷に応じて、I/F回路の通信ポートと機器との接続をフレキシブルにスイッチ制御する。
【0022】
これにより、I/F回路と、I/F回路に接続された複数の機器との間の通信速度の低下を抑制することが可能になり、また、機器の性能低下を抑制して、パフォーマンスを向上させることが可能になる。
【0023】
〔第2の実施の形態〕
次に、第2の実施の形態として、第1の実施の形態で示した機能を適用した、USBインタフェースを有する情報処理装置について説明する。
図2は情報処理装置のハードウェア構成例を示す図である。情報処理装置1aは、
図2に示すハードウェア構成を有するコンピュータとして実現される。
【0024】
情報処理装置1aは、チップセット20、USBハブ31、32、USBスイッチ33およびテーブルレジスタ34を備える。USBデバイスd1〜d8は、装置内部にあらかじめ搭載されていてもよいし、装置外部から接続されるものでもよい。
【0025】
チップセット20は、USBホスト21、22、I/O(入出力)コントローラ23、CPU(Central Processing Unit)24、HDD(Hard Disk Drive)25、RAM(Random Access Memory)26、フラッシュメモリ27およびグラフィックI/F28を備える。チップセット20の中に、USBハブ31、32、USBスイッチ33およびテーブルレジスタ34の少なくとも1つが含まれる構成でもよい。
【0026】
なお、USBホスト21、22は、
図1のI/F回路11−1〜11−nの機能を実現する。また、USBスイッチ33は、
図1のスイッチ12に該当し、CPU24は、
図1の制御部13の機能を実現する。さらに、USBデバイスd1〜d8は、
図1の機器D1〜Dmに該当する。
【0027】
2つのUSBホスト21、22には、それぞれ4ポートのUSBハブ31、32が接続されている。USBホスト21の通信ポートp1は、USBハブ31のポートa0と接続し、USBホスト22の通信ポートp2は、USBハブ32のポートb0と接続する。これにより、情報処理装置1aは、USBハブ31,32による合計8ポートのUSBインタフェースに8個のUSBデバイスd1〜d8を接続可能な構成になっている。
【0028】
また、USBハブ31のUSBポートa1〜a4はそれぞれ、USBスイッチ33のスイッチポートs1−1〜s1−4と接続し、USBハブ32のUSBポートb1〜b4はそれぞれ、USBスイッチ33のスイッチポートs2−1〜s2−4と接続する。さらに、USBスイッチ33のデバイスポートs1〜s8はそれぞれ、USBデバイスd1〜d8と接続する。
【0029】
USBホスト21、22は、USBインタフェースにおけるホストコントローラとして機能する。USBハブ31、32は、USBホスト21、22の1つの通信ポートp1、p2にそれぞれ接続して、複数のインタフェースを収容可能にする集線部である。
【0030】
USBスイッチ33は、マトリクススイッチであり、外部設定に応じて、USBインタフェースの接続先を変更して、USBポートとUSBデバイスd1〜d8の接続をフレキシブルに変更する。テーブルレジスタ34は、後述のマトリクステーブルT1および占有率テーブルT2を保持してテーブル管理を行う。
【0031】
チップセット20において、CPU24には、バスを介して、I/Oコントローラ23、HDD25、RAM26およびフラッシュメモリ27が接続している。フラッシュメモリ27には、BIOS(Basic Input/Output System)プログラムが書き込まれている。CPU24は、電源投入時や装置リセット時などに、OS(Operating System)を実行する前にフラッシュメモリ27のBIOSプログラムを実行する。
【0032】
RAM26は、情報処理装置1aの一次記憶デバイスとして機能する。RAM26には例えば、CPU24に実行させるBIOSプログラム、OSプログラムおよびアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM26には、CPU24による処理に必要な各種データが格納される。
【0033】
HDD25は、情報処理装置1aの二次記憶デバイスとして機能する。HDD25には例えば、CPU24が実行するOSプログラムやアプリケーションプログラム、各プログラムの実行に必要な各種のデータが格納される。なお、二次記憶デバイスとしては、SSD(Solid State Drive)などの他の種類の不揮発性記憶装置が使用されてもよい。
【0034】
グラフィックI/F28は、CPU24からの指示に応じて、モニタ28aに対して画像を表示させる。なお、モニタ28aは、情報処理装置1aの外部に接続されていてもよく、あるいは、情報処理装置1aの内部に搭載されていてもよい。
【0035】
I/Oコントローラ23は、CPU24、USBホスト21、22、HDD25、グラフィックI/F28およびテーブルレジスタ34間の入出力のI/F制御を行う。
次にUSBスイッチ33の内部構成について説明する。
図3はUSBスイッチの内部構成例を示す図である。
図3では、USBデバイスd1〜d8の内、USBデバイスd1の接続部分について示している。USBデバイスd2〜d8の各接続部分についても同様な構成である。すなわち、USBスイッチ33は、実際には、
図3に示す構成を接続されたUSBデバイスの数だけ(ここでは8個分)備えている。
【0036】
USBスイッチ33は、USBデバイスd1の接続部分に対して、セレクタ3−1−1〜3−1−8を有している。USBスイッチ33のスイッチポートs1−1〜s1−4、s2−1〜s2−4はそれぞれ、セレクタ3−1−1〜3−1−8の一方の端子と接続する。
【0037】
また、セレクタ3−1−1〜3−1−8の他方の端子にはそれぞれ、セレクト信号SEL1−1〜SEL1−8が接続する。セレクト信号SEL1−1〜SEL1−8は、CPU24の指示にもとづき、I/Oコントローラ23から出力される制御信号である。
【0038】
セレクト信号がイネーブルになると、該当セレクタがONして、USBスイッチ33のUSBホスト側のスイッチポートと、USBデバイス側のデバイスポートとが接続する。例えば、セレクト信号SEL1−1がイネーブルになると、セレクタ3−1−1がONする。すると、スイッチポートs1−1とデバイスポートs1とが導通して接続し、USBデバイスd1は、
図2に示したUSBハブ31を介して、USBホスト21の通信ポートp1に接続することになる。
【0039】
次にテーブルレジスタ34で保持されるマトリクステーブルT1および占有率テーブルT2について説明する。
図4はマトリクステーブルの構成例を示す図である。
マトリクステーブルT1においては、各行には8個のUSBスイッチポートs1−1〜s1−4、s2−1〜s2−4が示され、各列には8個のUSBデバイスポートs1〜s8にそれぞれ接続されたUSBデバイスd1〜d8が示されている。また、マトリクステーブルT1においては、互いに対応付けられたUSBスイッチポートとUSBデバイスとが接続されていない場合には“0”が記載され、接続される場合には“1”が記載される。
【0040】
CPU24は、マトリクステーブルT1に対して“1”または“0”の設定を行う。ここで、USBスイッチポートとUSBデバイスとは1対1で繋がることになるため、各行および各列において、“1”が2つ以上登録されることはない。CPU24は、マトリクステーブルT1への設定が完了すると、マトリクステーブルT1内で“1”となっている箇所を接続するように、
図3に示したセレクト信号を発生させる。
【0041】
なお、上記のように、USBスイッチポートとUSBデバイスとは、1対1で繋がることになるため、各行および各列において、“1”が2つ以上登録されることはなく、各行および各列の総和は常に“1”となる。CPU24は、マトリクステーブルT1の接続マトリクスを任意に変更可能だが、変更後の各行および各列の総和が“1”になっていることを確認するようにしてもよい。
【0042】
この場合、例えば、CPU24は、総和が“2”以上の場合は、重複していると認識して、接続マトリクスを変更前の状態に戻すか、再設定する。また、総和が“0”の場合、未接続のエラーを意味するが、CPU24は、総和“0”を許可し、例えば、不要なUSBデバイスを使用不可にする運用を行う場合などに用いてもよい。
【0043】
図5は占有率テーブルの構成例を示す図である。占有率テーブルT2は、USBデバイス名、稼働時バス占有率(稼働時の最大バス占有率)、非稼働時バス占有率および使用フラグの項目を有する。CPU24は、各USBデバイスから個々のバス占有率(稼働時、非稼働時)を取得して占有率テーブルT2に登録する。
【0044】
なお、バス占有率とは、該当USBデバイスの通信時において、該当USBデバイスが接続しているUSBホストのバスを占有する割合を示す。より具体的には、バス占有率とは、USBホストの単位時間当たりの最大通信データ量に対する、該当USBデバイスの単位時間当たりの通信データ量の割合を示す。
【0045】
稼働時バス占有率とは、該当USBデバイスが稼働した際に、該当USBデバイスが接続しているUSBホストのバスを占有する割合の最大値である。また、非稼働時バス占有率とは、該当USBデバイスが稼働していないときに、該当USBデバイスが接続しているUSBホストのバスを占有する割合の最大値である。
【0046】
使用フラグとは、ユーザによって該当USBデバイスを使用する(該当USBデバイスを稼働させる)ように設定されているか否かを示すフラグ情報である。
ここで、1つのUSBホストに複数のUSBデバイスが接続して、USBインタフェースのバス占有率の総和が100%を超えると、接続している中のUSBデバイスの幾つかが動作不可になったり、性能が劣化したりすることになる。
【0047】
例えば、USBネットワークデバイス(WWAN:Wireless Wide Area Network)#1、USBタッチパネル、USBカメラ#11が、1つのUSBホストに接続して、同時に動作する場合、
図5の数値例よりバス占有率の総和は40+10+50+20=120%となる。なお、この計算ではシステムの占有率20%が追加されている。システムの占有率とは、各USBデバイスが実データを送受信していない状態において、USBホストとUSBデバイスとの間で行われる通信によるバス占有率である。
【0048】
システムの占有率20%が追加されるので、実際は、USBデバイスの占有率だけでは、最大総和は80%以下にすることになる。CPU24では、USBインタフェースの占有率が100%を超えた時点で、動作させようとしているUSBデバイスが動作不可であることをユーザに通知する。
【0049】
上記の例では、USBネットワークデバイス#1とUSBタッチパネルを動作させた時点で、USBインタフェースの占有率は30%(=100−40−10−20)しか余裕がなくなる。このため、CPU24は、稼働時に占有率50%を要するUSBカメラ#11は動作できないと判断してエラー表示を行う。
【0050】
次に、具体的なスイッチ制御の処理手順について説明する。本実施の形態は、OS(Operating System)起動前に、BIOSプログラムにもとづきスイッチ制御を行うものである。
【0051】
図6はBIOS選択メニューの画面例を示す図である。電源投入後のOS起動前に、情報処理装置1aのGUI(Graphical User Interface)を通じて、BIOS選択メニューm1が表示される。ユーザは、BIOS選択メニューm1にしたがって、使用するUSBデバイスまたは使用しないUSBデバイスを選択して設定する。
【0052】
図7、
図8は第2の実施の形態のスイッチ制御の動作を示すフローチャートである。この
図7、
図8に示すフローは、CPU24がBIOSプログラムを実行することで実現される処理である。すなわち、情報処理装置1aが電源投入あるいは再起動要求に応じて起動すると、CPU24は、OSプログラムを読み込む前にフラッシュメモリ27からBIOSプログラムを読み込み、BIOSプログラムに従って以下の処理を実行する。
【0053】
〔S1〕CPU24は、フラッシュメモリ27に格納された起動フラグの状態を確認する。起動フラグは、情報処理装置1aが起動したときに、使用するUSBデバイスをユーザに選択させるか、または現在使用しているUSBデバイスをそのまま使用するかを示すフラグ情報である。なお、起動フラグの初期値は“1”である。
【0054】
〔S2〕CPU24は、起動フラグ=1の場合はステップS3へ行き、起動フラグ=0の場合はステップS5へ行く。ここでは、起動フラグ=1は、BIOS選択メニューm1を介したユーザからの選択設定を受け付け、起動フラグ=0は、選択設定を受け付けずに現在の占有率テーブルT2における使用フラグの設定状態をそのまま使用するものとする。なお、起動フラグ=0の場合、CPU24は、起動フラグを“1”に更新して、ステップS5の処理を実行する。
【0055】
〔S3〕CPU24は、BIOS選択メニューm1をモニタ28aに表示させる。そして、ユーザ操作により、使用するUSBデバイスが選択される。
〔S4〕CPU24は、選択されたUSBデバイスの使用フラグをONにして、占有率テーブルT2に登録する。
【0056】
〔S4a〕CPU24は、マトリクステーブルT1におけるすべての設定値を“0”に初期化する。
〔S5〕CPU24は、占有率テーブルT2を参照し、使用フラグがONになっている使用対象USBデバイスの中から、1つの使用対象USBデバイスの稼働時バス占有率を取得する。
【0057】
〔S6〕CPU24は、使用対象USBデバイスに接続するUSBホストを選択し、選択したUSBホストに対応する一時的な計算値である「占有率加算値」に対し、初期値としてシステム占有率(例えば20%)を設定する。なお、この占有率加算値はUSBホストごとに作成され、各USBホストに対するUSBデバイスの割り当てが完了するまで、例えば情報処理装置1aのRAM26に保持される。
【0058】
〔S7〕CPU24は、該当USBホストに空きのUSBポートがあるか否かを判断する。USBポートの空きが無ければステップS8へ行き、空きがあればステップS10へ行く。
【0059】
〔S8〕CPU24は、他のUSBホストが存在するか否かを判断する。他のUSBホストがあればステップS6へ戻り、他のUSBホストが無ければステップS9へ行く。
〔S9〕CPU24は、USB配置不可のためエラーをモニタ28aに表示させる。なお、ステップS9の処理後は、後述のステップS31へ行く。
【0060】
〔S10〕CPU24は、次の使用対象USBデバイスを選択する。そして、CPU24は、占有率テーブルT2を参照し、選択した使用対象USBデバイスの稼働時バス占有率を取得する。
【0061】
〔S11〕CPU24は、占有率加算値に対して、ステップS10で取得した稼働時バス占有率を加算する。
〔S12〕CPU24は、占有率加算値が100%を超えるか否かを判断する。100%を超える場合はステップS8へ戻り、100%以下の場合はステップS13へ行く。
【0062】
〔S13〕CPU24は、該当USBホストに繋がる未割り当てのUSBスイッチポートに使用対象USBデバイスを割り当てる。この場合、CPU24は、マトリクステーブルT1のUSBスイッチポートと使用対象USBデバイスとの該当交差欄に“1”を設定する。
【0063】
〔S14〕CPU24は、割り当てられていない使用対象USBデバイスがあるか否かを判断する。未割り当ての使用対象USBデバイスがある場合はステップS7へ戻り、未割り当ての使用対象USBデバイスが無い場合はステップS15へ行く。
【0064】
〔S15〕ステップS14の段階で、使用対象USBデバイスをUSBホストに割り当てる処理が完了したので、次に、CPU24は、使用しないUSBデバイス(未使用USBデバイス)の割り当て処理を行う。
【0065】
〔S16〕CPU24は、未使用USBデバイスを割り当てるためのUSBホストを選択する。
〔S17〕CPU24は、選択した該当USBホストに繋がるUSBスイッチポートの中に、空きのUSBスイッチポートがあるか否かを判断する。空きのUSBスイッチポートが無い場合はステップS18へ行き、空きのUSBスイッチポートがある場合はステップS20へ行く。
【0066】
〔S18〕CPU24は、他のUSBホストが存在するか否かを判断する。他のUSBホストがあればステップS16へ戻り、他のUSBホストが無ければステップS19へ行く。
【0067】
〔S19〕CPU24は、USB配置不可のためエラーをモニタ28aに表示させる。なお、ステップS19の処理後は、後述のステップS31へ行く。
〔S20〕CPU24は、次の未使用USBデバイスを選択する。そして、CPU24は、占有率テーブルをT2参照し、選択した未使用USBデバイスの非稼働時バス占有率を取得する。
【0068】
〔S21〕CPU24は、該当USBホストに対応する占有率加算値に対して、ステップS20で取得した未使用USBデバイスの非稼働時バス占有率を加算する。
〔S22〕CPU24は、システム占有率を含めて、加算結果の占有率の総和が100%以下になるか否かを判断する。100%を超えた場合はステップS18へ戻り、100%以下の場合はステップS23へ行く。
【0069】
〔S23〕CPU24は、該当USBホストに繋がる未割り当てのUSBスイッチポートに未使用USBデバイスを割り当てる。この場合、CPU24は、マトリクステーブルT1のUSBスイッチポートと未使用対象USBデバイスとの該当交差欄に“1”を設定する。
【0070】
〔S24〕CPU24は、割り当てられていない未使用USBデバイスが、まだあるか否かを判断する。未割り当ての未使用USBデバイスがある場合はステップS17へ戻り、未割り当ての未使用USBデバイスが無い場合はステップS25へ行く。
【0071】
なお、以上のステップS13〜S24では、未使用USBデバイスについても電源が投入される場合について示した。しかしながら、例えば、未使用USBデバイスについては電源を投入しない場合、CPU24は、ステップS13〜S24の処理の代わりに、未割り当てのUSBスイッチポートに対して未使用USBデバイスを順次割り当てるだけでもよい。
【0072】
〔S25〕CPU24は、設定が完了したマトリクステーブルT1にもとづいて、USBスイッチ33に対してセレクト信号を出力して、USBスイッチ33におけるポートの接続状態を制御する。
【0073】
このように、第1の実施の形態では、CPU24は、メモリに記録されているBIOSプログラムをOS起動前に実行してスイッチ制御を行う。CPU24は、例えば、USBホスト21に対し、USBデバイスの占有率を累積加算し、100%を超えなければ、USBホスト21に繋がるUSBハブ31の各USBポートにUSBデバイスを割り当てる。
【0074】
CPU24は、占有率が100%を超えた時点で、次のUSBホスト22に移り、同様に占有率を確認しながらUSBデバイスを割り当てる。このような処理を、使用するUSBデバイスが無くなるまで繰り返す。
【0075】
その後、CPU24は、使用しないUSBデバイスは、空いているUSBポートに割り当てる。なお、当然ながら、1つのUSBホストに対して繋がっているUSBポート数が決まっているので、占有率に余裕があっても接続できるUSBポートが無ければ次のUSBホストへ移る。
【0076】
CPU24は、すべてのUSBデバイスの配置が完了したら、OSプログラムを起動し、各USBデバイスのドライバをインストールする。これにより、情報処理装置1aの運用が開始される。
【0077】
図9は、運用開始後のデバイス追加の監視処理を示すフローチャートである。この
図9のフローは、OSプログラムの起動後に、CPU24が所定の監視用アプリケーションプログラムを実行することで実現される。
【0078】
〔S31〕CPU24は、追加されたUSBデバイスがあるか否かを判断する。USBデバイスが追加されるとは、例えば、他のアプリケーションプログラムの実行によって未使用USBデバイスの動作が要求される、または未接続のUSBポートに新たなUSBデバイスが接続される等が該当する。CPU24は、追加されたUSBデバイスがある場合は、ステップS32に進み、無ければステップS31の判断を一定時間ごとに繰り返す。
【0079】
〔S32〕CPU24は、追加されたUSBデバイスの使用フラグをONにして、占有率テーブルT2に登録する。
〔S33〕CPU24は、フラッシュメモリ27の起動フラグを“1”から“0”に更新する。なお、ステップS32、S33の処理順は逆でもよい。
【0080】
〔S34〕CPU24は、情報処理装置1aを再起動させる。
これにより、再起動後の情報処理装置1aでは、
図7、
図8の処理が再度実行されて、マトリクステーブルT1が再設定され、USBスイッチ33に対して再設定されたマトリクステーブルT1にもとづくセレクト信号が出力される。なお、再起動後の状態では起動フラグは“0”となるので、
図7のステップS3、S4がスキップされて、再起動直前における使用フラグの設定値がそのまま使用される。これにより、追加されたUSBデバイスの稼働時バス占有率が加味されたスイッチ制御が行われる。
【0081】
〔第3の実施の形態〕
第3の実施の形態は、第2の実施の形態の情報処理装置1aのスイッチ制御を、BIOSプログラムを使用せずにすべてアプリケーションプログラムの実行によって行うように変形したものである。以下、第3の実施の形態について、第2の実施の形態と同じ符号を用いて説明する。
【0082】
図10は選択メニューの画面例を示す図である。OS起動後の運用中に、CPU24が所定のアプリケーションプログラムを実行することにより、選択メニューm2が表示される。ユーザは、選択メニューm2にしたがって、使用するUSBデバイスまたは使用しないUSBデバイスを選択・設定する。
【0083】
図11〜
図13は第3の実施の形態のスイッチ制御の動作を示すフローチャートである。この
図11〜
図13に示すフローは、CPU24がアプリケーションプログラムを実行することで実現される処理である。すなわち、CPU24は、BIOSプログラムを使用せずに、HDD25からアプリケーションプログラムを読み込み、アプリケーションプログラムに従って以下の処理を実行する。
【0084】
〔S41〕CPU24は、選択メニューm2をモニタ28aに表示させる。そして、ユーザ操作により、使用するUSBデバイスが選択される。
〔S42〕CPU24は、選択されたUSBデバイスの使用フラグをONにして、占有率テーブルT2に登録する。
【0085】
〔S43〕CPU24は、マトリクステーブルT1におけるすべての設定値を“0”に初期化する。
〔S44〕CPU24は、占有率テーブルT2を参照し、使用フラグがONになっている使用対象USBデバイスの中から、1つの使用対象USBデバイスの稼働時バス占有率を取得する。
【0086】
〔S45〕CPU24は、使用対象USBデバイスに接続するUSBホストを選択し、選択したUSBホストに対応する一時的な計算値である「占有率加算値」に対し、初期値としてシステム占有率(例えば20%)を設定する。なお、この占有率加算値はUSBホストごとに作成され、各USBホストに対するUSBデバイスの割り当てが完了するまで、例えば情報処理装置1aのRAM26に保持される。
【0087】
〔S46〕CPU24は、該当USBホストに空きのUSBポートがあるか否かを判断する。USBポートの空きが無ければステップS47へ行き、空きがあればステップS49へ行く。
【0088】
〔S47〕CPU24は、他のUSBホストが存在するか否かを判断する。他のUSBホストがあればステップS45へ戻り、他のUSBホストが無ければステップS48へ行く。
【0089】
〔S48〕CPU24は、USB配置不可のためエラーをモニタ28aに表示させる。なお、ステップS48の処理後は、前述のステップS31へ行く。
〔S49〕CPU24は、次の使用対象USBデバイスを選択する。そして、CPU24は、占有率テーブルT2を参照し、選択した使用対象USBデバイスの稼働時バス占有率を取得する。
【0090】
〔S50〕CPU24は、占有率加算値に対して、ステップS49で取得した稼働時バス占有率を加算する。
〔S51〕CPU24は、占有率加算値が100%を超えるか否かを判断する。100%を超える場合はステップS47へ戻り、100%以下の場合はステップS52へ行く。
【0091】
〔S52〕CPU24は、該当USBホストに繋がる未割り当てのUSBスイッチポートに使用対象USBデバイスを割り当てる。この場合、CPU24は、マトリクステーブルT1のUSBスイッチポートと使用対象USBデバイスとの該当交差欄に“1”を設定する。
【0092】
〔S53〕CPU24は、割り当てられていない使用対象USBデバイスがあるか否かを判断する。未割り当ての使用対象USBデバイスがある場合はステップS46へ戻り、未割り当ての使用対象USBデバイスが無い場合はステップS54へ行く。
【0093】
〔S54〕ステップS53の段階で、使用対象USBデバイスをUSBホストに割り当てる処理が完了したので、次に、CPU24は、使用しないUSBデバイス(未使用USBデバイス)の割り当て処理を行う。
【0094】
〔S55〕CPU24は、未使用USBデバイスを割り当てるためのUSBホストを選択する。
〔S56〕CPU24は、選択した該当USBホストに繋がるUSBスイッチポートの中に、空きのUSBスイッチポートがあるか否かを判断する。空きのUSBスイッチポートが無い場合はステップS57へ行き、空きのUSBスイッチポートがある場合はステップS59へ行く。
【0095】
〔S57〕CPU24は、他のUSBホストが存在するか否かを判断する。他のUSBホストがあればステップS55へ戻り、他のUSBホストが無ければステップS58へ行く。
【0096】
〔S58〕CPU24は、USB配置不可のためエラーをモニタ28aに表示させる。なお、ステップS58の処理後は、前述のステップS31へ行く。
〔S59〕CPU24は、次の未使用USBデバイスを選択する。そして、CPU24は、占有率テーブルをT2参照し、選択した未使用USBデバイスの非稼働時バス占有率を取得する。
【0097】
〔S60〕CPU24は、占有率加算値に対して、ステップS59で取得した未使用USBデバイスの非稼働時バス占有率を加算する。
〔S61〕CPU24は、システム占有率を含めて、加算結果の占有率の総和が100%以下になるか否かを判断する。100%を超えた場合はステップS57へ戻り、100%以下の場合はステップS62へ行く。
【0098】
〔S62〕CPU24は、該当USBホストに繋がる未割り当てのUSBスイッチポートに未使用USBデバイスを割り当てる。この場合、CPU24は、マトリクステーブルT1のUSBスイッチポートと未使用対象USBデバイスとの該当交差欄に“1”を設定する。
【0099】
〔S63〕CPU24は、割り当てられていない未使用USBデバイスが、まだあるか否かを判断する。未割り当ての未使用USBデバイスがある場合はステップS56へ戻り、未割り当ての未使用USBデバイスが無い場合はステップS64へ行く。
【0100】
なお、以上のステップS41〜S63では、未使用USBデバイスについても電源が投入される場合について示した。しかしながら、例えば、未使用USBデバイスについては電源を投入しない場合、CPU24は、ステップS41〜S63の処理の代わりに、未割り当てのUSBスイッチポートに対して未使用USBデバイスを順次割り当てるだけでもよい。
【0101】
〔S64〕CPU24は、設定が完了したマトリクステーブルT1にもとづいて、USBスイッチ33に対してセレクト信号を出力して、USBスイッチ33におけるポートの接続状態を制御する。これにより、USBデバイスの運用が開始される。
【0102】
〔S65〕CPU24は、追加されたUSBデバイスがあるか否かを判断する。USBデバイスが追加されるとは、例えば、他のアプリケーションプログラムの実行によって未使用USBデバイスの動作が要求される、または未接続のUSBポートに新たなUSBデバイスが接続される等が該当する。CPU24は、追加されたUSBデバイスがある場合は、ステップS66に進み、無ければステップS65の判断を一定時間ごとに繰り返す。
【0103】
〔S66〕CPU24は、追加されたUSBデバイスを含めて、現在の接続状態で占有率を再計算する。
〔S67〕CPU24は、再計算結果が100%を超えるか否かを判断する。100%を超える場合はステップS41へ戻り、USBスイッチ33の再設定を行う。一方、CPU24は、100%を超えない場合はステップS68へ行く。
【0104】
〔S68〕CPU24は、追加されたUSBデバイスの使用フラグをONにして、占有率テーブルT2に登録し、追加されたUSBデバイスを含めて、現状のスイッチ制御状態で運用を継続する。
【0105】
このように、第3の実施の形態では、CPU24は、HDD25に記録されているアプリケーションプログラムをOS起動後に実行してスイッチ制御を行う。
第3の実施の形態では、OS起動後のアプリケーションを通じてスイッチ制御を行うので、例えば、通常運用中に未使用USBデバイスの使用要求があった場合などは、再起動せずに、USBデバイスの再配置をすみやかに行うことが可能になる。
【0106】
次に利用場面毎のUSBデバイスの配置例について説明する。なお、以下の
図14〜
図17の配置例は、上記の第2の実施の形態および第3の実施の形態で共通である。
図14はUSBホストに接続するUSBデバイスを示す図である。USBデバイスとしては、カメラd1、d2、BD/DVD(Blu ray Disc/Digital Versatile Disc)d3、キーボードd4、ネットワークデバイス(WWAN)d5、ネットワークデバイス(WLAN:Wireless LAN)d6、ネットワークデバイス(LAN:Local Area Network)d7、マウスd8がある。これらがUSBスイッチ33を介して、USBホスト21、22に接続されるものとする。
【0107】
また、各USBデバイスの占有率は、(稼働時バス占有率、非稼働時バス占有率)とすると、カメラd1=(50%、0%)、カメラd2=(50%、0%)、BD/DVDd3=(50%、0%)、キーボードd4=(10%、10%)、ネットワークデバイス(WWAN)d5=(40%、0%)、ネットワークデバイス(WLAN)d6=(40%、0%)、ネットワークデバイス(LAN)d7=(50%、0%)、マウスd8=(10%、10%)である。
【0108】
このようなUSBデバイスが接続するときは、各USBホスト21、22のUSBインタフェース占有率の総和が100%以下となるように(システム占有率は20%なので、USBデバイスのみの占有率は80%以下となるように)、USBデバイスの接続処理が行われる。
【0109】
図15はUSBデバイスの配置例を示す図である。カメラ2台を同時使用する場合の配置例を示している。USBスイッチ33のスイッチングにより、USBハブ31には、カメラd1、キーボードd4、ネットワークデバイス(WLAN)d6およびBD/DVDd3が接続している。
【0110】
カメラd1は使用するので占有率は50%である。また、キーボードd4、ネットワークデバイス(WLAN)d6およびBD/DVDd3は使用しないので、占有率はそれぞれ10%、0%、0%である。したがって、USBホスト21のUSBデバイスに関する占有率は60%となる。
【0111】
一方、USBスイッチ33のスイッチングにより、USBハブ32には、カメラd2、マウスd8、ネットワークデバイス(LAN)d7およびネットワークデバイス(WWAN)d5が接続している。
【0112】
カメラd2は使用するので占有率は50%である。また、マウスd8、ネットワークデバイス(LAN)d7およびネットワークデバイス(WWAN)d5は使用しないので、占有率はそれぞれ10%、0%、0%である。したがって、USBホスト22のUSBデバイスに関する占有率は60%となる。
【0113】
USBデバイスに関する占有率はそれぞれ60%であるから、USBホスト21、22共に、システム占有率を加えて合計80%となる。各USBホスト21、22では、USBインタフェース占有率が100%以下でUSBデバイスが動作する。したがって、通信速度が低下したり、USBデバイスの性能が劣化したりせずに、USBデバイスの運用が可能になる。
【0114】
図16はUSBデバイスの配置例を示す図である。ネットワークデバイス(WWAN)d5、ネットワークデバイス(WLAN)d6およびネットワークデバイス(LAN)d7を同時使用する場合の配置例を示している。
【0115】
USBスイッチ33のスイッチングにより、USBハブ31には、カメラd1、カメラd2、ネットワークデバイス(WLAN)d6およびネットワークデバイス(WWAN)d5が接続している。
【0116】
ネットワークデバイス(WLAN)d6およびネットワークデバイス(WWAN)d5は使用するので、占有率はそれぞれ40%、40%である。また、カメラd1、d2は使用しないので占有率は共に0%である。したがって、USBホスト21のUSBデバイスに関する占有率は80%となる。
【0117】
一方、USBスイッチ33のスイッチングにより、USBハブ32には、ネットワークデバイス(LAN)d7、キーボードd4、BD/DVDd3およびマウスd8が接続している。
【0118】
ネットワークデバイス(LAN)d7は使用するので占有率は50%である。また、キーボードd4、BD/DVDd3およびマウスd8は使用しないので、占有率はそれぞれ10%、0%、10%である。したがって、USBホスト22のUSBデバイスに関する占有率は70%となる。
【0119】
USBホスト21のUSBインタフェース占有率は、USBデバイスに関する占有率80%と、システム占有率20%を合わせて100%となる。また、USBホスト22のUSBインタフェース占有率は、USBデバイスに関する占有率70%と、システム占有率20%を合わせて90%となる。
【0120】
各USBホスト21、22では、占有率100%以下でUSBデバイスが動作する。したがって、通信速度が低下したり、USBデバイスの性能が劣化したりせずに、USBデバイスの運用が可能になる。
【0121】
図17はUSBデバイスの配置例を示す図である。ネットワークデバイス(WWAN)d5、ネットワークデバイス(WLAN)d6およびBD/DVDd3を同時使用する場合の配置例を示している。
【0122】
USBスイッチ33のスイッチングにより、USBハブ31には、カメラd1、BD/DVDd3、マウスd8およびキーボードd4が接続している。
BD/DVDd3は使用するので占有率は50%である。カメラd1、マウスd8およびキーボードd4は使用しないので占有率はそれぞれ0%、10%、10%である。したがって、USBホスト21のUSBデバイスに関する占有率は70%となる。
【0123】
一方、USBスイッチ33のスイッチングにより、USBハブ32には、カメラd2、ネットワークデバイス(WWAN)d5、ネットワークデバイス(LAN)d7およびネットワークデバイス(WLAN)d6が接続している。
【0124】
ネットワークデバイス(WWAN)d5およびネットワークデバイス(WLAN)d6は使用するので占有率はそれぞれ40%、40%である。また、カメラd2およびネットワークデバイス(LAN)d7は使用しないので、占有率はそれぞれ0%、0%である。したがって、USBホスト22のUSBデバイスに関する占有率は80%となる。
【0125】
USBホスト21のUSBインタフェース占有率は、USBデバイスに関する占有率70%と、システム占有率20%を合わせて90%となる。また、USBホスト22のUSBインタフェース占有率は、USBデバイスに関する占有率80%と、システム占有率20%を合わせて100%となる。
【0126】
各USBホスト21、22では、占有率100%以下でUSBデバイスが動作する。したがって、通信速度が低下したり、USBデバイスの性能が劣化したりせずに、USBデバイスの運用が可能になる。
【0127】
以上説明したように、本技術により、USBデバイスをUSBホストの負荷に応じて適切に配置することができるので、常に高性能の状態でUSBデバイスを使用することが可能になる。
【0128】
また、従来は、USBデバイスの配置関係で、ユーザが利用できない場面が存在したが、本技術を採用することにより、USBデバイスの配置による制限は解消されることになり、ユーザの利用場面を増やすことが可能になる。
【0129】
上記については単に本発明の原理を示すものである。さらに、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。