JP5505083B2 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP5505083B2
JP5505083B2 JP2010119849A JP2010119849A JP5505083B2 JP 5505083 B2 JP5505083 B2 JP 5505083B2 JP 2010119849 A JP2010119849 A JP 2010119849A JP 2010119849 A JP2010119849 A JP 2010119849A JP 5505083 B2 JP5505083 B2 JP 5505083B2
Authority
JP
Japan
Prior art keywords
shift
instruction
instructions
circuit
data
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
JP2010119849A
Other languages
English (en)
Other versions
JP2011248539A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010119849A priority Critical patent/JP5505083B2/ja
Publication of JP2011248539A publication Critical patent/JP2011248539A/ja
Application granted granted Critical
Publication of JP5505083B2 publication Critical patent/JP5505083B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本願開示は、一般に情報処理装置に関し、詳しくは複数の命令を同時実行可能な情報処理装置に関する。
1サイクルで複数の命令を同時発行可能であるスーパスカラプロセッサには、インオーダ型とアウトオブオーダ型の2つの命令発行方式がある。インオーダ型では、演算器への命令の発行順序がプログラム中の命令の順番と同一であり、比較的単純な制御で実現できる。アウトオブオーダ型では、演算器への命令の発行順序がプログラム中の命令の順番に制限されず、制御が複雑となるが効率的な演算実行が可能となる。一般には、発行候補である複数の命令のうち、例えば2番目の命令が1番目の命令にデータの依存関係を有する場合、これら2つの命令を同時並列に発行することができない。即ち、2番目の命令の発行は1番目の命令発行の後になる。この場合、3番目の命令に依存関係がなければ、アウトオブオーダ型であれば3番目の命令を2番目の命令に先行して1番目の命令と同時に発行できる。それに対してインオーダ型では、3番の命令を2番目の命令に先行して発行することはできない。
データ依存関係がある場合に同時並列発行を可能とするために、演算器をカスケード接続可能なように構成して、先行命令とそれにデータ依存関係がある後続命令とを同時並列に発行可能な演算器カスケード方式がある。例えば、第1の演算器に第1の命令を発行し、第2の演算器に第2の命令を発行するとともに、第1の演算器の出力を第2の演算器の入力にカスケード接続する。これにより、パイプライン動作の一段の実行ステージ内において、データ依存関係がある第1の命令と第2の命令とを纏めて実行することができる。
しかし、上記のような演算器カスケード方式では、単純に第1の演算器による演算を実行してから第2の演算器による演算を実行するので、実行ステージの完了までに要する遅延時間が増大してしまう。この実行ステージの実行時間がプロセッサ全体のクリティカルパスになってしまうと動作周波数の低下を招いてしまう。
従って、演算論理を圧縮して高速実行可能にした回路を用意しておき、演算器カスケードを行なう際に、この回路を利用して遅延時間を小さくすることが考えられる。特許文献1では、連続する加算命令同士にデータ依存関係がある場合に、単純に加算器を2つカスケード接続するのではなく、桁上げ保存加算器と通常の桁上げ加算器を組み合わせた回路を追加し、遅延時間の増大を抑えながら同時発行可能な方法を開示している。この方式では、加算−加算、加算−論理、論理−加算、論理−加算の全4つの加算及び論理の組み合わせに対してのみ、遅延時間の増大を抑えることができる。
特開平6−59861号公報 特開平6−318155号公報 特開平8−272611号公報
Blanck, G. and Krueger, S., "The SuperSPARC microprocessor," In Proceedings of the Thirty-Seventh international Conference on COMPCON (San Francisco,California, United States),IEEE Computer Society Press,Los Alamitos, CA, 136-141, 1992.
以上を鑑みると、加算及び論理の組み合わせ以外の演算に対して演算器カスケードの遅延時間の増大を抑えることが可能な情報処理装置が望まれる。
情報処理装置は、複数の演算器と、複数の命令を前記複数の演算器に対して同時並列に発行する命令発行部とを含み、前記複数の演算器の少なくとも1つの演算器は、シフト演算を実行するシフト回路と、2つのシフト命令のシフト数を加減算するシフト数生成回路とを含み、前記シフト数生成回路により求めたシフト数に応じて前記シフト回路によるシフト演算を実行することにより、データ依存関係のある2つのシフト命令を1回のシフト演算で実行するよう構成されたことを特徴とする。
本願開示の少なくとも1つの実施例によれば、シフト数生成回路を用いたシフト演算を実行することにより、データ依存関係のある2つのシフト命令を1回のシフト演算で実行する。従って、データ依存関係のある2つのシフト命令を同時並列に発行しながらも、遅延時間が長くなるのを避けることができる。
情報処理装置の構成の一例を示す図である。 ALUの構成の一例を示す図である。 演算器カスケードによりデータ依存関係にある2つのシフト命令を実行する構成を示す図である。 図3に示す構成によるシフト演算を説明するための図である。 図3に示す構成によるシフト演算を説明するための図である。 シフト数生成回路及びシフト回路の構成の一例を示す図である。 図6のシフト数生成回路及びシフト回路の動作制御の一例を示す図である。 図1の命令発行判定回路の動作の一例を示すフローチャートである。
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
図1は、情報処理装置の構成の一例を示す図である。情報処理装置は、プログラムカウンタ(PC)11、分岐予測器12、命令キャッシュ13、命令レジスタ14、命令発行判定回路15、レジスタファイル16、第1〜第3の演算器20乃至22、データキャッシュ25、及びマルチプレクサ(MUX)28を含む。情報処理装置は更に、パイプラインレジスタ17〜19、23、24、26、27を含む。図1には、インオーダ方式で3つの命令を同時並列に発行する例を示すが、情報処理装置の構成はこの例に限定されるものではなく、アウトオブオーダ方式でもよいし、また命令同時発行数も3に限られず任意の数であってよい。
プログラムカウンタ11は、プログラムを構成する命令列を順次フェッチするために、現在のフェッチ対象である命令アドレスを指し示す値を保持し、この値を順次カウントアップしていく。プログラムカウンタ11が指し示す命令アドレスは命令キャッシュ13に供給され、この命令アドレスの命令が読み出され、命令レジスタ14に順次格納される。なお命令キャッシュ13に存在しない命令については、外部のメモリから命令キャッシュ13に読み込まれ、更に命令キャッシュ13から命令レジスタ14に格納される。命令レジスタ14には、プログラムの命令列の順番に従い、例えば4つの連続する命令が格納される。分岐予測器12は、プログラムカウンタ11からの命令アドレスと命令キャッシュ13からの命令とに基づいて、当該命令が分岐命令であるときに、分岐先アドレスを予測する。分岐予測器12が予測した分岐先アドレスは、マルチプレクサ28を介してプログラムカウンタ11に格納される。以上の動作が命令フェッチフェーズ(IF)を構成する。
命令発行判定回路15は、命令レジスタ14に格納される連続する命令のうち先頭の3つの命令を受け取り、各命令をデコードすると共に、同時並列に発行可能な命令であるか否かを判定する。3つの命令を同時並列に発行可能であれば、これら3つの命令を同時並列に発行する。先頭の2つの命令のみが同時並列に発行可能であれば、これら2つの命令のみを同時並列に発行する。1つの命令のみが発行可能であれば、この命令のみを発行する。この際、同時並列発行の候補である複数の命令間にデータ依存関係やハードウェア的な資源競合等が存在するか否かを判断し、この判断に基づいて同時並列に発行する命令を決定する。命令発行判定回路15が発行した命令は、発行対象の演算器に対応するパイプラインレジスタ17乃至19に格納される。このとき、発行された命令に対応するオペランドがレジスタファイル16から読み出され、対応するパイプラインレジスタ17乃至19に格納される。以上の動作が命令デコードフェーズ(ID)を構成する。
第1乃至第3の演算器20乃至22はそれぞれ、発行された命令を実行する。複数の命令が同時並列に発行されていれば、これら複数の命令が同時並列に実行される。図1の例において、第1の演算器20は、分岐命令を実行して分岐先アドレスを計算する分岐計算回路31を有する演算器であり、3つのウェイ(3つの同時実行可能なパイプライン)のうちでウェイway2と表記されている。第2の演算器21は、算術論理演算を実行するALU(Arithmetic Logic Unit)32を有する演算器であり、3つのウェイのうちのウェイway0と表記されている。第3の演算器22は、算術論理演算を実行するALU34を有する演算器であり、3つのウェイのうちのウェイway1と表記されている。この第3の演算器22は、更に、2つのシフト命令のシフト数を加減算するシフト数生成回路33を含む。このシフト数生成回路33については後程詳細に説明する。なお第3の演算器22は、ロード命令及びストア命令の場合には、アクセス先を求めるためのアドレス計算をALU34により実行可能な構成となっている。第1の演算器20により計算された分岐先アドレスはマルチプレクサ28に供給される。第2の演算器21及び第3の演算器22により計算された演算結果は、それぞれパイプラインレジスタ23及び24に格納される。以上の動作が演算実行フェーズ(EX)を構成する。
第3の演算器22により計算されたロード命令或いはストア命令のアクセス先であるアドレス及びストア命令の場合の格納対象データは、パイプラインレジスタ24からデータキャッシュ25に供給される。ロード命令の場合には、このアクセス先アドレスのデータがデータキャッシュ25から読み出され、パイプラインレジスタ27に格納される。なおデータキャッシュ25に存在しないデータについては、外部のメモリからデータキャッシュ25に読み込まれ、更にデータキャッシュ25からパイプラインレジスタ27に格納される。ストア命令の場合には、データキャッシュ25に存在するアクセス先アドレスのデータを格納対象データにより上書きする。データキャッシュ25に当該アドレスのデータが存在しない場合には、外部のメモリからデータキャッシュ25に当該アドレスのデータが読み込まれ、そのデータを上記格納対象データで上書きする。実行した命令がロード命令及びストア命令でない場合には、パイプラインレジスタ24のデータは、パイプラインレジスタ27に格納される。またパイプラインレジスタ23のデータは、同様に、パイプラインレジスタ26に格納される。以上の動作がメモリアクセスフェーズ(MA)を構成する。
最後のライトバックフェーズ(WB)では、パイプラインレジスタ26及び27に格納されたデータが、レジスタファイル16に転送され格納される。以上のIF、ID、EX、MA、WBの各フェーズがある着目命令について順次実行され、且つIF、ID、EX、MA、WBの全フェーズがある着目サイクルにおいて別個の命令に対して同時に実行されることにより、演算パイプラインが実現される。なおその際、複数の演算器20乃至22を設け、命令発行判定回路15から複数の命令を複数の演算器20乃至22に対して同時並列に発行可能な構成となっている。これにより、複数の演算パイプラインが同時進行可能となる。
図2は、ALUの構成の一例を示す図である。図2に示すALUは、例えば図1のALU32又は34に相当する。ALU32又は34は、加減算回路41、論理演算回路42、及びシフト回路43を含む。加減算回路41は、2つのオペランドin0及びin1の加算或いは減算を実行する。論理演算回路42は、2つのオペランドin0及びin1の論理演算(例えばビット毎のAND演算やOR演算等)を実行する。シフト回路43は、オペランドin0の各ビットをオペランドin1が示す数だけ右シフト或いは左シフトするシフト演算を実行する。
図3は、演算器カスケードによりデータ依存関係にある2つのシフト命令を実行する構成を示す図である。図3において、図1と同一の構成要素は同一の番号で参照し、その説明は省略する。図3は、図1に示す第2の演算器21と第3の演算器22との詳細な構成を示す図である。第2の演算器21のALU32は、加減算回路50、論理演算回路51、シフト回路52、及びマルチプレクサ(MUX)53を含む。第3の演算器22のALU34は、シフト回路54、加減算回路55、論理演算回路56、及びマルチプレクサ(MUX)57乃至59を含む。またシフト数生成回路33は、加算器60を含む。第2の演算器21のマルチプレクサ53及び第3の演算器22のマルチプレクサ59はそれぞれ、加減算回路、論理演算回路、及びシフト回路の演算結果の何れかを選択して次段に出力するためのものである。
図3に示されるように、第3の演算器22は、シフト演算を実行するシフト回路54と2つのシフト命令のシフト数を加減算するシフト数生成回路33とを含む。これにより、第2の演算器21と第3の演算器22とをカスケード接続し、データ依存関係にある2つのシフト命令を実行することが可能となる。即ち、シフト数生成回路33により求めたシフト数に応じてシフト回路54によるシフト演算を実行することにより、データ依存関係のある2つのシフト命令を1回のシフト演算で実行可能な構成となっている。
具体的には、第3の演算器22は、第2の演算器21のオペランドin01と第3の演算器22のオペランドin11とをシフト数生成回路33に入力する信号経路を含む。また第3の演算器22は、シフト数生成回路33の出力と第3の演算器22のオペランドin11との何れかを選択してシフト回路54にシフト数として入力するマルチプレクサ58を含む。第3の演算器22は更に、第2の演算器21のオペランドin00と第3の演算器22のオペランドin10との何れかを選択してシフト数生成回路33にシフト対象データとして入力するマルチプレクサ57を含む。シフト回路54は、マルチプレクサ57から供給されたオペランドの各ビットを、マルチプレクサ58から供給されたシフト数だけシフトすることで、シフト演算を実行する。なおシフト演算には、右シフト、左シフト、或いは算術右シフト等が存在するが、これらの区別は実行するシフト命令により指定されている。シフト命令を命令発行判定回路15がデコードした結果に従って、第3の演算器22を制御することにより、シフト命令により指定したタイプのシフト演算が実行される。
図4は、図3に示す構成によるシフト演算を説明するための図である。なお図4において、シフト演算に関係ない部分(例えば加減算回路等)については表示を省略してある。この図4に示すのは、各演算器の各シフト回路により、独立にシフト演算を並列実行する場合であり、有効データが流れる経路が太線で示してある。同時並列に発行される2つのシフト命令にデータ依存関係が無い場合には、以下に説明するように、独立にシフト演算が並列実行される。
第2の演算器21は、第1のシフト命令に関連して、シフト対象データであるオペランドin00と、シフト数であるオペランドin01とを受け取る。この例では、オペランドin00がデータR0であり、オペランドin01が数8である。第2の演算器21のシフト回路52は、データR0を8ビットだけ例えば左シフトすることにより、シフト後のデータR1を出力out0として出力する。ここでR1=R0<<8となる。なお演算子“<<”は左シフトを示し、“<<”の左側の項はシフト対象データ、“<<”の右側の項はシフト数である。
第3の演算器22は、第1のシフト命令とデータ依存関係に無い第2のシフト命令に関連して、シフト対象データであるオペランドin10と、シフト数であるオペランドin11とを受け取る。この例では、オペランドin10がデータR3であり、オペランドin11が数2である。第3の演算器22のシフト回路54は、データR3を2ビットだけ例えば左シフトすることにより、シフト後のデータR2を出力out1として出力する。ここでR2=R3<<2となる。
図5は、図3に示す構成によるシフト演算を説明するための図である。この図5に示すのは、データ依存関係のある2つのシフト命令を1回のシフト演算で実行する場合であり、有効データが流れる経路が太線で示してある。同時並列に発行される第1のシフト命令及び第2のシフト命令にデータ依存関係が有る場合には、以下に説明するように、第3の演算器22のシフト回路54により、2つのシフト命令を1回のシフト演算で実行する。
第2の演算器21は、第1のシフト命令に関連して、シフト対象データであるオペランドin00と、シフト数であるオペランドin01とを受け取る。この例では、オペランドin00がデータR0であり、オペランドin01が数8である。第2の演算器21のシフト回路52は、データR0を8ビットだけ例えば左シフトすることにより、シフト後のデータR1を出力out0として出力する。ここでR1=R0<<8となる。この第1のシフト命令の演算結果R1は、第2のシフト命令以外にも後の命令の演算等に使用する可能性があるので、第2のシフト命令の演算結果とは独立に求めて保存しておく。
第3の演算器22は、第1のシフト命令とデータ依存関係が有る第2のシフト命令を実行する。この場合実行すべき命令は、R2=R1<<2である。ここでデータR1は、上記の第2の演算器21のシフト演算結果である。この第2のシフト命令を実行するために、第3の演算器22は、第2のシフト命令のシフト数“2”であるオペランドin11を受け取る。シフト数生成回路33は、第1のシフト命令のシフト数“8”と第2のシフト命令のシフト数“2”とを加算して、合計のシフト数“10”を求める。このシフト数“10”が、マルチプレクサ58を介してシフト回路54に供給される。シフト回路54はまた、第2の演算器21のシフト対象データであるオペランドin00(データR0)をマルチプレクサ57を介して受け取る。シフト回路54は、データR0を10ビットだけ例えば左シフトすることにより、シフト後のデータR2を出力out1として出力する。ここでR2=R0<<10となる。
ここで第3の演算器22の出力R2は、
R2=R0<<10
=((R0<<8)<<2)
=(R1<<2)
である。即ち、第3の演算器22の出力R2は、第1のシフト命令の演算結果を第2のシフト命令によりシフト演算したものとなる。言葉を換えて言えば、第3の演算器22は、データ依存関係のある第1のシフト命令及び第2のシフト命令の2つのシフト命令を1回のシフト演算で実行したことになる。
仮に、第2の演算器21の出力データR1を第3の演算器22の入力としてカスケード接続すれば、同時発行された第1のシフト命令と第2のシフト命令とを同一の演算フェーズ内で順次実行することができる。しかしながら、シフト回路の入出力間の論理ゲートの段数は比較的多く、シフト回路を2段カスケード接続してしまったのでは、データ入力から演算結果データ出力までの遅延時間が大幅に増大してしまう。それに対して、図3乃至図5で説明した構成を用いれば、シフト数生成回路33と一段のシフト回路54とによりシフト演算を実行するので、遅延時間は一段のシフト回路54のみの場合と比較してそれ程増大しない。例えば、データ幅が32ビットの場合、シフト数は高々32であり、シフト数を5ビットで表現できる。この場合、シフト数生成回路33は6ビット程度の加算器で構成できることになり、シフト数生成回路33の入出力間の論理ゲートの段数は、シフト回路の入出力間の論理ゲートの段数に比較して格段に少ない数となる。従って、シフト数生成回路33と一段のシフト回路54とによりシフト演算を実行する構成では、単純に2つのシフト回路をカスケード接続する場合に比較して、遅延時間を小さくすることができる。
シフト命令では、一般に、命令のフィールドで指定される即値としてシフト数を指定する場合とレジスタ値によりシフト数を指定する場合の2つの場合がある。汎用レジスタの個数が32個であれば、命令フィールド中の5ビットによりレジスタを指定できる。即値指定の場合は例えば、命令フィールド中の5ビットをシフト数生成回路の入力とすればよい。レジスタ指定の場合は、指定されるレジスタの値の下位5ビットのみをシフト数として供給する方式が多い。従って、シフト数生成回路33において高々6ビット程度の加算器を用いることにより、シフト数を決定することができる。
図6は、シフト数生成回路33及びシフト回路54の構成の一例を示す図である。シフト命令には、例えば、論理右シフトや論理左シフト等の種類がある。図6には、論理右シフト及び論理左シフトの何れかを選択して実行可能なシフト演算回路の構成を示す。シフト数生成回路33は、加算器60、減算器61、減算器62、及びマルチプレクサ63を含む。加算器60は、第1のシフト命令のシフト数x1と第2のシフト命令のシフト数y1とを加算する。減算器61は、第1のシフト命令のシフト数x1から第2のシフト命令のシフト数y1を減算する。減算器62は、第2のシフト命令のシフト数y1から第1のシフト命令のシフト数x1を減算する。このように、シフト数生成回路33は、2つのシフト命令のシフト数の和を計算する加算器60、2つのシフト命令のシフト数の差を計算する減算器61、及び、前記差とは正負が反転したシフト数の差を計算する減算器62を含む。マルチプレクサ63は、加算器60、減算器61、及び減算器62の何れかの演算結果を選択し、シフト数生成回路33の出力とする。シフト回路54は、左シフタ64、右シフタ65、及びマルチプレクサ66を含む。マルチプレクサ66は、左シフタ64及び右シフタ65の何れかの演算結果を選択し、シフト回路54の出力とする。
論理右シフト及び論理左シフトのそれぞれにおいて、シフト数指定方法として即値指定方式及びレジスタ指定方式がある。命令の表記としては、例えば、
即値指定の論理左シフト命令: LLI Rs0,imm,Rd
レジスタ指定の論理左シフト命令: LL Rs0,Rs1,Rd
即値指定の論理右シフト命令: LRI Rs0,imm,Rd
レジスタ指定の論理右シフト命令: LR Rs0,Rs1,Rd
等となる。ここで、Rs0はシフト対象データを格納するレジスタ、Rdはシフト演算結果を格納するレジスタ、immは数値であり即値指定の場合のシフト数、Rs1はシフト数を格納するレジスタである。上記のような命令が命令発行判定回路15に供給されると、命令発行判定回路15は当該命令をデコードし、デコード結果に従って、当該命令を実行するための所定の制御信号を生成する。この制御信号に応じて、例えば図6のマルチプレクサ63による選択動作及びマルチプレクサ66による選択動作が制御され、所望のシフト演算結果が得られることになる。
図7は、図6のシフト数生成回路33及びシフト回路54の動作制御の一例を示す図である。図7(a)は、マルチプレクサ63の選択動作を示したテーブルである。図7(b)は、マルチプレクサ66の選択動作を示したテーブルである。図7(a)に示すように、データ依存関係にある2つの命令のうちの先行命令が論理左シフト命令で後続命令が論理左シフト命令の場合、マルチプレクサ63は、図6に示す加算器60の出力Aを選択して出力する。この場合、図7(b)に示すように、マルチプレクサ66は、図6に示す左シフタ64の出力Dを選択して出力する。これにより、2つのシフト命令のシフト数同士が加算され、その合計シフト数に応じた左シフト演算の結果が得られることになる。
図7(a)に示すように、データ依存関係にある2つの命令のうちの先行命令が論理左シフト命令で後続命令が論理右シフト命令の場合、マルチプレクサ63は、図6に示す減算器61の出力B又は減算器62の出力Cを選択して出力する。この際、互いに正負が反転した同一値である出力B及びCのうちで、値が0以上である方の出力が選択される。なおこの際、減算器61の出力B及び減算器62の出力Cの少なくとも一方の最上位ビットに基づいて、何れを選択するかを判断することができる。更に、図7(b)に示すように、マルチプレクサ66は、上記の出力Bが選択された場合には図6に示す左シフタ64の出力Dを選択して出力し、上記の出力Cが選択された場合には図6に示す右シフタ65の出力Eを選択して出力する。これにより、第1のシフト命令の左シフト数が第2のシフト命令の右シフト数以上であるときには、シフト数の差に等しい数の左シフト演算の結果が得られ、それ以外の場合にはシフト数の差に等しい数の右シフト演算の結果が得られることになる。
図7(a)に示すように、データ依存関係にある2つの命令のうちの先行命令が論理右シフト命令で後続命令が論理左シフト命令の場合、マルチプレクサ63は、図6に示す減算器61の出力B又は減算器62の出力Cを選択して出力する。この際、互いに正負が反転した同一値である出力B及びCのうちで、値が0以上である方の出力が選択される。なおこの際、減算器61の出力B及び減算器62の出力Cの少なくとも一方の最上位ビットに基づいて、何れを選択するかを判断することができる。更に、図7(b)に示すように、マルチプレクサ66は、上記の出力Bが選択された場合には図6に示す右シフタ65の出力Eを選択して出力し、上記の出力Cが選択された場合には図6に示す左シフタ64の出力Dを選択して出力する。これにより、第1のシフト命令の右シフト数が第2のシフト命令の左シフト数以上であるときには、シフト数の差に等しい数の右シフト演算の結果が得られ、それ以外の場合にはシフト数の差に等しい数の左シフト演算の結果が得られることになる。
更に、図7(a)に示すように、データ依存関係にある2つの命令のうちの先行命令が論理右シフト命令で後続命令が論理右シフト命令の場合、マルチプレクサ63は、図6に示す加算器60の出力Aを選択して出力する。この場合、図7(b)に示すように、マルチプレクサ66は、図6に示す右シフタ65の出力Eを選択して出力する。これにより、2つのシフト命令のシフト数同士が加算され、その合計シフト数に応じた右シフト演算の結果が得られることになる。
図8は、図1の命令発行判定回路15の動作の一例を示すフローチャートである。前述のように、命令発行判定回路15は、複数の発行候補の命令をデコードして、同時並列に発行可能な命令を特定して発行する。なお説明の便宜上、以下の説明において、複数の発行候補の命令の数は2つであるとする。図1の例の場合のように発行候補の命令の数が3つの場合であっても、場合分けが複雑になるだけであり、同様の処理により同時並列に発行可能な命令を特定して発行することができる。
まずステップS1において、命令発行判定回路15は、通常の発行判定を実行する。これは、同時並列発行の候補である複数の命令間にデータ依存関係やハードウェア的な資源競合等が存在するか否かを判断し、この判断に基づいて同時並列に発行する命令を特定するものである。命令レジスタ14に格納される連続する命令のうち先頭の2つの命令を受け取り、2つの命令を同時並列に発行可能であれば、これら2つの命令を同時並列に発行可能な命令として特定する。先頭の1つの命令のみが発行可能であれば、この命令のみを発行可能な命令として特定する。
ステップS2において、命令発行判定回路15は、後続命令のみ発行不可であるか否かを判定する。即ち、先頭の1つの命令のみが発行可能である場合であるのか否かを判定する。後続命令のみ発行不可である場合、ステップS3に進む。それ以外の場合にはステップS6に進む。
ステップS3において、命令発行判定回路15は、これら2つの連続する命令がどちらもシフト命令であって、そのシフトされる値のレジスタ番号に依存関係があるために後続命令が発行不可となっているのか否かを判定する。例えば、先行命令でシフト演算結果をレジスタR1に格納し、後続命令で同一のレジスタR1の格納値に対して更にシフト演算を実行する場合が該当する。ステップS3の判定結果がYESであれば、ステップS4に進む。ステップS4において、命令発行判定回路15は、シフト数生成回路33を用いて後続命令も同時発行する。即ち、命令発行判定回路15は、先行命令を第2の演算器21に対して発行すると共に、後続命令を第3の演算器22に対して発行し、更に第3の演算器22に対してはシフト数生成回路33を用いてシフト演算を実行するように制御する。
ステップS3の判定結果がNOであれば、ステップS5に進む。ステップS5において、命令発行判定回路15は、後続命令は先行命令と同時並列には発行不可であると決定する。次のステップS6において、命令発行判定回路15は、通常の発行判定に基づき命令を発行する。
このようにして、命令発行判定回路15は、第2の演算器21にデータ依存関係のある2つのシフト命令のうちの先行命令を発行すると共に、第3の演算器22にデータ依存関係のある2つのシフト命令のうちの後続命令を発行する。更に、命令発行判定回路15は、シフト数生成回路33を用いたシフト演算を実行するように第3の演算器22を制御する。これにより、第3の演算器22は、データ依存関係のある2つのシフト命令を1回のシフト演算で実行する。従って、データ依存関係のある2つのシフト命令を同時並列に発行しながらも、遅延時間が長くなるのを避けることができる。
上記のようにデータ依存関係のある2つのシフト命令を1回のシフト演算で実行する構成は、インオーダ方式により同時並列に命令を発行する構成に限定されるものではなく、アウトオブオーダ方式により同時並列に命令を発行する構成に用いることができる。但し、前述のように、アウトオブオーダ方式では、データ依存関係により命令が発行できなくとも、それに後続する命令を先に発行できる可能性があるので、データ依存関係により命令が発行できないことによるペナルティーがそれ程大きくない。それに対してインオーダ方式では、データ依存関係により命令が発行できない場合、それに後続する命令を先に発行することはできないので、データ依存関係により命令が発行できないことによるペナルティーが大きい。従って、データ依存関係のある2つのシフト命令を1回のシフト演算で実行する構成は、インオーダ方式の場合に特に効果が大きい。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
なお本願発明は以下の内容を含むものである。
(付記1)
複数の演算器と、
複数の命令を前記複数の演算器に対して同時並列に発行する命令発行部と
を含み、前記複数の演算器の少なくとも1つの演算器は、
シフト演算を実行するシフト回路と、
2つのシフト命令のシフト数を加減算するシフト数生成回路と、
を含み、前記シフト数生成回路により求めたシフト数に応じて前記シフト回路によるシフト演算を実行することにより、データ依存関係のある2つのシフト命令を1回のシフト演算で実行するよう構成されたことを特徴とする情報処理装置。
(付記2)
前記命令発行部は、前記複数の演算器の他の1つの演算器に前記データ依存関係のある2つのシフト命令のうちの先行命令を発行すると共に、前記少なくとも1つの演算器に前記データ依存関係のある2つのシフト命令のうちの後続命令を発行することを特徴とする付記1記載の情報処理装置。
(付記3)
前記少なくとも1つの演算器は、前記他の1つの演算器の第1のオペランドと前記少なくとも1つの演算器の第1のオペランドとを前記シフト数生成回路に入力する信号経路を含むことを特徴とする付記1又は2記載の情報処理装置。
(付記4)
前記少なくとも1つの演算器は、
前記シフト数生成回路の出力と前記少なくとも1つの演算器の前記第1のオペランドとの何れかを選択して前記シフト回路にシフト数として入力するマルチプレクサと、
前記他の1つの演算器の第2のオペランドと前記少なくとも1つの演算器の第2のオペランドとの何れかを選択して前記シフト数生成回路にシフト対象データとして入力するマルチプレクサと
を含むことを特徴とする付記3記載の情報処理装置。
(付記5)
前記シフト数生成回路は、
2つのシフト命令のシフト数の和を計算する加算器と、
2つのシフト命令のシフト数の差を計算する減算器と、
前記差とは正負が反転したシフト数の差を計算する減算器と、
を含み、前記シフト回路は、
左シフトを計算する左シフタと、
右シフトを計算する右シフタと、
を含むことを特徴とする付記1乃至4何れか一項記載の情報処理装置。
(付記6)
前記命令発行部は、インオーダ方式で命令を前記複数の演算器に対して発行することを特徴とする付記1乃至5記載何れか一項記載の情報処理装置。
11 プログラムカウンタ(PC)
12 分岐予測器
13 命令キャッシュ
14 命令レジスタ
15 命令発行判定回路
16 レジスタファイル
17〜19 パイプラインレジスタ
20〜22 演算器
23,24 パイプラインレジスタ
25 データキャッシュ
26,27 パイプラインレジスタ
28 マルチプレクサ(MUX)

