IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電信電話株式会社の特許一覧 ▶ 国立大学法人東北大学の特許一覧

特許7142289プロセッサ、多階層キャッシュメモリの制御方法、及び多階層キャッシュメモリの制御プログラム
<>
  • 特許-プロセッサ、多階層キャッシュメモリの制御方法、及び多階層キャッシュメモリの制御プログラム 図1
  • 特許-プロセッサ、多階層キャッシュメモリの制御方法、及び多階層キャッシュメモリの制御プログラム 図2
  • 特許-プロセッサ、多階層キャッシュメモリの制御方法、及び多階層キャッシュメモリの制御プログラム 図3
  • 特許-プロセッサ、多階層キャッシュメモリの制御方法、及び多階層キャッシュメモリの制御プログラム 図4
  • 特許-プロセッサ、多階層キャッシュメモリの制御方法、及び多階層キャッシュメモリの制御プログラム 図5
  • 特許-プロセッサ、多階層キャッシュメモリの制御方法、及び多階層キャッシュメモリの制御プログラム 図6
  • 特許-プロセッサ、多階層キャッシュメモリの制御方法、及び多階層キャッシュメモリの制御プログラム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-15
(45)【発行日】2022-09-27
(54)【発明の名称】プロセッサ、多階層キャッシュメモリの制御方法、及び多階層キャッシュメモリの制御プログラム
(51)【国際特許分類】
   G06F 12/0888 20160101AFI20220916BHJP
   G06F 12/0811 20160101ALI20220916BHJP
