(57)【要約】【課題】周波数及び電圧の設定変更の時間を短縮したメモリ制御装置、メモリ制御装置の制御方法及び情報処理装置を提供する。【解決手段】設定値保持レジスタ１４は、メモリ２０の制御情報と、メモリ２０に供給するクロック周波数とを対応付けて記憶する。メモリアクセス制御回路１１は、指定されたクロック周波数に対応する制御情報が設定値保持レジスタ１４に存在するか否かを判定する。メモリチューニング回路１３は、指定されたクロック周波数に対応する制御情報が設定値保持レジスタ１４に存在しないとメモリアクセス制御回路１１が判定した場合、指定されたクロック周波数に対応する制御情報を決定する。データ送受信モジュール１２は、指定されたクロック周波数に対応する制御情報が設定値保持レジスタ１４に存在しないとメモリアクセス制御回路１１が判定した場合、メモリチューニング回路１３が決定した制御情報に基づき、メモリ２０を制御する。【選択図】図１
2015036965.tif 000002
【特許請求の範囲】
【請求項１】
メモリの制御情報と、前記メモリに供給するクロック周波数とを対応付けて記憶する記憶部と、
前記メモリに供給するクロック周波数の指定を受信し、指定されたクロック周波数に対応する制御情報が前記記憶部に存在するか否かを判定する判定部と、
指定されたクロック周波数に対応する制御情報が前記記憶部に存在しないと前記判定部が判定した場合、指定されたクロック周波数に対応する制御情報を決定する決定部と、
指定されたクロック周波数に対応する制御情報が前記記憶部に存在しないと前記判定部が判定した場合、前記決定部が決定した制御情報に基づき、前記メモリを制御する制御部と
を備えたことを特徴とするメモリ制御装置。
【請求項２】
前記制御部は、指定されたクロック周波数に対応する制御情報が前記記憶部に存在すると前記判定部が判定した場合、前記記憶部から取得した制御情報に基づき、前記メモリを制御することを特徴とする請求項１に記載のメモリ制御装置。
【請求項３】
前記判定部は、前記メモリ制御装置の起動時に、所定の種類のクロック周波数及び前記メモリに供給する電圧の組を受信し、
前記決定部は、前記所定の種類のクロック周波数及び電圧の組のそれぞれに対応する制御情報を決定し、前記記憶部に記憶させる
ことを特徴とする請求項１又は２に記載のメモリ制御装置。
【請求項４】
前記メモリ制御装置はさらに、
前記メモリの温度を計測する温度計測部を備え、
前記記憶部は、前記制御情報と、前記クロック周波数、前記電圧及び前記温度とを対応付けて記憶し、
前記判定部は、指定されたクロック周波数及び前記温度計測部により計測された前記温度に対応する前記制御情報が前記記憶部に存在するか否かを判定し、
前記制御部は、当該制御情報が前記記憶部に存在する場合、当該制御情報を前記記憶部から取得し、当該制御情報が前記記憶部に存在しない場合、指定されたクロック周波数に対応する制御情報として決定された制御情報を前記決定部から取得し、取得した制御情報を基に、前記メモリを制御する
ことを特徴とする請求項１〜３のいずれか１項に記載のメモリ制御装置。
【請求項５】
前記制御部は、前記メモリに対するデータ送受信を制御することを特徴とする請求項１〜４のいずれか１項に記載のメモリ制御装置。
【請求項６】
前記制御情報は、前記メモリからの入力信号と基準信号との位相を調整する位相調整情報及びサイクルを調整するサイクル調整情報、並びに、前記メモリの遅延情報であることを特徴とする請求項１〜５のいずれか１項に記載のメモリ制御装置。
【請求項７】
前記クロック周波数及び前記電圧は、少なくとも、第１設定、前記第１設定よりも前記メモリの処理速度が向上する第２設定、及び前記第１設定よりも消費電力が低い第３設定が存在することを特徴とする請求項１〜６のいずれか１項に記載のメモリ制御装置。
【請求項８】
メモリの制御情報と、前記メモリに供給するクロック周波数とを対応付けて記憶する記憶部を有するメモリ制御装置の制御方法において、
前記メモリ制御装置が有する判定部が、前記メモリに供給するクロック周波数の指定を受信し、指定されたクロック周波数に対応する制御情報が前記記憶部に存在するか否かを判定し、
指定されたクロック周波数に対応する制御情報が前記記憶部に存在しないと前記判定部が判定した場合、前記メモリ制御装置が有する決定部が、指定されたクロック周波数に対応する制御情報を決定し、
指定されたクロック周波数に対応する制御情報が前記記憶部に存在しないと前記判定部が判定した場合、前記メモリ制御装置が有する制御部が、前記決定部が決定した制御情報に基づき、前記メモリを制御する
ことを特徴とするメモリ制御装置の制御方法。
【請求項９】
ＣＰＵ、メモリ、クロック供給回路及びメモリ制御装置を有する情報処理装置において、
前記クロック供給回路は、前記メモリにクロックを供給し、
前記メモリ制御装置は、
メモリの制御情報と、前記メモリに供給するクロック周波数とを対応付けて記憶する記憶部と、
前記メモリに供給するクロック周波数の指定を受信し、指定されたクロック周波数に対応する制御情報が前記記憶部に存在するか否かを判定する判定部と、
指定されたクロック周波数に対応する制御情報が前記記憶部に存在しないと前記判定部が判定した場合、指定されたクロック周波数に対応する制御情報を決定する決定部と、
指定されたクロック周波数に対応する制御情報が前記記憶部に存在しないと前記判定部が判定した場合、前記決定部が決定した制御情報に基づき、前記メモリを制御する制御部と
を備えたことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御装置、メモリ制御装置の制御方法及び情報処理装置に関する。
【背景技術】
【０００２】
近年、携帯機器だけでなく、サーバやPersonal  Computer（ＰＣ）などに対しても省電力要求が高まっている。そこで、Central  Processing  Unit（ＣＰＵ）などの電子部品における電圧と周波数を動的に変化させるDynamic  Voltage  and  Frequency  Scaling（ＤＶＦＳ）が広く用いられてきている。
【０００３】
サーバやＰＣなどのメインメモリを持つコンピュータのメモリチャネルに対して、高速動作要求と低速動作要求に応じて電源電圧を制御する従来技術などが提案されている。
【０００４】
例えば、Dual  Inline  Memory  Module（ＤＩＭＭ）などを用いたメモリインタフェースは、ＣＰＵなどと異なり、周波数及び電圧の組合せ毎に最適な設定が異なり、その設定はチューニングを行うことで決定される。そのため、周波数及び電圧の組合せのそれぞれで最適なパフォーマンスを得ようとした場合、周波数及び電圧が変化する度にチューニングが行われる。
【０００５】
これについては、例えば、メモリの動作速度とメモリの電源電圧の関係のテストを行い、メモリに対する供給電圧を決定する従来技術がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２０１２−５２３０５２号公報
【特許文献２】特開平０４−１６７０４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、メモリインタフェースのチューニングは、瞬時には終わらず、ある程度の時間が掛かる。そして、チューニング中はメモリバスが使用できないため、その間、システムはメモリモジュールを実質的に使用できない。
【０００８】
高速動作要求と低速動作要求に応じて電源電圧を制御する従来技術では、周波数や電圧の設定変更が指示される毎にメモリチューニングが行われる。メモリに対する要求性能によっては、チューニングに多くの時間を費やし、メモリバスを使用できない期間が長くなることが考えられる。すなわち、周波数や電圧の設定変更を完了するまでに長時間経過してしまうおそれがある。これは、テストを行いメモリの供給電圧を決定する従来技術であっても同様である。
【０００９】
開示の技術は、上記に鑑みてなされたものであって、周波数及び電圧の設定変更の時間を短縮したメモリ制御装置、メモリ制御装置の制御方法及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本願の開示するメモリ制御装置、メモリ制御装置の制御方法及び情報処理装置は、一つの態様において、記憶部は、メモリの制御情報と、前記メモリに供給するクロック周波数とを対応付けて記憶する。判定部は、前記メモリに供給するクロック周波数の指定を受信し、指定されたクロック周波数に対応する制御情報が前記記憶部に存在するか否かを判定する。決定部は、指定されたクロック周波数に対応する制御情報が前記記憶部に存在しないと前記判定部が判定した場合、指定されたクロック周波数に対応する制御情報を決定する。制御部は、指定されたクロック周波数に対応する制御情報が前記記憶部に存在しないと前記判定部が判定した場合、前記決定部が決定した制御情報に基づき、前記メモリを制御する。
【発明の効果】
【００１１】
本願の開示するメモリ制御装置、メモリ制御装置の制御方法及び情報処理装置の一つの態様によれば、周波数及び電圧の設定変更の時間を短縮することができるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係る情報処理装置のブロック図である。
【図２】図２は、実施例１に係る設定値保持レジスタの格納情報を説明するための図である。
【図３】図３は、実施例１に係るメモリ制御装置によるメモリ制御処理のフローチャートである。
【図４】図４は、実施例２に係るメモリ制御装置による起動時のメモリ制御処理のフローチャートである。
【図５】図５は、実施例３に係る情報処理装置のブロック図である。
【図６】図６は、実施例３に係る設定値保持レジスタの格納情報を説明するための図である。
【図７】図７は、実施例３に係るメモリ制御装置によるメモリ制御処理のフローチャートである。
【発明を実施するための形態】
【００１３】
以下に、本願の開示するメモリ制御装置、メモリ制御装置の制御方法及び情報処理装置の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示するメモリ制御装置、メモリ制御装置の制御方法及び情報処理装置が限定されるものではない。
【実施例１】
【００１４】
図１は、実施例１に係る情報処理装置のブロック図である。本実施例に係る情報処理装置は、メモリ制御装置であるメモリコントローラ１、メモリモジュール２、クロック／電圧設定回路３、クロック供給回路４、電圧供給回路５、演算処理部であるCentral  Processing  Unit（ＣＰＵ）６及びハードディスク装置７を有する。
【００１５】
ＣＰＵ６は、メモリコントローラ１及びハードディスク装置７とバスで接続されている。ＣＰＵ６は、メモリコントローラ１を介してメモリモジュール２に搭載されているDynamic  Random  Access  Memory（ＤＲＡＭ）などのメモリ２０との間でデータの送受信を行う。具体的には、ＣＰＵ６は、後述するメモリアクセス制御回路１１にデータの読み書きのコマンドを送信して、メモリアクセス制御回路１１との間でデータの送受信を行う。
【００１６】
また、ＣＰＵ６は、自装置の状態が周波数及び電圧の設定の変更条件を満たしたか否かを判定する。そして、変更条件を満たした場合、ＣＰＵ６は、周波数及び電圧への設定変更をクロック／電圧設定回路３へ通知する。ここでは、ＣＰＵ６が周波数及び電圧の設定変更をクロック／電圧設定回路３へ通知するように説明するが、ＣＰＵ６が実行するソフトウェアの処理として周波数及び電圧の設定変更の通知がなされてもよい。また、本実施例では、ＣＰＵ６は、設定変更の通知とともに変更値である周波数及び電圧の値を通知する。
【００１７】
本実施例では、周波数及び電圧の設定として、「通常設定」、「高パフォーマンス設定」及び「低消費電力設定」という３種類の設定がある場合で説明する。通常設定とは、メモリ２０の処理速度及び電力消費のバランスを取った設定であり、情報処理装置起動後、特に周波数及び電圧の設定を指定しない場合に用いられる設定である。通常設定は、例えば、周波数が１６００ＭＨｚであり、電圧が１．３５Ｖである。この通常設定が、「第１設定」の一例にあたる。高パフォーマンス設定とは、メモリ２０の処理速度を優先させた設定である。高パフォーマンス設定は、例えば、周波数が１８００ＭＨｚであり、電圧が１．５０Ｖである。この高パフォーマンス設定が、「第２設定」の一例にあたる。低消費電力設定とは、メモリ２０による消費電力を抑えることを優先させた設定である。低消費電力設定は、例えば、周波数が８００ＭＨｚであり、電圧が１．２０Ｖである。この低消費電力設定が「第３設定」の一例にあたる。
【００１８】
すなわち、本実施例では、情報処理装置が起動すると、メモリコントローラ１、クロック供給回路４及び電圧供給回路５は、通常設定で動作する。そして、例えば、キャッシュのパイプラインにメモリモジュール２へのリクエストが閾値以上溜まっている場合、ＣＰＵ６は、高パフォーマンス設定への設定変更をクロック／電圧設定回路３へ通知する。また、メモリモジュール２へのリクエストが閾値よりも少ない場合、ＣＰＵ６は、低消費電力設定への設定変更をクロック／電圧設定回路３へ通知する。
【００１９】
ここで、例えば、ＣＰＵ６が実行するソフトウェアが設定変更を通知する場合、ソフトウェアは以下のように設定変更の通知を行う。すなわち、ソフトウェアは、情報処理装置の負荷状況及び電力消費状況などを監視し、負荷が高いときは高パフォーマンス設定への設定変更をクロック／電圧設定回路３へ通知する。また、負荷が低い場合には、ソフトウェアは、低消費電力への設定変更をクロック／電圧設定回路３へ通知する。
【００２０】
また、ＣＰＵ６は、ハードディスク装置７に対してもデータの読み出し及び書き込みを行う。
【００２１】
ハードディスク装置７は、ＣＰＵ６との間でデータの送受信を行う。また、ハードディスク装置７は、ＣＰＵ６からの指示を受けて、メモリコントローラ１を介してメモリモジュール２に搭載されているＤＲＡＭなどのメモリ２０との間でデータの送受信を行う。
【００２２】
クロック／電圧設定回路３は、初期設定として、通常設定の周波数及び電圧の値を記憶する。そして、情報処理装置が起動すると、クロック／電圧設定回路３は、通常設定の周波数及び電圧をメモリアクセス制御回路１１へ通知する。
【００２３】
また、クロック／電圧設定回路３は、通常設定の周波数の値をクロック供給回路４へ通知する。さらに、クロック／電圧設定回路３は、通常設定の電圧の値を電圧供給回路５へ通知する。
【００２４】
また、クロック／電圧設定回路３は、周波数及び電圧の設定変更の通知をＣＰＵ６から受信する。そして、クロック／電圧設定回路３は、ＣＰＵ６から指定された周波数及び電圧の値をメモリアクセス制御回路１１へ通知する。また、クロック／電圧設定回路３は、ＣＰＵ６から指定された周波数の値をクロック供給回路４へ通知する。また、クロック／電圧設定回路３は、ＣＰＵ６から指定された電圧の値を電圧供給回路５へ通知する。
【００２５】
ここで、本実施例では、クロック／電圧設定回路３は、ＣＰＵ６から周波数及び電圧の値の入力を受けているが、これは他の方法でもよい。例えば、クロック／電圧設定回路３は、周波数及び電圧の設定の種類とそれに対応する周波数及び電圧の値を記憶しておき、ＣＰＵ６から周波数及び電圧の設定の種類の情報を受信し、受信した設定に対応する周波数及び電圧の値を取得してもよい。
【００２６】
クロック供給回路４は、メモリコントローラ１及びメモリモジュール２へ供給するクロックの周波数の通知をクロック／電圧設定回路３から受信する。そして、クロック供給回路４は、通知された周波数のクロックをメモリコントローラ１及びメモリモジュール２へ供給する。
【００２７】
電圧供給回路５は、メモリコントローラ１及びメモリモジュール２へ供給する電力の電圧の値の通知をクロック／電圧設定回路３から受信する。そして、クロック供給回路４は、通知された値の電圧を有する電力をメモリコントローラ１及びメモリモジュール２へ供給する。
【００２８】
メモリモジュール２は、ＤＲＡＭなどのメモリ２０を搭載するモジュールである。例えば、メモリモジュール２は、４ＲＡＮＫ−ＤＩＭＭなどである。
【００２９】
メモリモジュール２は、電力の供給を電圧供給回路５から受ける。また、メモリモジュール２は、クロックの供給をクロック供給回路４から受ける。そして、メモリモジュール２は、電圧供給回路５から供給された電力を用いて、クロック供給回路４から供給されたクロックの周波数で動作する。
【００３０】
例えば、メモリモジュール２は、メモリコントローラ１のデータ送受信モジュール１２からの制御を受けて、データの送受信を行う。
【００３１】
メモリコントローラ１は、メモリアクセス制御回路１１、データ送受信モジュール１２、メモリチューニング回路１３、設定値保持レジスタ１４及び設定レジスタ１５を有する。
【００３２】
メモリコントローラ１は、クロック供給回路４からクロックの供給を受ける、電圧供給回路５から電力の供給を受ける。そして、メモリコントローラ１の各部は、電圧供給回路５から供給された電力により、クロック供給回路４から供給されたクロックの周波数で動作する。
【００３３】
メモリアクセス制御回路１１は、周波数及び電圧の値をブロック／電圧設定回路３から受ける。メモリアクセス制御回路１１は、受信した周波数及び電圧の値、並びに、それに対応する制御情報が設定値保持レジスタ１４に格納されているか検索する。ここで、制御情報とは、メモリモジュール２から送信されるデータストローブ信号（ＤＱＳ信号）とクロックとの位相を調整するための位相調整情報及びサイクルを調整するためのサイクル調整情報を含む。また、制御情報は、メモリモジュール２に搭載されたメモリ２０の遅延時間を示す遅延時間情報なども含む。以下では、制御情報に含まれる各値を「設定値」と呼ぶ場合がある。
【００３４】
メモリアクセス制御回路１１は、受信した周波数及び電圧の値、並びに、それに対応する制御情報が設定値保持レジスタ１４に格納されている場合、対応する制御情報をメモリモジュール２の制御に用いる指示をデータ送受信モジュール１２に送信する。
【００３５】
これに対して、受信した周波数及び電圧の値及びそれに対応する制御情報が設定値保持レジスタ１４にない場合、メモリアクセス制御回路１１は、受信した周波数及び電圧の場合におけるメモリチューニングの実施をメモリチューニング回路１３に指示する。
【００３６】
本実施例では、情報処理システムの起動時には、設定値保持レジスタ１４には情報が格納されていない。そこで、メモリアクセス制御回路１１は、情報処理システムの起動時には、通常設定の周波数及び電圧の場合におけるメモリチューニングの実施をメモリチューニング回路１３に指示する。その後、ＣＰＵ６から他の周波数及び電力の設定への変更の指示を受けると、メモリアクセス制御回路１１は、指示された設定の場合におけるメモリチューニングの実施をメモリチューニング回路１３へ指示する。ただし、一度メモリチューニングを行った周波数及び電力の設定に対応する制御情報は、後述するように設定値保持レジスタ１４に格納される。そこで、既にメモリチューニングを行った周波数及び電力の設定への変更が再度指示された場合、メモリアクセス制御回路１１は、その設定に対応する制御情報をメモリモジュール２の制御に用いる指示をデータ送受信モジュール１２へ送信する。このメモリアクセス制御回路１１が、「判定部」の一例にあたる。
【００３７】
また、メモリアクセス制御回路１１は、ＣＰＵ６又はハードディスク装置７からメモリ２０へのデータの書き込み又は読み出しの指示を受ける。そして、メモリアクセス制御回路１１は、受信したデータの書き込み又は読み出しの指示をデータ送受信モジュール１２へ送信する。その後、メモリアクセス制御回路１１は、データ送受信モジュール１２からの応答を受信し、受信した応答に従い、ＣＰＵ６又はハードディスク装置７へ応答を返す。
【００３８】
データ送受信モジュール１２は、指定された周波数及び電力に対応する制御情報が設定値保持レジスタ１４に格納されている場合、メモリモジュール２の制御に用いる制御情報に対応する周波数及び電圧の値をメモリアクセス制御回路１１から受信する。そして、データ送受信モジュール１２は、受信した周波数及び電圧の値に対応する制御情報に含まれる各設定値を設定値保持レジスタ１４から受信する。次に、データ送受信モジュール１２は、受信した設定値を設定レジスタ１５へ格納する。その後、データ送受信モジュール１２は、設定レジスタ１５に格納した各設定値を用いてメモリバスの使用を開始し、メモリモジュール２とデータの送受信を行う。
【００３９】
また、データ送受信モジュール１２は、指定された周波数及び電力に対応する制御情報が設定値保持レジスタ１４に格納されていない場合、その周波数及び電力の設定に対応する制御情報の各設定値をメモリチューニング回路１３から受信する。次に、データ送受信モジュール１２は、受信した設定値を設定レジスタ１５へ格納する。その後、データ送受信モジュール１２は、設定レジスタ１５に格納した各設定値を用いてメモリバスの使用を開始し、メモリモジュール２とデータの送受信を行う。このデータ送受信モジュール２が、「制御部」の一例にあたる。
【００４０】
メモリチューニング回路１３は、指定された周波数及び電力に対応する制御情報が設定値保持レジスタ１４に格納されていない場合、その周波数及び電力の場合におけるメモリチューニングの実施の指示をメモリアクセス制御回路１１から受ける。そして、メモリチューニング回路１３は、その場合の電圧供給回路５から供給された電圧及びクロック供給回路４から供給されたクロックを用いた状態で、メモリチューニングを行う。
【００４１】
例えば、メモリチューニング回路１３は、クロック信号の位相とＤＱＳ信号の位相とを調整する処理を行い、位相調整情報を求める。この処理は、「ライトレベリング」などと呼ばれる。また、メモリチューニング回路１３は、クロック信号とＤＱＳ信号とのサイクルを調整する処理を行い、サイクル調整情報を求める。この処理は、「サイクルチェック」などと呼ばれる。さらに、メモリチューニング回路１３は、メモリ２０の遅延時間を見積もる処理を行い、遅延時間情報を求める。この処理は、「リードレベリング」などと呼ばれる。
【００４２】
そして、メモリチューニング回路１３は、求めた位相調整情報、サイクル調整情報及び遅延時間情報などの設定値をデータ送受信モジュール１２へ送信する。このメモリチューニング回路１３が、「決定部」の一例にあたる。
【００４３】
さらに、メモリチューニング回路１３は、求めた位相調整情報、サイクル調整情報及び遅延時間情報などの設定値を、その状態の周波数及び電力の値に対応付けて設定値保持レジスタ１４へ格納する。
【００４４】
設定値保持レジスタ１４は、周波数及び電力の値に対応付けた、位相調整情報、サイクル調整情報及び遅延時間情報などの設定値をメモリチューニング回路１３から受信する。そして、設定値保持レジスタ１４は、周波数及び電力の値に対応付けて、位相調整情報、サイクル調整情報及び遅延時間情報などの設定値を格納する。この設定値保持レジスタ１４が、「記憶部」の一例にあたる。
【００４５】
図２は、実施例１に係る設定値保持レジスタの格納情報を説明するための図である。図２では、設定値保持レジスタ１４が保持する周波数及び電力の値と制御情報との対応をテーブルとして表すが、対応関係を保持するのであれば情報の形式は特に制限は無い。
【００４６】
設定値保持レジスタ１４は、本実施例では、第１設定値保持レジスタ１４１、第２設定値保持レジスタ１４２及び第３設定値保持レジスタ１４３を有する。
【００４７】
第１設定値保持レジスタ１４１は、周波数が１６００ＭＨｚであり、電圧が１．３５Ｖである通常設定に対応する制御情報を格納する。本実施例では、例えば、通常設定を表す信号の値は「２’ｂ００」である。本実施例では、メモリチューニング回路１３は、クロック／電圧設定回路３から通常設定の周波数及び電圧を受信すると、「２’ｂ００」に対応する制御情報を格納する第１設定値保持レジスタ１４１の有無を確認する。また、データ送受信モジュール１２は、通常設定の周波数及び電圧に変更する場合、「２’ｂ００」の値を有する信号をメモリチューニング回路１３から受信し、その値に対応する制御情報を検索する。
【００４８】
そして、第１設定値保持レジスタ１４１は、図２に示すように、メモリモジュール２とデータ送受信モジュール１２とを接続する複数のメモリバスについて、それぞれのメモリバスに対応する制御情報を格納する。ここでは、メモリモジュール２に１８個のＤＲＡＭが搭載されている。そして、図２は、各ＤＲＡＭ（ＤＲＡＭ＃０〜＃１７）及びそのＤＲＡＭへ繋がるメモリバスへ出力されるＤＱＳ信号（ＤＱＳ＃０〜＃１７）毎にチューニングを行った場合の制御情報を表す。図２における位相情報には、位相調整情報及びサイクル調整情報などが含まれる。すなわち、データ送受信モジュール１２は、メモリバス毎に対応する制御情報を用いて、それぞれのメモリバスを制御する。これは、メモリバスの長さなどにより、最適な設定値が異なるからである。
【００４９】
第２設定値保持レジスタ１４２は、周波数が１８００ＭＨｚであり、電圧が１．５０Ｖである高パフォーマンス設定に対応する制御情報を格納する。本実施例では、例えば、高パフォーマンス設定を表す信号の値は「２’ｂ０１」である。第２設定値保持レジスタ１４２も、メモリモジュール２とデータ送受信モジュール１２とを接続する複数のメモリバスについて、それぞれのメモリバスに対応する制御情報を格納する。
【００５０】
第３設定値保持レジスタ１４３は、周波数が８００ＭＨｚであり、電圧が１．２０Ｖである低消費電力設定に対応する制御情報を格納する。本実施例では、例えば、低消費電力設定を表す信号の値は「２’ｂ１０」である。第３設定値保持レジスタ１４３も、メモリモジュール２とデータ送受信モジュール１２とを接続する複数のメモリバスについて、それぞれのメモリバスに対応する制御情報を格納する。
【００５１】
設定レジスタ１５は、メモリモジュール２の制御に用いる設定値の入力をデータ送受信モジュール１２から受ける。そして、設定レジスタ１５は、受信した設定値を格納する。その後、設定レジスタ１５が保持する情報は、データ送受信モジュール１２がメモリモジュール２の制御を行う際に、データ送受信モジュール１２により使用される。
【００５２】
また、周波数及び電圧の設定が変わると、設定レジスタ１５は、リセットされ、新しい周波数及び電圧の設定に対応する設定値を受信して格納する。
【００５３】
次に、図３を参照して、本実施例に係るメモリ制御装置によるメモリ制御処理の流れについて説明する。図３は、実施例１に係るメモリ制御装置によるメモリ制御処理のフローチャートである。
【００５４】
ＣＰＵ６は、周波数及び電圧の設定変更をクロック／電圧設定回路３に指示する（ステップＳ１０１）。クロック／電圧設定回路３は、ＣＰＵ６から指定された周波数及び電圧の設定をメモリアクセス制御回路１１へ通知する。
【００５５】
メモリアクセス制御回路１１は、通知された周波数及び電圧の設定に対応する制御情報が設定値保持レジスタ１４に格納されているかを確認し、その周波数及び電圧が以前に設定された周波数及び電圧か否かを判定する（ステップＳ１０２）。
【００５６】
以前に設定された周波数及び電圧でない場合（ステップＳ１０２：否定）、メモリアクセス制御回路１１は、メモリチューニングの実施をメモリチューニング回路１３へ指示する。メモリチューニング回路１３は、メモリアクセス制御回路１１からの指示を受けて、その状態で供給されているクロック及び電圧を用いてメモリチューニングを行う（ステップＳ１０３）。
【００５７】
そして、メモリチューニング回路１３は、その状態で供給されている電圧及びクロックの周波数に対応する制御情報の設定値を決定する（ステップＳ１０４）。次に、メモリチューニング回路１３は、決定した設定値をデータ送受信モジュール１２へ通知する。
【００５８】
データ送受信モジュール１２は、設定レジスタ１５をリセットし、通知された設定値を新たに設定レジスタ１５へ書き込む（ステップＳ１０５）。
【００５９】
その後、データ送受信モジュール１２は、設定レジスタ１５が保持する設定値を用いてメモリモジュール２の制御を行い、メモリバスの使用を開始する（ステップＳ１０６）。
【００６０】
メモリチューニング回路１３は、周波数及び電圧に対応させて決定した設定値を設定値保持レジスタ１４へ格納する（ステップＳ１０７）。
【００６１】
一方、以前に設定された周波数及び電圧の場合（ステップＳ１０２：肯定）、メモリアクセス制御回路１１は、指定された周波数及び電圧の設定をデータ送受信モジュール１２へ通知する。
【００６２】
データ送受信モジュール１２は、通知された周波数及び電圧の設定に対応する制御情報の設定値を設定値保持レジスタ１４から読み出す（ステップＳ１０８）。
【００６３】
次に、データ送受信モジュール１２は、設定レジスタ１５をリセットし、読み出した設定値を新たに設定レジスタ１５へ書き込む（ステップＳ１０９）。
【００６４】
その後、データ送受信モジュール１２は、設定レジスタ１５が保持する設定値を用いてメモリモジュール２の制御を行い、メモリバスの使用を開始する（ステップＳ１１０）。
【００６５】
以上に説明したように、本実施例に係るメモリ制御装置は、チューニングにより決定した周波数及び電圧の設定に対応する制御情報の設定値を記憶しておき、再度同じ周波数及び電圧の設定が指定された場合に記憶する設定値を用いてメモリの制御を行う。これにより、メモリチューニングの回数を抑えることができ、メモリチューニングによるシステムに対する負荷を軽減することができる。
【００６６】
また、周波数及び電圧の設定変更時のチューニングに使用する時間を削減できるので、周波数及び電圧の設定変更の時間を短縮することができる。
【００６７】
また、例えば、周波数及び電圧の設定変更毎にチューニングを行う場合、変更の回数に比例してチューニングにかけた時間は増加するが、本実施例では、変更の回数が増加してもチューニングにかけた時間は増加せず、情報処理装置の処理時間を圧縮できる。
【００６８】
ここで、本実施例に係るメモリコントローラ１を用いた場合の効果について具体的に説明する。例えば、１ｍＶ／１μｓで変動可能な電源を用いた場合、電圧の設定を変更するのに１５０μｓかかる。また、ＤＲＡＭの規格により、例えば、クロックの変更に６μｓかかる。さらに、４ＲＡＮＫ−ＤＩＭＭに対するメモリチューニングにかかる時間は、例えば、２３０μｓである。
【００６９】
すなわち、周波数及び電圧の設定変更の処理時間は、メモリチューニングを実行した場合、１５０μｓ＋６μｓ＋２３０μｓ＝３８６μｓかかる。
【００７０】
これに対して、設定値保持レジスタ１４の動作が、メモリモジュール２のクロックと同じスピードで行われるとすると、設定値保持レジスタ１４を用いた場合、周波数及び電圧の設定変更の処理時間は、１５０μｓ＋６μｓ＋数ｎｓ≒１５６μｓとなる。ここで、「数ｎｓ」の項は、設定値保持レジスタ１４からの設定値の読み出しなどにかかる時間である。
【００７１】
このように、設定値保持レジスタ１４を使用することで、チューニングを行う場合に比べて処理時間を６０％削減することができる。情報処理装置の運用中は細かく周波数及び電圧の設定が変更されるため、運用全体から見れば初回のチューニング時間は無視可能となり、実質的に情報処理装置の処理時間が６０％減ったように見える。
【００７２】
また、本実施例では、周波数及び電圧の設定の種類を３種類としたが、それ以上の種類の設定を有する場合、有する全ての設定について設定値保持レジスタを持てば、チューニングの回数は設定毎に１回ずつで済み、同様の効果が得られる。
【実施例２】
【００７３】
次に、実施例２について説明する。本実施例に係るメモリ制御装置は、システム起動時に周波数及び電圧の設定の種類毎のチューニングをそれぞれ実行しておくことが実施例１と異なる。本実施例に係る情報処装置も図１で表される。以下の説明では、実施例１と同様の機能を有する各部については説明を省略する。
【００７４】
ＣＰＵ６は、情報処理装置が起動してから通常設定のチューニングが終わると、他の周波数及び電圧の設定を選択する。そして、ＣＰＵ６は、選択した設定への周波数及び電圧の設定変更をクロック／電圧設定回路３へ通知する。ＣＰＵ６は、予め決められている周波数及び電圧の設定の全てに対してチューニングが実施されるまで設定変更の通知を繰り返す。
【００７５】
クロック／電圧設定回路３は、情報処理装置起動時に周波数及び電圧の設定として通常設定をメモリアクセス制御回路１１へ通知し、その後、ＣＰＵ６から受信した設定変更の通知にしたがい、周波数及び電圧の設定をメモリアクセス制御回路１１へ順次通知する。
【００７６】
メモリアクセス制御回路１１は、情報処理装置起動時に通常設定の周波数及び電圧を受信し、その後、異なる周波数及び電圧の設定を順次クロック／電圧設定回路３から受信する。そして、メモリアクセス制御回路１１は、通常設定から始まり周波数及び電圧の全ての設定についてのメモリチューニングの実施をメモリチューニング回路１３に順次指示する。
【００７７】
メモリチューニング回路１３は、情報処理装置起動時に、通常設定から始まり周波数及び電圧の全ての設定についてのメモリチューニングの実施の指示をメモリアクセス制御回路１１から受信する。そして、メモリチューニング回路１３は、指示にしたがい各周波数及び電圧の設定に対するメモリチューニングを順次実施していく。そして、メモリチューニング回路１３は、チューニングにより決定した制御情報の設定値を、周波数及び電圧の設定に対応させて設定値保持レジスタ１４へ格納する。
【００７８】
次に、図４を参照して、本実施例に係るメモリ制御装置による起動時のメモリ制御処理について説明する。図４は、実施例２に係るメモリ制御装置による起動時のメモリ制御処理のフローチャートである。
【００７９】
操作者により情報処理装置に電源が投入されることで、システムが起動する（ステップＳ２０１）。
【００８０】
クロック／電圧設定回路３は、通常設定の周波数及び電圧をメモリアクセス制御回路１１に通知する。そして、メモリアクセス制御回路１１は、通常設定の周波数及び電圧をメモリチューニング回路１３へ通知する（ステップＳ２０２）。
【００８１】
メモリチューニング回路１３は、メモリアクセス制御回路１１から通知された周波数及び電圧の設定を用いて、メモリチューニングを行う（ステップＳ２０３）。
【００８２】
そして、メモリチューニング回路１３は、メモリアクセス制御回路１１から通知された周波数及び電圧の設定に対応する制御情報の設定値を決定する（ステップＳ２０４）。
【００８３】
次に、メモリチューニング回路１３は、決定した設定値をメモリアクセス制御回路１１から通知された周波数及び電圧の設定に対応づけて設定値保持レジスタ１４へ格納する（ステップＳ２０５）。
【００８４】
ＣＰＵ６は、全ての周波数及び電圧の設定について制御情報の設定値の決定が完了したか否かを判定する（ステップＳ２０６）。本実施例では、ＣＰＵ６は、通常設定、高パフォーマンス設定及び低消費電力設定の３種類の設定について、制御情報の設定値の決定が完了したか否かを判定する。
【００８５】
全ての周波数及び電圧の設定について制御情報の設定値の決定が完了していない場合（ステップＳ２０６：否定）、ＣＰＵ６は、新たに周波数及び電圧の設定を選択する（ステップＳ２０７）。
【００８６】
そして、ＣＰＵ６は、新たに選択した周波数及び電圧の設定をクロック／電圧設定回路３へ通知する。クロック／電圧設定回路３は、新たに選択された周波数及び電圧の設定をメモリアクセス制御回路１１に通知する。そして、メモリアクセス制御回路１１は、新たに選択された周波数及び電圧の設定をメモリチューニング回路１３へ通知する（ステップＳ２０８）。
【００８７】
これに対して、全ての周波数及び電圧の設定について制御情報の設定値の決定が完了した場合（ステップＳ２０６：肯定）、メモリコントローラ１及びＣＰＵ６は、制御情報の設定値の決定の処理を終了する。
【００８８】
以上に説明したように、本実施例に係るメモリ制御装置は、情報処理装置の起動時に周波数及び電圧の設定全てについてメモリチューニングを行い、対応する制御情報の設定値を決定し記憶しておく。これにより、起動処理後の情報処理装置の運用時には、すでに記憶する制御情報の設定値を用いてメモリを制御することができ、運用中のメモリチューニングの実行を回避することができる。すなわち、情報処理装置の運用時における処理負荷を軽減することができ、また、運用時における周波数及び電圧の変更による処理時間の増加を抑えることができる。
【実施例３】
【００８９】
次に、実施例３について説明する。メモリの制御情報の設定は、温度の変化によっても影響を受けることが考えられる。そのため、温度が変化した場合に行ったチューニングにより決定される設定値と、温度変化前の設定値とは異なる場合がある。そのため、温度の違いによっても制御情報を異ならせることが好ましい場合もある。そこで、本実施例に係るメモリ制御装置は、周波数及び電圧の設定に加えて温度毎に制御情報の設定値を決定することが実施例１と異なる。
【００９０】
図５は、実施例３に係る情報処理装置のブロック図である。本実施例に係るメモリコントローラ１は、実施例１の構成に加えて温度測定部１６をさらに有する。以下の説明では、実施例１と同様の機能を有する各部については説明を省略する。
【００９１】
温度測定部１６は、メモリモジュール２付近の温度を計測する。そして、温度測定部１６は、計測温度の情報をメモリアクセス制御回路１１へ出力する。
【００９２】
図６は、実施例３に係る設定値保持レジスタの格納情報を説明するための図である。設定値保持レジスタ１４は、図６に示すように周波数及び電圧の設定毎に温度が異なる場合の設定情報を格納する。
【００９３】
第１−１設定値保持レジスタ１４５は、周波数及び電圧が通常設定であり温度が２０℃の場合の制御情報の設定値を格納する。第１−２設定値保持レジスタ１４６は、周波数及び電圧が通常設定であり温度が２５℃の場合の制御情報の設定値を格納する。第１−３設定値保持レジスタ１４７は、周波数及び電圧が通常設定であり温度が３０℃の場合の制御情報の設定値を格納する。
【００９４】
ここで、図６では、説明の都合上、通常設定の場合の温度毎の設定情報を格納する第１−１設定値保持レジスタ１４５〜第１−３設定値保持レジスタ１４７を記載したが、他の設定についても温度毎に設定情報が格納されている。また、図６では、２０℃、２５℃及び３０℃という３段階の温度について記載したが、最低温度はもっと低くてもよいし最高温度はもっと高くてもよい。また、本実施例では、温度変化の絶対値が５℃を超えればメモリの状態が変化すると考え、温度の幅を５℃としたが、温度の幅は、もっと細かくてもよいし、もっと粗くてもよい。
【００９５】
メモリアクセス制御回路１１は、周波数及び電圧の設定の通知をクロック／電圧設定回路３から受信する。また、メモリアクセス制御回路１１は、測定温度の入力を温度測定部１６から受ける。
【００９６】
メモリアクセス制御回路１１は、通知された周波数及び電圧が以前に設定された周波数及び電圧か否かを判定する。
【００９７】
以前に設定された周波数及び電圧であれば、メモリアクセス制御回路１１は、測定温度に対応する制御情報が設定値保持レジスタ１４に格納されているか否かを判定する。ここで、メモリアクセス制御回路１１は、測定温度が既に設定値保持レジスタ１４に格納されている温度から±５℃の許容範囲内にあれば、その組み合わせに対応する制御情報が設定値保持レジスタ１４に格納されていると判定する。
【００９８】
目的の制御情報が設定値保持レジスタ１４に格納されている場合、メモリアクセス制御回路１１は、通知された周波数及び電圧、並びに、測定温度をデータ送受信モジュール１２に通知する。
【００９９】
一方、通知された周波数及び電圧の設定が以前になされていない場合、又は、測定温度が設定値保持レジスタ１４に格納されている温度の許容範囲外の場合、メモリアクセス制御回路１１は、メモリチューニングの実施をメモリチューニング回路１３に指示する。
【０１００】
メモリチューニング回路１３は、メモリチューニングの実施の指示をメモリアクセス制御回路１１から受ける。
【０１０１】
次に、メモリチューニング回路１３は、その状態の電圧及びクロックの周波数を用いてメモリチューニングを実施する。そして、メモリチューニング回路１３は、その状態の電圧及びクロックの周波数に対応する制御情報の設定値を決定する。
【０１０２】
その後、メモリチューニング回路１３は、決定した設定値をデータ送受信モジュール１２へ通知する。さらに、メモリチューニング回路１３は、その状態の周波数及び電圧の値、並びに、温度情報をメモリアクセス制御回路１１から受信し、周波数及び電圧の設定、並びに、温度に対応させて、決定した制御情報の設定値を設定値保持レジスタ１４へ格納する。
【０１０３】
ここで、本実施例では、設定値保持レジスタ１４の容量が十分にあり、メモリチューニング回路１３は、決定した設定情報を全て設定値保持レジスタ１４に格納する。
【０１０４】
ただし、設定値保持レジスタ１４の容量が小さい場合が考えられる。その場合、例えば、設定値保持レジスタ１４へ格納される制御情報の数の上限を決めておき、既に格納されている個数が上限に達した場合、メモリチューニング回路１３は、格納されている制御情報のうち最も古いものを削除して、新たに制御情報を格納する。また、上限についても、全体の個数の上限、周波数及び電圧の設定毎の上限、又は、温度毎の上限など運用に合わせて設定されることが好ましい。
【０１０５】
データ送受信モジュール１２は、周波数及び電圧の設定、並びに、測定温度をメモリアクセス制御回路１１から受信する。そして、データ送受信モジュール１２は、周波数及び電圧の設定、並びに、測定温度に対応する制御情報の設定値を取得する。ただし、データ送受信モジュール１２は、測定電圧に対して±５℃の範囲にある温度に対応する制御情報の設定値を、測定温度に対応する制御情報の設定値として取得する。
【０１０６】
そして、データ送受信モジュール１２は、取得した設定値を用いて、メモリモジュール２の制御を行う。
【０１０７】
また、データ送受信モジュール１２は、メモリチューニング回路１３から制御情報の設定値を受信した場合、受信した設定値を用いて、メモリモジュール２の制御を行う。
【０１０８】
次に、図７を参照して本実施例に係るメモリ制御装置によるメモリ制御処理について説明する。図７は、実施例３に係るメモリ制御装置によるメモリ制御処理のフローチャートである。
【０１０９】
ＣＰＵ６は、周波数及び電圧の設定変更をクロック／電圧設定回路３に指示する（ステップＳ３０１）。クロック／電圧設定回路３は、ＣＰＵ６から指定された周波数及び電圧の設定をメモリアクセス制御回路１１へ通知する。
【０１１０】
メモリアクセス制御回路１１は、通知された周波数及び電圧の設定に対応する制御情報が設定値保持レジスタ１４に存在するかを確認し、その周波数及び電圧が以前に設定された周波数及び電圧か否かを判定する（ステップＳ３０２）。
【０１１１】
以前に設定された周波数及び電圧でない場合（ステップＳ３０２：否定）、メモリアクセス制御回路１１は、メモリチューニングの実施をメモリチューニング回路１３へ指示する。メモリチューニング回路１３は、メモリアクセス制御回路１１からの指示を受けて、その状態で供給されるクロック及び電圧を用いてメモリチューニングを行う（ステップＳ３０３）。
【０１１２】
そして、メモリチューニング回路１３は、その状態で供給される電圧及びクロックの周波数に対応する制御情報の設定値を決定する（ステップＳ３０４）。次に、メモリチューニング回路１３は、決定した設定値をデータ送受信モジュール１２へ通知する。
【０１１３】
データ送受信モジュール１２は、設定レジスタ１５をリセットし、通知された設定値を新たに設定レジスタ１５へ書き込む（ステップＳ３０５）。
【０１１４】
その後、データ送受信モジュール１２は、設定レジスタ１５が保持する設定値を用いてメモリモジュール２の制御を行い、メモリバスの使用を開始する（ステップＳ３０６）。
【０１１５】
メモリチューニング回路１３は、周波数及び電圧及び測定温度に対応させて決定した設定値を設定値保持レジスタ１４へ格納する（ステップＳ３０７）。
【０１１６】
一方、以前に設定された周波数及び電圧の場合（ステップＳ３０２：肯定）、メモリアクセス制御回路１１は、以前にその周波数及び電圧が設定されたときの温度の許容範囲内に測定温度があるか否かを判定する（ステップＳ３０８）。許容範囲内でない場合（ステップＳ３０８：否定）、メモリアクセス制御回路１１は、ステップＳ３０３へ進む。
【０１１７】
これに対して、許容範囲内の場合(ステップＳ３０８：肯定)、メモリアクセス制御回路１１は、指定された周波数及び電圧の設定、並びに、測定温度をデータ送受信モジュール１２へ通知する。データ送受信モジュール１２は、通知された周波数及び電圧の設定、並びに、測定温度が許容範囲内にある温度に対応する制御情報の設定値を設定値保持レジスタ１４から読み出す（ステップＳ３０９）。
【０１１８】
次に、データ送受信モジュール１２は、設定レジスタ１５をリセットし、読み出した設定値を新たに設定レジスタ１５へ書き込む（ステップＳ３１０）。
【０１１９】
その後、データ送受信モジュール１２は、設定レジスタ１５が保持する設定値を用いてメモリモジュール２の制御を行い、メモリバスの使用を開始する（ステップＳ３１１）。
【０１２０】
以上に説明したように、本実施例に係るメモリ制御装置は、周波数及び電圧の設定、並びに、温度の組み合わせに対応させて制御情報の設定値を決定し、決定した制御情報の設定値を記憶しておく。これにより、温度の変化によるメモリの設定変更にも対応でき、より適切なチューニングを迅速に提供することができる。また、温度を考慮したチューニングを行う場合にも、処理負荷や処理時間を軽減することができる。
【０１２１】
（変形例）
以上の各実施例では、情報処理装置の起動後にメモリチューニングを行い、決定した制御情報の設定値を保持していた。しかし、周波数及び電圧の設定に対する制御情報の設定値の変動がなくほぼ固定である場合、情報処理装置の起動毎にチューニングを行わずに、一度決定した制御情報を次の起動時に用いてもよい。
【０１２２】
例えば、設定値保持レジスタ１４を、不揮発性メモリとする。そして、メモリチューニング回路１３は、メモリチューニングを行い決定した制御情報の設定値を不揮発性メモリである設定値保持レジスタ１４に格納する。メモリアクセス制御回路１１は、不揮発性メモリである設定値保持レジスタ１４に指定された周波数及び電圧の設定に対応する制御情報が格納されていれば、指定された周波数及び電圧の設定をデータ送受信モジュール１２に通知する。そして、データ送受信モジュール１２は、指定された周波数及び電圧の設定に対応する制御情報の設定値を不揮発性メモリである設定値保持レジスタ１４から読み込み、メモリモジュール２の制御を行う。
【０１２３】
そして、不揮発性メモリは電源を落としても保持データを失わないため、この場合、設定値保持レジスタ１４は、情報処理装置の再起動後も決定された各周波数及び電圧の設定に対応する制御情報の設定値を保持し続ける。そのため、情報処理装置を再起動しても、メモリチューニング回路１３は、メモリチューニングを行わずに済み、データ送受信モジュール１２は、設定値保持レジスタ１４に格納される制御情報の設定値を用いてメモリモジュール２の制御を行うことができる。また、ここでは、周波数及び電圧の設定に対応する制御情報について説明したが、温度との組み合わせでも同様である。
【０１２４】
さらに、以上の説明では実際に情報処理装置を利用する利用者が情報処理装置を利用する際にメモリチューニングを行い制御情報を決定するとした。これに対して、メモリに対する制御情報の設定値がここの装置でほぼ差がない場合、情報処理装置の製造メーカが出荷する前に、各実施例に係るメモリコントローラ１を用いてメモリチューニングを行い、予め制御情報の設定値を設定値保持レジスタ１４に格納させておいてもよい。これにより、利用者が情報処理装置を利用する段階では、メモリチューニングが行われないことになり、さらなる処理負荷の軽減及び処理時間の短縮を図ることができる。
【符号の説明】
【０１２５】
１  メモリコントローラ
２  メモリモジュール
３  クロック／電圧設定回路
４  クロック供給回路
５  電圧供給回路
６  ＣＰＵ
７  ハードディスク装置
１１  メモリアクセス制御回路
１２  データ送受信モジュール
１３  メモリチューニング回路
１４  設定値保持レジスタ
１５  設定レジスタ
１６  温度測定部
２０  メモリ
【図１】
2015036965.tif 000003
【図２】
2015036965.tif 000004
【図３】
2015036965.tif 000005
【図４】
2015036965.tif 000006
【図５】
2015036965.tif 000007
【図６】
2015036965.tif 000008
【図７】
2015036965.tif 000009