JP2021047781A - メモリシステム - Google Patents

メモリシステム Download PDF

Info

Publication number
JP2021047781A
JP2021047781A JP2019171296A JP2019171296A JP2021047781A JP 2021047781 A JP2021047781 A JP 2021047781A JP 2019171296 A JP2019171296 A JP 2019171296A JP 2019171296 A JP2019171296 A JP 2019171296A JP 2021047781 A JP2021047781 A JP 2021047781A
Authority
JP
Japan
Prior art keywords
credit
unit
memory system
data
value
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.)
Pending
Application number
JP2019171296A
Other languages
English (en)
Inventor
安井 啓介
Keisuke Yasui
啓介 安井
隆二 西久保
Ryuji Nishikubo
隆二 西久保
典生 青山
Norio Aoyama
典生 青山
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.)
Toshiba Information Systems Japan Corp
Kioxia Corp
Original Assignee
Toshiba Information Systems Japan Corp
Kioxia Corp
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 Toshiba Information Systems Japan Corp, Kioxia Corp filed Critical Toshiba Information Systems Japan Corp
Priority to JP2019171296A priority Critical patent/JP2021047781A/ja
Priority to US16/818,775 priority patent/US20210089234A1/en
Publication of JP2021047781A publication Critical patent/JP2021047781A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Marketing (AREA)
  • Finance (AREA)
  • Development Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Technology Law (AREA)
  • Educational Administration (AREA)
  • Game Theory and Decision Science (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】複数のユーザに適切に性能を割り当てることが可能なメモリシステムを提供する。【解決手段】メモリシステムは、データを記憶する不揮発性記憶装置と、ユーザ毎に割り当てられ、第1管理データを含む第1情報を管理し、ユーザから不揮発性記憶装置へのアクセス要求を受信し、且つ第1管理データが、第1値以上である場合、不揮発性記憶装置へのアクセスに関する第1処理を行い、第1管理データが、第2値以上である場合、不揮発性記憶装置へのアクセスに関する第2処理を行うメモリコントローラと、を備える。【選択図】 図5

Description

実施形態は、メモリシステムに関する。
不揮発性半導体記憶装置として、NAND型フラッシュメモリチップが知られている。
米国特許出願公開第2018/165698号明細書
複数のユーザに適切に性能を割り当てることが可能なメモリシステムを提供する。
実施形態のメモリシステムは、データを記憶する不揮発性記憶装置と、ユーザ毎に割り当てられ、第1管理データを含む第1情報を管理し、ユーザから不揮発性記憶装置へのアクセス要求を受信し、且つ第1管理データが、第1値以上である場合、不揮発性記憶装置へのアクセスに関する第1処理を行い、第1管理データが、第2値以上である場合、不揮発性記憶装置へのアクセスに関する第2処理を行うメモリコントローラと、を備える。
実施形態に係るメモリシステム1の構成例を示すブロック図である。 実施形態に係るメモリシステムのNAND型フラッシュメモリチップの構成例を示すブロック図である。 実施形態に係るメモリシステムのNAND型フラッシュメモリチップに含まれるメモリセルアレイの構成例を示す回路図である。 実施形態に係るメモリセルトランジスタMTの取り得るデータ、閾値電圧分布、及び読出し時に用いる電圧について示したダイアグラムである。 実施形態に係るメモリシステムのアクセス管理部の構成例を示すブロック図である。 実施形態に係る複数のキューのデータ構造を示す図である。 実施形態に係るメモリシステムの第1の動作を示すフローチャートである。 実施形態に係るメモリシステムの第1の動作を示すブロック図である。 実施形態に係るメモリシステムの第2の動作を示すフローチャートである。 実施形態に係るメモリシステムの第2の動作を示すブロック図である。 実施形態に係るメモリシステムの第3の動作を示すフローチャートである。 実施形態に係るメモリシステムの第3の動作を示すブロック図である。 実施形態に係るメモリシステムの第4の動作を示すフローチャートである。 実施形態に係るメモリシステムの第4の動作を示すブロック図である。 実施形態に係るメモリシステムの第5の動作を示すフローチャートである。 実施形態に係るメモリシステムの第5の動作を示すブロック図である。 実施形態に係るメモリシステムの第5の動作を示すフローチャートである。 実施形態に係るメモリシステムの第5の動作を示すブロック図である。 実施形態に係るメモリシステムの第6の動作を示すフローチャートである。 実施形態に係るメモリシステムの第6の動作を示すブロック図である。 実施形態に係るメモリシステムの第7の動作を示すフローチャートである。 実施形態に係るメモリシステムの第7の動作を示すブロック図である。 実施形態に係るメモリシステムの第7の動作を示すフローチャートである。 実施形態に係るメモリシステムの第7の動作を示すフローチャートである。 実施形態に係るメモリシステムの第7の動作を示すフローチャートである。
以下に、実施形態について図面を参照して説明する。図面は模式的なものである。尚、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付して、重複説明を避ける。参照符号を構成する文字の後の数字、及び参照符号を構成する数字の後の文字は、同じ文字及び数字を含んだ参照符号によって参照され、且つ同様の構成を有する要素同士を区別するために用いられている。同じ文字又は同じ数字を含んだ参照符号で示される要素を相互に区別する必要がない場合、これらの要素は同じ文字又は同じ数字のみを含んだ参照符号により参照される。
各機能ブロックは、ハードウェア、コンピュータソフトウェア、のいずれかまたは両者の組み合わせとして実現することができる。このため、各ブロックは、これらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明される。このような機能が、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、種々の方法でこれらの機能を実現し得るが、そのような実現を決定することは本発明の範疇に含まれるものである。
なお、実施形態の各種処理はコンピュータプログラムによって実現することができる。そのため、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じて、このコンピュータプログラムを通常のコンピュータにインストールして実行しても良い。
<1>実施形態
以下に、実施形態に係るメモリシステムについて説明する。本実施形態では、データセンター等に配置され、複数のユーザによって共有されるメモリシステムについて説明する。以下では、メモリシステムを複数のユーザにて共有させるサービスにおいて、サービスへの課金額に応じたアクセス性能を、ユーザに適切に割り当てるための構成並びに方法について説明する。
例えばメモリシステムは、データセンター等に配置され、複数のユーザによって共有されることがある。データセンターのシステムでは、NANDパッケージ群へのアクセス方法やNANDパッケージ群の構造の違いによりNANDパッケージ群の占有時間が変わる。NANDパッケージ群の占有時間は、ホスト機器側から管理することが難しい。例えば、NANDパッケージ群へのアクセス方法として、大きくわけて「シーケンシャル読み出し/シーケンシャル書き込み」(シーケンシャルアクセスとも記載する)と、「ランダム読み出し/ランダム書き込み」(ランダムアクセスとも記載する)と、の2つがある。シーケンシャルアクセスは、規則正しく並んだデータを順番に読み書きする方法である。一方で、ランダムアクセスは、アドレスの順序に従わず無作為にデータを読み書きする方法である。ランダムアクセスを行うと、チップの記憶領域にランダムにデータが記憶され、整理されていない状態となる。このような場合、メモリシステムは、チップ内の記憶領域を整理する動作(内部アクセス処理)を行う必要がでてくる。そのため、例えばあるユーザが、ランダムアクセスを行うと、メモリシステムは、ランダムアクセスに加えて、内部アクセス処理を行う必要が出てくる。その結果、チップの占有時間が増大し、他のユーザのアクセス性能が低下し、メモリシステムのサービス品質が低下する問題がある。メモリシステム1を複数のユーザにて共有させるサービスにおいては、サービスへの課金額に応じたアクセス性能を、ユーザに適切に割り当てたいという要望がある。
<1−1>構成
<1−1−1>メモリシステム1の構成
第1実施形態に係るメモリシステムの構成について、図1を用いて説明する。図1は、実施形態に係るメモリシステム1の構成例を示すブロック図である。
図1に示すように、メモリシステム1は、メモリコントローラ100、NANDパッケージ群200、及びDRAM(Dynamic Random Access Memory)300を備えている。メモリコントローラ100、NANDパッケージ群200、及びDRAM300は、例えばそれらの組み合わせにより一つの半導体装置を構成しても良く、その例としてはSDTMカードのようなメモリカードや、SSD(solid state drive)等が挙げられる。
メモリコントローラ100は、NANDパッケージ群200及びDRAM300を制御する。具体的には、メモリコントローラ100は、例えばSoC(System on a Chip)、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)等のIC(Integrated Circuit)であり、NANDパッケージ群200、及びDRAM300に各種動作を命令することが出来る。また、メモリコントローラ100は、ホストコマンド(命令)に基づいた動作(外部アクセス処理)と、ホストコマンドに依らない動作(内部アクセス処理)とを実行する。メモリコントローラ100の詳細な構成については後述する。
メモリコントローラ100は、ホストバスを介してホスト機器2に接続される。また、メモリコントローラ100は、後述するNANDインターフェースに従った信号の送受信を行うNANDバスによって、NANDパッケージ群200に接続される。また、メモリコントローラ100は、後述するDRAMインターフェースに従った信号の送受信を行うDRAMバスによって、DRAM300に接続される。ホスト機器2は、メモリシステム1の外部の情報処理装置である。ホスト機器2は、例えばパーソナルコンピュータ等である。ホストバスは、例えばSDTMインターフェース、SAS(Serial attached SCSI(small computer system interface))、SATA(Serial ATA(advanced technology attachment))、PCIe(Peripheral component interconnect express)、又はNVMe(Non‐volatile memory express)に従ったバスである。
メモリコントローラ100がホスト機器2から受信するデータの形式は「ストリーム」方式、または「ネームスペース」方式を採用する。以下では、一例として「ストリーム」方式を採用することで、ユーザを管理する方法について説明する。しかし、ユーザを管理する方法はこれに限らず、その他の方式であっても良い。ユーザとは、メモリシステム1を使用するユーザを意味する。このストリームは、ユーザからの要求(またはアクセス要求)と、言い換えることもできる。「ストリーム」方式が採用される場合は、「ストリーム」という仕様のデータ構造にてデータがホスト機器2からメモリシステム1へと送信される。そして、このストリームは、例えば番号が割り当てられる。このストリームに割り当てられた番号を、ユーザを管理する番号に対応すると見なすことができる。つまり、ストリームに番号を割り当てることで、メモリシステム1は、どのユーザからのアクセスなのかを認識することができる。
NANDパッケージ群200は、データを不揮発に記憶する複数の不揮発性メモリである。NANDパッケージ群200は、複数のチャネルCH(CH0、CH1、…)を含む。複数のチャネルCHの各々は、対応するNANDバスによって、メモリコントローラ100に対して個別に接続される。なお、NANDパッケージ群200内のチャネル数は、任意の数が適用可能である。複数のチャネルCHの各々は、複数のチップCP(CP0、CP1、…)を含む。複数のチップCPの各々は、例えばNAND型フラッシュメモリである。なお、チャネルCH内のチップCPの数は、任意の数が適用可能である。当該構成は、図示しない他のチャネルCHにおいても同様である。チップCPの構成については、後述する。以下ではチップCPの一例としてNAND型フラッシュメモリチップを例に挙げて説明するが、これに限らず他のメモリ(例えばMRAM(Magnetoresistive Random Access Memory)、PCRAM(Phase Change Random Access Memory)、ReRAM(Resistive Random Access Memory)等)であっても良い。
DRAM300は、データを一時的に記憶することが可能な揮発性メモリである。また、メモリシステム1が備える揮発性メモリは、DRAMに限定されない。例えばメモリシステム1は、揮発性メモリとしてSRAM(Static Random Access Memory)等を備えていても良い。
DRAM300は、プロセッサ130の作業領域として使用される。そしてDRAM300は、NANDパッケージ群200を管理するためのファームウェアや、後述する履歴テーブル等の、各種の管理テーブル等を保持する。
<1−1−2>メモリコントローラの構成
引き続き図1を用いて、メモリコントローラ100の詳細な構成について説明する。
メモリコントローラ100は、ホストインターフェース回路(ホスト I/F)110、アクセス管理部120、プロセッサ(CPU:Central Processing Unit)130、バッファメモリ140、タイマ150、ECC(Error Correction Code)回路160、NANDインターフェース回路(NAND I/F)170、及びDRAMインターフェース回路(DRAM I/F)180を備えている。なお、以下に説明されるメモリコントローラ100の各部の機能は、ハードウェア構成、又はハードウェア資源とファームウェアとの組合せ構成のいずれでも実現可能である。
ホストインターフェース回路110は、ホストバスを介してホスト機器2と接続される。そして、ホストインターフェース回路110は、ホスト機器2からストリームを受信する。このストリームは、例えばホストコマンド及びデータを含んでいる。また、ストリームは、例えばユーザ毎に番号が割り当てられる。また、ホストインターフェース回路110は、プロセッサ130の命令に応答して、バッファメモリ140内のデータをホスト機器2へ転送する。
アクセス管理部120は、ユーザ毎に割り当てられるアクセス性能を管理する。アクセスとは、チップCPへのデータの書き込み、またはチップCPからのデータの読み出し動作等を意味する。アクセス性能とは、チップCPへのアクセスに要する時間に関わる。換言すると、アクセス性能が高い場合は、チップCPを占有する時間が長くなり、アクセス性能が低い場合は、チップCPを占有する時間が短くなる。
プロセッサ130は、メモリコントローラ100全体の動作を制御する。例えば、プロセッサ130は、DRAM300に記憶されたソフトウェアを実行する。
バッファメモリ140は、書込みデータや読出しデータ、及びECC回路160によって誤り訂正された読出しデータ(期待データとも呼ぶ)を一時的に保持する。
タイマ150は、メモリシステム1の各種動作に関連する時刻を計測することが出来る。タイマ150は、例えば並列動作する複数のチップCPの時刻の情報(時刻情報)を取得できる。チップCP毎の時刻情報は、DRAM300等に記憶されても良い。
ECC回路160は、NANDパッケージ群200に記憶されるデータに関する誤り検出及び誤り訂正処理を行う。すなわちECC回路160は、データの書き込み時には誤り訂正符号を生成して、これを書込みデータに付与する。また、ECC回路160は、データの読出し処理時にはこれを復号し、誤りビットの有無を検査する。そして誤りビットが検出された際には、ECC回路160は、誤りビットの位置を特定し、誤りを訂正する。誤り訂正の方法は、例えば、硬判定復号(Hard bit decoding)及び軟判定復号(Soft bit decoding)を含む。硬判定復号に用いられる硬判定復号符号としては、例えば、BCH(Bose‐Chaudhuri‐Hocquenghem)符号やRS(Reed‐Solomon)符号等を用いることができ、軟判定復号に用いられる軟判定復号符号としては、例えば、LDPC(Low Density Parity Check)符号等を用いることができる。
NANDインターフェース回路170は、NANDバスを介してNANDパッケージ群200と接続され、メモリコントローラ100とNANDパッケージ群200との通信を司る。そして、アクセス管理部120から受信した命令に基づき、後述する各種信号をNANDパッケージ群200と送受信する。
DRAMインターフェース回路180は、DRAMバスを介してDRAM300と接続され、DRAM300との通信を司る。そして、アクセス管理部120から受信した命令に基づき、後述する各種信号をDRAM300と送受信する。
<1−1−3>チップの構成
次に、チップCPの構成について、図2を用いて説明する。図2では、メモリコントローラ100とチャネルCH0との接続関係と、チャネルCH0内の1つのチップCP0の構成と、が一例として示される。
まず、メモリコントローラ100とチャネルCH0との接続関係について説明する。なお、メモリコントローラ100とCH1等の他のチャネルとの接続関係は、メモリコントローラ100とチャネルCH0との接続関係と同等であるため、説明を省略する。
図2に示すように、チャネルCH0は、メモリコントローラ100と接続され、各種信号を送受信する。各種信号の具体例は、チップイネーブル信号CEn(CE0n、CE1n、…)、アドレスラッチイネーブル信号ALE、コマンドラッチイネーブル信号CLE、ライトイネーブル信号WEn、リードイネーブル信号REn、レディビジー信号RBn(RB0n、RB1n、…)、及び入出力信号DQである。信号CE0n、CE1n、…はそれぞれ、チャネルCH0のチャネルCH0の各チップCP(チップCP0、CP1、…)に個別に入力され、信号RBn0、RBn1、…はそれぞれ、チャネルCH0の各チップCPから個別に出力される。信号ALE、CLE、WEn、REn、及びDQは、チャネルCH0の各チップCPに対して共通して入力される。
具体的には、信号CE0n、CE1n、…はそれぞれ、チップCP0、CP1、…をイネーブルにするための信号であり、“L(Low)”レベルでアサートされる。信号CLE及びALEは、各チップCPへの入力信号DQがそれぞれコマンド及びアドレスであることを各チップCPに通知する信号である。信号WEnは“L”レベルでアサートされ、入力信号DQを各チップCPに取り込ませるための信号である。信号REnも“L”レベルでアサートされ、各チップCPから出力信号DQを読み出すための信号である。レディビジー信号RB0n、RB1n、…はそれぞれ、チップCP0、CP1、…がレディ状態(メモリコントローラ100からのコマンドを受信出来る状態)であるか、それともビジー状態(メモリコントローラ100からのコマンドを受信出来ない状態)であるかを示す信号であり、“L”レベルがビジー状態を示す。入出力信号DQは、例えば8ビットの信号である。そして入出力信号DQは、各チップCPとメモリコントローラ100との間で送受信されるデータの実体であり、コマンドCMD、アドレスADD、並びに書き込みデータ及び読出しデータ等のデータDATである。
以上のようにCH0が構成されることにより、メモリコントローラ100は、チャネルCH内の任意の1つのチップCPと通信することができる。
次に、チャネルCH0内のチップCP0の構成について説明する。なお、CP1等の他のチップの構成は、チップCP0の構成と同等であるため、説明を省略する。
チップCP0は、メモリセルアレイ11、ロウデコーダ12、ドライバ13、センスアンプモジュール14、アドレスレジスタ15、コマンドレジスタ16、及びシーケンサ17を備える。
メモリセルアレイ11は、メモリコントローラ100から与えられたデータを記憶する。メモリセルアレイ11は、ロウ及びカラムに対応付けられた複数の不揮発性のメモリセルを含む複数のブロックBLKを備えている。図2では一例として4つのブロックBLK0〜BLK3が図示されている。
ロウデコーダ12は、アドレスレジスタ15内のブロックアドレスBAに基づいて複数のブロックBLKのいずれかを選択し、更に選択したブロックBLKにおいてワード線を選択する。
ドライバ13は、アドレスレジスタ15内のページアドレスPAに基づいて、選択されたブロックBLKに対して、ロウデコーダ12を介して電圧を供給する。
センスアンプモジュール14は、データの読出し時には、メモリセルアレイ11内のメモリセルトランジスタの閾値電圧をセンスし、データを読み出す。そして、センスアンプモジュール14は、読み出したデータDATをメモリコントローラ100に出力する。センスアンプモジュール14は、データの書き込み時には、メモリコントローラ100から受信した書き込みデータDATを、メモリセルアレイ11に転送する。
アドレスレジスタ15は、メモリコントローラ100から受信したアドレスADDを保持する。このアドレスADDには、上述のブロックアドレスBAとページアドレスPAとが含まれる。
コマンドレジスタ16は、メモリコントローラ100から受信したコマンドCMDを保持する。
シーケンサ17は、コマンドレジスタ16に保持されたコマンドCMDに基づき、チップCP0全体の動作を制御する。
次に、メモリセルアレイ11が備えるブロックBLKの構成について、図3を用いて説明する。図3は、いずれかのブロックBLKの回路図である。
図3に示すように、ブロックBLKは、例えば4つのストリングユニットSU(SU0〜SU3)を含む。そして各々のストリングユニットSUは、複数のNANDストリングNSを含む。メモリセルアレイ11内のブロック数、ブロックBLK内のストリングユニット数、及びストリングユニットSU内のNANDストリング数は任意である。
NANDストリングNSの各々は、例えば64個のメモリセルトランジスタMT(MT0〜MT63)並びに選択トランジスタST1及びST2を含んでいる。メモリセルトランジスタMTは、制御ゲートと電荷蓄積層とを備え、データを不揮発に保持する。そしてメモリセルトランジスタMTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に直列接続されている。
ストリングユニットSU0〜SU3の各々における選択トランジスタST1のゲートは、それぞれセレクトゲート線SGD0〜SGD3に接続される。これに対してストリングユニットSU0〜SU3の各々における選択トランジスタST2のゲートは、例えばセレクトゲート線SGSに共通接続される。あるいは、ストリングユニット毎に異なるセレクトゲート線SGS0〜SGS3に接続されても良い。また、同一のブロックBLK内にあるメモリセルトランジスタMT0〜MT63の制御ゲートは、それぞれワード線WL0〜WL63に共通接続される。
また、メモリセルアレイ11内において同一列にあるNANDストリングNSの選択トランジスタST1のドレインは、ビット線BL(BL0〜BL(m−1)、但しmは2以上の自然数)に共通接続される。すなわちビット線BLは、複数のブロックBLK間で同一列にあるNANDストリングNSを共通に接続する。更に、複数の選択トランジスタST2のソースは、ソース線SLに共通に接続されている。
つまりストリングユニットSUは、異なるビット線BLに接続され、かつ同一のセレクトゲート線SGDに接続されたNANDストリングNSの集合体である。ストリングユニットSUのうち、同一のワード線WLに共通接続されたメモリセルトランジスタMTの集合体を、セルユニットCU(又はメモリグループ)とも言う。またブロックBLKは、ワード線WLを共通にする複数のストリングユニットSUの集合体である。そしてメモリセルアレイ11は、ビット線BLを共通にする複数のブロックBLKの集合体である。
本例では、1つのメモリセルトランジスタMTが例えば2ビットデータを保持可能である。この2ビットデータを、下位のビットからそれぞれ下位(Lower)ビット、及び上位(Upper)ビットと呼ぶことにする。そして、同一のセルユニットCUに属するメモリセルの保持する下位ビットの集合を下位ページと呼び、上位ビットの集合を上位ページと呼ぶ。つまり、1つのストリングユニットSU内における1本のワード線WL(1つのセルユニットCU)には2ページが割当てられ、1つのストリングユニットSUは128ページ分の容量を有することになる。あるいは言い換えるならば、「ページ」とは、セルユニットCUに形成されるメモリ空間の一部、と定義することも出来る。データの書き込み及び読出しは、このページ毎又はセルユニットCU毎に行っても良い。
図4は、各メモリセルトランジスタMTの取り得るデータ、閾値電圧分布、及び読出し時に用いる電圧について示したダイアグラムである。
上述の通り、メモリセルトランジスタMTは、2ビットデータを保持可能である。すなわち、メモリセルトランジスタMTは、閾値電圧に応じて4個の状態を取ることが出来る。この4個の状態を、閾値電圧の低いものから順に、“Er”状態、“A”状態、“B”状態、及び“C”状態と呼ぶことにする。
“Er”状態のメモリセルトランジスタMTの閾値電圧は、電圧VA未満であり、データの消去状態に相当する。“A”状態のメモリセルトランジスタMTの閾値電圧は、電圧VA以上であり且つ電圧VB(>VA)未満である。“B”状態のメモリセルトランジスタMTの閾値電圧は、電圧VB以上であり且つ電圧VC(>VB)未満である。“C”状態のメモリセルトランジスタMTの閾値電圧は、電圧VC以上であり且つ電圧VREAD未満である。このように分布する4個の状態のうちで、“C”状態が、閾値電圧の最も高い状態である。電圧VA〜VCは、総称して電圧VCGRとも言う。電圧VREADは、例えば、読出し動作時において読出し対象でないワード線WLに印加される電圧であり、保持データにかかわらずメモリセルトランジスタMTをオンさせる電圧である。
また上記閾値電圧分布は、前述の下位ビット及び上位ビットからなる2ビット(2ページ)データを書き込むことで実現される。すなわち、上記“Er”状態から“C”状態と、下位ビット及び上位ビットとの関係は、例えば、次の通りである。
“Er”状態:“11”(“上位/下位”の順で表記)
“A”状態:“01”
“B”状態:“00”
“C”状態:“10”
このように、閾値電圧分布において隣り合う2つの状態に対応するデータ間では、2ビットのうちの1ビットのみが変化する。
従って、下位ビットを読み出す際には、下位ビットの値(“0”or“1”)が変化する境界に相当する電圧を用いれば良く、このことは上位ビットでも同様である。
すなわち、図5に示すように、下位ページ読出しは、“A”状態と“B”状態とを区別する電圧VBを読出し電圧として用いる。電圧VBを用いた読出し動作を、読出し動作BRと呼ぶ。読出し動作BRは、メモリセルトランジスタMTの閾値電圧が電圧VB未満か否かを判定する。
そして上位ページ読出しは、“Er”状態と“A”状態とを区別する電圧VA、及び“B”状態と“C”状態とを区別する電圧VCを読出し電圧として用いる。電圧VA及びVCを用いた読出し動作を、それぞれ読出し動作AR及びCRと呼ぶ。読出し動作ARにより、消去状態のメモリセルトランジスタMTが特定される。
なお、メモリセルアレイ11の構成についてはその他の構成であっても良い。すなわちメモリセルアレイ11の構成については、例えば、“THREE DIMENSIONAL STACKED NONVOLATILE SEMICONDUCTOR MEMORY”という2009年3月19日に出願された米国特許出願12/407,403号に記載されている。また、“THREE DIMENSIONAL STACKED NONVOLATILE SEMICONDUCTOR MEMORY”という2009年3月18日に出願された米国特許出願12/406,524号、“NON‐VOLATILE SEMICONDUCTOR STORAGE DEVICE AND METHOD OF MANUFACTURING THE SAME”という2010年3月25日に出願された米国特許出願12/679,991号、及び“SEMICONDUCTOR MEMORY AND METHOD FOR MANUFACTURING SAME”という2009年3月23日に出願された米国特許出願12/532,030号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
<1−1−4>アクセス管理部の構成
続いて、図5を用いて、アクセス管理部の構成について説明する。図5は、アクセス管理部120の構成を示すブロック図である。
図5に示すように、アクセス管理部120は、ストリーム制御部1210、スループット制御部1220、NAND帯域管理データ制御部1230、クレジット制御部1240、記憶部1250、NAND制御部1260、及び時間計測部1270を備えている。
ストリーム制御部1210は、ストリーム読出部1211、ホストコマンド解析部1212、ストリーム番号解析部1213、及びキュー更新部1214を備えている。
ストリーム読出部1211は、例えば回路であり、ストリーム記憶部1251に記憶されているストリームを読み出す。ホストコマンド解析部1212は、例えば回路であり、ストリーム読出部1211によって読み出されたストリームに含まれるホストコマンドの内容を解析する。ストリーム番号解析部1213は、例えば回路であり、読み出されたストリームの番号を解析する。これにより、読み出されたストリームが、どのユーザに関するストリームなのかを判定できる。キュー更新部1214は、例えば回路であり、キュー領域1255を更新する。例えば、キュー更新部1214は、キュー領域1255にコマンドを入力する。
スループット制御部1220は、スループット設定値更新部1221、及びスループット設定値読出部1222を備えている。
スループット設定値更新部1221は、例えば回路であり、スループット設定値記憶部1252に記憶されているスループット設定値を更新する。スループット設定値とは、単位時間あたりのメモリシステム1の処理能力を決定するためのデータである。このスループット設定値は、例えばホスト機器2によって更新される。スループット設定値読出部1222は、例えば回路であり、スループット設定値記憶部1252に記憶されているスループット設定値を読み出す。
NAND帯域管理データ制御部1230は、NAND帯域管理データ読出部1231、及びNAND帯域管理データ更新部1232を備えている。
NAND帯域管理データ読出部1231は、例えば回路であり、NAND帯域管理データ記憶部1253からNAND帯域管理データを読み出す。NAND帯域管理データについては後述する。NAND帯域管理データ更新部1232は、例えば回路であり、NAND帯域管理データ記憶部1253に記憶されているNAND帯域管理データを更新する。
クレジット制御部1240は、クレジット読出部1241、初期クレジット値算出部1242、初期クレジット値更新部1243、クレジット判定部1244、クレジット加算部1245、クレジット減算部1246、クレジット再供給条件判定部1247、キュー判定部1248、及びクレジット初期化部1249を備えている。
クレジット読出部1241は、例えば回路であり、クレジット記憶部1254に記憶されているクレジットを読み出す。クレジットは、ユーザ毎のアクセス性能を管理する為に用いられるデータである。詳細については後述する。初期クレジット値算出部1242は、例えば回路であり、初期クレジット値を算出する。初期クレジット値は、クレジットに含まれるデータである。詳細については、後述する。初期クレジット値更新部1243は、例えば回路であり、クレジット記憶部1254に記憶されているクレジット内の初期クレジット値を更新する。クレジット判定部1244は、例えば回路であり、クレジット読出部1241によって読み出されたクレジットを判定する。クレジット加算部1245は、例えば回路であり、クレジット読出部1241によって読み出されたクレジットに含まれるクレジット値に、初期クレジット値を加算する。クレジット減算部1246は、例えば回路であり、クレジット読出部1241によって読み出されたクレジット内のクレジット値から、外部アクセス処理または内部アクセス処理に応じたクレジット値を減算する。クレジット再供給条件判定部1247は、例えば回路であり、クレジット内のクレジット値に、初期クレジット値を加算する条件(例えば、クレジット再供給条件)を満たしているか否かを判定する。キュー判定部1248は、例えば回路であり、キュー領域1255に記憶されているキューの中身を判定する。クレジット初期化部1249は、例えば回路であり、クレジットを初期化する。この初期化とは、例えばクレジット内に含まれる有効化フラグを無効状態にすることである。
記憶部1250は、ストリーム記憶部1251、スループット設定値記憶部1252、NAND帯域管理データ記憶部1253、クレジット記憶部1254、及びキュー領域1255を備えている。
ストリーム記憶部1251は、例えば回路であり、ホストインターフェース回路110がホスト機器2から受信したストリームを記憶する。ストリーム記憶部1251は、例えばストリームを、ホスト機器2から受信した順番に先頭から末尾へと記憶する。スループット設定値記憶部1252は、例えば回路であり、スループット設定値更新部1221により入力されるスループット設定値を記憶する。スループット設定値記憶部1252は、ストリーム番号毎にスループット設定値を記憶する。NAND帯域管理データ記憶部1253は、例えば回路であり、ストリーム番号毎にNAND帯域管理データを記憶する。NAND帯域管理データのデータ構造については、後述する。クレジット記憶部1254は、例えば回路であり、ストリーム番号毎にクレジットを記憶する。クレジットのデータ構造については、後述する。キュー領域1255は、例えば回路であり、ストリーム番号毎に複数のキュー(例えば第1キュー、第2キュー、及び第3キュー)を備える。複数のキューのデータ構造については、後述する。
次に、NAND帯域管理データのデータ構造について説明する。NAND帯域管理データは、有効データサイズ、ユーザ読み出しデータサイズ、ユーザ書き込みデータサイズ、内部読み出しデータサイズ、内部書き込みデータサイズ、総読み出しデータサイズ、総書き込みデータサイズ、総アクセス時間、及び単位時間あたりのアクセス時間、を含む。
有効データサイズは、ユーザに割り当てられた(ユーザが占有している)記憶領域のサイズである。
ユーザ読み出しデータサイズは、ユーザの読み出し要求に基づく外部アクセス処理による読み出しデータのサイズである。
ユーザ書き込みデータサイズは、ユーザの書き込み要求に基づく外部アクセス処理による書き込みデータのサイズである。
内部読み出しデータサイズは、ユーザに割り当てられた記憶領域に関する内部アクセス処理による読み出しデータのサイズである。
内部書き込みデータサイズは、ユーザに割り当てられた記憶領域に関する内部アクセス処理による書き込みデータのサイズである。
総読み出しデータサイズは、ユーザ読み出しデータサイズと、内部読み出しデータサイズの合計(総和)である。
総書き込みデータサイズは、ユーザ書き込みデータサイズと、内部書き込みデータサイズの合計(総和)である。
総アクセス時間は、ユーザに割り当てられた記憶領域に関する内部アクセス処理及び外部アクセス処理に基づく、NANDインターフェース回路170の使用時間である。
単位時間あたりのアクセス時間は、総アクセス時間を単位時間で割った時間である。これをNAND帯域使用量とも記載する。
次に、クレジットのデータ構造について説明する。クレジットは、有効化フラグ、初期クレジット値、及びクレジット値を含む。
有効化フラグはクレジットが有効である際に立てられる。例えば”1”データを記憶する場合「フラグが立つ」ということを意味し、”0”データを記憶する場合「フラグが立っていない」ということを意味する。有効化フラグが立っている場合は、有効化状態であり、無効化フラグが立っている場合は、無効化状態である。
初期クレジット値は、NAND帯域管理データ及びスループット設定値に基づいて初期クレジット値算出部1242によって算出される。そして、初期クレジット値は、クレジット加算部1245がクレジット値を加算する際に用いられる値である。初期クレジット値は、ホスト機器2から供給されるスループット設定値に基づいて変更可能な値である。
クレジット値は、外部アクセス処理及び内部アクセス処理に必要な値である。具体的には、メモリシステム1によって外部アクセス処理または内部アクセス処理が行われる場合、その都度、クレジット値から、外部アクセス処理または内部アクセス処理に割り当てられたクレジット値が減算される。例えば、実行コマンドにより、減算されるクレジット値は異なる。読み出し動作は書き込み動作よりも処理時間が短いので、読み出し動作に係るクレジット値は、書き込み動作に係るクレジット値よりも小さな値となる。コマンドごとのクレジット値はそのシステムに合わせて決める。
有効化フラグ、初期クレジット値、及びクレジット値の詳細な用途については後述する。
次に、複数のキューのデータ構造について図6を用いて説明する。図6に示すように、キュー領域1255は、例えば第1キュー、第2キュー、及び第3キューを備えている。キューとは、先に入力したデータが先に出力されるデータの構造である。このようなデータの入出力方式は「FIFO(First in First out)」と呼ばれる。キューの末尾にデータを入力することを「エンキュー」と呼び、データの先頭からデータを出力することを「デキュー」と呼ぶ。キューでは末尾からデータ(コマンド)がエンキューされ、エンキューされた順番で先頭からデータがデキューされる。
第1キューは、例えば内部アクセス処理(内部処理)に関するコマンドがエンキューされる。内部アクセス処理の例としては、コンパクション、デフラグメンテーション、ガベージコレクションなどがある。この内部処理は、ユーザからの要求(外部アクセス処理)に基づいて、行われる必要が生じる。
第2キューは、例えば外部アクセス処理(外部処理)に関するホストコマンドのうち読み出しコマンドに関するコマンドがエンキューされる。
第3キューは、例えば外部アクセス処理(外部処理)に関するホストコマンドのうち書き込みコマンドに関するコマンドがエンキューされる。
図5に戻って、アクセス管理部120の構成の続きを説明する。NAND制御部1260は、内部アクセス処理判定部1261、NANDコマンド発行部1262、及びブロック選択部1263を備えている。
内部アクセス処理判定部1261は、例えば回路であり、あるストリームに関する記憶領域(例えばあるチップCPのあるブロック)に対して内部アクセス処理を行うか否かを判定する。NANDコマンド発行部1262は、例えば回路であり、チップCPに発行するNANDコマンドを発行する。ブロック選択部1263は、例えば回路であり、内部アクセス処理の対象となるブロックを選択する。
時間計測部1270は、例えば回路であり、アクセス管理部120が必要とする時間を適宜計測する。
なお、アクセス管理部120は、ストリーム制御部1210、スループット制御部1220、NAND帯域管理データ制御部1230、クレジット制御部1240、及びNAND制御部1260は、CPU130上で動作するファームウェアであっても良い。また、記憶部1250は、DRAM300で実現されても良い。また、時間計測部1270は、タイマ150で実現されても良い。
<1−2>動作
続いて、本実施形態に係るメモリシステム1の動作について説明する。以下では、外部アクセス処理及び内部アクセス処理を包含した動作について説明する。また、以下では、簡単のため、あるユーザ、つまり、あるストリーム番号に着目して説明する。
<1−2−1>外部アクセス処理及び内部アクセス処理を包含した動作
図7及び図8を用いて、メモリシステム1の第1の動作として、メモリシステム1における内部アクセス処理の判定、並びにホストコマンドの受信の判定について説明する。図7は、メモリシステム1における内部アクセス処理の判定、並びにホストコマンドの受信の判定に係るフローチャートである。図8は、メモリシステム1における内部アクセス処理の判定、並びにホストコマンドの受信の判定を示すブロック図である。以下では、図7及び図8の両方を参照して説明する。
[S1001]
本実施形態に係るメモリシステム1では、ホスト機器2からの命令(換言するとユーザからの命令、または外部アクセス処理とも記載する)よりも、内部アクセス処理を優先することがある。その場合、まず内部アクセス処理判定部1261は、あるストリーム番号に関して内部アクセス処理が必要か否かを判定する。例えば、このS1001の実行タイミングは、時間計測部1270によって計測された時間によって行われても良い。
[S1002]
内部アクセス処理判定部1261が、内部アクセス処理が必要ではないと判定する場合(S1001、NO)、ホストコマンド解析部1212がホストコマンドを受信しているか否かを判定する。具体的には、ホストコマンド解析部1212は、ストリーム読出部1211を介して、ストリーム記憶部1251に記憶されているストリームを読み出す。そして、ホストコマンド解析部1212は、読み出されたストリームの有無に基づいてホストコマンドを受信しているか否かを判定する。換言すると、ホストコマンド解析部1212は、外部アクセス処理が必要か否かを判定している。ホストコマンド解析部1212が、外部アクセス処理が必要ではないと判定する場合(S1002、NO)、メモリシステム1は、S1001を繰り返す。
[S1003]
ホストコマンド解析部1212が、外部アクセス処理が必要であると判定する場合(S1002、YES)、メモリシステム1は、ホストコマンドに基づく処理を行う。
[S1004]
内部アクセス処理判定部1261が、あるストリームについて内部アクセス処理が必要であると判定する場合(S1001、YES)、メモリシステム1は、内部アクセス処理を実行する。
<1−2−2>S1003
図9及び図10を用いて、S1003の動作(メモリシステム1の第2の動作)について説明する。図9は、S1003の動作に係るフローチャートである。図10は、S1003の動作を示すブロック図である。以下では、図9及び図10の両方を参照して説明する。
[S1101]
ホストコマンドに基づく処理を行う場合、ホストコマンド解析部1212は、ストリーム読出部1211を介してストリーム記憶部1251からストリームを受信し、ストリームに含まれるホストコマンドを解析する。
[S1102]
ホストコマンド解析部1212は、ホストコマンドを解析することで、コマンドの種類を判定できる。
[S1103]
ホストコマンド解析部1212は、S1102において、ホストコマンドがスループット設定値の設定に関するコマンドであると判定する場合、スループット設定値の設定を行う。そのため、ストリーム番号解析部1213にスループット設定値の設定を行う旨を通知する。
[S1104]
ホストコマンド解析部1212は、S1102において、外部アクセス処理に関するコマンドであると判定する場合、外部アクセス処理を行う。そのため、ストリーム番号解析部1213に外部アクセス処理を行う旨を通知する。
<1−2−3>S1103
図11及び図12を用いて、S1103の動作(メモリシステム1の第3の動作)について説明する。図11は、S1103の動作に係るフローチャートである。図12は、S1103の動作を示すブロック図である。以下では、図11及び図12の両方を参照して説明する。
[S1201]
ストリーム番号解析部1213は、ストリームの番号を解析する。具体的には、処理対象のストリームが、ストリーム0〜ストリームNの何れであることを判定する。
[S1202]
ストリーム番号解析部1213は、解析したストリームに含まれるスループット設定値を読み出す。
[S1203]
スループット設定値更新部1221は、読み出したスループット設定値を、受信したストリームの番号と関連付けてスループット設定値記憶部1252に記憶する。
[S1204]
NAND帯域管理データ読出部1231は、NAND帯域管理データ記憶部1253から、受信したストリームに関するNAND帯域管理データを読み出す。
スループット設定値読出部1222は、スループット設定値記憶部1252から、受信したストリームに関するスループット設定値を読み出す。
初期クレジット値算出部1242は、NAND帯域管理データ読出部1231によってNAND帯域管理データ記憶部1253から読み出されたNAND帯域管理データと、スループット設定値読出部1222によってスループット設定値記憶部1252から読み出されたスループット設定値によって、初期クレジット値を算出する。
[S1205]
初期クレジット値更新部1243は、初期クレジット値算出部1242によって算出された初期クレジット値を、クレジット記憶部1254に記憶されている、あるストリームに関する初期クレジット値として更新する。
<1−2−4>S1104
図13及び図14を用いて、S1104の動作(メモリシステム1の第4の動作)について説明する。図13は、S1104の動作に係るフローチャートである。図14は、S1104の動作を示すブロック図である。以下では、図13及び図14の両方を参照して説明する。
[S1301]
ストリーム番号解析部1213は、ストリームの番号を解析する。具体的には、処理対象のストリームが、ストリーム0〜ストリームNの何れであることを判定する。
[S1302]
ストリーム番号解析部1213は、解析したストリームに含まれるホストコマンドを読み出す。
[S1303]
キュー更新部1214は、読み出されたホストコマンドをキュー領域1255に記憶する。この時、キュー更新部1214は、キューの種類に応じて、適切なキューにホストコマンドを入力する。
[S1304]
クレジット読出部1241は、クレジット記憶部1254から、ストリームに関するクレジットを読み出す。
クレジット判定部1244は、読み出したクレジットに含まれる有効化フラグが、有効になっているか否かを判定する。
[S1305]
クレジット判定部1244が、有効化フラグが有効になっていないと判定する場合(S1304、NO)、クレジット加算部1245は、有効化フラグを“有効”状態に更新し、更に読み出したクレジットに含まれる初期クレジット値を、クレジット値に加算する。
[S1306]
クレジット判定部1244が、有効化フラグが有効になっていると判定する場合(S1304、YES)、またはS1305の後、キュー判定部1248は、キューの実行処理を行う。
<1−2−5>S1306
図15〜図18を用いて、S1306の動作(メモリシステム1の第5の動作)について説明する。図15及び図17は、S1306の動作に係るフローチャートである。図16及び図18は、S1306の動作を示すブロック図である。以下では、図15〜図18を参照して説明する。
[S1401]
キュー判定部1248は、キュー領域1255の第2キューに、読み出しコマンドがエンキューされているか否かを判定する。
[S1402]
キュー判定部1248が、第2キューに、読み出しコマンドがエンキューされていると判定する場合(S1401、YES)、クレジット読出部1241は、クレジット記憶部1254からクレジットを読み出す。そして、クレジット判定部1244は、クレジットに含まれるクレジット値が、読み出しコマンドを実行するために必要な条件を満たしているか否かを判定する。具体的な一例としては、読み出しコマンドを実行する為には、第1クレジット値を要する。そして、クレジットに含まれるクレジット値が、読み出しコマンドの実行に要するクレジット値を超えるか否かを判定する。クレジット判定部1244が、クレジットに含まれるクレジット値が、読み出しコマンドの実行に要するクレジット値を超えないと判定する場合(S1402、NO)、クレジット値の加算に関する動作を行う。詳細については後述する。
[S1403]
クレジット判定部1244が、クレジットに含まれるクレジット値が、読み出しコマンドの実行に要するクレジット値を超えると判定する場合(S1402、YES)、NANDコマンド発行部1262は、読み出しコマンドを、ストリームによって指定されるチップCP並びにブロックに対して発行する。
[S1404]
クレジット減算部1246は、クレジット値から、読み出しコマンドに対応するクレジット値を減算する。
[S1405]
キュー判定部1248が、第2キューに読み出しコマンドがエンキューされていないと判定する場合(S1401、NO)、キュー判定部1248が、第3キューに書き込みコマンドがエンキューされているか否かを判定する。キュー判定部1248が、第3キューに書き込みコマンドがエンキューされていないと判定する場合(S1405、NO)、動作を終了する。
[S1406]
キュー判定部1248が、第3キューに書き込みコマンドがエンキューされていると判定する場合(S1405、YES)、クレジット読出部1241は、クレジット記憶部1254からクレジットを読み出す。そして、クレジット判定部1244は、クレジットに含まれるクレジット値が、書き込みコマンドを実行するために必要な条件を満たしているか否かを判定する。具体的な一例としては、書き込みコマンドを実行する為には、第2クレジット値(例えば第1クレジット値と異なる)を要する。そして、クレジットに含まれるクレジット値が、書き込みコマンドの実行に要するクレジット値を超えるか否かを判定する。クレジット判定部1244が、クレジットに含まれるクレジット値が、書き込みコマンドの実行に要するクレジット値を超えないと判定する場合(S1406、NO)、クレジット値の加算に関する動作を行う。詳細については後述する。
[S1407]
クレジット判定部1244が、クレジットに含まれるクレジット値が、書き込みコマンドの実行に要するクレジット値を超えると判定する場合(S1406、YES)、NANDコマンド発行部1262は、書き込みコマンドを、ストリームによって指定されるチップCP並びにブロックに対して発行する。
[S1408]
クレジット減算部1246は、クレジット値から、書き込みコマンドに対応するクレジット値を減算する。その後、S1405を繰り返す。
なお、書き込み動作は、書き込み動作に関するコマンドが一定量貯まってから、クレジット値を確認して、一定量の書き込みコマンドをまとめて、チップCPへ送られても良い。
それに対して、読み出し動作は、クレジット値があれば、すぐにチップCPへ送られても良い。
[S1501]
続いて、図17、及び図18を用いて、クレジットの加算に関する動作について説明する。
クレジット判定部1244が、クレジットに含まれるクレジット値が、読み出しコマンドの実行に要するクレジット値を超えないと判定する場合(S1402、NO)、またはクレジットに含まれるクレジット値が、書き込みコマンドの実行に要するクレジット値を超えないと判定する場合(S1406、NO)、時間計測部1270は、所定のクレジットに関して、クレジットを加算してから、第1時間が経過したか否かを判定する。
[S1502]
時間計測部1270は、所定のクレジットに関して、クレジットを加算してから、第1時間が経過していないと判定する場合(S1501、NO)、クレジット再供給条件判定部1247は、所定のクレジットに関して、クレジット再供給条件を満たしているか否かを判定する。クレジット再供給条件判定部1247は、所定のクレジットに関して、クレジット再供給条件を満たしていないと判定する場合(S1502、NO)、S1501を繰り返す。
[S1503]
時間計測部1270は、所定のクレジットに関して、クレジットを加算してから、第1時間が経過していると判定する場合(S1501、YES)、またはクレジット再供給条件判定部1247は、所定のクレジットに関して、クレジット再供給条件を満たしていると判定する場合(S1502、YES)、クレジット加算部1245は、クレジット記憶部1254に記憶されている所定のクレジット値に、初期クレジット値を加算する。その後、S1401に進む。
<1−2−6>クレジットの加算
図19、及び図20を用いて、クレジットの加算に関する動作(メモリシステム1の第6の動作)について説明する。図19は、クレジットの加算に関する動作に係るフローチャートである。図20は、クレジットの加算に関する動作を示すブロック図である。以下では、図19、及び図20の両方を参照して説明する。
このクレジットの加算に関する動作は、有効化されているクレジットに関してバックグラウンドで行われる。バックグラウンドで行われるとは、上述した動作と並列して行われる事を意味する。
[S1601]
時間計測部1270は、所定のクレジットに関して、クレジットを加算してから、第1時間が経過したか否かを判定する。
[S1602]
時間計測部1270は、所定のクレジットに関して、クレジットを加算してから、第1時間が経過していないと判定する場合(S1601、NO)、クレジット再供給条件判定部1247は、所定のクレジットに関して、クレジット再供給条件を満たしているか否かを判定する。クレジット再供給条件判定部1247は、所定のクレジットに関して、クレジット再供給条件を満たしていないと判定する場合(S1602、NO)、S1601を繰り返す。クレジット再供給条件は、「全ユーザがクレジット値の加算(供給)待ちで、メモリシステム1におけるNAND利用状態(帯域)が50%以下」、または「全ユーザがクレジット値の加算待ちで、動作がコマンド待ち状態」などが考えられる。
[S1603]
時間計測部1270は、所定のクレジットに関して、クレジットを加算してから、第1時間が経過していると判定する場合(S1601、YES)、またはクレジット再供給条件判定部1247は、所定のクレジットに関して、クレジット再供給条件を満たしていると判定する場合(S1602、YES)、キュー判定部1248は、キューにコマンドがあるか否かを判定する。
[S1604]
キュー判定部1248は、キューにコマンドがないと判定する場合(S1603、NO)、クレジット初期化部1249が、クレジットを初期化する。具体的には、有効化フラグを「立っていない」状態に更新する。
[S1605]
キュー判定部1248は、キューにコマンドがあると判定する場合(S1604、YES)、クレジット加算部1245は、クレジット記憶部1254に記憶されている所定のクレジット値に、初期クレジット値を加算する。その後、S1306に進む。
<1−2−7>S1004
図21〜図25を用いて、S1004の動作(メモリシステム1の第7の動作)について説明する。図21、図23〜図25は、S1004の動作に係るフローチャートである。図22は、S1004の動作を示すブロック図である。以下では、図21〜図25を参照して説明する。
[S1701]
内部アクセス処理判定部1261が、あるストリームについて内部アクセス処理が必要であると判定する場合(S1001、YES)、ブロック選択部1263は、内部アクセス処理の対象となるチップCPのブロックを選択する。なお、ここでは、内部アクセス処理の一例として、コンパクションに関する動作について説明する。コンパクション動作に置いては、まずデータの移動先のブロック(ブロック選択部1263により選択されたブロック)を消去し、そして移動するデータを読み出し、読み出したデータを消去済みのブロックに書き込む。
[S1702]
クレジット読出部1241は、クレジット記憶部1254からクレジットを読み出す。そして、クレジット判定部1244は、クレジットに含まれるクレジット値が、消去コマンドを実行するために必要な条件を満たしているか否かを判定する。具体的な一例としては、消去コマンドを実行する為には、第3クレジット値(例えば第1及び第2クレジット値と異なる)を要する。そして、クレジットに含まれるクレジット値が、消去コマンドの実行に要するクレジット値を超えるか否かを判定する。クレジット判定部1244が、クレジットに含まれるクレジット値が、消去コマンドの実行に要するクレジット値を超えないと判定する場合(S1702、NO)、クレジット値の加算に関する動作を行う。
[S1703]
クレジット判定部1244が、クレジットに含まれるクレジット値が、消去コマンドの実行に要するクレジット値を超えると判定する場合(S1702、YES)、NANDコマンド発行部1262は、消去コマンドを、ストリームによって指定されるチップCP並びに、ブロック選択部1263によりS1701で選択されたブロックに対して発行する。これにより、移動先のブロックを消去できる。
[S1704]
クレジット減算部1246は、クレジット値から、消去コマンドに対応するクレジット値を減算する。
[S1705]
クレジット読出部1241は、クレジット記憶部1254からクレジットを読み出す。そして、クレジット判定部1244は、クレジットに含まれるクレジット値が、読み出しコマンドを実行するために必要な条件を満たしているか否かを判定する。具体的な一例としては、読み出しコマンドを実行する為には、第1クレジット値を要する。そして、クレジットに含まれるクレジット値が、読み出しコマンドの実行に要するクレジット値を超えるか否かを判定する。クレジット判定部1244が、クレジットに含まれるクレジット値が、読み出しコマンドの実行に要するクレジット値を超えないと判定する場合(S1705、NO)、クレジット値の加算に関する動作を行う。
[S1706]
クレジット判定部1244が、クレジットに含まれるクレジット値が、読み出しコマンドの実行に要するクレジット値を超えると判定する場合(S1705、YES)、NANDコマンド発行部1262は、読み出しコマンドを、ストリームによって指定されるチップCP並びにブロックに対して発行する。これにより、移動するデータを読み出す。
[S1707]
クレジット減算部1246は、クレジット値から、読み出しコマンドに対応するクレジット値を減算する。
[S1708]
クレジット読出部1241は、クレジット記憶部1254からクレジットを読み出す。そして、クレジット判定部1244は、クレジットに含まれるクレジット値が、書き込みコマンドを実行するために必要な条件を満たしているか否かを判定する。具体的な一例としては、書き込みコマンドを実行する為には、第2クレジット値を要する。そして、クレジットに含まれるクレジット値が、書き込みコマンドの実行に要するクレジット値を超えるか否かを判定する。クレジット判定部1244が、クレジットに含まれるクレジット値が、書き込みコマンドの実行に要するクレジット値を超えないと判定する場合(S1708、NO)、クレジット値の加算に関する動作を行う。
[S1709]
クレジット判定部1244が、クレジットに含まれるクレジット値が、書き込みコマンドの実行に要するクレジット値を超えると判定する場合(S1708、YES)、NANDコマンド発行部1262は、書き込みコマンドを、ストリームによって指定されるチップCP並びにブロックに対して発行する。これにより、消去済みのブロックにデータを書き込める。
[S1710]
クレジット減算部1246は、クレジット値から、書き込みコマンドに対応するクレジット値を減算する。
[S1801]
クレジット判定部1244が、クレジットに含まれるクレジット値が、消去コマンドの実行に要するクレジット値を超えないと判定する場合(S1702、NO)、時間計測部1270は、所定のクレジットに関して、クレジットを加算してから、第1時間が経過したか否かを判定する。
[S1802]
時間計測部1270は、所定のクレジットに関して、クレジットを加算してから、第1時間が経過していないと判定する場合(S1801、NO)、クレジット再供給条件判定部1247は、所定のクレジットに関して、クレジット再供給条件を満たしているか否かを判定する。クレジット再供給条件判定部1247は、所定のクレジットに関して、クレジット再供給条件を満たしていないと判定する場合(S1802、NO)、S1801を繰り返す。
[S1803]
時間計測部1270は、所定のクレジットに関して、クレジットを加算してから、第1時間が経過していると判定する場合(S1801、YES)、またはクレジット再供給条件判定部1247は、所定のクレジットに関して、クレジット再供給条件を満たしていると判定する場合(S1802、YES)、クレジット加算部1245は、クレジット記憶部1254に記憶されている所定のクレジット値に、初期クレジット値を加算する。その後、S1703に進む。
[S1901]
クレジット判定部1244が、クレジットに含まれるクレジット値が、読み出しコマンドの実行に要するクレジット値を超えないと判定する場合(S1705、NO)、時間計測部1270は、所定のクレジットに関して、クレジットを加算してから、第1時間が経過したか否かを判定する。
[S1902]
時間計測部1270は、所定のクレジットに関して、クレジットを加算してから、第1時間が経過していないと判定する場合(S1901、NO)、クレジット再供給条件判定部1247は、所定のクレジットに関して、クレジット再供給条件を満たしているか否かを判定する。クレジット再供給条件判定部1247は、所定のクレジットに関して、クレジット再供給条件を満たしていないと判定する場合(S1902、NO)、S1901を繰り返す。
[S1903]
時間計測部1270は、所定のクレジットに関して、クレジットを加算してから、第1時間が経過していると判定する場合(S1901、YES)、またはクレジット再供給条件判定部1247は、所定のクレジットに関して、クレジット再供給条件を満たしていると判定する場合(S1902、YES)、クレジット加算部1245は、クレジット記憶部1254に記憶されている所定のクレジット値に、初期クレジット値を加算する。その後、S1706に進む。
[S2001]
クレジット判定部1244が、クレジットに含まれるクレジット値が、書き込みコマンドの実行に要するクレジット値を超えないと判定する場合(S1708、NO)、時間計測部1270は、所定のクレジットに関して、クレジットを加算してから、第1時間が経過したか否かを判定する。
[S2002]
時間計測部1270は、所定のクレジットに関して、クレジットを加算してから、第1時間が経過していないと判定する場合(S2001、NO)、クレジット再供給条件判定部1247は、所定のクレジットに関して、クレジット再供給条件を満たしているか否かを判定する。クレジット再供給条件判定部1247は、所定のクレジットに関して、クレジット再供給条件を満たしていないと判定する場合(S2002、NO)、S2001を繰り返す。
[S2003]
時間計測部1270は、所定のクレジットに関して、クレジットを加算してから、第1時間が経過していると判定する場合(S2001、YES)、またはクレジット再供給条件判定部1247は、所定のクレジットに関して、クレジット再供給条件を満たしていると判定する場合(S2002、YES)、クレジット加算部1245は、クレジット記憶部1254に記憶されている所定のクレジット値に、初期クレジット値を加算する。その後、S1709に進む。
<1−3>効果
上述した実施形態によれば、メモリシステム1では、ユーザ毎にアクセス処理に必要なデータ(クレジット)が割り当てられる。メモリシステム1は、ユーザの要求に基づく外部アクセス処理を実行する場合、外部アクセス処理に必要な値をクレジット値から減算する。同様に、メモリシステム1は、ユーザの要求に基づかないメモリシステム1の内部アクセス処理を実行する場合、内部アクセス処理に必要な値をクレジット値から減算する。このように、外部アクセス処理のみならず内部アクセス処理を行う場合も適切にチップへのアクセスを制御できる。
換言すると、上述したメモリシステム1では、クレジットを採用することで、ユーザごとに適切にNAND帯域使用量を制御することが可能となる。
上述したように、メモリシステム1は、データセンター等に配置され、複数のユーザによって共有されることがある。この場合、ユーザのメモリシステム1の使用方法に起因し、メモリシステム1の外からは見えない内部アクセス処理を行う必要が生じ、内部アクセス処理によって、メモリシステム1に負荷がかかっている場合がある。
例えば、メモリシステム1を運用するサービスへ支払う課金額に応じて、メモリシステム1における使用できる記憶容量を変える事が考えられる。しかし、上述したように、ユーザのメモリシステム1の使用方法によっては、課金額が低いユーザの使用方法のせいで、メモリシステム1の内部アクセス処理が増えることがある。その場合、課金額が低いユーザにアクセス性能が割かれ、課金額が高い他のユーザのメモリシステム1へのアクセスに影響を与えてしまうことがある。
しかしながら、本実施形態によれば、ユーザが払うお金(サービスの利益)に見合った性能(資源)を、ユーザに割り当てることが可能となる。これにより、ユーザは必要な性能分のお金を払うことになる。そのため、メモリシステム1にとって都合の良いアクセスパターンを用いてアクセスするユーザは、少ないお金でメモリシステム1を利用できる。本実施形態に係るメモリシステム1を採用するデータセンター側は、ユーザから妥当な理由でお金を集められ、性能に対するクレームを退けられるようになる。
<2>その他
以上、本発明の実施形態を説明したが、本発明は上記実施形態に限定されるものではなく、その趣旨を逸脱しない範囲内において種々変形して実施することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示された構成要件を適宜組み合わせることによって種々の発明が抽出される。例えば、開示された構成要件からいくつかの構成要件が削除されても、所定の効果が得られるものであれば、発明として抽出され得る。
1…メモリシステム
2…ホスト機器
11…メモリセルアレイ
12…ロウデコーダ
13…ドライバ
14…センスアンプモジュール
15…アドレスレジスタ
16…コマンドレジスタ
17…シーケンサ
100…メモリコントローラ
110…ホストインターフェース回路
120…アクセス管理部
130…CPU
140…バッファメモリ
150…タイマ
160…ECC回路
170…NANDインターフェース回路
180…DRAMインターフェース回路
200…NANDパッケージ群
1210…ストリーム制御部
1211…ストリーム読出部
1212…ホストコマンド解析部
1213…ストリーム番号解析部
1214…キュー更新部
1220…スループット制御部
1221…スループット設定値更新部
1222…スループット設定値読出部
1230…NAND帯域管理データ制御部
1231…NAND帯域管理データ読出部
1232…NAND帯域管理データ更新部
1240…クレジット制御部
1241…クレジット読出部
1242…初期クレジット値算出部
1243…初期クレジット値更新部
1244…クレジット判定部
1245…クレジット加算部
1246…クレジット減算部
1247…クレジット再供給条件判定部
1248…キュー判定部
1249…クレジット初期化部
1250…記憶部
1251…ストリーム記憶部
1252…スループット設定値記憶部
1253…NAND帯域管理データ記憶部
1254…クレジット記憶部
1255…キュー領域
1260…NAND制御部
1261…内部アクセス処理判定部
1262…NANDコマンド発行部
1263…ブロック選択部
1270…時間計測部

