JP2018022275A - 半導体記憶装置 - Google Patents

半導体記憶装置 Download PDF

Info

Publication number
JP2018022275A
JP2018022275A JP2016152034A JP2016152034A JP2018022275A JP 2018022275 A JP2018022275 A JP 2018022275A JP 2016152034 A JP2016152034 A JP 2016152034A JP 2016152034 A JP2016152034 A JP 2016152034A JP 2018022275 A JP2018022275 A JP 2018022275A
Authority
JP
Japan
Prior art keywords
data
stream
host
write
semiconductor memory
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
JP2016152034A
Other languages
English (en)
Inventor
原澤 昭典
Akinori Harasawa
昭典 原澤
小島 慶久
Yoshihisa Kojima
慶久 小島
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.)
Kioxia Corp
Original Assignee
Toshiba Memory 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 Memory Corp filed Critical Toshiba Memory Corp
Priority to JP2016152034A priority Critical patent/JP2018022275A/ja
Priority to US15/667,498 priority patent/US10180811B2/en
Publication of JP2018022275A publication Critical patent/JP2018022275A/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】半導体記憶装置の性能を向上させる。【解決手段】実施形態の半導体記憶装置は、一括して無効化されることになるデータの集合である複数のストリームデータのそれぞれを識別可能に送信するホストと通信可能である。また、第1の単位ごとにデータの書き込みが行われ、複数の第1の単位からなる第2の単位ごとにデータの消去が行われるm個(mは2以上の自然数)の不揮発性半導体メモリを具備する。さらに、データを一時的に格納するバッファと、ライトコマンドに関連付けられたデータを、不揮発性半導体メモリのうちのN個(Nはm≧Nを満たす自然数)へ書き込むコントローラを具備する。コントローラは、第2の単位の1つには同一と識別されるストリームデータを書き込み、ホストからのデータの受信状況に応じてNを変更して、バッファに格納されたデータを、第1の単位のサイズごとに不揮発性半導体メモリへ書き込む。【選択図】図25

Description

