JP2019056981A - メモリシステム - Google Patents

メモリシステム Download PDF

Info

Publication number
JP2019056981A
JP2019056981A JP2017179593A JP2017179593A JP2019056981A JP 2019056981 A JP2019056981 A JP 2019056981A JP 2017179593 A JP2017179593 A JP 2017179593A JP 2017179593 A JP2017179593 A JP 2017179593A JP 2019056981 A JP2019056981 A JP 2019056981A
Authority
JP
Japan
Prior art keywords
address
logical
logical address
physical
addresses
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
JP2017179593A
Other languages
English (en)
Inventor
奈穂美 武田
Naomi Takeda
奈穂美 武田
健太 安福
Kenta Yasufuku
健太 安福
矢尾 浩
Hiroshi Yao
浩 矢尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Toshiba Memory Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Memory Corp filed Critical Toshiba Memory Corp
Priority to JP2017179593A priority Critical patent/JP2019056981A/ja
Priority to US15/914,604 priority patent/US10552314B2/en
Publication of JP2019056981A publication Critical patent/JP2019056981A/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
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

【課題】論理アドレスと物理アドレスとの対応関係を効率的に変更すること。【解決手段】一つの実施形態によれば、コントローラは、連続する第1の数の論理アドレスのそれぞれと第1の数の物理アドレスのそれぞれに1対1に対応付け、対応関係を更新する。対応関係を更新する処理は、第1更新と、第1更新の後に実行される第2更新とを含む。第1更新は、第1の数の論理アドレスのうちの第1論理アドレスに第2の数の物理アドレスのうちの第1物理アドレスを対応づける処理である。第2更新は、距離情報と先頭の論理アドレスに対応する物理アドレスを示す原点情報とに基づいて、第1の数の論理アドレスのうちの、第1論理アドレスから距離情報に応じた値だけ離れた第2論理アドレスを求め、第2論理アドレスに、第2の数の物理アドレスのうちの第2物理アドレスを対応付ける処理である。【選択図】図7

Description

