Некоторое содержание этого приложения в настоящий момент недоступно.
Если эта ситуация сохраняется, свяжитесь с нами по адресуОтзывы и контакты
1. (WO2018220714) STORAGE SYSTEM AND METHOD OF CONTROLLING MEMORY DEVICE
Document

明 細 書

発明の名称 ストレージ装置およびメモリデバイス制御方法

技術分野

0001  

背景技術

0002   0003   0004   0005   0006  

先行技術文献

特許文献

0007  

発明の概要

発明が解決しようとする課題

0008   0009   0010   0011   0012  

課題を解決するための手段

0013  

発明の効果

0014  

図面の簡単な説明

0015  

発明を実施するための形態

0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087   0088   0089   0090   0091   0092   0093   0094   0095   0096   0097   0098   0099   0100   0101   0102   0103   0104   0105   0106   0107   0108   0109   0110   0111  

符号の説明

0112  

請求の範囲

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15  

図面

1   2   3   4   5   6   7   8  

明 細 書

発明の名称 : ストレージ装置およびメモリデバイス制御方法

技術分野

[0001]
 本発明は、概して、不揮発性半導体メモリデバイスの制御に関する。

背景技術

[0002]
 従来、ストレージ装置は、例えば、磁気ディスクや光ディスク等のランダムアクセスが可能な不揮発性記憶媒体を有する記憶デバイスを有する。特に最近では、小型ディスクドライブを多数備えるストレージ装置が主流となっている。
[0003]
 また、近年の半導体技術の進歩に伴って、一括消去可能な不揮発性半導体メモリが開発されている。このような不揮発性半導体メモリとしては、例えば、フラッシュメモリがある。以降、フラッシュメモリを記憶媒体とする記憶デバイスを「フラッシュメモリデバイス」と称し、フラッシュメモリデバイスを有するストレージ装置を、「フラッシュストレージ装置」と称する。
[0004]
 フラッシュストレージ装置は、小型ディスクドライブを多数備えるストレージ装置に比べて、省電力であったり、アクセス時間等が高速であったりすると考えられている。
[0005]
 しかし、フラッシュメモリは、データを書き込んでから長い時間が経つと、データ誤りが徐々に増加し、誤り訂正符号を用いても訂正できなくなる恐れがある。そこで、フラッシュメモリデバイスは、フラッシュメモリにおける或る領域にデータを書き込んだあと、所定の時間が経過したら、その領域からデータを読み出し、そのデータに誤りがあればその誤りを訂正して、そのフラッシュメモリにおける別の領域に移動する(書き込む)。これにより、データが損失しないようにする。このような処理を、「リフレッシュ処理」と呼ぶ。
[0006]
 フラッシュメモリのデータ誤りが増加する速さは、書き換え回数が多いメモリ領域ほど速くなることが知られている。これに対し、特許文献1は、フラッシュメモリの書き換え回数の進行度合いに応じたタイミングでリフレッシュ処理を行う方法を開示している。

先行技術文献

特許文献

[0007]
特許文献1 : 特開2016-206981号公報

発明の概要

発明が解決しようとする課題

[0008]
 特許文献1のような技術によれば、フラッシュメモリの書き換え回数が少ない場合には、リフレッシュ処理の実施頻度が低く設定されることになる。
[0009]
 しかし、フラッシュメモリのデータ誤りが増加する速さは、フラッシュメモリの書き換え回数だけに依存するものではない。データが書き込まれたあと、フラッシュメモリが置かれている環境の温度が高いほど、データ誤りの増加が速くなることが知られている。つまり、フラッシュメモリの書き換え回数が少ない場合でも、そのフラッシュメモリが、温度が高い環境に置かれていると、データ誤りが速く増加する。
[0010]
 そのため、フラッシュメモリの書き換え回数が少ないからといってリフレッシュ処理の実施頻度が低く設定されていると、次回のリフレッシュ処理までに、誤り訂正符号で訂正できない誤りが発生する恐れ、つまりデータが損失してしまう恐れがある。
[0011]
 また、フラッシュストレージ装置が、多数のフラッシュメモリデバイス(フラッシュメモリを記憶媒体とした記憶デバイス)を有することが考えられる。消費電力を削減するためには、所定の条件(例えば、一定時間されない)に適合するフラッシュメモリデバイスの電源を遮断する(少なくとも、リフレッシュ処理のような内部処理が実施されない状態にする)ことが望ましい。電源が遮断されたフラッシュメモリデバイスは、リフレッシュ処理を実施できない状態であるが、その状態のまま、長時間、温度が高い環境に放置されることになり得る。このため、電源が投入されたときには、リフレッシュ処理を実施しても訂正できない程の誤りがデータに生じている可能性がある。
[0012]
 このような問題は、フラッシュメモリ以外の不揮発性半導体メモリについてもあり得る。

課題を解決するための手段

[0013]
 複数の不揮発性半導体メモリデバイスの少なくとも1つが、誤り検査処理およびリフレッシュ処理を行うことができない低消費電力状態の不揮発性半導体メモリデバイス(以下、第1のメモリデバイス)であるとする。ストレージ装置は、第1のメモリデバイスが低消費電力状態にされてからの経過時間と、その経過時間における第1のメモリデバイスの推定周辺温度とに従うタイミングで、第1のメモリデバイスの低消費電力状態を解除する。第1のメモリデバイスは、低消費電力状態が解除された場合、誤り検査処理およびリフレッシュ処理を実行する。

発明の効果

[0014]
 本発明によれば、低消費電力状態の不揮発性半導体メモリデバイスの環境が温度が高い環境であったとしてもそのデバイス内の不揮発性半導体メモリのデータの損失を防ぐことができる。

図面の簡単な説明

[0015]
[図1] 図1は、FM(フラッシュメモリ)モジュールの構成を示す。
[図2] 図2は、ストレージ装置を含んだ計算機システムの構成を示す。
[図3] 図3は、ストレージ装置の外観の模式図である。
[図4] 図4は、フラッシュメモリの誤り特性の例を示す。
[図5] 図5は、フラッシュメモリモジュールの周辺温度の時間変化の例を示す。
[図6] 図6は、ストレージコントローラが行う処理のフローチャートを示す。
[図7] 図7は、FMモジュールが行う処理のフローチャートを示す。
[図8] 図8は、再稼働制御表を示す。

発明を実施するための形態

[0016]
 以下の説明では、「インタフェース部」は、1以上のインタフェースデバイスを含む。1以上のインタフェースデバイスは、1以上の同種のインタフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種のインタフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
[0017]
 また、以下の説明では、「記憶部」は、1以上のメモリを含む。記憶部に関して少なくとも1つのメモリは、揮発性メモリでよい。記憶部は、主に、プロセッサ部による処理の際に使用される。
[0018]
 また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサである。1以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。プロセッサ部は、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))を含んでもよい。
[0019]
 また、以下の説明では、「ストレージ装置」は、1以上の物理ストレージ装置である。物理ストレージ装置は、記憶デバイスにデータを格納する機能を有する装置であればよい。このため、物理ストレージ装置は、ファイルサーバのような計算機(例えば汎用計算機)であってもよい。例えば、少なくとも1つの物理ストレージ装置が、仮想的な計算機(例えばVM(Virtual Machine))を実行してもよいし、SDx(Software-Defined anything)を実行してもよい。SDxとしては、例えば、SDS(Software Defined Storage)(仮想的なストレージ装置の一例)又はSDDC(Software-defined Datacenter)を採用することができる。また、例えば、少なくとも1つの物理ストレージ装置(計算機)は、ハイパーバイザを有していてよい。ハイパーバイザが、サーバとして動作するサーバVM(Virtual Machine)と、ストレージとして動作するストレージVMとを生成してよい。サーバVMが、I/O要求を発行するホスト計算機として動作し、ストレージVMが、サーバVMからのI/O要求に応答してFMPKに対するI/Oを行うストレージコントローラとして動作してよい。
[0020]
 また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別する場合は、参照符号を使用することがある。例えば、FMモジュールを区別しない場合には、「FMモジュール100」と言い、FMモジュールを区別する場合には、「FMモジュール100A」、「FMモジュール100B」のように言う。
[0021]
 [1]本発明の一実施形態にかかるストレージ装置を含んだ計算機システムの構成
[0022]
 まず、図2を参照しながら、本発明の一実施形態にかかるストレージ装置を含んだ計算機システムの構成について説明する。
[0023]
 計算機システムは、ストレージ装置200と、ホスト221と、管理端末220と、SAN(Storage Area Network)210とを備える。
[0024]
 ストレージ装置200は、ホスト221から送信された要求(典型的にはリード/ライト要求)を解釈して、ストレージ装置200の記憶領域内のデータのリード/ライトを実行する。ストレージ装置200は、ストレージコントローラ270、複数台のフラッシュメモリモジュール(以降、FMモジュールと称する。)100、および複数のコネクタ(以降、単にコネクタと称する。)260から構成される。ストレージコントローラ270は、ホストI/F(Interface)232、ストレージI/F252、保守I/F230、CPU241、および、メモリ242を備える。I/F232、252および230が、インタフェース部の一例である。メモリ242が、記憶部の一例である。CPU241が、プロセッサ部の一例である。FMモジュール100が、FM(フラッシュメモリ)デバイスの一例である。
[0025]
 ホストI/F232は、ホスト222からのデータや制御コマンドなどを受け付けるインタフェースである。また、ストレージI/F252は、FMモジュール100にデータや制御コマンドを送信するインタフェースである。また、保守I/F230は、管理端末220と接続して、管理端末220からの管理や保守に関する制御コマンド等を受け付けるインタフェースである。
[0026]
 CPU241は、演算処理装置として機能し、メモリ242に記憶されている各種プログラムや演算パラメータ等にしたがって、ストレージ装置200全体の動作を制御する機能を有する。
[0027]
 具体的に、例えば、CPU241は、ストレージ装置200とホスト222との間のユーザデータの入出力(データI/O)を処理する。すなわち、CPU241は、FMモジュール100にユーザデータをライトするためのライトコマンドをそのFMモジュール100に発行する。また、CPU241は、FMモジュール100からユーザデータをリードするためのリードコマンドをそのFMモジュール100に発行する。
[0028]
 また、例えば、CPU241は、FMモジュール100への情報通知やFMモジュール100からの情報取得を行うためのコマンドをFMモジュール100に発行する。FMモジュール100への電源供給の開始や停止も、CPU241が制御する。
[0029]
 メモリ242は、各種プログラムや演算パラメータ等の他、制御情報や管理情報、また、FMモジュール100にライトするユーザデータや、FMモジュール100からリードしたユーザデータを一時的に格納する。
[0030]
 ストレージ装置200に搭載するFMモジュール100の台数は可変でよい。FMモジュール100は、ストレージI/F252とコネクタ260を介して接続され、コネクタ260から電源供給される。また、コネクタ260を介してホスト222から受け付けたデータおよび各制御コマンドがFMモジュール100に入力され、コネクタ260を介してFMモジュール100からデータが出力される。FMモジュール100の内部構成は、図1を用いて後で説明する。なお、本実施形態では、FMモジュール100をストレージ装置200に内蔵した構成としているが、かかる例に限定されず、FMモジュール100がストレージ装置200と分離して配置されてもよい。
[0031]
 ホスト222は、SAN210を介してストレージ装置200と接続され、ストレージ装置200にデータのリード/ライト要求を送信する。また、ホスト222は、CPUおよびメモリ等の情報処理資源を備えたコンピュータ装置であって、例えば、パーソナルコンピュータや、ワークステーション、メインフレームなどから構成される。ホスト222とストレージ装置200との通信は、例えば、SCSI(Small Computer System Interface)などのブロックプロトコルが用いられる。また、ホスト222は、キーボード、スイッチやポインティングデバイス、マイクロフォン等の情報入力装置と、モニタディスプレイやスピーカ等の情報出力装置とを備えていてよい。
[0032]
 管理端末220は、CPUおよびメモリ等の情報処理資源を備えたコンピュータ装置であって、例えば、パーソナルコンピュータや、ワークステーション、メインフレームなどから構成される。CPUは、演算処理装置として機能し、メモリに記憶されているプログラムや演算パラメータ等にしたがって、管理端末220の動作を制御する。また、管理端末220は、キーボード、スイッチやポインティングデバイス、マイクロフォン等の情報入力装置と、モニタディスプレイやスピーカ等の情報出力装置とを備えており、オペレータ等の入力に応じてストレージ装置200等を管理する装置である。
[0033]
 ホスト222、ホストI/F232、ストレージI/F252、保守I/F230、メモリ242、CPU241およびコネクタ260のうちの少なくとも1つの数は、図2に例示の数に限定されない。同様に、コネクタ260、I/F232、252および230の規格は特定のものに限定されない。例えば、SAN210に適用される代表的な規格として、FC(Fibre Channel)、SCSI、iSCSI(internet Small Computer System Interface)、SAS(Serial Attached SCSI)などを例示できる。
[0034]
 [2]フラッシュメモリの特徴と扱い方
[0035]
 FMモジュール100の記憶媒体であるフラッシュメモリの特徴と扱い方について説明する。
