JP3669841B2 - マイクロプロセッサ - Google Patents

マイクロプロセッサ Download PDF

Info

Publication number
JP3669841B2
JP3669841B2 JP17123498A JP17123498A JP3669841B2 JP 3669841 B2 JP3669841 B2 JP 3669841B2 JP 17123498 A JP17123498 A JP 17123498A JP 17123498 A JP17123498 A JP 17123498A JP 3669841 B2 JP3669841 B2 JP 3669841B2
Authority
JP
Japan
Prior art keywords
stage
data
memory
output
register file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP17123498A
Other languages
English (en)
Other versions
JP2000010780A (ja
Inventor
淳 木内
春雄 上牧
孝樹 野口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Technology Corp
Original Assignee
Renesas Technology Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP17123498A priority Critical patent/JP3669841B2/ja
Publication of JP2000010780A publication Critical patent/JP2000010780A/ja
Application granted granted Critical
Publication of JP3669841B2 publication Critical patent/JP3669841B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Complex Calculations (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、パイプラインで乗算若しくは積和演算を実行可能なマイクロプロセッサに係り、例えばディジタル信号処理等を実行可能なRISCプロセッサ、マイクロコンピュータ、若しくはデータプロセッサ等に適用して有効な技術に関するものである。
【0002】
【従来の技術】
従来よりディジタル信号処理を実現するのに適したプログラマブルコントロ−ラとしてディジタル・シグナル・プロセッサ(DSP)が用いられてきたが、近年コンパイル効率が高く、性能向上が容易でかつ安価な組み込み用途向けのRISC型マイクロコントロ−ラが登場した。このRISC型マイクロコントローラは、プログラムコ−ド効率を性能でカバ−することによって、換言すれば、処理の実行ステップ数は多くても動作速度を速くすることによって、従来はDSPでしか実現できなかったディジタル信号処理の分野にも適用されるようになってきている。このRISC型マイクロコントローラにおいて、ディジタル信号処理を汎用の算術論理演算器を用いて行う場合には処理速度に限界が有る。この処理効率の点において、DSPと同様に乗算器や積和演算器をハ−ドウェアで搭載することにより、飛躍的に改善された例も出てきている。その具体例としては、日経エレクトロニクス1995年5月8日号(第111〜121ペ−ジ)記載のプロセッサがある。通常の算術論理演算器と同じように、乗算器または積和演算器を備えることにより、ディジタル信号処理の基本であるフィルタリング処理の積和動作を、DSPに匹敵する効率及び性能で実現することができる。
【0003】
フィルタリング処理を実行する場合、積和演算を実行する毎に乗数、被乗数デ−タをメモリから供給する必要がある。図13にRISC型マイクロコントロ−ラの代表的なパイプライン構造を概略的に示す。図中、IFは命令フェッチステ−ジ、IDは命令デコ−ドステージ、EXは演算実行ステ−ジ、MAはメモリアクセス(データフェッチ)ステ−ジ、WBはデ−タのライトバックステ−ジを表している。IFステ−ジでは、プログラムカウンタで指定されたアドレスから命令コ−ドデ−タを読み出し、フェッチする。IDステ−ジでは、フェッチした命令コ−ドをデコ−ド(解読)し、動作に必要な制御信号を生成する。EXステ−ジでは、制御信号によって指示された内容に基づいて、演算動作を実行する。制御信号によって指示された動作がメモリの読み出し又は書き込動作の場合は、アドレス生成及びアドレスバスへのアドレス出力動作を行う。MAステ−ジでは、制御信号によって指示された動作がメモリの読み出し又は書き込動作の場合に、メモリアクセス動作を行う。WBステ−ジでは、動作結果を指定されたデスティネ−ションに入力する動作を行う。演算動作の場合は、WBステージで演算結果を格納し、メモリからのデ−タ読み出しやレジスタ間のデ−タ転送動作では、転送されてきたデ−タをWBステージで格納する。
【0004】
上記従来技術では、乗算や積和演算を2.5サイクルのレイテンシ−で実行することができる。即ち、乗数と被乗数が入力された後、乗算結果を得るのに、マイクロプロセッサの動作基準クロック信号の2.5サイクル後に演算結果を得ることができる。更に、パイプライン構造若しくはパイプライン処理を利用することによって、1回の乗算又は積和演算を1サイクルのスループットで実行可能になっている。すなわち、積和演算をEXステージとMAステージで行うように、積和演算器を配置する。換言すれば、図14に示すように積和演算器をEXとMAステ−ジの2段のパイプライン構成にして、サイクルM1及びM2で1回の積和演算を行う。ディジタル信号処理などにおける積和演算は繰返し行なわれ、前のパイプラインによるM1,M2の演算結果を次のパイプラインによる演算処理のソ−スデータとして使用する。そのためには、所謂フォワーディング若しくはバイパシング技術を利用すればよい。換言すれば、MAステージのサイクルM2の演算結果がWBステージでレジスタファイルに書き戻されるのを待たずに、バイパス経路からマルチプレクサを介して次のパイプラインのEXステージにフィ−ドバックすればよい。これによって、1回の乗算又は積和演算を見かけ上、1サイクルのスループットで実行可能になる。
【0005】
【発明が解決しようとする課題】
しかしながら、RISC型マイクロコントロ−ラは、データ処理動作動作を上記5段パイプラインを一単位として逐次実行していくが、1回の積和演算処理を行うためにはただ単に積和演算を繰り返せばいいわけではなく、〔1〕被乗数デ−タをフェッチ、〔2〕乗数デ−タをフェッチ、〔3〕積和演算を実行、という3ステップの動作が必要となる。図15に必要なデ−タの供給も考慮した場合の1回の積和演算処理の動作を示す。上記従来技術の1サイクル・スループット性能は、全てのソ−スデ−タがあらかじめレジスタファイルに格納されていて、初めて実現出来る。しかし実際にはソ−スデ−タをレジスタファイルにフェッチする動作も1デ−タ毎に有限のサイクル数が必要になるため、フォワ−ディング機能を利用しても結局図15に示すように実行終了まで8サイクルのレイテンシ−と、4サイクルのスル−プットとなる。即ち、図15に従えば、第1ステップのMAステージでメモリアクセスを行って乗数データを読み出し、読み出した乗数データをWBステージでレジスタファイルに書き込む。このWBステージに並行して、第2ステップでは、被乗数データがメモリから読み出される。第3ステップのEXステージには、前記第2ステップのMAステージで読み出された被乗数データがバイパス(フォワーディング)され、且つ、第1ステップで得られた乗数データがレジスタファイルから与えられる。これによって第3ステップのEXステージ(M1サイクル)及びMAステージ(M2サイクル)にて一つの積和演算が行なわれ、演算結果は、第3ステップのWBステージでレジスタファイルに書き戻される。
【0006】
図15から明らかな様に、第3ステップにおけるIDステージの後、乗算若しくは積和演算に必要な2つのソースデータを取得するには、フォワーディング構造を用いても2サイクル必要になる。しかも、乗算若しくは積和演算は、EXステージとMAステージで行なわれる。このため、第3ステップに代表的に示されるように、IDステージの後、EXステージに2つのソースデータがロードされるまでに、1サイクルのオ−バヘッド(nopサイクル)が生じてしまう。即ち、パイプラインストールを生じてしまう。その結果、積和演算処理のスル−プットは、積和演算を繰り返し実行させるためのル−プ制御に要するオ−バヘッドを考慮しないとしても、1回当たり命令ステップ数(3ステップ)を上回る4サイクル必要になってしまうことが本発明者によって明らかにされた。
【0007】
また、図15の例ではフォワーディング機能により、前の命令の実行結果に依存する演算命令の実行に際しても、前の命令がWBステ−ジまで完全に終了していなくてもソ−スオペランドとして利用可能になるため、図15の第3ステップではオ−バヘッドが1サイクルだけで済んでいるが、フォワ−ディング機能を簡略化すると、ソ−スデ−タは必ず前もってWBステ−ジまで実行を完了していなければならないため、オ−バヘッドは図16に示すように2サイクルになる。しかしどのように強力なフォワ−ディング機構を用意しても、EXステージ及びMAステージで積和演算若しくは乗算を行う従来のパイプライン構造では、図15に示されている1サイクルのオ−バヘッド(nopサイクル)を解消することは不可能である。これがRISC型プロセッサにおけるディジタル信号処理性能の向上に大きな障害になっていることが本発明者によって明らかにされた。
【0008】
また、本発明者の検討によれば、見掛け上、1サイクルのオ−バヘッドを解消する方法として、図17に示すように2回分の処理をインライン展開して読み出したデ−タが直ちに演算命令のソ−スに使われないようにする方法がある。しかしこの手法では2回分のデ−タを保持する必要があるため、2倍のレジスタが必要になるという別の問題が生じていた。
【0009】
本発明の目的は、デ−タメモリからデ−タを読み出す動作が完了するステ−ジ、もしくは動作が完了した直後のステ−ジから、そのデ−タをソ−スオペランドとして使用する演算動作を開始するようなパイプライン構造を採用したマイクロプロセッサを提供することにある。
【0010】
本発明の更に詳しい目的は、乗算や積和演算処理を繰り返し実行する度に、ソ−スデ−タのロ−ドと積和演算動作(又は乗算動作)との間にオ−バヘッドが生じないようにできるマイクロプロセッサを提供することにある。
【0011】
本発明の別の目的は、データレジスタなどのハードウェアの増大を極力抑えて、積和演算処理等のデ−タ演算動作と、それに必要なソ−スデ−タの読み出し動作との間のオ−バヘッドサイクルを解消することができるマイクロプロセッサを提供することにある。
【0012】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【0013】
【課題を解決するための手段】
《1》本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。すなわち、命令フェッチ(IF)、命令デコード(ID)、演算実行(EX)、メモリアクセス(MA)、ライトバック(WB)と称されるような5個のステージから成るパイプライン構造を備えたマイクロプロセッサにおいて、積和演算若しくは乗算演算をMAステ−ジから開始させ、或いはWBステ−ジで演算開始から演算結果のライトバックまで全てを完了させるようにする。これにより、積和演算処理等のデ−タ演算動作と、それに必要なソ−スデ−タの読み出し動作との間のオ−バヘッドサイクルを解消することができる。
【0014】
《2》上記手段を更に詳しく説明する。第1に、マイクロプロセッサは、図1、図3、図5、図6に例示されるように、命令をフェッチする第1ステージ(IF)、フェッチした命令を解読すると共にレジスタファイルのデータを選択可能な第2ステージ(ID)、メモリアドレスの演算が可能な第3ステージ(EX)、第3ステージで演算されたメモリアドレスを基にメモリアクセスが可能な第4ステージ(MA)、及び前記第4ステージで得られたデータを前記レジスタファイルに書き戻し可能な第5ステージ(WB)を、パイプラインによるデータ処理ステージとして有する。このとき、前記レジスタファイルから読み出したデータと前記データメモリから読み出したデータとに対する乗算を前記第4ステージ及び第5ステージの一方又は双方のステージで行う乗算手段を有する。
【0015】
これによれば、図2に例示されるように、乗算演算のパイプラインにnopサイクルを挿入する必要はなく、乗数と被乗数を取得して乗算演算若しくは積和演算を行うときのスループットを3サイクルに短縮することができる。従って、乗数と被乗数の乗算結果若しくは積和演算結果を3サイクルに1回の割合で得ることができる。
【0016】
前記乗算手段は、図1に例示されるように、前記レジスタファイルから読み出したデータと前記データメモリから読み出したデータとに対する乗算の中間データを前記第4ステージで演算する第1乗算手段(MU1)と、前記第5ステージで前記乗算の中間データを用いて前記乗算を完結する第2乗算手段(MU2)とによって構成することができる。これは、マイクロプロセッサの動作基準クロック信号の周波数が高い場合に、1サイクルで乗算を行うことができない場合に適用される構成である。
【0017】
前記乗算手段は、図3、図6に例示されるように、前記レジスタファイルから読み出したデータと前記データメモリから読み出したデータとに対する乗算を前記第4ステージで完結するものとすることができる。また、前記乗算手段は、図5に例示されるように、前記レジスタファイルから読み出したデータと前記データメモリから読み出したデータとに対する乗算を前記第5ステージで完結するもとすることができる。これらは、マイクロプロセッサの動作基準クロック信号周波数が左程高くない場合に適用される例である。
【0018】
第2に、マイクロプロセッサは、図7に例示されるように、命令をフェッチする第1ステージ、フェッチした命令を解読すると共にレジスタファイルのデータを選択可能な第2ステージ、第1メモリと第2メモリのアクセスアドレスを並列的に演算可能な第3ステージ、第3ステージで演算されたアクセスアドレスを基に第1メモリ及び第2メモリを並列的にアクセス可能な第4ステージ、並びに前記第4ステージで得られたデータを前記レジスタファイルに書き戻し可能な第5ステージを、パイプラインによるデータ処理ステージとして有する。このとき、前記第1メモリから読み出したデータと第2メモリから読み出したデータとに対する乗算を前記第4ステージ及び第5ステージの一方又は双方のステージで行う乗算手段を有する。
【0019】
前記乗算手段は、前記第1メモリから読み出したデータと第2メモリから読み出したデータとに対する乗算の中間データを前記第4ステージで演算する第1乗算手段と、前記第5ステージで前記乗算の中間データを用いて前記乗算を完結する第2乗算手段とによって構成することができる。
【0020】
前記第2乗算手段の出力に前記第5ステージで選択されたデータを加算して出力する累算手段を更に設けて、積和演算に対処できる。
【0021】
これによれば、図8に例示されるように、乗数データと被乗数データを並列アクセスし、双方のデータを乗算演算ステージにバイパスさせれば、乗数と被乗数を取得して乗算更には積和演算を行うときのスループットを2サイクルまで短縮することができる。従って、乗数と被乗数の乗算結果若しくは積和演算結果を2サイクルに1回の割合で得ることができる。
【0022】
第3に、マイクロプロセッサは、図9に例示されるように、例命令をフェッチする第1ステージ、フェッチした命令を解読すると共に第1レジスタファイルから乗数データと被乗数データとを読み出し可能な第2ステージ、第1メモリ及び第2メモリのアクセスアドレスを並列的に演算可能な第3ステージ、第3ステージで演算されたアクセスアドレスを基に第1メモリ及び第2メモリを並列的にアクセス可能な第4ステージ、並びに前記第4ステージで得られたデータを第1レジスタファイルに書き戻し又は第2レジスタファイルに書き込み可能な第5ステージを、パイプラインによるデータ処理ステージとして有する。このとき、前記第2レジスタファイルから読み出された乗数データと被乗数データとに対する乗算を前記第4ステージ及び第5ステージの一方又は双方のステージで行う乗算手段を有する。
【0023】
前記乗算手段は、前記第2レジスタファイルから読み出された乗数データと被乗数データとに対する乗算の中間データを前記第4ステージで演算する第1乗算手段と、前記第5ステージで前記乗算の中間データを用いて前記乗算を完結する第2乗算手段とによって構成することができる。
【0024】
前記第2乗算手段の出力に前記第5ステージで選択されたデータを加算して出力する累算手段を更に設けて、積和演算に対処する。
【0025】
上記によれば、図10に例示されるように、乗数データと被乗数データを並列アクセスでき、しかも、そのとき乗算演算若しくは積和演算も並列化することができる。したがって、乗数データと被乗数データを並列アクセスしているとき、前回のステップで取得されてバイパス(フォワーディング)された乗数及び被乗数データを用いた乗算演算若しくは積和演算を行うことができるから、乗数と被乗数を取得して乗算演算若しくは積和演算を行うときのスループットを1サイクルまで短縮することができる。乗数と被乗数の乗算結果若しくは積和演算結果を1サイクルに1回の割合で得ることができる。
【0026】
第4に、マイクロプロセッサは、図11に例示されるように、命令をフェッチする第1ステージ、フェッチした命令を解読すると共に第1レジスタファイルから乗数データと被乗数データとを読み出し可能な第2ステージ、第1メモリ及び第2メモリのアクセスアドレスを並列的に演算可能な第3ステージ、第3ステージで演算されたアクセスアドレスを基に第1メモリ及び第2のメモリを並列的にアクセス可能な第4ステージ、並びに前記第4ステージで得られたデータを第1レジスタファイルに書き戻し又は第2レジスタファイルに書き込み可能な第5ステージを、パイプラインによるデータ処理ステージとして有する。このとき、前記第2レジスタファイルから読み出された乗数データと被乗数データとに対して第5ステージで乗算を行って当該乗算結果を第2レジスタファイルに出力する乗算手段と、前記第5ステージで第2レジスタファイルから読み出された乗算結果に第5ステージで選択されたデータを加算して出力する加算手段とを有する。
【0027】
上記によれば、図12に例示されるように、乗数データと被乗数データを並列アクセスでき、しかも、そのとき乗算演算と加算演算も並列化することができる。したがって、乗数データと被乗数データを並列アクセスしているとき、前回のステップで取得されてバイパスされた乗数及び被乗数データを用いた乗算演算を行い、更に前回のステップで取得された乗算結果の加算演算を並行して行うことができるから、乗数と被乗数を取得して乗算更には積和演算を行うときのスループットを1サイクルまで短縮することができる。
【0028】
《3》更に別の観点に立って上記手段を更に詳しく説明する。第1に、マイクロプロセッサは、図1に例示されるように、レジスタファイル(CRG)、演算器(ALU,SFT)、メモリ(DMEM)、及び積和演算器(MU1,MU2,ACC)を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第1乃至第3ラッチ回路(LCH1,LCH2,LCH3)を有する。前記積和演算器は2つのパイプラインステ−ジにまたがって演算動作を実行する前半回路(MU1)及び後半回路(MU2,ACC)を有する。前記第1ラッチ回路(LCH1)は、前記レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記演算器又は第2ラッチ回路に出力可能にされる。前記第2ラッチ回路(LCH2)は、前記演算器の出力、第1ラッチ回路の出力、前記後半回路からのバイパス出力、又は前記第2ラッチ回路若しくは第3ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記メモリ、前記前半回路、又は前記第3ラッチ回路に出力可能にされる。前記第3ラッチ回路(LCH3)は、前記メモリの出力、前記第2ラッチ回路の出力、前記前半回路の出力又は第3ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータをレジスタファイル又は前記後半回路に出力可能にされ、前記後半回路の出力は前記レジスタファイルに入力可能にされる。
【0029】
第2に、マイクロプロセッサは、図3に例示されるように、レジスタファイル、演算器、メモリ、及び積和演算器(MU3,ACC)を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第1乃至第3ラッチ回路を有する。前記積和演算器は1つのパイプラインステ−ジで演算動作を完結するものである。前記第1ラッチ回路は、前記レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記演算器又は前記第2ラッチ回路に出力可能にされる。前記第2ラッチ回路は、前記演算器の出力、第1ラッチ回路の出力又は第2ラッチ回路若しくは第3ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記メモリ、前記積和演算器、又は前記第3ラッチ回路に出力可能にされる。前記第3ラッチ回路は、前記メモリの出力、前記第2ラッチ回路の出力、前記積和演算器の出力又は第3ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記レジスタファイルに出力可能にされる。
【0030】
第3に、マイクロプロセッサは、図5に例示されるように、レジスタファイル、演算器、メモリ、及び積和演算器(MU3,ACC)を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第1乃至第3ラッチ回路を有する。このとき、前記積和演算器は1つのパイプラインステ−ジで演算動作を完結するものである。前記第1ラッチ回路は、前記レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記演算器又は第2ラッチ回路に出力可能にされる。前記第2ラッチ回路は、前記演算器の出力、第1ラッチ回路の出力、前記積和演算器からのバイパス出力又は第2ラッチ回路若しくは第3ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記メモリ又は前記第3ラッチ回路に出力可能にされる。前記第3ラッチ回路は、前記メモリの出力、前記第2ラッチ回路の出力、前記積和演算器からのバイパス出力又は第3ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記レジスタファイル又は積和演算器に出力可能にされ、前記積和演算器の出力は前記レジスタファイルに入力可能にされる。
【0031】
第4に、マイクロプロセッサは、図6に例示されるように、レジスタファイル、第1演算器(AU)、第2演算器(ALU,SFT)、メモリ、及び積和演算器(MU3,ACC)を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第1乃至第3ラッチ回路を有する。このとき、前記積和演算器は1つのパイプラインステ−ジで演算動作を完結するものである。前記第1ラッチ回路は、レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記第1演算器又は第2ラッチ回路に出力可能にされる。前記第2ラッチ回路は、前記第1演算器の出力、第1ラッチ回路の出力又は第2ラッチ回路若しくは第3ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記メモリ、前記積和演算器、前記第2演算器又は前記第3ラッチ回路に出力可能にされる。前記第3ラッチ回路は、前記メモリの出力、前記第2演算器の出力、前記第2ラッチ回路の出力、前記前積和演算器の出力又は第3ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記レジスタファイルに出力可能にされる。
【0032】
第5に、マイクロプロセッサは、図7に例示されるように、レジスタファイル(GRG2)、第1演算器(AU)、第2演算器(ALU,SFT)、第1メモリ(DMY)、第2メモリ(DMX)、及び積和演算器(MU1,MU3,ACC)を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第1乃至第3ラッチ回路を有する。このとき、前記積和演算器は2つのパイプラインステ−ジにまたがって演算動作を実行する前半回路(MU1)及び後半回路(MU3,ACC)を有する。前記第1ラッチ回路は、レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記第1演算器と第2演算器又は第2ラッチ回路に出力可能にされる。前記第2ラッチ回路は、前記第1演算器と第2演算器の出力をラッチして第1メモリと第2メモリに出力し、又は第1ラッチ回路の出力をラッチして前記前半回路に出力可能にされる。前記第3ラッチ回路は、前記第1メモリと第2メモリの出力、前記第2ラッチ回路の出力、前記前半回路の出力又は第3ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータをレジスタファイル又は前記後半回路に出力可能にされ、前記後半回路の出力は前記レジスタファイルに入力可能にされる。
【0033】
第6に、マイクロプロセッサは、図9に例示されるように、第1レジスタファイル(GRG3)、第2レジスタファイル(GRG4)、第1演算器(AU)、第2演算器(ALU,SFT)、第1メモリ(DMY2)、第2メモリ(DMX2)、及び積和演算器(MU1,MU2,ACC)を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第1乃至第3ラッチ回路を有する。このとき、前記積和演算器は2つのパイプラインステ−ジにまたがって演算動作を実行する前半回路及び後半回路を有する。前記第1ラッチ回路は、第1レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記第1演算器及び第2演算器に出力可能にされる。前記第2ラッチ回路は、前記第1演算器及び第2演算器の出力をラッチして第1メモリ及び第2メモリに出力し、且つ、第2レジスタファイルの出力をラッチして前記前半回路に出力可能にされる。前記第3ラッチ回路は、前記第1メモリ及び第2メモリの出力をラッチして前記第2レジスタファイルに出力し、且つ、前記前半回路の出力をラッチして前記後半回路に出力可能にされ、前記後半回路の出力と第3ラッチ回路を介して第1及び第2メモリから入力したデータとは前記第2レジスタファイルに入力可能にされる。
【0034】
第7に、マイクロプロセッサは、図11に例示されるように、第1レジスタファイル(GRG3)、第2レジスタファイル(GRG4)、第1演算器(AU)、第2演算器(ALU)、第3演算器(ALU2,SFT2)、第1メモリ(DMY2)、第2メモリ(DMX2)、及び乗算回路(MU3)を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第1乃至第3ラッチ回路を有する。このとき、前記第1ラッチ回路は、第1レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記第1演算器及び第2演算器に出力可能にされる。前記第2ラッチ回路は、前記第1及び第2演算器の出力をラッチして第1及び第2メモリに供給し、且つ第2レジスタファイルの出力を入力して前記第3ラッチ回路に出力可能にされる。前記第3ラッチ回路は、前記第1及び第2メモリの出力、及び前記第2レジスタファイルの出力を入力可能にされ、且つラッチしたデータを第2レジスタファイル、第3演算器、及び前記乗算器に出力可能にされ、前記第3演算器及び前記乗算器の出力が前記第2レジスタファイルに入力可能にされる。
【0035】
【発明の実施の形態】
図1には本発明に係るマイクロプロセッサMPUの一例が示される。同図に示されるマイクロプロセッサMPUは、命令実行手順を制御する制御系回路部CTとデータ及びアドレス演算などを行うデータパス部DP2に大別される。同図に示されるマイクロプロセッサMPUの基本的なパイプラインステージは、図13で説明した通りのIF,ID,EX,MA,WBの各ステージから成る5段パイプラインを基本とする。
【0036】
図1において、プログラムアドレス生成回路PADRはプログラムアドレスを生成するための回路、プログラムアドレスレジスタPCはプログラムアドレス生成回路PADRで生成されたアドレスをラッチして命令アドレスバスIABにアドレスを出力するためのレジスタである。IABは命令アドレスバス、PMEMはプログラムメモリ、IDBはプログラムメモリPMEMから読み出された命令コ−ドを出力する命令バス、FREGは命令バスIDBに出力された命令コ−ドをフェッチする命令フェッチレジスタである。IDECは命令フェッチレジスタFREGでフェッチされた命令コ−ドを解読して、実行に必要な制御信号を生成する命令デコ−ダである。LCH1、LCH2、LCH3はクロック信号に同期して入力イネーブル状態になる直前の入力信号の状態を取り込んで保持し、同時にその内容を出力するエッジトリガ型のラッチ回路(エッジトリガラッチ)である。CNT1、CNT2、CNT3は所定のパイプラインステ−ジでの処理に必要な制御信号を生成するための制御信号生成回路である。GRGはレジスタファイルであり、MX1、MX2、MX3、MX4、MX7、MX8、MX9、MX10はセレクタであり、ALUは算術論理演算器であり、SFTはシフタである。MU1は2段のパイプライン構造の乗算器の1段目の乗算回路であり、MU2は上記乗算器の2段目の乗算回路であり、ACCが積和演算の内の加算動作を行うための累算器である。DABはデ−タメモリをアクセスするためのアドレスを出力するアドレスバス、DMEMはデータメモリ、DDBはデ−タメモリへのデ−タの入出力を行うためのデ−タバスである。S1はセレクタMX4からラッチ回路LCH2を経て出力される信号、S2はセレクタMX9の出力信号、S3はデータバスDDBからラッチ回路LCH3を経て出力される信号である。なお、この例ではプログラム用のバスやメモリとデ−タ用のバスやメモリを別々に構成するハ−バ−ド・ア−キテクチャ型を採用している。上記マイクロプロセッサMPUは、単結晶シリコンのような1個の半導体基板(半導体チップ)に形成されている。
【0037】
前記信号S1、S2、S3及びセレクタMX1〜MX3、MX7、MX10によって形成される経路は、フォワーディング(バイパシング)のための信号フィードバック経路である。フォワーディングとは、ALUやMU1のような演算器の入力をその前段の回路から入力するだけでなく、後段のパイプラインステージ等任意のパイプラインステージから入力できるようにして、パイプラインをストールせずに処理を続行可能にする技術である。換言すれば、WBステージで演算結果をレジスタファイルに書き込むのを待たずに中間結果を利用する技がフォワーディング技術である。
【0038】
図1から明らかなように、乗算回路MU1、MU2及び累算器ACCを用いて行なわれる積和演算は、パイプラインのMAステージとWBステージで行なわれる。
【0039】
ここで、マイクロプロセッサMPUの機能を前記ステージIF,ID,EX,MA,WB毎に詳述する。
【0040】
〔IFステージ:〕
IFステージにおいて、制御系回路部CTでは、プログラムアドレスレジスタPCからアドレスが命令アドレスバスIABに出力され、プログラムメモリPMEM内の指定されたアドレス領域から命令コ−ドが読み出されて命令バスIDBに出力される。同時に、プログラムアドレス生成回路PADRでは次の命令読み出しに必要なアドレスを生成する。
【0041】
〔IDステ−ジ:〕
IDステ−ジにおいて、制御系回路部CTでは、命令バスIDBに出力された命令コ−ドが命令フェッチレジスタFREGに取り込まれ、その出力が命令デコ−ダIDECに入力されて必要な制御信号を生成する。なお、次段ステ−ジ以降に必要な制御信号は命令デコーダIDECで最終的な制御信号として生成する必要は必ずしもなく、命令コ−ドのままか、あるいは一部デコ−ドした形で次段以降の制御信号生成回路CNT1、CNT2、CNT3に送り、各段で最終的な制御信号を生成しても構わない。
【0042】
デ−タパス部DP1では、命令で指定されたソ−スオペランドがレジスタファイルGRGから選択され、ラッチ回路LCH1に出力される。命令の内容によって、出力されるオペランド数は、特に制限されないが、1、2又は3である。
【0043】
〔EXステ−ジ:〕
EXステ−ジにおいて、デ−タパス部DP2では、前段でレジスタファイルGRGから選択されたソ−スオペランドがラッチ回路LCH1を経てセレクタMX1、MX2、MX3に入力される。これらのセレクタMX1〜MX3は、フォワ−ディング機構の構成要素であり、他のラッチ回路LCH2の出力信号S1、セレクタMX9の出力信号S2、他のラッチ回路LCH3の出力信号S3も入力され、1または2サイクル前に実行された命令に依存して適当な信号を選択する。命令で指定されたソ−スオペランドが1または2サイクル前に実行された命令の演算結果を格納するデスティネ−ションオペランドと異なる場合は、レジスタファイルGRGから出力されてきた信号が選択される。命令で指定されたソ−スオペランドが1サイクル前に実行された命令の演算結果を格納するデスティネ−ションオペランドと一致する場合、1サイクル前に実行された命令の演算結果はまだレジスタファイルGRGに格納されておらず、次段のMAステ−ジにソ−スオペランドが存在するので、フォワ−ディング機能が働いてラッチ回路LCH2から出力されてきた信号S1がセレクタMX1、MX2、MX3で選択される。命令で指定されたソ−スオペランドが2サイクル前に実行された命令の演算結果を格納するデスティネ−ションオペランドと一致する場合、同様に2サイクル前に実行された命令の演算結果はまだGRGに格納されておらず、次々段のWBステ−ジにソ−スオペランドが存在するので、フォワ−ディング機能が働いてセレクタMX9から出力されてきた信号S2又はラッチ回路LCH3の出力信号S3がセレクタMX1、MX2、MX3で選択される。S2は2サイクル前に実行された命令の算術論理演算器ALU、シフタSFT又は累算器ACCの出力結果がソ−スオペランドになる場合に選択され、S3は2サイクル前に実行された命令がデ−タ読み出しで、読み出されたデ−タがソ−スオペランドになる場合に選択される。
【0044】
実行命令が加減算、論理演算、アドレス演算或いはシフト命令の場合、算術論理演算器ALU又はシフタSFTが動作し、セレクタMX2及びMX3で選択されて出力されたデ−タを使って演算を実行する。演算動作自体はこのステ−ジで終了する。セレクタMX4では実行された演算の内容によって算術論理演算器ALU、シフタSFTの演算結果のどちらか一方が選択されてラッチ回路LCH2へ送られる。算術論理演算器ALU、シフタSFTのどちらの演算でもない命令の場合は、セレクタMX4の出力は意味が無いのでデフォルトとしてどちらかを選択しておいても良いし、前回の動作時に選択した方をそのまま引き続き選択したままでも良い。
【0045】
実行命令が乗算又は積和演算の場合は、このステ−ジではまだ演算を開始せず、セレクタMX1、MX2、MX3で選択された信号はそのまま次段に送られる。デ−タメモリDMEMへのデ−タ書き込みの場合は、セレクタMX1で選択されたデータが次段での累算又はデ−タ書き込み動作のために送られる。なお、デ−タメモリDEMEMへのデ−タ書き込みに関しては、レジスタファイルGRGからメモリDMEMへの書き込み動作として、例えばセレクタMX1とは別の経路を設けてもよい。
【0046】
〔MAステ−ジ:〕
MAステ−ジにおいて、デ−タパス部DP2では、5種類の動作に分かれる。
【0047】
(1)デ−タメモリDMEMからのデ−タ読み出し命令の場合は、前段で生成されたアドレスがラッチ回路LCH2、信号S1を経てアドレスバスDABに出力され、デ−タメモリDMEMをアクセスする。指定されたアドレスから読み出されたデ−タは、データメモリDMEMからデ−タバスDDBに出力され、ラッチ回路LCH3に送られる。信号S1は、アドレスポインタ更新のため、ラッチ回路LCH3にも送られるか、又は次に実行される命令がこの演算結果をソ−スオペランドとしている場合は前段ステ−ジのセレクタMX1、MX2又はMX3へ送られる。
【0048】
(2)デ−タメモリへのデ−タ書き込み命令の場合は、前段で生成されたアドレスがラッチ回路LCH2を経てアドレスバスDABに出力され、デ−タメモリDMEMをアクセスする。同時にセレクタMX1、ラッチ回路LCH2を経てセレクタMX10に入力されたレジスタファイルGRGからのデ−タが選択されてデータバスDDBに出力され、データメモリDMEMに送られて書き込まれる。信号S1は、アドレスポインタ更新のため、ラッチ回路LCH3にも送られるか、又は次に実行される命令がこの演算結果をソ−スオペランドとしている場合は前段ステ−ジのセレクタMX1、MX2又はMX3へ送られる。
【0049】
(3)実行命令が加減算、論理演算或いはシフト命令の場合は、セレクタMX4、ラッチ回路LCH2を経た演算結果が、そのまま次のラッチ回路LCH3へ送られるか、又は次に実行される命令がこの演算結果をソ−スオペランドとしている場合は前段ステ−ジのセレクタMX1、MX2又はMX3へ送られる。
【0050】
(4)実行命令が乗算の場合、乗算回路MU1が動作し、ラッチ回路LCH2及びセレクタMX7から送られてきたデ−タを使って演算を実行する。演算はこのステ−ジでは終了せず、次段で引き続き演算を続行する。
【0051】
前段のセレクタMX2で選択されたソ−スオペランドがラッチ回路LCH2を経てセレクタMX7に入力される。セレクタMX7はフォワ−ディング機構の構成要素であり、他のラッチ回路LCH3の出力信号S3、セレクタMX9の出力信号S2も入力され、1サイクル前に実行された命令に依存して適当な信号を選択する。なお、図1の例では乗算回路MU1の一方の入力にはセレクタが付いていないが、これはフォワーディングするのがどちらか一方の入力だけで演算のバリエ−ションとしては充分であるためであるが、双方の入力オペランドの選択の幅が異なっていたり、制御回路を単純にしたいときには、両方にセレクタを設けても良い。セレクタMX7では、命令で指定されたソ−スオペランドが1サイクル前に実行された命令の演算結果を格納するデスティネ−ションオペランドと異なる場合は、セレクタLCH2から出力されてきた信号が選択される。命令で指定されたソ−スオペランドが1サイクル前に実行された命令の演算結果を格納するデスティネ−ションオペランドと一致する場合、1サイクル前に実行された命令の演算結果はまだレジスタファイルGRGに格納されておらず、次段のWBステ−ジにソ−スオペランドが存在するので、フォワ−ディング機能が働いてラッチ回路LCH3又はセレクタMX9から出力されてきた信号が選択される。ラッチ回路LCH3の出力が選択されるのは、前の命令でデータメモリDMEMから読み出されたデ−タをソ−スオペランドとする場合であり、セレクタMX9の出力が選択されるのは、前の命令の演算結果(デ−タ転送命令のアドレス演算を含む)をソ−スオペランドとする場合である。
【0052】
(5)実行命令が積和演算の場合、乗算部分は先の(4)と同じである。同時にセレクタMX10で選択されたデータが次段での累算動作のために送られる。セレクタMX10もフォワ−ディング機構の構成要素であり、ラッチ回路LCH2からの入力の他にセレクタMX9及びラッチ回路LCH3の出力信号も入力され、1サイクル前に実行された命令に依存して適当な信号を選択する。命令で指定されたソ−スオペランドが1サイクル前に実行された命令の演算結果を格納するデスティネ−ションオペランドと異なる場合は、ラッチ回路LCH2から出力されてきた信号が選択される。命令で指定されたソ−スオペランドが1サイクル前に実行された命令の演算結果を格納するデスティネ−ションオペランドと一致する場合、1サイクル前に実行された命令の演算結果はまだレジスタファイルGRGに格納されておらず、次段のWBステ−ジにソ−スオペランドが存在するので、フォワ−ディング機能が働いてラッチ回路LCH3又はセレクタMX9から出力されてきた信号が選択される。ラッチ回路LCH3の出力が選択されるのは、前の命令でデータメモリDMEMから読み出されたデ−タをソ−スオペランドとする場合であり、セレクタMX9の出力が選択されるのは、前の命令の演算結果(デ−タ転送命令のアドレス演算を含む)をソ−スオペランドとする場合である。
【0053】
〔WBステ−ジ:〕
WBステ−ジにおいて、デ−タパス部DP2では、4種類の動作に分かれる。
【0054】
(1)デ−タメモリDMEMからのデ−タ読み出し命令の場合、前段のMAステ−ジでデータメモリDMEMから読み出されたデ−タがデータバスDDB及びラッチ回路LCH3を経て信号S3が出力され、レジスタファイルGRG及び各フォワ−ディング機能のセレクタに送られる。
【0055】
(2)実行命令が加減算、論理演算或いはシフト命令の場合、セレクタMX4、ラッチ回路LCH2及びLCH3を経てセレクタMX9で選択されて信号S2が出力され、レジスタファイルGRG及び各フォワ−ディング機能のセレクタに送られる。
【0056】
(3)実行命令が乗算の場合、乗算回路MU1からラッチ回路LCH3を経て送られてきた乗算動作の中間デ−タを用いて、残りの演算動作を乗算回路MU2で続行する。一方セレクタMX8ではゼロが選択され、その結果累算器ACCでは乗算回路MU2の演算結果がそのまま通過してセレクタMX9で選択されて信号S2が出力され、レジスタファイルGRG及び各フォワ−ディング機能のセレクタに送られる。
【0057】
(4)実行命令が積和演算の場合、まず乗算と同様に乗算回路1(MU1)からラッチ回路LCH3を経て送られてきた乗算動作の中間デ−タを用いて、残りの演算動作を乗算回路MU2で続行する。一方セレクタMX8では第3のソ−スオペランドが選択され、累算器ACCで乗算回路MU2の乗算結果に加算されてセレクタMX9で選択され選択されて信号S2が出力され、レジスタファイルGRG及び各フォワ−ディング機能のセレクタに送られる。
【0058】
図1の例では、パイプライン化された乗算又は積和演算の実行開始を他の演算の実行開始ステ−ジであるEXステ−ジではなく、MAステ−ジから開始している。この結果、図2に示すように乗算や積和演算に必要なソ−スデ−タの読み出し動作を演算動作の直前に置いても、フォワ−ディング機構が有効に働いて、1サイクルのオ−バヘッドもなく演算が実行可能になる。
【0059】
本発明者が検討した図18の比較例(公知ではない)では、従来技術で説明したように、パイプライン化された乗算又は積和演算の実行開始を他の演算の実行開始ステ−ジであるEXステ−ジから開始している。前述のように図18の構成では、図15に代表されるように、乗数と被乗数を取得して乗算演算若しくは積和演算を行うときのスループットが4サイクルになる。これに対して、図1のパイプライン構成では、図2に示されるように、乗算演算のパイプラインにnopサイクルを挿入する必要はなく、乗数と被乗数を取得して乗算演算若しくは積和演算を行うときのスループットを3サイクルに短縮することができる。従って、乗数と被乗数の乗算結果若しくは積和演算結果を3サイクルに1回の割合で得ることができる。
【0060】
フォワ−ディング機構が備えられている場合、前述のように、MAステ−ジ以降から演算を開始可能な構成になっていれば、乗算や積和演算動作を必要なソ−スデ−タのロ−ド動作と組み合わせてもオ−バヘッド無しに実行可能となる。従って、例えば乗算や積和演算器の動作速度が他の動作の実行速度に比べてシステム全体の動作速度性能のボトルネックにならない場合は、乗算に対してパイプライン構造を採用しなくても構わない。但し、その場合でも、他の演算器と同じEXステ−ジから乗算や積和演算を開始すべきではなく、MAステージ以降で行わなければならない。
【0061】
図3には乗算をパイプライン構造にしない場合のデータバス部の例が示される。図中、MU3はパイプライン構成無しで乗算動作を実行する乗算回路である。他の構成要素については、図1と同じであり、同一機能を有する回路要素には同一符号を付してその詳細な説明を省略する。
【0062】
図3の例は、乗算及び積和演算動作がMAステ−ジのみで実行される他は、図1の実施例と同じである。従って、WBステ−ジの構造は図18の比較例と同じ構造に戻っている。図3の例では、セレクタMX10、MX7がフォワ−ディング機能を備えているので、乗算又は積和演算命令の実行直前のステップで演算に必要なデ−タをロ−ドする動作が指定されていても、図4に示すようにやはりオ−バヘッド無しで乗算動作を実行することができる。更に図3の構成によれば、次のステップで演算結果をメモリに書き込む命令を実行する場合も、図18の比較例と同じようにオ−バヘッド無しで実行することが可能である。即ち、演算実行直後にそのデ−タをデ−タメモリDMEMに格納する場合、演算結果は未だレジスタファイルGRGに格納されておらず、次段のWBステ−ジにソ−スオペランドが存在するので、フォワ−ディング機能が働いてセレクタMX6から出力されてきた信号がセレクタMX10で選択され、データバスDDBに出力されてデータメモリDMEMに送られる。
【0063】
図5には本発明の第3の例が示されている。図中の各構成要素は全て今まで述べてきたものの組み合わせになっている。図5の例は、図3の例で述べた1ステ−ジで演算実行可能な乗算/積和演算器をWBステ−ジに構成したものである。この例によれば、図3のようにデ−タをメモリDMEMに格納する場合のオ−バヘッドは生じるが、図1の実施例と同様、デ−タロ−ド直後の演算実行時のオ−バヘッドは解消される。
【0064】
ここまでの例では、ディジタル信号処理で重要な乗算又は積和演算実行時のオ−バヘッドの問題だけを解決しようとした。次に示す例は、乗算又は積和演算以外の汎用的な演算例えば算術論理演算などに対してもオーバヘッドを解決しようとするものである。
【0065】
図6は一般的な演算である算術論理演算及びシフト演算実行時のオ−バヘッドをも解消する例である。図中、AUはデ−タ転送動作に必要なアドレスを生成する演算器、MX11はフォワ−ディング機能を備えたセレクタ、LCH4はエッジトリガ型のラッチ回路、MX12はセレクタである。図6の例では、デ−タ演算を行う演算器ALU、SFTとアドレス演算を行う演算器AUとを分離し、デ−タ演算を行う演算回路ALU、SFTは全て演算開始をMAステ−ジに移動させている。その結果、乗算や積和演算動作と同様、他の演算でも必要なソ−スデータの読み出し命令の直後に演算命令を置いても、オ−バヘッド無しで実行することが可能となる。なお、この例は積和演算をMAステ−ジだけで完了する場合を示しているが、図5のようにWBステ−ジだけで完了させたり、図1のように両方のステ−ジにまたがって動作させる場合でも良いことは言うまでもない。
【0066】
以上説明した例では、あくまでもRISCプロセッサの基本である1命令で1動作を前提としていたが、汎用のディジタルシグナルプロセッサ(DSP)のように複数の動作を並列に実行可能にした構造のプロセッサでも、本発明を適用できる。
【0067】
図7にそのような一つの例を挙げる。図中、LCH5、LCH6、LCH7はエッジトリガ型のラッチ回路であり、GRG2はレジスタファイルであり、MX13、MX14、MX15、MX16、MX17、MX18、MX19、MX20はセレクタである。DMX、DMYはデ−タメモリであり、DABX、DABYはデ−タ用のアドレスバスであり、DDBX、DDBYはデ−タバスであり、S4はラッチ回路LCH6からのフォワ−ディング信号であり、S5、S6はラッチ回路LCH7からのフォワ−ディング信号である。その他の回路要素は図1と同様である。
【0068】
図7の例では、EXステ−ジに従来の算術論理演算器ALUに加えて加算器AUが備えられており、算術論理演算器ALUと加算器AUは同時並列に動作可能になっている。また、MAステ−ジにはデ−タメモリ、アドレスバス、デ−タバスも各々2つずつ備えられているので、同時に2つのデ−タ読み出し動作が実行出来るようになっている。その結果、図8に示すように第1ステップと第2ステップが同時に処理され、積和演算のスル−プットは2サイクルになっている。この時も積和演算はMAステ−ジから開始するようになっているので、デ−タ読み出し動作と積和演算動作との間にはオ−バヘッドサイクルは生じない。
【0069】
なお、この例ではデ−タメモリDMYにはアドレスバスDABX、DABYのどちらからでもアクセス可能な構造にしているが、これは単独デ−タアクセスの場合には常時算術論理演算器ALUでアドレス生成を行うようにすることを想定したものであるが、アドレスでデータメモリDMX、DMYを識別し、データメモリDMYをアクセスする場合はいつでも加算器AUにてアドレスを生成するように制御すれば、データメモリDMYもDMXと同じような構造にしてもいいことは言うまでもない。また、この例では積和演算回路をMA、WBの2ステ−ジにまたがって動作するような構成にしているが、図3や図5のように、どちらか1つのステ−ジのみで動作を完了するような演算器を用いても良いことは明らかである。さらに、図6のように、一般的な演算である算術論理演算及びシフト演算を実行する時のオ−バヘッドをも解消するために、アドレス演算器を別に設け、これらの演算器は積和演算器と同様にMAまたはWBステ−ジに移しても良いことも明らかである。
【0070】
図9はさらに並列度を高めたマイクロプロセッサの例である。図中、GRG3、4はレジスタファイルであり、LCH8、LCH9、LCH10はエッジトリガ型のラッチ回路であり、MX21、MX22、MX23、MX24、MX25、MX26、MX27はセレクタである。S7、S8、S9、S10、S11はラッチ回路からの出力信号であり、S12、S13、S14、S15はレジスタファイルGRG4からの出力信号である。ALU2は第2の算術論理演算器、SFT2は第2のバレルシフタである。今まで説明した回路要素と同一機能を有するものには同一符号を付してその詳細な説明は省略する。
【0071】
図9の例は、ディジタル信号処理向けのハ−ドウェアを完全に汎用演算モジュ−ルから切り離し、独立の演算器及びレジスタファイルを設けた例を示している。積和演算器MU1,MU2,ACCはディジタル信号処理向けのハ−ドウェアとして扱う。この結果、レジスタファイルGRG3、算術論理演算器ALU、シフタSFT、加算器AUから成るEXステ−ジで演算を実行する演算回路は、積和演算処理以外の算術論理演算等の処理と、積和演算等のディジタル信号処理動作に必要なデ−タアクセス動作のためのアドレス演算動作とに専ら用いられる。積和演算器MU1,MU2,ACCと新たに設けたレジスタファイルGRG4、算術論理演算器ALU2及びシフタSFT2は、MA及びWBステ−ジで動作を実行する。なお、図9の例では算術論理演算器ALUとシフタSFTは同時には動作せず、セレクタMX27によって毎サイクルどちらか一方のみ動作可能な構造になっているが、積和演算器と同様に、レジスタファイルGRG4と独立したソ−ス及びデスティネ−ションオペランドを転送可能にしても良いことは言うまでもない。
【0072】
図9の例によれば、図10に示すように、最初と最後に合計1ル−プ分のインライン展開が必要になるが、1回の積和演算動作のスル−プットを、必要なソ−スデ−タのロ−ド動作を含めて1サイクルで実現できる。この時も積和演算はMAステ−ジから開始するようになっているので、デ−タ読み出し動作と積和演算動作との間にはオ−バヘッドサイクルは生じない。なお、本実施例では2つのデ−タメモリDMX、DMYに対して3つ目のアドレスバスDAB及びデ−タバスDDBを設けている。これは、レジスタファイルGRG3との間のデ−タ転送時にはアドレスバスDAB及びデータバスDDBを使って図18の構成と等価な動作を実現させ、レジスタファイルGRG4に対しては積和演算処理のスル−プットが1サイクルになるために2つのデ−タ転送動作が同時に実行可能になるようにしたものである。
【0073】
なお、図9の例では積和演算器をMA、WB両方のステ−ジにまたがって動作する構成にしているが、今迄の例と同様、どちらか一方のステ−ジのみで動作する回路で構成しても良いし、算術論理演算器ALU2やシフタSFT2をMAステ−ジに移しても良いことは言うまでもない。
【0074】
図11の例は積和演算動作のスル−プットは図9の例と同様に1サイクルで実現可能であるが、図9に比べて回路規模を低減させている。図11において、LCH11、LCH12、LCH13はエッジトリガ型ラッチ回路であり、MX21、MX22、MX23、MX24、MX25、MX26はセレクタであり、DMX2,DMY2はデ−タメモリである。S16,S17はレジスタファイルGRG4からの出力信号である。
【0075】
図11の例は積和演算回路を乗算回路MU3のみの構成とし、同時並列に動作可能な算術論理演算器ALU2との連携動作により、積和演算処理を実現させるものである。また、乗算回路は図5の実施例と同様にWBステ−ジ1段で演算を実行できる例を示しているが、図9のように2段のパイプライン構成にしてもよいことは言うまでもない。
【0076】
図11の例では、乗算回路の1サイクル化とレジスタファイルGRG4により、積和演算機能に関するフォワ−ディング機構が不要になり、ハ−ドウェア構造が簡略化できている。また、レジスタファイルGRG3、算術論理演算器ALU、加算器AUから成る部分の演算パイプライン構造をEXステ−ジで終了とし、算術論理演算器ALU、加算器AUの出力信号S8、S9をフォワーディングさせずに、直ちにレジスタファイルGRG3へライトバックさせることにより、フォワ−ディング機構も大幅に簡略化し、残りはデ−タメモリDMEM読み出し動作時のWBステ−ジからのフォワ−ディング回路のみとしている。また、シフト処理を全てSFT2で行うことで問題ないので、この例のように、EXステ−ジでのシフト処理用のシフタ(図1のSFT)を省略しても構わない。
【0077】
図11の例によれば、図12に示すように、1回の積和演算処理にかかるレイテンシ−は1サイクル延び、2回分のインライン展開が必要であるが、積和演算器を乗算器にしてハ−ドウェア規模を節約しても積和演算のスル−プットは依然として1サイクルを実現できる。
【0078】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。例えば、マイクロプロセッサは、I/Oポート、バスコントローラ、DMACなど、その他の回路ブロックを同一の半導体チップに含んでもよい。また、各パイプラインステージは1サイクルに限定されず、一部のステージ又は全部のステージを夫々2サイクル以上にしてもよい。
【0079】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【0080】
すなわち、IF、ID、EX、MA、WBのような5ステージから成るパイプライン構造を備えたマイクロプロセッサにおいて、積和演算若しくは乗算演算をMAステ−ジから開始させ、或いはWBステ−ジで演算開始から演算結果のライトバックまで全てを完了させるようにする。これにより、積和演算処理等のデ−タ演算動作と、それに必要なソ−スデ−タの読み出し動作との間のオ−バヘッドサイクルを解消することができる。したがって、デ−タメモリからデ−タを読み出す動作が完了するステ−ジ、もしくは動作が完了した直後のステ−ジから、そのデ−タをソ−スオペランドとして使用する演算動作を開始することができる。
【図面の簡単な説明】
【図1】本発明に係るマイクロプロセッサの一例を示すブロック図である。
【図2】図1のマイクロコンピュータにおける積和演算のパイプライン処理の一例が示されるタイミングチャートである。
【図3】乗算を一つのMAステージで行うようにしたデータパス部の一例を示すブロック図である。
【図4】図3のデータパス部を採用したマイクロプロセッサにおける積和演算のパイプライン処理の一例が示されるタイミングチャートである。
【図5】乗算を一つのWBステージで行うようにしたデータパス部の一例を示すブロック図である。
【図6】積和演算や乗算以外の一般的な演算時のオ−バヘッドも解消するようにしたデータパス部の一例を示すブロック図である。
【図7】汎用のディジタルシグナルプロセッサのように複数の動作を並列に実行可能にした構造を採用したデータパス部のブロック図である。
【図8】図7のデータパス部を採用したマイクロプロセッサにおける積和演算のパイプライン処理の一例が示されるタイミングチャートである。
【図9】図7に対して更に演算処理の並列度を高めた構造を持つデータパス部のブロック図である。
【図10】図9のデータパス部を採用したマイクロプロセッサにおける積和演算のパイプライン処理の一例が示されるタイミングチャートである。
【図11】積和演算動作のスル−プットを図9と同等に維持しつつ図9に比べて回路規模を小さくしたデータパス部のブロック図である。
【図12】図11のデータパス部を採用したマイクロプロセッサにおける積和演算のパイプライン処理の一例が示されるタイミングチャートである。
【図13】RISC型マイクロプロセッサのパイプライン構造の概略説明図である。
【図14】ソースデータの供給については考慮せず積和演算だけを単に連続実行するとしたときのパイプライン処理のタイミングチャートである。
【図15】ソ−スデ−タの供給を考慮した場合の積和演算連続動作時におけるパイプライン処理のタイミングチャートである。
【図16】図15に対してフォワ−ディングを用いずに積和演算連続動作を行ったときのパイプライン処理のタイミングチャートである。
【図17】2回分の処理をインライン展開して積和演算を行うようにしたときのパイプライン処理のタイミングチャートである。
【図18】本発明者が検討したパイプライン構造とフォワ−ディング機構を持つ比較例としてのマイクロプロセッサのブロック図である。
【符号の説明】
IF 命令フェッチステ−ジ
ID 命令デコ−ドステージ
EX 演算実行ステ−ジ
MA メモリアクセスステ−ジ
WB デ−タのライトバックステ−ジ
PADR プログラムアドレスを生成するための回路
PC 命令アドレスバスにアドレスを出力するためのレジスタ
IAB 命令アドレスバス
PMEM プログラムメモリ
IDB 命令バス
FREG 命令フェッチレジスタ
IDEC 命令デコ−ダ
LCH1〜LCH13 エッジトリガ型のラッチ
CNT1〜CNT3 制御信号生成回路
GRG、GRG2〜GRG4 レジスタファイル
MX1〜MX26 セレクタ
ALU、ALU2 算術論理演算器
SFT、SFT2 シフタ
MU1 2段のパイプライン構造の乗算器の1段目の回路
MU2 2段のパイプライン構造の乗算器の2段目の回路
MU3 乗算器
ACC 累算器
DAB、DABX、DABY アドレスバス
DMEM データメモリ
DDB、DDBX、DDBY デ−タバス

Claims (24)

  1. 命令をフェッチする第1ステージ、フェッチした命令を解読すると共にレジスタファイルのデータを選択可能な第2ステージ、メモリアドレスの演算が可能な第3ステージ、第3ステージで演算されたメモリアドレスを基にデータメモリに対するメモリアクセスが可能な第4ステージ、及び前記第4ステージで得られたデータを前記レジスタファイルに書き戻し可能な第5ステージを、パイプラインによるデータ処理ステージとして有するマイクロプロセッサであって、
    前記レジスタファイルから読み出したデータと前記データメモリから読み出したデータとに対する乗算を前記第4ステージ及び第5ステージで行う乗算手段を有し、
    前記乗算手段は、前記レジスタファイルから読み出したデータと前記データメモリから読み出したデータとに対する乗算の中間データを前記第4ステージで演算する第1乗算手段と、前記第5ステージで前記乗算の中間データを用いて前記乗算を完結する第2乗算手段とから成るものであるマイクロプロセッサ。
  2. 前記第2乗算手段の出力に前記第5ステージで選択されたデータを加算して出力する累算手段を更に設けて成るものである請求項記載のマイクロプロセッサ。
  3. 命令をフェッチする第1ステージ、フェッチした命令を解読すると共にレジスタファイルのデータを選択可能な第2ステージ、メモリアドレスの演算が可能な第3ステージ、第3ステージで演算されたメモリアドレスを基にデータメモリに対するメモリアクセスが可能な第4ステージ、及び前記第4ステージで得られたデータを前記レジスタファイルに書き戻し可能な第5ステージを、パイプラインによるデータ処理ステージとして有するマイクロプロセッサであって、
    前記レジスタファイルから読み出したデータと前記データメモリから読み出したデータとに対する乗算を前記第4ステージで完結する乗算手段を有して成るものであるマイクロプロセッサ。
  4. 前記乗算手段の出力に前記第4ステージで選択されたデータを加算して出力する累算手段を更に設けて成るものである請求項記載のマイクロプロセッサ。
  5. 命令をフェッチする第1ステージ、フェッチした命令を解読すると共にレジスタファイルのデータを選択可能な第2ステージ、メモリアドレスの演算が可能な第3ステージ、第3ステージで演算されたメモリアドレスを基にデータメモリに対するメモリアクセスが可能な第4ステージ、及び前記第4ステージで得られたデータを前記レジスタファイルに書き戻し可能な第5ステージを、パイプラインによるデータ処理ステージとして有するマイクロプロセッサであって、
    前記レジスタファイルから読み出したデータと前記データメモリから読み出したデータとに対する乗算を前記第5ステージで完結する乗算手段と、
    前記乗算手段の出力に前記第5ステージで選択されたデータを加算して出力する累算手段と、を有して成るものであるマイクロプロセッサ。
  6. 命令をフェッチする第1ステージ、フェッチした命令を解読すると共にレジスタファイルのデータを選択可能な第2ステージ、第1メモリと第2メモリのアクセスアドレスを並列的に演算可能な第3ステージ、第3ステージで演算されたアクセスアドレスを基に第1メモリ及び第2メモリを並列的にアクセス可能な第4ステージ、並びに前記第4ステージで得られたデータを前記レジスタファイルに書き戻し可能な第5ステージを、パイプラインによるデータ処理ステージとして有するマイクロプロセッサであって、
    前記第1メモリから読み出したデータと第2メモリから読み出したデータとに対する乗算を前記第4ステージ及び第5ステージで行う乗算手段を有して成るものであるマイクロプロセッサ。
  7. 前記乗算手段は、前記第1メモリから読み出したデータと第2メモリから読み出したデータとに対する乗算の中間データを前記第4ステージで演算する第1乗算手段と、前記第5ステージで前記乗算の中間データを用いて前記乗算を完結する第2乗算手段とから成るものである請求項記載のマイクロプロセッサ。
  8. 前記第2乗算手段の出力に前記第5ステージで選択されたデータを加算して出力する累算手段を更に設けて成るものである請求項記載のマイクロプロセッサ。
  9. 命令をフェッチする第1ステージ、フェッチした命令を解読すると共にレジスタファイルのデータを選択可能な第2ステージ、第1メモリと第2メモリのアクセスアドレスを並列的に演算可能な第3ステージ、第3ステージで演算されたアクセスアドレスを基に第1メモリ及び第2メモリを並列的にアクセス可能な第4ステージ、並びに前記第4ステージで得られたデータを前記レジスタファイルに書き戻し可能な第5ステージを、パイプラインによるデータ処理ステージとして有するマイクロプロセッサであって、
    前記第1メモリから読み出したデータと第2メモリから読み出したデータとに対する乗算を前記第4ステージで完結する乗算手段を有して成るものであるマイクロプロセッサ。
  10. 命令をフェッチする第1ステージ、フェッチした命令を解読すると共にレジスタファイルのデータを選択可能な第2ステージ、第1メモリと第2メモリのアクセスアドレスを並列的に演算可能な第3ステージ、第3ステージで演算されたアクセスアドレスを基に第1メモリ及び第2メモリを並列的にアクセス可能な第4ステージ、並びに前記第4ステージで得られたデータを前記レジスタファイルに書き戻し可能な第5ステージを、パイプラインによるデータ処理ステージとして有するマイクロプロセッサであって、
    前記第1メモリから読み出したデータと第2メモリから読み出したデータとに対する乗算を前記第5ステージで完結する乗算手段を有して成るものであるマイクロプロセッサ。
  11. 命令をフェッチする第1ステージ、フェッチした命令を解読すると共に第1レジスタファイルから乗数データと被乗数データとを読み出し可能な第2ステージ、第1メモリ及び第2メモリのアクセスアドレスを並列的に演算可能な第3ステージ、第3ステージで演算されたアクセスアドレスを基に第1メモリ及び第2メモリを並列的にアクセス可能な第4ステージ、並びに前記第4ステージで得られたデータを第1レジスタファイルに書き戻し又は第2レジスタファイルに書き込み可能な第5ステージを、パイプラインによるデータ処理ステージとして有するマイクロプロセッサであって、
    前記第2レジスタファイルから読み出された乗数データと被乗数データとに対する乗算を前記第4ステージ及び第5ステージで行う乗算手段を有して成るものであるマイクロプロセッサ。
  12. 前記乗算手段は、前記第2レジスタファイルから読み出された乗数データと被乗数データとに対する乗算の中間データを前記第4ステージで演算する第1乗算手段と、前記第5ステージで前記乗算の中間データを用いて前記乗算を完結する第2乗算手段とから成るものである請求項11記載のマイクロプロセッサ。
  13. 前記第2乗算手段の出力に前記第5ステージで選択されたデータを加算して出力する累算手段を更に設けて成るものである請求項12記載のマイクロプロセッサ。
  14. 命令をフェッチする第1ステージ、フェッチした命令を解読すると共に第1レジスタファイルから乗数データと被乗数データとを読み出し可能な第2ステージ、第1メモリ及び第2メモリのアクセスアドレスを並列的に演算可能な第3ステージ、第3ステージで演算されたアクセスアドレスを基に第1メモリ及び第2メモリを並列的にアクセス可能な第4ステージ、並びに前記第4ステージで得られたデータを第1レジスタファイルに書き戻し又は第2レジスタファイルに書き込み可能な第5ステージを、パイプラインによるデータ処理ステージとして有するマイクロプロセッサであって、
    前記第2レジスタファイルから読み出された乗数データと被乗数データとに対する乗算を前記第4ステージで完結する乗算手段を有して成るものであるマイクロプロセッサ。
  15. 命令をフェッチする第1ステージ、フェッチした命令を解読すると共に第1レジスタファイルから乗数データと被乗数データとを読み出し可能な第2ステージ、第1メモリ及び第2メモリのアクセスアドレスを並列的に演算可能な第3ステージ、第3ステージで演算されたアクセスアドレスを基に第1メモリ及び第2メモリを並列的にアクセス可能な第4ステージ、並びに前記第4ステージで得られたデータを第1レジスタファイルに書き戻し又は第2レジスタファイルに書き込み可能な第5ステージを、パイプラインによるデータ処理ステージとして有するマイクロプロセッサであって、
    前記第2レジスタファイルから読み出された乗数データと被乗数データとに対する乗算を前記第5ステージで完結する乗算手段を有して成るものであるマイクロプロセッサ。
  16. 命令をフェッチする第1ステージ、フェッチした命令を解読すると共に第1レジスタファイルから乗数データと被乗数データとを読み出し可能な第2ステージ、第1メモリ及び第2メモリのアクセスアドレスを並列的に演算可能な第3ステージ、第3ステージで演算されたアクセスアドレスを基に第1メモリ及び第2のメモリを並列的にアクセス可能な第4ステージ、並びに前記第4ステージで得られたデータを第1レジスタファイルに書き戻し又は第2レジスタファイルに書き込み可能な第5ステージを、パイプラインによるデータ処理ステージとして有するマイクロプロセッサであって、
    前記第2レジスタファイルから読み出された乗数データと被乗数データとに対して第5ステージで乗算を行って当該乗算結果を第2レジスタファイルに出力する乗算手段と、前記第5ステージで第2レジスタファイルから読み出された乗算結果に第5ステージで選択されたデータを加算して出力する加算手段とを有して成るものであるマイクロプロセッサ。
  17. レジスタファイル、演算器、メモリ、及び積和演算器を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第1乃至第3ラッチ回路を有するマイクロプロセッサであって、
    前記積和演算器は2つのパイプラインステ−ジにまたがって演算動作を実行する前半回路及び後半回路を有し、
    前記第1ラッチ回路は、前記レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記演算器又は第2ラッチ回路に出力可能にされ、
    前記第2ラッチ回路は、前記演算器の出力、第1ラッチ回路の出力、前記後半回路からのバイパス出力、又は前記第2ラッチ回路若しくは第3ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記メモリ、前記前半回路、又は前記第3ラッチ回路に出力可能にされ、
    前記第3ラッチ回路は、前記メモリの出力、前記第2ラッチ回路の出力、前記前半回路の出力又は第3ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータをレジスタファイル又は前記後半回路に出力可能にされ、前記後半回路の出力は前記レジスタファイルに入力可能にされて成るものであるマイクロプロセッサ。
  18. レジスタファイル、演算器、メモリ、及び積和演算器を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第1乃至第3ラッチ回路を有するマイクロプロセッサであって、
    前記積和演算器は1つのパイプラインステ−ジで演算動作を完結するものであり、
    前記第1ラッチ回路は、前記レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記演算器又は前記第2ラッチ回路に出力可能にされ、
    前記第2ラッチ回路は、前記演算器の出力、第1ラッチ回路の出力又は第2ラッチ回路若しくは第3ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記メモリ、前記積和演算器、又は前記第3ラッチ回路に出力可能にされ、
    前記第3ラッチ回路は、前記メモリの出力、前記第2ラッチ回路の出力、前記前積和演算器の出力又は第3ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記レジスタファイルに出力可能にされて成るものであるマイクロプロセッサ。
  19. レジスタファイル、演算器、メモリ、及び積和演算器を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第1乃至第3ラッチ回路を有するマイクロプロセッサであって、
    前記積和演算器は1つのパイプラインステ−ジで演算動作を完結するものであり、
    前記第1ラッチ回路は、前記レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記演算器又は第2ラッチ回路に出力可能にされ、
    前記第2ラッチ回路は、前記演算器の出力、第1ラッチ回路の出力、前記積和演算器からのバイパス出力又は第2ラッチ回路若しくは第3ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記メモリ又は前記第3ラッチ回路に出力可能にされ、
    前記第3ラッチ回路は、前記メモリの出力、前記第2ラッチ回路の出力、前記積和演算器からのバイパス出力又は第3ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記レジスタファイル又は積和演算器に出力可能にされ、前記積和演算器の出力は前記レジスタファイルに入力可能にされて成るものであるマイクロプロセッサ。
  20. レジスタファイル、第1演算器、第2演算器、メモリ、及び積和演算器を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第1乃至第3ラッチ回路を有するマイクロプロセッサであって、
    前記積和演算器は1つのパイプラインステ−ジで演算動作を完結するものであり、
    前記第1ラッチ回路は、レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記第1演算器又は第2ラッチ回路に出力可能にされ、
    前記第2ラッチ回路は、前記第1演算器の出力、第1ラッチ回路の出力又は第2ラッチ回路若しくは第3ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記メモリ、前記積和演算器、前記第2演算器又は前記第3ラッチ回路に出力可能にされ、
    前記第3ラッチ回路は、前記メモリの出力、前記第2演算器の出力、前記第2ラッチ回路の出力、前記前積和演算器の出力又は第3ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記レジスタファイルに出力可能にされて成るものであるマイクロプロセッサ。
  21. 前記第1の演算器は前記メモリをアクセスするためのアドレス演算用とされ、前記第2演算器はデータ演算用とされるものである請求項20記載のマイクロプロセッサ。
  22. レジスタファイル、第1演算器、第2演算器、第1メモリ、第2メモリ、及び積和演算器を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第1乃至第3ラッチ回路を有するマイクロプロセッサであって、
    前記積和演算器は2つのパイプラインステ−ジにまたがって演算動作を実行する前半回路及び後半回路を有し、
    前記第1ラッチ回路は、レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記第1演算器と第2演算器又は第2ラッチ回路に出力可能にされ、
    前記第2ラッチ回路は、前記第1演算器と第2演算器の出力をラッチして第1メモリと第2メモリに出力し、又は第1ラッチ回路の出力をラッチして前記前半回路に出力可能にされ、
    前記第3ラッチ回路は、前記第1メモリと第2メモリの出力、前記第2ラッチ回路の出力、前記前半回路の出力又は第3ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータをレジスタファイル又は前記後半回路に出力可能にされ、前記後半回路の出力は前記レジスタファイルに入力可能にされて成るものであるマイクロプロセッサ。
  23. 第1レジスタファイル、第2レジスタファイル、第1演算器、第2演算器、第1メモリ、第2メモリ、及び積和演算器を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第1乃至第3ラッチ回路を有するマイクロプロセッサであって、 前記積和演算器は2つのパイプラインステ−ジにまたがって演算動作を実行する前半回路及び後半回路を有し、
    前記第1ラッチ回路は、第1レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記第1演算器及び第2演算器に出力可能にされ、
    前記第2ラッチ回路は、前記第1演算器及び第2演算器の出力をラッチして第1メモリ及び第2メモリに出力し、且つ、第2レジスタファイルの出力をラッチして前記前半回路に出力可能にされ、
    前記第3ラッチ回路は、前記第1メモリ及び第2メモリの出力をラッチして前記第2レジスタファイルに出力し、且つ、前記前半回路の出力をラッチして前記後半回路に出力可能にされ、前記後半回路の出力と第3ラッチ回路を介して第1及び第2メモリから入力したデータとは前記第2レジスタファイルに入力可能にされて成るものであるマイクロプロセッサ。
  24. 第1レジスタファイル、第2レジスタファイル、第1演算器、第2演算器、第3演算器、第1メモリ、第2メモリ、及び乗算回路を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第1乃至第3ラッチ回路を有するマイクロプロセッサであって、
    前記第1ラッチ回路は、第1レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記第1演算器及び第2演算器に出力可能にされ、
    前記第2ラッチ回路は、前記第1及び第2演算器の出力をラッチして第1及び第2メモリに供給し、且つ第2レジスタファイルの出力を入力して前記第3ラッチ回路に出力可能にされ、
    前記第3ラッチ回路は、前記第1及び第2メモリの出力、及び前記第2レジスタファイルの出力を入力可能にされ、且つラッチしたデータを第2レジスタファイル、第3演算器、及び前記乗算器に出力可能にされ、前記第3演算器及び前記乗算器の出力が前記第2レジスタファイルに入力可能にされて成るものであるマイクロプロセッサ。
JP17123498A 1998-06-18 1998-06-18 マイクロプロセッサ Expired - Fee Related JP3669841B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP17123498A JP3669841B2 (ja) 1998-06-18 1998-06-18 マイクロプロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP17123498A JP3669841B2 (ja) 1998-06-18 1998-06-18 マイクロプロセッサ

Publications (2)

Publication Number Publication Date
JP2000010780A JP2000010780A (ja) 2000-01-14
JP3669841B2 true JP3669841B2 (ja) 2005-07-13

Family

ID=15919541

Family Applications (1)

Application Number Title Priority Date Filing Date
JP17123498A Expired - Fee Related JP3669841B2 (ja) 1998-06-18 1998-06-18 マイクロプロセッサ

Country Status (1)

Country Link
JP (1) JP3669841B2 (ja)

Also Published As

Publication number Publication date
JP2000010780A (ja) 2000-01-14

Similar Documents

Publication Publication Date Title
US7937559B1 (en) System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes
US6058465A (en) Single-instruction-multiple-data processing in a multimedia signal processor
US5838984A (en) Single-instruction-multiple-data processing using multiple banks of vector registers
US6061780A (en) Execution unit chaining for single cycle extract instruction having one serial shift left and one serial shift right execution units
JP2002333978A (ja) Vliw型プロセッサ
US6446190B1 (en) Register file indexing methods and apparatus for providing indirect control of register addressing in a VLIW processor
US6330657B1 (en) Pairing of micro instructions in the instruction queue
JP2010532063A (ja) 条件命令を無条件命令および選択命令へと拡張する方法およびシステム
JP2002536738A (ja) 間接vliwプロセッサにおける実行時間並列処理のための動的vliwサブ命令選択システム
EP1124181B1 (en) Data processing apparatus
JPH09311786A (ja) データ処理装置
JPH09212361A (ja) データ処理装置およびデータ処理方法
JPH0766324B2 (ja) データ処理装置
EP3340037B1 (en) A data processing apparatus and method for controlling vector memory accesses
JP2620511B2 (ja) データ・プロセッサ
JP2001027945A (ja) Simd演算を実行するために標準macユニットを利用する浮動小数点ユニット
JP3578883B2 (ja) データ処理装置
US6055628A (en) Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
JPH05150979A (ja) 即値オペランド拡張方式
US7111155B1 (en) Digital signal processor computation core with input operand selection from operand bus for dual operations
US5778208A (en) Flexible pipeline for interlock removal
JP3479385B2 (ja) 情報処理装置
US6670895B2 (en) Method and apparatus for swapping the contents of address registers
JP3669841B2 (ja) マイクロプロセッサ
US7107302B1 (en) Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041005

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050118

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050322

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050412

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050412

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080422

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090422

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090422

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100422

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100422

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110422

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110422

Year of fee payment: 6

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110422

Year of fee payment: 6

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120422

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120422

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130422

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140422

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees