IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ ウェスタン デジタル テクノロジーズ インコーポレーテッドの特許一覧

特開2024-104279ML支援ダイナミック復号ギアの選択
<>
  • 特開-ML支援ダイナミック復号ギアの選択 図1
  • 特開-ML支援ダイナミック復号ギアの選択 図2
  • 特開-ML支援ダイナミック復号ギアの選択 図3
  • 特開-ML支援ダイナミック復号ギアの選択 図4
  • 特開-ML支援ダイナミック復号ギアの選択 図5
  • 特開-ML支援ダイナミック復号ギアの選択 図6
  • 特開-ML支援ダイナミック復号ギアの選択 図7
  • 特開-ML支援ダイナミック復号ギアの選択 図8
  • 特開-ML支援ダイナミック復号ギアの選択 図9
  • 特開-ML支援ダイナミック復号ギアの選択 図10
  • 特開-ML支援ダイナミック復号ギアの選択 図11
  • 特開-ML支援ダイナミック復号ギアの選択 図12
  • 特開-ML支援ダイナミック復号ギアの選択 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024104279
(43)【公開日】2024-08-02
(54)【発明の名称】ML支援ダイナミック復号ギアの選択
(51)【国際特許分類】
   G06F 11/10 20060101AFI20240726BHJP
   H03M 13/37 20060101ALI20240726BHJP
   G06N 20/00 20190101ALI20240726BHJP
【FI】
G06F11/10 648
H03M13/37
G06N20/00
【審査請求】有
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023195871
(22)【出願日】2023-11-17
(31)【優先権主張番号】63/481,056
(32)【優先日】2023-01-23
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】18/359,147
(32)【優先日】2023-07-26
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】504056130
【氏名又は名称】ウェスタン デジタル テクノロジーズ インコーポレーテッド
(74)【代理人】
【識別番号】100207837
【弁理士】
【氏名又は名称】小松原 寿美
(72)【発明者】
【氏名】エラン シャロン
(72)【発明者】
【氏名】ラン ザミール
(72)【発明者】
【氏名】オメル ファインジルバー
(72)【発明者】
【氏名】イダン アルロッド
【テーマコード(参考)】
5J065
【Fターム(参考)】
5J065AD03
5J065AD07
5J065AE02
5J065AG02
5J065AH15
5J065AH16
(57)【要約】      (修正有)
【課題】高速低電力デコーダ及び低速高電力デコーダを使用するマルチギアエラー訂正コード(ECC)デコーダを提供する。
【解決手段】マルチギアECCデコーダは、高電力デコーダと低電力デコーダを含む。低速高電力デコーダを使用して高BERコードワードの復号時間を大幅に短縮するために、コントローラは、低速高電力または高速低電力のいずれかでコードワードを復号するのではなく、復号処理中に低速高電力復号と高速低電力復号とを切り替える。コントローラは、まず、所定の要因に基づいて、低速高電力または高速低電力で復号を開始するかどうかを決定する。復号電力が決定されると、復号が開始される。復号処理の間、復号は、第1の電力レバーデコーダから第2の電力レベルデコーダに遷移する。復号は、復号が完了するまで、または不十分な復号のために別のスイッチが発生する必要がある場合まで、遷移後の第2の復号電力レベルで継続される。
【選択図】図2
【特許請求の範囲】
【請求項1】
第1の電力効率レベルで動作する第1のデコーダと、
前記第1の電力効率レベルより低い第2の電力効率レベルで動作する第2のデコーダと、
前記第1のデコーダおよび前記第2のデコーダに結合されたデコーダマネージャとを備え、前記デコーダマネージャは、
符号化されたデータを前記第1のデコーダに導いて復号し、
前記復号において前記データが前記第2のデコーダによって復号できるように十分に復号された点を検出し、
前記十分に復号されたデータを前記第2のデコーダに導くように構成される、
コントローラ。
【請求項2】
前記検出は、推論回路を使用して低複雑度の推論関数を実行することを含む、請求項1に記載のコントローラ。
【請求項3】
前記推論回路は、乗算器と前記乗算器に結合される加算器とを含む、請求項2に記載のコントローラ。
【請求項4】
前記推論回路は、前記加算器に結合されるアキュムレータをさらに含む、請求項3に記載のコントローラ。
【請求項5】
前記デコーダマネージャは、機械学習(ML)分類器をさらに含む、請求項1に記載のコントローラ。
【請求項6】
前記ML分類器は、前記検出を実行するように訓練される、請求項5に記載のコントローラ。
【請求項7】
前記訓練は、オフラインで行われる、請求項6に記載のコントローラ。
【請求項8】
前記ML分類器は、後ろ向きウィンドウにおいて前記第1のデコーダによって反転されるビットフリップの数を決定するように構成される、請求項5に記載のコントローラ。
【請求項9】
前記ML分類器は、後ろ向きウィンドウにおいて前記第1のデコーダの満たされていないパリティ検査の数を決定するように構成される、請求項5に記載のコントローラ。
【請求項10】
第1のレベルで動作する第1のデコーダと、
前記第1のレベルより低い第2のレベルで動作する第2のデコーダと、
前記第1のデコーダおよび前記第2のデコーダに結合されたデコーダマネージャとを備え、前記デコーダマネージャは、
符号化されたデータを第1のデコーダに導いて部分的に復号し、
前記部分的に復号されたデータを前記第2のデコーダに導くように構成される、
コントローラ。
【請求項11】
前記デコーダマネージャは、さらに、符号化されたデータのシンドローム重み(SW)を計算するように構成される、請求項10に記載のコントローラ。
【請求項12】
前記デコーダマネージャは、さらに、計算されたSWを閾値と比較するように構成される、請求項11に記載のコントローラ。
【請求項13】
前記デコーダマネージャは、さらに、所定の期間後に前記部分的に復号されたデータを前記第2のデコーダに導くように構成される、請求項10に記載のコントローラ。
【請求項14】
前記デコーダマネージャは、さらに、前記第2のデコーダが前記部分的に復号されたデータの復号に失敗したと判定するように構成される、請求項10に記載のコントローラ。
【請求項15】
前記デコーダマネージャは、さらに、前記部分的に復号されたデータを前記第1のデコーダに送り返すように構成される、請求項14に記載のコントローラ。
【請求項16】
前記デコーダマネージャは、さらに、前記部分的に復号されたデータを前記第2のデコーダに送ることができる、前記第1のデコーダで前記符号化されたデータを復号する際の点を検出するように構成される、請求項10に記載のコントローラ。
【請求項17】
第1の電力効率レベルでデータを復号する第1の手段と、
前記第1の電力効率レベルより低い第2の電力効率レベルでデータを復号する第2の手段と、
データを復号する前記第1の手段およびデータを復号する前記第2の手段に結合された復号マネージャとを備え、前記復号マネージャは、
データを復号する前記第1の手段で復号データをシミュレートすることにより第1の復号情報を取得し、
データを復号する前記第2の手段で復号データをシミュレートすることにより第2の復号情報を取得し、
前記第1の復号情報および前記第2の復号情報を分類器に配信し、
前記配信に基づいて分類器の重みおよびバイアスを作成するように構成される、
コントローラ。
【請求項18】
前記第1の復号情報の取得、前記第2の復号情報の取得、配信、および作成は、オフラインで行われる、請求項17に記載のコントローラ。
【請求項19】
前記復号マネージャは、データを復号する前記第1の手段およびデータを復号する前記第2の手段について満たされていないパリティ検査の数を決定するように構成される、請求項17に記載のコントローラ。
【請求項20】
前記復号マネージャは、分類された重みおよびバイアスを推論回路に配信するように構成される、請求項17に記載のコントローラ。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2023年1月23日に出願された米国仮特許出願63/481056号の利益を主張し、この出願が参照により本明細書に組み込まれる。
【0002】
本発明の実施形態は、一般に、高速低電力デコーダと低速高電力デコーダを使用するマルチギアエラー訂正コード(ECC)デコーダに関する。
【背景技術】
【0003】
マルチギアECCデコーダ手法は、多くのフラッシュ格納ECC解決策に使用されている証明された復号技術である。単一のギアデコーダと比較して、コストと電力効率は非常に優れる。しかし、この手法の欠点は、より稀な高ビットエラーレート(BER)復号動作に、復号がより強力であるがより遅い復号ギアで行われる。高速低電力デコーダは、クロックごとにより多くのメッセージを処理することができる(低速高電力デコーダの並列性は、復号ギアにわたって同じ有効電力および全体的な低コスト解決策を維持するように設計され得る)。より強い復号ギアの並列性がより低いと、平均スループットを低下させ、読み取りパフォーマンスに問題を引き起こす可能性がある。マルチギアECCデコーダにおいて、異なるアルゴリズム、精度、クロック周波数、並列性を有する複数のギアまたはモード、または別個のコアが復号動作を処理するために使用される。
【0004】
通常、低コスト/低電力デコーダは、高速であり、より低いBERを有するコードワードを復号するために使用され、高コスト/高電力デコーダは、高いBERを有するコードワードを復号するために使用される。高速低電力デコーダと低速高電力デコーダをカスケードで使用することもできる。第1のデコーダは、すべてを復号し、第2のデコーダは、第1の復号試行に失敗したコードワードを復号する。典型的には、高速低電力デコーダは、高い並列性を有する(クロックごとに多くのメッセージを計算することができる)一方で、低速高電力デコーダは、コストおよび電力消費が高いため、低い並列性を有することに留意することが重要である。
【0005】
典型的な動作では、初期デコーダは、復号動作全体に使用され、復号動作の開始時にシンドローム重み(SW)が計算されるので、シンドローム重み(SW)に基づいて選択されるが、再計算および追跡にコストがかかる。使用されるデコーダは、低電力デコーダがデータを復号するのに十分でないときに変化し、したがって、より高い電力デコーダが必要とされる。このような場合に、デコーダは、より低い電力のデコーダからより高い電力のデコーダに切り替えられるが、これは、復号遅延を増加させるだけである。
【0006】
したがって、当該技術分野では、低速高電力復号の復号遅延を低減する必要がある。
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は、一般に、低速高電力デコーダを使用してコードワードの復号時間を大幅に短縮することに関する。低速高電力または高速低電力のいずれかでコードワードを復号するのではなく、本発明は、復号処理中に低速高電力復号と高速低電力復号との間で切り替えること、または復号遅延を低減するために低速高電力復号の後に高速低電力復号を実行することを提案する。コントローラは、まず、所定の要因に基づいて、低速高電力または高速低電力で復号を開始するかどうかを決定する。復号電力が決定されると、復号が開始される。復号処理の間、復号は、第2の電力レベルデコーダに切り替わる第1の電力レバーデコーダからの遷移に到達する。復号は、復号が完了するまで、または不十分な復号のために別の切り替えが発生する必要がある場合まで、遷移後に第2の復号電力レベルで継続される。
【課題を解決するための手段】
【0008】
一実施形態では、コントローラは、第1の電力効率レベルで動作する第1のデコーダと、第1の電力効率レベルより低い第2の電力効率レベルで動作する第2のデコーダと、第1のデコーダおよび第2のデコーダに結合されたデコーダマネージャとを備え、デコーダマネージャは、符号化されたデータを第1のデコーダに導いて復号し、復号においてデータが第2のデコーダによって復号できるように十分に復号された点を検出し、十分に復号されたデータを第2のデコーダに導くように構成される。
【0009】
別の実施形態では、コントローラは、第1の復号レベルで動作する第1のデコーダと、第1のレベルより低い第2の復号レベルで動作する第2のデコーダと、第1のデコーダおよび第2のデコーダに結合されたデコーダマネージャとを備え、デコーダマネージャは、符号化されたデータを部分的に復号するために第1のデコーダに導い、部分的に復号されたデータを第2のデコーダに導くように構成される。2つのデコーダを区別し得る例示的な要因は、電力、復号アルゴリズム、速度(並列性)、クロック周波数、シリコン領域、および/またはそれらの組み合わせを含む。
【0010】
別の実施形態では、コントローラは、第1の電力効率レベルでデータを復号する第1の手段と、第1の電力効率レベルより低い第2の電力効率レベルでデータを復号する第2の手段と、データを復号する第1の手段およびデータを復号する第2の手段に結合された復号マネージャとを備え、復号マネージャは、データを復号する第1の手段で復号データをシミュレートすることにより第1の復号情報を取得し、データを復号する第2の手段で復号データをシミュレートすることにより第2の復号情報を取得し、第1の復号情報および第2の復号情報を分類器に配信し、配信に基づいて分類器の重みおよびバイアスを作成する。
【図面の簡単な説明】
【0011】
本発明の上記特徴を詳細に理解することができるように、上記に簡単にまとめた本発明は、実施形態を参照することによってより具体的に説明することがあり、そのいくつかは添付の図面に示されている。しかしながら、添付の図面は、本発明の典型的な実施形態のみを示しており、したがって、本発明が他の等しく有効な実施形態を認めることがあるため、その範囲を限定するものと見なされないことに注意されたい。
【0012】
図1】ある実施形態に係る、データ格納デバイスがホストデバイスの格納デバイスとして機能し得る格納システムを示す概略ブロック図である。
【0013】
図2】ある実施形態に係る格納システムを示す概略ブロック図である。
【0014】
図3】ある実施形態に係るマルチギア低密度パリティ検査(LDPC)コーダを示す概略ブロックである。
【0015】
図4】ある実施形態に係る、初期復号ギア選択の方法を示すフローチャートである。
【0016】
図5】ある実施形態に係る、復号ギアを切り替える方法を示すフローチャートである。
【0017】
図6】ある実施形態に係るギア遷移の復号の概略グラフである。
【0018】
図7】ある実施形態に係る日和見遷移の概略グラフである。
【0019】
図8】ある実施形態に係る、遷移を復号する方法を示すフローチャートである。
【0020】
図9】ある実施形態に係るシンドローム重み(SW)ベースの遷移の概略グラフである。
【0021】
図10】ある実施形態に係るSWベースの遷移の方法を示すフローチャートである。
【0022】
図11】ある実施形態に係る機械学習(ML)ベースの遷移の概略グラフである。
【0023】
図12】ある実施形態に係るMLベースの遷移の方法を示すフローチャートである。
【0024】
図13】ある実施形態に係る分類訓練および干渉の方法を示すフローチャートである。
【0025】
理解を容易にするために、同一の参照番号が、可能であれば、図面に共通の同一の要素を示すように使用されている。一実施形態で開示された要素は、具体的な列挙なしに他の実施形態で有益に利用され得ることが意図される。
【発明を実施するための形態】
【0026】
以下では、本発明の実施形態を参照する。しかしながら、本発明は、具体的に説明される実施形態に限定されないことを理解されたい。代わりに、以下の特徴および要素の任意の組み合わせは、異なる実施形態に関連するか否かにかかわらず、本発明を実施および実践することが意図される。さらに、本発明の実施形態は、他の可能な解決策および/または従来技術を上回る利点を達成し得るが、特定の利点が所定の実施形態によって達成されるか否かは、本発明を限定するものではない。したがって、以下の態様、特徴、実施形態、および利点は、単に例示的なものであり、特許請求の範囲に明示的に記載されている場合を除き、添付の特許請求の範囲の要素または制限とは見なされない。同様に、「本発明」への言及は、本明細書に開示された任意の発明の主題の一般化として解釈されてはならず、特許請求の範囲に明示的に記載されている場合を除き、添付の特許請求の範囲の要素または限定であると見なされてはならない。
【0027】
本発明は、一般に、低速高電力デコーダを使用して、高BERコードワードの復号時間を大幅に短縮することに関する。低速高電力または高速低電力のいずれかでコードワードを復号するのではなく、本発明は、復号処理中に低速高電力復号と高速低電力復号との間で切り替えることを提案する。コントローラは、まず、所定の要因に基づいて、低速高電力または高速低電力で復号を開始するかどうかを決定する。復号電力が決定されると、復号が開始される。復号処理の間、復号は、第2の電力レベルデコーダに切り替わる第1の電力レベルデコーダから遷移する。復号は、復号が完了するまで、または不十分な復号のために別の切り替えが発生する必要がある場合まで、遷移後に第2の復号電力レベルで継続される。
【0028】
図1は、ある実施形態に係る、ホストデバイス104の格納デバイスとして機能し得るデータ格納デバイス106を有する格納システム100を示す概略ブロック図である。例えば、ホストデバイス104は、データ記憶デバイス106に含まれる不揮発性メモリ(NVM)110を利用して、データを格納および取得してもよい。ホストデバイス104は、ホストダイナミックランダムアクセスメモリ(DRAM)138を備える。いくつかの例では、格納システム100は、格納アレイとして動作してもよいデータ格納デバイス106などの複数の格納デバイスを含んでもよい。例えば、格納システム100は、ホストデバイス104のマス格納デバイスとして集合的に機能する安価な/独立したディスク(RAID)の冗長アレイとして構成された複数のデータ格納デバイス106を含んでもよい。
【0029】
ホストデバイス104は、データ格納デバイス106などの一つ以上の格納デバイスに対してデータを格納および/または取得しえる。図1に示すように、ホストデバイス104は、インターフェース114を介してデータ格納デバイス106と通信してもよい。ホストデバイス104は、コンピュータサーバ、ネットワーク接続格納(NAS)ユニット、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」電話などの電話受話器、いわゆる「スマート」パッド、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、またはデータ格納デバイスからデータを送受信することができる他のデバイスを含む、広範囲のデバイスのいずれかを含んでもよい。
【0030】
ホストDRAM138は、任意に、ホストメモリバッファ(HMB)150を含んでもよい。HMB150は、データ格納デバイス106のコントローラ108による排他的使用のためにデータ格納デバイス106に割り当てられるホストDRAM138の一部である。例えば、コントローラ108は、マッピングデータ、バッファリングされたコマンド、論理対物理(L2P)テーブル、メタデータなどをHMB150に格納してもよい。言い換えれば、HMB150は、通常、揮発性メモリ112、バッファ116、スタティックランダムアクセスメモリ(SRAM)などのコントローラ108の内部メモリに格納されるデータを格納するためにコントローラ108によって使用され得る。データ格納デバイス106がDRAM(すなわち、任意選択のDRAM118)を含まない例では、コントローラ108は、HMB150をデータ格納デバイス106のDRAMとして利用してもよい。
【0031】
データ格納デバイス106は、コントローラ108、NVM110、電源111、揮発性メモリ112、インターフェース114、書き込みバッファ116、および任意選択のDRAM118を含む。いくつかの例では、データ格納デバイス106は、明確化のために、図1に示されていない追加の部品を含んでもよい。例えば、データ格納デバイス106は、データ格納デバイス106の部品が機械的に取り付けられ、データ格納デバイス106の部品などを電気的に相互接続する導電トレースを含むプリント回路基板(PCB)を含んでもよい。いくつかの例では、データ格納デバイス106の物理的寸法およびコネクタ構成は、1つ以上の標準フォームファクタに準拠してもよい。いくつかの例示的な標準フォームファクタは、3.5インチのデータ格納デバイス(例えば、HDDまたはSSD)、2.5インチのデータ格納デバイス、1.8インチのデータ格納デバイス、ペリフェラルコンポーネントインターコネクト(PCI)、PCI拡張(PCI-X)、PCIエクスプレス(PCIe)(例えば、PCIex1、x4、x8、x16、PCIeミニカード、ミニPCIなど)を含むが、これらに限定されない。いくつかの例では、データ格納デバイス106は、ホストデバイス104のマザーボードに直接結合されてもよい(例えば、コネクタに直接はんだ付けされても差し込まれてもよい)。
【0032】
インターフェース114は、ホストデバイス104とデータを交換するためのデータバスと、ホストデバイス104とコマンドを交換するための制御バスとの一方または両方を含んでもよい。インターフェース114は、任意の適切なプロトコルに従って動作してもよい。例えば、インターフェース114は、高度技術アタッチメント(ATA)(例えば、シリアルATA(SATA)およびパラレルATA(PATA))、ファイバチャネルプロトコル(FCP)、小型コンピュータシステムインタフェース(SCSI)、シリアル接続SCSI(SAS)、PCI、およびPCIe、不揮発性メモリエクスプレス(NVMe)、OpenCAPI、GenZ、キャッシュコヒーレントインタフェースアクセラレータ(CCIX)、オープンチャネルSSSD(OCSSD)などのプロトコルのうちの一つ以上に従って動作してもよい。インターフェース114(例えば、データバス、制御バス、またはその両方)は、コントローラ108に電気的に接続され、ホストデバイス104とコントローラ108との間の電気的接続を提供し、ホストデバイス104とコントローラ108との間でデータを交換することを可能にする。いくつかの例では、インターフェース114の電気接続はまた、データ格納デバイス106がホストデバイス104から電力を受電することを可能にし得る。例えば、図1に示すように、電源111は、インターフェース114を介してホストデバイス104から電力を受電してもよい。
【0033】
NVM110は、複数のメモリデバイスまたはメモリユニットを含んでもよい。NVM110は、データを格納および/または取得するように構成され得る。例えば、NVM110のメモリユニットは、データおよびデータを格納するようにメモリユニットに指示するメッセージをコントローラ108から受信してもよい。同様に、メモリユニットは、メモリユニットにデータを取得するように指示するメッセージをコントローラ108から受信してもよい。いくつかの例では、メモリユニットのそれぞれは、ダイと呼ばれ得る。いくつかの例では、NVM110は、複数のダイ(すなわち、複数のメモリユニット)を含んでもよい。いくつかの例では、各メモリユニットは、比較的大量のデータ(例えば、128MB、256MB、512MB、1GB、2GB、4GB、8GB、16GB、32GB、64GB、128GB、256GB、512GB、1TBなど)を格納するように構成され得る。
【0034】
いくつかの例では、各メモリユニットは、フラッシュメモリデバイス、位相変化メモリ(PCM)デバイス、抵抗性ランダムアクセスメモリ(ReRAM)デバイス、磁気抵抗性ランダムアクセスメモリ(MRAM)デバイス、強誘電性ランダムアクセスメモリ(F-RAM)、ホログラフィックメモリデバイスなどの任意のタイプの不揮発性メモリデバイス、および任意の他のタイプの不揮発性メモリデバイスを含んでもよい。
【0035】
NVM110は、複数のフラッシュメモリデバイスまたはメモリユニットを含んでもよい。NVMフラッシュメモリデバイスは、NANDまたはNORベースのフラッシュメモリデバイスを含み得、各フラッシュメモリセルについてトランジスタのフローティングゲートに含まれる電荷に基づいてデータを格納してもよい。NVMフラッシュメモリデバイスでは、フラッシュメモリデバイスは、複数のダイに分割され得、複数のダイの各ダイは、複数のページにさらに分割され得る複数の物理ブロックまたは論理ブロックを含む。特定のメモリデバイス内の複数のブロックの各ブロックは、複数のNVMセルを含んでもよい。NVMセルの行は、複数のページの一つを画定するためにワードラインを使用して電気的に接続され得る。複数のページのそれぞれにおけるそれぞれのセルは、それぞれのビットラインに電気的に接続され得る。さらに、NVMフラッシュメモリデバイスは、2Dまたは3Dデバイスであり得、シングルレベルセル(SLC)、マルチレベルセル(MLC)、トリプルレベルセル(TLC)、またはクワッドレベルセル(QLC)であり得る。コントローラ108は、ページレベルでNVMフラッシュメモリデバイスにデータを書き込み、NVMフラッシュメモリデバイスからデータを読み出し、ブロックレベルでNVMフラッシュメモリデバイスからデータを消去してもよい。
【0036】
電源111は、データ格納デバイス106の一つ以上の部品に電力を供給してもよい。標準モードで動作するとき、電源111は、ホストデバイス104などの外部デバイスによって提供される電力を使用して一つ以上の部品に電力を供給してもよい。例えば、電源111は、インターフェース114を介してホストデバイス104から受電した電力を使用して、一つ以上の部品に電力を供給してもよい。いくつかの例では、電源111は、電源が外部デバイスから受電されなくなるなどのシャットダウンモードで動作するときに、一つ以上の部品に電力を供給するように構成された一つ以上の電力貯蔵部品を含んでもよい。このようにして、電源111は、オンボードバックアップ電源として機能してもよい。一つ以上の電力貯蔵部品のいくつかの例としては、コンデンサ、スーパーコンデンサ、電池などが挙げられるが、これらに限定されない。いくつかの例では、一つ以上の電力貯蔵部品によって貯蔵され得る電力の量は、一つ以上の電力貯蔵部品のコストおよび/またはサイズ(例えば、面積/体積)の関数であり得る。言い換えれば、一つ以上の電力貯蔵部品によって貯蔵され得る電力の量が増加するにつれて、一つ以上の電力貯蔵部品のコストおよび/またはサイズも増加する。
【0037】
揮発性メモリ112は、情報を格納するためにコントローラ108によって使用され得る。揮発性メモリ112は、一つ以上の揮発性メモリデバイスを含んでもよい。いくつかの例では、コントローラ108は、キャッシュとして揮発性メモリ112を使用してもよい。例えば、コントローラ108は、キャッシュされた情報がNVM110に書き込まれるまで、キャッシュされた情報を揮発性メモリ112に格納してもよい。図1に示すように、揮発性メモリ112は、電源111から受電した電力を消費してもよい。揮発性メモリ112の例は、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックRAM(SRAM)、および同期ダイナミックRAM(SDRAM(例えば、DDR1、DDR2、DDR3、DDR3L、LPDDR3、DDR4、LPDDR4など))を含むが、それらに限定されない。同様に、任意選択のDRAM118は、マッピングデータ、バッファリングされたコマンド、論理対物理(L2P)テーブル、メタデータ、キャッシュされたデータなどを任意選択のDRAM118に格納するために利用され得る。いくつかの例では、データ格納デバイス106は、データ格納デバイス106がDRAMレスように、任意選択のDRAM118を含まない。他の例では、データ格納デバイス106は、任意選択のDRAM118を含む。
【0038】
コントローラ108は、データ格納デバイス106の一つ以上の動作を管理してもよい。例えば、コントローラ108は、NVM110からのデータの読み取りおよび/またはNVM110へのデータの書き込みを管理してもよい。いくつかの実施形態では、データ格納デバイス106がホストデバイス104から書き込みコマンドを受信すると、コントローラ108は、データをNVM110に格納し、データ格納コマンドの進行を監視するためにデータ格納コマンドを開始してもよい。コントローラ108は、格納システム100の少なくとも1つの動作特性を決定し、NVM110に少なくとも1つの動作特性を格納してもよい。いくつかの実施形態では、データ格納デバイス106がホストデバイス104から書き込みコマンドを受信すると、コントローラ108は、データをNVM110に送る前に、書き込みコマンドに関連付けられたデータを一時的に内部メモリまたは書き込みバッファ116に格納する。
【0039】
コントローラ108は、任意選択の第2の揮発性メモリ120を含んでもよい。任意選択の第2の揮発性メモリ120は、揮発性メモリ112と同様であり得る。例えば、任意選択の第2の揮発性メモリ120は、SRAMであってもよい。コントローラ108は、任意選択の第2の揮発性メモリの一部をコントローラメモリバッファ(CMB)122としてホストデバイス104に割り当て得る。CMB122は、ホストデバイス104によって直接アクセスされてよい。例えば、ホストデバイス104に一つ以上の提出キューを維持する代わりに、ホストデバイス104は、CMB122を利用して、通常ホストデバイス104内で維持される一つ以上の提出キューを格納してもよい。言い換えれば、ホストデバイス104は、コマンドを生成し、関連データの有無にかかわらず、CMB122に生成されたコマンドを格納してもよく、コントローラ108は、格納された生成されたコマンドおよび/または関連データを取得するためにCMB122にアクセスする。
【0040】
図2は、ある実施形態に係る格納システム200を示す概略ブロック図である。格納システム200は、デコーダモジュール204を備えるコントローラ202を含む。デコーダモジュール204は、第1のデコーダ206、第2のデコーダ208、およびデコーダマネージャ/分類器210を備える。第1のデコーダ206、第2のデコーダ208、およびデコーダマネージャ/分類器210はすべて接続される。第1のデコーダ206および第2のデコーダ208のみが示されるが、2つ以上のデコーダが存在し得ることを理解されたい。
【0041】
図3は、ある実施形態に係るマルチギア低密度パリティ検査(LDPC)デコーダ302を示す概略ブロック300である。マルチギアLDPCデコーダ302は、高速低電力デコーダ304と低速高電力デコーダ306を備える。LDPCデコーダ302、高速低電力デコーダ304、および低速高電力デコーダ306は例示的であり、他の復号アルゴリズムに使用されてもよい。高速低電力デコーダ304は、単純なビット反転アルゴリズムを使用し、単純な計算を処理することができる。高速低電力デコーダ304は、低メモリサイズおよび低帯域幅(BW)を有する。高速低電力デコーダ304は、高い並列性(GB/sec)を有し、非常に電力効率が高い(mW/GB/sec)。高速低電力デコーダは、非常にコスト効率が高く(mm/GB/sec)、訂正機能が低下している。
【0042】
低速高電力デコーダ306は、確率伝搬法アルゴリズム(最適反復アルゴリズム)を使用し、複雑な計算を処理することができる。低速高電力デコーダ306は、高いメモリサイズおよび高いBWを有する。低速高電力デコーダ306は、約100MB/secの低い並列性および高速低電力デコーダ304より低い電力効率(mW/GB/sec)を有する。低速高電力デコーダ306は、高速低電力デコーダ304より低いコスト効率(mm/GB/sec)であり、増加した訂正能力を有する。アルゴリズムは単なる例であり、他の復号アルゴリズムが意図されることを理解されたい。
【0043】
図4は、ある実施形態に係る初期復号ギア選択の方法400を示すフローチャートである。従来のシステムでは、シンドローム重み(SW)に応じた初期ギア選択が行われていた。SWが復号の開始時に計算されるので、SWの再計算または追跡にはコストがかかります。従来のシステムでは、復号ギアの遷移は常に、より弱い/より速いギアからより強い/より遅いギアへ行われていた。
【0044】
方法400は、ブロック402で開始する。ブロック402において、図2のコントローラ202などのコントローラは、SWを計算する。SWは、コードワード内のパリティ検査式が満たされていない場合の数値です。ブロック402で計算されたSWに基づいて、方法400は、ブロック404またはブロック406のいずれかに進む。方法400は、コントローラがSWを低いと計算する場合、ブロック402からブロック404に進む。方法400は、コントローラがSWを高いと計算した場合、ブロック402からブロック406に進む。ブロック404において、コントローラは、高速低電力デコーダを使用する。障害が発生した場合、コントローラは、高速低電力デコーダの使用を再試行する。障害がある場合、方法400はブロック406に進む。ブロック406において、システムは、低速高電力デコーダを使用する。
【0045】
図5は、ある実施形態に係る、復号ギアを切り替える方法500を示すフローチャートである。方法500は、復号状態に従って復号ギアを動的に切り替える。主に、低速高電力デコーダ(第2のデコーダ)で復号されたコードワードについて、コードワードは十分に復号され、(はるかに)高速でより効率的なデコーダ(高速低電力)に転送される(潜在的に戻される)。
【0046】
方法500は、ブロック502で開始する。ブロック502において、図2のコントローラ202などのコントローラは、高BERコードワードを選択する。ブロック504において、システムは、高BERデコーダ(低速高電力)を使用して復号する。ブロック506において、コントローラは、コードワードが十分に復号されているかどうかを判定する。コントローラはコードワードが十分に復号されていないと判定した場合、方法500はブロック504に戻り、復号処理を継続する。コードワードが十分に復号される点は、低電力デコーダが高い確率で成功する変曲点である。コントローラはコードワードが十分に復号されると判定する場合、方法500はブロック508に進む。ブロック508において、コントローラは、高速/低BERデコーダ(高速低電力)で復号する。
【0047】
図6は、ある実施形態に係るギア遷移の復号の概略グラフ600である。グラフ600は、x軸が復号時間を示し、y軸が復号ギアを示す。低速高電力復号中に、ギア遷移のために検出された遷移点がある。遷移点において、コードワードは、高速低電力デコーダが成功することができるように十分に訂正される。高速低電力デコーダは、低速高電力デコーダよりもはるかに電力効率が高い。高速低電力デコーダは、復号時間を参照して、低速高電力デコーダよりも速く動作する。したがって、変曲/遷移点において、コントローラは、低速高電力デコーダから高速低電力デコーダに切り替えることができ、依然としてデコードに成功するが、はるかに高速な速度およびより低い電力使用量である。破線は、低速高電力デコーダが復号動作を完了するのにかかる可能性のある時間を示す。
【0048】
復号がうまく行うためには、屈折点/遷移点識別は、低速高電力から高速低電力への誤った遷移、すなわち高速低電力復号が失敗する遷移を回避するために重要である。高速低電力が失敗した場合、復号は低速高電力デコーダで再度実行するか(潜在的にゼロから)、リカバリフローを開始する必要がある。いずれのオプションも、大幅な遅延ペナルティを追加する。したがって、誤った遷移を回避することが有利になる。
【0049】
図7は、ある実施形態に係る日和見遷移の概略グラフ700である。グラフ700は、x軸が復号時間を示し、y軸が復号ギアを示す。日和見遷移中に、コードワードは、FPで復号を継続しながら(または復号を一時停止しながら)、一定の時間間隔の後に復号される。高速低電力復号が成功すると、低速高電力復号を停止し得る。日和見遷移では、遅延がある程度低減されるが、より多くの電力を使用する複数の試みのために無駄になる可能性があ。したがって、図7は、切り替えることなくいくらかの利得を有するが、経路に沿って実行される追加の失敗した復号動作のために可能な限り電力効率が良くない場合がある手法を示す。
【0050】
図8は、ある実施形態に係る復号遷移の方法800を示すフローチャートである。方法800は、方法700などの日和見方法にも使用され得る。方法800は、ブロック802で開始する。ブロック802において、図2のコントローラ202などのコントローラは、復号されるデータを図2の第1のデコーダ206などの第1のデコーダに導く。ブロック804において、第1のデコーダは、データを復号する。ブロック806において、コントローラは、タイマーが期限切れになったかどうかを判定する。コントローラはタイマーが切れていないと判定した場合、方法800はブロック804に戻る。コントローラはタイマーが切れたと判定した場合、方法800はブロック808に進む。ブロック808において、コントローラは、復号が完了したかどうかを判定する。コントローラは復号が完了したと判定する場合、方法800は、ブロック820に進み、ここで終了する。コントローラは復号が完了していないと判定する場合、方法800はブロック810に進む。ブロック810において、コントローラは、部分的に復号されたデータおよび残りの符号化されたデータを図2の第2のデコーダ208などの第2のデコーダに移動させる。ブロック812において、コントローラは、第2のデコーダにデータを復号する。ブロック814において、コントローラは、第2のデコーダが成功したかどうかを判定する。コントローラは第2のデコーダが成功したと判定する場合、方法800はブロック818に進む。コントローラは第2のデコーダが成功しないと判定した場合、方法800はブロック816に進む。ブロック816において、コントローラは、部分的に復号されたデータおよび残りの符号化されたデータをブロック804での第1のデコーダに送る。ブロック818において、コントローラは、復号が完了したかどうかを判定する。コントローラは復号が完了したと判定する場合、方法800はブロック820に進み、ここで終了する。コントローラは復号が完了していないと判定する場合、方法800はブロック812に戻る。
【0051】
図9は、ある実施形態に係るSWベースの遷移の概略グラフ900である。グラフ900は、x軸が復号時間を示し、y軸が復号ギアを示す。SWベースの遷移は、SWを閾値と比較することによって遷移点を識別する。SWは、低速高電力復号中に定期的に検査される。SWはBERのプロキシである。SWが閾値を下回ると、復号は、低速高電力復号から高速低電力復号に遷移する。閾値をオフラインで調整して、誤った遷移を回避しながら最高のパフォーマンスを確保できる。閾値のオフライン調整は、失敗し得る高速低電力復号への遷移を回避するために閾値を設定し得る。SWがハンドオフ閾値を下回ると、低速高電力復号は、低速高電力復号から高速低電力復号に遷移する。SW遷移は、グラフ700に見られる日和見遷移の遅延低減と比較して、増加した遅延低減をもたらす。欠点は、SWベースの遷移は、復号中にSWを追跡するための回路を必要とすることである。SW追跡のコストおよび電力は、現在の方法を使用することによって達成される遅延低減と比較して依然として低い場合がある。
【0052】
図10は、ある実施形態に係るSWベースの遷移の方法1000を示すフローチャートである。方法1000は、SWを閾値と比較することによって遷移点を識別する。BERが十分に低くなると、復号は、低速高電力復号から高速低電力復号に移行する。
【0053】
方法1000は、ブロック1002で開始する。ブロック1002で、図2のコントローラ202などのコントローラは、復号されるデータを図2の第1のデコーダ206などの第1のデコーダに導く。ブロック1004において、第1のデコーダは、データを復号する。ブロック1006において、コントローラは、SWを計算する。SWの計算はまた、復号と並行して行われてもよい。ブロック1008において、コントローラは、SWが閾値を下回っているかどうかを判定する。コントローラはSWが閾値を下回っていないと判定した場合、方法1000はブロック1004に戻る。コントローラはSWが閾値を上回ると判定した場合、方法1000はブロック1010に進む。ブロック1010において、コントローラは、部分的に復号されたデータおよび残りの符号化されたデータを図2の第2のデコーダ208などの第2のデコーダに移動させる。ブロック1012において、コントローラは、第2のデコーダにデータを復号する。ブロック1014において、コントローラは、復号が完了したかどうかを判定する。コントローラは復号が完了していないと判定した場合、方法1000はブロック1012に戻る。コントローラは復号が完了したと判定した場合、方法1000はブロック1016に進み、ここで終了する。
【0054】
図11は、ある実施形態に係る機械学習(ML)ベースの遷移1100の概略図である。グラフ1100は、x軸が復号時間を示し、y軸が復号ギアを示し、低速高電力復号から高速低電力復号遷移するようにコードワードが十分に復号されたときに、低速高電力復号内の点を検出するように訓練されたML分類器を使用することを示す。十分に復号された復号は、高速低電力復号がこの点から成功する可能性が高いことによって定義される。分類器は、容易に利用可能な特徴(復号処理の副産物として生成される)を使用して訓練され、低複雑度の推論関数を介して実装され得る。MLベースの遷移1100は、SWの追跡を必要としないため、SWベースの遷移手法よりも好ましく、これにより、低コストおよび低消費電力の解決策がもたらされ得る。
【0055】
実装された分類器は、低いASICゲートカウントおよび良好な電力性能を確保するための低複雑度の推論関数(線形サポートベクトルマシン(SVM)および単純なツリーベースのモデルなど)であり得る。さらに、復号動作中に(復号の副産物として)利用可能であるか、または抽出が容易である(低複雑度および電力)単純な特徴は、ML遷移において使用される。
【0056】
使用される単純な特徴の例としては、異なる後ろ向きウィンドウで発生した満たされていないパリティ検査の数が挙げられ、例えば、(1/8、2/8、・・・、1)後方へ反復する。追加の特徴は、同じ後ろ向きウィンドウ内のデコーダによって反転されたビットフリップの数である。また、大きさが閾値を超える対数尤度比(LLR)の数である。他のLLR統計には、限定されないが、LLRの大きさがある値を下回る/上回るビットの数、平均LLRの大きさ、LLRの大きさSTDなどが含まれる。なお、上記のビット関連特徴は、ビットの程度に従って分離およびカウントすることができる。ビットの程度は、ビットが参加しているパリティ検査方程式の数を指す。例えば、3つのパリティ検査に参加するビット(=程度-3のビット)または4つのパリティ検査に参加するビット(=程度-4のビット)についての別個の統計などのビット程度に従う。単純な特徴が例示的であり、他の単純な特徴が使用されてもよいことを理解されたい。
【0057】
図12は、ある実施形態に係るMLベースの遷移の方法1200を示すフローチャートである。方法1200は、ブロック1202で開始する。ブロック1202において、図2のコントローラ202などのコントローラは、復号されるデータを図2第1のデコーダ206などの第1のデコーダに導く。ブロック1204v、第1のデコーダは、データを復号する。ブロック1206において、コントローラは、データが図2の第2のデコーダ208などの第2のデコーダに移動されるのに十分に復号される点を計算する。ブロック1208において、コントローラは、データが十分に復号される点に到達したかどうかを判定する。コントローラは点に到達していないと判定した場合、方法1200はブロック1204に戻る。コントローラは点に到達したと判定した場合、方法1200はブロック1210に進む。ブロック1210において、コントローラは、部分的に復号されたデータおよび残りの符号化されたデータを第2のデコーダに移動させる。ブロック1212において、コントローラは、第2のデコーダにデータを復号する。ブロック1214において、コントローラは、復号が完了したかどうかを判定する。コントローラは復号が完了していないと判定した場合、方法1200はブロック1212に戻る。コントローラは復号が完了したと判定した場合、方法1200は、ブロック1216に進み、ここで終了する。
【0058】
図13は、ある実施形態に係る分類訓練および干渉の方法1300を示すフローチャートである。訓練に使用されるラベルは、高速低電力復号がノイズの多いコードワードの復号に成功できるかどうかである。使用例では、(真陽性率を犠牲にして)偽陽性率を最小限に抑えることが有益です。上述したように、図2のコントローラ202などのコントローラがコードワードを高速低電力復号に転送し、高速低電力復号に失敗した場合、回復フローがトリガされる。次いで、訓練コスト関数は、観察可能な偽陽性が最小化される保守的な作業ポイントを選択するようにバイアスされる。
【0059】
方法1300は、ML訓練中にブロック1302で開始する。ブロック1302において、データが抽出される。ブロック1304において、データが符号化される。ブロック1306において、フラッシュチャネルモデルが作成される。ブロック1308において、低速高電力デコーダシミュレーションが実行される。方法1300は、ブロック1310またはブロック1312のいずれに進むことができる。ブロック1310において、高速低電力デコーダシミュレーションが実行される。ブロック1314において、データは、第2のデコーダで復号される。方法1300は、推論においてブロック1316に続く。ブロック1316において、データは、低速高電力デコーダを使用して復号される。ブロック1318において、データは、高速低電力デコーダを使用して復号される。ブロック1320において、推論回路は、ブロック1316において、低速高電力デコーダから上述した単純な特徴などの特徴の使用を通じてデータを受信することができるか、またはブロック1316において、低速高電力デコーダにデータを転送することができる。
【0060】
復号システムの性能を改善するために、基本的な手法は、第2のデコーダから硬判定を取り、遷移するときにソフト情報を使用して第1のデコーダを初期化することである。
【0061】
一実施形態では、コントローラは、第1の電力効率レベルで動作する第1のデコーダと、第1の電力効率レベルより低い第2の電力効率レベルで動作する第2のデコーダと、第1のデコーダおよび第2のデコーダに結合されたデコーダマネージャとを備え、デコーダマネージャは、符号化されたデータを第1のデコーダに導いて復号し、復号においてデータが第2のデコーダによって復号できるように十分に復号された点を検出し、十分に復号されたデータを第2のデコーダに導くように構成される。検出は、推論回路を使用して低複雑度の推論関数を実行することを含む。推論回路は、乗算器と乗算器に結合される加算器とを含む。推論回路は、加算器に結合されるアキュムレータをさらに含む。デコーダマネージャは、機械学習(ML)分類器をさらに含む。ML分類器は、検出を実行するように訓練される。訓練は、オフラインで行われる。ML分類器は、後ろ向きウィンドウにおいて第1のデコーダによって反転されるビットフリップの数を決定するように構成される。ML分類器は、後ろ向きウィンドウにおいて第1のデコーダの満たされていないパリティ検査の数を決定するように構成される。
【0062】
別の実施形態では、コントローラは、第1の復号レベルで動作する第1のデコーダと、第1のレベルより低い第2の復号レベルで動作する第2のデコーダと、第1のデコーダおよび第2のデコーダに結合されたデコーダマネージャとを備え、デコーダマネージャは、符号化されたデータを第1のデコーダに導いて部分的に復号し、部分的に復号されたデータを第2のデコーダに導くように構成される。デコーダマネージャは、さらに、符号化されたデータのシンドローム重み(SW)を計算するように構成される。デコーダマネージャは、さらに、計算されたSWを閾値と比較するように構成される。デコーダマネージャは、さらに、所定の期間後に部分的に復号されたデータを第2のデコーダに導くように構成される。デコーダマネージャは、さらに、第2のデコーダが部分的に復号されたデータの復号に失敗したと判定するように構成される。デコーダマネージャは、さらに、部分的に復号されたデータを第1のデコーダに送り返すように構成される。デコーダマネージャは、さらに、部分的に復号されたデータを第2のデコーダに送ることができる、第1のデコーダで符号化されたデータを復号する際の点を検出するように構成される。
【0063】
別の実施形態では、コントローラは、第1の電力効率レベルでデータを復号する第1の手段と、第1の電力効率レベルより低い第2の電力効率レベルでデータを復号する第2の手段と、データを復号する第1の手段およびデータを復号する第2の手段に結合された復号マネージャとを備え、復号マネージャは、データを復号する第1の手段で復号データをシミュレートすることにより第1の復号情報を取得し、データを復号する第2の手段で復号データをシミュレートすることにより第2の復号情報を取得し、第1の復号情報および第2の復号情報を分類器に配信し、配信に基づいて分類器の重みおよびバイアスを作成する。第1の復号情報の取得、第2の復号情報の取得、配信、および作成は、オフラインで行われる。復号マネージャは、データを復号する第1の手段およびデータを復号する第2の手段について満たされていないパリティ検査の数を決定するように構成される。復号マネージャは、分類された重みおよびバイアスを推論回路に配信するように構成される。
【0064】
上記は、本発明の実施形態を対象としているが、本発明の他のおよびさらなる実施形態は、その基本的な範囲から逸脱することなく考案されることがあり、その範囲は、以下の特許請求の範囲によって決定される。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
【外国語明細書】