(57)【特許請求の範囲】
【請求項１】
ｎ（ｎは４以上の整数）次の線形帰還シフトレジスタと、
前記線形帰還シフトレジスタに初期値を設定する初期値設定部と、
前記線形帰還シフトレジスタに設定される初期値を選択する初期値選択部と、
前記線形帰還シフトレジスタの帰還ループ上で生成されるｍ（ｍは２以上のｎ−２以下の整数）個のＸＯＲ演算結果のうちｋ（ｋは２以上ｍ以下の整数）個分をｋ個の乱数として出力する乱数出力部と、
を備え、
前記初期値選択部は、ＮＡＮＤメモリのメモリセルを分類するパラメータと前記初期値との対応関係に基づいて前記初期値を選択し、
前記パラメータと前記初期値との対応関係が可変である
乱数発生回路。
【請求項２】
前記線形帰還シフトレジスタの原始多項式Ｍ（Ｘ）はＭ（Ｘ）＝Ｘ３２＋Ｘ２６＋Ｘ２３＋Ｘ２２＋＋Ｘ１６＋Ｘ１２＋＋Ｘ１１＋Ｘ１０＋Ｘ８＋Ｘ７＋＋Ｘ５＋Ｘ４＋Ｘ２＋Ｘ＋１で表される請求項１に記載の乱数発生回路。
【請求項３】
ＮＡＮＤメモリと、
前記ＮＡＮＤメモリの読み書きを制御するコントローラとを備え、
前記コントローラは、
前記ＮＡＮＤメモリに書き込まれるデータをランダマイズする乱数を発生するｎ（ｎは２以上の整数）次の線形帰還シフトレジスタと、
前記線形帰還シフトレジスタに初期値を設定する初期値設定部とを備え、
前記線形帰還シフトレジスタが発生する乱数の周期Ｙが前記ＮＡＮＤメモリのブロックサイズＳより大きくなるように前記線形帰還シフトレジスタの次数ｎが選択され、
前記線形帰還シフトレジスタに設定可能な初期値の個数をＰとすると、
前記Ｐは、Ｙ／Ｐ＞Ｓという条件を満たす素数である
半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、乱数発生回路および半導体記憶装置に関する。
【背景技術】
【０００２】
ＮＡＮＤセルの信頼性を向上させるため、データをランダマイズすることがある。データをランダマイズするために、乱数発生器が用いられる。乱数発生器には、周期が長く良好な乱数性が得られる線形帰還シフトレジスタを用いたものがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−２１４６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、乱数性の低下を抑制しつつ、回路規模を低減させることが可能な乱数発生回路を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一つの実施形態によれば、線形帰還シフトレジスタと初期値設定部と初期値選択部と乱数出力部とを有する乱数発生回路が提供される。線形帰還シフトレジスタは、ｎ（ｎは４以上の整数）次の線形帰還シフトレジスタである。初期値設定部は、線形帰還シフトレジスタに初期値を設定する。初期値選択部は、線形帰還シフトレジスタに設定される初期値を選択する。乱数出力部は、線形帰還シフトレジスタの帰還ループ上で生成されるｍ（ｍは２以上のｎ−２以下の整数）個のＸＯＲ演算結果のうちｋ（ｋは２以上ｍ以下の整数）個分をｋ個の乱数として出力する。初期値選択部は、ＮＡＮＤメモリのメモリセルを分類するパラメータと初期値との対応関係に基づいて初期値を選択する。乱数発生回路は、パラメータと初期値との対応関係が可変である。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１実施形態に係る乱数発生回路の概略構成を示すブロック図である。
【図２】図２は、図１の乱数発生回路が適用されるランダマイズ処理装置の概略構成を示すブロック図である。
【図３】図３は、図１の乱数発生回路に適用されるシードテーブルの内容の一例を示す図である。
【図４】図４は、入出力ごとに初期値を変化させた時の使用領域の一例を示す図である。
【図５】図５は、第２実施形態に係るランダマイズ処理装置の概略構成を示すブロック図である。
【図６】図６（ａ）および図６（ｂ）は、図５の乱数発生回路に適用されるシードテーブルのインデックスの入れ替え方法を示す図である。
【図７】図７（ａ）および図７（ｂ）は、図５の乱数発生回路に適用されるシードテーブルのインデックスのマッピング領域の変更方法を示す図である。
【図８】図８は、第３実施形態に係るランダマイズ処理装置の概略構成を示すブロック図である。
【図９】図９は、第４実施形態に係るランダマイズ処理装置の概略構成を示すブロック図である。
【図１０】図１０は、第５実施形態に係るランダマイズ処理装置の概略構成を示すブロック図である。
【図１１】図１１は、第６実施形態に係る半導体記憶装置の構成例を示すブロック図である。
【図１２】図１２は、図１１の不揮発性メモリの概略構成を示すブロック図である。
【図１３】図１３は、図１２の不揮発性メモリの概略構成例を示す斜視図である。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態に係る乱数発生回路を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００８】
（第１実施形態）
図１は、第１実施形態に係る乱数発生回路の概略構成を示すブロック図である。なお、図１は、割り算回路であり、３２次の多項式を用いたＭ系列を示す。図１では、３２次の原始多項式で割り算した時の余りを乱数で表す線形帰還シフトレジスタを例にとるが、ｎ（２は２以上の整数）次の原始多項式で割り算した時の余りを乱数で表す線形帰還シフトレジスタに適用してもよい。また、線形帰還シフトレジスタはハードウェアで構成してもよいし、ファームウェアで構成してもよい。
図１において、線形帰還シフトレジスタ１には、３２個のレジスタ２および１３個のＸＯＲ演算部３が設けられている。この時、線形帰還シフトレジスタ１は３２次の原始多項式Ｍ（Ｘ）で割り算した時の余りを乱数で表すことができる。この原始多項式Ｍ（Ｘ）は、例えば、Ｍ（Ｘ）＝Ｘ３２＋Ｘ２６＋Ｘ２３＋Ｘ２２＋Ｘ１６＋Ｘ１２＋＋Ｘ１１＋Ｘ１０＋Ｘ８＋Ｘ７＋＋Ｘ５＋Ｘ４＋Ｘ２＋Ｘ１＋１という式で表すことができる。この原始多項式Ｍ（Ｘ）を用いることでＭ系列を生成することができる。この時、３２次の原始多項式Ｍ（Ｘ）からは、２３２−１という周期で疑似乱数を発生させることができる。
【０００９】
３２個のレジスタ２は、原始多項式Ｍ（Ｘ）の１次の項から３２次の項にそれぞれ対応させることができる。原始多項式Ｍ（Ｘ）の係数が１である項Ｘ１、Ｘ２、Ｘ４、Ｘ５、Ｘ７、Ｘ８、Ｘ１０、Ｘ１１、Ｘ１２、Ｘ１６、Ｘ２２、Ｘ２３、Ｘ２６に対応する各レジスタ２の後段にはＸＯＲ（排他的論理和）回路３が設けられている。各ＸＯＲ回路３は、線形帰還シフトレジスタ１のレジスタ出力ｂ７と、そのＸＯＲ回路３の前段のレジスタ２のレジスタ出力とのＸＯＲをとり、そのＸＯＲ回路３の後段のレジスタ２に出力する。
【００１０】
また、線形帰還シフトレジスタ１には、乱数出力部４が設けられている。乱数出力部４は、線形帰還シフトレジスタ１の帰還ループ上で生成される１３個のＸＯＲ演算結果のうちｋ（ｋは２以上１３以下の整数）個分をｋ個の乱数として出力する。線形帰還シフトレジスタ１では、原始多項式Ｍ（Ｘ）の係数が１である各項Ｘ１、Ｘ２、Ｘ４、Ｘ５、Ｘ７、Ｘ８、Ｘ１０、Ｘ１１、Ｘ１２、Ｘ１６、Ｘ２２、Ｘ２３、Ｘ２６について、１３個のＸＯＲ演算結果を１サイクルごとに生成することができる。図１では、原始多項式Ｍ（Ｘ）の８個の項Ｘ３、Ｘ７、Ｘ１１、Ｘ１５、Ｘ１９、Ｘ２３、Ｘ２６から１サイクルごとに１バイトのレジスタ出力ｂ０〜ｂ７を乱数として取り出す例を示した。なお、例えば、項Ｘ１２のＸＯＲ演算結果は項Ｘ１３→項Ｘ１４→項Ｘ１５→項Ｘ１６という順序で１サイクルごとにシフトされ、そのシフトによって項Ｘ１２のＸＯＲ演算結果は変化しない。このため、項Ｘ１２のＸＯＲ演算結果は、各項Ｘ１３、Ｘ１４、Ｘ１５、Ｘ１６のうちのどの項から取り出してもよい。
また、図１では、１バイトの乱数を取り出すために、各項Ｘ３、Ｘ７、Ｘ１１、Ｘ１５、Ｘ１９、Ｘ２３、Ｘ２６からレジスタ出力ｂ０〜ｂ７を取り出す構成を示したが、１３個の項Ｘ１、Ｘ２、Ｘ４、Ｘ５、Ｘ７、Ｘ８、Ｘ１０、Ｘ１１、Ｘ１２、Ｘ１６、Ｘ２２、Ｘ２３、Ｘ２６のうちのどの８個の項が選択されてもよい。
【００１１】
線形帰還シフトレジスタ１で乱数を発生させる場合、各レジスタ２に初期値を設定する。そして、各レジスタ２の値が１サイクルごとに次段に１回シフトされる。これにより、１個の線形帰還シフトレジスタ１から１サイクルごとに８個の乱数を得ることができる。この時、各ＸＯＲ回路３によるＸＯＲ演算結果を乱数として取り出すことにより、１個の線形帰還シフトレジスタ１から複数の乱数を取り出した場合においても、乱数性の低下を抑制することができる。
【００１２】
また、線形帰還シフトレジスタの次数ｎは、その線形帰還シフトレジスタが発生する乱数の周期ＹがＮＡＮＤメモリのブロックサイズＳより大きくなるように選択することが好ましい。これにより、ＮＡＮＤメモリの同一ブロックに書き込まれるデータが周期性を持つのを防止することができる。このため、ＮＡＮＤメモリの同一ブロックでセル間干渉が起き難くすることができ、ＮＡＮＤメモリの信頼性を向上させることができる。
【００１３】
図２は、図１の乱数発生回路が適用されるランダマイズ処理装置の概略構成を示すブロック図である。
図２において、ランダマイズ処理装置には、シードテーブル５１、レジスタ５２、初期値選択部５３、初期値設定部５４、巡回制御部５５およびスクランブル回路５６が設けられている。このシードテーブル５１はＮ（Ｎは２以上の整数）個設けることができる。各シードテーブル５１は、インデックスと初期値５１Ａとの対応関係を保持することができる。インデックスは初期値５１Ａを特定する番号である。この時、各シードテーブル５１に格納される初期値５１Ａの個数Ｐはセルlの物理的な配置と相関が得にくい素数であることが好ましい。レジスタ５２には、ＮＡＮＤメモリのページ番号５２Ａおよびフレーム番号５２Ｂが保持される。なお、ページはＮＡＮＤメモリにおける書き込み単位または読み出し単位である。フレームは、ＮＡＮＤメモリに用いられるＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）回路の処理単位（以下、ＥＣＣ単位という）である。
【００１４】
初期値選択部５３は、ページ番号５２Ａおよびフレーム番号５２Ｂに基づいてインデックスを求め、そのインデックスに割り当てられたシード値をシードテーブル５１に定義された初期値５１Ａから選択することができる。初期値設定部５４には、線形帰還シフトレジスタ１に初期値５１Ａを設定することができる。なお、線形帰還シフトレジスタ１は、Ｎ個設けるようにしてもよい。巡回制御部５５は、線形帰還シフトレジスタ１の値を１サイクルごとに１ビットずつ巡回させることができる。スクランブル回路５６は、線形帰還シフトレジスタ１のレジスタ出力ｂ０〜ｂ７に基づいて入力データＤｉｎ［７：０］をランダマイズすることができる。スクランブル回路５６には、入力データＤｉｎ［７：０］の各ビットごとにＸＯＲ回路５７が設けられている。ＸＯＲ回路５７は、入力データＤｉｎ［７：０］の各ビットと各レジスタ出力ｂ０〜ｂ７とのＸＯＲをとることができる。
【００１５】
入力データＤｉｎ［７：０］のランダマイズを行う場合、入力データＤｉｎ［７：０］のページ番号５２Ａおよびフレーム番号５２Ｂがレジスタ５２に格納される。そして、そのページ番号５２Ａおよびフレーム番号５２Ｂに基づいてインデックスが算出される。そして、そのインデックスをキーとしてシードテーブル５１から初期値５１Ａが選択され、線形帰還シフトレジスタ１に設定される。なお、インデックスをＩｎｄｅｘ、ページ番号５２Ａをｓｈｉｆｔｎｕｍ、フレーム番号５２Ｂをｏｆｆｓｅｔ、１ページ当たりのＥＣＣ単位数をｆｒａｍｅ＿ｍａｘとすると、これらの関係は、例えば、以下の（１）式で与えることができる。
Ｉｎｄｅｘ＝ｓｈｉｆｔｎｕｍ＊ｆｒａｍｅ＿ｍａｘ＋ｏｆｆｓｅｔ・・・（１）
この（１）式で与えられるシードテーブル５１の内容を図６（ａ）に示した。図６（ａ）の内容はデフォルトとして用いることができる。
【００１６】
初期値５１Ａが線形帰還シフトレジスタ１に設定されると、入力データＤｉｎ［７：０］の入力サイクルに従って線形帰還シフトレジスタ１の値が１ビットづつ巡回され、その時のレジスタ出力ｂ０〜ｂ７が線形帰還シフトレジスタ１からスクランブル回路５６に入力される。スクランブル回路５６において、入力データＤｉｎ［７：０］の各ビットと各レジスタ出力ｂ０〜ｂ７とのＸＯＲがとられることで、入力データＤｉｎ［７：０］がランダマイズされた出力データＤｏｕｔ［７：０］が生成される。
【００１７】
ここで、ページ番号５２Ａおよびフレーム番号５２Ｂに基づいて線形帰還シフトレジスタ１の初期値５１Ａを変化させることにより、ＮＡＮＤメモリを消去した後に同一セルに同一データを書き込む場合においても、その同一セルに書き込まれるデータを別の値に変化させることができる。このため、ＮＡＮＤメモリの同一セルに同一の値が何度も繰り返し書き込まれるのを防止することができ、ＮＡＮＤメモリの信頼性の低下を抑制することができる。  
【００１８】
図３は、図１の乱数発生回路に適用されるシードテーブルの内容の一例を示す図である。図３の例では、初期値５１Ａが３２ビットで構成されている時の１６進数で表した。
図３において、シードテーブルには、６７個の初期値５１Ａが格納されている。この６７は素数である。各初期値５１Ａには、インデックスが付されている。インデックスは初期値を指定することができる。初期値５１Ａ間のビット数の間隔は均等であることが好ましい。
【００１９】
ここで、各シードテーブル５１に格納される初期値５１Ａの個数Ｐを素数とすることにより、ＮＡＮＤメモリにおけるページ間、カラム間またはレイヤ間でのデータの再現性の周期が初期値５１Ａの周期と一致し難くすることができる。このため、ＮＡＮＤメモリにおける隣接ページ間、隣接カラム間または隣接レイヤ間でのデータの周期を異ならせることができ、ＮＡＮＤメモリのセル間の干渉を抑制することができる。
また、初期値５１Ａ間のビット数の間隔を均等とすることにより、初期値５１Ａ間のビット数の最小間隔を大きくすることができる。このため、線形帰還シフトレジスタ１の初期値５１Ａが変更された場合においても、線形帰還シフトレジスタ１が発生する乱数の周期が初期値５１Ａの変更前後で重なり難くすることができる。
【００２０】
線形帰還シフトレジスタ１に設定可能な初期値の個数をＰとすると、Ｙ／Ｐ＞Ｓという条件を満たすことが好ましい。例えば、ＮＡＮＤメモリのブロックサイズＳが４Ｍバイト〜６Ｍバイト程度であるとする。この時、線形帰還シフトレジスタ１に設定可能な初期値の個数Ｐ＝６７に設定したものとする。この場合、Ｙ／Ｐ＝（２３２−１）／６７≒８Ｍバイトとなり、Ｙ／Ｐ＞Ｓという条件を満たす。これにより、ＮＡＮＤメモリのブロックの書き込みデータの周期をブロックサイズＳと同等以上に設定することができ、ＮＡＮＤメモリの同一ブロックでセル間干渉が起き難くすることができる。
【００２１】
図４は、入出力ごとに初期値を変化させた時の使用領域の一例を示す図である。
図４において、線形帰還シフトレジスタ１の周期Ｙ＝２３２−１以下の容量を持つメモリ領域ＭＲがあるものとする。メモリ領域ＭＲには、使用領域と未使用領域があってもよい。また、シードテーブル５１および線形帰還シフトレジスタ１の個数Ｎ＝４であるものとする。この時、メモリ領域ＭＲの入出力ＩＯ＃１、ＩＯ＃２、ＩＯ＃３、ＩＯ＃４ごとに４個のシードテーブル５１を別個に定義することができる。４個のシードテーブル５１は、４個の線形帰還シフトレジスタ１にそれぞれ対応付けることができる。
【００２２】
そして、入出力ＩＯ＃１、ＩＯ＃２、ＩＯ＃３、ＩＯ＃４ごとに別個のシードテーブル５１から４個の初期値を選択し、４個の線形帰還シフトレジスタ１を動作させる。この時、１サイクル当たり４個の入力データＤｉｎ［７：０］をランダマイズすることができる。
また、出力ＩＯ＃１、ＩＯ＃２、ＩＯ＃３、ＩＯ＃４ごとにシードテーブル５１を別個に定義することで、各入出力ＩＯ＃１、ＩＯ＃２、ＩＯ＃３、ＩＯ＃４に未使用領域がある場合においても、線形帰還シフトレジスタ１の最長周期を効率的に利用することができ、出力データＤｏｕｔ［７：０］の乱数性を向上させることができる。
【００２３】
（第２実施形態）
第１実施形態のランダマイズ処理装置では、ＮＡＮＤメモリのメモリセルを分類するパラメータと初期値との対応関係が固定されている場合を示した。ここで言うパラメータは、例えば、ページ、フレーム、カラムおよびレイヤを上げることができる。カラムはＮＡＮＤメモリの入出力単位である。この時、例えば、１カラム当たり８本のビット線を割り当てることができる。レイヤはメモリセルが積層されている時にどの層に配置されているかを示す。
この第２実施形態のランダマイズ処理装置では、ＮＡＮＤメモリのメモリセルを分類するパラメータと初期値との対応関係が可変である場合を示す。
図５は、第２実施形態に係るランダマイズ処理装置の概略構成を示すブロック図である。なお、以下の実施形態では、ＮＡＮＤメモリのメモリセルを分類するパラメータとしてページおよびフレームを例にとる。
【００２４】
図５の構成は図２の構成とほぼ同様である。ただし、レジスタ５２には、フレーム番号５２Ｂに対する加算係数５２Ｃおよびページ番号５２Ａに対する乗算係数５２Ｄが追加して保持される。
この時、初期値選択部５３では、フレーム番号５２Ｂに加算係数５２Ｃを加算することで、インデックスとフレーム番号５２Ｂとの対応関係を変化させたり、ページ番号５２Ａに乗算係数５２Ｄを乗算することで、インデックスとページ番号５２Ａとの対応関係を変化させたりすることができる。
例えば、加算係数５２ＣをＲｅｍａｐ＿ｏｆｓｔとすると、インデックスＩｎｄｅｘは、以下の（２）式で与えることができる。
Ｉｎｄｅｘ＝ｓｈｉｆｔｎｕｍ＊ｆｒａｍｅ＿ｍａｘ＋ｏｆｆｓｅｔ
＋Ｒｅｍａｐ＿ｏｆｓｔ・・・（２）
また、乗算係数５２ＤをＲｅｍａｐ＿Ｎｕｍとすると、インデックスＩｎｄｅｘは、以下の（３）式で与えることができる。
Ｉｎｄｅｘ＝Ｉｎｄｅｘ＋ｓｈｉｆｔｎｕｍ＊Ｒｅｍａｐ＿Ｎｕｍ・・・（３）
そして、その変化されたインデックスをキーとしてシードテーブル５１から初期値５１Ａが選択され、線形帰還シフトレジスタ１に設定される。
なお、インデックスＩｎｄｅｘの変換式は、（２）式または（３）式に限定されることなく、シードテーブル５１の周期性を崩せれば、どのような変換式であってもよい。
【００２５】
ここで、メモリセルを分類するパラメータと初期値との対応関係を可変とすることにより、ＮＡＮＤメモリの設計変更に伴ってページ、フレーム、カラムまたはレイヤが変更された場合においても、ＮＡＮＤメモリに記憶されるデータの周期関係を崩すことができる。このため、ＮＡＮＤメモリの設計変更があった場合においても、ＮＡＮＤメモリの同一ブロックに書き込まれるデータが周期性を持つのを防止することができ、ＮＡＮＤメモリの同一ブロックでセル間干渉が起き難くすることができる。
【００２６】
図６（ａ）および図６（ｂ）は、図５の乱数発生回路に適用されるシードテーブルのインデックスの入れ替え方法を示す図である。シードテーブル５１では、縦軸をページ番号ｓｈｉｆｔｎｕｍ、横軸をフレーム番号ｏｆｆｓｅｔとし、ページ番号ｓｈｉｆｔｎｕｍとフレーム番号ｏｆｆｓｅｔとで特定されるインデックスＩｎｄｅｘが登録される。
図６（ａ）において、シードテーブル５１は、（１）式に従ってデフォルト設定されているものとする。（１）式は、（２）式のＲｅｍａｐ＿ｏｆｓｔ＝０の場合である。
【００２７】
（２）式において、Ｒｅｍａｐ＿ｏｆｓｔ＝３とすると、図６（ｂ）に示すように、シードテーブル５１内でインデックスＩｎｄｅｘが３だけシフトされる。このため、ページ番号ｓｈｉｆｔｎｕｍとフレーム番号ｏｆｆｓｅｔとで特定されるインデックスＩｎｄｅｘを入れ替えることができる。
【００２８】
図７（ａ）および図７（ｂ）は、図５の乱数発生回路に適用されるシードテーブルのインデックスのマッピング領域の変更方法を示す図である。
図７（ａ）において、（３）式のＲｅｍａｐ＿Ｎｕｍ＝１とすると、インデックスＩｎｄｅｘのマッピング領域が図６（ａ）のマッピング領域に対して変化する。この時、図７（ａ）のマッピング領域は、ｏｆｆｓｅｔ＝１の位置でｓｈｉｆｔｎｕｍの増大方向に突出させることができる。
【００２９】
また、図７（ｂ）において、（３）式のＲｅｍａｐ＿Ｎｕｍ＝２とすると、インデックスＩｎｄｅｘのマッピング領域が図６（ａ）のマッピング領域に対して変化する。この時、図７（ｂ）のマッピング領域は、ｏｆｆｓｅｔ＝０の位置でｓｈｉｆｔｎｕｍの増大方向に突出させることができる。
【００３０】
（第３実施形態）
図８は、第３実施形態に係るランダマイズ処理装置の概略構成を示すブロック図である。
図８の構成では、図５の初期値設定部５４および巡回制御部５５の代わりに初期値設定部５４´および巡回制御部５５´が設けられている。それ以外の図８の構成は図５の構成と同様である。
図５の巡回制御部５５では、１個の線形帰還シフトレジスタ１から１サイクルごとに１バイトのレジスタ出力ｂ０〜ｂ７が乱数として取り出される。これに対して、図８の巡回制御部５５´では、１個の線形帰還シフトレジスタ１から１サイクルごとに１ビットのレジスタ出力が乱数として取り出される。この時、１サイクルごとに１バイトの乱数が得られるようにするため、８個の線形帰還シフトレジスタ１を設けることができる。
【００３１】
初期値設定部５４´において、８個の線形帰還シフトレジスタ１に初期値が設定される。そして、巡回制御部５５´において、入力データＤｉｎ［７：０］の入力サイクルに従って８個の線形帰還シフトレジスタ１の値が１ビットづつ巡回され、各線形帰還シフトレジスタ１の最終段のレジスタ出力ｆ０〜ｆ７が各線形帰還シフトレジスタ１からスクランブル回路５６に入力される。スクランブル回路５６において、入力データＤｉｎ［７：０］の各ビットと各線形帰還シフトレジスタ１の最終段のレジスタ出力ｆ０〜ｆ７とのＸＯＲがとられることで、入力データＤｉｎ［７：０］がランダマイズされた出力データＤｏｕｔ［７：０］が生成される。
【００３２】
ここで、初期値選択部５３では、メモリセルを分類するパラメータと初期値との対応関係を可変とすることができる。このため、８個の線形帰還シフトレジスタ１の最終段のレジスタ出力ｆ０〜ｆ７を乱数として用いる場合であって、各ＮＡＮＤメモリの設計変更があった場合においても、ＮＡＮＤメモリの同一ブロックに書き込まれるデータが周期性を持つのを防止することが可能となる。
【００３３】
（第４実施形態）
図９は、第４実施形態に係るランダマイズ処理装置の概略構成を示すブロック図である。
図９の構成では、図５の構成に対しレジスタ５２に撹拌値５２Ｅが追加して保持される。また、図５の構成に対しＸＯＲ回路５８が追加されている。それ以外の図９の構成は図５の構成と同様である。ＸＯＲ回路５８は、初期値５１Ａと撹拌値５２ＥとのＸＯＲをビットごとにとることができる。初期値５１Ａが３２ビットで構成されている場合、撹拌値５２Ｅも３２ビットで構成することができる。
【００３４】
そして、初期値選択部５３にて初期値５１Ａが選択されると、ＸＯＲ回路５８にてその初期値５１Ａと撹拌値５２ＥとのＸＯＲがとられ、初期値設定部５４に送られる。初期値設定部５４では、ＸＯＲ回路５８でのＸＯＲ演算結果が線形帰還シフトレジスタ１に初期値として設定される。
【００３５】
ここで、初期値５１Ａと撹拌値５２ＥとのＸＯＲをとることで、初期値５１Ａを撹拌値５２Ｅで撹拌することができる。このため、線形帰還シフトレジスタ１から取り出されるレジスタ出力ｂ０〜ｂ７の乱数性を向上させることができる。
【００３６】
（第５実施形態）
図１０は、第５実施形態に係るランダマイズ処理装置の概略構成を示すブロック図である。
図１０の構成では、図５の構成に対しレジスタ５２に撹拌値５２Ｆが追加して保持される。また、図５の構成に対し撹拌回路５９が追加されている。それ以外の図１０の構成は図５の構成と同様である。撹拌回路５９は、線形帰還シフトレジスタ１のレジスタ出力ｂ０〜ｂ７を撹拌することができる。撹拌回路５９には、レジスタ出力ｂ０〜ｂ７の各ビットごとにＸＯＲ回路６０が設けられている。ＸＯＲ回路６０は、レジスタ出力ｂ０〜ｂ７と撹拌値５２ＦとのＸＯＲをビットごとにとることができる。レジスタ出力ｂ０〜ｂ７が８ビットである場合、撹拌値５２Ｆも８ビットで構成することができる。
【００３７】
初期値５１Ａが線形帰還シフトレジスタ１に設定されると、入力データＤｉｎ［７：０］の入力サイクルに従って線形帰還シフトレジスタ１の値が１ビットづつ巡回され、その時のレジスタ出力ｂ０〜ｂ７が線形帰還シフトレジスタ１から撹拌回路５９に入力される。撹拌回路５９においてレジスタ出力ｂ０〜ｂ７と撹拌値５２Ｆの各ビットとのＸＯＲがとられ、スクランブル回路５６に入力される。スクランブル回路５６において、入力データＤｉｎ［７：０］の各ビットと撹拌回路５９でのＸＯＲ演算結果の各ビットとのＸＯＲがとられることで、入力データＤｉｎ［７：０］がランダマイズされた出力データＤｏｕｔ［７：０］が生成される。
【００３８】
ここで、レジスタ出力ｂ０〜ｂ７と撹拌値５２ＦとのＸＯＲをとることで、レジスタ出力ｂ０〜ｂ７を撹拌値５２Ｆで撹拌することができる。このため、入力データＤｉｎ［７：０］のランダマイズに用いられる乱数の乱数性を向上させることができる。なお、図９または図１０の撹拌機能は図８の構成に適用してもよい。
【００３９】
（第６実施形態）
図１１は、第６実施形態に係る半導体記憶装置の構成例を示すブロック図である。
図１１において、半導体記憶装置１１には、コントローラ１２および不揮発性メモリ１３が設けられている。半導体記憶装置１１は、ホスト１４と接続可能である。ホスト１４は、例えば、パーソナルコンピュータ、携帯端末などの電子機器である。
【００４０】
不揮発性メモリ１３は、データを不揮発に記憶する半導体メモリであり、例えば、ＮＡＮＤメモリである。ＮＡＮＤメモリでは、ページ単位でデータの書き込みおよび読み出しを行うことができる。ＮＡＮＤメモリでは、ブロック単位でデータの消去を行うことができる。ＮＡＮＤメモリのメモリセルは、１ビットの記憶が可能なシングルレベルセルであってもよいし、２ビット以上の記憶が可能なマルチレベルセルであってもよい。
【００４１】
コントローラ１２は、ホスト１４からの書込みコマンドに従って不揮発性メモリ１３への書込みを制御する。コントローラ１２は、ホスト１４からの読み出しコマンドに従って不揮発性メモリ１３からの読み出しを制御する。コントローラ１２には、ＨｏｓｔＩ／Ｆ２１、メモリＩ／Ｆ２２、制御部２３、ＥＣＣ部２４およびデータバッファ２７が設けられている。ＨｏｓｔＩ／Ｆ２１、メモリＩ／Ｆ２２、制御部２３、ＥＣＣ部２４およびデータバッファ２７は、内部バス２０で互いに接続されている。ＨｏｓｔＩ／Ｆ２１は、ホスト１４から受信したコマンドやユーザデータ（書き込みデータ）などを内部バス２０に出力する。また、ＨｏｓｔＩ／Ｆ２１は、不揮発性メモリ１３から読み出されたユーザデータ（読み出しデータ）や制御部２３からの応答などをホスト１４へ送信する。
メモリＩ／Ｆ２２は、制御部２３の指示に基づいて、ユーザデータ等を不揮発性メモリ１３へ書込む処理および不揮発性メモリ１３から読み出す処理を制御する。
【００４２】
制御部２３は、半導体記憶装置１１を統括的に制御する。制御部２３は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等である。制御部２３は、ホスト１４からＨｏｓｔＩ／Ｆ２１経由でコマンドを受けた場合に、そのコマンドに従った制御を行う。例えば、制御部２３は、ホスト１４からのコマンドに従って、不揮発性メモリ１３へのユーザデータの書き込みをメモリＩ／Ｆ２２へ指示する。制御部２３は、ホスト１４からのコマンドに従って、不揮発性メモリ１３からのユーザデータの読み出しをメモリＩ／Ｆ２２へ指示する。
制御部２３は、データバッファ２７に蓄積されるユーザデータに対して、不揮発性メモリ１３のメモリ領域を決定する。ユーザデータは、内部バス２０経由でデータバッファ２７に格納される。制御部２３は、決定したメモリ領域を指定してユーザデータを不揮発性メモリ１３へ書き込むようメモリＩ／Ｆ２２へ指示する。制御部２３は、ホスト１４からの読出しコマンドを受信した場合は、読出しコマンドに含まれるアドレスからのユーザデータの読み出しをメモリＩ／Ｆ２２へ指示する。
【００４３】
ＥＣＣ部２４には、符号化部２５、復号部２６、ランダマイズ処理部３１およびランダマイズ解除部３２が設けられている。ランダマイズ処理部３１は、不揮発性メモリ１３の同一ページに書込まれる所定サイズのユーザデータをランダマイズし、符号化部２５に送る。符号化部２５はランダマイズされたユーザデータを符号化する。復号部２６は、不揮発性メモリ１３の同一ページから読み出された所定サイズのユーザデータを復号化し、ランダマイズ解除部３２に送る。ランダマイズ解除部３２は、ランダマイズされたユーザデータのランダマイズを解除する。ランダマイズ処理部３１は、図２、図５、図８、図９および図９のいずれかの構成を用いることができる。ランダマイズ解除部３２はランダマイズ処理部３１と同様に構成することができる。
【００４４】
データバッファ２７は、ホスト１４から受信したユーザデータを不揮発性メモリ１３へ記憶するまでに一時的に格納したり、不揮発性メモリ１３から読出したデータをホスト１４へ送信するまでに一時的に格納する。データバッファ２７は、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの揮発性メモリを用いることができる。
【００４５】
ＮＡＮＤメモリでは、データの上書きができない。このため、ページ単位でデータの書き込みを行う場合は、そのページを含むブロックのデータを外部に一旦保持してから、そのブロックのデータを消去する。そして、そのブロックに対し、今回のデータの書き込みが行われるとともに、外部に一旦保持されたデータが書き戻される。
【００４６】
この時、例えば、図２の構成では、ブロックの所定領域に新規にデータを書き込む時と、その所定領域にデータを書き戻す時とで、線形帰還シフトレジスタ１の初期値５１Ａを変化させることができる。このため、ＮＡＮＤメモリの同一セルに同一の値が何度も繰り返し書き込まれるのを防止することができ、ＮＡＮＤメモリの信頼性の低下を抑制することができる。
【００４７】
図１２は、図１１の不揮発性メモリの概略構成を示すブロック図である。
図１２において、メモリセルアレイ４１には、メモリセルが３次元的に配置されている。メモリセルアレイ４１には、複数のビット線ＢＬ、複数のワード線ＷＬおよび複数のセレクトゲート線ＳＧＬが設けられている。ビット線ＢＬはメモリセルをロウ方向ＤＥ１に選択することができる。セレクトゲート線ＳＧＬはメモリセルをカラム方向ＤＥ２に選択することができる。ワード線ＷＬのメモリセルのレイヤを選択することができる。メモリセルアレイ４１は、ｅ（ｅは正の整数）個のブロックＢ１〜Ｂｅに分割されている。各ブロックＢ１〜Ｂｅは、ＮＡＮＤセルユニットをロウ方向ＤＥ１およびカラム方向ＤＥ２に複数配列して構成することができる。ＮＡＮＤセルユニットでは、直列接続されたメモリセルが積層されている。メモリセルアレイ４１には、ビット線ＢＬを制御するビット制御回路４２、ワード線ＷＬを制御するワード線制御回路４６およびセレクトゲート線ＳＧＬを制御するセレクトゲート線制御回路４９が接続されている。
【００４８】
ビット線制御回路４２は、ビット線ＢＬを介してメモリセルアレイ４１中のメモリセルのデータを読み出したり、ビット線ＢＬを介してメモリセルアレイ４１中のメモリセルの状態を検出したり、ビット線ＢＬを介してメモリセルアレイ４１中のメモリセルに書き込み制御電圧を印加してメモリセルに書き込みを行う。ビット線制御回路４２には、カラムデコーダ４３、データ入出力バッファ４４が接続されている。ビット線制御回路４２内のデータ記憶回路はカラムデコーダ４３によって選択される。データ記憶回路に読み出されたメモリセルのデータは、データ入出力バッファ４４を介してデータ入出力端子４５からコントローラ１２へ出力される。コントローラ１２から供給されたＮＡＮＤメモリの動作を制御する各種コマンドＣＭＤ、アドレスＡＤＤおよびデータＤＴは、データ入出力端子４５に入力される。データ入出力端子４５に入力された書き込みデータは、データ入出力バッファ４４を介して、カラムデコーダ４３によって選択されたデータ記憶回路に供給され、コマンドＣＭＤおよびアドレスＡＤＤは制御回路４７に供給される。
【００４９】
ワード線制御回路４６は、メモリセルアレイ４１中のワード線ＷＬを選択し、選択されたワード線ＷＬに対し、読み出し、書き込みあるいは消去に必要な電圧を印加する。
セレクトゲート線制御回路４９は、メモリセルアレイ４１中のセレクトゲート線ＳＧＬを選択し、選択されたセレクトゲート線ＳＧＬに対し、読み出し、書き込みあるいは消去に必要な電圧を印加する。
【００５０】
メモリセルアレイ４１、ビット線制御回路４２、カラムデコーダ４３、データ入出力バッファ４４、ワード線制御回路４６およびセレクトゲート線制御回路４９は、制御回路４７に接続され、この制御回路４７によって制御される。制御回路４７は、制御信号入力端子４８に接続され、外部から制御信号入力端子４８を介して入力される制御信号ＡＬＥ（アドレス・ラッチ・イネーブル）、ＣＬＥ（コマンド・ラッチ・イネーブル）、ＷＥ（ライト・イネーブル）およびＲＷ（リード・イネーブル）によって制御される。
【００５１】
図１３は、図１２の不揮発性メモリの概略構成例を示す斜視図である。なお、図１３では、１つのブロックにおいて、ワード線ＷＬが４層積層され、ビット線ＢＬが８本設けられ、ドレイン側のセレクトゲート線ＳＧＤが４本設けられている場合を例にとった。
図１３において、不揮発性メモリ１３には、セルアレイ領域ＲＭが設けられている。セルアレイ領域ＲＭでは、ワード線ＷＬ１〜ＷＬ４が積層方向ＤＥ３に順次積層されることで３次元構造体が構成されている。そして、柱状体ＰＳがワード線ＷＬ１〜ＷＬ４を貫通することで、柱状体ＰＳと各ワード線ＷＬ１〜ＷＬ４との交点部分にメモリセルが形成される。柱状体ＰＳには、データを記憶するメモリ膜を設けることができる。メモリ膜は、例えば、ＳｉＮなどのチャージトラップ膜を用いることができる。各柱状体ＰＳは、ＮＡＮＤセルを構成することができる。この時、柱状体ＰＳがロウ方向ＤＥ１およびカラム方向ＤＥ２に２次元的に配列されることで、メモリセルがセルアレイ領域ＲＭに３次元的に配置される。図１３の例では、メモリセルがロウ方向ＤＥ１に８個、カラム方向ＤＥ２に４個、積層方向ＤＥ３に４個だけ配置されている。この時、各ワード線ＷＬ１〜ＷＬ４は、同一レイヤのメモリセルで共有することができる。セルアレイ領域ＲＭ下には、ソース側セレクトゲート線ＳＧＳが設けられている。セルアレイ領域ＲＭ上には、ドレイン側セレクトゲート線ＳＧＤ１〜ＳＧＤ４が設けられている。ドレイン側セレクトゲート線ＳＧＤ１〜ＳＧＤ４はロウごとに分離することができる。この時、同一レイヤかつ同一ロウに属するメモリセルでページＰＧＥを構成することができる。図１３の例では、１ページに８個のメモリセルが設けられている。
【００５２】
ソース側セレクトゲート線ＳＧＳ下にはソース層Ｂ２が設けられている。ワード線駆動回路Ｂ１、ソース側セレクトゲート線駆動回路Ｂ３およびドレイン側セレクトゲート線駆動回路Ｂ４がソース層Ｂ２に並列して配置されている。ワード線駆動回路Ｂ１、ソース層Ｂ２、ソース側セレクトゲート線駆動回路Ｂ３およびドレイン側セレクトゲート線駆動回路Ｂ４は半導体基板に形成することができる。
【００５３】
ソース側セレクトゲート線ＳＧＳ上には、引き出し線Ｗ５が形成されている。そして、ソース側セレクトゲート線ＳＧＳは、引き出し線Ｗ５を介してソース側セレクトゲート線駆動回路Ｂ３に接続されている。ドレイン側セレクトゲート線ＳＧＤ１〜ＳＧＤ４上には、ビット線ＢＬ０〜ＢＬ７がカラム方向ＤＥ２に形成されている。ビット線ＢＬ０〜ＢＬ７は、図１２のブロックＢ１〜Ｂｅで共有することができる。また、各ドレイン側セレクトゲート線ＳＧＤ１〜ＳＧＤ４上には、引き出し線Ｗ６〜Ｗ９がロウ方向ＤＥ１に形成されている。そして、ドレイン側セレクトゲート線ＳＧＤ１〜ＳＧＤ４は、引き出し線Ｗ６〜Ｗ９をそれぞれ介してドレイン側セレクトゲート線駆動回路Ｂ４に接続されている。ワード線ＷＬ１〜ＷＬ４のロウ方向ＤＥ１の一端は階段形状を持っている。この時、ワード線ＷＬ１〜ＷＬ４のロウ方向ＤＥ１の一端では、下層のワード線が上層のワード線から露出される。ワード線ＷＬ１〜ＷＬ４上には、引き出し線Ｗ１〜Ｗ４がロウ方向ＤＥ１に形成されている。各ワード線ＷＬ１〜ＷＬ４はコンタクトプラグＶ１〜Ｖ４をそれぞれ介して引き出し線Ｗ１〜Ｗ４に接続されている。引き出し線Ｗ１〜Ｗ４はワード線駆動回路Ｂ１に接続されている。
【００５４】
そして、ワード線ＷＬ１〜ＷＬ４のうちのいずれか１本と、ドレイン側セレクトゲート線ＳＧＤ１〜ＳＧＤ４のうちのいずれか１本を選択することで、１つのページＰＧＥを指定することができる。この指定されたページＰＧＥの書き込み時に、図２の出力データＤｏｕｔ［７：０］が図１１のランダマイズ処理部３１から符号化部２５に送られる。そして、符号化部２５で符号化された符号化データが図１２のデータＤＴとしてデータ入出力端子４５に入力される。このデータＤＴに従ってビット線ＢＬ０〜ＢＬ７の電位が制御されることで、指定ページに書き込みが行われる。
【００５５】
ここで、図１３の構成では、ワード線ＷＬ１とドレイン側セレクトゲート線ＳＧＤ４とで特定されるページと、ワード線ＷＬ２とドレイン側セレクトゲート線ＳＧＤ１とで特定されるページとは離れている。このため、これらの２つのページについて同一の初期値５１Ａを線形帰還シフトレジスタ１に設定した時に、これらの２つのページのデータの周期が一致しても、これらの２つのページのメモリセル間で干渉は起こらない。
【００５６】
一方、図１３の構成の設計変更がなされ、ドレイン側セレクトゲート線ＳＧＤ５が追加されたものとする。そして、設計変更前のワード線ＷＬ２とドレイン側セレクトゲート線ＳＧＤ１とで特定されるページが、設計変更後にはワード線ＷＬ１とドレイン側セレクトゲート線ＳＧＤ５とで特定されるページに移されたものとする。この時、ワード線ＷＬ１とドレイン側セレクトゲート線ＳＧＤ４とで特定されるページと、ワード線ＷＬ１とドレイン側セレクトゲート線ＳＧＤ５とで特定されるページとは隣接する。このため、これらの２つのページについて同一の初期値５１Ａを線形帰還シフトレジスタ１に設定すると、これらの２つのページのデータの周期が一致し、これらの２つのページのメモリセル間で干渉が起こることがある。
ここで、例えば、図５の構成を用いたものとする。この時、メモリセルを分類するパラメータと初期値５１Ａとの対応関係を可変とすることができる。このため、ワード線ＷＬ１とドレイン側セレクトゲート線ＳＧＤ４とで特定されるページと、ワード線ＷＬ１とドレイン側セレクトゲート線ＳＧＤ５とで特定されるページとで初期値５１Ａを異ならせることができ、これらの２つのページのメモリセル間で干渉が起き難くすることができる。
なお、上述した実施形態では、ＮＡＮＤメモリとして３次元ＮＡＮＤフラッシュメモリを例にとったが、２次元ＮＡＮＤフラッシュメモリであってもよい。
【００５７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５８】
１  線形帰還シフトレジスタ、２  レジスタ、３  ＸＯＲ演算部、４  乱数出力部
【図１】
0006499065.tif 000002
【図２】
0006499065.tif 000003
【図３】
0006499065.tif 000004
【図４】
0006499065.tif 000005
【図５】
0006499065.tif 000006
【図６】
0006499065.tif 000007
【図７】
0006499065.tif 000008
【図８】
0006499065.tif 000009
【図９】
0006499065.tif 000010
【図１０】
0006499065.tif 000011
【図１１】
0006499065.tif 000012
【図１２】
0006499065.tif 000013
【図１３】
0006499065.tif 000014