(57)【要約】【課題】書き換え可能回数に制限がある半導体記憶装置の記憶領域を有効に利用する。【解決手段】半導体記憶装置２０の制御を行なうストレージ制御装置１０であって、半導体記憶装置２０の記憶領域２２に対して、連続するビット列において所定のビットパターンを除外してデータを書き込む第１書き込み処理部１４と、記憶領域２２のうち削除可能なデータを記憶している領域のビット列に対して、所定のビットパターンを書き込むことにより、追記データを書き込む第２書き込み処理部１４と、を備える。【選択図】図１
2020091796.tif 000002
【特許請求の範囲】
【請求項１】
半導体記憶装置の制御を行なうストレージ制御装置であって、
前記半導体記憶装置の記憶領域に対して、連続するビット列において所定のビットパターンを除外してデータを書き込む第１書き込み処理部と、
前記記憶領域のうち削除可能なデータを記憶している領域の前記ビット列に対して、前記所定のビットパターンを書き込むことにより、追記データを書き込む第２書き込み処理部と、
を備える、ストレージ制御装置。
【請求項２】
前記第１書き込み処理部は、前記ビット列における値が全て１である前記所定のビットパターンを除外してデータを書き込み、
前記第２書き込み処理部は、追記データの値が０である場合には前記第１書き込み処理部によって書き込まれた前記ビット列における値を維持する一方、追記データの値が１である場合には前記第１書き込み処理部によって書き込まれた前記ビット列における値を全て１に書き換える、
請求項１に記載のストレージ制御装置。
【請求項３】
前記第２書き込み処理部は、前記半導体記憶装置の管理領域に対して、前記第１書き込み処理部によるデータの書き込み単位であるセクタに対応する、追記データの書き込み単位であるセクタ群を構成する各セクタの間隔を書き込む、
請求項１又は２に記載のストレージ制御装置。
【請求項４】
読み込み対象のデータが追記データでない場合には、当該読み込み対象のデータを前記所定のビットパターンを含む形式に変換してデータを読み込む第１読み込み処理部を更に備える、
請求項１〜３のいずれか１項に記載のストレージ制御装置。
【請求項５】
読み込み対象のデータが追記データである場合には、前記第１書き込み処理部によるデータの書き込み単位であるセクタに対応する、前記第２書き込み処理部における追記データの書き込み単位であるセクタ群を読み込む第２読み込み処理部を更に備え、
前記第２読み込み処理部は、前記ビット列の値の少なくともいずれかが０である場合には当該ビット列の値を０として読み込む一方、前記ビット列の値が全て１である場合には当該ビット列の値を１として読み込む、
請求項１〜４のいずれか１項に記載のストレージ制御装置。
【請求項６】
半導体記憶装置の制御を行なうコンピュータに、
前記半導体記憶装置の記憶領域に対して、連続するビット列において所定のビットパターンを除外してデータを書き込み、
前記記憶領域のうち削除可能なデータを記憶している領域の前記ビット列に対して、前記所定のビットパターンを書き込むことにより、追記データを書き込む、
処理を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置及びプログラムに関する。
【背景技術】
【０００２】
フラッシュメモリでは、単純に記録データの書き換えを行なうことはできず、ブロック単位で記録データをフラッシュ（別言すれば、「削除」）した後に新たなデータの書き込みが実施される。
【０００３】
フローティングゲートに電荷を注入し、ドレインする操作では、絶縁体である酸化膜に電子を貫通させるため、書き込みに応じて記憶素子が劣化するという特性がある。
【０００４】
フラッシュメモリへの書き込み回数制限はハードディスクに比べて顕著に低く、フラッシュメモリを記憶媒体として利用する際には書き込み回数を増やさないように配慮される場合がある。
【０００５】
書き込み制限による制約を受けずにフラッシュメモリを利用するためには、例えば、特定の領域に書き込みが集中しないようにウェアレベリングを行なったり、予め一定量の予備領域を確保して劣化による欠損を代替したりという制御が行なわれる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１０−３２０９８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ハードディスクの代わりに、十分な回数の書き換えが可能な記憶領域として利用することを想定してフラッシュメモリが提供される場合には、予め十分な記憶量の予備領域が確保される。そのために、ユーザが利用可能な記憶領域は、物理的なフラッシュメモリの記憶領域よりもかなり小さくなるおそれがある。一方、予備領域を小さくすると、書き込み可能な回数が少なくなる。
【０００８】
１つの側面では、書き換え可能回数に制限がある半導体記憶装置の記憶領域を有効に利用することを目的とする。
【課題を解決するための手段】
【０００９】
ストレージ制御装置は、半導体記憶装置の制御を行なうストレージ制御装置であって、前記半導体記憶装置の記憶領域に対して、連続するビット列において所定のビットパターンを除外してデータを書き込む第１書き込み処理部と、前記記憶領域のうち削除可能なデータを記憶している領域の前記ビット列に対して、前記所定のビットパターンを書き込むことにより、追記データを書き込む第２書き込み処理部と、を備える。
【発明の効果】
【００１０】
１つの側面では、書き換え可能回数に制限がある半導体記憶装置の記憶領域を有効に利用することができる。
【図面の簡単な説明】
【００１１】
【図１】実施形態の一例におけるストレージ装置の構成例を示す図である。
【図２】３ビットのビットパターンを示すテーブルである。
【図３】図１に示したストレージ装置で利用されるデータの追記前のビットパターンを示すテーブルである。
【図４】図１に示したストレージ装置で利用されるデータの追記後のビットパターンを示すテーブルである。
【図５】図１に示したストレージ装置における書き込みデータ領域と追加領域との第１の例を示すテーブルである。
【図６】図１に示したストレージ装置におけるデータの追記前後での表現可能なビットパターンの種類を示すテーブルである。
【図７】図１に示したストレージ装置における書き込みデータ領域と追加領域との第２の例を示すテーブルである。
【図８】図１に示したストレージ装置におけるデータの追記前の１ブロックの空き領域ビットマップを例示するテーブルである。
【図９】図１に示したストレージ装置におけるデータの追記後の１ブロックの空き領域ビットマップを例示するテーブルである。
【図１０】図１に示したストレージ装置におけるデータの変換テーブルを示す図である。
【図１１】図１に示したストレージ装置における追記データ計算テーブルを示す図である。
【図１２】図１に示したストレージ装置における管理領域のレコード形式を示すテーブルである。
【図１３】図１に示したストレージ装置におけるデータの書き込み処理を説明するフローチャートである。
【図１４】図１に示したストレージ装置におけるデータの読み込み処理を説明するフローチャートである。
【図１５】関連例におけるデータ配置割合の一例を示すテーブルである。
【図１６】図１に示したストレージ装置におけるデータ配置割合の一例を示すテーブルである。
【発明を実施するための形態】
【００１２】
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
【００１３】
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００１４】
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
【００１５】
〔Ａ〕実施形態の一例
〔Ａ−１〕システム構成例
図１は、実施形態の一例におけるストレージ装置１の構成例を示す図である。
【００１６】
ストレージ装置１は、例えばフラッシュメモリであり、制御部１０及び記録領域部２０を備える。
【００１７】
記録領域部２０は、フラッシュデバイス等の半導体記憶装置であり、管理情報領域部２１及びデータ格納領域部２２を備える。
【００１８】
管理情報領域部２１は、アドレッシングに関する情報や追記の有無を示す情報，ビットマップ等を管理情報として記憶する。管理情報領域部２１の詳細については、図１２等を用いて後述する。
【００１９】
データ格納領域部２２は、実データを記憶する。データ格納領域部２２の詳細については、図５及び図７等を用いて後述する。
【００２０】
制御部１０は、ストレージ制御装置と称されてもよく、例えば、Central Processing Unit（ＣＰＵ）やMicro Processing Unit（ＭＰＵ），Digital Signal Processor（ＤＳＰ），Application Specific Integrated Circuit（ＡＳＩＣ），Programmable Logic Device（ＰＬＤ），Field Programmable Gate Array（ＦＰＧＡ）のいずれか一つであってもよい。また、制御部１０は、ＣＰＵ，ＭＰＵ，ＤＳＰ，ＡＳＩＣ，ＰＬＤ，ＦＰＧＡのうちの２種類以上の要素の組み合わせであってもよい。
【００２１】
制御部１０は、例示的に、種々の制御や演算を行なう処理装置であり、第１変換処理部１１，第２変換処理部１２，書き込み処理部１４，読み込み処理部１５，算出部１６，領域確保処理部１７及び領域確認処理部１８として機能する。また、制御部１０は、変換テーブル１３及び空き領域ビットマップ１９を保持する。
【００２２】
なお、これらの第１変換処理部１１，第２変換処理部１２，書き込み処理部１４，読み込み処理部１５，算出部１６，領域確保処理部１７及び領域確認処理部１８としての機能を実現するためのプログラムは、例えばフレキシブルディスク、ＣＤ（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ等）、ＤＶＤ（ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒ、ＤＶＤ＋Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、ＨＤ  ＤＶＤ等）、ブルーレイディスク、磁気ディスク、光ディスク、光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供されてよい。そして、コンピュータ（本実施形態では制御部１０）は上述した記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いてよい。また、プログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、記憶装置から通信経路を介してコンピュータに提供してもよい。
【００２３】
制御部１０としての機能を実現する際には、内部記憶装置（本実施形態では記録領域部２０）に格納されたプログラムがコンピュータ（本実施形態では制御部１０）によって実行されてよい。また、記録媒体に記録されたプログラムをコンピュータが読み取って実行してもよい。
【００２４】
第１変換処理部１１は、例えば、１４ビット（ｂｉｔ）表記のデータを１５ビット表記に変換する。
【００２５】
第２変換処理部１２は、例えば、１５ビット表記のデータを１４ビット表記に変換する。
【００２６】
変換テーブル１３は、第１変換処理部１１及び第２変換処理部１２によって、１４ビット表記と１５ビット表記との間の変換のために使用されるテーブルである。変換テーブル１３の詳細については、図１０を用いて後述する。
【００２７】
書き込み処理部１４は、データ格納領域部２２にデータを書き込む。
【００２８】
読み込み処理部１５は、データ格納領域部２２からデータを読み込む。
【００２９】
算出部１６は、追記前のデータを１４ビット毎に分割する。また、算出部１６は、データ格納領域部２２に追記される追記データを算出する。
【００３０】
領域確保処理部１７は、データ格納領域部２２における特定の領域のデータをフラッシュ（別言すれば、「削除」）して、空き領域を確保する。
【００３１】
領域確認処理部１８は、空き領域ビットマップ１９を参照して、データ格納領域部２２における空き領域又は追記データを書き込み可能な領域を確認する。また、領域確認処理部１８は、空き領域又は追記データを書き込み可能な領域が不足している場合に、領域確保処理部１７に特定のデータのフラッシュを指示する。
【００３２】
空き領域ビットマップ１９は、データ格納領域部２２における空き領域又は追記データを書き込み可能な領域を示す。空き領域ビットマップ１９の詳細については、図８及び図９を用いて後述する。
【００３３】
図２は、３ビットのビットパターンを示すテーブルである。
【００３４】
ｎビットの記憶単位を想定する。図３に示す例では、ｎ＝３の場合を示す。ｎビットの場合にとり得るパターン数（別言すれば、「状態の数」）は２ｎであるため、３ビットの場合にとり得るパターン数は図示するように２３＝８である。
【００３５】
図３は、図１に示したストレージ装置１で利用されるデータの追記前のビットパターンを示すテーブルである。
【００３６】
ここで、図３に示すように、全ビットが“１”である「状態８」を除外し（符号Ａ１参照）、２ｎ−１＝２３−１＝７通りの状態を想定する。すなわち、情報量して、２ｌｏｇ（７）ビットのデータが書き込める。
【００３７】
図４は、図１に示したストレージ装置１で利用されるデータの追記後のビットパターンを示すテーブルである。
【００３８】
データ格納領域部２２における領域をフラッシュせずに追加で１ビットのデータを書き込むことを想定する、書き込みに際しては、追記状態として、全ビットが１の状態を“１”とし（符号Ｂ１参照）、それ以外の状態を“０”とする。
【００３９】
図５は、図１に示したストレージ装置１における書き込みデータ領域と追加領域との第１の例を示すテーブルである。
【００４０】
例えば、４キビバイト（ＫｉＢ）のデータを３ビットの記録単位（ｎ＝３）で記録するためには、４３７８バイトが利用される。すなわち、４０９６バイトの書き込みデータに加えて、追加領域として２８２バイトが必要となる。
【００４１】
図６は、図１に示したストレージ装置１におけるデータの追記前後での表現可能なビットパターンの種類を示すテーブルである。
【００４２】
書き込み及び読み込みの際には、データは、３ビット表記と２ｌｏｇ（７）ビット表記との間で変換される。ここでは、一例として、１５ビット表記と１４ビット表記との間の変換について説明する。
【００４３】
１４ビットで表現できるパターンは１６３８４通りである（符号Ｃ１参照）のに対して、１５ビット（すなわち、３ビット×５）において表現できるパターンは７５＝１６８０７通りである（符号Ｃ２参照）。この場合には、１４ビットに対して１ビット分の領域が余分に必要となるため、約７％の容量が追加される。
【００４４】
図７は、図１に示したストレージ装置１における書き込みデータ領域と追加領域との第２の例を示すテーブルである。
【００４５】
４Ｋｉｂ（すなわち、４０９６バイト）は３２７６８ビットであるため、１４ビット×２３４１で収まる。１４ビットから１５ビットに変換すると、１５ビット×２３４１＝３５１１５ビットとなり、４３９０ビットで収まる。
【００４６】
そこで、図７に示すように、４０９６バイトの書き込みデータに加えて、追加領域として２９４バイトを用意する。また、ブロックサイズは、６４ページ（別言すれば、「セクタ」）とする。
【００４７】
図８は、図１に示したストレージ装置１におけるデータの追記前の１ブロックの空き領域ビットマップ１９を例示するテーブルである。
【００４８】
図８に示すブロックは、６４ページで構成されている。
【００４９】
データの追記前において、各ページには４ＫｉＢ分のデータが書き込まれる。そして、本実施形態の一例では、削除可能な（別言すれば、「トリムされた」）任意の３ページを使用し、１セクタ分の追記データが書き込まれる。追記書き込みは３ビットに対して１ビット分の情報量となるため、４ＫｉＢのデータを書き込むためには１２ＫｉＢ分の領域が必要となる。
【００５０】
３ページを用いて１セクタ分の情報を書き込んでいるため、一時的に提供可能なデータ容量は減少されるが、減少したデータ容量はSolid State Drive（ＳＳＤ）デバイス全体で有しているスペア領域で補うことができる。また、スペア領域が減少した場合や、一定量のページが追記書き込みされたブロック、ウェアレベリング処理の対象ブロックについては、フラッシュされてよい。
【００５１】
図８に示すブロックは、３０個の削除可能なページを有している。３ページ使用して１ページ分の情報を追記可能であるため、フラッシュせずに１０ページ分の情報を追記できる。
【００５２】
図９は、図１に示したストレージ装置１におけるデータの追記後の１ブロックの空き領域ビットマップ１９を例示するテーブルである。
【００５３】
図１に示した管理情報領域部２１には、ページ毎に追記書き込みを行なっているかの情報が１ブロックにつき６４ビットで保存される。
【００５４】
ここで、単純に３倍に増えた追記領域へのポインタをそのまま記録する場合には、３倍のアドレス領域が必要となる。しかしながら、一連の追記は一定の近いページ内に収められるため、次の領域を何ページ後に書き込んだという形式で記録することで、アドレスの記録のために必要な領域を抑えることができる。
【００５５】
例えば、６４ビットのアドレッシングであるとし、図９に示す「追記９−１」の位置をポイントし、次の領域「追記９−２」は１ページ後であり、その次の領域「追記９−３」は４ページ後として記録される。
【００５６】
何ページ後に後続の追記データが記録されているかを示す情報にそれぞれ４ビットが割り当てられる。「追記Ｘ−１」から「追記Ｘ−２」までの間隔と、「追記Ｘ−２」から「追記Ｘ−３」までの間隔は、それぞれ１６ページ以内となる。従って、アドレッシングには、６４ビット＋４ビット×２＝７２ビットが使用される。一方、単純に全領域をアドレッシングすると６４ビット×３＝１９２ビットとなり、アドレッシングに使用される領域が７２ビットよりも多くなる。
【００５７】
図１０は、図１に示したストレージ装置１におけるデータの変換テーブル１３を示す図である。
【００５８】
変換テーブル１３では、１０進数の元データと、２進数で１４ビットの元データと、２進数で１５ビットの変換後データとが、対応付けられている。この変換テーブル１３を用いて、１４ビット表記から１５ビット表記への変換と、１５ビット表記から１４ビット表記への変換とが、実施される。
【００５９】
図示する例において、１０進数の元データ“７”，“１４”，“２１”及び“２８”では、追記の実施が可能なように、変換後データにおいて“１１１”がスキップされる。
【００６０】
すなわち、書き込み処理部１４は、記録領域部２０のデータ格納領域部２２に対して、連続するビット列において所定のビットパターンを除外してデータを書き込む第１書き込み処理部の一例として機能する。具体的には、書き込み処理部１４は、ビット列における値が全て“１”である所定のビットパターンを除外してデータを書き込む。
【００６１】
図１０に示す例において、ビット列の長さは、変換後データのピリオドで区切られている３ビットである。
【００６２】
また、読み込み処理部１５は、読み込み対象のデータが追記データでない場合には、当該読み込み対象のデータを所定のビットパターンを含む元データの形式に変換してデータを読み込む第１読み込み処理部の一例として機能する。
【００６３】
図１１は、図１に示したストレージ装置１における追記データ計算テーブルを示す図である。
【００６４】
追記データ計算テーブルでは、追記データが“０”の場合には、元の書き込み状態と追記状態とが一致する。一方、追記データが“１”の場合には、元の書き込み状態にかかわらず追記状態において全ビットが“１”となる。
【００６５】
この追記データ計算テーブルを用いて、追記データの計算が実施される。
【００６６】
すなわち、書き込み処理部１４は、データ格納領域部２２のうち削除可能なデータを記憶している領域のビット列に対して、所定のビットパターンを書き込むことにより、追記データを書き込む第２書き込み処理部の一例として機能する。具体的には、書き込み処理部１４は、追記データの値が“０”である場合には書き込まれたビット列における値を維持する一方、追記データの値が“１”である場合には書き込まれたビット列における値を全て“１”に書き換える。
【００６７】
また、読み込み処理部１５は、読み込み対象のデータが追記データである場合には、データの書き込み単位であるセクタに対応する、追記データの書き込み単位であるセクタ群を読み込む第２読み込み処理部の一例として機能する。読み込み処理部１５は、ビット列の値の少なくともいずれかが“０”である場合には当該ビット列の値を“０”として読み込む一方、ビット列の値が全て“１”である場合には当該ビット列の値を“１”として読み込む。
【００６８】
図１２は、図１に示したストレージ装置１における管理情報領域部２１のレコード形式を示すテーブルである。
【００６９】
図１２に示すように、管理情報領域部２１は、０〜３１ビットが論理セクタアドレスであり、３２〜６３ビットが物理セクタアドレスであり、６４ビットが追記ビットであり、６５〜１２７ビットが予備領域である。
【００７０】
クライアントが認識する論理セクタアドレスのデータは、データ格納領域部２２における物理セクタアドレスに書き込まれる。
【００７１】
追記ビットは、対象データが通常書き込みデータであるか、追記データであるかを示す。追記データは連続した３セクタに書き込まれる。
【００７２】
予備領域には、３セクタの相対アドレスポインタ情報が書き込まれることにより、連続しない領域におけるページを追記データの書き込み領域として利用できる。
【００７３】
すなわち、書き込み処理部１４は、記録領域部２０の管理情報領域部２１に対して、データの書き込み単位であるセクタに対応する、追記データの書き込み単位であるセクタ群を構成する各セクタの間隔を書き込む第２書き込み処理部の一例として機能する。
【００７４】
〔Ａ−２〕動作例
図１に示したストレージ装置１におけるデータの書き込み処理を、図１３に示すフローチャート（ステップＳ１〜Ｓ１２）を用いて説明する。
【００７５】
領域確認処理部１８は、データ格納領域部２２において空き領域があるかを確認する（ステップＳ１）。
【００７６】
空き領域がある場合には（ステップＳ１のＹｅｓルート参照）、算出部１６は、書き込みデータを１４ビット毎に分割する（ステップＳ２）。
【００７７】
第１変換処理部１１は、書き込みデータを１４ビット表記から１５ビット表記へ変換する（ステップＳ３）。
【００７８】
書き込み処理部１４は、変換されたデータをデータ格納領域部２２に書き込む処理を行なう（ステップＳ４）。
【００７９】
書き込み処理部１４は、管理情報領域部２１における管理情報を更新する（ステップＳ５）。そして、データの書き込み処理は終了する。
【００８０】
ステップＳ１において、空き領域がない場合には（ステップＳ１のＮｏルート参照）、領域確認処理部１８は、データ格納領域部２２において追記可能領域があるかを確認する（ステップＳ６）。
【００８１】
追記可能領域がない場合には（ステップＳ６のＮｏルート参照）、領域確保処理部１７は、データ格納領域部２２において空き領域を確保する（ステップＳ７）。そして、処理はステップＳ２に移行する。
【００８２】
ステップＳ６において、追記可能領域がある場合には（ステップＳ６のＹｅｓルート参照）、読み込み処理部１５は、データ格納領域部２２から書き込み対象の３セクタを読み込む（ステップＳ８）。
【００８３】
算出部１６は、書き込みデータを図１１に示した追記データ計算テーブルに従って算出する（ステップＳ９）。すなわち、書き込み対象の３セクタにおいて、追記データが“０”の場合には元の書き込み状態が維持され、追記データが“１”の場合には全ビットが“１”に変更される。
【００８４】
算出部１６は、追記データを作成する（ステップＳ１０）。
【００８５】
書き込み処理部１４は、データ格納領域部２２における書き込み対象の３セクタに対して、追記データの書き込み処理を行なう（ステップＳ１１）。
【００８６】
書き込み処理部１４は、管理情報領域部２１の管理情報において、書き込み対象の３セクタについて追記ビットありに更新する（ステップＳ１２）。そして、データの書き込み処理は終了する。
【００８７】
次に、図１に示したストレージ装置１におけるデータの読み込み処理を、図１４に示すフローチャート（ステップＳ２１〜Ｓ２６）を用いて説明する。
【００８８】
読み込み処理部１５は、管理情報領域部２１における管理情報を確認する（ステップＳ２１）。
【００８９】
読み込み処理部１５は、読み込み対象のセクタが追記データであるかを判定する（ステップＳ２２）。
【００９０】
読み込み対象のセクタが追記データでない場合には（ステップＳ２２のＮｏルート参照）、読み込み処理部１５は、読み込み対象の物理セクタを読み込む（ステップＳ２３）。
【００９１】
第２変換処理部１２は、読み込みデータを１５ビット表記から１４ビット表記へ変換する（ステップＳ２４）。そして、データの読み込み処理は終了する。
【００９２】
ステップＳ２２において、読み込み対象のセクタが追記データである場合には（ステップＳ２２のＹｅｓルート参照）、読み込み処理部１５は、読み込み対象の物理セクタとして３セクタを読み込む（ステップＳ２５）。
【００９３】
算出部１６は、読み込みデータから追記データを図１１に示した追記データ計算テーブルに従って算出する（ステップＳ２６）。すなわち、読み込み対象の３セクタのうちいずれかが“０”である場合には追記データとして“０”を算出し、読み込み対象の３セクタが全て“１”である場合には追記データとして“１”を算出する。そして、データの読み込み処理は終了する。
〔Ａ−３〕効果
図１５は、関連例におけるデータ配置割合の一例を示すテーブルである。図１６は、図１に示したストレージ装置１におけるデータ配置割合の一例を示すテーブルである。
【００９４】
図１５及び図１６においては、理想的なウェアレベリング処理が実施されている場合に、ウェアレベリング処理自体に起因する書き込み処理を無視し、全ての領域が均等に利用されている環境を想定する。そして、スペア領域を含む総容量の７０％を使用している状況において、毎日、総容量の１％が書き換えられ、１％が削除され、１％が追加書き込みされるワークロードを想定する。
【００９５】
図１５及び図１６に示す例では、使用している７０％のうち、１０％は比較的高頻度で書き換え又は削除されるが、６０％は比較的長期間にわたって保管されているデータであって更新されたり削除されたりする可能性は低いものとする。
【００９６】
これにより、図１５に示す例では、総容量のうちの１％の書き換え及び１％の削除によって、毎日２％の領域がフラッシュされる。
【００９７】
一方、図１６に示す例では、１５日が経過した時点で、３０％分の追記可能なページが存在する。３ページで１セクタ分のデータを書き込むことが可能なため、更に１０％分のデータ、すなわち５日分のデータをフラッシュすることなく書き込みできる。そして、追記可能な領域がなくなった時点で追記を行なった領域はフラッシュされ、通常の書き込み状態に書き直すことにより、空き容量が確保される。
【００９８】
図１５に示す関連例において、２０日が経過した時点では、４０％の領域に対するフラッシュが必要となる。一方、図１６に示す実施形態の一例において、２０日が経過した時点では、３０％の領域に対するフラッシュを実施すればよい。
【００９９】
結果として、実施形態の一例においては、フラッシュの実施回数を少なくすることで、デバイスの寿命を関連例に比べて約３３％延ばすことができる。
【０１００】
上述した実施形態の一例におけるストレージ装置１の制御部１０によれば、例えば、以下の作用効果を奏することができる。
【０１０１】
書き込み処理部１４は、記録領域部２０のデータ格納領域部２２に対して、連続するビット列において所定のビットパターンを除外してデータを書き込む。また、書き込み処理部１４は、データ格納領域部２２のうち削除可能なデータを記憶している領域のビット列に対して、所定のビットパターンを書き込むことにより、追記データを書き込む。
【０１０２】
これにより、書き換え可能回数に制限がある半導体記憶装置の記憶領域を有効に利用することができる。
【０１０３】
書き込み処理部１４は、ビット列における値が全て“１”である所定のビットパターンを除外してデータを書き込む。また、書き込み処理部１４は、追記データの値が“０”である場合には書き込まれたビット列における値を維持する一方、追記データの値が“１”である場合には書き込まれたビット列における値を全て“１”に書き換える。
【０１０４】
これにより、追記データの書き込みを確実に実施できる。
【０１０５】
書き込み処理部１４は、記録領域部２０の管理情報領域部２１に対して、データの書き込み単位であるセクタに対応する、追記データの書き込み単位であるセクタ群を構成する各セクタの間隔を書き込む。
【０１０６】
これにより、追記対象のセクタが連続しない場合でも追記データを書き込むことができる。また、全ての追記データのアドレスを保持する場合よりも、追記データの書き込み位置を特定するための情報量を削減できる。
【０１０７】
読み込み処理部１５は、読み込み対象のデータが追記データでない場合には、当該読み込み対象のデータを所定のビットパターンを含む形式に変換してデータを読み込む。
【０１０８】
これにより、追記データないデータを確実に読み込むことができる。
【０１０９】
読み込み処理部１５は、読み込み対象のデータが追記データである場合には、データの書き込み単位であるセクタに対応する、追記データの書き込み単位であるセクタ群を読み込む。また、読み込み処理部１５は、ビット列の値の少なくともいずれかが“０”である場合には当該ビット列の値を“０”として読み込む一方、ビット列の値が全て“１”である場合には当該ビット列の値を“１”として読み込む。
【０１１０】
これにより、追記データを確実に読み込むことができる。
【０１１１】
〔Ｂ〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【０１１２】
〔Ｃ〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０１１３】
（付記１）
半導体記憶装置の制御を行なうストレージ制御装置であって、
前記半導体記憶装置の記憶領域に対して、連続するビット列において所定のビットパターンを除外してデータを書き込む第１書き込み処理部と、
前記記憶領域のうち削除可能なデータを記憶している領域の前記ビット列に対して、前記所定のビットパターンを書き込むことにより、追記データを書き込む第２書き込み処理部と、
を備える、ストレージ制御装置。
【０１１４】
（付記２）
前記第１書き込み処理部は、前記ビット列における値が全て１である前記所定のビットパターンを除外してデータを書き込み、
前記第２書き込み処理部は、追記データの値が０である場合には前記第１書き込み処理部によって書き込まれた前記ビット列における値を維持する一方、追記データの値が１である場合には前記第１書き込み処理部によって書き込まれた前記ビット列における値を全て１に書き換える、
付記１に記載のストレージ制御装置。
【０１１５】
（付記３）
前記第２書き込み処理部は、前記半導体記憶装置の管理領域に対して、前記第１書き込み処理部によるデータの書き込み単位であるセクタに対応する、追記データの書き込み単位であるセクタ群を構成する各セクタの間隔を書き込む、
付記１又は２に記載のストレージ制御装置。
【０１１６】
（付記４）
読み込み対象のデータが追記データでない場合には、当該読み込み対象のデータを前記所定のビットパターンを含む形式に変換してデータを読み込む第１読み込み処理部を更に備える、
付記１〜３のいずれか１項に記載のストレージ制御装置。
【０１１７】
（付記５）
読み込み対象のデータが追記データである場合には、前記第１書き込み処理部によるデータの書き込み単位であるセクタに対応する、前記第２書き込み処理部における追記データの書き込み単位であるセクタ群を読み込む第２読み込み処理部を更に備え、
前記第２読み込み処理部は、前記ビット列の値の少なくともいずれかが０である場合には当該ビット列の値を０として読み込む一方、前記ビット列の値が全て１である場合には当該ビット列の値を１として読み込む、
付記１〜４のいずれか１項に記載のストレージ制御装置。
【０１１８】
（付記６）
半導体記憶装置の制御を行なうコンピュータに、
前記半導体記憶装置の記憶領域に対して、連続するビット列において所定のビットパターンを除外してデータを書き込み、
前記記憶領域のうち削除可能なデータを記憶している領域の前記ビット列に対して、前記所定のビットパターンを書き込むことにより、追記データを書き込む、
処理を実行させる、プログラム。
【０１１９】
（付記７）
前記ビット列における値が全て１である前記所定のビットパターンを除外してデータを書き込み、
追記データの値が０である場合には書き込まれた前記ビット列における値を維持する一方、追記データの値が１である場合には書き込まれた前記ビット列における値を全て１に書き換える、
処理を前記コンピュータに実行させる、付記６に記載のプログラム。
【０１２０】
（付記８）
前記半導体記憶装置の管理領域に対して、データの書き込み単位であるセクタに対応する、追記データの書き込み単位であるセクタ群を構成する各セクタの間隔を書き込む、
処理を前記コンピュータに実行させる、付記６又は７に記載のプログラム。
【０１２１】
（付記９）
読み込み対象のデータが追記データでない場合には、当該読み込み対象のデータを前記所定のビットパターンを含む形式に変換してデータを読み込む、
処理を前記コンピュータに実行させる、付記６〜８のいずれか１項に記載のプログラム。
【０１２２】
（付記１０）
読み込み対象のデータが追記データである場合には、データの書き込み単位であるセクタに対応する、追記データの書き込み単位であるセクタ群を読み込み、
前記ビット列の値の少なくともいずれかが０である場合には当該ビット列の値を０として読み込む一方、前記ビット列の値が全て１である場合には当該ビット列の値を１として読み込む、
処理を前記コンピュータに実行させる、付記６〜９のいずれか１項に記載のプログラム。
【符号の説明】
【０１２３】
１      ：ストレージ装置
１０    ：制御部
１１    ：第１変換処理部
１２    ：第２変換処理部
１３    ：変換テーブル
１４    ：書き込み処理部
１５    ：読み込み処理部
１６    ：算出部
１７    ：領域確保処理部
１８    ：領域確認処理部
１９    ：空き領域ビットマップ
２０    ：記録領域部
２１    ：管理情報領域部
２２    ：データ格納領域部
【図１】
2020091796.tif 000003
【図２】
2020091796.tif 000004
【図３】
2020091796.tif 000005
【図４】
2020091796.tif 000006
【図５】
2020091796.tif 000007
【図６】
2020091796.tif 000008
【図７】
2020091796.tif 000009
【図８】
2020091796.tif 000010
【図９】
2020091796.tif 000011
【図１０】
2020091796.tif 000012
【図１１】
2020091796.tif 000013
【図１２】
2020091796.tif 000014
【図１３】
2020091796.tif 000015
【図１４】
2020091796.tif 000016
【図１５】
2020091796.tif 000017
【図１６】
2020091796.tif 000018