本発明の実施形態は、半導体記憶装置に関する。
不揮発性半導体メモリを有する半導体記憶装置においては、信頼性維持のためのイレース回数の低減と、高いリードライト性能の両立が求められる。
米国特許出願公開第2012/0254524号明細書 SCSI Block Command -4、http://www.t10.org/drafts.htm#SBC_Family
本発明が解決しようとする課題は、半導体記憶装置の性能を向上させることにある。
上記課題を達成するために、実施形態の半導体記憶装置は、一括して無効化されることになるデータの集合である複数のストリームデータのそれぞれを識別可能に送信するホストと通信可能である。また、第1の単位ごとにデータの書き込みが行われ、複数の第1の単位からなる第2の単位ごとにデータの消去が行われるm個(mは2以上の自然数)の不揮発性半導体メモリを具備する。さらに、データを一時的に格納するバッファと、ライトコマンドに関連付けられたデータを、不揮発性半導体メモリのうちのN個(Nはm≧Nを満たす自然数)へ書き込むコントローラを具備する。
コントローラは、第2の単位の1つには同一と識別されるストリームデータを書き込み、ホストからのデータの受信状況に応じてNを変更して、バッファに格納されたデータを、第1の単位のサイズごとに不揮発性半導体メモリへ書き込む。
第1の実施形態の半導体記憶装置の構成を説明するブロック図である。 第1の実施形態の物理ページ及び物理ブロックの構成を説明する図である。 第1の実施形態のNAND型フラッシュメモリの構成を説明するブロック図である。 第1の実施形態の論理ページの構成を説明する図である。 第1の実施形態の論理ブロックの構成を説明する図である。 第1の実施形態のデータパケットの構成を説明する図である。 第1の実施形態の第1のライト方法を説明する図である。 第1の実施形態におけるライトバッファのデータ格納量の変化を説明する図である。 第1の実施形態の第2のライト方法を説明する図である。 第1の実施形態におけるライトバッファのデータ格納量の変化を説明する図である。 第1の実施形態の第3のライト方法を説明する図である。 第1の実施形態におけるライトバッファのデータ格納量の変化を説明する図である。 第1の実施形態の第1のライト方法に対応するライトデータ配置テーブルの構成を説明する図である。 第1の実施形態の第2のライト方法に対応するライトデータ配置テーブルの構成を説明する図である。 第1の実施形態の第3のライト方法に対応するライトデータ配置テーブルの構成を説明する図である。 第1の実施形態のデータパケット生成部の構成を説明する図である。 SCSI規格のSTREAM CONTROLコマンドを説明する図である。 SCSI規格のWRITE STREAMコマンドを説明する図である。 SAS規格でストリームデータを転送する場合のプロトコルを説明する図である。 SAS規格でストリームデータを転送する場合のプロトコルを説明する図である。 第1の実施形態のストリーム制御部の構成を説明するブロック図である。 第1の実施形態の論理ブロックに割り当てられるストリームIDを説明する図である。 第1の実施形態の論理ブロック管理テーブルの構成を説明する図である。 第1の実施形態におけるライトバッファのデータ格納量の変化を説明する図である。 第1の実施形態におけるライトバッファのデータ格納量の変化を説明する図である。 第1の実施形態のデータパケット生成部の動作を説明するフローチャートである。 第1の実施形態のライト方法の変更条件を説明する図である。 SCSI規格のWRITE STREAMコマンドが複数発行される時の状態を説明する図である。 第2の実施形態の半導体記憶装置がシーケンシャル性を判定するためのアルゴリズムを説明する模式図である。 第2の実施形態のロングシーケンシャル判定テーブルの構成を説明する図である。 第2の実施形態のロングシーケンシャル判定テーブルの更新手順を説明する図である。 第2の実施形態の論理ブロック管理テーブルの構成を説明する図である。
以下、実施形態の半導体記憶装置を、図面を参照して説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。
[第1の実施形態]
図1は、第1の実施形態の半導体記憶装置1の構成を説明するブロック図である。
半導体記憶装置1は、ホスト2と通信し半導体記憶装置1全体の動作を制御するメモリコントローラ10と、データを記憶する複数の不揮発性半導体メモリ20と、を含む。以下の説明においては、不揮発性半導体メモリ20からのデータのリードに必要な機能ブロックの説明は省略してある。
本実施形態の説明では、ホスト2はSAS(Serial Attached SCSI)規格のインターフェースをサポートするコンピュータであるが、その他の規格、例えばSATA(Serial ATA)規格やNVMe(NVM Express)(登録商標)規格のインターフェースをサポートするコンピュータであってもよい。
メモリコントローラ10は、例えばSoC(System on a Chip)として構成される半導体集積回路である。
本実施形態の不揮発性半導体メモリ20はNAND型フラッシュメモリであるが、NOR型フラッシュメモリやMRAM(Magnetoresistive Random Access Memory)など他の種類の不揮発性半導体メモリでもよい。
以下の説明においては、不揮発性半導体メモリ20をNAND型フラッシュメモリ20と表記することがある。また、本実施形態の半導体記憶装置1は18チャネル(Ch)のNAND型フラッシュメモリ20を有する。以下では各NAND型フラッシュメモリ20をNAND型フラッシュメモリCh0〜Ch17と表記する。チャネルの数は18より多くても少なくてもよい。
メモリコントローラ10は、ホスト2から受信したコマンドの解釈や実行などを行うホストインターフェース(IF)制御部100と、ライトバッファの管理などを行うライトバッファ管理部200と、NAND型フラッシュメモリ20へのデータのライトを管理するNAND管理部300と、ホスト2からのコマンドで指定される論理アドレスとNAND型フラッシュメモリ20の物理アドレスとの変換を行う論物変換テーブル400と、FW(Firmware)に基づき半導体記憶装置1全体の制御を行うCPU(Central Processing Unit)500と、を含む。
ライトバッファ管理部200は、ホスト2より受信したデータを一時的に格納するライトバッファ210と、ライトバッファ210に格納するデータをデータパケットの形に加工するデータパケット生成部220と、NAND型フラッシュメモリ20へライトされるデータの配置テーブルを格納するライトデータ配置テーブル格納部230と、後述するストリームデータのライト制御を行うストリーム制御部240と、を含む。ホスト2より受信するデータは、ホスト2より受信するライトコマンドに関連付けられている。
本実施形態のライトバッファ210はSRAM(Static Random Access Memory)からなるメモリであるが、DRAM(Dynamic Random Access Memory)など他の種類のメモリを採用してもよい。
NAND管理部300は、NAND型フラッシュメモリCh0〜Ch17のそれぞれに接続され、NAND型フラッシュメモリ20へのライト・リード・イレース等の動作を制御するNANDコントローラ310(以下、NANDコントローラCh0〜Ch17と表記することがある)と、ライトバッファ210から読み出したデータパケットを各NANDコントローラ310に転送するバッファ読み出し制御部320と、を含む。
なお、ライトバッファ210及びCPU500はメモリコントローラ10に内蔵せず、別個の半導体集積回路としてもよい。また、以下の説明においてFWにより実行される機能の一部、又は、全部は専用のHW(Hardware)によっても実行可能であり、HWにより実行される機能の一部、又は、全部をFWによって実行することも可能である。
次に、図2a及び図2bを参照して、本実施形態のNAND型フラッシュメモリ20の物理ページ600及び物理ブロック610の構成を説明する。
図2aに示すように、NAND型フラッシュメモリ20に対するデータのリードライトにおける最小管理単位はクラスタ620と呼ばれる。本実施形態ではクラスタ620の大きさは4kBである。また、NAND型フラッシュメモリ20のデータのリードライトが可能な最小の回路構成の単位(第1の単位)は物理ページ600と呼ばれる。本実施形態では物理ページ600の大きさは16クラスタ(4kB×16クラスタ=64kB)である。
また、図2bに示すように、NAND型フラッシュメモリ20のデータのイレースが可能な最小の回路構成の単位(第2の単位)は物理ブロック610と呼ばれる。本実施形態では物理ブロック610の大きさは256クラスタ、すなわち16物理ページ(64kB×16物理ページ=1024kB)である。なお、これら各単位のサイズは一例であり、これらの値に限定されるものではない。NAND型フラッシュメモリ20の寿命を延ばすためには、イレース回数をできるだけ少なくすることが望ましい。
なお、1つの物理ページ600が2以上の物理ブロック610にまたがることはない。すなわち、1つの物理ページ600にライトされたデータは一度にイレースされる。
次に、図3を参照して、本実施形態のNAND型フラッシュメモリ20の構成を説明する。
NAND型フラッシュメモリ20は、データを一時的に格納するページバッファ22と、データを不揮発的に記憶するメモリセル24と、を含む。
本実施形態ではページバッファ22の大きさは1物理ページ分のデータの大きさに等しい。すなわち、ページバッファ22の大きさは16クラスタである。ページバッファ22に格納されたデータは、一度にメモリセル24にライトすることが可能である。ライト性能を向上させるためには、ページバッファ22のすべてをデータで満たしてからメモリセル24へのライトを行う。
次に、図4を参照して、本実施形態のメモリコントローラ10がNAND型フラッシュメモリ20のデータをリードライトする単位である論理ページ700の構成を説明する。
図4の1つのセルはクラスタ620を示す。各クラスタにはMedia Cluster Offsetと呼ばれる番号(以下、MCOと表記する)が割り当てられる。論理ページ700内の各クラスタはMCOによりその位置が特定される。
また、各NAND型フラッシュメモリ20に対応する横方向の1行(16クラスタ)は物理ページ600となる。すなわち、本実施形態では論理ページ700の大きさは18物理ページである。
次に、図5a及び図5bを参照して、本実施形態のメモリコントローラ10がNAND型フラッシュメモリ20のデータをイレースする単位である論理ブロック800の構成を説明する。
図5aに示すように、本実施形態では論理ブロック800の大きさは16論理ページである。各NAND型フラッシュメモリ20の全クラスタは、論理ブロック番号、論理ページ番号、MCOにより一意に特定される。
また、図5bに示すように、同一のMCO群を有する物理ページ600の集合は一つの物理ブロック610に属する。例えば、MCO=0、18、36、・・・、252、270を有する物理ページ#0〜物理ページ#15の集合はNAND型フラッシュメモリCh0の1つの物理ブロック610に属する。MCO=1、19、37、・・・、253、271を有する物理ページ#0〜物理ページ#15の集合はNAND型フラッシュメモリCh1の1つの物理ブロック610に属する。同様に、MCO=17、35、53、・・・、269、287を有する物理ページ#0〜物理ページ#15の集合はNAND型フラッシュメモリCh17の1つの物理ブロック610に属する。
すなわち、各論理ブロック800には、NAND型フラッシュメモリCh0の1つの物理ブロック〜NAND型フラッシュメモリCh17の1つの物理ブロックの、合計18物理ブロックが含まれる。メモリコントローラ10は、NAND型フラッシュメモリ20のデータのイレースの最小単位である物理ブロック610ごとではなく、論理ブロック800ごとにイレース処理を行う。
次に、図6を参照して、本実施形態のデータパケット900の構成を説明する。
データパケット生成部220は、ホストIF制御部100から受信したデータを、1クラスタ毎にヘッダーを付加してデータパケット900として生成する。生成されたデータパケット900はライトバッファ210に格納される。
ヘッダーにはNAND管理部300による制御のための情報が格納されている。
LBA(Logical Block Address)はホスト2が管理しているセクター単位(例えば512B)の論理アドレスで、データパケット900に格納されているデータの先頭セクターのLBAを示す。
論理ブロック番号、論理ページ番号、MCOは、前述のようにデータパケット900に格納されているデータがどのNAND型フラッシュメモリ20のどのクラスタにライトされるべきかを示す。ストリームIDは後述するストリームデータを識別するための識別子である。ライト方法は、後述するライト方法のどれを使用するのかを表す情報である。
次に、図7を参照して、本実施形態のメモリコントローラ10がNAND型フラッシュメモリ20へデータをライトする第1の方法を説明する。
第1の方法では、メモリコントローラ10は、ホスト2より受信したデータを各論理ページ700内のMCO順に配置する。すなわち、各論理ページ700内で最初に受信したデータがMCO=0に配置され、次に受信したデータがMCO=1に配置され、次に受信したデータがMCO=2に配置される。MCO=17の次に受信したデータはMCO=18に配置される。以下では第1の方法を縦書きと表記する。
ホスト2より受信したデータのLBAがシーケンシャルである場合、縦書きによってNAND型フラッシュメモリ20へデータをライトしておけば、NAND型フラッシュメモリ20の各チャネルから同時にリードすることが可能であるため、シーケンシャルリード性能を向上させることができる。
図8は、本実施形態のメモリコントローラ10が縦書きにより1論理ページ分のデータをNAND型フラッシュメモリ20へライトする場合の、ライトバッファ210のデータ格納量の変化を説明する図である。
時刻T0において、データパケット生成部220は、ある論理ページ700のMCO=0にライトされるデータをライトバッファ210に格納する。その後、MCO=1のデータ、MCO=2のデータ・・・、が順にライトバッファ210に格納される。そして、MCO=269のデータまでライトバッファ210に格納された後、時刻T1において、MCO=270のデータがライトバッファ210に格納される。
MCO=270のデータがライトバッファ210に格納されると、NAND型フラッシュメモリCh0の1物理ページ分のデータがライトバッファ210に格納されたことになるので、バッファ読み出し制御部320は、ライトバッファ210からNAND型フラッシュメモリCh0内のページバッファ22へデータを転送する。
その後、同様にMCO=271のデータがライトバッファ210に格納されると、ライトバッファ210からNAND型フラッシュメモリCh1内のページバッファ22へデータが転送され、MCO=272のデータがライトバッファ210に格納されると、ライトバッファ210からNAND型フラッシュメモリCh2内のページバッファ22へデータが転送され・・・、とデータの格納及び転送が行われる。
この時にライトバッファ210に格納されるデータの最大量(ΔBuff18)は、MCO=0からMCO=270までの271クラスタ分である。
次に、図9を参照して、本実施形態のメモリコントローラ10がNAND型フラッシュメモリ20へデータをライトする第2の方法を説明する。
第2の方法では、メモリコントローラ10は、ホスト2より受信したデータをNAND型フラッシュメモリ20の9チャネルごとにMCO順に配置する。すなわち、各論理ページ700内で最初に受信したデータがMCO=0に配置され、次に受信したデータがMCO=1に配置され、次に受信したデータがMCO=2に配置される。MCO=8の次に受信したデータはMCO=18に配置される。MCO=278の次に受信したデータはMCO=9に配置される。
ここでは9チャネルごとにMCO順にライトする方法を説明したが、任意のNチャネルごとにMCO順にライトすることも可能である。以下では、NチャネルごとにMCO順にライトする第2の方法を、Nチャネル折り返し書きと表記する。前述した縦書きは18チャネル折り返し書きに相当する。
ホスト2より受信したデータのLBAがシーケンシャルである場合、Nチャネル折り返し書きによってNAND型フラッシュメモリ20へデータをライトしておけば、Nチャネルの範囲内でのシーケンシャルリード性能を向上させることができる。
図10は、本実施形態のメモリコントローラ10が9チャネル折り返し書きにより1論理ページ分のデータをNAND型フラッシュメモリ20へライトする場合の、ライトバッファ210のデータ格納量の変化を説明する図である。
時刻T0において、データパケット生成部220は、ある論理ページ700のMCO=0にライトされるデータをライトバッファ210に格納する。その後、MCO=1のデータ、MCO=2のデータ・・・、が順にライトバッファ210に格納される。MCO=8のデータがライトバッファ210に格納された後は、MCO=18のデータがライトバッファ210に格納される。そして、MCO=260のデータまでライトバッファ210に格納された後、時刻T1において、MCO=270のデータがライトバッファ210に格納される。
MCO=270のデータがライトバッファ210に格納されると、NAND型フラッシュメモリCh0の1物理ページ分のデータがライトバッファ210に格納されたことになるので、バッファ読み出し制御部320は、ライトバッファ210からNAND型フラッシュメモリCh0内のページバッファ22へデータを転送する。
その後、同様にMCO=271のデータがライトバッファ210に格納されると、ライトバッファ210からNAND型フラッシュメモリCh1内のページバッファ22へデータが転送され、MCO=272のデータがライトバッファ210に格納されると、ライトバッファ210からNAND型フラッシュメモリCh2内のページバッファ22へデータが転送され・・・、とデータの格納及び転送が行われる。
同様に、MCO=9、10、・・・、17、27、28、・・・、268、269のデータがライトバッファ210に格納された後、時刻T2においてMCO=279のデータがライトバッファ210に格納される。
MCO=279のデータがライトバッファ210に格納されると、NAND型フラッシュメモリCh9の1物理ページ分のデータがライトバッファ210に格納されたことになるので、バッファ読み出し制御部320は、ライトバッファ210からNAND型フラッシュメモリCh9内のページバッファ22へデータを転送する。
その後、同様にMCO=280のデータがライトバッファ210に格納されると、ライトバッファ210からNAND型フラッシュメモリCh10内のページバッファ22へデータが転送され、MCO=281のデータがライトバッファ210に格納されると、ライトバッファ210からNAND型フラッシュメモリCh11内のページバッファ22へデータが転送され・・・、とデータの格納及び転送が行われる。
この時にライトバッファ210に格納されるデータの最大量(ΔBuff9)は、MCO=0、1、・・・、8、18、19、・・・、259、260、270までの136クラスタ分である。また、NAND型フラッシュメモリCh0内のページバッファ22へのデータ転送が始まる時刻(T1)は縦書きの時よりも早い。
次に、図11を参照して、本実施形態のメモリコントローラ10がNAND型フラッシュメモリ20へデータをライトする第3の方法を説明する。
第3の方法では、メモリコントローラ10は、ホスト2より受信したデータをNAND型フラッシュメモリ20のチャネルごとに配置する。すなわち、各論理ページ700内で最初に受信したデータがMCO=0に配置され、次に受信したデータがMCO=18に配置され、次に受信したデータがMCO36に配置される。MCO=270の次に受信したデータはMCO=1に配置される。以下では第3の方法を横書きと表記する。なお、横書きは1チャネル折り返し書きに相当する。
図12は、本実施形態のメモリコントローラ10が横書きにより1論理ページ分のデータをNAND型フラッシュメモリ20へライトする場合の、ライトバッファ210のデータ格納量の変化を説明する図である。
時刻T0において、データパケット生成部220は、ある論理ページのMCO=0にライトされるデータをライトバッファ210に格納する。その後、MCO=18のデータ、MCO=36のデータ・・・、が順にライトバッファ210に格納される。そして、MCO=252のデータまでライトバッファ210に格納された後、時刻T1において、MCO=270のデータがライトバッファ210に格納される。
MCO=270のデータがライトバッファ210に格納されると、NAND型フラッシュメモリCh0の1物理ページ分のデータがライトバッファ210に格納されたことになるので、バッファ読み出し制御部320は、ライトバッファ210からNAND型フラッシュメモリCh0内のページバッファ22へデータを転送する。
その後、同様にMCO=1、19、37、・・・、253、271のデータがライトバッファ210に格納されると、時刻T2において、ライトバッファ210からNAND型フラッシュメモリCh1内のページバッファ22へデータが転送される。また、MCO=2、20、38、・・・、254、272のデータがライトバッファ210に格納されると、時刻T3において、ライトバッファ210からNAND型フラッシュメモリCh2内のページバッファ22へデータが転送され・・・、とデータの格納及び転送が行われる。
この時にライトバッファ210に格納されるデータの最大量(ΔBuff1)は、MCO=0、18、36、・・・、252までの15クラスタ分である。また、NAND型フラッシュメモリCh0内のページバッファ22へのデータ転送が始まる時刻(T1)は縦書きや9チャネル折り返し書きの時よりも早い。
これまで説明したように、Nチャネル折り返し書き(1≦N≦18)では、Nが大きくなるにつれ、リード時のシーケンシャルリード性能が高い。一方で、Nが大きくなるにつれ、ライトバッファ210に格納されるデータ量も大きくなり、ライト性能の低下を招く可能性もある。
なお、上記の各ライト方法は半導体記憶装置1全体で1つに決められていてもよいし、論理ブロック800ごとに変更されてもよいし、論理ページ700ごとに変更されてもよい。
次に、図13a〜図13cを参照して、本実施形態のライトデータ配置テーブル格納部230に格納されるライトデータ配置テーブル1000の構成を説明する。
図13a〜図13cにおいて、WtCntはライトバッファ210に格納されるデータのクラスタ単位での順番を示す。また、MCOは各WtCntに対応するMCOを示す。なお、各図は作図の都合上、それぞれ2つのテーブルとして描かれている。実際には、各テーブルは、それぞれWtCnt=0〜287を有する1つのテーブルである。
図13aに示すライトデータ配置テーブル1000aは縦書き時に使用される。図13bに示すライトデータ配置テーブル1000bは9チャネル折り返し書き時に使用される。図13cに示すライトデータ配置テーブル1000cは横書き時に使用される。ライトデータ配置テーブル格納部230には、N=18(縦書き)、N=9、N=1(横書き)以外のNチャネル折り返し書き用のライトデータ配置テーブル1000が格納されていてもよい。
次に、図14を参照して、本実施形態のデータパケット生成部220の詳細な構成を説明する。
データパケット生成部220は、ホストIF制御部100より受信したデータをパケットサイズ(4kB)に分割する。データパケット生成部220は、データを1クラスタ分受信すると、ライトカウンタ222をインクリメントさせる。データパケット生成部220は、データを1論理ページ分受信すると、論理ページカウンタ224をインクリメントさせる。ライトカウンタ222の値は前述したWtCntとなる。
また、データパケット生成部220は、後述するように論理ブロック管理テーブル1100に現在のライト方法を保持する。データパケット生成部220は、ライト方法に応じたライトデータ配置テーブル1000を、WtCntをインデックスとして参照することでMCOを求める。データパケット生成部220は、縦書きを使用している場合にはライトデータ配置テーブル1000aを参照する。データパケット生成部220は、9チャネル折り返し書きを使用している場合にはライトデータ配置テーブル1000bを参照する。データパケット生成部220は、横書きを使用している場合にはライトデータ配置テーブル1000cを参照する。
データパケット生成部220はこれらの情報を用いてデータパケット900を生成する。生成されたデータパケット900は、ライトバッファ210に格納される。
バッファ読み出し制御部320は、データパケット900中のライト方法及びMCOに従って、データパケット900をバッファ210から読み出すタイミング、及び、データパケット900をどのNANDコントローラ310に転送するのかを判断する。これにより、前述したようなライト方法に応じたNAND型フラッシュメモリ20へのデータのライトが実現される。
以上、本実施形態の半導体記憶装置1における、NAND型フラッシュメモリ20へのデータのライトについて説明した。以下では、ストリームデータのライトについて説明する。
近年では不揮発性半導体メモリのイレース回数を低減するために、同一のライフサイクルを有するデータの集合、すなわちホストが無効化する時には一括して無効化することになるデータの集合(以下、ストリームデータと呼ぶ)を、不揮発性半導体メモリの同一イレース単位内にまとめてライトする技術が導入されている。
ここで、ホストがあるデータを無効化する時には、ホストは、(1)当該データと同一の論理アドレスを指定するライトコマンドの発行及びライトデータの送信、(2)当該データに対する無効化を指示するコマンド(例えばSCSI規格で規定されているUNMAPコマンド)の発行、(3)記憶装置の全領域の初期化を指示するコマンド(例えばSCSI規格で規定されているFORMAT UNITコマンド)の発行、などを行いうる。
図15及び図16は、SAS規格を含むSCSI規格においてストリームデータのライトに使用されるコマンドの例を説明する図である。
図15に示すSTREAM CONTROLコマンドは、各ストリームデータを識別するための識別子(ストリームID)の割り当てをホスト2が半導体記憶装置1に要求するコマンドである。また、STREAM CONTROLコマンドは、不要になったストリームIDの解放をホスト2が半導体記憶装置1に要求するためにも使用される。
STR_CTLフィールドは、01bがストリームIDの割り当て要求(OPEN)を表し、10bがストリームIDの解放要求(CLOSE)を表す。解放すべきストリームIDは、STR_IDフィールドで指定される。以下ではSTR_CTLフィールドが01bであるSTREAM CONTROLコマンドをSTREAM CONTROL(OPEN)コマンドと表記し、STR_CTLフィールドが10bであるSTREAM CONTROLコマンドをSTREAM CONTROL(CLOSE)コマンドと表記する。
図16に示すWRITE STREAMコマンドは、ストリームデータのライトに使用されるコマンドである。ホスト2はSTR_IDフィールドに、STREAM CONTROL(OPEN)コマンドに応じて半導体記憶装置1が割り当てたストリームIDを指定して、半導体記憶装置1にコマンドを発行する。
次に、図17を参照して、SAS規格においてストリームデータを転送する場合のプロトコルの一例を説明する。なお、説明を簡略化するため、XFER_RDYフレームやRESPONSEフレーム、DATAフレーム等、SAS規格においてコマンド実行に必要なフレームについての説明は省略してある。
まず、ホスト2がSTREAM CONTROL(OPEN)コマンドを発行し、ストリームIDの割り当てを要求する。半導体記憶装置1はライトバッファ210の空きスペースを確保する等の処理を行った後、ストリームID=1を割り当てたことをホスト2に通知する。同様に、半導体記憶装置1がストリームID=2、3を割り当てたことが、ホスト2に通知されている。
ホスト2は、割り当てられたストリームID=1、2、3を使ってWRITE STREAMコマンドを発行し、ストリームデータの転送を行う。ホスト2は各ストリームデータのライフサイクルを把握している。ホスト2は異なるライフサイクルのストリームデータを、同一のストリームIDを用いて転送することはしない。例えば、ストリームID=1のWRITE STREAMコマンドによって転送されたデータは、ホスト2が無効化する時にはそのすべてを一括して無効化する。
ストリームデータの転送が完了すると、ホスト2はSTREAM CONTROL(CLOSE)コマンドを発行し、不要になったストリームID=1、2、3の解放を要求する。
ここで、SAS規格においてはコマンドをキューイングして実行することが可能であるので、図18に示すように、例えばストリームID=1のストリームデータの転送がすべて完了する前に、ストリームID=2やストリームID=3のストリームデータを転送することが可能である。
次に、図19を参照して、本実施形態のストリーム制御部240の詳細な構成を説明する。
ストリーム制御部240は、ホスト2に割り当てるストリームIDを管理するためのストリームID管理テーブル242を含む。ストリームID管理テーブル242は、ストリームID、Openフラグ、Activeフラグを有する。本実施形態では8個までのストリームIDがホスト2に割り当て可能である。
ホスト2からSTREAM CONTROL(OPEN)コマンドを受信すると、CPU500は、FWの制御に基づいてストリームID管理テーブル242から割り当て可能なストリームIDを検索し、割り当てたストリームIDをホスト2へ通知するようにホストIF制御部100を制御する。この時、CPU500は、当該ストリームIDについてストリームID管理テーブル242のOpenフラグをセットする。
また、ホスト2からストリームデータの転送が開始されると、ホストIF制御部100はDATAフレームのヘッダーを読み取り、各ストリームデータのストリームID(すなわちホスト2からのストリームデータの転送が実際に始まっているストリームID。以下、アクティブストリームIDと表記する)を、ストリーム制御部240に通知する。
アクティブストリームIDの通知を受けたストリーム制御部240は、当該ストリームIDについて、ストリームID管理テーブル242のActiveフラグをセットする。
ストリームデータの転送完了後、ホスト2がSTREAM CONTROL(CLOSE)コマンドを発行し、不要になったストリームIDの解放を要求すると、CPU500は当該ストリームIDについて、ストリームID管理テーブル242のOpenフラグ及びActiveフラグをクリアーする。
OpenフラグがセットされているストリームIDの数はオープンストリームカウンタ244によって数えられ、ActiveフラグがセットされているストリームIDの数はアクティブストリームカウンタ246によって数えられる。図19では、ストリームID=1、2、3、4がホスト2に割り当て済みであり、ストリームID=1、2についてストリームデータの転送が開始されている。従って、オープンストリームカウンタ244の値は4、アクティブストリームカウンタ246の値は2である。
アクティブストリームIDはデータパケット生成部220にも出力され、後述するように、各論理ブロック800に適切なストリームデータがライトされるようにデータパケット900が生成される。また、オープンストリームカウンタ244及びアクティブストリームカウンタ246の値もデータパケット生成部220に出力される。これらのカウンタの値は、ライト方法の変更条件として用いられる。
なお、ホスト2に割り当て可能なストリームID数以上のSTREAM CONTROL(OPEN)コマンドを受信した場合には、半導体記憶装置1はホスト2にエラーを通知する。また、GET STREAM STATUSコマンド(図示しない)により、割り当て済みのストリームIDの数を報告するように求められた場合には、オープンストリームカウンタ244の値を報告すればよい。
次に、図20を参照して、本実施形態においてストリームデータをライトする時の、各論理ブロック800に割り当てられるストリームIDの一例を説明する。図20では、論理ブロック#0〜#6に割り当てられるストリームIDの一例が示されている。
前述したように、同一のストリームIDを有するストリームデータは一括して無効化される。メモリコントローラ10がデータをイレースする単位である論理ブロック800内に、複数のストリームIDが割り当てられることはない。すなわち、論理ブロック#0〜#6のそれぞれに、複数のストリームIDが割り当てられることはない。
一方で、論理ブロック#1、#2にストリームID=2が割り当てられているように、複数の論理ブロック800に1つのストリームIDが割り当てられてもよい。また、論理ブロック#0、#4のように、同一のストリームIDを有するストリームデータで論理ブロック800のすべての領域がライトされない場合には、空きスペースにはゼロデータがライトされる。
次に、図21を参照して、本実施形態のデータパケット生成部220に実装される論理ブロック管理テーブル1100の構成の一例を説明する。
STREAM CONTROL(OPEN)コマンドに応じてストリームIDが割り当てられる時に、CPU500は、対応する論理ブロック800の番号、及び、その論理ブロック800のライトに使用されるライト方法を、論理ブロック管理テーブル1100に登録する。ライト方法は、例えばシーケンシャルリード性能を重視して縦書きとする。
図21は、図20に例示する各論理ブロック800とストリームIDに対応している。すなわち、論理ブロック#0にはストリームID=1が、論理ブロック#1と論理ブロック#2にはストリームID=2が、論理ブロック#3と論理ブロック#4にはストリームID=3が、論理ブロック#5にはストリームID=4が、論理ブロック#6にはストリームID=5がそれぞれ割り当てられている。
データパケット生成部220は、ホストIF制御部100から入力されるアクティブストリームIDをインデックスとして本テーブルを検索し、論理ブロック800の番号及びライト方法を取得しデータパケット900を生成する。
次に、図22を参照して、本実施形態のメモリコントローラ10が複数のストリームデータをNAND型フラッシュメモリ20へライトする場合の、ライトバッファ210のデータ格納量の変化の一例を説明する。図22は、図20及び図21に例示する各論理ブロック800とストリームIDに対応する。
時刻T0において、データパケット生成部220は、縦書きによって論理ブロック#0の論理ページ#0にライトするストリームデータ(ストリームID=1)をライトバッファ210へ格納し始める。一方で、ストリームID=1のストリームデータがΔBuff18だけライトバッファ210に格納された後、時刻T1において、ホスト2が、キューイングして実行しているストリームID=2のストリームデータの転送を開始したとする。
この場合、ストリームID=1のストリームデータは、まだライトバッファ210からNAND型フラッシュメモリCh0内のページバッファ22へ転送されないが、データパケット生成部220は、縦書きによって論理ブロック#1の論理ページ#0にライトするストリームデータ(ストリームID=2)をライトバッファ210へ格納しなければならない。
同様に、ストリームID=2のストリームデータがΔBuff18だけライトバッファ210に格納された後、時刻T2において、ホスト2が、キューイングして実行しているストリームID=3のストリームデータの転送を開始したとする。
この場合も、ストリームID=2のストリームデータは、まだライトバッファ210からNAND型フラッシュメモリCh0内のページバッファ22へ転送されないが、データパケット生成部220は、縦書きによって論理ブロック#3の論理ページ#0にライトするストリームデータ(ストリームID=3)をライトバッファ210へ格納しなければならない。
ここで、ストリームID=3のストリームデータがΔBuff18だけライトバッファ210に格納された後、時刻T3において、ホスト2が、キューイングして実行しているストリームID=4のストリームデータの転送を開始したとする。
この時、データパケット生成部220は、ライトバッファ210のデータ格納量があらかじめ定めておいた閾値を上回ったので、ライト方法を9チャネル折り返し書きに変更する。
すると図23に示すように、ライトバッファ210に格納しなければならないデータの最大量は、1ストリームあたりΔBuff9になり、ライトバッファ210の空きスペースの枯渇を防止することができる。なお、図示していないが、さらにライトバッファ210のデータ格納量が増加した場合には、ライト方法は横書きに変更されてもよい。
次に、図24を参照して、本実施形態のデータパケット生成部220の動作を説明する。
データパケット生成部220は、ホストIF制御部100よりアクティブストリームIDの通知を受ける(S100)と、論理ブロック管理テーブル1100を検索し、ライト方法の設定を取得する(S101)。CPU500が初期設定するライト方法は例えば縦書きとし、データパケット生成部220は、縦書き用のライトデータ配置テーブル1000aに従ってMCOを算出し、ライトバッファ210へデータを格納する(S102)。
ライトバッファ210へのデータの格納中、データパケット生成部220は、ライト方法を変更するための条件が成立したか否かを監視する(S103)。条件が成立していた場合(S103:Yes)は、論理ブロック管理テーブル1100が書き換えられ、ライト方法が変更される(S104)。
ライト方法の変更例としては、ライトバッファ210のデータ格納量の増加による縦書きから9チャネル折り返し書きへの変更や、ライトバッファ210のデータ格納量の減少による9チャネル折り返し書きから縦書きへの変更などがある。
そして、データパケット生成部220は、変更されたライト方法に応じたライトデータ配置テーブル1000に従ってMCOを算出し、ライトバッファ210へのデータの格納を継続する(S101〜S102)。
次に、図25を参照して、本実施形態におけるライト方法の変更条件を説明する。
ライトバッファ210のデータ格納量が少ない時は、シーケンシャルリード性能を重視し縦書きが選択される。ライトバッファ210のデータ格納量が増加し、第1閾値以上となった時は9チャネル折り返し書きが選択される。さらにライトバッファ210のデータ格納量が増加し、第3閾値以上となった時は横書きが選択される。
一方、ライトバッファ210のデータ格納量が減少する場合は、異なる閾値が用いられる。すなわち、ライト方法として横書きが選択されている時に、ライトバッファ210のデータ格納量が減少し第3閾値以下となっても、ライト方法は横書きのまま変更されない。そして、ライトバッファ210のデータ格納量がさらに減少し、第4閾値(第4閾値<第3閾値とする)以下となった時に、ライト方法として9チャネル折り返し書きが選択される。同様に、ライト方法として9チャネル折り返し書きが選択されている時に、ライトバッファ210のデータ格納量が減少し、第1閾値以下となっても、ライト方法は9チャネル折り返し書きのまま変更されない。そして、ライトバッファ210のデータ格納量がさらに減少し、第2閾値(第2閾値<第1閾値とする)以下となった時に、ライト方法として縦書きが選択される。
上記では、ライト方法の変更条件としてライトバッファ210のデータ格納量を用いたが、オープンストリームカウンタ244の値や、アクティブストリームカウンタ246の値を用いても、同様にライト方法を変更することができる。
4種類より多い閾値を設定し3種類よりも多いライト方式が選択されるようにしてもよい。また、第2閾値=第1閾値、第4閾値=第3閾値としてもよい。
以上説明した第1の実施形態の半導体記憶装置によれば、ストリームデータの転送状況に応じてライト方法を変更するので、シーケンシャルリードの性能を向上させつつ、ライトバッファの空きスペースの枯渇を防止することができ、半導体記憶装置の性能を向上させることができる。
[第2の実施形態]
第1の実施形態の半導体記憶装置では、ライトバッファのデータ格納量又はストリームIDの数によってライト方法を変更した。これに対し本実施形態の半導体記憶装置では、ストリームデータのシーケンシャル性により、さらにライト方法を変更する。
図26aは、ホスト2が同一のストリームIDを用いて、複数のWRITE STREAMコマンドを発行する時の一例を説明する図である。
ホスト2は、ストリームID=1を用いて、開始LBA=0x0000から転送数=0x50セクター、開始LBA=0x0100から転送数=0x30セクター、開始LBA=0x0500から転送数=0x80セクター、開始LBA=0x0800から転送数=0x100セクター、の4つのWRITE STREAMコマンドをそれぞれ発行する。
また、ホスト2は、ストリームID=2を用いて、開始LBA=0x1000から転送数=0x800セクター、開始LBA=0x1800から転送数=0x800セクター、の2つのWRITE STREAMコマンドをそれぞれ発行する。
この時にホスト2から送信されるストリームデータのLBAは、図26bに示すようになる。図26bの実線部分はストリームデータが転送されるLBA範囲を示す。図26bの点線部分はストリームデータが転送されないLBA範囲を示す。ストリームID=1のストリームデータはシーケンシャル性が低く、ストリームID=2のストリームデータはシーケンシャル性が高い。
前述したように、Nチャネル折り返し書きでは、Nが大きくなるにつれてリード時のシーケンシャルリード性能が高くなるため、ストリームID=2のストリームデータについては、なるべく大きなNを用いてNチャネル折り返し書きをすることが望ましい。
次に、図27a及び図27bを参照して、本実施形態においてシーケンシャル性を判定するためのアルゴリズムを説明する。図27a及び図27bは、ライトコマンド(A)〜ライトコマンド(E)に関連付けられるストリームデータ(以下、データ(A)〜データ(E)と称する)の、開始LBA、及び、転送数を示している。
本実施形態の半導体記憶装置1では、ホストIF制御部100から入力される開始LBAや転送数を用いて、ストリーム制御部240がシーケンシャル性を判定する。ストリーム制御部240は、同一のストリームIDを有するストリームデータの、基準となる開始LBAを記憶する。すなわち、図27aに示す例において、ストリーム制御部240はデータ(A)の開始LBAを、基準開始LBAとして記憶する。ストリーム制御部240は、データ(A)のLBA範囲と連続するLBA範囲を有するデータ(B)〜データ(E)のそれぞれの転送数の累積数を記憶する。そして、データ(D)の受信により、累積数があらかじめ設定されたロングシーケンシャル判定閾値以上になると、ストリーム制御部240は、このストリームデータのシーケンシャル性は高いと判定する。
ホスト2のストリームデータの転送の仕方によっては、半導体記憶装置1はシーケンシャル性が高いストリームデータを、LBA順に受信できるとは限らない。図27bに示す例においては、半導体記憶装置1は、データ(B)、データ(A)、データ(C)、データ(D)、データ(E)の順にストリームデータを受信している。ストリーム制御部240は、このように受信されたストリームデータについても、シーケンシャル性を判定することができる。
次に、図28a〜図28gを参照して、本実施形態のストリーム制御部240がストリームデータのシーケンシャル性を判定するために用いるロングシーケンシャル判定テーブル1200(以下、判定テーブル1200と呼ぶ)の構成の一例を説明する。
判定テーブル1200は、複数のエントリーを有する。本実施形態においては、判定テーブル1200は、3つのエントリーを有する。1つのエントリーは、開始LBAと、最終LBAと、累積数と、世代番号と、を含む。また、判定テーブル1200は、ロング判定フラグを有する。判定テーブル1200はストリームIDごとに管理される。すなわち、1つのストリームIDに対し、1つの判定テーブル1200が存在する。判定テーブル1200は、STREAM CONTROL(OPEN)コマンドに応じてストリームIDが割り当てられた時に、CPU500によって初期化されてもよい。
以下の説明ではロングシーケンシャル判定閾値は0x700が設定されているものとする。
図28aは、判定テーブル1200が初期化された状態を示す。図では省略してあるが、すべてのエントリーの開始LBA、最終LBA、累積数、世代番号はゼロである。ロング判定フラグはセットされていない。
図28bは、図28aの状態で開始LBA=0x1000から転送数=0x200セクターのWRITE STREAMコマンド(コマンドA)が発行された時の判定テーブル1200の状態を示す。エントリー0の開始LBAは0x1000、最終LBAは開始LBA+転送数−1なので、0x11FFとなる。エントリー0の累積数は、登録されている累積値(0x000)に、コマンドAの転送数(0x200)を足したもので、0x200になる。新規にコマンド情報が登録されたエントリーの世代番号は1になる。すなわち、エントリー0の世代番号は1になる。
図28cは、図28bの状態で開始LBA=0x1200から転送数=0x100セクターのWRITE STREAMコマンド(コマンドB)が発行された時の判定テーブル1200の状態を示す。コマンドBの開始LBAは、エントリー0の最終LBAと連続である。従って、コマンドBの情報はエントリー0に登録される。エントリー0の開始LBAは0x1000のまま、最終LBAはコマンドBの最終LBAである0x12FFとなる。エントリー0の累積数は、登録されている累積値(0x200)に、コマンドBの転送数(0x100)を足したもので、0x300になる。受信したコマンドのLBA範囲と連続するLBA範囲を有するエントリーの世代番号は1になる。すなわち、エントリー0の世代番号は1のままである。
図28dは、図28cの状態で開始LBA=0x1400から転送数=0x200セクターのWRITE STREAMコマンド(コマンドC)が発行された時の判定テーブル1200の状態を示す。コマンドCの開始LBAはエントリー0の最終LBAと連続ではない。この時、コマンドCの情報は、エントリー1に登録される。エントリー1の開始LBAは0x1400、最終LBAは0x15FFとなる。エントリー1の累積数は、登録されている累積値(0x000)に、コマンドCの転送数(0x200)を足したもので、0x200になる。新規にコマンド情報が登録されたエントリーの世代番号は1になる。すなわち、エントリー1の世代番号は1になる。新規にコマンド情報が登録されたエントリー以外のエントリーのうち、累積数がゼロではないエントリーの世代番号は、1ずつインクリメントされる。すなわち、エントリー0の世代番号は2になる。
図28eは、図28dの状態で開始LBA=0x0E00から転送数=0x100セクターのWRITE STREAMコマンド(コマンドD)が発行された時の判定テーブル1200の状態を示す。コマンドDの開始LBAはエントリー0及びエントリー1の最終LBAと連続ではない。この時、コマンドDの情報は、エントリー2に登録される。エントリー2の開始LBAは0x0E00、最終LBAは0x0EFFとなる。エントリー2の累積数は、登録されている累積値(0x000)に、コマンドDの転送数(0x100)を足したもので、0x100になる。新規にコマンド情報が登録されたエントリーの世代番号は1になる。すなわち、エントリー2の世代番号は1になる。新規にコマンド情報が登録されたエントリー以外のエントリーのうち、累積数がゼロではないエントリーの世代番号は、1ずつインクリメントされる。すなわち、エントリー0の世代番号は3になる。エントリー1の世代番号は2になる。
図28fは、図28eの状態で開始LBA=0x1300から転送数=0x100セクターのWRITE STREAMコマンド(コマンドE)が発行された時の判定テーブル1200の状態を示す。コマンドEの開始LBAはエントリー0の最終LBAと連続である。また、コマンドEの最終LBAはエントリー1の開始LBAと連続である。この時、エントリー0の情報、エントリー1の情報、コマンドEの情報はマージされて、開始LBAが小さいほうのエントリー、すなわちエントリー0に登録される。エントリー0の開始LBAは0x1000のままである。エントリー0の最終LBAはエントリー1の最終LBAであった0x15FFとなる。エントリー0の累積数は、登録されている累積値(0x300)に、エントリー1の累積数(0x200)及びコマンドEの転送数(0x100)を足したもので、0x600になる。マージされたエントリーのうち、開始LBAが小さいほうのエントリーの世代番号は1になる。すなわち、エントリー0の世代番号は1になる。マージされたエントリーのうち、開始LBAが大きいほうのエントリーはゼロに初期化される。すなわち、エントリー1は初期化される。マージされたエントリー以外のエントリーのうち、累積数がゼロではないエントリーの世代番号は、小さい世代番号を有するエントリーから順に、2、3、・・・と割り当てられる。すなわち、エントリー2の世代番号は1から2に書き換えられる。
図28gは、図28fの状態で開始LBA=0x0F00から転送数=0x100セクターのWRITE STREAMコマンド(コマンドF)が発行された時の判定テーブル1200の状態を示す。コマンドFの開始LBAはエントリー2の最終LBAと連続である。また、コマンドFの最終LBAはエントリー0の開始LBAと連続である。この時、エントリー0の情報、エントリー2の情報、コマンドFの情報はマージされて、開始LBAが小さいほうのエントリー、すなわちエントリー2に登録される。エントリー2の開始LBAは0x0E00のままである。エントリー2の最終LBAはエントリー0の最終LBAであった0x15FFとなる。エントリー2の累積数は、登録されている累積値(0x100)に、エントリー0の累積数(0x600)及びコマンドFの転送数(0x100)を足したもので、0x800になる。マージされたエントリーのうち、開始LBAが小さいエントリーの世代番号は1になる。すなわち、エントリー2の世代番号は1になる。マージされたエントリーのうち、開始LBAが大きいほうのエントリーはゼロに初期化される。すなわち、エントリー0は初期化される。
ここで、エントリー2の累積数がロングシーケンシャル判定閾値(0x700)以上となったので、ロング判定フラグがセットされる。
いずれのエントリーの累積数もゼロではない時に受信したコマンドのLBA範囲が、いずれのエントリーの開始LBA又は最終LBAとも不連続である場合には、世代番号が最大のエントリーが初期化される。なお、この場合は累積数が最小のエントリーを初期化するようにしてもよい。そして、初期化されたエントリーに、受信したコマンドの情報が登録される。
次に、図29を参照して、本実施形態のストリーム制御部240による判定テーブル1200の更新手順を説明する。
WRITE STREAMコマンドを受信すると(S200)、ストリーム制御部240は、累積数がゼロではなく、かつ、受信したコマンドのLBA範囲と連続する開始LBA又は最終LBAを有するエントリーがあるか否かを確認する(S201)。
LBAが連続するエントリーがない場合(S201:No)、ストリーム制御部240は、累積数がゼロのエントリーがあるか否かを確認する(S202)。累積数がゼロのエントリーがある場合(S202:Yes)、ストリーム制御部240は、累積数がゼロであるエントリーのうち、エントリー番号が最小のエントリーにコマンド情報を登録する(S203)。この時、当該エントリーの世代番号は1にされる。累積数がゼロのエントリーがない場合(S202:No)、ストリーム制御部240は、世代番号が最大であるエントリー、又は、累積数が最小であるエントリーを初期化する(S204)。
LBAが連続するエントリーがある場合(S201:Yes)、ストリーム制御部240は、マージ可能なエントリーがあるか否かを確認する(S205)。
マージ可能なエントリーがない場合(S205:No)、ストリーム制御部240は、受信したコマンドのLBA範囲と連続する開始LBA又は最終LBAを有するエントリーに、コマンド情報を登録する(S206)。この時、当該エントリーの世代番号は1にされる。また、登録対象外のエントリーのうち、累積数がゼロではないエントリーの世代番号は1ずつインクリメントされる(S207)。
マージ可能なエントリーがある場合(S205:Yes)、ストリーム制御部240は、複数のマージ対象エントリーのうち、開始LBAが最も小さいエントリーに、マージ対象エントリーの情報及びコマンド情報を登録する(S208)。この時、当該エントリーの世代番号は1にされる。また、マージ対象外のエントリーのうち、累積数がゼロではないエントリーの世代番号は、世代番号の小さい順に2、3、・・・と再割り当てされる(S209)。
次にストリーム制御部240は、いずれかのエントリーの累積数がロングシーケンシャル判定閾値以上となったか否かを確認し(S210)、該当するエントリーがある場合(S210:Yes)は、ロング判定フラグをセットする(S211)。
次に、図30を参照して、本実施形態の論理ブロック管理テーブル1100の構成の一例を説明する。
本実施形態では、第1の実施形態の論理ブロック管理テーブル1100の構成に、ロング判定フラグが追加される。なお、ロング判定フラグはストリームIDとともに、ストリーム制御部240からデータパケット生成部220に入力される。また、本実施形態では論理ブロックごとにライト方法が設定される。
図30に示すように、論理ブロック#0にはストリームID=1が、論理ブロック#1と#2にはストリームID=2が、論理ブロック#3と#4にはストリームID=3が、論理ブロック#5にはストリームID=4がそれぞれ割り当てられている。また、ストリームID=2と4にはロング判定フラグがセットされている。
この時、第1の実施形態で説明した判定条件に従えば、ライト方法は9チャネル折り返し書きであるとする。しかし、ロング判定フラグがセットされているストリームIDを含む論理ブロック#1、#2、#5については、シーケンシャルリード性能を重視しライト方法を縦書きに変更する。
なお、図30では論理ブロック#0、#3、#4のライト方法は9チャネル折り返し書きのままとしたが、論理ブロック#1、#2、#5のライト方法が縦書きに変更されたことに伴い、論理ブロック#0、#3、#4の少なくとも1つの論理ブロック800のライト方法が横書きに変更されてもよい。これにより、ライトバッファ210の空きスペースの枯渇を防止することができる。
以上説明した第2の実施形態の半導体記憶装置によれば、ストリームデータのシーケンシャル性によりライト方法を変更するので、シーケンシャルリードの性能を向上させ、半導体記憶装置の性能を向上させることができる。
以上説明した少なくとも1つの実施形態の半導体記憶装置によれば、ストリームデータの転送状況に応じてライト方法を変更するので、シーケンシャルリードの性能を向上させつつ、ライトバッファの空きスペースの枯渇を防止することができ、半導体記憶装置の性能を向上させることができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…記憶装置、2…ホスト、10…メモリコントローラ、20…不揮発性メモリ、22…ページバッファ、24…メモリセル、100…ホストインターフェース制御部、200…ライトバッファ管理部、210…ライトバッファ、220…データパケット生成部、222…ライトカウンタ、224…論理ページカウンタ、226…選択部、230…ライトデータ配置テーブル格納部、240…ストリーム制御部、242…ストリームID管理テーブル、244…オープンストリームカウンタ、246…アクティブストリームカウンタ、300…NAND管理部、310…NANDコントローラ、320…バッファ読み出し制御部、400…論物変換テーブル、500…CPU、600…物理ページ、610…物理ブロック、620…クラスタ、700…論理ページ、800…論理ブロック、900…データパケット、1000…ライトデータ配置テーブル、1100…論理ブロック管理テーブル、1200…ロングシーケンシャル判定テーブル

