説明

パリティ予測器、キャリーレス乗算器、及び演算処理装置

【課題】キャリーレス乗算器の誤動作の検出を可能にする。
【解決手段】pビット(pは2以上の自然数)のデータユニットがそれぞれq個(qは自然数)並べられたデータ列である被乗数データ列2と乗数データ列3とのキャリーレス乗算を行う乗算回路が出力する乗算結果データ列4のパリティ値をパリティ予測器1が予測する。下位パリティ予測部10は、乗算結果データ列4における下位より1番目のデータユニットのパリティ値を、被乗数データ列2と乗数データ列3とにおける、下位より1番目のデータユニットの値及びパリティ値に基づき予測する。上位パリティ予測部20は、乗算結果データ列4における下位より2q−1番目のデータユニットに続く上位p−1ビットのデータのパリティ値を、被乗数データ列2と乗数データ列3とにおける、下位よりq番目のデータユニットの値及びパリティ値に基づき予測する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パリティ予測器、キャリーレス乗算器及び演算処理装置に関するものである。
【背景技術】
【0002】
データストリームの誤りを検出するCRC(Cyclic Redundancy Check 巡回冗長検査)等で使用されるキャリーレス乗算を行うキャリーレス乗算器が知られている。まず、キャリーレス乗算について説明する。
【0003】
被乗数データと乗数データとの乗算を行う通常の乗算では、まず、乗数データをビット毎に分解し、被乗数データとビット毎の部分乗数データとの積(部分積)を求める。そして、得られた部分積に対し、当該部分積の算出に用いた部分乗数データのビットの位に応じた桁揃えを行う。そして、同一桁の部分積同士を加算して乗算結果を得る。これに対し、キャリーレス乗算では、この加算の代わりに、同一桁の部分積同士の排他的論理和をとって乗算結果を得るというものである。
【0004】
キャリーレス乗算について更に説明する。
なお、以降の説明では、値aと値bとの論理積(AND演算)を「a*b」と表記することとし、値aと値bとの排他的論理和(EOR演算)を「a+b」と表記することし、値aと値bとの論理和(OR演算)を「a^b」と表記することとする。
【0005】
図1は、どちらも4ビットのデータである被乗数Aと乗数Yとのキャリーレス乗算を表している。なお、図1において、「a b c d」は被乗数Aの各ビットを表しており、「y3 y2 y1 y0」は乗数Yの各ビットを表している。
【0006】
図1において、「a*yo b*y0 c*y0 d*y0」の行は、被乗数Aの各ビットa、b、c、及びdと、乗数Yにおける下位から1番目のビットy0との論理積、すなわち、被乗数Aと乗数Yとの部分積を表している。また、この他の行も同様である。これらの各行は、キャリーレス乗算における演算の途中結果を表している。
【0007】
更に、Zは被乗数Aと乗数Yとのキャリーレス乗算の乗算結果を表しており、「z6 z5 z4 z3 z2 z1 z0」は乗算結果Zの各ビットを表している。なお、キャリーレス乗算においては、ビットz6の上の桁であるビットz7は常に「0」である。
【0008】
キャリーレス乗算では、この乗算結果Zの各ビットを下記の[数1]式に従って算出する。
【0009】
【数1】

【0010】
また、この他の背景技術として、演算回路においてアルファ線等の放射線が当該演算回路に入射することにより発生するソフトエラーに基づく演算結果の誤りを検出する技術が知られている。この技術では、まず、レジスタがグレイコード形式の第1の数値を保持する。次に、数値演算手段が、このレジスタに保持された第1の数値から、当該第1の数値に対する所定の数値演算の結果である第2の数値をグレイコード形式で求めて出力する。次に、パリティ演算手段が、このレジスタに保持された第1の数値に対するパリティ値である第1のパリティ値を使用して、当該数値演算に対応する所定の論理演算を行うことにより、当該第2の値に対するパリティ値である第2のパリティ値を生成する。そして、パリティチェック手段が、パリティ演算手段により生成された第2のパリティ値を使用して、数値演算手段により出力された第2の数値に対するパリティチェックを行うというものである。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】米国特許第7590930号明細書
【特許文献2】米国特許第7707483号明細書
【特許文献3】特開2010−205135号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
近年は、半導体の微細化に伴い、ソフトエラー等で演算器が誤動作する可能性が高まってきており、パリティチェックや回路の二重化などといった、信頼性を保証するための機構が演算器に対しても求められてきている。しかしながら、従来のキャリーレス乗算器には、パリティチェックや回路の二重化等のような機構が備えられておらず、このため、乗算器が誤動作してもその検出を行うことができなかった。
【0013】
1つの側面では、本発明は、キャリーレス乗算器の誤動作の検出を可能にすることを目的とする。
【課題を解決するための手段】
【0014】
本明細書で後述するパリティ予測器は、被乗数データ列と乗数データ列とのキャリーレス乗算結果のパリティ値を予測するものである。なお、ここで、被乗数データ列及び乗数データ列は、pビット(pは2以上の自然数)のデータであるデータユニットがそれぞれq個(qは自然数)並べられたデータ列である。
【0015】
このパリティ予測器は、下位パリティ予測部と上位パリティ予測部とを備えている。ここで、下位パリティ予測部は、キャリーレス乗算結果を示す乗算結果データ列における下位より1番目のデータユニットのパリティ値を予測する。下位パリティ予測部は、この予測を、被乗数データ列及び乗数データ列のそれぞれにおける、下位より1番目のデータユニットである第1データユニットの値及びパリティ値に基づいて行う。また、上位パリティ予測部は、この乗算結果データ列における下位より2q−1番目のデータユニットに続くデータである、当該乗算結果データ列の上位p−1ビットのデータのパリティ値を予測する。上位パリティ予測部は、この予測を、被乗数データ列及び乗数データ列のそれぞれにおける、下位よりq番目のデータユニットである第qデータユニットの値及びパリティ値に基づいて行う。
【発明の効果】
【0016】
本明細書で後述するパリティ予測器によれば、キャリーレス乗算器の誤動作の検出が行えるという効果を奏する。
【図面の簡単な説明】
【0017】
【図1】キャリーレス乗算の説明図である。
【図2】パリティ予測器の一実施例の構成図を示す図である。
【図3】乗算結果データ列のデータユニット毎のパリティ予測の説明図(その1)である。
【図4】乗算結果データ列のデータユニット毎のパリティ予測の説明図(その2)である。
【図5】乗算結果データ列のデータユニット毎のパリティ予測の説明図(その3)である。
【図6】乗算結果データ列のデータユニット毎のパリティ予測の説明図(その4)である。
【図7】乗算結果データ列のデータユニット毎のパリティ予測の説明図(その5)である。
【図8】演算処理装置の一実施例の構成図である。
【図9】キャリーレス乗算器の第一の例の構成図である。
【図10A】図9におけるキャリーレス乗算回路の構成図(その1)である。
【図10B】図9におけるキャリーレス乗算回路の構成図(その2)である。
【図10C】図9におけるキャリーレス乗算回路の構成図(その3)である。
【図10D】図9におけるキャリーレス乗算回路の構成図(その4)である。
【図10E】図9におけるキャリーレス乗算回路の構成図(その5)である。
【図10F】図9におけるキャリーレス乗算回路の構成図(その6)である。
【図10G】図9におけるキャリーレス乗算回路の構成図(その7)である。
【図11A】図9におけるキャリーレス乗算パリティ予測回路の第一の例の構成図である。
【図11B】図9におけるキャリーレス乗算パリティ予測回路の第二の例の構成図である。
【図12A】図9におけるパリティチェック回路の第一の例の構成図である。
【図12B】図9におけるパリティチェック回路の第二の例の構成図である。
【図13】キャリーレス乗算器の第二の例の構成図である。
【図14A】図13におけるキャリーレス乗算パリティ予測回路の第一の例の構成図(その1)である。
【図14B】図13におけるキャリーレス乗算パリティ予測回路の第一の例の構成図(その2)である。
【図14C】図13におけるキャリーレス乗算パリティ予測回路の第二の例の構成図(その1)である。
【図14D】図13におけるキャリーレス乗算パリティ予測回路の第二の例の構成図(その2)である。
【図15A】図13におけるパリティチェック回路の第一の例の構成図である。
【図15B】図13におけるパリティチェック回路の第二の例の構成図である。
【図16】キャリーレス乗算器の第三の例の構成図である。
【図17A】図16におけるキャリーレス乗算パリティ予測回路の第一の例の構成図(その1)である。
【図17B】図16におけるキャリーレス乗算パリティ予測回路の第一の例の構成図(その2)である。
【図17C】図16におけるキャリーレス乗算パリティ予測回路の第一の例の構成図(その3)である。
【図17D】図16におけるキャリーレス乗算パリティ予測回路の第一の例の構成図(その4)である。
【図17E】図16におけるキャリーレス乗算パリティ予測回路の第一の例の構成図(その5)である。
【図17F】図16におけるキャリーレス乗算パリティ予測回路の第一の例の構成図(その6)である。
【図17G】図16におけるキャリーレス乗算パリティ予測回路の第一の例の構成図(その7)である。
【図17H】図16におけるキャリーレス乗算パリティ予測回路の第一の例の構成図(その8)である。
【図17I】図16におけるキャリーレス乗算パリティ予測回路の第二の例の構成図(その1)である。
【図17J】図16におけるキャリーレス乗算パリティ予測回路の第二の例の構成図(その2)である。
【図17K】図16におけるキャリーレス乗算パリティ予測回路の第二の例の構成図(その3)である。
【図17L】図16におけるキャリーレス乗算パリティ予測回路の第二の例の構成図(その4)である。
【図17M】図16におけるキャリーレス乗算パリティ予測回路の第二の例の構成図(その5)である。
【図17N】図16におけるキャリーレス乗算パリティ予測回路の第二の例の構成図(その6)である。
【図17O】図16におけるキャリーレス乗算パリティ予測回路の第二の例の構成図(その7)である。
【図17P】図16におけるキャリーレス乗算パリティ予測回路の第二の例の構成図(その8)である。
【図18】キャリーレス乗算器の第四の例の構成図である。
【図19】図18におけるキャリーレス乗算パリティ予測回路の構成図である。
【図20A】図19における下位パリティ予測回路の第一の例の構成図である。
【図20B】図19における下位パリティ予測回路の第二の例の構成図である。
【図21A】図19における上位パリティ予測回路の第一の例の構成図である。
【図21B】図19における上位パリティ予測回路の第二の例の構成図である。
【図22】部分乗算結果パリティ予測回路の構成図である。
【図23A】図22における第1部分パリティ予測回路の第一の例の構成図である。
【図23B】図22における第1部分パリティ予測回路の第二の例の構成図である。
【図24A】図22における第q+1部分パリティ予測回路の第一の例の構成図である。
【図24B】図22における第q+1部分パリティ予測回路の第二の例の構成図である。
【図25A】第k部分パリティ予測回路の第一の例の構成図である。
【図25B】第k部分パリティ予測回路の第二の例の構成図である。
【図26A】第s中位パリティ予測回路の第一の例の構成図である。
【図26B】第t中位パリティ予測回路の第一の例の構成図である。
【図26C】第s中位パリティ予測回路の第二の例の構成図である。
【図26D】第t中位パリティ予測回路の第二の例の構成図である。
【発明を実施するための形態】
【0018】
まず図2について説明する。図2はパリティ予測器の一実施例の構成図である。
このパリティ予測器1は、被乗数データ列2と乗数データ列3とのキャリーレス乗算を行う乗算回路から出力される乗算結果データ列4についてのパリティ値を予測する。キャリーレス乗算器の誤動作検出を行う場合には、この被乗数データ列2と乗数データ列3とを検出対象のキャリーレス乗算器に入力したときに出力される乗算結果データ列4についてのパリティ値を、このパリティ予測器1によるパリティ値の予測結果と比較する。このパリティ値と、パリティ値の予測結果の比較によって両者の不一致が検出された場合には、検出対象のキャリーレス乗算器に誤動作が発生したと判定される。
【0019】
なお、本実施例において、被乗数データ列2及び乗数データ列3は、どちらも、データユニットがq個(但し、qは自然数)並べられたデータ列である。
しかし、以下の説明では、説明の便宜上、非乗数データ列のデータユニット数と乗数データ列のデータユニット数を、同じq個としているだけであって、両者は異なっていて構わない。
【0020】
なお、本明細書において、「データユニット」とは、1ビットデータがp個(但し、pは2以上の自然数)並べられて構成されるpビットのデータである。
また、以下の説明では、これも説明の便宜上、乗算結果データ列についてのデータユニットのビット数を、非乗数データ列と乗数データ列のデータユニットのビット数と同じpビットとしているが、乗算結果データ列についてのデータユニットのビット数は、pビットの整数倍であっても構わない。pビットの整数倍の部分のパリティの値は、乗算結果データ列から算出する値でも、予測値の値でも、それぞれの各pビットのパリティの値を使って、計算できるからである。
【0021】
このパリティ予測器1は下位パリティ予測部10及び上位パリティ予測部20を備えている。
下位パリティ予測部10は、乗算結果データ列4における下位より1番目のデータユニットのパリティ値を予測する。下位パリティ予測部10は、このパリティ値(下位パリティ予測値)を、被乗数データ列2及び乗数データ列3のそれぞれにおける、下位より1番目のデータユニットである第1データユニットの値及びパリティ値に基づいて予測する。
【0022】
上位パリティ予測部20は、乗算結果データ列4における下位より2q−1番目のデータユニットに続くデータのパリティ値、すなわち、乗算結果データ列4の上位p−1ビットのデータのパリティ値を予測する。上位パリティ予測部20は、このp−1ビットのデータのパリティ値(上位パリティ予測値)を、被乗数データ列2及び乗数データ列3のそれぞれにおける、下位よりq番目のデータユニットである第qデータユニットの値及びパリティ値に基づいて予測する。
【0023】
また、このパリティ予測器1は中位パリティ予測部30を更に備えている。中位パリティ予測部30は、被乗数データ列2及び乗数データ列3が、前述のデータユニットを複数個並べたデータ列である場合に、乗算結果データ列4における下位より2番目から2q−1番目までの各データユニット毎のパリティ値を予測する。中位パリティ予測部30は、このパリティ値(中位パリティ予測値)を、被乗数データ列2と乗数データ列3とにおける、下位より1番目(第1データユニット)からq番目(第qデータユニット)までの各データユニットの値及びパリティ値に基づいて予測する。
【0024】
本実施例では、この中位パリティ予測部30は部分乗算結果パリティ予測部40を備えている。部分乗算結果パリティ予測部40は、被乗数データ列2と、乗数データ列3を構成するデータユニットのうちの1つである部分乗数データとのキャリーレス乗算の結果である部分乗算結果データ列のデータユニット毎のパリティ値を予測する。中位パリティ予測部30は、この部分乗算結果パリティ予測部40による予測結果に基づいて、中位パリティ予測値の予測を行う。
【0025】
本実施例では、この部分乗算結果パリティ予測部40は部分パリティ予測部50を備えている。部分パリティ予測部50は、上述した部分乗算結果データ列のデータユニット毎に、当該データユニットのパリティ値を予測する。
【0026】
パリティ予測器1は以上の構成を備えている。これらの構成要素の詳細は後述する。
次に、パリティ予測器1で用いられている、被乗数データ列2と乗数データ列3とのキャリーレス乗算の結果である乗算結果データ列4についてのパリティ値の予測の手法について説明する。
【0027】
なお、ここでは、パリティ値に偶数パリティを使用する場合を説明し、奇数パリティを使用する場合については後述する。
【0028】
[1.データユニットを考慮しない場合の乗算結果データ列のパリティ予測]
後述する、乗算結果データ列4のパリティ値の予測をデータユニット毎に行う場合の予測の手法の理解を容易にするために、まず、乗算結果データ列4のパリティ値の予測を、データユニットを考慮せずに行う場合の予測手法について説明する。
【0029】
なお、ここでは、前述したキャリーレス乗算の説明に使用した、図1のデータ例を利用して、パリティ予測の説明を行う。
図1のデータ例は、4ビットのデータである被乗数Aと乗数Yとのキャリーレス乗算の乗算結果をZとしたものである。この乗算結果Zのパリティ値をP_Zとすると、パリティ値の定義より、
【0030】
【数2】

である。
【0031】
ところで、この[数2]式に、前掲した[数1]式を代入すると、
【数3】

が成立する。
【0032】
また、[数3]式は下記の[数4]式に変形できる。
【0033】
【数4】

【0034】
この[数4]式の右辺において、論理積を表している「*」記号によって結ばれている2つの項(排他的論理和の項)に注目すると、「a+b+c+d」は被乗数Aのパリティ値であり、「y3+y2+y1+y0」は乗数Yのパリティ値である。つまり、被乗数Aのパリティ値をP_Aとし、乗数Yのパリティ値をP_Yとすると、下記の[数5]式が成立する。
【0035】
【数5】

【0036】
そこで、被乗数Aから求めたP_Aの値と乗数Yから求めたP_Yの値とを[数5]式に代入してP_Zの値を求める。この値を乗算結果Zのパリティ値の予測値とする。
【0037】
キャリーレス乗算器の誤動作の検出を行う場合には、被乗数Aと乗数Yとをキャリーレス乗算器に入力して、その出力である乗算結果Zを得る。そして、この乗算結果Zのパリティ値P_Zを[数2]式により求める。ここで、この[数2]式により求めたパリティ値P_Zが、[数5]式により求めた予測値と一致するか否かを判定する。ここで、この両者が一致しない場合には、キャリーレス乗算器が誤動作したとの判断を下す。キャリーレス乗算器の誤動作は、このようにして検出される。
【0038】
[2.乗算結果データ列のデータユニット毎のパリティ予測]
次に、乗算結果データ列4のパリティ値の予測をデータユニット毎に行う場合の予測の手法について説明する。
【0039】
[2.1.被乗数データ列及び乗数データ列が共に1個のデータユニットの場合]
ここでは、1ビットデータが4個並べられた4ビットのデータをデータユニットとする。
【0040】
まず、被乗数データ列2及び乗数データ列3が共に1個のデータユニットで構成されている場合(すなわち4ビットのデータある場合)の乗算結果データ列4のデータユニット毎のパリティ値の予測手法を説明する。
【0041】
図3は、どちらも4ビットのデータである被乗数Aと乗数Yとのキャリーレス乗算を表している。なお、図3において、「a b c d」は被乗数Aの各ビットを表しており、「y3 y2 y1 y0」は乗数Yの各ビットを表している。
【0042】
図3において、「a*yo b*y0 c*y0 d*y0」の行は、被乗数Aの各ビットa、b、c、及びdと、乗数Yにおける下位から1番目のビットy0との論理積、すなわち、被乗数Aと乗数Yとの部分積を表している。また、この他の行も同様である。これらの各行は、キャリーレス乗算における演算の途中結果を表している。
【0043】
更に、Zは被乗数Aと乗数Yとのキャリーレス乗算の乗算結果を表しており、「z6 z5 z4 z3 z2 z1 z0」は乗算結果Zの各ビットを表している。なお、キャリーレス乗算においては、ビットz6の上の桁であるビットz7は常に「0」である。
【0044】
図1の場合と同様に、キャリーレス乗算では、この乗算結果Zの各ビットを前掲した[数1]式に従って算出する。
ここで、乗算結果Zのデータユニット毎のパリティ値をP_Z0及びP_Z1とする。ここで、P_Z0は、乗算結果Zにおける下位より1番目のデータユニット(すなわち「z3 z2 z1 z0」)のパリティ値である。また、P_Z1は、乗算結果Zにおける下位より1番目のデータユニットに続くデータのパリティ値、すなわち、乗算結果Zの上位3ビットのデータ(すなわち「z6 z5 z4」)のパリティ値である。
【0045】
このとき、パリティ値P_Z0及びP_Z1は、それぞれ、パリティ値の定義より、
【数6】

【数7】

である。
【0046】
ところで、データユニットを考慮せずに行う場合における乗算結果Zのパリティ値P_Zは、[数2]式により求まることは先に説明した。この[数2]式と、上掲した[数6]式及び[数7]式とを対比すると、下記の[数8]式が成立する。
【0047】
【数8】

【0048】
ここで、排他的論理和の定義を考慮すると、[数8]式は下記の[数9]式及び[数10]式に変形できることは明らかである。
【0049】
【数9】

【0050】
【数10】

【0051】
ここで、[数9]式に[数5]式及び[数7]式を代入し、[数10]式に[数5]式及び[数6]式を代入すると、下記の[数11]式及び[数12]式が求まる。
【0052】
【数11】

