(57)【要約】【課題】従来構成に対して、僅かな回路規模の増加で、特性の異なる処理対象に柔軟に対応し、かつプロセッサ全体の性能が向上する再構成可能なＳＩＭＤ型プロセッサ、および再構成可能なＳＩＭＤ型プロセッサ方法を提供する。【解決手段】ＰＥ−１の各汎用レジスタのＧＰＲ１０を除算に要するサイクル数で、ＧＰＲ１１を１で、ＧＰＲ２０を被除数で、ＧＰＲ２１を除数で初期化し、加減算器Ａｄｄ／Ｓｕｂ−１により、ＧＰＲ１０からＧＰＲ１１を減算し、除算に要するサイクル数をカウントし、カウント値が規定値に達するまで、加減算器Ａｄｄ／Ｓｕｂ−２により、ＧＰＲ２０からＧＰＲ２１を減算し、減算結果が正であった場合には、減算結果を、減算結果が負であった場合には、ＧＰＲ２０を１ｂｉｔ左シフトした値でＧＰＲ２０を更新し、ＧＰＲ２２からＭＳＢを取り除き、ＬＳＢに減算結果のＭＳＢを反転した値を加えたビット列でＧＰＲ２２を更新する。【選択図】図２
2008250471.tif 000002
【特許請求の範囲】
【請求項１】
１命令を実行する演算単位を１グループとし、
１グループが複数のプロセッシングエレメント（ＰＥ）から構成される場合、該１グループの演算単位は、１つのＰＥが１グループを構成する場合に実行可能な命令単位よりも、複雑な命令を実行する単位であり、
複数のＰＥよりなる１グループとして演算可能な複数のＰＥを備え、
命令に応じて、前記グループを構成するＰＥの数を変える、
並列演算プロセッサ。
【請求項２】
前記命令に応じて、前記グループを構成するＰＥの構成の情報を予め保持し、
前記命令に応じて、前記情報に基づき、ＰＥの構成を変化させる、
請求項１の並列演算プロセッサ。
【請求項３】
前記命令が、前記ＰＥの複数サイクルで実行されるマルチサイクル命令であるときに、前記情報に、パイプラインレジスタの構成が記載される、
請求項２の並列演算プロセッサ。
【請求項４】
前記１グループが１個のＰＥで構成される場合、前記ＰＥは、前記ＰＥの演算結果を格納する汎用レジスタを備え、
前記１グループが、前記マルチサイクル命令を実行する複数のＰＥで構成される場合、前記汎用レジスタをパイプラインレジスタとして利用する、
請求項３の並列演算プロセッサ。
【請求項５】
前記１グループがマルチサイクル命令を実行する複数のＰＥで構成される場合、
前記各ＰＥが備える演算器、及び汎用レジスタは、それぞれ、前記マルチサイクル命令を実現する演算器、及びパイプラインレジスタの少なくとも一部を構成する、
請求項４の並列演算プロセッサ。
【請求項６】
前記マルチサイクル命令がマルチサイクル整数除算命令であるときに、
前記１グループは複数のＰＥで構成され、
前記１グループ内の第１のＰＥは、前記マルチサイクル整数除算命令のサイクルをカウントするカウンタとして動作し、
前記１グループ内の第１とは異なる第２のＰＥは、前記カウンタに応じて、前記サイクルの回数、前記マルチサイクル整数除算命令の被除数から除数を減算する、
請求項５の並列演算プロセッサ。
【請求項７】
前記第１のＰＥは、
加減算器と、
汎用レジスタと、
を備え、
前記マルチサイクル整数除算命令を実行する場合に、
前記第１のＰＥにおいて、サイクルのカウンタ値を前記第１のＰＥの前記汎用レジスタに保存し、前記カウンタ値を、前記加減算器により更新する、
請求項６の並列演算プロセッサ。
【請求項８】
前記第２のＰＥは、
加減算器と、
汎用レジスタと、
を備え、
前記マルチサイクル整数除算命令を実行する場合に、
前記第２のＰＥにおいて、前記汎用レジスタに、除数、被除数、除算途中結果を保存し、
前記加減算器により前記除数から前記被除数を減算し、減算結果を前記汎用レジスタに前記除算途中結果として保存する、
請求項６の並列演算プロセッサ。
【請求項９】
前記マルチサイクル命令がマルチサイクル浮動小数点加減算命令である場合に、
前記１グループは複数のＰＥで構成され、
前記１グループ内の第１のＰＥは、
浮動小数点オペランドの加減算を行い、
前記１グループ内の第１とは異なる第２のＰＥは、
前記加減算結果の正規化処理を行う、
請求項５の並列演算プロセッサ。
【請求項１０】
前記第１のＰＥは、
加減算器と、
差分器と、
バレルシフタと、
汎用レジスタと、
を備え、
前記マルチサイクル浮動小数点加減算命令を実行する場合に、
前記第１のＰＥにおいて、
前記差分器と前記バレルシフタにより、オペランドの小数点位置合わせを行い、
前記加減算器により、前記位置合わせ結果を加減算し、
前記汎用レジスタを、前記小数点位置合わせ結果と前記加減算結果の一次保存場所とする、
請求項９の並列演算プロセッサ。
【請求項１１】
前記第２のＰＥは、
加減算器と、
差分器と、
バレルシフタと、
汎用レジスタと、
正規化制御器と、
を備え、
前記マルチサイクル浮動小数点加減算命令を実行する場合に、
前記第２のＰＥにおいて、
前記正規化制御器の制御に基づき、前記加減算器と前記差分器と前記バレルシフタにより、前記第１のＰＥの加減算結果を正規化し、
前記汎用レジスタを、正規化の途中結果の一次保存場所とする、
請求項９の並列演算プロセッサ。
【請求項１２】
前記マルチサイクル命令がマルチサイクル浮動小数点乗算命令である場合に、
前記１グループは複数のＰＥで構成され、
前記１グループ内の第１のＰＥは、
２つの浮動小数点オペランドの乗算と、前記乗算結果の正規化処理の一部を行い、
前記グループ内の第１とは異なる第２のＰＥは、
前記第１のＰＥと協調して、前記乗算結果の正規化を行う、
請求項５の並列演算プロセッサ。
【請求項１３】
前記第１のＰＥは、
乗算器と、
バレルシフタと、
リーディングワン回路と、
汎用レジスタと、
を備え、
前記マルチサイクル浮動小数点乗算命令を実行する場合には、
前記第１のＰＥにおいて、
前記乗算器は、オペランドの仮数部の乗算を行い、
前記バレルシフタは、前記乗算結果の正規化の一部を行い、
前記汎用レジスタを、乗算結果と正規化の途中結果の一次保存場所とする、
請求項１２の並列演算プロセッサ。
【請求項１４】
前記第１のＰＥは、
加算器と、
バレルシフタと、
汎用レジスタと、
正規化制御器と、
を備え、
前記マルチサイクル浮動小数点乗算命令を実行する場合には、
前記第１のＰＥにおいて、
前記正規化制御器の制御に基づき、前記加減算器と、前記バレルシフタと、前記第１のＰＥのバレルシフタにより、前記乗算結果の正規化を行い、
前記汎用レジスタを、正規化の途中結果の一次保存場所とする、
請求項１２の並列演算プロセッサ。
【請求項１５】
前記マルチサイクル命令がマルチサイクル浮動小数点除算命令である場合に、
前記１グループは複数のＰＥで構成され、
前記１グループ内の第１のＰＥは、
２つの浮動小数点オペランドの除算を行い、
前記１グループ内の第１とは異なる第２のＰＥは、
前記除算を実行するサイクルのカウントと、前記除算結果の正規化を行う、
請求項５の並列演算プロセッサ。
【請求項１６】
前記第１のＰＥは、
加算器と、
汎用レジスタと、
を備え、
前記マルチサイクル浮動小数点除算命令を実行する場合には、
前記第１のＰＥにおいて、
前記汎用レジスタに、除数、非除数、除算途中結果を保存し、
前記加減算器により、前記除数から前記被除数を減算し、減算結果を、前記除算途中結果に保存する、
請求項１５の並列演算プロセッサ。
【請求項１７】
前記第２のＰＥは、
加算器と、
バレルシフタと、
汎用レジスタと、
正規化制御器と、
を備え、
前記マルチサイクル浮動小数点除算命令を実行する場合には、
前記第２のＰＥにおいて、
サイクルのカウンタ値を、前記汎用レジスタに保存し、
前記カウンタ値を前記加減算器により更新し、
前記正規化制御器の制御に基づき、前記加算器と前記バレルシフタにより、前記第１のＰＥの除算結果を正規化し、
前記汎用レジスタを、正規化の途中結果の一次保存場所とする、
請求項１５の並列演算プロセッサ。
【請求項１８】
前記１グループ内の第１のＰＥと第２のＰＥの演算器はＰＥ演算器間接続を介して接続されている、請求項１の並列演算プロセッサ。
【請求項１９】
前記第１のＰＥは、
制御回路と、
汎用レジスタ群と、
演算器群と、
データメモリと、
を備え、
前記汎用レジスタ群の出力は、前記制御回路によって制御されたセレクタ（ｍｕｘ１−０）で選択され、演算命令のオペランド（ｏｐｒ０、ｏｐｒ１）として、前記演算器群と前記データメモリに供給され、
前記演算器群は、加減算器と、乗算器と、バレルシフタと、を備え、それぞれの演算器は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ１−０）から供給されたオペランド（ｏｐｒ０、ｏｐｒ１）に対する演算を行い、
前記演算器群の演算結果は、前記制御回路によって制御されたセレクタ（ｍｕｘ１−１）で選択されてセレクタ（ｍｕｘ５）に供給され、
前記データメモリは、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ１−０）の出力、及び、外部メモリデータ転送網からのデータを記憶素子に書き込み、前記記憶素子から読み出したデータを、前記セレクタ（ｍｕｘ５）及び前記外部メモリデータ転送網に提供し、
前記セレクタ（ｍｕｘ５）は、前記制御回路の制御に基づき、
前記セレクタ（ｍｕｘ１−１）の選択結果、
前記データメモリの読み出し結果、
前記ＰＥ演算器間接続を介して提供される前記第２のＰＥのレジスタの内容の
うちのいずれか１つを選択し、選択結果を、前記汎用レジスタ群に供給する、
請求項１８の並列演算プロセッサ。
【請求項２０】
前記第２のＰＥは、
制御回路と、
汎用レジスタ群と、
演算器群と、
データメモリと、
を備え、
前記演算器群は、加減算器と、乗算器と、バレルシフタと、を備え、
前記汎用レジスタ群の出力は、前記制御回路によって制御されたセレクタ（ｍｕｘ２−０）で選択され、演算命令のオペランド（ｏｐｒ０、ｏｐｒ１）として、前記演算器群と前記データメモリに供給され、
前記制御回路の制御に基づき、セレクタ（ｍｕｘ４）の選択結果と、セレクタ（ｍｕｘ３）の選択結果を選択して、前記レジスタ群の第１のレジスタ（ＧＰＲ２０）に供給するセレクタ（ｍｕｘ０）と、
前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ４）の選択結果と、前記レジスタ群の第２のレジスタ（ＧＰＲ２１）から読み出したビット列からＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）を取り除き、ＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）に０を加えた値を選択して前記第２のレジスタ（ＧＰＲ２１）に供給するセレクタ（ｍｕｘ１）と、
前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ４）の選択結果と、前記レジスタ群の第３のレジスタ（ＧＰＲ２２）から読み出したビット列からＭＳＢを取り除き、ＬＳＢに前記加減算器の減算結果のＭＳＢを加えた値を選択して、前記第３のレジスタ（ＧＰＲ２２）に供給するセレクタ（ｍｕｘ２）と、
を備え、
前記演算器群の演算器は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ２−０）から供給されたオペランド（ｏｐｒ０、ｏｐｒ１）に対する演算を行い、演算結果は、前記制御回路によって制御されたセレクタ（ｍｕｘ２−１）で選択されてセレクタ（ｍｕｘ４）に供給され、
前記データメモリは、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ２−０）の出力、及び、外部メモリデータ転送網からのデータを記憶素子に書き込み、前記記憶素子から読み出したデータを、前記セレクタ（ｍｕｘ４）及び前記外部メモリデータ転送網に提供し、
前記セレクタ（ｍｕｘ３）は、前記制御回路の制御に基づき、前記加減算器の演算結果と、前記セレクタ（ｍｕｘ２−０）で選択された一方のオペランドを選択してセレクタ（ｍｕｘ０）に供給し、
前記セレクタ（ｍｕｘ４）は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ２−１）の選択結果と、前記データメモリの読み出し結果の一方を選択し、選択結果を前記汎用レジスタ群に供給する、
請求項１９の並列演算プロセッサ。
【請求項２１】
前記第１のＰＥは、
制御回路と、
汎用レジスタ群と、
演算器群と、
データメモリと、
を備え、
前記汎用レジスタ群の第１、第２、第３のレジスタ（ＧＰＲ１０、ＧＰＲ１１、ＧＰＲ１２）は、それぞれ対応するセレクタ（ｍｕｘ００、ｍｕｘ０１、ｍｕｘ０２）の選択結果により更新され、前記汎用レジスタ群の残りのレジスタは、セレクタ（ｍｕｘ０７）の選択結果により更新され、
前記汎用レジスタ群の出力は、前記制御回路に制御されたセレクタ（ｍｕｘ１−０）で選択され、オペランド（ｏｐｒ０、ｏｐｒ１）として、前記演算器群及び前記データメモリに供給され、
前記セレクタ（ｍｕｘ００）は、前記制御回路の制御に基づき、前記ＰＥ演算器間接続を介して、前記第２のＰＥより提供された、浮動小数点加減算命令の第１のオペランド（ｆｏｐｒ１）と、前記セレクタ（ｍｕｘ０７）の選択結果を選択して、前記第１のレジスタ（ＧＰＲ１０）に提供し、
前記セレクタ（ｍｕｘ０１）は、前記制御回路の制御に基づき、前記ＰＥ演算器間接続を介して、前記第２のＰＥより提供された浮動小数点加減算命令の第２のオペランド（ｆｏｐｒ１）と、前記セレクタ（ｍｕｘ０７）の選択結果の一方を選択して、前記第２のレジスタ（ＧＰＲ１１）に提供し、
前記セレクタ（ｍｕｘ０２）は、前記制御回路の制御に基づき、前記演算器群の前記差分器の演算結果の下位半分を下位、レジスタ（ＧＰＲ１２）の下位半分を上位とするビット列と、前記セレクタ（ｍｕｘ０７）の選択結果の一方を選択して、前記レジスタ（ＧＰＲ１２）に提供し、
前記演算器群は、加減算器と、乗算器と、差分器と、バレルシフタと、を備え、
前記加減算器は、セレクタ（ｍｕｘ０３）の選択結果と前記ｏｐｒ１をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記乗算器は、前記オペランド（ｏｐｒ０、ｏｐｒ１）に関して、前記制御回路の制御に基づいた演算を行い、
前記差分器は、セレクタ（ｍｕｘ０４）及びセレクタ（ｍｕｘ０５）の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記バレルシフタは、前記オペランド（ｏｐｒ０）と、セレクタ（ｍｕｘ０６）の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記演算器群の演算結果は、前記制御回路に制御されたセレクタ（ｍｕｘ１−１）で選択されて、前記セレクタ（ｍｕｘ０７）に提供され、
前記セレクタ（ｍｕｘ０３）は、前記制御回路の制御に基づき、前記バレルシフタの演算結果と、オペランド（ｏｐｒ０）を選択して、前記加減算器に提供し、
前記セレクタ（ｍｕｘ０４）は、前記制御回路の制御に基づき、前記ＰＥ演算器間接続を介して、前記第２のＰＥより提供された、浮動小数点加減算命令のオペランド（ｆｏｐｒ０）の指数部（Ｅ０）と、オペランド（ｏｐｒ０）を選択して、前記差分器に提供し、
前記セレクタ（ｍｕｘ０５）は、前記制御回路の制御に基づき、前記ＰＥ演算器間接続を介して、前記第２のＰＥより提供された浮動小数点加減算命令のオペランド（ｆｏｐｒ１）の指数部と、オペランド（ｏｐｒ１）を選択して、前記差分器に提供し、
前記セレクタ（ｍｕｘ０６）は、前記制御回路の制御に基づき、前記レジスタ（ＧＰＲ１２）の下位半分とその上位半分に０を埋めたビット列と、オペランド（ｏｐｒ１）を選択して、前記バレルシフタに提供し、
前記データメモリは、前記制御回路の制御に基づき、前記汎用レジスタ群及び前記外部メモリデータ転送網からのデータを記憶素子に書き込み、前記記憶素子から読み出したデータをセレクタ（ｍｕｘ０７）及び前記外部メモリデータ転送網に提供し、
前記セレクタ（ｍｕｘ０７）は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ１−１）の選択結果、前記データメモリの読み出し結果を選択し、選択結果を前記汎用レジスタ群に提供する、
請求項１８の並列演算プロセッサ。
【請求項２２】
前記第２のＰＥは、
制御回路と、
汎用レジスタ群と、
演算器群と、
データメモリと、
を備え、
前記汎用レジスタ群の第１、第２のレジスタ（ＧＰＲ２０、ＧＰＲ２１）はそれぞれ、セレクタ（ｍｕｘ０８、ｍｕｘ０９）の選択結果により更新され、第３のレジスタ（ＧＰＲ２２）と残りのレジスタは、形式成型器の選択結果により更新され、
前記汎用レジスタ群の出力は、前記制御回路に制御されたセレクタ（ｍｕｘ２−０）で選択され、オペランド（ｏｐｒ０、ｏｐｒ１）として演算器群及び前記データメモリに供給され、
前記セレクタ（ｍｕｘ０８）は、前記制御回路の制御に基づき、前記ＰＥ演算器間接続を介して、前記第１のＰＥより提供された指数途中結果（ｔｍｐｅ）を下位に、符号結果（ｓｉｇｎ）を上位としたビット列と、セレクタ（ｍｕｘ１５）の選択結果の一方を選択して、前記汎用レジスタ群の第１のレジスタ（ＧＰＲ２０）に提供し、
前記セレクタ（ｍｕｘ０９）は、前記制御回路の制御に基づき、演算器群の差分器の演算結果と、セレクタ（ｍｕｘ１５）の選択結果を選択して、前記汎用レジスタ群のレジスタ（ＧＰＲ２１）に提供し、
前記演算器群は、加減算器と、乗算器と、差分器と、バレルシフタと、を備え、
前記加減算器は、セレクタ（ｍｕｘ１０）とセレクタ（ｍｕｘ１１）の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
乗算器は、前記ｏｐｒ０とｏｐｒ１をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記差分器は、セレクタ（ｍｕｘ１２）とセレクタ（ｍｕｘ１３）の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
バレルシフタは、オペランド（ｏｐｒ０）とセレクタ（ｍｕｘ１４）の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記演算器群の演算結果は、前記制御回路に制御されたセレクタ（ｍｕｘ２−１）で選択され、セレクタ（ｍｕｘ１５）に提供され、
前記セレクタ（ｍｕｘ１０）は、前記制御回路の制御に基づき、前記バレルシフタの演算結果と、オペランド（ｏｐｒ０）を選択して、前記加減算器に提供し、
セレクタ（ｍｕｘ１１）は、前記制御回路の制御に基づき、値１と、オペランド（ｏｐｒ１）を選択して、前記加減算器に提供し、
セレクタ（ｍｕｘ１２）は、前記制御回路の制御に基づき、前記ＰＥ演算器間接続を介して、前記第１のＰＥより提供された仮数途中結果（ｔｍｐｆ）と、オペランド（ｏｐｒ０）を選択して、前記差分器に提供し、
セレクタ（ｍｕｘ１３）は、前記制御回路の制御に基づき、値０と、オペランド（ｏｐｒ１）を選択して、前記差分器に提供し、
セレクタ（ｍｕｘ１４）は、前記制御回路の制御に基づき、リーディングワンの演算結果と、オペランド（ｏｐｒ１）を選択して、前記バレルシフタに提供し、
前記演算器群は、浮動小数点加減算命令の実行のみに使用する前記リーディングワンと、加算器と、丸め検出器と、を備え、
前記リーディングワンは、オペランド（ｏｐｒ０）のビット列をＭＳＢ側から検索し、ＭＳＢから最初に現れた１までの距離を計算し、前記加算器と前記セレクタ（ｍｕｘ１４）に提供し、
前記加算器は、オペランド（ｏｐｒ１）の部分ビット列と、前記リーディングワンの検索結果を加算して前記形式成型器に提供し、
前記丸め検出器は、前記バレルシフタの演算結果が丸めを必要とするかを判定し、判定結果を、セレクタ（ｍｕｘ２−１）に提供し、
前記データメモリは、前記制御回路の制御に基づき、前記汎用レジスタ群及び外部メモリデータ転送網からのデータを記憶素子に書き込み、前記記憶素子から読み出したデータをセレクタ（ｍｕｘ１５）及び前記外部メモリデータ転送網に提供し、
前記セレクタ（ｍｕｘ１５）は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ２−１）の選択結果、データメモリの読み出し結果を選択し、選択結果を前記形式成型器に提供し、
前記形式成型器は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ１５）の選択結果を仮数部、前記加算器の演算結果を指数部、符号結果（ｓｉｇｎ）を符号部として選択して形式に整え、汎用レジスタ群に提供する、
請求項２１の並列演算プロセッサ。
【請求項２３】
前記第１のＰＥは、
制御回路と、
汎用レジスタ群と、
演算器群と、
データメモリと、
を備え、
前記汎用レジスタ群は、複数のレジスタ（ＧＰＲ１０〜ＧＰＲ１ｐ）を備え、レジスタ（ＧＰＲ１２）はセレクタ（ｍｕｘ００）の選択結果により更新され、残りのレジスタ（ＧＰＲ１０〜ＧＰＲ１１）及びレジスタ（ＧＰＲ１３〜ＧＰＲ１ｐ）は、セレクタ（ｍｕｘ０７）の選択結果により更新され、
前記汎用レジスタ群の出力は、前記制御回路に制御されたセレクタ（ｍｕｘ１−０）で選択され、オペランド（ｏｐｒ０、ｏｐｒ１）として前記演算器群及び前記データメモリに供給され、
セレクタ（ｍｕｘ００）は、前記制御回路の制御に基づき、加減算器の演算結果と、セレクタ（ｍｕｘ０７）の選択結果を選択して、選択結果を、前記レジスタ（ＧＰＲ１２）に提供し、
前記演算器群は、加減算器と、乗算器と、バレルシフタと、を備え、
前記加減算器は、セレクタ（ｍｕｘ０１）の選択結果とセレクタ（ｍｕｘ０２）の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記乗算器は、セレクタ（ｍｕｘ０３）の選択結果とセレクタ（ｍｕｘ０４）の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記バレルシフタは、セレクタ（ｍｕｘ０５）の選択結果とセレクタ（ｍｕｘ０６）の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記演算結果は、前記制御回路に制御されたセレクタ（ｍｕｘ１−１）で選択されセレクタ（ｍｕｘ０７）に提供され、
セレクタ（ｍｕｘ０１）は、前記制御回路の制御に基づき、オペランド（ｏｐｒ０）の指数部分を下位ビットとし、上位側に０を組み合わせたビット列と、オペランド（ｏｐｒ０）を選択して、選択結果を、前記加減算器に提供し、
セレクタ（ｍｕｘ０２）は、前記制御回路の制御に基づき、オペランド（ｏｐｒ１）のうちの指数部分を下位ビットとし、上位側に０を組み合わせたビット列と、オペランド（ｏｐｒ１）を選択して、選択結果を、前記加減算器に提供し、
セレクタ（ｍｕｘ０３）は、前記制御回路の制御に基づき、オペランド（ｏｐｒ０）のうち単精度の仮数部分を下位ビットとし、上位ビットに１、その上位側に０を組み合わせたビット列と、オペランド（ｏｐｒ０）を選択して、選択結果を、前記乗算器に提供し、
セレクタ（ｍｕｘ０４）は、前記制御回路の制御に基づき、オペランド（ｏｐｒ１）のうち単精度の仮数部分を下位ビットとし、上位ビットに１、その上位側に０を組み合わせたビット列と、ｏｐｒ１を選択して、選択結果を、前記乗算器に提供し、
セレクタ（ｍｕｘ０５）は、前記制御回路の制御に基づき、前記レジスタ（ＧＰＲ１ｐ−１）の下位ビットを上位、前記レジスタ（ＧＰＲ１ｐ）の所定ビットを下位としたビット列（ｔｍｐｆ）の上位ビットと、その上位側に０を組み合わせたビット列と、オペランド（ｏｐｒ０）を選択して、選択結果を前記バレルシフタに提供し、
セレクタ（ｍｕｘ０６）は、前記リーディングワンの演算結果と、オペランド（ｏｐｒ１）を選択して、前記バレルシフタに提供し、
前記演算器群は、浮動小数点加減算命令の実行のみに使用するリーディングワンと、加算器を備え、
前記リーディングワンは仮数途中結果（ｔｍｐｆ）のビット列をＭＳＢ側から検索し、ＭＳＢから最初に現れた１までの距離（ｓｗ）を計算し、前記加算器とセレクタ（ｍｕｘ０６）と前記第２のＰＥに提供し、
前記加算器は、前記レジスタ（ＧＰＲ１２）に格納された仮数部の途中結果（ｔｍｐｅ０）と、前記リーディングワンの検索結果を加算し、前記第２のＰＥに提供し、
前記データメモリは、前記制御回路の制御に基づき、前記汎用レジスタ群及び外部メモリデータ転送網からのデータを記憶素子に書き込み、前記データから読み出したデータをセレクタ（ｍｕｘ０７）及び前記外部メモリデータ転送網に提供し、
前記セレクタ（ｍｕｘ０７）は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ１−１）の選択結果、前記データメモリの読み出し結果を選択し、選択結果を、前記汎用レジスタ群に提供する、
請求項１８の並列演算プロセッサ。
【請求項２４】
前記第２のＰＥは、前記ＰＥ演算器間接続を介して、前記第１のＰＥから、浮動小数点乗算命令の途中結果である仮数途中結果（ｔｍｐｆ）と指数途中結果（ｔｍｐｅ１）と符号結果（ｓｉｇｎ）とシフト途中結果の上位データ（ｈｄａｔａ）を受け取り、前記第２のＰＥから前記第１のＰＥに、シフト途中結果の下位データ（ｌｄａｔａ）を提供する。請求項１８の並列演算プロセッサ。
【請求項２５】
前記第２のＰＥは、
制御回路と、
汎用レジスタ群と、
演算器群と、
データメモリと、
を備え、
前記汎用レジスタ群は、複数のレジスタ（ＧＰＲ２０〜ＧＰＲ２ｐ）を備え、形式成型器の選択結果により更新され、
前記汎用レジスタ群の出力は、前記制御回路に制御されたセレクタ（ｍｕｘ２−０）で選択され、オペランド（ｏｐｒ０、ｏｐｒ１）として演算器群及びデータメモリに供給され、
前記演算器群は、加減算器と、乗算器と、バレルシフタと、を備え、
前記加減算器は、セレクタ（ｍｕｘ０８）とセレクタ（ｍｕｘ０９）の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記乗算器は、それぞれ前記ｏｐｒ０とｏｐｒ１をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記バレルシフタは、セレクタ（ｍｕｘ１０）とセレクタ（ｍｕｘ１１）の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記演算器群の演算結果は、前記制御回路に制御されたセレクタ（ｍｕｘ２−１）で選択され、セレクタ（ｍｕｘ１２）に提供され、
前記セレクタ（ｍｕｘ０８）は、前記制御回路の制御に基づき、前記バレルシフタの演算結果と、オペランド（ｏｐｒ０）を選択して、前記加減算器に提供し、
前記セレクタ（ｍｕｘ０９）は、前記制御回路の制御に基づき、値１と、オペランド（ｏｐｒ１）を選択して、前記加減算器に提供し、
前記セレクタ（ｍｕｘ１０）は、前記制御回路の制御に基づき、浮動小数点乗算命令の途中結果である仮数途中結果（ｔｍｐｆ）の下位側所定ビットと、オペランド（ｏｐｒ０）を選択して、前記バレルシフタに提供し、
セレクタ（ｍｕｘ１１）は、前記制御回路の制御に基づき、前記ＰＥ演算器間接続を介して、前記第１のＰＥより提供されたシフト幅と前記オペランド（ｏｐｒ１）を選択して、前記バレルシフタに提供し、
前記演算器群は、浮動小数点加減算命令の実行のみに使用する減算器と、丸め検出器と、をさらに備え
前記減算器は、指数途中結果（ｔｍｐｅ１）から所定値を減算し、減算結果を前記形式成型器に提供し、
前記丸め検出器は、前記バレルシフタの演算結果が丸めを必要とするかを判定し、判定結果をセレクタ（ｍｕｘ２−１）に提供し、
前記データメモリは、前記制御回路の制御に基づき、前記汎用レジスタ群及び外部メモリデータ転送網からのデータを記憶素子に書き込み、前記記憶素子から読み出したデータをセレクタ（ｍｕｘ１２）及び外部メモリデータ転送網に提供し、
前記セレクタ（ｍｕｘ１２）は、前記制御回路の制御に基づき、セレクタ（ｍｕｘ２−１）の選択結果、前記データメモリの読み出し結果を選択し、選択結果を形式成型器に提供し、
前記形式成型器は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ１２）の選択結果と、前記減算器の演算結果と、前記第１のＰＥより提供された符号結果（ｓｉｇｎ）を選択し、選択結果を、前記汎用レジスタ群に提供し、
前記形式成型器は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ１２）の選択結果を仮数部とし、前記減算器の演算結果を指数部とし、前記第１のＰＥより提供された符号結果（ｓｉｇｎ）を符号として選択して形式に整え、前記汎用レジスタ群に提供する、
請求項２３の並列演算プロセッサ。
【請求項２６】
前記ＰＥ演算器間接続を介して、前記第１のＰＥは前記第２のＰＥから、マルチサイクル型浮動小数点命令の終了信号を受け取り、前記第１のＰＥから前記第２のＰＥに、演算結果の符号（ｓｉｇｎ）と指数途中結果（ｔｍｐｅ）、演算結果一桁（ＱＵＯ）を提供する、請求項１８の並列演算プロセッサ。
【請求項２７】
前記第１のＰＥは、
制御回路と、
汎用レジスタ群と、
演算器群と、
データメモリと、
を備え、
前記汎用レジスタ群は、複数のレジスタ（ＧＰＲ１０〜ＧＰＲ１ｐ）を備え、レジスタ（ＧＰＲ１０、ＧＰＲ１１、ＧＰＲ１２）はそれぞれ、対応するセレクタ（ｍｕｘ００、ｍｕｘ０１、ｍｕｘ０２）の選択結果により更新され、残りのレジスタ（ＧＰＲ１３〜ＧＰＲ１ｐ）は、セレクタ（ｍｕｘ０４）の選択結果により更新され、
前記汎用レジスタ群の出力は、前記制御回路に制御されたセレクタ（ｍｕｘ１−０）で選択され、オペランド（ｏｐｒ０、ｏｐｒ１）として、演算器群及びデータメモリに供給され、
前記セレクタ（ｍｕｘ００）は、前記制御回路の制御に基づき、レジスタ（ＧＰＲ１０）のうち仮数部分の上位ビットを１とし、さらに上位ビット側を０としたビット列と、セレクタ（ｍｕｘ０３）の選択結果と、セレクタ（ｍｕｘ０４）の選択結果を選択して、選択結果をレジスタ（ＧＰＲ１０）に提供し、
セレクタ（ｍｕｘ０１）は、前記制御回路の制御に基づき、前記レジスタ（ＧＰＲ１１）のうち仮数部分の上位ビットを１とし、さらに上位ビット側を０としたビット列と、セレクタ（ｍｕｘ０）４の選択結果を選択して、選択結果を前記レジスタ（ＧＰＲ１１）に提供し、
前記セレクタ（ｍｕｘ０）は、前記制御回路の制御に基づき、前記演算器群の減算器の減算結果と、セレクタ（ｍｕｘ０４）の選択結果を選択して、選択結果を、前記レジスタ（ＧＰＲ１１）に提供し、
前記汎用レジスタ群は、浮動小数点除算命令の実行のみに使用する減算器を備え、
前記減算器は、前記レジスタ（ＧＰＲ１０）のうち指数部から、前記レジスタ（ＧＰＲ１１）のうち指数部を減算し、減算結果をセレクタ（ｍｕｘ０２）に提供し、
前記演算器群は、加減算器と、乗算器と、バレルシフタと、を備え、それぞれの演算器は、前記制御回路の制御に基づき、セレクタ（ｍｕｘ１−０）から供給されたオペランド（ｏｐｒ０とｏｐｒ１）に対する演算を行い、
前記演算器群の演算結果は、前記制御回路に制御されたセレクタ（ｍｕｘ１−１）で選択され、セレクタ（ｍｕｘ０４）に提供され、
前記データメモリは、前記制御回路の制御に基づき、前記汎用レジスタ群及び外部メモリデータ転送網からのデータを記憶素子に書き込み、前記記憶素子から読み出したデータをセレクタ（ｍｕｘ０４）及び前記外部データ転送網に提供し、
セレクタ（ｍｕｘ０４）は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ１−１）の選択結果、前記データメモリの読み出し結果を選択し、選択結果を前記汎用レジスタ群に提供する、請求項１８の並列演算プロセッサ。
【請求項２８】
前記ＰＥ演算器間接続を介して、前記第２のＰＥは、前記第１のＰＥから、演算の結果（ＱＵＯ）と、浮動小数点命令の途中結果である指数途中結果（ｔｍｐｅ）と符号結果（ｓｉｇｎ）を受け取り、前記第２のＰＥから前記第１のＰＥに、浮動小数演算の終了信号（ＥＮＤ）を提供する請求項１８の並列演算プロセッサ。
【請求項２９】
前記第２のＰＥは、
制御回路と、
汎用レジスタ群と、
演算器群と、
データメモリと、
を備え、
前記汎用レジスタ群は、複数のレジスタ（ＧＰＲ２０〜ＧＰＲ２ｐ）を備え、
前記レジスタ（ＧＰＲ２０）は、セレクタ（ｍｕｘ０５）の選択結果により更新され、他のレジスタ（ＧＰＲ２１〜ＧＰＲ２ｐ）は形式成型器の選択結果により更新され、
前記汎用レジスタ群の出力は、制御回路に制御されたセレクタ（ｍｕｘ２−０）で選択され、オペランド（ｏｐｒ０、ｏｐｒ１）として前記演算器群及びデータメモリに供給され、
セレクタ（ｍｕｘ０５）は、前記制御回路の制御に基づき、レジスタ（ＧＰＲ２０）のビット列からＭＳＢを取り除き、ＬＳＢに前記ＰＥ演算器間接続を介して第１のＰＥから提供された浮動小数点命令の結果一桁（ＱＵＯ）を加えたビット列と、前記形式成型器の選択結果を選択し、選択結果を前記レジスタ（ＧＰＲ２０）に提供し、
前記演算器群は、
加減算器と、
乗算器と、
バレルシフタと、
を備え、
前記加減算器は、セレクタ（ｍｕｘ０６）の選択結果と前記オペランド（ｏｐｒ１）を、オペランドとして、制御回路の制御に基づいた演算を行い、
前記乗算器は、前記オペランド（ｏｐｒ０とｏｐｒ１）を、オペランドとして、制御回路の制御に基づいた演算を行い、
前記バレルシフタは、オペランド（ｏｐｒ０）とセレクタｍｕｘ０７の選択結果を、オペランドとして、前記制御回路の制御に基づいた演算を行い、
演算結果は、前記制御回路に制御されたセレクタ（ｍｕｘ２−１）で選択され、セレクタ（ｍｕｘ０８）に提供され、
セレクタ（ｍｕｘ０６）は、前記制御回路の制御に基づき、前記バレルシフタの演算結果とオペランド（ｏｐｒ０）を選択し、選択結果を前記加減算器に提供し、
セレクタ（ｍｕｘ０７）は、前記制御回路の制御に基づき、リーディングワン演算結果とオペランド（ｏｐｒ１）を選択し、選択結果を前記バレルシフタに提供し、
前記演算器群は、浮動小数点命令の実行のみに使用するリーディングワンと加算器と丸め検出器を備え、
前記リーディングワンは、前記オペランド（ｏｐｒ０）のビット列をＭＳＢ側からＬＳＢ側へ検索し、ＭＳＢから最初に現れた１までの距離を計算し、前記加算器とセレクタ（ｍｕｘ０７）に提供し、
前記加算器は、前記ＰＥ演算器間接続を介して前記第１のＰＥから提供された指数途中結果（ｔｍｐ）と、前記リーディングワンの演算結果を加算し、加算結果を、前記形式成型器に提供し、
前記丸め検出器は、前記バレルシフタの演算結果が丸めを必要とするかを判定し、判定結果をセレクタ（ｍｕｘ２−１）に提供し、
前記データメモリは、前記制御回路の制御に基づき、前記汎用レジスタ群及び外部メモリデータ転送網からのデータを記憶素子に書き込み、前記記憶素子から読み出したデータをセレクタ（ｍｕｘ０８）及び前記外部メモリデータ転送網に提供し、
前記セレクタｍｕｘ０８は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ２−１）の選択結果、前記データメモリの読み出し結果を選択し、選択結果を前記形式成型器に提供し、
前記形式成型器は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ０８）の選択結果と、前記加算器の加算結果と、前記第１のＰＥより提供された符号結果（ｓｉｇｎ）を選択し、選択結果を前記汎用レジスタ群に提供し、
前記形式成型器は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ０８）の選択結果を仮数部とし、前記加算器の加算結果を指数部とし、前記第１のＰＥより提供された符号結果（ｓｉｇｎ）を符号部として選択し、形式を整え、前記汎用レジスタ群に提供する請求項２７の並列演算プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、再構成可能なＳＩＭＤ型プロセッサに関し、特に、マルチサイクル命令を効率的に実現できる再構成可能なＳＩＭＤ型プロセッサに関する。
【背景技術】
【０００２】
近時、安全・防犯意識の高まりと共に、様々な場所にカメラが設置され、カメラから得られた画像に対する多様な画像処理により、自動車事故の回避や、オフィスの入退場管理などが実現され始めている。これらの画像処理は、短時間で多くの計算を行う必要があるため、多数のデータを高速に処理可能な並列処理プロセッサが用いられている。
【０００３】
前述した並列処理プロセッサの１つとして、単一の演算命令に基づき、多数のプロセッシングエレメント（ＰＥ）を並列動作させるＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）型プロセッサが開発されている。
【０００４】
ＳＩＭＤ型プロセッサは、多数のＰＥが並列動作することから高い性能を発揮できる。  また、多数のＰＥの制御が共通であることから、単一の制御情報のみを生成すればよく、制御回路が少なく済み回路規模を小さくすることができる。
【０００５】
一方で、ＳＩＭＤ型プロセッサは多数のＰＥから構成されるため、ＰＥ単体の高機能化・複雑化は、ＳＩＭＤ型プロセッサの回路規模を著しく大きくするため、ＰＥの複雑度とＰＥ数はトレードオフの関係にある。
【０００６】
実際に、非特許文献１では、２ｂｉｔのＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ）を配した単純なＰＥを多数用いて、ＳＡＤ（Ｓｕｍ  ｏｆ  Ａｂｓｏｌｕｔｅ  Ｄｉｆｆｅｒｅｎｃｅ）のような単純な処理を高速に実行している。また、特許文献１、特許文献２では、浮動小数点演算器を配した複雑なＰＥを少数用いて、３ＤＣＧのような複雑な処理を実現している。
【０００７】
また、ＳＩＭＤ型プロセッサではないが、特許文献３には、１サイクルで実行可能な単純な命令は複数のパイプラインを独立に使用して並列実行し、大量のデータ処理や複雑な処理を必要とする高機能命令は複数のパイプラインを同時に使用し高速化を図るＣＩＣＳ型プロセッサが開示されている。
【０００８】
【非特許文献１】Ｍ．Ｎａｋａｊｉｍａ、ｅｔｃ著、“Ａ  ４０ＧＯＰＳ  ２５０ｍＷ  Ｍａｓｓｉｖｅｌｙ  Ｐａｒａｌｌｅｌ  Ｐｒｏｃｅｓｓｏｒ  Ｂａｓｅｄ  ｏｎ  Ｍａｔｒｉｘ  Ａｒｃｈｉｔｅｃｔｕｒｅ”、２００６  ＩＥＥＥ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｃｉｒｃｕｉｔｓ  Ｃｏｎｆｅｒｅｎｃｅ  Ｄｉｇｅｓｔ  ｏｆ  Ｔｅｃｈｎｉｃａｌ  Ｐａｐｅｒステップ２００６年２月６日、ｐｐ１６１６〜１６２５
【特許文献１】特開２０００−１４８６９５号公報
【特許文献２】特開２００１−２５６１９９号公報
【特許文献３】特開平６−５１９８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
前述したように、従来のＳＩＭＤ型プロセッサでは、ＰＥ単体の性能とその個数が固定的であったため、特性の異なる処理対象に柔軟に対応できない、という課題があった。
【００１０】
このため、非特許文献１では、２ｂｉｔの演算器から成る単純なＰＥを２０４８個用いることにより、単純な演算を多数で実行すると共に、２ｂｉｔ以上の精度が必要な演算には、隣接する複数ＰＥの演算器を組み合わせることにより対処していた。
【００１１】
しかし、複数ＰＥの演算器を組み合わせただけでは、ＳＩＭＤ型プロセッサ全体の処理性能は同じままである。
【００１２】
例として、２ｂｉｔ加算器からなるＰＥを１６個用いるプロセッサにおいて１６個の８ｂｉｔ加算を行う場合を考える。
【００１３】
４個のＰＥを接続して８ｂｉｔ加算をする場合には、１サイクルに４（＝１６／４）個処理できるため、１６個の８ｂｉｔ加算を４サイクルで実現できる。
【００１４】
一方で、個々のＰＥで、２ｂｉｔ毎に桁上げ加算する場合には、１つの８ｂｉｔ加算に４サイクルを要するものの、同時に１６個の８ｂｉｔ加算を行えるため、１６個の８ｂｉｔ加算を４サイクルで実現できる。
【００１５】
このように、複数ＰＥの同種類の演算器を組み合わせただけでは、ＳＩＭＤ型プロセッサ全体の性能向上は望めず、応用範囲も演算のビット幅を変更できるなど限定されており、特性の異なる処理対象に柔軟に対応できていなかった。
【００１６】
本発明の目的は、上記の課題の認識に基づき創案されたものであって、その目的は、同数のＰＥから構成されるＳＩＭＤ型プロセッサ等に対して、僅かな資源の増加で、特性の異なる処理対象に柔軟に対応し、全体の性能向上を可能とする再構成可能な、並列演算プロセッサを提供することにある。
【課題を解決するための手段】
【００１７】
本願で開示される発明は前記課題を解決するため概略以下の構成を有する。
【００１８】
本発明に係る並列演算プロセッサは、１命令を実行する演算単位を１グループとし、１グループが複数のプロセッシングエレメント（ＰＥ）から構成される場合、該１グループの演算単位は、１つのＰＥが１グループを構成する場合に実行可能な命令単位よりも、複雑な命令を実行する単位であり、
複数のＰＥよりなる１グループとして演算可能な複数のＰＥを備え、
命令に応じて、前記グループを構成するＰＥの数を変える。
【００１９】
本発明においては、前記命令に応じて、前記グループを構成するＰＥの構成の情報を予め保持し、
前記命令に応じて、前記情報に基づき、ＰＥの構成を変化させる。
【００２０】
本発明においては、前記命令が、前記ＰＥの複数サイクルで実行されるマルチサイクル命令であるときに、前記情報に、パイプラインレジスタの構成が規定される。
【００２１】
本発明においては、前記１グループが１個のＰＥで構成される場合、
前記ＰＥは、前記ＰＥの演算結果を格納する汎用レジスタを備え、
前記１グループが、前記マルチサイクル命令を実行する複数ＰＥで構成される場合、
前記汎用レジスタを、パイプラインレジスタとして利用する。
【００２２】
本発明においては、前記１グループがマルチサイクル命令を実行する複数ＰＥで構成される場合、前記各ＰＥが備える演算器、及び汎用レジスタは、それぞれ、
前記マルチサイクル命令を実現する演算器、及びパイプラインレジスタの少なくとも一部を構成する。
【００２３】
本発明においては、前記マルチサイクル命令がマルチサイクル整数除算命令であるときに、
前記１グループは複数ＰＥで構成され、
前記１グループ内の第１のＰＥは、
前記マルチサイクル整数除算命令のサイクルをカウントするカウンタとして動作し、
前記１グループ内の第１とは異なる第２のＰＥは、
前記カウンタに応じて、前記サイクルの回数、前記マルチサイクル整数除算命令の被除数から除数を減算する。
【００２４】
本発明においては、前記第１のＰＥは、
加減算器と、
汎用レジスタと、
を備え、
前記マルチサイクル整数除算命令を実行する場合に、
前記第１のＰＥにおいて、
サイクルのカウンタ値を前記第１のＰＥの前記汎用レジスタに保存し、前記カウンタ値を、前記加減算器により更新する。
【００２５】
本発明においては、前記第２のＰＥは、
加減算器と、
汎用レジスタと、
を備え、
前記マルチサイクル整数除算命令を実行する場合に、
前記第２のＰＥにおいて、
前記汎用レジスタに、除数、被除数、除算途中結果を保存し、
前記加減算器により前記除数から前記被除数を減算し、減算結果を前記汎用レジスタに前記除算途中結果として保存する。
【００２６】
本発明においては、前記マルチサイクル命令がマルチサイクル浮動小数点加減算命令であるときに、
前記１グループは複数ＰＥで構成され、
前記１グループ内の第１のＰＥは、
浮動小数点オペランドの加減算を行い、
前記１グループ内の第１とは異なる第２のＰＥは、
前記加減算結果の正規化処理を行う。
【００２７】
本発明においては、前記第１のＰＥは、
加減算器と、
差分器と、
バレルシフタと、
汎用レジスタと、
を備え、
前記マルチサイクル浮動小数点加減算命令を実行する場合に、
前記第１のＰＥにおいて、
前記差分器と前記バレルシフタにより、オペランドの小数点位置合わせを行い、
前記加減算器により、前記位置合わせ結果を加減算し、
前記汎用レジスタを、前記小数点位置合わせ結果と前記加減算結果の一次保存場所とする。
【００２８】
本発明においては、前記第２のＰＥは、
加減算器と、
差分器と、
バレルシフタと、
汎用レジスタと、
正規化制御器と、
を備え、
前記マルチサイクル浮動小数点加減算命令を実行する場合に、
前記第２のＰＥにおいて、
前記正規化制御器の制御に基づき、前記加減算器と前記差分器と前記バレルシフタにより、前記第１のＰＥの加減算結果を正規化し、
前記汎用レジスタを、正規化の途中結果の一次保存場所とする。
【００２９】
本発明においては、前記マルチサイクル命令がマルチサイクル浮動小数点乗算命令である場合に、
前記１グループは複数ＰＥで構成され、
前記１グループ内の第１のＰＥは、
２つの浮動小数点オペランドの乗算と、前記乗算結果の正規化処理の一部を行い、
前記グループ内の第１とは異なる第２のＰＥは、
前記第１のＰＥと協調して、前記乗算結果の正規化を行う。
【００３０】
本発明においては、前記第１のＰＥは、
乗算器と、
バレルシフタと、
リーディングワン回路と、
汎用レジスタと、
を備え、
前記マルチサイクル浮動小数点乗算命令を実行する場合には、
前記第１のＰＥにおいて、
前記乗算器は、オペランドの仮数部の乗算を行い、
前記バレルシフタは、前記乗算結果の正規化の一部を行い、
前記汎用レジスタを、乗算結果と正規化の途中結果の一次保存場所とする。
【００３１】
本発明においては、前記第１のＰＥは、
加算器と、
バレルシフタと、
汎用レジスタと、
正規化制御器と、
を備え、
前記マルチサイクル浮動小数点乗算命令を実行する場合には、
前記第１のＰＥにおいて、
前記正規化制御器の制御に基づき、前記加減算器と、前記バレルシフタと、前記第１のＰＥのバレルシフタにより、前記乗算結果の正規化を行い、
前記汎用レジスタを、正規化の途中結果の一次保存場所とする。
【００３２】
本発明においては、前記マルチサイクル命令がマルチサイクル浮動小数点除算命令である場合に、
前記１グループは複数ＰＥで構成され、
前記１グループ内の第１のＰＥは、
２つの浮動小数点オペランドの除算を行い、
前記１グループ内の第１とは異なる第２のＰＥは、
前記除算を実行するサイクルのカウントと、前記除算結果の正規化を行う。
【００３３】
本発明においては、前記第１のＰＥは、
加算器と、
汎用レジスタと、
を備え、
前記マルチサイクル浮動小数点除算命令を実行する場合には、
前記第１のＰＥにおいて、
前記汎用レジスタに、除数、非除数、除算途中結果を保存し、
前記加減算器により、前記除数から前記被除数を減算し、減算結果を、前記除算途中結果に保存する。
【００３４】
本発明においては、前記第２のＰＥは、
加算器と、
バレルシフタと、
汎用レジスタと、
正規化制御器と、
を備え、
前記マルチサイクル浮動小数点除算命令を実行する場合には、
前記第２のＰＥにおいて、
サイクルのカウンタ値を、前記汎用レジスタに保存し、
前記カウンタ値を前記加減算器により更新し、
前記正規化制御器の制御に基づき、前記加算器と前記バレルシフタにより、前記第１のＰＥの除算結果を正規化し、
前記汎用レジスタを、正規化の途中結果の一次保存場所とする。
【００３５】
本発明においては、前記第１のＰＥと第２のＰＥの演算器はＰＥ演算器間接続５０を介して接続されている。
【００３６】
本発明においては、前記第１のＰＥは、
制御回路と、
複数のレジスタを含む汎用レジスタ群と、
演算器群と、
データメモリと、
を備え、
前記汎用レジスタ群の出力は、前記制御回路によって制御された第１のセレクタ（ｍｕｘ１−０）で選択され、演算命令のオペランドとして、前記演算器群と前記データメモリに供給され、
前記演算器群は、
加減算器と、
乗算器と、
バレルシフタと、
を備え、それぞれ、前記制御回路の制御に基づき、前記第１のセレクタ（ｍｕｘ１−０）から供給されたオペランドに対する演算を行い、演算結果は、前記制御回路によって制御された第２のセレクタ（ｍｕｘ１−１）で選択されて第３のセレクタ（ｍｕｘ５）に供給され、
前記データメモリには、前記制御回路の制御に基づき、前記第１のセレクタ（ｍｕｘ１−０）の出力、及び、外部メモリに接続されるデータ転送網からのデータが書き込まれ、
前記データメモリから読み出されたデータは、前記第３のセレクタ（ｍｕｘ５）及び前記外部メモリに接続されるデータ転送網に供給され、
前記第３のセレクタ（ｍｕｘ５）は、前記制御回路の制御に基づき、前記第２のセレクタ（ｍｕｘ１−１）の選択結果、前記データメモリの読み出し結果、前記ＰＥ演算器間接続５０を介して提供される第２のＰＥのレジスタのいずれか１つを選択し、選択結果を、前記汎用レジスタ群に供給して値を更新する。
【００３７】
本発明においては、前記第２のＰＥは、
制御回路と、
汎用レジスタ群と、
演算器群と、
データメモリと、
を備え、
前記演算器群は、
加減算器と、
乗算器と、
バレルシフタと、
を備え、
前記汎用レジスタ群の出力は、前記制御回路によって制御された第１のセレクタ（ｍｕｘ２−０）で選択され、演算命令のオペランドとして、前記演算器群と前記データメモリに供給され、
前記制御回路の制御に基づき、第６のセレクタ（ｍｕｘ４）の選択結果と、第５のセレクタ（ｍｕｘ３）の選択結果を選択して、前記レジスタ群の第１のレジスタに供給する第２のセレクタ（ｍｕｘ０）と、
前記制御回路の制御に基づき、前記第６のセレクタ（ｍｕｘ４）の選択結果と、前記レジスタ群の第２のレジスタから読み出したビット列からＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）を取り除き、ＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）に０を加えた値を選択して、前記第２のレジスタに供給する第３のセレクタ（ｍｕｘ１）と、
前記制御回路の制御に基づき、前記第６のセレクタ（ｍｕｘ４）の選択結果と、前記レジスタ群の第３のレジスタから読み出したビット列からＭＳＢを取り除き、ＬＳＢに前記加減算器の減算結果のＭＳＢを加えた値を選択して、前記第３のレジスタに供給する第４のセレクタ（ｍｕｘ２）と、
を備え、
前記演算器群は、前記制御回路の制御に基づき、前記第１のセレクタ（ｍｕｘ２−０）から供給されたオペランドに対する演算を行い、演算結果は、前記制御回路によって制御された第７のセレクタ（ｍｕｘ２−１）で選択されて第６のセレクタ（ｍｕｘ４）に供給され、
前記データメモリには、前記制御回路の制御に基づき、前記第１のセレクタ（ｍｕｘ２−０）の出力、及び、外部メモリに接続されるデータ転送網からのデータが書き込まれ、
前記データメモリから読み出されたデータは、前記第６のセレクタ（ｍｕｘ４）及び前記外部メモリに接続されるデータ転送網に供給され、
前記第５のセレクタ（ｍｕｘ３）は、前記制御回路の制御に基づき、前記加減算器の演算結果と、前記第１のセレクタ（ｍｕｘ２−０）で選択された一方のオペランドを選択し、第２のセレクタ（ｍｕｘ０）に供給し、
前記第６のセレクタ（ｍｕｘ４）は、前記制御回路の制御に基づき、前記第７のセレクタ（ｍｕｘ２−１）の選択結果、前記データメモリの読み出し結果の一方を選択し、選択結果を汎用レジスタ群に供給し更新する構成としてもよい。
【発明の効果】
【００３８】
本発明によれば、複数のプロセッシングエレメント（ＰＥ）を１グループ（命令の実行単位であり、１つのＰＥが実行可能な命令よりも複雑な命令を実行する最小単位）として演算するＰＥから構成され、命令に応じて、グループを構成するＰＥの数を変える構成としたことで、資源の増加を抑制しながら、特性の異なる処理対象に柔軟に対応し、全体の性能向上を可能とする再構成可能なプロセッサを実現している。
【発明を実施するための最良の形態】
【００３９】
本発明の実施の形態について図面を参照して以下に説明する。
【００４０】
＜実施の形態１＞
実施の形態１では、１グループが複数のＰＥで構成された際に、グループがマルチサイクル型整数除算命令を実行する再構成可能なＳＩＭＤ型プロセッサについて説明する。
【００４１】
図１は、実施の形態１の構成を示すブロック図である。図１に示すように、再構成可能なＳＩＭＤ型プロセッサは、演算要素であるＰＥ−１〜ＰＥ−ｍ（１０−１〜１０−ｍ）と、ＰＥ−１〜ＰＥ−ｍを制御するコントロールプロセッサＣＰ（２０）と、ＰＥ−１〜ＰＥ−ｍとＣＰから読み書きされる外部メモリＥＭＥＭ（３０）を備えている。また、ＥＭＥＭ（３０）と各ＰＥ−１〜ＰＥ−ｍは、ＥＭＥＭデータ転送網４０を介して接続され、各ＰＥ−１〜ＰＥ−ｍは、ＰＥ演算器間接続５０で接続される。
【００４２】
ＰＥ−１〜ＰＥ−ｍは、各ＰＥの演算を制御するコントローラＰＥ  Ｃｔｒ−１〜ＰＥ  Ｃｔｒ−ｍ（１１−１〜１１−ｍ）と、演算を行う演算器群−１〜演算器群−ｍ（１３−１〜１３−ｍ）、演算器群−１〜演算器群−ｍへのオペランドを供給し、その演算結果を格納する汎用レジスタ群ＲｅｇＦｉｌｅｓ−１〜ＲｅｇＦｉｌｅｓ−ｍ（１２−１〜１２−ｍ）、ＲｅｇＦｉｌｅｓ−１〜ＲｅｇＦｉｌｅｓ−ｍおよびＥＭＥＭとの間でデータの読み書きを行う内蔵メモリＲＡＭ−１〜ＲＡＭ−ｍ（１４−１〜１４−ｍ）を備えている。
【００４３】
ＣＰ（２０）は、ＳＩＭＤ型プロセッサの命令流、およびＰＥ  Ｃｔｒ−１〜ＰＥ  Ｃｔｒ−ｍを制御する制御情報生成回路ＰＣ  Ｃｔｒ（２１）、プログラムを格納するプログラムメモリＰＲＡＭ（２４）、演算を行う演算器群−０（２３）、演算器群−０へのオペランドを供給し、その演算結果を格納する汎用レジスタ群ＲｅｇＦｉｌｅｓ−０（２２）、ＲｅｇＦｉｌｅｓ−０およびＥＭＥＭ（３０）との間でデータの読み書きを行うデータメモリＤＲＡＭ（２５）とを備えている。
【００４４】
また、ＣＰ（２０）のＰＣ  Ｃｔｒ（２１）の制御情報は、ＰＥ制御情報パス６０を介して、ＰＥ  Ｃｔｒ−１〜ＰＥ  Ｃｔｒ−ｍに送られる。
【００４５】
図２は、図１のＰＥ−１とＰＥ−２の内部の詳細な構成を示すブロック図である。本実施の形態では、１グループがマルチサイクル型整数除算命令を実行する際に、１つのグループが２個のＰＥから構成される場合について説明するが、本発明はかかる構成にのみ限定されるものでないことは勿論である。１グループは２個以上のＰＥから構成されればよい。
【００４６】
また、以下で述べるＰＥ−１とＰＥ−２の役割分担は、一例に過ぎず、本発明の範囲内において、自由な構成を取り得る。
【００４７】
図２に示すように、ＰＥ−１の汎用レジスタ群ＲｅｇＦｉｌｅｓ−１は、複数のレジスタＧＰＲ１０〜ＧＰＲ１ｐから構成され、セレクタｍｕｘ５の選択結果により更新される。
【００４８】
また、それらの出力は、ＰＥ  Ｃｔｒ−１に制御されたセレクタｍｕｘ１−０で選択され、オペランド（ｏｐｒ０、ｏｐｒ１）として、演算器群−１、およびＲＡＭ−１に供給される。
【００４９】
ＰＥ−１の演算器群−１は、加減算器Ａｄｄ／Ｓｕｂ−１、乗算器Ｍｕｌ−１、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−１から構成され、それぞれの演算器は、ＰＥ  Ｃｔｒ−１の制御に基づき、汎用レジスタ群ＲｅｇＦｉｌｅｓ−１から供給されたオペランド（ｏｐｒ０、  ｏｐｒ１）に対する演算を行う。
【００５０】
演算結果は、ＰＥ  Ｃｔｒ−１に制御されたセレクタｍｕｘ１−１で選択され、セレクタｍｕｘ５に提供される。
【００５１】
図２に示したＰＥ−１の演算器群−１の構成は一例に過ぎず、少なくとも演算種類の異なる複数の演算器から構成されればよい。
【００５２】
ＰＥ−１のＲＡＭ−１は複数の記憶素子から構成され、ＰＥ  Ｃｔｒ−１の制御に基づき、汎用レジスタ群ＲｅｇＦｉｌｅｓ−１およびＥＭＥＭデータ転送網からのデータを記憶素子に書き込む。
【００５３】
また、ＲＡＭ−１記憶素子から読み出したデータはセレクタｍｕｘ５およびＥＭＥＭデータ転送網４０に供給される。
【００５４】
セレクタｍｕｘ５は、ＰＥ  Ｃｔｒ−１の制御に基づき、
セレクタｍｕｘ１−１の選択結果、
ＲＡＭ−１の読み出し結果、
ＰＥ演算器間接続５０を介して提供されるＰＥ−２のレジスタＧＰＲ２２
のうちのいずれか１つを選択し、選択結果を、汎用レジスタ群ＲｅｇＦｉｌｅｓ−１に供給する。
【００５５】
ＰＥ−２の汎用レジスタ群ＲｅｇＦｉｌｅｓ−２は、複数のレジスタＧＰＲ２０〜ＧＰＲ２ｐから構成され、ＧＰＲ２０、ＧＰＲ２１、ＧＰＲ２２はそれぞれ、セレクタ（ｍｕｘ０、ｍｕｘ１、ｍｕｘ２）の選択結果により更新され、ＧＰＲ２３〜ＧＰＲ２ｐは、セレクタｍｕｘ４の選択結果により更新される。また、それらの出力は、ＰＥ  Ｃｔｒ−２に制御されたセレクタｍｕｘ２−０で選択され、オペランド（ｏｐｒ０、ｏｐｒ１）として演算器群−２およびＲＡＭ−２に供給される。
【００５６】
セレクタｍｕｘ０は、ＰＥ  Ｃｔｒ−２の制御に基づき、セレクタｍｕｘ４の選択結果と、セレクタｍｕｘ３の選択結果を選択して、ＧＰＲ２０に提供する。
【００５７】
セレクタｍｕｘ１は、ＰＥ  Ｃｔｒ−２の制御に基づき、セレクタｍｕｘ４の選択結果と、ＧＰＲ２１から読み出したビット列からＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）を取り除き、ＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）に０を加えた値を選択して、ＧＰＲ２１に提供する。
【００５８】
セレクタｍｕｘ２は、ＰＥ  Ｃｔｒ−２の制御に基づき、セレクタｍｕｘ４の選択結果と、ＧＰＲ２２から読み出したビット列からＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）を取り除き、ＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）に、Ａｄｄ／Ｓｕｂ−２の減算結果のＭＳＢを加えた値を選択して、ＧＰＲ２２に提供する。なお、ＧＰＲ２２の出力はＰＥ演算器間接続５０を介してＰＥ−１のセレクタｍｕｘ５に供給される。
【００５９】
ＰＥ−２の演算器群−２は、加減算器Ａｄｄ／Ｓｕｂ−２、乗算器Ｍｕｌ−２、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２から構成され、それぞれの演算器は、ＰＥ  Ｃｔｒ−２の制御に基づき、汎用レジスタ群ＲｅｇＦｉｌｅｓ−２から供給されたオペランド（ｏｐｒ０、ｏｐｒ１）に対する演算を行う。
【００６０】
演算結果は、ＰＥ  Ｃｔｒ−２に制御されたセレクタｍｕｘ２−１で選択され、セレクタｍｕｘ４に供給される。
【００６１】
なお、図２に示したＰＥ−２の演算器群−２の構成は一例に過ぎず、少なくとも演算種類の異なる複数の演算器から構成されればよい。
【００６２】
ＰＥ−２のＲＡＭ−２は記憶素子から構成され、ＰＥ  Ｃｔｒ−２の制御に基づき、汎用レジスタ群ＲｅｇＦｉｌｅｓ−２およびＥＭＥＭデータ転送網４０からのデータを記憶素子に書き込む、または、記憶素子から読み出したデータをセレクタｍｕｘ４およびＥＭＥＭデータ転送網４０に提供する。
【００６３】
セレクタｍｕｘ３は、ＰＥ  Ｃｔｒ−２の制御に基づき、加減算器Ａｄｄ／Ｓｕｂ−２の演算結果と、セレクタｍｕｘ２−０で選択された一方のオペランドｏｐｒ０を選択し、セレクタｍｕｘ０に提供する。
【００６４】
セレクタｍｕｘ４は、ＰＥ  Ｃｔｒ−２の制御に基づき、
セレクタｍｕｘ２−１の選択結果、
ＲＡＭ−２の読み出し結果
の一方を選択し、
選択結果を汎用レジスタ群ＲｅｇＦｉｌｅｓ−２に提供する。
【００６５】
図３は、図１及び図２に示した再構成可能なＳＩＭＤ型プロセッサにおいて、１グループが複数のＰＥで構成された際に、グループがマルチサイクル型整数除算命令を実行する再構成可能なＳＩＭＤ型プロセッサの処理手順の一例を示すフローチャートである。図４は、図３の各ステップが実行されるタイミングチャートを示す図である。図２乃至図４を参照して、マルチサイクル型整数除算命令を実行する再構成可能なＳＩＭＤ型プロセッサ方法について、詳細に説明する。
【００６６】
まず、ＰＥ−１では、ＧＰＲ１０を除算に要するサイクル数で、ＧＰＲ１１を１で初期化し、ＰＥ−２では、ＧＰＲ２０を被除数で、ＧＰＲ２１を除数で、ＧＰＲ２２を０で初期化する（ステップ１０００）。
【００６７】
ステップ１０００は、図４に示すように、最初のサイクルｔで実行される。
【００６８】
ステップ１０００では、ＧＰＲ１０、ＧＰＲ１１、ＧＰＲ２０、ＧＰＲ２１、ＧＰＲ２２を初期化対象のレジスタとするが、本発明は、かかる構成に限定されず、任意のレジスタを対象としてもよい。
【００６９】
次に、ＰＥ  Ｃｔｒ−１の制御に基づき、セレクタｍｕｘ１−０により、ＧＰＲ１０とＧＰＲ１１を演算のオペランド（ｏｐｒ０、ｏｐｒ１）として選択し、加減算器Ａｄｄ／Ｓｕｂ−１によって、ｏｐｒ０からｏｐｒ１を減算する（ステップ１００１）。
【００７０】
ここでは、ｏｐｒ１の値１をレジスタ値（ＧＰＲ１１）として提供するが、値１は必ずしもレジスタ値である必要は無く、即値などの他手段によって提供されても構わない。
【００７１】
演算結果が正の場合、ステップ１００３を実行し、演算結果が負の場合、ステップ１００５を実行する、また、演算結果の正負をＰＥ  Ｃｔｒ−１に通知する（ステップ１００２）。
【００７２】
ここでは、必要とするカウント値をＧＰＲ１０に、ＧＰＲ１１に１を設定し、ＧＰＲ１０からＧＰＲ１１を減算し、その正負により、マルチサイクル型整数除算命令を実行するサイクル数をカウントしている。
【００７３】
しかし、サイクル数のカウントの仕方は、かかる構成に限定されるものでなく、例えば、初期値０に対して１を加算し、必要とするサイクル数と比較するなどの手法を用いてもよいことは勿論である。
【００７４】
演算結果が正であった場合に、ＰＥ−２では、ＰＥ  Ｃｔｒ−２の制御に基づき、セレクタｍｕｘ２−０により、ＧＰＲ２０とＧＰＲ２１を演算のオペランド（ｏｐｒ０、ｏｐｒ１）として選択し、加減算器Ａｄｄ／Ｓｕｂ−２によって、前記ｏｐｒ０から前記ｏｐｒ１を減算する（ステップ１００３）。
【００７５】
次に、ＰＥ−１では、ＰＥ  Ｃｔｒ−１の制御に基づき、セレクタｍｕｘ１−１およびセレクタｍｕｘ５により、前記加減算器Ａｄｄ／Ｓｕｂ−１の演算結果を選択し、その選択結果で、ＧＰＲ１０を更新する（ステップ１００４）。
【００７６】
また、ＰＥ−２では、加減算器Ａｄｄ／Ｓｕｂ−２の演算結果の正負により、セレクタｍｕｘ３を制御し、演算結果が正であった場合には、演算結果を選択し、演算結果が負であった場合には、ｏｐｒ０を選択する。
【００７７】
次に、ＰＥ  Ｃｔｒ−２の制御に基づき、セレクタｍｕｘ０により、ｍｕｘ３の選択結果を選択し、選択結果により、ＧＰＲ２０を更新する（ステップ１００４）。
【００７８】
また、ＰＥ  Ｃｔｒ−２の制御に基づき、セレクタｍｕｘ１により、ＧＰＲ２１から読み出したビット列からＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）を取り除き、ＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）に０を加えた値を選択して、ＧＰＲ２１を更新する（ステップ１００４）。
【００７９】
また、ＰＥ  Ｃｔｒ−２の制御に基づき、セレクタｍｕｘ２により、ＧＰＲ２２から読み出したビット列からＭＳＢを取り除き、ＬＳＢにＡｄｄ／Ｓｕｂ−２の減算結果のＭＳＢを反転した値を加えた値を選択して、ＧＰＲ２２を更新する（ステップ１００４）。
【００８０】
一方、加減算器Ａｄｄ／Ｓｕｂ−１の演算結果が負であった場合に、ＰＥ−２では、整数除算の演算結果であるＧＰＲ２２の値を、ＰＥ演算器間接続５０を介して、ＰＥ−１に送り、ＰＥ−１では、除算サイクル数が規定値に達したことを通知されたＰＥ  Ｃｔｒ−１の制御に基づき、セレクタｍｕｘ５により、整数除算結果を選択し、汎用レジスタＲｅｇＦｉｌｅｓ−１内の任意のレジスタに書き込む（ステップ１００５）。
【００８１】
図４に示すように、ステップ１００１〜１００４は同じサイクルで実行され、加減算器Ａｄｄ／Ｓｕｂ−１の演算結果が正である場合は、複数サイクルの間、繰り返し実行される。加減算器Ａｄｄ／Ｓｕｂ−１の演算結果が負である場合は、ステップ１００１〜１００５が実行され、マルチサイクル型整数除算命令の実行が終了する。
【００８２】
以上のように、本実施の形態によれば、複数セレクタ（ｍｕｘ０〜ｍｕｘ３）を追加し、セレクタｍｕｘ５とＰＥ  Ｃｔｒ−１、ＰＥ  Ｃｔｒ−２の制御回路を拡張することで、マルチサイクル型整数除算命令を実現することができる。
【００８３】
回路規模の大きな演算器やレジスタを新規に追加する必要がないため、僅かな回路増加で、マルチサイクル型整数除算命令を実現することができる。
【００８４】
また、１個のＰＥが既に実行可能な命令の組合せで、整数除算命令を実現する場合には、サイクルの制御、被除数から除数の減算、演算結果のビット操作を、既存命令でシーケンシャルに実現する必要があったため、除算結果一桁を計算するのに、１０サイクル程度を必要としていた。
【００８５】
これに対して、本実施の形態によれば、同時に実行できる整数除算の命令数は半分になるものの、除算結果一桁を１サイクルで計算できるため、１個のＰＥで整数除算を実現した場合に比べ、ＳＩＭＤ型プロセッサ全体で、約５倍の性能向上を実現できる。
【００８６】
＜実施の形態２＞
本発明の第２の実施の形態では、１グループが複数のＰＥで構成された際に、前記グループがマルチサイクル型浮動小数点加減算命令を実行する再構成可能なＳＩＭＤ型プロセッサについて、詳細に説明する。ここでは、浮動小数点数の表現形式として、ＩＥＥＥ７５４の単精度を用いる。
【００８７】
図５に、ＩＥＥＥ７５４の単精度のビット配列を示す。図５に示すように、ＩＥＥＥ７５４の単精度は３２ｂｉｔのビット列から形成され、それらが、符号部（Ｓ）、指数部（Ｅ）、仮数部（Ｆ）に分かれている。
【００８８】
図６に示したように、±［符号部］１．［仮数部］×２＾［指数部］により、実数値を表現する。以下では、演算対象となるオペランド０、オペランド１の符号部をＳ０、Ｓ１、指数部をＥ０、Ｅ１、仮数部Ｆ０、Ｆ１として説明を行う。ここでは、浮動小数点数の表現形式としてＩＥＥＥ７５４の単精度を用いているが、他の表現形式を用いてもよいことは勿論である。
【００８９】
本発明の第２の実施の形態のＳＩＭＤ型プロセッサ全体の構成は、図１に示した第一の実施の形態と同様である。このため、図１を参照して第２の実施の形態を説明することは省略する。
【００９０】
図７、図８は、それぞれ、図１のＰＥ−１とＰＥ−２の内部の詳細な構成をそれぞれ示す図である。本実施の形態では、１グループがマルチサイクル型浮動小数点加減算命令を実行する際に、グループが２個のＰＥから構成される場合について説明する。なお、本発明において、１グループは２個以上のＰＥから構成されればよい。また、以下に説明されるＰＥ−１とＰＥ−２の役割分担は一例に過ぎず、本発明は、かかる構成にのみ限定されるものでないことは勿論である。
【００９１】
図７、図８に示すように、ＰＥ演算器間接続５０を介して、ＰＥ−１はＰＥ−２から、浮動小数点加減算命令のオペランドであるｆｏｐｒ０、ｆｏｐｒ１を受け取り、ＰＥ−１からＰＥ−２に、浮動小数点加減算命令の途中結果である仮数途中結果ｔｍｐｆと、指数途中結果ｔｍｐｅと、符号結果ｓｉｇｎを提供する。以下では、図７を参照してＰＥ−１について説明する。
【００９２】
ＰＥ−１の汎用レジスタ群ＲｅｇＦｉｌｅｓ−１は、複数のレジスタＧＰＲ１０〜ＧＰＲ１ｐから構成され、ＧＰＲ１０、ＧＰＲ１１、ＧＰＲ１２はそれぞれ、セレクタ（ｍｕｘ００、ｍｕｘ０１、ｍｕｘ０２）の選択結果により更新され、ＧＰＲ１３〜ＧＰＲ１ｐは、セレクタｍｕｘ０７の選択結果により更新される。
【００９３】
また、それらの出力は、ＰＥ  Ｃｔｒ−１に制御されたセレクタｍｕｘ１−０で選択され、オペランド（ｏｐｒ０、ｏｐｒ１）として演算器群−１およびＲＡＭ−１に供給される。
【００９４】
セレクタｍｕｘ００は、ＰＥ  Ｃｔｒ−１の制御に基づき、ＰＥ演算器間接続５０を介して、ＰＥ−２より提供されたｆｏｐｒ０と、セレクタｍｕｘ０７の選択結果を選択して、ＧＰＲ１０に提供する。
【００９５】
セレクタｍｕｘ０１は、ＰＥ  Ｃｔｒ−１の制御に基づき、ＰＥ演算器間接続５０を介して、ＰＥ−２より提供されたｆｏｐｒ１と、セレクタｍｕｘ０７の選択結果の一方を選択して、ＧＰＲ１１に提供する。
【００９６】
セレクタｍｕｘ０２は、ＰＥ  Ｃｔｒ−１の制御に基づき、演算器群−１の差分器Ａｂｓ−１の演算結果の下位半分を下位、ＧＰＲ１２の下位半分を上位とするビット列と、セレクタｍｕｘ０７の選択結果の一方を選択して、ＧＰＲ１２に提供する。
【００９７】
ＰＥ−１の演算器群−１は、
加減算器Ａｄｄ／Ｓｕｂ−１、
乗算器Ｍｕｌ−１、
差分器Ａｂｓ−１、
バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−１
を備えている。
【００９８】
加減算器Ａｄｄ／Ｓｕｂ−１は、セレクタｍｕｘ０３の選択結果とｏｐｒ１をオペラントとして、ＰＥ  Ｃｔｒ−１の制御に基づいた演算を行う。
【００９９】
乗算器Ｍｕｌ−１は、ｏｐｒ０とｏｐｒ１をオペラントとして、ＰＥ  Ｃｔｒ−１の制御に基づいた演算を行う。
【０１００】
差分器Ａｂｓ−１は、セレクタｍｕｘ０４およびセレクタｍｕｘ０５の選択結果をオペラントとして、ＰＥ  Ｃｔｒ−１の制御に基づいた演算を行う。
【０１０１】
バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−１は、ｏｐｒ０とセレクタｍｕｘ０６の選択結果をオペラントとして、ＰＥ  Ｃｔｒ−１の制御に基づいた演算を行う。
【０１０２】
演算結果は、ＰＥ  Ｃｔｒ−１に制御されたセレクタｍｕｘ１−１で選択され、セレクタｍｕｘ０７に提供される。
【０１０３】
セレクタｍｕｘ０３は、ＰＥ  Ｃｔｒ−１の制御に基づき、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−１の演算結果と、ｏｐｒ０を選択して、加減算器Ａｄｄ／Ｓｕｂ−１に提供する。
【０１０４】
セレクタｍｕｘ０４は、ＰＥ  Ｃｔｒ−１の制御に基づき、ＰＥ演算器間接続５０を介して、ＰＥ−２より提供されたｆｏｐｒ０の指数部Ｅ０と、ｏｐｒ０を選択して、差分器Ａｂｓ−１に提供する。
【０１０５】
セレクタｍｕｘ０５は、ＰＥ  Ｃｔｒ−１の制御に基づき、ＰＥ演算器間接続５０を介して、ＰＥ−２より提供されたｆｏｐｒ１の指数部Ｅ１と、ｏｐｒ１を選択して、差分器Ａｂｓ−１に提供する。
【０１０６】
セレクタｍｕｘ０６は、ＰＥ  Ｃｔｒ−１の制御に基づき、ＧＰＲ１２の下位半分とその上位半分に０を埋めたビット列と、ｏｐｒ１を選択して、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−１に提供する。
【０１０７】
ＰＥ−１のＲＡＭ−１は記憶素子から構成され、ＰＥ  Ｃｔｒ−１の制御に基づき、汎用レジスタ群ＲｅｇＦｉｌｅｓ−１およびＥＭＥＭデータ転送網４０からのデータを記憶素子に書き込む、または、記憶素子から読み出したデータをセレクタｍｕｘ０７およびＥＭＥＭデータ転送網４０に提供する。
【０１０８】
セレクタｍｕｘ０７は、ＰＥ  Ｃｔｒ−１の制御に基づき、セレクタｍｕｘ１−１の選択結果、ＲＡＭ−１の読み出し結果を選択し、選択結果を汎用レジスタ群ＲｅｇＦｉｌｅｓ−１に提供する。
【０１０９】
図８に示すように、ＰＥ演算器間接続５０を介して、ＰＥ−２は、ＰＥ−１から、浮動小数点加減算命令の途中結果である仮数途中結果ｔｍｐｆと、指数途中結果ｔｍｐｅと、符号結果ｓｉｇｎを受け取り、ＰＥ−２からＰＥ−１に、浮動小数点加減算命令のオペランドであるｆｏｐｒ０、ｆｏｐｒ１を提供する。
【０１１０】
図８を参照して、ＰＥ−２の詳細な構成について述べる。ＰＥ−２の汎用レジスタ群ＲｅｇＦｉｌｅｓ−２は、複数のレジスタＧＰＲ２０〜ＧＰＲ２ｐから構成され、ＧＰＲ２０、ＧＰＲ２１はそれぞれ、セレクタ（ｍｕｘ０８、ｍｕｘ０９）の選択結果により更新され、ＧＰＲ２２〜ＧＰＲ２ｐは、形式成型器ｆｏｒｍの選択結果により更新される。また、それらの出力は、ＰＥ  Ｃｔｒ−２に制御されたセレクタｍｕｘ２−０で選択され、オペランド（ｏｐｒ０、ｏｐｒ１）として演算器群−２およびＲＡＭ−２に供給される。
【０１１１】
セレクタｍｕｘ０８は、ＰＥ  Ｃｔｒ−２の制御に基づき、ＰＥ演算器間接続５０を介して、ＰＥ−１より提供された指数途中結果ｔｍｐｅを下位に、符号結果ｓｉｇｎをその上位としたビット列と、セレクタｍｕｘ１５の選択結果を選択して、ＧＰＲ２０に提供する。
【０１１２】
セレクタｍｕｘ０９は、ＰＥ  Ｃｔｒ−２の制御に基づき、演算器群−２の差分器Ａｂｓ−２の演算結果と、セレクタｍｕｘ１５の選択結果を選択して、ＧＰＲ２１に提供する。
【０１１３】
ＰＥ−２の演算器群−２は、加減算器Ａｄｄ／Ｓｕｂ−２、乗算器Ｍｕｌ−２、差分器Ａｂｓ−２、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２を備えている。
【０１１４】
加減算器Ａｄｄ／Ｓｕｂ−２はセレクタｍｕｘ１０とセレクタｍｕｘ１１の選択結果をオペラントとして、ＰＥ  Ｃｔｒ−２の制御に基づいた演算を行う。
【０１１５】
乗算器Ｍｕｌ−２はｏｐｒ０とｏｐｒ１をオペラントとして、ＰＥ  Ｃｔｒ−２の制御に基づいた演算を行う。
【０１１６】
差分器Ａｂｓ−２はセレクタｍｕｘ１２とセレクタｍｕｘ１３の選択結果をオペラントとして、ＰＥ  Ｃｔｒ−２の制御に基づいた演算を行う。
【０１１７】
バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２  はｏｐｒ０とセレクタｍｕｘ１４の選択結果をオペラントとして、ＰＥ  Ｃｔｒ−２の制御に基づいた演算を行う。
【０１１８】
演算結果は、ＰＥ  Ｃｔｒ−２に制御されたセレクタｍｕｘ２−１で選択され、セレクタｍｕｘ１５に提供される。
【０１１９】
セレクタｍｕｘ１０は、ＰＥ  Ｃｔｒ−２の制御に基づき、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２の演算結果と、ｏｐｒ０を選択して、加減算器Ａｄｄ／Ｓｕｂ−２に提供する。
【０１２０】
セレクタｍｕｘ１１は、ＰＥ  Ｃｔｒ−２の制御に基づき、値１と、ｏｐｒ１を選択して、加減算器Ａｄｄ／Ｓｕｂ−２に提供する。
【０１２１】
セレクタｍｕｘ１２は、ＰＥ  Ｃｔｒ−２の制御に基づき、ＰＥ演算器間接続５０を介して、ＰＥ−１より提供された仮数途中結果ｔｍｐｆと、ｏｐｒ０を選択して、差分器Ａｂｓ−２に提供する。
【０１２２】
セレクタｍｕｘ１３は、ＰＥ  Ｃｔｒ−２の制御に基づき、値０と、ｏｐｒ１を選択して、差分器Ａｂｓ−２に提供する。
【０１２３】
セレクタｍｕｘ１４は、ＰＥ  Ｃｔｒ−２の制御に基づき、リーディングワンＬｅａｄｉｎｇＯｎｅの演算結果と、ｏｐｒ１を選択して、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２に提供する。
【０１２４】
また、ＰＥ−２の演算器群−２は、
浮動小数点加減算命令の実行のみに使用するリーディングワンＬｅａｄｉｎｇＯｎｅ、加算器Ａｄｄ、丸め検出器Ｒｏｕｎｄ、を備えている。
【０１２５】
リーディングワンＬｅａｄｉｎｇＯｎｅは、オペランドｏｐｒ０のビット列をＭＳＢ側から検索し、ＭＳＢから最初に現れた１までの距離を計算し、加算器Ａｄｄとセレクタｍｕｘ１４に提供する。
【０１２６】
加算器Ａｄｄは、ｏｐｒ１の部分ビット列と、リーディングワンＬｅａｄｉｎｇＯｎｅの検索結果を加算し、形式成型器ｆｏｒｍに提供する。
【０１２７】
丸め検出器Ｒｏｕｎｄは、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２の演算結果が丸めを必要とするかを判定し、判定結果をセレクタｍｕｘ２−１に提供する。
【０１２８】
ＰＥ−２のＲＡＭ−２は、記憶素子から構成され、ＰＥ  Ｃｔｒ−２の制御に基づき、汎用レジスタ群ＲｅｇＦｉｌｅｓ−２およびＥＭＥＭデータ転送網からのデータを記憶素子に書き込む、
または、記憶素子から読み出したデータをセレクタｍｕｘ１５およびＥＭＥＭデータ転送網４０に提供する。
【０１２９】
セレクタｍｕｘ１５は、ＰＥ  Ｃｔｒ−２の制御に基づき、セレクタｍｕｘ２−１の選択結果、ＲＡＭ−２の読み出し結果を選択し、選択結果を形式成型器ｆｏｒｍに提供する。
【０１３０】
形式成型器ｆｏｒｍは、ＰＥ  Ｃｔｒ−２の制御に基づき、セレクタｍｕｘ１５の選択結果を仮数部、加算器Ａｄｄの演算結果を指数部、符号結果ｓｉｇｎを符号部として選択し、ＩＥＥＥ７５４の単精度の形式に整え、その結果を汎用レジスタ群ＲｅｇＦｉｌｅｓ−２に提供する。
【０１３１】
図９は、図１、図７、図８に示した第２の実施の形態の再構成可能なＳＩＭＤ型プロセッサにおいて、１グループが複数のＰＥで構成された際に、グループがマルチサイクル型浮動小数点加減算命令を実行する再構成可能なＳＩＭＤ型プロセッサの動作を示すフローチャートである。図１０は、図９の各ステップが実行されるタイミングチャートである。以下では、図９と図１０を用いて、マルチサイクル型浮動小数点加減算命令を実行する再構成可能なＳＩＭＤ型プロセッサ方法について、詳細に説明する。
【０１３２】
まず、ＰＥ−２では、ＧＰＲ２０を浮動小数点のオペランド０（ｆｏｐｒ０）で、ＧＰＲ２１を浮動小数点のオペランド１（ｆｏｐｒ１）で初期化する（ステップ２０００）。ステップ２０００は、図１０に示すように、最初のサイクルｔで実行される。
【０１３３】
ステップ２０００では、ＧＰＲ２０、ＧＰＲ２１を初期化対象のレジスタとするが、本発明は、かかる構成に限定されるものでなく、任意のレジスタを対象とする。また、浮動小数の１つのオペランドは、即値による指定、２つ以上のレジスタの組合せによって表現されてもよい。
【０１３４】
次に、ＧＰＲ２０とＧＰＲ２１に格納された浮動小数点オペランド（ｆｏｐｒ０、ｆｏｐｒ１）を、ＰＥ演算器間接続５０を介してＰＥ−１に送り、ＰＥ−１では、ＰＥ  Ｃｔｒ−１の制御に基づき、セレクタｍｕｘ０４とセレクタｍｕｘ０５により、オペランド（ｆｏｐｒ０、ｆｏｐｒ１）の指数部（Ｅ０、Ｅ１）を選択し、差分器Ａｂｓ−１により、指数部Ｅ０とＥ１の差分を計算する（ステップ２００１）。
【０１３５】
ＰＥ−１では、ＰＥ  Ｃｔｒ−１の制御に基づき、セレクタｍｕｘ００は、ｆｏｐｒ０の仮数部（Ｆ０）とＦ０のＭＳＢ側に１を加えたビット列を選択し、選択結果によりＧＰＲ１０を更新する（ステップ２００２）。
【０１３６】
セレクタｍｕｘ０１は、ｆｏｐｒ１の仮数部（Ｆ１）とＦ１のＭＳＢ側に１を加えたビット列を選択し、選択結果によりＧＰＲ１１を更新する（ステップ２００２）。
【０１３７】
また、セレクタｍｕｘ０２は、差分器Ａｂｓ−１の演算結果の下位８ビットを選択し、選択結果によりＧＰＲ１２の下位８ビットを更新する（ステップ２００２）。
【０１３８】
さらに、ステップ２００２では、指数部（Ｅ０、Ｅ１）の大小関係とｆｏｐｒ０とｆｏｐｒ１の符号部（Ｓ０、Ｓ１）をＰＥＣ  ｔｒ−１内に新たに設けたレジスタ（不図示）に保存する。
【０１３９】
図１０に示すように、ステップ２００１〜ステップ２００２は、二番目のサイクルｔ＋１で実行される。
【０１４０】
ＰＥ  Ｃｔｒ−１内に保存された指数部（Ｅ０、Ｅ１）の大小関係が、
Ｅ０＞Ｅ１
であった場合には、ＰＥ  Ｃｔｒ−１の制御に基づき、セレクタｍｕｘ１−０により、
ＧＰＲ１０をｏｐｒ０、
ＧＰＲ１１をｏｐｒ１
として選択する（ステップ２００３）。
【０１４１】
Ｅ０＜Ｅ１であった場合には、ＰＥ  Ｃｔｒ−１の制御に基づき、
セレクタｍｕｘ１−０により、
ＧＰＲ１１をｏｐｒ０、
ＧＰＲ１０をｏｐｒ１
として選択して、その選択結果を演算器群−１に提供する（ステップ２００３）。
【０１４２】
図１１に示すように、ＰＥ  Ｃｔｒ−１内に保存された符号部（Ｓ０、Ｓ１）と、加減算器Ａｄｄ／Ｓｕｂ−１が加算と減算のどちらを実行するかの情報に基づき、ＰＥ  Ｃｔｒ−１が加減算器Ａｄｄ／Ｓｕｂ−１を制御し、ｏｐｒ０とｏｐｒ１に対して、加算または減算を行う（ステップ２００４）。
【０１４３】
ＰＥ  Ｃｔｒ−１の制御に基づき、セレクタｍｕｘ０２は、ＧＰＲ１２の下位８ビットに保存された指数部差分結果を選択し、その選択結果によりＧＰＲ１２の上位８ビットを更新する（ステップ２００５）。
【０１４４】
また、ステップ２００５では、図１２に示すように、ＰＥ  Ｃｔｒ−１は、
加減算器Ａｄｄ／Ｓｕｂ−１の演算結果の正負と、
ＰＥ  Ｃｔｒ−１内に保存された符号部（Ｓ０、Ｓ１）と、
から、
浮動小数点加減算の演算結果の符合を決定し、その符号をＰＥ  Ｃｔｒ−１内に新設したレジスタ（不図示）に保存する。
【０１４５】
さらに、ＰＥ  Ｃｔｒ−１の制御に基づき、セレクタｍｕｘ１−１により、加減算器Ａｄｄ／Ｓｕｂ−１の演算結果を選択し、その選択結果をセレクタｍｕｘ０７に提供し、
セレクタｍｕｘ０７は、ＰＥ  Ｃｔｒ−１の制御に基づき、セレクタｍｕｘ１−１の選択結果を選択し、その選択結果により、ＧＰＲ１３を更新する（ステップ２００５）。
【０１４６】
図１０に示すように、ステップ２００３〜ステップ２００５は、三番目のサイクルｔ＋２で実行される。
【０１４７】
ＰＥ−１では、
ＧＰＲ１２の上位８ビットに格納された指数部の差分ｔｍｐｅと、
ＧＰＲ１３に格納された仮数部の加減算結果ｔｍｐｆと、
演算結果の符合ｓｉｇｎとを、
ＰＥ演算器間接続５０を介して、ＰＥ−２に提供し、
ＰＥ  Ｃｔｒ−２の制御に基づき、
セレクタｍｕｘ１２は、ｔｍｐｆを選択し、
セレクタｍｕｘ１３は０を選択し、
差分器Ａｂｓ−２は、選択結果の差分を計算する（ステップ２００６）。
【０１４８】
またＰＥ−２では、ＰＥ  Ｃｔｒ−２の制御に基づき、
セレクタｍｕｘ０８は、ＰＥ−１より提供された指数途中結果ｔｍｐｅの上位ビット側に、符号結果ｓｉｇｎを加えたビット列を選択し、
セレクタｍｕｘ０９は、差分器Ａｂｓ−２の演算結果を選択し、
それぞれの選択結果をＧＰＲ２０とＧＰＲ２１に保存する（ステップ２００７）。
【０１４９】
図１０に示すように、ステップ２００６〜２００７は、四番目のサイクルｔ＋３で実行される。
【０１５０】
ＰＥ  Ｃｔｒ−２の制御に基づき、セレクタｍｕｘ２−０は、ＧＰＲ２１をｏｐｒ０として選択し、ＧＰＲ２０をｏｐｒ１として選択する（ステップ２００８）。
【０１５１】
次に、リーディングワンＬｅａｄｉｎｇＯｎｅにより、ｏｐｒ０のビット列のＭＳＢ側からＬＳＢ側へビット列を走査し、ＭＳＢから最初に１であったビットまでのビット数を計算する（ステップ２００９）。
【０１５２】
ＰＥ  Ｃｔｒ−２の制御に基づき、
セレクタｍｕｘ１４は、リーディングワンＬｅａｄｉｎｇＯｎｅの演算結果を選択し、
バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２は、ｏｐｒ０を選択結果に基づきビットシフトする（ステップ２０１０）。
【０１５３】
加算器Ａｄｄにより、ｏｐｒ１の指数途中結果ｔｍｐｅとリーディングワンＬｅａｄｉｎｇＯｎｅの演算結果を加算する（ステップ２０１１）。
【０１５４】
ＰＥ  Ｃｔｒ−２の制御に基づき、
セレクタｍｕｘ１０は、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２の演算結果を選択し、
セレクタｍｕｘ１１は１を選択し、
加減算器Ａｄｄ／Ｓｕｂ−２は、それらの選択結果を加算する（ステップ２０１２）。
【０１５５】
丸め検出器Ｒｏｕｎｄにより、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２  の演算結果を、単精度の仮数部のビット幅に収める際に、丸めが必要となるかを判断する（ステップ２０１３）。
【０１５６】
丸め判定結果に基づき、
セレクタｍｕｘ２−１は、
丸めが必要であった場合には、加減算器Ａｄｄ／Ｓｕｂ−２の演算結果を選択し、
丸めが不要であった場合には、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２の演算結果を選択する（ステップ２０１４）。
【０１５７】
ＰＥ  Ｃｔｒ−２の制御に基づき、
セレクタｍｕｘ１５は、セレクタｍｕｘ２−１の選択結果を選択し、
形式成型器ｆｏｒｍは、
ｏｐｒ１のｓｉｇｎ部分を演算結果の符号部とし、
加算器Ａｄｄの演算結果を演算結果の指数部とし、
セレクタｍｕｘ１５の選択結果の下位２３ｂｉｔを演算結果の仮数部
として選択し、ＩＥＥＥ７５４の単精度の形式に整え、その結果を汎用レジスタ群ＲｅｇＦｉｌｅｓ−２の任意のレジスタに保存する（ステップ２０１５）。
【０１５８】
図１０に示すように、ステップ２００８〜ステップ２０１５は五番目のサイクルｔ＋４で実行され、マルチサイクル型浮動小数点加減算命令の実行が終了する。
【０１５９】
ここでは、マルチサイクル型浮動小数点加減算命令をパイプライン分割し、レイテンシが４サイクル、スループットが１サイクルで実現するようにしたが、対象となるアプリによって、レイテンシ、スループットは最適な構成を選択し、それらに合わせて、１グループを構成するＰＥ数、およびＰＥ内の構成を自由に変更するようにしてもよい。
【０１６０】
以上のように本実施の形態によれば、
複数セレクタ（ｍｕｘ００〜ｍｕｘ０６、ｍｕｘ０８〜ｍｕｘ１４）と、
リーディングワンＬｅａｄｉｎｇＯｎｅと、
加算器Ａｄｄと、
丸め検出器Ｒｏｕｎｄと、
を前記実施の形態に追加し、
ＰＥ  Ｃｔｒ−１、ＰＥ  Ｃｔｒ−２の制御回路を拡張することで、マルチサイクル型浮動小数点加減算命令を実現することができる。
【０１６１】
回路規模の大きな加減算器やバレルシフタやレジスタを新規に追加する必要がないため、新規に浮動小数点加減算の回路を追加するのに比べ、僅かな回路増加ですむ。
【０１６２】
また、１個のＰＥが既に実行可能な命令の組合せで、マルチサイクル型浮動小数点加減算命令を実現する場合には、整数形式で浮動小数点を表現するためのビット操作が多用されるため、２つの単精度オペランドを加減算するのに、４０００サイクル程度を必要としていた。
【０１６３】
しかし、本実施の形態によれば、同時に実行できる浮動小数点加減算命令の命令数は半分になるものの、命令を４サイクルで計算できるため、１個のＰＥで命令を実現した場合に比べ、約５００倍の性能向上を実現できる。
【０１６４】
＜実施の形態３＞
実施の形態３では、前記実施の形態の一例として、１グループが複数のＰＥで構成された際に、グループがマルチサイクル型浮動小数点乗算命令を実行する再構成可能なＳＩＭＤ型プロセッサについて、詳細に説明する。なお本発明は、下記の実施の形態の構成に限定されるものでないことは勿論である。ここでは、実施の形態２と同様に、浮動小数点数の表現形式としてＩＥＥＥ７５４の単精度を用いて、実施の形態３の説明を行う。ここでは、浮動小数点数の表現形式としてＩＥＥＥ７５４の単精度を用いているが、他の表現形式を用いたとしても、本発明の実施には、なんら影響を与えない。
【０１６５】
本実施の形態のＳＩＭＤ型プロセッサ全体の構成は、図１に示した実施の形態１と同様である。なお、図１の説明は省略する。
【０１６６】
図１３と図１４はそれぞれ、本実施の形態におけるＰＥ−１〜ＰＥ−２の構成の一例を示す図である。本実施の形態では、１グループがマルチサイクル型浮動小数点乗算命令を実行する際に、グループが２個のＰＥから構成される場合について説明する。本発明はかかる構成にのみ限定されるものでなく、１グループは２個以上のＰＥから構成されればよい。また、以下で説明されるＰＥ−１〜ＰＥ−２の役割分担は一例に過ぎず、本発明はかかる構成にのみ限定されるものでないことは勿論である。
【０１６７】
図１３、図１４に示すように、ＰＥ演算器間接続５０を介して、ＰＥ−１はＰＥ−２から、シフト途中結果の下位データｌｄａｔａを受け取り、ＰＥ−１からＰＥ−２に、仮数部途中結果ｔｍｐｆ、符号部結果ｓｉｇｎ、シフトビット幅ｓｗ、シフト途中結果の上位データｈｄａｔａ、指数部途中結果ｔｍｐｅ１を提供する。以下では、図１３を参照して、ＰＥ−１について説明する。
【０１６８】
ＰＥ−１の汎用レジスタ群ＲｅｇＦｉｌｅｓ−１は、複数のレジスタＧＰＲ１０〜ＧＰＲ１ｐから構成され、ＧＰＲ１２はセレクタｍｕｘ００の選択結果により更新され、ＧＰＲ１０〜ＧＰＲ１１およびＧＰＲ１３〜ＧＰＲ１ｐは、セレクタｍｕｘ０７の選択結果により更新される。
【０１６９】
さらに、ＧＰＲ１ｐ−１とＧＰＲ１ｐは、乗算結果の上位と下位の半分をそれぞれ格納する特殊レジスタとして扱うため、ＧＰＲ１ｐ−１とＧＰＲ１ｐには別途専用のセレクタが用いられているが、本発明の主題と直接的に関わらないため、図１３では、図示されない。また、それらの出力は、ＰＥ  Ｃｔｒ−１に制御されたセレクタｍｕｘ１−０で選択され、オペランド（ｏｐｒ０、ｏｐｒ１）として演算器群−１およびＲＡＭ−１に供給される。
【０１７０】
セレクタｍｕｘ００は、ＰＥ  Ｃｔｒ−１の制御に基づき、加減算器Ａｄｄ／Ｓｕｂ−１の演算結果と、セレクタｍｕｘ０７の選択結果を選択して、選択結果をＧＰＲ１２に提供する。
【０１７１】
ＰＥ−１の演算器群−１は、加減算器Ａｄｄ／Ｓｕｂ−１、乗算器Ｍｕｌ−１、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−１を備えている。
【０１７２】
加減算器Ａｄｄ／Ｓｕｂ−１は、セレクタｍｕｘ０１の選択結果とセレクタｍｕｘ０２の選択結果をオペランドとして、ＰＥ  Ｃｔｒ−１の制御に基づいた演算を行う。
【０１７３】
乗算器Ｍｕｌ−１は、セレクタｍｕｘ０３の選択結果とセレクタｍｕｘ０４の選択結果をオペランドとして、ＰＥ  Ｃｔｒ−１の制御に基づいた演算を行う。
【０１７４】
バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−１はセレクタｍｕｘ０５の選択結果とセレクタｍｕｘ０６の選択結果をオペランドとして、ＰＥ  Ｃｔｒ−１の制御に基づいた演算を行う。
【０１７５】
演算結果は、ＰＥ  Ｃｔｒ−１に制御されたセレクタｍｕｘ１−１で選択され、セレクタｍｕｘ０７に提供される。
【０１７６】
セレクタｍｕｘ０１は、ＰＥ  Ｃｔｒ−１の制御に基づき、ｏｐｒ０のうちＩＥＥＥ７５４の単精度の指数部分［３０：２３］を下位ビットとし、その上位側に０を組み合わせたビット列と、ｏｐｒ０を選択して、選択結果を加減算器Ａｄｄ／Ｓｕｂ−１に提供する。
【０１７７】
セレクタｍｕｘ０２は、ＰＥ  Ｃｔｒ−１の制御に基づき、ｏｐｒ１のうちＩＥＥＥ７５４の単精度の指数部分［３０：２３］を下位ビットとし、その上位側に０を組み合わせたビット列と、ｏｐｒ１を選択して、選択結果を加減算器Ａｄｄ／Ｓｕｂ−１に提供する。
【０１７８】
セレクタｍｕｘ０３は、ＰＥ  Ｃｔｒ−１の制御に基づき、ｏｐｒ０のうちＩＥＥＥ７５４の単精度の仮数部分［２２：０］を下位ビットとし、その上位ビットに１、その上位側に０を組み合わせたビット列と、ｏｐｒ０を選択して、選択結果を乗算器Ｍｕｌ−１に提供する。
【０１７９】
セレクタｍｕｘ０４は、ＰＥ  Ｃｔｒ−１の制御に基づき、ｏｐｒ１のうちＩＥＥＥ７５４の単精度の仮数部分［２２：０］を下位ビットとし、その上位ビットに１、その上位側に０を組み合わせたビット列と、ｏｐｒ１を選択して、選択結果を乗算器Ｍｕｌ−１に提供する。
【０１８０】
セレクタｍｕｘ０５は、ＰＥ  Ｃｔｒ−１の制御に基づき、ＧＰＲ１ｐ−１の下位１６ｂｉｔを上位、ＧＰＲ１ｐの３２ｂｉｔを下位としたビット列ｔｍｐｆの上位１６ｂｉｔと、その上位側に０を組み合わせたビット列と、ｏｐｒ０を選択して、選択結果をバレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−１に提供する。
【０１８１】
セレクタｍｕｘ０６は、リーディングワンＬｅａｄｉｎｇＯｎｅの演算結果と、ｏｐｒ１を選択して、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−１に提供する。
【０１８２】
また、ＰＥ−１の演算器群−１は、浮動小数点加減算命令の実行のみに使用するリーディングワンＬｅａｄｉｎｇＯｎｅ、加算器Ａｄｄを備えている。
【０１８３】
リーディングワンＬｅａｄｉｎｇＯｎｅは、ｔｍｐｆのビット列をＭＳＢ側から検索し、ＭＳＢから最初に現れた１までの距離ｓｗを計算し、加算器Ａｄｄとセレクタｍｕｘ０６とＰＥ−２に提供する。
【０１８４】
加算器Ａｄｄは、ＧＰＲ１２に格納された仮数部の途中結果ｔｍｐｅ０と、リーディングワンＬｅａｄｉｎｇＯｎｅの検索結果を加算し、ＰＥ−２に提供する。
【０１８５】
ＰＥ−１のＲＡＭ−１は、記憶素子から構成され、ＰＥ  Ｃｔｒ−１の制御に基づき、汎用レジスタ群ＲｅｇＦｉｌｅｓ−１およびＥＭＥＭデータ転送網からのデータを記憶素子に書き込む。ＰＥ−１のＲＡＭ−１の記憶素子から読み出したデータをセレクタｍｕｘ０７およびＥＭＥＭデータ転送網に提供する。
【０１８６】
セレクタｍｕｘ０７は、ＰＥ  Ｃｔｒ−１の制御に基づき、セレクタｍｕｘ１−１の選択結果、ＲＡＭ−１の読み出し結果を選択し、選択結果を汎用レジスタ群ＲｅｇＦｉｌｅｓ−１に提供する。
【０１８７】
図１４に示すように、ＰＥ演算器間接続５０を介して、ＰＥ−２はＰＥ−１から、浮動小数点乗算命令の途中結果である仮数途中結果ｔｍｐｆと指数途中結果ｔｍｐｅ１とｓｗと符号結果ｓｉｇｎとシフト途中結果の上位データｈｄａｔａを受け取り、ＰＥ−２からＰＥ−１に、シフト途中結果の下位データｌｄａｔａを提供する。図１４を参照して、ＰＥ−２について説明する。
【０１８８】
ＰＥ−２の汎用レジスタ群ＲｅｇＦｉｌｅｓ−２は、複数のレジスタＧＰＲ２０〜ＧＰＲ２ｐから構成され、形式成型器ｆｏｒｍの選択結果により更新される。また、それらの出力は、ＰＥ  Ｃｔｒ−２に制御されたセレクタｍｕｘ２−０で選択され、オペランド（ｏｐｒ０、ｏｐｒ１）として演算器群−２およびＲＡＭ−２に供給される。
【０１８９】
ＰＥ−２の演算器群−２は、加減算器Ａｄｄ／Ｓｕｂ−２、乗算器Ｍｕｌ−２、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２を備えている。
【０１９０】
加減算器Ａｄｄ／Ｓｕｂ−２は、セレクタｍｕｘ０８とセレクタｍｕｘ０９の選択結果をオペラントとして、ＰＥ  Ｃｔｒ−２の制御に基づいた演算を行う。
【０１９１】
乗算器Ｍｕｌ−２は、ｏｐｒ０とｏｐｒ１をオペラントとして、ＰＥ  Ｃｔｒ−２の制御に基づいた演算を行う。
【０１９２】
バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２は、セレクタｍｕｘ１０とセレクタｍｕｘ１１の選択結果をオペラントとして、ＰＥ  Ｃｔｒ−２の制御に基づいた演算を行う。
【０１９３】
演算結果は、ＰＥ  Ｃｔｒ−２に制御されたセレクタｍｕｘ２−１で選択され、セレクタｍｕｘ１２に提供される。
【０１９４】
セレクタｍｕｘ０８は、ＰＥ  Ｃｔｒ−２の制御に基づき、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２の演算結果と、ｏｐｒ０を選択して、加減算器Ａｄｄ／Ｓｕｂ−２に提供する。
【０１９５】
セレクタｍｕｘ０９は、ＰＥ  Ｃｔｒ−２の制御に基づき、値１と、ｏｐｒ１を選択して、加減算器Ａｄｄ／Ｓｕｂ−２に提供する。
【０１９６】
セレクタｍｕｘ１０は、ＰＥ  Ｃｔｒ−２の制御に基づき、ｔｍｐｆの下位側３２ｂｉｔ［３１：０］と、ｏｐｒ０を選択して、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２に提供する。
【０１９７】
セレクタｍｕｘ１１は、ＰＥ  Ｃｔｒ−２の制御に基づき、ＰＥ演算器間接続５０を介してＰＥ−１より提供されたシフト幅ｓｗとｏｐｒ１を選択して、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２に提供する。
【０１９８】
また、ＰＥ−２の演算器群−２は、浮動小数点加減算命令の実行のみに使用する減算器Ｓｕｂ、丸め検出器Ｒｏｕｎｄを構成要素として持つ。
【０１９９】
減算器Ｓｕｂは、ｔｍｐｅ１から１２７を減算し、減算結果を形式成型器ｆｏｒｍに提供する。
【０２００】
丸め検出器Ｒｏｕｎｄは、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２の演算結果が丸めを必要とするかを判定し、判定結果をセレクタｍｕｘ２−１に提供する。
【０２０１】
ＰＥ−２のＲＡＭ−２は記憶素子から構成され、ＰＥ  Ｃｔｒ−２の制御に基づき、汎用レジスタ群ＲｅｇＦｉｌｅｓ−２およびＥＭＥＭデータ転送網からのデータを記憶素子に書き込む、または、記憶素子から読み出したデータをセレクタｍｕｘ１２およびＥＭＥＭデータ転送網に提供する。
【０２０２】
セレクタｍｕｘ１２は、ＰＥ  Ｃｔｒ−２の制御に基づき、セレクタｍｕｘ２−１の選択結果、ＲＡＭ−２の読み出し結果を選択し、選択結果を形式成型器ｆｏｒｍに提供する。
【０２０３】
形式成型器ｆｏｒｍは、ＰＥ  Ｃｔｒ−２の制御に基づき、セレクタｍｕｘ１２の選択結果と、減算器Ｓｕｂの演算結果と、ＰＥ−１より提供された符号結果ｓｉｇｎを選択し、選択結果を汎用レジスタ群ＲｅｇＦｉｌｅｓ−２に提供する。
【０２０４】
形式成型器ｆｏｒｍは、ＰＥ  Ｃｔｒ−２の制御に基づき、セレクタｍｕｘ１２の選択結果を仮数部とし、減算器Ｓｕｂの演算結果を指数部とし、ＰＥ−１より提供された符号結果ｓｉｇｎを符号として選択し、ＩＥＥＥ７５４の単精度の形式に整え、その結果を汎用レジスタ群ＲｅｇＦｉｌｅｓ−２の任意のレジスタに提供する。
【０２０５】
図１５は、図１、図１３、図１４に示した第３の実施の形態の再構成可能なＳＩＭＤ型プロセッサにおいて、１グループが複数のＰＥで構成された際に、グループがマルチサイクル型浮動小数点乗算命令を実行する再構成可能なＳＩＭＤ型プロセッサ方法のフローチャートである。図１６は、図１５の各ステップが実行されるタイミングチャートを示す。以下では、図１５と図１６を用いて、マルチサイクル型浮動小数点乗算命令を実行する再構成可能なＳＩＭＤ型プロセッサについて、詳細に説明する。
【０２０６】
まず、ＰＥ−１では、ＧＰＲ１０を浮動小数点のオペランド０（ｆｏｐｒ０）で、ＧＰＲ１１を浮動小数点のオペランド１（ｆｏｐｒ１）で初期化する（ステップ３０００）。ステップ３０００は、図１６に示すように、最初のサイクルｔで実行される。
【０２０７】
ステップ３０００では、ＧＰＲ１０、ＧＰＲ１１を初期化対象のレジスタとするが、本発明は、かかる構成のみに限定されず、任意のレジスタを対象とする。
【０２０８】
また、浮動小数の１つのオペランドは、即値による指定、２つ以上のレジスタの組合せによって表現されてもよい。
【０２０９】
次に、ＰＥ  Ｃｔｒ−１の制御に基づき、
セレクタｍｕｘ１−０により、ＧＰＲ１０とＧＰＲ１１をｏｐｒ０とｏｐｒ１として選択し、
セレクタｍｕｘ０１とセレクタｍｕｘ０２により、ｏｐｒ０とｏｐｒ１の指数部（Ｅ０、Ｅ１）を選択し、
加減算器Ａｄｄ／Ｓｕｂ−１により、指数部を加算する（ステップ３００１）。
【０２１０】
ＰＥ  Ｃｔｒ−１の制御に基づき、セレクタｍｕｘ０３とセレクタｍｕｘ０４により、ｏｐｒ０とｏｐｒ１の仮数部（Ｆ０、Ｆ１）を選択し、乗算器Ｍｕｌ−１により、仮数部を乗算する（ステップ３００２）。
【０２１１】
図の簡略化のため、図１３に図示しない新設のＸＯＲ素子により、ｏｐｒ０とｏｐｒ１の符号部（Ｓ０、Ｓ１）の排他的論理和を計算する（ステップ３００３）。
【０２１２】
ＰＥ  Ｃｔｒ−１の制御に基づき、セレクタｍｕｘ００は、指数加算結果とその上位に排他的論理和結果を配置したビット列を選択し、その選択結果をＧＰＲ１２に保存し、セレクタｍｕｘ１−１は、乗算器Ｍｕｌ−１の演算結果を選択し、演算結果の下位半分をＧＰＲ１ｐに、上位半分をＧＰＲ１ｐ−１に保存する（ステップ３００４）。図１６に示すように、ステップ３００１〜ステップ３００４は、二番目のサイクルｔ＋１で実行される。
【０２１３】
次に、ＧＰＲ１ｐに保存されたビット列の上位に、ＧＰＲ１ｐ−１に保存されたビット列の下半分を加えたビット列ｔｍｐｆをリーディングワンＬｅａｄｉｎｇＯｎｅに入力し、ｔｍｐｆのビット列のＭＳＢ側からＬＳＢ側へビット列を走査し、ＭＳＢから最初に１であったビットまでのビット数を計算する（ステップ３００５）。
【０２１４】
ＰＥ  Ｃｔｒ−１の制御に基づき、
セレクタｍｕｘ０５はｔｍｐｆの上位１６ｂｉｔを選択し、
セレクタｍｕｘ０６はリーディングワンＬｅａｄｉｎｇＯｎｅの演算結果を選択し、
ＰＥ  Ｃｔｒ−２の制御に基づき、
セレクタｍｕｘ１０はｔｍｐｆの下位３２ｂｉｔを選択し、
セレクタｍｕｘ１１はＰＥ演算器間接続５０を介して提供されたリーディングワンＬｅａｄｉｎｇＯｎｅの演算結果ｓｗを選択する。そして、ＰＥ  Ｃｔｒ−１／２の制御に基づき、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−１／２の間で、シフトデータをＰＥ演算器間接続５０を介して交換し、ｔｍｐｆをｓｗ分だけ、ビットシフトする。（ステップ３００６）。
【０２１５】
加算器Ａｄｄにより、ＧＰＲ１２に保存された指数部の途中結果ｔｍｐｅ０とリーディングワンＬｅａｄｉｎｇＯｎｅの演算結果ｓｗを加算する（ステップ３００７）。
【０２１６】
減算器Ｓｕｂにより、ＰＥ−１よりＰＥ演算器間接続５０を介して提供された指数部の途中結果ｔｍｐｅ１から１２７を減算する（ステップ３００８）。
【０２１７】
ＰＥ  Ｃｔｒ−２の制御に基づき、
セレクタｍｕｘ０８は、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２の演算結果を選択し、
セレクタｍｕｘ０９は１を選択し、加減算器Ａｄｄ／Ｓｕｂ−２は、それらの選択結果を加算する（ステップ３００９）。
【０２１８】
丸め検出器Ｒｏｕｎｄにより、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２の演算結果を、単精度の仮数部のビット幅に収める際に、丸めが必要となるかを判断する（ステップ３０１０）。
【０２１９】
丸め判定結果に基づき、セレクタｍｕｘ２−１は、
丸めが必要であった場合には、加減算器Ａｄｄ／Ｓｕｂ−２の演算結果を選択し、
丸めが不要であった場合には、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２の演算結果を選択する（ステップ３０１１）。
【０２２０】
ＰＥ  Ｃｔｒ−２の制御に基づき、
セレクタｍｕｘ１２は、セレクタｍｕｘ２−１の選択結果を選択し、
形式成型器ｆｏｒｍは、ＰＥ演算器間接続５０を介してＰＥ−１より提供されたＳｉｇｎを演算結果の符号部として選択し、減算器Ｓｕｂの減算結果を演算結果の指数部として選択し、セレクタｍｕｘ１２の選択結果の下位２３ビットを演算結果の仮数部として選択し、ＩＥＥＥ７５４の単精度の形式に整え、その結果を汎用レジスタ群ＲｅｇＦｉｌｅｓ−２の任意のレジスタに保存する（ステップ３０１２）。
【０２２１】
図１６に示すように、ステップ３００５〜ステップ３０１２は三番目のサイクルｔ＋２で実行され、マルチサイクル型浮動小数点乗算命令の実行が終了する。
【０２２２】
ここでは、マルチサイクル型浮動小数点乗算命令をパイプライン分割し、
レイテンシが２サイクル、
スループットが１サイクルで実現する例を示したが、対象となるアプリケーションによって、レイテンシ、スループットは最適な構成を選択し、それらに合わせて、１グループを構成するＰＥ数、およびＰＥ内の構成を自由に変更するなど、本発明の技術的範囲に属する限り様々な形態を取り得る。
【０２２３】
以上のように本実施の形態によれば、複数セレクタ（ｍｕｘ００〜ｍｕｘ０６、ｍｕｘ０８〜ｍｕｘ１１）とリーディングワンＬｅａｄｉｎｇＯｎｅと加算器Ａｄｄと減算器Ｓｕｂと丸め検出器Ｒｏｕｎｄを追加し、ＰＥ  Ｃｔｒ−１、ＰＥ  Ｃｔｒ−２の制御回路を拡張することで、マルチサイクル型浮動小数点乗算命令を実現することができる。
【０２２４】
また、回路規模の大きな加減算器や乗算器やバレルシフタやレジスタを新規に追加する必要がないため、新規に浮動小数点乗算の回路を追加するのに比べ、僅かな回路増加ですむ。
【０２２５】
さらに、浮動小数点命令の後処理で用いるリーディングワンＬｅａｄｉｎｇＯｎｅや加算器Ａｄｄや丸め検出器Ｒｏｕｎｄは、浮動小数点加減算命令と共通化できるため、複数種類の浮動小数点命令を実行する場合には、回路規模の増加をさらに抑えることができる。
【０２２６】
また、１個のＰＥが既に実行可能な命令の組合せで、マルチサイクル型浮動小数点乗算命令を実現する場合には、整数形式で浮動小数点を表現するためにビット操作が多用されるため、２つの単精度オペランドを乗算するのに２００００サイクル程度を必要としていた。しかし、本実施の形態によれば、同時に実行できる浮動小数点除算命令の命令数は半分になるものの、命令を２サイクルで計算できるため、１個のＰＥで命令を実現した場合に比べ、約５０００倍の性能向上を実現することができる。
【０２２７】
＜実施の形態４＞
実施の形態４では、本発明の実施の形態の一例として、１グループが複数のＰＥで構成された際に、グループがマルチサイクル型浮動小数点除算命令を実行する再構成可能なＳＩＭＤ型プロセッサについて、詳細に説明する。なお、本発明は、下記実施の形態に限定されるものでない。本実施の形態では、前記実施の形態２、３と同様に、浮動小数点数の表現形式としてＩＥＥＥ７５４の単精度を用いるが、本発明においおいては、浮動小数点数の他の表現形式を用いたとしてもよいことは勿論である。
【０２２８】
図１は、本発明の第４の実施の形態の構成を示すブロック図である。ＳＩＭＤ型プロセッサ全体の構成は、図１に示した第１〜第３の実施の形態と同様である。以下では、図１の説明は省略する。
【０２２９】
図１７、図１８はそれぞれ、図１のＰＥ−１〜ＰＥ−２の内部の詳細な構成を示すブロック図である。
【０２３０】
本実施の形態では、１グループがマルチサイクル型浮動小数点除算命令を実行する際に、グループが２個のＰＥから構成される場合について説明する。なお、本発明はかかる構成に限定されるものでなく、１グループが２個以上のＰＥから構成されればよい。また、以下で説明されるＰＥ−１〜ＰＥ−２の役割分担は一例に過ぎず、本発明はかかる構成に限定されるものでない。
【０２３１】
図１７、図１８に示すように、ＰＥ演算器間接続５０を介して、ＰＥ−１はＰＥ−２から、マルチサイクル型浮動小数点除算命令の終了信号ＥＮＤを受け取り、ＰＥ−１からＰＥ−２に、演算結果の符号ｓｉｇｎと指数途中結果ｔｍｐｅ、除算結果一桁ＱＵＯを提供する。以下では、図１７を参照してＰＥ−１の詳細な構成について述べる。
【０２３２】
ＰＥ−１の汎用レジスタ群ＲｅｇＦｉｌｅｓ−１は、複数のレジスタＧＰＲ１０〜ＧＰＲ１ｐから構成されている。ＧＰＲ１０、ＧＰＲ１１、ＧＰＲ１２はそれぞれ、セレクタ（ｍｕｘ００、ｍｕｘ０１、ｍｕｘ０２）の選択結果により更新され、ＧＰＲ１３〜ＧＰＲ１ｐは、セレクタｍｕｘ０４の選択結果により更新される。また、それらの出力は、ＰＥ  Ｃｔｒ−１に制御されたセレクタｍｕｘ１−０で選択され、オペランド（ｏｐｒ０、ｏｐｒ１）として演算器群−１およびＲＡＭ−１に供給される。
【０２３３】
セレクタｍｕｘ００は、ＰＥ  Ｃｔｒ−１の制御に基づき、ＧＰＲ１０のうち単精度の仮数部分［２２：０］の上位ビットを１とし、さらに上位ビット側を０としたビット列と、セレクタｍｕｘ０３の選択結果と、セレクタｍｕｘ０４の選択結果を選択して、選択結果をＧＰＲ１０に提供する。
【０２３４】
セレクタｍｕｘ０１は、ＰＥ  Ｃｔｒ−１の制御に基づき、ＧＰＲ１１のうち単精度の仮数部分［２２：０］の上位ビットを１とし、さらに上位ビット側を０としたビット列と、セレクタｍｕｘ０４の選択結果を選択して、選択結果をＧＰＲ１１に提供する。
【０２３５】
セレクタｍｕｘ０２は、ＰＥ  Ｃｔｒ−１の制御に基づき、減算器Ｓｕｂの減算結果と、セレクタｍｕｘ０４の選択結果を選択して、選択結果をＧＰＲ１１に提供する。
【０２３６】
また、ＰＥ−１の汎用レジスタ群ＲｅｇＦｉｌｅｓ−１は、浮動小数点除算命令の実行のみに使用する減算器Ｓｕｂを構成要素として持つ。減算器Ｓｕｂは、ＧＰＲ１０のうち単精度の指数部［３０：２４］から、ＧＰＲ１１のうち単精度の指数部［３０：２４］を減算し、減算結果をセレクタｍｕｘ０２に提供する。
【０２３７】
簡略化のため、図１７には図示されないＸＯＲ（排他的論理和）素子により、ＧＰＲ１０のうち、単精度の符号部［３１］と、ＧＰＲ１１のうち、単精度の符号部［３１］の排他的論理和を計算し、計算結果をセレクタｍｕｘ０２に提供する。
【０２３８】
ＰＥ−１の演算器群−１は、加減算器Ａｄｄ／Ｓｕｂ−１、乗算器Ｍｕｌ−１、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−１を備えている。それぞれの演算器は、ＰＥ  Ｃｔｒ−１の制御に基づき、セレクタｍｕｘ１−０から供給されたオペランド（ｏｐｒ０とｏｐｒ１）に対する演算を行う。演算結果は、ＰＥ  Ｃｔｒ−１に制御されたセレクタｍｕｘ１−１で選択され、セレクタｍｕｘ０４に提供される。なお、ＰＥ−１の演算器群−１の構成は一例に過ぎず、本発明はかかる構成に限定されるものでないことは勿論である。
【０２３９】
ＰＥ−１のＲＡＭ−１は記憶素子から構成され、ＰＥ  Ｃｔｒ−１の制御に基づき、汎用レジスタ群ＲｅｇＦｉｌｅｓ−１およびＥＭＥＭデータ転送網からのデータを記憶素子に書き込む、または、記憶素子から読み出したデータをセレクタｍｕｘ０４およびＥＭＥＭデータ転送網に提供する。
【０２４０】
セレクタｍｕｘ０４は、ＰＥ  Ｃｔｒ−１の制御に基づき、セレクタｍｕｘ１−１の選択結果、ＲＡＭ−１の読み出し結果を選択し、選択結果を汎用レジスタ群ＲｅｇＦｉｌｅｓ−１に提供する。
【０２４１】
図１８に示すように、ＰＥ演算器間接続５０を介して、ＰＥ−２はＰＥ−１から、除算結果一桁ＱＵＯと、浮動小数点乗算命令の途中結果である指数途中結果ｔｍｐｅと符号結果ｓｉｇｎを受け取り、ＰＥ−２からＰＥ−１に、浮動小数除算の終了信号ＥＮＤを提供する。図１８を参照して、ＰＥ−２の構成について説明する。
【０２４２】
ＰＥ−２の汎用レジスタ群ＲｅｇＦｉｌｅｓ−２は、複数のレジスタＧＰＲ２０〜ＧＰＲ２ｐから構成される。
【０２４３】
ＧＰＲ２０は、セレクタｍｕｘ０５の選択結果により更新され、ＧＰＲ２１〜ＧＰＲ２ｐは形式成型器ｆｏｒｍの選択結果により更新される。また、それらの出力は、ＰＥ  Ｃｔｒ−２に制御されたセレクタｍｕｘ２−０で選択され、オペランド（ｏｐｒ０、ｏｐｒ１）として演算器群−２およびＲＡＭ−２に供給される。
【０２４４】
セレクタｍｕｘ０５は、ＰＥ  Ｃｔｒ−２の制御に基づき、ＧＰＲ２０のビット列からＭＳＢを取り除き、ＬＳＢにＰＥ演算器間接続５０を介してＰＥ−１から提供された除算結果一桁ＱＵＯを加えたビット列と、形式成型器ｆｏｒｍの選択結果を選択し、選択結果をＧＰＲ２０に提供する。
【０２４５】
ＰＥ−２の演算器群−２は、加減算器Ａｄｄ／Ｓｕｂ−２、乗算器Ｍｕｌ−２、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２を備えている。
【０２４６】
加減算器Ａｄｄ／Ｓｕｂ−２は、セレクタｍｕｘ０６の選択結果とｏｐｒ１を、
乗算器Ｍｕｌ−２はｏｐｒ０とｏｐｒ１を、
バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２は、ｏｐｒ０とセレクタｍｕｘ０７の選択結果を、
オペランドとして、ＰＥ  Ｃｔｒ−２の制御に基づいた演算を行う。
【０２４７】
演算結果は、ＰＥ  Ｃｔｒ−２に制御されたセレクタｍｕｘ２−１で選択され、セレクタｍｕｘ０８に提供される。
【０２４８】
セレクタｍｕｘ０６は、ＰＥ  Ｃｔｒ−２の制御に基づき、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２の演算結果とｏｐｒ０を選択し、選択結果を加減算器Ａｄｄ／Ｓｕｂ−２に提供する。
【０２４９】
セレクタｍｕｘ０７は、ＰＥ  Ｃｔｒ−２の制御に基づき、リーディングワンＬｅａｄｉｎｇＯｎｅの演算結果とｏｐｒ１を選択し、選択結果をバレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２に提供する。
【０２５０】
また、ＰＥ−２の演算器群−２は、浮動小数点除算命令の実行のみに使用するリーディングワンＬｅａｄｉｎｇＯｎｅ、加算器Ａｄｄ、丸め検出器Ｒｏｕｎｄを備えている。
【０２５１】
リーディングワンＬｅａｄｉｎｇＯｎｅは、ｏｐｒ０のビット列をＭＳＢ側からＬＳＢ側へ検索し、ＭＳＢから最初に現れた１までの距離を計算し、加算器Ａｄｄとセレクタｍｕｘ０７に提供する。
【０２５２】
加算器Ａｄｄは、ＰＥ演算器間接続５０を介してＰＥ−１から提供された指数途中結果ｔｍｐｅと、リーディングワンＬｅａｄｉｎｇＯｎｅの演算結果を加算し、加算結果を形式成型器ｆｏｒｍに提供する。
【０２５３】
丸め検出器Ｒｏｕｎｄは、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２の演算結果が丸めを必要とするかを判定し、判定結果をセレクタｍｕｘ２−１に提供する。
【０２５４】
ＰＥ−２のＲＡＭ−２は、記憶素子から構成され、ＰＥ  Ｃｔｒ−２の制御に基づき、汎用レジスタ群ＲｅｇＦｉｌｅｓ−２およびＥＭＥＭデータ転送網からのデータを記憶素子に書き込むか、または、記憶素子から読み出したデータをセレクタｍｕｘ０８およびＥＭＥＭデータ転送網４０に提供する。
【０２５５】
セレクタｍｕｘ０８は、ＰＥ  Ｃｔｒ−２の制御に基づき、セレクタｍｕｘ２−１の選択結果、ＲＡＭ−２の読み出し結果を選択し、選択結果を形式成型器ｆｏｒｍに提供する。
【０２５６】
形式成型器ｆｏｒｍは、ＰＥ  Ｃｔｒ−２の制御に基づき、セレクタｍｕｘ０８の選択結果と、加算器Ａｄｄの加算結果と、ＰＥ−１より提供された符号結果ｓｉｇｎを選択し、選択結果を汎用レジスタ群ＲｅｇＦｉｌｅｓ−２に提供する。
【０２５７】
形式成型器ｆｏｒｍは、ＰＥ  Ｃｔｒ−２の制御に基づき、セレクタｍｕｘ０８の選択結果を仮数部とし、加算器Ａｄｄの加算結果を指数部とし、ＰＥ−１より提供された符号結果ｓｉｇｎを符号部として選択し、ＩＥＥＥ７５４の単精度の形式に整え、その結果を汎用レジスタ群ＲｅｇＦｉｌｅｓ−２の任意のレジスタに保存する。
【０２５８】
図１９は、図１、図１７、図１８に示した本実施の形態の再構成可能なＳＩＭＤ型プロセッサにおいて、１グループが複数のＰＥで構成された際に、グループがマルチサイクル型浮動小数点除算命令を実行する再構成可能なＳＩＭＤ型プロセッサの動作を説明するためのフローチャートである。図２０は、図１９の各ステップが実行されるタイミングチャートを示す図である。図１９と図２０を参照して、マルチサイクル型浮動小数点除算命令を実行する再構成可能なＳＩＭＤ型プロセッサについて説明する。
【０２５９】
まず、ＰＥ−１では、ＧＰＲ１０を浮動小数点のオペランド０（ｆｏｐｒ０）で、ＧＰＲ１１を浮動小数点のオペランド１（ｆｏｐｒ１）で初期化し、
ＰＥ−２では、ＧＰＲ２１を除算に要するサイクル数で、ＧＰＲ２２を１で初期化する（ステップ４０００）。
【０２６０】
ここでは、ＧＰＲ１０、ＧＰＲ１１、ＧＰＲ２１、ＧＰＲ２２を初期化対象のレジスタとするが、本発明は、かかる構成に限定されるものでなく、任意のレジスタを対象としてもよい。
【０２６１】
ステップ４０００では、図２０に示すように、最初のサイクルｔで実行される。
【０２６２】
次に、減算器Ｓｕｂにより、ＧＰＲ１０の指数部（Ｅ０）から、ＧＰＲ１１の指数部（Ｅ１）を減算する（ステップ４００１）。
【０２６３】
簡略化のため、図１７には、図示されていないＸＯＲ素子により、ＧＰＲ１０の符号部（Ｓ０）とＧＰＲ１１の符号部（Ｓ１）の排他的論理和を計算する（ステップ４００２）。
【０２６４】
ＰＥ−１では、ＰＥ  Ｃｔｒ−１の制御に基づき、
セレクタｍｕｘ００は、ＧＰＲ１０の仮数部（Ｆ０）とＦ０のＭＳＢ側に１を加え、その上位側を０としたビット列を選択し、ＧＰＲ１０を更新し、
セレクタｍｕｘ０１は、ＧＰＲ１１の仮数部（Ｆ１）とＦ１のＭＳＢ側に１を加え、その上位側を０としたビット列を選択し、ＧＰＲ１１を更新し、
セレクタｍｕｘ０２は、指数部の減算結果のＭＳＢ側に、符号部の排他的論理和結果を加えたビット列を選択し、ＧＰＲ１２を更新する（ステップ４００３）。
【０２６５】
図２０に示すように、ステップ４００１〜ステップ４００３は、二番目のサイクルｔ＋１で実行される。ＰＥ−２では、ＰＥ  Ｃｔｒ−２の制御に基づき、セレクタｍｕｘ２−０により、ＧＰＲ２１とＧＰＲ２２がオペランド（ｏｐｒ０、ｏｐｒ１）として選択され、加減算器Ａｄｄ／Ｓｕｂ−２により、ｏｐｒ０からｏｐｒ１を減算する（ステップ４００４）。ここでは、ｏｐｒ１の値１をレジスタ値（ＧＰＲ２２）として提供するが、値１は必ずしもレジスタ値である必要は無く、即値などの他手段によって提供されても構わない。
【０２６６】
演算結果が正であった場合に（ステップ４００５の正分岐）、ＰＥ−１では、ＰＥ  Ｃｔｒ−２の制御に基づき、セレクタｍｕｘ１−０により、ＧＰＲ１０とＧＰＲ１１を演算のオペランド（ｏｐｒ０、ｏｐｒ１）として選択し、加減算器Ａｄｄ／Ｓｕｂ−１によって、ｏｐｒ０からｏｐｒ１を減算する（ステップ４００６）。
【０２６７】
セレクタｍｕｘ０３は、減算結果が正であった場合には、減算結果からＭＳＢの１ビットを除きＬＳＢに０を加えたビット列を選択する。減算結果が負であった場合には、ｏｐｒ０からＭＳＢの１ビットを除きＬＳＢに０を加えたビット列を選択する（ステップ４００７）。
【０２６８】
次に、ＰＥ−１では、ＰＥ  Ｃｔｒ−１の制御に基づき、
セレクタｍｕｘ００は、セレクタｍｕｘ０３の選択結果を選択しＧＰＲ１０を更新し、
セレクタｍｕｘ０１は、ＧＰＲ１１の値を選択しＧＰＲ１１を更新し、
セレクタｍｕｘ０２は、ＧＰＲ１２の値を選択しＧＰＲ１２を更新する（ステップ４００８）。
【０２６９】
また、ＰＥ−２では、ＰＥ  Ｃｔｒ−１の制御に基づき、
セレクタｍｕｘ２−１は、加減算器Ａｄｄ／Ｓｕｂ−２の演算結果を選択し、
セレクタｍｕｘ０８は、セレクタｍｕｘ２−１の選択結果を選択し、
形式成型器ｆｏｒｍは、選択結果を選択し、選択結果により、ＧＰＲ２１を更新し、
セレクタｍｕｘ０５は、ＧＰＲ２０の値からＭＳＢを取り除き、ＰＥ演算器間接続５０を介して、ＰＥ−１から提供された除算結果一桁ＱＵＯをＬＳＢに加えたビット列を選択し、当該ビット列によりＧＰＲ２０を更新する（ステップ４００８）。
【０２７０】
図２０に示すように、ステップ４００４〜ステップ４００８は、同じサイクルで実行され、加減算器Ａｄｄ／Ｓｕｂ−２の演算結果が正である場合は、複数サイクルの間、繰り返し実行される。
【０２７１】
演算結果が負であった場合に（ステップ４００５負分岐先のＣ）、次サイクルにおいて、
ＰＥ−２では、ＰＥ  Ｃｔｒ−２の制御に基づき、セレクタｍｕｘ２−０により、ＧＰＲ２０とＧＰＲ２２をオペランド（ｏｐｒ０、ｏｐｒ１）として選択し、
ｏｐｒ０をリーディングワンＬｅａｄｉｎｇＯｎｅに入力し、ｏｐｒ０のビット列のＭＳＢ側からＬＳＢ側へビット列を走査し、ＭＳＢから最初に１であったビットまでのビット数を計算する（ステップ４００９）。
【０２７２】
次に、ＰＥ  Ｃｔｒ−２の制御に基づき、
セレクタｍｕｘ０７は、リーディングワンＬｅａｄｉｎｇＯｎｅの演算結果を選択し、
バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２は、ｏｐｒ０を選択結果に基づきビットシフトする（ステップ４０１０）。
【０２７３】
加算器Ａｄｄにより、ＰＥ演算器間接続５０を介してＰＥ−１より提供された指数部途中結果ｔｍｐｅに、リーディングワンＬｅａｄｉｎｇＯｎｅの演算結果を加算する（ステップ４０１１）。
【０２７４】
ＰＥ  Ｃｔｒ−２の制御に基づき、
セレクタｍｕｘ０６は、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２の演算結果を選択し、
加減算器Ａｄｄ／Ｓｕｂ−２は、セレクタｍｕｘ０６の選択結果とｏｐｒ１を加算する（ステップ４０１２）。
【０２７５】
丸め検出器Ｒｏｕｎｄにより、バレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２の演算結果を、単精度の仮数部のビット幅に収める際に、丸めが必要となるかを判断する（ステップ４０１３）。
【０２７６】
丸め判定結果に基づき、セレクタｍｕｘ２−１は、丸めが必要であった場合には加減算器Ａｄｄ／Ｓｕｂ−２の演算結果を選択し、丸めが不要であった場合にはバレルシフタＢａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２の演算結果を選択する（ステップ４０１４）。
【０２７７】
ＰＥ  Ｃｔｒ−２の制御に基づき、
セレクタｍｕｘ０８は、セレクタｍｕｘ２−１の選択結果を選択し、
形式成型器ｆｏｒｍは、ＰＥ演算器間接続５０を介してＰＥ−１より提供された符号結果ｓｉｇｎを演算結果の符号部とし、
加算器Ａｄｄの演算結果を演算結果の指数部とし、
セレクタｍｕｘ０８の選択結果の下位２３ｂｉｔを演算結果の仮数部として選択し、
ＩＥＥＥ７５４の単精度の形式に整え、その結果を汎用レジスタ群ＲｅｇＦｉｌｅｓ−２の任意のレジスタに保存する（ステップ４０１５）。
【０２７８】
図２０に示すように、ステップ４００４、ステップ４００５と、ステップ４００９〜ステップ４０１５は、同じサイクルで実行され、
加減算器Ａｄｄ／Ｓｕｂ−１の演算結果が負である場合に、実行され、マルチサイクル型浮動小数点除算命令の実行が終了する。
【０２７９】
ここでは、マルチサイクル型浮動小数点除算命令をパイプライン分割し、サイクル毎に除算結果一桁を算出しているためレイテンシは除算する桁数分かかるが、対象となるアプリによって、
サイクル後に算出する除算結果の桁数、
レイテンシは最適な構成を選択し、それらに合わせて、１グループを構成するＰＥ数、およびＰＥ内の構成を自由に変更するようにしてもよい。
【０２８０】
以上のように本実施の形態によれば、
複数セレクタ（ｍｕｘ００〜ｍｕｘ０３、ｍｕｘ０５〜ｍｕｘ０７）と、リーディングワンＬｅａｄｉｎｇＯｎｅと、加算器Ａｄｄと、減算器Ｓｕｂと、丸め検出器Ｒｏｕｎｄを追加し、
ＰＥ  Ｃｔｒ−１、ＰＥ  Ｃｔｒ−２の制御回路を拡張することで、マルチサイクル型浮動小数点除算命令を実現することができる。
【０２８１】
回路規模の大きな加減算器やバレルシフタやレジスタを追加する必要がないため、新規に浮動小数点除算の回路を追加するのに比べ、僅かな回路増加ですむ。
【０２８２】
さらに、浮動小数点命令の後処理で用いるリーディングワンＬｅａｄｉｎｇＯｎｅや加算器Ａｄｄや丸め検出器Ｒｏｕｎｄは、浮動小数点加減算命令や浮動小数点乗算命令と共通化できるため、複数種類の浮動小数点命令を実行する場合には、回路規模の増加をさらに抑えることができる。
【０２８３】
また、１個のＰＥが既に実行可能な命令の組合せで、マルチサイクル型浮動小数点除算命令を実現する場合には、整数形式で浮動小数点を表現するためにビット操作が多用されるため、２つの単精度オペランドを除算するのに、例えば３００００サイクル程度を必要としていた。
【０２８４】
しかし、本実施の形態によれば、同時に実行できる浮動小数点除算命令の命令数は半分になるものの、命令を３０サイクル程度で計算できるため、１個のＰＥで命令を実現した場合に比べ、約５００倍の性能向上を実現できる。
【０２８５】
本発明の実施の形態によれば、複数ＰＥの演算器と汎用レジスタの組合せを再構成し、それぞれのＰＥに異なる役割を与えることにより、特性の異なる処理対象に柔軟に対応し、かつＳＩＭＤ型プロセッサ全体の性能を向上することができる。また、個々のＰＥの持つ演算器と汎用レジスタを利用するため、必要となる追加資源を少なくできる。
【産業上の利用可能性】
【０２８６】
本発明は、並列度や処理に最適な命令の異なる処理対象に、大幅な回路増加なく、柔軟に対応可能な動的再構成可能なＳＩＭＤ型プロセッサに適用できる。
【図面の簡単な説明】
【０２８７】
【図１】本発明の実施の形態の全体構成を示す図である。
【図２】本発明の第一の実施の形態におけるＰＥの詳細な構成を示す図である。
【図３】本発明の第一の実施の形態の動作を説明するためのフローチャートである。
【図４】本発明の第一の実施の形態の動作を示すタイミングチャートである。
【図５】ＩＥＥＥ７５４の単精度のビット配列を示す図である。
【図６】ＩＥＥＥ７５４の単精度による浮動小数点数の計算式を示す図である。
【図７】本発明の第二の実施の形態における第一のＰＥの詳細な構成を示す図である。
【図８】本発明の第二の実施の形態における第二のＰＥの詳細な構成を示す図である。
【図９】本発明の第二の実施の形態の動作を説明するためのフローチャートである。
【図１０】本発明の第二の実施の形態の動作を示すタイミングチャートである。
【図１１】本発明の第二の実施の形態における加減算器の制御情報生成ルール。
【図１２】本発明の第二の実施の形態における演算結果の正負生成ルール。
【図１３】本発明の第三の実施の形態における第一のＰＥの詳細な構成を示す図である。
【図１４】本発明の第三の実施の形態における第二のＰＥの詳細な構成を示す図である。
【図１５】本発明の第三の実施の形態の動作を説明するためのフローチャートである。
【図１６】本発明の第三の実施の形態の動作を示すタイミングチャートである。
【図１７】本発明の第四の実施の形態における第一のＰＥの詳細な構成を示す図である。
【図１８】本発明の第四の実施の形態における第二のＰＥの詳細な構成を示す図である。
【図１９】本発明の第四の実施の形態の動作を説明するためのフローチャートである。
【図２０】本発明の第四の実施の形態の動作を示すタイミングチャートである。
【符号の説明】
【０２８８】
１０−１〜１０−ｍ  ＰＥ−１〜ＰＥ−ｍ（プロセッシングエレメント）
１１−１〜１１−ｍ  ＰＥ  Ｃｔｒ−１〜ＰＥ  Ｃｔｒ−ｍ（プロセッシングエレメント制御回路）
１２−１〜１２−ｍ  ＲｅｇＦｉｌｅｓ−１〜ＲｅｇＦｉｌｅｓ−ｍ（汎用レジスタファイル群）
１３−１〜１３−ｍ  演算器群−１〜演算器群−ｍ
１４−１〜１４−ｍ  ＲＡＭ−１〜ＲＡＭ−ｍ（データメモリ）
２０  ＣＰ（コントロールプロセッサ）
２１  ＰＣ  Ｃｔｒ（制御情報生成回路）
２２  ＲＥｇＦｉｌｅｓ−０
２３  演算器群−０
２４  ＰＲＡＭ（プログラムメモリ）
２５  ＤＲＡＭ（データメモリ）
３０  ＥＭＥＭ（外部メモリ）
４０  ＥＭＥＭデータ転送網
５０  ＰＥ演算器間接続
６０  ＰＥ制御情報パス
ＧＰＲ１０〜ＧＰＲ１ｐ  ＰＥ−１の各汎用レジスタ
ｍｕｘ１−０  ＰＥ−１の汎用レジスタファイル選択回路
ｍｕｘ１−１  ＰＥ−１の演算結果選択回路
Ａｄｄ／Ｓｕｂ−１  ＰＥ−１の加減算器
Ｍｕｌ−１  ＰＥ−１の乗算器
Ｂａｒｒｅｌ  Ｓｈｉｆｔｅｒ−１  ＰＥ−１のバレルシフタ
Ａｂｓ−１  ＰＥ−１の差分器
ＧＰＲ２０〜ＧＰＲ２ｐ  ＰＥ−２の各汎用レジスタ
ｍｕｘ２−０  ＰＥ−２の汎用レジスタファイル選択回路
ｍｕｘ２−１  ＰＥ−２の演算結果選択回路
Ａｄｄ／Ｓｕｂ−２  ＰＥ−２の加減算器
Ｍｕｌ−２  ＰＥ−２の乗算器
Ｂａｒｒｅｌ  Ｓｈｉｆｔｅｒ−２ＰＥ−２のバレルシフタ
Ａｂｓ−２  ＰＥ−２の差分器
ｍｕｘ０〜ｍｕｘ１５  セレクタ
ＬｅａｄｉｎｇＯｎｅ  リーディングワン回路
Ａｄｄ  加算器
Ｓｕｂ  減算器
Ｒｏｕｎｄ  丸め検出器
ｆｏｒｍ  形式成型器
【図１】
2008250471.tif 000003
【図２】
2008250471.tif 000004
【図３】
2008250471.tif 000005
【図４】
2008250471.tif 000006
【図５】
2008250471.tif 000007
【図６】
2008250471.tif 000008
【図７】
2008250471.tif 000009
【図８】
2008250471.tif 000010
【図９】
2008250471.tif 000011
【図１０】
2008250471.tif 000012
【図１１】
2008250471.tif 000013
【図１２】
2008250471.tif 000014
【図１３】
2008250471.tif 000015
【図１４】
2008250471.tif 000016
【図１５】
2008250471.tif 000017
【図１６】
2008250471.tif 000018
【図１７】
2008250471.tif 000019
【図１８】
2008250471.tif 000020
【図１９】
2008250471.tif 000021
【図２０】
2008250471.tif 000022
【手続補正書】
【提出日】平成20年7月28日(2008.7.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
１命令を実行する演算単位を１グループとし、
１グループが複数のプロセッシングエレメント（ＰＥ）から構成される場合、該１グループは、前記複数のＰＥが備える演算器、及び汎用レジスタを用いて、整数除算命令、浮動小数点加減算命令、浮動小数点乗算命令、浮動小数点除算命令のうち少なくとも１つを実行する演算器の少なくとも一部を実現し、
命令に応じて、前記グループを構成するＰＥの数を変える、
並列演算プロセッサ。
【請求項２】
前記１グループが実行する命令がマルチサイクル整数除算命令である場合、
前記１グループは複数のＰＥで構成され、
前記１グループ内の第１のＰＥは、前記マルチサイクル整数除算命令のサイクルをカウントするカウンタとして動作し、
前記１グループ内の第１とは異なる第２のＰＥは、前記カウンタに応じて、前記サイクルの回数、前記マルチサイクル整数除算命令の被除数から除数を減算する、
請求項１の並列演算プロセッサ。
【請求項３】
前記第１のＰＥは、
加減算器と、
汎用レジスタと、
を備え、
前記マルチサイクル整数除算命令を実行する場合に、
前記第１のＰＥにおいて、サイクルのカウンタ値を前記第１のＰＥの前記汎用レジスタに保存し、前記カウンタ値を、前記加減算器により更新する、
請求項２の並列演算プロセッサ。
【請求項４】
前記第２のＰＥは、
加減算器と、
汎用レジスタと、
を備え、
前記マルチサイクル整数除算命令を実行する場合に、
前記第２のＰＥにおいて、前記汎用レジスタに、除数、被除数、除算途中結果を保存し、
前記加減算器により前記除数から前記被除数を減算し、減算結果を前記汎用レジスタに前記除算途中結果として保存する、
請求項２の並列演算プロセッサ。
【請求項５】
前記１グループが実行する命令がマルチサイクル浮動小数点加減算命令である場合に、
前記１グループは複数のＰＥで構成され、
前記１グループ内の第１のＰＥは、
浮動小数点オペランドの加減算を行い、
前記１グループ内の第１とは異なる第２のＰＥは、
前記加減算結果の正規化処理を行う、
請求項１の並列演算プロセッサ。
【請求項６】
前記第１のＰＥは、
加減算器と、
差分器と、
バレルシフタと、
汎用レジスタと、
を備え、
前記マルチサイクル浮動小数点加減算命令を実行する場合に、
前記第１のＰＥにおいて、
前記差分器と前記バレルシフタにより、オペランドの小数点位置合わせを行い、
前記加減算器により、前記位置合わせ結果を加減算し、
前記汎用レジスタを、前記小数点位置合わせ結果と前記加減算結果の一次保存場所とする、
請求項５の並列演算プロセッサ。
【請求項７】
前記第２のＰＥは、
加減算器と、
差分器と、
バレルシフタと、
汎用レジスタと、
正規化制御器と、
を備え、
前記マルチサイクル浮動小数点加減算命令を実行する場合に、
前記第２のＰＥにおいて、
前記正規化制御器の制御に基づき、前記加減算器と前記差分器と前記バレルシフタにより、前記第１のＰＥの加減算結果を正規化し、
前記汎用レジスタを、正規化の途中結果の一次保存場所とする、
請求項５の並列演算プロセッサ。
【請求項８】
前記１グループが実行する命令がマルチサイクル浮動小数点乗算命令である場合に、
前記１グループは複数のＰＥで構成され、
前記１グループ内の第１のＰＥは、
２つの浮動小数点オペランドの乗算と、前記乗算結果の正規化処理の一部を行い、
前記グループ内の第１とは異なる第２のＰＥは、
前記第１のＰＥと協調して、前記乗算結果の正規化を行う、
請求項１の並列演算プロセッサ。
【請求項９】
前記第１のＰＥは、
乗算器と、
バレルシフタと、
リーディングワン回路と、
汎用レジスタと、
を備え、
前記マルチサイクル浮動小数点乗算命令を実行する場合には、
前記第１のＰＥにおいて、
前記乗算器は、オペランドの仮数部の乗算を行い、
前記バレルシフタは、前記乗算結果の正規化の一部を行い、
前記汎用レジスタを、乗算結果と正規化の途中結果の一次保存場所とする、
請求項８の並列演算プロセッサ。
【請求項１０】
前記第１のＰＥは、
加算器と、
バレルシフタと、
汎用レジスタと、
正規化制御器と、
を備え、
前記マルチサイクル浮動小数点乗算命令を実行する場合には、
前記第１のＰＥにおいて、
前記正規化制御器の制御に基づき、前記加減算器と、前記バレルシフタと、前記第１のＰＥのバレルシフタにより、前記乗算結果の正規化を行い、
前記汎用レジスタを、正規化の途中結果の一次保存場所とする、
請求項８の並列演算プロセッサ。
【請求項１１】
前記１グループが実行する命令がマルチサイクル浮動小数点除算命令である場合に、
前記１グループは複数のＰＥで構成され、
前記１グループ内の第１のＰＥは、
２つの浮動小数点オペランドの除算を行い、
前記１グループ内の第１とは異なる第２のＰＥは、
前記除算を実行するサイクルのカウントと、前記除算結果の正規化を行う、
請求項１の並列演算プロセッサ。
【請求項１２】
前記第１のＰＥは、
加算器と、
汎用レジスタと、
を備え、
前記マルチサイクル浮動小数点除算命令を実行する場合には、
前記第１のＰＥにおいて、
前記汎用レジスタに、除数、非除数、除算途中結果を保存し、
前記加減算器により、前記除数から前記被除数を減算し、減算結果を、前記除算途中結果に保存する、
請求項１１の並列演算プロセッサ。
【請求項１３】
前記第２のＰＥは、
加算器と、
バレルシフタと、
汎用レジスタと、
正規化制御器と、
を備え、
前記マルチサイクル浮動小数点除算命令を実行する場合には、
前記第２のＰＥにおいて、
サイクルのカウンタ値を、前記汎用レジスタに保存し、
前記カウンタ値を前記加減算器により更新し、
前記正規化制御器の制御に基づき、前記加算器と前記バレルシフタにより、前記第１のＰＥの除算結果を正規化し、
前記汎用レジスタを、正規化の途中結果の一次保存場所とする、
請求項１１の並列演算プロセッサ。
【請求項１４】
前記１グループ内の第１のＰＥと第２のＰＥの演算器はＰＥ演算器間接続を介して接続されている、請求項１の並列演算プロセッサ。
【請求項１５】
前記第１のＰＥは、
制御回路と、
汎用レジスタ群と、
演算器群と、
データメモリと、
を備え、
前記汎用レジスタ群の出力は、前記制御回路によって制御されたセレクタ（ｍｕｘ１−０）で選択され、演算命令のオペランド（ｏｐｒ０、ｏｐｒ１）として、前記演算器群と前記データメモリに供給され、
前記演算器群は、加減算器と、乗算器と、バレルシフタと、を備え、それぞれの演算器は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ１−０）から供給されたオペランド（ｏｐｒ０、ｏｐｒ１）に対する演算を行い、
前記演算器群の演算結果は、前記制御回路によって制御されたセレクタ（ｍｕｘ１−１）で選択されてセレクタ（ｍｕｘ５）に供給され、
前記データメモリは、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ１−０）の出力、及び、外部メモリデータ転送網からのデータを記憶素子に書き込み、前記記憶素子から読み出したデータを、前記セレクタ（ｍｕｘ５）及び前記外部メモリデータ転送網に提供し、
前記セレクタ（ｍｕｘ５）は、前記制御回路の制御に基づき、
前記セレクタ（ｍｕｘ１−１）の選択結果、
前記データメモリの読み出し結果、
前記ＰＥ演算器間接続を介して提供される前記第２のＰＥのレジスタの内容の
うちのいずれか１つを選択し、選択結果を、前記汎用レジスタ群に供給する、
請求項１４の並列演算プロセッサ。
【請求項１６】
前記第２のＰＥは、
制御回路と、
汎用レジスタ群と、
演算器群と、
データメモリと、
を備え、
前記演算器群は、加減算器と、乗算器と、バレルシフタと、を備え、
前記汎用レジスタ群の出力は、前記制御回路によって制御されたセレクタ（ｍｕｘ２−０）で選択され、演算命令のオペランド（ｏｐｒ０、ｏｐｒ１）として、前記演算器群と前記データメモリに供給され、
前記制御回路の制御に基づき、セレクタ（ｍｕｘ４）の選択結果と、セレクタ（ｍｕｘ３）の選択結果を選択して、前記レジスタ群の第１のレジスタ（ＧＰＲ２０）に供給するセレクタ（ｍｕｘ０）と、
前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ４）の選択結果と、前記レジスタ群の第２のレジスタ（ＧＰＲ２１）から読み出したビット列からＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）を取り除き、ＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）に０を加えた値を選択して前記第２のレジスタ（ＧＰＲ２１）に供給するセレクタ（ｍｕｘ１）と、
前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ４）の選択結果と、前記レジスタ群の第３のレジスタ（ＧＰＲ２２）から読み出したビット列からＭＳＢを取り除き、ＬＳＢに前記加減算器の減算結果のＭＳＢを加えた値を選択して、前記第３のレジスタ（ＧＰＲ２２）に供給するセレクタ（ｍｕｘ２）と、
を備え、
前記演算器群の演算器は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ２−０）から供給されたオペランド（ｏｐｒ０、ｏｐｒ１）に対する演算を行い、演算結果は、前記制御回路によって制御されたセレクタ（ｍｕｘ２−１）で選択されてセレクタ（ｍｕｘ４）に供給され、
前記データメモリは、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ２−０）の出力、及び、外部メモリデータ転送網からのデータを記憶素子に書き込み、前記記憶素子から読み出したデータを、前記セレクタ（ｍｕｘ４）及び前記外部メモリデータ転送網に提供し、
前記セレクタ（ｍｕｘ３）は、前記制御回路の制御に基づき、前記加減算器の演算結果と、前記セレクタ（ｍｕｘ２−０）で選択された一方のオペランドを選択してセレクタ（ｍｕｘ０）に供給し、
前記セレクタ（ｍｕｘ４）は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ２−１）の選択結果と、前記データメモリの読み出し結果の一方を選択し、選択結果を前記汎用レジスタ群に供給する、
請求項１５の並列演算プロセッサ。
【請求項１７】
前記第１のＰＥは、
制御回路と、
汎用レジスタ群と、
演算器群と、
データメモリと、
を備え、
前記汎用レジスタ群の第１、第２、第３のレジスタ（ＧＰＲ１０、ＧＰＲ１１、ＧＰＲ１２）は、それぞれ対応するセレクタ（ｍｕｘ００、ｍｕｘ０１、ｍｕｘ０２）の選択結果により更新され、前記汎用レジスタ群の残りのレジスタは、セレクタ（ｍｕｘ０７）の選択結果により更新され、
前記汎用レジスタ群の出力は、前記制御回路に制御されたセレクタ（ｍｕｘ１−０）で選択され、オペランド（ｏｐｒ０、ｏｐｒ１）として、前記演算器群及び前記データメモリに供給され、
前記セレクタ（ｍｕｘ００）は、前記制御回路の制御に基づき、前記ＰＥ演算器間接続を介して、前記第２のＰＥより提供された、浮動小数点加減算命令の第１のオペランド（ｆｏｐｒ１）と、前記セレクタ（ｍｕｘ０７）の選択結果を選択して、前記第１のレジスタ（ＧＰＲ１０）に提供し、
前記セレクタ（ｍｕｘ０１）は、前記制御回路の制御に基づき、前記ＰＥ演算器間接続を介して、前記第２のＰＥより提供された浮動小数点加減算命令の第２のオペランド（ｆｏｐｒ１）と、前記セレクタ（ｍｕｘ０７）の選択結果の一方を選択して、前記第２のレジスタ（ＧＰＲ１１）に提供し、
前記セレクタ（ｍｕｘ０２）は、前記制御回路の制御に基づき、前記演算器群の前記差分器の演算結果の下位半分を下位、レジスタ（ＧＰＲ１２）の下位半分を上位とするビット列と、前記セレクタ（ｍｕｘ０７）の選択結果の一方を選択して、前記レジスタ（ＧＰＲ１２）に提供し、
前記演算器群は、加減算器と、乗算器と、差分器と、バレルシフタと、を備え、
前記加減算器は、セレクタ（ｍｕｘ０３）の選択結果と前記ｏｐｒ１をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記乗算器は、前記オペランド（ｏｐｒ０、ｏｐｒ１）に関して、前記制御回路の制御に基づいた演算を行い、
前記差分器は、セレクタ（ｍｕｘ０４）及びセレクタ（ｍｕｘ０５）の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記バレルシフタは、前記オペランド（ｏｐｒ０）と、セレクタ（ｍｕｘ０６）の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記演算器群の演算結果は、前記制御回路に制御されたセレクタ（ｍｕｘ１−１）で選択されて、前記セレクタ（ｍｕｘ０７）に提供され、
前記セレクタ（ｍｕｘ０３）は、前記制御回路の制御に基づき、前記バレルシフタの演算結果と、オペランド（ｏｐｒ０）を選択して、前記加減算器に提供し、
前記セレクタ（ｍｕｘ０４）は、前記制御回路の制御に基づき、前記ＰＥ演算器間接続を介して、前記第２のＰＥより提供された、浮動小数点加減算命令のオペランド（ｆｏｐｒ０）の指数部（Ｅ０）と、オペランド（ｏｐｒ０）を選択して、前記差分器に提供し、
前記セレクタ（ｍｕｘ０５）は、前記制御回路の制御に基づき、前記ＰＥ演算器間接続を介して、前記第２のＰＥより提供された浮動小数点加減算命令のオペランド（ｆｏｐｒ１）の指数部と、オペランド（ｏｐｒ１）を選択して、前記差分器に提供し、
前記セレクタ（ｍｕｘ０６）は、前記制御回路の制御に基づき、前記レジスタ（ＧＰＲ１２）の下位半分とその上位半分に０を埋めたビット列と、オペランド（ｏｐｒ１）を選択して、前記バレルシフタに提供し、
前記データメモリは、前記制御回路の制御に基づき、前記汎用レジスタ群及び前記外部メモリデータ転送網からのデータを記憶素子に書き込み、前記記憶素子から読み出したデータを前記セレクタ（ｍｕｘ０７）及び前記外部メモリデータ転送網に提供し、
前記セレクタ（ｍｕｘ０７）は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ１−１）の選択結果、前記データメモリの読み出し結果を選択し、選択結果を前記汎用レジスタ群に提供する、
請求項１４の並列演算プロセッサ。
【請求項１８】
前記第２のＰＥは、
制御回路と、
汎用レジスタ群と、
演算器群と、
データメモリと、
を備え、
前記汎用レジスタ群の第１、第２のレジスタ（ＧＰＲ２０、ＧＰＲ２１）はそれぞれ、セレクタ（ｍｕｘ０８、ｍｕｘ０９）の選択結果により更新され、第３のレジスタ（ＧＰＲ２２）と残りのレジスタは、形式成型器の選択結果により更新され、
前記汎用レジスタ群の出力は、前記制御回路に制御されたセレクタ（ｍｕｘ２−０）で選択され、オペランド（ｏｐｒ０、ｏｐｒ１）として演算器群及び前記データメモリに供給され、
前記セレクタ（ｍｕｘ０８）は、前記制御回路の制御に基づき、前記ＰＥ演算器間接続を介して、前記第１のＰＥより提供された指数途中結果（ｔｍｐｅ）を下位に、符号結果（ｓｉｇｎ）を上位としたビット列と、セレクタ（ｍｕｘ１５）の選択結果の一方を選択して、前記汎用レジスタ群の第１のレジスタ（ＧＰＲ２０）に提供し、
前記セレクタ（ｍｕｘ０９）は、前記制御回路の制御に基づき、演算器群の差分器の演算結果と、前記セレクタ（ｍｕｘ１５）の選択結果を選択して、前記汎用レジスタ群のレジスタ（ＧＰＲ２１）に提供し、
前記演算器群は、加減算器と、乗算器と、差分器と、バレルシフタと、を備え、
前記加減算器は、セレクタ（ｍｕｘ１０）とセレクタ（ｍｕｘ１１）の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
乗算器は、前記ｏｐｒ０とｏｐｒ１をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記差分器は、セレクタ（ｍｕｘ１２）とセレクタ（ｍｕｘ１３）の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
バレルシフタは、オペランド（ｏｐｒ０）とセレクタ（ｍｕｘ１４）の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記演算器群の演算結果は、前記制御回路に制御されたセレクタ（ｍｕｘ２−１）で選択され、セレクタ（ｍｕｘ１５）に提供され、
前記セレクタ（ｍｕｘ１０）は、前記制御回路の制御に基づき、前記バレルシフタの演算結果と、オペランド（ｏｐｒ０）を選択して、前記加減算器に提供し、
前記セレクタ（ｍｕｘ１１）は、前記制御回路の制御に基づき、値１と、オペランド（ｏｐｒ１）を選択して、前記加減算器に提供し、
前記セレクタ（ｍｕｘ１２）は、前記制御回路の制御に基づき、前記ＰＥ演算器間接続を介して、前記第１のＰＥより提供された仮数途中結果（ｔｍｐｆ）と、オペランド（ｏｐｒ０）を選択して、前記差分器に提供し、
前記セレクタ（ｍｕｘ１３）は、前記制御回路の制御に基づき、値０と、オペランド（ｏｐｒ１）を選択して、前記差分器に提供し、
前記セレクタ（ｍｕｘ１４）は、前記制御回路の制御に基づき、リーディングワンの演算結果と、オペランド（ｏｐｒ１）を選択して、前記バレルシフタに提供し、
前記演算器群は、浮動小数点加減算命令の実行のみに使用する前記リーディングワンと、加算器と、丸め検出器と、を備え、
前記リーディングワンは、オペランド（ｏｐｒ０）のビット列をＭＳＢ側から検索し、ＭＳＢから最初に現れた１までの距離を計算し、前記加算器と前記セレクタ（ｍｕｘ１４）に提供し、
前記加算器は、オペランド（ｏｐｒ１）の部分ビット列と、前記リーディングワンの検索結果を加算して前記形式成型器に提供し、
前記丸め検出器は、前記バレルシフタの演算結果が丸めを必要とするかを判定し、判定結果を、前記セレクタ（ｍｕｘ２−１）に提供し、
前記データメモリは、前記制御回路の制御に基づき、前記汎用レジスタ群及び外部メモリデータ転送網からのデータを記憶素子に書き込み、前記記憶素子から読み出したデータを前記セレクタ（ｍｕｘ１５）及び前記外部メモリデータ転送網に提供し、
前記セレクタ（ｍｕｘ１５）は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ２−１）の選択結果、データメモリの読み出し結果を選択し、選択結果を前記形式成型器に提供し、
前記形式成型器は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ１５）の選択結果を仮数部、前記加算器の演算結果を指数部、符号結果（ｓｉｇｎ）を符号部として選択して形式に整え、汎用レジスタ群に提供する、
請求項１７の並列演算プロセッサ。
【請求項１９】
前記第１のＰＥは、
制御回路と、
汎用レジスタ群と、
演算器群と、
データメモリと、
を備え、
前記汎用レジスタ群は、複数のレジスタ（ＧＰＲ１０〜ＧＰＲ１ｐ）を備え、レジスタ（ＧＰＲ１２）はセレクタ（ｍｕｘ００）の選択結果により更新され、残りのレジスタ（ＧＰＲ１０〜ＧＰＲ１１）及びレジスタ（ＧＰＲ１３〜ＧＰＲ１ｐ）は、セレクタ（ｍｕｘ０７）の選択結果により更新され、
前記汎用レジスタ群の出力は、前記制御回路に制御されたセレクタ（ｍｕｘ１−０）で選択され、オペランド（ｏｐｒ０、ｏｐｒ１）として前記演算器群及び前記データメモリに供給され、
セレクタ（ｍｕｘ００）は、前記制御回路の制御に基づき、加減算器の演算結果と、セレクタ（ｍｕｘ０７）の選択結果を選択して、選択結果を、前記レジスタ（ＧＰＲ１２）に提供し、
前記演算器群は、加減算器と、乗算器と、バレルシフタと、を備え、
前記加減算器は、セレクタ（ｍｕｘ０１）の選択結果とセレクタ（ｍｕｘ０２）の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記乗算器は、セレクタ（ｍｕｘ０３）の選択結果とセレクタ（ｍｕｘ０４）の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記バレルシフタは、セレクタ（ｍｕｘ０５）の選択結果とセレクタ（ｍｕｘ０６）の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記演算結果は、前記制御回路に制御されたセレクタ（ｍｕｘ１−１）で選択されセ前記レクタ（ｍｕｘ０７）に提供され、
前記セレクタ（ｍｕｘ０１）は、前記制御回路の制御に基づき、オペランド（ｏｐｒ０）の指数部分を下位ビットとし、上位側に０を組み合わせたビット列と、オペランド（ｏｐｒ０）を選択して、選択結果を、前記加減算器に提供し、
前記セレクタ（ｍｕｘ０２）は、前記制御回路の制御に基づき、オペランド（ｏｐｒ１）のうちの指数部分を下位ビットとし、上位側に０を組み合わせたビット列と、オペランド（ｏｐｒ１）を選択して、選択結果を、前記加減算器に提供し、
前記セレクタ（ｍｕｘ０３）は、前記制御回路の制御に基づき、オペランド（ｏｐｒ０）のうち単精度の仮数部分を下位ビットとし、上位ビットに１、その上位側に０を組み合わせたビット列と、オペランド（ｏｐｒ０）を選択して、選択結果を、前記乗算器に提供し、
前記セレクタ（ｍｕｘ０４）は、前記制御回路の制御に基づき、オペランド（ｏｐｒ１）のうち単精度の仮数部分を下位ビットとし、上位ビットに１、その上位側に０を組み合わせたビット列と、ｏｐｒ１を選択して、選択結果を、前記乗算器に提供し、
前記セレクタ（ｍｕｘ０５）は、前記制御回路の制御に基づき、前記レジスタ（ＧＰＲ１ｐ−１）の下位ビットを上位、前記レジスタ（ＧＰＲ１ｐ）の所定ビットを下位としたビット列（ｔｍｐｆ）の上位ビットと、その上位側に０を組み合わせたビット列と、オペランド（ｏｐｒ０）を選択して、選択結果を前記バレルシフタに提供し、
前記セレクタ（ｍｕｘ０６）は、前記リーディングワンの演算結果と、オペランド（ｏｐｒ１）を選択して、前記バレルシフタに提供し、
前記演算器群は、浮動小数点加減算命令の実行のみに使用するリーディングワンと、加算器を備え、
前記リーディングワンは仮数途中結果（ｔｍｐｆ）のビット列をＭＳＢ側から検索し、ＭＳＢから最初に現れた１までの距離（ｓｗ）を計算し、前記加算器と前記セレクタ（ｍｕｘ０６）と前記第２のＰＥに提供し、
前記加算器は、前記レジスタ（ＧＰＲ１２）に格納された仮数部の途中結果（ｔｍｐｅ０）と、前記リーディングワンの検索結果を加算し、前記第２のＰＥに提供し、
前記データメモリは、前記制御回路の制御に基づき、前記汎用レジスタ群及び外部メモリデータ転送網からのデータを記憶素子に書き込み、前記データから読み出したデータを前記セレクタ（ｍｕｘ０７）及び前記外部メモリデータ転送網に提供し、
前記セレクタ（ｍｕｘ０７）は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ１−１）の選択結果、前記データメモリの読み出し結果を選択し、選択結果を、前記汎用レジスタ群に提供する、
請求項１４の並列演算プロセッサ。
【請求項２０】
前記第２のＰＥは、前記ＰＥ演算器間接続を介して、前記第１のＰＥから、浮動小数点乗算命令の途中結果である仮数途中結果（ｔｍｐｆ）と指数途中結果（ｔｍｐｅ１）と符号結果（ｓｉｇｎ）とシフト途中結果の上位データ（ｈｄａｔａ）を受け取り、前記第２のＰＥから前記第１のＰＥに、シフト途中結果の下位データ（ｌｄａｔａ）を提供する。請求項１４の並列演算プロセッサ。
【請求項２１】
前記第２のＰＥは、
制御回路と、
汎用レジスタ群と、
演算器群と、
データメモリと、
を備え、
前記汎用レジスタ群は、複数のレジスタ（ＧＰＲ２０〜ＧＰＲ２ｐ）を備え、形式成型器の選択結果により更新され、
前記汎用レジスタ群の出力は、前記制御回路に制御されたセレクタ（ｍｕｘ２−０）で選択され、オペランド（ｏｐｒ０、ｏｐｒ１）として演算器群及びデータメモリに供給され、
前記演算器群は、加減算器と、乗算器と、バレルシフタと、を備え、
前記加減算器は、セレクタ（ｍｕｘ０８）とセレクタ（ｍｕｘ０９）の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記乗算器は、それぞれ前記ｏｐｒ０とｏｐｒ１をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記バレルシフタは、セレクタ（ｍｕｘ１０）とセレクタ（ｍｕｘ１１）の選択結果をオペランドとして、前記制御回路の制御に基づいた演算を行い、
前記演算器群の演算結果は、前記制御回路に制御されたセレクタ（ｍｕｘ２−１）で選択され、セレクタ（ｍｕｘ１２）に提供され、
前記セレクタ（ｍｕｘ０８）は、前記制御回路の制御に基づき、前記バレルシフタの演算結果と、オペランド（ｏｐｒ０）を選択して、前記加減算器に提供し、
前記セレクタ（ｍｕｘ０９）は、前記制御回路の制御に基づき、値１と、オペランド（ｏｐｒ１）を選択して、前記加減算器に提供し、
前記セレクタ（ｍｕｘ１０）は、前記制御回路の制御に基づき、浮動小数点乗算命令の途中結果である仮数途中結果（ｔｍｐｆ）の下位側所定ビットと、オペランド（ｏｐｒ０）を選択して、前記バレルシフタに提供し、
前記セレクタ（ｍｕｘ１１）は、前記制御回路の制御に基づき、前記ＰＥ演算器間接続を介して、前記第１のＰＥより提供されたシフト幅と前記オペランド（ｏｐｒ１）を選択して、前記バレルシフタに提供し、
前記演算器群は、浮動小数点加減算命令の実行のみに使用する減算器と、丸め検出器と、をさらに備え
前記減算器は、指数途中結果（ｔｍｐｅ１）から所定値を減算し、減算結果を前記形式成型器に提供し、
前記丸め検出器は、前記バレルシフタの演算結果が丸めを必要とするかを判定し、判定結果をセレクタ（ｍｕｘ２−１）に提供し、
前記データメモリは、前記制御回路の制御に基づき、前記汎用レジスタ群及び外部メモリデータ転送網からのデータを記憶素子に書き込み、前記記憶素子から読み出したデータをセレクタ（ｍｕｘ１２）及び外部メモリデータ転送網に提供し、
前記セレクタ（ｍｕｘ１２）は、前記制御回路の制御に基づき、セレクタ（ｍｕｘ２−１）の選択結果、前記データメモリの読み出し結果を選択し、選択結果を形式成型器に提供し、
前記形式成型器は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ１２）の選択結果と、前記減算器の演算結果と、前記第１のＰＥより提供された符号結果（ｓｉｇｎ）を選択し、選択結果を、前記汎用レジスタ群に提供し、
前記形式成型器は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ１２）の選択結果を仮数部とし、前記減算器の演算結果を指数部とし、前記第１のＰＥより提供された符号結果（ｓｉｇｎ）を符号として選択して形式に整え、前記汎用レジスタ群に提供する、
請求項１９の並列演算プロセッサ。
【請求項２２】
前記ＰＥ演算器間接続を介して、前記第１のＰＥは前記第２のＰＥから、マルチサイクル型浮動小数点命令の終了信号を受け取り、前記第１のＰＥから前記第２のＰＥに、演算結果の符号（ｓｉｇｎ）と指数途中結果（ｔｍｐｅ）、演算結果一桁（ＱＵＯ）を提供する、請求項１４の並列演算プロセッサ。
【請求項２３】
前記第１のＰＥは、
制御回路と、
汎用レジスタ群と、
演算器群と、
データメモリと、
を備え、
前記汎用レジスタ群は、複数のレジスタ（ＧＰＲ１０〜ＧＰＲ１ｐ）を備え、レジスタ（ＧＰＲ１０、ＧＰＲ１１、ＧＰＲ１２）はそれぞれ、対応するセレクタ（ｍｕｘ００、ｍｕｘ０１、ｍｕｘ０２）の選択結果により更新され、残りのレジスタ（ＧＰＲ１３〜ＧＰＲ１ｐ）は、セレクタ（ｍｕｘ０４）の選択結果により更新され、
前記汎用レジスタ群の出力は、前記制御回路に制御されたセレクタ（ｍｕｘ１−０）で選択され、オペランド（ｏｐｒ０、ｏｐｒ１）として、演算器群及びデータメモリに供給され、
前記セレクタ（ｍｕｘ００）は、前記制御回路の制御に基づき、レジスタ（ＧＰＲ１０）のうち仮数部分の上位ビットを１とし、さらに上位ビット側を０としたビット列と、セレクタ（ｍｕｘ０３）の選択結果と、セレクタ（ｍｕｘ０４）の選択結果を選択して、選択結果をレジスタ（ＧＰＲ１０）に提供し、
前記セレクタ（ｍｕｘ０１）は、前記制御回路の制御に基づき、前記レジスタ（ＧＰＲ１１）のうち仮数部分の上位ビットを１とし、さらに上位ビット側を０としたビット列と、前記セレクタ（ｍｕｘ０４）の選択結果を選択して、選択結果を前記レジスタ（ＧＰＲ１１）に提供し、
前記セレクタ（ｍｕｘ０）は、前記制御回路の制御に基づき、前記演算器群の減算器の減算結果と、前記セレクタ（ｍｕｘ０４）の選択結果を選択して、選択結果を、前記レジスタ（ＧＰＲ１１）に提供し、
前記汎用レジスタ群は、浮動小数点除算命令の実行のみに使用する減算器を備え、
前記減算器は、前記レジスタ（ＧＰＲ１０）のうち指数部から、前記レジスタ（ＧＰＲ１１）のうち指数部を減算し、減算結果をセレクタ（ｍｕｘ０２）に提供し、
前記演算器群は、加減算器と、乗算器と、バレルシフタと、を備え、それぞれの演算器は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ１−０）から供給されたオペランド（ｏｐｒ０とｏｐｒ１）に対する演算を行い、
前記演算器群の演算結果は、前記制御回路に制御されたセレクタ（ｍｕｘ１−１）で選択され、前記セレクタ（ｍｕｘ０４）に提供され、
前記データメモリは、前記制御回路の制御に基づき、前記汎用レジスタ群及び外部メモリデータ転送網からのデータを記憶素子に書き込み、前記記憶素子から読み出したデータを前記セレクタ（ｍｕｘ０４）及び前記外部データ転送網に提供し、
前記セレクタ（ｍｕｘ０４）は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ１−１）の選択結果、前記データメモリの読み出し結果を選択し、選択結果を前記汎用レジスタ群に提供する、請求項１４の並列演算プロセッサ。
【請求項２４】
前記ＰＥ演算器間接続を介して、前記第２のＰＥは、前記第１のＰＥから、演算の結果（ＱＵＯ）と、浮動小数点命令の途中結果である指数途中結果（ｔｍｐｅ）と符号結果（ｓｉｇｎ）を受け取り、前記第２のＰＥから前記第１のＰＥに、浮動小数演算の終了信号（ＥＮＤ）を提供する請求項１４の並列演算プロセッサ。
【請求項２５】
前記第２のＰＥは、
制御回路と、
汎用レジスタ群と、
演算器群と、
データメモリと、
を備え、
前記汎用レジスタ群は、複数のレジスタ（ＧＰＲ２０〜ＧＰＲ２ｐ）を備え、
前記レジスタ（ＧＰＲ２０）は、セレクタ（ｍｕｘ０５）の選択結果により更新され、他のレジスタ（ＧＰＲ２１〜ＧＰＲ２ｐ）は形式成型器の選択結果により更新され、
前記汎用レジスタ群の出力は、制御回路に制御されたセレクタ（ｍｕｘ２−０）で選択され、オペランド（ｏｐｒ０、ｏｐｒ１）として前記演算器群及びデータメモリに供給され、
前記セレクタ（ｍｕｘ０５）は、前記制御回路の制御に基づき、レジスタ（ＧＰＲ２０）のビット列からＭＳＢを取り除き、ＬＳＢに前記ＰＥ演算器間接続を介して第１のＰＥから提供された浮動小数点命令の結果一桁（ＱＵＯ）を加えたビット列と、前記形式成型器の選択結果を選択し、選択結果を前記レジスタ（ＧＰＲ２０）に提供し、
前記演算器群は、
加減算器と、
乗算器と、
バレルシフタと、
を備え、
前記加減算器は、セレクタ（ｍｕｘ０６）の選択結果と前記オペランド（ｏｐｒ１）を、オペランドとして、制御回路の制御に基づいた演算を行い、
前記乗算器は、前記オペランド（ｏｐｒ０とｏｐｒ１）を、オペランドとして、制御回路の制御に基づいた演算を行い、
前記バレルシフタは、オペランド（ｏｐｒ０）とセレクタ（ｍｕｘ０７）の選択結果を、オペランドとして、前記制御回路の制御に基づいた演算を行い、
演算結果は、前記制御回路に制御されたセレクタ（ｍｕｘ２−１）で選択され、セレクタ（ｍｕｘ０８）に提供され、
前記セレクタ（ｍｕｘ０６）は、前記制御回路の制御に基づき、前記バレルシフタの演算結果とオペランド（ｏｐｒ０）を選択し、選択結果を前記加減算器に提供し、
前記セレクタ（ｍｕｘ０７）は、前記制御回路の制御に基づき、リーディングワン演算結果とオペランド（ｏｐｒ１）を選択し、選択結果を前記バレルシフタに提供し、
前記演算器群は、浮動小数点命令の実行のみに使用するリーディングワンと加算器と丸め検出器を備え、
前記リーディングワンは、前記オペランド（ｏｐｒ０）のビット列をＭＳＢ側からＬＳＢ側へ検索し、ＭＳＢから最初に現れた１までの距離を計算し、前記加算器と前記セレクタ（ｍｕｘ０７）に提供し、
前記加算器は、前記ＰＥ演算器間接続を介して前記第１のＰＥから提供された指数途中結果（ｔｍｐ）と、前記リーディングワンの演算結果を加算し、加算結果を、前記形式成型器に提供し、
前記丸め検出器は、前記バレルシフタの演算結果が丸めを必要とするかを判定し、判定結果をセレクタ（ｍｕｘ２−１）に提供し、
前記データメモリは、前記制御回路の制御に基づき、前記汎用レジスタ群及び外部メモリデータ転送網からのデータを記憶素子に書き込み、前記記憶素子から読み出したデータをセレクタ（ｍｕｘ０８）及び前記外部メモリデータ転送網に提供し、
前記セレクタ（ｍｕｘ０８）は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ２−１）の選択結果、前記データメモリの読み出し結果を選択し、選択結果を前記形式成型器に提供し、
前記形式成型器は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ０８）の選択結果と、前記加算器の加算結果と、前記第１のＰＥより提供された符号結果（ｓｉｇｎ）を選択し、選択結果を前記汎用レジスタ群に提供し、
前記形式成型器は、前記制御回路の制御に基づき、前記セレクタ（ｍｕｘ０８）の選択結果を仮数部とし、前記加算器の加算結果を指数部とし、前記第１のＰＥより提供された符号結果（ｓｉｇｎ）を符号部として選択し、形式を整え、前記汎用レジスタ群に提供する請求項２３の並列演算プロセッサ。
【請求項２６】
前記命令に応じて、前記グループを構成するＰＥの構成の情報を予め保持し、
前記命令に応じて、前記情報に基づき、ＰＥの構成を変化させる、
請求項１乃至２５のいずれか１項の並列演算プロセッサ。
【請求項２７】
前記命令が、前記ＰＥの複数サイクルで実行されるマルチサイクル命令であるときに、前記情報に、パイプラインレジスタの構成が記載される、
請求項２６の並列演算プロセッサ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０２２８
【補正方法】変更
【補正の内容】
【０２２８】
図１７と図１８は、本発明の第４の実施の形態の構成を示すブロック図である。ＳＩＭＤ型プロセッサ全体の構成は、図１に示した第１〜第３の実施の形態と同様である。以下では、図１の説明は省略する。