説明

プロセッサ

【課題】低電力で高速にループ処理などを実行させるプロセッサを提供する。
【解決手段】プロセッサ100は、通常命令バッファ122と、TAR用命令バッファ123と、命令がTAR用命令バッファ123に充填されたか否かを示すValid bitが記憶されるフラグ記憶部と、通常命令バッファ122およびのTAR用命令バッファ123のいずれかを命令供給源に選択するセレクタ121と、第1の充填命令が実行された場合には、第1のアドレスから命令を取り出してTAR用命令バッファ123に格納し、ループ命令が実行された場合には、TAR用命令バッファ123から命令を繰り返し供給する命令フェッチ制御部102とを備え、命令キャッシュ10の第1のアドレスから取り出された命令がTAR用命令バッファ123に充填された場合に、そのことを示すValid bitがフラグ記憶部に記憶される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、命令キャッシュに格納されている命令を取り出して実行するプロセッサなど
として、特に、ループ部分の命令を実行する場合において、命令キャッシュへのアクセスを省略しても命令を供給することができるプロセッサに関する。
【背景技術】
【0002】
近年、携帯電話機、デジタルビデオカメラ、デジタルビデオレコーダなどのデジタル家電製品が普及している。そして、これらの製品に組み込まれるプロセッサとして低電力で処理能力が高いプロセッサが求められている。
【0003】
これに対して、例えば、分岐予測のミスに伴うペナルティサイクルを短縮することで、消費電力を抑え処理能力を高めたプロセッサが提案されている(例えば、非特許文献1参照。)。
【0004】
具体的には、このプロセッサは、命令フェッチを管理する部分に二つの命令バッファを備え、通常、どちらか一方の命令バッファを用いて命令キャッシュからフェッチした命令を蓄積して供給する。そして、分岐命令を実行するときに、二つの命令バッファを用いて命令キャッシュからフェッチした後続命令および分岐先命令を別々に蓄積し、分岐先に応じて、どちらか一方の命令バッファから供給する。
【0005】
例えば、現在、命令の供給源として第1の命令バッファが利用されている場合には、分岐命令のデコードステージで、分岐先命令(TAKEN)と予測すると、命令キャッシュから分岐先命令をフェッチして第2の命令バッファに蓄積して供給する。そして、分岐命令の実行ステージで、予測がミスしていれば、すなわち、実際の分岐では後続命令(NOT TAKEN)とすれば、第1の命令バッファの命令をパイプラインに投入し、第2の命令バッファの命令を廃棄し、命令フェッチのレイテンシによって生じるペナルティを短縮する。
【0006】
さらに、このプロセッサは、これらの命令バッファとは別に第3の命令バッファも備える。そして、分岐命令を実行する前に、その分岐命令の分岐先アドレスを特定することができる命令を実行し、その分岐先アドレスの命令を先読みして第3の命令バッファに蓄積し、命令フェッチのレイテンシによって生じるペナルティを短縮する。
【非特許文献1】Naohiko IRIE, Fumio ARAKAWA, Kunio UCHIYAMA, Shinichi YOSHIOKA, Atsushi HASEGAWA, Kevin IADONATE, Mark DEBBAGE, David SHEPHERD, and Margaret GEARTY, “Branch Micro-Architecture of an Embedded Processor with Split Branch Architecture for Digital Consumer Products”, IEICE TRANS. ELECTRON., VOL.E85-C, NO.2 FEBRUARY 2002, pp.315-322.
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、このプロセッサは、性質の異なる二種類の命令バッファを備えるため、同一の分岐命令であっても、分岐予測のミスに応じて、利用する命令バッファを使い分ける必要がある。結果、命令バッファを切り替える制御が複雑になる。また、分岐命令のデコードステージで、命令キャッシュから分岐先命令をフェッチして第2の命令バッファに蓄積するため、フェッチすることができる期間が短く、十分な命令を蓄積して供給することが困難である。結果、より低電力で高速にループ処理などを実行させるために、命令キャッシュのアクセス頻度を下げようとして命令バッファの容量を大きくしても、その効果が小さいという問題がある。
【0008】
そこで、本発明は前記問題に鑑みてなされたものであり、低電力で高速にループ処理などを実行させることができるプロセッサを提供することを目的とする。
【課題を解決するための手段】
【0009】
前記目的を達成するために、本発明に係わるプロセッサは、命令キャッシュに格納されている命令を取り出して実行するプロセッサであって、前記命令キャッシュから取り出した1以上の命令を格納して供給する主命令バッファと、前記命令キャッシュから取り出した1以上の命令を格納して副次的に供給する第1の副命令バッファと、記命令キャッシュから取り出した1以上の命令が前記第1の副命令バッファに充填されたか否かを示すフラグ情報が記憶されるフラグ記憶手段と、前記主命令バッファおよび前記第1の副命令バッファのいずれかを命令供給源に選択するセレクタと、前記セレクタを介して前記主命令バッファから命令を供給し、前記命令キャッシュの第1のアドレスから取り出した1以上の命令を前記第1の副命令バッファに充填することが示される第1の充填命令が実行された場合には、前記第1のアドレスから1以上の命令を取り出して前記第1の副命令バッファに格納し、前記第1の副命令バッファに格納された命令を繰り返し実行するためのループ命令が実行された場合には、前記セレクタを制御して前記第1の副命令バッファを選択し、前記セレクタを介して前記第1の副命令バッファから命令を繰り返し供給する命令フェッチ制御手段とを備え、前記命令キャッシュの前記第1のアドレスから取り出された命令が前記副命令バッファに充填された場合に、前記第1のアドレスから取り出された命令が充填されていることを示すフラグ情報が前記フラグ記憶手段に記憶されることを特徴とする。
【0010】
これによって、メインで利用される主命令バッファ以外に副次的に利用される第1の副命令バッファなどを備えることにより、ループ部分などに対して、繰り返し命令キャッシュにアクセスしてフェッチすることを省略することができる。そして、第1の副命令バッファなどから命令を供給することによって、パイプラインのペナルティを短縮することができ、分岐によって生じるパイプラインの空きを埋めることができる。さらに、命令キャッシュへのアクセスが省略されることによって、アクセス待ちなどを回避することができ、実行処理の性能を向上することができる。また、第1の充填命令で、フェッチする期間を調整して第1の副命令バッファに格納する期間を調整することができる。これにより、命令バッファの容量を大きくしても、その効果を十分に発揮できる程、十分な期間を見繕って前もって第1の充填命令を実行させるようにすることで、十分な命令を蓄積して供給することができる。結果、命令キャッシュのアクセス頻度を下げて、消費電力を抑えながら高速にループ処理などを実行させることができる。
【0011】
なお、本発明は、プロセッサとして実現されるだけではなく、プロセッサを制御する方法(以下、命令充填方法と呼称する。)などとして実現されるとしてもよい。また、本発明に係わるプロセッサによって提供される機能(以下、命令充填機能と呼称する。)が組み込まれたLSI(Large Scale Integration)、命令充填機能をFPGA(Field Programmable Gate Array)、CPLD(Complex Programmable Logic Device)などのプログラマブル・ロジック・デバイスに形成するIPコア(以下、命令充填コアと呼称する。)、および命令充填コアを記録した記録媒体などとして実現されるとしてもよい。
【発明の効果】
【0012】
以上、本発明に係わるプロセッサによれば、メインで利用される主命令バッファ以外に副次的に利用される第1の副命令バッファおよび第2の副命令バッファなどを備えることにより、ループ部分およびサブルーチンのリターン部分などに対して、繰り返し命令キャッシュにアクセスしてフェッチすることを省略することができる。そして、第1の副命令バッファおよび第2の副命令バッファなどから命令を供給することによって、パイプラインのペナルティを短縮することができ、分岐によって生じるパイプラインの空きを埋めることができる。さらに、命令キャッシュへのアクセスが省略されることによって、アクセス待ちなどを回避することができ、実行処理の性能を向上することができる。また、第1の充填命令で、フェッチする期間を調整して第1の副命令バッファに格納する期間を調整することができる。これにより、命令バッファの容量を大きくしても、その効果を十分に発揮できる程、十分な期間を見繕って前もって第1の充填命令を実行させるようにすることで、十分な命令を蓄積して供給することができる。結果、命令キャッシュのアクセス頻度を下げて、消費電力を抑えながら高速にループ処理などを実行させることができる。
【発明を実施するための最良の形態】
【0013】
(実施の形態1)
以下、本発明に係わる実施の形態1について図面を参照しながら説明する。
【0014】
本実施の形態におけるプロセッサは、命令を通常格納する命令バッファとは別に、ループ部分の命令を格納する命令バッファを備え、ループ部分の命令を実行するときに、繰り返し命令キャッシュからフェッチする代わりに、ループ部分の命令を一度フェッチして格納している命令バッファから供給することを特徴とする。
【0015】
さらに、これらの命令バッファとは別に、サブルーチンのリターン部分の命令を格納する命令バッファも備え、サブルーチンのリターン部分の命令を実行するときに、サブルーチンのリターン部分の命令を一度フェッチして格納している命令バッファから供給することも特徴とする。
【0016】
以上の点を踏まえて本実施の形態におけるプロセッサについて説明する。
【0017】
まず、本実施の形態におけるプロセッサの構成について説明する。
【0018】
図1に示されるように、プロセッサ100は、命令を通常格納する通常命令バッファ122とは別に、命令キャッシュ10に格納されている命令列のうち、ループ部分の命令を格納するTAR用命令バッファ123を備える。そして、ループ部分の命令を実行する場合には、TAR用命令バッファ123に格納されている命令を命令実行部101に供給する。
【0019】
さらに、プロセッサ100は、通常命令バッファ122およびTAR用命令バッファ123とは別に、サブルーチンのリターン部分の命令を格納するLR用命令バッファ124も備える。そして、サブルーチンのリターン部分の命令を実行する場合には、LR用命令バッファ124に格納されている命令を命令実行部101に供給する。
【0020】
ここでは、一例として、プロセッサ100は、命令実行部101、命令フェッチ制御部102、セレクタ111、通常命令アドレスレジスタ112、TAR用命令アドレスレジスタ113、LR用命令アドレスレジスタ114、セレクタ121、通常命令バッファ122、TAR用命令バッファ123、LR用命令バッファ124などを備える。
【0021】
命令実行部101は、セレクタ121を介して供給される命令を実行する。
【0022】
命令フェッチ制御部102は、命令実行部101において、TAR用充填命令およびLR用充填命令が実行されていない場合において、通常命令バッファ122に空きができる見込みがあれば、セレクタ111を制御して通常命令アドレスレジスタ112を選択する。そして、通常命令アドレスレジスタ112に設定されたアドレスの命令を命令キャッシュ10からフェッチし、フェッチした命令を通常命令バッファ122に格納する。
【0023】
また、命令フェッチ制御部102は、命令実行部101において、TAR用充填命令が実行されれば、TAR用充填命令に設定された充填開始アドレスを命令実行部101から受け取り、受け取った充填開始アドレスをTAR用命令アドレスレジスタ113に設定する。さらに、通常命令を通常命令バッファ122に充填する合間を縫って、TAR用充填命令によって特定されるループ部分の命令をTAR用命令バッファ123に充填する。このとき、命令フェッチ制御部102は、合間を縫ってセレクタ111を制御してTAR用命令アドレスレジスタ113を選択する。そして、命令実行部101において、TAR用充填命令によって特定されるループ部分の命令が実行されるときに、TAR用命令バッフ
ァ123から命令実行部101に命令を供給する。
【0024】
同様に、命令フェッチ制御部102は、命令実行部101において、LR用充填命令が実行されれば、LR用充填命令に設定された充填開始アドレスを命令実行部101から受け取り、受け取った充填開始アドレスをLR用命令アドレスレジスタ114に設定する。さらに、通常命令バッファ122に命令を充填する合間を縫って、LR用充填命令によって特定されるサブルーチンのリターン部分をLR用命令バッファ124に充填する。このとき、命令フェッチ制御部102は、合間を縫ってセレクタ111を制御してLR用命令アドレスレジスタ114を選択する。そして、命令実行部101において、LR用充填命令によって特定されるサブルーチンのリターン部分の命令が実行されるときに、LR用命令バッファ124から命令実行部101に命令を供給する。
【0025】
「TAR用充填命令」とは、例えば、下記のTAR用充填命令で示されるように、”LABEL”によって特定されるアドレスからループ部分が開始し、そのループ部分をTAR用命令バッファ123に格納することが示される命令である。
【0026】
[TAR用充填命令] SETTAR LABEL
例えば、図2に示されるTAR用充填命令”SETTAR#1”のように、アドレス”LABEL#1”の命令”I#9”からTAR用分岐命令”JUMPTAR#1”までのループ部分をTAR用命令バッファ123に充填することを指示する命令をいう。ここで、アドレス”LABEL#1”は、分岐命令”JUMPTAR#1”に設定される分岐先アドレスでもあり、TAR用充填命令”SETTAR#1”によって充填が開始されるアドレス(以下、充填開始アドレスとも呼称する。)でもある。
【0027】
なお、図2に示されるように、ここでは、ループ部分、すなわち、太い枠で囲まれた命令列が実行される前にTAR用充填命令が実行される。また、ここでは、話を簡単にするために、命令キャッシュ10からフェッチされる命令長を固定長とし、1サイクルあたり1命令を命令キャッシュ10からフェッチするとしているが、命令長を可変長としてもよいし、命令キャッシュ10から1サイクルあたり1命令以上、例えば、4命令をフェッチするとしてもよい。
【0028】
なお、命令実行部101において、TAR用充填命令”SETTAR#1”が実行されれば、TAR用分岐命令”JUMPTAR#1”を含む太い枠で囲まれた命令列がTAR用命令バッファ123に充填される。
【0029】
なお、一つのTAR用充填命令の代わりに、ループ部分をTAR用命令バッファ123に格納することが示される命令と、そのループ部分の開始アドレスが示される命令との二つの命令としてもよい。
【0030】
「LR用充填命令」とは、例えば、下記のLR用充填命令で示されるように、サブルーチンの戻り先アドレスによって特定されるアドレスからリターン部分が開始し、そのリターン部分をLR用命令バッファ124に格納することが示される命令である。
【0031】
[LR用充填命令] SETLR
例えば、図2に示されるLR用充填命令”SETLR#1”のように、アドレス”LABEL#2”の命令”I#18”から所定の命令数分のリターン部分、例えば、4命令だと命令”I#21”までのリターン部分をLR用命令バッファ124に充填することを指示する命令をいう。ここで、アドレス”LABEL#2”は、リターン命令”RETLR#1”に設定される戻り先アドレスでもあり、LR用充填命令”SETLR#1”によって充填が開始されるアドレス(以下、充填開始アドレスとも呼称される。)でもある。
【0032】
なお、図2に示されるように、ここでは、リターン部分、すなわち、太い枠で囲まれた命令列が実行される前にLR用充填命令が実行される。
【0033】
なお、命令実行部101において、LR用充填命令”SETLR#1”が実行されれば、CALLLR#1の後続命令”I#18”を含む太い枠で囲まれた命令列がLR用命令バッファ124に充填される。
【0034】
なお、一つのLR用充填命令の代わりに、リターン部分をLR用命令バッファ124に格納することが示される命令と、そのリターン部分の開始アドレスが示される命令との二つの命令としてもよい。
【0035】
セレクタ111は、命令フェッチ制御部102からの指示に応じて、通常命令アドレスレジスタ112、TAR用命令アドレスレジスタ113、およびLR用命令アドレスレジスタ114のいずれかの命令アドレスレジスタを選択する。そして、選択した命令アドレスレジスタに設定されているアドレスを命令キャッシュ10に出力する。
【0036】
通常命令アドレスレジスタ112は、命令を取り出す際に通常利用される命令アドレスレジスタである。
【0037】
TAR用命令アドレスレジスタ113は、TAR用充填命令によって特定されるループ部分の命令を取り出すときに利用される命令アドレスレジスタである。
【0038】
LR用命令アドレスレジスタ114は、LR用充填命令によって特定されるリターン部分の命令を取り出すときに利用される命令アドレスレジスタである。
【0039】
「アドレスレジスタ」とは、命令キャッシュ10などから命令を取り出す際に、その命令のアドレスが登録されるレジスタをいう。
【0040】
セレクタ121は、命令フェッチ制御部102からの指示に応じて、通常命令バッファ122、TAR用命令バッファ123、およびLR用命令バッファ124のいずれかの命令バッファを選択する。そして、選択した命令バッファに充填されている命令を命令実行部101に供給する。
【0041】
通常命令バッファ122は、通常、命令を蓄積して供給する命令バッファである。
【0042】
TAR用命令バッファ123は、TAR用充填命令によって特定されるループ部分の命令を格納して供給する命令バッファである。
【0043】
LR用命令バッファ124は、LR用充填命令によって特定されるリターン部分の命令を格納して供給する命令バッファである。
【0044】
なお、図3A、図3Bに示されるように、TAR用命令バッファ123は、命令供給源として選択されても、ループ部分の命令がTAR用命令バッファ123に充填中または充填が未実行のときは、Valid bit133に保持されている値”0”(F143)を、セレクタ121を介して命令実行部101に出力し、充填が完了していないことを知らせる(R141)。一方、充填が完了すると、Valid bitとして値”1”を出力して充填が完了したことを知らせる。また、命令実行部101においてTAR用充填命令が実行され、TAR用命令アドレスレジスタ113に充填開始アドレスが設定される場合には、命令フェッチ制御部102からTAR用命令アドレスレジスタ113へ書き込み
要求信号”1”を出力する。このとき、図3Bに示されるように、論理表140に基づいて、Valid bitとして値”0”が設定され、TAR用命令バッファ123が選択されても、セレクタ121を介して命令実行部101に充填されていないことを知らせ(R145)、TAR用命令バッファ123から命令が供給されない。なお、LR用命令バッファ124についても同様である。
【0045】
続いて、本実施の形態におけるプロセッサの動作について説明する。
【0046】
図4に示されるように、命令フェッチ制御部102は、命令実行部101において、TAR用充填命令が実行されると、TAR用充填命令に設定された充填開始アドレスを命令実行部101から受け取り、受け取った充填開始アドレスをTAR用命令アドレスレジスタ113に設定する。そして、通常命令を通常命令バッファ122に充填する合間を縫って、TAR用充填命令によって特定されるループ部分の命令をTAR用命令バッファ123に充填する(充填状態S11)。このとき、命令フェッチ制御部102は、合間を縫ってセレクタ111を制御してTAR用命令アドレスレジスタ113を選択する。
【0047】
さらに、命令フェッチ制御部102は、命令実行部101において、TAR用充填命令と対応するTAR用分岐命令が実行され、ループ部分の命令が実行されるときに、TAR用命令バッファ123から命令実行部101に命令を供給する(供給状態S12)。このとき、命令フェッチ制御部102は、セレクタ121を制御してTAR用命令バッファ123を命令供給源として選択する。
【0048】
さらに、命令フェッチ制御部102は、命令実行部101においてループ部分が繰り返し実行される場合には、TAR用命令バッファ123から命令を繰り返し供給する。そして、命令実行部101において、TAR用分岐命令が実行され、ループ部分を抜けると、通常命令バッファ122から命令実行部101に命令を供給する(通常状態S10)。このとき、命令フェッチ制御部102は、セレクタ121を制御して通常命令バッファ122を命令供給源として選択する。
【0049】
同様に、命令フェッチ制御部102は、命令実行部101において、LR用充填命令が実行されると、LR用充填命令に設定された充填開始アドレスを命令実行部101から受け取り、受け取った充填開始アドレスをLR用命令アドレスレジスタ114に設定する。そして、通常命令バッファ122に命令を充填する合間を縫って、LR用充填命令によって特定されるリターン部分の命令をLR用命令バッファ124に充填する(充填状態S11)。このとき、命令フェッチ制御部102は、合間を縫ってセレクタ111を制御してLR用命令アドレスレジスタ114を選択する。
【0050】
さらに、命令フェッチ制御部102は、命令実行部101において、LR用充填命令と対応するLR用リターン命令が実行され、リターン部分の命令が実行される場合には、LR用命令バッファ124から命令実行部101に命令を供給する(供給状態S12)。このとき、命令フェッチ制御部102は、セレクタ121を制御してLR用命令バッファ124を命令供給源として選択する。
【0051】
さらに、命令フェッチ制御部102は、命令実行部101において、LR用リターン命令が実行され、リターン部分を抜けると、通常命令バッファ122から命令実行部101に命令を供給する(通常状態S10)。このとき、命令フェッチ制御部102は、セレクタ121を制御して通常命令バッファ122を命令供給源として選択する。
【0052】
続いて、本実施の形態における命令フェッチ制御部102において命令充填時の処理(以下、命令充填処理と呼称する。)について説明する。
【0053】
図5に示されるように、命令フェッチ制御部102は、命令実行部101において、TAR用充填命令およびLR用充填命令が実行されていない場合において(S101:No、S102:No)、通常命令バッファ122に空きができる見込みがあれば(S103:Yes)、セレクタ111を制御して通常命令アドレスレジスタ112を選択する(S104)。そして、通常命令アドレスレジスタ112に設定されたアドレスの命令を命令キャッシュ10からフェッチし(S105)、フェッチした命令を通常命令バッファ122に格納する(S106)。
【0054】
一方、図5、図6Aに示されるように、命令フェッチ制御部102は、命令実行部101において、TAR用充填命令が実行された場合には(S101:Yes)、TAR用命令の充填が完了するまで(S107:No)、通常命令バッファ122に空きができる見込みがないときを見計らって(S108:No)、セレクタ111を制御してTAR用命令アドレスレジスタ113を選択する(S109)。そして、TAR用命令アドレスレジスタ113に設定されたアドレスの命令を命令キャッシュ10からフェッチし(S110)、フェッチした命令をTAR用命令バッファ123に格納する(S111)。
【0055】
同様に、図5、図6Bに示されるように、命令フェッチ制御部102は、命令実行部101において、LR用充填命令が実行された場合には(S102:Yes)、LR用命令の充填が完了するまで(S112:No)、通常命令バッファ122に空きができる見込みがないときを見計らって(S113:No)、セレクタ111を制御してLR用命令アドレスレジスタ114を選択する(S114)。そして、LR用命令アドレスレジスタ114に設定されたアドレスの命令を命令キャッシュ10からフェッチし(S115)、フェッチした命令をLR用命令バッファ124に格納する(S116)。
【0056】
続いて、本実施の形態における命令フェッチ制御部102において命令供給時の処理(以下、命令供給処理と呼称する。)について説明する。
【0057】
図7に示されるように、命令フェッチ制御部102は、セレクタ121を制御して通常命令バッファ122を選択し(S121)、選択した命令バッファから命令実行部101に命令を供給する(S122)。そして、命令実行部101において実行された命令に応じて、下記(1)〜(5)の処理を実行する。
【0058】
(1)命令実行部101において実行された命令がTAR用充填命令である場合には、命令フェッチ制御部102は、TAR用充填命令に設定された充填開始アドレスを命令実行部101から受け取り、受け取った充填開始アドレスをTAR用アドレスレジスタ113に設定する(S124)。そして、選択した命令バッファから命令を供給する(S122)。
【0059】
(2)命令実行部101において実行された命令がLR用充填命令である場合には、命令フェッチ制御部102は、LR用充填命令に設定されていた充填開始アドレスを命令実行部101から受け取り、受け取った充填開始アドレスをLR用アドレスレジスタ114に設定する(S125)。そして、選択した命令バッファから命令を供給する(S122)。
【0060】
(3)命令実行部101において実行された命令がTAR用分岐命令(1回目)である場合において、分岐先アドレスに分岐しない場合には、命令フェッチ制御部102は、選択した命令バッファ、すなわち、通常命令バッファ122から命令を供給する(S122)。
【0061】
一方、命令フェッチ制御部102は、分岐先アドレスに分岐する場合には、セレクタ121を制御してTAR用命令バッファ123を選択する(S127)。さらに、図8Aに示されるように、TAR用充填命令によって特定されるループ部分がTAR用命令バッファ123に充填されるまで(S131:No)、セレクタ111を制御してTAR用命令アドレスレジスタ113を選択し(S133)、TAR用命令アドレスレジスタ113に設定されたアドレスの命令を命令キャッシュ10からフェッチし(S133)、フェッチした命令をTAR用命令バッファ123に格納する(S134)。そして、TAR用充填命令によって特定されるループ部分が充填されると(S131:Yes)、選択した命令バッファ、すなわち、TAR用命令バッファ123から命令を供給する(S122)。
【0062】
(4)命令実行部101において実行された命令がTAR用分岐命令(2回目以降)である場合において、分岐先アドレスに分岐する場合には(S128:Yes)、命令フェッチ制御部102は、選択した命令バッファ、すなわち、TAR用命令バッファ123から命令を供給する(S122)。一方、分岐先アドレスに分岐しない場合には(S129:No)、セレクタ121を制御して通常命令バッファ122を選択する(S129)。そして、選択した命令バッファ、すなわち、通常命令バッファ122から命令を供給する(S122)。
【0063】
(5)命令実行部101において実行された命令がLR用リターン命令である場合には、命令フェッチ制御部102は、セレクタ121を制御してLR用命令バッファ124を選択する(S130)。さらに、図8Bに示されるように、LR用充填命令によって特定されるリターン部分がLR用命令バッファ124に充填されるまで(S135:No)、セレクタ111を制御してLR用命令アドレスレジスタ114を選択し(S136)、LR用命令アドレスレジスタ114に設定されたアドレスの命令を命令キャッシュ10からフェッチし(S137)、フェッチした命令をLR用命令バッファ124に格納する(S138)。そして、LR用リターン命令の戻り先命令を含むリターン部分が充填されると(S135:Yes)、選択した命令バッファ、すなわち、LR用命令バッファ124から命令を供給する(S122)。
【0064】
続いて、本実施の形態におけるプロセッサの動作例について説明する。
【0065】
図9に示されるように、ここでは、一例として、通常命令バッファ122、TAR用命令バッファ123、およびLR用命令バッファ124として、3命令が充填できる命令バッファとする。
【0066】
なお、図9において、IBは、通常命令バッファ122を示す。また、IAR112は、通常命令アドレスレジスタ112を示す。さらに、TAR113は、TAR用命令アドレスレジスタ113を示す。
【0067】
また、命令フェッチアドレス”A0”〜”A2”に格納されている命令を”I#A0”〜”I#A2”とし、命令フェッチアドレス”B0”〜”B2”に格納されている命令を”I#B0”〜”I#B2”とする。
【0068】
「命令フェッチアドレス」とは、フェッチ対象の命令が格納されているアドレスをいう。
【0069】
さらに、命令”I#A0”〜”I#A2”については、通常命令バッファ122に格納され、命令”I#B0”〜”I#B2”については、TAR用命令バッファ123に格納される。
【0070】
なお、格納されるにあたっては、下記(1)〜(7)の順に格納される。
【0071】
(1)時間T1〜T2において、命令フェッチ制御部102は、通常命令バッファ122に空きができる見込みがあることから、通常命令アドレスレジスタ112に命令フェッチアドレス”A0”を設定する。
【0072】
(2)時間T2〜T3において、命令フェッチ制御部102は、セレクタ111を制御して通常命令アドレスレジスタ112を選択し、選択した通常命令アドレスレジスタ112に設定されている命令フェッチアドレス”A0”を命令キャッシュ10に出力する。そして、命令フェッチアドレス”A0”によって特定される命令”I#A0”を命令キャッシュ10からフェッチする。
【0073】
また、命令フェッチ制御部102は、通常命令バッファ122に空きができる見込みがないことから、TAR用命令アドレスレジスタ113に命令フェッチアドレス”B0”を設定する。
【0074】
(3)時間T3〜T4において、命令フェッチ制御部102は、フェッチした命令”I#A0”を通常命令バッファ122に格納する。
【0075】
また、命令フェッチ制御部102は、セレクタ111を制御して通常命令アドレスレジスタ112を選択し、選択した通常命令アドレスレジスタ112に設定されている命令フェッチアドレス”B0”を命令キャッシュ10に出力する。そして、命令フェッチアドレス”B0”によって特定される命令”I#B0”を命令キャッシュ10からフェッチする。
【0076】
また、命令フェッチ制御部102は、通常命令バッファ122に空きができる見込みがあることから、通常命令アドレスレジスタ112に命令フェッチアドレス”A1”を設定する。
【0077】
(4)時間T4〜T5において、命令フェッチ制御部102は、命令キャッシュ10からフェッチした命令”I#B0”をTAR用命令バッファ123に格納する。
【0078】
また、命令フェッチ制御部102は、セレクタ111を制御して通常命令アドレスレジスタ112を選択し、選択した通常命令アドレスレジスタ112に設定されている命令フェッチアドレス”A1”を命令キャッシュ10に出力する。そして、命令フェッチアドレス”A1”によって特定される命令”I#A1”を命令キャッシュ10からフェッチする。
【0079】
また、命令フェッチ制御部102は、通常命令バッファ122に空きができる見込みがないことから、TAR用命令アドレスレジスタ113に命令フェッチアドレス”B1”を設定する。
【0080】
(5)時間T5〜T6において、命令フェッチ制御部102は、命令キャッシュ10からフェッチした命令”I#A1”を通常命令バッファ122に格納する。
【0081】
また、命令フェッチ制御部102は、セレクタ111を制御してTAR用命令アドレスレジスタ113を選択し、選択したTAR用命令アドレスレジスタ113に設定されている命令フェッチアドレス”B1”を命令キャッシュ10に出力する。そして、命令フェッチアドレス”B1”によって特定される命令”I#B1”を命令キャッシュ10からフェッチする。
【0082】
また、命令フェッチ制御部102は、通常命令バッファ122に空きができる見込みがないことから、TAR用命令アドレスレジスタ113に命令フェッチアドレス”B2”を設定する。
【0083】
(6)時間T6〜T7において、命令フェッチ制御部102は、命令キャッシュ10からフェッチした命令”I#B1”をTAR用命令バッファ123に格納する。
【0084】
また、命令フェッチ制御部102は、セレクタ111を制御してTAR用命令アドレスレジスタ113を選択し、選択したTAR用命令アドレスレジスタ113に設定されている命令フェッチアドレス”B2”を命令キャッシュ10に出力する。そして、命令フェッチアドレス”B2”によって特定される命令”I#B2”を命令キャッシュ10からフェッチする。
【0085】
また、命令フェッチ制御部102は、通常命令バッファ122に空きができる見込みがあることから、通常命令アドレスレジスタ112に命令フェッチアドレス”A2”を設定する。
【0086】
(7)時間T7〜T8において、命令フェッチ制御部102は、命令キャッシュ10からフェッチした命令”I#B2”をTAR用命令バッファ123に格納する。
【0087】
また、命令フェッチ制御部102は、セレクタ111を制御して通常命令アドレスレジスタ112を選択し、選択した通常命令アドレスレジスタ112に設定されている命令フェッチアドレス”A2”を命令キャッシュ10に出力する。そして、命令フェッチアドレス”A2”によって特定される命令”I#A2”を命令キャッシュ10からフェッチする。
【0088】
以上説明したように本実施の形態におけるプロセッサによれば、メインで利用される通常命令バッファ122以外に副次的に利用されるTAR用命令バッファ123およびLR用命令バッファ124などを備えることにより、ループ部分およびサブルーチンリターン部分などに対して、繰り返し命令キャッシュにアクセスしてフェッチすることを省略することができる。そして、TAR用命令バッファ123およびLR用命令バッファ124などから命令を供給することによって、パイプラインのペナルティを短縮することができ、分岐によって生じるパイプラインの空きを埋めることができる。さらに、命令キャッシュへのアクセスが省略されることによって、アクセス待ちなどを回避することができ、実行処理の性能を向上することができる。また、TAR用充填命令で、フェッチする期間を調整してTAR用命令バッファ123に格納する期間を調整することができることから、命令バッファの容量を大きくしても、その効果を十分に発揮できる程、十分な期間を見繕って前もってTAR用充填命令を実行させるようにすることで、十分な命令を蓄積して供給することができる。結果、命令キャッシュのアクセス頻度を下げて、消費電力を抑えながら高速にループ処理などを実行させることができる。同様に、LR用充填命令で、LR用命令バッファ124に格納する期間を調整することができる。
【0089】
(実施の形態2)
次に、本発明に係わる実施の形態2について図面を参照しながら説明する。
【0090】
本実施の形態におけるプロセッサは、ループ部分の命令を格納する命令バッファを複数備え、複数のループ部分の命令を供給することを特徴とする。
【0091】
以上の点を踏まえて本実施の形態のプロセッサについて説明する。
【0092】
なお、実施の形態1における構成要素と同一の構成要素については同一の参照符号を付して説明を省略する。
【0093】
まず、本実施の形態におけるプロセッサの構成について説明する。
【0094】
図10に示されるように、プロセッサ200は、プロセッサ100と比べて、下記(1)〜(7)の点が異なる。
【0095】
(1)命令フェッチ制御部102の代わりに、命令フェッチ制御部202を備える。
【0096】
命令フェッチ制御部202は、命令実行部101において、第1TAR用充填命令が実行されれば、通常命令バッファ122に命令を充填する合間を縫って、第1TAR用充填命令によって特定される第1ループ部分の命令を第1TAR用命令バッファ223に充填する。そして、命令実行部101において、第1TAR用充填命令によって特定される第1ループ部分の命令が実行されるときに、第1TAR用命令バッファ223から命令実行部101に命令を供給する。
【0097】
さらに、命令フェッチ制御部202は、命令実行部101において、第2のTAR用充填命令が実行されれば、第1TAR用命令バッファ223から命令を供給している合間を縫って、第2のTAR用充填命令によって特定される第2のループ部分の命令を第2TAR用命令バッファ224に充填する。そして、命令実行部101において、第1TAR用充填命令によって特定される第2ループ部分の命令が実行されるときに、第2TAR用命令バッファ224から命令実行部101に命令を供給する。
【0098】
(2)セレクタ111の代わりに、セレクタ211を備える。
セレクタ211は、命令フェッチ制御部202からの指示に応じて、通常命令アドレスレジスタ112、第1TAR用命令アドレスレジスタ213、および第2TAR用命令アドレスレジスタ214のいずれかの命令アドレスレジスタを選択する。そして、選択した命令アドレスレジスタに設定されているアドレスを命令キャッシュ10に出力する。
【0099】
(3)TAR用命令アドレスレジスタ113の代わりに、第1TAR用命令アドレスレジスタ213を備える。
【0100】
第1TAR用命令アドレスレジスタ213は、第1TAR用充填命令によって特定されるループ部分の命令を取り出すときに利用される命令アドレスレジスタである。
【0101】
(4)LR用命令アドレスレジスタ114の代わりに、第2TAR用命令アドレスレジスタ214を備える。
【0102】
第2TAR用命令アドレスレジスタ214は、第2TAR用充填命令によって特定されるループ部分の命令を取り出すときに利用される命令アドレスレジスタである。
【0103】
(5)セレクタ121の代わりに、セレクタ221を備える。
【0104】
セレクタ221は、命令フェッチ制御部202からの指示に応じて、通常命令バッファ122、第1TAR用命令バッファ223、および第2TAR用命令バッファ224のいずれかの命令バッファを選択する。そして、選択した命令バッファに充填されている命令を命令実行部101に供給する。
【0105】
(6)TAR用命令バッファ123の代わりに、第1TAR用命令バッファ223を備える。
【0106】
第1TAR用命令バッファ223は、第1TAR用充填命令によって特定されるループ部分の命令を格納して供給する命令バッファである。
【0107】
例えば、図11に示されるように、第1TAR用充填命令”SETTAR#1”によって特定される第1ループ部分、すなわち、アドレス”LABEL#1”の命令”I#11”から第1TAR用分岐命令”JUMPTAR#1”までの第1ループ部分が第1TAR命令バッファ223に充填される。
【0108】
(7)LR用命令バッファ124の代わりに、第2TAR用命令バッファ224を備える。
【0109】
第2TAR用命令バッファ224は、第2TAR用充填命令によって特定される第2ループ部分の命令を格納して供給する命令バッファである。
【0110】
例えば、図11に示されるように、第2TAR用充填命令”SETTAR#2”によって特定される第2ループ部分、すなわち、アドレス”LABEL#2”の命令”I#22”から第2TAR用分岐命令”JUMPTAR#2”までの第2ループ部分が第2TAR用命令バッファ224に充填される。
【0111】
また、図12に示されるように、二重ループの場合には、第1TAR用充填命令”SETTAR#1”によって特定される第1ループ部分、すなわち、アドレス”LABEL#1”の命令”I#17”から第1TAR用分岐命令”JUMPTAR#1”までの内側ループ部分が第1TAR用命令バッファ223に充填される。さらに、命令”I#20”から第2TAR用分岐命令”JUMPTAR#2”までの外側ループ部分の一部分も第1TAR用命令バッファ223に充填される。
【0112】
また、第2TAR用充填命令”SETTAR#2”によって特定される第2ループ部分、すなわち、アドレス”LABEL#2”の命令”I#11”から第2TAR用分岐命令”JUMPTAR#2”までの外側ループ部分が第2TAR用命令バッファ224に充填される。
【0113】
そして、命令フェッチ制御部202は、命令実行部101において、第1TAR用命令バッファ223から供給された第2TAR用分岐命令”JUMPTAR#2”が実行されてアドレス”LABEL#2”に分岐する場合には、セレクタ221を制御して第2TAR用命令バッファ224を選択する。
【0114】
また、命令フェッチ制御部202は、命令実行部101において、第2TAR用命令バッファ224から供給される第1TAR用分岐命令”JUMPTAR#1”が実行されてアドレス”LABEL#1”に分岐する場合には、セレクタ221を制御して第1TAR用命令バッファ223を選択する。
【0115】
同様に、図13に示されるように、第1TAR用充填命令”SETTAR#1”によって特定される第1ループ部分、すなわち、アドレス”LABEL#1”の命令”I#11”から第1TAR用分岐命令”JUMPTAR#1”までのループ部分が第1TAR用命令バッファ223に充填される。さらに、命令”I#20”から第2TAR用分岐命令”JUMPTAR#2”までの部分も第1TAR用命令バッファ223に充填される。
【0116】
また、第2TAR用充填命令”SETTAR#2”によって特定される第2ループ部分、すなわち、アドレス”LABEL#2”の命令”I#17”から第2TAR用分岐命令”JUMPTAR#2”までのループ部分が第2TAR用命令バッファ224に充填される。
【0117】
そして、命令フェッチ制御部202は、命令実行部101において、第1TAR用命令バッファ223から供給された第2TAR用分岐命令”JUMPTAR#2”が実行されてアドレス”LABEL#2”に分岐する場合には、セレクタ221を制御して第2TAR用命令バッファ224を選択する。
【0118】
また、命令フェッチ制御部202は、命令実行部101において、第2TAR用命令バッファ224から供給された第1TAR用分岐命令”JUMPTAR#1”が実行されてアドレス”LABEL#1”に分岐する場合には、セレクタ221を制御して第1TAR用命令バッファ223を選択する。
【0119】
以上説明したように本実施の形態におけるプロセッサによれば、メインで利用される通常命令バッファ122以外に副次的に利用される複数のTAR用命令バッファなどを備えることにより、複数のループ部分などに対して、繰り返し命令キャッシュにアクセスしてフェッチすることを省略することができる。そして、第1TAR用命令バッファ223および第2TAR用命令バッファ224などから命令を供給することによって、パイプラインのペナルティを短縮することができ、分岐によって生じるパイプラインの空きを埋めることができる。さらに、命令キャッシュへのアクセスが省略されることによって、アクセス待ちなどを回避することができ、実行処理の性能を向上することができる。また、第1TAR用充填命令で、フェッチする期間を調整して第1TAR用命令バッファ223に格納する期間を調整することができ、第2TAR用充填命令で、フェッチする期間を調整して第2TAR用命令バッファ224に格納する期間を調整することができることから、命令バッファの容量を大きくしても、その効果を十分に発揮できる程、十分な期間を見繕って前もって第1TAR用充填命令および第2TAR用充填命令を実行させるようにすることで、十分な命令を蓄積して供給することができる。結果、命令キャッシュのアクセス頻度を下げて、消費電力を抑えながら高速にループ処理などを実行させることができる。アクセス頻度が減ることによって、消費電力の増大を抑制することができる。
【0120】
(その他)
なお、図14に示されるように、プロセッサ300は、命令実行部101、命令フェッチ制御部302、セレクタ311、通常命令アドレスレジスタ112、第1TAR用命令アドレスレジスタ313、第2TAR用命令アドレスレジスタ314、LR用命令アドレスレジスタ114、セレクタ321、通常命令バッファ122、第1TAR用命令バッファ323、第2TAR用命令バッファ324、およびLR用命令バッファ124を備えるとしてもよい。すなわち、複数のTAR用命令バッファおよびLR用命令バッファを備え、複数のループ部分の命令およびサブルーチン部分の命令を供給するとしてもよい。
【0121】
なお、プロセッサ100、300において、LR用命令バッファ124を備える代わりに、TAR用命令バッファおよびLR用命令バッファを兼用する命令バッファを備えるとしてもよい。さらに、LR用命令アドレスレジスタ114を備える代わりに、TAR用命令アドレスレジスタおよびLR用命令アドレスレジスタを兼用する命令アドレスレジスタを備えるとしてもよい。
【0122】
なお、プロセッサは、フルカスタムLSI(Large Scale Integration)によって実現されるとしてもよい。また、ASIC(Application Specific Integrated Circuit)などのようなセミカスタムLSIによって実現されるとしてもよい。また、FPGA(Field Programmable Gate Array)、CPLD(Complex Programmable Logic Device)などのようなプログラマブル・ロジック・デバイスによって実現されるとしてもよい。また、動的に回路構成が書き換え可能なダイナミック・リコンフィギュラブル・デバイスとして実現されるとしてもよい。
【0123】
さらに、プロセッサを構成する1以上の機能を、これらのLSIに形成する設計データは、VHDL(Very high speed integrated circuit Hardware Description Language)、Verilog−HDL、SystemC等のようなハードウェア記述言語によって記述されたプログラム(以下、HDLプログラムと呼称する。)としてもよい。また、HDLプログラムを論理合成して得られるゲート・レベルのネットリストとしてもよい。また、ゲート・レベルのネットリストに、配置情報、プロセス条件等を付加したマクロセル情報としてもよい。また、寸法、タイミング等が規定されたマスクデータとしてもよい。
【0124】
さらに、コンピュータシステム、組み込みシステム等のようなハードウェアシステムに読み出され得るように、光学記録媒体(例えば、CD−ROM等。)、磁気記録媒体(例えば、ハードディスク等。)、光磁気記録媒体(例えば、MO等。)、半導体メモリ(例えば、メモリカード等。)等のようなコンピュータ読み取り可能な記録媒体に設計データを記録しておくとしてもよい。そして、これらの記録媒体を介して他のハードウェアシステムに読み取られた設計データが、ダウンロードケーブルを介して、プログラマブル・ロジック・デバイスにダウンロードされるとしてもよい。
【0125】
または、ネットワーク等のような伝送路を経由して他のハードウェアシステムに取得され得るように、伝送路上のハードウェアシステムに設計データを保持しておくとしてもよい。さらに、ハードウェアシステムから伝送路を介して他のハードウェアシステムに取得された設計データが、ダウンロードケーブルを介して、プログラマブル・ロジック・デバイスにダウンロードされるとしてよい。
【0126】
または、論理合成、配置、配線された設計データを、通電時にFPGAに転送され得るように、シリアルROMに記録しておくとしてもよい。そして、シリアルROMに記録された設計データが、通電時に、直接、FPGAにダウンロードされるとしてもよい。
【産業上の利用可能性】
【0127】
本発明は、命令キャッシュに格納されている命令を取り出して実行するプロセッサなどとして、特に、ループ部分の命令を実行するときに、ループ部分用命令バッファに格納している命令を供給して命令キャッシュへのアクセス頻度を減らして、実行処理の向上を図り、かつ消費電力の増大を抑制するプロセッサなどとして、利用することができる。
【図面の簡単な説明】
【0128】
【図1】本発明に係わる実施の形態1におけるプロセッサの構成を示す図である。
【図2】本発明に係わる実施の形態1におけるプロセッサに供給される命令列の例を示す図である。
【図3A】本発明に係わる実施の形態1におけるプロセッサのTAR用命令バッファの充填完了を知らせる論理回路を示す図である。
【図3B】本発明に係わる実施の形態1におけるプロセッサのTAR用命令バッファの充填完了を知らせる論理回路に対する論理表を示す図である。
【図4】本発明に係わる実施の形態1におけるTAR用命令バッファおよびLR用命令バッファの各状態遷移を示す図である。
【図5】本発明に係わる実施の形態1におけるプロセッサにおいて命令充填時に実行される命令充填処理を示す第1の図である。
【図6A】本発明に係わる実施の形態1におけるプロセッサにおいて命令充填時に実行される命令充填処理を示す第2の図である。
【図6B】本発明に係わる実施の形態1におけるプロセッサにおいて命令充填時に実行される命令充填処理を示す第3の図である。
【図7】本発明に係わる実施の形態1におけるプロセッサにおいて命令供給時に実行される命令供給処理を示す第1の図である。
【図8A】本発明に係わる実施の形態1におけるプロセッサにおいて命令供給時に実行される命令供給処理を示す第2の図である。
【図8B】本発明に係わる実施の形態1におけるプロセッサにおいて命令供給時に実行される命令供給処理を示す第3の図である。
【図9】本発明に係わる実施の形態1におけるプロセッサの命令充填時の動作例を示す図である。
【図10】本発明に係わる実施の形態2におけるプロセッサの構成を示す図である。
【図11】本発明に係わる実施の形態2におけるプロセッサに供給される命令列の第1の例を示す図である。
【図12】本発明に係わる実施の形態2におけるプロセッサに供給される命令列の第2の例を示す図である。
【図13】本発明に係わる実施の形態2におけるプロセッサに供給される命令列の第3の例を示す図である。
【図14】本発明に係わるその他の実施の形態におけるプロセッサの構成を示す図である。

