(57)【要約】【課題】１命令の動作処理サイクル数を可変できるようにして、ＣＰＵの動作クロック周波数を変更する場合に各周波数で最適な処理サイクルを実現する。【解決手段】多段配置された複数の演算器31，34，37と、演算器31，34夫々に対して設けられ、各演算結果を１サイクル遅延させる遅延器32，35と、演算器31，34夫々に対して設けられ、各演算結果と、１サイクル遅延させた演算結果との一方を選択して次段の演算器34，37に出力するセレクタ33，36とを含む演算部28を備え、セレクタ33，36での選択状態を制御することで当該演算部により複数の演算を集約して処理する。【選択図】図３
2014160393.tif 000002
【特許請求の範囲】
【請求項１】
多段配置された複数の演算器と、
上記複数の演算器中の最終段を除くそれぞれに対して設けられ、演算器の演算結果を１サイクル遅延させる遅延器と、
上記複数の演算器中の最終段を除くそれぞれに対して設けられ、演算器の演算結果と、上記遅延器で１サイクル遅延させた演算結果との一方を選択して次段の演算器に出力する選択手段と
を含む演算部を備え、上記選択手段での選択状態を制御することで、当該演算部により複数の演算を集約して処理することを特徴とするマイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、拡張命令をパイプライン処理で実行する場合に好適なマイクロプロセッサに関する。
【背景技術】
【０００２】
従来のマイクロプロセッサでは、四則演算や論理演算を１命令で処理していた。近年のマイクロプロセッサでは、複数の演算を集約して１命令で処理することができるようになっている。これにより、１サイクルで実行できる処理量を増やすことで、全体の処理サイクル数を少なくできる。ただし、１命令を１サイクルで処理できない動作周波数の場合、すなわち演算回路の構成によって１サイクルの周期内に処理時間が収まらない場合などには、図１１に示す如くプロセッサの実行サイクルを一時的にストールさせて、複数サイクルで処理を行なう。
【０００３】
図１１において、図１１（Ａ）はＣＰＵの動作クロックであり、図１１（Ｂ）に示すように１命令を、命令フェッチステージ「ＩＦ」、命令デコードステージ「ＩＤ」、命令実行ステージ「ＥＸ１」〜「ＥＸ３」、メモリアクセスステージ「ＭＥＭ」、及びレジスタバックステージ「ＷＢ」の計７ステージ、７サイクルで実行している場合を例示する。
【０００４】
全ステージ中、上記命令実行ステージ「ＥＸ１」〜「ＥＸ３」の３サイクルが命令を実行するステージであり、図１１（Ｃ）〜図１１（Ｅ）に示すように、レジスタｒ１、ｒ２、ｒ３にロードされている値により演算を実行し、その演算結果をレジスタｒ３に格納している。
【０００５】
プロセッサの動作周波数を変化させて使用するような電子機器の場合、最高周波数で使用する場合を想定し、最高周波数に合わせて実行サイクル数を決定する必要がある。
【０００６】
図１２（Ａ）は、上記図１１（Ａ）で示した動作クロックよりも大幅に低い周波数のＣＰＵクロックを示し、図１２（Ｂ）は、そのクロックでパイプライン処理による演算を行なう場合を示す。周波数に反比例して、上記図１１（Ａ）で示した１サイクル時間ｔ11より長い１サイクル時間ｔ12となるため、演算回路において例えば上記図１１では３サイクル時間必要であった演算処理が２サイクルで実行できる場合であっても、ＣＰＵの動作制御上、上述した如く３サイクルをかけて処理を実行することになる。
【０００７】
このように、プロセッサが低いクロック周波数で動作する場合、実際には少ないサイクル数で処理できる時間があっても、高いクロック周波数で動作する場合と同じサイクル数で処理しなければならず、結果的に処理サイクル数が増加して処理速度が低下する。
【０００８】
ところで、上記不具合とは目的が異なるが、複雑度を増大させることなく、信頼性を向上可能なパイプラインプロセッサを提供するための技術が提案されている。（例えば、特許文献１）
この特許技術では、命令実行サイクル数が固定であるコア命令及びユーザにより定義された拡張命令のいずれかを選択的に発行する命令デコーダユニットと、発行されたコア命令を実行するコア命令時ユニットと、発行された拡張命令を実行する拡張命令実行ユニットと、コア命令実行ユニット及び拡張命令実行ユニットのそれぞれの命令実行結果を一時的に記憶して、コア命令及び拡張命令の発行された順に命令実行結果を並べ替えて出力するリオーダバッファとを備えている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００７−０３４７３１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上記特許文献に記載された技術は、命令実行サイクル数が固定であるコア命令と、ユーザにより定義された拡張命令とを元のプログラムの発行順に従って出力できる。しかしながら、１命令の動作処理サイクル数を動作周波数によって変更することはできない。
【００１１】
本発明は上記のような実情に鑑みてなされたもので、その目的とするところは、１命令の動作処理サイクル数を可変できるようにして、ＣＰＵの動作クロック周波数を変更する場合に各周波数で最適な処理サイクルを実現することが可能なマイクロプロセッサを提供することにある。
【課題を解決するための手段】
【００１２】
本発明の一態様は、多段配置された複数の演算器と、上記複数の演算器中の最終段を除くそれぞれに対して設けられ、演算器の演算結果を１サイクル遅延させる遅延器と、上記複数の演算器中の最終段を除くそれぞれに対して設けられ、演算器の演算結果と、上記遅延器で１サイクル遅延させた演算結果との一方を選択して次段の演算器に出力する選択手段とを含む演算部を備え、上記選択手段での選択状態を制御することで、当該演算部により複数の演算を集約して処理することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、１命令の動作処理サイクル数を可変できるようにして、ＣＰＵの動作クロック周波数を変更する場合に各周波数で最適な処理サイクルを実現することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態に係るマイクロプロセッサのハードウェア構成を示すブロック図。
【図２】同実施形態に係るＣＰＵ内の命令を処理するためのブロック構成を示す図。
【図３】同実施形態に係るＣＰＵ内の第２算術演算ユニット部の構成を示すブロック図。
【図４】同実施形態に係る第２算術演算ユニット部でのセレクト信号Ａ，Ｂの各“Ｌ”レベルと“Ｈ”レベルに応じた処理内容を示す図。
【図５】同実施形態に係る第１のプログラム例を示す図。
【図６】同実施形態に係る第１のプログラム実行時の第２算術演算ユニット部の処理内容を示すタイミングチャート。
【図７】同実施形態に係る第２のプログラム例を示す図。
【図８】同実施形態に係る第２のプログラム実行時の第２算術演算ユニット部の処理内容を示すタイミングチャート。
【図９】同実施形態に係る第３のプログラム例を示す図。
【図１０】同実施形態に係る第３のプログラム実行時の第２算術演算ユニット部の処理内容を示すタイミングチャート。
【図１１】一般的なマイクロプロセッサが複数サイクルで命令を実行する際の（動作クロックの周波数が高い場合の）タイミングチャート。
【図１２】一般的なマイクロプロセッサが複数サイクルで命令を実行する際の（動作クロックの周波数が低い場合の）タイミングチャート。
【発明を実施するための形態】
【００１５】
以下、本発明の一実施形態に係るマイクロプロセッサについて図面を参照して説明する。  
図１は、同実施形態に係るマイクロプロセッサ１０の機能回路構成を示すブロック図である。同図で、処理を実行するマイクロプロセッサであるＣＰＵ１１が、命令コードを記憶したプログラムメモリであるＲＯＭ１２、及びワークメモリであるＲＡＭ１３と接続される。
【００１６】
ＣＰＵ１１には、システムクロックＣＬＫとリセット信号ＲＥＳＥＴとが外部から与えられる。またＣＰＵ１１は、ＲＯＭ１２にチップセレクト信号ＲＯＭＣＳを出力すると共に、ＲＯＭアドレスバスを介してＲＯＭ１２のアドレスを指定することで、当該アドレスに格納されていたプログラム命令をＲＯＭデータバスを介して読出す。
【００１７】
さらにＣＰＵ１１は、ＲＡＭ１３に対してチップセレクト信号ＲＡＭＣＳ、読出し信号ＲＡＭＯＥ、書込み信号ＲＡＭＷＥを出力すると共に、ＲＡＭアドレスバスを介してアドレスを指定し、当該アドレスへのデータの書込みと読出しとをＲＡＭデータバスを介して行なう。
【００１８】
図２は、上記ＣＰＵ１１内でプログラムを実行するためのブロック構成を示す図である。同図で、ＲＯＭ１２からＲＯＭデータバスを介して読出されてきた命令は、命令レジスタ（ＩＲ）部２１に入力されて保持される。
【００１９】
命令レジスタ部２１の保持する命令は、命令デコーダ（ＩＤ）部２２が読出してデコードし、デコード結果をＲＯＭ制御部２３へ出力する共に、デコード結果に応じて適宜ＲＡＭ制御部２４、ロードメモリデータレジスタ（ＬＭＤＲ）部２５、レジスタファイル（ＲＦ）部２６、第１算術演算ユニット（ＡＬＵ１）部２７、及び第２算術演算ユニット（ＡＬＵ２）部２８をそれぞれ制御する。  
ＲＯＭ制御部２３は、上記ＲＯＭ１２にチップセレクト信号とＲＯＭアドレスとを出力する。
【００２０】
ＲＡＭ制御部２４は、ＲＡＭアドレスバスを介して上記ＲＡＭ１３のアドレス指定を行なうと共に、ＲＡＭ１３に対して上記チップセレクト信号ＲＡＭＣＳ、読出し信号ＲＡＭＯＥ、書込み信号ＲＡＭＷＥを出力する。
【００２１】
上記ロードメモリデータレジスタ部２５及びレジスタファイル部２６は、ＲＡＭデータバスを介して上記ＲＡＭ１３と接続され、保持しているデータをＲＡＭ１３へ出力し、またＲＡＭ１３から出力されてきたデータを保持する。
【００２２】
第１算術演算ユニット部２７は、命令デコーダ部２２からの制御に基づいてレジスタファイル部２６とデータを送受しながら、通常の四則演算及び論理演算等、指定された演算を実行し、演算結果をレジスタファイル部２６へ出力する。
【００２３】
第２算術演算ユニット部２８は、命令デコーダ部２２からの制御に基づいてレジスタファイル部２６とデータを送受しながら、拡張命令によって追加された演算を実行し、演算結果をレジスタファイル部２６へ出力する。
【００２４】
次いで図３により上記第２算術演算ユニット部２８内の具体的な構成例について説明する。ここでは、第２算術演算ユニット部２８が、演算  
「(ａ−ｂ)＊(ａ−ｂ)＋ｃ」              …(1)   
を行なう回路である場合を例にとって説明する。  
上記の演算を行なう場合、必要な演算器は減算器、乗算器、及び加算器であるため、図３に示す如くこれら減算器（ＳＵＢ）３１、乗算器（ＭＵＬ）３４、及び加算器（ＡＤＤ）３７を多段配置する。
【００２５】
上記減算器３１は、上記レジスタファイル部２６から上記（１）式の変数ａ，ｂに相当する数値を入力し、減算「ａ−ｂ」を実行する。そして得られた差Ｔａを、テンポラリレジスタ（ＴｅｍｐＲｅｇ）３２及びセレクタ（Ｓｅｌ）３３へ出力する。テンポラリレジスタ３２は、遅延器として機能し、１サイクル分保持した内容Ｔａを上記セレクタ３３へ読出す。
【００２６】
上記セレクタ３３は、上記レジスタファイル部２６から与えられるセレクト信号Ａに従い、減算器３１が出力する差Ｔａとテンポラリレジスタ３２が保持した内容Ｔａのいずれか一方を選択して、次段の上記乗算器３４へ並列に出力する。
【００２７】
上記乗算器３４は、上記セレクタ３３からの出力により乗算「Ｔａ＊Ｔａ」を実行する。そして得られた積Ｔｂを、テンポラリレジスタ（ＴｅｍｐＲｅｇ）３５及びセレクタ（Ｓｅｌ）３６へ出力する。テンポラリレジスタ３５は、遅延器として機能し、１サイクル分保持した内容Ｔｂを上記セレクタ３６へ読出す。
【００２８】
上記セレクタ３６は、上記レジスタファイル部２６から与えられるセレクト信号Ｂに従い、乗算器３４が出力する積Ｔｂとテンポラリレジスタ３５が保持した内容Ｔｂのいずれか一方を選択して、次段の上記加算器３７に出力する。
【００２９】
上記加算器３７は、上記レジスタファイル部２６から上記（１）式の変数ｃに相当する数値を入力し、上記セレクタ３６からの出力Ｔｂと合わせて上記（１）式に相当する演算「Ｔｂ＋ｃ」を実行する。そして得られた演算結果Ｐａを、バイパスＡ出力として直接出力する一方で、パイプラインレジスタ（ＰｉｐｅＲｅｇ）３８に出力する。
【００３０】
パイプラインレジスタ３８は、パイプライン処理の命令実行ステージ（上記図１１のＥＸ１〜３）で計算された結果を、次のレジスタライトバックステージ（上記図１１のＷＢ）で保持して遅延させるためのレジスタであり、加算器３７の出力する演算結果Ｐａを保持した後、バイパスＢ出力として直接出力する一方で、同様の構成となるパイプラインレジスタ（ＰｉｐｅＲｅｇ）３９に出力する。
【００３１】
パイプラインレジスタ３９は、上記パイプラインレジスタ３８の出力する演算結果Ｐａを保持した後、上記レジスタファイル部２６に出力する。
【００３２】
上記バイパスＡ，Ｂの各出力は、レジスタライトバックステージ（上記図１１のＷＢ）でのパイプラインレジスタ３８，３９の書込み後では次命令で計算結果を使用することができないために、レジスタ書込み前の計算結果データをバイパス出力させるものであり、バイパスＡ出力で次ぎ命令、バイパスＢ出力で次々命令の命令実行ステージ（上記図１１のＥＸ）で使用できるようにしている。
【００３３】
次に上記実施形態の動作として、マイクロプロセッサ１０の特に第２算術演算ユニット部２８内での動作について説明する。  
図４は、上記第２算術演算ユニット部２８における、セレクト信号Ａ，Ｂの各“Ｌ”レベルと“Ｈ”レベルに応じた処理内容を示す。セレクタ３３は、セレクト信号Ａが“Ｌ”レベルであれば減算器３１の出力Ｔａを選択し、“Ｈ”レベルであればテンポラリレジスタ３２で１サイクル遅延された演算結果Ｔａを選択して乗算器３４に出力する。
【００３４】
同様に、セレクタ３６はセレクト信号Ｂが“Ｌ”レベルであれば乗算器３４の出力Ｔｂを選択し、“Ｈ”レベルであればテンポラリレジスタ３５で１サイクル遅延された演算結果Ｔｂを選択して加算器３７に出力する。  
したがって、図４に示すように上記セレクト信号Ａ，Ｂの“Ｌ”／“Ｈ”を切り換えることにより、この第２算術演算ユニット部２８での処理サイクル数を「１」〜「３」の間で変化させることができる。
【００３５】
以下、処理サイクル数を可変制御する場合の動作例について説明する。  
（動作例１）  
図５は、第１のプログラム例を示す。  
同プログラム中、「ＳＥＬＡＨ」は上記セレクタ３３へのセレクト信号Ａを“Ｈ”レベルにする命令、「ＳＥＬＢＨ」は上記セレクタ３６へのセレクト信号Ｂを“Ｈ”レベルにする命令である。
【００３６】
「ＬＷ」命令は、レジスタへの直値ロード命令であり、ここではレジスタｒ１，ｒ２，ｒ３にそれぞれ「２５６」「１２８」「２５６０」の値をロードする。  
「ＺＺＺ」命令は、追加命令で、上記第２算術演算ユニット部２８で実行する命令を示す。「ＺＺＺ  ｒ３，ｒ１，ｒ２，ｒ３」である場合、上記（１）式に代入して  
「r3＝(r1−r2)＊(r1−r2)＋r3」  
なる演算を実行する。
【００３７】
「ＭＵＬ」命令は、単純な乗算命令であり、上記第１算術演算ユニット部２７で実行する。「ＭＵＬ  ｒ１，ｒ２，ｒ３」である場合、「r1＝r2＊r3」を実行する。
【００３８】
このプログラムの場合、上述した如くセレクト信号Ａが“Ｈ”レベル、セレクト信号Ｂが“Ｈ”レベルと指定されているため、上記図４で示したように「ＺＺＺ」命令の命令実行ステージ「ＥＸ」は３サイクルとなる。
【００３９】
図６は、この第１のプログラム実行時の第２算術演算ユニット部２８内での処理内容を示すタイミングチャートである。図６（Ｂ１）で示す第１の命令実行ステージ「ＥＸ１」で減算器３１が図６（Ｃ），（Ｄ）に示すレジスタｒ１，ｒ２の値「０ｘ０００００１００（＝２５６）」「０ｘ００００００８０（＝１２８）」を入力し、減算「ｒ１−ｒ２」を実行する。その差「０ｘ００００００８０」は図６（Ｆ）に示すようにテンポラリレジスタ３２に保持される。
【００４０】
続く第２の命令実行ステージ「ＥＸ２」で、セレクト信号Ａが“Ｈ”レベルであるためにセレクタ３３がテンポラリレジスタ３２に保持されているデータを選択して乗算器３４に出力する。乗算器３４では、与えられたデータによる乗算を行ない、その積「０ｘ００００４０００」が図６（Ｇ）に示すようにテンポラリレジスタ３５に保持される。
【００４１】
そして第３の命令実行ステージ「ＥＸ３」で、セレクト信号Ｂが“Ｈ”レベルであるためにセレクタ３６がテンポラリレジスタ３５に保持されているデータを選択して加算器３７に出力する。加算器３７では、与えられたデータとレジスタファイル部２６からのｒ３の値「０ｘ０００００ａ００（＝２５６０）」とによる加算を行ない、その和「０ｘ００００４ａ００」がパイプラインレジスタ３８，３９を介して、レジスタバックステージ「ＷＢ」でレジスタｒ３に保存されると共に、図６（Ｈ）に示すようにバイパスＡ出力として上記第１算術演算ユニット部２７に送出され、図６（Ｂ２）に示すように次命令の命令実行ステージ「ＥＸ１」での演算処理に使用される。  
このように３サイクルの命令実行ステージ「ＥＸ１」〜「ＥＸ３」によって、追加命令である「ＺＺＺ」命令を実行し、図６（Ｂ２）に示すように次命令の命令実行ステージ「ＩＤ」が２ステージ停止される。
【００４２】
（動作例２）  
図７は、第２のプログラム例を示す。  
同プログラム中、「ＳＥＬＡＬ」は上記セレクタ３３へのセレクト信号Ａを“Ｌ”レベルにする命令、「ＳＥＬＢＨ」は上記セレクタ３６へのセレクト信号Ｂを“Ｈ”レベルにする命令である。
【００４３】
「ＬＷ」命令以下は上記図５の第１のプログラム例と同様である。
【００４４】
このプログラムの場合、上述した如くセレクト信号Ａが“Ｌ”レベル、セレクト信号Ｂが“Ｈ”レベルと指定されているため、上記図４で示したように「ＺＺＺ」命令の命令実行ステージ「ＥＸ」は２サイクルとなる。
【００４５】
図８は、この第２のプログラム実行時の第２算術演算ユニット部２８内での処理内容を示すタイミングチャートである。図８（Ｂ１）で示す第１の命令実行ステージ「ＥＸ１」で減算器３１が図８（Ｃ），（Ｄ）に示すレジスタｒ１，ｒ２の値「０ｘ０００００１００（＝２５６）」「０ｘ００００００８０（＝１２８）」を入力し、減算「ｒ１−ｒ２」を実行する。その差「０ｘ００００００８０」は、セレクト信号Ａが“Ｌ”レベルであるためにセレクタ３３が直接選択して乗算器３４に出力する。乗算器３４では、与えられたデータによる乗算を行ない、その積「０ｘ００００４０００」が図８（Ｇ）に示すようにテンポラリレジスタ３５に保持される。
【００４６】
続く第２の命令実行ステージ「ＥＸ２」で、セレクト信号Ｂが“Ｈ”レベルであるためにセレクタ３６がテンポラリレジスタ３５に保持されているデータを選択して加算器３７に出力する。加算器３７では、与えられたデータとレジスタファイル部２６からのｒ３の値「０ｘ０００００ａ００（＝２５６０）」とによる加算を行ない、その和「０ｘ００００４ａ００」がパイプラインレジスタ３８，３９を介して、レジスタバックステージ「ＷＢ」でレジスタｒ３に保存されると共に、図８（Ｈ）に示すようにバイパスＡ出力として上記第１算術演算ユニット部２７に送出され、図８（Ｂ２）に示すように次命令の命令実行ステージ「ＥＸ１」での演算処理に使用される。  
このように２サイクルの命令実行ステージ「ＥＸ１」，「ＥＸ２」によって、追加命令である「ＺＺＺ」命令を実行し、図８（Ｂ２）に示すように次命令の命令実行ステージ「ＩＤ」が１ステージ停止される。
【００４７】
（動作例３）  
図９は、第３のプログラム例を示す。  
同プログラム中、「ＳＥＬＡＬ」は上記セレクタ３３へのセレクト信号Ａを“Ｌ”レベルにする命令、「ＳＥＬＢＬ」は上記セレクタ３６へのセレクト信号Ｂを“Ｌ”レベルにする命令である。
【００４８】
「ＬＷ」命令以下は上記図５の第１のプログラム例と同様である。
【００４９】
このプログラムの場合、上述した如くセレクト信号Ａ，Ｂが共に“Ｌ”レベルと指定されているため、上記図４で示したように「ＺＺＺ」命令の命令実行ステージ「ＥＸ」は１サイクルとなる。
【００５０】
図１０は、この第３のプログラム実行時の第２算術演算ユニット部２８内での処理内容を示すタイミングチャートである。図１０（Ｂ１）で示す第１の命令実行ステージ「ＥＸ１」で減算器３１が図１０（Ｃ），（Ｄ）に示すレジスタｒ１，ｒ２の値「０ｘ０００００１００（＝２５６）」「０ｘ００００００８０（＝１２８）」を入力し、減算「ｒ１−ｒ２」を実行する。その差「０ｘ００００００８０」は、セレクト信号Ａが“Ｌ”レベルであるためにセレクタ３３が直接選択して乗算器３４に出力する。乗算器３４では、与えられたデータによる乗算を行ない、その積「０ｘ００００４０００」がセレクタ３６に直接出力される。
【００５１】
セレクト信号Ｂが“Ｌ”レベルであるためにセレクタ３６が乗算器３４の出力を選択して加算器３７に出力する。加算器３７では、与えられたデータとレジスタファイル部２６からのｒ３の値「０ｘ０００００ａ００（＝２５６０）」とによる加算を行ない、その和「０ｘ００００４ａ００」がパイプラインレジスタ３８，３９を介して、レジスタバックステージ「ＷＢ」でレジスタｒ３に保存されると共に、図１０（Ｈ）に示すようにバイパスＡ出力として上記第１算術演算ユニット部２７に送出され、図１０（Ｂ２）に示すように次命令の命令実行ステージ「ＥＸ１」での演算処理に使用される。  
このように１サイクルの命令実行ステージ「ＥＸ１」のみで、追加命令である「ＺＺＺ」命令を実行しているため、図１０（Ｂ２）に示すように次命令での停止は行われない。
【００５２】
以上詳述した如く本実施形態によれば、第２算術演算ユニット部２８で実行する、追加命令に対する動作処理サイクル数を可変できるようにして、ＣＰＵの動作クロック周波数を変更する場合に各周波数で最適な処理サイクルを実現することが可能となる。
【００５３】
なお上記実施形態では、第２算術演算ユニット部２８が特定の演算  
「(ａ−ｂ)＊(ａ−ｂ)＋ｃ」  
を実行する専用の算術演算ユニット部であるものとして説明したが、単純な四則演算や論理演算などを行なう第１算術演算ユニット部２７とは別に設けた第２算術演算ユニット部２８が実行する特定の演算に関して、本発明ではその内容を限定するものではなく、複数の演算器を組み合わせて実行するものであればもいずれにも適用可能であることは勿論である。
【００５４】
その他、本発明は上述した実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上述した実施形態で実行される機能は可能な限り適宜組み合わせて実施しても良い。上述した実施形態には種々の段階が含まれており、開示される複数の構成要件による適宜の組み合せにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、効果が得られるのであれば、この構成要件が削除された構成が発明として抽出され得る。
【００５５】
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。  
請求項１記載の発明は、多段配置された複数の演算器と、上記複数の演算器中の最終段を除くそれぞれに対して設けられ、演算器の演算結果を１サイクル遅延させる遅延器と、上記複数の演算器中の最終段を除くそれぞれに対して設けられ、演算器の演算結果と、上記遅延器で１サイクル遅延させた演算結果との一方を選択して次段の演算器に出力する選択手段とを含む演算部を備え、上記選択手段での選択状態を制御することで、当該演算部により複数の演算を集約して処理することを特徴とする。
【符号の説明】
【００５６】
１０…マイクロプロセッサ、１１…ＣＰＵ、１２…ＲＯＭ、１３…ＲＡＭ、２１…命令レジスタ（ＩＲ）部、２２…命令デコーダ（ＩＤ）部、２３…ＲＯＭ制御部、２４…ＲＡＭ制御部、２５…ロードメモリデータレジスタ（ＬＭＤＲ）部、２６…レジスタファイル（ＲＦ）部、２７…第１算術演算ユニット（ＡＬＵ１）部、２８…第２算術演算ユニット（ＡＬＵ２）部、３１…減算器（ＳＵＢ）、３２…テンポラリレジスタ（ＴｅｍｐＲｅｇ）、３３…セレクタ（Ｓｅｌ）、３４…乗算器（ＭＵＬ）、３５…テンポラリレジスタ（ＴｅｍｐＲｅｇ）、３６…セレクタ（Ｓｅｌ）、３７…加算器（ＡＤＤ）、３８，３９…パイプラインレジスタ（ＰｉｐｅＲｅｇ）。
【図１】
2014160393.tif 000003
【図２】
2014160393.tif 000004
【図３】
2014160393.tif 000005
【図４】
2014160393.tif 000006
【図５】
2014160393.tif 000007
【図６】
2014160393.tif 000008
【図７】
2014160393.tif 000009
【図８】
2014160393.tif 000010
【図９】
2014160393.tif 000011
【図１０】
2014160393.tif 000012
【図１１】
2014160393.tif 000013
【図１２】
2014160393.tif 000014
【手続補正書】
【提出日】平成26年3月4日(2014.3.4)
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、拡張命令をパイプライン処理で実行する場合に好適なマイクロプロセッサ及び演算処理方法に関する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
本発明は上記のような実情に鑑みてなされたもので、その目的とするところは、１命令の動作処理サイクル数を可変できるようにして、ＣＰＵの動作クロック周波数を変更する場合に各周波数で最適な処理サイクルを実現することが可能なマイクロプロセッサ及び演算処理方法を提供することにある。
【手続補正４】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
多段配置された複数の演算器と、
上記複数の演算器中の最終段を除くそれぞれに対して設けられ、演算器の演算結果を１サイクル遅延させる遅延器と、
上記複数の演算器中の最終段を除くそれぞれに対して設けられ、演算器の演算結果と、上記遅延器で１サイクル遅延させた演算結果との一方を選択して次段の演算器に出力する選択手段と
を含む演算部を備え、上記選択手段での選択状態を制御することで、当該演算部により複数の演算を集約して処理することを特徴とするマイクロプロセッサ。
【請求項２】
上記演算部は、複数の演算を集約して１命令で処理を行なうことを特徴とする請求項１に記載のマイクロプロセッサ。
【請求項３】
上記演算部は、上記選択手段での選択状態を制御することで、１命令の動作処理サイクルを可変することを特徴とする請求項２に記載のマイクロプロセッサ。
【請求項４】
上記選択手段は、上記マイクロプロセッサの動作周波数が高速の場合、１命令の動作処理サイクルが増加するように選択状態を制御することを特徴とする請求項３に記載のマイクロプロセッサ。
【請求項５】
上記選択手段は、上記マイクロプロセッサの動作周波数が低速の場合、１命令の動作処理サイクルが減少するように選択状態を制御することを特徴とする請求項３に記載のマイクロプロセッサ。
【請求項６】
マイクロプロセッサの演算処理方法であって、
多段配置された複数の演算器の演算結果に対して、該演算結果を１サイクル遅延させた第１の演算結果と、遅延させない第２の演算結果を生成し、上記第１の演算結果と上記第２の演算結果の一方を選択して、次段の演算器に入力することで、複数の演算を集約して処理することを特徴とする演算処理方法。