(57)【要約】【課題】マイクロプロセッサ装置において、処理の高度化、複雑化、多機能化に伴ない、マイクロプロセッサ装置の消費電力が問題となってきている。【解決手段】本発明は、命令コードを格納する命令コードメモリ部と、データメモリ部と、キャッシュレジスタを備える命令コードキャッシュ部と、データアクセスインタフェース部と、命令コード処理部とを備え、  命令コードキャッシュ部が、命令コードＡから、キャッシュ書込み開始フラグを抽出し、命令コードＡに対応する命令コードアドレスがキャッシュレジスタに格納されていない場合、命令コードＡから連続してＮ個の命令コードと、対応する命令コードアドレスを、キャッシュレジスタへ書込むことのできるマイクロプロセッサ装置に関するものである。【選択図】  図１
2013156792.tif 000002
【特許請求の範囲】
【請求項１】
命令コードを格納する命令コードメモリ部と、
データを格納するデータメモリ部と、
命令コードキャッシュ部と、
前記命令コードのフェッチ、デコード、処理を実行する命令コード処理部と、
前記命令コード処理部と、前記命令コードキャッシュ部または前記データメモリ部またはシステムバス間と、のデータアクセス制御を行うデータアクセスインタフェース部とを備え、
前記命令コードキャッシュ部は、Ｎ個のアドレスを持つキャッシュレジスタと、命令コードアドレス比較部と、命令コードロード部とを備え、
前記命令コードアドレス比較部が、前記命令コード処理部が発行する命令コードアドレスと、キャッシュレジスタに格納されている命令コードアドレスの一致比較を行い、
一致する命令コードアドレスがある場合には、前記命令コードロード部は、前記命令コードメモリ部にアクセスすることなく、前記キャッシュレジスタから対応する命令コードをロードして、前記命令コード処理部に供給することを特徴とするマイクロプロセッサ装置。
【請求項２】
請求項１記載のマイクロプロセッサ装置であって、
前記命令コードロード部は、前記命令コードアドレス比較部による比較の結果、一致する命令コードアドレスがない場合には、命令コードロード部が、前記命令コードメモリ部から対応する命令コードをロードして、前記命令コード処理部への供給すると共に、前記命令コードキャッシュ部へ命令コードと、対応する命令コードアドレスを格納すること、
を特徴とするマイクロプロセッサ装置。
【請求項３】
請求項１又は２記載のマイクロプロセッサ装置であって、
前記命令コードキャッシュ部は、さらに命令コードデコード部を有し、
前記命令コードデコード部は、命令コードからキャッシュ制御情報を抽出して、前記命令コードロード部に供給し、
前記命令コードロード部は、前記キャッシュ制御情報を用いて、前記キャッシュレジスタへの命令コード及び命令コードアドレスの書込み制御を行うことを特徴とするマイクロプロセッサ装置。
【請求項４】
請求項３記載のマイクロプロセッサ装置であって、
前記キャッシュ制御情報は、キャッシュ書込み許可フラグを含み、
前記命令コードロード部は、キャッシュ書込み許可フラグが有効でない場合には、前記キャッシュレジスタへの命令コード及び命令コードアドレスの書込みを行わないことを特徴とするマイクロプロセッサ装置。
【請求項５】
請求項３記載のマイクロプロセッサ装置であって、
前記キャッシュ制御情報は、キャッシュ書込み開始フラグを含み、
前記命令コードロード部が、キャッシュ書込み開始フラグを抽出した命令コードまたはその次の命令コードから連続してＮ個の命令コードに対して、対応する命令コードアドレスがキャッシュレジスタに格納されていない場合、前記Ｎ個の命令コードと、対応する命令コードアドレスを、キャッシュレジスタへ書込むことを特徴とするマイクロプロセッサ装置。
【請求項６】
請求項３記載のマイクロプロセッサ装置であって、
前記キャッシュ制御情報が、キャッシュ書込み開始フラグを含み、
前記命令コードロード部が、キャッシュ書込み開始フラグを抽出した命令コードまたはその次の命令コードから連続してＮ個の命令コードに対して、先頭の命令コードに対応する命令コードアドレスがキャッシュレジスタに格納されていない場合、前記Ｎ個の命令コードと、対応する命令コードアドレスを、キャッシュレジスタへ書込むこと
を特徴とするマイクロプロセッサ装置。
【請求項７】
請求項３記載のマイクロプロセッサ装置であって、
前記キャッシュ制御情報が、キャッシュ書込み開始フラグとキャッシュレジスタ最大格納数（Ｍ０）を含み、
前記命令コードロード部が、キャッシュ書込み開始フラグを抽出した命令コードまたはその次の命令コードから連続してＭ０個の命令コードに対して、対応する命令コードアドレスがキャッシュレジスタに格納されていない場合、前記Ｎ０個の命令コードと、対応する命令コードアドレスを、キャッシュレジスタへ書込むことを特徴とするマイクロプロセッサ装置。
【請求項８】
請求項３記載のマイクロプロセッサ装置であって、
前記キャッシュ制御情報が、キャッシュ書込み開始フラグとキャッシュレジスタ最大格納数（Ｍ０）を含み、
前記命令コードロード部が、キャッシュ書込み開始フラグを抽出した命令コードまたはその次の命令コードから連続してＭ０個の命令コードに対して、先頭の命令コードに対応する命令コードアドレスがキャッシュレジスタに格納されていない場合、前記Ｎ０個の命令コードと、対応する命令コードアドレスを、キャッシュレジスタへ書込むことを特徴とするマイクロプロセッサ装置。
【請求項９】
請求項３記載のマイクロプロセッサ装置であって、
前記キャッシュ制御情報が、キャッシュ指定命令コードアドレスを含み、
命令コード処理部から供給される命令コードアドレスとキャッシュ指定命令コードアドレスとが一致し、かつ、キャッシュ指定命令コードアドレスがキャッシュレジスタに格納されていない場合、前記命令コードロード部が、命令コードメモリ部から、キャッシュ指定命令コードアドレスに対応する命令コードをロードし、命令コードと命令コードアドレスをキャッシュレジスタへ書込むことを特徴とするマイクロプロセッサ装置。
【請求項１０】
請求項９記載のマイクロプロセッサ装置であって、
前記命令コードキャッシュ部が、さらに、命令コードアドレス解析部を備え、
命令コードアドレス解析部が、命令コード処理部からの命令コードアドレス供給頻度を解析し、
供給頻度の高い命令コードアドレスをキャッシュ指定命令コードアドレスとすることを特徴とするマイクロプロセッサ装置。
【請求項１１】
請求項５乃至８のいずれかに記載のマイクロプロセッサ装置であって、
前記命令コードデコード部が、所定の命令コードをロードした場合に、前記キャッシュ書込み開始フラグを有効とすることを特徴とするマイクロプロセッサ装置。
【請求項１２】
請求項３記載のマイクロプロセッサ装置であって、
前記キャッシュ制御情報が、システムバスを介して入力されることを特徴とするマイクロプロセッサ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令コードをもとに演算処理を実行するマイクロプロセッサ装置に関するものである。
【背景技術】
【０００２】
近年、様々な機器に、組み込み用のマイクロプロセッサが搭載されてきているが、処理の高度化、複雑化、多機能化に伴うマルチプロセッサ化が主流となってきており、マイクロプロセッサ装置の高速化と、消費電力削減が課題となってきている。マイクロプロセッサ装置の高速化と消費電力を削減する方法として、命令コード用のキャッシュを設けて、命令コードメモリへのアクセスを減らす方法がある。
【０００３】
本技術分野の背景技術として、上記命令コードメモリへのアクセスを削減する技術として、特許文献１には、「キャッシュメモリにおいて、キャッシュメモリに登録されているデータに優先度を付与する優先度付与手段１０と、キャッシュメモリに設けられ、優先度に基づいて入れ替え対象のデータが選択される優先度有効領域１２と、キャッシュメモリに設けられ、優先度に関係なく入れ替え対象のデータが選択される優先度無効領域１１と、データを優先度無効領域１１に登録するときに、優先度無効領域１１にデータを追加登録することによって入れ替えられるデータの優先度と優先度有効領域１２に登録されているデータの優先度とを比較し、当該比較結果に基づいて入れ替えられるデータを優先度有効領域１２に登録するか否かを判定する判定手段１０を備える」ことで、「キャッシュ全体のヒット率を向上させる」方式が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１-１４１７５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
前述の特許文献１に記載の技術では、キャッシュヒット率を高めることで、命令コードメモリへのアクセスを削減し、マイクロプロセッサの高速化を図っているが、複雑なキャッシュ制御用の回路が必要となるため、マイクロプロセッサ装置全体としての消費電力削減は難しい。
【０００６】
本発明は、上記課題を解決し、少ない制御回路で、命令コードメモリへのアクセスを削減し、消費電力を削減したマイクロプロセッサ装置を提供するものである。
【課題を解決するための手段】
【０００７】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば次の通りである。
（１）命令コードを格納する命令コードメモリ部と、データを格納するデータメモリ部と、命令コードキャッシュ部と、前記命令コードのフェッチ、デコード、処理を実行する命令コード処理部と、前記命令コード処理部と、前記命令コードキャッシュ部または前記データメモリ部またはシステムバス間と、のデータアクセス制御を行うデータアクセスインタフェース部とを備え、前記命令コードキャッシュ部は、Ｎ個のアドレスを持つキャッシュレジスタと、命令コードアドレス比較部と、命令コードロード部とを備え、前記命令コードアドレス比較部が、前記命令コード処理部が発行する命令コードアドレスと、キャッシュレジスタに格納されている命令コードアドレスの一致比較を行い、一致する命令コードアドレスがある場合には、前記命令コードロード部は、前記命令コードメモリ部にアクセスすることなく、前記キャッシュレジスタから対応する命令コードをロードして、前記命令コード処理部に供給することを特徴とするマイクロプロセッサ装置である。
（２）（１）記載のマイクロプロセッサ装置であって、前記命令コードロード部は、前記命令コードアドレス比較部による比較の結果、一致する命令コードアドレスがない場合には、命令コードロード部が、前記命令コードメモリ部から対応する命令コードをロードして、前記命令コード処理部への供給すると共に、前記命令コードキャッシュ部へ命令コードと、対応する命令コードアドレスを格納することを特徴とするマイクロプロセッサ装置である。
（３）命令コードを格納する命令コードメモリ部と、データメモリ部と、キャッシュレジスタを備える命令コードキャッシュ部と、データアクセスインタフェース部と、命令コード処理部とで構成されるマイクロプロセッサ装置において、命令コードキャッシュ部が、命令コードＡから、キャッシュ書込み開始フラグを抽出し、命令コードＡに対応する命令コードアドレスがキャッシュレジスタに格納されていない場合、命令コードＡから連続してＮ個の命令コードと、対応する命令コードアドレスを、キャッシュレジスタへ書込むことのできるマイクロプロセッサ装置に関するものである。
【発明の効果】
【０００８】
本発明によれば、少ない制御回路で、命令コードメモリへのアクセスを削減し、消費電力を削減したマイクロプロセッサ装置を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】マイクロプロセッサ装置の一例を示す説明図である。
【図２】キャッシュレジスタへ、命令コードと命令コードアドレス格納された状態の一例である。
【図３】命令コードキャッシュ部の一例を示す説明図である。
【図４】キャッシュレジスタへ、命令コードと命令コードアドレス格納された状態の別の一例である。
【図５】キャッシュレジスタへ、命令コードと命令コードアドレス格納された状態の別の一例である。
【図６】キャッシュレジスタへ、命令コードと命令コードアドレス格納された状態の別の一例である。
【図７】キャッシュ書込み許可フラグ更新動作に関するフローチャートの一例である。
【図８】キャッシュ書込み許可フラグ更新動作に関するフローチャートの別の一例である。
【図９】キャッシュ書込み許可フラグ更新動作に関するフローチャートの別の一例である。
【図１０】キャッシュ書込み制御動作に関するフローチャートの一例である。
【図１１】キャッシュ書込み制御動作に関するフローチャートの別の一例である。
【図１２】キャッシュ書込み制御動作に関するフローチャートの別の一例である。
【発明を実施するための形態】
【００１０】
図１は、本実施例によるマイクロプロセッサ装置の典型的な一例である。以下、図１を用いて説明する。
図１で示すマイクロプロセッサ装置１は、命令コード処理部１０と、命令コードメモリ部１１と、データメモリ部１２と、命令コードキャッシュ部１３と、データアクセスインタフェース部１４とを適宜用いて構成される。
【００１１】
命令コードメモリ部１１は、マイクロプロセッサ装置が処理するプログラムを構成する命令コードを格納しており、命令コードキャッシュ部１３の命令コードロード要求に応じて、命令コードロード要求で指定される命令コードアドレスに対応する命令コードを出力する。
命令コード処理部１０は、命令コードのフェッチ、デコード、及び処理を実行し、また、次に処理する命令コードの命令コードアドレスを算出する。
データメモリ部１２は、命令コード処理部１０が扱うデータを一時的に格納しておくためのメモリを備える。
【００１２】
命令コードキャッシュ部１３は、命令コード処理部１０が発行する命令コードアドレスと、キャッシュレジスタ部２２に格納されている命令コードアドレスの一致比較を行う命令コードアドレス比較部２０と、命令コードロード部２１と、Ｎ個のアドレスを有し、命令コードと、対応する命令コードアドレスを格納するメモリを備えるキャッシュレジスタ部２２とを適宜用いて構成される。
命令コードロード部２１は、命令コードアドレス比較部２０の一致比較の結果、一致する命令コードアドレスがある場合、キャッシュレジスタ部２２から、命令コードアドレスに対応する命令コードをロードして、命令コード処理部１０に供給する。また、命令コードロード部２１は、一致する命令コードアドレスがない場合、命令コードメモリ部１１から、命令コードアドレスに対応する命令コードをロードして、命令コード処理部１０に供給すると共に、キャッシュレジスタ部２２に、命令コードと、対応する命令コードアドレスをアドレス順で格納する。
データアクセスインタフェース部１４は、命令コード処理部１０と、命令コードキャッシュ部１３と、データメモリ１２と、システムバス２の間のデータ転送をインタフェースするブロックである。
【００１３】
図２は、本実施例によるマイクロプロセッサ装置におけるキャッシュレジスタ部２２への命令コードと命令コードアドレス格納状態遷移の一例を示す図である。
本実施例におけるキャッシュレジスタ部２２は、４個のアドレスを持つレジスタ（キャッシュレジスタ［i］：ｉ＝０、１、２、３）を備える。
【００１４】
状態１は、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス（ｃ０）に格納されている命令コード（ａ０）をロードした際に、キャッシュレジスタ［０］、キャッシュレジスタ［１］、キャッシュレジスタ［２］、キャッシュレジスタ［３］のいずれにも命令コードアドレス（ｃ０）が格納されていないため、アドレス番号の一番小さいキャッシュレジスタ［０］に、命令コード（ａ０）と、対応する命令コードアドレス（ｃ０）を格納する。
【００１５】
状態２は、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス（ｃ１）に格納されている命令コード（ａ１）をロードした際に、キャッシュレジスタ［０］、キャッシュレジスタ［１］、キャッシュレジスタ［２］、キャッシュレジスタ［３］のいずれにも命令コードアドレス（ｃ１）が格納されていないため、直前に書込みを行ったキャッシュレジスタのアドレス番号の次のアドレス番号を持つキャッシュレジスタ［１］に、命令コード（ａ１）と、対応する命令コードアドレス（ｃ１）を格納する。
【００１６】
状態３は、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス（ｃ２）に格納されている命令コード（ａ２）をロードした際に、キャッシュレジスタ［０］、キャッシュレジスタ［１］、キャッシュレジスタ［２］、キャッシュレジスタ［３］のいずれにも命令コードアドレス（ｃ２）が格納されていないため、直前に書込みを行ったキャッシュレジスタのアドレス番号の次のアドレス番号を持つキャッシュレジスタ［２］に、命令コード（ａ２）と、対応する命令コードアドレス（ｃ２）を格納する。
【００１７】
状態４は、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス（ｃ３）に格納されている命令コード（ａ３）をロードした際に、キャッシュレジスタ［０］、キャッシュレジスタ［１］、キャッシュレジスタ［２］、キャッシュレジスタ［３］のいずれにも命令コードアドレス（ｃ３）が格納されていないため、直前に書込みを行ったキャッシュレジスタのアドレス番号の次のアドレス番号を持つキャッシュレジスタ［３］に、命令コード（ａ３）と、対応する命令コードアドレス（ｃ３）を格納する。
【００１８】
状態５は、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス」（ｃ４）に格納されている命令コード（ａ４）をロードした際に、キャッシュレジスタ［０］、キャッシュレジスタ［１］、キャッシュレジスタ［２］、キャッシュレジスタ［３］のいずれにも命令コードアドレス（ｃ４）が格納されていないため、直前に書込みを行ったキャッシュレジスタのアドレス番号の次のアドレス番号を持つキャッシュレジスタ［０］に、命令コード（ａ４）と、対応する命令コードアドレス（ｃ４）を格納する。
【００１９】
状態７は、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス（ｃ４）に格納されている命令コード（ａ４）をロードした際に、キャッシュレジスタ［０］に命令コードアドレス（ｃ４）が格納されているため、キャッシュレジスタに対して、命令コード（ａ４）と、対応する命令コードアドレス（ｃ４）の格納は行わない。
【００２０】
図３は、本実施例によるマイクロプロセッサ装置における命令コードキャッシュ部１３の典型的な別の一例である。以下、図３を用いて説明する。
図３で示す命令コードキャッシュ部１３は、命令コードアドレス比較部２０と、命令コードロード部２１と、キャッシュレジスタ部２２とを適宜用いて構成される。
キャッシュレジスタ部２２は、Ｎ個のアドレスを有し、命令コードと、対応する命令コードアドレスを格納するメモリを備える。
命令コードアドレス比較部２０は、命令コード処理部１０が発行する命令コードアドレスと、キャッシュレジスタ部２２に格納されている命令コードアドレスの一致比較を行う。
命令コードデコード部２３は、命令コードからキャッシュ制御情報を抽出して、命令コードロード部２１に供給する。
【００２１】
命令コードロード部２１は、命令コードアドレス比較部２０の一致比較の結果、一致する命令コードアドレスがある場合、キャッシュレジスタ部２２から、命令コードアドレスに対応する命令コードをロードして、命令コード処理部１０に供給する。また、命令コードロード部２１は、命令コードアドレス比較部２０の一致比較の結果、一致する命令コードアドレスがない場合、命令コードメモリ部１１から、命令コードアドレスに対応する命令コードをロードして、命令コード処理部１０に供給すると共に、命令コードデコード部２３から得たキャッシュ制御情報を用いて、キャッシュレジスタ部２２への命令コード及び対応する命令コードアドレスの書込み制御を行う。
【００２２】
キャッシュ制御情報の一例として、キャッシュ書込み許可フラグ、キャッシュ書込み開始フラグ、キャッシュレジスタ最大格納数（Ｍ０）、キャッシュ指定命令コードアドレスがある。
キャッシュ書込み許可フラグは、キャッシュレジスタ部２２への命令コード及び対応する命令コードアドレス書込み可否を示す情報である。キャッシュ書込み許可フラグが有効である場合、キャッシュレジスタ部２２に対して、命令コード及び対応する命令コードアドレス書込みを許可する。キャッシュ書込み許可フラグが無効である場合、キャッシュレジスタ部２２に対して、命令コード及び対応する命令コードアドレス書込みを許可しない。
キャッシュ書込み開始フラグは、キャッシュレジスタ部２２への命令コード及び対応する命令コードアドレス書込みの開始を指示する情報である。また、キャッシュレジスタ最大格納数は、キャッシュ書込み開始フラグに対して、キャッシュレジスタ部２２に書込む命令コード及び対応する命令コードの組合せ数を示す情報である。また、キャッシュ指定命令コードアドレスは、キャッシュレジスタ部２２に格納すべき命令コードに対応する命令コードアドレスを示す情報である。
【００２３】
図４は、本実施例によるマイクロプロセッサ装置におけるキャッシュレジスタ部２２への命令コードと命令コードアドレス格納状態遷移の別の一例を示す図である。
本実施例におけるキャッシュレジスタ部２２は、４個のアドレスを持つレジスタ（キャッシュレジスタ［i］：ｉ＝０、１、２、３）を備える。ここで、図中のＳ０は、キャッシュ書込み許可フラグが無効であることを示すキャッシュ制御情報を含む命令コードであり、図中のＳ１は、キャッシュ書込み許可フラグが有効であることを示すキャッシュ制御情報を含む命令コードである。
【００２４】
状態１では、命令コードＳ１をロードし、キャッシュ書込み許可フラグを有効にする。本実施例では、キャッシュ制御情報を含む命令コードはキャッシュレジスタ部２２には書き込まないが、キャッシュ制御情報を含む命令コードを書き込む構成としても良い。
【００２５】
状態２では、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス（ｃ１）に格納されている命令コード（ａ１）をロードした際に、キャッシュレジスタ［０］、キャッシュレジスタ［１］、キャッシュレジスタ［２］、キャッシュレジスタ［３］のいずれにも命令コードアドレス（ｃ１）が格納されておらず、かつキャッシュ書込み許可フラグが有効であるため、アドレス番号の一番小さいキャッシュレジスタ［０］に、命令コード（ａ１）と、対応する命令コードアドレス（ｃ１）を格納する。
【００２６】
状態３は、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス（ｃ２）に格納されている命令コード（ａ２）をロードした際に、キャッシュレジスタ［０］、キャッシュレジスタ［１］、キャッシュレジスタ［２］、キャッシュレジスタ［３］のいずれにも命令コードアドレス（ｃ２）が格納されておらず、かつキャッシュ書込み許可フラグが有効であるため、直前に書込みを行ったキャッシュレジスタのアドレス番号の次のアドレス番号を持つキャッシュレジスタ［１］に、命令コード（ａ２）と、対応する命令コードアドレス（ｃ２）を格納する。
【００２７】
状態４は、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス（ｃ３）に格納されている命令コード（ａ３）をロードした際に、キャッシュレジスタ［０］、キャッシュレジスタ［１］、キャッシュレジスタ［２］、キャッシュレジスタ［３］のいずれにも命令コードアドレス（ｃ３）が格納されておらず、かつキャッシュ書込み許可フラグが有効であるため、直前に書込みを行ったキャッシュレジスタのアドレス番号の次のアドレス番号を持つキャッシュレジスタ［３］に、命令コード（ａ３）と、対応する命令コードアドレス（ｃ３）を格納する。
【００２８】
状態５は、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス（ｃ４）に格納されている命令コード（ａ４）をロードした際に、キャッシュレジスタ［０］、キャッシュレジスタ［１］、キャッシュレジスタ［２］、キャッシュレジスタ［３］のいずれにも命令コードアドレス（ｃ４）が格納されておらず、かつキャッシュ書込み許可フラグが有効であるため、直前に書込みを行ったキャッシュレジスタのアドレス番号の次のアドレス番号を持つキャッシュレジスタ［０］に、命令コード（ａ４）と、対応する命令コードアドレス（ｃ４）を格納する。
【００２９】
状態７では、命令コードＳ０をロードし、キャッシュ書込み許可フラグを無効にする。本実施例では、キャッシュ制御情報を含む命令コードはキャッシュレジスタ部２２には書き込まないが、キャッシュ制御情報を含む命令コードを書き込む構成としても良い。
【００３０】
状態８及び状態９については、キャッシュ書込み許可フラグが無効であるため、キャッシュレジスタ部２２への命令コード及び対応する命令コードアドレスの格納は行わない。
【００３１】
状態１０では、命令コードＳ１をロードし、キャッシュ書込み許可フラグを有効にする。本実施例では、キャッシュ制御情報を含む命令コードはキャッシュレジスタ部２２には書き込まないが、キャッシュ制御情報を含む命令コードを書き込む構成としても良い。
【００３２】
状態１１では、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス（ｃ１０）に格納されている命令コード（ａ１０）をロードした際に、キャッシュレジスタ［０］、キャッシュレジスタ［１］、キャッシュレジスタ［２］、キャッシュレジスタ［３］のいずれにも命令コードアドレス（ｃ１０）が格納されておらず、かつキャッシュ書込み許可フラグが有効であるため、直前に書込みを行ったキャッシュレジスタのアドレス番号の次のアドレス番号を持つキャッシュレジスタ［１］に、命令コード（ａ１０）と、対応する命令コードアドレス（ｃ１０）を格納する。
【００３３】
図５は、本実施例によるマイクロプロセッサ装置におけるキャッシュレジスタ部２２への命令コードと命令コードアドレス格納状態遷移の別の一例を示す図である。
本実施例におけるキャッシュレジスタ部２２は、４個のアドレスを持つレジスタ（キャッシュレジスタ［i］：ｉ＝０、１、２、３）を備える。ここで、図中のＳ２は、キャッシュ書込み開始フラグが有効であることを示すキャッシュ制御情報を含む命令コードである。また、本実施例では、キャッシュレジスタ最大格納数は４固定となっている。
【００３４】
状態１では、命令コードＳ２をロードし、キャッシュレジスタ格納数を０に初期化すると共に、キャッシュ書込み許可フラグを有効にする。本実施例では、キャッシュ制御情報を含む命令コードはキャッシュレジスタ部２２には書き込まないが、キャッシュ制御情報を含む命令コードを書き込む構成としても良い。
命令コードＳ２の一例を説明するためのプログラムＡを示す。プログラムＡは、比較命令Ａ、ジャンプ命令Ａ、処理命令Ａ、ジャンプ命令Ｂ、処理命令Ｂという順にプログラムされており、比較命令Ａの実行結果が１になるまで、比較命令Ａ、ジャンプ命令Ａ、処理命令Ａ、ジャンプ命令Ｂを繰り返し実行する。また、比較命令Ａの実行結果が実行結果が１になった場合、ジャンプ命令Ａを介してループ処理を抜けて、処理命令Ｂに進む。ここで、命令コードＳ２を比較命令Ａとする場合、図５で示すマイクロプロセッサ装置を用いることで、比較命令Ａ、ジャンプ命令Ａ、処理命令Ａ、ジャンプ命令Ｂを、キャッシュレジスタ部に格納することが出来、比較命令Ａの実行結果が１になるまでの期間における命令コードメモリ部への命令コードロードを削減することが出来る。なお、命令コードＳ２のコードパタンは、命令コード処理部１０が、キャッシュ制御情報で指定しても良いし、固定パタンであっても良い。
【００３５】
状態２では、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス（ｃ１）に格納されている命令コード（ａ１）をロードした際に、キャッシュレジスタ［０］、キャッシュレジスタ［１］、キャッシュレジスタ［２］、キャッシュレジスタ［３］のいずれにも命令コードアドレス（ｃ１）が格納されておらず、かつキャッシュ書込み許可フラグが有効であり、かつキャッシュレジスタ格納数が０であり、キャッシュレジスタ最大格納数４よりも小さいため、アドレス番号の一番小さいキャッシュレジスタ［０］に、命令コード（ａ１）と、対応する命令コードアドレス（ｃ１）を格納すると共に、キャッシュレジスタ格納数をカウントアップして１に更新する。
【００３６】
状態３は、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス（ｃ２）に格納されている命令コード（ａ２）をロードした際に、キャッシュレジスタ［０］、キャッシュレジスタ［１］、キャッシュレジスタ［２］、キャッシュレジスタ［３］のいずれにも命令コードアドレス（ｃ２）が格納されておらず、かつキャッシュ書込み許可フラグが有効であり、かつキャッシュレジスタ格納数が１であり、キャッシュレジスタ最大格納数４よりも小さいため、直前に書込みを行ったキャッシュレジスタのアドレス番号の次のアドレス番号を持つキャッシュレジスタ［１］に、命令コード（ａ２）と、対応する命令コードアドレス（ｃ２）を格納すると共に、キャッシュレジスタ格納数をカウントアップして２に更新する。
【００３７】
状態４は、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス（ｃ３）に格納されている命令コード（ａ３）をロードした際に、キャッシュレジスタ［０］、キャッシュレジスタ［１］、キャッシュレジスタ［２］、キャッシュレジスタ［３］のいずれにも命令コードアドレス（ｃ３）が格納されておらず、かつキャッシュ書込み許可フラグが有効であり、かつキャッシュレジスタ格納数が２であり、キャッシュレジスタ最大格納数４よりも小さいため、直前に書込みを行ったキャッシュレジスタのアドレス番号の次のアドレス番号を持つキャッシュレジスタ［１］に、命令コード（ａ３）と、対応する命令コードアドレス（ｃ２）を格納すると共に、キャッシュレジスタ格納数をカウントアップして３に更新する。
【００３８】
状態５は、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス（ｃ４）に格納されている命令コード（ａ４）をロードした際に、キャッシュレジスタ［０］、キャッシュレジスタ［１］、キャッシュレジスタ［２］、キャッシュレジスタ［３］のいずれにも命令コードアドレス（ｃ４）が格納されておらず、かつキャッシュ書込み許可フラグが有効であり、かつキャッシュレジスタ格納数が３であり、キャッシュレジスタ最大格納数４よりも小さいため、直前に書込みを行ったキャッシュレジスタのアドレス番号の次のアドレス番号を持つキャッシュレジスタ［１］に、命令コード（ａ４）と、対応する命令コードアドレス（ｃ２）を格納すると共に、キャッシュレジスタ格納数をカウントアップして４に更新する。
【００３９】
状態６は、キャッシュレジスタ格納数が４であり、キャッシュレジスタ最大格納数４より小さくないため、キャッシュレジスタ部２２への命令コード及び対応する命令コードアドレスの格納は行わない。
【００４０】
状態７および状態８については、キャッシュレジスタ格納数が４であり、キャッシュレジスタ最大格納数４より小さくないため、キャッシュレジスタ部２２への命令コード及び対応する命令コードアドレスの格納は行わない。
【００４１】
状態９では、命令コードＳ２をロードし、キャッシュレジスタ格納数を０に初期化すると共に、キャッシュ書込み許可フラグを有効にする。本実施例では、キャッシュ制御情報を含む命令コードはキャッシュレジスタ部２２には書き込まないが、キャッシュ制御情報を含む命令コードを書き込む構成としても良い。
【００４２】
状態１０以降は、状態１以降と同様に、キャッシュレジスタ［０］からキャッシュレジスタ［３］まで、アドレス順に、命令コードと、対応する命令コードアドレスを格納した後は、命令コードメモリ部から、命令コードＳ２をロードするまで、キャッシュレジスタ部２２への命令コード及び対応する命令コードアドレスの格納は行わない。
【００４３】
図６は、本実施例によるマイクロプロセッサ装置におけるキャッシュレジスタ部２２への命令コードと命令コードアドレス格納状態遷移の別の一例を示す図である。
本実施例におけるキャッシュレジスタ部２２は、５個のアドレスを持つレジスタ（キャッシュレジスタ［i］：ｉ＝０、１、２、３、４）を備える。ここで、図中のＳ３は、キャッシュ書込み開始フラグが有効であり、かつ、キャッシュレジスタ最大格納数が３であることを示すキャッシュ制御情報を含む命令コードである。また、図中のＳ４は、キャッシュ書込み開始フラグが有効であり、かつ、キャッシュレジスタ最大格納数が２であることを示すキャッシュ制御情報を含む命令コードである。
【００４４】
状態１では、命令コードＳ３をロードし、キャッシュレジスタ格納数を０に初期化し、キャッシュレジスタ最大格納数を３に初期化し、キャッシュ書込み許可フラグを有効にする。本実施例では、キャッシュ制御情報を含む命令コードはキャッシュレジスタ部２２には書き込まないが、キャッシュ制御情報を含む命令コードを書き込む構成としても良い。
【００４５】
状態２では、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス（ｃ１）に格納されている命令コード（ａ１）をロードした際に、キャッシュレジスタ［０］、キャッシュレジスタ［１］、キャッシュレジスタ［２］、キャッシュレジスタ［３］のいずれにも命令コードアドレス（ｃ１）が格納されておらず、かつキャッシュ書込み許可フラグが有効であり、かつキャッシュレジスタ格納数が０であり、キャッシュレジスタ最大格納数３よりも小さいため、アドレス番号の一番小さいキャッシュレジスタ［０］に、命令コード（ａ１）と、対応する命令コードアドレス（ｃ１）を格納すると共に、キャッシュレジスタ格納数をカウントアップして１に更新する。
【００４６】
状態３は、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス（ｃ２）に格納されている命令コード（ａ２）をロードした際に、キャッシュレジスタ［０］、キャッシュレジスタ［１］、キャッシュレジスタ［２］、キャッシュレジスタ［３］のいずれにも命令コードアドレス（ｃ２）が格納されておらず、かつキャッシュ書込み許可フラグが有効であり、かつキャッシュレジスタ格納数が１であり、キャッシュレジスタ最大格納数３よりも小さいため、直前に書込みを行ったキャッシュレジスタのアドレス番号の次のアドレス番号を持つキャッシュレジスタ［１］に、命令コード（ａ２）と、対応する命令コードアドレス（ｃ２）を格納すると共に、キャッシュレジスタ格納数をカウントアップして２に更新する。
【００４７】
状態４は、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス（ｃ３）に格納されている命令コード（ａ３）をロードした際に、キャッシュレジスタ［０］、キャッシュレジスタ［１］、キャッシュレジスタ［２］、キャッシュレジスタ［３］のいずれにも命令コードアドレス（ｃ３）が格納されておらず、かつキャッシュ書込み許可フラグが有効であり、かつキャッシュレジスタ格納数が２であり、キャッシュレジスタ最大格納数３よりも小さいため、直前に書込みを行ったキャッシュレジスタのアドレス番号の次のアドレス番号を持つキャッシュレジスタ［２］に、命令コード（ａ３）と、対応する命令コードアドレス（ｃ２）を格納すると共に、キャッシュレジスタ格納数をカウントアップして３に更新する。
【００４８】
状態５、状態６、状態７、および状態８は、キャッシュレジスタ格納数が３であり、キャッシュレジスタ最大格納数３より小さくないため、キャッシュレジスタ部２２への命令コード及び対応する命令コードアドレスの格納は行わない。
【００４９】
状態９では、命令コードＳ４をロードし、キャッシュレジスタ格納数を０に初期化し、キャッシュレジスタ最大格納数を２に初期化し、キャッシュ書込み許可フラグを有効にする。本実施例では、キャッシュ制御情報を含む命令コードはキャッシュレジスタ部２２には書き込まないが、キャッシュ制御情報を含む命令コードを書き込む構成としても良い。
【００５０】
状態１０では、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス（ｃ９）に格納されている命令コード（ａ９）をロードした際に、キャッシュレジスタ［０］、キャッシュレジスタ［１］、キャッシュレジスタ［２］、キャッシュレジスタ［３］のいずれにも命令コードアドレス（ｃ９）が格納されておらず、かつキャッシュ書込み許可フラグが有効であり、かつキャッシュレジスタ格納数が０であり、キャッシュレジスタ最大格納数２よりも小さいため、直前に書込みを行ったキャッシュレジスタのアドレス番号の次のアドレス番号を持つキャッシュレジスタ［３］に、命令コード（ａ９）と、対応する命令コードアドレス（ｃ９）を格納すると共に、キャッシュレジスタ格納数をカウントアップして１に更新する。
【００５１】
状態１１は、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス（ｃ１０）に格納されている命令コード（ａ１０）をロードした際に、キャッシュレジスタ［０］、キャッシュレジスタ［１］、キャッシュレジスタ［２］、キャッシュレジスタ［３］のいずれにも命令コードアドレス（ｃ１０）が格納されておらず、かつキャッシュ書込み許可フラグが有効であり、かつキャッシュレジスタ格納数が１であり、キャッシュレジスタ最大格納数２よりも小さいため、直前に書込みを行ったキャッシュレジスタのアドレス番号の次のアドレス番号を持つキャッシュレジスタ［４］に、命令コード（ａ１０）と、対応する命令コードアドレス（ｃ１０）を格納すると共に、キャッシュレジスタ格納数をカウントアップして２に更新する。
【００５２】
状態１２、状態１３、および状態１４は、キャッシュレジスタ格納数が２であり、キャッシュレジスタ最大格納数２より小さくないため、キャッシュレジスタ部２２への命令コード及び対応する命令コードアドレスの格納は行わない。
【００５３】
状態１５では、命令コードＳ４をロードし、キャッシュレジスタ格納数を０に初期化し、キャッシュレジスタ最大格納数を２に初期化し、キャッシュ書込み許可フラグを有効にする。本実施例では、キャッシュ制御情報を含む命令コードはキャッシュレジスタ部２２には書き込まないが、キャッシュ制御情報を含む命令コードを書き込む構成としても良い。
【００５４】
状態１６では、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス（ｃ１６）に格納されている命令コード（ａ１６）をロードした際に、キャッシュレジスタ［０］、キャッシュレジスタ［１］、キャッシュレジスタ［２］、キャッシュレジスタ［３］のいずれにも命令コードアドレス（ｃ１６）が格納されておらず、かつキャッシュ書込み許可フラグが有効であり、かつキャッシュレジスタ格納数が０であり、キャッシュレジスタ最大格納数２よりも小さいため、直前に書込みを行ったキャッシュレジスタのアドレス番号の次のアドレス番号を持つキャッシュレジスタ［０］に、命令コード（ａ１６）と、対応する命令コードアドレス（ｃ１６）を格納すると共に、キャッシュレジスタ格納数をカウントアップして１に更新する。
【００５５】
状態１７は、命令コードロード部２１が、命令コードメモリ部１１から、命令コードアドレス（ｃ１６）に格納されている命令コード（ａ１６）をロードした際に、キャッシュレジスタ［０］、キャッシュレジスタ［１］、キャッシュレジスタ［２］、キャッシュレジスタ［３］のいずれにも命令コードアドレス（ｃ１６）が格納されておらず、かつキャッシュ書込み許可フラグが有効であり、かつキャッシュレジスタ格納数が１であり、キャッシュレジスタ最大格納数２よりも小さいため、直前に書込みを行ったキャッシュレジスタのアドレス番号の次のアドレス番号を持つキャッシュレジスタ［１］に、命令コード（ａ１６）と、対応する命令コードアドレス（ｃ１６）を格納すると共に、キャッシュレジスタ格納数をカウントアップして２に更新する。
【００５６】
状態１８、状態１９、および状態２０は、キャッシュレジスタ格納数が２であり、キャッシュレジスタ最大格納数２より小さくないため、キャッシュレジスタ部２２への命令コード及び対応する命令コードアドレスの格納は行わない。
【００５７】
図７は、キャッシュ書込み許可フラグ更新動作に関するフローチャートの一例である。
ステップ１０００において、命令コードをロードする。
ステップ１００１において、命令コードがキャッシュ制御情報を含むか確認する。命令コードがキャッシュ制御情報を含む場合には、ステップ１００２の制御に進み、キャッシュ制御情報に、キャッシュ書込み許可フラグが含まれるか確認する。命令コードがキャッシュ制御情報を含まない場合には、プロセスを終了する。
ステップ１００２において、キャッシュ制御情報に、キャッシュ書込み許可フラグが含まれる場合、キャッシュ書込み許可フラグを有効、または無効に更新して、プロセスを終了する。キャッシュ制御情報に、キャッシュ書込み許可フラグが含まれない場合、プロセスを終了する。
【００５８】
図８は、キャッシュ書込み許可フラグ更新動作に関するフローチャートの別の一例である。
ステップ１１００において、命令コードをロードする。
ステップ１１０１において、命令コードがキャッシュ制御情報を含むか確認する。命令コードがキャッシュ制御情報を含む場合には、ステップ１１０２の制御に進み、キャッシュ制御情報に、キャッシュ書込み開始フラグが含まれるか確認する。命令コードがキャッシュ制御情報を含まない場合には、プロセスを終了する。
ステップ１１０２において、キャッシュ制御情報に、キャッシュ書込み開始フラグが含まれる場合、ステップ１１０３において、キャッシュ書込み許可フラグを有効にし、ステップ１１０４において、キャッシュレジスタ格納数を０に初期化し、ステップ１１０５において、キャッシュレジスタ最大格納数をＭ０に更新して、プロセスを終了する。キャッシュ制御情報に、キャッシュ書込み開始フラグが含まれない場合、プロセスを終了する。
【００５９】
図９は、キャッシュ書込み許可フラグ更新動作に関するフローチャートの別の一例である。
ステップ１２００において、命令コードをロードする。
ステップ１２０１において、命令コードが指定された命令コードパタンと一致するか確認する。命令コードが指定された命令コードパタンと一致する場合には、ステップ１２０２において、キャッシュ書込み許可フラグを有効にし、ステップ１２０３において、キャッシュレジスタ格納数を０に初期化して、プロセスを終了する。命令コードが指定された命令コードパタンと一致しない場合、プロセスを終了する。
【００６０】
図１０は、キャッシュ書込み制御動作に関するフローチャートの一例である。
ステップ１３００において、命令コードアドレスを受け付けて、ステップ１３０１の制御に進み、命令コードアドレスが、キャッシュレジスタに格納されている命令コードアドレスと一致するか確認する。一致しない場合、ステップ１３０２に進み、命令コードメモリ部から、命令コードをロードし、ステップ１３０３に進む。一致する場合には、ステップ１３０６に進み、キャッシュレジスタから、命令コードアドレスに対応する命令コードをロードして、ステップ１３０５に進む。
ステップ１３０３において、キャッシュ書込み許可フラグが有効か無効かを確認する。キャッシュ書込み許可フラグが有効である場合、ステップ１３０４に進み、命令コードをキャッシュレジスタに書き込み、ステップ１３０５に進む。
ステップ１３０５において、命令コード処理部に、命令コードを供給して、プロセスを終了する。
【００６１】
図１１は、キャッシュ書込み制御動作に関するフローチャートの別の一例である。
ステップ１４００において、命令コードアドレスを受け付けて、ステップ１４０１の制御に進み、命令コードアドレスが、キャッシュレジスタに格納されている命令コードアドレスと一致するか確認する。一致しない場合、ステップ１４０２に進み、命令コードメモリ部から、命令コードをロードし、ステップ１４０３に進む。一致する場合には、ステップ１４０８に進み、キャッシュレジスタから、命令コードアドレスに対応する命令コードをロードして、ステップ１４０７に進む。
ステップ１４０３において、キャッシュ書込み許可フラグが有効か無効かを確認する。キャッシュ書込み許可フラグが有効である場合、ステップ１４０４に進む。
ステップ１４０４において、キャッシュレジスタ格納数Ｎと、キャッシュレジスタ最大格納数Ｍ０との大小関係を比較する。キャッシュレジスタ格納数Ｎが、キャッシュレジスタ最大格納数Ｍ０よりも小さい場合、ステップ１４０５に進み、命令コードをキャッシュレジスタに書き込み、ステップ１４０６に進む。
ステップ１４０６において、キャッシュレジスタ格納数Ｎを１カウントアップして、ステップ１４０７に進む。
ステップ１４０７において、命令コード処理部に、命令コードを供給して、プロセスを終了する。
【００６２】
図１２は、キャッシュ書込み制御動作に関するフローチャートの別の一例である。
ステップ１５００において、命令コードアドレスを受け付けて、ステップ１５０１の制御に進み、命令コードアドレスが、キャッシュレジスタに格納されている命令コードアドレスと一致するか確認する。一致しない場合、ステップ１５０２に進み、命令コードメモリ部から、命令コードをロードし、ステップ１５０３に進む。一致する場合には、ステップ１５０６に進み、キャッシュレジスタから、命令コードアドレスに対応する命令コードをロードして、ステップ１５０５に進む。
ステップ１５０３において、命令コードアドレスが、キャッシュ制御情報で指定される命令コードアドレスと一致するか確認する。一致する場合、ステップ１５０４に進み、命令コードをキャッシュレジスタに書き込み、ステップ１５０５に進む。
ステップ１５０５において、命令コード処理部に、命令コードを供給して、プロセスを終了する。
【００６３】
以上のように、本発明のマイクロプロセッサ装置は、少ない制御回路で、命令コードメモリへのアクセスを削減し、マイクロプロセッサ装置の消費電力を削減することが出来る効果がある。なお、本発明は上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であり、また、各実施例に記載した事項を適宜他の実施例に組み合わせて用いても構わない。
【符号の説明】
【００６４】
１      マイクロプロセッサ装置
２      システムバス
１０    命令コード処理部
１１    命令コードメモリ部
１２    データメモリ部
１３    命令コードキャッシュ部
１４    データアクセスインタフェース部
２０    命令コードアドレス比較部
２１    命令コードロード部
２２    キャッシュレジスタ部
３０    命令コードフェッチ及びデコード
３１    命令コード実行
【図１】
2013156792.tif 000003
【図２】
2013156792.tif 000004
【図３】
2013156792.tif 000005
【図４】
2013156792.tif 000006
【図５】
2013156792.tif 000007
【図６】
2013156792.tif 000008
【図７】
2013156792.tif 000009
【図８】
2013156792.tif 000010
【図９】
2013156792.tif 000011
【図１０】
2013156792.tif 000012
【図１１】
2013156792.tif 000013
【図１２】
2013156792.tif 000014