(57)【要約】【課題】指定アドレス範囲のキャッシュ・メンテナンス処理の高速化及び低消費電力化を実現することにある。【解決手段】本実施形態の情報処理装置は、キャッシュメモリと、キャッシュ制御装置とを備えた構成である。前記キャッシュ制御装置は、第１の制御回路と、第２の制御回路とを含む。前記第１の制御回路は、指定したアドレス範囲に含まれる前記キャッシュメモリのアクセス対象アドレスであって、当該アクセス対象アドレスのキャッシュラインに対するキャッシュ・メンテナンス処理の実行を予約する。前記第２の制御回路は、前記第１の制御回路により予約されたキャッシュラインに対するキャッシュ・メンテナンス処理を実行する。【選択図】図２
2019164491.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリと、
キャッシュ制御装置と、
を具備し、
前記キャッシュ制御装置は、
指定したアドレス範囲に含まれる前記キャッシュメモリのアクセス対象アドレスであって、当該アクセス対象アドレスのキャッシュラインに対するキャッシュ・メンテナンス処理の実行を予約する第１の制御回路と、
前記第１の制御回路により予約されたキャッシュラインに対するキャッシュ・メンテナンス処理を実行する第２の制御回路と、
を含む、情報処理装置。
【請求項２】
前記第１の制御回路は、
前記キャッシュメモリのアクセス対象アドレスが入力された場合に、当該アクセス対象アドレスが、指定したアドレス範囲に含まれるか否かを判定する判定回路を含む、
請求項１に記載の情報処理装置。
【請求項３】
前記第１の制御回路は、
前記キャッシュ・メンテナンス処理を予約したアクセス対象アドレス毎に予約情報を設定する記憶回路を含む、請求項１又は２に記載の情報処理装置。
【請求項４】
前記第１の制御回路は、
キャッシュ・メンテナンス処理対象の指定アドレス範囲を設定するレジスタ回路と、
前記キャッシュメモリのアクセス対象アドレスが入力された場合に、当該アクセス対象アドレスが、前記レジスタ回路に設定された指定アドレス範囲に含まれるか否かを判定する判定回路と、
含む、請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
前記第２の制御回路は、
前記キャッシュ・メンテナンス処理の実行指示に応じて、予約されたキャッシュラインに対するキャッシュ・メンテナンス処理を実行する、請求項１から４のいずれか１項に記載の情報処理装置。
【請求項６】
前記第２の制御回路は、
前記キャッシュ・メンテナンス処理の実行指示に応じて、前記記憶回路に設定された予約情報に対応するキャッシュラインに対するキャッシュ・メンテナンス処理を実行する、請求項３に記載の情報処理装置。
【請求項７】
前記キャッシュ制御装置は、前記キャッシュメモリのキャッシュライン毎に、当該キャッシュラインの有効性を示す有効情報を設定する第３の制御回路を含み、
前記第２の制御回路は、
前記第１の制御回路により予約されたキャッシュラインに対応する前記有効情報をクリアする、請求項１から６のいずれか１項に記載の情報処理装置。
【請求項８】
前記キャッシュ・メンテナンス処理は、
前記キャッシュメモリのアクセス対象アドレスのキャッシュラインを無効化する処理と、
前記キャッシュメモリのアクセス対象アドレスのキャッシュラインをフラッシュする処理と、
を含む、請求項１から７のいずれか１項に記載の情報処理装置。
【請求項９】
前記キャッシュ制御装置は、
前記第１の制御回路により予約されたアクセス対象アドレスのキャッシュラインが前記キャッシュメモリから追い出される場合、前記第１の制御回路により設定される予約をクリアする、請求項１から８のいずれか１項に記載の情報処理装置。
【請求項１０】
キャッシュメモリを有する情報処理装置に適用するキャッシュ制御装置であって、
指定したアドレス範囲に含まれる、前記キャッシュメモリのアクセス対象アドレスのキャッシュラインに対するキャッシュ・メンテナンス処理の実行を予約する第１の制御回路と、
前記第１の制御回路により予約されたキャッシュラインに対するキャッシュ・メンテナンス処理を実行する第２の制御回路と、
を具備する、キャッシュ制御装置。
【請求項１１】
前記第１の制御回路は、
前記キャッシュメモリのアクセス対象アドレスが入力された場合に、当該アクセス対象アドレスが、指定したアドレス範囲にマッチングするか否かを判定するマッチング回路を含む、請求項１０に記載のキャッシュ制御装置。
【請求項１２】
前記第１の制御回路は、
前記キャッシュ・メンテナンス処理を予約したアクセス対象アドレス毎に予約情報を設定する第１のデータアレイを含む、請求項１０又は１１に記載のキャッシュ制御装置。
【請求項１３】
前記キャッシュメモリのキャッシュライン毎に、当該キャッシュラインの有効性を示す有効情報を設定する第２のデータアレイを含み、
前記第２の制御回路は、
前記第１の制御回路により予約されたキャッシュラインに対応する前記有効情報をクリアする、請求項１０から１２のいずれか１項に記載のキャッシュ制御装置。
【請求項１４】
前記キャッシュ・メンテナンス処理は、
前記キャッシュメモリのアクセス対象アドレスのキャッシュラインを無効化する処理と、
前記キャッシュメモリのアクセス対象アドレスのキャッシュラインをフラッシュする処理と、
を含む、請求項１０から１３のいずれか１項に記載のキャッシュ制御装置。
【請求項１５】
前記第１の制御回路により予約されたアクセス対象アドレスのキャッシュラインが前記キャッシュメモリから追い出される場合、前記第１の制御回路により設定される予約をクリアする手段を含む、請求項１０から１４のいずれか１項に記載のキャッシュ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置及びキャッシュ制御装置に関する。
【背景技術】
【０００２】
コンピュータでは、アクセスの高速化のために、アクセス対象のデータを一時的に保持する（キャッシュする）キャッシュメモリ（cache memory）が使用されている。
【０００３】
キャッシュメモリは、例えば、プロセッサ（ＣＰＵ）と他のマスタとのコヒーレンス（coherence）を維持するため、キャッシュされたデータ（キャッシュライン）を無効化（invalidate）する処理が必要となる。また、ライトバックキャッシュ（write back cache）方式では、キャッシュラインをメインメモリにフラッシュ（flush）する処理が必要となる。これらの処理を、総称してキャッシュ・メンテナンス（cache maintenance）処理と呼ぶ。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１７８８０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来のキャッシュ・メンテナンス処理は、タグメモリを読み出し、指定アドレス範囲にマッチするか否かを判定し、マッチした場合にはバリッドビットをクリアする。この処理を、指定アドレス範囲の分だけ繰り返す。従って、キャッシュ・メンテナンス処理をある指定アドレス範囲に対して行う場合、指定アドレス範囲が広い場合には、繰り返しの実行によりキャッシュ・メンテナンス処理に要する実行時間や消費電力が増大する。
【０００６】
そこで、目的は、指定アドレス範囲のキャッシュ・メンテナンス処理の高速化及び低消費電力化を実現することにある。
【課題を解決するための手段】
【０００７】
本実施形態の情報処理装置は、キャッシュメモリと、キャッシュ制御装置とを備えた構成である。前記キャッシュ制御装置は、第１の制御回路と、第２の制御回路とを含む。前記第１の制御回路は、指定したアドレス範囲に含まれる前記キャッシュメモリのアクセス対象アドレスであって、当該アクセス対象アドレスのキャッシュラインに対するキャッシュ・メンテナンス処理の実行を予約する。前記第２の制御回路は、前記第１の制御回路により予約されたキャッシュラインに対するキャッシュ・メンテナンス処理を実行する。
【図面の簡単な説明】
【０００８】
【図１】実施形態に関する情報処理装置の構成を説明するためのブロック図。
【図２】実施形態に関するキャッシュメモリの構成を説明するためのブロック図。
【図３】実施形態に関するキャッシュコントローラの構成を説明するためのブロック図。
【図４】実施形態に関するデータアレイとタグアドレスとの対応関係を説明するための図。
【図５】実施形態に関するＣＰＵ及びキャッシュコントローラの処理手順を説明するためのフローチャート。
【図６】実施形態に関するキャッシュ制御の処理内容の一例を説明する図。
【図７】実施形態に関するキャッシュ制御の処理内容の一例を説明する図。
【図８】実施形態に関するキャッシュ制御の処理内容の一例を説明する図。
【図９】実施形態に関するキャッシュ制御の処理内容の一例を説明する図。
【図１０】実施形態に関するキャッシュ制御の処理内容の一例を説明する図。
【発明を実施するための形態】
【０００９】
以下図面を参照して、実施形態を説明する。
[システム構成]
図１は、本実施形態の情報処理装置（以下、コンピュータと表記する）１の構成の一例を示すブロック図である。図１に示すように、コンピュータ１は、プロセッサ（ＣＰＵ）１０、キャッシュメモリ１１、メインメモリ１２、ＤＭＡ（Direct Memory Access）コントローラ１３、及びインターフェース１４を有する。
【００１０】
ＣＰＵ１０は、所定のソフトウェアに基づいて、キャッシュメモリ１１及びメインメモリ１２をアクセスし、例えば画像処理等の情報処理を実行する。キャッシュメモリ１１は、後述するように、例えばＳＲＡＭ（Static Random Access Memory）からなるデータ記憶領域及びタグ記憶領域を有する。また、本実施形態では、キャッシュメモリ１１は、本実施形態の主要素であるキャッシュコントローラ（キャッシュ制御装置）を含む構成とする。
【００１１】
ＤＭＡコントローラ１３は、ＣＰＵ１０が関与しないメモリアクセスを制御する。ＤＭＡコントローラ１３は、例えば、インターフェース１４を介して、メインメモリ１２と周辺装置との間で直接的なデータ転送を実行する。
【００１２】
図２は、キャッシュメモリ１１の構成の一例を示すブロック図である。図２に示すように、キャッシュメモリ１１は、キャッシュコントローラ２０、データ記憶領域２１及びタグ記憶領域２２を含む。キャッシュコントローラ２０は、後述するように、本実施形態のキャッシュ・メンテナンス処理を含むキャッシュ制御を実行する。データ記憶領域２１は、キャッシュライン（所定単位のキャッシュデータ）を格納する記憶領域である。タグ記憶領域２２は、当該キャッシュラインのアドレス(タグアドレス)やアドレス履歴を格納する記憶領域である。
【００１３】
図３は、キャッシュコントローラ２０の構成を示すブロック図である。図３に示すように、キャッシュコントローラ２０は、複数のデータアレイ（データ配列:data array）３１〜３３を有する。データアレイは、バリッドビット（valid bit）データアレイ（以下、ＶＢデータアレイ）３１、ダーティビット（dirty bit）データアレイ（以下、ＤＢデータアレイ）３２、及び予約ビットデータアレイ（以下、ＲＢデータアレイ）３３を含む。
【００１４】
図４は、各データアレイ３１〜３３のそれぞれと、タグ記憶領域２２のタグアドレス３０との対応関係を示す図である。タグアドレス３０は、キャッシュラインのアドレスであり、メインメモリ１２のアドレスに対応している。各データアレイ３１〜３３のそれぞれは、キャッシュライン毎に１ビットのデータ(フラグ情報)を保持する。
【００１５】
ここで、キャッシュ・メンテナンス処理に含まれるフラッシュ処理とは、無効化処理とライトバック処理を意味する。ＶＢデータアレイ３１は、無効化処理及びフラッシュ処理により、対応するキャッシュラインのバリッドビット「１」が「０」にクリアされる。ＤＢデータアレイ３２は、フラッシュ処理により、対応するキャッシュラインのダーティビット「１」が「０」にクリアされる。また、ＲＢデータアレイ３３は、キャッシュ・メンテナンス処理（無効化処理又はフラッシュ処理）の実行を予約するためのデータアレイである。
【００１６】
図３に戻って、キャッシュコントローラ２０は、アドレス範囲指定レジスタ３４、マッチング部３５、実行レジスタ３６、及びシーケンサ３７を含む。アドレス範囲指定レジスタ３４は、ＣＰＵ１０により設定される、キャッシュ・メンテナンス処理の指定アドレス範囲を保持する。マッチング部３５は、ＣＰＵ１０から入力される、キャッシュの入力アドレスが、アドレス範囲指定レジスタ３４に設定された指定アドレス範囲にマッチングするか否かを判定する。
【００１７】
実行レジスタ３６は、ＣＰＵ１０により設定される、無効化処理の実行を指示するフラグ情報を保持する。シーケンサ３７は、実行レジスタ３６に設定されたフラグ情報「１」に従って、ＲＢデータアレイ３３に予約ビットがセットされているキャッシュラインに対応するバリッドビット「０」にクリアする。また、ライトバックキャッシュの場合には、ダーティビットを「０」にクリアする。
[キャッシュ制御]
以下、図５から図１０を参照して、本実施形態のキャッシュコントローラ２０の動作を説明する。図５は、ＣＰＵ１０及びキャッシュコントローラ２０の処理手順を説明するためのフローチャートである。
【００１８】
まず、コンピュータ１では、例えば、ＣＰＵ１０は、メインメモリ１２に確保されたフレームバッファに格納されている画像データ(バッファデータ)を加工し、インターフェース１４を介して表示装置に当該画像データを転送する。ここで、例えばＤＭＡコントローラ１３が、次のバッファデータ（画像データ）をフレームバッファにロードする際に、キャッシュメモリ１１に格納されている、前の不要なバッファデータ（画像データ）を無効化する処理が必要となる。この場合、フレームバッファのアドレス範囲に対して無効化処理が実行される。
【００１９】
なお、ライトバックキャッシュにおいて、先行してキャッシュメモリ１１に書き込まれたバッファデータを、メインメモリ１２に確保されたフレームバッファにフラッシュ（書き出し）する処理の場合も同様である。即ち、フレームバッファのアドレス範囲に対してフラッシュ処理が実行される。
【００２０】
前述したように、無効化処理及びフラッシュ処理を総称して、キャッシュ・メンテナンス処理と呼ぶ。ここで、以下のキャッシュコントローラ２０の動作として、無効化処理について説明する。
【００２１】
図５に示すように、ＣＰＵ１０は、指定アドレス範囲に含まれるアドレスにアクセス処理を実行する前に、当該指定アドレス範囲に対する無効化処理の予約指定を実行する(Ｓ１)。具体的には、図３に示すように、ＣＰＵ１０は、キャッシュコントローラ２０のアドレス範囲指定レジスタ３４に無効化処理の予約対象である指定アドレス範囲を設定する。ここで、ＣＰＵ１０は、例えば、前述したように、キャッシュメモリ１１に格納された前のバッファデータが格納されたアドレス範囲を、指定アドレス範囲とする場合である。
【００２２】
図５に戻って、ＣＰＵ１０は、指定アドレス範囲のアドレスに対するアクセス処理を実行する(Ｓ２)。キャッシュコントローラ２０は、ＣＰＵ１０のアクセス対象である入力アドレスをマッチング部３５に入力し、マッチング部３５により当該入力アドレスがアドレス範囲指定レジスタ３４に設定された指定アドレス範囲にマッチングするか否かを判定する(Ｓ１０)。
【００２３】
キャッシュコントローラ２０は、マッチング部３５により入力アドレスが指定アドレス範囲にマッチした場合には(Ｓ１１のＹＥＳ)、ＲＢデータアレイ３３の対応するキャッシュラインの予約ビット（ＲＢ）をセットする(Ｓ１２)。これにより、ＲＢデータアレイ３３は、指定アドレス範囲にマッチする入力アドレスに対応する、全てのキャッシュラインの予約ビット（ＲＢ）がセットされる。
【００２４】
一方、ＣＰＵ１０は、当該アクセス処理が終了すると、実行レジスタ３６に無効化処理の実行を指示するフラグ情報「１」をセットする(Ｓ３)。これにより、キャッシュコントローラ２０は、無効化処理を実行することになる。
【００２５】
具体的には、シーケンサ３７は、実行レジスタ３６にフラグ情報「１」がセットされている場合(Ｓ１３のＹＥＳ)、ＲＢデータアレイ３３の全エントリを検索し、セットされている予約ビットを読み出す(Ｓ１４)。シーケンサ３７は、ＶＢデータアレイ３１に対して、予約ビットがセットされている全キャッシュラインのバリッドビット（ＶＢ）を「０」にクリアする(Ｓ１５)。
【００２６】
これにより、予約対象である指定アドレス範囲に含まれる全キャッシュラインは、無効化される。即ち、キャッシュメモリ１１のデータ記憶領域２１に格納された、例えば前述した前の不要なバッファデータ（画像データ）が無効化される。
【００２７】
ここで、ＶＢデータアレイ３１及びＲＢデータアレイ３３が、フリップフロップ（flip-flop）により構成されている場合には、シーケンサ３７は、一括して全キャッシュラインのバリッドビット（ＶＢ）を「０」にクリアできる。一方、ＶＢデータアレイ３１及びＲＢデータアレイ３３が、ＳＲＡＭにより構成されている場合には、シーケンサ３７は、ＲＢデータアレイ３３の全エントリを逐次的に処理することになる。
【００２８】
図６から図１０は、以上のようなキャッシュコントローラ２０の無効化処理において、ＶＢデータアレイ３１及びＲＢデータアレイ３３の各ビットの変化を示す図である。
【００２９】
まず、図６に示すように、ＣＰＵ１０からの入力アドレス（Ａ）が指定アドレス範囲にマッチした場合、ＲＢデータアレイ３３の対応する予約ビット（ＲＢ）６０は「１」がセットされる。一方、ＶＢデータアレイ３１では入力アドレス（Ａ）のキャッシュラインがエントリされているため、対応するバリッドビット（ＶＢ）６１は「１」がセットされている。
【００３０】
次に、図７に示すように、ＣＰＵ１０からの入力アドレス（Ｂ）が指定アドレス範囲にマッチした場合、ＲＢデータアレイ３３の対応する予約ビット（ＲＢ）７０は「１」がセットされる。一方、ＶＢデータアレイ３１では入力アドレス（Ｂ）のキャッシュラインがエントリされているため、対応するバリッドビット（ＶＢ）７１は「１」がセットされている。
【００３１】
次に、シーケンサ３７は、実行レジスタ３６にフラグ情報「１」がセットされている場合、ＲＢデータアレイ３３からセットされている予約ビット（ここでは、図７に示す７０）を読み出す。図８に示すように、シーケンサ３７は、ＶＢデータアレイ３１に対して、当該予約ビットに対応するキャッシュラインのバリッドビット（ＶＢ）８１を「０」にクリアする。シーケンサ３７は、キャッシュラインの無効化処理後に、ＲＢデータアレイ３３の該当する予約ビット（ＲＢ）８０を「０」にクリアする。
【００３２】
同様にして、シーケンサ３７は、ＲＢデータアレイ３３からセットされている予約ビット（ここでは、図８に示す６０）を読み出す。図９に示すように、シーケンサ３７は、ＶＢデータアレイ３１に対して、当該予約ビットに対応するキャッシュラインのバリッドビット（ＶＢ）９１を「０」にクリアする。シーケンサ３７は、キャッシュラインの無効化処理後に、ＲＢデータアレイ３３の該当する予約ビット（ＲＢ）９０を「０」にクリアする。
【００３３】
ここで、図６に示す状態において、指定アドレス範囲にマッチしないアドレス（Ｃ）が入力された場合を想定する。この入力アドレスは、アドレス（Ａ）に対応するキャッシュラインと同じエントリに格納されるアドレス（即ち、アドレス（Ａ）、（Ｃ）はインデックス部が同じで、タグ部が異なる）とする。アドレス（Ｃ）の入力により、入力アドレス（Ｃ）に対応するキャッシュラインがキャッシュメモリ１１に取り込まれる。この場合、アドレス（Ａ）に対応するキャッシュラインは、キャッシュメモリ１１から追い出されることになる。
【００３４】
これにより、図１０に示すように、ＶＢデータアレイ３１には、入力アドレス（Ｃ）に対応するキャッシュラインに対応するバリッドビット（ＶＢ）９３は「１」にセットされる。また、入力アドレス（Ｃ）は、指定アドレス範囲にマッチしないため、ＲＢデータアレイ３３の該当する予約ビット（ＲＢ）９２はセットされずに、「０」である。一方、アドレス（Ａ）に対応するキャッシュラインはキャッシュメモリ１１から追い出されるため、アドレス（Ａ）は無効化対象となる。このため、現時点では、対応する予約ビット（ＲＢ）６０は「１」にセットされているが、「０」にクリアされることになる。
【００３５】
なお、前述したように、本実施形態は、フラッシュ処理に対しても適用できる。フラッシュ処理は、前述したように、無効化処理とライトバック処理を意味する。従って、フラッシュ処理の場合には、ＶＢデータアレイ３１に加えて、ＤＢデータアレイ３２も使用される。即ち、フラッシュ処理が実行されると、対応するキャッシュラインのダーティビット（ＤＢ）の「１」が「０」にクリアされる。
【００３６】
以上のように本実施形態によれば、指定アドレス範囲の全キャッシュラインに対応する予約ビットを予約ビットデータアレイ（ＲＢデータアレイ）に設定することにより、全キャッシュラインに対するキャッシュ・メンテナンス処理を、タグアドレスを読み出すことなく、高速に実行することが可能となる。特に、指定アドレス範囲が広い場合には、有効である。
【００３７】
従来のキャッシュ・メンテナンス処理では、「アドレス範囲（byte）／キャッシュラインサイズ(byte)」回のデータ検索が必要であった。これに対して、本実施形態は、全キャッシュラインに対応する予約ビットの検索により、キャッシュ・メンテナンス処理に要する実行時間の短縮化を実現できる。特に、ＲＢデータアレイをフリップフロップにより構成することで、１サイクルで指定アドレス範囲の処理を実行することができるため、キャッシュ・メンテナンス処理の高速化が可能となる。また、タグアドレスを読出し処理が不要であるため、キャッシュ・メンテナンス処理に伴う消費電力の低減化を実現できる。
また、ＲＢデータアレイをＳＲＡＭにより構成する場合には、逐次実行となるため、ＳＲＡＭのエントリ数分のサイクル数がかかるが、「アドレス範囲（byte）／キャッシュラインサイズ(byte)」よりも少ない場合には、同様に、実行時間の短縮化及びキャッシュ・メンテナンス処理に伴う消費電力の低減化を実現できる。
【００３８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００３９】
１…コンピュータ、１０…プロセッサ（ＣＰＵ）、１１…キャッシュメモリ、
１２…メインメモリ、１３…ＤＭＡコントローラ、１４…インターフェース、
２０…キャッシュコントローラ、３１…バリッドビット（ＶＢ）データアレイ、
３２…ダーティビット（ＤＢ）データアレイ、
３３…予約ビット（ＲＢ）データアレイ。
【図１】
2019164491.tif 000003
【図２】
2019164491.tif 000004
【図３】
2019164491.tif 000005
【図４】
2019164491.tif 000006
【図５】
2019164491.tif 000007
【図６】
2019164491.tif 000008
【図７】
2019164491.tif 000009
【図８】
2019164491.tif 000010
【図９】
2019164491.tif 000011
【図１０】
2019164491.tif 000012