JP6428488B2 - 加減算器及び加減算器の制御方法 - Google Patents

加減算器及び加減算器の制御方法 Download PDF

Info

Publication number
JP6428488B2
JP6428488B2 JP2015108361A JP2015108361A JP6428488B2 JP 6428488 B2 JP6428488 B2 JP 6428488B2 JP 2015108361 A JP2015108361 A JP 2015108361A JP 2015108361 A JP2015108361 A JP 2015108361A JP 6428488 B2 JP6428488 B2 JP 6428488B2
Authority
JP
Japan
Prior art keywords
input
register
data
circuit
output
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.)
Active
Application number
JP2015108361A
Other languages
English (en)
Other versions
JP2016224596A (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 JP2015108361A priority Critical patent/JP6428488B2/ja
Priority to US15/093,797 priority patent/US9959095B2/en
Publication of JP2016224596A publication Critical patent/JP2016224596A/ja
Application granted granted Critical
Publication of JP6428488B2 publication Critical patent/JP6428488B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Advance Control (AREA)

Description

本発明は,加減算器及び加減算器の制御方法に関する。
演算器は、入力データをラッチする2つのオペランドレジスタと、演算結果データをラッチする結果レジスタと、オペランドレジスタと結果レジスタとの間に設けられた演算回路とを有する。また、演算器は、オペランドレジスタと結果レジスタとの間に複数の演算回路を並列に有し、複数の演算回路の演算結果データをセレクタにより選択し、選択した演算結果データを結果レジスタがラッチする。また、演算器は、結果レジスタがラッチしたデータを、オペランドレジスタに供給するバイパスルートを有する。結果レジスタの演算結果データをレジスタファイルに書き込み、その後レジスタファイルに書き込んだデータをオペランドレジスタがラッチし演算回路が演算するより、バイパスルートを利用して演算結果データを直接オペランドレジスタがラッチするほうが、短時間で次の演算を実行できる。
演算器の一つである加減算器は、オペランドレジスタと結果レジスタとの間に、一方のオペランドレジスタの入力データを反転または非反転する第1のXOR回路(XOR:eXclusive OR、排他的論理和)と、加算回路とを有する。第1のXOR回路は、加減算器が減算を実行する場合に入力データを反転し、加算を実行する場合に入力データを反転しない。加算回路は、オペランドレジスタの入力データのXORを演算する第2のXOR回路と、入力データからキャリーデータを生成するキャリー演算器と、第2のXOR回路の出力とキャリー演算器の出力のXORを演算する第3のXOR回路を有する。そして、加減算器は、第3のXOR回路の出力をラッチする結果レジスタと、第3のXOR回路の出力をオペランドレジスタにバイパスする第1のバイパスルートを有する。
加減算器は、オペランドレジスタから第3のXOR回路の出力までの遅延時間が、オペランドレジスタと結果レジスタに供給するクロック周期の限界(最短周期)となる。つまり、このクロック周期の限界を決めるクリティカルパスは、演算回路内のオペランドレジスタから第3のXOR回路までの経路である。
加減算器のクリティカルパスを改良して上記の遅延時間を短くすることが提案されている。例えば、以下の特許文献2である。この加減算器は、第1のXOR回路をオペランドレジスタの前段に設け、第2のバイパスルート内に、第2のXOR回路の出力を反転または非反転する第4のXOR回路と、第4のXOR回路とキャリー出力のXORを演算する追加の第3のXOR回路とを有し、追加の第3のXOR回路の出力をオペランドレジスタに第2のバイパスルートを経由して供給する。
特開2000−89937号公報 米国特許第7,313,586B2
しかしながら、上記の加減算器は、クリティカルパスの遅延時間をある程度短縮してはいるが、2つのバイパスルートを有するためハードウエア量の増大を招く。また、上記の加減算器は、キャリー演算器の出力のファンアウトが2と増えているのでクリティカルパスの遅延短縮が限定的である。
そこで,実施の形態の第1の側面の目的は,ハードウエア量を抑制しクリティカルパスの遅延を抑制する加減算器及び加減算器の制御方法を提供することにある。
実施の形態の第1の側面は,第1の入力線からのデータと第1のバイパス線を介して入力される演算結果のいずれかを選択する第1の入力セレクタと、
第2の入力線からのデータを第1の制御ビットに応じて反転または非反転する第1のXOR回路と、
前記第1のXOR回路の出力と前記第1のバイパス線を介して入力される前記演算結果のいずれかを選択する第2の入力セレクタと、
前記第1の入力セレクタの出力をクロックに応答して保持する第1のオペランドレジスタと、
前記第2の入力セレクタの出力を前記クロックに応答して保持する第2のオペランドレジスタと、
前記演算結果を前記クロックに応答して保持する結果レジスタと、
前記第1のオペランドレジスタの第1の入力データと前記第2のオペランドレジスタの第2の入力データとを入力し、前記第1の入力データと前記第2の入力データとの演算結果を、前記結果レジスタに出力するとともに、前記演算結果を前記第1の入力セレクタの入力と第2の入力セレクタの入力とに前記第1のバイパス線を介してそれぞれ出力する加算回路とを有し、
前記加算回路は、前記第1の入力データ前記第2の入力データとの排他的論理和を演算する第2のXOR回路と、前記第1の入力データと第2の入力データとのキャリーデータを演算するキャリー演算器と、前記第2のXOR回路の出力を第2の制御ビットに応じて反転または非反転する第4のXOR回路と、前記キャリー演算器の出力と前記第4のXOR回路の出力との排他的論理和を演算した前記演算結果を出力する第3のXOR回路とを有する、加減算器である。
第1の側面によれば,ハードウエア量を抑制しクリティカルパスの遅延を抑制する加減算器及び加減算器の制御方法を提供する。
演算器の一例を示す図である。 加減算回路の演算アルゴリズムを説明する図である。 演算器の別の例を示す図である。 本実施の形態における加減算回路を有する演算器の構成を示す図である。 キャリー演算器の回路の一例を示す図である。 コンディションコード生成回路157の構成を示す図である。 レジスタファイルのデータA,Bを入力し減算A−B=Xを演算する動作を示す図である。 第1の命令でC+D=Yの演算を行い、次の第2の命令でE−Y=Zの演算を行う動作を示す図である。 第1の命令でC+D=Yの演算を行い、次の第2の命令でE−Y=Zの演算を行う動作を示す図である。 本実施の形態の演算器が、最短のバイパスルートBP1で次の命令の演算を行う動作と、最短ではないバイパスルートBP2で次の命令の演算を行う動作を示すタイミングチャート図である。 本実施の形態の演算器が、演算結果の反転データを最短バイパスルートBP1を経由して第1、第2のオペランドレジスタ109,110に転送する動作を示す図である。 本実施の形態の演算器が、演算結果の非反転データYと反転データ〜Yを最短ではないバイパスルートBP2を経由して第1、第2のオペランドレジスタ109,110にラッチする動作を示す図である。 本実施の形態の演算器が同じ演算結果Yを入力として減算を行う動作を示す。 一般的なEDGE命令を実行する場合の動作を示す図である。 本実施の形態における演算器による同じ演算結果を入力として他の演算器がEDGE演算を行う場合の動作を示す図である。
図1は、演算器の一例を示す図である。演算器は、複数のデータが格納されるレジスタファイル101、102と、レジスタファイル内のデータを選択するセレクタ103、104と、セレクタ103、104の出力をクロックCLKに応答してラッチする第1及び第2の中継オペランドレジスタ105、106を有する。さらに、演算器は、第1及び第2の中継オペランドレジスタ105、106からの入力線と、演算器の出力をバイパスするバイパスルート(バイパス線)158と、他のパイプラインの演算器からのルート(入力線)のいずれかをそれぞれ選択する2つのセレクタ107、108と、セレクタ107、108の出力をクロックCLKに応答してラッチする第1及び第2のオペランドレジスタ109,110を有する。第1及び第2のオペランドレジスタ109,110は、演算器が処理するビット数、例えば64ビット、のデータをラッチ(保持)する。
演算器は、第1及び第2のオペランドレジスタ109,110と、演算器の演算結果データをクロックCLKに応答してラッチする結果レジスタ112aとの間に、加減算回路152、153aと、他の演算器153bを並列に有する。
加減算回路は、第2のオペランドレジスタ110からの第2の入力データを制御レジスタ151内の反転制御ビットに応じて反転または非反転する第1の排他的論理和回路(以下XOR回路)152と、加算回路153aとを有する。この加算回路は、第1のオペランドレジスタ109からの第1の入力データと第1のXOR回路152の出力データのXORを生成する第2のXOR回路155と、第1の入力データと第1のXOR回路の出力からキャリーデータを生成するキャリー演算器154と、第2のXOR回路155の出力データとキャリー演算器154の出力データのXORを演算する第3のXOR回路156を有する。
そして、加減算回路は、第3のXOR回路156の出力データをクロックCLKに応答してラッチする結果レジスタ112aと、第3のXOR回路156の出力データを第1及び第2のオペランドレジスタ109,110にバイパスする第1のバイパスルート158を有する。
また、演算器は、加減算回路152、153aと他の演算器153bの出力のいずれかを選択する出力セレクタ111を有する。さらに、演算器は、加減算のコンディションコードを生成するコンディションコード生成回路157と、その出力をクロックCLKに応答してラッチするコンディションコード結果レジスタ112bを有する。
さらに、結果レジスタ112a,112bがラッチした演算結果データは、ルート159を経由して、結果レジスタの中継レジスタ113にラッチされ、レジスタファイル101にライトバックされる。また、結果レジスタ112aの演算結果データはルート159とセレクタ107,108を経由して第1及び第2のオペランドレジスタ109,110にバイパスされる場合もあり、さらに、他のパイプラインの演算器に転送される場合もある。
図2は、加減算回路の演算アルゴリズムを説明する図である。図2は、第1及び第2のオペランドレジスタ109,110内の4ビットの第1及び第2の入力データOP1<3:0>=0111、OP2<3:0>=0010の加算演算例を示す。この2つの入力データOP1,OP2の場合のキャリーデータCA<4:0>=01100も示されている。この場合、加減算回路は、第1、第2の入力データOP1、OP2とキャリーデータCA<4:0>をそれぞれXOR演算することで、加算結果SUM<3:0>=1001を生成する。
一方、図2には、図1の加減算回路152,153aが示されている。第1のXOR回路152は、反転制御ビットレジスタ151の反転制御ビットに応じて、第2の入力データOP2を反転または非反転する。図2の加算演算の場合、反転制御ビットは「0」になり、第1のXOR回路152は、第2の入力データOP2をそのまま出力する。そして、第2のXOR回路155は、第1、第2入力データOP1,OP2をXOR演算する奇偶判定する回路であり、第3のXOR回路156は、キャリーデータCAと第2のXOR回路155の出力をXOR演算する。
加減算回路152,153aが減算を行う場合、反転制御ビットは「1」になり、第2の入力データOP2を反転する。そして、図示されないが、キャリー演算器154の最下位キャリービットCA<0>に「1」が入力される。この結果、減算の場合、加算回路153aは以下の演算を実行する。
OP1−OP2=OP1+〜OP2+1 (〜OP2はOP2の反転を示す)
図3は、演算器の別の例を示す図である。図3の加減算回路252,253aは、前述の特許文献2に記載された回路であり、図1の加減算回路の第1、第2のオペランドレジスタ109,110から第3のXOR回路156までのクリティカルパスの遅延時間を短縮した例である。図3中、図1と同じ回路要素には同じ引用番号を付した。また、図3中、図1と異なる回路要素には200番代の引用番号を付した。
図3の加減算回路252,253aは、図1と異なり、第2の入力データOP2を反転制御ビットに応じて反転または非反転する第1のXOR回路252を、第2のオペランドレジスタ110より前段に設ける。そして、第3のXOR回路156の出力を、第1のバイパスルート158を経由して第1、第2のオペランドレジスタ109、110にバイパスする。これにより、第2のオペランドレジスタ110から第3のXOR回路156までのクリティカルパスから第1のXOR回路252が除去され、クリティカルパスは、加算回路253a内のキャリー演算器154と第3のXOR回路156のパスになる。これにより、クリティカルパスの遅延時間が第1のXOR回路252の遅延時間分短縮される。
一方、第1のXOR回路252を第2のオペランドレジスタ110の前段に設けたことに伴い、現在の命令の加減算結果データを次の命令で加減算することを可能にするため、図3の加減算回路は、次の構成を有する。すなわち、図3の加減算回路は、XOR回路155の出力データを反転制御ビットに応じて反転/非反転するXOR回路259と、XOR回路259の出力データとキャリー出力CAとをXOR演算するXOR回路256と、XOR回路259の出力データを第2のオペランドレジスタ110にバイパスする第2のバイパスルート260とを有する。すなわち、図1において、次のクロックサイクルのために、第3のXOR回路156の出力を第1のXOR回路152(252)で反転/非反転するという回路の順番を逆にして、図3は、第1のXOR回路152(252)に対応するXOR回路259を、第3のXOR回路156に対応するXOR回路256の前段に設ける。XOR演算は、順番を入れ替えても同じ演算結果が得られる特性を利用することで、このようなXOR回路の順番の入れ替えが可能である。
これにより、次の命令で減算する場合は、反転制御ビットレジスタ251bの反転制御ビットを「1」にして、XOR回路259が第2のXOR回路155の出力データを反転し、XOR回路256がキャリー出力CAとXOR回路259の出力とのXOR演算を行い、反転済みの結果データを第2のバイパスルート260経由で第2のオペランドレジスタ110にバイパスする。
上記の第1のバイパスルート158と、第2のバイパスルート260は、共に、途中にレジスタがなく、1クロックサイクルで転送可能な最短バイパスルートである。しかも、キャリー演算器154は、少なくとも2段のXOR回路以上の遅延時間を有するので、キャリー演算器154の遅延時間は、少なくとも第2のXOR回路155とXOR回路259の遅延時間以上である。つまり、第1、第2のバイパスルート158,260の遅延時間は、それぞれ、キャリー演算器154と第3のXOR回路156の遅延時間と、キャリー演算器154とXOR回路256の遅延時間になり、両者は同等の遅延時間になる。
したがって、図3の加減算器は、次の命令で加減算結果データを減算する場合は、反転制御ビットレジスタ251bに反転制御ビット「1」を格納して現在の命令の加減算結果データを反転し、次の命令では、セレクタ108が第2のバイパスルート260を選択し、加算器253aが減算を行う。次の命令で加減算結果を加算する場合は、セレクタ108は第1のバイパスルート158を選択する。または、反転制御ビット「0」によりXOR回路259が反転せず、第2のバイパスルート260をセレクタ108が選択する。
また、図3の演算器は、第1のXOR回路252を第2のオペランドレジスタ110の前段に設けたため、中継オペランドレジスタ106の出力と、結果レジスタ112aの出力データが転送されるバイパスルート159のいずれかを選択するセレクタ250を有する。
しかしながら、図3の加減算回路において、次の点を改良することが望ましい。第1に、図3のキャリー演算器154の出力が第3のXOR156と、第2のバイパスルート260のXOR回路256とに供給されるため、キャリー演算器のファンアウトが2となる。これにより、クリティカルパスの遅延時間が大きくなる。第2に、図3は、加算回路253aとそれに並列に設けられる他の演算器253bを有し、それらの演算結果をオペランドレジスタ110にバイパスする第1のバイパスルート158に加えて、加減演算結果を反転したデータをバイパスする第2のバイパスルート260を有する。そのため、バイパスルートが冗長になり、ハードウエア資源が増大する。
[本実施の形態の加減算回路]
本実施の形態の加減算回路は、図3の2つの点を改良する。つまり、第1に、キャリー演算器154の出力のファンアウトを減らし、最短のバイパスルートの冗長構成をなくす。第2に、クリティカルパスの遅延時間をできるだけ短くする。
図4は、本実施の形態における加減算回路を有する演算器の構成を示す図である。図4中、図1、図3と同じ回路要素には同じ引用番号を付した。また、図4中、図1、図3と異なる回路要素には300番代の引用番号を付した。
図4の加減算回路252,353aは、図3と同様に、第1、第2のオペランドレジスタ109,110と、結果レジスタ112aとコンディションコード結果レジスタ112bとを有する。さらに、加減算回路は、図3と同様に、反転(または減算)制御ビットレジスタ251aの反転制御ビットに応じて第3の入力セレクタ350が選択する入力ルートのデータを反転または非反転する第1のXOR回路252を、第2のオペランドレジスタ110の前段に有する。そして、加減算回路は、第1、第2オペランドレジスタ108,110と結果レジスタ112aとの間に、加算回路353aを有する。また、演算器は、第1、第2オペランドレジスタ108,110と結果レジスタ112aとの間に、加算回路353aと並列に、他の演算器353bを有する。
加算回路353aは、第1、第2のオペランドレジスタ109,110の第1、第2の入力データOP1,OP2のXOR演算を行い奇偶判定する第2のXOR回路155を有する。そして、図3と異なり、第2のXOR回路155と第3のXOR回路356との間に、第1のバイパス制御レジスタ352bの制御ビットに応じて第2のXOR回路155の出力データを反転または非反転する第4のXOR回路359を有する。
この構成において、キャリー演算器154は、前述したとおり、少なくとも2段のXOR回路の遅延時間を有するので、第4のXOR回路359を追加しても、加算回路353aのクリティカルパスの遅延時間が悪化することはない。この図4における加算回路353a内の第2のXOR回路155と第4のXOR回路359と第3のXOR回路356の構成は、図3の第2のXOR回路155とXOR回路259とXOR回路256と同等である。
そして、図4の演算器は、加減算回路を構成する加算回路353aの第3のXOR回路356の出力と他の演算器353bの出力のいずれかを選択する出力セレクタ111の出力を、最短の第1のバイパスルート(バイパス線)BP1を経由して第1、第2の入力セレクタ307,308にバイパスし(入力し)、第1、第2のオペランドレジスタ109,110でクロック同期でラッチ可能にする。つまり、図4の演算器では、最短のバイパスルートBP1は単一のバイパスルートであり、図3のように冗長していない。これにより、最短のバイパスルート数が図3より少なく、回路規模が小さくなる。
また、加算回路353a内のキャリー演算器154の出力は、第3のXOR回路356にしか接続されないので、図3の例よりファンアウト数が削減されて、ファンアウト数1になっている。これにより、オペランドレジスタ109,110と第3のXOR回路356までのクリティカルパスの遅延時間が、図3より短くなる。前述したとおり、キャリー演算器154の遅延時間は、少なくとも2つのXOR回路の遅延時間以上であるから、キャリー演算器154の出力のファンアウト数の削減は、クリティカルパスの遅延時間の短縮に寄与する。
図4の演算器は、図3と異なり次の構成を有する。
(構成1)加算器353aが、演算結果データを第1のバイパス制御レジスタ352bの制御ビットに応じて反転する第4のXOR回路359を有する。さらに、他の演算器353bの出力を、第1のバイパス制御レジスタ352bの制御ビットに応じて反転または非反転するXOR回路359bを有する。そして、出力セレクタ111が、加算回路353aの出力か他の演算器353bのXOR回路359bの出力のいずれかを選択する。これにより、演算器は、加減算回路252,353aの演算結果の出力と、他の演算器353bの演算結果の出力のいずれかを、最短のバイパスルートBP1を経由して、第1、第2のオペランドレジスタ109,110にバイパスする。そのため、加減算回路の加算回路353aまたは他の演算器353bの演算結果データを、次のクロックサイクルでオペランドレジスタ109,110がラッチし、演算回路が演算でき、連続する命令の演算サイクルを最短のクロックサイクルで実行できる。後で再度詳述する。
(構成2)演算器は、結果レジスタ112aの出力データを、第1のバイパス制御レジスタ352cの制御ビットに応じて反転または非反転する第5のXOR回路358を有する。加算回路353a内の第4のXOR回路359が第1のバイパス制御レジスタ352bの制御ビットに応じて第2のXOR回路155の出力を反転した場合、第5のXOR回路358が同じ制御ビットで再度反転する。これにより、最短のバイパスルートBP1には演算結果データの反転データを出力し、最短ではない別のバイパスルートBP2には演算結果データの非反転データを出力することができる。最短のバイパスルートBP1により演算結果の反転データを第1、第2のオペランドレジスタ109,110にラッチし、同時に、別のバイパスルートBP2により演算結果の非反転データをレジスタファイル101,102にライトバックできる。後で改めて詳述する。
(構成3)演算器は、全てゼロのデータを格納するオールゼロレジスタ362を有し、オールゼロレジスタ362の出力データは、第1の入力セレクタ307を介して第1のオペランドレジスタ109にラッチされ、一方で、出力データは、第3の入力セレクタ350と第1のXOR回路252と第2の入力セレクタ308を介して第2のオペランドレジスタ110にラッチされる。これにより、同じデータの反転データと非反転データを第1、第2のオペランドレジスタ109,110にそれぞれラッチし、加算回路353aと他の演算器353bでそれぞれの演算を実行することができる。最短のバイパスルートBP1が加算回路353aまたは他の演算器353bの出力データとその反転データを第1、第2のオペランドレジスタ109,110に供給できないが、オールゼロレジスタ362の出力データとその反転データを第1、第2のオペランドレジスタ109,110にラッチできる。後で改めて詳述する。
(構成4)演算器は、加算回路が同じデータの減算を行う場合にコンディションコード生成回路157が生成するコンディションコードを格納する定数レジスタ360と、コンディションコード生成回路157の出力と定数レジスタ360の出力のいずれかを選択するセレクタ361を有する。これにより、後述するとおり、他の演算器353bがEDGE演算を行う場合に、必要なコンディションコードをコンディションコード結果レジスタ112bにラッチすることができる。後で改めて詳述する。
(構成5)図4の演算器は、第3の入力セレクタ350と、第1、第2の入力セレクタ307,308と、出力セレクタ111と、セレクタ361に選択信号を供給する第2のバイパス制御レジスタ362とを有する。第3の入力セレクタ350は、第2の中継オペランドレジスタ106と、第2のバイパスルートBP2と、オールゼロレジスタ360のいずれかを選択する。第1の入力セレクタ307は、第1の中継オペランドレジスタ105と、他のパイプラインからの入力と、第1のバイパスルートBP1と、第2のバイパスルートBP2と、オールゼロレジスタ360のいずれかを選択する。第2の入力セレクタ308は、第1のXOR回路252と、他のパイプラインからの入力と、第1のバイパスルートBP1のいずれかを選択する。出力セレクタ111は、加減算回路の加算回路353aの出力、または、他の演算器353bの出力を反転または非反転するXOR回路359bの出力のいずれかを選択する。そして、コンディションコード出力のセレクタ361は、コンディションコード生成回路157の出力、または定数レジスタ360の出力のいずれかを選択する。
(構成6)図4の演算器は、さらに、加算回路353a内の第4のXOR回路359と、他の演算器353bの出力を反転または非反転するXOR回路359bとに入力される制御ビットをラッチする第1のバイパス制御レジスタ352を有する。
そして、図4には、タイミングを制御するクロックCLKによるクロックサイクルB1,B2,Xが示されている。クロックサイクルB1では、データが中継オペランドレジスタ105,106,反転(または減算)制御ビットレジスタ251、第1、第2のバイパス制御ビットレジスタ352a,362aの入力に供給される。クロックサイクルB2では、中継オペランドレジスタ105,106,反転(または減算)制御ビットレジスタ251、第1、第2のバイパス制御ビットレジスタ352a,362aが、クロックCLKに応答してデータをラッチする。演算器は、クロックサイクルB1,B2で、レジスタファイル101,102などの入力データを第1、第2のオペランドレジスタ109,110の入力まで転送する。
クロックサイクルXでは、第1、第2のオペランドレジスタ109,110と、バイパス制御レジスタ352b、362bが、クロックCLKに応答して入力データをラッチする。これにより、クロックサイクルXでは、加算回路353aや他の演算器356bの演算が行われ、演算結果が結果レジスタの入力まで転送される。
クロックサイクルUでは、結果レジスタ112a,112bがクロックに応答して演算結果とコンディションコードをラッチする。つまり、クロックサイクルUは、演算結果データを中継結果レジスタ113に転送するサイクルである。そして、クロックサイクルCでは、中継結果レジスタ113がクロックに応答して演算結果データをラッチしレジスタファイルにライトバックする。
[キャリー演算器]
次に、本実施の形態において、加算回路内のキャリー演算器154が少なくとも2つのXOR回路の遅延時間を有することについて説明する。
図5は、キャリー演算器の回路の一例を示す図である。キャリー演算器は、2つの入力データA<63:0>とB<63:0>のそれぞれのビットの論理積G<63:0>と論理和P<63:0>を生成するP,G生成回路10と、それぞれ4ビットの論理積Gと論理和Pと1ビットのキャリービットCを入力するキャリールックアヘッド(CLA)回路11,12,13を有する。CLA回路については次のとおりである。
Figure 0006428488
Figure 0006428488
Figure 0006428488
Figure 0006428488
したがって、各4ビットCLAが1段のXOR回路程度であるので、キャリー演算器154の遅延時間は、少なくとも2段のXOR回路以上の遅延時間になる。
[コンディションコード生成回路]
図6は、コンディションコード生成回路157の構成を示す図である。コンディションコード(Condition Code)は、演算結果の状態を4ビットで表す補助データであり、以下の4種類のビットn,z,v,cで構成される。
(1)演算結果の符号が負であることを表すビットn
(2)演算結果の値が0になったことを表すビットz
(3)演算結果の値の桁が飽和(オーバーフロー:OVF)したことを表すビットv
(4)加算/減算結果の値の桁が飽和し繰り上げの値(キャリー値)として出てきたことを表すビットc
図6において、キャリー演算器154のキャリー値をCARRY<64:1>とし、加算回路353aの計算結果をRESULT<63:0>と表現すると、コンディションコードCCは以下のように求められる。
(1)n=RESULT<63> (データ幅が64bitのとき)
(2)ビットzは、演算結果の全てのビットのNAND値であるので、反転を「〜」、ANDを「・」とすると、NANDゲート400の出力zは、以下のとおりである。
z= 〜(RESULT <63>・RESULT<62>・…・RESULT<1>・RESULT<0>)
(3)ビットv は、正の数同士の和でCARRY<63>=1とき、または負の数同士の和でCARRY<63>=0のときに1になる。図中、オーバーフローチェック回路401は、CARRY<63>、CARRY<64>を入力してビットvを出力する。
(4)ビットc は、CARRY<64>である。
図6のとおり、コンディションコード生成回路157は、加算回路353aの加算結果RESULT<63:0>と、キャリー演算器154の出力CARRY<63>、CARRY<64>とを入力し、コンディションコードn,z,v,cを生成する。なお、図4において、キャリー演算器154の出力がコンディションコード生成回路157に入力する信号線が省略されている。
[演算器の動作]
以下、本実施の形態の加減算回路を有する演算器(加減算器)の動作について説明する。以下の図において、セレクタが選択している配線は太線で示し、セレクタの選択信号は矩形内文字で、各レジスタの値は円形内文字でそれぞれ示す。また、以下の説明でデータの反転を「〜」で示す。したがって、〜YはYの反転を意味する。
図7は、レジスタファイルのデータA,Bを入力し減算A−B=Xを演算する動作を示す図である。クロックサイクルB1で、レジスタファイル101、102内のデータA、Bが中継オペランドレジスタ105、106の入力まで転送され、減算制御ビットレジスタ251aの入力には減算制御ビット「1」が転送され、第1のバイパス制御レジスタ352aの入力には制御ビット「0」が転送される。
次に、クロックサイクルB2で、中継オペランドレジスタ105,106が入力データA、Bをラッチし、減算制御ビットレジスタ251aが減算制御ビット「1」をラッチし、第1のバイパス制御レジスタ352aは制御ビット「0」をラッチする。そして、第3の入力セレクタ350が入力3を選択し、第1の入力セレクタ307が入力5を、第2の入力セレクタ308が入力3をそれぞれ選択し、第1、第2のオペランドレジスタ109,110の入力にはデータA,〜Bが転送される。また、第1のバイパス制御レジスタ352bの入力には制御ビット「0」が転送される。このとき、第1のXOR回路252は、入力データBを反転しない。
次に、クロックサイクルXで、第1、第2のオペランドレジスタ109,110が入力データA,〜Bをラッチし、また、第1のバイパス制御レジスタ352bが制御ビット「0」をラッチする。これにより、加算回路353aは、入力データA,〜Bと制御ビット「0」を入力し、A+〜B+1=Xを演算し、結果レジスタ112aの入力には演算結果Xが転送される。第1のバイパス制御レジスタ352bの制御ビット「0」により、第4のXOR回路359は、第2のXOR回路155の出力を反転しない。
そして、クロックサイクルUで、結果レジスタ112aが演算結果Xをラッチし、CC結果レジスタ112bがCC生成回路157の出力をラッチし、第1のバイパス制御レジスタ352cが制御ビット「0」をラッチする。そして、第5のXOR回路358は結果レジスタ112の演算結果Xを反転せず、演算結果Xが中継結果レジスタ113の入力に転送される。次のクロックサイクルCで中継結果レジスタ113が演算結果Xをラッチし、ラッチされた演算結果Xはレジスタファイル101にライトバックされる。この例では、演算結果Xが最短のバイパスルートBP1を経由してオペランドレジスタ109,110にバイパスされることはない。
[構成1、2に対応する動作]
次に、前述した構成1、2に対応する動作を説明する。
図8、図9は、第1の命令でC+D=Yの演算を行い、次の第2の命令でE−Y=Zの演算を行う動作を示す図である。また、図10は、本実施の形態の演算器が、最短のバイパスルートBP1で次の命令の演算を行う動作と、最短ではないバイパスルートBP2で次の命令の演算を行う動作を示すタイミングチャート図である。図8、9の動作は、図10の最短のバイパスルートBP1で次の命令の演算を行う動作に対応し、図8は命令1(C+D=Y)の動作、図9は命令2の動作(E−Y=Z)を示す。
図10のサイクルP,PTは、命令デコード後の命令に対応する制御信号を演算器に投入するタイミングである。サイクルB1は、入力データを中継オペランドレスタ105,106まで転送するタイミングであり、サイクルB2は、オペランドレジスタ109,110まで転送するタイミングである。サイクルXは、オペランドレジスタ109,110が入力データをラッチし、演算回路(加算回路353aと他の演算器353b)が演算し、演算結果を結果レジスタ112aまで転送するタイミングである。サイクルUは、結果レジスタ112aが演算結果をラッチし、中継結果レジスタ113まで転送するタイミングであり、サイクルCはレジスタファイル101にライトバックするタイミングである。
図8において、クロックサイクルB1で、中継オペランドレジスタ105,106の入力までレジスタファイル内のデータC,Dが転送され、同時に、第1のバイパス制御レジスタ352aの入力まで制御ビット「1」が転送される。
次のクロックサイクルB2で、中継オペランドレジスタ105,106がレジスタファイル内のデータC,Dをラッチする。同時に、第1のバイパス制御レジスタ352aが制御ビット「1」をラッチする。そして、第3の入力セレクタが入力3を選択し、第1、第2の入力セレクタが入力5、3をそれぞれ選択し、第1、第2のオペランドレジスタ109、110の入力までデータC,Dが転送される。同時に、第1のバイパス制御レジスタ352bの入力まで制御ビット「1」が転送される。
次に、演算クロックサイクルXで、第1、第2のオペランドレジスタ109、110が入力データC,Dをラッチする。同時に、第1のバイパス制御レジスタ352bが制御ビット「1」をラッチする。そして、加算回路353aが、C+D=Yを演算し、第1のバイパス制御レジスタ352bの制御ビット「1」により第4のXOR回路359が第2のXOR回路155の出力データを反転し、第3のXOR回路356が反転データ〜Yを生成する。そして、出力セレクタ111が入力1を選択し、結果レジスタ112aの入力まで反転データ〜Yが転送される。同時に、第1のバイパス制御レジスタ352cの入力まで制御ビット「1」が転送される。
上記のように、次の命令2でE−Y=Zを演算することが予測され、第1のバイパス制御レジスタ352に制御ビット「1」がラッチされ、加算回路353aが反転データ〜Yを出力する。
そして、次のクロックサイクルUで、結果レジスタ112aが反転データ〜Yをラッチする。同時に、第1のバイパス制御レジスタ352cが制御ビット「1」をラッチする。そして、第5のXOR回路358が制御ビット「1」により反転データ〜Yを反転し、中継結果レジスタ113の入力まで非反転データYが転送される。さらに、クロックサイクルCで中継結果レジスタ113がデータYをラッチし、データYがレジスタファイル101にライトバックされる。
図9において、演算器は、図8の演算結果〜Yを最短バイパスルートBP1を介して第2のオペランドレジスタ110にラッチし、命令2の演算E−Y=Zを演算する。この場合、命令1のサイクルXと命令2のサイクルB2とが同じクロックサイクルになる。図10のクロックサイクルT5に示されるように、図8の命令1(C−D=Y)のサイクルXで生成された反転演算結果〜Yが、図9の命令2(E−Y=Z)のサイクルB2では、第2の入力セレクタ308を経由して第2のオペランドレジスタ110の入力まで転送されている。また、命令2のサイクルB2で、レジスタファイル内のデータEが、中継オペランドレジスタ105でラッチされ、第1の入力セレクタ307を経由して第1のオペランドレジスタ109の入力まで転送されている。
次に、命令2のサイクルXで、第1、第2のオペランドレジスタ109,110が入力データE,〜Yをそれぞれラッチし、加算回路353aがE+(〜Y)+1=Zの演算を行い、演算結果データZを結果レジスタ112aの入力まで転送する。同時に、CC生成回路157は上記演算のコンディションコードCCを生成し、結果レジスタ112bの入力まで転送する。
そして、命令2のサイクルUで、結果レジスタ112a,112bが演算結果Z,CCをラッチし、サイクルCで中継結果レジスタ113が演算結果Z,CCをラッチし、レジスタファイル101にライトバックする。
上記の図8、9、10による説明によれば、本実施の形態の演算器(加減算器)は、クロックサイクルT5での命令1のサイクルXで、命令1の演算結果Yを予め反転しておき、最短のバイパスルートBP1を経由して第2のオペランドレジスタ110に転送しておく。そのため、次のクロックサイクルT6での命令2のサイクルXで、命令2の減算に必要な反転データ〜Yを第2のオペランドレジスタ110にラッチし、演算することができる。これにより、連続するクロックサイクルT5,T6で、命令1と命令2の演算サイクルXを実行することができる。この点は、前述の構成1に対応する。
上記の図8によれば、本実施の形態の演算器(加減算器)は、次の命令2(E−Y=Z)のために、命令1(C+D=Y)の段階で加算回路353aが反転データ〜Yを生成する。しかし、第5のXOR回路358が非反転データYを生成し、レジスタファイルへの演算結果Yのライトバックを可能にする。つまり、演算器は、最短のバイパスルートBP1には演算結果データの反転データ〜Yを出力し、最短ではない別のバイパスルートBP2には演算結果データの非反転データYを出力することができる。この点は、前述の構成2に対応する。
[構成3に対応する動作]
次に、前述の構成3に対応する動作を説明する。
図11、本実施の形態の演算器が、演算結果の反転データを最短バイパスルートBP1を経由して第1、第2のオペランドレジスタ109,110に転送する動作を示す図である。図8において、命令1のサイクルXで、加算回路353aが入力データC,Dから〜(C+D)=〜Yを演算し、その反転データ〜Yを最短バイパスルートBP1を経由して第1、第2のオペランドレジスタ109,110の入力まで転送する。
つまり、図11に示す通り、命令2のサイクルB2で、反転データ〜Yが最短バイパスルートBP1を経由して第1、第2のオペランドレジスタ109,110の入力まで転送される。その結果、命令2のサイクルXで、加算回路353aは、演算結果YについてY−Yの演算を行うことができない。
図12は、本実施の形態の演算器が、演算結果の非反転データYと反転データ〜Yを最短ではないバイパスルートBP2を経由して第1、第2のオペランドレジスタ109,110にラッチする動作を示す図である。次の通り、演算器は、最短バイパスルートBP1より1クロックサイクル遅いバイパスルートBP2を利用することで、演算結果の非反転データYと反転データ〜Yを第1、第2のオペランドレジスタ109,110に転送できる。この動作は、図10のバイパスルートBP2経由で演算結果を入力する場合に対応する。
図12では、図10(B)の命令1のサイクルXは、次の命令2のサイクルB1と同じクロックサイクルT5になるため、命令2の演算サイクルXはクロックサイクルT7になる。そのため、図10(A)の最短バイパスルートB1経由で演算結果を入力する場合の命令2の演算サイクルXがクロックサイクルT6になる場合に比較すると、1クロックサイクル遅くなる。
図12において、命令1(C+D=Y)のサイクルU(命令2(Y−Y)ではサイクルB2)にて、結果レジスタ112aが演算結果Yをラッチし、最短ではないバイパスルートBP2を経由して第1のオペランドレジスタ109の入力まで転送する。同じサイクルで、結果レジスタ112aの演算結果Yが第3の入力セレクタ350を介して第1のXOR回路252に入力され、減算制御ビットレジスタ251aの減算制御ビット「1」により反転され、その反転データ〜Yが第2のオペランドレジスタ110の入力まで転送する。
したがって、命令2のサイクルXでは、第1、第2のオペランドレジスタ109,110がラッチし、演算結果データYとその反転データ〜Yとをラッチし、加算回路353aがY−Y=Y+〜Yを演算する。
上記のように、最短でないバイパスルートBP2を経由することで、第1、第2のオペランドレジスタ109,110に演算結果データYとその反転データ〜Yとをラッチすることはできるが、結果レジスタ112aがラッチしたデータを使用するので、次の命令の演算サイクルXの実行が1クロックサイクル遅れる。
図13は、本実施の形態の演算器が同じ演算結果Yを入力として減算を行う動作を示す。図13では、演算器が、クロックサイクルの遅れを伴うことなく、命令2の減算を実行する。この動作は、前述の構成3により可能になる。
図13において、図10(A)に示すとおり、クロックサイクルT5(命令1(C+D=Y)の演算サイクルX、命令2(Y−Y)のサイクルB2)で、バイパス制御セレクタレジスタ362aのセレクト信号「1」により、第3の入力セレクタ350が入力1を選択し、オールゼロレジスタ362の出力(64ビット全てゼロ、オールゼロ)が第1のXOR回路252で反転(または減算)制御ビットレジスタ251aの反転制御ビット「1」により反転され、第2の入力セレクタ308を経由し、第2のオペランドレジスタ110の入力まで転送される。一方、オールゼロレジスタ362の出力が第1の入力セレクタ307を経由し、第1のオペランドレジスタ109の入力まで転送される。
そして、クロックサイクルT6(命令2(Y−Y))のサイクルX)で、第1、第2のオペランドレジスタ109,110がオールゼロとオール1の入力データをラッチし、加算回路353aが0−0=0+(〜0)+1を演算する。そして、演算結果「0」が結果レジスタ112aまで転送され、CC生成回路157が0−0のコンディションコードCCを生成し、CC結果レジスタ112bまで転送される。そして、次のクロックサイクルT7(命令2(Y−Y)のサイクルUで、結果レジスタ112a,112bがそれぞれの転送されたデータをラッチする。
図13の例では、加算回路353aがY−Yの演算に代えて0−0の演算を実行する。両者の演算結果は共にオールゼロであるので、演算結果は正しい。そして、クロックサイクルT5,T6で、加算回路353aが、命令1(C+D=Y)と命令2(Y−Y)の演算サイクルXを連続するクロックサイクルで実行する。
図13において、加算回路353aがY−Yの演算を行う代わりに、他の演算器353bがANDN(AND NOT)命令、ORN(OR NOT)命令、XORN(XOR NOT)命令を実行する場合にも適用できる。これらの命令の演算は、減算と同様に第2のオペランドレジスタ110に入力データの反転データをラッチして行われる。そして、ANDN命令、ORN命令、XORN命令の場合
も、以下のように入力データXを「0」と置き換えても同じ演算結果になる。
ANDN命令:X&(〜X)=0,0&(〜0)=0
ORN命令:X|(〜X)=1,0|(〜0)=1
XORN命令:X^(〜X)=1,0^(〜0)=1
以上の通り、構成3によれば、最短のバイパスルートBP1が加算回路353aまたは他の演算器353bの出力データとその反転データを第1、第2のオペランドレジスタ109,110に供給できないが、しかし、オールゼロレジスタ362のデータとその反転データを第1、第2のオペランドレジスタ109,110にラッチできる。したがって、次の命令が減算、ANDN命令、ORN命令、XORN命令の場合は、前の命令のサイクルX(次の命令のサイクルB2)で、オールゼロレジスタ362のデータ「0」とその反転データ「1」を第1、第2のオペランドレジスタ109,110の入力まで転送することで、次のクロックサイクルで次の命令のサイクルXを実行できる。
[構成4に対応する動作]
図11で説明したとおり、本実施の形態の演算器は、演算結果データを最短のバイパスルートBP1を経由して第1、第2のオペランドレジスタ109,110に転送し、これらのレジスタが同じ演算結果データをラッチする。そして、図12で説明したとおり、第1、第2のオペランドレジスタ109,110に演算結果データとその反転データをラッチするには、最短でないバイパスルートBP2を利用しなければならない。
したがって、演算器は、他の演算器353bが同じ演算結果データを入力とするEDGE命令を演算し、同時に加算回路353aが演算結果データとその反転データを演算する場合に支障が発生する。すなわち、図11のように同じ演算結果データYまたはその反転データ〜Yを最短のバイパスルートBP1を経由して第1、第2のオペランドレジスタ109,110にラッチし他の演算器353bがEDGE命令を実行する場合、加算回路353aは同じ演算結果データYまたはその反転データ〜Yの減算(Y−Y,〜Y−〜Y)を行うことができない。そのため、CC生成回路157が減算に伴うコンディションコードを生成できない。
EDGE命令は、データの下位ビットをマスクする演算であり減算とは異なる演算であり、コンディションコードは減算の結果を用いて生成される。したがって、EDGE命令を実行する場合、加算回路353aは減算を実行してCC生成回路に減算に対するコンディションコードを生成させる必要がある。EDGE命令の入力データと演算結果の一例(EDGE8の例)は、以下の表に示すとおりである。
Figure 0006428488
そこで、本実施の形態の構成4によれば、演算器は、加算回路が同じデータの減算を行うときにコンディションコード生成回路157が生成するコンディションコードを格納する定数レジスタ360と、コンディションコード生成回路157の出力と定数レジスタ360の出力のいずれかを選択するセレクタ361を有する。
これにより、他の演算器353bが同じ演算結果データを入力してEDGE演算を行う場合に、同じ演算結果データを減算した場合のコンディションコードを定数レジスタ360から出力しコンディションコード結果レジスタ112bにラッチすることができる。
図14は、一般的なEDGE命令を実行する場合の動作を示す図である。この例では、第2、第1のオペランドレジスタ110,109が、演算結果Yの反転データ〜Yと、レジスタファイル101から入力した入力データEとをそれぞれラッチし、加算回路353aが減算E−Y=E+〜Y+1を実行する。一方、他の演算器353bは入力データ〜Yを反転し、入力データEとYについてEDGE命令の演算を実行する。EDGE演算は、加算回路353aのように遅延時間を最小限にする必要はないため、EDGE演算を行う他の演算器353bは、第2のオペランドレジスタ110がラッチした反転データ〜Yを反転して、入力データE、YについてEDGE命令を実行する。
図15は、本実施の形態における演算器による同じ演算結果を入力として他の演算器がEDGE演算を行う場合の動作を示す図である。この例では、EDGE命令のサイクルB2で、前の命令を実行した加算回路353aによる演算結果〜Yが、最短のバイパスルートBP1を経由して第1、第2のオペランドレジスタ109,110の入力まで転送される。さらに、EDGE命令のサイクルXで、演算結果〜Y,〜Yが第1、第2のオペランドレジスタ109,110にラッチされる。これにより、他の演算器353bが、入力データ〜Y,〜YについてEDGE命令を実行する。
一方、定数レジスタ360は、同じ入力データを減算した場合にCC生成回路157が生成するコンディションコード「0100」を格納し、EDGE命令のサイクルXで、そのコンディションコード「0100」が第2のバイパス制御レジスタ362b内のセレクタ361の選択信号「2」に基づいて選択され、結果レジスタ112bの入力まで転送される。
そして、次のサイクルUで、結果レジスタ112aが他の演算器353aのEDGE命令の結果EDGE(〜Y,〜Y)=Zをラッチし、結果レジスタ112bがコンディションコード「0100」をラッチする。
このように、プロセッサの命令デコーダは、前命令の演算結果データ〜Yを最短のバイパスルートBP1を経由して第1、第2のオペランドレジスタ109,110にラッチし、他の演算器353bで入力データ〜Y、〜YについてEDGE命令の演算をする場合は、EDGE命令のサイクルB2で第2のバイパス制御レジスタ362aにセレクタ361の選択信号「2」をラッチさせる。それにより、演算器は、コンディションコードについては、加算回路353aとCC生成回路157を使用せず、定数レジスタ360内の「0100」を結果レジスタ112bに出力する。
以上説明したとおり、本実施の形態によれば、以下の効果を奏することができる。
(1)加減算器が、ビット反転用の第1のXOR回路252をオペランドレジスタ109,110の前段に有する。また、オペランドレジスタと結果レジスタ112aとの間に設けられる加算回路353aが、遅延時間が長いキャリー演算器154に並列に、ビット判定用の第2のXOR回路155と、次の減算命令などのためのビット反転用の第4のXOR回路359を有する。そして、第3のXOR回路356の出力がバイパスルートBP1を経由してオペランドレジスタ109,110の入力まで転送され、演算サイクルでラッチされる。したがって、キャリー演算器154のファンアウトが1つになり、オペランドレジスタ109,110から第3のXOR回路356の出力までの遅延時間を短くできる。また、最短のバイパスルートBP1を冗長化せず1つに減らすことができる。そのため、加減算器は、クロック周期を短くでき、少ないクロック数で連続する命令を演算処理できる。
(2)加算回路内で第4のXOR回路359がビット反転した場合は、加算回路353aは、演算結果データとして反転データ〜Yを出力する。しかし、結果レジスタ112aの後段に再ビット反転用のXOR回路358を設けることで、加減算器は、演算結果データをレジスタファイルにライトバックすると共に、バイパスルートBP1を経由して演算結果の反転データ〜Yをオペランドレジスタ109,110に転送できる。
(3)上記の構成により、加減算器は、最短のバイパスルートBP1を経由する場合は、異なる演算結果データを第1、第2のオペランドレジスタ109,110にラッチできない。しかし、オールゼロレジスタ362を設けて、オールゼロレジスタ362のオールゼロデータを第1のオペランドレジスタ109には反転することなく供給し、第2のオペランドレジスタ110には第1のXOR回路252を介して反転して供給する。したがって、演算器は、次の命令の演算が減算、ANDN、ORN、XORN命令の場合、それらの演算を最小のクロックサイクル数で連続して実行できる。
(4)加減算器は、同じ入力データを減算した場合のコンディションコード「0100」を格納する定数レジスタ360と、CC生成回路157の出力と定数レジスタ360の出力のいずれかを選択するセレクタ361を有する。これにより、同じ演算結果データをオペランドレジスタ109,110にラッチして他の演算器がEDGE命令を実行する場合、同じ演算結果データを減算した場合のコンディションコードを結果レジスタ112bにラッチすることができる。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
第1の入力線からのデータと第1のバイパス線を介して入力される演算結果のいずれかを選択する第1の入力セレクタと、
第2の入力線からのデータを第1の制御ビットに応じて反転または非反転する第1のXOR回路と、
前記第1のXOR回路の出力と前記第1のバイパス線を介して入力される前記演算結果のいずれかを選択する第2の入力セレクタと、
前記第1の入力セレクタの出力をクロックに応答して保持する第1のオペランドレジスタと、
前記第2の入力セレクタの出力を前記クロックに応答して保持する第2のオペランドレジスタと、
前記演算結果を前記クロックに応答して保持する結果レジスタと、
前記第1のオペランドレジスタの第1の入力データと前記第2のオペランドレジスタの第2の入力データとを入力し、前記第1の入力データと前記第2の入力データとの演算結果を、前記結果レジスタに出力するとともに、前記演算結果を前記第1の入力セレクタの入力と第2の入力セレクタの入力とに前記第1のバイパス線を介してそれぞれ出力する加算回路とを有し、
前記加算回路は、前記第1の入力データ前記第2の入力データとの排他的論理和を演算する第2のXOR回路と、前記第1の入力データと第2の入力データとのキャリーデータを演算するキャリー演算器と、前記第2のXOR回路の出力を第2の制御ビットに応じて反転または非反転する第4のXOR回路と、前記キャリー演算器の出力と前記第4のXOR回路の出力との排他的論理和を演算した前記演算結果を出力する第3のXOR回路とを有する、加減算器。
(付記2)
さらに、前記第1のXOR回路に前記第1の制御ビットを入力する第1の制御ビットレジスタと、
前記第4のXOR回路に前記第2の制御ビットを入力する第2の制御ビットレジスタを有し、
前記第1の制御ビットは、第2のオペランドレジスタが保持する第2の入力データを反転するか否かを示し、
前記第2の制御ビットは、前記第1のバイパス線でバイパスする前記演算結果を反転するか否かを示す、付記1に記載の加減算器。
(付記3)
前記第1及び第2の入力線にはレジスタファイルから第1及び第2の入力データがそれぞれ供給され、
さらに、前記結果レジスタの出力を前記第2の制御ビットに応じて反転または非反転し、前記レジスタファイルに出力する第5のXOR回路を有する、付記1に記載の加減算器。
(付記4)
さらに、前記加算回路に並列に設けられ、前記第1及び第2のオペランドレジスタのデータを演算する他の演算回路と、
全てゼロデータを有するオールゼロレジスタと、
前記第2の入力線からのデータと前記オールゼロレジスタの出力のいずれかを選択し、前記第1のXOR回路に出力する第3の入力セレクタとを有し、
前記第1の入力セレクタは、前記第1の入力線と前記第1のバイパス線と前記オールゼロレジスタの出力のいずれかを選択する、付記1に記載の加減算器。
(付記5)
さらに、前記加算回路の出力データと前記加算回路内のキャリー信号を入力して所定のコンディションコードを生成するコンディションコード生成回路と、
前記加算回路に並列に設けられ、前記第1及び第2のオペランドレジスタの第1及び第2の入力データを入力しエッジ演算を行うエッジ演算回路と、
前記エッジ演算回路が同じ値の第1及び第2の入力データを演算する場合に、前記加算回路が第1の入力データから第2の入力データを減算するときに前記コンディションコード生成回路が生成するコンディションコードを格納する定数レジスタと、
前記コンディションコード生成回路の出力と前記定数レジスタの出力のいずれかを選択して、コンディションコードの結果レジスタに出力するコンディションコード出力セレクタを有する、付記1に記載の加減算器。
(付記6)
さらに、前記加算回路に並列に設けられ、前記第1及び第2のオペランドレジスタの第1及び第2の入力データを演算する他の演算回路と、
前記他の演算回路の出力データを前記第2の制御ビットに応じて反転または非反転する第6のXOR回路と、
前記加算回路の前記演算結果と前記第6のXOR回路の出力のいずれかを選択し前記結果レジスタに出力する出力セレクタを有する、付記1に記載の加減算器。
(付記7)
第1の入力線からのデータと第1のバイパス線を介して入力される演算結果のいずれかを選択する第1の入力セレクタと、
第2の入力線からのデータを第1の制御ビットに応じて反転または非反転する第1のXOR回路と、
前記第1のXOR回路の出力と前記第1のバイパス線を介して入力される前記演算結果のいずれかを選択する第2の入力セレクタと、
前記第1の入力セレクタの出力をクロックに応答して保持する第1のオペランドレジスタと、
前記第2の入力セレクタの出力を前記クロックに応答して保持する第2のオペランドレジスタと、
前記演算結果を前記クロックに応答して保持する結果レジスタと、
前記第1のオペランドレジスタの第1の入力データと前記第2のオペランドレジスタの第2の入力データとを入力し、前記第1の入力データと前記第2の入力データとの演算結果を、前記結果レジスタに出力するとともに、前記演算結果を前記第1の入力セレクタの入力と第2の入力セレクタの入力とに前記第1のバイパス線を介してそれぞれ出力する加算回路とを有し、
前記加算回路は、前記第1の入力データ前記第2の入力データとの排他的論理和を演算する第2のXOR回路と、前記第1の入力データと第2の入力データとのキャリーデータを演算するキャリー演算器と、前記第2のXOR回路の出力を第2の制御ビットに応じて反転または非反転する第4のXOR回路と、前記キャリー演算器の出力と前記第4のXOR回路の出力との排他的論理和を演算した前記演算結果を出力する第3のXOR回路とを有する加減算器において、
前記加算回路が第1の命令の演算を実行し、第1のクロックサイクルで前記演算結果を前記第1のバイパス線に出力し、
前記第1または第2のオペランドレジスタが、前記第1のクロックサイクルの次の第2のクロックサイクルで、前記第1のバイパス線に出力された前記演算結果を保持する、加減算器の制御方法。
101,102:レジスタファイル
103,104,107,108、111:セレクタ
105,106:中継オペランドレジスタ
109,110:第1、第2のオペランドレジスタ
112a、112b:結果レジスタ
113:結果レジスタの中継レジスタ
151:反転制御ビットレジスタ
152:反転/非反転する第1のXOR回路
153a:加算回路
153b:他の演算器
154:キャリー演算器
155:奇偶計算する第2のXOR回路
156:第3のXOR回路
157:CC(Condition Code)生成回路
BP1:第1のバイパスルート(最短バイパスルート)
252:反転/非反転する第1のXOR回路
350:第3の入力セレクタ
307,308:第1、第2の入力セレクタ
359、359b:次の命令の演算(減算など)のために反転/非反転する第4のXOR回路
356:第3のXOR回路
358:非反転/反転する第5のXOR回路
BP1:最短の第1のバイパスルート
PB2:最短ではない第2のバイパスルート
362:オールゼロレジスタ
360:定数レジスタ
361:出力セレクタ

Claims (6)

  1. 第1の入力線からのデータと第1のバイパス線を介して入力される演算結果のいずれかを選択する第1の入力セレクタと、
    第2の入力線からのデータを第1の制御ビットに応じて反転または非反転する第1のXOR回路と、
    前記第1のXOR回路の出力と前記第1のバイパス線を介して入力される前記演算結果のいずれかを選択する第2の入力セレクタと、
    前記第1の入力セレクタの出力をクロックに応答して保持する第1のオペランドレジスタと、
    前記第2の入力セレクタの出力を前記クロックに応答して保持する第2のオペランドレジスタと、
    前記演算結果を前記クロックに応答して保持する結果レジスタと、
    前記第1のオペランドレジスタの第1の入力データと前記第2のオペランドレジスタの第2の入力データとを入力し、前記第1の入力データと前記第2の入力データとの演算結果を、前記結果レジスタに出力するとともに、前記演算結果を前記第1の入力セレクタの入力と第2の入力セレクタの入力とに前記第1のバイパス線を介してそれぞれ出力する加算回路とを有し、
    前記加算回路は、前記第1の入力データ前記第2の入力データとの排他的論理和を演算する第2のXOR回路と、前記第1の入力データと第2の入力データとのキャリーデータを演算するキャリー演算器と、前記第2のXOR回路の出力を第2の制御ビットに応じて反転または非反転する第4のXOR回路と、前記キャリー演算器の出力と前記第4のXOR回路の出力との排他的論理和を演算した前記演算結果を出力する第3のXOR回路とを有する、加減算器。
  2. さらに、前記第1のXOR回路に前記第1の制御ビットを入力する第1の制御ビットレジスタと、
    前記第4のXOR回路に前記第2の制御ビットを入力する第2の制御ビットレジスタを有し、
    前記第1の制御ビットは、第2のオペランドレジスタが保持する第2の入力データを反転するか否かを示し、
    前記第2の制御ビットは、前記第1のバイパス線でバイパスする前記演算結果を反転するか否かを示す、請求項1に記載の加減算器。
  3. 前記第1及び第2の入力線にはレジスタファイルから第1及び第2の入力データがそれぞれ供給され、
    さらに、前記結果レジスタの出力を前記第2の制御ビットに応じて反転または非反転し、前記レジスタファイルに出力する第5のXOR回路を有する、請求項1に記載の加減算器。
  4. さらに、前記加算回路に並列に設けられ、前記第1及び第2のオペランドレジスタのデータを演算する他の演算回路と、
    全てゼロデータを有するオールゼロレジスタと、
    前記第2の入力線からのデータと前記オールゼロレジスタの出力のいずれかを選択し、前記第1のXOR回路に出力する第3の入力セレクタとを有し、
    前記第1の入力セレクタは、前記第1の入力線と前記第1のバイパス線と前記オールゼロレジスタの出力のいずれかを選択する、請求項1に記載の加減算器。
  5. さらに、前記加算回路の出力データと前記加算回路内のキャリー信号を入力して所定のコンディションコードを生成するコンディションコード生成回路と、
    前記加算回路に並列に設けられ、前記第1及び第2のオペランドレジスタの第1及び第2の入力データを入力しエッジ演算を行うエッジ演算回路と、
    前記エッジ演算回路が同じ値の第1及び第2の入力データを演算する場合に、前記加算回路が第1の入力データから第2の入力データを減算するときに前記コンディションコード生成回路が生成するコンディションコードを格納する定数レジスタと、
    前記コンディションコード生成回路の出力と前記定数レジスタの出力のいずれかを選択して、コンディションコードの結果レジスタに出力するコンディションコード出力セレクタを有する、請求項1に記載の加減算器。
  6. 第1の入力線からのデータと第1のバイパス線を介して入力される演算結果のいずれかを選択する第1の入力セレクタと、
    第2の入力線からのデータを第1の制御ビットに応じて反転または非反転する第1のXOR回路と、
    前記第1のXOR回路の出力と前記第1のバイパス線を介して入力される前記演算結果のいずれかを選択する第2の入力セレクタと、
    前記第1の入力セレクタの出力をクロックに応答して保持する第1のオペランドレジスタと、
    前記第2の入力セレクタの出力を前記クロックに応答して保持する第2のオペランドレジスタと、
    前記演算結果を前記クロックに応答して保持する結果レジスタと、
    前記第1のオペランドレジスタの第1の入力データと前記第2のオペランドレジスタの第2の入力データとを入力し、前記第1の入力データと前記第2の入力データとの演算結果を、前記結果レジスタに出力するとともに、前記演算結果を前記第1の入力セレクタの入力と第2の入力セレクタの入力とに前記第1のバイパス線を介してそれぞれ出力する加算回路とを有し、
    前記加算回路は、前記第1の入力データ前記第2の入力データとの排他的論理和を演算する第2のXOR回路と、前記第1の入力データと第2の入力データとのキャリーデータを演算するキャリー演算器と、前記第2のXOR回路の出力を第2の制御ビットに応じて反転または非反転する第4のXOR回路と、前記キャリー演算器の出力と前記第4のXOR回路の出力との排他的論理和を演算した前記演算結果を出力する第3のXOR回路とを有する加減算器において、
    前記加算回路が第1の命令の演算を実行し、第1のクロックサイクルで前記演算結果を前記第1のバイパス線に出力し、
    前記第1または第2のオペランドレジスタが、前記第1のクロックサイクルの次の第2のクロックサイクルで、前記第1のバイパス線に出力された前記演算結果を保持する、加減算器の制御方法。
JP2015108361A 2015-05-28 2015-05-28 加減算器及び加減算器の制御方法 Active JP6428488B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015108361A JP6428488B2 (ja) 2015-05-28 2015-05-28 加減算器及び加減算器の制御方法
US15/093,797 US9959095B2 (en) 2015-05-28 2016-04-08 Adder-subtractor and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015108361A JP6428488B2 (ja) 2015-05-28 2015-05-28 加減算器及び加減算器の制御方法

Publications (2)

Publication Number Publication Date
JP2016224596A JP2016224596A (ja) 2016-12-28
JP6428488B2 true JP6428488B2 (ja) 2018-11-28

Family

ID=57398463

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015108361A Active JP6428488B2 (ja) 2015-05-28 2015-05-28 加減算器及び加減算器の制御方法

Country Status (2)

Country Link
US (1) US9959095B2 (ja)
JP (1) JP6428488B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10838718B2 (en) * 2017-09-28 2020-11-17 Fujitsu Limited Processing device, arithmetic unit, and control method of processing device
JP7119543B2 (ja) 2018-05-01 2022-08-17 富士通株式会社 加減算回路および加減算回路の制御方法
CN113721986B (zh) * 2021-07-23 2024-02-09 浪潮电子信息产业股份有限公司 一种数据压缩方法、装置及电子设备和存储介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6015745A (ja) * 1983-07-06 1985-01-26 Nec Corp 情報処理装置
JP2988965B2 (ja) * 1990-06-07 1999-12-13 株式会社東芝 パイプライン情報処理回路
JPH07134645A (ja) * 1993-11-10 1995-05-23 Kofu Nippon Denki Kk 情報処理用条件コード生成装置
JPH08137669A (ja) * 1994-11-04 1996-05-31 Fujitsu Ltd 演算回路
US5834947A (en) * 1996-11-01 1998-11-10 Waferscale Integration Inc. Microcontroller accessible macrocell
US20030069914A1 (en) 1998-09-03 2003-04-10 Agilent Technologies Carry lookahead adder having a reduced fanout architecture
JP2001034457A (ja) * 1999-07-19 2001-02-09 Toyo Commun Equip Co Ltd 加減算回路
GB2396708B (en) * 2002-12-05 2006-06-21 Micron Technology Inc Hybrid arithmetic logic unit
US7567997B2 (en) * 2003-12-29 2009-07-28 Xilinx, Inc. Applications of cascading DSP slices
US7313586B2 (en) 2004-03-05 2007-12-25 Broadcom Corporation Adder-subtracter circuit
JP2014164659A (ja) * 2013-02-27 2014-09-08 Renesas Electronics Corp プロセッサ
US9547496B2 (en) * 2013-11-07 2017-01-17 Microsoft Technology Licensing, Llc Energy efficient multi-modal instruction issue
US20160055004A1 (en) * 2014-08-21 2016-02-25 Edward T. Grochowski Method and apparatus for non-speculative fetch and execution of control-dependent blocks
US20160232006A1 (en) * 2015-02-09 2016-08-11 Qualcomm Incorporated Fan out of result of explicit data graph execution instruction

Also Published As

Publication number Publication date
JP2016224596A (ja) 2016-12-28
US9959095B2 (en) 2018-05-01
US20160350075A1 (en) 2016-12-01

Similar Documents

Publication Publication Date Title
TWI405126B (zh) 微處理器及其執行指令之方法
JP4388980B2 (ja) 浮動小数点数の除算または平方根演算を行う演算装置及び演算方法
US10310818B2 (en) Floating point chained multiply accumulate
JPH07210369A (ja) 並列加算および平均演算を行うための回路およびその方法
JPH0635675A (ja) データプロセッサにおいて除算を行うための方法および装置
US9678716B2 (en) Apparatus and method for performing absolute difference operation
Dastan et al. A novel nanometric fault tolerant reversible divider
US20190227771A1 (en) Arithmetic processing device and control method for arithmetic processing device
JP6428488B2 (ja) 加減算器及び加減算器の制御方法
JPS6347827A (ja) 妥当性応答発生装置
CN107003855B (zh) 带进位的原子加法指令
JPWO2007083377A1 (ja) パリティ生成回路、計数回路および計数方法
JP2018045370A (ja) 演算処理装置および演算処理装置の制御方法
Fiolhais et al. An efficient exact fused dot product processor in FPGA
JP5659772B2 (ja) 演算処理装置
US20150039665A1 (en) Data processing apparatus and method for performing a narrowing-and-rounding arithmetic operation
CN111752613A (zh) 迭代运算的处理
JP2006127469A (ja) 演算装置
JP5813484B2 (ja) Vliwプロセッサと命令構造と命令実行方法
US11294630B2 (en) Adder-subtractor circuit and method of controlling adder-subtractor circuit
JP2010049611A (ja) Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ
US8473541B2 (en) M-bit race delay adder and method of operation
JP2008003663A (ja) データ処理装置、データ処理方法
US11036503B2 (en) Predicate indicator generation for vector processing operations
JP2022131311A (ja) ベクトル演算装置、ベクトル演算方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180306

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

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180928

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181015

R150 Certificate of patent or registration of utility model

Ref document number: 6428488

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150