特開2016-213838(P2016-213838A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 三星電子株式会社の特許一覧
特開2016-213838SSD通信プロトコルのためのXOR基盤のスクランブリング及びディスクランブリング方法及びシステム
<>
  • 特開2016213838-SSD通信プロトコルのためのXOR基盤のスクランブリング及びディスクランブリング方法及びシステム 図000003
  • 特開2016213838-SSD通信プロトコルのためのXOR基盤のスクランブリング及びディスクランブリング方法及びシステム 図000004
  • 特開2016213838-SSD通信プロトコルのためのXOR基盤のスクランブリング及びディスクランブリング方法及びシステム 図000005
  • 特開2016213838-SSD通信プロトコルのためのXOR基盤のスクランブリング及びディスクランブリング方法及びシステム 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2016-213838(P2016-213838A)
(43)【公開日】2016年12月15日
(54)【発明の名称】SSD通信プロトコルのためのXOR基盤のスクランブリング及びディスクランブリング方法及びシステム
(51)【国際特許分類】
   H04L 9/20 20060101AFI20161118BHJP
   G06F 13/10 20060101ALI20161118BHJP
   G06F 3/08 20060101ALI20161118BHJP
   G06F 21/60 20130101ALI20161118BHJP
   G06F 21/78 20130101ALI20161118BHJP
【FI】
   H04L9/00 653
   G06F13/10 340A
   G06F3/08 H
   G06F21/60 320
   G06F21/78
【審査請求】未請求
【請求項の数】25
【出願形態】OL
【全頁数】17
(21)【出願番号】特願2016-93038(P2016-93038)
(22)【出願日】2016年5月6日
(31)【優先権主張番号】62/158,420
(32)【優先日】2015年5月7日
(33)【優先権主張国】US
(31)【優先権主張番号】62/209,166
(32)【優先日】2015年8月24日
(33)【優先権主張国】US
(31)【優先権主張番号】15/064,191
(32)【優先日】2016年3月8日
(33)【優先権主張国】US
(71)【出願人】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
(74)【代理人】
【識別番号】110000051
【氏名又は名称】特許業務法人共生国際特許事務所
(72)【発明者】
【氏名】張 志 任
(72)【発明者】
【氏名】ベッカーマン, マイケル
(72)【発明者】
【氏名】スワーブリック, イアン
(72)【発明者】
【氏名】ハンソン, クレイグ
【テーマコード(参考)】
5J104
【Fターム(参考)】
5J104AA16
5J104AA32
5J104EA18
5J104JA05
5J104NA10
5J104PA07
(57)【要約】
【課題】SSD通信プロトコルのためのXOR基盤のスクランブリング及びディスクランブリング方法及びシステムを提供する。
【解決手段】本発明のホストシステムに連結されたメモリ装置のメモリチャンネルを経由して伝送されるデータをディスクランブリング及びスクランブリングする方法は、ホストシステムによって、データをスクランブルするために使用されるXORベクトルを発見するためにメモリ装置に対してトレーニングモードを実行し、メモリ装置によって、メモリチャンネルを通じてスクランブルドトレーニングデータを受信し、スクランブルドトレーニングデータを対応するメモリ位置の各々のデータに対するXORベクトルとして格納し、メモリ装置の機能モードの間に特定のメモリ位置に対して前記メモリチャネルを通じてスクランブルドデータを受信し、特定のメモリ位置に格納する前にスクランブルドデータをディスクランブルするために特定のメモリ位置に対して格納されたXORベクトルを使用する。
【選択図】図1
【特許請求の範囲】
【請求項1】
ホストシステムに連結されたメモリ装置のメモリチャンネルを経由して伝送されるデータをディスクランブリング及びスクランブリングする方法であって、
前記ホストシステムによって、データをスクランブルするために使用されるXORベクトルを発見するために前記メモリ装置に対してトレーニングモードを実行するステップと、
前記メモリ装置によって、前記メモリチャンネルを通じてスクランブルドトレーニングデータを受信し、前記スクランブルドトレーニングデータを対応するメモリ位置の各々のデータに対するXORベクトルとして格納するステップと、
前記メモリ装置によって、前記トレーニングモードの後、前記メモリ装置の機能モードの間に特定のメモリ位置に対して前記メモリチャネルを通じてスクランブルドデータを受信し、前記特定のメモリ位置に格納する前に前記スクランブルドデータをディスクランブルするために前記特定のメモリ位置に対して格納されたXORベクトルを使用するステップと、を有し、
前記XORベクトルの発見は、前記スクランブルドトレーニングデータを生成するために前記メモリ装置の全てのメモリ位置に対して全てのゼロトレーニングデータをスクランブリングアルゴリズムに入力することによって遂行され、
前記スクランブルドトレーニングデータは、前記メモリ装置のメモリチャンネルに伝送され、前記スクランブルドトレーニングデータのメモリ位置に対応するXORベクトルと同じであることを特徴とする方法。
【請求項2】
前記メモリ装置によって、前記機能モードの間に前記特定のメモリ位置からデータを読み出す時、前記メモリチャンネルを通じて前記スクランブルドデータを前記ホストシステムに伝送する前に前記データを検索し、前記特定のメモリ位置に対して格納されたXORベクトルを使用して前記データをスクランブルするステップを更に含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記ホストシステムは、ストレージディバイスドライバによって前記トレーニングモードを開始することを特徴とする請求項1に記載の方法。
【請求項4】
前記メモリ装置は、前記トレーニングモードの間、ストレージコントローラによって前記スクランブルドトレーニングデータを受信し、ディスクランブリングアルゴリズムによって前記XORベクトルを格納することを特徴とする請求項1に記載の方法。
【請求項5】
前記メモリ装置は、前記XORベクトルを格納するベクトルストレージメモリを含むことを特徴とする請求項4に記載の方法。
【請求項6】
前記機能モードの間にスクランブルドデータを受信するステップは、前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムによって、前記メモリ装置のベクトルストレージメモリから特定のメモリ位置に対して前記XORベクトルを検索し、ディスクランブルドデータを生成するために前記XORベクトル及び前記スクランブルドデータに対するXOR演算を遂行するステップを更に含み、
前記ディスクランブルドデータは、前記特定のメモリ位置に格納されることを特徴とする請求項1に記載の方法。
【請求項7】
前記機能モードの間に受信されたスクランブルドデータは、コントロール/ディスクリプタデータ、ステータスデータ、ユーザーデータ、及びコントロールデータの中の少なくとも1つを含むことを特徴とする請求項1に記載の方法。
【請求項8】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記スクランブルドデータがコントロール/ディスクリプタデータを含む場合、前記トレーニングモードの間に対応するコントロール/ディスクリプタデータメモリ位置のそれぞれのデータに対するXORベクトルを格納することを特徴とする請求項7に記載の方法。
【請求項9】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記機能モードの間に前記XORベクトルを使用して前記コントロール/ディスクリプタデータをディスクランブルすることを特徴とする請求項8に記載の方法。
【請求項10】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記スクランブルドデータが前記ステータスデータを含む場合、前記トレーニングモードの間に対応するステータスデータメモリ位置のそれぞれのデータに対するXORベクトルを格納することを特徴とする請求項7に記載の方法。
【請求項11】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記機能モードの間に前記XORベクトルを使用して前記ステータスデータをスクランブルすることを特徴とする請求項10に記載の方法。
【請求項12】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記スクランブルドデータが前記ユーザーデータ及び前記コントロールデータを含む場合、前記トレーニングモードの間に対応するユーザーデータメモリ位置のそれぞれのデータに対するXORベクトルを格納することを特徴とする請求項7に記載の方法。
【請求項13】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、
前記メモリ装置からの読み出しの場合、前記機能モードの間、前記ユーザーデータ及び前記コントロールデータをスクランブルするために前記XORベクトルを使用し、
前記メモリ装置への書き込みの場合、前記機能モードの間、前記メモリ装置に書き込む前に前記ユーザーデータ及び前記コントロールデータをディスクランブルすることを特徴とする請求項12に記載の方法。
【請求項14】
前記メモリ装置は、前記メモリ装置のベクトルストレージメモリに前記XORベクトルを格納し、
前記ベクトルストレージメモリは、他の領域に分割され、前記他の領域は、コントロール/ディスクリプタデータベクトル領域、ステータスデータベクトル領域、ユーザーデータベクトル領域、及びコントロールデータベクトル領域の中の少なくとも1つ以上を含み、前記他の領域の対応する種類のデータに対するXORベクトルを格納することを特徴とする請求項7に記載の方法。
【請求項15】
ホストシステムに連結されたメモリ装置のメモリチャンネルを経由して伝送されるデータをディスクランブリング及びスクランブリングするシステムであって、
前記ホストシステムにインストールされたストレージディバイスドライバと、
前記メモリ装置にストレージコントローラと、を備え、
前記ストレージディバイスドライバは、データをスクランブルするために使用されるXORベクトルを発見するために前記メモリ装置に対してトレーニングモードを実行し、
前記ストレージコントローラは、
前記メモリチャンネルを通じてスクランブルドトレーニングデータを受信し、前記スクランブルドトレーニングデータを対応するメモリ位置の各々のデータに対するXORベクトルとして格納し、
前記トレーニングモードの後、前記メモリ装置の機能モードの間に特定のメモリ位置に対して前記メモリチャンネルを通じてスクランブルドデータを受信し、前記特定のメモリ位置に格納する前に前記スクランブルドデータをディスクランブルするために前記特定のメモリ位置に対して格納されたXORベクトルを使用し、
前記XORベクトルの発見は、前記スクランブルドトレーニングデータを生成するために前記メモリ装置の全てのメモリ位置に対して全てのゼロトレーニングデータをスクランブリングアルゴリズムに入力することによって遂行され、
前記スクランブルドトレーニングデータは、前記メモリ装置のメモリチャンネルに伝送され、前記スクランブルドトレーニングデータのメモリ位置に対応するXORベクトルと同じであることを特徴とするシステム。
【請求項16】
前記メモリ装置は、前記機能モードの間に前記特定のメモリ位置からデータを読み出す時、前記メモリチャンネルを通じて前記スクランブルドデータを前記ホストシステムに伝送する前に前記データを検索し、前記特定のメモリ位置に対して格納されたXORベクトルを使用して前記データをスクランブルすることを特徴とする請求項15に記載のシステム。
【請求項17】
前記メモリ装置は、前記トレーニングモードの間、ストレージコントローラによって前記スクランブルドトレーニングデータを受信し、ディスクランブリングアルゴリズムによって前記XORベクトルを格納することを特徴とする請求項15に記載のシステム。
【請求項18】
前記メモリ装置は、前記XORベクトルを格納するベクトルストレージメモリを含むことを特徴とする請求項17に記載のシステム。
【請求項19】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記機能モードの間にスクランブルドデータを受信する時、前記メモリ装置のベクトルストレージメモリから特定のメモリ位置に対して前記XORベクトルを検索し、ディスクランブルドデータを生成するために前記XORベクトル及び前記スクランブルドデータに対するXOR演算を遂行し、
前記ディスクランブルドデータは、前記特定のメモリ位置に格納されることを特徴とする請求項15に記載のシステム。
【請求項20】
前記機能モードの間に受信されたスクランブルドデータは、コントロール/ディスクリプタデータ、ステータスデータ、ユーザーデータ、及びコントロールデータの中の少なくとも1つを含むことを特徴とする請求項15に記載のシステム。
【請求項21】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記スクランブルドデータがコントロール/ディスクリプタデータを含む場合、前記トレーニングモードの間に対応するコントロール/ディスクリプタデータメモリ位置のそれぞれのデータに対するXORベクトルを格納することを特徴とする請求項20に記載のシステム。
【請求項22】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記機能モードの間に前記XORベクトルを使用して前記コントロール/ディスクリプタデータをディスクランブルすることを特徴とする請求項21に記載のシステム。
【請求項23】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記スクランブルドデータが前記ステータスデータを含む場合、前記トレーニングモードの間に対応するステータスデータメモリ位置のそれぞれのデータに対するXORベクトルを格納することを特徴とする請求項20に記載のシステム。
【請求項24】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記機能モードの間に前記XORベクトルを使用して前記ステータスデータをスクランブルすることを特徴とする請求項23に記載のシステム。
【請求項25】
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記スクランブルドデータが前記ユーザーデータ及び前記コントロールデータを含む場合、前記トレーニングモードの間に対応するユーザーデータメモリ位置のそれぞれのデータに対するXORベクトルを格納することを特徴とする請求項20に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、SSD通信プロトコルのためのXOR基盤のスクランブリング及びディスクランブリング方法及びシステムに関する。
【背景技術】
【0002】
ソリッドステートドライブ(SSD)は一般的なダイナミックランダムアクセスメモリ(DRAM)とは異なる。異なる理由としては、SSDの場合、ホストがコントロール情報をSSDに伝送することが必要であり、ホストがステータス情報を受信することが必要であるためである。ステータス情報はSSDによって生成される。DRAMチャンネルを通じてホストシステムとSSDとの間のデータ通信は非常に複雑になる。データ通信が複雑な理由は、データスクランブリングの使用及び選択的なエラー訂正コード(ECC)保護、そしてその他のデータ保護技法のためである。大部分のスクランブリング技法はホストメモリコントローラによって遂行される。スクランブリング技法は、擬似ランダム(しかし、固定の)パターンを生成し、生成されたパターンと伝送されるデータとを用いて排他的論理和(XOR)演算を遂行することを伴う。データがXOR演算されたことを示すパターン値は、固定されたシード(seed)又はシードの一部の組合せに基づくものであり、伝送されるメモリアドレスに基づくものである。
【0003】
DDRフォームファクタストレージ装置について、ストレージ装置のメモリコントローラは、コマンドを実行し、ストレージ内にデータを格納するために、メモリバスを通じて受信されるデータをディスクランブルすることが必要である。同様に、ストレージから出力されたデータが正しくホストシステムに再び伝送されるようにするため、ストレージ装置のメモリコントローラはデータがホストシステムによって認識されるようにデータをスクランブルすることが必要である。このようなことはストレージ装置のメモリコントローラが同一のスクランブリング及び/又はECCを適用することを要求する。同一のスクランブリング及び/又はECCはホストメモリコントローラによって適用されたものと同じである。即ち、これはスクランブリングアルゴリズムが逆になり、DDRチャンネルインタイム(channel in time)でデータ依存性を有しないことを意味する。
【0004】
ホストシステムによって使用されたスクランブリングアルゴリズムの完全なリバースエンジニアリング(full reverse engineering)は難しい。スクランブリングアルゴリズムが知られている場合にも、スクランブリングアルゴリズムは1つのベンダ(vendor)やプラットフォーム(platform)から他のものに変わり得る。
【0005】
SSD通信プロトコルについて改善されたXOR基盤のスクランブラー/ディスクランブラーが必要であり、望ましくはホストメモリコントローラによって供給されるスクランブリングアルゴリズムの知識や完全なリバースエンジニアリングを要求しないことが必要である。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、SSD通信プロトコルのためのXOR基盤のスクランブリング及びディスクランブリング方法及びシステムを提供することにある。
【課題を解決するための手段】
【0007】
上記目的を達成するためになされた本発明の一態様によるホストシステムに連結されたメモリ装置のメモリチャンネルを経由して伝送されるデータをディスクランブリング及びスクランブリングする方法は、前記ホストシステムによって、データをスクランブルするために使用されるXORベクトルを発見するために前記メモリ装置に対してトレーニングモードを実行するステップと、前記メモリ装置によって、前記メモリチャンネルを通じてスクランブルドトレーニングデータを受信し、前記スクランブルドトレーニングデータを対応するメモリ位置の各々のデータに対するXORベクトルとして格納するステップと、前記メモリ装置によって、前記トレーニングモードの後、前記メモリ装置の機能モードの間に特定のメモリ位置に対して前記メモリチャンネルを通じてスクランブルドデータを受信し、前記特定のメモリ位置に格納する前に前記スクランブルドデータをディスクランブルするために前記特定のメモリ位置に対して格納されたXORベクトルを使用するステップと、を有し、前記XORベクトルの発見は、前記スクランブルドトレーニングデータを生成するために前記メモリ装置の全てのメモリ位置に対して全てのゼロトレーニングデータをスクランブリングアルゴリズムに入力することによって遂行され、前記スクランブルドトレーニングデータは、前記メモリ装置のメモリチャンネルに伝送され、前記スクランブルドトレーニングデータのメモリ位置に対応するXORベクトルと同じである。
【0008】
前記方法は、前記メモリ装置によって、前記機能モードの間に前記特定のメモリ位置からデータを読み出す時、前記メモリチャンネルを通じて前記スクランブルドデータを前記ホストシステムに伝送する前に前記データを検索し、前記特定のメモリ位置に対して格納されたXORベクトルを使用して前記データをスクランブルするステップを更に含み得る。
前記ホストシステムは、ストレージディバイスドライバによって前記トレーニングモードを開始し得る。
前記メモリ装置は、前記トレーニングモードの間、ストレージコントローラによって前記スクランブルドトレーニングデータを受信し、ディスクランブリング及びスクランブリングアルゴリズムによって前記XORベクトルを格納し得る。
前記メモリ装置は、前記XORベクトルを格納するベクトルストレージメモリを含み得る。
前記機能モードの間にスクランブルドデータを受信するステップは、前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムによって、前記メモリ装置のベクトルストレージメモリから特定のメモリ位置に対して前記XORベクトルを検索し、ディスクランブルドデータを生成するために前記XORベクトル及び前記スクランブルドデータに対するXOR演算を遂行するステップを更に含み、前記ディスクランブルドデータは、前記特定のメモリ位置に格納され得る。
前記機能モードの間に受信されたスクランブルドデータは、コントロール/ディスクリプタデータ、ステータスデータ、ユーザーデータ、及びコントロールデータの中の少なくとも1つを含み得る。
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記スクランブルドデータがコントロール/ディスクリプタデータを含む場合、前記トレーニングモードの間に対応するコントロール/ディスクリプタデータメモリ位置のそれぞれのデータに対するXORベクトルを格納し得る。
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記機能モードの間に前記XORベクトルを使用して前記コントロール/ディスクリプタデータをディスクランブルし得る。
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記スクランブルドデータが前記ステータスデータを含む場合、前記トレーニングモードの間に対応するステータスデータメモリ位置のそれぞれのデータに対するXORベクトルを格納し得る。
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記機能モードの間に前記XORベクトルを使用して前記ステータスデータをスクランブルし得る。
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記スクランブルドデータが前記ユーザーデータ及び前記コントロールデータを含む場合、前記トレーニングモードの間に対応するユーザーデータメモリ位置のそれぞれのデータに対するXORベクトルを格納し得る。
前記メモリ装置のディスクランブリング及びスクランブリングアルゴリズムは、前記メモリ装置からの読み出しの場合、前記機能モードの間、前記ユーザーデータ及び前記コントロールデータをスクランブルするために前記XORベクトルを使用し、前記メモリ装置への書き込みの場合、前記機能モードの間、前記メモリ装置に書き込む前に前記ユーザーデータ及び前記コントロールデータをディスクランブルし得る。
前記メモリ装置は、前記メモリ装置のベクトルストレージメモリに前記XORベクトルを格納し、前記ベクトルストレージメモリは、他の領域に分割され、前記他の領域は、コントロール/ディスクリプタデータベクトル領域、ステータスデータベクトル領域、ユーザーデータベクトル領域、及びコントロールデータベクトル領域の中の少なくとも1つ以上を含み、前記他の領域の対応する種類のデータに対するXORベクトルを格納し得る。
【0009】
上記目的を達成するためになされた本発明の一態様によるホストシステムに連結されたメモリ装置のメモリチャンネルを経由して伝送されるデータをディスクランブリング及びスクランブリングするシステムは、前記ホストシステムにインストールされたストレージディバイスドライバと、前記メモリ装置にストレージコントローラと、を備え、前記ストレージディバイスドライバは、データをスクランブルするために使用されるXORベクトルを発見するために前記メモリ装置に対してトレーニングモードを実行し、前記ストレージコントローラは、前記メモリチャンネルを通じてスクランブルドトレーニングデータを受信し、前記スクランブルドトレーニングデータを対応するメモリ位置の各々のデータに対するXORベクトルとして格納し、前記トレーニングモードの後、前記メモリ装置の機能モードの間に特定のメモリ位置に対して前記メモリチャンネルを通じてスクランブルドデータを受信し、前記特定のメモリ位置に格納する前に前記スクランブルドデータをディスクランブルするために前記特定のメモリ位置に対して格納されたXORベクトルを使用し、前記XORベクトルの発見は、前記スクランブルドトレーニングデータを生成するために前記メモリ装置の全てのメモリ位置に対して全てのゼロトレーニングデータをスクランブリングアルゴリズムに入力することによって遂行され、前記スクランブルドトレーニングデータは、前記メモリ装置のメモリチャンネルに伝送され、前記スクランブルドトレーニングデータのメモリ位置に対応するXORベクトルと同じである。
【発明の効果】
【0010】
本発明のSSD通信プロトコルのためのXOR基盤のスクランブリング及びディスクランブリング方法及びシステムによれば、ホストメモリコントローラによって提供されるスクランブリングアルゴリズムの知識や完全なリバースエンジニアリングを要求することがなくても、チャンネルデータをスクランブル/ディスクランブルすることができ、チャンネルデータのスクランブル/ディスクランブルは、ホストメモリコントローラによって提供される何らかのエラー訂正コード(ECC)アルゴリズムとは独立的であるという利点がある。
【図面の簡単な説明】
【0011】
図1】ホストシステムとSSDとの間のメモリチャンネルをスクランブリング/ディスクランブリングする本発明の一実施形態を示すブロック図である。
図2】ホストシステムの典型的なスクランブリングアルゴリズムの動作を示した図である。
図3】SSDのためのメモリチャンネルをディスクランブリング/スクランブリングするステップを示すフローチャートである。
図4】SSD内のディスクランブリング/スクランブリングアルゴリズムによって遂行される過程を示す図である。
【発明を実施するための形態】
【0012】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。図面内の同じ参照符号は全体に亘って同じ構成要素を示す。
【0013】
本発明の長所及び特徴とこれらを達成する方法は、以下の実施形態の詳細な説明及び図面を参照することによってより容易に理解される。しかし、本発明の基本的な概念は様々な他の形態に具体化され得るため、ここに言及する実施形態に制限して解釈してはならない。むしろ、これらの実施形態は、本分野の通常の知識を有する者にとって、この開示が徹底して完全になり、本発明の概念を完全に伝達するために提供される。図面内で層の厚さ及び領域は明確性のために誇張される。
【0014】
用語“1つ(a)”、“いち(an)”、及び“その(the)”の使用と発明(特にクレームの文脈で)を記述する文脈内の類似な参照(referents)は異なって表示するか、或いは文脈によって明確に矛盾しない限り、単数及び複数の全てをカバーするものとして解釈される。用語“含む(comprising)”、“有する(having)”、”含む(including)”、及び”保有する(containing)”は異なって記載しない限り、自由な(open−ended)用語(例えば、含まれるは、それに限定されないことを意味する)として解釈される。
【0015】
ここに使用するものとして、用語“アルゴリズム”又は“モジュール”はソフトウェアやハードウェアの構成要素に制限されない。ハードウェアの構成要素は特定のタスクを遂行するFPGA(field programmable gate array)又はASIC(application specific integrated circuit)が含まれる。アルゴリズム又はモジュールは、アドレス可能なストレージ媒体内に常駐するように適切に構成され、1つ以上のプロセッサを実行させるために適切に構成される。従って、アルゴリズム又はモジュールは例示的な方法で構成要素を含む。構成要素は、ソフトウェア構成要素(software components)、オブジェクト指向のソフトウェア構成要素(object−oriented software components)、クラス構成要素及びタスク構成要素(class components and task components)、プロセス(processes)、機能(functions)、属性(attributes)、プロシージャ(procedures)、サブルーチン(subroutines)、プログラムコードのセグメント(segments of program code)、ドライバ(drivers)、ファームウェア(firmware)、マイクロコード(microcode)、回路(circuitry)、データ(data)、データベース(databases)、データ構造(data structures)、テーブル(tables)、アレイ(arrays)、及び変数(variables)を含む。構成要素について提供する機能及び構成要素又はモジュールは、更に小さい構成要素又はモジュールに結合されるか、或いは付加的な構成要素、及び構成要素又はモジュールに更に分離される。
【0016】
異なって定義しない限り、ここに使用する全ての技術的及び科学的な用語は本発明が属する本分野の通常の知識を有する者にとって通常的に理解されるもののような意味を有する。いずれか及び全ての例の使用又はここに提供する例示的な用語は、本発明をより明確にするための意図として使用するものであり、異なって特定しない限り、本発明の範囲を制限するものではない。更に、異なって定義しない限り、一般的に使用される辞書内に定義された全ての用語は過度に厳格に解釈されない。
【0017】
本発明はメモリ装置の通信プロトコルのためのXOR基盤のスクランブラー/ディスクランブラーを提供する。本発明はスクランブリングの知識やリバースエンジニアリングなしに、そしてホストシステムによって適用されるECC方法なしに、スクランブラー/ディスクランブラーを提供する。ここに開示する方法はスクランブリング/エラー訂正が発生した場合に他の種類のメモリ装置やメモリチャンネルについても応用可能である。しかし、ここに開示する方法はメモリ装置がSSD(solid−state drive)を含む場合の実施形態について説明する。SSDは、例えば、シングル、ダブル、又はクワッドレートフォームファクタ(quad rate form−factor)SSDである。
【0018】
SSDトレーニングモードの間、スクランブリングマスク値がトレーニングシークェンスの使用を通じて発見されてSSD内に格納される。スクランブリングマスク値は、排他的論理和(XOR)ベクトルとも称され、SSD内の各メモリ位置(each memory location)のデータをスクランブルするためにホストシステムによって使用される。即ち、スクランブリングマスク値、若しくはXORベクトルは、SSDの機能モードの間にメモリチャンネルを通じて受信されたデータをディスクランブルし、伝送するデータをスクランブルするために使用される。
【0019】
図1は、ホストシステムとSSDとの間のメモリチャンネルをスクランブリング/ディスクランブリングする本発明の一実施形態を示すブロック図であり、ホストシステムとDDRフォームファクタSSDとの間のDDRチャンネルをスクランブリング/ディスクランブリングするブロック図である。図1のシステムはホストシステムによって提供されるスクランブリングアルゴリズムの先行知識やリバースエンジニアリングを要求しない。
【0020】
本システムは、メモリチャンネル14を通じてソリッドステートドライブ(SSD)12(メモリ装置)に連結されたホストシステム10を含む。公知のように、SSDは、データを格納するための機械的な動き部分がなく、データを維持するために持続的な電力を必要とすることもない。本実施形態で、ホストシステム10の構成要素は、プロセッサ(CPU)22、オペレーティングシステム(OS)24、及びメモリチャンネル14に連結されたメモリコントローラ16を含む。メモリコントローラ16はデジタル回路である。デジタル回路はデータの流れを管理する。データの流れは、図示したSSD12との間で、ホストシステムのメモリから来るデータとホストシステムのメモリに行くデータの流れを意味する。メモリコントローラ16はプロセッサ22のような別途のチップで具現されるか、或いは他のチップに統合される。メモリコントローラ16はスクランブリング/ディスクランブリングアルゴリズム28によって遂行されるメモリスクランブリング機能を付加的に提供する。スクランブリング/ディスクランブリングアルゴリズム28はメモリに伝送されるユーザーデータを擬似ランダムパターン(pseudo−random patterns)に変換するアルゴリズムである。
【0021】
一実施形態で、SSD12がダブルデータレートDDRフォームファクタSSDとして具現される場合、メモリチャンネル14はDDRメモリチャンネルを含む。DDRフォームファクタSSDは、メモリバスクロック信号の上昇及び下降エッジの全てからデータを伝送することで、DDRメモリチャンネルの使用を倍加する。
【0022】
SSD12の主要な構成要素はストレージコントローラ18とホストシステム10からデータを格納するメモリ21である。ストレージコントローラ18はメモリ21内に格納されたデータを管理する。ストレージコントローラ18は通信プロトコルを介してメモリチャンネル14を通じてホストシステム10と通信する。メモリ21は任意の類型の不揮発性ランダムアクセスメモリ(NVRAM)を含む。不揮発性ランダムアクセスメモリ(NVRAM)は、フラッシュメモリ、強誘電性RAM(FeRAM)、磁気抵抗RAM(MRAM)、相変化メモリ(PCM)、ミリパッドメモリ(millipede memory)等を含む。
【0023】
図2は、ホストシステムの典型的なスクランブリングアルゴリズム(28)の動作を示した図である。動作の間、ホストシステムのメモリコントローラ16はSSD12内に格納されるデータ206を受信する。ホストシステムのメモリコントローラ16は固定シード及びメモリアドレス200をデータ206と共に受信する。スクランブリング/ディスクランブリングアルゴリズム28は各DDRチャンネルサイクルに対してランダムシード(例えば、ビットパターン)を生成する。ランダムシードは本明細書でXORベクトル202と称する。一実施形態で、XORベクトル202は線型フィードバックシフトレジスター(LFSR)204を利用して生成される。或いは、XORベクトル202は、固定シード、又は固定シードと伝送されたメモリアドレス200との組合せを利用する他のメカニズムを利用して生成される。スクランブリング/ディスクランブリングアルゴリズム28は排他的論理和(XOR)演算208を遂行する。XOR演算はXORベクトル202とメモリチャンネル14に入るデータ206に対して遂行される。XOR演算はスクランブルドデータ30を生成するために与えられたサイクル内で遂行される。LFSR204はXORベクトル202を生成するためにフィードバック多項式を利用する。スクランブルドデータ30はメモリチャンネル14を通じてSSD12に送られ、アンスクランブル(unscrambled)されてメモリ21に格納される。
【0024】
SSD12からユーザーデータとステータス情報とが再びホストシステムに正しく伝送されるようにするため、ホストシステムのメモリコントローラ16によって使用されたような変換がSSD12内で適用されるべきである。これは多様なホストシステム内で使用されたスクランブリングアルゴリズムをリバースエンジニアリングするためのSSD製造業者(manufacturers)を要求する。これはSSDがそのホストシステム10と互換(両立)できるようにするためである。また、ホストシステムのスクランブリングアルゴリズムがSSD製造業者によって知られていても、スクランブリングアルゴリズムはホスト業者やプラットフォーム毎に異なる。スクランブリングアルゴリズムが異なる場合、相違するスクランブリング/ディスクランブリング方式がSSD12内に具現されなければならない。
【0025】
本実施形態は、ホストシステムのメモリコントローラによって適用されるスクランブリングのリバースエンジニアリング又は知識がなくても、SSDに対するメモリチャンネルをディスクランブル/スクランブルする方法及びシステムを提供する。本実施形態は、ホストシステム10にインストールされて実行されるストレージディバイスドライバ26を活用する。また、本実施形態はSSDのストレージコントローラ18によって実行されるディスクランブリング/スクランブリングアルゴリズム32を利用する。SSDのストレージコントローラ18はホストシステム10から受信したスクランブルドデータ30をディスクランブルする。SSDのストレージコントローラ18はメモリ21からホストシステム10に送られる出力データをスクランブルする。公知のように、ディバイスドライバはコンピュータープログラムである。コンピュータープログラムは装着されたハードウェア装置(この場合にはSSD12)にソフトウェアインターフェイスを提供する。ハードウェア装置はオペレーティングシステム24及び他のコンピュータープログラムを有効にする。他のコンピュータープログラムは装置のハードウェア機能をアクセスするためのプログラムである。
【0026】
データ206とXORされるXORベクトル202が、固定されたシード又は固定されたシードとの組合せに基づくことがあるため、ストレージディバイスドライバ26は、SSD12上の任意に与えられた物理的なメモリ位置に対して、全てのメモリ位置に対するゼロデータのトレーニングシークェンスに基づいて決定されるように構成される。トレーニングシークェンスは各メモリ位置に対するホストシステムのスクランブリング/ディスクランブリングアルゴリズム28によって使用されるXORベクトルに対応する。XORベクトル202は、メモリチャンネル14を通じてストレージコントローラ18に伝送され、XORベクトル34として格納される。
【0027】
本実施形態によると、SSD12は、ホストシステム10によって発見されたXORベクトル34を格納するベクトルストレージメモリ20を具備する。所定のメモリアドレスによってメモリ21内に格納されるデータはアンスクランブルされる。データのアンスクランブルは、該当メモリアドレスに対してベクトルストレージメモリ20内に格納されたXORベクトル34を利用して遂行される。
【0028】
本実施形態で、ベクトルストレージメモリ20はSRAMメモリ又はレジスターセットとして具現される。一実施形態で、ベクトルストレージメモリ20はストレージコントローラ18の内部に位置する。或いは、ベクトルストレージメモリ20はストレージコントローラ18及びメモリ21の全てから分離されて位置する。他の実施形態で、ベクトルストレージメモリ20はメモリ21の一部として位置する。
【0029】
図3は、SSDのためのメモリチャンネルを通じて伝送されたデータをディスクランブリング/スクランブリングするステップを示すフローチャートである。図3のステップはXORベクトル202を発見するためにSSD12に対してトレーニングモードを実行することによって開始される。XORベクトル202はデータをスクランブルするためにホストシステムによって使用される。XORベクトル202の発見はスクランブルドトレーニングデータ30を生成するためにSSD12の全てのメモリ位置に対して全てのゼロトレーニングデータをスクランブリングアルゴリズム(28)に入力することによって遂行される。スクランブルドトレーニングデータ30はSSD12のメモリチャンネル14を通じてメモリ21に伝送され、スクランブルドトレーニングデータ30はそのメモリ位置に対応するXORベクトルと同じである(ステップ300)。本実施形態で、トレーニングモードは、初期化され、ホストシステム10のストレージディバイスドライバ26によって遂行される。
【0030】
SSD12は、メモリチャンネルを通じてスクランブルドトレーニングデータを受信し、スクランブルドトレーニングデータを対応するメモリ位置の各々のデータに対するXORベクトル34として格納する(ステップ302)。
【0031】
本実施形態で、SSDのストレージコントローラ18はスクランブルドトレーニングデータを受信する。ディスクランブリング/スクランブリングアルゴリズム32はXORベクトルを格納する。本実施形態に従って、SSD12のベクトルストレージメモリ20はトレーニングモードの間に発見されたXORベクトル34を格納するために使用される。SSD12内で、各々のメモリ位置に対するXORベクトル34が一旦発見されて格納されると、ストレージディバイスドライバ26はトレーニングモードが完了したSSD12をシグナリングする。
【0032】
SSD12は、トレーニングモードの後、SSD12の機能モードの間に指定された特定のメモリ位置に対してメモリチャンネルを通じてスクランブルドデータを受信する。SSD12は、特定のメモリ位置に書き込む前に、スクランブルデータをディスクランブルするために特定のメモリ位置に対して格納されたXORベクトルを使用する(ステップ304)。
【0033】
本実施形態で、SSD12のストレージコントローラ18はスクランブルドデータを受信する。ディスクランブリング/スクランブリングアルゴリズム32はデータをディスクランブルするためにXORベクトル34を使用する。
【0034】
SSD12は、SSD12の機能モードの間に特定のメモリ位置からデータを読み出す時、データを検索する。SSD12は、データをスクランブルするために特定のメモリ位置に対して格納されたXORベクトルを使用する。データの検索はメモリチャンネルを通じてホストシステムにスクランブルドデータを送信する前に行われる(ステップ306)。
【0035】
図4の(a)及び(b)は、SSD12内のディスクランブリング/スクランブリングアルゴリズム32によって遂行される過程を示す図である。図4(a)はスクランブルドデータがホストシステムから受信される場合を示し、図4(b)はメモリからスクランブリングデータがホストシステムに送られる場合を示す。図4の(a)及び(b)の両方に示すように、ディスクランブリング/スクランブリングアルゴリズム32は受信データとメモリバスアドレスとに基づいて動作する。図4(a)で、受信データ400はホストシステム10からスクランブルされたデータを示す。ディスクランブリング/スクランブリングアルゴリズム32はベクトルストレージメモリ20の特定のメモリ位置に対するXORベクトル404を出力するためにメモリバスアドレス402を使用する。ディスクランブリング/スクランブリングアルゴリズム32はディスクランブルドデータ412を生成するためにXORベクトル404及び受信データ400に対して排他的論理和(XOR)演算410を遂行する。
【0036】
図4(b)で、受信データ400’はメモリ21から読出されたデータを示す。ディスクランブリング/スクランブリングアルゴリズム32はベクトルストレージメモリ20の特定のメモリ位置に対するXORベクトル404’を出力するためにDDRメモリバスアドレス402’を使用する。ディスクランブリング/スクランブリングアルゴリズム32はスクランブルドデータ414を生成するためにXORベクトル404’及び受信データ400に対して排他的論理和(XOR)演算410を遂行する。XOR演算410はメモリチャンネル14を通じてホストシステム10にスクランブルドデータ414を伝送する前に遂行される。
【0037】
上述の実施形態に示したように、SSD12のメモリチャンネル14をディスクランブリング及びスクランブリングする過程は、ホストメモリコントローラ16によって適用されたスクランブリングの全体のリバースエンジニアリング又は知識がなくても、チャンネルデータをスクランブル/ディスクランブルすることができることを示す。また、上述のメモリチャンネル14をディスクランブリング及びスクランブリングする過程はホストメモリコントローラ16によって適用される何らかのECCアルゴリズムとは独立的である。
【0038】
図3について上述した過程で、機能的モードの文脈内で使用した用語“データ”はホストシステム10とSSD12との間に伝送される多様な種類のデータを含む。多様な種類のデータはコントロール/ディスクリプタデータ、ステータスデータ、ユーザーデータ、及びコントロールデータを含む。
【0039】
コントロール/ディスクリプタデータの場合、ディスクランブリング/スクランブリングアルゴリズム32はトレーニングモードの間に対応するコントロール/ディスクリプタデータのメモリ位置のそれぞれのデータに対するXORベクトルを格納する。スクランブリング/ディスクランブリングアルゴリズム32は上述したように機能モードの間にコントロール/ディスクリプタデータをディスクランブリングするためにXORベクトルを使用する。
【0040】
ステータスデータの場合、ディスクランブリング/スクランブリングアルゴリズム32はトレーニングモードの間に対応するステータスメモリ位置のそれぞれのデータに対するXORベクトルを格納する。ディスクランブリング/スクランブリングアルゴリズム32は上述したように機能モードの間にステータスデータをスクランブリングするためにXORベクトルを使用する。ECCがホストシステム10でイネーブルされると、ディスクランブリング/スクランブリングアルゴリズム32はスクランブルドデータをECCコードワードに加える。
【0041】
ユーザーデータ及びコントロールデータの場合、ディスクランブリング/スクランブリングアルゴリズム32はトレーニングモードの間に対応するユーザーデータメモリ位置のそれぞれのデータに対するXORベクトルを格納する。ディスクランブリング/スクランブリングアルゴリズム32は、上述したように、メモリ21からの読み出しの場合、機能モードの間、ユーザーデータ及びコントロールデータをスクランブリングするためにXORベクトルを使用する。また、メモリ21への書き込みの場合、機能モードの間、ディスクランブリング/スクランブリングアルゴリズム32は、上述したように、メモリ21に書き込む前にユーザーデータ及びコントロールデータをディスクランブルする。読み出しユーザーデータ及び書き込みユーザーデータが同一のメモリ位置を共有するか、或いは他のメモリ位置を使用することが理解される。読み出し及び書き込みユーザーデータに対して同一のメモリ位置を共有する場合、XORベクトルを格納するストレージ空間の要求は減少する。
【0042】
従って、ベクトルストレージメモリ20はそれぞれ異なる種類のデータのXORベクトルを格納するために他の領域(図示せず)に区分される。本実施形態で、ベクトルストレージメモリ20は、コントロール/ディスクリプタデータベクトル領域、ステータスデータベクトル領域、ユーザーデータベクトル領域、及びコントロールデータベクトル領域の中の1つ以上を含む。
【0043】
本実施形態で、ホストシステム10がイネーブルされるECCを有する場合、ストレージディバイスドライバ26はトレーニングデータとして全てのゼロECCコードワードを生成する。トレーニングデータはトレーニングモードの間にスクランブリング/ディスクランブリングアルゴリズム28に入力される。
【0044】
大部分の一般的なシングルエラー訂正及びダブルエラー検出(SECDED)ECCの具現は、全てのゼロデータについて全てのゼロコードワードを招くが、一部は異なる。ホストシステム10のECCの具現が全てのゼロデータに対して全てのゼロコードワードを招かない状況では、図3のステップ300はトレーニング局面を二段階に分割する。
【0045】
第1段階で、ストレージディバイスドライバ26はホストシステムのメモリコントローラ16のスクランブリングをディセーブルする。ストレージディバイスドライバ26はトレーニングデータがゼロ又はノンゼロであるか否かを判定するためにスクランブリング/ディスクランブリングアルゴリズム28に全てのゼロトレーニングデータを相次いで入力する。これによってスクランブリングのディセーブルが遂行される。次に、各データサイクル内のECCコードワードビット位置及び全てのメモリ位置に対する位置の値はストレージコントローラ18及びシステムファームウェアによって記録される。
【0046】
第2段階で、ストレージディバイスドライバ26はホストシステムのメモリコントローラ16のスクランブリングをイネーブリングする。ストレージディバイスドライバ26は第1段階からのECCコードワードを使用して全てのゼロをスクランブリング/ディスクランブリングアルゴリズム28にトレーニングデータとして送る。ディスクランブリング/スクランブリングアルゴリズム32はベクトルストレージメモリ20内に全てのメモリ位置に対するXORベクトルを記録する。ノンゼロECCコードワードにおいて、この過程はトレーニングの間にキャプチャされた対応するXORベクトルのビットが反転されるべきであることを示す。反転位置は非スクランブルドECCコードワードが1に生成された場合に毎ビット位置になる。
【0047】
本発明はどの様な応用にも一般的に適用される。そのような応用はノンDRAM(non−DRAM)メモリ装置が何らかのスクランブルドチャンネルに装着された場合及びホストと情報交換が必要である場合を含む。
【0048】
一実施形態で、ディスクランブリング/スクランブリングアルゴリズム32はソフトウェア構成要素で具現される。他の実施形態で、ディスクランブリング/スクランブリングアルゴリズム32はハードウェアとソフトウェアとの組合せで具現される。ディスクランブリング/スクランブリングアルゴリズム32、ストレージコントローラ18、及びベクトルストレージメモリ20を単一の構成要素として図示したが、各々の機能は小さいか、或いは大きい個数のモジュール/構成要素に結合される。例えば、一実施形態で、ディスクランブリング/スクランブリングアルゴリズム32はディスクランブリングアルゴリズムのための第1ソフトウェア構成要素及びスクランブリングアルゴリズムのための第2ソフトウェア構成要素として具現される。他の実施形態で、ディスクランブリング/スクランブリングアルゴリズム32、ストレージコントローラ18、及びベクトルストレージメモリ20は1つの集積された構成要素として具現される。
【0049】
上述した実施形態のスクランブリング及びディスクランブリングシステムは顧客から企業まで広い範囲のストレージ市場に適用される。このシステムはシングルスタンドアローンマシン(single standalone machine)のためのディスクに適用される。ディスクは、デスクトップコンピュータ(desktop)、ラップトップ(laptop)、ワークステーション(workstation)、サーバー(server)、及びその他に装着されるディスクを含む。システムは、ストレージアレイ(storage array)、ソフトウェア定義ストレージ(software−define storage:SDS)、応用特定ストレージ(application−specific storage)、仮想マシン(virtual machine:VM)、仮想デスクトップインフラストラクチャ(virtual desktop infrastructure:VDI)、コンテンツ分配網(content distribution network:CDN)、及びその他を含む。
【0050】
一実施形態で、例えば、SSD12のメモリ21は複数のフラッシュメモリのような複数の不揮発性メモリチップで形成される。他の実施形態として、メモリ21はフラッシュメモリチップの代わりに他の種類の不揮発性メモリチップで形成される。他の種類の不揮発性メモリチップは、例えば、PRAM、FeRAM、MRAM、又はその他のメモリである。代替的にメモリ21はDRAMやSRAM等のような揮発性メモリに形成され、二つ以上のメモリが混合された場合にハイブリッドタイプを有する。
【0051】
メモリ装置のメモリチャンネルを経由して伝送されるデータをディスクランブリング及びスクランブリングする方法及びシステムを開示した。本発明は上述の実施形態によって説明したが、実施形態に対する変形があり得る。本発明の思想と範囲内で多様な変更が存在する。例えば、上述した実施形態は、ハードウェア、ソフトウェア、プログラム命令を含むコンピュータ読み取り可能な記録媒体、又はその組合せを利用して具現される。本実施形態に基づいて記録されたソフトウェアは、メモリ、ハードディスクのようなコンピュータ読み取り可能な記録媒体の一部の形式に格納されるか、或いはCD/DVD−ROMの一部の形式に格納される。ソフトウェアはプロセッサによって実行される。
【0052】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【0053】
10 ホストシステム
12 ソリッドステートドライブ(SSD)
14 メモリチャンネル
16 メモリコントローラ
18 ストレージコントローラ
20 ベクトルストレージメモリ
21 メモリ
22 プロセッサ(CPU)
24 オペレーティングシステム(OS)
26 ストレージディバイスドライバ
28 スクランブリング/ディスクランブリングアルゴリズム
30、414 スクランブルドデータ
32 ディスクランブリング/スクランブリングアルゴリズム
34、202、404、404’ XORベクトル
200 固定シード及びメモリアドレス
204 線型フィードバックシフトレジスター(LFSR)
206 データ
208、410 排他的論理和(XOR)演算
400、400’ 受信データ
402 メモリバスアドレス
402’ DDRメモリバスアドレス
412 ディスクランブルドデータ
図1
図2
図3
図4