(58)【調査した分野】(Int.Cl.,DB名)
前記メモリデバイスが、ダイナミックRAM(DRAM)デバイス、フラッシュメモリ・デバイス、スタティックRAM(SRAM)デバイス、ゼロキャパシタRAM(ZRAM)デバイス、ツイン・トランジスタRAM(TTRAM)デバイス、読み出し専用メモリ(ROM)デバイス、フェロエレクトリック・トランジスタRAM(FeTRAM)デバイス、磁気抵抗RAM(MRAM)デバイス、相転移メモリ(PCM)デバイス、PCM及びスイッチング(PCMS)デバイス、ナノワイヤベースのデバイス、抵抗RAM(RRAM(登録商標))デバイス、または電子的に消去可能なプログラマブルRAM(EEPROM)デバイスを備える、
請求項1から請求項7の何れか一項に記載のメモリデバイス。
PPRが無効化されていないことを前記モードレジスタ内の前記値が示すとの判定に部分的に基づいて、前記コマンドの受信に応じて、前記メモリセルの行を再マッピングする手段、
をさらに備える請求項9に記載のメモリデバイス。
前記メモリデバイスが、ダイナミックRAM(DRAM)デバイス、フラッシュメモリ・デバイス、スタティックRAM(SRAM)デバイス、ゼロキャパシタRAM(ZRAM)デバイス、ツイン・トランジスタRAM(TTRAM)デバイス、読み出し専用メモリ(ROM)デバイス、フェロエレクトリック・トランジスタRAM(FeTRAM)デバイス、磁気抵抗RAM(MRAM)デバイス、相転移メモリ(PCM)デバイス、PCM及びスイッチング(PCMS)デバイス、ナノワイヤベースのデバイス、抵抗RAM(RRAM(登録商標))デバイス、または電子的に消去可能なプログラマブルRAM(EEPROM)デバイスを備える、
請求項9から請求項14の何れか一項に記載のメモリデバイス。
【発明を実施するための形態】
【0003】
以下の詳細な説明は、添付図面を参照するものである。複数の異なる図面における複数の同一の参照番号は、複数の同一または同様の構成要素を識別し得る。また、以下の詳細な説明は、本発明を限定するものではない。
【0004】
コンピューティングデバイスは、例えば、処理論理回路、およびストレージを含み得る。処理論理回路は、ストレージに保存され得る情報を実行および/または操作し得る論理回路(例えばハードウェア)を含み得る。情報は、例えば、データおよび/またはコンピュータ実行可能命令を含み得る。
【0005】
ストレージは、情報を保存するのに使用され得る1または複数のメモリデバイスを含み得る。ストレージは揮発性および/または不揮発性であり得る。揮発性であるストレージは、ストレージから電源を除去した場合に、ストレージ内に保存された情報を失い得る。不揮発性であるストレージは、ストレージから電源を除去した場合でも、ストレージ内の情報を保持し得る。揮発性であるストレージは、揮発性ストレージと称され、不揮発性であるストレージは、不揮発性ストレージと称される。
【0006】
例えば、コンピューティングデバイスは、プロセッサまたはストレージを含み得る。ストレージは、情報を保存するのに使用され得る1または複数のメモリデバイスを含み得る。情報は、例えば、プロセッサによって操作され得るデータ、および/または、プロセッサによって実行され得る複数のコンピュータ実行可能命令を含み得る。
【0007】
メモリデバイスは、コンピューティングデバイスのための揮発性および/または不揮発性ストレージを提供する。コンピューティングデバイスから電源を除去した後も存続する情報は、コンピューティングデバイスのための不揮発性ストレージを提供し得る複数のメモリデバイス内に保存され得る。
【0008】
コンピューティングデバイスに揮発性ストレージを提供するメモリデバイス内に保存された情報は、コンピューティングデバイスから電源を除去した後に失われ得る。
【0009】
コンピューティングデバイスは、コンピューティングデバイス内に含まれる処理論理回路を、コンピューティングデバイスに含まれる1または複数のメモリデバイスとインターフェース接続するべく使用され得るメモリコントローラを含み得る。メモリコントローラは、様々な操作を実行するべく、メモリデバイスに対し、コマンドの1または複数のインスタンスを生成および発行(例えば送信)する。
【0010】
例えば、プロセッサは、ストレージ内の場所にデータを書き込み得る。その場所にデータを保存するためのストレージ領域は、ストレージに含まれる複数のメモリデバイスによって提供され得る。プロセッサは、データをメモリデバイスに書き込むべく、メモリデバイスに対し、コマンドの1または複数のインスタンスを生成および発行し得るメモリコントローラを含み得る。
【0011】
メモリデバイスは、様々な種類のコマンドをサポートし得る。コマンドは、例えば、標準コマンドおよび/またはベンダ固有コマンドを含み得る。標準コマンドは、業界標準によって指定され得るコマンドを含み得る。例えば、Joint Electron Device Engineering Council (JEDEC) Solid State Technology Associationは、メモリデバイスに関する、様々な業界標準を策定した。JEDECが策定した業界標準の例には、第4世代ダブルデータレート(DDR4)メモリデバイスに関する要件の最小セットを定義する、JESD79−4が含まれる。
【0012】
ベンダ固有コマンドは、例えば、メモリデバイスの特定のベンダによって定義され得る非標準コマンドであり得る。コマンドはベンダによって定義され得るので、コマンドに関連する機能は、文書化されている場合も、文書化されていない場合もあり得る。従って、ベンダ固有コマンドのインスタンスをメモリデバイスに発行すると、メモリデバイスが未知の状態に置かれ得る。
【0013】
例えば、特定のベンダからのメモリデバイスは、ベンダ定義の動作モードにコマンドを置く、そのベンダのみに知られている、ベンダ固有コマンドへのサポートを含み得る。ベンダ固有コマンドのインスタンスをメモリデバイスに対して発行すると、メモリデバイスは、そのメモリデバイスをベンダ定義の動作モードに置き得るコマンドのインスタンスを実行し得る。この動作モードは非標準なので、メモリデバイスがどのモードになるか明確でなく、したがって、デバイスは未知の状態にあると見なされ得る。
【0014】
メモリデバイスによってサポートされているコマンドには、例えば、ポストパッケージリペア(PPR)コマンドが含まれ得る。PPRコマンドは、例えば、メモリデバイスのパッケージ後に、メモリデバイスを修復するのに使用され得る。修復には、デバイスを修復するべく、メモリデバイス内の論理回路を不可逆的に変更することが含まれ得る。
【0015】
例えば、メモリデバイスは、情報をメモリデバイス内に保存するのに使用され得る、メモリセルの1または複数のスペア行を含んでいると仮定する。さらに、メモリデバイスは、現在使用中の行を、スペア行の1つに対して不可逆的に再マッピングすることを可能にするPPRコマンドをサポートしていると仮定する。
【0016】
ここで、メモリデバイスは、現在使用中の行に、不良メモリセルを含んでいると仮定する。PPRコマンドのインスタンスは、メモリデバイスに発行され、現在使用中の行をスペア行の1つに再マッピングし得る。メモリデバイスは、PPRコマンドのインスタンスを取得(例えば、読み込み、受信)して、処理する。処理は、メモリデバイスを修復し、かつ、不良メモリセルを含む行をメモリデバイスがそれ以降使用しないようにするべく、不良メモリセルを含む現在使用中の行を、スペア行の1つに不可逆的に再マッピングすることを含み得る。
【0017】
コマンドの様々なインスタンスが、様々なタイミングで、様々な理由により、メモリデバイスに発行され得る。例えば、コンピューティングデバイスの電源が入れられた後で、コンピューティングデバイスに関連するメモリコントローラは、例えば、メモリコントローラからメモリデバイスへとコマンドのインスタンスを配送するのに使用され得るコマンドバスをトレーニング、および/または、テストするべく、コマンドの様々なインスタンスを、1または複数のメモリデバイスへ発行し得る。
【0018】
メモリデバイスに発行されたコマンドのインスタンスが、メモリデバイスによって、例えば、ベンダ固有コマンドまたはPPRコマンドとして間違って解釈された場合、問題が発生し得る。例えば、メモリコントローラとメモリデバイスとの間のトレーニングシーケンスに、メモリコントローラとメモリデバイスとの間でコマンドの様々なインスタンスを送信することが含まれていると仮定する。さらに、トレーニングシーケンス中に、メモリデバイスが、コマンドのインスタンスの1つをPPRコマンドとして間違って解釈すると仮定する。
【0019】
間違って解釈されたコマンドのインスタンスの処理中、メモリデバイスは意図せずして、メモリセルの行を、メモリセルの利用可能なスペア行で再マッピングし得る。この不必要な再マッピングは、結果として、メモリデバイスに関連する貴重なリソースの不必要な消費、つまり、スペアメモリセルの限られた利用可能な行の不必要な消費につながり得る。本明細書で説明されている1または複数の技術は、例えば、コマンドのインスタンスがメモリデバイスによって間違って解釈された場合に発生し得る問題を回避し得る。本明細書で説明されている1または複数の技術は、コンピューティングデバイス内で実装され得る。
【0020】
本明細書で説明されている1または複数の技術を実装し得るコンピューティングデバイスの例には、スマートフォン、タブレット、デスクトップ型コンピュータ、または、ウルトラブックが含まれるが、これらに限定されない。
図1は、本明細書で説明されている1または複数の技術を実装し得るコンピューティングデバイス100の例示的な実施形態のブロック図を図示する。
【0021】
図1において、コンピューティングデバイス100は、例えば、処理論理回路220、一次記憶装置230、基本入力/出力システム(BIOS)140、二次記憶装置150、1または複数の入力デバイス160、1または複数の出力デバイス170、1または複数の通信インターフェース180など、様々なコンポーネントを含み得る。
【0022】
図1は、本明細書で説明されている1または複数の技術を実装し得るコンピューティングデバイスの例示的な実施形態を図示していることに留意すべきである。本明細書で説明されている1または複数の技術を実装し得るコンピューティングデバイスの他の実施形態は、
図1で図示されているコンポーネントより多いコンポーネント、または、より少ないコンポーネントを含み得る。さらに、コンポーネントは、
図1で図示されているものと異なる方法で配置され得る。
【0023】
例えば、本明細書で説明されている1または複数の技術を実装し得るコンピューティングデバイスの一実施形態において、二次記憶装置150の一部は、「クラウド」ストレージを提供するリモートサイトに含まれ得る。 リモートサイトには、例えばインターネットなどの通信ネットワークを介して、コンピューティングデバイスからアクセスできる。通信インターフェース180は、コンピューティングデバイスを通信ネットワークとインターフェース接続するのに使用され得る。
【0024】
また、本明細書で説明される1または複数の技術を実装し得るコンピューティングデバイスの他の実施形態に含まれる様々なコンポーネントによって実行される機能は、本明細書で説明されている方法と異なる方法でコンポーネントの間で割り当てられ得ることに留意すべきである。
【0025】
コンピューティングデバイス100は、例えば、処理論理回路220、二次記憶装置150、1または複数の入力デバイス160、1または複数の出力デバイス170、および/または、1または複数の通信インターフェース180など、コンピューティングデバイス100内のコンポーネントの間における通信を可能にし得る入力/出力(I/O)バス110を含み得る。通信は特に、例えばコンポーネント間でのデータおよび/または制御信号の転送を含み得る。I/Oバス110を実装するのに使用され得るI/Oバスの例には、シリアルATA(SATA)バス、ペリフェラルコンポーネントインターコネクト(PCI)バス、PCIエクスプレス(PCI−e)バス、ユニバーサルシリアルバス(USB)、スモールコンピュータシステムインターフェース(SCSI)バス、シリアルアタッチドSCSI(SAS)バスなどが含まれるが、これらに限定されない。
【0026】
コンピューティングデバイス100は、一次記憶装置230内に保存され得る情報が、処理論理回路220と一次記憶装置230との間で転送されることを可能にし得るバス190を含み得る。情報には、例えば、処理論理回路220によって実行、操作、および/または、他の態様で処理され得る、コンピュータ実行可能命令および/またはデータが含まれ得る。
【0027】
また、バス190は、処理論理回路220に含まれ得るメモリコントローラと、一次記憶装置230に含まれ得る1または複数のメモリデバイスとの間で、1または複数のコマンドのインスタンスを転送するための対応機能を含み得る。処理論理回路220に含まれ得るメモリコントローラ、および、一次記憶装置230に含まれ得るメモリデバイスの例は、以下でさらに詳細に説明される。
【0028】
処理論理回路220は、情報を解釈、実行、および/または、他の態様で処理するための論理回路を含み得る。情報には、例えば一次記憶装置230および/または二次記憶装置150に保存され得る情報が含まれ得る。加えて、情報には、1または複数の入力デバイス160および/または通信インターフェース180によって取得され得る情報が含まれ得る。
【0029】
処理論理回路220は、様々な異種のハードウェアを含み得る。ハードウェアには、例えば、情報を解釈、実行、操作、および/または、他の態様処理し得る、例えば、1または複数のプロセッサ、マイクロプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け命令セットプロセッサ(ASIP)、特定用途向け集積回路(ASIC)、コンプレックスプログラマブルロジックデバイス(CPLD)、グラフィックスプロセッシングユニット(GPU)、および/または、他の態様での処理論理回路の、いくつかの組み合わせが含まれ得る。処理論理回路220は、シングルコアまたはマルチコアを有し得る。処理論理回路220を実装するのに使用され得るプロセッサの例には、カリフォルニア州サンタクララのIntel Corporationから入手可能な、Intel(登録商標) Xeon(登録商標)プロセッサ、および、Intel(登録商標) Atom(商標)ブランドプロセッサが含まれるが、これらに限定されない。
【0030】
入力デバイス160は、情報をコンピューティングデバイス100へ入力するのに使用され得る1または複数のデバイスを含み得る。これらのデバイスには、例えば、キーボード、コンピュータマウス、マイク、カメラ、トラックボール、ジャイロデバイス(例えば、ジャイロスコープ)、ミニマウス、タッチパッド、スタイラス、グラフィックスタブレット、タッチスクリーン、ジョイスティック(アイソトニックまたはアイソメトリック)、ポインティングスティック、加速度計、手の平マウス、足用マウス、パック、眼球制御デバイス、指マウス、ライトペン、ライトガン、神経デバイス、アイトラッキングデバイス、ステアリングホイール、ヨーク、ジョグダイヤル、スペースボール、方向パッド、ダンスパッド、ソープマウス、力覚デバイス、触覚デバイス、多点入力デバイス、ディスクリートポインティングデバイス、および/または、他のいくつかの入力デバイスが含まれ得る。
【0031】
本発明は、上で開示されている特定の実施形態に限定されるものではなく、本発明には、以下の添付されている特許請求の範囲に入る特定の実施形態および均等物のいずれか、および、すべてが含まれることを意図している。
[項目1]
メモリデバイスであって、
コマンドが上記メモリデバイスに対して無効化されているかどうかを示す値を含むモードレジスタと、
デバイス処理論理回路と
を備え、
上記デバイス処理論理回路が、
上記コマンドのインスタンスを取得し、
上記モードレジスタに含まれる上記値に基づいて、上記コマンドの上記インスタンスが、上記デバイス処理論理回路によって実行されるべきかどうか判定するためのものである、
メモリデバイス。
[項目2]
上記デバイス処理論理回路がさらに、
上記コマンドが無効化されていることを示す上記値に基づいて、上記コマンドの上記インスタンスを実行しない、
項目1に記載のメモリデバイス。
[項目3]
上記デバイス処理論理回路がさらに、上記コマンドが無効化されていないことを示す上記値に基づいて上記コマンドの上記インスタンスを実行する、項目1または2に記載のメモリデバイス。
[項目4]
上記モードレジスタがフィールドを含み、上記コマンドが無効化されているかどうかを示す上記値が上記フィールドに含まれる、項目1から3のいずれか一項に記載のメモリデバイス。
[項目5]
上記コマンドの上記インスタンスが、バスを介して取得される、項目1から4のいずれか一項に記載のメモリデバイス。
[項目6]
上記コマンドの上記インスタンスが、メモリコントローラによって生成され、上記コマンドの上記インスタンスが、上記メモリコントローラによって、上記バスを介して、上記メモリデバイスへと転送される、項目5に記載のメモリデバイス。
[項目7]
上記メモリコントローラが、コンピューティングデバイス内に含まれる処理論理回路と関連する、項目6に記載のメモリデバイス。
[項目8]
上記デバイス処理論理回路がさらに、
第2のコマンドのインスタンスおよび値を取得し、
上記第2のコマンドの上記インスタンスを実行し、上記第2のコマンドの上記インスタンスの上記実行が、上記モードレジスタ内の上記値の設定を含む、項目1から7のいずれか一項に記載のメモリデバイス。
[項目9]
上記コマンドはベンダ固有コマンドである、項目1から8のいずれか一項に記載のメモリデバイス。
[項目10]
上記コマンドは、ポストパッケージリペア(PPR)コマンドである、項目1から9のいずれか一項に記載のメモリデバイス。
[項目11]
上記コマンドをそれ以降無効化しないようにするイベントが発生し、上記イベント発生後、上記モードレジスタが、上記コマンドが無効化されていないことを示す値に設定される、項目1から10のいずれか一項に記載のメモリデバイス。
[項目12]
上記イベントは、上記メモリデバイスの電源サイクル、または、上記メモリデバイスのリセットである、項目11に記載のメモリデバイス。
[項目13]
メモリデバイスと、
上記メモリデバイスに対して、コマンドが無効化されているかどうかを示す値を保持するモードレジスタと、
上記コマンドのインスタンスを取得し、
上記モードレジスタが保持する上記値に基づいて、上記デバイス処理論理回路によって、上記コマンドの上記インスタンスが実行されるべきかどうか判定するための
デバイス処理論理回路と
を備える、コンピューティングデバイス。
[項目14]
上記モードレジスタおよび上記デバイス処理論理回路が上記メモリデバイスに含まれる、項目13に記載のコンピューティングデバイス。
[項目15]
上記コマンドのインスタンスを生成するためのメモリコントローラと、
上記メモリコントローラから上記メモリデバイスへと上記コマンドの上記インスタンスを転送するためのバスと、
を備える、項目13または14に記載のコンピューティングデバイス。
[項目16]
上記コマンドが無効化されていないと判定された場合に、上記デバイス処理論理回路が上記コマンドの上記インスタンスをさらに実行する、項目13から15のいずれか一項に記載のコンピューティングデバイス。
[項目17]
上記コマンドがポストパッケージリペア(PPR)コマンドである、項目13から16のいずれか一項に記載のコンピューティングデバイス。
[項目18]
上記デバイス処理論理回路がさらに、
第2のコマンドのインスタンスおよび値を取得し、
上記第2のコマンドの上記インスタンスを実行し、
上記第2のコマンドの上記インスタンスの上記実行が、上記モードレジスタ内での上記値の設定を含む、
項目13から17のいずれか一項に記載のコンピューティングデバイス。
[項目19]
1または複数のコンピュータ実行可能命令を実行するための処理論理回路と、
上記処理論理回路を上記メモリデバイスとインターフェースで接続するためのメモリコントローラと、
を含み、
上記処理論理回路によるコンピュータ実行可能命令の実行の結果、上記メモリコントローラが上記コマンドの上記インスタンスを生成する、
項目13から18のいずれか一項に記載のコンピューティングデバイス。
[項目20]
上記メモリデバイスの電源サイクルまたはリセットの結果、上記モードレジスタが、上記コマンドが無効化されていないことを示す値を含むようになる、項目13から19のいずれか一項に記載のコンピューティングデバイス。
[項目21]
メモリデバイスでコマンドのインスタンスを取得する段階と、
上記メモリデバイス内に含まれるモードレジスタのフィールドに保持される値に基づいて、上記コマンドの上記インスタンスが、上記メモリデバイスによって実行されるべきかどうか判定する段階と
を含み、
上記モードレジスタが、上記メモリデバイスの動作モードを指定するためのレジスタであり、上記メモリデバイスの電源サイクルまたはリセットが実行されるまで、上記値が上記フィールドに保持される方法。
[項目22]
メモリデバイスでコマンドのインスタンスを取得する手段と、
上記メモリデバイス内に含まれるモードレジスタのフィールドに保持される値に基づいて、上記コマンドの上記インスタンスが上記メモリデバイスによって実行されるべきかどうか判定するための手段と
を含み、
上記モードレジスタが、上記メモリデバイスの動作モードを指定するためのレジスタであり、
上記メモリデバイスの電源サイクルまたはリセットが実行されるまで、上記値は上記フィールドに保持される装置。
[項目23]
コマンドがメモリデバイスに対して無効化されているかどうかを示す値を保持するための手段と、
上記コマンドのインスタンスを取得するための手段と、
上記メモリデバイスに対し上記コマンドが無効化されているかどうかを示す上記値に基づいて、上記コマンドの上記インスタンスが実行されるべきかどうかを判定する手段と
を含む装置。
[項目24]
上記コマンドが無効化されていないと判定された場合に上記コマンドの上記インスタンスを実行するための手段をさらに含む、項目23に記載の装置。
[項目25]
上記コマンドが無効化されていると判定された場合に上記コマンドの上記インスタンスを実行しないための手段をさらに含む、項目23または24に記載の装置。
[項目26]
上記コマンドが、ベンダ固有コマンドであるか、または、ポストパッケージリペア(PPR)コマンドである、項目23から25のいずれか一項に記載の装置。
【0032】
出力デバイス170には、コンピューティングデバイス100からの情報を出力し得る1または複数のデバイスが含まれ得る。これらのデバイスには、例えば、陰極線管(CRT)、プラズマディスプレイデバイス、発光ダイオード(LED)ディスプレイデバイス、液晶ディスプレイ(LCD)デバイス、真空蛍光ディスプレイ(VFD)デバイス、表面伝導型電子放出素子ディスプレイ(SED)デバイス、電界放出ディスプレイ(FED)デバイス、力覚デバイス、触覚デバイス、プリンタ、スピーカ、ビデオプロジェクタ、立体ディスプレイデバイス、プロッタ、タッチスクリーン、および/または、他のいくつかの出力デバイスが含まれ得る。
【0033】
出力デバイス170は、例えば、処理論理回路220から命令を受けて、コンピューティングデバイス100からの情報を出力する。情報の出力には、出力デバイス170上に情報を提示(例えば、表示、印刷)することが含まれ得る。情報には、例えば、テキスト、グラフィカルユーザインターフェース(GUI)要素(例えば、ウィンドウ、ウィジェット、および/または、他のGUI要素)、音声(例えば、音楽、サウンド)、および/または、出力デバイス170によって出力され得る他の情報が含まれ得る。
【0034】
通信インターフェース180は、コンピューティングデバイス100を、例えば、1または複数の通信ネットワークとインターフェース接続するための論理回路を含み、コンピューティングデバイス100が、通信ネットワークに結合された1または複数のエンティティ(例えばノード)と通信することを可能にする。通信ネットワークには、例えば、インターネット、広域ネットワーク(WAN)、ローカルエリアネットワーク(LAN)、3Gおよび/または4Gネットワークが含まれ得る。
【0035】
通信インターフェース180は、コンピューティングデバイス100が、通信ネットワークに結合されているエンティティと通信することを可能にし得る、1または複数のトランシーバのような機構を含み得る。通信インターフェース180の例には、内蔵型ネットワークアダプタ、ネットワークインターフェースカード(NIC)、パーソナルコンピュータメモリカード国際協会(PCMCIA)ネットワークカード、カードバスネットワークアダプタ、ワイヤレスネットワークアダプタ、ユニバーサルシリアルバス(USB)ネットワークアダプタ、モデム、および/または、コンピューティングデバイス100を通信ネットワークとインターフェース接続するのに適した他のデバイスが含まれ得る。
【0036】
一次記憶装置230および二次記憶装置150は、コンピューティングデバイス100のための情報を保存するべく使用され得る、1または複数のメモリデバイスを含み得る。メモリデバイスは、例えば、メモリデバイス内に保存されている情報へのシリアルアクセス、またはランダムアクセスをサポートし得る。メモリデバイスに保存されている情報へのシリアルアクセスをサポートするメモリデバイスは、シリアルメモリデバイスと称され得る。メモリデバイス内に保存されている情報へのランダムアクセスをサポートするメモリデバイスは、ランダムアクセスメモリ(RAM)デバイスと称され得る。
【0037】
メモリデバイスは、例えば、揮発性メモリデバイス、または、不揮発性メモリデバイスであり得る。揮発性メモリデバイスは、電源をメモリデバイスから除去した後で、デバイス内に保存されている情報を失い得るメモリデバイスであり得る。不揮発性メモリデバイスは、電源をメモリデバイスから除去した後でも、メモリデバイス内に保存されている情報を保持し得るメモリデバイスであり得る。
【0038】
コンピューティングデバイス100で使用され得るメモリデバイスの例には、ダイナミックRAM(DRAM)デバイス、フラッシュメモリデバイス、スタティックRAM(SRAM)デバイス、ゼロキャパシタRAM(ZRAM)デバイス、ツイントランジスタRAM(TTRAM)デバイス、リードオンリーメモリ(ROM)デバイス、強誘電体トランジスタRAM(FeTRAM)デバイス、磁気抵抗性RAM(MRAM)デバイス、相変化メモリ(PCM)デバイス、PCM・スイッチ(PCMS)デバイス、ナノワイヤベースのデバイス、抵抗変化型RAMメモリ(RRAM(登録商標))デバイス、電気的消去可能プログラマブルROM(EEPROM)デバイスが含まれ得るが、これらに限定されない。
【0039】
一次記憶装置230は、メモリバス190を介して、処理論理回路220からアクセス可能であり得る。一次記憶装置230は、オペレーティングシステム(OS)および/またはソフトウェアアプリケーションに関連(例えば実装)し得る、コンピュータ実行可能命令および/またはデータを保存し得る。コンピュータ実行可能命令は、処理論理回路220によって実行、解釈、および/または、他の態様で処理され得る。
【0040】
一次記憶装置230は、処理論理回路220のための情報を保存する1または複数のメモリデバイスを使用して実装され得る。情報には、処理論理回路220によって実行され得る実行可能命令が含まれ得る。また、情報には、処理論理回路220によって操作され得るデータが含まれ得る。メモリデバイスには、揮発性デバイス、および/または、不揮発性メモリデバイスが含まれ得る。
【0041】
上記の通り、一次記憶装置230は、OSと関連するコンピュータ実行可能命令を保存し得る。OSは、様々な従来のオペレーティングシステム機能を実装し得る従来のオペレーティングシステムであり得る。これらの機能には、例えば、(1)処理論理回路220によって実行されるソフトウェアアプリケーションの1または複数の部分のスケジューリング、(2)一次記憶装置230の管理、(3)コンピューティングデバイス100内の様々なコンポーネント(例えば、入力デバイス160、出力デバイス170、通信インターフェース180、二次記憶装置150)、および、これらのコンポーネントによって受信および/または送信される情報へのアクセスの制御が含まれ得る。
【0042】
使用され得るオペレーティングシステムの例には、Linux(登録商標)オペレーティングシステム、Microsoft Windows(登録商標)オペレーティングシステム、Symbian(登録商標)オペレーティングシステム、Mac OS(登録商標)オペレーティングシステム、iOS(登録商標)オペレーティングシステム、Chrome OS(登録商標)、およびAndroid(登録商標)オペレーティングシステムが含まれ得るが、これらに限定されない。使用され得るLinux(登録商標)オペレーティングシステムのディストリビューションは、ノースカロライナ州ローリーのRed Hat Corporationから入手可能なRed Hat Linux(登録商標)である。使用され得るMicrosoft Windows(登録商標)オペレーティングシステムのバージョンには、ワシントン州レドモンドのMicrosoft Inc.から入手可能な、Microsoft Windows Mobile(登録商標)、Microsoft Windows 8.1(登録商標)、Microsoft Windows 8(登録商標)、Microsoft Windows 7(登録商標)、Microsoft Windows Vista(登録商標)、およびMicrosoft Windows XP(登録商標)オペレーティングシステムが含まれる。Symbian(登録商標)オペレーティングシステムは、アイルランドのダブリンにあるAccenture PLCから入手可能である。Mac OS(登録商標)およびiOS(登録商標)オペレーティングシステムは、カリフォルニア州クパチーノにあるApple, Inc.から入手可能である。Chrome OS(登録商標)およびAndroid(登録商標)オペレーティングシステムは、カリフォルニア州メンローパークにあるGoogle, Inc.から入手可能である。
【0043】
また、上記の通り、一次記憶装置230は、ソフトウェアアプリケーションに関連するコンピュータ実行可能命令を保存し得る。アプリケーションは、コンピューティングデバイス100上で実行され得るOSの制御下で実行され得る。アプリケーションおよび/またはOSは、例えば、情報を(例えば、二次記憶装置150から)取得する、および、情報を出力デバイス170上で出力(例えば、表示)する、などの様々な操作を実行するための複数の対応機能を含み得る。これらの対応機能は、アプリケーションおよび/またはOSに含まれるデータおよび/またはコンピュータ実行可能命令を使用することで実装され得る。
【0044】
二次記憶装置150は、コンピューティングデバイス100によって使用され得る情報のための二次記憶装置を提供し得る。情報には、処理論理回路220によって操作され得るデータが含まれ得る。また、情報には、処理論理回路220によって実行される前に一次記憶装置230へ転送され得るコンピュータ実行可能命令が含まれ得る。
【0045】
二次記憶装置150は、情報を保存するのに使用され得るストレージデバイス155を含み得る。ストレージデバイス155は、I/Oバス110を介して、処理論理回路220からアクセス可能であり得る。ストレージデバイス155は、情報のいくつか、またはすべてを保存し得る。
【0046】
ストレージデバイス155は、情報を保存するための揮発性ストレージおよび/または不揮発性ストレージを含み得る。ストレージデバイス155を実装するのに使用され得るデバイスの例には、磁気ディスクドライブ、光学ディスクドライブ、ランダムアクセスメモリ(RAM)ディスクドライブ、フラッシュドライブ、サムドライブ、ソリッドステートディスクドライブSSD、ハイブリッドドライブが含まれるが、これらに限定されない。ストレージデバイス155によって保存される情報は、ストレージデバイス155に含まれる、1または複数の、非一過性で有形のコンピュータ可読媒体に保存され得る。ストレージデバイス155に含まれ得る非一過性で有形のコンピュータ可読媒体の例には、磁気ディスク、光学ディスク、揮発性メモリデバイス、および/または、不揮発性メモリデバイスが含まれ得る。
【0047】
BIOS140は、例えば、コンピューティングデバイス100の1または複数の部分を初期化するのに使用され得るファームウェアを含み得る。ファームウェアは、実行された場合に、例えば、バス190の1または複数の部分をトレーニングおよび/またはテストし得るコンピュータ実行可能命令を含み得る。
【0048】
例えば上記の通り、バス190は、処理論理回路220に含まれ得るメモリコントローラと、一次記憶装置230に含まれ得る1または複数のメモリデバイスとの間で、コマンドのインスタンスを転送するのに使用され得る。BIOS140に含まれるファームウェアは、処理論理回路220によって実行された場合に、例えば、コマンドの1または複数のインスタンスが、メモリコントローラによって、バス190を介してメモリデバイスに対して生成および/または発行されるようにする、コンピュータ実行可能命令を含み得る。コマンドのインスタンスは、メモリコントローラおよび/またはメモリデバイスをトレーニングするのに使用され得る。トレーニングの結果、将来のコマンドのインスタンスは、メモリコントローラとメモリデバイスとの間で誤り無く無事に転送され得る。
【0049】
また、BIOS140は、一次記憶装置230に含まれ得る、1または複数のメモリデバイスにおけるコマンドの特定のインスタンスの実行を無効化するのに使用され得る1または複数の技術をファームウェアに組み入れ得る。これらの技術の詳細は、以下でさらに論じられる。
【0050】
図2は、処理論理回路220および一次記憶装置230の例示的な実施形態を図示する。
図2において、処理論理回路220は、1または複数のコア222a−n、および、メモリコントローラ224を含み得る。一次記憶装置は、1または複数のメモリデバイス300a−nを含み得る。
【0051】
コア222a−nは、例えば、汎用プロセッサコアおよび/またはグラフィックプロセッサコアを実装し得る論理回路を含み得る。論理回路は、例えば、一次記憶装置230、二次記憶装置150、および/または、BIOS140に含まれる情報を、解釈、実行、操作、および/または、他の態様で処理し得る。
【0052】
メモリコントローラ224は、例えば、コア222a−nを一次記憶装置230とインターフェース接続し、情報および/またはコマンドのインスタンスがコア222a−nとメモリデバイス300a−nとの間で転送されることを可能にし得る論理回路を含み得る。この情報は、例えば、コア222a−nによって処理(例えば、実行、操作)され得るデータ、および/または、コンピュータ実行可能命令を含み得る。コマンドのインスタンスには、例えば、メモリデバイス300a−nのうちの1または複数に対し、様々な操作を実行するように命令し得るコマンドのインスタンスが含まれ得る。例えば、コマンドのインスタンスには、メモリデバイス300に対し、上述のように、メモリデバイス300に含まれるメモリセルの行を再マッピングするよう命令するのに使用され得るPPRコマンドのインスタンスが含まれ得る。
【0053】
メモリデバイス300は、コンピューティングデバイス100のための情報を保存するのに使用され得る論理回路を含み得る。情報には、例えば上述のように、データおよび/またはコンピュータ実行可能命令が含まれ得る。
【0054】
メモリデバイス300は、一次記憶装置230の一部であり得るメモリモジュール上に含まれ得る。例えば、メモリデバイス300a−nのうちの1または複数は、一次記憶装置230内に含まれ得る、デュアルインラインメモリモジュール(DIMM)、および/または、シングルインラインメモリモジュール(SIMM)上に含まれ得る。メモリモジュールは、メモリデバイス300とバス190との間に電気接続を提供し得るソケットに差し込まれ得る。
【0055】
メモリデバイス300は、メモリデバイス300に保存されている情報のための揮発性ストレージおよび/または不揮発性ストレージを提供し得る。メモリデバイス300を実装するのに使用され得るメモリデバイスの例には、DRAMデバイス、フラッシュメモリデバイス、SRAMデバイス、ZRAMデバイス、TTRAMデバイス、FeTRAMデバイス、MRAMデバイス、PCMデバイス、PCMSデバイス、ナノワイヤベースのデバイス、RRAM(登録商標)デバイス、EEPROMデバイスが含まれるが、これらに限定されない。例えば、メモリデバイス300は、低消費電力第4世代ダブルデータレート(LPDDR4)DRAMデバイスであり得る。
【0056】
図3は、メモリデバイス300の例示的な実施形態を図示する。
図3において、メモリデバイス300は、例えば、デバイス処理論理回路310およびデバイスストレージ320を含み得る。
【0057】
デバイスストレージ320は、メモリデバイス300に情報を保存し得る論理回路を含み得る。論理回路は、例えば、情報を保存し得る1または複数のメモリセルを含み得る。デバイスストレージ320は、情報のための不揮発性ストレージおよび/または揮発性ストレージを提供し得る。
【0058】
デバイス処理論理回路310は、メモリコントローラ224からメモリデバイスによって取得され得る、コマンドのインスタンス、情報、および/または、信号(例えば、制御信号)を処理し得る論理回路を含み得る。処理には、例えば、メモリコントローラ224からメモリデバイス300へとバス190を介して転送され得るコマンドの様々なインスタンスの実行が含まれ得る。
【0059】
デバイス処理論理回路310は、モードレジスタ400を含み得る。モードレジスタ400は、メモリデバイス300の1または複数の部分の動作モードを指定するのに使用され得るレジスタであり得る。
図4は、モードレジスタ400の例示的な実施形態を図示する。
【0060】
図4において、モードレジスタ400は、1または複数のフィールド410a−nを含み得る。フィールド410は、メモリデバイス300の動作モードを指定するのに使用され得る。例えば、以下でさらに説明するにように、フィールド410は、コマンドがメモリデバイス300内で無効化されているかどうかを指定するのに使用され得る。フィールド410は、メモリデバイス300に関連し得る、他の目的に使用され得ることに留意すべきである。例えば、フィールド410は、メモリデバイス300に関連するカラムアドレスストローブ(CAS)レイテンシ、または、メモリデバイス300に関連するバースト長を指定するのに使用され得る。
【0061】
モードレジスタ400は、メモリデバイス300に関連する1または複数のコマンドを無効化するのに使用され得るフィールド410を含み得る。フィールド410は、メモリデバイス300に関連する特定のイベント(例えば、メモリデバイス300がリセットされる、または、メモリデバイス300に電源サイクルが実行される)が発生するまで、フィールドに保有されている値が存続し得るという点で固着的であり得る。
【0062】
例えば、メモリデバイス300が、PPRコマンドの実行をサポートしていると仮定する。モードレジスタ400内のフィールド410は、メモリデバイス300に対してPPRコマンドの実行が無効化されていることを、アサートされた(例えば、1に設定された)場合に示し得るビットを含み得る。このビットがアサートされた後、メモリデバイス300によって受信されたPPRコマンドのインスタンスは、メモリデバイス300に関連するデバイス処理論理回路310がPPRコマンドのインスタンスを実行しないようにする。メモリデバイス300が、例えば、リセットされるか、または、電源サイクルを実行されるまで、このビットはアサートされた状態を保ち得て、メモリデバイス300に関するPPRコマンドの実行は無効化された状態を保ち得る。例えば、メモリデバイス300は、アサートされた場合にメモリデバイス300をリセットし得るReset_N信号をサポートし得る。Reset_N信号がアサートされるまで、ビットはアサートされた状態を保ってもよく、PPRコマンドは、メモリデバイス300に関して、無効化された状態を保ってもよい。
【0063】
メモリデバイス300に関連する他のコマンドは、同様の方法で無効化され得ることに留意すべきである。例えば、メモリデバイス300は、様々なベンダ固有コマンドをサポートし得る。1または複数のフィールド410は、上述した通り、例えばメモリデバイス300によって取得され得る、サポート対象のベンダ固有コマンドの1または複数のインスタンスの実行を無効化するのに使用され得る。メモリデバイス300に関連する特定のイベントが発生するまで、コマンドは無効化された状態を保つという点で、メモリデバイス300に関連するコマンドを無効化するのに使用され得るフィールド410は、固着的と見なされ得る。
【0064】
例えば、メモリデバイス300などのメモリデバイスは、メモリデバイス300によってサポートされ得るコマンドを無効化するための指示を取得し得る。指示を取得後、メモリデバイスはコマンドを無効化し得る。コマンドの無効化には、例えば、メモリデバイスによって後に取得され得るコマンドのインスタンスをメモリデバイスが実行しないことが含まれ得る。
【0065】
図5は、例えば、メモリデバイス300などのメモリデバイスにおいて、コマンドを無効化するべく実行され得る例示的な動作のフロー図を図示する。
図5のブロック510では、メモリデバイス内でコマンドを無効化する指示が取得され得る。指示には、例えば、メモリデバイスに関連するモードレジスタのフィールドに設定された場合にそのメモリデバイスに対してコマンドを無効化させ得る値が含まれ得る。
【0066】
ブロック512では、メモリデバイスはコマンドを無効化するように構成される。コマンドを無効化するようにメモリデバイスを構成することには、例えば、コマンドが無効化されていることを指示するべく、メモリデバイスに関連するモードレジスタ内のフィールドに値を設定することが含まれ得る。
【0067】
ブロック514では、それ以降コマンドを無効化させないようにするイベントが発生したかどうか判定するためのチェックが実行される。イベントが発生しなかった場合、ブロック516で、コマンドは無効化された状態を保つ。イベントが発生した場合、ブロック518で、それ以降、そのメモリデバイスに対してコマンドは無効化されなくなる。
【0068】
例えば、
図1‐5において、コンピューティングデバイス100内のメモリデバイス300は、PPRコマンドをサポートすると仮定する。さらに、メモリデバイス300は、特定の値に設定された場合にメモリデバイス300内でPPRコマンドを無効化させ得るフィールド410を含むモードレジスタ400を含むと仮定する。
【0069】
処理論理回路220は、フィールド410に設定された場合にメモリデバイス300内でPPRコマンドを無効化させ得る値をメモリコントローラ224に生成させ得る、BIOS140に含まれる1または複数のコンピュータ実行可能命令を実行し得る。加えて、メモリコントローラ224は、値をフィールド410に設定するようメモリデバイス300に命令するのに使用され得るコマンド(例えば、モードレジスタ書き込み(MRW)コマンド)のインスタンスを生成し得る。コマンドのインスタンスおよび値は、メモリコントローラ224からメモリデバイス300へとバス190を介して転送され得る。メモリデバイス300は、コマンドのインスタンスおよび値をバス190から取得し得る。メモリデバイス300に関連する、デバイス処理論理回路310は、コマンドのインスタンスおよび値を処理し得る。処理には、PPRコマンドがそのメモリデバイス300に対して無効化されていることを指示するべく、例えば、値をフィールド410に設定することにより、PPRコマンドを無効化するようにメモリデバイス300を構成することが含まれ得る。
【0070】
ここで、それ以降コマンドを無効化させないようにするイベントが発生したと仮定する。イベントには、例えば、メモリデバイス300の電源サイクル、または、メモリデバイス300のリセットが含まれ得る。イベントが発生すると、メモリデバイスはそれ以降、コマンドが無効化されている状態ではなくなり得る。従って、上の例では、メモリデバイスの電源サイクル、または、メモリデバイス300のリセット後、PPRコマンドが無効化されていないことを指示するように、モードレジスタ400内のフィールド410の値が設定され得る。
【0071】
メモリデバイスが、特定のコマンドの実行を無効化するように構成された後、特定のコマンドのインスタンスがメモリデバイスによって取得された場合、メモリデバイスは、例えば、コマンドのインスタンスを実行し得ない。
図6は、無効化されたコマンドのインスタンスを処理するべく、メモリデバイスによって実行され得る例示的な動作のフロー図を図示する。
【0072】
図6のブロック610で、コマンドのインスタンスが取得される。コマンドのインスタンスは、例えばバス190などのバスからのコマンドのインスタンスを例えば読み込むことによって取得され得る。
【0073】
ブロック612では、コマンドが無効化されているかどうか判定するためのチェックが実行される。コマンドが無効化されていると判定された場合、ブロック614で、コマンドのインスタンスは実行されない。コマンドが無効化されていないと判定された場合、ブロック616で、コマンドのインスタンスは実行される。
【0074】
例えば、
図1‐4および6を参照して、コンピューティングデバイス100内のメモリデバイス300は、PPRコマンドをサポートすると仮定する。さらに、メモリデバイス300は、モードレジスタ400を含むと仮定し、モードレジスタ400は、特定の値に設定された場合にPPRコマンドのインスタンスの実行を無効化するフィールド410を含むと仮定する。ここで、フィールド410は、PPRコマンドが無効化されていることを指示するように設定されていると仮定する。
【0075】
処理論理回路220は、コマンドの様々なインスタンスがメモリコントローラ224によって生成されるようにし得る、BIOS140に含まれる様々な命令を実行し得る。生成されたコマンドのインスタンスは、メモリコントローラ224から、バス190を介して、メモリデバイス300へと転送され得る。メモリデバイス300に関連するデバイス処理論理回路310は、コマンドのインスタンスを取得し、それらを処理し得る。
【0076】
ここで、取得されたコマンドのインスタンスは、デバイス処理論理回路310によって、PPRコマンドとして解釈されると仮定する。デバイス処理論理回路310は、モードレジスタ400内のフィールド410を検査して、PPRコマンドが無効化されていることをフィールド410が指示しているかどうか判定し得る。
【0077】
PPRコマンドが無効化されていると判定した後、デバイス処理論理回路310は、コマンドのインスタンスを実行し得ない。コマンドのインスタンスを実行しないことには、例えば、コマンドのインスタンスの無視、コマンドのインスタンスの破棄、および/または、コマンドのインスタンスを実行しないことに関連する他のいくつかの機能が含まれ得る。
【0078】
実施形態に関する上述の説明は、網羅的であること、または、開示された厳密な形態に本発明を限定することを意図するものではなく、例示および説明を提供することを意図するものである。
【0079】
修正または変更は、上述の教示を考慮することで可能であり、または、本発明の実践から習得され得る。例えば、上述の
図5および6では、一連の動作が説明されているが、動作の順序は、他の実装で修正され得る。さらに、非依存的な動作が並行して実行され得る。
【0080】
また、本明細書で使用される「ユーザ」という用語は、別段の記載が無い限り、広く解釈されることが意図され、例えば、コンピューティングデバイス(例えば、固定型コンピューティングデバイス、モバイル型コンピューティングデバイス)、または、コンピューティングデバイスのユーザが含まれる。
【0081】
本明細書で説明されている1または複数の実施形態は、ソフトウェアおよび/またはハードウェアの多くの異なる形態で実装され得ることが明らかになるであろう。本明細書で説明されている実施形態を実装するのに使用されるソフトウェアコードおよび/または専用のハードウェアは、本発明を限定するものではない。従って、実施形態の操作および挙動は、特定のソフトウェアコードおよび/または専門のハードウェアを参照することなく説明された。当業者であれば、本明細書の説明に基づいて実施形態を実装するべく、ソフトウェアおよび/またはハードウェアを設計可能であることが理解される。
【0082】
さらに、本発明の特定の機能は、例えばデバイス処理論理回路310などの処理論理回路によって実行され得るコンピュータ実行可能命令を使用して実装され得る。コンピュータ実行可能命令は、1または複数の、非一過性で有形のコンピュータ可読記憶媒体に保存され得る。媒体は、揮発性または不揮発性であり得、例えば、DRAMストレージ、SRAMストレージ、および/または、フラッシュメモリストレージを含み得る。
【0083】
本明細書で使用される、如何なる要素、動作、命令も、そのように明示的に説明されている場合を除き、本発明にとって重要または不可欠なものとして解釈されるべきでない。また、本明細書で使用される不定冠詞は、1または複数の品目を含むことが意図されている。1つのみの品目が意図される場合、「1」または同様の言葉が使用される。さらに、「基づく」という語句は、明示的に異なって記載されない限り、「少なくとも部分的に基づく」を意図している。
【0084】
本発明は、上で開示されている特定の実施形態に限定されるものではなく、本発明には、以下の添付されている特許請求の範囲に入る特定の実施形態および均等物のいずれか、および、すべてが含まれることを意図している。