以下、本実施形態を実施するための形態について図面を用いて説明する。
図1は、印刷装置におけるメインコントローラ120のシステム構成例である。メインCPU(中央処理演算器)101は、システム制御や各種演算処理を行う。メモリ制御部102は、各種メモリデバイスへの入出力制御やDMA(ダイレクト・メモリ・アクセス)制御を行う。FLASHメモリ103は、書き換え可能な不揮発性メモリであり、システム全体の制御プログラムや制御パラメータ等が格納される。DRAM(ダイナミック・ランダム・アクセス・メモリ)104は、DDR(Double−Data−Rate)メモリに代表される揮発性の書き換え専用メモリである。プログラムの作業領域や印刷データの格納領域、各種テーブル情報格納領域等の用途に用いられる。ここで、前記メモリ制御部102と各種メモリデバイスとの関係は、簡略化して表現したものであって、一般的には独立に制御される。LAN−IF制御部105は、印刷装置に接続されるローカル・エリア・ネットワーク106との入出力制御を行う。一般的にはTCP/IP(Transmission Control Protocol/Internet Protocol)プロトコルに対応する。ネットワークケーブルを介して外部HOSTコンピュータ107などのネットワーク対応機器と接続され、ネットワーク経由でのプリントを行うことができる。Reader‐IF制御部108は、スキャナ装置109との通信制御を行う。前記スキャナ装置109によってスキャンした入力画像データを印字させることでコピー機能を実現する。画像処理部110は、前記LAN−IF制御部105、Reader‐IF制御部108を介して取り込んだ画像データに対して各種画像処理を行う。SATAホスト制御部111は、SATA(Serial Advanced Technology Attachment)規格に準拠したIFを有するデバイスとのデータ入出力制御を行う。SATAブリッジ制御部112は、上流側として前記SATAホスト制御部111にデバイスとして接続され、下流側としては複数のHost‐IFを有し、HDD又はSSD113、114と接続される。前記SATAブリッジ制御部112では、RAID制御やデータ暗号化など付加価値としての機能が搭載されている。本実施例では、前記SATAホスト制御部111とSATAブリッジ制御部112は、それぞれ独立したASIC(特定用途向け集積回路)としてメインコントローラ120に搭載されていることを前提として説明を行う。パネルIF制御部115は、パネル装置116との通信制御を行う。ここでは図示しないがUI(ユーザ・インターフェイス)として、パネル上の液晶画面表示やボタン等を操作することにより印刷装置の各種設定及び状態の確認ができる。ビデオ出力IF部117は、印字部5000とのコマンド/ステータスの通信制御や印刷データの転送を行う。印字部5000は、ここでは図示しないが印刷装置本体と給紙系及び排紙系から構成され、主に前記ビデオ出力IF部117からのコマンド情報に従い、印刷データを紙に印刷する。メインバス119はバスコントローラ含み、制御バス、データバス及び任意ブロック間のローカルバスを便宜的にまとめて表現したものである。代表例としてPCIe(PCI Express)やASICの内部バスなども含まれる。
図1の印刷装置1000がOFF状態とは、図14の1400が示すようにメインコントローラとプリンタエンジンコントローラ118に電源が入っていない状態である。図14は一例であり、本実施形態はこれに限られない。当業者であれば、図14の図面が削除された状態でも本実施形態が成立することは理解するであろう。図1の印刷装置はOFF状態で、パネル装置116からパネル装置116付近の電源スイッチがユーザの操作で押下されて電源制御部へ指示がいった場合、印刷装置1000は、STANDBY状態1402に遷移する。また、SLEEP状態1403、DEEP状態1404で、パネル装置116やNetwork106経由でジョブの実行要求を受け付けた場合にも、STANDBY状態1402に遷移する。DEEP状態は、DEEPSLEEP状態の略である。
STANDBY状態1402では、図1に示す印刷装置1000としては、ジョブの実行指示も印字部500やプリンタエンジンコントローラ118の情報に対する問合せも受付可能な状態である。そのため、メインコントローラ120もプリンタエンジンコントローラ118も、いつでもジョブの受付が可能であるように必要な所定の初期化動作を行っておく必要がある。以下、プリンタエンジンコントローラを単にエンジンコントローラともいう。OFF状態1401やDEEP状態1404からSTANDBY状態1402に遷移する場合、メインコントローラ120は、プリンタエンジンコントローラ118の電源を投入する。
この時、メインコントローラ120は、プリンタエンジンコントローラ118に対して、キャリブレーション等の初期化動作を伴う起動を要求する。このために、メインコントローラ120とプリンタエンジンコントローラ118間の物理的な特定の信号線を用いて指示を行う。このように起動制御情報を確定するための物理的な信号線を、以降LIVEWAKE信号線Lと呼ぶ。つまり、LIVEWAKE信号線Lは、起動制御情報が反映されると、オンまたはオフとなる信号線である。
メインコントローラ120は、LIVEWAKE信号線Lを予めOFFに設定した上で、プリンタエンジンコントローラ118の電源をONにしてもよい。これにより、プリンタエンジンコントローラ118に対して、キャリブレーション等の初期化動作を伴う起動を要求することが可能となる。
プリンタエンジンコントローラ118は、電源が投入された場合に、まずLIVEWAKE信号線Lの状態を確認し、OFFに設定されていた場合は、キャリブレーション等の初期化動作を伴う起動処理を実行する。
印刷装置1000は、STANDBY状態1402で、パネル装置116が一定時間操作されなかった場合、SLEEP状態1403に遷移する。なお、DEEP状態1404でNetwork106を経由して印字部500やプリンタエンジンコントローラ118の情報に対する問合せが行われると、SLEEP状態1403に遷移する。
SLEEP状態は、印刷装置1000としては、ジョブの実行指示は受付不可であり、プリンタエンジン10000の情報に対する問合せのみ受付可能な状態である。基本的には、画像処理部110、プリンタエンジンコントローラ118、印字部5000、スキャナ装置109、Reader IF部108、Flashメモリ103、メインCPU101、パネル装置116のバックライなどをOFFにする。また、メインコントローラ120もプリンタエンジンコントローラ118もSLEEP状態では、STANDBY状態1402と比較して必要な処理も限定される。このため、STANDBY状態1402よりも電力を落とした状態で起動している。ただし、LAN−IF部105と、DRAM104、パネル装置116のユーザからの入力を検知する部分は通電しておく。プリンタエンジンコントローラ118は、印字部5000に対して制御を行なうコントローラである。印字部5000は、トナー等を用紙に出力する機構である。プリンタエンジンコントローラー118は、印刷する画像イメージ等やフレームデータを作り、それを印字部5000へ送る。
DEEP状態1404からSLEEP状態1402に遷移する場合、メインコントローラ120は、プリンタエンジンコントローラ118の電源を投入する。
この場合、メインコントローラ120は、プリンタエンジンコントローラ118に対して、キャリブレーション等の初期化動作を伴わない起動を要求する。このために、LIVEWAKE信号線Lを予めONに設定した上で、プリンタエンジンコントローラ118の電源をONにする。プリンタエンジンコントローラ118は、電源が投入された場合に、まずLIVEWAKE信号線Lの状態を確認し、ON状態に設定されていた場合は、キャリブレーション等の初期化動作を伴わない起動処理を実行する。
このようにLIVEWAKE信号線Lを用いる。これにより、プリンタエンジンコントローラ118は、印刷装置1000がSTANDBY状態1402の場合に必要な初期化処理と、SLEEP状態1403の場合に必要な初期化処理とを区別して実行させることが可能となる。そこで、LAN−IF部105や、パネル装置部116の所定の入力部において入力を検出した場合、不図示の信号線を用いて、LAN−IF部105や、パネル装置部116から電源制御部209へ通知される。電源制御部は、必要に応じてメインCPU101へ電源供給を行ったり、必要なIF部へ電源を供給したりする。
印刷装置1000が、STANDBY状態1402やSLEEP状態1403で一定時間何も操作されなかった場合、印刷装置1000は、DEEPSLEEP状態1404に遷移する。DEEPSLEEP状態1404は、印刷装置1000自体の電力を可能な限り落した状態である。メインコントローラの主要部はもちろん、メインCPU101も、ジョブを検出可能な部分のみの通電を行い、装置全体の電力を非常に少ない電力状態にすることができる。例えば、パネル装置116におけるユーザ入力部分および、LAN−IF部106の所定の制御回路のみに通電してもよい。DEEP状態に入った印刷装置1000においては、LAN−IF部105で検知されたイベントや、パネル装置116から所定のユーザの入力があったことに応じて、SLEEP状態へ復帰することができる。
具体的にはメインCPU101は印刷装置1000の状態をフラッシュメモリ103に保存し、メインコントローラ120と、プリンタエンジンコントローラ118の電源供給を停止して電力を可能な限り削減する。この時、メインCPU101自身も動作しなくなるが、スリープ時電力がハード的にONにされ、ジョブや問合せが来たことだけが所定の回路により検出できる省電力の状態となる。
このようにして、ユーザの利用状況やデバイスの設定(SLEEP状態、DEEP状態への移行時間)に基づき、印刷装置1000の電力状態が遷移する。これに伴ってメインコントローラ120やプリンタエンジンコントローラ118の電力状態も変化している。このように、SATAホスト制御部から見て上位の印刷装置の省電力ステータスは、SLEEP、DEEP(DEEPSLEEP),STANBYなどと定義される。
図2は、SATAブリッジ構成としての接続例を示す図である。メインASIC201は、前記SATAホスト制御部111を含む前記メインコントローラ120のシステム全体を制御する中心的なASICである。前記SATAホスト制御部111は、1個のSATA‐IP(Intellectual Property)202をホストIFとして持つ。サブASICは、前記SATAブリッジ制御部112そのものであり、メインコントローラ120上に独立したIC(Integrated Circuit)として実装されている。前記SATAブリッジ制御部112は3個のSATA−IP203〜205を持つ。ブリッジ構成での上流側はSATA‐IP(Host)202がH‐Host‐IF206を介してSATA‐IP(Device)203と接続されている。下流側はSATA‐IP(Host1)204がB‐Host1‐IF207を介してHDD/SSD113と、SATA‐IP(Host2)205がB‐Host2‐IF208を介してHDD/SSD114と接続されている。ここで、前記SATA‐IP202〜205とは、SATAリンク層及び物理層から構成される。さらに、各種SATAレジスタの設定に応じてSATA−IF206〜208で接続されるSATAデバイスに対して物理的な(電気信号としての)SATA規格のコマンド発行(省電力に関するコマンドを含む)やステータス受信を行う。
また、前記SATAブリッジ制御部112は、電源制御部209と制御信号214で接続されている。なお、前記電源制御部209はメインボード上に搭載され、前記メインコントローラ120に含まれる各機能モジュールやそれに接続される各種装置への電力供給の有無を決定し、印刷装置システム全体としての電源制御を担っている。前記電源制御部209から出ている一点斜線210や213は、システム全体の部分であるSATAブリッジ部の各構成要素に対する電源ラインを示したものである。
なお、本実施例ではSATAホスト制御部111とブリッジ制御部112間のIFを1個、SATAブリッジ制御部112と双方向接続されたHDD/SSD113、114間のIFを2個として説明する。各IFの数は任意個数の接続形態であっても構わない。
図12は、図2で接続構成を説明した前記SATAブリッジ制御部112と電源制御部209間のHDD/SSD電源制御を行う前記制御信号214を分解して、より詳細に示した図である。制御信号IN1205は、前記SATAブリッジ制御部112への入力信号、OUTA1201及びOUTB1202は、前記電源制御部209への出力信号である。また、前記電源制御部209からはHDD/SSDへ電力を供給する電源回路1204への電力供給を許可するEN信号1203が出力されている。前記電源回路1204の例として、ここでは図示しないがDC−DC電源(直流入力直流出力電源)やFET(電界効果トランジスタ)などが挙げられる。前記EN信号1203は、IN1205と接続されていて、HDD/SSDへの電力供給状態、すなわち、電源OFFかONかの判定用モニタ信号としてSATAブリッジ制御部112に入力されている。前記OUTA1201及びOUTB1202は、HDD/SSD電源をOFF/ONするための電源制御部209への要求信号である。
図13は、前記制御信号IN1205、OUTA1201及びOUTB1202のタイミングチャート例を示した図である。全ての信号は、(1)1304の開始点でLowレベル開始から処理されることを前提としている。前記IN1205は、HDD/SSD電源のOFF又はON状態を示すモニタ信号であり、起動後(2)1305の時点でHDD電源ONとなったことを表している。OUTA1201は、前記電源制御部209に対してHDD/SSD電源のOFF又はON要求を行う有効期間を示す信号である。本信号がHiの区間、すなわち、(3)1306〜(5)1308の区間が電源制御部209に対してHDD/SSD電源のOFF又はONを要求する期間である。OUTB1202は、HDD/SSD電源に対するON又はOFF要求を行う信号である。Hi区間でON要求、Low区間でOFF要求を示している。図13の例では、開始点(3)1306ではOUTA=Hi、OUTB=LowなのでHDD電源OFFされ、その期間はOUTB=Hiとなる(4)1307までの区間である。区間(3)1306〜(4)1307では、モニタ信号であるIN=Lowとなっていて、確かにHDD/SSD電源はOFFされているのが読み取れる。同様にOUTA=Hiの有効期間にOUTB1202をHi/Lowさせた結果に連動して、IN1205がHi/Lowしているのが分かる。なお、図12及び図13を用いて説明した例では、モニタ信号であるIN1205及び電源OFF/ON要求信号であるOUTB1202は1対1の関係であった。しかし、SATAブリッジ制御部112に接続される複数のストレージデバイスのそれぞれに対してモニタ信号(=電源EN信号):INnと電源OFF/ON要求信号:OUTBn(n≧2)として、同一番号nを対応させて個別に制御しても構わない。
図3は、SATAホスト制御部111及びSATAブリッジ制御部112の内部構成例を示す図である。HCPU301は、SATAコマンド発行処理、送受信データの転送処理及びステータス受信処理等SATAコントローラとしての全般的な制御を行う。メモリ制御部302は、Flashメモリ303やSRAM(スタティック・ランダム・アクセス・メモリ)304との入出力制御を行う。Flashメモリ303には、ブートプログラムやSATAコントローラとしての制御プログラムが格納されている。SRAM304には前記HCPU301の作業領域、各種制御テーブルやパラメータ格納領域及びデータバッファなどに使用される。ここで、SRAM304は1ポートRAM、2ポートRAM、FIFO(First‐IN First‐OUT)メモリ等の制御を簡略化して記載しているのであって、それぞれ独立に制御され複数個所にSRAMが存在しても構わない。割り込み制御部305は、前記HCPU301に対する割り込み信号の入力や出力処理、前記割り込み信号に対するマスク処理などを行う。レジスタH306は、省電力関連の制御パラメータなどを一時的に記憶するためのレジスタである。DMAC(ダイレクト・メモリ・アクセス・コントローラ)307は、ここでは図示しないが前記HCPU301によって所定のレジスタに転送元及び転送先の先頭アドレス及びサイズが設定され、起動が掛けられると所定のメモリ間でデータ転送を行う。Hバス308はバスコントローラ含み、制御バス、データバス及び任意ブロック間のローカルバスを便宜的にまとめて表現したものである。バスブリッジ回路309は、前記メインバス119とHバス308間のバスプロトコルを相互に変換するバスブリッジ回路である。
BCPU310は、SATAコマンド発行処理、送受信データの転送処理及びステータス受信処理等SATAコントローラとしての全般的な制御を行う。メモリ制御部311は、Flashメモリ312やSRAM313との入出力制御を行う。Flashメモリ312には、ブートプログラムやSATAコントローラとしての制御プログラムが格納されている。SRAM313には前記BCPU310の作業領域、各種制御テーブルやパラメータ格納領域及びデータバッファなどに使用される。ここで、SRAM313は1ポートRAM、2ポートRAM、FIFOメモリ等の制御を簡略化して記載しているのであって、それぞれ独立に制御され複数個所にSRAMが存在しても構わない。レジスタB314は、省電力関連の制御パラメータなどを一時的に記憶するためのレジスタである。電源IF部315は、前記電源制御部209と制御信号214で接続され、HDD/SSD113、114への電源OFF/ON要求信号の制御を行う。Others316は、SATAブリッジ制御部112としての他の機能ブロック、例えば前記RAID処理やデータ暗号化処理等をまとめて示したものである。Bバス317はバスコントローラ含み、制御バス、データバス及び任意ブロック間のローカルバスを便宜的にまとめて表現したものである。また、図2で説明したようにSATAホスト制御部111のSATA‐IP(Host)202とSATAブリッジ制御部112のSATA‐IP(Device)203とは、H‐Host‐IF206とで接続されている。さらにSATA‐IP(Host1/2)204及び205はB‐Host1/2‐IF207及び208を介して、HDD/SSD113及び114とに接続されている。
図4は、PS0〜PS2のSATA系省電力状態種類及び設定内容を示す図である。図4では、前記メインコントローラ120での電力状態に関する情報の一例である電力ステートを横軸に、SATA系省電力状態に関する情報の一例として、と省電力移行条件を縦軸として図示したものである。これらの中の必要な情報が、メモリに記憶されるようにしてもよい。図4の第1行目は、印刷装置全体としての上位電力ステート401を示しており、消費電力が高い順にStandbyモード402、Sleepモード403、Deepモード404と定義する。前記Standbyモード402は、印刷装置が直ちにジョブを受け付け可能な状態である。前記Sleepモード403及びDeepモード404は、印刷装置の省電力状態であり、ジョブ実行をしていない期間の待機電力削減を目的とする。特にDeepモード404は、大半部分の電力供給をカットした状態であり、この状態ではSATA系は全て電源OFF状態であることを想定している。本実施形態では、「SATA系」とは、SATA規格に従うIPコア、インタフェース、デバイスを原則意味する。すなわち、例えば、図の202乃至208で示される、インタフェースおよびIPコアをいう。また、「SATA系」には、SATA対応デバイスの一例であるHDD/SSDを含む。HDD/SSDは、113および114で示される。SATA制御部は、前述の回路を包含するが、ひとつの回路からなる場合もあれば、複数の回路からなる。本実施形態では、図1、図2、図3、図12に記載されている各モジュールは、前述または後述する処理を実行するハードウェア回路により実装されている。ハードウェア回路の実装方法はさまざまである。本実施形態に開示される二つ以上の回路がひとまとめにされてもよい。また、本実施形態に開示される一つの回路が複数の回路により実現されることも考えうる。
さらに、前記上位電力ステート401に対応するSATA系省電力状態としてPowerSave0(PS0)407、PowerSave1(PS1)408及びPowerSave2(PS2)409を定義する。これにより、上位電力ステートに応じたきめ細かいSATA系省電力状態を実現することができる。
前記PS0(407)〜PS2(409)は、図4で示すように上位電力ステートに対応したものであり、電力削減効果としてはPS0<PS1<PS2(電源OFF)の関係となる。また、そのトレードオフとして復帰時間は不等号が逆転する関係となる。各SATA系省電力状態における前記H‐Host‐IF206の省電力移行条件を次のように定義する。つまり、411〜413、前記B‐Host1‐IF207及び前記B‐Host2‐IF208の省電力移行条件を415〜417、HDD/SSD本体の省電力移行条件を419〜421として定義する。各項目411〜421の設定値で、図に“/”で区切られた内容は、その中のいずれかひとつがメモリの中に設定されることを示している。但し、設定値の個数(すなわち、とり得る状態数)は任意で構わない。また、図4の省電力設定値としてのH‐Host‐IF状態410、B‐Host‐IF状態414、HDD/SSD本体状態418の対応個所を図2に示す。それぞれ、H‐Host‐IF206(202及び203含む)、B‐Host1/2‐IF207及び208(204及び205含む)、HDD/SSD113及び114に対応する。前記PS0(407)〜PS2(409)の状態遷移した場合に前記項目411〜421の設定値の状態に置かれることを意味する。ここで、省電力移行条件としてとり得る省電力状態について説明する。AI:Active‐Idle、LPI:Low‐Power‐Idleであり、アイドル状態におけるSATA‐IFと接続デバイス本体のATA規格で定義されている電力状態を示す。既に説明したように、前記Partial/SlumberはSATA‐IFとして、DevSleepはSATA‐IF及びデバイス本体の両方の省電力状態をSATA規格で下記のように定義されたものである。
1.PHY Ready(PHYRDY)SATA規格で定められるPHY(物理層)がデータの送受信が可能な状態になっている。
2.Partial−PHY(例えば、B−Host1−IFや、B−Host2−IFの物理層)は省電力状態(a reduced power mode)となっている。復帰時間は10マイクロ秒までであればゆるされる。
3.Slumber−PHYはPartial Modeよりも電力の低い省電力状態である。復帰時間は最大10ミリ秒である。ホスト(例えば、SATAホスト制御部111)やデバイス(例えば、HDD/SSD113または114)からウェークアップシグナルシーケンスが送信される。それが受信されると、SATA PHY は起動した状態になり、または、PHYRDY モードになる。
上記の復帰時間は、SATA準拠のデバイスが、a wake−up signalを受信してからPHYRDY modeへ復帰するまでの最大の時間である。
4.DevSleepは、下記のように説明される。ホストとデバイスの間Dev Sleep用の信号線が用意される。ホストからDev Sleepに関する信号がデバイスに対して送信されると、ホストとデバイスの間のPHYの電源やその他の回路は電源をOFFにしてよい。Dev Sleepの解除信号(COMWAKE or COMRESET/COMINIT)がホストからデバイスに対して送信されると、ホストとデバイスの再ネゴシエーションが開始される。COMWAKEの適用例については、図9のS904などで詳しく説明する。
また、OffLineは、SATA‐IPとしての無効(停止)状態を示す。一般的にSATA‐IFの省電力として効果が高い順番に並べるとOffLine>DevSleep>Slumber>Partial>LPI>AI、同様にデバイス本体の省電力としては電源OFF>DevSleep>LPI>AIとなる。後述図を用いて説明するが、前記省電力移行条件は前記SATAホスト制御部111及びSATAブリッジ制御部112の起動時に予め設定されることになる。また、前記SATAホスト制御部111のHCPUシステム及びSATAブリッジ制御部112のBCPUシステム自身の各省電力効果は一般的には復帰時間とのトレードオフとなる。SATAホスト制御部111のHCPUシステム及びSATAブリッジ制御部112のBCPUシステム自身の省電力設定は、前記PS0<PS1<PS2(電源OFF)とするのが好適であるが、PS0≦PS1<PS2の関係でも構わない。前記HCPU301及びBCPU310自身の省電力手段として、ここでは図示しないがクロックゲートや電源分離による部分的な電源供給カットなどの方法がある。
ここで、図4で説明した例では、印刷装置全体の電力ステート数を3段階、それに対応するSATA系省電力状態を3段階とした。ただし、前記電力ステート数やSATA系省電力状態数は任意であって構わない。さらに、前記B‐Host1/2‐IF207及び208の省電力移行条件を415〜417、HDD/SSD本体の省電力移行条件を419〜421は、接続ポート単位で個別に設定してもよい。
図5は、省電力制御に関係する拡張コマンド例を示す図である。図4で説明した各省電力移行条件を予めSATAブリッジ制御部112に設定等するための拡張コマンドについて示した図である。SATA規格で定義された空コマンドであるベンダユニーク・コマンド(例えば、F0h)がある。このコマンドに対して、図5の第1行目左から示されるように拡張コマンド名称501、CMD(サブコマンド)番号502、転送タイプ503として省電力系拡張コマンドを独自に定義する。ここで、CMD番号はベンダユニーク・コマンド(例えば、F0h)に対するFeatureレジスタに設定されるサブコマンド番号を示す。また、SATA規格では基本的な転送タイプとして、データを伴わないNon‐Data(ND)転送、単発データ転送を実行するPIO‐In(PI)又はPIO−Out(PO)転送、連続データ転送を実行するDMA転送などの転送タイプが定義されている。図5での転送タイプ503は、CMD番号502に対する転送タイプを定義している。たとえば、SetupPowerConfigコマンド505はCMD番号:01h(506)、転送タイプ:PO(507)で構成される。同様にToSleepコマンド509はCMD番号:02h(510)、転送タイプ:ND(511)である。また、ToDeepコマンド513はCMD番号:03h(514)、転送タイプ:ND(515)である。GetStatusコマンド517はCMD番号:04h(518)、転送タイプ:PI(519)で定義されていることを示す。SetupPowerConfigコマンド505は、前記SATAブリッジ制御部112に対して前記H‐Host‐IF206の省電力移行条件411〜413を設定する。さらに、当該コマンドは、前記B‐Host1/2‐IF207及び208の省電力移行条件415〜417、HDD/SSD本体の省電力移行条件419〜421を設定するために用いられる。(508)ToSleepコマンド509は、上位電力ステートがSleepモード403へ移行することをSATAブリッジ制御部112に通知するコマンドである。(512)同様にToDeepコマンド513は、上位電力ステートがDeepモードに移行することをSATAブリッジ制御部112に通知するコマンドである。(516)GetStatusコマンド517は、SATAブリッジ制御部全般のステータス取得のための拡張コマンドである。直接的な省電力関連の拡張コマンドではないが、例えば省電力移行処理が完了したことを上位システムが取得する場合に用いられる。以後、拡張コマンド以外のATA規格で定義されたコマンドを区別して表現する場合には、ATAコマンドと呼ぶことにする。
さらに、幾つかのフロー図を用いて、本実施形態の制御方法について説明する。なお、説明の煩雑性を避けるため、本実施形態に関係しないエラー処理については説明を省略する。
図6は、SATA系省電力制御の初期設定フローを示す図である。メインCPU101は、メインコントローラ120の起動(コールドブート)時に、S601において前記SATAホスト制御部111に対して図4で説明したH‐Host‐IF206のPS0〜PS2での省電力移行条件411〜413の設定を行う。S602においてメインCPU101は、前記SATAブリッジ制御部112に対して次の設定を行う。CPU101は、図4で説明した前記B‐Host1/2‐IF207及び208の省電力移行条件415〜417、HDD/SSD本体の移行設定条件419〜421を発行させる。この移行条件は、前記SetupPowerConfigコマンド505をSATAホスト制御部111から発行させる。これにより該設定を行う。前記SetupPowerConfigコマンド505を受信したBCPU310は、所定の場所に省電力移行条件を記録する。ここで、前記SATAホスト制御部111及びSATAブリッジ制御部112における省電力移行条件の記録場所としては次がある。例えば、前記レジスタH306やレジスタB314、SRAM304や313、Flashメモリ303や312などに設定する。すなわち、省電力移行処理時に読み出せる場所であれば特に限定はしない。また、上記ではメインコントローラ120起動時での初期設定について説明したが、印刷装置が前記Standbyモード402であれば、同じ設定方法によって任意タイミングで省電力移行条件を再設定しても構わない。なお、本実施例での印刷装置の起動(コールドブート)時は、一端上位電力ステート:Standbyモード402、SATA制御系及びそれに接続されるストレージデバイス:アイドル状態に遷移することを前提とする。
上位システムである印刷装置10000、例えばMFP全体の電力ステートがSleepの状態になった時にメインCPU101は、PS01の割り込み信号を生成する。割り込み信号は、HCPU301へ伝えられるとともに、BCPU310に対しては、Sleepコマンドを送信して、BCPU310内のレジスタへ書き込む。
上位システムである印刷装置1000、例えばMFP全体の電力ステートがDeepSleepの状態になった時にメインCPU101は、PS02の割り込み信号を生成する。割り込み信号は、HCPU301へ伝えられるとともに、BCPU310に対しては、DeepSleepコマンドを送信して、BCPU310内のレジスタへ書き込む。
上位装置全体である印刷装置1000、例えばMFPの電力ステートがStanby状態になることに応答してPS0の割り込みがメインCPU101において発生し、HCPU301へ伝えられる。その際、暗黙の条件として、MFPはStandby状態としてBCPUは認識するように本システムは構成されている。
図7は、前記SATAホスト制御部111の省電力移行シーケンスを示す図である。
S701においてHCPU301は、アイドル(待機)状態として前記メインCPU101からの割り込み指示待ちである。S702においてHCPU301は、メインCPU101から受信した割り込み信号の判定を行う。
S702での判定結果がPS0移行要求割り込みである(Yes)場合には、S703に進む。S703においてHCPU301は、予め設定された前記H‐Host‐IF206を前記PS0(407)としての省電力状態への移行処理を実行する。そして、S704においてHCPUシステム自体をPS0(407)としての省電力状態に遷移し、移行処理を完了する。S702での判定結果がNoである場合には、S705に進む。S705においてHCPU301は、判定結果がPS1移行要求割り込みである(Yes)場合には、S706に進む。S706においてHCPU301は、予め設定された前記H‐Host‐IF206を前記PS1(408)としての省電力状態への移行処理を実行する。そして、S707においてHCPUシステム自体をPS1(408)としての省電力状態に遷移し、移行処理を完了する。S705での判定結果がNoである場合には、S708に進む。S708においてHCPU301は、判定結果がPS2移行要求割り込みである(Yes)場合には、S709に進む。S709においてHCPU301は、予め設定された前記H‐Host‐IF206を前記PS2(409)としての省電力状態への移行処理を実行する。S710においてHCPUシステム自体をPS2(409)としての省電力状態に遷移し、移行処理を完了する。S708での判定結果がNoである場合には、S711に進む。S711においてHCPU301は、省電力移行要求以外の割り込みに応じた処理、例えば通常データ転送時のライトコマンド発行処理などを実行し、処理完了した後に再びS701に戻りアイドル状態に入る。なお、ここでは図示しなしがHCPU301は要求のあった省電力状態に移行した後に、移行完了割り込みをメインCPU101に通知すると同時に、前記レジスタH306の一部を省電力状態のステータスレジスタとして報告する。
ここで、前記PS0(407)〜PS2(409)での設定されたH‐Host‐IF206の省電力移行条件の幾つかにについて説明する。前記Partial及びSlumberは、SATA規格で定義されたリクエストパケットを送信し、送信先が許可すればSATA‐IFに対する省電力状態に入ることができる。また、前記DevSleepは、まずSATA‐IFをSlumberに入れて、さらにシングルエンド信号であるDEVSLP信号をイネーブル状態にすることで接続デバイス本体電力を削減することができる。
図2を用いて説明すると、DEVSLEEPにSATA系が移行指示されると、202乃至205の電源が、DEVSLP信号を検知する機能を除いて落とされる。さらに、SSD/HDD側の物理層もDEVSLP信号を検知する機能を除いて電源がOFFになる。後述するが、上位システムがSATA制御部111に対するDEVSLEEP信号(B−HOST−1および2IFを経由する。)を解除する。そして、SATAホスト制御部111は復帰し、続いてSATAブリッジ制御部112も復帰する。さらに、SATAブリッジ制御部は、HDD/SSD113および114を復帰させる。
図8は、前記SATAブリッジ制御部112の省電力移行シーケンスを示す図である。S801においてBCPU310は、アイドル状態として待機中である。基本的に前記SATAホスト制御部111であるHCPU301からの割り込み指示待ちの状態である。S802においてBCPU310は、受信した割り込み信号が前記H‐Host‐IF206からの省電力移行の通知かどうかの判定を行う。S802においての判定結果がNoの場合には、S803へ進む。S803においてBCPU310は、受信した割り込み信号が省電力系の拡張コマンドであるかどうかの判定を行う。S803での判定結果がNoである場合には、S804に進む。S804においてBCPU310は、他の割り込み処理、例えばATAコマンド処理などを実行し、再びS801のアイドル状態に戻る。S803での判定結果がYesである場合には、S805へ進む。S805においてBCPU301は、メインCPUから受信した省電力系コマンドが前記ToSleepコマンド509かどうかの判定を行う。S805においての判定結果がYesの場合には、S806に進む。S806においてBCPU310は、上位電力ステートを前記Sleepモード403として前記レジスタB314やSRAM313等に登録する。S805での判定結果がNoの場合には、S807に進む。S807においてBCPU310は、受信した省電力系コマンドが前記ToDeepコマンド513であると判断し、上位電力ステートを前記Deepモード403として前記レジスタB314やSRAM313等に登録した後に、S808へ進む。S808においてBCPU310は、Deep移行準備を行う。前記Deepモード403では、基本的に前記電源制御部209による電源OFF処理を前提としている。このため、特に瞬断を許さないストレージデバイス(HDDやSSD)及びFlashメモリを内蔵するSATAブリッジ制御部112のようなタイプのICは電源OFF準備を行い、準備完了後に電源OFFタイミングを通知する必要がある。PS2状態としての電源OFF準備完了かどうかは、前記GetStatusコマンド517によって取得することが可能である。ここでは図示しないがメインCPU101は、前記SATAホスト制御部111やSATAブリッジ制御部112が電源OFF準備完了したことを前述したステータス取得手段により確認した後に、前記電源制御部209に電源OFF許可を通知する。また、一例としてHDD電源OFF時の準備としては、ATA規格のFLUSH CACHEコマンド及びSLEEPコマンドを発行し、データ退避や物理的なヘッダの退避等を行う。
S802において、受信した割り込み信号が前記H‐Host‐IF206の省電力移行の通知であった場合(Yes)、S809に進む。S809においてBCPU310は、上位電力ステートがStandbyモード402と予め設定されている前記H‐Host‐IF206の省電力移行条件411とから、PS0(407)に移行すべきかどうかの判定を行う。S809での判定結果がYesの場合には、S810に進む。S810においてBCPU310は、予め設定されている前記B‐Host1/2‐IF207及び208の省電力移行条件415、HDD/SSD本体の省電力移行条件419に基づいて次を実行する。つまり、PS0(407)への移行処理を実行し、最後にBCPUシステム自身をPS0(407)としての省電力状態に遷移し、移行処理を完了する。S809での判定結果がNoである場合には、S811へ進む。S811においてBCPU310は、上位電力ステートがSleepモード403と予め設定されている前記H‐Host‐IF206の省電力移行条件412から、PS1(408)に移行すべきかどうかの判定を行う。S811での判定結果がYesの場合には、S812に進む。S812においてBCPU310は、予め設定されている前記B‐Host1/2‐IF207及び208の省電力への移行条件416、HDD/SSD本体の省電力への移行条件420に基づいて次を行う。つまり、PS1(408)への移行処理を実行し、最後にBCPUシステム自身をPS1(408)としての省電力状態に遷移し、移行処理を完了する。S811での判定結果がNoである場合には、S813へ進む。
S813においてBCPU310は、上位電力ステートがDeepモード404と予め設定されている前記H‐Host‐IF206の省電力への移行条件413から、PS2(409)に移行すべきかどうかの判定を行う。S813での判定結果がYesの場合には、S814に進む。S814においてBCPU310は、予め設定されている前記B‐Host1/2‐IF207及び208の省電力への移行条件417、HDD/SSD本体の省電力への移行条件421に基づいてPS2(409)への移行処理を実行する。そして最後にBCPUシステム自身をPS2(409)としての省電力状態に遷移し、移行処理を完了する。S813での判定結果がNoである場合には、S815へ進む。S815においてBCPU310は、省電力移行失敗としてエラー処理を行う。基本的に上位へのステータス通知等を実行するが説明は省略する。ここでまでをまとめると、SATAブリッジ制御部112での前記PS0(407)〜PS2(409)のいずれかの省電力状態への移行判定では、以下のようにする。図8で説明したように次のようになる。すなわち、前記上位電力ステート(Standbyモード402、Sleepモード403、Deepモード404)情報と前記H‐Host‐IF206の省電力状態の2条件から次が判定される。すなわち、PS0(407)〜PS2(409)のいずれかであるかが判定される。
ここで、特に前記PS0(407)又はPS1(408)で、HDD/SSD本体の省電力への移行条件419〜421が電源OFF指示であった場合には、次のようにする。つまり、前記図12及び図13で説明したようにBCPU310は、電源制御部209に対してHDD/SSDの電源OFF要求を行う。
図9は、前記SATAホスト制御部111の復帰フローを示す図である。SATAホスト制御部111の前記PS0(407)又はPS1(408)からの復帰シーケンスを示した図である。S901においてHCPU301は、PS0又はPS1の省電力状態である。S902においてHCPU301は、メインCPU101からの割り込み要求待ち状態であり、割り込み要求がなければ(すなわち、S902のNoであれば)S901に戻り、PS0又はPS1の省電力状態を継続する。S902においてHCPU301は、コマンド転送要求割り込みを受信するとS903へ進む。S903においてHCPU301は自身の復帰処理を行い、次のS904において前記H‐Host‐IF206の復帰処理を実行する。具体的にはSATA規格で規定されたOOB(Out Of Band)やスピードネゴシエーションの所定シーケンスを経て、コマンド発行可能となるまでのリンク確立処理を行う。ここで、基本的にSATA‐IF系省電力状態からの復帰は、SATA規格で定義されたリセット信号であるComReset信号の発行から開始される。前記DevSleepからの復帰は図7で説明した移行の逆手順で、まずDEVSLP信号をディスイネーブルにしてから、次にComReset信号(又はComWake信号)を投げることで開始される。S905においてHCPU301は、リンク確立したことを確認するとメインCPU101からの要求コマンドをH‐Host‐IF206に発行し、S906に進む。S906においてHCPU301は、前記SATA‐IP(Device)203からのStatus受信待ちに入る。未受信の間(S906でNo)はそのまま待機し、Statusを受信(S906でYes)した時点で一連のコマンド処理を終了する。以後は、メインCPU101によって再び省電力移行要求が発行されるまでの間、SATAホスト制御部111はアイドル状態を継続(S907)する。
図10は、SATAブリッジ制御部の省電力状態からの復帰処理フロー図である。図10は、前記SATAブリッジ制御部112の前記PS0(407)又はPS1(408)からの復帰シーケンスを示した図である。S1001においてBCPU310は、PS0又はPS1の省電力状態である。S1002においてBCPU310は割り込み要求待ち状態であり、割り込み要求がなければ(すなわち、S1002のNoであれば)S1001に戻り、PS0又はPS1の省電力状態を継続する。S1002においてBCPU310は、前記H‐Host‐IF206がアイドル状態への復帰処理開始の割り込みを受信(S1002でYes)すると、S1003へ進む。ここで、前記復帰処理の開始は、図9で説明したDEVSLP信号がディイネーブルとなるレベル変化の検知やComReset(又はComWake)を要因として割り込み信号が発行される。S1003においてBCPU310は、自身の復帰処理を行い、次のS1004において前記H‐Host‐IF206の復帰処理を実行する。具体的にはSATA規格で規定されたOOB(Out Of Band)やスピードネゴシエーションの所定シーケンスを経て、コマンド発行可能となるまでのリンク確立処理を行う。
S1005においてBCPU310は、接続デバイスであるHDD/SSDの電源をOFFしていた場合、前記図12及び図13で説明したように電源制御部209に対してHDD/SSDの電源ON要求を行う。復帰時電源ON状態であれば、そのままS1006に進む。S1006においてBCPU310は、前記B‐Host1/2‐IF207及び208の復帰処理を実行する。復帰処理に関しては、図9で説明した前記H‐Host‐IF206の復帰処理と同等なので省略する。なお、前回の移行条件でB‐Host1/2‐IF207及び208をアイドル状態に置く設定(すなわち、即時コマンド発行可能状態)である場合には特になにも処理せず、次のS1007に進む。S1007においてBCPU310は、リンク確立したことを確認すると、コマンドの受信待ちを開始する。この時点で省電力状態からアイドル状態への復帰は完了したことになる。BCPU310は、コマンドを受信していない(No)の期間はS1007に留まり、受信した(Yes)場合にはS1008へ進む。S1008においてBCPU310は、コマンド処理を実行する。ここで、受信コマンドがATAコマンドであれば、必要に応じて前記B‐Host1/2‐IF207及び208の片方又は両方に発行し、S1009に進む。S1009においてHCPU301は、前記HDD/SSD113、114からのStatus受信待ちに入る。未受信の間(S1009でNo)はそのまま待機し、Statusを受信(S1009でYes)した時点で、S1010に進む。なお、受信コマンドが前記拡張コマンドであった場合には、SATAブリッジ制御部112内部で所定の処理完了後に、S1010へ進む。S1010においてBCPU310は、前記HDD/SSDから受信したステータス情報又は拡張コマンドにて処理した結果を、SATA規格で定義されたステータスパケットに反映する。そして、パケットをSATA‐IP(Host)201へ送信することで一連のコマンド処理を終了する。以後は、メインCPU101によって再び省電力移行要求が発行されるまでの間、SATAブリッジ制御部112はアイドル状態を継続(S1011)する。なお、ここでは図示しないがS1005〜S1006の期間にATAコマンドを受信した場合には、ブリッジ側での接続デバイスとのリンクが確立されるS1006まで待たされることになる。また、前記PS2(409)からの復帰は、SATA制御系からみると電源OFFからの起動、すなわち、コールドブート時と同じなので説明を省略する。
図11は、PS0〜PS2の省電力移行準備中での強制復帰処理フロー図である。
前記PS0(407)〜PS2(409)への省電力移行準備中での強制復帰処理フローを示す図である。図11は、省電力状態への移行途中の強制復帰処理は、MFPにHDDを必要とするジョブが発生する場合に処理が開始される。または、図11は、エラー状態(SATA系とは限らない)に陥り、ドライバによって強制的にリセット処理がなされた場合に開始する。S1101においてメインCPU101は、SATA系を省電力状態へ入れるために前記SATAブリッジ制御部112への上位電力ステートの通知を行う。具体的には、前記ToSleepコマンド509及びToDeepコマンド513の発行を意味する。ここで、それ以後の省電力移行処理中にメインCPU101にジョブ要求が発生した場合(S1102のYes)、S1103に進む。S1103においてメインCPU101は、前記SATAホスト制御部111に対して省電力移行途中からの強制復帰要求割り込みを発行する。ここでは図示しないが、この割り込みを受信したHCPU301は、SATAホスト制御部内の必要なモジュールに対してハードリセット処理を行い、前記H‐Host‐IF206へComReset信号を送信する。これを受信したSATAブリッジ制御部112のBCPU310は、S1101で受信した上位電力ステート情報を破棄し、Standbyモードとして認識する。さらに、BCPU301は、接続デバイスであるHDD/SSD113及び114の復帰処理を実行する。復帰処理については、既に図10を用いて説明したので省略する。S1103での処理後、メインCPU101はS1104へ進む。S1104においてメインCPU101は、前記SATAホスト制御部の省電力状態を示すステータスレジスタ(前記レジスタH306の一部)を確認する。そして、アイドル状態に復帰していなければ待機(S1104のNo)し、アイドル状態に復帰(S1104のYes)を確認したら強制復帰処理を終了する。S1102での判定がNoであった場合には、S1105に進む。S1105においてメインCPUは、前記SATAホスト制御部111へPS0〜PS2のいずれかの移行要求割り込みの発行を行う。S1106及びS1107においてメインCPU101は、要求した省電力状態に移行完了したことを前記ステータスレジスタにより確認する。まだ、省電力移行中(S1007でYes)で、且つジョブ無し(S1106でNo)ならば、メインCPU101は、S1106とS1107の間をループする。S1106における判定結果がYesの場合には、S1103に進む。S1103及びS1104での処理は既に説明したので省略する。S1107での判定がNoであった場合は、省電力状態への移行中に新たなジョブは発生しなかったとして終了する。
本実施形態では、上位システムの一例であるメインコントローラ120またはその一部であるエンジンコントローラ118、パネルIF部、パネル装置116を開示した。また、所定の規格に従う通信インターフェースを介して通信するデバイスの電力制御を行なう制御装置の一例であるSATAブリッジ制御部112および、SATAホスト制御部111を含むSATA制御部およびそれを含む印刷装置1000を開示した。
また、エンジンコントローラ118やメインコントローラ120の電力状態を示す上位電力ステート401に対応して次の内容を記憶している。すなわち、SATA規格に従う通信インタフェースのSDD/HDDの物理層における、所定の規格に従う省電力状態の組をSATA制御部内のレジスタにおいて記憶している。省電力状態の組とは、例えば、上位電力ステート401と、402列に対応する407乃至419などである。
さらに、SATAホスト制御部111およびSATAブリッジ制御部112は、所定の電力状態の一例である401に示す上位電力ステートへ上位システムが移行することを示す信号を受信する。
さらに、SATA制御部は、その所定の電力状態に上位システムが移行することを示す信号を受信したことに従って、前記のレジスタやメモリを参照して、前記デバイスおよび前記デバイスが有する通信インタフェースの物理層の省電力状態を決定する。
さらに、上位システムの一例は、印刷装置1000である。また、印刷装置1000が有するプリンタコントローラの一例であるメインコントローラが省電力状態ではない時に、次の処理が行われる。すなわち、HDD/SDD113およびHDD/SDD113が備えるSATA規格の物理インタフェースが図4に示す所定の省電力状態になる。すなわち、SATA制御部は、前記デバイスおよびデバイスが有する通信インタフェースの物理層の省電力状態が決定される。
さらに、印刷装置1000が有するエンジンコントローラ118が省電力状態ではない時次のように動作が行われる。HDD/SDD133およびそのSATA規格に従う物理インタフェースが所定の省電力状態になるように、SATA制御部は前記デバイスおよびデバイスが用いる通信インタフェースの物理層の省電力状態を決定する。
SATA制御部は、受信した信号の内容に応じて、HDD/SDD113およびその物理層を、SATA規格において定められたDevSleep,Slumber,Partial,Offlineの少なくとも一つのステータスへ移行させるよう決定する。
さらに、SATA制御部が、所定の省電力への移行を決定した後に、次の動作を行う。SDD・HDD112または113を使用するジョブがLAN−IF部105において受信される。すると、SATA制御部は、HDD/SDD113およびその物理インタフェースの電力を復帰させる指示をSATA制御部が、電源制御部209に対して行う。
SATA制御部内のレジスタに対する設定内容として、少なくとも電源OFF、SATAポートのオフラインがSATAインターフェイスの電力モードとしてある。SATA規格で定められたSATAインターフェイスの電力モードのうち少なくともひとつを含む省電力への移行条件をSSD/HDDが有するSATAインターフェイスの物理層と前記デバイス本体に関して設定できる設定内容とできる。
なお、印刷装置1000は、SATAインターフェイス制御を行うSATAホスト御制御部111部及びSATAブリッジ制御部112を有するSATA制御部を有する。印刷装置1000の電力状態を示す信号をSATAホスト制御部111において受け付け、その信号に応じて省電力処理をSATAホスト制御部111は制御する。
さらに、SATAブリッジ制御部112に対して上位電力ステートが通知された後、次のことが起こる。つまり、SATAホスト制御部及びSATAブリッジ制御部112を接続するSATAインターフェイス206の省電力への状態遷移をSATAブリッジ制御部112が検知する。そして、上位システムの電力状態を示す信号の受信、および、検知された省電力への状態遷移のふたつのイベントに応じて、複数の省電力レベルからひとつをSATA制御部が決定する。
以上一連の図を用いて説明したように、本実施形態を用いれば予め設定される省電力への移行条件を前記PS0(407)〜PS2(409)の各レベルで個別に設定でき、且つそれらは上位電力ステートと連動している。このため、省電力優先なのか/利便性優先なのかを各レベルに応じて自由に設定できる。前記設定値は、初期化時固定でもよいし、任意のタイミングで変更可能であっても構わない。例えば前記パネル装置116のUI画面にて、“利便性優先”を選択した場合は、PS0:HDD電源ON状態/PS1:HDD電源OFF状態、“省電力優先”を選択した場合は、としてもよい。さらに、PS0:HDD電源OFF状態/PS1:HDD電源OFF状態、または、それらの中間的レベルを設けるなどしてユーザの希望を満足する形でSATA制御系の電力削減を実現できる。
本実施形態によれば、上位システムの電力状態を考慮した省電力制御方法の枠組みを提供するので、よりきめ細かい省電力制御を実現可能にする仕組みを提供することができる。
例えば、HDDは不要時に電源OFFし、真に必要な場合にのみ電源ONすることが電力的及び寿命的に望ましい。また、前記RAID制御に伴うバックグラウンド処理中の省電力移行要求に対して、現状のバックグラウンド処理を継続するのか、中断するのかの適切な判断を必要とする場合がある。このような場合であっても、本実施形態によれば、HDD電源OFF/ONタイミングやバックグラウンド処理の継続の有無を容易かつ適切に判断することができる。前記の制御部とはCPUなどである。
<その他の実施形態>
本発明は、上述の各実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASICやFPGA)によっても実現可能である。