(57)【要約】【課題】汎用ＣＰＵ及びアクセラレータが設けられているデータ処理装置に用いられるキャッシュメモリであって、アクセラレータが使用するメモリ帯域を確実に確保することが可能なキャッシュメモリを提供する。【解決手段】複数の要求元からのメモリ読出し、書込み要求に対して、その優先度を判断し、その判断結果に基づいて、キャッシュメモリ書込みを制限する。【選択図】図４
2019179413.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリであって、
複数の要求元からのメモリ読出し、書込み要求に対して、その優先度を判断する判断部（３０５）と、
前記判断部の判断結果に基づいて、キャッシュメモリ書込みを制限する制限部（３０６）と、を備える、キャッシュメモリ。
【請求項２】
請求項１に記載のキャッシュメモリであって、
前記判断部は、アクセラレータからのメモリ読出し、書込み要求の優先度を汎用ＣＰＵからのメモリ読出し、書込み要求の優先度よりも高め、
前記制限部は、汎用ＣＰＵに対するキャッシュメモリ書込みを制限する、キャッシュメモリ。
【請求項３】
請求項１に記載のキャッシュメモリであって、
前記判断部は、アクセラレータからの複数のメモリ読出し、書込み要求に対して優先度を判断し、
前記制限部は、優先度の低いメモリ読出し、書込み要求に対するキャッシュメモリ書込みを制限する、キャッシュメモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、キャッシュメモリに関する。
【背景技術】
【０００２】
メインＣＰＵとアクセラレータを設けたデータ処理装置が知られている（例えば、下記特許文献１参照）。下記特許文献１では、ＣＰＵからのアクセス要求に応答してメモリ動作を行う第１プリフェッチバッファに、当該第１プリフェッチバッファが必要なデータを保有していないとき第１プリフェッチバッファからの要求に従ってメモリ動作を行い且つ第１プリフェッチバッファよりも記憶容量の大きな第２プリフェッチバッファを配置し、第１プリフェッチバッファには連想アクセスで第２プリフェッチバッファから読込むデータ量を可変可能に制御する第１プリフェッチ制御部を、第２プリフェッチバッファには第１プリフェッチバッファからの要求に従ってメインメモリから読込むデータ量及び読込んだデータを保持する範囲を可変可能に制御する第２プリフェッチ制御部を設けている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１５４５２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１では、中央処理装置がアクセスするデータの単位が小さい場合にも、中央処理装置によるデータアクセスの高速化若しくは先読み予測が外れることによるペナルティーの削減が可能であるとされている。しかしながら、アクセラレータが処理を実行するにあたって、メインＣＰＵが処理する低優先度の処理にメモリが使われてしまい、アクセラレータの能力が十分に発揮されない場合があった。
【０００５】
本開示は、汎用ＣＰＵ及びアクセラレータが設けられているデータ処理装置に用いられるキャッシュメモリであって、アクセラレータが使用するメモリ帯域を確実に確保することが可能なキャッシュメモリを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本開示は、キャッシュメモリであって、汎用ＣＰＵ及びアクセラレータといった複数の要求元からのメモリ読出し、書込み要求に対して、その優先度を判断する判断部（３０５）と、判断部の判断結果に基づいて、キャッシュメモリ書込みを制限する制限部（３０６）と、を備える。
【０００７】
複数のメモリ読出し、書込み要求に対して優先度に基づいたキャッシュメモリへの書込み制限をかけるので、アクセラレータからのキャッシュメモリへの書込みを優先させることで、アクセラレータが使用するキャッシュメモリ領域を確保することができ、それによってメモリ帯域を確実に確保することができる。
【０００８】
尚、「課題を解決するための手段」及び「特許請求の範囲」に記載した括弧内の符号は、後述する「発明を実施するための形態」との対応関係を示すものであって、「課題を解決するための手段」及び「特許請求の範囲」が、後述する「発明を実施するための形態」に限定されることを示すものではない。
【発明の効果】
【０００９】
本開示によれば、汎用ＣＰＵ及びアクセラレータが設けられているデータ処理装置に用いられるキャッシュメモリであって、アクセラレータが使用するメモリ帯域を確実に確保することが可能なキャッシュメモリを提供することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本実施形態の共用キャッシュを含むデータ処理装置の構成を示す図である。
【図２】図２は、従来の共用キャッシュを説明するための図である。
【図３】図３は、従来の共用キャッシュの別例を説明するための図である。
【図４】図４は、本実施形態の共用キャッシュを説明するための図である。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照しながら本実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。
【００１２】
図１に示されるように、本開示におけるキャッシュメモリの一実施形態である共用キャッシュメモリ３０は、システムバス５０とメインメモリ４０との間に設けられている。システムバス５０には、汎用ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０と、アクセラレータ２０とが繋がれている。
【００１３】
アクセラレータ２０は、汎用ＣＰＵ１０の処理の一部を実行し、全体として高速に情報処理するためのプロセッサである。
【００１４】
汎用ＣＰＵ１０又はアクセラレータ２０からは、共用キャッシュメモリ３０にデータの出力要求が送信される。共用キャッシュメモリ３０は、自己が格納しているデータが要求されていればそれを出力する。共用キャッシュメモリ３０は、メインメモリ４０が格納しているデータが要求されていれば、それを読み出してから汎用ＣＰＵ１０及びアクセラレータ２０に出力する。
【００１５】
図２を参照しながら、比較例としてのキャッシュメモリ３０Ａについて説明する。図２に示されるように、キャッシュメモリ３０Ａは、４ウェイのメモリとして構成されている。キャッシュメモリ３０Ａは、ＣＰＵからアドレス入力を受けて、ＣＰＵへデータ出力する。
【００１６】
キャッシュメモリ３０Ａは、アドレスデコーダ３０１Ａと、ワードセレクタ３０２Ａと、ウェイセレクタ３０３Ａと、比較器３０４Ａと、を備えている。
【００１７】
例えば、キャッシュメモリ３０Ａが１ＭＢのデータ容量であり、６４バイトのキャッシュラインの４ウェイキャッシュの場合、ワードアドレスは６ビット、 エントリアドレスは１２ビット、 フレームアドレスは３２ビットアドレス空間の場合、１４ビットが割り当てられる。
【００１８】
ＣＰＵからのアドレス入力のうち、エントリアドレスがアドレスデコーダに使われて、4つのウェイそれぞれからエントリアドレスに一致したデータとそれに紐づいたタグ(フレームアドレス)、フラグが出力される。フラグは、一般的には有効なデータを含んでいるか（Ｖａｌｉｄ）、保存されているデータが書き換えられているか(Ｄｉｒｔｙ)の情報を保持している。
【００１９】
出力された４つのデータのうち、入力されたフレームアドレスと同一のタグが存在(かつＶａｌｉｄ)すればキャッシュヒットとなり、そのタグに紐づいたデータがＣＰＵへ出力される。フレームアドレスと同一のタグが存在しない(もしくはＶａｌｉｄでない)場合はキャッシュミスとなり、より下位レベルのメモリであるメインメモリにアクセスすることになる。アクセスサイズはキャッシュラインサイズよりも小さい場合はワードアドレスを用いて、キャッシュライン中の必要なデータを取り出す。
【００２０】
続いて、図３を参照しながら、ＣＰＵに加えてアクセラレータが設けられた場合の、比較例としてのキャッシュメモリ３０Ｂについて説明する。図３に示されるように、キャッシュメモリ３０Ｂは、４ウェイのメモリとして構成されている。キャッシュメモリ３０Ｂは、ＣＰＵ又はアクセラレータからアドレス入力を受けて、ＣＰＵ又はアクセラレータへデータ出力する。
【００２１】
キャッシュメモリ３０Ｂは、アドレスデコーダ３０１Ｂと、ワードセレクタ３０２Ｂと、ウェイセレクタ３０３Ｂと、比較器３０４Ｂと、キャッシュアクセス制御部３０５Ｂと、を備えている。
【００２２】
この例ではアクセラレータもしくはＣＰＵからのアドレス入力に対して、キャッシュ前段のキャッシュアクセス制御部３０５Ｂによって、例えば、アドレスの上位ビットによってキャッシュを使用したアクセスとするか、キャッシュをバイパスする非キャッシュアクセスにするかを制御することができる。例えば、アドレス上位４ビットが０ｘ０の場合は、キャッシュを使用したアクセス、アドレス上位４ビットが０ｘｆの場合は、非キャッシュアクセスというような制御ができる。
【００２３】
続いて、図４を参照しながら、本実施形態の共用キャッシュメモリ３０について説明する。図４に示されるように、共用キャッシュメモリ３０は、４ウェイのメモリとして構成されている。共用キャッシュメモリ３０は、ＣＰＵ又はアクセラレータからアドレス入力を受けて、ＣＰＵ又はアクセラレータへデータ出力する。
【００２４】
共用キャッシュメモリ３０は、アドレスデコーダ３０１と、ワードセレクタ３０２と、ウェイセレクタ３０３と、比較器３０４と、プロセスＩＤ入力部３０５と、マスク制御部３０６と、を備えている。
【００２５】
プロセスＩＤ入力部３０５は、一般的なキャッシュの例でのアドレス入力に加えて、汎用ＣＰＵ１０およびアクセラレータ２０が処理するプロセス(Ｋｅｒｎｅｌ)それぞれに紐づいたプロセスＩＤを入力する。
【００２６】
マスク制御部３０６は、プロセスＩＤ毎に、ラインを入れ替えることで、プロセス毎のキャッシュ使用量を制限する部分である。
【００２７】
例えば、プロセスＩＤが「０」の場合は、汎用ＣＰＵ１０が割り当てられており、ウェイ＃０のみを使用できるものとする。プロセスＩＤが「１」の場合は、アクセラレータ２０が割り当てられており、ウェイ＃１，２，３を使用できるものとする。マスク制御部３０６は、この定められた範囲でウェイの切り換えを実行する。プロセスＩＤが「２」の場合は、割り当て無しとする。このような割り当てとすることで、プロセスＩＤ「０」には１／４ＭＢ、プロセスＩＤ「１」には３／４ＭＢ、プロセスＩＤ「２」には０ＭＢのキャッシュサイズを割り当てることができる。
【００２８】
この制御により、各プロセス毎のキャッシュ使用量を制限することができるため、複数プロセスが同時に動作した場合には優先実行必要なプロセスに多くのキャッシュ容量を割り当てることが可能となり、他の低優先プロセスに阻害される割合を低減することができる。
【００２９】
本実施形態の共用キャッシュメモリ３０は、本開示のキャッシュメモリに相当する。本実施形態のプロセスＩＤ入力部３０５は、本開示の判断部に相当する。本実施形態のマスク制御部３０６は、本開示の制限部に相当する。
【００３０】
本実施形態の共用キャッシュメモリ３０は、複数の要求元からのメモリ読出し、書込み要求に対して、その優先度を判断する判断部としてのプロセスＩＤ入力部３０５と、判断部としてのプロセスＩＤ入力部３０５の判断結果に基づいて、キャッシュメモリ書込みを制限する制限部としてのマスク制御部３０６と、を備える。
【００３１】
複数の要求元からのメモリ読出し、書込み要求に対して優先度に基づいたキャッシュメモリ書込み制限をかけるので、アクセラレータからのキャッシュメモリ書込みを優先させることで、アクセラレータが使用するメモリ帯域を確実に確保することができる。
【００３２】
本実施形態においては、判断部としてのプロセスＩＤ入力部３０５は、アクセラレータ２０からのメモリ読出し、書込み要求の優先度を汎用ＣＰＵ１０からのメモリ読出し、書込み要求の優先度よりも高め、制限部としてのマスク制御部３０６は、汎用ＣＰＵ１０に対するキャッシュメモリ書込みを制限する。
【００３３】
本実施形態においては、判断部としてのプロセスＩＤ入力部３０５は、アクセラレータ２０からの複数のメモリ読出し、書込み要求に対して優先度を判断し、制限部としてのマスク制御部３０６は、優先度の低いメモリ読出し、書込み要求に対するキャッシュメモリ書込みを制限する。
【００３４】
以上、具体例を参照しつつ本実施形態について説明した。しかし、本開示はこれらの具体例に限定されるものではない。例えば、異なるプロセスＩＤは同一のアクセラレータ又は汎用ＣＰＵ上で動作する異なるプロセス（Ｋｅｒｎｅｌ）に割り振られても良い。これら具体例に、当業者が適宜設計変更を加えたものも、本開示の特徴を備えている限り、本開示の範囲に包含される。前述した各具体例が備える各要素およびその配置、条件、形状などは、例示したものに限定されるわけではなく適宜変更することができる。前述した各具体例が備える各要素は、技術的な矛盾が生じない限り、適宜組み合わせを変えることができる。
【符号の説明】
【００３５】
３０５：プロセスＩＤ入力部（判断部）
３０６：マスク制御部（制限部）
【図１】
2019179413.tif 000003
【図２】
2019179413.tif 000004
【図３】
2019179413.tif 000005
【図４】
2019179413.tif 000006