(57)【要約】【課題】回路規模を増大させることなく省電力化を図る。【解決手段】ＳＲＡＭシステム１は、ＳＲＡＭアレイ２と、格納部３と、検索部４と、電力制御部５とを有している。ＳＲＡＭアレイ２は、複数のＳＲＡＭで構成されている。格納部３は、プログラムまたはプロセスの実行時に使用されているコンテクストＩＤを、これらのプログラムまたはプロセスの実行時におけるＳＲＡＭのアクセスパターンと関連づけて格納する。検索部４は、コンテクスト切り替えが発生する度に、格納部３から、コンテクスト切り替え後のプログラムまたはプロセスにおけるコンテクストＩＤに一致するコンテクストＩＤに関連づけられたＳＲＡＭのアクセスパターンを検索する。電力制御部５は、検索部４によって検索されたＳＲＡＭのアクセスパターンに従って、該当するＳＲＡＭを読み書き可能にする。【選択図】図１
2008225859.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサ内部で使用されるＳＲＡＭシステムにおいて、
複数のＳＲＡＭで構成されるＳＲＡＭアレイと、
プログラムまたはプロセスの実行時に使用されているコンテクストＩＤを、前記プログラムまたはプロセスの実行時における前記ＳＲＡＭのアクセスパターンと関連づけて格納する格納部と、
コンテクスト切り替えが発生する度に、前記格納部から、コンテクスト切り替え後の前記プログラムまたはプロセスにおける前記コンテクストＩＤに一致する前記コンテクストＩＤに関連づけられた前記ＳＲＡＭのアクセスパターンを検索する検索部と、
前記検索部によって検索された前記ＳＲＡＭのアクセスパターンに従って、該当する前記ＳＲＡＭを読み書き可能にする電力制御部と、
を有することを特徴とするＳＲＡＭシステム。
【請求項２】
前記プログラムまたはプロセスの実行時における前記ＳＲＡＭのアクセスパターンを検出する検出部をさらに有し、
前記格納部は、前記プログラムまたはプロセスの実行時に使用されているコンテクストＩＤを、前記検出部が検出した前記ＳＲＡＭのアクセスパターンと関連づけて格納することを特徴とする請求項１記載のＳＲＡＭシステム。
【請求項３】
前記検出部が検出した前記ＳＲＡＭのアクセスパターンは、コンテクスト切り替えが発生したときにパワーＯＮまたはＯＦＦしていた前記ＳＲＡＭのパターンであることを特徴とする請求項２記載のＳＲＡＭシステム。
【請求項４】
前記格納部は、前記ＳＲＡＭを所定個毎にグループ化したそれぞれのグループ毎のビットパターンを、前記ＳＲＡＭのアクセスパターンとして格納することを特徴とする請求項１記載のＳＲＡＭシステム。
【請求項５】
マイクロプロセッサ内部で使用されるＳＲＡＭシステムの制御方法において、
プログラムまたはプロセスの実行時に使用されているコンテクスト切り替えが発生する度に、
検索部が、ＳＲＡＭアレイを構成する複数のＳＲＡＭのアクセスパターンとコンテクストＩＤとが予め関連づけて格納されている格納部から、コンテクスト切り替え後の前記プログラムまたはプロセスにおける前記コンテクストＩＤに一致する前記コンテクストＩＤに関連づけられた前記ＳＲＡＭのアクセスパターンを検索し、
電力制御部が、前記検索部によって検索された前記ＳＲＡＭのアクセスパターンに従って、該当する前記ＳＲＡＭを読み書き可能にする、
ことを特徴とするＳＲＡＭシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＳＲＡＭシステムおよびＳＲＡＭシステムの制御方法に関し、特に、マイクロプロセッサ内部で使用されるＳＲＡＭシステムおよびＳＲＡＭシステムの制御方法に関する。
【背景技術】
【０００２】
ＭＰＵ（Micro Processing Unit）を多く使用するコンピュータシステムにおいては、ＭＰＵの消費電力を削減する方法として、ＭＰＵ内部のＳＲＡＭ（Static Random Access Memory）カスタムマクロの消費電力を低減させることが効果的であることが知られている。このため、消費電力の低減を図るための種々の研究が行われ、発表がなされている。例えば、キャッシュメモリのラインをカウンタで管理し、あるアクセスから一定期間を経たラインについては電力を切断することで、消費電力を低減する方法が知られている（例えば、非特許文献１参照）。この方法は、プログラムのアクセスに時間的な局所性が存在することを利用している。
【０００３】
また、キャッシュメモリが使用されないとき、キャッシュラインに加える電圧を低電圧とし、電力を下げる手法が知られている（例えば、非特許文献２参照）。前述した方法とは異なり、キャッシュメモリとして値を保持できるレベルとして電源を与えるため、値が破壊されるわけではない。キャッシュラインは定期的にスリープモード（Drowsy mode）にされるというシンプルなアルゴリズムで、電力を削減する。
【０００４】
また、キャッシュメモリをＶＴ−ＣＭＯＳ（Variable Threshold Voltage CMOS）で構成し、電力制御をキャッシュライン単位で行う方法が知られている（例えば、非特許文献３参照）。
【０００５】
また、キャッシュラインでアクセスが集中するラインを常時電力投入しておくことで、性能を維持しつつ、他の使用されないラインの電力を削減する方式が知られている（例えば、非特許文献４参照）。
【０００６】
さらに、Ｃａｃｈｅ  Ｄｅｃａｙにプログラムのプロファイルベースの電力制御を行わせる方法が知られている（例えば、非特許文献５参照）。この方法は、プログラムをプロファイリングすることにより、キャッシュメモリのｄｅｃａｙ  ｉｎｔｅｒｖａｌを変える。
【非特許文献１】Cache Decay:Kaxiras et al, June 2001, ISCA-28
【非特許文献２】Drowsy cache:Flautner(T.Mudge) et al, May 2002, ISCA-29
【非特許文献３】DLC cache:Kawaguchi(Sakurai) et al, June 1998, Symposium on VLSI Circuits Digest
【非特許文献４】Miss-Density based power control:Komiya(Murakami) et al, 2005, SWoPP2005
【非特許文献５】Profile-Based Adaptation for Cache Decay:Sankaranarayanan et al,Sep 2004,ACM TACO Vol 1, No.3
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、従来の方法には以下のような問題があった。
例えば、非特許文献１では、電力を切断されたラインは、値が破壊される（読めなくなる）ため、その値を主記憶にコピーバックする等して保持しておく必要がある。
【０００８】
また、非特許文献２では、スリープモードから通常アクセスのモードにする場合には、１〜２サイクルのペナルティ（電源投入によるシステムの不安定動作を回避するための処理等）が発生する。この１〜２サイクルを使って、通常アクセスのモードにキャッシュラインを戻す（電源電圧を通常電圧に上げ、ＳＲＡＭとして動作可能な電源の状態にする）。値を保持できる程度の低電圧まで落とすという手法を使うため、半導体のばらつき（閾値電圧、プロセスコーナーの存在）、ノイズに弱いという欠点がある。
【０００９】
また、非特許文献３では、ラインの電力投入と、電圧安定化に要する時間が長く、ＳＲＡＭのアクセス時間が大幅に長くなるという欠点がある。
また、非特許文献４では、キャッシュ構成のときに、タグメモリ（Tag Memory）の部分に、各エントリにつき１つずつ、電力制御用のカウンタと電力制御回路が入ることになり、回路規模が増大するという欠点がある。
【００１０】
また、非特許文献５では、非特許文献１と同様に、電力が切断されたＳＲＡＭの値を主記憶にコピーバックする等して保持しておく必要があり、さらに実行にはプロファイル情報が必ず必要になる。
【００１１】
以上のように、前述した各方法は、主に、「ＳＲＡＭの内部の電力消費量をどのように削減するか」という視点に立っている。すなわち、消費電力を削減するために、データが破壊されるまで電源を切断するのか、それとも、データが保持できるレベルまで電圧を下げてリーク電流を減らすか、という考え方である。
【００１２】
そして、前述したように、従来の方法を用いて回路を実現する場合には、大きく分けて（１）電源切断状態あるいは低電圧印加状態から、通常の電源電圧状態まで復帰させ、かつ、電源的に安定した状態になるまで待たなければならず、近年の高周波数のマイクロプロセサでは、安定状態になるまでの待ち時間が無駄になる。（２）キャッシュＳＲＡＭのキャッシュタグの各タグエントリにつき、一つずつ電力制御用の小規模なメモリ素子とその制御回路が必要であり、回路規模の増大に繋がる。という２つの問題がある。
【００１３】
本発明はこのような点に鑑みてなされたものであり、回路規模を増大させることなく省電力化を図ることができるＳＲＡＭシステムおよびＳＲＡＭシステムの制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明では上記問題を解決するために、図１に示すようなＳＲＡＭシステム１が提供される。
本発明に係るＳＲＡＭシステム１は、マイクロプロセッサ１００内部で使用されるシステムである。
【００１５】
このＳＲＡＭシステム１は、ＳＲＡＭアレイ２と、格納部３と、検索部４と、電力制御部５とを有している。
ＳＲＡＭアレイ２は、複数のＳＲＡＭで構成されている。
【００１６】
格納部３は、プログラムまたはプロセスの実行時に使用されているコンテクストＩＤ（CONTEXT-ID）を、これらのプログラムまたはプロセスの実行時におけるＳＲＡＭのアクセスパターンと関連づけて格納する。
【００１７】
検索部４は、コンテクスト切り替えが発生する度に、格納部３から、コンテクスト切り替え後のプログラムまたはプロセスにおけるコンテクストＩＤに一致するコンテクストＩＤに関連づけられたＳＲＡＭのアクセスパターンを検索する。
【００１８】
電力制御部５は、検索部４によって検索されたＳＲＡＭのアクセスパターンに従って、該当するＳＲＡＭを読み書き可能にする。
このようなＳＲＡＭシステム１によれば、格納部３により、コンテクストＩＤが、ＳＲＡＭのアクセスパターンと関連づけて格納される。検索部４にコンテクスト切り替えが発生する度に、格納部３に格納されているコンテクストＩＤに関連づけられたＳＲＡＭのアクセスパターンが検索される。そして、電力制御部５により、検索部４によって検索されたＳＲＡＭのアクセスパターンに従って、該当するＳＲＡＭが読み書き可能にされる。
【発明の効果】
【００１９】
本発明では、あるプログラムまたはプロセスが実行されているときに、電源を投入しておくべきＳＲＡＭのアクセスパターンをコンテクストＩＤに関連づけて格納（記憶）しておくことで、コンテクスト切り替え時に、必要なＳＲＡＭのパターンを格納箇所から検索し、事前に電源を投入しておくようにした。これにより、プロセスが切り替わる度に電源の切断・投入の繰り返し等の無駄な動作を防止することができる。また、コンテクスト切り替え後にプログラムまたはプロセスが実行されるときには、既に実行に必要なＳＲＡＭの電源が投入されているので、電源切断状態から電源投入状態になるまでの待ち時間のペナルティがない。これにより、命令実行のスループットを改善させることができる。
【００２０】
また、システム構造を簡易なものとすることができ、システムの小型化を図ることができる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施の形態を、図面を参照して詳細に説明する。
まず、本発明の概要について説明し、その後、実施の形態を説明する。
図１は、本発明の概要を示す図である。
【００２２】
本発明に係るＳＲＡＭシステム１は、マイクロプロセッサ１００内部で使用されるシステムである。
このＳＲＡＭシステム１は、ＳＲＡＭアレイ２と、格納部３と、検索部４と、電力制御部５とを有している。
【００２３】
ＳＲＡＭアレイ２は、複数のＳＲＡＭで構成されている。
格納部３は、マイクロプロセッサ１００によるプログラムまたはプロセスの実行時に使用されているコンテクストＩＤを、これらのプログラムまたはプロセスの実行時におけるＳＲＡＭのアクセスパターンと関連づけて格納する。ここでコンテクストＩＤは、コンテクストの種別をシステム内で一意に定めるＩＤである。また、ＳＲＡＭのアクセスパターンとは、そのプロセスでアクセス（ｌｏａｄ／Ｓｔｏｒｅ等の命令）された物理的なＳＲＡＭのパターンを示すものであり、これを格納することで、そのプロセスが実際にアクセスした物理ＳＲＡＭマクロを判断することができる。
【００２４】
図１では、コンテクストＩＤ：ＩＤ＃ＡにＳＲＡＭ（アクセス）パターンＡが関連づけられており、コンテクストＩＤ：ＩＤ＃ＢにＳＲＡＭ（アクセス）パターンＢが関連づけられている。
【００２５】
なお、これらのアクセスパターンは、プログラムまたはプロセスの実行時におけるＳＲＡＭのアクセスパターンを検出する検出部６により検出される。
検索部４は、コンテクスト切り替えが発生する度に、格納部３から、コンテクスト切り替え後のプログラムまたはプロセスにおけるコンテクストＩＤに一致するコンテクストＩＤに関連づけられたＳＲＡＭのアクセスパターンを検索する。
【００２６】
電力制御部５は、検索部４によって検索されたＳＲＡＭのアクセスパターンに従って、該当するＳＲＡＭを（次のプログラムまたはプロセスの実行に先だって）読み書き可能にする。
【００２７】
このようなＳＲＡＭシステム１によれば、格納部３により、コンテクストＩＤが、ＳＲＡＭのアクセスパターンと関連づけて格納される。検索部４にコンテクスト切り替えが発生する度に、格納部３に格納されているコンテクストＩＤに関連づけられたＳＲＡＭのアクセスパターンが検索される。そして、電力制御部５により、検索部４によって検索されたＳＲＡＭのアクセスパターンに従って、該当するＳＲＡＭが読み書き可能にされる。
【００２８】
以下、本発明の実施の形態を説明する。
図２は、実施の形態のＳＲＡＭシステムを示すブロック図である。
ＳＲＡＭシステム１０は、ＭＰＵに搭載されるシステムであり、複数のキャッシュＳＲＡＭを備えるＳＲＡＭアレイ１１と、ＳＲＡＭアレイ１１を制御する電力制御回路１２とを有している。
【００２９】
ＳＲＡＭアレイ１１は、Ｙ行（縦Ｙ個）Ｘ列（横Ｘ個）の合計Ｍ個のＳＲＡＭ１１１を有している。
電力制御回路１２は、ＭＰＵが備えるＣＰＵ（図示せず）から所定のＳＲＡＭ１１１にアクセスするためのアクセスパターンを含むＳＲＡＭアクセスリクエスト信号、常時、電源を投入しておく必要があるＳＲＡＭ１１１を強制パワーＯＮさせるための電力制御信号、ＯＳのプログラムまたはプロセスの管理のための識別子として一般的に使用されているコンテクストＩＤ、およびプログラムまたはプロセスを切り替えるコンテクスト切り替え（コンテクストスイッチ）の発生を通知するためのＳＲＡＭ電力制御情報更新信号の入力を受け付ける。
【００３０】
また、電力制御回路１２は、ＳＲＡＭアクセスリクエスト信号を受け取ったとき、該当するＳＲＡＭがパワーＯＮしていない場合、ＳＲＡＭ１１１の電力投入にかかる時間（予め定められた時間）だけ、ＳＲＡＭ１１１へのアクセスを待機させるリトライ信号をＣＰＵに出力する。
【００３１】
図３は、電力制御回路を示すブロック図である。
電力制御回路１２は、内部制御部１２１と、ＣＡＭ１２２と、電力制御部１２３と、電力切断・投入部１２４とを有している。
【００３２】
内部制御部１２１は、ＳＲＡＭ電力制御情報更新信号を受け取ると、このタイミングでＣＡＭ１２２の内容を更新する制御信号を出力する。
また、内部制御部１２１は、ＳＲＡＭアクセスリクエスト信号を受け取ると、該当するＳＲＡＭをパワーＯＮさせる制御信号を電力制御部１２３に出力する。また、状況に応じて、リトライ信号をＣＰＵに出力する。
【００３３】
ＣＡＭ１２２は、複数のコンテクストＩＤを格納するＣＡＭ部１２２ａと、これらのコンテクストＩＤに関連づけられた、各ＳＲＡＭの電力を制御するためのビットマップ（RAM power bitmap）を格納する電力制御ビット部１２２ｂとを有している。
【００３４】
ＣＡＭ１２２は、内部制御部１２１から制御信号を受け取る度に（コンテクスト切り替えが発生する度に）、電力制御部１２３を参照し、ＣＡＭ部１２２ａおよび電力制御ビット部１２２ｂの内容を更新するとともに、コンテクストＩＤを取り込み、取り込んだコンテクストＩＤに一致するコンテクストＩＤに関連づけられているビットマップを電力制御部１２３に出力する。
【００３５】
図４は、ＣＡＭの構成を示す図である。
ＣＡＭ部１２２ａは、タグ（付加情報）として、プログラムまたはプロセスの、Ｎ個のコンテクストＩＤ（図４では、一例としてＣＯＮＴＥＸＴ−ＩＤ＃Ａ、・・・、ＣＯＮＴＥＸＴ−ＩＤ＃Ｙ、ＣＯＮＴＥＸＴ−ＩＤ＃Ｚ）を格納している。
【００３６】
電力制御ビット部１２２ｂは、Ｎ個のエントリを備えており、各エントリに、各コンテクストＩＤの保持するデータとして、そのプロセスで予め電源を投入しておくべきＳＲＡＭ１１１のビットマップを、その位置関係が分かるように格納する。ビットマップのビット数は、ＳＲＡＭ１１１の個数（Ｘ×Ｙ）に等しい。すなわち、本実施の形態では、ビットマップの各ビットが１つのＳＲＡＭ１１１に対応している。電力制御ビット部１２２ｂには新しく取得したコンテクストＩＤおよびビットマップは、例えば図４中のＣＡＭ１２２にＬＲＵ（Least Recently Used）方式やＦＩＦＯ（First In First Out）方式で、エントリの格納、放棄を制御する。
【００３７】
再び図３に戻って説明する。
電力制御部１２３は、値を保持するために、ｇａｔｅｄ−ＶＤＤ方式やその他のようなＳＲＡＭの値を保持できる電源制御方式を採用している。
【００３８】
電力制御部１２３は、内部制御部１２１からの制御信号を受け取ると、その制御信号に含まれるＳＲＡＭ１１１のアクセスパターンに従って、使用するＳＲＡＭ１１１をパワーＯＮし、使用しないＳＲＡＭ１１１を待機状態（ＳＲＡＭ１１１の値を保持できる程度の低電圧状態）にする信号（以下、「ＯＮ／ＯＦＦ信号」という）を電力切断・投入部１２４に出力する。
【００３９】
また、電力制御部１２３は、ＣＡＭ１２２から、コンテクストＩＤに関連づけられているビットマップを受け取ると、その情報に基づいて作成したＯＮ／ＯＦＦ信号を電力切断・投入部１２４に出力する。但し、強制パワーＯＮ信号とＯＮ／ＯＦＦ信号とが重複するＳＲＡＭ１１１については、強制パワーＯＮ信号を優先する。
【００４０】
電力切断・投入部１２４は、電力制御部１２３からＯＮ／ＯＦＦ信号を受け取ると、この信号に従って、ＳＲＡＭ１１１をＯＮ／ＯＦＦさせるＳＲＡＭ電力制御信号を作成する。
【００４１】
次に、電力制御回路１２の動作について説明する。
図５は、電力制御回路の動作を示すフローチャートである。
あるプロセスが起動され、コンテクストＩＤがＣＡＭ１２２に入力されると、ＣＡＭ１２２は、そのコンテクストＩＤがＣＡＭ１２２に登録されているかどうかを検索する（ステップＳ１）。
【００４２】
該当するコンテクストＩＤがＣＡＭ１２２に登録されている場合（ステップＳ１のＹｅｓ）、ＣＡＭ１２２が、そのコンテクストＩＤに関連づけられているビットマップを電力制御部１２３に送り、電力制御部１２３は、このビットマップに従って、ＯＮ／ＯＦＦ信号を電力切断・投入部１２４に出力し、電力切断・投入部１２４は、この信号に従ってＳＲＡＭ電力制御信号を作成する（ステップＳ２）。その後、パワーＯＮしているＳＲＡＭ１１１へのアクセスが行われる。
【００４３】
内部制御部１２１は、ＳＲＡＭアクセスリクエスト信号を受けとる度に、電力制御ビット部１２２ｂのビットマップを参照し、ＳＲＡＭアクセスリクエスト信号に従った（要求された）ＳＲＡＭ１１１がパワーＯＮしているか否かを判断する（ステップＳ３）。
【００４４】
要求されたＳＲＡＭ１１１がパワーＯＮしている場合（ステップＳ３のＹｅｓ）、ステップＳ３に移行し、動作を継続する。
要求されたＳＲＡＭ１１１がパワーＯＮしていない場合（ステップＳ３のＮｏ）、内部制御部１２１は、要求されたＳＲＡＭ１１１をパワーＯＮする制御信号を電力制御部１２３に出力する（ステップＳ４）。
【００４５】
そして、ＣＰＵにリトライ信号を返し（ステップＳ５）、リトライ信号を受け取ったＣＰＵにＳＲＡＭ１１１の電力投入にかかる時間（予め定められた時間）だけ、ＳＲＡＭ１１１へのアクセスを待機させるとともに、その期間を利用して電力制御部１２３に制御信号を送り、当該ＳＲＡＭ１１１の電力を投入させる。
【００４６】
次に、内部制御部１２１は、ステップＳ４のＳＲＡＭアクセスリクエスト信号に従った電力制御ビット部１２２ｂのビットマップを更新する（ステップＳ６）。
その後、ステップＳ３に移行し、動作を継続する。この動作により、通常のＳＲＡＭアクセス時に、以前のプロセス実行時にアクセスされて電源がＯＮの状態のＳＲＡＭ以外をアクセスされた場合、該当のＳＲＡＭの電源をＯＮにして、かつ、電力制御部１２３のビットマップを更新する。コンテクスト切り替えが発生したら、この更新版のビットマップをＣＡＭ１２２に書き戻す（更新する）ことで、次回のプロセス走行に備える。
【００４７】
一方、コンテクストＩＤがＣＡＭ１２２に存在しない場合（ステップＳ１のＮｏ）、内部制御部１２１は、ＣＡＭ１２２に、そのコンテクストＩＤでエントリを確保（アロケート）する（ステップＳ７）。
【００４８】
そして、プロセスでのＳＲＡＭ１１１のアクセスパターンの確認を開始する（ステップＳ３）。
電力制御回路１２は、上記ステップＳ１〜ステップＳ７の動作を、コンテクスト切り替えが発生するまで行う。
【００４９】
図６は、電力制御回路の他の動作を示すフローチャートである。
内部制御部１２１は、図５に示した動作に並行してコンテクスト切り替えの発生を待機している（ステップＳ１１）。
【００５０】
そして、コンテクスト切り替えが発生すると（ステップＳ１１のＹｅｓ）、内部制御部１２１は、制御信号を電力制御部１２３に送る。これにより、電力制御部１２３は、プロセスの実行終了時（コンテクスト切り替えが発生する前）に、最後に（最近）使用していたＳＲＡＭ１１１のアクセスパターンをＣＡＭ１２２に登録（上書き）する（ステップＳ１２）。
【００５１】
次に、ステップＳ１に移行し、新たなコンテクストＩＤで、ステップＳ１以降の動作を継続して行う。
次に、電力制御回路１２の動作の具体例を説明する。
【００５２】
図７は、電力制御回路の動作の具体例を説明する図である。なお、説明を簡単にするために、一例としてビットマップが３ビットであるものとして説明する。
まず、プログラムＡが最初に起動した場合、ＣＡＭ１２２にはプログラムＡに対応するコンテクストＩＤは存在しないので、ＣＡＭ１２２がプログラムＡのエントリを確保し、内部制御部１２１がアクセスパターンの確認を開始する。
【００５３】
そして、プログラムＡからプログラムＢへの切り替え時点（時刻ｔ１）のＳＲＡＭ１１１のアクセスパターン（Ｓ０，Ｓ１，Ｓ２）は［１０１］であるため、プログラムＡのコンテクストＩＤをビットマップ［１０１］と関連づけてＣＡＭ１２２に登録する。
【００５４】
次に、プログラムＢが起動する。そして、プログラムＢからプログラムＡへの切り替え時点（時刻ｔ２）のアクセスパターン（Ｓ０，Ｓ１，Ｓ２）は、［０１１］であるため、プログラムＢのコンテクストＩＤをビットマップ［０１１］と関連づけてＣＡＭ１２２に登録する。
【００５５】
次に、再びプログラムＡが起動したとき、前回プログラムＡが終了したときのコンテクストＩＤがＣＡＭ１２２に存在するため、そのコンテクストＩＤに関連づけられたビットマップ［１０１］を用いてＳＲＡＭをＯＮ／ＯＦＦして、制御を開始する。そして、プログラムＡからプログラムＣへの切り替え時点（時刻ｔ３）のアクセスパターン（Ｓ０，Ｓ１，Ｓ２）は、［０１０］であるため、プログラムＡのコンテクストＩＤをビットマップ［０１０］と関連づけてＣＡＭ１２２に登録（更新）する。
【００５６】
次に、プログラムＣが起動、終了し、三度プログラムＡが起動したとき（時刻ｔ４）、前回プログラムＡが終了したときのコンテクストＩＤがＣＡＭ１２２に存在する場合には、そのコンテクストＩＤに関連づけられたビットマップ［０１０］を用いてＳＲＡＭをＯＮ／ＯＦＦして、制御を開始する。以上で具体例の説明を終了する。
【００５７】
プログラムが使用するアドレス空間には、時間的、空間的な局所性が存在するので、そのプログラムがアクセスで使用するＳＲＡＭ１１１にも時間的、空間的な局所性が存在する。本実施の形態のＳＲＡＭシステム１０では、この局所性を利用し、複数のプロセスが切り替わりながら実行される環境において、あるプロセスで使用されたＳＲＡＭのビットマップをＣＡＭ１２２に格納することで、コンテクスト切り替え時に新たなプロセスへと移行するときに、新たなプロセスは、前回このプロセスの終了時にアクセスしていたＳＲＡＭ１１１へのアクセスから前回使用したＳＲＡＭが再度使用されるだろうという予想の基に、このプロセスの動作で使用される（予定の）ＳＲＡＭ１１１を事前にパワーＯＮしておくようにした。これにより、サイクルペナルティなしでＳＲＡＭ１１１を迅速に動作可能にすることができ、プログラム実行の遅延（レイテンシ）を改善させることができる。さらに、プログラム実行中に、以前はアクセスしていなかったＳＲＡＭへのアクセスが発生した場合でも、それをビットマップの状態として記憶しておき、プロセス切り替えのタイミングで、ＣＡＭ１２２を更新することができるので、プログラムの状態の遷移にも追従でき、きめ細かな電力削減制御が可能となる。
【００５８】
また、プロセス単位で電源を制御するので、積極的に消費電力を低減させることができる。
また、使用しないＳＲＡＭ１１１の電源を待機状態とすることで、より消費電力を低減させることができる。
【００５９】
また、ＣＡＭ１２２の構造は、従来に比べて簡易なものであるため、通常のＳＲＡＭ単位、またはＳＲＡＭのエントリ単位に電力制御回路をもつＳＲＡＭシステム等に比べて、システムの小型化を図ることができ、消費電力を低減させることができる。
【００６０】
なお、本実施の形態では、ＳＲＡＭ１個を１ビットの電源制御ビットで示し、電源制御を行うビットマップにより、ＳＲＡＭ１１１の電源を制御するようにしたので、１つ１つのＳＲＡＭの電源を、きめ細かく制御することができる。
【００６１】
また、構造的に常時アクセスされるようなＳＲＡＭ１１１が一部に存在している場合には、外部からの電力制御信号を取り込むことで対応することができ、電力を切断することによる無駄を省くことができる。
【００６２】
また、マルチスレッドやＳＭＴ（Simultaneous Multithreading）等の環境で、複数のプロセスが走行している場合においても、各プロセスのコンテクストＩＤは識別性（唯一性）を備えているので、効果的にＳＲＡＭの電源管理を実施することができる。すなわち、あるプロセスＡと、別のプロセスＢとが並行に実行されている環境でも、コンテクストＩＤとそれに対応するエントリ内のビットマップとにより、プロセス毎に電源を管理することができる。つまり今日使用されているような、複数のプロセッサコアを持つプロセッサシステムや、複数のスレッド実行機能を持つＳＭＴ機能つきのプロセッサ等に本発明を適用した場合においても、各プロセッサコアや各ＳＭＴコア単位で電力制御回路を備える必要がないので、従来に比べ回路の大幅な小型化を図ることができる。
【００６３】
なお、当然ではあるが、ＣＡＭ１２２のエントリ数を増やせば、図５のステップＳ１にてＣＡＭ１２２にヒットする割合は増え、事前にＳＲＡＭ１１１をパワーＯＮすることができる機会は増加する。しかし、ＣＡＭ１２２のエントリ数を増やせば、ＣＡＭ１２２自身の消費電力が上昇する。よって、ＣＡＭ１２２のエントリ数は、実際のシステムの構成、例えばそのプロセッサが平均的に処理可能な最大プロセス数等を考慮するのが好ましい。但し、ＣＡＭ１２２のエントリ数が多くても、従来のキャッシュＳＲＡＭのタグメモリで、キャッシュのすべてのタグエントリに、そのエントリの電力制御回路を入れる様な構成に比べれば、システムの小型化を図ることができる。
【００６４】
次に、第２の実施の形態のＳＲＡＭシステムについて説明する。
以下、第２の実施の形態のＳＲＡＭシステムについて、前述した第１の実施の形態との相違点を中心に説明し、同様の事項については、その説明を省略する。
【００６５】
第２の実施の形態のＳＲＡＭシステムは、ＳＲＡＭ１１１を複数のグループに分け、それぞれのグループで、ＳＲＡＭ１１１の使用頻度を調べ、一定以上の使用頻度のＳＲＡＭを備えるグループについて電力制御を行う点が、第１の実施の形態と異なっている。
【００６６】
図８は、第２の実施の形態の電力制御回路を示すブロック図である。
第２の実施の形態の電力制御回路１２ａは、ＣＡＭ１２２の代わりにＣＡＭ１２５を有し、さらにカウンタ部１２６を有している。
【００６７】
ＣＡＭ１２５は、ＣＡＭ部１２２ａと同機能を備えるＣＡＭ部１２５ａと、Ｊ個のグループを備える電力制御ビット部１２５ｂとを有している。
図９は、第２の実施の形態のＣＡＭの構成を示す図である。
【００６８】
電力制御ビット部１２５ｂが備える各グループ（グループ１、・・・、グループＪ）には、それぞれｉ個（ｉ＝１，２，・・・，Ｍ−１）のＳＲＡＭ１１１が割り当てられており、ＳＲＡＭアレイ１１内の全てのＳＲＡＭ１１１がいずれか１つのグループに割り当てられている。なお、グループの割り当て方法は、特に限定されないが、例えば、ＳＲＡＭ１１１の使用頻度毎にグループの割り当てを行うのが好ましい。これにより、より効率的な電力制御を行うことができる。
【００６９】
図１０は、カウンタ部の機能を示す図である。
カウンタ部１２６は、Ｊ個のグループカウンタ１２６ａ、１２６ａ・・・を有している。１つのグループカウンタ１２６ａに電力制御ビット部１２５ｂの１つのグループが割り当てられている。
【００７０】
カウンタ部１２６は、ＯＮ／ＯＦＦ信号を監視し、この信号に基づいて各グループカウンタ１２６ａをカウントアップまたはリセットする。
次に、第２の実施の形態の電力制御回路１２ａの動作について説明する。
【００７１】
カウンタ部１２６は、あるプロセスにおいて、それぞれ各グループ内の各ＳＲＡＭ１１１（本実施の形態では、各グループ内のいずれか１つのＳＲＡＭ１１１）が待機状態からパワーＯＮする度に、そのＳＲＡＭ１１１が割り当てられているグループのグループカウンタ１２６ａをインクリメント（＋１）していく。そして、コンテクスト切り替え時に、グループカウンタ１２６ａが所定回数以上の値となったグループ、すなわち、グループ内のＳＲＡＭ１１１が所定回数以上パワーＯＮしたグループについて、電力制御部１２３を介して、電力制御ビット部１２５ｂにビットマップ書き込みを行い、そのビットマップを「１」にセットする。これにより、次のプロセス開始時に、そのグループに割り当てられた全てのＳＲＡＭ１１１の電源をパワーＯＮするようにする。逆に、所定回数未満の値となったグループカウンタ１２６ａのグループ、すなわち、グループ内のＳＲＡＭ１１１のパワーＯＮの回数が所定回数未満のグループについては、そのビットマップを「０」にセットする。
【００７２】
カウンタ部１２６は、コンテクスト切り替えが発生すると、各カウンタの値を０にリセットし、次回のプロセス実行に備える。
この第２の実施の形態のＳＲＡＭシステムによれば、第１の実施の形態のＳＲＡＭシステムと同様の効果が得られる。
【００７３】
そして、第２の実施の形態のＳＲＡＭシステムによれば、そのプロセスでは使用頻度が高いと判断し、常時電源を投入するようにしたので、さらに、効率のよい制御を行うことができる。
【００７４】
以上、本発明のＳＲＡＭシステムおよびＳＲＡＭシステムの制御方法を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【００７５】
また、本発明は、前述した各実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、コンテクストＩＤは、通常、アドレスの上位空間を使って示されるものが多く、高々１６〜３２ｂｉｔ程度である。ＳＲＡＭの個数も、通常は複数個をまとめて１キャッシュラインとするので、一例として１９２個のＳＲＡＭを考えても、８ｂｙｔｅ＝１キャッシュラインで２４個であり、電源制御としては、２４ｂｉｔあれば足りる。このため、ＣＡＭは、４０〜５６ｂｉｔ程度の容量であればよい。このように、ＣＡＭの回路規模は、ＴＡＧ  ＳＲＡＭ全てにカウンタを持たせる場合に比べても少ないビット数で実現することができる。
【００７６】
（付記１）  マイクロプロセッサ内部で使用されるＳＲＡＭシステムにおいて、
複数のＳＲＡＭで構成されるＳＲＡＭアレイと、
プログラムまたはプロセスの実行時に使用されているコンテクストＩＤを、前記プログラムまたはプロセスの実行時における前記ＳＲＡＭのアクセスパターンと関連づけて格納する格納部と、
コンテクスト切り替えが発生する度に、前記格納部から、コンテクスト切り替え後の前記プログラムまたはプロセスにおける前記コンテクストＩＤに一致する前記コンテクストＩＤに関連づけられた前記ＳＲＡＭのアクセスパターンを検索する検索部と、
前記検索部によって検索された前記ＳＲＡＭのアクセスパターンに従って、該当する前記ＳＲＡＭを読み書き可能にする電力制御部と、
を有することを特徴とするＳＲＡＭシステム。
【００７７】
（付記２）  前記ＳＲＡＭのアクセスパターンは、コンテクスト切り替えが発生したときにパワーＯＮまたはＯＦＦしていた前記ＳＲＡＭのパターンであることを特徴とする付記１記載のＳＲＡＭシステム。
【００７８】
（付記３）  前記プログラムまたはプロセスの実行時における前記ＳＲＡＭのアクセスパターンを検出する検出部をさらに有し、
前記格納部は、前記プログラムまたはプロセスの実行時に使用されているコンテクストＩＤを、前記検出部が検出した前記ＳＲＡＭのアクセスパターンと関連づけて格納することを特徴とする付記１記載のＳＲＡＭシステム。
【００７９】
（付記４）  前記電力制御部は、前記検出部を兼ねることを特徴とする付記３記載のＳＲＡＭシステム。
（付記５）  前記検出部が検出した前記ＳＲＡＭのアクセスパターンは、コンテクスト切り替えが発生したときにパワーＯＮまたはＯＦＦしていた前記ＳＲＡＭのパターンであることを特徴とする付記３記載のＳＲＡＭシステム。
【００８０】
（付記６）  前記電力制御部は、前記検索部によって検索された前記ＳＲＡＭのアクセスパターンに従って、パワーＯＮしない前記ＳＲＡＭの電力を、前記ＳＲＡＭの値を保持することができる電力に低減させることを特徴とする付記１記載のＳＲＡＭシステム。
【００８１】
（付記７）  前記電力制御部は、予め読み書き可能にしておく前記ＳＲＡＭについての外部電力制御信号が入力されると、前記ＳＲＡＭのアクセスパターンに優先して前記外部電力制御信号により指定された前記ＳＲＡＭを読み書き可能にすることを特徴とする付記１記載のＳＲＡＭシステム。
【００８２】
（付記８）  前記格納部は、前記ＳＲＡＭそれぞれのＯＮ／ＯＦＦパターンを、前記ＳＲＡＭのアクセスパターンとして格納することを特徴とする付記１記載のＳＲＡＭシステム。
【００８３】
（付記９）  前記格納部は、前記ＳＲＡＭを所定個毎にグループ化したそれぞれのグループ毎のビットパターンを、前記ＳＲＡＭのアクセスパターンとして格納することを特徴とする付記１記載のＳＲＡＭシステム。
【００８４】
（付記１０）  前記ＳＲＡＭを所定個毎にグループ化し、それぞれのグループ毎に前記ＳＲＡＭの使用頻度を計測するカウンタを備え、前記プログラムまたはプロセスの実行時に、前記使用頻度が所定値以上になったグループと、前記使用頻度が所定値未満のグループとを区別した前記ビットパターンを前記格納部に格納するカウンタ部をさらに有することを特徴とする付記９記載のＳＲＡＭシステム。
【００８５】
（付記１１）  マイクロプロセッサ内部で使用されるＳＲＡＭシステムの制御方法において、
プログラムまたはプロセスの実行時に使用されているコンテクスト切り替えが発生する度に、
検索部が、ＳＲＡＭアレイを構成する複数のＳＲＡＭのアクセスパターンとコンテクストＩＤとが予め関連づけて格納されている格納部から、コンテクスト切り替え後の前記プログラムまたはプロセスにおける前記コンテクストＩＤに一致する前記コンテクストＩＤに関連づけられた前記ＳＲＡＭのアクセスパターンを検索し、
電力制御部が、前記検索部によって検索された前記ＳＲＡＭのアクセスパターンに従って、該当する前記ＳＲＡＭを読み書き可能にする、
ことを特徴とするＳＲＡＭシステムの制御方法。
【００８６】
（付記１２）  前記ＳＲＡＭのアクセスパターンは、コンテクスト切り替えが発生したときにパワーＯＮまたはＯＦＦしていた前記ＳＲＡＭのパターンであることを特徴とする付記１１記載のＳＲＡＭシステムの制御方法。
【００８７】
（付記１３）  前記プログラムまたはプロセスの実行時における前記ＳＲＡＭのアクセスパターンを検出する検出部をさらに有し、
前記格納部は、前記プログラムまたはプロセスの実行時に使用されているコンテクストＩＤを、前記検出部が検出した前記ＳＲＡＭのアクセスパターンと関連づけて格納することを特徴とする付記１１記載のＳＲＡＭシステムの制御方法。
【００８８】
（付記１４）  前記電力制御部は、前記検出部を兼ねることを特徴とする付記１３記載のＳＲＡＭシステムの制御方法。
（付記１５）  前記検出部が検出した前記ＳＲＡＭのアクセスパターンは、コンテクスト切り替えが発生したときにパワーＯＮまたはＯＦＦしていた前記ＳＲＡＭのパターンであることを特徴とする付記１３記載のＳＲＡＭシステムの制御方法。
【００８９】
（付記１６）  前記電力制御部は、前記検索部によって検索された前記ＳＲＡＭのアクセスパターンに従って、パワーＯＮしない前記ＳＲＡＭの電力を、前記ＳＲＡＭの値を保持することができる電力に低減させることを特徴とする付記１１記載のＳＲＡＭシステムの制御方法。
【００９０】
（付記１７）  前記電力制御部は、予め読み書き可能にしておく前記ＳＲＡＭについての外部電力制御信号が入力されると、前記ＳＲＡＭのアクセスパターンに優先して前記外部電力制御信号により指定された前記ＳＲＡＭを読み書き可能にすることを特徴とする付記１１記載のＳＲＡＭシステムの制御方法。
【００９１】
（付記１８）  前記格納部は、前記ＳＲＡＭそれぞれのＯＮ／ＯＦＦパターンを、前記ＳＲＡＭのアクセスパターンとして格納することを特徴とする付記１１記載のＳＲＡＭシステムの制御方法。
【００９２】
（付記１９）  前記格納部は、前記ＳＲＡＭを所定個毎にグループ化したそれぞれのグループ毎のビットパターンを、前記ＳＲＡＭのアクセスパターンとして格納することを特徴とする付記１１記載のＳＲＡＭシステムの制御方法。
【００９３】
（付記２０）  ＳＲＡＭを所定個毎にグループ化し、それぞれのグループ毎に前記ＳＲＡＭの使用頻度を計測するカウンタを備え、前記プログラムまたはプロセスの実行時に、前記使用頻度が所定値以上になったグループと、前記使用頻度が所定値未満のグループとを区別した前記ビットパターンを前記格納部に格納するカウンタ部をさらに有することを特徴とする付記１９記載のＳＲＡＭシステムの制御方法。
【図面の簡単な説明】
【００９４】
【図１】本発明の概要を示す図である。
【図２】実施の形態のＳＲＡＭシステムを示すブロック図である。
【図３】電力制御回路を示すブロック図である。
【図４】ＣＡＭの構成を示す図である。
【図５】電力制御回路の動作を示すフローチャートである。
【図６】電力制御回路の他の動作を示すフローチャートである。
【図７】電力制御回路の動作の具体例を説明する図である。
【図８】第２の実施の形態の電力制御回路を示すブロック図である。
【図９】第２の実施の形態のＣＡＭの構成を示す図である。
【図１０】カウンタ部の機能を示す図である。
【符号の説明】
【００９５】
１、１０  ＳＲＡＭシステム
２、１１  ＳＲＡＭアレイ
３  格納部
４  検索部
５  電力制御部
６  検出部
１２、１２ａ  電力制御回路
１００  マイクロプロセッサ
１１１  ＳＲＡＭ
１２１  内部制御部
１２２  ＣＡＭ
１２２ａ、１２５ａ  ＣＡＭ部
１２２ｂ、１２５ｂ  電力制御ビット部
１２３  電力制御部
１２４  電力切断・投入部
１２６  カウンタ部
１２６ａ  グループカウンタ
【図１】
2008225859.tif 000003
【図２】
2008225859.tif 000004
【図３】
2008225859.tif 000005
【図４】
2008225859.tif 000006
【図５】
2008225859.tif 000007
【図６】
2008225859.tif 000008
【図７】
2008225859.tif 000009
【図８】
2008225859.tif 000010
【図９】
2008225859.tif 000011
【図１０】
2008225859.tif 000012