Claims (9)

  1. 一括して無効化されることになるデータの集合である複数のストリームデータのそれぞれを識別可能に送信するホストと通信可能である半導体記憶装置であって、
    第1の単位ごとにデータの書き込みが行われ、複数の前記第1の単位からなる第2の単位ごとにデータの消去が行われるm個(mは2以上の自然数)の不揮発性半導体メモリと、
    前記ホストと前記不揮発性半導体メモリとの間でデータを一時的に格納するバッファと、
    前記ホストから受信したライトコマンドに関連付けられたデータを、前記不揮発性半導体メモリのうちのN個(Nはm≧Nを満たす自然数)へ書き込むコントローラと、
    を具備し、
    前記コントローラは、
    前記第2の単位の1つには同一と識別されるストリームデータを書き込み、
    前記ホストからのデータの受信状況に応じて前記Nを変更して
    前記バッファに格納されたデータを、前記第1の単位のサイズごとに前記不揮発性半導体メモリへ書き込む
    半導体記憶装置。
  2. 前記コントローラは、
    前記バッファに格納されているデータの量が増加し、第1の閾値以上となったことに応じて前記Nを減少させ、
    前記バッファに格納されているデータの量が減少し、第2の閾値以下となったことに応じて前記Nを増大させる
    請求項1に記載の半導体記憶装置。
  3. 前記コントローラは、
    ストリームデータ内に含まれる各データの記憶先を示す論理アドレスの連続性に応じて前記Nをさらに変更する
    請求項1に記載の半導体記憶装置。
  4. 前記コントローラは、
    前記論理アドレスが連続した累積数を記憶し、
    前記累積数が所定の閾値以上となったことに応じて前記Nを増大させる
    請求項3に記載の半導体記憶装置。
  5. 前記コントローラは、
    ストリームデータを識別する識別子の割り当てを要求する第1のコマンドを前記ホストから受信したことに応じて、前記識別子を前記ホストへ供給する
    請求項1に記載の半導体記憶装置。
  6. 前記コントローラは、
    前記識別子を前記ホストへ割り当てたことに応じて、前記識別子の個数を数えるカウンタの値を増大させ、
    前記割り当てられた識別子の解放を要求する第2のコマンドを前記ホストから受信したことに応じて、前記カウンタの値を減少させる
    請求項5に記載の半導体記憶装置。
  7. 前記コントローラは、
    前記カウンタの値が増加し、第1の閾値以上となったことに応じて前記Nを減少させ、
    前記カウンタの値が減少し、第2の閾値以下となったことに応じて前記Nを増大させる
    請求項6に記載の半導体記憶装置。
  8. 前記コントローラは、
    前記識別子のうち前記ホストがストリームデータの送信を開始した識別子に対応する前記カウンタの値が増加し、第1の閾値以上となったことに応じて前記Nを減少させ、
    前記識別子のうち前記ホストがストリームデータの送信を開始した識別子に対応する前記カウンタの値が減少し、第2の閾値以下となったことに応じて前記Nを増大させる
    請求項6に記載の半導体記憶装置。
  9. 前記コントローラは、
    前記割り当てられた識別子の個数の報告を要求する第3のコマンドを前記ホストから受信したことに応じて、前記カウンタの値を前記ホストに報告する
    請求項7又は請求項8に記載の半導体記憶装置。