[0036]
 フラッシュメモリは、一般に、NAND型フラッシュメモリであり、最小消去単位が最小書き込み単位に比べて大きいという特徴を有する。具体的に、例えば、フラッシュメモリは、複数のブロックで構成されており、各ブロック内に複数(例えば512個)のページが設けられており、ブロック単位でデータが消去され、ページ単位でデータの読み書きが実行される。ページのサイズは例えば16KBバイトである。フラッシュメモリは、その特性上、データを直接上書きすることができない。つまり、フラッシュメモリは、追記型である。すなわち、物理ページ(以下、ページ)が割り当てられている論理領域がライト先の場合、ライト先論理領域に、割当て済のページに代えて新たに空きページが割り当てられ、新たに割り当てられたページにデータが書き込まれる。各論理領域について、最近割り当てられたページに書き込まれているデータ(つまり最新のデータ)は「有効データ」であり、有効データが書き込まれているページは「有効ページ」であり、過去に割り当てられていたページに格納されているデータは「無効データ」であり、無効データが書き込まれているページは「無効ページ」である。また、有効ページでも無効ページでも無く新たにデータを格納可能なページが、「空きページ」である。データを書き換える場合、FMモジュール100は、そのデータを含むブロック内に記憶している全ての有効データを別のブロックに退避させて、元のブロックを消去するリフレッシュ処理を行うことがある。
[0037]
 フラッシュメモリは、ブロックを消去する(ブロックからデータを消去する)回数に制限があるという特徴を有する。データの書き換えが1つのブロックに集中して、当該ブロックの消去回数が保証回数(消去回数の上限)を超えると、データ消去ができなくなることがあり、そのブロックは以降使用不能となってしまい、使用可能なブロック数が減少するという問題がある。そこで、特定のブロックに対する消去処理が集中しないように、書き換え頻度が高いデータを消去回数の多いブロックから少ないブロックに移動するなどして消去回数の平準化処理を行うことが一般に行われる。
[0038]
 また、フラッシュメモリは、一度書き込みしたページについては、データを保持しておくだけでも時間経過とともにデータ誤りが増加していくという特徴を有する。データ誤りが訂正できないことによるデータ損失を回避するため、誤り訂正符号(ECC:Error Correction Code)に基づき、書込み対象のデータのパリティを計算し、書き込み前に付加しておく(これをECC符号化と呼ぶ)。データ誤りが訂正可能な範囲を超えないように、書き込み後一定時間を経過したデータを読み出し、当該パリティを用いてそれを訂正し(これをECC訂正と呼ぶ)、訂正後のデータを別ページに移動して、データ誤りが少ない状態にする(リフレッシュ処理)ことが必要となる。上記の消去回数の平準化を考慮して、リフレッシュ処理では、書き換え頻度が高いデータほど、消去回数の少ないブロックを移動先として選択することが好ましい。
[0039]
 フラッシュメモリを記憶媒体として用いるFMモジュール100は、ブロックの消去回数の平準化や格納データのリフレッシュのために、FMモジュール100の上位装置に提供する論理アドレスと実際のフラッシュメモリ上の記憶領域の物理アドレスとを動的に対応づける。データの書き込みの際に指定される論理アドレスに割り当てる物理アドレスを決定し、論理アドレスと物理アドレスとの対応関係を変更する。これにより上位装置は、新データが書き込まれる物理アドレスを意識する必要はなく、旧データの論理アドレスと同じ論理アドレスに新データを書き込めば、データ更新が可能となる。
[0040]
 [3]FMモジュール100の構成
[0041]
 図1を参照しながら、FMモジュール100の構成について説明する。
[0042]
 FMモジュール100は、ストレージI/F102、メモリコントローラ103、複数チップのNAND型のフラッシュメモリ107、揮発性のメモリであるDRAM(Dynamic Random Access Memory)106、および、温度センサ108で構成される。メモリコントローラ103は、ECC符号化回路104とECC訂正回路105とを含む。
[0043]
 メモリコントローラ103は、ストレージI/F102、フラッシュメモリ107、DRAM106、温度センサ108と接続され、それらを制御するマイクロプロセッサ112を含む。マイクロプロセッサ112は、ストレージI/F102を通じて受信したリード/ライトコマンドの内容解釈、リード/ライトデータの送受信、ECC符号化回路104とECC訂正回路105によるデータの符号化と誤り訂正、フラッシュメモリ107とDRAM106との間のデータ転送を実行する。
[0044]
 ストレージI/F102は、FMモジュール100の外部の装置等と接続するためのインタフェース機構であり、外部から発行されたライトコマンドによってユーザデータを外部から受信したり、外部から発行されたリードコマンドによってユーザデータを外部に送信したりする。
[0045]
 ECC符号化回路104は、メモリコントローラ103内にハードウェア(論理回路)として実装された演算器であり、フラッシュメモリ107に格納するデータに発生する誤りを、あとから訂正できるようにするため、パリティ付きデータを生成する。
[0046]
 ECC訂正回路105は、メモリコントローラ103内にハードウェア(論理回路)として実装された演算器であり、フラッシュメモリ107から読み出されたパリティ付きデータに含まれるデータ誤りを訂正し、訂正されたデータを生成する。
[0047]
 DRAM106は、外部から受信したライトデータを一時的に格納する。また、外部へ送信するリードデータを一時的に格納する。また、フラッシュメモリ107にライトするデータを一時的に格納するライトバッファとして機能する。また、フラッシュメモリ107からリードしたデータを一時的に格納するリードバッファとして機能する。
[0048]
 温度センサ108は、FMモジュール100の内部の温度を測定するために搭載されており、測定した温度をメモリコントローラ103が取得できるように構成される。
[0049]
 メモリコントローラ103は、CPU241によりストレージI/F102外部から発行される温度取得コマンドに応じて、温度センサ108の測定温度と測定時刻を含む温度情報をストレージI/F102外部に出力する。なお、測定時刻とは、FMモジュール100の電源起動時を基準(ゼロ)とした経過時間である。
[0050]
 メモリコントローラ103は、温度センサ108から測定温度の取得を一定の時間間隔で連続的に行う。その間隔(測定周期)は、CPU241によりストレージI/F102外部から発行される測定制御コマンドによって指定する。また、温度取得コマンドで出力される温度情報は、温度ログである。温度ログは、温度の時系列変化を示し、具体的には、1以上の温度時刻セットである。各温度時刻セットは、最後に温度取得コマンドを発行した時刻以降に温度センサ108で測定された温度とその測定時刻とのセットである。測定時刻は、測定制御コマンドによって指定された測定周期に従う。
[0051]
 [4]ストレージ装置200の物理構造
[0052]
 図3は、ストレージ装置200の外観の模式図である。
[0053]
 ストレージコントローラ270は、物理筐体300内の後方側に配置されており、その前方側にはFMモジュール100と接続するための複数のコネクタ260が横方向(左右方向)に並んで設置されている。物理筐体300の前面側からFMモジュール100を手で引いたり押したりすることで、そのFMモジュール100のコネクタ260に対する抜き差しが可能である。