Claims (5)

  1. 複数の演算器と、
    複数の命令を前記複数の演算器に対して同時並列に発行する命令発行部と
    を含み、前記複数の演算器の少なくとも1つの演算器は、
    シフト演算を実行するシフト回路と、
    2つのシフト命令のシフト数を加減算するシフト数生成回路と、
    を含み、前記シフト数生成回路により求めたシフト数に応じて前記シフト回路によるシフト演算を実行することにより、データ依存関係のある2つのシフト命令を1回のシフト演算で実行するよう構成されたことを特徴とする情報処理装置。
  2. 前記命令発行部は、前記複数の演算器の他の1つの演算器に前記データ依存関係のある2つのシフト命令のうちの先行命令を発行すると共に、前記少なくとも1つの演算器に前記データ依存関係のある2つのシフト命令のうちの後続命令を発行することを特徴とする請求項1記載の情報処理装置。
  3. 前記少なくとも1つの演算器は、前記他の1つの演算器の第1のオペランドと前記少なくとも1つの演算器の第1のオペランドとを前記シフト数生成回路に入力する信号経路を含むことを特徴とする請求項1又は2記載の情報処理装置。
  4. 前記少なくとも1つの演算器は、
    前記シフト数生成回路の出力と前記少なくとも1つの演算器の前記第1のオペランドとの何れかを選択して前記シフト回路にシフト数として入力するマルチプレクサと、
    前記他の1つの演算器の第2のオペランドと前記少なくとも1つの演算器の第2のオペランドとの何れかを選択して前記シフト数生成回路にシフト対象データとして入力するマルチプレクサと
    を含むことを特徴とする請求項3記載の情報処理装置。
  5. 前記シフト数生成回路は、
    2つのシフト命令のシフト数の和を計算する加算器と、
    2つのシフト命令のシフト数の差を計算する減算器と、
    前記差とは正負が反転したシフト数の差を計算する減算器と、
    を含み、前記シフト回路は、
    左シフトを計算する左シフタと、
    右シフトを計算する右シフタと、
    を含むことを特徴とする請求項1乃至4何れか一項記載の情報処理装置。
