JP2012068862A - 半導体記憶制御装置 - Google Patents

半導体記憶制御装置 Download PDF

Info

Publication number
JP2012068862A
JP2012068862A JP2010212645A JP2010212645A JP2012068862A JP 2012068862 A JP2012068862 A JP 2012068862A JP 2010212645 A JP2010212645 A JP 2010212645A JP 2010212645 A JP2010212645 A JP 2010212645A JP 2012068862 A JP2012068862 A JP 2012068862A
Authority
JP
Japan
Prior art keywords
data
page
block
ssd
semiconductor storage
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
JP2010212645A
Other languages
English (en)
Other versions
JP5388976B2 (ja
Inventor
Tetsuo Kimura
哲郎 木村
Shigehiro Asano
滋博 浅野
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 JP2010212645A priority Critical patent/JP5388976B2/ja
Priority to US13/038,845 priority patent/US8555027B2/en
Publication of JP2012068862A publication Critical patent/JP2012068862A/ja
Priority to US14/017,072 priority patent/US9213604B2/en
Application granted granted Critical
Publication of JP5388976B2 publication Critical patent/JP5388976B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/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/7208Multiple device management, e.g. distributing data over multiple flash devices

Abstract

【課題】ライトペナルティ及びパリティの更新頻度を低減して、半導体記憶装置の寿命の低下を防止可能な半導体記憶制御装置を提供する。
【解決手段】複数の半導体記憶ドライブが接続され、情報処理装置から論理アドレスが指定されて書き込みが要求されたデータを半導体記憶ドライブへ書き込む半導体記憶制御装置は、所定の単位毎の第1データと、所定の数の第1データを用いて計算され当該所定の数の第1データの誤りを訂正するために使われる冗長情報とを異なる半導体記憶ドライブに各々書き込む書き込み制御部と、半導体記憶ドライブの諸元の情報を用いて第1テーブルを記憶する第1テーブル記憶領域を構築する構築部と、所定の数の第1データ及び冗長情報を関連付けるための識別情報と、半導体記憶ドライブに書き込まれた所定の数の第1データの各物理アドレス及び論理アドレスと、冗長情報の物理アドレスとを対応付けられた第1テーブルを第1テーブル記憶領域に記憶させるテーブル制御部とを備える。
【選択図】 図1

Description

本発明の実施形態は、半導体記憶制御装置に関する。
従来より、HDD(Hard Disk Drive)等の記憶装置の故障によるデータの損失を防ぐ手段として、複数のHDDを組み合わせて仮想的な1台のHDDを構成し、複数のHDDで誤り訂正符号を構成することで、HDD単位の故障に対応するRAID5(Redundant Array of Inexpensive Disks)等の記憶方式が広く利用されている。具体的には、RAID5では、複数のデータ(パリティグループという)に対して誤り訂正符号(パリティ)を付与して、複数のデータ及びパリティを複数のHDDに分散して各々記憶させる。
しかし、RAID5のような記憶方式では、HDDに記憶されたデータの一部のブロックを書き換える際には、新しいパリティを計算するために、新たなデータをHDDに書き込む前に、既に記憶されている古いデータ及びパリティを読み出す必要がある。これをライトペナルティと呼ぶ。このライトペナルティのオーバーヘッドが性能の低下をもたらすという課題がある。この課題を解決する方法の1つとして、ログ構造化ファイルシステムを採用することにより、小ブロックの書き込みを複数バッファリングして、パリティグループのサイズに達した時点で、パリティを計算し同時にHDDに書き込みを行なう方法がある。
喜連川 優著 「ストレージネットワーキング技術」,オーム社
近年では、このようなHDDの代わりにNAND Flashメモリ等の半導体記憶装置を使ってRAIDの技術を適用させることが考えられている。このような半導体記憶装置は、ブロック単位で消去を行うため、ブロック消去型半導体記憶装置と呼ばれる。ブロック消去型半導体記憶装置では、ページ単位での書き換えができず、ブロック全体に対して消去を行った後に、先頭ページから順にデータの書き込みを行なう必要がある。一方、HDDの上位装置からHDDへデータの書き込みが要求される際には、ブロックやページとは無関係に、セクタアドレスが指定される。そのため、ブロック消去型半導体記憶装置を記憶媒体とするSSD(Solid State Drive)で、データの書き込みを効率化させる方法の1つとして、書き込みが要求されたデータを、セクタアドレスの順とは無関係に、到着順に順次ページに連続的に書き込み、書き込んだブロックの番号及びページ番号と、セクタアドレスとの対応関係をSSDで別途管理する方法がある。
しかし、この方法は、SSD単独で利用する場合には効率が良いが、複数のSSDを組み合わせてRAID5,RAID6等を構成する場合には、ライトペナルティによる性能の劣化と、パリティの更新頻度が高いこととによってブロック消去型半導体記憶装置の寿命を低下させる恐れがある。
本発明の一観点は、上記に鑑みてなされたものであって、ライトペナルティ及びパリティの更新頻度を低減して、半導体記憶装置の寿命の低下を防止可能な半導体記憶制御装置を提供することを目的とする。
実施形態の半導体記憶制御装置は、複数の半導体記憶ドライブが接続され、情報処理装置から論理アドレスが指定されて書き込みが要求されたデータを前記半導体記憶ドライブへ書き込む半導体記憶制御装置であって、前記データは、1つ以上の所定の単位の第1データを有し、所定の単位毎の前記第1データと、所定の数の前記第1データを用いて計算され当該所定の数の第1データの誤りを訂正するために使われる冗長情報とを異なる半導体記憶ドライブに各々書き込む書き込み制御部と、前記論理アドレスと、前記半導体記憶ドライブにおいて前記データが各々書き込まれる位置を示す物理アドレスとの対応関係と、前記所定の数の前記第1データ及び前記冗長情報を関連付けるための識別情報とを示すための第1テーブルを記憶する第1テーブル記憶領域を、前記半導体記憶ドライブの諸元の情報を用いて構築する構築部と、前記識別情報と、前記書き込み制御部が前記半導体記憶ドライブに書き込んだ所定の数の前記第1データの各前記物理アドレス及び前記論理アドレスと、前記冗長情報が書き込まれる位置を示す物理アドレスとを対応付けられた前記第1テーブルを前記第1テーブル記憶領域に記憶させるテーブル制御部とを備えることを特徴とする。
第1実施形態のRAIDコントローラのハードウェア構成を例示する図。 RAIDコントローラの機能的構成を例示する図。 1段目アドレス変換テーブル及び2段目アドレス変換テーブルを例示する図。 冗長情報が付加された書き込み対象データを例示する図。 管理テーブルを新たに構築する処理の手順を示すフローチャート。 SSDに書き込みを行う処理の手順を示すフローチャート。 SSDからデータの読み出しを行う処理の手順を示すフローチャート。 誤り訂正符号を構成するためのSSDの変更に係るフローチャート。 第2実施形態の物理アドレスの変換を場合分けした9通りの例を示す図。 RAIDコントローラの機能的構成を例示する図。 書き込みタイミング制御部が管理する情報を例示する図。 変換制御部72aの内部構成を例示する図。 ブロック番号変換部72bが行う変換を説明するための図。 ページ番号変換部が行う変換を説明するための図。 書き込みタイミングを制御する処理の手順を示すフローチャート。 データを代替SSDに復元する処理の手順を示すフローチャート。 処理Aの手順を示すフローチャート。 処理Bの手順を示すフローチャート。 処理Eの手順を示すフローチャート。 処理Cの手順を示すフローチャート。 処理Dの手順を示すフローチャート。 一変形例に係るデータを読み出す処理の手順を示すフローチャート。
[第1の実施の形態]
まず、本実施の形態に係る半導体記憶制御装置のハードウェア構成について図1を用いて説明する。本実施の形態の半導体記憶制御装置であるRAIDコントローラ50には、サーバ100と複数の半導体記憶装置(SSD)60がそれぞれインタフェースを介して接続される。インタフェースとは、Fibre ChannelやSAS、iSCSI等である。RAIDコントローラ50は、サーバ通信部51と、コントローラ52と、デバイス制御部53と、メモリ54とを有する。また、図示しないが、RAIDコントローラ50には、システムプログラムを記憶する不揮発メモリが搭載される。更に、RAIDコントローラ50には、情報を表示する表示部が接続されても良い。
サーバ通信部51は、コントローラ52の制御の下、サーバ100との通信を制御する。メモリ54は、電源の投入時に実行されるプログラムや各種データを記憶する。コントローラ52は、CPU(Central Processing Unit)により構成され、電源の投入時にメモリ54からプログラムを読み出してこれを実行し、当該プログラムに従って、不揮発メモリに記憶された各種システムプログラムをメモリ54に転送し、メモリ54上でシステムプログラムを実行することにより、RAIDコントローラ50全体を制御して、各種機能を実現させる。具体的には、コントローラ52は、サーバ通信部51を介して、サーバ100から送信されたコマンドを受信し、解釈する。コントローラ52は、当該コマンドに応じて、SSD60へのデータの書き込みやSSD60からのデータの読み出しを制御する。デバイス制御部53は、コントローラ52の制御の下、SSD60へのデータの書き込みやSSD60からのデータの読み出しを行う。
SSD60は、半導体ドライブと、当該半導体ドライブの制御を行う制御回路とを含み、誤り訂正回路を含む。半導体ドライブは、リムーバブル(可搬)で、1以上の半導体記憶素子を有する装置であり、例えば、半導体記憶素子であるNAND型のフラッシュメモリが複数用いられて構成された記憶装置である。NAND型のフラッシュメモリ等の半導体記憶素子は、ランダムな読み書きができず、ページと呼ばれる単位で読み書きが可能で、複数ページがまとまってブロックと呼ばれる単位の記憶領域を構成する。ここでは、1ページ4KB、64ページで1ブロックとする。1つの半導体記憶素子はこのブロックが複数集まって構成される。このような半導体記憶素子が複数集まって1つのSSD60が構成される。このようなSSD60は、RAIDコントローラ50に対して着脱自在に装着される。従って、RAIDコントローラ50の初期構成時やRAIDコントローラ50に既に装着されたSSD60の故障時にユーザが所望のSSD60をRAIDコントローラ50に対して装着可能である。尚、複数のSSD60を識別するために、各SSD60にはドライブ番号が割り当てられている。
ここで、複数のSSD60により誤り訂正符号(RAID)を構成する方法について説明する。本実施の形態においては、複数のSSD60のうち1つを、冗長情報を書き込むためのSSDとし、他の所定の数のSSD60を、ホストから書き込みが要求されたデータを書き込むためのSSDとして、これらのSSD60の各ブロックを1つの組として誤り訂正符号を構成して、ページ単位での書き込みを行なう。即ち、本実施の形態の基本構成においては、RAIDコントローラ50は、書き込みが要求されたデータについて、所定の単位であるページ毎のデータと、所定の数のデータ(第1データ)を用いて計算され当該所定の数のデータの誤りを訂正するために用いられる冗長情報(上述のパリティに相当する)とを異なるSSD60に各々書き込む。所定の数のデータ及び冗長情報により誤り訂正符号が構成される。誤り訂正符号としては、例えば、パリティ符号を用いる。
ここで、SSD60への書き込み方式について説明する。従来より、NAND型の半導体記憶素子では、追記方式が採用されている。サーバ100から指定された論理アドレス(Logical Block Address:LBA)とは無関係に、消去済みのブロックにページ単位(例えば、4KB)でデータの書き込みをページの順に行ない、書き込みを行なった物理的な記憶位置を示す物理アドレス(Physical Block Address:PBA)と論理アドレスとの対応関係を記憶して、これを用いてデータの読み出しを行う。この方式を追記方式と呼ぶ。この追記方式では、書き込みの前に、ブロックを消去する必要がある。ブロックの消去とは、ブロックを構成する全てのビットの値を「1」にすることである。SSD60では、このような消去をブロック単位で行ない、消去済みのブロックに対してページ単位で書き込みを行う。即ち、NAND型の半導体記憶素子を用いたSSD60においては、消去済みのブロックのうち書き込みがまだ行われていないページに対して順次書き込みが可能であり、既に書き込みが行なわれたページに対する上書きが不可能である。また、サーバ100からの要求に応じたデータの書き込みは、サーバ100で用いられるセクタアドレス等の論理アドレス(Logical Block Address:LBA)で指定される。一方、サーバ100へのデータや冗長情報の書き込みは、SSD60の物理的な記憶位置(物理アドレス(Physical Block Address:PBA)という)により、論理アドレスとは無関係に、ページの昇順に書き込みが行なわれる。尚、サーバ100上で取り扱うデータの単位はセクタであり、このセクタのサイズ(セクタサイズ)とページサイズとは異なる場合がある。この論理アドレスと物理アドレスとの対応関係は、後述する管理テーブルに記憶される。そして、データの書き込み要求において指定された論理アドレスが再度指定されて新たなデータの書き込みがサーバ100から要求されると、RAIDコントローラ50は、SSD60において消去済みのブロックの書き込みがまだ行なわれていないページに対して新たなデータの書き込みを行う。このとき、当該論理アドレスに対応して前回書き込みが行われたページを無効にして、新たなデータの書き込みが行われたページを有効にする。またこのとき、RAIDコントローラ50は、上述した誤り訂正符号を構成しながら新たなデータ及び冗長情報の書き込みを行なう。
次に、RAIDコントローラ50の機能的構成について図2を用いて説明する。RAIDコントローラ50は、上述したサーバ通信部51及びデバイス制御部53の機能に加え、バッファ制御部71と、アドレス変換部72と、管理テーブル構築部73と、データバッファ75と、管理テーブル記憶部80とを有する。バッファ制御部71と、アドレス変換部72と、管理テーブル構築部73とは、コントローラ52がプログラムを実行することとにより実現される。管理テーブル76は、管理テーブル記憶部80に記憶される。データバッファ75と管理テーブル記憶部80とは、図1のメモリ54に記憶される。
サーバ通信部51は、サーバ通信部51を介したサーバ100との通信を制御する。サーバ通信部51は、サーバ100から送信されたコマンドを受信する。サーバ通信部51は、受信したコマンドによって論理アドレスが指定されたデータの書き込みが要求されている場合、当該コマンド(writeコマンドという)を後述のバッファ制御部71に送る。また、サーバ通信部51は、サーバ100から送信されたコマンドによって論理アドレスが指定されたデータの読み出しが要求されている場合、当該コマンド(readコマンドという)をバッファ制御部71に送る。
バッファ制御部71は、サーバ通信部51を介してサーバ100から受信されたコマンドやデータをデータバッファ75に一時的に記憶させる。本実施の形態においては、バッファ制御部71は、サーバ100から受信されたコマンドによって論理アドレスが指定されたデータの書き込みが要求されている場合、当該データを論理アドレスと対応付けて先着順にデータバッファ75に記憶させる。そして、バッファ制御部71は、データバッファ75に記憶させたデータであって、1ストライプ分の誤り訂正符号を生成するための対象となるデータが揃ったときに、1ストライプ分の誤り訂正符号を生成するための対象となるデータを用いて冗長情報を計算して、当該データ及び当該冗長情報のSSD60への書き込みを要求するwriteコマンドをデバイス制御部53に送る。尚、当該要求に応じて書き込みが終ったデータについて、バッファ制御部71は、後に読み出しの要求がある場合に備えて、データバッファ75中に保持させるようにしても良いし、データバッファ75から削除するようにしても良い。
ここで、ストライプについて説明する。上述したように、本実施の形態においては、サーバ100から書き込みが要求されたデータについては、ページ単位の所定の数のデータ及び冗長情報により誤り訂正符号を構成して、各データ及び冗長情報が各々異なるSSD60へ書き込まれる。この誤り訂正符号を構成する各SSD60の各ブロックのそれぞれ1ページが集められた1組のデータの集合をストライプという。一方、ストライプ番号とは、誤り訂正符号を構成する各SSD60のブロックの組に対して付与される識別番号である。本実施の形態においては、フリーブロックが新規に割当てられる時に、誤り訂正符号を構成する各SSD60のブロックの組が、各SSD60で同時に、選択される。当該組に対して未使用のストライプ番号が割当てられる。そして当該ストライプ番号が割り当てられた組に属する各SSD60の各ブロックにおいてそれぞれ1ページずつページ単位のデータが書き込まれるため、この各ページの組が、1ストライプとなる。
上述したデータバッファ75に記憶させたデータであって、1ストライプ分の誤り訂正符号を生成するための対象となるデータが揃ったときとは、即ち、所定の数のデータが揃ったときである。
管理テーブル構築部73は、管理テーブル76を構築する。具体的には、管理テーブル構築部73は、管理テーブル76を新たに構築する際、誤り訂正符号の構成に関する指示に応じて、RAIDコントローラ50に接続され且つ誤り訂正符号を構成するためのSSD60の諸元の情報を収集し、SSD60の諸元に適合した管理テーブル76を構築する。諸元の情報とは、ブロックサイズの情報、ブロック数の情報及びページサイズの情報を有する。誤り訂正符号の構成に関する指示は、例えば、サーバ通信部51を介してサーバ100から送信される。具体的にどのようにして管理テーブル構築部73が管理テーブル76を構築するのかについては動作欄で詳述する。
管理テーブル76は、論理アドレス及び物理アドレスの対応関係を示すと共に、データ及び冗長情報を関連付けるための識別情報を示す情報である。管理テーブル76は、例えば、1段目アドレス変換テーブル76a及び2段目アドレス変換テーブル76bを有する。本実施の形態において識別情報は、上述したストライプ番号に相当する。図3は、1段目アドレス変換テーブル76a及び2段目アドレス変換テーブル76bのデータ構成を例示する図である。尚、同図では、RAIDコントローラ50に接続されるSSD60の数は4つであり、各SSD60の有するブロックサイズやページサイズは同じである場合の例が示されているが、本実施の形態においてはこれに限定されるものではない。
1段目アドレス変換テーブル76aは、論理アドレスをキーとする情報であり、論理アドレスと、当該論理アドレスに対応するデータが書き込まれたブロックの属する組に割り当てられたストライプ番号と、当該データが書き込まれたブロックを有するSSD60に割り当てられたドライブ番号と、当該ブロック内で当該データが書き込まれたページを識別するためのページ番号とが対応付けられた情報である。尚、同図に示される1段目アドレス変換テーブル76aでは、1列目に論理アドレスが示されており、これと、ストライプ番号と、ドライブ番号及びページ番号とが並列に対応付けられていることが示されているが、この1段目アドレス変換テーブル76aの行が論理アドレスから機械的に決定できれば、論理アドレスの列は省略されても構わない。また、ページサイズがセクタサイズよりも大きい場合、ページ内において論理アドレスに対応するセクタの位置を特定するためのビット幅の分だけ、論理アドレスの下位ビットを除いた上位ビットをキーとして1段目アドレス変換テーブル76aを参照すれば良い。例えば、セクタサイズが512byteであり、ページサイズが2048byteである場合には、ページ内において論理アドレスに対応するセクタの位置を特定するのに2ビット必要であるため、論理アドレスがNビット幅である場合には論理アドレスの上位(N-2)ビットをキーとして1段目アドレス変換テーブル76aを参照すれば良い。
2段目アドレス変換テーブル76bは、ストライプ番号をキーとする情報であり、誤り訂正符号を構成する各SSD60の各ブロックの組に割り当てられたストライプ番号と、当該組に属する各SSD60の各ブロックを識別するためのブロック番号と、有効/無効フラグとが対応付けられた情報である。図3の例では、各SSD60のドライブ番号に対応付けられてブロック番号が記憶される。有効/無効フラグとは、各組に属するブロックのうち少なくとも1つ以上は有効データを保持しているか(有効であるか)否か(無効であるか)を示す情報である。また、2段目アドレス変換テーブル76bのストライプ番号には、書き込みの対象を示すポインタがセットされる。当該ポインタが適宜更新されて、2段目アドレス変換テーブル76bのストライプ番号の順に誤り訂正符号を構成する各ブロックに書き込みが行なわれることになる。
このような1段目アドレス変換テーブル76aに記憶されている論理アドレスに対応するストライプ番号に対応付けられているドライブ番号及びページ番号と、2段目アドレス変換テーブル76bに記憶されている当該ストライプ番号に対応付けられている当該ドライブ番号に対応するブロック番号とによって、当該論理アドレスに対応するデータが書き込まれているSSD60のブロックのページが特定される。即ち、ドライブ番号によって特定されるSSD60におけるブロック番号及びページ番号が物理アドレスに相当し、論理アドレス及び物理アドレスの対応関係が管理テーブル76に記憶されていることになる。
アドレス変換部72は、サーバ通信部51からreadコマンドを受け取る。アドレス変換部72は、受け取ったreadコマンドで指定された論理アドレスを用いて管理テーブル76を参照し、当該readコマンドで読み出しが要求されたデータが書き込まれているSSD60のドライブ番号、ブロック番号及びページ番号を特定する。そして、アドレス変換部72は、特定した当該ドライブ番号、ブロック番号及びページ番号によって指定されるデータの読み出しを要求するreadコマンドをデバイス制御部53に送る。また、サーバ通信部51からreadコマンドにより読み出されたデータのエラーが検出されて当該データを復元する際に、管理テーブル76を参照して、当該データに対応付けられて記憶されている論理アドレスを用いて、当該データと誤り訂正符号を構成する他のデータ及び冗長情報がそれぞれ記憶されている各SSD60のドライブ番号、ブロック番号及びページ番号を特定する。そして、アドレス変換部72は、特定した各SSD60のドライブ番号、ブロック番号及びページ番号によって指定されるデータの読み出しを要求するreadコマンドをデバイス制御部53に送る。
デバイス制御部53は、バッファ制御部71からwriteコマンドを受け取ると、1ストライプ分の誤り訂正符号を構成する各データ及び冗長情報を書き込む対象のストライプ番号を決定する。そして、デバイス制御部53は、各データ及び冗長情報を書き込む対象のSSD60を決定し、決定した各SSD60に当該各データ及び冗長情報を各々書き込む。この書き込みにおいて、デバイス制御部53は、対応するSSD60の消去済みのブロックのうち書き込みがまだ行なわれていないページ毎に書き込みの位置を順次示すよう追記ポインタを設定する。そして、デバイス制御部53は、追記ポインタによって示される位置のページに書き込み対象データを書き込む。デバイス制御部53は、その後、書き込みを行なったページに続く次のページであって書き込みがまだ行われていないページの位置を示すよう追記ポインタを更新する。従って、追記ポインタは順次次の書き込み位置を示すようにその値が変化する。例えば、追記ポインタは、各チャネルにおいて15ビットの物理アドレスによりブロックが識別され、ブロック内に64ページある場合、合計15+6=21ビットで構成される。
ここで、書き込み対象データ及び冗長情報のデータ構成について説明する。デバイス制御部53は、書き込み対象データ自体の誤りを検出して訂正するための誤り訂正符号(ページECCという)及びwriteコマンドによって指定された論理アドレスを当該書き込み対象データに付加する。尚、ページECCには、データの誤りを検出するCRC符号等の符号と、データの誤りを訂正するECC符号等の符号とが含まれるものとする。ページECCにCRC符号も含む理由は、ECC符号によりデータの誤りを訂正できない場合は誤訂正の可能性もあるからである。図4は、冗長情報が付加された書き込み対象データを例示する図である。上述のように決定された各SSD60において、デバイス制御部53は、このようなページECC及び論理アドレスを付加した書き込み対象データを、上述のように決定された各SSD60内の追記ポインタにより示されるページの記憶される記憶領域に書き込む。尚、書き込み対象データはページ単位の大きさであるが、SSD60のページサイズは、書き込み対象データにページECC及び論理アドレスが付加された全体の大きさに相当するものとする。
図3の説明に戻る。デバイス制御部53は、このような書き込みを行なった後、各データが書き込まれた各SSD60のドライブ番号及びページ番号を、当該各データに対応付けられた論理アドレスと共に、当該データの書き込みに際して決定したストライプ番号と対応付けた情報である1段目アドレス変換テーブル76aを管理テーブル記憶部80に記憶させる。また、デバイス制御部53は、誤り訂正符号を構成する各データ及び冗長情報を各々書き込んだブロックのブロック番号を各SSD60のドライブ番号と対応付けた情報である2段目アドレス変換テーブル76bを管理テーブル記憶部80に記憶させる。
また、デバイス制御部53は、アドレス変換部72からreadコマンドを受け取ると、当該readコマンドによって指定されたSSD60のドライブ番号、ブロック番号及びページ番号のページからデータを読み出して、読み出したデータをサーバ通信部51に送る。尚、デバイス制御部53は、SSD60から読み出した当該データに誤りがある場合、これを検出して当該データを復元する。
また、デバイス制御部53は、誤り訂正符号を構成する複数のSSD60のうち少なくとも1つが故障で他のSSDに変更される場合に、故障したSSD(変更前SSDという)に記憶されたデータを代替SSDに復元する。これは、新しいSSDがRAIDコントローラ50に追加で接続された場合や、または、スペアとしてRAIDコントローラ50に予め接続されていて、故障したSSD60の代替として使用される場合もある。以降、故障したSSD60の代替のSSDを代替SSDと呼ぶ。この場合、RAIDコントローラ50は、誤り訂正符号を構成する複数のSSD60のうちのうち少なくとも1つが代替SSDに変更されることを、例えばサーバ通信部51を介したサーバ100からの指示により検知するようにしても良いし、新たな代替SSDが追加で接続された際の当該代替SSDとの通信により検知するようにしても良い。そして、デバイス制御部53は、代替SSDの諸元の情報を用いて、当該代替SSDが所定の条件を満たすか否かを確認して、当該代替SSDが所定の条件を満たす場合に、変更前SSDに記憶されたデータを代替SSDに復元すると決定する。この場合、デバイス制御部53は、2段目アドレス変換テーブル76bを参照して、変更前SSDに書き込まれていた全てのデータを、誤り訂正符号を用いて各々復元してこれらを代替SSDに書き込む。
次に、本実施の形態に係るRAIDコントローラ50の行う処理の手順について説明する。まず、RAIDコントローラ50が管理テーブル76を新たに構築する処理の手順について図5を用いて説明する。RAIDコントローラ50は、自身に接続されているSSD60のそれぞれからSSD60の諸元(ブロックサイズ、ブロック数、ページサイズ)の情報を取得する(ステップS1)。本実施の形態では、RAIDコントローラ50に接続される複数のSSD60間でブロックサイズ及びページサイズがそれぞれ等しいことを前提としている。そのため、RAIDコントローラ50は、SSD60から取得した諸元の情報を用いて、SSD60間でブロックサイズ及びページサイズが一致することを確認する(ステップS2)。SSD60間でブロックサイズ及びページサイズが一致しない場合には(ステップS3:NO)、警告を表示部に表示させる(ステップS4)。RAIDコントローラ50に接続される複数のSSD60間でブロックサイズ及びページサイズが一致する場合には(ステップS3:YES)、RAIDコントローラ50は、次に、誤り訂正符号の構成に関する指示を受け付ける(ステップS5)。例えば、5つのSSD60がRAIDコントローラ50に接続されている場合、そのうちの1つをスペアとし、残りの4つで誤り訂正符号を構成するという指示をRAIDコントローラ50は受け付ける。即ち、この場合、誤り訂正符号を構成するために用いるSSD60の数は5つであり、誤り訂正符号を構成する際に1つの組となるデータの数である所定の数は4つであると指示される。
そして、RAIDコントローラ50は、当該指示に応じて、誤り訂正符号を構成するためのデータが記憶されたSSD60を決定する。RAIDコントローラ50は、決定したSSD60から取得した諸元の情報を用いて、SSD60に記憶可能なセクタ数を決定する(ステップS6)。尚、各SSD60内のフリーブロックを確保するためのコンパクションに係るコストを軽減すべく、RAIDコントローラ50は、SSD60に記憶可能な最大のセクタ数より小さいセクタ数を決定するようにしても良い。
次に、RAIDコントローラ50は、ステップS6で決定したセクタ数分の行を有する1段目アドレス変換テーブル76aを生成してメモリ54の記憶領域に記憶させることにより、1段目アドレス変換テーブル76aを記憶する記憶領域を構築する(ステップS7)。尚、RAIDコントローラ50は、ページサイズがセクタサイズより大きい場合、1ページには、連続する複数のセクタに対応するデータが記憶されるとして、ステップS6で決定したセクタ数を、ページサイズをセクタサイズで割った数の行を有する1段目アドレス変換テーブル76aをメモリ54に生成するようにしても良い。
そして、RAIDコントローラ50は、ページサイズと、ブロックサイズと、ステップS5で受け付けた指示による誤り訂正符号の構成と、ステップS6で決定したセクタ数とを用いて、誤り訂正符号を構成する各ブロックの組の全ての数である総ストライプ数を決定する。例えば、ページサイズが4KBであり、ブロックサイズがNbであり、誤り訂正符号を構成する際にデータを書き込むSSD60が4つ且つ冗長情報を書き込むためのSSD60が1つであり、ステップS6で決定したセクタ数がNtsとすると、「総ストライプ数=Nts/((4KB/512B)*4*Nb)」となる。RAIDコントローラ50は、このようにして決定した総ストライプ数分の行を有する2段目アドレス変換テーブル76bを生成してメモリ54の記憶領域に記憶させることにより、2段目アドレス変換テーブル76bを記憶する記憶領域を構築する(ステップS8)。RAIDコントローラ50は、各行に対応する各組に属するブロックは有効データを保持していない(無効である)ことを示すように有効/無効フラグをセットして、2段目アドレス変換テーブル76bの初期化を行う。また、RAIDコントローラ50は、2段目アドレス変換テーブル76bの先頭の行に、書き込みの対象となるポインタをセットする。このポインタは、ストライプ番号に対応して誤り訂正符号を構成する各ブロックに書き込み可能なページがなくなった場合に、次のストライプ番号にセットされることになり、2段目アドレス変換テーブル76bにセットされたストライプ番号の順に、誤り訂正符号を構成する各ブロックへの書き込みが行なわれることになる。
次に、サーバ100からのwriteコマンドに応じてRAIDコントローラ50がSSD60に書き込み対象データの書き込みを行う処理の手順について図6を用いて説明する。RAIDコントローラ50は、論理アドレスが指定されたデータの書き込みを要求するwriteコマンドをサーバ100から受信すると(ステップS20:YES)、当該データ(書き込み対象データ)を論理アドレスと対応付けてデータバッファ75に記憶させる(ステップS21)。そして、RAIDコントローラ50は、データバッファ75に記憶されたデータであって、1ストライプ分の誤り訂正符号を生成するための対象となるデータが揃ったか否か、即ち、データバッファ75に記憶されたデータが所定の数に達したか否かを判断する(ステップS22)。ステップS22の判断結果が否定的である場合(ステップS22:NO)、ステップS20に戻り、RAIDコントローラ50は、論理アドレスが指定されたデータの書き込みを要求する新たなwriteコマンドのサーバ100からの受信を待機する。そして、新たなwriteコマンドが受信されて新たなデータがデータバッファ75に記憶され、データバッファ75に記憶されたデータであって、1ストライプ分の誤り訂正符号を生成するための対象となるデータが揃ったときに、ステップS22の判断結果が肯定的となる。この場合(ステップS22:YES)、RAIDコントローラ50は、データバッファ75に記憶された各データについて、オフセットが等しい位置のバイト同士で排他的論理和(XOR)を計算し、この値を、上述のオフセットが等しい位置の値として含む冗長情報(パリティ)を計算する(ステップS23)。
次に、RAIDコントローラ50は、2段目アドレス変換テーブル76bが記憶されている記憶領域においてポインタがセットされているストライプ番号に対応する各ブロックにおいて書き込み可能なページがあるか否かを判断する(ステップS24)。当該判断結果が肯定的である場合(ステップS24:YES)、RAIDコントローラ50は、現在ポインタがセットされている記憶領域に記憶されているストライプ番号を書き込み対象のストライプ番号として決定して、ステップS26に進む。一方、ステップS24の判断結果が否定的である場合(ステップS24:NO)、RAIDコントローラ50は、2段目アドレス変換テーブル76bにおいて新たなストライプ番号を決定する(ステップS25)。そして、RAIDコントローラ50は、2段目アドレス変換テーブル76bが記憶されている記憶領域において当該新たなストライプ番号が記憶される記憶領域にポインタを更新して、ステップS26に進む。ステップS26では、RAIDコントローラ50は、データバッファ75に記憶されたデータ毎に以下の処理を行う。RAIDコントローラ50は、処理対象のデータについて、書き込みを行なう対象のSSD60を決定する。そして、RAIDコントローラ50は、ステップS26で決定したSSD60に当該処理対象のデータを書き込む(ステップS27)。
そして、RAIDコントローラ50は、ステップS27で処理対象のデータを書き込んだSSD60のドライブ番号、当該SSD60内のブロックのブロック番号及び当該ブロック内のページのページ番号を取得する(ステップS28)。RAIDコントローラ50は、当該処理対象のデータに対応付けられた論理アドレスと、ストライプ番号、ドライブ番号及びページ番号を対応付けて2段目アドレス変換テーブル76bに記憶させる(ステップS29)。尚、ステップS25で新たなストライプ番号を決定した場合には(ステップS30:YES)、RAIDコントローラ50は、2段目アドレス変換テーブル76bにおいて当該新たなストライプ番号に対応する行に、当該処理対象のデータが書き込まれたSSD60のドライブ番号において当該データが書き込まれたブロックのブロック番号を記憶させる。RAIDコントローラ50は、ブロック番号が記憶された行に対応する各組に属するブロックのうち少なくとも1つ以上有効データを保持していることを示すように有効/無効フラグを更新する(ステップS31)。ステップS24の判断結果が肯定的であり、ステップS25で新たなストライプ番号を決定していない場合には(ステップS30:NO)、RAIDコントローラ50は、ステップS31の処理を行わない。そして、データバッファ75に記憶されたデータについて、以上のステップS26〜S31の処理を行っていないデータがある場合(ステップS32:NO)、RAIDコントローラ50は、当該データを処理対象として、ステップS26〜S31を行う。
データバッファ75に記憶された全てのデータに対して、以上のステップS26〜S31の処理を行った場合(ステップS32:YES)、RAIDコントローラ50は、次に、ステップS23で計算した冗長情報を書き込むSSD60を決定し(ステップS33)、決定したSSD60に冗長情報を書き込む(ステップS34)。尚、ステップS25で新たなストライプ番号を決定した場合には(ステップS35:YES)、RAIDコントローラ50は、ステップS34で冗長情報を書き込んだSSD60のドライブ番号、当該SSD60内のブロックのブロック番号及び当該ブロック内のページのページ番号を取得する(ステップS36)。そして、RAIDコントローラ50は、2段目アドレス変換テーブル76bにおいて当該新たなストライプ番号に対応する行に、当該冗長情報が書き込まれたSSD60のドライブ番号において当該冗長情報が書き込まれたブロックのブロック番号を記憶させる(ステップS37)。
次に、サーバ100からのreadコマンドに応じてRAIDコントローラ50がSSD60からデータの読み出しを行う処理の手順について図7を用いて説明する。尚、ここでは、読み出し対象のデータのサイズは、ページサイズと同等であるとする。RAIDコントローラ50は、サーバ100から送信されたreadコマンドを受信すると(ステップS50)、当該readコマンドにより指定された論理アドレスを使って管理テーブル76の1段目アドレス変換テーブル76aを参照し、当該変更前ブロックアドレスに対応して記憶されたストライプ番号、SSD60のドライブ番号及びページ番号を読み出して、これらを特定する(ステップS51)。次いで、RAIDコントローラ50は、ステップS51で特定したストライプ番号を用いて2段目アドレス変換テーブル76bを参照して、ステップS51で特定したドライブ番号に対応して記憶されているブロック番号を読み出して、これを特定する(ステップS52)。そして、RAIDコントローラ50は、ステップS51で特定したドライブ番号が割り当てられたSSD60に対して、ステップS52で特定したブロック番号のブロックのうち、ステップS51で特定したページ番号のページからのデータの読み出しを要求する(ステップS53)。この要求に応じて、当該SSD60からデータが読み出されて、RAIDコントローラ50に渡される。この結果、RAIDコントローラ50は、読み出し対象のデータを得る。
この読み出し対象のデータの正当性は、データに付加されたページECCで担保される。即ち、RAIDコントローラ50は、読み出したデータに付加されたページECCを使って、当該データの誤りを検出してこれを訂正することが可能である。この場合、RAIDコントローラ50は、誤りのないデータを得ることができ(ステップS54:YES)、これをreadコマンドの応答としてサーバ100に送信することができる。しかし、ページECCで訂正できない誤りがある場合、RAIDコントローラ50に故障が生じて、データに異常が発生している可能性がある。このような場合には(ステップS54:NO)、RAIDコントローラ50は、データの読み出し時に使った論理アドレスを用いてステップS51で特定したストライプ番号を用いて2段目アドレス変換テーブル76bを参照して、ステップS51で特定したドライブ番号以外のドライブ番号に対応付けられたブロック番号を特定し(ステップS55)、特定したブロック番号及びステップS51で特定したページ番号によって特定されるページに書き込まれた他のデータ及び冗長情報の読み出しを各SSD60に要求する。この要求に応じて、各SSD60からデータ及び冗長情報が各々読み出されて、RAIDコントローラ50に渡される。この結果、RAIDコントローラ50は、読み出し対象のデータと誤り訂正符号を構成していた他のデータ及び冗長情報を得る(ステップS56)。そして、RAIDコントローラ50は、当該他のデータ及び冗長情報を用いて、排他的論理和(XOR)を計算して、訂正できない誤りがあったデータの復元を行う(ステップS57)。この結果、RAIDコントローラ50は、読み出し対象のデータについて、復元されたデータを得る。得られた読み出し対象のデータについて、RAIDコントローラ50は、readコマンドの応答としてサーバ100に送信する(ステップS58)。
次に、誤り訂正符号を構成する複数のSSD60のうち少なくとも1つが故障で他のSSDに変更される場合に、RAIDコントローラ50が、変更前SSDに記憶されたデータを代替SSDに復元する処理の手順について図8を用いて説明する。RAIDコントローラ50は、まず、代替SSDの諸元の情報(ブロック数、ブロックサイズ、ページサイズ)を取得する(ステップS70)。RAIDコントローラ50は、ステップS70で取得した諸元の情報を用いて、代替SSDが所定の条件を満たしているか否かを確認する(ステップS71)。本実施の形態においては、ブロックサイズ及びページサイズは、誤り訂正符号を構成する複数のSSD60において全て同一であることを前提としているため、代替SSDのブロックサイズ及びページサイズが、誤り訂正符号を構成する他のSSD60のブロックサイズ及びページサイズと同一である及び代替SSDのブロック数が誤り訂正符号を構成する他のSSD60のブロック数以上である場合に所定の条件を満たすものとして、RAIDコントローラ50は、ステップS71の処理を行う。即ち、RAIDコントローラ50は、ステップS70で取得したブロックサイズ及びページサイズが、誤り訂正符号を構成する他のSSD60のブロックサイズ及びページサイズと同一であるか否かを確認する。また、RAIDコントローラ50は、ステップS70で取得したブロック数が、誤り訂正符号を構成する他のSSD60のブロック数以上であるか否かを確認する。尚、ステップS70で取得したブロック数が、誤り訂正符号を構成する他のSSD60のブロック数より小さい場合であっても、2段目アドレス変換テーブル76bに記憶されている総ストライプ数(ブロック数よりは少ない)以上である場合もブロック数に関する条件を満たしているとしても良い。
そして、RAIDコントローラ50は、代替SSDが所定の条件を満たしていることを確認できなかった場合(ステップS72:NO)、エラーであるとして処理を終了する。一方、RAIDコントローラ50は、代替SSDが所定の条件を満たしていることを確認した場合(ステップS72:YES)、変更前SSDに記憶されたデータを代替SSDに復元すると決定する。そして、RAIDコントローラ50は、1段目アドレス変換テーブル76aが記憶されている記憶領域及び2段目アドレス変換テーブル76bが記憶されている記憶領域において、変更前SSDのドライブ番号を、代替SSDに割り当てられたドライブ番号に変更する。そして、RAIDコントローラ50は、2段目アドレス変換テーブル76bが記憶されている記憶領域に記憶されているストライプ番号のうち、有効であることを示す有効/無効フラグが対応付けられているストライプ番号において変更前SSDに書き込まれていた全てのデータを、誤り訂正符号を用いて各々復元してこれらを代替SSDに書き込む。具体的には、RAIDコントローラ50は、2段目アドレス変換テーブル76bが記憶されている記憶領域に記憶されているストライプ番号のうち、先頭から順に、有効であることを示す有効/無効フラグが対応付けられているストライプ番号を処理対象として、当該処理対象のストライプ番号に対応付けられている各SSD60のドライブ番号に対応するブロック番号を各々取得して(ステップS73)、以下の処理を繰り返す。RAIDコントローラ50は、代替SSDのフリーブロックを確保して当該ブロックのブロック番号を取得する(ステップS74)。そして、RAIDコントローラ50は、ステップS73で取得した各SSD60のうち、変更前SSD以外のSSD60に対応するブロック番号のブロックにおいてページ順にページ単位で有効データ又は冗長情報を読み出して、当該データ及び冗長情報を用いて、排他的論理和(XOR)を計算して、変更前SSDに書き込まれていたデータを復元して、代替SSDにおいてステップS74で確保したフリーブロックに当該データを書き込む(ステップS75)。次いで、RAIDコントローラ50は、2段目アドレス変換テーブル76bが記憶されている記憶領域において当該処理対象のストライプ番号に対応する行に、代替SSDのドライブ番号に対応するブロック番号として、ステップS74で取得したブロック番号を記憶させることにより、2段目アドレス変換テーブル76bを更新する(ステップS76)。以上の処理を、RAIDコントローラ50は、2段目アドレス変換テーブル76bが記憶されている記憶領域に記憶されているストライプ番号のうち、有効であることを示す有効/無効フラグが対応付けられているストライプ番号の全てに対して行うと(ステップS77:YES)、処理を終了する。
以上のように、本実施の形態によれば、ライトペナルティ及びパリティの更新頻度を低減して、半導体記憶装置であるSSDの寿命の低下を防止可能になる。
また、本実施の形態によれば、誤り訂正符号の構成に関する指示に応じて、RAIDコントローラ50に接続されたSSD60のうち誤り訂正符号を構成するためのSSD60の諸元の情報を用いて、管理テーブル76を構築することで、SSD60のうち誤り訂正符号を構成するためのSSD60が故障等によって代替SSDに変更されても、データを代替SSDに移動させて、管理テーブル76を再構築することが可能になる。このため、SSD60の故障に拠らず、サーバ100からの要求に応じたデータの読み出しを高い精度で行うことが可能になり、極めて高い信頼性を実現することができる。
[第2の実施の形態]
次に、半導体記憶制御装置の第2の実施の形態について説明する。なお、上述の第1の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
上述の第1の実施の形態においては、誤り訂正符号を構成する複数のSSD60において、ブロックサイズ及びページサイズは全て同一であることを前提とした。しかし、ブロックサイズやページサイズがそれぞれ同じであるSSD60を揃えて誤り訂正符号を構成したとしても、後に故障が発生してSSD60から代替SSDへの変更が必要になった際に、ブロックサイズやページサイズが同じSSD60を入手できるとは限らない。このため、本実施の形態においては、複数のSSDのうちブロックサイズ及びページサイズのうち少なくとも一方が異なるSSDが含まれていても誤り訂正符号を構成可能にするRAIDコントローラ50の構成について説明する。
ここで、まず、ブロックサイズやページサイズが異なる代替SSDが誤り訂正符号を構成するためにRAIDコントローラ50に接続された場合に必要となる変換について説明する。上述の第1の実施の形態で説明した1段目アドレス変換テーブル76aを記憶する記憶領域及び2段目アドレス変換テーブル76bを記憶する記憶領域は、誤り訂正符号を構成するためのSSD60のブロックサイズ及びページサイズに基づいて静的に構築される。このため、この構築時のブロックサイズやページサイズと異なるブロックサイズやページサイズの代替SSDがRAIDコントローラ50に接続され誤り訂正符号を構成するために用いられるとすると、1段目アドレス変換テーブル76aが記憶されている記憶領域及び2段目アドレス変換テーブル76bが記憶されている記憶領域に記憶されている、代替SSDに変更される前のSSD60(変更前SSD)の物理アドレスを、代替SSDの物理アドレスに変換する必要がある。
この物理アドレスの変換は、ブロックサイズ及びページサイズのそれぞれについて、変更前SSDの値が代替SSDの値より大きい場合、等しい場合及び小さい場合の3通りがあるため、合計で9通りの場合分けがある。
ここで、1段目アドレス変換テーブル76a及び2段目アドレス変換テーブル76bにより特定されるブロックを変更前ブロックと呼び、そのブロック番号を変更前ブロック番号と呼び、代替SSDのブロックを代替ブロックと呼び、そのブロック番号を代替ブロック番号と呼ぶことにする。同様に、1段目アドレス変換テーブル76a及び2段目アドレス変換テーブル76bにより特定されるページを変更前ページと呼び、そのページ番号を変更前ページ番号と呼び、代替SSDのページを代替ページと呼び、そのページ番号を代替ページ番号と呼ぶことにする。また、1段目アドレス変換テーブル76aを記憶する記憶領域及び2段目変換テーブル76bを記憶する記憶領域の構築の前提となっているブロックサイズ及びページサイズをそれぞれ変更前ブロックサイズ及び変更前ページサイズと呼ぶことにし、代替SSDのブロックサイズ及びページサイズをそれぞれ代替ブロックサイズ及び代替ページサイズと呼ぶことにする。
図9は、物理アドレスの変換を場合分けした9通りの例を示す図である。同図では、ブロックサイズ及びページサイズが異なる例としてそれぞれ一方が他方の2倍である例を示しており、以下の説明でも、その例について説明するが、一方が他方の2のべき乗であれば、2倍でなくても良い。尚、この9通りの場合分けには、ブロックサイズ及びページサイズが等しい場合も含まれているが(図中2行2列目参照)、この場合は上述の第1の実施の形態と同様であるため、ここではその説明を省略する。
まず、代替ページサイズ及び変更前ページサイズが等しく、代替ブロックサイズが変更前ブロックサイズより大きい場合について説明する(図中1行2列目参照)。この場合、2つの変更前ブロックが1つの代替ブロックに収まるため、変更前ブロックと代替ブロックとを2対1で対応させる。なお、代替ブロックの数が変更前ブロックの数以上である場合には、変更前ブロックと代替ブロックを1対1に対応させて、代替ブロック内のページを余らせるようにしても良く、この場合には、変換は不要である。
次に、代替ページサイズ及び変更前ページサイズが等しく、代替ブロックサイズが変更前ブロックサイズより小さい場合について説明する(図中3行2列目参照)。この場合、1つの変更前ブロックを2つの代替ブロックに分割する、即ち、変更前ブロックと代替ブロックとを1対2に対応させる。
次に代替ページサイズが変更前ページサイズより小さく、代替ブロックサイズ及び変更前ブロックサイズが等しい場合について説明する(図中2行1列目参照)。この場合、1つの変更前ページを2つの代替ページに分割する。
次に、代替ページサイズが変更前ページサイズより大きく、代替ブロックサイズ及び変更前ブロックサイズが等しい場合について説明する(図中2行3列目参照)。この場合、2つの変更前ページを1つの代替ページに合併させる。このため、2ページ分の書き込みが1回で行われる必要があり、書き込みタイミングの調整が必要となる。
次に、代替ページサイズが変更前ページサイズより小さく、代替ブロックサイズが変更前ブロックサイズより大きい場合について説明する(図中1行1列目参照)。この場合、2つの変更前ブロックが1つの代替ブロックに収まり、1つの変更前ページを2つの代替ページに分割する。
次に、代替ページサイズが変更前ページサイズより大きく、代替ブロックサイズが変更前ブロックサイズより大きい場合について説明する(図中1行3列目参照)。この場合、2つの変更前ブロックが1つの代替ブロックに収まり、連続する2つの変更前ページが1つの代替ページに合併される。このため、2ページ分の書き込みが1回で行われる必要があり、書き込みタイミングの調整が必要となる。
次に、代替ページサイズが変更前ページサイズより小さく、代替ブロックサイズが変更前ブロックサイズより小さい場合について説明する(図中3行1列目参照)。この場合、1つの変更前ブロックが2つの代替ブロックに分割され、1つの変更前ページも2つの代替ページに分割する。
次に、代替ページサイズが変更前ページサイズより大きく、代替ブロックサイズが変更前ブロックサイズより小さい場合について説明する(図中3行3列目参照)。この場合、1つの変更前ブロックが2つの代替ブロックに分割され、連続する2つの変更前ページが1つの代替ページに合併される。このため、2ページ分の書き込みが1回で行われる必要があり、書き込みタイミングの調整が必要となる。
次に、以上のような物理アドレスの変換を行うための本実施の形態に係るRAIDコントローラ50の機能的構成について図10を用いて説明する。本実施の形態においては、RAIDコントローラ50の有するバッファ制御部71は、書き込みタイミング制御部71aを有し、アドレス変換部72は、変換制御部72aを有し、管理テーブル76は、3段目アドレス変換テーブル76cを更に有する。
上述の第1の実施の形態においては、バッファ制御部71は、サーバ通信部51からwriteコマンドを受け取り、データバッファ75に記憶させたデータが1ストライプ分の誤り訂正符号を構成可能に揃ったときに、1ストライプ分の誤り訂正符号を構成可能なデータ及び当該データの誤りを訂正するために用いられる冗長情報のSSD60への書き込みを要求するwriteコマンドをデバイス制御部53に送った。一方、本実施の形態においては、代替SSDのページサイズ(代替ページサイズ)が変更前ページサイズより大きい場合には、複数ストライプ分の書き込みを一括して行う必要があるため、バッファ制御部71の有する書き込みタイミング制御部71aは、代替SSDのページサイズに応じた数のストライプ分の誤り訂正符号を生成するための対象となるデータが揃うまで、データをデータバッファ75にバッファリングさせて、データバッファ75に記憶させたデータであって当該数のストライプ分の誤り訂正符号を生成するための対象となるデータが揃ったときに、当該数のストライプ分の誤り訂正符号を生成するための対象となるデータ及び当該データの誤りを訂正するために用いられる冗長情報のSSD60への書き込みを要求するwriteコマンドをデバイス制御部53に送る。
この書き込みタイミング制御部71aは、図11に示されるように、データバッファ75上に、データや冗長情報をページ単位で記憶するデータ格納バッファ、冗長情報の格納位置を指すパリティ格納ポインタ、データの格納位置を示すデータ格納ポインタ及び1回の書き込みで同時に書き込みを行うストライプ数を示す書き込み単位情報を管理して、データ及び冗長情報をSSD60へ書き込むタイミングを制御する。具体的な制御の方法については後述の動作欄で説明する。
管理テーブル構築部73は、誤り訂正符号を構成するためのSSD60が変更される場合、代替SSDのブロックサイズ及びページサイズのうち少なくとも一方が変更前SSDであるSSD60のものと異なる場合、3段目アドレス変換テーブル76cを記憶する記憶領域を構築して、管理テーブルを再構築する。3段目アドレス変換テーブル76cは、代替SSDのブロックサイズが変更前SSDであるSSD60のものと異なる場合、その代替SSD専用に物理アドレスを変換するために、変更前SSDの変更前ブロック及び代替SSDの代替ブロックの対応関係を示す情報である。3段目アドレス変換テーブル76cを記憶する記憶領域を構築する具体的な方法について後述の動作欄で説明する。
アドレス変換部72の変換制御部72aは、3段目アドレス変換テーブル76cを参照して、変更前SSDの変更前ブロック番号及び変更前ページ番号を代替SSD用に補正して代替ブロック番号及び代替ページ番号に変換する。
図12は、変換制御部72aの内部構成を例示する図である。変換制御部72aは、ブロック番号変換部72bと、ページ番号変換部72cとを有する。ブロック番号変換部72bは、1段目アドレス変換テーブル76a及び2段目アドレス変換テーブル76bにより得られたブロック番号(変更前ブロック番号)及びページ番号(変更前ページ番号)を用いて、代替ブロック番号及び中間ページ番号に変換してこれを出力する。ページ番号変換部72cは、ブロック番号変換部72bが出力した代替ブロック番号及び中間ページ番号を用いて、代替ページ番号に変換してこれを出力する。
ここで、ブロック番号変換部72bが行う変換について図13を用いて説明する。この変換は、変更前ブロックサイズ及び代替ブロックサイズの大小関係により異なる。変更前ブロックサイズが代替ブロックサイズより大きい場合には、1つの変更前ブロックを複数の代替ブロックに分割する、即ち、変更前ブロック及び代替ブロックを1対2に対応させるため、ブロック分割数(変更前ブロックサイズを代替ブロックサイズで割った商)を「2^N」とすると、変更前ブロック番号をキーとして2^N列の「変更前>代替型」の3段目アドレス変換テーブル76cを記憶する記憶領域が構築され、この記憶領域には、変更前ブロックの変更前ブロック番号及び代替ブロックの代替ブロック番号の対応関係が記憶される。ブロック番号変換部72bは、変更前ブロック番号をキーとして3段目アドレス変換テーブル76cを参照して、変更前ページ番号の上位Nビットで列を選択し、代替ブロック番号を取得してこれを出力する。また、ブロック番号変換部72bは、変更前ページ番号から上位Nビットを削除した下位ビットを中間ページ番号として出力する。
一方、変更前ブロックサイズが代替ブロックサイズより小さい場合には、複数の変更前ブロックが1つの代替ブロックに収まる。この場合に構築される「物理>論理型」の3段目アドレス変換テーブル76cを記憶する記憶領域では、ある変更前ブロックが割当てられる代替ブロックの代替ブロック番号と、その代替ブロックの先頭からのオフセットとが記憶される。ブロック番号変換部72bは、変更前ブロック番号をキーとして3段目アドレス変換テーブル76cを参照して、変更前ページ番号の上位Nビットで列を選択し、代替ブロック番号及びオフセットを取得してこれを出力する。また、ブロック番号変換部72bは、変更前ページ番号にオフセットを加えることにより中間ページ番号を取得してこれを出力する。
また、変更前ブロックサイズと代替ブロックサイズとが等しい場合には、3段目アドレス変換テーブル76cは生成されず、ブロック番号変換部72bによる変換は不要であり、ブロック番号変換部72bは、変更前ブロック番号をそのまま代替ブロック番号として出力し、変更前ページ番号を中間ページ番号として出力する。
次に、ページ番号変換部72cが行う変換について図14を用いて説明する。この変換は、変更前ページサイズ及び代替ページサイズの大小関係により異なる。変更前ページサイズが代替ページサイズより大きい場合には、ページ分割数(変更前ページサイズを代替ページサイズで割った商)を「2^M」とすると、ページ番号変換部72cは、ブロック番号変換部72bが出力した中間ページ番号を左にMビットシフトして、割当てられた複数ページの先頭のページのページ番号を取得しこれを代替ページ番号として出力する。
一方、変更前ページサイズが代替ページサイズより小さい場合には、ページ分割数(代替ページサイズを変更前ページサイズで割った商)を2^Mとすると、ページ番号変換部72cは、ブロック番号変換部72bが出力した中間ページ番号を右にMビットシフトして割当てられた代替ページ番号を取得し、中間ページ番号の下位Mビットにより、取得した代替ページ番号の代替ページ内の位置を特定するためのオフセットを取得して、当該代替ページ番号及びオフセットを出力する。
次に、本実施の形態に係るRAIDコントローラ50が行う処理の手順について説明する。まず、RAIDコントローラ50が、書き込みタイミング制御部71aの機能により、データ及び冗長情報をSSD60へ書き込むタイミングを制御する処理の手順について図15を用いて説明する。まず、書き込みタイミング制御部71aは、書き込み単位情報がストライプ数「1」を示すように設定し、パリティ格納ポインタがデータ格納バッファの先頭を指すように設定し、冗長情報の値を「0」に設定し、データ格納ポインタがデータ格納バッファの2番目のページを指すように設定することにより、パリティ格納ポインタ、データ格納ポインタ及び書き込み単位情報を初期化する(ステップS90)。そして、書き込みタイミング制御部71aは、サーバ通信部51からwriteコマンドを受け取ると、当該writeコマンドによって書き込みが要求されたデータをデータ格納ポインタによって示される格納位置に記憶させると共に、冗長情報(初期状態では「0」である)との排他的論理和を計算してこれをパリティ格納ポインタによって示される格納位置に記憶させ、データ格納ポインタを1つインクリメントする(ステップS91)。そして、書き込みタイミング制御部71aは、データ格納バッファに記憶されたデータであって、1ストライプ分の誤り訂正符号を生成するための対象となるデータが揃う度に、即ち、データ格納バッファに記憶されたデータが所定の数の倍数に達する度に(ステップS92:YES)、書き込み単位情報によって示されるストライプ数を参照し、データバッファ75に記憶されているデータ数が当該ストライプ数に達しているか否かを判断し、当該データ数が当該ストライプ数に達していたら(ステップS93:YES)、当該ストライプ数の誤り訂正符号を生成するための対象となるデータ及び当該データの誤りを訂正するために用いられる冗長情報のSSD60への書き込みを要求するwriteコマンドをデバイス制御部53に送り、パリティ格納ポインタがデータ格納バッファの先頭を指すように初期化し、冗長情報も初期化して「0」として記憶させ、データ格納ポインタがデータ格納バッファの2番目のページを指すように初期化する(ステップS94)。一方、データバッファ75に記憶されているデータ数が、書き込み単位情報によって示されるストライプ数に達していなかったら(ステップS93:NO)、書き込みタイミング制御部71aは、データ格納ポインタによって示される格納位置をパリティ格納ポインタが指すようにパリティ格納ポインタを設定し、パリティ格納ポインタによって示される格納位置に冗長情報として初期化した「0」を記憶させ、データ格納ポインタを1インクリメントする(ステップS95)。
次に、RAIDコントローラ50が、変更前SSDに記憶されたデータを代替SSDに復元する処理の手順について図16を用いて説明する。RAIDコントローラ50は、管理テーブル構築部73の機能により、代替SSDの諸元の情報(ブロック数、ブロックサイズ、ページサイズ)を取得する(ステップS100)。尚、代替SSDの容量が、誤り訂正符号を構成するための他のSSD60より小さい場合は、当該代替SSDを用いて誤り訂正符号を再構成することは不可能であるため、代替SSDの容量が他のSSD60以上であるか否かを確認する処理は必要であるが、図16ではその確認の処理を省略してある。次に、RAIDコントローラ50は、ステップS100で取得したブロックサイズ(代替ブロックサイズ)及びページサイズ(代替ページサイズ)のそれぞれを変更前SSDのブロックサイズである変更前ブロックサイズ及び変更前SSDのページサイズである変更前ページサイズと比較する。また、RAIDコントローラ50は、ステップS100で取得したブロック数が、誤り訂正符号を構成する他のSSD60のブロック数以上であるか否かを確認する(ステップS101)。尚、ステップS100で取得したブロック数が、誤り訂正符号を構成する他のSSD60のブロック数より小さい場合であっても、2段目アドレス変換テーブル76bに記憶されている総ストライプ数(ブロック数よりは少ない)以上である場合もブロック数に関する条件を満たしているとしても良い。代替ブロックサイズ及び代替ページサイズのうち少なくとも一方が比較対象と異なる場合には(ステップS102:NO)、RAIDコントローラ50は、3段目アドレス変換テーブル76cを生成する処理Aを行なってから、ステップS103に進む。当該処理Aの手順については後述する。代替ブロックサイズ及び代替ページサイズの双方が比較対象と等しい場合には(ステップS102:YES)、RAIDコントローラ50は、当該処理Aを行わずに、ステップS103に進む。
ステップS103では、RAIDコントローラ50は、変更前ブロックサイズと代替ブロックサイズとの大小関係を比較し、変更前ブロックサイズが代替ブロックサイズより大きい場合には、処理Bを行ない、変更前ブロックサイズと代替ブロックサイズとが等しい場合には処理Cを行ない、変更前ブロックサイズが代替ブロックサイズより小さい場合には処理Dを行なう。
次に、3段目アドレス変換テーブル76cを生成する処理Aの手順について図17を用いて説明する。RAIDコントローラ50は、代替SSDのページサイズ(代替ページサイズ)と、変更前ページサイズとの大小関係を比較して(ステップS110)、変更前ページサイズより代替ページサイズが大きい場合には(ステップS111:YES)、代替ページサイズを変更前ページサイズで割った値(商)を示す書き込み単位情報をデータバッファ75に記憶させて(ステップS112)、ステップS113に進む。変更前ページサイズより代替ページサイズが等しいか小さい場合 (ステップS111:NO)も、ステップS113に進む。ステップS113では、RAIDコントローラ50は、変更前ブロックサイズと代替ブロックサイズとの大小関係を比較し、変更前ブロックサイズが代替ブロックサイズより小さい場合には、「変更前<代替型」の3段目アドレス変換テーブル76cを生成してメモリ54の記憶領域に記憶させることにより、3段目アドレス変換テーブル76cを記憶する記憶領域を構築する(ステップS114)。変更前ブロックサイズが代替ブロックサイズより大きい場合には、「変更前>代替型」の3段目アドレス変換テーブル76cを生成してメモリ54の記憶領域に記憶させることにより、3段目アドレス変換テーブル76cを記憶する記憶領域を構築する(ステップS115)。尚、変更前ブロックサイズと代替ブロックサイズと等しい場合には、3段目アドレス変換テーブル76cの生成は不要である。この場合、変更前ブロック番号はそのまま代替ブロック番号と等しくなる。
次に、変更前ブロックサイズが代替ブロックサイズより大きい場合に行う処理Bの手順について図18を用いて説明する。この場合、上述したように、「変更前>代替型」の3段目アドレス変換テーブル76cがメモリ54に記憶されている。RAIDコントローラ50は、2段目アドレス変換テーブル76bが記憶されている記憶領域に記憶されているストライプ番号のうち、有効であることを示す有効/無効フラグが対応付けられているストライプ番号を先頭から順に、処理対象のストライプ番号として以下の処理を行う(ステップS120)。まず、RAIDコントローラ50は、処理対象のストライプ番号と対応付けられている変更前SSDのドライブ番号に対応付けられているブロック番号(変更前ブロック番号)を取得して(ステップS121)、当該変更前ブロック番号を3段目アドレス変換テーブル76cが記憶されている記憶領域に記憶させる。次に、RAIDコントローラ50は、代替SSDにおいて、変更前ブロックサイズを代替ブロックサイズで割った商の個数分のフリーブロックを確保し、それらのブロックのブロック番号を取得して、これらのブロック番号を3段目アドレス変換テーブル76cの変更前ブロック番号に対応する代替ブロック番号として、3段目アドレス変換テーブル76cが記憶されている記憶領域に各々記憶させる(ステップS122)。次に、RAIDコントローラ50は、処理対象のストライプ番号と対応付けられている変更前SSD以外の他のSSD60のドライブ番号に各々対応付けられているブロック番号のブロックの先頭のページから順にページ単位でデータ又は冗長情報を読み出し、代替SSDに復元するデータを計算する処理Eを行う。以上の処理を処理対象となる全てのストライプ番号に対してRAIDコントローラ50は行う。RAIDコントローラ50がこれを行い終えると(ステップS124:YES)、変更前SSDに記憶されたデータが全て代替SSDに復元される。
次に、代替SSDに復元するデータを計算する処理Eについて図19を用いて説明する。RAIDコントローラ50は、図18のステップS123で読み出したデータ又は冗長情報を用いて、排他的論理和を計算して、変更前SSDに記憶されたページ単位のデータを計算する(ステップS130)。次に、RAIDコントローラ50は、変更前ページサイズと代替ページサイズとの大小関係を比較して(ステップS131)、変更前ページサイズが代替ページサイズより大きい場合、ステップS130で計算したデータを、代替SSDにおいて確保したフリーブロック内で書き込みがまだ行われていないページの先頭から順に複数ページ(変更前ページサイズを代替ページサイズで割った商のページ数)に渡り連続して書き込む(ステップS132)。尚、フリーブロック内で書き込みがまだ行われていないページは、上述した追記ポインタにより示されるようにすれば良い。
一方、変更前ページサイズと代替ページサイズとが等しい場合、変更前ページが代替ページに1対1に対応するため、RAIDコントローラ50は、ステップS130で計算したデータを、代替SSDにおいて確保したフリーブロック内で書き込みがまだ行われていないページの先頭に書き込む(ステップS133)。一方、変更前ページサイズが代替ページサイズより小さい場合、ステップS130で計算した1ページ分のデータだけでは代替ページに満たないので、RAIDコントローラ50は、代替ページを満たすページ分のデータが揃うまで当該データをデータバッファ75にバッファリングさせて、代替ページを満たすページ分のデータが揃ったときに当該データを、代替SSDにおいて確保したフリーブロック内で書き込みがまだ行われていないページに書き込む(ステップS134)。以上の処理を処理対象となる全てのストライプ番号に対してRAIDコントローラ50は行う。RAIDコントローラ50がこれを行い終えると(ステップS135:YES)、変更前SSDに記憶されたデータが全て代替SSDに復元される。
次に、変更前ブロックサイズと代替ブロックサイズとが等しい場合に行う処理Cの手順について図20を用いて説明する。この場合、上述したように、3段目アドレス変換テーブル76cは生成されず、変更前ブロック番号はそのまま代替ブロック番号と等しくなる。また、この場合、RAIDコントローラ50は、2段目アドレス変換テーブル76bが記憶されている記憶領域に記憶されたストライプ番号に対応付けられた変更前SSDのドライブ番号を代替SSDのドライブ番号に予め変更しても良い。ステップS120は上述した処理Bの場合と同様である。ステップS140では、RAIDコントローラ50は、代替SSDにおいてフリーブロックを1つ確保し、そのブロック番号を、2段目アドレス変換テーブル76bが記憶されている記憶領域に記憶された処理対象のストライプ番号に対応付けられた代替SSDのブロック番号として記憶させる(ステップS141)。ステップS123は上述した処理Bの場合と同様である。処理Eは上述した通りである。以上の処理を処理対象となる全てのストライプ番号に対してRAIDコントローラ50は行う。RAIDコントローラ50がこれを行い終えると(ステップS124:YES)、変更前SSDに記憶されたデータが全て代替SSDに復元される。
次に、変更前ブロックサイズが代替ブロックサイズより小さい場合に行う処理Dの手順について図21を用いて説明する。この場合、上述したように、「物理>論理型」の3段目アドレス変換テーブル76cがメモリ54に記憶されている。ステップS120〜S121は上述した処理Bの場合と同様である。ここでは、複数の変更前ブロックが1つの代替ブロックに割当てられるため、代替SSDで1つのフリーブロックを確保した場合、そのブロックに対して、複数のストライプ番号に対応して復元されるデータが書き込まれることになる。即ち、1つのストライプ番号に対応して復元されたデータが代替SSDの1つのブロックに書き込まれたとしても、当該ブロック内で書き込みがまだ行われていないページが残っており、RAIDコントローラ50は、当該ページに他のストライプ番号に対応して復元されるデータを書き込むことになる。このため、ステップS150では、RAIDコントローラ50は、ストライプ番号に対応してデータが復元される代替SSDで確保されたフリーブロックにおいて書き込みがまだ行われていないページが残っているか又は1つ前の処理対象のストライプ番号に対応して復元されたデータの書き込みにより、書き込みがまだ行われていないページがなくなったかを判断する。代替SSDで確保されたフリーブロックにおいて書き込みがまだ行われていないページがなくなった場合(ステップS150:NO)、RAIDコントローラ50は、代替SSDにおいて新たなフリーブロックを1つ確保し、当該フリーブロックのブロック番号(代替ブロック番号)を取得して(ステップS152)、ステップS153に進む。このブロックには先頭のページから書き込みを行なうため、RAIDコントローラ50は、オフセットを「0」として取得する。尚、一番初めに処理対象のストライプ番号に対応してデータが復元される場合も、RAIDコントローラ50は、ステップS152の処理を行う。一方、書き込みがまだ行われていないページの残っているブロックがある場合(ステップS150:YES)、RAIDコントローラ50は、当該ブロックのブロック番号(代替ブロック番号)を取得して、当該ブロックにおいて書き込みがまだ行われていない先頭のページのページ番号を取得して、これをオフセットとして取得して(ステップS151)、ステップS153に進む。ステップS153では、RAIDコントローラ50は、代替ブロック番号及びオフセットを、ステップS121で取得したブロック番号(変更前ブロック番号と対応付けて3段目アドレス変換テーブル76cが記憶されている記憶領域に記憶させる。ステップS123は上述した処理Bの場合と同様である。以上の処理を処理対象となる全てのストライプ番号に対してRAIDコントローラ50は行う。RAIDコントローラ50がこれを行い終えると(ステップS124)、変更前SSDに記憶されたデータが全て代替SSDに復元される。
このように、第2の実施の形態によれば、ブロックサイズ及びページサイズのうち少なくとも一方が他のSSDと異なる代替SSDを用いても誤り訂正符号を構成することが可能になる。
以上説明した通り、第1から第2の実施の形態によれば、ライトペナルティ及びパリティの更新頻度を低減して、半導体記憶装置であるSSDの寿命の低下を防止可能になる。
[変形例]
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
上述した各実施の形態において、RAIDコントローラ50で実行される各種プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また当該各種プログラムを、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供するように構成しても良い。
上述した各実施の形態において、RAIDコントローラ50は、管理テーブル76の初期化を行う際、誤り訂正符号の構成に関する指示を受け付けるようにしたが、これに限らず、誤り訂正符号の構成に関して予め定められた方法に基づいて、1段目アドレス変換テーブル76a及び2段目アドレス変換テーブル76bを生成するようにしても良い。
上述した各実施の形態において、RAIDコントローラ50は、読み出し対象のデータにエラーがあった場合に、当該データが書き込まれたブロック(エラーブロックという)全体の修復を行うようにしても良い。図22は、本変形例に係るデータを読み出す処理の手順を示すフローチャートである。ステップS51〜S55は上述の第1の実施の形態と同様である。ステップS55の後、ステップS60では、RAIDコントローラ50は、エラーの発生した読み出し対象のデータが書き込まれていたSSD60において新たなフリーブロックを確保する。そして、RAIDコントローラ50は、ステップS55で特定したブロック番号によって特定されるブロックに書き込まれた他のデータ及び冗長情報の読み出しをページ順に各SSD60に要求する。この要求に応じて、各SSD60からページ順に各データ及び冗長情報が読み出されて、RAIDコントローラ50に渡される。この結果、RAIDコントローラ50は、誤り訂正符号を構成していたデータのうち、エラーブロックに書き込まれていたデータを除く他のデータ及び冗長情報を得る(ステップS61)。そして、RAIDコントローラ50は、当該他のデータ及び冗長情報を用いて、排他的論理和(XOR)を計算して、訂正できない誤りがあったデータの復元を行い、当該データをステップS60で確保したフリーブロックに書き込む(ステップS62)。そして、RAIDコントローラ50は、エラーブロックに書き込まれていた有効データ全てについてページ順にステップS61〜S62の処理を行い、当該処理が終了すると(ステップS63:YES)、ステップS58では、読み出しが要求されたデータであり復元が行われたデータをreadコマンドの応答としてサーバ100に送信する。
このように、読み出し対象のデータにエラーがあった場合、当該データが書き込まれたブロックに書き込まれた有効データ全体を新たなフリーブロックに移動させることにより、当該有効データの読み出しの際のエラーを防止することが可能になる。
上述の各実施の形態においては、所定の単位として、ページを取り扱ったが、これに限らない。また、SSD60の物理的な記憶位置を示す物理アドレスとして、ブロック番号及びページ番号を取り扱ったが、これに限らない。
上述の各実施の形態においては、RAIDコントローラ50は、サーバ100から書き込みが要求されたデータがページサイズより大きい場合にはこれをページ単位で複数に分割して、分割したページ単位のデータを所定の数用いて、1ストライプ分の誤り訂正符号を構成するようにすれば良い。また、RAIDコントローラ50は、サーバ100から指定された論理アドレスを用いて、分割した各データに対する論理アドレスを割り当てるようにして、当該論理アドレス及び当該各データを書き込んだ物理アドレスの対応関係を管理テーブル76に記憶させるようにすれば良い。
尚、ログ構造化ファイルシステムでは、小ブロックの書き込み毎にはパリティを計算する必要がないため、ライトペナルティが発生しないという利点がある。しかし、この方式では、ファイルシステムの構造が規定されてしまうため、ユーザは所望のファイルシステムを選択できないという欠点がある。
上述の各実施の形態においては、管理テーブル76は行を有する例を記載したが、行の対象となる各データの対応付けがされていれば他の形式でも良い。例えば、管理テーブル76はリスト形式で表現されていても良い。
50 RAIDコントローラ
51 サーバ通信部
52 コントローラ
53 デバイス制御部
54 メモリ
70 サーバ通信制御部
71 バッファ制御部
71a タイミング制御部
72 アドレス変換部
72a 変換制御部
72b ブロック番号変換部
72c ページ番号変換部
73 管理テーブル構築部
74 デバイス制御部
75 データバッファ
76 管理テーブル
76a 1段目アドレス変換テーブル
76b 2段目アドレス変換テーブル
76c 3段目アドレス変換テーブル
80 管理テーブル記憶部
100 サーバ

Claims (6)

  1. 複数の半導体記憶ドライブが接続され、情報処理装置から論理アドレスが指定されて書き込みが要求されたデータを前記半導体記憶ドライブへ書き込む半導体記憶制御装置であって、
    前記データは、1つ以上の所定の単位の第1データを有し、
    所定の単位毎の前記第1データと、所定の数の前記第1データを用いて計算され当該所定の数の第1データの誤りを訂正するために使われる冗長情報とを異なる半導体記憶ドライブに各々書き込む書き込み制御部と、
    前記論理アドレスと、前記半導体記憶ドライブにおいて前記データが各々書き込まれる位置を示す物理アドレスとの対応関係と、前記所定の数の前記第1データ及び前記冗長情報を関連付けるための識別情報とを示すための第1テーブルを記憶する第1テーブル記憶領域を、前記半導体記憶ドライブの諸元の情報を用いて構築する構築部と、
    前記識別情報と、前記書き込み制御部が前記半導体記憶ドライブに書き込んだ所定の数の前記第1データの各前記物理アドレス及び前記論理アドレスと、前記冗長情報が書き込まれる位置を示す物理アドレスとを対応付けられた前記第1テーブルを前記第1テーブル記憶領域に記憶させるテーブル制御部とを備える
    ことを特徴とする半導体記憶制御装置。
  2. 前記半導体記憶ドライブから前記データ及び前記冗長情報のうち少なくとも一方を読み出す制御部であって、所定の単位毎の第2データを前記半導体記憶ドライブから読み出し、当該第2データに誤りがある場合、前記第1テーブルを参照して、当該第2データと関連付けられた他の第2データ及び前記冗長情報を読み出して、前記他の第2データ及び前記冗長情報を用いて、前記第2データを復元する読み出し制御部を更に備える
    ことを特徴とする請求項1に記載の半導体記憶制御装置。
  3. 複数の前記半導体記憶ドライブのうち少なくとも1つの第1半導体記憶ドライブが第2半導体記憶ドライブに変更された場合、当該第2半導体記憶ドライブの諸元の情報を用いて、所定の条件に基づいて、前記第1半導体記憶ドライブに記憶されたデータを前記第2半導体ドライブに復元するか否かを決定する決定部を更に備え、
    前記読み出し制御部は、前記第1半導体記憶ドライブに記憶されたデータを前記第2半導体ドライブに復元すると決定された場合、前記第1テーブルを参照して、前記第1半導体記憶ドライブに記憶された所定の単位毎の第2データと関連付けられた他の第2データ及び前記冗長情報を読み出して、前記他の第2データ及び前記冗長情報を用いて、前記第2データを復元し、
    前記書き込み制御部は、復元された前記第2データを前記第2半導体記憶ドライブに書き込み、
    前記テーブル制御部は、前記書き込み制御部が前記第1半導体記憶ドライブに書き込んだ前記第2データの物理アドレスを前記第1テーブル記憶領域に記憶させることにより、前記第1テーブルを更新する
    ことを特徴とする請求項2に記載の半導体記憶制御装置。
  4. 前記諸元の情報は、ブロックサイズを少なくとも示し、
    前記構築部は、更に、前記第2半導体記憶ドライブの諸元の情報によって示されるブロックサイズが、前記他の第2データが記憶されている他の半導体記憶ドライブのブロックサイズと異なる場合、前記第1半導体記憶ドライブの第1物理アドレス及び前記第2半導体記憶ドライブの第2物理アドレスの対応関係を示す第2テーブルを記憶する第2テーブル記憶領域を構築し、
    前記第2半導体記憶ドライブの諸元の情報によって示されるブロックサイズが、前記他の第2データが記憶されている他の半導体記憶ドライブのブロックサイズと異なる場合、各前記ブロックサイズに応じて、前記第1物理アドレスを前記第2物理アドレスに変換する第1変換部を更に備え、
    前記テーブル制御部は、前記第1テーブル記憶領域に記憶されている前記第1物理アドレスと前記第2物理アドレスとを対応付けた前記第2テーブルを前記第2テーブル記憶領域に記憶させる
    ことを特徴とする請求項3に記載の半導体記憶制御装置。
  5. 前記諸元の情報は、ページサイズを少なくとも示し、
    前記構築部は、更に、前記第2半導体記憶ドライブの諸元の情報によって示されるページサイズが、前記他の第2データが記憶されている他の半導体記憶ドライブのページサイズと異なる場合、前記第1半導体記憶ドライブの第1物理アドレス及び前記第2半導体記憶ドライブの第2物理アドレスの対応関係を示す第2テーブルを記憶する第2テーブル記憶領域を構築し、
    前記第2半導体記憶ドライブの諸元の情報によって示されるページサイズが、前記他の第2データが記憶されている他の半導体記憶ドライブのページサイズと異なる場合、各前記ページサイズに応じて、前記第1物理アドレスを前記第2物理アドレスに変換する第1変換部を更に備え、
    前記テーブル制御部は、前記第1テーブル記憶領域に記憶されている前記第1物理アドレスと前記第2物理アドレスとを対応付けた前記第2テーブルを前記第2テーブル記憶領域に記憶させる
    ことを特徴とする請求項4又は5に記載の半導体記憶制御装置。
  6. 前記所定の単位は、ページであり、
    前記第1データは、ページ毎のデータであり、
    前記第1データを記憶するバッファを更に備え、
    前記書き込み制御部は、前記バッファに記憶された前記第1データが所定の数に達したときに、当該所定の数の第1データ及び前記冗長情報を異なる半導体記憶ドライブに各々書き込む
    ことを特徴とする請求項6に記載の半導体記憶制御装置。
JP2010212645A 2010-09-22 2010-09-22 半導体記憶制御装置 Expired - Fee Related JP5388976B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2010212645A JP5388976B2 (ja) 2010-09-22 2010-09-22 半導体記憶制御装置
US13/038,845 US8555027B2 (en) 2010-09-22 2011-03-02 Semiconductor memory controlling device
US14/017,072 US9213604B2 (en) 2010-09-22 2013-09-03 Semiconductor memory controlling device which writes data and error correction codes into different semiconductor storage drives

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010212645A JP5388976B2 (ja) 2010-09-22 2010-09-22 半導体記憶制御装置

Publications (2)

Publication Number Publication Date
JP2012068862A true JP2012068862A (ja) 2012-04-05
JP5388976B2 JP5388976B2 (ja) 2014-01-15

Family

ID=45818778

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010212645A Expired - Fee Related JP5388976B2 (ja) 2010-09-22 2010-09-22 半導体記憶制御装置

Country Status (2)

Country Link
US (2) US8555027B2 (ja)
JP (1) JP5388976B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015052833A1 (ja) * 2013-10-11 2015-04-16 株式会社日立製作所 ストレージ装置、ストレージシステム、及びストレージ装置制御方法
JP2015515033A (ja) * 2012-04-27 2015-05-21 株式会社日立製作所 ストレージシステム
US9252810B2 (en) 2014-02-20 2016-02-02 Kabushiki Kaisha Toshiba Memory system and method of controlling memory system
JP2017138781A (ja) * 2016-02-03 2017-08-10 Necプラットフォームズ株式会社 ディスクアレイコントローラ、ストレージシステム、方法、及び、プログラム
US10019315B2 (en) 2016-04-13 2018-07-10 Fujitsu Limited Control device for a storage apparatus, system, and method of controlling a storage apparatus
JP2021068129A (ja) * 2019-10-21 2021-04-30 Tdk株式会社 メモリコントローラ及びフラッシュメモリシステム

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8671265B2 (en) 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
KR101778782B1 (ko) * 2011-04-08 2017-09-27 삼성전자주식회사 데이터 저장 장치 및 그것의 동작 방법
US20120317377A1 (en) * 2011-06-09 2012-12-13 Alexander Palay Dual flash translation layer
US8812798B2 (en) 2011-08-18 2014-08-19 International Business Machines Corporation Indication of a destructive write via a notification from a disk drive that emulates blocks of a first block size within blocks of a second block size
KR101289931B1 (ko) * 2011-09-23 2013-07-25 한양대학교 산학협력단 다양한 블록 크기를 지원하는 주소 사상을 사용하여 플래시 메모리 내에 데이터를 저장하는 방법 및 장치
US9417821B2 (en) 2011-09-30 2016-08-16 Intel Corporation Presentation of direct accessed storage under a logical drive model
US9053809B2 (en) * 2011-11-09 2015-06-09 Apple Inc. Data protection from write failures in nonvolatile memory
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9021333B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for recovering data from failed portions of a flash drive
US9176812B1 (en) 2012-05-22 2015-11-03 Pmc-Sierra, Inc. Systems and methods for storing data in page stripes of a flash drive
US8972824B1 (en) * 2012-05-22 2015-03-03 Pmc-Sierra, Inc. Systems and methods for transparently varying error correction code strength in a flash drive
US8996957B1 (en) 2012-05-22 2015-03-31 Pmc-Sierra, Inc. Systems and methods for initializing regions of a flash drive having diverse error correction coding (ECC) schemes
US9021336B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for redundantly storing error correction codes in a flash drive with secondary parity information spread out across each page of a group of pages
US9183085B1 (en) 2012-05-22 2015-11-10 Pmc-Sierra, Inc. Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency
US8788910B1 (en) 2012-05-22 2014-07-22 Pmc-Sierra, Inc. Systems and methods for low latency, high reliability error correction in a flash drive
US9021337B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for adaptively selecting among different error correction coding schemes in a flash drive
US8793556B1 (en) 2012-05-22 2014-07-29 Pmc-Sierra, Inc. Systems and methods for reclaiming flash blocks of a flash drive
US9164840B2 (en) * 2012-07-26 2015-10-20 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Managing a solid state drive (‘SSD’) in a redundant array of inexpensive drives (‘RAID’)
US20140063983A1 (en) * 2012-09-06 2014-03-06 International Business Machines Corporation Error Detection And Correction In A Memory System
JP6034183B2 (ja) * 2012-12-27 2016-11-30 株式会社東芝 半導体記憶装置
US9158678B2 (en) * 2013-03-13 2015-10-13 Kabushiki Kaisha Toshiba Memory address management system and method
US9098445B2 (en) 2013-03-14 2015-08-04 Apple Inc. Selection of redundant storage configuration based on available memory space
US9009565B1 (en) 2013-03-15 2015-04-14 Pmc-Sierra, Inc. Systems and methods for mapping for solid-state memory
US10482009B1 (en) * 2013-03-15 2019-11-19 Google Llc Use of a logical-to-logical translation map and a logical-to-physical translation map to access a data storage device
US9081701B1 (en) 2013-03-15 2015-07-14 Pmc-Sierra, Inc. Systems and methods for decoding data for solid-state memory
US9053012B1 (en) 2013-03-15 2015-06-09 Pmc-Sierra, Inc. Systems and methods for storing data for solid-state memory
US9208018B1 (en) 2013-03-15 2015-12-08 Pmc-Sierra, Inc. Systems and methods for reclaiming memory for solid-state memory
US9026867B1 (en) 2013-03-15 2015-05-05 Pmc-Sierra, Inc. Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory
TWI559133B (zh) * 2013-05-22 2016-11-21 祥碩科技股份有限公司 磁碟陣列系統及資料處理方法
WO2015035536A1 (zh) * 2013-09-16 2015-03-19 上海宝存信息科技有限公司 在基于闪存的存储系统中构建raid的方法及系统
US9454434B2 (en) 2014-01-17 2016-09-27 Netapp, Inc. File system driven raid rebuild technique
US9946616B2 (en) * 2014-01-29 2018-04-17 Hitachi, Ltd. Storage apparatus
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US9939865B2 (en) 2014-06-13 2018-04-10 Seagate Technology Llc Selective storage resource powering for data transfer management
US9830110B2 (en) * 2014-06-20 2017-11-28 Dell Products, Lp System and method to enable dynamic changes to virtual disk stripe element sizes on a storage controller
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
JP2016057876A (ja) * 2014-09-10 2016-04-21 富士通株式会社 情報処理装置、入出力制御プログラム、及び入出力制御方法
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
KR102344834B1 (ko) * 2014-09-24 2021-12-29 삼성전자주식회사 솔리드 스테이트 드라이브 및 이를 포함하는 컴퓨팅 시스템
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
KR102254102B1 (ko) 2015-01-23 2021-05-20 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US9766837B2 (en) 2015-06-10 2017-09-19 Micron Technology, Inc. Stripe mapping in memory
CN106339179B (zh) * 2015-07-06 2020-11-17 上海宝存信息科技有限公司 主机装置、存取系统、以及存取方法
US10191841B2 (en) 2015-07-06 2019-01-29 Shannon Systems Ltd. Host device, access system, and access method
KR102491624B1 (ko) * 2015-07-27 2023-01-25 삼성전자주식회사 데이터 저장 장치의 작동 방법과 상기 데이터 저장 장치를 포함하는 시스템의 작동 방법
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
EP3220275B1 (en) 2015-12-03 2020-11-04 Huawei Technologies Co., Ltd. Array controller, solid state disk and data writing control method for solid state disk
US10482071B1 (en) * 2016-01-26 2019-11-19 Pure Storage, Inc. Systems and methods for providing metrics for a plurality of storage entities of a multi-array data storage system
KR102527992B1 (ko) 2016-03-14 2023-05-03 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10120583B2 (en) * 2016-06-07 2018-11-06 Facebook, Inc. Performance penalty avoidance for solid state drive
KR102498208B1 (ko) * 2016-06-07 2023-02-10 삼성전자주식회사 여분의 용량을 포함하는 메모리 장치 및 이를 포함하는 적층 메모리 장치
KR20170143084A (ko) 2016-06-17 2017-12-29 에스케이하이닉스 주식회사 반도체장치 및 반도체시스템
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
JP6721491B2 (ja) * 2016-11-18 2020-07-15 キオクシア株式会社 記憶システム
US10126988B1 (en) * 2017-07-28 2018-11-13 EMC IP Holding Company LLC Assigning RAID extents and changing drive extent allocations within RAID extents when splitting a group of storage drives into partnership groups in a data storage system
TWI656442B (zh) * 2017-11-30 2019-04-11 慧榮科技股份有限公司 用來於一記憶裝置中進行存取控制之方法以及記憶裝置及其控制器
US11086736B2 (en) * 2019-10-31 2021-08-10 EMC IP Holding Company, LLC System and method for tier recovery
KR20220023476A (ko) * 2020-08-21 2022-03-02 에스케이하이닉스 주식회사 레이드 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템
US11605439B2 (en) * 2021-03-31 2023-03-14 Micron Technology, Inc. Remapping bad blocks in a memory sub-system
JP2023044168A (ja) * 2021-09-17 2023-03-30 キオクシア株式会社 メモリコントローラ、メモリシステム、及び情報処理システム

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06231049A (ja) * 1993-02-03 1994-08-19 Nec Corp 半導体ディスク装置
JP2001051806A (ja) * 1999-08-05 2001-02-23 Fujitsu Ltd ディスクアレイ装置
JP2003167690A (ja) * 2001-11-30 2003-06-13 Toshiba Corp ディスクアレイ装置及び同装置におけるデータ復旧方法
JP2004038237A (ja) * 2002-06-28 2004-02-05 Seiko Epson Corp 情報処理装置およびプログラム
JP2006228138A (ja) * 2005-02-21 2006-08-31 Canon Inc 半導体記憶装置、記憶制御方法および情報機器
JP2007323224A (ja) * 2006-05-31 2007-12-13 Hitachi Ltd フラッシュメモリストレージシステム
JP2008009635A (ja) * 2006-06-28 2008-01-17 Hitachi Ltd ストレージシステム及びそのデータ保護方法
JP2009099112A (ja) * 2007-09-27 2009-05-07 Toshiba Corp メモリシステム
JP2010152551A (ja) * 2008-12-24 2010-07-08 Toshiba Corp 不揮発性半導体メモリドライブ装置および不揮発性半導体メモリドライブ装置のデータ管理方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10177797A (ja) * 1996-12-17 1998-06-30 Toshiba Corp 半導体記憶装置
US8010753B2 (en) * 2005-09-28 2011-08-30 International Business Machines Corporation Systems and methods for temporarily transferring use of portions of partitioned memory between host computers
JP2010015195A (ja) * 2008-06-30 2010-01-21 Toshiba Corp 記憶制御装置及び記憶制御方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06231049A (ja) * 1993-02-03 1994-08-19 Nec Corp 半導体ディスク装置
JP2001051806A (ja) * 1999-08-05 2001-02-23 Fujitsu Ltd ディスクアレイ装置
JP2003167690A (ja) * 2001-11-30 2003-06-13 Toshiba Corp ディスクアレイ装置及び同装置におけるデータ復旧方法
JP2004038237A (ja) * 2002-06-28 2004-02-05 Seiko Epson Corp 情報処理装置およびプログラム
JP2006228138A (ja) * 2005-02-21 2006-08-31 Canon Inc 半導体記憶装置、記憶制御方法および情報機器
JP2007323224A (ja) * 2006-05-31 2007-12-13 Hitachi Ltd フラッシュメモリストレージシステム
JP2008009635A (ja) * 2006-06-28 2008-01-17 Hitachi Ltd ストレージシステム及びそのデータ保護方法
JP2009099112A (ja) * 2007-09-27 2009-05-07 Toshiba Corp メモリシステム
JP2010152551A (ja) * 2008-12-24 2010-07-08 Toshiba Corp 不揮発性半導体メモリドライブ装置および不揮発性半導体メモリドライブ装置のデータ管理方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015515033A (ja) * 2012-04-27 2015-05-21 株式会社日立製作所 ストレージシステム
US9684591B2 (en) 2012-04-27 2017-06-20 Hitachi, Ltd. Storage system and storage apparatus
WO2015052833A1 (ja) * 2013-10-11 2015-04-16 株式会社日立製作所 ストレージ装置、ストレージシステム、及びストレージ装置制御方法
JP6062060B2 (ja) * 2013-10-11 2017-01-18 株式会社日立製作所 ストレージ装置、ストレージシステム、及びストレージ装置制御方法
US9252810B2 (en) 2014-02-20 2016-02-02 Kabushiki Kaisha Toshiba Memory system and method of controlling memory system
JP2017138781A (ja) * 2016-02-03 2017-08-10 Necプラットフォームズ株式会社 ディスクアレイコントローラ、ストレージシステム、方法、及び、プログラム
US10019315B2 (en) 2016-04-13 2018-07-10 Fujitsu Limited Control device for a storage apparatus, system, and method of controlling a storage apparatus
JP2021068129A (ja) * 2019-10-21 2021-04-30 Tdk株式会社 メモリコントローラ及びフラッシュメモリシステム

Also Published As

Publication number Publication date
US8555027B2 (en) 2013-10-08
US20120072680A1 (en) 2012-03-22
US20140006851A1 (en) 2014-01-02
US9213604B2 (en) 2015-12-15
JP5388976B2 (ja) 2014-01-15

Similar Documents

Publication Publication Date Title
JP5388976B2 (ja) 半導体記憶制御装置
JP5066199B2 (ja) 半導体記憶装置
JP4901968B2 (ja) 半導体記憶装置
JP4842719B2 (ja) ストレージシステム及びそのデータ保護方法
JP5525605B2 (ja) フラッシュメモリモジュール
US9304685B2 (en) Storage array system and non-transitory recording medium storing control program
JP2006134064A (ja) 記憶メディアへの書込みエラーを検出する記憶制御装置及び方法
JP2008204041A (ja) ストレージ装置及びデータ配置制御方法
JP2011192260A (ja) 半導体記憶装置
JP2009098996A (ja) ストレージシステム
JP2014052978A (ja) 不揮発性半導体メモリの制御方法及びメモリシステム
JP5331018B2 (ja) ソリッド・ステート・ドライブ装置およびミラー構成再構成方法
US20100057978A1 (en) Storage system and data guarantee method
US7293193B2 (en) Array controller for disk array, and method for rebuilding disk array
JP5549249B2 (ja) ストレージ装置、ストレージ装置のデータ復元方法及びストレージコントローラ
JP6318769B2 (ja) ストレージ制御装置、制御プログラム、および制御方法
JP2008257360A (ja) Raid初期化方法及びraid初期化プログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120807

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120808

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121004

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130326

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130524

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131008

R151 Written notification of patent or utility model registration

Ref document number: 5388976

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees