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

半導体記憶装置 Download PDF

Info

Publication number
JP5631938B2
JP5631938B2 JP2012160309A JP2012160309A JP5631938B2 JP 5631938 B2 JP5631938 B2 JP 5631938B2 JP 2012160309 A JP2012160309 A JP 2012160309A JP 2012160309 A JP2012160309 A JP 2012160309A JP 5631938 B2 JP5631938 B2 JP 5631938B2
Authority
JP
Japan
Prior art keywords
storage unit
data
unit
memory
control unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012160309A
Other languages
English (en)
Other versions
JP2014021752A (ja
Inventor
孝生 丸亀
孝生 丸亀
敦寛 木下
敦寛 木下
貴宏 栗田
貴宏 栗田
義史 西
義史 西
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba 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 Corp filed Critical Toshiba Corp
Priority to JP2012160309A priority Critical patent/JP5631938B2/ja
Priority to US13/913,708 priority patent/US9152350B2/en
Publication of JP2014021752A publication Critical patent/JP2014021752A/ja
Application granted granted Critical
Publication of JP5631938B2 publication Critical patent/JP5631938B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/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
    • 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/0656Data buffering arrangements

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)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明の実施形態は、半導体記憶装置に関する。
一般的なホストシステム、例えばコンピュータシステムが備えるストレージ装置として磁気式のハードディスクドライブ(HDD)や、NANDフラッシュメモリのような不揮発性半導体メモリを搭載する固体ドライブ(SSD)や、埋め込みNANDフラッシュメモリなどがある。SSDや埋め込みNANDフラッシュメモリはストレージに分類されるが、規模が拡張されたメモリシステムともいえる。
このようなメモリシステムでは、例えばインタフェースと、第1のメモリブロックと、第2のメモリブロックと、コントローラから構成される。第1のメモリブロックはデータを格納し、第2のメモリブロックはデータの書き込み/読み出し時のバッファメモリである。第1のメモリブロックは、不揮発メモリであり、第2のメモリブロックよりも大容量であるが、アクセス速度が遅い。第2のメモリブロックは、第1のメモリブロックのアドレス変換テーブルを処理するための一時保存メモリであり、また、インタフェースの通信速度と、第1のメモリブロックの書き込み/読み出し速度との速度差を補うためにも使用される。
例えば、第1のメモリブロックは不揮発性のNANDフラッシュメモリであり、第2のメモリブロックは揮発性のDRAMもしくはSRAMである。NANDフラッシュメモリでは、読み出しを行う場合、非選択のメモリセル(読み出し対象外のページの非選択メモリセル)のゲートにも電圧が印加される。このため、読み出しを繰り返すと、各メモリセルの記憶データが破壊され、ビットエラーが発生するリードディスターブが問題となる。このリードディスターブの対策として、ECC(Error Correction Coding)を用いた誤り訂正が行われていた。
特開2009−87509号公報
従来、ECC処理等のために用いられるバッファメモリとして機能する第2のメモリブロックは、揮発性のメモリで構成されているが、例えばデータの書き込み/読み出しの途中で、電源が遮断されると、第2メモリブロックに一時的に保持されていたデータも消失してしまうという問題がある。
実施形態の半導体記憶装置は、制御部と第2記憶部とを備える。制御部は、ホスト装置からの要求に応じて、ホスト装置から供給されるデータが格納される第1記憶部に対するデータの書き込みを行う書き込み処理、または、第1記憶部に格納されたデータの読み出しを行う読み出し処理を制御する。第2記憶部は、書き込み処理または読み出し処理が行われる際に一時的に使用され、第3記憶部と第4記憶部とを含む。第3記憶部は、書き込み処理の対象となるデータの複製を記憶する領域を有する不揮発性のメモリである。第4記憶部は、書き込み処理または読み出し処理の作業領域を有し、第3記憶部よりも読み出し/書き込み速度が速い不揮発性のメモリである。第4記憶部および第3記憶部のそれぞれはメモリセルを有し、第4記憶部のメモリセルがビットデータを保持可能な時間を示す第1記憶保持時間は、第3記憶部のメモリセルがビットデータを保持可能な時間を示す第2記憶保持時間よりも短い。
実施形態の半導体記憶装置は、制御部と第2記憶部とを備える。制御部は、ホスト装置からの要求に応じて、ホスト装置から供給されるデータが格納される第1記憶部に対するデータの書き込みを行う書き込み処理、または、第1記憶部に格納されたデータの読み出しを行う読み出し処理を制御する。第2記憶部は、書き込み処理または読み出し処理が行われる際に一時的に使用され、第3記憶部と第4記憶部とを含む。第3記憶部は、書き込み処理の対象となるデータの複製を記憶する領域を有する不揮発性のメモリである。第4記憶部は、書き込み処理または読み出し処理の作業領域を有し、第3記憶部よりも読み出し/書き込み速度が速い不揮発性のメモリである。
第1実施形態の半導体記憶装置のハードウェア構成例を示す図。 第1実施形態のメモリ制御部の機能構成例を示す図。 第1実施形態の書き込み処理の一例を示すフローチャート。 第1実施形態の読み出し処理の一例を示すフローチャート。 第2実施形態の半導体記憶装置のハードウェア構成例を示す図。 第2実施形態のメモリ制御部の機能構成例を示す図。 第2実施形態の検索処理の一例を示すフローチャート。
以下、添付図面を参照しながら、本発明に係る半導体記憶装置の実施形態を詳細に説明する。
(第1実施形態)
図1は、第1実施形態にかかる半導体記憶装置であるデバイス100およびホスト装置200のハードウェア構成の一例を示すブロック図である。図1に示すように、ホスト装置200は、CPU201と、メインメモリ202と、CPU201およびメインメモリ202を接続するバス211と、を備えている。
デバイス100は、ホストインタフェース101と、デバイス制御部110と、メモリ制御部120と、第1記憶部130と、を備えている。ホストインタフェース101、デバイス制御部110、およびメモリ制御部120は、バス102を介して接続される。デバイス100内では、高速かつ効率的なバス線配置が取られることが望ましい。一方、例えばインタフェース規格と外部インタフェース規格の相違などで、2種類以上のバス線がデバイス100内で用いられていてもよい。
ホスト装置200は、例えばAMBA(Advanced Microcontroller Bus Architecture)、などのバス211を介してホストインタフェース101に接続される。ホストインタフェース101は、SATA(Serial Advanced Technology Attachment)、PCI Express、eMMC(embedded MMC)、UFS((Universal Flash Storage))および、USB(Universal Serial Bus)などを適宜選択する。
ホストインタフェース101は、デバイス100の上位装置であるホスト装置200からの要求を示す要求情報を受け付けることができる。本実施形態における要求情報の例として、第1記憶部130に対するデータの書き込みを要求する書き込み要求、および、第1記憶部130に格納されたデータの読み出しを要求する読み出し要求などが挙げられる。この例では、書き込み要求は、書き込みの実行を命令する書き込みコマンドと、書き込みコマンドの対象となるデータと、プログラム上の仮想空間アドレスのうち当該データが割り当てられる場所を示す論理アドレスとを含んで構成される。また、読み出し要求は、読み出しの実行を命令する読み出しコマンドと、プログラム上の仮想空間アドレスのうち、読み出しコマンドの対象となるデータが割り当てられる場所を示す論理アドレスとを含んで構成される。上記論理アドレスは、ホスト装置200によって指定される。
デバイス制御部110は、ホストインタフェース101で受け付けた要求情報を解釈して、メモリ制御部120へ伝達すべき情報を、メモリ制御部120へ送信する。本実施形態では、デバイス制御部110は、ホストインタフェース101で受け付けた要求情報を、そのままメモリ制御部120へ送信する。また、デバイス制御部110は、演算中のデータを記憶しておくSRAMなどのワークメモリを有していてもよい。なお、デバイス制御部110のワークメモリは、バス線を介してデバイス制御部110に接続される外部装置に設けられていてもよい。
メモリ制御部120は、デバイス制御部110から受信した要求情報に応じて、第1記憶部130に対するデータの書き込みを行う書き込み処理、または、第1記憶部130に格納されたデータの読み出しを行う読み出し処理を制御する。メモリ制御部120の詳細な機能については後述する。
第1記憶部130は、ホスト装置200から供給されるデータを格納する装置である。また、本実施形態では、第1記憶部130は、ホスト装置200からの要求の対象となるデータに対応付けられる論理アドレスと、第1記憶部130のうち当該データが格納される場所を示す物理アドレスとの対応関係を示す論物変換情報を記憶する。この例では、論物変換情報はテーブル形式のデータ構造である。以下の説明では、本実施形態における論物変換情報を、「論物変換テーブル」と呼ぶ(「L2Pテーブル」と呼ぶ場合もある)。
第1記憶部130は、例えば不揮発性半導体メモリのNANDフラッシュメモリである。第1記憶部130は、記憶容量を増大させるため複数のチップで構成されていてもよい。第1記憶部130は、これに限定されるものではなく、記憶不揮発性を有する半導体メモリであればあらゆる記憶媒体を適用できる。例えば、第1記憶部130として、MRAM(Magnetoresistive Random Access Memory)やReRAM(Resistance Random Access Memory)やFeRAM(Ferroelectric Random Access Memory)やPCRAM(Phase-Change Random Access Memory)などの不揮発性メモリを用いてもよい。ただし、これらのメモリ種を選択する上で重要なのは、後述する第1記憶部130以外の記憶部では、第1記憶部130よりもアクセス速度が高速であるという点である。
次に、メモリ制御部120の詳細な機能について説明する。図2は、メモリ制御部120の機能構成例を示すブロック図である。図2に示すように、メモリ制御部120は、受付部121と、アクセス制御部140と、第2記憶部150と、訂正部122と、更新部123と、管理部124とを備える。受付部121は、デバイス制御部110から送信される要求情報(書き込み要求または読み出し要求)を受け付ける。
アクセス制御部140は、受付部121で受け付けた要求情報(ホスト装置200からの要求)に応じて、書き込み処理または読み出し処理を制御する。図2に示すように、アクセス制御部140は、書き込み制御部141と読み出し制御部143とを含む。書き込み制御部141は、受付部121で書き込み要求を受け付けた場合、受け付けた書き込み要求に応じた書き込み処理を制御する。読み出し制御部143は、受付部121で読み出し要求を受け付けた場合、受け付けた読み出し要求に応じた読み出し処理を制御する。
第2記憶部150は、書き込み処理または読み出し処理が行われる際に一時的に使用されるバッファメモリとして機能する。図2に示すように、第2記憶部150は、第3記憶部151と第4記憶部153とを含む。第3記憶部151は、不揮発性のメモリである。第3記憶部151は、書き込み処理の対象となるデータの複製を記憶する領域を有する。本実施形態では、第3記憶部151は、第1記憶部130よりも、書き換え/読み出し耐性が高いメモリで構成される。例えば第1記憶部130がNANDフラッシュメモリで構成される場合、第3記憶部151は、MRAM、PCRAM、ReRAM、FeRAMなどで構成され得る。
第4記憶部153は、第3記憶部151よりもアクセス速度が速く、書き込み処理または読み出し処理の作業領域を有する不揮発性のメモリである。第4記憶部153は、メモリ制御部120が実行する各処理のワークメモリとなるので、できるだけプロセスコストが低く、かつ、大容量のメモリであることが望ましい。また、書き込み処理や読み出し処理などの処理の実行中に電源が遮断されても、処理中のデータが消失することを防ぐために(信頼性を担保するために)、第4記憶部153は、不揮発性のメモリで構成される。
本実施形態では、第3記憶部151と第4記憶部153は、同じ種類の不揮発性メモリで構成され、同一の基板上に設けられる。つまり、第3記憶部151と第4記憶部153は、1チップ化されるので、構成が簡素化される。一般的には、同じ種類の不揮発性メモリで異なる速度のメモリブロックを混載することはないが、本実施形態では、以下のようにして、同じ種類の不揮発性メモリで異なる速度のメモリブロックの混載を実現している。なお、実装においては、第3記憶部151と比較して、第4記憶部153はアクセス速度を優先するために記憶容量が小さくなる傾向にあるが、そうなった場合でも本実施形態を構成することは可能である。同じ種類の不揮発性メモリで構成された場合、メモリ内部のデータバス線が共有化されるために、内部でのデータ転送が高速に行われる。
不揮発性メモリが抵抗変化型のメモリの場合、読み出しに関しては、抵抗変化率が読み出し速度に対して支配的な影響を与えている。抵抗変化率が大きいほど読み出しセンスアンプでの信号増幅が高速化する。しかし、抵抗変化率が大きいほど、高抵抗状態と低抵抗状態との差が大きいため、書き込みにとっては不利となる。書き込みをどのように設計するかが、セル(メモリセル)と周辺回路設計の要点となる。そこで、抵抗変化型メモリに対するデータの書き込みの原理から、書き込みの高速化を検討する。不揮発性メモリの記憶保持時間(メモリセルがビットデータを保持可能な時間)はメモリセルの熱安定性に依存する。熱安定性はメモリセルへの書き込み速度とトレードオフの関係にある。このため、書き込み速度の遅いメモリセルほど熱安定性に優れ、反対に、書き込み速度の速いメモリセルほど熱安定性に劣ることになる。一般に、不揮発性メモリの開発では、このトレードオフ関係を同時に解決すべく、メモリセルの材料と構造の開発が推進されている。上記トレードオフ関係に従えば、熱安定性、すなわち記憶保持時間を犠牲にすれば、メモリセルへの書き込み速度の向上が期待できる。これによって読み出し設計側も抵抗変化の許容幅が増すことになり、高速動作が可能になる。
すなわち、本実施形態では、第4記憶部153のメモリセルの熱安定性を、第3記憶部151のメモリセルの熱安定性よりも低くすることで、第4記憶部153のメモリセルがビットデータを保持可能な時間を示す第1記憶保持時間を、第3記憶部151のメモリセルがビットデータを保持可能な時間を示す第2記憶保持時間よりも短くしている。以上のように、第4記憶部153と第3記憶部151は、同種のメモリセルを有し、第1記憶保持時間は、第2記憶保持時間よりも短い。これにより、同じ種類の不揮発性メモリで異なる速度のメモリブロックの混載を実現することができ、第4記憶部153は第3記憶部151よりもアクセス速度が速くなる。熱安定性の制御は、例えばMRAMであれば、磁性体の磁気異方性エネルギーを下げる方法がある。なぜなら、熱安定性係数は、体積と磁気異方性エネルギーと飽和磁化に依存するからである。熱安定性係数を40から30程度に低下させると、記憶保持時間は10年から1時間以下に低下する。そのトレードオフとして、書き込み速度は10ns以下に下げられる。例えば、ReRAMであれば、絶縁膜中に導電パスができやすい酸化物を用いるといった方法が考えられる。
なお、例えば第4記憶部153と第3記憶部151が、互いに異なる種類の不揮発性メモリで構成される形態であってもよい。要するに、第3記憶部151および第4記憶部153のそれぞれはメモリセル(同種のメモリセルでもよいし、異なる種類のメモリセルであってもよい)を有し、上述の第1記憶保持時間が、上述の第2記憶保持時間よりも短く、第4記憶部153は第3記憶部151よりもアクセス速度が速い形態であればよい。なお、本実施形態の「アクセス速度」とは、読み出し/書き込み速度を指す。読み出し/書き込み速度とは、例えば、記憶部が、制御部からの読み出し/書き込み要求を受け付けて、制御部に対して要求完了を示す信号あるいは要求されたデータを返すまでの時間であると捉えることもできる。例えば第3記憶部151の読み出し/書き込み速度とは、第3記憶部151が、書き込み制御部141/読み出し制御部143から読み出し/書き込み要求を受け付けて、書き込み制御部141/読み出し制御部143に対して要求完了を示す信号あるいは要求されたデータを返すまでの時間であると捉えることもできる。第4記憶部153の読み出し/書き込み速度についても同様である。
次に、訂正部122について説明する。訂正部122は、書き込み処理の対象となるデータの符号化処理を行う。また、訂正部122は、読み出し処理により第1記憶部130から読み出されたデータの誤り訂正処理を行う。本実施形態では、第4記憶部153は、訂正部122による符号化処理の作業領域を更に有する。また、第4記憶部153は、訂正部122による誤り訂正処理の作業領域を更に有する。つまり、第4記憶部153は、訂正部122による符号化処理および誤り訂正処理のワークメモリとして機能する。
更新部123は、上述の論物変換情報を更新する。本実施形態では、更新部123は、第1記憶部130に格納される論物変換テーブルを更新する。より具体的には、更新部123は、書き込み処理が完了するたびに、当該書き込み処理により第1記憶部130に書き込まれたデータの物理アドレスと、ホスト装置200により指定された論理アドレス(当該データに対応する論理アドレス)とを対応付けて論物変換テーブルに追加する。
本実施形態では、書き込み処理または読み出し処理が行われるたびに、処理が行われたデータと論理アドレスとが対応付けられた保存データが、第4記憶部153に記憶されていく。つまり、第4記憶部153は、保存データを記憶する領域を更に有する。管理部124は、第4記憶部153の容量に従って、第4記憶部153に記憶された保存データを管理する。例えば保存データの累積容量が第4記憶部153の容量を超える場合、管理部124は、古い保存データから順番に第4記憶部153から削除していく。これを、FIFO(First−In−First−Out)とも呼ぶ。また、例えば管理部124は、保存データのうち、利用頻度が高い保存データについては、削除せずに第4記憶部153に残すとともに、その複製(コピー)を第3記憶部151に記憶させることもできる。さらに、例えば管理部124は、保存データの累積容量が第4記憶部153の容量を超える場合、第4記憶部153に記憶された保存データのうち、未使用の時間が最も長い保存データを第3記憶部151に記憶させるという、いわゆるLRU(Least Recently Used)アルゴリズムを用いることもできる。また、例えば第3記憶部151が十分な容量を有する場合、管理部124は、第4記憶部153に記憶された全ての保存データを、第3記憶部151に記憶させることもできる。つまり、第3記憶部151は、第4記憶部153に記憶された保存データのうちの少なくとも1つの保存データの複製を記憶する領域を更に有する。
本実施形態では、上述の受付部121、アクセス制御部140(書き込み制御部141および読み出し制御部143)、訂正部122、更新部123、および、管理部124の各々の機能は、専用のハードウェア回路で実現されるが、これに限らず、例えばCPU、ROM、RAM等を備えたコンピュータがメモリ制御部120に搭載され、上述の受付部121、アクセス制御部140(書き込み制御部141および読み出し制御部143)、訂正部122、更新部123、および、管理部124の各々の機能の少なくとも一部が、CPUがROM等に格納されたプログラムをRAM上に展開して実行することにより実現される形態であってもよい。なお、ここでは、デバイス100を、請求項の「半導体記憶装置」であると捉えているが、例えばメモリ制御部120を、請求項の「半導体記憶装置」であると捉えることもできる。
次に、デバイス制御部110から書き込み要求を受け付けた場合に、メモリ制御部120が実行する書き込み処理の具体的な内容を説明する。図3は、書き込み処理の一例を示すフローチャートである。図3に示すように、まず、受付部121は、デバイス制御部110からの書き込み要求を受け付ける(ステップS1)。次に、書き込み制御部141は、ステップS1で受け付けた書き込み要求に含まれるデータを第3記憶部151および第4記憶部153の各々へ転送する(ステップS2)。より具体的には、書き込み制御部141は、ステップS1で受け付けた書き込み要求に含まれるデータおよび論理アドレスを第4記憶部153へ転送する一方、当該書き込み要求に含まれるデータおよび論理アドレスを複製したデータ(「バックアップデータ」と呼ぶ)を、第3記憶部151へ転送する。次に、書き込み制御部141は、書き込み条件を充足したか否かを判断する(ステップS3)。例えば書き込み制御部141は、書き込み処理の対象となるデータのサイズが、書き込み単位のサイズ(例えばページサイズ)よりも小さい場合は、書き込み条件を充足していないと判断することもできる。なお、これに限らず、書き込み条件は任意に変更可能である。
上述のステップS3において、書き込み条件を充足していないと判断した場合(ステップS3の結果:NOの場合)、書き込み制御部141は、受け付けた書き込み要求に含まれるデータを第3記憶部151に保持しているが、未だ第1記憶部130への書き込みは実行していないことを示す情報をデバイス制御部110へ返信し、次の書き込み要求を待つ。
一方、上述のステップS3において、書き込み条件を充足したと判断した場合(ステップS3の結果:YESの場合)、処理は、ステップS4に移行する。ステップS4において、訂正部122は、第4記憶部153に保持された、書き込み処理の対象となるデータの符号化処理を行う。より具体的には、訂正部122は、書き込み処理の対象となるデータに対して、ビットの誤り訂正処理(ECC処理)を行うための冗長データ(データビットの偶奇性を利用する場合、パリティーと呼ぶ)を付加する処理を行う。
上述のステップS4の後、書き込み制御部141は、訂正部122により符号化されたデータを、第1記憶部130の空き領域に書き込む制御を行う(ステップS5)。データの書き込み(符号化されたデータの書き込み)が完了すると、第1記憶部130は、データの書込みが終了したことを示す書き込み終了通知をメモリ制御部120へ送信する。書き込み終了通知を受信した場合、更新部123は、論物変換テーブルの更新を行う(ステップS6)。より具体的には、更新部123は、書き込み処理により第1記憶部130に書き込まれたデータの論理アドレスと、第1記憶部130のうち当該データが書き込まれた場所を示す物理アドレスとを対応付けて論物変換テーブルに追加する。
上述のステップS6の後、書き込み制御部141は、第3記憶部151に記憶されたバックアップデータを消去する(ステップS7)。なお、管理部124は、上述のステップS1で受け付けた書き込み要求に含まれるデータと論理アドレスとを対応付けた保存データを、第4記憶部153に記憶させる。管理部124は、第4記憶部153の容量に従って、第4記憶部153に記憶される保存データを管理する。
以上に説明したように、本実施形態では、不揮発性を犠牲にしてアクセス速度を高めた第4記憶部153を、書き込み処理の作業領域(ワークメモリ)として使用するとともに、アクセス速度を犠牲にして不揮発性を高めた第3記憶部151を、書き込み処理の対象となるデータの複製を保持するバックアップ用メモリとして使用する。これにより、書き込み処理の途中で電源が遮断されても、書き込み処理の対象となるデータが消失してしまうことを確実に防止しつつ、書き込み性能の低下を抑制できる。
いま、対比例として、アクセス速度を犠牲にして不揮発性を高めたメモリを、書き込み処理の作業領域として使用する形態を想定する。この対比例では、書き込み処理の途中で電源が遮断されても、書き込み処理の対象となるデータが消失してしまうことは確実に防止できるものの、アクセス速度を犠牲にして不揮発性を高めたメモリをワークメモリとして使用するために、十分な処理速度を実現することができず、書き込み性能が低下してしまうという問題がある。
これに対して、本実施形態では、不揮発性を犠牲にしてアクセス速度を高めた第4記憶部153を、書き込み処理のワークメモリとして使用しているので、対比例に比べて十分に高い処理速度を実現することができ、書き込み性能の低下を抑制することができる。ただし、第4記憶部153は不揮発性が十分ではないので、本実施形態では、第4記憶部153とは別に、アクセス速度を犠牲にして不揮発性を高めた第3記憶部151を設け、当該第3記憶部151を、書き込み処理の対象となるデータの複製を保持するバックアップ用メモリとして使用することにより、電源遮断時にデータが消失してしまうことを確実に防止できる。つまり、本実施形態によれば、書き込み処理の途中で電源が遮断されても、書き込み処理の対象となるデータが消失してしまうことを確実に防止しつつ、書き込み性能の低下を抑制できるという対比例では得ることができない有利な効果を奏する。
次に、デバイス制御部110から読み出し要求を受け付けた場合に、メモリ制御部120が実行する読み出し処理の具体的な内容を説明する。図4は、読み出し処理の一例を示すフローチャートである。まず、受付部121は、デバイス制御部110からの読み出し要求を受け付ける(ステップS11)。次に、読み出し制御部143は、ステップS11で受け付けた読み出し要求に含まれる論理アドレスと一致する保存データが、第4記憶部153に存在するか否かを検索する(ステップS12)。読み出し要求に含まれる論理アドレスと一致する保存データが第4記憶部153に存在する場合(ステップS13の結果:YESの場合)、読み出し制御部143は、読み出し要求に含まれる論理アドレスと一致する保存データに含まれるデータを取り出して、デバイス制御部110へ転送する(ステップS14)。
一方、読み出し要求に含まれる論理アドレスと一致する保存データが第4記憶部153に存在しない場合(ステップS13の結果:NOの場合)、読み出し制御部143は、その論理アドレスに対応するデータ(論理アドレスで指定されるデータ)を、第1記憶部130から読み出す制御を行う(ステップS15)。読み出し自体は、一般的な手順に従うものである。本実施形態では、読み出し制御部143は、第1記憶部130に記憶された論物変換テーブルを参照して、論理アドレスに対応する物理アドレスを特定し(論物変換処理を行い)、特定した物理アドレスに格納されたデータの読み出しを命令するコマンドを第1記憶部130へ送信する。そして、読み出し制御部143は、当該コマンドに従って読み出されたデータを第1記憶部130から受け取る。第1記憶部130から受け取ったデータは、第4記憶部153に転送されて格納される。
第1記憶部130から読み出されたデータが第4記憶部153に格納されると同時に、訂正部122は、当該第1記憶部130から読み出されたデータに対する誤り訂正処理(ECC処理)を行う(ステップS16)。本実施形態では、第4記憶部153は、訂正部122によるECC処理の作業領域(ワークメモリ)として機能する。より具体的には、ECC処理の中間データが第4記憶部153に格納され、訂正部122は、エラー訂正計算を行うたびに、第4記憶部153内の中間データを更新することで、読み出されたデータのエラー訂正処理を進めていく。また、本実施形態では、訂正部122によるECC処理には、データの復号処理も含まれ、エラー訂正後のデータは、復号処理により復号される。訂正部122が扱うECC方式としては、例えばBCH、リードソロモン、LDPC、ターボ符号などが挙げられるが、これらに限定されるものではない。要するに、元のデータに、誤り訂正処理のための冗長データが組織符号または非組織符号として組み込まれたデータに対して、誤り訂正処理を行うものであればよい。組織符号は、元のデータにパリティーが付加された単純な構造であるのに対し、非組織符号は、元のデータ全体の中にパリティーが埋め込まれたような複雑な構造である。ECCは訂正能力と符号語の複雑さが相関しており、高い訂正能力を得るためには訂正処理の際に演算量が多くなっていく。このため訂正処理中の演算結果を示す演算情報が多くなるが、第4記憶部153を、訂正処理のワークメモリとすることで、訂正処理中に演算情報が失われることを防止しつつ、処理速度の遅延を低減できる。
上述のECC処理が完了すると、訂正部122は、ECC処理が完了したことを読み出し制御部143へ通知する。読み出し制御部143は、ECC処理が行われた後のデータ(誤り訂正が行われて復号されたデータ)を、読み出し完了の通知とともにデバイス制御部110へ転送する(ステップS17)。本実施形態では、読み出し制御部143は、読み出し完了の通知をデバイス制御部110へ送信するとともに、ECC処理が行われた後のデータを、デバイス制御部110が管理するバッファへ送信する。なお、管理部124は、上述のステップ11で受け付けた読み出し要求に含まれる論理アドレスと、ステップS16でのECC処理後のデータとを対応付けた保存データを、第4記憶部153に記憶させる。管理部124は、第4記憶部153の容量に従って、第4記憶部153に記憶される保存データを管理する。
以上のように、本実施形態では、読み出し処理の作業領域となる第4記憶部153は、アクセス速度を高めた不揮発性メモリで構成されるので、電源が遮断されても読み出し中のデータが消失することを防止しつつ、処理速度の遅延を抑制できる。また、本実施形態では、保存データの履歴が第4記憶部153に保持されるので、ホスト装置200からの読み出し要求に含まれる論理アドレスと一致する保存データが第4記憶部153に存在する場合は、第1記憶部130にアクセスすることなく、データを読み出すことができる。また、第4記憶部153に記憶された保存データの複製(コピー)を、第4記憶部153よりも不揮発性の高い第3記憶部151に記憶させることもできる。これにより、電源が遮断されても、保存データが消失してしまうことを確実に防止できる。また、例えば第3記憶部151の容量に制限がある場合は、第4記憶部153に記憶された保存データのうち、利用頻度が高い保存データを第3記憶部151に記憶させる形態とすることもできる。要するに、不揮発性のキャッシュとして機能する第4記憶部153は、書き込み処理または読み出し処理が行われたデータを示す保存データを記憶し、キャッシュデータ(保存データ)のバックアップ用メモリとして機能する第3記憶部151は、第4記憶部153に記憶された保存データのうちの少なくとも1つの保存データを記憶する形態であればよい。
(第1実施形態の変形例1)
上述の第1実施形態では、論物変換テーブルは、第1記憶部130に格納されているが、これに限らず、論物変換テーブルの格納先は任意である。例えば論物変換テーブルが、第2記憶部150に格納されてもよい。この場合、例えば論物変換テーブルが全て第3記憶部151に記憶される形態であってもよい。この形態では、例えば読み出し要求に含まれる論理アドレスに対応する物理アドレスを特定する場合(論物変換を行う場合)、第4記憶部153にアクセスする必要はない。
また、例えば論物変換テーブルの大部分が第4記憶部153に格納される一方、第3記憶部151には、論物変換テーブルの更新履歴として、前回の更新時における論物変換テーブルとの差分を示す差分テーブルが格納される形態であってもよい。この形態では、例えばホスト装置200からの読み出し要求に含まれる論理アドレスに対応する物理アドレスを特定するために論物変換テーブルを読み出す場合、読み出し制御部143は、最初に第3記憶部151にアクセスして差分テーブルの情報(更新情報)を読み出す。次に、読み出し制御部143は、第4記憶部153にアクセスして論物変換テーブルの本体の情報(本体情報)を読み出し、更新情報と本体情報とから、論物変換テーブル全体の情報を取得することもできる。
論物変換テーブルが第2記憶部150に格納され、メモリ制御部120が論物変換を行う形態では、以上のようにして、読み出し制御部143が論物変換テーブルを取得し、読み出し要求に含まれる論理アドレスに対応する物理アドレスを特定することができる(論物変換を行うことができる)。
(第1実施形態の変形例2)
以上の形態では、メモリ制御部120が論物変換を行い、論物変換テーブルの更新を行っているが、これに限らず、例えばデバイス制御部110が論物変換を行い、論物変換テーブルの更新を行う形態であってもよい。以下、この形態において、デバイス制御部110が、ホスト装置200からの読み出し要求を受け付けた場合を想定して説明する。この場合、デバイス制御部110は、論物変換テーブルを参照して、読み出し要求に含まれる論理アドレスに対応する物理アドレスを特定する。そして、デバイス制御部110は、メモリ制御部120へ伝達すべき伝達情報として、特定した物理アドレスと、その物理アドレスが示す場所に格納されたデータの読み出しを命令するコマンドとを、メモリ制御部120へ送信する。なお、論物変換テーブルの格納先は任意であり、例えばデバイス制御部110が論物変換テーブルを保持する形態であってもよい。
この形態においても、第4記憶部153は、書き込み処理または読み出し処理が行われたデータと論理アドレスとが対応付けられた保存データを記憶する領域を更に有することができる。デバイス制御部110からの伝達情報を受付部121で受け付けた場合、読み出し制御部143は、論物変換テーブルの逆引きテーブル(物理アドレスから、当該物理アドレスに対応する論理アドレスを特定可能なテーブル)であるP2Lテーブルを参照して、デバイス制御部110からの伝達情報に含まれる物理アドレスに対応する論理アドレスを特定し、特定した論理アドレスに一致する保存データが第4記憶部153に存在するか否かを検索する。P2Lテーブルの格納先は任意であり、例えば第2記憶部150に格納されてもよいし、第1記憶部130に記憶されてもよいし、デバイス制御部110が有するバッファに格納されてもよい。処理の高速化を図るという観点からすれば、P2Lテーブルはメモリ制御部120(例えば第2記憶部150)に保持されることが好ましい。特定した論理アドレスに一致する保存データが第4記憶部153に存在する場合、読み出し制御部143は、その保存データに含まれるデータを取り出して、デバイス制御部110へ転送する。一方、特定した論理アドレスと一致する保存データが第4記憶部153に存在しない場合、読み出し制御部143は、デバイス制御部110からの伝達情報に含まれる物理アドレスを用いて第1記憶部130にアクセスし、当該物理アドレスが示す場所に格納されたデータを読み出す制御を行う。また、読み出し制御部143は、P2Lテーブルを参照して、デバイス制御部110からの伝達情報に含まれる物理アドレスに対応する論理アドレスを特定する。第1記憶部130から読み出されたデータは、訂正部122によるECC処理が行われた後、P2Lテーブルを参照して特定された論理アドレスと対応付けられ、保存データとして第4記憶部153に記憶される。
また、例えば第4記憶部153は、書き込み処理または読み出し処理が行われたデータと物理アドレスとが対応付けられた情報を、保存データとして記憶する領域を更に有することもできる。この場合、読み出し制御部143は、デバイス制御部110からの伝達情報に含まれる物理アドレスに一致する保存データが第4記憶部153に存在するか否かを検索する。伝達情報に含まれる物理アドレスに一致する保存データが第4記憶部153に存在する場合、読み出し制御部143は、その保存データに含まれるデータを取り出して、デバイス制御部110へ転送する。一方、伝達情報に含まれる物理アドレスと一致する保存データが第4記憶部153に存在しない場合、読み出し制御部143は、その物理アドレスを用いて第1記憶部130にアクセスし、当該物理アドレスが示す場所に格納されたデータを読み出す制御を行う。読み出されたデータは、訂正部122によるECC処理が行われた後、伝達情報に含まれる物理アドレスと対応付けられ、保存データとして第4記憶部153に記憶される。
(第2実施形態)
次に、第2実施形態について説明する。上述の第1実施形態と共通する部分については、同一の符号を付して適宜に説明を省略する。第2実施形態の半導体記憶装置は、第1実施形態で説明した書き込み/読み出しの機能に加えて、検索機能を有する。検索機能強化のために、デバイス制御部は、ホスト装置から供給されるデータに対して、付加的な情報、例えばメタデータであるタグ(「キー」の一例)を付け加えて書き込みを行うことを前提とする。以下、第2実施形態の半導体記憶装置の説明の前に、検索方式と方法を説明する。
半導体記憶装置に保存されている、あるテキストに関連付けられた別のテキスト、バイナリファイルにおける特定のビットパターン、動画ファイルにおける特定パターン、および、音声ファイルにおける特徴的な音声パターンなどのデータを効率的に取り出すためには、データを指定したデータ読出し機能を持たせることが望ましい。このため、データに関連付けられたメタデータを付属させて保存しておき、所望のデータを得るためにメタデータを参照する方法が用いられる。メタデータの管理方法の1つとして、1対1または1対多にデータが対応するKVS(key−value store(キーバリューストア))が存在する。KVSでは、検索要求としてキー(key)が与えられると、それに対応付けられるバリュー(value)が出力される。
第2実施形態の半導体記憶装置は、KVSデータ(キーバリュー情報)を、アドレス変換テーブルによって効率的かつ高速に処理する。このアドレス変換テーブルを、K2Pテーブルと呼び、キーから得た固定長アドレス(キーアドレス)と物理アドレスの変換テーブルである。以下、KVSデータを取り出す処理の具体例を説明する。一般的にKVSとは、キー(key)と値(value)の組を書き込み、キーを指定することで値を読み出せるデータベース管理方式を意味する。一般的にはネットワーク越しに使われる例が多い。データの格納先は、いずれかのローカルのメモリまたはストレージシステムであることは間違いない。
通常、データは、保存されているメモリの先頭アドレスとデータ長を指定することで読み出される。データアドレスは、ホストシステムのOSやファイルシステムによって、例えば512バイトのセクタ単位で管理される。または、ファイルシステムを限定する必要がなければ、例えばNANDフラッシュメモリの読み出し/書き込みページサイズに合わせて、4KBや8KB単位で管理されてもよい。
最も単純な検索手順は、以下の(1)〜(3)のようになる。
(1)キーをHash関数などにより固定長データへ変換し、その固定長データを使用可能なメモリのアドレスに変換して固定長アドレスを得る。変換した固定長アドレスをキーアドレスとする。
(2)NANDフラッシュメモリ内に保存されているK2Pテーブルを参照し、物理アドレスを得る。
(3)物理アドレスのデータを読み、メモリシステム外へ出力する。
このような実データアドレスとKVSデータの関係、および、キーとバリューの関係は、要素と集合の関係となっている。すなわち、通常のファイルでは、例えば「a−file.txt」というファイル名のファイルが集合であり、そのファイルの中身に「This is a book」というテキストデータがあれば、そのそれぞれの単語が要素である。
一方、キーバリューではメタデータアドレス空間に置かれた場合、集合と要素の関係が逆転して整理し直されている。すなわち、「転置」の関係に変換して保存することができる。例えば「book」という集合の中には、「a−file.txt」、「b−file.txt」というファイル名が要素として保存されることになる。キーバリューでは、この整理しなおされた集合名(「book」)を検索し、その要素(「a−file.txt」、「b−file.txt」)を求めていることになる。これは一般に全文検索で実行されている転置ファイル作成、および、検索手順そのものであって、キーバリューの実用上の一例といえる。
以上のようなK2PによるKVS方式の検索ストレージを製造するには、検索要求を受けて蓄えるための不揮発バッファメモリを備えることが望ましい。また、上記のようにK2PテーブルはNANDフラッシュメモリから読み出され、バッファメモリに展開されるので、そのバッファメモリは不揮発である方が急な電源遮断に備えるためには望ましい。実用上の検索要求は単一であることは稀であり、複数の検索結果がデバイス内で処理される。このため検索演算、すなわちAND、OR、NOT等の集合演算を効率的に行うための高速な不揮発バッファメモリを備えることが望ましい。検索要求は、不揮発バッファ内でデータ処理が終わるまで確実に保存されていなければならないので、長期信頼性を有する不揮発メモリが望ましいが、一方で、データ処理中のデータは、バッファメモリは処理中に急な電源遮断で失われなければ良いため、データ保持時間が通常よりも短くても実用には問題ない。例えば、長期信頼性とは10年保証のことであり、データ保持時間が短い場合というのは、数日から数週間の間のデータ保持のことを指す。極端に言えば、ユースケースによっては、すぐに電源が再起動するのであれば、数時間の不揮発性だけ備えれば良い場合がある。
以下、第2実施形態の半導体記憶装置の具体的な内容を説明する。図5は、第2実施形態にかかる半導体記憶装置であるデバイス1000およびホスト装置2000のハードウェア構成の一例を示すブロック図である。ホストインタフェース101は、指定されたキーが対応付けられたデータの検索を要求する検索要求をホスト装置2000から受け付ける。この例では、検索要求は、検索の実行を命令する検索コマンドと、キーとを含んで構成される。
デバイス制御部110は、ホストインタフェース101で受け付けた検索要求を解釈して、メモリ制御部120へ伝達すべき情報を決定し、メモリ制御部120へ送信する。本実施形態では、デバイス制御部110は、ホストインタフェース101で受け付けた検索要求に含まれるキーを、Hash関数などにより固定長データへ変換し、その固定長データを使用可能なメモリのアドレスに変換してキーアドレスを得る。そして、メモリ制御部120へ伝達すべき情報(この例では「検索情報」と呼ぶ)として、キーアドレスと検索コマンドとをメモリ制御部120へ送信する。また、デバイス制御部110は、ホスト装置2000から、複数の検索要求とともに、検索結果を絞り込むための集合演算条件(AND,OR等の演算条件)を受け付けた場合は、その受け付けた集合演算条件を、メモリ制御部120へ送信する。なお、本実施形態では、デバイス制御部110が、検索要求に含まれるキーを、キーアドレスへ変換しているが、これに限らず、例えばメモリ制御部120が、キーアドレスへの変換を行う形態であってもよい。
メモリ制御部120は、デバイス制御部110から受信した検索情報および集合演算条件に応じて、ホスト装置2000からの検索要求に含まれるキーに対応するデータを検索する検索処理を制御する。図6は、第2実施形態のメモリ制御部120の機能構成例を示すブロック図である。受付部121は、デバイス制御部110から送信される検索情報を受け付ける。前述したように、検索情報は、検索コマンドと、キーアドレスとを含む情報である。また、受付部121は、デバイス制御部110から送信される集合演算条件(AND,OR等)を受け付けることもできる。
アクセス制御部140は、書き込み制御部141と読み出し制御部143に加えて、検索制御部145をさらに備える。検索制御部145は、受付部121で受け付けた検索情報および集合演算条件に応じた検索処理を制御する。
第4記憶部153は、検索処理の作業領域(ワークメモリ)を更に有する。また、第4記憶部153は、検索処理により検索されたデータを示す第2保存データを記憶する領域を更に有する。より具体的には、第2保存データは、検索処理により検索されたデータと、キーアドレスとが対応付けられたものであり、第4記憶部153は、1以上の第2保存データを記憶する領域を更に有する。管理部124は、第4記憶部153内の第2保存データを、第4記憶部153の容量に従って管理する。例えば第2保存データの累積容量が第4記憶部153の容量を超える場合、管理部124は、古い第2保存データから順番に第4記憶部153から削除していくこともできる。また、例えば管理部124は、第2保存データのうち、利用頻度が高い第2保存データについては、削除せずに第4記憶部153に残すとともに、その複製(コピー)を第3記憶部151に記憶させることもできる。さらに、例えば管理部124は、第2保存データの累積容量が第4記憶部153の容量を超える場合、第4記憶部153に記憶された第2保存データのうち、未使用の時間が最も長い第2保存データを第3記憶部151に記憶させるという、いわゆるLRU(Least Recently Used)アルゴリズムを用いることもできる。また、例えば第3記憶部151が十分な容量を有する場合、管理部124は、第4記憶部153に記憶された全ての第2保存データを、第3記憶部151に記憶させることもできる。
第3記憶部151は、第4記憶部153に記憶された第2保存データのうちの少なくとも1つの第2保存データを記憶する領域を更に有する。また、実運用では、第3記憶部151は、検索制御部145のプログラムコードや、ブート情報、システムパラメータなどの情報を格納する。
一致判定部125は、受付部121で受け付けた検索情報に含まれるキーアドレスと一致する第2保存データが、第4記憶部153に存在するか否かを判定する。集合演算部126は、受付部121で受け付けた集合演算条件に従った集合演算を行う。
なお、本実施形態では、上述のK2Pテーブルは、第1記憶部130に格納されるが、これに限らず、K2Pテーブルの格納先は任意である。例えばK2Pテーブルは、第3記憶部151および第4記憶部153に格納されてもよいし、デバイス制御部110が有するバッファに格納されてもよい。
次に、メモリ制御部120が実行する検索処理の具体的な内容を説明する。図7は、検索処理の一例を示すフローチャートである。まず、受付部121は、デバイス制御部110からの検索情報を受け付ける(ステップS21)。次に、検索制御部145は、ステップS21で受け付けた検索情報に含まれるキーアドレスと一致する第2保存データが、第4記憶部153に存在するか否かを検索する(ステップS22)。検索情報に含まれるキーアドレスと一致する第2保存データが第4記憶部153に存在する場合(ステップS23の結果:YESの場合)、検索制御部145は、検索情報に含まれるキーアドレスと一致する第2保存データに含まれるデータを取り出す(ステップS24)。仮に、受付部121で集合演算条件を受け付けていない場合(つまり、単発の検索要求の場合)、検索制御部145は、ステップS24で取り出したデータをデバイス制御部110へ転送して処理を終了する。ただし、この例では、ステップS21で、複数の検索要求とともに、検索結果を絞り込むための集合演算条件を受け付けていることを前提とするので、処理は、後述のステップS27へ移行する。
一方、検索情報に含まれるキーアドレスと一致する第2保存データが第4記憶部153に存在しない場合(ステップS23の結果:NOの場合)、検索制御部145は、そのキーアドレスに対応するデータを、第1記憶部130から読み出す制御を行う(ステップS25)。検索は、一般的な手順に従うものである。本実施形態では、検索制御部145は、第1記憶部130に記憶されたK2Pテーブルを参照して、検索情報に含まれるキーアドレスに対応する物理アドレスを特定し、特定した物理アドレスに格納されたデータの読み出しを命令するコマンドを第1記憶部130へ送信する。そして、検索制御部145は、当該コマンドに従って読み出されたデータを第1記憶部130から受け取る。第1記憶部130から受け取ったデータは、第4記憶部153に転送されて格納される。
第1記憶部130から読み出されたデータが第4記憶部153に格納されると同時に、訂正部122は、当該第1記憶部130から読み出されたデータに対する誤り訂正処理(ECC処理)を行う(ステップS26)。訂正部122によるECC処理が行われたデータは第4記憶部153に保持される。以上のようにして、受付部121で検索情報を受け付けるたびに、その受け付けた検索情報に含まれるキーアドレスに対応するデータが検索されて第4記憶部153に保持される。本実施形態では、受付部121で受け付けた検索情報に含まれるキーアドレスと、データ(検索されたデータ)とが対応付けられ、第2保存データとして第4記憶部153に保持される。そして、集合演算部126は、複数の検索条件の各々に含まれるキーアドレスに対応するデータの集合に対して、受付部121で受け付けた集合演算条件に従った集合演算を行う(ステップS27)。
例えば、指定されたキーが「book」であり、当該「book」に対応するデータとして、「book」という集合の中の要素(「a−file.txt」、「b−file.txt」)が見つかった場合、これだけを検索結果として、デバイス制御部110へ伝えても良いが、実用的には、「book」以外の検索もしておき、複数の検索結果に対して、AND、OR、NOTなどの集合演算を行うのが一般的である。例えば、「This」というキーに対応するデータを検索し、「This」という集合の中の要素(「a−file.txt」、「c−file.txt」、「d−file.txt」)が見つかったとする。ここで、集合「book」と集合「This」とのANDを取ると、検索結果として「a−file.txt」が得られる。実際、「a−file.txt」を読み出すと、その中身は「This is a book」であるので、目的の検索が達成されていることが確認できる。OR、NOTも同様に、一般的な集合演算のことを指す。
このような集合演算を、デバイス1000の外部(例えばホスト装置2000)で行う場合、大量の検索結果をすべてホスト装置2000へ送る可能性もあり、ホスト装置2000とデバイス1000との間の通信のトラフィックを混雑させるとともに、ホスト装置2000内の主記憶メモリ(DRAM等)の容量を消費することになる。したがって、以上のような集合演算は、極力デバイス1000内で行うことが望ましい。さらに言えば、以上のような集合演算は、メモリ制御部120内の第4記憶部153を作業領域として行われることが望ましい。以上のような集合演算は、第1記憶部130に格納されているデータ総量が増えるにつれて、その演算時間が単純に増えていくことが知られており、集合演算のための中間処理データを記憶するバッファとしては、次々に大量のデータをさばくための高速性が求められるからである。さらに、集合演算時間は、通常の読み出し時間とは異なり、データ量をnとすると、計算時間O=nの関係となる。つまり読み出し時間に比べて、桁違いに大きな処理時間を要するため、この間、記憶されるデータの不揮発性が保証されることがシステム可用性の観点から求められるのである。
本実施形態では、上述の検索処理の作業領域となる第4記憶部153は、アクセス速度を高めた不揮発性メモリで構成されるので、電源が遮断されても検索処理の途中のデータが消失することを防止しつつ、処理速度の遅延を抑制できる。また、本実施形態では、第2保存データの履歴が第4記憶部153に保持されるので、ホスト装置2000からの検索要求に含まれるキーに対応するキーアドレスと一致する第2保存データが第4記憶部153に存在する場合は、第1記憶部130にアクセスすることなく、データを読み出すことができる。また、第4記憶部153に記憶された第2保存データの複製(コピー)を、第4記憶部153よりも不揮発性の高い第3記憶部151に記憶させることもできる。これにより、電源が遮断されても、第2保存データが消失してしまうことを確実に防止できる。また、例えば第3記憶部151の容量に制限がある場合は、第4記憶部153に記憶された第2保存データのうち、利用頻度が高い第2保存データを第3記憶部151に記憶させる形態とすることもできる。要するに、不揮発性のキャッシュとして機能する第4記憶部153は、検索処理により検索されたデータを示す第2保存データを記憶し、キャッシュデータ(第2保存データ)のバックアップ用メモリとして機能する第3記憶部151は、第4記憶部153に記憶された第2保存データのうちの少なくとも1つの第2保存データを記憶する形態であればよい。
上述のステップS27の後、検索制御部145は、集合演算により得られた検索結果をデバイス制御部110へ転送する(ステップS28)。
以上、本発明の実施形態を説明したが、上述の各実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。なお、上述の各実施形態および変形例は任意に組み合わせることもできる。
100 デバイス
101 ホストインタフェース
102 バス
110 デバイス制御部
120 メモリ制御部
121 受付部
122 訂正部
123 更新部
124 管理部
125 一致判定部
126 集合演算部
130 第1記憶部
140 アクセス制御部
141 書き込み制御部
143 読み出し制御部
145 検索制御部
150 第2記憶部
151 第3記憶部
153 第4記憶部
200 ホスト装置
202 メインメモリ
211 バス
1000 デバイス
2000 ホスト装置

Claims (9)

  1. ホスト装置からの要求に応じて、前記ホスト装置から供給されるデータが格納される第1記憶部に対する前記データの書き込みを行う書き込み処理、または、前記第1記憶部に格納された前記データの読み出しを行う読み出し処理を制御する制御部と、
    前記書き込み処理または前記読み出し処理が行われる際に一時的に使用される第2記憶部と、を備え、
    前記第2記憶部は、
    前記書き込み処理の対象となる前記データの複製を記憶する領域を有する不揮発性の第3記憶部と、
    前記書き込み処理または前記読み出し処理の作業領域を有し、前記第3記憶部よりも読み出し/書き込み速度が速い不揮発性の第4記憶部と、を含み、
    前記第4記憶部および前記第3記憶部のそれぞれはメモリセルを有し、
    前記第4記憶部の前記メモリセルがビットデータを保持可能な時間を示す第1記憶保持時間は、前記第3記憶部の前記メモリセルがビットデータを保持可能な時間を示す第2記憶保持時間よりも短い、
    半導体記憶装置。
  2. 前記第4記憶部は、前記書き込み処理または前記読み出し処理が行われた前記データを示す保存データを記憶する領域を更に有し、
    前記第3記憶部は、前記第4記憶部に記憶された前記保存データのうちの少なくとも1つの前記保存データの複製を記憶する領域を更に有する、
    請求項1の半導体記憶装置。
  3. 前記読み出し処理により前記第1記憶部から読み出された前記データの誤り訂正処理を行う訂正部をさらに備え、
    前記第4記憶部は、前記誤り訂正処理の作業領域を更に有する、
    請求項1の半導体記憶装置。
  4. 前記訂正部は、前記書き込み処理の対象となる前記データの符号化処理を行い、
    前記制御部は、前記符号化処理により符号化された前記データを、前記第1記憶部に書き込む制御を行い、
    前記第4記憶部は、前記符号化処理の作業領域を更に有する、
    請求項3の半導体記憶装置。
  5. 前記第4記憶部の前記メモリセルと前記第3記憶部の前記メモリセルは同種である、
    請求項の半導体記憶装置。
  6. 前記第3記憶部と前記第4記憶部は、同一の基板上に設けられる、
    請求項の半導体記憶装置。
  7. 前記ホスト装置からの要求の対象となる前記データに対応付けられ、前記ホスト装置により指定される論理アドレスと、前記第1記憶部のうち前記データが記憶される場所を示す物理アドレスとの対応関係を示す論物変換情報を更新する更新部をさらに備え、
    前記更新部は、前記書き込み処理が完了するたびに、前記書き込み処理により前記第1記憶部に書き込まれた前記データの前記物理アドレスと、前記論理アドレスとを対応付けて前記論物変換情報に追加する、
    請求項1の半導体記憶装置。
  8. 前記制御部は、
    前記ホスト装置からの、前記データに対応付けられるキーを含む検索要求に応じて、前記キーに対応する前記データを検索する検索処理を制御する検索制御部をさらに備え、
    前記第4記憶部は、前記検索処理の作業領域を更に有する、
    請求項1の半導体記憶装置。
  9. 前記第4記憶部は、前記検索処理により検索された前記データを示す第2保存データを記憶する領域を更に有し、
    前記第3記憶部は、前記第4記憶部に記憶された前記第2保存データの少なくとも1つの前記第2保存データの複製を記憶する領域を更に有する、
    請求項の半導体記憶装置。
