(57)【特許請求の範囲】
【請求項１】
複数のスレッドを含むプログラムを実行するとともにメモリアクセスを出力する演算処理装置と、通常状態と省電力状態のいずれかにより動作するメモリブロックを複数有する記憶装置とに接続する制御装置において、
前記複数のメモリブロックの各々が前記通常状態から前記省電力状態への遷移を禁止する旨を示す遷移禁止情報を、前記複数のメモリブロックの各々に対応させて格納する第１のデータ格納部と、
前記複数のメモリブロックのうち前記省電力状態にあるメモリブロックに対して前記演算処理装置が出力したメモリアクセスが要求された要求回数を、前記複数のスレッドの各々に対応させて格納する第２のデータ格納部と、
前記演算処理装置が出力したメモリアクセスの要求先を含むメモリブロックが前記省電力状態にある場合、前記第２のデータ格納部に格納された前記メモリアクセスに対応するスレッドの要求回数を増加させ、増加後の要求回数が所定の閾値を超えたとき、前記第１のデータ格納部に格納された前記メモリアクセスの要求先を含むメモリブロックについて前記省電力状態への遷移を禁止することを示す遷移禁止情報を設定する設定部を有する制御装置。
【請求項２】
前記制御装置はさらに、
前記第１のデータ格納部に前記複数のメモリブロックの各々に対応させて格納された遷移禁止情報に基づき、前記記憶装置の電力を制御する制御部を有する請求項１記載の制御装置。
【請求項３】
前記制御装置において、
前記設定部はさらに、
前記演算処理装置が出力したメモリアクセスの要求先を含むメモリブロックが前記省電力状態にある場合、前記第２のデータ格納部に格納された前記メモリアクセスに対応するスレッドの要求回数を増加させ、増加後の要求回数が所定の閾値を超えたとき、前記第１のデータ格納部において、前記メモリアクセスの要求先を含むメモリブロックが前記通常状態から前記省電力状態への遷移が禁止されていないことを示す遷移可能情報が格納されているか判断した結果、前記遷移可能情報が格納されている場合にのみ前記第１のデータ格納部に格納された前記メモリアクセスの要求先を含むメモリブロックについて前記省電力状態への遷移を禁止することを示す遷移禁止情報を設定する請求項１又は２記載の制御装置。
【請求項４】
前記制御装置において、
前記設定部はさらに、
前記通常状態または前記省電力状態が設定されるメモリブロック毎に、前記演算処理装置からのメモリアクセスの間隔を計測し、前記複数のメモリブロックのうち、メモリアクセスが所定時間以上無いメモリブロックを前記通常状態から前記省電力状態に遷移させる請求項１〜３のいずれか１項記載の制御装置。
【請求項５】
前記制御装置において、
前記設定部はさらに、
前記第２の格納部において、前記複数のスレッドの各々に対応させて格納された要求回数のうち、メモリアクセスが一定時間以上無いスレッドに対応する要求回数を削除する請求項１〜４のいずれか１項記載の制御装置。
【請求項６】
複数のスレッドを含むプログラムを実行するとともにメモリアクセスを出力する演算処理装置と、
通常状態と省電力状態のいずれかにより動作するメモリブロックを複数有する記憶装置と、
前記複数のメモリブロックの各々が前記通常状態から前記省電力状態への遷移を禁止する旨を示す遷移禁止情報を、前記複数のメモリブロックの各々に対応させて格納する第１のデータ格納部と、前記複数のメモリブロックのうち前記省電力状態にあるメモリブロックに対して前記演算処理装置が出力したメモリアクセスが要求された要求回数を、前記複数のスレッドの各々に対応させて格納する第２のデータ格納部と、前記演算処理装置が出力したメモリアクセスの要求先を含むメモリブロックが前記省電力状態にある場合、前記第２のデータ格納部に格納された前記メモリアクセスに対応するスレッドの要求回数を増加させ、増加後の要求回数が所定の閾値を超えたとき、前記第１のデータ格納部に格納された前記メモリアクセスの要求先を含むメモリブロックについて前記省電力状態への遷移を禁止することを示す遷移禁止情報を設定する設定部とを備えた制御装置を有する情報処理装置。
【請求項７】
複数のスレッドを含むプログラムを実行するとともにメモリアクセスを出力する演算処理装置と、通常状態と省電力状態のいずれかにより動作するメモリブロックを複数有する記憶装置とに接続するとともに、前記複数のメモリブロックの各々が前記通常状態から前記省電力状態への遷移を禁止する旨を示す遷移禁止情報を、前記複数のメモリブロックの各々に対応させて格納する第１のデータ格納部と、前記複数のメモリブロックのうち前記省電力状態にあるメモリブロックに対して前記演算処理装置が出力したメモリアクセスが要求された要求回数を、前記複数のスレッドの各々に対応させて格納する第２のデータ格納部とを有する制御装置の制御方法において、
前記制御装置が有する制御部が、前記演算処理装置が出力したメモリアクセスの要求先を含むメモリブロックが前記省電力状態にある場合、前記第２のデータ格納部に格納された前記メモリアクセスに対応するスレッドの要求回数を増加させ、
増加後の要求回数が所定の閾値を超えたとき、前記制御部が、前記第１のデータ格納部に格納された前記メモリアクセスの要求先を含むメモリブロックについて前記省電力状態への遷移を禁止することを示す遷移禁止情報を設定する制御装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、記憶装置の制御技術に関する。
【背景技術】
【０００２】
例えば、コンピュータの主記憶装置は、ＤＩＭＭ（Dual Inline Memory Module）など１又は複数のメモリモジュールを含んでおり、１つのメモリモジュールは、データを入出力する単位である１又は複数のランクを含んでいる。また、ランク（Rank）は、電力制御の単位でもある。
【０００３】
また、中央演算処理装置（Central Processing Unit:CPU）に接続されているメモリアクセスコントローラ（Memory Access Controller:MAC）は、例えば特定のランクへ一定時間アクセスがない場合には省電力モードに遷移させるような制御を行っている。
【０００４】
例えば一つのプログラムの２つのスレッドＡ及びＢを中央演算処理装置（Central Processing Unit:CPU）で並列実行する場合を想定する。この場合、図１に模式的に示すように、Ｒａｎｋ０にはスレッドＡのデータＤａｔａＡ及びスレッドＢのデータＤａｔａＢが記憶されており、Ｒａｎｋ１にはスレッドＢのデータＤａｔａＢが記憶されているものとする。また、スレッドＡのメモリアクセスは、短い間隔で頻繁に発生し、スレッドＢのメモリアクセスは、比較的長い間隔で行われるものとする。そうすると、Ｒａｎｋ１については、アクセス頻度が低いため省電力モードに遷移しやすくなる。そうすると、スレッドＢがメモリにアクセスする際に、Ｒａｎｋ１が省電力モードになってしまっている場合が多く発生することが想定される。
【０００５】
例えば、いずれのＲａｎｋも省電力モードに遷移しない場合には、図２に示すようにスレッドＡ及びスレッドＢの実行時間が同じであるものとする。しかし、アクセス頻度が低い場合には省電力モードに遷移するような電力制御を行うと、図３に示すように、省電力モードのＲａｎｋにアクセスしたことによるストールが、スレッドＡよりスレッドＢに多く発生してしまう可能性がある。このように、特定のスレッドについてのみストールが多く発生すると、特定のスレッドの実行時間が長くなって、全体としても実行時間が長くなってしまう。図３の例では、Ｔｄだけ、省電力モードに遷移しない場合に比して実行時間が長くなってしまう。同期をとるためスレッドＡがスレッドＢを待機するような場合も同様に実行時間が長くなってしまう。そうすると、たとえメモリについて省電力が図られても、中央演算処理装置については電力を使用する時間が長くなり、中央演算処理装置の単位時間あたりの消費電力が多い分全体の消費電力が多くなる可能性がある。
【０００６】
なお、無駄な消費電力を削減することを目的としてタスクの起動状態または停止状態に応じて必要なデバイスの電源を管理する技術や、メモリ領域毎に、割り当てが行われたメモリブロックの数を管理して、割り当てがメモリブロックの数が閾値（例えば０）になると電力供給を停止するという技術も存在している。しかしながら、上で述べたような問題については考慮されていない。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平８−２３４８７２号公報
【特許文献２】特開２００７−８６９０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従って、本技術の目的は、一側面としては、１つのプログラムから生成される複数のスレッド間の実行時間の不均衡を抑制するための技術を提供することである。
【課題を解決するための手段】
【０００９】
本技術に係る制御装置は、（Ａ）記憶装置において電力制御が行われる単位のメモリブロックに対応させて省電力状態への遷移が禁止されているか否かを表すデータを格納する第１のデータ格納部と、（Ｂ）あるプログラムのスレッドに対応させて、省電力状態にあるメモリブロックへのアクセスが要求された回数を格納する第２のデータ格納部と、（Ｃ）演算処理装置から受信したメモリ要求のアクセス先を含むメモリブロックが省電力状態となっている場合には第２のデータ格納部においてメモリ要求の要求元スレッドについての回数を増加させ、増加後の回数が所定の閾値を超えた場合には第１のデータ格納部においてメモリ要求のアクセス先を含むメモリブロックについて省電力状態への遷移が禁止されていることを表すデータを設定する第１の制御部とを有する。
【発明の効果】
【００１０】
１つのプログラムから生成される複数のスレッド間の実行時間の不均衡を抑制することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、ランク（Ｒａｎｋ）を説明するための図である。
【図２】図２は、従来技術の問題を説明するための図である。
【図３】図３は、従来技術の問題を説明するための図である。
【図４】図４は、第１の実施の形態における構成例を示す図である。
【図５】図５は、第１の実施の形態における処理フローを示す図である。
【図６】図６は、第１の実施の形態における効果を説明するための図である。
【図７】図７は、第２の実施の形態における構成例を示す図である。
【図８】図８は、Ｒａｎｋ毎の状態を管理するためのデータの一例を示す図である。
【図９】図９は、モードレジスタに格納されるデータの一例を示す図である。
【図１０】図１０は、管理テーブルの一例を示す図である。
【図１１】図１１は、第２の実施の形態における処理フローを示す図である。
【発明を実施するための形態】
【００１２】
［実施の形態１］
図４に、本技術の実施の形態の構成例を示す。図４は、コンピュータの一部を示しており、制御装置２００は、中央演算処理装置１００及び主記憶装置３００と接続されている。中央演算処理装置１００では１つのプログラムについての複数のスレッド（例えばスレッドＡ及びＢ）を実行している。主記憶装置３００は、電力制御の単位であるメモリブロック（例えばメモリブロックＡ乃至Ｄ）が複数含まれている。すなわち、メモリブロック毎に、通常状態（又は通常モードとも呼ぶ）から省電力状態（又は省電力モード、若しくは低消費電力状態又は低消費電力モードとも呼ぶ）への遷移などの電力制御が行われる。なお、各メモリブロックについてのアドレスの範囲については制御装置２００が管理しているものとする。
【００１３】
制御装置２００は、本実施の形態における主要な処理を実施する第１制御部２１０と、第１データ格納部２２０と、第２データ格納部２３０と、主記憶装置３００における各メモリブロックについて電力制御を実施する第２制御部２４０とを有する。
【００１４】
第１データ格納部２２０は、上で述べたメモリブロック毎に省電力状態への遷移が禁止されているか否かを表すデータを格納する。第２データ格納部２３０は、あるプログラムのスレッド毎に、省電力状態にあるメモリブロックへのアクセスが要求された回数を格納する。
【００１５】
第１制御部２１０は、中央演算処理装置１００からのメモリ要求に応じて、第１データ格納部２２０及び第２データ格納部２３０に格納されているデータを用いて以下で述べる処理を実施する。また、第１制御部２１０は、処理結果として第１データ格納部２２０にデータを格納する場合もあれば、第２データ格納部２３０にデータを格納する場合もある。
【００１６】
次に、図５を用いて図４に示した装置の処理内容を説明する。なお、図５の処理は、中央演算処理装置１００からのメモリ要求を処理する毎に実行される。
【００１７】
例えば、第１制御部２１０は、中央演算処理装置１００からメモリ要求を受信して当該メモリ要求を処理する段階になると、メモリ要求のアクセス先を含むメモリブロックが省電力状態であるか判断する（図５：ステップＳ１）。各メモリブロックが省電力状態であるか否かを表すデータについては、第１制御部２１０が管理している場合もあれば、例えば第２制御部２４０が第１データ格納部２２０に格納するようにして、第１制御部２１０がそのデータを参照するようにしても良い。
【００１８】
メモリ要求のアクセスを含むメモリブロックが省電力状態でない場合には、第１制御部２１０は、通常処理を実施する（ステップＳ３）。具体的には、メモリ要求に従って主記憶装置３００に対してリード又はライトを実施する。そして処理を終了する。
【００１９】
一方、メモリ要求のアクセス先を含むメモリブロックが省電力状態である場合には、第１制御部２１０は、第２データ格納部２３０において当該メモリ要求の要求元スレッドについての回数を例えば１増加させる（ステップＳ５）。例えばメモリ要求にはスレッド識別子（すなわちＩＤ）が含まれており、メモリ要求から該当スレッドを特定する。
【００２０】
また、第１制御部２１０は、第２制御部２４０に対して、メモリ要求のアクセス先を含むメモリブロックを通常状態に遷移させて、その後メモリ要求に従って主記憶装置３００に対してアクセスを実施する（ステップＳ７）。第２制御部２４０は、例えば第１制御部２１０からの指示に応じて又は第１制御部２１０が第１データ格納部２２０に書き込んだ状態変更指示データに応じて、メモリ要求のアクセス先を含むメモリブロックを通常状態に遷移させる。
【００２１】
さらに、第１制御部２１０は、第２データ格納部２３０における要求元スレッドの回数が予め定められた閾値を超えているか判断する（ステップＳ９）。予め定められた閾値については、第２データ格納部２３０に格納されている場合もあれば、固定値であれば第１制御部２１０自体が保持している場合もある。要求元スレッドの回数が予め定められた閾値を超えていない場合には、処理を終了する。一方、要求元スレッドの回数が予め定められた閾値を超えている場合には、第１制御部２１０は、第１データ格納部２２０において、メモリ要求のアクセス先を含むメモリブロックについて、省電力状態への遷移を禁止するデータを格納する（ステップＳ１１）。第２制御部２４０は、このような省電力状態への遷移を禁止するデータに従って、このメモリブロックについてはアクセス頻度が予め定められた閾値以下といった状態になっても省電力状態に遷移させることはない。そして処理を終了する。
【００２２】
このような処理を実施することで、１つのプログラムの複数のスレッドのうち特定のスレッドの実行時間だけが長くなったりすることを回避できる。例えば、図６に模式的に示すように、閾値を２に設定すれば、図３に示した例より１回分ストールが少なくなり、図２のように省電力状態に遷移しない場合に比して長くなる実行時間はＴｄ２（＜Ｔｄ）に短縮される。また、スレッド間の実行時間の不均衡が是正される。さらに、おおよそストール１回分中央演算処理装置１００が消費する電力を削減できるようになる。また、上では中央演算処理装置１００と主記憶装置３００との関係を例として説明したが、マルチスレッドでプログラムを実行する他の演算処理装置と、他の記憶装置についても適用可能である。
【００２３】
［実施の形態２］
本技術の第２の実施の形態における構成例を図７に示す。本実施の形態におけるプロセッサ装置１０００は、中央演算処理装置（ＣＰＵ：Central Processing Unit）１１００と、メモリアクセスコントローラ（ＭＡＣ：Memory Access Controller）１２００とを有する。ＣＰＵ１１００には、キャッシュも含まれているものとする。また、プロセッサ装置１０００は、主記憶装置１５００に接続されている。本実施の形態では、主記憶装置１５００は、１又は複数のＤＩＭＭを含む。ＤＩＭＭは、１又は複数のランク（Ｒａｎｋ）を含む。例えば、ＤＩＭＭが両面実装の場合、１面が１ランクとなる場合もある。
【００２４】
ＭＡＣ１２００は、メモリ要求キュー（ＭＲＱ：Memory Request Queue）１２１０と、スケジューラ１２２０と、モードレジスタ１２３０と、比較器１２５０と、メモリ１２４０とを有する。
【００２５】
ＭＲＱ１２１０は、ＣＰＵ１１００が出力するメモリ要求を格納するキューである。メモリ要求は、ＣＰＵ１１００で実行されている１のプログラムの要求元スレッドを識別するためのスレッドＩＤと、アクセス先アドレスと、リードとライトのいずれであるかを表すデータとを含む。
【００２６】
スケジューラ１２２０は、メモリ要求についてのアクセス制御と、主記憶装置１５００におけるランク毎の電力制御とを行う。電力制御のために、各Ｒａｎｋが省電力状態にあるのか通常状態にあるのかを表すデータを保持している。図８は、ＤＩＭＭ毎に２つのＲａｎｋが含まれる例を示しており、ＤＩＭＭ１についてＲａｎｋ０及びＲａｎｋ１のそれぞれにつき省電力状態（例えば「１」）又は通常状態（例えば「０」）を表すデータと、ＤＩＭＭ２についてＲａｎｋ０及びＲａｎｋ１のそれぞれにつき省電力状態又は通常状態を表すデータとが格納されるようになっている。なお、各Ｒａｎｋについてのアドレスの範囲についてはスケジューラ１２２０が管理しているものとする。
【００２７】
モードレジスタ１２３０は、ランク毎に、省電力状態への遷移が禁止されているか否かを表すフラグ（禁止されている場合には「１」、禁止されていない場合には「０」）を格納するレジスタである。モードレジスタ１２３０は、例えば、図９に示すようなデータを格納する。図９は、ＤＩＭＭ毎に２つのＲａｎｋが含まれる例を示しており、ＤＩＭＭ１についてＲａｎｋ０及びＲａｎｋ１のそれぞれにつき「０」又は「１」のフラグが格納され、ＤＩＭＭ２についてＲａｎｋ０及びＲａｎｋ１のそれぞれにつき「０」又は「１」のフラグが格納される。
【００２８】
メモリ１２４０は、スレッド毎に、ＭＲＱ１２１０から読み出したメモリ要求のアクセス先を含むメモリブロックが省電力状態であった回数を格納する管理テーブル１２４１を格納している。管理テーブル１２４１のフォーマットは、例えば図１０に示すようなものである。図１０の例では、スレッドＩＤ毎に、上記回数を表すカウンタ値と、閾値とが格納されている。閾値については、各スレッドについて同一の固定値あっても良いし、例えば、プログラムの実行開始時に、当該プログラムについて生成されるスレッド毎に予め定められた閾値が設定される場合もある。
【００２９】
比較器１２５０は、スケジューラ１２２０からの指示に応じて管理テーブル１２４１における特定のスレッドのカウンタ値と閾値とを読み出して比較を行い、カウンタ値が閾値を上回っていればそれを表す信号をスケジューラ１２２０に出力する。
【００３０】
次に、図７に示した構成についての処理内容を図１１を用いて説明する。この処理は、１つのメモリ要求毎に実行される。まず、スケジューラ１２２０は、ＭＲＱ１２１０からメモリ要求を１つ読み出す（図１１：ステップＳ２１）。そして、スケジューラ１２２０は、当該メモリ要求の要求元スレッドが、管理テーブル１２４１に登録済みであるか判断する（ステップＳ２３）。要求元スレッドが管理テーブル１２４１に登録されていない場合には、スケジューラ１２２０は、要求元スレッドについてのデータを、管理テーブル１２４１に登録する（ステップＳ２５）。例えば、スレッドＩＤと、カウンタ値＝０と、閾値とを登録する。閾値は、上で述べたように固定値の場合もあれば、プログラムによって指定された値の場合もある。そして、ステップＳ２７に遷移する。
【００３１】
メモリ要求の要求元スレッドが管理テーブル１２４１に登録されている場合又はステップＳ２５の後に、スケジューラ１２２０は、メモリ要求のアクセス先が含まれるＲａｎｋを特定し、モードレジスタ１２３０における当該Ｒａｎｋのモードレジスタ値が０であるか、すなわち省電力状態への遷移が禁止されていないかを判断する（ステップＳ２７）。モードレジスタ１２３０における当該Ｒａｎｋのモードレジスタ値が１である、すなわち省電力状態への遷移が禁止されている場合には、スケジューラ１２２０は、通常処理を実施する（ステップＳ２９）。すなわち、メモリ要求に従って、アクセス先アドレスに対して、データのリード又はライトを実施する。そして処理は終了する。
【００３２】
一方、モードレジスタ１２３０における当該Ｒａｎｋのモードレジスタ値が０であれば、スケジューラ１２２０は、メモリ要求のアクセス先のＲａｎｋが現在省電力状態であるか判断する（ステップＳ３１）。図８のようなデータに基づき現在の状況を把握する。アクセス先のＲａｎｋが現在通常状態であれば、特別な処理を行わず、ステップＳ２９に遷移する。
【００３３】
一方、アクセス先のＲａｎｋが現在省電力状態であれば、スケジューラ１２２０は、管理テーブル１２４１において要求元スレッドのカウンタ値を１インクリメントする（ステップＳ３３）。また、スケジューラ１２２０は、メモリ要求のアクセス先のＲａｎｋを通常状態に遷移させた後、メモリ要求に従ってアクセスを実施する（ステップＳ３５）。アクセス先のアドレスに対して、データのリード又はライトを実施する。
【００３４】
その後、スケジューラ１２２０からの指示に応じて、比較器１２５０は、管理テーブル１２４１から要求元スレッドのカウンタ値と閾値とを比較して、カウンタ値＞閾値が成立するか判断する（ステップＳ３７）。カウンタ値≦閾値であれば、処理を終了する。一方、カウンタ値＞閾値が成立する場合には、比較器１２５０は、スケジューラ１２２０に信号を出力し、スケジューラ１２２０は、この信号に応じて、モードレジスタ１２３０において、メモリ要求のアクセス先を含むＲａｎｋについてのモードレジスタ値を「１」に設定する（ステップＳ３９）。そして処理を終了する。
【００３５】
このようにすれば、１つのプログラムについて生成された複数のスレッドのうち特定のスレッドについて、アクセス先のＲａｎｋが省電力状態であったことによって生ずるストールの回数が偏ったりすることを回避することができる。すなわち、複数のスレッド間で実行時間の不均衡を防止することができる。これによってプログラム全体の処理時間を短縮させることができる。複数のスレッドで同期をとる場合も、実行時間の不均衡があれば待機時間が長くなるが、本実施の形態によれば実行時間の不均衡が抑制されるので、待機時間が短くなり、プログラム全体の処理時間が短縮される。
【００３６】
また、複数のスレッド間で実行時間の不均衡が存在すると、処理が終了したスレッドを実行していたＣＰＵ１１００のコアはアイドル状態で電力を消費することになる。このＣＰＵ１１００のコアがアイドル状態で消費する消費電力は数十Ｗで、主記憶装置１５００に用いられるＤＩＭＭのＤＲＡＭ（Dynamic Random Access Memory）を省電力状態に遷移させることで削減できる電力は数Ｗ程度である。従って、実行時間の不均衡が抑制されて、プログラム全体の処理時間が短縮されるということは、消費電力の削減になる。
【００３７】
なお、スケジューラ１２２０は、主記憶装置１５００におけるＲａｎｋ毎にアクセス間隔等を計測して、所定時間以上アクセスがない場合には当該Ｒａｎｋを省電力状態に遷移させる処理も行っている。但し、スケジューラ１２２０は、モードレジスタ１２３０において省電力状態への遷移を禁止するか否かを表すフラグが「１」にセットされているＲａｎｋについては、省電力状態に遷移させることはない。
【００３８】
また、図１１の処理フローでは、スレッドが管理テーブル１２４１に登録されていなかった場合には登録する処理を示したが、スケジューラ１２２０は、例えば一定時間以上主記憶装置１５００に対するアクセスを行わないスレッドについては管理テーブル１２４１から削除する処理も行う。さらに、管理テーブル１２４１からスレッドの登録が全く無くなった場合には、モードレジスタ１２３０の全モードレジスタ値を「０」に初期化する。
【００３９】
以上本技術の実施の形態について述べたが、本技術はこれに限定されるものではない。例えば、機能ブロック図は一例であって必ずしも実際の機能ブロックと一致しない場合もある。処理フローについても、例えばステップＳ３３とステップＳ３５のように同時実行しても処理結果が変わらないものについては、順番を入れ替えたり、並列実行するようにしてもよい。
【００４０】
また、プロセッサ装置１０００にＭＡＣ１２００が含まれる例を示したが、ＭＡＣ１２００が別の半導体装置に実装される場合もある。
【００４１】
以上述べた本実施の形態をまとめると、以下のようになる。
【００４２】
本実施の形態に係る制御装置は、（Ａ）記憶装置において電力制御が行われる単位のメモリブロック毎に省電力状態への遷移が禁止されているか否かを表すデータを格納する第１のデータ格納部と、（Ｂ）あるプログラムのスレッド毎に、省電力状態にあるメモリブロックへのアクセスが要求された回数を格納する第２のデータ格納部と、（Ｃ）演算処理装置から受信したメモリ要求のアクセス先を含むメモリブロックが省電力状態となっている場合には第２のデータ格納部においてメモリ要求の要求元スレッドについての回数を増加させ、増加後の回数が所定の閾値を超えた場合には第１のデータ格納部においてメモリ要求のアクセス先を含むメモリブロックについて省電力状態への遷移が禁止されていることを表すデータを設定する第１の制御部とを有する。
【００４３】
このようにすれば、メモリ要求におけるアクセス先を含むメモリブロックが省電力状態になっている回数が閾値を超えることが無くなるので、あるプログラムのスレッド間で実行時間の不均衡が抑制されるようになる。すなわち、あるプログラムの処理時間を短縮させ、消費電力の削減も図られる。
【００４４】
なお、本実施の形態に係る制御装置は、第１のデータ格納部に格納されているデータに基づき、記憶装置の電力制御を実施する第２の制御部を含むようにしても良い。
【００４５】
さらに、上で述べた第１の制御部が、第１のデータ格納部においてメモリ要求のアクセス先を含むメモリブロックが省電力状態への遷移が禁止されていないことを表すデータが格納されているか判断し、省電力状態への遷移が禁止されていないことを表すデータが格納されている場合に処理を実施するようにしてもよい。省電力状態への遷移が禁止されている場合には処理を簡略化することができる。
【００４６】
なお、上で述べたような処理をメモリアクセスコントローラなどに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、ＣＤ−ＲＯＭなどの光ディスク、光磁気ディスク、半導体メモリ（例えばＲＯＭ）、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。
【００４７】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００４８】
（付記１）
記憶装置において電力制御が行われる単位のメモリブロックに対応させて省電力状態への遷移が禁止されているか否かを表すデータを格納する第１のデータ格納部と、
あるプログラムのスレッドに対応させて、前記省電力状態にあるメモリブロックへのアクセスが要求された回数を格納する第２のデータ格納部と、
演算処理装置から受信したメモリ要求のアクセス先を含むメモリブロックが前記省電力状態となっている場合には前記第２のデータ格納部において前記メモリ要求の要求元スレッドについての回数を増加させ、増加後の回数が所定の閾値を超えた場合には前記第１のデータ格納部において前記メモリ要求のアクセス先を含むメモリブロックについて前記省電力状態への遷移が禁止されていることを表すデータを設定する第１の制御部と、
を有する制御装置。
【００４９】
（付記２）
前記第１のデータ格納部に格納されているデータに基づき、前記記憶装置の電力制御を実施する第２の制御部
をさらに有する付記１記載の制御装置。
【００５０】
（付記３）
前記第１の制御部が、
前記第１のデータ格納部において前記メモリ要求のアクセス先を含むメモリブロックが前記省電力状態への遷移が禁止されていないことを表すデータが格納されているか判断し、前記省電力状態への遷移が禁止されていないことを表すデータが格納されている場合に処理を実施する
付記１又は２記載の制御装置。
【００５１】
（付記４）
記憶装置において電力制御が行われる単位のメモリブロックのうち、演算処理装置から受信したメモリ要求のアクセス先を含むメモリブロックが省電力状態となっているか判断するステップと、
前記アクセス先アドレスを含むメモリブロックが省電力状態となっている場合には、あるプログラムのスレッドに対応させて前記省電力状態にあるメモリブロックへのアクセスが要求された回数を格納する第１のデータ格納部において、前記メモリ要求の要求元スレッドについての回数を増加させるステップと、
増加後の回数が所定の閾値を超えたか判断するステップと、
増加後の回数が所定の閾値を超えたと判断された場合には、前記メモリブロックに対応させて省電力状態への遷移が禁止されているか否かを表すデータを格納する第２のデータ格納部において、前記メモリ要求のアクセス先を含むメモリブロックについて前記省電力状態への遷移が禁止されていることを表すデータを設定するステップと、
を含む制御方法。
【符号の説明】
【００５２】
１００  中央演算処理装置
２００  制御装置
２１０  第１制御部
２２０  第１データ格納部
２３０  第２データ格納部
２４０  第２制御部
３００  主記憶装置
１０００  プロセッサ装置
１１００  ＣＰＵ
１２００  ＭＡＣ
１２１０  ＭＲＱ
１２２０  スケジューラ
１２３０  モードレジスタ
１２４０  メモリ
１２４１  管理テーブル
１２５０  比較器
【図１】
0005699847.tif 000002
【図２】
0005699847.tif 000003
【図３】
0005699847.tif 000004
【図４】
0005699847.tif 000005
【図５】
0005699847.tif 000006
【図６】
0005699847.tif 000007
【図７】
0005699847.tif 000008
【図８】
0005699847.tif 000009
【図９】
0005699847.tif 000010
【図１０】
0005699847.tif 000011
【図１１】
0005699847.tif 000012