(57)【要約】【課題】キャリーレス乗算器の誤動作の検出を可能にする。【解決手段】ｐビット（ｐは２以上の自然数）のデータユニットがそれぞれｑ個（ｑは自然数）並べられたデータ列である被乗数データ列２と乗数データ列３とのキャリーレス乗算を行う乗算回路が出力する乗算結果データ列４のパリティ値をパリティ予測器１が予測する。下位パリティ予測部１０は、乗算結果データ列４における下位より１番目のデータユニットのパリティ値を、被乗数データ列２と乗数データ列３とにおける、下位より１番目のデータユニットの値及びパリティ値に基づき予測する。上位パリティ予測部２０は、乗算結果データ列４における下位より２ｑ−１番目のデータユニットに続く上位ｐ−１ビットのデータのパリティ値を、被乗数データ列２と乗数データ列３とにおける、下位よりｑ番目のデータユニットの値及びパリティ値に基づき予測する。【選択図】図２
2013069000.tif 000002
【特許請求の範囲】
【請求項１】
ｐビット（ｐは２以上の自然数）のデータであるデータユニットがそれぞれｑ個（ｑは自然数）並べられたデータ列である被乗数データ列と乗数データ列とのキャリーレス乗算結果のパリティ値を予測するパリティ予測器において、
前記キャリーレス乗算結果を示す乗算結果データ列における下位より１番目のデータユニットのパリティ値を、前記被乗数データ列及び前記乗数データ列のそれぞれにおける、下位より１番目のデータユニットである第１データユニットの値及びパリティ値に基づき予測する下位パリティ予測部と、
前記乗算結果データ列における下位より２ｑ−１番目のデータユニットに続くデータである、該乗算結果データ列の上位ｐ−１ビットのデータのパリティ値を、前記被乗数データ列及び前記乗数データ列のそれぞれにおける、下位よりｑ番目のデータユニットである第ｑデータユニットの値及びパリティ値に基づき予測する上位パリティ予測部と、
を有することを特徴とするパリティ予測器。
【請求項２】
前記パリティ予測器は、更に、
前記被乗数データ列及び前記乗数データ列が、それぞれ前記データユニットを複数個並べたデータ列である場合に、前記乗算結果データ列における下位より２番目から２ｑ−１番目までの各データユニットのパリティ値を、該被乗数データ列及び該乗数データ列のそれぞれにおける、下位より１番目のデータユニットである第１データユニットから下位ｑ番目のデータユニットである第ｑデータユニットまでの各データユニットの値及びパリティ値に基づいて予測する中位パリティ予測部を有する
ことを特徴とする請求項１記載のパリティ予測器。
【請求項３】
前記パリティ値は偶数パリティであり、
前記下位パリティ予測部は、
前記被乗数データ列及び前記乗数データ列のそれぞれの第１データユニットのパリティ値の論理積を出力する下位パリティ論理積回路と、
前記被乗数データ列の第１データユニットにおける最上位のビットの値と前記乗数データ列の第１データユニットにおける下位より２桁目のビットの値との論理積を出力する下位第１論理積回路と、
前記被乗数データ列の第１データユニットにおける上位よりｉ桁分（ｉは２からｐ−１までの自然数）の各ビットの値の排他的論理和と前記乗数データ列の第１データユニットにおける下位からｉ＋１桁目のビットの値との論理積を各々出力するｐ−２個の下位第２論理積回路と、
前記下位パリティ論理積回路の出力と前記下位第１論理積回路の出力と前記ｐ−２個の下位第２論理積回路の全ての出力との排他的論理和を、前記下位パリティ予測部による予測結果として出力する下位排他的論理和回路と、
を有する、
ことを特徴とする請求項１又は２記載のパリティ予測器。
【請求項４】
前記パリティ値は偶数パリティであり、
前記上位パリティ予測部は、
前記被乗数データ列及び前記乗数データ列のそれぞれの第ｑデータユニットのパリティ値の論理積を出力する上位パリティ論理積回路と、
前記被乗数データ列の第ｑデータユニットにおける最下位のビットの値と前記乗数データ列の第ｑデータユニットにおける最上位のビットの値との論理積を出力する上位第１論理積回路と、
前記被乗数データ列の第ｑデータユニットにおける下位よりｊ桁分（ｊは２からｐまでの自然数）の各ビットの値の排他的論理和と前記乗数データ列の第ｑデータユニットにおける上位よりｊ桁目のビットの値との論理積を各々出力するｐ−１個の上位第２論理積回路と、
前記上位パリティ論理積回路の出力と前記上位第１論理積回路の出力と前記ｐ−１個の上位第２論理積回路の全ての出力との排他的論理和を、前記上位パリティ予測部による予測結果として出力する上位排他的論理和回路と、
を有する、
ことを特徴とする請求項１又は２記載のパリティ予測器。
【請求項５】
前記中位パリティ予測部は、
前記被乗数データ列と前記乗数データ列を構成するデータユニットのうちの１つである部分乗数データとのキャリーレス乗算の結果である部分乗算結果データ列のデータユニット毎のパリティ値を予測する部分乗算結果パリティ予測部を有し、
前記部分乗算結果パリティ予測部による予測結果に基づいて、前記乗算結果データ列における下位より２番目から２ｑ−１番目までの各データユニットのパリティ値の予測を行う、
ことを特徴とする請求項２記載のパリティ予測器。
【請求項６】
前記中位パリティ予測部は、
前記部分乗算結果パリティ予測部として、前記乗数データ列のうちの下位よりｒ番目（ｒは１からｑまでの自然数）のデータユニットである第ｒ乗数データユニットを前記部分乗数データとしたときにおける前記部分乗算結果データ列のデータユニット毎のパリティ値を予測する第ｒ部分乗算結果パリティ予測部を有し、
前記第ｒ部分乗算結果パリティ予測部は、
前記部分乗算結果データ列における下位より１番目のデータユニットのパリティ値を、前記被乗数データ列における前記第１データユニットの値及びパリティ値と、前記第ｒ乗数データユニットの値及びパリティ値とに基づき予測する第１部分パリティ予測部と、
前記部分乗算結果データ列における下位よりｑ番目のデータユニットに続くデータである、該部分乗算結果データ列の上位ｐ−１ビットのデータのパリティ値を、前記被乗数データ列における前記第ｑデータユニットの値及びパリティ値と、前記第ｒ乗数データユニットの値及びパリティ値とに基づき予測する第ｑ＋１部分パリティ予測部と、
前記部分乗算結果データ列における下位より２番目からｑ番目までの各データユニット毎のパリティ値を、前記被乗数データ列における前記第１データユニットから前記第ｑデータユニットまでの各データユニットの値及びパリティ値と、前記第ｒ乗数データユニットの値及びパリティ値とに基づき予測する中位部分パリティ予測部と、
を有する、
ことを特徴とする請求項５記載のパリティ予測器。
【請求項７】
前記パリティ値は偶数パリティであり、
前記第１部分パリティ予測部は、
前記被乗数データ列における第１データユニットのパリティ値と前記第ｒ乗数データユニットのパリティ値との論理積を出力する下位部分パリティ論理積回路と、
前記被乗数データ列の第１データユニットにおける最上位のビットの値と前記第ｒ乗数データユニットにおける下位より２桁目のビットの値との論理積を出力する下位部分第１論理積回路と、
前記被乗数データ列の第１データユニットにおける上位よりｇ桁分（ｇは２からｐ−１までの自然数）の各ビットの値の排他的論理和と前記第ｒ乗数データユニットにおける下位からｇ＋１桁目のビットの値との論理積を各々出力するｐ−２個の下位部分第２論理積回路と、
前記下位部分パリティ論理積回路の出力と前記下位部分第１論理積回路の出力と前記ｐ−２個の下位部分第２論理積回路の全ての出力との排他的論理和を、前記第１部分パリティ予測部による予測結果として出力する下位部分排他的論理和回路と、
を有する、
ことを特徴とする請求項６記載のパリティ予測器。
【請求項８】
前記パリティ値は偶数パリティであり、
前記第ｑ＋１部分パリティ予測部は、
前記被乗数データ列における前記第ｑデータユニットのパリティ値と前記第ｒ乗数データユニットのパリティ値との論理積を出力する上位部分パリティ論理積回路と、
前記被乗数データ列の第ｑデータユニットにおける最下位のビットの値と前記第ｒ乗数データユニットにおける最上位のビットの値との論理積を出力する上位部分第１論理積回路と、
前記被乗数データ列の第ｑデータユニットにおける下位よりｈ桁分（ｈは２からｐまでの自然数）の各ビットの値の排他的論理和と前記第ｒ乗数データユニットにおける上位よりｈ桁目のビットの値との論理積を各々出力するｐ−１個の上位部分第２論理積回路と、
前記上位部分パリティ論理積回路の出力と前記上位部分第１論理積回路の出力と前記ｐ−１個の上位部分第２分論理積回路の全ての出力との排他的論理和を、前記第ｑ＋１部分パリティ予測部による予測結果として出力する上位部分排他的論理和回路と、
を有する、
ことを特徴とする請求項６又は７記載のパリティ予測器。
【請求項９】
前記パリティ値は偶数パリティであり、
前記中位部分パリティ予測部は、前記部分乗算結果データ列における下位よりｋ番目（ｋは２からｑまでの自然数）のデータユニットのパリティ値を予測する第ｋ部分パリティ予測部を有し、
前記第ｋ部分パリティ予測部は、
前記被乗数データ列の第ｋデータユニットのパリティ値と前記第ｒ乗数データユニットのパリティ値との論理積を出力する中位部分パリティ論理積回路と、
前記被乗数データ列の第ｋデータユニットにおける最上位のビットの値と前記第ｒデータにおける下位より２桁目のビットの値との論理積を出力する中位部分第１論理積回路と、
前記被乗数データ列の第ｋデータユニットにおける上位よりｍ桁分（ｍは２からｐ−１までの自然数）の各ビットの値の排他的論理和と前記第ｒ乗数データユニットにおける下位からｍ＋１桁目のビットの値との論理積を各々が出力するｐ−２個の中位部分第２論理積回路と、
前記被乗数データ列の第ｋ−１データユニットにおける最上位のビットの値と前記第ｒ乗数データユニットにおける下位より２桁目のビットの値との論理積を出力する中位部分第３論理積回路と、
前記被乗数データ列の第ｋ−１データユニットにおける上位よりｎ桁分（ｎは２からｐ−１までの自然数）の各ビットの値の排他的論理和と前記第ｒ乗数データユニットにおける下位よりｎ＋１桁目のビットの値との論理積を各々が出力するｐ−２個の中位部分第４論理積回路と、
前記中位部分パリティ論理積回路の出力と、前記中位部分第１論理積回路の出力と、前記ｐ−２個の中位部分第２論理積回路の全ての出力と、前記中位部分第３論理積回路の出力と、前記ｐ−２個の中位部分第４論理積回路の全ての出力との排他的論理和を、前記第ｋパリティ予測部による予測結果として出力する中位部分排他的論理和回路と、
を有する、
ことを特徴とする請求項６から８のうちのいずれか一項記載のパリティ予測器。
【請求項１０】
前記パリティ予測器は、前記中位パリティ予測部として、
前記乗算結果データ列における下位よりｓ番目（ｓは２からｑまでの自然数）のデータユニットのパリティ値を予測する第ｓ中位パリティ予測部と、
前記乗算結果データ列における下位よりｔ番目（ｔはｑ＋１から２ｑ−１までの自然数）のデータユニットのパリティ値を予測する第ｔ中位パリティ予測部と、
を有し、
前記第ｓ中位パリティ予測部は、第ｕ部分乗算結果パリティ予測部（ｕは１からｓまでの自然数）が有する第ｓ−ｕ＋１部分パリティ予測部によるパリティ値の予測結果の排他的論理和を、前記乗算結果データ列における下位よりｓ番目のデータユニットのパリティ値の予測結果として出力する排他的論理和回路を有し、
前記第ｔ中位パリティ予測部は、第ｖ部分乗算結果パリティ予測部（ｖはｔ−ｑからｑまでの自然数）が有する第ｔ−ｖ＋１部分パリティ予測部によるパリティ値の予測結果の排他的論理和を、前記乗算結果データ列における下位よりｔ番目のデータユニットのパリティ値の予測結果として出力する排他的論理和回路を有する、
ことを特徴とする請求項９記載のパリティ予測器。
【請求項１１】
前記パリティ値は奇数パリティであり、
前記下位パリティ予測部は、
前記被乗数データ列及び前記乗数データ列のそれぞれの第１データユニットのパリティ値の論理和を出力する下位パリティ論理和回路と、
前記被乗数データ列の第１データユニットにおける最上位のビットの値と前記乗数データ列の第１データユニットにおける下位より２桁目のビットの値との論理積を出力する下位第１論理積回路と、
前記被乗数データ列の第１データユニットにおける上位よりｉ桁分（ｉは２からｐ−１までの自然数）の各ビットの値の排他的論理和と前記乗数データ列の第１データユニットにおける下位からｉ＋１桁目のビットの値との論理積を各々出力するｐ−２個の下位第２論理積回路と、
前記下位パリティ論理和回路の出力と前記下位第１論理積回路の出力と前記ｐ−２個の下位第２論理積回路の全ての出力との排他的論理和を、前記下位パリティ予測部による予測結果として出力する下位排他的論理和回路と、
を有する、
ことを特徴とする請求項１又は２記載のパリティ予測器。
【請求項１２】
前記パリティ値は奇数パリティであり、
前記上位パリティ予測部は、
前記被乗数データ列及び前記乗数データ列のそれぞれの第ｑデータユニットのパリティ値の論理和を出力する上位パリティ論理和回路と、
前記被乗数データ列の第ｑデータユニットにおける最下位のビットの値と前記乗数データ列の第ｑデータユニットにおける最上位のビットの値との論理積を出力する上位第１論理積回路と、
前記被乗数データ列の第ｑデータユニットにおける下位よりｊ桁分（ｊは２からｐまでの自然数）の各ビットの値の排他的論理和と前記乗数データ列の第ｑデータユニットにおける上位よりｊ桁目のビットの値との論理積を各々出力するｐ−１個の上位第２論理積回路と、
前記上位パリティ論理和回路の出力と前記上位第１論理積回路の出力と前記ｐ−１個の上位第２論理積回路の全ての出力との排他的論理和を、前記上位パリティ予測部による予測結果として出力する上位排他的論理和回路と、
を有する、
ことを特徴とする請求項１又は２記載のパリティ予測器。
【請求項１３】
前記パリティ値は奇数パリティであり、
前記第１部分パリティ予測部は、
前記被乗数データ列における前記第１データユニットのパリティ値と前記第ｒ乗数データユニットのパリティ値との論理和を出力する下位部分パリティ論理和回路と、
前記被乗数データ列の第１データユニットにおける最上位のビットの値と前記第ｒ乗数データユニットにおける下位より２桁目のビットの値との論理積を出力する下位部分第１論理積回路と、
前記被乗数データ列の第１データユニットにおける上位よりｇ桁分（ｇは２からｐ−１までの自然数）の各ビットの値の排他的論理和と前記第ｒ乗数データユニットにおける下位からｇ＋１桁目のビットの値との論理積を各々出力するｐ−２個の下位部分第２論理積回路と、
前記下位部分パリティ論理和回路の出力と前記下位部分第１論理積回路の出力と前記ｐ−２個の下位部分第２論理積回路の全ての出力との排他的論理和を、前記第１部分パリティ予測部による予測結果として出力する下位部分排他的論理和回路と、
を有する、
ことを特徴とする請求項６記載のパリティ予測器。
【請求項１４】
前記パリティ値は奇数パリティであり、
前記第ｑ＋１部分パリティ予測部は、
前記被乗数データ列における前記第ｑデータユニットのパリティ値と前記第ｒ乗数データユニットのパリティ値との論理和を出力する上位部分パリティ論理和回路と、
前記被乗数データ列の第ｑデータユニットにおける最下位のビットの値と前記第ｒ乗数データユニットにおける最上位のビットの値との論理積を出力する上位部分第１論理積回路と、
前記被乗数データ列の第ｑデータユニットにおける下位よりｈ桁分（ｈは２からｐまでの自然数）の各ビットの値の排他的論理和と前記第ｒ乗数データユニットにおける上位よりｈ桁目のビットの値との論理積を各々出力するｐ−１個の上位部分第２論理積回路と、
前記上位部分パリティ論理和回路の出力と前記上位部分第１論理積回路の出力と前記ｐ−１個の上位部分第２論理積回路の全ての出力との排他的論理和を、前記第ｑ＋１部分パリティ予測部による予測結果として出力する上位部分排他的論理和回路と、
を有する、
ことを特徴とする請求項６又は１３記載のパリティ予測器。
【請求項１５】
前記パリティ値は奇数パリティであり、
前記中位部分パリティ予測部は、前記部分乗算結果データ列における下位よりｋ番目（ｋは２からｑまでの自然数）のデータユニットのパリティ値を予測する第ｋ部分パリティ予測部を有し、
前記第ｋ部分パリティ予測部は、
前記被乗数データ列における前記第ｋデータユニットのパリティ値と前記第ｒ乗数データユニットのパリティ値との論理和を出力する中位部分パリティ論理和回路と、
前記被乗数データ列の第ｋデータユニットにおける最上位のビットの値と前記第ｒデータにおける下位より２桁目のビットの値との論理積を出力する中位部分第１論理積回路と、
前記被乗数データ列の第ｋデータユニットにおける上位よりｍ桁分（ｍは２からｐ−１までの自然数）の各ビットの値の排他的論理和と前記第ｒ乗数データユニットにおける下位からｍ＋１桁目のビットの値との論理積を各々が出力するｐ−２個の中位部分第２論理積回路と、
前記被乗数データ列の第ｋ−１データユニットにおける最上位のビットの値と前記第ｒ乗数データユニットにおける下位より２桁目のビットの値との論理積を出力する中位部分第３論理積回路と、
前記被乗数データ列の第ｋ−１データユニットにおける上位よりｎ桁分（ｎは２からｐ−１までの自然数）の各ビットの値の排他的論理和と前記第ｒ乗数データユニットにおける下位よりｎ＋１桁目のビットの値との論理積を各々が出力するｐ−２個の中位部分第４論理積回路と、
前記中位部分パリティ論理和回路の出力と、前記中位部分第１論理積回路の出力と、前記ｐ−２個の中位部分第２論理積回路の全ての出力と、前記中位部分第３論理積回路の出力と、前記ｐ−２個の中位部分第４論理積回路の全ての出力との排他的論理和を、前記第ｋパリティ予測部による予測結果として出力する中位部分排他的論理和回路と、
を有する、
ことを特徴とする請求項６、１３、及び１４のうちのいずれか一項記載のパリティ予測器。
【請求項１６】
前記パリティ予測器は、前記中位パリティ予測部として、
前記乗算結果データ列における下位よりｓ番目（ｓは２からｑまでの自然数）のデータユニットのパリティ値を予測する第ｓ中位パリティ予測部と、
前記乗算結果データ列における下位よりｔ番目（ｔはｑ＋１から２ｑ−１までの自然数）のデータユニットのパリティ値を予測する第ｔ中位パリティ予測部と、
を有し、
前記第ｓ中位パリティ予測部は、第ｕ部分乗算結果パリティ予測部（ｕは１からｓまでの自然数）が有する第ｓ−ｕ＋１部分パリティ予測部によるパリティ値の予測結果と第一定数値との排他的論理和を、前記乗算結果データ列における下位よりｓ番目のデータユニットのパリティ値の予測結果として出力する排他的論理和回路を有し、
前記第一定数値は、ｓの値が偶数の場合には「１」とし、ｓの値が奇数の場合には「０」とし、
前記第ｔ中位パリティ予測部は、第ｖ部分乗算結果パリティ予測部（ｖはｔ−ｑからｑまでの自然数）が有する第ｔ−ｖ＋１部分パリティ予測部によるパリティ値の予測結果と第二定数値との排他的論理和を、前記乗算結果データ列における下位よりｔ番目のデータユニットのパリティ値の予測結果として出力する排他的論理和回路を有し、
前記第二定数値は、２ｑ−ｔ＋１の値が偶数の場合には「１」とし、２ｑ−ｔ＋１の値が奇数の場合には「０」とする、
ことを特徴とする請求項１５記載のパリティ予測器。
【請求項１７】
請求項１から１６のうちのいずれか一項記載のパリティ予測器と、
前記キャリーレス乗算を行う乗算回路と、
を有することを特徴とするキャリーレス乗算器。
【請求項１８】
請求項１７記載のキャリーレス乗算器を演算器として有することを特徴とする演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パリティ予測器、キャリーレス乗算器及び演算処理装置に関するものである。
【背景技術】
【０００２】
データストリームの誤りを検出するＣＲＣ（Cyclic Redundancy Check 巡回冗長検査）等で使用されるキャリーレス乗算を行うキャリーレス乗算器が知られている。まず、キャリーレス乗算について説明する。
【０００３】
被乗数データと乗数データとの乗算を行う通常の乗算では、まず、乗数データをビット毎に分解し、被乗数データとビット毎の部分乗数データとの積（部分積）を求める。そして、得られた部分積に対し、当該部分積の算出に用いた部分乗数データのビットの位に応じた桁揃えを行う。そして、同一桁の部分積同士を加算して乗算結果を得る。これに対し、キャリーレス乗算では、この加算の代わりに、同一桁の部分積同士の排他的論理和をとって乗算結果を得るというものである。
【０００４】
キャリーレス乗算について更に説明する。
なお、以降の説明では、値ａと値ｂとの論理積（ＡＮＤ演算）を「ａ＊ｂ」と表記することとし、値ａと値ｂとの排他的論理和（ＥＯＲ演算）を「ａ＋ｂ」と表記することし、値ａと値ｂとの論理和（ＯＲ演算）を「ａ＾ｂ」と表記することとする。
【０００５】
図１は、どちらも４ビットのデータである被乗数Ａと乗数Ｙとのキャリーレス乗算を表している。なお、図１において、「ａ  ｂ  ｃ  ｄ」は被乗数Ａの各ビットを表しており、「ｙ３  ｙ２  ｙ１  ｙ０」は乗数Ｙの各ビットを表している。
【０００６】
図１において、「ａ＊ｙｏ  ｂ＊ｙ０  ｃ＊ｙ０  ｄ＊ｙ０」の行は、被乗数Ａの各ビットａ、ｂ、ｃ、及びｄと、乗数Ｙにおける下位から１番目のビットｙ０との論理積、すなわち、被乗数Ａと乗数Ｙとの部分積を表している。また、この他の行も同様である。これらの各行は、キャリーレス乗算における演算の途中結果を表している。
【０００７】
更に、Ｚは被乗数Ａと乗数Ｙとのキャリーレス乗算の乗算結果を表しており、「ｚ６  ｚ５  ｚ４  ｚ３  ｚ２  ｚ１  ｚ０」は乗算結果Ｚの各ビットを表している。なお、キャリーレス乗算においては、ビットｚ６の上の桁であるビットｚ７は常に「０」である。
【０００８】
キャリーレス乗算では、この乗算結果Ｚの各ビットを下記の［数１］式に従って算出する。
【０００９】
【数１】
2013069000.tif 000003
【００１０】
また、この他の背景技術として、演算回路においてアルファ線等の放射線が当該演算回路に入射することにより発生するソフトエラーに基づく演算結果の誤りを検出する技術が知られている。この技術では、まず、レジスタがグレイコード形式の第１の数値を保持する。次に、数値演算手段が、このレジスタに保持された第１の数値から、当該第１の数値に対する所定の数値演算の結果である第２の数値をグレイコード形式で求めて出力する。次に、パリティ演算手段が、このレジスタに保持された第１の数値に対するパリティ値である第１のパリティ値を使用して、当該数値演算に対応する所定の論理演算を行うことにより、当該第２の値に対するパリティ値である第２のパリティ値を生成する。そして、パリティチェック手段が、パリティ演算手段により生成された第２のパリティ値を使用して、数値演算手段により出力された第２の数値に対するパリティチェックを行うというものである。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】米国特許第７５９０９３０号明細書
【特許文献２】米国特許第７７０７４８３号明細書
【特許文献３】特開２０１０−２０５１３５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
近年は、半導体の微細化に伴い、ソフトエラー等で演算器が誤動作する可能性が高まってきており、パリティチェックや回路の二重化などといった、信頼性を保証するための機構が演算器に対しても求められてきている。しかしながら、従来のキャリーレス乗算器には、パリティチェックや回路の二重化等のような機構が備えられておらず、このため、乗算器が誤動作してもその検出を行うことができなかった。
【００１３】
１つの側面では、本発明は、キャリーレス乗算器の誤動作の検出を可能にすることを目的とする。
【課題を解決するための手段】
【００１４】
本明細書で後述するパリティ予測器は、被乗数データ列と乗数データ列とのキャリーレス乗算結果のパリティ値を予測するものである。なお、ここで、被乗数データ列及び乗数データ列は、ｐビット（ｐは２以上の自然数）のデータであるデータユニットがそれぞれｑ個（ｑは自然数）並べられたデータ列である。
【００１５】
このパリティ予測器は、下位パリティ予測部と上位パリティ予測部とを備えている。ここで、下位パリティ予測部は、キャリーレス乗算結果を示す乗算結果データ列における下位より１番目のデータユニットのパリティ値を予測する。下位パリティ予測部は、この予測を、被乗数データ列及び乗数データ列のそれぞれにおける、下位より１番目のデータユニットである第１データユニットの値及びパリティ値に基づいて行う。また、上位パリティ予測部は、この乗算結果データ列における下位より２ｑ−１番目のデータユニットに続くデータである、当該乗算結果データ列の上位ｐ−１ビットのデータのパリティ値を予測する。上位パリティ予測部は、この予測を、被乗数データ列及び乗数データ列のそれぞれにおける、下位よりｑ番目のデータユニットである第ｑデータユニットの値及びパリティ値に基づいて行う。
【発明の効果】
【００１６】
本明細書で後述するパリティ予測器によれば、キャリーレス乗算器の誤動作の検出が行えるという効果を奏する。
【図面の簡単な説明】
【００１７】
【図１】キャリーレス乗算の説明図である。
【図２】パリティ予測器の一実施例の構成図を示す図である。
【図３】乗算結果データ列のデータユニット毎のパリティ予測の説明図（その１）である。
【図４】乗算結果データ列のデータユニット毎のパリティ予測の説明図（その２）である。
【図５】乗算結果データ列のデータユニット毎のパリティ予測の説明図（その３）である。
【図６】乗算結果データ列のデータユニット毎のパリティ予測の説明図（その４）である。
【図７】乗算結果データ列のデータユニット毎のパリティ予測の説明図（その５）である。
【図８】演算処理装置の一実施例の構成図である。
【図９】キャリーレス乗算器の第一の例の構成図である。
【図１０Ａ】図９におけるキャリーレス乗算回路の構成図（その１）である。
【図１０Ｂ】図９におけるキャリーレス乗算回路の構成図（その２）である。
【図１０Ｃ】図９におけるキャリーレス乗算回路の構成図（その３）である。
【図１０Ｄ】図９におけるキャリーレス乗算回路の構成図（その４）である。
【図１０Ｅ】図９におけるキャリーレス乗算回路の構成図（その５）である。
【図１０Ｆ】図９におけるキャリーレス乗算回路の構成図（その６）である。
【図１０Ｇ】図９におけるキャリーレス乗算回路の構成図（その７）である。
【図１１Ａ】図９におけるキャリーレス乗算パリティ予測回路の第一の例の構成図である。
【図１１Ｂ】図９におけるキャリーレス乗算パリティ予測回路の第二の例の構成図である。
【図１２Ａ】図９におけるパリティチェック回路の第一の例の構成図である。
【図１２Ｂ】図９におけるパリティチェック回路の第二の例の構成図である。
【図１３】キャリーレス乗算器の第二の例の構成図である。
【図１４Ａ】図１３におけるキャリーレス乗算パリティ予測回路の第一の例の構成図（その１）である。
【図１４Ｂ】図１３におけるキャリーレス乗算パリティ予測回路の第一の例の構成図（その２）である。
【図１４Ｃ】図１３におけるキャリーレス乗算パリティ予測回路の第二の例の構成図（その１）である。
【図１４Ｄ】図１３におけるキャリーレス乗算パリティ予測回路の第二の例の構成図（その２）である。
【図１５Ａ】図１３におけるパリティチェック回路の第一の例の構成図である。
【図１５Ｂ】図１３におけるパリティチェック回路の第二の例の構成図である。
【図１６】キャリーレス乗算器の第三の例の構成図である。
【図１７Ａ】図１６におけるキャリーレス乗算パリティ予測回路の第一の例の構成図（その１）である。
【図１７Ｂ】図１６におけるキャリーレス乗算パリティ予測回路の第一の例の構成図（その２）である。
【図１７Ｃ】図１６におけるキャリーレス乗算パリティ予測回路の第一の例の構成図（その３）である。
【図１７Ｄ】図１６におけるキャリーレス乗算パリティ予測回路の第一の例の構成図（その４）である。
【図１７Ｅ】図１６におけるキャリーレス乗算パリティ予測回路の第一の例の構成図（その５）である。
【図１７Ｆ】図１６におけるキャリーレス乗算パリティ予測回路の第一の例の構成図（その６）である。
【図１７Ｇ】図１６におけるキャリーレス乗算パリティ予測回路の第一の例の構成図（その７）である。
【図１７Ｈ】図１６におけるキャリーレス乗算パリティ予測回路の第一の例の構成図（その８）である。
【図１７Ｉ】図１６におけるキャリーレス乗算パリティ予測回路の第二の例の構成図（その１）である。
【図１７Ｊ】図１６におけるキャリーレス乗算パリティ予測回路の第二の例の構成図（その２）である。
【図１７Ｋ】図１６におけるキャリーレス乗算パリティ予測回路の第二の例の構成図（その３）である。
【図１７Ｌ】図１６におけるキャリーレス乗算パリティ予測回路の第二の例の構成図（その４）である。
【図１７Ｍ】図１６におけるキャリーレス乗算パリティ予測回路の第二の例の構成図（その５）である。
【図１７Ｎ】図１６におけるキャリーレス乗算パリティ予測回路の第二の例の構成図（その６）である。
【図１７Ｏ】図１６におけるキャリーレス乗算パリティ予測回路の第二の例の構成図（その７）である。
【図１７Ｐ】図１６におけるキャリーレス乗算パリティ予測回路の第二の例の構成図（その８）である。
【図１８】キャリーレス乗算器の第四の例の構成図である。
【図１９】図１８におけるキャリーレス乗算パリティ予測回路の構成図である。
【図２０Ａ】図１９における下位パリティ予測回路の第一の例の構成図である。
【図２０Ｂ】図１９における下位パリティ予測回路の第二の例の構成図である。
【図２１Ａ】図１９における上位パリティ予測回路の第一の例の構成図である。
【図２１Ｂ】図１９における上位パリティ予測回路の第二の例の構成図である。
【図２２】部分乗算結果パリティ予測回路の構成図である。
【図２３Ａ】図２２における第１部分パリティ予測回路の第一の例の構成図である。
【図２３Ｂ】図２２における第１部分パリティ予測回路の第二の例の構成図である。
【図２４Ａ】図２２における第ｑ＋１部分パリティ予測回路の第一の例の構成図である。
【図２４Ｂ】図２２における第ｑ＋１部分パリティ予測回路の第二の例の構成図である。
【図２５Ａ】第ｋ部分パリティ予測回路の第一の例の構成図である。
【図２５Ｂ】第ｋ部分パリティ予測回路の第二の例の構成図である。
【図２６Ａ】第ｓ中位パリティ予測回路の第一の例の構成図である。
【図２６Ｂ】第ｔ中位パリティ予測回路の第一の例の構成図である。
【図２６Ｃ】第ｓ中位パリティ予測回路の第二の例の構成図である。
【図２６Ｄ】第ｔ中位パリティ予測回路の第二の例の構成図である。
【発明を実施するための形態】
【００１８】
まず図２について説明する。図２はパリティ予測器の一実施例の構成図である。
このパリティ予測器１は、被乗数データ列２と乗数データ列３とのキャリーレス乗算を行う乗算回路から出力される乗算結果データ列４についてのパリティ値を予測する。キャリーレス乗算器の誤動作検出を行う場合には、この被乗数データ列２と乗数データ列３とを検出対象のキャリーレス乗算器に入力したときに出力される乗算結果データ列４についてのパリティ値を、このパリティ予測器１によるパリティ値の予測結果と比較する。このパリティ値と、パリティ値の予測結果の比較によって両者の不一致が検出された場合には、検出対象のキャリーレス乗算器に誤動作が発生したと判定される。
【００１９】
なお、本実施例において、被乗数データ列２及び乗数データ列３は、どちらも、データユニットがｑ個（但し、ｑは自然数）並べられたデータ列である。
しかし、以下の説明では、説明の便宜上、非乗数データ列のデータユニット数と乗数データ列のデータユニット数を、同じｑ個としているだけであって、両者は異なっていて構わない。
【００２０】
なお、本明細書において、「データユニット」とは、１ビットデータがｐ個（但し、ｐは２以上の自然数）並べられて構成されるｐビットのデータである。
また、以下の説明では、これも説明の便宜上、乗算結果データ列についてのデータユニットのビット数を、非乗数データ列と乗数データ列のデータユニットのビット数と同じｐビットとしているが、乗算結果データ列についてのデータユニットのビット数は、pビットの整数倍であっても構わない。ｐビットの整数倍の部分のパリティの値は、乗算結果データ列から算出する値でも、予測値の値でも、それぞれの各ｐビットのパリティの値を使って、計算できるからである。
【００２１】
このパリティ予測器１は下位パリティ予測部１０及び上位パリティ予測部２０を備えている。
下位パリティ予測部１０は、乗算結果データ列４における下位より１番目のデータユニットのパリティ値を予測する。下位パリティ予測部１０は、このパリティ値（下位パリティ予測値）を、被乗数データ列２及び乗数データ列３のそれぞれにおける、下位より１番目のデータユニットである第１データユニットの値及びパリティ値に基づいて予測する。
【００２２】
上位パリティ予測部２０は、乗算結果データ列４における下位より２ｑ−１番目のデータユニットに続くデータのパリティ値、すなわち、乗算結果データ列４の上位ｐ−１ビットのデータのパリティ値を予測する。上位パリティ予測部２０は、このｐ−１ビットのデータのパリティ値（上位パリティ予測値）を、被乗数データ列２及び乗数データ列３のそれぞれにおける、下位よりｑ番目のデータユニットである第ｑデータユニットの値及びパリティ値に基づいて予測する。
【００２３】
また、このパリティ予測器１は中位パリティ予測部３０を更に備えている。中位パリティ予測部３０は、被乗数データ列２及び乗数データ列３が、前述のデータユニットを複数個並べたデータ列である場合に、乗算結果データ列４における下位より２番目から２ｑ−１番目までの各データユニット毎のパリティ値を予測する。中位パリティ予測部３０は、このパリティ値（中位パリティ予測値）を、被乗数データ列２と乗数データ列３とにおける、下位より１番目（第１データユニット）からｑ番目（第ｑデータユニット）までの各データユニットの値及びパリティ値に基づいて予測する。
【００２４】
本実施例では、この中位パリティ予測部３０は部分乗算結果パリティ予測部４０を備えている。部分乗算結果パリティ予測部４０は、被乗数データ列２と、乗数データ列３を構成するデータユニットのうちの１つである部分乗数データとのキャリーレス乗算の結果である部分乗算結果データ列のデータユニット毎のパリティ値を予測する。中位パリティ予測部３０は、この部分乗算結果パリティ予測部４０による予測結果に基づいて、中位パリティ予測値の予測を行う。
【００２５】
本実施例では、この部分乗算結果パリティ予測部４０は部分パリティ予測部５０を備えている。部分パリティ予測部５０は、上述した部分乗算結果データ列のデータユニット毎に、当該データユニットのパリティ値を予測する。
【００２６】
パリティ予測器１は以上の構成を備えている。これらの構成要素の詳細は後述する。
次に、パリティ予測器１で用いられている、被乗数データ列２と乗数データ列３とのキャリーレス乗算の結果である乗算結果データ列４についてのパリティ値の予測の手法について説明する。
【００２７】
なお、ここでは、パリティ値に偶数パリティを使用する場合を説明し、奇数パリティを使用する場合については後述する。
【００２８】
［１．データユニットを考慮しない場合の乗算結果データ列のパリティ予測］
後述する、乗算結果データ列４のパリティ値の予測をデータユニット毎に行う場合の予測の手法の理解を容易にするために、まず、乗算結果データ列４のパリティ値の予測を、データユニットを考慮せずに行う場合の予測手法について説明する。
【００２９】
なお、ここでは、前述したキャリーレス乗算の説明に使用した、図１のデータ例を利用して、パリティ予測の説明を行う。
図１のデータ例は、４ビットのデータである被乗数Ａと乗数Ｙとのキャリーレス乗算の乗算結果をＺとしたものである。この乗算結果Ｚのパリティ値をＰ＿Ｚとすると、パリティ値の定義より、
【００３０】
【数２】
2013069000.tif 000004
である。
【００３１】
ところで、この［数２］式に、前掲した［数１］式を代入すると、
【数３】
2013069000.tif 000005
が成立する。
【００３２】
また、［数３］式は下記の［数４］式に変形できる。
【００３３】
【数４】
2013069000.tif 000006
【００３４】
この［数４］式の右辺において、論理積を表している「＊」記号によって結ばれている２つの項（排他的論理和の項）に注目すると、「ａ＋ｂ＋ｃ＋ｄ」は被乗数Ａのパリティ値であり、「ｙ３＋ｙ２＋ｙ１＋ｙ０」は乗数Ｙのパリティ値である。つまり、被乗数Ａのパリティ値をＰ＿Ａとし、乗数Ｙのパリティ値をＰ＿Ｙとすると、下記の［数５］式が成立する。
【００３５】
【数５】
2013069000.tif 000007
【００３６】
そこで、被乗数Ａから求めたＰ＿Ａの値と乗数Ｙから求めたＰ＿Ｙの値とを［数５］式に代入してＰ＿Ｚの値を求める。この値を乗算結果Ｚのパリティ値の予測値とする。
【００３７】
キャリーレス乗算器の誤動作の検出を行う場合には、被乗数Ａと乗数Ｙとをキャリーレス乗算器に入力して、その出力である乗算結果Ｚを得る。そして、この乗算結果Ｚのパリティ値Ｐ＿Ｚを［数２］式により求める。ここで、この［数２］式により求めたパリティ値Ｐ＿Ｚが、［数５］式により求めた予測値と一致するか否かを判定する。ここで、この両者が一致しない場合には、キャリーレス乗算器が誤動作したとの判断を下す。キャリーレス乗算器の誤動作は、このようにして検出される。
【００３８】
［２．乗算結果データ列のデータユニット毎のパリティ予測］
次に、乗算結果データ列４のパリティ値の予測をデータユニット毎に行う場合の予測の手法について説明する。
【００３９】
［２．１．被乗数データ列及び乗数データ列が共に１個のデータユニットの場合］
ここでは、１ビットデータが４個並べられた４ビットのデータをデータユニットとする。
【００４０】
まず、被乗数データ列２及び乗数データ列３が共に１個のデータユニットで構成されている場合（すなわち４ビットのデータある場合）の乗算結果データ列４のデータユニット毎のパリティ値の予測手法を説明する。
【００４１】
図３は、どちらも４ビットのデータである被乗数Ａと乗数Ｙとのキャリーレス乗算を表している。なお、図３において、「ａ  ｂ  ｃ  ｄ」は被乗数Ａの各ビットを表しており、「ｙ３  ｙ２  ｙ１  ｙ０」は乗数Ｙの各ビットを表している。
【００４２】
図３において、「ａ＊ｙｏ  ｂ＊ｙ０  ｃ＊ｙ０  ｄ＊ｙ０」の行は、被乗数Ａの各ビットａ、ｂ、ｃ、及びｄと、乗数Ｙにおける下位から１番目のビットｙ０との論理積、すなわち、被乗数Ａと乗数Ｙとの部分積を表している。また、この他の行も同様である。これらの各行は、キャリーレス乗算における演算の途中結果を表している。
【００４３】
更に、Ｚは被乗数Ａと乗数Ｙとのキャリーレス乗算の乗算結果を表しており、「ｚ６  ｚ５  ｚ４  ｚ３  ｚ２  ｚ１  ｚ０」は乗算結果Ｚの各ビットを表している。なお、キャリーレス乗算においては、ビットｚ６の上の桁であるビットｚ７は常に「０」である。
【００４４】
図１の場合と同様に、キャリーレス乗算では、この乗算結果Ｚの各ビットを前掲した［数１］式に従って算出する。
ここで、乗算結果Ｚのデータユニット毎のパリティ値をＰ＿Ｚ０及びＰ＿Ｚ１とする。ここで、Ｐ＿Ｚ０は、乗算結果Ｚにおける下位より１番目のデータユニット（すなわち「ｚ３  ｚ２  ｚ１  ｚ０」）のパリティ値である。また、Ｐ＿Ｚ１は、乗算結果Ｚにおける下位より１番目のデータユニットに続くデータのパリティ値、すなわち、乗算結果Ｚの上位３ビットのデータ（すなわち「ｚ６  ｚ５  ｚ４」）のパリティ値である。
【００４５】
このとき、パリティ値Ｐ＿Ｚ０及びＰ＿Ｚ１は、それぞれ、パリティ値の定義より、
【数６】
2013069000.tif 000008
【数７】
2013069000.tif 000009
である。
【００４６】
ところで、データユニットを考慮せずに行う場合における乗算結果Ｚのパリティ値Ｐ＿Ｚは、［数２］式により求まることは先に説明した。この［数２］式と、上掲した［数６］式及び［数７］式とを対比すると、下記の［数８］式が成立する。
【００４７】
【数８】
2013069000.tif 000010
【００４８】
ここで、排他的論理和の定義を考慮すると、［数８］式は下記の［数９］式及び［数１０］式に変形できることは明らかである。
【００４９】
【数９】
2013069000.tif 000011
【００５０】
【数１０】
2013069000.tif 000012
【００５１】
ここで、［数９］式に［数５］式及び［数７］式を代入し、［数１０］式に［数５］式及び［数６］式を代入すると、下記の［数１１］式及び［数１２］式が求まる。
【００５２】
【数１１】
2013069000.tif 000013
【００５３】
【数１２】
2013069000.tif 000014
【００５４】
そこで、被乗数Ａを構成しているａ、ｂ、ｃ、及びｄの各値とこれらの値から求めたＰ＿Ａの値、並びに、乗数Ｙを構成しているｙ０、ｙ１、ｙ２、及びｙ３の各値とこれらの値から求めたＰ＿Ｙの値を［数１１］式及び［数１２］式にそれぞれ代入する。そして、このときに［数１１］式及び［数１２］式から求まるＰ＿Ｚ０及びＰ＿Ｚ１の値を、乗算結果Ｚのパリティ値の予測値とする。
【００５５】
キャリーレス乗算器の誤動作の検出を行う場合には、被乗数Ａと乗数Ｙとをキャリーレス乗算器に入力して、その出力である乗算結果Ｚを得る。そして、この乗算結果Ｚのデータユニット毎のパリティ値Ｐ＿Ｚ０及びＰ＿Ｚ１を［数６］式及び［数７］式により求める。ここで、この［数６］式及び［数７］式により求めたパリティ値Ｐ＿Ｚ０及びＰ＿Ｚ１が、それぞれ［数１１］式及び［数１２］式により求めた予測値と一致するか否かを判定する。ここで、この両者が一致しない場合には、キャリーレス乗算器が誤動作したとの判断を下す。キャリーレス乗算器の誤動作は、このようにして検出される。
【００５６】
なお、［数１１］式は、以下のように考えることもできる。
まず、図３において、キャリーレス乗算における演算の途中結果を表している各行を、被乗数Ａの各ビットとの関係に従って右側に移動して、パリティ値Ｐ＿Ｚ０の対象である、乗算結果Ｚの下位より１番目のデータユニットの位置に配置してみる。この様子を表したものが図４である。
【００５７】
ここで、逆に、図３を図４からの変形と見て考える。このように考えると、乗算結果Ｚの下位より１番目のデータユニットのパリティ値Ｐ＿Ｚ０は、図４において太線で囲まれた部分に含まれている各項の排他的論理和に対し、当該データユニットの位から上位にはみ出した各項の影響を補償すれば求まることが分かる。
【００５８】
ここで、図４において太線で囲まれた部分に含まれている各項の排他的論理和は、データユニットを考慮せずに行う場合における乗算結果Ｚのパリティ値Ｐ＿Ｚに等しいことは、［数３］式から明らかである。従って、この場合にパリティ値Ｐ＿Ｚ０の予測値を求める場合の式は、［数１１］式の計算を行えばよいことが分かる。
【００５９】
また、［数１２］式についても、以下のように考えることもできる。
まず、図３において、キャリーレス乗算における演算の途中結果を表している各行を、被乗数Ａの各ビットとの関係に従って左側に移動してみる。この様子を表したものが図５である。
【００６０】
ここで、逆に、図３を図５からの変形と見て考える。このように考えると、乗算結果Ｚの下位より２番目のデータユニットのパリティ値Ｐ＿Ｚ１は、図５において太線で囲まれた部分に含まれている各項の排他的論理和に対し、当該データユニットの位から下位にはみ出した各項の影響を補償すれば求まることが分かる。
【００６１】
ここで、図５において太線で囲まれた部分に含まれている各項の排他的論理和は、データユニットを考慮せずに行う場合における乗算結果Ｚのパリティ値Ｐ＿Ｚに等しいことは、［数３］式から明らかである。従って、この場合にパリティ値Ｐ＿Ｚ１の予測値を求める場合の式は、［数１２］式の計算を行えばよいことが分かる。
【００６２】
なお、以降の説明では、キャリーレス乗算を、図６のように図解するものとする。
この図６では、キャリーレス乗算における演算の途中結果を表している各行の表現を図３から変更して、被乗数Ａの各ビットａ、ｂ、ｃ、及びｄに対する乗数Ｙの各ビットｙ０、ｙ１、ｙ２、及びｙ３の論理積を括り出して右端に表示するようにしたものである。
【００６３】
［２．２．被乗数データ列及び乗数データ列が共に２個のデータユニットの場合］
ここでも、１ビットデータが４個並べられた４ビットのデータをデータユニットとする。
【００６４】
次に、被乗数データ列２及び乗数データ列３が共に２個のデータユニットで構成されている場合（すなわち８ビットのデータである場合）の乗算結果データ列４のデータユニット毎のパリティ値の予測手法を説明する。
【００６５】
図７は、どちらも８ビットのデータである被乗数Ａと乗数Ｙとのキャリーレス乗算を表している。なお、図７において、「ａ  ｂ  ｃ  ｄ  ｅ  ｆ  ｇ  ｈ」は被乗数Ａの各ビットを表しており、「ｙ７  ｙ６  ｙ５  ｙ４  ｙ３  ｙ２  ｙ１  ｙ０」は乗数Ｙの各ビットを表している。
【００６６】
また、図７において、Ｚは被乗数Ａと乗数Ｙとのキャリーレス乗算の乗算結果を表しており、「ｚ１４  ｚ１３  ｚ１２  ｚ１１  ｚ１０  ｚ９  ｚ８  ｚ７  ｚ６  ｚ５  ｚ４  ｚ３  ｚ２  ｚ１  ｚ０」は乗算結果Ｚの各ビットを表している。なお、キャリーレス乗算においては、ビットｚ１４の上の桁であるビットｚ１５は常に「０」である。更に、乗算結果Ｚのデータユニット毎のパリティ値を、それぞれＰ＿Ｚ０、Ｐ＿Ｚ１、Ｐ＿Ｚ２、及びＰ＿Ｚ３とする。ここで、Ｐ＿Ｚ０は、乗算結果Ｚにおける下位より１番目のデータユニット（すなわち「ｚ３  ｚ２  ｚ１  ｚ０」）のパリティ値である。また、Ｐ＿Ｚ１は、乗算結果Ｚにおける下位より２番目のデータユニット（すなわち「ｚ７  ｚ６  ｚ５  ｚ４」）のパリティ値である。更に、Ｐ＿Ｚ２は、乗算結果Ｚにおける下位より３番目のデータユニット（すなわち「ｚ１１  ｚ１０  ｚ９  ｚ８」）のパリティ値である。なお、Ｐ＿Ｚ３は、乗算結果Ｚにおける下位より３番目のデータユニットに続くデータのパリティ値、すなわち、乗算結果Ｚの上位３ビットのデータ（すなわち「ｚ１４  ｚ１３  ｚ１２」）のパリティ値である。
【００６７】
図７においては、キャリーレス乗算における演算の途中結果が、ブロックＡからブロックＦまでの各ブロックに表されている。ここで、ブロックＡ、Ｂ、及びＤは、被乗数Ａと乗数Ｙのうちの下位より１番目のデータユニット（すなわち、「ｙ３  ｙ２  ｙ１  ｙ０」）との、キャリーレス乗算である部分乗算における演算の途中結果を表している。また、ブロックＣ、Ｅ、及びＦは、被乗数Ａと乗数Ｙのうちの下位より２番目のデータユニット（すなわち、「ｙ７  ｙ６  ｙ５  ｙ４」）との、キャリーレス乗算である部分乗算における演算の途中結果を表している。ここでは、パリティ値の予測を、まず、このブロック毎に行う。
【００６８】
なお、以下の説明では、データユニット「ｙ３  ｙ２  ｙ１  ｙ０」を「データユニットＹ０」と称することとし、データユニット「ｙ７  ｙ６  ｙ５  ｙ４」を「データユニットＹ１」と称することとする。また、データユニットＹ０のパリティ値をＰ＿Ｙ０とし、データユニットＹ１のパリティ値をＰ＿Ｙ１とする。
【００６９】
まず、ブロックＡに注目する。このブロックＡには、被乗数Ａのうちの下位より１番目のデータユニット「ｅ  ｆ  ｇ  ｈ」とデータユニットＹ０との部分乗算の一部（ブロックＢへのはみ出しを除いた部分）が表されている。このブロックＡについての乗算結果のパリティ値Ｐ＿ＺＡの予測式は、前述した図３の場合におけるパリティ値Ｐ＿Ｚ０の予測式である［数１１］式におけるａ、ｂ、ｃ、及びｄをｅ、ｆ、ｇ、及びｈに置き換えればよい。すなわち、パリティ値Ｐ＿ＺＡは、下記の［数１３］を用いて予測することができる。
【００７０】
【数１３】
2013069000.tif 000015
【００７１】
なお、パリティ値Ｐ＿Ａ０は、データユニット「ｅ  ｆ  ｇ  ｈ」のパリティ値である。以下の説明では、データユニット「ｅ  ｆ  ｇ  ｈ」を「データユニットＡ０」と称することとする。
【００７２】
次にブロックＤに注目する。このブロックＤには、被乗数Ａのうちの下位より２番目のデータユニット「ａ  ｂ  ｃ  ｄ」とデータユニットＹ０との部分乗算の一部（ブロックＢへのはみ出し部分の残り）が表されている。このブロックＤについての乗算結果のパリティ値Ｐ＿ＺＤの予測式は、前述した図３の場合におけるパリティ値Ｐ＿Ｚ１の予測式である［数１２］式をそのまま利用すればよい。すなわち、パリティ値Ｐ＿ＺＤは、下記の［数１４］を用いて予測することができる。
【００７３】
【数１４】
2013069000.tif 000016
【００７４】
なお、パリティ値Ｐ＿Ａ１は、データユニット「ａ  ｂ  ｃ  ｄ」のパリティ値である。以下の説明では、データユニット「ａ  ｂ  ｃ  ｄ」を「データユニットＡ１」と称することとする。
【００７５】
次にブロックＢに注目する。このブロックＢは、データユニットＡ１とＹ０との部分乗算の一部（ブロックＤへのはみ出しを除いた部分）に、データユニットＡ０とＹ０との部分乗算の一部（ブロックＡからのはみ出し部分）が重なったものと考えればよい。言い換えると、ブロックＢについてのパリティ値Ｐ＿ＺＢの予測は、以下のようにして行う。
【００７６】
まず、ブロックＢにおける、データユニットＡ１とＹ０との部分乗算の一部（ブロックＤへのはみ出しを除いた部分）に関するパリティ値Ｐ＿ＺＢＤを予測する。このパリティ値Ｐ＿ＺＢＤの予測式は、前述した図３の場合におけるパリティ値Ｐ＿Ｚ０の予測式である［数１１］式をそのまま利用すればよい。すなわち、パリティ値Ｐ＿ＺＢＤは、下記の［数１５］式を用いて予測することができる。
【００７７】
【数１５】
2013069000.tif 000017
【００７８】
次に、この予測されたパリティ値Ｐ＿ＺＢＤに対して、データユニットＡ０とＹ０との部分乗算の一部（ブロックＡからのはみ出し部分）がブロックＢにおいて重なったことによる影響の補償を行う。従って、パリティ値Ｚ＿Ｂは、下記の［数１６］式を用いて予測することができる。
【００７９】
【数１６】
2013069000.tif 000018
【００８０】
次に、被乗数ＡとデータユニットＹ１との部分乗算における演算の途中結果を表しているブロックＣ、Ｆ、及びＥについて注目する。これらのブロックＣ、Ｆ、及びＥについてのパリティ値の予測は、これらのブロックとブロックＡ、Ｄ、及びＢとの対応関係を考慮して、ブロックＡ、Ｄ、及びＢのパリティ値の予測式である［数１３］式、［数１４］式、及び［数１６］式を利用する。すなわち、［数１３］式、［数１４］式、及び［数１６］式におけるｙ０、ｙ１、ｙ２、及びｙ３を各々ｙ４、ｙ５、ｙ６、及びｙ７に置き換えた下記の式を用いてブロックＣ、Ｆ、及びＥについてのパリティ値Ｐ＿ＺＣ、Ｐ＿ＺＦ、及びＰ＿ＺＥの予測を行う。
【００８１】
【数１７】
2013069000.tif 000019
【００８２】
【数１８】
2013069000.tif 000020
【００８３】
【数１９】
2013069000.tif 000021
【００８４】
以上のようにしてブロック毎のパリティ値が求まると、乗算結果Ｚのデータユニット毎のパリティ値Ｐ＿Ｚ０、Ｐ＿Ｚ１、Ｐ＿Ｚ２、及びＰ＿Ｚ３は、それぞれ下記の式によって求めることができる。
【００８５】
【数２０】
2013069000.tif 000022
【００８６】
【数２１】
2013069000.tif 000023
【００８７】
【数２２】
2013069000.tif 000024
【００８８】
【数２３】
2013069000.tif 000025
【００８９】
キャリーレス乗算器の誤動作の検出を行う場合には、被乗数Ａと乗数Ｙとをキャリーレス乗算器に入力して、その出力である乗算結果Ｚを得る。そして、この乗算結果Ｚのデータユニット毎のパリティ値Ｐ＿Ｚ０、Ｐ＿Ｚ１、Ｐ＿Ｚ２、及びＰ＿Ｚ３を、パリティ値の定義に従い、この乗算結果Ｚにおけるビットｚ０からビットｚ１４の各値を用いて求める。ここで、このようにして求めたパリティ値Ｐ＿Ｚ０、Ｐ＿Ｚ１、Ｐ＿Ｚ２、及びＰ＿Ｚ３が、それぞれ［数２０］式、［数２１］式、［数２２］式、及び［数２３］式により求めた予測値と一致するか否かを判定する。ここで、この両者が一致しない場合には、キャリーレス乗算器が誤動作したとの判断を下す。キャリーレス乗算器の誤動作は、このようにして検出される。
【００９０】
［２．３．被乗数データ列及び乗数データ列のサイズを一般化した場合］
ここでは、前述した［２．２］を一般化した場合、すなわち、データユニットのサイズと被乗数データ列２及び乗数データ列３のサイズとを一般化した場合における、乗算結果データ列４のデータユニット毎のパリティ値の予測手法について検討する。
【００９１】
まず、データユニットを、１ビットデータがｐ個（但し、ｐは２以上の自然数）並べられたｐビットのデータとする。そして、被乗数Ａ及び乗数Ｙが共にｑ個（但し、ｑは自然数）のデータユニットで構成されている（すなわちｑ×ｐビットのデータである）とする。このときの被乗数Ａと乗数Ｙとのキャリーレス乗算によって得られる乗算結果Ｚは、２ｑ×ｐ−１ビットのデータとなる。
【００９２】
なお、以下の説明では、被乗数Ａにおいての下位より１番目のデータユニット、すなわち、下位より１番目からｐ番目までのビットデータで構成されているデータユニットを「第１被乗数データユニット」と称することとする。また、被乗数Ａにおいての、下位より２番目のデータユニットからｑ番目までの各データユニットについても、それぞれ「第２被乗数データユニット」、…、「第ｑ被乗数データユニット」と称することとする。同様に、乗数Ｙにおいての下位より１番目のデータユニット、すなわち、下位より１番目からｐ番目までのビットデータで構成されているデータユニットを「第１乗数データユニット」と称することとする。また、乗数Ｙにおいての、下位より２番目のデータユニットからｑ番目までの各データユニットについても、それぞれ「第２乗数データユニット」、…、「第ｑ乗数データユニット」と称することとする。
【００９３】
更に、以下の説明では、乗算結果Ｚにおける下位より１番目のデータユニットを「第１乗算結果データユニット」と称することとする。そして、乗算結果Ｚにおける下位より２番目のデータユニットから２ｑ−１番目までの各データユニットについても、それぞれ「第２乗算結果データユニット」、…、「第２ｑ−１乗算結果データユニット」と称することとする。また、乗算結果Ｚにおける第２ｑ−１乗算結果データユニットに続くｐ−１ビットのデータ、すなわち、乗算結果Ｚにおける上位からｐ−１ビットのデータについては、便宜上「第２ｑ乗算結果データユニット」と称することとする。
【００９４】
［２．３．１．下位パリティの予測］
まず、第１乗算結果データユニットのパリティ値（このパリティ値を「下位パリティ値」と称することとする）の予測手法について説明する。この下位パリティ値の予測は、前掲した図７におけるパリティ値Ｐ＿Ｚ０の予測と同様に考えることができる。すなわち、下位パリティ値の予測は、第１被乗数データユニットと第１乗数データユニットとの各々についての値及びパリティ値に基づき、［数２０］式及び［数１３］式を拡張して、例えば、以下の手順に従って行う。
【００９５】
まず、第１被乗数データユニットのパリティ値と第１乗数データユニットのパリティ値との論理積を求める。この論理積の値を「下位パリティ論理積」と称することとする。なお、この手順は、［数１３］式においては、右辺の、「＋」記号で結ばれている各項のうちの第１項の論理演算に相当する。
【００９６】
次に、第１被乗数データユニットにおける最上位のビットの値と第１乗数データユニットにおける下位より２桁目のビットの値との論理積を求める。この論理積の値を「下位第１論理積」と称することとする。なお、この手順は、［数１３］式においては右辺の第２項の論理演算に相当する。
【００９７】
次に、第１被乗数データユニットにおける上位よりｉ桁分（但し、ｉは２からｐ−１までの自然数）の各ビットの値の排他的論理和と第１乗数データユニットにおける下位からｉ＋１桁目のビットの値との論理積を各々求める。このｉがとり得る値はｐ−２個存在するので、論理積の値もｐ−２個得られる。この論理積の値を「下位第２論理積」と称することとする。なお、この手順は、［数１３］式においては右辺の第３項から第４項までの各項の論理演算に相当する。
【００９８】
なお、これらの下位パリティ論理積、下位第１論理積、及びｐ−２個の下位第２論理積の算出順序は、上述の順序でなくてもよい。
次に、以上のようにして求められた下位パリティ論理積と、下位第１論理積と、ｐ−２個の下位第２論理積との排他的論理和を求める。こうして求められた排他的論理和の値が、下位パリティ値の予測結果となる。なお、この手順は、［数１３］式においては右辺の第１項から第４項までの各項の排他的論理和の演算に相当する。
【００９９】
［２．３．２．上位パリティの予測］
次に、第２ｑ乗算結果データユニットのパリティ値（このパリティ値を「上位パリティ値」と称することとする）の予測手法について説明する。この上位パリティ値の予測は、前掲した図７におけるパリティ値Ｐ＿Ｚ３の予測と同様に考えることができる。すなわち、上位パリティ値の予測は、第ｑ被乗数データユニットと第ｑ乗数データユニットとの各々についての値及びパリティ値に基づき、［数２３］式及び［数１８］式を拡張して、例えば、以下の手順に従って行う。
【０１００】
まず、第ｑ被乗数データユニットのパリティ値と第ｑ乗数データユニットのパリティ値との論理積を求める。この論理積の値を「上位パリティ論理積」と称することとする。なお、この手順は、［数１８］式においては、右辺の、「＋」記号で結ばれている各項のうちの第１項の論理演算に相当する。
【０１０１】
次に、第ｑ被乗数データユニットにおける最下位のビットの値と第ｑ乗数データユニットにおける最上位のビットの値との論理積を求める。この論理積の値を「上位第１論理積」と称することとする。なお、この手順は、［数１８］式においては右辺の第５項の論理演算に相当する。
【０１０２】
次に、第ｑ被乗数データユニットにおける下位よりｊ桁分（但し、ｊは２からｐまでの自然数）の各ビットの値の排他的論理和と第ｑ乗数データユニットにおける上位からｊ桁目のビットの値との論理積を各々求める。このｊがとり得る値はｐ−１個存在するので、論理積の値もｐ−１個得られる。この論理積の値を「上位第２論理積」と称することとする。なお、この手順は、［数１８］式においては右辺の第２項から第４項までの各項の論理演算に相当する。
なお、これらの上位パリティ論理積、上位第１論理積、及びｐ−１個の上位第２論理積の算出順序は、上述の順序でなくてもよい。
【０１０３】
次に、以上のようにして求められた上位パリティ論理積と、上位第１論理積と、ｐ−１個の上位第２論理積との排他的論理和を求める。こうして求められた排他的論理和の値が、上位パリティ値の予測結果となる。なお、この手順は、［数１８］式においては右辺の第１項から第５項までの各項の排他的論理和の演算に相当する。
【０１０４】
［２．３．３．中位パリティの予測］
次に、第２乗算結果データユニットから第２ｑ−１乗算結果データユニットまでの各乗算結果データユニットのパリティ値（このパリティ値を「中位パリティ値」と称することとする）の予測手法について説明する。この中位パリティ値の予測は、被乗数Ａ及び乗数Ｙのそれぞれにおける、第１データユニットから第ｑデータユニットまでの各データユニットの値及びパリティ値に基づいて行われる。
【０１０５】
［２．３．３．１．部分乗算結果のデータユニット毎のパリティ値の予測］
この中位パリティ値の予測では、部分乗算結果のデータユニット毎のパリティ値の予測を行い、この部分乗算結果のデータユニット毎のパリティ値の予測結果に基づいて、中位パリティ値の予測を行う。なお、部分乗算結果とは、被乗数Ａと乗数Ｙを構成するデータユニットのうちの１つとのキャリーレス乗算の結果である。
【０１０６】
ここで、被乗数Ａと第ｒ乗数データユニット（但し、ｒは１からｑまでの自然数）とのキャリーレス乗算の結果を、「第ｒ部分乗算結果」と称することとする。従って、図７の例では、例えば、被乗数Ａ（すなわち「ａ  ｂ  ｃ  ｄ  ｅ  ｆ  ｇ  ｈ」）と第１乗数データユニット（すなわち「ｙ３  ｙ２  ｙ１  ｙ０」）とのキャリーレス乗算の結果が第１部分乗算結果である。また、被乗数Ａと第２乗数データユニット（すなわち「ｙ７  ｙ６  ｙ５  ｙ４」）とのキャリーレス乗算の結果が第２部分乗算結果である。
【０１０７】
この第ｒ部分乗算結果における、下位より１番目のデータユニットを「第１部分」と称することとする。また、同様に、この第ｒ部分乗算結果における、下位より２番目のデータユニットからｑ番目までの各データユニットについても、それぞれ「第２部分」、…、「第ｑ部分」と称することとする。更に、この第ｒ部分乗算結果における第ｑ部分に続くデータである、第ｒ部分乗算結果の上位ｐ−１ビットのデータを、便宜上「第ｑ＋１部分」と称することとする。
【０１０８】
以下、これらの第１部分から第ｑ＋１部分の各々についてのパリティ値の予測手法について説明する。
【０１０９】
［２．３．３．１．１．第１部分のパリティ値の予測］
第１部分のパリティ値の予測は、前掲した図７におけるブロックＡについてのパリティ値Ｐ＿ＺＡの予測、若しくは、ブロックＣについてのパリティ値Ｐ＿ＺＣの予測と同様に考えることができる。すなわち、第１部分のパリティ値の予測は、第１被乗数データユニットと第ｒ乗数データユニットとの各々についての値及びパリティ値に基づき、［数１３］式若しくは［数１７］式を拡張して、例えば、以下の手順に従って行う。
【０１１０】
まず、第１被乗数データユニットのパリティ値と第ｒ乗数データユニットのパリティ値との論理積を求める。この論理積の値を「下位部分パリティ論理積」と称することとする。なお、この手順は、［数１３］式においては、右辺における、「＋」記号で結ばれている各項のうちの第１項の論理演算に相当する。
【０１１１】
次に、第１被乗数データユニットにおける最上位のビットの値と第ｒ乗数データユニットにおける下位より２桁目のビットの値との論理積を求める。この論理積の値を「下位部分第１論理積」と称することとする。なお、この手順は、［数１３］式においては右辺の第２項の論理演算に相当する。
【０１１２】
次に、第１被乗数データユニットにおける上位よりｇ桁分（但し、ｇは２からｐ−１までの自然数）の各ビットの値の排他的論理和と第ｒ乗数データユニットにおける下位からｇ＋１桁目のビットの値との論理積を各々求める。このｇがとり得る値はｐ−２個存在するので、論理積の値もｐ−２個得られる。この論理積の値を「下位部分第２論理積」と称することとする。なお、この手順は、［数１３］式においては右辺の第３項から第４項までの各項の論理演算に相当する。
なお、これらの下位部分パリティ論理積、下位部分第１論理積、及びｐ−２個の下位部分第２論理積の算出順序は、上述の順序でなくてもよい。
【０１１３】
次に、以上のようにして求められた下位部分パリティ論理積と、下位部分第１論理積と、ｐ−２個の下位部分第２論理積との排他的論理和を求める。こうして求められた排他的論理和の値が、第１部分のパリティ値の予測結果となる。なお、この手順は、［数１３］式においては右辺の第１項から第４項までの各項の排他的論理和の演算に相当する。
【０１１４】
［２．３．３．１．２．第ｑ＋１部分のパリティ値の予測］
第ｑ＋１部分のパリティ値の予測は、前掲した図７におけるブロックＤについてのパリティ値Ｐ＿ＺＤの予測、若しくは、ブロックＦについてのパリティ値Ｐ＿ＺＦの予測と同様に考えることができる。すなわち、第ｑ＋１部分のパリティ値の予測は、第ｑ被乗数データユニットと第ｒ乗数データユニットとの各々についての値及びパリティ値に基づき、［数１４］式若しくは［数１８］式を拡張して、例えば、以下の手順に従って行う。
【０１１５】
まず、第ｑ被乗数データユニットのパリティ値と第ｒ乗数データユニットのパリティ値との論理積を求める。この論理積の値を「上位部分パリティ論理積」と称することとする。なお、この手順は、［数１４］式においては、右辺における、「＋」記号で結ばれている各項のうちの第１項の論理演算に相当する。
【０１１６】
次に、第ｑ被乗数データユニットにおける最下位のビットの値と第ｒ乗数データユニットにおける最上位のビットの値との論理積を求める。この論理積の値を「上位部分第１論理積」と称することとする。なお、この手順は、［数１４］式においては右辺の第５項の論理演算に相当する。
【０１１７】
次に、第ｑ被乗数データユニットにおける下位よりｈ桁分（但し、ｈは２からｐまでの自然数）の各ビットの値の排他的論理和と第ｑ乗数データユニットにおける上位からｈ桁目のビットの値との論理積を各々求める。このｈがとり得る値はｐ−１個存在するので、論理積の値もｐ−１個得られる。この論理積の値を「上位部分第２論理積」と称することとする。なお、この手順は、［数１４］式においては右辺の第２項から第４項までの各項の論理演算に相当する。
【０１１８】
なお、これらの上位部分パリティ論理積、上位部分第１論理積、及びｐ−１個の上位部分第２論理積の算出順序は、上述の順序でなくてもよい。
次に、以上のようにして求められた上位部分パリティ論理積と、上位部分第１論理積と、ｐ−１個の上位部分第２論理積との排他的論理和を求める。こうして求められた排他的論理和の値が、第ｑ＋１部分のパリティ値の予測結果となる。なお、この手順は、［数１４］式においては右辺の第１項から第５項までの各項の排他的論理和の演算に相当する。
【０１１９】
［２．３．３．１．３．中位部分のパリティ値の予測］
次に、第２部分から第ｑ部分までの各データユニットのパリティ値（このパリティ値を「中位部分パリティ値」と称することとする）の予測手法について説明する。この中位部分パリティ値の予測は、前掲した図７におけるブロックＢについてのパリティ値Ｐ＿ＺＢの予測、若しくは、ブロックＥについてのパリティ値Ｐ＿ＺＥの予測と同様に考えることができる。この中位部分パリティ値の予測は、第１被乗数データユニットから第ｑ被乗数データユニットまでの各データユニットと第ｒ乗数データユニットとの各々の値及びパリティ値に基づき、［数１６］式若しくは［数１９］式を拡張して、例えば、以下の手順で行う。
【０１２０】
なお、ここでは、第ｋ部分（但し、ｋは２からｑまでの自然数）についてのパリティ値の予測の手順を説明する。
まず、第ｋ被乗数データユニットのパリティ値と第ｒ乗数データユニットのパリティ値との論理積を求める。この論理積の値を「中位部分パリティ論理積」と称することとする。なお、この手順は、［数１６］式においては、右辺の、「＋」記号で結ばれている各項のうちの第１項の論理演算に相当する。
【０１２１】
次に、第ｋ被乗数データユニットにおける最上位のビットの値と第ｒ乗数データユニットにおける下位より２桁目のビットの値との論理積を求める。この論理積の値を「中位部分第１論理積」と称することとする。なお、この手順は、［数１６］式においては第２項の論理演算に相当する。
【０１２２】
次に、第ｋ被乗数データユニットにおける上位よりｍ桁分（但し、ｍは２からｐ−１までの自然数）の各ビットの値の排他的論理和と第ｒ乗数データユニットにおける下位からｍ＋１桁目のビットの値との論理積を各々求める。このｍがとり得る値はｐ−２個存在するので、論理積の値もｐ−２個得られる。この論理積の値を「中位部分第２論理積」と称することとする。なお、この手順は、［数１６］式においては右辺の第３項から第４項までの各項の論理演算に相当する。
【０１２３】
次に、第ｋ−１被乗数データユニットにおける最上位のビットの値と第ｒ乗数データユニットにおける下位より２桁目のビットの値との論理積を求める。この論理積の値を「中位部分第３論理積」と称することとする。なお、この手順は、［数１６］式においては右辺の第５項の論理演算に相当する。
【０１２４】
次に、第ｋ−１被乗数データユニットにおける上位よりｎ桁分（但し、ｎは２からｐ−１までの自然数）の各ビットの値の排他的論理和と第ｒ乗数データユニットにおける下位よりｎ＋１桁目のビットの値との論理積を各々求める。このｎがとり得る値はｐ−２個存在するので、論理積の値もｐ−２個得られる。この論理積の値を「中位部分第４論理積」と称することとする。なお、この手順は、［数１６］式においては右辺の第６項から第７項までの各項の論理演算に相当する。
【０１２５】
なお、これらの中位部分パリティ論理積、中位部分第１論理積、ｐ−２個の中位部分第２論理積、中位部分第３論理積、及びｐ−２個の中位部分第４論理積の算出順序は、上述の順序でなくてもよい。
【０１２６】
次に、以上のようにして求められた中位部分パリティ論理積と、中位部分第１論理積と、ｐ−２個の中位部分第２論理積と、中位部分第３論理積と、ｐ−２個の中位部分第４論理積との排他的論理和を求める。こうして求められた排他的論理和の値が、第ｋ部分についてのパリティ値の予測結果となる。なお、この手順は、［数１６］式においては右辺の第１項から第７項までの各項の排他的論理和の演算に相当する。
【０１２７】
［２．３．３．２．部分乗算結果のデータユニット毎のパリティ値の予測結果に基づく中位パリティの予測］
以上までの手順を、変数ｒがとり得る全ての値について行うことで、第１部分乗算結果から第ｒ部分乗算結果の各々についてのデータユニット毎のパリティ予測値が求まる。乗算結果Ｚを構成しているデータユニット毎の中位パリティ値の予測は、これらの部分乗算結果のデータユニット毎のパリティ予測値を所定の規則に従って選択し、選択されたパリティ予測値の排他的論理和を求めることで行う。
【０１２８】
まず、乗算結果Ｚを構成しているデータユニットのうち、第ｓ乗算結果データユニット（但し、ｓは２からｑまでの自然数）のパリティ値の予測手法について説明する。
第ｓ乗算結果データユニットのパリティ値の予測は、前掲した図７において、ブロックＢについてのパリティ予測値とブロックＣについてのパリティ予測値とを用いて行ったパリティ値Ｐ＿Ｚ１の予測と同様に考えることができる。すなわち、第ｓ乗算結果データユニットのパリティ値の予測は、［数２１］式を拡張して、例えば、以下の手順に従って行う。
【０１２９】
まず、第ｕ部分乗算結果（但し、ｕは１からｓまでの自然数）の第ｓ−ｕ＋１部分のパリティ予測値を選択する。このｕがとり得る値はｓ個存在するので、ｓ個のパリティ予測値が選択される。そして、選択されたｓ個のパリティ予測値の排他的論理和を求める。こうして求められた排他的論理和の値が、第ｓ乗算結果データユニットのパリティ値の予測結果となる。
【０１３０】
次に、乗算結果Ｚを構成しているデータユニットのうち、第ｔ乗算結果データユニット（但し、ｔはｑ＋１から２ｑ−１までの自然数）のパリティ値の予測手法について説明する。
【０１３１】
第ｔ乗算結果データユニットのパリティ値の予測は、前掲した図７において、ブロックＤについてのパリティ予測値とブロックＥについてのパリティ予測値とを用いて行ったパリティ値Ｐ＿Ｚ２の予測と同様に考えることができる。すなわち、第ｔ乗算結果データユニットのパリティ値の予測は、［数２２］式を拡張して、例えば、以下の手順に従って行う。
【０１３２】
まず、第ｖ部分乗算結果（但し、ｖはｔ−ｑからｑまでの自然数）の第ｔ−ｖ＋１部分のパリティ予測値を選択する。このｖがとり得る値は２ｑ−ｔ＋１個存在するので、２ｑ−ｔ＋１個のパリティ予測値が選択される。そして、選択されたパリティ予測値の排他的論理和を求める。こうして求められた排他的論理和の値が、第ｔ乗算結果データユニットのパリティ値の予測結果となる。
【０１３３】
第２乗算結果データユニットから第２ｑ−１乗算結果データユニットまでの各データユニットについての中位パリティ値の予測は、以上のようにして行う。
【０１３４】
［２．４．奇数パリティの場合のパリティ予測］
以上までに説明したパリティ値の予測手法は、パリティ値として偶数パリティを使用していた。ここでは、奇数パリティを使用する場合の予測手法について説明する。
【０１３５】
偶数パリティは、あるデータを構成する各ビットとそのデータのパリティビットとのうちで値が「１」であるビットの個数が偶数となるようにパリティビットの値（パリティ値）を設定するというものである。このようにするために、偶数パリティにおけるあるデータのパリティ値には、そのデータを構成する各ビットの排他的論理和の値が設定される。
【０１３６】
これに対し、奇数パリティは、あるデータを構成する各ビットとそのデータのパリティビットとのうちで値が「１」であるビットの個数が奇数となるようにパリティビットの値（パリティ値）を設定するというものである。このために、奇数パリティにおけるあるデータのパリティ値には、そのデータを構成する各ビットの排他的論理和の値（すなわち、偶数パリティの場合のパリティ値）に対し、更に値「１」との排他的論理和をとった値が設定される。
【０１３７】
この関係を考慮して、奇数パリティの場合におけるパリティ値の予測式を導出する。
まず、［１．データユニットを考慮しない場合の乗算結果データ列のパリティ予測］での予測に使用する、奇数パリティの場合の予測式を導出する。
【０１３８】
前掲した図１のデータ例において、４ビットのデータである被乗数Ａと乗数Ｙとのキャリーレス乗算の乗算結果Ｚのパリティ値の導出式は、奇数パリティの場合には、下記の［数２４］式となる。
【０１３９】
【数２４】
2013069000.tif 000026
この［数２４］式において、Ｐ＿Ｚ＿ｏｄｄは、奇数パリティの場合における乗算結果Ｚのパリティ値である。なお、以降の説明では、奇数パリティの場合のパリティ値をこのように表記して、前述した偶数パリティの場合のパリティ値と区別することとする。
【０１４０】
この［数２４］式に、前掲した［数１］式を代入して変形すると、
【０１４１】
【数２５】
2013069000.tif 000027
【０１４２】
この［数２５］式において、Ｐ＿Ｚ＿ｏｄｄが「１」となるのは、（ａ＋ｂ＋ｃ＋ｄ）と（ｙ３＋ｙ２＋ｙ１＋ｙ０）とのうちの少なくとも一方の値が「０」の場合である。
【０１４３】
ところで、奇数パリティの場合における被乗数Ａのパリティ値をＰ＿Ａ＿ｏｄｄとし、乗数Ｙのパリティ値をＰ＿Ｙ＿ｏｄｄとすると、パリティ値の定義より、
【０１４４】
【数２６】
2013069000.tif 000028
である。この［数２６］式において、（ａ＋ｂ＋ｃ＋ｄ）の値が「０」となるとＰ＿Ａ＿ｏｄｄの値は「１」であり、（ｙ３＋ｙ２＋ｙ１＋ｙ０）の値が「０」となるとＰ＿Ｙ＿ｏｄｄの値は「１」である。従って、（ａ＋ｂ＋ｃ＋ｄ）と（ｙ３＋ｙ２＋ｙ１＋ｙ０）とのうちの少なくとも一方の値が「０」となる場合とは、Ｐ＿Ａ＿ｏｄｄの値とＰ＿Ｙ＿ｏｄｄの値とのうちの少なくとも一方の値が「１」である。このことから、下記の［数２７］式が得られる。
【０１４５】
【数２７】
2013069000.tif 000029
【０１４６】
なお、前述したように、記号「＾」は論理和を表している。奇数パリティの場合は、被乗数Ａから求めたＰ＿Ａ＿ｏｄｄの値と乗数Ｙから求めたＰ＿Ｙ＿ｏｄｄの値とを［数２７］式に代入してＰ＿Ｚ＿ｏｄｄの値を求める。この値を乗算結果Ｚのパリティ値の予測値とする。
【０１４７】
キャリーレス乗算器の誤動作の検出を行う場合には、被乗数Ａと乗数Ｙとをキャリーレス乗算器に入力して、その出力である乗算結果Ｚを得る。そして、この乗算結果Ｚのパリティ値Ｐ＿Ｚ＿ｏｄｄを［数２５］式により求める。ここで、この［数２５］式により求めたパリティ値Ｐ＿Ｚ＿ｏｄｄが、［数２７］式により求めた予測値と一致するか否かを判定する。ここで、この両者が一致しない場合には、キャリーレス乗算器が誤動作したとの判断を下す。奇数パリティの場合には、キャリーレス乗算器の誤動作は、このようにして検出される。
【０１４８】
次に、［２．乗算結果データ列のデータユニット毎のパリティ予測］での予測に使用する、奇数パリティの場合の予測式を導出する。
まず、［２．１．被乗数データ列及び乗数データ列が共に１個のデータユニットの場合］について説明する。
【０１４９】
前掲した図３のデータ例において、被乗数Ａと乗数Ｙとのキャリーレス乗算の乗算結果Ｚのデータユニット毎の奇数パリティでのパリティ値をＰ＿Ｚ０＿ｏｄｄ及びＰ＿Ｚ１−ｏｄｄは、それぞれ、パリティ値の定義より、
【０１５０】
【数２８】
2013069000.tif 000030
【０１５１】
【数２９】
2013069000.tif 000031
である。
【０１５２】
次に、前述した偶数パリティの場合と同様に、前掲した図３を図４からの変形と見て考える。つまり、乗算結果Ｚの下位より１番目のデータユニットの奇数パリティでのパリティ値Ｐ＿Ｚ０＿ｏｄｄを、図４において太線で囲まれた部分の奇数パリティ値に対し、当該データユニットの位から上位にはみ出した各項の影響を補償して求める。
【０１５３】
図４において太線で囲まれた部分の奇数パリティ値は、データユニットを考慮せずに行う場合における乗算結果Ｚのパリティ値Ｐ＿Ｚ＿ｏｄｄに等しいことは、［数２８］式から明らかである。従って、この場合にパリティ値Ｐ＿Ｚ０＿ｏｄｄの予測値を求める場合の式としては、前掲した［数１１］式の右辺における記号「＋」で結ばれている各項における第１項を、［数２７］式を用いて置き換えた下記の［数３０］式を用いればよいことが分かる。
【０１５４】
【数３０】
2013069000.tif 000032
【０１５５】
また、前述した偶数パリティの場合と同様に、前掲した図３を図５からの変形と見て考える。つまり、乗算結果Ｚの下位より２番目のデータユニットの奇数パリティでのパリティ値Ｐ＿Ｚ１＿ｏｄｄを、図５において太線で囲まれた部分の奇数パリティ値に対し、当該データユニットの位から下位にはみ出した各項の影響を補償して求める。
【０１５６】
図５において太線で囲まれた部分の奇数パリティ値は、データユニットを考慮せずに行う場合における乗算結果Ｚのパリティ値Ｐ＿Ｚ＿ｏｄｄに等しいことは、［数２８］式から明らかである。従って、この場合にパリティ値Ｐ＿Ｚ１＿ｏｄｄの予測値を求める場合の式としては、前掲した［数１２］式の右辺における記号「＋」で結ばれている各項における第１項を、［数２７］式を用いて置き換えた下記の［数３１］式を用いればよいことが分かる。
【０１５７】
【数３１】
2013069000.tif 000033
【０１５８】
キャリーレス乗算器の誤動作の検出を行う場合には、被乗数Ａと乗数Ｙとをキャリーレス乗算器に入力して、その出力である乗算結果Ｚを得る。そして、この乗算結果Ｚのデータユニット毎の奇数パリティでのパリティ値Ｐ＿Ｚ０＿ｏｄｄ及びＰ＿Ｚ１＿ｏｄｄを［数２８］式及び［数２９］式により求める。ここで、この［数２８］式及び［数２９］式により求めたパリティ値Ｐ＿Ｚ０＿ｏｄｄ及びＰ＿Ｚ１＿ｏｄｄが、それぞれ［数３０］式及び［数３１］式により求めた予測値と一致するか否かを判定する。ここで、この両者が一致しない場合には、キャリーレス乗算器が誤動作したとの判断を下す。キャリーレス乗算器の誤動作は、このようにして検出される。
【０１５９】
次に、［２．２．被乗数データ列及び乗数データ列が共に２個のデータユニットの場合］について説明する。
前掲した図７のデータ例において、ブロックＡについての乗算結果の奇数パリティでのパリティ値Ｐ＿ＺＡ＿ｏｄｄの予測式は、前掲した［数３０］式におけるａ、ｂ、ｃ、及びｄをｅ、ｆ、ｇ、及びｈに置き換えればよい。すなわち、パリティ値Ｐ＿ＺＡ＿ｏｄｄは、下記の［数３２］を用いて予測することができる。
【０１６０】
【数３２】
2013069000.tif 000034
【０１６１】
なお、Ｐ＿Ｙ０＿ｏｄｄは、データユニットＹ０の奇数パリティでのパリティ値であり、Ｐ＿Ｙ１＿ｏｄｄは、データユニットＹ１の奇数パリティでのパリティ値である。
【０１６２】
次に、図７におけるブロックＤについての乗算結果の奇数パリティでのパリティ値Ｐ＿ＺＤ＿ｏｄｄの予測式は、前掲した［数３１］式をそのまま利用すればよい。すなわち、パリティ値Ｐ＿ＺＤ＿ｏｄｄは、下記の［数３３］を用いて予測することができる。
【０１６３】
【数３３】
2013069000.tif 000035
【０１６４】
次に、図７におけるブロックＢについての乗算結果の奇数パリティでのパリティ値Ｐ＿ＺＢ＿ｏｄｄの予測式については、前掲した［数３０］式及び［数３１］式と同様に考えて導出すればよい。すなわち、パリティ値Ｐ＿ＺＢ＿ｏｄｄの予測値を求める場合の式としては、前掲した［数１６］式の右辺における記号「＋」で結ばれている各項における第１項を、［数２７］式を用いて置き換えた下記の［数３４］式を用いればよいことが分かる。
【０１６５】
【数３４】
2013069000.tif 000036
【０１６６】
次に、図７におけるブロックＣ、Ｆ、及びＥについてのパリティ値の予測は、これらのブロックとブロックＡ、Ｄ、及びＢとの対応関係を考慮して、ブロックＡ、Ｄ、及びＢのパリティ値の予測式である［数３２］式、［数３３］式、及び［数３４］式を利用する。すなわち、これらのパリティ値の予測には、［数３３］式、［数３４］式、及び［数３６］式におけるｙ０、ｙ１、ｙ２、及びｙ３を各々ｙ４、ｙ５、ｙ６、及びｙ７に置き換えた下記の式を用いる。
【０１６７】
【数３５】
2013069000.tif 000037
【０１６８】
【数３６】
2013069000.tif 000038
【０１６９】
【数３７】
2013069000.tif 000039
【０１７０】
なお、Ｐ＿ＺＣ＿ｏｄｄ、Ｐ＿ＺＦ＿ｏｄｄ、及びＰ＿ＺＥ＿ｏｄｄは、それぞれ、ブロックＣ、Ｆ、及びＥについての乗算結果の奇数パリティでのパリティ値である。
【０１７１】
以上のようにしてブロック毎のパリティ値が求まると、乗算結果Ｚのデータユニット毎の奇数パリティでのパリティ値Ｐ＿Ｚ０＿ｏｄｄ、Ｐ＿Ｚ１＿ｏｄｄ、Ｐ＿Ｚ２＿ｏｄｄ、及びＰ＿Ｚ３＿ｏｄｄは、それぞれ下記の式によって求めることができる。
【０１７２】
【数３８】
2013069000.tif 000040
【０１７３】
【数３９】
2013069000.tif 000041
【０１７４】
【数４０】
2013069000.tif 000042
【０１７５】
【数４１】
2013069000.tif 000043
【０１７６】
なお、上掲した［数３９］式及び［数４０］式では、右辺の末尾に「＋１」が付加されること、すなわち、値「１」との排他的論理和が付加されていることに留意する必要がある。
【０１７７】
例えば、図７において、Ｐ＿Ｚ１＿ｏｄｄをパリティ値の定義に従って求めると、ブロックＢに含まれる各項と及びブロックＣの各項との排他的論理和に対して、更に値「１」との排他的論理和１回をとることになる。これに対し、Ｐ＿ＺＢ＿ｏｄｄは、ブロックＢに含まれる各項の排他的論理和と値「１」との排他的論理和をとったものであり、Ｐ＿ＺＣ＿ｏｄｄは、ブロックＣに含まれる各項の排他的論理和と値「１」との排他的論理和をとったものである。従って、Ｐ＿ＺＢ＿ｏｄｄとＰ＿ＺＣ＿ｏｄｄとの排他的論理和では、値「１」との排他的論理和を２回とることとなってしまう。そこで、［数３９］式においては、値「１」との排他的論理和を付加することで、この影響を解消しているのである。このことは［数４０］式でも同様である。
【０１７８】
このように、奇数パリティにおいては、乗算結果Ｚのデータユニット毎の奇数パリティでのパリティ値を偶数個のブロックの排他的論理和から求める場合には、当該排他的論理和に対し、更に値「１」との排他的論理和をとる必要がある。
【０１７９】
キャリーレス乗算器の誤動作の検出を行う場合には、被乗数Ａと乗数Ｙとをキャリーレス乗算器に入力して、その出力である乗算結果Ｚを得る。そして、この乗算結果Ｚのデータユニット毎のパリティ値Ｐ＿Ｚ０＿ｏｄｄ、Ｐ＿Ｚ１＿ｏｄｄ、Ｐ＿Ｚ２＿ｏｄｄ、及びＰ＿Ｚ３＿ｏｄｄを、パリティ値の定義に従い、この乗算結果Ｚにおけるビットｚ０からビットｚ１４の各値を用いて求める。ここで、このようにして求めたパリティ値Ｐ＿Ｚ０＿ｏｄｄ、Ｐ＿Ｚ１＿ｏｄｄ、Ｐ＿Ｚ２＿ｏｄｄ、及びＰ＿Ｚ３＿ｏｄｄが、それぞれ［数３８］式、［数３９］式、［数４０］式、及び［数４１］式により求めた予測値と一致するか否かを判定する。ここで、この両者が一致しない場合には、キャリーレス乗算器が誤動作したとの判断を下す。キャリーレス乗算器の誤動作は、このようにして検出される。
【０１８０】
次に、［２．３．被乗数データ列及び乗数データ列のサイズを一般化した場合］について説明する。
まず、［２．３．１．下位パリティの予測］については、前述した［２．２．］の場合と同様に考えることができる。
【０１８１】
すなわち、下位パリティ値の予測は、第１被乗数データユニットと第１乗数データユニットとの各々についての値及びパリティ値に基づき、［数３８］式及び［数３２］式を拡張して、例えば、以下の手順に従って行う。
【０１８２】
まず、第１被乗数データユニットのパリティ値と第１乗数データユニットのパリティ値との論理和を求める。この論理和の値を「下位パリティ論理和」と称することとする。なお、この手順は、［数３２］式においては、右辺の、「＋」記号で結ばれている各項のうちの第１項の論理演算に相当する。
【０１８３】
次に、第１被乗数データユニットにおける最上位のビットの値と第１乗数データユニットにおける下位より２桁目のビットの値との論理積を求める。この論理積の値を「下位第１論理積」と称することとする。なお、この手順は、［数３２］式においては右辺の第２項の論理演算に相当する。
【０１８４】
次に、第１被乗数データユニットにおける上位よりｉ桁分（但し、ｉは２からｐ−１までの自然数）の各ビットの値の排他的論理和と第１乗数データユニットにおける下位からｉ＋１桁目のビットの値との論理積を各々求める。このｉがとり得る値はｐ−２個存在するので、論理積の値もｐ−２個得られる。この論理積の値を「下位第２論理積」と称することとする。なお、この手順は、［数３２］式においては右辺の第３項から第４項までの各項の論理演算に相当する。
【０１８５】
なお、これらの下位パリティ論理和、下位第１論理積、及びｐ−２個の下位第２論理積の算出順序は、上述の順序でなくてもよい。
次に、以上のようにして求められた下位パリティ論理和と、下位第１論理積と、ｐ−２個の下位第２論理積との排他的論理和を求める。こうして求められた排他的論理和の値が、下位パリティ値の予測結果となる。なお、この手順は、［数３２］式においては右辺の第１項から第４項までの各項の排他的論理和の演算に相当する。
【０１８６】
次に、［２．３．２．上位パリティの予測］についても、前述した［２．２．］の場合と同様に考えることができる。すなわち、上位パリティ値の予測は、第ｑ被乗数データユニットと第ｑ乗数データユニットとの各々についての値及びパリティ値に基づき、［数４１］式及び［数３６］式を拡張して、例えば、以下の手順に従って行う。
【０１８７】
まず、第ｑ被乗数データユニットのパリティ値と第ｑ乗数データユニットのパリティ値との論理和を求める。この論理積の値を「上位パリティ論理和」と称することとする。なお、この手順は、［数３６］式においては、右辺の、「＋」記号で結ばれている各項のうちの第１項の論理演算に相当する。
【０１８８】
次に、第ｑ被乗数データユニットにおける最下位のビットの値と第ｑ乗数データユニットにおける最上位のビットの値との論理積を求める。この論理積の値を「上位第１論理積」と称することとする。なお、この手順は、［数３６］式においては右辺の第５項の論理演算に相当する。
【０１８９】
次に、第ｑ被乗数データユニットにおける下位よりｊ桁分（但し、ｊは２からｐまでの自然数）の各ビットの値の排他的論理和と第ｑ乗数データユニットにおける上位からｊ桁目のビットの値との論理積を各々求める。このｊがとり得る値はｐ−１個存在するので、論理積の値もｐ−１個得られる。この論理積の値を「上位第２論理積」と称することとする。なお、この手順は、［数３６］式においては右辺の第２項から第４項までの各項の論理演算に相当する。
【０１９０】
なお、これらの上位パリティ論理和、上位第１論理積、及びｐ−１個の上位第２論理積の算出順序は、上述の順序でなくてもよい。
次に、以上のようにして求められた上位パリティ論理和と、上位第１論理積と、ｐ−１個の上位第２論理積との排他的論理和を求める。こうして求められた排他的論理和の値が、上位パリティ値の予測結果となる。なお、この手順は、［数３６］式においては右辺の第１項から第５項までの各項の排他的論理和の演算に相当する。
【０１９１】
また、［２．３．３．中位パリティの予測］における［２．３．３．１．部分乗算結果のデータユニット毎のパリティ値の予測］についても、前述した［２．２．］の場合と同様に考えることができる。
【０１９２】
まず、第１部分のパリティ値の予測は、第１被乗数データユニットと第ｒ乗数データユニット（但し、ｒは１からｑまでの自然数）との各々についての値及びパリティ値に基づき、［数３２］式若しくは［数３５］式を拡張して、例えば、以下の手順に従って行う。
【０１９３】
まず、第１被乗数データユニットのパリティ値と第ｒ乗数データユニットのパリティ値との論理和を求める。この論理和の値を「下位部分パリティ論理和」と称することとする。なお、この手順は、［数３２］式においては、右辺における、「＋」記号で結ばれている各項のうちの第１項の論理演算に相当する。
【０１９４】
次に、第１被乗数データユニットにおける最上位のビットの値と第ｒ乗数データユニットにおける下位より２桁目のビットの値との論理積を求める。この論理積の値を「下位部分第１論理積」と称することとする。なお、この手順は、［数３２］式においては右辺の第２項の論理演算に相当する。
【０１９５】
次に、第１被乗数データユニットにおける上位よりｇ桁分（但し、ｇは２からｐ−１までの自然数）の各ビットの値の排他的論理和と第ｒ乗数データユニットにおける下位からｇ＋１桁目のビットの値との論理積を各々求める。このｇがとり得る値はｐ−２個存在するので、論理積の値もｐ−２個得られる。この論理積の値を「下位部分第２論理積」と称することとする。なお、この手順は、［数３２］式においては右辺の第３項から第４項までの各項の論理演算に相当する。
【０１９６】
なお、これらの下位部分パリティ論理和、下位部分第１論理積、及びｐ−２個の下位部分第２論理積の算出順序は、上述の順序でなくてもよい。
次に、以上のようにして求められた下位部分パリティ論理和と、下位部分第１論理積と、ｐ−２個の下位部分第２論理積との排他的論理和を求める。こうして求められた排他的論理和の値が、第１部分のパリティ値の予測結果となる。なお、この手順は、［数３２］式においては右辺の第１項から第４項までの各項の排他的論理和の演算に相当する。
【０１９７】
また、第ｑ＋１部分のパリティ値の予測は、第ｑ被乗数データユニットと第ｒ乗数データユニットとの各々についての値及びパリティ値に基づき、［数３３］式若しくは［数３６］式を拡張して、例えば、以下の手順に従って行う。
【０１９８】
まず、第ｑ被乗数データユニットのパリティ値と第ｒ乗数データユニットのパリティ値との論理和を求める。この論理和の値を「上位部分パリティ論理和」と称することとする。なお、この手順は、［数３３］式においては、右辺における、「＋」記号で結ばれている各項のうちの第１項の論理演算に相当する。
【０１９９】
次に、第ｑ被乗数データユニットにおける最下位のビットの値と第ｒ乗数データユニットにおける最上位のビットの値との論理積を求める。この論理積の値を「上位部分第１論理積」と称することとする。なお、この手順は、［数３３］式においては右辺の第５項の論理演算に相当する。
【０２００】
次に、第ｑ被乗数データユニットにおける下位よりｈ桁分（但し、ｈは２からｐまでの自然数）の各ビットの値の排他的論理和と第ｑ乗数データユニットにおける上位からｈ桁目のビットの値との論理積を各々求める。このｈがとり得る値はｐ−１個存在するので、論理積の値もｐ−１個得られる。この論理積の値を「上位部分第２論理積」と称することとする。なお、この手順は、［数３３］式においては右辺の第２項から第４項までの各項の論理演算に相当する。
【０２０１】
なお、これらの上位部分パリティ論理和、上位部分第１論理積、及びｐ−１個の上位部分第２論理積の算出順序は、上述の順序でなくてもよい。
次に、以上のようにして求められた上位部分パリティ論理和と、上位部分第１論理積と、ｐ−１個の上位部分第２論理積との排他的論理和を求める。こうして求められた排他的論理和の値が、第ｑ＋１部分のパリティ値の予測結果となる。なお、この手順は、［数３３］式においては右辺の第１項から第５項までの各項の排他的論理和の演算に相当する。
【０２０２】
更に、第ｋ部分（但し、ｋは２からｑまでの自然数）についてのパリティ値の予測は、［数３４］式若しくは［数３７］式を拡張して、例えば、以下の手順で行う。
まず、第ｋ被乗数データユニットのパリティ値と第ｒ乗数データユニットのパリティ値との論理和を求める。この論理和の値を「中位部分パリティ論理和」と称することとする。なお、この手順は、［数３４］式においては、右辺の、「＋」記号で結ばれている各項のうちの第１項の論理演算に相当する。
【０２０３】
次に、第ｋ被乗数データユニットにおける最上位のビットの値と第ｒ乗数データユニットにおける下位より２桁目のビットの値との論理積を求める。この論理積の値を「中位部分第１論理積」と称することとする。なお、この手順は、［数３４］式においては第２項の論理演算に相当する。
【０２０４】
次に、第ｋ被乗数データユニットにおける上位よりｍ桁分（但し、ｍは２からｐ−１までの自然数）の各ビットの値の排他的論理和と第ｒ乗数データユニットにおける下位からｍ＋１桁目のビットの値との論理積を各々求める。このｍがとり得る値はｐ−２個存在するので、論理積の値もｐ−２個得られる。この論理積の値を「中位部分第２論理積」と称することとする。なお、この手順は、［数３４］式においては右辺の第３項から第４項までの各項の論理演算に相当する。
【０２０５】
次に、第ｋ−１被乗数データユニットにおける最上位のビットの値と第ｒ乗数データユニットにおける下位より２桁目のビットの値との論理積を求める。この論理積の値を「中位部分第３論理積」と称することとする。なお、この手順は、［数３４］式においては右辺の第５項の論理演算に相当する。
【０２０６】
次に、第ｋ−１被乗数データユニットにおける下位よりｎ桁分（但し、ｎは２からｐ−１までの自然数）の各ビットの値の排他的論理和と第ｒ乗数データユニットにおける下位よりｎ＋１桁目のビットの値との論理積を各々求める。このｎがとり得る値はｐ−２個存在するので、論理積の値もｐ−２個得られる。この論理積の値を「中位部分第４論理積」と称することとする。なお、この手順は、［数３４］式においては右辺の第６項から第７項までの各項の論理演算に相当する。
【０２０７】
なお、これらの中位部分パリティ論理和、中位部分第１論理積、ｐ−２個の中位部分第２論理積、中位部分第３論理積、及びｐ−２個の中位部分第４論理積の算出順序は、上述の順序でなくてもよい。
【０２０８】
次に、以上のようにして求められた中位部分パリティ論理和と、中位部分第１論理積と、ｐ−２個の中位部分第２論理積と、中位部分第３論理積と、ｐ−２個の中位部分第４論理積との排他的論理和を求める。こうして求められた排他的論理和の値が、第ｋ部分についてのパリティ値の予測結果となる。なお、この手順は、［数３４］式においては右辺の第１項から第７項までの各項の排他的論理和の演算に相当する。
【０２０９】
次に、前述した［２．３．３．２．部分乗算結果のデータユニット毎のパリティ値の予測結果に基づく中位パリティの予測］を、奇数パリティの場合について説明する。
まず、前述した手順を、変数ｒがとり得る全ての値について行うことで、第１部分乗算結果から第ｒ部分乗算結果の各々についてのデータユニット毎のパリティ予測値が求まる。乗算結果Ｚを構成しているデータユニット毎の中位パリティ値の予測は、これらの部分乗算結果のデータユニット毎のパリティ予測値を所定の規則に従って選択し、選択されたパリティ予測値の排他的論理和を求めることで行う。但し、前述したように、奇数パリティにおいては、乗算結果Ｚのデータユニット毎の奇数パリティでのパリティ値を偶数個のブロックの排他的論理和から求める場合には、当該排他的論理和に対し、更に値「１」との排他的論理和をとる必要があることに注意する。
【０２１０】
まず、乗算結果Ｚを構成しているデータユニットのうち、第ｓ乗算結果データユニット（但し、ｓは２からｑまでの自然数）のパリティ値の予測手法について説明する。
第ｓ乗算結果データユニットのパリティ値の予測は、前掲した図７において、ブロックＢについてのパリティ予測値とブロックＣについてのパリティ予測値とを用いて行ったパリティ値Ｐ＿Ｚ１の予測と同様に考えることができる。すなわち、第ｓ乗算結果データユニットのパリティ値の予測は、［数３９］式を考慮して、例えば、以下の手順に従って行う。
【０２１１】
まず、第ｕ部分乗算結果（但し、ｕは１からｓまでの自然数）の第ｓ−ｕ＋１部分のパリティ予測値を選択する。このｕがとり得る値はｓ個存在するので、ｓ個のパリティ予測値が選択される。そして、選択されたｓ個のパリティ予測値の排他的論理和を求める。ここで、ｓが奇数の場合には、こうして求められた排他的論理和の値が、第ｓ乗算結果データユニットのパリティ値の予測結果となる。一方、ここで、ｓが偶数の場合には、こうして求められた排他的論理和と値「１」との排他的論理和の値が、第ｓ乗算結果データユニットのパリティ値の予測結果となる。
【０２１２】
次に、乗算結果Ｚを構成しているデータユニットのうち、第ｔ乗算結果データユニット（但し、ｔはｑ＋１から２ｑ−１までの自然数）のパリティ値の予測手法について説明する。
【０２１３】
第ｔ乗算結果データユニットのパリティ値の予測は、前掲した図７において、ブロックＤについてのパリティ予測値とブロックＥについてのパリティ予測値とを用いて行ったパリティ値Ｐ＿Ｚ２の予測と同様に考えることができる。すなわち、第ｔ乗算結果データユニットのパリティ値の予測は、［数４０］式を考慮して、例えば、以下の手順に従って行う。
【０２１４】
まず、第ｖ部分乗算結果（但し、ｖはｔ−ｑからｑまでの自然数）の第ｔ−ｖ＋１部分のパリティ予測値を選択する。このｖがとり得る値は２ｑ−ｔ＋１個存在するので、２ｑ−ｔ＋１個のパリティ予測値が選択される。そして、選択されたパリティ予測値の排他的論理和を求める。ここで、２ｑ−ｔ＋１が奇数の場合には、こうして求められた排他的論理和の値が、第ｔ乗算結果データユニットのパリティ値の予測結果となる。一方、ここで、２ｑ−ｔ＋１が偶数の場合には、こうして求められた排他的論理和と値「１」との排他的論理和の値が、第ｔ乗算結果データユニットのパリティ値の予測結果となる。
【０２１５】
第２乗算結果データユニットから第２ｑ−１乗算結果データユニットまでの各データユニットについての中位パリティ値の予測は、以上のようにして行う。
【０２１６】
［３．誤動作検出機能を有するキャリーレス乗算器を備えた演算処理装置の構成］
次に、誤動作検出機能を有するキャリーレス乗算器を備えた演算処理装置について説明する。
【０２１７】
図８は、演算処理装置の一実施例の構成図である。この演算処理装置１００は、演算部１１０、演算制御部１２０、１次キャッシュ部１３０、及び２次キャッシュ部１４０を備えており、メモリ１５０が接続されて使用される。
【０２１８】
演算部１１０は、制御部１２０による制御に従って、入力されたデータに対して各種の演算を実行し、当該演算の結果として得られたデータを出力する。この演算部１１０は演算器１１１、レジスタ１１２、及び演算制御部１１３を備えている。
【０２１９】
演算器１１１は、各種の算術演算や論理演算を行うハードウェアである。特に、この演算器１１１は、後述するキャリーレス乗算器２００を備えている。
レジスタ１１２は、演算部１１０に入力されたデータ、及び演算部１１０から出力するデータを１次キャッシュ部１３０との間で授受するために、データの一時的な保持を行う。
【０２２０】
演算制御部１１３は、制御部１２０による制御に従って、演算器１１１及びレジスタ１１２の動作を制御する。
制御部１２０は、１次キャッシュ部１３０で保持されている命令データを所定の順序で読み出し、読み出された命令データに従って演算部１１０を制御して各種の演算を実行させる。
【０２２１】
１次キャッシュ部１３０は、メモリ１５０に蓄積されているデータのうちで使用頻度の高いデータを蓄積しておく高速のメモリである。１次キャッシュ部１３０は、命令データを蓄積しておく命令キャッシュ１３１と、演算器１１１への入力データや演算器１１１からの出力データを蓄積しておくデータキャッシュ１３２とを備えている。
【０２２２】
２次キャッシュ部１４０は、メモリ１５０に蓄積されているデータのうちで、使用頻度の高いデータであって１次キャッシュ部１３０には蓄積されていないデータを蓄積しておく、１次キャッシュ部１３０よりも容量は大きいが低速のメモリである。
【０２２３】
メモリ１５０は、演算処理装置への動作の命令が表されている命令データ、及び、演算器１１１への入力データや演算器１１１からの出力データを記憶する。
【０２２４】
［３．１．データユニットを考慮しない場合のキャリーレス乗算器の構成］
次に図９について説明する。図９は、図８の演算処理装置１００に演算器１１１の一部として備えられているキャリーレス乗算器の第一例の構成図である。このキャリーレス乗算器２００は、［１．データユニットを考慮しない場合の乗算結果データ列のパリティ予測］で説明した誤動作検出機能を有している。
【０２２５】
図９のキャリーレス乗算器２００は、キャリーレス乗算回路２０１、キャリーレス乗算パリティ予測回路２０２、及びパリティチェック回路２０３を備えている。
キャリーレス乗算回路２０１は、どちらも４ビットのデータである被乗数Ａと乗数Ｙとのキャリーレス乗算を行って乗算結果Ｚを出力する回路であり、前掲した［数１］式の演算を行う回路である。
【０２２６】
キャリーレス乗算パリティ予測回路２０２は、偶数パリティの場合には、被乗数Ａの偶数パリティ値Ｐ＿Ａと、乗数Ｙの偶数パリティ値Ｐ＿Ｙとから、乗算結果Ｚのパリティ値の予測値Ｐ＿Ｚ＿Ｐの予測を行う回路である。また、奇数パリティの場合には、キャリーレス乗算パリティ予測回路２０２は、被乗数Ａの奇数パリティ値Ｐ＿Ａ＿ｏｄｄと、乗数Ｙの偶数パリティ値Ｐ＿Ｙ＿ｏｄｄとから、乗算結果Ｚのパリティ値の予測値Ｐ＿Ｚ＿Ｐの予測を行う回路である。
【０２２７】
パリティチェック回路２０３は、キャリーレス乗算回路２０１が出力した乗算結果Ｚのパリティ値Ｐ＿Ｚを求めて、キャリーレス乗算パリティ予測回路２０２の出力である予測値Ｐ＿Ｚ＿Ｐの予測と一致するか否かを判定する回路である。
【０２２８】
次に、キャリーレス乗算回路２０１の構成について説明する。図９のキャリーレス乗算回路２０１の具体的な回路構成を図１０Ａから図１０Ｇの各図に示す。
図１０Ａから図１０Ｇの各図の回路は、被乗数Ａの各ビットａ、ｂ、ｃ、及びｄと、乗数Ｙの各ビットｙ３、ｙ２、ｙ１、及びｙ０とのキャリーレス乗算を行って、乗算結果Ｚの各ビットｚ６、ｚ５、ｚ４、ｚ３、ｚ２、ｚ１、及びｚ０の値を得る回路である。なお、乗算結果Ｚのビットｚ７の値は常に「０」であるので、省略している。
【０２２９】
図１０Ａの回路は、ＡＮＤ回路（論理積回路）４０１にビットｄ及びｙｏの値をそれぞれ入力したときの出力を、ビットｚ０の値とする回路であり、前掲した［数１］式における一番目の式の演算を行う回路である。
【０２３０】
図１０Ｂの回路は、まず、ＡＮＤ回路４１１にビットｃ及びｙ０の値をそれぞれ入力したときの出力と、ＡＮＤ回路４１２にビットｄ及びｙ１の値をそれぞれ入力したときの出力とをＸＯＲ回路（排他的論理和回路）４１３に入力したときの出力を得る。そしてこのＸＯＲ回路４１３の出力をビットｚ１の値とする。この図１０Ｂの回路は、前掲した［数１］式における二番目の式の演算を行う回路である。
【０２３１】
図１０Ｃの回路は、まず、ＡＮＤ回路４２１にビットｂ及びｙ０の値をそれぞれ入力したときの出力と、ＡＮＤ回路４２２にビットｃ及びｙ１の値をそれぞれ入力したときの出力とをＸＯＲ回路４２３に入力したときの出力を得る。そして、このＸＯＲ回路４２３の出力と、ＡＮＤ回路４２４にビットｄ及びｙ２の値をそれぞれ入力したときの出力とをＸＯＲ回路４２５に入力したときのＸＯＲ回路４２５の出力を、ビットｚ２の値とする。この回路は、前掲した［数１］式における三番目の式の演算を行う回路である。
【０２３２】
図１０Ｄの回路は、まず、ＡＮＤ回路４３１にビットａ及びｙ０の値をそれぞれ入力したときの出力と、ＡＮＤ回路４３２にビットｂ及びｙ１の値をそれぞれ入力したときの出力とをＸＯＲ回路４３３に入力したときの出力を得る。次に、このＸＯＲ回路４３３の出力と、ＡＮＤ回路４３４にビットｃ及びｙ２の値をそれぞれ入力したときの出力とをＸＯＲ回路４３５に入力したときの出力を得る。そして、このＸＯＲ回路４３５の出力と、ＡＮＤ回路４３６にビットｄ及びｙ３の値をそれぞれ入力したときの出力とをＸＯＲ回路４３７に入力したときのＸＯＲ回路４３７の出力を、ビットｚ３の値とする。この回路は、前掲した［数１］式における四番目の式の演算を行う回路である。
【０２３３】
図１０Ｅの回路は、まず、ＡＮＤ回路４４１にビットａ及びｙ１の値をそれぞれ入力したときの出力と、ＡＮＤ回路４４２にビットｂ及びｙ２の値をそれぞれ入力したときの出力とをＸＯＲ回路４４３に入力したときの出力を得る。そして、このＸＯＲ回路４４３の出力と、ＡＮＤ回路４４４にビットｃ及びｙ３の値をそれぞれ入力したときの出力とをＸＯＲ回路４４５に入力したときのＸＯＲ回路４４５の出力を、ビットｚ４の値とする。この回路は、前掲した［数１］式における五番目の式の演算を行う回路である。
【０２３４】
図１０Ｆの回路は、まず、ＡＮＤ回路４５１にビットａ及びｙ２の値をそれぞれ入力したときの出力と、ＡＮＤ回路４５２にビットｂ及びｙ３の値をそれぞれ入力したときの出力とをＸＯＲ回路４５３に入力したときの出力を得る。そしてこのＸＯＲ回路４５３の出力をビットｚ５の値とする。この図１０Ｆの回路は、前掲した［数１］式における六番目の式の演算を行う回路である。
【０２３５】
図１０Ｇは、ＡＮＤ回路４６１にビットａ及びｙ３の値をそれぞれ入力したときの出力を、ビットｚ６の値とする回路であり、前掲した［数１］式における七番目の式の演算を行う回路である。
【０２３６】
図９のキャリーレス乗算回路２０１は、以上のように構成されている。
次に図９のキャリーレス乗算パリティ予測回路２０２の構成について説明する。図９のキャリーレス乗算パリティ予測回路２０２の具体的な回路構成を図１１Ａ及び図１１Ｂに示す。
【０２３７】
図１１Ａに図解した第一の例の回路は、パリティ値として偶数パリティを使用する場合の回路であり、図１１Ｂに図解した第二の例の回路は、パリティ値として奇数パリティを使用する場合の回路である。
【０２３８】
図１１Ａの回路は、ＡＮＤ回路４７１に被乗数Ａの偶数パリティ値Ｐ＿Ａと乗数Ｙの偶数パリティ値Ｐ＿Ｙとをそれぞれ入力したときの出力を、キャリーレス乗算回路２０１が出力する乗算結果Ｚについてのパリティ値の予測値Ｐ＿Ｚ＿Ｐとする回路である。この図１１Ａの回路は、前掲した［数５］式の演算を行う回路である。
【０２３９】
図１１Ｂの回路は、ＯＲ回路（論理和回路）４７２に被乗数Ａの奇数パリティ値Ｐ＿Ａ＿ｏｄｄと、乗数Ｙの奇数パリティ値Ｐ＿Ｙ＿ｏｄｄとをそれぞれ入力したときの出力を、乗算結果Ｚについてのパリティ値の予測値Ｐ＿Ｚ＿Ｐとする回路である。この図１１Ｂの回路は、前掲した［数２７］式の演算を行う回路である。
【０２４０】
次に図９のパリティチェック回路２０３の構成について説明する。図９のパリティチェック回路２０３の具体的な回路構成を図１２Ａ及び図１２Ｂに示す。
図１２Ａに図解した第一の例の回路は、パリティ値として偶数パリティを使用する場合の回路であり、図１２Ｂに図解した第二の例の回路は、パリティ値として奇数パリティを使用する場合の回路である。
【０２４１】
図１２Ａの回路は、まず、キャリーレス乗算回路２０１が出力した乗算結果Ｚのパリティ値Ｐ＿Ｚを求める。このために、まず、ＸＯＲ回路４８１にビットｚ６及びｚ５の値をそれぞれ入力したときの出力を得る。次に、このＸＯＲ回路４８１の出力とビットｚ４の値とをＸＯＲ回路４８２にそれぞれ入力したときの出力を得る。次に、このＸＯＲ回路４８２の出力とビットｚ３の値とをＸＯＲ回路４８３にそれぞれ入力したときの出力を得る。次に、このＸＯＲ回路４８３の出力とビットｚ２の値とをＸＯＲ回路４８４にそれぞれ入力したときの出力を得る。次に、このＸＯＲ回路４８４の出力とビットｚ１の値とをＸＯＲ回路４８５にそれぞれ入力したときの出力を得る。そして、このＸＯＲ回路４８５の出力とビットｚ０の値とをＸＯＲ回路４８６にそれぞれ入力したときの出力を得る。このＸＯＲ回路４８６の出力がパリティ値Ｐ＿Ｚである。ここまでの回路構成は、前掲した［数２］式の演算を行う回路である。
【０２４２】
なお、２入力のＸＯＲ回路４８１〜４８６を用いて上述のように構成する代わりに、７入力のＸＯＲ回路を使用し、このＸＯＲ回路にビットｚ６〜ｚ０の各値を入力したときの出力をパリティ値Ｐ＿Ｚとしてもよい。
【０２４３】
図１２Ａの回路では、更に、上述のようにして求められたパリティ値Ｐ＿Ｚが、キャリーレス乗算パリティ予測回路２０２の出力である予測値Ｐ＿Ｚ＿Ｐと一致するか否かを判定する。このために、ＸＯＲ回路４８６の出力（すなわちパリティ値Ｐ＿Ｚ）と予測値Ｐ＿Ｚ＿ＰとをＸＯＲ回路４９１に入力したときの出力を得る。そして、このＸＯＲ回路４９１の出力が、チェック結果Ｐ＿Ｚ＿Ｅとして出力される。このチェック結果Ｐ＿Ｚ＿Ｅは、「０」又は「１」の値をとり、値が「１」の場合には、キャリーレス乗算器の誤動作を検出したことを表している。
【０２４４】
なお、２入力のＸＯＲ回路４８１〜４８６及び４９１を用いて上述のように構成する代わりに、８入力のＸＯＲ回路を使用し、このＸＯＲ回路にビットｚ６〜ｚ０の各値と予測値Ｐ＿Ｚ＿Ｐとを入力したときの出力をチェック結果Ｐ＿Ｚ＿Ｅとしてもよい。
【０２４５】
次に図１２Ｂの回路について説明する。図１２Ｂの回路において、ＸＯＲ回路４８１からＸＯＲ回路４８６までの構成は、図１２Ａの構成と同様である。但し、図１２Ｂの回路では、このＸＯＲ回路４８６の出力と値「１」とをＸＯＲ回路４８７にそれぞれ入力したときの出力を得る。このＸＯＲ回路４８７の出力がパリティ値Ｐ＿Ｚである。ここまでの回路構成は、前掲した［数２４］式の演算を行う回路である。
【０２４６】
図１２Ｂの回路では、上述のようにして求められたパリティ値Ｐ＿Ｚが、キャリーレス乗算パリティ予測回路２０２の出力である予測値Ｐ＿Ｚ＿Ｐの予測と一致するか否かを判定する。このために、ＸＯＲ回路４８７の出力（すなわちパリティ値Ｐ＿Ｚ）と予測値Ｐ＿Ｚ＿ＰとをＸＯＲ回路４９１に入力したときの出力を得る。そして、このＸＯＲ回路４９１が、チェック結果Ｐ＿Ｚ＿Ｅとして出力される。このチェック結果Ｐ＿Ｚ＿Ｅは、「０」又は「１」の値をとり、値が「１」の場合には、キャリーレス乗算器の誤動作を検出したことを表している。
【０２４７】
なお、２入力のＸＯＲ回路４８１〜４８７及び４９１を用いて上述のように構成する代わりに、９入力のＸＯＲ回路にビットｚ６〜ｚ０の各値と値「１」と予測値Ｐ＿Ｚ＿Ｐとを入力したときの出力をチェック結果Ｐ＿Ｚ＿Ｅとしてもよい。
【０２４８】
なお、図１２Ｂの回路においては、ＸＯＲ回路４８７を使用する代わりにＮＯＴ回路（否定回路）を使用し、ＸＯＲ回路４８６の出力をＮＯＴ回路に入力したときの出力をパリティ値Ｐ＿Ｚとしてもよい。
【０２４９】
［３．２．被乗数データ列及び乗数データ列が共に１個のデータユニットで構成されている場合のキャリーレス乗算器の構成］
次に図１３について説明する。図１３は、図８の演算処理装置１００に演算器１１１の一部として備えられているキャリーレス乗算器の第二の例の構成図である。このキャリーレス乗算器２００は、［２．１．被乗数データ列及び乗数データ列が共に１個のデータユニットの場合］で説明した誤動作検出機能を有している。
【０２５０】
図１３の構成は、キャリーレス乗算パリティ予測回路２０２が、乗算結果Ｚのパリティ値のデータユニット毎の予測を行う点において、図９に図解した第一の例の構成と異なっている。つまり、キャリーレス乗算パリティ予測回路２０２は、乗算結果Ｚにおける下位より１番目のデータユニットのパリティ値の予測値Ｐ＿Ｚ０＿Ｐと、乗算結果Ｚにおける下位より１番目のデータユニットに続くデータのパリティ値Ｐ＿Ｚ１＿Ｐとを出力する。また、図１３キャリーレス乗算パリティ予測回路２０２では、パリティ値の予測のために、被乗数Ａと乗数Ｙとの各々のパリティ値と共に、被乗数Ａと乗数Ｙとの各々の値も用いる点においても、図９に図解した第一の例の構成と異なっている。
【０２５１】
図１３におけるキャリーレス乗算回路２０１は、図９に図解した第一の例におけるものと同一であるので、詳細構成の説明は省略する。
次に、図１３におけるキャリーレス乗算パリティ予測回路２０２の構成について説明す。図１３のキャリーレス乗算パリティ予測回路２０２の具体的な回路構成を図１４Ａ、図１４Ｂ、図１４Ｃ、及び図１４Ｄに示す。
【０２５２】
図１４Ａ及び図１４Ｂに図解した第一の例の回路は、パリティ値として偶数パリティを使用する場合の回路であり、図１４Ｃ及び図１４Ｄに図解した第二の例の回路は、パリティ値として奇数パリティを使用する場合の回路である。
【０２５３】
図１４Ａの回路は、被乗数Ａの値及びパリティ値と乗数Ｙの値及びパリティ値とから、キャリーレス乗算回路２０１が出力する乗算結果Ｚにおける下位より１番目のデータユニットのパリティ値の予測値Ｐ＿Ｚ０＿Ｐを求める回路である。この図１４Ａの回路は、前掲した［数１１］式の演算を行う回路である。
【０２５４】
図１４Ａにおいて、ＡＮＤ回路５０１は、「＋」記号で結ばれている［数１１］式の右辺の第１項、すなわちＰ＿Ａ＊Ｐ＿Ｙの演算を行う回路である。また、ＡＮＤ回路５１１は、［数１１］式の右辺の第２項、すなわちａ＊ｙ１の演算を行う回路である。更に、ＸＯＲ回路５１２及びＡＮＤ回路５１３は、［数１１］式の右辺の第３項、すなわち（ａ＋ｂ）＊ｙ２の演算を行う回路である。そして、ＸＯＲ回路５１４及びＡＮＤ回路５１５は、［数１１］式の右辺の第４項、すなわち（ａ＋ｂ＋ｃ）＊ｙ３の演算を行う回路である。そして、ＸＯＲ回路５１６は、［数１１］式の右辺の第１項から第４項までの各項の値の排他的論理和の演算を行って、パリティ予測値Ｐ＿Ｚ０＿Ｐを得る回路である。
【０２５５】
図１４Ｂの回路は、被乗数Ａの値及びパリティ値と乗数Ｙの値及びパリティ値とから、キャリーレス乗算回路２０１が出力する乗算結果Ｚにおける下位より１番目のデータユニットに続くデータのパリティ値の予測値Ｐ＿Ｚ１＿Ｐを求める回路である。この図１４Ｂの回路は、前掲した［数１２］式の演算を行う回路である。
【０２５６】
図１４Ｂにおいて、ＡＮＤ回路５２１は、「＋」記号で結ばれている［数１２］式の右辺の第１項、すなわちＰ＿Ａ＊Ｐ＿Ｙの演算を行う回路である。また、ＸＯＲ回路５３１及びＡＮＤ回路５３２は、［数１２］式の右辺の第２項、すなわち（ａ＋ｂ＋ｃ＋ｄ）＊ｙ０の演算を行う回路である。更に、ＯＲ回路５３３及びＡＮＤ回路５３４は、［数１２］式の右辺の第３項、すなわち（ａ＋ｂ＋ｃ）＊ｙ１の演算を行う回路である。そして、ＯＲ回路５３５及びＡＮＤ回路５３６は、［数１２］式の右辺の第４項、すなわち（ａ＋ｂ）＊ｙ２の演算を行う回路である。また、ＡＮＤ回路５３７は、［数１２］式の右辺の第５項、すなわちａ＊ｙ３の演算を行う回路である。そして、ＸＯＲ回路５３７は、［数１２］式の右辺の第１項から第５項までの各項の値の排他的論理和の演算を行って、パリティ予測値Ｐ＿Ｚ１＿Ｐを得る回路である。
【０２５７】
図１４Ｃの回路は、被乗数Ａの値及びパリティ値と乗数Ｙの値及びパリティ値とから、キャリーレス乗算回路２０１が出力する乗算結果Ｚにおける下位より１番目のデータユニットのパリティ値の予測値Ｐ＿Ｚ０＿Ｐを求める回路である。この図１４Ｃの回路は、前掲した［数３０］式の演算を行う回路である。
【０２５８】
図１４Ｃの回路は、図１４Ａの回路におけるＡＮＤ回路５０１をＯＲ回路５０２に置換したものである。このＯＲ回路５０２は、「＋」記号で結ばれている［数３０］式の右辺の第１項、すなわちＰ＿Ａ＿ｏｄｄ＾Ｐ＿Ｙ＿ｏｄｄの演算を行う回路である。従って、ＸＯＲ回路５１６は、図１４Ｃにおいては、［数３０］式の右辺の第１項から第４項までの各項の値の排他的論理和の演算を行って、パリティ予測値Ｐ＿Ｚ０＿Ｐを得る回路である。
【０２５９】
図１４Ｄの回路は、被乗数Ａの値及びパリティ値と乗数Ｙの値及びパリティ値とから、キャリーレス乗算回路２０１が出力する乗算結果Ｚにおける下位より１番目のデータユニットに続くデータのパリティ値の予測値Ｐ＿Ｚ１＿Ｐを求める回路である。この図１４Ｄの回路は、前掲した［数３１］式の演算を行う回路である。
【０２６０】
図１４Ｄの回路は、図１４Ｂの回路におけるＡＮＤ回路５２１をＯＲ回路５２２に置換したものである。このＯＲ回路５２２は、「＋」記号で結ばれている［数３１］式の右辺の第１項、すなわちＰ＿Ａ＿ｏｄｄ＾Ｐ＿Ｙ＿ｏｄｄの演算を行う回路である。従って、ＸＯＲ回路５３８は、図１４Ｄにおいては、［数３１］式の右辺の第１項から第５項までの各項の値の排他的論理和の演算を行って、パリティ予測値Ｐ＿Ｚ１＿Ｐを得る回路である。
【０２６１】
次に図１３のパリティチェック回路２０３の構成について説明する。図１３のパリティチェック回路２０３の具体的な回路構成を図１５Ａ及び図１５Ｂに示す。
図１５Ａに図解した第一の例の回路は、パリティ値として偶数パリティを使用する場合の回路であり、図１５Ｂに図解した第二の例の回路は、パリティ値として奇数パリティを使用する場合の回路である。
【０２６２】
図１５Ａの回路は、まず、キャリーレス乗算回路２０１が出力した乗算結果Ｚについての、下位より１番目のデータユニットのパリティ値Ｐ＿Ｚ０と、乗算結果Ｚの下位より２番目のデータユニットのパリティ値Ｐ＿Ｚ１とを求める。
【０２６３】
このために、図１５Ａの回路は、まず、ＸＯＲ回路５４１にビットｚ０、ｚ１、ｚ２、及びｚ３の値をそれぞれ入力したときの出力を得る。このＸＯＲ回路５４１の出力がパリティ値Ｐ＿Ｚ０である。ここまでの回路構成は、前掲した［数６］式の演算を行う回路である。
【０２６４】
また、図１５Ａの回路は、ＸＯＲ回路５４２にビットｚ４、ｚ５、及びｚ６の値をそれぞれ入力したときの出力を得る。このＸＯＲ回路５４２の出力がパリティ値Ｐ＿Ｚ１である。ここまでの回路構成は、前掲した［数７］式の演算を行う回路である。
【０２６５】
図１５Ａの回路では、更に、上述のようにして求められたパリティ値Ｐ＿Ｚ０及びＰ＿Ｚ１が、キャリーレス乗算パリティ予測回路２０２の出力である予測値Ｐ＿Ｚ０＿Ｐ及びＰ＿Ｚ１＿Ｐとそれぞれ一致するか否かを判定する。このために、ＸＯＲ回路５４１の出力（すなわちパリティ値Ｐ＿Ｚ０）と予測値Ｐ＿Ｚ０＿ＰとをＸＯＲ回路５４３に入力したときの出力を得る。更に、ＸＯＲ回路５４２の出力（すなわちパリティ値Ｐ＿Ｚ１）と予測値Ｐ＿Ｚ１＿ＰとをＸＯＲ回路５４４に入力したときの出力を得る。そして、このＸＯＲ回路５４３の出力とＸＯＲ回路５４４の出力とをＯＲ回路５４５に入力したときの出力を得る。そして、このＯＲ回路５４５の出力が、チェック結果Ｐ＿Ｚ＿Ｅとして出力される。このチェック結果Ｐ＿Ｚ＿Ｅは、「０」又は「１」の値をとり、値が「１」の場合には、キャリーレス乗算器２０１の誤動作を検出したことを表している。
【０２６６】
一方、図１５Ｂの回路は、まず、キャリーレス乗算回路２０１が出力した乗算結果Ｚについての、下位より１番目のデータユニットの奇数パリティ値Ｐ＿Ｚ０＿ｏｄｄと、乗算結果Ｚの下位より２番目のデータユニットの奇数パリティ値Ｐ＿Ｚ１＿ｏｄｄとを求める。
【０２６７】
このために、図１５Ｂの回路は、まず、ＸＯＲ回路５４１にビットｚ０、ｚ１、ｚ２、及びｚ３の値と値「１」とをそれぞれ入力したときの出力を得る。このＸＯＲ回路５４１の出力が奇数パリティ値Ｐ＿Ｚ０＿ｏｄｄである。この回路構成は、前掲した［数２８］式の演算を行う回路である。
【０２６８】
また、図１５Ｂの回路は、ＸＯＲ回路５４２にビットｚ４、ｚ５、及びｚ６の値と値「１」とをそれぞれ入力したときの出力を得る。このＸＯＲ回路５４２の出力がパリティ値Ｐ＿Ｚ１＿ｏｄｄである。この回路構成は、前掲した［数２９］式の演算を行う回路である。
【０２６９】
図１５Ｂの回路は、更に、上述のようにして求められたパリティ値Ｐ＿Ｚ０＿ｏｄｄ及びＰ＿ｚ１＿ｏｄｄが、キャリーレス乗算パリティ予測回路２０２の出力である予測値Ｐ＿Ｚ０＿Ｐ及びＰ＿Ｚ１＿Ｐとそれぞれ一致するか否かを判定する。このために、ＸＯＲ回路５４１の出力（すなわちパリティ値Ｐ＿Ｚ０＿ｏｄｄ）と予測値Ｐ＿Ｚ０＿ＰとをＸＯＲ回路５４３に入力したときの出力を得る。更に、ＸＯＲ回路５４２の出力（すなわちパリティ値Ｐ＿Ｚ１＿ｏｄｄ）と予測値Ｐ＿Ｚ１＿ＰとをＸＯＲ回路５４４に入力したときの出力を得る。そして、このＸＯＲ回路５４３の出力とＸＯＲ回路５４４の出力とをＯＲ回路５４５に入力したときの出力を得る。そして、このＯＲ回路５４５の出力が、チェック結果Ｐ＿Ｚ＿Ｅとして出力される。このチェック結果Ｐ＿Ｚ＿Ｅは、「０」又は「１」の値をとり、値が「１」の場合には、キャリーレス乗算器２０１の誤動作を検出したことを表している。
【０２７０】
以上のように、本実施例では、パリティチェック回路２０３は、偶数パリティと奇数パリティとのどちらを用いる場合でも、乗算結果Ｚのデータユニット毎のパリティ値を、ＸＯＲ回路を用いて求める。そして、求めた乗算結果Ｚのパリティ値とキャリーレス乗算パリティ予測回路２０２が出力する乗算結果Ｚのパリティ値との一致・不一致の判定を、２入力のＸＯＲ回路を用いてデータユニット毎に行う。そして、データユニット毎の当該判定結果の論理和を、ＯＲ回路を用いて求めて、キャリーレス乗算器２０１の誤動作の検出結果とする。
【０２７１】
［３．３．被乗数データ列及び乗数データ列が共に２個のデータユニットで構成されている場合のキャリーレス乗算器の構成］
次に図１６について説明する。図１６は、図８の演算処理装置１００に演算器１１１の一部として備えられているキャリーレス乗算器の第三の例の構成図である。このキャリーレス乗算器２００は、［２．２．被乗数データ列及び乗数データ列が共に２個のデータユニットの場合］で説明した誤動作検出機能を有している。
【０２７２】
図１６では、キャリーレス乗算パリティ予測回路２０２が、乗算結果Ｚにおける下位より１番目から３番目までの各データユニットのパリティ値の予測値Ｐ＿Ｚ０＿Ｐ、Ｐ＿Ｚ１＿Ｐ、及びＰ＿Ｚ２＿Ｐを出力する。更に、キャリーレス乗算パリティ予測回路２０２は、これに続くデータのパリティ値の予測値Ｐ＿Ｚ３＿Ｐを出力する。図１６のキャリーレス乗算パリティ予測回路２０２は、この点において、図９に図解した第二の例におけるものと異なっている。また、図１６のキャリーレス乗算パリティ予測回路２０２は、パリティ値の予測のために、被乗数Ａの値及びデータユニット毎のパリティ値と、乗数Ｙの値及びデータユニット毎のパリティ値とを用いる点においても、第二の例におけるものと異なっている。
【０２７３】
図１６におけるキャリーレス乗算回路２０１は、被乗数Ａと乗数Ｙとのキャリーレス乗算を行って乗算結果Ｚを出力する回路である。ここで、被乗数Ａ及び乗数Ｙは、どちらも、４ビットのデータであるデータユニットが２個並べられたデータ列である。また、キャリーレス乗算回路２０１の出力である乗算結果Ｚは、１５ビットのデータとなる。なお、キャリーレス乗算の手法については既に説明したので、図１６の第三の例におけるキャリーレス乗算回路２０１の詳細構成についての説明は省略する。
【０２７４】
また、図１６におけるパリティチェック回路２０３は、図１５Ａ及び図１５Ｂに示した第二の例におけるものと同様に構成する。すなわち、まず、キャリーレス乗算回路２０１が出力する乗算結果Ｚにおけるデータユニット毎のパリティ値を、パリティ値の定義に従い、ＸＯＲ回路を使用して求める。そして、求められたデータユニット毎のパリティ値と、キャリーレス乗算パリティ予測回路２０２出力するデータユニット毎のパリティ予測値との一致・不一致の判定を、ＸＯＲ回路を使用して行い、この判定結果の出力を論理和をＯＲ回路を使用して求める。このＯＲ回路の出力がチェック結果Ｐ＿Ｚ＿Ｅとされる。このチェック結果Ｐ＿Ｚ＿Ｅは「０」又は「１」の値をとり、値が「１」の場合には、キャリーレス乗算器２０１の誤動作を検出したことを表している。
【０２７５】
次に、図１６におけるキャリーレス乗算パリティ予測回路２０２の構成について説明す。図１６のキャリーレス乗算パリティ予測回路２０２の具体的な回路構成を図１７Ａから図１７Ｐまでの各図で図解する。
【０２７６】
図１７Ａから図１７Ｈまでの各図で図解した第一の例の回路は、パリティ値として偶数パリティを使用する場合の回路である。そして、図１７Ｉから図１７Ｐまでの各図で図解した第二の例の回路は、パリティ値として奇数パリティを使用する場合の回路である。
【０２７７】
図１７Ａの回路は、被乗数Ａと乗数Ｙとの各々の値及びデータユニット毎のパリティ値から、キャリーレス乗算回路２０１が出力する乗算結果Ｚにおける下位より１番目のデータユニットのパリティ値の予測値Ｐ＿Ｚ０＿Ｐを求める回路である。この図１７Ａの回路は、前掲した［数２０］式（すなわち［数１３］式）の演算を行う回路である。
【０２７８】
図１７Ａにおいて、ＡＮＤ回路６０１は、「＋」記号で結ばれている［数１３］式の右辺の第１項の演算を行う回路である。また、ＡＮＤ回路６１１、６１３、及び６１５並びにＸＯＲ回路６１２及び６１４は、［数１３］式の右辺の第２項から第４項までの各項の演算を行う回路である。そして、ＸＯＲ回路６１６及び６１７は、［数１３］式の右辺の第１項から第４項までの各項の値の排他的論理和の演算を行って、パリティ予測値Ｐ＿Ｚ０＿Ｐを得る回路である。
【０２７９】
図１７Ｂ、図１７Ｃ、及び図１７Ｄの回路は、被乗数Ａと乗数Ｙとの各々の値及びデータユニット毎のパリティ値から、キャリーレス乗算回路２０１が出力する乗算結果Ｚにおける下位より２番目のデータユニットのパリティ予測値Ｐ＿Ｚ１＿Ｐを求める回路である。この回路は、前掲した［数２１］式（すなわち［数１６］式及び［数１７］式）の演算を行う回路である。
【０２８０】
図１７Ｂにおいて、ＡＮＤ回路６２１は、「＋」記号で結ばれている［数１６］式の右辺の第１項の演算を行う回路である。また、ＡＮＤ回路６３１、６３３、及び６３５並びにＸＯＲ回路６３２及び６３４は、［数１６］式の右辺の第２項から第４項までの各項の演算を行う回路である。更に、図１７ＣにおけるＡＮＤ回路６３７、６３９、及び６４１並びにＸＯＲ回路６３８及び６４０は、［数１６］式の右辺の第５項から第７項までの各項の演算を行う回路である。そして、ＸＯＲ回路６３６（図１７Ｂ）、６４２（図１７Ｃ）、及び６４３（図１７Ｂ）は、［数１６］式の右辺の第１項から第７項までの各項の値の排他的論理和の演算を行って、［数１６］式のＰ＿ＺＢの値を求める回路である。
【０２８１】
また、図１７Ｄにおいて、ＡＮＤ回路６２２は、「＋」記号で結ばれている［数１７］式の右辺の第１項の演算を行う回路である。また、ＡＮＤ回路６４４、６４６、及び６４８並びにＸＯＲ回路６４５及び６４７は、［数１７］式の右辺の第２項から第４項までの各項の演算を行う回路である。そして、ＸＯＲ回路６４９及び６５０は、［数１７］式の右辺の第１項から第４項までの各項の値の排他的論理和の演算を行って、［数１７］式のＰ＿ＺＣの値を求める回路である。
【０２８２】
そして、図１７ＤにおけるＸＯＲ回路６５１は、［数２１］式の排他的論理和の演算を行って、パリティ予測値Ｐ＿Ｚ１＿Ｐを得る回路である。
図１７Ｅ、図１７Ｆ、及び図１７Ｇの回路は、被乗数Ａと乗数Ｙとの各々の値及びデータユニット毎のパリティ値から、キャリーレス乗算回路２０１が出力する乗算結果Ｚにおける下位より３番目のデータユニットのパリティ予測値Ｐ＿Ｚ２＿Ｐを求める回路である。この回路は、前掲した［数２２］式（すなわち［数１４］式及び［数１９］式）の演算を行う回路である。
【０２８３】
図１７Ｅにおいて、ＡＮＤ回路６６１は、「＋」記号で結ばれている［数１４］式の右辺の第１項の演算を行う回路である。また、ＸＯＲ回路６７１、６７３、及び６７５並びにＡＮＤ回路６７２、６７４、６７６、及び６７７は、［数１４］式の右辺の第２項から第５項までの各項の演算を行う回路である。そして、ＸＯＲ回路６７８及び６７９は、［数１４］式の右辺の第１項から第５項までの各項の値の排他的論理和の演算を行って、［数１４］式のＰ＿ＺＤの値を求める回路である。
【０２８４】
図１７Ｆにおいて、ＡＮＤ回路６６２は、「＋」記号で結ばれている［数１９］式の右辺の第１項の演算を行う回路である。また、ＡＮＤ回路６８０、６８２、及び６８４並びにＸＯＲ回路６８１及び６８３は、［数１９］式の右辺の第２項から第４項までの各項の演算を行う回路である。更に、図１７Ｇにおいて、ＡＮＤ回路６８６、６８８、及び６９０並びにＸＯＲ回路６８７及び６８９は、［数１９］式の右辺の第５項から第７項までの各項の演算を行う回路である。そして、ＸＯＲ回路６８５（図１７Ｆ）、６９１（図１７Ｇ）、及び６９２（図１７Ｆ）は、［数１９］式の右辺の第１項から第７項までの各項の値の排他的論理和の演算を行って、［数１９］式のＰ＿ＺＥの値を求める回路である。
【０２８５】
そして、図１７ＦにおけるＸＯＲ回路６９３は、［数２２］式の排他的論理和の演算を行って、パリティ予測値Ｐ＿Ｚ２＿Ｐを得る回路である。
図１７Ｈの回路は、被乗数Ａの値及びパリティ値と乗数Ｙの値及びパリティ値とから、キャリーレス乗算回路２０１が出力する乗算結果Ｚにおける下位より３番目のデータユニットに続くデータのパリティ値の予測値Ｐ＿Ｚ３＿Ｐを求める回路である。この図１７Ｈの回路は、前掲した［数２３］式（すなわち［数１８］式）の演算を行う回路である。
【０２８６】
図１７Ｈにおいて、ＡＮＤ回路７０１は、「＋」記号で結ばれている［数１８］式の右辺の第１項の演算を行う回路である。また、ＸＯＲ回路７１１、７１３、及び７１５並びにＡＮＤ回路７１２、７１４、７１６、及び７１７は、［数１８］式の右辺の第２項から第５項までの各項の演算を行う回路である。そして、ＸＯＲ回路７１８及び７１９は、［数１８］式の右辺の第１項から第５項までの各項の値の排他的論理和の演算を行って、パリティ予測値Ｐ＿Ｚ３＿Ｐを得る回路である。
【０２８７】
図１７Ｉの回路は、被乗数Ａの値及びパリティ値と乗数Ｙの値及びパリティ値とから、キャリーレス乗算回路２０１が出力する乗算結果Ｚにおける下位より１番目のデータユニットのパリティ値の予測値Ｐ＿Ｚ０＿Ｐを求める回路である。この図１７Ｉの回路は、前掲した［数３８］式（すなわち［数３２］式）の演算を行う回路である。
【０２８８】
図１７Ｉの回路は、図１７Ａの回路におけるＡＮＤ回路６０１をＯＲ回路６０２に置換したものである。このＯＲ回路６０２は、「＋」記号で結ばれている［数３２］式の右辺の第１項、すなわちＰ＿Ａ０＿ｏｄｄ＾Ｐ＿Ｙ０＿ｏｄｄの演算を行う回路である。従って、ＸＯＲ回路６１６及び６１７は、図１７Ｉにおいては、［数３２］式の右辺の第１項から第４項までの各項の値の排他的論理和の演算を行って、パリティ予測値Ｐ＿Ｚ０＿Ｐを得る回路である。
【０２８９】
図１７Ｊ、図１７Ｋ、及び図１７Ｌの回路は、被乗数Ａと乗数Ｙとの各々の値及びデータユニット毎のパリティ値から、キャリーレス乗算回路２０１が出力する乗算結果Ｚにおける下位より２番目のデータユニットのパリティ予測値Ｐ＿Ｚ１＿Ｐを求める回路である。この回路は、前掲した［数３９］式の演算を行う回路である。
【０２９０】
図１７Ｊ、図１７Ｋ、及び図１７Ｌの回路は、図１７ＢのＡＮＤ回路６２１及び図１７ＤのＡＮＤ回路６２２をそれぞれＯＲ回路６２３（図１７Ｊ）及びＯＲ回路６２４（図１７Ｌ）に置換し、図１７ＬのＸＯＲ回路６５１に値「１」の入力を追加したものである。ここで、ＯＲ回路６２３は、「＋」記号で結ばれている［数３４］式の右辺の第１項、すなわちＰ＿Ａ１＿ｏｄｄ＾Ｐ＿Ｙ０＿ｏｄｄの演算を行う回路である。また、ＯＲ回路６２４は、「＋」記号で結ばれている［数３５］式の右辺の第１項、すなわちＰ＿Ａ０＿ｏｄｄ＾Ｐ＿Ｙ１＿ｏｄｄの演算を行う回路である。従って、ＸＯＲ回路６５１は、図１７Ｌにおいては、［数３９］式の右辺の第１項から第３項までの各項の値の排他的論理和の演算を行って、パリティ予測値Ｐ＿Ｚ１＿Ｐを得る回路である。
【０２９１】
図１７Ｍ、図１７Ｎ、及び図１７Ｏの回路は、被乗数Ａと乗数Ｙとの各々の値及びデータユニット毎のパリティ値から、キャリーレス乗算回路２０１が出力する乗算結果Ｚにおける下位より３番目のデータユニットのパリティ予測値Ｐ＿Ｚ２＿Ｐを求める回路である。この回路は、前掲した［数４０］式の演算を行う回路である。
【０２９２】
図１７Ｍ、図１７Ｎ、及び図１７Ｏの回路は、図１７ＥのＡＮＤ回路６６１及び図１７ＦのＡＮＤ回路６６２をそれぞれＯＲ回路６６３（図１７Ｍ）及びＯＲ回路６６４（図１７Ｎ）に置換し、図１７ＮのＸＯＲ回路６９３に値「１」の入力を追加したものである。ここで、ＯＲ回路６６３は、「＋」記号で結ばれている［数３４］式の右辺の第１項、すなわちＰ＿Ａ１＿ｏｄｄ＾Ｐ＿Ｙ０＿ｏｄｄの演算を行う回路である。また、ＯＲ回路６３４は、「＋」記号で結ばれている［数３７］式の右辺の第１項、すなわちＰ＿Ａ１＿ｏｄｄ＾Ｐ＿Ｙ１＿ｏｄｄの演算を行う回路である。従って、ＸＯＲ回路６９３は、図１７Ｎにおいては、［数４０］式の右辺の第１項から第３項までの各項の値の排他的論理和の演算を行って、パリティ予測値Ｐ＿Ｚ２＿Ｐを得る回路である。
【０２９３】
図１７Ｐの回路は、被乗数Ａの値及びパリティ値と乗数Ｙの値及びパリティ値とから、キャリーレス乗算回路２０１が出力する乗算結果Ｚにおける下位より３番目のデータユニットに続くデータのパリティ値の予測値Ｐ＿Ｚ３＿Ｐを求める回路である。この図１７Ｐの回路は、前掲した［数４１］式（すなわち［数３６］式）の演算を行う回路である。
【０２９４】
図１７Ｐの回路は、図１７Ｈの回路におけるＡＮＤ回路７０１をＯＲ回路７０２に置換したものである。このＯＲ回路７０２は、「＋」記号で結ばれている［数３６］式の右辺の第１項、すなわちＰ＿Ａ１＿ｏｄｄ＾Ｐ＿Ｙ１＿ｏｄｄの演算を行う回路である。従って、ＸＯＲ回路７１８及び７１９は、図１７Ｐにおいては、［数３６］式の右辺の第１項から第５項までの各項の値の排他的論理和の演算を行って、パリティ予測値Ｐ＿Ｚ３＿Ｐを得る回路である。
【０２９５】
［３．４．被乗数データ列及び乗数データ列のサイズを一般化した場合のキャリーレス乗算器の構成］
次に図１８について説明する。図１８は、図８の演算処理装置１００に演算器１１１の一部として備えられているキャリーレス乗算器の第四の例の構成図である。このキャリーレス乗算器２００は、［２．３．被乗数データ列及び乗数データ列のサイズを一般化した場合］で説明した誤動作検出機能を有している。
【０２９６】
図１８では、キャリーレス乗算パリティ予測回路２０２が、乗算結果Ｚにおける下位より１番目から２ｑ−１番目までの各データユニットのパリティ値の予測値Ｐ＿Ｚ＿Ｐ［１］、…、Ｐ＿Ｚ＿Ｐ［２ｑ−１］を出力する。更に、キャリーレス乗算パリティ予測回路２０２は、これに続くデータのパリティ値の予測値Ｐ＿Ｚ＿Ｐ［２ｑ］も出力する。図１８のキャリーレス乗算パリティ予測回路２０２は、この点において、図１６に図解した第三の例におけるものと異なっている。
【０２９７】
図１８におけるキャリーレス乗算回路２０１は、被乗数Ａと乗数Ｙとのキャリーレス乗算を行って乗算結果Ｚを出力する回路である。ここで、被乗数Ａ及び乗数Ｙは、どちらも、ｐビット（但し、ｐは２以上の自然数）のデータであるデータユニットがｑ個（但し、ｑは自然数）並べられたデータ列である。また、キャリーレス乗算回路２０１の出力である乗算結果Ｚは、２ｑ×ｐ−１ビットのデータとなる。なお、キャリーレス乗算の手法については既に説明したので、図１８の第四の例におけるキャリーレス乗算回路２０１の詳細構成についての説明は省略する。
【０２９８】
図１８におけるパリティチェック回路２０３も、図１５Ａ及び図１５Ｂに示した第二の例におけるものと同様に構成する。すなわち、まず、キャリーレス乗算回路２０１が出力する乗算結果Ｚにおけるデータユニット毎のパリティ値を、パリティ値の定義に従い、ＸＯＲ回路を使用して求める。そして、求められたデータユニット毎のパリティ値と、キャリーレス乗算パリティ予測回路２０２出力するデータユニット毎のパリティ予測値との一致・不一致の判定を、ＸＯＲ回路を使用して行い、この判定結果の出力の論理和を、ＯＲ回路を使用して求める。このＯＲ回路の出力がチェック結果Ｐ＿Ｚ＿Ｅとされる。このチェック結果Ｐ＿Ｚ＿Ｅは「０」又は「１」の値をとり、値が「１」の場合には、キャリーレス乗算器２０１の誤動作を検出したことを表している。
【０２９９】
［３．４．１．キャリーレス乗算パリティ予測回路の構成］
次に、図１８におけるキャリーレス乗算パリティ予測回路２０２の構成について説明す。図１８のキャリーレス乗算パリティ予測回路２０２の構成を図１９に図解する。
【０３００】
このキャリーレス乗算パリティ予測回路２０２は、下位パリティ予測回路８００、上位パリティ予測回路９００、及び中位パリティ予測回路１０００を備えている。
下位パリティ予測回路８００は、［２．３．１．下位パリティの予測］で説明したようにして下位パリティ値の予測を行う回路である。すなわち、下位パリティ予測回路８００は、乗算結果Ｚにおける下位より１番目のデータユニットのパリティ値の予測値Ｐ＿Ｚ＿Ｐ［１］を出力する回路である。この下位パリティ予測回路８００には、第１被乗数データユニットの値Ａ［ユニット１］及びそのパリティ値Ｐ＿Ａ［１］と、第１乗数データユニットの値Ｙ［ユニット１］及びそのパリティ値Ｐ＿Ｙ［１］とが入力される。
【０３０１】
上位パリティ予測回路９００は、［２．３．２．上位パリティの予測］で説明したようにして上位パリティ値の予測を行う回路である。すなわち、上位パリティ予測回路９００は、乗算結果Ｚにおける下位より２ｑ−１番目のデータユニットに続くデータ（すなわち乗算結果Ｚの上位ｐ−１ビットのデータ）のパリティ値の予測値Ｐ＿Ｚ＿Ｐ［２ｑ］を出力する回路である。この上位パリティ予測回路９００には、第ｑ被乗数データユニットの値Ａ［ユニットｑ］及びそのパリティ値Ｐ＿Ａ［ｑ］と、第ｑ乗数データユニットの値Ｙ［ユニットｑ］及びそのパリティ値Ｐ＿Ｙ［ｑ］とが入力される。
【０３０２】
中位パリティ予測回路１０００は、［２．３．３．中位パリティの予測］で説明したようにして中位パリティ値の予測を行う回路である。すなわち、中位パリティ予測回路１０００は、乗算結果Ｚにおける下位より２番目から２ｑ−１番目までの各データユニット毎のパリティ値の予測値Ｐ＿Ｚ＿Ｐ［２］、…、Ｐ＿Ｚ＿Ｐ［２ｑ−１］を出力する回路である。
【０３０３】
この中位パリティ予測回路１０００には、第１被乗数データユニットから第ｑ被乗数データユニットまでの各データユニットの値Ａ［ユニット１］、…、Ａ［ユニットｑ］及びそれらのパリティ値Ｐ＿Ａ［１］、…、Ｐ＿Ａ［ｑ］が入力される。更に、この中位パリティ予測回路１０００には、第１乗数データユニットから第ｑ乗数データユニットまでの各データユニットの値Ｙ［ユニット１］、…、Ｙ［ユニットｑ］及びそれらのパリティ値Ｐ＿Ｙ［１］、…、Ｐ＿Ｙ［ｑ］も入力される。
【０３０４】
なお、図１８におけるキャリーレス乗算パリティ予測回路２０２は、パリティ予測値Ｐ＿Ｚ＿Ｐ［２］、…、Ｐ＿Ｚ＿Ｐ［２ｑ−１］を各々出力する２ｑ−２個の中位パリティ予測回路１０００を備えているが、図１９では、そのうちの１個のみを図示している。
【０３０５】
中位パリティ予測回路１０００は、部分乗算結果パリティ予測回路１１００を備えている。部分乗算結果パリティ予測回路１１００は、［２．３．３．１．部分乗算結果のデータユニット毎のパリティ値の予測］で説明したようにして、前述した部分乗算結果のデータユニット毎のパリティ値の予測を行う回路である。
【０３０６】
なお、乗数Ｙは、ｑ個のデータユニットで構成されているので、図１８におけるキャリーレス乗算パリティ予測回路２０２は、部分乗算結果パリティ予測回路１１００をｑ個備えているが、図１９においては、そのうちの１個のみを図示している。
【０３０７】
部分乗算結果パリティ予測回路１１００は、部分パリティ予測回路１２００を備えている。部分パリティ予測回路１２００は、［２．３．３．１．１．第１部分のパリティ値の予測］、［２．３．３．１．２．第ｑ＋１部分のパリティ値の予測］、［２．３．３．１．３．中位部分のパリティ値の予測］で説明した予測を行う回路である。すなわち、部分パリティ予測回路１２００は、部分乗算結果の各データユニットのパリティ値の予測値を出力する回路である。なお、部分乗算結果は第１部分から第ｑ＋１部分までのｑ＋１個のデータユニットで構成されているので、部分乗算結果パリティ予測回路１１００は部分パリティ予測回路１２００をｑ＋１個備えているが、図１９においては、そのうちの１個のみを図示している。
【０３０８】
［３．４．１．１．下位パリティ予測回路の構成］
次に、図１９における下位パリティ予測回路８００の構成について説明する。
【０３０９】
図１９における下位パリティ予測回路８００の第一の例の構成を図２０Ａに図解する。この第一の例の構成は、パリティ値として偶数パリティを使用する場合のものである。
この下位パリティ予測回路８００は、下位パリティ論理積回路８０１、下位第１論理積回路８１１、ＸＯＲ回路８１２、下位第２論理積回路８１３、及び下位排他的論理和回路８１４を備えている。このうちのＸＯＲ回路８１２及び下位第２論理積回路８１３は、どちらも下位パリティ予測回路８００にｐ−２個備えられている。
【０３１０】
下位パリティ論理積回路８０１は、第１被乗数データユニットのパリティ値Ｐ＿Ａ［１］と第１乗数データユニットの値のパリティ値Ｐ＿Ｙ［１］とが入力されてそれらのパリティ値の論理積の値（前述した下位パリティ論理積）を出力する回路である。
【０３１１】
下位第１論理積回路８１１は、第１被乗数データユニットにおける最上位のビットの値と第１乗数データユニットにおける下位より２桁目のビットの値とが入力されてそれらの論理積の値（前述した下位第１論理積）を出力する回路である。
【０３１２】
ｐ−２個のＸＯＲ回路８１２及び下位第２論理積回路８１３は、異なるｉの値（但し、ｉは２からｐ−１までの自然数）に応じた動作を各々行う。ＸＯＲ回路８１２は、第１被乗数データユニットにおける上位よりｉ桁分の各ビットの値が入力されてそれらの排他的論理和の値を出力する回路である。また、下位第２論理積回路８１３は、このＸＯＲ回路８１２の出力と、第１乗数データユニットにおける下位からｉ＋１桁目のビットの値とが入力されてそれらの論理積（前述した下位第２論理積）を出力する回路である。
【０３１３】
下位排他的論理和回路８１４は、下位パリティ論理積回路８０１の出力と、下位パリティ論理積回路８１１の出力と、ｐ−２個の下位第２論理積回路８１３の各出力とが入力されてそれらの排他的論理和の値を出力する回路である。この下位排他的論理和回路８１４の出力が、下位パリティ予測回路８００の出力である、乗算結果Ｚの下位パリティ値の予測値Ｐ＿Ｚ＿Ｐ［１］となる。
【０３１４】
次に図２０Ｂについて説明する。図２０Ｂは、図１９における下位パリティ予測回路８００の第二の例の構成を図解したものである。この第二の例の構成は、パリティ値として奇数パリティを使用する場合のものである。
【０３１５】
図２０Ｂの構成は、図２０Ａの構成における下位パリティ論理積回路８０１を下位パリティ論理和回路８０２に置換したものである。下位パリティ論理和回路８０２は、第１被乗数データユニットのパリティ値Ｐ＿Ａ［１］と第１乗数データユニットの値のパリティ値Ｐ＿Ｙ［１］とが入力されてそれらのパリティ値の論理和の値（前述した下位パリティ論理和）を出力する回路である。
【０３１６】
下位排他的論理和回路８１４は、下位パリティ論理和回路８０２の出力と、下位パリティ論理積回路８１１の出力と、ｐ−２個の下位第２論理積回路８１３の各出力とが入力されてそれらの排他的論理和の値を出力する回路である。この下位排他的論理和回路８１４の出力が、下位パリティ予測回路８００の出力である、乗算結果Ｚの下位パリティ値の予測値Ｐ＿Ｚ＿Ｐ［１］となる。
【０３１７】
［３．４．１．２．上位パリティ予測回路の構成］
次に、図１９における上位パリティ予測回路９００の構成について説明する。
【０３１８】
図１９における上位パリティ予測回路９００の第一の例の構成を図２１Ａに図解する。この第一の例の構成は、パリティ値として偶数パリティを使用する場合のものである。
この上位パリティ予測回路９００は、上位パリティ論理積回路９０１、上位第１論理積回路９１１、ＸＯＲ回路９１２、上位第２論理積回路９１３、及び上位排他的論理和回路９１４を備えている。このうちのＸＯＲ回路９１２及び上位第２論理積回路９１３は、どちらも上位パリティ予測回路９００にｐ−１個備えられている。
【０３１９】
上位パリティ論理積回路９０１は、第ｑ被乗数データユニットのパリティ値Ｐ＿Ａ［ｑ］と第ｑ乗数データユニットの値のパリティ値Ｐ＿Ｙ［ｑ］とが入力されてそれらのパリティ値の論理積の値（前述した上位パリティ論理積）を出力する回路である。
【０３２０】
上位第１論理積回路９１１は、第ｑ被乗数データユニットにおける最下位のビットの値と第ｑ乗数データユニットにおける最上位のビットの値とが入力されてそれらの論理積の値（前述した上位第１論理積）を出力する回路である。
【０３２１】
ｐ−１個のＸＯＲ回路９１２及び上位第２論理積回路９１３は、異なるｊの値（但し、ｊは２からｐまでの自然数）に応じた動作を各々行う。ＸＯＲ回路９１２は、第ｑ被乗数データユニットにおける下位よりｊ桁分の各ビットの値が入力されてそれらの排他的論理和を出力する回路である。また、上位第２論理積回路９１３は、このＸＯＲ回路９１２の出力と、第ｑ乗数データユニットにおける上位よりｊ桁目のビットの値とが入力されてそれらの論理積（前述した上位第２論理積）を出力する回路である。
【０３２２】
上位排他的論理和回路９１４は、上位パリティ論理積回路９０１の出力と、上位パリティ論理積回路９１１の出力と、ｐ−１個の上位第１論理積回路９１３の各出力とが入力されてそれらの排他的論理和の値を出力する回路である。この上位排他的論理和回路９１４の出力が、上位パリティ予測回路９００の出力である、乗算結果Ｚの上位パリティ値の予測値Ｐ＿Ｚ＿Ｐ［２ｑ］となる。
【０３２３】
次に図２１Ｂについて説明する。図２１Ｂは、図１９における上位パリティ予測回路９００の第二の例の構成を図解したものである。この第二の例の構成は、パリティ値として奇数パリティを使用する場合のものである。
【０３２４】
図２１Ｂの構成は、図２１Ａの構成における上位パリティ論理積回路９０１を上位パリティ論理和回路９０２に置換したものである。上位パリティ論理和回路９０２は、第ｑ被乗数データユニットのパリティ値Ｐ＿Ａ［ｑ］と第ｑ乗数データユニットの値のパリティ値Ｐ＿Ｙ［ｑ］とが入力されてそれらのパリティ値の論理和の値（前述した上位パリティ論理和）を出力する回路である。
【０３２５】
上位排他的論理和回路９１４は、上位パリティ論理和回路９０２の出力と、上位パリティ論理積回路９１１の出力と、ｐ−１個の上位第２論理積回路９１３の各出力とが入力されてそれらの排他的論理和の値を出力する回路である。この上位排他的論理和回路９１４の出力が、上位パリティ予測回路９００の出力である、乗算結果Ｚの上位パリティ値の予測値Ｐ＿Ｚ＿Ｐ［２ｑ］となる。
【０３２６】
［３．４．１．３．中位パリティ予測回路の構成］
［３．４．１．３．１．部分乗算結果パリティ予測回路の構成］
次に、図１９における中位パリティ予測回路１０００が備えている部分乗算結果パリティ予測回路１１００の構成について、図２２を参照しながら説明する。図２２は、図１９における中位パリティ予測回路１０００がｑ個備えている部分乗算結果パリティ予測回路１１００の１つである、第ｒ部分乗算結果パリティ予測回路１１０１の構成を図解したものである。
【０３２７】
被乗数Ａと第ｒ乗数データユニット（但し、ｒは１からｑまでの自然数）とのキャリーレス乗算の結果を「第ｒ部分乗算結果」と表記することとする。第ｒ部分乗算結果パリティ予測回路１１０１は、この第ｒ部分乗算結果のデータユニット毎のパリティ値の予測値Ｐ＿Ｚｒ＿Ｐ［１］、…、Ｐ＿Ｚｒ＿Ｐ［ｑ＋１］を出力する回路である。
【０３２８】
第ｒ部分乗算結果パリティ予測回路１１０１は、部分パリティ予測回路１２００として、第１部分パリティ予測回路１２１０、第ｑ＋１部分パリティ予測回路１２２０、及び中位部分パリティ予測回路１２３０を備えている。
【０３２９】
第１部分パリティ予測回路１２１０は、［２．３．３．１．１．第１部分のパリティ値の予測］で説明したようにして第１部分のパリティ値の予測を行う回路である。すなわち、第１部分パリティ予測回路１２１０は、第ｒ部分乗算結果における下位より１番目のデータユニットのパリティ値の予測値Ｐ＿Ｚｒ＿Ｐ［１］を出力する回路である。この第１部分パリティ予測回路１２１０には、第１被乗数データユニットの値Ａ［ユニット１］及びそのパリティ値Ｐ＿Ａ［１］と、第ｒ乗数データユニットの値Ｙ［ユニットｒ］及びそのパリティ値Ｐ＿Ｙ［ｒ］とが入力される。
【０３３０】
第ｑ＋１部分パリティ予測回路１２２０は、［２．３．３．１．２．第ｑ＋１部分のパリティ値の予測］で説明したようにして第ｑ＋１部分のパリティ値の予測を行う回路である。すなわち、第ｑ＋１部分パリティ予測回路１２２０は、第ｒ部分乗算結果における下位よりｑ番目のデータユニットに続くデータ（第ｒ部分乗算結果データ列の上位ｐ−１ビットのデータ）のパリティ値の予測値Ｐ＿Ｚｒ＿Ｐ［ｑ＋１］を出力する回路である。この第ｑ＋１部分パリティ予測回路１２２０には、第ｑ被乗数データユニットの値Ａ［ユニットｑ］及びそのパリティ値Ｐ＿Ａ［ｑ］と、第ｒ乗数データユニットの値Ｙ［ユニットｒ］及びそのパリティ値Ｐ＿Ｙ［ｒ］とが入力される。
【０３３１】
中位部分パリティ予測回路１２３０は、［２．３．３．１．３．中位部分のパリティ値の予測］で説明したようにして中位部分パリティ値の予測を行う回路である。すなわち、中位部分パリティ予測回路１２３０は、第ｒ部分乗算結果における下位より２番目からｑ番目までの各データユニットのパリティ値の予測値Ｐ＿Ｚｒ＿Ｐ［２］、…、Ｐ＿Ｚｒ＿Ｐ［ｑ］を出力する回路である。
【０３３２】
この中位部分パリティ予測回路１２３０には、第１被乗数データユニットから第ｑ被乗数データユニットまでの各データユニットの値Ａ［ユニット１］、…、Ａ［ユニットｑ］及びそれらのパリティ値Ｐ＿Ａ［１］、…、Ｐ＿Ａ［ｑ］が入力される。更に、この中位パリティ予測回路１０００には、第ｒ乗数データユニットの値Ｙ［ユニットｒ］及びそのパリティ値Ｐ＿Ｙ［ｒ］も入力される。
【０３３３】
なお、第ｒ部分乗算結果パリティ予測回路１１０１は、パリティ予測値Ｐ＿Ｚｒ＿Ｐ［２］、…、Ｐ＿Ｚｒ＿Ｐ［ｑ］を各々出力するｑ−１個の中位部分パリティ予測回路１２３０を備えているが、図２２においては、そのうちの１個のみを図示している。
【０３３４】
［３．４．１．３．２．第１部分パリティ予測回路の構成］
次に、図２２における第１部分パリティ予測回路１２１０の構成について説明する。
【０３３５】
図２２における第１部分パリティ予測回路１２１０の第一の例の構成を図２３Ａに図解する。この第一の例の構成は、パリティ値として偶数パリティを使用する場合のものである。
【０３３６】
この第１部分パリティ予測回路１２１０は、下位部分パリティ論理積回路１２０１、下位部分第１論理積回路１２１１、ＸＯＲ回路１２１２、下位部分第２論理積回路１２１３、及び下位部分排他的論理和回路１２１４を備えている。このうちのＸＯＲ回路１２１２及び下位部分第２論理積回路１２１３は、どちらも第１部分パリティ予測回路１２１０にｐ−２個備えられている。
【０３３７】
下位部分パリティ論理積回路１２０１は、第１被乗数データユニットのパリティ値Ｐ＿Ａ［１］と第ｒ乗数データユニットの値のパリティ値Ｐ＿Ｙ［ｒ］とが入力されてそれらのパリティ値の論理積の値（前述した下位部分パリティ論理積）を出力する回路である。
【０３３８】
下位部分第１論理積回路１２１１は、第１被乗数データユニットにおける最上位のビットの値と第ｒ乗数データユニットにおける下位より２桁目のビットの値とが入力されてそれらの論理積の値（前述した下位部分第１論理積）を出力する回路である。
【０３３９】
ｐ−２個のＸＯＲ回路１２１２及び下位部分第２論理積回路１２１３は、異なるｇの値（但し、ｇは２からｐ−１までの自然数）に応じた動作を各々行う。ＸＯＲ回路１２１２は、第１被乗数データユニットにおける上位よりｇ桁分の各ビットの値が入力されてそれらの排他的論理和の値を出力する回路である。また、下位部分第２論理積回路１２１３は、このＸＯＲ回路１２１２の出力と、第ｒ乗数データユニットにおける下位からｇ＋１桁目のビットの値とが入力されてそれらの論理積（前述した下位部分第２論理積）を出力する回路である。
【０３４０】
下位部分排他的論理和回路１２１４は、下位部分パリティ論理積回路１２０１の出力と、下位部分パリティ論理積回路１２１１の出力と、ｐ−２個の下位部分第２論理積回路１２１３の各出力とが入力されてそれらの排他的論理和の値を出力する回路である。この下位部分排他的論理和回路１２１４の出力が、第１部分パリティ予測回路１２１０の出力である、第ｒ部分乗算結果の第１部分のパリティ値の予測値Ｐ＿Ｚｒ＿Ｐ［１］となる。
【０３４１】
次に図２３Ｂについて説明する。図２３Ｂは、図２２における第１部分パリティ予測回路１２１０の第二の例の構成を図解したものである。この第二の例の構成は、パリティ値として奇数パリティを使用する場合のものである。
【０３４２】
図２３Ｂの構成は、図２３Ａの構成における下位部分パリティ論理積回路１２０１を下位部分パリティ論理和回路１２０２に置換したものである。下位部分パリティ論理和回路１２０２は、第１被乗数データユニットのパリティ値Ｐ＿Ａ［１］と第ｒ乗数データユニットの値のパリティ値Ｐ＿Ｙ［ｒ］とが入力されてそれらのパリティ値の論理和の値（前述した下位部分パリティ論理和）を出力する回路である。
【０３４３】
下位部分排他的論理和回路１２１４は、下位部分パリティ論理和回路１２０２の出力と、下位部分パリティ論理積回路１２１１の出力と、ｐ−２個の下位部分第２論理積回路１２１３の各出力とが入力されてそれらの排他的論理和の値を出力する回路である。この下位部分排他的論理和回路１２１４の出力が、第１部分パリティ予測回路１２１０の出力である、第ｒ部分乗算結果の第１部分のパリティ値の予測値Ｐ＿Ｚｒ＿Ｐ［１］となる。
【０３４４】
［３．４．１．３．３．第ｑ＋１部分パリティ予測回路の構成］
次に、図２２における第ｑ＋１部分パリティ予測回路１２２０の構成について説明する。
【０３４５】
図２２における第ｑ＋１部分パリティ予測回路１２２０の第一の例の構成を図２４Ａに図解する。この第一の例の構成は、パリティ値として偶数パリティを使用する場合のものである。
【０３４６】
この第ｑ＋１部分パリティ予測回路１２２０は、上位部分パリティ論理積回路１２０３、上位部分第１論理積回路１２２１、ＸＯＲ回路１２２２、上位部分第２論理積回路１２２３、及び上位部分排他的論理和回路１２２４を備えている。このうちのＸＯＲ回路１２２２及び上位部分第２論理積回路１２２３は、どちらも第ｑ＋１部分パリティ予測回路１２２０にｐ−１個備えられている。
【０３４７】
上位部分パリティ論理積回路１２０３は、第ｑ被乗数データユニットのパリティ値Ｐ＿Ａ［ｑ］と第ｒ乗数データユニットの値のパリティ値Ｐ＿Ｙ［ｒ］とが入力されてそれらのパリティ値の論理積の値（前述した上位部分パリティ論理積）を出力する回路である。
【０３４８】
上位部分第１論理積回路１２２１は、第ｑ被乗数データユニットにおける最下位のビットの値と第ｒ乗数データユニットにおける最上位のビットの値とが入力されてそれらの論理積の値（前述した上位部分第１論理積）を出力する回路である。
【０３４９】
ｐ−１個のＸＯＲ回路１２２２及び上位部分第２論理積回路１２２３は、異なるｈの値（但し、ｈは２からｐまでの自然数）に応じた動作を各々行う。ＸＯＲ回路１２２２は、第ｑ被乗数データユニットにおける下位よりｈ桁分の各ビットの値が入力されてそれらの排他的論理和を出力する回路である。また、上位部分第２論理積回路１２２３は、このＸＯＲ回路１２２２の出力と、第ｒ乗数データユニットにおける上位よりｈ桁目のビットの値とが入力されてそれらの論理積（前述した上位部分第２論理積）を出力する回路である。
【０３５０】
上位部分排他的論理和回路１２２４は、上位部分パリティ論理積回路１２０３の出力と、上位部分パリティ論理積回路１２２１の出力と、ｐ−１個の上位部分第１論理積回路１２２３の各出力とが入力されてそれらの排他的論理和の値を出力する回路である。この上位部分排他的論理和回路１２２４の出力が、第ｑ＋１部分パリティ予測回路１２２０の出力である、第ｒ部分乗算結果の第ｑ＋１部分のパリティ値の予測値Ｐ＿Ｚｒ＿Ｐ［ｑ＋１］となる。
【０３５１】
次に図２４Ｂについて説明する。図２４Ｂは、図２２における第ｑ＋１部分パリティ予測回路１２２０の第二の例の構成を図解したものである。この第二の例の構成は、パリティ値として奇数パリティを使用する場合のものである。
【０３５２】
図２４Ｂの構成は、図２４Ａの構成における上位部分パリティ論理積回路１２０３を上位部分パリティ論理和回路１２０４に置換したものである。上位部分パリティ論理和回路１２０４は、第ｑ被乗数データユニットのパリティ値Ｐ＿Ａ［ｑ］と第ｒ乗数データユニットの値のパリティ値Ｐ＿Ｙ［ｒ］とが入力されてそれらのパリティ値の論理和の値（前述した上位部分パリティ論理和）を出力する回路である。
【０３５３】
上位部分排他的論理和回路１２２４は、上位部分パリティ論理和回路１２０４の出力と、上位部分パリティ論理積回路１２２１の出力と、ｐ−１個の上位部分第２論理積回路１２２３の各出力とが入力されてそれらの排他的論理和の値を出力する回路である。この上位部分排他的論理和回路１２２４の出力が、第ｑ＋１部分パリティ予測回路１２２０の出力である、第ｒ部分乗算結果の第ｑ＋１部分のパリティ値の予測値Ｐ＿Ｚｒ＿Ｐ［ｑ＋１］となる。
【０３５４】
［３．４．１．３．４．中位部分パリティ予測回路の構成］
次に、図２２における中位部分パリティ予測回路１２３０の構成について説明する。図２５Ａは、第ｒ部分乗算結果パリティ予測回路１１０１がｑ−１個備えている中位部分パリティ予測回路１２３０の１つである、第ｋ部分パリティ予測回路１３００の第一の例の構成を図解したものである。この第一の例の構成は、パリティ値として偶数パリティを使用する場合のものである。
【０３５５】
第ｋ部分パリティ予測回路１３００は、第ｒ部分乗算結果における下位よりｋ番目（但し、ｋは２からｑまでの自然数）のデータユニット（前述した第ｋ部分）のパリティ値の予測値Ｐ＿Ｚｒ＿Ｐ［ｋ］を出力する回路である。
【０３５６】
この第ｋ部分パリティ予測回路１３００には、第ｋ被乗数データユニットの値Ａ［ユニットｋ］及びそのパリティ値Ｐ＿Ａ［ｋ］と、第ｒ乗数データユニットの値Ｙ［ユニットｒ］及びそのパリティ値Ｐ＿Ｙ［ｒ］とが入力される。更に、この第ｋ部分パリティ予測回路１３００には、第ｋ−１被乗数データユニットの値Ａ［ユニットｋ−１］も入力される。
【０３５７】
この第ｋ部分パリティ予測回路１３００は、中位部分パリティ論理積回路１３０１、中位部分第１論理積回路１３１１、ＸＯＲ回路１３１２、及び中位部分第２論理積回路１３１３を備えている。このうちのＸＯＲ回路１３１２及び中位部分第２論理積回路１３１３は、どちらも第ｋ部分パリティ予測回路１３００にｐ−２個備えられている。更に、第ｋ部分パリティ予測回路１３００は、中位部分第３論理積回路１３２１、ＸＯＲ回路１３２２、中位部分第４論理積回路１３２３、及び中位部分排他的論理和回路１３３１も備えている。このうちのＸＯＲ回路１３２２及び中位部分第４論理積回路１３２３は、どちらも第ｋ部分パリティ予測回路１３００にｐ−２個備えられている。
【０３５８】
中位部分パリティ論理積回路１３０１は、第ｋ被乗数データユニットのパリティ値Ｐ＿Ａ［ｋ］と第ｒ乗数データユニットの値のパリティ値Ｐ＿Ｙ［ｒ］とが入力されてそれらのパリティ値の論理積の値（前述した中位部分パリティ論理積）を出力する回路である。
【０３５９】
中位部分第１論理積回路１３１１は、第ｋ被乗数データユニットにおける最上位のビットの値と第ｒ乗数データユニットにおける下位より２桁目のビットの値とが入力されてそれらの論理積の値（前述した中位部分第１論理積）を出力する回路である。
【０３６０】
ｐ−２個のＸＯＲ回路１３１２及び中位部分第２論理積回路１３１３は、異なるｍの値（但し、ｍは２からｐ−１までの自然数）に応じた動作を各々行う。ＸＯＲ回路１３１２は、第ｋ被乗数データユニットにおける上位よりｍ桁分の各ビットの値が入力されてそれらの排他的論理和の値を出力する回路である。また、中位部分第２論理積回路１３１３は、このＸＯＲ回路１３１２の出力と、第ｒ乗数データユニットにおける下位からｍ＋１桁目のビットの値とが入力されてそれらの論理積（前述した中位部分第２論理積）を出力する回路である。
【０３６１】
中位部分第３論理積回路１３２１は、第ｋ−１被乗数データユニットにおける最上位のビットの値と第ｒ乗数データユニットにおける下位より２桁目のビットの値とが入力されてそれらの論理積の値（前述した中位部分第３論理積）を出力する回路である。
【０３６２】
ｐ−２個のＸＯＲ回路１３２２及び中位部分第４論理積回路１３２３は、異なるｎの値（但し、ｎは２からｐ−１までの自然数）に応じた動作を各々行う。ＸＯＲ回路１３２２は、第ｋ−１被乗数データユニットにおける上位よりｎ桁分の各ビットの値が入力されてそれらの排他的論理和の値を出力する回路である。また、中位部分第４論理積回路１３２３は、このＸＯＲ回路１３２２の出力と、第ｒ乗数データユニットにおける下位からｎ＋１桁目のビットの値とが入力されてそれらの論理積（前述した中位部分第４論理積）を出力する回路である。
【０３６３】
中位部分排他的論理和回路１３３１は、これらの中位部分パリティ論理積、中位部分第１論理積、中位部分第２論理積、中位部分第３論理積、及び中位部分第４論理積が入力されて、それらの排他的論理和の値を出力する回路である。この中位部分排他的論理和回路１３３１の出力が、第ｋ部分パリティ予測回路１３００の出力である、第ｒ部分乗算結果の第ｋ部分のパリティ値の予測値Ｐ＿Ｚｒ＿Ｐ［ｋ］となる。
【０３６４】
次に図２５Ｂについて説明する。図２５Ｂは、第ｒ部分乗算結果パリティ予測回路１１０１がｑ−１個備えている中位部分パリティ予測回路１２３０の１つである、第ｋ部分パリティ予測回路１３００の第二の例の構成を図解したものである。この第二の例の構成は、パリティ値として奇数パリティを使用する場合のものである。
【０３６５】
図２５Ｂの構成は、図２５Ａの構成における中位部分パリティ論理積回路１３０１を中位部分パリティ論理和回路１３０２に置換したものである。中位部分パリティ論理和回路１３０２は、第ｑ被乗数データユニットのパリティ値Ｐ＿Ａ［ｑ］と第ｒ乗数データユニットの値のパリティ値Ｐ＿Ｙ［ｒ］とが入力されてそれらのパリティ値の論理和の値（前述した中位部分パリティ論理和）を出力する回路である。
【０３６６】
中位部分排他的論理和回路１３３１は、中位部分パリティ論理和、中位部分第１論理積、中位部分第２論理積、中位部分第３論理積、及び中位部分第４論理積が入力されて、それらの排他的論理和の値を出力する回路である。この中位部分排他的論理和回路１３３１の出力が、第ｋ部分パリティ予測回路１３００の出力である、第ｒ部分乗算結果の第ｋ部分のパリティ値の予測値Ｐ＿Ｚｒ＿Ｐ［ｋ］となる。
【０３６７】
以上までの構成により、第ｒ部分乗算結果のデータユニット毎のパリティ値の予測値Ｐ＿Ｚｒ＿Ｐ［１］、…、Ｐ＿Ｚｒ＿Ｐ［ｑ＋１］の全てが、ｒのとり得る全ての値（ｒは１からｑまでの自然数）について得られる。
【０３６８】
［３．４．１．３．５．中位パリティ予測回路の具体的構成］
次に、図１９における中位パリティ予測回路１０００の具体的構成について説明する。
【０３６９】
前述したように、図１８のキャリーレス乗算パリティ予測回路２０２は、パリティ予測値Ｐ＿Ｚ＿Ｐ［２］、…、Ｐ＿Ｚ＿Ｐ［２ｑ−１］を各々出力する２ｑ−２個の中位パリティ予測回路１０００を備えている。図２６Ａ及び図２６Ｂは、それぞれ、この中位パリティ予測回路１０００のひとつである、第ｓ中位パリティ予測回路の第一の例及び第ｔ中位パリティ予測回路の第一の例を図解したものである。なお、これらの第一の例の構成は、パリティ値として偶数パリティを使用する場合のものである。
【０３７０】
第ｓ中位パリティ予測回路２０００は、乗算結果Ｚにおける下位よりｓ番目（但し、ｓは２からｑまでの自然数）のデータユニットのパリティ値の予測値Ｐ＿Ｚ＿Ｐ［２］、…、Ｐ＿Ｚ＿Ｐ［ｑ］を出力する回路である。また、第ｔ中位パリティ予測回路２００１は、乗算結果Ｚにおける下位よりｔ番目（但し、ｔはｑ＋１から２ｑ−１までの自然数）のデータユニットのパリティ値の予測値Ｐ＿Ｚ＿Ｐ［ｑ＋１］、…、Ｐ＿Ｚ＿Ｐ［２ｑ−１］を出力する回路である。
【０３７１】
図２６Ａにおいて、第１部分乗算結果パリティ予測回路２１００−１が備える第ｓ部分パリティ予測回路２２００−１は、第１部分乗算結果の第ｓ部分のパリティ予測値Ｐ＿Ｚ１＿Ｐ［ｓ］を出力する。また、第ｓ部分乗算結果パリティ予測回路２１００−ｓが備える第１部分パリティ予測回路２２００−ｓは、第ｓ部分乗算結果の第１部分のパリティ予測値Ｐ＿Ｚｓ＿Ｐ［１］を出力する。
【０３７２】
ＸＯＲ回路２０１０は、これらの第ｕ部分乗算結果パリティ予測回路（但し、ｕは１からｓまでの自然数）が備える第ｓ−ｕ＋１部分パリティ予測回路が出力するパリティ予測値が入力されて、これらｓ個のパリティ予測値の排他的論理和を出力する。このＸＯＲ回路２０１０の出力が、第ｓ中位パリティ予測回路２０００の出力である、乗算結果Ｚにおける下位よりｓ番目のデータユニットのパリティ値の予測値Ｐ＿Ｚ＿Ｐ［ｓ］となる。
【０３７３】
また、図２６Ｂにおいて、第ｔ−ｑ部分乗算結果パリティ予測回路２１０１−１が備える第ｑ＋１部分パリティ予測回路２２０１−１は、第ｔ−ｑ部分乗算結果の第ｑ＋１部分のパリティ予測値Ｐ＿Ｚ（ｔ−ｑ）＿Ｐ［ｑ＋１］を出力する。また、ｗ＝２ｑ−ｔ＋１としたときに、第ｑ部分乗算結果パリティ予測回路２１０１−ｗが備える第ｔ−ｑ＋１部分パリティ予測回路２２０１−ｗは、第ｑ部分乗算結果の第ｔ−ｑ＋１部分のパリティ予測値Ｐ＿Ｚｑ＿Ｐ［ｔ−ｑ＋１］を出力する。
【０３７４】
ＸＯＲ回路２０１１は、これらの第ｖ部分乗算結果パリティ予測回路（但し、ｖはｔ−ｑからｑまでの自然数）が備える第ｔ−ｖ＋１部分パリティ予測回路が出力するパリティ予測値が入力されて、これらｗ個のパリティ予測値の排他的論理和を出力する。このＸＯＲ回路２０１１の出力が、第ｔ中位パリティ予測回路２００１の出力である、乗算結果Ｚにおける下位よりｔ番目のデータユニットのパリティ値の予測値Ｐ＿Ｚ＿Ｐ［ｔ］となる。
【０３７５】
次に図２６Ｃ及び図２６Ｄについて説明する。図２６Ｃ及び図２６Ｄは、それぞれ、図１９における中位パリティ予測回路１０００のひとつである、第ｓ中位パリティ予測回路２０００の第二の例及び第ｔ中位パリティ予測回路２００１の第二の例を図解したものである。なお、これらの第二の例の構成は、パリティ値として奇数パリティを使用する場合のものである。
【０３７６】
図２６Ｃの第ｓ中位パリティ予測回路２０００の構成は、図２６Ａの構成におけるＸＯＲ回路２０１０に、定数値の入力を１つ追加したものである。この定数値は、ｓが偶数の場合には値「１」に設定され、ｓが奇数の場合には値「０」に設定される。
【０３７７】
なお、パリティ値として奇数パリティを使用する場合には、図２６Ｃのように第ｓ中位パリティ予測回路２０００を構成する代わりに、図２６Ａの構成に否定回路を追加して第ｓ中位パリティ予測回路２０００を構成してもよい。すなわち、図２６Ａの構成において、ｓが偶数の場合にのみ、否定回路を用いてＸＯＲ回路２０１０の出力の論理を反転させたものを、乗算結果Ｚにおける下位よりｓ番目のデータユニットのパリティ値の予測値Ｐ＿Ｚ＿Ｐ［ｓ］とするように構成してもよい。
【０３７８】
また、図２６Ｄの第ｔ中位パリティ予測回路２００１の構成は、図２６Ｂの構成におけるＸＯＲ回路２０１１に、定数値の入力を１つ追加したものである。この定数値は、ｗ（＝２ｑ−ｔ＋１）が偶数の場合には値「１」に設定され、ｗが奇数の場合には値「０」に設定される。
【０３７９】
なお、パリティ値として奇数パリティを使用する場合には、図２６Ｄのように第ｔ中位パリティ予測回路２００１を構成する代わりに、図２６Ｂの構成に否定回路を追加して第ｔ中位パリティ予測回路２００１を構成してもよい。すなわち、図２６Ｂの構成において、ｓが偶数の場合にのみ、否定回路を用いてＸＯＲ回路２０１１の出力の論理を反転させたものを、乗算結果Ｚにおける下位よりｔ番目のデータユニットのパリティ値の予測値Ｐ＿Ｚ＿Ｐ［ｔ］とするように構成してもよい。
【０３８０】
以上までの構成により、乗算結果Ｚにおける下位より２番目から２ｑ−１番目までの各データユニットのパリティ予測値Ｐ＿Ｚ＿Ｐ［２］、…、Ｐ＿Ｚ＿Ｐ［２ｑ−１］が、中位パリティ予測回路１０００から出力される。従って、この中位パリティ予測回路１０００と、下位パリティ予測回路８００及び上位パリティ予測回路９００とにより、乗算結果Ｚの各データユニットのパリティ予測値Ｐ＿Ｚ＿Ｐ［１］、…、Ｐ＿Ｚ＿Ｐ［２ｑ］が得られる。
【０３８１】
以上のように、上述したいずれの実施例においても、キャリーレス乗算パリティ予測回路２０２を用いてキャリーレス乗算回路２０１の誤動作を検出することができる。
【符号の説明】
【０３８２】
１  パリティ予測器
２  被乗数データ列
３  乗数データ列
４  乗算結果データ列
１０  下位パリティ予測部
２０  上位パリティ予測部
３０  中位パリティ予測部
４０  部分乗算結果パリティ予測部
５０  部分パリティ予測部
１００  演算処理装置
１１０  演算部
１１１  演算器
１１２  レジスタ
１１３  演算制御部
１２０  制御部
１３０  １次キャッシュ部
１３１  命令キャッシュ
１３２  データキャッシュ
１４０  ２次キャッシュ部
１５０  メモリ
２００  キャリーレス乗算器
２０１  キャリーレス乗算回路
２０２  キャリーレス乗算パリティ予測回路
２０３  パリティチェック回路
８００  下位パリティ予測回路
８０１  下位パリティ論理積回路
８０２  下位パリティ論理和回路
８１１  下位第１論理積回路
８１２  ＸＯＲ回路
８１３  下位第２論理積回路
８１４  下位排他的論理和回路
９００  上位パリティ予測回路
９０１  上位パリティ論理積回路
９０２  上位パリティ論理和回路
９１１  上位第１論理積回路
９１３  上位第２論理積回路
９１４  上位排他的論理和回路
１０００  中位パリティ予測回路
１１００  部分乗算結果パリティ予測回路
１１０１  第ｒ部分乗算結果パリティ予測回路
１２００  部分パリティ予測回路
１２０１  下位部分パリティ論理積回路
１２０２  下位部分パリティ論理和回路
１２０３  上位部分パリティ論理積回路
１２０４  上位部分パリティ論理和回路
１２１０  第１部分パリティ予測回路
１２１１  下位部分第１論理積回路
１２１２  ＸＯＲ回路
１２１３  下位部分第２論理積回路
１２１４  下位部分排他的論理和回路
１２２０  第ｑ＋１部分パリティ予測回路
１２２１  上位部分第１論理積回路
１２２３  上位部分第２論理積回路
１２２４  上位部分排他的論理和回路
１２３０  中位部分パリティ予測回路
１３００  第ｋ部分パリティ予測回路
１３０１  中位部分パリティ論理積回路
１３０２  中位部分パリティ論理和回路
１３１１  中位部分第１論理積回路
１３１３  中位部分第２論理積回路
１３２１  中位部分第３論理積回路
１３２３  中位部分第４論理積回路
１３３１  中位部分排他的論理和回路
２０００  第ｓ中位パリティ予測回路
２００１  第ｔ中位パリティ予測回路
２１００−１  第１部分乗算結果パリティ予測回路
２１００−ｓ  第ｓ部分乗算結果パリティ予測回路
２１０１−１  第ｔ−ｑ部分乗算結果パリティ予測回路
２１０１−ｗ  第ｑ部分乗算結果パリティ予測回路
２２００−１  第ｓ部分パリティ予測回路
２２００−ｓ  第１部分パリティ予測回路
２２０１−１  第ｑ＋１部分パリティ予測回路
２２０１−ｗ  第ｔ−ｑ＋１部分パリティ予測回路
【図１】
2013069000.tif 000044
【図２】
2013069000.tif 000045
【図３】
2013069000.tif 000046
【図４】
2013069000.tif 000047
【図５】
2013069000.tif 000048
【図６】
2013069000.tif 000049
【図８】
2013069000.tif 000050
【図９】
2013069000.tif 000051
【図１０Ａ】
2013069000.tif 000052
【図１０Ｂ】
2013069000.tif 000053
【図１０Ｃ】
2013069000.tif 000054
【図１０Ｄ】
2013069000.tif 000055
【図１０Ｅ】
2013069000.tif 000056
【図１０Ｆ】
2013069000.tif 000057
【図１０Ｇ】
2013069000.tif 000058
【図１１Ａ】
2013069000.tif 000059
【図１１Ｂ】
2013069000.tif 000060
【図１２Ａ】
2013069000.tif 000061
【図１２Ｂ】
2013069000.tif 000062
【図１３】
2013069000.tif 000063
【図１４Ａ】
2013069000.tif 000064
【図１４Ｂ】
2013069000.tif 000065
【図１４Ｃ】
2013069000.tif 000066
【図１４Ｄ】
2013069000.tif 000067
【図１５Ａ】
2013069000.tif 000068
【図１５Ｂ】
2013069000.tif 000069
【図１６】
2013069000.tif 000070
【図１７Ａ】
2013069000.tif 000071
【図１７Ｂ】
2013069000.tif 000072
【図１７Ｃ】
2013069000.tif 000073
【図１７Ｄ】
2013069000.tif 000074
【図１７Ｅ】
2013069000.tif 000075
【図１７Ｆ】
2013069000.tif 000076
【図１７Ｇ】
2013069000.tif 000077
【図１７Ｈ】
2013069000.tif 000078
【図１７Ｉ】
2013069000.tif 000079
【図１７Ｊ】
2013069000.tif 000080
【図１７Ｋ】
2013069000.tif 000081
【図１７Ｌ】
2013069000.tif 000082
【図１７Ｍ】
2013069000.tif 000083
【図１７Ｎ】
2013069000.tif 000084
【図１７Ｏ】
2013069000.tif 000085
【図１７Ｐ】
2013069000.tif 000086
【図１８】
2013069000.tif 000087
【図１９】
2013069000.tif 000088
【図２０Ａ】
2013069000.tif 000089
【図２０Ｂ】
2013069000.tif 000090
【図２１Ａ】
2013069000.tif 000091
【図２１Ｂ】
2013069000.tif 000092
【図２２】
2013069000.tif 000093
【図２３Ａ】
2013069000.tif 000094
【図２３Ｂ】
2013069000.tif 000095
【図２４Ａ】
2013069000.tif 000096
【図２４Ｂ】
2013069000.tif 000097
【図２５Ａ】
2013069000.tif 000098
【図２５Ｂ】
2013069000.tif 000099
【図２６Ａ】
2013069000.tif 000100
【図２６Ｂ】
2013069000.tif 000101
【図２６Ｃ】
2013069000.tif 000102
【図２６Ｄ】
2013069000.tif 000103
【図７】
2013069000.tif 000104