JP5995071B2 - メモリコントローラ,データ記憶装置およびメモリの制御方法 - Google Patents

メモリコントローラ,データ記憶装置およびメモリの制御方法 Download PDF

Info

Publication number
JP5995071B2
JP5995071B2 JP2012205664A JP2012205664A JP5995071B2 JP 5995071 B2 JP5995071 B2 JP 5995071B2 JP 2012205664 A JP2012205664 A JP 2012205664A JP 2012205664 A JP2012205664 A JP 2012205664A JP 5995071 B2 JP5995071 B2 JP 5995071B2
Authority
JP
Japan
Prior art keywords
memory
data
write
written
stored
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
JP2012205664A
Other languages
English (en)
Other versions
JP2014059820A (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.)
Chuo University
Original Assignee
Chuo University
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 Chuo University filed Critical Chuo University
Priority to JP2012205664A priority Critical patent/JP5995071B2/ja
Priority to US14/429,049 priority patent/US9753652B2/en
Priority to KR1020157006958A priority patent/KR101687502B1/ko
Priority to CN201380060156.2A priority patent/CN104798055B/zh
Priority to PCT/JP2013/004923 priority patent/WO2014045516A1/ja
Publication of JP2014059820A publication Critical patent/JP2014059820A/ja
Application granted granted Critical
Publication of JP5995071B2 publication Critical patent/JP5995071B2/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
    • 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
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • 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/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Description

