説明

トランザクションメモリ

【課題】トランザクション処理におけるソフトウェアオーバヘッド及び複雑さを低減する。
【解決手段】トランザクションリクエスト又は複数のトランザクション演算子を含むトランザクションコマンドを受信することに応答して、メモリアレイのオリジナルコンテンツを他の部分にコピーすることと、トランザクション演算子を受信することに応答して、コピーしたオリジナルコンテンツを修正する。トランザクションコミットを受信することに応答して、トランザクションが成功した場合のみ、オリジナルコンテンツを修正したコンテンツで置換する。

【発明の詳細な説明】
【技術分野】
【0001】
本明細書に開示される主題は、メモリデバイスを用いてトランザクションを実行する技術に関する。
【背景技術】
【0002】
いくつかのアプリケーションでは、トランザクションと呼ばれる単一の動作として一連の指示を処理することが望まれ得る。例えば、トランザクションは、トランザクションは、開始イベントを含み、それに続いてメモリへの書込みを生じさせる複数の命令または演算子(オペレータ)を続いて含み、そして終了イベントを含んでもよい。トランザクションは、部分的に完了されてはならず、完全にかつ成功して実行されるか、あるいはフェイルするかのどちらかであり得る。すなわち、トランザクションの全ての命令又は演算子が成功して実行されるか、又は全くされないかのどちらかである。トランザクションを管理することは、例えば、コンピュータ・アーキテクチャーのオペレーティングシステムの比較的大量のソフトウェアオーバーヘッドを伴う、比較的複雑なタスクであり得る。このようなソフトウェアオーバーヘッド及び複雑さを低減することが望ましい場合がある。
【図面の簡単な説明】
【0003】
非限定的かつ非排他的な実施形態について、以下に図を参照して記載する。特に明示がない限り、類似の番号は様々な図を通して類似の部分を示す。
【0004】
【図1】図1は、実施形態に係る、トランザクションプロトコルに従うイベントの状態を示す図である。
【図2】図2は、実施形態に係る、トランザクションの状態を示す図である。
【図3】図3は、実施形態に係る、メモリサブシステムを示すブロック図である。
【図4】図4は、実施形態に係る、トランザクション処理のフローチャートである。
【図5】図5は、コンピュータシステムの代表的な実施形態を示す概略図である。
【発明を実施するための形態】
【0005】
本明細書全体を通して、「一実施形態」又は「実施形態」を参照することは、こうした実施形態に関連して記載された特定の特色、構造、特性が、請求項に記載された主題の少なくとも一実施形態に含まれることを意味する。それゆえ、本明細書を通して様々な箇所における「一実施形態において」又は「実施形態」という語句の出現は、必ずしも全てが同一の実施形態を参照しているものではない。更に、特定の特色、構造、又は特性は、1つ以上の実施形態において組み合わされてもよい。
【0006】
実施形態において、1つ以上のトランザクションを実行するための技術及び/又はアーキテクチャーは、例えば、トランザクションを実行する処理中に物理メモリを再マッピングすることによって、ソフトウェアの複雑さ及び/又はオペレーティングシステムのメモリオーバーヘッドを低減させる利点を提供し得る。このようなトランザクションは、原子的形態(atomic fashion)で単一の動作として実行される一組の命令又は演算子を含んでもよい。ここで、「原子的形態」で実行されるトランザクションとは、部分的に完了されることはできず、完全に実行されるかあるいはトランザクションが前の状態を損なうことのないままにしてフェイルするかのどちらかである、トランザクションのことを言う。例えば、トランザクションは、メモリに特定の情報を書き込むための、複数の命令又は演算子を含んでもよい。このようなトランザクションは、「コミット」と呼ばれる、開始イベント及び終了イベントを含んでもよい。まさに言及したように、このようなトランザクションは、部分的に完了されることはできず、完全にかつ成功して実行されるか、又はフェイルするかのどちらかであり得る。すなわち、トランザクションの全ての命令又は演算子が成功して実行されるか、又は全く実行されないかのどちらかであり得る。
【0007】
実施形態は、トランザクションを定義するトランザクションプロトコルに、少なくとも部分的に基づいて動作する、メモリサブシステムを含んでもよい。例えば、このようなトランザクションプロトコルは、当業者に公知のデータベースコンピュータ言語を含む、SQLに関連付けられてもよいが、請求項の主題はそのように限定されるものではない。このようなトランザクションは、例えば、開始信号及び一連の書込み演算子、続いてコミット演算子を実行するメモリサブシステムに対する命令を含んでもよい。このようなコミット演算子は、全ての書込み演算子が実行されるか、又は全く実行されないかのどちらかであるように、トランザクションを原子的形態で終了させるためにメモリサブシステムによって実行されてもよい。このようなメモリサブシステムは、複数の独立したトランザクションを実行してもよい。一実装例において、メモリサブシステムは、システムレベルのアドレスを物理メモリのアドレスにマッピングするための再マッピングテーブルを用いて、1つ以上のトランザクションを実行してもよい。例えば、このようなトランザクションソリューションは、後に詳細に記載するように、コミット演算子を受信することに応答して、再マッピングテーブルの一部分を再書込みすることによって実行されてもよい。一実装例において、メモリサブシステムは、トランザクションエンジンに転送されるべきデータベース構造の更なるナレッジを伴い得る、リレーショナルデータベースサブシステムとしての役割を果たしてもよい。このような更なる情報は、例えば、どのキーが1つのテーブルを別のテーブルにリンクさせているかと、そのようなテーブルに対するフィールド定義とを特定してもよい。別の実装例において、メモリサブシステムは、トランザクションをサポートするIOサブシステムとしての役割を果たしてもよい。このようなサブシステムは、セクタ上で動作することができ、かつ、そのセクタが何の情報を記憶するかについてのナレッジを持たない。この場合において、リレーショナルデータベースソフトウェアは、データベーストランザクションを管理してもよく、かつ、トランザクションをセクタレベルのトランザクションに翻訳してもよい。
【0008】
一実装例において、1つ以上のトランザクションを実行する、本明細書に開示される技術及び/又はアーキテクチャーは、メモリ再マッピング機能を含むシステムインフラストラクチャーを利用してもよい。例えば、比較的大きなメモリサブシステムは、メモリの欠陥部分を隔離するために、及び/又は、メモリ空間の比較的大きな部分に渡って同一のウェア(wear)レベルを保証するために、メモリサブシステムのページ又はセクタを再マッピングすることができる、ソフトウェア及び/又はハードウェアを含んでもよい。更に、このようなソフトウェア及び/又はハードウェアは、後に詳細に説明するように、原子トランザクションを実行するために用いられてもよい。
【0009】
1つの特定の実施形態において、原子的形態でトランザクションを実行するメモリサブシステムは、上で言及したように、トランザクションプロトコルを用いて動作してもよい。このようなプロトコルは、個々のトランザクションコマンドを、開始部分、ペイロード部分、及び、終了部分を含むものとして定義してもよい。このようなプロトコルは、トランザクションコマンドを開始したホストにトランザクション状態を提供しながら、複数の同時トランザクションコマンドを許容することができる。例えば、このような状態は、「トランザクションA完了」、「トランザクションA未完了」、「トランザクションB未完了」等を含んでもよい。トランザクションコマンドの開始部分を受信すると、メモリサブシステムは、トランザクションを実行するために用いられる、1つ以上の再マッピングテーブルの一時コピーを生成してもよい。トランザクションは、再マッピングテーブルの小部分にのみ影響を与えることもあるので、メモリサブシステムは、テーブルのうちのトランザクションの実行中に変更される部分を単に複製してもよい。更に、トランザクションの開始部分を受信する結果として、メモリの一部分(例えば、ページ及び/又はセクタ)は、メモリサブシステムにおいて複製されてもよい。一実装例において、このような複製処理では、メモリのオリジナル部分を不変なままにしておき、メモリ部分を複製したものを、変更、再書込み、及び/又は、処理することができる。他の実装例において、このような複製処理では、メモリ部分を複製したものを損なわれないままにしておき、メモリのオリジナル部分を、変更、再書込み、及び/又は、処理することができる。トランザクションコマンドの個々の演算子は、同様に、オリジナルの再マッピングテーブル又は再マッピングテーブルの一時コピーの変更、再書込み、及び/又は他のそのような処理をもたらしてもよい。トランザクションコマンドの終了部分又はコミット部分を受信することにより、メモリサブシステムは、トランザクションコマンドに含まれる全ての演算子が成功して完了していること、及び、再マッピングテーブルの一時コピーが損なわれないままであることを確認することができる。成功して完了している場合、レジスタは、再マッピングテーブルの一時コピーが、マスタ再マッピングテーブルに統合されるべきことを示すようにセットされてよい。例えば、再マッピングテーブルの一時コピーに含まれる情報は、このような統合後のマスタ再マッピングテーブルに含まれてもよい。このようなレジスタをセッティングすることにより、トランザクションを完了することができる。再マッピングテーブルのこのような一時コピーは、マスタ再マッピングテーブルの完全なコピーである必要はない。例えば、一時コピーは、近い将来のトランザクションに関係する変更を含む、マスタ再マッピングテーブルの一部分を単に表してもよい。一実装例において、再マッピングテーブルの一時コピーは、生成される必要はない。代わりに、マスタ再マッピングテーブルは、再マッピングテーブルの一部分が、特定のトランザクションに関連することを示すビットを含むように(僅かに)拡張されてもよい。このような特定部分は、トランザクションが「コミット」されるまで未完了のトランザクション動作の一部分として処理されてもよく、この「コミット」の時点において、再マッピングテーブルのそのような拡張部分を、マスター再マッピングテーブルのパーマネントレコードと振る舞わしてよい。
【0010】
一実装例において、複数のトランザクションコマンドを処理することが可能なメモリサブシステムは、上に記載したように、マスタ再マッピングテーブルの一部分の複数の一時コピーを作成及び/又は処理することが可能であってもよい。同時にアクティブな複数のトランザクションが、メモリページの共通なサブセットに影響を及ぼすことを可能にさせられる場合において、メモリサブシステムは、トランザクションが処理される順番トラックを保持してもよい。勿論、このようなメモリサブシステムについての詳細は単に例示であって、請求項の主題はそのように限定されるものではない。
【0011】
特定の実装例において、トランザクションを実行する方法は、上で議論したように、トランザクションリクエスト、複数のトランザクション演算子、及び/又は、トランザクションコミットを受信することを含んでもよい。例えば、回路及び/又はソフトウェアを備えるメモリコントローラは、このようなトランザクションリクエストをホストから受信してもよい。一実装例において、このようなメモリコントローラは、ホスト又は他の構成要素(エンティティ)からトランザクションリクエストを受信することに応答して、(このメモリコントローラを含んでもよく、又は含まなくてもよい)メモリデバイス内のメモリのコンテンツの一部分のコピーをつくり出してもよい。このようなコピーは、トランザクションがフェイルする場合に備えて、メモリに記憶されるオリジナルのコンテンツの保存を可能にすることができる。例えば、トランザクションコマンドは、メモリの特定部分に対して書込みを行う複数の演算子を含んでもよいが、このメモリは、特定の記憶情報を既に含んでいることがある。それゆえ、トランザクションコマンドの書込み演算子は、メモリの特定部分の記憶情報を「オーバーライト」してもよい(例えば、用いるメモリの形式に少なくとも部分的に応じた再書込み、又は、消去−書込み演算子シーケンス)。このような書込み演算子の一部分でも実行された後にトランザクションがフェイルする場合、オリジナルの記憶情報が失われることがある。しかしながら、オリジナルの記憶情報のコピーを持つことにより、このようなオリジナルの記憶情報を回復する方法を提供することができる。従って、メモリのうちトランザクションコマンドによって影響され得る1つ以上の部分は、トランザクションコマンドの演算子を実行することに先立ってコピーされてもよい。
【0012】
上で言及したように、コントローラは、トランザクションコマンドの1つ以上のトランザクション演算子を受信することに応答して、メモリのコピーの情報を修正してもよい。特に、オリジナルのメモリを損なわれないようにし、トランザクション演算子によって修正されないようにすることができる。一実装例において、メモリサブシステムは、メモリのセクタ上で動作してもよい。そのような場合、上に記載したようにオリジナルのメモリをコピーするよりも新しい空のセクタを割り当てることが可能な場合がある。セクタは、更新されることで完全に再書込みされてもよい。従って、メモリサブシステムは、変更されるべきセクタの完全なコンテンツを受信していてよく、それにより、メモリのオリジナルのコンテンツをコピーする必要性を除去する。
【0013】
トランザクションコマンドは、コンピュータデバイス又は他のこのようなホスティング構成要素(エンティティ)のオペレーティングシステム又はプロセッサによって開始されてもよい。例えば、トランザクションコマンドの書込み演算子により、メモリコピーのコンテンツの再書込みがもたらされることがある。一実装例において、コントローラは、1つ以上のコピーが配置される、メモリ内の物理的ロケーションをポイントする、一時再マッピングテーブルを保持してもよい。このような一時再マッピングテーブルは、1つ以上のトランザクション演算子をホストから受信することに応答して修正されてもよい。例えば、このようなトランザクション演算子が、メモリコピーの再配置をもたらすことがある。それゆえ、一時再マッピングテーブルは、このような再配置をトラックするように修正されてもよい。一実装例において、メモリコントローラは、1つ以上の更なるトランザクションコマンドに対応する、1つ以上の更なる一時再マッピングテーブルを同時に保持してもよい。例えば、複数の一時再マッピングテーブルを同時に保持することにより、メモリコントローラが複数のトランザクションを実行することを可能にすることができる。
【0014】
実施形態では、1つ以上の一時再マッピングテーブルを保持することに加えて、メモリコントローラは、メモリ内の物理的ロケーションをポイントするマスタ再マッピングテーブルを保持してもよい。このようなマスタ再マッピングテーブルは、1つ以上の一時再マッピングテーブルのコンテンツに少なくとも部分的に基づいて、修正されてもよい。マスタ再マッピングテーブルのこのような修正は、トランザクションコマンドのコミット部分を受信することの結果として実行されてもよい。しかしながら、マスタ再マッピングテーブルの修正は、トランザクションが成功したか又はフェイルしたかどうかに、少なくとも部分的に基づいていてもよい。例えば、トランザクションが成功した場合、上で議論したように、メモリの修正されたコピーのコンテンツは、(この修正されたコピーの源である)メモリのオリジナルのコンテンツをオーバーライトするために用いられてもよい。また、マスタ再マッピングテーブルは、例えば、修正されたコピーのコンテンツが元のメモリロケーションに今記憶されるという事実を反映するように、修正されてもよい。他方で、トランザクションが成功していない場合、メモリの修正されたコピーのコンテンツは、そのようなコンテンツが用いられずオーバーライト又は消去されてもよいといった意味で、破棄されてもよい。このことは、トランザクションがフェイルする場合、トランザクションを実行する結果として修正されたデータ又は情報は保存されるべきではないからである。その代わりに、データ又は情報は、そのオリジナルのコンテンツに「戻される」べきである。上で説明したように、メモリのコピーされた部分が修正され、トランザクション中、オリジナルのメモリ部分は変更されない(例えば、保存される)ので、こうしたコピーにより、オリジナルのコンテンツへこのような返却が可能になる。また、例えば、マスタ再マッピングテーブルは、修正されたコピーのコンテンツは用いられるべきではなく、元のメモリロケーションに現在記憶されているコンテンツが代わりに用いられるべきであるという事実を反映するように、修正することができる。
【0015】
トランザクション処理を伴う必要がない特定の実装例において、このようなマスタ再マッピングテーブルは、更に、メモリウェアレベリング動作及び/又は不良メモリ置換動作のために用いられてもよい。例えば、マスタ再マッピングテーブルは、不良ブロック及び/又はメモリアレイの過度に使用されたブロックに起因して再配置されたメモリのブロックに関する情報を保持してもよい。それゆえ、マスタ再マッピングテーブルは、例えば、ウェアレベリング又は不良ブロック管理及び/又はトランザクション等の複数の用途に関係してよい。
【0016】
図1は、実施形態に係る、或るトランザクションプロトコルに従うイベントの状態を示す図である。例えば、トランザクションを実行するメモリコントローラは、このようなトランザクションプロトコルに、少なくとも部分的に基づいて動作してもよい。このようなトランザクションプロトコルにおいて、ホストは、メモリサブシステム150にトランザクションコマンド100を提供することによって、トランザクションを開始してもよい。このようなトランザクションコマンドは、開始部分110、ペイロード部分120、巻き戻し部分135、及び、終了部分130を含んでもよい。ペイロード部分120は、例えば、演算子「0」で開始して演算子「N」で終了するN個の複数の演算子を含んでもよい。上で言及したように、終了部分130は、トランザクションを終えるトランザクションコミットを含んでもよい。巻き戻し部分135は、いくつかの状況において終了部分130の代わりに生じてもよい。例えば、巻き戻し部分135が終了部分130の代わりに受信される場合、コマンド100の全ての動作が破棄されてもよい。一実装例において、メモリサブシステム150は、1つ以上のトランザクションを実行するメモリデバイス155を含んでもよい。このようなメモリサブシステムの一実施例は、図3に対する記載において更に詳細に説明される。このようなメモリサブシステムは、トランザクションが成功して完了したか又はフェイルしたかに関して、ホストに通知を与えてもよい。例えば、トランザクションコマンド100の全ての演算子を成功して完了することに応答して、メモリサブシステム150は、ホストに「完了」通知140を与えてもよい。勿論、トランザクションプロトコルのこのような詳細は単に例示であって、請求項の主題はそのように限定されるものではない。
【0017】
図2は、実施形態に係る、トランザクションの状態を示す図である。時間は、図2において垂直下方に進行する。このようなトランザクションは、上で言及したように、ホスト又はシステム200によって開始されてもよく、メモリサブシステム210によって実行されてもよい。例えば、このようなホスト又はシステム200は、アプリケーションを実行するコンピュータプラットフォームを備えてもよく、メモリサブシステム210は、1つ以上のメモリデバイスを備えてもよい。1つ以上のこのようなトランザクションは、同時に実行されてもよい。単一のトランザクションの一実施例では、トランザクション0は、トランザクション0に対するトランザクションコマンドの開始部分をシステム200が提供することよって開始されてもよい。それに応じて、メモリサブシステム210は、演算子A及び演算子B等の、後に続くトランザクション演算子を受信し実行する準備をしてよい。上で説明したように、このような準備は、メモリのうち演算子A、B等によって影響を与えられ得る部分のコピーを生成することを含んでもよい。それゆえ、このような演算子は、トランザクション0がフェイルする場合に備えて保存されるオリジナルのメモリコンテンツを修正する必要はない。トランザクション0に対するトランザクションコマンドの終了部分をシステム200から受信すると、メモリサブシステム210は、トランザクション0が成功して完了したか又はフェイルしたかを判定することができる。どちらの場合においても、メモリサブシステム210は、このような成否をシステム200に知らせることができる。
【0018】
複数のトランザクションを同時に実行する一実施例では、トランザクション1及び2は、両方のトランザクションに対するトランザクションコマンドの開始部分をシステム200が提供することによって開始されてもよい。それに応じて、メモリサブシステム210は、両方のトランザクションの演算子A等の、後に続くトランザクション演算子を受信し実行する準備をしてよい。上で説明したように、このような準備は、メモリのうち演算子によって影響を受け得る部分のコピーを生成することを含んでよい。それゆえ、このような演算子は、メモリのオリジナル部分を修正する必要はなく、情報は、トランザクション1又は2のどちらかがフェイルする場合に失われないですむ。特定の順番が図2に示されるが、複数のトランザクションの演算子は、任意の順番で実行されてもよい。例えば、トランザクション1に対するトランザクションコマンドの演算子Aは、トランザクション2に対するトランザクションコマンドの演算子Aの前に実行されてもよい。トランザクション1に対するトランザクションコマンドの終了部分をシステム200から受信すると、メモリサブシステム210は、トランザクション1が成功して完了したか又はフェイルしたかについて判定することができる。どちらの場合においても、メモリサブシステム210は、このような成否をシステム200に知らせることができる。同様に、トランザクション2の終了部分をシステム200から受信すると、メモリサブシステム210は、トランザクション2が成功して完了したか又はフェイルしたかについて判定することができる。どちらの場合でも、メモリサブシステム210は、このような成否をシステム200に知らせることができる。
【0019】
一実装例において、メモリサブシステム210は、許容されるトランザクション演算子の最大数及び/又は1つ以上のトランザクションに使用されるメモリ部分の最大サイズを判定するためのコンテンツを含むレジスタ(図示せず)を備えてもよい。例えば、このようなレジスタは、トランザクションの演算子の数が500個に限定されることを示すコンテンツを含んでもよい。他の実施例として、このようなレジスタは、特定のトランザクションに用いられるべきメモリの部分の最大サイズが100個のページ又はセクタに限定されることを示すコンテンツを含んでもよい。勿論、トランザクションを実行することに必要な技術のこのような詳細は単に例示であって、請求項の主題はそのように限定されるものではない。
【0020】
図3は、実施形態に係る、メモリサブシステム300及びホスト360を示すブロック図である。例えば、メモリサブシステム300は、メモリアレイ及び/又はコントローラを含むメモリデバイスを備えてもよく、ホスト360は、プロセッサを備えてもよい。図3の矢印は、方向を示してよいが、請求項の主題はいずれのこのような方向にも限定されるものではない。上で議論したように、トランザクションコマンドは、トランザクションリクエスト、1つ以上のトランザクション演算子、及び/又は、トランザクションコミットを含んでもよい。トランザクションを実行するメモリコントローラは、トランザクションエンジン330を備えてもよい。このようなメモリコントローラは、例えば、回線又はバス305を介してホスト360からトランザクションコマンドを受信してもよい。一実装例において、このようなメモリコントローラは、ホスト360からトランザクションコマンドを受信することに応答して、メモリサブシステム300内のメモリ350のコンテンツの一部分の1つ以上のコピーをつくり出してもよい。このようなメモリコピーは、メモリ350の予備領域355に配置されてもよいが、請求項の主題はそのように限定されるものではない。上で言及したように、メモリコントローラは、トランザクションコマンドの1つ以上のトランザクション演算子を受信することに応答して、メモリのコピーの情報を修正してもよい。例えば、トランザクションコマンドの書込み演算子は、メモリコピーのコンテンツを再書込みすることをもたらしてもよい。一実装例において、メモリコントローラは、1つ以上のコピーが配置される、予備領域355等の、メモリ350内の物理的ロケーションをポイントする、1つ以上の一時再マッピングテーブル340を保持してもよい。このような一時再マッピングテーブル340は、トランザクションコマンド中の1つ以上のトランザクション演算子を受信することに応答して修正されてもよい。例えば、このようなトランザクション演算子は、メモリコピーの再配置をもたらしてもよい。それゆえ、一時再マッピングテーブル340は、このような再配置をトラックするように修正されてもよい。1つ以上の一時再マッピングテーブルを保持することに加えて、メモリコントローラは、メモリ350内の物理的ロケーションをポイントするマスタ再マッピングテーブル320を保持してもよい。このようなマスタ再マッピングテーブルは、1つ以上の一時再マッピングテーブル340のコンテンツに、少なくとも部分的に基づくトランザクションエンジン330によって修正されてもよい。マスタ再マッピングテーブル320のこのような修正は、トランザクションコマンドのコミット部分を受信する結果として実行されてもよい。しかしながら、マスタ再マッピングテーブル320の修正は、上で説明したように、トランザクションが成功したか又はフェイルしたかについて、少なくとも部分的に基づいていてもよい。
【0021】
図4は、実施形態に係る、トランザクション処理400のフローチャートである。ブロック410では、上で議論したように、メモリコントローラを備えるメモリサブシステムは、トランザクションリクエスト、1つ以上のトランザクション演算子、及び/又は、トランザクションコミットを含むトランザクションコマンドを受信してもよい。ブロック420において、このようなメモリコントローラは、メモリデバイス内のメモリのコンテンツの一部のコピーをつくり出してもよい。このようなコピーは、上で議論したように、トランザクションがフェイルする場合に備えて、メモリ内に記憶されるオリジナルのコンテンツの保存を可能にする。ブロック430において、メモリコントローラは、トランザクションコマンドの1つ以上のトランザクション演算子を受信することに応答して、メモリのコピーの情報を修正してもよい。例えば、トランザクションコマンドの書込み演算子は、メモリコピーのコンテンツを再書込みすることをもたらしてもよい。一実装例において、メモリコントローラは、1つ以上のコピーが配置される、メモリ内の物理的ロケーションをポイントする一時再マッピングテーブルを保持してもよいが、こうした物理的ロケーションは、例えば、図3に示す予備メモリ355等のメモリの予備領域内のものでもよい。このような一時再マッピングテーブルは、トランザクションコマンド内の1つ以上のトランザクション演算子を受信することに応答して修正されてもよい。ひし形で示す440において、トランザクションコマンドの終了を意味する、トランザクションコマンドのコミットが受信されるかどうかについて判定が成されてもよい。コミットが受信される場合、処理400は、ひし形で示す450に進行してもよく、ここで、トランザクションが成功して完了したかどうかについて判定が成されてよい。もし成功して完了されていない場合は、ブロック455に示すように、メモリの修正されたコピーのコンテンツを用いられずに、オーバーライト及び/又は消去されてよい。処理400は、その後、ブロック460に進行してもよく、ここで、メモリサブシステムが異常をホストに知らせることができる。しかしながら、トランザクションが成功して完了した場合、処理400は、ブロック470に進行してもよく、ここで、メモリの修正されたコピーのコンテンツは、上で議論したように、メモリのオリジナルのコンテンツをオーバーライトするために用いられてよい。更に、マスタ再マッピングテーブルは、例えば、修正されたコピーのコンテンツが、元のメモリロケーション内に今記憶されるという事実を反映するように、修正されてもよい。ブロック480において、メモリサブシステムは、トランザクションが成功して完了したことをホストに知らせてもよい。しかしながら、このようなコミットがひし形で示す440において受信されない場合、処理400は、修正を破棄する巻き戻しコマンドが受信されたかどうかについて判定が成されてよい、ひし形で示す490に進行してもよい。このような巻き戻しコマンドが受信されない場合、処理400は、後に続くトランザクション演算子を受信することに応答してメモリコピーが更に修正される、ブロック430にリターンされてよい。しかしながら、巻き戻しコマンドが受信される場合、処理400は、ブロック493に進行してもよく、ここで、メモリの修正されたコピーのコンテンツは、無視され、用いられず、オーバーライト及び/又は消去されてよい。処理400は、その後、メモリサブシステムが、巻き戻し処理が成功又は完全であることをホストに知らせる、ブロック496に進行してよい。勿論、処理400についてのこのような詳細は単に例示であって、請求項の主題はそのように限定されるものではない。
【0022】
図5は、メモリデバイス510を含むコンピュータシステム500の実施形態例を概略的に示す図である。このようなコンピュータデバイスは、例えば、アプリケーション及び/又は他のコードを実行するために、1つ以上のプロセッサを備えてよい。例えば、メモリデバイス510は、図1に示したPCM100の一部分を含むメモリを備えてよい。コンピュータデバイス504は、メモリデバイス510を管理するように構成されてよい任意のデバイス、装置、又は機械の典型としてよい。メモリデバイス510は、メモリコントローラ515及びメモリ522を含んでよい。例示であって制限されるものではないが、コンピュータデバイス504は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、ワークステーション、サーバデバイス等の1つ以上のコンピュータデバイス及び/又はプラットフォームと、例えば、携帯情報端末、モバイル通信デバイス等の1つ以上のパーソナルコンピュータデバイス又は通信デバイス及び/又は装置と、例えば、データベース又はデータ記憶サービスプロバイダ/システム等のコンピュータシステム及び/又は関連するサービスプロバイダ機能と、及び/又はこれらの任意の組み合わせとを含んでよい。
【0023】
システム500に示した様々なデバイスの全部又は一部、及び本明細書に更に記載されたような処理及び方法は、ハードウェア、ファームウェア、ソフトウェア、又はこれらの任意の組み合わせを用いるかあるいは含むように実装されてもよいことが理解される。ゆえに、例示であって限定されるものではないが、コンピュータデバイス504は、バス540及びホスト又はメモリマイクロコントローラ515を通してメモリ522に動作的に連結される、少なくとも1つの処理ユニット520を含んでよい。処理ユニット520は、データコンピューティング手順又はデータコンピューティング処理の少なくとも一部を実行するように構成可能な1つ以上の回路の典型である。例示であって限定されるものではないが、処理ユニット520は、1つ以上のプロセッサ、コントローラ、マイクロプロセッサ、マイクロコントローラ、特定用途向け集積回路、デジタル信号プロセッサ、プログラマブル論理デバイス、フィールド・プログラマブル・ゲートアレイ等を含んでよく、又はこれらの任意の組み合わせを含んでよい。処理ユニット520は、メモリコントローラ515と通信するように構成されたオペレーティングシステムを含んでよい。このようなオペレーティングシステムは、例えば、バス540上でメモリコントローラ515に送信されるトランザクションコマンドを生成してよい。このようなトランザクションコマンドは、例えば、読み出しコマンド及び/又は書込みコマンドを含む演算子を含んでよい。一実装例において、バス540は、少しの例を挙げると、イーサネット(登録商標)、ワイヤレスローカルエリアネットワーク(LAN)、セルラーネットワーク、シリアルATA(SATA)、シリアルアタッチドSCSI(SAS)、又は、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)カードの一部を含んでもよい。トランザクションコマンドを受信することに応答して、例えば、メモリコントローラ515は、このようなトランザクションを実行するために、上記の処理400を実行してよい。一実装例において、システム500は、例えば、少なくとも1つのメモリアレイを含むメモリデバイス510を備えてよい。このようなメモリデバイスは、更に、トランザクションリクエスト、1つ以上のトランザクション演算子、及び/又は、トランザクションコミットを含むトランザクションコマンドを受信するメモリコントローラ515を備えてよい。メモリコントローラ515は、更に、トランザクションコマンドを受信することに応答して、少なくとも1つのメモリアレイのコンテンツの一部分のコピーをつくり出してよい。メモリコントローラ515は、その後、トランザクションの1つ以上のトランザクション演算子を受信することに応答して、コピーの情報を修正してよい。一実装例において、処理ユニット520は、1つ以上のアプリケーションのホストをつとめるとともにこのようなトランザクションを開始してもよいが、請求項の主題はそのように限定されるものではない。
【0024】
メモリ522は、任意のデータストレージ機構の典型である。メモリ522は、例えば、一次メモリ524及び/又は二次メモリ526を含んでよい。一次メモリ524は、例えば、ランダムアクセスメモリ、リードオンリメモリ等を含んでよい。この例示は処理ユニット520から離れているものとして説明したが、一次メモリ524の全部又は一部は処理ユニット520内に備えられていてよく、あるいは処理ユニット520と同じ場所に設置されているか、又は処理ユニット520に連結されてよいと理解されるべきである。
【0025】
二次メモリ526は、例えば、一次メモリと同一形式のメモリもしくは類似形式のメモリ、及び/又は、例えば、ディスクドライブ、光学ディスクドライブ、テープドライブ、固体メモリドライブ等の1つ以上のデータ記憶装置もしくはシステムを含んでよい。所定の実装例において、二次メモリ526は動作可能的にコンピュータ可読媒体528から受信可能であってよく、もしくは、コンピュータ可読媒体528に連結するように構成可能であってよい。コンピュータ可読媒体528は、例えば、システム500における1つ以上のデバイスに対するデータ、コード、及び/又は命令を送ることができ、かつ/又は、こうしたデータ、コード、及び/又は命令をアクセス可能にすることができる任意の媒体を含んでよい。
【0026】
コンピュータデバイス504は、例えば、入力/出力532を含んでよい。入力/出力532は、人及び/又は機械の入力を受入れるように構成可能な、又は導入するように構成可能な1つ以上のデバイス又は機能、及び/又は、人及び/又は機械の出力を送達させるように構成可能な、又は提供するように構成可能な1つ以上のデバイス又は機能の典型である。例示であって限定されるものではないが、入力/出力デバイス532は、動作可能に構成されたディスプレイ、スピーカー、キーボード、マウス、トラックボール、タッチスクリーン、データポート等を含んでよい。
【0027】
本明細書に使用された用語「及び」、「及び/又は」、及び「又は」は、少なくとも一部において、これらの用語が使用される文脈に応じた様々な意味を含んでよい。一般に、「A、B、又はC」等のリストに関連するように使用された場合の「及び/又は」並びに「又は」とは、ここでは包括的な意味として使用している「A、B、及びC」、並びに、ここでは排他的な意味として使用している「A、B、又はC」を意味することが意図される。本明細書全体を通した「一実施形態」又は「実施形態」といった言及は、その実施形態に関連して記載した特定の特色、構造、特性が、請求項に記載された主題の少なくとも一実施形態に含まれることを意味する。それゆえ、本明細書を通して様々な箇所における「一実施形態において」又は「実施形態」という語句の出現は、必ずしも全てが同一の実施形態を言及しているものではない。更に、これら特定の特色、構造、又は特徴は、1つ以上の実施形態において組み合わされてよい。
【0028】
現時点で考えられる実施形態例について説明して述べてきたが、請求項の主題から逸脱することなく、他の様々な変更を行い、均等物との置換を行うことができることが当業者に理解されるであろう。加えて、本明細書に開示された主要概念から逸脱することなく、特定の状況を請求項の主題の教示に適用するように多くの変更がなされてよい。それゆえ、請求項の主題が開示された特定の実施形態に限定されないことが意図され、そのような請求項の主題は、添付の特許請求の範囲に含まれる全ての実施形態及びそれらの均等物を包含することもあることが意図される。