本実施形態は、メモリシステムに関する。
従来、不揮発性メモリを有するメモリシステムがある。メモリシステムは、ホストから論理アドレスが指定された場合、その論理アドレスに対応付けられた物理アドレスを求め、不揮発性メモリ内の当該物理アドレスが示す位置にアクセスする。特定の物理アドレスにアクセスが集中すると、その物理アドレスが示す位置が他の位置よりも疲弊することによって、不揮発性メモリの寿命が短くなる。これを防ぐために、論理アドレスと物理アドレスとの対応関係を随時変更する処理が実行される。この処理は、ウェアレベリングと称され得る。
米国特許出願公開第2014/0195725号明細書 米国特許出願公開第2011/0238890号明細書 米国特許出願公開第2014/0082323号明細書 米国特許出願公開第2010/0281202号明細書 米国特許出願公開第2016/0147467号明細書
一つの実施形態は、論理アドレスと物理アドレスとの対応関係を効率的に変更することができるメモリシステムを提供することを目的とする。
一つの実施形態によれば、メモリシステムはホストに接続可能である。メモリシステムは、不揮発性の第1メモリと、コントローラと、第2メモリとを備える。コントローラは、連続する第1の数の論理アドレスのそれぞれと第1の数の物理アドレスのそれぞれに1対1に対応付け、第1の数の論理アドレスと第1の数の論理アドレスとの対応関係を更新する。第1の数の物理アドレスは第1メモリの連続する第2の数の物理アドレスに含まれる。第2の数は第1の数よりも少なくとも1多い。第2メモリは、距離情報および第1の数の論理アドレスのうちの先頭の論理アドレスに対応付けられた物理アドレスを示す原点情報が格納される。対応関係を更新する処理は、第1更新と、第1更新の後に実行される第2更新とを含む。第1更新は、第1の数の論理アドレスのうちの第1論理アドレスに第2の数の物理アドレスのうちの第1物理アドレスを対応づける処理である。第2更新は、原点情報と距離情報とに基づいて、第1の数の論理アドレスのうちの、第1論理アドレスから距離情報に応じた値だけ離れた第2論理アドレスを求め、第2論理アドレスに、第2の数の物理アドレスのうちの第2物理アドレスを対応付ける処理である。第2物理アドレスは、第1更新の実行前に第1論理アドレスに対応付けられていた物理アドレスである。
図1は、第1の実施形態のメモリシステムの構成を示す図である。 図2は、第1の実施形態のメモリセルアレイの構成を示す図である。 図3は、第1の実施形態のメモリセルアレイの一部領域の斜視図である。 図4は、第1の実施形態のメモリセルの電気特性を示す図である。 図5は、第1の実施形態のメモリセルアレイの回路図である。 図6−1は、第1の実施形態のウェアレベリングによる、マッピングの遷移の一例を示す図である。 図6−2は、第1の実施形態のウェアレベリングによる、マッピングの遷移の一例を示す図である。 図6−3は、第1の実施形態のウェアレベリングによる、マッピングの遷移の一例を示す図である。 図7は、第1の実施形態のウェアレベリングの手順を示すフローチャートである。 図8は、第1の実施形態の、論理アドレスを物理アドレスに変換する手順を示すフローチャートである。 図9は、第1の実施形態の、論理アドレスが更新されるターンを演算する手順を示すフローチャートである。 図10は、第3の実施形態の、論理アドレスが更新されるターンを演算する手順を示すフローチャートである。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態のメモリシステムの構成を示す図である。メモリシステム1は、ホスト2と接続可能である。メモリシステム1とホスト2との間の通信路の規格は、特定の規格に限定されない。一例では、SAS(Serial Attached SCSI)が採用され得る。
ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどが該当する。メモリシステム1は、ホスト2からアクセスコマンド(リードコマンドおよびライトコマンド)を受け付けることができる。各アクセスコマンドは、アクセス先を示す論理アドレスを含んでいる。論理アドレスは、メモリシステム1がホスト2に提供する論理アドレス空間内の位置を示す。
メモリシステム1は、メモリコントローラ10と、ReRAM(Resistive Random Access Memory)20と、を備えている。メモリコントローラ10は、ホスト2とReRAM20との間のデータ転送を実行する。
ReRAM20は、アクセス回路21およびメモリセルアレイ22を備える。
アクセス回路21は、メモリコントローラ10からの指示に応じて、メモリセルアレイ22に対し、データの書き込み、データの読み出し、およびデータのイレースを実行する回路である。アクセス回路21は、例えば、ロウデコーダ、センスアンプ、電圧発生回路、カラムデコーダ、およびページレジスタを含む。
メモリセルアレイ22は、データを保持可能な記憶領域を構成する。図2は、第1の実施形態のメモリセルアレイ22の構成を示す図である。ただし、図2は、1つのメモリセルレイヤーのみを示している。
メモリセルアレイ22は、一つの方向(第1方向)に沿って設けられた複数のビット線BLと、第1方向に直交する他の方向(第2方向)に沿って設けられた複数のワード線WLと、ビット線BLとワード線WLとの交点に設けられた複数のメモリセルMCを備えている。複数のメモリセルMCの集合体によって、マット(MAT)23と呼ばれる単位が構成される。
メモリセルMCの各々は、整流素子(ダイオード)と可変抵抗素子とを含んでいる。ダイオードのカソードはワード線WLに接続され、ダイオードのアノードは可変抵抗素子を介してビット線BLに接続されている。可変抵抗素子は例えば、ダイオード上に記録層、及び保護層が順次積層された構造を備えている。
メモリセルアレイ22において同一行に配置された複数のメモリセルMCは同一のワード線WLに接続され、同一列にある複数のメモリセルMCは同一のビット線BLに接続されている。またワード線WL、ビット線BL、及びメモリセルMCは、第1、第2方向の両方に直交する第3方向(半導体基板表面に対する垂線方向)に沿って複数設けられる。つまりメモリセルアレイ22は、メモリセルMCが三次元的に積層された構造を有している。三次元構造におけるメモリセルの各層は、メモリセルレイヤーと表記される。なお、図2は、1つのメモリセルレイヤーのみを示している。
メモリセルアレイ22はマトリクス状に配置された(m+1)×(n+1)個のマット23を備える。m、nはそれぞれ1以上の自然数である。前述したようにマット23の各々には複数のメモリセルMCが含まれ、これらはマトリクス状に配置されている。例えば1つのマット23には、例えば16本のワード線WLと16本のビット線BLが含まれる。すなわち、1つのマット23内には、(16×16)個のメモリセルMCが含まれる。また、メモリセルアレイ22内には、16×(m+1)本のビット線BLが含まれ、16×(n+1)本のワード線WLが含まれる。同一行にある複数のマット23(すなわちワード線WLを共通にするマット23)が、ブロックBLKを構成する。このため、メモリセルアレイ22は、ブロックBLK0〜BLKnにより構成されている。以下、ブロックBLK0〜BLKnを区別しない場合には、単にブロックBLKと呼ぶ。
なお、1つのメモリセルレイヤーに含まれるマット23の数は特定の数に限定されない。1つのメモリセルレイヤーは1つのマット23のみを含んでいていてもよいし、複数のマット23を含んでいてもよい。また、1つのマット23内に含まれるメモリセルMCの数は、(16×16)個に限定されない。
図3は、メモリセルアレイ22の一部領域の斜視図であり、上記構成のメモリセルアレイ22が三次元的に構成された様子を示している。メモリセルアレイ22は、半導体基板の基板面垂直方向(第3方向)に、複数積層(第1メモリセルレイヤー、第2メモリセルレイヤー、…)されている。本図によれば、ワード線WL/メモリセルMC/ビット線BL/メモリセルMC/ワード線WL/…の順に形成されているが、ワード線WL/メモリセルMC/ビット線BLの組が、層間絶縁膜を介在して積層されても良い。
図4を用いて上記メモリセルMCの電気特性について説明する。上述したようにメモリセルMCは、可変抵抗素子VRの抵抗値に応じて低抵抗状態と高抵抗状態とを取り得る。メモリセルMCが低抵抗状態の場合、メモリセルMCはデータ値“1”を保持した状態と見なされる。メモリセルMCが高抵抗状態の場合、メモリセルMCはデータ値“0”を保持した状態と見なされる。低抵抗状態とは、例えば抵抗値が1k〜10kΩの場合をいう。また、高抵抗状態とは、例えば抵抗値が100k〜1MΩの場合をいう。
図5は、上記メモリセルアレイ22の回路図であり、特に1つのメモリセルレイヤーにおける、図2の領域A1に相当する領域を示している。本図に例示されるように、メモリセルアレイ22中には、複数のマット23間を通過するようにして、複数のビット線BLとワード線WLとが形成されている。
マット23は、前述の通り16本のビット線BLと16本のワード線BLとを含む。また、上記したように、マット23は(m+1)×(n+1)個だけある。つまり、あるブロックBLKiにはワード線WL(16i)〜WL(16i+15)が形成される。またあるブロックBLKに含まれる複数のマット23の各々には、ビット線BL(16j)〜BL(16j+15)が形成される。但しi=0〜n、j=0〜mである。
そして、ビット線BLとワード線WLとの交点には、それぞれメモリセルMCが形成されている。
アクセス回路21は、メモリコントローラ10から供給される物理アドレスに応じてワード線WLおよびビット線BLを選択する。そして、アクセス回路21は、選択ワード線WL、非選択ワード線WL、選択ビット線BL、および非選択ビット線BLのそれぞれに、対応する電圧を印加することで、選択ワード線WLと選択ビット線BLとの交点に位置するメモリセルMCの状態を参照したり変化させたりする。
なお、ReRAM20は、実施形態の不揮発性の第1メモリの一例である。不揮発性の第1メモリとしては、ReRAM20に代えて、他の任意の種類の半導体メモリが適用可能である。例えば不揮発性の第1メモリとしては、MRAM(Magnetoresistive Random Access Memory)、またはNAND型のフラッシュメモリが適用可能である。
図1に説明を戻す。メモリコントローラ10は、プロセッサ11およびSRAM(Static Random Access Memory)12を備える。
プロセッサ11は、例えばCPU(Central Processing Unit)などの演算装置である。プロセッサ11は、プログラムに従ってメモリコントローラ10の種々の機能を実現する。プログラムは、例えばReRAM20に予め格納されている。プロセッサ11は、メモリシステム1のスタートアップ時にReRAM20からSRAM12にロードする。プロセッサ11は、SRAM12にロードしたプログラムを実行する。
例えば、プロセッサ11は、アクセスコマンドに含まれる論理アドレスをReRAM20内の位置を示す物理アドレスに変換する。
アクセスコマンドがライトコマンドの場合には、プロセッサ11は、書き込みの指示と、ホスト2から送られてきたデータと、変換によって得られた物理アドレスとをReRAM20に送信する。
アクセスコマンドがリードコマンドの場合には、プロセッサ11は、リードの指示と、変換によって得られた物理アドレスとをReRAM20に送信する。プロセッサ11は、ReRAM20からメモリコントローラ10にデータを受信すると、受信したデータをホスト2に送信する。
さらに、プロセッサ11は、ウェアレベリングを実行する。ウェアレベリングは、特定のメモリセルMCにアクセスが集中することを防止するために、メモリセルアレイ22内の各メモリセルMCにアクセスを分散させる処理である。具体的には、プロセッサ11は、論理アドレスと物理アドレスとの対応関係(マッピング)を所定のタイミングで変更する。
図6−1〜図6−3は、第1の実施形態のウェアレベリングによる、マッピングの遷移の一例を示す図である。本図に示される例によれば、1つの論理領域内の8つの連続する論理アドレスLA0〜LA7と、1つの物理領域内の9つの連続する物理アドレスPA0〜PA8のうちの、8つの物理アドレスと、が対応付けられる。論理領域は、論理アドレス空間の一部または全部である。物理領域は、メモリセルアレイ22が構成する記憶領域の一部または全部である。
なお、LAは論理アドレスを表し、LAの後に付された数字はアドレス値を示す。PAは物理アドレスを表し、PAの後に付された数字はアドレス値を示す。ここでは一例として、論理領域の先頭のアドレス値および物理領域の先頭のアドレス値はともにゼロであるとする。
また、論理アドレスの総数が8であり、物理アドレスの総数が9であるので、1つの物理アドレスは何れの論理アドレスにも対応づけられていない状態にある。何れの論理アドレスも対応づけられていない物理アドレスを、空白の(vacant)物理アドレスと表記する。なお、各矢印は、1つの論理アドレスとその論理アドレスに対応付けられた物理アドレスとの対を示す。論理アドレスLA0〜LA7は、8つの論理アドレスを含むので、各状態でのマッピングは、8つの対を含んでいる。
状態0では、論理領域の先頭の論理アドレスであるLA0には、物理アドレスPA0が対応付けられている。先頭の論理アドレスLA0に対応付けられた物理アドレスを、原点と表記する。状態0のマッピングでは、原点は物理アドレスPA0である。状態0では、先頭の論理アドレスLA0からiだけオフセットされた論理アドレスである論理アドレスLAi(ただし、iは0から7までの整数)には、原点からiだけオフセットされた物理アドレスである物理アドレスPAiが対応付けられている。このように、連続する全ての論理アドレスと連続する複数の物理アドレスとがリニアに対応付けられている状態を基本状態と表記する。
実施形態では、物理領域は、各物理アドレスが論理的にリング状に配置されたリングバッファと見なされる。即ち、物理領域の先頭の物理アドレスPA0と、物理領域の末尾の物理アドレスPA8とが隣接している、として扱われる。
したがって、iが0からNla-1までの全ての整数において、論理アドレスLAiと物理アドレスPA((Org+i)%Npa)とを対応付けるマッピングの状態は、基本状態に該当する。一例では、図6−3に示される状態8は、基本状態に該当する。
ここで、Orgは原点である。Nlaは論理アドレスの総数である。Npaは物理アドレスの総数である。つまり、本例ではNpaは9である。%は、剰余を演算する演算子である。つまり、a%bは、aをbで除算した剰余を意味する。
以降、本明細書では、物理領域の先頭の物理アドレスは、物理領域の末尾の物理アドレスと論理的に隣接していることして説明する。
なお、状態0および状態8に示されるように、基本状態では、論理領域の末尾の論理アドレス(ここでは論理アドレスLA7)が対応付けられた物理アドレスに後続する物理アドレスが、空白の物理アドレスに該当する。そして、空白の物理アドレスには原点の物理アドレスが後続する。
第1の実施形態では、マッピングを、論理アドレス毎に更新することで、基本状態(例えば図6−1の状態0)から、当該基本状態とは原点Orgが異なる次の基本状態(例えば図6−3の状態8)に遷移させる。原点Orgの移動量は、距離Dstとして予め設定される。ここでは一例として、原点Orgは、距離Dstだけアドレス値が小さくなる方向(即ち負方向)にシフトされる、としている。例えば図6−1〜図6−3の場合、距離Dstは4であり、原点Orgは物理アドレスPA0から負方向に4つ離れた物理アドレスPA5にシフトされている。
マッピングが基本状態から次の基本状態に至るまでの間、マッピングに含まれる、それぞれ論理アドレスと論理アドレスとの間の一対一の対応関係を示す複数の対は、逐次更新される。各対の更新の詳細については後述する。以降、ある論理アドレスにかかる対を更新することを、論理アドレスを更新する、と表記することがある。
SRAM12は、プロセッサ11がワーキングエリア、バッファ、またはキャッシュなどとして使用することが可能なメモリである。
特に、SRAM12には、原点情報121、距離情報122、およびカウント情報123が格納される。原点情報121は、原点Orgを示す情報である。距離情報122は、原点Orgの移動量である距離Dstを示す情報である。カウント情報123は、対の更新の実行回数を示すカウント値Cntを示す情報である。ここでは、原点情報121には原点Orgが記録され、距離情報122には距離Dstが記録され、カウント情報123にはカウント値Cntが記録されていることとする。
続いて、第1の実施形態のメモリシステム1の動作を説明する。図7は、第1の実施形態のウェアレベリングの手順を示すフローチャートである。なお、本図に示される手順のスタート時においては、マッピングは基本状態にあり、カウント値Cntはゼロであることとする。
まず、プロセッサ11は、原点Org、距離Dst、およびカウント値Cntに基づいて、更新の対象の論理アドレスLAtargetを演算する(S101)。プロセッサ11は、次の式(1)に従って論理アドレスLAtargetを求める。
LAtarget=(Nla-Org+Dst*(Cnt+1))%Npa (1)
前述したように、Nlaは、論理アドレスの総数であり、Npaは、物理アドレスの総数である。図6−1〜図6−3の例に従えば、Nlaは8であり、Npaは9である。
なお、プロセッサ11は、SRAM12内の原点情報121に記録された原点Orgを使用する。プロセッサ11は、SRAM12内の距離情報122に記録された距離Dstを使用する。プロセッサ11は、SRAM12内のカウント情報123に記録されたカウント値Cntを使用する。
続いて、プロセッサ11は、論理アドレスLAtargetおよび原点Orgに基づいて論理アドレスLAtargetに対応する現在の物理アドレスである物理アドレスPAcurrentを演算する(S102)。基本状態では、先頭の論理アドレスからのオフセット量と、原点Orgからのオフセット量とは一致する。また、物理領域はリングバッファと見なされる。よって、プロセッサ11は、下記の式(2)に従って物理アドレスPAcurrentを求めることができる。
PAcurrent=(LAtarget+Org)%Npa (2)
続いて、プロセッサ11は、論理アドレスLAtarget、原点Org、および距離Dstに基づいて物理アドレスPAnextを演算する(S103)。物理アドレスPAnextは、論理アドレスLAtargetが新たに対応付けられる予定の物理アドレスである。プロセッサ11は、物理アドレスPAcurrentから距離Dstだけ負方向に離れた物理アドレスを、物理アドレスPAnextとして演算する。具体的には、プロセッサ11は、下記の式(3)に従って物理アドレスPAnextを求めることができる。
PAnext=(LAtarget+Org-Dst)%Npa (3)
続いて、プロセッサ11は、物理アドレスPAcurrentが示す位置に格納されているデータを読み出して(S104)、読み出されたデータを物理アドレスPAnextが示す位置に書き込む(S105)。
S104およびS105の処理では、プロセッサ11は、ホスト2から論理アドレスLAtargetによって参照されるデータを、物理アドレスPAcurrentから物理アドレスPAnextに移動させている。プロセッサ11は、SRAM12をデータの移動のためのバッファとして使用してもよい。
続いて、プロセッサ11は、カウント値Cntをインクリメントする(S106)。プロセッサ11は、カウント値Cntに1を加算し、加算によって得られた値でカウント情報123を更新する。
続いて、プロセッサ11は、カウント値Cnt(即ちS106によって更新された後のカウント値Cnt)が論理アドレスの総数Nlaと一致するか否かを判定する(S107)。マッピングが基本状態を逸脱してから次に基本状態になるまでに、各対に対して1回の更新が実行される。よって、S107の処理は、マッピングが再び基本状態に戻ったか否かを判定する処理に該当する。
カウント値Cntが論理アドレスの総数Nlaと一致しない場合(S107、No)、処理がS101に移行し、他の対の更新が実行される。
カウント値Cntが論理アドレスの総数Nlaと一致する場合(S107、Yes)、プロセッサ11は、原点Orgを、下記の式(4)に従って更新する(S108)。プロセッサ11は、式(4)によって得られた値で原点情報121を上書きする。
Org=(Org-Dst)%Npa (4)
続いて、プロセッサ11は、カウント値Cntをゼロでリセットする(S109)。プロセッサ11は、カウント情報123に、ゼロを上書きする。
なお、S106およびS109では、プロセッサ11は、下記の式(5)を用いてカウント値Cntを更新してもよい。
Cnt=(Cnt+1)%Nla (5)
S109の実行が完了すると、処理がS101に移行する。
S101からS107までの処理は、ループ処理を構成している。1回のループ処理によって、1回の更新が実行される。1回の更新では、1つの対が更新される。マッピングは、Nla回の更新が実行されることで、基本状態から次の基本状態に移行する。
下記に、Nla回の更新のうちの連続する2回の更新の間の関係を説明する。i回目の更新において求まる論理アドレスLAtarget、物理アドレスPAcurrent、およびPAnextを、LAtarget_i、PAcurrent_i、PAnext_iと表記することとする。まず、論理アドレスLAtargetに関しては、下記の式(6)に示される関係が成立する。
LAtarget_(i+1)=(LAtarget_i+Dst)%Npa (6)
また、式(2)、式(3)、および式(6)によれば、下記の式(7)に示される関係が導出できる。
PAnext_(i+1)=(LAtarget_(i+1)+Org-Dst)%Npa
=(LAtarget_i+Org)%Npa
=PAcurrent_i (7)
式(7)は、PAcurrent_iは、i回目の更新によって空白の物理アドレスとなり、その後、i+1回目の更新においてLAtarget_(i+1)が対応付けられることを意味する。つまり、論理アドレスLAtarget_(i+1)に新たに対応付けられる物理アドレスPAnext_(i+1)は、物理領域内で、物理アドレスPAcurrent_(i+1)から負方向に距離Dstだけ離れた物理アドレスであり、その物理アドレスは、i回目の更新において得られた物理アドレスPAcurrent_iと等しい。
また、式(6)によれば、i回目の更新における論理アドレスLAtarget_iから距離Dstに応じた値だけ離れた論理アドレスが、i+1回目の更新における論理アドレスLAtarget_(i+1)として選択される。より詳しくは、式(6)によれば、i回目の更新における論理アドレスLAtarget_iに距離Dstを加算して得られる値が被除数であり物理アドレスの総数Npaが除数である剰余演算によって、i+1回目の更新における論理アドレスLAtarget_(i+1)が演算される。よって、プロセッサ11は、PAcurrent_iから正方向に距離Dstだけ離れた物理アドレスを、式(2)によって物理アドレスPAcurrent_(i+1)として求めることができるように、論理アドレスLAtarget_(i+1)を演算する。
このように、図7に示される手順によれば、PAcurrentが更新毎に物理領域内で正方向に距離Dstずつシフトされるように論理アドレスLAtargetが選択される。そして、各更新においては、論理アドレスLAtargetが、物理領域内でPAcurrentから負方向に離れた物理アドレスPAnextに対応付けられる。よって、各更新において、論理アドレスLAtargetに、前回の更新によって空白の物理アドレスとなった物理アドレスを対応付けることが可能である。
次に、図6−1〜図6−3を参照しながら、各回の更新の具体例について説明する。なお、前述したように、図6−1〜図6−3に示される例では、距離Dstとして4が設定されている。
状態0では、カウント値Cntがゼロであり、原点OrgがPA0(即ちゼロ)である。よって、式(1)に基づき、論理アドレスLA3が更新の対象の論理アドレスLAtarget_0として求まる。また、式(2)に基づき、論理アドレスLAtarget_0に対応する物理アドレスPAcurrent_0として物理アドレスPA3が求まる。また、式(3)に基づき、物理アドレスPAnext_0として、物理アドレスPA3から負方向に4つ離れた物理アドレスである物理アドレスPA8が求まる。論理アドレスLA3に、物理アドレスPA8が対応付けられ、その結果、マッピングは状態1に移行する。
状態1では、論理アドレスLA7が、論理アドレスLAtarget_1として求まる。論理アドレスLA7は、物理アドレスPAcurrent_0である物理アドレスPA3から正方向に4つ離れた物理アドレスであり物理アドレスPAcurrent_1である物理アドレスPA7に対応する論理アドレスである。また、物理アドレスPAnext_1として、物理アドレスPA7から負方向に4つ離れた物理アドレスである物理アドレスPA3が求まる。論理アドレスLA7に、物理アドレスPA3が対応付けられ、その結果、マッピングは状態2に移行する。
状態2では、論理アドレスLA2が、論理アドレスLAtarget_2として求まる。論理アドレスLA2は、物理アドレスPAcurrent_1である物理アドレスPA7から正方向に4つ離れた物理アドレスであり物理アドレスPAcurrent_2である物理アドレスPA2に対応する論理アドレスである。また、物理アドレスPAnext_2として、物理アドレスPA2から負方向に4つ離れた物理アドレスである物理アドレスPA7が求まる。論理アドレスLA2に、物理アドレスPA7が対応付けられ、その結果、マッピングは状態3に移行する。
状態3では、論理アドレスLA6が、論理アドレスLAtarget_3として求まる。論理アドレスLA6は、物理アドレスPAcurrent_2である物理アドレスPA2から正方向に4つ離れた物理アドレスであり物理アドレスPAcurrent_3である物理アドレスPA6に対応する論理アドレスである。また、物理アドレスPAnext_3として、物理アドレスPA6から負方向に4つ離れた物理アドレスである物理アドレスPA2が求まる。論理アドレスLA6に、物理アドレスPA2が対応付けられ、その結果、マッピングは状態4に移行する。
以降、同様の手順で、状態4において論理アドレスLA1に物理アドレスPA6が対応付けられ、状態5において論理アドレスLA5に物理アドレスPA1が対応付けられ、状態6において論理アドレスLA0に物理アドレスPA5が対応付けられ、状態7において論理アドレスLA4に物理アドレスPA0が対応付けられる。これらの更新の結果、マッピングは、状態8に示されるように、基本状態に戻る。
次に、論理アドレスを物理アドレスに変換する手順を説明する。プロセッサ11は、例えば、メモリシステム1がホスト2からアクセスコマンドを受信した場合、アクセスコマンドに含まれる論理アドレスを物理アドレスに変換し、得られた物理アドレスが示す位置にアクセスする。アクセス位置として指定された論理アドレスを、論理アドレスLAaccessと表記する。また、論理アドレスLAaccessに対応する物理アドレスを、物理アドレスPAaccessと表記する。
図8は、第1の実施形態の、論理アドレスLAaccessを物理アドレスPAaccessに変換する手順を示すフローチャートである。
まず、プロセッサ11は、論理アドレスLAaccessにかかる対が更新されるターンCturn1を演算する(S201)。ターンCturn1は、論理アドレスLAaccessにかかる対が更新される際のカウント値Cntである。換言すると、ターンCturn1は、マッピングが最後に基本状態にあった時から論理アドレスLAaccessにかかる対が更新されるまでに要する、マッピングに対して実行される更新の数を意味する。ターンCturn1の演算方法については後述する。
続いて、プロセッサ11は、カウント値CntがターンCturn1より小さいか否かを判定する(S202)。プロセッサ11は、カウント値CntをSRAM12に格納されているカウント情報123から読み出す。
カウント値CntがターンCturn1より小さいことは、論理アドレスLAaccessがまだ更新されていないことを意味する。カウント値CntがターンCturn1以上であることは、論理アドレスLAaccessが更新済みであることを意味する。
よって、カウント値CntがターンCturn1より小さい場合(S202、Yes)、プロセッサ11は、論理アドレスLAaccessおよび原点Orgに基づいて物理アドレスPAaccessを演算する(S203)。具体的には、プロセッサ11は、下記の式(8)に基づいて物理アドレスPAaccessを演算する。
PAaccess=(LAaccess+Org)%Npa (8)
また、カウント値CntがターンCturn1より小さくない場合(S202、No)、プロセッサ11は、論理アドレスLAaccess、原点Org、および距離Dstに基づいて物理アドレスPAaccessを演算する(S204)。具体的には、プロセッサ11は、下記の式(9)に基づいて物理アドレスPAaccessを演算する。
PAaccess=(LAaccess+Org+Dst)%Npa (9)
なお、プロセッサ11は、S203およびS204において、SRAM12内の原点情報121に記録されている原点Orgを使用する。また、プロセッサ11は、S204において、SRAM12内の距離情報122に記録されている距離Dstを使用する。
S203またはS204によって、論理アドレスLAaccessを物理アドレスPAaccessに変換する処理が完了する。
このように、プロセッサ11は、対の更新毎に逐次更新されるカウント値Cntと、論理アドレスLAaccessにかかる対が更新されるターンCturn1との比較によって、原点Orgを用いて物理アドレスを求めるか、原点Orgと距離Dstとを用いて物理アドレスを求めるか、を決定する。
次に、論理アドレスLAaccessが更新されるターンCturn1を演算する手順(即ちS201の処理)を説明する。
式(6)によって明らかなように、論理アドレスLAtargetは、物理アドレスの総数Npaに至るまで、更新毎に正方向に距離Dstずつシフトせしめられる。よって、距離Dstで除算して得られる剰余が同一の値となる複数の論理アドレスは、連続して論理アドレスLAtargetとして選択される。剰余が同一の値である複数の論理アドレスのうちでは、各論理アドレスは、距離Dstで除算して得られる商に応じた順番で、論理アドレスLAtargetとして選択される。論理アドレスLAtargetが物理アドレスの総数Npa以上となる場合、別の剰余に属する論理アドレスが論理アドレスLAtargetとして選択される。
このように、図7に示される手順によれば、各論理アドレスLAtargetは、距離Dstで除算して得られる剰余および商に基づく順番で選択される傾向がある。第1の実施形態では、この傾向を利用することによって、ターンCturn1を演算する。
図9は、第1の実施形態の、論理アドレスLAaccessが更新されるターンCturn1を演算する手順の一例を示すフローチャートである。本図の説明では、特に説明がない限り、剰余は、距離Dstで除算した剰余を指すこととする。
まず、プロセッサ11は、論理アドレスLAaccessの剰余Raccessを求める(S301)。この処理は、下記の式(10)として表せる。
Raccess=LAaccess%Dst (10)
S301に続いて、プロセッサ11は、剰余がRaccessと一致する全ての論理アドレスのうちの、論理アドレスLAaccessが更新されるターンCturn2を演算する(S302)。プロセッサ11は、例えば、下記の式(11)によってCturn2を求めることができる。なお、floor(a/b)は、aをbで除算した商を求める関数である。
Cturn2=floor(LAaccess/Dst) (11)
S302に続いて、プロセッサ11は、カウント値の変数Ctmpをゼロでリセットする(S303)。そして、プロセッサ11は、最初に更新される論理アドレスの剰余Rfirstを演算する(S304)。プロセッサ11は、下記の式(12)に基づいて剰余Rfirstを求めることができる。
Rfirst=(Nla+Dst)%Npa (12)
S304に続いて、プロセッサ11は、変数RtmpにRfirstを代入する(S305)。そして、プロセッサ11は、剰余Rtmpが剰余Raccessと一致するか否かを判定する(S306)。
剰余Rtmpが剰余Raccessと一致しない場合(S306、No)、プロセッサ11は、S307〜S311において、距離Dstで除算した剰余がRtmpと一致する論理アドレスの数Ngrpを演算する。
具体的には、まず、プロセッサ11は、論理アドレスの総数Nlaを距離Dstで除算した商Qtmpを演算する(S307)。即ち、プロセッサ11は、下記の式(13)に基づいて商Qtmpを演算する。
Qtmp=floor(Nla/Dst) (13)
続いて、プロセッサ11は、論理アドレスの総数Nlaを距離Dstで除算した剰余Rtmp2を演算する(S308)。即ち、プロセッサ11は、下記の式(14)に基づいて剰余Rtmp2を演算する。
Rtmp2=Nla%Dst (14)
続いて、プロセッサ11は、RtmpがRtmp2より小さいか否かを判定する(S309)。RtmpがRtmp2より小さい場合(S309、Yes)、プロセッサ11は、Rtmp2に1を加算して得られる値をNgrpに代入する(S310)。RtmpがRtmp2より小さくない場合(S309、No)、プロセッサ11は、Rtmp2をNgrpに代入する(S311)。
S310またはS311に続いて、プロセッサ11は、CtmpにNgrpを加算し、加算によって得られた値をCtmpに代入する(S312)。
続いて、プロセッサ11は、剰余Rnextを演算する(S313)。剰余Rnextは、次に論理アドレスLAtargetとして設定される論理アドレスを距離Dstで除算した剰余である。具体的には、プロセッサ11は、下記の式(15)に基づいて剰余Rnextを求めることができる。
Rnext=Rtmp-Nla%Dst-1 (15)
続いて、プロセッサ11は、Rtmpに剰余Rnextを代入し(S314)、処理がS306に移行する。
S306において、Rtmpが剰余Raccessに一致すると判定された場合(S306、Yes)、プロセッサ11は、CtmpにCturn2を加算し、加算によって得られた値をCturn1に代入する(S315)。そして、ターンCturn1を演算する手順が完了する。
このように、プロセッサ11は、論理アドレスLAtargetと距離Dstとに基づいて、論理アドレスLAaccessが更新されるターンCturn1を求めることができる。プロセッサ11は、論理アドレスLAtargetとして設定される論理アドレスの数を剰余が同一の値になるグループごとに加算することによって、論理アドレスLAaccessが更新されるターンCturn1を求めることができる。
なお、以上の説明においては、論理領域の先頭および物理領域の先頭のアドレス値はともにゼロであるとした。論理領域の先頭または物理領域の先頭のアドレス値はゼロでなくてもよい。論理領域の先頭のアドレス値がゼロではない場合、論理領域内の各論理アドレスを先頭からのオフセット量で置き換えることで、上記したアルゴリズムが適用可能となる。同様に、物理領域の先頭のアドレス値がゼロではない場合、物理領域内の各物理アドレスを先頭からのオフセット量で置き換えることで、上記したアルゴリズムが適用可能となる。
また、以上の説明においては、空白の物理アドレスの数が1であるとした。空白の物理アドレスの数は2以上であってもよい。例えば、連続するn個(n>1)の物理アドレスが空白の物理アドレスとして設定される。そして、各更新において、連続するn個の論理アドレスがそれぞれ論理アドレスLAtargetとして選択され、n個の空白の物理アドレスのそれぞれがPAnextとして選択される。そして、各更新では、複数の論理アドレスLAaccessと複数の物理アドレスPAnextとがリニアに対応するように、対応付けられる。
また、以上の説明においては、原点Orgは負方向に距離Dstだけ移動せしめられるとした。上述したアルゴリズムを変形することで、原点Orgは正方向に距離Dstだけ移動せしめられるように構成されてもよい。
また、以上の説明においては、プロセッサ11がマッピングの更新を行うこととして説明した。プロセッサ11が行う処理のうちの一部または全部は、ハードウェア回路によって実行されてもよい。
また、SRAM12は、距離情報122、原点情報121、およびカウント情報123が格納される第2メモリの一例である。距離情報122、原点情報121、およびカウント情報123の一部または全部は、SRAM12と異なるメモリに格納され得る。距離情報122、原点情報121、およびカウント情報123の一部または全部は、ReRAM20に格納されてもよい。距離情報122、原点情報121、およびカウント情報123の一部または全部は、プロセッサ11内のレジスタなどに保持されてもよい。
以上述べたように、第1の実施形態によれば、メモリコントローラ10は、連続する複数の論理アドレスのそれぞれに物理アドレスを対応付ける。物理アドレスの総数は、論理アドレスの総数よりも少なくとも1つ多い。メモリコントローラ10は、1回目の更新において、複数の論理アドレスのうちの1つの論理アドレスLAtarget_0に物理アドレスPAnext_0を対応付ける。そして、メモリコントローラ10は、2回目の更新において、原点Orgおよび距離Dstに基づいて、論理アドレスLAtarget_0から距離Dstに応じた値だけ離れた論理アドレスLAtarget_1を求め、論理アドレスLAtarget_1に物理アドレスPAnext_1即ち物理アドレスPAcurrent_0を対応付ける。物理アドレスPAcurrent_0は、1回目の更新の前に論理アドレスLAtarget_0に対応付けられていた物理アドレスである。
この構成により、マッピングを距離Dstだけシフトすることが可能となる。
なお、1つの論理アドレスにアクセスが集中する場合、その論理アドレスに隣接する論理アドレスに対してもアクセス頻度が高くなる傾向がある。ここで、一例として、論理アドレスLA4からLA6の範囲にアクセスが集中し論理アドレスLA4からLA6の範囲に物理アドレスPA4からPA6の範囲がリニアに対応付けられている場合を考える。その場合において、原点のシフト量即ち距離Dstが1である場合、更新によって、論理アドレスLA4からLA6の範囲に、物理アドレスPA3からPA5の範囲が新たに対応付けられる。物理アドレスPA4および物理アドレスPA5は、更新後においてもアクセスが集中する論理アドレスの範囲に対応するため、物理アドレスPA4および物理アドレスPA5の位置の疲弊が促進される。これに対し、距離Dstとして例えば3が設定されると、論理アドレスLA4からLA6の範囲には、更新によって、物理アドレスPA1からPA3の範囲が新たに対応付けられる。即ち、アクセスが集中する論理アドレスの範囲に対応する物理アドレスの範囲が更新の前後で重ならない。従って、物理領域内の特定の位置の疲弊が促進されることが防止される。
このように、距離Dstの設定値が、例えばアクセスが集中する範囲の幅よりも大きくなるように設定されることで、物理領域に対するアクセスを分散させることが可能である。よって、論理アドレスと物理アドレスとの対応関係を効率的に変更することが可能となる。
また、上記の構成によれば、空白の物理アドレスが1つあればマッピングのシフトが可能であるので、物理領域のサイズを節約することが可能である。即ち、論理アドレスと物理アドレスとの対応関係を効率的に変更することが可能となる。
また、第1の実施形態によれば、メモリコントローラ10は、i回目の更新において、原点Orgおよび距離Dstに基づいて、論理アドレスLAtarget_iを求め、論理アドレスLAtarget_iに、物理アドレスPAnext_iを対応付ける。物理アドレスPAnext_iは、i-1回目の更新の前に論理アドレスLAtarget_(i-1)に対応付けられていた物理アドレスPAcurrent_(i-1)と等しい。
この構成により、各更新において、論理アドレスLAtargetに、前回の更新によって空白の物理アドレスとなった物理アドレスを対応付けることが可能である。更新が繰り返し実行されることで、全ての論理アドレスに対応する物理アドレスを、距離Dstずつシフトすることが可能である。
また、第1の実施形態によれば、メモリコントローラ10は、更新が実行された回数をカウント値Cntとして保持する。メモリコントローラ10は、アクセス先を示す論理アドレスLAaccessが更新されるまでに要する更新の回数であるターンCturn1を、論理アドレスLAaccessと距離Dstとに基づいて演算する。そして、ターンCturn1がカウント値Cntよりも大きい場合、メモリコントローラ10は、論理アドレスLAaccessと原点Orgとに基づいて物理アドレスPAaccessを求める。ターンCturn1がカウント値Cntよりも小さい場合、メモリコントローラ10は、論理アドレスLAaccessと原点Orgと距離Dstとに基づいて物理アドレスPAaccessを求める。
この構成により、メモリコントローラ10は、マッピングが次に基本状態に至る前であっても、アクセス対象の論理アドレスLAaccessを物理アドレスPAaccessに変換することが可能である。
なお、ターンCturn1とカウント値Cntとが等しい場合の処理は、データの移動のタイミングと論理アドレスLAtarget_iに物理アドレスPAnext_iを対応づけるタイミングとの関係に応じて決まる。図7に示される手順のように、データの移動が完了した後にカウント値Cntが更新される場合においては、メモリコントローラ10は、ターンCturn1とカウント値Cntとが等しい場合、論理アドレスLAaccessと原点Orgと距離Dstとに基づいて物理アドレスPAaccessを求める。
なお、第1の実施形態によれば、メモリコントローラ10は、式(1)に示されるように、論理アドレスの総数Nlaに対し、原点Orgの減算と、更新の実行毎の距離Dstの加算と、を行う。そして、メモリコントローラ10は、論理アドレスの総数Nlaに対する加算および減算によって得られた値を物理アドレスの総数Npaで除算した剰余を論理アドレスLAtarget_iとして求める。また、メモリコントローラ10は、図9に示されるように、アクセス先の論理アドレスLAaccessを距離Dstで除算した商(Cturn2)および剰余(Raccess)を求め、求めた商および剰余に基づいてターンCturn1を演算する。
また、第1の実施形態によれば、メモリコントローラ10は、論理領域内の全論理アドレスの更新を完了した場合、原点情報121に記録された原点Orgを更新する。
この構成により、メモリコントローラ10は、いったんマッピングが基本状態に至った後に、マッピングの更新を継続することが可能である。
なお、以上の説明においては、メモリコントローラ10は、いったんマッピングが基本状態に至った後、マッピングの更新を継続する、として説明した。メモリコントローラ10は、マッピングが基本状態に至った後、ウェアレベリングを停止してもよい。メモリコントローラ10は、マッピングが基本状態に至る前にウェアレベリングを停止してもよい。
(第2の実施形態)
第1の実施形態では、Rtmpと論理アドレスの総数Nlaを距離Dstで除算した剰余Rtmp2との比較に基づいてNgrpが演算された(S307〜S311)。
第2の実施形態では、論理アドレスの総数Nlaの約数が、距離Dstとして設定される。このように距離Dstが設定されることによって、論理アドレスの総数Nlaを距離Dstで除算した剰余Rtmp2がゼロになる。RtmpはRtmp2以上となることが明らかであるので、プロセッサ11は、論理アドレスの総数Nlaを距離Dstで除算した商をNgrpとして設定することができる。即ち、Rtmpと論理アドレスの総数Nlaを距離Dstで除算した剰余Rtmp2を求める処理(S308)と、RtmpとRtmp2とを比較する処理(S309)と、を省略することが可能である。
また、第1の実施形態では、プロセッサ11は、S313において、論理アドレスの総数Nlaを距離Dstで除算した剰余を用いてRnextを演算した。論理アドレスの総数Nlaを距離Dstで除算した剰余はゼロとなるので、S313の処理が簡単になる。
このように、第2の実施形態では、論理アドレスの総数Nlaの約数が、距離Dstとして設定される。この構成により、論理アドレスLAaccessを物理アドレスPAaccessに変換する処理がより簡単になる。
(第3の実施形態)
第2の実施形態によれば、論理アドレスの総数Nlaの約数が、距離Dstとして設定される。第3の実施形態では、さらに、論理アドレスの総数Nlaおよび距離Dstがともに2のべき乗によって構成される。こうすることで、論理アドレスLAaccessが更新されるターンCturn1を演算する手順をビット演算によって実現することが可能になる。
図10は、第3の実施形態の、論理アドレスLAaccessが更新されるターンCturn1を演算する手順を示すフローチャートである。まず、プロセッサ11は、下記の式(16)を用いることによって、Lower_addr1を求める(S401)。ここで、「&」は、ビットアンド演算を示す演算子である。「<<」は、左方向へのシフトを示す演算子である。
Lower_addr=LAaccess&(1<<Log2(Dst)) (16)
式(16)は、LAaccessの下位側の2ビットの値を取得する処理である。この処理によって求まるLower_addrは、第1の実施形態のRaccessに相当する。
続いて、プロセッサ11は、下記の式(17)に基づき、Lower_addrをビット反転する(S402)。式(17)に含まれる「/」は、ビット反転の演算子である。
Lower_addr=/Lower_addr (17)
続いて、プロセッサ11は、下記の式(18)に基づき、Higher_addrを求める(S403)。ここで、「>>」は、右方向へのシフトを示す演算子である。
Higher_addr=LAaccess>>Log2(Dst) (18)
式(18)は、LAaccessの下位側の2ビットを切り落とす処理である。この処理によって求まるHigher_addrは、第1の実施形態のCturn2に相当する。
続いて、プロセッサ11は、下記の式(19)に基づき、ターンCturn1を求める(S404)。ここで、「|」は、ビットオア演算を示す演算子である。
Cturn1=(Lower_addr<<(Log2(Nla)-Log2(Dst)))|Higher_addr (19)
この式(19)は、更新の回数を剰余毎に積算し、さらに、Cturn2を加算する処理を示している。S404の後、第3の実施形態のターンCturn1を演算する手順が完了する。
このように、論理アドレスの総数Nlaおよび距離Dstがともに2のべき乗によって構成されることで、ビット演算のみによってターンCturn1を求めることが可能となる。
(第4の実施形態)
第1〜第3の実施形態によれば、各更新において、データが移動せしめられる(S104、S105)。プロセッサ11は、物理アドレスPAcurrentが無効な論理アドレスに対応付けられていることが分かっている場合には、S104およびS105をスキップしてもよい。
例えば、メモリシステム1は、ホスト2から、論理アドレスを指定してその論理アドレスを無効にするコマンドを受信することができる。プロセッサ11は、そのコマンドを受信すると、指定された論理アドレスを無効な論理アドレスとして記憶する。そして、プロセッサ11は、S104の前に、論理アドレスLAtargetは無効な論理アドレスに該当するか否かを判定する。論理アドレスLAtargetは無効な論理アドレスである場合、S104およびS105をスキップする。
プロセッサ11は、無効な論理アドレスを、任意の方法で記憶し得る。一例では、プロセッサ11は、無効な論理アドレスのリストを作成し、そのリストをSRAM12に格納する。プロセッサ11は、ホスト2からコマンドによって無効な論理アドレスが通知される毎に、そのリストを更新する。プロセッサ11は、リストに代えて、無効な論理アドレスを、テーブル、フラグ、など、任意の形式のデータによって記憶し得る。プロセッサ11は、有効な論理アドレスのみを記憶することによって、無効な論理アドレスを特定してもよい。
プロセッサ11は、無効な論理アドレスをアクセス先としたリードをホスト2から要求された場合、ホスト2に対し、予め決められたルールに従って応答する。例えば、プロセッサ11は、ホスト2に対し、無効な論理アドレスである旨を通知する。
以上述べたように、第4の実施形態によれば、メモリコントローラ10は、論理アドレスLAtargetが無効な論理アドレスであるか否かを判定する。メモリコントローラ10は、論理アドレスLAtargetが無効な論理アドレスではない場合、物理アドレスPAcurrentに格納されているデータを物理アドレスPAnextに移動する。論理アドレスLAtargetが無効な論理アドレスである場合、メモリコントローラ10は、データの移動をスキップする。
この構成により、メモリコントローラ10は、不要なデータの移動をスキップすることが可能である。
なお、第4の実施形態は、第1〜第3の実施形態のメモリシステム1に適用され得る。
(第5の実施形態)
距離Dstは、可変に構成され得る。プロセッサ11は、全ての対の更新を完了した場合に、距離Dstを変更することができる。全ての対の更新を完了した場合とは、具体的には、カウント値Cntが論理アドレスの総数Nlaと一致すると判定したタイミングから次にS101の処理が実行されるまでの期間に対応する。
一例では、メモリシステム1は、ホスト2から距離Dstを指定したコマンドを受信する。プロセッサ11は、そのコマンドを受信すると、上述した期間に、距離情報122の内容を指定された距離Dstで上書きする。
別の例では、メモリシステム1は、距離Dstの候補値の数列を例えばSRAM12に予め記憶する。プロセッサ11は、上述した期間が到来する毎に、数列に記載された候補値で距離Dstを更新する。
距離Dstの候補値の数列は、任意に構成され得る。例えば、論理アドレスの総数Nlaが16である場合に、「8, 4, 8, 2, 8, 4, 8, 1, 8, 4, 8, 2, 8, 4, 8...」のような数列が、SRAM12に予め格納されている。プロセッサ11は、この数列の要素を、この数列の先頭から順番に、距離Dstとして設定する。この数列を、第1の数列と表記する。
第1の数列は、論理アドレスの総数Nlaの半分の値である8と、8のさらに半分の値である4と、4のさらに半分の値である2と、マッピングを1つだけずらすための値である1と、を含んでいる。よって、プロセッサ11は、論理領域内の各論理アドレスに対し、種々の物理アドレスを対応付けることが可能である。また、第1の数列は、論理アドレスの総数Nlaを基準としてその半分の値である8を多く含んでいる。これにより、マッピングを論理アドレスの総数Nlaの半分の量だけシフトされる。よって、特定の範囲の論理アドレスにアクセスが集中する場合においても、物理領域に対するアクセスを効率的に分散させることが可能である。
なお、上述した第1の数列は、一例である。数列「8, 4, 8, 2, 8, 4, 8, 9, 8, 4, 8, 2, 8, 4, 8...」、または数列「8, 4, 8, 10, 8, 4, 8, 9, 8, 4, 8, 10, 8, 4, 8...」も適用可能である。これらの数列は、第1の数列に含まれる要素のうち、小さい値(例えば1または2)に対し、半周期(即ち8)だけ加算して得られるものである。このように、シフト量が一定以上の値となるように距離Dstの候補値の数列を構成してもよい。
なお、第5の実施形態は、第1〜第4の実施形態のメモリシステム1に適用され得る。
(第6の実施形態)
第1〜第5の実施形態では、プロセッサ11は、マッピングが基本状態になる毎に、カウント情報123に記録されたカウント値Cntをゼロでリセットし、原点情報121に記録された原点Orgを更新する。原点情報121は、マッピングが基本状態になる毎に更新されなくてもよい。また、カウント情報123は、マッピングが基本状態になる毎にゼロでリセットされなくてもよい。
例えば、プロセッサ11は、カウント値Cntに代えて、カウント値Cnt’をカウント情報123に記録する。カウント値Cnt’は、ウェアレベリングの開始以来に実行された更新の回数を示す値である。プロセッサ11は、ウェアレベリングを最初に開始する時にカウント値Cnt’をゼロでリセットし、その後、更新毎にカウント値Cnt’をインクリメントする。プロセッサ11は、マッピングが基本状態になってもカウント値Cnt’をリセットしない。また、プロセッサ11は、カウント値Cnt’がゼロであった時(即ちウェアレベリングを最初に開始した時)の原点Orgである原点Org_initを原点情報121に記録する。
その場合、プロセッサ11は、カウント値Cntを、下記の式(20)に従って取得することができる。
Cnt=Cnt’%Nla (20)
また、プロセッサ11は、原点Orgを、下記の式(21)に従って取得することができる。
Org=(Org_init-(Dst*floor(Cnt’/Nla)))%Npa (21)
なお、式(21)は、距離Dstが固定値であることを前提としている。floor(Cnt’/Nla)の部分は、ウェアレベリングの開始以来にマッピングが基本状態になった回数を示し、(Dst*floor(Cnt’/Nla))の部分は、ウェアレベリングの開始以来の原点Orgの移動量の合計を示す。距離Dstが可変に構成される場合には、(Dst*floor(Cnt’/Nla))の部分が変形されることで、原点Org_initから原点Orgを演算することが可能である。
このように、第1〜第5の実施形態で述べたアルゴリズムは、種々に変形され得る。
(第7の実施形態)
第1〜第6の実施形態を構成するアルゴリズムは、剰余演算を含んでいる。プロセッサ11は、剰余演算を他の演算方法で代用することが可能である。
例えば、S101において、プロセッサ11は、剰余演算に代えて、比較演算を用いてLAtarget_iを演算してもよい。具体的には、例えば、プロセッサ11は、前回の論理アドレスLAtarget_(i-1)に距離Dstを加算する。そして、プロセッサ11は、(LAtarget_(i-1)+Dst)とNpaとを比較する。(LAtarget_(i-1)+Dst)がNpaより小さい場合、プロセッサ11は、(LAtarget_(i-1)+Dst)をLAtarget_iとして取得する。(LAtarget_(i-1)+Dst)がNpa以上である場合、プロセッサ11は、(LAtarget_(i-1)+Dst-Npa)をLAtarget_iとして取得する。
このように、第1〜第6の実施形態で述べたアルゴリズムを構成する演算処理は、種々の置き換えが可能である。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、2 ホスト、10 メモリコントローラ、11 プロセッサ、12 SRAM、20 ReRAM、21 アクセス回路、22 メモリセルアレイ、23 マット、121 原点情報、122 距離情報、123 カウント情報。