本発明は、メモリコントローラ,データ記憶装置およびメモリの制御方法に関し、詳しくは、複数のセクタからなるページ単位でデータが読み出され該読み出されたデータのうち書き込みデータに対応するセクタが前記書き込みデータで上書きされた後に前記ページ単位でデータが書き込まれる書き込み動作によりデータが書き込まれる不揮発性メモリとして構成された第1メモリと、前記第1メモリより高速にデータの書き込みが可能な不揮発性ランダムアクセスメモリとして構成された第2メモリと、を制御するメモリコントローラ,こうしたメモリコントローラを備えるデータ記憶装置およびこうした第1メモリと第2メモリとを制御するメモリの制御方法に関する。
従来、この種のメモリコントローラとしては、キャッシュメモリとして電力の供給が遮断されても記憶しているデータを保持する不揮発性のランダムアクセスメモリでありキャッシュメモリとして機能するFeRAM(Ferroelectric Random Access Memory、強誘電体ランダムアクセスメモリ)またはHDDにPCシステムからのデータが記憶されるようFeRAMやHDDを制御するものが提案されている(例えば、非特許文献1参照)。このコントローラでは、予期しない電源の遮断に備えてFeRAMのデータをHDDに定期的に退避させる必要がないため、FeRAMに記憶させるデータのデータ量を比較的大きくすることができ、キャッシュヒット率の向上を図ることができるとしている。
Daisaburo Takashima et al,「A 128Mb ChainFeRAMTM and System Designs for HDD Application and Enhanced HDD Performance」,IEEE Asian Solid-State Circuits Conference, November 16-18, 2009,Taipei,Taiwan
ところで、ホスト装置からのデータを記憶するSSD(Solid State Drive)として、複数のセクタからなるページ毎に記憶されているデータを一旦読み出して読み出したデータをセクタ単位で書き換えた後にページ単位でデータを書き込む書き込み動作によりデータが書き込まれるNAND型フラッシュメモリなどの不揮発性メモリと、この不揮発性メモリより高速にデータを読み書き可能なReRAM(Resistance Random Access Memory、抵抗変化型メモリ)などの不揮発性ランダムアクセスメモリと、不揮発性メモリと不揮発性ランダムアクセスメモリとを制御するメモリコントローラとが搭載されたものが提案されている。こうしたSSDでは、不揮発性メモリに対して頻繁に書き込み動作を実行すると不揮発性メモリが劣化するため、不揮発性メモリの劣化を抑制することが重要な課題として認識されている。また、こうしたSSDでは、高速にデータを書き込むことも重要な課題として認識されている。したがって、SSDでは、不揮発性メモリの劣化を抑制しつつより高速にデータを書き込むことが望ましい。
本発明のメモリコントローラ,データ記憶装置およびメモリの制御方法は、不揮発性メモリの劣化を抑制すると共により高速にデータを書き込むことを主目的とする。
本発明のメモリコントローラ,データ記憶装置およびメモリの制御方法は、上述の主目的を達成するために以下の手段を採った。
本発明のメモリコントローラは、
複数のセクタからなるページ単位でデータが読み出され該読み出されたデータのうち書き込みデータに対応するセクタが前記書き込みデータで上書きされた後に前記ページ単位でデータが書き込まれる書き込み動作によりデータが書き込まれる不揮発性メモリとして構成された第1メモリと、前記第1メモリより高速にデータの書き込みが可能な不揮発性ランダムアクセスメモリとして構成された第2メモリと、を制御するメモリコントローラであって、
書き込みデータと該書き込みデータの書き込みを要求する書き込み要求信号とが入力されたとき、前記書き込みデータを前記第1メモリに書き込むと所定サイズの記憶領域のうち前記書き込みデータの記憶に利用されるセクタのサイズの割合であるデータ利用率が第1比率以上となるときには前記入力された書き込みデータが前記書き込み動作により前記第1メモリに書き込まれるよう前記第1メモリと前記第2メモリとを制御し、前記データ利用率が前記第1比率未満となるときには前記入力された書き込みデータが前記第2メモリに記憶されるよう前記第1メモリと前記第2メモリとを制御する書き込み制御部と、
前記第2メモリの空き容量が所定容量未満となったとき、前記第2メモリに記憶されているデータが書き込み頻度が低い低頻度書き込みデータであるときには前記低頻度書き込みデータが前記第2メモリから読み出されて前記書き込み動作により前記第1メモリに書き込まれるよう前記第1メモリと前記第2メモリとを制御するデータ移動制御を実行するデータ移動制御部と、
を備えることを要旨とする。
この本発明のメモリコントローラでは、書き込みデータと該書き込みデータの書き込みを要求する書き込み要求信号とが入力されたとき、書き込みデータを第1メモリに書き込むと所定サイズの記憶領域のうち書き込みデータの記憶に利用されるセクタのサイズの割合であるデータ利用率が第1比率以上となるときには入力された書き込みデータが書き込み動作により第1メモリに書き込まれるよう第1メモリと第2メモリとを制御し、データ利用率が第1比率未満となるときには入力された書き込みデータが第2メモリに記憶されるよう第1メモリと第2メモリとを制御する。第1メモリのデータの書き込み動作では、複数のセクタからなるページ単位でデータが読み出され、読み出されたデータのうち書き込みデータに対応するセクタが書き込みデータで上書きされた後にページ単位でデータが書き込まれるため、データの記憶に利用されていないセクタについても読み出しや書き込みが行なわれる。不揮発性メモリでは書き込み動作を実行すると劣化するため、こうしたデータの記憶に利用されていないセクタについては書き込みが抑制されることが望ましいが、データ利用率が第1比率未満となるときには入力された書き込みデータが第2メモリに記憶されるよう第1メモリと第2メモリとを制御することにより、第1メモリにおけるデータ利用率を第1比率以上にすることができ、データの記憶に利用されていない第1メモリの記憶領域への読み出しや書き込みが抑制される。これにより、第1メモリの劣化を抑制することができる。こうして第2メモリにデータを書き込まれると、第2メモリの空き容量が低下していく。第2メモリは第1メモリより高速にデータの書き込みが可能であるため、第2メモリの空き容量が無くなりデータを第2メモリに書き込みことができなくなるため、データの書き込み速度が低下すると考えられる。また、第2メモリに書き込み頻度が低い低頻度書き込みデータが多いと、さらに、データの書き込み速度が低下すると考えられる。したがって、第2メモリの空き容量が所定容量未満となったとき、第2メモリに記憶されているデータが書き込み頻度が低い低頻度書き込みデータであるときには低頻度書き込みデータが前記第2メモリから読み出されて書き込み動作により第1メモリに書き込まれるよう第1メモリと第2メモリとを制御することにより、第2メモリの空き容量が所定容量未満になることが抑制され、より高速にデータを書き込むことができる。これにより、不揮発性メモリの劣化を抑制すると共により高速にデータを書き込むことができる。ここで、「所定サイズ」には、ページのサイズとして予め定められたサイズや複数ページのサイズ、書き込みデータの論理アドレスに対応するページにおける1セクタのサイズより大きいサイズなどが含まれる。また、「第1メモリ」には、NAND型フラッシュメモリが含まれ、「第2メモリ」には、抵抗変化型メモリが含まれる。
こうした本発明のメモリコントローラにおいて、データ移動制御部は、前記第2メモリの空き容量が所定容量未満となったとき、前記第2メモリに記憶されているデータが前記低頻度書き込みデータであり且つ前記第1メモリに前記低頻度書き込みデータの記憶に利用されるセクタを含む前記所定サイズのデータを書き込むと該所定サイズのデータにおける前記データ利用率が前記第1比率より低い第2比率以上となるときには、前記データ移動制御を実行するものとすることもできる。こうすれば、データ利用率が第2比率未満のデータが第1メモリに記憶されることを抑制することができ、第1メモリの劣化を抑制することができる。
第1メモリに低頻度書き込みデータの記憶に利用されるセクタを含む前記所定サイズのデータを書き込むと所定サイズのデータにおけるデータ利用率が第1比率より低い第2比率以上となるときにデータ移動制御を実行する態様の本発明のメモリコントローラにおいて、データが含まれるページを示すページアドレスと該ページ内のデータの記憶に利用されているセクタを示すセクタアドレスとからなる論理アドレスを用いて前記第1メモリおよび前記第2メモリを管理するアドレス管理部と、前記データ利用率が前記第1比率以上となったときの書き込みデータの論理アドレスを記憶する高利用率アドレス情報記憶部と、を備え、前記データ移動制御部は、前記入力された書き込みデータの論理アドレスが前記高利用率アドレス情報記憶部に所定個数未満記憶されているときに前記入力された書き込みデータが低頻度書き込みデータであると判定するものとすることもできる。
また、第1メモリに低頻度書き込みデータの記憶に利用されるセクタを含む前記所定サイズのデータを書き込むと所定サイズのデータにおけるデータ利用率が第1比率より低い第2比率以上となるときにデータ移動制御を実行する態様の本発明のメモリコントローラにおいて、前記第2メモリの空き容量が所定容量未満となったとき、前記第2メモリに記憶されているデータが前記低頻度書き込みデータであり且つ前記低頻度書き込みデータを前記第1メモリに書き込むと前記データ利用率が前記第2比率以上となるときには、前記低頻度書き込みデータを含むページのページアドレスを記憶するページアドレス記憶部を備え、前記データ移動制御部は、前記第2メモリの空き容量が前記所定容量未満となったとき、前記第2メモリに記憶されているデータが前記低頻度書き込みデータであり且つ前記低頻度書き込みデータを前記第1メモリに書き込むと前記データ利用率が前記第2比率以上となり且つ前記ページアドレス記憶部に記憶されているページアドレスの数が所定個数以上であるときに、前記ページアドレス記憶部に記憶されているページアドレスに対応する第2メモリのデータについて前記データ移動制御を実行するものとすることもできる。こうすれば、頻繁に第2メモリに記憶されているデータが読み出されて第1メモリに書き込まれることを抑制することができる。この場合において、前記データ移動制御部は、前記第2メモリの空き容量が前記所定容量未満となって、前記所定個数より多い複数のページについて、前記第2メモリに記憶されているデータが前記低頻度書き込みデータであるか否かと前記低頻度書き込みデータを前記第1メモリに書き込むと前記データ利用率が前記第2比率以上となるか否かを判定したとき、前記ページアドレス記憶部に記憶されているページアドレスの数が前記所定個数未満であるときには前記第2比率を減少させ、前記ページアドレス記憶部に記憶されているページアドレスの数が前記所定個数であるときには前記第2比率の値を変更せずに維持し、前記ページアドレス記憶部に記憶されているページアドレスの数が前記所定個数を超えたときには前記第2比率を増加させるものとすることもできる。
さらに、第1メモリに低頻度書き込みデータの記憶に利用されるセクタを含む前記所定サイズのデータを書き込むと所定サイズのデータにおけるデータ利用率が第1比率より低い第2比率以上となるときにデータ移動制御を実行する態様の本発明のメモリコントローラにおいて、前記書き込み制御部および前記データ移動制御部は、前記各セクタがデータを記憶しているか否かの情報である利用セクタ情報と入力された書き込みデータを記憶する際に利用するセクタとに基づいて前記データ利用率を演算するものとすることもできる。
また、本発明のメモリコントローラにおいて、前記制御部は、前記入力された書き込みデータを前記第2メモリに記憶させるとき、前記入力された書き込みデータの論理アドレスに対応するデータが既に第1メモリの記憶領域に記憶されているときには、前記第1メモリに記憶されているデータをページ単位で読み出して該読み出したデータのセクタのうち書き込みデータで書き込む対象となるセクタを書き換えた後にページ単位で第2メモリに記憶させるものとすることもできる。
さらに、本発明のメモリコントローラにおいて、前記所定サイズの記憶領域は、前記書き込みデータに利用されるセクタを含むページが記憶される領域であるものとすることもできる。
本発明のデータ記憶装置は、上述したいずれかの態様の本発明のメモリコントローラ、即ち、基本的には、複数のセクタからなるページ単位でデータが読み出され該読み出されたデータのうち書き込みデータに対応するセクタが前記書き込みデータで上書きされた後に前記ページ単位でデータが書き込まれる書き込み動作によりデータが書き込まれる不揮発性メモリとして構成された第1メモリと、前記第1メモリより高速にデータの書き込みが可能な不揮発性ランダムアクセスメモリとして構成された第2メモリと、を制御するメモリコントローラであって、書き込みデータと該書き込みデータの書き込みを要求する書き込み要求信号とが入力されたとき、前記書き込みデータを前記第1メモリに書き込むと所定サイズの記憶領域のうち前記書き込みデータの記憶に利用されるセクタのサイズの割合であるデータ利用率が第1比率以上となるときには前記入力された書き込みデータが前記書き込み動作により前記第1メモリに書き込まれるよう前記第1メモリと前記第2メモリとを制御し、前記データ利用率が前記第1比率未満となるときには前記入力された書き込みデータが前記第2メモリに記憶されるよう前記第1メモリと前記第2メモリとを制御する書き込み制御部と、前記第2メモリの空き容量が所定容量未満となったとき、前記第2メモリに記憶されているデータが書き込み頻度が低い低頻度書き込みデータであるときには前記低頻度書き込みデータが前記第2メモリから読み出されて前記書き込み動作により前記第1メモリに書き込まれるよう前記第1メモリと前記第2メモリとを制御するデータ移動制御を実行するデータ移動制御部と、を備えるメモリコントローラと、
前記第1メモリと、
前記第2メモリと、
を備えることを要旨とする。
この本発明のデータ記憶装置では、上述したいずれかの態様の本発明のメモリコントローラを備えているから、本発明のメモリコントローラが奏する効果、例えば、不揮発性メモリの劣化を抑制すると共により高速にデータを書き込むことができる効果などと同様の効果を奏する。
本発明のメモリの制御方法は、
複数のセクタからなるページ単位でデータが読み出され該読み出されたデータのうち書き込みデータに対応するセクタが前記書き込みデータで上書きされた後に前記ページ単位でデータが書き込まれる書き込み動作によりデータが書き込まれる不揮発性メモリとして構成された第1メモリと、前記第1メモリより高速にデータの書き込みが可能な不揮発性ランダムアクセスメモリとして構成された第2メモリと、を制御するメモリの制御方法であって、
書き込みデータと該書き込みデータの書き込みを要求する書き込み要求信号とが入力されたとき、前記書き込みデータを前記第1メモリに書き込むと所定サイズの記憶領域のうち前記書き込みデータの記憶に利用されるセクタのサイズの割合であるデータ利用率が第1比率以上となるときには前記入力された書き込みデータが前記書き込み動作により前記第1メモリに書き込まれるよう前記第1メモリと前記第2メモリとを制御し、前記データ利用率が前記第1比率未満となるときには前記入力された書き込みデータが前記第2メモリに記憶されるよう前記第1メモリと前記第2メモリとを制御し、
前記第2メモリの空き容量が所定容量未満となったとき、前記第2メモリに記憶されているデータが書き込み頻度が低い低頻度書き込みデータであるときには前記低頻度書き込みデータが前記第2メモリから読み出されて前記書き込み動作により前記第1メモリに書き込まれるよう前記第1メモリと前記第2メモリとを制御する
ことを要旨とする。
この本発明のメモリの制御方法では、書き込みデータと該書き込みデータの書き込みを要求する書き込み要求信号とが入力されたとき、書き込みデータを第1メモリに書き込むと所定サイズの記憶領域のうち書き込みデータの記憶に利用されるセクタのサイズの割合であるデータ利用率が第1比率以上となるときには入力された書き込みデータが書き込み動作により第1メモリに書き込まれるよう第1メモリと第2メモリとを制御し、データ利用率が第1比率未満となるときには入力された書き込みデータが第2メモリに記憶されるよう第1メモリと第2メモリとを制御する。第1メモリのデータの書き込み動作では、複数のセクタからなるページ単位でデータが読み出され、読み出されたデータのうち書き込みデータに対応するセクタが書き込みデータで上書きされた後にページ単位でデータが書き込まれるため、データの記憶に利用されていないセクタについても読み出しや書き込みが行なわれる。不揮発性メモリでは書き込み動作を実行すると劣化するため、こうしたデータの記憶に利用されていないセクタについては書き込みが抑制されることが望ましいが、データ利用率が第1比率未満となるときには入力された書き込みデータが第2メモリに記憶されるよう第1メモリと第2メモリとを制御することにより、第1メモリにおけるデータ利用率を第1比率以上にすることができ、データの記憶に利用されていない第1メモリの記憶領域への読み出しや書き込みが抑制される。これにより、第1メモリの劣化を抑制することができる。こうして第2メモリにデータを書き込まれると、第2メモリの空き容量が低下していく。第2メモリは第1メモリより高速にデータの書き込みが可能であるため、第2メモリの空き容量が無くなりデータを第2メモリに書き込みことができなくなるため、データの書き込み速度が低下すると考えられる。また、第2メモリに書き込み頻度が低い低頻度書き込みデータが多いと、さらに、データの書き込み速度が低下すると考えられる。したがって、第2メモリの空き容量が所定容量未満となったとき、第2メモリに記憶されているデータが書き込み頻度が低い低頻度書き込みデータであるときには低頻度書き込みデータが前記第2メモリから読み出されて書き込み動作により第1メモリに書き込まれるよう第1メモリと第2メモリとを制御することにより、第2メモリの空き容量が所定容量未満になることが抑制され、より高速にデータを書き込むことができる。これにより、不揮発性メモリの劣化を抑制すると共により高速にデータを書き込むことができる。ここで、「所定サイズ」には、ページのサイズとして予め定められたサイズや複数ページのサイズ、書き込みデータの論理アドレスに対応するページにおける1セクタのサイズより大きいサイズなどが含まれる。また、「第1メモリ」には、NAND型フラッシュメモリが含まれ、「第2メモリ」には、抵抗変化型メモリが含まれる。
こうした本発明のメモリ制御方法において、前記第2メモリの空き容量が所定容量未満となったとき、前記第2メモリに記憶されているデータが前記低頻度書き込みデータであり且つ前記第1メモリに前記低頻度書き込みデータの記憶に利用されるセクタを含む前記所定サイズのデータを書き込むと該所定サイズのデータにおける前記データ利用率が前記第1比率より低い第2比率以上となるときには、前記データ移動制御を実行するものとすることもできる。こうすれば、データ利用率が第2比率未満のデータが第1メモリに記憶されることを抑制することができ、第1メモリの劣化を抑制することができる。
ホスト装置10からのデータを記憶する本発明の実施例としてのSSD20の構成の概略を示す説明図である。 抵抗変化素子46の構成の一例を示す説明図である。 メモリコントローラ30の制御処理回路32により実行される書き込み要求時処理ルーチンの一例を示すフローチャートである。 メモリコントローラ30の制御処理回路32により実行される書き込み処理ルーチンの一例を示すフローチャートである。 利用セクタフラグテーブルUSFTとページ利用率Rの一例を示す説明図である。 利用セクタフラグテーブルUSFTの生成の様子を示す説明図である。 他の利用セクタフラグテーブルUSFTの生成の様子を示す説明図である。 ページ利用率Rが閾値Rth2を超えているときに利用セクタフラグテーブルUSFTのリセット動作を実行しない場合に生成される利用セクタフラグテーブルUSFTの一例を示す説明図である。 ページ利用率Rが閾値Rth2を超えているときに利用セクタフラグテーブルUSFTのリセット動作を実行した場合に生成される利用セクタフラグテーブルUSFTの一例を示す説明図である。 メモリコントローラ30の制御処理回路32により実行されるデータ移動制御処理ルーチンの一例を示すフローチャートである。
次に、本発明を実施するための形態を実施例を用いて説明する。
図1は、パーソナルコンピュータなどのホスト装置10からのデータを記憶する本発明の実施例としてのSSD(Solid State Drive)20の構成の概略を示す説明図である。SSD20は、各種アプリケーションプログラムや各種データを記憶する大容量のデータ記憶装置として構成されており、NAND型フラッシュメモリとして構成されたフラッシュメモリ22と、抵抗変化ランダムアクセスメモリ(Resistance Random Access Memory ,ReRAM)として構成されたReRAM24と、フラッシュメモリ22とReRAM24とを制御するメモリコントローラ30と、から構成されている。
フラッシュメモリ22は、フローティングゲートへの電子注入やフローティングゲートからの電子の引き抜きにより閾値電圧が変化するフラッシュメモリセルを複数有するフラッシュメモリセルアレイ(図示せず)を備えるNAND型フラッシュメモリとして構成されており、フラッシュメモリセルアレイの他にロウデコーダ,カラムデコーダ,センスアンプなど(いずれも図示せず)を備える。フラッシュメモリ22では、8個のセクタ(実施例では、512バイト)からなるページ単位(実施例では、4Kバイト)でデータを書き込んだり読み出したりして、128ページからなるブロック単位(実施例では、512KBバイト)で記憶しているデータを消去する。こうしたフラッシュメモリ22では、データの書き込みは、フラッシュメモリ22に記憶されているデータを読み出して、読み出したデータのうち書き込みデータに対応するセクタのデータをセクタ単位で上書きしてデータに書き換えた後、ページ単位で書き換えたデータをフラッシュメモリ22に書き込む書き込み動作により行なわれる。実施例のフラッシュメモリ22では、フラッシュメモリ22にデータを書き込む際の書き込み速度およびフラッシュメモリ22からデータを読み出す際の読み出し速度が212MB/sであるものとした。
ReRAM24は、チタン(Ti)や白金(Pt)などの金属から形成された上部電極40とチタン(Ti)や白金(Pt)などの金属から形成された下部電極42とで金属酸化物44を挟み込んで形成された図2に例示する抵抗変化素子46と、抵抗変化素子46に接続されたMOSトランジスタ(図示せず)とから構成されるReRAMセルを複数有するReRAMセルアレイ(図示せず)を備えるReRAMとして構成されており、ReRAMセルアレイの他にロウデコーダ,カラムデコーダ,センスアンプなど(いずれも図示せず)を備える。ReRAMセルは、上部電極40に印加される電圧V1が下部電極42に印加される電圧V2より高いときにセット(低抵抗化)され、電圧V1が電圧V2より低いときにリセット(高抵抗化)されるバイポーラ動作を行なう素子として形成されている。こうしたバイポーラ動作を行なうReRAMセルは、一般に、動作速度が比較的速く消費電力が少ない素子であるため、ReRAM24は、動作速度が比較的早く消費電力が少ないメモリとして構成されている。なお、金属酸化物44としては、チタン酸化物(TiOx)やニッケル酸化物(NiOx),銅酸化物(CuOx),ハフニウム酸化物(HfOx)などの金属酸化物またはこれらの金属酸化物を複数積層された積層構造とするのが望ましいと考えられる。こうしたReRAM24では、データの書き込みは、書き込みデータに対応するセクタにデータを書き込むことにより行なわれる。ReRAM24は、実施例では、データを書き込む際の書き込み速度およびデータを読む出す際の読み出し速度がフラッシュメモリ22より高速であり、書き込み速度および読み出し速度が1.25GB/sであるものとした。
メモリコントローラ30は、複数の論理素子を有する論理回路として構成された各種制御や演算処理を実行する制御処理回路32を備えている。制御処理回路32には、ホスト装置10から各種制御信号やデータなどが入力されており、基本的には、制御処理回路32は入力された制御信号に基づいてフラッシュメモリ22やReRAM24にデータが記憶されるようフラッシュメモリ22やReRAM24を制御したり、フラッシュメモリ22やReRAM24からデータが読み出されるようフラッシュメモリ22やReRAM24を制御したり、読み出したデータをホスト装置10に出力したりする。制御処理回路32では、こうしたデータの読み出しや書き込みを行なう際にデータを記憶するページを仮想的に示す論理ページアドレスとデータを記憶するセクタを仮想的に示す論理セクタアドレスとからなる論理アドレスと、実際のフラッシュメモリ22やReRAM24の場所を示す物理アドレスとの変換や、ReRAM24の空き容量Semp2の監視などを行なう。メモリコントローラ30は、ホスト装置10と比較的高速に(例えば、1.25GB/s程度で)各種制御信号やデータをやりとりするものとした。
次に、こうして構成されたSSD20の動作、特に、ホスト装置10から入力されたデータをフラッシュメモリ22やReRAM24に記憶させる際の動作について説明する。図3は、メモリコントローラ30の制御処理回路32により実行される書き込み要求時処理ルーチンの一例を示すフローチャートである。このルーチンは、ホスト装置10からのデータをフラッシュメモリ22またはReRAM24に書き込むことを要求する書き込み要求信号と書き込みデータと書き込みデータを記憶する場所を示す論理ページアドレスと論理セクタアドレスとからなる論理アドレスが入力されたときに実行される。
書き込み要求信号が入力されると、メモリコントローラ30の制御処理回路32は、後述するデータ移動処理(ステップS100)とデータ書き込み処理(ステップS300)とを実行する。説明の便宜上、最初にデータ書き込み処理について説明し、次にデータ移動処理について説明する。
図4は、メモリコントローラ30の制御処理回路32により実行される書き込み処理ルーチンの一例を示すフローチャートである。本ルーチンが実行されると、メモリコントローラ30の制御処理回路32は、利用セクタフラグテーブルUSFTを作成し(ステップS310)、利用セクタフラグテーブルUSFTに基づいて論理ページアドレス毎にデータの記憶に利用されているセクタの割合であるページ利用率Rを演算する(ステップS320)。
図5は、利用セクタフラグテーブルUSFTとページ利用率Rの一例を示す説明図である。利用セクタフラグテーブルUSFTは、セクタの数だけフラグが用意されており、データの記憶に利用されていないセクタについてはフラグに値0が設定され、データの記憶に利用されているセクタについてはフラグに値1が設定されている。今、1ページは8個のセクタからなるため、1ページ毎に8個のフラグが設定される。ページ利用率Rは、1ページに含まれる値1のフラグの個数を1ページのフラグの個数である値8で除することにより演算されるものとした。したがって、1ページに含まれる値1のフラグの個数が3個であるとき、すなわち、1ページのうち3セクタがデータの記憶に利用されているときのページ利用率Rは値0.375(=3/8)になり,1ページに含まれる値1のフラグの個数が6個であるとき、すなわち、1ページのうち6セクタがデータの記憶に利用されているときのページ利用率Rは値0.75(=6/8)になる。
利用セクタフラグテーブルUSFTの生成(ステップS310)は、書き込みデータの記憶に利用されているセクタについてはフラグに値1が設定され他のフラグが値1に設定された書き込みデータセクタフラグテーブルWSFTと、既に記憶されている利用セクタフラグテーブルUSFTとの論理和(OR)を演算することにより行なわれる。例えば、図6に示すように、既に記憶されている利用セクタフラグテーブルUSFTが”01111100”で書き込みデータセクタフラグテーブルWSFTが”11000000”のときには”11111100”の利用セクタフラグテーブルUSFTが生成される。なお、この場合のページ利用率Rは値0.75となる。
こうしてページ利用率Rを演算したら、ページ利用率Rが閾値Rth1以上であるか否かを判定すると共に(ステップS330)、書き込みデータが書き換え頻度が比較的高い高頻度書換データであるか否かを判定する(ステップS340)。ここで、閾値Rth1は、ReRAM24に記憶されているデータのサイズが大きくなるほど小さくなるよう設定されるものとした。また、書き込みデータが高頻度書換データであるか否かの判定は、ページ利用率Rが閾値Rth1以上となったとき直近の論理アドレスを2000個記憶テーブルに記憶しておき、書き込みデータの論理アドレスが記憶テーブル内に所定個数(例えば、100個)以上あれば書き込みデータが高頻度書換データであると判断するものとした。
ページ利用率Rが閾値Rth1以上であって、書き込みデータが高頻度書換データでないときには(ステップS330,S340)、上述した書き込み動作により書き込みデータがフラッシュメモリ22に記憶されるようフラッシュメモリ22を制御する(ステップS350)。こうした処理により、フラッシュメモリ22にデータを記憶させることができる。
図6に例示するように、ページ利用率Rが閾値Rth1未満であるとき、すなわち、ページ内に利用されていないセクタが比較的多くあるときや(ステップS330)、ページ利用率Rが閾値Rth1以上であっても書き込みデータが高頻度書換データであるときには(ステップS340)、フラッシュメモリ22にデータを記憶させるとフラッシュメモリ22の劣化を促進させると判断して、ReRAM24にデータを書き込む書き込み動作を実行する(ステップS360〜S380)。ページ内に利用されていないセクタが比較的多くあるときにフラッシュメモリ22にデータを記憶させるとフラッシュメモリ22の劣化を促進させると判断するのは、フラッシュメモリ22にデータを書き込もうとすると、本来ならデータの記憶に利用する必要ない記憶領域に書き込み動作が実行されてフラッシュメモリ22が劣化してしまう場合があるからである。ここで、閾値Rth1をReRAM24に記憶されているデータのサイズが大きくなるほど小さくなるよう設定することにより、ReRAM24の記憶領域に空き領域が少なくなったときにReRAM24に書き込みデータが記憶されることを抑制することができ、比較的小さい記憶容量のReRAM24を用いたときでもより適正にReRAM24にデータを記憶させることができる。
ReRAM24にデータを書き込む書き込み動作は、まず、書き込みデータの論理アドレスに対応するデータがフラッシュメモリ22に記憶されているか否かを調べる(ステップS360)。そして、フラッシュメモリ22にデータが記憶されているときには、書き込みデータの論理アドレスに対応するアドレスのデータをフラッシュメモリ22からページ単位で読み出して読み出したデータのうち書き込みデータに対応するデータをセクタ単位で書き込みデータで上書きした結合データを作成し(ステップS370)、こうした結合データがReRAM24に記憶されるようReRAM24を制御し(ステップS380)、フラッシュメモリ22にデータが記憶されていないときには書き込みデータがReRAM24に記憶されるようReRAM24を制御する(ステップS380)。このように、ページ利用率Rが閾値Rth1未満であるときや、ページ利用率Rが閾値Rth1以上であっても書き込みデータが高頻度書換データであるときには、書き込みデータをReRAM24に記憶させることにより、フラッシュメモリ22の劣化を抑制することができる。また、ReRAM24の書き込み速度がフラッシュメモリ22の書き込み速度より高速であるから、こうしてReRAM24に書き込みデータを記憶させることにより書き込み動作をより高速に実行することができる。
こうしてフラッシュメモリ22またはReRAM24に書き込みデータを記憶したら、続いて、ページ利用率Rが閾値Rth1より高い値として予め定められた閾値Rth2(例えば、0.85)を超えているか否かを調べる(ステップS390)。ページ利用率Rが閾値Rth2より高いときには利用セクタフラグテーブルUSFTのフラグを全て値0に設定するフラグリセット動作を実行して(ステップS400)、ページ利用率Rが閾値Rth2以上のときには利用セクタフラグテーブルUSFTを変更することなく、本ルーチンを終了する。こうしたフラグリセット動作を行なうのは以下の理由に基づく。
例えば、図8に示すように、既に記憶されている利用セクタフラグテーブルUSFTが”01111111”(ページ利用率Rは値0.875)で書き込みデータセクタフラグテーブルWSFTが”11000000”のとき、”11111111”の利用セクタフラグテーブルUSFTが生成される。このようにページ利用率Rが高くなると、データが高頻度書換データでない場合にはこのページのデータは書き込み動作により常にフラッシュメモリ22に記憶され、フラッシュメモリ22の劣化が促進される場合がある。ページ利用率Rが閾値Rth2より高いときには利用セクタフラグテーブルUSFTのフラグを全て値0に設定するフラグリセット動作を実行することにより(ステップS400)、図9に例示するように、次にステップS310の処理が実行されているときに、既に記憶されている利用セクタフラグテーブルUSFTが”00000000”(ページ利用率Rは値0)となり、書き込みデータセクタフラグテーブルWSFTが”11000000”のときには”11000000”の利用セクタフラグテーブルUSFTが生成され、利用セクタフラグテーブルUSFTは、ページ利用率Rが閾値Rth2より高くなったとき以降にデータの記憶のために利用されているセクタの情報を示すものになる。このときのページ利用率Rは値0.25であるから、ReRAM24に書き込まれることになる(ステップS330,S360〜S380)。こうした処理により、フラッシュメモリ22へのデータの書き込み動作が抑制されて、フラッシュメモリ22の劣化を抑制することができる。以上、図3のデータ書き込み処理(ステップS300)について説明した。
こうしてデータ書き込み処理を実行すると、ReRAM24にデータ利用率Rが閾値Rth1未満の比較的書き込み頻度が低い低頻度書き込みデータが書き込まれて、こうした低頻度書き込みデータでReRAM24の空き容量が低下していく場合がある。ReRAM24はフラッシュメモリ22より高速にデータの書き込みが可能であるため、ReRAM24の空き容量が無くなると、SSD20の全体でみれば、データの書き込み速度が低下すると考えられる。したがって、こうした不都合を回避するために、図3に例示するように、データ書き込み制御処理(ステップS300)の実行に先立ってデータ移動処理(ステップS100)が実行される。続いて、データ移動処理ルーチンについて説明する。
図10は、メモリコントローラ30の制御処理回路32により実行されるデータ移動処理ルーチンの一例を示すフローチャートである。本ルーチンが実行されると、メモリコントローラ30の制御処理回路32は、ReRAM24の空き容量Semp2を調べる処理を実行する(ステップS110)。空き容量Semp2が閾値Sth(例えば、0.2など)以上であるときには、ReRAM24の空き容量が充分であるため、本ルーチンを終了して、図3のデータ書き込み処理(ステップS300)を実行する。
空き容量Semp2が閾値Sth未満であるときには(ステップS110)、ReRAM24の空き容量が充分ではないと判断して、続いて、ReRAM24のセクタに対して記憶されているデータが書き換え頻度が比較的低い低頻度書換データであるか否かを判定したり(ステップS120)、ページ利用率Rが閾値Rth1より小さい閾値Rth3以上であるか否かを判定する(ステップS130)。ここで、データが低頻度書換データあるか否か(ステップS120)は、図4のステップS340の処理で用いた記憶テーブルにステップS120の判定対象のデータを示す論理セクタアドレスを含む論理ページアドレスが記憶されていない場合に、データが低頻度書換データであると判定するものとした。
ReRAM24のデータが低頻度書換データであり且つ対象のデータをフラッシュメモリ22に記憶させたときのページ利用率Rが閾値Rth3以上であるときには(ステップS120,130)、データが低頻度書換データであるためデータをフラッシュメモリ22に記憶させてもフラッシュメモリ22の劣化がさほど進行せず、且つ、ページ利用率Rが閾値Rth3以上であるためフラッシュメモリ22の劣化をさほど進行させることがないと判断して、判定の対象となっているデータをフラッシュメモリ22に記憶させたときの論理ページアドレスをフラッシュメモリ22へ移動させるべきデータのアドレスのリストである移動リストに記憶させる(ステップS140)。
ReRAM24のデータが低頻度書換データでなかったり(ステップS120)、対象のデータをフラッシュメモリ22に記憶させたときのページ利用率Rが閾値Rth3未満であるときには(ステップS130)、移動リストに論理ページアドレスを記憶させることなく、ReRAM24の全てのセクタのデータに対してステップS120,S130の処理が終了するまで、ReRAM24の他のセクタのデータに対して順次ステップS120,S130の処理を実行する(ステップS170)。こうした処理より、フラッシュメモリ22に移動してもフラッシュメモリ22の劣化がさほど進行しないデータの論理ページアドレスのみを移動リストに記憶させることができる。
判定の対象となっているデータをフラッシュメモリ22に記憶させたときの論理ページアドレスを移動リストに記憶させたときには(ステップS140)、続いて、移動リストに記憶されている論理ページアドレスの個数が閾値N(Nは正の整数、例えば1500個)となったか否かを調べる(ステップS150)。移動リストに記憶されている論理ページアドレスの個数が閾値Nに至っていなければ、ReRAM24の全てのセクタのデータに対してステップS120〜S150の処理が終了するまで、ReRAM24の他のセクタのデータに対してステップS120〜S150の処理を実行し(ステップS170)、移動リストに記憶されている論理ページアドレスの個数が閾値Nに至ったときには、移動リストに記憶されている論理ページアドレスに含まれる論理セクタのデータをReRAM24から読み出してフラッシュメモリ11に書き込む(ステップS160)。こうした処理により、移動リストに記憶されている論理ページアドレスの個数が閾値Nに至ったときには、ReRAM24からフラッシュメモリ11へデータを移動させることができる。
移動リストに記憶されている論理ページアドレスの個数が閾値Nに至ったときにReRAM24からフラッシュメモリ11へデータを移動させる理由は以下の通りである。ReRAM24は、フラッシュメモリ22より高速にデータの書き込みが可能であるため、ReRAM24の空き容量が低下してデータをReRAM24に書き込みことができなくなると、SSD20全体でデータの書き込み速度が低下すると考えられる。また、ReRAM24に書き込み頻度が低い低頻度書き込みデータが多いと、さらに、データの書き込み速度が低下すると考えられる。上述した処理により、ReRAM24に記憶されているデータのうち書換頻度が低いデータをフラッシュメモリ22に移動させることにより、ReRAM24の空き容量が増え、且つ、ReRAM24に記憶されている低頻度書き込みデータを少なくすることができるから、より高速にSSD20にデータを書き込むことができる。また、ReRAM24のデータが低頻度書換データであり且つ対象のデータをフラッシュメモリ22に記憶させたときのページ利用率Rが閾値Rth3以上であるときでも、移動リストに記憶されている論理ページアドレスの個数が閾値NとなるまではReRAM24に記憶しているデータをフラッシュメモリ11に書き込まないから、ReRAM24からフラッシュメモリ22への頻繁なデータを移動を抑制して、SSD20の書き込み速度の低下を抑制することができる。
ReRAM24の全てのセクタのデータに対してステップS120〜S150の処理が終了したときには(ステップS150,S170)、移動リストに記憶されている論理ページアドレスの個数が閾値Nに至っていなくても、移動リストに論理ページアドレスが記憶されていれば、記憶されている論理ページアドレスに含まれる論理セクタのデータをReRAM24から読み出してフラッシュメモリ11に書き込む(ステップS160)。こうした処理により、移動リストに記憶されている論理ページアドレスの個数が閾値Nに至らない場合でもReRAM24からフラッシュメモリ11へデータを移動させることができる。
こうしてReRAM24からフラッシュメモリ11へデータを移動させたら、続いて、目標ページ数(例えば、500ページ。ステップS150の処理の移動リストにおける論理ページアドレスの個数の閾値Nに対応するページ数)のデータをReRAM24からフラッシュメモリ22に移動したか否かを判定し(ステップS180)、目標ページ数のデータが移動されていないときには、閾値Rth3が適正な値より高くなっていると判断して閾値Rth3から値0.1を減じた値を閾値Rth3に設定し(ステップS190)、目標ページ数のデータが移動されていたときには、閾値Rth3が適正な値であるかまたは閾値Rth3が適正な値より低い値となっていると判断して、閾値Rth3に値0.1を加えた値と閾値Rth1のうち小さいほうの値を閾値Rth3に設定して(ステップS200)、本ルーチンを終了する。こうした処理により、閾値Rth3をより適正に設定することができ、次に本ルーチンを実行する際にはより適正な閾値Rth3を用いてステップS130の処理を実行することができる。
以上説明した実施例のSSD20によれば、ページ利用率Rが閾値Rth1未満であるときやページ利用率Rが閾値Rth1以上であっても書き込みデータが高頻度書換データであるときに、書き込みデータをReRAM24に記憶させることにより、フラッシュメモリ22の劣化を抑制することができる。また、ReRAM24の書き込み速度がフラッシュメモリ22の書き込み速度より高速であるから、こうしてReRAM24に書き込みデータを記憶させることにより書き込み動作をより高速にすることができる。また、ReRAM24の空き容量Semp2が閾値Sth未満であるとき、ReRAM24のデータが低頻度書換データであり且つ対象のデータをフラッシュメモリ22に記憶させたときのページ利用率Rが閾値Rth3以上であるときには、判定の対象となっているデータをフラッシュメモリ22に記憶させたときの論理ページアドレスを移動リストに記憶させ、移動リストに記憶されている論理ページアドレスの個数が閾値Nとなったときには、移動リストに記憶されている論理ページアドレスに含まれる論理セクタのデータをReRAM24から読み出してフラッシュメモリ11に書き込む。こうした処理により、より高速にSSD20にデータを書き込むことができる。さらに、移動リストに記憶されている論理ページアドレスの個数が閾値NとなるまでReRAM24に記憶しているデータをフラッシュメモリ22に書き込まないから、ReRAM24からフラッシュメモリ22への頻繁なデータを移動を抑制して、SSD20の性能の低下を抑制することができる。
実施例のSSD20では、移動リストに記憶されている論理ページアドレスの個数が閾値NとなるまでReRAM24に記憶しているデータをフラッシュメモリ22に書き込まないものとしたが(ステップS140〜S160)、ページアドレスを移動リストに記憶させることなく、ReRAM24のデータが低頻度書換データであり且つ対象のデータをフラッシュメモリ22に記憶させたときのページ利用率Rが閾値Rth3以上であるときには、常に、対象のデータをフラッシュメモリ22に記憶させるものとしてもよい。
実施例のSSD20では、ステップS180〜ステップS200の処理で、データ移動があるか否かに応じて閾値Rth3を設定するものとしたが、こうした処理を実行せずに、閾値Rth3を変更されない定数であるものしてもよい。
実施例のSSD20では、ReRAM24のデータが低頻度書換データであり且つ対象のデータをフラッシュメモリ22に記憶させたときのページ利用率Rが閾値Rth3以上であるときにステップS140以降の処理を実行するものとしたが、対象のデータをフラッシュメモリ22に記憶させたときのページ利用率Rが閾値Rth3以上あるか否かの判定を実行せずに、ステップS140以降の処理を実行してもよい。
実施例のSSD20では、ページ利用率Rが閾値Rth1以上であっても書き込みデータが高頻度書換データであるときには、書き込みデータをReRAM24に記憶させるものとしたが(ステップS330,S340,S360〜S380)、ステップS340の処理を実行せずにページ利用率Rが閾値Rth1以上であるときに書き込みデータを一律にフラッシュメモリ22に記憶させるものとしてもよい(ステップS330,S350)。
実施例のSSD20では、閾値Rth1をReRAM24でデータを記憶している記憶領域のサイズが大きくなるについて小さく設定するものとしたが、閾値Rth1をReRAM24でデータを記憶している記憶領域のサイズに拘わらず、同一の値に設定するものとしてもよい。
実施例のSSD20では、ページ利用率Rが閾値Rth2より高いときには利用セクタフラグテーブルUSFTのフラグを全て値0に設定するフラグリセット動作を実行するものとしたが(ステップS390,S400)、こうした処理を実行しないものとしてもよい。
実施例のSSD20では、ページ利用率Rを演算する範囲を1ページとして、1ページに含まれる値1のフラグの個数を1ページのフラグの個数である値8で除することにより演算するものとしたが、ページ利用率Rを演算する範囲は1セクタより大きければいかなるサイズにしてもよく、例えば、ページ利用率Rを2ページ以上のページの範囲で演算するものとし、演算する範囲に含まれる値1のフラグの個数を演算する範囲におけるフラグの個数で除することにより演算するものとしてもよい。
実施例のSSD20では、フラッシュメモリ22を備えているものとしたが、フラッシュメモリ22に代えて、複数のセクタからなるページ単位で記憶領域に記憶されているデータを読み出して、読み出したデータをセクタ単位で書き換えた後にページ単位でデータを書き込む書き込み動作によりデータの書き込みが可能な不揮発性メモリとして構成された他のメモリを用いるものとしてもよい。
実施例のSSD20では、ReRAM24のReRAMセルをバイポーラ動作を行なう素子として形成されているものとしたが、ReRAMセルを抵抗変化素子46とダイオード(図示せず)とにより構成すると共に、電圧V1に電圧V2より高い電圧が印加されたときにセット(低抵抗化)され、電圧V1に電圧V2より高くReRAMセルをセットする電圧より低い電圧が印加されたときにリセット(高抵抗化)されるユニポーラ動作を行なう素子として形成するものとしてもよい。こうしたユニポーラ動作を行なうReRAMセルは、一般に、バイポーラ動作を行なうReRAMセルに比して小さいセルサイズで簡単なセル構成で構成するため、ReRAMセルをバイポーラ動作を行なう素子として形成するものに比して、動作が若干遅くなるものの、面積をより小さくすることができる。
実施例のSSD20では、SSD20がReRAM24を備えているものとしたが、ReRAM24に代えて他のフラッシュメモリ22より高速のデータの書き込みが可能な不揮発性のランダムアクセスメモリ、例えば、二つの電極で強誘電体材料を挟み込んだキャパシタを有する強誘電体ランダムアクセスメモリやトンネル磁気抵抗膜を磁性体膜で挟み込んだ構造のMTJ(Magnet Tunnel Junction)素子を有する磁気抵抗ランダムアクセスメモリや二つの電極で相変化材料を挟み込んだ素子を有する相変化ランダムアクセスメモリなどを備えるものとしてもよい。
実施例では、本発明をSSDに用いる場合を例示したが、データを処理するデータ処理装置であれば如何なるものに用いてもよく、例えば、USBメモリなどに用いるものとしても構わない。また、メモリコントローラ30を一つの装置であるSSD20に搭載するものに限定するものではなく、フラッシュメモリ22,ReRAM24,メモリコントローラ30をそれぞれ異なるの装置に搭載するものとしてもよいし、フラッシュメモリ22,ReRAM24を同一の装置に搭載して、メモリコントローラ30をフラッシュメモリ22,24とを異なる装置に搭載するものとしてもよい。また、こうしたフラッシュメモリ22,ReRAM24を制御するメモリの制御方法の形態としても構わない。
実施例の主要な要素と課題を解決するための手段の欄に記載した発明の主要な要素との対応関係について説明する。実施例では、メモリコントローラについては、図4に例示したデータ書き込み処理ルーチンを実行する制御処理回路32が「書き込み制御部」に相当し、図10に例示したデータ移動制処理ルーチンを実行する制御処理回路32が「データ移動制御部」に相当する。また、データ記憶装置については、メモリコントローラ30が「メモリコントローラ」に相当し、フラッシュメモリ22が「第1メモリ」に相当し、ReRAM24が「第2メモリ」に相当する。
以上、本発明を実施するための形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において、種々なる形態で実施し得ることは勿論である。
本発明は、メモリコントローラやデータ記憶装置などの製造産業に利用可能である。
10 ホスト装置、20 SSD、22 フラッシュメモリ、24 ReRAM、30 メモリコントローラ、32 制御処理回路、40 上部電極、42 下部電極、44 金属酸化物、46 抵抗変化素子。

