(57)【要約】【課題】回路規模を小さくしつつ、複数の乱数系列を用いる場合に乱数系列間で高いランダム性を有する乱数系列を生成すること。【解決手段】本発明の一つの実施形態は、半導体メモリ３０と、乱数系列を発生する乱数発生器１０と、前記乱数系列を用いて半導体メモリ３０にデータを記憶するデータ書き込み部２０とを有する。乱数発生器１０は、Ｍ個のシフトレジスタの一部に対するフィードバックループを有し、Ｍビットの乱数系列を生成する乱数生成部を持つ。また、乱数生成部で乱数系列の生成を開始する場合、第１の係数を乱数生成部へ出力し、乱数生成部で乱数系列の生成を継続する場合、第２の係数を乱数生成部へ出力する係数選択部を持つ。また、選択パターンに従って乱数生成部から出力されたＭビットの乱数系列からＮビットを選択してなる乱数系列を出力するビット選択部を持つ。【選択図】図１
2014222394.tif 000002
【特許請求の範囲】
【請求項１】
半導体メモリと、
前記半導体メモリにデータを記憶する際に用いられる乱数系列を発生する乱数発生器と、
前記乱数発生器で発生された乱数系列を用いて前記半導体メモリにデータを記憶するデータ書き込み部と、
を具備し、
前記乱数発生器は、
Ｍ（Ｍは正の整数）個のシフトレジスタを備え、前記Ｍ個のシフトレジスタの一部に対するフィードバックループを有し、Ｍビットの乱数系列を生成する乱数生成部と、
前記乱数生成部による前記乱数系列の生成を開始する場合、第１の値に基づいて、前記フィードバックループの有効または無効を指示する複数の第１の係数群から１つを選択して前記乱数生成部へ出力し、前記乱数生成部での前記乱数系列の生成を継続する場合、前記第１の係数とは異なり前記フィードバックループの有効または無効を指示する第２の係数を前記乱数生成部へ出力する係数選択部と、
前記第１の値とは異なる第２の値に基づいて、複数の選択パターンから１つを選択し、選択した選択パターンに従って前記乱数生成部から出力されたＭビットの乱数系列からＮ（ＮはＭ≧Ｎとなる正の整数）ビットを選択してなる乱数系列を出力するビット選択部と、
を備える半導体記憶装置。
【請求項２】
前記第１及び第２の値は、前記乱数生成部で生成する前記乱数系列の対象となるデータにかかる値である、
請求項１に記載の半導体記憶装置。
【請求項３】
前記乱数生成部は、前記第１の係数および前記第２の係数のいずれの係数においても値が０のビット位置がある場合、当該ビット位置に対応する前記フィードバックループを設定しない、
請求項１または２に記載の半導体記憶装置。
【請求項４】
前記ビット選択部から出力される乱数系列が所望のランダム性を満たしている場合、
前記係数選択部では、前記第１の係数の数を削減し、
前記ビット選択部では、前記選択パターンの数を削減する、
請求項１，２または３の何れか１項に記載の半導体記憶装置。
【請求項５】
前記半導体メモリに対するアクセス回数に応じて乱数系列を生成する場合、
前記係数選択部は、前記複数の第１の係数群よりも多くの第１の係数から１つを選択して出力し、
前記ビット選択部は、前記複数の選択パターンよりも多くの選択パターンから１つを選択し、当該選択パターンに従ってＮビットを選択してなる乱数系列を出力する、
請求項１から４の何れか１項に記載の半導体記憶装置。
【請求項６】
前記係数選択部は、第１のセレクタと、第２のセレクタと、を備え、
前記第１のセレクタは、前記乱数生成部による前記乱数系列の生成を開始する場合、前記乱数生成部で生成する前記乱数系列の対象となるデータにかかる第１の値に基づいて、前記フィードバックループの有効または無効を指示する複数の第１の係数群から１つを選択して前記第２のセレクタへ出力し、
前記第２のセレクタは、前記乱数生成部による前記乱数系列の生成を開始する場合、前記第１のセレクタから入力した前記第１の係数を前記乱数生成部へ出力し、前記乱数生成部での前記乱数系列の生成を継続する場合、前記フィードバックループの有効または無効を指示する前記第１の係数とは異なる第２の係数を前記乱数生成部へ出力する、
請求項１から５の何れか１項に記載の半導体記憶装置。
【請求項７】
Ｍ（Ｍは正の整数）個のシフトレジスタを備え、前記Ｍ個のシフトレジスタの一部に対するフィードバックループを有し、Ｍビットの乱数系列を生成する乱数生成部と、
前記乱数生成部による前記乱数系列の生成を開始する場合、第１の値に基づいて、前記フィードバックループの有効または無効を指示する複数の第１の係数群から１つを選択して前記乱数生成部へ出力し、前記乱数生成部での前記乱数系列の生成を継続する場合、前記第１の係数とは異なり前記フィードバックループの有効または無効を指示する第２の係数を前記乱数生成部へ出力する係数選択部と、
前記第１の値とは異なる第２の値に基づいて、複数の選択パターンから１つを選択し、選択した選択パターンに従って前記乱数生成部から出力されたＭビットの乱数系列からＮ（ＮはＭ≧Ｎとなる正の整数）ビットを選択してなる乱数系列を出力するビット選択部と、
を備える乱数発生器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、半導体記憶装置および乱数発生器に関する。
【背景技術】
【０００２】
従来、Ｍ系列のような単純な乱数アルゴリズムから得られる乱数系列は、１次元方向にはランダム性が高い。ここで、Ｃ個の要素を持つ１次元の乱数系列を、初期値を変えてＲ個用意し、Ｒ×Ｃの２次元配列のように並べた場合、隣り合う行（Ｒｏｗ）の初期値間のハミング距離が小さいと、得られる乱数系列同士に相関があり、列（Ｃｏｌｕｍｎ）方向の乱数系列内の０または１が偏る。場合によっては、Ｒ個すべてが０または１となってしまう等、ランダム性が低くなる。
【０００３】
しかしながら、従来技術では、２次元配列のように並べた場合にランダム性を高くしようとすると、回路規模が大きくなってしまう、という問題がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−３５２９０４号公報
【特許文献２】特開２０１２−２１６１５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一つの実施形態は、回路規模を小さくしつつ、複数の乱数系列を用いる場合に乱数系列間で高いランダム性を有する乱数系列を生成可能な半導体記憶装置および乱数発生器を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一つの実施形態の半導体記憶装置は、半導体メモリを持つ。また、前記半導体メモリにデータを記憶する際に用いられる乱数系列を発生する乱数発生器を持つ。また、前記乱数発生器で発生された乱数系列を用いて前記半導体メモリにデータを記憶するデータ書き込み部を持つ。前記乱数発生器は、Ｍ（Ｍは正の整数）個のシフトレジスタを備え、前記Ｍ個のシフトレジスタの一部に対するフィードバックループを有し、Ｍビットの乱数系列を生成する乱数生成部を持つ。また、前記乱数生成部による前記乱数系列の生成を開始する場合、第１の値に基づいて、前記フィードバックループの有効または無効を指示する複数の第１の係数群から１つを選択して前記乱数生成部へ出力し、前記乱数生成部での前記乱数系列の生成を継続する場合、前記第１の係数とは異なり前記フィードバックループの有効または無効を指示する第２の係数を前記乱数生成部へ出力する係数選択部を持つ。また、前記第１の値とは異なる第２の値に基づいて、複数の選択パターンから１つを選択し、選択した選択パターンに従って前記乱数生成部から出力されたＭビットの乱数系列からＮ（ＮはＭ≧Ｎとなる正の整数）ビットを選択してなる乱数系列を出力するビット選択部を持つ。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１の実施形態にかかる半導体記憶装置の構成例を示す図である。
【図２】図２は、第１の実施形態にかかる乱数発生器の構成例を示す図である。
【図３】図３は、第１の実施形態の乱数発生器を使用した場合のＣｏｌｕｍｎ方向の乱数系列内の０の数を示す図である。
【図４】図４は、第４の実施形態において初期値ループ用係数を減らした場合のＣｏｌｕｍｎ方向の乱数系列内の０の数を示す図である。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施形態にかかる半導体記憶装置および乱数発生器を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００９】
（第１の実施形態）
図１は、第１の実施形態にかかる半導体記憶装置の構成例を示す図である。半導体記憶装置は、乱数発生器１０と、データ書き込み部２０と、半導体メモリ３０と、を備える。乱数発生器１０は、データ書き込み部２０が半導体メモリ３０にデータを書き込む（記憶する）際に用いる乱数を発生する。データ書き込み部２０は、乱数発生器１０で発生された乱数を用いて、半導体メモリ３０にデータを書き込む。半導体メモリ３０は、データを記憶するためのメモリ（記憶部）である。
【００１０】
つぎに、背景技術に示すような乱数系列内の０または１の偏りを無くして、複数の乱数系列を用いる場合に高いランダム性を有する乱数系列を生成可能な乱数発生器１０の動作について詳細に説明する。乱数発生器は様々な分野で使用されているが、本第１の実施形態では、一例として、半導体記憶装置に搭載したときの乱数発生器１０の動作について説明する。すなわち、本第１の実施形態では、乱数発生器１０におけるランダマイズ（乱数発生）対象の系列となるデータは、半導体記憶装置が備える半導体メモリ３０に記録されるデータ（これ以降では、記録データとも称する）となる。なお、以降で説明する乱数発生器１０の用途は、半導体記憶装置に限定するものではない。乱数発生器１０は、他の用途においては記録データ以外のデータをランダマイズ対象とすることが可能である。図２は、第１の実施形態にかかる乱数発生器の構成例を示す図である。乱数発生器１０は、セレクタ１と、セレクタ２と、乱数生成部３と、セレクタ４と、を備える。
【００１１】
乱数生成部３は、Ｍ（Ｍは正の整数）段のシフトレジスタ５−１〜５−Ｍと、２段目以降のシフトレジスタ５−２〜５−Ｍに対応したＭ−１個の論理積演算処理部（ＡＮＤ）６−１〜６−（Ｍ−１）と、２段目以降のシフトレジスタ５−２〜５−Ｍに対応したＭ−１個の排他的論理和演算処理部（ＥＸ−ＯＲ）７−１〜７−（Ｍ−１）と、を備える。乱数生成部３は、クロック毎に、Ｍ段のシフトレジスタ５−１〜５−Ｍから出力される値からなるＭビットの乱数系列を出力する。乱数生成部３では、Ｍ段のシフトレジスタ５−１〜５−Ｍのうち、シフトレジスタ５−２〜５−Ｍの入力側に、論理積演算処理部６−１〜６−（Ｍ−１）および排他的論理和演算処理部７−１〜７−（Ｍ−１）を経由するフィードバックループがついている。各フィードバックループが有効か無効かは、論理積演算処理部６−１〜６−（Ｍ−１）の演算処理（ＡＮＤ）の結果、詳細には、選択された係数の各ビット値（「０」または「１」）とシフトレジスタ５−Ｍの出力値との演算処理（ＡＮＤ）によって決まる構成である。ここで、選択された係数とは、Ｍ−１ビットの係数であって、乱数系列生成用係数または初期値ループ用係数のことである。また、各シフトレジスタ５−２〜５−Ｍでは、排他的論理和演算処理部７−１〜７−（Ｍ−１）の演算処理（ＥＸ−ＯＲ）の結果、詳細には、論理積演算処理部６−１〜６−（Ｍ−１）からの出力値と前段のシフトレジスタ５−１〜５−（Ｍ−１）からの出力値との演算処理（ＥＸ−ＯＲ）によって得られた値を入力値とする。なお、シフトレジスタ５−１では、シフトレジスタ５−Ｍから出力された値を入力値とする。
【００１２】
乱数系列生成用係数とは、Ｍ系列の原始多項式であり、乱数系列を生成する際の１〜Ｍ−１段目のシフトレジスタ５−１〜５−（Ｍ−１）の出力に対するフィードバックループの結線情報となる情報である。
【００１３】
初期値ループ用係数とは、ランダマイズ対象の系列（ここでは、半導体メモリ３０への記録データをアドレス毎に２次元方向に展開した場合のＲｏｗまたはＣｏｌｕｍｎとする）となる記録データを記録する半導体メモリ３０のアドレス値に基づいて、乱数系列生成の際に使用する初期値を得るための、各フィードバックループの結線情報となる情報である。初期値ループ用係数は、乱数系列生成用係数とは異なる係数とすることが好ましい。
【００１４】
ここで、選択された係数を用いてアドレス値をビットシフトして初期値を得るのは、できるだけ元の値（アドレス値）からかけ離れた値となるようにするためである。また、乱数系列生成用係数とは別の、複数の係数（初期値ループ用係数）を用意しているのは、前後する初期値間のハミング距離を大きくすることで、できるだけ各係数間の相関を小さくするためである。
【００１５】
例えば、Ｒｏｗ毎に乱数系列を発生させる場合を想定する。初期値ループ用係数に全て同じ値を使用した場合のＣｏｌｕｍｎ方向の乱数系列内の０の発生頻度は、１つのＣｏｌｕｍｎ内で０の数が偏ってしまい、データパターンによっては乱数性が悪くなる可能性がある。実験からこのような結果が得られている。そのため、乱数発生器１０では、与えられるアドレス値に応じて係数を変えるためのセレクタ１を備える。なお、初期値ループ用係数は、必ずしも原始多項式である必要はなく、また、ビットシフトさせる回数（ＬＯＯＰ１の回数)も、シフトレジスタの段数、システムの動作周波数に応じて決めてよい。シフトレジスタの段数が多いほど、またシステムの動作周波数が高いほど、ビットシフトさせないように回数を決めることが好ましい。
【００１６】
セレクタ１は、ランダマイズ対象の系列となる記録データ（例えば、ＲｏｗまたはＣｏｌｕｍｎ）のアドレス値の下位３ビットを、用意された複数の初期値ループ用係数（複数の第１の係数群）に割り当てて、複数の初期値ループ用係数から１つを選択する。この場合、予め２3＝８パターンの初期値ループ用係数、具体的には、８パターンの初期値ループ用係数を格納したテーブルを用意する。なお、８パターンの初期値ループ用係数を用意するのは一例であって、例えば、アドレス値の下位４ビットを割り当てる場合は、２4＝１６パターンの初期値ループ用係数を用意することになる。
【００１７】
セレクタ２は、乱数生成部３において、これからビットシフトさせるのが初期値を得るためなのか、実際の乱数系列を発生させるためなのかに応じて、出力する係数を選択する。通常、セレクタ２は、選択された係数として乱数系列生成用係数（第２の係数）を出力するようにしており、ランダマイズ対象の記録データのアドレス値が切り替えられて初期値を再度得る必要がある場合は、選択された係数としてセレクタ１側からの係数を出力する。セレクタ２では、予め、乱数系列生成用係数、具体的には、乱数系列生成用係数を格納したテーブルを用意する。すなわち、セレクタ１およびセレクタ２により、乱数生成部３へ係数を出力する係数選択部を構成する。
【００１８】
上述のように、ランダマイズ対象の記録データのアドレス値に応じて、別々の係数を用いてビットシフトさせて初期値を得ることで、前後する初期値から得られる乱数系列間の相関性は弱くなる。しかし、乱数生成部３からの値をそのまま乱数系列として使用すると、初期値を得るときにビットシフトさせる係数を変えなかったときと同様に、Ｃｏｌｕｍｎ方向の乱数系列内における０または１の数が偏ってしまい、データパターンによっては乱数性が悪くなる可能性がある。
【００１９】
初期値ループ用係数に全て同じ値を使用した場合と同様、Ｒｏｗ毎に乱数系列を発生させる場合を想定する。乱数系列の出力として乱数生成部３のシフトレジスタ５−１〜５−Ｍの値をそのまま使用した場合のＣｏｌｕｍｎ方向の乱数系列内の０の発生頻度は、１つのＣｏｌｕｍｎ内で０の数が偏ってしまい、データパターンによっては乱数性が悪くなる可能性がある。実験からこのような結果が得られている。そのため、乱数発生器１０では、乱数生成部３のＭビットの値からＮビットの乱数系列を得るためのセレクタ４を備える。
【００２０】
セレクタ４は、乱数生成部３のシフトレジスタ５−１〜５−Ｍから出力されるＭビットの系列から、例えば、アドレス値の一部に応じてＮ（ＮはＭ≧Ｎとなる正の整数）ビット分の値を選択（抽出）し、Ｎビットの乱数系列として出力する。すなわち、セレクタ４は、乱数系列のビットの割り当てを変えるビット選択部である。ここで、アドレス値の一部とは、例えば、アドレス値のうち、セレクタ１で使用した３ビットを用いた値（第１の値）とは異なる３ビットを用いた値（第２の値）とする。セレクタ１で使用したビットとは異なるビットを使用するのは、セレクタ４から出力される乱数係数間の相関を小さくするためである。これにより、セレクタ４では、乱数生成部３のシフトレジスタ５−１〜５−Ｍから出力されるＭビットの系列からＮビット分の値を選択するためのビットの選択パターンを２3＝８パターンとすることができる。なお、８つの選択パターンを用意するのは一例であって、例えば、アドレス値のうち４ビットを割り当てる場合は、２4＝１６パターンの選択パターンを用意することになる。
【００２１】
このようにして得られる乱数系列は、Ｒｏｗ、Ｃｏｌｕｍｎ方向ともにランダムな系列であり、また、図３のように各Ｃｏｌｕｍｎ方向の乱数系列内の０または１の数も正規分布となるので、データパターンに依存せずランダム性が高いと言える。図３は、第１の実施形態の乱数発生器を使用した場合のＣｏｌｕｍｎ方向の乱数系列内の０の数を示す図である。初期値ループ用係数に全て同じ値を使用した場合、また、乱数系列の出力として乱数生成部３のシフトレジスタ５−１〜５−Ｍの値をそのまま使用した場合と異なり、０の発生頻度が正規分布となっている。実験からこのような結果が得られている。
【００２２】
したがって、２次元方向に高いランダム性を備えた乱数発生器１０を、主に、Ｍ系列のシフトレジスタと、３つのセレクタと、２つのテーブルで構成される、非常に小規模な回路で実現することができる。
【００２３】
つぎに、乱数発生器１０において、具体的に乱数系列を出力する動作について説明する。ここでは、一例として、各Ｒｏｗについて乱数系列を発生させる場合について説明する。なお、Ｃｏｌｕｍｎについて乱数系列を発生させる場合も同様の動作で行うことが可能である。
【００２４】
まず、乱数発生器１０では、乱数系列を発生させるための事前の準備として、セレクタ２用の乱数系列生成用係数およびセレクタ１用の初期値ループ用係数を用意する。乱数系列生成用係数は、Ｍ系列の原始多項式であり一意に決定することができる。初期値ループ用係数は、上記の例では、アドレス値の下位３ビットで異なる係数となるように８パターンを用意する。８パターンの初期値ループ用係数については、各初期値ループ用係数において相関のない係数とする。
【００２５】
つぎに、乱数発生器１０では、乱数生成部３を初期化する。乱数生成部３では、ランダマイズ対象（ここでは、１つのＲｏｗ）の系列の記録データのアドレス値をシフトレジスタ５−１〜５−Ｍへセットする。このとき、セレクタ１は、アドレス値の下位３ビットに基づいて、８パターンの初期値ループ用係数から１つを選択して出力する。セレクタ２は、セレクタ１からの初期値ループ用係数を選択し、乱数生成部３のフィードバックループの結線情報として出力する。そして、乱数生成部３は、シフトレジスタ５−１〜５−Ｍにセットされたアドレス値を、初期値ループ用係数を用いてビットシフトし、何回かループした後の値を初期値として利用する。このとき、ループさせる回数は任意に設定可能である。
【００２６】
乱数発生器１０では、乱数生成部３のシフトレジスタ５−１〜５−Ｍに初期値がセットされると、つぎに、乱数系列を実際に発生させるため、セレクタ２は、出力する係数をセレクタ１からの初期値ループ用係数から乱数系列生成用係数に切り替える。乱数生成部３は、フィードバックループの結線情報として乱数系列生成用係数をセットする。そして、乱数生成部３は、初期値に対して、乱数系列生成用係数を用いて所定の回数ビットシフトし、乱数系列を生成して出力する。このとき、乱数生成部３のシフトレジスタ５−１〜５−Ｍからの出力はＭビットである。セレクタ４では、乱数生成部３のシフトレジスタ５−１〜５−ＭからＭビットを入力すると、セレクタ１で使用したアドレス値の３ビットとは異なる３ビットを用いて選択パターンを決定し、決定した選択パターンに基づいてＮビットを出力する。
【００２７】
そして、乱数発生器１０では、Ｒｏｗについて乱数系列を生成している場合では、セレクタ４からＣｏｌｕｍｎのビット数分を出力するように、乱数生成部３のシフトレジスタ５−１〜５−Ｍでのシフトを所定の回数だけ繰り返し実行する。所定の回数とは、例えば、Ｃｏｌｕｍｎ数が１２８ビット、乱数生成部３のシフトレジスタ５−１〜５−Ｍからセレクタ４への出力が３２ビット、セレクタ４からの選択後の出力が１６ビットとした場合、乱数発生器１０から１２８ビット分出力するためには、セレクタ４から１２８／１６＝８回分の出力が必要となる。そのため、乱数生成部３のシフトレジスタは、少なくとも８回以上のシフトを行うことになる。
【００２８】
乱数発生器１０では、１つのＲｏｗについてＣｏｌｕｍｎ数分の乱数系列を発生すると、次のＲｏｗの乱数発生処理に切り替える。ここでは、次のランダマイズ対象（Ｒｏｗ）の系列の記録データのアドレス値を乱数生成部３のシフトレジスタへセットすることで、前回のＲｏｗの計算で使用したシフトレジスタ内の情報を初期化する。乱数発生器１０における以降の動作は上述の動作と同様である。そして、乱数発生器１０は、Ｒｏｗの数だけ上記の乱数系列を発生する動作を繰り返し実行する。これにより、乱数発生器１０は、２次元の乱数配列において、ランダム性の高い乱数系列を得ることができる。
【００２９】
なお、本第１の実施形態にかかる乱数発生器１０は、１つのＲｏｗ分の乱数系列を発生させてから次のＲｏｗの乱数系列を発生させるようにしたが、一例であり、これに限定するものではない。例えば、乱数発生器１０では、あるＲｏｗについてセレクタ４からの出力分だけ乱数系列を出力した後、つぎに、別のＲｏｗについて乱数系列を発生して出力するように、セレクタ４からの出力単位で乱数を発生させるＲｏｗを切り替えていくことも可能である。
【００３０】
半導体記憶装置では、データ書き込み部２０が、乱数発生器１０で得られた乱数系列を用いて半導体メモリ３０に記録データを書き込むことで、特定の記録データについてデータパターンの記憶が集中することを防止する、詳細には、記録データの系列が相関性を有する場合でも隣り合うセル同士のビット値の相関性を無くすことができる。
【００３１】
以上説明したように、第１の実施形態によれば、乱数発生器は、ランダマイズ対象の記録データのアドレス値により複数の初期値ループ用係数から１つを選択して乱数生成時に使用する初期値を生成し、生成した初期値に対して乱数系列生成用係数を用いてシフト処理を行ってＭビットの乱数系列を生成する。そして、生成されたＭビットの乱数系列から、Ｎビットを選択したものを乱数系列として使用することとした。その結果、回路規模を小さくしつつ、複数の乱数系列を用いる場合に乱数系列間で高いランダム性を有する乱数系列を生成できる、という効果を得ることができる。
【００３２】
（第２の実施形態）
第１の実施形態において、乱数発生器１０では、乱数生成部３がＭ−１個の論理積演算処理部（ＡＮＤ）６−１〜６−（Ｍ−１）およびＭ−１個の排他的論理和演算処理部（ＥＸ−ＯＲ）７−１〜７−（Ｍ−１）を備えている。これは、乱数系列生成用係数および初期値ループ用係数がどのような値の係数であっても対応できるようにしているためである。そのため、用意された乱数系列生成用係数および初期値ループ用係数の全ての係数内において、「１」がたってないビット位置があれば、乱数生成部３では、そのビット位置に対応するフィードバックループ、論理積演算処理部（ＡＮＤ）および排他的論理和演算処理部（ＥＸ−ＯＲ）については回路構成として設定しなくてもよい。
【００３３】
これにより、第１の実施形態と同様の効果を得つつ、さらに、回路規模を小さくすることができる。
【００３４】
（第３の実施形態）
第１の実施形態において、係数として乱数系列生成用係数および初期値ループ用係数を用意したが、初期値ループ用係数の代わりに、アドレス値に応じて、乱数系列生成用係数の原始多項式を切り替えてもよい。具体的には、図２において、セレクタ１およびセレクタ１用に用意した初期値ループ用係数を設けず、セレクタ２において、初期値ループ用係数の代替えとなる係数を、第１の実施形態の場合であれば８パターン用意する。すなわち、セレクタ２は、乱数生成部３において初期値を得る場合には、初期値ループ用係数の代替えとなる係数を、アドレス値の下位３ビットに基づいて出力する。また、セレクタ２は、乱数生成部３において実際に乱数系列を発生させる場合には、元々備えている乱数系列生成用係数を出力する。第１の実施形態では２つのセレクタで係数選択部を構成していたが、第３の実施形態では１つのセレクタで係数選択部を構成する。
【００３５】
これにより、第１の実施形態と同様の効果を得つつ、セレクタの数を減らせることから、さらに、回路規模を小さくすることができる。
【００３６】
（第４の実施形態）
第１の実施形態では、セレクタ１用に初期値ループ用係数を８パターン用意し、また、セレクタ４用にＮビットの出力の選択方法も８パターン用意した。これにより、Ｃｏｌｕｍｎ内の乱数系列の０の数を図３に示すように正規分布で発生させることができた。ここで、例えば、初期値ループ用係数を４パターンにすると、図４に示すように正規分布が乱れる。図４は、第４の実施形態において初期値ループ用係数を減らした場合のＣｏｌｕｍｎ方向の乱数系列内の０の数を示す図である。セレクタ４における出力の選択パターンを減らしても同様に正規分布が乱れる。実験からこのような結果が得られている。このことから、係数および出力の選択方法は、いずれも８パターン以上用意することが望ましい。
【００３７】
なお、システムによってはその限りではない。例えば、セレクタ１における初期値ループ用係数の数、および、セレクタ４における選択パターンの数を削減しても、セレクタ４から出力される乱数系列が所望のランダム性を満たしている場合には、初期値ループ用係数の数、選択パターンの数を削減することができる。
【００３８】
（第５の実施形態）
第１の実施形態では、２次元方向にランダム性の高い乱数系列を生成する場合について説明したが、乱数発生器１０では、さらに、別の要素を含めてランダム性の高い乱数系列を生成することも可能である。例えば、乱数発生器１０を半導体記憶装置に用いた場合に、データを書き込む際のアクセス回数に応じて乱数系列を生成することができる。
【００３９】
この場合、図２に示す乱数発生器１０において、セレクタ１では、アドレス値の下位３ビットに対する８つの初期値ループ用係数の他、各初期値ループ用係数に対してアクセス回数用に２3＝８つの初期値ループ用係数（合計８×８＝６４パターン）を用意する。同様に、セレクタ４では、アドレス値の３ビットに対する８つの選択パターンの他、各選択パターンに対してアクセス回数用に２3＝８つの選択パターン（合計８×８＝６４パターン）を用意する。
【００４０】
これにより、半導体記憶装置では、２次元方向にランダム性の高い乱数系列を生成することに加えて、アクセス回数などの別の要素に対してもランダム性の高い乱数系列を生成することができる。
【００４１】
なお、第１の実施形態で説明したように、乱数発生器１０は、半導体記憶装置以外の用途に適用可能であり、半導体記憶装置以外の用途に適用した場合にも、本第５の実施形態と同様の対応をとることが可能である。すなわち、半導体記憶装置以外の用途において乱数系列発生対象の系列が追加された場合、乱数発生器１０では、セレクタ１は、追加前の複数の第１の係数群（半導体記憶装置では初期値ループ用係数に相当）よりも多くの第１の係数から１つを選択して出力する。また、セレクタ４は、追加前の選択パターンよりも多くの選択パターンから選択した１つの選択パターンに従って、Ｎビット分の値を選択して乱数系列を出力する。この場合においても、乱数発生器１０は、ランダム性の高い乱数系列を生成することができる。
【００４２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４３】
１  セレクタ、２  セレクタ、３  乱数生成部、４  セレクタ、５−１〜５−Ｍ  シフトレジスタ、６−１〜６−（Ｍ−１）  論理積演算処理部、７−１〜７−（Ｍ−１）  排他的論理和演算処理部、１０  乱数発生器、２０  データ書き込み部、３０  半導体メモリ。
【図１】
2014222394.tif 000003
【図２】
2014222394.tif 000004
【図３】
2014222394.tif 000005
【図４】
2014222394.tif 000006