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

半導体記憶装置 Download PDF

Info

Publication number
JP2014127116A
JP2014127116A JP2012284909A JP2012284909A JP2014127116A JP 2014127116 A JP2014127116 A JP 2014127116A JP 2012284909 A JP2012284909 A JP 2012284909A JP 2012284909 A JP2012284909 A JP 2012284909A JP 2014127116 A JP2014127116 A JP 2014127116A
Authority
JP
Japan
Prior art keywords
data
storage unit
read
write
logical address
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.)
Granted
Application number
JP2012284909A
Other languages
English (en)
Other versions
JP6034183B2 (ja
Inventor
Takao Marugame
孝生 丸亀
Takahiro Kurita
貴宏 栗田
Yuki Sasaki
勇輝 佐々木
Jiezhi Chen
ジィエジィ 陳
Yusuke Higashi
悠介 東
Yuichiro Mitani
祐一郎 三谷
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 JP2012284909A priority Critical patent/JP6034183B2/ja
Priority to US14/090,597 priority patent/US9164704B2/en
Publication of JP2014127116A publication Critical patent/JP2014127116A/ja
Priority to US14/851,229 priority patent/US20160004440A1/en
Application granted granted Critical
Publication of JP6034183B2 publication Critical patent/JP6034183B2/ja
Active 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/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
    • 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
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Computer Security & Cryptography (AREA)

Abstract


【課題】書き込みに伴って無駄な空き領域が発生することを防止可能な半導体記憶装置を提供する。
【解決手段】実施形態の半導体記憶装置は、第1記憶部と、第2記憶部と、書き込み制御部とを備える。第1記憶部は、ホスト装置から供給されるデータを含む情報を記憶する。第2記憶部は、第1記憶部からの情報の読み出しに用いられた論理アドレスを記憶する。書き込み制御部は、ホスト装置から第1記憶部に対する書き込みが要求されたデータのサイズが閾値未満の場合は、第2記憶部に記憶された論理アドレスをデータに付加して、第1記憶部に書き込む制御を行う。
【選択図】図1

Description

本発明の実施形態は、半導体記憶装置に関する。
一般的なホストシステム、例えばコンピュータシステムが備えるストレージ装置として磁気式のハードディスクドライブ(HDD)や、NANDフラッシュメモリのような不揮発性半導体メモリを搭載する固体ドライブ(SSD)や、埋め込みNANDフラッシュメモリなどがある。SSDや埋め込みNANDフラッシュメモリはストレージに分類されるが、規模が拡張されたメモリシステムともいえる。
このようなメモリシステムでは、例えばインタフェースと、第1のメモリブロックと、第2のメモリブロックと、コントローラとから構成される。第1のメモリブロックはデータを格納し、第2のメモリブロックはデータの書き込み/読み出し時のバッファメモリである。
特許第4672742号公報
従来システムとして、SSDを想定して説明する。本明細書において、SSDは広い意味でのNANDフラッシュベースの固体メモリによるストレージを意味し、組み込みNANDフラッシュメモリシステムも含まれる。NANDフラッシュメモリは、書き込みがページ単位であるため、細かい単位のデータ書き込み要求(ページサイズ未満のデータの書き込み要求)が多くなった場合に、NANDフラッシュメモリに多くの空き領域が発生し、利用効率が低下するという問題がある。
本発明が解決しようとする課題は、データの書き込み先に無駄な空き領域が発生することを防止可能な半導体記憶装置を提供することである。
実施形態の半導体記憶装置は、第1記憶部と、第2記憶部と、書き込み制御部とを備える。第1記憶部は、ホスト装置から供給されるデータを含む情報を記憶する。第2記憶部は、第1記憶部からのデータの読み出しに用いられた論理アドレスを記憶する。書き込み制御部は、ホスト装置から第1記憶部に対する書き込みが要求されたデータのサイズが閾値未満の場合は、第2記憶部に記憶された論理アドレスをデータに付加して、第1記憶部に書き込む制御を行う。
本発明の概要を説明するための概念図。 第1実施形態の半導体記憶装置のハードウェア構成例を示す図。 第1実施形態のデバイスコントローラの機能構成例を示す図。 第1実施形態の第2記憶部の構成例を示す図。 第1実施形態のメモリコントローラの機能構成例を示す図。 第1実施形態の書き込み制御部による制御の一例を示す図。 第1実施形態の読み出し制御部による制御の一例を示す図。 変形例の半導体記憶装置のハードウェア構成例を示す図。 第2実施形態のデバイスコントローラの機能構成例を示す図。 第2実施形態の第2記憶部の構成例を示す図。 第2実施形態の第2書き込み制御部による制御の一例を示す図。 第1実施形態の検索制御部による制御の一例を示す図。
本発明に係る半導体記憶装置の実施の形態を説明する前に、本発明の概要を説明する。ここでは、ホスト装置から供給されるデータを記憶する第1記憶部は、NANDフラッシュメモリで構成される場合を例に挙げて説明する。NANDフラッシュメモリのページサイズ(例えば8KB)に比べて、検索メモリが扱うタグのようなメタデータのサイズは小さい。このため、タグのようなページサイズ未満のデータをNANDフラッシュメモリに書き込む場合、その書き込みの際にNANDフラッシュメモリに確保される1ページ分の記憶領域に空き領域が生じる。
実際、パーソナルコンピュータやモバイルフォンでのNANDフラッシュメモリのユースケースの解析結果から、4KB以下の細かいデータが高い頻度で書き込まれていることが知られている。ここで、データの読み書きのユースケースを考慮すると、書き込まれるデータは、直近に読み出されていたデータと関係性を有する可能性が高い。例えばパーソナルコンピュータで、ドキュメントファイルを開きながらプレゼンテーションファイルを開いて、そのプレゼンテーションファイルを更新して保存する場合を想定する。その後、そのプレゼンテーションファイルを読むときに、ドキュメントファイルも読む可能性があるので、データを書くときは直近に読まれていたデータとの関連付けを記憶しておくと、その書き込まれたデータが読み出されるときに、効率的にその関連付けも引き出すことができる。
NANDフラッシュメモリのようなページ単位で読み書きが行われるメモリと、他のRAMとの本質的な差に基づく有意な差は、NANDフラッシュメモリが大容量化に適していたとしても、ページ単位で書くために、ユースケースによっては容量を十分に活かせない可能性があることである。
本発明は、以上の点に着目し、ページの空き領域に、少しでも読み出し時に価値のある情報を書き込んでおくことが、メモリシステムの実運用での速度向上に有用であることを見出したことを特徴の一つとする。図1に示すように、本発明は、NANDフラッシュメモリに対する書き込みが要求されたデータ(以下、「書き込み対象データ」と呼ぶ場合がある)のサイズが、書き込み単位のサイズを示すページサイズ未満の場合(より具体的には、書き込み対象データのページ充当率が閾値(例えば50%)未満の場合)は、データの読み出しに用いられたアドレス(例えば論理アドレスまたはキーアドレス)の履歴が保存された不図示のバッファメモリ(請求項の「第2記憶部」に対応)から直近のアドレスを読み出し、その読み出したアドレスを書き込み対象データに付加して、ページの冗長部以外の領域に空き領域が発生しないようにする。そして、ページの冗長部には、所定の冗長情報(例えば書き込みが要求されたデータに対してホスト装置から指定された論理アドレス、ECC、パリティー、アドレス個数等)を追記して、NANDフラッシュメモリに書き込む。
その後、NANDフラッシュメモリに書き込まれた書き込み対象データの読み出しが要求された場合、書き込み対象データとともに、書き込み時に付加されたアドレスも読み出される。そして、読み出されたアドレスに対応するデータをNANDフラッシュメモリから読み出してバッファメモリに保持しておく(つまり、先読みを行っておく)ことで、先読みされたデータの読み出し要求があった場合に、NANDフラッシュメモリにアクセスすることなくデータをホスト装置へ送ることができるので、書き込み対象データとの相関が強いデータを効率良く読み出すことができる。
以下、添付図面を参照しながら、本発明に係る半導体記憶装置の実施形態を詳細に説明する。
(第1実施形態)
図2は、第1実施形態の半導体記憶装置であるデバイス100およびホスト装置200のハードウェア構成の一例を示すブロック図である。図2に示すように、ホスト装置200は、CPU201と、メインメモリ202と、デバイス100と接続するためのインタフェース部203とを備え、これらは、バス204を介して相互に接続されている。
デバイス100は、コントローラチップ110と、第1記憶部120とを備える。コントローラチップ110は、ホストインタフェース部111と、デバイスコントローラ112と、第2記憶部113と、メモリコントローラ114とを備え、これらは、バス115を介して相互に接続されている。デバイス100内では、高速かつ効率的なバス線配置が取られることが望ましい。一方、例えばインタフェース規格と外部インタフェース規格の相違などで、2種類以上のバス線がデバイス100内で用いられていてもよい。
また、図1の例では、第1記憶部120は、メモリコントローラ114を介してコントローラチップ110と接続される。第1記憶部120は、ホスト装置200から供給されるデータ(見方を変えれば、ホスト装置200が利用するデータ)を記憶可能な装置である。本実施形態では、第1記憶部120は、NANDフラッシュメモリで構成されるが、これに限られるものではない。また、第1記憶部120は、記憶容量を増大させるため複数のチップで構成されていてもよい。第1記憶部120は、これに限定されるものではなく、記憶不揮発性を有する半導体メモリであればあらゆる記憶媒体を適用できる。例えば、第1記憶部120として、MRAM(Magnetoresistive Random Access Memory)やReRAM(Resistance Random Access Memory)やFeRAM(Ferroelectric Random Access Memory)やPCRAM(Phase-Change Random Access Memory)などの不揮発性メモリを用いてもよい。
ホスト装置200(インタフェース部203)は、例えばAMBA(Advanced Microcontroller Bus Architecture)、などの外部バス300を介して、デバイス100側のホストインタフェース部111に接続される。例えばホストインタフェース部111は、SATA(Serial Advanced Technology Attachment)、PCI Express、eMMC(embedded MMC)、UFS((Universal Flash Storage))および、USB(Universal Serial Bus)などを適宜選択する。
ホストインタフェース部111は、デバイス100の上位装置であるホスト装置200からの要求を受け付けることができる。例えばホストインタフェース部111は、第1記憶部120に対するデータの書き込みを要求する書き込み要求や、第1記憶部120からのデータの読み出しを要求する読み出し要求をホスト装置200から受け付けることができる。この例では、書き込み要求は、書き込みの実行を要求する情報と、書き込みを要求するデータと、プログラム上の仮想空間アドレスのうち、その書き込みを要求するデータが割り当てられる場所を示す論理アドレスとを含んで構成される。一方、読み出し要求は、読み出しの実行を要求する情報と、プログラム上の仮想空間アドレスのうち、読み出しを要求するデータが割り当てられる場所を示す論理アドレスとを含んで構成される。上記論理アドレスは、ホスト装置200によって指定される。
デバイスコントローラ112は、ホストインタフェース部111で受け付けたホスト装置200からの要求に応じて、第1記憶部120に対するデータの書き込みや第1記憶部120からのデータの読み出しを制御する制御装置である。デバイスコントローラ112の詳細な機能については後述する。
第2記憶部113は、第1記憶部120に比べて小容量であるが、第1記憶部120に比べて、書き換え/読み出し耐性が高いメモリである。第2記憶部113は、デバイスコントローラ112や後述のメモリコントローラ114による各種の演算結果を記憶しておくための作業領域を有する。また、第2記憶部113は、データの読み出しに用いられた論理アドレスの履歴(読み出し済みのデータに対応する論理アドレスの履歴)を記憶する領域を有する。第2記憶部113の詳細な内容については後述する。なお、第2記憶部113は、電源が遮断されても第2記憶部113に記憶されたデータが失われないための不揮発性を有していてもよい。例えば第1記憶部120がNANDフラッシュメモリのとき、第2記憶部113は、MRAM、PCRAM、ReRAM、FeRAMなどで構成され得る。
メモリコントローラ114は、デバイスコントローラ112の制御の下、ホスト装置200から供給されるデータを第1記憶部120に書き込む、または、第1記憶部120に格納されたデータを読み出す機能を有するハードウェアモジュールである。メモリコントローラ114の詳細な機能については後述する。
次に、デバイスコントローラ112の詳細な機能について説明する。図3は、デバイスコントローラ112の機能構成例を示すブロック図である。図3に示すように、デバイスコントローラ112は、受付部101と、書き込み制御部102と、読み出し制御部103とを有する。受付部101は、ホスト装置200からの要求を受け付ける。
書き込み制御部102は、受付部101で書き込み要求を受け付けた場合、書き込みが要求されたデータ(書き込み要求に含まれるデータ、以下、「書き込み対象データ」と呼ぶ場合がある)を含む情報を、第1記憶部120に書き込む制御(以下、「書き込み制御」と呼ぶ場合がある)を行う。後述するように、書き込み制御の対象となる情報には、所定の冗長情報のほか、書き込み対象データに付加された論理アドレスが含まれる場合もある。本実施形態では、書き込み制御部102は、書き込みの実行を命令する書き込みコマンドを生成し、生成した書き込みコマンドに対して、書き込み対象データを含む情報(書き込み制御の対象となる情報)と、第1記憶部120のうち、書き込み対象データが書き込まれる領域を示す物理アドレスとを付加してメモリコントローラ114へ伝達する。なお、第1記憶部120に対するデータや冗長情報を含む情報の書き込みは、論理アドレスとは無関係に、ページの昇順に行なわれる。
ここで、書き込み制御部102は、書き込み対象データのサイズが閾値未満の場合は、第2記憶部113に記憶された論理アドレス(データの読み出しに用いられた論理アドレス)を書き込み対象データに付加して、第1記憶部120に書き込む制御を行う。より具体的には、書き込み制御部102は、書き込み対象データのサイズが、書き込み単位を示すページサイズ未満の場合は、第2記憶部113に記憶された論理アドレスを書き込み対象データに付加して、第1記憶部120に書き込む制御を行う。さらに言えば、書き込み制御部102は、書き込み対象データのページ充当率(ページサイズのうち書き込み対象データが占める割合)が50%未満の場合は、ページの冗長部以外の領域に空き領域が発生しないよう、第2記憶部113に記憶された論理アドレスを書き込み対象データに付加するとともに、少なくとも、書き込み対象データの長さを特定可能な情報を示すオフセットを冗長部に追記して、第1記憶部120に書き込む制御を行う。この場合、書き込み制御の対象となる情報は、サイズが閾値未満の書き込み対象データと、その書き込み対象データに付加された論理アドレスと、冗長部に記載された冗長情報(少なくともオフセットを含む)とを含んで構成される。
さらに、書き込み制御部102は、書き込み制御を行うたびに、ホスト装置200により指定される論理アドレスと、第1記憶部120内の位置を示す物理アドレスとの対応関係を示す論物変換情報を更新する制御を行う。より具体的には、書き込み制御部102は、書き込み制御を行うたびに、ホスト装置200から受け付けた書き込み要求に含まれる論理アドレスと、第1記憶部120のうち書き込み対象データを書き込む位置(領域)を示す物理アドレスとを対応付けて、新たに論物変換情報に追加する制御を行う。この例では、論物変換情報はテーブル形式のデータ構造であり、本体は第1記憶部120に格納されるが、論物変換が行われるときは、第2記憶部113に読み出されて使われる。以下の説明では、本実施形態における論物変換情報を、「論物変換テーブル」と呼ぶ(「L2Pテーブル」と呼ぶ場合もある)。本実施形態では、論物変換テーブルの内容は、書き込み制御部102による書き込み制御が行われるたびに更新される。
次に、読み出し制御部103の機能を説明する。読み出し制御部103は、受付部101で読み出し要求を受け付けた場合、論物変換テーブルを参照して、読み出し要求に含まれる論理アドレスに対応付けられた物理アドレスを特定し(論物変換を行い)、特定した物理アドレスが示す位置に格納された情報を読み出す制御(以下、「第1の読み出し制御」と呼ぶ場合がある)を行う。本実施形態では、読み出し制御部103は、メモリコントローラ114に対して読み出しの実行を命令する読み出しコマンドを生成し、その生成した読み出しコマンドに対して、上述の論物変換により得た物理アドレスを付加してメモリコントローラ114へ伝達する。そして、読み出し制御部103は、読み出しコマンドに対する応答として、メモリコントローラ114が第1記憶部120から読み出した情報を受け取ることができる。
読み出し制御部103は、第1の読み出し制御により読み出した情報の中に、書き込み制御部102によってデータに付加された論理アドレスが含まれていた場合は、論物変換テーブルを参照して、書き込み制御部102によってデータに付加された論理アドレスに対応する物理アドレスを特定する。本実施形態では、読み出し制御部103は、第1の読み出し制御により読み出した情報に含まれるオフセットを参照して、データ長が閾値未満であると判断した場合(この例では、データ長のページ充当率が50%未満であると判断した場合)、読み出した情報のデータおよび冗長部以外の部分から、書き込み時にデータに付加された論理アドレスを取得する。そして、読み出し制御部103は、論物変換テーブルを参照して、取得した論理アドレスに対応する物理アドレスを特定する。
読み出し制御部103は、第1記憶部120のうち、以上のようにして特定した物理アドレスが示す位置に格納された情報を読み出す制御(以下、「第2の読み出し制御」と呼ぶ場合がある)を行う。本実施形態では、読み出し制御部103は、メモリコントローラ114に対して読み出しの実行を命令する読み出しコマンドを生成し、生成した読み出しコマンドに対して、以上のようにして特定した物理アドレスを付加してメモリコントローラ114へ伝達する。読み出し制御部103は、読み出しコマンドに対する応答として、メモリコントローラ114が第1記憶部120から読み出した情報を受け取ることができる。そして、読み出し制御部103は、第2の読み出し制御により読み出した情報に含まれるデータと論理アドレスとを対応付けて第2記憶部113に記憶させる制御を行う。
したがって、第2の読み出し制御が行われるたびに、第2記憶部113には、第2の読み出し制御に用いられた論理アドレスと、データとが対応付けられて記憶されていく。以下の説明では、第2記憶部113に記憶された、第2の読み出し制御に用いられた論理アドレスと、その論理アドレスに対応付けられたデータとの組をキャッシュデータと呼ぶ場合がある。
読み出し制御部103は、受付部101で受け付けた読み出し要求に含まれる論理アドレスと一致する論理アドレスと、データとが対応付けられて第2記憶部113に記憶されている場合は、読み出し要求に含まれる論理アドレスと一致する論理アドレスに対応付けられたデータを第2記憶部113から読み出す第3の読み出し制御を行う。つまり、第2記憶部113に記憶された1以上のキャッシュデータの中に、読み出し要求に含まれる論理アドレスと一致する論理アドレスを含むキャッシュデータが存在する場合は、読み出し制御部103は、そのキャッシュデータに含まれるデータを読み出す制御を行う。この場合、読み出し制御部103は、第1記憶部120からデータを読み出す制御を行う必要が無いので、読み出し速度の向上が図られる。
また、読み出し制御部103は、第1の読み出し制御を行うたびに、少なくとも、その第1の読み出し制御に用いた論理アドレスを第2記憶部113に記憶させる制御を行う。例えば読み出し制御部103は、第2記憶部113(例えば後述の第3記憶部130)の容量の範囲内において、第1の読み出し制御に用いた論理アドレスと、第1の読み出し制御により読み出したデータとを対応付けて第2記憶部113に記憶させることもできる。
さらに、読み出し制御部103は、第1の読み出し制御または第2の読み出し制御に用いた論理アドレスを第2記憶部113に記憶させる場合、第1記憶部120からの情報の読み出しが行われた時間(時刻)を示す時間情報を対応付けて記憶させる。したがって、本実施形態では、第2記憶部113は、第1の読み出し制御または第2の読み出し制御に用いられた論理アドレスごとに、読み出しが行われた時間(第1の読み出し制御または第2の読み出し制御が行われた時間)を示す時間情報を対応付けて記憶する。第2記憶部113のより詳細な内容については後述する。
ここで、前述の書き込み制御部102は、書き込み対象データのサイズが閾値未満の場合は、第2記憶部113に記憶された論理アドレスの中から、その書き込み対象データの書き込みが要求されたとき(書き込み要求を受け付けたとき)よりも前の所定期間内における読み出しに用いられた論理アドレスを選択して書き込み対象データに付加する。より具体的には、書き込み制御部102は、書き込み対象データのサイズが閾値未満の場合は、第2記憶部113に記憶された論理アドレスの中から、上記所定期間内に含まれる時間を示す時間情報に対応する論理アドレスを選択して書き込み対象データに付加する。
さらに詳述すれば、以下のとおりである。本実施形態では、図4に示すように、第2記憶部113は、第3記憶部130と第4記憶部140とを備える。第3記憶部130は、第1の読み出し制御に用いられた論理アドレスごとに、第1の読み出し制御による読み出しが行われた時間を示す時間情報を対応付けて記憶する。第4記憶部140は、第2の読み出し制御に用いられた論理アドレスごとに、第2の読み出し制御により読み出されたデータと、第2の読み出し制御による読み出しが行われた時間を示す時間情報とを対応付けて記憶する。そして、書き込み制御部102は、書き込み対象データのサイズが閾値未満の場合は、第3記憶部130および第4記憶部140の各々に記憶された論理アドレスの中から、所定期間内に含まれる時間を示す時間情報に対応する論理アドレス(第1の読み出し制御に用いられた論理アドレスでもよいし、第2の読み出し制御に用いられた論理アドレスでもよい)を選択して、書き込み対象データに付加する。
なお、上記所定期間は任意に設定可能であり、例えば受付部101がホスト装置200からの書き込み要求を受け付けた時点を示す書込み要求時点よりも予め定められた時間だけ前の時点から、書込み要求時点までの期間を、所定期間として設定することもできる。
また、上記所定期間の長さは任意に設定可能であるが、例えば、デバイス100の電源がONになってからの読み出しに用いられた論理アドレスの履歴を保存しておいたとしても、ページサイズ未満の書き込み対象データ(書き込みが要求されたデータ)を書き込む際に、あまりにも離れた時間における読み出しに用いられた論理アドレスを、その書き込み対象データに付け足して書き込んでも、相関が小さくなり、十分な先読み効果が得られないおそれがある。具体例としては、スマートフォンの場合、一日に扱われる時間は統計的に50分以下が多いため、書き込みを行うとき(例えば書き込み要求時点)から50分以下の間隔で読み出されたデータならば、その書き込みを行うデータとの相関が強いと考えることができる。したがって、書き込みを行うときから50分以下の間隔で読み出されたデータに対応する論理アドレスを、書き込み対象データに付加して書き込んでおけば、書き込み対象データとの相関が強いデータを効率よく読み出すことができる。また、例えばPCの場合、一日に扱われる時間は3時間未満が統計的に過半数を占めるため、間隔が3時間未満の間隔で読み出されたデータに対応する論理アドレスを、ページサイズ未満の書き込み対象データに付加して書き込んでおくことにより、その書き込み対象データとの相関が強いデータを効率よく読み出すことができる。
また、例えば書き込み制御部102は、書き込み制御を行うたびに、書き込み要求に含まれる論理アドレスと、書き込み制御による書き込みが行われた時間(時刻)を示す時間情報とを対応付けて第3記憶部130に記憶させる制御を行うこともできる。この場合、直前の書き込みが行われた時点(例えば受付部101が直前の書き込み要求を受け付けた時点)から、最新の書き込みが行われる時点までの期間を、所定期間として設定することもできる。
本実施形態では、デバイスコントローラ112は、例えばCPU等を含んで構成され、CPUが不図示のROM等に格納されたプログラムを実行することにより、上述の受付部101、書き込み制御部102、および、読み出し制御部103の各々の機能が実現されるが、これに限らず、例えば上述の受付部101、書き込み制御部102、および、読み出し制御部103のうちの少なくとも一部が専用のハードウェア回路で実現されてもよい。
次に、メモリコントローラ114の機能について説明する。図5は、メモリコントローラ114の機能構成例を示すブロック図である。図5に示すように、メモリコントローラ114は、コマンド受信部104と、訂正部105と、書き込み部106と、読み出し部107とを有する。
コマンド受信部104は、デバイスコントローラ112から送信されるコマンド(書き込みコマンドまたは読み出しコマンド)を受信する。訂正部105は、コマンド受信部104で受信した書き込みコマンドに付加された情報(書き込み制御部102による書き込み制御の対象となる情報)の符号化処理を行う。この例では、訂正部105は、第1記憶部120に対する書き込みを行うべき情報に対して、ビットの誤り訂正処理(ECC処理)を行うための冗長情報(データビットの偶奇性を利用する場合、パリティーと呼ぶ)を付加する処理を行う。また、訂正部105は、後述の読み出し部107により第1記憶部120から読み出された情報に対する誤り訂正処理(ECC処理)を行う。ここでは、第2記憶部113は、訂正部105による符号化処理の作業領域を更に有する。また、第2記憶部113は、訂正部105による誤り訂正処理の作業領域を更に有する。つまり、第2記憶部113は、訂正部105による符号化処理および誤り訂正処理のワークメモリとしても機能する。
書き込み部106は、コマンド受信部104で受信した書き込みコマンドに従って、第1記憶部120に対する情報の書き込みを行う。より具体的には、書き込み部106は、第1記憶部120のうち、書き込みコマンドに付加された物理アドレスが示す領域に対して、訂正部105によって符号化された情報を書き込む。また、読み出し部107は、コマンド受信部104で受信した読み出しコマンドに従って、第1記憶部120からの情報の読み出しを行う。より具体的には、読み出し部107は、第1記憶部120のうち、読み出しコマンドに付加された物理アドレスが示す領域に格納された情報を読み出す。読み出し部107によって読み出された情報は、訂正部105による誤り訂正処理によって復号され、復号された情報が、読み出しコマンドに対する応答として、デバイスコントローラ112(読み出し制御部103)へ送られる。
本実施形態では、メモリコントローラ114は、ハードウェアモジュールで構成され、上述のコマンド受信部104、訂正部105、書き込み部106、および、読み出し部107の各々は、専用のハードウェア回路で実現されるが、これに限らず、例えばメモリコントローラ114がCPU等を含んで構成され、CPUが不図示のROM等に格納されたプログラムを実行することにより、上述のコマンド受信部104、訂正部105、書き込み部106、および、読み出し部107のうちの少なくとも一部の機能が実現される形態であってもよい。
次に、図6を参照しながら、前述の書き込み制御部102による制御の一例を説明する。図6は、書き込み制御部102による制御の一例を示すフローチャートである。この例では、ホスト装置200からの書き込み要求を受付部101で受け付けたことを前提として説明する。図6に示すように、書き込み制御部102は、書き込み要求に含まれるデータ(書き込み対象データ)のサイズが閾値未満であるか否かを確認する(ステップS1)。上述したように、本実施形態では、書き込み込み制御部102は、書き込み対象データのページ充当率が50%未満であるか否かを確認する。書き込み対象データのサイズが閾値以上であると判断した場合(ステップS1:NO)、処理は、後述のステップS6に移行する。
上述のステップS1において、書き込み対象データのサイズが閾値未満であると判断した場合(ステップS1:YES)、書き込み制御部102は、空き領域のサイズを算出する(ステップS2)。次に、書き込み制御部102は、算出した空き領域のサイズが閾値以上であるか否かを確認する(ステップS3)。この閾値は、空き領域のサイズが、少なくとも1つの論理アドレスのサイズ以上であるか否かを判定可能な値に設定される。算出した空き領域のサイズが閾値未満であると判断した場合(ステップS3:NO)、処理は、後述のステップS6に移行する。
一方、算出した空き領域のサイズが閾値以上であると判断した場合(ステップS3:YES)、書き込み制御部102は、第2記憶部113に記憶された論理アドレスの中から、所定期間内に含まれる時間を示す時間情報に対応する論理アドレスを取得(選択)する(ステップS4)。本実施形態では、書き込み制御部102は、第3記憶部130および第4記憶部140の各々に記憶された論理アドレスの中から、所定期間内に含まれる時間を示す時間情報に対応する論理アドレスを、算出した空き領域のサイズを超えないよう、時間が早いものから順に選択する。
次に、書き込み制御部102は、ステップS4で選択した1以上の論理アドレスを、書き込み対象データに付加する(ステップS5)。次に、書き込み制御部102は、受付部101で受け付けた書き込み要求に含まれる論理アドレスと、書き込み対象データのデータ長を特定可能なオフセットとを、書き込み単位のページサイズのうち冗長部分の領域を示す冗長部に追記する(ステップS6)。次に、書き込み制御部102は、メモリコントローラ114に対する書き込みの実行を命令する書き込みコマンドを生成し、生成した書き込みコマンドに対して、書き込み制御の対象となる情報と、第1記憶部120のうち書き込み対象データを書き込む位置を示す物理アドレスとを付加してメモリコントローラ114へ送信する(ステップS7)。そして、書き込み制御部102からの書き込みコマンドを受信したメモリコントローラ114は、受信した書き込みコマンドに従って、第1記憶部120に対する情報の書き込みを行う。メモリコントローラ114は、受信した書き込みコマンドに従った書き込みが完了すると、書き込みコマンドに対する応答として、書き込みが完了したことを示す通知情報を書き込み制御部102へ送信する。これにより、書き込み制御部102は、書き込みが完了したことを知ることができる。
次に、書き込み制御部102は、論物変換テーブル(L2Pテーブル)を更新する(ステップS8)。上述したように、本実施形態では、書き込み制御部102は、受付部101で受け付けた書き込み要求に含まれる論理アドレスと、第1記憶部120のうち書き込み対象データを書き込む位置を示す物理アドレスとを対応付けて、新たに論物変換テーブルに追加する制御を行う。
次に、図7を参照しながら、前述の読み出し制御部103による制御の一例を説明する。図7は、読み出し制御部103による制御の一例を示すフローチャートである。この例では、ホスト装置200からの読み出し要求を受付部101で受け付けたことを前提として説明する。図7に示すように、まず、読み出し制御部103は、読み出し要求に含まれる論理アドレスと一致する論理アドレスと、データとが対応付けられて第2記憶部113に記憶されているか否かを確認する(ステップS10)。上述したように、本実施形態では、読み出し制御部103は、読み出し要求に含まれる論理アドレスを含むキャッシュデータが第4記憶部140に記憶されているか否かを確認する。
上述のステップS10において、読み出し要求に含まれる論理アドレスと一致する論理アドレスと、データとが対応付けられて第2記憶部113に記憶されていると判断した場合(ステップS10:YES)、つまり、読み出し要求に含まれる論理アドレスを含むキャッシュデータが第4記憶部140に存在すると判断した場合、読み出し制御部103は、読み出し要求に含まれる論理アドレスと一致する論理アドレスに対応付けられたデータを第2記憶部113から読み出し、読み出したデータを、読み出し要求に対する応答としてホスト装置200へ送信する(ステップS11)。以上のステップS11の内容が、第3の読み出し制御に相当する。一方、上述のステップS10において、読み出し要求に含まれる論理アドレスと一致する論理アドレスと、データとが対応付けられて第2記憶部113に記憶されていないと判断した場合(ステップS10:NO)、つまり、読み出し要求に含まれる論理アドレスを含むキャッシュデータが第4記憶部140に存在しないと判断した場合、処理は、ステップS12に移行する。
ステップS12において、読み出し制御部103は、論物変換テーブルを参照して、読み出し要求に含まれる論理アドレスに対応する物理アドレスを特定する(ステップS12)。次に、読み出し制御部103は、メモリコントローラ114に対して読み出しの実行を命令する読み出しコマンドを生成し、生成した読み出しコマンドに対して、ステップS12で特定した物理アドレスを付加してメモリコントローラ114へ送信する(ステップS13)。読み出しコマンドを受信したメモリコントローラ114は、受信した読み出しコマンドに従って、第1記憶部120から情報を読み出し、読み出した情報を読み出し制御部103へ送信する。つまり、読み出し制御部103は、読み出しコマンドに対する応答として、メモリコントローラ114により読み出された情報を受信する(ステップS14)。
以上のステップS12〜ステップS14の内容が、第1の読み出し制御に相当する。次に、読み出し制御部103は、第1の読み出し制御により読み出した情報に含まれるオフセットを参照して、データ長が閾値未満であるか否かを確認する(ステップS15)。上述したように、本実施形態では、読み出し制御部103は、データ長のページ充当率が50%未満であるか否かを確認する。データ長が閾値以上であると判断した場合(ステップS15:NO)、読み出し制御部103は、第1の読み出し制御により読み出した情報に含まれるデータを、読み出し要求に対する応答としてホスト装置200へ送信する(ステップS16)。
一方、上述のステップS15において、データ長が閾値未満であると判断した場合(ステップS15:YES)、読み出し制御部103は、第1の読み出し制御により読み出した情報のうち、データと冗長部以外の部分から、書き込み時にデータに付加された論理アドレスを取得する(ステップS17)。また、本実施形態では、ステップS17の処理と並行して、読み出し制御部103は、第1の読み出し制御により読み出した情報に含まれる、閾値未満のサイズのデータを、読み出し要求に対する応答としてホスト装置200へ送信することもできる。なお、これに限らず、第1の読み出し制御により読み出した情報に含まれる、閾値未満のサイズのデータをホスト装置200へ送信するタイミングは任意に変更可能である。
次に、読み出し制御部103は、論物変換テーブルを参照して、ステップS17で取得した1以上の論理アドレスごとに、論理アドレスに対応する物理アドレスを特定する(ステップS18)。次に、読み出し制御部103は、メモリコントローラ114に対して読み出しの実行を命令する読み出しコマンドを生成し、生成した読み出しコマンドに対して、ステップS18で特定した物理アドレスを付加してメモリコントローラ114へ送信する(ステップS19)。読み出しコマンドを受信したメモリコントローラ114は、受信した読み出しコマンドに従って、第1記憶部120から情報を読み出し、読み出した情報を読み出し制御部103へ送信する。つまり、読み出し制御部103は、読み出しコマンドに対する応答として、メモリコントローラ114により読み出された情報を受信する(ステップS20)。
以上のステップS17〜ステップS20の内容が、第2の読み出し制御に相当する。ステップS20の後、読み出し制御部103は、メモリコントローラ114から受信した情報(第2の読み出し制御により読み出した情報)に含まれるデータと、論理アドレスとを対応付けて第2記憶部113(第4記憶部140)に記憶させる制御を行う(ステップS21)。これにより、第4記憶部140には、先読みのキャッシュデータが新たに追加されることになる。
以上に説明したように、本実施形態では、書き込み対象データのサイズが閾値未満の場合は、読み出しに用いられた論理アドレス(読み出し済みのデータに対応する論理アドレス)が当該書き込み対象データに付加されて第1記憶部120に書き込まれるので、データの書き込み先である第1記憶部120内に無駄な空き領域が発生することを防止できる。
また、本実施形態では、閾値未満のサイズの書き込み対象データに付加される論理アドレスとしては、書き込み対象データの書き込みが要求された時よりも前の所定期間内における読み出しに用いられた論理アドレスが採用される。そして、閾値未満のサイズの書き込み対象データが第1記憶部120に書き込まれた後、その書き込み対象データの読み出しが要求された場合は、その書き込み対象データとともに、書き込み時に付加された論理アドレスも読み出される。そして、その読み出された論理アドレスに対応するデータが第1記憶部120から読み出され(先読みされ)、論理アドレスと対応付けられたキャッシュデータとして第2記憶部113に保持されるので、先読みされたデータの読み出し要求があった場合は、第1記憶部120にアクセスすることなく、要求されたデータをホスト装置200に送ることができる。したがって、本実施形態によれば、第1記憶部120内に無駄な空き領域が発生することを防止しつつ書き込み対象データとの相関が強いデータを効率良く読み出すことができるという有利な効果を達成できる。
(第1実施形態の変形例1)
例えば先読みのキャッシュデータに含まれる論理アドレスは、閾値未満のサイズの書き込み対象データに付加されない形態であってもよい。この場合、第4記憶部140は、時間情報を保持する必要が無いので、少なくとも、第2の読み出し制御に用いられた論理アドレスと、第2の読み出し制御により読み出されたデータとを対応付けて記憶するものであればよい。そして、書き込み制御部102は、書き込み対象データのサイズが閾値未満の場合は、第3記憶部130に記憶された論理アドレスの中から、所定期間内に含まれる時間を示す時間情報に対応する論理アドレスを選択して書き込み対象データに付加する制御を行う。
(第1実施形態の変形例2)
例えば第3記憶部130は、FIFO(First−In−First−Out)方式のメモリで構成されてもよい。つまり、論理アドレスの蓄積量が第3記憶部130の容量を超える場合、古い論理アドレスから順番に削除されていくという具合である。
(第1実施形態の変形例3)
例えばデバイスコントローラ112やメモリコントローラ114による各種の演算結果を記憶しておくための作業領域を十分に確保するために、図8に示すように、第2記憶部113とは別に(コントローラチップ110とは別に)バッファメモリ150が設けられる形態であってもよい。図8の例では、バッファメモリ150は、コントローラチップ110内のバス115に接続されている。例えば第2記憶部113がSRAMで構成され、バッファメモリ150がDRAMで構成される場合、SRAMの方がDRAMよりもアクセス速度(読み出し/書き込み速度)が速いため、第1記憶部120に格納されている論物変換テーブルを、一旦、バッファメモリ150に移しておき、その一部を、第2記憶部113へ移して利用することもできる。
(第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等の集合演算を効率的に行うための高速な不揮発バッファメモリを備えることが望ましい。検索要求は、不揮発バッファ内でデータ処理が終わるまで確実に保存されていなければならないので、長期信頼性を有する不揮発メモリが望ましい。
以下、第2実施形態の半導体記憶装置の具体的な内容を説明する。基本的な構成は、第1実施形態に係るデバイス100の構成と同様であるので、検索機能に関する部分を中心に説明する。
図9は、第2実施形態のデバイスコントローラ210の機能構成例を示すブロック図であり、検索機能に関する部分のみを例示している。図9に示すように、デバイスコントローラ210は、受付部211と、第2書き込み制御部212と、検索制御部213とを有する。この例では、第2書き込み制御部212は、請求項11の「書き込み制御部」に対応している。
第2実施形態の第2記憶部220は、第1記憶部120に記憶されたデータのうち、ホスト装置200から指定されたキーに対応するデータを検索するのに用いられたキーアドレスを記憶する。第2記憶部220の詳細な内容については後述する。
第2実施形態のメモリコントローラ250は、第1実施形態と同様に、デバイスコントローラ210の制御の下、第1記憶部120に対する情報の書き込みや読み出しを実行する。メモリコントローラ250の機能は、第1実施形態とほぼ同様であるため、ここでは詳細な説明を省略する。
図9に戻り、デバイスコントローラ210の機能を説明する。受付部211は、ホスト装置200からの要求を受け付ける。ここでは、受付部211は、データと、当該データに関連付けられたメタデータを示すキーとの組の書き込みを要求するキーバリュー書き込み要求、指定のキーに対応付けられたデータの検索を要求する検索要求、検索結果を絞り込むための集合演算条件などを受け付ける。キーバリュー書き込み要求は、書き込みの実行を要求する情報と、キーとデータの組(キ―バリューのセット)とを含んで構成され、検索要求は、検索の実行を要求する情報と、ホスト装置200により指定されたキーとを含んで構成される。
次に、第2書き込み制御部212の機能を説明する。受付部211でキーバリュー書き込み要求を受け付けた場合、第2書き込み制御部212は、キーバリュー書き込み要求に含まれるキーを、ハッシュ化して、固定長のデータから構成されるキーアドレスに変換する。そして、書き込み制御部212は、キーバリュー書き込み要求に含まれるデータ(以下、「書き込み対象バリューデータ」と呼ぶ場合がある)を含む情報を、第1記憶部120に書き込む制御(以下、「第2書き込み制御」と呼ぶ場合がある)を行う。後述するように、第2書き込み制御の対象となる情報には、所定の冗長情報のほか、書き込み対象バリューデータに付加されたキーアドレスが含まれる場合もある。第2実施形態では、第2書き込み制御部212は、書き込みの実行を命令する書き込みコマンドを生成し、生成した書き込みコマンドに対して、書き込み対象バリューデータを含む情報(第2書き込み制御の対象となる情報)と、第1記憶部120のうち、書き込み対象バリューデータが書き込まれる領域を示す物理アドレスとを付加してメモリコントローラ250へ伝達する。
ここで、第2書き込み制御部212は、書き込み対象バリューデータのサイズが閾値未満の場合は、第2記憶部220に記憶されたキーアドレス(ホスト装置200から指定されたキーに関連するデータの検索に用いられたキーアドレス)を書き込み対象バリューデータに付加して、第1記憶部120に書き込む制御を行う。第2実施形態では、第2書き込み制御部102は、書き込み対象バリューデータのページ充当率が50%未満の場合は、ページの冗長部以外の領域に空き領域が発生しないよう、第2記憶部220に記憶されたキーアドレスを書き込み対象バリューデータに付加するとともに、少なくとも、書き込み対象バリューデータの長さを特定可能な情報を示すオフセットを冗長部に追記して、第1記憶部120に書き込む制御を行う。この場合、第2書き込み制御の対象となる情報は、サイズが閾値未満の書き込み対象バリューデータと、その書き込み対象バリューデータに付加されたキーアドレスと、冗長部に記載された冗長情報(少なくともオフセットを含む)とを含んで構成される。
さらに、第2書き込み制御部212は、第2書き込み制御を行うたびに、ホスト装置200から指定されるキーを変換して得られるキーアドレスと、第1記憶部120内の位置を示す物理アドレスとの対応関係を示すアドレス変換情報(以下、「K2Pテーブル」と呼ぶ場合がある)を更新する制御を行う。より具体的には、第2書き込み制御部212は、第2書き込み制御を行うたびに、ホスト装置200から受け付けたキーバリュー書き込み要求に含まれるキーを変換して得られたキーアドレスと、第1記憶部120のうち書き込み対象バリューデータを書き込む位置を示す物理アドレスとを対応付けて、新たにK2Pテーブルに追加する制御を行う。この例では、K2Pテーブル本体は第1記憶部120に格納されるが、アドレス変換(K2P変換)が行われるときは、第2記憶部220に読み出されて使われる。K2Pテーブルの内容は、第2書き込み制御部212による第2書き込み制御が行われるたびに更新される。
次に、検索制御部213の機能を説明する。受付部211で検索要求を受け付けた場合、検索制御部213は、検索要求に含まれるキーを、ハッシュ化して、固定長のデータから構成されるキーアドレスに変換する。そして、K2Pテーブルを参照して、そのキーアドレスに対応付けられた物理アドレスを特定し(K2P変換を行い)、特定した物理アドレスが示す位置に格納された情報を読み出す制御(以下、「第1の検索制御」と呼ぶ場合がある)を行う。本実施形態では、検索制御部213は、メモリコントローラ250に対して検索の実行を命令する検索コマンドを生成し、その生成した検索コマンドに対して、上述のK2P変換により得た物理アドレスを付加してメモリコントローラ250へ伝達する。そして、検索制御部213は、検索コマンドに対する応答として、メモリコントローラ250が第1記憶部120から読み出した情報を受け取ることができる。
また、例えばホスト装置200から、複数の検索要求とともに集合演算条件を受け付けていた場合、検索制御部213は、検索要求の各々に含まれるキーを変換して得たキーアドレスを用いて第1記憶部120から読み出した情報に含まれるデータの集合に対して、受け付けた集合演算条件に従った集合演算を行い、検索結果を絞り込むこともできる。なお、例えばこの集合演算を行う機能が、デバイスコントローラ210ではなくてメモリコントローラ250に搭載される形態であってもよい。
検索制御部213は、第1の検索制御により読み出された情報の中に、第2書き込み制御部212によってデータに付加されたキーアドレスが含まれていた場合は、K2Pテーブルを参照して、第2書き込み制御部212によってデータに付加されたキーアドレスに対応する物理アドレスを特定する。本実施形態では、検索制御部213は、第1の検索制御により読み出された情報に含まれるオフセットを参照して、データ長が閾値未満であると判断した場合、その第1の検索制御により読み出された情報のうち、データと冗長部以外の部分から、書き込み時にデータに付加されたキーアドレスを取得する。そして、検索制御部213は、K2Pテーブルを参照して、取得したキーアドレスに対応する物理アドレスを特定する。
検索制御部213は、第1記憶部120のうち、以上のようにして特定した物理アドレスが示す位置に格納された情報を読み出す制御(以下、「第2の検索制御」と呼ぶ場合がある)を行う。本実施形態では、検索制御部213は、メモリコントローラ250に対して検索の実行を命令する検索コマンドを生成し、生成した検索コマンドに対して、以上のようにして特定した物理アドレスを付加してメモリコントローラ250へ伝達する。検索制御部213は、検索コマンドに対する応答として、メモリコントローラ250が第1記憶部120から読み出した情報を受け取ることができる。そして、検索制御部213は、以上の第2の検索制御により読み出した情報に含まれるデータとキーアドレスとを対応付けて第2記憶部220に記憶させる制御を行う。
したがって、第2の検索制御が行われるたびに、第2記憶部220には、第2の検索制御に用いられたキーアドレスと、データとが対応付けられた検索キャッシュデータが記憶されていく。
検索制御部213は、受付部211で受け付けた検索要求に含まれるキーを変換して得たキーアドレスと一致するキーアドレスを含む検索キャッシュデータが第2記憶部220に存在する場合は、検索要求に含まれるキーを変換して得たキーアドレスを含む検索キャッシュデータに含まれるデータを読み出す制御を行う。この場合、検索制御部213は、第1記憶部120からデータを読み出す制御を行う必要が無いので、読み出し速度の向上が図られる。
また、検索制御部213は、第1の検索制御を行うたびに、少なくとも、その第1の検索制御に用いたキーアドレスを第2記憶部220に記憶させる制御を行う。
さらに、検索制御部213は、第1の検索制御または第2の検索制御に用いたキーアドレスを第2記憶部220に記憶させる場合、第1記憶部120からの情報の読み出しが行われた時間(時刻)を示す時間情報を対応付けて記憶させる。したがって、第2記憶部220は、第1の検索制御または第2の検索制御に用いられたキーアドレスごとに、読み出しが行われた時間を示す時間情報を対応付けて記憶する。第2記憶部220のより詳細な内容については後述する。
ここで、前述の書き込み制御部212は、書き込み対象バリューデータのサイズが閾値未満の場合は、第2記憶部220に記憶されたキーアドレスの中から、書き込み対象バリューデータの書き込みが要求されたときよりも前の所定期間内における検索に用いられたキーアドレスを選択して書き込み対象バリューデータに付加する。
さらに詳述すれば、以下のとおりである。図10は、第2記憶部220の構成例を示す図であり、検索機能に関する部分のみを例示している。図10に示すように、第2記憶部220は、第5記憶部230と第6記憶部240とを備える。第5記憶部230は、第1の検索制御に用いられたキーアドレスごとに、第1の検索制御による読み出しが行われた時間を示す時間情報を対応付けて記憶する。第6記憶部240は、第2の検索制御に用いられたキーアドレスごとに、第2の検索制御により読み出されたデータと、第2の検索制御による読み出しが行われた時間を示す時間情報とを対応付けて記憶する。そして、書き込み制御部212は、書き込み対象バリューデータのサイズが閾値未満の場合は、第5記憶部230および第6記憶部240の各々に記憶されたキーアドレスの中から、所定期間内に含まれる時間を示す時間情報に対応するキーアドレスを選択してデータに付加する。なお、これに限らず、例えば先読みの検索キャッシュデータに含まれるキーアドレス(第6記憶部240に記憶されたキーアドレス)は、閾値未満のサイズの書き込み対象バリューデータに付加されない形態であってもよい。
次に、図11を参照しながら、第2書き込み制御部212による制御の一例を説明する。図11は、第2書き込み制御部212による制御の一例を示すフローチャートである。この例では、ホスト装置200からのキーバリュー書き込み要求を受付部211で受け付けたことを前提として説明する。図11に示すように、第2書き込み制御部212は、受付部211で受け付けたキーバリュー書き込み要求に含まれるデータ(書き込み対象バリューデータ)のサイズが閾値未満であるか否かを確認する(ステップS30)。この例では、第2書き込み込み制御部212は、書き込み対象バリューデータのページ充当率が50%未満であるか否かを確認する。書き込み対象バリューデータのサイズが閾値以上であると判断した場合(ステップS30:NO)、処理は、後述のステップS35に移行する。
上述のステップS30において、書き込み対象バリューデータのサイズが閾値未満であると判断した場合(ステップS30:YES)、第2書き込み制御部212は、空き領域のサイズを算出する(ステップS31)。次に、第2書き込み制御部212は、算出した空き領域のサイズが閾値以上であるか否かを確認する(ステップS32)。この閾値は、空き領域のサイズが、少なくとも1つのキーアドレスのサイズ以上であるか否かを判定可能な値に設定される。算出した空き領域のサイズが閾値未満であると判断した場合(ステップS32:NO)、処理は、後述のステップS35に移行する。
一方、算出した空き領域のサイズが閾値以上であると判断した場合(ステップS32:YES)、第2書き込み制御部212は、第2記憶部220に記憶されたキーアドレスの中から、所定期間内に含まれる時間を示す時間情報に対応するキーアドレスを取得(選択)する(ステップS33)。
次に、第2書き込み制御部212は、ステップS33で選択した1以上のキーアドレスを、書き込み対象バリューデータに付加する(ステップS34)。次に、第2書き込み制御部212は、受付部211で受け付けたキーバリュー書き込み要求に含まれるキーを変換して得たキーアドレスと、書き込み対象バリューデータのデータ長を特定可能なオフセットとを冗長部に追記する(ステップS35)。次に、第2書き込み制御部212は、メモリコントローラ250に対する書き込みの実行を命令する書き込みコマンドを生成し、生成した書き込みコマンドに対して、第2書き込み制御の対象となる情報と、第1記憶部120のうち書き込み対象バリューデータを書き込む位置を示す物理アドレスとを付加してメモリコントローラ250へ送信する(ステップS36)。そして、第2書き込み制御部212からの書き込みコマンドを受信したメモリコントローラ250は、受信した書き込みコマンドに従って、第1記憶部120に対する情報の書き込みを行う。
次に、第2書き込み制御部212は、K2Pテーブルを更新する(ステップS37)。上述したように、第2実施形態では、第2書き込み制御部212は、受付部211で受け付けたキーバリュー書き込み要求に含まれるキーを変換して得たキーアドレスと、第1記憶部120のうち書き込み対象バリューデータを書き込む位置を示す物理アドレスとを対応付けて、新たにK2Pテーブルに追加する制御を行う。
次に、図12を参照しながら、検索制御部213による制御の一例を説明する。図12は、検索制御部213による制御の一例を示すフローチャートである。この例では、ホスト装置200から、複数の検索要求とともに、検索結果を絞り込むための集合演算条件を受け付けたことを前提として説明する。図12に示すように、まず、検索制御部213は、検索要求に含まれるキーを変換して得たキーアドレスを含む検索キャッシュデータが第2記憶部220(第6記憶部240)に記憶されているか否かを確認する(ステップS40)。
上述のステップS40において、検索要求に含まれるキーを変換して得たキーアドレスを含む検索キャッシュデータが第2記憶部220に記憶されていると判断した場合(ステップS40:YES)、検索制御部213は、その検索キャッシュデータに含まれるデータを第2記憶部220から読み出す。ここで、受付部211で集合演算条件を受け付けていない場合(つまり、単発の検索要求の場合)、検索制御部213は、第2記憶部220から読み出したデータを、検索要求に対する応答としてホスト装置200へ送信して処理を終了する。ただし、この例では、複数の検索要求とともに集合演算条件を受付部211で受け付けていることを前提とするので、処理は、後述のステップS45に移行する。
一方、上述のステップS40において、検索要求に含まれるキーを変換して得たキーアドレスを含む検索キャッシュデータが第2記憶部220に記憶されていないと判断した場合(ステップS40:NO)、処理は、ステップS41に移行する。ステップS41において、検索制御部213は、K2Pテーブルを参照して、検索要求に含まれるキーを変換して得たキーアドレスに対応する物理アドレスを特定する(ステップS41)。次に、検索制御部213は、メモリコントローラ250に対して検索の実行を命令する検索コマンドを生成し、生成した検索コマンドに対して、ステップS41で特定した物理アドレスを付加してメモリコントローラ250へ送信する(ステップS42)。検索コマンドを受信したメモリコントローラ250は、受信した検索コマンドに従って、第1記憶部120から情報を読み出し、読み出した情報を検索制御部213へ送信する。つまり、検索制御部213は、検索コマンドに対する応答として、メモリコントローラ250により読み出された情報を受信する(ステップS43)。
以上のステップS41〜ステップS43の内容が、第1の検索制御に相当する。次に、検索制御部213は、第1の検索制御により読み出した情報に含まれるオフセットを参照して、データ長が閾値未満であるか否かを確認する(ステップS44)。仮に、受付部211で集合演算条件を受け付けていなければ(単発の検索要求であれば)、検索制御部213は、データ長が閾値以上であると判断した場合(ステップS44:NO)、第1の検索制御により読み出した情報に含まれるデータを、検索要求に対する応答としてホスト装置200へ送信して処理を終了する。ただし、この例では、複数の検索要求とともに集合演算条件を受付部211で受け付けていることを前提とするので、処理は、ステップS45に移行する。ステップS45において、検索制御部213は、複数の検索要求の各々に含まれるキーを変換して得たキーアドレスを用いて読み出された情報に含まれるデータの集合に対して、受け付けた集合演算条件に従った集合演算を行い、検索結果を絞り込む。そして、集合演算によって絞り込まれた検索結果を、検索要求に対する応答としてホスト装置200へ送信し(ステップS46)、処理を終了する。
一方、上述のステップS44において、データ長が閾値未満であると判断した場合(ステップS44:YES)、検索制御部213は、第1の検索制御により読み出した情報のうち、データと冗長部以外の部分から、書き込み時にデータに付加されたキーアドレスを取得する(ステップS47)。また、本実施形態では、ステップS47の処理と並行して、検索制御部213は、第1の検索制御により読み出した情報に含まれる、閾値未満のサイズのデータを用いて、上述のステップS45の処理(集合演算処理)を行うこともできる。なお、例えば受付部211で集合演算条件を受け付けていなければ(単発の検索要求であれば)、検索制御部213は、第1の検索制御により読み出した情報に含まれる、閾値未満のサイズのデータを、検索要求に対する応答としてホスト装置200へ送信して処理を終了する。
次に、検索制御部213は、K2Pテーブルを参照して、ステップS47で取得した1以上のキーアドレスごとに、キーアドレスに対応する物理アドレスを特定する(ステップS48)。次に、検索制御部213は、メモリコントローラ250に対して検索の実行を命令する検索コマンドを生成し、生成した検索コマンドに対して、ステップS48で特定した物理アドレスを付加してメモリコントローラ250へ送信する(ステップS49)。検索コマンドを受信したメモリコントローラ250は、受信した検索コマンドに従って、第1記憶部120から情報を読み出し、読み出した情報を検索制御部213へ送信する。つまり、検索制御部213は、検索コマンドに対する応答として、メモリコントローラ250により読み出された情報を受信する(ステップS50)。
以上のステップS47〜ステップS50の内容が、第2の検索制御に相当する。ステップS50の後、検索制御部213は、メモリコントローラ250から受信した情報(第2の検索制御により読み出した情報)に含まれるデータと、キーアドレスとを対応付けて第2記憶部220(第6記憶部240)に記憶させる制御を行う(ステップS51)。これにより、第6記憶部240には、先読みの検索キャッシュデータが新たに追加されることになる。
以上、本発明の実施形態を説明したが、上述の各実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。なお、上述の各実施形態および変形例は任意に組み合わせることもできる。
また、上述の各実施形態のデバイスコントローラ(112、210)が実行するプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するようにしてもよい。また、上述の各実施形態のデバイスコントローラ(112、210)が実行するプログラムを、インターネット等のネットワーク経由で提供または配布するようにしてもよい。また、各実施形態のデバイスコントローラ(112、210)が実行するプログラムを、ROM等の不揮発性の記録媒体に予め組み込んで提供するようにしてもよい。
100 デバイス
101 受付部
102 書き込み制御部
103 読み出し制御部
104 コマンド受信部
105 訂正部
106 書き込み部
107 読み出し部
110 コントローラチップ
111 ホストインタフェース部
112 デバイスコントローラ
113 第2記憶部
114 メモリコントローラ
120 第1記憶部
130 第3記憶部
140 第4記憶部
150 バッファメモリ
200 ホスト装置
210 デバイスコントローラ
211 受付部
212 第2書き込み制御部
213 検索制御部
220 第2記憶部
230 第5記憶部
240 第6記憶部
250 メモリコントローラ
300 外部バス

Claims (11)

  1. ホスト装置から供給されるデータを記憶する第1記憶部と、
    前記第1記憶部からの前記データの読み出しに用いられた論理アドレスを記憶する第2記憶部と、
    前記ホスト装置から前記第1記憶部に対する書き込みが要求された前記データのサイズが閾値未満の場合は、前記第2記憶部に記憶された前記論理アドレスを前記データに付加して、前記第1記憶部に書き込む制御を行う書き込み制御部と、を備える、
    半導体記憶装置。
  2. 前記ホスト装置からの、前記第1記憶部に対する前記データの読み出しを要求する読み出し要求を受け付ける受付部と、
    前記受付部で前記読み出し要求を受け付けた場合、前記第1記憶部内の位置を示す物理アドレスと、前記論理アドレスとの対応関係を示す論物変換情報を参照して、前記読み出し要求に含まれる前記論理アドレスに対応する前記物理アドレスを特定し、特定した前記物理アドレスが示す位置に格納された、前記データを含む情報を読み出す第1の読み出し制御を行う読み出し制御部と、を備える、
    請求項1に記載の半導体記憶装置。
  3. 前記読み出し制御部は、前記第1の読み出し制御により読み出した前記情報の中に、前記書き込み制御部によって前記データに付加された前記論理アドレスが含まれていた場合は、前記データに付加された前記論理アドレスに対応する前記物理アドレスが示す位置に格納された前記情報を読み出す第2の読み出し制御を行い、前記第2の読み出し制御により読み出した前記情報に含まれる前記データと、前記論理アドレスとを対応付けて前記第2記憶部に記憶させる制御を行う、
    請求項2に記載の半導体記憶装置。
  4. 前記読み出し制御部は、前記受付部で受け付けた前記読み出し要求に含まれる前記論理アドレスと一致する前記論理アドレスと、前記データとが対応付けられて前記第2記憶部に記憶されている場合は、前記読み出し要求に含まれる前記論理アドレスと一致する前記論理アドレスに対応付けられた前記データを前記第2記憶部から読み出す第3の読み出し制御を行う、
    請求項3に記載の半導体記憶装置。
  5. 前記読み出し制御部は、前記第1の読み出し制御を行うたびに、少なくとも、前記第1の読み出し制御に用いた前記論理アドレスを前記第2記憶部に記憶させる制御を行う、
    請求項2ないし請求項4に記載の半導体記憶装置。
  6. 前記書き込み制御部は、書き込みが要求された前記データのサイズが前記閾値未満の場合は、前記第2記憶部に記憶された前記論理アドレスの中から、前記書き込みが要求されたときよりも前の所定期間内における読み出しに用いられた前記論理アドレスを選択して前記データに付加する、
    請求項5に記載の半導体記憶装置。
  7. 前記第2記憶部は、前記論理アドレスごとに、前記第1記憶部からの前記情報の読み出しが行われた時間を示す時間情報を対応付けて記憶し、
    前記書き込み制御部は、書き込みが要求された前記データのサイズが前記閾値未満の場合は、前記第2記憶部に記憶された前記論理アドレスの中から、前記所定期間内に含まれる時間を示す前記時間情報に対応する前記論理アドレスを選択して前記データに付加する、
    請求項6に記載の半導体記憶装置。
  8. 前記第2記憶部は、
    前記第1の読み出し制御に用いられた前記論理アドレスと、前記第1の読み出し制御による読み出しが行われた時間を示す前記時間情報とを対応付けて記憶する第3記憶部と、
    前記第2の読み出し制御に用いられた前記論理アドレスと、前記第2の読み出し制御により読み出された前記データと、前記第2の読み出し制御による読み出しが行われた時間を示す前記時間情報とを対応付けて記憶する第4記憶部と、を有し、
    前記書き込み制御部は、書き込みが要求された前記データのサイズが前記閾値未満の場合は、前記第3記憶部および前記第4記憶部に記憶された前記論理アドレスの中から、前記所定期間内に含まれる時間を示す前記時間情報に対応する前記論理アドレスを選択して前記データに付加する、
    請求項7に記載の半導体記憶装置。
  9. 前記第2記憶部は、
    前記第1の読み出し制御に用いられた前記論理アドレスと、前記第1の読み出し制御による読み出しが行われた時間を示す前記時間情報とを対応付けて記憶する第3記憶部と、
    前記第2の読み出し制御に用いられた前記論理アドレスと、前記第2の読み出し制御により読み出された前記データとを対応付けて記憶する第4記憶部と、を有し、
    前記書き込み制御部は、書き込みが要求された前記データのサイズが前記閾値未満の場合は、前記第3記憶部に記憶された前記論理アドレスの中から、前記所定期間内に含まれる時間を示す前記時間情報に対応する前記論理アドレスを選択して前記データに付加する、
    請求項7に記載の半導体記憶装置。
  10. 前記第3記憶部は、FIFO方式のメモリである、
    請求項8または請求項9に記載の半導体記憶装置。
  11. ホスト装置から供給されるデータを記憶する第1記憶部と、
    前記第1記憶部に記憶された前記データの中から、前記ホスト装置から指定された、前記データに関連付けられるキーに対応する前記データを検索するのに用いられたキーアドレスを記憶する第2記憶部と、
    前記ホスト装置から前記第1記憶部に対する書き込みが要求された前記データのサイズが閾値未満の場合は、前記第2記憶部に記憶された前記キーアドレスを前記データに付加して、前記第1記憶部に書き込む制御を行う書き込み制御部と、を備える、
    半導体記憶装置。
JP2012284909A 2012-12-27 2012-12-27 半導体記憶装置 Active JP6034183B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012284909A JP6034183B2 (ja) 2012-12-27 2012-12-27 半導体記憶装置
US14/090,597 US9164704B2 (en) 2012-12-27 2013-11-26 Semiconductor storage device for handling write to nonvolatile memories with data smaller than a threshold
US14/851,229 US20160004440A1 (en) 2012-12-27 2015-09-11 Semiconductor storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012284909A JP6034183B2 (ja) 2012-12-27 2012-12-27 半導体記憶装置

Publications (2)

Publication Number Publication Date
JP2014127116A true JP2014127116A (ja) 2014-07-07
JP6034183B2 JP6034183B2 (ja) 2016-11-30

Family

ID=51018622

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012284909A Active JP6034183B2 (ja) 2012-12-27 2012-12-27 半導体記憶装置

Country Status (2)

Country Link
US (2) US9164704B2 (ja)
JP (1) JP6034183B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6034183B2 (ja) * 2012-12-27 2016-11-30 株式会社東芝 半導体記憶装置
US9424201B2 (en) * 2013-03-14 2016-08-23 Nvidia Corporation Migrating pages of different sizes between heterogeneous processors
JP2016092616A (ja) * 2014-11-05 2016-05-23 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、及びプログラム
US9965323B2 (en) 2015-03-11 2018-05-08 Western Digital Technologies, Inc. Task queues
US10503653B2 (en) * 2015-09-11 2019-12-10 Toshiba Memory Corporation Memory system
KR20180031412A (ko) 2016-09-20 2018-03-28 삼성전자주식회사 메모리 컨트롤러의 동작 방법과, 이를 포함하는 장치들의 동작 방법들
CN108228104B (zh) * 2017-12-29 2021-04-20 深圳忆联信息系统有限公司 数据传输方法及固态硬盘控制器
US11455402B2 (en) * 2019-01-30 2022-09-27 Seagate Technology Llc Non-volatile memory with precise write-once protection
JP2023044168A (ja) * 2021-09-17 2023-03-30 キオクシア株式会社 メモリコントローラ、メモリシステム、及び情報処理システム
CN117785018A (zh) * 2022-09-22 2024-03-29 超聚变数字技术有限公司 键值存储方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001249771A (ja) * 2000-03-07 2001-09-14 Hitachi Ltd 記憶装置
JP2003337722A (ja) * 2002-03-13 2003-11-28 Hitachi Ltd 計算機システム
JP2005115910A (ja) * 2003-10-08 2005-04-28 Samsung Electronics Co Ltd シリアルフラッシュメモリにおけるxipのための優先順位に基づくフラッシュメモリ制御装置及びこれを用いたメモリ管理方法、これによるフラッシュメモリチップ
JP2008112285A (ja) * 2006-10-30 2008-05-15 Toshiba Corp 不揮発性メモリシステム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4672742B2 (ja) 2008-02-27 2011-04-20 株式会社東芝 メモリコントローラおよびメモリシステム
JP5066199B2 (ja) * 2010-02-12 2012-11-07 株式会社東芝 半導体記憶装置
JP5388976B2 (ja) * 2010-09-22 2014-01-15 株式会社東芝 半導体記憶制御装置
JP5674634B2 (ja) * 2011-12-28 2015-02-25 株式会社東芝 コントローラ、記憶装置およびプログラム
TWI475385B (zh) * 2012-03-14 2015-03-01 Phison Electronics Corp 程式化記憶胞與資料讀取方法、記憶體控制器與儲存裝置
JP5983019B2 (ja) * 2012-05-17 2016-08-31 ソニー株式会社 制御装置、記憶装置、記憶制御方法
JP6034183B2 (ja) * 2012-12-27 2016-11-30 株式会社東芝 半導体記憶装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001249771A (ja) * 2000-03-07 2001-09-14 Hitachi Ltd 記憶装置
JP2003337722A (ja) * 2002-03-13 2003-11-28 Hitachi Ltd 計算機システム
JP2005115910A (ja) * 2003-10-08 2005-04-28 Samsung Electronics Co Ltd シリアルフラッシュメモリにおけるxipのための優先順位に基づくフラッシュメモリ制御装置及びこれを用いたメモリ管理方法、これによるフラッシュメモリチップ
JP2008112285A (ja) * 2006-10-30 2008-05-15 Toshiba Corp 不揮発性メモリシステム

Also Published As

Publication number Publication date
US20140189217A1 (en) 2014-07-03
JP6034183B2 (ja) 2016-11-30
US9164704B2 (en) 2015-10-20
US20160004440A1 (en) 2016-01-07

Similar Documents

Publication Publication Date Title
JP6034183B2 (ja) 半導体記憶装置
US10229051B2 (en) Storage device including nonvolatile memory device and controller, operating method of storage device, and method for accessing storage device
JP5405513B2 (ja) メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法、及びプログラム
JP5597666B2 (ja) 半導体記憶装置、情報処理システムおよび制御方法
JP5631938B2 (ja) 半導体記憶装置
US20130151759A1 (en) Storage device and operating method eliminating duplicate data storage
JP5983019B2 (ja) 制御装置、記憶装置、記憶制御方法
EP3338193B1 (en) Convertible leaf memory mapping
US11204864B2 (en) Data storage devices and data processing methods for improving the accessing performance of the data storage devices
KR20200100955A (ko) 메모리 시스템의 맵 데이터 관리 방법 및 장치
CN109725850B (zh) 存储器系统和存储设备
US20140219041A1 (en) Storage device and data processing method thereof
US10235284B2 (en) Memory system
US11176033B2 (en) Data storage devices and data processing methods
KR101369408B1 (ko) 스토리지 시스템 및 이의 데이터 전송 방법
JP2015053075A (ja) メモリシステム、情報処理装置および記憶装置
KR100977709B1 (ko) 플래시메모리 저장장치 및 그에 따른 관리 방법
JP2014063540A (ja) key−valueストア方式を有するメモリシステム
EP2381354A2 (en) Data recording device
CN110096452B (zh) 非易失随机访问存储器及其提供方法
JP5649709B2 (ja) メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法およびプログラム
US9146858B2 (en) Control device, storage device, and storage control method
JP2015028815A (ja) key−valueストア方式を有するメモリシステム
TW201624491A (zh) 資訊處理裝置及非暫態電腦可讀取記錄媒體
JP2012037971A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150915

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20151102

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160728

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160809

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160906

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: 20160927

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161027

R151 Written notification of patent or utility model registration

Ref document number: 6034183

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350