(57)【要約】【課題】低消費電力で、なおかつ高い処理能力を備えたマイクロプロセッサを提供する。【解決手段】パイプラインの段数と同数以上のプログラムカウンタ（ＰＣ）を設け、そのパイプラインに、まずはＰＣ１のアドレス０の命令を取り込み、次にＰＣ２のアドレス０の命令を取り込み、以下同様にＰＣ６のアドレス０の命令を取り込んだ後、ＰＣ１に戻ってアドレス１の命令を取り込むなどといった処理を行う。これらの構成と処理によって、パイプラインストールが原理的に発生しない。【選択図】        図２
2004362454.tif 000002
【特許請求の範囲】
【請求項１】
パイプラインの段数と同数以上のプログラムカウンタを有し、
１クロック毎に前記プログラムカウンタを順番に切り替えながら、前記プログラムカウンタが示す命令をパイプライン処理で実行することを特徴とするマイクロプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロプロセッサに関し、特に、低消費電力を必要とするマイクロプロセッサに適用して有効な技術に関する。
【０００２】
【従来の技術】
本発明者が検討したところによれば、マイクロプロセッサの技術に関しては、以下のような技術が考えられる。
【０００３】
現在、パイプライン機能を搭載したマイクロプロセッサが多く実在している。これらのマイクロプロセッサは、通常１本のプログラムカウンタを備え、パイプライン処理を実行している。また、パイプラインストールが発生した場合の穴埋めとして、更にもう１本のプログラムカウンタやそれに伴う演算回路などを備えたものも存在する。
【０００４】
【発明が解決しようとする課題】
ところで、前記のようなマイクロプロセッサの技術について、本発明者が検討した結果、以下のようなことが明らかとなった。
【０００５】
現在、パソコンや携帯電話などのように、様々な機器においてマイクロプロセッサが用いられている。例えば、携帯電話のマイクロプロセッサは、本来の電話機能の処理以外に、ブラウザ機能や動画／静止画の記録および再生などの付加機能の処理も行わなくてはならない。
【０００６】
したがって、パソコンなどでは勿論のこと、携帯電話などにおいても、マイクロプロセッサに対して、高い処理能力が要求されてきている。そして、とりわけ携帯機器においては、低消費電力も兼ね備えなければならない。
【０００７】
しかしながら、従来技術のようなマイクロプロセッサでは、高クロックで動作させるためにパイプラインを深くすると、分岐時のペナルティにより性能が低下してしまう。また、前の命令の結果を次の命令で使用するなどの命令の依存関係があると、次の命令の実行が待たされてしまい、これによっても性能が低下する。
【０００８】
これらのようにパイプライン処理が乱れることを、パイプラインストールやパイプラインハザードなどと呼ぶ。現状では、このパイプラインストールを低減するため、分岐予測回路などによる分岐予測および投機実行や、命令順序を入れ替える回路などによる命令の依存関係を取り除く処理などを行っている。ところが、近年、これらの回路規模が格段に大きくなる傾向にあり、回路面積や消費電力の増加が無視できないものとなってきている。
【０００９】
そこで、本発明の目的は、低消費電力のマイクロプロセッサを提供することにある。
【００１０】
本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【００１１】
【課題を解決するための手段】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１２】
本発明によるマイクロプロセッサは、パイプラインの段数と同数以上のプログラムカウンタを有し、１クロック毎に前記プログラムカウンタを順番に切り替えながら、前記プログラムカウンタが示す命令をパイプライン処理で実行するものである。この構成により、パイプラインストールを原理的に防止することができる。
【００１３】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部材には同一の符号を付し、その繰り返しの説明は省略する。
【００１４】
本発明の実施の形態では、本発明の一実施の形態のマイクロプロセッサの特徴を判り易くするために、本発明の前提となる従来のマイクロプロセッサと比較しながら説明する。
【００１５】
図１は、本発明の前提となる従来のマイクロプロセッサにおける、パイプラインの処理方法の一例を示す概略図である。
【００１６】
従来のマイクロプロセッサは、１本のプログラムカウンタ（ＰＣ）を持ち、１プロセス内でパイプラインを形成している。図１の例では、６段のパイプラインを有し、ＰＣが示すアドレス０〜４に存在する５つの命令を、パイプラインで処理している。通常、この５つの命令は、１プロセス内の命令に該当し、いわば一つのタスクに含まれる命令となる。
【００１７】
パイプラインの各段は、例えば、ＩＦ（命令フェッチ）段と、ＩＤ（命令デコード）段と、ＥＸ（命令実行）段と、ＭＡ（メモリアクセス）段と、２つのｍｍ（演算処理）段などから構成される。
【００１８】
図１は、理想的なパイプライン処理を示しているが、実際には、命令の種類や依存関係などによって、パイプラインストールが発生する。その具体例に関しては図４などで後述するが、本質的に、パイプラインストールは、前の命令の処理が終わる前に次の命令の処理に着手することから発生する。
【００１９】
図２は、本発明の一実施の形態のマイクロプロセッサにおける、パイプラインの処理方法の一例を示す概略図である。
【００２０】
本発明の一実施の形態のマイクロプロセッサは、パイプラインの段数と同数以上のプログラムカウンタを有し、１クロック毎に前記プログラムカウンタを順番に切り替えながら、前記プログラムカウンタが示す命令をパイプライン処理で実行するものである。
【００２１】
すなわち、図２においては、パイプライン段数とＰＣの本数を同数とし、前記図１と同様に６段のパイプラインと、６本のＰＣ（ＰＣ１〜６）を有し、そして各ＰＣ毎に異なるプロセスが割り当てられるものとする。このような構成において、クロック毎の処理手順は、例えば、下記のようになる。なお、下記の説明において、クロック毎に時間ｔの値が＋１増加するものとする。
【００２２】
ｔ＝１で、ＰＣ１が示すアドレス０の命令をフェッチする。
【００２３】
ｔ＝２で、ＰＣ１が示すアドレス０の命令をデコードし、同時に、ＰＣ２が示すアドレス０の命令をフェッチする。
【００２４】
ｔ＝３で、ＰＣ１が示すアドレス０の命令の実行とＰＣ２が示すアドレス０の命令のデコードを行い、同時に、ＰＣ３が示すアドレス０の命令をフェッチする。
【００２５】
以下同様にして、ｔ＝６で、ＰＣ１とＰＣ２の演算処理と、ＰＣ３のメモリアクセスと、ＰＣ４の命令実行と、ＰＣ５の命令デコードと、ＰＣ６が示すアドレス０の命令フェッチが行われる。
【００２６】
そして、ｔ＝７で、ＰＣ２〜ＰＣ６が示すアドレス０に対する処理と共に、ＰＣ１が示す次の命令、すなわちアドレス１の命令がフェッチされる。以降、ｔ＝８〜１２において、順次ＰＣ２〜６が示すアドレス１の命令フェッチが行われる。
【００２７】
なお、前記アドレス０と１は、物理アドレスではなく、各ＰＣ毎の論理アドレスを示すものである。
【００２８】
ここで、ＰＣ１に着目すると、図２の下部に示すように、アドレス０の命令の処理が完了した後にアドレス１の命令の処理が行われている。他のＰＣに関しても同様で、同一ＰＣ内の命令は、必ず、前の命令の処理が完了してから次の命令が実行されることになる。
【００２９】
つまり、同一ＰＣ内では、従来のように前の命令の処理が終わる前に次の命令の処理に着手するようなことがないため、パイプラインストールが原理的に発生しなくなる。そして、同一ＰＣ内を同一プロセスとし、各ＰＣ毎に異なるプロセスを割り当てると、パイプラインストールを発生させることなく、複数のプロセスの処理（マルチタスク処理）が可能となる。
【００３０】
このように、パイプラインストールが原理的に発生しなくなると、さらに、下記（１）〜（４）のような効果が得られる。
【００３１】
（１）分岐予測などの機能が不要となり、トランジスタ数の削減と消費電力の低減が図れる。
【００３２】
（２）パイプライン段数を非常に深くすることができ、高クロック化が図れる。
【００３３】
（３）ＭＰＥＧ（ｍｏｖｉｎｇ  ｐｉｃｔｕｒｅｓ  ｅｘｐｅｒｔ  ｇｒｏｕｐ）などのように、各処理ブロックが並列して動作するシステムで、とりわけ演算器の使用効率を上げることができる。
【００３４】
つまり、各ＰＣ毎に異なる処理ブロックを割り当てることで並列処理が可能となる。さらに、ＭＰＥＧなどの画像処理においては、一般的に、可変長符号化／復号化などの処理で分岐命令が多く用いられるが、従来のように分岐予測ミスなどが発生することもない。
【００３５】
（４）コンパイラなどで、パイプライン処理に関する命令の最適化処理などが行われる場合があるが、こういった処理を簡素化できる。
【００３６】
図３は、本発明の一実施の形態のマイクロプロセッサにおいて、その構成の一例を示す概略図である。
【００３７】
図３のマイクロプロセッサは、例えば、６本のプログラムカウンタ（ＰＣ１〜６）と、６段のパイプラインステージなどを有している。
【００３８】
この６段のパイプラインステージは、例えば、命令フェッチ（ＩＦ）ステージと、命令デコード（ＩＤ）ステージと、命令実行（ＥＸ）ステージと、メモリアクセス（ＭＡ）ステージと、演算処理（ｍｍ）ステージと、レジスタライトバック（ＷＢ）ステージなどから構成される。
【００３９】
各プログラムカウンタには、それぞれ依存関係がないプロセスが割り当てられ、各プロセス毎に命令コードメモリが割り当てられている。そして、１クロック毎に、各プログラムカウンタを順番に切り替えながらパイプライン処理を行う。
【００４０】
ここで、図３に示すマイクロプロセッサの動作について、簡単なプログラム例を挙げ、従来の動作と比較しながら説明する。
【００４１】
まず、図４は、本発明の前提となるマイクロプロセッサにおいて、簡単なプログラム例に対する従来のパイプラインの処理方法の一例を示す図である。図４では、命令▲１▼〜▲８▼により構成されるプログラム例を、従来のパイプラインで処理している。命令▲１▼〜▲８▼の内容を簡単に説明すると下記のようになる。なお、Ｒ０〜Ｒ３は汎用レジスタとする。
【００４２】
Ｒ１が示すメモリアドレス上のデータを、Ｒ０に転送する（命令▲１▼）。Ｒ０のデータに１を加え、結果をＲ０に格納する（命令▲２▼）。Ｒ０のデータを、Ｒ１が示すメモリアドレスに書き込む（命令▲３▼）。Ｒ０のデータとＲ２のデータの大きさを比較する（命令▲４▼）。Ｒ０のデータ＞Ｒ２のデータならば、命令▲８▼に分岐し、そうでなければ命令▲６▼に進む（命令▲５▼）。Ｒ０のデータとＲ２のデータを乗算し、結果を積和レジスタＭＡＣＬに格納する（命令▲６▼）。ＭＡＣＬの値をＲ０に格納する（命令▲７▼）。Ｒ３のデータにＲ０のデータを加え、結果をＲ３に格納する（命令▲８▼）。
【００４３】
このような命令において、従来のパイプライン処理では下記のようなパイプラインストールが発生する。
【００４４】
（１）命令▲２▼において、命令▲１▼の結果を使用するため１クロック（ステージ）分の遅延が発生する。
【００４５】
（２）命令▲３▼において、命令▲２▼の結果を使用するため１クロック（ステージ）分の遅延が発生する。
【００４６】
（３）命令▲６▼，▲７▼において、命令▲５▼による分岐有無を確定する間にパイプライン内でフェッチが行われているが、分岐有りの場合は命令自体が破棄される。
【００４７】
つまり、パイプライン処理において、命令▲２▼，▲３▼では、前命令の結果を次命令が使用するために遅延が発生し、命令▲６▼，▲７▼では、前命令の結果で分岐が発生するために無駄な処理を行うことになる。これらの結果、１１ステージで６命令が実行されている。
【００４８】
一方、図５および図６は、本発明の一実施の形態のマイクロプロセッサにおいて、簡単なプログラム例に対するパイプラインの処理方法の一例を示す図である。前記図４と同じ命令を処理することとし、前記命令▲１▼〜▲４▼の処理を図５で示し、前記命令▲５▼〜▲８▼の処理を図６で示している。
【００４９】
図５では、前記図４における命令▲２▼，▲３▼の遅延箇所において、ＰＣ２とＰＣ３の命令を実行できる。なおかつ、命令▲３▼の遅延によって命令▲４▼のフェッチが遅延した箇所で、ＰＣ４の命令を実行できる。つまり、本来待ちとなるステージを、別プロセスのステージとして使用できる。
【００５０】
図６では、前記図４において、フェッチしたが分岐により破棄された無駄な命令▲６▼，▲７▼を、プリフェッチする必要がない。
【００５１】
このように、図３のマイクロプロセッサは、あるＰＣにおける命令の処理が完了するまで、別のＰＣの命令を処理する仕組みとなる。したがって、前記あるＰＣにおける次の命令の処理に際し、待ち時間が必要となったり、破棄されて無駄な命令となる恐れもない。
【００５２】
この結果、例えば、図５では、１６ステージで１３命令を実行しており、実質的には実行効率を１命令／１クロックまで高めることができる。つまり、高い処理能力を備えることができ、なおかつ前述したように分岐予測回路などによって電力を消費されることのないマイクロプロセッサを実現できる。
【００５３】
また、これらの考え方を用いると、従来の３２ｂｉｔ単位などの演算回路ではなく、１ｂｉｔ単位の演算回路を用いたアーキテクチャを構築することができる。このアーキテクチャを実現する構成の一例を図７および図８に示す。なお、ここでは３２ｂｉｔのアーキテクチャを想定する。
【００５４】
図７は、本発明の一実施の形態のマイクロプロセッサにおいて、１ｂｉｔ単位の加算回路の構成の一例を示す回路図である。
【００５５】
図７の加算回路は、例えば、３２ｂｉｔの入力Ａ、入力Ｂがそれぞれ入力される３２ｂｉｔシフトレジスタ１，２と、入力Ａと入力Ｂの各ｂｉｔを１ｂｉｔずつ加算する１ｂｉｔ加算器３と、この１ｂｉｔ加算器３の出力Ｃを格納する３２ｂｉｔシフトレジスタ４などから構成される。そして、図７には明示していないが、この回路を３６ヶ設け、さらに、それぞれの回路に異なったＰＣを割り当てる。つまり、３６本のＰＣ（ＰＣ１〜３６）を備える。
【００５６】
図８は、本発明の一実施の形態のマイクロプロセッサにおいて、１ｂｉｔ単位の比較回路の構成の一例を示す回路図である。
【００５７】
図８の比較回路は、例えば、３２ｂｉｔの入力Ａ、入力Ｂが各々入力される３２ｂｉｔシフトレジスタ１，２と、入力Ａと入力Ｂの各ｂｉｔを１ｂｉｔずつ比較する１ｂｉｔ比較器（減算器）５などから構成される。そして、図８には明示していないが、この回路を３６ヶ設け、さらに、それぞれの回路に異なったＰＣを割り当てる。つまり、３６本のＰＣ（ＰＣ１〜３６）を備える。
【００５８】
これらのような回路において、前記図２の処理のように、ＰＣを順番に切り替えながらパイプライン処理を行う。すると、例えば、ＰＣ１のアドレス０の命令フェッチが行われた後、アドレス１の命令フェッチが行われるのは３６クロック後となる。したがって、この間に図７の加算回路や図８の比較回路などによって、１ｂｉｔ／１クロック単位で３２ｂｉｔ分の加算および比較を行う。
【００５９】
なお、パイプラインの段数は、ＩＦ、ＩＤ、ＩＥ、ｍｍ×３２の計３５段になるが、パイプラインの段数よりもＰＣの本数（３６本）の方が多いため、原理的にパイプラインストールは発生しない。
【００６０】
このように、ＰＣの本数を、パイプラインの段数以上でなおかつデータｂｉｔ数と等しく構成し、演算器を、従来の３２ｂｉｔ単位から１ｂｉｔ単位に変更することで有益な効果を得ることができる。すなわち、従来において３２ｂｉｔ同時に行っていた演算を、１ｂｉｔずつ複数クロックに分散することになるため、クロックあたりの演算器内ゲート間遅延時間の低減を図ることができ、これによって、パイプラインの高クロック化が可能になる。更に、クロックあたりの演算器内ゲート間遅延時間の許容範囲であれば、素子駆動電圧を下げることができるため、消費電力低減も可能となる。
【００６１】
また、一般的なプログラムにおいて、比較結果による分岐命令などがよく用いられるが、この場合、上位ｂｉｔの比較のみで結果が判明する場合も多い。このような場合に、１ｂｉｔ／１クロックずつの比較を用いると、結果が判明した時点で演算を完了（演算器を停止）することができ、消費電流の低減や演算の効率化を図ることができる。
【００６２】
なお、図７および図８は、ＡＬＵ（ａｒｉｔｈｍｅｔｉｃ  ａｎｄ  ｌｏｇｉｃａｌ  ｕｎｉｔ）などの演算回路の一形態として加算器と比較器を示したもので、勿論、加算器と比較器に限定されるものではない。
【００６３】
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００６４】
例えば、前記図７および図８ではＰＣの本数とデータｂｉｔ数を等しく構成したが、ＰＣの本数は、パイプラインの段数以上である限り、データｂｉｔ数以上の本数にすることも可能である。
【００６５】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、以下のとおりである。
【００６６】
（１）パイプライン段数と同数以上のＰＣを備えることで、パイプラインストールが原理的に発生せず、パイプラインの実行効率を実質的に１命令／１クロックまで高めることができる。
【００６７】
（２）前記（１）により、分岐予測などの機能が不要となり、トランジスタ数の削減と消費電力の低減が図れる。
【００６８】
（３）前記（１）により、パイプライン段数を非常に深くすることができ、高クロック化が図れる。
【００６９】
（４）データｂｉｔ数とＰＣの本数を等しく構成し、演算器を１ｂｉｔ単位に変更することで、消費電流の低減や高クロック化および演算の効率化を図ることができる。
【００７０】
（５）前記（１）〜（４）により、低消費電力で、なおかつ高い処理能力を備えたマイクロプロセッサを実現できる。
【００７１】
【発明の効果】
本願発明を適用することにより低電力のマイクロプロセッサを実現することができる。
【図面の簡単な説明】
【図１】本発明の前提となる従来のマイクロプロセッサにおける、パイプラインの処理方法の一例を示す概略図である。
【図２】本発明の一実施の形態のマイクロプロセッサにおける、パイプラインの処理方法の一例を示す概略図である。
【図３】本発明の一実施の形態のマイクロプロセッサにおいて、その構成の一例を示す概略図である。
【図４】本発明の前提となるマイクロプロセッサにおいて、簡単なプログラム例に対する従来のパイプラインの処理方法の一例を示す図である。
【図５】本発明の一実施の形態のマイクロプロセッサにおいて、簡単なプログラム例に対するパイプラインの処理方法の一例を示す図である。
【図６】本発明の一実施の形態のマイクロプロセッサにおいて、図５に続く簡単なプログラム例に対するパイプラインの処理方法の一例を示す図である。
【図７】本発明の一実施の形態のマイクロプロセッサにおいて、１ｂｉｔ単位の加算回路の構成の一例を示す回路図である。
【図８】本発明の一実施の形態のマイクロプロセッサにおいて、１ｂｉｔ単位の比較回路の構成の一例を示す回路図である。
【符号の説明】
１，２，４  ３２ｂｉｔシフトレジスタ
３  １ｂｉｔ加算器
５  １ｂｉｔ比較器
【図１】
2004362454.tif 000003
【図２】
2004362454.tif 000004
【図３】
2004362454.tif 000005
【図４】
2004362454.tif 000006
【図５】
2004362454.tif 000007
【図６】
2004362454.tif 000008
【図７】
2004362454.tif 000009
【図８】
2004362454.tif 000010