Claims (13)

  1. 複数のセクタからなるページ単位でデータが読み出され該読み出されたデータのうち書き込みデータに対応するセクタが前記書き込みデータで上書きされた後に前記ページ単位でデータが書き込まれる書き込み動作によりデータが書き込まれる不揮発性メモリとして構成された第1メモリと、前記第1メモリより高速にデータの書き込みが可能な不揮発性ランダムアクセスメモリとして構成された第2メモリと、を制御するメモリコントローラであって、
    書き込みデータと該書き込みデータの書き込みを要求する書き込み要求信号とが入力されたとき、前記書き込みデータを前記第1メモリに書き込むと所定サイズの記憶領域のうち前記書き込みデータの記憶に利用されるセクタのサイズの割合であるデータ利用率が第1比率以上となるときには前記入力された書き込みデータが前記書き込み動作により前記第1メモリに書き込まれるよう前記第1メモリと前記第2メモリとを制御し、前記データ利用率が前記第1比率未満となるときには前記入力された書き込みデータが前記第2メモリに記憶されるよう前記第1メモリと前記第2メモリとを制御する書き込み制御部と、
    前記第2メモリの空き容量が所定容量未満となったとき、前記第2メモリに記憶されているデータが書き込み頻度が低い低頻度書き込みデータであるときには前記低頻度書き込みデータが前記第2メモリから読み出されて前記書き込み動作により前記第1メモリに書き込まれるよう前記第1メモリと前記第2メモリとを制御するデータ移動制御を実行するデータ移動制御部と、
    を備えるメモリコントローラ。
  2. 請求項1記載のメモリコントローラであって、
    前記データ移動制御部は、前記第2メモリの空き容量が所定容量未満となったとき、前記第2メモリに記憶されているデータが前記低頻度書き込みデータであり且つ前記第1メモリに前記低頻度書き込みデータの記憶に利用されるセクタを含む前記所定サイズのデータを書き込むと該所定サイズのデータにおける前記データ利用率が前記第1比率より低い第2比率以上となるときには、前記データ移動制御を実行する
    メモリコントローラ。
  3. 請求項2記載のメモリコントローラであって、
    データが含まれるページを示すページアドレスと該ページ内のデータの記憶に利用されているセクタを示すセクタアドレスとからなる論理アドレスを用いて前記第1メモリおよび前記第2メモリを管理するアドレス管理部と、
    前記データ利用率が前記第1比率以上となったときの書き込みデータの論理アドレスを記憶する高利用率アドレス情報記憶部と、
    を備え、
    前記データ移動制御部は、前記入力された書き込みデータの論理アドレスが前記高利用率アドレス情報記憶部に所定個数未満記憶されているときに前記入力された書き込みデータが低頻度書き込みデータであると判定する
    メモリコントローラ。
  4. 請求項2または3記載のメモリコントローラであって、
    前記第2メモリの空き容量が所定容量未満となったとき、前記第2メモリに記憶されているデータが前記低頻度書き込みデータであり且つ前記低頻度書き込みデータを前記第1メモリに書き込むと前記データ利用率が前記第2比率以上となるときには、前記低頻度書き込みデータを含むページのページアドレスを記憶するページアドレス記憶部
    を備え、
    前記データ移動制御部は、前記第2メモリの空き容量が前記所定容量未満となったとき、前記第2メモリに記憶されているデータが前記低頻度書き込みデータであり且つ前記低頻度書き込みデータを前記第1メモリに書き込むと前記データ利用率が前記第2比率以上となり且つ前記ページアドレス記憶部に記憶されているページアドレスの数が所定個数以上であるときに、前記ページアドレス記憶部に記憶されているページアドレスに対応する第2メモリのデータについて前記データ移動制御を実行する
    メモリコントローラ。
  5. 請求項4記載のメモリコントローラであって、
    前記データ移動制御部は、前記第2メモリの空き容量が前記所定容量未満となって、前記所定個数より多い複数のページについて、前記第2メモリに記憶されているデータが前記低頻度書き込みデータであるか否かと前記低頻度書き込みデータを前記第1メモリに書き込むと前記データ利用率が前記第2比率以上となるか否かを判定したとき、前記ページアドレス記憶部に記憶されているページアドレスの数が前記所定個数未満であるときには前記第2比率を減少させ、前記ページアドレス記憶部に記憶されているページアドレスの数が前記所定個数であるときには前記第2比率の値を変更せずに維持し、前記ページアドレス記憶部に記憶されているページアドレスの数が前記所定個数を超えたときには前記第2比率を増加させる
    メモリコントローラ。
  6. 請求項2ないし5のいずれか一つの請求項に記載のメモリコントローラであって、
    前記書き込み制御部および前記データ移動制御部は、前記各セクタがデータを記憶しているか否かの情報である利用セクタ情報と入力された書き込みデータを記憶する際に利用するセクタとに基づいて前記データ利用率を演算する
    メモリコントローラ。
  7. 請求項1ないし6のいずれか一つの請求項に記載のメモリコントローラであって、
    前記制御部は、前記入力された書き込みデータを前記第2メモリに記憶させるとき、前記入力された書き込みデータの論理アドレスに対応するデータが既に第1メモリの記憶領域に記憶されているときには、前記第1メモリに記憶されているデータをページ単位で読み出して該読み出したデータのセクタのうち書き込みデータで書き込む対象となるセクタを書き換えた後にページ単位で第2メモリに記憶させる
    メモリコントローラ。
  8. 請求項1ないし7のいずれか一つの請求項に記載のメモリコントローラであって、
    前記所定サイズの記憶領域は、前記書き込みデータに利用されるセクタを含むページが記憶される領域である
    メモリコントローラ。
  9. 請求項1ないし8のいずれか一つの請求項に記載のメモリコントローラであって、
    前記第1メモリは、NAND型フラッシュメモリである、
    メモリコントローラ。
  10. 請求項1ないし9のいずれか一つの請求項に記載のメモリコントローラであって、
    前記第2メモリは、抵抗変化型メモリである、
    メモリコントローラ。
  11. 請求項1ないし10のいずれか一つの請求項に記載のメモリコントローラと、
    前記第1メモリと、
    前記第2メモリと、
    を備えるデータ記憶装置。
  12. 複数のセクタからなるページ単位でデータが読み出され該読み出されたデータのうち書き込みデータに対応するセクタが前記書き込みデータで上書きされた後に前記ページ単位でデータが書き込まれる書き込み動作によりデータが書き込まれる不揮発性メモリとして構成された第1メモリと、前記第1メモリより高速にデータの書き込みが可能な不揮発性ランダムアクセスメモリとして構成された第2メモリと、を制御するメモリの制御方法であって、
    書き込みデータと該書き込みデータの書き込みを要求する書き込み要求信号とが入力されたとき、前記書き込みデータを前記第1メモリに書き込むと所定サイズの記憶領域のうち前記書き込みデータの記憶に利用されるセクタのサイズの割合であるデータ利用率が第1比率以上となるときには前記入力された書き込みデータが前記書き込み動作により前記第1メモリに書き込まれるよう前記第1メモリと前記第2メモリとを制御し、前記データ利用率が前記第1比率未満となるときには前記入力された書き込みデータが前記第2メモリに記憶されるよう前記第1メモリと前記第2メモリとを制御し、
    前記第2メモリの空き容量が所定容量未満となったとき、前記第2メモリに記憶されているデータが書き込み頻度が低い低頻度書き込みデータであるときには前記低頻度書き込みデータが前記第2メモリから読み出されて前記書き込み動作により前記第1メモリに書き込まれるよう前記第1メモリと前記第2メモリとを制御する
    メモリの制御方法。
  13. 請求項12記載のメモリの制御方法であって、
    前記第2メモリの空き容量が所定容量未満となったとき、前記第2メモリに記憶されているデータが前記低頻度書き込みデータであり且つ前記第1メモリに前記低頻度書き込みデータの記憶に利用されるセクタを含む前記所定サイズのデータを書き込むと該所定サイズのデータにおける前記データ利用率が前記第1比率より低い第2比率以上となるときには、前記データ移動制御を実行する
    メモリの制御方法。
