フェッチアドレスに対応した命令コードをキャッシュするキャッシュメモリと、前記キャッシュメモリにキャッシュされる命令コードを制御するキャッシュ制御回路と、を備え、前記キャッシュ制御回路は、前記フェッチアドレスがサブルーチンへの分岐を示す場合、当該サブルーチンに対応する命令コードをキャッシュ対象とし、前記キャッシュ対象とされた命令コードの数が予め設定された上限数を超えた場合、前記キャッシュ対象とされた命令コードを無効にする、キャッシュメモリ装置。前記キャッシュ制御回路は、前記フェッチアドレスがサブルーチンへの分岐を示す場合、前記キャッシュメモリに前記サブルーチンに対応する命令コードをキャッシュし、前記キャッシュされた命令コードの数が予め設定された上限数を超えた場合、前記キャッシュされた命令コードを無効にする、請求項1に記載のキャッシュメモリ装置。前記キャッシュメモリは、前記命令コードが格納されるメモリセル毎に設けられ、前記キャッシュされた各々の命令コードが有効であるか否かを示す有効フラグを保持可能に構成され、前記キャッシュメモリに前記サブルーチンに対応する命令コードがキャッシュされる際に前記有効フラグが有効とされ、前記キャッシュされた命令コードの数が予め設定された上限数を超えた場合、前記キャッシュされた命令コードの有効フラグが無効とされる、請求項2に記載のキャッシュメモリ装置。前記キャッシュメモリに前記命令コードがキャッシュされる場合、前記有効フラグが無効となっているメモリセルに前記命令コードがキャッシュされる、請求項3に記載のキャッシュメモリ装置。前記キャッシュ制御回路は、前記フェッチアドレスに対応した命令コードを一時的に保持可能なバッファを備え、前記キャッシュ制御回路は、前記フェッチアドレスがサブルーチンへの分岐を示す場合、前記バッファに前記サブルーチンに対応する命令コードを保持し、前記キャッシュされた命令コードの数が予め設定された上限数以下である場合、前記バッファに保持されている命令コードを前記キャッシュメモリに転送し、前記キャッシュされた命令コードの数が予め設定された上限数を超えた場合、前記バッファに保持されている命令コードを無効にする、請求項1に記載のキャッシュメモリ装置。前記バッファは、前記命令コードが格納されるメモリセル毎に設けられ、前記格納された各々の命令コードが有効であるか否かを示す有効フラグを保持可能に構成され、前記バッファに前記サブルーチンに対応する命令コードが保持される際に前記有効フラグが有効とされ、前記保持された命令コードの数が予め設定された上限数を超えた場合、前記保持された命令コードの有効フラグが無効とされる、請求項5に記載のキャッシュメモリ装置。前記バッファに前記命令コードが保持される場合、前記有効フラグが無効となっているメモリセルに前記命令コードが保持される、請求項6に記載のキャッシュメモリ装置。前記命令コードの予め設定された上限数は、CPUがメモリにフェッチアドレスを出力してから前記メモリが前記命令コードを出力するまでのクロック数を、前記CPUが一つの命令コードを実行する際に必要なクロック数で除算した数である、請求項1乃至7のいずれか一項に記載のキャッシュメモリ装置。前記キャッシュ制御回路は、前記キャッシュメモリにおけるキャッシュの開始と停止を指示する更新制御回路を備え、前記更新制御回路は、前記キャッシュメモリに格納されたサブルーチンの命令数をカウントするカウンタを備え、前記命令コードの予め設定された上限数と前記カウンタの値とを比較し、前記カウンタの値が前記命令コードの予め設定された上限数を超えた場合に、前記キャッシュ対象とされた命令コードを無効にする、請求項1乃至8に記載のキャッシュメモリ装置。前記キャッシュ制御回路は、前記フェッチアドレスがサブルーチンへ分岐したことを検出する分岐検出回路を備える、請求項1乃至9に記載のキャッシュメモリ装置。前記キャッシュ制御回路は、前記フェッチアドレスのサブルーチンへの分岐を示すCPUから出力された分岐通知信号に基づいて、前記フェッチアドレスがサブルーチンへ分岐したと判断する、請求項1乃至9に記載のキャッシュメモリ装置。前記キャッシュ制御回路は、前記命令コードの上限数を設定する上限命令数設定回路を備え、前記上限命令数設定回路は、CPUから出力された、前記CPUが一つの命令コードを実行する際に必要なクロック数に関するクロック数情報と、メモリから出力された、前記CPUが前記メモリにフェッチアドレスを出力してから前記メモリが前記命令コードを出力するまでのクロック数に関するレイテンシ情報と、に基づき前記命令コードの上限数を設定する、請求項1乃至11に記載のキャッシュメモリ装置。CPUと、前記CPUで実行される命令コードが格納されたメモリと、前記CPUから出力されたフェッチアドレスに対応した命令コードをキャッシュするキャッシュメモリと、前記キャッシュメモリにキャッシュされる命令コードを制御するキャッシュ制御回路と、を備え、前記キャッシュ制御回路は、前記フェッチアドレスがサブルーチンへの分岐を示す場合、当該サブルーチンに対応する命令コードをキャッシュ対象とし、前記キャッシュ対象とされた命令コードの数が予め設定された上限数を超えた場合、前記キャッシュ対象とされた命令コードを無効にする、マイクロプロセッサシステム。フェッチアドレスに対応した命令コードをキャッシュするキャッシュメモリにおけるキャッシュ制御方法であって、前記フェッチアドレスがサブルーチンへの分岐を示す場合、当該サブルーチンに対応する命令コードをキャッシュ対象とし、前記キャッシュ対象とされた命令コードの数が予め設定された上限数を超えた場合、前記キャッシュ対象とされた命令コードを無効にする、キャッシュ制御方法。しかしながら、特許文献1に開示されているマイクロプロセッサシステムでは、サブルーチンに含まれる命令コードの数を考慮せずに、サブルーチンに含まれる命令コードをキャッシュメモリにキャッシュしている。このため、命令コードを効率的にキャッシュすることができないという問題があった。本発明にかかるキャッシュメモリ装置は、フェッチアドレスに対応した命令コードをキャッシュするキャッシュメモリと、前記キャッシュメモリにキャッシュされる命令コードを制御するキャッシュ制御回路と、を備える。前記キャッシュ制御回路は、前記フェッチアドレスがサブルーチンへの分岐を示す場合、当該サブルーチンに対応する命令コードをキャッシュ対象とし、前記キャッシュ対象とされた命令コードの数が予め設定された上限数を超えた場合、前記キャッシュ対象とされた命令コードを無効にする。本発明にかかるキャッシュメモリ装置では、キャッシュメモリにキャッシュされた命令コードの数が予め設定された上限数を超えた場合、キャッシュされた命令コードを無効としている。よって、命令コードの数が比較的少ないサブルーチンの命令コードを優先的にキャッシュメモリにキャッシュすることができるので、容量が比較的小さいキャッシュメモリであっても、命令コードを効率的にキャッシュメモリにキャッシュすることができる。本発明にかかるマイクロプロセッサシステムは、CPUと、前記CPUで実行される命令コードが格納されたメモリと、前記CPUから出力されたフェッチアドレスに対応した命令コードをキャッシュするキャッシュメモリと、前記キャッシュメモリにキャッシュされる命令コードを制御するキャッシュ制御回路と、を備える。前記キャッシュ制御回路は、前記フェッチアドレスがサブルーチンへの分岐を示す場合、当該サブルーチンに対応する命令コードをキャッシュ対象とし、前記キャッシュ対象とされた命令コードの数が予め設定された上限数を超えた場合、前記キャッシュ対象とされた命令コードを無効にする。本発明にかかるマイクロプロセッサシステムでは、キャッシュメモリにキャッシュされた命令コードの数が予め設定された上限数を超えた場合、キャッシュされた命令コードを無効としている。よって、命令コードの数が比較的少ないサブルーチンの命令コードを優先的にキャッシュメモリにキャッシュすることができるので、容量が比較的小さいキャッシュメモリであっても、命令コードを効率的にキャッシュメモリにキャッシュすることができる。本発明にかかるキャッシュ制御方法は、フェッチアドレスに対応した命令コードをキャッシュするキャッシュメモリにおけるキャッシュ制御方法であって、前記フェッチアドレスがサブルーチンへの分岐を示す場合、当該サブルーチンに対応する命令コードをキャッシュ対象とし、前記キャッシュ対象とされた命令コードの数が予め設定された上限数を超えた場合、前記キャッシュ対象とされた命令コードを無効にする。本発明にかかるキャッシュ制御方法では、キャッシュメモリにキャッシュされた命令コードの数が予め設定された上限数を超えた場合、キャッシュされた命令コードを無効としている。よって、命令コードの数が比較的少ないサブルーチンの命令コードを優先的にキャッシュメモリにキャッシュすることができるので、容量が比較的小さいキャッシュメモリであっても、命令コードを効率的にキャッシュメモリにキャッシュすることができる。本発明により、命令コードを効率的にキャッシュすることが可能なキャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステムを提供することができる。<実施の形態1>以下、図面を参照して本発明の実施の形態について説明する。図1は、本実施の形態にかかるキャッシュメモリ装置を含むマイクロプロセッサシステムを示すブロック図である。図1に示すマイクロプロセッサシステム1は、CPU10、メモリ11、キャッシュメモリ12、およびキャッシュ制御回路13を有する。キャッシュ制御回路13は、分岐検出回路16、更新制御回路17、および上限命令数設定回路19を有する。ここで、キャッシュメモリ12とキャッシュ制御回路13は、キャッシュメモリ装置を構成する。CPU10は、メモリ11、キャッシュメモリ12、および分岐検出回路16に、フェッチアドレス51を出力する。また、CPU10は、メモリ11から出力された命令コード52、およびキャッシュメモリ12から出力された命令コード54を入力し、入力された命令コード52、54を実行する。ここで、命令コード52はメモリ11から出力された命令コードであり、フェッチアドレス51に対応する命令コードがキャッシュメモリ12にキャッシュされていない場合キャッシュヒットしない場合に、メモリ11からCPU10に出力される命令コードである。また、命令コード54はキャッシュメモリ12から出力された命令コードであり、フェッチアドレス51に対応する命令コードがキャッシュメモリ12にキャッシュされている場合キャッシュヒットした場合に、キャッシュメモリ12からCPU10に出力される命令コードである。CPU10は、プリフェッチバッファ14を備える。プリフェッチバッファ14は、現在実行している命令の次のアドレス以降の命令コードを、予めフリップフロップ等に格納することができる。CPU10に供給される命令コード52、54は、一時的にプリフェッチバッファ14に格納された後、CPU10において実行される。また、CPU10にはメモリ11から命令コード格納イネーブル信号53が供給される。命令コード格納イネーブル信号53は、メモリ11から有効な命令コード52が出力されたことを示す信号である。プリフェッチバッファ14は、メモリ11から命令コード格納イネーブル信号53が出力されたタイミングで、命令コード52を格納する。メモリ11は、例えば比較的低速なメモリであるDRAMDynamicRandomAccessMemory等で構成することができる。メモリ11には、フェッチアドレスに対応づけて命令コードが格納されている。メモリ11は、CPU10から出力されたフェッチアドレス51に対応した命令コード52をCPU10およびキャッシュメモリ12に出力する。また、メモリ11は、メモリ11から有効な命令コード52が出力されたことを示す命令コード格納イネーブル信号53を、CPU10、キャッシュメモリ12、および更新制御回路17に出力する。分岐検出回路16は、CPU10から出力されたフェッチアドレス51を監視し、当該フェッチアドレス51がサブルーチンへの分岐を示す場合、更新制御回路17に分岐通知信号55を出力する。具体的には、分岐検出回路16は、CPU10から出力されたフェッチアドレス51が連続するアドレスから連続しないアドレスに変化した場合に、フェッチアドレス51がサブルーチンへ分岐したと判断する。上限命令数設定回路19は、キャッシュメモリ12に格納される命令コード数の上限を設定するための回路である。上限命令数設定回路19は、設定された上限命令数を示す上限命令数信号56を更新制御回路17に出力する。例えば、上限命令数設定回路19はレジスタ不図示を備え、このレジスタに上限命令数に対応する情報を格納することができる。ユーザは、外部からこのレジスタにアクセスして上限命令数を設定することができる。更新制御回路17は、キャッシュメモリ12におけるキャッシュの開始と停止を指示するための回路である。更新制御回路17は、分岐検出回路16から出力された分岐通知信号55と上限命令数設定回路19から出力された上限命令数信号56とを入力し、キャッシュメモリ12にキャッシュ開始通知信号57、キャッシュ停止通知信号58、および有効フラグビットリセット信号59を出力する。ここで、キャッシュ開始通知信号57は、キャッシュメモリ12が命令コード52をキャッシュし始めるタイミングを通知する信号である。また、キャッシュ停止通知信号58は、キャッシュメモリ12における命令コード52のキャッシュの終了を通知する信号である。有効フラグビットリセット信号59は、キャッシュメモリ12の有効フラグビット15をリセットするための信号である。また、更新制御回路17はカウンタ18を備える。カウンタ18は、サブルーチンの命令数をカウントする回路である。カウンタ18は、メモリ11から命令コード格納イネーブル信号53が出力される毎にカウンタ値をインクリメントする。すなわち、命令コード格納イネーブル信号53は、メモリ11から有効な命令コード52が出力されたことを示す信号であり、キャッシュメモリ12は命令コード格納イネーブル信号53が出力される毎にキャッシュメモリ12に命令コード52を格納する。よって、カウンタ18に命令コード格納イネーブル信号53が供給される毎にカウンタ値をインクリメントすることで、キャッシュメモリ12に格納される命令コードの数をカウントすることができる。そして、更新制御回路17は、上限命令数信号56が示す上限命令数とカウンタ値とを比較し、カウンタ値が上限命令数を超えた場合に、キャッシュメモリ12に有効フラグビットリセット信号59を出力する。キャッシュメモリ12は、メモリ11よりも高速に動作可能なメモリで構成されている。例えば、キャッシュメモリ12には高速に動作するSRAMStaticRandomAccessMemoryを用いることができる。キャッシュメモリ12は、更新制御回路17から出力されたキャッシュ開始通知信号57、キャッシュ停止通知信号58、および有効フラグビットリセット信号59、並びに、CPU10から出力されたフェッチアドレス51、メモリ11から出力された命令コード52および命令コード格納イネーブル信号53を入力し、CPU10に命令コード54を出力する。キャッシュメモリ12は、CPU10から出力されたフェッチアドレス51に対応した命令コードをキャッシュする。すなわち、キャッシュメモリ12は、更新制御回路17からキャッシュ開始通知信号56が供給されると、命令コード格納イネーブル信号53が供給される毎にメモリ11から出力された命令コード52を、フェッチアドレス51と対応づけてキャッシュする。また、キャッシュメモリ12は、更新制御回路17からキャッシュ停止通知信号57が供給されると、命令コード52のキャッシュを停止する。また、キャッシュメモリ12は、命令コードが格納されるメモリセル毎に設けられた有効フラグビット有効フラグ15を備えている。有効フラグビット15は、キャッシュされた各々の命令コードが有効であるか否かを示すフラグである。キャッシュメモリ12に命令コードがキャッシュされる際、有効フラグビット15は有効とされる例えば、有効を示す有効フラグビット15の論理値を1とする。そして、キャッシュされた命令コードの数つまり、カウンタ18の値が予め設定された上限数つまり、上限命令数設定回路19で設定された上限命令数を超えた場合、キャッシュされた命令コードの有効フラグビット15は無効とされる例えば、無効を示す有効フラグビット15の論理値を0とする。有効フラグビット15を無効とする場合、更新制御回路17はキャッシュメモリ12に有効フラグビットリセット信号59を出力する。一方、キャッシュされた命令コードの数が予め設定された上限数以下である場合、キャッシュされた命令コードの有効フラグビット15は有効1のままとなる。換言すると、フェッチアドレスがサブルーチンへの分岐を示す場合、サブルーチンに対応する命令コードがキャッシュメモリ12へのキャッシュ対象とされ、キャッシュ対象とされた命令コードの数が予め設定された上限数を超えた場合、キャッシュ対象とされた命令コードが無効とされる。なお、キャッシュメモリ12に命令コードが新たにキャッシュされる場合、有効フラグビット15が無効0となっているメモリセルに命令コードをキャッシュすることができる。また、キャッシュメモリ12の容量が一杯となった場合は、最後に使用されてから最も長く時間が経過した命令コードを、新たにキャッシュする命令コードで上書きしてもよい。また、使用頻度の低い命令コードから順に上書きしてもよい。なお、上書きしたくない命令コードについては、有効フラグビット15を有効1に固定することで、上書きを禁止することができる。次に、本実施の形態にかかるキャッシュメモリ装置を含むマイクロプロセッサシステム1の動作について説明する。図2は、図1に示すキャッシュメモリ装置の動作を説明するためのフローチャートである。図3、図4は、図1に示すキャッシュメモリ装置の動作を説明するための図であり、命令コードがキャッシュされるキャッシュメモリ12のメモリセルと有効フラグビットの状態を示している。図3、図4に示すように、有効フラグビットは、各メモリセルに対応するように設けられている。まず、CPU10は、命令コードをメモリ11から読み出すために、フェッチアドレス51をメモリ11に出力し始めるステップS1。分岐検出回路16は、CPU10から出力されたフェッチアドレス51を監視し、フェッチアドレス51がサブルーチンへの分岐を示す場合ステップS2:Yes、更新制御回路17に分岐通知信号55を出力する。例えば、分岐検出回路16は、CPU10から出力されたフェッチアドレス51が連続するアドレスから連続しないアドレスに変化した場合に、プログラムがサブルーチンへ分岐したと判断する。なお、分岐検出回路16は、フェッチアドレス51がサブルーチンへの分岐を示さない場合ステップS2:No、CPU10から出力されたフェッチアドレス51の監視を継続する。更新制御回路17は、分岐検出回路16から分岐通知信号55が供給されると、キャッシュ開始通知信号57をキャッシュメモリ12に出力する。これにより、キャッシュメモリ12は、命令コード52のキャッシュを開始する。一方、メモリ11は、フェッチアドレス51が供給されると、このフェッチアドレス51に対応した命令コード52を、CPU10のプリフェッチバッファ14およびキャッシュメモリ12に出力する。また、メモリ11は、メモリ11から有効な命令コード52が出力されたことを示す命令コード格納イネーブル信号53を、CPU10のプリフェッチバッファ14、キャッシュメモリ12、および更新制御回路17に出力する。なお、図2に示す動作例では、フェッチアドレス51に対応する命令コードがキャッシュメモリ12にキャッシュされていない場合つまり、キャッシュヒットしない場合を示している。CPU10のプリフェッチバッファ14は、メモリ11から命令コード52および命令コード格納イネーブル信号53が供給されると、この命令コード52をプリフェッチバッファ14に格納する。また、キャッシュメモリ12は、メモリ11から命令コード52および命令コード格納イネーブル信号53が供給されると、この命令コード52をキャッシュメモリ12のメモリセルにキャッシュするステップS3。このとき、キャッシュメモリ12は、命令コード52を格納したメモリセルに対応する有効フラグビット15の論理値を1に更新するステップS4。すなわち、キャッシュメモリ12に格納された命令コード52を有効とする。例えば、有効フラグビット15は、メモリセルに有効な命令コードが格納されている場合は1、有効な命令コードが格納されていない場合は0となる。そして、次のサブルーチンの命令コードが格納される場合は、有効フラグビット15が0となっているメモリセルに格納される。また、更新制御回路17のカウンタ18は、メモリ11から命令コード格納イネーブル信号53が供給されると、カウンタ値をインクリメントするステップS5。そして、更新制御回路17は、上限命令数信号56によって設定された命令コードの上限数と、カウンタ18の値キャッシュメモリ12に格納された命令コードの数に対応とを比較し、カウンタ18の値が命令コードの上限数を超えたか否か判断するステップS6。カウンタ18の値が命令コードの上限数を超えていない場合つまり、カウンタ18の値が命令コードの上限数以下である場合、ステップS6:No、キャッシュされた命令コードの有効フラグビットを有効1のままとする。そして、分岐検出回路16を用いてCPU10から出力された次のフェッチアドレス51を監視し、フェッチアドレス51が新たなサブルーチンへの分岐を示さない場合ステップS7:No、ステップS3以降の動作を繰り返す。一方、CPU10から出力された次のフェッチアドレス51が新たなサブルーチンへの分岐を示す場合ステップS7:Yes、カウンタ18の値をリセットした後ステップS8、ステップS3以降の動作を繰り返す。また、カウンタ18の値が命令コードの上限数を超えた場合ステップS6:Yes、最後にキャッシュした命令コードを含むサブルーチンの全ての命令コードの有効フラグビットを無効0とするステップS9。すなわち、更新制御回路17は、カウンタ18の値が上限命令数信号56によって設定された命令コードの上限数を超えた場合ステップS6:Yes、キャッシュメモリ12に有効フラグビットリセット信号59を出力し、最後にキャッシュした命令コードを含むサブルーチンの全ての命令コードの有効フラグビットを無効0とする。また、更新制御回路17は、キャッシュメモリ12が命令コード52をキャッシュすることを停止するために、キャッシュメモリ12にキャッシュ停止通知信号58を出力する。その後、ステップS2以降の動作を繰り返す。上記のステップS1~S8の動作について、図3を用いて具体的に説明する。ここで、図3に示す例では、上限命令数設定回路19で設定された命令コードの上限数を4としている。また、図3のタイミングt1~t7のそれぞれは、CPU10からフェッチアドレス51が出力され、キャッシュメモリ12にフェッチアドレス51に対応した命令コード52がキャッシュされるタイミングに対応している。すなわち、図3のタイミングt1~t7毎に、ステップS3~S6を含む処理が1回実施されている。図3に示す例では、サブルーチンAに対応する命令コードA1~A4、およびサブルーチンBに対応する命令コードB1~B3がキャッシュメモリ12のメモリセルに格納される場合を示している。なお、命令コードA1~A4に対応するフェッチアドレスをaddA1~addA4とし、命令コードB1~B3に対応するフェッチアドレスをaddB1~addB3とする。まず、タイミングt1における動作について説明する。サブルーチンAに対応するフェッチアドレスaddA1がCPU10から出力されると、分岐検出回路16は分岐を検出し、更新制御回路17に分岐通知信号55を出力するステップS2:Yes。その後、キャッシュメモリ12は、更新制御回路17からキャッシュ開始通知信号57が供給され、メモリ11から命令コード格納イネーブル信号53が供給されると、フェッチアドレスaddA1に対応する命令コードA1をメモリセルに格納するステップS3。このとき、命令コードA1は、有効フラグビットの論理値が0のメモリセルに格納される。命令コードA1がメモリセルに格納されると、当該番地の有効フラグビット15の論理値は1に更新されるステップS4。その後、ステップS5、S6を経て、ステップS7へと至る。タイミングt2におけるフェッチアドレスaddA2は、サブルーチンAにおけるフェッチアドレスであるので、ステップS7において、分岐はないと判断されるステップS7:No。そして、キャッシュメモリ12は、メモリ11から命令コード格納イネーブル信号53が供給されると、フェッチアドレスaddA2に対応する命令コードA2をメモリセルに格納するステップS3。命令コードA2がメモリセルに格納されると、当該番地の有効フラグビット15の論理値は1に更新されるステップS4。その後、ステップS5、S6を経て、ステップS7へと至る。以降、タイミングt3、t4についても同様の動作となる。なお、タイミングt4では、カウンタ18の値が4であり、上限命令数設定回路19で設定された命令コードの上限数である4を超えていないのでステップS6:No、ステップS7へと進む。そして、タイミングt5において、新たにサブルーチンBのフェッチアドレスaddB1がCPU10から出力されると、分岐検出回路16は分岐を検出し、更新制御回路17に分岐通知信号55を出力するステップS7:Yes。更新制御回路17は、分岐検出回路16が分岐を検出したので、カウンタ18の値をリセットするステップS8。キャッシュメモリ12は、メモリ11から命令コード格納イネーブル信号53が供給されると、フェッチアドレスaddB1に対応する命令コードB1をメモリセルに格納するステップS3。命令コードB1がメモリセルに格納されると、当該番地の有効フラグビット15の論理値は1に更新されるステップS4。その後、ステップS5、S6を経て、ステップS7へと至る。以降、タイミングt6、t7についても同様の動作となる。なお、タイミングt7では、カウンタ18の値が3であり、上限命令数設定回路19で設定された命令コードの上限数である4を超えていないので、ステップS7へと進む。次に、上記のステップS1~S7、S9の動作つまり、ステップS9有効フラグビットのリセットを含む動作について、図4を用いて具体的に説明する。ここで、図4に示す例では、上限命令数設定回路19で設定された命令コードの上限数を4としている。また、図4のタイミングt1~t12のそれぞれは、CPU10からフェッチアドレス51が出力され、キャッシュメモリ12にフェッチアドレス51に対応した命令コード52がキャッシュされるタイミングに対応している。すなわち、図4のタイミングt1~t12毎に、ステップS3~S6を含む処理が1回実施されている。図4に示す例では、サブルーチンAに対応する命令コードA1~A4、サブルーチンBに対応する命令コードB1~B3がキャッシュメモリ12のメモリセルに格納された場合、およびサブルーチンCに対応する命令コードC1~C5が一度キャッシュメモリ12のメモリセルに格納された後、無効とされた場合を示している。なお、図4のタイミングt1~t7の動作は図3に示した動作と同様であるので、重複した説明は省略する。タイミングt8において、新たにサブルーチンCのフェッチアドレスaddC1がCPU10から出力されると、分岐検出回路16は分岐を検出し、更新制御回路17に分岐通知信号55を出力するステップS7:Yes。更新制御回路17は、分岐検出回路16が分岐を検出したので、カウンタ18の値をリセットするステップS8。キャッシュメモリ12は、メモリ11から命令コード格納イネーブル信号53が供給されると、フェッチアドレスaddC1に対応する命令コードC1をメモリセルに格納するステップS3。命令コードC1がメモリセルに格納されると、当該番地の有効フラグビット15の論理値は1に更新されるステップS4。その後、ステップS5、S6を経て、ステップS7へと至る。以降、タイミングt9~t11についても同様の動作となる。タイミングt12におけるフェッチアドレスaddC5は、サブルーチンCにおけるフェッチアドレスであるので、ステップS7において、分岐はないと判断されるステップS7:No。そして、キャッシュメモリ12は、メモリ11から命令コード格納イネーブル信号53が供給されると、フェッチアドレスaddC5に対応する命令コードC5をメモリセルに格納するステップS3。命令コードC5がメモリセルに格納されると、当該番地の有効フラグビット15の論理値は1に更新されるステップS4。また、更新制御回路17のカウンタ18はインクリメントされてステップS5、カウント値が5となる。更新制御回路17は、上限命令数信号56によって設定された命令コードの上限数である4と、カウンタ18の値である5とを比較する。この場合、カウンタ18の値が命令コードの上限数を超えているのでステップS6:Yes、サブルーチンCの全ての命令コードC1~C5の有効フラグビットをリセット、つまり無効0とするステップS9。すなわち、図4に示すように、命令コードC1~C5が格納されているメモリセルに対応する有効フラグビットの値を、1から0に更新する。これにより、メモリセルに格納されている命令コードC1~C5が無効とされ、以降、新たに命令コードが格納される際は、命令コードC1~C5が格納されていたメモリセルに新たな命令コードが上書きされる。背景技術で説明したように、マイクロプロセッサシステムでは、低速メモリから命令をフェッチする際の性能低下を防ぐために、プリフェッチバッファやキャッシュメモリ装置が用いられている。ここで、プリフェッチバッファは、現在実行している命令の次のアドレス以降の命令コードを予めフリップフロップ等に格納することができる。これにより、通常の命令の実行時にメモリから命令コードを読み出す際、メモリの読み出し速度が遅いことに起因する性能の低下を防ぐことができる。また、キャッシュメモリ装置は、使用頻度の高い命令コードを予めRAMに格納することができる。これにより、主にサブルーチンへの分岐時にメモリから命令コードを読み出す際、メモリの読み出し速度が遅いことに起因する性能の低下を防ぐことができる。例えば、2クロックに1回フェッチ可能なメモリフェッチレイテンシ=2が、バス幅64ビットでCPUと接続されているとする。CPUが1クロック毎に32ビットの命令を実行可能な場合、CPUが命令を2クロック分つまり、64ビット実行すると同時に、次のアドレスの命令つまり、64ビットの命令がプリフェッチバッファに格納されるため、フェッチレイテンシの遅さを隠蔽できる。しかしながら、プログラムの分岐が発生した場合は、プリフェッチバッファを用いたとしても、性能低下のペナルティを受けることになる。この理由は、プリフェッチバッファに格納されている先読みした命令コードが分岐の発生により使用されなくなるため、これらの命令コードを破棄し、改めて命令コードをフェッチするする必要があるからである。このとき、分岐により受けるペナルティの程度は、分岐後のサブルーチンの命令コードの数によって異なる。命令コードの数が多いサブルーチン例えば、100命令とするを実行する場合は、最初に分岐によるペナルティを受けるが、その後はプリフェッチバッファに命令コードが格納されることで、フェッチレイテンシの遅さを隠蔽することができる。よって、確実にペナルティを受けるのは、例えば100クロックに1回となる。これに対して、命令コードの数が少ないサブルーチン例えば、3命令とするを実行する場合は、最初に分岐によるペナルティを受け、その後、プリフェッチバッファに命令コードが格納される。しかし、この場合は、プリフェッチバッファを用いた効果が出てくる前に、次のサブルーチンへと分岐してしまうため、例えば3クロックに1回の割合と、相当高い割合でペナルティを受けることになる。すなわち、マイクロプロセッサシステムでは、比較的命令コード数の多いサブルーチンはキャッシュメモリ装置に格納せず、比較的命令コード数の少ないサブルーチンの命令コードのみをキャッシュメモリ装置に格納することで、ペナルティを受ける確率を減らすことができ、少ないコストでマイクロプロセッサシステムのパフォーマンスを向上させることができる。しかしながら、特許文献1に開示されているマイクロプロセッサシステムでは、サブルーチンに含まれる命令の数を考慮せずに、サブルーチンに含まれる命令をキャッシュメモリにキャッシュしていた。このため、命令コードを効率的にキャッシュすることができないという問題があった。これに対して本実施の形態にかかるキャッシュメモリ装置では、キャッシュメモリ12にキャッシュされた命令コードの数が予め設定された上限数を超えた場合、キャッシュされた命令コードを無効としている。換言すると、本実施の形態にかかるキャッシュメモリ装置では、予め設定された上限数を超える数の命令コードを含むサブルーチンの命令コードは、キャッシュメモリ12にキャッシュされない。よって、命令コードの数が比較的少ないサブルーチンの命令コードを優先的にキャッシュメモリ12にキャッシュすることができるので、容量が比較的小さいキャッシュメモリであっても、命令コードを効率的にキャッシュメモリにキャッシュすることができる。通常、マイクロプロセッサシステムを制御するプログラムには、様々なタスクを実行するサブルーチンが存在する。例えば、組み込み系のマイクロプロセッサシステムでは、周辺機器からの割り込み信号を待つために同一の番地でループするようなサブルーチンや、一定時間経過するのを待つために、カウンタに所定の値をセットしてデクリメントしながらループし、0になったらループを抜けるようなサブルーチンなど、短いサブルーチンが多く存在する。本実施の形態にかかるキャッシュメモリ装置は、このように短いサブルーチンが多く存在するプログラムを実行するマイクロプロセッサシステムに用いることで、特に効果を発揮することができる。また、上限命令数設定回路19で設定される命令コードの上限数は、任意に設定可能であるが、少ないメモリ容量でキャッシュメモリ装置の性能を向上させるためには、メモリ11のフェッチレイテンシ分のクロック数を待つ間にCPU10が実行可能な数の命令コードを、キャッシュメモリ12に保持していればよい。ここで、メモリ11のフェッチレイテンシとは、CPU10がフェッチアドレス51を出力してから、メモリ11が命令コード52を出力するまでのクロック数である。すなわち、命令コードの上限数=メモリ11のフェッチレイテンシ/1命令コードを実行するのに必要なクロック数で求められる命令コードの上限数が、少ないメモリ容量でマイクロプロセッサシステムの性能を向上させる最も効率のよい設定値となる。以上で説明したように、本実施の形態にかかる発明により、命令コードを効率的にキャッシュすることが可能なキャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステムを提供することができる。<実施の形態2>次に、本発明の実施の形態2について説明する。図5は、本実施の形態にかかるキャッシュメモリ装置を含むマイクロプロセッサシステム2を示すブロック図である。図5に示すマイクロプロセッサシステム2は、CPU20、メモリ11、キャッシュメモリ12、およびキャッシュ制御回路23を有する。キャッシュ制御回路23は、更新制御回路17および上限命令数設定回路19を有する。ここで、キャッシュメモリ12とキャッシュ制御回路23は、キャッシュメモリ装置を構成する。本実施の形態にかかるキャッシュメモリ装置を含むマイクロプロセッサシステム2では、図1に示した分岐検出回路16を備えていない点が、実施の形態1にかかるマイクロプロセッサシステム1と異なる。これ以外は、実施の形態1にかかるマイクロプロセッサシステム1と同様であるので、同一の構成要素には同一の符号を付し、重複した説明は省略する。図5に示すように、CPU20は、メモリ11およびキャッシュメモリ12にフェッチアドレス51を出力する。また、CPU20は、メモリ11から出力された命令コード52、およびキャッシュメモリ12から出力された命令コード54を入力し、入力された命令コード52、54を実行する。また、CPU20は、更新制御回路17に分岐通知信号64を出力する。ここで、分岐通知信号64は、CPU20から出力されたフェッチアドレス51がサブルーチンへの分岐を示す場合に、更新制御回路17にサブルーチンへの分岐を通知するための信号である。CPU20は、自身の命令処理により分岐するため、更新制御回路17に分岐通知信号64を出力することができる。ここで、更新制御回路17に供給される分岐通知信号64は、実施の形態1にかかるマイクロプロセッサシステム1の更新制御回路17に供給される分岐通知信号55に対応している。このように、本実施の形態にかかるマイクロプロセッサシステム2では、図2に示したステップS2、S7における分岐の検出をCPU20で実施している。これ以外は、実施の形態1にかかるマイクロプロセッサシステム1と同様であるので、重複した説明は省略する。本実施の形態にかかるマイクロプロセッサシステム2では、実施の形態1にかかるマイクロプロセッサシステム1で用いていた分岐検出回路16を省略することができるので、キャッシュ制御回路を簡素化することができる。<実施の形態3>次に、本発明の実施の形態3について説明する。図6は、本実施の形態にかかるキャッシュメモリ装置を含むマイクロプロセッサシステム3を示すブロック図である。図6に示すマイクロプロセッサシステム3は、CPU30、メモリ31、キャッシュメモリ12、およびキャッシュ制御回路33を有する。キャッシュ制御回路33は、分岐検出回路16、更新制御回路17、および上限命令数設定回路39を有する。ここで、キャッシュメモリ12とキャッシュ制御回路33は、キャッシュメモリ装置を構成する。本実施の形態にかかるキャッシュメモリ装置を含むマイクロプロセッサシステム3では、上限命令数設定回路39が、CPU30から出力されたクロック数情報71とメモリ31から出力されたレイテンシ情報72とを用いて上限命令数を決定している点が、図1に示した実施の形態1にかかるマイクロプロセッサシステム1と異なる。これ以外は、実施の形態1にかかるマイクロプロセッサシステム1と同様であるので、同一の構成要素には同一の符号を付し、重複した説明は省略する。CPU30は、上限命令数設定回路39にクロック数情報71を出力する。クロック数情報71はCPU30が1命令コードを実行するのに必要なクロック数に関する情報である。このクロック数情報71は、CPU30が備えるレジスタ不図示に予め格納しておいてもよい。CPU30のこれ以外の構成および動作は、実施の形態1にかかるマイクロプロセッサ1のCPU10と同様であるので、重複した説明は省略する。メモリ31は、上限命令数設定回路39にレイテンシ情報72を出力する。レイテンシ情報72は、メモリ11のフェッチレイテンシに関する情報である。メモリ31のフェッチレイテンシは、CPU30がフェッチアドレス51を出力してから、メモリ30が命令コード52を出力するまでのクロック数に対応している。このレイテンシ情報72は、メモリ31が備えるレジスタ不図示に予め格納しておいてもよい。メモリ31のこれ以外の構成および動作は、実施の形態1にかかるマイクロプロセッサ1のメモリ11と同様であるので、重複した説明は省略する。上限命令数設定回路39は、CPU30から出力されたクロック数情報71とメモリ31から出力されたレイテンシ情報72とを用いて、キャッシュメモリ12に格納される命令コードの上限数を設定する。上限命令数設定回路39で設定される命令コードの上限数は任意に設定可能であるが、少ないメモリ容量でキャッシュメモリ装置の性能を向上させるためには、メモリ31のフェッチレイテンシ分のクロック数を待つ間に、CPU30が実行する命令コード数をキャッシュメモリ12が保持していればよい。すなわち、命令コードの上限数=メモリ31のフェッチレイテンシ/1命令コードを実行するのに必要なクロック数で求められる命令コードの上限数が、少ないメモリ容量でキャッシュメモリ装置の性能を向上させる最も効率のよい設定値となる。上限命令数設定回路39は、設定された命令コードの上限数を示す上限命令数信号74を更新制御回路17に出力する。ここで、更新制御回路17に供給される上限命令数信号74は、実施の形態1にかかるマイクロプロセッサシステム1の更新制御回路17に供給される上限命令数信号56に対応している。本実施の形態にかかるマイクロプロセッサシステム2では、上限命令数設定回路39において、CPU30から出力されたクロック数情報71とメモリ31から出力されたレイテンシ情報72とを用いて、キャッシュメモリ12に格納される命令コードの上限数を設定することができる。よって、使用するCPU30やメモリ31に応じて、命令コードの上限数をユーザが設定することなく自動的に設定することができる。<実施の形態4>次に、本発明の実施の形態4について説明する。図7は、本実施の形態にかかるキャッシュメモリ装置を含むマイクロプロセッサシステム4を示すブロック図である。図7に示すマイクロプロセッサシステム4は、CPU10、メモリ11、キャッシュメモリ42、およびキャッシュ制御回路43を有する。キャッシュ制御回路43は、分岐検出回路16、更新制御回路17、上限命令数設定回路19、およびバッファ45を有する。ここで、キャッシュメモリ42とキャッシュ制御回路43は、キャッシュメモリ装置を構成する。本実施の形態にかかるキャッシュメモリ装置を含むマイクロプロセッサシステム4では、キャッシュ制御回路43にバッファ45を設け、このバッファ45にメモリ11から出力された命令コード52を一時的に格納し、キャッシュメモリ42に転送している点が、図1に示した実施の形態1にかかるマイクロプロセッサシステム1と異なる。これ以外は、実施の形態1にかかるマイクロプロセッサシステム1と同様であるので、同一の構成要素には同一の符号を付し、重複した説明は省略する。キャッシュメモリ42は、CPU10から出力されたフェッチアドレス51、更新制御回路17から出力された転送イネーブル信号81、およびバッファ45から出力されたキャッシュ対象命令コード82を入力し、CPU10に命令コード54を出力する。キャッシュメモリ42には、バッファ45に一時的に格納されていた命令コードキャッシュ対象命令コード82が転送される。バッファ45は、メモリ11から出力された命令コード52を一時的に格納し、その後、キャッシュメモリ42に転送する。バッファ45は、メモリ11から出力された命令コード52および命令コード格納イネーブル信号53、並びに、更新制御回路17から出力されたキャッシュ開始通知信号57、キャッシュ停止通知信号58、および有効フラグビットリセット信号59を入力し、キャッシュメモリ42にキャッシュ対象命令コード82を出力する。また、バッファ45は、命令コードが格納されるメモリセル毎に設けられた有効フラグビット48を備えている。また、バッファ45に格納された命令コードの数つまり、カウンタ18の値が予め設定された上限数つまり、上限命令数設定回路19で設定された上限命令数を超えた場合、バッファに格納された命令コードの有効フラグビット48は無効とされる例えば、無効を示す有効フラグビットの論理値を0とする。有効フラグビット48を無効とする場合、更新制御回路17はバッファ45に有効フラグビットリセット信号59を出力する。一方、バッファに格納された命令コードの数が予め設定された上限数以下である場合、バッファに格納された命令コードの有効フラグビット48は有効1のままとなる。そして、バッファに格納された命令コードの数が予め設定された上限数以下の状態で、分岐検出回路16がサブルーチンへの分岐を検出した場合、バッファ45はキャッシュメモリ42に対して、一時的に格納していた命令コードキャッシュ対象命令コード82を転送する。このとき、転送イネーブル信号81はアクティブとなる。次に、本実施の形態にかかるキャッシュメモリ装置を含むマイクロプロセッサシステム4の動作について説明する。図8は、図7に示すキャッシュメモリ装置の動作を説明するためのフローチャートである。本実施の形態にかかるキャッシュメモリ装置を含むマイクロプロセッサシステム4の動作は、命令コードがバッファ45に一時的に格納される点ステップS3、バッファ45からキャッシュメモリ42に命令コードが転送される点ステップS10以外は、図2に示した実施の形態1にかかるマイクロプロセッサシステム1の動作と同様である。まず、CPU10は、命令コードをメモリ11から読み出すために、フェッチアドレス51をメモリ11に出力し始めるステップS1。分岐検出回路16は、CPU10から出力されたフェッチアドレス51を監視し、フェッチアドレス51がサブルーチンへの分岐を示す場合ステップS2:Yes、更新制御回路17に分岐通知信号55を出力する。例えば、分岐検出回路16は、CPU10から出力されたフェッチアドレス51が連続するアドレスから連続しないアドレスに変化した場合に、プログラムがサブルーチンへ分岐したと判断する。なお、分岐検出回路16は、フェッチアドレス51がサブルーチンへの分岐を示さない場合ステップS2:No、CPU10から出力されたフェッチアドレス51の監視を継続する。更新制御回路17は、分岐検出回路16から分岐通知信号55が供給されると、キャッシュ開始通知信号57をバッファ45に出力する。これにより、バッファ45は、命令コード52の格納を開始する。一方、メモリ11は、フェッチアドレス51が供給されると、このフェッチアドレス51に対応した命令コード52を、CPU10のプリフェッチバッファ14およびバッファ45に出力する。また、メモリ11は、メモリ11から有効な命令コード52が出力されたことを示す命令コード格納イネーブル信号53を、CPU10のプリフェッチバッファ14、バッファ45、および更新制御回路17に出力する。なお、図8に示す動作例では、フェッチアドレス51に対応する命令コードがキャッシュメモリ42にキャッシュされていない場合つまり、キャッシュヒットしない場合を示している。CPU10のプリフェッチバッファ14は、メモリ11から命令コード52および命令コード格納イネーブル信号53が供給されると、この命令コード52をプリフェッチバッファ14に格納する。また、バッファ45は、メモリ11から命令コード52および命令コード格納イネーブル信号53が供給されると、この命令コード52をバッファ45に格納するステップS3。このとき、バッファ45は、命令コード52を格納したメモリセルに対応する有効フラグビット48の論理値を1に更新するステップS4。すなわち、バッファ45に格納された命令コード52を有効とする。例えば、有効フラグビット48は、メモリセルに有効な命令コードが格納されている場合は1、有効な命令コードが格納されていない場合は0となる。そして、次のサブルーチンの命令コードが格納される場合は、有効フラグビット48が0となっているメモリセルに格納される。また、更新制御回路17のカウンタ18は、メモリ11から命令コード格納イネーブル信号53が供給されると、カウンタ値をインクリメントするステップS5。そして、更新制御回路17は、上限命令数信号56によって設定された命令コードの上限数と、カウンタ18の値バッファ45に格納された命令コードの数に対応とを比較し、カウンタ18の値が命令コードの上限数を超えたか否か判断するステップS6。カウンタ18の値が命令コードの上限数を超えていない場合つまり、カウンタ18の値が命令コードの上限数以下である場合、ステップS6:No、格納された命令コードの有効フラグビット48を有効1のままとする。そして、分岐検出回路16を用いてCPU10から出力された次のフェッチアドレス51を監視し、フェッチアドレス51が新たなサブルーチンへの分岐を示さない場合ステップS7:No、ステップS3以降の動作を繰り返す。一方、CPU10から出力された次のフェッチアドレス51が新たなサブルーチンへの分岐を示す場合ステップS7:Yes、カウンタ18の値をリセットするステップS8。そして、バッファ45はキャッシュメモリ42に対して、一時的に格納していた命令コードキャッシュ対象命令コード82を転送するステップS10。このとき、転送イネーブル信号81はアクティブとなる。その後、ステップS3以降の動作を繰り返す。また、カウンタ18の値が命令コードの上限数を超えた場合ステップS6:Yes、最後にバッファ45に格納した命令コードを含むサブルーチンの全ての命令コードの有効フラグビット48を無効0とするステップS9。すなわち、更新制御回路17は、カウンタ18の値が上限命令数信号56によって設定された命令コードの上限数を超えた場合ステップS6:Yes、バッファ45に有効フラグビットリセット信号59を出力し、最後に格納した命令コードを含むサブルーチンの全ての命令コードの有効フラグビット48を無効0とする。また、更新制御回路17は、バッファ45が命令コード52を格納することを停止するために、バッファ45にキャッシュ停止通知信号58を出力する。その後、ステップS2以降の動作を繰り返す。このように、本実施の形態にかかるマイクロプロセッサシステム4では、一時的に命令コードを格納することができるバッファ45を設け、このバッファ45に有効フラグビット48を設けている。そして、バッファ45に格納された命令コードの数が予め設定された上限数以下である場合に、バッファ45に一時的に格納されていた命令コードがキャッシュメモリ42に転送される。よって、キャッシュメモリ42に有効フラグビットを設ける必要がないため、キャッシュメモリの構成を簡素化することができる。以上、本発明を上記実施形態に即して説明したが、上記実施形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。