JP2016170703A - 記憶装置、記憶装置の制御方法、及び情報処理システム - Google Patents

記憶装置、記憶装置の制御方法、及び情報処理システム Download PDF

Info

Publication number
JP2016170703A
JP2016170703A JP2015050973A JP2015050973A JP2016170703A JP 2016170703 A JP2016170703 A JP 2016170703A JP 2015050973 A JP2015050973 A JP 2015050973A JP 2015050973 A JP2015050973 A JP 2015050973A JP 2016170703 A JP2016170703 A JP 2016170703A
Authority
JP
Japan
Prior art keywords
memory
line
address
assigned
memory line
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2015050973A
Other languages
English (en)
Inventor
義康 土肥
Yoshiyasu Doi
義康 土肥
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015050973A priority Critical patent/JP2016170703A/ja
Priority to US15/016,817 priority patent/US20160267014A1/en
Publication of JP2016170703A publication Critical patent/JP2016170703A/ja
Pending legal-status Critical Current

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
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1653Address circuits or decoders
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1675Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0023Address circuits or decoders
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0035Evaluating degradation, retention or wearout, e.g. by counting writing cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • 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/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Landscapes

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

Abstract

【課題】ウェアレベリングの効率をさらに高めること。
【解決手段】連続するアドレスのいずれかが割り当てられるとともに、アドレスが未割り当ての状態に設定される第1のメモリライン11b、…、11eと、連続するアドレスのいずれかが割り当てられる第2のメモリライン11aとを有する物理メモリ11を有し、書き込みアクセスが第1のメモリラインのいずれか又は第2のメモリラインのいずれかへの書き込みであるかをアドレスに基づいて判定し、第1のメモリライン11b、…、11eそれぞれへの書き込み回数と第2のメモリライン11aへの書き込み回数とを計数し、書き込み回数の合計が閾値を超えた場合、未割り当ての状態の第1のメモリラインを利用して、第2のメモリライン11aに割り当てられているアドレスと、第1のメモリラインに割り当てられているアドレスとを入れ替える、記憶装置10が提供される。
【選択図】図1

Description