JP2012205664A 2012-09-19 2012-09-19 メモリコントローラ,データ記憶装置およびメモリの制御方法 Expired - Fee Related JP5995071B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2012205664A JP5995071B2 (ja) 2012-09-19 2012-09-19 メモリコントローラ,データ記憶装置およびメモリの制御方法
US14/429,049 US9753652B2 (en) 2012-09-19 2013-08-20 Memory controller, data storage device, and memory control method
KR1020157006958A KR101687502B1 (ko) 2012-09-19 2013-08-20 메모리 제어기, 데이터 기억 장치 및 메모리 제어 방법
CN201380060156.2A CN104798055B (zh) 2012-09-19 2013-08-20 存储器控制器、数据存储装置和存储器控制方法
PCT/JP2013/004923 WO2014045516A1 (ja) 2012-09-19 2013-08-20 メモリコントローラ、データ記憶装置およびメモリの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012205664A JP5995071B2 (ja) 2012-09-19 2012-09-19 メモリコントローラ,データ記憶装置およびメモリの制御方法

Publications (2)

Publication Number Publication Date
JP2014059820A JP2014059820A (ja) 2014-04-03
JP5995071B2 true JP5995071B2 (ja) 2016-09-21

Family

ID=50340858

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012205664A Expired - Fee Related JP5995071B2 (ja) 2012-09-19 2012-09-19 メモリコントローラ,データ記憶装置およびメモリの制御方法