Claims (10)

  1. ホストに接続可能なメモリシステムであって、
    不揮発性の第1メモリと、
    連続する第1の数の論理アドレスのそれぞれと前記第1の数の物理アドレスのそれぞれに1対1に対応付け、前記第1の数の物理アドレスは前記第1メモリの連続する第2の数の物理アドレスに含まれ、前記第2の数は前記第1の数よりも少なくとも1多く、前記第1の数の論理アドレスと前記第1の数の物理アドレスとの対応関係を更新するコントローラと、
    距離情報および前記第1の数の論理アドレスのうちの先頭の論理アドレスに対応付けられた物理アドレスを示す原点情報が格納される第2メモリと、
    を備え、
    前記対応関係を更新する処理は、
    前記第1の数の論理アドレスのうちの第1論理アドレスに前記第2の数の物理アドレスのうちの第1物理アドレスを対応づける第1更新と、
    前記第1更新の後、前記原点情報と前記距離情報とに基づいて、前記第1の数の論理アドレスのうちの、前記第1論理アドレスから前記距離情報に応じた値だけ離れた第2論理アドレスを求め、前記第2論理アドレスに、前記第2の数の物理アドレスのうちの第2物理アドレスを対応付ける第2更新と、
    を含み、
    前記第2物理アドレスは、前記第1更新の実行前に前記第1論理アドレスに対応付けられていた物理アドレスである、
    メモリシステム。
  2. 前記対応関係を更新する処理は、前記第2更新を含む1以上の第3更新を含み、
    前記第3更新は、
    前記原点情報と前記距離情報とに基づいて、前記第1の数の論理アドレスのうちの第3論理アドレスを求め、前記第3論理アドレスに、前記第2の数の物理アドレスのうちの第3物理アドレスを対応付ける処理であり、
    前記第3論理アドレスは第4論理アドレスから前記距離情報に応じた値だけ離れた論理アドレスであり、
    前記第4論理アドレスは、前記第1の数の論理アドレスのうちの前回の更新の対象の論理アドレスであり、
    前記第3物理アドレスは、前記前回の更新の前に前記第4論理アドレスに対応付けられていた物理アドレスである、
    請求項1に記載のメモリシステム。
  3. 前記コントローラは、
    実行された更新の回数である第3の数をカウントし、
    アクセス先を特定する場合、前記アクセス先を示す第5論理アドレスが更新されるまでに要する更新の回数である第4の数を、前記第5論理アドレスと前記距離情報とに基づいて演算し、前記第4の数が前記第3の数よりも大きい場合、前記第5論理アドレスに対応付けられた第4物理アドレスを前記第5論理アドレスと前記原点情報とに基づいて求め、前記第4の数が前記第3の数よりも小さい場合、前記第5論理アドレスと前記原点情報と前記距離情報とに基づいて前記第4物理アドレスを求める、
    請求項2に記載のメモリシステム。
  4. 前記コントローラは、
    各第3更新において、前記第1の数に対し、前記原点情報の減算と、更新の実行毎の前記距離情報の加算と、を実行して第5の数を求め、前記第5の数を前記第2の数で除算した第1剰余を求め、前記第1剰余に基づいて前記第3論理アドレスを求め、
    前記第5論理アドレスを前記距離情報で除算した商と第2剰余とを求め、前記商と前記第2剰余とに基づいて前記第4の数を求める、
    請求項3に記載のメモリシステム。
  5. 前記距離情報は前記第1の数の約数である、
    請求項4に記載のメモリシステム。
  6. 前記距離情報および前記第1の数は、2のべき乗である、
    請求項5に記載のメモリシステム。
  7. 前記コントローラは、前記第1の数に対し、前記原点情報の減算と、更新の実行毎の前記距離情報の加算と、を実行して第5の数を求め、前記第5の数を前記第2の数で除算した第1剰余を求め、前記第1剰余に基づいて前記第3論理アドレスを求める、
    請求項2に記載のメモリシステム。
  8. 前記コントローラは、前記第1の数の論理アドレスの全てにかかる対応関係の更新を完了した場合、前記原点情報を更新する、
    請求項2に記載のメモリシステム。
  9. 前記コントローラは、
    前記第3論理アドレスが無効であるか否かを判定し、
    前記第3論理アドレスが無効でない場合、第5物理アドレスが示す位置に格納されているデータを前記第3物理アドレスが示す位置に移動させ、前記第5物理アドレスは前記第3論理アドレスに前記第3物理アドレスが対応づけられる前に前記第3論理アドレスに対応付けられていた物理アドレスであり、
    前記第3論理アドレスが無効である場合、前記データの移動を実行しない、
    請求項2に記載のメモリシステム。
  10. 前記コントローラは、前記第1の数の論理アドレスの全てにかかる対応関係の更新を完了した場合、前記距離情報を更新する、
    請求項3に記載のメモリシステム。
