プログラムの命令を読み込んで実行する装置において、メインメモリ上のアドレスにより指定した命令を読み込む命令フェッチユニットと、前記命令フェッチユニットにより読み込まれた命令を保持する第1のキャッシュメモリと、命令と当該命令が格納されたメインメモリ上における1または複数のアドレスとを関連付けて保持し、前記命令フェッチユニットから取得したアドレスに基づき、当該アドレスに関連付けられた命令を特定する第2のキャッシュメモリと、前記第1のキャッシュメモリに保持された命令のうち、所定の条件を満足する命令を前記第2のキャッシュメモリに保持させる、判断部と、前記命令フェッチユニットが読み込もうとする命令が前記第1のキャッシュメモリおよび前記第2のキャッシュメモリのいずれにも保持されている場合に、当該命令の読み込み元を選択する選択部と、を備える、装置。前記第2のキャッシュメモリは、前記判断部により保持するように指示された命令と同一の命令を既に保持している場合は、当該命令を指定する前記アドレスを、既に保持している当該命令と関連付けて保持し、前記判断部により保持するように指示された命令と同一の命令を保持していない場合は、当該命令と当該命令を指定する前記アドレスとを関連付けて保持する、請求項1に記載の装置。前記判断部は、前記第1のキャッシュメモリに保持された命令のうち、前記命令フェッチユニットにより読み込まれた回数が予め定められた閾値を超えた命令を、前記第2のキャッシュメモリに保持させる、請求項1または請求項2に記載の装置。前記第2のキャッシュメモリに保持された命令と同一のアドレスにおける当該命令は、前記第1のキャッシュメモリから消去される、請求項1乃至請求項3のいずれかに記載の装置。前記第2のキャッシュメモリは、SRAMStaticRandomAccessMemoryである、請求項1乃至請求項4のいずれかに記載の装置。前記選択部は、前記命令フェッチユニットが読み込もうとする命令が前記第1のキャッシュメモリおよび前記第2のキャッシュメモリのいずれにも保持されている場合に、当該第2のキャッシュメモリから読み込むことを選択する、請求項1乃至請求項5のいずれかに記載の装置。プログラムの命令を読み込んで実行する装置において、メインメモリ上のアドレスにより指定した命令を読み込む命令フェッチユニットと、前記命令フェッチユニットにより読み込まれた命令を保持する第1のキャッシュメモリと、命令と当該命令が格納されたメインメモリ上における1または複数のアドレスとを関連付けて保持し、前記命令フェッチユニットから取得したアドレスに基づき、当該アドレスに関連付けられた命令を特定する第2のキャッシュメモリと、前記第1のキャッシュメモリに保持された命令のうち、前記命令フェッチユニットにより読み込まれた回数が予め定められた閾値を超えた命令を、前記第2のキャッシュメモリに保持させる、判断部と、前記命令フェッチユニットが読み込もうとする命令が前記第2のキャッシュメモリに保持されている場合に、当該命令の読み込み元として当該第2のキャッシュメモリを選択する選択部と、を備え、前記第2のキャッシュメモリは、前記判断部により保持するように指示された命令と同一の命令を既に保持している場合は、当該命令を指定する前記アドレスを、既に保持している当該命令と関連付けて保持し、前記判断部により保持するように指示された命令と同一の命令を保持していない場合は、当該命令と当該命令を指定する前記アドレスとを関連付けて保持し、前記第2のキャッシュメモリに保持された命令と同一のアドレスにおける当該命令は、前記第1のキャッシュメモリから消去される、装置。プログラムの命令をキャッシュするシステムにおいて、メインメモリ上のアドレスを指定されて当該メインメモリから読み込まれた命令をキャッシュする第1のキャッシュ手段と、前記第1のキャッシュ手段にキャッシュされた命令のうち、所定の条件を満足する命令をキャッシュする第2のキャッシュ手段と、読み込まれる対象の命令が前記第1のキャッシュ手段および前記第2のキャッシュ手段のいずれにもキャッシュされている場合に、当該命令の読み込み元を選択する選択手段と、を備え、前記第2のキャッシュ手段は、命令と当該命令が格納されたメインメモリ上における1または複数のアドレスとを関連付けて保持し、命令を読み込むために指定されたアドレスに基づき、当該アドレスに関連付けられた命令を特定する、システム。前記第2のキャッシュ手段は、キャッシュしようとする命令と同一の命令を既に保持している場合は、当該命令を指定する前記アドレスを、既に保持している当該命令と関連付けて保持し、キャッシュしようとする命令と同一の命令を保持していない場合は、当該命令と当該命令を指定する前記アドレスとを関連付けて保持する、請求項8に記載のシステム。前記第2のキャッシュ手段は、前記第1のキャッシュ手段にキャッシュされた命令のうち、読み込み要求に対してヒットした回数が予め定められた閾値を超えた命令をキャッシュする、請求項8または請求項9に記載のシステム。前記第2のキャッシュ手段にキャッシュされた命令と同一のアドレスにおける当該命令は、前記第1のキャッシュ手段から消去される、請求項8乃至請求項10のいずれかに記載のシステム。前記選択手段は、読み込まれる対象の命令が前記第1のキャッシュ手段および前記第2のキャッシュ手段のいずれにもキャッシュされている場合に、当該第2のキャッシュ手段から読み込むことを選択する、請求項8乃至請求項11のいずれかに記載のシステム。命令キャッシュは、キャッシュラインにおいて同じ命令列が多重に保持キャッシュされることにより、保持した内容が冗長になる場合が多い。そこで、本発明は、キャッシュメモリに命令を保持キャッシュする場合における保持内容の冗長さを減少させ、効率の良いキャッシュシステムを実現することを目的とする。上記の目的を達成するため、本発明は、次のような装置として実現される。この装置は、プログラムの命令を読み込んで実行する装置であって、メインメモリ上のアドレスにより指定した命令を読み込む命令フェッチユニットと、この命令フェッチユニットにより読み込まれた命令を保持する第1のキャッシュメモリと、命令とこの命令が格納されたメインメモリ上における1または複数のアドレスとを関連付けて保持し、命令フェッチユニットから取得したアドレスに基づき、アドレスに関連付けられた命令を特定する第2のキャッシュメモリと、第1のキャッシュメモリに保持された命令のうち、命令フェッチユニットにより読み込まれた回数が予め定められた閾値を超えた命令を、第2のキャッシュメモリに保持させる、判断部と、命令フェッチユニットが読み込もうとする命令が第1のキャッシュメモリおよび第2のキャッシュメモリのいずれにも保持されている場合に、命令の読み込み元として第2のキャッシュメモリを選択する選択部と、を備える。そして、第2のキャッシュメモリは、判断部により保持するように指示された命令と同一の命令を既に保持している場合は、その命令を指定するアドレスを、既に保持しているその命令と関連付けて保持し、判断部により保持するように指示された命令と同一の命令を保持していない場合は、その命令とその命令を指定するアドレスとを関連付けて保持する。また、第2のキャッシュメモリに保持された命令と同一のアドレスにおける命令は、第1のキャッシュメモリから消去される。さらに好適には、第2のキャッシュメモリは、SRAMStaticRandomAccessMemoryにて構成される。また、上記の目的を達成する他の本発明は、次のようなシステムとして実現される。このシステムは、プログラムの命令をキャッシュするシステムにおいて、アドレスを指定されてメインメモリから読み込まれた命令をキャッシュする第1のキャッシュ手段と、この第1のキャッシュ手段にキャッシュされた命令のうち、所定の条件を満足する命令をキャッシュする第2のキャッシュ手段と、読み込まれる対象の命令が第1のキャッシュ手段および第2のキャッシュ手段のいずれにもキャッシュされている場合に、この命令の読み込み元を選択する選択手段と、を備える。そして、第2のキャッシュ手段は、命令とこの命令が格納されたメインメモリ上における1または複数のアドレスとを関連付けて保持し、読み込み手段から取得したアドレスに基づき、アドレスに関連付けられた命令を特定する。より詳細には、第2のキャッシュ手段は、キャッシュしようとする命令と同一の命令を既に保持している場合は、この命令を指定するアドレスを、既に保持している命令と関連付けて保持し、キャッシュしようとする命令と同一の命令を保持していない場合は、この命令とこの命令を指定するアドレスとを関連付けて保持する。また、より好適には、第2のキャッシュ手段は、第1のキャッシュ手段にキャッシュされた命令のうち、読み込み要求に対してヒットした回数が予め定められた閾値を超えた命令をキャッシュする。さらに好適には、第2のキャッシュ手段にキャッシュされた命令と同一のアドレスにおけるこの命令は、第1のキャッシュ手段から消去される。そして、さらに好適には、選択手段は、読み込まれる対象の命令が第1のキャッシュ手段および第2のキャッシュ手段のいずれにもキャッシュされている場合に、第2のキャッシュ手段から読み込むことを選択する。本発明によれば、キャッシュメモリに命令を保持キャッシュする場合における保持内容の冗長さを減少させ、効率の良いキャッシュシステムを実現することができる。以下、添付図面を参照して、本発明の実施形態について詳細に説明する。プロセッサの実行コードは、JITJustInTimeのような特殊な例外を除き、メインメモリ上での書き換えが発生せず、命令を格納するためにアロケートされたアドレスが変わることもない。すなわち、メインメモリ上のアドレスに対して命令が一意に決まる。これに基づき、本実施形態は、アドレスに関連づけされたマクロとして命令列を特定するキャッシュシステムを実現する。なお、本実施形態では、従来の命令キャッシュキャッシュメモリを用いたキャッシュシステムに対する付加的な構成として、上記のマクロによるキャッシュシステムを構成する場合を例として説明する。<システム構成>図1は、本実施形態によるキャッシュシステムの構成例を示す図である。図1に示す構成例において、処理装置プロセッサであるCPUCentralProcessingUnit100は、チップ上のバスオンチップバス200に接続されている。図示のように、本実施形態のCPU100は、命令フェッチユニット10と、第1のキャッシュ手段としての命令キャッシュ20とを備える。また、CPU100は、第2のキャッシュ手段として、マクロキャッシュ部30と、マクロ登録判断部40とを備え、さらに読み込み対象選択部50とを備える。なお、図1には、CPU100の構成のうち、本実施形態に関わる構成のみを記載している。命令フェッチユニット10は、CPU100がプログラムの処理を実行するために命令を読み込むフェッチする。命令の取得は、取得しようとする命令のメインメモリ図示せず上のアドレスを指定することによって行われる。命令フェッチユニット10は、取得しようとする命令が、命令キャッシュ20に保持キャッシュされているか、またはマクロキャッシュ部30にマクロ31後述として登録されている場合キャッシュヒットに相当には、これらから命令を取得する。一方、取得しようとする命令が命令キャッシュ20にもマクロキャッシュ部30にも存在しない場合キャッシュミスに相当には、メインメモリにアクセスして命令を取得する。命令キャッシュ20は、一般的なキャッシュメモリにおける命令キャッシュである。すなわち、CPU100が処理を実行するためにメインメモリから命令命令列を読み込むと、読み込まれた命令命令列は命令キャッシュ20に保持され、次にCPU100が同様の処理を実行する際に当該命令が命令キャッシュ20から読み込まれる。命令キャッシュ20としては、例えば連想メモリContentAddressableMemory;CAMをタグとして使ったSRAMが用いられる。マクロキャッシュ部30は、命令フェッチユニット10がフェッチする命令列を、メインメモリ上の当該命令列のアドレスと関連付けたマクロ31として保持キャッシュする。このマクロ31は、キャッシュ対象の命令列ごとに作成される。マクロキャッシュ部30には、命令キャッシュ20に保持された命令のうち、マクロ登録判断部40により登録対象とされた命令列が保持される。マクロキャッシュ部30およびマクロ31の詳細については後述する。マクロ登録判断部40は、命令キャッシュ20に保持されている命令列をマクロキャッシュ部30に登録するか否かを判断する。本実施形態において、マクロ登録判断部40は、命令キャッシュ20における命令列ごとのキャッシュヒットの頻度命令フェッチユニット10により読み込まれる頻度に基づいて、命令列をマクロキャッシュ部30に登録するか否かを判断する。マクロ登録判断部40の機能および動作の詳細については後述する。読み込み対象選択部50は、同一の命令列が命令キャッシュ20とマクロキャッシュ部30の両方に保持されている場合に、どちらから読み込むかを選択する。本実施形態では、命令フェッチユニット10が読み込もうとする命令列がマクロキャッシュ部30に保持されている場合は、マクロキャッシュ部30から命令列を読み込む。具体的には、例えば、命令フェッチユニット10が読み込もうとする命令列をマクロキャッシュ部30が保持している場合に、マクロキャッシュ部30が、マクロキャッシュ部30からの読み込みを選択するように読み込み対象選択部50へ指示する。<マクロキャッシュ部30の構成>図2は、マクロキャッシュ部30の構成例を示す図である。図2に示すように、マクロキャッシュ部30は、複数図示の例ではn個のマクロ31を含む。個々のマクロ31は、1つの命令列とこの命令列に関連付けられたアドレスとを保持するマクロ保持手段31aと、マクロ31にアドレスを登録するための命令判断部32とを備える。命令判断部32の機能および動作の詳細については後述する。マクロ保持手段31aには、上記のように、命令列とこの命令列に関連付けられたアドレスとが保持される。このマクロ保持手段31aは、一つの命令列に対して、複数のアドレスを関連付けて保持することができるように構成される。命令列およびアドレスを保持する記憶手段メモリとしては、一般的なキャッシュメモリに用いられる連想メモリではなく、例えばSRAMStaticRandomAccessMemoryが用いられる。また上記のように、マクロ31には、命令キャッシュ20に保持された命令列が、所定の条件を満足する場合に登録される。そのため、マクロ保持手段31aに保持される命令列のサイズは、通常は、命令キャッシュ20のキャッシュラインのサイズと等しくなる。ただし、マクロ保持手段31aに登録できる命令列のサイズは、このサイズに限定されない。システムの仕様等に応じて、他のサイズで命令列を保持するようにしても良い。マクロキャッシュ部30に設けられるマクロ31の数や、マクロ31における命令列に関連付けが可能なアドレスの数は、マクロ保持手段31aを実現する記憶手段の記憶容量やシステムの仕様等に基づいて決定される。図3は、命令判断部32を実現する論理回路の構成例を示す図である。図3に示すように、命令判断部32は、比較対象の命令を選択するセレクタ32aと、選択された命令を比較するコンパレータ32bと、一致した命令の数を計数するカウンタ32cとを備える。セレクタ32aは、マクロ31のマクロ保持手段31aに保持されている命令列を構成する個々の命令命令フェッチユニット10がフェッチする命令単位を、コンパレータ32bによる比較の対象とするために、先頭から順次選択する。コンパレータ32bは、命令フェッチユニット10により命令キャッシュ20から読み出された命令列を取得する。そして、取得した命令列とセレクタ32aにより選択された命令とを比較する。カウンタ32cは、コンパレータ32bによる比較で一致した命令の数を計数し、その計数を元にセレクタ32aにどの命令と比較するかを指示する。カウンタ32cの初期値は1であり、マクロ保持手段31aに登録されている命令列を構成する命令の数mまで計数する。例えば、命令コードが1バイトで、キャッシュラインのサイズが32バイトであれば、m=32である。図4は、命令判断部32の動作例を示すフローチャートである。図4を参照すると、命令判断部32は、まず、命令フェッチユニット10が取得しようとする命令が命令キャッシュ20においてヒットした場合に、命令キャッシュ20から読み出された命令を取得するステップ401、402。そして、命令判断部32は、セレクタ32aにより、マクロ保持手段31aに保持されている命令列のうち先頭の命令を比較対象として選択するステップ403。次に、命令判断部32は、コンパレータ32bにより、ステップ402で取得した命令とステップ403で選択した命令とを比較するステップ404。比較した命令が一致しない場合は、処理を終了するステップ405。ステップ404で比較した命令が一致した場合、命令判断部32は、カウンタ32cの値を調べるステップ405、406。カウンタ32cの値がmでなければ、命令判断部32は、カウンタ32cの値を1加算するステップ407、408。そして、命令判断部32は、セレクタ32aにより、マクロ保持手段31aに保持されている命令列を構成する命令のうち次の命令を選択しステップ409、命令キャッシュ20から次の命令が読み出されるのを待つステップ410。命令キャッシュ20から次の命令が読み出されたならば、命令判断部32は、ステップ404以降の処理を繰り返す。ステップ406、407で、カウンタ32cの値がmである場合、命令キャッシュ20から読み出されたm個の命令の組命令列が、マクロ保持手段31aに保持されている命令列と一致したことを意味する。そこで、命令判断部32は、一致した命令列を構成する命令のうち、最初に命令キャッシュ20においてヒットした命令のアドレスを、マクロ保持手段31aに登録するステップ407、411。そして、マクロ保持手段31aに登録した命令列を命令キャッシュ20から消去するステップ411。<マクロ登録判断部40の構成>図5は、マクロ登録判断部40を実現する論理回路の構成例を示す図である。図5に示すように、マクロ登録判断部40は、判断対象となるアドレスを取り込むためのセレクタ40aと、取り込んだアドレスの出現頻度を調べるためのコンパレータ40bおよびアドレス履歴テーブル40cとを備える。セレクタ40aは、命令フェッチユニット10が取得しようとする命令が命令キャッシュ20においてヒットしたことを条件として、命令フェッチユニット10により指定されたアドレス取得しようとする命令のアドレスを取り込む。コンパレータ40bは、セレクタ40aにより取り込まれたアドレスと、アドレス履歴テーブル40cに登録されているアドレスとを比較する。そして、セレクタ40aにより取り込まれたアドレスがアドレス履歴テーブル40cに登録されていなければ、そのアドレスを新規にアドレス履歴テーブル40cに登録する。一方、セレクタ40aにより取り込まれたアドレスがアドレス履歴テーブル40cに登録されている場合、コンパレータ40bは、そのアドレスが命令フェッチユニット10による取得対象となった回数を示すフラグデータ図5のFを更新する。アドレス履歴テーブル40cは、以前に命令フェッチユニット10が取得しようとした命令のアドレスと、そのアドレスが命令フェッチユニット10による取得対象となった回数を示すフラグデータとを含むテーブルである。コンパレータ40bによる比較の結果、セレクタ40aにより取り込まれたアドレスがアドレス履歴テーブル40cに登録されていなければ、そのアドレスが新規に登録される。一方、コンパレータ40bによる比較の結果、セレクタ40aにより取り込まれたアドレスが既にアドレス履歴テーブル40cに登録されていれば、そのアドレスのフラグデータの値が1加算される更新。このアドレス履歴テーブル40cは、例えば、マクロ31のマクロ保持手段31aと共通のSRAMに記憶される。アドレス履歴テーブル40cに登録可能なアドレスおよびフラグデータの数エントリ数は、アドレス履歴テーブル40cを記憶する記憶手段の記憶容量やシステムの仕様等に基づいて決定される。図6は、マクロ登録判断部40の動作を示すフローチャートである。図6を参照すると、マクロ登録判断部40は、まず、命令フェッチユニット10が取得しようとする命令が命令キャッシュ20においてヒットした場合に、セレクタ40aにより、命令フェッチユニット10が指定したアドレス取得しようとする命令のアドレスを取り込むステップ601、602。次に、マクロ登録判断部40は、コンパレータ40bにより、ステップ602で取得したアドレスがアドレス履歴テーブル40cに登録されているか否かを判断するステップ603。ステップ602で取得したアドレスがアドレス履歴テーブル40cに登録されていない場合、次にマクロ登録判断部40は、アドレス履歴テーブル40cに登録可能な数のアドレスが既に登録されているTablefullか否かを判断するステップ604。そして、アドレス履歴テーブル40cに空きがあるならば、ステップ602で取得したアドレスをアドレス履歴テーブル40cに登録するステップ605。また、アドレス履歴テーブル40cに空きがない場合、マクロ登録判断部40は、既にアドレス履歴テーブル40cに登録されているアドレスのうちで、特定のアドレスを消去してテーブルの空きエントリを確保するステップ606。そして、ステップ602で取得したアドレスをアドレス履歴テーブル40cに登録するステップ605。なお、アドレス履歴テーブル40cから消去するアドレスは、最も古いアドレス最先に登録されたアドレス、フラグデータの更新のない期間が最も長いアドレス、登録されてから一定期間が経過したフラグデータの更新回数が一定以下であるアドレス等、予め定められた条件に従って特定すれば良い。一方、ステップ602で取得したアドレスがアドレス履歴テーブル40cに登録されている場合、マクロ登録判断部40は、そのアドレスのフラグデータの値を1加算するステップ607。そして、更新後のフラグデータの値が予め設定された閾値に達したか否かを判断するステップ608。ここで、閾値の値は、システムの仕様等に応じて適当に設定される。フラグデータが閾値に達していない場合は、マクロ登録判断部40による処理が終了し、命令キャッシュ20における次のキャッシュヒットを待つ。一方、フラグデータが閾値に達した場合、マクロ登録判断部40は、そのアドレスをマクロ31として登録するように、マクロキャッシュ部30に指示するステップ609。マクロキャッシュ部30は、マクロ登録判断部40からの指示を受け付けると、マクロ31の登録処理を行う。すなわち、各マクロ31において、図4に示した命令判断部32による処理が行われる。そして、処理対象となったアドレスに対応する命令列が、既にマクロ31として登録されている場合、そのマクロ31にアドレスが追加登録される。一方、処理対象となったアドレスに対応する命令列がマクロ31として登録されていない場合は、その命令列に関するマクロ31が新たに作成される。<キャッシュシステムの動作>次に、上記のように構成されたキャッシュシステムを備えたCPU100における、命令フェッチユニット10による命令読み込み時の動作について説明する。図7は、命令読み込み時のCPU100の動作を示すフローチャートである。命令フェッチユニット10は、実行しようとする命令を読み込む場合、その命令のメインメモリ上におけるアドレスを指定する。このアドレスの情報は、命令フェッチユニット10から命令キャッシュ20、マクロキャッシュ部30およびマクロ登録判断部40に供給される。これにより、命令キャッシュ20、マクロキャッシュ部30およびマクロ登録判断部40は、読み込み対象の命令を特定するアドレスを取得するステップ701。命令キャッシュ20およびマクロキャッシュ部30は、取得したアドレスに基づき、命令フェッチユニット10が取得しようとする命令を保持キャッシュしているか否かを判断するステップ702。ここで、取得したアドレスの命令をマクロキャッシュ部30が保持していた場合、その命令を命令キャッシュ20が保持しているか否かに関わらず、マクロキャッシュ部30から命令フェッチユニット10へ命令が読み込まれるステップ703、704。これは、読み込み対象選択部50の選択による。また、取得したアドレスの命令をマクロキャッシュ部30が保持しておらず、命令キャッシュ20が保持していた場合、命令キャッシュ20から命令フェッチユニット10へ命令が読み込まれるステップ703、705、706。このとき、マクロ登録判断部40が、この命令をマクロキャッシュ部30に登録するか否かを判断する図6を参照。そして、マクロキャッシュ部30への登録条件例えば、図6のステップ608に示した読み込み頻度を満足するならば、マクロキャッシュ部30への登録が行われるステップ707、708。ここで、登録対象の命令が、異なるアドレスに関連付けられて既にマクロキャッシュ部30に登録されている命令であれば、その命令を登録したマクロ31に、ステップ701で取得したアドレスが追加登録される図4を参照。一方、登録対象の命令がマクロキャッシュ部30に未登録であるならば、その命令のマクロ31が新たに作成されて、ステップ701で取得したアドレスが登録される。命令フェッチユニット10が読み込もうとする命令が、マクロキャッシュ部30にも命令キャッシュ20にも保持されていない場合、命令フェッチユニット10は、メインメモリにアクセスして、指定したアドレスの命令を読み込むステップ703、705、709。この命令は、命令キャッシュ20に保持キャッシュされステップ710、次回の命令フェッチユニット10による読み込みの際は、命令キャッシュ20から読み込まれるステップ705でYesとなる。以上説明したように、本実施形態は、命令キャッシュ20に保持された命令のうち、所定の条件を満足する命令について、命令キャッシュ20とは別に用意されたキャッシュ手段であるマクロキャッシュ部30に登録して保持する。そして、マクロキャッシュ部30は、1つの命令と複数のアドレスとを関連付け可能なマクロ31により、メインメモリ上の異なるアドレスに格納された同一の命令を1つのマクロ31で管理する。一方、命令キャッシュ20では、従来と同様に、同一の命令であってもアドレスが異なれば個別に保持される。このため、メインメモリにおいて複数のアドレスに格納された同一の命令列が本実施形態のキャッシュシステムにより保持される場合、マクロキャッシュ部30に登録されると、命令キャッシュ20に保持されるよりも冗長性が抑制される。例えば、32KBケーバイトの命令キャッシュ20を実装し、命令キャッシュ20に保持される命令の冗長率保持されている命令のうち、同一の命令が異なるアドレスで保持されている割合が10である場合を想定する。この冗長率10は、非特許文献1、2に基づいて仮定した値である。本実施形態のマクロキャッシュ部30を設けない場合、命令キャッシュ20の実効キャッシュサイズは、概算で28.8KB=32KB×0.9である。一方、本実施形態のマクロキャッシュ部30を設けた場合、所定の条件を満たす命令列は、マクロキャッシュ部30に登録されて命令キャッシュ20から除かれる。そして、複数の相異なるアドレスに格納された重複する命令列は、マクロキャッシュ部30においては1つのマクロ31に登録される。そのため、本実施形態は、マクロキャッシュ部30を設けない場合と比較して、命令キャッシュ20の実効キャッシュサイズを、本来の記憶容量である32KBにより近づけることができ、キャッシュ効率を向上させることができる。また、本実施形態は、命令キャッシュ20に保持された命令の読み込みキャッシュヒット頻度に基づいてマクロキャッシュ部30に登録する命令列を決定し、動的にマクロ31を作成する。このため、一度メインメモリから読み込まれた命令を直ちに保持する命令キャッシュ20や従来のキャッシュシステムと比較して、再利用率の高い命令列をマクロ31として登録することができ、キャッシュ効率をさらに向上させることができる。また、本実施形態のマクロキャッシュ部30は、命令キャッシュ20とは異なる仕組みにより命令列を保持するため、通常のキャッシュメモリとして使用されるような連想メモリCAMを使ったタグ方式ではなく、一般的なSRAMを用いて実現することができる。そのため、単純にキャッシュメモリの記憶容量を増やす場合と比較して、コスト費用の増加を抑制することができる。以上、本実施形態について説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。上記実施形態に、種々の変更または改良を加えたものも、本発明の技術的範囲に含まれることは、特許請求の範囲の記載から明らかである。例えば、上記実施形態では、マクロキャッシュ部30に命令列を登録した場合に、直ちに命令キャッシュ20から対応する命令列を消去することとしたが、直ちに消去するのではなく、マクロキャッシュ部30に登録した後の所定のタイミングで消去するようにしても構わない。