JP2012160309A 2012-07-19 2012-07-19 半導体記憶装置 Expired - Fee Related JP5631938B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012160309A JP5631938B2 (ja) 2012-07-19 2012-07-19 半導体記憶装置
US13/913,708 US9152350B2 (en) 2012-07-19 2013-06-10 Semiconductor memory device controlling write or read process

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012160309A JP5631938B2 (ja) 2012-07-19 2012-07-19 半導体記憶装置

Publications (2)

Publication Number Publication Date
JP2014021752A JP2014021752A (ja) 2014-02-03
JP5631938B2 true JP5631938B2 (ja) 2014-11-26

Family

ID=49947537

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012160309A Expired - Fee Related JP5631938B2 (ja) 2012-07-19 2012-07-19 半導体記憶装置

Country Status (2)

Country Link
US (1) US9152350B2 (ja)
JP (1) JP5631938B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10056150B2 (en) 2016-09-20 2018-08-21 Toshiba Memory Corporation Non-volatile semiconductor memory device

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9158678B2 (en) * 2013-03-13 2015-10-13 Kabushiki Kaisha Toshiba Memory address management system and method
US9299126B2 (en) * 2013-09-12 2016-03-29 Arm Limited Image processing apparatus and a method of storing encoded data blocks generated by such an image processing apparatus
CN104919426A (zh) * 2013-12-02 2015-09-16 华为技术有限公司 数据处理设备和数据处理的方法
US10037168B2 (en) 2014-07-09 2018-07-31 Hitachi, Ltd. Memory module and information processing system
US9690652B2 (en) 2015-01-16 2017-06-27 Kabushiki Kaisha Toshiba Search device and search method searching data based on key
JP2016219070A (ja) 2015-05-14 2016-12-22 株式会社東芝 磁気記録ヘッド、およびこれを備えたディスク装置
US10719236B2 (en) * 2015-11-20 2020-07-21 Arm Ltd. Memory controller with non-volatile buffer for persistent memory operations
JP2017162095A (ja) * 2016-03-08 2017-09-14 株式会社リコー 情報処理装置、情報処理方法、情報処理プログラム
US11562792B2 (en) 2020-03-18 2023-01-24 Kioxia Corporation Memory system having a non-volatile memory and a controller configured to switch a mode for controlling an access operation to the non-volatile memory

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005301591A (ja) * 2004-04-09 2005-10-27 Toshiba Corp 不揮発性メモリを備えた装置及びメモリコントロ−ラ
JP4956922B2 (ja) * 2004-10-27 2012-06-20 ソニー株式会社 記憶装置
US7406560B2 (en) * 2006-06-21 2008-07-29 Intel Corporation Using multiple non-volatile memory devices to store data in a computer system
JP2009087509A (ja) 2007-10-03 2009-04-23 Toshiba Corp 半導体記憶装置
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
JP5520747B2 (ja) * 2010-08-25 2014-06-11 株式会社日立製作所 キャッシュを搭載した情報装置及びコンピュータ読み取り可能な記憶媒体
JP5762878B2 (ja) 2011-08-08 2015-08-12 株式会社東芝 key−valueストアを有するメモリシステム
JP5524144B2 (ja) 2011-08-08 2014-06-18 株式会社東芝 key−valueストア方式を有するメモリシステム
JP5906966B2 (ja) 2012-06-29 2016-04-20 富士通株式会社 制御装置、電力供給装置及び電力制御方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10056150B2 (en) 2016-09-20 2018-08-21 Toshiba Memory Corporation Non-volatile semiconductor memory device