JP2017179593A 2017-09-19 2017-09-19 メモリシステム Pending JP2019056981A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017179593A JP2019056981A (ja) 2017-09-19 2017-09-19 メモリシステム
US15/914,604 US10552314B2 (en) 2017-09-19 2018-03-07 Memory system and method for ware leveling

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017179593A JP2019056981A (ja) 2017-09-19 2017-09-19 メモリシステム

Publications (1)

Publication Number Publication Date
JP2019056981A true JP2019056981A (ja) 2019-04-11

Family

ID=65721474

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017179593A Pending JP2019056981A (ja) 2017-09-19 2017-09-19 メモリシステム

Country Status (2)

Country Link
US (1) US10552314B2 (ja)
JP (1) JP2019056981A (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7020989B2 (ja) * 2018-04-23 2022-02-16 株式会社メガチップス 不揮発性記憶装置、メモリ制御装置、及びメモリ制御方法
US11507296B2 (en) * 2021-03-10 2022-11-22 Micron Technology, Inc. Repair operation techniques
JP2023001826A (ja) * 2021-06-21 2023-01-06 キオクシア株式会社 半導体記憶装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9158672B1 (en) * 2011-10-17 2015-10-13 Rambus Inc. Dynamic deterministic address translation for shuffled memory spaces
JP2016170703A (ja) * 2015-03-13 2016-09-23 富士通株式会社 記憶装置、記憶装置の制御方法、及び情報処理システム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8255613B2 (en) 2009-04-30 2012-08-28 International Business Machines Corporation Wear-leveling and bad block management of limited lifetime memory devices
JP2011203916A (ja) 2010-03-25 2011-10-13 Toshiba Corp メモリコントローラ、および半導体記憶装置
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
US10282286B2 (en) 2012-09-14 2019-05-07 Micron Technology, Inc. Address mapping using a data unit type that is variable
WO2014110095A1 (en) 2013-01-08 2014-07-17 Violin Memory Inc. Method and system for data storage
US9811456B2 (en) * 2014-11-26 2017-11-07 Advanced Micro Devices, Inc. Reliable wear-leveling for non-volatile memory and method therefor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9158672B1 (en) * 2011-10-17 2015-10-13 Rambus Inc. Dynamic deterministic address translation for shuffled memory spaces
JP2016170703A (ja) * 2015-03-13 2016-09-23 富士通株式会社 記憶装置、記憶装置の制御方法、及び情報処理システム

Also Published As

Publication number Publication date
US20190087324A1 (en) 2019-03-21
US10552314B2 (en) 2020-02-04

Similar Documents

Publication Publication Date Title
US8407410B2 (en) Wear-leveling and bad block management of limited lifetime memory devices
US10475518B2 (en) Memory system, memory system control method, and program
JP2020003838A (ja) メモリシステム
JP6674361B2 (ja) メモリシステム
US20130311704A1 (en) Data storage device and method for flash block management
KR101687502B1 (ko) 메모리 제어기, 데이터 기억 장치 및 메모리 제어 방법
JP2019056981A (ja) メモリシステム
US20180276129A1 (en) Pre-fetching in a memory system configured with synthesized logical blocks
US9274721B2 (en) Nonvolatile memory device and data management method thereof
US9239757B2 (en) Method and apparatus for relocating data in non-volatile memory
KR101510120B1 (ko) 메모리 장치 및 메모리 장치의 관리 방법
JP5093294B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US10083120B2 (en) Memory system, and address mapping method and access method thereof
KR20140122730A (ko) 메모리 컨트롤러, 데이터 기억 장치 및 메모리의 제어 방법
US10275187B2 (en) Memory device and data read method thereof
US20180260127A1 (en) Management device, information processing apparatus, and management method
JP2020113187A (ja) メモリシステム
JP2018160060A (ja) メモリシステム
JP2021047963A (ja) メモリシステム
US10438655B2 (en) Apparatuses and methods of distributing addresses in memory devices for mitigating write disturbance
JP2007179479A (ja) メモリコントローラおよびフラッシュメモリシステム
JP2014199705A (ja) 不揮発性半導体装置
JP4661566B2 (ja) アクセスコントローラ、フラッシュメモリシステム及びアクセス制御方法
KR20200073108A (ko) Pram 블록들 내 카피백 및 쓰기의 통합을 위한 방법
JP7087013B2 (ja) メモリシステムおよび不揮発性メモリの制御方法

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180905

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191125

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210302

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210928

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220329