JP2016152034A 2016-08-02 2016-08-02 半導体記憶装置 Pending JP2018022275A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016152034A JP2018022275A (ja) 2016-08-02 2016-08-02 半導体記憶装置
US15/667,498 US10180811B2 (en) 2016-08-02 2017-08-02 Semiconductor storage device that dynamically changes a data buffering manner

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016152034A JP2018022275A (ja) 2016-08-02 2016-08-02 半導体記憶装置

Publications (1)

Publication Number Publication Date
JP2018022275A true JP2018022275A (ja) 2018-02-08

Family

ID=61071982

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016152034A Pending JP2018022275A (ja) 2016-08-02 2016-08-02 半導体記憶装置

Country Status (2)

Country Link
US (1) US10180811B2 (ja)
JP (1) JP2018022275A (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10216417B2 (en) 2016-10-26 2019-02-26 Samsung Electronics Co., Ltd. Method of consolidate data streams for multi-stream enabled SSDs
US11048624B2 (en) 2017-04-25 2021-06-29 Samsung Electronics Co., Ltd. Methods for multi-stream garbage collection
US10698808B2 (en) 2017-04-25 2020-06-30 Samsung Electronics Co., Ltd. Garbage collection—automatic data placement
US20180321855A1 (en) 2017-05-03 2018-11-08 Samsung Electronics Co., Ltd. Multistreaming in heterogeneous environments
JP6826066B2 (ja) * 2018-03-19 2021-02-03 株式会社東芝 管理装置、情報処理装置およびメモリ制御方法
US10515693B1 (en) * 2018-08-03 2019-12-24 SK Hynix Inc. Data storage apparatus and operating method thereof
TWI697003B (zh) * 2018-10-15 2020-06-21 大陸商合肥沛睿微電子股份有限公司 記憶體裝置與控制方法
KR20200053204A (ko) 2018-11-08 2020-05-18 삼성전자주식회사 저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법
KR102686924B1 (ko) * 2018-11-12 2024-07-19 삼성전자주식회사 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 포함하는 스토리지 시스템
CN114556313A (zh) * 2019-09-10 2022-05-27 美光科技公司 存储器映射装置及方法
US11500581B2 (en) 2020-09-25 2022-11-15 Western Digital Technologies, Inc. Efficient TLP fragmentations in extended LBA environment
US11537524B2 (en) * 2020-11-20 2022-12-27 Western Digital Technologies, Inc. Effective PCIe utilization by PCIe TLP coalescing
US11853218B2 (en) 2020-11-20 2023-12-26 Western Digital Technologies, Inc. Semi and cached TLP coalescing

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009230407A (ja) 2008-03-21 2009-10-08 Toshiba Corp データの更新方法、メモリシステムおよびメモリデバイス
JP2011175615A (ja) 2010-01-27 2011-09-08 Toshiba Corp ホスト装置およびメモリデバイス
JP5976608B2 (ja) 2012-10-30 2016-08-23 株式会社東芝 メモリデバイス
US9575661B2 (en) * 2014-08-19 2017-02-21 Samsung Electronics Co., Ltd. Nonvolatile memory systems configured to use deduplication and methods of controlling the same

Also Published As

Publication number Publication date
US20180039448A1 (en) 2018-02-08
US10180811B2 (en) 2019-01-15

Similar Documents

Publication Publication Date Title
JP2018022275A (ja) 半導体記憶装置
US11579773B2 (en) Memory system and method of controlling memory system
JP7346311B2 (ja) メモリシステム
US9696935B2 (en) Storage device that secures a block for a stream or namespace and system having the storage device
US11199974B2 (en) Allocation of memory regions of a nonvolatile semiconductor memory for stream-based data writing
JP6006431B2 (ja) ストレージシステムおよびデータ記憶方法
JP6678230B2 (ja) ストレージ装置
JP5480913B2 (ja) 記憶装置、およびメモリコントローラ
JP6139381B2 (ja) メモリシステムおよび方法
US20150052329A1 (en) Memory control device, host computer, information processing system and method of controlling memory control device
JP2012128815A (ja) メモリシステム
US10235284B2 (en) Memory system
JP7381678B2 (ja) メモリシステム
JP2022171208A (ja) メモリシステムおよび制御方法
US10303368B2 (en) Storage device that determines data attributes based on continuity of address ranges
US20190012260A1 (en) Flash memory package and storage system including flash memory package
JP2018124725A (ja) メモリシステムおよび方法
US20160034347A1 (en) Memory system

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20170531

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20170821

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180907

RD07 Notification of extinguishment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7427

Effective date: 20180907