JPWO2014030387A1 - キャッシュメモリコントローラ及びキャッシュメモリコントロール方法 - Google Patents

キャッシュメモリコントローラ及びキャッシュメモリコントロール方法 Download PDF

Info

Publication number
JPWO2014030387A1
JPWO2014030387A1 JP2014531518A JP2014531518A JPWO2014030387A1 JP WO2014030387 A1 JPWO2014030387 A1 JP WO2014030387A1 JP 2014531518 A JP2014531518 A JP 2014531518A JP 2014531518 A JP2014531518 A JP 2014531518A JP WO2014030387 A1 JPWO2014030387 A1 JP WO2014030387A1
Authority
JP
Japan
Prior art keywords
transfer
cache memory
instruction
access
reservation information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014531518A
Other languages
English (en)
Other versions
JP5808495B2 (ja
Inventor
沙織 田中
沙織 田中
淳子 貴島
淳子 貴島
内藤 正博
正博 内藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2014531518A priority Critical patent/JP5808495B2/ja
Application granted granted Critical
Publication of JP5808495B2 publication Critical patent/JP5808495B2/ja
Publication of JPWO2014030387A1 publication Critical patent/JPWO2014030387A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

第1のプログラムを格納する命令領域及び第1のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリ(10)と、第1のプログラムに含まれている命令を実行するアクセスマスタ(1)と、に接続されたキャッシュメモリコントローラ(100)であって、メインメモリ(10)の一部のデータを格納するキャッシュメモリ(110)と、特定の命令の先頭アドレスを含む転送予約情報に従って、アクセスマスタ(1)が特定の命令を実行する前に、アクセスマスタ(1)で実行中の命令のアドレスから特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出し、このアクセス間隔で、特定の命令で利用されるデータをメインメモリ(10)からキャッシュメモリ(110)に転送するデータ処理部(140)とを備える。

Description

本発明は、キャッシュメモリコントローラ及びキャッシュメモリコントロール方法に関する。
近年、機器で扱うコンピュータプログラム及び映像等のデータ量が増大しており、機器に搭載されるハードディスク及びメインメモリも大容量化している。メインメモリは、命令領域とデータ領域に分けられる。命令領域には、プログラム等の命令が格納され、データ領域には、それらの命令が処理に使用する映像等のデータが格納される。メインメモリの動作周波数は、CPU等のアクセスマスタの動作周波数に比べて低速なため、一般的に、高速にアクセス可能なキャッシュメモリが用いられる。アクセスマスタは、キャッシュメモリにアクセスすることで、より高速なデータのリード及びライトが可能となる。
しかしながら、キャッシュメモリは、単位面積当たりの容量が小さく、高価なため、多くの場合、メインメモリ全体をキャッシュメモリに置き換えることは困難である。このため、メインメモリのデータの一部をキャッシュメモリに転送する方法が取られる。メインメモリからキャッシュメモリへの転送は、キャッシュメモリの管理単位であるキャッシュライン単位で行われる。アクセスマスタが高速にデータのリード及びライトを行うことができるようになるのは、キャッシュメモリに必要なデータが格納されており、かつ、確実にアクセスできる場合である。この場合をキャッシュヒットという。
これに対して、アクセスマスタがアクセスした際に、アクセス要求されたアドレスのデータがキャッシュメモリに格納されていない場合をキャッシュミスという。この場合、アクセス要求されたデータをメインメモリからキャッシュメモリへ転送する必要がある。これによって、プログラムの待ち時間の発生による低速化、及び、消費電力の増大が発生する。そのため、アクセスマスタが必要とするデータを予めメインメモリから先読みして、キャッシュメモリに転送しておくことで、確実にデータにアクセスできる確率(キャッシュヒット率)を向上させることが望まれる。
特許文献1には、データの先読み手法として、アクセスマスタからの命令をバッファに格納し、過去の割込み命令履歴を基にデータを先読みしてキャッシュメモリに格納する情報処理装置が記載されている。これにより、アクセスマスタが過去に実行した割込み命令を再度実行する場合には、キャッシュヒットとなり、割込みルーチンへの分岐を高速化すること、及び、割込みルーチン又はサブルーチンからの復帰を高速化することができる。
特許第4739380号公報
しかしながら、特許文献1に記載された情報処理装置では、先読みできるデータは過去に実行した履歴のある割り込み命令のみである。そのため、アクセスマスタが未だ実行していない割り込み命令、及び、過去に実行した際とは異なる分岐先となったデータを先読みすることはできない。このため、キャッシュミスが発生する問題がある。
そこで、本発明は、アクセスマスタがアクセスしたことのない命令及びデータに対しても確実にキャッシュヒットできるようにすることを目的とする。
本発明の一態様に係るキャッシュメモリコントローラは、第1のプログラムを格納する命令領域及び当該第1のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリと、前記第1のプログラムに含まれている命令を実行するアクセスマスタと、に接続されたキャッシュメモリコントローラであって、前記メインメモリの一部のデータを格納するキャッシュメモリと、前記特定の命令の先頭アドレスを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出し、前記アクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送するデータ処理部と、を備えることを特徴とする。
本発明の一態様に係るキャッシュメモリコントロール方法は、第1のプログラムを格納する命令領域及び当該第1のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリから、前記第1のプログラムに含まれている命令を実行するアクセスマスタに、キャッシュメモリを用いて前記特定の命令で利用されるデータを提供するキャッシュメモリコントロール方法であって、前記特定の命令の先頭アドレスを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出し、前記アクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送する転送過程と、前記アクセスマスタが前記特定の命令を実行する際に、前記キャッシュメモリから前記特定の命令で利用されるデータを前記アクセスマスタに提供する提供過程と、を有することを特徴とする。
本発明の一態様によれば、アクセスマスタがアクセスしたことのない命令及びデータに対しても確実にキャッシュヒットできるようになる。
実施の形態1に係るキャッシュメモリコントローラの構成を概略的に示すブロック図である。 実施の形態1に係るキャッシュメモリコントローラを動作させるための転送予約関数を示す概略図である。 実施の形態1における、第2のプログラムに転送予約関数を適用した例を示す概略図である。 実施の形態1における、第2のプログラムを第1のプログラムにコンパイルする処理を示すフローチャートである。 実施の形態1における、コンパイルへの入力と出力との関係を示す概略図である。 実施の形態1における、第2のプログラムをコンパイラがコンパイルすることで生成された第1のプログラムの一例を示す概略図である。 実施の形態1における、第1のプログラムのメインメモリへの配置例を示す概略図である。 実施の形態1における、データ処理部の処理切換部が行う処理を示すフローチャートである。 実施の形態1における処理切換部での処理のタイミングチャートの一例を示す概略図である。 実施の形態1における、データ処理部の要求処理部が行う処理を示すフローチャートである。 実施の形態1における、データ処理部の予約処理部が行う処理を示すフローチャートである。 (a)〜(c)は、実施の形態1における、予約処理部によるデータ転送の推移を示す概略図である。 実施の形態1における、予約処理部が行う処理のタイミングチャートの一例を示す概略図である。 実施の形態1における、データ処理部の開放処理部が行う処理を示すフローチャートである。 実施の形態1における、第2のプログラムの変形例を示す概略図である。 実施の形態2に係るキャッシュメモリコントローラの構成を概略的に示すブロック図である。 実施の形態2における、予約処理部が記憶するテーブルである。 実施の形態2における、アクセス管理情報の一例を示す概略図である。 実施の形態2における、データ処理部の優先度決定部が行う処理を示すフローチャートである。 実施の形態2における、データ処理部の優先度決定部が優先度を決定する、第1のプログラムに含まれる2つの転送予約情報の第1の例を示す図である。 実施の形態2における、データ処理部の優先度決定部が優先度を決定する、第1のプログラムに含まれる2つの転送予約情報の第2の例を示す図である。 実施の形態2における、データ処理部の優先度決定部が優先度を決定する、第1のプログラムに含まれる2つの転送予約情報の第3の例を示す図である。 実施の形態2における、データ処理部の優先度決定部が優先度を決定する、第1のプログラムに含まれる2つの転送予約情報の第4の例を示す図である。 実施の形態2における、データ処理部の優先度決定部が優先度を決定する、第1のプログラムに含まれる2つの転送予約情報の第5の例を示す図である。 実施の形態2における、データ処理部の優先度決定部での処理のタイミングチャートの一例を示す概略図である。 実施の形態2における、データ処理部の予約処理部が行う処理を示すフローチャートである。 実施の形態2における、データ処理部の優先度決定部での処理のタイミングチャートの一例を示す概略図である。 実施の形態2に係るキャッシュメモリコントローラの変形例を概略的に示すブロック図である。 実施の形態2における、転送予約管理情報の変形例を示す概略図である。 実施の形態2における、進行アドレス管理情報の一例を示す概略図である。
実施の形態1.
図1は、実施の形態1に係るキャッシュメモリコントローラ100の構成を概略的に示すブロック図である。キャッシュメモリコントローラ100は、キャッシュメモリ110と、メモリ管理部120と、ヒット検出部130と、データ処理部140とを備える。
図1では、アクセスマスタ1と、キャッシュメモリコントローラ100と、メインメモリ10との接続関係が簡単に示されている。キャッシュメモリコントローラ100は、アクセスマスタ1からの命令コマンドC1に基づき、後述するキャッシュメモリ110又はメインメモリ10に格納されたデータへのアクセスを行う。ここで、命令コマンドC1は、アクセスマスタ1からの、メインメモリ10上のアドレスへのアクセス要求である。例えば、命令コマンドC1がリード要求であれば、アクセスマスタ1から命令コマンドC1と、メインメモリ10上のアドレスを示す命令アドレスA1がキャッシュメモリコントローラ100に入力される。そして、キャッシュメモリコントローラ100は、命令コマンドC1及び命令アドレスA1に対応するリードデータD1をアクセスマスタ1に出力する。
なお、図1は、アクセスマスタ1が1つで構成されるキャッシュメモリコントローラ100を表しているが、複数のアクセスマスタ1がキャッシュメモリコントローラ100を共有しても良い。また、アクセスマスタ1は、例えばCPU等の制御部で構成され、メインメモリ10に格納されたコンピュータプログラム(第1のプログラム)のプロセスに従って命令を実行する。
メインメモリ10は、命令領域とデータ領域とを備える。命令領域にはアクセスマスタ1が実行する命令が格納され、データ領域にはアクセスマスタ1が処理に利用するデータが格納される。例えば、本実施の形態においては、命令領域には、第1のプログラムが格納され、データ領域には、第1のプログラムに含まれている命令で利用されるデータが格納される。
キャッシュメモリ110は、メインメモリ10に格納されているデータの一部を格納する。キャッシュメモリ110は、例えばSRAM(Static Random Access Memory)のような半導体メモリで構成され、メインメモリ10よりも高速にデータのアクセスができる。例えば、キャッシュメモリ110は、64バイト毎に分割され、この分割された単位をキャッシュラインと呼ぶ。そして、キャッシュラインには、メインメモリ10の、連続した64バイトのデータが格納される。
メモリ管理部120は、キャッシュメモリ110の管理を行う。例えば、メモリ管理部120は、管理情報記憶部としてのタグメモリ121を備え、このタグメモリ121を用いて、キャッシュメモリ110の管理を行う。
タグメモリ121は、キャッシュメモリ110の各キャッシュラインに格納されたデータの、メインメモリ10におけるアドレス情報Taと、各キャッシュラインにデータが存在するかどうかを示すステータス識別情報であるステータスフラグFsと、各キャッシュラインにアクセスマスタ1がアクセスしたかどうかを示すアクセス識別情報であるアクセスフラグFaとを管理情報として記憶する。
ステータスフラグFsは、キャッシュメモリ110の各キャッシュラインにデータが存在する場合に「有効」、データが存在しない場合に「無効」を示す。
アクセスフラグFaは、キャッシュメモリ110の各キャッシュラインにアクセスマスタ1がアクセスした場合に「有効」、アクセスマスタ1がアクセスしていない場合に「無効」を示す。メモリ管理部120は、例えば、所定の滞留時間にアクセスされたかを調べるLRU(Least Recently Used)方式に基づき、所定のタイミングで、例えば、タイマー(図示せず)で予め定められた時間の経過が計測されたタイミングで、アクセスフラグFaをリセットする。これにより、メモリ管理部120は、最近アクセスされていないキャッシュラインを求めることができる。
ヒット検出部130は、アクセス要求される、メインメモリ10上のアドレスのデータがキャッシュメモリ110に格納されているかどうかを判断する。そして、ヒット検出部130は、そのようなデータがキャッシュメモリ110に格納されている場合にはキャッシュヒットを、そのようなデータがキャッシュメモリ110に格納されていない場合にはキャッシュミスを示すヒット検出結果をデータ処理部140に与える。ヒット検出部130は、タグメモリ121内のステータスフラグFsが「有効」を示すキャッシュラインのアドレス情報Taを参照することで、そのようなデータがキャッシュメモリ110に格納されているかどうかを判断する。アクセス要求されたアドレスと一致するアドレス情報Taがメモリ管理部120上に格納されている場合はキャッシュヒットとなり、そのようなアドレス情報Taが格納されていない場合はキャッシュミスとなる。
データ処理部140は、メインメモリ10に記憶されているデータをキャッシュメモリ110に転送する。例えば、本実施の形態においては、データ処理部140は、特定の命令で利用されるデータがメインメモリ10に記憶されているアドレスを含む転送予約情報に従って、アクセスマスタ1が第1のプログラムに含まれているこの特定の命令を実行する前に、この特定の命令で利用されるデータをメインメモリ10からキャッシュメモリ110に転送する。また、データ処理部140は、アクセスマスタ1からの要求に応じて、キャッシュメモリ110又はメインメモリ10からデータを読み出す。さらに、データ処理部140は、アクセスマスタ1からの要求に応じて、キャッシュメモリ110又はメインメモリ10にデータを書き込む。データ処理部140は、処理切換部141と、要求処理部142と、予約処理部143と、開放処理部144と、キャッシュメモリアクセス調停部145と、メインメモリアクセス調停部146とを備える。
処理切換部141は、アクセスマスタ1からの命令コマンドC1を解析し、データの出力先を要求処理部142及び予約処理部143の間で切り換える。例えば、命令コマンドC1がリード又はライトを示す場合は、処理切換部141は、命令コマンドC1を要求コマンドC2として、また、命令アドレスA1を要求アドレスA2として、それぞれを要求処理部142に与える。さらに、処理切換部141は、命令コマンドC1がリードを示す場合には、その命令アドレスA1を進行アドレスA3として、メモリ(進行アドレス記憶部)141aに記憶させる。ここで、進行アドレスA3は、アクセスマスタ1が実行中のアドレスを示す。一方、命令コマンドC1がデータ転送の予約を表す転送予約情報を示す場合は、処理切換部141は、命令コマンドC1を転送予約コマンドC3として、メモリ141aに記憶されている進行アドレスA3とともに、予約処理部143に与える。
要求処理部142は、処理切換部141から入力される要求コマンドC2及び要求アドレスA2と、ヒット検出部130から入力されるヒット検出結果R1とに応じて、キャッシュメモリ110又はメインメモリ10上のデータをリード又はライトする。例えば、要求処理部142は、処理切換部141から要求アドレスA2を受け取ると、その要求アドレスA2をヒット検出部130に与える。そして、要求処理部142は、その応答として、ヒット検出部130から、要求アドレスA2のヒット検出結果R1を取得する。処理切換部141から入力される要求コマンドC2がリードを示す場合、要求処理部142は、キャッシュメモリ110又はメインメモリ10からリードしたリードデータD1をアクセスマスタ1へ出力する。
なお、要求処理部142とキャッシュメモリアクセス調停部145との間の情報の受け渡しは、信号S1を介して行われる。また、要求処理部142とメインメモリアクセス調停部146との間の情報の受け渡しは、信号S4を介して行われる。
予約処理部143は、処理切換部141から入力される進行アドレスA3及び転送予約コマンドC3と、ヒット検出部130から入力されるヒット検出結果R2とに応じて、メインメモリ10からキャッシュメモリ110へのデータの転送を行う。例えば、予約処理部143は、処理切換部141から転送予約コマンドC3を受け取ると、転送を行うデータがメインメモリ10に格納されているアドレス(転送予約アドレス)を特定し、特定されたアドレスA4をヒット検出部130に与える。そして、予約処理部143は、その応答として、ヒット検出部130から、アドレスA4のヒット検出結果R2を取得する。そして、予約処理部143は、ヒット検出結果R2がキャッシュミスである場合には、そのアドレスのデータをメインメモリ10からキャッシュメモリ110に転送する。また、予約処理部143は、転送予約コマンドC3に基づいて転送を開始すると、格納先のキャッシュラインを示す予約領域情報I1を開放処理部144に与える。
なお、予約処理部143とキャッシュメモリアクセス調停部145との間の情報の受け渡しは、信号S2を介して行われる。また、予約処理部143とメインメモリアクセス調停部146との間の情報の受け渡しは、信号S5を介して行われる。
開放処理部144は、メモリ管理部120を介して、キャッシュメモリ110の空き容量が少なくなったと判断した場合に、開放するキャッシュラインを選択する。例えば、開放処理部144は、メモリ管理部120のタグメモリ121のステータスフラグFsを監視し、「無効」を示すステータスフラグFsが、例えばT個のような予め定められた個数(閾値)以下となった場合に、キャッシュメモリ110の空き容量が少なくなったと判断する。ここで、開放処理部144は、タグメモリ121のアクセスフラグFaと、予約処理部143からの予約領域情報I1とに基づいて、開放されるキャッシュラインを選択する。開放処理部144は、開放するキャッシュラインを選択すると、選択されたキャッシュラインのデータをメインメモリ10へ書き戻すことを示す開放情報を、キャッシュメモリアクセス調停部145に与える。
開放処理部144は、開放されるキャッシュラインを選択する際には、予約処理部143からの予約領域情報I1を参照する。例えば、開放処理部144は、予約領域情報I1に基づき、予約処理部143によりデータが格納されたキャッシュラインのアクセスフラグFaを監視し、アクセスマスタ1が1回以上それらのキャッシュラインに格納されたデータにアクセスし、アクセスフラグFaが有効となったかどうかを、予約領域アクセスフラグFraとして、メモリ(アクセス履歴情報記憶部)144aに記録する。アクセスマスタ1がそれらのキャッシュラインのデータに1回もアクセスしていない場合、開放処理部144は、そのキャッシュラインを開放の対象としない。なお、開放処理部144は、キャッシュラインが開放されると、その予約領域アクセスフラグFraをリセットする。
なお、開放処理部144とキャッシュメモリアクセス調停部145との間の情報の受け渡しは、信号S3を介して行われる。また、開放処理部144とメインメモリアクセス調停部146との間の情報の受け渡しは、信号S6を介して行われる。
キャッシュメモリアクセス調停部145は、予め定められた優先順位に基づき、要求処理部142と、予約処理部143と、開放処理部144とから入力される信号S1〜S3に基づいて、キャッシュメモリ110へアクセスする順番を調停する。そして、キャッシュメモリアクセス調停部145は、調停された順番に従って、信号S1〜S3をキャッシュメモリ110に与える。例えば、その優先順位は、高いものから順に、要求処理部142、開放処理部144及び予約処理部143であるものとする。
従って、キャッシュメモリアクセス調停部145に対して、要求処理部142、予約処理部143及び開放処理部144のいずれか2つ以上から同時に信号が入力された場合、優先順位の低い方の信号に基づくキャッシュメモリ110へのアクセスは停止され、優先順位の高い方の信号に基づくキャッシュメモリ110へのアクセスが最優先に行われる。同時に入力された信号のうち、優先順位の低い方の信号に基づくアクセスは、優先順位の高い方の信号に基づくアクセスが終了次第、開始される。
メインメモリアクセス調停部146は、予め定められた優先順位に基づき、要求処理部142と、予約処理部143と、開放処理部144とから入力される信号S4〜S6に基づいて、メインメモリ10へアクセスする順番を調停する。例えば、その優先順位は、キャッシュメモリアクセス調停部145の順位と同様に、高いものから順に、要求処理部142、開放処理部144及び予約処理部143であるものとする。
従って、メインメモリアクセス調停部146に対して、要求処理部142、予約処理部143及び開放処理部144のいずれか2つ以上から同時に信号が入力された場合、優先順位の低い方の信号に基づくメインメモリ10へのアクセスは停止され、優先順位の高い方の信号に基づくメインメモリ10へのアクセスが最優先に行われる。同時に入力された信号のうち、優先順位の低い方の信号に基づくアクセスは、優先順位の高い方の信号に基づくアクセスが終了次第、開始される。
このとき、要求処理部142及び予約処理部143から同時に同じアドレスのデータに対してアクセスが要求された場合において、そのアドレスのデータがキャッシュメモリ110上に格納されていないときには、メインメモリアクセス調停部146は、要求処理部142からのアクセス要求のみを有効とする。メインメモリアクセス調停部146は、予約処理部143へは、そのアドレスのデータの転送が完了したことを示す予約転送完了フラグFtfを出力する。
図2は、キャッシュメモリコントローラ100を動作させるための転送予約関数160を示す概略図である。転送予約関数160は、特定のデータをメインメモリ10からキャッシュメモリ110に転送する転送予約命令を示すコードである。図2に示されているように、転送予約関数160は、この関数実行後にアクセスマスタ1が参照する連続領域の先頭アドレスMM_ADDRと、この連続領域のサイズH*Vと、この連続領域を参照する命令群である関数の先頭アドレスPROCとを定義する。連続領域は、メインメモリ10上の命令領域又はデータ領域のアドレスが連続した一部の領域である。なお、本実施の形態においては、先頭アドレスMM_ADDR、サイズH*V及び先頭アドレスPROCが転送予約情報である。
アクセスマスタ1は、例えばアセンブリ言語等、アクセスマスタ1が実行できる形式で記述された第1のプログラムを実行する。一方、図2に示されている転送予約関数160は、例えばC言語といった高級言語で、アクセスマスタ1が実行できない形式で記述された第2のプログラムに含まれている。第1のプログラムは、第2のプログラムをコンパイルすることで生成される。
図3は、第2のプログラムに、図2に示されている転送予約関数160を適用した例を示す概略図である。図3に示されている第2のプログラム170は、アクセスマスタ1がメインメモリ10上の連続領域に配置されたデータを参照する命令で構成される関数173と、別の連続領域に配置されたデータを参照する命令で構成される関数174とを含む。プログラム170では、関数173及び174の実行前に、転送予約関数171及び転送予約関数172が処理される。
第2のプログラムは、アクセスマスタ1が連続領域のデータを参照する処理を行う前に、転送予約関数160が処理されるように記述されているため、確実にキャッシュヒットしたい連続領域のデータをメインメモリ10からキャッシュメモリ110へ転送するためのコマンドを、アクセスマスタ1が実行可能な形式で第1のプログラムに挿入することができる。
図4は、図3に示されている第2のプログラム170を第1のプログラムにコンパイル(変換)する処理を示すフローチャートである。図4に示されているフローは、図5に示されているように、第2のプログラムがコンパイラCgcに入力されることで実行される。コンパイラCgcは、一般に使用される仕様に従い、図2に示されている転送予約関数160をコンパイルする機能を備えているプログラム変換部である。また、第2のプログラム170は、図示しない記憶部に記憶されているものとする。
コンパイラCgcは、コンパイルを開始すると、第2のプログラム中のコンパイル対象となっているソースコードが、図2に示されている転送予約関数160かどうかを判定する(ステップS10)。そして、ソースコードが転送予約関数160である場合(S10:Yes)には、処理はステップS11に進み、ソースコードが転送予約関数160ではない場合(S10:No)には、処理はステップS12に進む。
ステップS11では、コンパイラCgcは、ソースコードを第1のプログラムに対応したコマンドにコンパイルする。一方、ステップS12では、コンパイラCgcは、ソースコードを、一般に使用される仕様に従ってコンパイルする。
そして、コンパイラCgcは、コンパイル対象となっているソースコードが、第2のプログラムの終端かどうかを判定する(S13)。ソースコードが終端ではない場合(S13:No)には、コンパイラCgcは、コンパイル対象を次のソースコードに更新して、ステップS10に処理を進める。ソースコードが終端である場合(S13:Yes)には、コンパイラCgcは、フローを終了する。
図6は、図3に示されている第2のプログラム170をコンパイラCgcがコンパイルした第1のプログラムの一例を示す概略図である。図6に示されている第1のプログラム180は、左列にアドレス、右列に命令語が16進数で表記される。命令の形式は、コンパイラCgcに依存するので、ここでは、命令語形式に関する説明を省略し、各命令が示す動作について説明する。
図6に示されている命令181a〜181cは、図3に示されている転送予約関数171を基に生成される転送予約命令である。命令181aは、図3に示されている転送予約関数171に記述された連続領域の先頭アドレスMM_ADDR1を処理切換部141へ通知する命令である。命令181bは、図3に示されている転送予約関数171に記述された連続領域のサイズH1*V1を処理切換部141へ通知する命令である。命令181cは、図3に示されている転送予約関数171に記述された先頭アドレスPROC1を処理切換部141へ通知する命令である。また、命令182a〜182cは、図3における転送予約関数172を基に生成される転送予約命令である。命令182aは、図3に示されている転送予約関数172に記述された連続領域の先頭アドレスMM_ADDR2を処理切換部141へ通知する命令である。命令182bは、図3に示されている転送予約関数172に記述された連続領域のサイズH2*V2を処理切換部141へ通知する命令である。命令182cは、図3に示されている転送予約関数172に記述された先頭アドレスPROC2を処理切換部141へ通知する命令である。
図6に示されているように、第1のプログラム180では、転送予約命令181a〜181c、182a〜182cが、メインメモリ10のデータを利用して行われる処理P1、P2を実行する命令群1831、1832、1833、・・・、1841、1842、1843、・・・、よりも先に記載されているため、アクセスマスタ1は、これらの命令群よりも先に、転送予約命令181a〜181c、182a〜182cを実行する。このため、アクセスマスタ1は、これらの命令群を実行する前に、転送予約命令181a〜181c、182a〜182cに従って、転送予約情報を示す命令コマンドC1を処理切換部141に送ることができる。これにより、アクセスマスタ1がこれらの命令群を実行する前に、これらの命令群で利用されるデータがメインメモリ10からキャッシュメモリ110に転送される。
図7は、図6に示されている第1のプログラム180のメインメモリ10への配置例を示す概略図である。図7において、図6に示されている第1のプログラム180は、メインメモリ10上の命令領域190に格納される。特に、図3に示されている転送予約関数171をコンパイルした命令181a〜181cは、領域191pに配置され、図3に示されている転送予約関数172をコンパイルした命令182a〜182cは、領域192pに配置される。
アクセスマスタ1が領域191pに配置された命令181a(図6参照)を実行することにより、図3に示されている関数173にて参照される連続領域197dの先頭アドレスが予約処理部143に通知される。続いて、アクセスマスタ1が領域191pに配置された命令181b(図6参照)を実行することにより、連続領域197dのサイズが予約処理部143に通知される。さらに、アクセスマスタ1が領域191pに配置された命令181c(図6参照)を実行することにより、図3に示されている関数173に対応するコマンドが格納された領域193pの先頭アドレスが予約処理部143に通知される。
同様に、アクセスマスタ1が領域192pに配置された命令182a〜182c(図6参照)を実行することにより、図3に示されている関数174にて参照される連続領域198dの先頭アドレス及びサイズと、図3に示されている関数174に対応するコマンドが格納された領域194pの先頭アドレスとが予約処理部143に通知される。
次に、キャッシュメモリコントローラ100での処理の流れについて、フローチャートを用いて説明する。
図8は、データ処理部140の処理切換部141が行う処理を示すフローチャートである。処理切換部141は、アクセスマスタ1から命令コマンドC1と命令アドレスA1とが入力されると処理を開始する。
まず、処理切換部141は、入力された命令アドレスA1が、図7に示されている命令領域190に含まれるアドレスであるかどうかを判定する(S20)。命令アドレスA1が命令領域190のアドレスである場合(S20:Yes)には、処理はステップS21に進み、命令アドレスA1が命令領域190のアドレスではない場合(S20:No)には、処理はステップS22に進む。
ステップS21では、処理切換部141は、入力された命令アドレスA1を進行アドレスA3としてメモリ141aに記憶する。なお、既に進行アドレスA3が記憶されている場合には、処理切換部141はその値を更新する。一方、命令アドレスA1が命令領域190のアドレスではない場合には、進行アドレスA3は更新されない。
ステップS22では、処理切換部141は、メモリ141aに記憶されている進行アドレスA3を予約処理部143に与える。
次に、処理切換部141は、アクセスマスタ1から入力される命令コマンドC1が、リード及びライトの何れかであるか否かを判定する(S23)。命令コマンドC1がリード及びライトの何れかである場合(S23:Yes)には、処理はステップS24に進み、命令コマンドC1がリード及びライトの何れでもない場合(S23:No)には、処理はステップS25に進む。
ステップS24では、処理切換部141は、入力された命令コマンドC1及び命令アドレスA1を、それぞれ要求コマンドC2及び要求アドレスA2として要求処理部142に与える。一方、ステップS25では、処理切換部141は、命令コマンドC1を転送予約コマンドC3として予約処理部143に与える。転送予約コマンドC3は、例えば、図6に示されている命令181a〜181c及び命令182a〜182cである。
次に、処理切換部141は、データ処理部140に、アクセスマスタ1からの命令コマンドC1があるかどうか(未処理の命令コマンドC1があるかどうか)を判定する(S26)。未処理の命令コマンドC1がある場合(S26:Yes)には、処理はステップS20に進み、未処理の命令コマンドC1がない場合(S26:No)には、処理切換部141は、フローを終了する。
図9は、処理切換部141での処理のタイミングチャートの一例を示す概略図である。図9では、アクセスマスタ1から処理切換部141に命令コマンドC1が入力されるタイミングと、要求処理部142へデータを出力するタイミングと、予約処理部143へデータを出力するタイミングとが示されている。
処理切換部141は、時刻t10において、アクセスマスタ1からリード要求を示す命令コマンドC1と、プログラム領域を示す命令アドレスA1とが入力されると、時刻t11において、それぞれを要求コマンドC2及び要求アドレスA2として要求処理部142へ出力する。また、処理切換部141は、進行アドレスA3の値を、命令アドレスA2を示す値に更新し、予約処理部143に与える。
次に、時刻t12において、処理切換部141は、アクセスマスタ1からライト要求を示す命令コマンドC1と、データ領域を示す命令アドレスA1とが入力されると、時刻t13において、それぞれを要求コマンドC2及び要求アドレスA2として要求処理部142に与える。また、命令アドレスA1がデータ領域を示すため、処理切換部141は、進行アドレスA3の値は更新せず、メモリ141aに記録されている進行アドレスA3を予約処理部143に与える。
時刻t13において、アクセスマスタ1からデータの転送予約を示す命令コマンドC1(TRI)と、転送予約を示す命令アドレスA1(TRIA)とが入力されると、処理切換部141は、要求処理部142への出力は行わず、時刻t14において、メモリ141aに記録されている進行アドレスA3を予約処理部143に与えるとともに、命令コマンドC1を転送予約コマンドC3として予約処理部143に与える。
時刻t14において、アクセスマスタ1からリード要求を示す命令コマンドC1と、プログラム領域を示す命令アドレスA1とが入力されると、時刻t15において、それぞれを要求コマンドC2及び要求アドレスA2として要求処理部142に与える。また、処理切換部141は、進行アドレスA3の値を命令アドレスA1で示される値に更新し、予約処理部143に与える。
以上のように、処理切換部141は、アクセスマスタ1から入力される命令コマンドC1及び命令アドレスA1に応じて、出力先を要求処理部142又は予約処理部143に切り換える。
図10は、データ処理部140の要求処理部142が行う処理を示すフローチャートである。要求処理部142は、処理切換部141からの要求コマンドC2及び要求アドレスA2と、ヒット検出部130からのキャッシュヒット又はキャッシュミスを示すヒット検出結果R1とが入力されると、処理を開始する。
まず、要求処理部142は、ヒット検出部130からのヒット検出結果R1により、要求コマンドC2で要求されるデータがキャッシュメモリ110に存在するかを判定する(S30)。要求コマンドC2で要求されるデータがキャッシュメモリ110に存在しない場合(S30:No)、言い換えると、ヒット結果R1がキャッシュミスを示す場合には、処理はステップS31に進む。一方、要求コマンドC2で要求されるデータがキャッシュメモリ110に存在する場合(S30:Yes)、言い換えると、ヒット結果R1がキャッシュヒットを示す場合には、処理はステップS32に進む。
ステップS31では、要求処理部142は、メインメモリ10からキャッシュメモリ110へデータの転送を行うため、データの転送を行う命令をメインメモリアクセス調停部146に与える。この命令には、要求アドレスA2が含まれているものとする。そして、メインメモリアクセス調停部146は、要求アドレスA2で示されるアドレスに格納されているデータをメインメモリ10からキャッシュメモリ110に転送する処理を行う。例えば、メインメモリアクセス調停部146は、要求アドレスA2で示されるアドレスに格納されているデータをメインメモリ10から読み出し、このデータを要求処理部142に与える。要求処理部142は、与えられたデータをキャッシュメモリアクセス調停部145に与え、キャッシュメモリ110に書き込ませる。なお、キャッシュメモリ110にデータが書き込まれた場合には、メモリ管理部120は、タグメモリ121に書き込まれたデータのアドレスをアドレス情報Taとして格納するとともに、対応するステータスフラグFsがデータが存在することを示すように更新する。
ステップS32では、要求処理部142は、キャッシュメモリ110へのアクセスを行う。要求コマンドC2がライト命令を示す場合、要求コマンドC2が示すデータをキャッシュラインにライトするため、要求処理部142は、キャッシュメモリアクセス調停部145へ要求コマンドC2と要求アドレスA2とを与える。一方、要求コマンドC2がリード命令を示す場合、要求コマンドC2が示すデータをキャッシュラインからリードするため、要求処理部142は、キャッシュメモリアクセス調停部145へリード対象の要求アドレスA2を与える。このようにして取得されたデータは、リードデータD1としてアクセスマスタ1に与えられる。また、キャッシュメモリ110にアクセスがあった場合には、メモリ管理部120は、タグメモリ121に格納されているアクセスフラグFaがアクセスしたことを示すように更新する。
ここで、要求コマンドC2がリード要求を示し、かつ、ヒット検出結果R1がキャッシュミスを示す場合、要求処理部142は、メインメモリアクセス調停部146を介して、メインメモリ10から読み出されたデータを、キャッシュメモリアクセス調停部145を介してキャッシュメモリ110へ転送するとともに、リードデータとしてアクセスマスタ1に出力してもよい。この場合には、図10のステップS32の処理は行われない。但し、メモリ管理部120は、タグメモリ121に格納されているアクセスフラグFaがアクセスしたことを示すように更新する。
図11は、データ処理部140の予約処理部143が行う処理を示すフローチャートである。予約処理部143は、処理切換部141から、進行アドレスA3、転送するデータが記憶されている連続領域の先頭アドレスMM_ADDR、転送するデータが記憶されている連続領域のサイズH*V、及び、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスPROCと、ヒット検出部130からキャッシュヒット又はキャッシュミスを示すヒット検出結果R2とが入力されると、処理を開始する。
まず、予約処理部143は、メインメモリ10へアクセスする間隔(以下、アクセス間隔Daという)を算出する(S40)。アクセス間隔Daの算出には、進行アドレスA3から、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスPROCまでの命令ステップ数Dsが使用される。命令ステップ数Dsは、下記の(1)式で示されているように、予約処理を開始した時点での命令アドレスである進行アドレスA3から、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスPROCまでの差分で算出できる。
Ds=(命令群の先頭アドレスPROC)−(進行アドレスA3) (1)
そして、予約処理部143は、下記の(2)式で示されているように、処理切換部141から入力された転送するデータが記憶されている連続領域のサイズH*Vのうち、転送が完了していない残りの連続領域のサイズRsで、命令ステップ数Dsを割ることで、単位サイズ当たりの転送に要する命令ステップ数Dspuを算出することができる。予約処理部143は、この単位サイズ当たりの転送に要する命令ステップ数Dspuをアクセス間隔Daとして使用する。
Dspu=(命令ステップ数Ds)÷(残りの連続領域のサイズRs) (2)
次に、予約処理部143は、転送する連続領域のデータの内、次に転送する対象となるデータがキャッシュメモリ110に存在するか判定する(S41)。ここで、次に転送する対象となるデータは、転送する連続領域のデータの内、次に転送する転送単位長のデータである。そして、次に転送する対象となるデータがキャッシュメモリ110に存在しない場合(S41:No)、言い換えると、次に転送する対象となるデータのヒット検出結果R2が、キャッシュミスを示す場合には、メインメモリ10からキャッシュメモリ110へそのデータを転送する必要があるため、予約処理部143は、ステップS42に処理を進める。一方、次に転送する対象となるデータがキャッシュメモリ110に存在する場合(S41:Yes)、言い換えると、次に転送する対象となるデータのヒット検出結果R2が、キャッシュヒットを示す場合には、メインメモリ10からキャッシュメモリ110へそのデータを転送する必要がないため、予約処理部143は、そのデータを転送せずに、ステップS43に処理を進める。
ステップS42では、予約処理部143は、ステップS40で算出されたアクセス間隔Daで、メインメモリ10からキャッシュメモリ110へデータの転送を行う命令をメインメモリアクセス調停部146に与える。例えば、アクセス間隔Daが「8」である場合には、進行アドレスA3が8ステップ分進むまでに、転送単位長のデータを転送する必要がある。このため、予約処理部143は、その8ステップの何れか、例えば、その8ステップの内の最初のステップで、メインメモリアクセス調停部146に転送命令を与える。このような転送命令を受けたメインメモリアクセス調停部146は、メインメモリ10から、転送対象となるデータを読み出し、予約処理部143に与える。予約処理部143は、与えられたデータをキャッシュメモリアクセス調停部145に与えて、キャッシュメモリ110に書き込ませる。なお、キャッシュメモリ110にデータが書き込まれた場合には、メモリ管理部120は、タグメモリ121に書き込まれたデータのアドレスをアドレス情報Taとして格納するとともに、対応するステータスフラグFsがデータが存在することを示すように更新する。
次に、予約処理部143は、既に転送したデータの合計サイズを示す転送完了サイズを更新する(S43)。
次に、予約処理部143は、転送完了サイズが、処理切換部141から入力された、転送するデータが記憶されている連続領域のサイズH*V以上かどうか判定する(S44)。転送完了サイズが、転送するデータが記憶されている連続領域のサイズH*V未満の場合(S44:No)には、処理はステップS45に進み、転送するデータが記憶されている連続領域のサイズH*V以上の場合(S44:Yes)には、フローを終了する。
ステップS45では、予約処理部143は、処理切換部141から更新された進行アドレスA3を取得したか否かを判断する。進行アドレスA3が取得された場合(S45:Yes)には、処理はステップS40に進み、進行アドレスA3が取得されていない場合(S45:No)には、処理はステップS41に進む。
以上のように、予約処理部143は、転送予約コマンドC3に基づいて必要なデータをキャッシュメモリ110へ転送することで、アクセスマスタ1がアクセスしたことのないメインメモリ10上の領域においても、キャッシュヒット率を確実に向上させることができる。
図12(a)〜(c)は、予約処理部143によるデータ転送の推移を示す概略図である。図12(a)は、進行アドレスA3の推移を示し、図12(b)は、転送するデータが記憶されている連続領域の残りのサイズの推移を示し、図12(c)は、アクセスする間隔Daの推移を示す。
図12(c)に示されているように、時刻t0におけるアクセス間隔Da0は、予約処理部143に転送予約コマンドC3が入力された時点で計算される。
図12(a)に示されているように、時刻t1において、進行アドレスA3の値が更新されると、その時点で転送するデータが記憶されている連続領域の残りのサイズ(図12(b)参照)と、進行アドレスA3から連続領域を参照する命令群の先頭アドレスPROCまでの残りのステップ数(図12(a)参照)とから、予約処理部143は、アクセス間隔Da1を再度算出し(図12(c)参照)、メインメモリ10へアクセスする間隔を調節する。
このように、予約処理部143は、進行アドレスA3が更新されるとアクセス間隔Daを再度計算し、そのアクセス間隔Daで連続領域の転送を行う。そして、進行アドレスA3が、連続領域を参照する命令群の先頭アドレスPROCになる時刻tnまでに、転送するデータが記憶されている連続領域の残りのサイズが「0」、即ち、転送が完了するように転送処理を行う。時刻tnにおいては、進行アドレスA3が連続領域を参照する命令群の先頭アドレスPROCとなるため、アクセス間隔Danは「0」となる。
図13は、予約処理部143が行う処理のタイミングチャートの一例を示す概略図である。図13は、処理切換部141から進行アドレスA3及び転送するデータが記憶されている連続領域のサイズH*Vが入力されるタイミングと、転送するデータが記憶されている連続領域のうち残りの連続領域のサイズが切り換わるタイミングと、アクセス間隔Daを算出するタイミングと、メインメモリ10へアクセスするタイミングとを示す。
時刻t0において、処理切換部141から進行アドレスA3及び転送予約コマンドC3が入力されると、予約処理部143は、アクセス間隔Da0を算出する。処理切換部141からの進行アドレスA3が更新される時刻t1まで、予約処理部143は、算出されたアクセス間隔Da0で、メインメモリ10へのアクセスを行う。
時刻t1において、処理切換部141から入力される進行アドレスA3が更新されると、予約処理部143は、アクセス間隔Da1を算出し、進行アドレスA3が更新される時刻t2まで、算出されたアクセス間隔Da1で、メインメモリ10へアクセスを行う。
同様に、時刻t2において、処理切換部141から入力される進行アドレスA3が更新されると、予約処理部143は、アクセス間隔Da2を算出し、進行アドレスA3が更新されるまで、算出されたアクセス間隔Da2で、メインメモリ10へアクセスを行う。
以降、予約処理部143は、処理切換部141から入力される進行アドレスA3が更新される度に算出されるアクセス間隔Daでメインメモリ10にアクセスし、進行アドレスA3が、転送予約コマンドC3で通知される連続領域を参照する命令群の先頭アドレスPROCとなるまでに転送を完了する。
上記のように、進行アドレスA3を参照してメインメモリ10にアクセスする間隔を調節し、連続領域を参照する命令群が実行される前までに転送を完了することで、キャッシュメモリ110を効率良く使用できる。
図14は、データ処理部140の開放処理部144が行う処理を示すフローチャートである。開放処理部144は、メモリ管理部120のタグメモリ121において、無効(データが格納されていないこと)を示すステータスフラグFsが予め定められた個数、例えばT個以下かどうかを常時監視する。
開放処理部144は、ステータスフラグFsがT個以下かどうかを判定する(S50)。ステータスフラグFsがT個より多い場合(S50:No)には、開放処理部144は待機し、メモリ管理部120のステータスフラグFsの監視を続行する。一方、ステータスフラグFsがT個以下である場合(S50:Yes)には、処理はステップS51に進む。
ステップS51では、開放処理部144は、キャッシュメモリ110上の各キャッシュラインのうち、開放の候補となるキャッシュラインを選択する。開放候補とするキャッシュラインを選択する方法としては、例えば、参照されていない時間が最も長いキャッシュラインを選択するLRU方式が適用される。
そして、開放処理部144は、ステップS51で選択されたキャッシュラインが開放の対象であるか否かを判定する(S52)。キャッシュメモリ110の各キャッシュラインのうち、転送予約コマンドC3によって転送されたデータが格納され、かつ、アクセスマスタ1から1回もアクセスされていないキャッシュラインは、開放の対象とはならない。言い換えると、開放の対象となるのは、開放候補として選択されたキャッシュラインの内、要求コマンドC2によりキャッシュメモリ110に転送されたキャッシュラインと、開放候補として選択されたキャッシュラインの内、予約領域アクセスフラグFraにより、アクセスフラグFaが有効となったことがあると示されたキャッシュラインとである。そのため、開放処理部144は、予約処理部143からの予約領域情報I1に基づき、予約処理部143がデータを格納したキャッシュラインのアクセスフラグFaを監視し、アクセスフラグFaが1回以上有効となったかどうかを予約領域アクセスフラグFraとしてメモリ144aに記録する。
そして、ステップS51で選択されたキャッシュラインが開放の対象ではない場合(S52:No)には、処理はステップS51に進み、開放処理部144は、再度LRU方式により、開放候補とするキャッシュラインを選択する。一方、ステップS51で選択されたキャッシュラインが開放の対象である場合(S52:Yes)には、処理はステップS53に進む。
ステップS53では、開放処理部144は、開放の対象とされたキャッシュラインに格納されているデータを、メインメモリ10に書き戻す命令をキャッシュメモリアクセス調停部145に与える(S53)。このような命令を受けたキャッシュメモリアクセス調停部145は、開放の対象とされたキャッシュラインに格納されたデータを読み出し、このデータを開放処理部144に与える。開放処理部144は、そのデータをメインメモリアクセス調停部146に与えて、メインメモリ10にそのデータを書き込ませる。
キャッシュメモリ110からメインメモリ10へキャッシュラインの書き戻しが完了すると、処理はステップS50に進み、開放処理部144は、タグメモリ121のステータスフラグFsの監視を続行する。
以上のように、転送予約コマンドC3によって転送されたデータが格納され、かつ、アクセスマスタ1がアクセスしたことのないキャッシュラインを開放の対象としないことで、アクセスマスタが参照するデータが確実にキャッシュメモリ110に格納される。
以上に記載した実施の形態1においては、図3に示されているような第2のプログラム170に転送予約関数171、172を記述し、これらをコンパイラCgcがコンパイルすることで生成された第1のプログラム180(図6参照)を使用して、キャッシュメモリコントローラ100を動作させる例を説明したが、このような例に限定されるものではない。第1のプログラム中に転送予約コマンドが記述されていればよい。従って、図15に示すような第2のプログラム270から、図6に示されている転送予約コマンド181a〜181c、182a〜182cを有する第1のプログラム180を生成するコンパイラを使用してもよい。言い換えると、コンパイラは、第2のプログラムに含まれている、メインメモリ10のデータ領域に格納されているデータを利用する命令を示すコードを解析することで、転送予約命令を生成すればよい。これにより、第2のプログラム270に転送予約関数160が意識的に記述されていないものであっても、適切な位置に確実に転送予約コマンドを記述でき、所望の目的を達成することができる。
また、以上に記載した実施の形態1においては、アクセスマスタ1から転送予約コマンドが発行される例を説明したが、このような例に限定されるものではない。例えば、アクセスマスタ1が実行する第1のプログラムに転送予約命令が含まれていなくてもよい。このような場合には、予約処理部143が、キャッシュメモリ110内に格納されたメインメモリ10上の所定のプログラム領域に格納されている第1のプログラムを解析し、後に実行される処理で参照されるデータをメインメモリ10からキャッシュメモリ110へ転送する転送予約情報を生成すればよい。これにより、汎用的なコンパイラを使用して第2のプログラムから第1のプログラムを生成して、アクセスマスタ1が参照するデータを確実にキャッシュメモリ110に格納できる。
実施の形態2.
実施の形態2を、図16〜図30に基づいて説明する。
図16は、実施の形態2に係るキャッシュメモリコントローラ200の構成を概略的に示すブロック図である。キャッシュメモリコントローラ200は、キャッシュメモリ110と、メモリ管理部120と、ヒット検出部130と、データ処理部240とを備える。
図16では、アクセスマスタ1と、キャッシュメモリコントローラ200と、メインメモリ10との接続関係が簡単に示されている。
メインメモリ10は、バンクと呼ばれる、ある程度の容量ごとにまとめて管理される。バンク内は、命令領域とデータ領域とに分けられる。また、メインメモリ10に対して、行(Row)アドレスと、列(Column)アドレスとを指定することにより、特定の連続領域にアクセスすることができる。
キャッシュメモリ110、メモリ管理部120及びヒット検出部130の機能は、実施の形態1と同様であり、既に説明されているので、ここでの説明は省略する。
データ処理部240は、メインメモリ10に記憶されているデータをキャッシュメモリ110に転送する。本実施の形態においては、データ処理部240は、特定の命令で利用されるデータがメインメモリ10に記憶されているアドレスを含む転送予約情報を受け取る度に、受け取った転送予約情報を記憶する。そして、データ処理部240は、転送予約情報が複数記憶されている場合に、これらを調停する。データ処理部240は、調停により優先度が高いと判定された転送予約情報に従い、第1のプログラムに含まれている特定の命令をアクセスマスタ1が実行する前に、この特定の命令で利用されるデータをメインメモリ10からキャッシュメモリ110に転送する。また、データ処理部240は、アクセスマスタ1からの要求に応じて、キャッシュメモリ110又はメインメモリ10にデータを書き込む。データ処理部240は、処理切換部141と、要求処理部142と、予約処理部243と、開放処理部144と、キャッシュメモリアクセス調停部145と、メインメモリアクセス調停部146と、優先度決定部247と、アクセス管理部248とを備える。
処理切換部141、要求処理部142、開放処理部144、キャッシュメモリアクセス調停部145及びメインメモリアクセス調停部146の機能は、実施の形態1と同様であり、既に説明されているので、ここでの説明は省略する。
優先度決定部247は、処理切換部141から進行アドレスA3及び転送予約コマンドC3を受け取る。そして、優先度決定部247は、受け取った転送予約コマンドC3で表される転送予約情報をメモリ247a(転送予約記憶部)に記憶する。優先度決定部247は、記憶されている転送予約情報毎にアクセス間隔Daを算出する。アクセス間隔Daの算出方法は、実施の形態1と同様である。優先度決定部247は、算出されたアクセス間隔Daと、アクセス管理部248から得られるアクセス経過時間R5とに基づき、最優先に予約処理部243に処理を行わせる転送予約情報を決定する。優先度決定部247は、アクセス管理部248へ、転送予約情報で示される、転送するデータが記憶されている連続領域の先頭アドレスAmをアドレスA5として与え、その応答として、アクセス経過時間R5を、アクセス管理部248より受け取る。さらに、優先度決定部247は、決定された最優先の転送予約情報の、メインメモリ10上の連続領域へのアクセス間隔Daと、転送するデータが記憶されている連続領域の先頭アドレスAmとを予約処理部243に与える。予約処理部243からの予約転送状況信号V1が転送完了を示し、転送予約情報として記憶されている、転送するデータが記憶されている連続領域のサイズH*Vが全て転送されると、優先度決定部247は、その転送予約情報をメモリ247aから消去する。
図17は、優先度決定部247のメモリ247aに記憶されている転送予約管理情報201を示す概略図である。転送予約管理情報201は、到着順欄201aと、参照命令群先頭アドレス欄201bと、連続領域先頭アドレス欄201cと、転送残サイズ欄201dと、転送状況欄201eとを有する。
到着順欄201aは、転送予約情報の到着順を示す情報を格納する。
参照命令群先頭アドレス欄201bは、転送予約コマンドC3に含まれている、転送するデータが記憶されている連続領域を参照する命令群である関数の先頭アドレスPROCを格納する。
連続領域先頭アドレス欄201cは、転送予約コマンドC3に応じて、転送するデータがメインメモリ10に格納されている連続領域の先頭アドレスを格納する。なお、連続領域先頭アドレス欄201cの初期値は、転送予約コマンドC3に含まれている、アクセスマスタ1が参照する連続領域の先頭アドレスMM_ADDRである。
転送残サイズ欄201dは、転送予約コマンドC3に応じて転送するデータの残りのサイズを格納する。なお、転送残サイズ欄201dの初期値は、転送予約コマンドC3に含まれている、転送するデータが記憶されている連続領域のサイズH*Vである。
転送状況欄201eは、参照命令群先頭アドレス欄201b及び連続領域先頭アドレス欄201cに格納された情報に対応する転送予約情報に基づいて、データが転送中であるか否かを示す転送状況情報を格納する。例えば、本実施の形態においては、この欄が「1」であれば、転送中であることを示し、「0」であれば、転送待機中であることを示す。
なお、優先度決定部247は、転送予約コマンドC3を受け取った順に、転送予約コマンドC3で示される、アクセスマスタ1が参照する連続領域の先頭アドレスMM_ADDRと、転送するデータが記憶されている連続領域のサイズH*Vと、転送するデータが記憶されている連続領域を参照する命令群である関数の先頭アドレスPROCとを、転送予約情報として、転送予約管理情報201に格納する。優先度決定部247が、予約処理部243から予約転送状況信号V1を受け取ると、メモリ247aに記憶している内容を更新する。
図16に戻り、アクセス管理部248は、処理切換部141からの要求アドレスA2を監視し、前回アクセスされてから経過した時間をアクセス経過時間Tdとしてタイマー(図示せず)で計測し、計測されたアクセス経過時間Tdをメモリ248a(アクセス経過時間記憶部)に記憶させる。アクセス管理部248は、メインメモリ10上の各バンクに属する行アドレスと、列アドレスとで分割される複数のアドレスからなる連続領域を1単位として、処理切換部141から要求アドレスA2が要求処理部142に送られるたびに、要求アドレスA2が属する連続領域を特定し、特定された連続領域のアクセス経過時間Tdをリセットする。また、優先度決定部247からアドレスA5が与えられた場合に、アクセス管理部248は、アドレスA5が属する連続領域を特定し、特定した連続領域のアクセス経過時間Tdを、応答R5として、メモリ248aから読み出し、これを優先度決定部247に与える。
図18は、アクセス管理部248のメモリ248aに記憶されているアクセス管理情報202を示す概略図である。
アクセス管理情報202は、バンクNo欄202aと、行アドレス欄202bと、列アドレス欄202cと、アクセス経過時間欄202dとを有する。
バンクNo欄202aは、メインメモリ10のバンクを識別するためのバンクNoを格納する。
行アドレス欄202bは、メインメモリ10のバンクに形成された連続領域の行アドレスの範囲を格納する。
列アドレス欄202cは、メインメモリ10のバンクに形成された連続領域の列アドレスの範囲を格納する。
アクセス経過時間欄202dは、バンクNo欄202aで特定されるバンクの、行アドレス欄202b及び列アドレス欄202cで特定される連続領域に、前回アクセスされてからの経過時間を示すアクセス経過時間Tdを格納する。アクセスマスタ1から一度もアクセスされていない連続領域に関しては、アクセス経過時間Tdは、キャッシュメモリコントローラ200が起動されてからの経過時間となる。
図16に戻り、予約処理部243は、ヒット検出部130から与えられるヒット検出結果R2と、優先度決定部247から与えられる、転送するデータが記憶されている連続領域の先頭アドレスAm及びメインメモリ10へのアクセス間隔Daとに応じて、メインメモリ10へアクセスして、キャッシュメモリ110に、予め設定された転送単位である1ライン分のデータの転送を行う。キャッシュメモリ110への1ライン分のデータの転送が完了すると、予約処理部243は、予約転送状況信号V1を転送が完了したことを示す値に更新することで、1ライン分のデータの転送が完了したことを優先度決定部247に通知する。例えば、予約処理部243は、優先度決定部247から受け取った、転送するデータが記憶されている連続領域の先頭アドレスAmを、アドレスA4として、ヒット検出部130に与える。そして、予約処理部243は、その応答として、ヒット検出部130から、アドレスA4のヒット検出結果R2を取得する。そして、予約処理部243は、ヒット検出結果R2がキャッシュミスである場合には、そのアドレスのデータをメインメモリ10からキャッシュメモリ110に転送する。また、予約処理部243は、転送するデータが記憶されている連続領域の先頭アドレスAmの転送を開始すると、格納先のキャッシュラインを示す予約領域情報I1を開放処理部144に与える。最後に、予約処理部243は、転送するデータが記憶されている連続領域の先頭アドレスAmから1ライン分のデータの転送を完了すると、転送が完了したことを示すように予約転送状況信号V1を更新し、優先度決定部247に通知を行う。予約転送状況信号V1は、例えば、1ビットの信号とし、転送が完了しており、次の転送予約を受け付け可能な場合にはH(1)、反対に、他の転送予約を受け付け不可能な場合にはL(0)とする。
次に、優先度決定部247での処理の流れについて、フローチャートを用いて説明する。
図19は、優先度決定部247が、複数の転送予約情報を調停する際の処理を示すフローチャートである。優先度決定部247は、処理切換部141から、進行アドレスA3と、転送するデータが記憶されている連続領域の先頭アドレスMM_ADDR、転送するデータが記憶されている連続領域のサイズH*V、及び、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスPROCを含む転送予約コマンドC3とを受け取ると、処理を開始する。
まず、優先度決定部247は、予約処理部243が処理中かどうか判定する(S60)。予約処理部243からの予約転送状況信号V1が転送予約受付不可(V1=L)を表している場合(S60:No)、転送が完了するまで待機する。予約処理部243からの予約転送状況信号V1が転送予約受付可能(V1=H)を表している場合(S60:Yes)、優先度決定部247は、ステップS61へ処理を進める。
次に、ステップS61にて、優先度決定部247は、メモリ247aに記憶されている転送予約管理情報201の転送状況欄201eが転送中を表す転送予約情報があるか否かを判定する。記憶されている転送予約情報のうち、何れか1つにおいて、転送予約管理情報201の転送状況欄201eに、転送中を表す「1」が格納されている場合(S61:Yes)には、優先度決定部247は、処理をステップS62に進める。一方、記憶されている全ての転送予約情報の転送状況欄201eに転送待機中を表す「0」が格納されている場合(S61:No)には、優先度決定部247は、処理をステップS63に進める。
ステップS62では、優先度決定部247は、転送予約管理情報201の転送状況欄201eに転送中を表す「1」が格納されているレコードを更新する。具体的には、優先度決定部247は、転送予約管理情報201の該当するレコードの転送残サイズ欄201dの値から、転送単位である、キャッシュメモリ10の1ライン分のサイズ(ここでは、例えば、「1」とする)を差し引くことで更新する。なお、優先度決定部247は、転送残サイズ欄201dの値が「0」になった場合、その転送予約情報(レコード)を削除する。一方、転送残サイズ欄201dの値から1ライン分のサイズを差し引いた後でも、転送残サイズ欄201dの値が「1」以上の場合、優先度決定部247は、連続領域先頭アドレス欄201cに格納されている連続領域の先頭アドレスを1ライン分加算する。言い換えると、優先度決定部247は、連続領域の先頭アドレスを1ライン分後のアドレスに更新する。更に、優先度決定部247は、該当するレコードの転送状況欄201eを、待機中を表す「0」に更新し、処理をステップS63に進める。
ステップS63では、優先度決定部247は、メモリ247aに記憶されている、転送待機中の転送予約情報の個数を判定する。転送予約情報の個数が「0」個の場合には、優先度決定部247は、フローを終了する。転送予約情報の個数が「1」個の場合には、優先度決定部247は、処理をステップS64に進める。また、転送予約情報の個数が「2」個以上の場合は、優先度決定部247は、処理をステップS65に進める。
ステップS64では、優先度決定部247は、処理切換部141から受け取った1つの転送予約情報、言い換えると、メモリ247aに記憶されている唯一の転送予約情報を、最優先転送予約情報と決定する。そして、処理はステップS69へ進む。
ステップS65では、優先度決定部247は、メモリ247aに記憶されている各転送予約情報のアクセス間隔Daを算出する。そして、処理は、ステップS66に進む。アクセス間隔Daは、実施の形態1における(2)式により算出される。
次にステップS66では、優先度決定部247は、ステップS65で算出された各転送予約情報のアクセス間隔Daが同程度か判定する。このとき、各転送予約情報のアクセス間隔Daが予め設定された許容誤差範囲内の場合、優先度決定部247は、同程度と判定し(S66:Yes)、処理をステップS67に進める。同程度ではない場合(S66:No)、優先度決定部247は、処理をステップS68に進める。アクセス間隔Daの許容誤差は、予め定められた値、例えば、「±10」とする。
ステップS67では、優先度決定部247は、アクセス管理部248からの、各転送予約情報に対するアクセス経過時間R5に基づき、最優先転送予約情報を決定する。例えば、優先度決定部247は、メモリ247aに記憶されている転送予約管理情報201の連続領域先頭アドレス201c欄に格納されているアドレスA5をアクセス管理部248に与え、その応答として、アクセス経過時間R5を取得する。そして、優先度決定部247は、アクセス経過時間R5が最も大きい値の転送予約情報を、最優先転送予約情報と決定する。そして、処理は、ステップS69に進む。
ステップS68では、優先度決定部247は、ステップS65で算出された全転送予約情報のアクセス間隔Daのうち、最もアクセス間隔Daが小さい転送予約情報を最優先転送予約情報と決定する。そして、処理は、ステップS69に進む。
ステップS69では、優先度決定部247は、ステップS64、S67又はS68にて決定された最優先転送予約情報に基づき、転送予約管理情報201の対応する連続領域先頭アドレス欄201cに格納されているアドレスを、転送するデータが記憶されている連続領域の先頭アドレスAmとする。そして、優先度決定部247は、転送するデータが記憶されている連続領域の先頭アドレスAmと、アクセス間隔Daとを予約処理部243に与える。そして、処理はステップS70に進む。
ステップS70では、メモリ247aに記憶されている転送予約管理情報201のうち、ステップS69で予約処理部243に与えた転送予約情報の転送状況を「0(転送待機中)」から「1(転送中)」へと変更する。そして、処理は、ステップS60に進む。
以上のように、優先度決定部247は、進行アドレスA3から算出されるアクセス間隔Daに基づき、メモリ247aに記憶されている全転送予約情報から最優先転送予約情報を決定することで、より逼迫した転送予約情報に対しても、アクセスマスタ1が先頭アドレスPROCで示される命令群を実行する前までに、必要なデータの転送を完了でき、キャッシュメモリ110の浪費を防止できる。
また、優先度決定部247は、進行アドレスA3から算出されるアクセス間隔Da及びアクセス管理部248からのアクセス経過時間R5に基づき、メモリ247aに記憶されている全転送予約情報から最優先転送予約情報を決定することで、キャッシュメモリ110から開放される可能性の高いメインメモリ10上の連続領域に対しても、キャッシュヒット率を向上させることができる。
図20から図24は、それぞれ優先度決定部247が処理切換部141から受け取る2つの転送予約情報の、転送するデータが記憶されている連続領域のサイズと、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスとの関係を示す概略図である。図20〜図24の縦軸は、転送するデータが記憶されている連続領域のサイズを表し、その横軸は時間を表す。優先度決定部247は、時間「0」で、処理切換部141から受け取った転送予約情報#1及び転送予約情報#2の優先度を決定する処理を開始する。横軸に記載されたt#1及びt#2は、それぞれ、処理切換部141から受け取った転送予約情報#1及び転送予約情報#2で示される、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスPROC1及び先頭アドレスPROC2がそれぞれ実行されるタイミングを表す。また、図中のH1*V1及びH2*V2はそれぞれ、処理切換部141から受け取った転送予約情報#1及び転送予約情報#2で示される、転送するデータが記憶されている連続領域のサイズを表す。
図20及び図21は、それぞれ、図19のステップS66にて、全転送予約情報のアクセス間隔Daが同程度ではないと判断される例である。
図20は、転送予約情報#2と比較して、転送予約情報#1において、転送するデータが記憶されている連続領域のサイズが大きく、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスまでの命令ステップ数が小さい、言い換えると、転送するデータが記憶されている連続領域を参照する命令群の実行が開始されるまでの時間が短いことを表す一例である。この場合、図19のステップS65にて算出されるアクセス間隔Daは、転送予約情報#2の値よりも転送予約情報#1の値の方が許容誤差を超えて小さくなる。従って、図19のステップS66にて、転送予約情報のアクセス間隔Daは同程度でないと判定され(S66:No)、アクセス間隔Daの小さい転送予約情報#1が最優先転送予約情報として決定される。
図21は、図20とは反対に、優先度決定部247にて、最優先転送予約情報として転送予約情報#2が決定される例である。図21では、転送予約情報#1と比較して、転送予約情報#2において、転送するデータが記憶されている連続領域のサイズが大きく、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスまでの命令ステップ数も大きい、言い換えると、転送するデータが記憶されている連続領域を参照する命令群の実行が開始されるまでの時間が長い。従って、転送予約情報#2においては、転送するデータが記憶されている連続領域を参照する命令群の実行が開始されるまでの時間は長いが、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスPROC1とPROC2との差分が小さい。このため、図19のステップS65にて算出されるアクセス間隔Daは、転送予約情報#1の値よりも転送予約情報#2の値の方が許容誤差を超えて小さくなる。従って、図19のステップS66にて、転送予約情報のアクセス間隔Daは同程度ではないと判定され(S66:No)、アクセス間隔Daの小さい転送予約情報#2が最優先転送予約情報として決定される。
以上のように、優先度決定部247は、アクセス間隔Daが最も小さい転送予約情報を最優先転送予約情報と決定し、算出されたアクセス間隔Daと、最優先転送予約情報で示される、転送するデータが記憶されている連続領域の先頭アドレスAmとを予約処理部243に与える。これにより、予約処理部243でアクセス間隔Daを算出する必要が無くなり、予約処理の開始が早くなるため、メインメモリ10からキャッシュメモリ110へのデータ転送効率を向上させることができる。
図22から図24はそれぞれ、図19のステップS66にて、全転送予約情報のアクセス間隔Daが同程度であると判断される例である。
図22では、転送予約情報#1及び転送予約情報#2の両方において、転送するデータが記憶されている連続領域のサイズに対して、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスまでの命令ステップ数が小さい。このため、図19のステップS65にて算出されるアクセス間隔Daの値が何れも同程度に小さくなり、ステップS66において、何れの転送予約情報のアクセス間隔Daも同程度であると判断される。
図23では、転送予約情報#1において、転送するデータが記憶されている連続領域のサイズが非常に小さいが、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスまでの命令ステップ数も小さい。一方、転送予約情報#2において、転送するデータが記憶されている連続領域のサイズは大きいが、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスまでの命令ステップ数も大きい。このため、図19のステップS65にて算出されるアクセス間隔Daの値が何れも同程度に小さくなり、ステップS66において、何れの転送予約情報のアクセス間隔Daも同程度であると判断される。
図24では、転送予約情報#1において、転送するデータが記憶されている連続領域のサイズは大きいが、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスまでの命令ステップ数もとても大きい。また、転送予約情報#2においても、転送するデータが記憶されている連続領域のサイズは非常に大きいが、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスまでの命令ステップ数も非常に大きい。このため、図19のステップS65にて算出されるアクセス間隔Daの値が何れも同程度に大きくなり、ステップS66において、何れの転送予約情報のアクセス間隔Daも同程度であると判断される。
図22から図24の何れの場合においても、転送予約情報#1に対して転送予約情報#2のアクセス経過時間R5が短い場合、図19のステップS67にて、アクセス経過時刻R5の長い転送予約情報#1が最優先転送予約情報として決定される。反対に、転送予約情報#1に対して転送予約情報#2のアクセス経過時間R5が長い場合、図19のステップS67にて、アクセス経過時間R5の長い転送予約情報#2が最優先転送予約情報として決定される。
上記のように、アクセス経過時間R5が最も大きい転送予約情報を最優先転送予約情報として決定することで、優先度決定部247が算出したアクセス間隔Daが同程度の複数の転送予約情報に対しても、キャッシュメモリ110から開放される可能性の高い連続領域の開放を防ぎ、キャッシュメモリコントローラ200の処理を高速化することができる。
図23に示されているように、算出されるアクセス間隔Daがともに小さく、転送予約情報#1と転送予約情報#2に含まれる、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスPROC1とPROC2との差分が大きい場合には、優先度決定部247は、アクセス経過時刻R5が最も大きい転送予約情報を最優先転送予約情報として決定していたが、これに限定されるものではない。例えば、アクセス間隔Daが予め設定された第1の閾値以下であり、さらに、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスPROC1とPROC2との差分が、予め設定された第2の閾値以上である場合には、優先度決定部247は、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスが最も小さい転送予約情報を最優先転送予約情報と決定してもよい。これにより、キャッシュメモリ110がデータを不要に格納せず、キャッシュメモリ110の浪費を防ぐことができる。
図24に示されているように、転送予約情報#1と比較して、転送予約情報#2において、転送するデータが記憶されている連続領域のサイズと、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスまでの命令ステップ数とが共に大きく、図19のステップS65で算出されるアクセス間隔Daの値が何れも同程度に大きい場合においても、優先度決定部247は、アクセス経過時間R5が最も大きい転送予約情報を最優先転送予約情報として決定していたが、これに限定されるものではない。例えば、算出されたアクセス間隔Daが、予め設定された第1の閾値以上の場合には、優先度決定部247は、アクセス間隔Daが第1の閾値以下となるか、次の転送予約情報が入力されるまで待機してもよい。これにより、先に受け取った転送予約情報よりもアクセス間隔Daが小さい転送予約情報を受け取った場合においても、優先度決定部247は、アクセス間隔Daの小さい転送予約情報を優先して処理することができ、キャッシュメモリ110を効率的に使用できる。
上記では、優先度決定部247のメモリ247aに記憶された転送予約情報が2つである場合の例について説明したが、実際にはこれに限らない。メモリ247aに転送予約情報が3つ以上記憶されている場合であっても、上記と同様にアクセス間隔Daとアクセス経過時間とから、最優先転送予約情報を決定することで、キャッシュメモリ110の浪費を防ぐことができる。
図25は、優先度決定部247が行う処理のタイミングチャートの一例を示す概略図である。図25は、処理切換部141から進行アドレスA3及び命令コマンドC3が入力されるタイミングと、最優先転送予約情報が決定されるタイミングと、優先度決定部247が処理切換部141から受け取った複数の転送予約情報に基づき、転送するデータのうち残りのデータのサイズが切り替わるタイミングとを示す。
時刻t20において、処理切換部141から進行アドレスA3(1fc00fff)及び転送予約コマンドC3(TRI#1)が入力されると、優先度決定部247は、転送予約コマンドC3に基づいて、転送予約情報(TR#1)をメモリ247aに記憶させる。そして、優先度決定部247は、最優先転送予約情報を決定する。時刻t20の段階では、優先度決定部247が受け取っている転送予約情報はTR#1のみのため、優先度決定部247は、TR#1を最優先転送予約情報として決定する。そして、優先度決定部247は、その連続領域の先頭アドレスAmとアクセス間隔Daとを予約処理部243へ出力し、予約処理が開始される。予約処理部243が、TR#1で指定された転送するデータが記憶されている連続領域のサイズH1*V1のうち、1ライン分の転送を完了し、予約転送状況信号V1が転送予約受付可能状態(V1=H)となる時刻t24まで、優先度決定部247は処理を待機する。
時刻t21〜t23において、処理切換部141から優先度決定部247へ入力される進行アドレスA3及び転送予約コマンドC3が更新される。優先度決定部247は、時刻t21において入力される転送予約コマンドC3(TRI#2)に基づいて、転送予約情報(TR#2)をメモリ247aに記憶させ、また、時刻t23において入力される転送予約コマンドC3(TRI#3)に基づいて、転送予約情報(TR#3)をメモリ247aに記憶させる。しかしながら、予約処理部243からの予約転送状況信号V1が転送予約受付不可状態(V1=L)のため、優先度決定部247は処理を待機する。
次に時刻t24において、予約処理部243からの予約転送状況信号V1が転送予約受付可能状態(V1=H)となるため、優先度決定部247は、最優先転送予約情報の決定処理を開始する。
時刻t25において、優先度決定部247は、最優先転送予約情報をTR#3と決定し、その連続領域の先頭アドレスAmとアクセス間隔Daを予約処理部243へ出力し、予約処理が開始される。
時刻t27において、TR#3における1ライン分の連続領域の転送が完了し、予約処理部243からの予約転送状況信号V1が転送予約受付可能状態(V1=H)となったため、時刻t24と同様に、優先度決定部247は、最優先転送予約情報の決定処理を開始する。ここでは、TR#2が最優先転送予約情報として決定される。
以降、同様に、各時刻において予約処理部243からの予約転送状況信号V1が転送予約受付可能状態(V1=H)となる度に、優先度決定部247は、最優先転送予約情報を決定し、予約処理部243へ最優先転送予約情報の連続領域の先頭アドレスAmとアクセス間隔Daとを出力する。そして、優先度決定部247は、予約処理部243からの予約転送状況信号V1が転送予約受付不可状態(V1=L)ならば処理を待機する。
最後に時刻t31において、優先度決定部247のメモリ247aが記憶している最後の転送予約情報(TR#2)の転送が完了すると、処理切換部141から転送予約コマンドC3が入力されるまで、予約処理部243からの予約転送状況信号V1は転送予約受付可能状態(V1=H)を保持し、優先度決定部247は処理を待機する。
上記のように、優先度決定部247は、転送予約情報に従って、予め設定された転送単位サイズである1ライン分の転送を完了する毎に、メモリ247aに記憶されている全転送予約情報から最優先転送予約情報を決定し、各連続領域を参照する命令群が実行される前までに転送を完了することで、アクセスマスタ1へのデータ転送効率を向上することができる。
次に、データ処理部240の予約処理部243が行う処理の流れについて、フローチャートを用いて説明する。
図26は、予約処理部243が、転送予約コマンドC3に基づきデータを転送する際の処理を示すフローチャートである。予約処理部243は、ヒット検出部130からキャッシュヒット又はキャッシュミスを示すヒット検出結果R2と、優先度決定部247から転送するデータが記憶されている連続領域の先頭アドレスAmとメインメモリへのアクセス間隔Daとが入力されると、処理を開始する。
まず、予約処理部243は、先頭アドレスAmに対応するデータがキャッシュメモリ110に存在するか判定する(S80)。ここで、先頭アドレスAmに対応するデータは、先頭アドレスAmから記憶されている転送単位長のデータである。予約処理部243は、ヒット検出部130からヒット検出結果R2により、この判定を行う。そして、先頭アドレスAmに対応するデータがキャッシュメモリ110に存在しない場合(S80:No)には、そのデータをメインメモリ10からキャッシュメモリへ転送する必要があるため、予約処理部243は、ステップS81に処理を進める。一方、先頭アドレスAmに対応するデータがキャッシュメモリ110に存在する場合(S80:Yes)には、そのデータをメインメモリ10からキャッシュメモリ110へ転送する必要がないため、予約処理部243は、そのデータを転送せずに、ステップS82に処理を進める。
ステップS81では、予約処理部243は、優先度決定部247から入力されたアクセス間隔Ddで、メインメモリ10からキャッシュメモリ110へデータの転送を行う命令をメインメモリアクセス調停部146に与える。転送を行う命令を受けたメインメモリアクセス調停部146は、メインメモリ10から、転送対象となるデータを読み出し、予約処理部243に与える。予約処理部243は、与えられたデータをキャッシュメモリ調停部145に与えて、キャッシュメモリ110に書き込ませる。なお、これ以降のメモリ管理部120の処理は、実施の形態1と同様であるため、説明を省略する。
次に、予約処理部243は、転送完了サイズが、転送単位である1ラインのサイズ以上かどうか判定する(S82)。転送完了サイズが1ラインサイズ未満の場合(S82:No)には、処理はステップS80に戻り、転送完了サイズが1ラインサイズ以上の場合(S82:Yes)には、処理はS83に進む。
ステップS83では、予約処理部243は、予約転送状況信号V1を、転送するデータが記憶されている連続領域の先頭アドレスAmから1ライン分の転送を完了したことを示す、転送予約受付可能状態(V1=H)に設定して優先度決定部247へ出力し、予約処理を終了する。
以上のように、予約処理部243は、優先度決定部247から入力された転送予約情報のうち1ラインずつ転送することで、キャッシュメモリ110を効率良く使用できる。
なお、以上に記載した予約処理部243の処理の流れでは、転送予約コマンドC3にて指定された転送するデータが記憶されている連続領域のうち、1ラインずつ転送する例を説明したが、このような例に限定されるものではない。例えば、優先度決定部247は、処理切換部141から優先度決定部247に進行アドレスA3が入力される度に最優先転送予約情報を決定して予約処理部243へ出力し、予約処理部243は、それに従い転送予約処理を行ってもよい。このような場合には、メインメモリ10の行(Row)アドレスが異なる領域にアクセスする度に発生するプリチャージ時間を考慮してアクセス間隔Daを算出する必要がある。これにより、アクセス間隔Daが小さい複数の転送予約情報に対しても、メインメモリ10からキャッシュメモリ110への転送ができ、キャッシュヒット率を向上させることができる。
ここで、プリチャージ時間を考慮したアクセス間隔Daの算出方法の一例を説明する。
まず、優先度決定部247は、プリチャージ時間の考慮が必要かどうかを判定する。プリチャージ時間は、メインメモリ10上のRowアドレスが異なる場合に発生する。このため、優先度決定部247は、前回決定した最優先転送予約情報にて転送したデータの連続領域のアドレスをメモリ247aに記憶しておき、Rowアドレスの比較をすることで、前回転送対象となった転送予約情報のRowアドレスと、今回転送対象となった転送予約情報のRowアドレスとが異なるかどうかを判定する。Rowアドレスが異なる場合、優先度決定部247は、プリチャージ時間を考慮する。アクセス間隔Daは、転送単位サイズ当たりの転送に要する命令ステップ数であるため、プリチャージ時間Tpri(Cycle)を命令ステップ数に変換する。プリチャージ時間Tpriの命令ステップ数への変換は、下記の(3)式により行われる。
Figure 2014030387
ここで式(3)では、優先度決定部247は、予めタイマーを保持し、計測した1命令ステップの実行にかかるサイクル数Tosを計測して、その値をプリチャージ時間Tpriの変換に使用する。また、1命令ステップの実行にかかるサイクル数Tosは、前回の命令から今回の命令までにかかったサイクル数、又は、今回の命令までの、1命令の実行にかかったサイクル数の平均値とする。
そして、プリチャージ時間を考慮したアクセス間隔Dapは、(3)式で算出される変換後プリチャージSpriを用いて、(4)式で算出される。
Figure 2014030387
また、予約処理部243は、転送予約情報で示された、転送するデータが記憶されている連続領域のサイズH*Vを転送単位としてもよい。この場合、優先度決定部247から予約処理部243へ、転送するデータが記憶されている連続領域のサイズH*Vを与え、転送が完了したら予約転送状況信号V1を転送予約受付可能状態(V1=H)とする。これにより、最優先転送予約情報を決定する処理を少なくでき、最優先転送予約情報の決定に必要な計算時間を短縮し、メインメモリ10からキャッシュメモリ110へのデータ転送効率を向上することができる。
図27は、予約処理部243の転送単位を、転送予約情報で示された、転送するデータが記憶されている連続領域のサイズH*Vとした場合の、優先度決定部247が行う処理のタイミングチャートの一例を示す概略図である。図27は、処理切換部141から進行アドレスA3及び命令コマンドC3が入力されるタイミングと、最優先転送予約情報が決定されるタイミングと、優先度決定部247が処理切換部141から受け取った複数の転送予約情報に基づき、転送するデータが記憶されている連続領域のうち残りの連続領域のサイズが切り替わるタイミングとを示す。
時刻t30において、処理切換部141から進行アドレスA3(1fc00fff)及び転送予約コマンドC3(TRI#1)が入力されると、優先度決定部247は、転送予約コマンドC3に基づいて、転送予約情報(TR#1)をメモリ247aに記憶させる。そして、優先度決定部247は、最優先転送予約情報を決定する。時刻t30の段階では、優先度決定部247が受け取っている転送予約情報はTR#1のみのため、優先度決定部247は、TR#1を最優先転送予約情報として決定する。そして、優先度決定部247は、TR#1で示される、転送するデータが記憶されている連続領域の先頭アドレスPROC1と、転送するデータが記憶されている連続領域のサイズH1*V1と、算出されたアクセス間隔Daとを、予約処理部243へ出力し、予約処理が開始される。
時刻t31〜t35において、処理切換部141から優先度決定部247へ入力される進行アドレスA3及び転送予約コマンドC3が更新される。優先度決定部247は、時刻t31において入力される転送予約コマンドC3(TRI#2)に基づいて、転送予約情報(TR#2)をメモリ247aに記憶させ、また、時刻t33において入力される転送予約コマンドC3(TRI#3)に基づいて、転送予約情報(TR#3)をメモリ247aに記憶させる。しかしながら、予約処理部243からの予約転送状況信号V1が転送予約受付不可状態(V1=L)のため、優先度決定部247は処理を待機する。
時刻t35において、予約処理部243から入力される予約転送状況信号V1が転送予約受付可能状態(V1=H)となるため、優先度決定部247は、次の最優先転送予約情報を決定する。
時刻t36において、優先度決定部247は、最優先転送予約情報としてTR#3を決定する。そして、優先度決定部247は、最優先転送予約情報として決定されたTR#3で示される、転送するデータが記憶されている連続領域の先頭アドレスPROC3及び転送するデータが記憶されている連続領域のサイズH3*V3と、算出されたアクセス間隔Daと、を予約処理部243へ出力し、予約処理が開始される。そして、優先度決定部247は、予約処理部243から入力される予約転送状況信号V1が転送予約受付可能状態(V1=H)となるまで処理を待機する。
以降、上記と同様に、時刻t37において、優先度決定部247は、予約転送状況信号V1が転送予約受付可能状態(V1=H)となると、最優先転送予約情報を再度決定し、決定した最優先転送予約情報である転送予約情報#2で示される、転送するデータが記憶されている連続領域の先頭アドレスPROC2と、転送するデータが記憶されている連続領域のサイズH2*V2と、算出されたアクセス間隔Daとを、予約処理部243へ出力する。そして、予約処理部243から入力される予約転送状況信号V1が転送予約受付可能状態(V1=H)となるまで処理を待機する。
以上に記載されたアクセス管理部248では、前回アクセスされてから経過した時間をアクセス経過時間Tdとしてメモリ248aに記憶しているが、これに限定されるものではない。例えば、前回アクセスされてから経過した時間が、キャッシュメモリ110の各キャッシュラインのうち、開放候補を決定するLRU方式で設定されている時間を経過した場合、アクセス管理部248は、対応するアクセス経過時間Tdをリセットしてもよい。これにより、キャッシュメモリ110から開放される可能性がより高いキャッシュラインに格納されているメインメモリ10上の連続領域に記憶されているデータを転送する転送予約情報を優先して予約処理部243へ出力できる。従って、開放処理部144が開放処理を行う回数を減らし、キャッシュメモリコントローラ200の処理を高速化することができる。
以上に記載されたキャッシュメモリコントローラ200は、アクセスマスタ1が1つの場合について説明したが、このような例に限定されるものではない。アクセスマスタ1はキャッシュメモリコントローラ200に、複数接続されていてもよい。図28は、アクセスマスタ1#1及びアクセスマスタ1#2の2台が、キャッシュメモリコントローラ300に接続されている例を示す概略図である。
キャッシュメモリコントローラ300に接続されるアクセスマスタ1が複数の場合、処理切換部341は、メモリ341a内に、アクセスマスタ1毎の進行アドレスA3を記憶する。従って、接続されているアクセスマスタ1#1又は1#2から入力された命令アドレスA1#1又はA1#2が、図7に示されている命令領域190に含まれるアドレスの場合、処理切換部341は、メモリ341a内の、命令アドレスを入力したアクセスマスタ1#1又は1#2の進行アドレスA3として記憶し、又は、既にそのアクセスマスタ1#1又は1#2の進行アドレスA3が記憶されている場合には、その値を更新する。そして、処理切換部341は、進行アドレスA3として記憶された命令アドレスと、そのアクセスマスタ1#1又は1#2を示す、アクセスマスタ毎に予め設定されたアクセスマスタ番号Mnとを、優先度決定部347へ出力する。さらに、アクセスマスタ1#1又は1#2から入力された命令コマンドC1#1又はC1#2が、リード及びライトの何れでもない場合、命令コマンドC1#1又はC1#2を、転送予約コマンドC3として優先度決定部347へ出力する。
次に、優先度決定部347は、処理切換部341から転送予約コマンドC3と進行アドレスA3とアクセスマスタ番号Mnとを受け取る。そして、優先度決定部347は、受け取ったアクセスマスタ番号Mnと、受け取った転送予約コマンドC3で示される、アクセスマスタ1が参照する連続領域の先頭アドレスMM_ADDR、この連続領域のサイズH*V及びこの連続領域を参照する命令群である関数の先頭アドレスPROCと、をメモリ347a(転送予約記憶部)に記憶させる。さらに、優先度決定部347は、受け取ったアクセスマスタ番号Mnと、受け取った進行アドレスA3と、をメモリ347b(進行アドレス記憶部)に記憶させる。優先度決定部347は、メモリ347bに記憶されている各アクセスマスタ1の進行アドレスを基にアクセス間隔Daを算出し、最優先転送予約情報を決定する。
図29は、優先度決定部347のメモリ347aに記憶されている転送予約管理情報301を示す概略図である。転送予約管理情報301は、到着順欄301aと、アクセスマスタ番号欄301fと、参照命令群先頭アドレス欄301bと、連続領域先頭アドレス欄301cと、転送残サイズ欄301dと、転送状況欄301eとを有する。なお、図29における到着順欄301a、参照命令群先頭アドレス欄301b、連続領域先頭アドレス欄301c、転送残サイズ欄301d及び転送状況欄301eは、図17における到着順欄201a、参照命令群先頭アドレス欄201b、連続領域先頭アドレス欄201c、転送残サイズ欄201d及び転送状況欄201eと同様であるため、説明を省略する。
アクセスマスタ番号欄301fは、処理切換部341から与えられたアクセスマスタ番号Mnを格納する。
図30は、優先度決定部347のメモリ347bに記憶されている進行アドレス管理情報303を示す概略図である。進行アドレス管理情報は、アクセスマスタ番号欄303aと、進行アドレス欄303bとを有する。
アクセスマスタ番号欄303aは、処理切換部341から与えられたアクセスマスタ番号Mnを格納する。
進行アドレス欄303bは、処理切換部341から与えられた進行アドレスA3を格納する。
以上のように、キャッシュメモリコントローラ300に接続された複数のアクセスマスタ1から入力される複数の転送予約情報の優先度を決定し、各アクセスマスタ1のプログラムの進行状況に合わせてメインメモリ10からキャッシュメモリ110へのデータ転送を可能とすることで、キャッシュメモリコントローラ300に複数のアクセスマスタ1が接続されるシステムを設計することができる。このため、構築するシステムの規模を拡大することができる。
以上に記載されたキャッシュメモリコントローラ100〜300では、転送予約情報が示す、転送するデータが記憶されている連続領域としてメインメモリ10上のデータ領域を指定していたが、これに限定されるものではない。転送するデータが記憶されている連続領域は、メインメモリ10上の命令領域としてもよい。このような場合には、転送予約情報で指定する、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスPROCは、転送するメインメモリ10上の命令領域に属する連続領域の命令が実行される直前の命令のアドレスとすればよい。これにより、例えばアクセスマスタ1が実行する命令が分岐命令の場合においても、分岐先の命令群を、それらが実行される前にキャッシュメモリ110へ転送でき、アクセスマスタ1の動作速度の低下を防止することができる。
以上に記載された処理切換部141、341は、接続されているアクセスマスタ1からの命令コマンドC1を解析することで、リード及びライトの何れかであるかを判断し、処理を切り換えていたが、これに限定されるものではない。例えば、アクセスマスタ1から入力される命令コマンドC1がリード及びライトの何れかであり、かつ、このような命令コマンドC1に優先度決定部247、347のメモリ247a、347aのアドレスが添付されている場合には、処理切換部141、341は、入力されるアドレスをデコードすることにより、処理を切り換えてもよい。この場合、命令コマンドC1に添付されているアドレスがメインメモリ10上のアドレスではなく、優先度決定部247、347のメモリ247a、347aのアドレスを示す場合には、処理切換部141、341は、転送予約情報であると判断することができる。これにより、アクセスマスタ1として汎用的なCPU等のハードウェアの使用や、アクセスマスタ1とキャッシュメモリコントローラ100〜300との接続に、例えば、AMBA AXI(Advanced eXtensible Interface)等の汎用的なバスを使用することができ、キャッシュメモリコントローラ100〜300の汎用性を向上できる。
以上に記載された予約処理部143、243では、ヒット検出結果R2がキャッシュミスである場合には、そのアドレスのデータをメインメモリ10からキャッシュメモリ110に転送し、格納先のキャッシュラインを示す予約領域情報I1を開放処理部144に与えていたが、これに限定されるものではない。例えば、ヒット検出結果R2がキャッシュヒットである場合においても、格納先のキャッシュラインを示す予約領域情報I1を開放処理部144に与えてもよい。この場合、開放処理部144は、予約領域情報I1を受け取ると、タグメモリ121に記憶されている、予約領域情報I1が示すキャッシュラインのアクセスフラグFaを、アクセスマスタ1がアクセスしていない「無効」を示すよう設定するとともに、アクセスフラグFaが1回も有効になっていないことを示すように予約領域アクセスフラグFraを設定する。これにより、転送予約情報で示される、転送するデータが記憶されている連続領域を参照する命令群をアクセスマスタ1が実行するまでに時間がかかった場合でも、そのキャッシュラインを開放することなく、確実にキャッシュヒットすることができる。
1 アクセスマスタ、 10 メインメモリ、 100,200,300 キャッシュメモリコントローラ、 110 キャッシュメモリ、 120 メモリ管理部、 130 ヒット検出部、 140,240,340 データ処理部、 141,341 処理切換部、 142 要求処理部、 143,243 予約処理部、 144 開放処理部、 145 キャッシュメモリアクセス調停部、 146 メインメモリアクセス調停部、 247,347 優先度決定部、 248 アクセス管理部。
本発明の第1の態様に係るキャッシュメモリコントローラは、第1のプログラムを格納する命令領域及び当該第1のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリと、前記第1のプログラムに含まれている命令を実行するアクセスマスタと、に接続されたキャッシュメモリコントローラであって、前記メインメモリの一部のデータを格納するキャッシュメモリと、前記特定の命令の先頭アドレス、及び、前記特定の命令で利用されるデータのサイズを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数と、前記特定の命令で利用されるデータのサイズのうち、前記キャッシュメモリに転送されていない残りのサイズとから、転送単位毎の残りの命令ステップ数を示すアクセス間隔を算出し、当該算出されたアクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送するデータ処理部と、を備えることを特徴とする。
本発明の第2の態様に係るキャッシュメモリコントローラは、第1のプログラムを格納する命令領域及び当該第1のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリと、前記第1のプログラムに含まれている命令を実行するアクセスマスタと、に接続されたキャッシュメモリコントローラであって、前記メインメモリの一部のデータを格納するキャッシュメモリと、前記特定の命令の先頭アドレスを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出し、当該算出されたアクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送するとともに、前記キャッシュメモリに格納されたデータのうち、前記アクセスマスタからアクセスされていない時間が最も長く、かつ、前記アクセスマスタが1回以上アクセスしたことのあるデータを、前記キャッシュメモリから解放するデータ処理部と、を備えることを特徴とする。
本発明の第3の態様に係るキャッシュメモリコントローラは、特定の命令及び当該特定の命令の先頭アドレスを有する第1の転送予約命令を含む第1のプログラムを格納する命令領域並びに当該第1のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリと、前記第1のプログラムに含まれている命令を実行するアクセスマスタと、に接続されたキャッシュメモリコントローラであって、前記メインメモリの一部のデータを格納するキャッシュメモリと、前記アクセスマスタが前記特定の命令よりも先に前記第1の転送予約命令を実行することで、前記アクセスマスタから前記特定の命令の先頭アドレス、及び、前記特定の命令で利用されるデータのサイズを含む転送予約情報を取得し、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数と、前記特定の命令で利用されるデータのサイズのうち、前記キャッシュメモリに転送されていない残りのサイズとから、転送単位毎の残りの命令ステップ数を示すアクセス間隔を算出し、当該算出されたアクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送するデータ処理部と、を備えることを特徴とする。
本発明の第4の態様に係るキャッシュメモリコントローラは、第1のプログラムを格納する命令領域及び当該第1のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリと、前記第1のプログラムに含まれている命令を実行するアクセスマスタと、に接続されたキャッシュメモリコントローラであって、前記メインメモリの一部のデータを格納するキャッシュメモリと、前記特定の命令の先頭アドレスを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出するとともに、複数の前記転送予約情報を処理する場合には、前記アクセス間隔に基づいて、最優先の転送予約情報を決定し、当該決定された最優先の転送予約情報の前記アクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送するデータ処理部と、を備えることを特徴とする。
本発明の第5の態様に係るキャッシュメモリコントローラは、第1のプログラムを格納する命令領域及び当該第1のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリと、前記第1のプログラムに含まれている命令を実行するアクセスマスタと、に接続されたキャッシュメモリコントローラであって、前記メインメモリの一部のデータを格納するキャッシュメモリと、前記特定の命令の先頭アドレス、及び、前記特定の命令で利用されるデータのサイズを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数と、前記特定の命令で利用されるデータのサイズのうち、前記キャッシュメモリに転送されていない残りのサイズとから、転送単位毎の残りの命令ステップ数を示すアクセス間隔を算出するとともに、複数の前記転送予約情報を処理する場合には、前記アクセス間隔に基づいて、最優先の転送予約情報を決定し、当該決定された最優先の転送予約情報の前記アクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送するデータ処理部と、を備えることを特徴とする。
本発明の第1の態様に係るキャッシュメモリコントロール方法は、第1のプログラムを格納する命令領域及び当該第1のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリから、前記第1のプログラムに含まれている命令を実行するアクセスマスタに、キャッシュメモリを用いて前記特定の命令で利用されるデータを提供するキャッシュメモリコントロール方法であって、前記特定の命令の先頭アドレス、及び、前記特定の命令で利用されるデータのサイズを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数と、前記特定の命令で利用されるデータのサイズのうち、前記キャッシュメモリに転送されていない残りのサイズとから、転送単位毎の残りの命令ステップ数を示すアクセス間隔を算出し、当該算出されたアクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送する転送過程と、前記アクセスマスタが前記特定の命令を実行する際に、前記キャッシュメモリから前記特定の命令で利用されるデータを前記アクセスマスタに提供する提供過程と、を有することを特徴とする。
本発明の第2の態様に係るキャッシュメモリコントロール方法は、第1のプログラムを格納する命令領域及び当該第1のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリから、前記第1のプログラムに含まれている命令を実行するアクセスマスタに、キャッシュメモリを用いて前記特定の命令で利用されるデータを提供するキャッシュメモリコントロール方法であって、前記特定の命令の先頭アドレスを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出し、当該算出されたアクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送する転送過程と、前記キャッシュメモリに格納されたデータのうち、前記アクセスマスタからアクセスされていない時間が最も長く、かつ、前記アクセスマスタが1回以上アクセスしたことのあるデータを、前記キャッシュメモリから解放するデータ解放過程と、前記アクセスマスタが前記特定の命令を実行する際に、前記キャッシュメモリから前記特定の命令で利用されるデータを前記アクセスマスタに提供する提供過程と、を有することを特徴とする。
本発明の第3の態様に係るキャッシュメモリコントロール方法は、特定の命令及び当該特定の命令の先頭アドレスを有する第1の転送予約命令を含む第1のプログラムを格納する命令領域並びに当該第1のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリから、前記第1のプログラムに含まれている命令を実行するアクセスマスタに、キャッシュメモリを用いて前記特定の命令で利用されるデータを提供するキャッシュメモリコントロール方法であって、前記アクセスマスタが前記特定の命令よりも先に前記第1の転送予約命令を実行することで、前記アクセスマスタから前記特定の命令の先頭アドレス、及び、前記特定の命令で利用されるデータのサイズを含む転送予約情報を取得し、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数と、前記特定の命令で利用されるデータのサイズのうち、前記キャッシュメモリに転送されていない残りのサイズとから、転送単位毎の残りの命令ステップ数を示すアクセス間隔を算出し、当該算出されたアクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送する転送過程と、前記アクセスマスタが前記特定の命令を実行する際に、前記キャッシュメモリから前記特定の命令で利用されるデータを前記アクセスマスタに提供する提供過程と、を有することを特徴とする。
本発明の第4の態様に係るキャッシュメモリコントロール方法は、第1のプログラムを格納する命令領域及び当該第1のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリから、前記第1のプログラムに含まれている命令を実行するアクセスマスタに、キャッシュメモリを用いて前記特定の命令で利用されるデータを提供するキャッシュメモリコントロール方法であって、前記特定の命令の先頭アドレスを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出するとともに、複数の前記転送予約情報を処理する場合には、前記アクセス間隔に基づいて、最優先の転送予約情報を決定し、当該決定された最優先の転送予約情報の前記アクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送する転送過程と、前記アクセスマスタが前記特定の命令を実行する際に、前記キャッシュメモリから前記特定の命令で利用されるデータを前記アクセスマスタに提供する提供過程と、を有することを特徴とする。
本発明の第5の態様に係るキャッシュメモリコントロール方法は、第1のプログラムを格納する命令領域及び当該第1のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリから、前記第1のプログラムに含まれている命令を実行するアクセスマスタに、キャッシュメモリを用いて前記特定の命令で利用されるデータを提供するキャッシュメモリコントロール方法であって、前記特定の命令の先頭アドレス、及び、前記特定の命令で利用されるデータのサイズを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数と、前記特定の命令で利用されるデータのサイズのうち、前記キャッシュメモリに転送されていない残りのサイズとから、転送単位毎の残りの命令ステップ数を示すアクセス間隔を算出するとともに、複数の前記転送予約情報を処理する場合には、前記アクセス間隔に基づいて、最優先の転送予約情報を決定し、当該決定された最優先の転送予約情報の前記アクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送する転送過程と、前記アクセスマスタが前記特定の命令を実行する際に、前記キャッシュメモリから前記特定の命令で利用されるデータを前記アクセスマスタに提供する提供過程と、を有することを特徴とする。
図24に示されているように、転送予約情報#1と比較して、転送予約情報#2において、転送するデータが記憶されている連続領域のサイズと、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスまでの命令ステップ数とが共に大きく、図19のステップS65で算出されるアクセス間隔Daの値が何れも同程度に大きい場合においても、優先度決定部247は、アクセス経過時間R5が最も大きい転送予約情報を最優先転送予約情報として決定していたが、これに限定されるものではない。例えば、算出されたアクセス間隔Daが、予め設定された第1の閾値より大きい場合には、優先度決定部247は、アクセス間隔Daが第1の閾値以下となるか、次の転送予約情報が入力されるまで待機してもよい。これにより、先に受け取った転送予約情報よりもアクセス間隔Daが小さい転送予約情報を受け取った場合においても、優先度決定部247は、アクセス間隔Daの小さい転送予約情報を優先して処理することができ、キャッシュメモリ110を効率的に使用できる。

Claims (36)

  1. 第1のプログラムを格納する命令領域及び当該第1のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリと、前記第1のプログラムに含まれている命令を実行するアクセスマスタと、に接続されたキャッシュメモリコントローラであって、
    前記メインメモリの一部のデータを格納するキャッシュメモリと、
    前記特定の命令の先頭アドレスを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出し、前記アクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送するデータ処理部と、を備えること
    を特徴とするキャッシュメモリコントローラ。
  2. 前記第1のプログラムは、前記特定の命令の先頭アドレスを有する第1の転送予約命令を含み、
    前記アクセスマスタが前記特定の命令よりも先に前記第1の転送予約命令を実行することで、前記データ処理部は、前記アクセスマスタから前記転送予約情報を取得し、前記アクセスマスタが前記特定の命令を実行する前に、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送すること
    を特徴とする請求項1に記載のキャッシュメモリコントローラ。
  3. 前記データ処理部は、前記アクセスマスタで実行中の命令のアドレスが更新される毎に、前記アクセス間隔を算出すること
    を特徴とする請求項2に記載のキャッシュメモリコントローラ。
  4. 前記データ処理部は、前記第1の転送予約命令に従って前記キャッシュメモリに格納されたデータの内、前記アクセスマスタからアクセスされていない時間が最も長く、かつ、前記アクセスマスタが1回以上アクセスしたことのあるデータを、前記キャッシュメモリから開放すること
    を特徴とする請求項2又は3に記載のキャッシュメモリコントローラ。
  5. 前記第1の転送予約命令を示すコードを含む第2のプログラムを、前記第1のプログラムに変換するプログラム変換部をさらに備えること
    を特徴とする請求項2から4の何れか1項に記載のキャッシュメモリコントローラ。
  6. 前記特定の命令を示すコードを含む第2のプログラムを、前記第1のプログラムに変換するプログラム変換部をさらに備え、
    前記プログラム変換部は、前記特定の命令を示すコードを解析して前記第1の転送予約命令を生成すること
    を特徴とする請求項2から4の何れか1項に記載のキャッシュメモリコントローラ。
  7. 前記データ処理部は、前記第1のプログラムを解析することにより、前記転送予約情報を生成し、前記アクセスマスタが前記特定の命令を実行する前に、前記生成された転送予約情報に従って、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送すること
    を特徴とする請求項1に記載のキャッシュメモリコントローラ。
  8. 前記データ処理部は、前記アクセスマスタから受け取った複数の前記転送予約情報のうち、前記アクセス間隔に基づいて、最優先の転送予約情報を決定すること
    を特徴とする請求項2から7の何れか1項に記載のキャッシュメモリコントローラ。
  9. 前記データ処理部は、前記アクセスマスタから受け取った複数の前記転送予約情報のうち、前記アクセス間隔と、前記アクセスマスタから前記メインメモリにおいて予め定められた複数の連続領域の各々へアクセスしていない経過時間であるアクセス経過時間とに基づいて、最優先の転送予約情報を決定すること
    を特徴とする請求項2から7の何れか1項に記載のキャッシュメモリコントローラ。
  10. 前記データ処理部は、前記アクセスマスタから受け取った複数の前記転送予約情報のうち、前記アクセス間隔が最も小さい転送予約情報を、最優先の転送予約情報と決定すること
    を特徴とする請求項8又は9に記載のキャッシュメモリコントローラ。
  11. 前記データ処理部は、前記アクセスマスタから受け取った複数の前記転送予約情報に対して算出された前記アクセス間隔が全て同程度である場合には、
    前記アクセス経過時間が最も長い連続領域に格納されているデータにアクセスする転送予約情報を、最優先の転送予約情報と決定すること
    を特徴とする請求項8又は9に記載のキャッシュメモリコントローラ。
  12. 前記データ処理部は、前記アクセスマスタから受け取った複数の前記転送予約情報に対して算出された前記アクセス間隔が予め設定された第1の閾値以下であり、かつ、前記転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスの内、最も小さい先頭アドレスと、その次に小さい先頭アドレスとの差分が予め設定された第2の閾値以上である場合には、前記転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスが最も小さい転送予約情報を、最優先の転送予約情報と決定すること
    を特徴とする請求項8又は9に記載のキャッシュメモリコントローラ。
  13. 前記データ処理部は、前記アクセスマスタから受け取った複数の前記転送予約情報に対して算出された前記アクセス間隔が第1の閾値以上である場合には、最優先の転送予約命令を決定せず、前記アクセスマスタから受け取った複数の前記転送予約情報に対して再度算出されたアクセス間隔が前記第1の閾値以下となるまで処理を待機すること
    を特徴とする請求項8又は9に記載のキャッシュメモリコントローラ。
  14. 前記データ処理部は、決定された前記最優先の転送予約情報に従って転送される連続領域のうち、予め設定された転送単位サイズの転送を完了する毎に、再度、最優先の転送予約情報を決定すること
    を特徴とする請求項8から13の何れか1項に記載のキャッシュメモリコントローラ。
  15. 前記データ処理部は、前記アクセスマスタで実行中の命令のアドレスが進む度に、前記最優先の転送予約情報を決定すること
    を特徴とする請求項8から14の何れか1項に記載のキャッシュメモリコントローラ。
  16. 前記データ処理部は、決定された前記最優先の転送予約情報で示された、連続領域に記憶されている全てのデータの転送が完了する毎に、再度、最優先の転送予約情報を決定すること
    を特徴とする請求項8から15の何れか1項に記載のキャッシュメモリコントローラ。
  17. 前記データ処理部は、前記アクセスマスタから受け取った命令コマンドに添付されているアドレスに基づいて前記転送予約情報であることを判断し、前記転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送すること
    を特徴とする請求項2から16の何れか1項に記載のキャッシュメモリコントローラ。
  18. 前記データ処理部は、前記転送予約情報に従って転送する連続領域のデータが前記キャッシュメモリに格納されている場合には、当該データを前記キャッシュメモリから開放しないこと
    を特徴とする請求項2から17の何れか1項に記載のキャッシュメモリコントローラ。
  19. 第1のプログラムを格納する命令領域及び当該第1のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリから、前記第1のプログラムに含まれている命令を実行するアクセスマスタに、キャッシュメモリを用いて前記特定の命令で利用されるデータを提供するキャッシュメモリコントロール方法であって、
    前記特定の命令の先頭アドレスを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出し、前記アクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送する転送過程と、
    前記アクセスマスタが前記特定の命令を実行する際に、前記キャッシュメモリから前記特定の命令で利用されるデータを前記アクセスマスタに提供する提供過程と、を有すること
    を特徴とするキャッシュメモリコントロール方法。
  20. 前記第1のプログラムは、前記特定の命令の先頭アドレスを有する第1の転送予約命令を含み、
    前記アクセスマスタが前記特定の命令よりも先に前記第1の転送予約命令を実行することで、前記転送過程は、前記アクセスマスタから前記転送予約情報を取得し、前記アクセスマスタが前記特定の命令を実行する前に、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送すること
    を特徴とする請求項19に記載のキャッシュメモリコントロール方法。
  21. 前記転送過程は、前記アクセスマスタで実行中の命令のアドレスが更新される毎に、前記アクセス間隔を算出すること
    を特徴とする請求項20に記載のキャッシュメモリコントロール方法。
  22. 前記第1の転送予約命令に従って前記キャッシュメモリに格納されたデータの内、前記アクセスマスタからアクセスされていない時間が最も長く、かつ、前記アクセスマスタが1回以上アクセスしたことのあるデータを、前記キャッシュメモリから開放する開放過程をさらに有すること
    を特徴とする請求項20又は21に記載のキャッシュメモリコントロール方法。
  23. 前記第1の転送予約命令を示すコードを含む第2のプログラムを、前記第1のプログラムに変換するプログラム変換過程をさらに有すること
    を特徴とする請求項20から22の何れか1項に記載のキャッシュメモリコントロール方法。
  24. 前記特定の命令を示すコードを含む第2のプログラムを、前記第1のプログラムに変換するプログラム変換過程をさらに有し、
    前記プログラム変換過程は、前記特定の命令を示すコードを解析して前記第1の転送予約命令を生成すること
    を特徴とする請求項20から22の何れか1項に記載のキャッシュメモリコントロール方法。
  25. 前記転送過程は、前記第1のプログラムを解析することにより、前記転送予約情報を生成し、前記アクセスマスタが前記特定の命令を実行する前に、前記生成された転送予約情報に従って、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送すること
    を特徴とする請求項19に記載のキャッシュメモリコントロール方法。
  26. 前記転送過程は、前記アクセスマスタから受け取った複数の前記転送予約情報のうち、前記アクセス間隔に基づいて、最優先の転送予約情報を決定すること
    を特徴とする請求項20から25の何れか1項に記載のキャッシュメモリコントロール方法。
  27. 前記転送過程は、前記アクセスマスタから受け取った複数の前記転送予約情報のうち、前記アクセス間隔と、前記アクセスマスタから前記メインメモリにおいて予め定められた複数の連続領域の各々へアクセスしていない経過時間であるアクセス経過時間とに基づいて、最優先の転送予約情報を決定すること
    を特徴とする請求項20から25の何れか1項に記載のキャッシュメモリコントロール方法。
  28. 前記転送過程は、前記アクセスマスタから受け取った複数の前記転送予約情報のうち、前記アクセス間隔が最も小さい転送予約命令を、最優先の転送予約情報と決定すること
    を特徴とする請求項26又は27に記載のキャッシュメモリコントロール方法。
  29. 前記転送過程は、前記アクセスマスタから受け取った複数の前記転送予約情報に対して算出された前記アクセス間隔が全て同程度である場合には、
    前記アクセス経過時間が最も長い連続領域に格納されているデータにアクセスする転送予約情報を、最優先の転送予約情報と決定すること
    を特徴とする請求項26又は27に記載のキャッシュメモリコントロール方法。
  30. 前記転送過程は、前記アクセスマスタから受け取った複数の前記転送予約情報に対して算出された前記アクセス間隔が予め設定された第1の閾値以下であり、かつ、前記転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスの内、最も小さい先頭アドレスと、その次に小さい先頭アドレスとの差分が予め設定された第2の閾値以上である場合には、前記転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスが最も小さい転送予約情報を、最優先の転送予約情報と決定すること
    を特徴とする請求項26又は27に記載のキャッシュメモリコントロール方法。
  31. 前記転送過程は、前記アクセスマスタから受け取った複数の前記転送予約情報に対して算出された前記アクセス間隔が第1の閾値以上である場合には、最優先の転送予約情報を決定せず、前記アクセスマスタから受け取った複数の前記転送予約情報に対して再度算出されたアクセス間隔が前記第1の閾値以下となるまで処理を待機すること
    を特徴とする請求項26又は27に記載のキャッシュメモリコントロール方法。
  32. 前記転送過程は、決定された前記最優先の転送予約情報に従って転送される連続領域のうち、予め設定された転送単位サイズの転送を完了する毎に、再度、最優先の転送予約情報を決定すること
    を特徴とする請求項26から31の何れか1項に記載のキャッシュメモリコントロール方法。
  33. 前記転送過程は、前記アクセスマスタで実行中の命令のアドレスが進む度に、最優先の転送予約情報を決定すること
    を特徴とする請求項26から32の何れか1項に記載のキャッシュメモリコントロール方法。
  34. 前記転送過程は、決定された前記最優先の転送予約情報で示された、連続領域に記憶されている全てのデータの転送が完了すると、再度、最優先の転送予約情報を決定すること
    を特徴とする請求項26から33の何れか1項に記載のキャッシュメモリコントロール方法。
  35. 前記転送過程は、前記アクセスマスタから受け取った命令コマンドに添付されているアドレスに基づいて前記転送予約情報であることを判断し、前記転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送すること
    を特徴とする請求項20から34の何れか1項に記載のキャッシュメモリコントロール方法。
  36. 前記転送過程は、前記転送予約情報に従って転送する連続領域のデータが前記キャッシュメモリに格納されている場合には、当該データを前記キャッシュメモリから開放しないこと
    を特徴とする請求項20から35の何れか1項に記載のキャッシュメモリコントロール方法。
JP2014531518A 2012-08-22 2013-04-16 キャッシュメモリコントローラ及びキャッシュメモリコントロール方法 Expired - Fee Related JP5808495B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014531518A JP5808495B2 (ja) 2012-08-22 2013-04-16 キャッシュメモリコントローラ及びキャッシュメモリコントロール方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2012183338 2012-08-22
JP2012183338 2012-08-22
PCT/JP2013/061244 WO2014030387A1 (ja) 2012-08-22 2013-04-16 キャッシュメモリコントローラ及びキャッシュメモリコントロール方法
JP2014531518A JP5808495B2 (ja) 2012-08-22 2013-04-16 キャッシュメモリコントローラ及びキャッシュメモリコントロール方法

Publications (2)

Publication Number Publication Date
JP5808495B2 JP5808495B2 (ja) 2015-11-10
JPWO2014030387A1 true JPWO2014030387A1 (ja) 2016-07-28

Family

ID=50149707

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014531518A Expired - Fee Related JP5808495B2 (ja) 2012-08-22 2013-04-16 キャッシュメモリコントローラ及びキャッシュメモリコントロール方法

Country Status (5)

Country Link
US (1) US20150234747A1 (ja)
JP (1) JP5808495B2 (ja)
CN (1) CN104508640A (ja)
DE (1) DE112013004110T5 (ja)
WO (1) WO2014030387A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9355689B2 (en) * 2013-08-20 2016-05-31 Oracle International Corporation Detection of multiple accesses to a row address of a dynamic memory within a refresh period
US10152352B2 (en) * 2015-11-17 2018-12-11 Friday Harbor Llc Writing to contiguous memory addresses in a network on a chip architecture
WO2019043823A1 (ja) * 2017-08-30 2019-03-07 オリンパス株式会社 メモリアクセス装置、画像処理装置、および撮像装置
US11188474B2 (en) * 2018-06-19 2021-11-30 Western Digital Technologies, Inc. Balanced caching between a cache and a non-volatile memory based on rates corresponding to the cache and the non-volatile memory
JP2021196681A (ja) * 2020-06-10 2021-12-27 ルネサスエレクトロニクス株式会社 半導体装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2514115B2 (ja) * 1991-02-15 1996-07-10 株式会社グラフィックス・コミュニケーション・テクノロジーズ 画像信号符号化装置
JPH10301848A (ja) * 1997-04-28 1998-11-13 Hitachi Ltd 多重ページサイズを有する仮想記憶装置
JP4030314B2 (ja) * 2002-01-29 2008-01-09 富士通株式会社 演算処理装置
JP3973597B2 (ja) * 2003-05-14 2007-09-12 株式会社ソニー・コンピュータエンタテインメント プリフェッチ命令制御方法、プリフェッチ命令制御装置、キャッシュメモリ制御装置、オブジェクトコードの生成方法および装置
JP4374221B2 (ja) * 2003-08-29 2009-12-02 パナソニック株式会社 コンピュータシステムおよび記録媒体
US20060248520A1 (en) * 2004-02-12 2006-11-02 Teruo Kawabata Program conversion device and program conversion method
JP5076616B2 (ja) * 2007-04-24 2012-11-21 富士通株式会社 プロセッサ及びプリフェッチ制御方法
JP2009157414A (ja) * 2007-12-25 2009-07-16 Hitachi Ltd 記憶装置、情報端末装置及びデータ先読み方法
US8966121B2 (en) * 2008-03-03 2015-02-24 Microsoft Corporation Client-side management of domain name information
CN102014158B (zh) * 2010-11-29 2013-07-10 北京兴宇中科科技开发股份有限公司 一种云存储服务客户端高效细粒度数据缓存系统与方法

Also Published As

Publication number Publication date
US20150234747A1 (en) 2015-08-20
JP5808495B2 (ja) 2015-11-10
DE112013004110T5 (de) 2015-05-28
CN104508640A (zh) 2015-04-08
WO2014030387A1 (ja) 2014-02-27

Similar Documents

Publication Publication Date Title
CN108885583B (zh) 高速缓存存储器访问
JP5808495B2 (ja) キャッシュメモリコントローラ及びキャッシュメモリコントロール方法
KR101753913B1 (ko) 기계 비전 알고리즘을 위한 멀티프로세서 시스템온칩
US8656142B2 (en) Managing multiple speculative assist threads at differing cache levels
US6978350B2 (en) Methods and apparatus for improving throughput of cache-based embedded processors
CN103365793B (zh) 数据处理方法和系统
US10884739B2 (en) Systems and methods for load canceling in a processor that is connected to an external interconnect fabric
US7870307B2 (en) DMA and graphics interface emulation
US8255591B2 (en) Method and system for managing cache injection in a multiprocessor system
JP4064924B2 (ja) メモリアクセスを制御する方法及び装置
US20080189522A1 (en) Method and Apparatus for Enabling Resource Allocation Identification at the Instruction Level in a Processor System
US7363435B1 (en) System and method for coherence prediction
TWI236591B (en) Method and apparatus for determining a dynamic random access memory page management implementation
JPH08194615A (ja) 情報処理装置
TW201401168A (zh) 資料預取器以及預取資料至快取記憶體的方法
TWI514156B (zh) 推測式快取修改技術
WO2009054959A1 (en) Coherent dram prefetcher
JP2006119796A (ja) キャッシュメモリシステムおよび動画処理装置
CN104603747A (zh) 响应于分支预测表调换指令而调换分支方向历史及相关的系统和方法
US7058767B2 (en) Adaptive memory access speculation
US6892280B2 (en) Multiprocessor system having distributed shared memory and instruction scheduling method used in the same system
WO2023237084A1 (zh) 一种数据预取方法、编译方法及相关装置
US11474946B2 (en) Calculator and calculation method
US7159077B2 (en) Direct processor cache access within a system having a coherent multi-processor protocol
US20060224832A1 (en) System and method for performing a prefetch operation

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150811

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150908

R150 Certificate of patent or registration of utility model

Ref document number: 5808495

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees