(57)【要約】フラッシュ・ベースの記憶装置とより効果的に通信し、これを管理するために、コンピューティング装置上でデータがどのように使用されているかに関係したオペレーティング・システムの知識を使う、記憶配置システムが本稿において記載される。頻繁に使われないコールド・データは、ホット・データ・クラスターから区別されることができ、摩耗した領域に配置されることができる。一方、頻繁に使用されるホット・データはすぐアクセス可能なままに保たれることができる。ホット・データを一緒に、コールド・データを別個のセクションにクラスタリングすることにより、システムは、摩耗の均一化を実行し、フラッシュ媒体の有用性を長持ちさせることをよりよくできる。クラウドまたは他の記憶でのデータの記憶により、ブロックにおいて書き込むデータを融合させる前に短時間にわたってある位置にデータを知的に持続させることができる。このようにして、本システムは、データがどのように使われてきたかについてのオペレーティング・システムの知識を活用して、効率的な仕方でフラッシュ・ベースの記憶装置上にデータを配置するために使用される。
2014522537.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュ・ベースの記憶装置上の選択された位置にデータを書き込むためのコンピュータ実装される方法であって：
フラッシュ・ベースの記憶装置にデータを書き込む要求を受領する段階と；
前記フラッシュ・ベースの記憶装置に書き込まれるべきデータに関連するアクセスの頻度を評価する段階と；
前記書き込まれるべきデータのために、前記フラッシュ・ベースの記憶装置上のデータ配置位置を、前記データのアクセスの評価された頻度に基づいて選択する段階と；
前記書き込まれるべきデータのための選択されたデータ配置位置を示す配置情報を前記フラッシュ・ベースの記憶装置に送る段階と；
前記フラッシュ・ベースの記憶装置上の選択されたデータ配置位置に要求されたデータを記憶する段階とを含み、
前記諸段階が少なくとも一つのプロセッサによって実行される、
方法。
【請求項２】
前記要求を受領する段階が、フラッシュ・ベースの装置上のデータの配置を管理するために当該方法がファイル・システム・ドライバとして、ファームウェアによってまたは直接ハードウェアにおいて実装されるオペレーティング・システムによって受領される要求を含む、請求項１記載の方法。
【請求項３】
前記要求を受領する段階が、前記書き込まれるべきデータについての、該データの目的を記述する追加的情報を受領することを含む、請求項１記載の方法。
【請求項４】
前記要求を受領する段階が、前記書き込まれるべきデータについての、該データのために必要とされるアクセスの頻度を記述する追加的情報を受領することを含む、請求項１記載の方法。
【請求項５】
前記データの評価が、前記データがどのくらい頻繁に読み出されるかおよび前記データがどのくらい頻繁に書き込まれるかを判別することを含む、請求項１記載の方法。
【請求項６】
前記データの評価が、前記データに関連するファイル・システム位置についての履歴上のアクセス・パターンに基づいて前記データを評価することを含む、請求項１記載の方法。
【請求項７】
前記データの評価が、前記要求とともに受領されるメタ情報に基づいて前記データを評価することを含む、請求項１記載の方法。
【請求項８】
前記データの評価が、よく知られたオペレーティング・システム実装情報に基づいて前記データを評価することを含む、請求項１記載の方法。
【請求項９】
前記配置位置の選択が、前記装置に、前記データのアクセスの評価された頻度を通知し、前記装置が前記データについての位置を選択できるようにすることを含む、請求項１記載の方法。
【請求項１０】
前記配置位置の選択が、頻繁には再び書き込まれないであろうデータについての好適な位置として、摩耗したブロックを同定することを含む、請求項１記載の方法。
【請求項１１】
前記配置位置の選択が、前記フラッシュ・ベースの記憶装置にはそれほど好適でないデータを保持するために別個の二次記憶装置上の位置を選択することを含む、請求項１記載の方法。
【請求項１２】
配置情報を送ることが、該情報を前記装置に、前記ドライブにデータを書き込むコマンドへのパラメータとして提供することを含む、請求項１記載の方法。
【請求項１３】
フラッシュ・ベースの記憶上のデータ配置を使用によって管理するコンピュータ・システムであって：
下記のコンポーネント内に具現されるソフトウェア命令を実行するよう構成されたプロセッサおよびメモリと；
不揮発性データ記憶のために少なくとも何らかのフラッシュ・ベースのメモリを含むフラッシュ・ベースの記憶装置と；
オペレーティング・システムによって受領されるデータを、該データが書き込まれそうな頻度によって評価するデータ評価コンポーネントであって、しばしば書き込まれるデータはホット・データと呼ばれ、低頻度で書き込まれるデータはコールド・データと呼ばれる、データ評価コンポーネントと；
オペレーティング・システムによって読み出されるおよび書き込まれるデータをモニタリングして、データについての履歴使用情報を記憶するデータ・モニタリング・コンポーネントと；
前記装置から利用可能な全位置のうちで前記フラッシュ・ベースの記憶装置に書き込まれるべきデータが書き込まれる一つまたは複数の位置を決定するデータ配置コンポーネントと；
当該システムの他のコンポーネントと前記フラッシュ・ベースの記憶装置との間のインターフェースを提供する記憶通信コンポーネントとを有する、
システム。
【請求項１４】
前記データ評価コンポーネントが、前記データ・モニタリング・コンポーネントによって収集された履歴データ・アクセス情報にアクセスするとともに、特定のデータの目的を記述するオペレーティング・システムによって暗黙的または明示的に供給される個別知識を使う、請求項１３記載のシステム。
【請求項１５】
前記データ配置コンポーネントが、前記データ評価コンポーネントによって決定されたデータの評価を、どこにデータが位置されるべきかを決定するために使い、前記記憶通信コンポーネントを使って、前記ドライブ・ファームウェアまたはハードウェアによって追跡されるドライブ情報にアクセスする、請求項１３記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願はフラッシュ・ベースの記憶装置へのデータ配置の、使用による管理に関する。
【背景技術】
【０００２】
データ記憶ハードウェアは近年大きく変化しており、フラッシュ・ベースの記憶装置がずっと一般的になった。ハードドライブおよび光ディスク・ドライブのような回転媒体は、可動部のない固体ディスク（SSD:  solid-state  disk）ドライブのようなフラッシュ・ベースの記憶によってますます置き換えられつつある。固体ディスクはずっと堅牢であり、以前の媒体には有害であったような多くの型の環境条件に対してずっと耐性をもつ。たとえば、回転媒体は特に、たとえば該回転媒体を含むモバイル・コンピューティング装置が落とされたときに生じうる衝撃に弱い。フラッシュ・ベースの記憶装置はまた、典型的にはずっと高速なアクセス時間を有し、該記憶装置の各領域は一様なレイテンシーでアクセスできる。回転媒体は、データが記憶されているのが中央スピンドル（ディスクがより高速に回転するところ）にどのくらい近いかによって異なるスピード特性を示す。他方、SSDは、所与のメモリ位置にアクセスするのに固定した長さの時間を有し、伝統的なシーク時間（これは回転媒体について読み取りヘッドを動かす時間をいう）をもたない。
【０００３】
残念ながら、SSDは、どのように読み出され、書き込まれ、特に消去されるかに関する限り、新たな限界を導入する。典型的なフラッシュ・ベースの記憶は、一時に一ブロックでしか消去できない。ただし、ブロック内の重ならないビットは任意の時点でセットできる。典型的なコンピューティング・システムでは、オペレーティング・システムは、第一の組のデータをSSDページに書き込み、ユーザーまたはシステムが該データを修正する場合は、オペレーティング・システムはページ全体またはデータの一部を新たな位置に書き直すか、あるいはブロック全体を消去してそのページの内容全体を改めて書き込む。SSD寿命は、ブロックが、ドライブのその領域がもはやデータ完全性を維持できなくなる（または少なくとも効果的に消去および再書き込みできなくなる）前に消去できる平均回数によって決定される。オペレーティング・システムによるブロックおよびページの繰り返される消去および再書き込みはSSDの寿命切れを早めるばかりである。
【０００４】
SSDを長持ちさせる助けとなるいくつかの技法が導入されている。たとえば、今では多くのドライブが、ドライブのファームウェアが各ブロックがほぼ同じ回数消去されるようにする仕方でデータを記憶すべき位置を選択する摩耗の均一化（wear  leveling）を内部的に実行している。これは、ドライブが、該ドライブの他の領域が使われない間に一つの領域が酷使されること（これは、時間とともにドライブが小さくなっていくように見えることまたは完全に故障することにつながりうる）に起因して故障することがないことを意味する。さらに、SSDがいつ消去するかを決定できるよう、オペレーティング・システムがSSDにデータのどのブロックがもはや使われていないかを知らせることができるようにするTRIMコマンドが、先進技術アタッチメント（ATA:  Advanced  Technology  Attachment）規格に導入された。皮肉なことに、どの型のディスク・ドライブであれ、どのブロックが使われているかを知らない。これは、オペレーティング・システムがデータを書き込み、次いでしばしば、それが削除されていることを示すフラグをファイル・システム・レベルでマークするだけだからである。ドライブは典型的にはファイル・システムを理解しないので、ドライブはファイル・システムによって使用中のブロックを、ファイル・システムによってデータが削除済みとマークされたためにもはや使われていないブロックから区別することはできない。TRIMコマンドは、この情報をドライブに提供する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
これらの技法は助けになるものの、相変わらずドライブがほとんど自分で何とかすることに頼っており、ドライブ寿命を延ばすためにドライブの外での知的な判断を許容するようなドライブとオペレーティング・システムとの間の十分な連絡を提供しない。
【課題を解決するための手段】
【０００６】
フラッシュ・ベースの記憶装置とより効果的に通信し、これを管理するために、コンピューティング装置上でデータがどのように使用されているかに関係したオペレーティング・システムの知識を使う、記憶配置システム（storage  placement  system）が本稿において記載される。摩耗の均一化は、SSDによって使用されるフラッシュ・メモリを長持ちさせ、パフォーマンスを改善することにおける重要な役割を果たすものとして、ホット・データおよびコールド・データの識別および配置技法に焦点を当てる、SSDにおける論点である。頻繁に使われないコールド・データは、ホット・データ・クラスターから区別されることができ、その後、フラッシュ媒体の摩耗した領域に配置されることができる。一方、頻繁に使用されるホット・データはすぐアクセス可能なままに保たれることができる。ホット・データを一緒に、コールド・データを別個のセクションにクラスタリングすることにより、システムは、摩耗の均一化を実行し、フラッシュ媒体の有用性を長持ちさせることをよりよくできる。ブロックにおいて書き込むデータを融合させる前に短時間にわたってある位置にデータを知的に持続させるために、クラウドまたは他の記憶でのデータの記憶が使用されることもできる。ホット・データは、より近くに記憶されることもできる。一方、コールド・データはより遠く離れたところに記憶されてもよい。このように、記憶配置システムは、データがどのように使われてきたかについてのオペレーティング・システムの知識を活用して、効率的な仕方でフラッシュ・ベースの記憶装置上にデータを配置するために使用される。
【０００７】
この概要は、以下の詳細な説明においてさらに述べられる、簡略化された形での概念のセレクションを紹介するために提供されている。この概要は、特許請求される主題の鍵となる特徴や本質的な特徴を特定することは意図されておらず、特許請求される主題の範囲を限定するために使われることも意図されていない。
【図面の簡単な説明】
【０００８】
【図１】ある実施形態での、記憶配置システムの構成要素を示すブロック図である。
【図２】ある実施形態での、フラッシュ・ベースの記憶装置上の選択された位置にデータを書き込むための、記憶配置システムの処理を示す流れ図である。
【図３】ある実施形態での、フラッシュ・ベースの記憶装置上に書き込まれるべきデータについての配置位置を選択するための、記憶配置システムの処理を示す流れ図である。
【図４】ある実施形態での、フラッシュ・ベースの記憶ドライブの、可能性のあるドライブもしくは位置の寿命切れに対処するための、記憶配置システムの処理を示す流れ図である。
【発明を実施するための形態】
【０００９】
本稿では、フラッシュ・ベースの記憶装置とより効果的に通信し、これを管理するために、コンピューティング装置上でデータがどのように使用されているかに関係したオペレーティング・システムの知識を使う、記憶配置システム（storage  placement  system）が記載される。摩耗の均一化は、SSDによって使用されるフラッシュ・メモリを長持ちさせ、パフォーマンスを改善することにおける重要な役割を果たすものとして、ホット・データおよびコールド・データの識別および配置技法に焦点を当てる、SSDにおける論点である。頻繁には使われないコールド・データは、ホット・データ・クラスターから区別されることができ、その後、フラッシュ媒体の摩耗した領域に配置されることができる。一方、頻繁に使用されるホット・データはすぐアクセス可能なままに保たれることができる。ホット・データを一緒に、コールド・データを別個の諸セクションにクラスタリングすることにより、システムは、摩耗の均一化を実行し、フラッシュ媒体の有用性を長持ちさせることをよりよくできる。
【００１０】
固体ドライブ（SSD）における摩耗の均一化は、メモリをリサイクルし、フラッシュ・ベースの記憶装置の寿命を延ばすために使われる。摩耗の均一化なしでは、高度に書き込まれる位置が素早く摩耗し果て、一方他の位置はめったに使われないはめになりかねない。参照の位置性を解析することによって、ホット・データおよびコールド・データが同定され、摩耗を最小限にするようメモリ内で戦略的に配置されることができる。一つのアプローチは、使用されているメモリおよび空いているメモリを判別するためにビットマップを利用するブロック・クラスタリングを使うことである。システムは、ブロックが消去された回数のカウントをつけてもよい。消去カウントが安全な閾値に近づくと、ますますコールドなデータがこれらのブロックに移されることができる。使用されているクラスターはマークされ、そのクラスターがリサイクル可能であれば、そのクラスターはある値をマークされることができ、使用不能であれば別の値をマークされることができる。次いで、コールド・データは「温かい」領域にパークされることができる。さらに、システムは、知的にデータを動かす技法を提供する。ホット・データを一緒にクラスタリングすることは、ガーベジ・コレクション（garbage  collection）を簡単にする助けとなり、システムが再使用のためのメモリのクラスターを同定するのを助ける。ブロックにおいて書き込むデータを融合させる前に短時間にわたってある位置にデータを知的に持続させるために、クラウドまたは他の記憶でのデータの記憶が使用されることもできる。ホット・データは、より短いレイテンシーでアクセス可能な位置に記憶されることもできる。一方、コールド・データはより長いレイテンシーでアクセス可能な位置に記憶される（たとえば、頻繁にはアクセスされないコールド・データはより遠く離れたデータ・センターに記憶されてもよい）。このように、記憶配置システムは、データがどのように使われてきたかについてのオペレーティング・システムの知識を活用して、効率的な仕方でフラッシュ・ベースの記憶装置上にデータを配置するために使用される。
【００１１】
図１は、ある実施形態での、記憶配置システムの構成要素を示すブロック図である。システム１００は、フラッシュ・ベースの記憶装置１１０と、データ評価（qualification）コンポーネント１２０と、データ・モニタリング・コンポーネント１３０と、データ配置コンポーネント１４０と、記憶通信コンポーネント１５０と、二次記憶コンポーネント１６０と、障害管理コンポーネント１７０とを含む。これらのコンポーネントのそれぞれは、本稿でさらに詳細に述べる。
【００１２】
フラッシュ・ベースの記憶装置１１０は、少なくとも何らかのフラッシュ・ベースの不揮発性メモリを含む記憶装置である。フラッシュ・ベースのメモリ・デバイスはSSD、ユニバーサル・シリアル・バス（USB）ドライブ、マザーボードに組み込まれた記憶、モバイル・スマートフォンに組み込まれた記憶および他の形の記憶を含むことができる。フラッシュ・ベースの記憶装置は典型的にはNANDまたはNORフラッシュを含むが、他の形の不揮発性のランダム・アクセス・メモリ（RAM）を含むこともできる。フラッシュ・ベースの記憶装置は、高速のアクセス時間、ブロック・ベースの消去およびページ毎に実行できる有限の量の重ならない書き込みを特徴とする。もはや書き込みができなくなったフラッシュ・ドライブは、寿命が切れたまたは故障したと言われる。
【００１３】
データ評価コンポーネント１２０は、データが書き込まれるであろう度合いを特徴付けるために、オペレーティング・システムによって受領されたデータを評価する。ここで、頻繁に書き込まれるデータはホット・データと呼ばれ、書き込まれる頻度が低いデータはコールド・データと呼ばれる。データは、どのように読まれるかによっても評価されてもよい。頻繁に読まれるデータを、読まれる頻度が低いデータとは異なる位置に配置することが望ましいときがあるからである。非常にまれにしか読まれないデータは、コンピューティング装置のローカル・ドライブ上で余地を空けるために光ディスクまたはクラウド・ベースの記憶サービスといった外部記憶設備に移すいい候補とさえなりうる。データ評価コンポーネント１２０は、データ・モニタリング・コンポーネント１３０によって取得された履歴データ・アクセス情報にアクセスするとともに、特定のデータの目的についてオペレーティング・システムによって暗黙的または明示的に供給される特定知識を使ってもよい。たとえば、ファイル・アロケーション・テーブル（FAT:  File  Allocation  Table）ファイル・システムでは、ファイル・アロケーション・テーブル自身が非常に頻繁に（すなわち他のデータが触れられるたびに）書き込まれ、よってオペレーティング・システムはどんなFATフォーマットされたドライブも非常に頻繁に更新されるデータを含んでいる記憶領域をもつことを知っている。他のファイル／位置については、データ評価コンポーネント１２０は、データがホットに書き込まれるデータまたはコールドに書き込まれるデータ（あるいはホットに読み出されるデータまたはコールドに読み出されるデータ）のどちらでありそうかを決定し、しかるべくデータ配置コンポーネント１４０に知らせるために、ファイル修正回数（file  modification  times）、ファイル・メタデータ、他のデータ目的情報などを使ってもよい。
【００１４】
データ・モニタリング・コンポーネント１３０は、オペレーティング・システムによって読み出されるおよび書き込まれるデータをモニタリングし、データについての履歴使用情報を記憶する。データ・モニタリング・コンポーネント１３０は、さまざまな条件のもとでさまざまな時点でどのファイルが使用されるか、どの諸ファイルがしばしば一緒にアクセスされるか、特定のデータ・ファイルがどのくらい重要もしくは回復可能（recoverable）であるか、などをモニタリングしてもよい。データ・モニタリング・コンポーネント１３０は履歴使用情報をデータ評価コンポーネント１２０に提供し、データ評価コンポーネント１２０がデータをその書き込みおよび／または読み出し特性に基づいてホットまたはコールドとして性格付けすることができるようにする。データ・モニタリング・コンポーネント１３０およびシステム１００の他のコンポーネントはオペレーティング・システム内で、たとえばファイル・システム層においてドライバまたはファイル・システム・フィルタとして動作してもよい。
【００１５】
データ配置コンポーネント１４０は、フラッシュ・ベースの記憶装置１１０から利用可能な全位置のうちから、記憶装置１１０に書き込まれるべきデータが書き込まれる一つまたは複数の位置を決定する。データ配置コンポーネント１４０はどこにデータが位置されるかを決定するためにデータ評価コンポーネント１２０によって決定されたデータの評価を使う。データ配置コンポーネント１４０は、ドライブ・ファームウェアによって追跡される摩耗の均一化またはカウントのようなドライブ情報にアクセスするために記憶通信コンポーネント１５０を使ってもよい。次いで、データ配置コンポーネント１４０は、ドライブの長寿および書き込まれるべきデータについて適切なパフォーマンスのレベルの両方のために良好な位置を選択する。たとえば、データがコールド・データと評価され、ドライブがいくつかの非常に摩耗したブロックを含んでいる場合、コンポーネント１４０はそのコールド・データを摩耗したブロックに配置することを選んでもよい。それにより、他のそれほど摩耗していないブロックはより頻繁に書き込まれる必要のあるデータのためにリザーブされることができる。いくつかの場合には、ドライブのブロックが寿命の終わり（すなわちさらなる書き込みを扱えない）に近づきつつあるとき、オペレーティング・システムは、最後にもう一回その位置に書き込まれ、再び動かされない読み出し専用データ（たとえば、まれにしか更新されないオペレーティング・システム・ファイル）を同定することができる。より温かいデータについては、コンポーネント１４０はドライブのそれほど摩耗していない領域を、またさらには、データがより静的になったときにフラッシュ・ベースの記憶装置１１０に書き込まれるべきデータが頻繁に変化する間駐在できる二次記憶位置を選択してもよい。
【００１６】
記憶通信コンポーネント１５０は、システム１００の他のコンポーネントとフラッシュ・ベースの記憶装置１１０との間のインターフェースを提供する。記憶通信コンポーネント１５０は、記憶装置にアクセスするために一つまたは複数のオペレーティング・システム・アプリケーション・プログラミング・インターフェース（API）を活用してもよく、シリアルATA（SATA）、パラレルATA（PATA）、USBなどといった一つまたは複数のプロトコルを使ってもよい。コンポーネント１５０はまた、システム１００がフラッシュ・ベースの記憶装置１１０の利用可能な記憶位置およびレイアウトを記述する追加的な情報を取得することを許容する一つまたは複数の装置またはファームウェアによってサポートされる一つまたは複数の独自のもしくは特定的なプロトコルを理解してもよい。
【００１７】
二次記憶コンポーネント１６０はフラッシュ・ベースの記憶装置１１０の外部の記憶を提供する。二次記憶は、別のフラッシュ・ベースの記憶装置、ハードドライブ、光ディスク・ドライブ、クラウド・ベースの記憶サービスまたはデータを記憶する他の施設を含みうる。いくつかの場合には、二次記憶はフラッシュ・ベースの記憶装置１１０とは、異なる、相補的でさえある制限をもちうる。そのため、二次記憶は、フラッシュ・ベースの記憶装置１１０にとってそれほど効率的に記憶されないまたは無用に摩耗を引き起こす何らかのデータにとって良好な選択である。たとえば、オペレーティング・システムは、フラッシュ・ベースの記憶装置に頻繁に書き込む代わりに、ファイル・アロケーション・テーブルまたは他の頻繁に変化するデータを二次記憶装置に記憶することを選んでもよい。もう一つの例として、オペレーティング・システムは、クラウド・ベースの記憶サービスを使ってまれにしか使われないコールド・データを記憶することを選んでもよい。クラウド・ベースの記憶サービスでは、データは、もし要求されることがあったとすると、より遅いが受け入れ可能なレートでアクセスできる。
【００１８】
障害管理コンポーネント１７０は、フラッシュ・ベースの記憶装置１１０がその摩耗限界に近づきつつあるときにフラッシュ・ベースの記憶装置１１０との間のデータのアクセスおよび／または移動を扱う。コンポーネント１７０は、データを、装置１１０のそれほど摩耗していない領域に動かすことにおいて、あるいはデータ損失を避けるためにデータを装置１００からどけることにおいて、ユーザーを支援してもよい。たとえば、ファイルが七年間アクセスされていない場合、コンポーネント１７０は、ユーザーがシステム１００にそのファイルをそれほど摩耗していない位置から削除して他のより有意なデータがその位置に書き込まれることができるようにすることを許容することを提案してもよい。同様に、コンポーネント１７０は、装置１１０の過剰に摩耗した領域にあるより代替が難しいデータのための余地を許容するために削除または移動させることができる、簡単に代替されるファイル（たとえば、光ディスクから再インストールできるオペレーティング・システム・ファイル）をユーザーが位置特定することを支援してもよい。
【００１９】
記憶配置システムが実装されているコンピューティング装置は、中央処理ユニット、メモリ、入力装置（たとえばキーボードおよびポインティング・デバイス）、出力装置（たとえば表示装置）および記憶装置（たとえばディスク・ドライブまたは他の不揮発性記憶媒体）を含みうる。メモリおよび記憶装置は、本システムを実装するまたは可能にするコンピュータ実行可能命令（たとえばソフトウェア）をエンコードされていてもよいコンピュータ可読記憶媒体である。さらに、データ構造およびメッセージ構造は、通信リンク上の信号のようなデータ伝送媒体を介して記憶または伝送されてもよい。インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、ポイントツーポイント・ダイアルアップ接続、携帯電話網などのようなさまざまな通信リンクが使用されてもよい。
【００２０】
本システムの諸実施形態は、パーソナル・コンピュータ、サーバー・コンピュータ、ハンドヘルドもしくはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、プログラム可能な消費者電子装置、デジタル・カメラ、ネットワークPC、ミニコンピュータ、メインフレーム・コンピュータ、上記のシステムまたは装置の任意のものを含む分散コンピューティング環境、セットトップボックス、システムオンチップ（SOC）などを含むさまざまな動作環境において実装されうる。コンピュータ・システムは携帯電話、携帯情報端末、スマートフォン、パーソナル・コンピュータ、プログラム可能な消費者電子装置、デジタル・カメラなどであってもよい。
【００２１】
本システムは、プログラム・モジュールのような、一つまたは複数のコンピュータまたは他の装置によって実行されるコンピュータ実行可能命令の一般的なコンテキストにおいて記述されてもよい。一般には、プログラム・モジュールは特定のタスクを実行するまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。典型的には、プログラム・モジュールの機能は、さまざまな実施形態において所望されるように組み合わされるまたは分散されてもよい。
【００２２】
図２は、ある実施形態での、フラッシュ・ベースの記憶装置上の選択された位置にデータを書き込むための、記憶配置システムの処理を示す流れ図である。
【００２３】
ブロック２１０で始まって、システムはフラッシュ・ベースの記憶装置にデータを書き込む要求を受領する。要求は、ソフトウェア・アプリケーションによって受領されるユーザー要求を起源としていてもよく、次いでフラッシュ・ベース装置上のデータの配置を管理するために記憶配置システムがファイル・システム・ドライバまたは他のコンポーネントとして実装されているオペレーティング・システムによって受領されてもよい。受領された要求は、ファイル・システム内のデータが記憶されている位置のような、データについての何らかの情報を含んでいてもよく、目的、アクセス頻度およびそのデータについて必要とされるアクセスの型（読み出し／書き込み）についての何らかの情報を与えてもよい。たとえば、データが一時ファイルのためにリザーブされているファイル・システム内のある位置に書き込まれる場合、システムは、データが短時間にわたって頻繁に書き込まれ、その後削除されることを予測しうる。同様に、ファイルが「閉じるときに削除」フラグをセットされて開かれる場合には、オペレーティング・システムはそのファイルが暫時使われてその後削除されると結論してもよい。
【００２４】
ブロック２２０に進み、システムはフラッシュ・ベースの記憶装置に書き込まれるべきデータに関連するアクセスの頻度を評価する。データが頻繁に書き込まれる場合、それはホット書き込みデータと考えられ、頻繁に読み出される場合にはホット読み出しデータと考えられ、低頻度で書き込まれる場合にはコールド書き込みデータと考えられ、低頻度で読み出される場合はコールド読み出しデータと考えられる。システムは、頻繁な書き込みがフラッシュ・ブロックの寿命切れのような問題を引き起こさない位置にホット・データを書き込み、コールド・データは該データが好適に駐在できるところ（潜在的には、他のデータには不適な使い古したブロック）に書き込むことを好む。システムは、データを、そのデータに関連するファイル・システム位置に対する履歴アクセス・パターンに基づいて、前記要求とともに受領される情報に基づいて、よく知られたオペレーティング・システム実装情報に基づいて、などで評価してもよい。
【００２５】
ブロック２３０に進み、システムは、書き込まれるべきデータについてフラッシュ・ベースの記憶装置上のデータ配置位置を選択する。位置は、装置のアドレス空間内の位置のメモリ・アドレスまたは他の識別情報として与えられてもよい。いくつかの場合には、システムはドライブに、データがホットであるか、コールドであるか、何らかの中間であるかを通知し、ドライブがそのデータについての位置を選択することを許容してもよい。それに関わりなく、システムは、ドライブへのデータ配置を選択することに関連する少なくとも何らかのヒントを提供する。データ配置コンポーネントは、摩耗したブロックを、再び書き込まれることがもしあったとしても長い時間にわたって再び書き込まれないであろうデータについての好適な位置として同定してもよく、頻繁に書き込まれるべきデータについてはかなり未使用のブロックを選択してもよい。代替的または追加的に、システムは別個の二次記憶装置上の位置を、フラッシュ・ベースの記憶装置にそれほど好適でないデータを保持するために選択してもよい。システムは、該装置を無用に摩耗させるホットなデータを他の場所に記憶し、該装置を無用に占有するコールド・データを他の場所に記憶することを選んでもよい。この段階については、本稿で図３を参照してさらに述べる。
【００２６】
ブロック２４０に進み、システムは、配置情報をフラッシュ・ベースの記憶装置に送る。これは、書き込まれるべきデータについての選択されたデータ配置位置を示す。システムは、その情報を前記装置に、ドライブにデータを書き込むコマンドへのパラメータとして、あるいはデータが書き込まれる前にドライブにやがてくるデータについての提案される位置を知らせる別個のコマンドとして、提供してもよい。
【００２７】
ブロック２５０に進み、システムは、要求されたデータを、フラッシュ・ベースの記憶装置上の選択されたデータ配置位置に記憶する。さらに、システムは、このデータについてのメタデータも、フラッシュ・ベースの記憶装置上または二次記憶装置上に記憶する。時間がたつと、システムはそのデータを動かす、あるいは他のデータをそのデータの近くに書き込むことを選択してもよい。たとえば、システムは前に書き込まれたデータとともに、頻繁に使われる他のデータを近隣位置に書き込んでもよいし、あるいは時間がたって初期の選ばれた位置が頻繁な使用によって摩耗したらホット・データをそれほど摩耗していない位置に動かしてもよい。ブロック２５０後、これらのステップは完結する。
【００２８】
図３は、ある実施形態での、フラッシュ・ベースの記憶装置上に書き込まれるべきデータについての配置位置を選択するための、記憶配置システムの処理を示す流れ図である。
【００２９】
ブロック３１０で始まって、システムはフラッシュ・ベースの記憶装置に書き込まれるべきデータのアクセス頻度を性格付ける情報を受領する。たとえば、この情報は、そのデータが頻繁に書き込まれるか低頻度で書き込まれるかを示してもよい。この情報はまた、システムがデータのアクセス頻度を導出または推定できるもとになる、そのデータの目的（たとえば一時ファイル、ユーザー・データ記憶、実行可能なプログラムなど）を示してもよい。
【００３０】
判断ブロック３２０に進み、システムがデータが頻繁に書き込まれるであろうと判定する場合には、システムはブロック３５０に進み、それ以外の場合には、システムはブロック３３０に進む。頻繁に書き込まれるデータはホット・データと称され、前記装置のそれほど摩耗していない位置に配置される。一方、低頻度で書き込まれるデータはコールド・データと称され、前記装置のより摩耗した位置に配置されてもよい。
【００３１】
ブロック３３０に進むと、データが低頻度で書き込まれることを判定すると、システムは、それほど摩耗していない位置を他のデータのために利用可能なままにしておくために、低頻度で書き込まれるデータが駐在できるフラッシュ・ベースの記憶装置の一つまたは複数の摩耗した位置を同定する。ドライブおよび／またはオペレーティング・システム・データは、フラッシュ・ベースの記憶装置の各位置が何回消去されたかについての情報を含んでいてもよい。それにより、システムは、寿命切れに近いまたは他の仕方で他の型のデータについてはそれほど好適でないが、低頻度で書き込まれるデータには十分好適である位置を選択できる。
【００３２】
ブロック３４０に進み、システムは、データを書き込むべき、同定されたより摩耗した位置の一つを選択する。システムは、データをソートして最も摩耗した位置を選択することによって、あるいはデータを書き込むべき位置の受け入れ可能な選択を提供する他の任意の発見的方法またはアルゴリズムによって、選択を行いうる。いくつかの実施形態では、管理者によって好まれる何らかの基準に基づいて選択するために、システムは、管理者が位置選択の間にシステムの振る舞いを変更できる構成設定インターフェースを提供してもよい。ブロック３４０後、実行はブロック３７０にジャンプする。
【００３３】
ブロック３５０に進み、データが頻繁に書き込まれると判定すると、システムは、書き込まれるべきデータに関係する他の頻繁に書き込まれる任意のデータを位置特定する。システムは、データを更新する際の効率性を生じること、諸ブロック全体を一緒に消去できるようにすることなどのために、頻繁に書き込まれるデータを一緒に配置しようと試みてもよい。システムは、頻繁に書き込まれるおよび低頻度で書き込まれるデータが互いに近くに位置されるまたは同じフラッシュ・ベースのブロック上に位置されるような仕方でデータを断片化〔フラグメンテーション〕させるのを回避するよう試みてもよい。そうすることで、システムは、データのある塊が消去される準備ができたときには他の近隣データも消去の準備ができているまたはまもなく消去の準備ができ、システムがより多くのドライブ・スペースを回復できることを、より確信できるようになる。
【００３４】
ブロック３６０に進み、システムは、他の頻繁に書き込まれるデータの近くのそれほど摩耗していない位置を、書き込まれるべきデータを配置するよう選択する。ドライブおよび／またはオペレーティング・システム・データは、フラッシュ・ベースの記憶装置の各位置が何回書き込まれたかについての情報を含んでいてもよい。それにより、システムは、フレッシュなまたは過度に書き込まれておらず頻繁に書き込まれるデータに好適な位置を選択できる。システムは、諸位置の摩耗特性をソートして最も摩耗していない位置を選択してもよいし、あるいは他の頻繁に書き込まれるデータの近くにある位置により大きな重みをかけてそうした位置の一つを選択することを、それほど摩耗していない位置より選好してもよい。いくつかの実施形態では、管理者は、いかにして選択を行うかをシステムに命令するために構成設定を修正することができる。
【００３５】
ブロック３７０に進み、システムは、選択された配置を報告し、それにより他のコンポーネントがそこにデータを書き込めるようになる。たとえば、システムは、データ配置を選択した結果を、図２で概説したようなさらなるステップへの入力として出力してもよい。いくつかの実施形態では、システムは、データ配置の解析を実行し、何らかの行動を起こす前にユーザーに報告を返すツールの一部として使われてもよい。そのような場合、出力は、ファイルまたはユーザー・インターフェースにおいてユーザーに提供されてもよく、それによりユーザーはデータが前記装置上にどのように配置されるかを検討することができる。ブロック３７０後、これらのステップは完結する。
【００３６】
図４は、ある実施形態での、フラッシュ・ベースの記憶ドライブの、可能性のあるドライブもしくは位置の寿命切れに対処するための、記憶配置システムの処理を示す流れ図である。
【００３７】
ブロック４１０において始まり、システムはフラッシュ・ベースの記憶装置の一つまたは複数の障害のあるブロックを検出する。たとえば、システムはドライブまたはオペレーティング・システムから一つまたは複数の消去カウンタを読み、各位置についてのカウントを前記装置の製造業者によって確立された限界と比較してもよい。システムは、限界に近いカウントをもつ位置を、故障しつつあるまたは寿命切れになりつつあるブロックとして同定し、これらのブロックに関連するデータを再配置しようとしてもよい。
【００３８】
判断ブロック４２０に進み、システムが何らかの故障しつつあるブロックを見出した場合、システムはブロック４３０に進み、そうでない場合にはシステムは完了する。システムは、オペレーティング・システムのアイドル処理のプロセスにおいて、あるいはルーチンのスケジュールされたメンテナンス・タスクとして、故障しつつあるブロックがあるかどうかを定期的にチェックしてもよい。
【００３９】
ブロック４３０に進み、システムは、フラッシュ・ベースの記憶装置に記憶された、検出された故障しつつあるブロックに記憶されているデータのために余地を空けるために除去されることのできる一つまたは複数のデータ項目を選択する。除去されるべきデータは、長時間アクセスされなかったデータ、簡単に回復可能（recoverable）な（たとえば他の場所に記憶されているまたは重要でない）データなどを含みうる。ブロック４４０に進み、システムは任意的に、ユーザーに、選択されたデータ項目をシステムが削除することをユーザーが承認するかどうか決定することを促す。いくつかの実施形態では、システムはこれらのデータ項目を動かすことを提案してもよく、ユーザーがそれらの項目を光ディスクに焼くこと、USBドライブもしくはクラウド・ベースの記憶サービスにコピーすることなどを許容してもよい。
【００４０】
判断ブロック４５０に進み、システムがユーザーから選択されたデータ項目を削除する承認を受領する場合、システムはブロック４６０に進み、そうでない場合にはシステムは完了する。ユーザーがそれらの項目の削除を承認しない場合、システムはそれでも、それほど摩耗していないより多くのブロックを利用可能にするためにデータを動かすなど、他の行動（図示せず）を自動的に行うことができてもよい。ブロック４６０に進み、システムは選択されたデータ項目を削除し、故障しつつあるブロック内のデータに、削除されたデータ項目によって空けられる一つまたは複数の位置への移動のためにフラグを付ける。システムはすぐ故障しつつあるブロック内のデータを動かしてもよいし、あるいはデータが次に書き込まれるまで待ってもよい。いくつかの型の装置については、ある位置にすでに成功裏に書き込まれているデータが失われるリスクはほとんどなく、その位置に書き込もうとする別の試行がなされるときにリスクが生じる。そのような場合には、システムは最適には、データが二度と書き込まれない（よってデータを移動させない）と想定してもよいが、データが実際には書き込まれる場合には、システムはそのデータをその時点で動かすことができる。
【００４１】
いくつかの実施形態では、記憶配置システムは、非フラッシュ・ベースの記憶装置のためのデータの配置を選択する。本システムは、フラッシュ・ベースの装置の寿命および効率性を増す助けとなるが、本システムは他の媒体上のデータ記憶を改善するためにも使用できる。たとえば、光学式媒体はしばしば適正なデータ配置ならびにホット・データおよびコールド・データの管理から裨益することができる。多くの型の光学式媒体が固定した回数、書き換え可能であり、データの適正な選択および配置は光学式媒体がより長期間にわたって使用されることを許容できる。たとえば、光学式ディスク・ドライブが低頻度で変化するデータを記憶するために選択されてもよく、書き換えされる必要のあるデータは諸セクタを均等に摩耗させるために時間とともにドライブ上を巡回させられることができる。
【００４２】
いくつかの実施形態では、記憶配置システムはフラッシュ・ベースの記憶装置のファームウェアにおいて実装される。本稿に記載される技法はデータ使用の理解の諸レベルに関わる、特にファイル・システムに関わるので、装置のファームウェアは、一般的な諸ファイル・システムの理解をプログラムされることができる。それにより、そのようなファイル・システムについては、ファームウェアはドライブ上の記憶をより効果的に管理できる。システムをファームウェアに置くことは、オペレーティング・システム更新および修正がそれほど望ましくないシステム上でのデータ記憶における改善を許容する。一部のスマートフォンのようないくつかの環境では、ファームウェアはオペレーティング・システムの一部としてドライバ内に実装され、よってより広いオペレーティング・システム修正なしに本システムを実装するためにドライバに対して変更がなされることができる。
【００４３】
以上から、記憶配置システムの特定的な実施形態が例解の目的で本稿で記載されているが、本発明の精神および範囲から外れることなくさまざまな修正がなしうることが理解されるであろう。よって、本発明は、付属の請求項によってのみ限定される。
【図１】
2014522537.tif 000003
【図２】
2014522537.tif 000004
【図３】
2014522537.tif 000005
【図４】
2014522537.tif 000006
【国際調査報告】
2014522537.tif 000007
2014522537.tif 000008