JP2010119849A 2010-05-25 2010-05-25 情報処理装置 Expired - Fee Related JP5505083B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010119849A JP5505083B2 (ja) 2010-05-25 2010-05-25 情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010119849A JP5505083B2 (ja) 2010-05-25 2010-05-25 情報処理装置

Publications (2)

Publication Number Publication Date
JP2011248539A JP2011248539A (ja) 2011-12-08
JP5505083B2 true JP5505083B2 (ja) 2014-05-28

Family

ID=45413733

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010119849A Expired - Fee Related JP5505083B2 (ja) 2010-05-25 2010-05-25 情報処理装置

Country Status (1)

Country Link
JP (1) JP5505083B2 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5957339A (ja) * 1982-09-27 1984-04-02 Matsushita Electric Ind Co Ltd レジスタ制御回路
JP3543181B2 (ja) * 1994-11-09 2004-07-14 株式会社ルネサステクノロジ データ処理装置
US6263420B1 (en) * 1997-09-17 2001-07-17 Sony Corporation Digital signal processor particularly suited for decoding digital audio

Also Published As

Publication number Publication date
JP2011248539A (ja) 2011-12-08

Similar Documents

Publication Publication Date Title
JP3599409B2 (ja) 分岐予測装置
JP5471082B2 (ja) 演算処理装置および演算処理装置の制御方法
JP2009048532A (ja) マイクロプロセッサ
JP2009075676A (ja) マイクロプロセッサ
KR20100032441A (ko) 조건부 명령을 비조건부 명령 및 선택 명령으로 확장하기 위한 방법 및 시스템
JP5154119B2 (ja) プロセッサ
TW201428611A (zh) 響應於輸入資料値以降低在積和熔加運算(fma)單元中的功率消耗之技術
JP5491071B2 (ja) 命令融合演算装置および命令融合演算方法
CN104899181B (zh) 用于处理向量操作数的数据处理装置和方法
US6922714B2 (en) Floating point unit power reduction scheme
JP2006529043A (ja) 飽和あり、または飽和なしで、オペランドの積和を実行するプロセッサ簡約ユニット
US9354893B2 (en) Device for offloading instructions and data from primary to secondary data path
JP2019511056A (ja) 複素数乗算命令
US7774582B2 (en) Result bypassing to override a data hazard within a superscalar processor
JP5326314B2 (ja) プロセサおよび情報処理装置
US20070180220A1 (en) Processor system
JP5505083B2 (ja) 情報処理装置
Kiat et al. A comprehensive analysis on data hazard for RISC32 5-stage pipeline processor
US7437544B2 (en) Data processing apparatus and method for executing a sequence of instructions including a multiple iteration instruction
US6079011A (en) Apparatus for executing a load instruction or exchange instruction in parallel with other instructions in a dual pipelined processor
US8375078B2 (en) Fast floating point result forwarding using non-architected data format
JP2014164659A (ja) プロセッサ
Hasan et al. An improved pipelined processor architecture eliminating branch and jump penalty
Tina et al. Performance improvement of MIPS Architecture by Adding New features
JP2015185076A (ja) Vliwプロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130403

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140210

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: 20140218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140303

R150 Certificate of patent or registration of utility model

Ref document number: 5505083

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees