(57)【要約】データ重複排除方法は、ソリッドステートドライブ（ＳＳＤ）のためのコントローラによって実行される。コントローラは、データのブロックに対する署名を受信する。コントローラは、署名と署名ライブラリ内の情報との比較を実行し、署名が情報と一致するか否かを判断する。コントローラは、比較の結果を示す信号を送信する。署名と情報とが一致する場合、信号は、データのブロックがＳＳＤ上に既に格納されていることを示す第１の値を有する。署名と情報とが一致しない場合、信号は、第１の値とは異なる第２の値を有する。
2018527681.tif 000002
【特許請求の範囲】
【請求項１】
ソリッドステートドライブ（ＳＳＤ）のための、コントローラによって実行されるデータ重複排除の方法であって、前記方法は、
前記コントローラによって、中央処理装置（ＣＰＵ）から、データのブロックに対する署名を受信するステップと、
前記コントローラによって、前記署名が署名ライブラリ内の情報と一致するかを判定するステップと、
前記コントローラから前記ＣＰＵに、前記判定の結果を示す信号を送信するステップと
を含み、
前記署名が署名ライブラリ内の前記情報と一致する場合、前記信号は、前記データのブロックが前記ＳＳＤ上に既に格納されていることを示す第１の値を有し、さらに、前記署名が前記署名ライブラリ内の前記情報と一致しない場合、前記信号は、前記第１の値とは異なる第２の値を有する、方法。
【請求項２】
前記方法は、さらに、
前記コントローラによって、前記ＣＰＵから、前記署名に関連付けられたアドレスを受信するステップであって、前記コントローラは、前記署名ライブラリ内のエントリにインデックス付けするために前記アドレスを用いる、ステップと、
前記コントローラによって、前記署名が前記署名ライブラリ内の前記エントリにある前記情報と一致するかを判定するステップとを含む、
請求項１に記載の方法。
【請求項３】
前記信号は、１つのバイナリビットを含み、前記ビットは、前記署名が前記署名ライブラリ内の情報と一致する場合、前記第１の値であり、前記署名が前記署名ライブラリ内の情報と一致しない場合、前記第２の値である、
請求項１に記載の方法。
【請求項４】
前記署名が前記署名ライブラリ内の情報と一致する場合、前記方法はさらに、前記データのブロックに関連付けられたカウンタをインクリメントするステップを含む、
請求項１に記載の方法。
【請求項５】
前記署名が前記署名ライブラリ内の情報と一致しない場合、前記方法はさらに、
前記データのブロックを受信し、前記データのブロックを前記ＳＳＤに書き込むステップと、
前記署名を前記署名ライブラリに追加し、前記データのブロックに関連付けられたカウンタをインクリメントするステップとを含む、
請求項１に記載の方法。
【請求項６】
前記コントローラは、前記署名と前記署名ライブラリ内の情報とを比較する重複排除プロセッサを備える、
請求項１に記載の方法。
【請求項７】
前記重複排除プロセッサは、前記署名と前記署名ライブラリ内の情報とのビット単位での比較を実行する複数のゲートを備える、
請求項６に記載の方法。
【請求項８】
前記ＳＳＤは、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）ＳＳＤである、
請求項１に記載の方法。
【請求項９】
中央処理装置（ＣＰＵ）及びソリッドステートドライブ（ＳＳＤ）を備えるサーバによって実行されるデータ重複排除方法であって、前記ＳＳＤは、コントローラを備え、前記方法は、
クライアントから、データのブロックに対する署名を受信するステップと、
前記署名に基づいてアドレスを判定するステップと、
前記コントローラで、前記アドレスを使用して、署名ライブラリ内のエントリを特定するステップと、
前記コントローラで、前記署名と前記署名ライブラリ内の前記エントリにある情報とを比較するステップと、
前記コントローラで、前記署名が前記情報と一致するか否かを示す信号を生成するステップとを含み、前記署名と前記情報とが一致する場合、前記データのブロックが前記ＳＳＤに既に格納されており、前記署名と前記情報とが一致しない場合、前記方法はさらに、
前記クライアントにシグナリングするステップと、
前記シグナリングへの応答として前記クライアントからの前記データのブロックを受信するステップと、
前記データのブロックを前記ＳＳＤに書き込むステップと
を含む、方法。
【請求項１０】
前記信号は、１つのバイナリビットを含み、前記ビットは、前記署名と前記情報とが一致する場合、第１の値であり、前記署名と前記情報とが一致しない場合、第２の値である、
請求項９に記載の方法。
【請求項１１】
前記署名と前記情報とが一致する場合、前記方法はさらに、前記データのブロックに関連付けられたカウンタをインクリメントするステップを含む、
請求項９に記載の方法。
【請求項１２】
前記署名と前記情報とが一致しない場合、前記方法はさらに、前記署名を前記署名ライブラリに追加し、前記データのブロックに関連付けられたカウンタをインクリメントするステップを含む、
請求項９に記載の方法。
【請求項１３】
前記コントローラは、複数の排他的ＯＲ（ＸＯＲ）ゲートを備え、前記複数のゲートの各ゲートは、前記署名からのビット値と前記署名ライブラリ内の前記情報からの各ビット値とを比較する、
請求項９に記載の方法。
【請求項１４】
前記ＳＳＤは、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）ＳＳＤである、
請求項９に記載の方法。
【請求項１５】
ソリッドステートドライブ（ＳＳＤ）であって、
複数のストレージエレメントと、
前記ストレージエレメントに接続されるコントローラとを備え、
前記コントローラは、中央処理装置（ＣＰＵ）から、データのブロックに対する署名及び前記署名に基づくアドレスを受信するように動作可能であり、前記署名は、前記ＣＰＵによって前記データのブロックのソースから受信され、
前記コントローラは、前記署名と前記署名ライブラリ内のエントリにある情報とを比較するため、前記署名が前記情報と一致するか否かを示す信号を生成するため、そして、前記信号を前記ＣＰＵに送信するために、前記アドレスを用いて署名ライブラリ内のエントリを特定するように動作可能であり、
前記コントローラはさらに、前記署名が前記署名ライブラリ内の前記情報と一致しないことを示す信号への応答として前記データのブロックが受信されるとき、前記データのブロックを、前記複数のストレージエレメントに属するストレージエレメントに書き込むように動作可能である、ＳＳＤ。
【請求項１６】
前記信号は、１つのバイナリビットを含み、前記ビットは、前記署名と前記情報とが一致する場合、第１の値であり、前記署名と前記情報とが一致しない場合、第２の値である、
請求項１５に記載のＳＳＤ。
【請求項１７】
前記署名と前記情報とが一致する場合、前記データのブロックに関連付けられたカウンタがインクリメントされる、
請求項１５に記載のＳＳＤ。
【請求項１８】
前記署名と前記情報とが一致しない場合、前記署名は、前記署名ライブラリに追加され、前記データのブロックに関連付けられたカウンタがインクリメントされる、
請求項１５に記載のＳＳＤ。
【請求項１９】
前記コントローラは、前記署名と前記情報とを比較する重複排除プロセッサを備え、前記重複排除プロセッサは、複数の排他的ＯＲ（ＸＯＲ）ゲートを含み、前記複数のゲートの各ゲートは、前記署名からのビット値と前記署名ライブラリからの前記情報からの各ビット値とを比較する、
請求項１５に記載のＳＳＤ。
【請求項２０】
前記ＳＳＤは、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）ＳＳＤであり、前記ストレージエレメントは、ＮＡＮＤダイを含む、
請求項１５に記載のＳＳＤ。
【発明の詳細な説明】
【背景技術】
【０００１】
現代のビジネスでは、テープ、ハードディスクドライブ、ソリッドステートドライブ（ＳＳＤ）などのあらゆる種類のメディアに格納されるデータベースに、膨大な量（例えば、ペタバイト）のデータを蓄積する。法的要件、政府規則及び規制、並びにビジネスルール及び最善の慣例は、データベースが頻繁にアーカイブされてバックアップされることを必要とする。その結果、数千ペタバイト（ＰＢ）のデータが既に格納されており、格納されたデータの量は飛躍的に増加し続けている。
【０００２】
データ重複排除方法及びシステムは、データ量を削減して効率を高め、コストを削減するために使用される。一般に、重複排除システムは、異なるデータファイル内に同一部分を見つけ、これら同一部分を１度だけ格納する。重複排除システムはまた、後でデータファイルにアクセスしたときにデータファイルが整理され、再構築できるように、メタデータを保持する。しかし、膨大な量のデータが格納されるということは、既存の重複排除方法及びシステムの限界をテストすることになる。現在の重複排除方法及びシステムは、数ペタバイトのデータについてはうまく機能するが、数千ペタバイト規模のデータ量に合わせて設計されていない。
【０００３】
大量のデータを格納するためにＳＳＤを（ランダムアクセスメモリ（ＲＡＭ）のような他の記録媒体の代わりに）使用することは、いくつかの課題を提示する。ＳＳＤは、例えば、ダブルデータレート型スリーシンクロナスダイナミックＲＡＭ（ＤＤＲ３  ＤＲＡＭ）に比べて、より長い読出し及び書込み待ち時間を有する。また、ＳＳＤは書き込まれる前に消去され、消耗する前に限られた回数だけ消去することができる。
【０００４】
一方、ＳＳＤには、大量のデータを格納するのに適した多数の利点がある。重複排除のために、ファイルは、関連するメタデータとともに「チャンク」（例えば、４キロバイト（ＫＢ）、１６ＫＢ、又は２５６ＫＢのチャンク）と一般に呼ばれるブロック又はフラグメントに分割される。各固有のチャンクは、そのメタデータとともに格納される。メタデータは、例えば、１６バイト（Ｂ）、３２Ｂ、１２８Ｂ、又は２５６Ｂのサイズであってもよい。５１２ＰＢのデータの場合、各チャンクが１６ＫＢのサイズで、チャンクあたり３２Ｂのメタデータであると仮定すると、メタデータだけの格納スペースは１ＰＢである。この量のデータを格納するのにＲＡＭを使用するのは、実用的ではなく、ＳＳＤを使用する方が実用的である。
【０００５】
また、前述した規制及び要件を満たすためには、メタデータをストレージにハード的に書き込む必要がある。ＲＡＭへの電力が失われたり、又は中断されると、ＲＡＭにより保持されたデータは失われる。ＳＳＤは、例えば、電力がなくてもデータを保持するＮＡＮＤベースのフラッシュメモリを使用する。
【０００６】
したがって、ＳＳＤの利点には、その容量及び非揮発性が含まれる。長いアクセス時間（読み出し及び書き込みの待ち時間）を軽減するために、データは並列に書き込まれる。各ＳＳＤの読み出し／書き込み操作の基本単位はページと呼ばれる。ページサイズが１６ＫＢの場合、チャンクあたり１２Ｂのメタデータがあると仮定すると、１２８個のチャンクに対するメタデータがページ内で並列に読み出し又は書き込みできる。
【０００７】
各チャンクに対するメタデータは、チャンクを一意に特定するハッシュ値又は署名を含む。したがって、新しいチャンクを格納する必要があるか否かを判断するために（同じチャンクが前に格納されたか否かを判断するために）、新しいチャンクに対する署名は、既に格納されたチャンクに対する署名と比較されることができる。新しいチャンクに対する署名が既存の署名と一致する場合、新しいチャンクは保存される必要はない。
【０００８】
上記のように、ＳＳＤの読み出し／書き込み操作の基本単位はページである。チャンクの署名を他の署名との比較のために取得するために、ページ全体（例えば、１６ＫＢ）が読み出され、ＳＳＤから中央処理装置（ＣＰＵ）に転送される。この転送は、メモリ帯域幅及びバス帯域幅だけでなく、ＣＰＵ上で相当量のリソースを消費する可能性がある。
【０００９】
より具体的には、ストレージサーバに格納されるべきデータを有するクライアントは、データをチャンクに分割し、各チャンクに対する署名を計算する。実装では、クライアントは、各署名を、ストレージサーバに既に格納されているチャンクに対する署名のライブラリを保持する署名サーバへと送信する。署名サーバの役割は、クライアントからの署名が署名ライブラリ内の署名と一致するか否かを判定することである。これを達成するために、ページ全体（例えば、１６ＫＢ）が各署名についてメモリに転送され、ＣＰＵはページ内の署名を探し出して取り出し、取り出された署名とクライアントからの署名とを比較する。しかし、署名は、３２Ｂのサイズしかないこともある。したがって、他の署名との比較のための署名を得るには、必要とされるよりも最大５００倍を超える量のデータが読み出されて転送される（例えば、３２Ｂの署名を得るために１６ＫＢのデータが読み取られる）。
【００１０】
さらに、署名の比較を要求するクライアントの数及び署名サーバの数に基づいて、署名サーバごとの比較回数を推定することができる。各比較には少なくとも２つの入出力（Ｉ／Ｏ）アクセスが必要なため、１つの署名サーバあたりの１秒ごとのＩ／Ｏ操作数（ＩＯＰＳ）も推定することができる。ＣＰＵとＳＳＤの機能を考慮すると、ＩＯＰＳの要件は非常に大きく、多数の署名サーバが必要になり、また、必要な容量を提供するには、より高価で高帯域のＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）ＳＳＤを使用する必要もある。
【００１１】
要約すれば、従来の重複排除方法は、非効率的で高価であり、相当量のＣＰＵ資源、メモリ資源、及びバス資源を占有する。
【発明の概要】
【００１２】
本発明による実施形態は、ＳＳＤにおける署名比較を達成することによって上記の問題に対処する。その結果、ＣＰＵの作業負荷が軽減され、ＳＳＤとＣＰＵとの間で転送されるデータ量が削減され、それによりメモリ及びバス帯域幅への影響も軽減される。
【００１３】
本発明による実施形態では、データ重複排除方法がＳＳＤのためのコントローラによって実行される。コントローラは、ＣＰＵからデータのブロック又はフラグメント（「チャンク」）に対する第１の署名を受信する。コントローラは、第１の署名と署名ライブラリ内の情報との比較を実行し、第１の署名が情報と一致するか否かを判定する。コントローラは、比較結果を示す信号をＣＰＵに送信する。第１の署名が署名ライブラリ内の情報と一致する場合、信号は、データのチャンクがＳＳＤ上に既に格納されていることを示す第１の値を有し、第１の署名が署名ライブラリ内の情報と一致しない場合、信号は、第１の値とは異なる第２の値を有する。第１の署名が署名ライブラリ内の情報と一致しない場合（例えば、信号が第２の値を有する場合）、データのチャンクは、そのソース（例えば、クライアント）から受信され、ＳＳＤに書き込まれる。
【００１４】
実施形態では、コントローラはまた、ＣＰＵから第１の署名に関連付けられたアドレスを受信する。そのような実施形態では、コントローラは、署名ライブラリ内のエントリを特定するためにアドレスを用いる。次に、コントローラは、署名とそのエントリにある情報とを比較する。その情報は第２の署名であってもよく、又はそれはヌル値であってもよい（例えば、エントリはいかなる情報も保持しなくてよい）。次に、コントローラは、上述のように比較結果を示す信号をＣＰＵへと送信する。
【００１５】
実施形態では、ＳＳＤコントローラからＣＰＵへの信号は、第１の署名が署名ライブラリ内の情報と一致する場合、第１の値を有する１つのバイナリビットからなり、第１の署名が署名ライブラリ内の情報と一致しない場合、第２の値を有する１つのバイナリビットからなる。
【００１６】
実施形態では、第１の署名が署名ライブラリ内の情報と一致する場合、データのチャンクに関連付けられたカウンタがインクリメントされる。第１の署名が署名ライブラリ内の情報と一致しない場合、第１の署名が署名ライブラリに追加され、データのチャンクに関連付けられたカウンタが初期化され、インクリメントされる。
【００１７】
実施形態では、コントローラは、従来の構成要素に加えて、第１の署名と署名ライブラリからの情報とを比較する重複排除プロセッサを含む。そのような１つの実施形態では、重複排除プロセッサは、第１の署名と署名ライブラリからの情報とのビット単位での比較を実行する複数のゲートを含む。
【００１８】
実施形態では、ＳＳＤは、Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ（ＳＡＴＡ）ＳＳＤである。
【００１９】
本発明による実施形態は、格納されたデータの量がエクサバイト（ＥＢ）で測定される大規模データアプリケーションにおける効率的な重複排除のために使用することができる。ＩＯＰＳはより少なくて済み、したがって、本発明による実施形態は、より安価なＳＡＴＡ  ＳＳＤを使用して実施することができる。
【００２０】
本発明の様々な実施形態のこれら及び他の目的そして様々な実施形態の利点は、様々な図面に示される実施形態の以下の詳細な説明を読めば、当業者には認識されるであろう。
【００２１】
添付の図面は、この明細書に組み込まれて一部を形成し、同様の符号は同様の要素を示し、本開示の実施形態を示し、詳細な説明と共に、開示の原理を説明する役割を果たす。
【図面の簡単な説明】
【００２２】
【図１】本発明による実施形態において重複排除システムを実装することができるシステムの例を示すブロック図である。
【図２】本発明による実施形態におけるコンピュータシステムの要素を示すブロック図である。
【図３】本発明による実施形態におけるＳＡＴＡ  ＳＳＤと中央処理装置との間の接続を示すブロック図である。
【図４】本発明による実施形態における重複排除方法のフローチャートである。
【図５】本発明による実施形態における重複排除プロセッサを実現するために使用できる回路を示す。
【図６】本発明による実施形態におけるＳＳＤのためのコントローラによって実行されるデータ重複排除方法のフローチャートである。
【図７】本発明による実施形態においてＣＰＵ及びＳＳＤを含む署名サーバによって実行されるデータ重複排除方法のフローチャートである。
【図８】本発明による実施形態における重複排除システムの実装例を示すブロック図である。
【発明を実施するための形態】
【００２３】
ここで、添付図面にそれらの例が示される本開示の様々な実施形態が詳細に参照されよう。これらの実施形態に関連して説明されているが、それらは、これらの実施形態の開示を限定する意図でないことは理解されるであろう。反対に、その開示は、添付の特許請求の範囲によって規定されるような開示の思想及び範囲内に含まれ得る代替、改変及び均等となるものを包含する意図である。さらに、本開示の以下の詳細な説明では、本開示の徹底した理解を提供するために、多数の具体的な詳細が示される。しかしながら、本開示は、これらの具体的な詳細なしに実施され得ることが理解されるであろう。他の例では、本開示の態様を不必要に不明瞭にしないために、周知の方法、手順、構成要素、及び回路は詳細には記載されていない。
【００２４】
以下の詳細な説明のいくつかの部分は、手順、論理ブロック、処理、及びコンピュータメモリ内のデータビットに対する演算の他の記号表現に関して提示される。これらの説明及び表現は、当業者の仕事の内容を他の当業者に最も効果的に伝えるためにデータ処理分野の当業者によって使用される手段である。本出願では、手順、論理ブロック、プロセスなどは、所望の結果をもたらす自己矛盾のない一連のステップ又は命令であると考えられる。ステップは、物理量の物理的操作を利用している。通常、必ずしもそうではないが、これらの量は、コンピュータシステムにおいて格納、転送、結合、比較、及び他の方法で操作することができる電気信号又は磁気信号の形態をとる。これらの信号を、時には主に一般的な使用の理由で、トランザクション、ビット、値、要素、記号、文字、サンプル、ピクセルなどと呼ぶことは都合がよいことが判明している。
【００２５】
しかしながら、これらの用語及び類似の用語の全ては、適切な物理量に関連し、これらの量に適用される便利なラベルに過ぎないことに留意すべきである。特に明記しない限り、以下の説明から明らかなように、「受信する」、「格納する」、「読み出す」、「書き込む」、「インデックス付けする」、「実行する」、「送信する」、「比較する」、「追加する」、「アクセスする」、「特定する」、「使用する」、「判定する」、「生成する」、「インクリメントする」、「シグナリングする」などの用語を用いる議論は、装置又はコンピュータシステムもしくは同様の電子計算デバイス又はプロセッサ（例えば、図２のコンピュータシステム２００）のアクション及びプロセス（例えば、それぞれ、図４、図６、及び図７のフローチャート４００、６００、及び７００）を指す。コンピュータシステム又は同様の電子計算デバイスは、メモリ、レジスタ又は他のそのような情報ストレージ、伝送デバイス又は表示デバイス内の物理（電子）量として表されるデータを操作及び変換する。
【００２６】
本明細書で説明される実施形態は、１つ又は複数のコンピュータ又は他のデバイスによって実行される、プログラムモジュールなどのコンピュータ可読記録媒体の何らかの形態で存在するコンピュータ実行可能命令の一般的なコンテキストで論じされうる。限定ではなく例として、コンピュータ可読記録媒体は、非一時的コンピュータ記録媒体及び通信媒体を含み得る。一般に、プログラムモジュールは、特定のタスクを実行する、又は特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。プログラムモジュールの機能は、様々な実施形態において要望どおりに組み合わせられ、又は分散されてもよい。
【００２７】
コンピュータ記録媒体は、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータなどの情報の格納のための任意の方法又は技術で実現される揮発性及び不揮発性媒体、取り外し可能及び固定の媒体を含む。コンピュータ記録媒体は、限定されるわけではないが、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ（ＳＳＤ）もしくは他のメモリ技術、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、デジタルバーサタイルディスク（ＤＶＤ）もしくは他の光ストレージデバイス、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、又は所望の情報を格納するために使用することができ、その情報にアクセスすることができる他の媒体を含む。
【００２８】
通信媒体は、コンピュータ実行可能命令、データ構造、及びプログラムモジュールを具体化することができ、任意の情報配信媒体を含む。限定ではなく例として、通信媒体は、有線ネットワーク又は直接有線接続などの有線媒体、及び音響媒体、無線周波数（ＲＦ）媒体、赤外線媒体及び他の無線媒体などの無線媒体を含む。上記のいずれの組み合わせも、コンピュータ可読媒体の範囲内に含めることができる。
【００２９】
図１は、本発明による実施形態により重複排除システムを実装することができるネットワーク又はシステム１００の例を示すブロック図である。図１の例では、システム１００は、単独でクライアント１０１ｍとして参照されるか、集合的にクライアント１０１として参照されることがある多数のクライアント１０１ａ、１０１ｂ、１０１ｃ、．．．、１０１ｍと、１つ又は複数のコンフィギュレーションサーバ１０２と、単独で署名サーバ１０３ｎとして参照されるか、集合的に署名サーバ１０３として参照されることがある多数の署名サーバ１０３ａ、１０３ｂ、１０３ｃ、１０３ｎとを含む。クライアント１０１、署名サーバ１０３、及びコンフィギュレーションサーバ１０２は、ネットワーク１０４（例えば、インターネットがあるが、これに限定されない）を介して通信可能に（有線又は無線で）接続される。
【００３０】
クライアント１０１は、それ自体がサーバであってもよい。一般に、クライアント１０１は、自身が生成した、又は、他のデバイス又はシステム（図示せず）から受信した、データファイルを有する。クライアント１０１ｍは、自身が有するデータファイルをより小さなピース（例えば、ブロック又はフラグメント、一般にチャンクと呼ばれる）に分割する。そのような各チャンクについて、クライアント１０１ｍは、チャンクを一意に特定する署名Ｓｃｐを計算し、署名を署名サーバ１０３に送信する。実施形態では、クライアント１０１ｍからの署名はバッチモードで送信され、したがって、複数の署名（例えば、数百の署名）を１つのデータパッケージにグループ化し、比較のために署名サーバ１０３に送信することができる。
【００３１】
実施形態では、チャンクに対する署名は、チャンクのコンテンツにハッシュ関数を適用することによって計算される。実施形態では、メタデータは各チャンクに関連付けられ、チャンクに対する署名はそのチャンクに対するメタデータに含まれる。チャンクに対するメタデータは、チャンクに対する署名に加えて情報を含むことができる。例えば、メタデータは、データファイルを再構成するために、チャンクをデータファイルに関連付けられた他のチャンクと結合するために使用できる情報を含むことができる。例えば、署名に加えて、メタデータは、データファイルを再構築するために、チャンクに対するデータがどこに格納されているかを示すアドレスと、チャンクが他のチャンクとどのように（例えば、どの順序で）結合されるかを特定する付記を含んでもよい。
【００３２】
コンフィギュレーションサーバ１０２は、クライアント１０１と署名サーバ１０３との間のトラフィックをスケジューリングし、制御する。コンフィギュレーションサーバ１０２は、クライアント１０１からの署名を適切な署名サーバに送信する。
【００３３】
署名サーバ１０３ｎは、コンフィギュレーションサーバ１０２により指示された通りにクライアント１０１から署名を受信し、その署名ライブラリ内のエントリ（コンテンツ又は情報、例えば、署名）を調べ、クライアントからの署名と署名ライブラリからの情報とを比較し、自身が受信する各署名Ｓｃｐについて、署名Ｓｃｐがその署名ライブラリ内の情報と一致するか否かについてクライアントに通知する。
【００３４】
本明細書中で既に説明したように、重複排除は、新しいチャンクと同一のチャンクが前回格納されているか否かを判定するために、新しいチャンクに対する署名と既に格納されているチャンクに対する署名とを比較することによって、新しいチャンクを格納する必要があるか否かを判定するステップを伴う。新しいチャンクに対する署名が既存の署名と一致する場合、新しいチャンクは格納される必要がない。
【００３５】
図２は、本発明による実施形態のコンピュータシステム２００の要素を示すブロック図である。実施形態では、コンピュータシステム２００は、署名サーバ１０３（図１）を実現するためのプラットフォームを表す。図２の例において、コンピュータシステム２００は、中央処理装置（ＣＰＵ）２０１、メモリ２０３、及びソリッドステートデバイス（ＳＳＤ）２０５を含む。メモリ２０３は、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）でもよい。実施形態では、ＳＳＤ２０５は、Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ（ＳＡＴＡ）ＳＳＤであり、ＳＡＴＡバス２０７を介してＣＰＵ２０１に接続される。コンピュータシステム２００は、図示されていない要素を含んでもよい。
【００３６】
図３は、本発明による実施形態におけるＳＡＴＡ  ＳＳＤ３０１、３０２、３０３とＣＰＵ２０１との間の接続を示すブロック図である。ＳＳＤ３０１−３０３は、それぞれＳＡＴＡバス３１１、３１２、３１３を介してホストバスアダプタ（ＨＢＡ）３２０に接続される。実施形態では、ＨＢＡアダプタ３２０は、ＳＡＴＡインタフェース３２１、Ａｄｖａｎｃｅｄ  Ｈｏｓｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｉｎｔｅｒｆａｃｅ（ＡＨＣＩ）エンジン３２２（例えば、ソフトウェアがＳＡＴＡデバイスと通信することを可能にするハードウェア機構、バスマスタからシステムメモリまで）、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）−ｔｏ−ＡＨＣＩブリッジ３２３（例えば、ＳＡＴＡフォーマットとＰＣＩｅフォーマットとの間でデータを変換するための）、及びＰＣＩｅインタフェース３２４を含む。ＨＢＡ３２０は、ＰＣＩｅバス３３０を介してＣＰＵ２０１に接続される。
【００３７】
再び図２を参照すると、ＳＳＤ２０５は、コントローラ２１０と、多数のストレージエレメント、具体的には、データを格納するために使用される多数のダイ又はチップ２４０ａ−２４０ｋとを含む。ダイ２４０ａ−２４０ｋは、単独でダイ２４０ｋとして参照し、集合的にダイ２４０として参照する。実施形態では、ダイ２４０はＮＡＮＤダイであり、したがって、ＳＳＤ２０５は、ＮＡＮＤフラッシュデバイスと呼ばれることがある。
【００３８】
コントローラ２１０は、ＳＳＤ２０５に埋め込まれた、特定用途向け集積回路（ＡＳＩＣ）又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）として実現することができる。図２の実施形態では、コントローラ２１０は、ファームウェア又はソフトウェアとして実装し得るフラッシュ変換層（ＦＴＬ）を含む。コントローラ２１０はまた、ライトパス及びリードパスも含む。ライトパスは、インタフェース２１１を起点とし、それは、例えば、物理層（ＰＨＹ）インタフェースと、アナログ及びデジタルドメイン間で（アナログからデジタルへ、及びデジタルからアナログへ）データを変換するシリアライザ／デシリアライザを含む。ライトパスは、データ圧縮ブロック２１２、暗号化ブロック２１３、及び誤り訂正コード（ＥＣＣ）符号化ブロック２１４を含んでもよい。ＳＳＤコントローラは、インタフェース２２０（例えば、Ｏｐｅｎ  ＮＡＮＤ  Ｉｎｔｅｒｆａｃｅ、ＯＮＦＩ）を介してダイ２４０に接続される。データは、同期及び非同期トリガモード（トグル）を用いて移動される。
【００３９】
データは、同じトグル機構及びインタフェース２２０を介してダイ２４０からリードパスに移動される。リードパスは、ＥＣＣデコーディングブロック２１６、復号ブロック２１７、及び復元ブロック２１８を含み得る。
【００４０】
重要で、従来のＳＳＤコントローラとは対照的に、コントローラ２１０は、重複排除プロセッサ２３０をリードパスに含む。以下にさらに詳細に説明するように、重複排除プロセッサ２３０は、少なくとも２つの主要機能を実行する、すなわち、それは、ダイ２４０から情報（例えば、署名）を抽出し、そして、それは、それらの署名とクライアント１０１ｍから受信される署名とを比較して、クライアントからの署名が、抽出された署名と一致するか否か（例えば、署名が、抽出された署名のいずれかと一致するか否か）を判定する。
【００４１】
図４は、本発明による実施形態における重複排除方法のフローチャート４００である。フローチャート４００のブロックによって表される動作の全て又は一部は、ある形式の非一時的なコンピュータ可読記録媒体に存在するコンピュータ実行可能命令として実施することができ、それぞれ図１の署名サーバ１０３ｎ又は図２のコンピュータシステム２００などの署名サーバ又はコンピュータシステムによって実行されることができる。
【００４２】
図４のブロック４０２において、データのブロック（例えば、チャンク）に対する署名Ｓｃｐがクライアント（例えば、図１のクライアント１０１ｍ）から受信される。
【００４３】
図４のブロック４０４において、実施形態では、リードアドレス（Ｒａｄｄｒ）が署名Ｓｃｐに基づいて計算される。
【００４４】
ブロック４０６において、署名Ｓｃｐは、ＳＳＤコントローラ２１０に送信される（図２）。実施形態では、リードアドレスＲａｄｄｒもＳＳＤコントローラ２１０に送信される。このような実施形態では、コントローラは、リードアドレスＲａｄｄｒを使用してダイ２４０（図２）に格納された署名ライブラリ内のエントリを特定する。具体的には、コントローラ２１０は、ダイ２４０のうちの１つ（例えば、ダイ２４０ｋ）に格納された署名ライブラリ内の特定のエントリに対するインデックスとして、リードアドレスＲａｄｄｒを使用することができる。エントリは署名であってもよいし、ヌル値であってもよい（例えば、エントリが空であってもよい）。一般的に言えば、リードアドレスＲａｄｄｒによるインデックス付けがされるエントリにはコンテンツ又は情報Ｒｓｓｄがある。そのコンテンツは署名であってもそうでなくてもよく、コンテンツの欠如（例えば、ヌル又は空のエントリ）であっても情報を伝達する。
【００４５】
図４のブロック４０８において、ＳＳＤコントローラ２１０は、署名Ｓｃｐと情報Ｒｓｓｄとを比較する。実施形態では、比較は、重複排除プロセッサ２３０（図２）を使用して実行される。追加情報が以下の図５に関連して提供される。
【００４６】
署名Ｓｃｐが情報Ｒｓｓｄと一致する場合、フローチャート４００はブロック４１０に進み、そうでなければ、フローチャートはブロック４１４に進む。
【００４７】
図４のブロック４１０において、署名Ｓｃｐは情報Ｒｓｓｄと一致する。その場合、情報Ｒｓｓｄは、第１の署名Ｓｃｐと同一の第２の署名を構成し、これは、署名Ｓｃｐと関連するデータのチャンクが既にＳＳＤ２０５に格納されていることを示し、ＳＳＤに対して、そのデータのチャンクをリライトすることは必要とされない。したがって、コントローラ２１０は、信号をＣＰＵ２０１に送信する。実施形態では、信号は、１つのバイナリビットからなる。ビット値は、署名Ｓｃｐが情報Ｒｓｓｄと一致することを示すために第１の値（例えば、バイナリの１又はｈｉｇｈ）を有する。
【００４８】
図４を継続して参照すると、ブロック４１２において、署名Ｓｃｐに関連付けられたメタデータが更新され、マッピングカウントがインクリメントされる。メタデータは、署名Ｓｃｐに関連付けられたチャンクを含むデータファイルを回復するために使用される。マッピングカウントは、チャンクが使用された回数（例えば、そのチャンクを含むデータファイルの数）を特定する。
【００４９】
ブロック４１４において、署名Ｓｃｐは情報Ｒｓｓｄと一致せず、これは、署名Ｓｃｐに関連付けられたデータのチャンクが現在ＳＳＤ２０５に格納されていないことを示し、したがって、データのチャンクがＳＳＤに書き込まれることができることを示す。ブロック４１０と同様、コントローラ２１０は、ＣＰＵ２０１に信号を送信する。実施形態では、信号はこの場合も、１つのバイナリビットからなる。しかし、ビット値は、署名Ｓｃｐが情報Ｒｓｓｄと一致しないことを示すために第２の値（例えば、バイナリのゼロ又はｌｏｗ）を有する。
【００５０】
ブロック４１６において、コントローラ２１０は、署名Ｓｃｐを署名ライブラリに追加する。実施形態では、コントローラ２１０は、署名ＳｃｐをリードアドレスＲａｄｄｒによって特定される署名ライブラリ内のエントリに追加する。
【００５１】
ブロック４１８において、データのチャンクがＳＳＤ２０５に書き込まれる。実施形態では、データのチャンクは、リードアドレスＲａｄｄｒによるインデックス付けがされた署名ライブラリを格納するダイ２４０ｋに書き込まれる。また、署名Ｓｃｐに関連付けられたメタデータが更新され、コントローラ２１０によってチャンクのマッピングカウントが開始（インクリメント）される。コントローラ２１０は、署名ライブラリが更新され、チャンクが保存されていることを確認することもできる。
【００５２】
ブロック４２０において、別のチャンクのデータに対して別の署名がある場合、フローチャート４００はブロック４０２に戻る。
【００５３】
本発明による実施形態は、データのチャンクがＳＳＤ２０５上に既に格納されたか否かを判定するために、署名Ｓｃｐとの比較のためのエントリを見つけるためにリードアドレスＲａｄｄｒを使用することに限定されない。他の技術は、署名Ｓｃｐと署名ライブラリの情報とを比較するために使用されることができる。そのような技術の１つがＣｕｃｋｏｏ検索アルゴリズムとして知られている。粒子群最適化、微分展開、及び人工蜂コロニーアルゴリズムとして知られている他の技術も使用されうる。
【００５４】
上述したように、クライアント１０１からの署名はバッチモードで送信することができ、したがって、複数の署名（例えば、数百個の署名）を１つのデータパッケージにグループ化して署名サーバ１０３に送信することができ、この場合、フローチャート４００の動作は各署名に対して並列に実行することができる。実施形態では、これは、ＳＳＤとＣＰＵとの間のマルチビットバスを使用して実施することができ、ここで、バスの各ビットは、個々の署名が上述した署名ライブラリの情報と一致したか否かを示す。この機能は、代わりにその状態を得るために定期的にポーリングされるマルチビットレジスタを使用して実現することができる。
【００５５】
また、上述したように、図２を参照し返すと、コントローラ２１０は、重複排除プロセッサ２３０をリードパスに含む。図５は、本発明による実施形態における重複排除プロセッサ２３０を実現するために使用することができる回路を示す。図５において、「Ａ」は、署名Ｓｃｐを参照する際に使用され、［Ｂ］は、署名Ｓｃｐと比較される情報（例えば、リードアドレスＲａｄｄｒによるインデックス付けがされたエントリにある情報、又は上記のようなアルゴリズムを使用して検索される署名ライブラリ内の情報）を参照する際に使用される。Ａにおけるビットは、Ａ［０］、．．．、Ａ［ｎ−１］として特定され、Ｂにおけるビットは、Ｂ［０］、．．．、Ｂ［ｎ−１］として特定される。
【００５６】
図４のブロック４０６によって説明される動作中、署名Ｓｃｐ（Ａ）は、情報（Ｂ）が読み出されるまでコントローラ２１０のライトパス内のバッファ（図示せず）に一定時間保持されることができる。次に、情報（Ｂ）が読み出された後、図５の重複排除プロセッサ２３０を使用して、署名Ｓｃｐ（Ａ）と情報（Ｂ）とをビット単位で比較することができる。
【００５７】
図５の実施形態では、重複排除プロセッサ２３０は、ＸＯＲゲート５０１、５０２によって例示される多数の排他的ＯＲ（ＸＯＲ）ゲートを含む。ＸＯＲゲート５０１は、署名Ｓｃｐ（Ａ）の第１のビット（Ａ［０］）と情報（Ｂ）の第１のビット（Ｂ［０］）とを比較し、別のＸＯＲゲート（図示せず）は、署名Ｓｃｐ（Ａ）の第２のビットと情報（Ｂ）の第２のビット（Ｂ［０］）とを比較し、同様にＸＯＲゲート５０２は、署名Ｓｃｐ（Ａ）の最後のビット（Ａ［ｎ−１］）と情報（Ｂ）の最後のビット（Ｂ［ｎ−１］）とを比較する。すべてのビットが一致する場合、ＯＲゲート５１１はバイナリのゼロを出力し、それ以外の場合、ＯＲゲートの出力はバイナリの１になる。これは、次のように表すことができる。
Ｏｕｔ＝（Ａ＝＝Ｂ）？１’ｂ０：１’ｂ１
【００５８】
したがって、重複排除プロセッサ２３０は、基本回路要素（例えば、ゲート）を使用して実装することができる。したがって、重複排除プロセッサ２３０は、従来のＳＳＤコントローラ設計に容易かつ安価に追加することができる。さらに、重複排除プロセッサ２３０は、ＥＣＣデコーディングブロック２１６、復号ブロック２１７、及び／又は復元ブロック２１８などのＳＳＤコントローラ内の他のモジュールといくつかの回路要素を共有することができ、それによってさらにコストを管理することを支援する。
【００５９】
要約すると、本発明による実施形態では、ＳＳＤの内部処理回路は、署名比較がＣＰＵの代わりにＳＳＤによって（具体的には、ＳＳＤコントローラによって）実行されることができるように設計される。その結果、ＣＰＵの作業負荷が軽減され、ＳＳＤとＣＰＵ間で転送されるデータ量が大幅に削減される。
【００６０】
ＣＰＵはＳＳＤに署名Ｓｃｐを送信する。実施形態では、ＣＰＵはまた、署名Ｓｃｐに基づいてリードアドレスＲａｄｄｒをＳＳＤに送信する。ＳＳＤは、署名Ｓｃｐが署名ライブラリ内の情報と一致するか否かを示す信号をＣＰＵに送信する。複数の署名、リードアドレス、及び信号はバッチモードで送信され、本明細書で前述したように並列処理されることができる。
【００６１】
本発明による実施形態は、ＳＳＤ（例えば、ＮＡＮＤフラッシュデバイス）のブロック書き込み特性及びブロック読み出し特性を有効に活用する。また、従来の手法とは異なり、未使用データをＳＳＤからＣＰＵに転送することによる帯域幅の消費はもはや発生しない。その結果、ＳＳＤでの１秒あたりの入出力操作数（ＩＯＰＳ）は、約５０万から約９，０００回に大幅に削減される。必要な性能は、ＣＰＵ、メモリ、及び帯域幅の消費量について低減コストで維持される。
【００６２】
また、データが処理される効率を改善することにより、ＳＡＴＡ  ＳＳＤを署名サーバで使用することができ、これはＰＣＩｅ  ＳＳＤよりも安価である。さらに、ＰＣＩｅ  ＳＳＤより多くのＳＡＴＡ  ＳＳＤが設定され、各ＣＰＵコアに接続されることができる。したがって、ハードウェアコストも削減される。
【００６３】
図６は、本発明による実施形態におけるＳＳＤのためのコントローラ（例えば、図２のコントローラ２１０）によって実行されるデータ重複排除方法のフローチャート６００である。
【００６４】
図６のブロック６０２において、データのブロック（フラグメント、ピース、チャンク）に対する署名ＳｃｐがコントローラによりＣＰＵから受信される。実施形態では、署名に関連付けられたアドレスＲａｄｄｒもまた、コントローラによりＣＰＵから受信される。
【００６５】
ブロック６０４において、署名ライブラリ内の情報は、コントローラによってアクセスされる。実施形態では、アドレスＲａｄｄｒは、署名ライブラリ内のエントリにインデックス付けするためにコントローラによって使用される。
【００６６】
ブロック６０６において、署名Ｓｃｐが署名ライブラリ内の情報と一致するか否かに関してコントローラによって判定が行われる。すなわち、コントローラは、署名Ｓｃｐが署名ライブラリ内の他の署名と一致するか否かを判定する。実施形態では、コントローラは、署名Ｓｃｐが、アドレスＲａｄｄｒで指し示されるエントリにある情報と一致するか否かを判定する。
【００６７】
ブロック６０８において、ブロック６０６からの結果を示す信号がコントローラからＣＰＵに送信される。署名Ｓｃｐが署名ライブラリ内の情報と一致する場合、信号は、データのブロックがＳＳＤ上に既に格納されていることを示す第１の値を有する。署名Ｓｃｐが署名ライブラリ内の情報と一致しない場合、信号は、第１の値とは異なる第２の値を有する。
【００６８】
署名Ｓｃｐが署名ライブラリ内の情報と一致しない場合、データのブロックはＳＳＤに書き込まれる。署名Ｓｃｐが署名ライブラリ内の情報と一致しない場合、署名は署名ライブラリに追加され、データのブロックに関連付けられたカウンタは初期化され、そして、インクリメントされる。署名Ｓｃｐが署名ライブラリ内の情報と一致する場合、データのブロックに関連付けられたカウンタはインクリメントされる。
【００６９】
図７は、本発明による実施形態では、ＣＰＵ及びＳＳＤを含み、ＳＳＤコントローラを備える署名サーバ１０３ｎ（図１）によって実行されるデータ重複排除方法のフローチャート７００である。
【００７０】
図７のブロック７０２において、データのブロック（ピース、フラグメント、チャンク）に対する署名Ｓｃｐがクライアント１０１ｍから受信される。ＣＰＵは、署名をＳＳＤコントローラに送信する。
【００７１】
ブロック７０４において、実施形態では、署名に基づくアドレスＲａｄｄｒが（例えば、ＣＰＵによって）判定される。そのような実施形態では、ＣＰＵは、アドレスＲａｄｄｒをＳＳＤコントローラに送信する。
【００７２】
ブロック７０６において、署名ライブラリ内の情報は、ＳＳＤコントローラによってアクセスされる。実施形態では、署名ライブラリ内のエントリは、アドレスＲａｄｄｒを用いて、ＳＳＤコントローラによって特定される。
【００７３】
ブロック７０８において、ＳＳＤコントローラは、署名Ｓｃｐと署名ライブラリからの情報とを比較する。実施形態では、ＳＳＤコントローラは、署名と、アドレスＲａｄｄｒで指し示される署名ライブラリ内のエントリの情報とを比較する。
【００７４】
ブロック７１０において、コントローラは、署名Ｓｃｐが署名ライブラリ内の情報と一致するか否かを示す信号を生成し、その信号をＣＰＵに送信する。署名Ｓｃｐが署名ライブラリ内の情報と一致する場合、データのブロックは既にＳＳＤに格納されている。署名Ｓｃｐが署名ライブラリ内の情報と一致しない場合、信号は、署名サーバからクライアントに送信され、データのブロックは、署名サーバで、その信号に応答したクライアントから受信され、データのブロックはＳＳＤに書き込まれる。
【００７５】
図８は、本発明による一実施形態における重複排除システム８００の実装例を示すブロック図である。重複排除システム８００は、ストレージクラスタ上に展開することができ、アプリケーション８０２によって格納されるバックアップコピー８０４、８０５、８０６、及び８０７に直接的に作用することができる。グローバルレベルでデータの重複を分析すると、重複排除システム８００は、関連するメタデータも更新しながら、重複排除されたブロックを削除し、固有のブロックのみを保持する。後で、特定のデータがアクセス又は更新されると、メタデータ及び固有のブロックが変更される。この機構により、バックアップ８０４−８０７によって消費されるストレージの量は、大幅に、例えば、一桁削減される。
【００７６】
ＳＡＴＡ  ＳＳＤは、ＰＣＩｅ  ＳＳＤの代わりに上記のように使用することができる。各署名サーバは、より多くのＳＳＤ、例えば、４個のＰＣＩｅカードに対して１２個のＳＡＴＡ  ＳＳＤを駆動することができる。本発明の結果として、各ＳＡＴＡ  ＳＳＤは、重複排除の必要性を満たすという観点から、ＰＣＩｅ  ＳＳＤと同等に動作する。したがって、各署名サーバの能力は３倍向上する、言い換えれば、同じ性能であれば、署名サーバの数を３分の１に減少することができる。したがって、ＳＡＴＡ  ＳＳＤの方がＰＣＩｅ  ＳＳＤよりもコストがかからず、必要な署名サーバが少なくて済むため、コストが削減される。さらに、大量の不要なデータを検索する必要性を排除することによって、コンピュータリソースを節約することができる。
【００７７】
前述の開示は、特定のブロック図、フローチャート、及び例を用いて様々な実施形態を説明しているが、本明細書に記載及び／又は図示された各ブロック図の構成要素、各フローチャートステップ、各動作及び／又は各構成要素は、広範囲のハードウェア構成、ソフトウェア構成、又はファームウェア構成（又はそれらの任意の組み合わせ）を使用して、個別に及び／又は集合的に実現し得る。さらに、同じ機能を実現するために他の多くのアーキテクチャを実装できるため、他の構成要素に含まれる構成要素のいずれの開示も例として考慮されるべきである。
【００７８】
本明細書に記載及び／又は例示されているプロセスパラメータ及びステップの順序は、単なる一例として示されており、要望に応じて変更することができる。例えば、本明細書において図示及び／又は説明されたステップは、特定の順序で示され又は議論され得るが、これらのステップは、必ずしも図示又は説明された順序で実行される必要はない。本明細書において説明及び／又は図示された様々な例示的な方法は、本明細書に記載又は図示された１つ又は複数のステップを省略することもでき、又は開示されたステップに加えて追加のステップを含むこともできる。
【００７９】
本明細書では、様々な実施形態を完全に機能するコンピューティングシステムとの関連で説明及び／又は図示したが、これらの例示的な実施形態の１つ又は複数は、実際に配布を実行するために使用される特定のタイプのコンピュータ可読媒体に関係なく、さまざまな形態でプログラムとして配布され得る。本明細書に開示された実施形態はまた、特定のタスクを実行するソフトウェアモジュールを使用して実装されてもよい。これらのソフトウェアモジュールは、コンピュータ可読記録媒体又はコンピューティングシステムに格納され得るスクリプト、バッチ、又は他の実行可能ファイルを含み得る。これらのソフトウェアモジュールは、本明細書に開示された１つ又は複数の例示的な実施形態を実施するためにコンピューティングシステムを構成してもよい。本明細書で開示される１つ又は複数のソフトウェアモジュールは、クラウドコンピューティング環境で実装されてもよい。クラウドコンピューティング環境は、インターネットを介して様々なサービス及びアプリケーションを提供し得る。これらのクラウドベースのサービス（例えば、サービスとしてのソフトウェア、サービスとしてのプラットフォーム、サービスとしてのインフラストラクチャなど）は、ウェブブラウザ又は他のリモートインタフェースを介してアクセス可能であり得る。本明細書で説明される様々な機能は、リモートデスクトップ環境又は他の任意のクラウドベースのコンピューティング環境を介して提供されてもよい。
【００８０】
構成要素は、構造的特徴及び／又は方法論的動作に特有の言語で説明されているが、開示において規定される構成要素は、必ずしも上記の特定の特徴又は特定の動作に限定されないと理解すべきである。むしろ、上記の特定の特徴及び特定の動作は、開示を実施する例示的な形態として公開される。
【００８１】
本発明による実施形態は、そのように説明される。本開示は特定の実施形態において説明されているが、本発明は、そのような実施形態によって限定されると解釈されるべきではなく、むしろ、添付の特許請求の範囲に従って解釈されるべきである。
【図１】
2018527681.tif 000003
【図２】
2018527681.tif 000004
【図３】
2018527681.tif 000005
【図４】
2018527681.tif 000006
【図５】
2018527681.tif 000007
【図６】
2018527681.tif 000008
【図７】
2018527681.tif 000009
【図８】
2018527681.tif 000010
【国際調査報告】
2018527681.tif 000011