Claims (5)

  1. データを記憶する不揮発性記憶装置と、
    ユーザ毎に割り当てられ、第1管理データを含む第1情報を管理し、
    ユーザから前記不揮発性記憶装置へのアクセス要求を受信し、且つ前記第1管理データが、第1値以上である場合、前記不揮発性記憶装置へのアクセスに関する第1処理を行い、
    前記第1管理データが、第2値以上である場合、前記不揮発性記憶装置へのアクセスに関する第2処理を行う
    メモリコントローラと、
    を備える
    メモリシステム。
  2. 前記第1管理データは、ユーザ毎に異なる
    請求項1に記載のメモリシステム。
  3. 前記メモリコントローラは、ユーザから前記不揮発性記憶装置へのアクセス要求を受信し、且つ前記第1管理データが、前記第1値以上でない場合、前記第1管理データが、前記第1値以上になるまで前記第1処理を行わない
    請求項1または2に記載のメモリシステム。
  4. 前記メモリコントローラは、前記第1管理データが、第2値以上でない場合、前記第1管理データが、前記第1値以上になるまで前記第2処理を行わない
    請求項1乃至3の何れか一項に記載のメモリシステム。
  5. 前記メモリコントローラは、第1条件を満たす場合、前記第1値を更新する
    請求項1乃至4の何れか一項に記載のメモリシステム。