【特許請求の範囲】
【請求項1】
トランザクションリクエスト又は複数のトランザクション演算子を含むトランザクションコマンドを受信することと、
前記トランザクションリクエストを受信することに応答して、メモリアレイの第1の部分内のオリジナルのコンテンツを、前記メモリアレイの第2の部分にコピーすることと、
前記トランザクションコマンドの前記複数のトランザクション演算子を受信することに応答して、前記第2の部分の前記オリジナルのコンテンツを修正することと、
を備えることを特徴とする方法。
【請求項2】
前記トランザクションコマンドは、前記トランザクションコマンドを終了させるトランザクションコミットを更に備え、前記トランザクションコミットを受信することに応答して、前記トランザクションコマンドに関連するトランザクションが成功したか又はフェイルしたかについて判定し、
前記トランザクションが成功した場合、
前記第1の部分の前記オリジナルのコンテンツを、前記第2の部分内の前記修正されたコンテンツで置換し、
前記トランザクションがフェイルした場合、
次のトランザクション中に前記第2の部分内の前記修正されたコンテンツを書き直す、
ことを特徴とする請求項1に記載の方法。
【請求項3】
前記第2の部分が配置される前記メモリ内の物理的ロケーションをポイントする一時再マッピングテーブルを保持することを更に備えることを特徴とする請求項1に記載の方法。
【請求項4】
前記1つ以上のトランザクション演算子を受信することに応答して、前記一時再マッピングテーブルを修正することを更に備えることを特徴とする請求項3に記載の方法。
【請求項5】
1つ以上の更なるトランザクションに対応する、1つ以上の更なる一時再マッピングテーブルを同時に保持することを更に備えることを特徴とする請求項3記載の方法。
【請求項6】
レジスタのコンテンツに、少なくとも部分的に基づいて、許容するトランザクション演算子の最大数、及び/又は、前記メモリの前記部分の最大サイズを判定することを更に備えることを特徴とする請求項1に記載の方法。
【請求項7】
前記メモリ内の物理的ロケーションをポイントするマスタ再マッピングテーブルを保持することと、
前記トランザクションコマンド内のトランザクションコミットを受信することに応答して、かつ、メモリウェアレベリング動作又は不良メモリ置換動作に応答して、前記マスタ再マッピングテーブルを修正することと、
を更に備えることを特徴とする請求項3に記載の方法。
【請求項8】
少なくとも1つのメモリアレイと、
トランザクションリクエスト又は複数のトランザクション演算子を含むトランザクションコマンドを受信するとともに、
前記トランザクションリクエストを受信することに応答して、前記少なくとも1つのメモリアレイの第1の部分内のオリジナルのコンテンツを、前記メモリアレイの第2の部分にコピーし、かつ、
前記トランザクションコマンドの前記複数のトランザクション演算子を受信することに応答して、前記第2の部分の前記オリジナルのコンテンツを修正する、
コントローラと、
を備えることを特徴とするメモリデバイス。
【請求項9】
前記第2の部分が配置される、前記少なくとも1つのメモリアレイ内の物理的ロケーションをポイントする一時再マッピングテーブルを更に備えることを特徴とする請求項8に記載のメモリデバイス。
【請求項10】
前記コントローラは、前記1つ以上のトランザクション演算子を受信することに応答して、前記一時再マッピングテーブルを修正するように適応されていることを特徴とする請求項9に記載のメモリデバイス。
【請求項11】
1つ以上の更なるトランザクションに対応する、1つ以上の更なる一時再マッピングテーブルを更に備えることを特徴とする請求項9に記載のメモリデバイス。
【請求項12】
許容トランザクション演算子の最大数、及び/又は、前記少なくとも1つのメモリアレイの前記部分の最大サイズを示すコンテンツを記憶するレジスタを更に備えることを特徴とする請求項8に記載のメモリデバイス。
【請求項13】
前記1つ以上のトランザクション演算子に少なくとも部分的に基づいて、また、メモリウェアレベリング動作又は不良メモリ置換動作に少なくとも部分的に基づいて、前記少なくとも1つのメモリアレイ内の物理的ロケーションをポイントするマスタ再マッピングテーブルを更に備えることを特徴とする請求項9に記載のメモリデバイス。
【請求項14】
前記第2の部分を保持する前記メモリアレイの予備領域を更に備えることを特徴とする請求項8に記載のメモリデバイス。
【請求項15】
前記コントローラは、トランザクションプロトコルに少なくとも部分的に基づいて動作するトランザクションエンジンを備えることを特徴とする請求項8に記載のメモリデバイス。
【請求項16】
少なくとも1つのメモリアレイを備えるメモリデバイスであって、
トランザクションリクエスト又は複数のトランザクション演算子を含むトランザクションコマンドを受信するとともに、
前記トランザクションリクエストを受信することに応答して、メモリアレイの第1の部分内のオリジナルのコンテンツを、前記メモリアレイの第2の部分にコピーし、かつ、
前記トランザクションコマンドの前記複数のトランザクション演算子を受信することに応答して、前記第2の部分の前記オリジナルのコンテンツを修正する、
メモリコントローラを更に備えるメモリデバイスと、
1つ以上のアプリケーションを提供するとともに、前記トランザクションコマンドを開始するプロセッサと、
を備えることを特徴とするシステム。
【請求項17】
前記第2の部分が配置される、前記少なくとも1つのメモリアレイ内の物理的ロケーションをポイントする一時再マッピングテーブルを更に備えることを特徴とする請求項16に記載のシステム。
【請求項18】
前記メモリコントローラは、前記1つ以上のトランザクション演算子を受信することに応答して、前記一時再マッピングテーブルを修正するように適応されていることを特徴とする請求項17に記載のシステム。
【請求項19】
1つ以上の更なるトランザクションに対応する、1つ以上の更なる一時再マッピングテーブルを更に備えることを特徴とする請求項17に記載のシステム。
【請求項20】
前記コントローラは、トランザクションプロトコルに少なくとも部分的に基づいて動作する、トランザクションエンジンを備えることを特徴とする請求項16に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2012−155705(P2012−155705A)
【公開日】平成24年8月16日(2012.8.16)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−278132(P2011−278132)
【出願日】平成23年12月20日(2011.12.20)
【出願人】(595168543)マイクロン テクノロジー, インク. (444)
【Fターム(参考)】