【0053】
【数12】

【0054】
そこで、被乗数Aを構成しているa、b、c、及びdの各値とこれらの値から求めたP_Aの値、並びに、乗数Yを構成しているy0、y1、y2、及びy3の各値とこれらの値から求めたP_Yの値を[数11]式及び[数12]式にそれぞれ代入する。そして、このときに[数11]式及び[数12]式から求まるP_Z0及びP_Z1の値を、乗算結果Zのパリティ値の予測値とする。
【0055】
キャリーレス乗算器の誤動作の検出を行う場合には、被乗数Aと乗数Yとをキャリーレス乗算器に入力して、その出力である乗算結果Zを得る。そして、この乗算結果Zのデータユニット毎のパリティ値P_Z0及びP_Z1を[数6]式及び[数7]式により求める。ここで、この[数6]式及び[数7]式により求めたパリティ値P_Z0及びP_Z1が、それぞれ[数11]式及び[数12]式により求めた予測値と一致するか否かを判定する。ここで、この両者が一致しない場合には、キャリーレス乗算器が誤動作したとの判断を下す。キャリーレス乗算器の誤動作は、このようにして検出される。
【0056】
なお、[数11]式は、以下のように考えることもできる。
まず、図3において、キャリーレス乗算における演算の途中結果を表している各行を、被乗数Aの各ビットとの関係に従って右側に移動して、パリティ値P_Z0の対象である、乗算結果Zの下位より1番目のデータユニットの位置に配置してみる。この様子を表したものが図4である。
【0057】
ここで、逆に、図3を図4からの変形と見て考える。このように考えると、乗算結果Zの下位より1番目のデータユニットのパリティ値P_Z0は、図4において太線で囲まれた部分に含まれている各項の排他的論理和に対し、当該データユニットの位から上位にはみ出した各項の影響を補償すれば求まることが分かる。
【0058】
ここで、図4において太線で囲まれた部分に含まれている各項の排他的論理和は、データユニットを考慮せずに行う場合における乗算結果Zのパリティ値P_Zに等しいことは、[数3]式から明らかである。従って、この場合にパリティ値P_Z0の予測値を求める場合の式は、[数11]式の計算を行えばよいことが分かる。
【0059】
また、[数12]式についても、以下のように考えることもできる。
まず、図3において、キャリーレス乗算における演算の途中結果を表している各行を、被乗数Aの各ビットとの関係に従って左側に移動してみる。この様子を表したものが図5である。
【0060】
ここで、逆に、図3を図5からの変形と見て考える。このように考えると、乗算結果Zの下位より2番目のデータユニットのパリティ値P_Z1は、図5において太線で囲まれた部分に含まれている各項の排他的論理和に対し、当該データユニットの位から下位にはみ出した各項の影響を補償すれば求まることが分かる。
【0061】
ここで、図5において太線で囲まれた部分に含まれている各項の排他的論理和は、データユニットを考慮せずに行う場合における乗算結果Zのパリティ値P_Zに等しいことは、[数3]式から明らかである。従って、この場合にパリティ値P_Z1の予測値を求める場合の式は、[数12]式の計算を行えばよいことが分かる。
【0062】
なお、以降の説明では、キャリーレス乗算を、図6のように図解するものとする。
この図6では、キャリーレス乗算における演算の途中結果を表している各行の表現を図3から変更して、被乗数Aの各ビットa、b、c、及びdに対する乗数Yの各ビットy0、y1、y2、及びy3の論理積を括り出して右端に表示するようにしたものである。
【0063】
[2.2.被乗数データ列及び乗数データ列が共に2個のデータユニットの場合]
ここでも、1ビットデータが4個並べられた4ビットのデータをデータユニットとする。
【0064】
次に、被乗数データ列2及び乗数データ列3が共に2個のデータユニットで構成されている場合(すなわち8ビットのデータである場合)の乗算結果データ列4のデータユニット毎のパリティ値の予測手法を説明する。
【0065】
図7は、どちらも8ビットのデータである被乗数Aと乗数Yとのキャリーレス乗算を表している。なお、図7において、「a b c d e f g h」は被乗数Aの各ビットを表しており、「y7 y6 y5 y4 y3 y2 y1 y0」は乗数Yの各ビットを表している。
【0066】
また、図7において、Zは被乗数Aと乗数Yとのキャリーレス乗算の乗算結果を表しており、「z14 z13 z12 z11 z10 z9 z8 z7 z6 z5 z4 z3 z2 z1 z0」は乗算結果Zの各ビットを表している。なお、キャリーレス乗算においては、ビットz14の上の桁であるビットz15は常に「0」である。更に、乗算結果Zのデータユニット毎のパリティ値を、それぞれP_Z0、P_Z1、P_Z2、及びP_Z3とする。ここで、P_Z0は、乗算結果Zにおける下位より1番目のデータユニット(すなわち「z3 z2 z1 z0」)のパリティ値である。また、P_Z1は、乗算結果Zにおける下位より2番目のデータユニット(すなわち「z7 z6 z5 z4」)のパリティ値である。更に、P_Z2は、乗算結果Zにおける下位より3番目のデータユニット(すなわち「z11 z10 z9 z8」)のパリティ値である。なお、P_Z3は、乗算結果Zにおける下位より3番目のデータユニットに続くデータのパリティ値、すなわち、乗算結果Zの上位3ビットのデータ(すなわち「z14 z13 z12」)のパリティ値である。
【0067】
図7においては、キャリーレス乗算における演算の途中結果が、ブロックAからブロックFまでの各ブロックに表されている。ここで、ブロックA、B、及びDは、被乗数Aと乗数Yのうちの下位より1番目のデータユニット(すなわち、「y3 y2 y1 y0」)との、キャリーレス乗算である部分乗算における演算の途中結果を表している。また、ブロックC、E、及びFは、被乗数Aと乗数Yのうちの下位より2番目のデータユニット(すなわち、「y7 y6 y5 y4」)との、キャリーレス乗算である部分乗算における演算の途中結果を表している。ここでは、パリティ値の予測を、まず、このブロック毎に行う。
【0068】
なお、以下の説明では、データユニット「y3 y2 y1 y0」を「データユニットY0」と称することとし、データユニット「y7 y6 y5 y4」を「データユニットY1」と称することとする。また、データユニットY0のパリティ値をP_Y0とし、データユニットY1のパリティ値をP_Y1とする。
【0069】
まず、ブロックAに注目する。このブロックAには、被乗数Aのうちの下位より1番目のデータユニット「e f g h」とデータユニットY0との部分乗算の一部(ブロックBへのはみ出しを除いた部分)が表されている。このブロックAについての乗算結果のパリティ値P_ZAの予測式は、前述した図3の場合におけるパリティ値P_Z0の予測式である[数11]式におけるa、b、c、及びdをe、f、g、及びhに置き換えればよい。すなわち、パリティ値P_ZAは、下記の[数13]を用いて予測することができる。
【0070】
【数13】

【0071】
なお、パリティ値P_A0は、データユニット「e f g h」のパリティ値である。以下の説明では、データユニット「e f g h」を「データユニットA0」と称することとする。
【0072】
次にブロックDに注目する。このブロックDには、被乗数Aのうちの下位より2番目のデータユニット「a b c d」とデータユニットY0との部分乗算の一部(ブロックBへのはみ出し部分の残り)が表されている。このブロックDについての乗算結果のパリティ値P_ZDの予測式は、前述した図3の場合におけるパリティ値P_Z1の予測式である[数12]式をそのまま利用すればよい。すなわち、パリティ値P_ZDは、下記の[数14]を用いて予測することができる。
【0073】
【数14】

【0074】
なお、パリティ値P_A1は、データユニット「a b c d」のパリティ値である。以下の説明では、データユニット「a b c d」を「データユニットA1」と称することとする。
【0075】
次にブロックBに注目する。このブロックBは、データユニットA1とY0との部分乗算の一部(ブロックDへのはみ出しを除いた部分)に、データユニットA0とY0との部分乗算の一部(ブロックAからのはみ出し部分)が重なったものと考えればよい。言い換えると、ブロックBについてのパリティ値P_ZBの予測は、以下のようにして行う。
【0076】
まず、ブロックBにおける、データユニットA1とY0との部分乗算の一部(ブロックDへのはみ出しを除いた部分)に関するパリティ値P_ZBDを予測する。このパリティ値P_ZBDの予測式は、前述した図3の場合におけるパリティ値P_Z0の予測式である[数11]式をそのまま利用すればよい。すなわち、パリティ値P_ZBDは、下記の[数15]式を用いて予測することができる。
【0077】
【数15】

【0078】
次に、この予測されたパリティ値P_ZBDに対して、データユニットA0とY0との部分乗算の一部(ブロックAからのはみ出し部分)がブロックBにおいて重なったことによる影響の補償を行う。従って、パリティ値Z_Bは、下記の[数16]式を用いて予測することができる。
【0079】
【数16】

【0080】
次に、被乗数AとデータユニットY1との部分乗算における演算の途中結果を表しているブロックC、F、及びEについて注目する。これらのブロックC、F、及びEについてのパリティ値の予測は、これらのブロックとブロックA、D、及びBとの対応関係を考慮して、ブロックA、D、及びBのパリティ値の予測式である[数13]式、[数14]式、及び[数16]式を利用する。すなわち、[数13]式、[数14]式、及び[数16]式におけるy0、y1、y2、及びy3を各々y4、y5、y6、及びy7に置き換えた下記の式を用いてブロックC、F、及びEについてのパリティ値P_ZC、P_ZF、及びP_ZEの予測を行う。
【0081】
【数17】

【0082】
【数18】

【0083】
【数19】

【0084】
以上のようにしてブロック毎のパリティ値が求まると、乗算結果Zのデータユニット毎のパリティ値P_Z0、P_Z1、P_Z2、及びP_Z3は、それぞれ下記の式によって求めることができる。
【0085】
【数20】

【0086】
【数21】

【0087】
【数22】

【0088】
【数23】

【0089】
キャリーレス乗算器の誤動作の検出を行う場合には、被乗数Aと乗数Yとをキャリーレス乗算器に入力して、その出力である乗算結果Zを得る。そして、この乗算結果Zのデータユニット毎のパリティ値P_Z0、P_Z1、P_Z2、及びP_Z3を、パリティ値の定義に従い、この乗算結果Zにおけるビットz0からビットz14の各値を用いて求める。ここで、このようにして求めたパリティ値P_Z0、P_Z1、P_Z2、及びP_Z3が、それぞれ[数20]式、[数21]式、[数22]式、及び[数23]式により求めた予測値と一致するか否かを判定する。ここで、この両者が一致しない場合には、キャリーレス乗算器が誤動作したとの判断を下す。キャリーレス乗算器の誤動作は、このようにして検出される。
【0090】
[2.3.被乗数データ列及び乗数データ列のサイズを一般化した場合]
ここでは、前述した[2.2]を一般化した場合、すなわち、データユニットのサイズと被乗数データ列2及び乗数データ列3のサイズとを一般化した場合における、乗算結果データ列4のデータユニット毎のパリティ値の予測手法について検討する。
【0091】
まず、データユニットを、1ビットデータがp個(但し、pは2以上の自然数)並べられたpビットのデータとする。そして、被乗数A及び乗数Yが共にq個(但し、qは自然数)のデータユニットで構成されている(すなわちq×pビットのデータである)とする。このときの被乗数Aと乗数Yとのキャリーレス乗算によって得られる乗算結果Zは、2q×p−1ビットのデータとなる。
【0092】
なお、以下の説明では、被乗数Aにおいての下位より1番目のデータユニット、すなわち、下位より1番目からp番目までのビットデータで構成されているデータユニットを「第1被乗数データユニット」と称することとする。また、被乗数Aにおいての、下位より2番目のデータユニットからq番目までの各データユニットについても、それぞれ「第2被乗数データユニット」、…、「第q被乗数データユニット」と称することとする。同様に、乗数Yにおいての下位より1番目のデータユニット、すなわち、下位より1番目からp番目までのビットデータで構成されているデータユニットを「第1乗数データユニット」と称することとする。また、乗数Yにおいての、下位より2番目のデータユニットからq番目までの各データユニットについても、それぞれ「第2乗数データユニット」、…、「第q乗数データユニット」と称することとする。
【0093】
更に、以下の説明では、乗算結果Zにおける下位より1番目のデータユニットを「第1乗算結果データユニット」と称することとする。そして、乗算結果Zにおける下位より2番目のデータユニットから2q−1番目までの各データユニットについても、それぞれ「第2乗算結果データユニット」、…、「第2q−1乗算結果データユニット」と称することとする。また、乗算結果Zにおける第2q−1乗算結果データユニットに続くp−1ビットのデータ、すなわち、乗算結果Zにおける上位からp−1ビットのデータについては、便宜上「第2q乗算結果データユニット」と称することとする。
【0094】
[2.3.1.下位パリティの予測]
まず、第1乗算結果データユニットのパリティ値(このパリティ値を「下位パリティ値」と称することとする)の予測手法について説明する。この下位パリティ値の予測は、前掲した図7におけるパリティ値P_Z0の予測と同様に考えることができる。すなわち、下位パリティ値の予測は、第1被乗数データユニットと第1乗数データユニットとの各々についての値及びパリティ値に基づき、[数20]式及び[数13]式を拡張して、例えば、以下の手順に従って行う。
【0095】
まず、第1被乗数データユニットのパリティ値と第1乗数データユニットのパリティ値との論理積を求める。この論理積の値を「下位パリティ論理積」と称することとする。なお、この手順は、[数13]式においては、右辺の、「+」記号で結ばれている各項のうちの第1項の論理演算に相当する。
【0096】
次に、第1被乗数データユニットにおける最上位のビットの値と第1乗数データユニットにおける下位より2桁目のビットの値との論理積を求める。この論理積の値を「下位第1論理積」と称することとする。なお、この手順は、[数13]式においては右辺の第2項の論理演算に相当する。
【0097】
次に、第1被乗数データユニットにおける上位よりi桁分(但し、iは2からp−1までの自然数)の各ビットの値の排他的論理和と第1乗数データユニットにおける下位からi+1桁目のビットの値との論理積を各々求める。このiがとり得る値はp−2個存在するので、論理積の値もp−2個得られる。この論理積の値を「下位第2論理積」と称することとする。なお、この手順は、[数13]式においては右辺の第3項から第4項までの各項の論理演算に相当する。
【0098】
なお、これらの下位パリティ論理積、下位第1論理積、及びp−2個の下位第2論理積の算出順序は、上述の順序でなくてもよい。
次に、以上のようにして求められた下位パリティ論理積と、下位第1論理積と、p−2個の下位第2論理積との排他的論理和を求める。こうして求められた排他的論理和の値が、下位パリティ値の予測結果となる。なお、この手順は、[数13]式においては右辺の第1項から第4項までの各項の排他的論理和の演算に相当する。
【0099】
[2.3.2.上位パリティの予測]
次に、第2q乗算結果データユニットのパリティ値(このパリティ値を「上位パリティ値」と称することとする)の予測手法について説明する。この上位パリティ値の予測は、前掲した図7におけるパリティ値P_Z3の予測と同様に考えることができる。すなわち、上位パリティ値の予測は、第q被乗数データユニットと第q乗数データユニットとの各々についての値及びパリティ値に基づき、[数23]式及び[数18]式を拡張して、例えば、以下の手順に従って行う。
【0100】
まず、第q被乗数データユニットのパリティ値と第q乗数データユニットのパリティ値との論理積を求める。この論理積の値を「上位パリティ論理積」と称することとする。なお、この手順は、[数18]式においては、右辺の、「+」記号で結ばれている各項のうちの第1項の論理演算に相当する。
【0101】
次に、第q被乗数データユニットにおける最下位のビットの値と第q乗数データユニットにおける最上位のビットの値との論理積を求める。この論理積の値を「上位第1論理積」と称することとする。なお、この手順は、[数18]式においては右辺の第5項の論理演算に相当する。
【0102】
次に、第q被乗数データユニットにおける下位よりj桁分(但し、jは2からpまでの自然数)の各ビットの値の排他的論理和と第q乗数データユニットにおける上位からj桁目のビットの値との論理積を各々求める。このjがとり得る値はp−1個存在するので、論理積の値もp−1個得られる。この論理積の値を「上位第2論理積」と称することとする。なお、この手順は、[数18]式においては右辺の第2項から第4項までの各項の論理演算に相当する。
なお、これらの上位パリティ論理積、上位第1論理積、及びp−1個の上位第2論理積の算出順序は、上述の順序でなくてもよい。
【0103】
次に、以上のようにして求められた上位パリティ論理積と、上位第1論理積と、p−1個の上位第2論理積との排他的論理和を求める。こうして求められた排他的論理和の値が、上位パリティ値の予測結果となる。なお、この手順は、[数18]式においては右辺の第1項から第5項までの各項の排他的論理和の演算に相当する。
【0104】
[2.3.3.中位パリティの予測]
次に、第2乗算結果データユニットから第2q−1乗算結果データユニットまでの各乗算結果データユニットのパリティ値(このパリティ値を「中位パリティ値」と称することとする)の予測手法について説明する。この中位パリティ値の予測は、被乗数A及び乗数Yのそれぞれにおける、第1データユニットから第qデータユニットまでの各データユニットの値及びパリティ値に基づいて行われる。
【0105】
[2.3.3.1.部分乗算結果のデータユニット毎のパリティ値の予測]
この中位パリティ値の予測では、部分乗算結果のデータユニット毎のパリティ値の予測を行い、この部分乗算結果のデータユニット毎のパリティ値の予測結果に基づいて、中位パリティ値の予測を行う。なお、部分乗算結果とは、被乗数Aと乗数Yを構成するデータユニットのうちの1つとのキャリーレス乗算の結果である。
【0106】
ここで、被乗数Aと第r乗数データユニット(但し、rは1からqまでの自然数)とのキャリーレス乗算の結果を、「第r部分乗算結果」と称することとする。従って、図7の例では、例えば、被乗数A(すなわち「a b c d e f g h」)と第1乗数データユニット(すなわち「y3 y2 y1 y0」)とのキャリーレス乗算の結果が第1部分乗算結果である。また、被乗数Aと第2乗数データユニット(すなわち「y7 y6 y5 y4」)とのキャリーレス乗算の結果が第2部分乗算結果である。
【0107】
この第r部分乗算結果における、下位より1番目のデータユニットを「第1部分」と称することとする。また、同様に、この第r部分乗算結果における、下位より2番目のデータユニットからq番目までの各データユニットについても、それぞれ「第2部分」、…、「第q部分」と称することとする。更に、この第r部分乗算結果における第q部分に続くデータである、第r部分乗算結果の上位p−1ビットのデータを、便宜上「第q+1部分」と称することとする。
【0108】
以下、これらの第1部分から第q+1部分の各々についてのパリティ値の予測手法について説明する。
【0109】
[2.3.3.1.1.第1部分のパリティ値の予測]
第1部分のパリティ値の予測は、前掲した図7におけるブロックAについてのパリティ値P_ZAの予測、若しくは、ブロックCについてのパリティ値P_ZCの予測と同様に考えることができる。すなわち、第1部分のパリティ値の予測は、第1被乗数データユニットと第r乗数データユニットとの各々についての値及びパリティ値に基づき、[数13]式若しくは[数17]式を拡張して、例えば、以下の手順に従って行う。
【0110】
まず、第1被乗数データユニットのパリティ値と第r乗数データユニットのパリティ値との論理積を求める。この論理積の値を「下位部分パリティ論理積」と称することとする。なお、この手順は、[数13]式においては、右辺における、「+」記号で結ばれている各項のうちの第1項の論理演算に相当する。
【0111】
次に、第1被乗数データユニットにおける最上位のビットの値と第r乗数データユニットにおける下位より2桁目のビットの値との論理積を求める。この論理積の値を「下位部分第1論理積」と称することとする。なお、この手順は、[数13]式においては右辺の第2項の論理演算に相当する。
【0112】
次に、第1被乗数データユニットにおける上位よりg桁分(但し、gは2からp−1までの自然数)の各ビットの値の排他的論理和と第r乗数データユニットにおける下位からg+1桁目のビットの値との論理積を各々求める。このgがとり得る値はp−2個存在するので、論理積の値もp−2個得られる。この論理積の値を「下位部分第2論理積」と称することとする。なお、この手順は、[数13]式においては右辺の第3項から第4項までの各項の論理演算に相当する。
なお、これらの下位部分パリティ論理積、下位部分第1論理積、及びp−2個の下位部分第2論理積の算出順序は、上述の順序でなくてもよい。
【0113】
次に、以上のようにして求められた下位部分パリティ論理積と、下位部分第1論理積と、p−2個の下位部分第2論理積との排他的論理和を求める。こうして求められた排他的論理和の値が、第1部分のパリティ値の予測結果となる。なお、この手順は、[数13]式においては右辺の第1項から第4項までの各項の排他的論理和の演算に相当する。
【0114】
[2.3.3.1.2.第q+1部分のパリティ値の予測]
第q+1部分のパリティ値の予測は、前掲した図7におけるブロックDについてのパリティ値P_ZDの予測、若しくは、ブロックFについてのパリティ値P_ZFの予測と同様に考えることができる。すなわち、第q+1部分のパリティ値の予測は、第q被乗数データユニットと第r乗数データユニットとの各々についての値及びパリティ値に基づき、[数14]式若しくは[数18]式を拡張して、例えば、以下の手順に従って行う。
【0115】
まず、第q被乗数データユニットのパリティ値と第r乗数データユニットのパリティ値との論理積を求める。この論理積の値を「上位部分パリティ論理積」と称することとする。なお、この手順は、[数14]式においては、右辺における、「+」記号で結ばれている各項のうちの第1項の論理演算に相当する。
【0116】
次に、第q被乗数データユニットにおける最下位のビットの値と第r乗数データユニットにおける最上位のビットの値との論理積を求める。この論理積の値を「上位部分第1論理積」と称することとする。なお、この手順は、[数14]式においては右辺の第5項の論理演算に相当する。
【0117】
次に、第q被乗数データユニットにおける下位よりh桁分(但し、hは2からpまでの自然数)の各ビットの値の排他的論理和と第q乗数データユニットにおける上位からh桁目のビットの値との論理積を各々求める。このhがとり得る値はp−1個存在するので、論理積の値もp−1個得られる。この論理積の値を「上位部分第2論理積」と称することとする。なお、この手順は、[数14]式においては右辺の第2項から第4項までの各項の論理演算に相当する。
【0118】
なお、これらの上位部分パリティ論理積、上位部分第1論理積、及びp−1個の上位部分第2論理積の算出順序は、上述の順序でなくてもよい。
次に、以上のようにして求められた上位部分パリティ論理積と、上位部分第1論理積と、p−1個の上位部分第2論理積との排他的論理和を求める。こうして求められた排他的論理和の値が、第q+1部分のパリティ値の予測結果となる。なお、この手順は、[数14]式においては右辺の第1項から第5項までの各項の排他的論理和の演算に相当する。
【0119】
[2.3.3.1.3.中位部分のパリティ値の予測]
次に、第2部分から第q部分までの各データユニットのパリティ値(このパリティ値を「中位部分パリティ値」と称することとする)の予測手法について説明する。この中位部分パリティ値の予測は、前掲した図7におけるブロックBについてのパリティ値P_ZBの予測、若しくは、ブロックEについてのパリティ値P_ZEの予測と同様に考えることができる。この中位部分パリティ値の予測は、第1被乗数データユニットから第q被乗数データユニットまでの各データユニットと第r乗数データユニットとの各々の値及びパリティ値に基づき、[数16]式若しくは[数19]式を拡張して、例えば、以下の手順で行う。
【0120】
なお、ここでは、第k部分(但し、kは2からqまでの自然数)についてのパリティ値の予測の手順を説明する。
まず、第k被乗数データユニットのパリティ値と第r乗数データユニットのパリティ値との論理積を求める。この論理積の値を「中位部分パリティ論理積」と称することとする。なお、この手順は、[数16]式においては、右辺の、「+」記号で結ばれている各項のうちの第1項の論理演算に相当する。
【0121】
次に、第k被乗数データユニットにおける最上位のビットの値と第r乗数データユニットにおける下位より2桁目のビットの値との論理積を求める。この論理積の値を「中位部分第1論理積」と称することとする。なお、この手順は、[数16]式においては第2項の論理演算に相当する。
【0122】
次に、第k被乗数データユニットにおける上位よりm桁分(但し、mは2からp−1までの自然数)の各ビットの値の排他的論理和と第r乗数データユニットにおける下位からm+1桁目のビットの値との論理積を各々求める。このmがとり得る値はp−2個存在するので、論理積の値もp−2個得られる。この論理積の値を「中位部分第2論理積」と称することとする。なお、この手順は、[数16]式においては右辺の第3項から第4項までの各項の論理演算に相当する。
【0123】
次に、第k−1被乗数データユニットにおける最上位のビットの値と第r乗数データユニットにおける下位より2桁目のビットの値との論理積を求める。この論理積の値を「中位部分第3論理積」と称することとする。なお、この手順は、[数16]式においては右辺の第5項の論理演算に相当する。
【0124】
次に、第k−1被乗数データユニットにおける上位よりn桁分(但し、nは2からp−1までの自然数)の各ビットの値の排他的論理和と第r乗数データユニットにおける下位よりn+1桁目のビットの値との論理積を各々求める。このnがとり得る値はp−2個存在するので、論理積の値もp−2個得られる。この論理積の値を「中位部分第4論理積」と称することとする。なお、この手順は、[数16]式においては右辺の第6項から第7項までの各項の論理演算に相当する。
【0125】
なお、これらの中位部分パリティ論理積、中位部分第1論理積、p−2個の中位部分第2論理積、中位部分第3論理積、及びp−2個の中位部分第4論理積の算出順序は、上述の順序でなくてもよい。
【0126】
次に、以上のようにして求められた中位部分パリティ論理積と、中位部分第1論理積と、p−2個の中位部分第2論理積と、中位部分第3論理積と、p−2個の中位部分第4論理積との排他的論理和を求める。こうして求められた排他的論理和の値が、第k部分についてのパリティ値の予測結果となる。なお、この手順は、[数16]式においては右辺の第1項から第7項までの各項の排他的論理和の演算に相当する。
【0127】
[2.3.3.2.部分乗算結果のデータユニット毎のパリティ値の予測結果に基づく中位パリティの予測]
以上までの手順を、変数rがとり得る全ての値について行うことで、第1部分乗算結果から第r部分乗算結果の各々についてのデータユニット毎のパリティ予測値が求まる。乗算結果Zを構成しているデータユニット毎の中位パリティ値の予測は、これらの部分乗算結果のデータユニット毎のパリティ予測値を所定の規則に従って選択し、選択されたパリティ予測値の排他的論理和を求めることで行う。
【0128】
まず、乗算結果Zを構成しているデータユニットのうち、第s乗算結果データユニット(但し、sは2からqまでの自然数)のパリティ値の予測手法について説明する。
第s乗算結果データユニットのパリティ値の予測は、前掲した図7において、ブロックBについてのパリティ予測値とブロックCについてのパリティ予測値とを用いて行ったパリティ値P_Z1の予測と同様に考えることができる。すなわち、第s乗算結果データユニットのパリティ値の予測は、[数21]式を拡張して、例えば、以下の手順に従って行う。
【0129】
まず、第u部分乗算結果(但し、uは1からsまでの自然数)の第s−u+1部分のパリティ予測値を選択する。このuがとり得る値はs個存在するので、s個のパリティ予測値が選択される。そして、選択されたs個のパリティ予測値の排他的論理和を求める。こうして求められた排他的論理和の値が、第s乗算結果データユニットのパリティ値の予測結果となる。
【0130】
次に、乗算結果Zを構成しているデータユニットのうち、第t乗算結果データユニット(但し、tはq+1から2q−1までの自然数)のパリティ値の予測手法について説明する。
【0131】
第t乗算結果データユニットのパリティ値の予測は、前掲した図7において、ブロックDについてのパリティ予測値とブロックEについてのパリティ予測値とを用いて行ったパリティ値P_Z2の予測と同様に考えることができる。すなわち、第t乗算結果データユニットのパリティ値の予測は、[数22]式を拡張して、例えば、以下の手順に従って行う。
【0132】
まず、第v部分乗算結果(但し、vはt−qからqまでの自然数)の第t−v+1部分のパリティ予測値を選択する。このvがとり得る値は2q−t+1個存在するので、2q−t+1個のパリティ予測値が選択される。そして、選択されたパリティ予測値の排他的論理和を求める。こうして求められた排他的論理和の値が、第t乗算結果データユニットのパリティ値の予測結果となる。
【0133】
第2乗算結果データユニットから第2q−1乗算結果データユニットまでの各データユニットについての中位パリティ値の予測は、以上のようにして行う。
【0134】
[2.4.奇数パリティの場合のパリティ予測]
以上までに説明したパリティ値の予測手法は、パリティ値として偶数パリティを使用していた。ここでは、奇数パリティを使用する場合の予測手法について説明する。
【0135】
偶数パリティは、あるデータを構成する各ビットとそのデータのパリティビットとのうちで値が「1」であるビットの個数が偶数となるようにパリティビットの値(パリティ値)を設定するというものである。このようにするために、偶数パリティにおけるあるデータのパリティ値には、そのデータを構成する各ビットの排他的論理和の値が設定される。
【0136】
これに対し、奇数パリティは、あるデータを構成する各ビットとそのデータのパリティビットとのうちで値が「1」であるビットの個数が奇数となるようにパリティビットの値(パリティ値)を設定するというものである。このために、奇数パリティにおけるあるデータのパリティ値には、そのデータを構成する各ビットの排他的論理和の値(すなわち、偶数パリティの場合のパリティ値)に対し、更に値「1」との排他的論理和をとった値が設定される。
【0137】
この関係を考慮して、奇数パリティの場合におけるパリティ値の予測式を導出する。
まず、[1.データユニットを考慮しない場合の乗算結果データ列のパリティ予測]での予測に使用する、奇数パリティの場合の予測式を導出する。
【0138】
前掲した図1のデータ例において、4ビットのデータである被乗数Aと乗数Yとのキャリーレス乗算の乗算結果Zのパリティ値の導出式は、奇数パリティの場合には、下記の[数24]式となる。
【0139】
【数24】