[0054]
 FMモジュール100への電源供給の開始や停止は、そのFMモジュール100がコネクタ260の1つに接続された状態でも可能である。すなわち、FMモジュール100を物理的に抜き出さなくともそれへの電源供給を停止できるよう構成されている。ストレージ装置200は、消費電力を抑えるために、アクセスの必要がないFMモジュール100への電源供給を一時的に停止する。例えば、1日1回、データをバックアップするために稼働するFMモジュール100は、バックアップを行う時以外の時間は電源供給を停止していても構わない。また、故障発生時のスペアとして準備しているFMモジュール100は、稼働中のFMモジュール100に故障が発生するまでは電源供給を停止していても構わない。
[0055]
 [5]フラッシュメモリのデータ誤り特性
[0056]
 図4を参照しながら、FMモジュール100に搭載されているフラッシュメモリ107のデータ誤り特性について説明する。
[0057]
 フラッシュメモリ107は、上述のように、リフレッシュ処理を行うことで、データに含まれる誤りを少なくすることができる(メモリセルに故障がない場合はゼロにすることができる)が、リフレッシュ処理後も時間の経過によって、データ誤りはふたたび増加していく。一般に、その増加速度は、データ書込み後のフラッシュメモリ107が置かれている環境の温度が高いほど速いことが知られている。以下、温度として、T1℃、T2℃およびT3℃の3つを例に挙げる(T1<T2<T3)。また、リフレッシュ処理からの経過日数として、D1日間、D2日間およびD3日間の3つを例に挙げる(D1<D2<D3)。
[0058]
 例えば、環境温度がT1℃の場合は、D3日間でデータ誤り率がX th(ECC訂正回路105で訂正可能な誤り率)に達する。環境温度がT2℃の場合は、より短いD2日間でデータ誤り率がX thに達する。環境温度がT3℃の場合は、さらに短いD1日間でデータ誤り率がX thに達する。
[0059]
 [6]FMモジュール100の推定周辺温度(以下、周辺温度)に基づく方針
[0060]
 フラッシュメモリ107が置かれている環境の温度が高い場合には、データ誤りの増加が速くなる。このため、FMモジュール100のメモリコントローラ103は、誤り検査処理と(誤り検査処理においてデータ誤りが見つかった場合の)リフレッシュ処理を行う頻度を上げる。これにより、各メモリブロックが検査される時間間隔が短くなり、フラッシュメモリ107のデータ誤り率がX thを超えないように制御される。誤り検査処理は、対象領域(フラッシュメモリ107における或る物理メモリ領域)から読み出されたデータにおける誤りの数である誤り数を検査する処理である。リフレッシュ処理は、誤り数が所定数以上の場合に誤りが訂正されたデータを対象領域とは別の領域(フラッシュメモリ107における別の物理メモリ領域)に移動する処理である。対象領域は、例えば、リードが高頻度に行わる論理アドレス範囲(フラッシュメモリ107において相対的にリード頻度が高い論理領域)に割り当てられている物理領域である。
[0061]
 しかし、誤り検査処理およびリフレッシュ処理を高頻度に行うことは、FMモジュール100外部からのリード/ライトコマンドを処理するためのプロセッサ資源、メモリ資源、バス帯域を、誤り検査処理およびリフレッシュ処理に奪うことになり、そのため、FMモジュール100のリード/ライト性能を低下させる要因となる。そこで、本実施形態では、フラッシュメモリ107が置かれている環境の温度が低い場合には、メモリコントローラ103は、誤り検査処理およびリフレッシュ処理を行う頻度を適度に下げる。これにより、FMモジュール100のリード/ライト性能を無用に低下させないようにすることができる。
[0062]
 FMモジュール100に電源が供給されている場合は、メモリコントローラ103は、フラッシュメモリ107が置かれている環境の温度を、自身に搭載された温度センサ108によって知ることができる。しかし、FMモジュール100に電源が供給されていない場合、内部のメモリコントローラ103は動作していないため、内部のフラッシュメモリ107が置かれている環境の温度をメモリコントローラ103が直接的に知ることはできない。そこで、本実施形態では、ストレージコントローラ270が、電断FMモジュール(電源供給されていない停止中のFMモジュール)100の環境温度を、稼働FMモジュール(電源供給されているFMモジュール)100の温度センサ108から取得された温度と、電断FMモジュールの位置に対する稼働FMモジュールの相対的な位置とに基づき推定する。具体的には、本実施形態では、電断FMモジュール100の環境温度は、電断FMモジュール100から最も近い(例えば隣接した)稼働FMモジュール100に搭載された温度センサ108から取得された温度に基づく。稼動FMモジュール内の温度センサ108によって測定された温度は、電断FMモジュール100の周辺の温度である。ストレージコントローラ270は、当該温度から、電断FMモジュール100内のフラッシュメモリ107が置かれている環境の温度を推定する。例えば、FMモジュール(電断FMモジュール)100Aに隣接する2つの稼働中のFMモジュール(稼動FMモジュール)100Bと100Cの内部の温度がそれぞれ45℃と44℃だったとすると、それに挟まれた停止中のFMモジュール100A内部の温度は45℃を超えることはないと推定される。
[0063]
 図3において、FMモジュール100Aに隣接するFMモジュール100Bと100Cには電源が供給されているとすると、FMモジュール100Bと100Cの各々において、メモリコントローラ103が温度センサ108によって温度を計測する。FMモジュール100Bと100Cの各々について、温度情報(温度ログ)は、ストレージコントローラ270からの上記の温度取得コマンドに応答して、メモリコントローラ103からストレージコントローラ270に送られる。FMモジュール100Aは、電源がふたたび供給されて起動した場合、停止していた間に自身のフラッシュメモリ107がどのような環境温度下にさらされていたかが不明なため、起動後に誤り検査処理およびリフレッシュ処理をどのくらいの頻度で行えばよいかを判断できない。そのような判断をできないからといって無条件に高頻度で誤り検査処理およびリフレッシュ処理を行うと、上述のようにリード/ライト性能の無用な低下を招く。そこで、ストレージコントローラ270が、FMモジュール100Bと100Cから得た温度情報を用いて、誤り検査処理およびリフレッシュ処理の頻度に関する判断である頻度判断を行なう。FMモジュール100Aは、その判断結果(後述の誤り検査優先度)をストレージコントローラ270から受け取り、その判断結果に基づいて誤り検査処理およびリフレッシュ処理を適度な頻度で行う。なお、FMモジュール100Bと100Cから得た温度情報(例えば、最高温度)に差がある場合は、高いほうの温度を用いて、上述の頻度判断を行う。ただし、FMモジュール100Bと100Cから得た温度情報の扱いは、これに限定されない。ストレージコントローラ270は、両温度の中間値を用いたり、精密な熱伝導計算や、実験から得たモデル式で推定した温度を用いたりしてもよい。
[0064]
 図5は、FMモジュール100Bと100Cから温度取得コマンドで取得した温度情報(温度ログ)の少なくとも1つに従う温度時系列変化の4つのケースを示す。なお、上述のように、温度取得コマンドは、当該コマンドを発行した時の温度を取得するコマンドではなく、最後にFMモジュール100に温度取得コマンドを発行してそのFMモジュール100から温度情報(温度ログ)を取得してからそのFMモジュール100が定期的に測定して蓄えていた温度ログを一括で取得するコマンドである。このため、ストレージコントローラ270が、温度取得のためにコマンドを高頻度にFMモジュール100へ発行する必要がなく、結果として、ユーザデータのリード/ライト処理の性能が低下しないようにすることができる。
[0065]
 ケース500は、FMモジュール100Aが停止中に周辺温度がT3℃以上になることがあったケースである。このケースでは、FMモジュール100Aは、起動したら直ちに誤り検査処理およびリフレッシュ処理を行うことが望ましい。
[0066]
 ケース510は、FMモジュール100Aが停止中に周辺温度がT1℃以上になることはなかったケースである。このケースは、データ誤りが最も発生しにくいケースである。このため、このケースでは、FMモジュール100Aの停止日数(電源供給されていないで停止していた日数)は、許容される最長日数であるD3日間でよい。
[0067]
 ケース520は、FMモジュール100Aが停止中に周辺温度がT3℃以上になることがなかったがT1℃以上になることがあり、平均はT2℃未満だったというケースである。このケースでは、FMモジュールの停止日数は、D2日間でよい。
[0068]
 ケース530は、FMモジュール100Aが停止中に周辺温度がT3℃以上になることがなかったがT1℃以上になることがあり、平均はT2℃以上だったというケースである。このケースでは、FMモジュールの停止伊日数は、D1日間でよい。
[0069]
 本実施形態にかかるフラッシュメモリは、T3℃以上の環境温度下に置かれるとデータ誤りが速い速度で増える。ゆえに、ストレージコントローラ270は、ケース500については、搭載されているフラッシュメモリに対して、起動後の誤り検査処理およびリフレッシュ処理をできるだけ早く終えるべきと判断する。
[0070]
 図4の特性グラフから、T1℃の環境温度下では、リフレッシュ処理してから少なくともD3日間はデータ誤り率が訂正可能な範囲である。ゆえに、ストレージコントローラ270は、ケース510については、フラッシュメモリが終始T1℃未満の温度下に置かれていたことから、起動後の誤り検査処理およびリフレッシュ処理は、前回のリフレッシュ処理からD3日間経過するまでに終えればよいと判断する。
[0071]
 図4の特性グラフから、T2℃の環境温度下では、リフレッシュ処理してから少なくともD2日間はデータ誤り率が訂正可能な範囲である。ゆえに、ストレージコントローラ270は、ケース520については、フラッシュメモリがT3℃以上に達しない平均T2℃未満の温度下に置かれていたことから、起動後の誤り検査処理およびリフレッシュ処理は、前回のリフレッシュ処理からD2日間経過するまでに終えればよいと判断する。
[0072]
 図4の特性グラフから、T3℃の環境温度下では、リフレッシュ処理してから少なくともD1日間はデータ誤り率が訂正可能な範囲である。ゆえに、ストレージコントローラ270は、ケース530については、フラッシュメモリがT3℃以上に達しない平均T2℃以上の温度下に置かれていたことから、起動後の誤り検査処理およびリフレッシュ処理は、前回のリフレッシュ処理からD1日間経過するまでに終えればよいと判断する。
[0073]
 [7]FMモジュールへの電源供給を停止および再開する際にストレージコントローラが行う処理
[0074]
 図6は、ストレージコントローラ270が、FMモジュール100に対する電源供給を停止し、ふたたび開始する際に行う処理のフローチャートを示す。
[0075]
 ストレージコントローラ270は、省電力のため、しばらくの間利用する予定がないFMモジュール100Aに対する電源供給を停止する(S601)。そして、FMモジュール100Aに隣接する稼働中のFMモジュール100Bおよび100Cの各々について、温度取得コマンドを発行することによって、温度情報(温度ログ)を取得する(S602)。
[0076]
 次に、ストレージコントローラ270は、S602で取得された温度情報を用いて、FMモジュール100Aの電源停止以来の平均周辺温度を算出し(S603)、また、FMモジュール100Aの電源停止以来の最高周辺温度を記録する(S604)。なお、平均周辺温度は、FMモジュール100Aの電源停止以来の複数の周辺温度(FMモジュール100Aの電源供給停止からの経過時間における複数の周辺温度)に基づく温度の一例である。平均周辺温度に代えて、複数の温度の中央値が採用されてもよい。
[0077]
 S603の最高周辺温度がT3℃以上ならば(S605:YES)、ストレージコントローラ270は、誤り検査優先度を「最高」に設定し(S608)、S612に遷移する。
[0078]
 その最高周辺温度がT3℃以上ではなく、T1℃未満ならば(S605:NOおよびS606:YES)、ストレージコントローラ270は、誤り検査優先度を「低」に設定し(S609)、S612に遷移する。
[0079]
 S603の最高周辺温度がT3℃以上でも、T1℃未満でもなく、S604の平均周辺温度がT2℃未満ならば(S605:NO、S606:NOおよびS607:YES)、ストレージコントローラ270は、誤り検査優先度を「中」に設定し(S610)、S612に遷移する。
[0080]
 S603の最高周辺温度がT3℃以上でも、T1℃未満でもなく、その平均周辺温度がT2℃未満でもないならば(S605:NO、S606:NOおよびS607:NO)、ストレージコントローラ270は、誤り検査優先度を「高」に設定し(S611)、S612に遷移する。
[0081]
 S612では、ストレージコントローラ270は、電源供給を停止しているFMモジュール100Aを再稼動するか否かを判断する。再稼動すべきと判断する条件が満たされた、つまり、再稼働条件が満たされたとは、第1種の条件(現在時刻がFMモジュール100Aの利用を再開する予定時刻になったという条件)と、第2種の条件(FMモジュール100A内のフラッシュメモリ107のデータ誤り率が、FMモジュール100Aを起動して誤り検査処理およびリフレッシュ処理を開始する必要がある状態と推定されるという条件)とのうちの少なくとも1つが満たされたことを意味する。以下の説明では、第2種の条件を、「強制再稼働条件」と言う。
[0082]
 S612の判断結果が真の場合(S612:YES)、ストレージコントローラ270は、S613に遷移する。S612の判断結果が偽の場合(S612:NO)、ストレージコントローラ270は、ふたたびFMモジュール100Aの周辺温度の取得のためS602に戻る。
[0083]
 S613で、ストレージコントローラ270は、FMモジュール100Aの電源供給を開始する。そして、ストレージコントローラ270は、起動したFMモジュール100Aに、S608~S611で設定した誤り検査優先度と、FMモジュール100Aが停止していた日数である停止日数とをコマンドで通知する(S614)。さらに、ストレージコントローラ270は、FMモジュール100Aから高頻度にリードされるデータが格納されている論理アドレス範囲(例えば、FMモジュール100Aが提供する論理アドレス空間のうち相対的にリード頻度が高い(例えば最もリード頻度が高い)論理アドレス範囲)を示す情報である論理アドレス範囲情報をコマンドで通知する(S615)。FMモジュール100Aは、これらの誤り検査優先度、停止日数、および論理アドレス範囲情報を含んだ制御情報に従う制御を行う。
