(57)【特許請求の範囲】
【請求項１】
トランザクションリクエスト又は複数のトランザクション演算子を含むトランザクションコマンドを受信することと、
前記トランザクションリクエストを受信することに応答して、メモリアレイの第１の部分内のオリジナルのコンテンツを、前記メモリアレイの第２の部分にコピーすることと、
前記トランザクションコマンドの前記複数のトランザクション演算子を受信することに応答して、前記第２の部分の前記オリジナルのコンテンツを修正することと、
前記メモリアレイ内の物理的ロケーションをポイントするマスタ再マッピングテーブルを設けることと、
前記トランザクションコマンドによって影響を受ける前記マスタ再マッピングテーブルの部分に対応した一時再マッピングテーブルを設けることと、
前記メモリアレイの前記第２の部分になされた修正を反映するように、前記一時再マッピングテーブルを修正することと、
前記一時再マッピングテーブルの修正された内容に基づいて、前記マスタ再マッピングテーブルを更新することと、
を備えることを特徴とする方法。
【請求項２】
前記トランザクションコマンドは、前記トランザクションコマンドを終了させるトランザクションコミットを更に備え、前記トランザクションコミットを受信することに応答して、前記トランザクションコマンドに関連するトランザクションが成功したか又はフェイルしたかについて判定し、
前記トランザクションが成功した場合、
前記第１の部分の前記オリジナルのコンテンツを、前記第２の部分内の前記修正されたコンテンツで置換し、
前記トランザクションがフェイルした場合、
次のトランザクション中に前記第２の部分内の前記修正されたコンテンツを書き直す、
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記一時再マッピングテーブルは、前記第２の部分が配置される前記メモリ内の物理的ロケーションをポイントすることを更に備えることを特徴とする請求項１に記載の方法。
【請求項４】
前記１つ以上のトランザクション演算子を受信することに応答して、前記一時再マッピングテーブルを修正することを更に備えることを特徴とする請求項３に記載の方法。
【請求項５】
１つ以上の更なるトランザクションに対応する、１つ以上の更なる一時再マッピングテーブルを同時に保持することを更に備えることを特徴とする請求項３記載の方法。
【請求項６】
レジスタのコンテンツに、少なくとも部分的に基づいて、許容するトランザクション演算子の最大数、及び／又は、前記メモリの前記第１の部分あるいは前記第２の部分の最大サイズを判定することを更に備えることを特徴とする請求項１に記載の方法。
【請求項７】
前記トランザクションコマンド内のトランザクションコミットを受信することに応答して、かつ、メモリウェアレベリング動作又は不良メモリ置換動作に応答して、前記マスタ再マッピングテーブルを修正することと、
を更に備えることを特徴とする請求項３に記載の方法。
【請求項８】
少なくとも１つのメモリアレイと、
トランザクションリクエスト又は複数のトランザクション演算子を含むトランザクションコマンドを受信するとともに、
前記トランザクションリクエストを受信することに応答して、前記少なくとも１つのメモリアレイの第１の部分内のオリジナルのコンテンツを、前記少なくとも１つのメモリアレイの第２の部分にコピーし、
前記トランザクションコマンドの前記複数のトランザクション演算子を受信することに応答して、前記第２の部分の前記オリジナルのコンテンツを修正し、
前記メモリアレイ内の物理的ロケーションをポイントするマスタ再マッピングテーブルを設け、
前記トランザクションコマンドによって影響を受ける前記マスタ再マッピングテーブルの部分に対応した一時再マッピングテーブルを設け、
前記メモリアレイの前記第２の部分になされた修正を反映するように、前記一時再マッピングテーブルを修正し、かつ
前記一時再マッピングテーブルの修正された内容に基づいて、前記マスタ再マッピングテーブルを更新する、
コントローラと、
を備えることを特徴とするメモリデバイス。
【請求項９】
前記一時再マッピングテーブルは、前記第２の部分が配置される、前記少なくとも１つのメモリアレイ内の物理的ロケーションをポイントすることを特徴とする請求項８に記載のメモリデバイス。
【請求項１０】
前記コントローラは、前記１つ以上のトランザクション演算子を受信することに応答して、前記一時再マッピングテーブルを修正するように適応されていることを特徴とする請求項９に記載のメモリデバイス。
【請求項１１】
１つ以上の更なるトランザクションに対応する、１つ以上の更なる一時再マッピングテーブルを更に備えることを特徴とする請求項９に記載のメモリデバイス。
【請求項１２】
許容トランザクション演算子の最大数、及び／又は、前記少なくとも１つのメモリアレイの前記第１の部分あるいは前記第２の部分の最大サイズを示すコンテンツを記憶するレジスタを更に備えることを特徴とする請求項８に記載のメモリデバイス。
【請求項１３】
前記マスタ再マッピングテーブルは、前記１つ以上のトランザクション演算子に少なくとも部分的に基づいて、また、メモリウェアレベリング動作又は不良メモリ置換動作に少なくとも部分的に基づいて、前記少なくとも１つのメモリアレイ内の物理的ロケーションをポイントすることを特徴とする請求項９に記載のメモリデバイス。
【請求項１４】
前記第２の部分を保持する前記メモリアレイの予備領域を更に備えることを特徴とする請求項８に記載のメモリデバイス。
【請求項１５】
前記コントローラは、トランザクションプロトコルに少なくとも部分的に基づいて動作するトランザクションエンジンを備えることを特徴とする請求項８に記載のメモリデバイス。
【請求項１６】
少なくとも１つのメモリアレイを備えるメモリデバイスであって、
トランザクションリクエスト又は複数のトランザクション演算子を含むトランザクションコマンドを受信するとともに、
前記トランザクションリクエストを受信することに応答して、前記少なくとも１つのメモリアレイの第１の部分内のオリジナルのコンテンツを、前記少なくとも１つのメモリアレイの第２の部分にコピーし、
前記トランザクションコマンドの前記複数のトランザクション演算子を受信することに応答して、前記第２の部分の前記オリジナルのコンテンツを修正し、
前記メモリアレイ内の物理的ロケーションをポイントするマスタ再マッピングテーブルを設け、
前記トランザクションコマンドによって影響を受ける前記マスタ再マッピングテーブルの部分に対応した一時再マッピングテーブルを設け、
前記メモリアレイの前記第２の部分になされた修正を反映するように、前記一時再マッピングテーブルを修正し、かつ
前記一時再マッピングテーブルの修正された内容に基づいて、前記マスタ再マッピングテーブルを更新する、
メモリコントローラを更に備えるメモリデバイスと、
１つ以上のアプリケーションを提供するとともに、前記トランザクションコマンドを開始するプロセッサと、
を備えることを特徴とするシステム。
【請求項１７】
前記一時再マッピングテーブルは、前記第２の部分が配置される、前記少なくとも１つのメモリアレイ内の物理的ロケーションをポイントすることを特徴とする請求項１６に記載のシステム。
【請求項１８】
前記メモリコントローラは、前記１つ以上のトランザクション演算子を受信することに応答して、前記一時再マッピングテーブルを修正するように適応されていることを特徴とする請求項１７に記載のシステム。
【請求項１９】
１つ以上の更なるトランザクションに対応する、１つ以上の更なる一時再マッピングテーブルを更に備えることを特徴とする請求項１７に記載のシステム。
【請求項２０】
前記コントローラは、トランザクションプロトコルに少なくとも部分的に基づいて動作する、トランザクションエンジンを備えることを特徴とする請求項１６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に開示される主題は、メモリデバイスを用いてトランザクションを実行する技術に関する。
【背景技術】
【０００２】
いくつかのアプリケーションでは、トランザクションと呼ばれる単一の動作として一連の指示を処理することが望まれ得る。例えば、トランザクションは、トランザクションは、開始イベントを含み、それに続いてメモリへの書込みを生じさせる複数の命令または演算子（オペレータ）を続いて含み、そして終了イベントを含んでもよい。トランザクションは、部分的に完了されてはならず、完全にかつ成功して実行されるか、あるいはフェイルするかのどちらかであり得る。すなわち、トランザクションの全ての命令又は演算子が成功して実行されるか、又は全くされないかのどちらかである。トランザクションを管理することは、例えば、コンピュータ・アーキテクチャーのオペレーティングシステムの比較的大量のソフトウェアオーバーヘッドを伴う、比較的複雑なタスクであり得る。このようなソフトウェアオーバーヘッド及び複雑さを低減することが望ましい場合がある。
【図面の簡単な説明】
【０００３】
非限定的かつ非排他的な実施形態について、以下に図を参照して記載する。特に明示がない限り、類似の番号は様々な図を通して類似の部分を示す。
【０００４】
【図１】図１は、実施形態に係る、トランザクションプロトコルに従うイベントの状態を示す図である。
【図２】図２は、実施形態に係る、トランザクションの状態を示す図である。
【図３】図３は、実施形態に係る、メモリサブシステムを示すブロック図である。
【図４】図４は、実施形態に係る、トランザクション処理のフローチャートである。
【図５】図５は、コンピュータシステムの代表的な実施形態を示す概略図である。
【発明を実施するための形態】
【０００５】
本明細書全体を通して、「一実施形態」又は「実施形態」を参照することは、こうした実施形態に関連して記載された特定の特色、構造、特性が、請求項に記載された主題の少なくとも一実施形態に含まれることを意味する。それゆえ、本明細書を通して様々な箇所における「一実施形態において」又は「実施形態」という語句の出現は、必ずしも全てが同一の実施形態を参照しているものではない。更に、特定の特色、構造、又は特性は、１つ以上の実施形態において組み合わされてもよい。
【０００６】
実施形態において、１つ以上のトランザクションを実行するための技術及び／又はアーキテクチャーは、例えば、トランザクションを実行する処理中に物理メモリを再マッピングすることによって、ソフトウェアの複雑さ及び／又はオペレーティングシステムのメモリオーバーヘッドを低減させる利点を提供し得る。このようなトランザクションは、原子的形態（ａｔｏｍｉｃ  ｆａｓｈｉｏｎ）で単一の動作として実行される一組の命令又は演算子を含んでもよい。ここで、「原子的形態」で実行されるトランザクションとは、部分的に完了されることはできず、完全に実行されるかあるいはトランザクションが前の状態を損なうことのないままにしてフェイルするかのどちらかである、トランザクションのことを言う。例えば、トランザクションは、メモリに特定の情報を書き込むための、複数の命令又は演算子を含んでもよい。このようなトランザクションは、「コミット」と呼ばれる、開始イベント及び終了イベントを含んでもよい。まさに言及したように、このようなトランザクションは、部分的に完了されることはできず、完全にかつ成功して実行されるか、又はフェイルするかのどちらかであり得る。すなわち、トランザクションの全ての命令又は演算子が成功して実行されるか、又は全く実行されないかのどちらかであり得る。
【０００７】
実施形態は、トランザクションを定義するトランザクションプロトコルに、少なくとも部分的に基づいて動作する、メモリサブシステムを含んでもよい。例えば、このようなトランザクションプロトコルは、当業者に公知のデータベースコンピュータ言語を含む、ＳＱＬに関連付けられてもよいが、請求項の主題はそのように限定されるものではない。このようなトランザクションは、例えば、開始信号及び一連の書込み演算子、続いてコミット演算子を実行するメモリサブシステムに対する命令を含んでもよい。このようなコミット演算子は、全ての書込み演算子が実行されるか、又は全く実行されないかのどちらかであるように、トランザクションを原子的形態で終了させるためにメモリサブシステムによって実行されてもよい。このようなメモリサブシステムは、複数の独立したトランザクションを実行してもよい。一実装例において、メモリサブシステムは、システムレベルのアドレスを物理メモリのアドレスにマッピングするための再マッピングテーブルを用いて、１つ以上のトランザクションを実行してもよい。例えば、このようなトランザクションソリューションは、後に詳細に記載するように、コミット演算子を受信することに応答して、再マッピングテーブルの一部分を再書込みすることによって実行されてもよい。一実装例において、メモリサブシステムは、トランザクションエンジンに転送されるべきデータベース構造の更なるナレッジを伴い得る、リレーショナルデータベースサブシステムとしての役割を果たしてもよい。このような更なる情報は、例えば、どのキーが１つのテーブルを別のテーブルにリンクさせているかと、そのようなテーブルに対するフィールド定義とを特定してもよい。別の実装例において、メモリサブシステムは、トランザクションをサポートするＩＯサブシステムとしての役割を果たしてもよい。このようなサブシステムは、セクタ上で動作することができ、かつ、そのセクタが何の情報を記憶するかについてのナレッジを持たない。この場合において、リレーショナルデータベースソフトウェアは、データベーストランザクションを管理してもよく、かつ、トランザクションをセクタレベルのトランザクションに翻訳してもよい。
【０００８】
一実装例において、１つ以上のトランザクションを実行する、本明細書に開示される技術及び／又はアーキテクチャーは、メモリ再マッピング機能を含むシステムインフラストラクチャーを利用してもよい。例えば、比較的大きなメモリサブシステムは、メモリの欠陥部分を隔離するために、及び／又は、メモリ空間の比較的大きな部分に渡って同一のウェア（wear）レベルを保証するために、メモリサブシステムのページ又はセクタを再マッピングすることができる、ソフトウェア及び／又はハードウェアを含んでもよい。更に、このようなソフトウェア及び／又はハードウェアは、後に詳細に説明するように、原子トランザクションを実行するために用いられてもよい。
【０００９】
１つの特定の実施形態において、原子的形態でトランザクションを実行するメモリサブシステムは、上で言及したように、トランザクションプロトコルを用いて動作してもよい。このようなプロトコルは、個々のトランザクションコマンドを、開始部分、ペイロード部分、及び、終了部分を含むものとして定義してもよい。このようなプロトコルは、トランザクションコマンドを開始したホストにトランザクション状態を提供しながら、複数の同時トランザクションコマンドを許容することができる。例えば、このような状態は、「トランザクションＡ完了」、「トランザクションＡ未完了」、「トランザクションＢ未完了」等を含んでもよい。トランザクションコマンドの開始部分を受信すると、メモリサブシステムは、トランザクションを実行するために用いられる、１つ以上の再マッピングテーブルの一時コピーを生成してもよい。トランザクションは、再マッピングテーブルの小部分にのみ影響を与えることもあるので、メモリサブシステムは、テーブルのうちのトランザクションの実行中に変更される部分を単に複製してもよい。更に、トランザクションの開始部分を受信する結果として、メモリの一部分（例えば、ページ及び／又はセクタ）は、メモリサブシステムにおいて複製されてもよい。一実装例において、このような複製処理では、メモリのオリジナル部分を不変なままにしておき、メモリ部分を複製したものを、変更、再書込み、及び／又は、処理することができる。他の実装例において、このような複製処理では、メモリ部分を複製したものを損なわれないままにしておき、メモリのオリジナル部分を、変更、再書込み、及び／又は、処理することができる。トランザクションコマンドの個々の演算子は、同様に、オリジナルの再マッピングテーブル又は再マッピングテーブルの一時コピーの変更、再書込み、及び／又は他のそのような処理をもたらしてもよい。トランザクションコマンドの終了部分又はコミット部分を受信することにより、メモリサブシステムは、トランザクションコマンドに含まれる全ての演算子が成功して完了していること、及び、再マッピングテーブルの一時コピーが損なわれないままであることを確認することができる。成功して完了している場合、レジスタは、再マッピングテーブルの一時コピーが、マスタ再マッピングテーブルに統合されるべきことを示すようにセットされてよい。例えば、再マッピングテーブルの一時コピーに含まれる情報は、このような統合後のマスタ再マッピングテーブルに含まれてもよい。このようなレジスタをセッティングすることにより、トランザクションを完了することができる。再マッピングテーブルのこのような一時コピーは、マスタ再マッピングテーブルの完全なコピーである必要はない。例えば、一時コピーは、近い将来のトランザクションに関係する変更を含む、マスタ再マッピングテーブルの一部分を単に表してもよい。一実装例において、再マッピングテーブルの一時コピーは、生成される必要はない。代わりに、マスタ再マッピングテーブルは、再マッピングテーブルの一部分が、特定のトランザクションに関連することを示すビットを含むように（僅かに）拡張されてもよい。このような特定部分は、トランザクションが「コミット」されるまで未完了のトランザクション動作の一部分として処理されてもよく、この「コミット」の時点において、再マッピングテーブルのそのような拡張部分を、マスター再マッピングテーブルのパーマネントレコードと振る舞わしてよい。
【００１０】
一実装例において、複数のトランザクションコマンドを処理することが可能なメモリサブシステムは、上に記載したように、マスタ再マッピングテーブルの一部分の複数の一時コピーを作成及び／又は処理することが可能であってもよい。同時にアクティブな複数のトランザクションが、メモリページの共通なサブセットに影響を及ぼすことを可能にさせられる場合において、メモリサブシステムは、トランザクションが処理される順番トラックを保持してもよい。勿論、このようなメモリサブシステムについての詳細は単に例示であって、請求項の主題はそのように限定されるものではない。
【００１１】
特定の実装例において、トランザクションを実行する方法は、上で議論したように、トランザクションリクエスト、複数のトランザクション演算子、及び／又は、トランザクションコミットを受信することを含んでもよい。例えば、回路及び／又はソフトウェアを備えるメモリコントローラは、このようなトランザクションリクエストをホストから受信してもよい。一実装例において、このようなメモリコントローラは、ホスト又は他の構成要素（エンティティ）からトランザクションリクエストを受信することに応答して、（このメモリコントローラを含んでもよく、又は含まなくてもよい）メモリデバイス内のメモリのコンテンツの一部分のコピーをつくり出してもよい。このようなコピーは、トランザクションがフェイルする場合に備えて、メモリに記憶されるオリジナルのコンテンツの保存を可能にすることができる。例えば、トランザクションコマンドは、メモリの特定部分に対して書込みを行う複数の演算子を含んでもよいが、このメモリは、特定の記憶情報を既に含んでいることがある。それゆえ、トランザクションコマンドの書込み演算子は、メモリの特定部分の記憶情報を「オーバーライト」してもよい（例えば、用いるメモリの形式に少なくとも部分的に応じた再書込み、又は、消去−書込み演算子シーケンス）。このような書込み演算子の一部分でも実行された後にトランザクションがフェイルする場合、オリジナルの記憶情報が失われることがある。しかしながら、オリジナルの記憶情報のコピーを持つことにより、このようなオリジナルの記憶情報を回復する方法を提供することができる。従って、メモリのうちトランザクションコマンドによって影響され得る１つ以上の部分は、トランザクションコマンドの演算子を実行することに先立ってコピーされてもよい。
【００１２】
上で言及したように、コントローラは、トランザクションコマンドの１つ以上のトランザクション演算子を受信することに応答して、メモリのコピーの情報を修正してもよい。特に、オリジナルのメモリを損なわれないようにし、トランザクション演算子によって修正されないようにすることができる。一実装例において、メモリサブシステムは、メモリのセクタ上で動作してもよい。そのような場合、上に記載したようにオリジナルのメモリをコピーするよりも新しい空のセクタを割り当てることが可能な場合がある。セクタは、更新されることで完全に再書込みされてもよい。従って、メモリサブシステムは、変更されるべきセクタの完全なコンテンツを受信していてよく、それにより、メモリのオリジナルのコンテンツをコピーする必要性を除去する。
【００１３】
トランザクションコマンドは、コンピュータデバイス又は他のこのようなホスティング構成要素（エンティティ）のオペレーティングシステム又はプロセッサによって開始されてもよい。例えば、トランザクションコマンドの書込み演算子により、メモリコピーのコンテンツの再書込みがもたらされることがある。一実装例において、コントローラは、１つ以上のコピーが配置される、メモリ内の物理的ロケーションをポイントする、一時再マッピングテーブルを保持してもよい。このような一時再マッピングテーブルは、１つ以上のトランザクション演算子をホストから受信することに応答して修正されてもよい。例えば、このようなトランザクション演算子が、メモリコピーの再配置をもたらすことがある。それゆえ、一時再マッピングテーブルは、このような再配置をトラックするように修正されてもよい。一実装例において、メモリコントローラは、１つ以上の更なるトランザクションコマンドに対応する、１つ以上の更なる一時再マッピングテーブルを同時に保持してもよい。例えば、複数の一時再マッピングテーブルを同時に保持することにより、メモリコントローラが複数のトランザクションを実行することを可能にすることができる。
【００１４】
実施形態では、１つ以上の一時再マッピングテーブルを保持することに加えて、メモリコントローラは、メモリ内の物理的ロケーションをポイントするマスタ再マッピングテーブルを保持してもよい。このようなマスタ再マッピングテーブルは、１つ以上の一時再マッピングテーブルのコンテンツに少なくとも部分的に基づいて、修正されてもよい。マスタ再マッピングテーブルのこのような修正は、トランザクションコマンドのコミット部分を受信することの結果として実行されてもよい。しかしながら、マスタ再マッピングテーブルの修正は、トランザクションが成功したか又はフェイルしたかどうかに、少なくとも部分的に基づいていてもよい。例えば、トランザクションが成功した場合、上で議論したように、メモリの修正されたコピーのコンテンツは、（この修正されたコピーの源である）メモリのオリジナルのコンテンツをオーバーライトするために用いられてもよい。また、マスタ再マッピングテーブルは、例えば、修正されたコピーのコンテンツが元のメモリロケーションに今記憶されるという事実を反映するように、修正されてもよい。他方で、トランザクションが成功していない場合、メモリの修正されたコピーのコンテンツは、そのようなコンテンツが用いられずオーバーライト又は消去されてもよいといった意味で、破棄されてもよい。このことは、トランザクションがフェイルする場合、トランザクションを実行する結果として修正されたデータ又は情報は保存されるべきではないからである。その代わりに、データ又は情報は、そのオリジナルのコンテンツに「戻される」べきである。上で説明したように、メモリのコピーされた部分が修正され、トランザクション中、オリジナルのメモリ部分は変更されない（例えば、保存される）ので、こうしたコピーにより、オリジナルのコンテンツへこのような返却が可能になる。また、例えば、マスタ再マッピングテーブルは、修正されたコピーのコンテンツは用いられるべきではなく、元のメモリロケーションに現在記憶されているコンテンツが代わりに用いられるべきであるという事実を反映するように、修正することができる。
【００１５】
トランザクション処理を伴う必要がない特定の実装例において、このようなマスタ再マッピングテーブルは、更に、メモリウェアレベリング動作及び／又は不良メモリ置換動作のために用いられてもよい。例えば、マスタ再マッピングテーブルは、不良ブロック及び／又はメモリアレイの過度に使用されたブロックに起因して再配置されたメモリのブロックに関する情報を保持してもよい。それゆえ、マスタ再マッピングテーブルは、例えば、ウェアレベリング又は不良ブロック管理及び／又はトランザクション等の複数の用途に関係してよい。
【００１６】
図１は、実施形態に係る、或るトランザクションプロトコルに従うイベントの状態を示す図である。例えば、トランザクションを実行するメモリコントローラは、このようなトランザクションプロトコルに、少なくとも部分的に基づいて動作してもよい。このようなトランザクションプロトコルにおいて、ホストは、メモリサブシステム１５０にトランザクションコマンド１００を提供することによって、トランザクションを開始してもよい。このようなトランザクションコマンドは、開始部分１１０、ペイロード部分１２０、巻き戻し部分１３５、及び、終了部分１３０を含んでもよい。ペイロード部分１２０は、例えば、演算子「０」で開始して演算子「Ｎ」で終了するＮ個の複数の演算子を含んでもよい。上で言及したように、終了部分１３０は、トランザクションを終えるトランザクションコミットを含んでもよい。巻き戻し部分１３５は、いくつかの状況において終了部分１３０の代わりに生じてもよい。例えば、巻き戻し部分１３５が終了部分１３０の代わりに受信される場合、コマンド１００の全ての動作が破棄されてもよい。一実装例において、メモリサブシステム１５０は、１つ以上のトランザクションを実行するメモリデバイス１５５を含んでもよい。このようなメモリサブシステムの一実施例は、図３に対する記載において更に詳細に説明される。このようなメモリサブシステムは、トランザクションが成功して完了したか又はフェイルしたかに関して、ホストに通知を与えてもよい。例えば、トランザクションコマンド１００の全ての演算子を成功して完了することに応答して、メモリサブシステム１５０は、ホストに「完了」通知１４０を与えてもよい。勿論、トランザクションプロトコルのこのような詳細は単に例示であって、請求項の主題はそのように限定されるものではない。
【００１７】
図２は、実施形態に係る、トランザクションの状態を示す図である。時間は、図２において垂直下方に進行する。このようなトランザクションは、上で言及したように、ホスト又はシステム２００によって開始されてもよく、メモリサブシステム２１０によって実行されてもよい。例えば、このようなホスト又はシステム２００は、アプリケーションを実行するコンピュータプラットフォームを備えてもよく、メモリサブシステム２１０は、１つ以上のメモリデバイスを備えてもよい。１つ以上のこのようなトランザクションは、同時に実行されてもよい。単一のトランザクションの一実施例では、トランザクション０は、トランザクション０に対するトランザクションコマンドの開始部分をシステム２００が提供することよって開始されてもよい。それに応じて、メモリサブシステム２１０は、演算子Ａ及び演算子Ｂ等の、後に続くトランザクション演算子を受信し実行する準備をしてよい。上で説明したように、このような準備は、メモリのうち演算子Ａ、Ｂ等によって影響を与えられ得る部分のコピーを生成することを含んでもよい。それゆえ、このような演算子は、トランザクション０がフェイルする場合に備えて保存されるオリジナルのメモリコンテンツを修正する必要はない。トランザクション０に対するトランザクションコマンドの終了部分をシステム２００から受信すると、メモリサブシステム２１０は、トランザクション０が成功して完了したか又はフェイルしたかを判定することができる。どちらの場合においても、メモリサブシステム２１０は、このような成否をシステム２００に知らせることができる。
【００１８】
複数のトランザクションを同時に実行する一実施例では、トランザクション１及び２は、両方のトランザクションに対するトランザクションコマンドの開始部分をシステム２００が提供することによって開始されてもよい。それに応じて、メモリサブシステム２１０は、両方のトランザクションの演算子Ａ等の、後に続くトランザクション演算子を受信し実行する準備をしてよい。上で説明したように、このような準備は、メモリのうち演算子によって影響を受け得る部分のコピーを生成することを含んでよい。それゆえ、このような演算子は、メモリのオリジナル部分を修正する必要はなく、情報は、トランザクション１又は２のどちらかがフェイルする場合に失われないですむ。特定の順番が図２に示されるが、複数のトランザクションの演算子は、任意の順番で実行されてもよい。例えば、トランザクション１に対するトランザクションコマンドの演算子Ａは、トランザクション２に対するトランザクションコマンドの演算子Ａの前に実行されてもよい。トランザクション１に対するトランザクションコマンドの終了部分をシステム２００から受信すると、メモリサブシステム２１０は、トランザクション１が成功して完了したか又はフェイルしたかについて判定することができる。どちらの場合においても、メモリサブシステム２１０は、このような成否をシステム２００に知らせることができる。同様に、トランザクション２の終了部分をシステム２００から受信すると、メモリサブシステム２１０は、トランザクション２が成功して完了したか又はフェイルしたかについて判定することができる。どちらの場合でも、メモリサブシステム２１０は、このような成否をシステム２００に知らせることができる。
【００１９】
一実装例において、メモリサブシステム２１０は、許容されるトランザクション演算子の最大数及び／又は１つ以上のトランザクションに使用されるメモリ部分の最大サイズを判定するためのコンテンツを含むレジスタ（図示せず）を備えてもよい。例えば、このようなレジスタは、トランザクションの演算子の数が５００個に限定されることを示すコンテンツを含んでもよい。他の実施例として、このようなレジスタは、特定のトランザクションに用いられるべきメモリの部分の最大サイズが１００個のページ又はセクタに限定されることを示すコンテンツを含んでもよい。勿論、トランザクションを実行することに必要な技術のこのような詳細は単に例示であって、請求項の主題はそのように限定されるものではない。
【００２０】
図３は、実施形態に係る、メモリサブシステム３００及びホスト３６０を示すブロック図である。例えば、メモリサブシステム３００は、メモリアレイ及び／又はコントローラを含むメモリデバイスを備えてもよく、ホスト３６０は、プロセッサを備えてもよい。図３の矢印は、方向を示してよいが、請求項の主題はいずれのこのような方向にも限定されるものではない。上で議論したように、トランザクションコマンドは、トランザクションリクエスト、１つ以上のトランザクション演算子、及び／又は、トランザクションコミットを含んでもよい。トランザクションを実行するメモリコントローラは、トランザクションエンジン３３０を備えてもよい。このようなメモリコントローラは、例えば、回線又はバス３０５を介してホスト３６０からトランザクションコマンドを受信してもよい。一実装例において、このようなメモリコントローラは、ホスト３６０からトランザクションコマンドを受信することに応答して、メモリサブシステム３００内のメモリ３５０のコンテンツの一部分の１つ以上のコピーをつくり出してもよい。このようなメモリコピーは、メモリ３５０の予備領域３５５に配置されてもよいが、請求項の主題はそのように限定されるものではない。上で言及したように、メモリコントローラは、トランザクションコマンドの１つ以上のトランザクション演算子を受信することに応答して、メモリのコピーの情報を修正してもよい。例えば、トランザクションコマンドの書込み演算子は、メモリコピーのコンテンツを再書込みすることをもたらしてもよい。一実装例において、メモリコントローラは、１つ以上のコピーが配置される、予備領域３５５等の、メモリ３５０内の物理的ロケーションをポイントする、１つ以上の一時再マッピングテーブル３４０を保持してもよい。このような一時再マッピングテーブル３４０は、トランザクションコマンド中の１つ以上のトランザクション演算子を受信することに応答して修正されてもよい。例えば、このようなトランザクション演算子は、メモリコピーの再配置をもたらしてもよい。それゆえ、一時再マッピングテーブル３４０は、このような再配置をトラックするように修正されてもよい。１つ以上の一時再マッピングテーブルを保持することに加えて、メモリコントローラは、メモリ３５０内の物理的ロケーションをポイントするマスタ再マッピングテーブル３２０を保持してもよい。このようなマスタ再マッピングテーブルは、１つ以上の一時再マッピングテーブル３４０のコンテンツに、少なくとも部分的に基づくトランザクションエンジン３３０によって修正されてもよい。マスタ再マッピングテーブル３２０のこのような修正は、トランザクションコマンドのコミット部分を受信する結果として実行されてもよい。しかしながら、マスタ再マッピングテーブル３２０の修正は、上で説明したように、トランザクションが成功したか又はフェイルしたかについて、少なくとも部分的に基づいていてもよい。
【００２１】
図４は、実施形態に係る、トランザクション処理４００のフローチャートである。ブロック４１０では、上で議論したように、メモリコントローラを備えるメモリサブシステムは、トランザクションリクエスト、１つ以上のトランザクション演算子、及び／又は、トランザクションコミットを含むトランザクションコマンドを受信してもよい。ブロック４２０において、このようなメモリコントローラは、メモリデバイス内のメモリのコンテンツの一部のコピーをつくり出してもよい。このようなコピーは、上で議論したように、トランザクションがフェイルする場合に備えて、メモリ内に記憶されるオリジナルのコンテンツの保存を可能にする。ブロック４３０において、メモリコントローラは、トランザクションコマンドの１つ以上のトランザクション演算子を受信することに応答して、メモリのコピーの情報を修正してもよい。例えば、トランザクションコマンドの書込み演算子は、メモリコピーのコンテンツを再書込みすることをもたらしてもよい。一実装例において、メモリコントローラは、１つ以上のコピーが配置される、メモリ内の物理的ロケーションをポイントする一時再マッピングテーブルを保持してもよいが、こうした物理的ロケーションは、例えば、図３に示す予備メモリ３５５等のメモリの予備領域内のものでもよい。このような一時再マッピングテーブルは、トランザクションコマンド内の１つ以上のトランザクション演算子を受信することに応答して修正されてもよい。ひし形で示す４４０において、トランザクションコマンドの終了を意味する、トランザクションコマンドのコミットが受信されるかどうかについて判定が成されてもよい。コミットが受信される場合、処理４００は、ひし形で示す４５０に進行してもよく、ここで、トランザクションが成功して完了したかどうかについて判定が成されてよい。もし成功して完了されていない場合は、ブロック４５５に示すように、メモリの修正されたコピーのコンテンツを用いられずに、オーバーライト及び／又は消去されてよい。処理４００は、その後、ブロック４６０に進行してもよく、ここで、メモリサブシステムが異常をホストに知らせることができる。しかしながら、トランザクションが成功して完了した場合、処理４００は、ブロック４７０に進行してもよく、ここで、メモリの修正されたコピーのコンテンツは、上で議論したように、メモリのオリジナルのコンテンツをオーバーライトするために用いられてよい。更に、マスタ再マッピングテーブルは、例えば、修正されたコピーのコンテンツが、元のメモリロケーション内に今記憶されるという事実を反映するように、修正されてもよい。ブロック４８０において、メモリサブシステムは、トランザクションが成功して完了したことをホストに知らせてもよい。しかしながら、このようなコミットがひし形で示す４４０において受信されない場合、処理４００は、修正を破棄する巻き戻しコマンドが受信されたかどうかについて判定が成されてよい、ひし形で示す４９０に進行してもよい。このような巻き戻しコマンドが受信されない場合、処理４００は、後に続くトランザクション演算子を受信することに応答してメモリコピーが更に修正される、ブロック４３０にリターンされてよい。しかしながら、巻き戻しコマンドが受信される場合、処理４００は、ブロック４９３に進行してもよく、ここで、メモリの修正されたコピーのコンテンツは、無視され、用いられず、オーバーライト及び／又は消去されてよい。処理４００は、その後、メモリサブシステムが、巻き戻し処理が成功又は完全であることをホストに知らせる、ブロック４９６に進行してよい。勿論、処理４００についてのこのような詳細は単に例示であって、請求項の主題はそのように限定されるものではない。
【００２２】
図５は、メモリデバイス５１０を含むコンピュータシステム５００の実施形態例を概略的に示す図である。このようなコンピュータデバイスは、例えば、アプリケーション及び／又は他のコードを実行するために、１つ以上のプロセッサを備えてよい。例えば、メモリデバイス５１０は、図１に示したＰＣＭ１００の一部分を含むメモリを備えてよい。コンピュータデバイス５０４は、メモリデバイス５１０を管理するように構成されてよい任意のデバイス、装置、又は機械の典型としてよい。メモリデバイス５１０は、メモリコントローラ５１５及びメモリ５２２を含んでよい。例示であって制限されるものではないが、コンピュータデバイス５０４は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、ワークステーション、サーバデバイス等の１つ以上のコンピュータデバイス及び／又はプラットフォームと、例えば、携帯情報端末、モバイル通信デバイス等の１つ以上のパーソナルコンピュータデバイス又は通信デバイス及び／又は装置と、例えば、データベース又はデータ記憶サービスプロバイダ／システム等のコンピュータシステム及び／又は関連するサービスプロバイダ機能と、及び／又はこれらの任意の組み合わせとを含んでよい。
【００２３】
システム５００に示した様々なデバイスの全部又は一部、及び本明細書に更に記載されたような処理及び方法は、ハードウェア、ファームウェア、ソフトウェア、又はこれらの任意の組み合わせを用いるかあるいは含むように実装されてもよいことが理解される。ゆえに、例示であって限定されるものではないが、コンピュータデバイス５０４は、バス５４０及びホスト又はメモリマイクロコントローラ５１５を通してメモリ５２２に動作的に連結される、少なくとも１つの処理ユニット５２０を含んでよい。処理ユニット５２０は、データコンピューティング手順又はデータコンピューティング処理の少なくとも一部を実行するように構成可能な１つ以上の回路の典型である。例示であって限定されるものではないが、処理ユニット５２０は、１つ以上のプロセッサ、コントローラ、マイクロプロセッサ、マイクロコントローラ、特定用途向け集積回路、デジタル信号プロセッサ、プログラマブル論理デバイス、フィールド・プログラマブル・ゲートアレイ等を含んでよく、又はこれらの任意の組み合わせを含んでよい。処理ユニット５２０は、メモリコントローラ５１５と通信するように構成されたオペレーティングシステムを含んでよい。このようなオペレーティングシステムは、例えば、バス５４０上でメモリコントローラ５１５に送信されるトランザクションコマンドを生成してよい。このようなトランザクションコマンドは、例えば、読み出しコマンド及び／又は書込みコマンドを含む演算子を含んでよい。一実装例において、バス５４０は、少しの例を挙げると、イーサネット（登録商標）、ワイヤレスローカルエリアネットワーク（ＬＡＮ）、セルラーネットワーク、シリアルＡＴＡ（ＳＡＴＡ）、シリアルアタッチドＳＣＳＩ（ＳＡＳ）、又は、ペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩｅ）カードの一部を含んでもよい。トランザクションコマンドを受信することに応答して、例えば、メモリコントローラ５１５は、このようなトランザクションを実行するために、上記の処理４００を実行してよい。一実装例において、システム５００は、例えば、少なくとも１つのメモリアレイを含むメモリデバイス５１０を備えてよい。このようなメモリデバイスは、更に、トランザクションリクエスト、１つ以上のトランザクション演算子、及び／又は、トランザクションコミットを含むトランザクションコマンドを受信するメモリコントローラ５１５を備えてよい。メモリコントローラ５１５は、更に、トランザクションコマンドを受信することに応答して、少なくとも１つのメモリアレイのコンテンツの一部分のコピーをつくり出してよい。メモリコントローラ５１５は、その後、トランザクションの１つ以上のトランザクション演算子を受信することに応答して、コピーの情報を修正してよい。一実装例において、処理ユニット５２０は、１つ以上のアプリケーションのホストをつとめるとともにこのようなトランザクションを開始してもよいが、請求項の主題はそのように限定されるものではない。
【００２４】
メモリ５２２は、任意のデータストレージ機構の典型である。メモリ５２２は、例えば、一次メモリ５２４及び／又は二次メモリ５２６を含んでよい。一次メモリ５２４は、例えば、ランダムアクセスメモリ、リードオンリメモリ等を含んでよい。この例示は処理ユニット５２０から離れているものとして説明したが、一次メモリ５２４の全部又は一部は処理ユニット５２０内に備えられていてよく、あるいは処理ユニット５２０と同じ場所に設置されているか、又は処理ユニット５２０に連結されてよいと理解されるべきである。
【００２５】
二次メモリ５２６は、例えば、一次メモリと同一形式のメモリもしくは類似形式のメモリ、及び／又は、例えば、ディスクドライブ、光学ディスクドライブ、テープドライブ、固体メモリドライブ等の１つ以上のデータ記憶装置もしくはシステムを含んでよい。所定の実装例において、二次メモリ５２６は動作可能的にコンピュータ可読媒体５２８から受信可能であってよく、もしくは、コンピュータ可読媒体５２８に連結するように構成可能であってよい。コンピュータ可読媒体５２８は、例えば、システム５００における１つ以上のデバイスに対するデータ、コード、及び／又は命令を送ることができ、かつ／又は、こうしたデータ、コード、及び／又は命令をアクセス可能にすることができる任意の媒体を含んでよい。
【００２６】
コンピュータデバイス５０４は、例えば、入力／出力５３２を含んでよい。入力／出力５３２は、人及び／又は機械の入力を受入れるように構成可能な、又は導入するように構成可能な１つ以上のデバイス又は機能、及び／又は、人及び／又は機械の出力を送達させるように構成可能な、又は提供するように構成可能な１つ以上のデバイス又は機能の典型である。例示であって限定されるものではないが、入力／出力デバイス５３２は、動作可能に構成されたディスプレイ、スピーカー、キーボード、マウス、トラックボール、タッチスクリーン、データポート等を含んでよい。
【００２７】
本明細書に使用された用語「及び」、「及び／又は」、及び「又は」は、少なくとも一部において、これらの用語が使用される文脈に応じた様々な意味を含んでよい。一般に、「Ａ、Ｂ、又はＣ」等のリストに関連するように使用された場合の「及び／又は」並びに「又は」とは、ここでは包括的な意味として使用している「Ａ、Ｂ、及びＣ」、並びに、ここでは排他的な意味として使用している「Ａ、Ｂ、又はＣ」を意味することが意図される。本明細書全体を通した「一実施形態」又は「実施形態」といった言及は、その実施形態に関連して記載した特定の特色、構造、特性が、請求項に記載された主題の少なくとも一実施形態に含まれることを意味する。それゆえ、本明細書を通して様々な箇所における「一実施形態において」又は「実施形態」という語句の出現は、必ずしも全てが同一の実施形態を言及しているものではない。更に、これら特定の特色、構造、又は特徴は、１つ以上の実施形態において組み合わされてよい。
【００２８】
現時点で考えられる実施形態例について説明して述べてきたが、請求項の主題から逸脱することなく、他の様々な変更を行い、均等物との置換を行うことができることが当業者に理解されるであろう。加えて、本明細書に開示された主要概念から逸脱することなく、特定の状況を請求項の主題の教示に適用するように多くの変更がなされてよい。それゆえ、請求項の主題が開示された特定の実施形態に限定されないことが意図され、そのような請求項の主題は、添付の特許請求の範囲に含まれる全ての実施形態及びそれらの均等物を包含することもあることが意図される。
【図１】
0005582418.tif 000002
【図２】
0005582418.tif 000003
【図３】
0005582418.tif 000004
【図４】
0005582418.tif 000005
【図５】
0005582418.tif 000006