JP2018055472A - 情報処理装置、デバイス、情報処理方法及びプログラム - Google Patents
情報処理装置、デバイス、情報処理方法及びプログラム Download PDFInfo
- Publication number
- JP2018055472A JP2018055472A JP2016191832A JP2016191832A JP2018055472A JP 2018055472 A JP2018055472 A JP 2018055472A JP 2016191832 A JP2016191832 A JP 2016191832A JP 2016191832 A JP2016191832 A JP 2016191832A JP 2018055472 A JP2018055472 A JP 2018055472A
- Authority
- JP
- Japan
- Prior art keywords
- control unit
- test
- sata
- bcpu
- mode
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Facsimiles In General (AREA)
- Accessory Devices And Overall Control Thereof (AREA)
- Control Or Security For Electrophotography (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
【課題】異常が発生している箇所を把握することを目的とする。【解決手段】メイン制御部と、末端にストレージ装置が接続されるように前記ストレージ装置とカスケード接続された制御部と、を含む情報処理装置であって、前記メイン制御部は、前記制御部に対して、異常を検出するテストを行う診断モードへの移行を指示する指示手段と、前記指示手段による指示に応じて前記診断モードに切り替わった前記制御部で実行されたテストの結果を取得する取得手段と、を有する。【選択図】図4
Description
本発明は、情報処理装置、デバイス、情報処理方法及びプログラムに関する。
デジタル商用印刷機を用いたPOD(Print On Demand)市場等において、エンドユーザから依頼された印刷物を納期までに確実に届けること(デリバリ)が重視される。デリバリを実現するため、デジタル印刷機に求められることとの一つとしてダウンタイム削減がある。このように、様々な市場において用いられるデジタル印刷機等の情報処理装置は、故障が少ないことが望ましいことは言うまでもなく、万一、故障しても速やかに修理できることが望ましい。
情報処理装置の中で、故障しやすいユニットの一つとして、画像データ等を記憶するストレージが挙げられる。ストレージは、HDD(Hard Disk Drive)や、SSD(Solid State Drive)で構成される場合がある。ストレージは、データ密度が高く、かつ、データ伝送が高速なので、わずかな特性変化で故障となる。HDDは、駆動部に精密なメカ制御を要し、振動や衝撃によってヘッドやディスク(プラッタ)が傷つき易い。更に、HDDは、磁性体やモータやベアリングが摩耗することがある。SSDは、フラッシュメモリの劣化、つまり、消去・書き込み回数の制限超過によって、故障する可能性がある。また、SSDは、長期間読み込まれないデータが消失する可能性がある。ボードは、SATA(Serial Advanced Technology Attachment)コントローラ等のデバイスの故障、デバイスの実装不良、基板パターンの断線、コネクタの実装不良や破損等の原因で、故障する可能性がある。また、デバイスの接続に用いられるケーブルは、曲げによるストレスや、曲げ伸ばしの繰り返しや、振動等によって、断線することがある。
従来から、ストレージの故障診断による、ダウンタイム削減が知られている。例えば、特許文献1に、HDD故障を予測して、故障しても影響が少ない動作に切り替える技術が開示されている。特許文献1の技術は、HDD搭載の自己診断機能と状態監視サーバを用いて、劣化による故障が近いと予測できる状態になったときに、HDDを読み取りのみ可能な状態にして、バックアップ及び交換をするまで寿命をもたせる技術である。
情報処理装置の中で、故障しやすいユニットの一つとして、画像データ等を記憶するストレージが挙げられる。ストレージは、HDD(Hard Disk Drive)や、SSD(Solid State Drive)で構成される場合がある。ストレージは、データ密度が高く、かつ、データ伝送が高速なので、わずかな特性変化で故障となる。HDDは、駆動部に精密なメカ制御を要し、振動や衝撃によってヘッドやディスク(プラッタ)が傷つき易い。更に、HDDは、磁性体やモータやベアリングが摩耗することがある。SSDは、フラッシュメモリの劣化、つまり、消去・書き込み回数の制限超過によって、故障する可能性がある。また、SSDは、長期間読み込まれないデータが消失する可能性がある。ボードは、SATA(Serial Advanced Technology Attachment)コントローラ等のデバイスの故障、デバイスの実装不良、基板パターンの断線、コネクタの実装不良や破損等の原因で、故障する可能性がある。また、デバイスの接続に用いられるケーブルは、曲げによるストレスや、曲げ伸ばしの繰り返しや、振動等によって、断線することがある。
従来から、ストレージの故障診断による、ダウンタイム削減が知られている。例えば、特許文献1に、HDD故障を予測して、故障しても影響が少ない動作に切り替える技術が開示されている。特許文献1の技術は、HDD搭載の自己診断機能と状態監視サーバを用いて、劣化による故障が近いと予測できる状態になったときに、HDDを読み取りのみ可能な状態にして、バックアップ及び交換をするまで寿命をもたせる技術である。
しかしながら、特許文献1の技術は、HDD故障の予測及び予防を行う技術であり、故障が発生した場合の故障した箇所を特定するものではない。そのため、特許文献1の技術では、HDDの読取ができない等の異常が発生した場合、ボード、ケーブル、ストレージ等のうちの何れに異常が発生したのかが分からない。異常が発生している箇所を特定しないで修理を開始すると、異常が発生した箇所を特定するために、修理者による試行錯誤が必要となり、修理に時間がかかってしまう。
特に、近年のセキュリティ意識の高まりによって、除法処理装置においては、データを暗号化してストレージに記憶することがある。暗号化した場合、ハードウェアが正常でも正しくセキュリティ認証しないとストレージに記憶したデータに正しくアクセスできない。そのため、修理者は、例えば、ストレージが故障しているか否かを調べるため、そのストレージからデータを取得することになる。ストレージ内のデータが暗号化されている場合、修理者は、取得したデータが、壊れたデータであるか暗号化されたデータであるかを判別することが困難であり、ストレージが故障しているか否かの特定が困難となる。
本発明は、異常が発生している箇所を把握することを目的とする。
特に、近年のセキュリティ意識の高まりによって、除法処理装置においては、データを暗号化してストレージに記憶することがある。暗号化した場合、ハードウェアが正常でも正しくセキュリティ認証しないとストレージに記憶したデータに正しくアクセスできない。そのため、修理者は、例えば、ストレージが故障しているか否かを調べるため、そのストレージからデータを取得することになる。ストレージ内のデータが暗号化されている場合、修理者は、取得したデータが、壊れたデータであるか暗号化されたデータであるかを判別することが困難であり、ストレージが故障しているか否かの特定が困難となる。
本発明は、異常が発生している箇所を把握することを目的とする。
本発明は、メイン制御部と、末端にストレージ装置が接続されるように前記ストレージ装置とカスケード接続された制御部と、を含む情報処理装置であって、前記メイン制御部は、前記制御部に対して、異常を検出するテストを行う診断モードへの移行を指示する指示手段と、前記指示手段による指示に応じて前記診断モードに切り替わった前記制御部で実行されたテストの結果を取得する取得手段と、を有する。
本発明によれば、異常が発生している箇所を把握することができる。
以下、本発明の実施形態について図面に基づいて説明する。
<実施形態1>
本実施形態では、印刷装置のメインコントローラ100と接続されているストレージとストレージコントローラとの故障判定処理について説明する。メインコントローラ100は、印刷装置を制御するコントローラである。メインコントローラ100を含む印刷装置は、情報処理装置の一例である。
図1は、印刷装置のメインコントローラ100のハードウェア構成の一例を示す図である。メインコントローラ100は、メインCPU101、メモリ制御部102、Flashメモリ103、DRAM104、LAN‐IF部105、Reader‐IF部108、画像処理部110を含む。また、メインコントローラ100は、SATAホスト制御部111、SATAブリッジ制御部112、パネルIF部115、ビデオ出力IF部117、GPIO120を含む。メインコントローラ100の各ハードウェア構成要素は、SATAブリッジ制御部112等を除き、メインバス119を介して相互に接続されている。
本実施形態では、印刷装置のメインコントローラ100と接続されているストレージとストレージコントローラとの故障判定処理について説明する。メインコントローラ100は、印刷装置を制御するコントローラである。メインコントローラ100を含む印刷装置は、情報処理装置の一例である。
図1は、印刷装置のメインコントローラ100のハードウェア構成の一例を示す図である。メインコントローラ100は、メインCPU101、メモリ制御部102、Flashメモリ103、DRAM104、LAN‐IF部105、Reader‐IF部108、画像処理部110を含む。また、メインコントローラ100は、SATAホスト制御部111、SATAブリッジ制御部112、パネルIF部115、ビデオ出力IF部117、GPIO120を含む。メインコントローラ100の各ハードウェア構成要素は、SATAブリッジ制御部112等を除き、メインバス119を介して相互に接続されている。
メインCPU101は、印刷装置の制御や各種演算処理を行う。メモリ制御部102は、各種メモリデバイスへの入出力制御やDMA(ダイレクト・メモリ・アクセス)制御等を行う。メインCPU101は、印刷装置のメイン制御部の一例である。FLASHメモリ103は、書き換え可能な不揮発性メモリであり、印刷装置全体の制御プログラムや制御パラメータ等が格納される。DRAM(ダイナミック・ランダム・アクセス・メモリ)104は、DDR(Double‐Data‐Rate)メモリに代表される揮発性の書き換え専用メモリである。DRAM104は、メインCPU101によるプログラムの作業領域や印刷データの格納領域、各種テーブル情報格納領域等の用途に用いられる。メモリ制御部102は、各種メモリデバイスを、独立に制御する。
LAN‐IF部105は、ローカル・エリア・ネットワーク(LAN)等のネットワーク106を介して、外部の装置との間での情報の入出力制御を行う。LAN‐IF部105は、例えば、TCP/IP(Transmission Control Protocol/Internet Protocol)プロトコルを用いた通信を行う。メインコントローラ100は、ネットワークケーブル、LAN‐IF部105等を介してHOSTコンピュータ107等の外部のネットワーク対応装置と接続される。そして、メインコントローラ100は、HOSTコンピュータ107等からネットワーク経由でプリント処理の指示を受信すると、指示に応じたプリント処理を行うことができる。
LAN‐IF部105は、ローカル・エリア・ネットワーク(LAN)等のネットワーク106を介して、外部の装置との間での情報の入出力制御を行う。LAN‐IF部105は、例えば、TCP/IP(Transmission Control Protocol/Internet Protocol)プロトコルを用いた通信を行う。メインコントローラ100は、ネットワークケーブル、LAN‐IF部105等を介してHOSTコンピュータ107等の外部のネットワーク対応装置と接続される。そして、メインコントローラ100は、HOSTコンピュータ107等からネットワーク経由でプリント処理の指示を受信すると、指示に応じたプリント処理を行うことができる。
Reader‐IF部108は、スキャナ装置109との通信制御を行う。Reader‐IF部108は、スキャナ装置109によってスキャンされた入力画像データを印字させることでコピー機能を実現する。画像処理部110は、LAN‐IF部105、Reader‐IF部108等を介して取り込まれた画像データに対して各種画像処理を行う。
SATAホスト制御部111は、メインコントローラ100のメインASIC201に含まれる制御部である。SATA(Serial Advanced Technology Attachment)規格に準拠したIFを有するデバイスとのデータ入出力制御を行う。SATAブリッジ制御部112は、SATAホスト制御部111に接続されている。また、SATAブリッジ制御部112は、ストレージ装置と接続するためのインターフェースを複数有し、ストレージ装置113、114と接続される。本実施形態では、ストレージ装置113、114は、それぞれ、HDD又はSSDとする。SATAブリッジ制御部112は、RAID制御やデータ暗号化等の機能を有する。本実施形態では、SATAホスト制御部111とSATAブリッジ制御部112とは、それぞれ独立したASIC(特定用途向け集積回路)としてメインコントローラ100に搭載されている。本実施形態では、SATAブリッジ制御部112は、図2で後述するサブASICにより構成されている。SATAホスト制御部111は、ストレージ装置113、114とカスケード接続される第1の制御部の一例である。SATAブリッジ制御部112は、ストレージ装置113、114とカスケード接続される第2の制御部の一例である。
SATAホスト制御部111は、メインコントローラ100のメインASIC201に含まれる制御部である。SATA(Serial Advanced Technology Attachment)規格に準拠したIFを有するデバイスとのデータ入出力制御を行う。SATAブリッジ制御部112は、SATAホスト制御部111に接続されている。また、SATAブリッジ制御部112は、ストレージ装置と接続するためのインターフェースを複数有し、ストレージ装置113、114と接続される。本実施形態では、ストレージ装置113、114は、それぞれ、HDD又はSSDとする。SATAブリッジ制御部112は、RAID制御やデータ暗号化等の機能を有する。本実施形態では、SATAホスト制御部111とSATAブリッジ制御部112とは、それぞれ独立したASIC(特定用途向け集積回路)としてメインコントローラ100に搭載されている。本実施形態では、SATAブリッジ制御部112は、図2で後述するサブASICにより構成されている。SATAホスト制御部111は、ストレージ装置113、114とカスケード接続される第1の制御部の一例である。SATAブリッジ制御部112は、ストレージ装置113、114とカスケード接続される第2の制御部の一例である。
パネルIF部115は、パネル装置116との通信制御を行う。パネル装置116は、液晶画面やボタン等を含む。ユーザは、パネル装置116を介して、液晶画面の表示やボタン等を、UI(ユーザ・インターフェイス)として、操作することにより、印刷装置に対して入力を行ったり、各種設定及び状態(モード)の確認をしたりできる。ビデオ出力IF部117は、印字部118との間でのコマンド/ステータスの通信制御や印刷データの転送制御を行う。印字部118は、印刷装置本体が含む印字系の部分と、印刷装置に装着される給紙系及び排紙系の部分と、を含み、主にビデオ出力IF部117からのコマンド情報に従い、印刷データを紙に印刷する。
メインバス119は、バスコントローラ含み、制御バス、データバス及び任意ブロック間のローカルバスを便宜的にまとめて表現されたバスである。メインバス119には、例えば、PCIe(PCI Express)やASICの内部バス等が含まれる。GPIO(General Purpose Input/Output、汎用入出力)120は、SATAホスト制御部111やSATAブリッジ制御部112と接続され、通信を行うためのインターフェースである。
メインCPU101が、ストレージ装置113、114、Flashメモリ103、DRAM104等に記憶されたプログラムに基づき処理を実行することによって、メインコントローラ100の機能及び図4で後述するフローチャートの処理が実現される。
メインバス119は、バスコントローラ含み、制御バス、データバス及び任意ブロック間のローカルバスを便宜的にまとめて表現されたバスである。メインバス119には、例えば、PCIe(PCI Express)やASICの内部バス等が含まれる。GPIO(General Purpose Input/Output、汎用入出力)120は、SATAホスト制御部111やSATAブリッジ制御部112と接続され、通信を行うためのインターフェースである。
メインCPU101が、ストレージ装置113、114、Flashメモリ103、DRAM104等に記憶されたプログラムに基づき処理を実行することによって、メインコントローラ100の機能及び図4で後述するフローチャートの処理が実現される。
図2は、ストレージ装置113、114との接続の一例を示す図である。本実施形態では、図2が示すように、ストレージ装置113、114が接続の末端となるように、SATAホスト制御部111、SATAブリッジ制御部112、ストレージ装置113、114がカスケード接続されている。
メインASIC201は、SATAホスト制御部111を含むメインコントローラ100全体を制御するASICである。SATAホスト制御部111は、1個のSATA‐IP(Intellectual Property)202をホストIFとして含む。サブASICは、SATAブリッジ制御部112そのものであり、メインコントローラ100上に独立したIC(Integrated Circuit)として実装されている。SATAブリッジ制御部112は、3個のSATA‐IP203〜205を含む。メインASIC201とサブASICとは、メインコントローラ100の単一のメインボード上に実装されている。
SATA‐IP(Host)202とSATA‐IP(Device)203とは、H‐Host‐IF206とを介して、接続されている。H‐Host‐IF206は、SATA‐IP(Host)202とSATA‐IP(Device)203との接続に利用されるケーブル等のインターフェースである。また、SATA‐IP(Host1)204とストレージ装置113とは、B‐Host1‐IF207を介して、接続されている。B‐Host1‐IF207は、SATA‐IP(Host1)204とストレージ装置113との接続に利用されるケーブル等のインターフェースである。SATA‐IP(Host2)205とストレージ装置114とは、B‐Host2‐IF208を介して、接続されている。B‐Host2‐IF208は、SATA‐IP(Host2)205とストレージ装置114との接続に利用されるケーブル等のインターフェースである。
メインASIC201は、SATAホスト制御部111を含むメインコントローラ100全体を制御するASICである。SATAホスト制御部111は、1個のSATA‐IP(Intellectual Property)202をホストIFとして含む。サブASICは、SATAブリッジ制御部112そのものであり、メインコントローラ100上に独立したIC(Integrated Circuit)として実装されている。SATAブリッジ制御部112は、3個のSATA‐IP203〜205を含む。メインASIC201とサブASICとは、メインコントローラ100の単一のメインボード上に実装されている。
SATA‐IP(Host)202とSATA‐IP(Device)203とは、H‐Host‐IF206とを介して、接続されている。H‐Host‐IF206は、SATA‐IP(Host)202とSATA‐IP(Device)203との接続に利用されるケーブル等のインターフェースである。また、SATA‐IP(Host1)204とストレージ装置113とは、B‐Host1‐IF207を介して、接続されている。B‐Host1‐IF207は、SATA‐IP(Host1)204とストレージ装置113との接続に利用されるケーブル等のインターフェースである。SATA‐IP(Host2)205とストレージ装置114とは、B‐Host2‐IF208を介して、接続されている。B‐Host2‐IF208は、SATA‐IP(Host2)205とストレージ装置114との接続に利用されるケーブル等のインターフェースである。
SATA‐IP202〜205は、SATAリンク層及び物理層において構成されている。SATA‐IP202〜205は、各種SATAのレジスタの設定に応じて、インターフェース206〜208を介して接続されるデバイスに対して物理的な(電気信号としての)SATA規格のコマンド発行やステータス受信を行う。以下では、SATA規格のコマンドを、SATAコマンドとする。
また、SATAブリッジ制御部112は、電源制御部209と制御信号を通信するためのインターフェース214を介して接続されている。電源制御部209は、メインコントローラ100のメインボード上に搭載され、メインコントローラ100に含まれる各機能モジュールやそれに接続される各種装置への電力供給の有無を決定し、印刷装置全体としての電源制御を行う。電源制御部209から出ている一点鎖線で示される電源線210〜213は、メインASIC201、SATAブリッジ制御部112、ストレージ装置113、114に対しての電源ラインを示す。
なお、本実施形態では、SATAホスト制御部111とSATAブリッジ制御部112との間のインターフェースを1個、SATAブリッジ制御部112とストレージ装置113、114との間のインターフェースを2個とする。しかし、各インターフェースの数は、任意の個数でもよい。
また、SATAブリッジ制御部112は、電源制御部209と制御信号を通信するためのインターフェース214を介して接続されている。電源制御部209は、メインコントローラ100のメインボード上に搭載され、メインコントローラ100に含まれる各機能モジュールやそれに接続される各種装置への電力供給の有無を決定し、印刷装置全体としての電源制御を行う。電源制御部209から出ている一点鎖線で示される電源線210〜213は、メインASIC201、SATAブリッジ制御部112、ストレージ装置113、114に対しての電源ラインを示す。
なお、本実施形態では、SATAホスト制御部111とSATAブリッジ制御部112との間のインターフェースを1個、SATAブリッジ制御部112とストレージ装置113、114との間のインターフェースを2個とする。しかし、各インターフェースの数は、任意の個数でもよい。
図3は、SATAホスト制御部111及びSATAブリッジ制御部112のハードウェア構成等の一例を示す図である。
SATAホスト制御部111は、HCPU301、メモリ制御部302、Flashメモリ303、SRAM304、割り込み制御部305、レジスタH306、DMAC307、タイマ308、バスブリッジ回路309、Others310を含む。SATAホスト制御部111の各ハードウェア構成要素は、Hバス311を介して相互に接続されている。
HCPU301は、SATAコマンド発行処理、送受信データの転送処理及びステータス受信処理等のSATAコントローラとしての制御を行う。メモリ制御部302は、Flashメモリ303やSRAM(スタティック・ランダム・アクセス・メモリ)304との入出力制御を行う。Flashメモリ303は、ブートプログラムやSATAコントローラとしての制御プログラムを格納する。SRAM304は、HCPU301の作業領域、各種制御テーブルやパラメータ格納領域及びデータバッファ等に利用される。図3では、SRAM304は、1ポートRAM、2ポートRAM、FIFO(First‐IN First‐OUT)メモリ等を簡略化して記載されているが、それぞれ独立に制御され複数個所にSRAMが存在してもよい。
SATAホスト制御部111は、HCPU301、メモリ制御部302、Flashメモリ303、SRAM304、割り込み制御部305、レジスタH306、DMAC307、タイマ308、バスブリッジ回路309、Others310を含む。SATAホスト制御部111の各ハードウェア構成要素は、Hバス311を介して相互に接続されている。
HCPU301は、SATAコマンド発行処理、送受信データの転送処理及びステータス受信処理等のSATAコントローラとしての制御を行う。メモリ制御部302は、Flashメモリ303やSRAM(スタティック・ランダム・アクセス・メモリ)304との入出力制御を行う。Flashメモリ303は、ブートプログラムやSATAコントローラとしての制御プログラムを格納する。SRAM304は、HCPU301の作業領域、各種制御テーブルやパラメータ格納領域及びデータバッファ等に利用される。図3では、SRAM304は、1ポートRAM、2ポートRAM、FIFO(First‐IN First‐OUT)メモリ等を簡略化して記載されているが、それぞれ独立に制御され複数個所にSRAMが存在してもよい。
割り込み制御部305は、HCPU301に対する割り込み信号の入力の受信や出力処理、割り込み信号に対するマスク処理等の処理を行う。レジスタH306は、FCT(Functional Checking Tool)関連の制御パラメータ等を一時的に記憶するためのレジスタであり、図7で後述する。FCTとは、自己診断機能である。DMAC(ダイレクト・メモリ・アクセス・コントローラ)307は、HCPU301によって決定され、レジスタに記憶された転送元及び転送先の先頭アドレス及びサイズの情報に基づいて、起動が掛けられると所定のメモリ間でのデータ転送を行う。
タイマ308は、タイムアウトを判断するためのタイマである。図3のHバス311は、バスコントローラ含み、制御バス、データバス及び任意ブロック間のローカルバスを便宜的にまとめて表現されたバスである。バスブリッジ回路309は、メインバス119とHバス311との間のバスプロトコルを相互に変換するバスブリッジ回路である。
HCPU301が、ストレージ装置113、114、Flashメモリ303、SRAM304等に記憶されたプログラムに基づき処理を実行することで、SATAホスト制御部111の機能及び図5、9、12で後述するフローチャートの処理が実現される。
タイマ308は、タイムアウトを判断するためのタイマである。図3のHバス311は、バスコントローラ含み、制御バス、データバス及び任意ブロック間のローカルバスを便宜的にまとめて表現されたバスである。バスブリッジ回路309は、メインバス119とHバス311との間のバスプロトコルを相互に変換するバスブリッジ回路である。
HCPU301が、ストレージ装置113、114、Flashメモリ303、SRAM304等に記憶されたプログラムに基づき処理を実行することで、SATAホスト制御部111の機能及び図5、9、12で後述するフローチャートの処理が実現される。
SATAブリッジ制御部112は、BCPU320、メモリ制御部321、Flashメモリ322、SRAM323、レジスタB324、電源IF部325、Others326、タイマ329を含む。SATAブリッジ制御部112の各ハードウェア構成要素は、Bバス327を介して相互に接続されている。
BCPU320は、SATAコマンド発行処理、送受信データの転送処理及びステータス受信処理等のSATAコントローラとしての制御を行う。メモリ制御部321は、Flashメモリ322やSRAM323との入出力制御を行う。Flashメモリ322には、ブートプログラムやSATAコントローラとしての制御プログラムが記憶されている。また、SRAM323は、BCPU320の作業領域、各種制御テーブルやパラメータ格納領域及びデータバッファ等に利用される。SRAM323は、1ポートRAM、2ポートRAM、FIFOメモリ等で構成される。SATAブリッジ制御部112は、SRAM323の代わりに、それぞれ独立に制御される1ポートRAM、2ポートRAM、FIFOメモリ等の複数のSRAMを含んでもよい。
レジスタB324は、FCT関連の制御パラメータ等の情報を一時的に記憶するレジスタである。電源IF部325は、電源制御部209とインターフェース214を介して接続され、ストレージ装置113、114に対する電源のOFF/ONの要求信号の制御を行う。Others326は、SATAブリッジ制御部112のその他の機能を有するハードウェア構成要素である。Others326は、例えば、RAID処理やデータ暗号化処理等を行う機能を有する。タイマ329は、タイムアウトを判断するためのタイマである。図3のBバス327は、バスコントローラ含み、制御バス、データバス及び任意ブロック間のローカルバスを便宜的にまとめて表現されたバスである。
BCPU320は、SATAコマンド発行処理、送受信データの転送処理及びステータス受信処理等のSATAコントローラとしての制御を行う。メモリ制御部321は、Flashメモリ322やSRAM323との入出力制御を行う。Flashメモリ322には、ブートプログラムやSATAコントローラとしての制御プログラムが記憶されている。また、SRAM323は、BCPU320の作業領域、各種制御テーブルやパラメータ格納領域及びデータバッファ等に利用される。SRAM323は、1ポートRAM、2ポートRAM、FIFOメモリ等で構成される。SATAブリッジ制御部112は、SRAM323の代わりに、それぞれ独立に制御される1ポートRAM、2ポートRAM、FIFOメモリ等の複数のSRAMを含んでもよい。
レジスタB324は、FCT関連の制御パラメータ等の情報を一時的に記憶するレジスタである。電源IF部325は、電源制御部209とインターフェース214を介して接続され、ストレージ装置113、114に対する電源のOFF/ONの要求信号の制御を行う。Others326は、SATAブリッジ制御部112のその他の機能を有するハードウェア構成要素である。Others326は、例えば、RAID処理やデータ暗号化処理等を行う機能を有する。タイマ329は、タイムアウトを判断するためのタイマである。図3のBバス327は、バスコントローラ含み、制御バス、データバス及び任意ブロック間のローカルバスを便宜的にまとめて表現されたバスである。
BCPU320が、ストレージ装置113、114、Flashメモリ322、SRAM323等に記憶されたプログラムに基づき処理を実行することで、以下の機能及び処理が実現される。即ち、SATAブリッジ制御部112の機能及び図6、10、13、14で後述するフローチャートの処理が実現される。
また、SATAホスト制御部111のSATA‐IP(Host)202とSATAブリッジ制御部112のSATA‐IP(Device)203とは、H‐Host‐IF206を介して接続される。SATA‐IP(Host1)204とストレージ装置113とは、B‐Host1‐IF207を介して、接続される。SATA‐IP(Host2)205とストレージ装置114とは、B‐Host2‐IF208を介して、接続される。
インターフェース230は、GPIO120との接続に利用されるインターフェースである。インターフェース230を介して、FCT動作の開始を示すintFct信号等の信号が、割り込み制御部305に入力される。
また、SATAホスト制御部111のSATA‐IP(Host)202とSATAブリッジ制御部112のSATA‐IP(Device)203とは、H‐Host‐IF206を介して接続される。SATA‐IP(Host1)204とストレージ装置113とは、B‐Host1‐IF207を介して、接続される。SATA‐IP(Host2)205とストレージ装置114とは、B‐Host2‐IF208を介して、接続される。
インターフェース230は、GPIO120との接続に利用されるインターフェースである。インターフェース230を介して、FCT動作の開始を示すintFct信号等の信号が、割り込み制御部305に入力される。
インターフェース214は、電源制御部209の制御に利用される電源制御線である。電源線212、213は、それぞれストレージ装置113、114への電源供給に利用される電源線である。電源制御部209は、インターフェース214を介して、電源IF部325から受信した信号に応じて、ストレージ装置113、114に電源を供給する。
インターフェース215〜217は、DEVSLP信号の通信に利用されるインターフェースである。DEVSLP信号とは、こまめに電力を削減するため、SATA規格で規定されている信号である。インターフェース216、217は、ストレージ装置113及び114のSATA電源コネクタに接続されている。
DEVSLP信号による省電力動作は、以下のようにして行われる。SATAホスト制御部111が、省電力モードへの移行を要求するコマンドであるPMREQ_Sコマンド、PMREQ_Pコマンド等を、SATAブリッジ制御部112に発行する。その後、SATAホスト制御部111が、インターフェース215を介して伝達されるDEVSLP信号をHiにすると、SATAブリッジ制御部112を省電力モードにする。逆に、SATAホスト制御部111が、インターフェース215を介して伝達されるDEVSLP信号をLoにして、COMWAKEコマンドを発行することで、SATAブリッジ制御部112を通常モードに復帰させる。省電力モードとは、通常モードよりも電力の消費を抑えたモードである。
また、SATAブリッジ制御部112が、省電力モードへの移行を要求するコマンドであるPMREQ_Sコマンド、PMREQ_Pコマンド等を、ストレージ装置113、114に発行する。その後、SATAブリッジ制御部112が、インターフェース216、217を介して伝達されるDEVSLP信号をHiにすると、ストレージ装置113、114を省電力モードにする。逆に、SATAブリッジ制御部112が、インターフェース216、217を介して伝達されるDEVSLP信号をLoにして、COMWAKEコマンドを発行することで、ストレージ装置113、114を通常モードに復帰させる。SATAブリッジ制御部112は、SATAホスト制御部111から省電力モードへの移行を要求するコマンドやDEVSLP信号を受信すると、受信したコマンドやDEVSLP信号を、ストレージ装置113、114に伝達する。
インターフェース215〜217は、DEVSLP信号の通信に利用されるインターフェースである。DEVSLP信号とは、こまめに電力を削減するため、SATA規格で規定されている信号である。インターフェース216、217は、ストレージ装置113及び114のSATA電源コネクタに接続されている。
DEVSLP信号による省電力動作は、以下のようにして行われる。SATAホスト制御部111が、省電力モードへの移行を要求するコマンドであるPMREQ_Sコマンド、PMREQ_Pコマンド等を、SATAブリッジ制御部112に発行する。その後、SATAホスト制御部111が、インターフェース215を介して伝達されるDEVSLP信号をHiにすると、SATAブリッジ制御部112を省電力モードにする。逆に、SATAホスト制御部111が、インターフェース215を介して伝達されるDEVSLP信号をLoにして、COMWAKEコマンドを発行することで、SATAブリッジ制御部112を通常モードに復帰させる。省電力モードとは、通常モードよりも電力の消費を抑えたモードである。
また、SATAブリッジ制御部112が、省電力モードへの移行を要求するコマンドであるPMREQ_Sコマンド、PMREQ_Pコマンド等を、ストレージ装置113、114に発行する。その後、SATAブリッジ制御部112が、インターフェース216、217を介して伝達されるDEVSLP信号をHiにすると、ストレージ装置113、114を省電力モードにする。逆に、SATAブリッジ制御部112が、インターフェース216、217を介して伝達されるDEVSLP信号をLoにして、COMWAKEコマンドを発行することで、ストレージ装置113、114を通常モードに復帰させる。SATAブリッジ制御部112は、SATAホスト制御部111から省電力モードへの移行を要求するコマンドやDEVSLP信号を受信すると、受信したコマンドやDEVSLP信号を、ストレージ装置113、114に伝達する。
図4は、メインコントローラ100の処理の一例を示すフローチャートである。メインCPU101は、例えば、パネル装置116を介したサービスマン等の操作に基づいて、メインコントローラ100を、FCT機能に関する処理を行うFCTモードにする。以下では、FCT機能に関する処理を、FCT処理とする。FCTモードは、異常を検出するテストを行う診断モードの一例である。メインCPU101は、FCTモードである場合、印刷機への電源の投入を検知した際に、FCT処理を開始する。本実施形態では、FCT処理には、メインCPU101によるSATAホスト制御部111やSATAブリッジ制御部112への異常を検出する設定されたテストの実行の指示処理が含まれる。また、本実施形態では、FCT処理には、メインCPU101からの指示に応じた、SATAホスト制御部111やSATAブリッジ制御部112によるその設定されたテストの実行処理等も含まれる。本実施形態では、メインCPU101は、FCTモードにおいて、SATAホスト制御部111、SATAブリッジ制御部112、ストレージ装置113、114の異常を診断する処理を行う。まず、メインCPU101は、メインCPU101とSATAホスト制御部111との間をテストする。メインCPU101は、例えば、SATAホスト制御部111に応答信号を要求する信号を送信し、正常に応答信号が返ってきた場合、SATAホスト制御部111が正常であると確認する。また、メインCPU101は、応答信号が返ってこなかったり、異常な応答信号が返ってきたりした場合、SATAホスト制御部111が異常であると確認する。メインCPU101は、SATAホスト制御部111が正常であると確認した場合、図4の処理を開始する。
図4を用いて、FCTモードのメインコントローラ100の処理を説明する。
S401において、メインCPU101は、SATAホスト制御部111を介して、SATAブリッジ制御部112に対して、FCTモードへの移行を指示し、FCTモードで実行されるテストを指定する。メインCPU101は、SATAブリッジ制御部112に対してコマンドを送信することで、FCTモードへの移行を指示し、FCTモードで実行されるテストを指定する。メインCPU101は、例えば、SATAブリッジ制御部112に対して、レジスタB324に実行するテストの情報を記憶するように指示することで、FCTモードで実行されるテストを指定する。
図4を用いて、FCTモードのメインコントローラ100の処理を説明する。
S401において、メインCPU101は、SATAホスト制御部111を介して、SATAブリッジ制御部112に対して、FCTモードへの移行を指示し、FCTモードで実行されるテストを指定する。メインCPU101は、SATAブリッジ制御部112に対してコマンドを送信することで、FCTモードへの移行を指示し、FCTモードで実行されるテストを指定する。メインCPU101は、例えば、SATAブリッジ制御部112に対して、レジスタB324に実行するテストの情報を記憶するように指示することで、FCTモードで実行されるテストを指定する。
S402において、メインCPU101は、SATAホスト制御部111に対して、FCTモードへの移行を指示し、FCTモードで実行されるテストを指定する。メインCPU101は、SATAホスト制御部111に対してコマンドを送信することで、FCTモードへの移行を指示し、FCTモードで実行されるテストを指定する。メインCPU101は、例えば、SATAホスト制御部111に対して、レジスタH306に実行するテストの情報を記憶するように指示することで、FCTモードで実行されるテストを指定する。
S403において、メインCPU101は、S401で指定したテストの実行を、SATAブリッジ制御部112に指示する。メインCPU101は、例えば、自己診断機能に関する処理を開始することを指示するコマンドの一例であるSetup‐FCT‐Modeコマンドを、SATAブリッジ制御部112に送信することでFCT処理の開始を指示する。
S404において、メインCPU101は、SATAホスト制御部111にFCT処理の開始を指示する。メインCPU101は、GPIO120を介して、インターフェース230を経由して、Hiを示すintFct信号を、SATAホスト制御部111に送信することで、FCT処理の開始をSATAホスト制御部111に指示する。メインCPU101は、SATAホスト制御部111に対して、レジスタH306に記憶されているテストの情報に対応するテストの開始を指示することで、FCT処理の開始をSATAホスト制御部111に指示してもよい。
S403において、メインCPU101は、S401で指定したテストの実行を、SATAブリッジ制御部112に指示する。メインCPU101は、例えば、自己診断機能に関する処理を開始することを指示するコマンドの一例であるSetup‐FCT‐Modeコマンドを、SATAブリッジ制御部112に送信することでFCT処理の開始を指示する。
S404において、メインCPU101は、SATAホスト制御部111にFCT処理の開始を指示する。メインCPU101は、GPIO120を介して、インターフェース230を経由して、Hiを示すintFct信号を、SATAホスト制御部111に送信することで、FCT処理の開始をSATAホスト制御部111に指示する。メインCPU101は、SATAホスト制御部111に対して、レジスタH306に記憶されているテストの情報に対応するテストの開始を指示することで、FCT処理の開始をSATAホスト制御部111に指示してもよい。
S405において、メインCPU101は、S403とS404とで実行を指示したFCT処理の完了を待機する。メインCPU101は、設定された期間待機した後、S403とS404とで実行を指示したFCT処理が完了したか否かを判定する。メインCPU101は、例えば、SATAホスト制御部111及びSATAブリッジ制御部112からFCT処理の完了を示す通知を受信した場合、S403とS404とで実行を指示したFCT処理が完了したと判定する。また、メインCPU101は、例えば、レジスタH306及びレジスタB324を設定された間隔で周期的に読み込み、FCT処理が完了したことを示す情報を読み取ることができた場合、FCT処理が完了したと判定してもよい。
HCPU301がSATAブリッジ制御部112からS403で指示されたFCT処理の完了を示す通知を受信した後に、メインCPU101にS404で指示されたFCT処理の完了を示す通知を送信する場合、メインCPU101は、以下のようにする。即ち、メインCPU101は、S405で、SATAホスト制御部111からS404で指示したFCT処理の完了を示す通知を受信した場合、S403とS404とで実行を指示したFCT処理が完了したと判定する。
HCPU301がSATAブリッジ制御部112からS403で指示されたFCT処理の完了を示す通知を受信した後に、メインCPU101にS404で指示されたFCT処理の完了を示す通知を送信する場合、メインCPU101は、以下のようにする。即ち、メインCPU101は、S405で、SATAホスト制御部111からS404で指示したFCT処理の完了を示す通知を受信した場合、S403とS404とで実行を指示したFCT処理が完了したと判定する。
メインCPU101は、S403とS404とで実行を指示したFCT処理が完了したと判定した場合、S406の処理に進み、S403とS404とで実行を指示したFCT処理が完了していないと判定した場合、S405の処理を繰り返す。
SATAホスト制御部111は、FCT処理の完了を示す通知を、例えば、PCI ExpressのMSI(Message Signaled Interrupt)割り込みで通知する。SATAホスト制御部111は、他の割り込み信号線、又は他の信号線を介して通知してもよい。
SATAホスト制御部111は、FCT処理の完了を示す通知を、例えば、PCI ExpressのMSI(Message Signaled Interrupt)割り込みで通知する。SATAホスト制御部111は、他の割り込み信号線、又は他の信号線を介して通知してもよい。
S406において、メインCPU101は、SATAホスト制御部111に対して、FCT処理の実行の解除を指示する。メインCPU101は、GPIO120を介して、インターフェース230を経由して、Loを示すintFct信号を、SATAホスト制御部111に送信することで、FCT処理の実行を解除する。メインCPU101がFCT処理の実行の解除の指示を送信しない場合、SATAホスト制御部111は、例えば、S404で送信された指示を受信した後、設定された期間が経過したらFCT処理の実行を解除するようにしてもよい。
S407において、メインCPU101は、SATAブリッジ制御部112に対して、FCT処理の実行の解除を指示する。メインCPU101は、例えば、SATAブリッジ制御部112に対して、FCT処理の結果を返すことを要求するコマンドの一例であるGet‐FCT‐Statusコマンドを送信することで、FCT処理の実行の解除を指示する。SATAブリッジ制御部112は、Get‐FCT‐Statusコマンドを受信すると、FCT処理を停止し、FCT処理の結果を、Get‐FCT‐Statusコマンドの送信元に送信する。メインCPU101がFCT処理の実行の解除の指示を送信しない場合、SATAブリッジ制御部112は、例えば、S403で送信された指示を受信した後、設定された期間が経過したらFCT処理の実行を解除するようにしてもよい。
S408において、メインCPU101は、SATAホスト制御部111のFCT処理の結果を取得する。メインCPU101は、SATAホスト制御部111のレジスタH306に記憶されているFCT処理の結果を示す情報を読み込むことで、FCT処理の結果を取得する。メインCPU101は、GPIO120を介して、SATAホスト制御部111から送信されるFCT処理の結果を示す情報を取得することとしてもよい。
S407において、メインCPU101は、SATAブリッジ制御部112に対して、FCT処理の実行の解除を指示する。メインCPU101は、例えば、SATAブリッジ制御部112に対して、FCT処理の結果を返すことを要求するコマンドの一例であるGet‐FCT‐Statusコマンドを送信することで、FCT処理の実行の解除を指示する。SATAブリッジ制御部112は、Get‐FCT‐Statusコマンドを受信すると、FCT処理を停止し、FCT処理の結果を、Get‐FCT‐Statusコマンドの送信元に送信する。メインCPU101がFCT処理の実行の解除の指示を送信しない場合、SATAブリッジ制御部112は、例えば、S403で送信された指示を受信した後、設定された期間が経過したらFCT処理の実行を解除するようにしてもよい。
S408において、メインCPU101は、SATAホスト制御部111のFCT処理の結果を取得する。メインCPU101は、SATAホスト制御部111のレジスタH306に記憶されているFCT処理の結果を示す情報を読み込むことで、FCT処理の結果を取得する。メインCPU101は、GPIO120を介して、SATAホスト制御部111から送信されるFCT処理の結果を示す情報を取得することとしてもよい。
S409において、メインCPU101は、SATAブリッジ制御部112のFCT処理の結果を取得する。メインCPU101は、SATAブリッジ制御部112から、Get‐FCT‐Statusコマンドの返り値を取得することで、FCT処理の結果を示す情報を取得することとしてもよい。メインCPU101は、GPIO120を介して、SATAホスト制御部111から送信されるFCT処理の結果を示す情報を取得することとしてもよい。
S410において、メインCPU101は、S408及びS409で取得したSATAホスト制御部111及びSATAブリッジ制御部112におけるFCT処理の結果を出力する。メインCPU101は、例えば、パネルIF部115経由で、パネル装置116にFCT処理の結果を示す情報を表示する。メインCPU101は、FCT処理の結果が、問題が無いことを示す結果ならば、パネル装置116に、テスト内容と問題がないことを示すオブジェクト(例えば、「OK」、「PASS」等の文字列等)とを表示する。
メインCPU101は、FCT処理の結果に問題があれば、パネル装置116にテスト内容と、問題があることを示すオブジェクト(例えば、「NG」等の文字列等)と、を表示する。そして、メインCPU101は、メインコントローラボードの交換指示(エラーコード)をパネル装置116に表示する。メインCPU101は、パネル装置116にではなく、LAN‐IF部105やUSBポートやシリアルポート等に接続された表示装置に、FCT処理の結果を示す情報を表示してもよい。また、メインCPU101は、FCT処理の結果を示す情報を、印字部118を介して、紙等に印刷することで、出力してもよい。S410での出力処理により、ユーザは、メインコントローラボードが故障しているか否か、つまり交換すべきか否かを知ることができる。
S410において、メインCPU101は、S408及びS409で取得したSATAホスト制御部111及びSATAブリッジ制御部112におけるFCT処理の結果を出力する。メインCPU101は、例えば、パネルIF部115経由で、パネル装置116にFCT処理の結果を示す情報を表示する。メインCPU101は、FCT処理の結果が、問題が無いことを示す結果ならば、パネル装置116に、テスト内容と問題がないことを示すオブジェクト(例えば、「OK」、「PASS」等の文字列等)とを表示する。
メインCPU101は、FCT処理の結果に問題があれば、パネル装置116にテスト内容と、問題があることを示すオブジェクト(例えば、「NG」等の文字列等)と、を表示する。そして、メインCPU101は、メインコントローラボードの交換指示(エラーコード)をパネル装置116に表示する。メインCPU101は、パネル装置116にではなく、LAN‐IF部105やUSBポートやシリアルポート等に接続された表示装置に、FCT処理の結果を示す情報を表示してもよい。また、メインCPU101は、FCT処理の結果を示す情報を、印字部118を介して、紙等に印刷することで、出力してもよい。S410での出力処理により、ユーザは、メインコントローラボードが故障しているか否か、つまり交換すべきか否かを知ることができる。
次に、図5を用いて、FCTモードにおけるSATAホスト制御部111の処理を説明する。図5は、FCTモードにおけるSATAホスト制御部111の処理の一例を示すフローチャートである。
S411において、HCPU301は、S402で送信されるFCT処理の実行の指示を待機する。HCPU301は、例えば、インターフェース230を介して、Hiを示すintFct信号が送信されるまで、待機する。また、HCPU301は、レジスタH306にFCT処理の開始を示す情報が記憶されるまで、待機することとしてもよい。
S412において、HCPU301は、S402で送信された指示が示すテストが、何のテストであるかを判断する。HCPU301は、例えば、レジスタH306に記憶されているFCT処理に関する設定情報の値を参照して、実行するテストを判断する。HCPU301は、例えば、レジスタH306に記憶されているFCT処理に関する設定情報の設定された第1のビットの値がHi(1)ならば、実行するテストをSATA差動信号テストと判断し、S413の処理に進む。また、HCPU301は、例えば、レジスタH306に記憶されているFCT処理に関する設定情報のうち、設定された第2のビットの値がHi(1)ならば、実行するテストをDEVSLP信号テストと判断し、S414の処理に進む。
SATA差動信号テストとは、デバイス間で行われる差動信号のやり取りによる通信が正常に行われているか否かを確認するためのテストであり、詳細については、図9、10で後述する。DEVSLP信号テストとは、デバイス間で行われる省電力モードへの移行を指示する信号のやり取りが正常に行われているか否かを確認するためのテストであり、詳細については、図11〜13で後述する。本実施形態では、HCPU301は、実行するテストを、2つのテストのうちの何れかであると判断したが、3つ以上のテストから実行するテストを判断してもよい。
S411において、HCPU301は、S402で送信されるFCT処理の実行の指示を待機する。HCPU301は、例えば、インターフェース230を介して、Hiを示すintFct信号が送信されるまで、待機する。また、HCPU301は、レジスタH306にFCT処理の開始を示す情報が記憶されるまで、待機することとしてもよい。
S412において、HCPU301は、S402で送信された指示が示すテストが、何のテストであるかを判断する。HCPU301は、例えば、レジスタH306に記憶されているFCT処理に関する設定情報の値を参照して、実行するテストを判断する。HCPU301は、例えば、レジスタH306に記憶されているFCT処理に関する設定情報の設定された第1のビットの値がHi(1)ならば、実行するテストをSATA差動信号テストと判断し、S413の処理に進む。また、HCPU301は、例えば、レジスタH306に記憶されているFCT処理に関する設定情報のうち、設定された第2のビットの値がHi(1)ならば、実行するテストをDEVSLP信号テストと判断し、S414の処理に進む。
SATA差動信号テストとは、デバイス間で行われる差動信号のやり取りによる通信が正常に行われているか否かを確認するためのテストであり、詳細については、図9、10で後述する。DEVSLP信号テストとは、デバイス間で行われる省電力モードへの移行を指示する信号のやり取りが正常に行われているか否かを確認するためのテストであり、詳細については、図11〜13で後述する。本実施形態では、HCPU301は、実行するテストを、2つのテストのうちの何れかであると判断したが、3つ以上のテストから実行するテストを判断してもよい。
S413において、HCPU301は、SATA差動信号テストを実行する。
S414において、HCPU301は、DEVSLP信号テストを実行する。
S415において、HCPU301は、FCT処理の完了をメインCPU101に通知する。HCPU301は、例えば、PCI ExpressのMSIを発行することで、通知する。メインCPU101は、S405で、S415での通知を待機する。
このように、SATAホスト制御部111が、指定されたテストを実行し、テスト結果をレジスタH306等に記憶し、テスト終了をメインコントローラ100に通知する。これにより、メインコントローラ100は、メインコントローラ100及びSATAホスト制御部111の間の動作が正常か否かを確認できる。これによって、ユーザは、メインコントローラボードが故障しているか否か、つまり交換すべきか否かを知ることができる。
S414において、HCPU301は、DEVSLP信号テストを実行する。
S415において、HCPU301は、FCT処理の完了をメインCPU101に通知する。HCPU301は、例えば、PCI ExpressのMSIを発行することで、通知する。メインCPU101は、S405で、S415での通知を待機する。
このように、SATAホスト制御部111が、指定されたテストを実行し、テスト結果をレジスタH306等に記憶し、テスト終了をメインコントローラ100に通知する。これにより、メインコントローラ100は、メインコントローラ100及びSATAホスト制御部111の間の動作が正常か否かを確認できる。これによって、ユーザは、メインコントローラボードが故障しているか否か、つまり交換すべきか否かを知ることができる。
次に、図6を用いて、FCTモードにおけるSATAブリッジ制御部112の処理を説明する。図6は、FCTモードにおけるSATAブリッジ制御部112の処理の一例を示すフローチャートである。
S421において、BCPU320は、S403で送信されるFCT処理の実行の指示を待機する。BCPU320は、例えば、メインCPU101から、FCT処理の実行の指示として、Setup‐FCT‐Modeコマンドが送信されるのを待機する。
S422において、BCPU320は、S403で送信された指示が示すテストが、何のテストであるかを判断する。BCPU320は、例えば、メインCPU101から送信されたSetup‐FCT‐Modeコマンドを参照して、実行するテストを判断する。BCPU320は、Setup‐FCT‐Modeコマンドのデータ部の設定された第1のビットがHiならば、実効するテストをSATA差動信号テストと判断し、S423の処理に進む。BCPU320は、Setup‐FCT‐Modeコマンドのデータ部の設定された第2のビットがHiならば、実効するテストをDEVSLP信号テストと判断し、S424の処理に進む。
S421において、BCPU320は、S403で送信されるFCT処理の実行の指示を待機する。BCPU320は、例えば、メインCPU101から、FCT処理の実行の指示として、Setup‐FCT‐Modeコマンドが送信されるのを待機する。
S422において、BCPU320は、S403で送信された指示が示すテストが、何のテストであるかを判断する。BCPU320は、例えば、メインCPU101から送信されたSetup‐FCT‐Modeコマンドを参照して、実行するテストを判断する。BCPU320は、Setup‐FCT‐Modeコマンドのデータ部の設定された第1のビットがHiならば、実効するテストをSATA差動信号テストと判断し、S423の処理に進む。BCPU320は、Setup‐FCT‐Modeコマンドのデータ部の設定された第2のビットがHiならば、実効するテストをDEVSLP信号テストと判断し、S424の処理に進む。
S423において、BCPU320は、SATA差動信号テストを実行する。
S424において、BCPU320は、DEVSEL信号テストを実行する。
S427において、BCPU320は、S423、S424の何れかで実行したテストの結果を示す情報を、Flashメモリ322、SRAM323、レジスタB324等に記憶する。
S428において、BCPU320は、S423、S424の何れかで実行したテストの結果の問い合わせを受信したか否かを判定する。BCPU320は、例えば、Get‐FCT‐Statusコマンドを受信した場合、S423、S424の何れかで実行したテストの結果の問い合わせを受信したと判定する。BCPU320は、S423、S424の何れかで実行したテストの結果の問い合わせを受信したと判定した場合、S429の処理に進む。BCPU320は、S423、S424の何れかで実行したテストの結果の問い合わせを受信していないと判定した場合、S422の処理に進む。
S424において、BCPU320は、DEVSEL信号テストを実行する。
S427において、BCPU320は、S423、S424の何れかで実行したテストの結果を示す情報を、Flashメモリ322、SRAM323、レジスタB324等に記憶する。
S428において、BCPU320は、S423、S424の何れかで実行したテストの結果の問い合わせを受信したか否かを判定する。BCPU320は、例えば、Get‐FCT‐Statusコマンドを受信した場合、S423、S424の何れかで実行したテストの結果の問い合わせを受信したと判定する。BCPU320は、S423、S424の何れかで実行したテストの結果の問い合わせを受信したと判定した場合、S429の処理に進む。BCPU320は、S423、S424の何れかで実行したテストの結果の問い合わせを受信していないと判定した場合、S422の処理に進む。
S429において、BCPU320は、S423、S424の何れかで実行したテストの結果を出力する。BCPU320は、例えば、Get‐FCT‐Statusコマンドの送信元に対して、S423、S424の何れかで実行したテストの結果を示す情報をメインコントローラ100に送信することで、出力する。
このように、SATAブリッジ制御部112は、指定されたテストを実行し、テストの結果を記憶し、テストの結果を示す情報をメインCPU101に送信する。これにより、メインCPU101は、SATAホスト制御部111、SATAブリッジ制御部112、ストレージ装置113、114の間の動作が正常化否かを確認できる。ユーザは、送信されたテストの結果の情報によって、メインコントローラボード(SATAホスト制御部111、SATAブリッジ制御部112)が故障しているか否か、交換すべきか否かを知ることができる。
このように、SATAブリッジ制御部112は、指定されたテストを実行し、テストの結果を記憶し、テストの結果を示す情報をメインCPU101に送信する。これにより、メインCPU101は、SATAホスト制御部111、SATAブリッジ制御部112、ストレージ装置113、114の間の動作が正常化否かを確認できる。ユーザは、送信されたテストの結果の情報によって、メインコントローラボード(SATAホスト制御部111、SATAブリッジ制御部112)が故障しているか否か、交換すべきか否かを知ることができる。
図7は、SATAホスト制御部111のレジスタH306に記憶される情報の一例を示す図である。メインCPU101は、レジスタH306に記憶される情報を参照することで、FCT処理に関する設定情報、FCT処理の結果の情報等を確認することができる。
図7において、ビット列801は、FCT処理に関する設定情報を示すビット列である。ビット列801の各ビットは、それぞれ特定のテストに対応する。ビット列801内のあるテストに対応するビットに"1"を書き込むと、そのテストが実行され、そのビットに"0"を書き込むと、そのテストの実行が停止されることになる。メインCPU101は、ビット列801を読み込み、あるビットの値が"1"ならば該当するテストが実行中であり、そのビットの値が"0"ならば該当するテストが停止中であることを確認できる。
ビット802は、ビット列801に含まれるビットであり、SATA差動信号テストが実行中であるか、停止中であるかを示すビットである。
ビット803は、ビット列801に含まれるビットであり、DEVSLP信号テストが実行中であるか、停止中であるかを示すビットである。
図7において、ビット列801は、FCT処理に関する設定情報を示すビット列である。ビット列801の各ビットは、それぞれ特定のテストに対応する。ビット列801内のあるテストに対応するビットに"1"を書き込むと、そのテストが実行され、そのビットに"0"を書き込むと、そのテストの実行が停止されることになる。メインCPU101は、ビット列801を読み込み、あるビットの値が"1"ならば該当するテストが実行中であり、そのビットの値が"0"ならば該当するテストが停止中であることを確認できる。
ビット802は、ビット列801に含まれるビットであり、SATA差動信号テストが実行中であるか、停止中であるかを示すビットである。
ビット803は、ビット列801に含まれるビットであり、DEVSLP信号テストが実行中であるか、停止中であるかを示すビットである。
ビット列811は、テストの結果を示すビット列である。ビット列811に含まれるあるビットが"1"であることは、そのビットに対応するテストの結果、問題がないことを示す。ビット列811に含まれるあるビットが"0"であることは、そのビットに対応するテストの結果、問題があることを示す。メインCPU101は、ビット列811を読み込み、あるビットの値が"1"ならば該当するテストの結果、問題ないことを確認し、そのビットの値が"0"ならば該当するテストの結果、問題があることを確認する。
ビット812は、ビット列811に含まれるビットであり、SATA差動信号テストの結果を示すビットである。
ビット803は、ビット列811に含まれるビットであり、DEVSLP信号テストの結果を示すビットである。
ビット列821は、実行されるテストにかかる期間を示す。例えば、ビット列811が100を示す場合、DEVSLP信号テストの際のDEVSLP信号におけるHi/Loのパルス幅がそれぞれ100msecとなる。
また、SATAブリッジ制御部112は、レジスタB324に、図7と同様のビット列を記憶し、記憶したビット列にSATAブリッジ制御部112が実行するテストの情報やテストの結果の情報を記憶することとしてもよい。
ビット812は、ビット列811に含まれるビットであり、SATA差動信号テストの結果を示すビットである。
ビット803は、ビット列811に含まれるビットであり、DEVSLP信号テストの結果を示すビットである。
ビット列821は、実行されるテストにかかる期間を示す。例えば、ビット列811が100を示す場合、DEVSLP信号テストの際のDEVSLP信号におけるHi/Loのパルス幅がそれぞれ100msecとなる。
また、SATAブリッジ制御部112は、レジスタB324に、図7と同様のビット列を記憶し、記憶したビット列にSATAブリッジ制御部112が実行するテストの情報やテストの結果の情報を記憶することとしてもよい。
図8は、メインCPU101からSATAブリッジ制御部112に送信されるコマンドの一例を示す図である。SATA規格で定義された空コマンドであるベンダユニークなコマンド(例えば、F0hコマンド)に対して、独自のコマンドが定義される。例えば、図8の第1行目左から示されるように拡張コマンド名称701、CMD(サブコマンド)番号702、転送タイプ703により、拡張コマンドが独自に定義される。ここで、CMD番号702は、ベンダユニークなコマンド(例えば、F0h)に対するFeatureレジスタに設定されるサブコマンド番号を示す。また、SATA規格では基本的な転送タイプとして、データを伴わないNon‐Data(ND)転送、単発データ転送を実行するPIO‐In(PI)・PIO‐Out(PO)転送、連続データ転送を実行するDMA転送等の転送タイプが定義されている。転送タイプ703は、CMD番号702に対する転送タイプを示す。例えば、Setup‐FCT‐Modeコマンド706は、CMD番号:01h(707)、転送タイプ:PO(708)で定義されている。同様にGet‐FCT‐Statusコマンド710は、CMD番号:02h(711)、転送タイプ:PI(712)で定義されている。
Setup‐FCT‐Modeコマンド706は、SATAブリッジ制御部112に実行されるFCTのテスト内容を指示するために用いられるコマンドである。Setup‐FCT‐Modeコマンド706は、例えば、ビット列801の実行を指示したいテストに対応するビットに1を割当てるように指示するコマンドである。
Setup‐FCT‐Modeコマンド706は、SATAブリッジ制御部112に実行されるFCTのテスト内容を指示するために用いられるコマンドである。Setup‐FCT‐Modeコマンド706は、例えば、ビット列801の実行を指示したいテストに対応するビットに1を割当てるように指示するコマンドである。
Get‐FCT‐Statusコマンド710は、テスト結果又は処理結果を要求する際に利用されるコマンドである。SATAブリッジ制御部112は、Get‐FCT‐Statusコマンド710受信すると、ビット列811に含まれるビットのうち、実行されたテストに対応するビットの値に対応する情報を、コマンドの送信元に送信する。SATAブリッジ制御部112は、ビット列811に含まれるビットのうち、実行されたテストに対応するビットの値が"1"の場合、問題ないことを示す情報を送信し、"0"の場合、問題があることを示す情報を送信する。SATAブリッジ制御部112は、Get‐FCT‐Statusコマンド710を受信するまでFCTモードを継続し、Get‐FCT‐Statusコマンド710を受信したら通常モードに復帰する。
以下では、拡張コマンド以外のATA規格で定義されたコマンドを、ATAコマンドとする。SATAホスト制御部111及びSATAブリッジ制御部112は、拡張コマンドだけを処理するのではなく、ATAコマンドも処理できる。ATAコマンドの例として、IdentifyDeviceコマンド714がある。IdentifyDeviceコマンド714は、CMD番号:ECh(715)、転送タイプ:PI(716)で定義されている。SATAホスト制御部111又はSATAブリッジ制御部112がIdentifyDeviceコマンド714をストレージ装置に送信すると、ストレージ装置は、ストレージ装置の名前や記憶容量等の情報(例えば、512byte等の情報)を応答する。
以下では、拡張コマンド以外のATA規格で定義されたコマンドを、ATAコマンドとする。SATAホスト制御部111及びSATAブリッジ制御部112は、拡張コマンドだけを処理するのではなく、ATAコマンドも処理できる。ATAコマンドの例として、IdentifyDeviceコマンド714がある。IdentifyDeviceコマンド714は、CMD番号:ECh(715)、転送タイプ:PI(716)で定義されている。SATAホスト制御部111又はSATAブリッジ制御部112がIdentifyDeviceコマンド714をストレージ装置に送信すると、ストレージ装置は、ストレージ装置の名前や記憶容量等の情報(例えば、512byte等の情報)を応答する。
次に図9を用いて、S413等で実行されるSATA差動信号テスト処理の詳細を説明する。図9は、SATA差動信号テストにかかる処理の一例を示すフローチャートである。図9の処理は、SATAホスト制御部111とSATAブリッジ制御部112との間のH‐Host‐IF206を介したSATA差動信号のやり取りに関する動作が正常か否かをテストするためのサブルーチン化された処理である。S413でのSATA差動信号テストは、H‐Host‐IF206を介して伝達される信号の値を"1"、"0"と変化させることで行われるテストである。
本実施形態では、SATAホスト制御部111は、FCTモードにおいて、SATAブリッジ制御部112との間で、差動信号のやり取りによる通信を試みることで、SATA差動信号テストを実行する。正常に通信できた場合、SATAブリッジ制御部112、及びSATAホスト制御部111とSATAブリッジ制御部112との接続に利用されるケーブル等が正常であることが確認されることになる。また、正常に通信できなかった場合、SATAブリッジ制御部112、又は、SATAホスト制御部111とSATAブリッジ制御部112との接続に利用されるケーブル等に異常が発生していることが確認されることになる。
本実施形態では、SATAホスト制御部111は、FCTモードにおいて、SATAブリッジ制御部112との間で、差動信号のやり取りによる通信を試みることで、SATA差動信号テストを実行する。正常に通信できた場合、SATAブリッジ制御部112、及びSATAホスト制御部111とSATAブリッジ制御部112との接続に利用されるケーブル等が正常であることが確認されることになる。また、正常に通信できなかった場合、SATAブリッジ制御部112、又は、SATAホスト制御部111とSATAブリッジ制御部112との接続に利用されるケーブル等に異常が発生していることが確認されることになる。
S431において、HCPU301は、タイマ308を初期化する。HCPU301は、このタイマ308を用いて、タイムアウトを判断する。HCPU301は、タイマ308以外のタイマを用いて、タイムアウトを判断してもよい。
S432において、HCPU301は、SATAブリッジ制御部112との間で、SATA差動信号テストを実行する。HCPU301は、例えば、IdentifyDeviceコマンドをSATAブリッジ制御部112に送信することで、SATA差動信号テストを実行する。HCPU301は、SATAホスト制御部111からSATAブリッジ制御部112への送信側(トランスミッタ側)のSATA差動信号が変化するテストであれば、他のテストでもよい。HCPU301は、例えば、IdentifyDeviceコマンド以外のSATAブリッジ制御部112からの応答を要求するコマンドをSATAブリッジ制御部112に送信することで、SATA差動信号テストを実行してもよい。
S432において、HCPU301は、SATAブリッジ制御部112との間で、SATA差動信号テストを実行する。HCPU301は、例えば、IdentifyDeviceコマンドをSATAブリッジ制御部112に送信することで、SATA差動信号テストを実行する。HCPU301は、SATAホスト制御部111からSATAブリッジ制御部112への送信側(トランスミッタ側)のSATA差動信号が変化するテストであれば、他のテストでもよい。HCPU301は、例えば、IdentifyDeviceコマンド以外のSATAブリッジ制御部112からの応答を要求するコマンドをSATAブリッジ制御部112に送信することで、SATA差動信号テストを実行してもよい。
S433において、HCPU301は、SATAブリッジ制御部112からS432で送信したコマンドに対するSATAホスト制御部111への応答があったか否かを判定する。HCPU301は、応答があったと判定した場合、S434の処理に進み、応答がなかったと判定した場合、S435の処理に進む。HCPU301は、例えば、SATAブリッジ制御部112からのIdentifyDeviceコマンドの応答を受信する。HCPU301は、IdentifyDeviceコマンド以外のコマンドをSATAブリッジ制御部112に送信した場合、そのコマンドの応答を受信することとしてもよい。即ち、HCPU301は、SATAブリッジ制御部112からSATAホスト制御部111への受信側(レシーバ側)のSATA差動信号が変化するテストであれば、どのようなテストを実行してもよい。
S434において、HCPU301は、S432〜S433で行われたテストの結果をレジスタH306等に記憶する。HCPU301は、SATAホスト制御部111とSATAブリッジ制御部112との間のSATA差動信号テストの結果、正常であることが確認されたことを示す情報を記憶する。HCPU301は、例えば、レジスタH306に記憶されているビット列811のSATA差動信号テストに対応するビットの値を、テスト成功を示す"1"にする。また、HCPU301は、S433で送信されたと判断したSATAブリッジ制御部112からの応答の全部又は一部をレジスタH306に記憶してもよい。
S434において、HCPU301は、S432〜S433で行われたテストの結果をレジスタH306等に記憶する。HCPU301は、SATAホスト制御部111とSATAブリッジ制御部112との間のSATA差動信号テストの結果、正常であることが確認されたことを示す情報を記憶する。HCPU301は、例えば、レジスタH306に記憶されているビット列811のSATA差動信号テストに対応するビットの値を、テスト成功を示す"1"にする。また、HCPU301は、S433で送信されたと判断したSATAブリッジ制御部112からの応答の全部又は一部をレジスタH306に記憶してもよい。
S435において、HCPU301は、タイマ308を用いて、タイムアウトか否かを判断する。HCPU301は、例えば、タイマ308の経過時間が設定された期間(例えば10秒)以内なら、タイムアウトしていないと判断し、S433の処理に進む。また、HCPU301は、タイマ308の経過時間が設定された期間(例えば10秒)を超えていたら、タイムアウトと判断し、S436の処理に進む。
S436において、HCPU301は、S432〜S433で行われたテストの結果をレジスタH306等に記憶する。HCPU301は、SATAホスト制御部111とSATAブリッジ制御部112との間のSATA差動信号テストの結果、異常であることが確認されたことを示す情報を記憶する。HCPU301は、例えば、レジスタH306に記憶されているビット列811のSATA差動信号テストに対応するビットの値を、テスト失敗を示す"0"にする。
S436において、HCPU301は、S432〜S433で行われたテストの結果をレジスタH306等に記憶する。HCPU301は、SATAホスト制御部111とSATAブリッジ制御部112との間のSATA差動信号テストの結果、異常であることが確認されたことを示す情報を記憶する。HCPU301は、例えば、レジスタH306に記憶されているビット列811のSATA差動信号テストに対応するビットの値を、テスト失敗を示す"0"にする。
次に、図10を用いてSATA差動信号テストの際のSATAブリッジ制御部112の処理を説明する。図10は、SATA差動信号テストの際のSATAブリッジ制御部112の処理の一例を示すフローチャートである。
S440において、BCPU320は、タイマ329を初期化する。BCPU320は、タイマ329を用いて、タイムアウトしたか否かを判断する。BCPU320は、タイマ329以外のタイマを用いて、タイムアウトしたか否かを判断してもよい。
SATAブリッジ制御部112は、B‐Host1‐IF207と、B‐Host2‐IF208と、の2つのストレージIFを持ち、それぞれのストレージIFを介して、2つのストレージ装置に対して、同様のテストを行う。本実施形態では、BCPU320は、2つのストレージ装置に対して、並行してテストを行うこととする。
S440において、BCPU320は、タイマ329を初期化する。BCPU320は、タイマ329を用いて、タイムアウトしたか否かを判断する。BCPU320は、タイマ329以外のタイマを用いて、タイムアウトしたか否かを判断してもよい。
SATAブリッジ制御部112は、B‐Host1‐IF207と、B‐Host2‐IF208と、の2つのストレージIFを持ち、それぞれのストレージIFを介して、2つのストレージ装置に対して、同様のテストを行う。本実施形態では、BCPU320は、2つのストレージ装置に対して、並行してテストを行うこととする。
S441において、BCPU320は、B‐Host1‐IF207を介して、ストレージ装置113との間で、SATA差動信号テストを実行する。BCPU320は、例えば、IdentifyDeviceコマンドを、ストレージ装置113に送信することで、SATA差動信号テストを実行する。BCPU320は、SATAブリッジ制御部112からストレージ装置113への送信側(トランスミッタ側)のSATA差動信号が変化するテストであれば、他のテストでもよい。BCPU320は、例えば、IdentifyDeviceコマンド以外のストレージ装置113からの応答を要求するコマンドをストレージ装置113に送信することで、SATA差動信号テストを実行してもよい。
S442において、BCPU320は、ストレージ装置113からS441で送信したコマンドに対するSATAブリッジ制御部112への応答があったか否かを判定する。BCPU320は、応答があったと判定した場合、S443の処理に進み、応答がなかったと判定した場合、S444の処理に進む。BCPU320は、例えば、ストレージ装置113からのIdentifyDeviceコマンドの応答を受信する。BCPU320は、IdentifyDeviceコマンド以外のコマンドをストレージ装置113に送信した場合、そのコマンドの応答を受信することとしてもよい。即ち、BCPU320は、ストレージ装置113からSATAブリッジ制御部112への受信側(レシーバ側)のSATA差動信号が変化するテストであれば、どのようなテストを実行してもよい。
S442において、BCPU320は、ストレージ装置113からS441で送信したコマンドに対するSATAブリッジ制御部112への応答があったか否かを判定する。BCPU320は、応答があったと判定した場合、S443の処理に進み、応答がなかったと判定した場合、S444の処理に進む。BCPU320は、例えば、ストレージ装置113からのIdentifyDeviceコマンドの応答を受信する。BCPU320は、IdentifyDeviceコマンド以外のコマンドをストレージ装置113に送信した場合、そのコマンドの応答を受信することとしてもよい。即ち、BCPU320は、ストレージ装置113からSATAブリッジ制御部112への受信側(レシーバ側)のSATA差動信号が変化するテストであれば、どのようなテストを実行してもよい。
S443において、BCPU320は、S441〜S442で行われたテストの結果をレジスタB324等に記憶する。BCPU320は、SATAホスト制御部111とSATAブリッジ制御部112との間のSATA差動信号テストの結果、正常であることが確認されたことを示す情報を記憶する。BCPU320は、例えば、ビット列811と同様にテストの結果の情報を格納するレジスタB324に記憶されているビット列のSATA差動信号テストに対応するビットの値を、テスト成功を示す"1"にする。また、BCPU320は、S433で送信されたと判断したSATAブリッジ制御部112からの応答の全部又は一部をレジスタB324に記憶してもよい。
S444において、BCPU320は、タイマ329を用いて、タイムアウトか否かを判断する。BCPU320は、例えば、タイマ329の経過時間が設定された期間(例えば10秒)以内なら、タイムアウトしていないと判断し、S442の処理に進む。また、BCPU320は、タイマ329の経過時間が設定された期間(例えば10秒)を超えていたら、タイムアウトと判断し、S445の処理に進む。
S444において、BCPU320は、タイマ329を用いて、タイムアウトか否かを判断する。BCPU320は、例えば、タイマ329の経過時間が設定された期間(例えば10秒)以内なら、タイムアウトしていないと判断し、S442の処理に進む。また、BCPU320は、タイマ329の経過時間が設定された期間(例えば10秒)を超えていたら、タイムアウトと判断し、S445の処理に進む。
S445は、BCPU320は、S441〜S442で行われたテストの結果をレジスタB324等に記憶する。BCPU320は、SATAホスト制御部111とSATAブリッジ制御部112との間のSATA差動信号テストの結果、異常であることが確認されたことを示す情報を記憶する。BCPU320は、例えば、ビット列811と同様にテストの結果の情報を格納するレジスタB324に記憶されているビット列のSATA差動信号テストに対応するビットの値を、テスト失敗を示す"0"にする。
BCPU320は、S441'〜S445'で、B‐Host2‐IF208を介して、ストレージ装置114に対して、S441〜S445と同様の処理を行う。
また、本実施形態では、BCPU320は、並行して、S441〜S445の処理、及び、S441'〜S445'の処理を行うこととしたが、S441〜S445の処理を行った後に、S441'〜S445'の処理を行う等のように、順次処理を行ってもよい。
BCPU320は、S441'〜S445'で、B‐Host2‐IF208を介して、ストレージ装置114に対して、S441〜S445と同様の処理を行う。
また、本実施形態では、BCPU320は、並行して、S441〜S445の処理、及び、S441'〜S445'の処理を行うこととしたが、S441〜S445の処理を行った後に、S441'〜S445'の処理を行う等のように、順次処理を行ってもよい。
次に図11を用いて、DEVSLP信号の波形の一例を説明する。図11は、DEVSLP信号の波形の一例を示す図である。SATAブリッジ制御部112は、インターフェース215を介して、SATAホスト制御部111からDEVSLP信号を受信している。図11のH‐DEVSLPで示される信号の波形は、SATAホスト制御部111からSATAブリッジ制御部112に送信されるDEVSLP信号の一例である。ストレージ装置113、114は、インターフェース216、217を介して、SATAブリッジ制御部112からDEVSLP信号を受信している。図11のB‐DEVSLP1/2で示される信号の波形は、SATAブリッジ制御部112からストレージ装置113、114に送信されるDEVSLP信号の一例である。
SATAホスト制御部111からSATAブリッジ制御部112にPMREQ_Pコマンド又はPMREQ_Sコマンドが送信された場合、BCPU320は、以下の処理を行う。即ち、BCPU320は、受信したPMREQ_Pコマンド又はPMREQ_Sコマンドを、ストレージ装置113、114に送信して、省エネモードに移行させる。
SATAホスト制御部111からSATAブリッジ制御部112にPMREQ_Pコマンド又はPMREQ_Sコマンドが送信された場合、BCPU320は、以下の処理を行う。即ち、BCPU320は、受信したPMREQ_Pコマンド又はPMREQ_Sコマンドを、ストレージ装置113、114に送信して、省エネモードに移行させる。
FCTモードにおいて、SATAホスト制御部111又はSATAブリッジ制御部112のチップ端子、又はコネクタ端子と基板パターンがハンダ付け部分の接触不良、隣の基板パターンのショート等の実装不良、又は基板の断線等の異常を検出する。そのため、インターフェース215を介して伝達されるH−DEVSLP信号を"1"、"0"と変化させる必要がある。
しかし、SATAブリッジ制御部112にストレージ装置113、114が接続されている場合、ストレージ装置113、114について、省電力モードと通常電力モードとを頻繁に切り替えると、以下のような問題がある。即ち、ストレージ装置113、114がHDDである場合、省電力モードと通常電力モードとが頻繁に切り替わると、モータやベアリングの駆動や停止の際に負荷がかかり、ストレージ装置113、114の寿命が短くなる。また、ストレージ装置113、114がSSDである場合、省電力モードと通常電力モードとが頻繁に切り替わると、モードの切り替わりに応じて、フラッシュメモリへの情報の読書きが発生し、フラッシュメモリの寿命が短くなってしまう。
しかし、SATAブリッジ制御部112にストレージ装置113、114が接続されている場合、ストレージ装置113、114について、省電力モードと通常電力モードとを頻繁に切り替えると、以下のような問題がある。即ち、ストレージ装置113、114がHDDである場合、省電力モードと通常電力モードとが頻繁に切り替わると、モータやベアリングの駆動や停止の際に負荷がかかり、ストレージ装置113、114の寿命が短くなる。また、ストレージ装置113、114がSSDである場合、省電力モードと通常電力モードとが頻繁に切り替わると、モードの切り替わりに応じて、フラッシュメモリへの情報の読書きが発生し、フラッシュメモリの寿命が短くなってしまう。
そうならならないよう、BCPU320は、以下のような処理を行う。即ち、BCPU320は、FCTモードにおいて、SATAホスト制御部111やメインCPU101から省電力モードへの移行を指示する信号を受信した場合でも、ストレージ装置113、114に対して、省電力モードへの移行を指示しない。即ち、BCPU320は、FCTモードであり、ストレージ装置113、114を省電力モードに移行させる指示を受付けた場合に、ストレージ装置113、114を省電力モードにしないように制御する。例えば、BCPU320は、省電力モードへの移行を指示するコマンドを、ストレージ装置113、114に対して発行しない。より具体的には、SATAブリッジ制御部112にインターフェース215を介してHiであるDEVSLP信号が伝達され、かつ、PMREQ_Pコマンド又はPMREQ_Sコマンドが入力された場合、BCPU320は、以下の処理を行う。即ち、BCPU320は、ストレージ装置113又は114が省エネモードにならないよう、SATAブリッジ制御部112は、ストレージ装置113又は114にPMREQ_PコマンドまたはPMREQ_Sコマンドを発行しない。
SATAブリッジ制御部112は、インターフェース216を介して伝達するDEVSLP信号を変化させることで、ストレージ装置113との間でDEVSLP信号のやり取りを正常に行えるか否かの確認を行う。また、SATAブリッジ制御部112は、インターフェース217を介して伝達するDEVSLP信号を変化させることで、ストレージ装置114との間でDEVSLP信号のやり取りを正常に行えるか否かの確認を行う。
SATAブリッジ制御部112は、インターフェース216を介して伝達するDEVSLP信号を変化させることで、ストレージ装置113との間でDEVSLP信号のやり取りを正常に行えるか否かの確認を行う。また、SATAブリッジ制御部112は、インターフェース217を介して伝達するDEVSLP信号を変化させることで、ストレージ装置114との間でDEVSLP信号のやり取りを正常に行えるか否かの確認を行う。
図11において、時点T0は、FCTモードに移行する時点である。
時点T1は、DEVSLP信号がLo(通常電力)からHi(DevSleep)に移行する時点である。メインCPU101がGPIO120を介して、インターフェース215を介して伝達されるDEVSLP信号を変化させると、HCPU301に割り込みが入る。通常モードでは、省電力モードへの移行の際に、HCPU301は、PMREQ_Sコマンドを発行した後、インターフェース216、217を介して伝達されるDEVSLP信号を変化させる。BCPU320は、FCTモードでは、ストレージの寿命が短くならないよう、接続されたストレージ装置に合わせて、DEVSLP信号を動作確認する。
時点T2は、DEVSLP信号がHi(DevSleep)からLo(通常電力)に移行する時点である。通常電力にするため、SATAホスト制御部111は、SATAブリッジ制御部112に対して、COMWAKEコマンドを発行する。また、SATAブリッジ制御部112は、ストレージ装置113、114に対して、COMWAKEコマンドを発行する。
時点T1は、DEVSLP信号がLo(通常電力)からHi(DevSleep)に移行する時点である。メインCPU101がGPIO120を介して、インターフェース215を介して伝達されるDEVSLP信号を変化させると、HCPU301に割り込みが入る。通常モードでは、省電力モードへの移行の際に、HCPU301は、PMREQ_Sコマンドを発行した後、インターフェース216、217を介して伝達されるDEVSLP信号を変化させる。BCPU320は、FCTモードでは、ストレージの寿命が短くならないよう、接続されたストレージ装置に合わせて、DEVSLP信号を動作確認する。
時点T2は、DEVSLP信号がHi(DevSleep)からLo(通常電力)に移行する時点である。通常電力にするため、SATAホスト制御部111は、SATAブリッジ制御部112に対して、COMWAKEコマンドを発行する。また、SATAブリッジ制御部112は、ストレージ装置113、114に対して、COMWAKEコマンドを発行する。
時点Tnは、T1と同様に、DEVSLP信号がLo(通常電力)からHi(DevSleep)に移行する時点である。
時点Tn+1は、T2と同様に、DEVSLP信号がHi(DevSleep)からLo(通常電力)に移行する時点である。
時点Tn+2は、FCT終了の際の時点である。ストレージ装置113にプログラムやデータが記憶されている場合、ストレージ装置113へのDEVSLP信号がHi(DevSleep)のままでは、プログラムやデータにアクセスできない。そこで、BCPU320は、ストレージ装置113へのDEVSLP信号をLo(通常電力)にした後で、FCTモードから通常モードに移行する。
時点Tn+1は、T2と同様に、DEVSLP信号がHi(DevSleep)からLo(通常電力)に移行する時点である。
時点Tn+2は、FCT終了の際の時点である。ストレージ装置113にプログラムやデータが記憶されている場合、ストレージ装置113へのDEVSLP信号がHi(DevSleep)のままでは、プログラムやデータにアクセスできない。そこで、BCPU320は、ストレージ装置113へのDEVSLP信号をLo(通常電力)にした後で、FCTモードから通常モードに移行する。
次に、図12を用いて、DEVSLP信号テストの際のSATAホスト制御部111の処理を説明する。図12は、DEVSLP信号テストの際のSATAホスト制御部111の処理の一例を示すフローチャートである。
S501において、HCPU301は、インターフェース215を介して、値がHiであるH‐DEVSLP信号を、SATAブリッジ制御部112に送信する。
S502において、HCPU301は、設定された時間だけ待機する。この設定された時間の情報は、予め、レジスタH306に記憶されている。
S503において、HCPU301は、インターフェース215を介して、値がLoであるH‐DEVSLP信号を、SATAブリッジ制御部112に送信する。
S504において、HCPU301は、設定された時間だけ待機する。この設定された時間の情報は、予め、レジスタH306に記憶されている。
S501において、HCPU301は、インターフェース215を介して、値がHiであるH‐DEVSLP信号を、SATAブリッジ制御部112に送信する。
S502において、HCPU301は、設定された時間だけ待機する。この設定された時間の情報は、予め、レジスタH306に記憶されている。
S503において、HCPU301は、インターフェース215を介して、値がLoであるH‐DEVSLP信号を、SATAブリッジ制御部112に送信する。
S504において、HCPU301は、設定された時間だけ待機する。この設定された時間の情報は、予め、レジスタH306に記憶されている。
S505において、HCPU301は、DEVSLP信号テストが完了したか否かを判定する。HCPU301は、例えば、レジスタH306に記憶されているビット列801に含まれるDEVSLP信号テストに対応するビットの値が"1"のままだったら、DEVSLPテストが完了していないと判定し、S501の処理に進む。HCPU301は、例えば、レジスタH306に記憶されているビット列801に含まれるDEVSLP信号テストに対応するビットの値が"0"だったら、DEVSLPテストが完了したと判定し、図12の処理を終了する。
本実施形態では、HCPU301は、S502、S504において、同じ時間(100msec)だけ待機するとしたが、S502とS504とで、異なる時間だけ待機することとしてもよい。また、HCPU301は、S502、S504において、レジスタH306に記憶された情報が示す時間だけ待機するとしたが、予め決定された待ち時間を待機することとしてもよい。
図12の処理により、HCPU301は、インターフェース215を介してSATAブリッジ制御部112に伝達されるDEVSLP信号の値を、Hi/Loで変化させる。SATAブリッジ制御部112が、図12の処理によるDEVSLP信号の変化を検知できたら、SATAホスト制御部111とSATAブリッジ制御部112との間のDEVSLP信号の通信が正常に行われていることになる。
本実施形態では、HCPU301は、S502、S504において、同じ時間(100msec)だけ待機するとしたが、S502とS504とで、異なる時間だけ待機することとしてもよい。また、HCPU301は、S502、S504において、レジスタH306に記憶された情報が示す時間だけ待機するとしたが、予め決定された待ち時間を待機することとしてもよい。
図12の処理により、HCPU301は、インターフェース215を介してSATAブリッジ制御部112に伝達されるDEVSLP信号の値を、Hi/Loで変化させる。SATAブリッジ制御部112が、図12の処理によるDEVSLP信号の変化を検知できたら、SATAホスト制御部111とSATAブリッジ制御部112との間のDEVSLP信号の通信が正常に行われていることになる。
次に、図13を用いてDEVSLP信号テストの際のSATAブリッジ制御部112の処理を説明する。図13の処理において、SATAホスト制御部111と、SATAブリッジ制御部112の間のインターフェース215を介して伝達されるDEVSLP信号のテストが行われる。図13は、DEVSLP信号テストの際のSATAブリッジ制御部112の処理の一例を示すフローチャートである。ここで、図12で説明したように、説明のため、インターフェース215を介して伝達されるDEVSLP信号の値がLo、Hiと変化を繰り返すことを期待しているとして、図13を説明する。
S511において、BCPU320は、タイマ329を初期化する。BCPU320は、タイマ329を用いて、タイムアウトしたか否かを判断する。
S512において、BCPU320は、インターフェース215を介して伝達されるDEVSLP信号の値がHiであるか否かを判定する。BCPU320は、例えば、インターフェース215を介して、入力された信号がHiならば、インターフェース215を介して伝達されるDEVSLP信号の値がHiであると判定して、S516の処理に進む。また、BCPU320は、インターフェース215を介して、入力された信号がHiでないならば、インターフェース215を介して伝達されるDEVSLP信号の値がHiでないと判定して、S513の処理に進む。
S513において、BCPU320は、DEVSLP信号テストが完了したか否かを判定する。BCPU320は、例えば、Get‐FCT‐Statusコマンドを受信した場合、DEVSLP信号テストが完了したと判定し、S515の処理に進む。BCPU320は、例えば、Get‐FCT‐Statusコマンドを受信していない場合、DEVSLP信号テストが完了していないと判定し、S514の処理に進む。
S511において、BCPU320は、タイマ329を初期化する。BCPU320は、タイマ329を用いて、タイムアウトしたか否かを判断する。
S512において、BCPU320は、インターフェース215を介して伝達されるDEVSLP信号の値がHiであるか否かを判定する。BCPU320は、例えば、インターフェース215を介して、入力された信号がHiならば、インターフェース215を介して伝達されるDEVSLP信号の値がHiであると判定して、S516の処理に進む。また、BCPU320は、インターフェース215を介して、入力された信号がHiでないならば、インターフェース215を介して伝達されるDEVSLP信号の値がHiでないと判定して、S513の処理に進む。
S513において、BCPU320は、DEVSLP信号テストが完了したか否かを判定する。BCPU320は、例えば、Get‐FCT‐Statusコマンドを受信した場合、DEVSLP信号テストが完了したと判定し、S515の処理に進む。BCPU320は、例えば、Get‐FCT‐Statusコマンドを受信していない場合、DEVSLP信号テストが完了していないと判定し、S514の処理に進む。
S514において、BCPU320は、タイムアウトしたか否かを判断する。BCPU320は、例えば、タイマ329の経過時間が設定された閾値(例えば、500ミリ秒)以下なら、タイムアウトしていないと判断し、S512の処理に進む。BCPU320は、例えば、タイマ329の経過時間が設定された閾値(例えば、500ミリ秒)を超えているなら、タイムアウトしていると判断し、S515の処理に進む。この設定された閾値の情報は、例えば、レジスタB324に記憶される。メインCPU101は、パネル装置116を介したユーザの操作に基づいて、レジスタB324に記憶されているこの閾値の情報を変更できる。
S515において、BCPU320は、DEVSLP信号テストの結果として、異常が確認されたことを示す情報(例えば、NGを示す情報等)を、レジスタB324等に記憶する。BCPU320は、S513でGet‐FCT‐Statusコマンドを受けている場合、S428と同様に、DEVSLP信号テストの結果である異常が確認されたことを示す情報をGet‐FCT‐Statusコマンドの送信元に送信する。
S516において、BCPU320は、インターフェース215を介して伝達されるDEVSLP信号の値がLoであるか否かを判定する。BCPU320は、例えば、インターフェース215を介して、入力された信号がLoならば、インターフェース215を介して伝達されるDEVSLP信号の値がLoであると判定して、S517の処理に進む。また、BCPU320は、インターフェース215を介して、入力された信号がLoでないならば、インターフェース215を介して伝達されるDEVSLP信号の値がLoでないと判定して、S512の処理に進む。
S515において、BCPU320は、DEVSLP信号テストの結果として、異常が確認されたことを示す情報(例えば、NGを示す情報等)を、レジスタB324等に記憶する。BCPU320は、S513でGet‐FCT‐Statusコマンドを受けている場合、S428と同様に、DEVSLP信号テストの結果である異常が確認されたことを示す情報をGet‐FCT‐Statusコマンドの送信元に送信する。
S516において、BCPU320は、インターフェース215を介して伝達されるDEVSLP信号の値がLoであるか否かを判定する。BCPU320は、例えば、インターフェース215を介して、入力された信号がLoならば、インターフェース215を介して伝達されるDEVSLP信号の値がLoであると判定して、S517の処理に進む。また、BCPU320は、インターフェース215を介して、入力された信号がLoでないならば、インターフェース215を介して伝達されるDEVSLP信号の値がLoでないと判定して、S512の処理に進む。
S517において、BCPU320は、DEVSLP信号テストが完了したか否かを判定する。BCPU320は、例えば、SATAブリッジ制御部112とストレージ装置113、114の間での図14で後述するテストが完了したら、DEVSLP信号テストが完了したと判定し、S519の処理に進む。またBCPU320は、例えば、Get‐FCT‐Statusコマンドを受信した場合、DEVSLP信号テストが完了したと判定し、S519の処理に進むこととしてもよい。BCPU320は、例えば、Get‐FCT‐Statusコマンドを受信していない場合、DEVSLP信号テストが完了していないと判定し、S518の処理に進む。
S518において、BCPU320は、タイムアウトしたか否かを判断する。BCPU320は、例えば、タイマ329の経過時間が設定された閾値(例えば、500ミリ秒)以下なら、タイムアウトしていないと判断し、S516の処理に進む。BCPU320は、例えば、タイマ329の経過時間が設定された閾値(例えば、500ミリ秒)を超えているなら、タイムアウトしていると判断し、S515の処理に進む。この設定された閾値の情報は、例えば、レジスタB324に記憶される。
S519において、BCPU320は、DEVSLP信号テストの結果として、正常であることが確認されたことを示す情報(例えば、OKを示す情報等)を、レジスタB324等に記憶する。BCPU320は、S517でGet‐FCT‐Statusコマンドを受けている場合、S428と同様に、DEVSLP信号テストの結果である正常であることが確認されたことを示す情報をGet‐FCT‐Statusコマンドの送信元に送信する。
S518において、BCPU320は、タイムアウトしたか否かを判断する。BCPU320は、例えば、タイマ329の経過時間が設定された閾値(例えば、500ミリ秒)以下なら、タイムアウトしていないと判断し、S516の処理に進む。BCPU320は、例えば、タイマ329の経過時間が設定された閾値(例えば、500ミリ秒)を超えているなら、タイムアウトしていると判断し、S515の処理に進む。この設定された閾値の情報は、例えば、レジスタB324に記憶される。
S519において、BCPU320は、DEVSLP信号テストの結果として、正常であることが確認されたことを示す情報(例えば、OKを示す情報等)を、レジスタB324等に記憶する。BCPU320は、S517でGet‐FCT‐Statusコマンドを受けている場合、S428と同様に、DEVSLP信号テストの結果である正常であることが確認されたことを示す情報をGet‐FCT‐Statusコマンドの送信元に送信する。
BCPU320は、ストレージ装置113、114との間で、DEVSLP信号テストを行う。即ち、BCPU320は、ストレージ装置113、114との間で、インターフェース216、217を介して、伝達されるDEVSLP信号の値を変化させて、DEVSLP信号の伝達が正常に行われるか否かを確認するテストを行う。それにより、BCPU320は、ストレージ装置113、114又はインターフェース216、217に異常が発生しているか否かを確認する。
また、ストレージ装置の中には、DEVSLP信号の受信機能がないものがある。BCPU320は、そのようなストレージ装置に対して、以下のような処理を行ってもよい。即ち、BCPU320は、ストレージ装置にIdentifyDeviceコマンドを発行し、応答として返ってきたデバイスの特定情報を取得する。そして、BCPU320は、予め、SRAM323、レジスタB324等に記憶されたDEVSLP信号の受信機能を有さないデバイスの特定情報の一覧に基づいて、取得した特定情報に対応するデバイスがDEVSLP信号の受信機能を有するか否かを判定する。そして、BCPU320は、取得した特定情報に対応するデバイスがDEVSLP信号の受信機能を有さないと判定した場合、そのストレージ装置に対するDEVSLP信号テストをスキップすることとしてもよい。
また、ストレージ装置の中には、DEVSLP信号の受信機能がないものがある。BCPU320は、そのようなストレージ装置に対して、以下のような処理を行ってもよい。即ち、BCPU320は、ストレージ装置にIdentifyDeviceコマンドを発行し、応答として返ってきたデバイスの特定情報を取得する。そして、BCPU320は、予め、SRAM323、レジスタB324等に記憶されたDEVSLP信号の受信機能を有さないデバイスの特定情報の一覧に基づいて、取得した特定情報に対応するデバイスがDEVSLP信号の受信機能を有するか否かを判定する。そして、BCPU320は、取得した特定情報に対応するデバイスがDEVSLP信号の受信機能を有さないと判定した場合、そのストレージ装置に対するDEVSLP信号テストをスキップすることとしてもよい。
図14は、DEVSLP信号テストの際のSATAブリッジ制御部112の処理の一例を示すフローチャートである。図14を用いてDEVSLP信号テストの際のSATAブリッジ制御部112の動作をステップ毎に説明する。図14の処理では、SATAブリッジ制御部112と、ストレージ装置113、114との間でインターフェース215、215を介して伝達されるDEVSLP信号をテストが行われる。BCPU320は、ストレージ装置113、114それぞれに対して、図14の処理を実行する。
図14の処理において、BCPU320は、DEVSLPに対応するか否か、又は、ストレージ装置が接続されたか否かに応じて、DEVSLPテストの処理を切り替える。HDDには、磁気ディスク部の寿命を縮める可能性があるため、DEVSLPに対応していないものがある。また、大多数のSSDは、DEVSLPに対応する。
S600において、BCPU320は、ストレージ装置113又は114にIdentifyDeviceコマンドを発行する。S600の処理で発行するIdentifyDeviceコマンドは、図8のIdentifyDeviceコマンド714と同様である。
図14の処理において、BCPU320は、DEVSLPに対応するか否か、又は、ストレージ装置が接続されたか否かに応じて、DEVSLPテストの処理を切り替える。HDDには、磁気ディスク部の寿命を縮める可能性があるため、DEVSLPに対応していないものがある。また、大多数のSSDは、DEVSLPに対応する。
S600において、BCPU320は、ストレージ装置113又は114にIdentifyDeviceコマンドを発行する。S600の処理で発行するIdentifyDeviceコマンドは、図8のIdentifyDeviceコマンド714と同様である。
S601において、BCPU320は、ストレージ装置113又は114からのIdentifyDeviceコマンドに対する応答に応じて、処理を分岐する。BCPU320は、IdentifyDeviceコマンドに対する応答として、ストレージ装置113又は114の型番(Model Number)を取得する。そして、BCPU320は、取得した型番と、非図示の型番リストと比較して、取得した型番に対応するストレージ装置がHDDかSSDかを判断する。非図示の型番リストは、ストレージ装置113又は114、Flashメモリ322、SRAM323等に予め記憶される。BCPU320は、取得した型番に対応するストレージ装置をHDDと判断した場合、S602の処理に進む。BCPU320は、取得した型番に対応するストレージ装置をSSDと判断した場合、S610の処理に進む。BCPU320は、取得した型番に対応するストレージ装置を型番リストに載っていないストレージ装置と判断した場合や型番を取得できなかった場合、エラーと判断し、S631の処理に進む。
S602は、BCPU320がS601で取得した型番に対応するストレージ装置をHDDと判断した場合に進むステップである。
S603において、BCPU320は、S600で発行したIdentifyDeviceコマンドに対する応答として取得した型番に対応するストレージ装置がDEVSLPに対応するか否かを判断して、処理を分岐する。BCPU320は、例えば、DEVSLPに対応するHDDの型番リストに基づいて、取得した型番に対応するストレージ装置が、DEVSLPに対応するか否かを判断する。DEVSLPに対応するHDDの型番リストは、ストレージ装置113又は114、Flashメモリ322、SRAM323等に予め記憶される。BCPU320は、取得した型番に対応するストレージ装置がDEVSLPに対応すると判断した場合、S604の処理に進む。BCPU320は、取得した型番に対応するストレージ装置がDEVSLPに対応しないと判断した場合、S606の処理に進む。
S602は、BCPU320がS601で取得した型番に対応するストレージ装置をHDDと判断した場合に進むステップである。
S603において、BCPU320は、S600で発行したIdentifyDeviceコマンドに対する応答として取得した型番に対応するストレージ装置がDEVSLPに対応するか否かを判断して、処理を分岐する。BCPU320は、例えば、DEVSLPに対応するHDDの型番リストに基づいて、取得した型番に対応するストレージ装置が、DEVSLPに対応するか否かを判断する。DEVSLPに対応するHDDの型番リストは、ストレージ装置113又は114、Flashメモリ322、SRAM323等に予め記憶される。BCPU320は、取得した型番に対応するストレージ装置がDEVSLPに対応すると判断した場合、S604の処理に進む。BCPU320は、取得した型番に対応するストレージ装置がDEVSLPに対応しないと判断した場合、S606の処理に進む。
S604において、BCPU320は、DEVSLP動作の間隔(LoとHiとの信号の切り替えの間隔)を設定された値に決定する。この設定された値が示す期間は、S611で後述する設定された値が示す期間よりも長い期間である。
S605において、BCPU320は、タイムアウトまでの期間を設定された値に決定する。この設定された値が示す期間は、S612で後述する設定された値が示す期間よりも長い期間である。
S606において、BCPU320は、ストレージ装置113又は114に対するDEVSLP信号テストをスキップする。そして、BCPU320は、レジスタB324にテスト結果NGを示す情報を記憶する。また、BCPU320は、Get−FCT−Statusコマンドを受けたら、コマンドの発行元に対して、DEVSLP信号テストがSKIPされたことを示す情報を応答する。
S605において、BCPU320は、タイムアウトまでの期間を設定された値に決定する。この設定された値が示す期間は、S612で後述する設定された値が示す期間よりも長い期間である。
S606において、BCPU320は、ストレージ装置113又は114に対するDEVSLP信号テストをスキップする。そして、BCPU320は、レジスタB324にテスト結果NGを示す情報を記憶する。また、BCPU320は、Get−FCT−Statusコマンドを受けたら、コマンドの発行元に対して、DEVSLP信号テストがSKIPされたことを示す情報を応答する。
S610は、BCPU320がS601で取得した型番に対応するストレージ装置をSSDと判断した場合に進むステップである。
S611において、BCPU320は、DEVSLP動作の間隔(LoとHiとの信号の切り替えの間隔)を設定された値に決定する。この設定された値が示す期間は、S604で説明した設定された値が示す期間よりも短い期間である。
S612において、BCPU320は、タイムアウトまでの期間を設定された値に決定する。この設定された値が示す期間は、S605で説明した設定された値が示す期間よりも短い期間である。
SSDは、HDDに比べて、比較的早く、DEVSLPに移行可能である。そのため、BCPU320は、S611、S612において、S604、S605の場合よりも、短い期間を示す値を決定する。
S611において、BCPU320は、DEVSLP動作の間隔(LoとHiとの信号の切り替えの間隔)を設定された値に決定する。この設定された値が示す期間は、S604で説明した設定された値が示す期間よりも短い期間である。
S612において、BCPU320は、タイムアウトまでの期間を設定された値に決定する。この設定された値が示す期間は、S605で説明した設定された値が示す期間よりも短い期間である。
SSDは、HDDに比べて、比較的早く、DEVSLPに移行可能である。そのため、BCPU320は、S611、S612において、S604、S605の場合よりも、短い期間を示す値を決定する。
S613において、BCPU320は、ストレージ装置113又は114に対して、PMREQ_Sコマンドを発行する。BCPU320は、DEVSLPに移行する準備のため、ストレージ装置113又は114がPMREQ_Sコマンドに対して了承を示すコマンドであるPMACKを応答するまで、PMREQ_Sコマンドを発行し続ける。これにより、BCPU320は、ストレージ装置113又は114をSATA規格のSlumber電力制御ステートに移行させる。ストレージ装置113又は114がSlumberステートに移行すると、ストレージ装置113又は114のSATAのPHY(物理層)の電源が切れる。
S614において、BCPU320は、インターフェース216又は217を介して伝達されるDEVSLP信号をHiにすることで、ストレージ装置113又は114をDevSleep電力制御ステートに移行させる。
S615において、BCPU320は、設定された時間、待機することで、S604又はS611で決定した値が示す期間(DEVSLP間隔)を待機する。SSDは、DevSleep電力制御ステートへの移行が、HDDよりも速いので、S604で決定された値が示す期間よりもS611で決定された値が示す期間の方が短い。
S614において、BCPU320は、インターフェース216又は217を介して伝達されるDEVSLP信号をHiにすることで、ストレージ装置113又は114をDevSleep電力制御ステートに移行させる。
S615において、BCPU320は、設定された時間、待機することで、S604又はS611で決定した値が示す期間(DEVSLP間隔)を待機する。SSDは、DevSleep電力制御ステートへの移行が、HDDよりも速いので、S604で決定された値が示す期間よりもS611で決定された値が示す期間の方が短い。
S616において、BCPU320は、ストレージ装置113又は114に対して、コマンドを発行するステップである。BCPU320は、例えば、ストレージ装置113又は114に対して、IdentifyDeviceコマンドを発行する。
S617において、BCPU320は、S616で発行したコマンドの応答に応じて、処理を分岐する。BCPU320は、S616で発行したコマンドに対して、ストレージ装置113又は114から応答があれば、以下のような処理を行う。即ち、BCPU320は、ストレージ装置113又は114がDevSleep電力制御ステートへ移行していないと判断し、S622の処理に進む。また、BCPU320は、S616で発行したコマンドに対して、ストレージ装置113又は114から応答がなければ、以下のような処理を行う。即ち、BCPU320は、ストレージ装置113又は114がDevSleep電力制御ステートへ移行していると判断し、S618の処理に進む。
S618において、BCPU320は、ストレージ装置113又は114を、DevSleep電力制御ステートから通常電力制御ステートに復帰させる。BCPU320は、インターフェース216又は217を介して伝達されるDEVSLP信号をLoにして、ストレージ装置113又は114のPHYの電源を入れる。次に、BCPU320は、ストレージ装置113又は114との間で、OOB(Out of Band)データを送受信し、ストレージ装置113又は114を通常電力制御ステートに復帰させる。
S617において、BCPU320は、S616で発行したコマンドの応答に応じて、処理を分岐する。BCPU320は、S616で発行したコマンドに対して、ストレージ装置113又は114から応答があれば、以下のような処理を行う。即ち、BCPU320は、ストレージ装置113又は114がDevSleep電力制御ステートへ移行していないと判断し、S622の処理に進む。また、BCPU320は、S616で発行したコマンドに対して、ストレージ装置113又は114から応答がなければ、以下のような処理を行う。即ち、BCPU320は、ストレージ装置113又は114がDevSleep電力制御ステートへ移行していると判断し、S618の処理に進む。
S618において、BCPU320は、ストレージ装置113又は114を、DevSleep電力制御ステートから通常電力制御ステートに復帰させる。BCPU320は、インターフェース216又は217を介して伝達されるDEVSLP信号をLoにして、ストレージ装置113又は114のPHYの電源を入れる。次に、BCPU320は、ストレージ装置113又は114との間で、OOB(Out of Band)データを送受信し、ストレージ装置113又は114を通常電力制御ステートに復帰させる。
S619において、BCPU320は、ストレージ装置113又は114に対して、コマンドを発行する。BCPU320は、例えば、ストレージ装置113又は114に対して、IdentifyDeviceコマンドを発行する。
S620において、BCPU320は、S619で発行したコマンドに対する応答に応じて、処理を分岐する。BCPU320は、応答がなければ、ストレージ装置113又は114が通常電力制御ステートに復帰しておらず、DevSleep電力制御ステートのままであると判断し、S622の処理に進む。BCPU320は、応答があれば、ストレージ装置113又は114が通常電力制御ステートに復帰できたと判断し、S621の処理に進む。
S621において、BCPU320は、DEVSLP信号テストの結果がOKであるとして、DEVSLP信号テストの結果がOKであることを示す情報をレジスタB324等に記憶する。BCPU320は、Get−FCT−Statusコマンドを受けたら、DEVSLP信号テストの結果がOKであることを示す情報を応答する。
S622において、BCPU320は、DEVSLP信号テストの結果がNGであるとして、DEVSLP信号テストの結果がNGであることを示す情報をレジスタB324等に記憶する。BCPU320は、Get−FCT−Statusコマンドを受けたら、DEVSLP信号テストの結果がNGであることを示す情報を応答する。
S620において、BCPU320は、S619で発行したコマンドに対する応答に応じて、処理を分岐する。BCPU320は、応答がなければ、ストレージ装置113又は114が通常電力制御ステートに復帰しておらず、DevSleep電力制御ステートのままであると判断し、S622の処理に進む。BCPU320は、応答があれば、ストレージ装置113又は114が通常電力制御ステートに復帰できたと判断し、S621の処理に進む。
S621において、BCPU320は、DEVSLP信号テストの結果がOKであるとして、DEVSLP信号テストの結果がOKであることを示す情報をレジスタB324等に記憶する。BCPU320は、Get−FCT−Statusコマンドを受けたら、DEVSLP信号テストの結果がOKであることを示す情報を応答する。
S622において、BCPU320は、DEVSLP信号テストの結果がNGであるとして、DEVSLP信号テストの結果がNGであることを示す情報をレジスタB324等に記憶する。BCPU320は、Get−FCT−Statusコマンドを受けたら、DEVSLP信号テストの結果がNGであることを示す情報を応答する。
S631は、BCPU320がS601で取得した型番が型番リストになかった場合やS601で型番を取得できなかった場合に進むステップである。
S632において、BCPU320は、DEVSLP信号テストの結果をNGであるとして、DEVSLP信号テストの結果がNGであることを示す情報をレジスタB324等に記憶する。BCPU320は、Get−FCT−Statusコマンドを受けたら、DEVSLP信号テストの結果がNGであることを示す情報を応答する。
BCPU320は、S606、S621、S622、S632で、DEVSLP信号テストの結果を示す情報を応答する際、図8で説明したように拡張ATAコマンドを介して応答してもよい。また、BCPU320は、図7で説明したようにレジスタB324を介して、DEVSLP信号テストの結果を通知先に通知してもよい。
S632において、BCPU320は、DEVSLP信号テストの結果をNGであるとして、DEVSLP信号テストの結果がNGであることを示す情報をレジスタB324等に記憶する。BCPU320は、Get−FCT−Statusコマンドを受けたら、DEVSLP信号テストの結果がNGであることを示す情報を応答する。
BCPU320は、S606、S621、S622、S632で、DEVSLP信号テストの結果を示す情報を応答する際、図8で説明したように拡張ATAコマンドを介して応答してもよい。また、BCPU320は、図7で説明したようにレジスタB324を介して、DEVSLP信号テストの結果を通知先に通知してもよい。
以上、本実施形態では、メインコントローラ100は、ストレージ装置113、114とカスケード接続されたSATAホスト制御部111、SATAブリッジ制御部112、に対して、異常を検出するためのテストの実行を指示することとした。SATAホスト制御部111、SATAブリッジ制御部112は、SATA差動信号テストやDEVSLP信号テスト等の設定されたテストを実行する。そして、メインコントローラ100は、SATAホスト制御部111、SATAブリッジ制御部112から、テストの実行結果を取得する。これにより、メインコントローラ100は、異常が発生している箇所を把握することができる。
本実施形態では、DEVSLP信号テストは、デバイス間で伝達されるDEVSLP信号を一旦、Hiにし、その後、DEVSLP信号をLoにすることにより行われるテストであるとした。しかし、DEVSLP信号テストは、デバイス間で伝達されるDEVSLP信号を少なくとも1回以上、変化させるテストであれば、他のテストでもよい。
本実施形態では、メインコントローラ100は、SATAホスト制御部111、SATAブリッジ制御部112から、テストの実行結果を取得することとした。しかし、メインCPU101は、取得したテストの実行結果に基づいて、異常が発生している箇所を特定することとしてもよい。例えば、SATAホスト制御部111とSATAブリッジ制御部112とが、FCTモードにおいて、SATA差動信号テストを実行した場合、メインCPU101は、SATA差動信号テストの結果を取得する。そして、メインCPU101は、SATAホスト制御部111から取得したテストの結果が、異常が検出されたことを示す結果である場合、H‐Host‐IF206又はSATAブリッジ制御部112に異常が発生していることを特定する。また、メインCPU101は、SATAホスト制御部111から取得したテストの結果が、異常がないことを示し、SATAブリッジ制御部112から取得したテストの結果が、ストレージ装置113について、異常があることを示す場合、以下の処理を行う。即ち、メインCPU101は、B‐Host1‐IF207又はストレージ装置113に異常が発生していることを特定する。
また、メインCPU101は、ストレージ装置とカスケード接続されているデバイスそれぞれから取得したテストの結果の何れかが異常があることを示す結果である場合、以下のような処理を行うこととしてもよい。即ち、メインCPU101は、ストレージ装置とカスケード接続されているデバイスが設置されているメインボードに異常が発生していることを特定することとしてもよい。
このような処理により、メインコントローラ100は、異常が発生している箇所を特定することができる。また、メインコントローラ100は、特定した異常が発生している箇所を示す情報を、表示装置に表示したり、ストレージ装置113、114等に記憶したりして、出力してもよい。
本実施形態では、メインCPU101は、ストレージ装置113、114が末端となるようにカスケード接続されたSATAホスト制御部111とSATAブリッジ制御部112との2つのデバイスに対して、FCTモードへの移行を指示した。しかし、メインCPU101は、ストレージ装置113、114が末端となるようにカスケード接続された1つのデバイスに対して、FCTモードへの移行を指示して、そのデバイスからテスト結果を取得することとしてもよい。また、メインCPU101は、ストレージ装置113、114が末端となるようにカスケード接続された3つ以上のデバイスに対して、FCTモードへの移行を指示して、それらのデバイスからテスト結果を取得することとしてもよい。
本実施形態では、DEVSLP信号テストは、デバイス間で伝達されるDEVSLP信号を一旦、Hiにし、その後、DEVSLP信号をLoにすることにより行われるテストであるとした。しかし、DEVSLP信号テストは、デバイス間で伝達されるDEVSLP信号を少なくとも1回以上、変化させるテストであれば、他のテストでもよい。
本実施形態では、メインコントローラ100は、SATAホスト制御部111、SATAブリッジ制御部112から、テストの実行結果を取得することとした。しかし、メインCPU101は、取得したテストの実行結果に基づいて、異常が発生している箇所を特定することとしてもよい。例えば、SATAホスト制御部111とSATAブリッジ制御部112とが、FCTモードにおいて、SATA差動信号テストを実行した場合、メインCPU101は、SATA差動信号テストの結果を取得する。そして、メインCPU101は、SATAホスト制御部111から取得したテストの結果が、異常が検出されたことを示す結果である場合、H‐Host‐IF206又はSATAブリッジ制御部112に異常が発生していることを特定する。また、メインCPU101は、SATAホスト制御部111から取得したテストの結果が、異常がないことを示し、SATAブリッジ制御部112から取得したテストの結果が、ストレージ装置113について、異常があることを示す場合、以下の処理を行う。即ち、メインCPU101は、B‐Host1‐IF207又はストレージ装置113に異常が発生していることを特定する。
また、メインCPU101は、ストレージ装置とカスケード接続されているデバイスそれぞれから取得したテストの結果の何れかが異常があることを示す結果である場合、以下のような処理を行うこととしてもよい。即ち、メインCPU101は、ストレージ装置とカスケード接続されているデバイスが設置されているメインボードに異常が発生していることを特定することとしてもよい。
このような処理により、メインコントローラ100は、異常が発生している箇所を特定することができる。また、メインコントローラ100は、特定した異常が発生している箇所を示す情報を、表示装置に表示したり、ストレージ装置113、114等に記憶したりして、出力してもよい。
本実施形態では、メインCPU101は、ストレージ装置113、114が末端となるようにカスケード接続されたSATAホスト制御部111とSATAブリッジ制御部112との2つのデバイスに対して、FCTモードへの移行を指示した。しかし、メインCPU101は、ストレージ装置113、114が末端となるようにカスケード接続された1つのデバイスに対して、FCTモードへの移行を指示して、そのデバイスからテスト結果を取得することとしてもよい。また、メインCPU101は、ストレージ装置113、114が末端となるようにカスケード接続された3つ以上のデバイスに対して、FCTモードへの移行を指示して、それらのデバイスからテスト結果を取得することとしてもよい。
<その他の実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではない。
例えば、上述したメインコントローラ100の機能構成の一部又は全てをハードウェアとしてメインコントローラ100に実装してもよい。
例えば、上述したメインコントローラ100の機能構成の一部又は全てをハードウェアとしてメインコントローラ100に実装してもよい。
100 メインコントローラ
111 SATAホスト制御部
112 SATAブリッジ制御部
111 SATAホスト制御部
112 SATAブリッジ制御部
Claims (10)
- メイン制御部と、末端にストレージ装置が接続されるように前記ストレージ装置とカスケード接続された制御部と、を含む情報処理装置であって、
前記メイン制御部は、
前記制御部に対して、異常を検出するテストを行う診断モードへの移行を指示する指示手段と、
前記指示手段による指示に応じて前記診断モードに切り替わった前記制御部で実行されたテストの結果を取得する取得手段と、
を有する情報処理装置。 - 前記制御部は、第1の制御部と、前記第1の制御部及び前記ストレージ装置と接続された第2の制御部と、であり、
前記第1の制御部は、
前記メイン制御部からの前記診断モードへの移行の指示に応じて、前記診断モードに移行し、前記第1の制御部と前記第2の制御部とを繋ぐインターフェース又は前記第2の制御部に生じた異常を検出するテストを実行する第1のテスト手段を有し、
前記第2の制御部は、
前記メイン制御部からの前記診断モードへの移行の指示に応じて、前記診断モードに移行し、前記第2の制御部と前記ストレージ装置とを繋ぐインターフェース又は前記ストレージ装置に生じた異常を検出するテストを実行する第2のテスト手段を有する請求項1記載の情報処理装置。 - 前記第1のテスト手段は、前記メイン制御部からの前記診断モードへの移行の指示に応じて、前記診断モードに移行し、前記第2の制御部との間で差動信号を用いた通信を正常に行うことができるか否かを確認することで、前記第1の制御部と前記第2の制御部とを繋ぐインターフェース又は前記第2の制御部に生じた異常を検出するテストを実行し、
前記第2のテスト手段は、前記メイン制御部からの前記診断モードへの移行の指示に応じて、前記診断モードに移行し、前記ストレージ装置との間で差動信号を用いた通信を正常に行うことができるか否かを確認することで、前記第2の制御部と前記ストレージ装置とを繋ぐインターフェース又は前記ストレージ装置に生じた異常を検出するテストを実行する請求項2記載の情報処理装置。 - 前記第1のテスト手段は、前記メイン制御部からの前記診断モードへの移行の指示に応じて、前記診断モードに移行し、前記第2の制御部との間で省電力モードへの移行を指示する信号の通信を正常に行うことができるか否かを確認することで、前記第1の制御部と前記第2の制御部とを繋ぐインターフェース又は前記第2の制御部に生じた異常を検出するテストを実行し、
前記第2のテスト手段は、前記メイン制御部からの前記診断モードへの移行の指示に応じて、前記診断モードに移行し、前記ストレージ装置との間で前記省電力モードへの移行を指示する信号の通信を正常に行うことができるか否かを確認することで、前記第1の制御部と前記第2の制御部とを繋ぐインターフェース又は前記ストレージ装置に生じた異常を検出するテストを実行する請求項2記載の情報処理装置。 - 前記第2の制御部は、
前記診断モードであり、前記ストレージ装置を省電力モードへ移行させる指示を受付けた場合、前記ストレージ装置を、前記省電力モードに移行させないように制御する制御手段を更に有する請求項4記載の情報処理装置。 - 前記メイン制御部は、
前記取得手段により取得された前記制御部で実行されたテストの結果を出力する出力手段を更に有する請求項1乃至5何れか1項記載の情報処理装置。 - 前記情報処理装置は、印刷装置である請求項1乃至6何れか1項記載の情報処理装置。
- デバイスであって、
異常を検出するテストを行う診断モードへの移行の指示に応じて、前記診断モードに移行し、異常を検出するテストを実行するテスト手段と、
前記診断モードであり、前記デバイスと接続されたストレージ装置を省電力モードへ移行させる指示を受付けた場合、前記ストレージ装置を前記省電力モードに移行させないように制御する制御手段と、
有するデバイス。 - メイン制御部と、末端にストレージ装置が接続されるように前記ストレージ装置とカスケード接続された制御部と、を含む情報処理装置が実行する情報処理方法であって、
前記メイン制御部が、前記制御部に対して、異常を検出するテストを行う診断モードへの移行を指示する指示ステップと、
前記メイン制御部が、前記指示ステップでの指示に応じて前記診断モードに切り替わった前記制御部で実行されたテストの結果を取得する取得ステップと、
を含む情報処理方法。 - コンピュータを、請求項1記載の情報処理装置の各手段として、機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016191832A JP2018055472A (ja) | 2016-09-29 | 2016-09-29 | 情報処理装置、デバイス、情報処理方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016191832A JP2018055472A (ja) | 2016-09-29 | 2016-09-29 | 情報処理装置、デバイス、情報処理方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018055472A true JP2018055472A (ja) | 2018-04-05 |
Family
ID=61833052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016191832A Pending JP2018055472A (ja) | 2016-09-29 | 2016-09-29 | 情報処理装置、デバイス、情報処理方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018055472A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019200709A (ja) * | 2018-05-18 | 2019-11-21 | キヤノン株式会社 | ストレージシステム及びその制御方法、プログラム、並びに記憶制御システム |
-
2016
- 2016-09-29 JP JP2016191832A patent/JP2018055472A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019200709A (ja) * | 2018-05-18 | 2019-11-21 | キヤノン株式会社 | ストレージシステム及びその制御方法、プログラム、並びに記憶制御システム |
JP7179489B2 (ja) | 2018-05-18 | 2022-11-29 | キヤノン株式会社 | ストレージシステム及びその制御方法、プログラム、並びに記憶制御システム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9075752B2 (en) | Information processing apparatus that detects startup error, method of controlling the same, and storage medium | |
JP2011197952A (ja) | 情報処理装置、画像形成装置及び情報処理プログラム | |
TWI759719B (zh) | 快閃記憶體控制器及用於快閃記憶體控制器的方法 | |
JP2013197677A (ja) | 画像処理装置、画像形成装置、異常管理処理方法及び異常管理処理プログラム | |
JP2018116648A (ja) | 情報処理装置、その制御方法、及びプログラム | |
JP2008158799A (ja) | ストレージ装置、ストレージ装置の制御方法、及びストレージ装置の制御プログラム | |
US10564700B2 (en) | Image forming apparatus and power control method for image forming apparatus | |
JP2010282607A (ja) | 通信装置、通信装置の制御方法、プログラムおよび記憶媒体 | |
JP6141240B2 (ja) | 印刷装置、印刷装置に接続されたストレージの制御装置、印刷装置の制御方法及びプログラム | |
TW202331540A (zh) | 主機裝置 | |
JP2010099907A (ja) | 表示制御装置、表示制御システム、プログラムおよび画像印刷装置 | |
US11144109B2 (en) | Apparatus, method, and storage medium for controlling a power saving state in a SATA storage system | |
JP2014026373A (ja) | 情報処理装置、情報処理装置の制御方法、及びプログラム | |
CN110268393B (zh) | 通信装置、通信方法、程序和通信系统 | |
US11204632B2 (en) | Electronic device and method for controlling the same | |
JP2018055472A (ja) | 情報処理装置、デバイス、情報処理方法及びプログラム | |
US10795423B2 (en) | Electronic apparatus with power saving mode, control method thereof, and storage medium | |
JP5775367B2 (ja) | 情報処理装置及びその制御方法と、ミラーリングシステム及びraid制御装置 | |
JP2013120545A (ja) | 画像形成装置 | |
CN115407941A (zh) | 一种vmd功能启动方法及其相关组件 | |
US11095778B2 (en) | Storing and outputting log for failure analysis in image forming apparatus equipped with SATA system, control method therefor, and storage medium | |
JP2020094857A (ja) | 検査システム | |
JP2021082003A (ja) | 情報処理装置 | |
JP7543817B2 (ja) | 電子機器、電子機器の制御方法および電子機器の制御プログラム | |
JP6415633B2 (ja) | 情報処理装置及びその制御方法 |