(57)【要約】【課題】処理クロック数を削減可能なプロセッサを提供する。【解決手段】プログラムカウンタ１２と命令メモリ１５，１６との間の信号経路にセレクタ１３ａを設け、２ワードの分岐命令発生時に、セレクタ１３ａが命令レジスタ２０から分岐先アドレスを取得し、プログラムカウンタ１２からのアドレスの代わりに、取得した分岐先アドレスを、命令メモリ１５，１６に対する読み出しアドレスとして出力することで、クロック消費数を削減する。【選択図】図１
2011186710.tif 000002
【特許請求の範囲】
【請求項１】
命令を格納する命令メモリと、
実行する前記命令のアドレスを出力するプログラムカウンタと、
前記命令メモリから読み出された前記命令を保持する命令レジスタと、
前記プログラムカウンタと前記命令メモリとの間の信号経路に設けられ、２ワードの分岐命令の発生時に、前記命令レジスタから分岐先アドレスを取得し、前記分岐先アドレスを前記命令メモリに対する読み出しアドレスとして出力するセレクタと、
を有することを特徴とするプロセッサ。
【請求項２】
前記セレクタは、前記命令レジスタに前記分岐命令が読み込まれるクロックタイミングで、前記分岐先アドレスを取得して前記命令メモリに出力し、前記命令レジスタは、前記クロックタイミングの次のクロックタイミングで前記分岐先アドレスに対応した前記命令を読み込むことを特徴とする請求項１記載のプロセッサ。
【請求項３】
前記分岐命令の発生時にサブルーチンからの戻り番地を保持する戻り番地保持部を有し、
サブルーチン復帰命令の発生時に、前記セレクタは、前記戻り番地保持部に保持された前記戻り番地を前記命令メモリに出力することを特徴とする請求項１または２に記載のプロセッサ。
【請求項４】
前記命令メモリは、偶数アドレスで指定される前記命令を格納する第１の命令メモリと、奇数アドレスで指定される前記命令を格納する第２の命令メモリに分割されており、
前記命令レジスタは、前記第１の命令メモリと前記第２の命令メモリから読み出された隣接する番地の１ワードの前記命令を保持する第１の命令レジスタと第２の命令レジスタを有し、
前記第２の命令レジスタから出力される前記命令を読み込み、命令デコーダに出力する第３の命令レジスタと、
前記第１の命令レジスタから出力される前記命令か、前記第３の命令レジスタから出力される前記命令の何れかを選択して出力する命令セレクタと、
前記命令セレクタから出力される命令を前記第３の命令レジスタと同じクロックタイミングで読み込み、前記命令デコーダに出力する第４の命令レジスタと、
１ワードの相対条件分岐命令の分岐条件が不成立時の戻り番地を保持する戻り番地保持部と、
前記相対条件分岐命令に含まれる相対分岐アドレスと、前記プログラムカウンタから出力される前記アドレスとを加算する加算器と、
をさらに有し、
前記セレクタは、前記分岐条件が成立した場合には前記加算器での加算結果を出力し、不成立の場合には前記戻り番地を出力し、
前記命令セレクタは、前記分岐条件が成立した場合に前記第１の命令レジスタからの前記命令を出力し、前記分岐条件が不成立の場合に前記第３の命令レジスタからの前記命令を出力することを特徴とする請求項１乃至３の何れか一項に記載のプロセッサ。
【請求項５】
命令判定部が、命令メモリから命令レジスタに読み込まれた命令を判定し、
前記命令判定部により前記命令が２ワードの分岐命令であると判定された場合、プログラムカウンタと、前記命令メモリとの間の信号経路に設けられたセレクタが前記命令レジスタから分岐先アドレスを取得し、前記分岐先アドレスを前記命令メモリに対する読み出しアドレスとして出力することを特徴とするプロセッサの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ及びその制御方法に関する。
【背景技術】
【０００２】
近年、ＤＳＰ（Digital Signal Processor）は、携帯機器などに広く用いられており、その高機能化や低消費電力化が求められている。
ＤＳＰプログラムによるデジタル信号処理は、リアルタイムで行われるため、高速の動作クロックが用いられる。ただし、高速の動作クロックを使用すると消費電力が増えて、バッテリ持続時間が減るため、携帯機器に用いるＤＳＰは、単位時間の処理クロック数をできる限り削減して、低速の動作クロックを用いて消費電力を下げることが求められている。
【０００３】
従来、処理クロック数を削減するために、命令メモリを偶数アドレス用と奇数アドレス用に分割して２アドレスの命令を１クロックで読み込んで、演算処理とデータ転送処理を並列処理させる技術があった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平８−７７００３号公報
【特許文献２】特表２００５−５２４１４３号公報
【特許文献３】特開２００３−１５０９４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、従来の技術では、分岐命令が発生した場合、その分岐先アドレスを処理する際に、余分なクロック数を消費してしまう問題があった。
以下具体的に説明する。
【０００６】
たとえば、命令メモリのＮ番地に分岐命令、Ｎ＋１番地に分岐先アドレスが格納されているような２ワード命令の場合、あるクロックで、Ｎ＋１番地の分岐先アドレスを命令レジスタが読み込んだ時、プログラムカウンタの出力はＮ＋１からＮ＋２となる。そのため、次のクロックでプログラムカウンタが命令レジスタから読み出された分岐先アドレスに更新されると同時に、命令レジスタには、Ｎ＋２番地の命令が読み込まれる。Ｎ＋２番地の命令は、分岐先アドレスの次番地の命令なので、無処理命令（ノーオペレーション：ＮＯＰ）として処理され、無駄なクロックが増えることとなる。
【０００７】
上記の点を鑑みて、本発明は、処理クロック数を削減可能なプロセッサ及びその制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、以下のようなプロセッサが提供される。
このプロセッサは、命令を格納する命令メモリと、実行する前記命令のアドレスを出力するプログラムカウンタと、前記命令メモリから読み出された前記命令を保持する命令レジスタと、前記プログラムカウンタと前記命令メモリとの間の信号経路に設けられ、２ワードの分岐命令の発生時に、前記命令レジスタから分岐先アドレスを取得し、前記分岐先アドレスを前記命令メモリに対する読み出しアドレスとして出力するセレクタと、を有する。
【０００９】
また、上記目的を達成するために、以下のようなプロセッサの制御方法が提供される。
このプロセッサの制御方法は、命令判定部が、命令メモリから命令レジスタに読み込まれた命令を判定し、前記命令判定部により前記命令が２ワードの分岐命令であると判定された場合、プログラムカウンタと、前記命令メモリとの間の信号経路に設けられたセレクタが前記命令レジスタから分岐先アドレスを取得し、前記分岐先アドレスを前記命令メモリに対する読み出しアドレスとして出力する。
【発明の効果】
【００１０】
開示のプロセッサ及びその制御方法によれば、プロセッサの処理クロック数を削減することができる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係るプロセッサの主要部の一例の構成を示す図である。
【図２】アドレスと読み出される命令との関係の一例を示す図である。
【図３】２ワード命令の読み出し時における、アドレス及び命令の読み出し状況を示す図である。
【図４】２ワード絶対分岐命令の読み出し時における、アドレス及び命令の読み出し状況を示す図である。
【図５】サブルーチン復帰命令の読み出し時における、アドレス及び命令の読み出し状況を示す図である。
【図６】第２の実施の形態に係るプロセッサの主要部の一例の構成を示す図である。
【図７】相対条件分岐命令の命令コードの一例を示す図である。
【図８】相対条件分岐命令の読み出し時における条件成立時の、アドレス及び命令の読み出し状況を示す図である。
【図９】条件不成立時のアドレス及び命令の読み出し状況を示す図である。
【図１０】Ｎ＋１番地が２ワード命令の場合の相対条件不成立時のアドレス及び命令の読み出し状況を示す図である。
【図１１】ＤＳＰの概略の構成図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態を、図面を参照しつつ説明する。
（第１の実施の形態）
図１は、第１の実施の形態に係るプロセッサの主要部の一例の構成を示す図である。
【００１３】
プロセッサ１０は、プログラムカウンタ更新部１１、プログラムカウンタ１２、プログラムカウンタ更新部１３、＋１加算器１４、命令メモリ１５，１６、命令セレクタ１７，１８、命令レジスタ１９，２０、命令判定部２１、命令デコーダ２２を有している。
【００１４】
プログラムカウンタ更新部１１は、プログラムカウンタ１２が出力する命令メモリ１５，１６のアドレスを更新させる。具体的には、クロックごとに、プログラムカウンタ更新部１３から出力されるアドレスに＋１したものを、プログラムカウンタ１２に出力させる。
【００１５】
なお、プログラムカウンタ更新部１１は、リピート命令の実行時には同じアドレス、ループ命令の実行時にはループ開始アドレスまたはループ終了アドレスなどをプログラムカウンタ１２に出力させるが、これらの命令については本実施の形態では説明を省略する。
【００１６】
プログラムカウンタ１２は、プログラムカウンタ更新部１１の指定に応じて、命令メモリ１５，１６に格納されている命令のうち、実行する命令のアドレスを出力する。
プログラムカウンタ更新部１３は、プログラムカウンタ１２から出力されるアドレスを更新する機能をもつ。プログラムカウンタ更新部１３は、プログラムカウンタ１２と命令メモリ１５，１６との間の信号経路に接続されたセレクタ１３ａと、＋１加算器１３ｂと、戻り番地保持部１３ｃを有している。
【００１７】
セレクタ１３ａは、命令判定部２１で判定された命令に応じて、命令メモリ１５，１６に対する読み出しアドレスを選択する。選択するアドレスには、たとえば、図１に示しているように、プログラムカウンタ１２から出力されるアドレス、そのアドレスを＋１したもの、戻り番地保持部１３ｃに保持されたアドレスまたは分岐命令発生時の分岐先アドレスがある。
【００１８】
＋１加算器１３ｂは、プログラムカウンタ１２から出力されるアドレスを＋１する。
戻り番地保持部１３ｃは、プログラムカウンタ１２から出力されるアドレスを＋１したものを、サブルーチンからの復帰時に用いる戻り番地として保持する。
【００１９】
プログラムカウンタ更新部１３の出力は、プログラムカウンタ更新部１１にフィードバックされる。
＋１加算器１４は、プログラムカウンタ更新部１３から出力されるアドレスを＋１して命令メモリ１５に入力する。
【００２０】
本実施の形態のプロセッサ１０において、命令メモリは、命令メモリ１５，１６に分割されており、命令メモリ１５は、偶数アドレスで指定される命令を格納している。命令メモリ１６は、奇数アドレスで指定される命令を格納している。
【００２１】
命令セレクタ１７は、命令メモリ１５，１６からの命令のうち、小さい番地の命令を選択して出力する。具体的には、命令セレクタ１７は、＋１加算器１４から出力されるアドレスの最下位ビットが０の場合、命令メモリ１６から出力される命令を命令レジスタ１９に対して供給する。また、最下位ビットが１の場合、命令セレクタ１７は、命令メモリ１５から出力される命令を命令レジスタ１９に対して供給する。
【００２２】
命令セレクタ１８は、命令メモリ１５，１６からの命令のうち、大きい番地の命令を選択して出力する。具体的には、命令セレクタ１８は、プログラムカウンタ更新部１３から出力されるアドレスの最下位ビットが１の場合、命令メモリ１５から出力される命令を命令レジスタ２０に対して出力する。また、最下位ビットが０の場合、命令セレクタ１８は、命令メモリ１６の命令を命令レジスタ２０に対して出力する。
【００２３】
命令レジスタ１９は、命令セレクタ１７から出力された命令を読み込み、保持する。
命令レジスタ２０は、命令セレクタ１８から出力された命令を読み込み、保持する。
命令判定部２１は、命令レジスタ１９または命令レジスタ２０に保持された命令を判定する。具体的には、命令判定部２１は、命令レジスタ１９，２０に保持された命令のコードを判別して、その命令が、１ワード命令なのか、２ワード命令なのか、２ワード分岐命令なのか、サブルーチンからの復帰命令なのかなどを判定する。そして、命令判定部２１は判定結果に応じて、セレクタ１３ａに対して、どのアドレスを選択するかを指定する選択制御信号を送出する。
【００２４】
命令デコーダ２２は、命令レジスタ１９，２０などから出力される命令をデコードする。
なお、プログラムカウンタ１２や命令レジスタ１９，２０などにはクロックが入力されるが、図示を省略している。
【００２５】
次に、上記のプロセッサ１０の動作を説明する。
［命令データの並列読み込み動作］
ある時点において、命令レジスタ１９に保持された命令が、たとえば、通常の１ワード命令である場合、セレクタ１３ａは、命令判定部２１からの選択制御信号に応じて、プログラムカウンタ１２から入力されるアドレスをそのまま出力する。
【００２６】
セレクタ１３ａから出力されるアドレスは、＋１加算器１４で＋１加算され、最下位ビットは命令セレクタ１７へ選択制御信号として入力され、最下位ビットを除く上位ビットは読み出しアドレスとして命令メモリ１５に入力される。また、プログラムカウンタ１２から出力されるアドレスの最下位ビットは、命令セレクタ１８へ選択制御信号として入力され、最下位ビットを除く上位ビットは読み出しアドレスとして命令メモリ１６に入力される。
【００２７】
図２は、アドレスと読み出される命令との関係の一例を示す図である。図２（Ａ）は偶数側の命令メモリ１５、図２（Ｂ）は奇数側の命令メモリ１６に関して示した図である。
なお、図２（Ａ）においてのアドレスは、＋１加算器１４で加算された後のアドレスを示し、図２（Ｂ）においてのアドレスは、セレクタ１３ａから出力されたアドレスを示している。
【００２８】
命令メモリ１５，１６へは図２（Ａ）、図２（Ｂ）に示すようなアドレスのうち、最下位ビットを除く上位ビットが入力されるので、上位ビットが同じアドレス（たとえば、２と３または４と５など）の場合には、同じ番地の命令が出力される。
【００２９】
そして、命令セレクタ１７，１８により、命令メモリ１５，１６から出力される命令のうち、小さい方の番地の命令が命令レジスタ１９に、大きい方の番地の命令が命令レジスタ２０に保持される。
【００３０】
たとえば、あるクロックでセレクタ１３ａの出力アドレスが２になると、図２（Ｂ）に示すように、奇数側の命令メモリ１６からは３番地の命令が出力される。一方、このとき＋１加算器１４から出力されるアドレスは３となるので、図２（Ａ）に示すように偶数側の命令メモリ１５からは２番地の命令が出力される。このような場合、命令セレクタ１７，１８により、命令メモリ１５からの２番地の命令が命令レジスタ１９に保持され、命令メモリ１６からの３番地の命令が命令レジスタ２０に保持される。
【００３１】
たとえば、次のクロックでセレクタ１３ａの出力アドレスが３になると、図２（Ｂ）に示すように、奇数側の命令メモリ１６からは前クロックと同様に３番地の命令が出力される。一方、＋１加算器１４から出力されるアドレスは４となるので、図２（Ａ）に示すように偶数側の命令メモリ１５からは４番地の命令が出力される。このような場合、命令セレクタ１７，１８により、命令メモリ１５からの４番地の命令が命令レジスタ２０に保持され、命令メモリ１６からの３番地の命令が命令レジスタ１９に保持される。
【００３２】
［１ワード命令動作］
命令レジスタ１９に保持された命令が通常の１ワード命令の場合には、クロックごとに命令レジスタ１９に保持される命令が更新されていき、１アドレスごとに、命令が命令デコーダ２２により処理され実行される。
【００３３】
［通常の２ワード命令動作］
命令メモリ１５，１６から１ワード目が命令、２ワード目がその命令に関係する固定値データという２ワード命令が読み出された場合の動作について説明する。
【００３４】
図３は、２ワード命令の読み出し時における、アドレス及び命令の読み出し状況を示す図である。
ここでは、あるクロックタイミング（たとえば、クロックの立ち上がりまたは立ち下がりタイミング）ｔ１において、プログラムカウンタ１２から出力されるアドレスをＮとしている。このとき、命令レジスタ１９には命令メモリ１５，１６の何れかから読み出されたＮ−１番地の命令が保持され、命令レジスタ２０にはＮ番地の命令が保持されている。
【００３５】
命令判定部２１により、命令レジスタ１９に保持されているＮ−１番地の命令が通常の１ワード命令と判定された場合、セレクタ１３ａは、プログラムカウンタ１２からの出力アドレスであるＮをそのまま出力する。
【００３６】
クロックタイミングｔ２において、プログラムカウンタ１２の出力アドレスは、プログラムカウンタ更新部１１によりＮ＋１に更新される。また、命令レジスタ１９には、セレクタ１３ａからの出力アドレスで指定されたＮ番地の命令（２ワード命令）が命令メモリ１５，１６の何れかから読み込まれ、命令レジスタ２０にはＮ＋１番地の命令（２ワード命令の固定値）が読み込まれる。
【００３７】
命令判定部２１は、命令レジスタ１９に読み込まれたＮ番地の命令が２ワード命令であることを判定すると、セレクタ１３ａに対して＋１加算器１３ｂから出力されるアドレスを選択させるための選択制御信号を送出する。これにより、セレクタ１３ａの出力アドレスはＮ＋２となる。
【００３８】
クロックタイミングｔ３において、プログラムカウンタ１２の出力アドレスは、プログラムカウンタ更新部１１によりＮ＋３に更新される。また、命令レジスタ１９には、セレクタ１３ａからの出力アドレスで指定されたＮ＋２番地の命令が命令メモリ１５，１６の何れかから読み込まれ、命令レジスタ２０にはＮ＋３番地の命令が読み込まれる。Ｎ＋２番地命令が通常の１ワード命令の場合、図３に示すように、セレクタ１３ａからは、プログラムカウンタ１２からの出力アドレスであるＮ＋３がそのまま出力される。
【００３９】
以上のような動作により、２ワード命令の並列読み出しが行われる。
［２ワード絶対分岐命令動作］
命令メモリ１５，１６から１ワード目が２ワード絶対分岐命令、２ワード目が分岐先アドレスという２ワード命令が読み出された場合の動作について説明する。
【００４０】
図４は、２ワード絶対分岐命令の読み出し時における、アドレス及び命令の読み出し状況を示す図である。
ここでは、クロックタイミングｔ５において、プログラムカウンタ１２から出力されるアドレスをＭとしている。また、このとき、命令レジスタ１９には命令メモリ１５，１６の何れかから読み出されたＭ−１番地の命令が保持され、命令レジスタ２０にはＭ番地の命令が保持されている。
【００４１】
クロックタイミングｔ５において命令レジスタ１９に保持されたＭ−１番地の命令が通常の１ワード命令と判定された場合、前述のように、セレクタ１３ａからは、プログラムカウンタ１２からのアドレスであるＭがそのまま出力される。
【００４２】
クロックタイミングｔ６において、プログラムカウンタ１２の出力アドレスは、プログラムカウンタ更新部１１によりＭ＋１に更新される。また、命令レジスタ１９には、セレクタ１３ａからの出力アドレスで指定されたＭ番地の命令が命令メモリ１５，１６の何れかから読み込まれ、命令レジスタ２０にはＭ＋１番地の命令が読み込まれる。
【００４３】
命令判定部２１は、命令レジスタ１９に読み込まれたＭ番地の命令が２ワード絶対分岐命令と判定すると、セレクタ１３ａに対して命令レジスタ２０から入力されるＭ＋１番地の命令（分岐先アドレス）を選択して出力させるための選択制御信号を送出する。これにより、セレクタ１３ａは、２ワード命令の分岐先アドレス＝Ｊを出力する。
【００４４】
クロックタイミングｔ７において、プログラムカウンタ１２の出力アドレスは、プログラムカウンタ更新部１１によりＪ＋１に更新される。このとき、前のクロックタイミングｔ６におけるプログラムカウンタ１２の出力であるＭ＋１に、＋１加算器１３ｂで＋１加算したＭ＋２が、サブルーチンの戻り番地として戻り番地保持部１３ｃに保持される。また、命令レジスタ１９には、セレクタ１３ａからの出力アドレスで指定されたＪ番地の命令が命令メモリ１５，１６の何れかから読み込まれ、命令レジスタ２０にはＪ＋１番地の命令が読み込まれる。また、このとき、命令レジスタ１９に読み込まれたＪ番地の命令が１ワード命令の場合、セレクタ１３ａの出力は、Ｊ＋１となる。
【００４５】
以上のような動作により、本実施の形態のプロセッサ１０は、２ワード絶対分岐命令の後のアドレスの命令でクロックを無駄に消費することなく、分岐命令を１クロックで処理でき、次のクロックでは分岐先アドレスの命令を処理することができる。これにより、プロセッサ１０の処理クロック数を削減できる。
【００４６】
［サブルーチン復帰命令動作］
命令メモリ１５，１６の何れかから、命令レジスタ２０にサブルーチン復帰命令が読み込まれた場合の動作について説明する。
【００４７】
図５は、サブルーチン復帰命令の読み出し時における、アドレス及び命令の読み出し状況を示す図である。
ここでは、クロックタイミングｔ１０において、プログラムカウンタ１２から出力されるアドレスをＲとしている。このとき、命令レジスタ１９には命令メモリ１５，１６の何れかから読み出されたＲ−１番地の命令が保持され、命令レジスタ２０にはＲ番地の命令が保持されている。
【００４８】
命令判定部２１は命令レジスタ２０の命令が、図５のようにサブルーチン復帰命令であると判定した場合、セレクタ１３ａに対して、戻り番地保持部１３ｃに保持されていた戻り番地Ｍ＋２を出力させるための選択制御信号を送出する。これにより、セレクタ１３ａは、戻り番地保持部１３ｃに保持されていた戻り番地Ｍ＋２を出力する。
【００４９】
クロックタイミングｔ１１において、プログラムカウンタ１２の出力アドレスは、プログラムカウンタ更新部１１によりＭ＋３に更新される。また、命令レジスタ１９には、セレクタ１３ａからの出力アドレスで指定されたＭ＋２番地の命令が命令メモリ１５，１６の何れかから読み込まれ、命令レジスタ２０にはＭ＋３番地の命令が読み込まれる。また、このとき、命令レジスタ１９に読み込まれたＭ＋２番地の命令が１ワード命令の場合、セレクタ１３ａの出力は、Ｍ＋３となる。
【００５０】
このように、命令レジスタ１９，２０が１クロックで並列に命令を読み込み、命令判定部２１が命令レジスタ２０に読み込まれた命令がサブルーチン復帰命令か否かを判定することで、命令レジスタ１９は次のクロックで復帰先の命令を読み込むことができる。
【００５１】
すなわち、本実施の形態のプロセッサ１０では、サブルーチン復帰命令を実質的に０クロックで処理でき、処理クロック数を削減することができる。
（第２の実施の形態）
図６は、第２の実施の形態に係るプロセッサの主要部の一例の構成を示す図である。
【００５２】
図１で示した第１の実施の形態のプロセッサ１０と同様の構成要素については同一符号を付し、説明を省略する。
図６で示す第２の実施の形態のプロセッサ１０ａでは、相対条件分岐命令が発生したときの動作を行う構成を示している。
【００５３】
プログラムカウンタ更新部１３は、戻り番地保持部１３ｄ、加算器１３ｅを有している。戻り番地保持部１３ｄは、分岐条件が不成立時の戻り番地を保持する。加算器１３ｅは、プログラムカウンタ１２の出力と、命令レジスタ１９に読み込まれた相対条件分岐命令に含まれる相対分岐アドレスとを加算する。
【００５４】
また、プロセッサ１０ａは、命令セレクタ２３、命令レジスタ２４，２５を有している。
命令セレクタ２３は、命令レジスタ２４に相対条件分岐命令が保持されている場合に、図示しない演算部から、演算結果に応じて出力される分岐条件判定信号を受けて、命令レジスタ１９の出力か、命令レジスタ２５の出力の何れかを選択して出力する。また、命令セレクタ２３は、命令レジスタ２４に相対条件分岐命令が保持されていない場合は、命令レジスタ１９の出力を選択して出力する。
【００５５】
命令レジスタ２４は、命令セレクタ２３の出力をクロックに同期して読み込み、命令デコーダ２２に供給する。
命令レジスタ２５は、あるクロックタイミングで命令レジスタ２０に読み込まれた命令を、次のクロックタイミングで読み込み、命令デコーダ２２及び命令セレクタ２３に供給する。
【００５６】
命令レジスタ２４と命令レジスタ２５は、同じクロックタイミングで命令を読み込み、命令デコーダ２２に並列出力する。
なお、プログラムカウンタ更新部１３において、前述したサブルーチンの戻り番地を保持する戻り番地保持部１３ｃや、命令レジスタ２０からセレクタ１３ａに接続される２ワード絶対分岐命令の分岐先アドレスの経路などについては、図示を省略している。
【００５７】
次に、上記のプロセッサ１０ａにおける相対条件分岐命令の処理動作について説明する。
図７は、相対条件分岐命令の命令コードの一例を示す図である。
【００５８】
ここでは、１６ビットの相対条件分岐命令の命令コードの例を示している。命令コードは、たとえば、４ビットの分岐命令、４ビットの分岐条件、−１２８から＋１２７までの範囲で指定される８ビットの相対分岐アドレスを含んでいる。
【００５９】
図８は、相対条件分岐命令の読み出し時における条件成立時の、アドレス及び命令の読み出し状況を示す図である。
ここでは、あるクロックタイミングｔ２０において、プログラムカウンタ１２から出力されるアドレスをＮ＋１としている。このとき、命令レジスタ１９には命令メモリ１５，１６の何れかから読み出されたＮ番地の命令が保持され、命令レジスタ２０にはＮ＋１番地の命令が保持されている。また、命令レジスタ２４にはＮ−１番地の命令、命令レジスタ２５にはＮ番地の命令が保持されている。
【００６０】
命令レジスタ２４に保持されるＮ−１番地の命令は演算命令で、命令レジスタ１９に保持されるＮ番地の命令は相対条件分岐命令の場合、Ｎ番地の相対条件分岐命令は、Ｎ−１番地の演算命令の演算結果を条件判定して、分岐動作を行うものとする。
【００６１】
命令レジスタ１９に保持されるＮ番地の命令が相対条件分岐命令で、相対分岐アドレスとしてＪが含まれている場合、命令判定部２１は、セレクタ１３ａに対して、加算器１３ｅからの出力を選択させる旨の選択制御信号を送出する。これにより、セレクタ１３ａは、プログラムカウンタ１２の出力であるＮ＋１と、相対分岐アドレスであるＪとを加算したＮ＋Ｊ＋１を選択して出力する。また、戻り番地保持部１３ｄは、分岐条件が不成立であった場合の戻り番地として、プログラムカウンタ１２の出力であるＮ＋１に＋１加算器１３ｂで＋１加算されたＮ＋２を保持する。
【００６２】
これと同時に、命令レジスタ２４に保持されるＮ−１番地の演算命令が命令デコーダ２２でデコードされ、ここでは図示しない演算部で演算命令が実行される。
次のクロックタイミングｔ２１では、プログラムカウンタ１２は、セレクタ１３ａより出力されていた出力アドレスＮ＋Ｊ＋１に、プログラムカウンタ更新部１１で＋１加算した、Ｎ＋Ｊ＋２を出力する。このとき命令レジスタ１９には、分岐先の命令であるＮ＋Ｊ＋１番地の命令が読み込まれ、命令レジスタ２０には、Ｎ＋Ｊ＋２番地の命令が読み込まれる。また、このタイミングでは、命令レジスタ２４に相対条件分岐命令が保持されていないので、命令セレクタ２３は命令レジスタ１９の出力を選択する。これにより命令レジスタ２４には、命令レジスタ１９に保持されていたＮ番地の命令がシフトされて読み込まれる。また、命令レジスタ２５には、命令レジスタ２０に保持されていたＮ＋１番地の命令がシフトされて読み込まれる。
【００６３】
命令レジスタ２４にＮ番地の相対条件分岐命令が読み込まれ、命令デコーダ２２でデコードされて、相対条件分岐命令であることを確認すると、クロックタイミングｔ２１で実行したＮ−１番地の演算命令の実行結果が分岐条件として判断される。ここまでは条件不成立時も同じである。
【００６４】
ここで、分岐条件が成立している場合は、命令セレクタ２３は命令レジスタ１９の出力を選択し、命令レジスタ１９に読み込まれたＮ＋Ｊ＋１番地の命令が命令判定部２１で判定される。
【００６５】
命令レジスタ１９に読み込まれたＮ＋Ｊ＋１番地の命令が通常の１ワード命令の場合、命令判定部２１は、セレクタ１３ａに、プログラムカウンタ１２の出力を選択させる旨の選択制御信号を送出する。これにより、セレクタ１３ａは、Ｎ＋Ｊ＋２を出力する。なお、Ｎ＋Ｊ＋１番地の命令が２ワード命令の場合には、図３で示したような読み込み動作が行われる。
【００６６】
次のクロックタイミングｔ２２ａでは、プログラムカウンタ１２は、セレクタ１３ａより出力されていた出力アドレスＮ＋Ｊ＋２に、プログラムカウンタ更新部１１で＋１加算した、Ｎ＋Ｊ＋３を出力する。このとき命令レジスタ１９には、Ｎ＋Ｊ＋２番地の命令が読み込まれ、命令レジスタ２０には、Ｎ＋Ｊ＋３番地の命令が読み込まれる。
【００６７】
このタイミングでは、命令レジスタ２４に相対条件分岐命令が保持されていないので、命令セレクタ２３は、命令レジスタ１９の出力を選択する。これにより命令レジスタ２４には、図８に示すように、命令レジスタ１９に保持されていたＮ＋Ｊ＋１番地の命令がシフトされて読み込まれ、命令デコーダ２２などにより処理され命令が実行される。また、命令レジスタ２５には、命令レジスタ２０に保持されていたＮ＋Ｊ＋２番地の命令がシフトされて読み込まれる。
【００６８】
命令レジスタ１９に読み込まれたＮ＋Ｊ＋２番地の命令が通常の１ワード命令の場合、命令判定部２１は、セレクタ１３ａに、プログラムカウンタ１２の出力を選択させる旨の選択制御信号を送出する。これにより、セレクタ１３ａは、Ｎ＋Ｊ＋３を出力する。Ｎ＋Ｊ＋２番地の命令が２ワード命令の場合には、図３で示したような読み込み動作が行われる。
【００６９】
図９は、条件不成立時のアドレス及び命令の読み出し状況を示す図である。
クロックタイミングｔ２１ｂの、命令レジスタ１９，２０，２４，２５に命令を読み込む動作までは、図８のクロックタイミングｔ２１で示した内容と同じである。
【００７０】
クロックタイミングｔ２１ｂで命令レジスタ２４に読み込まれ実行されたＮ番地の相対条件分岐命令の条件が不成立の場合、命令セレクタ２３には、図示しない演算部より、命令レジスタ２５の出力を選択させる旨の分岐条件判定信号が入力される。また、セレクタ１３ａは、戻り番地保持部１３ｄに保持していたＮ＋２を戻り番地として出力する。
【００７１】
これにより、クロックタイミングｔ２２ｂでは、プログラムカウンタ１２の出力アドレスはＮ＋３となり、命令レジスタ１９にはＮ＋２番地の命令が読み込まれ、命令レジスタ２０にはＮ＋３番地の命令が読み込まれる。また、命令セレクタ２３が命令レジスタ２５の出力信号を選択するので、命令レジスタ２４には、クロックタイミングｔ２１ｂで命令レジスタ２５に保持されていたＮ＋１番地の命令が読み込まれる。そして、Ｎ＋１番地の命令が命令デコーダ２２などにより処理され実行される。なお、命令レジスタ２５には、クロックタイミングｔ２１ｂにおける命令レジスタ２０の内容であるＮ＋Ｊ＋２番地の命令が読み込まれるが、無処理命令とする。また、セレクタ１３ａは、プログラムカウンタ１２の出力アドレスであるＮ＋３をそのまま出力する。
【００７２】
以上のように、図６に示したようなプロセッサ１０ａの構成によれば、相対条件分岐命令動作が行われる際に、分岐条件が成立した場合でも不成立の場合でも、図８、図９に示したように１クロックで命令を実行することができる。
【００７３】
なお、条件不成立の際、Ｎ番地の相対条件分岐命令の次の番地の命令が２ワード命令の場合にも並列に実行できるようにしてもよい。
この場合の、各部の信号の様子を以下に示す。
【００７４】
図１０は、Ｎ＋１番地が２ワード命令の場合の相対条件不成立時のアドレス及び命令の読み出し状況を示す図である。
クロックタイミングｔ２０ｃにおいて、命令判定部２１は、Ｎ番地の相対条件分岐命令の次の番地の命令が２ワード命令であることを、命令レジスタ２０から検出すると、戻り番地保持部１３ｄに、プログラムカウンタ１２の出力アドレスであるＮ＋１を保持させる。実際には、たとえば、セレクタを設け、セレクタが命令判定部２１の選択制御信号に応じて、１ワード命令の場合と２ワード命令の場合とで、プログラムカウンタ１２の出力アドレスを＋１加算器１３ｂを介して戻り番地保持部１３ｄに入力するか否かを選択する。
【００７５】
そして、クロックタイミングｔ２１ｃにおいて、相対条件分岐命令の条件不成立と判定された場合、セレクタ１３ａは、戻り番地保持部１３ｄに保持されていたＮ＋１を出力する。
【００７６】
これにより、クロックタイミングｔ２２ｃでは、プログラムカウンタ１２の出力アドレスはＮ＋２となり、命令レジスタ１９にはＮ＋１番地の命令、命令レジスタ２０にはＮ＋２番地の命令が読み込まれる。
【００７７】
また、このとき命令レジスタ２４には、図９で示したように、Ｎ＋１番地の命令が読み込まれ、命令レジスタ２５にはＮ＋Ｊ＋２番地の命令が読み込まれるが、たとえば、命令判定部２１または図示しない演算部の制御のもと、何れも無処理命令とする。
【００７８】
Ｎ＋１番地の命令は２ワード命令であるので、命令判定部２１は、セレクタ１３ａに対して、＋１加算器１３ｂの出力を選択させる。これにより、セレクタ１３ａの出力アドレスは、プログラムカウンタ１２の出力アドレスに＋１加算されたＮ＋３となる。
【００７９】
クロックタイミングｔ２３ｃでは、セレクタ１３ａの出力がプログラムカウンタ更新部１１で＋１加算され、プログラムカウンタ１２は、出力アドレスとしてＮ＋４を出力する。また、命令レジスタ１９には、Ｎ＋３番地の命令、命令レジスタ２０には、Ｎ＋４番地の命令が読み込まれる。そして、命令レジスタ２４にはＮ＋１番地の２ワード命令、命令レジスタ２５にはＮ＋２番地の命令（たとえば、２ワード命令の固定値）が並列に読み込まれ、命令デコーダ２２などで同時に処理される。セレクタ１３ａの出力アドレスは、命令レジスタ１９に読み込まれたＮ＋３番地の命令が１ワード命令の場合、Ｎ＋４となる。
【００８０】
このように、相対分岐命令の次の番地の命令が２ワード命令の場合でも、上記の処理により、並列に命令デコーダ２２に読み込み、実行することができる。
以下に、図１、図６で示したような構成を有するＤＳＰの一例を示す。
【００８１】
図１１は、ＤＳＰの概略の構成図である。
ＤＳＰ３０は、クロック生成部３１、コントロール部３２、アドレス生成部３３、演算部３４、バスインタフェース部３５、命令メモリ３６，３７、データメモリ３８、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）周辺回路３９を有している。
【００８２】
クロック生成部３１は、コントロール部３２、アドレス生成部３３、演算部３４が動作するために必要なクロックの生成を行う。
コントロール部３２は、ＤＳＰ３０の各部を制御する機能を有する。コントロール部３２は、たとえば、図１や図６で示した命令メモリ１５，１６を除いた各構成要素が含まれる。
【００８３】
アドレス生成部３３は、データメモリ３８などへのアクセスに必要なアドレスを生成する。
演算部３４は、実行される命令に応じた各種の演算を行う。
【００８４】
バスインタフェース部３５は、ＤＳＰ３０のコントロール部３２、アドレス生成部３３、演算部３４などのコア部分と、命令メモリ３６，３７、データメモリ３８、Ｉ／Ｏ周辺回路３９などとの間のインタフェースである。
【００８５】
命令メモリ３６，３７は、図１、図６の命令メモリ１５，１６に対応しており、一方が偶数アドレスで指定される命令を格納し、他方が奇数アドレスで指定される命令を格納している。
【００８６】
データメモリ３８は、命令を実行するために必要な各種データなどを格納している。
Ｉ／Ｏ周辺回路３９は、ＤＳＰ３０の外部との間で、信号の入出力を行うインタフェースである。
【００８７】
このようなＤＳＰ３０に、図１や図６で示した構成を適用することで、２ワード絶対分岐命令や相対条件分岐命令などが発生した場合に、少ないクロック数で命令の処理が可能となる。これにより、消費電力を抑えることが可能になる。
【００８８】
以上、実施の形態に基づき、本発明のプロセッサまたはその制御方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【００８９】
１０  プロセッサ
１１，１３  プログラムカウンタ更新部
１２  プログラムカウンタ
１３ａ  セレクタ
１３ｂ，１４  ＋１加算器
１３ｃ  戻り番地保持部
１５，１６  命令メモリ
１７，１８  命令セレクタ
１９，２０  命令レジスタ
２１  命令判定部
２２  命令デコーダ
【図１】
2011186710.tif 000003
【図２】
2011186710.tif 000004
【図３】
2011186710.tif 000005
【図４】
2011186710.tif 000006
【図５】
2011186710.tif 000007
【図６】
2011186710.tif 000008
【図７】
2011186710.tif 000009
【図８】
2011186710.tif 000010
【図９】
2011186710.tif 000011
【図１０】
2011186710.tif 000012
【図１１】
2011186710.tif 000013