JP4567753B2 - パリティ生成回路、計数回路および計数方法 - Google Patents

パリティ生成回路、計数回路および計数方法 Download PDF

Info

Publication number
JP4567753B2
JP4567753B2 JP2007554774A JP2007554774A JP4567753B2 JP 4567753 B2 JP4567753 B2 JP 4567753B2 JP 2007554774 A JP2007554774 A JP 2007554774A JP 2007554774 A JP2007554774 A JP 2007554774A JP 4567753 B2 JP4567753 B2 JP 4567753B2
Authority
JP
Japan
Prior art keywords
parity
data
circuit
counting
bits
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007554774A
Other languages
English (en)
Other versions
JPWO2007083377A1 (ja
Inventor
英男 山下
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2007083377A1 publication Critical patent/JPWO2007083377A1/ja
Application granted granted Critical
Publication of JP4567753B2 publication Critical patent/JP4567753B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/607Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers number-of-ones counters, i.e. devices for counting the number of input lines set to ONE among a plurality of input lines, also called bit counters or parallel counters
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6575Implementations based on combinatorial logic, e.g. Boolean circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Description

本発明は、2進数データに含まれる「1」の数を計数するパリティ生成回路、計数回路および計数方法に関し、特に、ポピュレーションカウントの演算処理に影響を与えることなく、ポピュレーションカウントの演算結果のパリティを高速に求めることができるパリティ生成回路、計数回路および計数方法に関する。
2進数データに含まれる「1」の数を計数する演算をポピュレーションカウント(Population Count)といい、一部のCPU(Central Processing Unit)は、この演算を実行するための命令であるPOPC(POPulation Count)命令を備える。
POPC命令は、かつては使用頻度が低かったため、命令セットとして実装されずソフトウェアによるエミュレーションによって実現される場合もあったが、近年、ハミング距離(2つのビット列において相違するビット数)等の計算に利用されることが多くなり、命令処理の高速化のため、ハードウェアによる実現へと切り替えられることが多くなっている。POPC命令を実行するための回路は、例えば、特許文献1にて開示されている技術を利用することで実現することができる。
特開2005−165793号公報
ところで、信頼性を向上させるため、演算処理の入出力データにパリティを付加し、このパリティを用いてデータの正当性を保障するCPUが存在する。かかるCPUにおいてPOPC命令をハードウェアで実現する場合、POPC命令の演算結果のパリティをいかにして求めるかが問題となる。
例えば、特許文献1にて開示されている技術を利用してポピュレーションカウントの演算をおこない、その後に別の回路を用いて演算結果のパリティを演算することとすると、パリティの演算をおこなう処理の分だけ命令の処理時間が長くなる。このような方式では、命令処理の高速化のためにPOPC命令をハードウェアによって実装する意義が弱くなる。従って、演算処理にかかるサイクルタイムに影響を与えないようにするため、演算処理と同等またはそれ以下のサイクルタイムでパリティの演算処理を行う必要が有り、そのためには入力データからPOPC命令処理の結果に対するパリティを予測する必要がある。
POPC命令の処理時間を増大させることなく演算結果のパリティを求めるには、ポピュレーションカウントの計数処理と平行して、別の回路においてパリティの予測をおこなう必要がある。このパリティの予測は、POPC命令の入力データとそのパリティから演算結果のパリティを予測するものでなければならない。
本発明は、上記に鑑みてなされたものであって、ポピュレーションカウントの演算処理に影響を与えることなく、ポピュレーションカウントの演算結果のパリティを高速に求めることができるパリティ生成回路、計数回路および計数方法を提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、データと前記データのパリティを入力とし、前記データをn進数(nは2以上の自然数)により表現した場合における特定情報の計数情報のパリティを出力するパリティ生成回路であって、前記データをn進数で表現した場合における前記特定情報の数が、特定の数であることを判定する判定手段と、前記判定手段による判定結果に応じて、前記データのパリティの値又は前記パリティを反転させた値のいずれかを前記計数情報のパリティとして出力する反転手段とを有することを特徴とする。
また、本発明の前記判定手段は、8ビットのデータをn進数で表現した場合における前記特定情報の数が、0、1、6、7のいずれかであることをデコードすることを特徴とする。
また、本発明の前記判定手段は、8ビットのデータをn進数で表現した場合における前記特定情報の数が、0、1、6、7のいずれかであるかを、前記データの上位4ビットをn進数により表現した場合における前記特定情報の数と、該データの下位4ビットをn進数により表現した場合における前記特定情報の数との組合せに基づいて判定することを特徴とする。
また、本発明は、データと前記データのパリティを入力とし、前記データをn進数(nは2以上の自然数)により表現した場合における1の計数情報とともに前記計数情報のパリティを出力する計数回路であって、前記データをn進数で表現した場合における特定情報の数が、特定の数であることを判定する判定手段と、前記判定手段による判定結果に応じて、前記データのパリティの値又は前記パリティを反転させた値のいずれかを前記計数情報のパリティとして出力する反転手段とを有するパリティ生成回路を備えることを特徴とする。
また、本発明の前記判定手段は、8ビットのデータをn進数で表現した場合における前記特定情報の数が、0、1、6、7のいずれかであることをデコードすることを特徴とする。
また、本発明の前記判定手段は、8ビットのデータをn進数で表現した場合における前記特定情報の数が、0、1、6、7のいずれかであるかを、前記データの上位4ビットをn進数により表現した場合における前記特定情報の数と、該データの下位4ビットをn進数により表現した場合における前記特定情報の数との組合せに基づいて判定することを特徴とする。
また、本発明は、データと前記データのパリティを入力とし、前記データをn進数(nは2以上の自然数)により表現した場合における1の計数情報とともに前記計数情報のパリティを出力する計数方法であって、前記データをn進数で表現した場合における特定情報の数が、特定の数であることを判定する判定ステップと、前記判定手段による判定結果に応じて、前記データのパリティの値又は前記パリティを反転させた値のいずれかを前記計数情報のパリティとして出力する反転ステップとを有することを特徴とする。
また、本発明の前記判定ステップは、8ビットのデータをn進数で表現した場合における前記特定情報の数が、0、1、6、7のいずれかであることをデコードすることを特徴とする。
また、本発明の前記判定ステップは、8ビットのデータをn進数で表現した場合における前記特定情報の数が、0、1、6、7のいずれかであるかを、前記データの上位4ビットをn進数により表現した場合における前記特定情報の数と、該データの下位4ビットをn進数により表現した場合における前記特定情報の数との組合せに基づいて判定することを特徴とする。
また、本発明は、N(N≧2である自然数)ビットのデータと前記データのパリティを入力とし、前記データをn進数(nは2以上の自然数)により表現した場合における1の計数情報とともに前記計数情報のパリティを出力する計数方法であって、前記Nビットのデータをn(N>n≧1である自然数)ビットデータ毎に分割する分割ステップと、前記nビットデータをn進数で表現した場合における特定情報の数が、特定の数であることを判定する判定ステップと、前記判定手段による判定結果に応じて、前記nビットデータのパリティの値又は前記nビットデータのパリティを反転させた値のいずれかを前記計数情報のパリティとして出力する反転ステップと、前記分割されたnビットデータ毎の前記計数情報をそれぞれ加算する計数情報加算ステップと、前記分割されたnビットデータ毎の前記計数情報のパリティをそれぞれ加算するパリティ加算ステップとを有することを特徴とする。
この発明によれば、入力データが特定のビットパターンであることを判定することにより、ポピュレーションカウントの演算結果のパリティを予測するように構成したので、ポピュレーションカウントの演算処理に影響を与えることなく、ポピュレーションカウントの演算結果のパリティを高速に予測することができる。
また、本発明は、上記の発明において、前記判定手段は、前記8ビットのデータを2進数で表現した場合における1の数が、0、1、6、7のいずれかであるかを、該データの上位4ビットを2進数で表現した場合における1の数と、該データの下位4ビットを2進数で表現した場合における1の数との組合せに基づいて判定することを特徴とする。
この発明によれば、入力データを4ビットに分割してビットパターンを判定するように構成したので、全ビットを分割せずにビットパターンの判定を行う場合と比較して、回路規模を小さくすることができる。
また、本発明は、上記の発明において、Nビットのデータとそのパリティを入力とし、該データを2進数で表現した場合における1の数とそのパリティを出力するポピュレーションカウント回路であって、請求項1に記載のポピュレーションカウント回路を複数備え、これらの請求項1に記載のポピュレーションカウント回路の出力結果を加算することによって出力するデータを求めることを特徴とする。
この発明によれば、8ビットのポピュレーションカウント回路を組み合わせることによってNビットのポピュレーションカウントの演算をおこなうことができるように構成したので、どのようなビット幅のデータにも対応したポピュレーションカウント回路も実現することができる。
本発明によれば、入力データが特定のビットパターンであることを判定することにより、ポピュレーションカウントの演算結果のパリティを予測するように構成したので、ポピュレーションカウントの演算処理に影響を与えることなく、ポピュレーションカウントの演算結果のパリティを高速に予測することができるという効果を奏する。
また、本発明によれば、入力データを4ビットに分割してビットパターンを判定するように構成したので、全ビットを分割せずにビットパターンの判定を行う場合と比較して、回路規模を小さくすることができるという効果を奏する。
また、本発明によれば、8ビットのポピュレーションカウント回路を組み合わせることによってNビットのポピュレーションカウントの演算をおこなうことができるように構成したので、どのようなビット幅のデータにも対応したポピュレーションカウント回路も実現することができるという効果を奏する。
図1−1は、8ビットの入力データとPOPとの対応を示す図である。 図1−2は、8ビットの入力データとPOPとの対応を示す図である。 図1−3は、8ビットの入力データとPOPとの対応を示す図である。 図2は、入力データのパリティとPOPのパリティが一致するデータを示す図である。 図3−1は、8ビットの入力データのPOPが「0」、「1」、「6」、「7」のいずれかとなる場合における上位4ビットのPOPと下位4ビットのPOPの組合せを示す図である。 図3−2は、8ビットの入力データのPOPが「2」、「3」、「4」、「5」、「8」のいずれかとなる場合における上位4ビットのPOPと下位4ビットのPOPの組合せを示す図である。 図4は、8ビットの入力データに対応するポピュレーションカウント回路の構成を示すブロック図である。 図5−1は、パリティ予測部の構成を示すブロック図である。 図5−2は、パリティ予測部の構成を示すブロック図である。 図5−3は、パリティ予測部の構成を示すブロック図である。 図6は、64ビットの入力データに対応するポピュレーションカウント回路の構成を示すブロック図である。 図7は、Nビットの入力データに対応するポピュレーションカウント回路の構成を示すブロック図である。
符号の説明
10、20 ポピュレーションカウント回路
100 ポピュレーションカウント回路
101a〜101h ポピュレーションカウント回路
102a〜102n ポピュレーションカウント回路
201a〜201g 加算回路
202a〜202x 加算回路
1000 ポピュレーションカウント演算部
2000 パリティ予測部
2111〜2114 NOT回路
2121 AND回路
2131〜2134 AND回路
2135 OR回路
2141〜2146 AND回路
2147 OR回路
2151〜2154 AND回路
2155 OR回路
2161 AND回路
2211〜2214 NOT回路
2221 AND回路
2231〜2234 AND回路
2235 OR回路
2241〜2246 AND回路
2247 OR回路
2251〜2254 AND回路
2255 OR回路
2261 AND回路
2311 AND回路
2321、2322 AND回路
2323 OR回路
2331〜2333 AND回路
2334 OR回路
2341、2342 AND回路
2343 OR回路
2351 NOR回路
3000 パリティ反転回路
以下に、本発明にかかるパリティ生成回路、計数回路および計数方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
まず、本実施例に係るパリティ予測方式の原理について説明する。図1−1〜1−3は、8ビットの入力データと、そのデータを2進数で表現した場合における「1」の数(以下、「POP」という)との対応を示す図である。
同図は、8ビットの入力データ(X<7:0>)がとりうる「00000000」から「11111111」までの256通りの値に対して、入力データのパリティ(X<P>)と、POP(Z<3:0>)と、POPのパリティ(Z<P>)とがどのような値をとるかを示している。
入力データが8ビットであるため、POPがとりうる値は、「0000(10進数表現では0)」から「1000(10進数表現では8)」までである。また、同図においては奇数パリティが採用されており、「00000000」という8ビットの入力データに対しては、「1」がパリティとして設定されている。そして、この入力データのPOPである「0000」に対しては、「1」がパリティとして設定されている。
図1−1〜1−3に示したデータのうち、入力データのパリティとPOPのパリティが一致するデータ(行の先頭に「*」を付与したデータ)を抜粋したものを図2に示す。同図を見ればわかるように、入力データのパリティとPOPのパリティが一致する場合、POPは、「0000(10進数表現では0)」、「0001(10進数表現では1)」、「0110(10進数表現では6)」、「0111(10進数表現では7)」のいずれかの値になっている。
一方、図1−1〜1−3に示したデータのうち、入力データのパリティとPOPのパリティが一致しないデータ(行の先頭に「*」を付与していないデータ)を見ると、POPは、「0010(10進数表現では2)」、「0011(10進数表現では3)」、「0100(10進数表現では4)」、「0101(10進数表現では5)」、「1000(10進数表現では8)」のいずれかの値になっている。
この規則性を利用することにより、POPのパリティを以下のようにして予測することができる。すなわち、8ビットの入力データに対してPOPを求める場合、POPが「0」、「1」、「6」、「7」のいずれかであれば、入力データのパリティと同一の値がPOPのパリティであると予測される。そして、POPがその他の値であれば、入力データのパリティを反転させた値がPOPのパリティであると予測される。
8ビット以上の幅をもった入力データのPOPを求める場合は、入力データを8ビットずつに分解して処理することによってパリティを予測することができる。具体的には、8ビットに分解した各データのPOPのパリティを上記の規則性に従って予測し、その予測結果を加算することにより入力データのPOPのパリティを予測することができる。
ところで、既に述べたように、本実施例に係るパリティ予測方式は、CPUのPOPC命令において、POPの計数処理と平行して実行することが想定されており、POPC命令の実行時間を増大させないことを課題としている。このため、本実施例に係るパリティ予測方式によるパリティ予測処理に係るサイクルタイムは、POPの計数処理に係るサイクルタイム以下であることが必要とされる。パリティ予測処理に係るサイクルタイムが、POPの計数処理に係るサイクルタイム以下であれば、かかるパリティ予測処理がPOPの計数処理によってマスクされ、POP命令の実行時間に影響を与えることがないからである。
本実施例に係るパリティ予測方式においては、入力データのPOPを判定する必要があるが、この判定は、POPが10進数表現により「0」、「1」、「6」、「7」のいずれかであるか、もしくは、10進数表現により「2」、「3」、「4」、「5」、「8」のいずれかであるかが分かれば十分である。したがって、特許文献1で開示されているように加算器の組合せによってPOPを演算する必要はなく、デコーダをもちいた判定回路として実現することにより、実行速度を高速化することができる。
しかしながら、8ビットの幅をもった入力データのPOPの判定をデコーダによって実装すると、回路規模が大きくなってしまうという問題がある。そこで、8ビットの入力データを4ビットずつの上位ビット、下位ビットに分けて処理する方式をとる。
8ビットの入力データのPOPが10進数表現により「0」、「1」、「6」、「7」のいずれかとなる場合に、上位4ビット(<7:4>)のPOPと下位4ビット(<3:0>)のPOPがとりうる値の全組合せを図3−1に示す。同図に示すように、この場合の組合せは8通り存在する。
一方、8ビットの入力データのPOPが10進数表現により「2」、「3」、「4」、「5」、「8」のいずれかとなる場合に、上位4ビットのPOPと下位4ビットのPOPがとりうる値の全組合せを図3−2に示す。同図に示すように、この場合の組合せは15通り存在する。
このことから、上位ビットと下位ビットに分けて処理することとした場合、8ビットの入力データのPOPが10進数表現により「2」、「3」、「4」、「5」、「8」を含む16通りの組み合わせのいずれかとなるかを判定するよりも、10進数表現より「0」、「1」、「6」、「7」を含む8通りの組み合わせのいずれかとなるか否かを判定した方が、パリティ予測を実現するための回路量を小さくできることがわかる。
以下の実装例の説明では、8ビットの入力データのPOPが10進数表現により「0」、「1」、「6」、「7」のいずれかとなるか否かを上位ビットと下位ビットに分けて判定する場合について説明する。なお、回路規模が問題とならない場合は、8ビットの入力データのPOPが10進数表現により「2」、「3」、「4」、「5」、「8」のいずれかとなるか否かを上位ビットと下位ビットに分けて判定することとしてもよいし、また、8ビットの入力データを4ビットずつ上位ビット、下位ビットに分けずに判定してもよい。
次に、本実施例に係るパリティ予測方式を実装したポピュレーションカウント回路について説明する。図4は、8ビットの入力データに対応するポピュレーションカウント回路の構成を示すブロック図である。同図に示すように、ポピュレーションカウント回路100は、8ビットの入力データ(X<7:0>)とそのパリティ(X<P>)を入力とし、ポピュレーションカウントの演算結果(Z<3:0>)とそのパリティ(Z<P>)を出力する回路である。
ポピュレーションカウント回路100は、ポピュレーションカウント演算部1000と、パリティ予測部2000と、パリティ反転回路3000とを有する。
ポピュレーションカウント演算部1000は、8ビットの入力データ(X<7:0>)を入力とし、このデータのPOPの演算処理を実行し、演算結果(Z<3:0>)を出力する処理部であり、キャリー保存加算器であるCSA(Carry Save Adder)と半加算器であるHA(Half Adder)の組合せ等によって構成される。なお、ポピュレーションカウント演算部1000の構成は、図4に示した通りである必要はなく、例えば、特許文献1において示されている構成とすることもできる。
パリティ予測部2000とパリティ反転回路3000は、本実施例に係るパリティ予測方式を用いて演算結果のパリティを予測する処理部である。パリティ予測部2000は、8ビットの入力データ(X<7:0>)を入力としてデコードを行うことにより、このデータのPOPが10進数表現により「0」、「1」、「6」、「7」のいずれかである場合はINV_P信号として0を出力し、さもなければ1を出力する。
そして、パリティ反転回路3000は、INV_P信号が0の場合は、入力データのパリティ(X<P>)をそのまま演算結果のパリティ(Z<P>)として出力し、INV_P信号が1の場合は、入力データのパリティ(X<P>)を反転させたものを演算結果のパリティ(Z<P>)として出力する。
図5−1〜5−3は、パリティ予測部2000の構成を示すブロック図である。図5−1は、入力データの上位4ビット(X<7:4>)のPOPのデコードを行うことにより判定するための回路構成を示している。
NOT回路2111〜2114は、それぞれ、入力ビットX<7>〜X<4>を反転させる回路である。
AND回路2121、2131〜2134、2141〜2146、2151〜2154および2161は、入力ビットX<7>〜X<4>、もしくは、この一部ないし全部がNOT回路2111〜2114によって反転させられた信号を入力としてデコードを行うことにより、入力ビットX<7>〜X<4>のビットのパターンに応じて一つの回路のみが1を出力し、他の回路は0を出力するようにデコード回路として構成されている。
AND回路2121は、上位4ビットのPOPが0の場合、すなわち、全てのビットが0の場合に1を出力する。この出力は、POPC_74_0信号となる。
AND回路2131〜2134は、上位4ビットのPOPが1の場合、すなわち、1の値をもつビットが1つ存在する場合にいずれか一つが1を出力する。これらの出力は、OR回路2135によって論理和演算され、POPC_74_1信号となる。
AND回路2141〜2146は、上位4ビットのPOPが2の場合、すなわち、1の値をもつビットが2つ存在する場合にいずれか一つが1を出力する。これらの出力は、OR回路2147によって論理和演算され、POPC_74_2信号となる。
AND回路2151〜2154は、上位4ビットのPOPが3の場合、すなわち、1の値をもつビットが3つ存在する場合にいずれか一つが1を出力する。これらの出力は、OR回路2155によって論理和演算され、POPC_74_3信号となる。
AND回路2161は、上位4ビットのPOPが4の場合、すなわち、全てのビットが1の場合に1を出力する。この出力は、POPC_74_4信号となる。
図5−2は、入力データの下位4ビット(X<3:0>)のPOPを判別するための回路構成を示している。回路の構成は、図5−1に示した構成と同様であるため、ここでは出力する信号についてのみ説明する。
POPC_30_0信号は、下位4ビットのPOPが0の場合に1となり、POPC_30_1信号は、下位4ビットのPOPが1の場合に1となる。POPC_30_2信号は、下位4ビットのPOPが2の場合に1となり、POPC_30_3信号は、下位4ビットのPOPが3の場合に1となる。そして、POPC_30_4信号は、下位4ビットのPOPが10進数表現により「4」の場合に1となる。
図5−3は、8ビットの入力データ(X<7:0>)のPOPが10進数表現により「0」、「1」、「6」、「7」のいずれかとなるか否かを判定するための回路構成を示している。
AND回路2311、2321〜2322、2331〜2333および2341〜2342は、上位4ビット(X<7:4>)のPOPの判定結果と下位4ビット(X<3:0>)のPOPの判定結果の組合せに基づいて、8ビットの入力データ(X<7:0>)のPOPの値を判定する。
AND回路2311は、上位4ビットのPOPが0であり、下位4ビットのPOPが0の場合、すなわち、POPC_74_0信号が1であり、POPC_30_0信号が1の場合に1を出力する。この出力は、POPC_70_0信号となる。
AND回路2321は、上位4ビットのPOPが0であり、下位4ビットのPOPが10進数表現により「1」の場合、すなわち、POPC_74_0信号が1であり、POPC_30_1信号が1の場合に1を出力する。
AND回路2322は、上位4ビットのPOPが1であり、下位4ビットのPOPが10進数表現により「0」の場合、すなわち、POPC_74_1信号が1であり、POPC_30_0信号が1の場合に1を出力する。AND回路2321およびAND回路2322の出力は、OR回路2323によって論理和演算され、POPC_70_1信号となる。
AND回路2331は、上位4ビットのPOPが4であり、下位4ビットのPOPが10進数表現により「2」の場合、すなわち、POPC_74_4信号が1であり、POPC_30_2信号が1の場合に1を出力する。
AND回路2332は、上位4ビットのPOPが3であり、下位4ビットのPOPが10進数表現により「3」の場合、すなわち、POPC_74_3信号が1であり、POPC_30_3信号が1の場合に1を出力する。
AND回路2333は、上位4ビットのPOPが2であり、下位4ビットのPOPが10進数表現により「4」の場合、すなわち、POPC_74_2信号が1であり、POPC_30_4信号が1の場合に1を出力する。AND回路2331、AND回路2332およびAND回路2333の出力は、OR回路2334によって論理和演算され、POPC_70_6信号となる。
AND回路2341は、上位4ビットのPOPが10進数表現により「4」であり、下位4ビットのPOPが10進数表現により「3」の場合、すなわち、POPC_74_4信号が1であり、POPC_30_3信号が1の場合に1を出力する。
AND回路2342は、上位4ビットのPOPが10進数表現により「3」であり、下位4ビットのPOPが10進数表現により「4」の場合、すなわち、POPC_74_3信号が1であり、POPC_30_4信号が1の場合に1を出力する。AND回路2341およびAND回路2342の出力は、OR回路2343によって論理和演算され、POPC_70_7信号となる。
NOR回路2351は、POPC_70_0信号、POPC_70_1信号、POPC_70_6信号およびPOPC_70_7信号の論理和演算をおこない、その結果を反転させたものをINV_P信号として出力する。
図5−1〜5−3に示した構成により、パリティ予測部2000の出力であるINV_P信号は、8ビットの入力データ(X<7:0>)のPOPが10進数表現により「0」、「1」、「6」、「7」のいずれかである場合は0を出力し、その他の値である場合は1を出力することとなる。
次に、本実施例に係るパリティ予測方式を64ビットの入力データに対応するポピュレーションカウント回路に適用した例について説明する。図6は、64ビットの入力データに対応するポピュレーションカウント回路の構成を示すブロック図である。同図に示すように、ポピュレーションカウント回路10は、64ビットの入力データ(X<63:00>)とその8ビット毎のパリティ(X<P7:P0>)を入力とし、ポピュレーションカウントの演算結果(Z<6:0>)とそのパリティ(Z<P>)を出力する回路である。
ポピュレーションカウント回路10は、ポピュレーションカウント回路101a〜101hと、加算回路201a〜2001gとを有する。
ポピュレーションカウント回路101a〜101hは、ポピュレーションカウント回路100と同様の回路であり、8ビットの入力データとそのパリティを入力とし、POPとそのパリティを出力する。
ポピュレーションカウント回路101aは、入力データの最下位の8ビット(X<07:00>)とそのパリティ(X<P0>)を入力とする。ポピュレーションカウント回路101bは、その上位8ビット(X<15:08>)とそのパリティ(X<P1>)を入力とする。ポピュレーションカウント回路101cは、その上位8ビット(X<23:16>)とそのパリティ(X<P2>)を入力とする。ポピュレーションカウント回路101dは、その上位8ビット(X<31:24>)とそのパリティ(X<P3>)を入力とする。
ポピュレーションカウント回路101eは、その上位8ビット(X<39:32>)とそのパリティ(X<P4>)を入力とする。ポピュレーションカウント回路101fは、その上位8ビット(X<47:40>)とそのパリティ(X<P5>)を入力とする。ポピュレーションカウント回路101gは、その上位8ビット(X<55:48>)とそのパリティ(X<P6>)を入力とする。そして、ポピュレーションカウント回路101hは、入力データの最上位の8ビット(X<63:56>)とそのパリティ(X<P7>)を入力とする。
加算回路201a〜201gは、POPとパリティの加算をおこなう回路であり、POPの加算結果とパリティの加算結果を出力する。
加算回路201aは、ポピュレーションカウント回路101aの加算結果およびパリティ結果とポピュレーションカウント回路101bの加算結果およびパリティ結果をそれぞれ加算し、加算回路201bは、ポピュレーションカウント回路101cの加算結果およびパリティ結果とポピュレーションカウント回路101dの加算結果およびパリティ結果をそれぞれ加算する。加算回路201cは、ポピュレーションカウント回路101eの加算結果およびパリティ結果とポピュレーションカウント回路101fの加算結果およびパリティ結果をそれぞれ加算し、加算回路201dは、ポピュレーションカウント回路101gの加算結果およびパリティ結果とポピュレーションカウント回路101hの加算結果およびパリティ結果をそれぞれ加算する。
そして、加算回路201eは、加算回路201aの加算結果およびパリティ結果と加算回路201bの加算結果およびパリティ結果をそれぞれ加算し、加算回路201fは、加算回路201cの加算結果およびパリティ結果と加算回路201dの加算結果およびパリティ結果をそれぞれ加算し、加算回路201gは、加算回路201eの加算結果およびパリティ結果と加算回路201fの加算結果およびパリティ結果をそれぞれ加算する。こうして得られた加算回路201gの出力結果が、ポピュレーションカウントの演算結果(Z<6:0>)とそのパリティ(Z<P>)となる。
このように、8ビットよりも大きなビット幅の入力データに対しても、8ビットの入力データに対応したポピュレーションカウント回路を並列に並べ、その出力結果を加算する加算回路を配置することでPOPの演算とそのパリティの予測をおこなうことができる。この手法にを用いれば、図7に示すように、64ビットよりも大きなビット幅に対応したポピュレーションカウント回路を実現することもできる。
以上のように、本発明にかかるパリティ生成回路、計数回路および計数方法は、2進数データに含まれる「1」の数の計数に有用であり、特に、演算処理のサイクルタイムに影響を与えることなく、ポピュレーションカウントの演算結果のパリティを高速に求めることが必要な場合に適している。

Claims (10)

  1. データと前記データのパリティを入力とし、前記データをn進数(nは2以上の自然数)により表現した場合における特定情報の計数情報のパリティを出力するパリティ生成回路であって、
    前記データをn進数で表現した場合における前記特定情報の数が、特定の数であることを判定する判定手段と、
    前記判定手段による判定結果に応じて、前記データのパリティの値又は前記パリティを反転させた値のいずれかを前記計数情報のパリティとして出力する反転手段と
    を有することを特徴とするパリティ生成回路。
  2. 前記判定手段は、8ビットのデータをn進数で表現した場合における前記特定情報の数が、0、1、6、7のいずれかであることをデコードすることを特徴とする請求項1に記載のパリティ生成回路。
  3. 前記判定手段は、8ビットのデータをn進数で表現した場合における前記特定情報の数が、0、1、6、7のいずれかであるかを、前記データの上位4ビットをn進数により表現した場合における前記特定情報の数と、該データの下位4ビットをn進数により表現した場合における前記特定情報の数との組合せに基づいて判定することを特徴とする請求項1に記載のパリティ生成回路。
  4. データと前記データのパリティを入力とし、前記データをn進数(nは2以上の自然数)により表現した場合における1の計数情報とともに前記計数情報のパリティを出力する計数回路であって、
    前記データをn進数で表現した場合における特定情報の数が、特定の数であることを判定する判定手段と、
    前記判定手段による判定結果に応じて、前記データのパリティの値又は前記パリティを反転させた値のいずれかを前記計数情報のパリティとして出力する反転手段と
    を有するパリティ生成回路を備えることを特徴とする計数回路。
  5. 前記判定手段は、8ビットのデータをn進数で表現した場合における前記特定情報の数が、0、1、6、7のいずれかであることをデコードすることを特徴とする請求項4に記載の計数回路。
  6. 前記判定手段は、8ビットのデータをn進数で表現した場合における前記特定情報の数が、0、1、6、7のいずれかであるかを、前記データの上位4ビットをn進数により表現した場合における前記特定情報の数と、該データの下位4ビットをn進数により表現した場合における前記特定情報の数との組合せに基づいて判定することを特徴とする請求項4に記載の計数回路。
  7. データと前記データのパリティを入力とし、前記データをn進数(nは2以上の自然数)により表現した場合における1の計数情報とともに前記計数情報のパリティを出力する計数方法であって、
    前記データをn進数で表現した場合における特定情報の数が、特定の数であることを判定する判定ステップと、
    前記判定手段による判定結果に応じて、前記データのパリティの値又は前記パリティを反転させた値のいずれかを前記計数情報のパリティとして出力する反転ステップと
    を有することを特徴とする計数方法。
  8. 前記判定ステップは、8ビットのデータをn進数で表現した場合における前記特定情報の数が、0、1、6、7のいずれかであることをデコードすることを特徴とする請求項7に記載の計数方法。
  9. 前記判定ステップは、8ビットのデータをn進数で表現した場合における前記特定情報の数が、0、1、6、7のいずれかであるかを、前記データの上位4ビットをn進数により表現した場合における前記特定情報の数と、該データの下位4ビットをn進数により表現した場合における前記特定情報の数との組合せに基づいて判定することを特徴とする請求項7に記載の計数方法。
  10. N(N≧2である自然数)ビットのデータと前記データのパリティを入力とし、前記データをn進数(nは2以上の自然数)により表現した場合における1の計数情報とともに前記計数情報のパリティを出力する計数方法であって、
    前記Nビットのデータをn(N>n≧1である自然数)ビットデータ毎に分割する分割ステップと、
    前記nビットデータをn進数で表現した場合における特定情報の数が、特定の数であることを判定する判定ステップと、
    前記判定手段による判定結果に応じて、前記nビットデータのパリティの値又は前記nビットデータのパリティを反転させた値のいずれかを前記計数情報のパリティとして出力する反転ステップと、
    前記分割されたnビットデータ毎の前記計数情報をそれぞれ加算する計数情報加算ステップと、
    前記分割されたnビットデータ毎の前記計数情報のパリティをそれぞれ加算するパリティ加算ステップと
    を有することを特徴とする計数方法。
JP2007554774A 2006-01-19 2006-01-19 パリティ生成回路、計数回路および計数方法 Expired - Fee Related JP4567753B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2006/300749 WO2007083377A1 (ja) 2006-01-19 2006-01-19 パリティ生成回路、計数回路および計数方法

Publications (2)

Publication Number Publication Date
JPWO2007083377A1 JPWO2007083377A1 (ja) 2009-06-11
JP4567753B2 true JP4567753B2 (ja) 2010-10-20

Family

ID=38287339

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007554774A Expired - Fee Related JP4567753B2 (ja) 2006-01-19 2006-01-19 パリティ生成回路、計数回路および計数方法

Country Status (6)

Country Link
US (1) US8296641B2 (ja)
EP (1) EP1978643A4 (ja)
JP (1) JP4567753B2 (ja)
KR (1) KR101007259B1 (ja)
CN (1) CN101361278B (ja)
WO (1) WO2007083377A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4372822B2 (ja) * 2005-03-31 2009-11-25 富士通株式会社 パリティ予測回路及びこれを使用した論理演算回路
US10146537B2 (en) 2015-03-13 2018-12-04 Micron Technology, Inc. Vector population count determination in memory
TWI671750B (zh) * 2018-11-28 2019-09-11 華邦電子股份有限公司 記憶體的控制方法及非暫態電腦可讀媒體
CN116974514B (zh) * 2023-07-21 2024-02-02 北京市合芯数字科技有限公司 位值计数电路装置、处理器芯片及位值计数方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS647830A (en) * 1987-06-30 1989-01-11 Nec Corp Transmission line code error monitoring system
JPH03105670A (ja) * 1989-09-20 1991-05-02 Fujitsu Ltd ポピュレーション・カウント機能をもつ乗加算装置
JPH06250823A (ja) * 1993-02-19 1994-09-09 Hewlett Packard Co <Hp> ポピュレーション・カウントの計算装置
JP2005165793A (ja) * 2003-12-04 2005-06-23 Fujitsu Ltd ポピュレーションカウント回路

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5967729A (ja) 1982-10-12 1984-04-17 Nec Corp デクリメント・カウンタ論理回路
US4710934A (en) * 1985-11-08 1987-12-01 Texas Instruments Incorporated Random access memory with error correction capability
JP2595277B2 (ja) * 1988-01-12 1997-04-02 株式会社日立製作所 メモリ管理装置
JP3158215B2 (ja) * 1991-10-04 2001-04-23 富士通株式会社 パリティ反転試験方式
JP3105670B2 (ja) * 1992-11-26 2000-11-06 富士通株式会社 荷電粒子ビーム露光装置及びその制御方法
US5522032A (en) * 1994-05-05 1996-05-28 International Business Machines Corporation Raid level 5 with free blocks parity cache
JPH10333991A (ja) 1997-06-02 1998-12-18 Matsushita Electric Ind Co Ltd データ書込及び読出の誤り検出方法並びに半導体装置の自己検査方法
US5936972A (en) * 1997-06-18 1999-08-10 Motorola, Inc. Syndrome-based channel quality or message structure determiner
JPH1117556A (ja) 1997-06-27 1999-01-22 Sony Corp ディジタル信号処理装置および方法
CN1119884C (zh) * 2000-02-23 2003-08-27 华为技术有限公司 高速数据传输中的差错检测方法
KR100913467B1 (ko) * 2002-11-19 2009-08-25 엘지전자 주식회사 병렬 순환 중복 검사 코드 발생 시스템 및 방법
US7475301B2 (en) * 2003-05-09 2009-01-06 Hewlett-Packard Development Company, L.P. Increment/decrement circuit for performance counter

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS647830A (en) * 1987-06-30 1989-01-11 Nec Corp Transmission line code error monitoring system
JPH03105670A (ja) * 1989-09-20 1991-05-02 Fujitsu Ltd ポピュレーション・カウント機能をもつ乗加算装置
JPH06250823A (ja) * 1993-02-19 1994-09-09 Hewlett Packard Co <Hp> ポピュレーション・カウントの計算装置
JP2005165793A (ja) * 2003-12-04 2005-06-23 Fujitsu Ltd ポピュレーションカウント回路

Also Published As

Publication number Publication date
EP1978643A4 (en) 2010-06-09
KR20080083321A (ko) 2008-09-17
US8296641B2 (en) 2012-10-23
WO2007083377A1 (ja) 2007-07-26
JPWO2007083377A1 (ja) 2009-06-11
EP1978643A1 (en) 2008-10-08
CN101361278B (zh) 2012-02-01
KR101007259B1 (ko) 2011-01-13
US20080282136A1 (en) 2008-11-13
CN101361278A (zh) 2009-02-04

Similar Documents

Publication Publication Date Title
Lin et al. High-performance low-power carry speculative addition with variable latency
US9722629B2 (en) Method and apparatus for converting from floating point to integer representation
JPH07210369A (ja) 並列加算および平均演算を行うための回路およびその方法
US9146707B2 (en) Generating a fast 3x multiplicand term for radix-8 booth multiplication
JP4567753B2 (ja) パリティ生成回路、計数回路および計数方法
US20080148011A1 (en) Carry/Borrow Handling
CN112650471A (zh) 用于处理掩蔽数据的处理器和方法
US6101621A (en) Logic circuit and method for designing the same
JP2005100085A (ja) 演算装置、および、暗号・復号演算装置
CN112653448A (zh) 用于二进制标志确定的设备和方法
CN112650469A (zh) 用于二进制标志确定的电路和方法
JPH09222991A (ja) 加算方法および加算器
KR20190022023A (ko) 하드웨어 구현된 모듈러 역원 모듈
US9262123B2 (en) Data processing apparatus and method for performing a narrowing-and-rounding arithmetic operation
US7206994B2 (en) Checksum calculator with tree structure of reduction stages
JP4372822B2 (ja) パリティ予測回路及びこれを使用した論理演算回路
JP4317738B2 (ja) 平均値算出装置および平均値算出方法
CN111752613A (zh) 迭代运算的处理
US6631393B1 (en) Method and apparatus for speculative addition using a limited carry
US11294630B2 (en) Adder-subtractor circuit and method of controlling adder-subtractor circuit
JP2004240299A (ja) ハッシュ関数処理装置
US20080307032A1 (en) Divider Circuit
JP2009301265A (ja) 倍数判定方法、倍数判定装置および倍数判定プログラム
US20130262549A1 (en) Arithmetic circuit and arithmetic method
US7225218B2 (en) Apparatus and methods for generating counts from base values

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100803

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100805

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130813

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees