(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-28
(45)【発行日】2023-09-05
(54)【発明の名称】ストレージ制御装置及びプログラム
(51)【国際特許分類】
G06F 12/00 20060101AFI20230829BHJP
G06F 3/06 20060101ALI20230829BHJP
G06F 3/08 20060101ALI20230829BHJP
【FI】
G06F12/00 560A
G06F3/06 301N
G06F3/08 H
G06F12/00 597U
(21)【出願番号】P 2018230079
(22)【出願日】2018-12-07
【審査請求日】2021-09-09
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100092978
【氏名又は名称】真田 有
(72)【発明者】
【氏名】土屋 直史
【審査官】北村 学
(56)【参考文献】
【文献】特開2012-064158(JP,A)
【文献】特表2004-516603(JP,A)
【文献】米国特許第04691299(US,A)
【文献】永原 裕之,スライスサイズの小さなIndex-Less型フラッシュ符号の提案と評価,奈良先端科学技術大学院大学 修士論文,2013年,日本,奈良先端科学技術大学院大学,2013年03月15日,pp. 1-36,https://library.naist.jp/dllimedio/showpdf2.cgi/DLPDFR009724
【文献】Ronald L. Rivest and Adi Shamir,How to Reuse a "Write-Once" Memory,Information and Control,UK,Academic Press, Inc.,1982年,55,1-19,https://core.ac.uk/download/pdf/82585075.pdf
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 3/06
G06F 3/08
(57)【特許請求の範囲】
【請求項1】
データを記憶する記憶領域を有する半導体記憶装置の制御を行なうストレージ制御装置であって、
10進数の元データに対する2進数の元データを、nビット(nは3以上の整数)のビット長を有するビット列が複数連結されていると共に前記2進数の元データよりも1ビットからn-1ビット多い全体ビット長を有する2進数の変換後データに変換する際に、前記ビット列として値が全て1である
ビット列を含まないように変換した、前記変換後データを前記記憶領域に書き込む第1書き込み処理部と、
前記記憶領域のう
ち削除可能
であることを示す領域に記憶され
ている前記変換後データに対して
前記nビットのビット長を有するビット列を用いて1ビットの書き換えデータを書き
込む第2書き込み処理部と、
を備え
、
前記第2書き込み処理部は、前記書き換えデータの値が0である場合には前記第1書き込み処理部によって書き込まれた前記変換後データの値を維持し、前記書き換えデータの値が1である場合には前記第1書き込み処理部によって書き込まれた前記変換後データにおける値を全て1である値のビット列に書き換える、
ストレージ制御装置
。
【請求項2】
前記記憶領域に記憶されている読み込み対象のデータが前記書き換えデータでない場合には、当該読み込み対象のデータを前記
値が全て1であるビット列を含む形式に変換してデータを読み込む第1読み込み処理部を更に備える、
請求項
1に記載のストレージ制御装置。
【請求項3】
前記記憶領域に記憶されている読み込み対象のデータが前記書き換えデータである場合には、
前記複数連結された前記nビットのビット長を有するビット列のそれぞれを読み込む第2読み込み処理部を更に備え、
前記第2読み込み処理部は、前記
複数連結された前記nビットのビット長を有するビット列のそれぞれにおいて、構成する前記ビット列の値の少なくともいずれかが0である場合には当該ビット列の値を0として読み込む一方
、構成する前記ビット列の値が全て1である場合には当該ビット列の値を1として読み込む、
請求項1
又は2に記載のストレージ制御装置。
【請求項4】
ビット列を含むデータを記憶する記憶領域を有する半導体記憶装置の制御を行なうコンピュータに、
10進数の元データに対する2進数の元データを、nビット(nは3以上の整数)のビット長を有するビット列が複数連結されていると共に前記2進数の元データよりも1ビットからn-1ビット多い全体ビット長を有する2進数の変換後データに変換する際に、前記ビット列として値が全て1である
ビット列を含まないように変換した、前記変換後データを前記記憶領域に書き込み、
前記記憶領域のう
ち削除可能
であることを示す領域に記憶され
ている前記変換後データに対して
前記nビットのビット長を有するビット列を用いて1ビットの書き換えデータを書き
込み、
前記書き換えデータの値が0である場合には前記書き込まれた前記変換後データの値を維持し、前記書き換えデータの値が1である場合には前記書き込まれた前記変換後データにおける値を全て1である値のビット列に書き換える、
処理を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージ制御装置及びプログラムに関する。
【背景技術】
【0002】
フラッシュメモリでは、単純に記録データの書き換えを行なうことはできず、ブロック単位で記録データをフラッシュ(別言すれば、「削除」)した後に新たなデータの書き込みが実施される。
【0003】
フローティングゲートに電荷を注入し、ドレインする操作では、絶縁体である酸化膜に電子を貫通させるため、書き込みに応じて記憶素子が劣化するという特性がある。
【0004】
フラッシュメモリへの書き込み回数制限はハードディスクに比べて顕著に低く、フラッシュメモリを記憶媒体として利用する際には書き込み回数を増やさないように配慮される場合がある。
【0005】
書き込み制限による制約を受けずにフラッシュメモリを利用するためには、例えば、特定の領域に書き込みが集中しないようにウェアレベリングを行なったり、予め一定量の予備領域を確保して劣化による欠損を代替したりという制御が行なわれる。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
ハードディスクの代わりに、十分な回数の書き換えが可能な記憶領域として利用することを想定してフラッシュメモリが提供される場合には、予め十分な記憶量の予備領域が確保される。そのために、ユーザが利用可能な記憶領域は、物理的なフラッシュメモリの記憶領域よりもかなり小さくなるおそれがある。一方、予備領域を小さくすると、書き込み可能な回数が少なくなる。
【0008】
1つの側面では、書き換え可能回数に制限がある半導体記憶装置の記憶領域を有効に利用することを目的とする。
【課題を解決するための手段】
【0009】
ストレージ制御装置は、半導体記憶装置の制御を行なうストレージ制御装置であって、ビット列を含むデータを記憶する前記半導体記憶装置の記憶領域に対して、連続する前記ビット列中の所定のセクタにおいて値が全て1である所定のビットパターンを除外して前記データを書き込む第1書き込み処理部と、前記記憶領域のうち削除可能なデータを記憶している領域に記憶されていない前記ビット列に対して、前記データの書き換えを行なわない一方、前記削除可能なデータを記憶している領域に記憶されることとなった前記ビット列に対して、1ビットの書き換えデータの値が0である場合には前記第1書き込み処理部によって書き込まれた前記ビット列における値を維持し、前記書き換えデータの値が1である場合には前記第1書き込み処理部によって書き込まれた前記ビット列における値を前記所定のビットパターンに書き換える第2書き込み処理部と、を備える。
【発明の効果】
【0010】
1つの側面では、書き換え可能回数に制限がある半導体記憶装置の記憶領域を有効に利用することができる。
【図面の簡単な説明】
【0011】
【
図1】実施形態の一例におけるストレージ装置の構成例を示す図である。
【
図2】3ビットのビットパターンを示すテーブルである。
【
図3】
図1に示したストレージ装置で利用されるデータの追記前のビットパターンを示すテーブルである。
【
図4】
図1に示したストレージ装置で利用されるデータの追記後のビットパターンを示すテーブルである。
【
図5】
図1に示したストレージ装置における書き込みデータ領域と追加領域との第1の例を示すテーブルである。
【
図6】
図1に示したストレージ装置におけるデータの追記前後での表現可能なビットパターンの種類を示すテーブルである。
【
図7】
図1に示したストレージ装置における書き込みデータ領域と追加領域との第2の例を示すテーブルである。
【
図8】
図1に示したストレージ装置におけるデータの追記前の1ブロックの空き領域ビットマップを例示するテーブルである。
【
図9】
図1に示したストレージ装置におけるデータの追記後の1ブロックの空き領域ビットマップを例示するテーブルである。
【
図10】
図1に示したストレージ装置におけるデータの変換テーブルを示す図である。
【
図11】
図1に示したストレージ装置における追記データ計算テーブルを示す図である。
【
図12】
図1に示したストレージ装置における管理領域のレコード形式を示すテーブルである。
【
図13】
図1に示したストレージ装置におけるデータの書き込み処理を説明するフローチャートである。
【
図14】
図1に示したストレージ装置におけるデータの読み込み処理を説明するフローチャートである。
【
図15】関連例におけるデータ配置割合の一例を示すテーブルである。
【
図16】
図1に示したストレージ装置におけるデータ配置割合の一例を示すテーブルである。
【発明を実施するための形態】
【0012】
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
【0013】
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0014】
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
【0015】
〔A〕実施形態の一例
〔A-1〕システム構成例
図1は、実施形態の一例におけるストレージ装置1の構成例を示す図である。
【0016】
ストレージ装置1は、例えばフラッシュメモリであり、制御部10及び記録領域部20を備える。
【0017】
記録領域部20は、フラッシュデバイス等の半導体記憶装置であり、管理情報領域部21及びデータ格納領域部22を備える。
【0018】
管理情報領域部21は、アドレッシングに関する情報や追記の有無を示す情報,ビットマップ等を管理情報として記憶する。管理情報領域部21の詳細については、
図12等を用いて後述する。
【0019】
データ格納領域部22は、実データを記憶する。データ格納領域部22の詳細については、
図5及び
図7等を用いて後述する。
【0020】
制御部10は、ストレージ制御装置と称されてもよく、例えば、Central Processing Unit(CPU)やMicro Processing Unit(MPU),Digital Signal Processor(DSP),Application Specific Integrated Circuit(ASIC),Programmable Logic Device(PLD),Field Programmable Gate Array(FPGA)のいずれか一つであってもよい。また、制御部10は、CPU,MPU,DSP,ASIC,PLD,FPGAのうちの2種類以上の要素の組み合わせであってもよい。
【0021】
制御部10は、例示的に、種々の制御や演算を行なう処理装置であり、第1変換処理部11,第2変換処理部12,書き込み処理部14,読み込み処理部15,算出部16,領域確保処理部17及び領域確認処理部18として機能する。また、制御部10は、変換テーブル13及び空き領域ビットマップ19を保持する。
【0022】
なお、これらの第1変換処理部11,第2変換処理部12,書き込み処理部14,読み込み処理部15,算出部16,領域確保処理部17及び領域確認処理部18としての機能を実現するためのプログラムは、例えばフレキシブルディスク、CD(CD-ROM、CD-R、CD-RW等)、DVD(DVD-ROM、DVD-RAM、DVD-R、DVD+R、DVD-RW、DVD+RW、HD DVD等)、ブルーレイディスク、磁気ディスク、光ディスク、光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供されてよい。そして、コンピュータ(本実施形態では制御部10)は上述した記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いてよい。また、プログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、記憶装置から通信経路を介してコンピュータに提供してもよい。
【0023】
制御部10としての機能を実現する際には、内部記憶装置(本実施形態では記録領域部20)に格納されたプログラムがコンピュータ(本実施形態では制御部10)によって実行されてよい。また、記録媒体に記録されたプログラムをコンピュータが読み取って実行してもよい。
【0024】
第1変換処理部11は、例えば、14ビット(bit)表記のデータを15ビット表記に変換する。
【0025】
第2変換処理部12は、例えば、15ビット表記のデータを14ビット表記に変換する。
【0026】
変換テーブル13は、第1変換処理部11及び第2変換処理部12によって、14ビット表記と15ビット表記との間の変換のために使用されるテーブルである。変換テーブル13の詳細については、
図10を用いて後述する。
【0027】
書き込み処理部14は、データ格納領域部22にデータを書き込む。
【0028】
読み込み処理部15は、データ格納領域部22からデータを読み込む。
【0029】
算出部16は、追記前のデータを14ビット毎に分割する。また、算出部16は、データ格納領域部22に追記される追記データを算出する。
【0030】
領域確保処理部17は、データ格納領域部22における特定の領域のデータをフラッシュ(別言すれば、「削除」)して、空き領域を確保する。
【0031】
領域確認処理部18は、空き領域ビットマップ19を参照して、データ格納領域部22における空き領域又は追記データを書き込み可能な領域を確認する。また、領域確認処理部18は、空き領域又は追記データを書き込み可能な領域が不足している場合に、領域確保処理部17に特定のデータのフラッシュを指示する。
【0032】
空き領域ビットマップ19は、データ格納領域部22における空き領域又は追記データを書き込み可能な領域を示す。空き領域ビットマップ19の詳細については、
図8及び
図9を用いて後述する。
【0033】
図2は、3ビットのビットパターンを示すテーブルである。
【0034】
nビットの記憶単位を想定する。
図3に示す例では、n=3の場合を示す。nビットの場合にとり得るパターン数(別言すれば、「状態の数」)は2
nであるため、3ビットの場合にとり得るパターン数は図示するように2
3=8である。
【0035】
図3は、
図1に示したストレージ装置1で利用されるデータの追記前のビットパターンを示すテーブルである。
【0036】
ここで、
図3に示すように、全ビットが“1”である「状態8」を除外し(符号A1参照)、2
n-1=2
3-1=7通りの状態を想定する。すなわち、情報量して、2log(7)ビットのデータが書き込める。
【0037】
図4は、
図1に示したストレージ装置1で利用されるデータの追記後のビットパターンを示すテーブルである。
【0038】
データ格納領域部22における領域をフラッシュせずに追加で1ビットのデータを書き込むことを想定する、書き込みに際しては、追記状態として、全ビットが1の状態を“1”とし(符号B1参照)、それ以外の状態を“0”とする。
【0039】
図5は、
図1に示したストレージ装置1における書き込みデータ領域と追加領域との第1の例を示すテーブルである。
【0040】
例えば、4キビバイト(KiB)のデータを3ビットの記録単位(n=3)で記録するためには、4378バイトが利用される。すなわち、4096バイトの書き込みデータに加えて、追加領域として282バイトが必要となる。
【0041】
図6は、
図1に示したストレージ装置1におけるデータの追記前後での表現可能なビットパターンの種類を示すテーブルである。
【0042】
書き込み及び読み込みの際には、データは、3ビット表記と2log(7)ビット表記との間で変換される。ここでは、一例として、15ビット表記と14ビット表記との間の変換について説明する。
【0043】
14ビットで表現できるパターンは16384通りである(符号C1参照)のに対して、15ビット(すなわち、3ビット×5)において表現できるパターンは75=16807通りである(符号C2参照)。この場合には、14ビットに対して1ビット分の領域が余分に必要となるため、約7%の容量が追加される。
【0044】
図7は、
図1に示したストレージ装置1における書き込みデータ領域と追加領域との第2の例を示すテーブルである。
【0045】
4Kib(すなわち、4096バイト)は32768ビットであるため、14ビット×2341で収まる。14ビットから15ビットに変換すると、15ビット×2341=35115ビットとなり、4390ビットで収まる。
【0046】
そこで、
図7に示すように、4096バイトの書き込みデータに加えて、追加領域として294バイトを用意する。また、ブロックサイズは、64ページ(別言すれば、「セクタ」)とする。
【0047】
図8は、
図1に示したストレージ装置1におけるデータの追記前の1ブロックの空き領域ビットマップ19を例示するテーブルである。
【0048】
図8に示すブロックは、64ページで構成されている。
【0049】
データの追記前において、各ページには4KiB分のデータが書き込まれる。そして、本実施形態の一例では、削除可能な(別言すれば、「トリムされた」)任意の3ページを使用し、1セクタ分の追記データが書き込まれる。追記書き込みは3ビットに対して1ビット分の情報量となるため、4KiBのデータを書き込むためには12KiB分の領域が必要となる。
【0050】
3ページを用いて1セクタ分の情報を書き込んでいるため、一時的に提供可能なデータ容量は減少されるが、減少したデータ容量はSolid State Drive(SSD)デバイス全体で有しているスペア領域で補うことができる。また、スペア領域が減少した場合や、一定量のページが追記書き込みされたブロック、ウェアレベリング処理の対象ブロックについては、フラッシュされてよい。
【0051】
図8に示すブロックは、30個の削除可能なページを有している。3ページ使用して1ページ分の情報を追記可能であるため、フラッシュせずに10ページ分の情報を追記できる。
【0052】
図9は、
図1に示したストレージ装置1におけるデータの追記後の1ブロックの空き領域ビットマップ19を例示するテーブルである。
【0053】
図1に示した管理情報領域部21には、ページ毎に追記書き込みを行なっているかの情報が1ブロックにつき64ビットで保存される。
【0054】
ここで、単純に3倍に増えた追記領域へのポインタをそのまま記録する場合には、3倍のアドレス領域が必要となる。しかしながら、一連の追記は一定の近いページ内に収められるため、次の領域を何ページ後に書き込んだという形式で記録することで、アドレスの記録のために必要な領域を抑えることができる。
【0055】
例えば、64ビットのアドレッシングであるとし、
図9に示す「追記9-1」の位置をポイントし、次の領域「追記9-2」は1ページ後であり、その次の領域「追記9-3」は4ページ後として記録される。
【0056】
何ページ後に後続の追記データが記録されているかを示す情報にそれぞれ4ビットが割り当てられる。「追記X-1」から「追記X-2」までの間隔と、「追記X-2」から「追記X-3」までの間隔は、それぞれ16ページ以内となる。従って、アドレッシングには、64ビット+4ビット×2=72ビットが使用される。一方、単純に全領域をアドレッシングすると64ビット×3=192ビットとなり、アドレッシングに使用される領域が72ビットよりも多くなる。
【0057】
図10は、
図1に示したストレージ装置1におけるデータの変換テーブル13を示す図である。
【0058】
変換テーブル13では、10進数の元データと、2進数で14ビットの元データと、2進数で15ビットの変換後データとが、対応付けられている。この変換テーブル13を用いて、14ビット表記から15ビット表記への変換と、15ビット表記から14ビット表記への変換とが、実施される。
【0059】
図示する例において、10進数の元データ“7”,“14”,“21”及び“28”では、追記の実施が可能なように、変換後データにおいて“111”がスキップされる。
【0060】
すなわち、書き込み処理部14は、記録領域部20のデータ格納領域部22に対して、連続するビット列において所定のビットパターンを除外してデータを書き込む第1書き込み処理部の一例として機能する。具体的には、書き込み処理部14は、ビット列における値が全て“1”である所定のビットパターンを除外してデータを書き込む。
【0061】
図10に示す例において、ビット列の長さは、変換後データのピリオドで区切られている3ビットである。
【0062】
また、読み込み処理部15は、読み込み対象のデータが追記データでない場合には、当該読み込み対象のデータを所定のビットパターンを含む元データの形式に変換してデータを読み込む第1読み込み処理部の一例として機能する。
【0063】
図11は、
図1に示したストレージ装置1における追記データ計算テーブルを示す図である。
【0064】
追記データ計算テーブルでは、追記データが“0”の場合には、元の書き込み状態と追記状態とが一致する。一方、追記データが“1”の場合には、元の書き込み状態にかかわらず追記状態において全ビットが“1”となる。
【0065】
この追記データ計算テーブルを用いて、追記データの計算が実施される。
【0066】
すなわち、書き込み処理部14は、データ格納領域部22のうち削除可能なデータを記憶している領域のビット列に対して、所定のビットパターンを書き込むことにより、追記データを書き込む第2書き込み処理部の一例として機能する。具体的には、書き込み処理部14は、追記データの値が“0”である場合には書き込まれたビット列における値を維持する一方、追記データの値が“1”である場合には書き込まれたビット列における値を全て“1”に書き換える。
【0067】
また、読み込み処理部15は、読み込み対象のデータが追記データである場合には、データの書き込み単位であるセクタに対応する、追記データの書き込み単位であるセクタ群を読み込む第2読み込み処理部の一例として機能する。読み込み処理部15は、ビット列の値の少なくともいずれかが“0”である場合には当該ビット列の値を“0”として読み込む一方、ビット列の値が全て“1”である場合には当該ビット列の値を“1”として読み込む。
【0068】
図12は、
図1に示したストレージ装置1における管理情報領域部21のレコード形式を示すテーブルである。
【0069】
図12に示すように、管理情報領域部21は、0~31ビットが論理セクタアドレスであり、32~63ビットが物理セクタアドレスであり、64ビットが追記ビットであり、65~127ビットが予備領域である。
【0070】
クライアントが認識する論理セクタアドレスのデータは、データ格納領域部22における物理セクタアドレスに書き込まれる。
【0071】
追記ビットは、対象データが通常書き込みデータであるか、追記データであるかを示す。追記データは連続した3セクタに書き込まれる。
【0072】
予備領域には、3セクタの相対アドレスポインタ情報が書き込まれることにより、連続しない領域におけるページを追記データの書き込み領域として利用できる。
【0073】
すなわち、書き込み処理部14は、記録領域部20の管理情報領域部21に対して、データの書き込み単位であるセクタに対応する、追記データの書き込み単位であるセクタ群を構成する各セクタの間隔を書き込む第2書き込み処理部の一例として機能する。
【0074】
〔A-2〕動作例
図1に示したストレージ装置1におけるデータの書き込み処理を、
図13に示すフローチャート(ステップS1~S12)を用いて説明する。
【0075】
領域確認処理部18は、データ格納領域部22において空き領域があるかを確認する(ステップS1)。
【0076】
空き領域がある場合には(ステップS1のYesルート参照)、算出部16は、書き込みデータを14ビット毎に分割する(ステップS2)。
【0077】
第1変換処理部11は、書き込みデータを14ビット表記から15ビット表記へ変換する(ステップS3)。
【0078】
書き込み処理部14は、変換されたデータをデータ格納領域部22に書き込む処理を行なう(ステップS4)。
【0079】
書き込み処理部14は、管理情報領域部21における管理情報を更新する(ステップS5)。そして、データの書き込み処理は終了する。
【0080】
ステップS1において、空き領域がない場合には(ステップS1のNoルート参照)、領域確認処理部18は、データ格納領域部22において追記可能領域があるかを確認する(ステップS6)。
【0081】
追記可能領域がない場合には(ステップS6のNoルート参照)、領域確保処理部17は、データ格納領域部22において空き領域を確保する(ステップS7)。そして、処理はステップS2に移行する。
【0082】
ステップS6において、追記可能領域がある場合には(ステップS6のYesルート参照)、読み込み処理部15は、データ格納領域部22から書き込み対象の3セクタを読み込む(ステップS8)。
【0083】
算出部16は、書き込みデータを
図11に示した追記データ計算テーブルに従って算出する(ステップS9)。すなわち、書き込み対象の3セクタにおいて、追記データが“0”の場合には元の書き込み状態が維持され、追記データが“1”の場合には全ビットが“1”に変更される。
【0084】
算出部16は、追記データを作成する(ステップS10)。
【0085】
書き込み処理部14は、データ格納領域部22における書き込み対象の3セクタに対して、追記データの書き込み処理を行なう(ステップS11)。
【0086】
書き込み処理部14は、管理情報領域部21の管理情報において、書き込み対象の3セクタについて追記ビットありに更新する(ステップS12)。そして、データの書き込み処理は終了する。
【0087】
次に、
図1に示したストレージ装置1におけるデータの読み込み処理を、
図14に示すフローチャート(ステップS21~S26)を用いて説明する。
【0088】
読み込み処理部15は、管理情報領域部21における管理情報を確認する(ステップS21)。
【0089】
読み込み処理部15は、読み込み対象のセクタが追記データであるかを判定する(ステップS22)。
【0090】
読み込み対象のセクタが追記データでない場合には(ステップS22のNoルート参照)、読み込み処理部15は、読み込み対象の物理セクタを読み込む(ステップS23)。
【0091】
第2変換処理部12は、読み込みデータを15ビット表記から14ビット表記へ変換する(ステップS24)。そして、データの読み込み処理は終了する。
【0092】
ステップS22において、読み込み対象のセクタが追記データである場合には(ステップS22のYesルート参照)、読み込み処理部15は、読み込み対象の物理セクタとして3セクタを読み込む(ステップS25)。
【0093】
算出部16は、読み込みデータから追記データを
図11に示した追記データ計算テーブルに従って算出する(ステップS26)。すなわち、読み込み対象の3セクタのうちいずれかが“0”である場合には追記データとして“0”を算出し、読み込み対象の3セクタが全て“1”である場合には追記データとして“1”を算出する。そして、データの読み込み処理は終了する。
〔A-3〕効果
図15は、関連例におけるデータ配置割合の一例を示すテーブルである。
図16は、
図1に示したストレージ装置1におけるデータ配置割合の一例を示すテーブルである。
【0094】
図15及び
図16においては、理想的なウェアレベリング処理が実施されている場合に、ウェアレベリング処理自体に起因する書き込み処理を無視し、全ての領域が均等に利用されている環境を想定する。そして、スペア領域を含む総容量の70%を使用している状況において、毎日、総容量の1%が書き換えられ、1%が削除され、1%が追加書き込みされるワークロードを想定する。
【0095】
図15及び
図16に示す例では、使用している70%のうち、10%は比較的高頻度で書き換え又は削除されるが、60%は比較的長期間にわたって保管されているデータであって更新されたり削除されたりする可能性は低いものとする。
【0096】
これにより、
図15に示す例では、総容量のうちの1%の書き換え及び1%の削除によって、毎日2%の領域がフラッシュされる。
【0097】
一方、
図16に示す例では、15日が経過した時点で、30%分の追記可能なページが存在する。3ページで1セクタ分のデータを書き込むことが可能なため、更に10%分のデータ、すなわち5日分のデータをフラッシュすることなく書き込みできる。そして、追記可能な領域がなくなった時点で追記を行なった領域はフラッシュされ、通常の書き込み状態に書き直すことにより、空き容量が確保される。
【0098】
図15に示す関連例において、20日が経過した時点では、40%の領域に対するフラッシュが必要となる。一方、
図16に示す実施形態の一例において、20日が経過した時点では、30%の領域に対するフラッシュを実施すればよい。
【0099】
結果として、実施形態の一例においては、フラッシュの実施回数を少なくすることで、デバイスの寿命を関連例に比べて約33%延ばすことができる。
【0100】
上述した実施形態の一例におけるストレージ装置1の制御部10によれば、例えば、以下の作用効果を奏することができる。
【0101】
書き込み処理部14は、記録領域部20のデータ格納領域部22に対して、連続するビット列において所定のビットパターンを除外してデータを書き込む。また、書き込み処理部14は、データ格納領域部22のうち削除可能なデータを記憶している領域のビット列に対して、所定のビットパターンを書き込むことにより、追記データを書き込む。
【0102】
これにより、書き換え可能回数に制限がある半導体記憶装置の記憶領域を有効に利用することができる。
【0103】
書き込み処理部14は、ビット列における値が全て“1”である所定のビットパターンを除外してデータを書き込む。また、書き込み処理部14は、追記データの値が“0”である場合には書き込まれたビット列における値を維持する一方、追記データの値が“1”である場合には書き込まれたビット列における値を全て“1”に書き換える。
【0104】
これにより、追記データの書き込みを確実に実施できる。
【0105】
書き込み処理部14は、記録領域部20の管理情報領域部21に対して、データの書き込み単位であるセクタに対応する、追記データの書き込み単位であるセクタ群を構成する各セクタの間隔を書き込む。
【0106】
これにより、追記対象のセクタが連続しない場合でも追記データを書き込むことができる。また、全ての追記データのアドレスを保持する場合よりも、追記データの書き込み位置を特定するための情報量を削減できる。
【0107】
読み込み処理部15は、読み込み対象のデータが追記データでない場合には、当該読み込み対象のデータを所定のビットパターンを含む形式に変換してデータを読み込む。
【0108】
これにより、追記データないデータを確実に読み込むことができる。
【0109】
読み込み処理部15は、読み込み対象のデータが追記データである場合には、データの書き込み単位であるセクタに対応する、追記データの書き込み単位であるセクタ群を読み込む。また、読み込み処理部15は、ビット列の値の少なくともいずれかが“0”である場合には当該ビット列の値を“0”として読み込む一方、ビット列の値が全て“1”である場合には当該ビット列の値を“1”として読み込む。
【0110】
これにより、追記データを確実に読み込むことができる。
【0111】
〔B〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【0112】
〔C〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【0113】
(付記1)
半導体記憶装置の制御を行なうストレージ制御装置であって、
前記半導体記憶装置の記憶領域に対して、連続するビット列において所定のビットパターンを除外してデータを書き込む第1書き込み処理部と、
前記記憶領域のうち削除可能なデータを記憶している領域の前記ビット列に対して、前記所定のビットパターンを書き込むことにより、追記データを書き込む第2書き込み処理部と、
を備える、ストレージ制御装置。
【0114】
(付記2)
前記第1書き込み処理部は、前記ビット列における値が全て1である前記所定のビットパターンを除外してデータを書き込み、
前記第2書き込み処理部は、追記データの値が0である場合には前記第1書き込み処理部によって書き込まれた前記ビット列における値を維持する一方、追記データの値が1である場合には前記第1書き込み処理部によって書き込まれた前記ビット列における値を全て1に書き換える、
付記1に記載のストレージ制御装置。
【0115】
(付記3)
前記第2書き込み処理部は、前記半導体記憶装置の管理領域に対して、前記第1書き込み処理部によるデータの書き込み単位であるセクタに対応する、追記データの書き込み単位であるセクタ群を構成する各セクタの間隔を書き込む、
付記1又は2に記載のストレージ制御装置。
【0116】
(付記4)
読み込み対象のデータが追記データでない場合には、当該読み込み対象のデータを前記所定のビットパターンを含む形式に変換してデータを読み込む第1読み込み処理部を更に備える、
付記1~3のいずれか1項に記載のストレージ制御装置。
【0117】
(付記5)
読み込み対象のデータが追記データである場合には、前記第1書き込み処理部によるデータの書き込み単位であるセクタに対応する、前記第2書き込み処理部における追記データの書き込み単位であるセクタ群を読み込む第2読み込み処理部を更に備え、
前記第2読み込み処理部は、前記ビット列の値の少なくともいずれかが0である場合には当該ビット列の値を0として読み込む一方、前記ビット列の値が全て1である場合には当該ビット列の値を1として読み込む、
付記1~4のいずれか1項に記載のストレージ制御装置。
【0118】
(付記6)
半導体記憶装置の制御を行なうコンピュータに、
前記半導体記憶装置の記憶領域に対して、連続するビット列において所定のビットパターンを除外してデータを書き込み、
前記記憶領域のうち削除可能なデータを記憶している領域の前記ビット列に対して、前記所定のビットパターンを書き込むことにより、追記データを書き込む、
処理を実行させる、プログラム。
【0119】
(付記7)
前記ビット列における値が全て1である前記所定のビットパターンを除外してデータを書き込み、
追記データの値が0である場合には書き込まれた前記ビット列における値を維持する一方、追記データの値が1である場合には書き込まれた前記ビット列における値を全て1に書き換える、
処理を前記コンピュータに実行させる、付記6に記載のプログラム。
【0120】
(付記8)
前記半導体記憶装置の管理領域に対して、データの書き込み単位であるセクタに対応する、追記データの書き込み単位であるセクタ群を構成する各セクタの間隔を書き込む、
処理を前記コンピュータに実行させる、付記6又は7に記載のプログラム。
【0121】
(付記9)
読み込み対象のデータが追記データでない場合には、当該読み込み対象のデータを前記所定のビットパターンを含む形式に変換してデータを読み込む、
処理を前記コンピュータに実行させる、付記6~8のいずれか1項に記載のプログラム。
【0122】
(付記10)
読み込み対象のデータが追記データである場合には、データの書き込み単位であるセクタに対応する、追記データの書き込み単位であるセクタ群を読み込み、
前記ビット列の値の少なくともいずれかが0である場合には当該ビット列の値を0として読み込む一方、前記ビット列の値が全て1である場合には当該ビット列の値を1として読み込む、
処理を前記コンピュータに実行させる、付記6~9のいずれか1項に記載のプログラム。
【符号の説明】
【0123】
1 :ストレージ装置
10 :制御部
11 :第1変換処理部
12 :第2変換処理部
13 :変換テーブル
14 :書き込み処理部
15 :読み込み処理部
16 :算出部
17 :領域確保処理部
18 :領域確認処理部
19 :空き領域ビットマップ
20 :記録領域部
21 :管理情報領域部
22 :データ格納領域部