(57)【特許請求の範囲】
【請求項１】
データと前記データのパリティを入力とし、前記データをｎ進数（ｎは２以上の自然数）により表現した場合における特定情報の計数情報のパリティを出力するパリティ生成回路であって、
前記データをｎ進数で表現した場合における前記特定情報の数が、特定の数であることを判定する判定手段と、
前記判定手段による判定結果に応じて、前記データのパリティの値又は前記パリティを反転させた値のいずれかを前記計数情報のパリティとして出力する反転手段と
を有することを特徴とするパリティ生成回路。
【請求項２】
前記判定手段は、８ビットのデータをｎ進数で表現した場合における前記特定情報の数が、０、１、６、７のいずれかであることをデコードすることを特徴とする請求項１に記載のパリティ生成回路。
【請求項３】
前記判定手段は、８ビットのデータをｎ進数で表現した場合における前記特定情報の数が、０、１、６、７のいずれかであるかを、前記データの上位４ビットをｎ進数により表現した場合における前記特定情報の数と、該データの下位４ビットをｎ進数により表現した場合における前記特定情報の数との組合せに基づいて判定することを特徴とする請求項１に記載のパリティ生成回路。
【請求項４】
データと前記データのパリティを入力とし、前記データをｎ進数（ｎは２以上の自然数）により表現した場合における１の計数情報とともに前記計数情報のパリティを出力する計数回路であって、
前記データをｎ進数で表現した場合における特定情報の数が、特定の数であることを判定する判定手段と、
前記判定手段による判定結果に応じて、前記データのパリティの値又は前記パリティを反転させた値のいずれかを前記計数情報のパリティとして出力する反転手段と
を有するパリティ生成回路を備えることを特徴とする計数回路。
【請求項５】
前記判定手段は、８ビットのデータをｎ進数で表現した場合における前記特定情報の数が、０、１、６、７のいずれかであることをデコードすることを特徴とする請求項４に記載の計数回路。
【請求項６】
前記判定手段は、８ビットのデータをｎ進数で表現した場合における前記特定情報の数が、０、１、６、７のいずれかであるかを、前記データの上位４ビットをｎ進数により表現した場合における前記特定情報の数と、該データの下位４ビットをｎ進数により表現した場合における前記特定情報の数との組合せに基づいて判定することを特徴とする請求項４に記載の計数回路。
【請求項７】
データと前記データのパリティを入力とし、前記データをｎ進数（ｎは2以上の自然数）により表現した場合における１の計数情報とともに前記計数情報のパリティを出力する計数方法であって、
前記データをｎ進数で表現した場合における特定情報の数が、特定の数であることを判定する判定ステップと、
前記判定手段による判定結果に応じて、前記データのパリティの値又は前記パリティを反転させた値のいずれかを前記計数情報のパリティとして出力する反転ステップと
を有することを特徴とする計数方法。
【請求項８】
前記判定ステップは、８ビットのデータをｎ進数で表現した場合における前記特定情報の数が、０、１、６、７のいずれかであることをデコードすることを特徴とする請求項７に記載の計数方法。
【請求項９】
前記判定ステップは、８ビットのデータをｎ進数で表現した場合における前記特定情報の数が、０、１、６、７のいずれかであるかを、前記データの上位４ビットをｎ進数により表現した場合における前記特定情報の数と、該データの下位４ビットをｎ進数により表現した場合における前記特定情報の数との組合せに基づいて判定することを特徴とする請求項７に記載の計数方法。
【請求項１０】
Ｎ（Ｎ≧２である自然数）ビットのデータと前記データのパリティを入力とし、前記データをｎ進数（ｎは２以上の自然数）により表現した場合における１の計数情報とともに前記計数情報のパリティを出力する計数方法であって、
前記Ｎビットのデータをｎ（Ｎ＞ｎ≧１である自然数）ビットデータ毎に分割する分割ステップと、
前記ｎビットデータをｎ進数で表現した場合における特定情報の数が、特定の数であることを判定する判定ステップと、
前記判定手段による判定結果に応じて、前記ｎビットデータのパリティの値又は前記ｎビットデータのパリティを反転させた値のいずれかを前記計数情報のパリティとして出力する反転ステップと、
前記分割されたｎビットデータ毎の前記計数情報をそれぞれ加算する計数情報加算ステップと、
前記分割されたｎビットデータ毎の前記計数情報のパリティをそれぞれ加算するパリティ加算ステップと
を有することを特徴とする計数方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２進数データに含まれる「１」の数を計数するパリティ生成回路、計数回路および計数方法に関し、特に、ポピュレーションカウントの演算処理に影響を与えることなく、ポピュレーションカウントの演算結果のパリティを高速に求めることができるパリティ生成回路、計数回路および計数方法に関する。
【背景技術】
【０００２】
２進数データに含まれる「１」の数を計数する演算をポピュレーションカウント（Population  Count）といい、一部のＣＰＵ（Central  Processing  Unit）は、この演算を実行するための命令であるＰＯＰＣ（POPulation  Count）命令を備える。【０００３】
ＰＯＰＣ命令は、かつては使用頻度が低かったため、命令セットとして実装されずソフトウェアによるエミュレーションによって実現される場合もあったが、近年、ハミング距離（２つのビット列において相違するビット数）等の計算に利用されることが多くなり、命令処理の高速化のため、ハードウェアによる実現へと切り替えられることが多くなっている。ＰＯＰＣ命令を実行するための回路は、例えば、特許文献１にて開示されている技術を利用することで実現することができる。【０００４】
【特許文献１】特開２００５−１６５７９３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、信頼性を向上させるため、演算処理の入出力データにパリティを付加し、このパリティを用いてデータの正当性を保障するＣＰＵが存在する。かかるＣＰＵにおいてＰＯＰＣ命令をハードウェアで実現する場合、ＰＯＰＣ命令の演算結果のパリティをいかにして求めるかが問題となる。【０００６】
例えば、特許文献１にて開示されている技術を利用してポピュレーションカウントの演算をおこない、その後に別の回路を用いて演算結果のパリティを演算することとすると、パリティの演算をおこなう処理の分だけ命令の処理時間が長くなる。このような方式では、命令処理の高速化のためにＰＯＰＣ命令をハードウェアによって実装する意義が弱くなる。従って、演算処理にかかるサイクルタイムに影響を与えないようにするため、演算処理と同等またはそれ以下のサイクルタイムでパリティの演算処理を行う必要が有り、そのためには入力データからＰＯＰＣ命令処理の結果に対するパリティを予測する必要がある。【０００７】
ＰＯＰＣ命令の処理時間を増大させることなく演算結果のパリティを求めるには、ポピュレーションカウントの計数処理と平行して、別の回路においてパリティの予測をおこなう必要がある。このパリティの予測は、ＰＯＰＣ命令の入力データとそのパリティから演算結果のパリティを予測するものでなければならない。【０００８】
本発明は、上記に鑑みてなされたものであって、ポピュレーションカウントの演算処理に影響を与えることなく、ポピュレーションカウントの演算結果のパリティを高速に求めることができるパリティ生成回路、計数回路および計数方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明は、データと前記データのパリティを入力とし、前記データをｎ進数（ｎは２以上の自然数）により表現した場合における特定情報の計数情報のパリティを出力するパリティ生成回路であって、前記データをｎ進数で表現した場合における前記特定情報の数が、特定の数であることを判定する判定手段と、前記判定手段による判定結果に応じて、前記データのパリティの値又は前記パリティを反転させた値のいずれかを前記計数情報のパリティとして出力する反転手段とを有することを特徴とする。【００１０】
また、本発明の前記判定手段は、８ビットのデータをｎ進数で表現した場合における前記特定情報の数が、０、１、６、７のいずれかであることをデコードすることを特徴とする。【００１１】
また、本発明の前記判定手段は、８ビットのデータをｎ進数で表現した場合における前記特定情報の数が、０、１、６、７のいずれかであるかを、前記データの上位４ビットをｎ進数により表現した場合における前記特定情報の数と、該データの下位４ビットをｎ進数により表現した場合における前記特定情報の数との組合せに基づいて判定することを特徴とする。【００１２】
また、本発明は、データと前記データのパリティを入力とし、前記データをｎ進数（ｎは２以上の自然数）により表現した場合における１の計数情報とともに前記計数情報のパリティを出力する計数回路であって、前記データをｎ進数で表現した場合における特定情報の数が、特定の数であることを判定する判定手段と、前記判定手段による判定結果に応じて、前記データのパリティの値又は前記パリティを反転させた値のいずれかを前記計数情報のパリティとして出力する反転手段とを有するパリティ生成回路を備えることを特徴とする。【００１３】
また、本発明の前記判定手段は、８ビットのデータをｎ進数で表現した場合における前記特定情報の数が、０、１、６、７のいずれかであることをデコードすることを特徴とする。【００１４】
また、本発明の前記判定手段は、８ビットのデータをｎ進数で表現した場合における前記特定情報の数が、０、１、６、７のいずれかであるかを、前記データの上位４ビットをｎ進数により表現した場合における前記特定情報の数と、該データの下位４ビットをｎ進数により表現した場合における前記特定情報の数との組合せに基づいて判定することを特徴とする。【００１５】
また、本発明は、データと前記データのパリティを入力とし、前記データをｎ進数（ｎは２以上の自然数）により表現した場合における１の計数情報とともに前記計数情報のパリティを出力する計数方法であって、前記データをｎ進数で表現した場合における特定情報の数が、特定の数であることを判定する判定ステップと、前記判定手段による判定結果に応じて、前記データのパリティの値又は前記パリティを反転させた値のいずれかを前記計数情報のパリティとして出力する反転ステップとを有することを特徴とする。【００１６】
また、本発明の前記判定ステップは、８ビットのデータをｎ進数で表現した場合における前記特定情報の数が、０、１、６、７のいずれかであることをデコードすることを特徴とする。【００１７】
また、本発明の前記判定ステップは、８ビットのデータをｎ進数で表現した場合における前記特定情報の数が、０、１、６、７のいずれかであるかを、前記データの上位４ビットをｎ進数により表現した場合における前記特定情報の数と、該データの下位４ビットをｎ進数により表現した場合における前記特定情報の数との組合せに基づいて判定することを特徴とする。【００１８】
また、本発明は、Ｎ（Ｎ≧２である自然数）ビットのデータと前記データのパリティを入力とし、前記データをｎ進数（ｎは２以上の自然数）により表現した場合における１の計数情報とともに前記計数情報のパリティを出力する計数方法であって、前記Ｎビットのデータをｎ（Ｎ＞ｎ≧１である自然数）ビットデータ毎に分割する分割ステップと、前記ｎビットデータをｎ進数で表現した場合における特定情報の数が、特定の数であることを判定する判定ステップと、前記判定手段による判定結果に応じて、前記ｎビットデータのパリティの値又は前記ｎビットデータのパリティを反転させた値のいずれかを前記計数情報のパリティとして出力する反転ステップと、前記分割されたｎビットデータ毎の前記計数情報をそれぞれ加算する計数情報加算ステップと、前記分割されたｎビットデータ毎の前記計数情報のパリティをそれぞれ加算するパリティ加算ステップとを有することを特徴とする。【００１９】
この発明によれば、入力データが特定のビットパターンであることを判定することにより、ポピュレーションカウントの演算結果のパリティを予測するように構成したので、ポピュレーションカウントの演算処理に影響を与えることなく、ポピュレーションカウントの演算結果のパリティを高速に予測することができる。【００２０】
また、本発明は、上記の発明において、前記判定手段は、前記８ビットのデータを２進数で表現した場合における１の数が、０、１、６、７のいずれかであるかを、該データの上位４ビットを２進数で表現した場合における１の数と、該データの下位４ビットを２進数で表現した場合における１の数との組合せに基づいて判定することを特徴とする。【００２１】
この発明によれば、入力データを４ビットに分割してビットパターンを判定するように構成したので、全ビットを分割せずにビットパターンの判定を行う場合と比較して、回路規模を小さくすることができる。【００２２】
また、本発明は、上記の発明において、Ｎビットのデータとそのパリティを入力とし、該データを２進数で表現した場合における１の数とそのパリティを出力するポピュレーションカウント回路であって、請求項１に記載のポピュレーションカウント回路を複数備え、これらの請求項１に記載のポピュレーションカウント回路の出力結果を加算することによって出力するデータを求めることを特徴とする。【００２３】
この発明によれば、８ビットのポピュレーションカウント回路を組み合わせることによってＮビットのポピュレーションカウントの演算をおこなうことができるように構成したので、どのようなビット幅のデータにも対応したポピュレーションカウント回路も実現することができる。
【発明の効果】
【００２４】
本発明によれば、入力データが特定のビットパターンであることを判定することにより、ポピュレーションカウントの演算結果のパリティを予測するように構成したので、ポピュレーションカウントの演算処理に影響を与えることなく、ポピュレーションカウントの演算結果のパリティを高速に予測することができるという効果を奏する。【００２５】
また、本発明によれば、入力データを４ビットに分割してビットパターンを判定するように構成したので、全ビットを分割せずにビットパターンの判定を行う場合と比較して、回路規模を小さくすることができるという効果を奏する。【００２６】
また、本発明によれば、８ビットのポピュレーションカウント回路を組み合わせることによってＮビットのポピュレーションカウントの演算をおこなうことができるように構成したので、どのようなビット幅のデータにも対応したポピュレーションカウント回路も実現することができるという効果を奏する。
【図面の簡単な説明】
【００２７】
【図１−１】図１−１は、８ビットの入力データとＰＯＰとの対応を示す図である。
【図１−２】図１−２は、８ビットの入力データとＰＯＰとの対応を示す図である。
【図１−３】図１−３は、８ビットの入力データとＰＯＰとの対応を示す図である。
【図２】図２は、入力データのパリティとＰＯＰのパリティが一致するデータを示す図である。
【図３−１】図３−１は、８ビットの入力データのＰＯＰが「０」、「１」、「６」、「７」のいずれかとなる場合における上位４ビットのＰＯＰと下位４ビットのＰＯＰの組合せを示す図である。
【図３−２】図３−２は、８ビットの入力データのＰＯＰが「２」、「３」、「４」、「５」、「８」のいずれかとなる場合における上位４ビットのＰＯＰと下位４ビットのＰＯＰの組合せを示す図である。
【図４】図４は、８ビットの入力データに対応するポピュレーションカウント回路の構成を示すブロック図である。
【図５−１】図５−１は、パリティ予測部の構成を示すブロック図である。
【図５−２】図５−２は、パリティ予測部の構成を示すブロック図である。
【図５−３】図５−３は、パリティ予測部の構成を示すブロック図である。
【図６】図６は、６４ビットの入力データに対応するポピュレーションカウント回路の構成を示すブロック図である。
【図７】図７は、Ｎビットの入力データに対応するポピュレーションカウント回路の構成を示すブロック図である。
【符号の説明】
【００２８】
１０、２０  ポピュレーションカウント回路
１００  ポピュレーションカウント回路
１０１ａ〜１０１ｈ  ポピュレーションカウント回路
１０２ａ〜１０２ｎ  ポピュレーションカウント回路
２０１ａ〜２０１ｇ  加算回路
２０２ａ〜２０２ｘ  加算回路
１０００  ポピュレーションカウント演算部
２０００  パリティ予測部
２１１１〜２１１４  ＮＯＴ回路
２１２１  ＡＮＤ回路
２１３１〜２１３４  ＡＮＤ回路
２１３５  ＯＲ回路
２１４１〜２１４６  ＡＮＤ回路
２１４７  ＯＲ回路
２１５１〜２１５４  ＡＮＤ回路
２１５５  ＯＲ回路
２１６１  ＡＮＤ回路
２２１１〜２２１４  ＮＯＴ回路
２２２１  ＡＮＤ回路
２２３１〜２２３４  ＡＮＤ回路
２２３５  ＯＲ回路
２２４１〜２２４６  ＡＮＤ回路
２２４７  ＯＲ回路
２２５１〜２２５４  ＡＮＤ回路
２２５５  ＯＲ回路
２２６１  ＡＮＤ回路
２３１１  ＡＮＤ回路
２３２１、２３２２  ＡＮＤ回路
２３２３  ＯＲ回路
２３３１〜２３３３  ＡＮＤ回路
２３３４  ＯＲ回路
２３４１、２３４２  ＡＮＤ回路
２３４３  ＯＲ回路
２３５１  ＮＯＲ回路
３０００  パリティ反転回路
【発明を実施するための最良の形態】
【００２９】
以下に、本発明にかかるパリティ生成回路、計数回路および計数方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００３０】
まず、本実施例に係るパリティ予測方式の原理について説明する。図１−１〜１−３は、８ビットの入力データと、そのデータを２進数で表現した場合における「１」の数（以下、「ＰＯＰ」という）との対応を示す図である。【００３１】
同図は、８ビットの入力データ（Ｘ＜７：０＞）がとりうる「００００００００」から「１１１１１１１１」までの２５６通りの値に対して、入力データのパリティ（Ｘ＜Ｐ＞）と、ＰＯＰ（Ｚ＜３：０＞）と、ＰＯＰのパリティ（Ｚ＜Ｐ＞）とがどのような値をとるかを示している。【００３２】
入力データが８ビットであるため、ＰＯＰがとりうる値は、「００００（１０進数表現では０）」から「１０００（１０進数表現では８）」までである。また、同図においては奇数パリティが採用されており、「００００００００」という８ビットの入力データに対しては、「１」がパリティとして設定されている。そして、この入力データのＰＯＰである「００００」に対しては、「１」がパリティとして設定されている。【００３３】
図１−１〜１−３に示したデータのうち、入力データのパリティとＰＯＰのパリティが一致するデータ（行の先頭に「＊」を付与したデータ）を抜粋したものを図２に示す。同図を見ればわかるように、入力データのパリティとＰＯＰのパリティが一致する場合、ＰＯＰは、「００００（１０進数表現では０）」、「０００１（１０進数表現では１）」、「０１１０（１０進数表現では６）」、「０１１１（１０進数表現では７）」のいずれかの値になっている。【００３４】
一方、図１−１〜１−３に示したデータのうち、入力データのパリティとＰＯＰのパリティが一致しないデータ（行の先頭に「＊」を付与していないデータ）を見ると、ＰＯＰは、「００１０（１０進数表現では２）」、「００１１（１０進数表現では３）」、「０１００（１０進数表現では４）」、「０１０１（１０進数表現では５）」、「１０００（１０進数表現では８）」のいずれかの値になっている。【００３５】
この規則性を利用することにより、ＰＯＰのパリティを以下のようにして予測することができる。すなわち、８ビットの入力データに対してＰＯＰを求める場合、ＰＯＰが「０」、「１」、「６」、「７」のいずれかであれば、入力データのパリティと同一の値がＰＯＰのパリティであると予測される。そして、ＰＯＰがその他の値であれば、入力データのパリティを反転させた値がＰＯＰのパリティであると予測される。【００３６】
８ビット以上の幅をもった入力データのＰＯＰを求める場合は、入力データを８ビットずつに分解して処理することによってパリティを予測することができる。具体的には、８ビットに分解した各データのＰＯＰのパリティを上記の規則性に従って予測し、その予測結果を加算することにより入力データのＰＯＰのパリティを予測することができる。【００３７】
ところで、既に述べたように、本実施例に係るパリティ予測方式は、ＣＰＵのＰＯＰＣ命令において、ＰＯＰの計数処理と平行して実行することが想定されており、ＰＯＰＣ命令の実行時間を増大させないことを課題としている。このため、本実施例に係るパリティ予測方式によるパリティ予測処理に係るサイクルタイムは、ＰＯＰの計数処理に係るサイクルタイム以下であることが必要とされる。パリティ予測処理に係るサイクルタイムが、ＰＯＰの計数処理に係るサイクルタイム以下であれば、かかるパリティ予測処理がＰＯＰの計数処理によってマスクされ、ＰＯＰ命令の実行時間に影響を与えることがないからである。【００３８】
本実施例に係るパリティ予測方式においては、入力データのＰＯＰを判定する必要があるが、この判定は、ＰＯＰが１０進数表現により「０」、「１」、「６」、「７」のいずれかであるか、もしくは、１０進数表現により「２」、「３」、「４」、「５」、「８」のいずれかであるかが分かれば十分である。したがって、特許文献１で開示されているように加算器の組合せによってＰＯＰを演算する必要はなく、デコーダをもちいた判定回路として実現することにより、実行速度を高速化することができる。【００３９】
しかしながら、８ビットの幅をもった入力データのＰＯＰの判定をデコーダによって実装すると、回路規模が大きくなってしまうという問題がある。そこで、８ビットの入力データを４ビットずつの上位ビット、下位ビットに分けて処理する方式をとる。【００４０】
８ビットの入力データのＰＯＰが１０進数表現により「０」、「１」、「６」、「７」のいずれかとなる場合に、上位４ビット（＜７：４＞）のＰＯＰと下位４ビット（＜３：０＞）のＰＯＰがとりうる値の全組合せを図３−１に示す。同図に示すように、この場合の組合せは８通り存在する。【００４１】
一方、８ビットの入力データのＰＯＰが１０進数表現により「２」、「３」、「４」、「５」、「８」のいずれかとなる場合に、上位４ビットのＰＯＰと下位４ビットのＰＯＰがとりうる値の全組合せを図３−２に示す。同図に示すように、この場合の組合せは１５通り存在する。【００４２】
このことから、上位ビットと下位ビットに分けて処理することとした場合、８ビットの入力データのＰＯＰが１０進数表現により「２」、「３」、「４」、「５」、「８」を含む１６通りの組み合わせのいずれかとなるかを判定するよりも、１０進数表現より「０」、「１」、「６」、「７」を含む８通りの組み合わせのいずれかとなるか否かを判定した方が、パリティ予測を実現するための回路量を小さくできることがわかる。【００４３】
以下の実装例の説明では、８ビットの入力データのＰＯＰが１０進数表現により「０」、「１」、「６」、「７」のいずれかとなるか否かを上位ビットと下位ビットに分けて判定する場合について説明する。なお、回路規模が問題とならない場合は、８ビットの入力データのＰＯＰが１０進数表現により「２」、「３」、「４」、「５」、「８」のいずれかとなるか否かを上位ビットと下位ビットに分けて判定することとしてもよいし、また、８ビットの入力データを４ビットずつ上位ビット、下位ビットに分けずに判定してもよい。【００４４】
次に、本実施例に係るパリティ予測方式を実装したポピュレーションカウント回路について説明する。図４は、８ビットの入力データに対応するポピュレーションカウント回路の構成を示すブロック図である。同図に示すように、ポピュレーションカウント回路１００は、８ビットの入力データ（Ｘ＜７：０＞）とそのパリティ（Ｘ＜Ｐ＞）を入力とし、ポピュレーションカウントの演算結果（Ｚ＜３：０＞）とそのパリティ（Ｚ＜Ｐ＞）を出力する回路である。【００４５】
ポピュレーションカウント回路１００は、ポピュレーションカウント演算部１０００と、パリティ予測部２０００と、パリティ反転回路３０００とを有する。【００４６】
ポピュレーションカウント演算部１０００は、８ビットの入力データ（Ｘ＜７：０＞）を入力とし、このデータのＰＯＰの演算処理を実行し、演算結果（Ｚ＜３：０＞）を出力する処理部であり、キャリー保存加算器であるＣＳＡ（Carry  Save  Adder）と半加算器であるＨＡ（Half  Adder）の組合せ等によって構成される。なお、ポピュレーションカウント演算部１０００の構成は、図４に示した通りである必要はなく、例えば、特許文献１において示されている構成とすることもできる。【００４７】
パリティ予測部２０００とパリティ反転回路３０００は、本実施例に係るパリティ予測方式を用いて演算結果のパリティを予測する処理部である。パリティ予測部２０００は、８ビットの入力データ（Ｘ＜７：０＞）を入力としてデコードを行うことにより、このデータのＰＯＰが１０進数表現により「０」、「１」、「６」、「７」のいずれかである場合はＩＮＶ＿Ｐ信号として０を出力し、さもなければ１を出力する。【００４８】
そして、パリティ反転回路３０００は、ＩＮＶ＿Ｐ信号が０の場合は、入力データのパリティ（Ｘ＜Ｐ＞）をそのまま演算結果のパリティ（Ｚ＜Ｐ＞）として出力し、ＩＮＶ＿Ｐ信号が１の場合は、入力データのパリティ（Ｘ＜Ｐ＞）を反転させたものを演算結果のパリティ（Ｚ＜Ｐ＞）として出力する。【００４９】
図５−１〜５−３は、パリティ予測部２０００の構成を示すブロック図である。図５−１は、入力データの上位４ビット（Ｘ＜７：４＞）のＰＯＰのデコードを行うことにより判定するための回路構成を示している。【００５０】
ＮＯＴ回路２１１１〜２１１４は、それぞれ、入力ビットＸ＜７＞〜Ｘ＜４＞を反転させる回路である。【００５１】
ＡＮＤ回路２１２１、２１３１〜２１３４、２１４１〜２１４６、２１５１〜２１５４および２１６１は、入力ビットＸ＜７＞〜Ｘ＜４＞、もしくは、この一部ないし全部がＮＯＴ回路２１１１〜２１１４によって反転させられた信号を入力としてデコードを行うことにより、入力ビットＸ＜７＞〜Ｘ＜４＞のビットのパターンに応じて一つの回路のみが１を出力し、他の回路は０を出力するようにデコード回路として構成されている。【００５２】
ＡＮＤ回路２１２１は、上位４ビットのＰＯＰが０の場合、すなわち、全てのビットが０の場合に１を出力する。この出力は、ＰＯＰＣ＿７４＿０信号となる。【００５３】
ＡＮＤ回路２１３１〜２１３４は、上位４ビットのＰＯＰが１の場合、すなわち、１の値をもつビットが１つ存在する場合にいずれか一つが１を出力する。これらの出力は、ＯＲ回路２１３５によって論理和演算され、ＰＯＰＣ＿７４＿１信号となる。【００５４】
ＡＮＤ回路２１４１〜２１４６は、上位４ビットのＰＯＰが２の場合、すなわち、１の値をもつビットが２つ存在する場合にいずれか一つが１を出力する。これらの出力は、ＯＲ回路２１４７によって論理和演算され、ＰＯＰＣ＿７４＿２信号となる。【００５５】
ＡＮＤ回路２１５１〜２１５４は、上位４ビットのＰＯＰが３の場合、すなわち、１の値をもつビットが３つ存在する場合にいずれか一つが１を出力する。これらの出力は、ＯＲ回路２１５５によって論理和演算され、ＰＯＰＣ＿７４＿３信号となる。【００５６】
ＡＮＤ回路２１６１は、上位４ビットのＰＯＰが４の場合、すなわち、全てのビットが１の場合に１を出力する。この出力は、ＰＯＰＣ＿７４＿４信号となる。【００５７】
図５−２は、入力データの下位４ビット（Ｘ＜３：０＞）のＰＯＰを判別するための回路構成を示している。回路の構成は、図５−１に示した構成と同様であるため、ここでは出力する信号についてのみ説明する。【００５８】
ＰＯＰＣ＿３０＿０信号は、下位４ビットのＰＯＰが０の場合に１となり、ＰＯＰＣ＿３０＿１信号は、下位４ビットのＰＯＰが１の場合に１となる。ＰＯＰＣ＿３０＿２信号は、下位４ビットのＰＯＰが２の場合に１となり、ＰＯＰＣ＿３０＿３信号は、下位４ビットのＰＯＰが３の場合に１となる。そして、ＰＯＰＣ＿３０＿４信号は、下位４ビットのＰＯＰが１０進数表現により「４」の場合に１となる。【００５９】
図５−３は、８ビットの入力データ（Ｘ＜７：０＞）のＰＯＰが１０進数表現により「０」、「１」、「６」、「７」のいずれかとなるか否かを判定するための回路構成を示している。【００６０】
ＡＮＤ回路２３１１、２３２１〜２３２２、２３３１〜２３３３および２３４１〜２３４２は、上位４ビット（Ｘ＜７：４＞）のＰＯＰの判定結果と下位４ビット（Ｘ＜３：０＞）のＰＯＰの判定結果の組合せに基づいて、８ビットの入力データ（Ｘ＜７：０＞）のＰＯＰの値を判定する。【００６１】
ＡＮＤ回路２３１１は、上位４ビットのＰＯＰが０であり、下位４ビットのＰＯＰが０の場合、すなわち、ＰＯＰＣ＿７４＿０信号が１であり、ＰＯＰＣ＿３０＿０信号が１の場合に１を出力する。この出力は、ＰＯＰＣ＿７０＿０信号となる。【００６２】
ＡＮＤ回路２３２１は、上位４ビットのＰＯＰが０であり、下位４ビットのＰＯＰが１０進数表現により「１」の場合、すなわち、ＰＯＰＣ＿７４＿０信号が１であり、ＰＯＰＣ＿３０＿１信号が１の場合に１を出力する。【００６３】
ＡＮＤ回路２３２２は、上位４ビットのＰＯＰが１であり、下位４ビットのＰＯＰが１０進数表現により「０」の場合、すなわち、ＰＯＰＣ＿７４＿１信号が１であり、ＰＯＰＣ＿３０＿０信号が１の場合に１を出力する。ＡＮＤ回路２３２１およびＡＮＤ回路２３２２の出力は、ＯＲ回路２３２３によって論理和演算され、ＰＯＰＣ＿７０＿１信号となる。【００６４】
ＡＮＤ回路２３３１は、上位４ビットのＰＯＰが４であり、下位４ビットのＰＯＰが１０進数表現により「２」の場合、すなわち、ＰＯＰＣ＿７４＿４信号が１であり、ＰＯＰＣ＿３０＿２信号が１の場合に１を出力する。【００６５】
ＡＮＤ回路２３３２は、上位４ビットのＰＯＰが３であり、下位４ビットのＰＯＰが１０進数表現により「３」の場合、すなわち、ＰＯＰＣ＿７４＿３信号が１であり、ＰＯＰＣ＿３０＿３信号が１の場合に１を出力する。【００６６】
ＡＮＤ回路２３３３は、上位４ビットのＰＯＰが２であり、下位４ビットのＰＯＰが１０進数表現により「４」の場合、すなわち、ＰＯＰＣ＿７４＿２信号が１であり、ＰＯＰＣ＿３０＿４信号が１の場合に１を出力する。ＡＮＤ回路２３３１、ＡＮＤ回路２３３２およびＡＮＤ回路２３３３の出力は、ＯＲ回路２３３４によって論理和演算され、ＰＯＰＣ＿７０＿６信号となる。【００６７】
ＡＮＤ回路２３４１は、上位４ビットのＰＯＰが１０進数表現により「４」であり、下位４ビットのＰＯＰが１０進数表現により「３」の場合、すなわち、ＰＯＰＣ＿７４＿４信号が１であり、ＰＯＰＣ＿３０＿３信号が１の場合に１を出力する。【００６８】
ＡＮＤ回路２３４２は、上位４ビットのＰＯＰが１０進数表現により「３」であり、下位４ビットのＰＯＰが１０進数表現により「４」の場合、すなわち、ＰＯＰＣ＿７４＿３信号が１であり、ＰＯＰＣ＿３０＿４信号が１の場合に１を出力する。ＡＮＤ回路２３４１およびＡＮＤ回路２３４２の出力は、ＯＲ回路２３４３によって論理和演算され、ＰＯＰＣ＿７０＿７信号となる。【００６９】
ＮＯＲ回路２３５１は、ＰＯＰＣ＿７０＿０信号、ＰＯＰＣ＿７０＿１信号、ＰＯＰＣ＿７０＿６信号およびＰＯＰＣ＿７０＿７信号の論理和演算をおこない、その結果を反転させたものをＩＮＶ＿Ｐ信号として出力する。【００７０】
図５−１〜５−３に示した構成により、パリティ予測部２０００の出力であるＩＮＶ＿Ｐ信号は、８ビットの入力データ（Ｘ＜７：０＞）のＰＯＰが１０進数表現により「０」、「１」、「６」、「７」のいずれかである場合は０を出力し、その他の値である場合は１を出力することとなる。【００７１】
次に、本実施例に係るパリティ予測方式を６４ビットの入力データに対応するポピュレーションカウント回路に適用した例について説明する。図６は、６４ビットの入力データに対応するポピュレーションカウント回路の構成を示すブロック図である。同図に示すように、ポピュレーションカウント回路１０は、６４ビットの入力データ（Ｘ＜６３：００＞）とその８ビット毎のパリティ（Ｘ＜Ｐ７：Ｐ０＞）を入力とし、ポピュレーションカウントの演算結果（Ｚ＜６：０＞）とそのパリティ（Ｚ＜Ｐ＞）を出力する回路である。【００７２】
ポピュレーションカウント回路１０は、ポピュレーションカウント回路１０１ａ〜１０１ｈと、加算回路２０１ａ〜２００１ｇとを有する。【００７３】
ポピュレーションカウント回路１０１ａ〜１０１ｈは、ポピュレーションカウント回路１００と同様の回路であり、８ビットの入力データとそのパリティを入力とし、ＰＯＰとそのパリティを出力する。【００７４】
ポピュレーションカウント回路１０１ａは、入力データの最下位の８ビット（Ｘ＜０７：００＞）とそのパリティ（Ｘ＜Ｐ０＞）を入力とする。ポピュレーションカウント回路１０１ｂは、その上位８ビット（Ｘ＜１５：０８＞）とそのパリティ（Ｘ＜Ｐ１＞）を入力とする。ポピュレーションカウント回路１０１ｃは、その上位８ビット（Ｘ＜２３：１６＞）とそのパリティ（Ｘ＜Ｐ２＞）を入力とする。ポピュレーションカウント回路１０１ｄは、その上位８ビット（Ｘ＜３１：２４＞）とそのパリティ（Ｘ＜Ｐ３＞）を入力とする。【００７５】
ポピュレーションカウント回路１０１ｅは、その上位８ビット（Ｘ＜３９：３２＞）とそのパリティ（Ｘ＜Ｐ４＞）を入力とする。ポピュレーションカウント回路１０１ｆは、その上位８ビット（Ｘ＜４７：４０＞）とそのパリティ（Ｘ＜Ｐ５＞）を入力とする。ポピュレーションカウント回路１０１ｇは、その上位８ビット（Ｘ＜５５：４８＞）とそのパリティ（Ｘ＜Ｐ６＞）を入力とする。そして、ポピュレーションカウント回路１０１ｈは、入力データの最上位の８ビット（Ｘ＜６３：５６＞）とそのパリティ（Ｘ＜Ｐ７＞）を入力とする。【００７６】
加算回路２０１ａ〜２０１ｇは、ＰＯＰとパリティの加算をおこなう回路であり、ＰＯＰの加算結果とパリティの加算結果を出力する。【００７７】
加算回路２０１ａは、ポピュレーションカウント回路１０１ａの加算結果およびパリティ結果とポピュレーションカウント回路１０１ｂの加算結果およびパリティ結果をそれぞれ加算し、加算回路２０１ｂは、ポピュレーションカウント回路１０１ｃの加算結果およびパリティ結果とポピュレーションカウント回路１０１ｄの加算結果およびパリティ結果をそれぞれ加算する。加算回路２０１ｃは、ポピュレーションカウント回路１０１ｅの加算結果およびパリティ結果とポピュレーションカウント回路１０１ｆの加算結果およびパリティ結果をそれぞれ加算し、加算回路２０１ｄは、ポピュレーションカウント回路１０１ｇの加算結果およびパリティ結果とポピュレーションカウント回路１０１ｈの加算結果およびパリティ結果をそれぞれ加算する。【００７８】
そして、加算回路２０１ｅは、加算回路２０１ａの加算結果およびパリティ結果と加算回路２０１ｂの加算結果およびパリティ結果をそれぞれ加算し、加算回路２０１ｆは、加算回路２０１ｃの加算結果およびパリティ結果と加算回路２０１ｄの加算結果およびパリティ結果をそれぞれ加算し、加算回路２０１ｇは、加算回路２０１ｅの加算結果およびパリティ結果と加算回路２０１ｆの加算結果およびパリティ結果をそれぞれ加算する。こうして得られた加算回路２０１ｇの出力結果が、ポピュレーションカウントの演算結果（Ｚ＜６：０＞）とそのパリティ（Ｚ＜Ｐ＞）となる。【００７９】
このように、８ビットよりも大きなビット幅の入力データに対しても、８ビットの入力データに対応したポピュレーションカウント回路を並列に並べ、その出力結果を加算する加算回路を配置することでＰＯＰの演算とそのパリティの予測をおこなうことができる。この手法にを用いれば、図７に示すように、６４ビットよりも大きなビット幅に対応したポピュレーションカウント回路を実現することもできる。
【産業上の利用可能性】
【００８０】
以上のように、本発明にかかるパリティ生成回路、計数回路および計数方法は、２進数データに含まれる「１」の数の計数に有用であり、特に、演算処理のサイクルタイムに影響を与えることなく、ポピュレーションカウントの演算結果のパリティを高速に求めることが必要な場合に適している。
【図１−１】
0004567753.tif 000002
【図１−２】
0004567753.tif 000003
【図１−３】
0004567753.tif 000004
【図２】
0004567753.tif 000005
【図３−１】
0004567753.tif 000006
【図３−２】
0004567753.tif 000007
【図４】
0004567753.tif 000008
【図５−１】
0004567753.tif 000009
【図５−２】
0004567753.tif 000010
【図５−３】
0004567753.tif 000011
【図６】
0004567753.tif 000012
【図７】
0004567753.tif 000013