[0084]
 [8]電源供給が再開されたFMモジュールが行う処理
[0085]
 図7は、上記S613で電源供給が再開されたFMモジュール100Aが起動時に行う処理のフローチャートを示す。
[0086]
 FMモジュール100A内のメモリコントローラ103は、電源供給の再開に応じてパワーアップ起動処理を行う(S701)。「パワーアップ起動処理」とは、FMモジュール100Aが外部からコマンドアクセスができるようにするのに必要な初期化処理である。この初期化処理の結果、外部からのコマンドに応じた処理が可能となる。
[0087]
 次に、メモリコントローラ103は、上記S614およびS615における誤り検査優先度と論理アドレス範囲情報を通知するコマンドに応じて、それらの情報に基づいた誤り検査スケジュールを決定する(S702)。誤り検査スケジュールは、どのようなタイミングでフラッシュメモリ107の領域に対して誤り検査するかを示した処理計画である。ただし、誤り検査対象の領域としては、S615の論理アドレス範囲情報が示す論理アドレス範囲に割り当てられた物理アドレスが示す領域が優先的に(例えば最初に対象とされる領域として)選択される。リード頻度が高いデータを早いうちに誤り検査処理およびリフレッシュ処理することで、リードされたときに検出される誤りの数が少なくなっている可能性が高い。誤り訂正符号として、本実施形態では、LDPC(Low-Density Parity-Check)符号が採用される。現在、LDPC符号は、BCH符号に比べて訂正能力が高いが、誤りの数が多いほど訂正に時間がかかるという特徴がある。この優先選択により、リード対象データの誤り訂正にかかる時間の確率的な期待値が減少する。したがって、FMモジュール100Aの起動後のリードコマンドの応答性能が向上する。
[0088]
 S702のあと、メモリコントローラ103は、S702で決定された誤り検査スケジュールに応じて、誤り検査処理およびリフレッシュ処理を行う。この処理の実行は、FMモジュール100A外部からのコマンドとは非同期である。
[0089]
 メモリコントローラ103は、誤り検査スケジュールに基づき、実行すべき誤り検査タスクがあるか否かを判断する(S703)。S703の判断結果が偽の場合は(S703:NO)、S707に遷移する。S703の判断結果が真の場合は(S703:YES)、メモリコントローラ103は、フラッシュメモリ107における所定の対象領域(例えば、論理アドレス範囲情報が示す論理アドレス範囲に割り当てられた物理アドレスが示す領域)に対して誤り検査処理を実行する(S704)。もし、誤り検査処理によって対象領域に基準を超えた誤り数を検出した場合は(S705:YES)、メモリコントローラ103は、リフレッシュ処理を実行する(S706)、誤り数が基準以下である場合は(S705:NO)、メモリコントローラ103は、リフレッシュ処理を実施せずにS707に遷移する。
[0090]
 S707では、メモリコントローラ103は、外部から受信されたコマンドがあるか否かを判断する。S707の判断結果が偽の場合は(S707:NO)、メモリコントローラ103は、誤り検査スケジュールに応じた次の誤り検査処理のためにS703に戻る。S707の判断結果が真の場合は(S707:YES)、メモリコントローラ103は、そのコマンドに応じた処理(例えば、データのリードやライト)を実行する(S708)。コマンド処理が終わったらS703に戻る。
[0091]
 以上のように、メモリコントローラ103は、外部からの受信コマンドに応じた処理を行うのと非同期に、フラッシュメモリ107に対する誤り検査処理およびリフレッシュ処理を行う。
[0092]
 [9]強制再稼動条件と誤り検査スケジュール
[0093]
 図8は、制御表を示す。
[0094]
 再稼働制御表800は、強制再稼働条件と誤り検査スケジュールとの関係を示す論理的な表である。具体的には、本実施形態では、優先度条件810と時期的条件820とを含んだ表が、ストレージコントローラ270(例えばメモリ242)により保持され、優先度条件810とスケジュール830とを含んだ表が、各FMモジュール100のメモリコントローラ103(例えばDRAM106)により保持される。複数の強制再稼働条件の各々は、優先度条件810と時期的条件820とを含む。強制再稼働条件は、低消費電力状態を解除する条件である解除条件の一例である。誤り検査優先度は、周辺温度の変化が適合した条件から一意的に決まるため、優先度条件810は、温度条件と呼ぶこともできる。
[0095]
 優先度条件810は、誤り検査優先度としての条件を示す情報である。時期的条件820は、誤り検査処理およびリフレッシュ処理を開始するために強制的に再稼動するための時期的な条件を示す情報である。スケジュール830は、誤り検査スケジュールを示す情報である。
[0096]
 図8に例示の再稼働制御表800によれば、ストレージコントローラ270は、以下の処理を行う。
[0097]
 すなわち、誤り検査優先度が「最高」である場合は、ストレージコントローラ270は、S612でFMモジュール100Aをいますぐ再稼動と判断する。また、再稼動したFMモジュール100A内のメモリコントローラ103は、通知された誤り検査優先度「最高」に応じて、フラッシュメモリ107に対する誤り検査処理およびリフレッシュ処理を可能な限り早く完了させるように誤り検査スケジュールを決定する。具体的には、例えば、メモリコントローラ103は、上記のS703では常にタスクありとしてS704に遷移し、誤り検査処理を早期に完了させる。
[0098]
 ストレージコントローラ270は、誤り検査優先度が「高」である場合は、S612でFMモジュール100Aの停止日数Pが(D1-K)日以上であるならば再稼動と判断する。Kは、D1未満の自然数、例えば、誤り検査処理およびリフレッシュ処理にかかる日数として見積られた日数でよい。また、再稼動したFMモジュール100A内のメモリコントローラ103は、通知された誤り検査優先度「高」に応じて、フラッシュメモリ107に対する誤り検査処理およびリフレッシュ処理を(D1-P)日間で完了させるように誤り検査スケジュールを決定する。例えば、P=1ならば、データは少なくともあと(D1-1)日間は誤り訂正可能な状態であるので、その間に誤り検査が終わればよい。
[0099]
 ストレージコントローラ270は、誤り検査優先度が「中」である場合は、S612でFMモジュール100Aの停止日数Pが(D2-K)日以上であるならば再稼動と判断する。また、再稼動したFMモジュール100A内のメモリコントローラ103は、通知された誤り検査優先度「中」に応じて、フラッシュメモリ107に対する誤り検査処理およびリフレッシュ処理を(D2-P)日間で完了させるように誤り検査スケジュールを決定する。例えば、P=5ならば、データは少なくともあと(D2-5)日間は誤り訂正可能な状態であるので、その間に誤り検査が終わればよい。
[0100]
 ストレージコントローラ270は、誤り検査優先度が「低」である場合は、S612でFMモジュール100Aの停止日数Pが(D3-K)日以上であるならば再稼動と判断する。また、再稼動したFMモジュール100A内のメモリコントローラ103は、通知された誤り検査優先度「低」に応じて、フラッシュメモリ107に対する誤り検査処理およびリフレッシュ処理を(D3-P)日間で完了させるように誤り検査スケジュールを決定する。例えば、P=9ならば、データは少なくともあと(D3-9)日間は誤り訂正可能な状態であるので、その間に誤り検査が終わればよい。
[0101]
 以上より、誤り検査処理およびリフレッシュ処理のスケジュールが、必要以上に忙しくならないように制御される。そのため、FMモジュール100Aが外部から受けるコマンドの処理にかけられるリソース(例えば、プロセッサリソース、メモリリソース、バス帯域)が、無用に誤り検査処理およびリフレッシュ処理に奪われなくなる。ゆえに、FMモジュール100Aの外部から見えるコマンド処理性能は向上する。
[0102]
 強制再稼動する上でのPの条件は、誤り検査処理が完了するのに許容される日数が少なくともK日間はあるように設定したものである。フラッシュメモリ107の規模が大きい場合は、完了に長い時間がかかるので、Pの条件式の右辺の値を小さくして、許容日数を増やすことが好ましい。
[0103]
 フラッシュメモリ107のデータ誤りが増加する速さは、フラッシュメモリ107の書き換え回数が増えるにつれて速くなる傾向かあるので、誤り検査の完了期限の上限値(スケジュール830に関するD1、D2およびD3)は、フラッシュメモリ107の平均書き換え回数が多くなるにしたがって大きく設定することが好ましい。
[0104]
 [10]その他の実施形態
[0105]
 これまで本発明の一実施形態について説明してきたが、その他の実施形態をとることもできる。
[0106]
 上記実施形態では、メモリコントローラ103は、CPU241からFMモジュール100に発行される誤り検査優先度通知コマンドによって誤り検査優先度を取得し、それに基づいて誤り検査スケジュールを立てる。これとは異なる実施形態として、例えば、CPU241からFMモジュール100Aに温度通知コマンドを発行するように構成する。FMモジュール100Aは、そのコマンドで他のFMモジュール310や330で測定された温度のログ情報を受け取る。FMモジュール100Aのメモリコントローラ103は、その情報を用いて図6のフローチャートのS603~S611に示す判定処理をストレージコントローラ270に代わって行い、誤り検査優先度を決定し、それに基づいて誤り検査スケジュールを立てる。
[0107]
 上記実施形態では、FMモジュール100内部に温度センサ108が搭載されている。これとは異なる実施形態として、温度センサがFMモジュール100外部にあってもよい。例えば、ストレージコントローラ270のコネクタ260付近に複数の温度センサを横方向に並べて設置し(例えば、FMモジュール100の配列方向に沿って複数の温度センサを設置し)、ストレージコントローラ270が各FMモジュール100の周辺温度を測定してもよい(例えば、或る温度センサが測定した温度を、その温度センサに対応したFMモジュール100の周辺温度とみなしてよい)。温度センサとFMモジュール100は、1:1でもよいし、1対多でもよいし、多:1でもよい。
[0108]
 上記実施形態では、停止しているFMモジュール100Aに隣接しているFMモジュールから温度情報を取得する。これとは異なる実施形態として、停止しているFMモジュール100Aの温度状況を十分推定できるならば、隣接していないFMモジュールから温度情報を取得してもよい。
[0109]
 上記実施形態では、利用する予定のないFMモジュール100Aへの電源供給を停止する。これとは異なる実施形態として、FMモジュール100Aへの電源供給を停止せず、FMモジュール100Aをスリープ状態やスタンバイ状態などの低消費電力状態に遷移させ、再稼動の際にはアクティブ状態に遷移させてもよい。すなわち、電源供給の停止は、誤り検査処理およびリフレッシュ処理を行うことができない低消費電力状態とすることの一例でよい。低消費電力状態が解除された場合、FMモジュール100Aは、誤り検査処理およびリフレッシュ処理を行うことができる状態である稼働状態となる。FMモジュール100Bと100Cが、稼働状態の1以上のFMモジュール100の一例でよい。
[0110]
 また、FMモジュール100A内のメモリコントローラ103に代わって、ストレージコントローラ270が、誤り検査優先度に応じた誤り検査スケジュールを決定してよい。この場合、ストレージコントローラ270が、再稼働制御表800全体を保持してよい。ストレージコントローラ270が、決定した誤り検査スケジュールを含んだ制御情報をFMモジュール100Aに通知する。この制御情報は、誤り検査スケジュールの決定に必要な誤り検査優先度および停止日数を含んでいなくてよい。FMモジュール100A内のメモリコントローラ103が、通知された制御情報内の誤り検査スケジュールに応じて誤り検査処理およびリフレッシュ処理を行う。
[0111]
 また、ストレージコントローラ270からFMモジュール100Aへの制御情報は、論理アドレス範囲情報を含んでいなくてもよい。言い換えれば、FMモジュール100Aが、FMモジュール100Aが提供する論理アドレス空間のうち、相対的にリード頻度の高い論理アドレス範囲を示す情報を保持していてよい。

符号の説明

[0112]
 100…FMモジュール

請求の範囲

[請求項1]
 複数の不揮発性半導体メモリを有する複数のデバイスである複数の不揮発性半導体メモリデバイスに接続された1以上のインタフェースを含むインタフェース部と、
 1以上のメモリを含む記憶部と、
 前記インタフェース部および前記記憶部に接続された1以上のプロセッサを含むプロセッサ部と
を有し、
 前記プロセッサ部は、誤り検査処理およびリフレッシュ処理を行うことができない低消費電力状態の第1の不揮発性半導体メモリデバイスが低消費電力状態にされてからの経過時間と、その経過時間における前記第1の不揮発性半導体メモリデバイスの推定周辺温度とに従うタイミングで、前記第1の不揮発性半導体メモリデバイスの低消費電力状態を解除し、
 前記誤り検査処理は、前記第1の不揮発性半導体メモリデバイス内の不揮発性半導体メモリにおける第1領域から読み出されたデータにおける誤りの数である誤り数を検査する処理であり、
 前記リフレッシュ処理は、前記誤り検査処理において特定された誤り数が所定数以上の場合に、誤りが訂正されたデータを、前記第1の不揮発性半導体メモリデバイス内の前記不揮発性半導体メモリにおける第2領域に移動する処理であり、
 前記第1の不揮発性半導体メモリデバイスは、前記複数の不揮発性半導体メモリデバイスのいずれかであり、
 前記第1の不揮発性半導体メモリデバイスは、低消費電力状態が解除された場合、前記誤り検査処理および前記リフレッシュ処理を実行するようになっている、
