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

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

▶ 日本電気株式会社の特許一覧

特許7363255情報処理装置、情報処理方法、及び、プログラム
<>
  • 特許-情報処理装置、情報処理方法、及び、プログラム 図1
  • 特許-情報処理装置、情報処理方法、及び、プログラム 図2
  • 特許-情報処理装置、情報処理方法、及び、プログラム 図3
  • 特許-情報処理装置、情報処理方法、及び、プログラム 図4
  • 特許-情報処理装置、情報処理方法、及び、プログラム 図5
  • 特許-情報処理装置、情報処理方法、及び、プログラム 図6
  • 特許-情報処理装置、情報処理方法、及び、プログラム 図7
  • 特許-情報処理装置、情報処理方法、及び、プログラム 図8
  • 特許-情報処理装置、情報処理方法、及び、プログラム 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-10
(45)【発行日】2023-10-18
(54)【発明の名称】情報処理装置、情報処理方法、及び、プログラム
(51)【国際特許分類】
   G06F 12/126 20160101AFI20231011BHJP
【FI】
G06F12/126 100
【請求項の数】 8
(21)【出願番号】P 2019169294
(22)【出願日】2019-09-18
(65)【公開番号】P2021047591
(43)【公開日】2021-03-25
【審査請求日】2022-08-15
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100109313
【弁理士】
【氏名又は名称】机 昌彦
(74)【代理人】
【識別番号】100149618
【弁理士】
【氏名又は名称】北嶋 啓至
(72)【発明者】
【氏名】加納 健
【審査官】田中 啓介
(56)【参考文献】
【文献】特開2002-163151(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/00-12/128
G06F13/16-13/18
(57)【特許請求の範囲】
【請求項1】
命令を実行するプロセッサと、
ローダによりメモリに生成され、
生成されるときに、
前記プロセッサが実行する命令を保存する第1の命令記憶手段と、
前記第1の命令記憶手段において、優先的にキャッシュする命令を保存するアドレスの範囲を保存するアドレス記憶手段と
含むように生成される実行モジュールと、
前記プロセッサが実行する命令のキャッシュとして、前記実行モジュールが保存する命令の複製を保存する第2の命令記憶手段と、
前記第2の命令記憶手段が保存した命令に関連するアドレスとして、前記実行モジュールにおける命令のアドレスを含むエントリを保存するエントリ記憶手段と、
エントリが保存するアドレスと、前記実行モジュールが保存するアドレスの範囲とを用いて、複製として保存する命令の中で、新たな命令と置き換える命令を決定するキャッシュ制御手段と
を含む命令キャッシュと
を含む情報処理装置。
【請求項2】
前記キャッシュ制御手段が、
前記エントリ記憶手段が保存するエントリにおいて、命令に関連しないエントリがある場合、命令に関連しないエントリを新たな命令のエントリとして決定し、
命令に関連しないエントリがない場合、前記アドレス記憶手段が保存するアドレスの範囲に含まれないアドレスを含むエントリに関連する命令を、新たな命令と置き換える命令と決定する
請求項1に記載の情報処理装置。
【請求項3】
エントリが、
エントリが有効であるか否かを示す情報を含み、
前記キャッシュ制御手段が、エントリが有効であるか否かの情報を用いてエントリが命令に関連するか否かを判定する
請求項2に記載の情報処理装置。
【請求項4】
前記キャッシュ制御手段が
前記第2の命令記憶手段に命令を複製するときに、前記実行モジュールにおける命令のアドレスと、前記アドレス記憶手段が保存するアドレスの範囲とを用いて、複製する命令が優先的にキャッシュする命令であるか否かを判定し、
エントリに判定の結果を保存し、
エントリに保存された判定の結果を用いて、置き換える命令を決定する
請求項1ないし3のいずれか1項に記載の情報処理装置。
【請求項5】
前記アドレス記憶手段が、
アドレスの範囲として、アドレスの範囲の下限アドレス及び上限アドレスを保存する
請求項1ないし4のいずれか1項に記載の情報処理装置。
【請求項6】
前記ローダをさらに含み、
前記ローダは、
前記実行モジュールを生成するときに、
前記実行モジュールに含まれる命令の中で、優先的に前記命令キャッシュに保存する命令を指定する命令指定手段と、
前記実行モジュールにおいて、指定された命令を配置する前記実行モジュールの前記第1の命令記憶手段におけるアドレスを決定し、決定したアドレスを前記アドレス記憶手段に記憶する命令配置決定手段と、
決定した前記第1の命令記憶手段のアドレスに指定された命令を埋め込む命令埋め込み手段と
を含む
請求項1ないし5のいずれか1項に記載の情報処理装置。
【請求項7】
命令を実行するプロセッサと、
ローダによりメモリに生成され、生成されるときに、前記プロセッサが実行する命令と、優先的にキャッシュする命令を保存するアドレスの範囲を保存するように生成される実行モジュールと、
命令キャッシュとを含む情報処理装置において、
前記命令キャッシュが
前記プロセッサが実行する命令のキャッシュとして、前記実行モジュールが保存する命令の複製を保存し、
保存した命令に関連するアドレスとして、前記実行モジュールにおける命令のアドレスを含むエントリを保存し、
エントリが保存するアドレスと、前記実行モジュールが保存するアドレスの範囲とを用いて、複製として保存する命令の中で、新たな命令と置き換える命令を決定する
情報処理方法。
【請求項8】
命令を実行するプロセッサを含む情報処理装置に、
ローダによりメモリに生成され、
生成されるときに、
前記プロセッサが実行する命令を保存し、
優先的にキャッシュする命令を保存するアドレスの範囲を保存するように
実行モジュールを生成する処理と、
前記プロセッサが実行する命令のキャッシュとして、前記実行モジュールが保存する命令の複製を保存し、
保存した命令に関連するアドレスとして、前記実行モジュールにおける命令のアドレスを含むエントリを保存し、
エントリが保存するアドレスと、前記実行モジュールが保存するアドレスの範囲とを用いて、複製として保存する命令の中で、新たな命令と置き換える命令を決定する
命令キャッシュとしての処理と
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置などに用いられるキャッシュに関し、特に、命令を保存する命令キャッシュに関する。
【背景技術】
【0002】
情報処理装置は、具体的な命令を実行する実体として、プロセッサを含んでいる。プロセッサにおける命令の実行には、実行する命令とその命令で使用するデータとが、必要である。命令及びデータが供給されない場合、プロセッサは、命令及びデータの待ち状態となる。つまり、プロセッサの実行が停止する。プロセッサの実行効率を高めるためには、プロセッサの実行が停止しないように、命令とデータとをプロセッサに供給することが、重要である。
【0003】
命令に必要なデータについては、あらかじめ、プリフェッチ命令等を用いて、データキャッシュに保存することができる。しかし、命令は、分岐命令等がある。分岐命令は、分岐が発生するか否かに伴い、その命令の後に実行される命令が異なる。そのため、命令を命令キャッシュにプリフェッチすることは、難しい。
【0004】
なお、分岐命令で分岐するかどうかを予測する構成として、分岐予測器がある。しかし、分岐予測器に基づく予測は、あくまでも予測である。そのため、実際のプロセッサの動作は、必ずしも分岐予測器の予測どおり分岐するとは限らない。
【0005】
そこで、命令についてのキャッシュを実現するための技術が提案されている(例えば、特許文献1及び2を参照)。
【0006】
特許文献1は、コンパイラが生成した命令列の中に、命令をプリフェッチするための命令を挿入する技術を開示している。
【0007】
特許文献2は、特定のタスクを、キャッシュミスヒット率の低いコアに移動する技術を開示している。
【先行技術文献】
【特許文献】
【0008】
【文献】特開平11-306028号公報
【文献】特開2014-130644号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
プロセッサが実行する命令には、頻繁に実行される命令が存在する。このような頻繁に実行される命令は、常に、命令キャッシュに配置されることが望ましい。
【0010】
しかし、特許文献1に記載の技術は、命令キャッシュにおける命令の置き換えにおいて、命令を区別していない。
【0011】
そのため、特許文献1に記載の技術は、頻繁に実行される命令も、他の命令と同様に、命令キャッシュから追い出されてしまうという問題点があった。
【0012】
特許文献2に記載の技術は、特定のタスクとして、頻繁に実行される命令を含むタスクを用いると、キャッシュミスヒット率の低いコアのキャッシュに、頻繁に実行される命令を置くことができる。
【0013】
しかし、各コアは、動作が固定される場合は少ない。つまり、各コアにおけるキャッシュミスヒット率は、固定ではなく、常に変化する。
【0014】
特許文献2に記載の技術は、キャッシュミスヒット率が変化した場合に、コア間においてタスクを移動する動作が必要となる。この動作は、命令の実行とは異なる動作であり、プロセッサの実行効率を低下させる動作である。
【0015】
つまり、特許文献2に記載の技術は、各コアにおけるキャッシュミスヒット率の変化した場合に、プロセッサの実行効率が低下するという問題点があった。
【0016】
本発明の目的は、上記問題点を解決し、命令キャッシュにおける所定の命令の置き換えを低減する情報処理装置などを提供することにある。
【課題を解決するための手段】
【0017】
本発明の一形態における情報処理装置は、
命令を実行するプロセッサと、
プロセッサが実行する命令を保存する第1の命令記憶手段と、
第1の命令記憶手段において、優先的にキャッシュする命令を保存するアドレスの範囲を保存するアドレス記憶手段と
を含む実行モジュールと、
プロセッサが実行する命令のキャッシュとして、実行モジュールが保存する命令の複製を保存する第2の命令記憶手段と、
第2の命令記憶手段が保存した命令に関連するアドレスとして、実行モジュールにおける命令のアドレスを含むエントリを保存するエントリ記憶手段と、
エントリが保存するアドレスと、実行モジュールが保存するアドレスの範囲とを用いて、複製として保存する命令の中で、新たな命令と置き換える命令を決定するキャッシュ制御手段と
を含む命令キャッシュと
を含む。
【0018】
本発明の別の形態における情報処理装置は、
上記情報処理装置と、
実行モジュールを生成するときに、
実行モジュールに含まれる命令の中で、優先的に命令キャッシュに保存する命令を指定する命令指定手段と、
実行モジュールにおいて、指定された命令を配置する実行モジュールにおけるアドレスを決定する命令配置決定手段と、
決定したアドレスに指定された命令を埋め込む命令埋め込み手段と
を含むローダをさらに含む。
【0019】
本発明の一形態における情報処理方法は、
命令を実行するプロセッサと、
プロセッサが実行する命令と、優先的にキャッシュする命令を保存するアドレスの範囲を保存する実行モジュールと、
命令キャッシュとを含む情報処理装置において、
命令キャッシュが
プロセッサが実行する命令のキャッシュとして、実行モジュールが保存する命令の複製を保存し、
保存した命令に関連するアドレスとして、実行モジュールにおける命令のアドレスを含むエントリを保存し、
エントリが保存するアドレスと、実行モジュールが保存するアドレスの範囲とを用いて、複製として保存する命令の中で、新たな命令と置き換える命令を決定する。
【0020】
本発明の一形態におけるプログラムは、
命令を実行するプロセッサを含む情報処理装置に、
プロセッサが実行する命令を保存し、
優先的にキャッシュする命令を保存するアドレスの範囲を保存する
実行モジュールとしての処理と、
プロセッサが実行する命令のキャッシュとして、実行モジュールが保存する命令の複製を保存し、
保存した命令に関連するアドレスとして、実行モジュールにおける命令のアドレスを含むエントリを保存し、
エントリが保存するアドレスと、実行モジュールが保存するアドレスの範囲とを用いて、複製として保存する命令の中で、新たな命令と置き換える命令を決定する
命令キャッシュとしての処理と
を実行させる。
【発明の効果】
【0021】
本発明に基づけば、命令キャッシュにおける所定の命令の置き換えを低減するとの効果を奏することができる。
【図面の簡単な説明】
【0022】
図1図1は、第1の実施形態にかかる情報処理装置の構成の一例を示すブロック図である。
図2図2は、命令キャッシュの構成の一例を示す図である。
図3図3は、エントリの構成の一例を示す図である。
図4図4は、4wayに対応したエントリの構成の一例を示す図である。
図5図5は、キャッシュ制御部における命令を判定する動作を説明するための図である。
図6図6は、キャッシュ制御部における置き換える命令を決める動作の一例を示すフロー図である。
図7図7は、実行モジュールにおける領域の一例を示す図である。
図8図8は、第2の実施形態にかかる情報処理装置の構成の一例を示すブロック図である。
図9図9は、情報処理装置のハードウェア構成の一例を示すブロック図である。
【発明を実施するための形態】
【0023】
次に、図面を参照して、本発明における実施形態について説明する。
なお、各図面は、本発明の実施形態を説明するためのものである。ただし、本発明は、各図面の記載に限られるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明を、省略する場合がある。また、以下の説明に用いる図面において、本発明の説明に関係しない部分の構成については、記載を省略し、図示しない場合もある。また、図面中の矢印の方向は、一例を示すものであり、ブロック間の信号の向きを限定するものではない。
【0024】
なお、以下の説明に用いる命令は、1つの命令でもよく、複数の命令の組合せである命令列でもよい。例えば、各実施形態は、複数の命令用のパイプライン(wayとも呼ぶ)を備えていてもよい。ただし、以下の説明において、命令の構成を区別する必要がない場合は、単に「命令」と呼ぶ。
【0025】
また、以下の説明において、命令キャッシュにおいて置き換えを低減する対象となる命令(所定の命令)、つまり、命令キャッシュに優先的にキャッシュされる命令を、「優先命令」と呼ぶ。また、命令キャッシュおいて優先命令より優先的に置き換えられる命令を「非優先命令」と呼ぶ。
【0026】
なお、優先命令は、任意である。例えば、優先命令は、所定の頻度より多く実行される命令である。あるいは、優先命令は、所定の間隔で実行される命令である。
【0027】
<第1の実施形態>
以下、図面を参照して、第1の実施形態について説明する。
【0028】
[構成の説明]
図1は、第1の実施形態にかかる情報処理装置10の構成の一例を示すブロック図である。
【0029】
情報処理装置10は、命令キャッシュ100と、ローダ103と、実行モジュール120と、プロセッサ130とを含む。
【0030】
実行モジュール120は、情報処理装置10のメモリ(図示せず)の上に生成され、プロセッサ130が実行する命令を含む。実行モジュール120は、その他の情報(例えば、実行に用いられるデータ)を含んでもよい。
【0031】
プロセッサ130は、実行モジュール120に含まれる命令を実行する。その際、プロセッサ130は、命令のキャッシュとして、命令キャッシュ100を用いる。
【0032】
なお、プロセッサ130は、命令キャッシュ100に加え、他のキャッシュ(例えば、データキャシュ)を用いてもよい。
【0033】
ローダ103は、実行モジュール120を生成する。
【0034】
命令キャッシュ100は、実行モジュール120の命令の中で、プロセッサ130が実行する命令をキャッシュする。つまり、命令キャッシュ100は、命令のキャッシュとして、実行モジュール120に含まれる命令の複製を保存する。
【0035】
そして、命令キャッシュ100は、後ほど説明するように、優先命令の置き換えを削減するように動作する。
【0036】
続いて、図面を参照して、各構成の詳細を説明する。
【0037】
なお、プロセッサ130の構成及び動作は、一般的なプロセッサと同様のため、詳細な説明を省略する。
【0038】
(実行モジュール120)
実行モジュール120は、アドレス記憶部101と、命令記憶部124とを含む。
【0039】
命令記憶部124は、プロセッサ130が実行する命令を記憶する。図1に示されている命令記憶部124は、命令を記憶する構成の一例として、非優先命令記憶部121と、優先命令記憶部122とを含む。
【0040】
非優先命令記憶部121は、非優先命令を保存する。
【0041】
優先命令記憶部122は、優先命令を保存する。
【0042】
アドレス記憶部101は、優先命令記憶部122のアドレスの範囲を保存する。
【0043】
なお、アドレス記憶部101は、非優先命令記憶部121のアドレスの範囲を保存してもよい。この場合、以下の説明において、情報処理装置10は、優先命令のアドレスの範囲として、命令記憶部124のアドレスの範囲の中で、アドレス記憶部101が保存するアドレスの範囲を除いたアドレスの範囲を用いて動作すればよい。
【0044】
このように、命令記憶部124は、優先命令と、その他の命令(非優先命令)とを異なるアドレスの範囲に保存する。
【0045】
図7は、実行モジュール120における領域の一例を示す図である。
【0046】
図7に示されている実行モジュール120は、下限アドレス700と、上限アドレス701と、非優先命令領域702と、優先命令領域703とを含む。
【0047】
なお、図7における領域などの配置は、一例である。実行モジュール120における領域などの配置は、図7に限定されない。例えば、下限アドレス700及び上限アドレス701は、最上位アドレスに配置されてもよい。
【0048】
優先命令領域703は、優先命令、つまり、命令キャッシュ100における置き換えを低減する命令を保存する領域である。
【0049】
非優先命令領域702は、その他の命令(非優先命令)を保存する領域である。
【0050】
下限アドレス700は、優先命令領域703の下限のアドレスを保存する。
【0051】
上限アドレス701は、優先命令領域703の上限のアドレスを保存する。
【0052】
下限アドレス700及び上限アドレス701が、アドレス記憶部101の一例である。
【0053】
非優先命令領域702及び優先命令領域703が、命令記憶部124の一例である。
【0054】
なお、命令記憶部124は、複数の非優先命令領域702及び優先命令領域703を含んでもよい。
【0055】
あるいは、非優先命令領域702及び優先命令領域703は、連続せずに、実行モジュール120において、離れたアドレスに配置されてもよい。
【0056】
このように、実行モジュール120は、実行モジュール120における所定のアドレスの範囲を、非優先命令領域702及び優先命令領域703として用いればよい。
【0057】
なお、命令記憶部124は、その他の領域を含んでもよい。
【0058】
また、アドレス記憶部101が保存するアドレスの範囲を示す情報は、アドレスの上限及び下限の組合せに限定されない。例えば、アドレス記憶部101は、アドレスの範囲として、アドレスの上限又は下限と、範囲の長さ又は容量とを保存してもよい。
【0059】
(ローダ103)
ローダ103は、所定のやり方に沿って、実行モジュール120を生成する。実行モジュール120の生成のやり方は、一般的なローダと同様のため、詳細な説明を省略する。
【0060】
ただし、ローダ103は、実行モジュール120の生成の際に、実行モジュール120の所定のアドレスの範囲に、優先命令を配置する。
【0061】
なお、ローダ103がアドレスの範囲を取得するやり方は、任意である。例えば、ローダ103は、利用者から、所定のアドレスの範囲を取得してもよい。あるいは、ローダ103は、所定の規則に沿ってアドレスの範囲を生成してもよい。例えば、ローダ103は、実行モジュール120の容量の所定の比率の範囲を、アドレスの範囲として用いてもよい。
【0062】
ローダ103は、アドレスの範囲を、実行モジュール120のアドレス記憶部101に保存する。
【0063】
以下、優先命令に関連する構成を説明する。
【0064】
ローダ103は、命令指定部104と、命令配置決定部105と、命令埋め込み部106とを含む。
【0065】
命令指定部104は、優先命令を指定する。
【0066】
命令指定部104において、優先命令を指定するやり方は、限定されない。例えば、命令指定部104は、図示しない利用者が操作する装置から、優先命令に関する指定を取得してもよい。あるいは、命令指定部104は、所定の規則、情報処理装置10の構成、又は、実行モジュール120における実行内容を基に、優先命令を指定してもよい。
【0067】
命令配置決定部105は、実行モジュール120に含まれる命令を配置するアドレスを決定する。より詳細には、例えば、命令配置決定部105は、優先命令については、実行モジュール120の優先命令記憶部122に配置されるように、アドレスを決定する。また、命令配置決定部105は、非優先命令については、実行モジュール120の非優先命令記憶部121に配置されるようにアドレスを決定する。例えば、命令配置決定部105は、図7に示されている下限アドレス700及び上限アドレス701を用いて、命令を配置するアドレスを決定する。
【0068】
命令埋め込み部106は、命令配置決定部105が決定した実行モジュール120のアドレスに、命令を埋め込む。
【0069】
上記のように構成されたローダ103は、優先命令を、実行モジュール120における優先命令記憶部122のアドレスの範囲に埋め込む。
【0070】
上記のようなローダ103の動作の結果、命令キャッシュ100は、後ほど説明するように、実行モジュール120における命令のアドレスを用いて、優先命令であるか否かを判定できる。そして、命令キャッシュ100は、判定の結果を用いて、優先命令を命令キャッシュ100に残すような動作を実現できる。
【0071】
(命令キャッシュ100)
命令キャッシュ100は、キャッシュ制御部102と、命令記憶部111と、エントリ記憶部112とを含む。
【0072】
キャッシュ制御部102は、命令キャッシュ100における各構成を制御して、プロセッサ130が実行する命令のキャッシュを実現する。
【0073】
命令記憶部111は、キャッシュ制御部102に制御されて、キャッシュとして、実行モジュール120に含まれる命令の中で、プロセッサ130が実行する命令を保存する。
【0074】
なお、命令キャッシュ100が保存する命令は、実行モジュール120に保存されている命令である。そのため、命令キャッシュ100が保存する命令は、実行モジュール120が保存する命令の複製でもある。
【0075】
エントリ記憶部112は、命令記憶部111が保存している命令(キャッシュしている命令)のアドレスに関連する情報(以下、「エントリ」と呼ぶ)を保存する。エントリについては、後ほど説明する。
【0076】
以下の説明において、命令キャッシュ100は、複数の命令を保存しているとする。
【0077】
なお、命令キャッシュ100は、キャッシュとして、複数の命令を含む命令列(コマンド・アレイ)を保存してもよい。
【0078】
図2は、命令キャッシュ100の構成の一例を示す図である。なお、図2は、命令として命令列(コマンド・アレイ)を用いている場合の一例である。
【0079】
図2に示されている命令キャッシュ100は、キャッシュ制御部200と、アドレスアレイ201と、データアレイ202とを含む。
【0080】
キャッシュ制御部200は、図1におけるキャッシュ制御部102に相当する。
【0081】
アドレスアレイ201は、エントリ記憶部112の一例であり、命令キャッシュ100に保存されている命令のアドレスに関連する情報(エントリ)を保存する。
【0082】
データアレイ202は、命令記憶部111の一例であり、キャッシュとして、プロセッサ130が実行する命令を保存する。
【0083】
図3は、エントリ310の構成の一例を示す図である。
【0084】
エントリ310は、アドレス300と、Validビット301と、Priorityビット302とを含む。
【0085】
アドレス300は、エントリ310に対応する命令のアドレス(実行モジュール120において配置されているアドレス)を保存する。なお、アドレス300は、その他のアドレス(例えば、対応する命令のデータアレイ202におけるアドレス)を、保存してもよい。
【0086】
Validビット301は、エントリ310が有効であるか否かを示す情報である。
【0087】
エントリ310が有効とは、エントリ310が実際の命令と関連付けられていることである。この場合、アドレス300は、有効なアドレスを保存している。エントリ310が無効とは、エントリ310が命令と関連付けられていないことである。
【0088】
例えば、Validビット301が「1」の場合、エントリ310は有効である。Validビット301が「0」の場合、エントリ310は、有効ではない。なお、Validビット301は、1ビットの情報に限定されない。例えば、Validビット301は、1Byteの情報でもよい。
【0089】
キャッシュ制御部102は、エントリ310に対応した命令を命令記憶部111に保存した場合に、Validビット301を「有効(例えば、「1」)」に変更する。また、キャッシュ制御部102は、エントリ310を開放した場合に、Validビット301を「無効(例えば、「0」)」に変更する。
【0090】
Priorityビット302は、そのエントリ310に対応する命令が優先命令であるか否かを示す情報である。Priorityビット302も、1ビットに限られず、例えが、1Byteの情報でもよい。
【0091】
キャッシュ制御部102は、命令をキャッシュする場合に、命令の実行モジュール120におけるアドレスと、アドレス記憶部101とを用いて、その命令が優先命令であるか否かを判定して、Priorityビット302を設定する。そして、キャッシュ制御部102は、命令を置き換える場合において、エントリ310に対応する命令が優先命令であるか否かの判定に、Priorityビット302を用いる。
【0092】
ただし、キャッシュ制御部102は、命令を置き換える場合における命令が優先命令であるか否かの判定において、Priorityビット302を用いなくてもよい。例えば、キャッシュ制御部102は、命令を置き換える場合に、エントリに対応する命令の実行モジュール120におけるアドレス及びアドレス記憶部101を用いて、置き換える命令を判定してもよい。この場合、エントリ310は、Priorityビット302を含まなくてもよい。
【0093】
なお、図3は、Validビット301を「V」、Priorityビット302を「P」を用いて表している。
【0094】
アドレスアレイ201(つまり、エントリ記憶部112)は、複数のwayに対応した命令を保存してもよい。
【0095】
図4は、4wayに対応したエントリ414の構成の一例を示す図である。
【0096】
図4は、一例として、4wayの命令を示している。ただし、本実施形態におけるwayの数は、4に限られず、4未満でもよく、5以上でもよい。
【0097】
図4に示されているエントリ414は、図3に示されたエントリ310に相当するエントリを4つ含む。
【0098】
1つ目のエントリは、way0のエントリであり、アドレス400と、Validビット401と、Priorityビット402とを含む。
【0099】
2つ目のエントリは、way1のエントリであり、アドレス403、Validビット404と、Priorityビット405とを含む。
【0100】
3つ目のエントリは、way2のエントリであり、アドレス406と、Validビット407と、Priorityビット408とを含む。
【0101】
4つ目のエントリは、way3のエントリであり、アドレス409と、Validビット410と、Priorityビット411とを含む。
【0102】
さらに、図4に示されているエントリ414は、非優先エントリ412と、優先エントリ413とを含む。
【0103】
非優先エントリ412は、非優先命令に関連するエントリを示す情報(例えば、非優先命令に関連するエントリのwayの値)を保存する。
【0104】
優先エントリ413は、優先命令に関連するエントリを示す情報(例えば、優先命令に関連するwayの値)を保存する。
【0105】
なお、エントリ414は、その他の情報を含んでもよい。また、エントリ414は、上記の一部を含まなくてもよい。
【0106】
エントリ414が非優先エントリ412を含む場合、キャッシュ制御部102は、非優先エントリ412を用いて、非優先命令に対応するエントリがあるか否かの判定できる。なお、キャッシュ制御部102は、優先エントリ413に含まれないエントリを、非優先命令に対応するエントリを判定してもよい。
【0107】
このように、キャッシュ制御部102は、非優先エントリ412及び優先エントリ413のいずれかを用いて動作してもよい。そのため、エントリ414は、非優先エントリ412及び優先エントリ413のどちらかを含まなくてもよい。
【0108】
なお、非優先エントリ412及び優先エントリ413のどちらにも含まれないエントリは、空エントリである。そこで、キャッシュ制御部102は、非優先エントリ412及び優先エントリ413を用いて空エントリを判定してもよい。この場合、エントリ414は、Validビット401、404、407及び410を含まなくてもよい。
【0109】
なお、キャッシュ制御部102は、Priorityビット402、405、408及び411を用いて、非優先エントリ412及び優先エントリ413に情報を設定すればよい。
【0110】
ただし、キャッシュ制御部102は、各エントリに対応する命令の実行モジュール120におけるアドレスと、アドレス記憶部101とを用いて、非優先エントリ412及び優先エントリ413を設定してもよい。この場合、エントリ414は、Priorityビット402、405、408及び411を含まなくてもよい。
【0111】
図5は、キャッシュ制御部102における命令を判定する動作を説明するための図である。
【0112】
図5に示されているキャッシュ制御部102の動作は、図7に示されている実行モジュール120を用いる場合、より詳細には、下限アドレス500及び上限アドレス501を用いる場合の動作の一例である。
【0113】
なお、キャッシュ制御部102は、下限アドレス500及び上限アドレス501として、実行モジュール120が保存する下限アドレス700及び上限アドレス701を用いてもよい。あるいは、キャッシュ制御部102は、キャッシュ制御部102内に、実行モジュール120が保存する下限アドレス700及び上限アドレス701の複製を保存してもよい。
【0114】
まず、キャッシュ制御部102は、命令のアドレス(詳細には、命令に対応するエントリに含まれるアドレス)と、下限アドレス500及び上限アドレス501を比較する。
【0115】
なお、キャッシュ制御部102は、比較器503を含み、比較器503を用いてアドレスを比較してもよい。あるいは、キャッシュ制御部102は、ソフトウェアの処理として、アドレスを比較してもよい。
【0116】
命令のアドレスが下限アドレス500及び上限アドレス501の範囲に含まれる場合、キャッシュ制御部102は、その命令を、優先命令(優先的に命令キャッシュ100に残す命令)と判定する。
【0117】
命令のアドレスが下限アドレス500及び上限アドレス501の範囲に含まれない場合、キャッシュ制御部102は、その命令を、非優先命令(優先的には命令キャッシュ100に残さない命令)と判定する。
【0118】
図6は、キャッシュ制御部102における置き換える命令に決める動作の一例を示すフロー図である。命令の置き換えは、プロセッサ130が実行する命令が命令キャッシュ100にない場合(キャッシュミスの場合)に発生する。なお、キャッシュミスの判定などは、一般的なキャッシュと同様のため、詳細な説明を省略する。
【0119】
キャッシュミスの命令など新たな命令をキャッシュに追加する場合に、キャッシュ制御部102は、以下で説明する動作を実行する。
【0120】
まず、キャッシュ制御部102は、空エントリ(未使用のエントリ)があるか否かを判定する(ステップS801)。例えば、キャッシュ制御部102は、図3に示したValidビット301、又は、図4に示したValidビット401、404、407、及び410を用いて、空エントリを判定すればよい。
【0121】
空エントリがある場合(ステップS801でYes)、キャッシュ制御部102は、新しい命令用のエントリとして、その空エントリを使用する(ステップS803)。つまり、キャッシュ制御部102は、空エントリを用いて、新しい命令をキャッシュする。
【0122】
空エントリがない場合(ステップS801でNo)、キャッシュ制御部102は、非優先命令に対応するエントリがあるか否かを判定する(ステップS805)。例えば、キャッシュ制御部102は、図3に示されているPriorityビット302、又は、図4に示されている非優先エントリ412を用いて、判定すればよい。
【0123】
例えば、非優先エントリ412がway番号を保存している場合、キャッシュ制御部102は、非優先命令に対応するエントリがあると判定する。非優先エントリ412が、way番号を保存していない、又は、存在しないway番号を保存している場合、キャッシュ制御部102は、非優先命令に対応するエントリがないと判定する。
【0124】
非優先命令に対応するエントリがある場合(ステップS805でYes)、キャッシュ制御部102は、そのエントリの中からいずれかのエントリを選択し、選択したエントリに対応する命令と新しい命令とを置き換える(ステップS807)。例えば、キャッシュ制御部102は、非優先エントリ412が保存しているway番号のエントリに対応する命令と新しい命令とを置き換える。なお、複数の非優先のエントリがある場合、キャッシュ制御部102は、所定の規則に沿って、エントリを選択する。
【0125】
非優先命令に関連するエントリがない場合(ステップS805でNo)、キャッシュ制御部102は、優先命令に関連するエントリから、所定の規則に沿って、置き換えるエントリを選択する。そして、キャッシュ制御部102は、選択したエントリに関連する命令と新しい命令とを置き換える(ステップS809)。例えば、キャッシュ制御部102は、優先エントリ413が保存するway番号のエントリから1つのエントリを選択する。
【0126】
なお、エントリの選択に用いられる所定の規則は、任意である。例えば、所定の規則は、Least Recently Used(LRU)、又は、Least Frequency Used(LFU)でもよい。
【0127】
このように、空エントリがある場合には、情報処理装置10は、新しい命令のエントリとして、空エントリを用いる。空エントリがなく、優先命令に対応するエントリと、非優先命令に対応するエントリとがある場合、情報処理装置10は、上記の動作を基に、新しい命令のエントリとして、非優先命令に対応するエントリを選択する。そのため、情報処理装置10は、上記の動作を基に、優先命令を、非優先命令より命令キャッシュ100に残すことができる。
【0128】
このような動作に基づいて、情報処理装置10は、命令キャッシュ100における、所定の命令(例えば、利用頻度が多い命令)の置き換えを低減する。
【0129】
[効果の説明]
次に第1の実施形態にかかる情報処理装置10の効果について説明する。
【0130】
第1の実施形態かかる情報処理装置10は、命令キャッシュ100における所定の命令(例えば、優先命令)の置き換えを低減するとの効果を得ることができる。
【0131】
その理由は、次のとおりである。
【0132】
情報処理装置10は、プロセッサ130と、命令キャッシュ100と、実行モジュール120とを含む。プロセッサ130は、命令を実行する。実行モジュール120は、命令記憶部124(第1の命令記憶部)と、アドレス記憶部101とを含む。命令記憶部124は、プロセッサ130が実行する命令を保存する。アドレス記憶部101は、命令記憶部124において、優先的にキャッシュする命令を保存するアドレスの範囲を保存する。命令キャッシュ100は、命令記憶部111(第2の命令記憶部)と、エントリ記憶部112と、キャッシュ制御部102とを含む。命令記憶部111は、プロセッサ130が実行する命令のキャッシュとして、実行モジュール120が保存する命令の複製を保存する。エントリ記憶部112は、命令記憶部111が保存した命令に関連するアドレスとして、実行モジュール120における命令のアドレスを含むエントリ310を保存する。キャッシュ制御部102は、エントリ310が保存するアドレスと、実行モジュール120が保存するアドレスの範囲とを用いて、複製として保存する命令の中で、新たな命令と置き換える命令を決定する。
【0133】
上記のように、実行モジュール120は、優先的にキャッシュに保存する命令を、アドレス記憶部101が記憶するアドレスの範囲に保存している。
【0134】
そのため、命令キャッシュ100は、命令の実行モジュール120におけるアドレスを用いて、キャッシュしている命令が優先的にキャッシュする命令であるか否かを判定できる。そして、命令キャッシュ100は、判定結果を用いて、優先的にキャッシュする命令を残すように、命令の置き換えを実行する。
【0135】
そのため、このように構成された情報処理装置10は、命令キャッシュ100及び実行モジュール120の構成を用いて、命令キャッシュ100における所定の命令の置き換えを低減するとの効果を奏することができる。
【0136】
さらに、情報処理装置10は、ローダ103を含む。
【0137】
ローダ103は、命令指定部104と、命令配置決定部105と、命令埋め込み部106とを含む。命令指定部104は、実行モジュール120を生成するときに、実行モジュール120に含まれる命令の中で、優先的に命令キャッシュ100に保存する命令(優先命令)を指定する。命令配置決定部105は、実行モジュール120において、指定された命令を配置する実行モジュール120におけるアドレスを決定する。命令埋め込み部106は、決定したアドレスに指定された命令を埋め込む。
【0138】
このように構成されたローダ103は、命令キャッシュ100が上記動作を実現できるように実行モジュール120を生成することができる。
【0139】
このように、第1の実施形態にかかる情報処理装置10は、所定の命令(例えば、頻繁に実行される命令)の命令キャッシュ100における置き換えを低減する。つまり、第1の実施形態にかかる情報処理装置10は、特許文献1における問題点を解決できる。
【0140】
また、第1の実施形態にかかる情報処理装置10は、コア間での移動なども必要としない。したがって、第1の実施形態にかかる情報処理装置10は、特許文献2に記載された技術における問題点を解決し、プロセッサ130の実行効率の低下を低減するとの効果も奏することができる。
【0141】
<第2の実施形態>
なお、命令キャッシュ100、ローダ103及び、実行モジュール120は、同じ装置に含まれなくてもよい。例えば、ローダ103は、情報処理装置10とは異なる装置に設けられてもよい。
【0142】
あるいは、実行モジュール120の生成後、ローダ103は、削除されてもよい。
【0143】
次に、図面を参照して、第2の実施形態について説明する。
【0144】
[構成の説明]
図8は、第2の実施形態にかかる情報処理装置11の構成の一例を示すブロック図である。
【0145】
情報処理装置11は、プロセッサ130と、命令キャッシュ100と、実行モジュール120とを含む。
【0146】
プロセッサ130は、命令を実行する。
【0147】
実行モジュール120は、図示しないローダ103と同様の構成を用いて生成される。
【0148】
実行モジュール120は、アドレス記憶部101と、命令記憶部124(第1の命令記憶部)とを含む。
【0149】
命令記憶部124は、命令を保存する。
【0150】
アドレス記憶部101は、命令記憶部124が保存する命令の中で、優先命令が保存されているアドレスの範囲を保存する。
【0151】
命令キャッシュ100は、命令記憶部111と、エントリ記憶部112と、キャッシュ制御部102とを含む。
【0152】
命令記憶部111は、命令のキャッシュとして、命令の複製を保存する。
【0153】
エントリ記憶部112は、命令記憶部111に保存された命令のアドレスを含むエントリ310を保存する。
【0154】
キャッシュ制御部102は、アドレス記憶部101を用いて、命令記憶部124に保存されている命令が優先命令か否かを判定できる。
【0155】
さらに、命令キャッシュ100が命令を置き換える場合においても、キャッシュ制御部102は、アドレス記憶部101及びエントリ記憶部112を用いて、置き換える命令として、非優先命令を選択できる。
【0156】
[効果の説明]
このように構成された第2の実施形態にかかる情報処理装置11は、第1の実施形態にかかる情報処理装置11と同様の効果を実現できる。
【0157】
その理由は、次のとおりである。
【0158】
情報処理装置11は、プロセッサ130と、命令キャッシュ100と、実行モジュール120とを含む。プロセッサ130は、命令を実行する。実行モジュール120は、命令記憶部124(第1の命令記憶部)と、アドレス記憶部101とを含む。命令記憶部124は、プロセッサ130が実行する命令を保存する。アドレス記憶部101は、命令記憶部124において、優先的にキャッシュする命令を保存するアドレスの範囲を保存する。命令キャッシュ100は、命令記憶部111(第2の命令記憶部)と、エントリ記憶部112と、キャッシュ制御部102とを含む。命令記憶部111は、プロセッサ130が実行する命令のキャッシュとして、実行モジュール120が保存する命令の複製を保存する。エントリ記憶部112は、命令記憶部111が保存した命令に関連するアドレスとして、実行モジュール120における命令のアドレスを含むエントリ310を保存する。キャッシュ制御部102は、エントリ310が保存するアドレスと、実行モジュール120が保存するアドレスの範囲とを用いて、複製として保存する命令の中で、新たな命令と置き換える命令を決定する。
【0159】
このように、情報処理装置11に含まれる命令キャッシュ100及び実行モジュール120に含まれ構成は、第1の実施形態における対応する構成と同様の機能を実現する。そのため、第2の実施形態にかかる情報処理装置11は、第1の実施形態にかかる情報処理装置10と同様の効果を実現できる。
【0160】
なお、情報処理装置11は、第1の実施形態における最小構成でもある。
【0161】
[ハードウェア構成]
次に、情報処理装置10及び11のハードウェア構成について、情報処理装置10を用いて説明する。
【0162】
情報処理装置10の各構成部は、ハードウェア回路で構成されてもよい。
【0163】
あるいは、情報処理装置10において、各構成部は、ネットワークを介して接続した複数の装置を用いて、構成されてもよい。
【0164】
あるいは、情報処理装置10において、複数の構成部は、1つのハードウェアで構成されてもよい。
【0165】
あるいは、情報処理装置10は、CPU(Central Processing Unit)と、ROM(Read Only Memory)と、RAM(Random Access Memory)とを含むコンピュータ装置として実現されてもよい。情報処理装置10は、上記構成に加え、さらに、入出力接続回路(IOC:Input and Output Circuit)を含むコンピュータ装置として実現されてもよい。情報処理装置10は、上記構成に加え、さらに、ネットワークインターフェース回路(NIC:Network Interface Circuit)を含むコンピュータ装置として実現されてもよい。
【0166】
図9は、情報処理装置10のハードウェア構成の一例を示すブロック図である。なお、図9は、情報処理装置10のハードウェアの一例として、情報処理装置600を示す。
【0167】
情報処理装置600は、CPU610と、ROM620と、RAM630と、内部記憶装置640と、IOC650と、NIC680とを含み、コンピュータ装置を構成している。
【0168】
CPU610は、ROM620及び/又は内部記憶装置640からプログラムを読み込む。そして、CPU610は、読み込んだプログラムに基づいて、RAM630と、内部記憶装置640と、IOC650と、NIC680とを制御する。そして、CPU610を含むコンピュータは、これらの構成を制御し、図1に示されている、プロセッサ130、命令キャッシュ100、ローダ103、及び実行モジュール120としての各機能を実現する。
【0169】
CPU610は、プロセッサ130の一例である。
【0170】
CPU610は、各機能を実現する際に、RAM630又は内部記憶装置640を、プログラムの一時記憶媒体として使用してもよい。
【0171】
また、CPU610は、コンピュータで読み取り可能にプログラムを記憶した記憶媒体690が含むプログラムを、図示しない記憶媒体読み取り装置を用いて読み込んでもよい。あるいは、CPU610は、NIC680を介して、図示しない外部の装置からプログラムを受け取り、RAM630又は内部記憶装置640に保存して、保存したプログラムを基に動作してもよい。
【0172】
なお、図示していないが、CPU610は、内蔵メモリを含んでもよい。この場合、内蔵メモリが、命令キャッシュ100として動作してもよい。
【0173】
ROM620は、CPU610が実行するプログラム及び固定的なデータを記憶する。ROM620は、例えば、P-ROM(Programmable-ROM)又はフラッシュROMである。
【0174】
RAM630は、CPU610が実行するプログラム及びデータを一時的に記憶する。RAM630は、例えば、D-RAM(Dynamic-RAM)である。
【0175】
なお、RAM630が、実行モジュール120を保存してもよい。
【0176】
さらに、RAM630は、アクセス性能が異なる複数のメモリを含んでもよい。この場合、アクセス性能が高いメモリが、命令キャッシュ100として動作してもよい。
【0177】
内部記憶装置640は、情報処理装置600が長期的に保存するデータ及びプログラムを記憶する。また、内部記憶装置640は、CPU610の一時記憶装置として動作してもよい。内部記憶装置640は、例えば、ハードディスク装置、光磁気ディスク装置、SSD(Solid State Drive)又はディスクアレイ装置である。
【0178】
なお、内部記憶装置640は、実行モジュール120を保存してもよい。
【0179】
ROM620と内部記憶装置640とは、不揮発性(non-transitory)の記憶媒体である。一方、RAM630は、揮発性(transitory)の記憶媒体である。そして、CPU610は、ROM620、内部記憶装置640、又は、RAM630に記憶されているプログラムを基に動作可能である。つまり、CPU610は、不揮発性記憶媒体又は揮発性記憶媒体を用いて動作可能である。
【0180】
IOC650は、CPU610と、外部の装置とのデータを仲介する。図9は、外部の装置の一例として、入力機器660及び表示機器670を示す。IOC650は、例えば、IOインターフェースカード又はUSB(Universal Serial Bus)カードである。さらに、IOC650は、USBのような有線に限らず、無線を用いてもよい。
【0181】
入力機器660は、情報処理装置600の操作者からの入力指示を受け取る機器である。入力機器660は、例えば、キーボード、マウス又はタッチパネルである。
【0182】
表示機器670は、情報処理装置600の操作者に情報を表示する機器である。表示機器670は、例えば、液晶ディスプレイ、有機エレクトロルミネッセンス・ディスプレイ、又は、電子ペーパーである。
【0183】
NIC680は、ネットワークを介した図示しない外部の装置とのデータのやり取りを中継する。NIC680は、例えば、LAN(Local Area Network)カードである。さらに、NIC680は、有線に限らず、無線を用いてもよい。
【0184】
このように構成された情報処理装置600は、情報処理装置10と同様の効果を得ることができる。
【0185】
その理由は、情報処理装置600のCPU610が、プログラムに基づいて情報処理装置10と同様の機能を実現できるためである。
【0186】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成及び詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【0187】
10 情報処理装置
11 情報処理装置
100 命令キャッシュ
101 アドレス記憶部
102 キャッシュ制御部
103 ローダ
104 命令指定部
105 命令配置決定部
106 命令埋め込み部
111 命令記憶部
112 エントリ記憶部
120 実行モジュール
121 非優先命令記憶部
122 優先命令記憶部
124 命令記憶部
130 プロセッサ
200 キャッシュ制御部
201 アドレスアレイ
202 データアレイ
300 アドレス
301 Validビット
302 Priorityビット
310 エントリ
400 アドレス
401 Validビット
402 Priorityビット
403 アドレス
404 Validビット
405 Priorityビット
406 アドレス
407 Validビット
408 Priorityビット
409 アドレス
410 Validビット
411 Priorityビット
412 非優先エントリ
413 優先エントリ
414 エントリ
500 下限アドレス
501 上限アドレス
503 比較器
600 情報処理装置
610 CPU
620 ROM
630 RAM
640 内部記憶装置
650 IOC
660 入力機器
670 表示機器
680 NIC
690 記憶媒体
700 下限アドレス
701 上限アドレス
702 非優先命令領域
703 優先命令領域
図1
図2
図3
図4
図5
図6
図7
図8
図9