本発明は、記憶装置、記憶装置の制御方法、及び情報処理システムに関する。
情報処理分野では様々な場面で、電源の供給を停止しても記憶内容を保持し続ける不揮発性メモリが利用されている。不揮発性メモリとしてはNAND型フラッシュメモリが広く利用されている。また、最近ではReRAM(Resistance Random Access Memory)、PCM(Phase Change Memory)、STT(Spin Transfer Torque)−MRAM(Magnetoresistive Random Access Memory)などの高性能な不揮発性メモリも開発されている。
不揮発性メモリは、同じメモリライン(例えば、16KBや128KBなどのサイズを有するブロック)に繰り返し書込みを行うと、メモリセルが劣化することにより読み書きができなくなる性質がある。そのため、複数のメモリラインをまとめたチップや、複数のチップをまとめたモジュール毎に、特定のメモリラインへの書き込みが集中しないように書き込み先を分散させ、各メモリラインの消耗度合いを平準化するウェアレベリング(Wear Leveling)と呼ばれる技術が提案されている。
例えば、メモリラインを特定する物理アドレスと、書き込み先を特定する論理アドレスとを対応付ける変換テーブルを利用してウェアレベリングを実現する方式(Table-based Wear Leveling:以下、TB方式)が提案されている。
TB方式では、メモリコントローラが、論理アドレスを指定した書き込み指示を受け、変換テーブルに基づいて論理アドレスを物理アドレスに変換し、その物理アドレスをもとに書き込み先となるメモリラインを特定し、メモリライン毎に書き込み回数をカウントする。そして、書き込み回数が多いメモリラインがある場合に、メモリコントローラが、そのメモリラインの物理アドレスに対応する論理アドレスと、書き込み回数が少ないメモリラインの物理アドレスに対応する論理アドレスとを入れ替える。
TB方式とは異なる例として、1つのメモリラインをギャップライン(データを書き込まないライン)に設定し、ギャップラインの位置を順次シフトさせることでウェアレベリングを実現する方式(Start Gap Wear Leveling:SG方式)が提案されている。SG方式は、初期状態として、物理アドレスの順に論理アドレスが割り当てられ、最後の物理アドレスにギャップラインが割り当てられることを前提とする。
SG方式では、メモリコントローラが、メモリライン全体の書き込み回数をカウントし、カウント数が一定回数になった場合にギャップラインの位置を1つ前の物理アドレスにシフトさせる。このとき、メモリコントローラは、シフト先のメモリラインにあるデータをギャップラインにコピーし、シフト先のメモリラインをギャップラインに設定する。なお、SG方式では、ギャップラインのシフト回数をもとにメモリコントローラが論理アドレスと物理アドレスとの対応関係を把握する。
なお、メモリライン全体を複数のリージョンに分け、リージョン単位でSG方式を適用するなどのSG方式の改良技術も提案されている。また、書き換え保証回数が異なる複数種類のメモリが共存する不揮発性メモリについて、該不揮発性メモリへの書き込みデータの信頼性を確保するための技術が提案されている。該技術は、書き換え保証回数が少ないメモリへの書き込み回数をパーティション単位でカウントし、その書き込み回数が所定回数を超えたとき、書き換え保証回数が多いメモリへデータを書き込むように制御を行う。
特開2011−44207号公報
Moinuddin K. Qureshi et al.,"Enhancing Lifetime and Security of PCM-Based Main Memory with Start-Gap Wear Leveling", MICRO 2009. Lei Jiang et al., "LLS: Cooperative integration of wear-leveling and salvaging for PCM main memory", 2013 43rd Annual IEEE/IFIP International Conference on Dependable Systems and Networks. Hongliang Yu and Yuyang Du, "Increasing Endurance and Security of Phase-Change Memory with Multi-Way Wear-Leveling", Computers, IEEE Transactions on Vol.63.
TB方式は、変換テーブルを利用するため、プロセス技術の微細化や積層技術の向上などにより記憶素子の集積度が向上しメモリサイズが大きくなると、これに伴って変換テーブルのサイズも大きくなる。そのため、変換テーブルが占めるメモリサイズが大きくなる上、論理アドレスから物理アドレスへの変換に時間がかかることが問題となる。
他方、SG方式は、変換テーブルを利用せず、シフト回数などをもとに計算で論理アドレスから物理アドレスへの変換ができるため、メモリサイズが大きくなってもTB方式が有する上記問題は生じない。但し、SG方式は、TB方式と比べてウェアレベリングの効率(書き込み先の平準化の効果)が低い。上記のようにSG方式の改良技術も提案されてはいるが、ウェアレベリングの効率について改善の余地が依然としてある。
本発明の目的は、ウェアレベリングの効率をさらに高めることが可能な記憶装置、記憶装置の制御方法、及び情報処理システムを提供することにある。
一つの態様によれば、連続するアドレスのいずれかが割り当てられるとともに、アドレスが未割り当ての状態に設定される複数の第1のメモリラインと、連続するアドレスのいずれかが割り当てられる第2のメモリラインと、を有する物理メモリと、物理メモリへの書き込みアクセスが、複数の第1のメモリラインのいずれか又は第2のメモリラインのいずれかへの書き込みであるかを、アドレスに基づいて判定する判定部と、複数の第1のメモリラインそれぞれへの書き込み回数を示す複数の第1計数値と、第2のメモリラインへの書き込み回数を示す第2計数値とを計数する計数部と、複数の第1計数値と第2計数値との合計が所定の閾値を超えた場合、未割り当ての状態に設定されている第1のメモリラインを利用して、第2のメモリラインに割り当てられているアドレスと、第1のメモリラインに割り当てられているアドレスとを入れ替える制御部と、を有する、記憶装置が提供される。
本発明によれば、ウェアレベリングの効率をさらに高めることができる。
第1実施形態に係る情報処理システムの一例を示した図である。 第2実施形態に係る演算装置及び記憶装置のハードウェアへの実装形態及びその変形例を示した図である。 第2実施形態に係る記憶装置のメモリコントローラ及びメモリモジュールの機能などを示したブロック図である。 第2実施形態の一変形例に係る記憶装置のメモリコントローラ及びメモリモジュールの機能などを示したブロック図である。 第2実施形態に係るメモリラインのシフト制御方法について説明するための図である。 第2実施形態に係るメモリラインの置換制御方法について説明するための第1の図である。 第2実施形態に係るメモリラインの置換制御方法について説明するための第2の図である。 第2実施形態に係るメモリモジュールが有する優先ラインの数について説明するための図である。 第2実施形態に係るメモリコントローラが実行する処理の流れを示した第1のフロー図である。 第2実施形態に係るメモリコントローラが実行する処理の流れを示した第2のフロー図である。 第2実施形態に係る技術の適用による効果を示した図である。
以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
<1.第1実施形態>
図1を参照しながら、第1実施形態について説明する。図1は、第1実施形態に係る情報処理システムの一例を示した図である。
第1実施形態は、複数のメモリラインを有する物理メモリへのデータ書き込み時に、各メモリラインへの書き込み回数をカウントし、カウント数に応じてアドレス(論理アドレス)とメモリラインとの対応関係を制御する技術に関する。また、第1実施形態は、複数のメモリラインを2種類のグループ(優先ラインのグループ、通常ラインのグループ)に分け、通常ラインのグループ内での制御と、グループを跨いだ制御とを組み合わせることで、ウェアレベリングの効率を向上する方法を提供する。以下、図1に示した情報処理システム5を例に、第1実施形態に係る技術について説明する。
図1に示すように、情報処理システム5は、記憶装置10と、情報処理装置20とを含む。記憶装置10は、データを記憶するストレージ装置である。情報処理装置20は、記憶装置10に接続され、記憶装置10へのデータの読み書き処理を実行する。
記憶装置10は、物理メモリ11、判定部12、計数部13、及び制御部14を有する。物理メモリ11は、例えば、NAND型フラッシュメモリ、ReRAM、PCM、STT−MRAMなどの不揮発性のメモリ素子を含むメモリモジュールである。なお、物理メモリ11は、DRAM(Dynamic Random Access Memory)などの揮発性のメモリ素子をさらに含んでいてもよい。判定部12、計数部13、及び制御部14は、物理メモリ11を制御するメモリコントローラの要素である。
情報処理装置20は、例えば、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、MPU(Micro Processing Unit)などのプロセッサを含む演算処理装置と、メインメモリなどの主記憶装置とを含んだサーバなどのコンピュータである。情報処理装置20は、バスやネットワークなどを介して記憶装置10と双方向にデータを転送できる。記憶装置10は、CPU、RAM(Random Access Memory)、HDD(Hard Disk Drive)などを有する独立したストレージ装置である。図1の例で、情報処理装置20は、アドレスA、B、C、Dのうち、書き込み先となるアドレスを指定して物理メモリ11へのデータの書き込みを要求する。アドレスA、B、C、Dは、論理アドレスの一例である。
物理メモリ11は、第1のメモリライン11b、…、11e、及び第2のメモリライン11aを有する。第1のメモリライン11b、…、11eと第2のメモリライン11aの書き換え耐性(耐久性)は同じであってもよいが、第2のメモリライン11aの耐久性が第1のメモリライン11b、…、11eより高い方が好ましい。また、第1のメモリライン11b、…、11eは不揮発性のメモリ素子で構成されるが、第2のメモリライン11aは揮発性又は不揮発性のメモリ素子で構成されうる。
第1のメモリライン11b、…、11eは、連続するアドレスA、…、Dのいずれかが割り当てられるとともに、アドレスA、…、Dが未割り当ての状態に設定される。以下、アドレスA、…、Dが未割り当ての状態に設定されたメモリラインをギャップラインGapと呼ぶ場合がある。第2のメモリライン11aは、連続するアドレスA、…、Dのいずれかが割り当てられる。図1の例で、第1のメモリライン11b、…、11eは、それぞれ物理アドレスP1、…、P4で識別される。第2のメモリライン11aは、物理アドレスPXで識別される。
判定部12は、物理メモリへの書き込みアクセスが、第1のメモリライン11b、…、11eのいずれか又は第2のメモリライン11aのいずれかへの書き込みであるかをアドレスA、…、Dに基づいて判定する。つまり、判定部12は、情報処理装置20がアドレスBを書き込み先に指定した場合、指定されたアドレスBに対応するメモリラインがどれかを判定する。
計数部13は、第1のメモリライン11b、…、11eそれぞれへの書き込み回数を示す第1計数値CntP1、…、CntP4と、第2のメモリライン11aへの書き込み回数を示す第2計数値CntXとを計数する。
図1の例で、計数部13は、第1のメモリライン11bへの書き込み回数を計数するラインカウンタ13bを用いて第1計数値CntP1を計数する。同様に、計数部13は、第1のメモリライン11c、…、11eへの書き込み回数をそれぞれ計数するラインカウンタ13c、…、13eを用いて第1計数値CntP2、…、CntP4を計数する。また、計数部13は、第2のメモリライン11aへの書き込み回数を計数するラインカウンタ13aを用いて第2計数値CntXを計数する。
制御部14は、第1計数値CntP1、…、CntP4と第2計数値CntXとの合計が所定の閾値Thを超えたかを判定する。該合計が閾値Thを超えた場合、制御部14は、未割り当ての状態に設定されている第1のメモリラインを利用して、第2のメモリライン11aに割り当てられているアドレスと、第1のメモリラインに割り当てられているアドレスとを入れ替える。
図1(#1)の例では、CntP1、…、CntP4、CntXの合計が閾値Thを超えたとき、S1のように、物理アドレスPXの第2のメモリライン11aにアドレス「A」が割り当てられている。一方、物理アドレスP1に対応する第1のメモリライン11bはギャップラインGapに設定され、アドレスが未割り当ての状態にある。物理アドレスP2、P3、P4にそれぞれ対応する第1のメモリライン11c、11d、11eには、それぞれアドレス「B」、「C」、「D」が割り当てられている。
この状態で、制御部14は、第1のメモリライン11b(P1)に対して第2のメモリライン11aに割り当てられているアドレス「A」を割り当てる(S2)。次に、制御部14は、第1のメモリライン11b(P1)の次のラインに位置する第1のメモリライン11c(P2)に割り当てられているアドレス「B」を第2のメモリライン11aに割り当てる。次に、制御部14は、第1のメモリライン11c(P2)をギャップラインGapに設定し、アドレスが未割り当ての状態にする(S3)。
他方、CntP1、…、CntP4、CntXの合計が閾値Thを超えていない場合、制御部14は、図1(#2)に示すように、第1計数値CntP1、…、CntP4に応じて、第1のメモリライン11b、…、11eの範囲でギャップラインGapをシフトさせる。このシフトが発生する条件(シフト条件)としては、例えば、CntP1、…、CntP4、CntXの合計がシフト用閾値を超えた場合や、特定の第1のメモリラインに書き込みが集中した場合(第1計数値の分布に大きなピークが出た場合)などが適用されうる。
シフト条件を満たすと、制御部14は、ギャップラインGapに設定されている第1のメモリライン11cに対し、その次に位置する第1のメモリライン11dに割り当てられているアドレス「C」を割り当てる。そして、制御部14は、第1のメモリライン11dをギャップラインGapに設定する。また、制御部14は、シフトを実行した回数(シフト数)を保持する。
シフト数が0の際に第1のメモリライン11bに割り当てられていたアドレス「A」と、ギャップラインGapが設定されていた第1のメモリライン11cの物理アドレス「P2」と、シフト数とから、アドレスの割り当て状況が計算できる。
例えば、図1(#2)の例で、シフト数が「2」であれば、ギャップラインGapは2ライン分(つまり、P2→P1→P4)と移動し、第1のメモリライン11dに設定されていることが分かる。また、第1のメモリライン11b、11c、11eにそれぞれ割り当てられたアドレス「D」、「A」、「C」も計算でき、アドレスと、第1のメモリライン11b、…、11eとの関係を記した変換テーブルを用いずに済むため、TB方式よりも記憶容量を節約することができる。
上記のシフト処理を実行しても特定のメモリラインへの書き換えが集中する可能性はあるが、図1(#1)に示した処理により上記のシフト処理とは独立してメモリラインへの割り当て制御が行われるため、SG方式に比べてウェアレベリングの効率が高くなる。つまり、1つのシフト法則に基づくギャップラインGapのシフトを採用するSG方式に比べ、これとは独立した法則に基づく図1(#1)の割り当て制御が行われることで、書き換え対象の分散効果が高まり、ウェアレベリングの効率向上が期待できる。
また、第2のメモリライン11aに耐久性の高いメモリ素子を利用することで、第2のメモリライン11aに書き換え処理が集中した場合における耐性が向上する。このように耐久性の高いメモリ素子を利用し、第2のメモリライン11aに書き換え処理が集中するようにすれば、第1のメモリライン11b、…、11eに対する負荷が下がるため、物理メモリ11の耐久性・信頼性が高まる。
例えば、制御部14が、複数の第1のメモリライン11b、…、11eのうち最大の第1計数値に対応する第1のメモリラインに割り当てられているアドレスを入れ替えの対象とすれば、物理メモリ11の耐久性・信頼性を高める効果が促進される。
なお、図1の例では、ギャップラインGapに設定された第1のメモリライン11b、…、11eに対して第2のメモリライン11aに割り当てられるアドレスを割り当てた場合に、第1のメモリライン11b、…、11eの並び順に従ってアドレスA、…、Dが連続するように、アドレスA、…、Dが割り当てられている。この場合、ギャップラインGapの位置によっては、図1(#1)のS1からS3の入れ替え処理後、アドレスの並び順を整合させるための再割り当て操作が生じることがある。
そのため、制御部14は、第2のメモリライン11aに割り当てられているアドレスをギャップラインGapの位置に割り当てた場合にアドレスA、…、Dの連続性が維持されるかを判定し、該連続性が維持される場合に入れ替え処理を実施することが好ましい。図1(#1)の例では、ギャップラインGapの次の第1のメモリライン11cに、アドレス「A」に続くアドレス「B」が位置するタイミングで上記の入れ替え処理が実行されている。この場合、図1(#1)に示すようにアドレスの並び順を維持したまま、最小限の割り当て操作でアドレスの入れ替え処理が完了する。
上記のように、第2のメモリライン11aを優先ラインとし、第1のメモリライン11b、…、11eを通常ラインとして、通常ラインの範囲でのライン制御と、両ラインを跨ぐライン制御とを組み合わせることで、ウェアレベリングの効率向上が期待できる。また、優先ラインの耐久性を通常ラインより高めることで、物理メモリ11の耐久性・信頼性をさらに高めることができる。さらに、優先ラインと通常ラインとを跨ぐライン制御を実施するタイミングをギャップラインGapの位置に応じて適切に制御することで、処理負荷を低減することができる。
以上、第1実施形態について説明した。
<2.第2実施形態>
次に、第2実施形態について説明する。
第2実施形態は、複数のメモリラインを有する物理メモリへのデータ書き込み時に、各メモリラインへの書き込み回数をカウントし、カウント数に応じて論理アドレスとメモリラインとの対応関係を制御する技術に関する。また、第2実施形態は、複数のメモリラインを優先ラインのグループと通常ラインのグループとに分け、通常ラインのグループ内での制御と、グループを跨いだ制御とを組み合わせることで、ウェアレベリングの効率を向上する方法を提供する。
[2−1.ハードウェアへの実装]
第2実施形態に係る技術は、複数のメモリラインを有するメモリモジュールmMと、メモリモジュールmMのライン制御を実施するメモリコントローラmCとにより実現される。ここでは、メモリモジュールmM、メモリコントローラmCをハードウェアへ実装する際の実装形態について説明する。図2は、第2実施形態に係る演算装置及び記憶装置のハードウェアへの実装形態及びその変形例を示した図である。
図2(#1)には、第2実施形態に係る技術が適用可能なハードウェアの一例として、コンピュータに搭載される演算装置101及び記憶装置102を例示した。演算装置101は、例えば、CPU、FPGA、GPU(Graphics Processing Unit)などである。記憶装置102は、バスやネットワークなどを介して演算装置101と通信する。
演算装置101は、例えば、PCB(Printed Circuit Board)101a上に、演算チップ101cを含むパッケージ101bを搭載した実装形態をとる。パッケージ101b内や演算チップ101c内には、キャッシュメモリなどのメモリチップを含みうる。メモリチップは物理メモリの一例である。PCB101a上には、演算チップ101cを含むパッケージ101bとは異なるパッケージを搭載することもできる。
記憶装置102は、例えば、PCB102a上に、メモリチップ102cを含むパッケージ102bを搭載した実装形態をとる。メモリチップ102cは、物理メモリの一例である。メモリチップ102c内やパッケージ102b内には、メモリチップ102cの動作を制御する制御チップ(演算回路)が設けられうる。PCB102a上には、メモリチップ102cを含むパッケージ102bとは異なるパッケージを搭載することもできる。
図1(#1)の例は、メモリモジュールmM、メモリコントローラmCを記憶装置102に実装する形態を示している。例えば、メモリチップ102cがメモリモジュールmMとして機能し、パッケージ102bに搭載した制御チップがメモリコントローラmCとして機能する。この形態以外にも、例えば、図1(#2)に示すような様々な実装形態をとりうる。
(A)の形態は、演算装置101のパッケージ101bにメモリコントローラmCとして機能する制御チップを搭載し、PCB101a上にメモリモジュールmMとして機能するメモリチップを含むパッケージを搭載した例である。(B)の形態は、演算チップ101cがメモリコントローラmCとして機能する例である。
(C)の形態は、記憶装置102のメモリチップ102cがメモリモジュールmM及びメモリコントローラmCとして機能する例である。(D)の形態は、メモリチップ102cがメモリモジュールmMとして機能し、これとは別にパッケージ102b上にメモリコントローラmCとして機能する制御チップを搭載した例である。(D)のような実装形態は、SiP(System in Package)と呼ばれる。(E)の形態は、メモリチップ102cをメモリモジュールmMとして機能させ、PCB102a上に、メモリコントローラmCとして機能する制御チップを含むパッケージ102bを搭載した例である。
第2実施形態に係る技術の適用範囲は上記の例に限定されないが、上記のような実装形態をとることで、ハードウェア資源による同技術の具現化が可能になる。
[2−2.機能ブロック]
次に、図3を参照しながら、メモリコントローラmC及びメモリモジュールmMの機能について説明する。図3は、第2実施形態に係る記憶装置のメモリコントローラ及びメモリモジュールの機能などを示したブロック図である。なお、図3に例示したメモリコントローラ110は、メモリコントローラmCの一例である。また、メモリモジュール130は、メモリモジュールmMの一例である。
メモリコントローラ110は、要求保持部111、アドレス判定部112、ライン計算部113、R/W制御部114、カウンタ制御部115、ライン制御部116、ポインタ保持部117、及びテーブル保持部118を有する。
一方、メモリモジュール130は、HE(High Endurance)メモリ131、LE(Low Endurance)メモリ132、及びカウンタ133を有する。なお、HEメモリ131は、LEメモリ132に比べて書き換え耐性(耐久性)が高い。例えば、HEメモリ131としては、DRAM、SLC(Single Level Cell)、ReRAMが適用されうる。但し、両メモリ素子の耐久性が同じであっても、第2実施形態に係る技術を適用しうる。
図3の例では、HEメモリ131に物理アドレスPXを有するメモリラインが設定されている。以下、HEメモリ131のメモリラインを優先ラインと呼ぶ場合がある。LEメモリ132には、物理アドレスP1、…、P4を有する複数のメモリラインが設定されている。以下、LEメモリ132のメモリラインを通常ラインと呼ぶ場合がある。また、物理アドレスがPk(k=1,…,4,X)のメモリラインをメモリラインPkと表記する場合がある。
カウンタ133は、HEメモリ131及びLEメモリ132に設定されている各メモリラインへの書き込み回数をカウントする。以下、メモリラインPXへの書き込み回数をCntX、メモリラインP1、…、P4への書き込み回数をそれぞれCnt1、…、Cnt4と表記する。つまり、CntX、Cnt1、…、Cnt4はカウンタ133によるカウント値である。
要求保持部111は、メモリモジュール130への読み書き処理の最中に演算装置101から読み書き要求を受けた場合に、その読み書き要求を一時的に保持する。アドレス判定部112は、読み書き要求で指定された読み書き先の論理アドレスが、優先ラインに対応するか否かを判定する。このとき、アドレス判定部112は、テーブル保持部118が保持する変換テーブルを参照する。変換テーブルは、優先ラインと、論理アドレスとを対応付けるテーブルである。
アドレス判定部112は、判定結果をR/W制御部114に通知する。また、読み書き先の論理アドレスが優先ラインに対応しない場合、アドレス判定部112は、その論理アドレスをライン計算部113に通知する。ライン計算部113は、アドレス判定部112から通知された論理アドレスに対応する通常ラインを計算する。ライン計算部113は、計算結果をR/W制御部114に通知する。
R/W制御部114は、アドレス判定部112、ライン計算部113から受けた通知に基づいて読み書き先のメモリラインを特定し、特定したメモリラインに対する読み書き処理を実行する。読み出し処理の場合、R/W制御部114は、メモリラインから読み出したデータを演算装置101に送る。一方、書き込み処理の場合、R/W制御部114は、データを書き込んだメモリラインをカウンタ制御部115に通知する。
カウンタ制御部115は、カウンタ133を制御し、R/W制御部114から通知を受けたメモリラインのカウント値を増加させる。ライン制御部116は、各メモリラインに対する論理アドレスの割り当てを制御する。また、ライン制御部116は、各メモリラインのカウント値を監視し、通常ラインに関するカウント値の合計が予め設定された閾値を超えた場合、通常ラインに設定されたギャップラインをシフトさせる。このとき、ライン制御部116は、後述するシフト制御又は置換制御を実施する。
ライン制御部116は、シフト制御又は置換制御を実施した後、ライン計算部113が論理アドレスから物理アドレスを計算する際に参照する特定のメモリラインの位置を示すポインタ(Start、Gap)を特定し、ポインタ保持部117に通知する。また、ライン制御部116は、置換制御を実施した後、テーブル保持部118が保持する変換テーブルを更新する。
以上、メモリコントローラmC及びメモリモジュールmMの機能について説明した。なお、図4に示すように、カウンタ133をメモリコントローラ110に搭載してもよい。図4は、第2実施形態の一変形例に係る記憶装置のメモリコントローラ及びメモリモジュールの機能などを示したブロック図である。
[2−3.ライン制御方法]
ここで、メモリラインの制御に関する処理方法について説明する。
(2−3−1.通常ラインの更新操作)
まず、図5を参照しながら、通常ラインの更新操作であるシフト制御について説明する。上記の通り、このシフト制御の処理は、主にライン制御部116が実行する。図5は、第2実施形態に係るメモリラインのシフト制御方法について説明するための図である。
図5の例では、初期状態(シフト数=0)で、論理アドレスA、B、C、Dが、メモリラインPX、P1、P2、P3に割り当てられ、アドレスが未割り当てのメモリライン(ギャップライン)がメモリラインP4に設定されている。なお、論理アドレスの並び順はA→B→C→D(降順)に設定され、通常ラインについて物理アドレスの並び順はP1→P2→P3→P4(降順)に設定されているとする。
ポインタ保持部117は、初期状態で、通常ラインの先頭に位置するメモリラインP1に割り当てられた論理アドレスBの位置(物理アドレス)を示すポインタStartを保持する。また、ポインタ保持部117は、ギャップラインに設定されたメモリラインの位置(物理アドレス)を示すポインタGapを保持する。なお、図中ではギャップラインの位置にGapと表示する。図5に示すように、これらのポインタの組117aは、ライン制御部116がシフト制御を実施する度に変化する。
シフト制御は、通常ラインの範囲(メモリラインP1、…、P4)で実施される。シフト制御の実施条件(シフト条件)を満たした場合、ライン制御部116は、ギャップラインを1つ前のラインに移動させる。例えば、ライン制御部116は、メモリラインP4に設定されていたギャップラインをメモリラインP3に移動させる。このとき、ライン制御部116は、移動先のメモリラインにあるデータを移動前のメモリラインにコピーし、移動先のメモリラインをギャップラインに設定する。
なお、図5の例でシフト数が3の場合のように、メモリラインP1にギャップラインが設定された状態でシフト制御を実施する場合、ライン制御部116は、最後に位置するメモリラインP4にギャップラインをシフトさせる。シフト制御が繰り返されると、図5に示すように、論理アドレスA、…、Dに対応する物理アドレスPX、P1、…、P4は、ライン制御部116がシフト制御を実施する度に変化する。但し、優先ラインへの割り当ては、シフト制御によって変化しない。
(2−3−2.優先ラインの更新操作)
次に、図6及び図7を参照しながら、優先ラインの更新操作である置換制御について説明する。上記の通り、この置換制御の処理は、主にライン制御部116が実行する。図6は、第2実施形態に係るメモリラインの置換制御方法について説明するための第1の図である。図7は、第2実施形態に係るメモリラインの置換制御方法について説明するための第2の図である。
図6の例は、図5の例でシフト数が3の状態において置換制御の実施条件(置換条件)を満たした場合の置換制御を示している。置換条件は、通常ラインの合計カウント数(Cnt1+…+Cnt4)が予め設定された閾値Thを超えたことである(S11)。置換条件を満たした場合、ライン制御部116は、通常ラインに関するカウント値のうち最大のカウント値CntMを特定する(S12)。
そして、ライン制御部116は、CntMに対応するメモリラインに割り当てられていた論理アドレスを優先ラインに割り当て、優先ラインに割り当てられていた論理アドレスをギャップラインに割り当てる。さらに、ライン制御部116は、CntMに対応するメモリラインをギャップラインに設定する。例えば、CntMがCnt2の場合には置換制御はS13aのようになり、CntMがCnt3の場合にはS13bのようになる。
ライン制御部116は、置換制御後の状態で、ポインタStart、Gapを更新し、シフト数をギャップラインの移動量分だけ調整する(S14)。例えば、S13aの場合、置換制御により、優先ラインに割り当てられた論理アドレスがAからBに置換されている。そのため、ライン制御部116は、論理アドレスの差(この場合には1番目の論理アドレスから2番目の論理アドレスへの変化なので「1−2=−1」の計算から−1)を移動量分とする。図6の例はシフト数が3の状態であったから、「1−3=−2」の計算により、シフト数が2に調整される。
また、ライン制御部116は、変換テーブルを更新する。つまり、ライン制御部116は、優先ラインの物理アドレスPXと、新たに優先ラインに割り当てられた論理アドレス(S13aの場合はB、S13bの場合はC)とを対応付けるように変換テーブルを更新する。ライン制御部116により更新されたポインタはポインタ保持部117により保持され、更新後の変換テーブルはテーブル保持部118により保持される。
なお、ここでは通常ラインの合計カウント数が閾値Thを超えた場合に優先ラインの更新操作を行う方法を例示したが、通常ラインと優先ラインの合計カウント数が閾値Thを超えた場合に同操作を行うように変形してもよい。
(実施タイミングについて)
図6の例では、優先ラインの論理アドレスをギャップラインに割り当て、CntMに対応するメモリラインの論理アドレスを優先ラインに割り当てることで、通常ラインの範囲における論理アドレスの並び順が維持される状態になっていた。しかし、置換制御を実施するタイミングによっては、図7に示すように、論理アドレスの並び順が乱れる場合(並び順エラー)がある。この場合、ライン制御部116は、図7(S13c)に示すように、論理アドレスの交換を繰り返し実施して正しい並び順に調整する。
但し、論理アドレスの交換を行う際に、置換対象のメモリラインにあるデータのコピーが生じるため、交換の回数を少なくすれば処理負担を減らすことができる。そのため、ライン制御部116は、置換条件を満たし、さらに、ギャップラインに優先ラインの論理アドレスを割り当てた状態で正しい並び順になる場合に置換制御を実施してもよい。
例えば、図6(S13a)に示すように、ギャップライン(P1)の次のメモリライン(P2)に割り当てられた論理アドレス(B)が、優先ラインに割り当てられた論理アドレス(A)の次の論理アドレス(B)に一致するときが好適な実施タイミングとなる。このようなタイミング調整を行うことで、置換制御の実施により図7に示すような並び順エラーが生じずに済むため、置換制御に伴う処理負担が軽減され、処理の高速化に寄与する。
(優先ラインの数について)
これまで、説明の都合上、優先ラインの数を1つとして説明してきたが、図8に示すように、複数の優先ラインが設けられていてもよい。図8は、第2実施形態に係るメモリモジュールが有する優先ラインの数について説明するための図である。この場合、ライン制御部116は、CntMに対応するメモリラインの置換に適した優先ラインを選択し、選択した優先ラインを対象に上述した置換制御を実施する。後述する処理フローは、優先ラインが複数の場合を考慮した処理の流れを示している。
[2−4.処理フロー]
図9及び図10を参照しながら、メモリコントローラ110が実行する処理の流れについて説明する。図9は、第2実施形態に係るメモリコントローラが実行する処理の流れを示した第1のフロー図である。図10は、第2実施形態に係るメモリコントローラが実行する処理の流れを示した第2のフロー図である。なお、図9及び図10に示した処理は、電源断などの所定の終了条件を満たした場合に終了する。
(S101)要求保持部111は、演算装置101が発したメモリモジュール130への読み書きを要求する入出力命令を受け付ける。このとき、要求保持部111は、読み書き先の論理アドレスLAを取得する。また、要求保持部111は、メモリモジュール130が他の読み書き処理の最中である場合、受け付けた入出力命令を保持する。
(S102)アドレス判定部112は、要求保持部111が受け付けた入出力命令が優先ラインを対象とするか否かを判定する。例えば、アドレス判定部112は、テーブル保持部118が保持する変換テーブルを参照し、優先ラインの物理アドレスPXに対応する論理アドレスとしてLAが登録されているか否かを判定する。優先ラインを対象とする場合、処理はS103へと進む。一方、優先ラインを対象としない場合、処理はS104へと進む。
(S103)アドレス判定部112は、テーブル保持部118が保持する変換テーブルをもとに論理アドレスLAを物理アドレスPAに変換する。
(S104)ライン計算部113は、計算により、論理アドレスLAが割り当てられている通常ラインの物理アドレスPAを特定する。このとき、ライン計算部113は、パラメータTA、TG(初期値:TA=TG=0)を利用する。
以下、通常ラインの総数をNL、ギャップラインのポインタをGap、初期状態(シフト数が0の状態)で通常ラインの先頭に位置するメモリラインに割り当てられた論理アドレスの割り当て位置を示すポインタをStartと表記する。例えば、図5の例でシフト数が4の場合、Gapが3(メモリラインP1の位置をポインタ0で表現した場合)、Startが1となる。この例ではNLが4となる。
ライン計算部113は、「TA=Start+LA」を計算する。次に、ライン計算部113は、Start>Gapであるか否かを判定する。Start>Gapである場合、ライン計算部113は、「TG=Gap+NL」を計算する。一方、Start≦Gapである場合、ライン計算部113は、「TG=Gap」とする。次に、ライン計算部113は、TA>TGであるか否かを判定する。TA>TGである場合、ライン計算部113はTAを1増加させる。次に、ライン計算部113は、「PA=TA mod NL」を計算する。modは剰余演算を表す。
(S105)R/W制御部114は、S103又はS104で得られた物理アドレスPAに対するデータの読み書き処理を実行する。
(S106)カウンタ制御部115は、S105で実行された処理が書き込み処理か否かを判定する。書き込み処理である場合、処理はS107へと進む。一方、読み出し処理である場合、処理はS101へと進む。
(S107)カウンタ制御部115は、カウンタ133を制御し、物理アドレスPAをもつメモリライン(書き込み先ライン)に対応するカウンタ値を1増加させる。
(S108)カウンタ制御部115は、通常ラインに関するカウント値の合計(総書き込み回数NW)を1増加させる。
(S109)ライン制御部116は、NW>TWであるか否かを判定する。但し、TWは予め設定された閾値である。TWは、例えば、通常ラインの耐久性や実験結果などをもとに設定される。NW>TWである場合、処理はS110(図10)へと進む。一方、NW≦TWである場合、処理はS101へと進む。
(S110)ライン制御部116は、置換制御に適した優先ラインpLを特定する。つまり、ライン制御部116は、置換制御を実施した場合に図7に示すような並び順エラーが生じない優先ラインpLを特定する。
例えば、ライン制御部116は、対象の優先ラインに割り当てられた論理アドレスの次の論理アドレスと、ギャップラインの次に位置する通常ラインに割り当てられた論理アドレスが一致する場合に、その優先ラインを優先ラインpLとする(図6を参照)。なお、図8に示すように優先ラインが複数ある場合でも、S110で特定される優先ラインpLの数は高々1つである。
(S111)ライン制御部116は、S110で優先ラインpLが特定されたか否かを判定する。優先ラインpLが特定された場合、処理はS112へと進む。一方、優先ラインpLが特定されなかった場合、処理はS114へと進む。
(S112)ライン制御部116は、通常ラインに対応するカウント値Cnt1、…、Cnt4の中から最大のカウント値CntMを抽出する。
(S113)ライン制御部116は、CntMが優先ラインpLへの書き込み回数を示すカウント値より大きいか否かを判定する。CntMの方が大きい場合、処理はS114へと進む。一方、CntMの方が小さい場合、処理はS115へと進む。つまり、置換先の優先ラインpLの方により多くの書き込みが集中している場合には、優先ラインpLに対する置換制御が行われないようにする。
(S114)ライン制御部116は、シフト制御を実施する。つまり、ライン制御部116は、ギャップラインのシフト先にあるデータをシフト前のギャップラインにコピーし、ギャップラインをシフト先のメモリラインにシフトさせる(Line(Gap)=Line(Gap−1))。また、ライン制御部116は、通常ラインへの総書き込み回数NWを0にリセットし、シフト回数を示すパラメータShiftを1増加させる。S114の処理が完了すると、処理はS119へと進む。
(S115)ライン制御部116は、優先ラインpLにあるデータをギャップラインにコピーする。つまり、ライン制御部116は、事実上、優先ラインpLに割り当てられていた論理アドレスをコピー先のギャップラインに対応するメモリライン(通常ライン)に割り当てる。但し、通常ラインに対する論理アドレスの割り当て関係はライン計算部113による計算で求められるため、テーブルなどへの登録などは生じない。
(S116)ライン制御部116は、CntMに対応するメモリラインにあるデータを優先ラインpLにコピーする。つまり、ライン制御部116は、事実上、CntMに対応するメモリラインに割り当てられていた論理アドレスを優先ラインpLに割り当てる。
(S117)ライン制御部116は、変換テーブルを更新する。S115の場合とは異なり、優先ラインpLに対する論理アドレスはライン計算部113による計算で求められないため、ライン制御部116は、置換制御による割り当て関係の変化を変換テーブルに反映させる。
(S118)ライン制御部116は、CntMに対応するメモリラインをギャップラインに設定し、シフト数Shiftを変更し、カウンタ133の全てのカウンタ値を0にリセットする。シフト数Shiftの変更は、図6(S14)に示すように、優先ラインpLに割り当てられた論理アドレスの置換制御前後における順番の差に基づいて行われる。つまり、ライン制御部116は、置換制御前のシフト数Shiftに上記順番の差を加算して新たなシフト数Shiftとする。
(S119)ライン制御部116は、ポインタGap、Startなどのパラメータを更新する。例えば、ライン制御部116は、「Gap=NL−1−(Shift mod NL)」を計算してポインタGapを更新する。また、ライン制御部116は、「Start=Int(Shift/(NL−1))」を計算してポインタStartを更新する。また、ライン制御部116は、Shift>NL(NL−1)の場合、Shiftを0にリセットする。S119の処理が完了すると、処理はS101(図9)へと進む。
以上、メモリコントローラ110が実行する処理の流れについて説明した。
上記のように、通常ラインの範囲内でシフト制御を実施することで書き込み負荷が分散され、さらに、優先ラインの置換制御を実施することで、シフト制御をしてもなお特定の通常ラインへの書き込みが集中するような状況でも書き込み負荷が平準化される。つまり、第2実施形態に係る技術を適用することでウェアレベリングの効率が向上する。
上記のシフト制御は一定の規則に基づくギャップラインのシフトであるため、変換テーブルを利用せずにアドレス変換が実現される。一方、置換制御では優先ラインについて変換テーブルを利用するが、通常ラインを含めた全てのメモリラインに関する変換テーブルを保持する場合に比べて記憶容量が少なくて済む。つまり、第2実施形態によれば、SG方式に比べてウェアレベリングの効率向上が見込め、かつ、TB方式のように規模の大きな変換テーブルを保持せずに済む分だけ記憶容量を節約することが可能になる。
(効果)
図11を参照しながら、上述した効果について説明を補足する。図11は、第2実施形態に係る技術の適用による効果を示した図である。図11の横軸は優先ラインへのアクセス集中度を示し、縦軸はウェアレベリングの性能(任意単位)を示す。
総ライン数をN、HEメモリ131のライン数をX、LEメモリ132に比べたHEメモリ131へのアクセス集中度(倍率)をa(横軸)、シフト数をSとした場合、書き込み回数はそれぞれ下記の式(1)〜式(3)でおよそ評価できる。式(1)のMはLEメモリ132への書き込み回数であり、式(2)のRはHEメモリ131への書き込み回数であり、式(3)のTは総書き込み回数である。
Figure 2016170703
Figure 2016170703
Figure 2016170703
Xが0の場合の書き込み回数M、TをそれぞれM0、T0(下記の式(4)及び式(5)を参照)とすると、性能の向上度を表す評価値Gは下記の式(6)で表現できる。図11は、メモリライン全体に占める優先ラインの割合毎に、優先ラインへのアクセス集中度に対する性能を評価値Gで評価した結果である。図11から分かるように、性能の向上効果は、優先ラインの割合とアクセス集中度とが相乗的に寄与する。
Figure 2016170703
Figure 2016170703
Figure 2016170703
なお、変換テーブルのサイズについても簡単に言及する。メモリモジュール130全体のサイズをNとし、各メモリラインのサイズをLSとすると、メモリラインの数NLはN/LSで与えられる。TB方式の場合、変換テーブルの大きさTは「T=2×NL×log2(NL)」で与えられる。一方、第2実施形態の場合、HEメモリ131のライン数をMとすれば、変換テーブルの大きさTは「T=M×log2(NL)」で与えられる。つまり、変換テーブルのサイズをM/(2×NL)に縮小することが可能になる。
以上、第2実施形態について説明した。
5 情報処理システム
10 記憶装置
11 物理メモリ
11a 第2のメモリライン
11b、11c、11d、11e 第1のメモリライン
12 判定部
13 計数部
13a、13b、13c、13d、13e ラインカウンタ
14 制御部
20 情報処理装置
A、B、C、D アドレス
Gap ギャップライン
CntP1、CntP2、CntP3、CntP4 第1計数値
CntX 第2計数値
PX、P1、P2、P3、P4 物理アドレス
Th 閾値

Claims (8)

  1. 連続するアドレスのいずれかが割り当てられるとともに、前記アドレスが未割り当ての状態に設定される複数の第1のメモリラインと、前記連続するアドレスのいずれかが割り当てられる第2のメモリラインと、を有する物理メモリと、
    前記物理メモリへの書き込みアクセスが、前記複数の第1のメモリラインのいずれか又は前記第2のメモリラインのいずれかへの書き込みであるかを、前記アドレスに基づいて判定する判定部と、
    前記複数の第1のメモリラインそれぞれへの書き込み回数を示す複数の第1計数値と、前記第2のメモリラインへの書き込み回数を示す第2計数値とを計数する計数部と、
    前記複数の第1計数値と前記第2計数値との合計が所定の閾値を超えた場合、前記未割り当ての状態に設定されている前記第1のメモリラインを利用して、前記第2のメモリラインに割り当てられている前記アドレスと、前記第1のメモリラインに割り当てられている前記アドレスとを入れ替える制御部と、
    を有する、記憶装置。
  2. 前記制御部は、前記アドレスの入れ替えにおいて、前記未割り当ての状態に設定されている前記第1のメモリラインに対して前記第2のメモリラインに割り当てられている前記アドレスを割り当て、該第1のメモリラインの次のラインに位置する前記第1のメモリラインに割り当てられている前記アドレスを前記第2のメモリラインに割り当て、該次のラインに位置する前記第1のメモリラインを前記未割り当ての状態に設定する
    請求項1に記載の記憶装置。
  3. 前記未割り当ての状態に設定された前記第1のメモリラインに対して前記第2のメモリラインに割り当てられる前記アドレスを割り当てた場合に、前記複数の第1のメモリラインの並び順に従って前記アドレスが連続するように、前記アドレスは割り当てられており、
    前記制御部は、前記第2のメモリラインに割り当てられている前記アドレスを前記未割り当ての状態に設定されている前記第1のメモリラインに割り当てた場合に前記アドレスの連続性が維持されるかを判定し、該連続性が維持される場合に前記入れ替えを実施する
    請求項2に記載の記憶装置。
  4. 前記制御部は、前記複数の第1のメモリラインのうち最大の前記第1計数値に対応する前記第1のメモリラインに割り当てられている前記アドレスを前記入れ替えの対象とする
    請求項1に記載の記憶装置。
  5. 前記第2のメモリラインは、前記第1のメモリラインよりも耐久性が高い
    請求項1〜4のいずれか1項に記載の記憶装置。
  6. 前記制御部は、前記第1計数値に応じて、前記未割り当ての状態に設定されている前記第1のメモリラインに対し、該第1のメモリラインの次のラインに位置する前記第1のメモリラインに割り当てられている前記アドレスを割り当て、該次のラインに位置する前記第1のメモリラインを前記未割り当ての状態に設定する処理を実行する
    請求項1に記載の記憶装置。
  7. コンピュータが、
    連続するアドレスのいずれかが割り当てられるとともに、前記アドレスが未割り当ての状態に設定される複数の第1のメモリラインと、前記連続するアドレスのいずれかが割り当てられる第2のメモリラインと、を有する物理メモリについて、前記物理メモリへの書き込みアクセスが、前記複数の第1のメモリラインのいずれか又は前記第2のメモリラインのいずれかへの書き込みであるかを、前記アドレスに基づいて判定し、
    前記複数の第1のメモリラインそれぞれへの書き込み回数を示す複数の第1計数値と、前記第2のメモリラインへの書き込み回数を示す第2計数値とを計数し、
    前記複数の第1計数値と前記第2計数値との合計が所定の閾値を超えた場合、前記未割り当ての状態に設定されている前記第1のメモリラインを利用して、前記第2のメモリラインに割り当てられている前記アドレスと、前記第1のメモリラインに割り当てられている前記アドレスとを入れ替える
    記憶装置の制御方法。
  8. 記憶装置と、前記記憶装置にデータを書き込む情報処理装置とを含む情報処理システムであって、
    前記記憶装置は、
    連続するアドレスのいずれかが割り当てられるとともに、前記アドレスが未割り当ての状態に設定される複数の第1のメモリラインと、前記連続するアドレスのいずれかが割り当てられる第2のメモリラインと、を有する物理メモリと、
    前記情報処理装置から前記物理メモリへの書き込みアクセスが、前記複数の第1のメモリラインのいずれか又は前記第2のメモリラインのいずれかへの書き込みであるかを、前記アドレスに基づいて判定する判定部と、
    前記複数の第1のメモリラインそれぞれへの書き込み回数を示す複数の第1計数値と、前記第2のメモリラインへの書き込み回数を示す第2計数値とを計数する計数部と、
    前記複数の第1計数値と前記第2計数値との合計が所定の閾値を超えた場合、前記未割り当ての状態に設定されている前記第1のメモリラインを利用して、前記第2のメモリラインに割り当てられている前記アドレスと、前記第1のメモリラインに割り当てられている前記アドレスとを入れ替える制御部と、
    を有する、情報処理システム。
JP2015050973A 2015-03-13 2015-03-13 記憶装置、記憶装置の制御方法、及び情報処理システム Pending JP2016170703A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015050973A JP2016170703A (ja) 2015-03-13 2015-03-13 記憶装置、記憶装置の制御方法、及び情報処理システム
US15/016,817 US20160267014A1 (en) 2015-03-13 2016-02-05 Storage apparatus, storage apparatus control method, and information processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015050973A JP2016170703A (ja) 2015-03-13 2015-03-13 記憶装置、記憶装置の制御方法、及び情報処理システム

Publications (1)

Publication Number Publication Date
JP2016170703A true JP2016170703A (ja) 2016-09-23

Family

ID=56886722

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015050973A Pending JP2016170703A (ja) 2015-03-13 2015-03-13 記憶装置、記憶装置の制御方法、及び情報処理システム

Country Status (2)

Country Link
US (1) US20160267014A1 (ja)
JP (1) JP2016170703A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019056981A (ja) * 2017-09-19 2019-04-11 東芝メモリ株式会社 メモリシステム
JP2022506259A (ja) * 2018-11-01 2022-01-17 マイクロン テクノロジー,インク. メモリ内のデータ再配置

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102403266B1 (ko) * 2015-06-22 2022-05-27 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10157141B2 (en) * 2016-03-09 2018-12-18 Toshiba Memory Corporation Memory system and method of controlling nonvolatile memory
US10585795B2 (en) 2018-05-31 2020-03-10 Micron Technology, Inc. Data relocation in memory having two portions of data
US11481119B2 (en) * 2019-07-15 2022-10-25 Micron Technology, Inc. Limiting hot-cold swap wear leveling
KR20210045029A (ko) * 2019-10-16 2021-04-26 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 동작 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120311228A1 (en) * 2011-06-03 2012-12-06 Advanced Micro Devices, Inc. Method and apparatus for performing memory wear-leveling using passive variable resistive memory write counters
US9811456B2 (en) * 2014-11-26 2017-11-07 Advanced Micro Devices, Inc. Reliable wear-leveling for non-volatile memory and method therefor

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019056981A (ja) * 2017-09-19 2019-04-11 東芝メモリ株式会社 メモリシステム
JP2022506259A (ja) * 2018-11-01 2022-01-17 マイクロン テクノロジー,インク. メモリ内のデータ再配置
US11983403B2 (en) 2018-11-01 2024-05-14 Micron Technology, Inc. Data relocation in memory

Also Published As

Publication number Publication date
US20160267014A1 (en) 2016-09-15

Similar Documents

Publication Publication Date Title
JP2016170703A (ja) 記憶装置、記憶装置の制御方法、及び情報処理システム
CN108780386B (zh) 一种数据存储的方法、装置和系统
KR20200067228A (ko) 솔리드 스테이트 드라이브의 성능 및 내구도 향상을 위한 장치
EP4020243A1 (en) Memory controller to manage quality of service enforcement and migration between local and pooled memory
JP2020123041A (ja) メモリシステムおよび制御方法
JP5989907B2 (ja) ネットワークアドレスの動的割り当て
US11698757B2 (en) Memory system and method of controlling nonvolatile memory
JP2020123038A (ja) メモリシステムおよび制御方法
US9397961B1 (en) Method for remapping of allocated memory in queue based switching elements
JP2019133391A (ja) メモリシステムおよび制御方法
JP2005031929A (ja) サーバに記憶領域を割り当てる管理サーバ、記憶装置システム、及びプログラム
JP2022171773A (ja) メモリシステムおよび制御方法
CN110276454A (zh) 用于机器学习的系统和控制该系统的方法以及电子系统
KR20100062958A (ko) 컴퓨팅 자원들을 제어하는 기술
CN106126434B (zh) 中央处理器的缓存区的缓存行的替换方法及其装置
WO2015087651A1 (ja) メモリの使用可能期間を延ばすための装置、プログラム、記録媒体および方法
JP6339645B2 (ja) メモリデバイスおよび方法
US10254973B2 (en) Data management system and method for processing distributed data
CN114442910A (zh) 管理存储系统的方法、电子设备和计算机程序产品
Deligiannis et al. Adaptive memory management scheme for MMU-less embedded systems
CN111902804A (zh) 用于管理存储设备的资源并量化i/o请求成本的系统和方法
KR20190059048A (ko) 매니코어 기반 코어 파티셔닝 장치 및 방법, 이를 저장하는 기록매체
US20230359495A1 (en) System and method for heterogeneous memory
TWI661313B (zh) 雲端資源配發系統及方法
KR20240051030A (ko) 라이브 마이그레이션을 수행하여 정보를 통신하는 방법