ストレージ装置。
[請求項2]
 前記プロセッサ部は、前記経過時間における前記推定周辺温度が、複数の温度条件のうちのいずれの温度条件に適合するかを特定し、
 前記タイミングは、前記経過時間と、複数の時期条件のうち前記特定された温度条件に対応した時期条件とに従うタイミングである、
請求項1記載のストレージ装置。
[請求項3]
 前記複数の温度条件は、
  前記経過時間における最高の推定周辺温度が第1の温度以上であることを意味する第1の温度条件と、
  前記最高の推定周辺温度が第2の温度未満であることを意味する第2の温度条件と
を含み、
 前記第2の温度は、前記第1の温度よりも低い温度である、
請求項2記載のストレージ装置。
[請求項4]
 前記複数の温度条件は、更に、
  前記経過時間における複数の推定周辺温度に基づく温度が第3の温度未満であることを意味する第3の温度条件と、
  前記複数の推定周辺温度に基づく温度が前記第3の温度以上であることを意味する第4の温度条件と
を含む、
請求項3記載のストレージ装置。
[請求項5]
 前記複数の時期条件の少なくとも1つは、前記経過日数が、当該時期条件に対応した温度条件に従う時間と、誤り検査処理が完了するのに許容される時間との差以上であることである、
請求項2記載のストレージ装置。
[請求項6]
 前記複数の不揮発性半導体メモリデバイスは配列されており、
 前記複数の不揮発性半導体メモリデバイスの各々は、前記誤り検査処理および前記リフレッシュ処理を行うことができる稼働状態の場合にその不揮発性半導体メモリデバイス内の温度を測定し、
 前記推定周辺温度は、前記第1の不揮発性半導体メモリデバイス以外の不揮発性半導体メモリデバイスのうちの1以上の第2の不揮発性半導体メモリデバイスにおいて測定された1以上の温度に基づく温度であり、
 前記1以上の第2の不揮発性半導体メモリデバイスの各々は、稼働状態の不揮発性半導体メモリデバイスである、
請求項1記載のストレージ装置。
[請求項7]
 前記第1の不揮発性半導体メモリデバイスの両隣の不揮発性半導体メモリデバイスのうちの少なくとも1つが稼働状態の場合、前記1以上の第2の不揮発性半導体メモリデバイスは、前記両隣の不揮発性半導体メモリデバイスのうちの少なくとも1つである、
請求項6記載のストレージ装置。
[請求項8]
 前記複数の不揮発性半導体メモリデバイスの外に設けられ前記複数の不揮発性半導体メモリデバイスの温度を測定する複数の温度センサを有し、
 前記推定周辺温度は、前記複数の温度センサのうち前記第1の不揮発性半導体メモリデバイスに対応した1以上の温度センサにより測定された1以上の温度に基づく温度である、
請求項1記載のストレージ装置。
[請求項9]
 稼働状態になった前記第1の不揮発性半導体メモリデバイスは、前記誤り検査処理および前記リフレッシュ処理を、前記経過時間と前記経過時間における前記第1の不揮発性半導体メモリデバイスの推定周辺温度とに従うスケジュールである対象スケジュール通りに完了する、
請求項1記載のストレージ装置。
[請求項10]
 前記プロセッサ部は、前記経過時間における前記推定周辺温度が、複数の温度条件のうちのいずれの温度条件に適合するかを特定し、
 前記対象スケジュールは、複数のスケジュールのうち前記特定された温度条件に対応したスケジュールである、
請求項9記載のストレージ装置。
[請求項11]
 前記複数のスケジュールの少なくとも1つは、当該スケジュールに対応した温度条件に従う時間と、前記経過日数との差以下の期間を意味する、
請求項10記載のストレージ装置。
[請求項12]
 前記プロセッサ部は、前記第1の不揮発性半導体メモリデバイスの低消費電力状態を解除する場合、前記経過時間と前記経過時間における前記第1の不揮発性半導体メモリデバイスの推定周辺温度とに従う制御情報を前記第1の不揮発性半導体メモリデバイスに送信し、
 前記第1の不揮発性半導体メモリデバイスは、稼働状態になった場合、前記制御情報に基づき、前記誤り検査処理および前記リフレッシュ処理を実行する、
請求項1記載のストレージ装置。
[請求項13]
 前記制御情報は、前記第1の不揮発性半導体メモリデバイスが提供する論理アドレス空間のうち相対的にリード頻度が高い論理アドレス範囲を示す情報を含み、
 前記第1の不揮発性半導体メモリデバイスは、前記第1の不揮発性半導体メモリデバイス内の不揮発性半導体メモリのうちの、前記論理アドレス範囲に割り当てられている物理領域を、前記誤り検査処理および前記リフレッシュ処理の対象としての物理領域として優先的に選択する、
請求項12記載のストレージ装置。
[請求項14]
 稼働状態になった前記第1の不揮発性半導体メモリデバイスは、前記誤り検査処理および前記リフレッシュ処理を、前記経過時間と前記経過時間における前記第1の不揮発性半導体メモリデバイスの推定周辺温度とに従うスケジュールである対象スケジュール通りに完了し、
 前記プロセッサ部は、前記経過時間における前記推定周辺温度が、複数の温度条件のうちのいずれの温度条件に適合するかを特定し、
 前記制御情報は、
  前記適合した温度条件と、前記経過日数とを示す情報、
または、
  前記対象スケジュールを示す情報
を含む、
請求項12記載のストレージ装置。
[請求項15]
 誤り検査処理およびリフレッシュ処理を行うことができない低消費電力状態の第1の不揮発性半導体メモリデバイスが低消費電力状態にされてからの経過時間と、その経過時間における前記第1の不揮発性半導体メモリデバイスの推定周辺温度とに従うタイミングを特定し、
  前記第1の不揮発性半導体メモリデバイスは、低消費電力状態が解除された場合、前記誤り検査処理および前記リフレッシュ処理を実行する、
  前記第1の不揮発性半導体メモリデバイスは、複数の不揮発性半導体メモリを有する複数のデバイスである複数の不揮発性半導体メモリデバイスのうちのいずれかであり、
  前記誤り検査処理は、前記第1の不揮発性半導体メモリデバイス内の不揮発性半導体メモリにおける第1領域から読み出されたデータにおける誤りの数である誤り数を検査する処理であり、
  前記リフレッシュ処理は、前記誤り検査処理において特定された誤り数が所定数以上の場合に、誤りが訂正されたデータを、前記第1の不揮発性半導体メモリデバイス内の前記不揮発性半導体メモリにおける第2領域に移動する処理であり、
 前記特定したタイミングで、前記第1の不揮発性半導体メモリデバイスの低消費電力状態を解除する、
メモリデバイス制御方法。

図面

[ 図 1]

[ 図 2]

[ 図 3]

[ 図 4]

[ 図 5]

[ 図 6]

[ 図 7]

[ 図 8]