(57)【要約】  第１のプログラムを格納する命令領域及び第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリ（１０）と、第１のプログラムに含まれている命令を実行するアクセスマスタ（１）と、に接続されたキャッシュメモリコントローラ（１００）であって、メインメモリ（１０）の一部のデータを格納するキャッシュメモリ（１１０）と、特定の命令の先頭アドレスを含む転送予約情報に従って、アクセスマスタ（１）が特定の命令を実行する前に、アクセスマスタ（１）で実行中の命令のアドレスから特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出し、このアクセス間隔で、特定の命令で利用されるデータをメインメモリ（１０）からキャッシュメモリ（１１０）に転送するデータ処理部（１４０）とを備える。
2014030387.tif 000002
【特許請求の範囲】
【請求項１】
第１のプログラムを格納する命令領域及び当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリと、前記第１のプログラムに含まれている命令を実行するアクセスマスタと、に接続されたキャッシュメモリコントローラであって、
前記メインメモリの一部のデータを格納するキャッシュメモリと、
前記特定の命令の先頭アドレスを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出し、前記アクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送するデータ処理部と、を備えること
を特徴とするキャッシュメモリコントローラ。
【請求項２】
前記第１のプログラムは、前記特定の命令の先頭アドレスを有する第１の転送予約命令を含み、
前記アクセスマスタが前記特定の命令よりも先に前記第１の転送予約命令を実行することで、前記データ処理部は、前記アクセスマスタから前記転送予約情報を取得し、前記アクセスマスタが前記特定の命令を実行する前に、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送すること
を特徴とする請求項１に記載のキャッシュメモリコントローラ。
【請求項３】
前記データ処理部は、前記アクセスマスタで実行中の命令のアドレスが更新される毎に、前記アクセス間隔を算出すること
を特徴とする請求項２に記載のキャッシュメモリコントローラ。
【請求項４】
前記データ処理部は、前記第１の転送予約命令に従って前記キャッシュメモリに格納されたデータの内、前記アクセスマスタからアクセスされていない時間が最も長く、かつ、前記アクセスマスタが１回以上アクセスしたことのあるデータを、前記キャッシュメモリから開放すること
を特徴とする請求項２又は３に記載のキャッシュメモリコントローラ。
【請求項５】
前記第１の転送予約命令を示すコードを含む第２のプログラムを、前記第１のプログラムに変換するプログラム変換部をさらに備えること
を特徴とする請求項２から４の何れか１項に記載のキャッシュメモリコントローラ。
【請求項６】
前記特定の命令を示すコードを含む第２のプログラムを、前記第１のプログラムに変換するプログラム変換部をさらに備え、
前記プログラム変換部は、前記特定の命令を示すコードを解析して前記第１の転送予約命令を生成すること
を特徴とする請求項２から４の何れか１項に記載のキャッシュメモリコントローラ。
【請求項７】
前記データ処理部は、前記第１のプログラムを解析することにより、前記転送予約情報を生成し、前記アクセスマスタが前記特定の命令を実行する前に、前記生成された転送予約情報に従って、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送すること
を特徴とする請求項１に記載のキャッシュメモリコントローラ。
【請求項８】
前記データ処理部は、前記アクセスマスタから受け取った複数の前記転送予約情報のうち、前記アクセス間隔に基づいて、最優先の転送予約情報を決定すること
を特徴とする請求項２から７の何れか１項に記載のキャッシュメモリコントローラ。
【請求項９】
前記データ処理部は、前記アクセスマスタから受け取った複数の前記転送予約情報のうち、前記アクセス間隔と、前記アクセスマスタから前記メインメモリにおいて予め定められた複数の連続領域の各々へアクセスしていない経過時間であるアクセス経過時間とに基づいて、最優先の転送予約情報を決定すること
を特徴とする請求項２から７の何れか１項に記載のキャッシュメモリコントローラ。
【請求項１０】
前記データ処理部は、前記アクセスマスタから受け取った複数の前記転送予約情報のうち、前記アクセス間隔が最も小さい転送予約情報を、最優先の転送予約情報と決定すること
を特徴とする請求項８又は９に記載のキャッシュメモリコントローラ。
【請求項１１】
前記データ処理部は、前記アクセスマスタから受け取った複数の前記転送予約情報に対して算出された前記アクセス間隔が全て同程度である場合には、
前記アクセス経過時間が最も長い連続領域に格納されているデータにアクセスする転送予約情報を、最優先の転送予約情報と決定すること
を特徴とする請求項８又は９に記載のキャッシュメモリコントローラ。
【請求項１２】
前記データ処理部は、前記アクセスマスタから受け取った複数の前記転送予約情報に対して算出された前記アクセス間隔が予め設定された第１の閾値以下であり、かつ、前記転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスの内、最も小さい先頭アドレスと、その次に小さい先頭アドレスとの差分が予め設定された第２の閾値以上である場合には、前記転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスが最も小さい転送予約情報を、最優先の転送予約情報と決定すること
を特徴とする請求項８又は９に記載のキャッシュメモリコントローラ。
【請求項１３】
前記データ処理部は、前記アクセスマスタから受け取った複数の前記転送予約情報に対して算出された前記アクセス間隔が第１の閾値以上である場合には、最優先の転送予約命令を決定せず、前記アクセスマスタから受け取った複数の前記転送予約情報に対して再度算出されたアクセス間隔が前記第１の閾値以下となるまで処理を待機すること
を特徴とする請求項８又は９に記載のキャッシュメモリコントローラ。
【請求項１４】
前記データ処理部は、決定された前記最優先の転送予約情報に従って転送される連続領域のうち、予め設定された転送単位サイズの転送を完了する毎に、再度、最優先の転送予約情報を決定すること
を特徴とする請求項８から１３の何れか１項に記載のキャッシュメモリコントローラ。
【請求項１５】
前記データ処理部は、前記アクセスマスタで実行中の命令のアドレスが進む度に、前記最優先の転送予約情報を決定すること
を特徴とする請求項８から１４の何れか１項に記載のキャッシュメモリコントローラ。
【請求項１６】
前記データ処理部は、決定された前記最優先の転送予約情報で示された、連続領域に記憶されている全てのデータの転送が完了する毎に、再度、最優先の転送予約情報を決定すること
を特徴とする請求項８から１５の何れか１項に記載のキャッシュメモリコントローラ。
【請求項１７】
前記データ処理部は、前記アクセスマスタから受け取った命令コマンドに添付されているアドレスに基づいて前記転送予約情報であることを判断し、前記転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送すること
を特徴とする請求項２から１６の何れか１項に記載のキャッシュメモリコントローラ。
【請求項１８】
前記データ処理部は、前記転送予約情報に従って転送する連続領域のデータが前記キャッシュメモリに格納されている場合には、当該データを前記キャッシュメモリから開放しないこと
を特徴とする請求項２から１７の何れか１項に記載のキャッシュメモリコントローラ。
【請求項１９】
第１のプログラムを格納する命令領域及び当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリから、前記第１のプログラムに含まれている命令を実行するアクセスマスタに、キャッシュメモリを用いて前記特定の命令で利用されるデータを提供するキャッシュメモリコントロール方法であって、
前記特定の命令の先頭アドレスを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出し、前記アクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送する転送過程と、
前記アクセスマスタが前記特定の命令を実行する際に、前記キャッシュメモリから前記特定の命令で利用されるデータを前記アクセスマスタに提供する提供過程と、を有すること
を特徴とするキャッシュメモリコントロール方法。
【請求項２０】
前記第１のプログラムは、前記特定の命令の先頭アドレスを有する第１の転送予約命令を含み、
前記アクセスマスタが前記特定の命令よりも先に前記第１の転送予約命令を実行することで、前記転送過程は、前記アクセスマスタから前記転送予約情報を取得し、前記アクセスマスタが前記特定の命令を実行する前に、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送すること
を特徴とする請求項１９に記載のキャッシュメモリコントロール方法。
【請求項２１】
前記転送過程は、前記アクセスマスタで実行中の命令のアドレスが更新される毎に、前記アクセス間隔を算出すること
を特徴とする請求項２０に記載のキャッシュメモリコントロール方法。
【請求項２２】
前記第１の転送予約命令に従って前記キャッシュメモリに格納されたデータの内、前記アクセスマスタからアクセスされていない時間が最も長く、かつ、前記アクセスマスタが１回以上アクセスしたことのあるデータを、前記キャッシュメモリから開放する開放過程をさらに有すること
を特徴とする請求項２０又は２１に記載のキャッシュメモリコントロール方法。
【請求項２３】
前記第１の転送予約命令を示すコードを含む第２のプログラムを、前記第１のプログラムに変換するプログラム変換過程をさらに有すること
を特徴とする請求項２０から２２の何れか１項に記載のキャッシュメモリコントロール方法。
【請求項２４】
前記特定の命令を示すコードを含む第２のプログラムを、前記第１のプログラムに変換するプログラム変換過程をさらに有し、
前記プログラム変換過程は、前記特定の命令を示すコードを解析して前記第１の転送予約命令を生成すること
を特徴とする請求項２０から２２の何れか１項に記載のキャッシュメモリコントロール方法。
【請求項２５】
前記転送過程は、前記第１のプログラムを解析することにより、前記転送予約情報を生成し、前記アクセスマスタが前記特定の命令を実行する前に、前記生成された転送予約情報に従って、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送すること
を特徴とする請求項１９に記載のキャッシュメモリコントロール方法。
【請求項２６】
前記転送過程は、前記アクセスマスタから受け取った複数の前記転送予約情報のうち、前記アクセス間隔に基づいて、最優先の転送予約情報を決定すること
を特徴とする請求項２０から２５の何れか１項に記載のキャッシュメモリコントロール方法。
【請求項２７】
前記転送過程は、前記アクセスマスタから受け取った複数の前記転送予約情報のうち、前記アクセス間隔と、前記アクセスマスタから前記メインメモリにおいて予め定められた複数の連続領域の各々へアクセスしていない経過時間であるアクセス経過時間とに基づいて、最優先の転送予約情報を決定すること
を特徴とする請求項２０から２５の何れか１項に記載のキャッシュメモリコントロール方法。
【請求項２８】
前記転送過程は、前記アクセスマスタから受け取った複数の前記転送予約情報のうち、前記アクセス間隔が最も小さい転送予約命令を、最優先の転送予約情報と決定すること
を特徴とする請求項２６又は２７に記載のキャッシュメモリコントロール方法。
【請求項２９】
前記転送過程は、前記アクセスマスタから受け取った複数の前記転送予約情報に対して算出された前記アクセス間隔が全て同程度である場合には、
前記アクセス経過時間が最も長い連続領域に格納されているデータにアクセスする転送予約情報を、最優先の転送予約情報と決定すること
を特徴とする請求項２６又は２７に記載のキャッシュメモリコントロール方法。
【請求項３０】
前記転送過程は、前記アクセスマスタから受け取った複数の前記転送予約情報に対して算出された前記アクセス間隔が予め設定された第１の閾値以下であり、かつ、前記転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスの内、最も小さい先頭アドレスと、その次に小さい先頭アドレスとの差分が予め設定された第２の閾値以上である場合には、前記転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスが最も小さい転送予約情報を、最優先の転送予約情報と決定すること
を特徴とする請求項２６又は２７に記載のキャッシュメモリコントロール方法。
【請求項３１】
前記転送過程は、前記アクセスマスタから受け取った複数の前記転送予約情報に対して算出された前記アクセス間隔が第１の閾値以上である場合には、最優先の転送予約情報を決定せず、前記アクセスマスタから受け取った複数の前記転送予約情報に対して再度算出されたアクセス間隔が前記第１の閾値以下となるまで処理を待機すること
を特徴とする請求項２６又は２７に記載のキャッシュメモリコントロール方法。
【請求項３２】
前記転送過程は、決定された前記最優先の転送予約情報に従って転送される連続領域のうち、予め設定された転送単位サイズの転送を完了する毎に、再度、最優先の転送予約情報を決定すること
を特徴とする請求項２６から３１の何れか１項に記載のキャッシュメモリコントロール方法。
【請求項３３】
前記転送過程は、前記アクセスマスタで実行中の命令のアドレスが進む度に、最優先の転送予約情報を決定すること
を特徴とする請求項２６から３２の何れか１項に記載のキャッシュメモリコントロール方法。
【請求項３４】
前記転送過程は、決定された前記最優先の転送予約情報で示された、連続領域に記憶されている全てのデータの転送が完了すると、再度、最優先の転送予約情報を決定すること
を特徴とする請求項２６から３３の何れか１項に記載のキャッシュメモリコントロール方法。
【請求項３５】
前記転送過程は、前記アクセスマスタから受け取った命令コマンドに添付されているアドレスに基づいて前記転送予約情報であることを判断し、前記転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送すること
を特徴とする請求項２０から３４の何れか１項に記載のキャッシュメモリコントロール方法。
【請求項３６】
前記転送過程は、前記転送予約情報に従って転送する連続領域のデータが前記キャッシュメモリに格納されている場合には、当該データを前記キャッシュメモリから開放しないこと
を特徴とする請求項２０から３５の何れか１項に記載のキャッシュメモリコントロール方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリコントローラ及びキャッシュメモリコントロール方法に関する。
【背景技術】
【０００２】
近年、機器で扱うコンピュータプログラム及び映像等のデータ量が増大しており、機器に搭載されるハードディスク及びメインメモリも大容量化している。メインメモリは、命令領域とデータ領域に分けられる。命令領域には、プログラム等の命令が格納され、データ領域には、それらの命令が処理に使用する映像等のデータが格納される。メインメモリの動作周波数は、ＣＰＵ等のアクセスマスタの動作周波数に比べて低速なため、一般的に、高速にアクセス可能なキャッシュメモリが用いられる。アクセスマスタは、キャッシュメモリにアクセスすることで、より高速なデータのリード及びライトが可能となる。【０００３】
しかしながら、キャッシュメモリは、単位面積当たりの容量が小さく、高価なため、多くの場合、メインメモリ全体をキャッシュメモリに置き換えることは困難である。このため、メインメモリのデータの一部をキャッシュメモリに転送する方法が取られる。メインメモリからキャッシュメモリへの転送は、キャッシュメモリの管理単位であるキャッシュライン単位で行われる。アクセスマスタが高速にデータのリード及びライトを行うことができるようになるのは、キャッシュメモリに必要なデータが格納されており、かつ、確実にアクセスできる場合である。この場合をキャッシュヒットという。【０００４】
これに対して、アクセスマスタがアクセスした際に、アクセス要求されたアドレスのデータがキャッシュメモリに格納されていない場合をキャッシュミスという。この場合、アクセス要求されたデータをメインメモリからキャッシュメモリへ転送する必要がある。これによって、プログラムの待ち時間の発生による低速化、及び、消費電力の増大が発生する。そのため、アクセスマスタが必要とするデータを予めメインメモリから先読みして、キャッシュメモリに転送しておくことで、確実にデータにアクセスできる確率（キャッシュヒット率）を向上させることが望まれる。【０００５】
特許文献１には、データの先読み手法として、アクセスマスタからの命令をバッファに格納し、過去の割込み命令履歴を基にデータを先読みしてキャッシュメモリに格納する情報処理装置が記載されている。これにより、アクセスマスタが過去に実行した割込み命令を再度実行する場合には、キャッシュヒットとなり、割込みルーチンへの分岐を高速化すること、及び、割込みルーチン又はサブルーチンからの復帰を高速化することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第４７３９３８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に記載された情報処理装置では、先読みできるデータは過去に実行した履歴のある割り込み命令のみである。そのため、アクセスマスタが未だ実行していない割り込み命令、及び、過去に実行した際とは異なる分岐先となったデータを先読みすることはできない。このため、キャッシュミスが発生する問題がある。【０００８】
そこで、本発明は、アクセスマスタがアクセスしたことのない命令及びデータに対しても確実にキャッシュヒットできるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一態様に係るキャッシュメモリコントローラは、第１のプログラムを格納する命令領域及び当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリと、前記第１のプログラムに含まれている命令を実行するアクセスマスタと、に接続されたキャッシュメモリコントローラであって、前記メインメモリの一部のデータを格納するキャッシュメモリと、前記特定の命令の先頭アドレスを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出し、前記アクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送するデータ処理部と、を備えることを特徴とする。【００１０】
本発明の一態様に係るキャッシュメモリコントロール方法は、第１のプログラムを格納する命令領域及び当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリから、前記第１のプログラムに含まれている命令を実行するアクセスマスタに、キャッシュメモリを用いて前記特定の命令で利用されるデータを提供するキャッシュメモリコントロール方法であって、前記特定の命令の先頭アドレスを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出し、前記アクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送する転送過程と、前記アクセスマスタが前記特定の命令を実行する際に、前記キャッシュメモリから前記特定の命令で利用されるデータを前記アクセスマスタに提供する提供過程と、を有することを特徴とする。
【発明の効果】
【００１１】
本発明の一態様によれば、アクセスマスタがアクセスしたことのない命令及びデータに対しても確実にキャッシュヒットできるようになる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１に係るキャッシュメモリコントローラの構成を概略的に示すブロック図である。
【図２】実施の形態１に係るキャッシュメモリコントローラを動作させるための転送予約関数を示す概略図である。
【図３】実施の形態１における、第２のプログラムに転送予約関数を適用した例を示す概略図である。
【図４】実施の形態１における、第２のプログラムを第１のプログラムにコンパイルする処理を示すフローチャートである。
【図５】実施の形態１における、コンパイルへの入力と出力との関係を示す概略図である。
【図６】実施の形態１における、第２のプログラムをコンパイラがコンパイルすることで生成された第１のプログラムの一例を示す概略図である。
【図７】実施の形態１における、第１のプログラムのメインメモリへの配置例を示す概略図である。
【図８】実施の形態１における、データ処理部の処理切換部が行う処理を示すフローチャートである。
【図９】実施の形態１における処理切換部での処理のタイミングチャートの一例を示す概略図である。
【図１０】実施の形態１における、データ処理部の要求処理部が行う処理を示すフローチャートである。
【図１１】実施の形態１における、データ処理部の予約処理部が行う処理を示すフローチャートである。
【図１２】（ａ）〜（ｃ）は、実施の形態１における、予約処理部によるデータ転送の推移を示す概略図である。
【図１３】実施の形態１における、予約処理部が行う処理のタイミングチャートの一例を示す概略図である。
【図１４】実施の形態１における、データ処理部の開放処理部が行う処理を示すフローチャートである。
【図１５】実施の形態１における、第２のプログラムの変形例を示す概略図である。
【図１６】実施の形態２に係るキャッシュメモリコントローラの構成を概略的に示すブロック図である。
【図１７】実施の形態２における、予約処理部が記憶するテーブルである。
【図１８】実施の形態２における、アクセス管理情報の一例を示す概略図である。
【図１９】実施の形態２における、データ処理部の優先度決定部が行う処理を示すフローチャートである。
【図２０】実施の形態２における、データ処理部の優先度決定部が優先度を決定する、第１のプログラムに含まれる２つの転送予約情報の第１の例を示す図である。
【図２１】実施の形態２における、データ処理部の優先度決定部が優先度を決定する、第１のプログラムに含まれる２つの転送予約情報の第２の例を示す図である。
【図２２】実施の形態２における、データ処理部の優先度決定部が優先度を決定する、第１のプログラムに含まれる２つの転送予約情報の第３の例を示す図である。
【図２３】実施の形態２における、データ処理部の優先度決定部が優先度を決定する、第１のプログラムに含まれる２つの転送予約情報の第４の例を示す図である。
【図２４】実施の形態２における、データ処理部の優先度決定部が優先度を決定する、第１のプログラムに含まれる２つの転送予約情報の第５の例を示す図である。
【図２５】実施の形態２における、データ処理部の優先度決定部での処理のタイミングチャートの一例を示す概略図である。
【図２６】実施の形態２における、データ処理部の予約処理部が行う処理を示すフローチャートである。
【図２７】実施の形態２における、データ処理部の優先度決定部での処理のタイミングチャートの一例を示す概略図である。
【図２８】実施の形態２に係るキャッシュメモリコントローラの変形例を概略的に示すブロック図である。
【図２９】実施の形態２における、転送予約管理情報の変形例を示す概略図である。
【図３０】実施の形態２における、進行アドレス管理情報の一例を示す概略図である。
【発明を実施するための形態】
【００１３】
実施の形態１．
図１は、実施の形態１に係るキャッシュメモリコントローラ１００の構成を概略的に示すブロック図である。キャッシュメモリコントローラ１００は、キャッシュメモリ１１０と、メモリ管理部１２０と、ヒット検出部１３０と、データ処理部１４０とを備える。
【００１４】
図１では、アクセスマスタ１と、キャッシュメモリコントローラ１００と、メインメモリ１０との接続関係が簡単に示されている。キャッシュメモリコントローラ１００は、アクセスマスタ１からの命令コマンドＣ１に基づき、後述するキャッシュメモリ１１０又はメインメモリ１０に格納されたデータへのアクセスを行う。ここで、命令コマンドＣ１は、アクセスマスタ１からの、メインメモリ１０上のアドレスへのアクセス要求である。例えば、命令コマンドＣ１がリード要求であれば、アクセスマスタ１から命令コマンドＣ１と、メインメモリ１０上のアドレスを示す命令アドレスＡ１がキャッシュメモリコントローラ１００に入力される。そして、キャッシュメモリコントローラ１００は、命令コマンドＣ１及び命令アドレスＡ１に対応するリードデータＤ１をアクセスマスタ１に出力する。
【００１５】
なお、図１は、アクセスマスタ１が１つで構成されるキャッシュメモリコントローラ１００を表しているが、複数のアクセスマスタ１がキャッシュメモリコントローラ１００を共有しても良い。また、アクセスマスタ１は、例えばＣＰＵ等の制御部で構成され、メインメモリ１０に格納されたコンピュータプログラム（第１のプログラム）のプロセスに従って命令を実行する。
【００１６】
メインメモリ１０は、命令領域とデータ領域とを備える。命令領域にはアクセスマスタ１が実行する命令が格納され、データ領域にはアクセスマスタ１が処理に利用するデータが格納される。例えば、本実施の形態においては、命令領域には、第１のプログラムが格納され、データ領域には、第１のプログラムに含まれている命令で利用されるデータが格納される。
【００１７】
キャッシュメモリ１１０は、メインメモリ１０に格納されているデータの一部を格納する。キャッシュメモリ１１０は、例えばＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような半導体メモリで構成され、メインメモリ１０よりも高速にデータのアクセスができる。例えば、キャッシュメモリ１１０は、６４バイト毎に分割され、この分割された単位をキャッシュラインと呼ぶ。そして、キャッシュラインには、メインメモリ１０の、連続した６４バイトのデータが格納される。
【００１８】
メモリ管理部１２０は、キャッシュメモリ１１０の管理を行う。例えば、メモリ管理部１２０は、管理情報記憶部としてのタグメモリ１２１を備え、このタグメモリ１２１を用いて、キャッシュメモリ１１０の管理を行う。
【００１９】
タグメモリ１２１は、キャッシュメモリ１１０の各キャッシュラインに格納されたデータの、メインメモリ１０におけるアドレス情報Ｔａと、各キャッシュラインにデータが存在するかどうかを示すステータス識別情報であるステータスフラグＦｓと、各キャッシュラインにアクセスマスタ１がアクセスしたかどうかを示すアクセス識別情報であるアクセスフラグＦａとを管理情報として記憶する。
ステータスフラグＦｓは、キャッシュメモリ１１０の各キャッシュラインにデータが存在する場合に「有効」、データが存在しない場合に「無効」を示す。
アクセスフラグＦａは、キャッシュメモリ１１０の各キャッシュラインにアクセスマスタ１がアクセスした場合に「有効」、アクセスマスタ１がアクセスしていない場合に「無効」を示す。メモリ管理部１２０は、例えば、所定の滞留時間にアクセスされたかを調べるＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）方式に基づき、所定のタイミングで、例えば、タイマー（図示せず）で予め定められた時間の経過が計測されたタイミングで、アクセスフラグＦａをリセットする。これにより、メモリ管理部１２０は、最近アクセスされていないキャッシュラインを求めることができる。
【００２０】
ヒット検出部１３０は、アクセス要求される、メインメモリ１０上のアドレスのデータがキャッシュメモリ１１０に格納されているかどうかを判断する。そして、ヒット検出部１３０は、そのようなデータがキャッシュメモリ１１０に格納されている場合にはキャッシュヒットを、そのようなデータがキャッシュメモリ１１０に格納されていない場合にはキャッシュミスを示すヒット検出結果をデータ処理部１４０に与える。ヒット検出部１３０は、タグメモリ１２１内のステータスフラグＦｓが「有効」を示すキャッシュラインのアドレス情報Ｔａを参照することで、そのようなデータがキャッシュメモリ１１０に格納されているかどうかを判断する。アクセス要求されたアドレスと一致するアドレス情報Ｔａがメモリ管理部１２０上に格納されている場合はキャッシュヒットとなり、そのようなアドレス情報Ｔａが格納されていない場合はキャッシュミスとなる。
【００２１】
データ処理部１４０は、メインメモリ１０に記憶されているデータをキャッシュメモリ１１０に転送する。例えば、本実施の形態においては、データ処理部１４０は、特定の命令で利用されるデータがメインメモリ１０に記憶されているアドレスを含む転送予約情報に従って、アクセスマスタ１が第１のプログラムに含まれているこの特定の命令を実行する前に、この特定の命令で利用されるデータをメインメモリ１０からキャッシュメモリ１１０に転送する。また、データ処理部１４０は、アクセスマスタ１からの要求に応じて、キャッシュメモリ１１０又はメインメモリ１０からデータを読み出す。さらに、データ処理部１４０は、アクセスマスタ１からの要求に応じて、キャッシュメモリ１１０又はメインメモリ１０にデータを書き込む。データ処理部１４０は、処理切換部１４１と、要求処理部１４２と、予約処理部１４３と、開放処理部１４４と、キャッシュメモリアクセス調停部１４５と、メインメモリアクセス調停部１４６とを備える。
【００２２】
処理切換部１４１は、アクセスマスタ１からの命令コマンドＣ１を解析し、データの出力先を要求処理部１４２及び予約処理部１４３の間で切り換える。例えば、命令コマンドＣ１がリード又はライトを示す場合は、処理切換部１４１は、命令コマンドＣ１を要求コマンドＣ２として、また、命令アドレスＡ１を要求アドレスＡ２として、それぞれを要求処理部１４２に与える。さらに、処理切換部１４１は、命令コマンドＣ１がリードを示す場合には、その命令アドレスＡ１を進行アドレスＡ３として、メモリ（進行アドレス記憶部）１４１ａに記憶させる。ここで、進行アドレスＡ３は、アクセスマスタ１が実行中のアドレスを示す。一方、命令コマンドＣ１がデータ転送の予約を表す転送予約情報を示す場合は、処理切換部１４１は、命令コマンドＣ１を転送予約コマンドＣ３として、メモリ１４１ａに記憶されている進行アドレスＡ３とともに、予約処理部１４３に与える。
【００２３】
要求処理部１４２は、処理切換部１４１から入力される要求コマンドＣ２及び要求アドレスＡ２と、ヒット検出部１３０から入力されるヒット検出結果Ｒ１とに応じて、キャッシュメモリ１１０又はメインメモリ１０上のデータをリード又はライトする。例えば、要求処理部１４２は、処理切換部１４１から要求アドレスＡ２を受け取ると、その要求アドレスＡ２をヒット検出部１３０に与える。そして、要求処理部１４２は、その応答として、ヒット検出部１３０から、要求アドレスＡ２のヒット検出結果Ｒ１を取得する。処理切換部１４１から入力される要求コマンドＣ２がリードを示す場合、要求処理部１４２は、キャッシュメモリ１１０又はメインメモリ１０からリードしたリードデータＤ１をアクセスマスタ１へ出力する。
なお、要求処理部１４２とキャッシュメモリアクセス調停部１４５との間の情報の受け渡しは、信号Ｓ１を介して行われる。また、要求処理部１４２とメインメモリアクセス調停部１４６との間の情報の受け渡しは、信号Ｓ４を介して行われる。
【００２４】
予約処理部１４３は、処理切換部１４１から入力される進行アドレスＡ３及び転送予約コマンドＣ３と、ヒット検出部１３０から入力されるヒット検出結果Ｒ２とに応じて、メインメモリ１０からキャッシュメモリ１１０へのデータの転送を行う。例えば、予約処理部１４３は、処理切換部１４１から転送予約コマンドＣ３を受け取ると、転送を行うデータがメインメモリ１０に格納されているアドレス（転送予約アドレス）を特定し、特定されたアドレスＡ４をヒット検出部１３０に与える。そして、予約処理部１４３は、その応答として、ヒット検出部１３０から、アドレスＡ４のヒット検出結果Ｒ２を取得する。そして、予約処理部１４３は、ヒット検出結果Ｒ２がキャッシュミスである場合には、そのアドレスのデータをメインメモリ１０からキャッシュメモリ１１０に転送する。また、予約処理部１４３は、転送予約コマンドＣ３に基づいて転送を開始すると、格納先のキャッシュラインを示す予約領域情報Ｉ１を開放処理部１４４に与える。
なお、予約処理部１４３とキャッシュメモリアクセス調停部１４５との間の情報の受け渡しは、信号Ｓ２を介して行われる。また、予約処理部１４３とメインメモリアクセス調停部１４６との間の情報の受け渡しは、信号Ｓ５を介して行われる。
【００２５】
開放処理部１４４は、メモリ管理部１２０を介して、キャッシュメモリ１１０の空き容量が少なくなったと判断した場合に、開放するキャッシュラインを選択する。例えば、開放処理部１４４は、メモリ管理部１２０のタグメモリ１２１のステータスフラグＦｓを監視し、「無効」を示すステータスフラグＦｓが、例えばＴ個のような予め定められた個数（閾値）以下となった場合に、キャッシュメモリ１１０の空き容量が少なくなったと判断する。ここで、開放処理部１４４は、タグメモリ１２１のアクセスフラグＦａと、予約処理部１４３からの予約領域情報Ｉ１とに基づいて、開放されるキャッシュラインを選択する。開放処理部１４４は、開放するキャッシュラインを選択すると、選択されたキャッシュラインのデータをメインメモリ１０へ書き戻すことを示す開放情報を、キャッシュメモリアクセス調停部１４５に与える。
【００２６】
開放処理部１４４は、開放されるキャッシュラインを選択する際には、予約処理部１４３からの予約領域情報Ｉ１を参照する。例えば、開放処理部１４４は、予約領域情報Ｉ１に基づき、予約処理部１４３によりデータが格納されたキャッシュラインのアクセスフラグＦａを監視し、アクセスマスタ１が１回以上それらのキャッシュラインに格納されたデータにアクセスし、アクセスフラグＦａが有効となったかどうかを、予約領域アクセスフラグＦｒａとして、メモリ（アクセス履歴情報記憶部）１４４ａに記録する。アクセスマスタ１がそれらのキャッシュラインのデータに１回もアクセスしていない場合、開放処理部１４４は、そのキャッシュラインを開放の対象としない。なお、開放処理部１４４は、キャッシュラインが開放されると、その予約領域アクセスフラグＦｒａをリセットする。
なお、開放処理部１４４とキャッシュメモリアクセス調停部１４５との間の情報の受け渡しは、信号Ｓ３を介して行われる。また、開放処理部１４４とメインメモリアクセス調停部１４６との間の情報の受け渡しは、信号Ｓ６を介して行われる。
【００２７】
キャッシュメモリアクセス調停部１４５は、予め定められた優先順位に基づき、要求処理部１４２と、予約処理部１４３と、開放処理部１４４とから入力される信号Ｓ１〜Ｓ３に基づいて、キャッシュメモリ１１０へアクセスする順番を調停する。そして、キャッシュメモリアクセス調停部１４５は、調停された順番に従って、信号Ｓ１〜Ｓ３をキャッシュメモリ１１０に与える。例えば、その優先順位は、高いものから順に、要求処理部１４２、開放処理部１４４及び予約処理部１４３であるものとする。
【００２８】
従って、キャッシュメモリアクセス調停部１４５に対して、要求処理部１４２、予約処理部１４３及び開放処理部１４４のいずれか２つ以上から同時に信号が入力された場合、優先順位の低い方の信号に基づくキャッシュメモリ１１０へのアクセスは停止され、優先順位の高い方の信号に基づくキャッシュメモリ１１０へのアクセスが最優先に行われる。同時に入力された信号のうち、優先順位の低い方の信号に基づくアクセスは、優先順位の高い方の信号に基づくアクセスが終了次第、開始される。
【００２９】
メインメモリアクセス調停部１４６は、予め定められた優先順位に基づき、要求処理部１４２と、予約処理部１４３と、開放処理部１４４とから入力される信号Ｓ４〜Ｓ６に基づいて、メインメモリ１０へアクセスする順番を調停する。例えば、その優先順位は、キャッシュメモリアクセス調停部１４５の順位と同様に、高いものから順に、要求処理部１４２、開放処理部１４４及び予約処理部１４３であるものとする。
【００３０】
従って、メインメモリアクセス調停部１４６に対して、要求処理部１４２、予約処理部１４３及び開放処理部１４４のいずれか２つ以上から同時に信号が入力された場合、優先順位の低い方の信号に基づくメインメモリ１０へのアクセスは停止され、優先順位の高い方の信号に基づくメインメモリ１０へのアクセスが最優先に行われる。同時に入力された信号のうち、優先順位の低い方の信号に基づくアクセスは、優先順位の高い方の信号に基づくアクセスが終了次第、開始される。
【００３１】
このとき、要求処理部１４２及び予約処理部１４３から同時に同じアドレスのデータに対してアクセスが要求された場合において、そのアドレスのデータがキャッシュメモリ１１０上に格納されていないときには、メインメモリアクセス調停部１４６は、要求処理部１４２からのアクセス要求のみを有効とする。メインメモリアクセス調停部１４６は、予約処理部１４３へは、そのアドレスのデータの転送が完了したことを示す予約転送完了フラグＦｔｆを出力する。
【００３２】
図２は、キャッシュメモリコントローラ１００を動作させるための転送予約関数１６０を示す概略図である。転送予約関数１６０は、特定のデータをメインメモリ１０からキャッシュメモリ１１０に転送する転送予約命令を示すコードである。図２に示されているように、転送予約関数１６０は、この関数実行後にアクセスマスタ１が参照する連続領域の先頭アドレスＭＭ＿ＡＤＤＲと、この連続領域のサイズＨ＊Ｖと、この連続領域を参照する命令群である関数の先頭アドレスＰＲＯＣとを定義する。連続領域は、メインメモリ１０上の命令領域又はデータ領域のアドレスが連続した一部の領域である。なお、本実施の形態においては、先頭アドレスＭＭ＿ＡＤＤＲ、サイズＨ＊Ｖ及び先頭アドレスＰＲＯＣが転送予約情報である。
【００３３】
アクセスマスタ１は、例えばアセンブリ言語等、アクセスマスタ１が実行できる形式で記述された第１のプログラムを実行する。一方、図２に示されている転送予約関数１６０は、例えばＣ言語といった高級言語で、アクセスマスタ１が実行できない形式で記述された第２のプログラムに含まれている。第１のプログラムは、第２のプログラムをコンパイルすることで生成される。
【００３４】
図３は、第２のプログラムに、図２に示されている転送予約関数１６０を適用した例を示す概略図である。図３に示されている第２のプログラム１７０は、アクセスマスタ１がメインメモリ１０上の連続領域に配置されたデータを参照する命令で構成される関数１７３と、別の連続領域に配置されたデータを参照する命令で構成される関数１７４とを含む。プログラム１７０では、関数１７３及び１７４の実行前に、転送予約関数１７１及び転送予約関数１７２が処理される。
【００３５】
第２のプログラムは、アクセスマスタ１が連続領域のデータを参照する処理を行う前に、転送予約関数１６０が処理されるように記述されているため、確実にキャッシュヒットしたい連続領域のデータをメインメモリ１０からキャッシュメモリ１１０へ転送するためのコマンドを、アクセスマスタ１が実行可能な形式で第１のプログラムに挿入することができる。
【００３６】
図４は、図３に示されている第２のプログラム１７０を第１のプログラムにコンパイル（変換）する処理を示すフローチャートである。図４に示されているフローは、図５に示されているように、第２のプログラムがコンパイラＣｇｃに入力されることで実行される。コンパイラＣｇｃは、一般に使用される仕様に従い、図２に示されている転送予約関数１６０をコンパイルする機能を備えているプログラム変換部である。また、第２のプログラム１７０は、図示しない記憶部に記憶されているものとする。
【００３７】
コンパイラＣｇｃは、コンパイルを開始すると、第２のプログラム中のコンパイル対象となっているソースコードが、図２に示されている転送予約関数１６０かどうかを判定する（ステップＳ１０）。そして、ソースコードが転送予約関数１６０である場合（Ｓ１０：Ｙｅｓ）には、処理はステップＳ１１に進み、ソースコードが転送予約関数１６０ではない場合（Ｓ１０：Ｎｏ）には、処理はステップＳ１２に進む。
【００３８】
ステップＳ１１では、コンパイラＣｇｃは、ソースコードを第１のプログラムに対応したコマンドにコンパイルする。一方、ステップＳ１２では、コンパイラＣｇｃは、ソースコードを、一般に使用される仕様に従ってコンパイルする。
【００３９】
そして、コンパイラＣｇｃは、コンパイル対象となっているソースコードが、第２のプログラムの終端かどうかを判定する（Ｓ１３）。ソースコードが終端ではない場合（Ｓ１３：Ｎｏ）には、コンパイラＣｇｃは、コンパイル対象を次のソースコードに更新して、ステップＳ１０に処理を進める。ソースコードが終端である場合（Ｓ１３：Ｙｅｓ）には、コンパイラＣｇｃは、フローを終了する。
【００４０】
図６は、図３に示されている第２のプログラム１７０をコンパイラＣｇｃがコンパイルした第１のプログラムの一例を示す概略図である。図６に示されている第１のプログラム１８０は、左列にアドレス、右列に命令語が１６進数で表記される。命令の形式は、コンパイラＣｇｃに依存するので、ここでは、命令語形式に関する説明を省略し、各命令が示す動作について説明する。
【００４１】
図６に示されている命令１８１ａ〜１８１ｃは、図３に示されている転送予約関数１７１を基に生成される転送予約命令である。命令１８１ａは、図３に示されている転送予約関数１７１に記述された連続領域の先頭アドレスＭＭ＿ＡＤＤＲ１を処理切換部１４１へ通知する命令である。命令１８１ｂは、図３に示されている転送予約関数１７１に記述された連続領域のサイズＨ１＊Ｖ１を処理切換部１４１へ通知する命令である。命令１８１ｃは、図３に示されている転送予約関数１７１に記述された先頭アドレスＰＲＯＣ１を処理切換部１４１へ通知する命令である。また、命令１８２ａ〜１８２ｃは、図３における転送予約関数１７２を基に生成される転送予約命令である。命令１８２ａは、図３に示されている転送予約関数１７２に記述された連続領域の先頭アドレスＭＭ＿ＡＤＤＲ２を処理切換部１４１へ通知する命令である。命令１８２ｂは、図３に示されている転送予約関数１７２に記述された連続領域のサイズＨ２＊Ｖ２を処理切換部１４１へ通知する命令である。命令１８２ｃは、図３に示されている転送予約関数１７２に記述された先頭アドレスＰＲＯＣ２を処理切換部１４１へ通知する命令である。
【００４２】
図６に示されているように、第１のプログラム１８０では、転送予約命令１８１ａ〜１８１ｃ、１８２ａ〜１８２ｃが、メインメモリ１０のデータを利用して行われる処理Ｐ１、Ｐ２を実行する命令群１８３１、1８３２、１８３３、・・・、１８４１、１８４２、１８４３、・・・、よりも先に記載されているため、アクセスマスタ１は、これらの命令群よりも先に、転送予約命令１８１ａ〜１８１ｃ、１８２ａ〜１８２ｃを実行する。このため、アクセスマスタ１は、これらの命令群を実行する前に、転送予約命令１８１ａ〜１８１ｃ、１８２ａ〜１８２ｃに従って、転送予約情報を示す命令コマンドＣ１を処理切換部１４１に送ることができる。これにより、アクセスマスタ１がこれらの命令群を実行する前に、これらの命令群で利用されるデータがメインメモリ１０からキャッシュメモリ１１０に転送される。
【００４３】
図７は、図６に示されている第１のプログラム１８０のメインメモリ１０への配置例を示す概略図である。図７において、図６に示されている第１のプログラム１８０は、メインメモリ１０上の命令領域１９０に格納される。特に、図３に示されている転送予約関数１７１をコンパイルした命令１８１ａ〜１８１ｃは、領域１９１ｐに配置され、図３に示されている転送予約関数１７２をコンパイルした命令１８２ａ〜１８２ｃは、領域１９２ｐに配置される。
【００４４】
アクセスマスタ１が領域１９１ｐに配置された命令１８１ａ（図６参照）を実行することにより、図３に示されている関数１７３にて参照される連続領域１９７ｄの先頭アドレスが予約処理部１４３に通知される。続いて、アクセスマスタ１が領域１９１ｐに配置された命令１８１ｂ（図６参照）を実行することにより、連続領域１９７ｄのサイズが予約処理部１４３に通知される。さらに、アクセスマスタ１が領域１９１ｐに配置された命令１８１ｃ（図６参照）を実行することにより、図３に示されている関数１７３に対応するコマンドが格納された領域１９３ｐの先頭アドレスが予約処理部１４３に通知される。
【００４５】
同様に、アクセスマスタ１が領域１９２ｐに配置された命令１８２ａ〜１８２ｃ（図６参照）を実行することにより、図３に示されている関数１７４にて参照される連続領域１９８ｄの先頭アドレス及びサイズと、図３に示されている関数１７４に対応するコマンドが格納された領域１９４ｐの先頭アドレスとが予約処理部１４３に通知される。
【００４６】
次に、キャッシュメモリコントローラ１００での処理の流れについて、フローチャートを用いて説明する。
【００４７】
図８は、データ処理部１４０の処理切換部１４１が行う処理を示すフローチャートである。処理切換部１４１は、アクセスマスタ１から命令コマンドＣ１と命令アドレスＡ１とが入力されると処理を開始する。
【００４８】
まず、処理切換部１４１は、入力された命令アドレスＡ１が、図７に示されている命令領域１９０に含まれるアドレスであるかどうかを判定する（Ｓ２０）。命令アドレスＡ１が命令領域１９０のアドレスである場合（Ｓ２０：Ｙｅｓ）には、処理はステップＳ２１に進み、命令アドレスＡ１が命令領域１９０のアドレスではない場合（Ｓ２０：Ｎｏ）には、処理はステップＳ２２に進む。
【００４９】
ステップＳ２１では、処理切換部１４１は、入力された命令アドレスＡ１を進行アドレスＡ３としてメモリ１４１ａに記憶する。なお、既に進行アドレスＡ３が記憶されている場合には、処理切換部１４１はその値を更新する。一方、命令アドレスＡ１が命令領域１９０のアドレスではない場合には、進行アドレスＡ３は更新されない。
【００５０】
ステップＳ２２では、処理切換部１４１は、メモリ１４１ａに記憶されている進行アドレスＡ３を予約処理部１４３に与える。
【００５１】
次に、処理切換部１４１は、アクセスマスタ１から入力される命令コマンドＣ１が、リード及びライトの何れかであるか否かを判定する（Ｓ２３）。命令コマンドＣ１がリード及びライトの何れかである場合（Ｓ２３：Ｙｅｓ）には、処理はステップＳ２４に進み、命令コマンドＣ１がリード及びライトの何れでもない場合（Ｓ２３：Ｎｏ）には、処理はステップＳ２５に進む。
【００５２】
ステップＳ２４では、処理切換部１４１は、入力された命令コマンドＣ１及び命令アドレスＡ１を、それぞれ要求コマンドＣ２及び要求アドレスＡ２として要求処理部１４２に与える。一方、ステップＳ２５では、処理切換部１４１は、命令コマンドＣ１を転送予約コマンドＣ３として予約処理部１４３に与える。転送予約コマンドＣ３は、例えば、図６に示されている命令１８１ａ〜１８１ｃ及び命令１８２ａ〜１８２ｃである。
【００５３】
次に、処理切換部１４１は、データ処理部１４０に、アクセスマスタ１からの命令コマンドＣ１があるかどうか（未処理の命令コマンドＣ１があるかどうか）を判定する（Ｓ２６）。未処理の命令コマンドＣ１がある場合（Ｓ２６：Ｙｅｓ）には、処理はステップＳ２０に進み、未処理の命令コマンドＣ１がない場合（Ｓ２６：Ｎｏ）には、処理切換部１４１は、フローを終了する。
【００５４】
図９は、処理切換部１４１での処理のタイミングチャートの一例を示す概略図である。図９では、アクセスマスタ１から処理切換部１４１に命令コマンドＣ１が入力されるタイミングと、要求処理部１４２へデータを出力するタイミングと、予約処理部１４３へデータを出力するタイミングとが示されている。
【００５５】
処理切換部１４１は、時刻ｔ１０において、アクセスマスタ１からリード要求を示す命令コマンドＣ１と、プログラム領域を示す命令アドレスＡ１とが入力されると、時刻ｔ１１において、それぞれを要求コマンドＣ２及び要求アドレスＡ２として要求処理部１４２へ出力する。また、処理切換部１４１は、進行アドレスＡ３の値を、命令アドレスＡ２を示す値に更新し、予約処理部１４３に与える。
【００５６】
次に、時刻ｔ１２において、処理切換部１４１は、アクセスマスタ１からライト要求を示す命令コマンドＣ１と、データ領域を示す命令アドレスＡ１とが入力されると、時刻ｔ１３において、それぞれを要求コマンドＣ２及び要求アドレスＡ２として要求処理部１４２に与える。また、命令アドレスＡ１がデータ領域を示すため、処理切換部１４１は、進行アドレスＡ３の値は更新せず、メモリ１４１ａに記録されている進行アドレスＡ３を予約処理部１４３に与える。
【００５７】
時刻ｔ１３において、アクセスマスタ１からデータの転送予約を示す命令コマンドＣ１（ＴＲＩ）と、転送予約を示す命令アドレスＡ１（ＴＲＩＡ）とが入力されると、処理切換部１４１は、要求処理部１４２への出力は行わず、時刻ｔ１４において、メモリ１４１ａに記録されている進行アドレスＡ３を予約処理部１４３に与えるとともに、命令コマンドＣ１を転送予約コマンドＣ３として予約処理部１４３に与える。
【００５８】
時刻ｔ１４において、アクセスマスタ１からリード要求を示す命令コマンドＣ１と、プログラム領域を示す命令アドレスＡ１とが入力されると、時刻ｔ１５において、それぞれを要求コマンドＣ２及び要求アドレスＡ２として要求処理部１４２に与える。また、処理切換部１４１は、進行アドレスＡ３の値を命令アドレスＡ１で示される値に更新し、予約処理部１４３に与える。
【００５９】
以上のように、処理切換部１４１は、アクセスマスタ１から入力される命令コマンドＣ１及び命令アドレスＡ１に応じて、出力先を要求処理部１４２又は予約処理部１４３に切り換える。
【００６０】
図１０は、データ処理部１４０の要求処理部１４２が行う処理を示すフローチャートである。要求処理部１４２は、処理切換部１４１からの要求コマンドＣ２及び要求アドレスＡ２と、ヒット検出部１３０からのキャッシュヒット又はキャッシュミスを示すヒット検出結果Ｒ１とが入力されると、処理を開始する。
【００６１】
まず、要求処理部１４２は、ヒット検出部１３０からのヒット検出結果Ｒ１により、要求コマンドＣ２で要求されるデータがキャッシュメモリ１１０に存在するかを判定する（Ｓ３０）。要求コマンドＣ２で要求されるデータがキャッシュメモリ１１０に存在しない場合（Ｓ３０：Ｎｏ）、言い換えると、ヒット結果Ｒ１がキャッシュミスを示す場合には、処理はステップＳ３１に進む。一方、要求コマンドＣ２で要求されるデータがキャッシュメモリ１１０に存在する場合（Ｓ３０：Ｙｅｓ）、言い換えると、ヒット結果Ｒ１がキャッシュヒットを示す場合には、処理はステップＳ３２に進む。
【００６２】
ステップＳ３１では、要求処理部１４２は、メインメモリ１０からキャッシュメモリ１１０へデータの転送を行うため、データの転送を行う命令をメインメモリアクセス調停部１４６に与える。この命令には、要求アドレスＡ２が含まれているものとする。そして、メインメモリアクセス調停部１４６は、要求アドレスＡ２で示されるアドレスに格納されているデータをメインメモリ１０からキャッシュメモリ１１０に転送する処理を行う。例えば、メインメモリアクセス調停部１４６は、要求アドレスＡ２で示されるアドレスに格納されているデータをメインメモリ１０から読み出し、このデータを要求処理部１４２に与える。要求処理部１４２は、与えられたデータをキャッシュメモリアクセス調停部１４５に与え、キャッシュメモリ１１０に書き込ませる。なお、キャッシュメモリ１１０にデータが書き込まれた場合には、メモリ管理部１２０は、タグメモリ１２１に書き込まれたデータのアドレスをアドレス情報Ｔａとして格納するとともに、対応するステータスフラグＦｓがデータが存在することを示すように更新する。
【００６３】
ステップＳ３２では、要求処理部１４２は、キャッシュメモリ１１０へのアクセスを行う。要求コマンドＣ２がライト命令を示す場合、要求コマンドＣ２が示すデータをキャッシュラインにライトするため、要求処理部１４２は、キャッシュメモリアクセス調停部１４５へ要求コマンドＣ２と要求アドレスＡ２とを与える。一方、要求コマンドＣ２がリード命令を示す場合、要求コマンドＣ２が示すデータをキャッシュラインからリードするため、要求処理部１４２は、キャッシュメモリアクセス調停部１４５へリード対象の要求アドレスＡ２を与える。このようにして取得されたデータは、リードデータＤ１としてアクセスマスタ１に与えられる。また、キャッシュメモリ１１０にアクセスがあった場合には、メモリ管理部１２０は、タグメモリ１２１に格納されているアクセスフラグＦａがアクセスしたことを示すように更新する。
【００６４】
ここで、要求コマンドＣ２がリード要求を示し、かつ、ヒット検出結果Ｒ１がキャッシュミスを示す場合、要求処理部１４２は、メインメモリアクセス調停部１４６を介して、メインメモリ１０から読み出されたデータを、キャッシュメモリアクセス調停部１４５を介してキャッシュメモリ１１０へ転送するとともに、リードデータとしてアクセスマスタ１に出力してもよい。この場合には、図１０のステップＳ３２の処理は行われない。但し、メモリ管理部１２０は、タグメモリ１２１に格納されているアクセスフラグＦａがアクセスしたことを示すように更新する。
【００６５】
図１１は、データ処理部１４０の予約処理部１４３が行う処理を示すフローチャートである。予約処理部１４３は、処理切換部１４１から、進行アドレスＡ３、転送するデータが記憶されている連続領域の先頭アドレスＭＭ＿ＡＤＤＲ、転送するデータが記憶されている連続領域のサイズＨ＊Ｖ、及び、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスＰＲＯＣと、ヒット検出部１３０からキャッシュヒット又はキャッシュミスを示すヒット検出結果Ｒ２とが入力されると、処理を開始する。
【００６６】
まず、予約処理部１４３は、メインメモリ１０へアクセスする間隔（以下、アクセス間隔Ｄａという）を算出する（Ｓ４０）。アクセス間隔Ｄａの算出には、進行アドレスＡ３から、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスＰＲＯＣまでの命令ステップ数Ｄｓが使用される。命令ステップ数Ｄｓは、下記の（１）式で示されているように、予約処理を開始した時点での命令アドレスである進行アドレスＡ３から、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスＰＲＯＣまでの差分で算出できる。
Ｄｓ＝（命令群の先頭アドレスＰＲＯＣ）−（進行アドレスＡ３）          （１）
【００６７】
そして、予約処理部１４３は、下記の（２）式で示されているように、処理切換部１４１から入力された転送するデータが記憶されている連続領域のサイズＨ＊Ｖのうち、転送が完了していない残りの連続領域のサイズＲｓで、命令ステップ数Ｄｓを割ることで、単位サイズ当たりの転送に要する命令ステップ数Ｄｓｐｕを算出することができる。予約処理部１４３は、この単位サイズ当たりの転送に要する命令ステップ数Ｄｓｐｕをアクセス間隔Ｄａとして使用する。
Ｄｓｐｕ＝（命令ステップ数Ｄｓ）÷（残りの連続領域のサイズＲｓ）        （２）
【００６８】
次に、予約処理部１４３は、転送する連続領域のデータの内、次に転送する対象となるデータがキャッシュメモリ１１０に存在するか判定する（Ｓ４１）。ここで、次に転送する対象となるデータは、転送する連続領域のデータの内、次に転送する転送単位長のデータである。そして、次に転送する対象となるデータがキャッシュメモリ１１０に存在しない場合（Ｓ４１：Ｎｏ）、言い換えると、次に転送する対象となるデータのヒット検出結果Ｒ２が、キャッシュミスを示す場合には、メインメモリ１０からキャッシュメモリ１１０へそのデータを転送する必要があるため、予約処理部１４３は、ステップＳ４２に処理を進める。一方、次に転送する対象となるデータがキャッシュメモリ１１０に存在する場合（Ｓ４１：Ｙｅｓ）、言い換えると、次に転送する対象となるデータのヒット検出結果Ｒ２が、キャッシュヒットを示す場合には、メインメモリ１０からキャッシュメモリ１１０へそのデータを転送する必要がないため、予約処理部１４３は、そのデータを転送せずに、ステップＳ４３に処理を進める。
【００６９】
ステップＳ４２では、予約処理部１４３は、ステップＳ４０で算出されたアクセス間隔Ｄａで、メインメモリ１０からキャッシュメモリ１１０へデータの転送を行う命令をメインメモリアクセス調停部１４６に与える。例えば、アクセス間隔Ｄａが「８」である場合には、進行アドレスＡ３が８ステップ分進むまでに、転送単位長のデータを転送する必要がある。このため、予約処理部１４３は、その８ステップの何れか、例えば、その８ステップの内の最初のステップで、メインメモリアクセス調停部１４６に転送命令を与える。このような転送命令を受けたメインメモリアクセス調停部１４６は、メインメモリ１０から、転送対象となるデータを読み出し、予約処理部１４３に与える。予約処理部１４３は、与えられたデータをキャッシュメモリアクセス調停部１４５に与えて、キャッシュメモリ１１０に書き込ませる。なお、キャッシュメモリ１１０にデータが書き込まれた場合には、メモリ管理部１２０は、タグメモリ１２１に書き込まれたデータのアドレスをアドレス情報Ｔａとして格納するとともに、対応するステータスフラグＦｓがデータが存在することを示すように更新する。
【００７０】
次に、予約処理部１４３は、既に転送したデータの合計サイズを示す転送完了サイズを更新する（Ｓ４３）。
【００７１】
次に、予約処理部１４３は、転送完了サイズが、処理切換部１４１から入力された、転送するデータが記憶されている連続領域のサイズＨ＊Ｖ以上かどうか判定する（Ｓ４４）。転送完了サイズが、転送するデータが記憶されている連続領域のサイズＨ＊Ｖ未満の場合（Ｓ４４：Ｎｏ）には、処理はステップＳ４５に進み、転送するデータが記憶されている連続領域のサイズＨ＊Ｖ以上の場合（Ｓ４４：Ｙｅｓ）には、フローを終了する。
【００７２】
ステップＳ４５では、予約処理部１４３は、処理切換部１４１から更新された進行アドレスＡ３を取得したか否かを判断する。進行アドレスＡ３が取得された場合（Ｓ４５：Ｙｅｓ）には、処理はステップＳ４０に進み、進行アドレスＡ３が取得されていない場合（Ｓ４５：Ｎｏ）には、処理はステップＳ４１に進む。
【００７３】
以上のように、予約処理部１４３は、転送予約コマンドＣ３に基づいて必要なデータをキャッシュメモリ１１０へ転送することで、アクセスマスタ１がアクセスしたことのないメインメモリ１０上の領域においても、キャッシュヒット率を確実に向上させることができる。
【００７４】
図１２（ａ）〜（ｃ）は、予約処理部１４３によるデータ転送の推移を示す概略図である。図１２（ａ）は、進行アドレスＡ３の推移を示し、図１２（ｂ）は、転送するデータが記憶されている連続領域の残りのサイズの推移を示し、図１２（ｃ）は、アクセスする間隔Ｄａの推移を示す。
【００７５】
図１２（ｃ）に示されているように、時刻ｔ０におけるアクセス間隔Ｄａ０は、予約処理部１４３に転送予約コマンドＣ３が入力された時点で計算される。
【００７６】
図１２（ａ）に示されているように、時刻ｔ１において、進行アドレスＡ３の値が更新されると、その時点で転送するデータが記憶されている連続領域の残りのサイズ（図１２（ｂ）参照）と、進行アドレスＡ３から連続領域を参照する命令群の先頭アドレスＰＲＯＣまでの残りのステップ数（図１２（ａ）参照）とから、予約処理部１４３は、アクセス間隔Ｄａ１を再度算出し（図１２（ｃ）参照）、メインメモリ１０へアクセスする間隔を調節する。
【００７７】
このように、予約処理部１４３は、進行アドレスＡ３が更新されるとアクセス間隔Ｄａを再度計算し、そのアクセス間隔Ｄａで連続領域の転送を行う。そして、進行アドレスＡ３が、連続領域を参照する命令群の先頭アドレスＰＲＯＣになる時刻ｔｎまでに、転送するデータが記憶されている連続領域の残りのサイズが「０」、即ち、転送が完了するように転送処理を行う。時刻ｔｎにおいては、進行アドレスＡ３が連続領域を参照する命令群の先頭アドレスＰＲＯＣとなるため、アクセス間隔Ｄａｎは「０」となる。
【００７８】
図１３は、予約処理部１４３が行う処理のタイミングチャートの一例を示す概略図である。図１３は、処理切換部１４１から進行アドレスＡ３及び転送するデータが記憶されている連続領域のサイズＨ＊Ｖが入力されるタイミングと、転送するデータが記憶されている連続領域のうち残りの連続領域のサイズが切り換わるタイミングと、アクセス間隔Ｄａを算出するタイミングと、メインメモリ１０へアクセスするタイミングとを示す。
【００７９】
時刻ｔ０において、処理切換部１４１から進行アドレスＡ３及び転送予約コマンドＣ３が入力されると、予約処理部１４３は、アクセス間隔Ｄａ０を算出する。処理切換部１４１からの進行アドレスＡ３が更新される時刻ｔ１まで、予約処理部１４３は、算出されたアクセス間隔Ｄａ０で、メインメモリ１０へのアクセスを行う。
【００８０】
時刻ｔ１において、処理切換部１４１から入力される進行アドレスＡ３が更新されると、予約処理部１４３は、アクセス間隔Ｄａ１を算出し、進行アドレスＡ３が更新される時刻ｔ２まで、算出されたアクセス間隔Ｄａ１で、メインメモリ１０へアクセスを行う。
【００８１】
同様に、時刻ｔ２において、処理切換部１４１から入力される進行アドレスＡ３が更新されると、予約処理部１４３は、アクセス間隔Ｄａ２を算出し、進行アドレスＡ３が更新されるまで、算出されたアクセス間隔Ｄａ２で、メインメモリ１０へアクセスを行う。
【００８２】
以降、予約処理部１４３は、処理切換部１４１から入力される進行アドレスＡ３が更新される度に算出されるアクセス間隔Ｄａでメインメモリ１０にアクセスし、進行アドレスＡ３が、転送予約コマンドＣ３で通知される連続領域を参照する命令群の先頭アドレスＰＲＯＣとなるまでに転送を完了する。
【００８３】
上記のように、進行アドレスＡ３を参照してメインメモリ１０にアクセスする間隔を調節し、連続領域を参照する命令群が実行される前までに転送を完了することで、キャッシュメモリ１１０を効率良く使用できる。
【００８４】
図１４は、データ処理部１４０の開放処理部１４４が行う処理を示すフローチャートである。開放処理部１４４は、メモリ管理部１２０のタグメモリ１２１において、無効（データが格納されていないこと）を示すステータスフラグＦｓが予め定められた個数、例えばＴ個以下かどうかを常時監視する。
【００８５】
開放処理部１４４は、ステータスフラグＦｓがＴ個以下かどうかを判定する（Ｓ５０）。ステータスフラグＦｓがＴ個より多い場合（Ｓ５０：Ｎｏ）には、開放処理部１４４は待機し、メモリ管理部１２０のステータスフラグＦｓの監視を続行する。一方、ステータスフラグＦｓがＴ個以下である場合（Ｓ５０：Ｙｅｓ）には、処理はステップＳ５１に進む。
【００８６】
ステップＳ５１では、開放処理部１４４は、キャッシュメモリ１１０上の各キャッシュラインのうち、開放の候補となるキャッシュラインを選択する。開放候補とするキャッシュラインを選択する方法としては、例えば、参照されていない時間が最も長いキャッシュラインを選択するＬＲＵ方式が適用される。
【００８７】
そして、開放処理部１４４は、ステップＳ５１で選択されたキャッシュラインが開放の対象であるか否かを判定する（Ｓ５２）。キャッシュメモリ１１０の各キャッシュラインのうち、転送予約コマンドＣ３によって転送されたデータが格納され、かつ、アクセスマスタ１から１回もアクセスされていないキャッシュラインは、開放の対象とはならない。言い換えると、開放の対象となるのは、開放候補として選択されたキャッシュラインの内、要求コマンドＣ２によりキャッシュメモリ１１０に転送されたキャッシュラインと、開放候補として選択されたキャッシュラインの内、予約領域アクセスフラグＦｒａにより、アクセスフラグＦａが有効となったことがあると示されたキャッシュラインとである。そのため、開放処理部１４４は、予約処理部１４３からの予約領域情報Ｉ１に基づき、予約処理部１４３がデータを格納したキャッシュラインのアクセスフラグＦａを監視し、アクセスフラグＦａが１回以上有効となったかどうかを予約領域アクセスフラグＦｒａとしてメモリ１４４ａに記録する。
【００８８】
そして、ステップＳ５１で選択されたキャッシュラインが開放の対象ではない場合（Ｓ５２：Ｎｏ）には、処理はステップＳ５１に進み、開放処理部１４４は、再度ＬＲＵ方式により、開放候補とするキャッシュラインを選択する。一方、ステップＳ５１で選択されたキャッシュラインが開放の対象である場合（Ｓ５２：Ｙｅｓ）には、処理はステップＳ５３に進む。
【００８９】
ステップＳ５３では、開放処理部１４４は、開放の対象とされたキャッシュラインに格納されているデータを、メインメモリ１０に書き戻す命令をキャッシュメモリアクセス調停部１４５に与える（Ｓ５３）。このような命令を受けたキャッシュメモリアクセス調停部１４５は、開放の対象とされたキャッシュラインに格納されたデータを読み出し、このデータを開放処理部１４４に与える。開放処理部１４４は、そのデータをメインメモリアクセス調停部１４６に与えて、メインメモリ１０にそのデータを書き込ませる。
【００９０】
キャッシュメモリ１１０からメインメモリ１０へキャッシュラインの書き戻しが完了すると、処理はステップＳ５０に進み、開放処理部１４４は、タグメモリ１２１のステータスフラグＦｓの監視を続行する。
【００９１】
以上のように、転送予約コマンドＣ３によって転送されたデータが格納され、かつ、アクセスマスタ１がアクセスしたことのないキャッシュラインを開放の対象としないことで、アクセスマスタが参照するデータが確実にキャッシュメモリ１１０に格納される。
【００９２】
以上に記載した実施の形態１においては、図３に示されているような第２のプログラム１７０に転送予約関数１７１、１７２を記述し、これらをコンパイラＣｇｃがコンパイルすることで生成された第１のプログラム１８０（図６参照）を使用して、キャッシュメモリコントローラ１００を動作させる例を説明したが、このような例に限定されるものではない。第１のプログラム中に転送予約コマンドが記述されていればよい。従って、図１５に示すような第２のプログラム２７０から、図６に示されている転送予約コマンド１８１ａ〜１８１ｃ、１８２ａ〜１８２ｃを有する第１のプログラム１８０を生成するコンパイラを使用してもよい。言い換えると、コンパイラは、第２のプログラムに含まれている、メインメモリ１０のデータ領域に格納されているデータを利用する命令を示すコードを解析することで、転送予約命令を生成すればよい。これにより、第２のプログラム２７０に転送予約関数１６０が意識的に記述されていないものであっても、適切な位置に確実に転送予約コマンドを記述でき、所望の目的を達成することができる。
【００９３】
また、以上に記載した実施の形態１においては、アクセスマスタ１から転送予約コマンドが発行される例を説明したが、このような例に限定されるものではない。例えば、アクセスマスタ１が実行する第１のプログラムに転送予約命令が含まれていなくてもよい。このような場合には、予約処理部１４３が、キャッシュメモリ１１０内に格納されたメインメモリ１０上の所定のプログラム領域に格納されている第１のプログラムを解析し、後に実行される処理で参照されるデータをメインメモリ１０からキャッシュメモリ１１０へ転送する転送予約情報を生成すればよい。これにより、汎用的なコンパイラを使用して第２のプログラムから第１のプログラムを生成して、アクセスマスタ１が参照するデータを確実にキャッシュメモリ１１０に格納できる。
【００９４】
実施の形態２．
実施の形態２を、図１６〜図３０に基づいて説明する。
【００９５】
図１６は、実施の形態２に係るキャッシュメモリコントローラ２００の構成を概略的に示すブロック図である。キャッシュメモリコントローラ２００は、キャッシュメモリ１１０と、メモリ管理部１２０と、ヒット検出部１３０と、データ処理部２４０とを備える。
【００９６】
図１６では、アクセスマスタ１と、キャッシュメモリコントローラ２００と、メインメモリ１０との接続関係が簡単に示されている。
【００９７】
メインメモリ１０は、バンクと呼ばれる、ある程度の容量ごとにまとめて管理される。バンク内は、命令領域とデータ領域とに分けられる。また、メインメモリ１０に対して、行（Ｒｏｗ）アドレスと、列（Ｃｏｌｕｍｎ）アドレスとを指定することにより、特定の連続領域にアクセスすることができる。
【００９８】
キャッシュメモリ１１０、メモリ管理部１２０及びヒット検出部１３０の機能は、実施の形態１と同様であり、既に説明されているので、ここでの説明は省略する。
【００９９】
データ処理部２４０は、メインメモリ１０に記憶されているデータをキャッシュメモリ１１０に転送する。本実施の形態においては、データ処理部２４０は、特定の命令で利用されるデータがメインメモリ１０に記憶されているアドレスを含む転送予約情報を受け取る度に、受け取った転送予約情報を記憶する。そして、データ処理部２４０は、転送予約情報が複数記憶されている場合に、これらを調停する。データ処理部２４０は、調停により優先度が高いと判定された転送予約情報に従い、第１のプログラムに含まれている特定の命令をアクセスマスタ１が実行する前に、この特定の命令で利用されるデータをメインメモリ１０からキャッシュメモリ１１０に転送する。また、データ処理部２４０は、アクセスマスタ１からの要求に応じて、キャッシュメモリ１１０又はメインメモリ１０にデータを書き込む。データ処理部２４０は、処理切換部１４１と、要求処理部１４２と、予約処理部２４３と、開放処理部１４４と、キャッシュメモリアクセス調停部１４５と、メインメモリアクセス調停部１４６と、優先度決定部２４７と、アクセス管理部２４８とを備える。
【０１００】
処理切換部１４１、要求処理部１４２、開放処理部１４４、キャッシュメモリアクセス調停部１４５及びメインメモリアクセス調停部１４６の機能は、実施の形態１と同様であり、既に説明されているので、ここでの説明は省略する。
【０１０１】
優先度決定部２４７は、処理切換部１４１から進行アドレスＡ３及び転送予約コマンドＣ３を受け取る。そして、優先度決定部２４７は、受け取った転送予約コマンドＣ３で表される転送予約情報をメモリ２４７ａ（転送予約記憶部）に記憶する。優先度決定部２４７は、記憶されている転送予約情報毎にアクセス間隔Ｄａを算出する。アクセス間隔Ｄａの算出方法は、実施の形態１と同様である。優先度決定部２４７は、算出されたアクセス間隔Ｄａと、アクセス管理部２４８から得られるアクセス経過時間Ｒ５とに基づき、最優先に予約処理部２４３に処理を行わせる転送予約情報を決定する。優先度決定部２４７は、アクセス管理部２４８へ、転送予約情報で示される、転送するデータが記憶されている連続領域の先頭アドレスＡｍをアドレスＡ５として与え、その応答として、アクセス経過時間Ｒ５を、アクセス管理部２４８より受け取る。さらに、優先度決定部２４７は、決定された最優先の転送予約情報の、メインメモリ１０上の連続領域へのアクセス間隔Ｄａと、転送するデータが記憶されている連続領域の先頭アドレスＡｍとを予約処理部２４３に与える。予約処理部２４３からの予約転送状況信号Ｖ１が転送完了を示し、転送予約情報として記憶されている、転送するデータが記憶されている連続領域のサイズＨ＊Ｖが全て転送されると、優先度決定部２４７は、その転送予約情報をメモリ２４７ａから消去する。
【０１０２】
図１７は、優先度決定部２４７のメモリ２４７ａに記憶されている転送予約管理情報２０１を示す概略図である。転送予約管理情報２０１は、到着順欄２０１ａと、参照命令群先頭アドレス欄２０１ｂと、連続領域先頭アドレス欄２０１ｃと、転送残サイズ欄２０１ｄと、転送状況欄２０１ｅとを有する。
到着順欄２０１ａは、転送予約情報の到着順を示す情報を格納する。
参照命令群先頭アドレス欄２０１ｂは、転送予約コマンドＣ３に含まれている、転送するデータが記憶されている連続領域を参照する命令群である関数の先頭アドレスＰＲＯＣを格納する。
連続領域先頭アドレス欄２０１ｃは、転送予約コマンドＣ３に応じて、転送するデータがメインメモリ１０に格納されている連続領域の先頭アドレスを格納する。なお、連続領域先頭アドレス欄２０１ｃの初期値は、転送予約コマンドＣ３に含まれている、アクセスマスタ１が参照する連続領域の先頭アドレスＭＭ＿ＡＤＤＲである。
転送残サイズ欄２０１ｄは、転送予約コマンドＣ３に応じて転送するデータの残りのサイズを格納する。なお、転送残サイズ欄２０１ｄの初期値は、転送予約コマンドＣ３に含まれている、転送するデータが記憶されている連続領域のサイズＨ＊Ｖである。
転送状況欄２０１ｅは、参照命令群先頭アドレス欄２０１ｂ及び連続領域先頭アドレス欄２０１ｃに格納された情報に対応する転送予約情報に基づいて、データが転送中であるか否かを示す転送状況情報を格納する。例えば、本実施の形態においては、この欄が「１」であれば、転送中であることを示し、「０」であれば、転送待機中であることを示す。
なお、優先度決定部２４７は、転送予約コマンドＣ３を受け取った順に、転送予約コマンドＣ３で示される、アクセスマスタ１が参照する連続領域の先頭アドレスＭＭ＿ＡＤＤＲと、転送するデータが記憶されている連続領域のサイズＨ＊Ｖと、転送するデータが記憶されている連続領域を参照する命令群である関数の先頭アドレスＰＲＯＣとを、転送予約情報として、転送予約管理情報２０１に格納する。優先度決定部２４７が、予約処理部２４３から予約転送状況信号Ｖ１を受け取ると、メモリ２４７ａに記憶している内容を更新する。
【０１０３】
図１６に戻り、アクセス管理部２４８は、処理切換部１４１からの要求アドレスＡ２を監視し、前回アクセスされてから経過した時間をアクセス経過時間Ｔｄとしてタイマー（図示せず）で計測し、計測されたアクセス経過時間Ｔｄをメモリ２４８ａ（アクセス経過時間記憶部）に記憶させる。アクセス管理部２４８は、メインメモリ１０上の各バンクに属する行アドレスと、列アドレスとで分割される複数のアドレスからなる連続領域を１単位として、処理切換部１４１から要求アドレスＡ２が要求処理部１４２に送られるたびに、要求アドレスＡ２が属する連続領域を特定し、特定された連続領域のアクセス経過時間Ｔｄをリセットする。また、優先度決定部２４７からアドレスＡ５が与えられた場合に、アクセス管理部２４８は、アドレスＡ５が属する連続領域を特定し、特定した連続領域のアクセス経過時間Ｔｄを、応答Ｒ５として、メモリ２４８ａから読み出し、これを優先度決定部２４７に与える。
【０１０４】
図１８は、アクセス管理部２４８のメモリ２４８ａに記憶されているアクセス管理情報２０２を示す概略図である。
アクセス管理情報２０２は、バンクＮｏ欄２０２ａと、行アドレス欄２０２ｂと、列アドレス欄２０２ｃと、アクセス経過時間欄２０２ｄとを有する。
バンクＮｏ欄２０２ａは、メインメモリ１０のバンクを識別するためのバンクＮｏを格納する。
行アドレス欄２０２ｂは、メインメモリ１０のバンクに形成された連続領域の行アドレスの範囲を格納する。
列アドレス欄２０２ｃは、メインメモリ１０のバンクに形成された連続領域の列アドレスの範囲を格納する。
アクセス経過時間欄２０２ｄは、バンクＮｏ欄２０２ａで特定されるバンクの、行アドレス欄２０２ｂ及び列アドレス欄２０２ｃで特定される連続領域に、前回アクセスされてからの経過時間を示すアクセス経過時間Ｔｄを格納する。アクセスマスタ１から一度もアクセスされていない連続領域に関しては、アクセス経過時間Ｔｄは、キャッシュメモリコントローラ２００が起動されてからの経過時間となる。
【０１０５】
図１６に戻り、予約処理部２４３は、ヒット検出部１３０から与えられるヒット検出結果Ｒ２と、優先度決定部２４７から与えられる、転送するデータが記憶されている連続領域の先頭アドレスＡｍ及びメインメモリ１０へのアクセス間隔Ｄａとに応じて、メインメモリ１０へアクセスして、キャッシュメモリ１１０に、予め設定された転送単位である１ライン分のデータの転送を行う。キャッシュメモリ１１０への１ライン分のデータの転送が完了すると、予約処理部２４３は、予約転送状況信号Ｖ１を転送が完了したことを示す値に更新することで、１ライン分のデータの転送が完了したことを優先度決定部２４７に通知する。例えば、予約処理部２４３は、優先度決定部２４７から受け取った、転送するデータが記憶されている連続領域の先頭アドレスＡｍを、アドレスＡ４として、ヒット検出部１３０に与える。そして、予約処理部２４３は、その応答として、ヒット検出部１３０から、アドレスＡ４のヒット検出結果Ｒ２を取得する。そして、予約処理部２４３は、ヒット検出結果Ｒ２がキャッシュミスである場合には、そのアドレスのデータをメインメモリ１０からキャッシュメモリ１１０に転送する。また、予約処理部２４３は、転送するデータが記憶されている連続領域の先頭アドレスＡｍの転送を開始すると、格納先のキャッシュラインを示す予約領域情報Ｉ１を開放処理部１４４に与える。最後に、予約処理部２４３は、転送するデータが記憶されている連続領域の先頭アドレスＡｍから１ライン分のデータの転送を完了すると、転送が完了したことを示すように予約転送状況信号Ｖ１を更新し、優先度決定部２４７に通知を行う。予約転送状況信号Ｖ１は、例えば、１ビットの信号とし、転送が完了しており、次の転送予約を受け付け可能な場合にはＨ（１）、反対に、他の転送予約を受け付け不可能な場合にはＬ（０）とする。
【０１０６】
次に、優先度決定部２４７での処理の流れについて、フローチャートを用いて説明する。
【０１０７】
図１９は、優先度決定部２４７が、複数の転送予約情報を調停する際の処理を示すフローチャートである。優先度決定部２４７は、処理切換部１４１から、進行アドレスＡ３と、転送するデータが記憶されている連続領域の先頭アドレスＭＭ＿ＡＤＤＲ、転送するデータが記憶されている連続領域のサイズＨ＊Ｖ、及び、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスＰＲＯＣを含む転送予約コマンドＣ３とを受け取ると、処理を開始する。
【０１０８】
まず、優先度決定部２４７は、予約処理部２４３が処理中かどうか判定する（Ｓ６０）。予約処理部２４３からの予約転送状況信号Ｖ１が転送予約受付不可（Ｖ１＝Ｌ）を表している場合（Ｓ６０：Ｎｏ）、転送が完了するまで待機する。予約処理部２４３からの予約転送状況信号Ｖ１が転送予約受付可能（Ｖ１＝Ｈ）を表している場合（Ｓ６０：Ｙｅｓ）、優先度決定部２４７は、ステップＳ６１へ処理を進める。
【０１０９】
次に、ステップＳ６１にて、優先度決定部２４７は、メモリ２４７ａに記憶されている転送予約管理情報２０１の転送状況欄２０１ｅが転送中を表す転送予約情報があるか否かを判定する。記憶されている転送予約情報のうち、何れか１つにおいて、転送予約管理情報２０１の転送状況欄２０１ｅに、転送中を表す「１」が格納されている場合（Ｓ６１：Ｙｅｓ）には、優先度決定部２４７は、処理をステップＳ６２に進める。一方、記憶されている全ての転送予約情報の転送状況欄２０１ｅに転送待機中を表す「０」が格納されている場合（Ｓ６１：Ｎｏ）には、優先度決定部２４７は、処理をステップＳ６３に進める。
【０１１０】
ステップＳ６２では、優先度決定部２４７は、転送予約管理情報２０１の転送状況欄２０１ｅに転送中を表す「１」が格納されているレコードを更新する。具体的には、優先度決定部２４７は、転送予約管理情報２０１の該当するレコードの転送残サイズ欄２０１ｄの値から、転送単位である、キャッシュメモリ１０の１ライン分のサイズ（ここでは、例えば、「１」とする）を差し引くことで更新する。なお、優先度決定部２４７は、転送残サイズ欄２０１ｄの値が「０」になった場合、その転送予約情報（レコード）を削除する。一方、転送残サイズ欄２０１ｄの値から１ライン分のサイズを差し引いた後でも、転送残サイズ欄２０１ｄの値が「１」以上の場合、優先度決定部２４７は、連続領域先頭アドレス欄２０１ｃに格納されている連続領域の先頭アドレスを１ライン分加算する。言い換えると、優先度決定部２４７は、連続領域の先頭アドレスを１ライン分後のアドレスに更新する。更に、優先度決定部２４７は、該当するレコードの転送状況欄２０１ｅを、待機中を表す「０」に更新し、処理をステップＳ６３に進める。
【０１１１】
ステップＳ６３では、優先度決定部２４７は、メモリ２４７ａに記憶されている、転送待機中の転送予約情報の個数を判定する。転送予約情報の個数が「０」個の場合には、優先度決定部２４７は、フローを終了する。転送予約情報の個数が「１」個の場合には、優先度決定部２４７は、処理をステップＳ６４に進める。また、転送予約情報の個数が「２」個以上の場合は、優先度決定部２４７は、処理をステップＳ６５に進める。
【０１１２】
ステップＳ６４では、優先度決定部２４７は、処理切換部１４１から受け取った１つの転送予約情報、言い換えると、メモリ２４７ａに記憶されている唯一の転送予約情報を、最優先転送予約情報と決定する。そして、処理はステップＳ６９へ進む。
【０１１３】
ステップＳ６５では、優先度決定部２４７は、メモリ２４７ａに記憶されている各転送予約情報のアクセス間隔Ｄａを算出する。そして、処理は、ステップＳ６６に進む。アクセス間隔Ｄａは、実施の形態１における（２）式により算出される。
【０１１４】
次にステップＳ６６では、優先度決定部２４７は、ステップＳ６５で算出された各転送予約情報のアクセス間隔Ｄａが同程度か判定する。このとき、各転送予約情報のアクセス間隔Ｄａが予め設定された許容誤差範囲内の場合、優先度決定部２４７は、同程度と判定し（Ｓ６６：Ｙｅｓ）、処理をステップＳ６７に進める。同程度ではない場合（Ｓ６６：Ｎｏ）、優先度決定部２４７は、処理をステップＳ６８に進める。アクセス間隔Ｄａの許容誤差は、予め定められた値、例えば、「±１０」とする。
【０１１５】
ステップＳ６７では、優先度決定部２４７は、アクセス管理部２４８からの、各転送予約情報に対するアクセス経過時間Ｒ５に基づき、最優先転送予約情報を決定する。例えば、優先度決定部２４７は、メモリ２４７ａに記憶されている転送予約管理情報２０１の連続領域先頭アドレス２０１ｃ欄に格納されているアドレスＡ５をアクセス管理部２４８に与え、その応答として、アクセス経過時間Ｒ５を取得する。そして、優先度決定部２４７は、アクセス経過時間Ｒ５が最も大きい値の転送予約情報を、最優先転送予約情報と決定する。そして、処理は、ステップＳ６９に進む。
【０１１６】
ステップＳ６８では、優先度決定部２４７は、ステップＳ６５で算出された全転送予約情報のアクセス間隔Ｄａのうち、最もアクセス間隔Ｄａが小さい転送予約情報を最優先転送予約情報と決定する。そして、処理は、ステップＳ６９に進む。
【０１１７】
ステップＳ６９では、優先度決定部２４７は、ステップＳ６４、Ｓ６７又はＳ６８にて決定された最優先転送予約情報に基づき、転送予約管理情報２０１の対応する連続領域先頭アドレス欄２０１ｃに格納されているアドレスを、転送するデータが記憶されている連続領域の先頭アドレスＡｍとする。そして、優先度決定部２４７は、転送するデータが記憶されている連続領域の先頭アドレスＡｍと、アクセス間隔Ｄａとを予約処理部２４３に与える。そして、処理はステップＳ７０に進む。
【０１１８】
ステップＳ７０では、メモリ２４７ａに記憶されている転送予約管理情報２０１のうち、ステップＳ６９で予約処理部２４３に与えた転送予約情報の転送状況を「０（転送待機中）」から「１（転送中）」へと変更する。そして、処理は、ステップＳ６０に進む。
【０１１９】
以上のように、優先度決定部２４７は、進行アドレスＡ３から算出されるアクセス間隔Ｄａに基づき、メモリ２４７ａに記憶されている全転送予約情報から最優先転送予約情報を決定することで、より逼迫した転送予約情報に対しても、アクセスマスタ１が先頭アドレスＰＲＯＣで示される命令群を実行する前までに、必要なデータの転送を完了でき、キャッシュメモリ１１０の浪費を防止できる。
【０１２０】
また、優先度決定部２４７は、進行アドレスＡ３から算出されるアクセス間隔Ｄａ及びアクセス管理部２４８からのアクセス経過時間Ｒ５に基づき、メモリ２４７ａに記憶されている全転送予約情報から最優先転送予約情報を決定することで、キャッシュメモリ１１０から開放される可能性の高いメインメモリ１０上の連続領域に対しても、キャッシュヒット率を向上させることができる。
【０１２１】
図２０から図２４は、それぞれ優先度決定部２４７が処理切換部１４１から受け取る２つの転送予約情報の、転送するデータが記憶されている連続領域のサイズと、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスとの関係を示す概略図である。図２０〜図２４の縦軸は、転送するデータが記憶されている連続領域のサイズを表し、その横軸は時間を表す。優先度決定部２４７は、時間「０」で、処理切換部１４１から受け取った転送予約情報＃１及び転送予約情報＃２の優先度を決定する処理を開始する。横軸に記載されたｔ＃１及びｔ＃２は、それぞれ、処理切換部１４１から受け取った転送予約情報＃１及び転送予約情報＃２で示される、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスＰＲＯＣ１及び先頭アドレスＰＲＯＣ２がそれぞれ実行されるタイミングを表す。また、図中のＨ１＊Ｖ１及びＨ２＊Ｖ２はそれぞれ、処理切換部１４１から受け取った転送予約情報＃１及び転送予約情報＃２で示される、転送するデータが記憶されている連続領域のサイズを表す。
【０１２２】
図２０及び図２１は、それぞれ、図１９のステップＳ６６にて、全転送予約情報のアクセス間隔Ｄａが同程度ではないと判断される例である。
【０１２３】
図２０は、転送予約情報＃２と比較して、転送予約情報＃１において、転送するデータが記憶されている連続領域のサイズが大きく、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスまでの命令ステップ数が小さい、言い換えると、転送するデータが記憶されている連続領域を参照する命令群の実行が開始されるまでの時間が短いことを表す一例である。この場合、図１９のステップＳ６５にて算出されるアクセス間隔Ｄａは、転送予約情報＃２の値よりも転送予約情報＃１の値の方が許容誤差を超えて小さくなる。従って、図１９のステップＳ６６にて、転送予約情報のアクセス間隔Ｄａは同程度でないと判定され（Ｓ６６：Ｎｏ）、アクセス間隔Ｄａの小さい転送予約情報＃１が最優先転送予約情報として決定される。
【０１２４】
図２１は、図２０とは反対に、優先度決定部２４７にて、最優先転送予約情報として転送予約情報＃２が決定される例である。図２１では、転送予約情報＃１と比較して、転送予約情報＃２において、転送するデータが記憶されている連続領域のサイズが大きく、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスまでの命令ステップ数も大きい、言い換えると、転送するデータが記憶されている連続領域を参照する命令群の実行が開始されるまでの時間が長い。従って、転送予約情報＃２においては、転送するデータが記憶されている連続領域を参照する命令群の実行が開始されるまでの時間は長いが、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスＰＲＯＣ１とＰＲＯＣ２との差分が小さい。このため、図１９のステップＳ６５にて算出されるアクセス間隔Ｄａは、転送予約情報＃１の値よりも転送予約情報＃２の値の方が許容誤差を超えて小さくなる。従って、図１９のステップＳ６６にて、転送予約情報のアクセス間隔Ｄａは同程度ではないと判定され（Ｓ６６：Ｎｏ）、アクセス間隔Ｄａの小さい転送予約情報＃２が最優先転送予約情報として決定される。
【０１２５】
以上のように、優先度決定部２４７は、アクセス間隔Ｄａが最も小さい転送予約情報を最優先転送予約情報と決定し、算出されたアクセス間隔Ｄａと、最優先転送予約情報で示される、転送するデータが記憶されている連続領域の先頭アドレスＡｍとを予約処理部２４３に与える。これにより、予約処理部２４３でアクセス間隔Ｄａを算出する必要が無くなり、予約処理の開始が早くなるため、メインメモリ１０からキャッシュメモリ１１０へのデータ転送効率を向上させることができる。
【０１２６】
図２２から図２４はそれぞれ、図１９のステップＳ６６にて、全転送予約情報のアクセス間隔Ｄａが同程度であると判断される例である。
【０１２７】
図２２では、転送予約情報＃１及び転送予約情報＃２の両方において、転送するデータが記憶されている連続領域のサイズに対して、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスまでの命令ステップ数が小さい。このため、図１９のステップＳ６５にて算出されるアクセス間隔Ｄａの値が何れも同程度に小さくなり、ステップＳ６６において、何れの転送予約情報のアクセス間隔Ｄａも同程度であると判断される。
【０１２８】
図２３では、転送予約情報＃１において、転送するデータが記憶されている連続領域のサイズが非常に小さいが、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスまでの命令ステップ数も小さい。一方、転送予約情報＃２において、転送するデータが記憶されている連続領域のサイズは大きいが、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスまでの命令ステップ数も大きい。このため、図１９のステップＳ６５にて算出されるアクセス間隔Ｄａの値が何れも同程度に小さくなり、ステップＳ６６において、何れの転送予約情報のアクセス間隔Ｄａも同程度であると判断される。
【０１２９】
図２４では、転送予約情報＃１において、転送するデータが記憶されている連続領域のサイズは大きいが、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスまでの命令ステップ数もとても大きい。また、転送予約情報＃２においても、転送するデータが記憶されている連続領域のサイズは非常に大きいが、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスまでの命令ステップ数も非常に大きい。このため、図１９のステップＳ６５にて算出されるアクセス間隔Ｄａの値が何れも同程度に大きくなり、ステップＳ６６において、何れの転送予約情報のアクセス間隔Ｄａも同程度であると判断される。
【０１３０】
図２２から図２４の何れの場合においても、転送予約情報＃１に対して転送予約情報＃２のアクセス経過時間Ｒ５が短い場合、図１９のステップＳ６７にて、アクセス経過時刻Ｒ５の長い転送予約情報＃１が最優先転送予約情報として決定される。反対に、転送予約情報＃１に対して転送予約情報＃２のアクセス経過時間Ｒ５が長い場合、図１９のステップＳ６７にて、アクセス経過時間Ｒ５の長い転送予約情報＃２が最優先転送予約情報として決定される。
【０１３１】
上記のように、アクセス経過時間Ｒ５が最も大きい転送予約情報を最優先転送予約情報として決定することで、優先度決定部２４７が算出したアクセス間隔Ｄａが同程度の複数の転送予約情報に対しても、キャッシュメモリ１１０から開放される可能性の高い連続領域の開放を防ぎ、キャッシュメモリコントローラ２００の処理を高速化することができる。
【０１３２】
図２３に示されているように、算出されるアクセス間隔Ｄａがともに小さく、転送予約情報＃１と転送予約情報＃２に含まれる、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスＰＲＯＣ１とＰＲＯＣ２との差分が大きい場合には、優先度決定部２４７は、アクセス経過時刻Ｒ５が最も大きい転送予約情報を最優先転送予約情報として決定していたが、これに限定されるものではない。例えば、アクセス間隔Ｄａが予め設定された第１の閾値以下であり、さらに、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスＰＲＯＣ１とＰＲＯＣ２との差分が、予め設定された第２の閾値以上である場合には、優先度決定部２４７は、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスが最も小さい転送予約情報を最優先転送予約情報と決定してもよい。これにより、キャッシュメモリ１１０がデータを不要に格納せず、キャッシュメモリ１１０の浪費を防ぐことができる。
【０１３３】
図２４に示されているように、転送予約情報＃１と比較して、転送予約情報＃２において、転送するデータが記憶されている連続領域のサイズと、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスまでの命令ステップ数とが共に大きく、図１９のステップＳ６５で算出されるアクセス間隔Ｄａの値が何れも同程度に大きい場合においても、優先度決定部２４７は、アクセス経過時間Ｒ５が最も大きい転送予約情報を最優先転送予約情報として決定していたが、これに限定されるものではない。例えば、算出されたアクセス間隔Ｄａが、予め設定された第１の閾値以上の場合には、優先度決定部２４７は、アクセス間隔Ｄａが第１の閾値以下となるか、次の転送予約情報が入力されるまで待機してもよい。これにより、先に受け取った転送予約情報よりもアクセス間隔Ｄａが小さい転送予約情報を受け取った場合においても、優先度決定部２４７は、アクセス間隔Ｄａの小さい転送予約情報を優先して処理することができ、キャッシュメモリ１１０を効率的に使用できる。
【０１３４】
上記では、優先度決定部２４７のメモリ２４７ａに記憶された転送予約情報が２つである場合の例について説明したが、実際にはこれに限らない。メモリ２４７ａに転送予約情報が３つ以上記憶されている場合であっても、上記と同様にアクセス間隔Ｄａとアクセス経過時間とから、最優先転送予約情報を決定することで、キャッシュメモリ１１０の浪費を防ぐことができる。
【０１３５】
図２５は、優先度決定部２４７が行う処理のタイミングチャートの一例を示す概略図である。図２５は、処理切換部１４１から進行アドレスＡ３及び命令コマンドＣ３が入力されるタイミングと、最優先転送予約情報が決定されるタイミングと、優先度決定部２４７が処理切換部１４１から受け取った複数の転送予約情報に基づき、転送するデータのうち残りのデータのサイズが切り替わるタイミングとを示す。
【０１３６】
時刻ｔ２０において、処理切換部１４１から進行アドレスＡ３（１ｆｃ００ｆｆｆ）及び転送予約コマンドＣ３（ＴＲＩ＃１）が入力されると、優先度決定部２４７は、転送予約コマンドＣ３に基づいて、転送予約情報（ＴＲ＃１）をメモリ２４７ａに記憶させる。そして、優先度決定部２４７は、最優先転送予約情報を決定する。時刻ｔ２０の段階では、優先度決定部２４７が受け取っている転送予約情報はＴＲ＃１のみのため、優先度決定部２４７は、ＴＲ＃１を最優先転送予約情報として決定する。そして、優先度決定部２４７は、その連続領域の先頭アドレスＡｍとアクセス間隔Ｄａとを予約処理部２４３へ出力し、予約処理が開始される。予約処理部２４３が、ＴＲ＃１で指定された転送するデータが記憶されている連続領域のサイズＨ１＊Ｖ１のうち、１ライン分の転送を完了し、予約転送状況信号Ｖ１が転送予約受付可能状態（Ｖ１＝Ｈ）となる時刻ｔ２４まで、優先度決定部２４７は処理を待機する。
【０１３７】
時刻ｔ２１〜ｔ２３において、処理切換部１４１から優先度決定部２４７へ入力される進行アドレスＡ３及び転送予約コマンドＣ３が更新される。優先度決定部２４７は、時刻ｔ２１において入力される転送予約コマンドＣ３（ＴＲＩ＃２）に基づいて、転送予約情報（ＴＲ＃２）をメモリ２４７ａに記憶させ、また、時刻ｔ２３において入力される転送予約コマンドＣ３（ＴＲＩ＃３）に基づいて、転送予約情報（ＴＲ＃３）をメモリ２４７ａに記憶させる。しかしながら、予約処理部２４３からの予約転送状況信号Ｖ１が転送予約受付不可状態（Ｖ１＝Ｌ）のため、優先度決定部２４７は処理を待機する。
【０１３８】
次に時刻ｔ２４において、予約処理部２４３からの予約転送状況信号Ｖ１が転送予約受付可能状態（Ｖ１＝Ｈ）となるため、優先度決定部２４７は、最優先転送予約情報の決定処理を開始する。
【０１３９】
時刻ｔ２５において、優先度決定部２４７は、最優先転送予約情報をＴＲ＃３と決定し、その連続領域の先頭アドレスＡｍとアクセス間隔Ｄａを予約処理部２４３へ出力し、予約処理が開始される。
【０１４０】
時刻ｔ２７において、ＴＲ＃３における１ライン分の連続領域の転送が完了し、予約処理部２４３からの予約転送状況信号Ｖ１が転送予約受付可能状態（Ｖ１＝Ｈ）となったため、時刻ｔ２４と同様に、優先度決定部２４７は、最優先転送予約情報の決定処理を開始する。ここでは、ＴＲ＃２が最優先転送予約情報として決定される。
【０１４１】
以降、同様に、各時刻において予約処理部２４３からの予約転送状況信号Ｖ１が転送予約受付可能状態（Ｖ１＝Ｈ）となる度に、優先度決定部２４７は、最優先転送予約情報を決定し、予約処理部２４３へ最優先転送予約情報の連続領域の先頭アドレスＡｍとアクセス間隔Ｄａとを出力する。そして、優先度決定部２４７は、予約処理部２４３からの予約転送状況信号Ｖ１が転送予約受付不可状態（Ｖ１＝Ｌ）ならば処理を待機する。
【０１４２】
最後に時刻ｔ３１において、優先度決定部２４７のメモリ２４７ａが記憶している最後の転送予約情報（ＴＲ＃２）の転送が完了すると、処理切換部１４１から転送予約コマンドＣ３が入力されるまで、予約処理部２４３からの予約転送状況信号Ｖ１は転送予約受付可能状態（Ｖ１＝Ｈ）を保持し、優先度決定部２４７は処理を待機する。
【０１４３】
上記のように、優先度決定部２４７は、転送予約情報に従って、予め設定された転送単位サイズである１ライン分の転送を完了する毎に、メモリ２４７ａに記憶されている全転送予約情報から最優先転送予約情報を決定し、各連続領域を参照する命令群が実行される前までに転送を完了することで、アクセスマスタ１へのデータ転送効率を向上することができる。
【０１４４】
次に、データ処理部２４０の予約処理部２４３が行う処理の流れについて、フローチャートを用いて説明する。
【０１４５】
図２６は、予約処理部２４３が、転送予約コマンドＣ３に基づきデータを転送する際の処理を示すフローチャートである。予約処理部２４３は、ヒット検出部１３０からキャッシュヒット又はキャッシュミスを示すヒット検出結果Ｒ２と、優先度決定部２４７から転送するデータが記憶されている連続領域の先頭アドレスＡｍとメインメモリへのアクセス間隔Ｄａとが入力されると、処理を開始する。
【０１４６】
まず、予約処理部２４３は、先頭アドレスＡｍに対応するデータがキャッシュメモリ１１０に存在するか判定する（Ｓ８０）。ここで、先頭アドレスＡｍに対応するデータは、先頭アドレスＡｍから記憶されている転送単位長のデータである。予約処理部２４３は、ヒット検出部１３０からヒット検出結果Ｒ２により、この判定を行う。そして、先頭アドレスＡｍに対応するデータがキャッシュメモリ１１０に存在しない場合（Ｓ８０：Ｎｏ）には、そのデータをメインメモリ１０からキャッシュメモリへ転送する必要があるため、予約処理部２４３は、ステップＳ８１に処理を進める。一方、先頭アドレスＡｍに対応するデータがキャッシュメモリ１１０に存在する場合（Ｓ８０：Ｙｅｓ）には、そのデータをメインメモリ１０からキャッシュメモリ１１０へ転送する必要がないため、予約処理部２４３は、そのデータを転送せずに、ステップＳ８２に処理を進める。
【０１４７】
ステップＳ８１では、予約処理部２４３は、優先度決定部２４７から入力されたアクセス間隔Ｄｄで、メインメモリ１０からキャッシュメモリ１１０へデータの転送を行う命令をメインメモリアクセス調停部１４６に与える。転送を行う命令を受けたメインメモリアクセス調停部１４６は、メインメモリ１０から、転送対象となるデータを読み出し、予約処理部２４３に与える。予約処理部２４３は、与えられたデータをキャッシュメモリ調停部１４５に与えて、キャッシュメモリ１１０に書き込ませる。なお、これ以降のメモリ管理部１２０の処理は、実施の形態１と同様であるため、説明を省略する。
【０１４８】
次に、予約処理部２４３は、転送完了サイズが、転送単位である１ラインのサイズ以上かどうか判定する（Ｓ８２）。転送完了サイズが１ラインサイズ未満の場合（Ｓ８２：Ｎｏ）には、処理はステップＳ８０に戻り、転送完了サイズが１ラインサイズ以上の場合（Ｓ８２：Ｙｅｓ）には、処理はＳ８３に進む。
【０１４９】
ステップＳ８３では、予約処理部２４３は、予約転送状況信号Ｖ１を、転送するデータが記憶されている連続領域の先頭アドレスＡｍから１ライン分の転送を完了したことを示す、転送予約受付可能状態（Ｖ１＝Ｈ）に設定して優先度決定部２４７へ出力し、予約処理を終了する。
【０１５０】
以上のように、予約処理部２４３は、優先度決定部２４７から入力された転送予約情報のうち１ラインずつ転送することで、キャッシュメモリ１１０を効率良く使用できる。
【０１５１】
なお、以上に記載した予約処理部２４３の処理の流れでは、転送予約コマンドＣ３にて指定された転送するデータが記憶されている連続領域のうち、１ラインずつ転送する例を説明したが、このような例に限定されるものではない。例えば、優先度決定部２４７は、処理切換部１４１から優先度決定部２４７に進行アドレスＡ３が入力される度に最優先転送予約情報を決定して予約処理部２４３へ出力し、予約処理部２４３は、それに従い転送予約処理を行ってもよい。このような場合には、メインメモリ１０の行（Ｒｏｗ）アドレスが異なる領域にアクセスする度に発生するプリチャージ時間を考慮してアクセス間隔Ｄａを算出する必要がある。これにより、アクセス間隔Ｄａが小さい複数の転送予約情報に対しても、メインメモリ１０からキャッシュメモリ１１０への転送ができ、キャッシュヒット率を向上させることができる。
【０１５２】
ここで、プリチャージ時間を考慮したアクセス間隔Ｄａの算出方法の一例を説明する。
まず、優先度決定部２４７は、プリチャージ時間の考慮が必要かどうかを判定する。プリチャージ時間は、メインメモリ１０上のＲｏｗアドレスが異なる場合に発生する。このため、優先度決定部２４７は、前回決定した最優先転送予約情報にて転送したデータの連続領域のアドレスをメモリ２４７ａに記憶しておき、Ｒｏｗアドレスの比較をすることで、前回転送対象となった転送予約情報のＲｏｗアドレスと、今回転送対象となった転送予約情報のＲｏｗアドレスとが異なるかどうかを判定する。Ｒｏｗアドレスが異なる場合、優先度決定部２４７は、プリチャージ時間を考慮する。アクセス間隔Ｄａは、転送単位サイズ当たりの転送に要する命令ステップ数であるため、プリチャージ時間Ｔｐｒｉ（Ｃｙｃｌｅ）を命令ステップ数に変換する。プリチャージ時間Ｔｐｒｉの命令ステップ数への変換は、下記の（３）式により行われる。
【数１】
2014030387.tif 000003
ここで式（３）では、優先度決定部２４７は、予めタイマーを保持し、計測した１命令ステップの実行にかかるサイクル数Ｔｏｓを計測して、その値をプリチャージ時間Ｔｐｒｉの変換に使用する。また、１命令ステップの実行にかかるサイクル数Ｔｏｓは、前回の命令から今回の命令までにかかったサイクル数、又は、今回の命令までの、１命令の実行にかかったサイクル数の平均値とする。
そして、プリチャージ時間を考慮したアクセス間隔Ｄａｐは、（３）式で算出される変換後プリチャージＳｐｒｉを用いて、（４）式で算出される。
【数２】
2014030387.tif 000004
【０１５３】
また、予約処理部２４３は、転送予約情報で示された、転送するデータが記憶されている連続領域のサイズＨ＊Ｖを転送単位としてもよい。この場合、優先度決定部２４７から予約処理部２４３へ、転送するデータが記憶されている連続領域のサイズＨ＊Ｖを与え、転送が完了したら予約転送状況信号Ｖ１を転送予約受付可能状態（Ｖ１＝Ｈ）とする。これにより、最優先転送予約情報を決定する処理を少なくでき、最優先転送予約情報の決定に必要な計算時間を短縮し、メインメモリ１０からキャッシュメモリ１１０へのデータ転送効率を向上することができる。
【０１５４】
図２７は、予約処理部２４３の転送単位を、転送予約情報で示された、転送するデータが記憶されている連続領域のサイズＨ＊Ｖとした場合の、優先度決定部２４７が行う処理のタイミングチャートの一例を示す概略図である。図２７は、処理切換部１４１から進行アドレスＡ３及び命令コマンドＣ３が入力されるタイミングと、最優先転送予約情報が決定されるタイミングと、優先度決定部２４７が処理切換部１４１から受け取った複数の転送予約情報に基づき、転送するデータが記憶されている連続領域のうち残りの連続領域のサイズが切り替わるタイミングとを示す。
【０１５５】
時刻ｔ３０において、処理切換部１４１から進行アドレスＡ３（１ｆｃ００ｆｆｆ）及び転送予約コマンドＣ３（ＴＲＩ＃１）が入力されると、優先度決定部２４７は、転送予約コマンドＣ３に基づいて、転送予約情報（ＴＲ＃１）をメモリ２４７ａに記憶させる。そして、優先度決定部２４７は、最優先転送予約情報を決定する。時刻ｔ３０の段階では、優先度決定部２４７が受け取っている転送予約情報はＴＲ＃１のみのため、優先度決定部２４７は、ＴＲ＃１を最優先転送予約情報として決定する。そして、優先度決定部２４７は、ＴＲ＃１で示される、転送するデータが記憶されている連続領域の先頭アドレスＰＲＯＣ１と、転送するデータが記憶されている連続領域のサイズＨ１＊Ｖ１と、算出されたアクセス間隔Ｄａとを、予約処理部２４３へ出力し、予約処理が開始される。
【０１５６】
時刻ｔ３１〜ｔ３５において、処理切換部１４１から優先度決定部２４７へ入力される進行アドレスＡ３及び転送予約コマンドＣ３が更新される。優先度決定部２４７は、時刻ｔ３１において入力される転送予約コマンドＣ３（ＴＲＩ＃２）に基づいて、転送予約情報（ＴＲ＃２）をメモリ２４７ａに記憶させ、また、時刻ｔ３３において入力される転送予約コマンドＣ３（ＴＲＩ＃３）に基づいて、転送予約情報（ＴＲ＃３）をメモリ２４７ａに記憶させる。しかしながら、予約処理部２４３からの予約転送状況信号Ｖ１が転送予約受付不可状態（Ｖ１＝Ｌ）のため、優先度決定部２４７は処理を待機する。
【０１５７】
時刻ｔ３５において、予約処理部２４３から入力される予約転送状況信号Ｖ１が転送予約受付可能状態（Ｖ１＝Ｈ）となるため、優先度決定部２４７は、次の最優先転送予約情報を決定する。
【０１５８】
時刻ｔ３６において、優先度決定部２４７は、最優先転送予約情報としてＴＲ＃３を決定する。そして、優先度決定部２４７は、最優先転送予約情報として決定されたＴＲ＃３で示される、転送するデータが記憶されている連続領域の先頭アドレスＰＲＯＣ３及び転送するデータが記憶されている連続領域のサイズＨ３＊Ｖ３と、算出されたアクセス間隔Ｄａと、を予約処理部２４３へ出力し、予約処理が開始される。そして、優先度決定部２４７は、予約処理部２４３から入力される予約転送状況信号Ｖ１が転送予約受付可能状態（Ｖ１＝Ｈ）となるまで処理を待機する。
【０１５９】
以降、上記と同様に、時刻ｔ３７において、優先度決定部２４７は、予約転送状況信号Ｖ１が転送予約受付可能状態（Ｖ１＝Ｈ）となると、最優先転送予約情報を再度決定し、決定した最優先転送予約情報である転送予約情報＃２で示される、転送するデータが記憶されている連続領域の先頭アドレスＰＲＯＣ２と、転送するデータが記憶されている連続領域のサイズＨ２＊Ｖ２と、算出されたアクセス間隔Ｄａとを、予約処理部２４３へ出力する。そして、予約処理部２４３から入力される予約転送状況信号Ｖ１が転送予約受付可能状態（Ｖ１＝Ｈ）となるまで処理を待機する。
【０１６０】
以上に記載されたアクセス管理部２４８では、前回アクセスされてから経過した時間をアクセス経過時間Ｔｄとしてメモリ２４８ａに記憶しているが、これに限定されるものではない。例えば、前回アクセスされてから経過した時間が、キャッシュメモリ１１０の各キャッシュラインのうち、開放候補を決定するＬＲＵ方式で設定されている時間を経過した場合、アクセス管理部２４８は、対応するアクセス経過時間Ｔｄをリセットしてもよい。これにより、キャッシュメモリ１１０から開放される可能性がより高いキャッシュラインに格納されているメインメモリ１０上の連続領域に記憶されているデータを転送する転送予約情報を優先して予約処理部２４３へ出力できる。従って、開放処理部１４４が開放処理を行う回数を減らし、キャッシュメモリコントローラ２００の処理を高速化することができる。
【０１６１】
以上に記載されたキャッシュメモリコントローラ２００は、アクセスマスタ１が１つの場合について説明したが、このような例に限定されるものではない。アクセスマスタ１はキャッシュメモリコントローラ２００に、複数接続されていてもよい。図２８は、アクセスマスタ１＃１及びアクセスマスタ１＃２の２台が、キャッシュメモリコントローラ３００に接続されている例を示す概略図である。
【０１６２】
キャッシュメモリコントローラ３００に接続されるアクセスマスタ１が複数の場合、処理切換部３４１は、メモリ３４１ａ内に、アクセスマスタ１毎の進行アドレスＡ３を記憶する。従って、接続されているアクセスマスタ１＃１又は１＃２から入力された命令アドレスＡ１＃１又はＡ１＃２が、図７に示されている命令領域１９０に含まれるアドレスの場合、処理切換部３４１は、メモリ３４１ａ内の、命令アドレスを入力したアクセスマスタ１＃１又は１＃２の進行アドレスＡ３として記憶し、又は、既にそのアクセスマスタ１＃１又は１＃２の進行アドレスＡ３が記憶されている場合には、その値を更新する。そして、処理切換部３４１は、進行アドレスＡ３として記憶された命令アドレスと、そのアクセスマスタ１＃１又は１＃２を示す、アクセスマスタ毎に予め設定されたアクセスマスタ番号Ｍｎとを、優先度決定部３４７へ出力する。さらに、アクセスマスタ１＃１又は１＃２から入力された命令コマンドＣ１＃１又はＣ１＃２が、リード及びライトの何れでもない場合、命令コマンドＣ１＃１又はＣ１＃２を、転送予約コマンドＣ３として優先度決定部３４７へ出力する。
【０１６３】
次に、優先度決定部３４７は、処理切換部３４１から転送予約コマンドＣ３と進行アドレスＡ３とアクセスマスタ番号Ｍｎとを受け取る。そして、優先度決定部３４７は、受け取ったアクセスマスタ番号Ｍｎと、受け取った転送予約コマンドＣ３で示される、アクセスマスタ１が参照する連続領域の先頭アドレスＭＭ＿ＡＤＤＲ、この連続領域のサイズＨ＊Ｖ及びこの連続領域を参照する命令群である関数の先頭アドレスＰＲＯＣと、をメモリ３４７ａ（転送予約記憶部）に記憶させる。さらに、優先度決定部３４７は、受け取ったアクセスマスタ番号Ｍｎと、受け取った進行アドレスＡ３と、をメモリ３４７ｂ（進行アドレス記憶部）に記憶させる。優先度決定部３４７は、メモリ３４７ｂに記憶されている各アクセスマスタ１の進行アドレスを基にアクセス間隔Ｄａを算出し、最優先転送予約情報を決定する。
【０１６４】
図２９は、優先度決定部３４７のメモリ３４７ａに記憶されている転送予約管理情報３０１を示す概略図である。転送予約管理情報３０１は、到着順欄３０１ａと、アクセスマスタ番号欄３０１ｆと、参照命令群先頭アドレス欄３０１ｂと、連続領域先頭アドレス欄３０１ｃと、転送残サイズ欄３０１ｄと、転送状況欄３０１ｅとを有する。なお、図２９における到着順欄３０１ａ、参照命令群先頭アドレス欄３０１ｂ、連続領域先頭アドレス欄３０１ｃ、転送残サイズ欄３０１ｄ及び転送状況欄３０１ｅは、図１７における到着順欄２０１ａ、参照命令群先頭アドレス欄２０１ｂ、連続領域先頭アドレス欄２０１ｃ、転送残サイズ欄２０１ｄ及び転送状況欄２０１ｅと同様であるため、説明を省略する。
【０１６５】
アクセスマスタ番号欄３０１ｆは、処理切換部３４１から与えられたアクセスマスタ番号Ｍｎを格納する。
【０１６６】
図３０は、優先度決定部３４７のメモリ３４７ｂに記憶されている進行アドレス管理情報３０３を示す概略図である。進行アドレス管理情報は、アクセスマスタ番号欄３０３ａと、進行アドレス欄３０３ｂとを有する。
アクセスマスタ番号欄３０３ａは、処理切換部３４１から与えられたアクセスマスタ番号Ｍｎを格納する。
進行アドレス欄３０３ｂは、処理切換部３４１から与えられた進行アドレスＡ３を格納する。
【０１６７】
以上のように、キャッシュメモリコントローラ３００に接続された複数のアクセスマスタ１から入力される複数の転送予約情報の優先度を決定し、各アクセスマスタ１のプログラムの進行状況に合わせてメインメモリ１０からキャッシュメモリ１１０へのデータ転送を可能とすることで、キャッシュメモリコントローラ３００に複数のアクセスマスタ１が接続されるシステムを設計することができる。このため、構築するシステムの規模を拡大することができる。
【０１６８】
以上に記載されたキャッシュメモリコントローラ１００〜３００では、転送予約情報が示す、転送するデータが記憶されている連続領域としてメインメモリ１０上のデータ領域を指定していたが、これに限定されるものではない。転送するデータが記憶されている連続領域は、メインメモリ１０上の命令領域としてもよい。このような場合には、転送予約情報で指定する、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスＰＲＯＣは、転送するメインメモリ１０上の命令領域に属する連続領域の命令が実行される直前の命令のアドレスとすればよい。これにより、例えばアクセスマスタ１が実行する命令が分岐命令の場合においても、分岐先の命令群を、それらが実行される前にキャッシュメモリ１１０へ転送でき、アクセスマスタ１の動作速度の低下を防止することができる。
【０１６９】
以上に記載された処理切換部１４１、３４１は、接続されているアクセスマスタ１からの命令コマンドＣ１を解析することで、リード及びライトの何れかであるかを判断し、処理を切り換えていたが、これに限定されるものではない。例えば、アクセスマスタ１から入力される命令コマンドＣ１がリード及びライトの何れかであり、かつ、このような命令コマンドＣ１に優先度決定部２４７、３４７のメモリ２４７ａ、３４７ａのアドレスが添付されている場合には、処理切換部１４１、３４１は、入力されるアドレスをデコードすることにより、処理を切り換えてもよい。この場合、命令コマンドＣ１に添付されているアドレスがメインメモリ１０上のアドレスではなく、優先度決定部２４７、３４７のメモリ２４７ａ、３４７ａのアドレスを示す場合には、処理切換部１４１、３４１は、転送予約情報であると判断することができる。これにより、アクセスマスタ１として汎用的なＣＰＵ等のハードウェアの使用や、アクセスマスタ１とキャッシュメモリコントローラ１００〜３００との接続に、例えば、ＡＭＢＡ  ＡＸＩ（Ａｄｖａｎｃｅｄ  ｅＸｔｅｎｓｉｂｌｅ  Ｉｎｔｅｒｆａｃｅ）等の汎用的なバスを使用することができ、キャッシュメモリコントローラ１００〜３００の汎用性を向上できる。
【０１７０】
以上に記載された予約処理部１４３、２４３では、ヒット検出結果Ｒ２がキャッシュミスである場合には、そのアドレスのデータをメインメモリ１０からキャッシュメモリ１１０に転送し、格納先のキャッシュラインを示す予約領域情報Ｉ１を開放処理部１４４に与えていたが、これに限定されるものではない。例えば、ヒット検出結果Ｒ２がキャッシュヒットである場合においても、格納先のキャッシュラインを示す予約領域情報Ｉ１を開放処理部１４４に与えてもよい。この場合、開放処理部１４４は、予約領域情報Ｉ１を受け取ると、タグメモリ１２１に記憶されている、予約領域情報Ｉ１が示すキャッシュラインのアクセスフラグＦａを、アクセスマスタ１がアクセスしていない「無効」を示すよう設定するとともに、アクセスフラグＦａが１回も有効になっていないことを示すように予約領域アクセスフラグＦｒａを設定する。これにより、転送予約情報で示される、転送するデータが記憶されている連続領域を参照する命令群をアクセスマスタ１が実行するまでに時間がかかった場合でも、そのキャッシュラインを開放することなく、確実にキャッシュヒットすることができる。
【符号の説明】
【０１７１】
１  アクセスマスタ、  １０  メインメモリ、  １００，２００，３００  キャッシュメモリコントローラ、  １１０  キャッシュメモリ、  １２０  メモリ管理部、  １３０  ヒット検出部、  １４０，２４０，３４０  データ処理部、  １４１，３４１  処理切換部、  １４２  要求処理部、  １４３，２４３  予約処理部、  １４４  開放処理部、  １４５  キャッシュメモリアクセス調停部、  １４６  メインメモリアクセス調停部、  ２４７，３４７  優先度決定部、  ２４８  アクセス管理部。
【図１】
2014030387.tif 000005
【図２】
2014030387.tif 000006
【図３】
2014030387.tif 000007
【図４】
2014030387.tif 000008
【図５】
2014030387.tif 000009
【図６】
2014030387.tif 000010
【図７】
2014030387.tif 000011
【図８】
2014030387.tif 000012
【図９】
2014030387.tif 000013
【図１０】
2014030387.tif 000014
【図１１】
2014030387.tif 000015
【図１２】
2014030387.tif 000016
【図１３】
2014030387.tif 000017
【図１４】
2014030387.tif 000018
【図１５】
2014030387.tif 000019
【図１６】
2014030387.tif 000020
【図１７】
2014030387.tif 000021
【図１８】
2014030387.tif 000022
【図１９】
2014030387.tif 000023
【図２０】
2014030387.tif 000024
【図２１】
2014030387.tif 000025
【図２２】
2014030387.tif 000026
【図２３】
2014030387.tif 000027
【図２４】
2014030387.tif 000028
【図２５】
2014030387.tif 000029
【図２６】
2014030387.tif 000030
【図２７】
2014030387.tif 000031
【図２８】
2014030387.tif 000032
【図２９】
2014030387.tif 000033
【図３０】
2014030387.tif 000034
【手続補正書】
【提出日】平成26年10月7日(2014.10.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のプログラムを格納する命令領域及び当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリと、前記第１のプログラムに含まれている命令を実行するアクセスマスタと、に接続されたキャッシュメモリコントローラであって、
前記メインメモリの一部のデータを格納するキャッシュメモリと、
前記特定の命令の先頭アドレス、及び、前記特定の命令で利用されるデータのサイズを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数と、前記特定の命令で利用されるデータのサイズのうち、前記キャッシュメモリに転送されていない残りのサイズとから、転送単位毎の残りの命令ステップ数を示すアクセス間隔を算出し、当該算出されたアクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送するデータ処理部と、を備えること
を特徴とするキャッシュメモリコントローラ。
【請求項２】
第１のプログラムを格納する命令領域及び当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリと、前記第１のプログラムに含まれている命令を実行するアクセスマスタと、に接続されたキャッシュメモリコントローラであって、
前記メインメモリの一部のデータを格納するキャッシュメモリと、
前記特定の命令の先頭アドレスを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出し、当該算出されたアクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送するとともに、前記キャッシュメモリに格納されたデータのうち、前記アクセスマスタからアクセスされていない時間が最も長く、かつ、前記アクセスマスタが１回以上アクセスしたことのあるデータを、前記キャッシュメモリから解放するデータ処理部と、を備えること
を特徴とするキャッシュメモリコントローラ。
【請求項３】
特定の命令及び当該特定の命令の先頭アドレスを有する第１の転送予約命令を含む第１のプログラムを格納する命令領域並びに当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリと、前記第１のプログラムに含まれている命令を実行するアクセスマスタと、に接続されたキャッシュメモリコントローラであって、
前記メインメモリの一部のデータを格納するキャッシュメモリと、
前記アクセスマスタが前記特定の命令よりも先に前記第１の転送予約命令を実行することで、前記アクセスマスタから前記特定の命令の先頭アドレス、及び、前記特定の命令で利用されるデータのサイズを含む転送予約情報を取得し、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数と、前記特定の命令で利用されるデータのサイズのうち、前記キャッシュメモリに転送されていない残りのサイズとから、転送単位毎の残りの命令ステップ数を示すアクセス間隔を算出し、当該算出されたアクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送するデータ処理部と、を備えること
を特徴とするキャッシュメモリコントローラ。
【請求項４】
第１のプログラムを格納する命令領域及び当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリと、前記第１のプログラムに含まれている命令を実行するアクセスマスタと、に接続されたキャッシュメモリコントローラであって、
前記メインメモリの一部のデータを格納するキャッシュメモリと、
前記特定の命令の先頭アドレスを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出するとともに、複数の前記転送予約情報を処理する場合には、前記アクセス間隔に基づいて、最優先の転送予約情報を決定し、当該決定された最優先の転送予約情報の前記アクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送するデータ処理部と、を備えること
を特徴とするキャッシュメモリコントローラ。
【請求項５】
第１のプログラムを格納する命令領域及び当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリと、前記第１のプログラムに含まれている命令を実行するアクセスマスタと、に接続されたキャッシュメモリコントローラであって、
前記メインメモリの一部のデータを格納するキャッシュメモリと、
前記特定の命令の先頭アドレス、及び、前記特定の命令で利用されるデータのサイズを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数と、前記特定の命令で利用されるデータのサイズのうち、前記キャッシュメモリに転送されていない残りのサイズとから、転送単位毎の残りの命令ステップ数を示すアクセス間隔を算出するとともに、複数の前記転送予約情報を処理する場合には、前記アクセス間隔に基づいて、最優先の転送予約情報を決定し、当該決定された最優先の転送予約情報の前記アクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送するデータ処理部と、を備えること
を特徴とするキャッシュメモリコントローラ。
【請求項６】
前記データ処理部は、複数の前記転送予約情報のうち、前記アクセス間隔に基づいて、最優先の転送予約情報を決定し、当該決定された最優先の転送予約情報の前記アクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送すること
を特徴とする請求項１から３の何れか１項に記載のキャッシュメモリコントローラ。
【請求項７】
前記データ処理部は、前記アクセスマスタから受け取った複数の前記転送予約情報のうち、前記アクセスマスタから前記メインメモリにおいて予め定められた複数の連続領域の各々へアクセスしていない経過時間であるアクセス経過時間をさらに用いて、最優先の転送予約情報を決定すること
を特徴とする請求項４から６の何れか１項に記載のキャッシュメモリコントローラ。
【請求項８】
前記データ処理部は、前記アクセスマスタから受け取った複数の前記転送予約情報に対して算出された前記アクセス間隔と予め設定された第１の閾値とを比較し、
前記アクセスマスタから受け取った複数の前記転送予約情報に対して算出された前記アクセス間隔が第１の閾値以下の場合には、前記転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスに基づき、最優先の転送予約情報を決定し、
前記アクセスマスタから受け取った複数の前記転送予約情報に対して算出された前記アクセス間隔が第１の閾値よりも大きい場合には、最優先の転送予約情報を決定せず、前記アクセスマスタから受け取った複数の前記転送予約情報に対して再度算出されたアクセス間隔が前記第１の閾値以下となるまで処理を待機すること
を特徴とする請求項４から７の何れか１項に記載のキャッシュメモリコントローラ。
【請求項９】
第１のプログラムを格納する命令領域及び当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリから、前記第１のプログラムに含まれている命令を実行するアクセスマスタに、キャッシュメモリを用いて前記特定の命令で利用されるデータを提供するキャッシュメモリコントロール方法であって、
前記特定の命令の先頭アドレス、及び、前記特定の命令で利用されるデータのサイズを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数と、前記特定の命令で利用されるデータのサイズのうち、前記キャッシュメモリに転送されていない残りのサイズとから、転送単位毎の残りの命令ステップ数を示すアクセス間隔を算出し、当該算出されたアクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送する転送過程と、
前記アクセスマスタが前記特定の命令を実行する際に、前記キャッシュメモリから前記特定の命令で利用されるデータを前記アクセスマスタに提供する提供過程と、を有すること
を特徴とするキャッシュメモリコントロール方法。
【請求項１０】
第１のプログラムを格納する命令領域及び当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリから、前記第１のプログラムに含まれている命令を実行するアクセスマスタに、キャッシュメモリを用いて前記特定の命令で利用されるデータを提供するキャッシュメモリコントロール方法であって、
前記特定の命令の先頭アドレスを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出し、当該算出されたアクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送する転送過程と、
前記キャッシュメモリに格納されたデータのうち、前記アクセスマスタからアクセスされていない時間が最も長く、かつ、前記アクセスマスタが１回以上アクセスしたことのあるデータを、前記キャッシュメモリから解放するデータ解放過程と、
前記アクセスマスタが前記特定の命令を実行する際に、前記キャッシュメモリから前記特定の命令で利用されるデータを前記アクセスマスタに提供する提供過程と、を有すること
を特徴とするキャッシュメモリコントロール方法。
【請求項１１】
特定の命令及び当該特定の命令の先頭アドレスを有する第１の転送予約命令を含む第１のプログラムを格納する命令領域並びに当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリから、前記第１のプログラムに含まれている命令を実行するアクセスマスタに、キャッシュメモリを用いて前記特定の命令で利用されるデータを提供するキャッシュメモリコントロール方法であって、
前記アクセスマスタが前記特定の命令よりも先に前記第１の転送予約命令を実行することで、前記アクセスマスタから前記特定の命令の先頭アドレス、及び、前記特定の命令で利用されるデータのサイズを含む転送予約情報を取得し、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数と、前記特定の命令で利用されるデータのサイズのうち、前記キャッシュメモリに転送されていない残りのサイズとから、転送単位毎の残りの命令ステップ数を示すアクセス間隔を算出し、当該算出されたアクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送する転送過程と、
前記アクセスマスタが前記特定の命令を実行する際に、前記キャッシュメモリから前記特定の命令で利用されるデータを前記アクセスマスタに提供する提供過程と、を有すること
を特徴とするキャッシュメモリコントロール方法。
【請求項１２】
第１のプログラムを格納する命令領域及び当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリから、前記第１のプログラムに含まれている命令を実行するアクセスマスタに、キャッシュメモリを用いて前記特定の命令で利用されるデータを提供するキャッシュメモリコントロール方法であって、
前記特定の命令の先頭アドレスを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出するとともに、複数の前記転送予約情報を処理する場合には、前記アクセス間隔に基づいて、最優先の転送予約情報を決定し、当該決定された最優先の転送予約情報の前記アクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送する転送過程と、
前記アクセスマスタが前記特定の命令を実行する際に、前記キャッシュメモリから前記特定の命令で利用されるデータを前記アクセスマスタに提供する提供過程と、を有すること
を特徴とするキャッシュメモリコントロール方法。
【請求項１３】
第１のプログラムを格納する命令領域及び当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリから、前記第１のプログラムに含まれている命令を実行するアクセスマスタに、キャッシュメモリを用いて前記特定の命令で利用されるデータを提供するキャッシュメモリコントロール方法であって、
前記特定の命令の先頭アドレス、及び、前記特定の命令で利用されるデータのサイズを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数と、前記特定の命令で利用されるデータのサイズのうち、前記キャッシュメモリに転送されていない残りのサイズとから、転送単位毎の残りの命令ステップ数を示すアクセス間隔を算出するとともに、複数の前記転送予約情報を処理する場合には、前記アクセス間隔に基づいて、最優先の転送予約情報を決定し、当該決定された最優先の転送予約情報の前記アクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送する転送過程と、
前記アクセスマスタが前記特定の命令を実行する際に、前記キャッシュメモリから前記特定の命令で利用されるデータを前記アクセスマスタに提供する提供過程と、を有すること
を特徴とするキャッシュメモリコントロール方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
本発明の第１の態様に係るキャッシュメモリコントローラは、第１のプログラムを格納する命令領域及び当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリと、前記第１のプログラムに含まれている命令を実行するアクセスマスタと、に接続されたキャッシュメモリコントローラであって、前記メインメモリの一部のデータを格納するキャッシュメモリと、前記特定の命令の先頭アドレス、及び、前記特定の命令で利用されるデータのサイズを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数と、前記特定の命令で利用されるデータのサイズのうち、前記キャッシュメモリに転送されていない残りのサイズとから、転送単位毎の残りの命令ステップ数を示すアクセス間隔を算出し、当該算出されたアクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送するデータ処理部と、を備えることを特徴とする。
本発明の第２の態様に係るキャッシュメモリコントローラは、第１のプログラムを格納する命令領域及び当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリと、前記第１のプログラムに含まれている命令を実行するアクセスマスタと、に接続されたキャッシュメモリコントローラであって、前記メインメモリの一部のデータを格納するキャッシュメモリと、前記特定の命令の先頭アドレスを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出し、当該算出されたアクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送するとともに、前記キャッシュメモリに格納されたデータのうち、前記アクセスマスタからアクセスされていない時間が最も長く、かつ、前記アクセスマスタが１回以上アクセスしたことのあるデータを、前記キャッシュメモリから解放するデータ処理部と、を備えることを特徴とする。
本発明の第３の態様に係るキャッシュメモリコントローラは、特定の命令及び当該特定の命令の先頭アドレスを有する第１の転送予約命令を含む第１のプログラムを格納する命令領域並びに当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリと、前記第１のプログラムに含まれている命令を実行するアクセスマスタと、に接続されたキャッシュメモリコントローラであって、前記メインメモリの一部のデータを格納するキャッシュメモリと、前記アクセスマスタが前記特定の命令よりも先に前記第１の転送予約命令を実行することで、前記アクセスマスタから前記特定の命令の先頭アドレス、及び、前記特定の命令で利用されるデータのサイズを含む転送予約情報を取得し、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数と、前記特定の命令で利用されるデータのサイズのうち、前記キャッシュメモリに転送されていない残りのサイズとから、転送単位毎の残りの命令ステップ数を示すアクセス間隔を算出し、当該算出されたアクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送するデータ処理部と、を備えることを特徴とする。
本発明の第４の態様に係るキャッシュメモリコントローラは、第１のプログラムを格納する命令領域及び当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリと、前記第１のプログラムに含まれている命令を実行するアクセスマスタと、に接続されたキャッシュメモリコントローラであって、前記メインメモリの一部のデータを格納するキャッシュメモリと、前記特定の命令の先頭アドレスを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出するとともに、複数の前記転送予約情報を処理する場合には、前記アクセス間隔に基づいて、最優先の転送予約情報を決定し、当該決定された最優先の転送予約情報の前記アクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送するデータ処理部と、を備えることを特徴とする。
本発明の第５の態様に係るキャッシュメモリコントローラは、第１のプログラムを格納する命令領域及び当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリと、前記第１のプログラムに含まれている命令を実行するアクセスマスタと、に接続されたキャッシュメモリコントローラであって、前記メインメモリの一部のデータを格納するキャッシュメモリと、前記特定の命令の先頭アドレス、及び、前記特定の命令で利用されるデータのサイズを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数と、前記特定の命令で利用されるデータのサイズのうち、前記キャッシュメモリに転送されていない残りのサイズとから、転送単位毎の残りの命令ステップ数を示すアクセス間隔を算出するとともに、複数の前記転送予約情報を処理する場合には、前記アクセス間隔に基づいて、最優先の転送予約情報を決定し、当該決定された最優先の転送予約情報の前記アクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送するデータ処理部と、を備えることを特徴とする。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
本発明の第１の態様に係るキャッシュメモリコントロール方法は、第１のプログラムを格納する命令領域及び当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリから、前記第１のプログラムに含まれている命令を実行するアクセスマスタに、キャッシュメモリを用いて前記特定の命令で利用されるデータを提供するキャッシュメモリコントロール方法であって、前記特定の命令の先頭アドレス、及び、前記特定の命令で利用されるデータのサイズを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数と、前記特定の命令で利用されるデータのサイズのうち、前記キャッシュメモリに転送されていない残りのサイズとから、転送単位毎の残りの命令ステップ数を示すアクセス間隔を算出し、当該算出されたアクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送する転送過程と、前記アクセスマスタが前記特定の命令を実行する際に、前記キャッシュメモリから前記特定の命令で利用されるデータを前記アクセスマスタに提供する提供過程と、を有することを特徴とする。
本発明の第２の態様に係るキャッシュメモリコントロール方法は、第１のプログラムを格納する命令領域及び当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリから、前記第１のプログラムに含まれている命令を実行するアクセスマスタに、キャッシュメモリを用いて前記特定の命令で利用されるデータを提供するキャッシュメモリコントロール方法であって、前記特定の命令の先頭アドレスを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出し、当該算出されたアクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送する転送過程と、前記キャッシュメモリに格納されたデータのうち、前記アクセスマスタからアクセスされていない時間が最も長く、かつ、前記アクセスマスタが１回以上アクセスしたことのあるデータを、前記キャッシュメモリから解放するデータ解放過程と、前記アクセスマスタが前記特定の命令を実行する際に、前記キャッシュメモリから前記特定の命令で利用されるデータを前記アクセスマスタに提供する提供過程と、を有することを特徴とする。
本発明の第３の態様に係るキャッシュメモリコントロール方法は、特定の命令及び当該特定の命令の先頭アドレスを有する第１の転送予約命令を含む第１のプログラムを格納する命令領域並びに当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリから、前記第１のプログラムに含まれている命令を実行するアクセスマスタに、キャッシュメモリを用いて前記特定の命令で利用されるデータを提供するキャッシュメモリコントロール方法であって、前記アクセスマスタが前記特定の命令よりも先に前記第１の転送予約命令を実行することで、前記アクセスマスタから前記特定の命令の先頭アドレス、及び、前記特定の命令で利用されるデータのサイズを含む転送予約情報を取得し、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数と、前記特定の命令で利用されるデータのサイズのうち、前記キャッシュメモリに転送されていない残りのサイズとから、転送単位毎の残りの命令ステップ数を示すアクセス間隔を算出し、当該算出されたアクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送する転送過程と、前記アクセスマスタが前記特定の命令を実行する際に、前記キャッシュメモリから前記特定の命令で利用されるデータを前記アクセスマスタに提供する提供過程と、を有することを特徴とする。
本発明の第４の態様に係るキャッシュメモリコントロール方法は、第１のプログラムを格納する命令領域及び当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリから、前記第１のプログラムに含まれている命令を実行するアクセスマスタに、キャッシュメモリを用いて前記特定の命令で利用されるデータを提供するキャッシュメモリコントロール方法であって、前記特定の命令の先頭アドレスを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数に基づいてアクセス間隔を算出するとともに、複数の前記転送予約情報を処理する場合には、前記アクセス間隔に基づいて、最優先の転送予約情報を決定し、当該決定された最優先の転送予約情報の前記アクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送する転送過程と、前記アクセスマスタが前記特定の命令を実行する際に、前記キャッシュメモリから前記特定の命令で利用されるデータを前記アクセスマスタに提供する提供過程と、を有することを特徴とする。
本発明の第５の態様に係るキャッシュメモリコントロール方法は、第１のプログラムを格納する命令領域及び当該第１のプログラムに含まれる特定の命令で利用されるデータを格納するデータ領域を有するメインメモリから、前記第１のプログラムに含まれている命令を実行するアクセスマスタに、キャッシュメモリを用いて前記特定の命令で利用されるデータを提供するキャッシュメモリコントロール方法であって、前記特定の命令の先頭アドレス、及び、前記特定の命令で利用されるデータのサイズを含む転送予約情報に従って、前記アクセスマスタが前記特定の命令を実行する前に、前記アクセスマスタで実行中の命令のアドレスから前記特定の命令の先頭アドレスまでの残りの命令ステップ数と、前記特定の命令で利用されるデータのサイズのうち、前記キャッシュメモリに転送されていない残りのサイズとから、転送単位毎の残りの命令ステップ数を示すアクセス間隔を算出するとともに、複数の前記転送予約情報を処理する場合には、前記アクセス間隔に基づいて、最優先の転送予約情報を決定し、当該決定された最優先の転送予約情報の前記アクセス間隔で、前記特定の命令で利用されるデータを前記メインメモリから前記キャッシュメモリに転送する転送過程と、前記アクセスマスタが前記特定の命令を実行する際に、前記キャッシュメモリから前記特定の命令で利用されるデータを前記アクセスマスタに提供する提供過程と、を有することを特徴とする。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１３３
【補正方法】変更
【補正の内容】
【０１３３】
図２４に示されているように、転送予約情報＃１と比較して、転送予約情報＃２において、転送するデータが記憶されている連続領域のサイズと、転送するデータが記憶されている連続領域を参照する命令群の先頭アドレスまでの命令ステップ数とが共に大きく、図１９のステップＳ６５で算出されるアクセス間隔Ｄａの値が何れも同程度に大きい場合においても、優先度決定部２４７は、アクセス経過時間Ｒ５が最も大きい転送予約情報を最優先転送予約情報として決定していたが、これに限定されるものではない。例えば、算出されたアクセス間隔Ｄａが、予め設定された第１の閾値より大きい場合には、優先度決定部２４７は、アクセス間隔Ｄａが第１の閾値以下となるか、次の転送予約情報が入力されるまで待機してもよい。これにより、先に受け取った転送予約情報よりもアクセス間隔Ｄａが小さい転送予約情報を受け取った場合においても、優先度決定部２４７は、アクセス間隔Ｄａの小さい転送予約情報を優先して処理することができ、キャッシュメモリ１１０を効率的に使用できる。
【国際調査報告】
2014030387.tif 000035
2014030387.tif 000036
2014030387.tif 000037
2014030387.tif 000038