(58)【調査した分野】(Int.Cl.,DB名)
前記第1のメモリ部分および前記第2のメモリ部分は、DRAM(ダイナミックランダムアクセスメモリ)デバイスを有する、請求項1から3のいずれか一項に記載の方法。
ロックステップパートナーとしての前記第1のメモリ部分と第3のメモリ部分との間に前記新しいロックステップパートナーシップを作り出す段階、およびロックステップパートナーとしての前記第2のメモリ部分と第4のメモリ部分との間に前記新しいロックステップパートナーシップを作り出す段階のうちの少なくとも1つが前記ロックステップパートナーシップの粒度レベルを変更する段階を含む、
請求項1から8のいずれか一項に記載の方法。
前記第1のメモリ部分の前記ハードエラーを検出する段階は、異なる粒度レベルにて前記第1のメモリ部分とグループ化され得るメモリ部分のハードエラーを検出する段階を有し、
前記新しいロックステップパートナーシップを作り出す段階は、前記異なる粒度レベルにて前記第1のメモリ部分と前記第3のメモリ部分との間に新しいロックステップパートナーシップを作り出す段階を有する、
請求項9に記載の方法。
前記ハードエラーを検出する段階は、第2のハードエラーを検出する段階を有し、さらに、前記第2のハードエラーを検出する段階の前に、前記第1のメモリ部分か、前記第2のメモリ部分のどちらかにおいて第1のハードエラーを検出する段階と、
前記第1のハードエラーを検出する段階に応答して、ロックステップパートナーとして前記第1のメモリ部分と前記第2のメモリ部分との間に元のロックステップパートナーシップを設定する段階と
を有する、
請求項1から11のいずれか一項に記載の方法。
前記ハードエラーを検出する段階は、前記第2のメモリ部分との予め決定されたロックステップパートナーシップに設定された前記第1のメモリ部分の前記ハードエラーを検出する段階を有する、
請求項1から11のいずれか一項に記載の方法。
前記第1のメモリ部分および前記第2のメモリ部分は、メモリランク、メモリバンクおよびDRAM(ダイナミックランダムアクセスメモリ)デバイスのうちの1つを有する、
請求項14または15に記載のメモリ管理デバイス。
前記エラー訂正ロジックは、ロックステップパートナーとしての前記第1のメモリ部分と第3のメモリ部分との間に前記新しいロックステップパートナーシップを作り出す場合、またはロックステップパートナーとしての前記第2のメモリ部分と第4のメモリ部分との間に、前記新しいロックステップパートナーシップを作り出す場合、少なくとも1つのロックステップパートナーシップの粒度レベルを変更する、
請求項14から18のいずれか一項に記載のメモリ管理デバイス。
前記エラー訂正ロジックは、ロックステップテーブルのロックステップパートナーシップエントリを動的に変更することによって前記新しいロックステップパートナーシップを作り出す、
請求項14から20のいずれか一項に記載のメモリ管理デバイス。
前記エラー検出ロジックは、前記第2のメモリ部分との予め決定されたロックステップパートナーシップに設定された前記第1のメモリ部分の前記ハードエラーを検出する、
請求項14から21のいずれか一項に記載のメモリ管理デバイス。
【発明を実施するための形態】
【0042】
本明細書に説明されるように、メモリサブシステムエラー管理は、ロックステップパートナーシップを動的に変更することを可能にする。ロックステップは、故障メモリリソースへの決定論的データアクセスを妨げる1つのメモリリソースのハード故障を補償する複数のメモリリソースにわたるエラー訂正の分配を指す。ロックステップパートナーシップは、エラーチェックおよび訂正が分配または共有されたメモリの2つの部分を指す。メモリサブシステムは、第1のメモリ部分のハードエラーを検出し、そこで、第1のメモリ部分は第2のメモリ部分とのロックステップパートナーシップに設定され、メモリリソース対にわたりエラー訂正を広げる。ハードエラーの検出に応答して、メモリサブシステムは、第1のメモリ部分と第2のメモリ部分との間のロックステップパートナーシップを逆転し、新しいロックステップパートナーシップを設定することができる。1つの実施形態において、ロックステップパートナーシップは、第2のメモリ部分の故障またはハードエラーの検出に応答して形成される。メモリサブシステムは、ロックステップパートナーとして第1のメモリ部分および第3のメモリ部分間と、ロックステップパートナーとして第2のメモリ部分および第4のメモリ部分間とに新しいロックステップパートナーシップを作り出すことができる。メモリサブシステムはまた、パートナーシップを変更する場合に、ロックステップパートナーシップの粒度を変更するように構成され得る。
【0043】
ロックステップパートナーシップの動的変更は、ロックステップの任意の用途に適用され得る。1つの実施形態において、メモリコントローラは、メモリ部分間のロックステップ関係を表すロックステップテーブルを含む。部分サイズが、ロックステップの実装のために構成され得る。1つの実施形態において、DDDC(二重デバイスデータ訂正)の実装などにおいて、ロックステップ関係が事前設定され得る。従って、検出されたエラーは、特定のロックステップパートナー間で共有されるエラー訂正という結果になる。本明細書にて説明されるように、ロックステップパートナーシップは、動的に逆転および再割り当てされ得る。1つの実施形態において、ADDDC(適応二重デバイスデータ訂正)の実装などにおいて、ロックステップ関係は、第1のエラーが検出されるまで規定されない。そのような実装に関して、ロックステップパートナーの第1の割り当ては、逆転および再割り当てされ得る。もっぱら説明のために、以下の説明の大部分および図面は、ADDDCの実装に言及する。動的なロックステップパートナーシップの変更、またはロックステップ構成の動的変更は、逆転および再割り当てされるように構成され得るロックステップパートナーシップを適用する任意のシステムにて実行され得ることが理解されよう。従って、ADDDCに関連した例は、限定ではなく、例としてのみ理解されよう。
【0044】
図1Aは、動的ロックステップ管理が実装されるチャネル間にキャッシュラインを分配するシステムの実施形態のブロック図である。システム102は、メモリサブシステムの要素を図示する。プロセッサ110は、コードを実行するシステム102のハードウェア処理リソースを表し、メモリ120に格納されるデータおよび/またはコードにアクセスする要求を生成する。プロセッサ110は、中央処理装置(CPU)、グラフィック処理装置(GPU)、特定用途向けプロセッサ、周辺プロセッサ、および/またはメモリ120から読み出し、および/またはメモリ120に書き込む要求を生成することができる他のプロセッサを含み得る。プロセッサ110は、シングルコアプロセッサおよび/またはマルチコアプロセッサであり得るか、またはシングルコアプロセッサおよび/またはマルチコアプロセッサを含み得る。プロセッサ110は、コード実行を通して、メモリ120からデータを読み出す、および/またはデータをメモリ120に書き込む要求を生成する。コードは、プロセッサ110に局所的に格納されるコード、および/またはメモリ120に格納されるコードを含み得る。
【0045】
メモリコントローラ130は、メモリ120へのアクセスを管理するシステム102のロジックを表す。プロセッサ110によって生成されるアクセスリクエストに関して、メモリコントローラ130は、要求をサービス提供するためにメモリ120に送信される1または複数のメモリアクセスコマンドを生成する。1つの実施形態において、メモリコントローラ130は、プロセッサ110およびメモリ120によって共有されるロジックプラットフォーム上のスタンドアロンコンポーネントであり得る。1つの実施形態において、メモリコントローラ130は、プロセッサ110の一部である。1つの実施形態において、メモリコントローラ130は、プロセッサ110とは別個のチップまたはダイであり、システムオンチップ(SoC)としてプロセッサダイ/チップと共に共通の基板上に統合される。1つの実施形態において、メモリ120の1または複数のメモリリソースは、プロセッサ110および/またはメモリコントローラ130と共にSoCにおいて統合され得る。メモリコントローラ130は、メモリリソースへのアクセスの管理と関連してメモリ120の構成と状態を管理する。メモリコントローラ130は、メモリ120の帯域幅の利用を最大化すべく予期される方法にて、コマンドを生成し、データリソースへのアクセスを管理するように構成され得る。
【0046】
1つの実施形態において、メモリコントローラ130は、システム102が複数のチャネル140間にキャッシュラインを分配するスケーラブルメモリバッファまたは他のメモリ構成としてメモリ120を管理する。例えば、2つのチャネル140−0および140−1を有するメモリ120が、図示されている。説明される技術は、より多くのチャネル140にわたって適用され得ることが理解されよう。1つの実施形態において、メモリコントローラ130は、チャネル140−0のDIMM(二重インラインメモリモジュール)142−0上にキャッシュラインの半分を位置付け、チャネル140−1のDIMM140−1上にキャッシュラインの他の半分を位置付けることによって、別個のチャネル間140にキャッシュラインを分配する。より多くのチャネルの使用は、同じ利益を提供し得るが、複数のチャネル間のキャッシュラインの分離を実装するロジックは、修正される必要がある場合がある。チャネル140にわたりロックステップモードのメモリチャネルを実行することにより、DDDC(二重デバイスデータ訂正)を適用することが可能となる利点を有する。ロックステップモードは、ロックステップパートナーシップが設定され、ロックステップパートナーがエラー訂正データを共有する動作状態を指す。各チャネル140は、1または複数のDIMM142を含む。各DIMMは、複数のメモリデバイス144を含む。1つの実施形態において、各メモリデバイス144は、DRAM(ダイナミックランダムアクセスメモリ)チップまたはデバイスである。より簡易なシステム構成において、メモリデバイス126をDIMM142へとさらに分離することを必ずしも必要とすることなく、同様の利益がメモリデバイス126をチャネル140へと分離することによって実現され得ることが理解されよう。
【0047】
1つの例示的な構成において、システム102が2つのチャネル140を含み、この例のために各チャネルが1つのDIMM142を有し、DIMMごとに16個のメモリデバイス126と、CRC(巡回冗長検査)用およびパリティ用にそれぞれ1つのメモリデバイス126とを加えて有すると考える。1つのメモリデバイス126が故障した場合、そのデータは、単一のデバイスデータ訂正(SDDC)を用いて再構成され得る。DDDCに関して、システム102は、メモリコントローラ130を介して、DIMM142の対ごとに4個のメモリデバイス126を用いて、2つのDIMM142からの2つのメモリデバイス126を組み合わせることができる。そのような技術は、32個の「データ」デバイス、CRC(巡回冗長検査)用の2つのデバイス、パリティ用の1つのデバイスおよび1つのスペアデバイスを提供する。メモリデバイス126の1つが故障した場合、スペアデバイスは、故障デバイスを置き換えることができる。1つのメモリデバイス126の故障後に、従来のSDDCが採用され得る。従って、DDDCは、DIMM142上の2つの連続するDRAM故障からの回復、ならびにDIMM142上の後続の単一ビットソフトエラーからの回復を可能にする。
【0048】
システム102は、ハードエラーまたはハード故障を管理すべくADDDC(適応二重デバイスデータ訂正)を実装することができる。ADDDCは、メモリデバイス126用のエラー訂正を提供するロックステップを規定する。ADDDCは、ハード故障に遭遇すると、スペアデバイス用の空間を区分けするためにロックステップを使用することができる。システム102は、ロックステップランク/バンクにおける第1のメモリのデバイスの故障をスペアデバイスに置き換えることができる。メモリ120のランクおよびバンクアーキテクチャに関する更なる詳細は、
図1Bのシステム104のものに基づき得る。ADDDCに関して、ロックステップランク/バンク内の第2の故障は従来、サービスイベントを引き起こすであろう。従って、同じ領域内の第2の故障は通常、サービスコールを引き起こすであろう。1つの実施形態において、ロックステップ構成を動的に変更する能力に関して、ロックステップパートナーシップの第2の故障は概して、2つの故障がロックステップパートナーシップの別個の半体である場合、サービスコールという結果にならない。
【0049】
1つの実施形態において、メモリコントローラ130は、ロックステップ構成を含む、エラー応答を管理するエラーロジック132を含む。1つの実施形態において、ロジック132は、ロックステップパートナーシップを動的に変更することができる。より具体的には、ロジック132は、メモリコントローラが、メモリリソース対にわたりエラー訂正を広げるロックステップパートナーシップを最初に設定する、または作り出し、次にロックステップパートナーシップの付加的なエラーを検出するとロックステップパートナーシップをキャンセルまたは逆転するのを可能にすることができる。ロックステップパートナーシップを逆転した後、エラーロジック132を介したメモリコントローラ130は、サービスコールイベントの生成を防止する付加的なエラーに応答して、1または複数の新しいロックステップパートナーシップを作り出すことができ、または設定することができる。ロックステップパートナーシップを動的に逆転し、1または複数の新しいロックステップパートナーシップを設定することにより、ADDDCの能力を、少なくとももう1つ多い付加的なハードエラーのためにエラー訂正を処理するように拡張することができる。
【0050】
図1Bは、メモリ構造およびロックステップロジックを示す
図1Aのシステムの実施形態のブロック図である。システム104は、
図1Bのシステム102の1つの実施形態である。プロセッサ110は、簡素化のために除去されるが、処理リソースがメモリ120に対するデータアクセスリクエストを生成することは理解されよう。メモリ120がより詳細に図示され、メモリリソースの構成を示す。1または複数のメモリデバイス126は、ランク128においてグループ化される。1つの実施形態において、システム102のDIMM142は、1つまたは2つのランク128を含むことができる。1つの実施形態において、ランク128は、物理ボードまたは基板にわたってメモリデバイスを含むことができる。各メモリデバイス126は、アドレス指定可能なグループの行122またはキャッシュラインである複数のバンク124を含む。1つの実施形態において、行122は、複数のキャッシュラインを含む。1つの実施形態において、それぞれの行122は、キャッシュラインのページを含む。各バンク124は、複数の行122を含むことができる。
【0051】
ADDDCの実装を再度参照すると、システム104(および
図1Aのシステム102)は、ロックステップパートナーを動的に変更することにより改善されたADDDCを提供することができる。ロックステップパートナーを動的に変更することにより、メモリコントローラ130を介したシステム104は、従来サービスコールを必要とするであろう多くの情況でのサービスコールを防止することができる。従って、ADDDCはさらに、ロックステップのペアにおいて付加的なハード故障を切り抜ける能力を提供することによって相当なマージンでサービスレートを改善することができる。ロックステップパートナーは、ロックステップにて動作しているバンク124もしくはランク128の対、または他のメモリ部分を意味する。バンク124および/またはランク128は、メモリ120のDIMMおよび/またはチャネルにわたってロックステップ関係にてパートナーを組み得ることが理解されよう。1つの実施形態において、バンクまたはランクに加えて他の粒度レベルが、ロックステップ動作のために採用され得る。従って、バンクまたはランクレベルの粒度に関する説明は例示的なものと理解されるべきであり、限定されない。
【0052】
たいていのRAS改善においては、関連する記憶容量または性能が犠牲となる。しかしながら、ロックステップパートナーの動的変更により、いずれの設計、性能または容量コストもなく、既存のADDDC実装と作動し、著しくそれを改善することができる。従って、ロックステップパートナーの動的変更は、コンポーネントがサーバシャーシに搭載されるブレードであるスタンドアロンサーバおよび/またはサーバシステムなどのサーバ環境のADDDCに採用され得る。さらに、ロックステップパートナーの変更は、設計更新してレガシーDDDCに適用され得る。
【0053】
従来のADDDC実装は、ロックステップ領域ごとに最大で2つの連続するDRAMデバイス故障までをマッピングする仮想ロックステップを適用することが理解されよう。従来のADDDC実装において、メモリ120は、第1のデバイス故障まで非ロックステップ構成にて開始するであろう。第1のデバイス故障後、メモリコントローラ130は、スペアリングエンジン(具体的に示されないが、エラーマネージャ134の一部とみなされ得る)が、故障領域を仮想ロックステップに変換すべく適用することができる。仮想ロックステップにおいて、キャッシュラインは、2つのメモリ位置にわたる格納状態になる。1つの実施形態において、2つのメモリ位置は、プライマリ位置およびバディ位置と呼ばれ得る。そのような用語が、本明細書にて使用されることになるが、ロックステップパートナーを変更する技術に影響することなく、他の用語が使用され得ることが理解されよう。ロックステップパートナーシップによってカバーされる領域の第2の連続故障は、ADDDC+1モードに移動することによってマッピングされ得る。従来のADDDCに対して、第2の連続故障は、サービスコールが故障メモリを置き換える必要性を引き起こす。
【0054】
本明細書に説明される動的なロックステップパートナーシップの変更を採用するメモリサブシステムは、ロックステップランク/バンクに影響を与える第2の故障の約50%を切り抜けることを可能にしたことが認められた。ロックステップのペアの第2の故障イベントさえも切り抜ける能力を提供することにより、メモリサブシステムに対するRASは著しく改善される。メモリサブシステム用の改善されたRASは、サービスコストを著しく低減することができる。従来のADDDCは、大きな構成に対して10倍にサービスレートを改善することができることが認められた。大きな構成は、多数の構成パラメータを有することになることが理解されよう。従って、サービスレートの正確な数およびサービスレートの改善は、その具体的な構成に基づいてシステムごとに変わることになる。ロックステップパートナーシップの動的変更の使用により多くの場合に、システムが付加的なハード故障を切り抜けるのを可能にし得る(例えば、約50%の確率で)。従って、ロックステップパートナーの動的変更により、さらに5倍の改善を提供し得ることが予期される。見積もりはおおよそであり、メモリ構成に基づいて大きなばらつきがあり得る。
【0055】
1つの実施形態において、メモリコントローラ130はエラーマネージャ134を含み、それは
図1Aのシステム102のエラーロジック132の一部であり得る。1つの実施形態において、メモリコントローラ130はまた、エラーマネージャ134の一部として、および/またはエラーロジック132の一部としてロックステップマッピング136を含む。1つの実施形態において、ロックステップマッピング136は、エラーマネージャ134の一部であるが、それらは必ずしも結合されない。エラーマネージャ134は、メモリコントローラ130がエラーを検出して、エラーに対してエラー訂正を処理すべく適用するADDDC状態を決定するのを可能にする。異なるADDDC状態は、以下の
図2から
図9Iを参照して説明される。ロックステップマッピング136は、メモリのどのメモリ部分がロックステップパートナーとして現在関連付けられるか、または設定されるかのマッピングを規定する。エラーマネージャ134は、現在のエラー訂正レベルまたは現在のロックステップマッピング136が既知のハードエラーを管理するのに十分であるかどうかを決定する決定ロジックを含む。エラーマネージャ134は、既存のロックステップパートナーシップに生じる可能性がある付加的エラーに応答すべく、いつ、どのようにロックステップパートナーシップを変更するかを決定する決定ロジックを含む。
【0056】
1つの実施形態において、エラーマネージャ134は、エラー訂正を処理すべく、仮想ロックステップパートナーを使用するADDDCの実装を適用する。1つの実施形態において、エラーマネージャ134は、仮想ロックステップパートナーでないロックステップパートナーを用いたエラー訂正を適用する。
いずれにせよ、エラーマネージャ134は、ロックステップパートナーシップを逆転し、新しいロックステップパートナーシップを確立するロジックを含む。本明細書に説明されるエラーマネージャ134および/または他のコンポーネントに関して言及される「ロジック」は、ハードウェアおよび/またはソフトウェア(ファームウェアを含む)ロジックを指し得ることは、理解されよう。ロジックは、記述されることを実現すべく動作を実行するように要素を構成する。
【0057】
1つの実施形態において、エラーマネージャ136は、ロックステップマッピング136のロックステップパートナー構成を動的に変更することができる。従来のロックステップシステムにおいて、一度設定するとパートナーシップは、固定される。従って、ロックステップパートナーシップの設定後に生じるエラーは従来、故障部分を置き換えるべくサービスコールを必要とするであろう。本明細書に説明されるように、ロックステップパートナーシップは、取り消され得るか、または逆転され得、次に、新しいロックステップパートナーシップが設定され得る。メモリコントローラ130は、例えば、エラーマネージャ134を介して、ロックステップパートナーシップを設定および未設定にすべく順方向および逆方向のスペアリング動作の両方を実行することができる。
【0058】
スペアリングロジックを有するメモリコントローラは、従来、順方向にてスペアリングすることが可能であり、通常単一の固定粒度にて順方向のスペアリングを実行する。逆スペアリングに関して、メモリコントローラは、ビット、デバイス、キャッシュライン、行、列、バンク、サブランク、ランクおよび二重インラインメモリモジュール(DIMM)などの複数の粒度でメモリスペアリングすることが可能である。逆スペアリングは、メモリコントローラが、以前に実行されたスペアリング動作を逆転する、または取り消すことを可能とし、それにより、ロックステップパートナーシップの変更、および/または故障状態の粒度変更を可能にし得る。逆スペアリングは、N+1故障状態からN故障状態までの移動など、故障状態を後方に移動することを指す。
【0059】
本明細書に使用されるように、「順方向のスペアリング」は、データをメモリの故障領域から物理的に移動すること、および当該データへの後続のアクセスが、故障位置ではなく新しい位置から検索されることとなる新しい位置にデータを格納することを意味し得る。「逆スペアリング」は、データを新しい位置から元の故障位置に物理的に移動することを意味し得る。逆スペアリングは通常、同じか、異なる粒度のどちらかで、別の部分に後続する順方向のスペアリングをする意図でなされるだろう。メモリコントローラ130は、逆スペアリング動作と、後続の順方向のスペアリング動作との間の暫定エラーを訂正するECC(エラー訂正符号化)技術を使用することができる。
【0060】
メモリ120は、キャッシュライン、列、行、バンク、サブランク、ランク、DIMMおよびチャネルのサイズが、最小のものから最大のものまである、アドレス指定可能領域を備えたアーキテクチャを有し得ることが理解されよう。各メモリ故障は、1)影響を受けた特定の領域またはセクションまたは部分、および2)影響を受けた幅(ビット数)を有するものと考えてよい。メモリデバイス126は、受信されたコマンドアドレスをメモリに対する物理的位置に置き換えるアドレスデコーダまたはデコードロジックを含む。
【0061】
上述のように、1つの実施形態において、エラーマネージャ134は、順方向および逆方向の両方にてメモリスペアリング動作を実行するように構成されるメモリスペアリングロジックを含み得る。例えば、メモリスペアリングロジックは、故障状態をNからN+1に移動するバンクレベルなどの第1の粒度レベルにて検出メモリ故障に応答して、最初に順方向のスペアリング動作を実行し得る。エラーマネージャ134は、別の部分にて(例えば、より高い粒度レベルにて、および/またはロックステップパートナーシップの別の部分にて)故障状態を検出した場合、故障レベルをN+1からNに移動する、逆方向のスペアリング動作を実行し得、次に、異なる粒度で、および/または異なるロックステップパートナーシップでNからN+1に故障レベルまたはエラーレベルを移動すべく順方向のスペアリングを実行し得る。
【0062】
メモリデバイスへの言及は、異なるメモリタイプに適用し得る。メモリデバイスは、概して、揮発性メモリ技術を意味する。デバイスに対して電源が遮断されたならば、揮発性メモリは、その状態(ひいては、それに格納されたデータ)が不定となるメモリである。不揮発性メモリは、たとえ電源がデバイスに対して遮断されたとしても、その状態が確定であるメモリを意味する。動的な揮発性メモリは、状態を維持するためにデバイス内に格納されたデータをリフレッシュすることを必要とする。動的な揮発性メモリの1つの例としては、DRAM(ダイナミックランダムアクセスメモリ)、またはシンクロナスDRAM(SDRAM)等のなんらかの変形が挙げられる。本明細書に説明されるメモリサブシステムは、DDR3(2007年6月27日にJEDEC(Joint Electronic Device Engineering Council:電子機器技術評議会)によって元々リリースされ、現在リリース21である、二重データ速度(dual data rate)バージョン3)、DDR4(DDRバージョン4、JEDECによって2012年9月に公表された初期の仕様)、LPDDR3(JEDECによる2013年8月の低電力DDRバージョン3、JESD209−3B)、LPDDR4(2014年8月に元々JEDECによって公表されたLPDDR(LOW POWER DOUBLE DATA RATE(低電力二重データ速度)バージョン4(JESD209−4))、WIO2(2014年8月に元々JEDECによって公表されたワイドI/O2(ワイドIO2)、JESD229−2)、HBM(2013年10月に元々JEDECによって公表されたHIGH BANDWIDTH MEMORY DRAM(高帯域メモリDRAM)(JESD235))、DDR5(DDRバージョン5、JEDECによって現在協議中)、LPDDR5(JEDECによって現在協議中)、WIO3(ワイドI/O3、JEDECによって現在協議中)、HBM2(HBMバージョン2、JEDECによって現在協議中)および/またはその他、ならびにそのような仕様の派生物もしくは拡張に基づく技術等のいくつかのメモリ技術と互換性を有し得る。
【0063】
1つの実施形態において、揮発性メモリに加えて、または、それの代わりに、メモリデバイスへの言及は、たとえ不揮発性メモリデバイスへの電源が遮断されたとしても、その状態が確定する不揮発性メモリデバイスを意味し得る。1つの実施形態において、不揮発性メモリデバイスは、NANDまたはNOR技術等のブロックアドレス指定可能なメモリデバイスである。従って、メモリデバイスはまた、3次元クロスポイントメモリデバイス、または他のバイトアドレス指定可能な不揮発性メモリデバイス等の将来世代の不揮発性デバイスを含み得る。1つの実施形態において、メモリデバイスは、多閾値レベルのNANDフラッシュメモリ、NORフラッシュメモリ、単一または多レベルの相変化メモリ(PCM)、抵抗メモリ、ナノワイヤメモリ、強誘電体トランジスタランダムアクセスメモリ(FeTRAM)、メモリスタ技術を組み入れる磁気抵抗ランダムアクセスメモリ(MRAM)、またはスピントランスファトルク(STT)MRAM、または上記のいずれか、または他のメモリの組み合わせを含み得るか、またはそれらであり得る。
【0064】
図2は、動的ロックステップ管理が実装されるシステムの適応二重デバイスデータ訂正(ADDDC)実装用のステートマシンの実施形態のブロック図である。状態の図表200は、任意の数の可能な状態フローの一例に過ぎないことが理解されよう。図表200にラベルで表される例示的な状態は、
図4A−
図9Iに提示される。
【0065】
1つの実施形態において、状態CB1から開始して(バンク故障のケース1)、AB1に進む(バンク故障CB1のためのアクション1)。AB1から、複数の付加的な故障シナリオがあり得る。より簡易なケースから開始すると、状態は、CB4タイプの後続のエラーについてはAB1からCB4(バンク故障のケース4)に進み、次にAB4(バンク故障CB4のためのアクション4)に進み得る。AB4が一度実行されたなら、後続の故障はサービスコールという結果になるであろう。各ケースにおいて、1つの状態から別の状態への移動は、特定されたハード故障を受けるメモリデバイスと関連付けられるメモリコントローラによって実行されることが理解されよう。代わりに、状態は、CB5タイプの後続のエラーについてはAB1からCB5(バンク故障のケース5)に進み得る。メモリコントローラは、CB5に応答して、AB5(バンク故障CB5のためのアクション5)およびAB6(バンク故障CB5のためのアクション5)として特定される2つのアクションのうちの1つを実行することができる。AB5か、AB6のどちらかが一度実行されたら、後続の故障は、サービスコールという結果になるであろう。
【0066】
代わりに、状態は、CB3タイプの後続のエラーのためにAB1からCB3(バンク故障のケース3)に進み得る。メモリコントローラは、エラー訂正AB3(バンク故障CB3のためのアクション3)を実行することができる。状態AB3での後続のエラーは、CB7(バンク故障のケース7)という結果になり得、それに応答して、メモリコントローラは、AB7のエラー訂正アクション(バンク故障CB7のためのアクション7)を実行することができる。状態AB7から、後続のエラーは、エラータイプに応じて、サービスコールという結果になり得、または、後続のエラー状態CB8(バンク故障のケース8)という結果になり得る。状態CB8に応答して、メモリコントローラは状態AB8のエラー訂正(バンク故障CB8のためのアクション8)を実行することができる。状態AB8後、後続の故障は、サービスコールという結果になるであろう。
【0067】
代わりに、状態は、CB2タイプの後続のエラーについては、AB1からCB2(バンク故障のケース2)に進み得る。メモリコントローラは、2つの異なるエラー訂正アクションのうちの1つ、AB2(バンク故障CB2のためのアクション2)か、AR1(ランク故障のためのアクション1)のどちらかを実行することができる。状態は、CB2タイプの後続のエラーのためにバンク故障からランク故障に変更され得ることが認められよう。図表200にて分かるように、メモリコントローラは、あるいは、最初のCR1タイプのランクエラー(ランク故障のケース1)の結果として状態AR1に到達することができる。
【0068】
状態AB2に戻ると、後続のエラーは、エラータイプに応じて、2つの後続のエラー状態のうちの1つという結果になり得る。従って、状態はAB2からCB10(バンク故障のケース10)に移動することができ、それについては、メモリコントローラは、上述のAR1のエラー訂正を実行し得る。あるいは、状態は、AB2からCB6に移動し得る(バンク故障のケース6)。メモリコントローラは、状態CB6に応答してAR2のエラー訂正(ランク故障のためのアクション2)を実行することができる。図表200から分かるように、状態AR1に続く故障に対して4つの潜在的なエラー状態がある。それらの故障状態のうちの2つは、CR2(ランク故障のケース2)およびCB11(バンク故障のケース11)であり、それらに応答して、メモリコントローラは、上述の状態AR2のエラー訂正を実行することができる。
【0069】
CR2か、CB11のどちらかへの移動の代わりに、AR1に続くエラーは、エラーに応じて、CB9(バンク故障のケース9)またはCR3(ランク故障のケース3)に移動する状態という結果になり得る。エラーが状態CR3という結果になった場合、メモリコントローラは、AR3のエラー訂正(ランク故障のためのアクション3)またはAR4のエラー訂正(ランク故障のためのアクション4)を実行することができる。状態がAR3に移動した場合、後続のエラーは、サービスコールという結果になるであろう。状態CB9に応答して、メモリコントローラは、AR3またはAR4に移動し得、またはAB9のエラー訂正を実行し得る(バンク故障CB9のためのアクション9)。
【0070】
図3は、
図2に特定される状態のロジック表現を示す
図4A−
図9Iの説明文である。テーブル300は、メモリの正常領域の空白ボックス(シェーディングまたはクロスハッチング無)を示す。そのようなメモリのセクションは、故障が無く、ロックステップパートナーシップの一部ではない。最も暗いシェーディングレベル(ほぼブラック)は、新しい故障を示す。最も明るいシェーディングレベル(ほぼグレー)は、ADDDC領域0の状態を表す。従って、最も明るいグレーは、第1のハード故障のためのADDDC状態のプライマリ領域およびバディ領域を示す。
【0071】
次のグレーレベルは、ADDDC領域1の状態を表す。ADDDC領域1は、メモリが既に故障状態ADDDCにある場合の後続の故障のためにパートナーを組まれるプライマリ領域およびバディ領域を指す。次の2つのより暗いシェーディングレベルはそれぞれ、ADDDC+1領域0およびADDDC+1領域1を表す。従って、それらは、後続のエラーに対して昇格させたADDDC状態のためのプライマリ領域およびバディ領域をそれぞれ表す。単一線のクロスハッチは、ある領域の第1の故障(故障0)と宣言されたメモリ部分を表す。二重線のクロスハッチは、その領域の第2の故障(故障1)と宣言されたメモリ部分を表す。
【0072】
図4Aは、最初のバンク故障のロジック表現であり、状態CB1と表される。表された状態の各々は、18個のメモリデバイス(例えば、DRAM)を表示するD[17:0]およびデバイスごとに16個のバンクを表示するB[15:0]を示す。ロジック表現のために、バンク故障は、例において考えられる最も細かい粒度であるが、他の故障粒度は、これらの例に説明される同じ技術に従った特定の実装にて構成され得る。従って、図表は、それぞれがデバイスごとに16個のバンクを有する18個のデバイスのランクを表すが、例は、非限定的である。従って、異なる構成が可能である。(ランクAおよびランクB)の2つのランクは、ロックステップパートナーシップ部分に使用するプライマリランクおよびバディランクの例として示される。CB1は、ランクAのデバイス0のバンク0の最初の故障を示す。
【0073】
図4Bは、最初のバンク故障に応答して領域0のADDDC状態を生成するロックステップアクションのロジック表現であり、状態AB1と表される。メモリコントローラは、ランクAのバンク0(プライマリ領域)のためにバディ領域としてランクBのバンク0を作り出すことによって状態AB1を生成する。ロックステップパートナーシップに関して、メモリサブシステムは、第1のADDDC状態にある。
【0074】
図5Aは、異なるメモリデバイスの異なるバンク故障のロジック表現であり、状態CB3と表わされる。状態CB3は、システムが既にADDDC状態にある場合の後続のバンク故障を示す。従って、ランクAのデバイス0のバンク0は、故障0として示され、ランクのデバイス1のバンク1は、現在検出されたエラーとして示される。従って、CB3のエラーは、同じ(プライマリ)ランクの異なるデバイスの異なるバンクである。
【0075】
図5Bは、異なるメモリデバイスの付加的なバンク故障に応答して領域1のADDDC状態を生成するロックステップアクションのロジック表現であり、状態AB3と表わされる。AB3状態において、メモリコントローラは、バンク0の故障0およびバンク1の故障1を有するADDDC状態を生成し、それらの両方が、エラー訂正のためにランクAとバディランクBとの間で共有される。そのようなエラー部分に対する読み出しは、順方向のスペアリングに関して上述のエラー訂正技術によって処理され得る。
【0076】
図5Cは、領域0および領域1に故障を有するADDDC状態にある場合の異なるメモリデバイスの同じバンク故障のロジック表現であり、状態CB7と表わされる。状態CB7において、後続のエラーは、ランクAのデバイス2のバンク0に生じる。バンク0は既にADDDCによるエラー訂正を受けているので、第2のエラーは、既知のエラー訂正技術によって処理され得る最も多いエラーであることが理解されよう。後続のエラーは、プライマリランクの同じバンクであり、異なるデバイスエラーである。
【0077】
図5Dは、異なるメモリデバイスの同じバンク故障に応答してADDDC+1状態に昇格するロックステップアクションのロジック表現であり、AB7状態と表わされる。状態AB7において、メモリコントローラは、バンク0が故障0および故障1であれば、バンク0の状態をADDDC+1に昇格させる。後続の故障は、処理されることができないので、サービスコールが生成され得る。
【0078】
図5Eは、付加的な領域0故障を有するADDDC+1の状態にある場合の異なるメモリデバイスの付加的な同じバンク故障のロジック表現であり、状態CB8と表わされる。代わりに、後続の故障が、同じバンク1における異なるデバイス3のエラーなど、バンク1の故障1である場合、別個のエラー訂正状態が使用され得る。
【0079】
図5Fは、異なるメモリデバイスの付加的な同じバンク故障に応答して、領域0および領域1の故障を有するADDDC+1状態に昇格するロックステップアクションのロジック表現であり、AB8と表わされる。AB8において、バンク1の状態をADDDC+1に昇格させる。ADDDC+1のバンク0およびADDDC+1のバンク1の両方に対して、後続の故障は、処理されることができないので、サービスコールが生成され得る。
【0080】
図6Aは、領域0の故障を有するADDDC状態にある場合の異なるメモリデバイスにおける同じバンク故障のロジック表現であり、CB4状態と表わされる。状態CB4において、バンク0は、ランクAのデバイス0において故障0を有し、後続の故障は、異なるデバイス1の同じバンク0において検出される。
【0081】
図6Bは、異なるメモリデバイスにおける同じバンク故障に応答して、領域0の故障を有するADDDC+1状態に昇格するロックステップアクションのロジック表現であり、AB4と表わされる。2つの故障領域、故障0および故障1を見つけて、メモリコントローラは、バンク0をADDDC+1に昇格させる。同じバンク0の後続のエラーは、処理可能ではないので、メモリコントローラがサービスコールを発する場合がある。異なるバンクの後続のエラーは、付加的なバンクをADDDCに昇格させ得る。
【0082】
図7Aは、ADDDC状態にある場合のバディ領域の同じバンク故障のロジック表現であり、状態CB5と表わされる。状態CB5において、エラーが既にある。CB5の後続のエラーは、ランクBのデバイス0における同じバンク0である。従って、ランクAおよびBの両方が、バンク0、デバイス0にハードエラーを有する。
【0083】
図7Bは、プライマリ領域およびバディ領域の両方における同じバンクの故障を有するADDDC+1状態に昇格するロックステップアクションのロジック表現であり、AB5と表わされる。状態AB5において、メモリコントローラは、ロックステップパートナーシップの対象であるバンクの2つのエラーに起因してバンク0の状態をADDDCからADDDC+1に昇格させる。
【0084】
図7Cは、バディ領域が共通ランク内でマッピングされたADDDC状態にとどまるべく、ロックステップパートナーシップを再割り当てするロックステップアクションのロジック表現であり、状態AB6と表わされる。状態AB5mの代わりに、1つの実施形態において、状態CB5において検出された後続のエラーに応答して、メモリコントローラは、バンク0、ランクAおよびバンク0、ランクB間のロックステップパートナーシップを逆転し、ロックステップパートナーシップを再割り当てする。より具体的には、1つの実施形態において、メモリコントローラは、ランクAのバンク15をランクAのバンク0のバディ部分またはバディ領域にすることができ、同様に、ランクBのバンク15をランクBのバンク0のバディ部分またはバディ領域にすることができる。バンク15は、一例であり、別のバンクが選択され得る。同じバンクが、ランクの各々にて必ずしも選択される必要はない。ロックステップパートナーシップを再割り当てした後、状態AB6は、両方のランクにおけるバンク0がADDDC+1にあるのではなく、単一のエラーに対するADDDCにおけるランクAのバンク0および15と、単一のエラーを有するADDDC状態のランクBのバンク0および15という結果になる。従って、ロックステップパートナーシップを動的に変更することにより、ADDDCレベルを低減することができ、システムが同じロックステップパートナーシップを保持することを通じて、付加的な後続のエラーを維持することを可能にする。
【0085】
図8Aは、ADDDC状態にある場合の同じデバイス、異なるバンク故障のロジック表現であり、状態CB2と表わされる。CB2状態において、ランクAのデバイス0のバンク0は、既に故障状態にあり、バンク0は、ランクAおよびBにわたってADDDC状態にある。検出される後続の故障は、デバイス0のバンク1における異なるバンクであり、同じデバイス故障である。
【0086】
図8Bは、同じデバイスの付加的なバンク故障に応答して領域1のADDDC状態を生成するロックステップアクションのロジック表現であり、AB2状態と表わされる。状態AB2において、メモリコントローラは、バンク1がプライマリランクAおよびバディランクBに共有された状態で、バンク1をADDDCに昇格させることができる。
【0087】
図8Cは、領域0および領域1の同じバンクに故障を有するADDDC状態にある場合の異なるデバイスの異なるバンク故障のロジック表現であり、状態CB6と表わされる。CB6において、検出される後続のエラーは、デバイス1のバンク2におけるエラーを有する異なるバンクの異なるデバイスエラーである。そのようなエラーは、バンク0およびバンク1が既にADDDC状態にあるので、サービスコールという結果になり得る。1つの実施形態において、メモリコントローラは、バンク0のランクAおよびランクB間のロックステップパートナーシップ、ならびにバンク1のランクAおよびランクB間のロックステップパートナーシップを逆転し得る。メモリコントローラはその後、デバイス0のランクAおよびランクB間のロックステップパートナーシップ、ならびにデバイス1のランクAおよびランクB間のロックステップパートナーシップを作り出し得る。パートナーシップは両方とも、ADDDC状態にあり得る。そのようなアクションは、図示されないが、ロックステップパートナーシップを逆転して、ロックステップの粒度を変更することにより可能である。
【0088】
図8Dは、領域0および領域1の同じバンクに故障を有する、ADDDC状態にある場合に同じデバイスの異なるバンク故障のロジック表現であり、状態CB10と表わされる。状態CB10において、検出される後続のエラーは、同じデバイス0の異なるバンク2である。
【0089】
図8Eは、最初のデバイス故障のロジック表現であり、状態CR1と表わされる。状態CR1において、エラーは、ランクAのデバイス0の全てである。CB10のエラーがデバイス0全体であることを宣言することによって、状態CB10のエラーがどのようにCR1のエラーと一致させられ得るかが認められよう。従って、CB10およびCR1のためのエラー訂正アクションは、同じであり得る。
【0090】
図9Aは、最初のデバイス故障に応答してバディランクのADDDC状態を生成するロックステップアクションのロジック表現であり、状態AR1と表わされる。メモリコントローラは、CB10およびCR1状態のためのエラー訂正として状態AR1を生成することができる。メモリコントローラは、ランクAのためにバディ領域としてランクBを作り出し、そこで、各々の完全なランクがADDDC状態にあることによって示されるように、ランク全体が影響を受ける領域である。故障部分は、ランクAのデバイス0である。
【0091】
図9Bは、ADDDC状態にある場合の故障ランクにおける付加的なデバイス故障のロジック表現であり、状態CR2と表わされる。状態CR2より前の状態は、デバイス0の故障に起因して、ランクAおよびランクBがロックステップパートナーシップ状態にある場合である。検出される後続のエラーは、故障デバイス0を有するランクAのデバイス1である。
【0092】
図9Cは、ADDDC状態の故障ランクにある場合の異なるデバイスの付加的なバンク故障のロジック表現であり、状態CB11と表わされる。状態CB11より前の状態は、デバイス0の故障に起因して、ランクAおよびランクBがロックステップパートナーシップ状態にある場合である。検出される後続のエラーは、故障デバイス0を有するランクAのデバイス1のバンク0における故障である。後続の故障が、故障0とは異なる粒度(より細かい粒度)であることが認められよう。しかしながら、より粗いランク粒度でのADDDC状態は、CB11に表わされるような故障に対してさえも保持され得る。
【0093】
図9Dは、付加的なデバイス故障に応答してADDDC+1状態を生成するロックステップアクションのロジック表現であり、状態AR2と表わされる。状態AR2は、状態CB11か、状態CR2のどちらかに応答するために使用され得ることが、認められよう。状態AR2において、デバイス1は、故障していると宣言され、ランクAおよびBは、ADDDC+1に昇格させられる。1つの実施形態において、状態AR2は、
図9Hに表されるものなど、ランクAおよびBのエラーを異なる(変更)ロックステップパートナーシップにおける他のランクに広げることによって逆転され得る。
【0094】
図9Eは、ADDDC状態にある場合のバディランクにおける同じデバイス故障のロジック表現であり、状態CR3と表わされる。状態CR3において、ランクBのデバイス0は、ランクAおよびランクBがADDDCのロックステップパートナーシップ状態に既にある場合に後続の故障として検出される。従って、ランクBのデバイス0は故障1であり、ランクAのデバイス0は故障0である。
【0095】
図9Fは、ADDDC状態にある場合にバディランクの同じデバイスにおける新しいバンク故障のロジック表現であり、状態CB9と表わされる。状態CB9において、デバイス0のバンク0の故障は、バディランクBの同じデバイス故障である。状態CB9は、たとえ故障が異なる粒度(バンク故障対デバイス故障)であるとしても、CR3故障と等価なロジックと考えてよい。
【0096】
図9Gは、バディランクの付加的なデバイス故障に応答してADDDC+1状態を生成するロックステップアクションのロジック表現であり、状態AR3と表わされる。状態AR3は、状態CR3または状態CB9のための通常のエラー訂正アクションを表わし、そこで、メモリコントローラは、故障デバイスとしてランクBのデバイス0をマッピングする。通常、メモリコントローラはまた、故障領域が第3のデバイス故障を処理することができないので、サービスコールを開始するだろう。
【0097】
図9Hは、バディ領域における同じデバイス故障に応答して、バディ領域が新しいランクにマッピングされたADDDC状態のままであるように、ロックステップパートナーシップを再割り当てするロックステップアクションのロジック表現であり、AR4状態と表わされる。AR3の従来のアクションをとる代わりに、1つの実施形態において、システムは、メモリコントローラが後続の故障に応答して、ロックステップのペアの各半分のために新しいロックステップパートナーを見いだす場合にサービスコールを遅延することができる。同じロックステップ領域の第2のデバイスをマッピングし、故障をADDDC+1に昇格させる代わりに、1つの実施形態において、メモリコントローラは、他のランクにおける新しいロックステップパートナーを見いだす。1つの実施形態において、システムは、領域を非ロックステップ構成に戻す逆スペアリングを採用し、2つの順方向のスペアリング動作が続く。
【0098】
1つの実施形態において、ロックステップパートナーシップを逆転した後(例えば、逆スペアリングを介して)、メモリコントローラは、元の故障0に対するランクAを、利用可能な非故障ランクCに対する新しいロックステップパートナーとして設定する。さらに、元の故障1に対するランクBは、非故障ランクDに対してロックステップパートナーとして適合される。ランクBおよびランクDが現在、ロックステップパートナーであるから、ランクBにおけるデバイス0の故障は現在、故障0である。両方のロックステップパートナーシップが現在、ADDDC状態である。従って、AR4は、2つのデバイスがマッピングされた単一のADDDC+1領域の代わりに、それぞれ1つのデバイスがマッピングされた2つのADDDC領域を作り出す。それゆえ、AR4は、後続の故障のためのサービスコールを遅延することができる。
【0099】
図9Iは、バディ領域の同じデバイスにおける新しいバンク故障に応答して、故障デバイスに対するランクのための新しいバディランクと、以前のバディランク内のバディバンクとに対してADDDC状態に維持するように、ロックステップパートナーシップを再割り当てする、ロックステップアクションのロジック表現であり、状態AB9と表わされる。状態AB9において、状態AR4と同様に、システムは、メモリコントローラが後続の故障に応答して、ロックステップのペアの各半分のために新たなロックステップパートナーを見いだす場合、サービスコールを遅延することができる。AB9においてアドレス指定される故障は、バディランクまたはバディ領域の後続のバンク故障である。従って、メモリコントローラは、ランクB全体を新しい非故障ランクにマッピングする必要はないが、単に故障バンク0のためにロックステップパートナーシップを再マッピングすることができる。
【0100】
1つの実施形態において、ロックステップパートナーシップを逆転した後(例えば、逆スペアリングを介して)、メモリコントローラは、元の故障0に対するランクAを、利用可能な非故障ランクCに対する新しいロックステップパートナーとして設定する。さらに、元の故障1に対するランクBのバンク0は、ランクBの非故障バンク15(または、他のバンク)に対するロックステップパートナーとして適合される。ランクBのバンク0およびバンク15が、新しいロックステップパートナーであるから、バンク0の故障は現在、故障0である。ロックステップパートナーシップの両方は現在、ADDDC状態である。従って、AR4と同様に、状態AB9は、2つのデバイスがマッピングされた単一のADDDC+1領域の代わりに、それぞれ1つのデバイスがマッピングされた2つのADDDC領域を作り出す。それゆえ、AB9は、後続の故障のためのサービスコールを遅延することができる。
【0101】
図10は、ロックステップ構成を動的に管理するためのプロセスの実施形態のフロー図である。プロセス1000は、エラー訂正用のシステムにおいてロックステップパートナーシップを管理すべく、メモリコントローラのエラーエンジンおよび/または他のロックステップ管理ロジックなどのメモリコントローラによって実行され得る。メモリコントローラのエラー検出ロジックは、メモリの第1の部分のハードエラーを検出する、1002。第1の部分は、エラー検出ロジックによって監視される任意の粒度であり得る。1つの実施形態において、ロックステップパートナーシップを通じてエラー訂正を広げるべく、メモリコントローラは、メモリの第1の部分と第2の部分との間にロックステップパートナーを設定する、1004。1つの実施形態において、ロックステップパートナーシップは事前設定される。「第1の部分」においてエラーを検出することに言及する場合、必ずしも第1の部分の全体が故障しているわけではなく、その部分内に故障があるに過ぎないことが理解されよう。例えば、第1の部分は、ランクにおける全てのデバイスにわたるバンク全体となり得、そこで、エラーは、1つの具体的なデバイスの1つのバンクのみにて検出された。第1の部分は、同じサイズの第2の部分とロックステップパートナーとして適合される。
【0102】
エラー訂正を広げるべくロックステップパートナーシップを生成した後、または事前設定されたロックステップパートナーシップを適用した後、エラー検出ロジックは、ロックステップパートナーシップの別のハードエラーを検出する、1006。後続のエラーは、上記のように多くの異なるエラーのいずれかになることができる。ロックステップパートナーシップ外のメモリの部分における後続のエラーは、異なるパートナーシップが作り出されて処理されるか、またはサービスコールで処理されるかのどちらかであり得る。しかしながら、ロックステップパートナーシップに含まれる部分の後続のエラーは、ロックステップパートナーシップの変更によって1つの実施形態において処理され得る。1つの実施形態において、後続のエラーは、第2のエラーが第1のエラーと比較してロックステップパートナーシップの他の半分にて生じる場合、サービスコールなく処理され得る。従って、1つの実施形態において、メモリコントローラは、ロックステップパートナーシップをキャンセルするか、逆転するか、または未設定にする、1008。
【0103】
1つの実施形態において、第2の部分の故障が、既存のマッピングされたデバイスと同じロックステップの半分になく、新しい仮想ロックステップのペアの追加をサポートするのに十分な非故障メモリがある場合、メモリコントローラは、ロックステップパートナーを変更する。1つの実施形態において、メモリコントローラは、仮想ロックステップ(ADDDCなど)をサポートするシステムにおいてロックステップパートナーを動的に変更する。1つの実施形態において、メモリコントローラは、仮想ロックステップ(DDDCなど)ではなく、ロックステップを採用するシステムにおいてロックステップパートナーを動的に変更する。ロックステップ機構と、ロックステップパートナーを変更するための機構は、異なる粒度にて適用され得る。
【0104】
1つの実施形態において、メモリコントローラは、以前のパートナーシップと同じ粒度で新しいロックステップパートナーシップを作り出す、または設定するかどうか、あるいは、異なる粒度の1または複数の新しいパートナーシップを使用するかどうかを決定する、1010。1つの実施形態において、同じ粒度が使用されるべきである場合、1012YES分岐、メモリコントローラは、メモリの第1の部分と第3の非故障部分との間に新しいロックステップパートナーシップを設定する、1014。メモリコントローラは、メモリの全ての部分のステータスログを保持し得、従って一部が故障であるか、または非故障であるかどうかを決定することができる。検出される後続のエラーに応答してロックステップパートナーシップを評価する際に、メモリコントローラは、代わりのロックステップパートナーとして使用すべき非故障部分があるかどうかを決定すべくメモリ部分の状態を評価することができる。1つの実施形態において、メモリコントローラは、メモリの第2の部分との第4の部分との間に新しいロックステップパートナーシップを設定する、1016。再度、同じ粒度が利用されるからには、第3および第4の部分は、第1および第3の部分と同じサイズであることが理解されよう。
【0105】
1つの実施形態において、メモリコントローラは、ロックステップパートナーシップの粒度を変更するように判定する、1012 NO分岐。1つの実施形態において、粒度を変更する場合、メモリコントローラは、第1の部分か第2の部分のどちらかと、異なる粒度の第3の部分との間に新しい粒度で新しいロックステップパートナーシップを設定する、1018。メモリコントローラは次に、他の影響を受けた部分に対して新しいロックステップパートナーシップを設定することができる、1020。他の新しいロックステップパートナーシップは、第1および第2の部分と同じ粒度であり得、異なる粒度でもあり得る。
【0106】
1つの実施形態において、粒度を変更する決定は、より高いまたはより粗い粒度を調整することによって1または複数の以前のエラーで後続のエラーがグループ化され得ることを決定し、より粗い粒度で部分間に新しいロックステップパートナーシップを設定することを含む。従って、例えば、少なくとも1つの故障バンクを既に有する同じDRAMにおける後続のバンク故障に関して、メモリコントローラは、DRAM全体を故障とするように決定することができる。次に、メモリコントローラは、DRAM全体のデータをマッピングすることによって、故障DRAMの非故障DRAMとの連携に基づく新しいパートナーシップを設定することができる。
【0107】
図11は、動的ロックステップ管理が実装され得るコンピューティングシステムの実施形態のブロック図である。システム1100は、本明細書に説明される任意の実施形態によるコンピューティングデバイスを表し、ラップトップコンピュータ、デスクトップコンピュータ、サーバ、ゲームもしくは娯楽制御システム、スキャナ、複写機、プリンタ、ルーティングもしくはスイッチングデバイス、または他の電子デバイスであり得る。システム1100は、システム1100のための命令の処理、動作管理、および実行を提供するプロセッサ1120を含む。プロセッサ1120は、システム1100のための処理を提供する任意のタイプのマイクロプロセッサ、中央処理装置(CPU)、処理コア、または他の処理ハードウェアを含み得る。プロセッサ1120は、システム1100の動作全体を制御し、1または複数のプログラム可能な汎用もしくは専用マイクロプロセッサ、デジタル信号プロセッサ(DSP)、プログラム可能なコントローラ、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)等、またはそのようなデバイスの組み合わせであるか、またはこれらを含み得る。
【0108】
メモリサブシステム1130は、システム1100のメインメモリを表し、プロセッサ1120により実行されるコード、またはルーチンを実行する場合に用いられるデータ値のための一時的ストレージを提供する。メモリサブシステム1130は、リードオンリメモリ(ROM)、フラッシュメモリなどの1または複数のメモリデバイス、1または複数の様々なランダムアクセスメモリ(RAM)、もしくは他のメモリデバイス、またはそのようなデバイスの組み合わせを含み得る。メモリサブシステム1130は、他のもののうち、システム1100において複数の命令を実行するためのソフトウェアプラットフォームを提供するオペレーティングシステム(OS)1136を格納し、ホストする。なお、他の命令1138が格納されて、メモリサブシステム1130から実行され、システム1100のロジックおよび処理を提供する。OS1136および命令1138は、プロセッサ1120により実行される。メモリサブシステム1130は、データ、命令、プログラム、または他のアイテムを格納するメモリデバイス1132を含む。1つの実施形態において、メモリサブシステムは、メモリコントローラ1134を含み、これは、メモリデバイス1132にコマンドを生成して発行するメモリコントローラである。メモリコントローラ1134は、プロセッサ1120の物理的な部分であり得ることが理解されよう。
【0109】
プロセッサ1120およびメモリサブシステム1130は、バス/バスシステム1110に結合される。バス1110は、適切なブリッジ、アダプタ、および/またはコントローラにより接続された任意の1または複数の別個の物理的バス、通信ライン/インターフェース、および/またはポイントツーポイント接続を表す抽象的なものである。従って、バス1110は例えば、システムバス、周辺構成要素相互接続(PCI)バス、ハイパートランスポートもしくは業界標準アーキテクチャ(ISA)バス、小型コンピュータシステムインターフェース(SCSI)バス、ユニバーサルシリアルバス(USB)、または米国電気電子学会(IEEE)規格1394バス(一般に「ファイヤワイヤ」と呼ばれる)のうちの1または複数を含み得る。バス1110におけるバスは、ネットワークインターフェース1150におけるインターフェースにも対応し得る。
【0110】
また、システム1100は、バス1110に結合された1または複数の入力/出力(I/O)インターフェース1140、ネットワークインターフェース1150、1または複数の内部大容量ストレージデバイス1160、および周辺機器インターフェース1170も含む。I/Oインターフェース1140は1または複数のインターフェースコンポーネントを含み得、ユーザはこれを介してシステム1100とインタラクトする(例えば、ビデオ、オーディオ、および/または英数字のインターフェース)。ネットワークインターフェース1150は、1または複数のネットワークを介してリモートデバイス(例えば、サーバ、他のコンピューティングデバイス)と通信する能力をシステム1100に提供する。ネットワークインターフェース1150は、イーサネット(登録商標)アダプタ、無線相互接続コンポーネント、USB(ユニバーサルシリアルバス)、または他の有線もしくは無線規格ベースのインターフェースまたはプロプライエタリインターフェースを含み得る。
【0111】
ストレージ1160は、1または複数の磁気、ソリッドステートもしくは光学ベースのディスク、または組み合わせ等の不揮発性の態様で大量のデータを格納する任意の従来媒体であるか、またはこれらを含み得る。ストレージ1160は、永続的な状態で、コードまたは命令およびデータ1162を保持する(すなわち、値はシステム1100への電力が遮断されても保持される)。ストレージ1160は一般的には「メモリ」とみなされ得るが、メモリ1130は命令をプロセッサ1120に提供する実行メモリまたは動作メモリである。ストレージ1160は不揮発性であるが、メモリ1130は揮発性メモリ(すなわち、システム1100への電力が遮断されると、データの値または状態が不定になる)を含み得る。
【0112】
周辺機器インターフェース1170は、具体的に上述されない任意のハードウェアインターフェースを含み得る。周辺機器は一般に、システム1100に従属的に接続するデバイスを指す。従属的接続は、動作がそれらの上で実行され、ユーザがそれらを用いてインタラクトするソフトウェアおよび/またはハードウェアプラットフォームを、システム1100が提供する接続である。
【0113】
1つの実施形態において、メモリサブシステム1130は、本明細書に説明される任意の実施形態によるメモリ管理となり得るロックステップマネージャ1180を含む。1つの実施形態において、ロックステップマネージャ1180は、メモリコントローラ1134の一部である。マネージャ1180は、順方向および逆方向のスペアリングを実行することができる。特に、マネージャ1180は、ロックステップパートナーシップの割り当てを逆転し、ロックステップパートナーの一方または両方を新しいロックステップパートナーシップに再割り当てする逆スペアリングを採用することができる。1つの実施形態において、システム1100は、シャーシシステムにおいて複数のサーバボードまたはサーバブレードを含むサーバシステムである。各ブレードは、複数のプロセッサ1170および多くのメモリデバイス1132を含むことができる。1つの実施形態において、ロックステップマネージャ1180は、デバイス1132の部分のためにロックステップパートナーシップを動的に変更することができる。
【0114】
図12は、動的ロックステップ管理が実装され得るモバイルデバイスの実施形態のブロック図である。デバイス1200は、コンピューティングタブレット、携帯電話またはスマートフォン、無線対応の電子書籍リーダ、ウェアラブルコンピューティングデバイス、又は他のモバイルデバイスなどのモバイルコンピューティングデバイスを表す。コンポーネントのいくつかが概して示されており、そのようなデバイスの全てのコンポーネントがデバイス1200に示されているわけではないことが理解されよう。
【0115】
デバイス1200は、デバイス1200の主な処理動作を実行するプロセッサ1210を含む。プロセッサ1210は、マイクロプロセッサ、アプリケーションプロセッサ、マイクロコントローラ、プログラマブルロジックデバイス、または他の処理手段などの1または複数の物理的デバイスを含む。プロセッサ1210により実行される処理動作は、アプリケーションおよび/またはデバイス機能が実行されるオペレーティングプラットフォームまたはオペレーティングシステムの実行を含む。処理動作は、人間ユーザまたは他のデバイスとのI/O(入力/出力)に関連する動作、電力管理に関連する動作、および/またはデバイス1200を別のデバイスに接続することに関連する動作を含む。処理動作は、オーディオI/Oおよび/またはディスプレイI/Oに関連する動作も含み得る。
【0116】
1つの実施形態において、デバイス1200は、オーディオサブシステム1220を含み、オーディオサブシステム1220は、オーディオ機能をコンピューティングデバイスに提供することに関連付けられたハードウェア(例えば、オーディオハードウェアおよびオーディオ回路)およびソフトウェア(例えば、ドライバ、コーデック)のコンポーネントを表わす。オーディオ機能は、スピーカおよび/またはヘッドフォン出力、ならびにマイク入力を含み得る。そのような機能のためのデバイスは、デバイス1200へと統合され、またはデバイス1200に接続され得る。1つの実施形態において、ユーザは、プロセッサ1210により受信および処理されるオーディオコマンドを提供することにより、デバイス1200とインタラクトする。
【0117】
ディスプレイサブシステム1230は、ユーザがコンピューティングデバイスとインタラクトする視覚および/または触覚ディスプレイを提供する、ハードウェア(例えば、ディスプレイデバイス)およびソフトウェア(例えば、ドライバ)のコンポーネントを表す。ディスプレイサブシステム1230は、ユーザにディスプレイを提供するために使用される特定のスクリーンまたはハードウェアデバイスを含むディスプレイインターフェース1232を含む。1つの実施形態において、ディスプレイインターフェース1232は、ディスプレイに関連する少なくともいくつかの処理を実行する、プロセッサ1210から独立したロジックを含む。1つの実施形態において、ディスプレイサブシステム1230は、ユーザに対して出力および入力の両方を提供するタッチスクリーンデバイスを含む。1つの実施形態において、ディスプレイサブシステム1230は、出力をユーザに提供する高解像度(HD)ディスプレイを含む。高解像度は、およそ100PPI(インチ当たりの画素数)またはそれ以上の画素密度を有するディスプレイを指し得、フルHD(例えば、1080P)、レティナディスプレイ、4K(超高解像度すなわちUHD)または他のものなどのフォーマットを含み得る。
【0118】
I/Oコントローラ1240は、ユーザとのインタラクションに関連するハードウェアデバイスおよびソフトウェアコンポーネントを表す。I/Oコントローラ1240は、オーディオサブシステム1220および/またはディスプレイサブシステム1230の部分であるハードウェアを管理するように動作し得る。なお、I/Oコントローラ1240は、デバイス1200に接続する追加のデバイスに対する接続ポイントを図示し、ユーザはデバイス1200を介してシステムとインタラクトし得る。例えば、デバイス1200に取り付けられ得るデバイスは、マイクデバイス、スピーカまたはステレオシステム、ビデオシステムまたは他のディスプレイデバイス、キーボードまたはキーパッドデバイス、若しくは他の、カードリーダまたは他のデバイスなど、特定のアプリケーションにおける使用のためのI/Oデバイスを含むかもしれない。
【0119】
上述したように、I/Oコントローラ1240は、オーディオサブシステム1220および/またはディスプレイサブシステム1230とインタラクトし得る。例えば、マイクまたは他のオーディオデバイスを介した入力は、デバイス1200の1または複数のアプリケーションまたは機能に対する入力またはコマンドを提供し得る。なお、ディスプレイ出力に代えて、またはこれに加えてオーディオ出力が提供され得る。別の例において、ディスプレイサブシステムがタッチスクリーンを含む場合、ディスプレイデバイスはまた、I/Oコントローラ1240によって少なくとも部分的に管理され得る入力デバイスとして機能する。I/Oコントローラ1240により管理されるI/O機能を提供するべく、デバイス1200上に追加のボタンまたはスイッチも存在し得る。
【0120】
1つの実施形態において、I/Oコントローラ1240は、デバイス1200に含まれ得る加速度計、カメラ、光センサもしくは他の環境センサ、ジャイロスコープ、全地球測位システム(GPS)、または他のハードウェア等のデバイスを管理する。入力は、直接のユーザインタラクションの部分であると共に、システムの動作に影響する、システムへの環境入力(ノイズに対するフィルタリング、輝度検出のためのディスプレイの調整、カメラのフラッシュの適用、または他の機能等)を提供することの部分であり得る。1つの実施形態において、デバイス1200は、バッテリ電力使用量、バッテリの充電、および省電力動作に関連する機能を管理する電力管理1250を含む。
【0121】
メモリサブシステム1260は、デバイス1200に情報を格納するためのメモリデバイス1262を含む。メモリサブシステム1260は、不揮発性(メモリデバイスへの電源が遮断されても状態が変化しない)および/または揮発性(メモリデバイスへの電源が遮断されると、状態が不定になる)メモリデバイスを含み得る。メモリサブシステム1260は、システム1200のアプリケーションおよび機能の実行に関連するアプリケーションデータ、ユーザデータ、音楽、写真、文書、または他のデータ、ならびにシステムデータ(長期的または一時的であるかに関係なく)を格納し得る。1つの実施形態において、メモリサブシステム1260は、(システム1200の制御の一部ともみなされ得、潜在的にプロセッサ1210の一部とみなされ得る)メモリコントローラ1264を含む。メモリコントローラ1264は、メモリデバイス1262にコマンドを生成して発行するスケジューラを含む。
【0122】
接続1270は、デバイス1200が外部デバイスと通信することを可能にするハードウェアデバイス(例えば、無線および/または有線コネクタ、ならびに通信ハードウェア)およびソフトウェアコンポーネント(例えば、ドライバ、プロトコルスタック)を含む。外部デバイスは、他のコンピューティングデバイス、無線アクセスポイントまたは基地局等の別個のデバイス、ならびにヘッドセット、プリンタ、または他のデバイス等の周辺機器であり得る。
【0123】
接続1270は、複数の異なるタイプの接続を含み得る。一般化するべく、デバイス1200はセルラー接続1272および無線接続1274と共に図示される。セルラー接続1272は一般に、セルラーネットワーク接続を指し、GSM(登録商標)(モバイル通信のためのグローバルシステム)または改変形態もしくは派生物、CDMA(code division multiple access)または改変形態もしくは派生物、TDM(time division multiplexing)または改変形態もしくは派生物、LTE(long term evolution、「4G」とも呼ばれる)、または他のセルラーサービス規格を介して提供されるもの等、無線キャリアにより提供される。無線接続1274は、セルラーでない無線接続を指し、パーソナルエリアネットワーク(Bluetooth(登録商標)など)、ローカルエリアネットワーク(WiFi(登録商標)など)、および/またはワイドエリアネットワーク(WiMax(登録商標)など)、または他の無線通信を含み得る。無線通信は、非固体媒体を介して変調電磁放射の使用によるデータ転送を指す。有線通信は、固体通信媒体を介して行われる。
【0124】
周辺接続1280は、周辺接続を行うハードウェアインターフェースおよびコネクタ、ならびにソフトウェアコンポーネント(例えば、ドライバ、プロトコルスタック)を含む。デバイス1200は、他のコンピューティングデバイスに対する周辺デバイス(「to」1282)であり得ると共に、それに接続された周辺デバイスを有するもの(「from」1284)でもあり得ることを理解されよう。一般に、デバイス1200は、デバイス1200上のコンテンツの管理(例えば、ダウンロードおよび/またはアップロード、変更、同期)などを目的として他のコンピューティングデバイスに接続する「ドッキング」コネクタを有する。なお、ドッキングコネクタは、デバイス1200がコンテンツの出力を制御することを可能にする特定の周辺機器、例えば、オーディオビジュアルシステムまたは他のシステムに、デバイス1200が接続することを可能にし得る。
【0125】
独自のドッキングコネクタまたは他の独自の接続ハードウェアに加えて、デバイス1200は一般的または規格ベースのコネクタにより周辺接続1280を行い得る。共通なタイプは、ユニバーサルシリアルバス(USB)コネクタ(複数の異なるハードウェアインターフェースのいずれかを含み得る)、ミニディスプレイポート(MDP)を含むディスプレイポート、高解像度マルチメディアインターフェース(HDMI(登録商標))、ファイヤワイヤまたは他のタイプを含み得る。
【0126】
1つの実施形態において、メモリサブシステム1260は、本明細書に説明される任意の実施形態によるメモリ管理となり得るロックステップマネージャ1266を含む。1つの実施形態において、ロックステップマネージャ1266は、メモリコントローラ1264の一部である。マネージャ1266は、順方向および逆方向のスペアリングを実行することができる。特に、マネージャ1266は、ロックステップパートナーシップの割り当てを逆転し、ロックステップパートナーの一方または両方を新しいロックステップパートナーシップに再割り当てする逆スペアリングを採用することができる。
【0127】
1つの態様において、メモリサブシステムのエラーを管理するための方法は、
第2のメモリ部分とのロックステップパートナーとしてロックステップパートナーシップに設定された第1のメモリ部分のハードエラーを検出する工程であって、エラー訂正は、ロックステップパートナーにわたって広げられる、工程と、
ハードエラーの検出に応答して、第1のメモリ部分と、第2のメモリ部分との間のロックステップパートナーシップをキャンセルする工程と、
ロックステップパートナーとしての第1のメモリ部分と第3のメモリ部分との間に新しいロックステップパートナーシップを作り出す工程と、
ロックステップパートナーとしての第2のメモリ部分と第4のメモリ部分との間に新しいロックステップパートナーシップを作り出す工程と
を含む。
【0128】
1つの実施形態において、ハードエラーを検出する工程は、ロックステップパートナーシップの第2のハードエラーを検出する工程を含む。1つの実施形態において、ロックステップパートナーシップは、ハードエラーがスペアメモリ部分にマッピングされた仮想ロックステップパートナーシップを含む。1つの実施形態において、第1および第2のメモリ部分は、メモリランクを含む。1つの実施形態において、第1および第2のメモリ部分は、メモリバンクを含む。1つの実施形態において、第1および第2のメモリ部分は、DRAM(ダイナミックランダムアクセスメモリ)デバイスを含む。1つの実施形態において、第1および第2のメモリ部分は、別個のランクにDRAMデバイスを含む。1つの実施形態において、第3および第4のメモリ部分は、異なるランクにDRAMデバイスを含む。1つの実施形態において、ロックステップパートナーとしての第1のメモリ部分と第3のメモリ部分との間に新しいロックステップパートナーシップを作り出す工程、およびロックステップパートナーとしての第2のメモリ部分と第4のメモリ部分との間に新しいロックステップパートナーシップを作り出す工程のうちの少なくとも1つがロックステップパートナーシップの粒度レベルを変更する工程を含む。1つの実施形態において、第1のメモリ部分のハードエラーを検出する工程は、異なる粒度レベルにて第1のメモリ部分とグループ化され得るメモリ部分にハードエラーを検出する工程を含み、
新しいロックステップパートナーシップを作り出す工程は、異なる粒度レベルにて第1のメモリ部分と第3のメモリ部分との間に新しいロックステップパートナーシップを作り出す工程を含む。1つの実施形態において、新しいロックステップパートナーシップを作り出す工程は、ロックステップテーブルのロックステップパートナーシップエントリを動的に変更する工程を含む。1つの実施形態において、ハードエラーを検出する工程は、第2のハードエラーを検出する工程を含み、さらに、第2のハードエラーを検出する工程の前に、第1のメモリ部分か、第2のメモリ部分のどちらかにおいて第1のハードエラーを検出する工程と、第1のハードエラーを検出する工程に応答して、ロックステップパートナーとして第1のメモリ部分と第2のメモリ部分との間に元のロックステップパートナーシップを設定する工程とを含む。1つの実施形態において、ハードエラーを検出する工程は、第2のメモリ部分との予め決定されたロックステップパートナーシップに設定された第1のメモリ部分のハードエラーを検出する工程を含む。
【0129】
1つの態様において、関連付けられるメモリサブシステムのエラーを管理するためのメモリ管理デバイスは、
メモリサブシステムの第1のメモリ部分のハードエラーを検出するエラー検出ロジックであって、第1のメモリ部分は、第2のメモリ部分とのロックステップパートナーとしてロックステップパートナーシップに設定され、エラー訂正は、ロックステップパートナーにわたって広げられる、エラー検出ロジックと、
第1のメモリ部分におけるハードエラーの検出に応答して、第1のメモリ部分と第2のメモリ部分との間のロックステップパートナーシップをキャンセルし、ロックステップパートナーとしての第1のメモリ部分と第3のメモリ部分との間に新しいロックステップパートナーシップを作り出し、およびロックステップパートナーとしての第2のメモリ部分と第4のメモリ部分との間に、新しいロックステップパートナーシップを作り出すエラー訂正ロジックと
を含む。
【0130】
1つの態様において、メモリ管理デバイスは、それぞれがメモリアレイを含む複数のDRAM(ダイナミックランダムアクセスメモリデバイス)を含むメモリサブシステムのメモリコントローラに含まれ、メモリアレイは、複数の異なる粒度レベルに従ってアドレス指定可能であり、メモリコントローラは、メモリサブシステムの第1のメモリ部分のハードエラーを検出するエラー検出ロジックであって、第1のメモリ部分は、第2のメモリ部分とのロックステップパートナーとしてロックステップパートナーシップに設定され、エラー訂正は、ロックステップパートナーにわたって広げられる、エラー検出ロジックと、
第1のメモリ部分におけるハードエラーの検出に応答して、第1のメモリ部分と第2のメモリ部分との間のロックステップパートナーシップをキャンセルし、ロックステップパートナーとしての第1のメモリ部分と第3のメモリ部分との間に、およびロックステップパートナーとしての第2のメモリ部分と第4のメモリ部分との間に、新しいロックステップパートナーシップを作り出すエラー訂正ロジックであって、メモリサブシステムは、ブレードサーバに結合すべくシャーシシステムへと組み込まれる。
【0131】
1つの実施形態において、ロックステップパートナーシップは、ハードエラーがスペアメモリ部分にマッピングされた仮想ロックステップパートナーシップを含む。1つの実施形態において、第1および第2のメモリ部分は、メモリランク、メモリバンクおよびDRAM(ダイナミックランダムアクセスメモリ)デバイスのうちの1つを含む。1つの実施形態において、第1および第2のメモリ部分は、別個のランクにDRAMデバイスを含む。1つの実施形態において、第3および第4のメモリ部分は、異なるランクにDRAMデバイスを含む。1つの実施形態において、エラー訂正ロジックは、ロックステップパートナーとしての第1のメモリ部分と第3のメモリ部分との間に新しいロックステップパートナーシップを作り出す場合、およびロックステップパートナーとしての第2のメモリ部分と第4のメモリ部分との間に、新しいロックステップパートナーシップを作り出す場合、少なくとも1つのロックステップパートナーシップの粒度レベルを変更する。1つの実施形態において、エラー検出ロジックは、異なる粒度レベルにある第1のメモリ部分とグループ化され得るメモリ部分のハードエラーを検出し、エラー訂正ロジックは、異なる粒度レベルにて第1のメモリ部分と第3のメモリ部分との間に新しいロックステップパートナーシップを作り出す。1つの実施形態において、エラー訂正ロジックは、ロックステップテーブルのロックステップパートナーシップエントリを動的に変更することによって新しいロックステップパートナーシップを作り出す。1つの実施形態において、エラー検出ロジックは、第2のハードエラーであり、さらに、第2のハードエラーの検出の前に、エラー検出ロジックは、第1のメモリ部分か、第2のメモリ部分のどちらかに第1のハードエラーを検出し、エラー訂正ロジックは、第1のハードエラーの検出に応答して、ロックステップパートナーとしての第1のメモリ部分と第2のメモリ部分との間に元のロックステップパートナーシップを設定することと、を含む。1つの実施形態において、エラー検出ロジックは、第2のメモリ部分との予め決定されたロックステップパートナーシップに設定される第1のメモリ部分においてハードエラーを検出する。
【0132】
1つの態様において、メモリサブシステムのエラーを管理するための装置は、第2のメモリ部分に対してロックステップパートナーとしてロックステップパートナーシップに設定される第1のメモリ部分のハードエラーを検出するための手段であって、エラー訂正が、ロックステップパートナーにわたってと広げられる、手段と、ハードエラーの検出に応答して、第1のメモリ部分と、第2のメモリ部分との間のロックステップパートナーシップをキャンセルするための手段と、ロックステップパートナーとしての第1のメモリ部分と第3のメモリ部分との間に新しいロックステップパートナーシップを作り出すための手段と、ロックステップパートナーとしての第2のメモリ部分と第4のメモリ部分との間に新しいロックステップパートナーシップを作り出すための手段とを含む。装置は、上記に述べた方法の任意の実施形態による動作を実行するための手段を含むことができる。
【0133】
1つの態様において、それに格納されるコンテンツを有するコンピュータ可読記憶媒体を含む製造物品は、アクセスされた場合、ロックステップパートナーとしてロックステップパートナーシップに設定された第1のメモリ部分のハードエラーを第2のメモリ部分で検出することであって、エラー訂正は、ロックステップパートナーにわたって広げられることと、ハードエラーの検出に応答して、第1のメモリ部分と、第2のメモリ部分との間のロックステップパートナーシップをキャンセルすることと、ロックステップパートナーとしての第1のメモリ部分と第3のメモリ部分との間に新しいロックステップパートナーシップを作り出すことと、ロックステップパートナーとしての第2のメモリ部分と第4のメモリ部分との間に新しいロックステップパートナーシップを作り出すこととを含む動作をマシンに実行させる。製造物品は、上記に述べた方法の任意の実施形態による動作を実行するためのコンテンツを含むことができる。
【0134】
1つの態様において、メモリサブシステムのエラーを管理するための方法は、第1のメモリ部分のハードエラーを検出する工程と、ロックステップパートナーとしての第1のメモリ部分と第2のメモリ部分との間にロックステップパートナーシップを設定する工程であって、エラー訂正は、第1のメモリ部分と第2のメモリ部分とにわたって広げられる、工程と、ハードエラーを第2のメモリ部分で検出する工程と、第2のメモリ部分のハードエラーの検出に応答して、第1のメモリ部分と第2のメモリ部分との間のロックステップパートナーシップを逆転する工程と、ロックステップパートナーとしての第1のメモリ部分と第3のメモリ部分との間に新しいロックステップパートナーシップを設定する工程と、ロックステップパートナーとしての第2のメモリ部分と第4のメモリ部分との間に新しいロックステップパートナーシップを設定する工程とを含む。
【0135】
1つの実施形態において、ハードエラーを検出する工程は、ロックステップパートナーシップの第2のハードエラーを検出する工程を含む。1つの実施形態において、ロックステップパートナーシップは、ハードエラーがスペアメモリ部分にマッピングされた仮想ロックステップパートナーシップを含む。1つの実施形態において、第1および第2のメモリ部分は、メモリランクを含む。1つの実施形態において、第1および第2のメモリ部分は、メモリバンクを含む。1つの実施形態において、第1および第2のメモリ部分は、DRAM(ダイナミックランダムアクセスメモリ)デバイスを含む。1つの実施形態において、第1および第2のメモリ部分は、別個のランクにDRAMデバイスを含む。1つの実施形態において、第3および第4のメモリ部分は、異なるランクのDRAMデバイスを含む。1つの実施形態において、ロックステップパートナーとしての第1のメモリ部分と第3のメモリ部分との間に新しいロックステップパートナーシップを設定する工程、およびロックステップパートナーとしての第2のメモリ部分と第4のメモリ部分との間に新しいロックステップパートナーシップを設定する工程の少なくとも1つがロックステップパートナーシップの粒度レベルを変更する工程を含む。1つの実施形態において、第1のメモリ部分のハードエラーを検出する工程は、異なる粒度レベルにて第1のメモリ部分とグループ化され得るメモリ部分にハードエラーを検出する工程を含み、新しいロックステップパートナーシップを設定する工程は、異なる粒度レベルにて第1のメモリ部分と第3のメモリ部分との間に新しいロックステップパートナーシップを設定する工程を含む。1つの実施形態において、新しいロックステップパートナーシップを設定する工程は、ロックステップテーブルのロックステップパートナーシップエントリを動的に変更する工程を含む。1つの実施形態において、第1のメモリ部分と第2のメモリ部分との間にロックステップパートナーとして元のロックステップパートナーシップを設定する工程は、適応二重デバイスデータ訂正(ADDDC)動作を実装する工程を含む。
【0136】
1つの態様において、関連付けられるメモリサブシステムのエラーを管理するためのメモリ管理デバイスは、
メモリサブシステムの第1のメモリ部分の第1のハードエラーを検出し、続いて第2のハードエラーを検出するエラー検出ロジックと、
第1のハードエラーの検出に応答して、ロックステップパートナーとしての第1のメモリ部分と第2のメモリ部分との間にロックステップパートナーシップを設定し、第1および第2のメモリ部分にわたってエラー訂正を広げ、続く第2のハードエラーの検出に応答して、第1および第2のメモリ部分間のロックステップパートナーシップを逆転するとともに、続く第2のハードエラーの検出に応答して、ロックステップパートナーとしての第1のメモリ部分と第3のメモリ部分との間に、ロックステップパートナーとしての第2のメモリ部分と第4のメモリ部分との間に新しいロックステップパートナーシップを設定するエラー訂正ロジックと
を含む。
【0137】
1つの態様において、メモリ管理デバイスは、それぞれがメモリアレイを含む複数のDRAM(ダイナミックランダムアクセスメモリデバイス)を含むメモリサブシステムのメモリコントローラに含まれ、メモリアレイは、複数の異なる粒度レベルに従ってアドレス指定可能であり、メモリコントローラは、メモリサブシステムの第1のメモリ部分の第1のハードエラーを検出し、続いて第2のハードエラーを検出するエラー検出ロジックと、第1のハードエラーの検出に応答して、ロックステップパートナーとしての第1のメモリ部分と第2のメモリ部分との間にロックステップパートナーシップを設定し、第1および第2のメモリ部分にわたってエラー訂正を広げ、続く第2のハードエラーの検出に応答して、第1および第2のメモリ部分間のロックステップパートナーシップを逆転するとともに、続く第2のハードエラーの検出に応答して、ロックステップパートナーとしての第1のメモリ部分と第3のメモリ部分との間に、ロックステップパートナーとしての第2のメモリ部分と第4のメモリ部分との間に新しいロックステップパートナーシップを設定するエラー訂正ロジックとを含み、メモリサブシステムは、ブレードサーバに結合すべくシャーシシステムへと組み込まれる。
【0138】
1つの実施形態において、ロックステップパートナーシップは、ハードエラーがスペアメモリ部分にマッピングされる仮想ロックステップパートナーシップを含む。1つの実施形態において、第1および第2のメモリ部分は、メモリランク、メモリバンクおよびDRAM(ダイナミックランダムアクセスメモリ)デバイスのうちの1つを含む。1つの実施形態において、第1および第2のメモリ部分は、別個のランクにDRAMデバイスを含む。1つの実施形態において、第3および第4のメモリ部分は、異なるランクにDRAMデバイスを含む。1つの実施形態において、エラー訂正ロジックは、ロックステップパートナーとしての第1のメモリ部分と第3のメモリ部分との間に新しいロックステップパートナーシップを設定する場合、またはロックステップパートナーとしての第2のメモリ部分と第4のメモリ部分との間に、新しいロックステップパートナーシップを設定する場合、少なくとも1つのロックステップパートナーシップの粒度レベルを変更する。1つの実施形態において、エラー検出ロジックは、異なる粒度レベルにある第1のメモリ部分とグループ化され得るメモリ部分にハードエラーを検出し、エラー訂正ロジックは、異なる粒度レベルにて第1のメモリ部分と第3のメモリ部分との間に新しいロックステップパートナーシップを設定する。1つの実施形態において、エラー訂正ロジックは、ロックステップテーブルのロックステップパートナーシップエントリを動的に変更することによって新しいロックステップパートナーシップを設定する。1つの実施形態において、エラー訂正ロジックは、適応二重デバイスデータ訂正(ADDDC)動作の実装として、ロックステップパートナーとしての第1のメモリ部分と第2のメモリ部分との間に元のロックステップパートナーシップを設定する。
【0139】
本明細書において図示されるフロー図は、一連の様々な処理動作の例を提供する。フロー図は、ソフトウェアまたはファームウェアルーチンにより実行されるべき動作、ならびに物理的動作を示し得る。1つの実施形態において、フロー図は、ハードウェアおよび/またはソフトウェアの形で実装され得る有限ステートマシン(FSM)の状態を示し得る。特定のシーケンスまたは順序で示されているが、別途指定されない限り、動作の順序は変更され得る。従って、図示される実施形態は、もっぱら例として理解されるべきであり、処理は異なる順序で実行され得、いくつかの動作は並行して実行され得る。なお、1または複数の動作は、様々な実施形態において省略され得る。従って各実施形態において、全ての動作が必要とされるわけではない。他のプロセスフローも可能である。
【0140】
様々な動作または機能が本明細書に説明される限りにおいて、動作または機能は、ソフトウェア、コード、命令、構成、および/またはデータとして説明され、または定義され得る。コンテンツは、直接に実行可能なもの(「オブジェクト」または「実行可能な」形式)、ソースコード、または差分コード(「デルタ」または「パッチ」コード)であり得る。本明細書に説明される実施形態におけるソフトウェアコンテンツは、コンテンツが格納された製造物品を介して、または通信インターフェースを介してデータを送信するように通信インターフェースを動作させる方法により提供され得る。機械可読ストレージ媒体は、説明される機械に機能または動作を実行させ得、記録可能/記録不可能な媒体(例えば、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージ媒体、光ストレージ媒体、フラッシュメモリデバイス等)などの機械(例えば、コンピューティングデバイス、電子システム等)によりアクセス可能な形態で情報を格納する任意のメカニズムを含む。通信インターフェースは、メモリバスインターフェース、プロセッサバスインターフェース、インターネット接続、ディスクコントローラなどのような別のデバイスに通信するハードワイヤード、無線、光などの媒体のいずれかにインターフェースで接続する任意の機構を含む。通信インターフェースは、構成パラメータを提供し、および/または信号を送信して、通信インターフェースがソフトウェアコンテンツを説明するデータ信号を提供するように準備することにより構成され得る。通信インターフェースは、通信インターフェースに送信される1または複数のコマンドまたは信号によりアクセスされ得る。
【0141】
本明細書に説明される様々なコンポーネントは、説明される動作または機能を実行するための手段であり得る。本明細書に説明される各コンポーネントは、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む。これらのコンポーネントは、ソフトウェアモジュール、ハードウェアモジュール、専用ハードウェア(例えば、特定用途向けハードウェア、特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)等)、エンベデッドコントローラ、ハードワイヤード回路等として実装され得る。
【0142】
本明細書において説明されるもの以外にも、本発明において開示される実施形態および実装に対して、その範囲を逸脱することなく様々な変更が行われ得る。従って、本明細書における図示および例は、限定的な意味ではなく例示的な意味に解釈されるべきである。本発明の範囲は、以下の特許請求の範囲を参照することのみにより評価されるべきである。