(57)【要約】【課題】  データ対の演算後のビット列において第１論理値が現れる先頭ビット位置を予測するリーディングゼロ予測回路の回路規模を削減する。【解決手段】  データ対の各ビット対の演算後の第１予測値と、末端ビット対の演算後の第２予測値が生成される。各第１エンコーダは、所定数の第１予測値から先頭ビット位置を示す第１位置情報と第１論理値の出現情報とを生成し、第２エンコーダは、第２予測値と所定数の第１予測値から先頭ビット位置を示す第２位置情報を生成する。位置情報生成部は、出現情報と第１位置情報とに基づき先頭ビット位置を示す第３位置情報を生成する。末端ビット対がデータ対の末端になる場合、置換部は、第２位置情報を第１位置情報の代わりに位置情報生成部に出力し、マスク部は、末端ビット対に対応する第１エンコーダが出力する出現情報を第１論理値の出現を示す情報に変更する。【選択図】    図１
2018116465.tif 000002
【特許請求の範囲】
【請求項１】
入力されるデータ対のビット幅がそれぞれ異なる複数の動作モードを有し、前記データ対の演算により得られる演算後ビット列において第１論理値が先頭ビット側に現れる先頭ビット位置を予測するリーディングゼロ予測回路において、
前記データ対の各ビット対の演算結果の予測値である第１予測値をそれぞれ生成する複数の第１予測器と、
動作モードの切り替えにより前記データ対の末端になる末端ビット対の演算結果の予測値である第２予測値を生成する第２予測器と、
先頭ビット側から順に所定数の第１予測値をそれぞれ受け、第１論理値が先頭ビット側に現れるビット位置を示す第１位置情報と第１論理値の出現を示す出現情報とをそれぞれ生成する複数の第１エンコーダと、
前記末端ビット対に対応する第１エンコーダが受ける所定数の第１予測値のうち前記第２予測値より先頭ビット側の第１予測値と前記第２予測値とを受け、第１論理値が先頭ビット側に現れるビット位置を示す第２位置情報を生成する第２エンコーダと、
前記複数の第１エンコーダのうち、互いに隣接する一対の前記第１エンコーダが出力する一対の前記出現情報と一対の前記第１位置情報とを受け、受けた出現情報に応じて先頭ビット側の出現情報と第１位置情報、または、末端ビット側の出現情報と第１位置情報とを選択する動作を繰り返し、選択した第１位置情報を用いて、前記先頭ビット位置を示す第３位置情報を生成する位置情報生成部と、
前記第２予測器に対応するビット対が前記データ対の末端になる末端動作モード中、前記末端ビット対に対応する第１エンコーダが出力する前記第１位置情報を前記第２エンコーダが出力する前記第２位置情報に置き換える置換部と、
前記末端動作モード中、前記末端ビット対に対応する第１エンコーダが出力する前記出現情報を第１論理値の出現を示す情報に変更するマスク部を有することを特徴とするリーディングゼロ予測回路。
【請求項２】
前記置換部および前記マスク部は、前記第１エンコーダと前記位置情報生成部との間に配置されることを特徴とする請求項１記載のリーディングゼロ予測回路。
【請求項３】
前記末端ビット対に対応する第１エンコーダと前記第２エンコーダと前記置換部と前記マスク部との代わりに配置され、前記第１エンコーダと前記第２エンコーダと前記置換部と前記マスク部との機能を含む第３エンコーダを有することを特徴とする請求項１記載のリーディングゼロ予測回路。
【請求項４】
位置情報生成部は、前記第１位置情報が示すビット位置を順次に集約するツリー状に接続された複数のセレクタを有し、
前記複数のセレクタの各々は、前記互いに隣接する一対の前記第１エンコーダまたは前段の一対のセレクタが出力する一対の前記出現情報と一対の前記第１位置情報とを受け、一対の前記出現情報に応じた出現情報を出力し、先頭ビット側の出現情報が第１論理値の出現を示す場合、先頭ビット側の第１位置情報を選択し、先頭ビット側の出現情報が第１論理値の非出現を示す場合、末端ビット側の第１位置情報を選択し、
前記置換部および前記マスク部は、前記第２エンコーダに対応して順次に接続されるセレクタのいずれかに配置されることを特徴とする請求項１記載のリーディングゼロ予測回路。
【請求項５】
位置情報生成部は、前記第１位置情報が示すビット位置を順次に集約するツリー状に接続された複数のセレクタを有し、
前記複数のセレクタの各々は、前記互いに隣接する一対の前記第１エンコーダまたは前段の一対のセレクタが出力する一対の前記出現情報と一対の前記第１位置情報とを受け、一対の前記出現情報に応じた出現情報を出力し、先頭ビット側の出現情報が第１論理値の出現を示す場合、先頭ビット側の第１位置情報を選択し、先頭ビット側の出現情報が第１論理値の非出現を示す場合、末端ビット側の第１位置情報を選択し、
前記置換部は、前記第２エンコーダに対応して順次に接続されるセレクタのいずれかの出力に配置され、前記末端動作モード中、前記置換部の入力に接続される前記セレクタに対応する第１エンコーダが出力する全ての前記出現情報が第１論理値の非出現を示す場合、前記第１位置情報を前記第２位置情報に置き換えることを特徴とする請求項１記載のリーディングゼロ予測回路。
【請求項６】
前記マスク部は、前記第２エンコーダに対応する第１エンコーダ内に配置されることを特徴とする請求項１または請求項５記載のリーディングゼロ予測回路。
【請求項７】
入力されるデータ対のビット幅がそれぞれ異なる複数の動作モードを有し、前記データ対の演算により得られる演算後ビット列において第１論理値が先頭ビット側に現れる先頭ビット位置を予測するリーディングゼロ予測回路の制御方法において、
前記リーディングゼロ予測回路が有する複数の第１予測器が、前記データ対の各ビット対の演算結果の予測値である第１予測値をそれぞれ生成し、
前記リーディングゼロ予測回路が有する第２予測器が、動作モードの切り替えにより前記データ対の末端になる末端ビット対の演算結果の予測値である第２予測値を生成し、
前記リーディングゼロ予測回路が有する複数の第１エンコーダが、先頭ビット側から順に所定数の第１予測値をそれぞれ受け、第１論理値が先頭ビット側に現れるビット位置を示す第１位置情報と第１論理値の出現を示す出現情報とをそれぞれ生成し、
前記リーディングゼロ予測回路が有する第２エンコーダが、前記末端ビット対に対応する第１エンコーダが受ける所定数の第１予測値のうち前記第２予測値より先頭ビット側の第１予測値と前記第２予測値とを受け、第１論理値が先頭ビット側に現れるビット位置を示す第２位置情報を生成し、
前記リーディングゼロ予測回路が有する位置情報生成部が、前記複数の第１エンコーダのうち、互いに隣接する一対の前記第１エンコーダが出力する一対の前記出現情報と一対の前記第１位置情報とを受け、受けた出現情報に応じて先頭ビット側の出現情報と第１位置情報、または、末端ビット側の出現情報と第１位置情報とを選択する動作を繰り返し、選択した第１位置情報を用いて、前記先頭ビット位置を示す第３位置情報を生成し、
前記リーディングゼロ予測回路が有する置換部が、前記第２予測器に対応するビット対が前記データ対の末端になる末端動作モード中、前記末端ビット対に対応する第１エンコーダが出力する前記第１位置情報を前記第２エンコーダが出力する前記第２位置情報に置き換え、
前記リーディングゼロ予測回路が有するマスク部が、前記末端動作モード中、前記末端ビット対に対応する第１エンコーダが出力する前記出現情報を第１論理値の出現を示す情報に変更することを特徴とするリーディングゼロ予測回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リーディングゼロ予測回路およびリーディングゼロ予測回路の制御方法に関する。
【背景技術】
【０００２】
浮動小数点数の加算器は、演算結果の仮数のビット列中の上位側に最初に現れる”１”を上位側にシフトし、シフトした数を演算結果の指数から引く正規化処理を実行する。そこで、仮数の演算結果のビット列を入力し、ビット列中の上位側に最初に現れる”１”のビット位置をコードとして出力するプライオリティエンコーダが提案されている（例えば、特許文献１、２参照）。この種のプライオリティエンコーダは、リーディングゼロカウンタとも称される。
【０００３】
一方、加算器に設けられる仮数用の加算器に入力される２つのビット列を入力し、仮数用の加算器の演算と並行して、仮数の演算結果のビット列中の上位側に最初に現れる”１”を予測するプライオリティエンコーダが提案されている（例えば、特許文献３参照）。この種のプライオリティエンコーダは、リーディングゼロ予測回路とも称される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平４−１６７１２４号公報
【特許文献２】特開平５−２７９４６号公報
【特許文献３】特開平５−３０７４６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、近時、画像処理等で使用するデータをＣＰＵ（Central Processing Unit）等のプロセッサを用いて効率的に処理するために、１つの命令コードに基づいて複数のデータを並列に演算するＳＩＭＤと称される手法が提案されている。ここで、ＳＩＭＤは、Single Instruction Multiple Dataの略である。例えば、浮動小数点数の加算器等の演算器は、ＳＩＭＤ命令を実行するＳＩＭＤモードでは、各レジスタに格納された複数のデータ（オペランド）をそれぞれ用いて複数の演算を並列に実行する。このため、演算器に搭載されるリーディングゼロ予測回路は、ＳＩＭＤモードでは、複数の仮数の演算結果のビット列のそれぞれの上位側に最初に現れる”１”を予測する機能に切り替えられる。
【０００６】
ＳＩＭＤモードに対応するリーディングゼロ予測回路の回路規模は、既存のリーディングゼロ予測回路の回路規模に比べて大きい。回路規模の増大を抑制するため、ＳＩＭＤモードで使用される回路と通常モードで使用される回路とをできる限り共通にすることが好ましい。
【０００７】
１つの側面では、本発明は、処理するビット列の数が異なる複数の動作モードを有するリーディングゼロ予測回路の回路規模を削減することを目的とする。
【課題を解決するための手段】
【０００８】
一つの実施態様では、入力されるデータ対のビット幅がそれぞれ異なる複数の動作モードを有し、データ対の演算により得られる演算後ビット列において第１論理値が先頭ビット側に現れる先頭ビット位置を予測するリーディングゼロ予測回路において、データ対の各ビット対の演算結果の予測値である第１予測値をそれぞれ生成する複数の第１予測器と、動作モードの切り替えによりデータ対の末端になる末端ビット対の演算結果の予測値である第２予測値を生成する第２予測器と、先頭ビット側から順に所定数の第１予測値をそれぞれ受け、第１論理値が先頭ビット側に現れるビット位置を示す第１位置情報と第１論理値の出現を示す出現情報とをそれぞれ生成する複数の第１エンコーダと、末端ビット対に対応する第１エンコーダが受ける所定数の第１予測値のうち第２予測値より先頭ビット側の第１予測値と第２予測値とを受け、第１論理値が先頭ビット側に現れるビット位置を示す第２位置情報を生成する第２エンコーダと、複数の第１エンコーダのうち、互いに隣接する一対の第１エンコーダが出力する一対の出現情報と一対の第１位置情報とを受け、受けた出現情報に応じて先頭ビット側の出現情報と第１位置情報、または、末端ビット側の出現情報と第１位置情報とを選択する動作を繰り返し、選択した第１位置情報を用いて、先頭ビット位置を示す第３位置情報を生成する位置情報生成部と、第２予測器に対応するビット対がデータ対の末端になる末端動作モード中、末端ビット対に対応する第１エンコーダが出力する第１位置情報を第２エンコーダが出力する第２位置情報に置き換える置換部と、末端動作モード中、末端ビット対に対応する第１エンコーダが出力する出現情報を第１論理値の出現を示す情報に変更するマスク部を有する。
【０００９】
別の実施態様では、入力されるデータ対のビット幅がそれぞれ異なる複数の動作モードを有し、データ対の演算により得られる演算後ビット列において第１論理値が先頭ビット側に現れる先頭ビット位置を予測するリーディングゼロ予測回路の制御方法において、リーディングゼロ予測回路が有する複数の第１予測器が、データ対の各ビット対の演算結果の予測値である第１予測値をそれぞれ生成し、リーディングゼロ予測回路が有する第２予測器が、動作モードの切り替えによりデータ対の末端になる末端ビット対の演算結果の予測値である第２予測値を生成し、リーディングゼロ予測回路が有する複数の第１エンコーダが、先頭ビット側から順に所定数の第１予測値をそれぞれ受け、第１論理値が先頭ビット側に現れるビット位置を示す第１位置情報と第１論理値の出現を示す出現情報とをそれぞれ生成し、リーディングゼロ予測回路が有する第２エンコーダが、末端ビット対に対応する第１エンコーダが受ける所定数の第１予測値のうち第２予測値より先頭ビット側の第１予測値と第２予測値とを受け、第１論理値が先頭ビット側に現れるビット位置を示す第２位置情報を生成し、リーディングゼロ予測回路が有する位置情報生成部が、複数の第１エンコーダのうち、互いに隣接する一対の第１エンコーダが出力する一対の出現情報と一対の第１位置情報とを受け、受けた出現情報に応じて先頭ビット側の出現情報と第１位置情報、または、末端ビット側の出現情報と第１位置情報とを選択する動作を繰り返し、選択した第１位置情報を用いて、先頭ビット位置を示す第３位置情報を生成し、リーディングゼロ予測回路が有する置換部が、第２予測器に対応するビット対がデータ対の末端になる末端動作モード中、末端ビット対に対応する第１エンコーダが出力する第１位置情報を第２エンコーダが出力する第２位置情報に置き換え、リーディングゼロ予測回路が有するマスク部が、末端動作モード中、末端ビット対に対応する第１エンコーダが出力する出現情報を第１論理値の出現を示す情報に変更する。
【発明の効果】
【００１０】
１つの側面では、本発明は、処理するビット列の数が異なる複数の動作モードを有するリーディングゼロ予測回路の回路規模を削減することができる。
【図面の簡単な説明】
【００１１】
【図１】リーディングゼロ予測回路の一実施形態を示す図である。
【図２】図１に示すリーディングゼロ予測回路における第１動作モードでの動作の一例を示す図である。
【図３】図１に示すリーディングゼロ予測回路における第２動作モードでの動作の一例を示す図である。
【図４】図１に示すリーディングゼロ予測回路の動作の一例を示す図である。
【図５】リーディングゼロ予測回路の別の実施形態を示す図である。
【図６】図５に示すリーディングゼロ予測回路が搭載される演算処理装置の一例を示す図である。
【図７】図６に示す浮動小数点数の加算または減算を実行する加算器の一例を示す図である。
【図８】図５に示すリーディングゼロ予測回路における上位ビット側の回路ブロックの一例を示す図である。
【図９】図５に示すリーディングゼロ予測回路における下位ビット側の回路ブロックの一例を示す図である。
【図１０】図８および図９に示すエンコーダの一例を示す図である。
【図１１】図８および図９に示すセレクタの一例を示す図である。
【図１２】図８の要部の一例を示す図である。
【図１３】図９の要部の一例を示す図である。
【図１４】図５に示すリーディングゼロ予測回路の通常モードでの動作の一例を示す図である。
【図１５】図５に示すリーディングゼロ予測回路の通常モードでの動作の別の例を示す図である。
【図１６】図５に示すリーディングゼロ予測回路のＳＩＭＤモードでの動作の一例を示す図である。
【図１７】図５に示すリーディングゼロ予測回路のＳＩＭＤモードでの動作の別の例を示す図である。
【図１８】他のリーディングゼロ予測回路における上位ビット側の回路ブロックの一例を示す図である。
【図１９】他のリーディングゼロ予測回路における下位ビット側の回路ブロックの一例を示す図である。
【図２０】図１８の要部の一例を示す図である。
【図２１】図１９の要部の一例を示す図である。
【図２２】リーディングゼロ予測回路の別の実施形態における上位ビット側の回路ブロックの一例を示す図である。
【図２３】リーディングゼロ予測回路の別の実施形態における下位ビット側の回路ブロックの一例を示す図である。
【図２４】図２２の要部の一例を示す図である。
【図２５】図２３の要部の一例を示す図である。
【図２６】図２４および図２５に示すエンコーダの一例を示す図である。
【図２７】動作モードに応じて予測値信号ＬＺＰ［３：０］の２ビット目がビット列の最下位になる場合に適用可能なエンコーダの一例を示す図である。
【図２８】リーディングゼロ予測回路の別の実施形態における上位ビット側の回路ブロックの一例を示す図である。
【図２９】リーディングゼロ予測回路の別の実施形態における下位ビット側の回路ブロックの一例を示す図である。
【図３０】図２８および図２９に示すセレクタの一例を示す図である。
【図３１】図３０に示すセレクタの代わりに使用可能なセレクタの一例を示す図である。
【図３２】リーディングゼロ予測回路の別の実施形態における上位ビット側の回路ブロックの一例を示す図である。
【図３３】リーディングゼロ予測回路の別の実施形態を示す図である。
【図３４】図３２に示すエンコーダＥＮＣ＿ＬＺＣ８の一例を示す図である。
【図３５】リーディングゼロ予測回路の別の実施形態を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面を用いて実施形態を説明する。信号が伝達される信号線には、信号名と同じ符号を使用する。
【００１３】
図１は、リーディングゼロ予測回路の一実施形態を示す。図１に示すリーディングゼロ予測回路１００は、１６ビットのデータ対Ａ（Ａ１５−Ａ０）、Ｂ（Ｂ１５−Ｂ０）を受ける第１動作モードと、６ビットのデータ対Ａ（Ａ１５−Ａ１０）、Ｂ（Ｂ１５−Ｂ１０）を受ける第２動作モードとを有する。すなわち、リーディングゼロ予測回路１００は、入力されるデータ対Ａ、Ｂのビット幅がそれぞれ異なる複数の動作モードを有する。リーディングゼロ予測回路１００は、第１動作モードを論理０のモード信号ＭＤにより認識し、第２動作モードを論理１のモード信号ＭＤにより認識する。以下では、論理０は”０”とも示され、論理１は”１”とも示される。
【００１４】
なお、動作モードに応じてリーディングゼロ予測回路１００に入力されるデータ対Ａ、Ｂのビット幅は、図１に示すビット幅に限定されない。各動作モードにおいて、リーディングゼロ予測回路１００に入力されるデータ対Ａ、Ｂのビット位置は、図１に示すビット位置に限定されない。さらに、動作モードの数は、３以上でもよい。
【００１５】
例えば、リーディングゼロ予測回路１００は、図７に示す浮動小数点数用の加算器ＦＡＤＤのリーディングゼロ予測器ＲＺＰとして使用される。リーディングゼロ予測回路１００は、図６に示す浮動小数点数用の乗算加算器ＦＭＡ内において、仮数を加算する加算器による加算結果のビット列中の上位側に最初に現れる”１”のビット位置を予測するために使用されてもよい。
【００１６】
リーディングゼロ予測回路１００は、図７に示す加算器ＡＤＤ１等の演算器が実行するデータ対Ａ、Ｂの演算により得られる演算後のビット列である演算後ビット列において、”１”が先頭ビット側に最初に現れるビット位置（先頭ビット位置）を予測する。リーディングゼロ予測回路１００による先頭ビット位置を予測するデータ対Ａ、Ｂのビット幅およびビット位置は、動作モード毎に異なる。先頭ビット側に最初に現れる”１”は、第１論理値の一例である。リーディングゼロ予測回路１００は、予測したビット位置を示す位置信号ＬＺＣ［３：０］を出力する。なお、図１およびそれ以降において、上位ビット側を先頭ビット側とし、下位ビット側を末端ビット側としているが、逆にしてもよい。また、図１およびそれ以降において、演算後ビット列において、”０”が先頭ビット側に最初に現れるビット位置を予測してもよい。
【００１７】
リーディングゼロ予測回路１００は、予測部１、エンコーダ部２および位置情報生成部３を有する。予測部１は、データ対Ａ、Ｂの各ビット対Ａ、Ｂ（Ａ１５、Ｂ１５等）に対応する複数の予測器ＢＺＰ１と、第２動作モードにおいてデータ対Ａ、Ｂの末端になる末端ビット対Ａ１０、Ｂ１０を受ける予測器ＢＺＰ２とを有する。リーディングゼロ予測回路１００で受信可能なデータ対Ａ、Ｂの途中が末端になる第２動作モードは、末端動作モードの一例である。
【００１８】
各予測器ＢＺＰ１は、対応するビット対Ａ、Ｂと、対応するビット対Ａ、Ｂの末端側に隣接するビット対Ａ、Ｂとを用いて、対応するビット対Ａ、Ｂの演算結果の予測値を示す予測値信号ＬＺＰ１を生成する。なお、最下位の予測器ＢＺＰ１は、末端側に隣接するビット対Ａ、Ｂがないため、隣接するビット対Ａ、Ｂの代わりに”０”、”０”を受ける。予測器ＢＺＰ１は第１予測器の一例であり、予測器ＢＺＰ１が生成する予測値信号ＬＺＰが示す予測値は、第１予測値の一例である。
【００１９】
予測器ＢＺＰ２は、末端ビット対Ａ１０、Ｂ１０を用いて、末端ビット対Ａ１０、Ｂ１０の演算結果の予測値を示す予測値信号ＬＺＰ２を生成する。すなわち、予測器ＢＰＺ２は、動作モードの切り替えによりデータ対Ａ、Ｂの末端になる末端ビット対Ａ１０、Ｂ１０の演算結果の予測値を示す予測値信号ＬＺＰ２を生成する。予測器ＢＺＰ２は、第２予測器の一例であり、予測器ＢＺＰ２が生成する予測値信号ＬＺＰ２が示す予測値は、第２予測値の一例である。
【００２０】
エンコーダ部２は、先頭ビット側から順に４ビットの予測値信号ＬＺＰ１をそれぞれ受ける複数のエンコーダＥＮＣ１と、末端ビット対Ａ１０、Ｂ１０を受ける予測器ＢＺＰ２に対応するエンコーダＥＮＣ２と、置換部ＲＰＬと、マスク部ＭＳＫとを有する。エンコーダＥＮＣ１は、第１エンコーダの一例であり、エンコーダＥＮＣ２は、第２エンコーダの一例である。
【００２１】
各エンコーダＥＮＣ１は、４ビットの予測値信号ＬＺＰ１に基づいて、受けた予測値信号ＬＺＰ１に対応する４つのビット対Ａ、Ｂの演算後ビット列において、”１”が先頭ビット側に最初に現れるビット位置を示す位置信号ＬＺＣ［１：０］を生成する。各エンコーダＥＮＣ１は、４ビットの予測値信号ＬＺＰ１の少なくともいずれかのビットが”０”を含む場合、出現信号ＡＺ（”０”）を生成し、４ビットの予測値信号ＬＺＰ１が”０”を含まない場合、出現信号ＡＺ（”１”）を生成する。エンコーダＥＮＣ１が出力する位置信号ＬＺＣ［１：０］は、第１位置情報の一例である。
【００２２】
エンコーダＥＮＣ２は、末端ビット対Ａ１０、Ｂ１０に対応するエンコーダＥＮＣ１が受ける４ビットの予測値信号ＬＺＰ１のうち予測値信号ＬＺＰ２より先頭ビット側の予測値信号ＬＺＰ１と予測値信号ＬＺＰ２とを受ける。エンコーダＥＮＣ２は、受けた予測値信号ＬＺＰ１、ＬＺＰ２に対応するビット対Ａ、Ｂの演算後ビット列において、”１”が先頭ビット側に最初に現れるビット位置を示す位置信号ＬＺＣ［１：０］を生成する。エンコーダＥＮＣ２が出力する位置信号ＬＺＣ［１：０］は、第２位置情報の一例である。
【００２３】
置換部ＲＰＬは、第１動作モード（ＭＤ＝”０”）において、末端ビット対Ａ１０、Ｂ１０に対応するエンコーダＥＮＣ１が出力する位置信号ＬＺＣ［１：０］を選択し、位置情報生成部３に出力する。置換部ＲＰＬは、第２動作モード（ＭＤ＝”１”）において、エンコーダＥＮＣ２が出力する位置信号ＬＺＣ［１：０］を選択し、位置情報生成部３に出力する。すなわち、置換部ＲＰＬは、第２動作モード中、末端ビット対Ａ１０、Ｂ１０に対応するエンコーダＥＮＣ１が出力する位置信号ＬＺＣ［１：０］を、エンコーダＥＮＣ２が出力する位置信号ＬＺＣ［１：０］に置き換える。
【００２４】
エンコーダＥＮＣ１、ＥＮＣ２と位置情報生成部３との間に置換部ＲＰＬを配置することで、エンコーダＥＮＣ２の出力を専用に受ける専用セレクタＬＺＣ８を位置情報生成部３に配置することを省略することができる。後述するように、セレクタＬＺＣ８、ＬＺＣ１６は、一対の出現信号ＡＺと一対の位置信号ＬＺＣ［１：０］とを受ける。このため、専用セレクタＬＺＣ８を位置情報生成部３に配置する場合、図１に示すセレクタＬＺＣ１６とは別に、セレクタＬＺＣ８の出力と専用セレクタＬＺＣ８の出力を受ける専用セレクタＬＺＣ１６が位置情報生成部３に配置される。すなわち、動作モード毎に独立に動作する回路が増加する。さらに、図１に示すセレクタＬＺＣ１６の出力と専用セレクタＬＺＣ１６の出力のいずれかを動作モードに応じて選択するセレクタが位置情報生成部３に配置される。
【００２５】
これに対して、図１に示すリーディングゼロ予測回路１００では、末端ビット対Ａ１０、Ｂ１０に対応するセレクタＬＺＣ８、ＬＺＣ１６を動作モードに共通に使用できる。このため、位置情報生成部３の回路規模を、セレクタＬＺＣ８、ＬＺＣ１６を動作モードに対応してそれぞれ設ける場合に比べて削減することができる。この結果、リーディングゼロ予測回路１００の回路規模を削減することができる。
【００２６】
マスク部ＭＳＫは、第２動作モード中（ＭＤ＝１）、末端ビット対に対応する第１エンコーダが生成する出現信号を第１論理値の非出現を示す値に設定し、位置情報生成部３に出力する。
【００２７】
位置情報生成部３は、例えば、ツリー状に接続され、位置信号ＬＺＣ［１：０］が示すビット位置を順次に集約する複数のセレクタＬＺＣ８、ＬＺＣ１６を有する。セレクタＬＺＣ８は、互いに隣接する一対のエンコーダＥＮＣ１が出力する一対の出現信号ＡＺと一対の位置信号ＬＺＣ［１：０］とを受ける。
【００２８】
各セレクタＬＺＣ８は、先頭ビット側の出現信号ＡＺが”０”の場合、先頭ビット側の出現信号ＡＺと位置信号ＬＺＣ［１：０］とを選択し、先頭ビット側の出現信号ＡＺが”１”の場合、末端ビット側の出現信号ＡＺと位置信号ＬＺＣ［１：０］とを選択する。セレクタＬＺＣ８は、先頭ビット側の出現信号ＡＺの論理を、位置信号ＬＺＣ［２：０］の最上位ビットＬＺＣ［２］とし、位置信号ＬＺＣ［２：０］をセレクタＬＺＣ１６に出力する。また、セレクタＬＺＣ８は、選択した出現信号ＡＺをセレクタＬＺＣ１６に出力する。換言すれば、セレクタＬＺＣ８は、先頭ビット側と末端ビット側の出現信号ＡＺのいずれかが”０”の場合、”０”の出現信号ＡＺを出力し、先頭ビット側と末端ビット側の出現信号ＡＺがともに”１”の場合、”１”の出現信号ＡＺを出力する。
【００２９】
セレクタＬＺＣ１６は、先頭ビット側の出現信号ＡＺが”０”の場合、先頭ビット側の出現信号ＡＺと位置信号ＬＺＣ［２：０］とを選択し、先頭ビット側の出現信号ＡＺが”１”の場合、末端ビット側の出現信号ＡＺと位置信号ＬＺＣ［２：０］とを選択する。セレクタＬＺＣ１６は、先頭ビット側の出現信号ＡＺの論理を位置信号ＬＺＣ［３］とし、データ対Ａ、Ｂの演算後ビット列において先頭ビット側に”１”が最初に現れるビット位置の予測値を示す位置信号ＬＺＣ［３：０］を出力する。セレクタＬＺＣ１６が出力する位置信号ＬＺＣ［３：０］は、第３位置情報の一例である。
【００３０】
また、セレクタＬＺＣ１６は、選択した出現信号ＡＺを出力する。換言すれば、セレクタＬＺＣ１６は、先頭ビット側と末端ビット側の出現信号ＡＺのいずれかが”０”の場合、”０”の出現信号ＡＺを出力し、先頭ビット側と末端ビット側の出現信号ＡＺがともに”１”の場合、”１”の出現信号ＡＺを出力する。ここで、”０”の出現信号ＡＺは、データ対Ａ、Ｂの演算後ビット列に”１”が出現することを示し、”１”の出現信号ＡＺは、データ対Ａ、Ｂの演算後ビット列に”１”が出現しないことを示す。
【００３１】
このように、位置情報生成部３は、互いに隣接する一対のエンコーダＥＮＣ１が出力する一対の出現信号ＡＺと一対の位置信号ＬＺＣ［１：０］とをそれぞれ受ける。位置情報生成部３は、先頭ビット側の出現信号ＡＺが”０”の場合、先頭ビット側の出現信号ＡＺと位置信号ＬＺＣとを選択し、先頭ビット側の出現信号ＡＺが”１”の場合、末端ビット側の出現信号ＡＺと位置信号ＬＺＣとを選択する動作を繰り返す。そして、位置情報生成部３は、選択した位置信号ＬＺＣ［１：０］を用いて、データ対Ａ、Ｂの演算後ビット列において先頭ビット側に”１”が最初に現れるビット位置の予測値を示す位置信号ＬＺＣ［３：０］を生成する。
【００３２】
図２は、図１に示すリーディングゼロ予測回路１００の第１動作モードでの動作の一例を示す。置換部ＲＰＬ、マスク部ＭＳＫおよびセレクタＬＺＣ８、ＬＺＣ１６の枠内に示す破線の矢印は、信号の選択を示す。第１動作モードでは、置換部ＲＰＬおよびマスク部ＭＳＫは、エンコーダＥＮＣ１の出力を選択する。
【００３３】
図２に示す例では、リーディングゼロ予測回路１００は、１６ビットのデータ対Ａ１５−Ａ０、Ｂ１５−Ｂ０を受け、結果的に、先頭ビット側から見て演算後ビット列のビット６に最初の”１”が現れると予測する。ビット対Ａ６、Ｂ６に対応する予測器ＢＺＰ１は、”０”の予測値信号ＬＺＰ１を出力する。例えば、ビット対Ａ６、Ｂ６に対応する予測器ＢＺＰ１を除く予測器ＢＺＰ１と、予測器ＢＺＰ２とは、”１”の予測値信号ＬＺＰ１を出力する。
【００３４】
ビット１５−１２、ビット１１−８、ビット３−０のそれぞれに対応するエンコーダＥＮＣ１は、”１”の予測値信号ＬＺＰ１に基づいて、演算後ビット列に”１”が出現しないと判定する。そして、エンコーダＥＮＣ１は、”１”の出現信号ＡＺと、２進数で”１１”の位置信号ＬＺＣ［１：０］とを出力する。ビット７−４に対応するエンコーダＥＮＣ１は、ビット６の”０”の予測値信号ＬＺＰ１に基づいて、演算後ビット列に”１”が出現すると判定し、”０”の出現信号ＡＺを出力する。また、ビット７−４に対応するエンコーダＥＮＣ１は、”１”の出現を予測するビット６のビット位置（ビット７を０番目として１番目）を示す”０１”の位置信号ＬＺＣ［１：０］を出力する。
【００３５】
ビット１５−８に対応するセレクタＬＺＣ８は、先頭ビット側の出現信号ＡＺ（＝”１”）に基づいて、末端ビット側の位置信号ＬＺＣ［１：０］（＝”１１”）を選択する。また、ビット１５−８に対応するセレクタＬＺＣ８は、一対の出現信号ＡＺが”１”のため、”１”の出現信号ＡＺを出力する。そして、ビット１５−８に対応するセレクタＬＺＣ８は、先頭ビット側の出現信号ＡＺ（＝”１”）を位置信号ＬＺＣ［２：０］の最上位ビットＬＺＣ［２］に設定し、位置信号ＬＺＣ［２：０］（＝”１１１”）を出力する。
【００３６】
ビット７−０に対応するセレクタＬＺＣ８は、先頭ビット側の出現信号ＡＺ（＝”０”）に基づいて、先頭ビット側の位置信号ＬＺＣ［１：０］（＝”０１”）を選択する。また、ビット７−０に対応するセレクタＬＺＣ８は、一対の出現信号ＡＺの一方が”０”のため、”０”の出現信号ＡＺを出力する。そして、ビット７−０に対応するセレクタＬＺＣ８は、先頭ビット側の出現信号ＡＺ（＝”０”）を位置信号ＬＺＣ［２：０］の最上位ビットＬＺＣ［２］に設定し、位置信号ＬＺＣ［２：０］（＝”００１”）を出力する。
【００３７】
セレクタＬＺＣ１６は、先頭ビット側の出現信号ＡＺ（＝”１”）に基づいて、末端ビット側の位置信号ＬＺＣ［２：０］（＝”００１”）を選択する。また、セレクタＬＺＣ１６は、先頭ビット側の出現信号ＡＺ（＝”１”）を位置信号ＬＺＣ［３：０］の最上位ビットＬＺＣ［３］に設定し、位置信号ＬＺＣ［３：０］（＝”１００１”）と”０”の出現信号ＡＺとを出力する。２進数の”１００１”は、１０進数の”９”である。したがって、リーディングゼロ予測回路１００は、演算後ビット列において、ビット１５を０番目として９番目のビット６に最初の”１”が現れると予測する。
【００３８】
なお、第１動作モードにおいて、リーディングゼロ予測回路１００が出力する位置信号ＬＺＣ［３：０］は、１０進数で”０”から”１５”のいずれかである。例えば、データ対Ａ、Ｂの演算後ビット列のビット０に”１”が出現する場合、または、データ対Ａ、Ｂの演算後ビット列に”１”が出現しない場合、位置信号ＬＺＣ［３：０］は、ともに”１５”になる。但し、出現信号ＡＺが”１”の場合、位置信号ＬＺＣ［３：０］は正しくない。このため、リーディングゼロ予測回路１００の出力に接続される後段の回路は、位置信号ＬＺＣ［３：０］が正しくないことを”１”の出現信号ＡＺから判定することができる。
【００３９】
図３は、図１に示すリーディングゼロ予測回路１００の第２動作モードでの動作の一例を示す。図２と同一または同様の動作については、詳細な説明は省略する。第２動作モードでは、置換部ＲＰＬは、エンコーダＥＮＣ２の出力を選択し、マスク部ＭＳＫは、エンコーダＥＮＣ１からの出現信号ＡＺの論理に拘わりなく、”０”の出現信号ＡＺを強制的に出力する。
【００４０】
図３に示す例では、リーディングゼロ予測回路１００は、６ビットのデータ対Ａ１５−Ａ１０、Ｂ１５−Ｂ１０を受け、結果的に、演算後ビット列に”１”が現れないと予測する。なお、予測器ＢＺＰ１、ＢＺＰ２が出力する予測値信号ＬＺＰ１、ＬＺＰ２は、図２と同じであるとする。このため、エンコーダＥＮＣ１、ＥＮＣ２の動作は、図２と同じである。
【００４１】
ビット１５−８に対応するセレクタＬＺＣ８は、先頭ビット側の出現信号ＡＺ（＝”１”）に基づいて、末端ビット側の位置信号ＬＺＣ［１：０］（＝”１１”）を選択する。但し、ビット１５−８に対応するセレクタＬＺＣ８は、一対の出現信号ＡＺの一方が”０”のため、”０”の出現信号ＡＺを出力する。ビット７−０に対応するセレクタＬＺＣ８の動作は、図２と同じである。
【００４２】
セレクタＬＺＣ１６は、先頭ビット側の出現信号ＡＺ（＝”０”）に基づいて、先頭ビット側の位置信号ＬＺＣ［２：０］（＝”１１１”）を選択する。また、セレクタＬＺＣ１６は、先頭ビット側の出現信号ＡＺ（＝”０”）を最上位ビットＬＺＣ［３］に設定し、位置信号ＬＺＣ［３：０］（＝”０１１１”）を出力する。２進数の”０１１１”は、１０進数の”７”である。リーディングゼロ予測回路１００は、ビット１５を０番目として７番目のビット８がデータ対Ａ、Ｂのビットに含まれないため、演算後ビット列に”１”が現れないと予測する。
【００４３】
なお、第２動作モードにおいて、リーディングゼロ予測回路１００が出力する位置信号ＬＺＣ［３：０］の正しい値は、１０進数で”０”から”５”のいずれかである。このため、リーディングゼロ予測回路１００の出力に接続される後段の回路は、第２動作モードにおいて、位置信号ＬＺＣ［３：０］が”６”から”１５”の場合、データ対Ａ、Ｂの演算後ビット列のビット０に”１”が出現しないと判定することができる。
【００４４】
なお、リーディングゼロ予測回路１００がマスク部ＭＳＫを持たない場合、図３において、ビット１５−８に対応するセレクタＬＺＣ８は、”１”の出現信号ＡＺを受け、図２と同様に、”１”の出現信号ＡＺを出力する。この場合、セレクタＬＺＣ１６は、誤動作し、ビット７−０に対応するセレクタＬＺＣ８の出力を選択する。換言すれば、リーディングゼロ予測回路１００にマスク部ＭＳＫを設けることで、セレクタＬＺＣ１６の誤動作を抑止することができる。
【００４５】
図４は、図１に示すリーディングゼロ予測回路１００の動作の一例を示す。すなわち、図４は、リーディングゼロ予測回路１００の制御方法の一例を示す。図４に示すフローは、リーディングゼロ予測回路１００のハードウェアにより、データ対Ａ、Ｂの入力に基づいて開始される。
【００４６】
まず、ステップＳ１０において、予測器ＢＺＰ１、ＢＺＰ２は、各動作モードに対応するデータ対Ａ、Ｂを受け、予測値信号ＬＺＰ１、ＬＺＰ２を生成する。次に、ステップＳ１２において、エンコーダＥＮＣ１は、予測器ＢＺＰ１が出力する予測値信号ＬＺＰ１に基づいて、出現信号ＡＺと位置信号ＬＺＣ［１：０］とを生成する。また、ステップＳ１４において、エンコーダＥＮＣ２は、予測器ＢＺＰ２が出力する予測値信号ＬＺＰ２に基づいて、位置信号ＬＺＣ［１：０］を生成する。なお、ステップＳ１２、Ｓ１４の処理は、並列に実行される。
【００４７】
次に、ステップＳ１６において、リーディングゼロ予測回路１００は、予測器ＢＺＰ２に対応するビット対Ａ、Ｂがデータ対Ａ、Ｂの末端になる動作モードの場合、処理をステップＳ１８に移行する。また、リーディングゼロ予測回路１００は、予測器ＢＺＰ２に対応するビット対Ａ、Ｂがデータ対Ａ、Ｂの末端にならない動作モードの場合、処理をステップＳ２２に移行する。
【００４８】
ステップＳ１８において、置換部ＲＰＬは、エンコーダＥＮＣ２が出力する位置信号ＬＺＣ［１：０］を選択し、位置情報生成部３に出力する。また、ステップＳ２０において、マスク部ＭＳＫは、エンコーダＥＮＣ１が出力する出現信号ＡＺの論理に拘わりなく、出現信号ＡＺを”０”に設定し、位置情報生成部３に出力する。なお、ステップＳ１８、Ｓ２０の処理は、並列に実行される。
【００４９】
一方、ステップＳ２２において、置換部ＲＰＬは、エンコーダＥＮＣ１が出力する位置信号ＬＺＣ［１：０］を選択し、位置情報生成部３に出力する。また、ステップＳ２４において、マスク部ＭＳＫは、エンコーダＥＮＣ１が出力する出現信号ＡＺを位置情報生成部３に出力する。なお、ステップＳ２２、Ｓ２４の処理は、並列に実行される。
【００５０】
ステップＳ２０またはステップＳ２４の後、ステップＳ２６において、位置情報生成部３は、エンコーダＥＮＣ１または置換部ＲＰＬから位置信号ＬＺＣ［１：０］を受け、エンコーダＥＮＣ１またはマスク部ＭＳＫから出現信号ＡＺを受ける。そして、位置情報生成部３は、データ対Ａ、Ｂの演算により得られる演算後のビット列である演算後ビット列において、”１”が先頭ビット側に最初に現れるビット位置の予測値を位置信号ＬＺＣ［３：０］として生成し、出現信号ＡＺとともに出力する。
【００５１】
以上、図１から図４に示す実施形態では、エンコーダＥＮＣ１、ＥＮＣ２と位置情報生成部３との間に置換部ＲＰＬを配置することで、エンコーダＥＮＣ２の出力を受けるセレクタＬＺＣ８、ＬＺＣ１６の位置情報生成部３への配置を省略することができる。すなわち、セレクタＬＺＣ８、ＬＺＣ１６を、第１動作モードと第２動作モードとで共通にすることができる。この結果、位置情報生成部３の回路規模を、セレクタＬＺＣ８、ＬＺＣ１６を重複して設ける場合に比べて削減することができ、リーディングゼロ予測回路１００の回路規模を削減することができる。
【００５２】
また、マスク部ＭＳＫは、動作モードの切り替えによりデータ対Ａ、Ｂの末端になる末端ビット対Ａ１０、Ｂ１０に対応するエンコーダＥＮＣ１が位置情報生成部３に出力する出現信号ＡＺを強制的に”０”に設定する。これにより、セレクタＬＺＣ１６が正常でない位置信号ＬＺＣ［２：０］を選択することによる誤動作を抑止することができる。換言すれば、セレクタＬＺＣ８、ＬＺＣ１６を、複数の動作モードに共通に設ける場合にも、第２動作モードにおいて、ビット７−ビット０に対応するエンコーダＥＮＣ１からの出力が位置信号ＬＺＣ［３：０］の生成に使用されることを避けることができる。
【００５３】
図５は、リーディングゼロ予測回路の別の実施形態を示す。図１に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。この実施形態のリーディングゼロ予測回路１０２は、ゼロ予測部１０、エンコーダ部２０およびプライオリティセレクタ部３０を有する。
【００５４】
例えば、リーディングゼロ予測回路１０２は、図７に示す浮動小数点数用の加算器ＦＡＤＤのリーディングゼロ予測器ＲＺＰとして使用される。リーディングゼロ予測回路１０２は、図６に示す浮動小数点数用の乗算加算器ＦＭＡ内において、仮数を加算する加算器による加算結果のビット列中の上位側に最初に現れる”１”のビット位置を予測するために使用されてもよい。
【００５５】
リーディングゼロ予測回路１０２は、加算器ＦＡＤＤが通常命令に基づいて演算を実行する通常モードにおいて、図７に示す加算器ＡＤＤ１で加算する１１７ビットの仮数Ａ［１２７：１１］と仮数Ｂ［１２７：１１］の対を受信する。通常モードは、”０”のモード信号ＳＩＭＤにより識別される。そして、リーディングゼロ予測回路１０２は、加算器ＡＤＤ１による仮数Ａ、Ｂの加算結果においてビット列中の上位側に最初に現れる”１”のビット位置（先頭ビット位置）を予測し、予測したビット位置を示す位置信号ＬＺＣ［６：０］を出力する。ビット対Ａ［１１］、Ｂ［１１］は、リーディングゼロ予測回路１０２に供給される全体のビット１２７−５の途中であり、ＳＩＭＤモードから通常モードへの切り替えによりデータ対Ａ、Ｂの末端になる末端ビット対の一例である。ビット１１が末端となる通常モードは、末端動作モードの一例である。
【００５６】
一方、リーディングゼロ予測回路１０２は、加算器ＦＡＤＤがＳＩＭＤ演算を実行するＳＩＭＤモードにおいて、５９ビットの仮数Ａ［１２７：６９］、Ｂ［１２７：６９］の対と、５９ビットの仮数Ａ［６３：５］、Ｂ［６３：５］の対とを受信する。ＳＩＭＤモードは、”１”のモード信号ＳＩＭＤにより識別される。以下では、モード信号ＳＩＭＤは、ＳＩＭＤ信号とも称される。なお、ＳＩＭＤモードでは、図７に示す加算器ＡＤＤ１は、５９ビットの仮数Ａ［１２７：６９］、Ｂ［１２７：６９］の対と、５９ビットの仮数Ａ［６３：５］、Ｂ［６３：５］の対との演算を並列に実行する。リーディングゼロ予測回路１０２は、２対の仮数Ａ、Ｂの加算結果のそれぞれのビット列において上位側に最初に現れる”１”のビット位置を予測し、予測したビット位置を示す位置信号ＬＺＣ［５：０］、ＬＳＬ［５：０］を出力する。ビット対Ａ［６９］、Ｂ［６９］は、リーディングゼロ予測回路１０２に供給される全体のビット１２７−５の途中であり、通常モードからＳＩＭＤモードへの切り替えによりデータ対Ａ、Ｂの末端になる末端ビット対の一例である。ビット６９が末端となるＳＩＭＤモードは、末端動作モードの一例である。
【００５７】
なお、動作モードに応じてリーディングゼロ予測回路１０２に入力されるデータ対Ａ、Ｂのビット幅は、図５に示すビット幅に限定されない。各動作モードにおいて、リーディングゼロ予測回路１０２に入力されるデータ対Ａ、Ｂのビット位置は、図５に示すビット位置に限定されない。さらに、動作モードの数は、３以上でもよい。
【００５８】
ゼロ予測部１０は、複数の予測器ＢＺＰ１、ＢＺＰ２を有する。予測器ＢＺＰ１は、仮数Ａ［１２７：５］における予測対象のビットおよび予測対象のビットの１つ下位のビットと、仮数Ｂ［１２７：５］における予測対象のビットおよび予測対象のビットの１つ下位のビットとを受ける。予測器ＢＺＰ２は、仮数Ａ、Ｂの予測対象のビットのみを受ける。なお、以下の説明では、予測対象のビット対Ａ［ｉ］、Ｂ［ｉ］（ｉは”１２７”から”６”のいずれか）は、対象ビット対ｉとも称され、対象ビット対の１つ下位のビット対Ａ［ｉ−１］、Ｂ［ｉ−１］は、下位ビット対ｉ−１とも称される。また、ビット列において上位側に最初に現れる”１”のビット位置は、出現ビット位置とも称される。
【００５９】
各予測器ＢＺＰ１は、図７に示す加算器ＡＤＤ１による仮数の対象ビット対と下位ビット対との演算結果が”０”になると予測する場合、予測値信号ＬＺＰを”１”に設定し、演算結果が”１”になると予測する場合、予測値信号ＬＺＰを”０”に設定する。予測器ＢＺＰ２は、図７に示す加算器ＡＤＤ１による仮数の対象ビット対の演算結果が”０”になると予測する場合、予測値信号ＬＺＰを”１”に設定し、演算結果が”１”になると予測する場合、予測値信号ＬＺＰを”０”に設定する。予測器ＢＺＰ１、ＢＺＰ２の例は、図１２および図１３に示される。予測器ＢＺＰ１は第１予測器の一例であり、予測器ＢＺＰ１が生成する予測値信号ＬＺＰが示す予測値は、第１予測値の一例である。予測器ＢＺＰ２は、第２予測器の一例であり、予測器ＢＺＰ２が生成する予測値信号ＬＺＰが示す予測値は、第２予測値の一例である。
【００６０】
エンコーダ部２０は、４ビットの予測値信号ＬＺＰ［３：０］を受ける複数のエンコーダＥＮＣ＿ＬＺＣを有する。エンコーダＥＮＣ＿ＬＺＣは、４ビットの予測値信号ＬＺＰ［３：０］のうち、上位側で最初に”０”になる予測値信号ＬＺＰの位置を示す位置信号ＬＺＣ［１：０］を出力する。また、エンコーダＥＮＣ＿ＬＺＣは、４ビットの予測値信号ＬＺＰ［３：０］が全て”１”の場合、ゼロフラグ信号ＡＺを”１”に設定する。以下の説明では、ゼロフラグ信号ＡＺは、ＡＺ信号とも称される。エンコーダ部２０内でＳＩＭＤ信号を受ける回路は、図８、図９、図１２および図１３で説明される。
【００６１】
プライオリティセレクタ部３０は、通常モードにおいて、エンコーダ部２０からの位置信号ＬＺＣ［１：０］とＡＺ信号に基づいて、位置信号ＬＺＣ［６：０］を出力する。また、プライオリティセレクタ部３０は、ＳＩＭＤモードにおいて、エンコーダ部２０からの位置信号ＬＺＣ［１：０］とＡＺ信号に基づいて、位置信号ＬＺＣ［５：０］、ＬＺＬ［５：０］を出力する。プライオリティセレクタ部３０は、データ対Ａ、Ｂの演算後ビット列において先頭ビット側に”１”が最初に現れるビット位置の予測値を示す位置信号ＬＺＣ［６：０］を生成する位置情報生成部の一例である。位置信号ＬＺＣ［６：０］は、第３位置情報の一例である。
【００６２】
図６は、図５に示すリーディングゼロ予測回路１０２が搭載される演算処理装置の一例を示す。演算処理装置２００は、命令キャッシュ５０、命令バッファ５２、デコード部５４、リザベーションステーション部５６および演算実行部５８を有する。演算処理装置２００は、ＣＰＵ等のプロセッサであり、図６では、プロセッサに搭載されるプロセッサコアの一部が示される。
【００６３】
命令キャッシュ５０は、例えば、二次キャッシュまたはメインメモリ等から転送される命令を格納する一次命令キャッシュである。命令バッファ５２は、命令キャッシュ５０から転送される命令を順次保持し、保持した命令をデコード部５４に順次出力する。デコード部５４は、命令バッファ５２から転送される命令を解読し、解読した命令に含まれる命令コードおよびレジスタ番号等をリザベーションステーション部５６に投入する。
【００６４】
リザベーションステーション部５６は、演算命令を保持する複数のエントリを含むリザベーションステーションＲＳＥ（Reservation Station for Execution）を有する。また、リザベーションステーション部５６は、ロード命令およびストア命令等のメモリアクセス命令を保持する複数のエントリを含むリザベーションステーションＲＳＡ（Reservation Station for Address）を有する。
【００６５】
リザベーションステーションＲＳＥは、エントリに保持した演算命令の依存関係を判定し、判定した依存関係に基づいて、エントリに保持した演算命令の中から実行可能な演算命令を選択し、選択した演算命令を演算実行部５８に投入する。リザベーションステーションＲＳＡは、エントリに保持したメモリアクセス命令の依存関係を判定し、判定した依存関係に基づいて、エントリに保持したメモリアクセス命令の中から実行可能なロード命令またはストア命令を選択する。リザベーションステーションＲＳＡは、選択したロード命令またはストア命令を演算実行部５８に投入する。
【００６６】
演算実行部５８は、固定小数点演算部６０、浮動小数点演算部６２、論理演算部６４、アドレス演算部６６およびレジスタ部６８を有する。固定小数点演算部６０は、固定小数点数の加算または減算を実行する加算器ＡＤＤと、固定小数点数の乗算または除算を実行する乗算器ＭＵＬとを有する。浮動小数点演算部６２は、浮動小数点数の加算または減算を実行する加算器ＦＡＤＤと、浮動小数点数の乗算または除算を実行する乗算器ＦＭＵＬとを有する。また、浮動小数点演算部６２は、浮動小数点数の乗算と加算とを実行する乗算加算器ＦＭＡとを有する。例えば、図５に示すリーディングゼロ予測回路１０２は、浮動小数点数用の加算器ＦＡＤＤに、リーディングゼロ予測器ＲＺＰとして搭載される。リーディングゼロ予測器ＲＺＰは、図７で説明される。
【００６７】
例えば、加算器ＦＡＤＤ、乗算器ＦＭＵＬおよび乗算加算器ＦＭＡは、ＳＩＭＤ命令に基づいてＳＩＭＤ演算を実行する機能を有する。ＳＩＭＤ演算では、１つの命令に基づいて複数の演算が並列に実行されるため、ＳＩＭＤ命令の第１オペランドおよび第２オペランドの各々には、演算用の複数のデータが分割して格納される。例えば、加算器ＦＡＤＤは、実行する命令が１組のオペランドを演算する通常命令の場合、図５に示すＳＩＭＤ信号を”０”に設定する。加算器ＦＡＤＤは、実行する命令が２組のオペランドを演算するＳＩＭＤ命令の場合、図５に示すＳＩＭＤ信号を”１”に設定する。
【００６８】
論理演算部６４は、アンド論理の演算を実行する論理積演算器ＡＮＤと、オア論理の演算を実行する論理和演算器ＯＲと、シフト演算を実行するシフト演算器ＳＦＴとを有する。アドレス演算部６６は、リザベーションステーションＲＳＡから投入されるメモリアクセス命令に基づいて、アクセスアドレスを計算し、計算したアクセスアドレスを図示しないデータキャッシュ等に出力する。レジスタ部６８は、命令で指定される複数の汎用レジスタと、演算結果等を一時的に保持する複数のレジスタ（アップデートバッファ）とを有する。例えば、各レジスタは、６４ビットである。
【００６９】
図７は、図６に示す浮動小数点数の加算または減算を実行する加算器ＦＡＤＤの一例を示す。加算器ＦＡＤＤは、比較器ＣＭＰ、入れ替えスイッチＳＷ、減算器ＳＵＢ１、右シフタＲＳＦＴ、補数生成器ＣＭＰＬ、加算器ＡＤＤ１、リーディングゼロ予測器ＲＺＰ、正規化シフタＮＲＭＳＦＴおよび加算器ＡＤＤ２を有する。
【００７０】
以下では、通常モードにおける浮動小数点数用の加算器ＦＡＤＤの動作が説明される。図７に示す加算器ＦＡＤＤは、指数ＥＸＰ１および仮数ＦＲＣ１を含む６４ビットのオペランドＯＰ１と、指数ＥＸＰ２および仮数ＦＲＣ２を含む６４ビットのオペランドＯＰ２とを加減算し、加減算の結果を示す指数ＥＸＰおよび仮数ＦＲＣを出力する。オペランドＯＰ１、ＯＰ１および加減算の結果は、図６に示すレジスタ部６８の汎用レジスタに保持される。
【００７１】
例えば、ＩＥＥＥ（The Institute of Electrical and Electronics Engineers）７５４（浮動小数点数演算標準）では、６４ビットの浮動小数点数は、１ビットの符号部と１１ビットの指数部と５２ビットの仮数部とを含む。図７では、符号部（符号ビット）の記載は省略される。また、ＩＥＥＥ７５４では、浮動小数点数は、正規化された最上位ビットがヒドンビットとして省略されているが、入れ替えスイッチＳＷの出力では、ヒドンビットが補われているとする。
【００７２】
比較器ＣＭＰは、指数ＥＸＰ１、ＥＸＰ２の大小を比較し、指数ＥＸＰ２が指数ＥＸＰ１より大きい場合、オペランドＯＰ１、ＯＰ２を入れ換えるためのスイッチ制御信号ＳＷＣを入れ替えスイッチＳＷに出力する。比較器ＣＭＰは、指数ＥＸＰ１が指数ＥＸＰ２以上の場合、オペランドＯＰ１、ＯＰ２を入れ換えないためのスイッチ制御信号ＳＷＣを入れ替えスイッチＳＷに出力する。減算器ＳＵＢ１は、入れ替えスイッチＳＷから出力される指数ＥＸＰ１、ＥＸＰ２の差を求め、求めた差を示す差分信号ＤＩＦを右シフタＲＳＦＴおよび加算器ＡＤＤ２に出力する。
【００７３】
右シフタＲＳＦＴは、オペランドＯＰ１、ＯＰ２のうちの値が小さい方の仮数（ＦＲＣ１またはＦＲＣ２の一方）を差分信号ＤＩＦの値だけ右シフトし、補数生成器ＣＭＰＬに出力する。入れ替えスイッチＳＷから右シフタＲＳＦＴに供給される仮数は、通常モードでは１１７ビットであり（図５に示すビット１２７−１１）、ＳＩＭＤモードでは、５９ビットの２倍（図５に示すビット１２７−６９とビット６３−５）である。右シフタＲＳＦＴの動作により、仮数部ＦＲＣ１（またはＦＲＣ２）の一方の桁が、仮数ＦＲＣ１（またはＦＲＣ２）の他方に合わせられ、桁が合わせられた仮数ＦＲＣ１、ＦＲＣ２が加算器ＡＤＤ１で加算される。
【００７４】
補数生成器ＣＭＰＬは、右シフタＲＳＦＴから受ける仮数ＦＲＣ１またはＦＲＣ２の一方の１の補数を算出し、演算結果を加算器ＡＤＤ１およびリーディングゼロ予測器ＲＺＰに出力する。１の補数は、仮数の各ビットの論理を反転することで算出される。なお、補数生成器ＣＭＰＬが生成する１の補数に”１”を加えて２の補数にする演算は、加算器ＡＤＤ１で実行される。加算器ＡＤＤ１は、桁が合わせられた仮数ＦＲＣ１、ＦＲＣ２を加算し、加減算の結果を正規化シフタＮＲＭＳＦＴに出力する。リーディングゼロ予測器ＲＺＰは、桁が合わせられた仮数ＦＲＣ１、ＦＲＣ２を用いて、加算器ＡＤＤ１による加減算の結果において、上位ビット側に最初に”１”が現れるまでの”０”の数を予測する。そして、リーディングゼロ予測器ＲＺＰは、予測した数をシフト量として正規化シフタＮＳＦＴおよび加算器ＡＤＤ２に出力する。すなわち、リーディングゼロ予測器ＲＺＰは、加算器ＡＤＤ１による加減算の結果において、上位ビット側に最初に”１”が現れるビット位置を予測する。
【００７５】
正規化シフタＮＲＭＳＦＴは、リーディングゼロ予測器ＲＺＰが予測したシフト量に基づいて、加算器ＡＤＤ１による加減算の結果（仮数）をビットシフトすることで、加減算の結果の上位ビット側に最初に現れる”１”をヒドンビットに設定する。そして、正規化シフタＮＲＭＳＦＴは、正しいヒドンビットを有する仮数ＦＲＣを出力する。加算器ＡＤＤ２は、減算器ＳＵＢ１からの差分信号ＤＩＦの値とシフト量の値とを加算し、加減算の結果を指数ＥＸＰとして出力する。
【００７６】
なお、浮動小数点数の加算器ＦＡＤＤは、ＳＩＭＤ演算を実行するＳＩＭＤモード中、オペランドＯＰ１、ＯＰ２のそれぞれに含まれる２つの３２ビットの浮動小数点数を加減算する。すなわち、演算処理装置２００は、オペランドＯＰ１、ＯＰ２に含まれる２組の浮動小数点データを独立に加減算するＳＩＭＤ演算機能を有する。ＳＩＭＤモード中、加算器ＦＡＤＤの各要素は、２対の浮動小数点データを加減算する機能に切り替わるが、回路の詳細は省略される。なお、図６および図７では、リーディングゼロ予測回路１０２は、リーディングゼロ予測器ＲＺＰとして加算器ＦＡＤＤに搭載されるが、リーディングゼロ予測回路１０２は、図６に示す乗算加算器ＦＭＡに搭載されてもよい。この場合にも、リーディングゼロ予測回路１０２は、乗算加算器ＦＭＡの加算器内にリーディングゼロ予測器ＲＺＰとして搭載される。
【００７７】
図８は、図５に示すリーディングゼロ予測回路１０２における上位ビット側の回路ブロックの一例を示す。図８において、予測器ＢＺＰ１、ＢＺＰ２の左側に矢印で示す数値は、予測器ＢＺＰ１、ＢＺＰ２の枠内に示す数値を拡大したものであり、予測対象のビット対のビット番号を示す。括弧内に示す数値は、ＳＩＭＤモードにおける上位側の５９ビットのビット群の予測対象のビット対のビット番号を示す。
【００７８】
エンコーダ部２０は、図５に示したエンコーダＥＮＣ＿ＬＺＣと、ビット７１−６９に対応する予測器ＢＺＰ１、ＢＺＰ２からの予測値信号ＬＺＰ［３：１］を受けるエンコーダＥＮＣ＿ＬＺＣ２とを有する。エンコーダＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ２の出力は、セレクタＳＥＬ１を介してプライオリティセレクタ部３０のセレクタＬＺＣ８に接続される。
【００７９】
エンコーダＥＮＣ＿ＬＺＣ２は、ビット７１、７０に対応する予測器ＢＺＰ１からの予測値信号ＬＺＰ［３：２］と、ビット６９に対応する予測器ＢＺＰ２からの予測値信号ＬＺＰ［１］とを受け、位置信号ＬＺＣ［１：０］を出力する。エンコーダＥＮＣ＿ＬＺＣ２は、３ビットの予測値信号ＬＺＰ［３：１］のうち、上位側で最初に”０”になる予測値信号ＬＺＰを示す位置信号ＬＺＣ［１：０］を出力する。エンコーダＥＮＣ＿ＬＺＣ２は、３ビットの予測値信号ＬＺＰ［３：１］のいずれかかが”０”の場合、ＡＺ信号を”０”に設定する。また、エンコーダＥＮＣ＿ＬＺＣ２は、３ビットの予測値信号ＬＺＰ［３：１］が全て”１”の場合、ＡＺ信号を”１”に設定する。エンコーダＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ２の例は、図１０に示される。
【００８０】
エンコーダ部２０に設けられるセレクタＳＥＬ１は、エンコーダＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ２からそれぞれ出力される位置信号ＬＺＣ［１：０］のいずれかをＳＩＭＤ信号の論理に応じて選択し、セレクタＬＺＣ８に出力する。セレクタＳＥＬ１の機能は、図１２で説明される。
【００８１】
プライオリティセレクタ部３０は、ツリー状に接続された５段構成のセレクタＬＺＣ８、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４、ＬＺＣ１２８を有する。プライオリティセレクタ部３０は、セレクタＬＺＣ８、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４、ＬＺＣ１２８を用いて、エンコーダＥＮＣ＿ＬＺＣ（またはＥＮＣ＿ＬＺＣ２）が生成した位置信号ＬＺＣ［１：０］とＡＺ信号とをそれぞれ集約する。そして、位置信号ＬＺＣのビット数は、セレクタＬＺＣ８、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４、ＬＺＣ１２８を通る毎に１ビットずつ増加する。例えば、セレクタＬＺＣ８は、４ビット中の出現ビット位置をそれぞれ示す一対の位置信号ＬＺＣ［１：０］に基づいて、８ビット中の出現ビット位置を示す位置信号ＬＺＣ［２：０］を生成する。また、セレクタＬＺＣ８は、一対のＡＺ信号に基づいて、８ビット中に出現ビット位置が存在しないことを検出した場合（対象の演算結果の予測値が全て”０”）、ＡＺ信号を”１”に設定する。なお、通常モードでは、セレクタＬＺＣ１２８が出力する位置信号ＬＺＣ［６：０］が有効であるが、ＳＩＭＤモードでは、セレクタＬＺＣ１２８が出力する位置信号ＬＺＣ［５：０］が有効である。セレクタＬＺＣ８、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４、ＬＺＣ１２８の例は、図１１に示される。
【００８２】
図９は、図５に示すリーディングゼロ予測回路１０２における下位ビット側の回路ブロックの一例を示す。図８と同一または同様の要素については、詳細な説明は省略する。図９において、予測器ＢＺＰ１、ＢＺＰ２の左側に矢印で示す数値は、予測器ＢＺＰ１、ＢＺＰ２の枠内に示す数値を拡大したものであり、予測対象のビット対のビット番号を示す。
【００８３】
エンコーダ部２０は、図５に示したエンコーダＥＮＣ＿ＬＺＣと、ビット１１に対応する予測器ＢＺＰ２からの予測値信号ＬＺＰ［３］を受けるエンコーダＥＮＣ＿ＬＺＣ３とを有する。また、エンコーダ部２０は、ビット７−５に対応する予測器ＢＺＰ１からの予測値信号ＬＺＰ［３：１］を受けるエンコーダＥＮＣ＿ＬＺＣ１を有する。エンコーダＥＮＣ＿ＬＺＣ３は、１ビットの予測値信号ＬＺＰ［３］を位置信号ＬＺＣ［１：０］として出力する。エンコーダＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ２のそれぞれの機能は、図８に示すエンコーダＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ２のそれぞれの機能と同様である。エンコーダＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ１、ＥＮＣ＿ＬＺＣ３の例は、図１０に示される。
【００８４】
エンコーダ部２０に設けられるセレクタＳＥＬ２は、エンコーダＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ３からそれぞれ出力される位置信号ＬＺＣ［１：０］のいずれかをＳＩＭＤ信号の論理に応じて選択し、セレクタＬＺＣ８に出力する。セレクタＳＥＬ２の機能は、図１３で説明される。
【００８５】
プライオリティセレクタ部３０は、ツリー状に接続された４段構成のセレクタＬＺＣ８、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４を有する。プライオリティセレクタ部３０は、セレクタＬＺＣ８、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４を用いて、エンコーダＥＮＣ＿ＬＺＣ（またはＥＮＣ＿ＬＺＣ３、ＥＮＣ＿ＬＺＣ２）が生成した位置信号ＬＺＣ［１：０］とＡＺ信号とをそれぞれ集約する。そして、位置信号ＬＺＣのビット数は、セレクタＬＺＣ８、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４を通る毎に１ビットずつ増加する。
【００８６】
セレクタＬＺＣ６４が出力するカウンタ信号ＬＺＬ［５：０］は、図８に示すセレクタＬＺＣ１２８にも供給される。カウンタ信号ＬＺＬ［５：０］は、通常モードにおいて、下位の５３ビット（ビット６３−１１）中の出現ビット位置を示し、ＳＩＭＤモードにおいて、下位の５９ビット（ビット６３−５）中の出現ビット位置を示す。なお、リーディングゼロ予測回路１０２は、通常モードでは、図８に示すカウンタ信号ＬＺＣ［６：０］を出力し、ＳＩＭＤモードでは、図８に示すカウンタ信号ＬＺＣ［６：０］と図９に示すカウンタ信号ＬＺＬ［５：０］とを出力する。
【００８７】
図１０は、図８および図９に示すエンコーダＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ１、ＥＮＣ＿ＬＺＣ２、ＥＮＣ＿ＬＺＣ３の一例を示す。
【００８８】
エンコーダＥＮＣ＿ＬＺＣは、４ビットの予測値信号ＬＺＰ［３：０］のうち、上位側で最初に”０”になる予測値信号ＬＺＰを示す位置信号ＬＺＣ［１：０］を出力する。例えば、エンコーダＥＮＣ＿ＬＺＣは、予測値信号ＬＺＰ［３］が最初の”０”の場合、位置信号ＬＺＣ［１：０］を”００”に設定し、予測値信号ＬＺＰ［２］が最初の”０”の場合、位置信号ＬＺＣ［１：０］を”０１”に設定する。エンコーダＥＮＣ＿ＬＺＣは、予測値信号ＬＺＰ［３：０］の少なくもいずれかが”０”の場合、”０”のＡＺ信号を出力する。
【００８９】
また、エンコーダＥＮＣ＿ＬＺＣは、４ビットの予測値信号ＬＺＰ［３：０］が全て”１”の場合、ＡＺ信号を”１”に設定する。すなわち、エンコーダＥＮＣ＿ＬＺＣは、４つのビット対の演算結果において上位側で最初に”１”になるビット位置を示す位置信号ＬＺＣ［１：０］を出力し、４つのビット対の演算結果が全て”０”の場合、ＡＺ信号を”１”に設定する。なお、予測値信号ＬＺＰ［３：０］の全ビットが”１”の場合にも、位置信号ＬＺＣ［１：０］は、”１１”に設定される。
【００９０】
エンコーダＥＮＣ＿ＬＺＣ１は、３ビットの予測値信号ＬＺＰ［３：１］のうち、上位側で最初に”０”になる予測値信号ＬＺＰを示す位置信号ＬＺＣ［１：０］を出力する。エンコーダＥＮＣ＿ＬＺＣ１は、予測値信号ＬＺＰ［３：１］の少なくもいずれかが”０”の場合、”０”のＡＺ信号を出力する。また、エンコーダＥＮＣ＿ＬＺＣ１は、３ビットの予測値信号ＬＺＰ［３：１］が全て”１”の場合、ＡＺ信号を”１”に設定する。
【００９１】
エンコーダＥＮＣ＿ＬＺＣ２は、ＡＺ信号を出力する機能を持たないことを除き、エンコーダＥＮＣ＿ＬＺＣ１と同様の機能を有する。エンコーダＥＮＣ＿ＬＺＣ３は、１ビットの予測値信号ＬＺＰ［３］の論理を位置信号ＬＺＣ［１：０］として出力する。
【００９２】
図１１は、図８および図９に示すセレクタＬＺＣ８、ＬＺＣ８Ａ、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４、ＬＺＣ１２８の一例を示す。図１１において、符号ＡＺ＿Ｈは、上位ビット側から受けるゼロフラグ値を示し、符号ＡＺ＿Ｌは、下位ビット側から受けるゼロフラグ値を示す。符号ＬＺＣＨは、上位ビット側から受ける位置信号ＬＺＣを示し、符号ＬＺＣＬは、下位ビット側から受ける位置信号ＬＺＣを示す。
【００９３】
セレクタＬＺＣ８は、アンド回路ＡＮＤ、バッファ回路ＢＵＦおよびセレクタＳＥＬ８を有する。アンド回路ＡＮＤは、ゼロフラグ値ＡＺ＿Ｈ、ＡＺ＿Ｌのアンド論理をＡＺ信号として出力する。バッファ回路ＢＵＦは、ゼロフラグ値ＡＺ＿Ｈを位置信号ＬＺＣ［２］として出力する。セレクタＳＥＬ８は、ゼロフラグ値ＡＺ＿Ｈが”０”の場合、位置信号ＬＺＣＨ［１：０］を位置信号ＬＺＣ［１：０］として出力し、ゼロフラグ値ＡＺ＿Ｈが”１”の場合、位置信号ＬＺＣＬ［１：０］を位置信号ＬＺＣ［１：０］として出力する。
【００９４】
セレクタＬＺＣ８Ａは、バッファ回路ＢＵＦ１、ＢＵＦ２、ＢＵＦ３を有する。バッファ回路ＢＵＦ１は、ゼロフラグ値ＡＺ＿ＨをＡＺ信号として出力する。バッファ回路ＢＵＦ２は、ゼロフラグ値ＡＺ＿Ｈを位置信号ＬＺＣ［２］として出力する。バッファ回路ＢＵＦ３は、位置信号ＬＺＣＨ［１：０］を位置信号ＬＺＣ［１：０］として出力する。
【００９５】
セレクタＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４、ＬＺＣ１２８は、セレクタＳＥＬ１６、ＳＥＬ３２、ＳＥＬ６４、ＳＥＬ１２８が出力する位置信号ＬＺＣのビット数が異なることを除き、セレクタＬＺＣ８と同様の機能を有する。
【００９６】
図１２は、図８の要部の一例を示す。すなわち、図１２は、ＳＩＭＤモードにおいて使用される上位側の５９ビット（ビット１２７−６９）のうち、最下位のビット６９に対応する回路とその周辺の回路とを示す。
【００９７】
各予測器ＢＺＰ１は、予測対象の対象ビット対Ａ［ｉ］、Ｂ［ｉ］を受ける排他的論理和回路と、対象ビット対の１つ下位の下位ビット対Ａ［ｉ−１］、Ｂ［ｉ−１］を受けるオア回路とを有する。また、各予測器ＢＺＰ１は、排他的論理和回路の出力とオア回路の出力とに基づいて予測値信号ＬＺＰを生成する否定排他的論理和回路を有する。
【００９８】
各予測器ＢＺＰ１は、対象ビット対ｉと、下位ビット対ｉ−１とが全て”０”の場合、”０”を予測し、”０”の予測を示す予測値信号ＬＺＰ＝”１”を出力する。各予測器ＢＺＰ１は、対象ビット対ｉが互いに異なる値で、下位ビット対ｉ−１の少なくともいずれかが”１”の場合、”０”を予測し、”０”の予測を示す予測値信号ＬＺＰ＝”１”を出力する。各予測器ＢＺＰ１は、対象ビット対ｉが互いに同じ値で、下位ビット対ｉ−１の少なくともいずれかが”１”の場合、”１”を予測し、”１”の予測を示す予測値信号ＬＺＰ＝”０”を出力する。各予測器ＢＺＰ１は、対象ビット対ｉが互いに異なる値で、下位ビット対ｉ−１が”０”の場合、”１”を予測し、”１”の予測を示す予測値信号ＬＺＰ＝”０”を出力する。
【００９９】
また、ゼロ予測部１０は、ビット対Ａ［６９］、Ｂ［６９］を受け、予測値信号ＬＺＰを出力する否定排他的論理和回路を含む予測器ＢＺＰ２を有する。予測器ＢＺＰ２は、ビット対６９が互いに同じ値の場合、”１”の予測値信号ＬＺＰ［３］を出力し、ビット対６９が互いに異なる値の場合、”０”の予測値信号ＬＺＰ［３］を出力する。
【０１００】
ビット対６９を受ける予測器ＢＺＰ１は、通常モードにおいて使用される予測値信号ＬＺＰを生成し、ビット対６９を受ける予測器ＢＺＰ２は、ＳＩＭＤモードにおいて使用される予測値信号ＬＺＰを生成する。なお、ビット対６９を受ける予測器ＢＺＰ２は、ビット対６９を受ける予測器ＢＺＰ１に、排他的論理和回路の出力を受け、予測値信号ＬＺＰ２を出力するインバータを追加することで省略可能である。
【０１０１】
リーディングゼロ予測回路１０２は、通常モードでは、ビット対１２７−１１を用いて、加算器ＡＤＤ１が出力するビット列において上位側に最初に現れる”１”のビット位置である出現ビット位置を予測する。通常モードにおいて、ビット対６９は、予測対象のビット対１２７−１１の途中に位置する。このため、ビット対６９を受ける予測器ＢＺＰ１（通常モードで使用）は、ビット対６９と下位ビット対６８とを用いて予測値信号ＬＺＰを生成する。また、ビット対６９に対応する予測器ＢＺＰ１から予測値信号ＬＺＰ［１］を受けるエンコーダＥＮＣ＿ＬＺＣは、ビット対７１−６８に対応する４つの予測器ＢＺＰから予測値信号ＬＺＰ［３：０］を受ける。そして、エンコーダＥＮＣ＿ＬＺＣは、予測値信号ＬＺＰ［３：０］に基づいて、ゼロフラグ信号ＡＺと位置信号ＬＺＣ［１：０］を生成する。
【０１０２】
一方、リーディングゼロ予測回路１０２は、ＳＩＭＤモードでは、上位側においてビット対１２７−６９を用いて、図７に示す加算器ＡＤＤ１が出力するビット列において上位側に最初に現れる”１”のビット位置である出現ビット位置を予測する。ＳＩＭＤモードにおいて、ビット対６９は、予測対象のビット対１２７−６９中の最下位に位置する。このため、ビット対６９を受ける予測器ＢＺＰ２（ＳＩＭＤモードで使用）は、下位ビット対６８を用いることなく、ビット対６９のみを用いて予測値信号ＬＺＰを生成する。また、ビット対６９に対応する予測器ＢＺＰ２から予測値信号ＬＺＰ［１］を受けるエンコーダＥＮＣ＿ＬＺＣ２は、下位側のビット対６８に対応する予測器ＢＺＰ１から予測値信号ＬＺＰ［０］を受けずに、位置信号ＬＺＣ［１：０］を生成する。
【０１０３】
エンコーダＥＮＣ＿ＬＺＣは、第１エンコーダの一例である。エンコーダＥＮＣ＿ＬＺＣ２は、第２エンコーダの一例である。ＡＺ信号が示す論理は、データ対Ａ、Ｂの演算により得られる演算後ビット列に”１”が出現したことを示す出現情報の一例である。位置信号ＬＺＣ［１：０］は、演算後ビット列において”１”が先頭ビット側に最初に現れるビット位置を示す第１位置情報の一例である。
【０１０４】
エンコーダ部２０に設けられるセレクタＳＥＬ１は、通常モード中（ＳＩＭＤ＝”０”）、エンコーダＥＮＣ＿ＬＺＣから出力される位置信号ＬＺＣ［１：０］を選択し、セレクタＬＺＣ８に出力する。セレクタＳＥＬ１は、ＳＩＭＤモード中（ＳＩＭＤ＝”１”）、エンコーダＥＮＣ＿ＬＺＣ２から出力される位置信号ＬＺＣ［１：０］を選択し、セレクタＬＺＣ８に出力する。ビット７１−６８に対応するエンコーダＥＮＣ＿ＬＺＣから出力されるＡＺ信号は、アンド回路ＡＮＤ１に供給される。セレクタＳＥＬ１は、ＳＩＭＤモード中、ビット６９に対応するエンコーダＥＮＣ＿ＬＺＣが出力する位置信号ＬＺＣ［１：０］をエンコーダＥＮＣ＿ＬＺＣ２が出力する位置信号ＬＺＣ［１：０］に置き換える置換部の一例である。
【０１０５】
エンコーダ部２０に設けられるアンド回路ＡＮＤ１は、通常モード中、エンコーダＥＮＣ＿ＬＺＣからのＡＺ信号をセレクタＬＺＣ８に出力する。アンド回路ＡＮＤ１は、ＳＩＭＤモード中、エンコーダＥＮＣ＿ＬＺＣからのＡＺ信号のセレクタＬＺＣ８への出力をマスクし、”０”のＡＺ信号をダミーでセレクタＬＺＣ８に出力する。アンド回路ＡＮＤ１は、ＳＩＭＤモード中、ビット６９に対応するエンコーダＥＮＣ＿ＬＺＣが生成するＡＺ信号を”０”に設定するマスク部の一例である。
【０１０６】
”０”のＡＺ信号は、図７に示す加算器ＡＤＤ１による仮数の演算結果における所定数の対象ビットのいずれかに”１”が出現したことを示す。このため、アンド回路ＡＮＤ１に接続されたセレクタＬＺＣ８は、ＳＩＭＤモード中、下位ビット側のエンコーダＥＮＣ＿ＬＺＣからの位置信号ＬＺＣ［１：０］を選択せずに、エンコーダＥＮＣ＿ＬＺＣ２からの位置信号ＬＺＣ［１：０］を選択する。そして、アンド回路ＡＮＤ１に接続されたセレクタＬＺＣ８は、選択した位置信号ＬＺＣ［１：０］をセレクタＬＺＣ１６に出力する。また、アンド回路ＡＮＤ１に接続されたセレクタＬＺＣ８は、”０”のＡＺ信号を位置信号ＬＺＣ［２］としてセレクタＬＺＣ１６に出力する。したがって、リーディングゼロ予測回路１０２は、共通のセレクタＬＺＣ８、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４を使用して、通常モードにおいて位置信号ＬＺＣ［６：０］を出力し、ＳＩＭＤモードにおいて位置信号ＬＺＣ［５：０］を出力できる。
【０１０７】
図１３は、図９の要部の一例を示す。すなわち、図１３は、通常モードにおいて使用されるビット１２７−１１のうち、最下位のビット１１に対応する回路とその周辺の回路とを示す。図１２と同様の要素については、詳細な説明は省略する。
【０１０８】
予測器ＢＺＰ１、ＢＺＰ２の機能は、図１２で説明した予測器ＢＺＰ１、ＢＺＰ２の機能を同じである。但し、ビット対１１を受ける予測器ＢＺＰ１は、ＳＩＭＤモードにおいて使用される予測値信号ＬＺＰを生成し、ビット対１１を受ける予測器ＢＺＰ２は、通常モードにおいて使用される予測値信号ＬＺＰを生成する。
【０１０９】
ＳＩＭＤモードにおいて、ビット対１１は、予測対象の下位側のビット対６３−５の途中に位置する。このため、エンコーダ部２０において、ビット対１１に対応する予測器ＢＺＰ１から予測値信号ＬＺＰ［３］を受けるエンコーダＥＮＣ＿ＬＺＣは、ビット対１１−８に対応する４つの予測器ＢＺＰ１から予測値信号ＬＺＰ［３：０］を受ける。これに対して、通常モードにおいて、ビット対１１は、予測対象のビット対１２７−１１中の最下位に位置する。このため、ビット対１１に対応する予測器ＢＺＰ２に接続されたエンコーダＥＮＣ＿ＬＺＣ３は、下位側のビット対１０−８に対応する予測器ＢＺＰ１から予測値信号ＬＺＰ［２：０］を受けずに、位置信号ＬＺＣ［１：０］を生成する。
【０１１０】
エンコーダ部２０に設けられるセレクタＳＥＬ２は、通常モード中、エンコーダＥＮＣ＿ＬＺＣ３からの位置信号ＬＺＣ［１：０］を選択し、ＳＩＭＤモード中、エンコーダＥＮＣ＿ＬＺＣからの位置信号ＬＺＣ［１：０］を選択する。セレクタＳＥＬ２は、通常モード中、ビット１１に対応するエンコーダＥＮＣ＿ＬＺＣが出力する位置信号ＬＺＣ［１：０］をエンコーダＥＮＣ＿ＬＺＣ３が出力する位置信号ＬＺＣ［１：０］に置き換える置換部の一例である。
【０１１１】
エンコーダ部２０に設けられるアンド回路ＡＮＤ２は、ＳＩＭＤモード中、エンコーダＥＮＣ＿ＬＺＣからのＡＺ信号をセレクタＬＺＣ８に出力する。アンド回路ＡＮＤ２は、通常モード中、エンコーダＥＮＣ＿ＬＺＣからのＡＺ信号のセレクタＬＺＣ８への出力をマスクし、”０”のＡＺ信号をダミーでセレクタＬＺＣ８に出力する。アンド回路ＡＮＤ２は、通常モード中（ＳＩＭＤ＝”０”）、ビット１１に対応するエンコーダＥＮＣ＿ＬＺＣが生成するＡＺ信号を”０”に設定するマスク部の一例である。
【０１１２】
アンド回路ＡＮＤ２に接続されたセレクタＬＺＣ８は、通常モード中、アンド回路ＡＮＤ２から出力される”０”をＡＺ信号として出力する。このため、セレクタＬＺＣ１６は、下位側のセレクタＬＺＣ８Ａからの位置信号ＬＺＣ［２：０］を選択せずに、セレクタＬＺＣ８からの位置信号ＬＺＣ［２：０］を選択する。したがって、セレクタＬＺＣ１６にセレクタＬＺＣ８Ａが接続される場合にも、セレクタＬＺＣ８Ａの出力を無視して、図７に示す加算器ＡＤＤ１が出力するビット１２７−１１に最初に現れる”１”のビット位置である出現ビット位置を予測することができる。
【０１１３】
一方、ＳＩＭＤモード中、セレクタＳＥＬ２は、エンコーダＥＮＣ＿ＬＺＣからの位置信号ＬＺＣ［１：０］をセレクタＬＺＣ８に出力し、アンド回路ＡＮＤ２は、エンコーダＥＮＣ＿ＬＺＣからのＡＺ信号をセレクタＬＺＣ８に出力する。これにより、セレクタＬＺＣ８、ＬＺＣ８Ａに順次接続されるセレクタＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４は、予測値信号ＬＺＰに基づいて動作し、演算後ビット列（ビット６３−５）の”１”の出現ビット位置を予測することができる。
【０１１４】
したがって、リーディングゼロ予測回路１０２は、共通のセレクタＬＺＣ８、ＬＺＣ８Ａ、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４を使用して、通常モードにおいて位置信号ＬＺＣ［６：０］を出力し、ＳＩＭＤモードにおいて位置信号ＬＺＣ［５：０］を出力できる。
【０１１５】
図１４は、図５に示すリーディングゼロ予測回路１０２の通常モードでの動作の一例を示す。セレクタＳＺＣ８、ＳＺＣ１６、ＳＺＣ３２、ＳＺＣ６４、ＳＺＣ１２８の枠内に示す破線の矢印は、上位側または下位側のいずれから位置信号ＬＺＣを選択するかを示す。
【０１１６】
図１４に示す例では、ゼロ予測部１０において、ビット１２７−５０に対応する予測器ＢＺＰ１、ＢＺＰ２（図１２、図１３）は、”１”の予測値信号ＬＺＰを出力する。ビット４９−５に対応する予測器ＢＺＰ１、ＢＺＰ２は、”０”の予測値信号ＬＺＰを出力する。そして、リーディングゼロ予測回路１０２は、図７に示す加算器ＡＤＤ１が出力するビット列において上位側に最初に現れる”１”のビット位置である出現ビット位置がビット４９であることを予測する。
【０１１７】
ビット４９に対応するエンコーダＥＮＣ＿ＬＺＣより上位ビット側のエンコーダＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ２は、図１０に示す真理値表にしたがって”１，１１”のＡＺ信号、位置信号ＬＺＣ［１：０］を出力する。ビット４９に対応するエンコーダＥＮＣ＿ＬＺＣは、図１０に示す真理値表にしたがって”０，１０”のＡＺ信号、位置信号ＬＺＣ［１：０］を出力する。ビット４９に対応するエンコーダＥＮＣ＿ＬＺＣより下位ビット側のエンコーダＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ１は、図１０に示す真理値表にしたがって”０，００”のＡＺ信号、位置信号ＬＺＣ［１：０］を出力する。エンコーダＥＮＣ＿ＬＺＣ３は、”００”の位置信号ＬＺＣ［１：０］を出力する。
【０１１８】
ビット６９に対応するセレクタＳＺＣ８は、図１２に示すセレクタＳＥＬ１およびアンド回路ＡＮＤ１を介して、エンコーダＥＮＣ＿ＬＺＣ２の出力ではなく、エンコーダＥＮＣ＿ＬＺＣの出力を受ける。すなわち、ビット６９に対応するセレクタＳＺＣ８は、ビット７１−６４に対応する８つの予測器ＢＺＰ１からの予測値信号ＬＺＰに基づいて生成されたＡＺ信号、位置信号ＬＺＣ［１：０］を受けて動作する。換言すれば、ビット６９に対応するセレクタＳＺＣ８は、ビット６９をビット列の最下位ビットではなく、ビット列の途中のビットとして扱う。
【０１１９】
ビット４９に対応するセレクタＬＺＣ８は、対応する２つのエンコーダＥＮＣ＿ＬＺＣから”１，１１”、”０，１０”のＡＺ信号、位置信号ＬＺＣ［１：０］を受け、”０，１１０”のＡＺ信号、位置信号ＬＺＣ［２：０］を出力する。
【０１２０】
ビット１１に対応するセレクタＳＺＣ８は、図１３に示すアンド回路ＡＮＤ２から”０”のＡＺ信号を受け、図１３に示すセレクタＳＥＬ２を介してエンコーダＥＮＣ＿ＬＺＣ３からビット１１のみに対応する予測値信号ＬＺＰを受ける。すなわち、ビット１１に対応するセレクタＳＺＣ８は、ビット１０−８に対応する予測値信号ＬＺＰを受けない。
【０１２１】
”０”のＡＺ信号は、図７に示す加算器ＡＤＤ１が出力する演算後ビット列において”１”の出現の予測を示す。すなわち、図１３に示すアンド回路ＡＮＤ２に接続されるセレクタＬＺＣ８は、アンド回路ＡＮＤ２から強制的に出力される”０”のＡＺ信号をセレクタＬＺＣ１６に出力する。これにより、セレクタＬＺＣ８を介してアンド回路ＡＮＤ２に接続されるセレクタＬＺＣ１６（図１４の一番下のＬＺＣ１６）は、上位ビット側の位置信号ＬＺＣ［１：０］を強制的に選択する。したがって、通常モードにおいて、ビット列の最下位ビットであるビット１１より下位側の位置信号ＬＺＣが選択されることを抑止することができ、リーディングゼロ予測回路１０２の誤動作を抑止することができる。
【０１２２】
図１１に示すように、セレクタＳＺＣ８、ＳＺＣ１６、ＳＺＣ３２、ＳＺＣ６４は、上位ビット側のＡＺ信号が”０”の場合、上位ビット側の位置信号ＬＺＣを選択し、上位ビット側のＡＺ信号が”１”の場合、下位ビット側の位置信号ＬＺＣを選択する。セレクタＳＺＣ８、ＳＺＣ１６、ＳＺＣ３２、ＳＺＣ６４は、２つのＡＺ信号がともに”１”の場合、”１”のＡＺ信号を出力し、２つのＡＺ信号の少なくとも一方が”０”の場合、”０”のＡＺ信号を出力する。また、セレクタＳＺＣ８、ＳＺＣ１６、ＳＺＣ３２、ＳＺＣ６４は、上位ビット側のＡＺ信号を位置信号ＬＺＣの最上位ビットとして出力する。
【０１２３】
これにより、ビット４９に対応するセレクタＳＺＣ８、ＳＺＣ１６、ＳＺＣ３２、ＳＺＣ６４は、”０”のＡＺ信号を順次に伝達し、セレクタＳＺＣ１２８は、２進数で”１００１１１０”の位置信号ＬＺＣ［６：０］を出力する。”１００１１１０”は、１０進数の”７８”であり、”１２７”を０番目として７８番目のビット（すなわち、ビット４９）に最初の”１”が出現したことを示す。
【０１２４】
図１５は、図５に示すリーディングゼロ予測回路１０２の通常モードでの動作の別の例を示す。図１４と同様の動作については、詳細な説明は省略する。図１５に示す例では、ゼロ予測部１０において、ビット１２７−１２に対応する予測器ＢＺＰ１、ＢＺＰ２は、”１”の予測値信号ＬＺＰを出力する。ビット１１に対応する予測器ＢＺＰ１、ＢＺＰ２は、”０”の予測値信号ＬＺＰを出力する。そして、リーディングゼロ予測回路１０２は、図７に示す加算器ＡＤＤ１が出力するビット列において上位側に最初に現れる”１”のビット位置である出現ビット位置がビット１１であることを予測する。
【０１２５】
エンコーダＥＮＣ＿ＬＺＣ３は、”０”の予測値信号ＬＺＰ［３］に基づいて、”００”の位置信号ＬＺＣ［１：０］を出力する。図１３に示すセレクタＳＥＬ２は、エンコーダＥＮＣ＿ＬＺＣ３から出力される”００”の位置信号ＬＺＣ［１：０］をセレクタＬＺＣ８に出力し、アンド回路ＡＮＤ２は、”０”のＡＺ信号を強制的にセレクタＬＺＣ８に出力する。
【０１２６】
ビット１１に対応するセレクタＳＺＣ８は、”０”のＡＺ信号をセレクタＬＺＣ１６に出力するとともに、下位ビット側の位置信号ＬＺＣ［１：０］（＝”００”）を選択する。セレクタＬＺＣ８を介してアンド回路ＡＮＤ２に接続されるセレクタＬＺＣ１６は、上位ビット側の位置信号ＬＺＣ［１：０］を強制的に選択する。これにより、通常モードにおいて、ビット列の最下位ビットであるビット１１より下位側の位置信号ＬＺＣが選択されることを抑止することができ、リーディングゼロ予測回路１０２の誤動作を抑止することができる。
【０１２７】
ビット１１に対応するセレクタＳＺＣ８、ＳＺＣ１６、ＳＺＣ３２、ＳＺＣ６４は、”０”のＡＺ信号を順次に伝達し、セレクタＳＺＣ１２８は、２進数で”１１１０１００”の位置信号ＬＺＣ［６：０］を出力する。” １１１０１００”は、１０進数の”１１６”であり、”１２７”を０番目として１１６番目のビット（すなわち、ビット１１）に最初の”１”が出現したことを示す。
【０１２８】
図１６は、図５に示すリーディングゼロ予測回路１０２のＳＩＭＤモードでの動作の一例を示す。図１４と同様の動作については、詳細な説明は省略する。ＳＩＭＤモードでは、リーディングゼロ予測回路１０２は、図７に示す加算器ＡＤＤ１が出力するビット列１２７−６９およびビット列６３−５のそれぞれにおいて上位側に最初に現れる”１”のビット位置である出現ビット位置を予測する。
【０１２９】
図１６に示す例では、ゼロ予測部１０において、ビット１２７−１０１に対応する予測器ＢＺＰ１は、”１”の予測値信号ＬＺＰを出力する。ビット１００−６９に対応する予測器ＢＺＰ１、ＢＺＰ２は、”０”の予測値信号ＬＺＰを出力する。また、ビット６３−４０に対応する予測器ＢＺＰ１は、”１”の予測値信号ＬＺＰを出力する。ビット３９−５に対応する予測器ＢＺＰ１、ＢＺＰ２は、”０”の予測値信号ＬＺＰを出力する。そして、リーディングゼロ予測回路１０２は、加算器ＡＤＤ１が出力する２つのビット列においてビット１００とビット３９のそれぞれに最初の”１”が出現することを予測する。
【０１３０】
エンコーダＥＮＣ＿ＬＺＣ２は、”０００”の予測値信号ＬＺＰに基づいて、”００”の位置信号ＬＺＣ［１：０］を出力する。図１２に示すセレクタＳＥＬ１は、エンコーダＥＮＣ＿ＬＺＣ２から出力される”００”の位置信号ＬＺＣ［１：０］をセレクタＬＺＣ８に出力し、アンド回路ＡＮＤ１は、”０”のＡＺ信号を強制的にセレクタＬＺＣ８に出力する。
【０１３１】
ビット６９に対応するセレクタＳＺＣ８は、”０”のＡＺ信号をセレクタＬＺＣ１６に出力するとともに、上位側であるエンコーダＥＮＣ＿ＬＺＣ２からの位置信号ＬＺＣ［１：０］（＝”００”）を選択する。これにより、ＳＩＭＤモードにおいて、ビット列の最下位ビットであるビット６９より下位側の位置信号ＬＺＣが選択されることを抑止することができ、リーディングゼロ予測回路１０２の誤動作を抑止することができる。
【０１３２】
ビット１１に対応するセレクタＳＺＣ８は、図１３に示すセレクタＳＥＬ２およびアンド回路ＡＮＤ２を介して、エンコーダＥＮＣ＿ＬＺＣ３の出力ではなく、エンコーダＥＮＣ＿ＬＺＣの出力を受ける。すなわち、ビット１１に対応するセレクタＳＺＣ８は、ビット１１−５に対応する７つの予測器ＢＺＰ１からの予測値信号ＬＺＰに基づいて生成されたＡＺ信号、位置信号ＬＺＣ［１：０］を受けて動作する。換言すれば、ビット１１に対応するセレクタＳＺＣ８は、ビット１１をビット列の最下位ビットではなく、ビット列の途中のビットとして扱う。
【０１３３】
ビット１００に対応するセレクタＬＺＣ８は、対応する２つのエンコーダＥＮＣ＿ＬＺＣから”０，１０”、”０，００”のＡＺ信号、位置信号ＬＺＣ［１：０］を受け、”０，０１１”のＡＺ信号、位置信号ＬＺＣ［２：０］を出力する。セレクタＳＺＣ１２８は、上位ビット側の位置信号ＬＺＣ［５：０］を選択し、２進数で”００１１０１１”の位置信号ＬＺＣ［６：０］を出力する。”００１１０１１”は、１０進数の”２７”であり、”１２７”を０番目として２７番目のビット（すなわち、ビット１００）に最初の”１”が出現したことを示す。なお、ＳＩＭＤモードでは、セレクタＳＺＣ１２８が出力する位置信号ＬＺＣ［６：０］の代わりに、上位側のセレクタＳＺＣ６４が出力する位置信号ＬＺＣ［５：０］が採用されてもよい。
【０１３４】
一方、ビット３９に対応するセレクタＬＺＣ８は、対応する２つのエンコーダＥＮＣ＿ＬＺＣから”０，００”、”０，００”のＡＺ信号、位置信号ＬＺＣ［１：０］を受け、”０，０００”のＡＺ信号、位置信号ＬＺＣ［２：０］を出力する。下位側のセレクタＳＺＣ６４は、２進数で”０１１０００”のカウンタ信号ＬＺＬ［５：０］を出力する。”０１１０００”は、１０進数の”２４”であり、”６３”を０番目として２４番目のビット（すなわち、ビット３９）に最初の”１”が出現したことを示す。
【０１３５】
図１７は、図５に示すリーディングゼロ予測回路１０２のＳＩＭＤモードでの動作の別の例を示す。図１４および図１６と同様の動作については、詳細な説明は省略する。
【０１３６】
図１７に示す例では、ゼロ予測部１０において、ビット１２７−７０に対応する予測器ＢＺＰ１は、”１”の予測値信号ＬＺＰを出力し、ビット６９に対応する予測器ＢＺＰ１、ＢＺＰ２は、”０”の予測値信号ＬＺＰを出力する。また、ビット６３−６に対応する予測器ＢＺＰ１、ＢＺＰ２は、”１”の予測値信号ＬＺＰを出力し、ビット５に対応する予測器ＢＺＰ１は、”０”の予測値信号ＬＺＰを出力する。そして、リーディングゼロ予測回路１０２は、加算器ＡＤＤ１が出力する２つのビット列においてビット６９とビット５のそれぞれに最初の”１”が出現することを予測する。
【０１３７】
エンコーダＥＮＣ＿ＬＺＣ２は、”１１０”の予測値信号ＬＺＰに基づいて、”１０”の位置信号ＬＺＣ［１：０］を出力する。図１２に示すセレクタＳＥＬ１は、エンコーダＥＮＣ＿ＬＺＣ２から出力される”１０”の位置信号ＬＺＣ［１：０］をセレクタＬＺＣ８に出力し、アンド回路ＡＮＤ１は、”０”のＡＺ信号を強制的にセレクタＬＺＣ８に出力する。これにより、図１６と同様に、ビット列の最下位ビットであるビット６９より下位側の位置信号ＬＺＣが選択されることを抑止することができ、リーディングゼロ予測回路１０２の誤動作を抑止することができる。
【０１３８】
ビット６９に対応するセレクタＬＺＣ８は、”０，１０”のＡＺ信号、位置信号ＬＺＣ［１：０］と、値が不明なＡＺ信号、位置信号ＬＺＣ［２：０］とを受ける。しかしながら、上位ビット側のＡＺ信号が”０”であるため、ビット６９に対応するセレクタＬＺＣ８は、上位側の位置信号ＬＺＣ［１：０］（＝”１０”）を選択し、”０，０１０”のＡＺ信号、位置信号ＬＺＣ［２：０］を出力する。セレクタＳＺＣ１２８は、上位ビット側の位置信号ＬＺＣ［５：０］を選択し、２進数で”０１１１０１０”の位置信号ＬＺＣ［６：０］を出力する。”０１１１０１０”は、１０進数の”５８”であり、”１２７”を０番目として５８番目のビット（すなわち、ビット６９）に最初の”１”が出現したことを示す。
【０１３９】
ビット５に対応するセレクタＬＺＣ８Ａは、エンコーダＥＮＣ＿ＬＺＣ１から”０，１０”のＡＺ信号、位置信号ＬＺＣ［１：０］を受け、”０，０１０”のＡＺ信号、位置信号ＬＺＣ［２：０］を出力する。下位側のセレクタＳＺＣ６４は、２進数で”１１１０１０”のカウンタ信号ＬＺＬ［５：０］を出力する。”１１１０１０”は、１０進数の”５８”であり、”６３”を０番目として５８番目のビット（すなわち、ビット５）に最初の”１”が出現したことを示す。
【０１４０】
なお、ビット１１に対応するセレクタＳＺＣ８の動作は、図１６と同様である。すなわち、ビット１１対応するセレクタＳＺＣ８は、ビット１１をビット列の最下位ビットではなく、ビット列の途中のビットとして扱う。
【０１４１】
図５に示すリーディングゼロ予測回路１０２の動作フローの例は、図４に示すリーディングゼロ予測回路１００の動作フローの例と同様である。すなわち、図４は、リーディングゼロ予測回路１０２の制御方法の一例を示す。図４において、リーディングゼロ予測回路１０２の動作フローでは、予測値信号ＬＺＰ１、ＬＺＰ２は、予測値信号ＬＺＰに置き換えられる。位置情報生成部３は、プライオリティセレクタ部３０に置き換えられる。プライオリティセレクタ部３０は、位置信号ＬＺＣ［６：０］または位置信号ＬＺＣ［５：０］、ＬＺＬ［５：０］とＡＺ信号とを出力する。
【０１４２】
さらに、ＳＩＭＤモードでの動作フローでは、図４において、エンコーダＥＮＣ１は、エンコーダＥＮＣ＿ＬＺＣに置き換えられ、エンコーダＥＮＣ２は、エンコーダＥＮＣ＿ＬＺＣ２に置き換えられる。置換部ＲＰＬは、セレクタＳＥＬ１に置き換えられ、マスク部ＭＳＫは、アンド回路ＡＮＤ１に置き換えられる。通常モードでの動作フローでは、図４において、エンコーダＥＮＣ１は、エンコーダＥＮＣ＿ＬＺＣに置き換えられ、エンコーダＥＮＣ２は、エンコーダＥＮＣ＿ＬＺＣ３に置き換えられる。置換部ＲＰＬは、セレクタＳＥＬ２に置き換えられ、マスク部ＭＳＫは、アンド回路ＡＮＤ２に置き換えられる。
【０１４３】
図１８および図１９は、他のリーディングゼロ予測回路における上位ビット側の回路ブロックと下位ビット側の回路ブロックとの一例を示す。図８および図９と同一または同様の要素については、詳細な説明は省略する。
【０１４４】
図１８に示す他のリーディングゼロ予測回路１２０の上位ビット側の回路ブロックにおいて、太枠で示すように、ＳＩＭＤモード中に使用されるセレクタＬＺＣ８Ａ、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４が、図８に対して追加される。また、図８に示すセレクタＳＥＬ１の代わりにセレクタＳＥＬ３が配置される。すなわち、リーディングゼロ予測回路１２０は、通常モード用のセレクタＬＺＣ８、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４に加えて、ＳＩＭＤモード専用のセレクタＬＺＣ８Ａ、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４を有する。セレクタＳＥＬ３は、通常モード中（ＳＩＭＤ＝”０”）、セレクタＬＺＣ１２８の出力を選択し、ＳＩＭＤモード中（ＳＩＭＤ＝”１”）、太枠で示すセレクタＳＥＬ６４の出力を選択する。
【０１４５】
図１９に示す他のリーディングゼロ予測回路１２０の下位ビット側の回路ブロックにおいて、太枠で示すように、通常動作モード中に使用されるセレクタＬＺＣ８、ＬＺＣ１６Ａ、ＬＺＣ３２、ＬＺＣ６４が、図９に対して追加される。すなわち、リーディングゼロ予測回路１２０は、通常モード専用のセレクタＬＺＣ８、ＬＺＣ１６Ａ、ＬＺＣ３２、ＬＺＣ６４を有する。また、図９に示すセレクタＳＥＬ２は削除される。なお、セレクタＬＺＣ１６Ａは、図１１に示すセレクタＬＺＣ８Ａの位置信号ＬＺＣＨ［１：０］、ＬＺＣ［１：０］を位置信号ＬＺＣＨ［２：０］、ＬＺＣ［２：０］に変更し、位置信号ＬＺＣ［２］を位置信号ＬＺＣ［３］に変更した回路である。
【０１４６】
図２０は、図１８の要部の一例を示す。図１２と同一または同様の要素については、詳細な説明は省略する。図２０では、セレクタＬＺＣ８Ａに接続されるエンコーダＥＮＣ＿ＬＺＣは、ビット７１、７０、６０に対応する予測器ＢＺＰ１から出力される予測値信号ＬＺＰ［３：１］と”１”の予測値信号ＬＺＰ［０］とを受けて動作する。そして、ＳＩＭＤモードでは、太枠で示すセレクタＬＺＣ８、ＬＺＣ１６Ａ、ＬＺＣ３２、ＬＺＣ６４にＡＺ信号と位置信号ＬＺＣとが順に伝達される。通常モードでは、セレクタＬＺＣ１２８から出力されるＡＺ信号および位置信号ＬＺＣ［６：０］がセレクタＳＥＬ１２により選択される。ＳＩＭＤモードでは、予測器ＢＺＰ２に対応する太枠のセレクタＬＺＣ６４から出力されるＡＺ信号および位置信号ＬＺＣ［５：０］がセレクタＳＥＬ１２により選択される。
【０１４７】
図２１は、図１９の要部の一例を示す。図１３と同一または同様の要素については、詳細な説明は省略する。図２１では、セレクタＬＺＣ１６Ａに対応するエンコーダＥＮＣ＿ＬＺＣは、ビット１１に対応する予測器ＢＺＰ１から出力される予測値信号ＬＺＰ［３］と”１１１”の予測値信号ＬＺＰ［２：０］とを受けて動作する。そして、通常モードでは、太枠で示すセレクタＬＺＣ８、ＬＺＣ１６Ａ、ＬＺＣ３２、ＬＺＣ６４にＡＺ信号と位置信号ＬＺＣとが順に伝達される。
【０１４８】
図１８および図１９に示すリーディングゼロ予測回路１２０は、図１４から図１７と同様に動作する。一方、図１８および図１９に示すリーディングゼロ予測回路１２０は、太枠で示すセレクタＬＺＣ８Ａ、ＬＺＣ１６等をＳＩＭＤモード用または通常モード用に専用に有するため、図８および図９に示すリーディングゼロ予測回路１０２に比べて回路規模が増大する。また、例えば、図１８に示すビット１２７に対応するセレクタＬＺＣ３２は、通常モード用とＳＩＭＤモード用のセレクタＬＺＣ６４の両方にＡＺ信号と位置信号ＬＺＣ［４：０］を出力する。このため、図８に比べて配線の負荷が増大し、信号遅延が増大してしまう。換言すれば、図８および図９に示すリーディングゼロ予測回路１０２では、配線の負荷が増大することを抑止することができ、信号遅延を抑止することができる。
【０１４９】
以上、図５から図１８に示す実施形態においても、図１から図４に示す実施形態の効果を得ることができる。例えば、図１２に示すように、エンコーダＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ２の出力がセレクタＳＥＬ１を介してセレクタＬＺＣ８に伝達され、エンコーダＥＮＣ＿ＬＺＣからのＡＺ信号がアンド回路ＡＮＤ１を介してセレクタＳＺＣ８に伝達される。図１３に示すように、エンコーダＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ３の出力がセレクタＳＥＬ２を介してセレクタＬＺＣ８に伝達され、エンコーダＥＮＣ＿ＬＺＣからのＡＺ信号がアンド回路ＡＮＤ２を介してセレクタＳＺＣ８に伝達される。これにより、動作モード毎に専用のセレクタＬＺＣ８Ａ、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４を有する図１８および図１９に示すリーディングゼロ予測回路１２０に比べて、回路規模を削減することができる。また、通常モードとＳＩＭＤモードとでセレクタＬＺＣ８等を共通に使用する場合に、アンド回路ＡＮＤ１、ＡＮＤ２を設けることで、末端より下位側の位置信号ＬＺＣが選択されることを抑止することができる。この結果、リーディングゼロ予測回路１００の誤動作を抑止することができる。また、末端のビットより下位側の位置信号ＬＺＣが選択されることを抑止することができ、リーディングゼロ予測回路１０２の誤動作を抑止することができる。
【０１５０】
さらに、図５から図１８に示す実施形態では、通常モードとＳＩＭＤモードとの両方で、動作モードの切り替えによりビットの途中（ビット１１またはビット６９）が末端になる場合にも、それぞれの動作モードで誤動作を抑止することができる。図１８および図１９に示すリーディングゼロ予測回路１２０に比べて、配線の負荷が増大することを抑止することができ、信号遅延を抑止することができる。さらに、プライオリティセレクタ部３０には、ＳＩＭＤ信号の論理が含まれないため、既存のプライオリティセレクタ部を流用することが可能になり、この場合、リーディングゼロ予測回路１０２の開発期間を短縮することができる。
【０１５１】
図２２および図２３は、リーディングゼロ予測回路の別の実施形態における上位ビット側の回路ブロックと下位ビット側の回路ブロックとの一例を示す。図８から図１３と同一または同様の要素については、詳細な説明は省略する。図２２および図２３に示すリーディングゼロ予測回路１０４は、ゼロ予測部１０、エンコーダ部２０Ａおよびプライオリティセレクタ部３０を有する。
【０１５２】
図２２において、エンコーダ部２０Ａは、図１２に示すビット６９に対応するエンコーダＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ２、セレクタＳＥＬ１およびアンド回路ＡＮＤ１の代わりに、エンコーダＥＮＣ＿ＬＺＣ４を有する。すなわち、エンコーダ部２０Ａは、通常モード（ＳＩＭＤ＝”０”）とＳＩＭＤモード（ＳＩＭＤ＝”１”）とで共用可能なエンコーダＥＮＣ＿ＬＺＣ４を有する。エンコーダＥＮＣ＿ＬＺＣ４は、図２６で説明するように、図１２に示すビット６９に対応するエンコーダＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ２、セレクタＳＥＬ１およびアンド回路ＡＮＤ１の機能を含む。エンコーダＥＮＣ＿ＬＺＣ４は、第３エンコーダの一例である。
【０１５３】
図２３において、エンコーダ部２０Ａは、図９に示すビット１１に対応するエンコーダＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ３、セレクタＳＥＬ２およびアンド回路ＡＮＤ２の代わりに、エンコーダＥＮＣ＿ＬＺＣ５をする。すなわち、エンコーダ部２０Ａは、通常モード（ＳＩＭＤ＝”０”）とＳＩＭＤモード（ＳＩＭＤ＝”１”）とで共用可能なエンコーダＥＮＣ＿ＬＺＣ５を有する。エンコーダＥＮＣ＿ＬＺＣ５は、図２６で説明するように、図１３に示すビット１１に対応するエンコーダＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ３、セレクタＳＥＬ２およびアンド回路ＡＮＤ２の機能を含む。エンコーダＥＮＣ＿ＬＺＣ５は、第３エンコーダの一例である。
【０１５４】
図２４は、図２２の要部の一例を示す。すなわち、図２４は、ＳＩＭＤモードにおいて使用される上位側の５９ビット（ビット１２７−６９）のうち、最下位のビット６９に対応する回路とその周辺の回路とを示す。図１２と同一または同様の要素については、詳細な説明は省略する。
【０１５５】
エンコーダＥＮＣ＿ＬＺＣ４は、ビット７１−６８に対応する予測器ＢＺＰ１から予測値信号ＬＺＰ［３：０］を受け、ビット６９に対応する予測器ＢＺＰ２から予測値信号ＬＺＰ２［１］を受け、ＡＺ信号および位置信号ＬＺＣ［１：０］を出力する。図２４は、図１２に示すビット６９に対応するエンコーダＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ２、セレクタＳＥＬ１およびアンド回路ＡＮＤ１の代わりに、エンコーダＥＮＣ＿ＬＺＣ４を有することを除き、図１２に示す構成と同じである。
【０１５６】
図２５は、図２３の要部の一例を示す。すなわち、図２５は、通常モードにおいて使用されるビット１２７−１１のうち、最下位のビット１１に対応する回路とその周辺の回路とを示す。図１３と同様の要素については、詳細な説明は省略する。
【０１５７】
エンコーダＥＮＣ＿ＬＺＣ５は、ビット１１−８に対応する予測器ＢＺＰ１から予測値信号ＬＺＰ［３：０］を受け、ビット１１に対応する予測器ＢＺＰ２から予測値信号ＬＺＰ２［３］を受け、ＡＺ信号および位置信号ＬＺＣ［１：０］を出力する。図２５は、図１３に示すビット１１に対応するエンコーダＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ３、セレクタＳＥＬ２およびアンド回路ＡＮＤ２の代わりに、エンコーダＥＮＣ＿ＬＺＣ５を有することを除き、図１３に示す構成と同じである。
【０１５８】
図２６は、図２４および図２５に示すエンコーダＥＮＣ＿ＬＺＣ４、ＥＮＣ＿ＬＺＣ５の一例を示す。真理値表に示すように、エンコーダＥＮＣ＿ＬＺＣ４は、ＳＩＭＤ信号が”０”の場合（通常モード）、図１０に示すエンコーダＥＮＣ＿ＬＺＣとして動作する。また、エンコーダＥＮＣ＿ＬＺＣ４は、ＳＩＭＤ信号が”１”の場合（ＳＩＭＤモード）、図１０に示すエンコーダＥＮＣ＿ＬＺＣ２と図１２に示すアンド回路ＡＮＤ１との機能を併せ持つ回路として動作する。なお、エンコーダＥＮＣ＿ＬＺＣ４は、入力される４ビットの予測値信号ＬＺＰ［３：０］の３ビット目ＬＺＰ［１］が、動作モードに応じてビット列の最下位になる場合に適用可能である。
【０１５９】
一方、真理値表に示すように、エンコーダＥＮＣ＿ＬＺＣ５は、ＳＩＭＤ信号が”０”の場合（通常モード）、図１０に示すエンコーダＥＮＣ＿ＬＺＣ３と図１３に示すアンド回路ＡＮＤ２との機能を併せ持つ回路として動作する。また、真理値表に示すように、エンコーダＥＮＣ＿ＬＺＣ５は、ＳＩＭＤ信号が”１”の場合（ＳＩＭＤモード）、図１０に示すエンコーダＥＮＣ＿ＬＺＣとして動作する。なお、エンコーダＥＮＣ＿ＬＺＣ５は、入力される４ビットの予測値信号ＬＺＰ［３：０］の１ビット目ＬＺＰ［３］が、動作モードに応じてビット列の最下位になる場合に適用可能である。
【０１６０】
エンコーダＥＮＣ＿ＬＺＣ４、ＥＮＣ＿ＬＺＣ５を用いることで、図１２および図１３に示すセレクタＳＥＬ１、ＳＥＬ２と、ＡＺ信号を操作するアンド回路ＡＮＤ１、ＡＮＤ２とを削除することができる。換言すれば、図１０に示すエンコーダＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ２の機能を併せ持つエンコーダＥＮＣ＿ＬＺＣ４は、論理を僅かに変更することで、セレクタＳＥＬ１とアンド回路ＡＮＤ１の機能を組み込むことができる。同様に、図１０に示すエンコーダＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ３の機能を併せ持つエンコーダＥＮＣ＿ＬＺＣ４は、論理を僅かに変更することで、セレクタＳＥＬ２とアンド回路ＡＮＤ２の機能を組み込むことができる。この結果、リーディングゼロ予測回路１０４の回路規模を、リーディングゼロ予測回路１０２の回路規模に比べて小さくすることができる。
【０１６１】
図２７は、動作モードに応じて予測値信号ＬＺＰ［３：０］の２ビット目ＬＺＰ［２］がビット列の最下位になる場合に適用可能なエンコーダの一例を示す。図２７において、符号ＭＯＤＥは、ＳＩＭＤ信号等のモード信号である。以下では、モード信号ＭＯＤＥは、ＭＯＤＥ信号とも称される。
【０１６２】
例えば、ＭＯＤＥ信号は、エンコーダＥＮＣ＿ＬＺＣ６に対応する４つの予測器ＢＺＰ１に供給される４つのビット対が、ビット列の最下位ビットでない動作モードにおいて、”０”に設定される。また、ＭＯＤＥ信号は、エンコーダＥＮＣ＿ＬＺＣ６に対応する４つの予測器ＢＺＰ１に供給される４つのビット対のうち上位から２番目のビット対が、ビット列の最下位ビットになる動作モードにおいて、”１”に設定される。
【０１６３】
予測値信号ＬＺＰ２［２］は、エンコーダＥＮＣ＿ＬＺＣ６に対応する４つの予測器ＢＺＰ１に供給される４つのビット対のうち上位から２番目のビット対を受ける予測器ＢＺＰ２（図１２）が出力する。真理値表に示すように、エンコーダＥＮＣ＿ＬＺＣ６は、ＭＯＤＥ信号が”０”の場合、図１０に示すエンコーダＥＮＣ＿ＬＺＣとして動作し、４つの予測値信号ＬＺＰ［３：０］に基づいて、ＡＺ信号および位置信号ＬＺＣ［１：０］を生成する。また、エンコーダＥＮＣ＿ＬＺＣ６は、ＭＯＤＥ信号が”１”の場合、２つの予測値信号ＬＺＰ［３：２］に基づいて、ＡＺ信号および位置信号ＬＺＣ［１：０］を生成する。
【０１６４】
例えば、４つの予測器ＢＺＰ１に供給される４つのビット対のうち、動作モードに応じてビット列の最下位になるビット対に対応して、エンコーダＥＮＣ＿ＬＺＣ４、ＥＮＣ＿ＬＺＣ５、ＥＮＣ＿ＬＺＣ６のいずれかが選択的に配置される。これにより、様々な長さのビット対において、”１”の出現を予測するリーディングゼロ予測回路を構築することができる。
【０１６５】
図２２および図２３に示すリーディングゼロ予測回路１０４の動作フローの例は、図４に示すリーディングゼロ予測回路１００の動作フローの例と同様である。すなわち、図４は、リーディングゼロ予測回路１０４の制御方法の一例を示す。図４をリーディングゼロ予測回路１０４の動作フローに変更する場合、予測値信号ＬＺＰ１は、予測値信号ＬＺＰに置き換えられ、予測値信号ＬＺＰ２は、予測値信号ＬＺＰ２［１］またはＬＺＰ２［３］に置き換えられる。位置情報生成部３は、プライオリティセレクタ部３０に置き換えられる。プライオリティセレクタ部３０は、位置信号ＬＺＣ［６：０］または位置信号ＬＺＣ［５：０］、ＬＺＬ［５：０］とＡＺ信号とを出力する。
【０１６６】
さらに、リーディングゼロ予測回路１０４では、図４に示すエンコーダＥＮＣ１、ＥＮＣ２、置換部ＲＰＬおよびマスク部ＭＳＫは、エンコーダＥＮＣ＿ＬＺＣ４、ＥＮＣ＿ＬＺＣ５のそれぞれに含まれる。このため、図４のステップＳ１８、Ｓ２０、Ｓ２２、Ｓ２４に記載された要素の名称は、エンコーダＥＮＣ＿ＬＺＣ４、ＥＮＣ＿ＬＺＣ５内の論理回路の名称に置き換えられる。
【０１６７】
以上、図２２から図２７に示す実施形態においても、図１から図１８に示す実施形態と同様の効果を得ることができる。例えば、動作モード毎に専用のセレクタＬＺＣ８Ａ、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４を有する図１８および図１９に示すリーディングゼロ予測回路１２０に比べて、回路規模を削減することができる。また、データ対Ａ、Ｂの末端より下位側の位置信号ＬＺＣが選択されることを抑止することができ、リーディングゼロ予測回路１０４の誤動作を抑止することができる。また、プライオリティセレクタ部３０には、ＳＩＭＤ信号の論理が含まれないため、既存のプライオリティセレクタ部を流用することが可能になり、リーディングゼロ予測回路１０４の開発期間を短縮することができる。
【０１６８】
さらに、図２２から図２７に示す実施形態では、以下に示す効果を得ることができる。すなわち、図１２および図１３に示すセレクタＳＥＬ１、ＳＥＬ２とアンド回路ＡＮＤ１、ＡＮＤ２とを削除することができ、リーディングゼロ予測回路１０４の回路規模を、リーディングゼロ予測回路１０２の回路規模に比べて小さくすることができる。
【０１６９】
図２８および図２９は、リーディングゼロ予測回路の別の実施形態における上位ビット側の回路ブロックと下位ビット側の回路ブロックとの一例を示す。図８から図１３と同一または同様の要素については、詳細な説明は省略する。図２８および図２９に示すリーディングゼロ予測回路１０６は、ゼロ予測部１０、エンコーダ部２０Ｂおよびプライオリティセレクタ部３０Ｂを有する。プライオリティセレクタ部３０Ｂは、位置情報生成部の一例である。なお、図２８および図２９では、図３０での識別を容易にするため、エンコーダＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ２、ＥＮＣ＿ＬＺＣ３から出力される位置信号ＬＺＣの名称が、図１２及び図１３に記載した名称と相違する。
【０１７０】
図２８において、エンコーダ部２０Ｂは、アンド回路ＡＮＤ１およびセレクタＳＥＬ１を持たないことを除き、図１２に示すエンコーダ部２０と同様である。プライオリティセレクタ部３０Ｂは、図１２に示すビット６９に対応するセレクタＬＺＣ８の代わりに、ＳＩＭＤ信号を受けて動作するセレクタＬＺＣ８ＢＨを有することを除き、図１２に示すプライオリティセレクタ部３０と同様である。リーディングゼロ予測回路１０６における上位ビット側の回路ブロックのその他の構成は、図１２と同様である。セレクタＬＺＣ８ＢＨの例は、図３０に示される。
【０１７１】
図２９において、エンコーダ部２０Ｂは、アンド回路ＡＮＤ２およびセレクタＳＥＬ２を持たないことを除き、図１３に示すエンコーダ部２０と同様である。プライオリティセレクタ部３０Ｂは、図１３に示すビット１１に対応するセレクタＬＺＣ８の代わりに、ＳＩＭＤ信号を受けて動作するセレクタＬＺＣ８ＢＬを有することを除き、図１３に示すプライオリティセレクタ部３０と同様である。リーディングゼロ予測回路１０６における下位ビット側の回路ブロックのその他の構成は、図１３と同様である。セレクタＬＺＣ８ＢＬの例は、図３０に示される。
【０１７２】
図３０は、図２８および図２９に示すセレクタＬＺＣ８ＢＨ、ＬＺＣ８ＢＬの一例を示す。セレクタＬＺＣ８ＢＨは、セレクタＳＥＬＢＨ１、ＳＥＬＢＨ２、インバータＩＶ、アンド回路ＡＮＤ３、ＡＮＤ４およびバッファＢＵＦを有する。セレクタＬＺＣ８ＢＬは、セレクタＳＥＬＢＬ１、ＳＥＬＢＬ２、アンド回路ＡＮＤ４およびバッファＢＵＦを有する。
【０１７３】
セレクタＳＥＬＢＨ１、ＳＥＬＢＨ２は、ＳＩＭＤモード中、ビット対６９に対応するエンコーダＥＮＣ＿ＬＺＣが出力する位置信号ＬＺＣＨ［１：０］を位置信号ＬＺＣ２Ｈ［１：０］に置き換える置換部の一例である。セレクタＳＥＬＢＬ１、ＳＥＬＢＬ２は、通常モード中、ビット対１１に対応するエンコーダＥＮＣ＿ＬＺＣが出力する位置信号ＬＺＣＬ［１：０］を位置信号ＬＺＣ２Ｌ［１：０］に置き換える置換部の一例である。
【０１７４】
セレクタＬＺＣ８ＢＨにおいて、アンド回路ＡＮＤ３は、ＳＩＭＤ信号が”０”の場合、ゼロフラグ値ＡＺ＿Ｈをゼロフラグ値ＡＺ＿Ｈ１として出力する。アンド回路ＡＮＤ３は、ＳＩＭＤ信号が”１”の場合、ゼロフラグ値ＡＺ＿Ｈの値に拘わらず、”０”のゼロフラグ値ＡＺ＿Ｈ１を出力する。アンド回路ＡＮＤ４は、ＳＩＭＤ信号が”０”の場合、ゼロフラグ値ＡＺ＿Ｈ１、ＡＺ＿Ｌに応じたＡＺ信号を出力する。アンド回路ＡＮＤ４は、ＳＩＭＤ信号が”１”の場合、ゼロフラグ値ＡＺ＿Ｈ、ＡＺ＿Ｌの値に拘わらず、”０”のＡＺ信号を出力する。バッファＢＵＦは、ゼロフラグ値ＡＺ＿Ｈ１を位置信号ＬＺＣ［２］として出力する。アンド回路ＡＮＤ４は、ＳＩＭＤモード中、ビット対６９に対応するエンコーダＥＮＣ＿ＬＺＣが生成するＡＺ信号を”０”に設定するマスク部の一例である。
【０１７５】
セレクタＳＥＬＢＨ１は、通常モード中（ＳＩＭＤ＝”０”）、位置信号ＬＺＣＨ［１：０］を選択し、ＳＩＭＤモード中（ＳＩＭＤ＝”１”）、位置信号ＬＺＣ２Ｈ［１：０］を選択する。セレクタＳＥＬＢＨ２は、ゼロフラグ値ＡＺ＿Ｈ１が”０”の場合、セレクタＳＥＬＢＨ１の出力を選択し、ゼロフラグ値ＡＺ＿Ｈ１が”１”の場合、位置信号ＬＺＣＬ［１：０］を選択し、選択した値を位置信号ＬＺＣ［１：０］として出力する。これにより、セレクタＬＺＣ８ＢＨは、通常モード中、ビット７１−６４に対応する予測器ＢＺＰ１が出力する予測値信号ＬＺＰに基づいて、ＡＺ信号および位置信号ＬＺＣ［２：０］を生成することができる。また、セレクタＬＺＣ８ＢＨは、ＳＩＭＤモード中、ビット７１−６９に対応する予測器ＢＺＰ１、ＢＺＰ２が出力する予測値信号ＬＺＰに基づいて、ＡＺ信号および位置信号ＬＺＣ［２：０］を生成することができる。
【０１７６】
セレクタＬＺＣ８ＢＬにおいて、アンド回路ＡＮＤ４は、通常モード中、ゼロフラグ値ＡＺ＿Ｈ、ＡＺ＿Ｌの値に拘わらず、”０”のＡＺ信号を出力し、ＳＩＭＤモード中、ゼロフラグ値ＡＺ＿Ｈ、ＡＺ＿Ｌに基づいてＡＺ信号を生成する。バッファＢＵＦは、ゼロフラグ値ＡＺ＿Ｈを位置信号ＬＺＣ［２］として出力する。セレクタＬＺＣ８ＢＬのアンド回路ＡＮＤ４は、通常モード中、ビット対１１に対応するエンコーダＥＮＣ＿ＬＺＣが生成するＡＺ信号を”０”に設定するマスク部の一例である。
【０１７７】
セレクタＳＥＬＢＬ１は、通常モード中（ＳＩＭＤ＝”０”）、位置信号ＬＺＣ２Ｌ［１：０］を選択し、ＳＩＭＤモード中（ＳＩＭＤ＝”１”）、位置信号ＬＺＣＬ［１：０］を選択する。セレクタＳＥＬＢＬ２は、ゼロフラグ値ＡＺ＿Ｈが”０”の場合、位置信号ＬＺＣＨ［１：０］を選択し、ゼロフラグ値ＡＺ＿Ｈが”１”の場合、セレクタＳＥＬＢＬ１の出力を選択し、選択した値を位置信号ＬＺＣ［１：０］として出力する。これにより、セレクタＬＺＣ８ＢＬは、通常モード中、ビット１５−１１に対応する予測器ＢＺＰ１、ＢＺＰ２が出力する予測値信号ＬＺＰに基づいて、ＡＺ信号および位置信号ＬＺＣ［２：０］を生成することができる。また、セレクタＬＺＣ８ＢＨは、ＳＩＭＤモード中、ビット１５−８に対応する予測器ＢＺＰ１が出力する予測値信号ＬＺＰに基づいて、ＡＺ信号および位置信号ＬＺＣ［２：０］を生成することができる。
【０１７８】
なお、セレクタＳＥＬ８ＢＨにおいてセレクタＳＥＬＢＨ１、ＳＥＬＢＨ２で選択するビット数を増やすことで、ビット６９に対応するセレクタＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４またはＬＺＣ１２８のいずれかと置き換え可能なセレクタを構築することができる。また、セレクタＳＥＬ８ＢＬにおいてセレクタＳＥＬＢＬ１、ＳＥＬＢＬ２で選択するビット数を増やすことで、ビット１１に対応するセレクタＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４またはＬＺＣ１２８のいずれかと置き換え可能なセレクタを構築することができる。
【０１７９】
図３１は、図３０に示すセレクタＬＺＣ８ＢＨ、ＬＺＣ８ＢＬの代わりに使用可能なセレクタＬＺＣ８ＣＨ、ＬＺＣ８ＣＬの一例を示す。セレクタＬＺＣ８ＣＨは、図３０に示すセレクタＳＥＬＢＨ１、ＳＥＬＢＨ２の代わりに、ＳＩＭＤ信号およびゼロフラグ値ＡＺ＿Ｈを受けて動作するセレクタＳＥＬＣＨを有することを除き、図３０に示すセレクタＬＺＣ８ＢＨと同じである。セレクタＳＥＬＣＨの機能は、図３０に示すセレクタＳＥＬＢＨ１、ＳＥＬＢＨ２の機能と同様である。
【０１８０】
セレクタＬＺＣ８ＣＬは、図３０に示すセレクタＳＥＬＢＬ１、ＳＥＬＢＬ２の代わりに、ＳＩＭＤ信号およびゼロフラグ値ＡＺ＿Ｈを受けて動作するセレクタＳＥＬＣＬを有することを除き、図３０に示すセレクタＬＺＣ８ＢＬと同じである。セレクタＳＥＬＣＬの機能は、図３０に示すセレクタＳＥＬＢＬ１、ＳＥＬＢＬ２の機能と同様である。
【０１８１】
図２８および図２９に示すリーディングゼロ予測回路１０６の動作フローの例は、図４に示すリーディングゼロ予測回路１００の動作フローの例と同様である。すなわち、図４は、リーディングゼロ予測回路１０６の制御方法の一例を示す。図４をリーディングゼロ予測回路１０６の動作フローに変更する場合、予測値信号ＬＺＰ１、ＬＺＰ２は、予測値信号ＬＺＰに置き換えられる。位置情報生成部３は、プライオリティセレクタ部３０Ｂに置き換えられる。プライオリティセレクタ部３０Ｂは、位置信号ＬＺＣ［６：０］または位置信号ＬＺＣ［５：０］、ＬＺＬ［５：０］とＡＺ信号とを出力する。
【０１８２】
さらに、リーディングゼロ予測回路１０６では、図４に示す置換部ＲＰＬおよびマスク部ＭＳＫは、セレクタＬＺＣ８ＢＨ、ＬＺＣ８ＢＬのそれぞれに含まれる。このため、図４において、置換部ＲＰＬは、図３０に示すセレクタＳＥＬＢＨ１、ＳＥＬＢＨ２またはセレクタＳＥＬＢＬ１、ＳＥＬＢＬ２に置き換えられ、マスク部ＭＳＫは、図３０に示すアンド回路ＡＮＤ４に置き換えられる。
【０１８３】
以上、図２８から図３１に示す実施形態においても、図１から図１８に示す実施形態と同様の効果を得ることができる。例えば、動作モード毎に専用のセレクタＬＺＣ８Ａ、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４を有する図１８および図１９に示すリーディングゼロ予測回路１２０に比べて、回路規模を削減することができる。また、データ対Ａ、Ｂの末端より下位側の位置信号ＬＺＣが選択されることを抑止することができ、リーディングゼロ予測回路１０６の誤動作を抑止することができる。
【０１８４】
図３２は、リーディングゼロ予測回路の別の実施形態における上位ビット側の回路ブロックの一例を示す。図１２と同一または同様の要素については、詳細な説明は省略する。図３２に示すリーディングゼロ予測回路１０８は、ゼロ予測部１０、エンコーダ部２０Ｃおよびプライオリティセレクタ部３０Ｃを有する。プライオリティセレクタ部３０Ｃは、位置情報生成部の一例である。なお、リーディングゼロ予測回路１０８における下位ビット側の回路ブロックは、図１３、図２５または図２９に示す回路ブロックのいずれかが使用される。この際、図２９に示すセレクタＬＺＣ８ＢＬの代わりに、図３１に示すセレクタＬＺＣ８ＣＬが使用されてもよい。
【０１８５】
エンコーダ部２０Ｃは、セレクタＳＥＬ１を持たないことを除き、図１２に示すエンコーダ部２０と同じである。プライオリティセレクタ部３０Ｃは、ビット７２より上位のビットに対応するエンコーダＥＮＣ＿ＬＺＣから出力されるＡＺ信号を受けるアンド回路ＡＮＤ５と、アンド回路ＡＮＤ５の出力およびＳＩＭＤ信号を受けるアンド回路ＡＮＤ６とを有する。また、プライオリティセレクタ部３０Ｃは、セレクタＬＺＣ１２８から出力される位置信号ＬＺＣ［１：０］とエンコーダＥＮＣ＿ＬＺＣ２から出力される位置信号ＬＺＣ［１：０］のいずれかを選択するセレクタＳＥＬ１を有する。プライオリティセレクタ部３０Ｃのその他の構成は、例えば、図１２に示すプライオリティセレクタ部３０の上位ビット側の回路ブロックと同様である。
【０１８６】
アンド回路ＡＮＤ５は、ビット６９に対応するエンコーダＥＮＣ＿ＬＺＣ８よりも上位のエンコーダＥＮＣ＿ＬＺＣが出力するＡＺ信号が全て”１”の場合、”１”を出力する。アンド回路ＡＮＤ６は、ＳＩＭＤモード（ＳＩＭＤ＝”１”）において、アンド回路ＡＮＤ５が出力する論理をセレクタＳＥＬ１に出力し、通常モード（ＳＩＭＤ＝”０”）において、”０”をセレクタＳＥＬ１に出力する。セレクタＳＥＬ１は、アンド回路ＡＮＤ６の出力が”０”の場合、セレクタＬＺＣ１２８が出力する位置信号ＬＺＣ［１：０］を選択し、アンド回路ＡＮＤ６の出力が”０”の場合、エンコーダＥＮＣ＿ＬＺＣ２から出力される位置信号ＬＺＣ［１：０］を選択する。
【０１８７】
ビット６９に対応するエンコーダＥＮＣ＿ＬＺＣ２が出力する位置信号ＬＺＣ［１：０］が位置信号ＬＺＣ［６：０]の一部に採用される条件は、図１７に示した動作と同様に、ＳＩＭＤモードにおいてビット６９より上位側の全てのＡＺ信号が”１”の場合である。一方、ビット６９より上位側のＡＺ信号のいずれかが”０”の場合、図１６に示したように、ビット６９より上位側のエンコーダＥＮＣ＿ＬＺＣから出力される位置信号ＬＺＣ［１：０］が選択されるため、エンコーダＥＮＣ＿ＬＺＣ２の出力は採用されない。
【０１８８】
また、位置信号ＬＺＣ［１：０］以外のビットＬＺＣ［６：２］は、ビット１２７−６３に対応するＡＺ信号のいずれが”０”になるかに拘わらず、セレクタＬＺＣ８、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４、ＬＺＣ１２８により順次に１ビットずつ生成される。このため、セレクタＳＥＬ１は、位置信号ＬＺＣ［６：２]を除く位置信号ＬＺＣ［１：０］を選択すればよい。したがって、セレクタＳＥＬ１の回路規模を、図２０に示すセレクタＳＥＬ３の回路規模に比べて小さくすることができる。
【０１８９】
プライオリティセレクタ部３０Ｃは、ＳＩＭＤモードにおいて上記条件が一致した場合、エンコーダＥＮＣ＿ＬＺＣ２が出力する位置信号ＬＺＣ［１：０］をセレクタＳＥＬ１により選択させる。ＳＩＭＤモードにおいて上記条件が一致せず、アンド回路ＡＮＤ５に供給されるＡＺ信号の少なくともいずれかが”０”の場合、プライオリティセレクタ部３０Ｃは、セレクタＬＺＣ１２８が出力する位置信号ＬＺＣ［１：０］をセレクタＳＥＬ１により選択させる。すなわち、ＳＩＭＤモードにおいて、ビット７２より上位のビットの演算結果の予測が”１”である場合、セレクタＳＥＬ１は、セレクタＬＺＣ１２８が出力する位置信号ＬＺＣ［１：０］を選択する。一方、通常モード（ＳＩＭＤ＝”０”）では、セレクタＳＥＬ１は、セレクタＬＺＣ１２８が出力する位置信号ＬＺＣ［１：０］を選択するため、図１４および図１５に示した動作が可能になる。
【０１９０】
図３２に示すリーディングゼロ予測回路１０８の動作フローの例は、図４に示すリーディングゼロ予測回路１００の動作フローの例と同様である。すなわち、図４は、リーディングゼロ予測回路１０８の制御方法の一例を示す。図４をリーディングゼロ予測回路１０８の動作フローに変更する場合、予測値信号ＬＺＰ１、ＬＺＰ２は、予測値信号ＬＺＰに置き換えられる。位置情報生成部３は、プライオリティセレクタ部３０Ｃに置き換えられる。プライオリティセレクタ部３０Ｃは、位置信号ＬＺＣ［６：０］または位置信号ＬＺＣ［５：０］、ＬＺＬ［５：０］（図示せず）とＡＺ信号とを出力する。さらに、ＳＩＭＤモードでの動作フローでは、図４において、置換部ＲＰＬは、セレクタＳＥＬ１に置き換えられ、マスク部ＭＳＫは、アンド回路ＡＮＤ１に置き換えられる。
【０１９１】
例えば、リーディングゼロ予測回路１０８における下位ビット側の回路ブロックに図１３が採用される場合、通常モードでの動作フローは、図５に示すリーディングゼロ予測回路１０２での説明と同様である。すなわち、図４において、エンコーダＥＮＣ１は、図１３に示すエンコーダＥＮＣ＿ＬＺＣに置き換えられ、エンコーダＥＮＣ２は、図１３に示すエンコーダＥＮＣ＿ＬＺＣ３に置き換えられる。図４において、置換部ＲＰＬは、図１３に示すセレクタＳＥＬ２に置き換えられ、マスク部ＭＳＫは、図１３に示すアンド回路ＡＮＤ２に置き換えられる。
【０１９２】
以上、図３２に示す実施形態においても、図１から図１８に示す実施形態と同様の効果を得ることができる。例えば、動作モード毎に専用のセレクタＬＺＣ８Ａ、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４を有する図１８および図１９に示すリーディングゼロ予測回路１２０に比べて、回路規模を削減することができる。また、データ対Ａ、Ｂの末端より下位側の位置信号ＬＺＣが選択されることを抑止することができ、リーディングゼロ予測回路１０８の誤動作を抑止することができる。
【０１９３】
さらに、図３２に示す実施形態では、セレクタＬＺＣ１２８の出力に接続されるセレクタＳＬＥ１は、セレクタＬＺＣ１２８またはエンコーダＥＮＣ＿ＬＺＣ２から２ビットの位置信号ＬＺＣ［１：０］を選択すればよい。これにより、プライオリティセレクタ部３０Ｃに設けられるセレクタＳＥＬ１の回路規模を、図２０に示すセレクタＳＥＬ３の回路規模に比べて小さくすることができる。
【０１９４】
図３３は、リーディングゼロ予測回路の別の実施形態を示す。図８、図１２および図３２と同一または同様の要素については、詳細な説明は省略する。図３３に示すリーディングゼロ予測回路１１０は、ゼロ予測部１０、エンコーダ部２０Ｄおよびプライオリティセレクタ部３０Ｄを有する。プライオリティセレクタ部３０Ｄは、位置情報生成部の一例である。なお、リーディングゼロ予測回路１１０における下位ビット側の回路ブロックは、図１３、図２５または図２９に示す回路ブロックが使用される。この際、図２９に示す回路ブロックでは、セレクタＬＺＣ８ＢＬの代わりに、図３１に示すセレクタＬＺＣ８ＣＬが使用されてもよい。
【０１９５】
図１１に示したように、セレクタＬＺＣ８、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４、ＬＺＣ１２８は、ゼロフラグ値ＡＺ＿Ｈ、ＡＺ＿Ｌのアンド論理をＡＺ信号として出力する。すなわち、後段側のセレクタＬＺＣ（例えば、ＬＺＣ１６）は、前段側のセレクタＬＺＣ（例えば、ＬＺＣ８）が出力するＡＺ信号またはエンコーダＥＮＣ＿ＬＺＣが出力するＡＺ信号のアンド演算によりまとめられたＡＺ信号を生成する。このため、エンコーダＥＮＣ＿ＬＺＣからのＡＺ信号を使用する代わりに、セレクタＬＺＣ８、ＬＺＣ１６、ＬＺＣ３２からのＡＺ信号を使用することが可能である。
【０１９６】
そこで、プライオリティセレクタ部３０Ｄは、図３２に示すアンド回路ＡＮＤ５、ＡＮＤ６の代わりに、アンド回路ＡＮＤ７を有する。プライオリティセレクタ部３０Ｄにおいて、アンド回路ＡＮＤ７を除く構成は、図３２に示すプライオリティセレクタ部３０Ｃと同様である。
【０１９７】
アンド回路ＡＮＤ７は、ビット１２７からビット９６に対応するセレクタＬＺＣ３２からのＡＺ信号と、ビット９５からビット８０に対応するセレクタＬＺＣ１６からのＡＺ信号とを受ける。また、アンド回路ＡＮＤ７は、ビット７９からビット７２に対応するセレクタＬＺＣ８からのＡＺ信号と、ＳＩＭＤ信号とを受ける。後段側のセレクタＬＺＣほどＡＺ信号の論理がまとめられているため、後段側のセレクタＬＺＣから出力されるＡＺ信号を使用するほど、アンド回路ＡＮＤ７の入力数を削減することができ、アンド回路ＡＮＤ７の回路規模を削減することができる。また、エンコーダ部２０Ｄからアンド回路ＡＮＤ７にＡＺ信号を供給しなくてよいため、ＡＺ信号の遅延量を小さくすることができる。
【０１９８】
エンコーダ部２０Ｄは、図３２に示すビット６９に対応するエンコーダＥＮＣ＿ＬＺＣとアンド回路ＡＮＤ１の代わりにエンコーダＥＮＣ＿ＬＺＣ８を有することを除き、図３２に示すエンコーダ部２０Ｃと同様である。エンコーダＥＮＣ＿ＬＺＣ８の例は、図３４に示される。なお、エンコーダ部２０Ｄの代わりに図３２に示すエンコーダ部２０が配置されてもよい。
【０１９９】
図３４は、図３２に示すエンコーダＥＮＣ＿ＬＺＣ８の一例を示す。エンコーダＥＮＣ＿ＬＺＣ８は、ＡＺ信号を出力するアンド回路ＡＮＤ８にＳＩＭＤ信号の論理を反転した信号を供給することを除き、図１０に示すエンコーダＥＮＣ＿ＬＺＣと同様である。すなわち、エンコーダＥＮＣ＿ＬＺＣ８は、図３２に示すアンド回路ＡＮＤ１の機能を含む。
【０２００】
エンコーダＥＮＣ＿ＬＺＣ８の通常モード（ＳＩＭＤ＝”０”）での動作は、図１０に示すエンコーダＥＮＣ＿ＬＺＣと同じである。エンコーダＥＮＣ＿ＬＺＣ８のＳＩＭＤモード（ＳＩＭＤ＝”１”）での動作は、ＡＺ信号が常に”０”に設定されることを除き、図１０に示すエンコーダＥＮＣ＿ＬＺＣと同じである。
【０２０１】
図３３に示すリーディングゼロ予測回路１１０の動作フローの例は、図４に示すリーディングゼロ予測回路１００の動作フローの例と同様である。すなわち、図４は、リーディングゼロ予測回路１１０の制御方法の一例を示す。図４をリーディングゼロ予測回路１１０の動作フローに変更する場合、予測値信号ＬＺＰ１、ＬＺＰ２は、予測値信号ＬＺＰに置き換えられる。位置情報生成部３は、プライオリティセレクタ部３０Ｄに置き換えられる。プライオリティセレクタ部３０Ｄは、位置信号ＬＺＣ［６：０］または位置信号ＬＺＣ［５：０］、ＬＺＬ［５：０］とＡＺ信号とを出力する。
【０２０２】
さらに、ＳＩＭＤモードでの動作フローでは、図４において、置換部ＲＰＬは、セレクタＳＥＬ１に置き換えられ、マスク部ＭＳＫは、図３４に示すアンド回路ＡＮＤ８に置き換えられる。例えば、リーディングゼロ予測回路１０８における下位ビット側の回路ブロックに図１３が採用される場合、通常モードでの動作フローは、図５に示すリーディングゼロ予測回路１０２での説明と同様である。すなわち、図４において、エンコーダＥＮＣ１は、図１３に示すエンコーダＥＮＣ＿ＬＺＣに置き換えられ、エンコーダＥＮＣ２は、図１３に示すエンコーダＥＮＣ＿ＬＺＣ３に置き換えられる。図４において、置換部ＲＰＬは、図１３に示すセレクタＳＥＬ２に置き換えられ、マスク部ＭＳＫは、図１３に示すアンド回路ＡＮＤ２に置き換えられる。
【０２０３】
以上、図３３および図３４に示す実施形態においても、図１から図１８および図３２に示す実施形態と同様の効果を得ることができる。例えば、動作モード毎に専用のセレクタＬＺＣ８Ａ、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４を有する図１８および図１９に示すリーディングゼロ予測回路１２０に比べて、回路規模を削減することができる。また、データ対Ａ、Ｂの末端より下位側の位置信号ＬＺＣが選択されることを抑止することができ、リーディングゼロ予測回路１０８の誤動作を抑止することができる。また、プライオリティセレクタ部３０Ｄに設けられるセレクタＳＥＬ１の回路規模を、図２０に示すセレクタＳＥＬ３の回路規模に比べて小さくすることができる。
【０２０４】
さらに、図３３および図３４に示す実施形態では、エンコーダＥＮＣ＿ＬＺＣからのＡＺ信号の代わりに、セレクタＬＺＣ８、ＬＺＣ１６、ＬＺＣ３２からのＡＺ信号のアンド論理をとることで、アンド回路ＡＮＤ７の入力数を削減することができる。これにより、アンド回路ＡＮＤ７の回路規模を削減することができる。また、エンコーダ部２０Ｄからアンド回路ＡＮＤ７にＡＺ信号を供給しなくてよいため、ＡＺ信号の遅延量を小さくすることができる。
【０２０５】
図３５は、リーディングゼロ予測回路の別の実施形態を示す。図８、図１２、図３２および図３３と同一または同様の要素については、詳細な説明は省略する。図３５に示すリーディングゼロ予測回路１１２は、ゼロ予測部１０、エンコーダ部２０Ｄおよびプライオリティセレクタ部３０Ｅを有する。プライオリティセレクタ部３０Ｅは、位置情報生成部の一例である。なお、リーディングゼロ予測回路１１２における下位ビット側の回路ブロックは、図１３、図２５または図２９に示す回路ブロックが使用される。この際、図２９に示す回路ブロックでは、セレクタＬＺＣ８ＢＬの代わりに、図３１に示すセレクタＬＺＣ８ＣＬが使用されてもよい。
【０２０６】
図３５では、図３２に示すアンド回路ＡＮＤ７の代わりに、ビット６９に対応するセレクタＬＺＣ８、ＬＺＣ１６からのＡＺ信号とＳＩＭＤ信号とを受け、セレクタＳＥＬ１の動作を制御する信号を生成するアンド回路ＡＮＤ９が配置される。セレクタＳＥＬ１は、プライオリティセレクタ部３０Ｅにおいて、ビット６９に対応するセレクタＬＺＣ３２の出力に接続される。
【０２０７】
なお、セレクタＳＥＬ１は、プライオリティセレクタ部３０Ｅにおいて、ビット６９に対応するセレクタＬＺＣ１６またはセレクタＬＺＣ８の出力に接続されてもよい。すなわち、セレクタＳＥＬ１は、エンコーダＥＮＣ＿ＬＺＣ２に対応するセレクタＬＺＣ８、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４のいずれかの出力に接続されればよい。そして、エンコーダＥＮＣ＿ＬＺＣ２が出力する位置信号ＬＺＣ［１：０］は、エンコーダＥＮＣ＿ＬＺＣ２に対応するセレクタＬＺＣ８、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４のいずれかの出力に接続されたセレクタＳＥＬ１で選択されればよい。
【０２０８】
ここで、例えば、ビット１２７−９６に対応するセレクタＬＺＣ３２（図３５の上側）が出力するＡＺ信号が”１”の場合、セレクタＬＺＣ６４は、セレクタＳＥＬ１の出力を含む下位ビット側の位置信号ＬＺＣ［４：０］を選択する。このため、セレクタＳＥＬ１の切り替えに使用するＡＺ信号は、セレクタＳＥＬ１の入力に接続されるセレクタＬＺＣ（ＬＺＣ１６、ＬＺＣ３２等）が出力するＡＺ信号を使用すれば十分である。
【０２０９】
例えば、セレクタＳＥＬ１をセレクタＬＺＣ３２の出力に接続する場合、ビット１２７−９６に対応するＡＳ信号の論理はアンド回路ＡＮＤ９に入力されない。このため、アンド回路ＡＮＤ９の入力数をアンド回路ＡＮＤ７の入力数に比べて削減することができる。さらに、アンド回路ＡＮＤ９は、ビット１２７−９６に対応するセレクタＬＺＣ３２が出力するＡＺ信号を受けないため、アンド回路ＡＮＤ９に供給されるＡＳ信号の中での最大の配線長を図３３に比べて短くすることができる。配線長が短くなることで配線負荷が削減されるため、アンド回路ＡＮＤ９からセレクタＳＥＬ１に出力される制御信号の生成タイミングの遅延量を、図３３に比べて小さくすることができる。
【０２１０】
図３５に示すリーディングゼロ予測回路１１２の動作フローの例は、図４に示すリーディングゼロ予測回路１００の動作フローの例と同様である。すなわち、図４は、リーディングゼロ予測回路１１２の制御方法の一例を示す。図４をリーディングゼロ予測回路１１２の動作フローに変更する場合、予測値信号ＬＺＰ１、ＬＺＰ２は、予測値信号ＬＺＰに置き換えられる。位置情報生成部３は、プライオリティセレクタ部３０Ｄに置き換えられる。プライオリティセレクタ部３０Ｄは、位置信号ＬＺＣ［６：０］または位置信号ＬＺＣ［５：０］、ＬＺＬ［５：０］を出力する。
【０２１１】
さらに、ＳＩＭＤモードでの動作フローでは、図４において、置換部ＲＰＬは、セレクタＳＥＬ１に置き換えられ、マスク部ＭＳＫは、エンコーダＥＮＣ＿ＬＺＣ８に含まれるアンド回路ＡＮＤ８（図３４）に置き換えられる。例えば、リーディングゼロ予測回路１０８における下位ビット側の回路ブロックに図１３が採用される場合、通常モードでの動作フローは、図５に示すリーディングゼロ予測回路１０２での説明と同様である。すなわち、図４において、エンコーダＥＮＣ１は、図１３に示すエンコーダＥＮＣ＿ＬＺＣに置き換えられ、エンコーダＥＮＣ２は、図１３に示すエンコーダＥＮＣ＿ＬＺＣ３に置き換えられる。図４において、置換部ＲＰＬは、図１３に示すセレクタＳＥＬ２に置き換えられ、マスク部ＭＳＫは、図１３に示すアンド回路ＡＮＤ２に置き換えられる。
【０２１２】
以上、図３５に示す実施形態においても図１から図１８、図３２および図３３に示す実施形態と同様の効果を得ることができる。例えば、動作モード毎に専用のセレクタＬＺＣ８Ａ、ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４を有する図１８および図１９に示すリーディングゼロ予測回路１２０に比べて、回路規模を削減することができる。また、データ対Ａ、Ｂの末端より下位側の位置信号ＬＺＣが選択されることを抑止することができ、リーディングゼロ予測回路１０８の誤動作を抑止することができる。また、プライオリティセレクタ部３０Ｅに設けられるセレクタＳＥＬ１の回路規模を、図２０に示すセレクタＳＥＬ３の回路規模に比べて小さくすることができる。エンコーダＥＮＣ＿ＬＺＣからのＡＺ信号の代わりに、セレクタＬＺＣ８、ＬＺＣ１６からのＡＺ信号のアンド論理をとることで、アンド回路ＡＮＤ９に供給されるＡＳ信号の数を削減することができる。これにより、アンド回路ＡＮＤ９の回路規模を削減することができ、ＡＺ信号の遅延量を小さくすることができる。
【０２１３】
さらに、図３５に示す実施形態では、セレクタＳＥＬ１は、セレクタＬＺＣ３２の出力に接続される。これにより、アンド回路ＡＮＤ９に供給されるＡＳ信号の数をさらに削減することができ、アンド回路ＡＮＤ９に供給されるＡＳ信号の中での最大の配線長を図３３に比べて短くすることができ、配線負荷を削減することができる。配線負荷が削減されるため、アンド回路ＡＮＤ９からセレクタＳＥＬ１に出力される制御信号の生成タイミングの遅延量を、図３３に比べて小さくすることができる。
【０２１４】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０２１５】
ＡＮＤ１、ＡＮＤ２、ＡＮＤ４、ＡＮＤ８…アンド回路；ＡＺ…出現信号；ＢＺＰ１、ＢＺＰ２…予測器；ＥＮＣ１、ＥＮＣ２…エンコーダ；ＥＮＣ＿ＬＺＣ、ＥＮＣ＿ＬＺＣ１、ＥＮＣ＿ＬＺＣ２…エンコーダ；ＥＮＣ＿ＬＺＣ３、ＥＮＣ＿ＬＺＣ４、ＥＮＣ＿ＬＺＣ５、ＥＮＣ＿ＬＺＣ８…エンコーダ；ＬＺＣ…位置信号；ＬＺＣ８、ＬＺＣ８Ａ、ＬＺＣ８ＢＨ、ＬＺＣ８ＢＬ、ＬＺＣ８ＣＨ、ＬＺＣ８ＣＬ…セレクタ；ＬＺＣ１６、ＬＺＣ３２、ＬＺＣ６４、ＬＺＣ１２８…セレクタ；ＬＺＬ…位置信号；ＬＺＰ１、ＬＺＰ２…予測値信号；ＭＤ…モード信号；ＭＳＫ…マスク部；ＲＳＡ、ＲＳＥ…リザベーションステーション；ＲＰＬ…置換部；ＲＺＰ…リーディングゼロ予測器；ＳＥＬ１、ＳＥＬ２…セレクタ；ＳＩＭＤ…モード信号；１…予測部；２…エンコーダ部；３…位置情報生成部；１０…ゼロ予測部；２０…エンコーダ部；３０…プライオリティセレクタ部；５０…命令キャッシュ；５２…命令バッファ；５４…デコード部；５６…リザベーションステーション部；５８…演算実行部；６０…固定小数点演算部；６２…浮動小数点演算部；６４…論理演算部；６６…アドレス演算部；６８…レジスタ部；１００、１０２、１０４、１０６、１０８、１１０、１１２…リーディングゼロ予測回路；２００…演算処理装置
【図１】
2018116465.tif 000003
【図２】
2018116465.tif 000004
【図３】
2018116465.tif 000005
【図４】
2018116465.tif 000006
【図５】
2018116465.tif 000007
【図６】
2018116465.tif 000008
【図７】
2018116465.tif 000009
【図８】
2018116465.tif 000010
【図９】
2018116465.tif 000011
【図１０】
2018116465.tif 000012
【図１１】
2018116465.tif 000013
【図１２】
2018116465.tif 000014
【図１３】
2018116465.tif 000015
【図１４】
2018116465.tif 000016
【図１５】
2018116465.tif 000017
【図１６】
2018116465.tif 000018
【図１７】
2018116465.tif 000019
【図１８】
2018116465.tif 000020
【図１９】
2018116465.tif 000021
【図２０】
2018116465.tif 000022
【図２１】
2018116465.tif 000023
【図２２】
2018116465.tif 000024
【図２３】
2018116465.tif 000025
【図２４】
2018116465.tif 000026
【図２５】
2018116465.tif 000027
【図２６】
2018116465.tif 000028
【図２７】
2018116465.tif 000029
【図２８】
2018116465.tif 000030
【図２９】
2018116465.tif 000031
【図３０】
2018116465.tif 000032
【図３１】
2018116465.tif 000033
【図３２】
2018116465.tif 000034
【図３３】
2018116465.tif 000035
【図３４】
2018116465.tif 000036
【図３５】
2018116465.tif 000037