この[数24]式において、P_Z_oddは、奇数パリティの場合における乗算結果Zのパリティ値である。なお、以降の説明では、奇数パリティの場合のパリティ値をこのように表記して、前述した偶数パリティの場合のパリティ値と区別することとする。
【0140】
この[数24]式に、前掲した[数1]式を代入して変形すると、
【0141】
【数25】

【0142】
この[数25]式において、P_Z_oddが「1」となるのは、(a+b+c+d)と(y3+y2+y1+y0)とのうちの少なくとも一方の値が「0」の場合である。
【0143】
ところで、奇数パリティの場合における被乗数Aのパリティ値をP_A_oddとし、乗数Yのパリティ値をP_Y_oddとすると、パリティ値の定義より、
【0144】
【数26】

である。この[数26]式において、(a+b+c+d)の値が「0」となるとP_A_oddの値は「1」であり、(y3+y2+y1+y0)の値が「0」となるとP_Y_oddの値は「1」である。従って、(a+b+c+d)と(y3+y2+y1+y0)とのうちの少なくとも一方の値が「0」となる場合とは、P_A_oddの値とP_Y_oddの値とのうちの少なくとも一方の値が「1」である。このことから、下記の[数27]式が得られる。
【0145】
【数27】

【0146】
なお、前述したように、記号「^」は論理和を表している。奇数パリティの場合は、被乗数Aから求めたP_A_oddの値と乗数Yから求めたP_Y_oddの値とを[数27]式に代入してP_Z_oddの値を求める。この値を乗算結果Zのパリティ値の予測値とする。
【0147】
キャリーレス乗算器の誤動作の検出を行う場合には、被乗数Aと乗数Yとをキャリーレス乗算器に入力して、その出力である乗算結果Zを得る。そして、この乗算結果Zのパリティ値P_Z_oddを[数25]式により求める。ここで、この[数25]式により求めたパリティ値P_Z_oddが、[数27]式により求めた予測値と一致するか否かを判定する。ここで、この両者が一致しない場合には、キャリーレス乗算器が誤動作したとの判断を下す。奇数パリティの場合には、キャリーレス乗算器の誤動作は、このようにして検出される。
【0148】
次に、[2.乗算結果データ列のデータユニット毎のパリティ予測]での予測に使用する、奇数パリティの場合の予測式を導出する。
まず、[2.1.被乗数データ列及び乗数データ列が共に1個のデータユニットの場合]について説明する。
【0149】
前掲した図3のデータ例において、被乗数Aと乗数Yとのキャリーレス乗算の乗算結果Zのデータユニット毎の奇数パリティでのパリティ値をP_Z0_odd及びP_Z1−oddは、それぞれ、パリティ値の定義より、
【0150】
【数28】

【0151】
【数29】

である。
【0152】
次に、前述した偶数パリティの場合と同様に、前掲した図3を図4からの変形と見て考える。つまり、乗算結果Zの下位より1番目のデータユニットの奇数パリティでのパリティ値P_Z0_oddを、図4において太線で囲まれた部分の奇数パリティ値に対し、当該データユニットの位から上位にはみ出した各項の影響を補償して求める。
【0153】
図4において太線で囲まれた部分の奇数パリティ値は、データユニットを考慮せずに行う場合における乗算結果Zのパリティ値P_Z_oddに等しいことは、[数28]式から明らかである。従って、この場合にパリティ値P_Z0_oddの予測値を求める場合の式としては、前掲した[数11]式の右辺における記号「+」で結ばれている各項における第1項を、[数27]式を用いて置き換えた下記の[数30]式を用いればよいことが分かる。
【0154】
【数30】

【0155】
また、前述した偶数パリティの場合と同様に、前掲した図3を図5からの変形と見て考える。つまり、乗算結果Zの下位より2番目のデータユニットの奇数パリティでのパリティ値P_Z1_oddを、図5において太線で囲まれた部分の奇数パリティ値に対し、当該データユニットの位から下位にはみ出した各項の影響を補償して求める。
【0156】
図5において太線で囲まれた部分の奇数パリティ値は、データユニットを考慮せずに行う場合における乗算結果Zのパリティ値P_Z_oddに等しいことは、[数28]式から明らかである。従って、この場合にパリティ値P_Z1_oddの予測値を求める場合の式としては、前掲した[数12]式の右辺における記号「+」で結ばれている各項における第1項を、[数27]式を用いて置き換えた下記の[数31]式を用いればよいことが分かる。
【0157】
【数31】

【0158】
キャリーレス乗算器の誤動作の検出を行う場合には、被乗数Aと乗数Yとをキャリーレス乗算器に入力して、その出力である乗算結果Zを得る。そして、この乗算結果Zのデータユニット毎の奇数パリティでのパリティ値P_Z0_odd及びP_Z1_oddを[数28]式及び[数29]式により求める。ここで、この[数28]式及び[数29]式により求めたパリティ値P_Z0_odd及びP_Z1_oddが、それぞれ[数30]式及び[数31]式により求めた予測値と一致するか否かを判定する。ここで、この両者が一致しない場合には、キャリーレス乗算器が誤動作したとの判断を下す。キャリーレス乗算器の誤動作は、このようにして検出される。
【0159】
次に、[2.2.被乗数データ列及び乗数データ列が共に2個のデータユニットの場合]について説明する。
前掲した図7のデータ例において、ブロックAについての乗算結果の奇数パリティでのパリティ値P_ZA_oddの予測式は、前掲した[数30]式におけるa、b、c、及びdをe、f、g、及びhに置き換えればよい。すなわち、パリティ値P_ZA_oddは、下記の[数32]を用いて予測することができる。
【0160】
【数32】

【0161】
なお、P_Y0_oddは、データユニットY0の奇数パリティでのパリティ値であり、P_Y1_oddは、データユニットY1の奇数パリティでのパリティ値である。
【0162】
次に、図7におけるブロックDについての乗算結果の奇数パリティでのパリティ値P_ZD_oddの予測式は、前掲した[数31]式をそのまま利用すればよい。すなわち、パリティ値P_ZD_oddは、下記の[数33]を用いて予測することができる。
【0163】
【数33】

【0164】
次に、図7におけるブロックBについての乗算結果の奇数パリティでのパリティ値P_ZB_oddの予測式については、前掲した[数30]式及び[数31]式と同様に考えて導出すればよい。すなわち、パリティ値P_ZB_oddの予測値を求める場合の式としては、前掲した[数16]式の右辺における記号「+」で結ばれている各項における第1項を、[数27]式を用いて置き換えた下記の[数34]式を用いればよいことが分かる。
【0165】
【数34】

【0166】
次に、図7におけるブロックC、F、及びEについてのパリティ値の予測は、これらのブロックとブロックA、D、及びBとの対応関係を考慮して、ブロックA、D、及びBのパリティ値の予測式である[数32]式、[数33]式、及び[数34]式を利用する。すなわち、これらのパリティ値の予測には、[数33]式、[数34]式、及び[数36]式におけるy0、y1、y2、及びy3を各々y4、y5、y6、及びy7に置き換えた下記の式を用いる。
【0167】
【数35】

【0168】
【数36】

【0169】
【数37】

【0170】
なお、P_ZC_odd、P_ZF_odd、及びP_ZE_oddは、それぞれ、ブロックC、F、及びEについての乗算結果の奇数パリティでのパリティ値である。
【0171】
以上のようにしてブロック毎のパリティ値が求まると、乗算結果Zのデータユニット毎の奇数パリティでのパリティ値P_Z0_odd、P_Z1_odd、P_Z2_odd、及びP_Z3_oddは、それぞれ下記の式によって求めることができる。
【0172】
【数38】

【0173】
【数39】

【0174】
【数40】

【0175】
【数41】