【特許請求の範囲】
【請求項1】
命令キャッシュに格納されている命令を取り出して実行するプロセッサであって、
前記命令キャッシュから取り出した1以上の命令を格納して供給する主命令バッファと、
前記命令キャッシュから取り出した1以上の命令を格納して副次的に供給する第1の副命令バッファと、
前記命令キャッシュから取り出した1以上の命令が前記第1の副命令バッファに充填されたか否かを示すフラグ情報が記憶されるフラグ記憶手段と、
前記主命令バッファおよび前記第1の副命令バッファのいずれかを命令供給源に選択するセレクタと、
前記セレクタを介して前記主命令バッファから命令を供給し、前記命令キャッシュの第1のアドレスから取り出した1以上の命令を前記第1の副命令バッファに充填することが示される第1の充填命令が実行された場合には、前記第1のアドレスから1以上の命令を取り出して前記第1の副命令バッファに格納し、前記第1の副命令バッファに格納された命令を繰り返し実行するためのループ命令が実行された場合には、前記セレクタを制御して前記第1の副命令バッファを選択し、前記セレクタを介して前記第1の副命令バッファから命令を繰り返し供給する命令フェッチ制御手段とを備え、
前記命令キャッシュの前記第1のアドレスから取り出された命令が前記副命令バッファに充填された場合に、前記第1のアドレスから取り出された命令が充填されていることを示すフラグ情報が前記フラグ記憶手段に記憶されることを特徴とするプロセッサ。
【請求項2】
前記命令フェッチ制御手段は、さらに、
前記第1の充填命令が実行された場合には、前記命令キャッシュから取り出した1以上の命令を前記主命令バッファに格納する合間を縫って、前記第1のアドレスから1以上の命令を取り出して前記第1の副命令バッファに格納する
ことを特徴とする請求項1に記載のプロセッサ。
【請求項3】
前記プロセッサは、さらに、
前記命令キャッシュから取り出した1以上の命令を格納して副次的に供給する第2の副命令バッファを備え、
前記セレクタは、さらに、
前記主命令バッファ、前記第1の副命令バッファ、および前記第2の副命令バッファのいずれかを命令供給源に選択し、
前記命令フェッチ制御手段は、さらに、
前記命令キャッシュの第2のアドレスから取り出した1以上の命令を前記第2の副命令バッファに充填することが示される第2の充填命令が実行された場合には、前記第2のアドレスから1以上の命令を取り出して前記第2の副命令バッファに格納し、前記第2のアドレスから取り出した1以上の命令を繰り返し実行する場合には、前記セレクタを制御して前記第2の副命令バッファを選択し、前記セレクタを介して前記第2の副命令バッファから命令を供給する
ことを特徴とする請求項1に記載のプロセッサ。
【請求項4】
前記命令キャッシュに格納されている命令列に対して、前記第1のアドレスは、分岐命令の分岐先アドレスであり、前記第2のアドレスは、サブルーチンからの戻り先アドレスであって、
前記第1の副命令バッファは、前記第1のアドレスから所定数の命令を格納し、
前記第2の副命令バッファは、前記第2のアドレスから所定数の命令を格納する
ことを特徴とする請求項3に記載のプロセッサ。
【請求項5】
前記命令キャッシュに格納されている命令列に対して、前記第1のアドレスは、分岐命令の分岐先アドレスであって、
前記第1の副命令バッファは、前記第1のアドレスから所定数の命令を格納し、
前記命令フェッチ制御手段は、前記第1のアドレスから取り出した1以上の命令を繰り返し供給する場合において、前記第1のアドレスから所定数の命令が前記第1の副命令バッファに充填されない場合には、前記第1のアドレスからの所定数の命令の充填完了を待って、前記第1のアドレスからの所定数の命令を供給する
ことを特徴とする請求項1に記載のプロセッサ。
【請求項6】
命令キャッシュに格納されている命令を取り出して実行する命令充填方法であって、
前記命令キャッシュから取り出した1以上の命令を格納して供給する主命令バッファと、
前記命令キャッシュから取り出した1以上の命令を格納して副次的に供給する第1の副命令バッファと、
前記命令キャッシュから取り出した1以上の命令が前記第1の副命令バッファに充填されたか否かを示すフラグ情報が記憶されるフラグ記憶手段と、
前記主命令バッファおよび前記第1の副命令バッファのいずれかを命令供給源に選択するセレクタとを制御して、
前記セレクタを介して前記主命令バッファから命令を供給し、前記命令キャッシュの第1のアドレスから取り出した1以上の命令を前記第1の副命令バッファに充填することが示される第1の充填命令が実行された場合には、前記第1のアドレスから1以上の命令を取り出して前記第1の副命令バッファに格納し、前記第1の副命令バッファに格納された命令を繰り返し実行するためのループ命令が実行された場合には、前記セレクタを制御して前記第1の副命令バッファを選択し、前記セレクタを介して前記第1の副命令バッファから命令を供給し、前記命令キャッシュの前記第1のアドレスから取り出された命令が前記副命令バッファに充填された場合に、前記第1のアドレスから取り出された命令が充填されていることを示すフラグ情報を前記フラグ記憶手段に記憶する
ことを特徴とする命令充填方法。

【図1】
image rotate

【図2】
image rotate

【図3A】
image rotate

【図3B】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6A】
image rotate

【図6B】
image rotate

【図7】
image rotate

【図8A】
image rotate

【図8B】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2009−104643(P2009−104643A)
【公開日】平成21年5月14日(2009.5.14)
【国際特許分類】
【出願番号】特願2009−21748(P2009−21748)
【出願日】平成21年2月2日(2009.2.2)
【分割の表示】特願2006−523470(P2006−523470)の分割
【原出願日】平成18年3月7日(2006.3.7)
【出願人】(000005821)パナソニック株式会社 (73,050)
【Fターム(参考)】