JP2019171296A 2019-09-20 2019-09-20 メモリシステム Pending JP2021047781A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019171296A JP2021047781A (ja) 2019-09-20 2019-09-20 メモリシステム
US16/818,775 US20210089234A1 (en) 2019-09-20 2020-03-13 Memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019171296A JP2021047781A (ja) 2019-09-20 2019-09-20 メモリシステム

Publications (1)

Publication Number Publication Date
JP2021047781A true JP2021047781A (ja) 2021-03-25

Family

ID=74876414

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019171296A Pending JP2021047781A (ja) 2019-09-20 2019-09-20 メモリシステム

Country Status (2)

Country Link
US (1) US20210089234A1 (ja)
JP (1) JP2021047781A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11556274B1 (en) 2021-09-01 2023-01-17 Western Digital Technologies, Inc. Endurance groups ECC allocation
US11640267B2 (en) 2021-09-09 2023-05-02 Western Digital Technologies, Inc. Method and system for maintenance allocation between NVM groups

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10635617B2 (en) * 2017-05-19 2020-04-28 Western Digital Technologies, Inc. Context-aware dynamic command scheduling for a data storage system

Also Published As

Publication number Publication date
US20210089234A1 (en) 2021-03-25

Similar Documents

Publication Publication Date Title
US11287992B2 (en) Controller and storage device including controller and nonvolatile memory devices
US9715465B2 (en) Storage device and operating method of the same
US9817717B2 (en) Stripe reconstituting method performed in storage system, method of performing garbage collection by using the stripe reconstituting method, and storage system performing the stripe reconstituting method
US10223011B2 (en) Storage device including nonvolatile memory device and controller and operating method of the storage device
US9286990B1 (en) Storage device, nonvolatile memory and method operating same
US9424153B2 (en) Storage device and operating method of the same
US20160062885A1 (en) Garbage collection method for nonvolatile memory device
US11069413B2 (en) Memory system and nonvolatile memory
US20160196216A1 (en) Mapping table managing method and associated storage system
CN110389720B (zh) 存储装置及其操作方法
CN111373383B (zh) 存储器高速缓存管理
CN114442915B (zh) 存储器系统以及操作其中所包括的存储器控制器的方法
KR102451154B1 (ko) 불휘발성 메모리 장치 및 불휘발성 메모리 장치의 동작 방법
US20160358657A1 (en) Nonvolatile memory device and program method thereof
KR102545189B1 (ko) 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법
KR102635689B1 (ko) 메모리 시스템, 메모리 컨트롤러 및 동작 방법
KR20210014412A (ko) 메모리 컨트롤러 및 그 동작 방법
JP2021047781A (ja) メモリシステム
KR20190086341A (ko) 배리어 커맨드에 기초하여 데이터를 순서대로 저장하는 스토리지 장치
US20160132251A1 (en) Operating method of storage device and data writing method for writing data into storage device
US11586379B2 (en) Memory system and method of operating the same
EP3910464A1 (en) Memory device, storage device including the same, and method of operating the storage device
KR102282952B1 (ko) 스토리지 장치의 동작 방법
US20240069782A1 (en) Storage device including nonvolatile memory device and operating method of storage device