図1は、本実施形態のメモリコントローラを備える情報処理装置1の外観を示す図である。この情報処理装置1は、タブレット型の情報端末として構成されている。
情報処理装置1は、端末表面に表示部2aを備える。表示部2aには、たとえば、低消費電力の反射型液晶ディスプレイ、あるいは電子ペーパーなどが用いられる。また、情報処理装置1は、端末表面の表示部2a以外の部分に太陽電池3を備える。また、情報処理装置1は、表示部2aの表面にポインティングデバイスとして機能するタッチパネル2bを備える。さらに、情報処理装置1は、端末表面の表示部2aと重ならない位置にキーボード4を備える。キーボード4は、太陽電池3の表面に透明なタッチパネル2bを重ねることで実現してもよい。また、透明な素材または遮光性の部分の少ない素材を用いた機械式のキーボード4として実現してもよい。
図2は、情報処理装置1のハードウェア構成例を示すブロック図である。情報処理装置1は、主なハードウェア構成として、SoC(System on a Chip)10、メインメモリ5、2次ストレージ6、太陽電池3、蓄電部7、PMIC(Power Management Integrated Circuit;電源管理IC)8、表示部2a、タッチパネル2b、キーボード4、および通信インタフェース(通信I/F)9の各モジュールを備えている。
情報処理装置1は、太陽電池3で発電した電力で動作する。しかし、太陽電池3で発電する電力だけでは動作時(何らかの処理を実行しているとき)の情報処理装置1全体のピークの消費電力をまかなえない。このため、アイドル時(ユーザからの応答待ちの時間や、情報処理装置1を使用していない時間など)に太陽電池3で発電した余剰電力を蓄電部7に充電しておく。そして、動作時には、PMIC8が、蓄電部7が蓄積している電力と太陽電池3が発電した電力とをあわせてPMIC8で必要な電圧に調整して、情報処理装置1の各モジュールに供給する。このような電源制御は、ピークアシストあるいはピークシフトと呼ばれる。
蓄電部7は、リチウムイオン電池などのバッテリ、または電気2重層キャパシタなどを、単独で、または組み合わせて実現できる。たとえば、太陽電池3で発電した電力をまず電気2重層キャパシタに蓄積し、蓄積した電力をさらにリチウムイオン電池に充電するような組み合わせが可能である。
PMIC8は、SoC10やメインメモリ5などの各モジュールへの電力を供給するモジュールである。PMIC8は、太陽電池3や蓄電部7から供給される電力を、SoC10やメインメモリ5など各モジュールが必要とする電圧に変換して、各モジュールに供給する。PMIC8は、各モジュールへの電力の供給をオン/オフする機能も持つ。
SoC10は、情報処理装置1の全体を制御するコアとなるプロセッサ(CPU;Central Processing Unit)11や、本実施形態のメモリコントローラ(メモリ制御装置)100などを半導体基板に実装したシステムLSI(半導体装置)である。なお、SoC10およびメモリ制御装置100の具体的な構成例については、詳細を後述する。
メインメモリ5は、SoC10のCPU11によりデータが読み書きされるメモリであり、CPU11が各種の処理を実行する際のワークエリアとして利用する主記憶部である。メインメモリ5には、たとえば、DDR SDRAM(Double Date Rate Synchronous Dynamic Random Access Memory)、DDR2 SDRAM(Double Date Rate 2 Synchronous Dynamic Random Access Memory)、DDR3 SDRAM(Double Date Rate 3 Synchronous Dynamic Random Access Memory)、LPDDR SDRAM(Low Power Double Date Rate Synchronous Dynamic Random Access Memory)、LPDDR2 SDRAM(Low Power Double Date Rate 2 Synchronous Dynamic Random Access Memory)などの同期型のインタフェースを持つDRAMなどを用いることができる。
2次ストレージ6は、情報処理装置1が必要とするデータやプログラムを記憶する、不揮発メモリを用いた補助記憶部である。2次ストレージ6には、たとえば、フラッシュメモリを用いることができる。また、2次ストレージ6としてSDカードやSSDを用いることもできる。
情報処理装置1は、入出力デバイスとして、表示部2aやタッチパネル2b、キーボード4、通信I/F9を備える。通信I/F9は、たとえば無線LAN(Local Area Network)などによる通信を行うためのインタフェースである。通信の方式は無線LANに限られず、有線LAN、Bluetooth(登録商標)、ZigBee(登録商標)、赤外線通信、可視光通信、光回線網、電話回線網、およびインターネットなどのあらゆる方式を利用できる。
図3は、情報処理装置1の要部の構成例を示すブロック図であり、SoC10と、メインメモリ5と、PMIC8とを抜き出して示したものである。これらの各モジュールは、たとえば、情報処理装置1のマザーボード(システムボード)に搭載される。
SoC10は、上述したように、CPU11とメモリコントローラ100とを備える。CPU11とメモリコントローラ100は、チップに形成されたバス12により接続されている。SoC10は、メモリコントローラ100によって、外部のメインメモリ5と接続される。SoC10やメインメモリ5を動作させる電力は、PMIC8から供給される。なお、図3では図示を省略しているが、SoC10の内部に、表示部2aやタッチパネル2b、キーボード4、通信I/F9などの入出力デバイスのコントローラを設けるようにしてもよい。
また、SoC10は、チップに搭載されたシステムを動作させるためのクロックを生成するために、低周波発振器13と高周波発振器14とを備える。低周波発振器13は、たとえば32KHzの水晶発振子が接続されて発振する。また、高周波発振器14は、たとえば24MHzの水晶発振子が接続されて発振する。
低周波発振器13の出力は、サブクロックとしてCPU11とメモリコントローラ100とに供給され、チップに搭載されたシステムの起動やスタンバイ状態での動作に用いられる。一方、高周波発振器14の出力は、さらにPLL(Phase Locked Loop)15によって周波数を高くしてCPU11とメモリコントローラ100とに供給され、CPU11が各種処理を実行する際のメインクロックとして用いられる。
さらに、SoC10は、アイドル時にSoC10が消費電力の少ない待機状態になるように制御する電力状態管理部16を備える。CPU11は、すぐに実行すべきタスクがなくなり、入出力デバイスからの割り込み待ちになると、WFI(Wait for Interrupt)命令を出して割り込みを待つ。このとき、割り込みを待っている間の消費電力を下げるために、電力状態管理部16は、SoC10を待機状態にする。多くのSoCでは、待機状態の消費電力と待機状態への遷移と復帰に必要なコストが異なる複数の種類の待機状態を提供している。その中でも消費電力の小さいスタンバイ状態では、電力状態管理部16がSoC10内の各モジュールのパワーゲーティングを行ったり、高周波発振器14を止めてメインクロックの供給を停止したりする。このとき、電力状態管理部16は、高周波発振器14だけでなくPLL15も同時に停止することもある。またこのとき、電力状態管理部16は、メインメモリ5への電力の供給の停止をPMIC8に指示する、あるいはメインメモリ5を第1の消費電力で動作する状態からこの第1の消費電力よりも小さい第2の消費電力で待機する状態(ディープパワーダウンやセルフリフレッシュ)に切り替えることをメモリコントローラ100に指示することで、消費電力の大幅な削減を図る。
電力状態管理部16は、入出力デバイスからの割り込み発生を検出すると、SoC10内の各モジュールのパワーゲーティングを行っている場合はそれを解除し、高周波発振器14やPLL15を停止している場合はそれらの動作を再開する。さらに、このとき、電力状態管理部16は、メインメモリ5への電力の供給の再開をPMIC8に指示する、あるいはメインメモリ5を第2の消費電力で待機する状態から第1の消費電力で動作する状態に切り替えることをメモリコントローラ100に指示する。
電力状態管理部16は、SoC10がスタンバイ状態かそうでないかを示すスタンバイ信号を出力し、このスタンバイ信号を使って、PMIC8に対してメインメモリ5への電力の供給の停止や再開を指示する、あるいはメモリコントローラ100に対してメインメモリ5を第1の消費電力で動作する状態と第2の消費電力で待機する状態の相互の間の切り替えを指示するように実施してもよい。この場合、PMIC8は、スタンバイ信号がオンになるとメインメモリ5への電力の供給を停止し、スタンバイ信号がオフになるとメインメモリへ5の電力の供給を再開する。また、この場合、メモリコントローラ100は、スタンバイ信号がオフからオンになるとメインメモリ5に信号(コマンド)を送って第2の消費電力で待機する状態にし、スタンバイ信号がオンからオフになるとメインメモリ5に信号(コマンド)を送って第1の消費電力で動作する状態にする。別の実施方法としては、スタンバイ信号を使わずに、電力状態管理部16からPMIC8あるいはメモリコントローラ100に専用の信号線を使って指示するように実施してもよい。
なお、電力状態管理部16は、Power Reset Manager、General Power Controller、またはLow-Leakage Wake-Up Unitなどと呼ばれることもある。また、電力状態管理部16の一部あるいはすべての機能をCPU11が内蔵する場合もある。
メインメモリ5として上述したDRAMなどの揮発性のメモリを用いる場合は、メインメモリ5への電力の供給を停止するとデータが消えるが、実行状態でCPU11が作業用として用いるデータであればスタンバイ状態に入れば消えても問題ない。また、消えてはいけないデータがある場合は、そのデータを別の揮発性のメモリに記憶し、そのメモリはスタンバイ状態でも電力の供給を止めないようにする、あるいは、そのデータを別の不揮発メモリに記憶させるようにしてもよい。さらに、メインメモリ5としてPCMやMRAMなどの不揮発性のメモリを用いて、メインメモリ5への電力の供給を停止してもデータが消えないようにしてもよい。
メインメモリ5としてDRAMを用い、スタンバイ状態のときにメインメモリ5を第2の消費電力で待機する状態にする場合には、メインメモリ5が第2の消費電力で待機する状態として、DRAMのセルフリフレッシュモードやディープパワーダウンモードを用いることができる。
なお、低周波発振器13で生成したサブクロックは、スタンバイ状態の間のタイマのカウントや割り込みの監視、スタンバイ状態から動作状態への状態遷移などに必要なので止めることはできない。低周波発振器13の消費電力は高周波発振器14の消費電力に比べて小さいので問題にはならない。
本実施形態のSoC10では、入出力デバイスからの割り込みを受けて、電力状態管理部16が、スタンバイ状態を解除し、高周波発振器14(およびPLL15)の動作を開始させるとともに、PMIC8に指示してメインメモリ5への電力の供給を開始する、あるいはメモリコントローラ100に指示してメインメモリ5を第2の消費電力で待機する状態から第1の消費電力で動作する状態に復帰する際、メモリコントローラ100が、メインクロックが安定するのを待つことなくメインメモリ5の初期化処理を開始することで、CPU11が割り込みを処理できるようになるまでの時間を短縮する。
ここで、本実施形態に対する比較例として、従来の一般的なスタンバイ解除の動作について図4を参照しながら説明する。図4は、従来の一般的なSoCが割り込みを受けてスタンバイ状態から動作状態へ遷移するときのタイミングチャートである。なお、従来の一般的なSoCの構成は、図3に示した本実施形態のSoC10と同様であるが、低周波発振器13が生成したサブクロックがメモリコントローラ100に供給されず、メモリコントローラ100がサブクロックに基づく動作を行わない点が、本実施形態と異なる。以下では、便宜上、本実施形態と対応する比較例の構成要素について、本実施形態の構成要素の符号に添え字nを付加した符号を付して説明する。
時刻T1でいずれかの入出力デバイスなどからCPU11nへの割り込みが入ると、それを検出した電力状態管理部16によってスタンバイ状態が解除される。従来の一般的なSoC10nでは、スタンバイ状態であることを示すスタンバイ信号が定義されており、スタンバイ状態が解除されるとスタンバイ信号がローレベルになる。それにあわせて、SoC10nの電力状態管理部16は、まず高周波発振器14n(および必要ならPLL15n)を動作開始させ、高周波発振器14nの発振が安定するのを待つ。高周波発振器14nの出力はPLL15nに入り、そこで周波数を上げて、メインクロックにする。また、スタンバイ状態のときにメインメモリ5nへの電力の供給を停止している場合には、SoC10nの電力状態管理部16は、時刻T1でスタンバイ状態が解除されると、そのタイミングでPMIC8nに指示してメインメモリ5nに対する電力の供給を開始させる。
時刻T2でメインクロックが安定すると、CPU11nは割り込み処理が可能な状態になる。しかし、この段階ではメインメモリ5nの初期化が終わっていないので、CPU11nはメモリコントローラ100nにメインメモリ5nの初期化を指示する。この際、スタンバイ状態のときにメインメモリ5nを第2の消費電力で待機する状態にしている場合には、CPU11nの指示を受けたメモリコントローラ100nは、まずメインメモリ5nを第1の消費電力で動作する状態にさせる。そして、時刻T3で、CPU11nの指示を受けたメモリコントローラ100nがメインメモリ5nの初期化処理を開始し、時刻T4でメインメモリ5nの初期化が完了すると、メインメモリ5nがデータの読み書き可能な状態となる。その後、CPU11nがメインメモリ5nを用いて割り込み処理を実行する。なお、メモリコントローラ100nとしては、上述のようにCPU11nからの指示でメインメモリ5nの初期化処理を開始するメモリコントローラもあれば、スタンバイ解除の後、メインクロックが安定したことを検知した電力状態管理部16の指示によってメインメモリ5nの初期化処理を開始するメモリコントローラもある。
ここでメインメモリ5nの初期化処理とは、スタンバイ状態が解除されてメインメモリ5nに対して電力の供給が開始された後、あるいはメインメモリ5nが第2の消費電力で待機する状態から第1の消費電力で動作する状態に復帰した後に、メインメモリ5nをCPU11nによるデータの読み書きが可能な状態に初期化するための処理である。具体的には、メインメモリ5nの初期化処理は、メインメモリ5nに対して電力の供給が開始されてから所定時間が経過した後にメインメモリ5n内の制御用レジスタにバースト長や信号の遅延に関するパラメータなどを設定する処理、あるいはメインメモリ5nが第2の消費電力で待機する状態から第1の消費電力で動作する状態に復帰してから所定時間が経過した後にメインメモリ5n内の制御用レジスタにバースト長や信号の遅延に関するパラメータなどを設定する処理である。
ここで、メインメモリ5nとしてDDR3 SDRAMを用い、スタンバイ状態のときにメインメモリ5nに対する電力の供給を停止する場合を想定して、従来の一般的なメインメモリ5nの初期化処理について図5を参照しながら説明する。図5は、従来の一般的なメモリコントローラ100nによるメインメモリ5nの初期化処理を説明するタイミングチャートである。
メインメモリ5nがDDR3 SDRAMのような同期型のインタフェースを持つメモリの場合、メモリコントローラ100nは、図5に示すように、メインメモリ5nに対して、メモリクロックを供給しながら、このメモリクロックに同期してメインメモリ5nを初期化するためのコマンド(第1制御信号)を供給する。このとき、従来の一般的なメモリコントローラ100nは、上述したメインクロックをそのまま、あるいはメインクロックをPLLやフリップフロップなどにより内部で周波数変換したものを、メモリクロックとしてメインメモリ5nに供給する。このため、メインクロックが安定するまでは、メインメモリ5nにメモリクロックを供給することができず、メインメモリ5nの初期化処理を行うことができない。
すなわち、従来の一般的なメモリコントローラ100nは、スタンバイ状態が解除されてメインメモリ5nに電力の供給が開始された後、メインクロックが安定するのを待つ。そして、時刻T11でメインクロックが安定すると、メモリコントローラ100nは、メインメモリ5nに対するメモリクロックの供給を開始し、その後、時刻T12でCKE(Clock Enable)信号がハイレベルになってから予め定められた所定時間の間、メインメモリ5nに対して、メモリクロックに同期してNOP(No Operation)コマンドを供給し続ける。なお、CKE信号は、メモリクロックが有効か否かを示す信号であり、CKE信号がハイレベルであればメモリクロックが有効であることを示し、CKE信号がローレベルであればメモリクロックが無効であることを示す。
その後、時刻T13で所定時間が経過すると、メモリコントローラ100nは、メインメモリ5n内の制御用レジスタにバースト長や信号の遅延に関するパラメータなどを設定するためのMRS(Mode Register Set)コマンドを、メモリクロックと同期してメインメモリ5nに供給する。そして、時刻T14でメインメモリ5nの初期化が完了すると、その後、メモリコントローラ100nは、CPU11nによるデータの読み書きに応じたコマンド(第2制御信号)を、メモリクロックと同期してメインメモリ5nに供給する。図5では、メインメモリ5nに対してデータの読み出しを要求するREADコマンドを供給している例を示している。
以上のように、従来の一般的なメモリコントローラ100nは、スタンバイ状態が解除されてメインメモリ5nに対する電力の供給が開始され、さらに、メインクロックが安定した後にメインメモリ5nの初期化処理を開始するようにしていた。このため、CPU11nがメインメモリ5nにデータを読み書きできるようになるまでに時間がかかる、つまり、いずれかの入出力デバイスなどから割り込みが入ってからCPU11nが割り込み処理を開始するまでの遅延時間が長くなるという問題があった。
次に、本実施形態におけるスタンバイ解除の動作について図6を参照しながら説明する。図6は、本実施形態のSoC10が割り込みを受けてスタンバイ状態から動作状態へ遷移するときのタイミングチャートである。
時刻T21でいずれかの入出力デバイスなどから割り込みが入ると、SoC10の電力状態管理部16によってスタンバイ状態が解除され、スタンバイ信号がローレベルになる。それにあわせて、SoC10の電力状態管理部16は、まず高周波発振器14(および必要ならばPLL15)を動作開始させる。また、スタンバイ状態のときにメインメモリ5への電力の供給を停止している場合には、SoC10の電力状態管理部16は、時刻T21でスタンバイ状態が解除されると、そのタイミングでPMIC8に指示してメインメモリ5に対する電力の供給を開始させる。
本実施形態のメモリコントローラ100は、上述したように低周波発振器13で生成されたサブクロックが供給されるため、メインクロックが安定する前にサブクロックで動作することができる。そこで、本実施形態のメモリコントローラ100は、時刻T21でスタンバイ状態が解除されると、メインクロックが安定するのを待つことなく、電力状態管理部16からの指示によってメインメモリ5の初期化処理を開始する。この際、スタンバイ状態のときにメインメモリ5を第2の消費電力で待機する状態にしている場合には、メモリコントローラ100は、まずメインメモリ5を第1の消費電力で動作する状態にさせる。そして、時刻T22でメインメモリ5の初期化が完了すると、メインメモリ5はCPU11によるデータの読み書きが可能な状態となる。
その後、時刻T23でメインクロックが安定すると、CPU11は割り込み処理が可能な状態になる。このとき、メインメモリ5はすでに初期化が完了し、データの読み書きが可能な状態になっているので、CPU11はこの段階で割り込み処理を開始することができる。このように、本実施形態では、スタンバイ状態が解除されてメインメモリ5に電力の供給が開始された後、メインクロックが安定するのを待つことなくメインメモリ5の初期化処理を行うようにしているので、いずれかの入出力デバイスなどから割り込みが入ってスタンバイ状態が解除されてからCPU11が割り込み処理を開始するまでの遅延時間を小さくすることができる。
なお、図6に示した例は、メインメモリ5の初期化処理に要する時間がメインクロックが安定するまでの時間よりも短いことを想定しているが、メインメモリ5の初期化処理に要する時間がメインクロックが安定するまでの時間よりも長い場合は、メインクロックが安定してからメインメモリ5の初期化が完了するまで、CPU11は割り込み処理を開始するのを待つ必要がある。しかし、この場合であっても、従来のようにメインクロックが安定した後にメインメモリ5nの初期化処理を開始する場合に比べると、CPU11が割り込み処理を開始するまでの遅延時間は小さくなる。
図7は、図6に示したようなスタンバイ解除の動作を実現するための本実施形態のメモリコントローラ100の構成例を示すブロック図である。本実施形態のメモリコントローラ100には、CPU11がバス12を介して接続されるのに加え、周波数の高いメインクロックおよび周波数の低いサブクロックの2種類のクロックと、電力状態管理部16からのスタンバイ信号とが入力される。
メインクロックには、SoC10の高周波発振器14の出力をPLL15で周波数を上げたクロックを用いる。メインクロックは、スタンバイ状態では停止する。一方、サブクロックは、SoC10の低周波発振器13の出力をそのまま用いる。なお、サブクロックとして、SoC10の低周波発振器13の出力を、PLL15とは別のPLLで周波数を上げたクロックを用いるようにしてもよい。サブクロックは、スタンバイ状態になっても停止しない。メモリコントローラ100に入力されるメインクロックおよびサブクロックの周波数は、メモリコントローラ100に接続されるメインメモリ5が動作できる範囲で定められる。
電力状態管理部16からのスタンバイ信号は、従来と同様、スタンバイ状態のときにハイレベル(あるいはオン、アサート、アクティブなどとも呼ばれる)となり、スタンバイ状態が解除されるとローレベル(あるいはオフ、デアサート、インアクティブ)となる信号である。
メモリコントローラ100とメインメモリ5は、図7に示すように、それぞれのメモリインタフェースの仕様により定められた信号線で接続される。メモリコントローラ100とメインメモリ5を接続する信号線は、大きく分けて、データ信号線、メモリクロック信号線、制御信号線からなる。データ信号線は、CPU11がメインメモリ5に対して読み書きするデータが伝送される信号線であり、16ビットや32ビットなどの幅を持つ。メモリクロック信号線は、メモリコントローラ100とメインメモリ5との間でデータや制御信号の送受信を同期させるためのメインクロックが伝送される信号線である。制御信号線は、アドレスやバンク指定やコマンドなどを伝送するための信号線であり、伝送される信号の種類に応じた複数本の信号線からなる。
本実施形態のメモリコントローラ100は、一例として、図7に示すように、初期化回路101と、読み書き制御回路102と、クロック切替回路103と、制御信号切替回路104と、を備える。
初期化回路101は、周波数の低いサブクロックで動作し、電力状態管理部16がスタンバイ信号をオフすることによりスタンバイ状態の解除が通知されると、メインメモリ5の初期化処理に必要な制御信号(第1制御信号)の少なくとも前半の一部(たとえばNOPコマンド)を生成して制御信号切替回路104に供給する。この際、スタンバイ状態のときにメインメモリ5を第2の消費電力で待機する状態にしている場合には、初期化回路101は、メインメモリ5の初期化処理に必要な制御信号(第1制御信号)の最初に、メインメモリ5を第1の消費電力で動作する状態に切り替えるための制御信号(コマンド)を挿入して、制御信号切替回路104に供給する。また、初期化回路101は、スタンバイ信号によりスタンバイ状態の解除が通知されると、入力したサブクロックをそのまま、あるいはPLLやフリップフロップなどによりサブクロックを内部で周波数変換したものを、クロック切替回路103に供給する。以下、この初期化回路101からクロック切替回路103に供給される周波数の低いクロックを第1クロックという。なお、サブクロックを周波数変換せずにそのまま第1クロックとする場合は、メモリコントローラ100に入力されるサブクロックをクロック切替回路103に直接入力するようにしてもよい。
読み書き制御回路102は、周波数の高いメインクロックで動作し、CPU11からバス12を介して供給されるメモリアクセスの指示に従って、メインメモリ5にデータを読み書きするための制御信号(第2制御信号)を生成して制御信号切替回路104に供給するとともに、メインメモリ5との間でデータ信号線を用いてCPU11が読み書きするデータを送受信する。また、読み書き制御回路102は、メインクロックが安定してもメインメモリ5の初期化が完了しない場合などは、メインメモリ5にデータを読み書きするための制御信号(第2制御信号)を生成する前に、メインメモリ5の初期化処理に必要な制御信号(第1制御信号)の後半の一部(たとえばMRSコマンド)を生成して制御信号切替回路104に供給する。また、読み書き制御回路102は、入力したメインクロックをそのまま、あるいはPLLやフリップフロップなどによりメインクロックを内部で周波数変換したものを、クロック切替回路103に供給する。以下、この読み書き制御回路102からクロック切替回路103に供給される周波数の高いクロックを第2クロックという。なお、メインクロックを周波数変換せずにそのまま第2クロックとする場合は、メモリコントローラ100に入力されるメインクロックを、クロック切替回路103に直接入力するようにしてもよい。
読み書き制御回路102は、従来の一般的なメモリコントローラ100nと同様にメインクロックで動作するので、スタンバイ状態が解除された後、メインクロックが安定するまでの間は動作することができない。
スタンバイ状態のときにメインメモリ5を第2の消費電力で待機させる場合には、たとえば、スタンバイ信号を読み書き制御回路102にも接続する構成とする。そして、スタンバイ信号がオフからオンになったことを検出した読み書き制御回路102は、メインメモリ5に対して第2の消費電力で待機する状態に切り替える制御信号(コマンド)を送るように実施する。別の実施方法としては、スタンバイ状態に入る時点でCPU11がメモリコントローラ100に対して、メインメモリ5を第2の消費電力で待機する状態に切り替える制御信号(コマンド)を送るように指示する方法もある。この場合は、スタンバイ信号を読み書き制御回路102に接続する必要はない。また、スタンバイ状態のときにメインメモリ5への電力の供給を停止する場合は、スタンバイ信号を読み書き制御回路102に接続する必要はない。
クロック切替回路103は、初期化回路101からの周波数の低い第1クロックと、読み書き制御回路102からの周波数の高い第2クロックとを入力し、第2クロックが安定するまでの間は第1クロックをメモリクロックとしてメインメモリ5に供給し、第2クロックが安定した後は第2クロックをメモリクロックとしてメインメモリ5に供給する。
制御信号切替回路104は、クロック切替回路103が第1クロックをメモリクロックとしてメインメモリ5に供給しているときに、初期化回路101が生成した第1制御信号のメインメモリ5への供給を開始する。そして、制御信号切替回路104は、初期化回路101が生成した第1制御信号をメインメモリ5に供給し続け、クロック切替回路103がメインメモリ5に供給するメモリクロックを第1クロックから第2クロックに切り替えてもメインメモリ5の初期化が完了しない場合は、その後、読み書き制御回路102が生成した第1制御信号をメインメモリ5に供給する。そして、制御信号切替回路104は、クロック切替回路103がメインメモリ5に供給するメモリクロックを第1クロックから第2クロックに切り替えた後であって、且つ、メインメモリ5の初期化が完了した後に、読み書き制御回路102が生成した第2制御信号をメインメモリ5に供給する。
第2クロックが安定したことをメモリコントローラ100が知る方法としては、たとえば、電力状態管理部16がメモリコントローラ100に対して第2クロックが安定したことを伝達する方法、SoC10内のメインクロックが有効であることを示す信号を利用する方法、スタンバイ信号を見てスタンバイ解除から一定時間が経過したら第2クロックが安定していると判断する方法、CPU11が割り込み処理の実行を開始する時点でメモリコントローラ100に指示する方法などが挙げられる。
次に、メインメモリ5としてDDR3 SDRAMを用い、スタンバイ状態のときにメインメモリ5に対する電力の供給を停止する場合を想定して、本実施形態のメモリコントローラ100によるメインメモリ5の初期化処理について図8を参照しながら説明する。図8は、本実施形態のメモリコントローラ100によるメインメモリ5の初期化処理を説明するタイミングチャートである。
時刻T31でスタンバイ状態が解除され、PMIC8からメインメモリ5への電力の供給が開始されると、本実施形態のメモリコントローラ100は、まず周波数の低い第1クロックをメモリクロックとしてメインメモリ5に供給する。第1クロックは、上述したようにサブクロックに基づいて生成される、あるいはサブクロックをそのまま用いる。そして、時刻T32の時点でメモリクロックが有効であることを示すハイレベルのCKE信号をメインメモリ5に供給し、その後、予め定められた所定時間の間、メモリクロックに同期してNOPコマンド(第1制御信号)を供給し続ける。
そして、メインクロックが安定すると、メモリコントローラ100は、時刻T33で、メインメモリ5に供給するメモリクロックを周波数の低い第1クロックから周波数の高い第2クロックに切り替える。第2クロックは、上述したようにメインクロックに基づいて生成される、あるいはメインクロックをそのまま用いる。そして、この段階でメインメモリ5の初期化が完了していなければ、メモリコントローラ100はメインクロックに基づいて初期化処理を継続し、初期化処理に必要な残りのコマンドを、第2クロックに切り替えられたメモリクロックに同期してメインメモリ5に供給する。図8に示す例では、MRSコマンド(第1制御信号)を、第2クロックに切り替えられたメモリクロックと同期してメインメモリ5に供給している。
そして、時刻T34でメインメモリ5の初期化が完了すると、その後、メモリコントローラ100は、CPU11によるデータの読み書きに応じたコマンド(第2制御信号)を、第2クロックに切り替えられたメモリクロックと同期してメインメモリ5に供給する。図8では、メインメモリ5に対してデータの読み出しを要求するREADコマンドを供給している例を示している。なお、メインメモリ5に供給するメモリクロックを第1クロックから第2クロックに切り替えた時点(時刻T33)でメインメモリ5の初期化が完了している場合には、その後すぐに、CPU11によるデータの読み書きに応じたコマンドをメインメモリ5に供給することができる。
なお、図8に示す例では、メインメモリ5に供給するメモリクロックを周波数が低い第1クロックから周波数が高い第2クロックに切り替える際に、CKE信号はハイレベルのままとなっている。しかし、図9に示すように、メモリクロックの周波数が切り替わる際にCKE信号を一旦ローレベルとし、その後、CKE信号をハイレベルに戻すように実施することもできる。
図10は、図8に示した初期化処理を実行する際のメモリコントローラ100の動作を説明するタイミングチャートである。
初期化回路101は、サブクロックとスタンバイ信号を入力しており、時刻T31でスタンバイ状態が解除されてスタンバイ信号がローレベルになると、サブクロックに基づいて生成、あるいはサブクロックをそのまま用いた周波数の低い第1クロックを、クロック切替回路103に入力する。また、初期化回路101は、スタンバイ状態が解除されると、メインメモリ5の初期化に必要なコマンドを生成して制御信号切替回路104に入力する。具体的には、初期化回路101は、時刻T32でCKE信号がハイレベルになった後、予め定めた所定時間の間、NOPコマンドを生成して制御信号切替回路104に入力する。
読み書き制御回路102は、メインクロックを入力しており、メインクロックが安定すると動作を開始し、メインクロックに基づいて生成、あるいはメインクロックをそのまま用いた周波数の高い第2クロックを、クロック切替回路103に入力する。また、読み書き制御回路102は、メインクロックが安定して動作を開始したときにメインメモリ5の初期化が完了していなければ、初期化に必要な残りのコマンド(図8および図10の例ではMRSコマンド)を生成して制御信号切替回路104に入力する。そして、読み書き制御回路102は、時刻T34でメインメモリ5の初期化が完了すると、CPU11によるデータの読み書きに応じたコマンド(図8および図10の例ではREADコマンド)を生成して制御信号切替回路104に入力する。
クロック切替回路103は、第1クロックと第2クロックとを入力し、メインクロックが安定するまでは、第1クロックをメモリクロックとしてメインメモリ5に供給する。そして、クロック切替回路103は、メインクロックが安定した後(時刻T33以降)は、第2クロックをメモリクロックとしてメインメモリ5に供給する。
制御信号切替回路104は、初期化回路101が生成したコマンドと読み書き制御回路102が生成したコマンドとを入力し、メインクロックが安定するまでは、初期化回路101が生成したコマンドを、第1クロックと同期してメインメモリ5に供給する。そして、制御信号切替回路104は、メインクロックが安定した後(時刻T33以降)は、読み書き制御回路102が生成したコマンドを、第2クロックと同期してメインメモリ5に供給する。
なお、図8および図10の例では、スタンバイ状態が解除されてからメインクロックが安定するまでの時間よりも、メインメモリ5の初期化処理に要する時間が長い場合を想定し、メインメモリ5の初期化に必要なコマンドの後半部分を読み書き制御回路102が生成するようにしているが、メインクロックが安定する前にメインメモリ5の初期化が完了する場合は、メインメモリ5の初期化に必要なコマンドのすべてを初期化回路101が生成し、読み書き制御回路102は、CPU11によるデータの読み書きに応じたコマンドのみを生成すればよい。
メインメモリ5としてDDR3 SDRAMを用いる場合、メモリコントローラ100は、CKE信号がハイレベルになってから予め定めた所定時間の間はNOPコマンドをメインメモリ5に供給し続け、所定時間が経過するとMRSコマンドをメインメモリ5に供給する。図8および図10では、説明を簡単にするために、メインメモリ5に供給するメインクロックが第1クロックから第2クロックに切り替わるときに、メインメモリ5に供給するコマンドがNOPコマンドからMRSコマンドに切り替わるように図示しているが、この限りではない。
すなわち、メインクロックが安定するまでの時間よりも上記の所定時間が長ければ、図11に示すように、上記の所定時間が経過するまで読み書き制御回路102がNOPコマンドを生成して、上記の所定時間が経過するとMRSコマンドを生成し、その後、メインメモリ5の初期化が完了すると、CPU11によるデータの読み書きに応じたREADコマンドなどを生成する。この場合、制御信号切替回路104は、メインクロックが安定してメインメモリ5に供給するメモリクロックが第1クロックから第2クロックに切り替わるまでは、初期化回路101が生成したNOPコマンドをメインメモリ5に供給し、メインクロックが安定した後、上記所定時間が経過するまでは、読み書き制御回路102が生成したNOPコマンドをメインメモリ5に供給する。そして、上記の所定時間が経過すると、読み書き制御回路102が生成したMRSコマンドをメインメモリ5に供給し、メインメモリ5の初期化が完了すると、読み書き制御回路102が生成したREADコマンドなどをメインメモリ5に供給する。
一方、メインクロックが安定するまでの時間よりも上記の所定時間が短ければ、図12に示すように、上記の所定時間が経過した後に初期化回路101がMRSコマンドを生成する。そして、メインクロックが安定してメインメモリ5に供給するメモリクロックが第1クロックから第2クロックに切り替わったときに、メインメモリ5の初期化が完了していなければ、メインメモリ5の初期化が完了するまで読み書き制御回路102がMRSコマンドを生成する。この場合、制御信号切替回路104は、メインクロックが安定してメインメモリ5に供給するメモリクロックが第1クロックから第2クロックに切り替わるまでは、初期化回路101が生成したNOPコマンドとMRSコマンドを順次メインメモリ5に供給し、メインクロックが安定した後は、メインメモリ5の初期化が完了するまで読み書き制御回路102が生成したMRSコマンドをメインメモリ5に供給し、メインメモリ5の初期化が完了すると、読み書き制御回路102が生成したREADコマンドなどをメインメモリ5に供給する。
以上、スタンバイ状態を解除するときのメモリコントローラ100の動作を説明したが、SoC10がスタンバイ状態に入るときは、SoC10の電力状態管理部16から、PMIC8に指示して、メインメモリ5に対する電力の供給を停止する、あるいは、メモリコントローラに指示してメインメモリ5を第1の消費電力で動作する状態から第2の消費電力で待機する状態に遷移させる。
以上のように、本実施形態のメモリコントローラ100は、スタンバイ状態が解除されて、メインメモリ5に対する電力の供給が開始される、あるいはメインメモリ5が第2の消費電力で待機する状態から第1の消費電力で動作する状態に復帰すると、メインクロックが安定するのを待つことなくメインメモリ5の初期化処理を開始するので、スタンバイ状態が解除されてからCPU11が割り込み処理を開始するまでの遅延時間を小さくすることができる。
なお、上述した実施形態では、メインメモリ5としてDRAMを用いた例を説明したが、DRAMのほかに、たとえば、SRAM(Static Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)、PCM(Phase Change Memory)、MRAM(Magnetoresistive Random Access Memory)、ReRAM(Resistance Random Access Memory)、NOR Flashなど各種のランダムアクセスメモリをメインメモリ5として用いることができる。この場合、メインメモリ5の初期化に必要なコマンドはメインメモリ5として用いるメモリのインタフェースの種類によって異なるが、メモリコントローラ100は、メインメモリ5として用いるメモリのインタフェースの種類に応じたコマンドをメインメモリ5に供給すればよい。
また、上述した実施形態は、メインメモリ5に接続されたメモリコントローラ100への適用例であるが、適用されるメモリコントローラはこの例に限らず、メインメモリ5以外の他のメモリに接続されたメモリコントローラへの適用も可能である。
以上、具体的な例を挙げながら詳細に説明したように、本実施形態のメモリコントローラ100によれば、消費電力の削減を図りつつ、プロセッサがメモリにデータを読み書きできるようになるまでの時間を短縮することができる。
以上、本発明の実施形態を説明したが、ここで説明した実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。ここで説明した新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。ここで説明した実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。