(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024086584
(43)【公開日】2024-06-27
(54)【発明の名称】データとメタデータを記憶するためのマッピング
(51)【国際特許分類】
G06F 12/02 20060101AFI20240620BHJP
G06F 12/00 20060101ALI20240620BHJP
G06F 11/10 20060101ALI20240620BHJP
【FI】
G06F12/02 570A
G06F12/00 597U
G06F11/10 608
【審査請求】有
【請求項の数】18
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023184317
(22)【出願日】2023-10-26
(31)【優先権主張番号】18/081,723
(32)【優先日】2022-12-15
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.PYTHON
(71)【出願人】
【識別番号】512167426
【氏名又は名称】華邦電子股▲ふん▼有限公司
【氏名又は名称原語表記】Winbond Electronics Corp.
(74)【代理人】
【識別番号】100204490
【弁理士】
【氏名又は名称】三上 葉子
(72)【発明者】
【氏名】カルズニー,ウリ
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA08
5B160AB26
5B160NA00
(57)【要約】 (修正有)
【課題】データ列及び対応するメタデータが同一のセクタに記憶される回路及び方法を提供する。
【解決手段】コンピュータシステム200において、記憶装置204は、複数のセクタを含む不揮発性メモリ(NVM)と、ホストからデータブロックの論理アドレスを受信し、複数のセクタから選択されたセクタと、同一の選択されたセクタ内の選択されたデータオフセットとを含む論理アドレスからデータ物理アドレスへのマッピングを計算し、選択されたセクタと、選択されたセクタ内のメタデータオフセットを含むメタデータ物理アドレスを計算し、データ物理アドレスでデータブロックにアクセスし、メタデータ物理アドレスでメタデータにアクセスするメモリアクセス制御回路212と、を備える。
【選択図】
図2
【特許請求の範囲】
【請求項1】
複数のセクタを含む不揮発性メモリ(NVM)と、
ホストからデータブロックの論理アドレスを受信し、
前記複数のセクタから選択されたセクタと、前記同一の選択されたセクタ内の選択されたデータオフセットとを含む前記論理アドレスからデータ物理アドレスへのマッピングを計算し、
前記選択されたセクタと、前記選択されたセクタ内のメタデータオフセットを含むメタデータ物理アドレスを計算し、
前記データ物理アドレスでデータブロックにアクセスし、前記メタデータ物理アドレスで前記メタデータにアクセスするように構成されたメモリアクセス回路と、
を備える記憶装置。
【請求項2】
前記メモリアクセス回路は、前記ホストから書き込みコマンド及び前記データブロックを受信し、それに応答して、前記データブロックに対応する前記メタデータを取得し、前記データブロックを前記データ物理アドレスの前記NVMに記憶し、前記メタデータを前記NVMの前記メタデータ物理アドレスに記憶するように構成された、請求項1に記載の記憶装置。
【請求項3】
前記メモリアクセス回路は、前記プロセッサから読み取りコマンドを受信し、それに応答して、前記NVMの前記データ物理アドレスに記憶されている前記データブロックを読み取り、前記NVMの前記メタデータ物理アドレスに記憶されている前記メタデータを読み取るように構成された、請求項1に記載の記憶装置。
【請求項4】
各セクタのサイズはバイト単位で2の整数乗であり、各セクタ内のデータブロックの数は(2m-1)・2nの形式であり、m及びnは整数値を表す、請求項1に記載の記憶装置。
【請求項5】
前記メモリアクセス回路は、所与の入力の整数除算を(2m-1)で計算するように設計された(2m-1)除算回路を備え、
前記メモリアクセス回路は、前記論理アドレスに前記(2m-1)除算回路を適用することにより、前記論理アドレスの前記データ物理アドレスへの前記マッピングを計算するように構成された、請求項4に記載の記憶装置。
【請求項6】
前記(2m-1)除算回路は、
(i)前記所与の入力と、(ii)mビットの整数倍だけ左にシフトされた前記所与の入力のシフト加算の合計を計算し、
要求される精度に応じて、前記シフト加算の合計の計算をd回繰り返し、
前記合計の(d-1)m個の最下位ビットを切り捨てて結果を取得し、前記結果が2m-1に等しい場合は、結果に2mを加算し、
前記m個の最下位ビットを切り捨てることによって、前記所与の入力の(2m-1)による前記整数除算を計算するように構成された、請求項5に記載の記憶装置。
【請求項7】
前記メモリアクセス回路は、所与の入力のモジュロ(2m-1)を計算するように設計されたモジュロ(2m-1)回路を備え、
前記メモリアクセス回路は、前記論理アドレスに前記モジュロ(2m-1)回路を適用することにより、前記データオフセット及び前記メタデータオフセットを計算するように構成された、請求項4に記載の記憶装置。
【請求項8】
前記モジュロ(2m-1)回路は、入力数値を受信し、再帰的に、(i)前記入力数値を1組のmビットフラグメントに分割し、(ii)前記mビットフラグメントを互いに加算して、前記入力数値よりも小さい出力数値を取得し、(iii)前記出力数値が2m未満になるまで、ステップ(i)と(ii)を繰り返すように構成された、請求項7に記載の記憶装置。
【請求項9】
m=3である、請求項5に記載の記憶装置。
【請求項10】
複数のセクタを含む不揮発性メモリ(NVM)にアクセスする方法であって、
ホストからデータブロックの論理アドレスを受信し、
前記複数のセクタから選択されたセクタと、前記同一の選択されたセクタ内の選択されたデータオフセットとを含む前記論理アドレスからデータ物理アドレスへのマッピングを計算し、
前記選択されたセクタと、前記選択されたセクタ内のメタデータオフセットを含むメタデータ物理アドレスを計算し、
前記データ物理アドレスでデータブロックにアクセスし、前記メタデータ物理アドレスで前記メタデータにアクセスすることを含む、方法。
【請求項11】
前記データブロック及び前記メタデータへアクセスは、前記ホストから書き込みコマンド及び前記データブロックを受信し、それに応答して、前記データブロックに対応する前記メタデータを取得し、前記データブロックを前記データ物理アドレスの前記NVMに記憶し、前記メタデータを前記NVMの前記メタデータ物理アドレスに記憶することを含む、請求項10に記載の方法。
【請求項12】
前記データブロック及び前記メタデータへアクセスは、前記プロセッサから読み取りコマンドを受信し、それに応答して、前記NVMの前記データ物理アドレスに記憶されている前記データブロックを読み取り、前記NVMの前記メタデータ物理アドレスに記憶されている前記メタデータを読み取ることを含む、請求項10に記載の方法。
【請求項13】
各セクタのサイズはバイト単位で2の整数乗であり、各セクタ内のデータブロックの数は(2m-1)・2nの形式であり、m及びnは整数値を表す、請求項10に記載の方法。
【請求項14】
前記論理アドレスの前記データ物理アドレスへのマッピングの計算は、前記論理アドレスに、所与の入力の(2m-1)による整数除算を計算するように設計された(2m-1)除算回路を適用することを含む。請求項13に記載の方法。
【請求項15】
(i)前記所与の入力と、(ii)mビットの整数倍だけ左にシフトされた前記所与の入力のシフト加算の合計を計算し、
要求される精度に応じて、前記シフト加算の合計の計算をd回繰り返し、
前記合計の(d-1)m個の最下位ビットを切り捨てて結果を取得し、前記結果が2m-1に等しい場合は、結果に2mを加算し、
前記m個の最下位ビットを切り捨てることによって、前記所与の入力の(2m-1)による前記整数除算を計算することを含む、請求項14に記載の方法。
【請求項16】
前記データオフセット及び前記メタデータオフセットの計算は、所与の入力のモジュロ(2m-1)を計算するように設計されたモジュロ(2m-1)回路を前記論理アドレスに適用することを含む、請求項13に記載の方法。
【請求項17】
入力数値を受信し、再帰的に、(i)前記入力数値を1組のmビットフラグメントに分割し、(ii)前記mビットフラグメントを互いに加算して、前記入力数値よりも小さい出力数値を取得し、(iii)出力数値が2m未満になるまでステップ(i)及び(ii)を繰り返すことにより、前記モジュロ(2m-1)を計算することを含む、請求項16に記載の方法。
【請求項18】
m=3である、請求項13に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、不揮発性メモリに関し、特に、データ及びメタデータを不揮発性メモリに効率的に記憶するための方法及びシステムに関する。
【背景技術】
【0002】
不揮発性メモリ、特にフラッシュ メモリは、多くの場合、データと対応するメタデータをセクタと呼ばれる記憶部に記憶する。
【0003】
米国特許出願公開第2003/0204699号には、整合性メタデータを埋め込む方法が記載されている。例示的な一実施形態では、複数の整合性メタデータセグメントが決定される。各整合性メタデータセグメントは、ユーザデータのセグメントに関連付けられる。ユーザデータは、複数の物理セクタにマッピングされ、各物理セクタは、ユーザデータのセグメントと関連する整合性メタデータセグメントを含む。例示的な一実施形態では、共通のI/Oデータブロックサイズが決定され、そのデータはいくつかの512バイトのセクタにマッピングされる。512バイトのセクタ数は、共通のI/Oデータブロックサイズに1以上の追加の512バイトセクタに必要な数を加えたものに対応する。これにより、整合性メタデータを収容するための追加空間が各セクタに作成される。各セクタの整合性メタデータは、各セクタの追加空間にマッピングされる。
【0004】
米国特許第11,294,902号は、コンピューティングシステムの処理エンティティが、データブロックの複数の列から複数のパリティブロックを生成することを含む方法を記載している。複数のパリティブロックのうちの第1の数のパリティブロックは、データブロックのうちの複数の列のデータブロックの第1の列から生成される。この方法は、処理エンティティが、読み取り/書き込みバランシングパターン及び制限されたファイルシステムに従って、コンピューティングシステムのコンピューティングデバイスのクラスタのメモリのデータセクションにデータブロックの複数の列を記憶することをさらに含む。
【発明の概要】
【発明が解決しようとする課題】
【0005】
NVM(Non-Volatile Memory;NVM)デバイスは、多くの場合、記憶されたデータブロック(本明細書ではデータブロックを「データ列」と呼ぶ)に対応するメタデータを記憶する。例えば、巡回冗長符合(Cyclic Redundancy Code;CRC)やエラー訂正符号(Error Correcting Code;ECC)などのパリティ署名は、読み取りデータの信頼性を高めるためによく使用される。フラッシュメモリなどのNVMは、個別に消去できる最小の記憶単位であるセクタを含む。
【0006】
考えられる実現方法の1つは、データ列と対応するメタデータを別のセクタに保存することである。これにより、ユーザの論理アドレス空間を、NVM内のアドレスを定義する物理アドレス空間にダイレクトマッピングできる。例えば、4Kバイトのセクタを想定すると、24ビットの論理アドレスをセクタ番号とセクタ内のオフセットにマッピングすることができる。ここで、セクタ番号は、論理アドレスの最上位12ビットを含み、オフセットは、最下位12ビットを含む。
【0007】
ただし、データとメタデータを別のセクタに記憶するということは、データの消去にはセクタ内のメタデータ(セクタ内で占める割合はごく一部のみ)の消去が含まれることを意味する。フラッシュではセクタの一部を消去する方法がないため、このセクタには他のデータを記憶することができず、物理空間の多くが失われる。
【課題を解決するための手段】
【0008】
本明細書に記載される実施形態は、(i)複数のセクタを含む不揮発性メモリ(NVM)と、(ii)メモリアクセス回路と、を含む記憶装置を提供する。メモリアクセス回路は、ホストからデータブロックの論理アドレスを受信し、複数のセクタから選択されたセクタと、同一の選択されたセクタ内の選択されたデータオフセットとを含む論理アドレスからデータ物理アドレスへのマッピングを計算し、選択されたセクタ内のメタデータオフセットを計算し、データ物理アドレスでデータブロックにアクセスし、メタデータ物理アドレスでメタデータにアクセスするように構成される。
【0009】
一実施形態では、メモリアクセス回路は、ホストから書き込みコマンド及びデータブロックを受信し、それに応答して、データブロックに対応するメタデータを取得し、データブロックをNVMのデータ物理アドレスに記憶し、メタデータをNVMのメタデータ物理アドレスに記憶するように構成される。別の実施形態では、メモリアクセス回路は、プロセッサから読み取りコマンドを受信し、それに応答して、データ物理アドレスでNVMに記憶されているデータブロックを読み取り、NVMのメタデータ物理アドレスに記憶されているメタデータを読み取るように構成される。
【0010】
いくつかの実施形態では、各セクタのサイズはバイト単位で2の整数乗であり、各セクタ内のデータブロックの数は(2m-1)・2nの形式であり、m及びnは整数値を表す。
【0011】
本発明の実施形態では、メモリアクセス回路は、所与の入力の整数除算を(2m-1)で計算するように設計された(2m-1)除算回路を備える。そして、メモリアクセス回路は、論理アドレスに(2m-1)除算回路を適用することにより、論理アドレスのデータ物理アドレスへのマッピングを計算するように構成される。例示的な実施形態では、(2m-1)除算回路は、(i)所与の入力と、(ii)mビットの整数倍だけ左にシフトされた所与の入力のシフト加算の合計を計算し、要求される精度に応じて、シフト加算の合計の計算をd回繰り返し、合計の(d-1)m個の最下位ビットを切り捨てて結果を取得し、結果が2m-1に等しい場合は、結果に2mを加算し、m個の最下位ビットを切り捨てることによって、(2m-1)により前記所与の入力の前記整数除算を計算するように構成される。
【0012】
本発明の実施形態では、メモリアクセス回路は、所与の入力のモジュロ(2m-1)を計算するように設計されたモジュロ(2m-1)回路を含み、メモリアクセス回路は、論理アドレスにモジュロ(2m-1)回路を適用することにより、データオフセットとメタデータオフセットを計算するように構成される。例示的な実施形態では、モジュロ(2m-1)回路は、入力数値を受信し、再帰的に、(i)入力数値を1組のmビットのフラグメントに分割し、(ii)mビットのフラグメントを互いに加算して、入力数値よりも小さい出力数値を取得し、(iii)出力数値が2m未満になるまで、ステップ(i)と(ii)を繰り返す。例示的な実施形態では、mは3に等しい。
【0013】
本明細書の別の実施形態によれば、複数のセクタを含む不揮発性メモリ(NVM)にアクセスする方法がさらに提供される。この方法は、以下を含む。ホストからデータブロックの論理アドレスを受信する。論理アドレスからデータ物理アドレスへのマッピングが計算される。データ物理アドレスは、複数のセクタの中から選択されたセクタと、同一の選択されたセクタ内の選択されたデータオフセットを含む。選択されたセクタと、選択されたセクタ内のメタデータオフセットを含むメタデータ物理アドレスが計算される。データブロックは、データ物理アドレスでアクセスされ、メタデータは、メタデータ物理アドレスでアクセスされる。
【発明の効果】
【0014】
本明細書で開示される本発明の実施形態は、データ列及び対応するメタデータが同一のセクタに記憶される回路及び方法を提供する。実施形態において、NVM記憶装置は、論理アドレスから物理アドレスへのマッピングを効率的に容易にするメモリアクセス回路(MAC)を備える。
【0015】
本発明は、図面と併せて、以下の実施形態の詳細な説明からより完全に理解することができる。
【図面の簡単な説明】
【0016】
【
図1】本発明の一実施形態による、論理アドレス空間と物理アドレス空間との間のアドレスマッピングを概略的に示すブロック図である。
【
図2】本発明の一実施形態による、不揮発性メモリ(NVM)を備えるコンピュータシステムを概略的に示すブロック図である。
【
図3】本発明の一実施形態による、NVMにデータ列を記憶及び取得する方法を概略的に示すフローチャートである。
【
図4】本発明の一実施形態による、アドレスマッピング回路を概略的に示すブロック図である。
【
図5】本発明の一実施形態による、7分周回路の構成を概略的に示すブロック図である。
【
図6】本発明の一実施形態による、モジュロ7回路の構成を概略的に示すブロック図である。
【
図7】本発明の一実施形態による、所与の数のモジュロ7を効率的に計算する方法を概略的に示すフローチャートである。
【発明を実施するための形態】
【0017】
NVMデバイスは、多くの場合、保存されたデータブロック(本明細書ではデータブロックを「データ列」と呼ぶ)に対応するメタデータを保存する。例えば、巡回冗長符号(Cyclic Redundancy Code;CRC)やエラー訂正符号(Error Correcting Code;ECC)などのパリティ署名が、読み取りデータの信頼性を高めるためによく使用される。フラッシュメモリなどのNVMはセクタを含み、ここで、セクタは、個別に消去できる最小の記憶単位である。
【0018】
考えられる実現方法の1つは、データ列と対応するメタデータを別のセクタに保存することである。これにより、ユーザの論理アドレス空間を、NVM内のアドレスを定義する物理アドレス空間にダイレクトマッピングすることができる。例えば、4Kバイトのセクタを想定すると、24ビットの論理アドレスを、セクタ番号とセクタ内のオフセットにマッピングすることができる。ここで、セクタ番号は、論理アドレスの最上位12ビットを含み、オフセットは最下位12ビットを含む。
【0019】
ただし、データとメタデータを別のセクタに記憶するということは、データの消去にはセクタ内のメタデータ(セクタ内で占める割合はごく一部のみ)の消去が含まれることを意味する。フラッシュではセクタの一部を消去する方法がないため、このセクタには他のデータを保存できず、物理空間の多くが失われる。
【0020】
本明細書で開示される本発明の実施形態は、データ列及び対応するメタデータが同一のセクタに記憶される回路及び方法を提供する。実施形態において、NVM記憶装置は、論理アドレスから物理アドレスへのマッピングを効率的に容易にするメモリアクセス回路(memory access circuit;MAC)を備える。
【0021】
実施形態において、論理アドレス空間は、論理ページ(データ列及び対応するメタデータのグループ)に分割される。各ページのサイズは、物理セクタのサイズに近く、ページ内のデータ列の数は(2m-1)*2nであり、ここで、n及びmは整数である。
【0022】
1つの例示的な実施形態において、論理アドレス空間は、論理ページに分割され、各ページは、224=7*32個の16バイトのデータ列を含む。各論理ページは、4096バイトの物理セクタに配置され、データ列は、セクタ内の連続したアドレスに記憶される。2バイトのメタデータは、16バイトのデータ行ごとに個別に計算される。すべてのメタデータは、最後のデータ行の直後に記憶される(セクタの先頭から224*16=3,584のオフセットで開始)。データとメタデータは合わせて224*(16+2)=4032バイトを占め、各セクタに未使用のバイトは64バイトだけが残る。
【0023】
いくつかの実施形態では、コンピュータシステムは、プロセッサ、NVM記憶装置、及びプロセッサと記憶装置によって共有されるランダムアクセスメモリ(RAM)を備えても良い。記憶装置は、メモリアクセス回路(MAC)を備える。NVMにデータを記憶するには、データが最初に共有RAMにあると仮定すると、プロセッサは、データの論理アドレスをMACに送信する。MACは、論理アドレスを含むデータ列の先頭を計算し、共有メモリからデータ列全体を読み取る。次に、MACは、(例えば、パリティ生成回路を使用するか、プロセッサにメタデータの計算を要求することによって)データ列に対応するメタデータを取得し、データとメタデータの物理アドレスを計算し、データとメタデータをNVMの同一のセクタに記憶する。
【0024】
NVMからデータを読み取るために、プロセッサは、データの論理アドレスをMACに送信する。MACは、データ及びメタデータの対応する物理アドレスを計算し、データ及びメタデータを読み取る。プロセッサは、データを訂正し(例えば、メタデータがデータ列のECCコードである場合)、データを共有RAMに保存し、必要に応じてエラーを表示する。
【0025】
実施形態では、論理ページ内のデータ列の数は、(2m-1)*2nの形式である。MACは、入力数値を2m-1で除算する(2m-1)除算回路を含む。
【0026】
他の実施形態では、MACは、数値のモジュロ(2m-1)除算を計算するモジュロ(2m-1)回路を備える。
【0027】
例示的な実施形態では、m=3であり、論理ページ内のデータ列の数は224=7*25であり、アドレスマッピングは、整数の7による除算とモジュロ7の計算を含む。
【0028】
有効な整数を2m-1で除算する
【0029】
数学的には、2
m-1で除算すると、次のようになる。
【数1】
【0030】
【0031】
【0032】
除算の定義形式をPython言語プログラムの形で以下に示す。パラメータの深さは、内部合計の項の数として定義される。
【数4】
【0033】
上記の合計の深さによって、アルゴリズムが正しい答えを与える範囲が決定される。このパラメータは、シミュレーションを実行するニーズに応じて選択される。数値シミュレーションの結果の一部を以下の表に示す。
【0034】
【0035】
フラッシュメモリなどのNVMデバイスは、多くの場合、データをセクタに記憶する。セクタは、独立して消去できる最小のエンティティである。実施形態では、データ管理を容易にするために、ユーザデータ及び対応するメタデータは、同一のセクタに記憶される。一実施形態では、ユーザは、データがどこに記憶されているかを考慮することなく、論理アドレス空間の論理ページに基づいて、データを参照する。論理アドレスは、フラッシュメモリ内の適切なセクタ、データが保存されるセクタ内のオフセット、及び対応するメタデータが保存されるセクタ内のオフセットに変換される。セクタ番号とオフセットを含むフラッシュ内のアドレスは、物理アドレスという。論理アドレスから物理アドレスに変換するプロセスをアドレスマッピングという。
【0036】
図1は、本発明の一実施形態による、論理アドレス空間102と物理アドレス空間104との間のアドレスマッピング100を概略的に示すブロック図である。
【0037】
図1に示す例示的な実施形態によれば、物理アドレス空間は、4096バイトのセクタ106を含む。各セクタは、224の16バイトのデータ列108を備え、各データ列に対して、それぞれ対応する2バイトのメタデータ110を含む(セクタの64バイトは使用されない)。
【0038】
1つの物理セクタには224のデータ列があり、各列は16バイトであるため、物理セクタには3584バイトのデータが存在する。論理アドレス空間は連続しており、各3584バイトのページの先頭バイトが対応する物理セクタの先頭バイトにマップされるように物理セクタにマッピングされ、論理アドレスn*3584は、n番目の物理セクタの先頭バイトにマッピングされる。
【0039】
なお、このダイレクトマッピングは便利であるが、本発明はダイレクトマッピングに限定されず、代替的な実施形態では、他の1対1マッピングも使用することができる。例えば、ある実施形態では、論理ページから物理ページへのマッピングは、ウェアレベリングフラッシュ管理ソフトウェアによって維持されるテーブルに従って実行されても良い。他の実施形態では、セキュリティを向上させるために、ページ内のデータ列のマッピングがスクランブルされる。
【0040】
図1に示し、上記で説明した論理アドレスから物理アドレスへのマッピング100の構成は、例として挙げた一例である。別の実施形態では、他のマッピング構成が使用されても良い。
例えば、一実施形態では、セクタサイズは8192バイト、又は他の任意の適切なサイズであっても良い。いくつかの実施形態では、各データ列に関連付けられたメタデータバイトの数は、2つ以上(例えば、4つ)であっても良く、ある実施形態では、1以上であっても良い。
【0041】
別の実施形態では、各ページのデータ列のサイズ及び/又は数は、16とは異なっても良い。さらに別の実施形態では、各データ列のメタデータは、データ列の直後に保存される。
【0042】
いくつかの実施形態では、上記各セクタ内の未使用空間は、追加のメタデータ及び/又は他の任意の適切な用途に使用されても良い。一実施形態では、空間は、ウェアレベリングのための消去カウンタを保存しても良い。
【0043】
アドレスマッピング
【0044】
以下では、論理アドレス空間と物理アドレス空間が、アドレス0から始まる均一空間であると仮定する。例えば、物理ページが任意のセクタにマッピングされる場合など、これに当てはまらない場合は、ページ番号マッピングテーブルを追加しても良い。
【0045】
以下に説明する例示的な実施形態では、以下の定数を指定する。
1.セクタのサイズ=4,096バイト(256の16バイトの列)。
2.16バイトのデータ列。それぞれは、2つのメタデータバイトを含む。
3.nデータ列=224(データストレージに使用されるセクタ内のデータ列数)。
4.セクタ_データ_サイズ(セクタ内の保存バイト数)=16*nデータ列=3,584。
【0046】
データ列の論理アドレス(logic address;LA)を受信し、データと対応するメタデータの物理アドレスを出力する論理アドレスから物理アドレスへのマッピングは、次のように定義される。
1.セクタ=LA/セクタデータサイズ(整数除算)
2.データオフセット=LA%セクタデータサイズ
3.セクタアドレス=セクタ*セクタサイズ
4.メタデータオフセット=セクタデータサイズ+データオフセット/8(8はデータと対応するメタデータのサイズの比率)。
【0047】
図2は、本発明の一実施形態による、不揮発性メモリ(NVM)を備えるコンピュータシステム200を概略的に示すブロック図である。
【0048】
実施形態では、コンピュータシステム200は、相互接続された複数の集積回路(IC)及び個別のデバイスを備えても良い。他の実施形態では、コンピュータシステムは、単一のIC(例えば、システムオンシリコン、SoC)であっても良い。
【0049】
コンピュータシステム200は、1つ又は複数のプロセッサ202と、少なくとも1つの記憶装置204と、を備える。記憶装置は、適切な読み取り、プログラム、及び消去回路(図示せず)を備えた不揮発性メモリ(NVM)(例えば、フラッシュメモリ)206を含む。NVMは、データ列(各データ列は、例えば、16バイトを含む)を記憶するための複数のセクタを含み、データ列ごとに、対応するメタデータ(例えば、2バイト)を記憶する。
【0050】
実施形態では、メタデータは、CRCやECCなどの対応するデータ列のパリティ署名を含む。別の実施形態では、他のタイプのメタデータが記憶されても良い。
図2に示す例示的な実施形態によれば、記憶装置204は、入力データ列のパリティ署名(例えば、CRCやECC)を生成するように構成されたパリティ生成回路208と、入力データ列のパリティ署名を確認及び確認し、(エラー訂正メタデータについて)データ列を訂正し、エラー(あれば)を示すように構成された、エラー検出/訂正回路210と、を備える。
【0051】
記憶装置204は、論理データ列の論理アドレス入力をデータ列の対応する物理アドレスにマッピングする(プロセッサによって送信される)こと、及び、データ列に対応するメタデータの物理アドレスを生成することを含むNVMアクセスを制御するように構成された、メモリアクセス制御回路(MAC)212をさらに備える。
【0052】
プロセッサが、位置LAにデータ列を記憶することを要求すると、MACは、データ列と対応するメタデータを記憶するためのセクタ番号を計算し、データ列とメタデータのオフセットを計算し、(パリティ生成回路208で)メタデータを生成し、計算されたオフセットで、データ列とメタデータを同一のセクタに記憶する。
【0053】
読み取り操作の場合、MACは、データ列と対応するメタデータを読み取るためのセクタ番号を計算し、データ列とセクタのオフセットを計算して、NVMからデータ列とメタデータを読み取る。次に、エラー検出/訂正回路は、読み取ったデータ列を確認及び/又は訂正し、訂正されたデータ列をプロセッサに送信する(又は、データ列と、エラーが検出された場合にはエラー表示を送信する)。
【0054】
図2に示され、上記で説明されたコンピュータシステム200の構成は、単に概念的な明瞭さのために引用された例示的な構成である。代替的な実施形態では、他の構成が使用されても良い。例えば、いくつかの実施形態では、MAC又はその一部はプロセッサ内にある。他の実施形態では、パリティ生成回路208とエラー検出/訂正回路210の両方を置き換えて、単一のパリティ計算回路をパリティ生成とエラー検出/訂正の両方に使用しても良い。
【0055】
図3は、本発明の一実施形態による、NVMにデータ列を記憶及び取得する方法を概略的に示すフローチャート300である。このフローチャートは、記憶装置がプロセッサ202から受信するコマンド及びデータに応答して、MAC212(
図2)によって実行される。このフローチャートは、論理アドレス取得動作302で始まり、MACがプロセッサからデータ列の論理アドレスを受信する。次に、セクタ位置特定動作304で、MACは、論理アドレスをセクタ内のデータバイト数で整数除算して、セクタ番号(「セクタ」)を求める(すべてのセクタに0から始まる番号が付けられていると仮定する)。
【0056】
次に、MACは、オフセット計算動作306に入り、MACは、LAをセクタデータサイズでモジュロ除算することによって、セクタ内のデータ列オフセットを計算し、データ列オフセットを16で除した値をセクタ内のメタデータの開始位置に(データセクタサイズで)加算することにより、メタデータオフセットを計算する。
【0057】
読み取り書き込み確認動作308で、フローチャートは、読み取り操作用に分割され、MACは、データ及びメタデータ読み取り動作310に入るのに対し、書き込み動作の場合、MACは、データ列取得動作314に入る。
【0058】
データ及びメタデータ読みとり動作310において、MACは、セクタからデータ列及び対応するメタデータを読み取る。次に、データ返送動作312で、MACは、メタデータのタイプに応じて、(i)読み取りデータ列とメタデータ、(ii)メタデータに基づいて訂正された読み取りデータ列、又は、(iii)読み取りデータ列とエラー表示(存在する場合)のいずれかを返す。動作312の後、フローチャートは終了する。
【0059】
データ列取得動作314において、MACは、プロセッサからデータ列を受信し、その後、メタデータ取得動作316において、MACは、データ列に対応するメタデータを取得する。いくつかの実施形態では、MACは、メタデータ生成回路(例えば、
図2のパリティ生成回路208)を備えても良く、他の実施形態では、MACはプロセッサからメタデータを取得する。
【0060】
動作316の後、MACは、記憶動作318に入り、選択されたNVMセクタ内の計算されたオフセットでデータ及びメタデータを記憶する。動作318の後、フローチャートは終了する。
【0061】
効率的なアドレスマッピング
【0062】
実施形態では、アドレスマッピングは、セクタ番号を見つけるために論理ページサイズによるバイトアドレスの整数除算を計算することと、データの実際のバイトまでのページ内のオフセットを見つけるために論理ページサイズによるバイトアドレスのモジュロ除算を計算することを含む。
【0063】
上に提示した例示的な実施形態では、論理ページサイズは、224*16=512*7バイトである。論理バイトアドレスLAを示し、次のように定義する。
a = LA/512
b = LA%512
c = a/7 (整数除算)
d = a%7
セクタ = c
オフセット = d*512+b
メタデータオフセット = 224*16+オフセット/16
【0064】
図4は、本発明の一実施形態によるアドレスマッピング回路400を概略的に示すブロック図である。アドレスマッピング回路400の構成は、前掲のアドレスマッピング手順を直接的に実現したものである。入力論理アドレスLAが25ビットを含むと仮定する。7分周回路402は、LA[24:9](最上位16ビット)を7で整数除算し、14ビットのセクタ番号Cを生成し、モジュロ7回路404は、LA[24:9]を7でモジュロ除算し、3ビットDを生成する。
【0065】
第1の連結回路406は、DをLA[8:0](LAの9つの最下位ビット)と連結して、セクタ内のデータ列の12ビットオフセットを生成し、最後に、第2の連結回路408は、224*16をオフセット(オフセット[11:4])の最上位8ビットと連結して、セクタ内の対応するメタデータのオフセットを生成する。
【0066】
なお、実施形態において、連結回路406及び408は、単なるワイヤのアセンブリであり、論理ゲート又は他のハードウェア回路を含まないことに留意されたい。
【0067】
図5は、本発明の一実施形態による、7分周回路500の構成を概略的に示すブロック図である。本発明の一実施形態によれば、7分周回路の入力はXで示される。Xは15ビットの2進数である。
【0068】
7分周回路500の構成は、15ビット入力に対して上述した7分周手順の単純な実施である。7分周回路は、RESを生成する5入力加算器502と、RES1を生成する2入力加算器504と、RES&7==7を検出するANDゲート506と、ANDゲート506の出力に従ってRES又はRES1のいずれかを選択するマルチプレクサ508と、を含む。
【0069】
図6は、本発明の一実施形態による、モジュロ7回路600の構成を概略的に示すブロック図である。モジュロ7回路の入力はXで示され、Xは15ビットの2進数である。モジュロ7回路は、RESを生成する5入力加算器602、RES1を生成する2入力加算器604、RES2を生成する2入力加算器606、RES2&7==7を検出するANDゲート608、及び、ANDゲート608の出力に従ってRES2又は0のいずれかを選択するマルチプレクサ610を備える。モジュロ7出力は、マルチプレクサ610の出力である(すべての加算器が3ビットの数値を加算することに留意されたい)。
【0070】
図7は、本発明の一実施形態による、所与のモジュロ7を効率的に計算する方法を概略的に示すフローチャート700である。フローチャートは、MAC212(
図2)によって実行される。フローチャートは、N取得動作702で始まり、MACはプロセッサから数値Nを受信する。次に、フラグメント操作704において、MACはNを3ビットのフラグメントに分割する。次に、フラグメント合計動作706において、MACはすべてのフラグメントを累積して、より少ないビットで新しいNを取得する。次に、Nサイズ確認動作708において、MACはNの値が8未満であるかどうかをチェックする。8未満である場合、MACは確認動作710に入り、ここで、Nが7に等しい場合、MACはNを訂正し(Nを0に設定し)、フローチャートは終了する。
【0071】
動作708において、Nが8以上である場合(すなわち、Nが3ビットを超える場合)、MACは動作704に戻り、Nのサイズをさらに縮小する。
【0072】
上で説明したように、
図6、7に示される例示的な実施形態におけるm=3の選択は、専ら例にすぎない。他の実施形態では、回路500及び600は、mの任意の適切な整数値に合わせて変更することができる。
【0073】
7分周回路500、モジュロ7回路600、データ記憶及び取得方法300、及びモジュロ7方法700を含むアドレスマッピング回路400の構成は例として説明され、
図3〜
図7に示される。他の実施形態では、他の構成及び方法が使用されてもよい。例えば、いくつかの実施形態では、Xは17ビットを超えるビットが含まれ、その結果、
図1及び
図5及び6の加算器には、さらに多くの入力が含まれる。一実施形態では、単一のメタデータバイトが各16バイトデータ列に追加される(単一ビットエラー検出のみが可能)。240のデータ列と240のメタデータバイトがセクタに保存される(未使用の16バイトのみが残る)。240=15*16であるため、15分周回路とモジュロ15の回路が配置され、それに応じて回路と方法が変更される(
図5と6を参照して説明した7分周回路とモジュロ7回路は、2
n-1に等しい任意の約数(例:7、15、31など)をカバーするように拡張することができる。
【0074】
MAC212、7分周回路500、モジュロ7回路600、アドレスマッピング100、フローチャート300及び700の方法を含むコンピュータシステム200及び記憶装置204の構成は例として説明され、
図1から7に示される。これらの構成及びフローチャートの例は、単に概念的な理解を目的として示されている。他の任意の適切な構成及びフローチャートを代替実施形態で使用することができる。
【0075】
記憶装置204及びそのサブユニットを含むコンピューティングシステム200の異なるサブユニットは、例えば、1以上の特定用途向け集積回路(ASIC)やフィールドプログラマブルゲートアレイ(FPGA)などで、ソフトウェアを使用するか、ハードウェアを使用するか、ハードウェアとソフトウェア要素の組み合わせを使用することにより、適切なハードウェアを使用して実現することができる。
【0076】
プロセッサ202は、本明細書で説明される機能を実行するようにソフトウェアでプログラムされた、1つ又は複数の汎用プロセッサを備えても良い。ソフトウェアは、例えばネットワーク経由で、又はホスト経由で電子形式によりプロセッサにダウンロードしても良い。あるいは、
代替的又は追加的に、磁気メモリ、光学メモリ、又は電子メモリなどの非一時的な有形媒体上に提供及び/又は保存されても良い。
【0077】
上で説明した実施形態は例として引用したものであり、本発明は上で具体的に図示し説明したものに限定されないことが理解されよう。実際のところ、本発明の範囲には、上記のさまざまな特徴の組み合わせ及びサブコンビネーションの両方、並びに、当業者が上記の本明細書を読んだときに思いつくであろう、従来技術には開示されていないその変形及び修正も同様に含まれる。本願に参照により組み込まれた文書は、出願の不可欠な一部としてみなされる。ただし、これらの組み込まれた文書において、本明細書において明示的又は黙示的になされた定義と矛盾するような用語が定義されている限りにおいては、本明細書における定義のみが考慮されるべきである。
【産業上の利用可能性】
【0078】
本発明は、一般に、不揮発性メモリに関し、特に、データ及びメタデータを不揮発性メモリに効率的に記憶するための方法及びシステムに関する。
【符号の説明】
【0079】
100: アドレスマッピング
102: 論理アドレス空間
104: 物理アドレス空間
106: セクタ
108: データ列
110: メタデータ
200: コンピュータシステム
202: プロセッサ
204: 記憶装置
206: 不揮発性メモリ(NVM)
208: パリティ生成回路
210: エラー検出/訂正回路
212: メモリアクセス制御回路(MAC)
300、700: フローチャート
302、304、306、308、310、312、314、316、318、702、704、706、708、710: 動作
400: アドレスマッピング回路
402、500: 7分周回路
404: モジュロ7回路
406: 第1の連結回路
408: 第2の連結回路
502、602:5入力加算器
504、606:2入力加算器
506、608:ANDゲート
508、610:マルチプレクサ
600: モジュロ7回路
【外国語明細書】