【0176】
なお、上掲した[数39]式及び[数40]式では、右辺の末尾に「+1」が付加されること、すなわち、値「1」との排他的論理和が付加されていることに留意する必要がある。
【0177】
例えば、図7において、P_Z1_oddをパリティ値の定義に従って求めると、ブロックBに含まれる各項と及びブロックCの各項との排他的論理和に対して、更に値「1」との排他的論理和1回をとることになる。これに対し、P_ZB_oddは、ブロックBに含まれる各項の排他的論理和と値「1」との排他的論理和をとったものであり、P_ZC_oddは、ブロックCに含まれる各項の排他的論理和と値「1」との排他的論理和をとったものである。従って、P_ZB_oddとP_ZC_oddとの排他的論理和では、値「1」との排他的論理和を2回とることとなってしまう。そこで、[数39]式においては、値「1」との排他的論理和を付加することで、この影響を解消しているのである。このことは[数40]式でも同様である。
【0178】
このように、奇数パリティにおいては、乗算結果Zのデータユニット毎の奇数パリティでのパリティ値を偶数個のブロックの排他的論理和から求める場合には、当該排他的論理和に対し、更に値「1」との排他的論理和をとる必要がある。
【0179】
キャリーレス乗算器の誤動作の検出を行う場合には、被乗数Aと乗数Yとをキャリーレス乗算器に入力して、その出力である乗算結果Zを得る。そして、この乗算結果Zのデータユニット毎のパリティ値P_Z0_odd、P_Z1_odd、P_Z2_odd、及びP_Z3_oddを、パリティ値の定義に従い、この乗算結果Zにおけるビットz0からビットz14の各値を用いて求める。ここで、このようにして求めたパリティ値P_Z0_odd、P_Z1_odd、P_Z2_odd、及びP_Z3_oddが、それぞれ[数38]式、[数39]式、[数40]式、及び[数41]式により求めた予測値と一致するか否かを判定する。ここで、この両者が一致しない場合には、キャリーレス乗算器が誤動作したとの判断を下す。キャリーレス乗算器の誤動作は、このようにして検出される。
【0180】
次に、[2.3.被乗数データ列及び乗数データ列のサイズを一般化した場合]について説明する。
まず、[2.3.1.下位パリティの予測]については、前述した[2.2.]の場合と同様に考えることができる。
【0181】
すなわち、下位パリティ値の予測は、第1被乗数データユニットと第1乗数データユニットとの各々についての値及びパリティ値に基づき、[数38]式及び[数32]式を拡張して、例えば、以下の手順に従って行う。
【0182】
まず、第1被乗数データユニットのパリティ値と第1乗数データユニットのパリティ値との論理和を求める。この論理和の値を「下位パリティ論理和」と称することとする。なお、この手順は、[数32]式においては、右辺の、「+」記号で結ばれている各項のうちの第1項の論理演算に相当する。
【0183】
次に、第1被乗数データユニットにおける最上位のビットの値と第1乗数データユニットにおける下位より2桁目のビットの値との論理積を求める。この論理積の値を「下位第1論理積」と称することとする。なお、この手順は、[数32]式においては右辺の第2項の論理演算に相当する。
【0184】
次に、第1被乗数データユニットにおける上位よりi桁分(但し、iは2からp−1までの自然数)の各ビットの値の排他的論理和と第1乗数データユニットにおける下位からi+1桁目のビットの値との論理積を各々求める。このiがとり得る値はp−2個存在するので、論理積の値もp−2個得られる。この論理積の値を「下位第2論理積」と称することとする。なお、この手順は、[数32]式においては右辺の第3項から第4項までの各項の論理演算に相当する。
【0185】
なお、これらの下位パリティ論理和、下位第1論理積、及びp−2個の下位第2論理積の算出順序は、上述の順序でなくてもよい。
次に、以上のようにして求められた下位パリティ論理和と、下位第1論理積と、p−2個の下位第2論理積との排他的論理和を求める。こうして求められた排他的論理和の値が、下位パリティ値の予測結果となる。なお、この手順は、[数32]式においては右辺の第1項から第4項までの各項の排他的論理和の演算に相当する。
【0186】
次に、[2.3.2.上位パリティの予測]についても、前述した[2.2.]の場合と同様に考えることができる。すなわち、上位パリティ値の予測は、第q被乗数データユニットと第q乗数データユニットとの各々についての値及びパリティ値に基づき、[数41]式及び[数36]式を拡張して、例えば、以下の手順に従って行う。
【0187】
まず、第q被乗数データユニットのパリティ値と第q乗数データユニットのパリティ値との論理和を求める。この論理積の値を「上位パリティ論理和」と称することとする。なお、この手順は、[数36]式においては、右辺の、「+」記号で結ばれている各項のうちの第1項の論理演算に相当する。
【0188】
次に、第q被乗数データユニットにおける最下位のビットの値と第q乗数データユニットにおける最上位のビットの値との論理積を求める。この論理積の値を「上位第1論理積」と称することとする。なお、この手順は、[数36]式においては右辺の第5項の論理演算に相当する。
【0189】
次に、第q被乗数データユニットにおける下位よりj桁分(但し、jは2からpまでの自然数)の各ビットの値の排他的論理和と第q乗数データユニットにおける上位からj桁目のビットの値との論理積を各々求める。このjがとり得る値はp−1個存在するので、論理積の値もp−1個得られる。この論理積の値を「上位第2論理積」と称することとする。なお、この手順は、[数36]式においては右辺の第2項から第4項までの各項の論理演算に相当する。
【0190】
なお、これらの上位パリティ論理和、上位第1論理積、及びp−1個の上位第2論理積の算出順序は、上述の順序でなくてもよい。
次に、以上のようにして求められた上位パリティ論理和と、上位第1論理積と、p−1個の上位第2論理積との排他的論理和を求める。こうして求められた排他的論理和の値が、上位パリティ値の予測結果となる。なお、この手順は、[数36]式においては右辺の第1項から第5項までの各項の排他的論理和の演算に相当する。
【0191】
また、[2.3.3.中位パリティの予測]における[2.3.3.1.部分乗算結果のデータユニット毎のパリティ値の予測]についても、前述した[2.2.]の場合と同様に考えることができる。
【0192】
まず、第1部分のパリティ値の予測は、第1被乗数データユニットと第r乗数データユニット(但し、rは1からqまでの自然数)との各々についての値及びパリティ値に基づき、[数32]式若しくは[数35]式を拡張して、例えば、以下の手順に従って行う。
【0193】
まず、第1被乗数データユニットのパリティ値と第r乗数データユニットのパリティ値との論理和を求める。この論理和の値を「下位部分パリティ論理和」と称することとする。なお、この手順は、[数32]式においては、右辺における、「+」記号で結ばれている各項のうちの第1項の論理演算に相当する。
【0194】
次に、第1被乗数データユニットにおける最上位のビットの値と第r乗数データユニットにおける下位より2桁目のビットの値との論理積を求める。この論理積の値を「下位部分第1論理積」と称することとする。なお、この手順は、[数32]式においては右辺の第2項の論理演算に相当する。
【0195】
次に、第1被乗数データユニットにおける上位よりg桁分(但し、gは2からp−1までの自然数)の各ビットの値の排他的論理和と第r乗数データユニットにおける下位からg+1桁目のビットの値との論理積を各々求める。このgがとり得る値はp−2個存在するので、論理積の値もp−2個得られる。この論理積の値を「下位部分第2論理積」と称することとする。なお、この手順は、[数32]式においては右辺の第3項から第4項までの各項の論理演算に相当する。
【0196】
なお、これらの下位部分パリティ論理和、下位部分第1論理積、及びp−2個の下位部分第2論理積の算出順序は、上述の順序でなくてもよい。
次に、以上のようにして求められた下位部分パリティ論理和と、下位部分第1論理積と、p−2個の下位部分第2論理積との排他的論理和を求める。こうして求められた排他的論理和の値が、第1部分のパリティ値の予測結果となる。なお、この手順は、[数32]式においては右辺の第1項から第4項までの各項の排他的論理和の演算に相当する。
【0197】
また、第q+1部分のパリティ値の予測は、第q被乗数データユニットと第r乗数データユニットとの各々についての値及びパリティ値に基づき、[数33]式若しくは[数36]式を拡張して、例えば、以下の手順に従って行う。
【0198】
まず、第q被乗数データユニットのパリティ値と第r乗数データユニットのパリティ値との論理和を求める。この論理和の値を「上位部分パリティ論理和」と称することとする。なお、この手順は、[数33]式においては、右辺における、「+」記号で結ばれている各項のうちの第1項の論理演算に相当する。
【0199】
次に、第q被乗数データユニットにおける最下位のビットの値と第r乗数データユニットにおける最上位のビットの値との論理積を求める。この論理積の値を「上位部分第1論理積」と称することとする。なお、この手順は、[数33]式においては右辺の第5項の論理演算に相当する。
【0200】
次に、第q被乗数データユニットにおける下位よりh桁分(但し、hは2からpまでの自然数)の各ビットの値の排他的論理和と第q乗数データユニットにおける上位からh桁目のビットの値との論理積を各々求める。このhがとり得る値はp−1個存在するので、論理積の値もp−1個得られる。この論理積の値を「上位部分第2論理積」と称することとする。なお、この手順は、[数33]式においては右辺の第2項から第4項までの各項の論理演算に相当する。
【0201】
なお、これらの上位部分パリティ論理和、上位部分第1論理積、及びp−1個の上位部分第2論理積の算出順序は、上述の順序でなくてもよい。
次に、以上のようにして求められた上位部分パリティ論理和と、上位部分第1論理積と、p−1個の上位部分第2論理積との排他的論理和を求める。こうして求められた排他的論理和の値が、第q+1部分のパリティ値の予測結果となる。なお、この手順は、[数33]式においては右辺の第1項から第5項までの各項の排他的論理和の演算に相当する。
【0202】
更に、第k部分(但し、kは2からqまでの自然数)についてのパリティ値の予測は、[数34]式若しくは[数37]式を拡張して、例えば、以下の手順で行う。
まず、第k被乗数データユニットのパリティ値と第r乗数データユニットのパリティ値との論理和を求める。この論理和の値を「中位部分パリティ論理和」と称することとする。なお、この手順は、[数34]式においては、右辺の、「+」記号で結ばれている各項のうちの第1項の論理演算に相当する。
【0203】
次に、第k被乗数データユニットにおける最上位のビットの値と第r乗数データユニットにおける下位より2桁目のビットの値との論理積を求める。この論理積の値を「中位部分第1論理積」と称することとする。なお、この手順は、[数34]式においては第2項の論理演算に相当する。
【0204】
次に、第k被乗数データユニットにおける上位よりm桁分(但し、mは2からp−1までの自然数)の各ビットの値の排他的論理和と第r乗数データユニットにおける下位からm+1桁目のビットの値との論理積を各々求める。このmがとり得る値はp−2個存在するので、論理積の値もp−2個得られる。この論理積の値を「中位部分第2論理積」と称することとする。なお、この手順は、[数34]式においては右辺の第3項から第4項までの各項の論理演算に相当する。
【0205】
次に、第k−1被乗数データユニットにおける最上位のビットの値と第r乗数データユニットにおける下位より2桁目のビットの値との論理積を求める。この論理積の値を「中位部分第3論理積」と称することとする。なお、この手順は、[数34]式においては右辺の第5項の論理演算に相当する。
【0206】
次に、第k−1被乗数データユニットにおける下位よりn桁分(但し、nは2からp−1までの自然数)の各ビットの値の排他的論理和と第r乗数データユニットにおける下位よりn+1桁目のビットの値との論理積を各々求める。このnがとり得る値はp−2個存在するので、論理積の値もp−2個得られる。この論理積の値を「中位部分第4論理積」と称することとする。なお、この手順は、[数34]式においては右辺の第6項から第7項までの各項の論理演算に相当する。
【0207】
なお、これらの中位部分パリティ論理和、中位部分第1論理積、p−2個の中位部分第2論理積、中位部分第3論理積、及びp−2個の中位部分第4論理積の算出順序は、上述の順序でなくてもよい。
【0208】
次に、以上のようにして求められた中位部分パリティ論理和と、中位部分第1論理積と、p−2個の中位部分第2論理積と、中位部分第3論理積と、p−2個の中位部分第4論理積との排他的論理和を求める。こうして求められた排他的論理和の値が、第k部分についてのパリティ値の予測結果となる。なお、この手順は、[数34]式においては右辺の第1項から第7項までの各項の排他的論理和の演算に相当する。
【0209】
次に、前述した[2.3.3.2.部分乗算結果のデータユニット毎のパリティ値の予測結果に基づく中位パリティの予測]を、奇数パリティの場合について説明する。
まず、前述した手順を、変数rがとり得る全ての値について行うことで、第1部分乗算結果から第r部分乗算結果の各々についてのデータユニット毎のパリティ予測値が求まる。乗算結果Zを構成しているデータユニット毎の中位パリティ値の予測は、これらの部分乗算結果のデータユニット毎のパリティ予測値を所定の規則に従って選択し、選択されたパリティ予測値の排他的論理和を求めることで行う。但し、前述したように、奇数パリティにおいては、乗算結果Zのデータユニット毎の奇数パリティでのパリティ値を偶数個のブロックの排他的論理和から求める場合には、当該排他的論理和に対し、更に値「1」との排他的論理和をとる必要があることに注意する。
【0210】
まず、乗算結果Zを構成しているデータユニットのうち、第s乗算結果データユニット(但し、sは2からqまでの自然数)のパリティ値の予測手法について説明する。
第s乗算結果データユニットのパリティ値の予測は、前掲した図7において、ブロックBについてのパリティ予測値とブロックCについてのパリティ予測値とを用いて行ったパリティ値P_Z1の予測と同様に考えることができる。すなわち、第s乗算結果データユニットのパリティ値の予測は、[数39]式を考慮して、例えば、以下の手順に従って行う。
【0211】
まず、第u部分乗算結果(但し、uは1からsまでの自然数)の第s−u+1部分のパリティ予測値を選択する。このuがとり得る値はs個存在するので、s個のパリティ予測値が選択される。そして、選択されたs個のパリティ予測値の排他的論理和を求める。ここで、sが奇数の場合には、こうして求められた排他的論理和の値が、第s乗算結果データユニットのパリティ値の予測結果となる。一方、ここで、sが偶数の場合には、こうして求められた排他的論理和と値「1」との排他的論理和の値が、第s乗算結果データユニットのパリティ値の予測結果となる。
【0212】
次に、乗算結果Zを構成しているデータユニットのうち、第t乗算結果データユニット(但し、tはq+1から2q−1までの自然数)のパリティ値の予測手法について説明する。
【0213】
第t乗算結果データユニットのパリティ値の予測は、前掲した図7において、ブロックDについてのパリティ予測値とブロックEについてのパリティ予測値とを用いて行ったパリティ値P_Z2の予測と同様に考えることができる。すなわち、第t乗算結果データユニットのパリティ値の予測は、[数40]式を考慮して、例えば、以下の手順に従って行う。
【0214】
まず、第v部分乗算結果(但し、vはt−qからqまでの自然数)の第t−v+1部分のパリティ予測値を選択する。このvがとり得る値は2q−t+1個存在するので、2q−t+1個のパリティ予測値が選択される。そして、選択されたパリティ予測値の排他的論理和を求める。ここで、2q−t+1が奇数の場合には、こうして求められた排他的論理和の値が、第t乗算結果データユニットのパリティ値の予測結果となる。一方、ここで、2q−t+1が偶数の場合には、こうして求められた排他的論理和と値「1」との排他的論理和の値が、第t乗算結果データユニットのパリティ値の予測結果となる。
【0215】
第2乗算結果データユニットから第2q−1乗算結果データユニットまでの各データユニットについての中位パリティ値の予測は、以上のようにして行う。
【0216】
[3.誤動作検出機能を有するキャリーレス乗算器を備えた演算処理装置の構成]
次に、誤動作検出機能を有するキャリーレス乗算器を備えた演算処理装置について説明する。
【0217】
図8は、演算処理装置の一実施例の構成図である。この演算処理装置100は、演算部110、演算制御部120、1次キャッシュ部130、及び2次キャッシュ部140を備えており、メモリ150が接続されて使用される。
【0218】
演算部110は、制御部120による制御に従って、入力されたデータに対して各種の演算を実行し、当該演算の結果として得られたデータを出力する。この演算部110は演算器111、レジスタ112、及び演算制御部113を備えている。
【0219】
演算器111は、各種の算術演算や論理演算を行うハードウェアである。特に、この演算器111は、後述するキャリーレス乗算器200を備えている。
レジスタ112は、演算部110に入力されたデータ、及び演算部110から出力するデータを1次キャッシュ部130との間で授受するために、データの一時的な保持を行う。
【0220】
演算制御部113は、制御部120による制御に従って、演算器111及びレジスタ112の動作を制御する。
制御部120は、1次キャッシュ部130で保持されている命令データを所定の順序で読み出し、読み出された命令データに従って演算部110を制御して各種の演算を実行させる。
【0221】
1次キャッシュ部130は、メモリ150に蓄積されているデータのうちで使用頻度の高いデータを蓄積しておく高速のメモリである。1次キャッシュ部130は、命令データを蓄積しておく命令キャッシュ131と、演算器111への入力データや演算器111からの出力データを蓄積しておくデータキャッシュ132とを備えている。
【0222】
2次キャッシュ部140は、メモリ150に蓄積されているデータのうちで、使用頻度の高いデータであって1次キャッシュ部130には蓄積されていないデータを蓄積しておく、1次キャッシュ部130よりも容量は大きいが低速のメモリである。
【0223】
メモリ150は、演算処理装置への動作の命令が表されている命令データ、及び、演算器111への入力データや演算器111からの出力データを記憶する。
【0224】
[3.1.データユニットを考慮しない場合のキャリーレス乗算器の構成]
次に図9について説明する。図9は、図8の演算処理装置100に演算器111の一部として備えられているキャリーレス乗算器の第一例の構成図である。このキャリーレス乗算器200は、[1.データユニットを考慮しない場合の乗算結果データ列のパリティ予測]で説明した誤動作検出機能を有している。
【0225】
図9のキャリーレス乗算器200は、キャリーレス乗算回路201、キャリーレス乗算パリティ予測回路202、及びパリティチェック回路203を備えている。
キャリーレス乗算回路201は、どちらも4ビットのデータである被乗数Aと乗数Yとのキャリーレス乗算を行って乗算結果Zを出力する回路であり、前掲した[数1]式の演算を行う回路である。
【0226】
キャリーレス乗算パリティ予測回路202は、偶数パリティの場合には、被乗数Aの偶数パリティ値P_Aと、乗数Yの偶数パリティ値P_Yとから、乗算結果Zのパリティ値の予測値P_Z_Pの予測を行う回路である。また、奇数パリティの場合には、キャリーレス乗算パリティ予測回路202は、被乗数Aの奇数パリティ値P_A_oddと、乗数Yの偶数パリティ値P_Y_oddとから、乗算結果Zのパリティ値の予測値P_Z_Pの予測を行う回路である。
【0227】
パリティチェック回路203は、キャリーレス乗算回路201が出力した乗算結果Zのパリティ値P_Zを求めて、キャリーレス乗算パリティ予測回路202の出力である予測値P_Z_Pの予測と一致するか否かを判定する回路である。
【0228】
次に、キャリーレス乗算回路201の構成について説明する。図9のキャリーレス乗算回路201の具体的な回路構成を図10Aから図10Gの各図に示す。
図10Aから図10Gの各図の回路は、被乗数Aの各ビットa、b、c、及びdと、乗数Yの各ビットy3、y2、y1、及びy0とのキャリーレス乗算を行って、乗算結果Zの各ビットz6、z5、z4、z3、z2、z1、及びz0の値を得る回路である。なお、乗算結果Zのビットz7の値は常に「0」であるので、省略している。
【0229】
図10Aの回路は、AND回路(論理積回路)401にビットd及びyoの値をそれぞれ入力したときの出力を、ビットz0の値とする回路であり、前掲した[数1]式における一番目の式の演算を行う回路である。
【0230】
図10Bの回路は、まず、AND回路411にビットc及びy0の値をそれぞれ入力したときの出力と、AND回路412にビットd及びy1の値をそれぞれ入力したときの出力とをXOR回路(排他的論理和回路)413に入力したときの出力を得る。そしてこのXOR回路413の出力をビットz1の値とする。この図10Bの回路は、前掲した[数1]式における二番目の式の演算を行う回路である。
【0231】
図10Cの回路は、まず、AND回路421にビットb及びy0の値をそれぞれ入力したときの出力と、AND回路422にビットc及びy1の値をそれぞれ入力したときの出力とをXOR回路423に入力したときの出力を得る。そして、このXOR回路423の出力と、AND回路424にビットd及びy2の値をそれぞれ入力したときの出力とをXOR回路425に入力したときのXOR回路425の出力を、ビットz2の値とする。この回路は、前掲した[数1]式における三番目の式の演算を行う回路である。
【0232】
図10Dの回路は、まず、AND回路431にビットa及びy0の値をそれぞれ入力したときの出力と、AND回路432にビットb及びy1の値をそれぞれ入力したときの出力とをXOR回路433に入力したときの出力を得る。次に、このXOR回路433の出力と、AND回路434にビットc及びy2の値をそれぞれ入力したときの出力とをXOR回路435に入力したときの出力を得る。そして、このXOR回路435の出力と、AND回路436にビットd及びy3の値をそれぞれ入力したときの出力とをXOR回路437に入力したときのXOR回路437の出力を、ビットz3の値とする。この回路は、前掲した[数1]式における四番目の式の演算を行う回路である。
【0233】
図10Eの回路は、まず、AND回路441にビットa及びy1の値をそれぞれ入力したときの出力と、AND回路442にビットb及びy2の値をそれぞれ入力したときの出力とをXOR回路443に入力したときの出力を得る。そして、このXOR回路443の出力と、AND回路444にビットc及びy3の値をそれぞれ入力したときの出力とをXOR回路445に入力したときのXOR回路445の出力を、ビットz4の値とする。この回路は、前掲した[数1]式における五番目の式の演算を行う回路である。
【0234】
図10Fの回路は、まず、AND回路451にビットa及びy2の値をそれぞれ入力したときの出力と、AND回路452にビットb及びy3の値をそれぞれ入力したときの出力とをXOR回路453に入力したときの出力を得る。そしてこのXOR回路453の出力をビットz5の値とする。この図10Fの回路は、前掲した[数1]式における六番目の式の演算を行う回路である。
【0235】
図10Gは、AND回路461にビットa及びy3の値をそれぞれ入力したときの出力を、ビットz6の値とする回路であり、前掲した[数1]式における七番目の式の演算を行う回路である。
【0236】
図9のキャリーレス乗算回路201は、以上のように構成されている。
次に図9のキャリーレス乗算パリティ予測回路202の構成について説明する。図9のキャリーレス乗算パリティ予測回路202の具体的な回路構成を図11A及び図11Bに示す。
【0237】
図11Aに図解した第一の例の回路は、パリティ値として偶数パリティを使用する場合の回路であり、図11Bに図解した第二の例の回路は、パリティ値として奇数パリティを使用する場合の回路である。
【0238】
図11Aの回路は、AND回路471に被乗数Aの偶数パリティ値P_Aと乗数Yの偶数パリティ値P_Yとをそれぞれ入力したときの出力を、キャリーレス乗算回路201が出力する乗算結果Zについてのパリティ値の予測値P_Z_Pとする回路である。この図11Aの回路は、前掲した[数5]式の演算を行う回路である。
【0239】
図11Bの回路は、OR回路(論理和回路)472に被乗数Aの奇数パリティ値P_A_oddと、乗数Yの奇数パリティ値P_Y_oddとをそれぞれ入力したときの出力を、乗算結果Zについてのパリティ値の予測値P_Z_Pとする回路である。この図11Bの回路は、前掲した[数27]式の演算を行う回路である。
【0240】
次に図9のパリティチェック回路203の構成について説明する。図9のパリティチェック回路203の具体的な回路構成を図12A及び図12Bに示す。
図12Aに図解した第一の例の回路は、パリティ値として偶数パリティを使用する場合の回路であり、図12Bに図解した第二の例の回路は、パリティ値として奇数パリティを使用する場合の回路である。
【0241】
図12Aの回路は、まず、キャリーレス乗算回路201が出力した乗算結果Zのパリティ値P_Zを求める。このために、まず、XOR回路481にビットz6及びz5の値をそれぞれ入力したときの出力を得る。次に、このXOR回路481の出力とビットz4の値とをXOR回路482にそれぞれ入力したときの出力を得る。次に、このXOR回路482の出力とビットz3の値とをXOR回路483にそれぞれ入力したときの出力を得る。次に、このXOR回路483の出力とビットz2の値とをXOR回路484にそれぞれ入力したときの出力を得る。次に、このXOR回路484の出力とビットz1の値とをXOR回路485にそれぞれ入力したときの出力を得る。そして、このXOR回路485の出力とビットz0の値とをXOR回路486にそれぞれ入力したときの出力を得る。このXOR回路486の出力がパリティ値P_Zである。ここまでの回路構成は、前掲した[数2]式の演算を行う回路である。
【0242】
なお、2入力のXOR回路481〜486を用いて上述のように構成する代わりに、7入力のXOR回路を使用し、このXOR回路にビットz6〜z0の各値を入力したときの出力をパリティ値P_Zとしてもよい。
【0243】
図12Aの回路では、更に、上述のようにして求められたパリティ値P_Zが、キャリーレス乗算パリティ予測回路202の出力である予測値P_Z_Pと一致するか否かを判定する。このために、XOR回路486の出力(すなわちパリティ値P_Z)と予測値P_Z_PとをXOR回路491に入力したときの出力を得る。そして、このXOR回路491の出力が、チェック結果P_Z_Eとして出力される。このチェック結果P_Z_Eは、「0」又は「1」の値をとり、値が「1」の場合には、キャリーレス乗算器の誤動作を検出したことを表している。
【0244】
なお、2入力のXOR回路481〜486及び491を用いて上述のように構成する代わりに、8入力のXOR回路を使用し、このXOR回路にビットz6〜z0の各値と予測値P_Z_Pとを入力したときの出力をチェック結果P_Z_Eとしてもよい。
【0245】
次に図12Bの回路について説明する。図12Bの回路において、XOR回路481からXOR回路486までの構成は、図12Aの構成と同様である。但し、図12Bの回路では、このXOR回路486の出力と値「1」とをXOR回路487にそれぞれ入力したときの出力を得る。このXOR回路487の出力がパリティ値P_Zである。ここまでの回路構成は、前掲した[数24]式の演算を行う回路である。
【0246】
図12Bの回路では、上述のようにして求められたパリティ値P_Zが、キャリーレス乗算パリティ予測回路202の出力である予測値P_Z_Pの予測と一致するか否かを判定する。このために、XOR回路487の出力(すなわちパリティ値P_Z)と予測値P_Z_PとをXOR回路491に入力したときの出力を得る。そして、このXOR回路491が、チェック結果P_Z_Eとして出力される。このチェック結果P_Z_Eは、「0」又は「1」の値をとり、値が「1」の場合には、キャリーレス乗算器の誤動作を検出したことを表している。
【0247】
なお、2入力のXOR回路481〜487及び491を用いて上述のように構成する代わりに、9入力のXOR回路にビットz6〜z0の各値と値「1」と予測値P_Z_Pとを入力したときの出力をチェック結果P_Z_Eとしてもよい。
【0248】
なお、図12Bの回路においては、XOR回路487を使用する代わりにNOT回路(否定回路)を使用し、XOR回路486の出力をNOT回路に入力したときの出力をパリティ値P_Zとしてもよい。
【0249】
[3.2.被乗数データ列及び乗数データ列が共に1個のデータユニットで構成されている場合のキャリーレス乗算器の構成]
次に図13について説明する。図13は、図8の演算処理装置100に演算器111の一部として備えられているキャリーレス乗算器の第二の例の構成図である。このキャリーレス乗算器200は、[2.1.被乗数データ列及び乗数データ列が共に1個のデータユニットの場合]で説明した誤動作検出機能を有している。
【0250】
図13の構成は、キャリーレス乗算パリティ予測回路202が、乗算結果Zのパリティ値のデータユニット毎の予測を行う点において、図9に図解した第一の例の構成と異なっている。つまり、キャリーレス乗算パリティ予測回路202は、乗算結果Zにおける下位より1番目のデータユニットのパリティ値の予測値P_Z0_Pと、乗算結果Zにおける下位より1番目のデータユニットに続くデータのパリティ値P_Z1_Pとを出力する。また、図13キャリーレス乗算パリティ予測回路202では、パリティ値の予測のために、被乗数Aと乗数Yとの各々のパリティ値と共に、被乗数Aと乗数Yとの各々の値も用いる点においても、図9に図解した第一の例の構成と異なっている。
【0251】
図13におけるキャリーレス乗算回路201は、図9に図解した第一の例におけるものと同一であるので、詳細構成の説明は省略する。
次に、図13におけるキャリーレス乗算パリティ予測回路202の構成について説明す。図13のキャリーレス乗算パリティ予測回路202の具体的な回路構成を図14A、図14B、図14C、及び図14Dに示す。
【0252】
図14A及び図14Bに図解した第一の例の回路は、パリティ値として偶数パリティを使用する場合の回路であり、図14C及び図14Dに図解した第二の例の回路は、パリティ値として奇数パリティを使用する場合の回路である。
【0253】
図14Aの回路は、被乗数Aの値及びパリティ値と乗数Yの値及びパリティ値とから、キャリーレス乗算回路201が出力する乗算結果Zにおける下位より1番目のデータユニットのパリティ値の予測値P_Z0_Pを求める回路である。この図14Aの回路は、前掲した[数11]式の演算を行う回路である。
【0254】
図14Aにおいて、AND回路501は、「+」記号で結ばれている[数11]式の右辺の第1項、すなわちP_A*P_Yの演算を行う回路である。また、AND回路511は、[数11]式の右辺の第2項、すなわちa*y1の演算を行う回路である。更に、XOR回路512及びAND回路513は、[数11]式の右辺の第3項、すなわち(a+b)*y2の演算を行う回路である。そして、XOR回路514及びAND回路515は、[数11]式の右辺の第4項、すなわち(a+b+c)*y3の演算を行う回路である。そして、XOR回路516は、[数11]式の右辺の第1項から第4項までの各項の値の排他的論理和の演算を行って、パリティ予測値P_Z0_Pを得る回路である。
【0255】
図14Bの回路は、被乗数Aの値及びパリティ値と乗数Yの値及びパリティ値とから、キャリーレス乗算回路201が出力する乗算結果Zにおける下位より1番目のデータユニットに続くデータのパリティ値の予測値P_Z1_Pを求める回路である。この図14Bの回路は、前掲した[数12]式の演算を行う回路である。
【0256】
図14Bにおいて、AND回路521は、「+」記号で結ばれている[数12]式の右辺の第1項、すなわちP_A*P_Yの演算を行う回路である。また、XOR回路531及びAND回路532は、[数12]式の右辺の第2項、すなわち(a+b+c+d)*y0の演算を行う回路である。更に、OR回路533及びAND回路534は、[数12]式の右辺の第3項、すなわち(a+b+c)*y1の演算を行う回路である。そして、OR回路535及びAND回路536は、[数12]式の右辺の第4項、すなわち(a+b)*y2の演算を行う回路である。また、AND回路537は、[数12]式の右辺の第5項、すなわちa*y3の演算を行う回路である。そして、XOR回路537は、[数12]式の右辺の第1項から第5項までの各項の値の排他的論理和の演算を行って、パリティ予測値P_Z1_Pを得る回路である。
【0257】
図14Cの回路は、被乗数Aの値及びパリティ値と乗数Yの値及びパリティ値とから、キャリーレス乗算回路201が出力する乗算結果Zにおける下位より1番目のデータユニットのパリティ値の予測値P_Z0_Pを求める回路である。この図14Cの回路は、前掲した[数30]式の演算を行う回路である。
【0258】
図14Cの回路は、図14Aの回路におけるAND回路501をOR回路502に置換したものである。このOR回路502は、「+」記号で結ばれている[数30]式の右辺の第1項、すなわちP_A_odd^P_Y_oddの演算を行う回路である。従って、XOR回路516は、図14Cにおいては、[数30]式の右辺の第1項から第4項までの各項の値の排他的論理和の演算を行って、パリティ予測値P_Z0_Pを得る回路である。
【0259】
図14Dの回路は、被乗数Aの値及びパリティ値と乗数Yの値及びパリティ値とから、キャリーレス乗算回路201が出力する乗算結果Zにおける下位より1番目のデータユニットに続くデータのパリティ値の予測値P_Z1_Pを求める回路である。この図14Dの回路は、前掲した[数31]式の演算を行う回路である。
【0260】
図14Dの回路は、図14Bの回路におけるAND回路521をOR回路522に置換したものである。このOR回路522は、「+」記号で結ばれている[数31]式の右辺の第1項、すなわちP_A_odd^P_Y_oddの演算を行う回路である。従って、XOR回路538は、図14Dにおいては、[数31]式の右辺の第1項から第5項までの各項の値の排他的論理和の演算を行って、パリティ予測値P_Z1_Pを得る回路である。
【0261】
次に図13のパリティチェック回路203の構成について説明する。図13のパリティチェック回路203の具体的な回路構成を図15A及び図15Bに示す。
図15Aに図解した第一の例の回路は、パリティ値として偶数パリティを使用する場合の回路であり、図15Bに図解した第二の例の回路は、パリティ値として奇数パリティを使用する場合の回路である。
【0262】
図15Aの回路は、まず、キャリーレス乗算回路201が出力した乗算結果Zについての、下位より1番目のデータユニットのパリティ値P_Z0と、乗算結果Zの下位より2番目のデータユニットのパリティ値P_Z1とを求める。
【0263】
このために、図15Aの回路は、まず、XOR回路541にビットz0、z1、z2、及びz3の値をそれぞれ入力したときの出力を得る。このXOR回路541の出力がパリティ値P_Z0である。ここまでの回路構成は、前掲した[数6]式の演算を行う回路である。
【0264】
また、図15Aの回路は、XOR回路542にビットz4、z5、及びz6の値をそれぞれ入力したときの出力を得る。このXOR回路542の出力がパリティ値P_Z1である。ここまでの回路構成は、前掲した[数7]式の演算を行う回路である。
【0265】
図15Aの回路では、更に、上述のようにして求められたパリティ値P_Z0及びP_Z1が、キャリーレス乗算パリティ予測回路202の出力である予測値P_Z0_P及びP_Z1_Pとそれぞれ一致するか否かを判定する。このために、XOR回路541の出力(すなわちパリティ値P_Z0)と予測値P_Z0_PとをXOR回路543に入力したときの出力を得る。更に、XOR回路542の出力(すなわちパリティ値P_Z1)と予測値P_Z1_PとをXOR回路544に入力したときの出力を得る。そして、このXOR回路543の出力とXOR回路544の出力とをOR回路545に入力したときの出力を得る。そして、このOR回路545の出力が、チェック結果P_Z_Eとして出力される。このチェック結果P_Z_Eは、「0」又は「1」の値をとり、値が「1」の場合には、キャリーレス乗算器201の誤動作を検出したことを表している。
【0266】
一方、図15Bの回路は、まず、キャリーレス乗算回路201が出力した乗算結果Zについての、下位より1番目のデータユニットの奇数パリティ値P_Z0_oddと、乗算結果Zの下位より2番目のデータユニットの奇数パリティ値P_Z1_oddとを求める。
【0267】
このために、図15Bの回路は、まず、XOR回路541にビットz0、z1、z2、及びz3の値と値「1」とをそれぞれ入力したときの出力を得る。このXOR回路541の出力が奇数パリティ値P_Z0_oddである。この回路構成は、前掲した[数28]式の演算を行う回路である。
【0268】
また、図15Bの回路は、XOR回路542にビットz4、z5、及びz6の値と値「1」とをそれぞれ入力したときの出力を得る。このXOR回路542の出力がパリティ値P_Z1_oddである。この回路構成は、前掲した[数29]式の演算を行う回路である。
【0269】
図15Bの回路は、更に、上述のようにして求められたパリティ値P_Z0_odd及びP_z1_oddが、キャリーレス乗算パリティ予測回路202の出力である予測値P_Z0_P及びP_Z1_Pとそれぞれ一致するか否かを判定する。このために、XOR回路541の出力(すなわちパリティ値P_Z0_odd)と予測値P_Z0_PとをXOR回路543に入力したときの出力を得る。更に、XOR回路542の出力(すなわちパリティ値P_Z1_odd)と予測値P_Z1_PとをXOR回路544に入力したときの出力を得る。そして、このXOR回路543の出力とXOR回路544の出力とをOR回路545に入力したときの出力を得る。そして、このOR回路545の出力が、チェック結果P_Z_Eとして出力される。このチェック結果P_Z_Eは、「0」又は「1」の値をとり、値が「1」の場合には、キャリーレス乗算器201の誤動作を検出したことを表している。
【0270】
以上のように、本実施例では、パリティチェック回路203は、偶数パリティと奇数パリティとのどちらを用いる場合でも、乗算結果Zのデータユニット毎のパリティ値を、XOR回路を用いて求める。そして、求めた乗算結果Zのパリティ値とキャリーレス乗算パリティ予測回路202が出力する乗算結果Zのパリティ値との一致・不一致の判定を、2入力のXOR回路を用いてデータユニット毎に行う。そして、データユニット毎の当該判定結果の論理和を、OR回路を用いて求めて、キャリーレス乗算器201の誤動作の検出結果とする。
【0271】
[3.3.被乗数データ列及び乗数データ列が共に2個のデータユニットで構成されている場合のキャリーレス乗算器の構成]
次に図16について説明する。図16は、図8の演算処理装置100に演算器111の一部として備えられているキャリーレス乗算器の第三の例の構成図である。このキャリーレス乗算器200は、[2.2.被乗数データ列及び乗数データ列が共に2個のデータユニットの場合]で説明した誤動作検出機能を有している。
【0272】
図16では、キャリーレス乗算パリティ予測回路202が、乗算結果Zにおける下位より1番目から3番目までの各データユニットのパリティ値の予測値P_Z0_P、P_Z1_P、及びP_Z2_Pを出力する。更に、キャリーレス乗算パリティ予測回路202は、これに続くデータのパリティ値の予測値P_Z3_Pを出力する。図16のキャリーレス乗算パリティ予測回路202は、この点において、図9に図解した第二の例におけるものと異なっている。また、図16のキャリーレス乗算パリティ予測回路202は、パリティ値の予測のために、被乗数Aの値及びデータユニット毎のパリティ値と、乗数Yの値及びデータユニット毎のパリティ値とを用いる点においても、第二の例におけるものと異なっている。
【0273】
図16におけるキャリーレス乗算回路201は、被乗数Aと乗数Yとのキャリーレス乗算を行って乗算結果Zを出力する回路である。ここで、被乗数A及び乗数Yは、どちらも、4ビットのデータであるデータユニットが2個並べられたデータ列である。また、キャリーレス乗算回路201の出力である乗算結果Zは、15ビットのデータとなる。なお、キャリーレス乗算の手法については既に説明したので、図16の第三の例におけるキャリーレス乗算回路201の詳細構成についての説明は省略する。
【0274】
また、図16におけるパリティチェック回路203は、図15A及び図15Bに示した第二の例におけるものと同様に構成する。すなわち、まず、キャリーレス乗算回路201が出力する乗算結果Zにおけるデータユニット毎のパリティ値を、パリティ値の定義に従い、XOR回路を使用して求める。そして、求められたデータユニット毎のパリティ値と、キャリーレス乗算パリティ予測回路202出力するデータユニット毎のパリティ予測値との一致・不一致の判定を、XOR回路を使用して行い、この判定結果の出力を論理和をOR回路を使用して求める。このOR回路の出力がチェック結果P_Z_Eとされる。このチェック結果P_Z_Eは「0」又は「1」の値をとり、値が「1」の場合には、キャリーレス乗算器201の誤動作を検出したことを表している。
【0275】
次に、図16におけるキャリーレス乗算パリティ予測回路202の構成について説明す。図16のキャリーレス乗算パリティ予測回路202の具体的な回路構成を図17Aから図17Pまでの各図で図解する。
【0276】
図17Aから図17Hまでの各図で図解した第一の例の回路は、パリティ値として偶数パリティを使用する場合の回路である。そして、図17Iから図17Pまでの各図で図解した第二の例の回路は、パリティ値として奇数パリティを使用する場合の回路である。
【0277】
図17Aの回路は、被乗数Aと乗数Yとの各々の値及びデータユニット毎のパリティ値から、キャリーレス乗算回路201が出力する乗算結果Zにおける下位より1番目のデータユニットのパリティ値の予測値P_Z0_Pを求める回路である。この図17Aの回路は、前掲した[数20]式(すなわち[数13]式)の演算を行う回路である。
【0278】
図17Aにおいて、AND回路601は、「+」記号で結ばれている[数13]式の右辺の第1項の演算を行う回路である。また、AND回路611、613、及び615並びにXOR回路612及び614は、[数13]式の右辺の第2項から第4項までの各項の演算を行う回路である。そして、XOR回路616及び617は、[数13]式の右辺の第1項から第4項までの各項の値の排他的論理和の演算を行って、パリティ予測値P_Z0_Pを得る回路である。
【0279】
図17B、図17C、及び図17Dの回路は、被乗数Aと乗数Yとの各々の値及びデータユニット毎のパリティ値から、キャリーレス乗算回路201が出力する乗算結果Zにおける下位より2番目のデータユニットのパリティ予測値P_Z1_Pを求める回路である。この回路は、前掲した[数21]式(すなわち[数16]式及び[数17]式)の演算を行う回路である。
【0280】
図17Bにおいて、AND回路621は、「+」記号で結ばれている[数16]式の右辺の第1項の演算を行う回路である。また、AND回路631、633、及び635並びにXOR回路632及び634は、[数16]式の右辺の第2項から第4項までの各項の演算を行う回路である。更に、図17CにおけるAND回路637、639、及び641並びにXOR回路638及び640は、[数16]式の右辺の第5項から第7項までの各項の演算を行う回路である。そして、XOR回路636(図17B)、642(図17C)、及び643(図17B)は、[数16]式の右辺の第1項から第7項までの各項の値の排他的論理和の演算を行って、[数16]式のP_ZBの値を求める回路である。
【0281】
また、図17Dにおいて、AND回路622は、「+」記号で結ばれている[数17]式の右辺の第1項の演算を行う回路である。また、AND回路644、646、及び648並びにXOR回路645及び647は、[数17]式の右辺の第2項から第4項までの各項の演算を行う回路である。そして、XOR回路649及び650は、[数17]式の右辺の第1項から第4項までの各項の値の排他的論理和の演算を行って、[数17]式のP_ZCの値を求める回路である。
【0282】
そして、図17DにおけるXOR回路651は、[数21]式の排他的論理和の演算を行って、パリティ予測値P_Z1_Pを得る回路である。
図17E、図17F、及び図17Gの回路は、被乗数Aと乗数Yとの各々の値及びデータユニット毎のパリティ値から、キャリーレス乗算回路201が出力する乗算結果Zにおける下位より3番目のデータユニットのパリティ予測値P_Z2_Pを求める回路である。この回路は、前掲した[数22]式(すなわち[数14]式及び[数19]式)の演算を行う回路である。
【0283】
図17Eにおいて、AND回路661は、「+」記号で結ばれている[数14]式の右辺の第1項の演算を行う回路である。また、XOR回路671、673、及び675並びにAND回路672、674、676、及び677は、[数14]式の右辺の第2項から第5項までの各項の演算を行う回路である。そして、XOR回路678及び679は、[数14]式の右辺の第1項から第5項までの各項の値の排他的論理和の演算を行って、[数14]式のP_ZDの値を求める回路である。
【0284】
図17Fにおいて、AND回路662は、「+」記号で結ばれている[数19]式の右辺の第1項の演算を行う回路である。また、AND回路680、682、及び684並びにXOR回路681及び683は、[数19]式の右辺の第2項から第4項までの各項の演算を行う回路である。更に、図17Gにおいて、AND回路686、688、及び690並びにXOR回路687及び689は、[数19]式の右辺の第5項から第7項までの各項の演算を行う回路である。そして、XOR回路685(図17F)、691(図17G)、及び692(図17F)は、[数19]式の右辺の第1項から第7項までの各項の値の排他的論理和の演算を行って、[数19]式のP_ZEの値を求める回路である。
【0285】
そして、図17FにおけるXOR回路693は、[数22]式の排他的論理和の演算を行って、パリティ予測値P_Z2_Pを得る回路である。
図17Hの回路は、被乗数Aの値及びパリティ値と乗数Yの値及びパリティ値とから、キャリーレス乗算回路201が出力する乗算結果Zにおける下位より3番目のデータユニットに続くデータのパリティ値の予測値P_Z3_Pを求める回路である。この図17Hの回路は、前掲した[数23]式(すなわち[数18]式)の演算を行う回路である。
【0286】
図17Hにおいて、AND回路701は、「+」記号で結ばれている[数18]式の右辺の第1項の演算を行う回路である。また、XOR回路711、713、及び715並びにAND回路712、714、716、及び717は、[数18]式の右辺の第2項から第5項までの各項の演算を行う回路である。そして、XOR回路718及び719は、[数18]式の右辺の第1項から第5項までの各項の値の排他的論理和の演算を行って、パリティ予測値P_Z3_Pを得る回路である。
【0287】
図17Iの回路は、被乗数Aの値及びパリティ値と乗数Yの値及びパリティ値とから、キャリーレス乗算回路201が出力する乗算結果Zにおける下位より1番目のデータユニットのパリティ値の予測値P_Z0_Pを求める回路である。この図17Iの回路は、前掲した[数38]式(すなわち[数32]式)の演算を行う回路である。
【0288】
図17Iの回路は、図17Aの回路におけるAND回路601をOR回路602に置換したものである。このOR回路602は、「+」記号で結ばれている[数32]式の右辺の第1項、すなわちP_A0_odd^P_Y0_oddの演算を行う回路である。従って、XOR回路616及び617は、図17Iにおいては、[数32]式の右辺の第1項から第4項までの各項の値の排他的論理和の演算を行って、パリティ予測値P_Z0_Pを得る回路である。
【0289】
図17J、図17K、及び図17Lの回路は、被乗数Aと乗数Yとの各々の値及びデータユニット毎のパリティ値から、キャリーレス乗算回路201が出力する乗算結果Zにおける下位より2番目のデータユニットのパリティ予測値P_Z1_Pを求める回路である。この回路は、前掲した[数39]式の演算を行う回路である。
【0290】
図17J、図17K、及び図17Lの回路は、図17BのAND回路621及び図17DのAND回路622をそれぞれOR回路623(図17J)及びOR回路624(図17L)に置換し、図17LのXOR回路651に値「1」の入力を追加したものである。ここで、OR回路623は、「+」記号で結ばれている[数34]式の右辺の第1項、すなわちP_A1_odd^P_Y0_oddの演算を行う回路である。また、OR回路624は、「+」記号で結ばれている[数35]式の右辺の第1項、すなわちP_A0_odd^P_Y1_oddの演算を行う回路である。従って、XOR回路651は、図17Lにおいては、[数39]式の右辺の第1項から第3項までの各項の値の排他的論理和の演算を行って、パリティ予測値P_Z1_Pを得る回路である。
【0291】
図17M、図17N、及び図17Oの回路は、被乗数Aと乗数Yとの各々の値及びデータユニット毎のパリティ値から、キャリーレス乗算回路201が出力する乗算結果Zにおける下位より3番目のデータユニットのパリティ予測値P_Z2_Pを求める回路である。この回路は、前掲した[数40]式の演算を行う回路である。
【0292】
図17M、図17N、及び図17Oの回路は、図17EのAND回路661及び図17FのAND回路662をそれぞれOR回路663(図17M)及びOR回路664(図17N)に置換し、図17NのXOR回路693に値「1」の入力を追加したものである。ここで、OR回路663は、「+」記号で結ばれている[数34]式の右辺の第1項、すなわちP_A1_odd^P_Y0_oddの演算を行う回路である。また、OR回路634は、「+」記号で結ばれている[数37]式の右辺の第1項、すなわちP_A1_odd^P_Y1_oddの演算を行う回路である。従って、XOR回路693は、図17Nにおいては、[数40]式の右辺の第1項から第3項までの各項の値の排他的論理和の演算を行って、パリティ予測値P_Z2_Pを得る回路である。
【0293】
図17Pの回路は、被乗数Aの値及びパリティ値と乗数Yの値及びパリティ値とから、キャリーレス乗算回路201が出力する乗算結果Zにおける下位より3番目のデータユニットに続くデータのパリティ値の予測値P_Z3_Pを求める回路である。この図17Pの回路は、前掲した[数41]式(すなわち[数36]式)の演算を行う回路である。
【0294】
図17Pの回路は、図17Hの回路におけるAND回路701をOR回路702に置換したものである。このOR回路702は、「+」記号で結ばれている[数36]式の右辺の第1項、すなわちP_A1_odd^P_Y1_oddの演算を行う回路である。従って、XOR回路718及び719は、図17Pにおいては、[数36]式の右辺の第1項から第5項までの各項の値の排他的論理和の演算を行って、パリティ予測値P_Z3_Pを得る回路である。
【0295】
[3.4.被乗数データ列及び乗数データ列のサイズを一般化した場合のキャリーレス乗算器の構成]
次に図18について説明する。図18は、図8の演算処理装置100に演算器111の一部として備えられているキャリーレス乗算器の第四の例の構成図である。このキャリーレス乗算器200は、[2.3.被乗数データ列及び乗数データ列のサイズを一般化した場合]で説明した誤動作検出機能を有している。
【0296】
図18では、キャリーレス乗算パリティ予測回路202が、乗算結果Zにおける下位より1番目から2q−1番目までの各データユニットのパリティ値の予測値P_Z_P[1]、…、P_Z_P[2q−1]を出力する。更に、キャリーレス乗算パリティ予測回路202は、これに続くデータのパリティ値の予測値P_Z_P[2q]も出力する。図18のキャリーレス乗算パリティ予測回路202は、この点において、図16に図解した第三の例におけるものと異なっている。
【0297】
図18におけるキャリーレス乗算回路201は、被乗数Aと乗数Yとのキャリーレス乗算を行って乗算結果Zを出力する回路である。ここで、被乗数A及び乗数Yは、どちらも、pビット(但し、pは2以上の自然数)のデータであるデータユニットがq個(但し、qは自然数)並べられたデータ列である。また、キャリーレス乗算回路201の出力である乗算結果Zは、2q×p−1ビットのデータとなる。なお、キャリーレス乗算の手法については既に説明したので、図18の第四の例におけるキャリーレス乗算回路201の詳細構成についての説明は省略する。
【0298】
図18におけるパリティチェック回路203も、図15A及び図15Bに示した第二の例におけるものと同様に構成する。すなわち、まず、キャリーレス乗算回路201が出力する乗算結果Zにおけるデータユニット毎のパリティ値を、パリティ値の定義に従い、XOR回路を使用して求める。そして、求められたデータユニット毎のパリティ値と、キャリーレス乗算パリティ予測回路202出力するデータユニット毎のパリティ予測値との一致・不一致の判定を、XOR回路を使用して行い、この判定結果の出力の論理和を、OR回路を使用して求める。このOR回路の出力がチェック結果P_Z_Eとされる。このチェック結果P_Z_Eは「0」又は「1」の値をとり、値が「1」の場合には、キャリーレス乗算器201の誤動作を検出したことを表している。
【0299】
[3.4.1.キャリーレス乗算パリティ予測回路の構成]
次に、図18におけるキャリーレス乗算パリティ予測回路202の構成について説明す。図18のキャリーレス乗算パリティ予測回路202の構成を図19に図解する。
【0300】
このキャリーレス乗算パリティ予測回路202は、下位パリティ予測回路800、上位パリティ予測回路900、及び中位パリティ予測回路1000を備えている。
下位パリティ予測回路800は、[2.3.1.下位パリティの予測]で説明したようにして下位パリティ値の予測を行う回路である。すなわち、下位パリティ予測回路800は、乗算結果Zにおける下位より1番目のデータユニットのパリティ値の予測値P_Z_P[1]を出力する回路である。この下位パリティ予測回路800には、第1被乗数データユニットの値A[ユニット1]及びそのパリティ値P_A[1]と、第1乗数データユニットの値Y[ユニット1]及びそのパリティ値P_Y[1]とが入力される。
【0301】
上位パリティ予測回路900は、[2.3.2.上位パリティの予測]で説明したようにして上位パリティ値の予測を行う回路である。すなわち、上位パリティ予測回路900は、乗算結果Zにおける下位より2q−1番目のデータユニットに続くデータ(すなわち乗算結果Zの上位p−1ビットのデータ)のパリティ値の予測値P_Z_P[2q]を出力する回路である。この上位パリティ予測回路900には、第q被乗数データユニットの値A[ユニットq]及びそのパリティ値P_A[q]と、第q乗数データユニットの値Y[ユニットq]及びそのパリティ値P_Y[q]とが入力される。
【0302】
中位パリティ予測回路1000は、[2.3.3.中位パリティの予測]で説明したようにして中位パリティ値の予測を行う回路である。すなわち、中位パリティ予測回路1000は、乗算結果Zにおける下位より2番目から2q−1番目までの各データユニット毎のパリティ値の予測値P_Z_P[2]、…、P_Z_P[2q−1]を出力する回路である。
【0303】
この中位パリティ予測回路1000には、第1被乗数データユニットから第q被乗数データユニットまでの各データユニットの値A[ユニット1]、…、A[ユニットq]及びそれらのパリティ値P_A[1]、…、P_A[q]が入力される。更に、この中位パリティ予測回路1000には、第1乗数データユニットから第q乗数データユニットまでの各データユニットの値Y[ユニット1]、…、Y[ユニットq]及びそれらのパリティ値P_Y[1]、…、P_Y[q]も入力される。
【0304】
なお、図18におけるキャリーレス乗算パリティ予測回路202は、パリティ予測値P_Z_P[2]、…、P_Z_P[2q−1]を各々出力する2q−2個の中位パリティ予測回路1000を備えているが、図19では、そのうちの1個のみを図示している。
【0305】
中位パリティ予測回路1000は、部分乗算結果パリティ予測回路1100を備えている。部分乗算結果パリティ予測回路1100は、[2.3.3.1.部分乗算結果のデータユニット毎のパリティ値の予測]で説明したようにして、前述した部分乗算結果のデータユニット毎のパリティ値の予測を行う回路である。
【0306】
なお、乗数Yは、q個のデータユニットで構成されているので、図18におけるキャリーレス乗算パリティ予測回路202は、部分乗算結果パリティ予測回路1100をq個備えているが、図19においては、そのうちの1個のみを図示している。
【0307】
部分乗算結果パリティ予測回路1100は、部分パリティ予測回路1200を備えている。部分パリティ予測回路1200は、[2.3.3.1.1.第1部分のパリティ値の予測]、[2.3.3.1.2.第q+1部分のパリティ値の予測]、[2.3.3.1.3.中位部分のパリティ値の予測]で説明した予測を行う回路である。すなわち、部分パリティ予測回路1200は、部分乗算結果の各データユニットのパリティ値の予測値を出力する回路である。なお、部分乗算結果は第1部分から第q+1部分までのq+1個のデータユニットで構成されているので、部分乗算結果パリティ予測回路1100は部分パリティ予測回路1200をq+1個備えているが、図19においては、そのうちの1個のみを図示している。
【0308】
[3.4.1.1.下位パリティ予測回路の構成]
次に、図19における下位パリティ予測回路800の構成について説明する。
【0309】
図19における下位パリティ予測回路800の第一の例の構成を図20Aに図解する。この第一の例の構成は、パリティ値として偶数パリティを使用する場合のものである。
この下位パリティ予測回路800は、下位パリティ論理積回路801、下位第1論理積回路811、XOR回路812、下位第2論理積回路813、及び下位排他的論理和回路814を備えている。このうちのXOR回路812及び下位第2論理積回路813は、どちらも下位パリティ予測回路800にp−2個備えられている。
【0310】
下位パリティ論理積回路801は、第1被乗数データユニットのパリティ値P_A[1]と第1乗数データユニットの値のパリティ値P_Y[1]とが入力されてそれらのパリティ値の論理積の値(前述した下位パリティ論理積)を出力する回路である。
【0311】
下位第1論理積回路811は、第1被乗数データユニットにおける最上位のビットの値と第1乗数データユニットにおける下位より2桁目のビットの値とが入力されてそれらの論理積の値(前述した下位第1論理積)を出力する回路である。
【0312】
p−2個のXOR回路812及び下位第2論理積回路813は、異なるiの値(但し、iは2からp−1までの自然数)に応じた動作を各々行う。XOR回路812は、第1被乗数データユニットにおける上位よりi桁分の各ビットの値が入力されてそれらの排他的論理和の値を出力する回路である。また、下位第2論理積回路813は、このXOR回路812の出力と、第1乗数データユニットにおける下位からi+1桁目のビットの値とが入力されてそれらの論理積(前述した下位第2論理積)を出力する回路である。
【0313】
下位排他的論理和回路814は、下位パリティ論理積回路801の出力と、下位パリティ論理積回路811の出力と、p−2個の下位第2論理積回路813の各出力とが入力されてそれらの排他的論理和の値を出力する回路である。この下位排他的論理和回路814の出力が、下位パリティ予測回路800の出力である、乗算結果Zの下位パリティ値の予測値P_Z_P[1]となる。
【0314】
次に図20Bについて説明する。図20Bは、図19における下位パリティ予測回路800の第二の例の構成を図解したものである。この第二の例の構成は、パリティ値として奇数パリティを使用する場合のものである。
【0315】
図20Bの構成は、図20Aの構成における下位パリティ論理積回路801を下位パリティ論理和回路802に置換したものである。下位パリティ論理和回路802は、第1被乗数データユニットのパリティ値P_A[1]と第1乗数データユニットの値のパリティ値P_Y[1]とが入力されてそれらのパリティ値の論理和の値(前述した下位パリティ論理和)を出力する回路である。
【0316】
下位排他的論理和回路814は、下位パリティ論理和回路802の出力と、下位パリティ論理積回路811の出力と、p−2個の下位第2論理積回路813の各出力とが入力されてそれらの排他的論理和の値を出力する回路である。この下位排他的論理和回路814の出力が、下位パリティ予測回路800の出力である、乗算結果Zの下位パリティ値の予測値P_Z_P[1]となる。
【0317】
[3.4.1.2.上位パリティ予測回路の構成]
次に、図19における上位パリティ予測回路900の構成について説明する。
【0318】
図19における上位パリティ予測回路900の第一の例の構成を図21Aに図解する。この第一の例の構成は、パリティ値として偶数パリティを使用する場合のものである。
この上位パリティ予測回路900は、上位パリティ論理積回路901、上位第1論理積回路911、XOR回路912、上位第2論理積回路913、及び上位排他的論理和回路914を備えている。このうちのXOR回路912及び上位第2論理積回路913は、どちらも上位パリティ予測回路900にp−1個備えられている。
【0319】
上位パリティ論理積回路901は、第q被乗数データユニットのパリティ値P_A[q]と第q乗数データユニットの値のパリティ値P_Y[q]とが入力されてそれらのパリティ値の論理積の値(前述した上位パリティ論理積)を出力する回路である。
【0320】
上位第1論理積回路911は、第q被乗数データユニットにおける最下位のビットの値と第q乗数データユニットにおける最上位のビットの値とが入力されてそれらの論理積の値(前述した上位第1論理積)を出力する回路である。
【0321】
p−1個のXOR回路912及び上位第2論理積回路913は、異なるjの値(但し、jは2からpまでの自然数)に応じた動作を各々行う。XOR回路912は、第q被乗数データユニットにおける下位よりj桁分の各ビットの値が入力されてそれらの排他的論理和を出力する回路である。また、上位第2論理積回路913は、このXOR回路912の出力と、第q乗数データユニットにおける上位よりj桁目のビットの値とが入力されてそれらの論理積(前述した上位第2論理積)を出力する回路である。
【0322】
上位排他的論理和回路914は、上位パリティ論理積回路901の出力と、上位パリティ論理積回路911の出力と、p−1個の上位第1論理積回路913の各出力とが入力されてそれらの排他的論理和の値を出力する回路である。この上位排他的論理和回路914の出力が、上位パリティ予測回路900の出力である、乗算結果Zの上位パリティ値の予測値P_Z_P[2q]となる。
【0323】
次に図21Bについて説明する。図21Bは、図19における上位パリティ予測回路900の第二の例の構成を図解したものである。この第二の例の構成は、パリティ値として奇数パリティを使用する場合のものである。
【0324】
図21Bの構成は、図21Aの構成における上位パリティ論理積回路901を上位パリティ論理和回路902に置換したものである。上位パリティ論理和回路902は、第q被乗数データユニットのパリティ値P_A[q]と第q乗数データユニットの値のパリティ値P_Y[q]とが入力されてそれらのパリティ値の論理和の値(前述した上位パリティ論理和)を出力する回路である。
【0325】
上位排他的論理和回路914は、上位パリティ論理和回路902の出力と、上位パリティ論理積回路911の出力と、p−1個の上位第2論理積回路913の各出力とが入力されてそれらの排他的論理和の値を出力する回路である。この上位排他的論理和回路914の出力が、上位パリティ予測回路900の出力である、乗算結果Zの上位パリティ値の予測値P_Z_P[2q]となる。
【0326】
[3.4.1.3.中位パリティ予測回路の構成]
[3.4.1.3.1.部分乗算結果パリティ予測回路の構成]
次に、図19における中位パリティ予測回路1000が備えている部分乗算結果パリティ予測回路1100の構成について、図22を参照しながら説明する。図22は、図19における中位パリティ予測回路1000がq個備えている部分乗算結果パリティ予測回路1100の1つである、第r部分乗算結果パリティ予測回路1101の構成を図解したものである。
【0327】
被乗数Aと第r乗数データユニット(但し、rは1からqまでの自然数)とのキャリーレス乗算の結果を「第r部分乗算結果」と表記することとする。第r部分乗算結果パリティ予測回路1101は、この第r部分乗算結果のデータユニット毎のパリティ値の予測値P_Zr_P[1]、…、P_Zr_P[q+1]を出力する回路である。
【0328】
第r部分乗算結果パリティ予測回路1101は、部分パリティ予測回路1200として、第1部分パリティ予測回路1210、第q+1部分パリティ予測回路1220、及び中位部分パリティ予測回路1230を備えている。
【0329】
第1部分パリティ予測回路1210は、[2.3.3.1.1.第1部分のパリティ値の予測]で説明したようにして第1部分のパリティ値の予測を行う回路である。すなわち、第1部分パリティ予測回路1210は、第r部分乗算結果における下位より1番目のデータユニットのパリティ値の予測値P_Zr_P[1]を出力する回路である。この第1部分パリティ予測回路1210には、第1被乗数データユニットの値A[ユニット1]及びそのパリティ値P_A[1]と、第r乗数データユニットの値Y[ユニットr]及びそのパリティ値P_Y[r]とが入力される。
【0330】
第q+1部分パリティ予測回路1220は、[2.3.3.1.2.第q+1部分のパリティ値の予測]で説明したようにして第q+1部分のパリティ値の予測を行う回路である。すなわち、第q+1部分パリティ予測回路1220は、第r部分乗算結果における下位よりq番目のデータユニットに続くデータ(第r部分乗算結果データ列の上位p−1ビットのデータ)のパリティ値の予測値P_Zr_P[q+1]を出力する回路である。この第q+1部分パリティ予測回路1220には、第q被乗数データユニットの値A[ユニットq]及びそのパリティ値P_A[q]と、第r乗数データユニットの値Y[ユニットr]及びそのパリティ値P_Y[r]とが入力される。
【0331】
中位部分パリティ予測回路1230は、[2.3.3.1.3.中位部分のパリティ値の予測]で説明したようにして中位部分パリティ値の予測を行う回路である。すなわち、中位部分パリティ予測回路1230は、第r部分乗算結果における下位より2番目からq番目までの各データユニットのパリティ値の予測値P_Zr_P[2]、…、P_Zr_P[q]を出力する回路である。
【0332】
この中位部分パリティ予測回路1230には、第1被乗数データユニットから第q被乗数データユニットまでの各データユニットの値A[ユニット1]、…、A[ユニットq]及びそれらのパリティ値P_A[1]、…、P_A[q]が入力される。更に、この中位パリティ予測回路1000には、第r乗数データユニットの値Y[ユニットr]及びそのパリティ値P_Y[r]も入力される。
【0333】
なお、第r部分乗算結果パリティ予測回路1101は、パリティ予測値P_Zr_P[2]、…、P_Zr_P[q]を各々出力するq−1個の中位部分パリティ予測回路1230を備えているが、図22においては、そのうちの1個のみを図示している。
【0334】
[3.4.1.3.2.第1部分パリティ予測回路の構成]
次に、図22における第1部分パリティ予測回路1210の構成について説明する。
【0335】
図22における第1部分パリティ予測回路1210の第一の例の構成を図23Aに図解する。この第一の例の構成は、パリティ値として偶数パリティを使用する場合のものである。
【0336】
この第1部分パリティ予測回路1210は、下位部分パリティ論理積回路1201、下位部分第1論理積回路1211、XOR回路1212、下位部分第2論理積回路1213、及び下位部分排他的論理和回路1214を備えている。このうちのXOR回路1212及び下位部分第2論理積回路1213は、どちらも第1部分パリティ予測回路1210にp−2個備えられている。
【0337】
下位部分パリティ論理積回路1201は、第1被乗数データユニットのパリティ値P_A[1]と第r乗数データユニットの値のパリティ値P_Y[r]とが入力されてそれらのパリティ値の論理積の値(前述した下位部分パリティ論理積)を出力する回路である。
【0338】
下位部分第1論理積回路1211は、第1被乗数データユニットにおける最上位のビットの値と第r乗数データユニットにおける下位より2桁目のビットの値とが入力されてそれらの論理積の値(前述した下位部分第1論理積)を出力する回路である。
【0339】
p−2個のXOR回路1212及び下位部分第2論理積回路1213は、異なるgの値(但し、gは2からp−1までの自然数)に応じた動作を各々行う。XOR回路1212は、第1被乗数データユニットにおける上位よりg桁分の各ビットの値が入力されてそれらの排他的論理和の値を出力する回路である。また、下位部分第2論理積回路1213は、このXOR回路1212の出力と、第r乗数データユニットにおける下位からg+1桁目のビットの値とが入力されてそれらの論理積(前述した下位部分第2論理積)を出力する回路である。
【0340】
下位部分排他的論理和回路1214は、下位部分パリティ論理積回路1201の出力と、下位部分パリティ論理積回路1211の出力と、p−2個の下位部分第2論理積回路1213の各出力とが入力されてそれらの排他的論理和の値を出力する回路である。この下位部分排他的論理和回路1214の出力が、第1部分パリティ予測回路1210の出力である、第r部分乗算結果の第1部分のパリティ値の予測値P_Zr_P[1]となる。
【0341】
次に図23Bについて説明する。図23Bは、図22における第1部分パリティ予測回路1210の第二の例の構成を図解したものである。この第二の例の構成は、パリティ値として奇数パリティを使用する場合のものである。
【0342】
図23Bの構成は、図23Aの構成における下位部分パリティ論理積回路1201を下位部分パリティ論理和回路1202に置換したものである。下位部分パリティ論理和回路1202は、第1被乗数データユニットのパリティ値P_A[1]と第r乗数データユニットの値のパリティ値P_Y[r]とが入力されてそれらのパリティ値の論理和の値(前述した下位部分パリティ論理和)を出力する回路である。
【0343】
下位部分排他的論理和回路1214は、下位部分パリティ論理和回路1202の出力と、下位部分パリティ論理積回路1211の出力と、p−2個の下位部分第2論理積回路1213の各出力とが入力されてそれらの排他的論理和の値を出力する回路である。この下位部分排他的論理和回路1214の出力が、第1部分パリティ予測回路1210の出力である、第r部分乗算結果の第1部分のパリティ値の予測値P_Zr_P[1]となる。
【0344】
[3.4.1.3.3.第q+1部分パリティ予測回路の構成]
次に、図22における第q+1部分パリティ予測回路1220の構成について説明する。
【0345】
図22における第q+1部分パリティ予測回路1220の第一の例の構成を図24Aに図解する。この第一の例の構成は、パリティ値として偶数パリティを使用する場合のものである。
【0346】
この第q+1部分パリティ予測回路1220は、上位部分パリティ論理積回路1203、上位部分第1論理積回路1221、XOR回路1222、上位部分第2論理積回路1223、及び上位部分排他的論理和回路1224を備えている。このうちのXOR回路1222及び上位部分第2論理積回路1223は、どちらも第q+1部分パリティ予測回路1220にp−1個備えられている。
【0347】
上位部分パリティ論理積回路1203は、第q被乗数データユニットのパリティ値P_A[q]と第r乗数データユニットの値のパリティ値P_Y[r]とが入力されてそれらのパリティ値の論理積の値(前述した上位部分パリティ論理積)を出力する回路である。
【0348】
上位部分第1論理積回路1221は、第q被乗数データユニットにおける最下位のビットの値と第r乗数データユニットにおける最上位のビットの値とが入力されてそれらの論理積の値(前述した上位部分第1論理積)を出力する回路である。
【0349】
p−1個のXOR回路1222及び上位部分第2論理積回路1223は、異なるhの値(但し、hは2からpまでの自然数)に応じた動作を各々行う。XOR回路1222は、第q被乗数データユニットにおける下位よりh桁分の各ビットの値が入力されてそれらの排他的論理和を出力する回路である。また、上位部分第2論理積回路1223は、このXOR回路1222の出力と、第r乗数データユニットにおける上位よりh桁目のビットの値とが入力されてそれらの論理積(前述した上位部分第2論理積)を出力する回路である。
【0350】
上位部分排他的論理和回路1224は、上位部分パリティ論理積回路1203の出力と、上位部分パリティ論理積回路1221の出力と、p−1個の上位部分第1論理積回路1223の各出力とが入力されてそれらの排他的論理和の値を出力する回路である。この上位部分排他的論理和回路1224の出力が、第q+1部分パリティ予測回路1220の出力である、第r部分乗算結果の第q+1部分のパリティ値の予測値P_Zr_P[q+1]となる。
【0351】
次に図24Bについて説明する。図24Bは、図22における第q+1部分パリティ予測回路1220の第二の例の構成を図解したものである。この第二の例の構成は、パリティ値として奇数パリティを使用する場合のものである。
【0352】
図24Bの構成は、図24Aの構成における上位部分パリティ論理積回路1203を上位部分パリティ論理和回路1204に置換したものである。上位部分パリティ論理和回路1204は、第q被乗数データユニットのパリティ値P_A[q]と第r乗数データユニットの値のパリティ値P_Y[r]とが入力されてそれらのパリティ値の論理和の値(前述した上位部分パリティ論理和)を出力する回路である。
【0353】
上位部分排他的論理和回路1224は、上位部分パリティ論理和回路1204の出力と、上位部分パリティ論理積回路1221の出力と、p−1個の上位部分第2論理積回路1223の各出力とが入力されてそれらの排他的論理和の値を出力する回路である。この上位部分排他的論理和回路1224の出力が、第q+1部分パリティ予測回路1220の出力である、第r部分乗算結果の第q+1部分のパリティ値の予測値P_Zr_P[q+1]となる。
【0354】
[3.4.1.3.4.中位部分パリティ予測回路の構成]
次に、図22における中位部分パリティ予測回路1230の構成について説明する。図25Aは、第r部分乗算結果パリティ予測回路1101がq−1個備えている中位部分パリティ予測回路1230の1つである、第k部分パリティ予測回路1300の第一の例の構成を図解したものである。この第一の例の構成は、パリティ値として偶数パリティを使用する場合のものである。
【0355】
第k部分パリティ予測回路1300は、第r部分乗算結果における下位よりk番目(但し、kは2からqまでの自然数)のデータユニット(前述した第k部分)のパリティ値の予測値P_Zr_P[k]を出力する回路である。
【0356】
この第k部分パリティ予測回路1300には、第k被乗数データユニットの値A[ユニットk]及びそのパリティ値P_A[k]と、第r乗数データユニットの値Y[ユニットr]及びそのパリティ値P_Y[r]とが入力される。更に、この第k部分パリティ予測回路1300には、第k−1被乗数データユニットの値A[ユニットk−1]も入力される。
【0357】
この第k部分パリティ予測回路1300は、中位部分パリティ論理積回路1301、中位部分第1論理積回路1311、XOR回路1312、及び中位部分第2論理積回路1313を備えている。このうちのXOR回路1312及び中位部分第2論理積回路1313は、どちらも第k部分パリティ予測回路1300にp−2個備えられている。更に、第k部分パリティ予測回路1300は、中位部分第3論理積回路1321、XOR回路1322、中位部分第4論理積回路1323、及び中位部分排他的論理和回路1331も備えている。このうちのXOR回路1322及び中位部分第4論理積回路1323は、どちらも第k部分パリティ予測回路1300にp−2個備えられている。
【0358】
中位部分パリティ論理積回路1301は、第k被乗数データユニットのパリティ値P_A[k]と第r乗数データユニットの値のパリティ値P_Y[r]とが入力されてそれらのパリティ値の論理積の値(前述した中位部分パリティ論理積)を出力する回路である。
【0359】
中位部分第1論理積回路1311は、第k被乗数データユニットにおける最上位のビットの値と第r乗数データユニットにおける下位より2桁目のビットの値とが入力されてそれらの論理積の値(前述した中位部分第1論理積)を出力する回路である。
【0360】
p−2個のXOR回路1312及び中位部分第2論理積回路1313は、異なるmの値(但し、mは2からp−1までの自然数)に応じた動作を各々行う。XOR回路1312は、第k被乗数データユニットにおける上位よりm桁分の各ビットの値が入力されてそれらの排他的論理和の値を出力する回路である。また、中位部分第2論理積回路1313は、このXOR回路1312の出力と、第r乗数データユニットにおける下位からm+1桁目のビットの値とが入力されてそれらの論理積(前述した中位部分第2論理積)を出力する回路である。
【0361】
中位部分第3論理積回路1321は、第k−1被乗数データユニットにおける最上位のビットの値と第r乗数データユニットにおける下位より2桁目のビットの値とが入力されてそれらの論理積の値(前述した中位部分第3論理積)を出力する回路である。
【0362】
p−2個のXOR回路1322及び中位部分第4論理積回路1323は、異なるnの値(但し、nは2からp−1までの自然数)に応じた動作を各々行う。XOR回路1322は、第k−1被乗数データユニットにおける上位よりn桁分の各ビットの値が入力されてそれらの排他的論理和の値を出力する回路である。また、中位部分第4論理積回路1323は、このXOR回路1322の出力と、第r乗数データユニットにおける下位からn+1桁目のビットの値とが入力されてそれらの論理積(前述した中位部分第4論理積)を出力する回路である。
【0363】
中位部分排他的論理和回路1331は、これらの中位部分パリティ論理積、中位部分第1論理積、中位部分第2論理積、中位部分第3論理積、及び中位部分第4論理積が入力されて、それらの排他的論理和の値を出力する回路である。この中位部分排他的論理和回路1331の出力が、第k部分パリティ予測回路1300の出力である、第r部分乗算結果の第k部分のパリティ値の予測値P_Zr_P[k]となる。
【0364】
次に図25Bについて説明する。図25Bは、第r部分乗算結果パリティ予測回路1101がq−1個備えている中位部分パリティ予測回路1230の1つである、第k部分パリティ予測回路1300の第二の例の構成を図解したものである。この第二の例の構成は、パリティ値として奇数パリティを使用する場合のものである。
【0365】
図25Bの構成は、図25Aの構成における中位部分パリティ論理積回路1301を中位部分パリティ論理和回路1302に置換したものである。中位部分パリティ論理和回路1302は、第q被乗数データユニットのパリティ値P_A[q]と第r乗数データユニットの値のパリティ値P_Y[r]とが入力されてそれらのパリティ値の論理和の値(前述した中位部分パリティ論理和)を出力する回路である。
【0366】
中位部分排他的論理和回路1331は、中位部分パリティ論理和、中位部分第1論理積、中位部分第2論理積、中位部分第3論理積、及び中位部分第4論理積が入力されて、それらの排他的論理和の値を出力する回路である。この中位部分排他的論理和回路1331の出力が、第k部分パリティ予測回路1300の出力である、第r部分乗算結果の第k部分のパリティ値の予測値P_Zr_P[k]となる。
【0367】
以上までの構成により、第r部分乗算結果のデータユニット毎のパリティ値の予測値P_Zr_P[1]、…、P_Zr_P[q+1]の全てが、rのとり得る全ての値(rは1からqまでの自然数)について得られる。
【0368】
[3.4.1.3.5.中位パリティ予測回路の具体的構成]
次に、図19における中位パリティ予測回路1000の具体的構成について説明する。
【0369】
前述したように、図18のキャリーレス乗算パリティ予測回路202は、パリティ予測値P_Z_P[2]、…、P_Z_P[2q−1]を各々出力する2q−2個の中位パリティ予測回路1000を備えている。図26A及び図26Bは、それぞれ、この中位パリティ予測回路1000のひとつである、第s中位パリティ予測回路の第一の例及び第t中位パリティ予測回路の第一の例を図解したものである。なお、これらの第一の例の構成は、パリティ値として偶数パリティを使用する場合のものである。
【0370】
第s中位パリティ予測回路2000は、乗算結果Zにおける下位よりs番目(但し、sは2からqまでの自然数)のデータユニットのパリティ値の予測値P_Z_P[2]、…、P_Z_P[q]を出力する回路である。また、第t中位パリティ予測回路2001は、乗算結果Zにおける下位よりt番目(但し、tはq+1から2q−1までの自然数)のデータユニットのパリティ値の予測値P_Z_P[q+1]、…、P_Z_P[2q−1]を出力する回路である。
【0371】
図26Aにおいて、第1部分乗算結果パリティ予測回路2100−1が備える第s部分パリティ予測回路2200−1は、第1部分乗算結果の第s部分のパリティ予測値P_Z1_P[s]を出力する。また、第s部分乗算結果パリティ予測回路2100−sが備える第1部分パリティ予測回路2200−sは、第s部分乗算結果の第1部分のパリティ予測値P_Zs_P[1]を出力する。
【0372】
XOR回路2010は、これらの第u部分乗算結果パリティ予測回路(但し、uは1からsまでの自然数)が備える第s−u+1部分パリティ予測回路が出力するパリティ予測値が入力されて、これらs個のパリティ予測値の排他的論理和を出力する。このXOR回路2010の出力が、第s中位パリティ予測回路2000の出力である、乗算結果Zにおける下位よりs番目のデータユニットのパリティ値の予測値P_Z_P[s]となる。
【0373】
また、図26Bにおいて、第t−q部分乗算結果パリティ予測回路2101−1が備える第q+1部分パリティ予測回路2201−1は、第t−q部分乗算結果の第q+1部分のパリティ予測値P_Z(t−q)_P[q+1]を出力する。また、w=2q−t+1としたときに、第q部分乗算結果パリティ予測回路2101−wが備える第t−q+1部分パリティ予測回路2201−wは、第q部分乗算結果の第t−q+1部分のパリティ予測値P_Zq_P[t−q+1]を出力する。
【0374】
XOR回路2011は、これらの第v部分乗算結果パリティ予測回路(但し、vはt−qからqまでの自然数)が備える第t−v+1部分パリティ予測回路が出力するパリティ予測値が入力されて、これらw個のパリティ予測値の排他的論理和を出力する。このXOR回路2011の出力が、第t中位パリティ予測回路2001の出力である、乗算結果Zにおける下位よりt番目のデータユニットのパリティ値の予測値P_Z_P[t]となる。
【0375】
次に図26C及び図26Dについて説明する。図26C及び図26Dは、それぞれ、図19における中位パリティ予測回路1000のひとつである、第s中位パリティ予測回路2000の第二の例及び第t中位パリティ予測回路2001の第二の例を図解したものである。なお、これらの第二の例の構成は、パリティ値として奇数パリティを使用する場合のものである。
【0376】
図26Cの第s中位パリティ予測回路2000の構成は、図26Aの構成におけるXOR回路2010に、定数値の入力を1つ追加したものである。この定数値は、sが偶数の場合には値「1」に設定され、sが奇数の場合には値「0」に設定される。
【0377】
なお、パリティ値として奇数パリティを使用する場合には、図26Cのように第s中位パリティ予測回路2000を構成する代わりに、図26Aの構成に否定回路を追加して第s中位パリティ予測回路2000を構成してもよい。すなわち、図26Aの構成において、sが偶数の場合にのみ、否定回路を用いてXOR回路2010の出力の論理を反転させたものを、乗算結果Zにおける下位よりs番目のデータユニットのパリティ値の予測値P_Z_P[s]とするように構成してもよい。
【0378】
また、図26Dの第t中位パリティ予測回路2001の構成は、図26Bの構成におけるXOR回路2011に、定数値の入力を1つ追加したものである。この定数値は、w(=2q−t+1)が偶数の場合には値「1」に設定され、wが奇数の場合には値「0」に設定される。
【0379】
なお、パリティ値として奇数パリティを使用する場合には、図26Dのように第t中位パリティ予測回路2001を構成する代わりに、図26Bの構成に否定回路を追加して第t中位パリティ予測回路2001を構成してもよい。すなわち、図26Bの構成において、sが偶数の場合にのみ、否定回路を用いてXOR回路2011の出力の論理を反転させたものを、乗算結果Zにおける下位よりt番目のデータユニットのパリティ値の予測値P_Z_P[t]とするように構成してもよい。
【0380】
以上までの構成により、乗算結果Zにおける下位より2番目から2q−1番目までの各データユニットのパリティ予測値P_Z_P[2]、…、P_Z_P[2q−1]が、中位パリティ予測回路1000から出力される。従って、この中位パリティ予測回路1000と、下位パリティ予測回路800及び上位パリティ予測回路900とにより、乗算結果Zの各データユニットのパリティ予測値P_Z_P[1]、…、P_Z_P[2q]が得られる。
【0381】
以上のように、上述したいずれの実施例においても、キャリーレス乗算パリティ予測回路202を用いてキャリーレス乗算回路201の誤動作を検出することができる。
【符号の説明】
【0382】
1 パリティ予測器
2 被乗数データ列
3 乗数データ列
4 乗算結果データ列
10 下位パリティ予測部
20 上位パリティ予測部
30 中位パリティ予測部
40 部分乗算結果パリティ予測部
50 部分パリティ予測部
100 演算処理装置
110 演算部
111 演算器
112 レジスタ
113 演算制御部
120 制御部
130 1次キャッシュ部
131 命令キャッシュ
132 データキャッシュ
140 2次キャッシュ部
150 メモリ
200 キャリーレス乗算器
201 キャリーレス乗算回路
202 キャリーレス乗算パリティ予測回路
203 パリティチェック回路
800 下位パリティ予測回路
801 下位パリティ論理積回路
802 下位パリティ論理和回路
811 下位第1論理積回路
812 XOR回路
813 下位第2論理積回路
814 下位排他的論理和回路
900 上位パリティ予測回路
901 上位パリティ論理積回路
902 上位パリティ論理和回路
911 上位第1論理積回路
913 上位第2論理積回路
914 上位排他的論理和回路
1000 中位パリティ予測回路
1100 部分乗算結果パリティ予測回路
1101 第r部分乗算結果パリティ予測回路
1200 部分パリティ予測回路
1201 下位部分パリティ論理積回路
1202 下位部分パリティ論理和回路
1203 上位部分パリティ論理積回路
1204 上位部分パリティ論理和回路
1210 第1部分パリティ予測回路
1211 下位部分第1論理積回路
1212 XOR回路
1213 下位部分第2論理積回路
1214 下位部分排他的論理和回路
1220 第q+1部分パリティ予測回路
1221 上位部分第1論理積回路
1223 上位部分第2論理積回路
1224 上位部分排他的論理和回路
1230 中位部分パリティ予測回路
1300 第k部分パリティ予測回路
1301 中位部分パリティ論理積回路
1302 中位部分パリティ論理和回路
1311 中位部分第1論理積回路
1313 中位部分第2論理積回路
1321 中位部分第3論理積回路
1323 中位部分第4論理積回路
1331 中位部分排他的論理和回路
2000 第s中位パリティ予測回路
2001 第t中位パリティ予測回路
2100−1 第1部分乗算結果パリティ予測回路
2100−s 第s部分乗算結果パリティ予測回路
2101−1 第t−q部分乗算結果パリティ予測回路
2101−w 第q部分乗算結果パリティ予測回路
2200−1 第s部分パリティ予測回路
2200−s 第1部分パリティ予測回路
2201−1 第q+1部分パリティ予測回路
2201−w 第t−q+1部分パリティ予測回路

