JP2016134167A - メモリシステムおよび処理装置 - Google Patents

メモリシステムおよび処理装置 Download PDF

Info

Publication number
JP2016134167A
JP2016134167A JP2015042729A JP2015042729A JP2016134167A JP 2016134167 A JP2016134167 A JP 2016134167A JP 2015042729 A JP2015042729 A JP 2015042729A JP 2015042729 A JP2015042729 A JP 2015042729A JP 2016134167 A JP2016134167 A JP 2016134167A
Authority
JP
Japan
Prior art keywords
correction
error correction
memory
memory system
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015042729A
Other languages
English (en)
Other versions
JP6486723B2 (ja
Inventor
將吉 佐藤
Shokichi Sato
將吉 佐藤
健一朗 鈴木
Kenichiro Suzuki
健一朗 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to US15/002,244 priority Critical patent/US10289475B2/en
Publication of JP2016134167A publication Critical patent/JP2016134167A/ja
Application granted granted Critical
Publication of JP6486723B2 publication Critical patent/JP6486723B2/ja
Priority to US16/409,986 priority patent/US11099927B2/en
Priority to US17/405,891 priority patent/US11960355B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】メモリシステムを含むシステムにおいて効率的にエラー訂正を実行すること。【解決手段】一つの実施形態によれば、メモリシステムは、第1メモリと、インタフェース部と、処理部とを備える。前記インタフェース部は、外部から第1要求を受信する(S4)。前記処理部は、前記第1メモリから読み出したデータに対し、複数のエラー訂正のうちの前記第1要求に応じたエラー訂正を実行する。【選択図】図11

Description

本実施形態は、一般的に、メモリシステムおよび処理装置に関する。
従来、メモリシステムは、データを記憶するストレージとして機能するメモリを有する。メモリに記憶されるデータにエラーが生じる場合がある。メモリシステムは、データに含まれるエラーを訂正する機能(エラー訂正機能)を有する。メモリシステムは、訂正能力が異なる複数のエラー訂正機能を有する場合がある。
特開2009−217754号公報
一つの実施形態は、メモリシステムを含むシステムにおいて効率的にエラー訂正を実行することが可能となるメモリシステムを提供することを目的とする。
一つの実施形態によれば、メモリシステムは、第1メモリと、インタフェース部と、処理部とを備える。前記インタフェース部は、外部から第1要求を受信する。前記処理部は、前記第1メモリから読み出したデータに対し、複数のエラー訂正のうちの前記第1要求に応じたエラー訂正を実行する。
図1は、メモリシステムの第1の実施形態の実装例を示す図である。 図2は、メモリシステムの構成例を示す図である。 図3は、メモリセルアレイに含まれる1個のブロックの構成例を示す回路図である。 図4は、電荷量の分布と読み出し電圧との関係を示す図である。 図5は、レベル3訂正のためのフレームの構成例を示す図である。 図6は、第1リストのデータ構成例を示す図である。 図7は、第1設定情報のデータ構成例を示す図である。 図8は、ホストの構成例を示す図である。 図9は、第2リストのデータ構成例を示す図である。 図10は、第2設定情報のデータ構成例を示す図である。 図11は、第1の実施形態の設定処理を説明するシーケンス図である。 図12は、メモリシステムに対するリードの際のホストの動作を説明するフローチャートである。 図13は、リード要求の受信時のメモリシステムの動作を説明するフローチャートである。 図14は、応答の一例を示す図である。 図15は、第1設定情報の別のデータ構成例を示す図である。 図16は、第3の実施形態の設定処理を説明するフローチャートである。 図17は、メモリシステムの第4の実施形態の実装例を示す図である。 図18は、RAIDコントローラの構成例を示す図である。 図19は、メモリシステムの第5の実施形態の実装例を示す図である。 図20は、ストレージコントローラの構成例を示す図である。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、メモリシステムの第1の実施形態の実装例を示す図である。情報処理システム1000は、ホスト2と、複数のメモリシステム1とを備える。各メモリシステム1は、ホスト2に接続され、夫々ホスト2の外部記憶装置として機能する。ホスト2は、各メモリシステム1に対しアクセス要求を発行することができる。アクセス要求は、データをライトする要求であるライト要求、および、データをリードする要求であるリード要求を含む。各メモリシステム1とホスト2との間の通信インタフェース規格としては任意のインタフェース規格が採用可能である。例えば、SCSI(Small Computer System Interface)規格、SAS(Serial Attached SCSI)規格、PCI Express規格、SATA(Serial ATA)規格などが採用可能である。
各メモリシステム1は、例えば同一の構成を具備する。図2は、メモリシステム1の構成例を示す図である。
メモリシステム1は、メモリコントローラ10およびNAND型のフラッシュメモリ(NANDメモリ)11を備える。NANDメモリ11は、ストレージとして機能するメモリである。ストレージとしては、NAND型のフラッシュメモリ以外の種類のメモリが採用可能である。例えば、NOR型のフラッシュメモリ、ReRAM(Resistance Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、または磁気ディスクなどがストレージとして採用可能である。
NANDメモリ11は、メモリセルアレイ16を備える。メモリセルアレイ16は、eraseの単位となるブロックを複数備えて構成される。
図3は、メモリセルアレイ16に含まれる1個のブロックの構成例を示す回路図である。図示するように、各ブロックは、X方向に沿って順に配列された(q+1)個のNANDストリングを備えている(qは、0以上の整数)。(q+1)個のNANDストリングにそれぞれ含まれる選択トランジスタST1は、ドレインがビット線BL0〜BLpに接続され、ゲートが選択ゲート線SGDに共通接続されている。また、選択トランジスタST2は、ソースがソース線SLに共通接続され、ゲートが選択ゲート線SGSに共通接続されている。
各メモリセルトランジスタMTは、半導体基板上に形成された積層ゲート構造を備えたMOSFET(Metal Oxide Semiconductor Field Effect Transistor)から構成される。積層ゲート構造は、半導体基板上にトンネル酸化膜を介在して形成された電荷蓄積層(Floating Gate)、及び電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。メモリセルトランジスタMTは、Floating Gateに蓄えられる電子の数に応じてしきい値電圧が変化し、このしきい値電圧の違いに応じてデータを記憶する。即ち、メモリセルトランジスタMTは、Floating Gateに、データに応じた量の電荷を保持する。
具体的には、メモリセルトランジスタMTは、NANDメモリ11が備える周辺回路(図示せず)によって、しきい値電圧がデータに応じた目標値に到達するように電子がチャージされる。周辺回路は、チャージポンプ、ロウデコーダ、センスアンプおよびカラムデコーダを含む。メモリセルトランジスタMTは、1ビットのデータを記憶するように構成されていてもよいし、多値(2ビット以上のデータ)を記憶するように構成されていてもよい。
各NANDストリングにおいて、(q+1)個のメモリセルトランジスタMTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている。そして、最もドレイン側に位置するメモリセルトランジスタMTから順に、制御ゲート電極がワード線WL0〜WLqにそれぞれ接続されている。従って、ワード線WL0に接続されたメモリセルトランジスタMTのドレインは選択トランジスタST1のソースに接続され、ワード線WLqに接続されたメモリセルトランジスタMTのソースは選択トランジスタST2のドレインに接続されている。
ワード線WL0〜WLqは、ブロック内のNANDストリング間で、メモリセルトランジスタMTの制御ゲート電極を共通に接続している。つまり、ブロック内において同一行にあるメモリセルトランジスタMTの制御ゲート電極は、同一のワード線WLに接続される。この同一のワード線WLに接続される(p+1)個のメモリセルトランジスタMTは1ページとして取り扱われ、このページごとにデータのプログラム及びデータのリードが行われる。
例えば、1個のメモリセルトランジスタMTに2ビットの記憶を行う記憶方式によれば、上位ページデータ“x”と下位ページデータ“y”で定義される4値データ“xy”の何れか一つをメモリセルトランジスタMTに保持可能である。この、4値データ“xy”は、Floating Gateに蓄えられる電荷量の順に、例えば、データ“11”、“01”、“00”、“10”が割り当てられる。データ“11”は、消去状態である。なお、各データに関連づけられる電荷量の順番は、上記に限定されない。隣接するデータ間のハミング距離が1となるように電荷量に各データが関連づけられる方式であれば、任意の方式が採用可能である。
周辺回路は、リード動作時においては、メモリセルトランジスタMTに記憶されているデータ(“11”、“01”、“00”、“10”)を特定するために、ワード線WLに読み出し電圧を印加する。
図4は、電荷量の分布と読み出し電圧との関係を示す図である。横軸は、電荷量に応じたしきい値電圧を示している。図示するように、各データに割り当てられた電荷量は、実際には、夫々、一定の幅の範囲に分布する。メモリセルトランジスタMTに保持された電荷量が何れの範囲に属するかは、各範囲の間に設定された読み出し電圧としきい値電圧との比較に基づいて判定される。例えば、周辺回路は、上位ページデータが“1”であるか“0”であるかを、メモリセルトランジスタMTのしきい値電圧が読み出し電圧Vth0から読み出し電圧Vth2の間に存在するか否かによって判定する。メモリセルトランジスタMTのしきい値電圧が読み出し電圧Vth0から読み出し電圧Vth2の間に存在する場合、周辺回路は、上位ページデータは“0”であると判定する。メモリセルトランジスタMTのしきい値電圧が読み出し電圧Vth0から読み出し電圧Vth2の間に存在しない場合、周辺回路は、上位ページデータは“1”であると判定する。また、周辺回路は、下位ページデータが“1”であるか“0”であるかを、メモリセルトランジスタMTのしきい値電圧が読み出し電圧Vth1よりも大きいか小さいかによって判定する。メモリセルトランジスタMTのしきい値電圧が読み出し電圧Vth1よりも大きい場合、周辺回路は、下位ページデータが“0”であると判定する。メモリセルトランジスタMTのしきい値電圧が読み出し電圧Vth1よりも小さい場合、周辺回路は、下位ページデータが“1”であると判定する。
各データに割り当てられた電荷量の範囲は、時間経過とともに、また、アクセス毎に、変化する。したがって、メモリセルアレイ16にライトされたデータの値が、異なる値としてリードされる場合がある。データの変化に対応できるように、NANDメモリ11は、読み出し電圧Vth0〜Vth2が変更可能に構成される。
メモリコントローラ10は、ホスト2とNANDメモリ11との間のデータ転送を含むメモリシステム1の全ての動作、の制御を実行する。メモリコントローラ10は、インタフェース(I/F)部12、第1処理部13、NAND制御部14、および記憶部15を備える。インタフェース(I/F)部12、第1処理部13、およびNAND制御部14のうちの一部または全部は、ソフトウェア、ハードウェア、またはそれらの組み合わせによって実現可能である。ソフトウェアによって構成要素が実現されるとは、CPU(Central Processing Unit)と予めプログラムを記憶するメモリとを備えるコンピュータにおいて前記CPUが前記プログラムに従って構成要素の機能を実現することをいう。
I/F部12は、ホスト2とメモリコントローラ10との間の通信の制御を実行する。I/F部12は、ホスト2からのアクセス要求をNAND制御部14に転送したり、ホスト2からの設定要求に応じてメモリコントローラ10の動作設定を行ったりする。
NAND制御部14は、I/F部12から受信するアクセス要求に応じてNANDメモリ11に対するアクセスを実行する。具体的には、NAND制御部14は、ライト要求に応じてデータをNANDメモリ11にライトする。また、NAND制御部14は、リード要求に応じてデータをNANDメモリ11からリードする。
第1処理部13は、後述の第2処理部24がホスト2におけるエラー訂正機能を担っていることに対し、メモリシステム1におけるエラー訂正機能を担う。第1処理部13は、NANDメモリ11にライトされるデータにエラー訂正符号を付す。また、第1処理部13は、NANDメモリ11からリードされたデータに対して、エラー訂正符号に基づいて、エラー検出およびエラー訂正を実行する。
さらに、第1処理部13は、訂正能力が夫々異なる複数のモードのエラー訂正を実行することができる。第1処理部13は、何れのモードでもエラー訂正が実行可能なようにデータにエラー訂正符号を付す。例えば、第1処理部13は、レベル1〜4のモードでエラー訂正を実行できることとする。レベル1のモードのエラー訂正による訂正能力が最も低く、レベルが高いモードのエラー訂正ほど訂正能力が高い。各モードのエラー訂正の手法を以下に説明する。なお、レベルxのモードのエラー訂正を、レベルx訂正、と表記する。
レベル1訂正は、例えばBCH符号を使用した訂正である。第1処理部13は、ライト対象のデータを所定サイズ毎に分割し、分割によって生成された各部分データによってレベル1訂正のフレーム(第1フレーム)を生成する。第1フレームのサイズはページのサイズと同じであってもよいし異なっていてもよい。例えば、第1フレームのサイズはページのサイズよりも小さい。NAND制御部14は、生成された各第1フレームをNANDメモリ11にライトする。各第1フレームは、1つの部分データと、当該1つの部分データから演算されたエラー訂正符号を含む。第1処理部13は、レベル1訂正を第1フレーム単位で実行する。
レベル2訂正においては、例えば、第1処理部13は、BCH符号によるエラー訂正に成功するまで、読み出し電圧Vth0〜Vth2を夫々変化させながら複数回のリードを実行する。前述のように、各データに割り当てられた電荷量の範囲の変化に起因してメモリセルアレイ16内のデータにエラーが生じる。読み出し電圧Vth0〜Vth2をより適した電圧に設定することにより、エラービットの数が減少し、その結果、訂正の成功率が向上する。読み出し電圧Vth0〜Vth2をどのように変化させるかについては、任意に設計可能である。レベル2訂正によれば読み出し電圧Vth0〜Vth2を変化させながら複数回のリードが実行されるので、レベル2訂正による訂正にかかる時間はレベル1訂正による訂正にかかる時間よりも大きい。
レベル3訂正は、例えば、複数のデータを用いて行われるエラー訂正である。図5は、レベル3訂正のためのフレームの構成例を示す図である。この例によれば、第1処理部13は、複数(ここでは4つ)の第1フレームを1つのフレームグループとして管理する。第1処理部13は、1つのフレームグループに属する4つの第1フレームを使って、レベル3訂正のためのフレーム(第2フレーム)を構築する。例えば、1つの第1フレームの先頭からi番目のビットは、他の3つの第1フレームの先頭からi番目のビットとともにi番目の第2フレームを構成する。レベル3訂正のためのエラー訂正符号としては、例えばRS符号が採用可能である。第2フレーム毎のエラー訂正符号は、NANDメモリ11内の所定の位置に格納される。第2フレーム内にその第2フレームのエラー訂正符号が格納されてもよい。
レベル3訂正においては、第1処理部13は、リード対象のデータを構成する第1フレームのほかに、当該第1フレームと同一のフレームグループを構成する3つの第1フレームをリードする。そして、リード対象のデータを構成する第1フレームに含まれるエラービット毎に第2フレームに対するエラー訂正を実行する。
なお、1つのフレームグループを構成する4つの第1フレームの組み合わせは任意の方法で決定される。例えば、1つのフレームグループとして管理される4つの第1フレームは、夫々、属するブロックが異なる。また、例えば、NANDメモリ11が夫々接続されるチャネルが異なる複数のメモリチップによって構成される場合には、属するメモリチップが夫々異なる複数の第1フレームによって1つのフレームグループを構成することが可能である。また、メモリセルアレイ16が並列に動作可能な領域(District)に分割されて構成される場合には、属するDistrictが夫々異なる複数の第1フレームによって1つのフレームグループを構成することが可能である。レベル3訂正によれば、複数の第1フレームをリードする必要があるため、レベル3訂正にかかる時間はレベル1訂正にかかる時間およびレベル2訂正にかかる時間よりも大きい。
レベル4のモードのエラー訂正(レベル4訂正)の例を説明する。レベル4訂正においては、第1処理部13は、第1フレーム毎のエラー訂正と第2フレーム毎のエラー訂正とを交互に繰り返すことによって、フレームグループ内に含まれる1以上のエラービットを逐次訂正する。換言すると、レベル4訂正においては、第1処理部13は、第1フレーム毎のエラー訂正と第2フレーム毎のエラー訂正とで積符号(product code)を構成し、反復訂正を行う。レベル4訂正によれば、第1フレーム毎のエラー訂正と第2フレーム毎のエラー訂正とが繰り返されるため、レベル4訂正にかかる時間はレベル3訂正にかかる時間よりも大きい。
記憶部15は、レジスタまたはメモリによって構成される。記憶部15は、第1リスト101および第1設定情報102が格納される。記憶部15としては、任意の種類のメモリが採用可能である。例えば、DRAM(Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)が採用可能である。
図6は、第1リスト101のデータ構成例を示す図である。第1リスト101は、メモリシステム1で実行可能なエラー訂正のモードのリストである。第1リスト101には、モード毎に訂正能力と訂正にかかる時間(訂正時間)とが記述される。第1リスト101に記述される訂正能力としては、他のモードとの比較が可能であれば任意の指標が採用可能である。例えば、所定サイズのデータ内のエラー訂正可能な最大のビット数が、訂正能力の指標として採用可能である。また、第1リスト101に記述される訂正時間としては、他のモードとの比較が可能であれば任意の指標が採用可能である。例えば、所定ビット数のエラーの訂正にかかる時間のワースト値が訂正時間の指標として採用可能である。また、所定ビット数のエラーの訂正にかかる時間の平均値が訂正時間の指標として採用可能である。
図7は、第1設定情報102のデータ構成例を示す図である。第1設定情報102は、第1リスト101に記述されている複数のモードのエラー訂正の夫々について、実行の許可または実行の不許可が設定される情報である。図7の例では、「Enabled」は実行が許可されていることを示し、「Disabled」は実行が許可されていないことを示す。即ち、レベル1訂正およびレベル2訂正は許可されており、レベル3訂正およびレベル4訂正は許可されていない。実行の許可および不許可は、ホスト2(正確には設定部23)によって設定される。
図8は、ホスト2の構成例を示す図である。ホスト2は、訂正制御部21およびI/F部22を備える。なお、アクセス要求を発行するための構成の説明を省略する。
I/F部22は、メモリシステム1とホスト2との間の通信の制御を実行する。訂正制御部21は、データの訂正に関する制御を実行する。具体的には、訂正制御部21は、設定部23、第2処理部24、および記憶部25を備える。設定部23および第2処理部24のうちの一部または全部は、ソフトウェア、ハードウェア、またはそれらの組み合わせによって実現可能である。記憶部25は、レジスタまたはメモリによって構成される。
第2処理部24は、1以上のモードのエラー訂正を実行することができる。例えば、第2処理部24は、複数のメモリシステム1を用いてRAID(Redundant Arrays of Inexpensive Disks)を構築し、RAIDに基づくエラー訂正を実行する。エラー訂正のための方式として、RAID 1、RAID 5、RAID 6、RAID 10、RAID 01、またはこれらの組み合わせが採用可能である。また、速度の向上を図るために、例えばRAID 5またはRAID 6などのエラー訂正の方式は、ストライピングと組み合わせて実装されてもよい。また、第2処理部24は、エラー訂正符号を用いたエラー訂正を実行してもよい。
記憶部25は、レジスタまたはメモリによって構成される。記憶部25は、第2リスト201、第2設定情報202、および第1リスト101が格納される。記憶部25としては、任意の種類のメモリが採用可能である。例えば、DRAM(Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)が採用可能である。第1リスト101は、1つのメモリシステム1から取得され、記憶部25に格納される。情報処理システム1000を構成する複数のメモリシステム1がエラー訂正機能のモードに関して同一の構成を有さない場合には、記憶部25は、第1リスト101がメモリシステム1毎に格納されてもよい。
図9は、第2リスト201のデータ構成例を示す図である。第2リスト201は、ホスト2で実行可能なエラー訂正のモードのリストである。第2リスト201には、第1リスト101と同様に、モード毎に訂正能力と訂正にかかる時間(訂正時間)とが記述される。
図10は、第2設定情報202のデータ構成例を示す図である。第2設定情報202は、第2リスト201に記述されている複数のモードのエラー訂正のうち、実行の許可と実行の不許可とが設定される情報である。図10の例では、「Enabled」は実行が許可されていることを示し、「Disabled」は実行が許可されていないことを示す。即ち、図10の例によれば、レベル1訂正は許可されておらず、レベル2訂正およびレベル3訂正は許可されている。実行の許可および実行の不許可は、設定部23によって設定される。
設定部23は、第1リスト101を取得する。そして、設定部23は、第1リスト101および第2リスト201に基づいて不要なモードの特定を行う。設定部23は、特定した結果に基づいて、第1設定情報102および第2設定情報202を生成する。具体的には、設定部23は、メモリシステム1において実行可能な複数のモードのうち、不要なモードに関しては「Disabled」を記録し、不要でないモードに関しては「Enabled」を記録した第1設定情報102を生成する。また、設定部23は、ホスト2において実行可能な複数のモードのうち、不要なモードに関しては「Disabled」を記録し、不要でないモードに関しては「Enabled」を記録した第2設定情報202を生成する。設定部23は、第1設定情報102をI/F部22に送信し、I/F部22は第1設定情報102を対象のメモリシステム1に送信する。
不要なモードの特定は、任意の手法によって実行されうる。例えば、設定部23は、第1リスト101に記載される複数のモードのうちの一に着目する(第1着目モード)。そして、設定部23は、第2リスト201に記載される複数のモードのうちの一に着目する(第2着目モード)。そして、設定部23は、第1着目モードと第2着目モードとの間で、訂正能力および訂正時間を比較する。第1着目モードと第2着目モードとのうち、一方のモードの訂正能力が他方のモードの訂正能力と同じかまたは低く、かつ前記一方のモードの訂正時間が前記他方のモードの訂正時間より大きい場合、設定部23は、前記一方のモードを不要なモードとして決定する。また、前記一方のモードの訂正能力が他方のモードの訂正能力より低く、かつ前記一方のモードの訂正時間が前記他方のモードの訂正時間と同じかまたは大きい場合、設定部23は、前記一方のモードを不要なモードとして決定する。設定部23は、第1リスト101に記載される全てのモードと第2リスト201に記載される全てのモードとの間の組み合わせの全てについて上記の比較を行う。
図6に示される第1リスト101の例と、図9に示される第2リスト201の例と、に従って設定部23による判断の例を説明する。メモリシステム1において実行可能なレベル4訂正は、ホスト2において実行可能なレベル3訂正に比べ、訂正能力が低く、かつ、訂正時間が同じである。したがって、設定部23は、メモリシステム1におけるレベル4訂正は不要であると判断する。また、メモリシステム1において実行可能なレベル3訂正は、ホスト2において実行可能なレベル2訂正と比較して、訂正能力が同じであり、かつ、訂正時間が大きい。したがって、設定部23は、メモリシステム1におけるレベル3訂正は不要であると判断する。また、ホスト2において実行可能なレベル1訂正は、メモリシステム1において実行可能なレベル2訂正と比較して、訂正能力が低く、かつ、訂正時間が同じである。したがって、設定部23は、ホスト2におけるレベル1訂正は不要であると判断する。
なお、第1着目モードと第2着目モードとのうち、一方のモードが他方のモードより訂正能力が高く、かつ前記一方のモードが前記他方のモードより訂正時間が大きい場合、設定部23は、所定のアルゴリズムに基づいて決定する。例えば、設定部23は、訂正能力および訂正時間を変数とする所定の関数に基づいて第1着目モードおよび第2着目モードの夫々について評価値を演算し、演算された各着目モードの評価値間の比較に基づいて不要なモードを決定する。評価値としては、例えば、訂正能力を訂正時間で除算して得られる値(単位時間当たりにエラー訂正が可能なエラービット数)が採用可能である。
また、第1着目モードと第2着目モードとのうち、一方のモードが他方のモードより訂正能力が高く、かつ前記一方のモードが前記他方のモードより訂正時間が大きい場合、設定部23は、何れのモードも不要なモードと決定しないようにしてもよい。
次に、第1の実施形態の情報処理システム1000の動作を説明する。
図11は、第1設定情報102および第2設定情報202の設定に関する動作(設定処理)を説明するシーケンス図である。まず、ホスト2において、設定部23は、メモリシステム1に対して第1リスト101を要求する(S1)。要求は、I/F部22を介してメモリシステム1に送信される。メモリシステム1においては、I/F部12は、S1の要求を受信すると、記憶部15から第1リスト101を読み出して、読み出した第1リスト101をホスト2に送信する(S2)。ホスト2においては、I/F部22は、第1リスト101を受信すると、受信した第1リスト101を記憶部25に格納する。
続いて、ホスト2においては、設定部23は、第1リスト101および第2リスト201に基づいて不要なモードを決定し、決定結果に基づいて第1設定情報102および第2設定情報202を生成する(S3)。設定部23は、第1設定情報102をI/F部22に送信し、I/F部22は第1設定情報102をメモリシステム1に送信する(S4)。メモリシステム1においては、I/F部12は、受信した第1設定情報102を記憶部15に格納する。ホスト2においては、設定部23は、生成した第2設定情報202を記憶部25に格納する(S5)。
図11に示す設定処理は、所定のタイミングで実行される。例えば、設定処理は、情報処理システム1000の起動時に実行される。設定処理は、起動毎に実行されてもよいし、最初の起動の際に一度だけ実行されてもよい。また、設定処理は、情報処理システム1000の運用中の任意のタイミングで実行されてもよい。
図12は、メモリシステム1に対するリードの際のホスト2の動作を説明するフローチャートである。ホスト2は、まず、リード要求をメモリシステム1に送信する(S11)。リード要求は、ホスト2内の図示しないCPUによって生成され、I/F部22によってメモリシステム1に送信される。メモリシステム1は、リード要求を受信すると、受信したリード要求に応じた動作を実行する。
図13は、リード要求の受信時のメモリシステム1の動作を説明するフローチャートである。メモリシステム1においては、リード要求は、I/F部12によって受信される。I/F部12は、受信したリード要求をNAND制御部14に転送する。NAND制御部14は、リード要求によるリード対象のデータをNANDメモリ11からリードする(S31)。
続いて、第1処理部13は、第1設定情報102を参照することによって、レベル1訂正に対して「Enabled」が設定されているか否かを判定する(S32)。レベル1訂正に対して「Enabled」が設定されている場合(S32、Yes)、第1処理部13は、レベル1訂正を実行する(S33)。続いて、第1処理部13は、レベル1訂正が失敗したか否かを判定する(S34)。訂正が失敗するとは、1以上のエラービットが訂正されずに残ることである。
レベル1訂正に対して「Enabled」が設定されていない場合(S32、No)、または、レベル1訂正が失敗した場合(S34、Yes)、第1処理部13は、第1設定情報102を参照することによって、レベル2訂正に対して「Enabled」が設定されているか否かを判定する(S35)。レベル2訂正に対して「Enabled」が設定されている場合(S35、Yes)、第1処理部13は、レベル2訂正を実行する(S36)。第1処理部13は、レベル2訂正が失敗したか否かを判定する(S37)。
レベル2訂正に対して「Enabled」が設定されていない場合(S35、No)、または、レベル2訂正が失敗した場合(S37、Yes)、第1処理部13は、第1設定情報102を参照することによって、レベル3訂正に対して「Enabled」が設定されているか否かを判定する(S38)。レベル3訂正に対して「Enabled」が設定されている場合(S38、Yes)、第1処理部13は、レベル3訂正を実行する(S39)。第1処理部13は、レベル3訂正が失敗したか否かを判定する(S40)。
レベル3訂正に対して「Enabled」が設定されていない場合(S38、No)、または、レベル3訂正が失敗した場合(S40、Yes)、第1処理部13は、第1設定情報102を参照することによって、レベル4訂正に対して「Enabled」が設定されているか否かを判定する(S41)。レベル4訂正に対して「Enabled」が設定されている場合(S41、Yes)、第1処理部13は、レベル4訂正を実行する(S42)。第1処理部13は、レベル4訂正が失敗したか否かを判定する(S43)。
レベル4訂正に対して「Enabled」が設定されていない場合(S41、No)、または、レベル4訂正が失敗した場合(S43、Yes)、第1処理部13は、メモリシステム1におけるエラー訂正に失敗した旨の報告である「Unrecovered Error」報告をエラー訂正に失敗したデータとともにI/F部12に送信し、I/F部12はそれらをホスト2に送信する(S44)。なお、エラー訂正に失敗したデータとは、エラー訂正が実行される前の、エラーを含むデータをいう。
レベル1訂正が成功した場合(S34、No)、レベル2訂正が成功した場合(S37、No)、レベル3訂正が成功した場合(S40、No)、または、レベル4訂正が成功した場合(S43、No)、I/F部12は、訂正されたデータをホスト2に送信する(S45)。S44の処理の後、または、S45の処理の後、メモリシステム1はリード要求に応じた動作を終了する。
ホスト2においては、リード要求の送信後、I/F部22は、データの受信を待ち受ける。I/F部22は、データとともに「Unrecovered Error」報告を受信した場合(S12、Yes)、データおよび「Unrecovered Error」報告を第2処理部24に送信する。第2処理部24は、第2設定情報202を参照することによって、レベル1訂正に対して「Enabled」が設定されているか否かを判定する(S13)。レベル1訂正に対して「Enabled」が設定されている場合(S13、Yes)、第2処理部24は、メモリシステム1においてエラー訂正に失敗したデータに対し、レベル1訂正を実行する(S14)。第2処理部24は、レベル1訂正が失敗したか否かを判定する(S15)。
レベル1訂正に対して「Enabled」が設定されていない場合(S13、No)、または、レベル1訂正が失敗した場合(S15、Yes)、第2処理部24は、第2設定情報202を参照することによって、レベル2訂正に対して「Enabled」が設定されているか否かを判定する(S16)。レベル2訂正に対して「Enabled」が設定されている場合(S16、Yes)、第2処理部24は、レベル2訂正を実行する(S17)。第2処理部24は、レベル2訂正が失敗したか否かを判定する(S18)。
レベル2訂正に対して「Enabled」が設定されていない場合(S16、No)、または、レベル2訂正が失敗した場合(S18、Yes)、第2処理部24は、第2設定情報202を参照することによって、レベル3訂正に対して「Enabled」が設定されているか否かを判定する(S19)。レベル3訂正に対して「Enabled」が設定されている場合(S19、Yes)、第2処理部24は、レベル3訂正を実行する(S20)。第2処理部24は、レベル3訂正が失敗したか否かを判定する(S21)。
「Unrecovered Error」報告を伴わないでデータを受信した場合(S12、No)、レベル1訂正が成功した場合(S15、No)、レベル2訂正が成功した場合(S18、No)、または、レベル3訂正が成功した場合(S21、No)、ホスト2の動作が終了する。
レベル3訂正に対して「Enabled」が設定されていない場合(S19、No)、または、レベル3訂正が失敗した場合(S21、Yes)、ホスト2はエラー処理を実行し(S22)、ホスト2の動作が終了する。なお、エラー処理の処理内容は任意の処理が適用可能である。例えば、ホスト2は、エラー処理として、ユーザにリードに失敗した旨の表示を行う。
このように、第1の実施形態によれば、第1処理部13は、複数のモードのエラー訂正を実行できる。そして、第1処理部13は、複数のモードのエラー訂正のうち、外部の設定部23からの要求に応じたモードのエラー訂正を実行する。これにより、ホスト2がエラー訂正機能を備える場合に、情報処理システム1000全体でエラー訂正を効率的に実行することが可能となる。
また、I/F部12は、エラー訂正機能の一覧である第1リスト101を外部からの要求に応じて外部に送信することができる。これにより、設定部23は、メモリシステム1にて実行可能なエラー訂正を確認した後に、メモリシステム1において実行可能なエラー訂正の実行の許可または不許可を設定することが可能である。
また、第1リスト101には、訂正能力および訂正時間がモード毎に記述されている。これにより、設定部23は、第1リスト101に記載の訂正能力および訂正時間を許可または不許可の設定の判断に供することが可能となる。なお、第1リスト101には、訂正能力および訂正時間のうちの何れかのみ記述されていてもよい。また、第1リスト101に記載される情報は、許可または不許可の設定の判断に使用可能な情報であれば、訂正能力および訂正時間以外の任意の情報が記述されてもよい。
また、設定部23は、S4の処理において、モード毎に許可および不許可の何れかが設定された第1設定情報102を送信する、として説明した。設定部23は、許可されるモードまたは不許可のモードの何れかのみ指定してもよい。許可されるモードのみが指定される場合、第1処理部13は、許可されたモードのエラー訂正のみを実行し、許可されていないモードのエラー訂正を実行しない。また、不許可のモードのみが指定される場合、第1処理部13は、不許可として指定されていないモードのエラー訂正を実行し、不許可として指定されたモードのエラー訂正を実行しない。
また、第1処理部13は、メモリシステム1におけるエラー訂正に失敗した場合にエラー訂正に失敗したデータをホスト2に送信する、として説明した。第1処理部13はエラー訂正に失敗したデータを送信せず、第2処理部24はエラー訂正に失敗したデータを使用せずにRAIDによって当該データを回復してもよい。RAIDによるデータの回復は、エラー訂正の概念に含まれる。
また、第1処理部13は、第1リスト101に記載された何れのモードでもエラー訂正が実行可能なようにデータにエラー訂正符号を付す、として説明した。第1処理部13は、データに付すエラー訂正符号を設定によって選択可能に構成されてもよい。例えば、第1処理部13は、第1設定情報102に「Enabled」が設定されたモードのエラー訂正を実行するために必要なエラー訂正符号のみを、ライトするデータに付す。例えば、レベル3訂正のためのエラー訂正符号およびレベル4訂正のためのエラー訂正符号を使用しないことが設定されている場合、第1処理部13は、第2フレームの構築を行わない。また、例えば、第1処理部13は、エラー訂正符号を付すか否かが設定される情報を、第1設定情報102とは別の情報として管理してもよい。実行が許可されたモードのエラー訂正符号が付されていない場合、第1処理部13は、そのモードのエラー訂正の実行は禁止されているものとして振る舞う。エラー訂正符号の付加を行わないことを指定できることによって、冗長データの書き込み量を低減することが可能となる。
また、ホスト2においては、設定部23は、メモリシステム1が実行可能な複数のエラー訂正のモードのうちの実行が許可されるエラー訂正のモードをメモリシステム1に設定する。具体的には、設定部23は、メモリシステム1が実行可能な複数のエラー訂正のモードのうちの実行が許可されるエラー訂正のモードを選択し、選択したモードをメモリシステム1に設定する。第2処理部24は、メモリシステム1が実行が許可されたエラー訂正に失敗した場合、ホスト2におけるエラー訂正を実行する。
なお、第2処理部24が実行が許可された全てのモードのエラー訂正に失敗した場合、ホスト2はエラー処理を実行する、として説明した。第2処理部24が実行が許可された全てのモードのエラー訂正に失敗し、かつ、「Disabled」が設定されたモードが第1設定情報102に記録されている場合、訂正制御部21は、メモリシステム1に、「Disabled」が設定されたモードのエラー訂正を実行させてもよい。
(第2の実施形態)
ホスト2と各メモリシステム1との間の通信インタフェース規格としてSCSI規格が採用される場合、I/F部22は、S1の処理においてINQUIRYコマンドを使用できる。S1の処理においてINQUIRYコマンドが使用される場合には、I/F部12は、S2の処理において、INQUIRYコマンドに対する応答として第1リスト101を送信する。
図14は、SCSI規格が採用される場合の応答の一例を示す図である。応答300は、エラー訂正のモード毎に7バイトの領域301を備える。各領域301には、モードの識別情報(Level No.)、訂正能力、および訂正時間が記述される。なお、応答300の先頭の4バイトの領域はヘッダ領域として使用される。
また、SCSI規格が採用される場合には、ホスト2がデバイスに対してパラメータを設定する手段として、ModePageを利用した設定が可能である。ModePageは、SCSI規格に準拠するデバイスが提供する、入力方式のうちの1つである。ここでは一例として、ModePageは記憶部15に確保されることとする。I/F部22は、S3の処理において、ModeSelectコマンドを使用することによって、ModePageにパラメータを設定する。
図15は、SCSI規格が採用される場合の第1設定情報102のデータ構成例を示す図である。ModePageは、複数のページ領域を有し、各ページ領域はページ番号によって夫々識別される。ModePageは、SCSI規格に特有のパラメータが設定されるページ領域のほかに、ベンダーユニークなページ領域を含む。例えば、ベンダーユニークなページ領域に、第1設定情報102を記録することが可能である。図15の例では、ベンダーユニークなページ領域であるページ番号が「35」のページ領域が第1設定情報102として使用されている。図15の第1設定情報102においては、先頭から2バイト目に、「D_Level1」、「D_Level2」、「D_Level3」、および「D_Level4」の4つのビットが定義されている。ここで、「D_Levelx」は、レベルx訂正の実行が許可されているか否かを示すフラグ情報である。「D_Level1」、「D_Level2」、「D_Level3」、および「D_Level4」に、許可または不許可を示す値が設定される。
また、SCSI規格が採用される場合には、第1処理部13は、CHECK CONDITIONステータスを送信することができる。CHECK CONDITIONステータスは、コマンドの実行が失敗した旨の報告である。例えば、第1処理部13は、CHECK CONDITIONステータスを含むレスポンスフレームを送信し、CHECK CONDITIONステータスを含むレスポンスフレームに後続して、Unrecovered Errorを示すセンスデータを送信する。ホスト2は、CHECK CONDITIONステータスを含むレスポンスフレームおよびセンスデータの受信によってメモリシステム1でのエラー訂正の実行に失敗した旨を認識する。
このように、SCSI規格が適用される場合には、ホスト2は、各メモリシステム1に対し、ModeSelectコマンドによって第1設定情報102を設定することが可能である。また、ホスト2は、INQUIRYコマンドによって第1リスト101を取得することが可能である。また、ホスト2は、CHECK CONDITIONステータスの受信によってメモリシステム1でのエラー訂正の実行に失敗した旨を認識することが可能である。なお、第1処理部13はセンスデータを用いることによってUnrecovered Errorを通知するとして説明したが、Unrecovered Errorの通知手法はこれに限定されない。例えば、第1処理部13は、CHECK CONDITIONステータスを含むレスポンスフレームに、Unrecovered Errorである旨を示す情報を付加してもよい。
(第3の実施形態)
第3の実施形態においては、ホスト2(正確には設定部23)がメモリシステム1に実行が許可されるエラー訂正のモードを設定する手法として、設定部23は、条件をメモリシステム1に送信する。メモリシステム1においては、第1処理部13は、自身が実行可能なエラー訂正のモードのうち、ホスト2から受信した条件、に合致するモードを選択する。条件は、例えば時間の制限値(制限時間)を含む。設定部23は、メモリシステム1に対し、例えば、リード要求のレイテンシが制限時間を越えないようにモードを選択する。
図16は、第3の実施形態の設定処理を説明するフローチャートである。ホスト2において、設定部23は、メモリシステム1に対して制限時間の指定を送信する(S51)。例えばホスト2と各メモリシステム1との間の通信インタフェース規格としてSCSI規格が採用される場合には、制限時間の指定は、OCTタイマの使用によって実現できる。
メモリシステム1においては、I/F部12は、S51の指定を受信すると、受信した指定を第1処理部13に送信する。第1処理部13は、4つのモードからモードを選択する(S52)。モードの選択方法は任意の方法が採用可能である。例えば、第1処理部13は、レベル1訂正からレベル順に訂正時間を順次合算し、合算値が制限時間を越えない範囲でモードの数が最大になるように、モードの選択を実行する。S52の処理の後、第1処理部13は、選択したモードに「Enabled」を設定し、選択されていないモードに「Disabled」を設定した第1設定情報102を記憶部15に格納する(S53)。
このように、第3の実施形態によれば、設定部23は、条件を指定することができる。第1処理部13は、指定された条件を満たすように、複数のモードからモードを選択する。そして、第1処理部13は、選択されたモードのエラー訂正を実行し、選択されていないモードのエラー訂正を実行しない。これにより、設定部23が直接にモードを指定する必要なく情報処理システム1000全体でエラー訂正を効率的に実行することが可能となる。
また、設定部23は、一例として、時間の制限値を指定することができる。これにより、ホスト2は、リード要求のレイテンシの制御が可能となる。
(第4の実施形態)
図17は、メモリシステム1の第4の実施形態の実装例を示す図である。メモリシステム1は、例えば第4の実施形態の情報処理システムとしてのサーバシステム2000に実装される。サーバシステム2000は、ディスクアレイ3000とラックマウントサーバ4000とが接続線5000によって接続されて構成される。接続線5000の通信インタフェース規格としては任意の規格が採用可能である。ラックマウントサーバ4000は、サーバラックに1以上のホスト4がマウントされて構成される。複数のホスト4は、接続線5000を介してディスクアレイ3000にアクセスすることができる。複数のホスト4は、ディスクアレイ3000に対してリード要求を含むアクセス要求を送信することができる。
また、ディスクアレイ3000は、サーバラックに、RAIDコントローラ3と、1以上のメモリシステム1と、がマウントされて構成される。各メモリシステム1は、各ホスト4からのリード要求を実行することができる。
RAIDコントローラ3は、サーバラックに具備される複数のメモリシステム1を用いてRAID(Redundant Arrays of Inexpensive Disks)を構築する。RAIDコントローラ3は、各ホスト4からのリード要求(第1リード要求)を受信する。RAIDコントローラ3は、サーバラックにマウントされた複数のメモリシステム1のうちの、受信したリード要求によって要求されたデータを記憶する1以上のメモリシステム1を特定する。RAIDコントローラ3は、特定した1以上のメモリシステム1にリード要求(第2リード要求)を送信する。また、RAIDコントローラ3は、各メモリシステム1に対し、第1〜第3の実施形態の訂正制御部21と同様の動作を実行する。図18は、RAIDコントローラ3の構成例を示す図である。第1の実施形態と同じ構成要素には同一の符号および名称を付して、重複する説明を省略する。
RAIDコントローラ3は、I/F部31、設定部23、第2処理部24、および記憶部25を備える。記憶部25は、第2リスト201、第2設定情報202、および第1リスト101が格納される。I/F部31は、サーバラックのバックプレーンを介して各メモリシステム1に接続されており、各メモリシステム1とRAIDコントローラ3との間の通信の制御を実行する。
RAIDコントローラ3は、第1リード要求によって要求されたデータのエラー訂正に第2リード要求のあて先のメモリシステム1またはRAIDコントローラ3において成功した場合には、エラー訂正後のデータを第1リード要求の送信元のホスト4に送信する。
なお、RAIDコントローラ3はサーバラックにマウントされるユニットであるとして説明したが、RAIDコントローラ3はサーバラックのバックプレーンにチップの形態で実装されてもよい。
(第5の実施形態)
図19は、メモリシステム1の第5の実施形態の実装例を示す図である。第4の実施形態に含まれる構成要素と同じ構成要素には、第4の実施形態と同じ名称および符号を付す。第4の実施形態に含まれる構成要素と同じ構成要素の説明は省略する。
第5の実施形態の情報処理システム、としてのサーバシステム2000は、ディスクアレイ3000とラックマウントサーバ4000とを備える。ディスクアレイ3000とラックマウントサーバ4000とは、接続線5000によって接続されている。ラックマウントサーバ4000は、サーバラックに1以上のホスト4がマウントされて構成される。各ホスト4は、ラックマウントサーバ4000に対してリード要求を含むアクセス要求を送信することができる。
ディスクアレイ3000は、サーバラックに、ストレージコントローラ5と、1以上のメモリシステム1と、がマウントされて構成される。ストレージコントローラ5は、各ホスト4からの第1リード要求を受信する。ストレージコントローラ5は、サーバラックにマウントされた複数のメモリシステム1のうちの、受信した第1リード要求によって要求されたデータを記憶する1以上のメモリシステム1を特定する。ストレージコントローラ5は、特定した1以上のメモリシステム1に第2リード要求を送信する。各メモリシステム1は、受信した第2リード要求に応じて、第1〜第3の実施形態のメモリシステム1と同じ動作を実行する。
ストレージコントローラ5は、ディスクアレイ3000に具備される複数のメモリシステム1を統括する。具体的には、ストレージコントローラ5は、ディスクアレイ3000に具備される複数のメモリシステム1を用いて、RAIDの構築、ストレージの仮想化、およびストレージのミラーリングを行う。また、ストレージコントローラ5は、各メモリシステム1に対し、第1〜第3の実施形態の訂正制御部21と同様の動作を実行する。ストレージコントローラ5は、第1リード要求によって要求されたデータのエラー訂正にストレージコントローラ5または第2リード要求のあて先のメモリシステム1において成功した場合には、エラー訂正後のデータを第1リード要求の送信元のホスト4に送信する。
図20は、ストレージコントローラ5の構成例を示す図である。第1の実施形態と同じ構成要素には同一の符号および名称を付して、重複する説明を省略する。
ストレージコントローラ5は、I/F部31、設定部23、ストレージ管理部52、および記憶部25を備える。記憶部25は、第2リスト201、第2設定情報202、および第1リスト101が格納される。I/F部31は、サーバラックのバックプレーンを介して各メモリシステム1に接続されており、各メモリシステム1とストレージコントローラ5との間の通信の制御を実行する。ストレージ管理部52は、RAIDの構築と、ストレージの仮想化と、ストレージのミラーリングと、を行う。
ストレージの仮想化とは、複数のメモリシステム1を1つの仮想的なストレージデバイス(ストレージプール)として統合する技術である。ストレージ管理部52は、サーバラックに具備される複数のメモリシステム1のうちの2以上のメモリシステム1を用いて1つのストレージプールを構成する。ストレージ管理部52は、ストレージプールから仮想的なボリュームを生成し、生成した仮想的なボリュームを各ホスト4に外部記憶装置として提供する。なお、ボリュームとは、各ホスト4が位置の指定に使用することができる連続するアドレスが割り当てられた一塊の記憶領域をいう。ストレージ管理部52は、1以上のメモリシステム1が提供する物理的な記憶領域を、アドレスの変換を使用することによって、1つの仮想的なボリューム(以降、仮想ボリューム)として管理する。仮想ボリュームに対し、メモリシステム1が提供する物理的な記憶領域を、実ボリュームと表記する。RAIDによって構築された記憶領域は、実ボリュームの概念に含まれることとする。即ち、ストレージ管理部52は、RAIDによって構築された記憶領域を用いて仮想ボリュームを構築することが可能である。ストレージ管理部52は、仮想ボリュームと実ボリュームとの両方を各ホスト4に提供してもよい。ストレージ管理部52は、1つのストレージプールから、予め設定された数の仮想ボリュームを生成する。
ストレージのミラーリングとは、2以上のボリュームでグループを構成し、グループに属する一のボリューム(正ボリューム)に格納されるデータの複製をグループに属する他のボリューム(副ボリューム)にも格納する技術である。副ボリュームの数は任意である。ストレージ管理部52は、グループの構築、および、データの複製の副ボリュームへの書き込みを実行する。ミラーリングのグループを構成するボリュームは、実ボリュームであってもよいし仮想ボリュームであってもよい。ここでは、ストレージ管理部52は、1つのディスクアレイ3000内の複数のボリュームによってミラーリングのグループを構成する、として説明する。ディスクアレイ3000がネットワークを介して他の記憶装置に接続されている場合には、ストレージ管理部52は、前記他の記憶装置を副ボリュームとして使用してもよい。
ストレージ管理部52は、第2処理部24を備える。第2処理部24は、複数のモードのデータ回復を実行することができる。各モードのデータ回復は、夫々エラー訂正の概念に含まれる。第2処理部24によるデータ回復のモードを説明する。
(1)RAIDを利用したデータ回復
第2処理部24は、RAIDを利用してデータの回復を行う。
(2)副ボリュームを利用したデータ回復
第2処理部24は、正ボリュームに対する第2リード要求に応じて「Unrecovered Error」報告を受信した場合、前記第2リード要求の対象のデータの複製を副ボリュームから取得する。副ボリュームの数が2以上である場合において、一の副ボリュームに対するリード要求に応じて「Unrecovered Error」報告を受信した場合、第2処理部24は、他の副ボリュームから複製を取得してもよい。なお、正ボリュームに格納されているデータの復旧のタイミングは任意である。第2処理部24は、第1リード要求の送信元のホスト4に対するデータの送信を行った後に正ボリュームにおけるデータの復旧を行ってもよいし、第1リード要求の送信元のホスト4に対するデータの送信を行う前に正ボリュームにおけるデータの復旧を行ってもよい。
上記した第2処理部24が実行可能なデータ回復のモードは、第2リスト201に予め記述されている。第2リスト201には、モード毎に訂正能力と訂正時間とが記述される。第2処理部24が実行を許可されたモードは、第2設定情報202に記述される。第2設定情報202は、設定部23によって生成される。第2処理部24は、「Unrecovered Error」報告に応じて、第2設定情報202に記述されたモードのデータ回復を実行する。
なお、ホスト4はサーバラックにマウントされていなくてもよい。また、ディスクアレイ3000からストレージコントローラ5を省略し、ストレージコントローラ5の機能をホスト4に実装することが可能である。ストレージコントローラ5の機能は、ホスト4に、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアとの組み合わせによって実装されうる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、2 ホスト、3 RAIDコントローラ、4 ホスト、5 ストレージコントローラ、10 メモリコントローラ、11 NANDメモリ、12 I/F部、13 第1処理部、15 記憶部、21 訂正制御部、22 I/F部、23 設定部、24 第2処理部、25 記憶部、31 I/F部、52 ストレージ管理部、101 第1リスト、102 第1設定情報、201 第2リスト、202 第2設定情報、1000 情報処理システム、2000 サーバシステム、3000 ディスクアレイ、4000 ラックマウントサーバ、5000 接続線。

Claims (10)

  1. 第1メモリと、
    外部から第1要求を受信するインタフェース部と、
    前記第1メモリから読み出したデータに対し、複数のエラー訂正のうちの前記第1要求に応じたエラー訂正を実行する処理部と、
    を備えることを特徴とするメモリシステム。
  2. 前記インタフェース部は、外部からの第2要求を受信し、前記第2要求の受信に応じて前記複数のエラー訂正の情報を外部に送信する、
    ことを特徴とする請求項1に記載のメモリシステム。
  3. 前記複数のエラー訂正の前記情報は、前記複数のエラー訂正の訂正能力または訂正時間を含む、
    ことを特徴とする請求項2に記載のメモリシステム。
  4. 前記第1要求は、第1のエラー訂正の指定または前記第1のエラー訂正と異なる第2のエラー訂正の指定を含み、
    前記処理部は、前記第1のエラー訂正を実行し、前記第2のエラー訂正を実行しない、
    ことを特徴とする請求項1に記載のメモリシステム。
  5. 前記第1要求は、条件の指定を含み、
    前記処理部は、前記複数のエラー訂正のうちから前記第1要求によって指定された条件を満たす第1のエラー訂正を選択し、前記第1のエラー訂正を実行し、前記第1のエラー訂正と異なる第2のエラー訂正を実行しない、
    ことを特徴とする請求項1に記載のメモリシステム。
  6. 前記条件は、時間の制限値であって、
    前記処理部は、第3要求の実行時のレイテンシが前記制限値を越えないように前記第1のエラー訂正を選択する、前記第3要求は前記データのリードの要求である、
    ことを特徴とする請求項5に記載のメモリシステム。
  7. 第2メモリをさらに備え、
    前記インタフェース部は、前記第1要求に含まれる指定を前記第2メモリに格納し、
    前記処理部は、前記第2メモリに格納された指定を参照する、
    ことを特徴とする請求項4に記載のメモリシステム。
  8. 前記インタフェース部は、SCSI(Small Computer System Interface)規格に準拠し、
    前記第1要求は、前記指定を含むModeSelectコマンドであり、
    前記第2メモリは、ModePageである、
    ことを特徴とする請求項7に記載のメモリシステム。
  9. メモリと、
    前記メモリに格納されているデータに対するエラー訂正の種類を外部からの要求に応じて選択するインタフェースと、
    を備えることを特徴とするメモリシステム。
  10. メモリシステムに接続可能なインタフェース部と、
    前記メモリシステムが実行可能な複数の第1エラー訂正のうちの第2エラー訂正を前記インタフェース部を介して前記メモリシステムに設定する設定部と、
    前記メモリシステムが前記第2エラー訂正に失敗した場合に第3エラー訂正を実行する処理部と、
    を備えることを特徴とする処理装置。
JP2015042729A 2015-01-21 2015-03-04 メモリシステムおよび処理装置 Active JP6486723B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US15/002,244 US10289475B2 (en) 2015-01-21 2016-01-20 Memory system
US16/409,986 US11099927B2 (en) 2015-01-21 2019-05-13 Memory system
US17/405,891 US11960355B2 (en) 2015-01-21 2021-08-18 Memory system

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562105959P 2015-01-21 2015-01-21
US62/105,959 2015-01-21
US201562127152P 2015-03-02 2015-03-02
US62/127,152 2015-03-02

Publications (2)

Publication Number Publication Date
JP2016134167A true JP2016134167A (ja) 2016-07-25
JP6486723B2 JP6486723B2 (ja) 2019-03-20

Family

ID=56464436

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015042729A Active JP6486723B2 (ja) 2015-01-21 2015-03-04 メモリシステムおよび処理装置

Country Status (2)

Country Link
US (2) US11099927B2 (ja)
JP (1) JP6486723B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180020877A (ko) * 2016-08-19 2018-02-28 삼성전자주식회사 솔리드 스테이트 드라이브 및 그것을 포함하는 스토리지 시스템
WO2018185800A1 (ja) * 2017-04-03 2018-10-11 株式会社日立製作所 ストレージ装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210123884A (ko) * 2020-04-06 2021-10-14 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
CN111767165A (zh) * 2020-06-30 2020-10-13 杭州海康存储科技有限公司 数据处理方法、装置及控制设备

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06187248A (ja) * 1992-12-16 1994-07-08 Nec Corp データエラー検出訂正制御回路
WO1998001806A1 (fr) * 1996-07-03 1998-01-15 Hitachi, Ltd. Processeur d'informations
US6115771A (en) * 1998-03-31 2000-09-05 Lsi Logic Corporation Method and system for converting computer peripheral equipment to SCSI-compliant devices
JP2007207376A (ja) * 2006-02-03 2007-08-16 Matsushita Electric Ind Co Ltd 不揮発性記憶装置およびメモリコントローラ
WO2009064791A2 (en) * 2007-11-13 2009-05-22 Mcm Portfolio Llc Method and apparatus of automatically selecting error correction algorithms
JP2011081776A (ja) * 2009-09-11 2011-04-21 Sony Corp 不揮発性メモリ装置、メモリコントローラ、およびメモリシステム
JP2012084127A (ja) * 2010-09-15 2012-04-26 Toshiba Corp 半導体装置
JP2013003656A (ja) * 2011-06-13 2013-01-07 Mega Chips Corp メモリコントローラ
US20140059277A1 (en) * 2011-01-13 2014-02-27 Indilinx Co., Ltd. Storage for adaptively determining a processing technique with respect to a host request based on partition data and operating method for the storage device
US20140245108A1 (en) * 2013-02-27 2014-08-28 Seagate Technology Llc ECC Management for Variable Resistance Memory Cells

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4703673B2 (ja) 2008-03-12 2011-06-15 株式会社東芝 メモリシステム
CN102099793B (zh) * 2008-06-24 2013-10-16 桑迪士克以色列有限公司 根据固态存储器的擦除计数进行误差校正的方法和装置
US8583835B1 (en) 2008-08-06 2013-11-12 Siliconsystems, Inc. Command portal for executing non-standard storage subsystem commands
WO2011031260A1 (en) 2009-09-10 2011-03-17 Hewlett-Packard Development Company, L.P. Memory subsystem having a first portion to store data with error correction code information and a second portion to store data without error correction code information
WO2012050934A2 (en) 2010-09-28 2012-04-19 Fusion-Io, Inc. Apparatus, system, and method for a direct interface between a memory controller and non-volatile memory using a command protocol
JP5980798B2 (ja) * 2010-12-01 2016-08-31 シーゲイト テクノロジー エルエルシーSeagate Technology LLC 独立したシリコン素子の動的な上位レベルの冗長モード管理
KR101807538B1 (ko) 2010-12-30 2017-12-12 삼성전자주식회사 듀얼-신드롬 생성기를 포함하는 에러 정정 코드 블록, 이의 동작 방법, 및 상기 에러 정정 코드 블록을 포함하는 시스템
US9053748B2 (en) 2012-11-14 2015-06-09 International Business Machines Corporation Reconstructive error recovery procedure (ERP) using reserved buffer
US9477550B2 (en) * 2013-10-24 2016-10-25 Globalfoundries Inc. ECC bypass using low latency CE correction with retry select signal
US9577857B2 (en) * 2013-11-08 2017-02-21 Gogo Llc Adaptive modulation in a hybrid vehicle communication system
US10146482B2 (en) 2014-08-01 2018-12-04 Toshiba Memory Corporation Global error recovery system
US10289475B2 (en) * 2015-01-21 2019-05-14 Toshiba Memory Corporation Memory system

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06187248A (ja) * 1992-12-16 1994-07-08 Nec Corp データエラー検出訂正制御回路
WO1998001806A1 (fr) * 1996-07-03 1998-01-15 Hitachi, Ltd. Processeur d'informations
US6115771A (en) * 1998-03-31 2000-09-05 Lsi Logic Corporation Method and system for converting computer peripheral equipment to SCSI-compliant devices
JP2007207376A (ja) * 2006-02-03 2007-08-16 Matsushita Electric Ind Co Ltd 不揮発性記憶装置およびメモリコントローラ
WO2009064791A2 (en) * 2007-11-13 2009-05-22 Mcm Portfolio Llc Method and apparatus of automatically selecting error correction algorithms
JP2011081776A (ja) * 2009-09-11 2011-04-21 Sony Corp 不揮発性メモリ装置、メモリコントローラ、およびメモリシステム
JP2012084127A (ja) * 2010-09-15 2012-04-26 Toshiba Corp 半導体装置
US20140059277A1 (en) * 2011-01-13 2014-02-27 Indilinx Co., Ltd. Storage for adaptively determining a processing technique with respect to a host request based on partition data and operating method for the storage device
JP2013003656A (ja) * 2011-06-13 2013-01-07 Mega Chips Corp メモリコントローラ
US20140245108A1 (en) * 2013-02-27 2014-08-28 Seagate Technology Llc ECC Management for Variable Resistance Memory Cells

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180020877A (ko) * 2016-08-19 2018-02-28 삼성전자주식회사 솔리드 스테이트 드라이브 및 그것을 포함하는 스토리지 시스템
KR102199424B1 (ko) 2016-08-19 2021-01-06 삼성전자주식회사 솔리드 스테이트 드라이브 및 그것을 포함하는 스토리지 시스템
WO2018185800A1 (ja) * 2017-04-03 2018-10-11 株式会社日立製作所 ストレージ装置
US10908988B2 (en) 2017-04-03 2021-02-02 Hitachi, Ltd. Storage apparatus

Also Published As

Publication number Publication date
US20210373992A1 (en) 2021-12-02
US11099927B2 (en) 2021-08-24
US11960355B2 (en) 2024-04-16
JP6486723B2 (ja) 2019-03-20
US20190266045A1 (en) 2019-08-29

Similar Documents

Publication Publication Date Title
US10496312B2 (en) Method of operating a storage device to compress or decompress data and a data storage system including the storage device
US11727997B2 (en) RPMB improvements to managed NAND
US10372603B2 (en) Handling of unaligned writes
CN107045462B (zh) 存储装置
JP5686516B2 (ja) Nandメモリのためのプログラミング管理データ
US10324788B2 (en) Memory system
US10223018B2 (en) Bad page and bad block management in memory
US8612836B2 (en) Non-volatile memory device with uncorrectable information region and operation method using the same
US20180336139A1 (en) Systems and methods for a highly-available memory
US11960355B2 (en) Memory system
KR20180041898A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR102524432B1 (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US20190227742A1 (en) Task tail abort for queued storage tasks
CN114675779A (zh) 存储设备的操作方法以及存储系统的操作方法
KR20180094724A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US10289475B2 (en) Memory system
JP2023025687A (ja) メモリ装置およびその動作方法
KR20220124318A (ko) 쓰기 동작을 리디렉션하는 스토리지 컨트롤러 및 이의 동작 방법
KR20190083517A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US10855316B2 (en) Error correction code (ECC) operations in memory
KR20220118004A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US11853573B2 (en) Storage device sharing system and operating method thereof
US11334505B2 (en) System and method for operating system
US10990476B2 (en) Memory controller and method of operating the same
US20230205427A1 (en) Storage device including memory controller and operating method of the same

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170227

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20170605

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180619

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180810

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180905

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190220

R150 Certificate of patent or registration of utility model

Ref document number: 6486723

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350