(57)【特許請求の範囲】
【請求項１】
ホストシステムに連結されたメモリ装置のメモリチャンネルを経由して伝送されるデータをディスクランブリング及びスクランブリングする方法であって、
前記ホストシステムによって、データをスクランブルするために使用されるＸＯＲベクトルを発見するために前記メモリ装置に対してトレーニングモードを実行するステップと、
前記ホストシステムによって、スクランブルドトレーニングデータが前記スクランブルドトレーニングデータのメモリ位置に対応するＸＯＲベクトルと同じになるように、前記メモリチャンネルを通じて前記メモリ装置に伝送される前記スクランブルドトレーニングデータを生成するために、前記メモリ装置の全てのメモリ位置に対して全てのゼロトレーニングデータをスクランブリングアルゴリズムに入力するステップと、
前記メモリ装置によって、前記メモリチャンネルを通じて前記スクランブルドトレーニングデータを受信し、前記スクランブルドトレーニングデータを対応するメモリ位置の各々のデータに対するＸＯＲベクトルとして格納するステップと、
前記メモリ装置によって、前記トレーニングモードの後及び前記メモリ装置の機能モードの間に、特定のメモリ位置に対して前記メモリチャンネルを通じてスクランブルドデータを受信し、前記特定のメモリ位置に格納する前に前記スクランブルドデータをディスクランブルするために、前記特定のメモリ位置に対して格納された複数のＸＯＲベクトルの中の１つのＸＯＲベクトルを使用するステップと、を有することを特徴とする方法。
【請求項２】
前記メモリ装置によって、前記機能モードの間に前記特定のメモリ位置からデータを読み出す時、前記メモリチャンネルを通じて前記スクランブルドデータを前記ホストシステムに伝送する前に前記データを検索し、前記特定のメモリ位置に対して格納されたＸＯＲベクトルを使用して前記データをスクランブルするステップを更に含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ホストシステムは、前記ホストシステムのストレージディバイスドライバによって前記トレーニングモードを開始することを特徴とする請求項１に記載の方法。
【請求項４】
前記メモリ装置は、前記トレーニングモードの間に、前記メモリ装置のストレージコントローラによって前記スクランブルドトレーニングデータを受信し、ディスクランブリング及びスクランブリングアルゴリズムによって前記ＸＯＲベクトルを格納することを特徴とする請求項１に記載の方法。
【請求項５】
前記メモリ装置は、前記ＸＯＲベクトルを格納するベクトルストレージメモリを含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記機能モードの間にスクランブルドデータを受信するステップは、前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムによって、前記メモリ装置のベクトルストレージメモリから特定のメモリ位置に対して前記ＸＯＲベクトルを検索し、前記特定のメモリ位置に格納されるディスクランブルドデータを生成するために、前記ＸＯＲベクトルと前記スクランブルドデータとのＸＯＲ演算を遂行するステップを更に含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記機能モードの間に受信されたスクランブルドデータは、コントロール／ディスクリプタデータ、ステータスデータ、ユーザーデータ、及びコントロールデータの中の少なくとも１つを含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記スクランブルドデータが前記コントロール／ディスクリプタデータを含む場合、前記トレーニングモードの間に、対応するコントロール／ディスクリプタデータのメモリ位置のそれぞれのデータに対するＸＯＲベクトルを格納することを特徴とする請求項７に記載の方法。
【請求項９】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記機能モードの間に、前記ＸＯＲベクトルを使用して前記コントロール／ディスクリプタデータをディスクランブルすることを特徴とする請求項８に記載の方法。
【請求項１０】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記スクランブルドデータが前記ステータスデータを含む場合、前記トレーニングモードの間に、対応するステータスデータのメモリ位置のそれぞれのデータに対するＸＯＲベクトルを格納することを特徴とする請求項７に記載の方法。
【請求項１１】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記機能モードの間に、前記ＸＯＲベクトルを使用して前記ステータスデータをスクランブルすることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記スクランブルドデータが前記ユーザーデータ及び前記コントロールデータを含む場合、前記トレーニングモードの間に、対応するユーザーデータのメモリ位置のそれぞれのデータに対するＸＯＲベクトルを格納することを特徴とする請求項７に記載の方法。
【請求項１３】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、
前記メモリ装置からの読み出しの場合、前記機能モードの間に、前記ユーザーデータ及び前記コントロールデータをスクランブルするために前記ＸＯＲベクトルを使用し、
前記メモリ装置への書き込みの場合、前記機能モードの間に、前記メモリ装置に書き込む前に前記ユーザーデータ及び前記コントロールデータをディスクランブルすることを特徴とする請求項１２に記載の方法。
【請求項１４】
前記メモリ装置は、前記メモリ装置のベクトルストレージメモリに前記ＸＯＲベクトルを格納し、
前記ベクトルストレージメモリは、他の領域に分割され、前記他の領域は、前記コントロール／ディスクリプタデータのベクトル領域、前記ステータスデータのベクトル領域、前記ユーザーデータのベクトル領域、及び前記コントロールデータのベクトル領域の中の少なくとも１つ以上を含み、前記他の領域の対応する種類のデータに対するＸＯＲベクトルを格納することを特徴とする請求項７に記載の方法。
【請求項１５】
ホストシステムに連結されたメモリ装置のメモリチャンネルを経由して伝送されるデータをディスクランブリング及びスクランブリングするシステムであって、
前記ホストシステムにインストールされたストレージディバイスドライバと、
前記メモリ装置のストレージコントローラと、を備え、
前記ストレージディバイスドライバは、
データをスクランブルするために使用されるＸＯＲベクトルを発見するために前記メモリ装置に対してトレーニングモードを実行し、
スクランブルドトレーニングデータが前記スクランブルドトレーニングデータのメモリ位置に対応するＸＯＲベクトルと同じになるように、前記メモリチャンネルを通じて前記メモリ装置に伝送される前記スクランブルドトレーニングデータを生成するために、前記メモリ装置の全てのメモリ位置に対して全てのゼロトレーニングデータをスクランブリングアルゴリズムに入力し、
前記ストレージコントローラは、
前記メモリチャンネルを通じて前記スクランブルドトレーニングデータを受信し、前記スクランブルドトレーニングデータを対応するメモリ位置の各々のデータに対するＸＯＲベクトルとして格納し、
前記トレーニングモードの後及び前記メモリ装置の機能モードの間に、特定のメモリ位置に対して前記メモリチャンネルを通じてスクランブルドデータを受信し、前記特定のメモリ位置に格納する前に前記スクランブルドデータをディスクランブルするために、前記特定のメモリ位置に対して格納された複数のＸＯＲベクトルの中の１つのＸＯＲベクトルを使用することを特徴とするシステム。
【請求項１６】
前記メモリ装置は、前記機能モードの間に前記特定のメモリ位置からデータを読み出す時、前記メモリチャンネルを通じて前記スクランブルドデータを前記ホストシステムに伝送する前に前記データを検索し、前記特定のメモリ位置に対して格納されたＸＯＲベクトルを使用して前記データをスクランブルすることを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記メモリ装置は、前記トレーニングモードの間に、前記メモリ装置のストレージコントローラによって前記スクランブルドトレーニングデータを受信し、ディスクランブリング及びスクランブリングアルゴリズムによって前記ＸＯＲベクトルを格納することを特徴とする請求項１５に記載のシステム。
【請求項１８】
前記メモリ装置は、前記ＸＯＲベクトルを格納するベクトルストレージメモリを含むことを特徴とする請求項１７に記載のシステム。
【請求項１９】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記機能モードの間にスクランブルドデータを受信する時、前記メモリ装置のベクトルストレージメモリから特定のメモリ位置に対して前記ＸＯＲベクトルを検索し、前記特定のメモリ位置に格納されるディスクランブルドデータを生成するために、前記ＸＯＲベクトルと前記スクランブルドデータとのＸＯＲ演算を遂行することを特徴とする請求項１５に記載のシステム。
【請求項２０】
前記機能モードの間に受信されたスクランブルドデータは、コントロール／ディスクリプタデータ、ステータスデータ、ユーザーデータ、及びコントロールデータの中の少なくとも１つを含むことを特徴とする請求項１５に記載のシステム。
【請求項２１】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記スクランブルドデータが前記コントロール／ディスクリプタデータを含む場合、前記トレーニングモードの間に、対応するコントロール／ディスクリプタデータのメモリ位置のそれぞれのデータに対するＸＯＲベクトルを格納することを特徴とする請求項２０に記載のシステム。
【請求項２２】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記機能モードの間に、前記ＸＯＲベクトルを使用して前記コントロール／ディスクリプタデータをディスクランブルすることを特徴とする請求項２１に記載のシステム。
【請求項２３】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記スクランブルドデータが前記ステータスデータを含む場合、前記トレーニングモードの間に、対応するステータスデータのメモリ位置のそれぞれのデータに対するＸＯＲベクトルを格納することを特徴とする請求項２０に記載のシステム。
【請求項２４】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記機能モードの間に、前記ＸＯＲベクトルを使用して前記ステータスデータをスクランブルすることを特徴とする請求項２３に記載のシステム。
【請求項２５】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記スクランブルドデータが前記ユーザーデータ及び前記コントロールデータを含む場合、前記トレーニングモードの間に、対応するユーザーデータのメモリ位置のそれぞれのデータに対するＸＯＲベクトルを格納することを特徴とする請求項２０に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳＳＤ通信プロトコルのためのＸＯＲ基盤のスクランブリング及びディスクランブリング方法及びシステムに関する。
【背景技術】
【０００２】
ソリッドステートドライブ（ＳＳＤ）は一般的なダイナミックランダムアクセスメモリ（ＤＲＡＭ）とは異なる。異なる理由としては、ＳＳＤの場合、ホストがコントロール情報をＳＳＤに伝送することが必要であり、ホストがステータス情報を受信することが必要であるためである。ステータス情報はＳＳＤによって生成される。ＤＲＡＭチャンネルを通じてホストシステムとＳＳＤとの間のデータ通信は非常に複雑になる。データ通信が複雑な理由は、データスクランブリングの使用及び選択的なエラー訂正コード（ＥＣＣ）保護、そしてその他のデータ保護技法のためである。大部分のスクランブリング技法はホストメモリコントローラによって遂行される。スクランブリング技法は、擬似ランダム（しかし、固定の）パターンを生成し、生成されたパターンと伝送されるデータとを用いて排他的論理和（ＸＯＲ）演算を遂行することを伴う。データがＸＯＲ演算されたことを示すパターン値は、固定されたシード（ｓｅｅｄ）又はシードの一部の組合せに基づくものであり、伝送されるメモリアドレスに基づくものである。
【０００３】
ＤＤＲフォームファクタストレージ装置について、ストレージ装置のメモリコントローラは、コマンドを実行し、ストレージ内にデータを格納するために、メモリバスを通じて受信されるデータをディスクランブルすることが必要である。同様に、ストレージから出力されたデータが正しくホストシステムに再び伝送されるようにするため、ストレージ装置のメモリコントローラはデータがホストシステムによって認識されるようにデータをスクランブルすることが必要である。このようなことはストレージ装置のメモリコントローラが同一のスクランブリング及び／又はＥＣＣを適用することを要求する。同一のスクランブリング及び／又はＥＣＣはホストメモリコントローラによって適用されたものと同じである。即ち、これはスクランブリングアルゴリズムが逆になり、ＤＤＲチャンネルインタイム（ｃｈａｎｎｅｌ  ｉｎ  ｔｉｍｅ）でデータ依存性を有しないことを意味する。
【０００４】
ホストシステムによって使用されたスクランブリングアルゴリズムの完全なリバースエンジニアリング（ｆｕｌｌ  ｒｅｖｅｒｓｅ  ｅｎｇｉｎｅｅｒｉｎｇ）は難しい。スクランブリングアルゴリズムが知られている場合にも、スクランブリングアルゴリズムは１つのベンダ（ｖｅｎｄｏｒ）やプラットフォーム（ｐｌａｔｆｏｒｍ）から他のものに変わり得る。
【０００５】
ＳＳＤ通信プロトコルについて改善されたＸＯＲ基盤のスクランブラー／ディスクランブラーが必要であり、望ましくはホストメモリコントローラによって供給されるスクランブリングアルゴリズムの知識や完全なリバースエンジニアリングを要求しないことが必要である。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、ＳＳＤ通信プロトコルのためのＸＯＲ基盤のスクランブリング及びディスクランブリング方法及びシステムを提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するためになされた本発明の一態様によるホストシステムに連結されたメモリ装置のメモリチャンネルを経由して伝送されるデータをディスクランブリング及びスクランブリングする方法は、前記ホストシステムによって、データをスクランブルするために使用されるＸＯＲベクトルを発見するために前記メモリ装置に対してトレーニングモードを実行するステップと、前記メモリ装置によって、前記メモリチャンネルを通じてスクランブルドトレーニングデータを受信し、前記スクランブルドトレーニングデータを対応するメモリ位置の各々のデータに対するＸＯＲベクトルとして格納するステップと、前記メモリ装置によって、前記トレーニングモードの後、前記メモリ装置の機能モードの間に特定のメモリ位置に対して前記メモリチャンネルを通じてスクランブルドデータを受信し、前記特定のメモリ位置に格納する前に前記スクランブルドデータをディスクランブルするために前記特定のメモリ位置に対して格納されたＸＯＲベクトルを使用するステップと、を有し、前記ＸＯＲベクトルの発見は、前記スクランブルドトレーニングデータを生成するために前記メモリ装置の全てのメモリ位置に対して全てのゼロトレーニングデータをスクランブリングアルゴリズムに入力することによって遂行され、前記スクランブルドトレーニングデータは、前記メモリ装置のメモリチャンネルに伝送され、前記スクランブルドトレーニングデータのメモリ位置に対応するＸＯＲベクトルと同じである。
【０００８】
前記方法は、前記メモリ装置によって、前記機能モードの間に前記特定のメモリ位置からデータを読み出す時、前記メモリチャンネルを通じて前記スクランブルドデータを前記ホストシステムに伝送する前に前記データを検索し、前記特定のメモリ位置に対して格納されたＸＯＲベクトルを使用して前記データをスクランブルするステップを更に含み得る。
前記ホストシステムは、ストレージディバイスドライバによって前記トレーニングモードを開始し得る。
前記メモリ装置は、前記トレーニングモードの間、ストレージコントローラによって前記スクランブルドトレーニングデータを受信し、ディスクランブリング及びスクランブリングアルゴリズムによって前記ＸＯＲベクトルを格納し得る。
前記メモリ装置は、前記ＸＯＲベクトルを格納するベクトルストレージメモリを含み得る。
前記機能モードの間にスクランブルドデータを受信するステップは、前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムによって、前記メモリ装置のベクトルストレージメモリから特定のメモリ位置に対して前記ＸＯＲベクトルを検索し、ディスクランブルドデータを生成するために前記ＸＯＲベクトル及び前記スクランブルドデータに対するＸＯＲ演算を遂行するステップを更に含み、前記ディスクランブルドデータは、前記特定のメモリ位置に格納され得る。
前記機能モードの間に受信されたスクランブルドデータは、コントロール／ディスクリプタデータ、ステータスデータ、ユーザーデータ、及びコントロールデータの中の少なくとも１つを含み得る。
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記スクランブルドデータがコントロール／ディスクリプタデータを含む場合、前記トレーニングモードの間に対応するコントロール／ディスクリプタデータメモリ位置のそれぞれのデータに対するＸＯＲベクトルを格納し得る。
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記機能モードの間に前記ＸＯＲベクトルを使用して前記コントロール／ディスクリプタデータをディスクランブルし得る。
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記スクランブルドデータが前記ステータスデータを含む場合、前記トレーニングモードの間に対応するステータスデータメモリ位置のそれぞれのデータに対するＸＯＲベクトルを格納し得る。
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記機能モードの間に前記ＸＯＲベクトルを使用して前記ステータスデータをスクランブルし得る。
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記スクランブルドデータが前記ユーザーデータ及び前記コントロールデータを含む場合、前記トレーニングモードの間に対応するユーザーデータメモリ位置のそれぞれのデータに対するＸＯＲベクトルを格納し得る。
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記メモリ装置からの読み出しの場合、前記機能モードの間、前記ユーザーデータ及び前記コントロールデータをスクランブルするために前記ＸＯＲベクトルを使用し、前記メモリ装置への書き込みの場合、前記機能モードの間、前記メモリ装置に書き込む前に前記ユーザーデータ及び前記コントロールデータをディスクランブルし得る。
前記メモリ装置は、前記メモリ装置のベクトルストレージメモリに前記ＸＯＲベクトルを格納し、前記ベクトルストレージメモリは、他の領域に分割され、前記他の領域は、コントロール／ディスクリプタデータベクトル領域、ステータスデータベクトル領域、ユーザーデータベクトル領域、及びコントロールデータベクトル領域の中の少なくとも１つ以上を含み、前記他の領域の対応する種類のデータに対するＸＯＲベクトルを格納し得る。
【０００９】
上記目的を達成するためになされた本発明の一態様によるホストシステムに連結されたメモリ装置のメモリチャンネルを経由して伝送されるデータをディスクランブリング及びスクランブリングするシステムは、前記ホストシステムにインストールされたストレージディバイスドライバと、前記メモリ装置にストレージコントローラと、を備え、前記ストレージディバイスドライバは、データをスクランブルするために使用されるＸＯＲベクトルを発見するために前記メモリ装置に対してトレーニングモードを実行し、前記ストレージコントローラは、前記メモリチャンネルを通じてスクランブルドトレーニングデータを受信し、前記スクランブルドトレーニングデータを対応するメモリ位置の各々のデータに対するＸＯＲベクトルとして格納し、前記トレーニングモードの後、前記メモリ装置の機能モードの間に特定のメモリ位置に対して前記メモリチャンネルを通じてスクランブルドデータを受信し、前記特定のメモリ位置に格納する前に前記スクランブルドデータをディスクランブルするために前記特定のメモリ位置に対して格納されたＸＯＲベクトルを使用し、前記ＸＯＲベクトルの発見は、前記スクランブルドトレーニングデータを生成するために前記メモリ装置の全てのメモリ位置に対して全てのゼロトレーニングデータをスクランブリングアルゴリズムに入力することによって遂行され、前記スクランブルドトレーニングデータは、前記メモリ装置のメモリチャンネルに伝送され、前記スクランブルドトレーニングデータのメモリ位置に対応するＸＯＲベクトルと同じである。
【発明の効果】
【００１０】
本発明のＳＳＤ通信プロトコルのためのＸＯＲ基盤のスクランブリング及びディスクランブリング方法及びシステムによれば、ホストメモリコントローラによって提供されるスクランブリングアルゴリズムの知識や完全なリバースエンジニアリングを要求することがなくても、チャンネルデータをスクランブル／ディスクランブルすることができ、チャンネルデータのスクランブル／ディスクランブルは、ホストメモリコントローラによって提供される何らかのエラー訂正コード（ＥＣＣ）アルゴリズムとは独立的であるという利点がある。
【図面の簡単な説明】
【００１１】
【図１】ホストシステムとＳＳＤとの間のメモリチャンネルをスクランブリング／ディスクランブリングする本発明の一実施形態を示すブロック図である。
【図２】ホストシステムの典型的なスクランブリングアルゴリズムの動作を示した図である。
【図３】ＳＳＤのためのメモリチャンネルをディスクランブリング／スクランブリングするステップを示すフローチャートである。
【図４】ＳＳＤ内のディスクランブリング／スクランブリングアルゴリズムによって遂行される過程を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。図面内の同じ参照符号は全体に亘って同じ構成要素を示す。
【００１３】
本発明の長所及び特徴とこれらを達成する方法は、以下の実施形態の詳細な説明及び図面を参照することによってより容易に理解される。しかし、本発明の基本的な概念は様々な他の形態に具体化され得るため、ここに言及する実施形態に制限して解釈してはならない。むしろ、これらの実施形態は、本分野の通常の知識を有する者にとって、この開示が徹底して完全になり、本発明の概念を完全に伝達するために提供される。図面内で層の厚さ及び領域は明確性のために誇張される。
【００１４】
用語“１つ（ａ）”、“いち（ａｎ）”、及び“その（ｔｈｅ）”の使用と発明（特にクレームの文脈で）を記述する文脈内の類似な参照（ｒｅｆｅｒｅｎｔｓ）は異なって表示するか、或いは文脈によって明確に矛盾しない限り、単数及び複数の全てをカバーするものとして解釈される。用語“含む（ｃｏｍｐｒｉｓｉｎｇ）”、“有する（ｈａｖｉｎｇ）”、”含む（ｉｎｃｌｕｄｉｎｇ）”、及び”保有する（ｃｏｎｔａｉｎｉｎｇ）”は異なって記載しない限り、自由な（ｏｐｅｎ−ｅｎｄｅｄ）用語（例えば、含まれるは、それに限定されないことを意味する）として解釈される。
【００１５】
ここに使用するものとして、用語“アルゴリズム”又は“モジュール”はソフトウェアやハードウェアの構成要素に制限されない。ハードウェアの構成要素は特定のタスクを遂行するＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）又はＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）が含まれる。アルゴリズム又はモジュールは、アドレス可能なストレージ媒体内に常駐するように適切に構成され、１つ以上のプロセッサを実行させるために適切に構成される。従って、アルゴリズム又はモジュールは例示的な方法で構成要素を含む。構成要素は、ソフトウェア構成要素（ｓｏｆｔｗａｒｅ  ｃｏｍｐｏｎｅｎｔｓ）、オブジェクト指向のソフトウェア構成要素（ｏｂｊｅｃｔ−ｏｒｉｅｎｔｅｄ  ｓｏｆｔｗａｒｅ  ｃｏｍｐｏｎｅｎｔｓ）、クラス構成要素及びタスク構成要素（ｃｌａｓｓ  ｃｏｍｐｏｎｅｎｔｓ  ａｎｄ  ｔａｓｋ  ｃｏｍｐｏｎｅｎｔｓ）、プロセス（ｐｒｏｃｅｓｓｅｓ）、機能（ｆｕｎｃｔｉｏｎｓ）、属性（ａｔｔｒｉｂｕｔｅｓ）、プロシージャ（ｐｒｏｃｅｄｕｒｅｓ）、サブルーチン（ｓｕｂｒｏｕｔｉｎｅｓ）、プログラムコードのセグメント（ｓｅｇｍｅｎｔｓ  ｏｆ  ｐｒｏｇｒａｍ  ｃｏｄｅ）、ドライバ（ｄｒｉｖｅｒｓ）、ファームウェア（ｆｉｒｍｗａｒｅ）、マイクロコード（ｍｉｃｒｏｃｏｄｅ）、回路（ｃｉｒｃｕｉｔｒｙ）、データ（ｄａｔａ）、データベース（ｄａｔａｂａｓｅｓ）、データ構造（ｄａｔａ  ｓｔｒｕｃｔｕｒｅｓ）、テーブル（ｔａｂｌｅｓ）、アレイ（ａｒｒａｙｓ）、及び変数（ｖａｒｉａｂｌｅｓ）を含む。構成要素について提供する機能及び構成要素又はモジュールは、更に小さい構成要素又はモジュールに結合されるか、或いは付加的な構成要素、及び構成要素又はモジュールに更に分離される。
【００１６】
異なって定義しない限り、ここに使用する全ての技術的及び科学的な用語は本発明が属する本分野の通常の知識を有する者にとって通常的に理解されるもののような意味を有する。いずれか及び全ての例の使用又はここに提供する例示的な用語は、本発明をより明確にするための意図として使用するものであり、異なって特定しない限り、本発明の範囲を制限するものではない。更に、異なって定義しない限り、一般的に使用される辞書内に定義された全ての用語は過度に厳格に解釈されない。
【００１７】
本発明はメモリ装置の通信プロトコルのためのＸＯＲ基盤のスクランブラー／ディスクランブラーを提供する。本発明はスクランブリングの知識やリバースエンジニアリングなしに、そしてホストシステムによって適用されるＥＣＣ方法なしに、スクランブラー／ディスクランブラーを提供する。ここに開示する方法はスクランブリング／エラー訂正が発生した場合に他の種類のメモリ装置やメモリチャンネルについても応用可能である。しかし、ここに開示する方法はメモリ装置がＳＳＤ（ｓｏｌｉｄ−ｓｔａｔｅ  ｄｒｉｖｅ）を含む場合の実施形態について説明する。ＳＳＤは、例えば、シングル、ダブル、又はクワッドレートフォームファクタ（ｑｕａｄ  ｒａｔｅ  ｆｏｒｍ−ｆａｃｔｏｒ）ＳＳＤである。
【００１８】
ＳＳＤトレーニングモードの間、スクランブリングマスク値がトレーニングシークェンスの使用を通じて発見されてＳＳＤ内に格納される。スクランブリングマスク値は、排他的論理和（ＸＯＲ）ベクトルとも称され、ＳＳＤ内の各メモリ位置（ｅａｃｈ  ｍｅｍｏｒｙ  ｌｏｃａｔｉｏｎ）のデータをスクランブルするためにホストシステムによって使用される。即ち、スクランブリングマスク値、若しくはＸＯＲベクトルは、ＳＳＤの機能モードの間にメモリチャンネルを通じて受信されたデータをディスクランブルし、伝送するデータをスクランブルするために使用される。
【００１９】
図１は、ホストシステムとＳＳＤとの間のメモリチャンネルをスクランブリング／ディスクランブリングする本発明の一実施形態を示すブロック図であり、ホストシステムとＤＤＲフォームファクタＳＳＤとの間のＤＤＲチャンネルをスクランブリング／ディスクランブリングするブロック図である。図１のシステムはホストシステムによって提供されるスクランブリングアルゴリズムの先行知識やリバースエンジニアリングを要求しない。
【００２０】
本システムは、メモリチャンネル１４を通じてソリッドステートドライブ（ＳＳＤ）１２（メモリ装置）に連結されたホストシステム１０を含む。公知のように、ＳＳＤは、データを格納するための機械的な動き部分がなく、データを維持するために持続的な電力を必要とすることもない。本実施形態で、ホストシステム１０の構成要素は、プロセッサ（ＣＰＵ）２２、オペレーティングシステム（ＯＳ）２４、及びメモリチャンネル１４に連結されたメモリコントローラ１６を含む。メモリコントローラ１６はデジタル回路である。デジタル回路はデータの流れを管理する。データの流れは、図示したＳＳＤ１２との間で、ホストシステムのメモリから来るデータとホストシステムのメモリに行くデータの流れを意味する。メモリコントローラ１６はプロセッサ２２のような別途のチップで具現されるか、或いは他のチップに統合される。メモリコントローラ１６はスクランブリング／ディスクランブリングアルゴリズム２８によって遂行されるメモリスクランブリング機能を付加的に提供する。スクランブリング／ディスクランブリングアルゴリズム２８はメモリに伝送されるユーザーデータを擬似ランダムパターン（ｐｓｅｕｄｏ−ｒａｎｄｏｍ  ｐａｔｔｅｒｎｓ）に変換するアルゴリズムである。
【００２１】
一実施形態で、ＳＳＤ１２がダブルデータレートＤＤＲフォームファクタＳＳＤとして具現される場合、メモリチャンネル１４はＤＤＲメモリチャンネルを含む。ＤＤＲフォームファクタＳＳＤは、メモリバスクロック信号の上昇及び下降エッジの全てからデータを伝送することで、ＤＤＲメモリチャンネルの使用を倍加する。
【００２２】
ＳＳＤ１２の主要な構成要素はストレージコントローラ１８とホストシステム１０からデータを格納するメモリ２１である。ストレージコントローラ１８はメモリ２１内に格納されたデータを管理する。ストレージコントローラ１８は通信プロトコルを介してメモリチャンネル１４を通じてホストシステム１０と通信する。メモリ２１は任意の類型の不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）を含む。不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）は、フラッシュメモリ、強誘電性ＲＡＭ（ＦｅＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、相変化メモリ（ＰＣＭ）、ミリパッドメモリ（ｍｉｌｌｉｐｅｄｅ  ｍｅｍｏｒｙ）等を含む。
【００２３】
図２は、ホストシステムの典型的なスクランブリングアルゴリズム（２８）の動作を示した図である。動作の間、ホストシステムのメモリコントローラ１６はＳＳＤ１２内に格納されるデータ２０６を受信する。ホストシステムのメモリコントローラ１６は固定シード及びメモリアドレス２００をデータ２０６と共に受信する。スクランブリング／ディスクランブリングアルゴリズム２８は各ＤＤＲチャンネルサイクルに対してランダムシード（例えば、ビットパターン）を生成する。ランダムシードは本明細書でＸＯＲベクトル２０２と称する。一実施形態で、ＸＯＲベクトル２０２は線型フィードバックシフトレジスター（ＬＦＳＲ）２０４を利用して生成される。或いは、ＸＯＲベクトル２０２は、固定シード、又は固定シードと伝送されたメモリアドレス２００との組合せを利用する他のメカニズムを利用して生成される。スクランブリング／ディスクランブリングアルゴリズム２８は排他的論理和（ＸＯＲ）演算２０８を遂行する。ＸＯＲ演算はＸＯＲベクトル２０２とメモリチャンネル１４に入るデータ２０６に対して遂行される。ＸＯＲ演算はスクランブルドデータ３０を生成するために与えられたサイクル内で遂行される。ＬＦＳＲ２０４はＸＯＲベクトル２０２を生成するためにフィードバック多項式を利用する。スクランブルドデータ３０はメモリチャンネル１４を通じてＳＳＤ１２に送られ、アンスクランブル（ｕｎｓｃｒａｍｂｌｅｄ）されてメモリ２１に格納される。
【００２４】
ＳＳＤ１２からユーザーデータとステータス情報とが再びホストシステムに正しく伝送されるようにするため、ホストシステムのメモリコントローラ１６によって使用されたような変換がＳＳＤ１２内で適用されるべきである。これは多様なホストシステム内で使用されたスクランブリングアルゴリズムをリバースエンジニアリングするためのＳＳＤ製造業者（ｍａｎｕｆａｃｔｕｒｅｒｓ）を要求する。これはＳＳＤがそのホストシステム１０と互換（両立）できるようにするためである。また、ホストシステムのスクランブリングアルゴリズムがＳＳＤ製造業者によって知られていても、スクランブリングアルゴリズムはホスト業者やプラットフォーム毎に異なる。スクランブリングアルゴリズムが異なる場合、相違するスクランブリング／ディスクランブリング方式がＳＳＤ１２内に具現されなければならない。
【００２５】
本実施形態は、ホストシステムのメモリコントローラによって適用されるスクランブリングのリバースエンジニアリング又は知識がなくても、ＳＳＤに対するメモリチャンネルをディスクランブル／スクランブルする方法及びシステムを提供する。本実施形態は、ホストシステム１０にインストールされて実行されるストレージディバイスドライバ２６を活用する。また、本実施形態はＳＳＤのストレージコントローラ１８によって実行されるディスクランブリング／スクランブリングアルゴリズム３２を利用する。ＳＳＤのストレージコントローラ１８はホストシステム１０から受信したスクランブルドデータ３０をディスクランブルする。ＳＳＤのストレージコントローラ１８はメモリ２１からホストシステム１０に送られる出力データをスクランブルする。公知のように、ディバイスドライバはコンピュータープログラムである。コンピュータープログラムは装着されたハードウェア装置（この場合にはＳＳＤ１２）にソフトウェアインターフェイスを提供する。ハードウェア装置はオペレーティングシステム２４及び他のコンピュータープログラムを有効にする。他のコンピュータープログラムは装置のハードウェア機能をアクセスするためのプログラムである。
【００２６】
データ２０６とＸＯＲされるＸＯＲベクトル２０２が、固定されたシード又は固定されたシードとの組合せに基づくことがあるため、ストレージディバイスドライバ２６は、ＳＳＤ１２上の任意に与えられた物理的なメモリ位置に対して、全てのメモリ位置に対するゼロデータのトレーニングシークェンスに基づいて決定されるように構成される。トレーニングシークェンスは各メモリ位置に対するホストシステムのスクランブリング／ディスクランブリングアルゴリズム２８によって使用されるＸＯＲベクトルに対応する。ＸＯＲベクトル２０２は、メモリチャンネル１４を通じてストレージコントローラ１８に伝送され、ＸＯＲベクトル３４として格納される。
【００２７】
本実施形態によると、ＳＳＤ１２は、ホストシステム１０によって発見されたＸＯＲベクトル３４を格納するベクトルストレージメモリ２０を具備する。所定のメモリアドレスによってメモリ２１内に格納されるデータはアンスクランブルされる。データのアンスクランブルは、該当メモリアドレスに対してベクトルストレージメモリ２０内に格納されたＸＯＲベクトル３４を利用して遂行される。
【００２８】
本実施形態で、ベクトルストレージメモリ２０はＳＲＡＭメモリ又はレジスターセットとして具現される。一実施形態で、ベクトルストレージメモリ２０はストレージコントローラ１８の内部に位置する。或いは、ベクトルストレージメモリ２０はストレージコントローラ１８及びメモリ２１の全てから分離されて位置する。他の実施形態で、ベクトルストレージメモリ２０はメモリ２１の一部として位置する。
【００２９】
図３は、ＳＳＤのためのメモリチャンネルを通じて伝送されたデータをディスクランブリング／スクランブリングするステップを示すフローチャートである。図３のステップはＸＯＲベクトル２０２を発見するためにＳＳＤ１２に対してトレーニングモードを実行することによって開始される。ＸＯＲベクトル２０２はデータをスクランブルするためにホストシステムによって使用される。ＸＯＲベクトル２０２の発見はスクランブルドトレーニングデータ３０を生成するためにＳＳＤ１２の全てのメモリ位置に対して全てのゼロトレーニングデータをスクランブリングアルゴリズム（２８）に入力することによって遂行される。スクランブルドトレーニングデータ３０はＳＳＤ１２のメモリチャンネル１４を通じてメモリ２１に伝送され、スクランブルドトレーニングデータ３０はそのメモリ位置に対応するＸＯＲベクトルと同じである（ステップ３００）。本実施形態で、トレーニングモードは、初期化され、ホストシステム１０のストレージディバイスドライバ２６によって遂行される。
【００３０】
ＳＳＤ１２は、メモリチャンネルを通じてスクランブルドトレーニングデータを受信し、スクランブルドトレーニングデータを対応するメモリ位置の各々のデータに対するＸＯＲベクトル３４として格納する（ステップ３０２）。
【００３１】
本実施形態で、ＳＳＤのストレージコントローラ１８はスクランブルドトレーニングデータを受信する。ディスクランブリング／スクランブリングアルゴリズム３２はＸＯＲベクトルを格納する。本実施形態に従って、ＳＳＤ１２のベクトルストレージメモリ２０はトレーニングモードの間に発見されたＸＯＲベクトル３４を格納するために使用される。ＳＳＤ１２内で、各々のメモリ位置に対するＸＯＲベクトル３４が一旦発見されて格納されると、ストレージディバイスドライバ２６はトレーニングモードが完了したＳＳＤ１２をシグナリングする。
【００３２】
ＳＳＤ１２は、トレーニングモードの後、ＳＳＤ１２の機能モードの間に指定された特定のメモリ位置に対してメモリチャンネルを通じてスクランブルドデータを受信する。ＳＳＤ１２は、特定のメモリ位置に書き込む前に、スクランブルデータをディスクランブルするために特定のメモリ位置に対して格納されたＸＯＲベクトルを使用する（ステップ３０４）。
【００３３】
本実施形態で、ＳＳＤ１２のストレージコントローラ１８はスクランブルドデータを受信する。ディスクランブリング／スクランブリングアルゴリズム３２はデータをディスクランブルするためにＸＯＲベクトル３４を使用する。
【００３４】
ＳＳＤ１２は、ＳＳＤ１２の機能モードの間に特定のメモリ位置からデータを読み出す時、データを検索する。ＳＳＤ１２は、データをスクランブルするために特定のメモリ位置に対して格納されたＸＯＲベクトルを使用する。データの検索はメモリチャンネルを通じてホストシステムにスクランブルドデータを送信する前に行われる（ステップ３０６）。
【００３５】
図４の（ａ）及び（ｂ）は、ＳＳＤ１２内のディスクランブリング／スクランブリングアルゴリズム３２によって遂行される過程を示す図である。図４（ａ）はスクランブルドデータがホストシステムから受信される場合を示し、図４（ｂ）はメモリからスクランブリングデータがホストシステムに送られる場合を示す。図４の（ａ）及び（ｂ）の両方に示すように、ディスクランブリング／スクランブリングアルゴリズム３２は受信データとメモリバスアドレスとに基づいて動作する。図４（ａ）で、受信データ４００はホストシステム１０からスクランブルされたデータを示す。ディスクランブリング／スクランブリングアルゴリズム３２はベクトルストレージメモリ２０の特定のメモリ位置に対するＸＯＲベクトル４０４を出力するためにメモリバスアドレス４０２を使用する。ディスクランブリング／スクランブリングアルゴリズム３２はディスクランブルドデータ４１２を生成するためにＸＯＲベクトル４０４及び受信データ４００に対して排他的論理和（ＸＯＲ）演算４１０を遂行する。
【００３６】
図４（ｂ）で、受信データ４００’はメモリ２１から読出されたデータを示す。ディスクランブリング／スクランブリングアルゴリズム３２はベクトルストレージメモリ２０の特定のメモリ位置に対するＸＯＲベクトル４０４’を出力するためにＤＤＲメモリバスアドレス４０２’を使用する。ディスクランブリング／スクランブリングアルゴリズム３２はスクランブルドデータ４１４を生成するためにＸＯＲベクトル４０４’及び受信データ４００に対して排他的論理和（ＸＯＲ）演算４１０を遂行する。ＸＯＲ演算４１０はメモリチャンネル１４を通じてホストシステム１０にスクランブルドデータ４１４を伝送する前に遂行される。
【００３７】
上述の実施形態に示したように、ＳＳＤ１２のメモリチャンネル１４をディスクランブリング及びスクランブリングする過程は、ホストメモリコントローラ１６によって適用されたスクランブリングの全体のリバースエンジニアリング又は知識がなくても、チャンネルデータをスクランブル／ディスクランブルすることができることを示す。また、上述のメモリチャンネル１４をディスクランブリング及びスクランブリングする過程はホストメモリコントローラ１６によって適用される何らかのＥＣＣアルゴリズムとは独立的である。
【００３８】
図３について上述した過程で、機能的モードの文脈内で使用した用語“データ”はホストシステム１０とＳＳＤ１２との間に伝送される多様な種類のデータを含む。多様な種類のデータはコントロール／ディスクリプタデータ、ステータスデータ、ユーザーデータ、及びコントロールデータを含む。
【００３９】
コントロール／ディスクリプタデータの場合、ディスクランブリング／スクランブリングアルゴリズム３２はトレーニングモードの間に対応するコントロール／ディスクリプタデータのメモリ位置のそれぞれのデータに対するＸＯＲベクトルを格納する。スクランブリング／ディスクランブリングアルゴリズム３２は上述したように機能モードの間にコントロール／ディスクリプタデータをディスクランブリングするためにＸＯＲベクトルを使用する。
【００４０】
ステータスデータの場合、ディスクランブリング／スクランブリングアルゴリズム３２はトレーニングモードの間に対応するステータスメモリ位置のそれぞれのデータに対するＸＯＲベクトルを格納する。ディスクランブリング／スクランブリングアルゴリズム３２は上述したように機能モードの間にステータスデータをスクランブリングするためにＸＯＲベクトルを使用する。ＥＣＣがホストシステム１０でイネーブルされると、ディスクランブリング／スクランブリングアルゴリズム３２はスクランブルドデータをＥＣＣコードワードに加える。
【００４１】
ユーザーデータ及びコントロールデータの場合、ディスクランブリング／スクランブリングアルゴリズム３２はトレーニングモードの間に対応するユーザーデータメモリ位置のそれぞれのデータに対するＸＯＲベクトルを格納する。ディスクランブリング／スクランブリングアルゴリズム３２は、上述したように、メモリ２１からの読み出しの場合、機能モードの間、ユーザーデータ及びコントロールデータをスクランブリングするためにＸＯＲベクトルを使用する。また、メモリ２１への書き込みの場合、機能モードの間、ディスクランブリング／スクランブリングアルゴリズム３２は、上述したように、メモリ２１に書き込む前にユーザーデータ及びコントロールデータをディスクランブルする。読み出しユーザーデータ及び書き込みユーザーデータが同一のメモリ位置を共有するか、或いは他のメモリ位置を使用することが理解される。読み出し及び書き込みユーザーデータに対して同一のメモリ位置を共有する場合、ＸＯＲベクトルを格納するストレージ空間の要求は減少する。
【００４２】
従って、ベクトルストレージメモリ２０はそれぞれ異なる種類のデータのＸＯＲベクトルを格納するために他の領域（図示せず）に区分される。本実施形態で、ベクトルストレージメモリ２０は、コントロール／ディスクリプタデータベクトル領域、ステータスデータベクトル領域、ユーザーデータベクトル領域、及びコントロールデータベクトル領域の中の１つ以上を含む。
【００４３】
本実施形態で、ホストシステム１０がイネーブルされるＥＣＣを有する場合、ストレージディバイスドライバ２６はトレーニングデータとして全てのゼロＥＣＣコードワードを生成する。トレーニングデータはトレーニングモードの間にスクランブリング／ディスクランブリングアルゴリズム２８に入力される。
【００４４】
大部分の一般的なシングルエラー訂正及びダブルエラー検出（ＳＥＣＤＥＤ）ＥＣＣの具現は、全てのゼロデータについて全てのゼロコードワードを招くが、一部は異なる。ホストシステム１０のＥＣＣの具現が全てのゼロデータに対して全てのゼロコードワードを招かない状況では、図３のステップ３００はトレーニング局面を二段階に分割する。
【００４５】
第１段階で、ストレージディバイスドライバ２６はホストシステムのメモリコントローラ１６のスクランブリングをディセーブルする。ストレージディバイスドライバ２６はトレーニングデータがゼロ又はノンゼロであるか否かを判定するためにスクランブリング／ディスクランブリングアルゴリズム２８に全てのゼロトレーニングデータを相次いで入力する。これによってスクランブリングのディセーブルが遂行される。次に、各データサイクル内のＥＣＣコードワードビット位置及び全てのメモリ位置に対する位置の値はストレージコントローラ１８及びシステムファームウェアによって記録される。
【００４６】
第２段階で、ストレージディバイスドライバ２６はホストシステムのメモリコントローラ１６のスクランブリングをイネーブリングする。ストレージディバイスドライバ２６は第１段階からのＥＣＣコードワードを使用して全てのゼロをスクランブリング／ディスクランブリングアルゴリズム２８にトレーニングデータとして送る。ディスクランブリング／スクランブリングアルゴリズム３２はベクトルストレージメモリ２０内に全てのメモリ位置に対するＸＯＲベクトルを記録する。ノンゼロＥＣＣコードワードにおいて、この過程はトレーニングの間にキャプチャされた対応するＸＯＲベクトルのビットが反転されるべきであることを示す。反転位置は非スクランブルドＥＣＣコードワードが１に生成された場合に毎ビット位置になる。
【００４７】
本発明はどの様な応用にも一般的に適用される。そのような応用はノンＤＲＡＭ（ｎｏｎ−ＤＲＡＭ）メモリ装置が何らかのスクランブルドチャンネルに装着された場合及びホストと情報交換が必要である場合を含む。
【００４８】
一実施形態で、ディスクランブリング／スクランブリングアルゴリズム３２はソフトウェア構成要素で具現される。他の実施形態で、ディスクランブリング／スクランブリングアルゴリズム３２はハードウェアとソフトウェアとの組合せで具現される。ディスクランブリング／スクランブリングアルゴリズム３２、ストレージコントローラ１８、及びベクトルストレージメモリ２０を単一の構成要素として図示したが、各々の機能は小さいか、或いは大きい個数のモジュール／構成要素に結合される。例えば、一実施形態で、ディスクランブリング／スクランブリングアルゴリズム３２はディスクランブリングアルゴリズムのための第１ソフトウェア構成要素及びスクランブリングアルゴリズムのための第２ソフトウェア構成要素として具現される。他の実施形態で、ディスクランブリング／スクランブリングアルゴリズム３２、ストレージコントローラ１８、及びベクトルストレージメモリ２０は１つの集積された構成要素として具現される。
【００４９】
上述した実施形態のスクランブリング及びディスクランブリングシステムは顧客から企業まで広い範囲のストレージ市場に適用される。このシステムはシングルスタンドアローンマシン（ｓｉｎｇｌｅ  ｓｔａｎｄａｌｏｎｅ  ｍａｃｈｉｎｅ）のためのディスクに適用される。ディスクは、デスクトップコンピュータ（ｄｅｓｋｔｏｐ）、ラップトップ（ｌａｐｔｏｐ）、ワークステーション（ｗｏｒｋｓｔａｔｉｏｎ）、サーバー（ｓｅｒｖｅｒ）、及びその他に装着されるディスクを含む。システムは、ストレージアレイ（ｓｔｏｒａｇｅ  ａｒｒａｙ）、ソフトウェア定義ストレージ（ｓｏｆｔｗａｒｅ−ｄｅｆｉｎｅ  ｓｔｏｒａｇｅ：ＳＤＳ）、応用特定ストレージ（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｓｔｏｒａｇｅ）、仮想マシン（ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ：ＶＭ）、仮想デスクトップインフラストラクチャ（ｖｉｒｔｕａｌ  ｄｅｓｋｔｏｐ  ｉｎｆｒａｓｔｒｕｃｔｕｒｅ：ＶＤＩ）、コンテンツ分配網（ｃｏｎｔｅｎｔ  ｄｉｓｔｒｉｂｕｔｉｏｎ  ｎｅｔｗｏｒｋ：ＣＤＮ）、及びその他を含む。
【００５０】
一実施形態で、例えば、ＳＳＤ１２のメモリ２１は複数のフラッシュメモリのような複数の不揮発性メモリチップで形成される。他の実施形態として、メモリ２１はフラッシュメモリチップの代わりに他の種類の不揮発性メモリチップで形成される。他の種類の不揮発性メモリチップは、例えば、ＰＲＡＭ、ＦｅＲＡＭ、ＭＲＡＭ、又はその他のメモリである。代替的にメモリ２１はＤＲＡＭやＳＲＡＭ等のような揮発性メモリに形成され、二つ以上のメモリが混合された場合にハイブリッドタイプを有する。
【００５１】
メモリ装置のメモリチャンネルを経由して伝送されるデータをディスクランブリング及びスクランブリングする方法及びシステムを開示した。本発明は上述の実施形態によって説明したが、実施形態に対する変形があり得る。本発明の思想と範囲内で多様な変更が存在する。例えば、上述した実施形態は、ハードウェア、ソフトウェア、プログラム命令を含むコンピュータ読み取り可能な記録媒体、又はその組合せを利用して具現される。本実施形態に基づいて記録されたソフトウェアは、メモリ、ハードディスクのようなコンピュータ読み取り可能な記録媒体の一部の形式に格納されるか、或いはＣＤ／ＤＶＤ−ＲＯＭの一部の形式に格納される。ソフトウェアはプロセッサによって実行される。
【００５２】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【００５３】
１０    ホストシステム
１２    ソリッドステートドライブ（ＳＳＤ）
１４    メモリチャンネル
１６    メモリコントローラ
１８    ストレージコントローラ
２０    ベクトルストレージメモリ
２１    メモリ
２２    プロセッサ（ＣＰＵ）
２４    オペレーティングシステム（ＯＳ）
２６    ストレージディバイスドライバ
２８    スクランブリング／ディスクランブリングアルゴリズム
３０、４１４    スクランブルドデータ
３２    ディスクランブリング／スクランブリングアルゴリズム
３４、２０２、４０４、４０４’    ＸＯＲベクトル
２００    固定シード及びメモリアドレス
２０４    線型フィードバックシフトレジスター（ＬＦＳＲ）
２０６    データ
２０８、４１０    排他的論理和（ＸＯＲ）演算
４００、４００’    受信データ
４０２    メモリバスアドレス
４０２’    ＤＤＲメモリバスアドレス
４１２    ディスクランブルドデータ
【図１】
0006633967.tif 000002
【図２】
0006633967.tif 000003
【図３】
0006633967.tif 000004
【図４】
0006633967.tif 000005