(57)【要約】【課題】本発明は、パイプライン動作するプロセッサにおいて、余計な電力の消費を抑制できるようにする。【解決手段】たとえば、パイプライン処理によって命令を実行するインオーダなパイプラインプロセッサにおいて、処理の対象となる実行命令が、第３のパイプラインステージＳ３での処理を必要とするか否かをスキップコントローラ５１により監視する。当該実行命令が第３のパイプラインステージＳ３での処理を必要としない実行命令の場合、スキップコントローラ５１は、スキップ経路４１を介して、ＡＤＤ／ＳＵＢ演算器１１の出力をパイプラインレジスタ３１ｇに転送することにより、必要としない処理を含む第３のパイプラインステージＳ３をスキップさせる。【選択図】図４
2010198128.tif 000002
【特許請求の範囲】
【請求項１】
複数の実行命令からなる命令列を、各実行命令順にパイプライン処理する複数段のパイプラインステージと、
前記パイプライン処理される各実行命令が、後段のパイプラインステージにおける処理を必要とするか否かを判定するコントローラと、
前記コントローラの判定結果にもとづき、当該実行命令が後段のパイプラインステージにおける処理を必要としない実行命令の場合、その必要としない処理を含むパイプラインステージをスキップさせる転送経路と
を具備したことを特徴とするプロセッサシステム。
【請求項２】
前記複数段のパイプラインステージの相互間には、それぞれ、各段のパイプラインステージでパイプライン処理された、前記各実行命令に対するステージ間情報を保持するパイプラインレジスタが設けられていることを特徴とする請求項１に記載のプロセッサシステム。
【請求項３】
前記コントローラは、当該実行命令が２以上のパイプラインステージにおける処理を必要としない実行命令の場合、その必要としない処理をそれぞれ含む、前記２以上のパイプラインステージを一度にスキップさせることを特徴とする請求項１に記載のプロセッサシステム。
【請求項４】
前記コントローラは、前記命令列中に後段のパイプラインステージにおける処理を必要としない複数の実行命令が存在する場合、最も消費電力が高いパイプラインステージにおける処理を必要としない実行命令を優先的にスキップさせることを特徴とする請求項１に記載のプロセッサシステム。
【請求項５】
各段のパイプラインステージでパイプライン処理されたステージ間情報をそれぞれホールドするホールド回路をさらに具備し、
前記コントローラは、後続の実行命令が先行する実行命令を追い越せない場合、前記後続の実行命令をスキップさせようとするパイプラインステージを前記先行する実行命令が通過するまでの間、前記ホールド回路内に前記後続の実行命令に対するステージ間情報をホールドさせておき、前記先行する実行命令が前記パイプラインステージを通過した後に、前記転送経路を介して、前記パイプラインステージをスキップさせることを特徴とする請求項１に記載のプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パイプライン処理を行うプロセッサシステムに関するもので、たとえば、ステージスキップ機能を備えたパイプラインプロセッサに関する。
【背景技術】
【０００２】
従来、パイプライン処理を行うインオーダなプロセッサシステムにおいては、全てのパイプラインステージを、各実行命令が通過する。つまり、先行する実行命令を後続の実行命令が追い越さない方式のパイプラインプロセッサの場合、各実行命令は、所定の実行命令に対して必要な処理を行うパイプラインステージでないパイプラインステージであっても、それぞれ通過する。このため、所定の実行命令以外の実行命令が通過する際に、そのステージにおける演算器またはメモリおよび各種のハードウェア（ＨＷ）を不要にトグル（動作）させ、余計な電力を消費するという問題があった。
【０００３】
なお、パイプライン動作に関連する技術として、スキップ機能を備えた機器が既に提案されている（たとえば、特許文献１または特許文献２参照）。
【０００４】
しかしながら、上記した従来技術において、たとえば特許文献１は、スキップ命令を用いることにより、条件（分岐）が成立／不成立の場合に応じて、後続の命令を実行するか否かを制御するようにしたものである。
【０００５】
また、たとえば特許文献２は、スキップ機能付き命令を用い、実行ユニットの演算結果をフラグレジスタに格納後、その演算結果をスキップ条件ビットと比較することにより、条件付き命令を必要とせずに、条件付き命令の実行を可能にしたものである。
【０００６】
したがって、いずれの特許文献１，２の場合も、必要な処理を行うための所定の実行命令以外の実行命令が通過するステージでのトグルを低下させ、余計な電力の消費を抑えるためには、特別な命令が必要であった。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平３−２６９７２８号公報
【特許文献２】特開２００８−１５８８１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、特別な命令を必要とせずとも、処理を行わないパイプラインステージでのトグルを低下させることができ、消費電力を抑えることが可能なプロセッサシステムを提供するものである。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために、本発明は、複数の実行命令からなる命令列を、各実行命令順にパイプライン処理する複数段のパイプラインステージと、前記パイプライン処理される各実行命令が、後段のパイプラインステージにおける処理を必要とするか否かを判定するコントローラと、前記コントローラの判定結果にもとづき、当該実行命令が後段のパイプラインステージにおける処理を必要としない実行命令の場合、その必要としない処理を含むパイプラインステージをスキップさせる転送経路とを具備したことを特徴とする。
【発明の効果】
【００１０】
本発明は、特別な命令を必要とせずとも、処理を行わないパイプラインステージでのトグルを低下させることができ、消費電力を抑えることが可能なプロセッサシステムを提供できる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施例１に係るプロセッサシステム（パイプラインプロセッサ）の構成例を示すブロック図である。
【図２】図１に示したパイプラインプロセッサにおける、一段スキップ動作について説明するために示すブロック図である。
【図３】図１に示したパイプラインプロセッサにおける、一段スキップ動作について説明するために示すブロック図である。
【図４】図１に示したパイプラインプロセッサにおける、一段スキップ動作について説明するために示すブロック図である。
【図５】図１に示したパイプラインプロセッサにおける、一段スキップ動作について説明するために示すブロック図である。
【図６】図１に示したパイプラインプロセッサにおける、一段スキップ動作について説明するために示すブロック図である。
【図７】図１に示したパイプラインプロセッサにおける、二段スキップ動作について説明するために示すブロック図である。
【図８】図１に示したパイプラインプロセッサにおける、二段スキップ動作について説明するために示すブロック図である。
【図９】図１に示したパイプラインプロセッサにおける、スキップＡｆｔｅｒホールド動作について説明するために示すブロック図である。
【図１０】図１に示したパイプラインプロセッサにおける、スキップＡｆｔｅｒホールド動作について説明するために示すブロック図である。
【図１１】図１に示したパイプラインプロセッサにおける、スキップＡｆｔｅｒホールド動作について説明するために示すブロック図である。
【図１２】図１に示したパイプラインプロセッサにおける、スキップＡｆｔｅｒホールド動作について説明するために示すブロック図である。
【図１３】本発明の実施例１に係る、パイプラインプロセッサの他の構成例を示すブロック図である。
【図１４】図１に示したパイプラインプロセッサにおける、スキップコントローラの動作について説明するために示すフローチャートである。
【図１５】図１に示したパイプラインプロセッサにおける、スキップコントローラの動作について説明するために示すブロック図である。
【図１６】図１に示したパイプラインプロセッサにおける、スキップコントローラの動作について説明するために示すブロック図である。
【図１７】図１に示したパイプラインプロセッサにおける、スキップコントローラの動作について説明するために示すブロック図である。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。ただし、図面は模式的なものであり、各図面の寸法および比率などは現実のものとは異なることに留意すべきである。また、図面の相互間においても、互いの寸法の関係および／または比率が異なる部分が含まれていることは勿論である。特に、以下に示すいくつかの実施例は、本発明の技術思想を具体化するための装置および方法を例示したものであって、構成部品の形状、構造、配置などによって、本発明の技術思想が特定されるものではない。この発明の技術思想は、その要旨を逸脱しない範囲において、種々の変更を加えることができる。
【実施例１】
【００１３】
［構成］
図１は、本発明の実施例１に係るプロセッサシステムの構成例を示すものである。本実施例１では、パイプライン処理を行うインオーダなプロセッサシステムとして、ステージスキップ機能を備えたパイプラインプロセッサを例に説明する。なお、図１には、パイプラインプロセッサのデコードステージ（ジェネラル・パーパス・レジスタＧＰＲの読み出しステージに該当）からライトバックステージまでのパイプライン構成を示している（命令フェッチ以前のステージ構成については、便宜上、図示を省略している）。
【００１４】
図１に示すように、このパイプラインプロセッサには、第１〜第６のパイプラインステージが設けられている。第１のステージＳ１はデコードステージＤ  ｓｔａｇｅであって、ジェネラル・パーパス・レジスタＧＰＲが設けられている。ジェネラル・パーパス・レジスタＧＰＲには、演算用のデータなどが格納されている。第２のステージ（Ｅ０  ｓｔａｇｅ）Ｓ２には、実行命令に応じて、必要な処理を行うＡＤＤ／ＳＵＢ演算器１１とＣＭＰ演算器１２とが設けられている。ＡＤＤ／ＳＵＢ演算器１１の入力段には、セレクタ２１ａ，２１ｂが接続されている。第３のステージ（Ｅ１  ｓｔａｇｅ）Ｓ３には、実行命令に応じて、必要な処理を行うＭＵＬ演算器１３とＬＯＧＩＣ演算器１４とが設けられている。ＭＵＬ演算器１３およびＬＯＧＩＣ演算器１４の出力段には、セレクタ２２が接続されている。第４のステージ（Ｅ２  ｓｔａｇｅ）Ｓ４には、実行命令に応じて、必要な処理を行うＳＨＦＴ演算器１５とＣＬＩＰ演算器１６とが設けられている。
【００１５】
上記各演算器１１，１２，１３，１４，１５，１６は、それぞれ、該当する処理をスルーするＰＡＴＨ機能を有している。
【００１６】
第５のステージＳ５はメモリステージＭ  ｓｔａｇｅであって、実行命令に応じて、必要な処理を行うデータメモリ１７が設けられている。データメモリ１７の出力段には、セレクタ２３が接続されている。第６のステージＳ６はライトバックステージＷＢ  ｓｔａｇｅであって、セレクタ２４が設けられている。上記セレクタ２４は、上記ジェネラル・パーパス・レジスタＧＰＲに接続されている。
【００１７】
そして、第１のステージＳ１と第２のステージＳ２との間には、４つのパイプラインレジスタ（Ｐｉｐｅｌｉｎｅ  Ｒｅｇ．Ａ，Ｒｅｇ．Ｂ，Ｒｅｇ．Ｃ，Ｒｅｇ．Ｄ）３１ａ，３１ｂ，３１ｃ，３１ｄが設けられている。パイプラインレジスタ３１ａは、入力が上記ジェネラル・パーパス・レジスタＧＰＲに接続され、出力が上記セレクタ２１ａに接続されている。パイプラインレジスタ３１ｂは、入力が上記ジェネラル・パーパス・レジスタＧＰＲに接続され、出力が上記セレクタ２１ａに接続されている。パイプラインレジスタ３１ｃは、入力が上記ジェネラル・パーパス・レジスタＧＰＲに接続され、出力が上記セレクタ２１ｂおよび上記ＣＭＰ演算器１２に接続されている。パイプラインレジスタ３１ｄは、入力が上記ジェネラル・パーパス・レジスタＧＰＲに接続され、出力が上記セレクタ２１ｂおよび上記ＣＭＰ演算器１２に接続されている。
【００１８】
第２のステージＳ２と第３のステージＳ３との間には、２つのパイプラインレジスタ（Ｐｉｐｅｌｉｎｅ  Ｒｅｇ．Ｅ，Ｒｅｇ．Ｆ）３１ｅ，３１ｆが設けられている。パイプラインレジスタ３１ｅは、入力が上記ＡＤＤ／ＳＵＢ演算器１１に接続され、出力が上記ＭＵＬ演算器１３に接続されている。パイプラインレジスタ３１ｆは、入力が上記ＣＭＰ演算器１２に接続され、出力が上記ＭＵＬ演算器１３および上記ＬＯＧＩＣ演算器１４に接続されている。
【００１９】
第３のステージＳ３と第４のステージＳ４との間には、２つのパイプラインレジスタ（Ｐｉｐｅｌｉｎｅ  Ｒｅｇ．Ｇ，Ｒｅｇ．Ｈ）３１ｇ，３１ｈが設けられている。パイプラインレジスタ３１ｇは、入力が上記ＭＵＬ演算器１３に接続され、出力が上記ＳＨＦＴ演算器１５に接続されている。パイプラインレジスタ３１ｈは、入力が上記セレクタ２２に接続され、出力が上記ＣＬＩＰ演算器１６に接続されている。
【００２０】
第４のステージＳ４と第５のステージＳ５との間には、２つのパイプラインレジスタ（Ｐｉｐｅｌｉｎｅ  Ｒｅｇ．Ｉ，Ｒｅｇ．Ｊ）３１ｉ，３１ｊが設けられている。パイプラインレジスタ３１ｉは、入力が上記ＳＨＦＴ演算器１５に接続され、出力が上記データメモリ１７および上記セレクタ２３に接続されている。
【００２１】
第５のステージＳ５と第６のステージＳ６との間には、２つのパイプラインレジスタ（Ｐｉｐｅｌｉｎｅ  Ｒｅｇ．Ｋ，Ｒｅｇ．Ｌ）３１ｋ，３１ｌが設けられている。パイプラインレジスタ３１ｋは、入力が上記セレクタ２３に接続され、出力が上記セレクタ２４に接続されている。パイプラインレジスタ３１ｌは、入力が上記パイプラインレジスタ３１ｊに接続され、出力が上記セレクタ２４に接続されている。
【００２２】
各パイプラインレジスタ３１ａ，３１ｂ，３１ｃ，３１ｄ，３１ｅ，３１ｆ，３１ｇ，３１ｈ，３１ｉ，３１ｊ，３１ｋ，３１ｌは、保持値としてのステージ間情報、たとえば、ジェネラル・パーパス・レジスタＧＰＲからの演算用のデータおよび各ステージＳ２，Ｓ３，Ｓ４，Ｓ５での演算結果などを保持するもので、それぞれ、ホールド回路３２ａ，３２ｂ，３２ｃ，３２ｄ，３２ｅ，３２ｆ，３２ｇ，３２ｈ，３２ｉ，３２ｊ，３２ｋ，３２ｌを備えている。各ホールド回路３２ａ，３２ｂ，３２ｃ，３２ｄ，３２ｅ，３２ｆ，３２ｇ，３２ｈ，３２ｉ，３２ｊ，３２ｋ，３２ｌは、指定されたサイクルの間、パイプラインレジスタ３１ａ，３１ｂ，３１ｃ，３１ｄ，３１ｅ，３１ｆ，３１ｇ，３１ｈ，３１ｉ，３１ｊ，３１ｋ，３１ｌで保持されたステージ間情報をそれぞれホールドするものである。
【００２３】
また、このパイプラインプロセッサには、スキップ経路４１およびスキップコントローラ５１が設けられている。スキップ経路４１は、スキップコントローラ５１の制御により、実行命令に応じて、スキップ可能なパイプラインステージをスキップ（非通過）させるためのもので、たとえば、各パイプラインステージと１ステージ以上後段のパイプラインレジスタとの間を接続する経路となっている。本実施形態の場合、スキップ経路４１は、ジェネラル・パーパス・レジスタＧＰＲからパイプラインレジスタ３１ａ，３１ｂ，３１ｃ，３１ｄへの出力、または、パイプラインレジスタ３１ａ，３１ｂ，３１ｃ，３１ｄの出力、または、ＡＤＤ／ＳＵＢ演算器１１の出力を、それぞれ、パイプラインレジスタ３１ｇ，３１ｉ，３１ｋにスキップさせるような経路を有する。また、ジェネラル・パーパス・レジスタＧＰＲからパイプラインレジスタ３１ａ，３１ｂ，３１ｃ，３１ｄへの出力、または、パイプラインレジスタ３１ａ，３１ｂ，３１ｃ，３１ｄ，３１ｅの出力、または、ＡＤＤ／ＳＵＢ演算器１１の出力、または、ＭＵＬ演算器１３の出力を、それぞれ、パイプラインレジスタ３１ｉ，３１ｋにスキップさせるような経路を有する。また、ジェネラル・パーパス・レジスタＧＰＲからパイプラインレジスタ３１ａ，３１ｂ，３１ｃ，３１ｄへの出力、または、パイプラインレジスタ３１ａ，３１ｂ，３１ｃ，３１ｄ，３１ｅの出力、または、ＡＤＤ／ＳＵＢ演算器１１の出力、または、ＭＵＬ演算器１３の出力、または、ＳＨＦＴ演算器１５の出力を、それぞれ、パイプラインレジスタ３１ｋにスキップさせるような経路を有する。また、ジェネラル・パーパス・レジスタＧＰＲからパイプラインレジスタ３１ｃ，３１ｄへの出力、または、パイプラインレジスタ３１ｃ，３１ｄの出力、または、ＣＭＰ演算器１２の出力を、それぞれ、パイプラインレジスタ３１ｈ，３１ｊ，３１ｌにスキップさせるような経路を有する。また、ジェネラル・パーパス・レジスタＧＰＲからパイプラインレジスタ３１ｃ，３１ｄへの出力、または、パイプラインレジスタ３１ｃ，３１ｄ，３１ｆの出力、または、セレクタ２２の出力を、それぞれ、パイプラインレジスタ３１ｊ，３１ｌにスキップさせるような経路を有する。また、ジェネラル・パーパス・レジスタＧＰＲからパイプラインレジスタ３１ｃ，３１ｄへの出力、または、パイプラインレジスタ３１ｃ，３１ｄ，３１ｆの出力、または、セレクタ２２の出力、または、ＣＬＩＰ演算器１６の出力を、それぞれ、パイプラインレジスタ３１ｌにスキップさせるような経路を有する。
【００２４】
スキップコントローラ５１は、各実行命令をもとにスキップ可能なパイプラインステージを判断し、その結果にしたがって、各パイプラインレジスタ３１ａ，３１ｂ，３１ｃ，３１ｄ，３１ｅ，３１ｆ，３１ｇ，３１ｈ，３１ｉ，３１ｊ，３１ｋ，３１ｌ、ホールド回路３２ａ，３２ｂ，３２ｃ，３２ｄ，３２ｅ，３２ｆ，３２ｇ，３２ｈ，３２ｉ，３２ｊ，３２ｋ，３２ｌ、および、スキップ経路４１を制御するものである。
【００２５】
［動作］
次に、図１に示した構成において、パイプラインプロセッサの主な動作について説明する。ここでは、下記に示す４つの動作の説明を行う。その際に、各図中にそれぞれ判別可能に示された演算器、パイプラインレジスタ、ホールド回路、および、スキップ経路などが実際に使用される（トグルによる電力消費をともなって動作する）。
【００２６】
（１）一段スキップ動作
（２）二段スキップ動作
（３）スキップＡｆｔｅｒホールド動作
（４）優先度付きスキップ動作
なお、二段以上のスキップ動作については、（２）の二段スキップ動作とほぼ同様であり、詳しい説明は割愛する。
【００２７】
（１）一段スキップ動作
一段スキップ動作とは、上記した構成のパイプラインプロセッサにおいて、後続のパイプラインステージを一段スキップさせる動作である。本例では、後掲する表１の命令列１を実行する場合を例に説明する。
【表１】
2010198128.tif 000003
【００２８】
ここで、上記命令列１において、プログラムカウンタ（ＰＣ）の命令ＩＤ［ｎ］（以下、実行命令［ＰＣ：ｎ］と表記する）の命令コードの解釈は、
「第２のステージ（Ｅ０  ｓｔａｇｅ）Ｓ２において、パイプラインレジスタ（Ｒｅｇ．Ａ）３１ａとパイプラインレジスタ（Ｒｅｇ．Ｃ）３１ｃの保持値を加算、パイプラインレジスタ（Ｒｅｇ．Ｄ）３１ｄの保持値をパス」後、
「第３のステージ（Ｅ１  ｓｔａｇｅ）Ｓ３において、パイプラインレジスタ（Ｒｅｇ．Ｅ）３１ｅとパイプラインレジスタ（Ｒｅｇ．Ｆ）３１ｆの保持値を乗算」後、
「第４のステージ（Ｅ２  ｓｔａｇｅ）Ｓ４において、パイプラインレジスタ（Ｒｅｇ．Ｈ）３１ｈの保持値をクリップ」、
である。
【００２９】
また、プログラムカウンタの命令ＩＤ［ｎ＋１］（以下、実行命令［ＰＣ：ｎ＋１］と表記する）の命令コードの解釈は、
「第２のステージＳ２において、パイプラインレジスタ（Ｒｅｇ．Ｂ）３１ｂとパイプラインレジスタ３１ｃの保持値を加算」後、
「第３のステージＳ３において、パイプラインレジスタ３１ｅの保持値をパス」後、
「第４のステージＳ４において、パイプラインレジスタ（Ｒｅｇ．Ｇ）３１ｇの保持値をシフト」、
である。
【００３０】
パイプラインプロセッサにおいては、まず、ＰＣ値の先行する実行命令［ＰＣ：ｎ］（ＣＬＩＰ［ＭＵＬ｛ＡＤＤ（Ａ，Ｃ），Ｄ｝］）が先に実行される。すなわち、最初のサイクルにおいて、スキップコントローラ５１は、実行命令［ＰＣ：ｎ］が第１のステージＳ１に存在することにより、たとえば図２に示すように、ジェネラル・パーパス・レジスタＧＰＲからの出力を、それぞれステージ間情報として、パイプラインレジスタ３１ａ，３１ｃ，３１ｄによって保持させる（パイプラインレジスタ３１ａ，３１ｃ，３１ｄに命令が存在する）。
【００３１】
次のサイクルで、スキップコントローラ５１は、実行命令［ＰＣ：ｎ］が第２のステージＳ２に存在することにより、たとえば図３に示すように、第２のステージＳ２において、ＡＤＤ／ＳＵＢ演算器１１とＣＭＰ演算器１２のＰＡＴＨ機能とをトグルさせて、パイプラインレジスタ３１ｅに加算結果（Ｒｅｇ．Ａ＋Ｒｅｇ．Ｃ）を、パイプラインレジスタ３１ｆにパイプラインレジスタ３１ｄの保持値（パイプラインレジスタ３１ｄからのスルー結果）を、それぞれ保持させる。また、スキップコントローラ５１は、実行命令［ＰＣ：ｎ＋１］が第１のステージＳ１に存在することにより、たとえば図３に示すように、第１のステージＳ１において、ジェネラル・パーパス・レジスタＧＰＲからの出力を、それぞれステージ間情報として、パイプラインレジスタ３１ｂ，３１ｃに保持させる。
【００３２】
次のサイクルで、スキップコントローラ５１は、実行命令［ＰＣ：ｎ］が第３のステージＳ３に存在することにより、たとえば図４に示すように、第３のステージＳ３において、ＭＵＬ演算器１３をトグルさせ、その結果（Ｒｅｇ．Ｅ×Ｒｅｇ．Ｆ）を、パイプラインレジスタ３１ｈに保持させる。また、スキップコントローラ５１は、実行命令［ＰＣ：ｎ＋１］が第２のステージＳ２に存在することにより、たとえば図４に示すように、第２のステージＳ２において、ＡＤＤ／ＳＵＢ演算器１１をトグルさせ、その結果（Ｒｅｇ．Ｂ＋Ｒｅｇ．Ｃ）を、スキップ経路４１を介し、パイプラインレジスタ３１ｇに保持させる。
【００３３】
ここで、従来のパイプラインプロセッサであれば、ＭＵＬ演算器１３の結果をパイプラインレジスタ３１ｇに保持させるとともに、ＡＤＤ／ＳＵＢ演算器１１の出力をパイプラインレジスタ３１ｅで保持させるが、本実施例のパイプラインプロセッサにおいては、スキップコントローラ５１による「一段スキップ可能」の判定結果にもとづき、ＡＤＤ／ＳＵＢ演算器１１の出力を、第３のステージＳ３をスキップさせて、パイプラインレジスタ３１ｇで保持させる。そのため、スキップコントローラ５１は、実行命令［ＰＣ：ｎ］に対するＭＵＬ演算器１３の演算結果を、パイプラインレジスタ３１ｈに保持させる。
【００３４】
次のサイクルで、スキップコントローラ５１は、実行命令［ＰＣ：ｎ］が第４のステージＳ４に存在することにより、たとえば図５に示すように、第４のステージＳ４において、ＣＬＩＰ演算器１６をトグルさせ、その結果を、パイプラインレジスタ３１ｊに保持させる。一方、スキップコントローラ５１は、実行命令［ＰＣ：ｎ＋１］が第４のステージＳ４に既にスキップしていることから、パイプラインレジスタ３１ｇの保持値をホールド回路３２ｇによってホールドさせる。
【００３５】
図５のサイクルにおいて、従来のパイプラインプロセッサであれば、実行命令［ＰＣ：ｎ＋１］に対するＡＤＤ／ＳＵＢ演算器１１での処理の結果が、パイプラインレジスタ３１ｅからＭＵＬ演算器１３のＰＡＴＨ機能を用いて、パイプラインレジスタ３１ｇに書き込まれる。そのため、ＭＵＬ演算器１３がトグルされ、電力が消費される。しかし、本実施例のパイプラインプロセッサによれば、図４のサイクルにおいて、既にパイプラインレジスタ３１ｇにＡＤＤ／ＳＵＢ演算器１１での処理の結果がスキップされているため、パイプラインレジスタ３１ｅからＭＵＬ演算器１３への入力値を変化させないことで、ＭＵＬ演算器１３のトグルを抑え、そこでの電力消費を低減できるようになる。
【００３６】
次のサイクルで、スキップコントローラ５１は、実行命令［ＰＣ：ｎ］が第５のステージＳ５に存在することにより、たとえば図６に示すように、第５のステージＳ５において、パイプラインレジスタ３１ｊの保持値を、パイプラインレジスタ３１ｌに保持させる。また、スキップコントローラ５１は、実行命令［ＰＣ：ｎ＋１］が第４のステージＳ４に存在することにより、たとえば図６に示すように、第４のステージＳ４において、ＳＨＦＴ演算器１５をトグルさせ、その結果を、パイプラインレジスタ３１ｉに保持させる。この図６のサイクルは、スキップを行わない従来のパイプラインプロセッサのサイクルと一致するため、パイプライン全体の動作に差異はみられない。
【００３７】
次のサイクルで、スキップコントローラ５１は、実行命令［ＰＣ：ｎ］が第６のステージＳ６に存在することにより、第６のステージＳ６において、パイプラインレジスタ３１ｌの保持値をジェネラル・パーパス・レジスタＧＰＲに書き込むとともに、実行命令［ＰＣ：ｎ＋１］が第５のステージＳ５に存在することにより、第５のステージＳ５において、パイプラインレジスタ３１ｉの保持値を、パイプラインレジスタ３１ｋに保持させる。
【００３８】
次（最後）のサイクルで、スキップコントローラ５１は、実行命令［ＰＣ：ｎ＋１］が第６のステージＳ６に存在することにより、第６のステージＳ６において、パイプラインレジスタ３１ｋの保持値をジェネラル・パーパス・レジスタＧＰＲに書き込む。
【００３９】
上記したように、図４のサイクルにおいて、第３のステージＳ３を一段スキップさせるようにしたことにより、ＭＵＬ演算器１３のトグルを低下させ、消費電力を抑えることが可能となる。
【００４０】
（２）二段スキップ動作
二段スキップ動作とは、上記した構成のパイプラインプロセッサにおいて、後続のパイプラインステージを二段スキップさせる動作である。本例では、後掲する表２の命令列２を実行する場合を例に説明する。
【表２】
2010198128.tif 000004
【００４１】
ここで、上記命令列２において、プログラムカウンタ（ＰＣ）の命令ＩＤ［ｎ］（以下、実行命令［ＰＣ：ｎ］と表記する）の命令コードの解釈は、
「第２のステージ（Ｅ０  ｓｔａｇｅ）Ｓ２において、パイプラインレジスタ（Ｒｅｇ．Ａ）３１ａとパイプラインレジスタ（Ｒｅｇ．Ｃ）３１ｃの保持値を加算、パイプラインレジスタ（Ｒｅｇ．Ｄ）３１ｄの保持値をパス」後、
「第３のステージ（Ｅ１  ｓｔａｇｅ）Ｓ３において、パイプラインレジスタ（Ｒｅｇ．Ｅ）３１ｅとパイプラインレジスタ（Ｒｅｇ．Ｆ）３１ｆの保持値を乗算」後、
「第４のステージ（Ｅ２  ｓｔａｇｅ）Ｓ４において、パイプラインレジスタ（Ｒｅｇ．Ｈ）３１ｈの保持値をクリップ」、
である。
【００４２】
また、プログラムカウンタの命令ＩＤ［ｎ＋１］（以下、実行命令［ＰＣ：ｎ＋１］と表記する）の命令コードの解釈は、
「第２のステージＳ２において、パイプラインレジスタ（Ｒｅｇ．Ｂ）３１ｂの保持値をパス」後、
「第３のステージＳ３において、パイプラインレジスタ３１ｅの保持値をパス」後、
「第４のステージＳ４において、パイプラインレジスタ（Ｒｅｇ．Ｇ）３１ｇの保持値をシフト」、
である。
【００４３】
パイプラインプロセッサにおいては、まず、ＰＣ値の先行する実行命令［ＰＣ：ｎ］（ＣＬＩＰ［ＭＵＬ｛ＡＤＤ（Ａ，Ｃ），Ｄ｝］）が先に実行される。すなわち、最初のサイクルにおいて、スキップコントローラ５１は、実行命令［ＰＣ：ｎ］が第１のステージＳ１に存在することにより、たとえば図２に示したように、ジェネラル・パーパス・レジスタＧＰＲからの出力を、それぞれステージ間情報として、パイプラインレジスタ３１ａ，３１ｃ，３１ｄによって保持させる。
【００４４】
次のサイクルで、スキップコントローラ５１は、実行命令［ＰＣ：ｎ］が第２のステージＳ２に存在することにより、たとえば図７に示すように、第２のステージＳ２において、ＡＤＤ／ＳＵＢ演算器１１とＣＭＰ演算器１２のＰＡＴＨ機能とをトグルさせて、パイプラインレジスタ３１ｅに加算結果（Ｒｅｇ．Ａ＋Ｒｅｇ．Ｃ）を、パイプラインレジスタ３１ｆにパイプラインレジスタ３１ｄの保持値（パイプラインレジスタ３１ｄからのスルー結果）を、それぞれ保持させる。また、スキップコントローラ５１は、実行命令［ＰＣ：ｎ＋１］が第１のステージＳ１に存在することにより、たとえば図７に示すように、第１のステージＳ１において、ジェネラル・パーパス・レジスタＧＰＲからの出力を、スキップ経路４１を介し、ステージ間情報として、パイプラインレジスタ３１ｇに保持させる。
【００４５】
ここで、従来のパイプラインプロセッサであれば、ジェネラル・パーパス・レジスタＧＰＲから読み出した値を、パイプラインレジスタ３１ｂに保持させるが、本実施例のパイプラインプロセッサにおいては、スキップコントローラ５１による「二段スキップ可能」の判定結果にもとづき、ジェネラル・パーパス・レジスタＧＰＲからの出力を、第２，第３のステージＳ２，Ｓ３をスキップさせて、パイプラインレジスタ３１ｇで保持させる。
【００４６】
次のサイクルで、スキップコントローラ５１は、実行命令［ＰＣ：ｎ］が第３のステージＳ３に存在することにより、たとえば図８に示すように、第３のステージＳ３において、ＭＵＬ演算器１３をトグルさせ、その結果（Ｒｅｇ．Ｅ×Ｒｅｇ．Ｆ）を、パイプラインレジスタ３１ｈに保持させる。一方、スキップコントローラ５１は、実行命令［ＰＣ：ｎ＋１］が第４のステージＳ４に既にスキップしていることから、パイプラインレジスタ３１ｇの保持値をホールド回路３２ｇによってホールドさせる。
【００４７】
以降のサイクルは、一段スキップ動作の際に説明した図５および図６の動作と同様である。
【００４８】
上記したように、図７のサイクルにおいて、第２，第３のステージＳ２，Ｓ３を二段スキップさせるようにしたことにより、ＡＤＤ／ＳＵＢ演算器１１およびＭＵＬ演算器１３のトグルを低下させ、消費電力を抑えることが可能となる。
【００４９】
（３）スキップＡｆｔｅｒホールド動作
スキップＡｆｔｅｒホールド動作とは、使用するリソース（この例では、演算器およびデータメモリなど）が重複する実行命令が連なる場合に、スキップ動作を行う以前に、そのステージ前段のパイプラインレジスタでステージ間情報をホールドさせ、使用するリソースのステージ前段のパイプラインレジスタが解放され次第、スキップ動作を実行する動作である。本例では、後掲する表３の命令列３を実行する場合を例に説明する。
【表３】
2010198128.tif 000005
【００５０】
ここで、上記命令列３において、プログラムカウンタ（ＰＣ）の命令ＩＤ［ｎ］（以下、実行命令［ＰＣ：ｎ］と表記する）の命令コードの解釈は、
「第２のステージ（Ｅ０  ｓｔａｇｅ）Ｓ２において、パイプラインレジスタ（Ｒｅｇ．Ａ）３１ａとパイプラインレジスタ（Ｒｅｇ．Ｃ）３１ｃの保持値を加算、パイプラインレジスタ（Ｒｅｇ．Ｄ）３１ｄの保持値をパス」後、
「第３のステージ（Ｅ１  ｓｔａｇｅ）Ｓ３において、パイプラインレジスタ（Ｒｅｇ．Ｅ）３１ｅとパイプラインレジスタ（Ｒｅｇ．Ｆ）３１ｆの保持値を乗算」後、
「第４のステージ（Ｅ２  ｓｔａｇｅ）Ｓ４において、パイプラインレジスタ（Ｒｅｇ．Ｇ）３１ｇの保持値をシフト」、
である。
【００５１】
また、プログラムカウンタの命令ＩＤ［ｎ＋１］（以下、実行命令［ＰＣ：ｎ＋１］と表記する）の命令コードの解釈は、
「第２のステージＳ２において、パイプラインレジスタ（Ｒｅｇ．Ｂ）３１ｂの保持値をパス」後、
「第３のステージＳ３において、パイプラインレジスタ３１ｅの保持値をパス」後、
「第４のステージＳ４において、パイプラインレジスタ（Ｒｅｇ．Ｇ）３１ｇの保持値をシフト」、
である。
【００５２】
また、プログラムカウンタの命令ＩＤ［ｎ＋２］（以下、実行命令［ＰＣ：ｎ＋２］と表記する）の命令コードの解釈は、
「Ｎｏ  Ｏｐｅｒａｔｉｏｎ（あるいは、パイプラインレジスタ３１ｂを使用しない任意の命令の配置も許可される）」、
である。
【００５３】
パイプラインプロセッサにおいては、まず、ＰＣ値の先行する実行命令［ＰＣ：ｎ］（ＣＬＩＰ［ＭＵＬ｛ＡＤＤ（Ａ，Ｃ），Ｄ｝］）が先に実行される。すなわち、最初のサイクルにおいて、スキップコントローラ５１は、実行命令［ＰＣ：ｎ］が第１のステージＳ１に存在することにより、たとえば図２に示したように、ジェネラル・パーパス・レジスタＧＰＲからの出力を、それぞれステージ間情報として、パイプラインレジスタ３１ａ，３１ｃ，３１ｄによって保持させる。
【００５４】
次のサイクルで、スキップコントローラ５１は、実行命令［ＰＣ：ｎ］が第２のステージＳ２に存在することにより、たとえば図９に示すように、第２のステージＳ２において、ＡＤＤ／ＳＵＢ演算器１１とＣＭＰ演算器１２のＰＡＴＨ機能とをトグルさせて、パイプラインレジスタ３１ｅに加算結果（Ｒｅｇ．Ａ＋Ｒｅｇ．Ｃ）を、パイプラインレジスタ３１ｆにパイプラインレジスタ３１ｄの保持値（パイプラインレジスタ３１ｄからのスルー結果）を、それぞれ保持させる。また、スキップコントローラ５１は、実行命令［ＰＣ：ｎ＋１］が第１のステージＳ１に存在することにより、たとえば図９に示すように、第１のステージＳ１において、ジェネラル・パーパス・レジスタＧＰＲからの出力を、パイプラインレジスタ３１ｂに保持させる。
【００５５】
ここで、上述した「二段スキップ動作」においては、実行命令［ＰＣ：ｎ］のＣＬＩＰ演算器１６の動作と実行命令［ＰＣ：ｎ＋１］のＳＨＦＴ演算器１５の動作とが排他的であったため、スキップコントローラ５１は「二段スキップ可能」の判定を下した。しかし、本例の場合は、実行命令［ＰＣ：ｎ］のＳＨＦＴ演算１５の動作と実行命令［ＰＣ：ｎ＋１］のＳＨＦＴ演算器１５の動作とが重複しているため、図９のサイクルにおいて、スキップコントローラ５１は「スキップ不可」の判定を下し、ジェネラル・パーパス・レジスタＧＰＲからの出力をパイプラインレジスタ３１ｂに保持させる。
【００５６】
次のサイクルで、スキップコントローラ５１は、実行命令［ＰＣ：ｎ］が第３のステージＳ３に存在することにより、たとえば図１０に示すように、第３のステージＳ３において、ＭＵＬ演算器１３をトグルさせ、その結果（Ｒｅｇ．Ｅ×Ｒｅｇ．Ｆ）を、パイプラインレジスタ３１ｇに保持させる。一方、スキップコントローラ５１は、ＳＨＦＴ演算器１５の動作が重複するため、パイプラインレジスタ３１ｂの保持値を直ちにスキップさせることはできないが、第２，第３のステージＳ２，Ｓ３をスキップさせる「二段スキップ可能」の判定結果により、ＳＨＦＴ演算器１５が設けられたステージＳ４の前段のパイプラインレジスタ３１ｇが解放される（非使用状態になる）まで、パイプラインレジスタ３１ｂの保持値をホールド回路３２ｂでホールドさせる。この時、パイプラインレジスタ３１ｂの保持値をホールド回路３２ｂでホールドさせるためには、実行命令［ＰＣ：ｎ＋２］がパイプラインレジスタ３１ｂへの書き込みを禁止するものであることが必要である（スキップコントローラ５１の判定結果に考慮される）。
【００５７】
次のサイクルで、スキップコントローラ５１は、実行命令［ＰＣ：ｎ］が第４のステージＳ４に存在することにより、たとえば図１１に示すように、第４のステージＳ４において、ＳＨＦＴ演算器１５をトグルさせ、その結果を、パイプラインレジスタ３１ｉに保持させる。この段階で、パイプラインレジスタ３１ｇは解放される。したがって、スキップコントローラ５１は、たとえば図１１に示すように、ホールド回路３２ｂでホールドさせていたパイプラインレジスタ３１ｂの保持値を、スキップ経路４１を介し、パイプラインレジスタ３１ｇに保持させる。
【００５８】
次のサイクルで、スキップコントローラ５１は、実行命令［ＰＣ：ｎ］が第５のステージＳ５に存在することにより、たとえば図１２に示すように、第５のステージＳ５において、パイプラインレジスタ３１ｉの保持値を、パイプラインレジスタ３１ｋに保持させる。また、スキップコントローラ５１は、実行命令［ＰＣ：ｎ＋１］が第４のステージＳ４に存在することにより、たとえば図１２に示すように、第４のステージＳ４において、ＳＨＦＴ演算器１５をトグルさせ、その結果を、パイプラインレジスタ３１ｉに保持させる。
【００５９】
次のサイクルで、スキップコントローラ５１は、実行命令［ＰＣ：ｎ］が第６のステージＳ６に存在することにより、第６のステージＳ６において、パイプラインレジスタ３１ｋの保持値をジェネラル・パーパス・レジスタＧＰＲに書き込むとともに、実行命令［ＰＣ：ｎ＋１］が第５のステージＳ５に存在することにより、第５のステージＳ５において、パイプラインレジスタ３１ｉの保持値を、パイプラインレジスタ３１ｋに保持させる。
【００６０】
次（最後）のサイクルで、スキップコントローラ５１は、実行命令［ＰＣ：ｎ＋１］が第６のステージＳ６に存在することにより、第６のステージＳ６において、パイプラインレジスタ３１ｋの保持値をジェネラル・パーパス・レジスタＧＰＲに書き込む。
【００６１】
上記したように、ＳＨＦＴ演算器１５が重複する実行命令［ＰＣ：ｎ］，［ＰＣ：ｎ＋１］が連なる場合には、直前のパイプラインレジスタ３１ｇが解放され次第、スキップ動作を行わせるようにしたことによって、第２，第３のステージＳ２，Ｓ３の二段スキップが可能となる。その結果、ＡＤＤ／ＳＵＢ演算器１１およびＭＵＬ演算器１３のトグルを低下させて、消費電力を抑えることが可能となる。
【００６２】
なお、上記のスキップＡｆｔｅｒホールド動作に際しては、スキップ動作の前の段階で、実行命令［ＰＣ：ｎ＋１］を待機させるが、この間、第２のステージＳ２のＡＤＤ／ＳＵＢ演算器１１は、保持値の変化しないパイプラインレジスタ３１ａ，３１ｃ，３１ｄからの出力を入力値として利用することにより、トグルを抑えることが可能である。
【００６３】
（４）優先度付きスキップ動作
上述したスキップ動作の説明においては、いずれの場合も、スキップできるパイプラインレジスタの制限、スキップできるパイプラインステージの制限、および、スキップできる実行命令数の制限は想定していない。スキップコントローラおよびホールド回路およびスキップ経路などの全ハードウェアを完全に配備した上では、特に上記の制限は必要ない。一方で、パイプラインプロセッサの面積の制約上、ハードウェアの一部しか配備できないような場合には、上記の制約により、スキップ候補となる複数の命令の中から、実際にスキップ動作を行う命令を選択する動作が必要となる。一例を挙げれば、たとえば図１３に示すように、スキップコントローラ５１の内部にパイプラインレジスタ３１ａ〜３１ｌ用の各ホールド回路３２を配備することも可能であるが、その全てを配備できないケースもこれに該当する。
【００６４】
スキップ候補となる複数の命令が存在する場合、スキップコントローラ５１は、『各パイプラインステージをスキップした場合に低下可能な消費電力』にもとづいて、スキップする命令を採択する。たとえば、図１３のパイプライン構成において、各ステージＳ１〜Ｓ６における消費電力の傾向が、『第５のステージＳ５＞第３のステージＳ３＞第４のステージＳ４』であると仮定する（データメモリ１７＞ＭＵＬ演算器１３＞ＳＨＦＴ演算器１５）。この状況において、たとえば第３，第４，第５のステージＳ３，Ｓ４，Ｓ５の３つのステージをそれぞれスキップ可能な３つの命令が存在した場合、スキップコントローラ５１は、スキップ動作によりパイプライン全体の消費電力を最も低下可能であるとの判定結果にもとづいて、第５のステージＳ５をスキップさせる命令を採択する。すなわち、スキップ候補の命令に、低下し得る消費電力に応じた優先順位を付し、その順位の最も高い命令を実行するようにする。
【００６５】
このように、ハードウェアの配備の状況などに応じて、スキップする複数の命令のうち、電力消費の削減効果が最も高い命令を実行するようにしたのが、優先度付きスキップ動作である。
【００６６】
［スキップコントローラ５１について］
次に、上述したスキップ動作において、スキップコントローラ５１の制御について説明する。ここでは、スキップ判定対象の実行命令（後続命令［ＰＣ：ｎ＋１］）と先行する実行命令（先行命令［ＰＣ：ｎ］）および後続の実行命令（後続命令［ＰＣ：ｎ＋２］）とが使用するハードウェアリソースの判定に係る動作について簡単に説明する。
【００６７】
図１４に示すように、まず、ステップＳＴ１において、後続命令［ＰＣ：ｎ＋１］が使用する、全ハードウェアリソースをサーチする。
【００６８】
次いで、ステップＳＴ２において、上記ステップＳＴ１でのサーチの結果より、後続命令［ＰＣ：ｎ＋１］が演算またはメモリアクセスなどの実処理を行うパイプラインステージを特定する。
【００６９】
次いで、ステップＳＴ３において、後続命令［ＰＣ：ｎ＋１］よりもパイプラインステージの後段に位置する先行命令［ＰＣ：ｎ］が使用するハードウェアリソースを、先行命令［ＰＣ：ｎ］のスキップ動作を考慮した上で特定する。
【００７０】
次いで、ステップＳＴ４において、上記ステップＳＴ１でサーチされた後続命令［ＰＣ：ｎ＋１］が使用する全ハードウェアリソースと、上記ステップＳＴ３で特定された先行命令［ＰＣ：ｎ］が使用するハードウェアリソースとを比較し、上記ステップＳＴ２で特定されたステージのハードウェアリソースを、上記ステップＳＴ３で特定された先行命令［ＰＣ：ｎ］が使用するかを判定する。
【００７１】
次いで、上記ステップＳＴ４において、先行命令［ＰＣ：ｎ］が、後続命令［ＰＣ：ｎ＋１］が使用するハードウェアリソースを使用しないと判定した場合、たとえば図１５または図１６に示すように、ステップＳＴ５において、後続命令［ＰＣ：ｎ＋１］の保持値を、実処理を行うステージの直前のパイプラインレジスタに、スキップ経路４１を用いてスキップさせる（上述の、一段スキップ動作または二段スキップ動作参照）。
【００７２】
次いで、ステップＳＴ６において、直近のスキップ動作を、上記ステップＳＴ３での先行命令［ＰＣ：ｎ］が使用するハードウェアリソースの特定のために反映させる。
【００７３】
一方、上記ステップＳＴ４において、先行命令［ＰＣ：ｎ］が、後続命令［ＰＣ：ｎ＋１］が使用するハードウェアリソースを使用すると判定した場合、ステップＳＴ７において、後続命令［ＰＣ：ｎ＋１］が現ステージで使用しているハードウェアリソースを、さらに後続命令［ＰＣ：ｎ＋２］が直近で使用するかを判定する。
【００７４】
上記ステップＳＴ７で、後続命令［ＰＣ：ｎ＋２］が使用すると判定した場合、スキップコントローラ５１は、スキップ動作は不可能と判断し、上記したステップＳＴ１〜の処理を繰り返す。
【００７５】
一方、上記ステップＳＴ７で、後続命令［ＰＣ：ｎ＋２］が使用しないと判定した場合、ステップＳＴ８において、上記ステップＳＴ２で特定したハードウェアリソースを、先行命令［ＰＣ：ｎ］が解放したかを判定する。なお、解放されるまで、上記ステップＳＴ７，ＳＴ８の処理を繰り返すとともに、後続命令［ＰＣ：ｎ＋１］の保持値を、実処理を行うステージの数段前のパイプラインレジスタのホールド回路でホールドさせる。
【００７６】
そして、解放した場合には、たとえば図１７に示すように、上記ステップＳＴ５において、後続命令［ＰＣ：ｎ＋１］の保持値を、実処理を行うステージの直前のパイプラインレジスタに、スキップ経路４１を用いてスキップさせる（上述の、スキップＡｆｔｅｒホールド動作参照）。
【００７７】
このようにして、スキップコントローラ５１によって、処理の対象となる実行命令が、後段のパイプラインステージでの処理を必要とするか否かを判定し、必要としないステージをスキップさせることにより、スキップされるステージでの電力の無駄な消費を抑制できるようになる。
【００７８】
上記したように、パイプライン動作によって命令を実行するインオーダなパイプラインプロセッサにおいて、処理を必要としないパイプラインステージでのリソースのトグルを低下させることにより、余計な電力の消費を抑えるようにしている。すなわち、処理の対象となる実行命令が、後段のパイプラインステージでの処理を必要とするか否かを監視するスキップコントローラの判定にもとづき、必要としない処理を含むステージをスキップさせるようにしている。これにより、処理を必要としないステージでのリソースのトグルを低下させることが可能となる。したがって、スキップ命令などの特別な命令を必要とすることなしに、処理を必要としないステージでの余計な電力消費を抑制できるようになるものである。
【００７９】
なお、上述した実施例は、あくまでも一例として広く理解されるべきであり、本発明を限定するものではない。すなわち、プロセッサシステムとしては、多様なステージ数のパイプラインプロセッサに適用できるのは勿論であり、本実施例とは異なるハードウェアリソースを有するパイプラインプロセッサ、および、ハードウェアリソースの配置が異なるパイプラインプロセッサに対しても、同様に適用することが可能である。たとえば、図１および図１３に示したようなスキップ経路４１に限らず、スキップ経路４１としては多様な配置が可能である。その一例としては、第２のステージＳ２内のＡＤＤ／ＳＵＢ演算器１１の出力をパイプラインレジスタ３１ｈへスキップさせるようなスキップ経路の配置も可能である。
【００８０】
また、パイプラインプロセッサがパイプライン動作により実行する命令列に関しても、実施例に限定されるものではない。
【００８１】
その他、本願発明は、上記（各）実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。さらに、上記（各）実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。たとえば、（各）実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題（の少なくとも１つ）が解決でき、発明の効果の欄で述べられている効果（の少なくとも１つ）が得られる場合には、その構成要件が削除された構成が発明として抽出され得る。
【符号の説明】
【００８２】
Ｓ１〜Ｓ６…第１〜第６のパイプラインステージ、ＧＰＲ…ジェネラル・パーパス・レジスタ、１１…ＡＤＤ／ＳＵＢ演算器、１２…ＣＭＰ演算器、１３…ＭＵＬ演算器、１４…ＬＯＧＩＣ演算器、１５…ＳＨＦＴ演算器、１６…ＣＬＩＰ演算器、１７…データメモリ、３１ａ〜３１ｌ…パイプラインレジスタ、３２，３２ａ〜３２ｌ…ホールド回路、４１…スキップ経路、５１…スキップコントローラ。
【図１】
2010198128.tif 000006
【図２】
2010198128.tif 000007
【図３】
2010198128.tif 000008
【図４】
2010198128.tif 000009
【図５】
2010198128.tif 000010
【図６】
2010198128.tif 000011
【図７】
2010198128.tif 000012
【図８】
2010198128.tif 000013
【図９】
2010198128.tif 000014
【図１０】
2010198128.tif 000015
【図１１】
2010198128.tif 000016
【図１２】
2010198128.tif 000017
【図１３】
2010198128.tif 000018
【図１４】
2010198128.tif 000019
【図１５】
2010198128.tif 000020
【図１６】
2010198128.tif 000021
【図１７】
2010198128.tif 000022