(57)【要約】      （修正有）【課題】電源投入時に大容量の外付け記憶装置をＰＣに接続したままでもハングアップしないようにする。【解決手段】外部機器コントローラ１００は、コンピュータ装置からあらかじめ決められた特定命令が供給された場合、特定命令が供給されたことを示すフラグを記憶するフラグ記憶手段１０２と、前記フラグ記憶手段１０２にフラグが記憶されているときに、前記コンピュータ装置から、記憶容量を示す値の供給を要求する容量要求命令が供給された場合、前記コンピュータ装置にエラーメッセージを出力するエラーメッセージ出力手段１０３と、前記コンピュータ装置から、前記バスのリセットを指示するリセット命令が供給されたことを検出する検出手段１０４と、前記検出手段１０４により、リセット命令が供給されたことが検出されると、前記フラグ記憶手段１０２に記憶されたフラグを消去するフラグ消去手段１０５とを有する。【選択図】図２
2007207089.tif 000002
【特許請求の範囲】
【請求項１】
外部記憶装置コントローラであって、
複数の記憶装置に接続される記憶装置接続手段と、
コンピュータ装置に接続されるコンピュータ装置接続手段と、
前記コンピュータ装置接続手段を介して接続されたコンピュータ装置からあらかじめ決められた特定命令が供給された場合、特定命令が供給されたことを示すフラグを記憶するフラグ記憶手段と、
前記フラグ記憶手段にフラグが記憶されているときに、前記コンピュータ装置から、記憶容量を示す値の供給を要求する容量要求命令が供給された場合、前記コンピュータ装置に、前記コンピュータ装置の処理を停止させないエラーメッセージを出力するエラーメッセージ出力手段と、
前記フラグ記憶手段にフラグが記憶されていないときに、前記コンピュータ装置から前記容量要求命令が供給された場合、前記コンピュータ装置に、前記複数の記憶装置の記憶容量の合計値を出力する容量出力手段と、
前記コンピュータ装置から、前記記憶装置コントローラの初期化を指示するリセット命令が供給されたことを検出する検出手段と、
前記検出手段により、リセット命令が供給されたことが検出されると、前記フラグ記憶手段に記憶されたフラグを消去するフラグ消去手段と
を有することを特徴とする外部記憶装置コントローラ。
【請求項２】
外部記憶装置コントローラを、
複数の記憶装置に接続される記憶装置接続手段と、
コンピュータ装置に接続されるコンピュータ装置接続手段と、
前記コンピュータ装置接続手段を介して接続されたコンピュータ装置からあらかじめ決められた特定命令が供給された場合、特定命令が供給されたことを示すフラグを記憶するフラグ記憶手段と、
前記フラグ記憶手段にフラグが記憶されているときに、前記コンピュータ装置から、記憶容量を示す値の供給を要求する容量要求命令が供給された場合、前記コンピュータ装置に、前記コンピュータ装置の処理を停止させないエラーメッセージを出力するエラーメッセージ出力手段と、
前記フラグ記憶手段にフラグが記憶されていないときに、前記コンピュータ装置から前記容量要求命令が供給された場合、前記コンピュータ装置に、前記複数の記憶装置の記憶容量の合計値を出力する容量出力手段と、
前記コンピュータ装置から、前記記憶装置コントローラの初期化を指示するリセット命令が供給されたことを検出する検出手段と、
前記検出手段により、リセット命令が供給されたことが検出されると、前記フラグ記憶手段に記憶されたフラグを消去するフラグ消去手段と
して機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、いわゆる外付けの記憶装置のファームウェアに関する。
【背景技術】
【０００２】
ＰＣ（Personal Computer）の、いわゆる外付け記憶装置としてＨＤＤ（Hard Disk Drive）などの非リムーバブル記憶装置が広く用いられている。ブロードバンドなど情報通信技術の発達により、送受信されるデータの量は飛躍的に増大している。このため、外付け記憶装置に要求される記憶容量も、日々増大している。記憶容量を増大させるため、複数のＨＤＤを接続可能なＨＤＤコントローラが開発されている。このＨＤＤコントローラを用いると、複数のＨＤＤは、ＰＣにより１台のドライブとして認識される。例えば、ＨＤＤコントローラに２５０ＧＢのＨＤＤを４台接続すると、ＰＣは、これらのＨＤＤを、１ＴＢの容量を有する１台の外付けドライブとして認識する。
【０００３】
ＨＤＤコントローラとＰＣを接続するインターフェースとしては、ＵＳＢ（Universal Serial Bus）が広く用いられている。しかし、ＰＣの中には、このＵＳＢデバイス（ＨＤＤコントローラ）を接続したまま電源を投入すると、ＢＩＯＳ（Basic Input/Output System）による認識中に動作を停止してしまうものがある。これは次のような理由による。ＰＣの中には、ＢＩＯＳによってＵＳＢデバイスを認識できるものがある。ＰＣの中には、接続されているＵＳＢデバイスがＦＤＤ（Floppy（登録商標） Disk Drive）などのリムーバブル記憶装置であれば、そのリムーバブル記憶装置からシステムを起動できるものがある。リムーバブル記憶装置からシステムを起動するために、ＢＩＯＳは、ＵＳＢデバイスを検出すると、その記憶容量を取得するようにプログラムされている。ここで、検出されたＵＳＢデバイスが大容量のＨＤＤコントローラであった場合、ＢＩＯＳはその記憶容量を認識することができず、動作を停止してしまう。すなわち、ＰＣはハングアップしてしまう。
【０００４】
しかし、ＰＣは、大容量のＨＤＤコントローラを、ＢＩＯＳにより認識することはできなくても、ＯＳ（Operating System）により認識することはできる。ＰＣは、ＯＳが起動した後であれば、大容量のＨＤＤコントローラをデータドライブとして用いることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ＨＤＤコントローラと複数台のＨＤＤにより形成される大容量外付け記憶装置をデータドライブとして用いるには、ユーザは、ＯＳが起動したことを確認してから、ＵＳＢコネクタをＰＣに接続する必要がある。しかし、ユーザは、ＰＣの電源を投入するたびにＵＳＢコネクタを抜き差ししなければならない。これはユーザにとって大変不便である。なお、ここで「大容量」とは、ＢＩＯＳの認識限度を超えた記憶容量をいう。
【０００６】
本発明は上述の事情に鑑みてなされたものであり、複数の記憶装置に接続される外部記憶装置コントローラにおいて、電源投入時（初期化時）にコンピュータ装置に接続したままでも、コンピュータ装置の処理が停止しない技術を提供する。
【課題を解決するための手段】
【０００７】
上述の課題を解決するため、本発明は、複数の記憶装置に接続される記憶装置接続手段と、コンピュータ装置に接続されるコンピュータ装置接続手段と、前記コンピュータ装置接続手段を介して接続されたコンピュータ装置からあらかじめ決められた特定命令が供給された場合、特定命令が供給されたことを示すフラグを記憶するフラグ記憶手段と、前記フラグ記憶手段にフラグが記憶されているときに、前記コンピュータ装置から、記憶容量を示す値の供給を要求する容量要求命令が供給された場合、前記コンピュータ装置に、前記コンピュータ装置の処理を停止させないエラーメッセージを出力するエラーメッセージ出力手段と、前記フラグ記憶手段にフラグが記憶されていないときに、前記コンピュータ装置から前記容量要求命令が供給された場合、前記コンピュータ装置に、前記複数の記憶装置の記憶容量の合計値を出力する容量出力手段と、前記コンピュータ装置から、前記記憶装置コントローラの初期化を指示するリセット命令が供給されたことを検出する検出手段と、前記検出手段により、リセット命令が供給されたことが検出されると、前記フラグ記憶手段に記憶されたフラグを消去するフラグ消去手段とを有する外部記憶装置コントローラを提供する。
この外部記憶装置コントローラは、特定命令が供給された後はＢＩＯＳが動作中であるとして、容量要求命令に対しエラーメッセージを出力する。一方リセット後に特定命令が供給されずに容量要求命令が供給された場合、この外部記憶装置コントローラは、記憶装置の記憶容量の合計値を出力する。したがって、この外部記憶装置コントローラは、ＢＩＯＳの動作中にコンピュータ装置の処理を停止させない。
【０００８】
また、本発明は、外部記憶装置コントローラに上記の機能を実現させるプログラムを提供する。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照して本発明の実施形態について説明する。
図１は、本発明の一実施形態に係るコンピュータシステム１の構成を示す図である。ＰＣ２００は、汎用のコンピュータ装置である。ＰＣ２００は、ＢＩＯＳ、ＯＳ、およびアプリケーションソフトを実行する機能を有する。ＢＩＯＳは、コンピュータに接続されたディスクドライブ、キーボード、ビデオカードなどの周辺機器を制御するプログラム群である。ＢＩＯＳは、周辺機器に対する基本的な入出力手段をＯＳやアプリケーションソフトに対して提供する。ＢＩＯＳは、ＰＣ２００のマザーボード上に装着されたフラッシュメモリなどの不揮発メモリ（図示略）に記録されている。ＯＳは、キーボード入力や画面出力といった入出力機能やディスクやメモリの管理など、多くのアプリケーションソフトから共通して利用される基本的な機能を提供する。ＯＳは、コンピュータシステム全体を管理するソフトウェアである。ＯＳおよびアプリケーションソフトはＰＣ２００の内臓ＨＤＤ（図示略）に記憶されている。
【００１０】
ＰＣ２００には、ＨＤＤコントローラ１００を介してＨＤＤ３０１〜３０４の４台のハードディスクドライブが接続されている。ＨＤＤコントローラ１００は、ＨＤＤ３０１〜３０４の４台のハードディスクドライブを制御する外部機器コントローラである。ＨＤＤ３０１〜３０４は、それぞれ、ある記憶容量を有する外部記憶装置である。本実施形態において、ＨＤＤ３０１〜３０４の記憶容量は、いずれも２５０ＧＢ（ギガバイト）である。なお、ＨＤＤ３０１〜３０４の記憶容量は、それぞれ異なっていてもよい。ＨＤＤコントローラ１００は、ＰＣ２００に対し、ＨＤＤ３０１〜３０４の４台のハードディスクドライブ群が、２５０ＧＢ×４＝１ＴＢ（テラバイト）の記憶容量を有する１台のハードディスクドライブであるように認識させる機能を有する。この機能により、ＰＣ２００のユーザは、４台のハードディスクドライブ群を、あたかも大容量の１台のハードディスクドライブが接続されているように扱うことができる。なお、図面が煩雑となるのを避けるため図示を省略したが、ＰＣ２００には、ＨＤＤコントローラ１００以外にも他の外部機器が接続されていてもよい。
【００１１】
図２は、ＨＤＤコントローラ１００の機能構成を示すブロック図である。コンピュータ装置接続部１０１は、ＰＣ２００との間で制御命令やデータの送受信を行う機能を有する。フラグ記憶部１０２は、ＰＣ２００から特定命令が供給されたことを示すフラグを記憶する。特定命令については後述する。エラーメッセージ出力部１０３は、フラグ記憶部１０２にフラグが記憶されているときに、ＰＣ２００から、記憶容量値の供給を要求する容量要求命令が供給された場合、ＰＣ２００にエラーメッセージを出力する。検出部１０４は、ＰＣ２００からバスのリセット命令が供給されたことを検出する。フラグ消去部１０５は、検出部１０４によりリセット命令が供給されたことが検出されると、フラグ記憶部１０２に記憶されたフラグを消去する。記憶装置接続部１０７は、複数の外部記憶装置（ＨＤＤ３０１〜３０４）との間で制御命令やデータの送受信を行う機能を有する。容量出力部１０６は、フラグ記憶部１０２にフラグが記憶されていないときに、ＰＣ２００から容量要求命令が供給された場合、ＨＤＤ３０１〜３０４の記憶容量の合計値を、記憶容量（容量要求命令に対する応答）としてＰＣ２００に出力する。
【００１２】
図３は、ＨＤＤコントローラ１００のハードウェア構成を示す図である。ＣＰＵ（Central Processing Unit）１１０は、ＨＤＤコントローラ１００の各構成要素を制御する制御装置である。ＲＯＭ（Read Only Memory）１３０は、ＨＤＤコントローラ１００の動作を規定するプログラム（ファームウェア）や、ＨＤＤコントローラ１００の起動に必要なデータなどを記憶したメモリである。ＲＯＭ１３０は、ＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory）などの書き換え可能なメモリを有してもよい。ＲＡＭ（Random Access Memory）１２０は、ＣＰＵ１１０がプログラムを実行する際の作業領域として機能するメモリである。ＵＳＢ−ＩＦ１４０は、ＵＳＢ方式のインターフェースである。ＨＤＤコントローラ１００は、ＵＳＢ−ＩＦ１４０を介して、ＰＣ２００との間で制御命令やデータの入出力を行う。ＩＤＥ−ＩＦ１５０は、ＩＤＥ方式のインターフェースである。ＨＤＤコントローラ１００は、ＩＤＥ−ＩＦ１５０を介して、ＨＤＤ３０１〜３０４との間で制御命令やデータの入出力を行う。以上の各構成要素は、バス１９０を介して接続されている。本実施形態において、ＣＰＵ１１０がＲＯＭ１３０に記憶されたファームウェアを実行することにより、ＨＤＤコントローラ１００は、図２に示される機能構成を具備する。
【００１３】
ＨＤＤコントローラ１００の動作を説明する前に、まずＰＣ２００の動作の概要を説明する。ＰＣ２００において、電源（図示略）が投入されると、まずＢＩＯＳが実行される。ＢＩＯＳは（すなわち、ＢＩＯＳを実行しているＰＣ２００は）、ＵＳＢ接続された外部記憶装置を検索する。ＵＳＢ接続された外部記憶装置を検出すると、ＢＩＯＳは、この外部記憶装置に対し容量供給命令を出力する。こうしてＢＩＯＳは、ＵＳＢ接続された外部記憶装置に対し記憶容量の問い合わせを行う。ここで、ＰＣ２００に、従来技術に係るＨＤＤコントローラが接続されていた場合、従来技術に係るＨＤＤコントローラは、容量供給命令に対する回答として、４台のハードディスクドライブの記憶容量の合計値「１ＴＢ」をＰＣ２００に出力する。ＢＩＯＳが認識できるハードディスクドライブの記憶容量には上限がある。１ＴＢという記憶容量値は、この上限値を超えた大容量であるため、ＢＩＯＳは従来技術に係るＨＤＤコントローラを認識することができずハングアップしてしまう。ハングアップを避けるため、ＰＣ２００のユーザは、ＰＣ２００の電源を投入する前に、ＰＣ２００と従来技術に係るＨＤＤコントローラを接続するＵＳＢケーブルを抜いておく必要がある。
【００１４】
ＢＩＯＳによる周辺機器の認識等の処理が完了すると、ＰＣ２００はＯＳを実行する。こうして、ＰＣ２００の処理主体はＢＩＯＳからＯＳに移行する。ＯＳは、ＵＳＢ接続された外部記憶装置を検索する。ＵＳＢ接続された外部記憶装置を検出すると、ＯＳは、この外部記憶装置に対し容量供給命令を出力する。こうしてＢＩＯＳは、ＵＳＢ接続された外部記憶装置に対し記憶容量の問い合わせを行う。ここで、ＰＣ２００にＨＤＤコントローラがＵＳＢ接続されていると、上述のように、ＨＤＤコントローラは、容量供給命令に対する回答として、４台のハードディスクドライブの記憶容量の合計値「１ＴＢ」をＰＣ２００に出力する。ＢＩＯＳと異なり、ＯＳは記憶容量値を認識することができる。したがって、従来技術によれば、ユーザは、ＯＳが起動した後にＵＳＢケーブルをＰＣ２００に接続すれば、ＨＤＤコントローラに接続された４台のハードディスクドライブ群を、１ＴＢの記憶容量を有する１台のハードディスクドライブとして利用することができた。しかし、このようにＰＣ２００を起動するたびにＵＳＢケーブルの抜き差しを行うことは、ユーザにとって煩雑な作業である。
【００１５】
本実施形態に係るＨＤＤコントローラ１００は、このような問題に対する解を提供するものである。本願の発明者がＢＩＯＳの挙動を調査したところ、外部記憶装置の容量取得を行う前に、ＢＩＯＳが「ModeSense」という特定の命令（コマンド）で、「Page5」という特定のページ情報の供給を必ず要求することを発見した。「Page5」というページ情報は、フロッピー（登録商標）ディスクドライブ等のリムーバブル記憶装置に必要な情報であるが、ハードディスクドライブ等の固定記憶装置（非リムーバブル記憶装置）には必要ない情報である。さらに本願の発明者がＯＳの挙動を調査したところ、ＯＳは、ハードディスクドライブに対してこのような情報を要求しないことを発見した。また、ＢＩＯＳの起動時（ＰＣ２００の起動時）およびＯＳの起動時には、ＰＣ２００は、ＨＤＤコントローラの初期化を要求する。そのため、ＨＤＤコントローラにおいて、バスのリセットが行われる。以上のことから、「ModeSense」という命令で「Page5」という情報を要求してきた場合、ＰＣ２００において、ＯＳは起動されておらず、ＢＩＯＳがＰＣ２００の起動処理を実行していると判断することができる。
【００１６】
本実施形態に係るＨＤＤコントローラ１００は、以上で説明した事情に基づいて、概ね次のような動作を行う。「ModeSense」という特定の命令で「Page5」という特定の情報が要求された場合、ＨＤＤコントローラ１００はフラグを立てる。このフラグは、ＢＩＯＳがＰＣ２００の起動処理中であることを示す。フラグが立っている間に容量供給命令が供給された場合、ＨＤＤコントローラ１００は、この容量供給命令に対しエラーメッセージを返す。ここで、正直に記憶容量値「１ＴＢ」を返すと、ＢＩＯＳがハングアップしてしまうからである。エラーメッセージは、ＢＩＯＳをハングアップさせない。この状態でＵＳＢコントローラの初期化命令（バスのリセット命令）が供給されると、ＨＤＤコントローラ１００はフラグを下げる。フラグが立っていない間に容量供給命令が供給された場合、ＨＤＤコントローラ１００は、記憶容量値「１ＴＢ」を返す。このときＰＣ２００の処理の主体はＢＩＯＳからＯＳに移行しているからである。以下、ＨＤＤコントローラ１００の動作をより詳細に説明する。
【００１７】
図４は、ＨＤＤコントローラ１００の動作を示すフローチャートである。ステップＳ１００において、ＣＰＵ１１０は、ＰＣ２００からバス１９０のリセット命令が供給されたか判断する。ＰＣ２００からバス１９０のリセット命令が供給されたと判断した場合（ステップＳ１００：ＹＥＳ）、ステップＳ１１０において、ＣＰＵ１１０は、ＲＡＭ１２０に記憶されているフラグを消去する。なお、「フラグを消去する」とは、リセット後に特定命令が供給されていないことを示すフラグをＲＡＭ１２０に記憶することも含む。
【００１８】
次に、ステップＳ１２０において、ＣＰＵ１１０は、ＰＣ２００から特定命令（「Page5」という情報を要求する「ModeSense」という命令）が供給されたか判断する。特定命令が供給された場合（ステップＳ１２０：ＹＥＳ）、ステップＳ１３０において、ＣＰＵ１１０は、特定命令が供給されたことを示すフラグ、すなわち、ＢＩＯＳがＰＣ２００を起動処理中であることを示すフラグを、ＲＡＭ１２０に記憶する。あるいは、リセット後に特定命令が供給されていないことを示すフラグがＲＡＭ１２０に記憶されている場合、ＣＰＵ１１０は、記憶されているフラグの内容を特定命令が供給されたことを示すものに書き換える。
【００１９】
次に、ステップＳ１４０において、ＣＰＵ１１０は、ＰＣ２００から容量供給命令が供給されたか判断する。容量供給命令は、ＨＤＤコントローラ１００に接続されているハードディスクドライブの記憶容量値の出力を要求する命令である。
【００２０】
ＰＣ２００から容量供給命令が供給されたと判断すると（ステップＳ１４０：ＹＥＳ）、ＣＰＵ１１０は、ステップＳ１５０において、ＲＡＭ１２０にフラグが記憶されているか判断する。フラグが記憶されていると判断した場合（ステップＳ１５０：ＹＥＳ）、ステップＳ１６０において、ＣＰＵ１１０は、容量供給命令に対するエラーメッセージをＰＣ２００に出力する。フラグが記憶されていないと判断した場合（ステップＳ１５０：ＮＯ）、ステップＳ１７０において、ＣＰＵ１１０は、ＨＤＤ３０１〜３０４の記憶容量の合計値「１ＴＢ」を、容量供給命令に対する回答として出力する。
【００２１】
図５は、ＨＤＤコントローラ１００の動作を説明する図である。横軸は時間軸を示している。時間軸の上側に記載されているのがＰＣ２００の処理、時間軸の下側に記載されているのがＨＤＤコントローラ１００の処理である。ＰＣ２００の電源が投入されると、ＨＤＤコントローラ１００に対しリセット命令が出力される。リセット命令が供給されると、ＨＤＤコントローラ１００はフラグを消去する（フラグを下げる）。ＰＣ２００からＨＤＤコントローラ１００に特定命令が出力されると、ＨＤＤコントローラ１００は、フラグを記憶する（フラグを立てる）。フラグが記憶されている間に、ＰＣ２００から容量供給命令が出力されると、ＨＤＤコントローラ１００は、ＰＣ２００にエラーメッセージを出力する。以下、ＰＣ２００は、ＢＩＯＳの制御下で、起動処理を継続する。ＰＣ２００の起動処理が完了し、処理の主体がＯＳに移行すると、ＰＣ２００は、リセット命令を出力する。リセット命令が供給されると、ＨＤＤコントローラ１００はフラグを消去する（フラグを下げる）。ＰＣ２００は、ＯＳの制御下では特定命令を出力しない。したがって、ＰＣ２００がＯＳの制御下にある間は、フラグが立たない。この状態で、ＰＣ２００から容量供給命令が出力されると、ＨＤＤコントローラ１００は、ＰＣ２００に対しＨＤＤ３０１〜３０４の記憶容量の合計値を出力する。こうして、ＰＣ２００は、ＯＳの制御下で、ＨＤＤ３０１〜３０４の４台のハードディスクドライブ群を、１台のハードディスクドライブとして認識することができる。
【００２２】
以上で説明したようにＨＤＤコントローラ１００によれば、コネクタをＰＣ２００に接続したままでも、ＢＩＯＳの処理中にハングアップすることなくＰＣ２００を起動することができる。また、ＨＤＤコントローラ１００によれば、ＢＩＯＳの動作は従来のままで、ＨＤＤ３０１〜３０４を１台の記憶装置としてＰＣ２００に認識させることができる。ＨＤＤコントローラ１００の機能はファームウェアにより実現されるので、古い型のＢＩＯＳを搭載したＰＣであっても、ＢＩＯＳのアップデートをすることなく、ＨＤＤ３０１〜３０４を１台の記憶装置として認識することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の一実施形態に係るコンピュータシステム１の構成を示す図である。
【図２】ＨＤＤコントローラ１００の機能構成を示すブロック図である。
【図３】ＨＤＤコントローラ１００のハードウェア構成を示す図である。
【図４】ＨＤＤコントローラ１００の動作を示すフローチャートである。
【図５】ＨＤＤコントローラ１００の動作を説明する図である。
【符号の説明】
【００２４】
１…コンピュータシステム、１００…ＨＤＤコントローラ、１０１…コンピュータ装置接続部、１０２…フラグ記憶部、１０３…エラーメッセージ出力部、１０４…検出部、１０５…フラグ消去部、１０６…容量出力部、１０７…記憶装置接続部、１１０…ＣＰＵ、１２０…ＲＡＭ、１３０…ＲＯＭ、１４０…ＵＳＢ−ＩＦ、１５０…ＩＤＥ−ＩＦ、１９０…バス、２００…ＰＣ、３０１〜３０４…ＨＤＤ
【図１】
2007207089.tif 000003
【図２】
2007207089.tif 000004
【図３】
2007207089.tif 000005
【図４】
2007207089.tif 000006
【図５】
2007207089.tif 000007