Also Published As

Publication number Publication date
US9152350B2 (en) 2015-10-06
US20140025865A1 (en) 2014-01-23
JP2014021752A (ja) 2014-02-03

Similar Documents

Publication Publication Date Title
JP5631938B2 (ja) 半導体記憶装置
JP5405513B2 (ja) メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法、及びプログラム
JP6034183B2 (ja) 半導体記憶装置
US8812816B2 (en) Garbage collection schemes for index block
TWI457756B (zh) 記憶體系統及其操作方法
TW201917580A (zh) 計算機系統及儲存裝置之控制方法
US20130151759A1 (en) Storage device and operating method eliminating duplicate data storage
US10628303B2 (en) Storage device that maintains a plurality of layers of address mapping
US20130250686A1 (en) Semiconductor memory device, information processing system and control method
US20110231598A1 (en) Memory system and controller
US10120606B2 (en) Data storage devices including storage controller circuits to select data streams based on application tags and computing systems including the same
US10990536B2 (en) Memory controller, operating method of the memory controller, and storage device including the memory controller
US20140219041A1 (en) Storage device and data processing method thereof
US10949090B2 (en) Memory system that stores data designated by a deletion request in nonvolatile memory
KR20200016076A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
CN111459400B (zh) 在存储服务器中进行基于管线的存取管理的方法及设备
JP2015053075A (ja) メモリシステム、情報処理装置および記憶装置
KR20190009580A (ko) 컨트롤러 및 컨트롤러의 동작방법
US20110264848A1 (en) Data recording device
JP5649709B2 (ja) メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法およびプログラム
KR20200119059A (ko) 메모리 시스템 및 그것의 동작방법
US11392310B2 (en) Memory system and controller
US11960411B2 (en) Apparatus for transmitting map information in memory system
JP2012037971A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
US20150212884A1 (en) Memory controller, storage device, and memory control method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140613

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140617

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140723

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140909

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141008

LAPS Cancellation because of no payment of annual fees