Country Status (5)

Country Link
US (1) US9753652B2 (ja)
JP (1) JP5995071B2 (ja)
KR (1) KR101687502B1 (ja)
CN (1) CN104798055B (ja)
WO (1) WO2014045516A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5971547B2 (ja) * 2012-02-15 2016-08-17 国立大学法人 東京大学 メモリコントローラ,データ記憶装置およびメモリの制御方法
US9064569B1 (en) * 2014-07-03 2015-06-23 Sandisk Technologies Inc. Memory controller with resistive random access memory (ReRAM)
KR20170045928A (ko) * 2015-10-20 2017-04-28 삼성에스디에스 주식회사 인메모리 데이터베이스를 이용한 데이터 관리 방법 및 그 장치
US10354728B2 (en) 2017-06-28 2019-07-16 Sandisk Technologies Llc Write verification and resistive state determination based on cell turn-on characteristics for resistive random access memory
US11552810B2 (en) 2017-08-03 2023-01-10 Arizona Board Of Regents On Behalf Of Northern Arizona University PUF with dissolvable conductive paths
JP2019045974A (ja) 2017-08-30 2019-03-22 富士通株式会社 情報処理装置、情報処理プログラム及び情報処理方法
US10256402B1 (en) 2017-09-25 2019-04-09 Sandisk Technologies Llc ReRAM read state verification based on cell turn-on characteristics
CN109828719B (zh) * 2018-12-15 2022-04-01 平安科技(深圳)有限公司 基于云监控的commitLog文件所在磁盘控制方法、装置及相关设备
KR20200078047A (ko) * 2018-12-21 2020-07-01 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
CN114063880B (zh) * 2020-07-31 2024-09-06 伊姆西Ip控股有限责任公司 处理输入输出请求的方法、电子设备和计算机程序产品
JP7024127B2 (ja) * 2021-02-04 2022-02-22 株式会社東芝 管理装置、情報処理装置、管理方法、およびプログラム
US12086440B2 (en) * 2022-07-18 2024-09-10 Micron Technology, Inc. Virtual binning in a memory device
CN116149545B (zh) * 2022-12-01 2024-06-11 浙江大学 一种基于存储类内存的损耗均衡方法
CN115639971B (zh) * 2022-12-12 2023-04-07 北京集度科技有限公司 数据写入方法、装置、电子设备、存储介质及程序产品

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1150453C (zh) * 1999-10-21 2004-05-19 三星电子株式会社 含电可重写非易失存储器的数据处理装置
US6836432B1 (en) * 2002-02-11 2004-12-28 Advanced Micro Devices, Inc. Partial page programming of multi level flash
JP2006018591A (ja) * 2004-07-01 2006-01-19 Matsushita Electric Ind Co Ltd メモリカード
US8205034B2 (en) * 2006-08-09 2012-06-19 Hitachi Ulsi Systems Co., Ltd. Flash memory drive having data interface
JP2008134685A (ja) * 2006-11-27 2008-06-12 Konica Minolta Business Technologies Inc 不揮発メモリシステム及び不揮発メモリ制御方法
KR101472797B1 (ko) * 2007-07-16 2014-12-15 삼성전자주식회사 데이터를 읽거나 쓰기 위한 방법 및 장치
JP5090941B2 (ja) * 2008-01-29 2012-12-05 株式会社日立製作所 ストレージサブシステム及びストレージシステム
KR101553532B1 (ko) * 2008-04-17 2015-09-16 삼성전자주식회사 스토리지 장치
US8375162B2 (en) * 2009-06-03 2013-02-12 Ocz Technology Group Inc. Method and apparatus for reducing write cycles in NAND-based flash memory devices
US20110252187A1 (en) * 2010-04-07 2011-10-13 Avigdor Segal System and method for operating a non-volatile memory including a portion operating as a single-level cell memory and a portion operating as a multi-level cell memory
CN102136993B (zh) * 2010-07-29 2016-12-21 华为技术有限公司 一种数据迁移的方法、装置和系统
JP5553309B2 (ja) * 2010-08-11 2014-07-16 国立大学法人 東京大学 データ処理装置
JP5971547B2 (ja) * 2012-02-15 2016-08-17 国立大学法人 東京大学 メモリコントローラ,データ記憶装置およびメモリの制御方法