【FI】
G06F12/0888
G06F12/0811
【請求項の数】 6
(21)【出願番号】P 2018156654
(22)【出願日】2018-08-23
(65)【公開番号】P2020030696
(43)【公開日】2020-02-27
【審査請求日】2020-11-02
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(73)【特許権者】
【識別番号】504157024
【氏名又は名称】国立大学法人東北大学
(74)【代理人】
【識別番号】110001634
【氏名又は名称】弁理士法人志賀国際特許事務所
(72)【発明者】
【氏名】大森 優也
(72)【発明者】
【氏名】大西 隆之
(72)【発明者】
【氏名】岩崎 裕江
(72)【発明者】
【氏名】清水 淳
(72)【発明者】
【氏名】江川 隆輔
(72)【発明者】
【氏名】佐藤 雅之
(72)【発明者】
【氏名】小林 広明
【審査官】北村 学
(56)【参考文献】
【文献】特開2008-234320(JP,A)
【文献】特開2017-021399(JP,A)
【文献】特表2013-521559(JP,A)
【文献】米国特許出願公開第2008/0270758(US,A1)
【文献】渡部 功 ほか,三段階対応の可変レベルキャッシュのマルチスレッドアプリケーションを用いた評価,情報処理学会研究報告,日本,一般社団法人情報処理学会,2012年10月15日,pp. 1-8
【文献】渡部 功 ほか,モード切換えオーバヘッドを低減させた可変レベルキャッシュの提案と評価,情報処理学会論文誌 論文誌トランザクション,日本,一般社団法人情報処理学会,2012年10月15日,第5巻 第4号,pp. 48-60
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 1/26 - 1/32
G06F 12/08 - 12/128
G06F 15/78
(57)【特許請求の範囲】
【請求項1】
複数の階層からなるキャッシュメモリと、
任意の命令数あたりの、前記複数の階層に含まれる第一の階層のキャッシュメモリにアクセスした際に、前記第一の階層のキャッシュメモリにデータが存在する数であるヒット数と、前記第一の階層のキャッシュメモリの状態に基づく値と前記複数の階層に含まれる前記第一の階層よりも下位の第二の階層のキャッシュメモリの状態とに基づく値と、に基づいて算出される、前記第一の階層のキャッシュメモリの貢献度に基づいて、電力効率が向上するように、前記第一の階層のキャッシュメモリを有効化するか否かを判定する判定部と、
を備えるプロセッサ。
【請求項2】
前記第一の階層のキャッシュメモリの状態と前記第二の階層のキャッシュメモリの状態とに基づく値とは、前記第一の階層のキャッシュメモリのミスペナルティを示す値であり、前記ミスペナルティは、前記第一の階層のキャッシュメモリにおけるヒット時のレイテンシと、ミスした場合に次にアクセスされる前記第二の階層のキャッシュメモリにおけるヒット時のレイテンシと、の差に基づく値である
請求項1に記載のプロセッサ。
【請求項3】
前記貢献度とは、前記ヒット数と、前記ミスペナルティと、を乗じることによって算出される値である
請求項2に記載のプロセッサ。
【請求項4】
前記複数の階層のキャッシュメモリのうち、前記貢献度が最小となるキャッシュメモリをバイパスさせた場合における消費電力あたりの第一の実行性能と、前記貢献度が最小となるキャッシュメモリをバイパスさせなかった場合における前記消費電力あたりの第二の実行性能と、を算出し、前記第二の実行性能より第一の実行性能のほうがより、性能が高い場合には、前記貢献度が最小となるキャッシュメモリをバイパスさせるバイパス制御部
をさらに備える請求項3に記載のプロセッサ。
【請求項5】
複数の階層からなるキャッシュメモリを備える多階層キャッシュメモリの制御方法であって、
コンピュータが、前記複数の階層に含まれる第一の階層のキャッシュメモリの状態と前記複数の階層に含まれる前記第一の階層よりも下位の第二の階層のキャッシュメモリの状態とに基づく第一の値を算出する第一算出ステップと、
コンピュータが、任意の命令数あたりの、前記複数の階層に含まれる第一の階層のキャッシュメモリにアクセスした際に、前記第一の階層のキャッシュメモリにデータが存在する数であるヒット数と前記第一の値とに基づいて、前記第一の階層のキャッシュメモリの貢献度を算出する第二算出ステップと、
コンピュータが、前記貢献度に基づいて前記第一の階層のキャッシュメモリを有効化するか否かを判定する判定ステップと、
を有する多階層キャッシュメモリの制御方法。
【請求項6】
請求項1から請求項4のうちいずれか一項に記載のプロセッサとしてコンピュータを機能させるための多階層キャッシュメモリの制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プロセッサ、多階層キャッシュメモリの制御方法、及び多階層キャッシュメモリの制御プログラムに関する。
【背景技術】
【0002】
近年のマイクロプロセッサは、プロセッサとメモリとの性能差を埋めるべく、キャッシュメモリと呼ばれる一時記憶装置を有している。キャッシュメモリは、プロセッサのLSI(Large-Scale Integrated circuit;大規模集積回路)の内部に実装される。キャッシュメモリは、メインメモリと比較して高速に動作可能である。そのため、将来再利用されるデータを事前にキャッシュメモリに保持することで、メモリアクセスレイテンシを隠蔽することが可能である。一方で、キャッシュメモリは、メインメモリと比較して容量が小規模である。これに加えて、プロセッサとメモリの性能差は拡大の一途を辿っている。これらのことから、近年のマイクロプロセッサでは、キャッシュメモリを多階層化することにより、大容量化とメモリアクセスレイテンシの隠蔽を図っている。
【0003】
多階層キャッシュメモリは、プロセッサ内の演算コアとプロセッサ外のメインメモリとの間に配置される。多階層キャッシュメモリは、演算コアに近い方から1次キャッシュメモリ、2次キャッシュメモリ、3次キャッシュメモリと、その階層に応じて次数を増加させる形で構成される。多階層キャッシュメモリは、次数の増加に応じて記憶容量が増加する一方で、次数の増加に応じて読み出しにかかる遅延時間が増加する。
【0004】
例えば、3階層のキャッシュメモリにおいてメモリアクセスが発生し、このメモリアクセスが、データを読み出すロード命令であるものとする。
この場合、まず初めに1次キャッシュメモリに対して、演算コアが要求するデータの有無の確認がなされる。演算コアが要求するデータが1次キャッシュメモリに保持されている場合には、1次キャッシュメモリから演算コアへデータが提供される。演算コアが要求するデータが1次キャッシュメモリに保持されていない場合には、次に2次キャッシュメモリに対して確認がなされる。演算コアが要求するデータが2次キャッシュメモリに保持されている場合には、2次キャッシュメモリから演算コアへデータが提供される。演算コアが要求するデータが2次キャッシュメモリにも保持されていない場合には、さらに下層の3次キャッシュメモリに対して確認がなされる。演算コアが要求するデータが3次キャッシュメモリに保持されている場合には、3次キャッシュメモリから演算コアへデータが提供される。これにより、キャッシュメモリは、メモリアクセスレイテンシの隠蔽を段階的に行う。演算コアが要求するデータが3次キャッシュメモリにも保持されていない場合には、メインメモリから演算コアへデータが提供される。
このように、キャッシュメモリにデータが保存されていれば、メインメモリにアクセスすることなく、演算コアに対してデータを提供することが可能になる。これにより、メモリアクセスレイテンシを隠蔽することが可能になる。
【0005】
キャッシュメモリの多階層化が進むことに伴って、記憶容量、読み出しにかかる遅延時間、及び消費電力は、増加する傾向にある。その結果として、マイクロプロセッサにおける消費電力は、キャッシュメモリの消費電力が支配的になりつつある。その一方で、マイクロプロセッサにおいて実行されるアプリケーションは、多岐にわたる様々な特性を有している。多階層キャッシュメモリを活用することによって実行性能を向上させることが可能なアプリケーションがある一方で、計算が支配的であり、かつメモリ利用量が少ないアプリケーション等がある。例えばこのような、計算が支配的であり、かつメモリ利用量が少ないアプリケーション等においては、実行性能の向上に対する多階層キャッシュメモリの貢献は限定的である。この場合、実行性能の向上に貢献しないキャッシュメモリによって電力が無駄に消費されるため、マイクロプロセッサにおける電力効率の低下を招くことになる。
【0006】
このように、マイクロプロセッサに搭載されるキャッシュメモリの容量・消費電力が増加の一途を辿っている中で、アプリケーションによっては、キャッシュメモリに対する電力投資に見合うだけの実行性能の向上が得られずに、マイクロプロセッサの電力効率の低下を引き起こしている。これに対し、非特許文献1に記載の技術は、n階層キャッシュメモリにおいて、最大容量を有するn次キャッシュメモリ(最下層のキャッシュメモリ)にデータを書き込まずに、メインメモリに直接データを書き込むバイパス処理を行う。そして、n次キャッシュメモリへの電源供給を停止することによって、マイクロプロセッサの消費電力を削減する。
【先行技術文献】
【非特許文献】
【0007】
【文献】Takumi Takai, Yusuke Tobo, Masayuki Sato, Ryusuke Egawa, Hiroyuki Takizawa and Hiroaki Kobayashi, “A Bypass Mechanism for Way-Adaptable Caches”, Poster11, Proceedings of COOL Chips XV, April 2012.
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、実行性能を維持又は向上させるために必要なキャッシュメモリの、記憶容量、レイテンシ、及び階層数は、アプリケーションによってそれぞれ異なる。このため、キャッシュメモリの最下層のみに対してバイパス制御及び電力制御を行うだけでは、多様なアプリケーションに対応するための柔軟性が低いという課題がある。さらに、特定のキャッシュメモリをバイパスすることが、実行性能を維持しながら消費電力を抑制することにつながるか否かを事前に判断することが難しいという課題がある。
【0009】
本発明はこのような状況を鑑みてなされたもので、アプリケーションの実行性能を維持又は向上させつつ、消費電力を抑制することができる技術の提供を目的とする。
【課題を解決するための手段】
【0010】
本発明の一態様は、複数の階層からなるキャッシュメモリと、任意の命令数あたりの、前記複数の階層に含まれる第一の階層のキャッシュメモリにアクセスした際に、前記第一の階層のキャッシュメモリにデータが存在する数であるヒット数と、前記第一の階層のキャッシュメモリの状態に基づく値と前記複数の階層に含まれる前記第一の階層よりも下位の第二の階層のキャッシュメモリの状態とに基づく値と、に基づいて算出される、前記第一の階層のキャッシュメモリの貢献度に基づいて、前記第一の階層のキャッシュメモリを有効化するか否かを判定する判定部と、を備えるプロセッサである。
【0011】
また、本発明の一態様は、上記のプロセッサであって、前記第一の階層のキャッシュメモリの状態と前記第二の階層のキャッシュメモリの状態とに基づく値とは、前記第一の階層のキャッシュメモリのミスペナルティと任意の命令数あたりのヒット数を示す値であり、前記ミスペナルティは、前記第一の階層のキャッシュメモリにおけるヒット時のレイテンシと、ミスした場合に次にアクセスされる前記第二の階層のキャッシュメモリにおけるヒット時のレイテンシと、の差に基づく値である。
【0012】
また、本発明の一態様は、上記のプロセッサであって、前記貢献度とは、前記任意の命令数あたりのヒット数と、前記ミスペナルティと、を乗じることによって算出される値である。
【0013】
また、本発明の一態様は、上記のプロセッサであって、前記複数の階層のキャッシュメモリのうち、前記貢献度が最小となるキャッシュメモリをバイパスさせた場合における消費電力あたりの第一の実行性能と、前記貢献度が最小となるキャッシュメモリをバイパスさせなかった場合における前記消費電力あたりの第二の実行性能と、を算出し、前記第二の実行性能より第一の実行性能のほうがより、性能が高い場合には、前記貢献度が最小となるキャッシュメモリをバイパスさせるバイパス制御部をさらに備える。
【0014】
また、本発明の一態様は、複数の階層からなるキャッシュメモリを備える多階層キャッシュメモリの制御方法であって、コンピュータが、前記複数の階層に含まれる第一の階層のキャッシュメモリの状態と前記複数の階層に含まれる前記第一の階層よりも下位の第二の階層のキャッシュメモリの状態とに基づく第一の値を算出する第一算出ステップと、コンピュータが、任意の命令数あたりの、前記複数の階層に含まれる第一の階層のキャッシュメモリにアクセスした際に、前記第一の階層のキャッシュメモリにデータが存在する数であるヒット数と前記第一の値とに基づいて、前記第一の階層のキャッシュメモリの貢献度を算出する第二算出ステップと、コンピュータが、前記貢献度に基づいて前記第一の階層のキャッシュメモリを有効化するか否かを判定する判定ステップと、を有する多階層キャッシュメモリの制御方法である。
【0015】
また、本発明の一態様は、上記のプロセッサとしてコンピュータを機能させるための多階層キャッシュメモリの制御プログラム。
【発明の効果】
【0016】
本発明によれば、アプリケーションの実行性能を維持又は向上させつつ、消費電力を抑制することができる。
【図面の簡単な説明】
【0017】
図1】本発明の一実施形態に係る多階層キャッシュメモリを搭載したマイクロプロセッサの構成を説明するための図である。
図2】本発明の一実施形態に係るマイクロプロセッサが備えるバスセレクタの入出力の構成を説明するための図である。
図3】本発明の一実施形態に係るマイクロプロセッサによる多階層キャッシュメモリへの電力供給制御の構成を説明するための図である。
図4】本発明の一実施形態に係るマイクロプロセッサ100によって実現可能な多階層キャッシュメモリの論理的な構成を示す模式図である。
図5】各階層のキャッシュメモリの構成、階層数、及び各制御信号の値との対応を示す図である。
図6】本発明の一実施形態に係るマイクロプロセッサ100に搭載された多階層キャッシュメモリを制御する多階層キャッシュメモリ制御部の構成を示すブロック図である。
図7】本発明の一実施形態に係るマイクロプロセッサによるキャッシュ階層の要否判定処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0018】
<実施形態>
以下、本発明の一実施形態について図面を参照しながら説明する。
以下の説明において、「マイクロプロセッサ」は、単一又は複数の演算コア(以下、「コア」という。)と、n層からなる階層型のキャッシュメモリ(以下、「多階層キャッシュメモリ」という。)と、を搭載しているものとする。また、多階層キャッシュメモリの各階層は、最上層のキャッシュメモリ(1次キャッシュメモリ)から最下層のキャッシュメモリ(n次キャッシュメモリ)へと階層が増加するほど、記憶容量はより大きくなり、アクセス遅延時間はより長くなるものとする。
【0019】
[マイクロプロセッサの構成]
以下、多階層キャッシュメモリを搭載したマイクロプロセッサの構成の一例について説明する。
図1は、本発明の一実施形態に係る多階層キャッシュメモリを搭載したマイクロプロセッサの構成を説明するための図である。
以下の説明において、m次キャッシュメモリ(mは1からnまでの整数)を、「Lmキャッシュ」ということがある。
【0020】
図1に示すように、マイクロプロセッサ100は、コア101と、L1キャッシュ102と、L2キャッシュ103と、L3キャッシュ104と、L4キャッシュ105と、第0バスセレクタ107と、第1バスセレクタ108と、第2バスセレクタ109と、第3バスセレクタ110と、を含んで構成される。すなわち、マイクロプロセッサ100は、4層からなる多階層キャッシュメモリを搭載したプロセッサである。
【0021】
また、図1に示すバス111~118は、データ転送用の広帯域伝送路である。
【0022】
コア101は、バス111を介して第0バスセレクタ107と接続する。
【0023】
L1キャッシュ102は、バス112を介して第0バスセレクタ107と接続し、バス117を介して第1バスセレクタ108と接続する。
【0024】
L2キャッシュ103は、バス113を介して第0バスセレクタ107と接続し、バス118を介して第1バスセレクタ108と接続し、バス122を介して第2バスセレクタ109と接続する。
【0025】
L3キャッシュ104は、バス114を介して第0バスセレクタ107と接続し、バス119を介して第1バスセレクタ108と接続し、バス123を介して第2バスセレクタ109と接続し、バス126を介して第3バスセレクタ110と接続する。
【0026】
L4キャッシュ105は、バス115を介して第0バスセレクタ107と接続し、バス120を介して第1バスセレクタ108と接続し、バス124を介して第2バスセレクタ109とし、バス127を介して第3バスセレクタ110と接続する。
【0027】
メインメモリ106は、バス116を介して第0バスセレクタ107と接続し、バス121を介して第1バスセレクタ108と接続し、バス125を介して第2バスセレクタ109と接続し、バス128を介して第3バスセレクタ110と接続し、バス129を介してL4キャッシュ105と接続する。
【0028】
第0バスセレクタ107、第1バスセレクタ108、第2バスセレクタ109、及び第3バスセレクタ110は、マルチプレクサから構成されている。
【0029】
第0バスセレクタ107は、バイパス制御部130から第0バスセレクタ107へ付与される制御信号である制御信号SC_0に基づいて、上層にあるコア101及び多階層キャッシュメモリから転送されてきたデータの出力先を選択、又は下層のキャッシュへ繋がるバスの切断を行う。
【0030】
第1バスセレクタ108は、バイパス制御部130から第1バスセレクタ108へ付与される制御信号である制御信号SC_1に基づいて、上層にあるコア101及び多階層キャッシュメモリから転送されてきたデータの出力先を選択、又は下層のキャッシュへ繋がるバスの切断を行う。
【0031】
第2バスセレクタ109は、バイパス制御部130から第2バスセレクタ109へ付与される制御信号である制御信号SC_2に基づいて、上層にあるコア101及び多階層キャッシュメモリから転送されてきたデータの出力先を選択、又は下層のキャッシュへ繋がるバスの切断を行う。
【0032】
第3バスセレクタ110は、バイパス制御部130から第3バスセレクタ110へ付与される制御信号である制御信号SC_3に基づいて、上層にあるコア101及び多階層キャッシュメモリから転送されてきたデータの出力先を選択、又は下層のキャッシュへ繋がるバスの切断を行う。
【0033】
[バスセレクタの入出力の構成]
以下、バスセレクタの入出力の構成の一例について説明する。
図2は、本発明の一実施形態に係るマイクロプロセッサが備えるバスセレクタの入出力の構成を説明するための図である。
【0034】
第0バスセレクタ107は、コア101からバス111を介して入力されるデータを入力とする。また、第0バスセレクタ107は、バイパス制御部130が付与する3ビットの制御信号SC_0に基づいて、データの出力先とするバス(バス112~116のいずれか)を選択する。
【0035】
例えば、第0バスセレクタ107は、入力された制御信号SC_0が示す値が「000」である場合には、データの出力先として、L1キャッシュ102に接続するバス112を選択する。
また、例えば、第0バスセレクタ107は、入力された制御信号SC_0が示す値が「001」である場合には、データの出力先として、L2キャッシュ103に接続するバス113を選択する。
また、例えば、第0バスセレクタ107は、入力された制御信号SC_0が示す値が「010」である場合には、データの出力先として、L3キャッシュ104に接続するバス114を選択する。
また、例えば、第0バスセレクタ107は、入力された制御信号SC_0が示す値が「011」である場合には、データの出力先として、L4キャッシュ105に接続するバス115を選択する。
また、例えば、第0バスセレクタ107は、入力された制御信号SC_0が示す値が「100」である場合には、データの出力先として、メインメモリ106に接続するバス116を選択する。
なお、例えば、第0バスセレクタ107は、入力された制御信号SC_0が示す値が「101」である場合には、データの出力先を選択せずに下層へのバス接続を切断する。
【0036】
第1バスセレクタ108は、L1キャッシュ102からバス117を介して入力されるデータを入力とする。また、第1バスセレクタ108は、バイパス制御部130が付与する3ビットの制御信号SC_1に基づいて、データの出力先とするバス(バス118~121のいずれか)を選択する。
【0037】
例えば、第1バスセレクタ108は、入力された制御信号SC_1が示す値が「000」である場合には、データの出力先として、L2キャッシュ103に接続するバス118を選択する。
また、例えば、第1バスセレクタ108は、入力された制御信号SC_1が示す値が「001」である場合には、データの出力先として、L3キャッシュ104に接続するバス119を選択する。
また、例えば、第1バスセレクタ108は、入力された制御信号SC_1が示す値が「010」である場合には、データの出力先として、L4キャッシュ105に接続するバス120を選択する。
また、例えば、第1バスセレクタ108は、入力された制御信号SC_1が示す値が「011」である場合には、データの出力先として、メインメモリ106に接続するバス121を選択する。
【0038】
第2バスセレクタ109は、L2キャッシュ103からバス122を介して入力されるデータを入力とする。また、第2バスセレクタ109は、バイパス制御部130が付与する2ビットの制御信号SC_2に基づいて、データの出力先とするバス(バス123~125のいずれか)を選択する。
【0039】
例えば、第2バスセレクタ109は、入力された制御信号SC_2が示す値が「00」である場合には、データの出力先として、L3キャッシュ104に接続するバス125を選択する。
また、例えば、第2バスセレクタ109は、入力された制御信号SC_2が示す値が「01」である場合には、データの出力先として、L4キャッシュ105に接続するバス124を選択する。
また、例えば、第2バスセレクタ109は、入力された制御信号SC_2が示す値が「10」である場合には、データの出力先として、メインメモリ106に接続するバス125を選択する。
【0040】
第3バスセレクタ110は、L3キャッシュ104からバス126を介して入力されるデータを入力とする。また、第3バスセレクタ110は、バイパス制御部130が付与する2ビットの制御信号SC_3に基づいて、データの出力先とするバス(バス127~128のいずれか)を選択する。
【0041】
例えば、第3バスセレクタ110は、入力された制御信号SC_3が示す値が「00」である場合には、データの出力先として、L4キャッシュ105に接続するバス127を選択する。
また、例えば、第3バスセレクタ110は、入力された制御信号SC_3が示す値が「01」である場合には、データの出力先として、メインメモリ106に接続するバス128を選択する。
【0042】
[多階層キャッシュメモリへの電力供給制御の構成]
以下、多階層キャッシュメモリへの電力供給制御の構成の一例について説明する。
図3は、本発明の一実施形態に係るマイクロプロセッサによる多階層キャッシュメモリへの電力供給制御の構成を説明するための図である。
【0043】
図3に示すように、電力制御部131は、マイクロプロセッサ100に搭載された多階層キャッシュメモリのうちバイパスされた階層のキャッシュメモリへの電力供給を行うか否かを示す電力制御信号(電力制御信号PC_L1~PC_L4)を、各階層のキャッシュメモリ(L1キャッシュ102~L4キャッシュ105)に付与する。
【0044】
図3に示すように、L1キャッシュ102、L2キャッシュ103、L3キャッシュ104及びL4キャッシュ105に入力される電力制御信号は、それぞれ、電力制御信号PC_L1、電力制御信号PC_L2、電力制御信号PC_L3及び電力制御信号PC_L4である。これらの電力制御信号(電力制御信号PC_L1~PC_L4)は、例えば、1ビットのデータである。
【0045】
キャッシュメモリに入力された電力制御信号の値が「0」である場合、キャッシュメモリへの電力供給が停止され、キャッシュメモリが無効化される。一方、キャッシュメモリに入力された電力制御信号の値が「1」であるならば、キャッシュメモリへの電力供給が行われ、キャッシュメモリが有効化される。なお、電力制御の方法そしては、例えば、パワーゲーティング等を用いた電力管理手法を適用することが考えられる。
【0046】
ここで、例えば、バイパス制御部130が、L2キャッシュ103をバイパスし、キャッシュ階層を、L1キャッシュ102、L3キャッシュ104及びL4キャッシュ105の3階層に再構成する場合を考える。
【0047】
この場合、バイパス制御部130は、第0バスセレクタ107に対し、制御信号SC_0の値として「000」を付与する。これにより、第0バスセレクタ107とL1キャッシュ102とを接続するバス112が、データの出力先として選択される。L1キャッシュ102へ入力されたデータは、バス117を介して第1バスセレクタ108に入力される。
【0048】
L2キャッシュ103にはデータを書き込まずにバイパスするため、バイパス制御部130は、第1バスセレクタ108に対し、制御信号SC_1の値として「001」を付与する。これにより、第1バスセレクタ108とL3キャッシュ104とを接続するバス119が、データの出力先として選択される。L3キャッシュ104へ入力されたデータは、バス126を介して第3バスセレクタ110に入力される。
【0049】
このとき、バス122を経由するバスは不要となるため、バイパス制御部130は、第2バスセレクタ109に対し、制御信号SC_2の値として「11」を付与する。これにより、バス123、バス124及びバス125への接続が切断される。
【0050】
バイパス制御部130は、第3バスセレクタ110に対し、制御信号SC_3の値として「001」を付与する。これにより、第3バスセレクタ110とL4キャッシュ105とを接続するバス127が、データの出力先として出力先として選択される。L4キャッシュ105へ入力されたデータは、バス129を介してメインメモリ106に入力される。
【0051】
次に、図3に示した電力制御部131は、L2キャッシュ103に対して、L2キャッシュ103への電力供給を行わないこと示す(すなわち、値が「0」である)電力制御信号PC_L2を付与する。これにより、バイパスされたL2キャッシュ103のデータアレイに対する電力供給が遮断され、L2キャッシュ103が無効化される。
【0052】
以上説明したように、本発明の一実施形態によるマイクロプロセッサは、搭載している多階層キャッシュメモリのバスセレクタ(第0バスセレクタ107~第3バスセレクタ110)を制御することによって、各階層のキャッシュメモリ同士の間の接続及び切断を制御することができる。これにより、各階層のキャッシュメモリ同士の間、各階層のキャッシュメモリとメインメモリ106との間、及び、各階層のキャッシュメモリとコア101との間の接続及び切断を任意に行うことが可能になり、キャッシュメモリの構成を柔軟に変更すること可能になる。
【0053】
[多階層キャッシュメモリの構成例]
以下、上記説明したマイクロプロセッサ100の4階層からなる多階層キャッシュメモリによって実現しうる論理的な構成の一例について説明する。
図4は、本発明の一実施形態に係るマイクロプロセッサ100によって実現可能な多階層キャッシュメモリの論理的な構成を示す模式図である。
【0054】
図4は、4階層からなる多階層キャッシュメモリによって実現しうる、(1)から(16)までの全16通りの論理的な構成を示している。なお、図4における「L1S」~「L4S」の表記は、それぞれ上述した「L1キャッシュ」~「L4キャッシュ」のキャッシュ階層を示す。
【0055】
また、図4において、網掛けがなされたキャッシュ階層は、バイパスされることによってデータが書き込まれることのない、電源供給が遮断されたキャッシュ階層を表している。一方、網掛けがなされていないキャッシュ階層は、バイパスされることなく活性化しているキャッシュ階層を表している。各階層のキャッシュメモリが、それぞれバイパスされるか否かの2通りの状態をとりうることから、上述した4階層からなる多階層キャッシュメモリは、全2通り(すなわち、16通り)の論理的な構成を実現することができる。
【0056】
図5は、各階層のキャッシュメモリの構成、階層数、及び各制御信号の値との対応を示す図である。図5に示すテーブルは、多階層キャッシュメモリの論理的な構成を、図4に示した(1)から(16)までの構成にした場合における、活性化されたキャッシュ階層の階層数、及び、(1)から(16)までの構成にするための制御信号(制御信号SC_00~SC_03)の値を表している。
【0057】
図4及び図5に示すように、例えば、多階層キャッシュメモリの論理的な構成を(1)の構成とした場合(すなわち、キャッシュメモリのバイパスを行わない場合)、活性化されたキャッシュ階層の階層数は「4」である。また、多階層キャッシュメモリの論理的な構成を(1)の構成とするためには、制御信号SC_00の値を「000」とし、制御信号SC_01の値を「000」とし、制御信号SC_02の値を「00」とし、及び、制御信号SC_03の値を「000」とすればよい。
【0058】
また、例えば、多階層キャッシュメモリの論理的な構成を(2)の構成とした場合(すなわち、L2キャッシュのみをバイパスする場合)、活性化されたキャッシュ階層の階層数は「3」である。また、多階層キャッシュメモリの論理的な構成を(1)の構成とするためには、制御信号SC_00の値を「000」とし、制御信号SC_01の値を「001」とし、制御信号SC_02の値を「00」とし、及び、制御信号SC_03の値を「000」とすればよい。
【0059】
以上説明したように、マイクロプロセッサ100は、コア101、各キャッシュ階層(L1キャッシュ102~L4キャッシュ105)、及びメインメモリ106の間をバスによって接続可能な構成であり、マイクロプロセッサ100が実行するアプリケーションに応じてそれぞれのバスの接続状態を制御することができる。
【0060】
これにより、マイクロプロセッサ100は、任意のキャッシュ階層へのデータの書き込みを回避させる(任意のキャッシュ階層をバイパスさせる)ことができ、バイパスさせたキャッシュ階層よりも上層の階層(キャッシュ階層又はコア101)と、バイパスさせたキャッシュ階層よりも下層にある全ての階層(キャッシュ階層又はメインメモリ106)と、を接続させることができる。
【0061】
これにより、多階層キャッシュメモリがn階層である場合には、全2通りの論理的な構成をとることが可能となる。以上説明したマイクロプロセッサ100によれば、マイクロプロセッサ100が実行するアプリケーション(及びデータアクセスパターン)に応じて適切な構成となるように、多階層キャッシュメモリの論理的な構成を柔軟に変化させることができる。
【0062】
ここで、アプリケーションに応じて適切な構成とは、マイクロプロセッサ100による処理の実行性能を維持又は向上させつつ、消費電力を抑制させる構成である。そのため、アプリケーションに応じて適切な構成を選択するためには、実行性能を示す指標と消費電力とを評価する必要がある。
【0063】
ここでは、実行性能を示す指標として、各キャッシュ階層がどれだけメモリアクセスレイテンシを隠蔽できるかを表すHLPKI(Hidden access Latency Per Kilo-Instruction)を用いる。マイクロプロセッサ100は、HLPKIに基づいて、m階層からなる多階層キャッシュメモリの各キャッシュ階層の要否判定(バイパスさせるか否かの判定)を行う。これにより、アプリケーションの実行性能を最大化させつつ、消費電力を抑制することができる、多階層キャッシュメモリの構成を決定する。
【0064】
第n階層のキャッシュメモリ(n次キャッシュメモリ)におけるHLPKIを示すHLPKInは、以下の式(1)によって導出される。
【0065】
HLPKIn=HPKIn×MPn ・・・(1)
【0066】
HLPKInは、n次キャッシュメモリが1000命令あたりに隠蔽可能なメモリアクセスレイテンシを表す。ここで、nは、1から始まる正の整数であり、キャッシュ階層数mを最大値とする。
【0067】
式(1)のHPKInは、n次キャッシュメモリにおける、1000命令あたりのヒット数である。ここで、ヒット数とはヒットした数であり、ヒットとは、ある階層のキャッシュメモリにアクセスした際に、当該キャッシュにデータが存在し、当該キャッシュから当該データを供給することを示す。一方、当該キャッシュメモリにデータが存在せず、一つ下のキャッシュ階層又はメインメモリ106へアクセスする事象を、ミスと呼ぶものとする。
【0068】
HPKInの値が十分に大きい場合、n次キャッシュメモリへアクセスされる頻度及びヒット率の双方が高い。そのため、n次キャッシュメモリを使用することで、(n+1)次のキャッシュメモリ又はメインメモリ106へのアクセスレイテンシが隠蔽され、アプリケーションの実行時間の短縮が期待できる。したがって、HPKInの値が十分に大きい場合、n次キャッシュメモリを使用する(バイパスしない)と判断することができる。
【0069】
一方、HPKInの値が小さい場合、n次キャッシュメモリへのアクセス数が少ないこと、又は、n次キャッシュメモリへのアクセス数は少なくないがヒット率が低いこと、のいずれかが考えられる。どちらの場合であっても、n次キャッシュメモリを使用しても、下層である(n+1)次キャッシュメモリへのアクセス数は減少しにくい。したがって、HPKInの値が小さい場合、n次キャッシュメモリを使用しない(バイパスする)と判断することができる。
【0070】
このように、HPKInは、プロセッサとメモリとから構成されるコンピュータシステムにおいて、n次キャッシュメモリを有効化又は無効化することによる実行性能の性能予測の指標の一つとして活用することができる。
【0071】
また、式(1)のMPnは、n次キャッシュメモリのミスペナルティを示す。MPnは、n次キャッシュメモリにおけるヒット時のレイテンシと、ミスした場合に次にアクセスされる、(n+1)次キャッシュメモリ又はメインメモリ106におけるヒット時のレイテンシと、の差により求められる。
【0072】
ミスペナルティが大きい場合、n次キャッシュメモリが一回のヒット時において隠蔽可能なアクセスレイテンシは大きい。そのため、HPKInが低い場合であっても、当該キャッシュ階層によりアクセスレイテンシが十分に隠蔽可能な場合は、システムの実行性能が向上する。一方、ミスペナルティが小さい場合、一回のヒットがシステムの実行性能に与える影響は限定的であるため、HPKInが高い場合であっても、当該キャッシュ階層の実行性能向上への貢献度は低い。
【0073】
以上のことから、HPKInとミスペナルティとの二つの指標を乗じることによって、システムの実行性能の向上に対する貢献度が低いキャッシュ階層を識別することが可能になる。
【0074】
[多階層キャッシュメモリ制御部の構成]
以下、多階層キャッシュメモリを制御する多階層キャッシュメモリ制御部の構成について説明する。
図6は、本発明の一実施形態に係るマイクロプロセッサ100に搭載された多階層キャッシュメモリを制御する多階層キャッシュメモリ制御部の構成を示すブロック図である。
【0075】
上記において、図1を参照しながら説明した各キャッシュ階層は、図6に示す多階層キャッシュメモリ制御部300を備える。
図6に示すように、多階層キャッシュメモリ制御部300は、ヒット・カウンタ301と、命令数カウンタ302と、ミスペナルティテーブル303と、HPKI(Hit Per Kilo-Instruction)導出部304と、HLPKI導出部305と、キャッシュメモリ部309と、を含んで構成される。また、キャッシュメモリ部309は、データアレイ312を含んで構成される。
【0076】
マイクロプロセッサ100において命令が実行される度に、コア101と各キャッシュ階層を結ぶ制御線を介して、実行命令数が各キャッシュ階層に転送される。多階層キャッシュメモリ制御部300の命令数カウンタ302は、実行命令数を記録する。
【0077】
また、コア101において、メモリアクセス命令(メモリからデータを読み出すロード命令)が実行される。メモリアクセス命令が求めるデータが当該キャッシュ階層に保存されている場合には、ヒット・カウンタ301は記録しているヒット数の値を一つ増加させる。
【0078】
命令数カウンタ302が保持する値が1000に達した場合、ヒット・カウンタ301からHPKI導出部304へ、1000命令あたりのヒット数であるHPKInの値を示す情報が転送される。HPKInの値を示す情報は、HPKI導出部304において保持される。このとき、命令数カウンタ302が保持する実行命令数を示す値は、0にリセットされる。
【0079】
ミスペナルティテーブル303には、各キャッシュ階層におけるミスペナルティ(MPn)が保存されている。1000命令毎に、HLPKI導出部305は、HPKI導出部304から入力されたHPKInの値と、ミスペナルティテーブル303が保持しているMPnの値と、を乗じることによってHLPKInの値を導出する。
【0080】
その後、全キャッシュ階層のHLPKInの値を示す情報が、コア101及びバイパス制御部130へ送信される。コア101とバイパス制御部130とにおいて、HLPKIの値が最小となるキャッシュ階層をバイパスするか否かの判定が行われる。
【0081】
HLPKIの値が最小となるキャッシュ階層をバイパスし、当該キャッシュ階層に対してデータの書き込みを行わないと判定された場合、バイパス制御部130は、当該キャッシュ階層より上層のキャッシュ階層と、当該キャッシュ階層より下層のキャッシュ階層又はメインメモリ106と、の間の接続を、バスセレクタ(第0バスセレクタ107、第1バスセレクタ108、第2バスセレクタ109、及び第3バスセレクタ110)を制御することによって切断する。これにより、バイパス制御部130は、当該キャッシュ階層がバイパスされ、上層のキャッシュ階層と、下層のキャッシュ階層又はメインメモリ106と、を接続する。
【0082】
この後、電力制御部131は、バイパスされたキャッシュ階層のキャッシュメモリ部309への電力供給を遮断する。そして、電力制御スイッチ313に対して、電力制御信号PC_Ln(nはキャッシュ階層の次数)の値として「0」が付与され、キャッシュメモリ部309のデータアレイ312へのデータ供給が遮断される。
【0083】
[キャッシュ階層の要否判定処理]
以下、各キャッシュ階層の要否を判定する判定処理について説明する。
図7は、本発明の一実施形態に係るマイクロプロセッサによるキャッシュ階層の要否判定処理の流れを示すフローチャートである。以下に示す要否判定処理は、コア101及びバイパス制御部130によって行われる。
【0084】
マイクロプロセッサ100によってアプリケーションが実行されると、HPKI導出部304は、HPKIの値を算出する(ステップS101)。なお、上述したように、HPKIとは、ここでは、1000命令あたりのヒット数のことである。
【0085】
次に、HLPKI導出部305は、各キャッシュ階層のHLPKIの値を算出する(ステップS102)。なお、上述したように、HLPKIとは、ここでは、判定対象のキャッシュ階層のHPKIとミスペナルティとを乗じた値である。
【0086】
次に、バイパス制御部130は、全てのキャッシュ階層のHLPKIの値を集約し、最小のHLPKIの値を有するキャッシュ階層を特定し、選択する(ステップS103)。
【0087】
次に、コア101は、ステップS103において特定された最小のHLPKIの値を有するキャッシュ階層をバイパスして無効化させた場合における、マイクロプロセッサ100のエネルギー効率(エネルギーあたりの実行性能)を評価する。
【0088】
エネルギー効率が向上すると評価された場合(ステップS104・Yes)、HLPKIの値が最小となる当該キャッシュ階層をバイパスして無効化させ、電力供給を遮断する(ステップS105)。そして、エネルギー効率が低下するキャッシュ構成が決定するまで上記の処理(ステップS101~ステップS104)を繰り返す。
【0089】
一方、エネルギー効率が低下すると評価された場合(ステップS104・No)、バイパスを行わず、以上の処理によって得られたキャッシュメモリの構成を最終的な構成として決定する。
以上で、図7に示すフローチャートの処理が終了する。
【0090】
なお、キャッシュメモリの構成を決定するためには、エネルギーあたりの実行性能を求める必要があるが、実行性能の指標として、1サイクルあたりの実行命令数を表すIPC(Instructions Per Cycle)を用いることができる。また、IPCの測定手段として、プログラムの事前実行によるプロファイリング、又は、近年のマイクロプロセッサが具備するハードウェアカウンタを用いることができる。また、消費エネルギーは、マイクロプロセッサが有するハードウェアカウンタ及び電力モニタリングツールと、プログラムの実行時間と、基づいて測定することができる。
【0091】
なお、アプリケーションを事前に実行して図7に示した処理を行うことによってアプリケーションに適したキャッシュ構成を選択した後に静的に処理を行うことができるだけでなく、マイクロプロセッサ100のコア101において上記の実行性能及び消費エネルギーの解析を動的に実行させる構成にすることも可能である。
【0092】
なお、上述した実施形態においては、HLPKInは、第n層のキャッシュメモリが1000命令あたりに隠蔽可能なメモリアクセスレイテンシを表すものとし、HPKInは、第n層のキャッシュメモリにおける1000命令あたりのヒット数であるものとしたが、これに限られるものではない。すなわち、上述した実施形態においては、各キャッシュ階層を用いるか否かを判定する基準を1000命令程度しているが、これに限られるものではない。所定の回数内でのキャッシュ階層間における貢献度に基づいて、階層毎に、各キャッシュ階層を使用するか否かを判定する構成であればよく、所定の回数は必ずしも1000回ではなくてもよい。
【0093】
以上説明したように、本発明の一実施形態による多階層キャッシュメモリの制御方法によれば、キャッシュ階層ごとに、IPCと電力とに基づいて、使用するキャッシュメモリ及びバイパスするキャッシュメモリが決定される。これにより、使用するキャッシュ階層を、アプリケーションごとに適応的に制御することができ、マイクロプロセッサ100に搭載される多階層キャッシュメモリの構造を、アプリケーションに応じて再構成できるようになる。以上の構成により、本発明の一実施形態による多階層キャッシュメモリの制御方法によれば、アプリケーションの実行性能を維持又は向上させつつ、マイクロプロセッサ100の消費電力を抑制することができ、マイクロプロセッサ100の電力効率を向上させることができる。
【0094】
なお、本発明の一実施形態による多階層キャッシュメモリの制御方法は、異種のアーキテクチャを有するコアが統合されたようなマルチコアプロセッサ(ヘテロジニアスマルチコア)に対しても、効率的な適用が可能である。ヘテロジニアスマルチコアにおいては、上位キャッシュは特定のコアが占有し、下位キャッシュのみを複数コアが共有する場合がある。
【0095】
例えば、動画像符号化用プロセッサの場合、画像上で必要な範囲のピクセルデータを広い範囲でL2キャッシュに転送しておき、動き探索処理用コアがさらに限定された範囲のピクセルデータを共有L2キャッシュから占有L1-1キャッシュに転送し、動き補償用コアが限定された範囲のピクセルデータを共有L2キャッシュから占有L1-2キャッシュに転送し、特定色判定用コアが限定範囲のピクセルデータを共有L2キャッシュから占有L1-3キャッシュに転送する、という場合が考えられる。
【0096】
このような場合、上位キャッシュは最大でコアの個数だけ存在する。そのため、各キャッシュ階層のバイパスによって実現される構造は、通常のシングルコア等に比べて、さらに多くの場合分けが考えられる。また、それぞれの上位キャッシュはヒット率についても大きなばらつきが存在することがありうる。そのため、本制御方法によりキャッシュ階層を適応的に制御することは、消費電力の大きな削減につながる。
【0097】
なお、動画像には様々な画像サイズ及びフレームレートがありうるため、動画像処理用プロセッサが必要とする単位時間あたりバンド幅及びレイテンシは、動画によって大きく異なる。本制御方法を、例えば、動画像処理用プロセッサに適用する場合、入力される各動画像に応じて、プロセッサが必要とする性能を実現するための最小限のキャッシュ階層を有効化する。そして、その他のキャッシュ階層を無効化及びバイパスすることによって、本制御方法は、動画像処理性能を維持しつつ消費電力を抑制することができる。
【0098】
上述した実施形態における多階層キャッシュメモリ制御部300の一部又は全部をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、FPGA(Field Programmable Gate Array)等のプログラマブルロジックデバイスを用いて実現されるものであってもよい。
【0099】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0100】
100…マイクロプロセッサ、101…コア、102…L1キャッシュ、103…L2キャッシュ、104…L3キャッシュ、105…L4キャッシュ、106…メインメモリ、107…第0バスセレクタ、108…第1バスセレクタ、109…第2バスセレクタ、110…第3バスセレクタ、111~129…バス、130…バイパス制御部、131…電力制御部、300…多階層キャッシュメモリ制御部、301…ヒット・カウンタ、302…命令数カウンタ、303…ミスペナルティテーブル、304…HPKI導出部、305…HLPKI導出部、309…キャッシュメモリ部、312…データアレイ、313…電力制御スイッチ
図1
図2
図3
図4
図5
図6
図7