【特許請求の範囲】
【請求項1】
pビット(pは2以上の自然数)のデータであるデータユニットがそれぞれq個(qは自然数)並べられたデータ列である被乗数データ列と乗数データ列とのキャリーレス乗算結果のパリティ値を予測するパリティ予測器において、
前記キャリーレス乗算結果を示す乗算結果データ列における下位より1番目のデータユニットのパリティ値を、前記被乗数データ列及び前記乗数データ列のそれぞれにおける、下位より1番目のデータユニットである第1データユニットの値及びパリティ値に基づき予測する下位パリティ予測部と、
前記乗算結果データ列における下位より2q−1番目のデータユニットに続くデータである、該乗算結果データ列の上位p−1ビットのデータのパリティ値を、前記被乗数データ列及び前記乗数データ列のそれぞれにおける、下位よりq番目のデータユニットである第qデータユニットの値及びパリティ値に基づき予測する上位パリティ予測部と、
を有することを特徴とするパリティ予測器。
【請求項2】
前記パリティ予測器は、更に、
前記被乗数データ列及び前記乗数データ列が、それぞれ前記データユニットを複数個並べたデータ列である場合に、前記乗算結果データ列における下位より2番目から2q−1番目までの各データユニットのパリティ値を、該被乗数データ列及び該乗数データ列のそれぞれにおける、下位より1番目のデータユニットである第1データユニットから下位q番目のデータユニットである第qデータユニットまでの各データユニットの値及びパリティ値に基づいて予測する中位パリティ予測部を有する
ことを特徴とする請求項1記載のパリティ予測器。
【請求項3】
前記パリティ値は偶数パリティであり、
前記下位パリティ予測部は、
前記被乗数データ列及び前記乗数データ列のそれぞれの第1データユニットのパリティ値の論理積を出力する下位パリティ論理積回路と、
前記被乗数データ列の第1データユニットにおける最上位のビットの値と前記乗数データ列の第1データユニットにおける下位より2桁目のビットの値との論理積を出力する下位第1論理積回路と、
前記被乗数データ列の第1データユニットにおける上位よりi桁分(iは2からp−1までの自然数)の各ビットの値の排他的論理和と前記乗数データ列の第1データユニットにおける下位からi+1桁目のビットの値との論理積を各々出力するp−2個の下位第2論理積回路と、
前記下位パリティ論理積回路の出力と前記下位第1論理積回路の出力と前記p−2個の下位第2論理積回路の全ての出力との排他的論理和を、前記下位パリティ予測部による予測結果として出力する下位排他的論理和回路と、
を有する、
ことを特徴とする請求項1又は2記載のパリティ予測器。
【請求項4】
前記パリティ値は偶数パリティであり、
前記上位パリティ予測部は、
前記被乗数データ列及び前記乗数データ列のそれぞれの第qデータユニットのパリティ値の論理積を出力する上位パリティ論理積回路と、
前記被乗数データ列の第qデータユニットにおける最下位のビットの値と前記乗数データ列の第qデータユニットにおける最上位のビットの値との論理積を出力する上位第1論理積回路と、
前記被乗数データ列の第qデータユニットにおける下位よりj桁分(jは2からpまでの自然数)の各ビットの値の排他的論理和と前記乗数データ列の第qデータユニットにおける上位よりj桁目のビットの値との論理積を各々出力するp−1個の上位第2論理積回路と、
前記上位パリティ論理積回路の出力と前記上位第1論理積回路の出力と前記p−1個の上位第2論理積回路の全ての出力との排他的論理和を、前記上位パリティ予測部による予測結果として出力する上位排他的論理和回路と、
を有する、
ことを特徴とする請求項1又は2記載のパリティ予測器。
【請求項5】
前記中位パリティ予測部は、
前記被乗数データ列と前記乗数データ列を構成するデータユニットのうちの1つである部分乗数データとのキャリーレス乗算の結果である部分乗算結果データ列のデータユニット毎のパリティ値を予測する部分乗算結果パリティ予測部を有し、
前記部分乗算結果パリティ予測部による予測結果に基づいて、前記乗算結果データ列における下位より2番目から2q−1番目までの各データユニットのパリティ値の予測を行う、
ことを特徴とする請求項2記載のパリティ予測器。
【請求項6】
前記中位パリティ予測部は、
前記部分乗算結果パリティ予測部として、前記乗数データ列のうちの下位よりr番目(rは1からqまでの自然数)のデータユニットである第r乗数データユニットを前記部分乗数データとしたときにおける前記部分乗算結果データ列のデータユニット毎のパリティ値を予測する第r部分乗算結果パリティ予測部を有し、
前記第r部分乗算結果パリティ予測部は、
前記部分乗算結果データ列における下位より1番目のデータユニットのパリティ値を、前記被乗数データ列における前記第1データユニットの値及びパリティ値と、前記第r乗数データユニットの値及びパリティ値とに基づき予測する第1部分パリティ予測部と、
前記部分乗算結果データ列における下位よりq番目のデータユニットに続くデータである、該部分乗算結果データ列の上位p−1ビットのデータのパリティ値を、前記被乗数データ列における前記第qデータユニットの値及びパリティ値と、前記第r乗数データユニットの値及びパリティ値とに基づき予測する第q+1部分パリティ予測部と、
前記部分乗算結果データ列における下位より2番目からq番目までの各データユニット毎のパリティ値を、前記被乗数データ列における前記第1データユニットから前記第qデータユニットまでの各データユニットの値及びパリティ値と、前記第r乗数データユニットの値及びパリティ値とに基づき予測する中位部分パリティ予測部と、
を有する、
ことを特徴とする請求項5記載のパリティ予測器。
【請求項7】
前記パリティ値は偶数パリティであり、
前記第1部分パリティ予測部は、
前記被乗数データ列における第1データユニットのパリティ値と前記第r乗数データユニットのパリティ値との論理積を出力する下位部分パリティ論理積回路と、
前記被乗数データ列の第1データユニットにおける最上位のビットの値と前記第r乗数データユニットにおける下位より2桁目のビットの値との論理積を出力する下位部分第1論理積回路と、
前記被乗数データ列の第1データユニットにおける上位よりg桁分(gは2からp−1までの自然数)の各ビットの値の排他的論理和と前記第r乗数データユニットにおける下位からg+1桁目のビットの値との論理積を各々出力するp−2個の下位部分第2論理積回路と、
前記下位部分パリティ論理積回路の出力と前記下位部分第1論理積回路の出力と前記p−2個の下位部分第2論理積回路の全ての出力との排他的論理和を、前記第1部分パリティ予測部による予測結果として出力する下位部分排他的論理和回路と、
を有する、
ことを特徴とする請求項6記載のパリティ予測器。
【請求項8】
前記パリティ値は偶数パリティであり、
前記第q+1部分パリティ予測部は、
前記被乗数データ列における前記第qデータユニットのパリティ値と前記第r乗数データユニットのパリティ値との論理積を出力する上位部分パリティ論理積回路と、
前記被乗数データ列の第qデータユニットにおける最下位のビットの値と前記第r乗数データユニットにおける最上位のビットの値との論理積を出力する上位部分第1論理積回路と、
前記被乗数データ列の第qデータユニットにおける下位よりh桁分(hは2からpまでの自然数)の各ビットの値の排他的論理和と前記第r乗数データユニットにおける上位よりh桁目のビットの値との論理積を各々出力するp−1個の上位部分第2論理積回路と、
前記上位部分パリティ論理積回路の出力と前記上位部分第1論理積回路の出力と前記p−1個の上位部分第2分論理積回路の全ての出力との排他的論理和を、前記第q+1部分パリティ予測部による予測結果として出力する上位部分排他的論理和回路と、
を有する、
ことを特徴とする請求項6又は7記載のパリティ予測器。
【請求項9】
前記パリティ値は偶数パリティであり、
前記中位部分パリティ予測部は、前記部分乗算結果データ列における下位よりk番目(kは2からqまでの自然数)のデータユニットのパリティ値を予測する第k部分パリティ予測部を有し、
前記第k部分パリティ予測部は、
前記被乗数データ列の第kデータユニットのパリティ値と前記第r乗数データユニットのパリティ値との論理積を出力する中位部分パリティ論理積回路と、
前記被乗数データ列の第kデータユニットにおける最上位のビットの値と前記第rデータにおける下位より2桁目のビットの値との論理積を出力する中位部分第1論理積回路と、
前記被乗数データ列の第kデータユニットにおける上位よりm桁分(mは2からp−1までの自然数)の各ビットの値の排他的論理和と前記第r乗数データユニットにおける下位からm+1桁目のビットの値との論理積を各々が出力するp−2個の中位部分第2論理積回路と、
前記被乗数データ列の第k−1データユニットにおける最上位のビットの値と前記第r乗数データユニットにおける下位より2桁目のビットの値との論理積を出力する中位部分第3論理積回路と、
前記被乗数データ列の第k−1データユニットにおける上位よりn桁分(nは2からp−1までの自然数)の各ビットの値の排他的論理和と前記第r乗数データユニットにおける下位よりn+1桁目のビットの値との論理積を各々が出力するp−2個の中位部分第4論理積回路と、
前記中位部分パリティ論理積回路の出力と、前記中位部分第1論理積回路の出力と、前記p−2個の中位部分第2論理積回路の全ての出力と、前記中位部分第3論理積回路の出力と、前記p−2個の中位部分第4論理積回路の全ての出力との排他的論理和を、前記第kパリティ予測部による予測結果として出力する中位部分排他的論理和回路と、
を有する、
ことを特徴とする請求項6から8のうちのいずれか一項記載のパリティ予測器。
【請求項10】
前記パリティ予測器は、前記中位パリティ予測部として、
前記乗算結果データ列における下位よりs番目(sは2からqまでの自然数)のデータユニットのパリティ値を予測する第s中位パリティ予測部と、
前記乗算結果データ列における下位よりt番目(tはq+1から2q−1までの自然数)のデータユニットのパリティ値を予測する第t中位パリティ予測部と、
を有し、
前記第s中位パリティ予測部は、第u部分乗算結果パリティ予測部(uは1からsまでの自然数)が有する第s−u+1部分パリティ予測部によるパリティ値の予測結果の排他的論理和を、前記乗算結果データ列における下位よりs番目のデータユニットのパリティ値の予測結果として出力する排他的論理和回路を有し、
前記第t中位パリティ予測部は、第v部分乗算結果パリティ予測部(vはt−qからqまでの自然数)が有する第t−v+1部分パリティ予測部によるパリティ値の予測結果の排他的論理和を、前記乗算結果データ列における下位よりt番目のデータユニットのパリティ値の予測結果として出力する排他的論理和回路を有する、
ことを特徴とする請求項9記載のパリティ予測器。
【請求項11】
前記パリティ値は奇数パリティであり、
前記下位パリティ予測部は、
前記被乗数データ列及び前記乗数データ列のそれぞれの第1データユニットのパリティ値の論理和を出力する下位パリティ論理和回路と、
前記被乗数データ列の第1データユニットにおける最上位のビットの値と前記乗数データ列の第1データユニットにおける下位より2桁目のビットの値との論理積を出力する下位第1論理積回路と、
前記被乗数データ列の第1データユニットにおける上位よりi桁分(iは2からp−1までの自然数)の各ビットの値の排他的論理和と前記乗数データ列の第1データユニットにおける下位からi+1桁目のビットの値との論理積を各々出力するp−2個の下位第2論理積回路と、
前記下位パリティ論理和回路の出力と前記下位第1論理積回路の出力と前記p−2個の下位第2論理積回路の全ての出力との排他的論理和を、前記下位パリティ予測部による予測結果として出力する下位排他的論理和回路と、
を有する、
ことを特徴とする請求項1又は2記載のパリティ予測器。
【請求項12】
前記パリティ値は奇数パリティであり、
前記上位パリティ予測部は、
前記被乗数データ列及び前記乗数データ列のそれぞれの第qデータユニットのパリティ値の論理和を出力する上位パリティ論理和回路と、
前記被乗数データ列の第qデータユニットにおける最下位のビットの値と前記乗数データ列の第qデータユニットにおける最上位のビットの値との論理積を出力する上位第1論理積回路と、
前記被乗数データ列の第qデータユニットにおける下位よりj桁分(jは2からpまでの自然数)の各ビットの値の排他的論理和と前記乗数データ列の第qデータユニットにおける上位よりj桁目のビットの値との論理積を各々出力するp−1個の上位第2論理積回路と、
前記上位パリティ論理和回路の出力と前記上位第1論理積回路の出力と前記p−1個の上位第2論理積回路の全ての出力との排他的論理和を、前記上位パリティ予測部による予測結果として出力する上位排他的論理和回路と、
を有する、
ことを特徴とする請求項1又は2記載のパリティ予測器。
【請求項13】
前記パリティ値は奇数パリティであり、
前記第1部分パリティ予測部は、
前記被乗数データ列における前記第1データユニットのパリティ値と前記第r乗数データユニットのパリティ値との論理和を出力する下位部分パリティ論理和回路と、
前記被乗数データ列の第1データユニットにおける最上位のビットの値と前記第r乗数データユニットにおける下位より2桁目のビットの値との論理積を出力する下位部分第1論理積回路と、
前記被乗数データ列の第1データユニットにおける上位よりg桁分(gは2からp−1までの自然数)の各ビットの値の排他的論理和と前記第r乗数データユニットにおける下位からg+1桁目のビットの値との論理積を各々出力するp−2個の下位部分第2論理積回路と、
前記下位部分パリティ論理和回路の出力と前記下位部分第1論理積回路の出力と前記p−2個の下位部分第2論理積回路の全ての出力との排他的論理和を、前記第1部分パリティ予測部による予測結果として出力する下位部分排他的論理和回路と、
を有する、
ことを特徴とする請求項6記載のパリティ予測器。
【請求項14】
前記パリティ値は奇数パリティであり、
前記第q+1部分パリティ予測部は、
前記被乗数データ列における前記第qデータユニットのパリティ値と前記第r乗数データユニットのパリティ値との論理和を出力する上位部分パリティ論理和回路と、
前記被乗数データ列の第qデータユニットにおける最下位のビットの値と前記第r乗数データユニットにおける最上位のビットの値との論理積を出力する上位部分第1論理積回路と、
前記被乗数データ列の第qデータユニットにおける下位よりh桁分(hは2からpまでの自然数)の各ビットの値の排他的論理和と前記第r乗数データユニットにおける上位よりh桁目のビットの値との論理積を各々出力するp−1個の上位部分第2論理積回路と、
前記上位部分パリティ論理和回路の出力と前記上位部分第1論理積回路の出力と前記p−1個の上位部分第2論理積回路の全ての出力との排他的論理和を、前記第q+1部分パリティ予測部による予測結果として出力する上位部分排他的論理和回路と、
を有する、
ことを特徴とする請求項6又は13記載のパリティ予測器。
【請求項15】
前記パリティ値は奇数パリティであり、
前記中位部分パリティ予測部は、前記部分乗算結果データ列における下位よりk番目(kは2からqまでの自然数)のデータユニットのパリティ値を予測する第k部分パリティ予測部を有し、
前記第k部分パリティ予測部は、
前記被乗数データ列における前記第kデータユニットのパリティ値と前記第r乗数データユニットのパリティ値との論理和を出力する中位部分パリティ論理和回路と、
前記被乗数データ列の第kデータユニットにおける最上位のビットの値と前記第rデータにおける下位より2桁目のビットの値との論理積を出力する中位部分第1論理積回路と、
前記被乗数データ列の第kデータユニットにおける上位よりm桁分(mは2からp−1までの自然数)の各ビットの値の排他的論理和と前記第r乗数データユニットにおける下位からm+1桁目のビットの値との論理積を各々が出力するp−2個の中位部分第2論理積回路と、
前記被乗数データ列の第k−1データユニットにおける最上位のビットの値と前記第r乗数データユニットにおける下位より2桁目のビットの値との論理積を出力する中位部分第3論理積回路と、
前記被乗数データ列の第k−1データユニットにおける上位よりn桁分(nは2からp−1までの自然数)の各ビットの値の排他的論理和と前記第r乗数データユニットにおける下位よりn+1桁目のビットの値との論理積を各々が出力するp−2個の中位部分第4論理積回路と、
前記中位部分パリティ論理和回路の出力と、前記中位部分第1論理積回路の出力と、前記p−2個の中位部分第2論理積回路の全ての出力と、前記中位部分第3論理積回路の出力と、前記p−2個の中位部分第4論理積回路の全ての出力との排他的論理和を、前記第kパリティ予測部による予測結果として出力する中位部分排他的論理和回路と、
を有する、
ことを特徴とする請求項6、13、及び14のうちのいずれか一項記載のパリティ予測器。
【請求項16】
前記パリティ予測器は、前記中位パリティ予測部として、
前記乗算結果データ列における下位よりs番目(sは2からqまでの自然数)のデータユニットのパリティ値を予測する第s中位パリティ予測部と、
前記乗算結果データ列における下位よりt番目(tはq+1から2q−1までの自然数)のデータユニットのパリティ値を予測する第t中位パリティ予測部と、
を有し、
前記第s中位パリティ予測部は、第u部分乗算結果パリティ予測部(uは1からsまでの自然数)が有する第s−u+1部分パリティ予測部によるパリティ値の予測結果と第一定数値との排他的論理和を、前記乗算結果データ列における下位よりs番目のデータユニットのパリティ値の予測結果として出力する排他的論理和回路を有し、
前記第一定数値は、sの値が偶数の場合には「1」とし、sの値が奇数の場合には「0」とし、
前記第t中位パリティ予測部は、第v部分乗算結果パリティ予測部(vはt−qからqまでの自然数)が有する第t−v+1部分パリティ予測部によるパリティ値の予測結果と第二定数値との排他的論理和を、前記乗算結果データ列における下位よりt番目のデータユニットのパリティ値の予測結果として出力する排他的論理和回路を有し、
前記第二定数値は、2q−t+1の値が偶数の場合には「1」とし、2q−t+1の値が奇数の場合には「0」とする、
ことを特徴とする請求項15記載のパリティ予測器。
【請求項17】
請求項1から16のうちのいずれか一項記載のパリティ予測器と、
前記キャリーレス乗算を行う乗算回路と、
を有することを特徴とするキャリーレス乗算器。
【請求項18】
請求項17記載のキャリーレス乗算器を演算器として有することを特徴とする演算処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10A】
image rotate

【図10B】
image rotate

【図10C】
image rotate

【図10D】
image rotate

【図10E】
image rotate

【図10F】
image rotate

【図10G】
image rotate

【図11A】
image rotate

【図11B】
image rotate

【図12A】
image rotate

【図12B】
image rotate

【図13】
image rotate

【図14A】
image rotate

【図14B】
image rotate

【図14C】
image rotate

【図14D】
image rotate

【図15A】
image rotate

【図15B】
image rotate

【図16】
image rotate

【図17A】
image rotate

【図17B】
image rotate

【図17C】
image rotate

【図17D】
image rotate

【図17E】
image rotate

【図17F】
image rotate

【図17G】
image rotate

【図17H】
image rotate

【図17I】
image rotate

【図17J】
image rotate

【図17K】
image rotate

【図17L】
image rotate

【図17M】
image rotate

【図17N】
image rotate

【図17O】
image rotate

【図17P】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20A】
image rotate

【図20B】
image rotate

【図21A】
image rotate

【図21B】
image rotate

【図22】
image rotate

【図23A】
image rotate

【図23B】
image rotate

【図24A】
image rotate

【図24B】
image rotate

【図25A】
image rotate

【図25B】
image rotate

【図26A】
image rotate

【図26B】
image rotate

【図26C】
image rotate

【図26D】
image rotate

【図7】
image rotate