Also Published As

Publication number Publication date
CN104798055B (zh) 2017-08-25
CN104798055A (zh) 2015-07-22
JP2014059820A (ja) 2014-04-03
WO2014045516A1 (ja) 2014-03-27
US9753652B2 (en) 2017-09-05
US20150220273A1 (en) 2015-08-06
KR101687502B1 (ko) 2016-12-19
KR20150046185A (ko) 2015-04-29

Similar Documents

Publication Publication Date Title
JP5995071B2 (ja) メモリコントローラ,データ記憶装置およびメモリの制御方法
JP5971547B2 (ja) メモリコントローラ,データ記憶装置およびメモリの制御方法
KR102174293B1 (ko) 확률론적 데이터 구조에 기초한 메모리 내의 사전적인 교정 조치
KR101655306B1 (ko) 메모리 시스템 및 그것의 액세스 방법
JP5553309B2 (ja) データ処理装置
US10445005B2 (en) Memory system and operating method thereof
EP3462320B1 (en) Dynamic page allocation in memory
US9286160B2 (en) System and method for phase change memory with erase flag cells
TW201005526A (en) Memory system
KR20140104189A (ko) 불휘발성 메모리 장치 및 그것의 데이터 처리 방법
JP2012038245A (ja) 制御装置およびデータ記憶装置
US11204698B2 (en) Memory controller to set operating environment of memory device, method of operating the same and storage device including the same
US11513738B2 (en) Memory system for processing a write request and migrating data in read-intensive state and operating method thereof
US11656777B2 (en) Memory system and operating method thereof
CN105489242B (zh) 数据储存器件及其操作方法
CN107958690B (zh) 数据存储装置及其操作方法
US20140301132A1 (en) Storage control device, storage device, information processing system, and processing method thereof
US20180357280A1 (en) Trie search engine
US20190042137A1 (en) Memory device with separate memory controllers for program/erase and read operations
US20180024751A1 (en) Metadata management on a storage device
US10283199B2 (en) Block erase schemes for cross-point non-volatile memory devices
US11269534B2 (en) Data storage device and non-volatile memory control method
TWI453747B (zh) 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器
US20150120991A1 (en) Data processing system and operating method thereof
US20220300187A1 (en) Memory system and operating method thereof

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150918

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160810

R150 Certificate of patent or registration of utility model

Ref document number: 5995071

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees