JP2015535101A - 高信頼性メモリコントローラ - Google Patents

高信頼性メモリコントローラ Download PDF

Info

Publication number
JP2015535101A
JP2015535101A JP2015536838A JP2015536838A JP2015535101A JP 2015535101 A JP2015535101 A JP 2015535101A JP 2015536838 A JP2015536838 A JP 2015536838A JP 2015536838 A JP2015536838 A JP 2015536838A JP 2015535101 A JP2015535101 A JP 2015535101A
Authority
JP
Japan
Prior art keywords
address space
memory
data
address
banks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015536838A
Other languages
English (en)
Other versions
JP6101807B2 (ja
Inventor
エイチ. ロー ガブリエル
エイチ. ロー ガブリエル
ケイ. スリドハルン ヴィラス
ケイ. スリドハルン ヴィラス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2015535101A publication Critical patent/JP2015535101A/ja
Application granted granted Critical
Publication of JP6101807B2 publication Critical patent/JP6101807B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

集積回路は、アドレス空間を有するメモリと、受信したメモリアクセスに応じてアドレス空間にアクセスするために、メモリに接続されたメモリコントローラと、を含む。メモリコントローラは、アドレス空間の第1の部分内の複数のデータ要素と、アドレス空間の第2の部分内の、複数のデータ要素に対応する信頼性データと、にアクセスする。【選択図】図3

Description

本開示は、概して、集積回路に関し、より詳細には、メモリコントローラを有する集積回路に関する。
消費者は、より高性能、かつ、より低コストのコンピュータシステムを要求し続けている。より高性能という要件に対処するために、コンピュータチップの設計者は、単一のチップ上に複数のプロセッサコアを有する集積回路を開発した。また、マルチコア集積マイクロプロセッサ及び関連するメモリチップを単一のコンポーネントとしてパッケージした種々のダイスタックド集積技術が開発されている。しかしながら、メモリチップは、種々の障害状態に陥りやすい。スタックドダイ構成で用いられるメモリチップでは、永続的な障害が起こる場合に、スタック内の全ての他のチップを交換せずに、メモリチップを容易に交換することはできない。
アドレス空間を有するメモリと、受信したメモリアクセスに応じてアドレス空間にアクセスするために、メモリに接続されたメモリコントローラと、を含む集積回路が提供される。メモリコントローラは、前記アドレス空間の第1の部分内の複数のデータ要素と、前記アドレス空間の第2の部分内の、前記複数のデータ要素に対応する信頼性データと、にアクセスする。
メモリアクセス生成回路と、メモリコントローラと、を含む集積回路も提供される。メモリアクセス生成回路は、メモリのアドレス空間におけるデータ要素に関するメモリアクセスを生成する。メモリコントローラは、受信したメモリアクセスに応じてアドレス空間にアクセスするために、メモリに接続されている。メモリコントローラは、アドレス空間の第1の部分内の複数のデータ要素と、アドレス空間の第2の部分内の、前記複数のデータ要素に対応する信頼性データと、にアクセスする。
第1のデータ要素に関する書き込みアクセスをリクエスタから受信する方法が提供される。信頼性データはデータ要素に関して計算される。データ要素はアドレス空間の第1の部分に格納され、信頼性データはアドレス空間の第2の部分に格納される。
いくつかの実施形態に係る物理的メモリを実装する第1のマルチチップモジュールの斜視図である。 いくつかの実施形態に係る物理的メモリを実装する第2のマルチチップモジュールの斜視図である。 いくつかの実施形態に係る高信頼性メモリコントローラを有する集積回路を示すブロック図である。 いくつかの実施形態に係る図3のメモリのアドレス空間の表現を示す図である。 いくつかの実施形態に係る図3のメモリのアドレス空間の別の表現を示す図である。 いくつかの実施形態に係る図3のメモリのアドレス空間の別の表現を示す図である。 いくつかの実施形態に係る図3のメモリのアドレス空間の別の表現を示す図である。 いくつかの実施形態に係るデータを書き込む方法のフロー図である。 いくつかの実施形態に係るデータを読み出す方法のフロー図である。
以下の説明では、異なる図面における同じ符号の使用は、同様の又は同一のアイテムを示す。特に言及されない限り、「結合される」という用語及びこれに関連する動詞形は、当該技術分野では周知の手段による直接接続および間接電気接続の両方を含み、特に言及されない限り、直接接続についてのどの説明も、適切な形態の間接電気接続を同様に用いる代替的な実施形態を意味する。
図1は、いくつかの実施形態に係る物理的メモリを実装する第1のマルチチップモジュールの斜視図である。マルチチップモジュール100は、概して、マルチコアプロセッサチップ120と、メモリチップスタック140と、を含む。メモリチップスタック140は、積層された複数のメモリチップを含む。図1に示すように、メモリチップスタック140は、メモリチップ142と、メモリチップ144と、メモリチップ146と、メモリチップ148と、を含む。一般に、メモリチップスタック140は、図1に示されるよりも多い又は少ないメモリチップを含んでもよいことに留意されたい。メモリチップスタック140の各メモリチップは、適正なシステム動作のために所望によりメモリチップスタック140内の他のメモリチップに接続されている。また、メモリチップスタック140の各メモリチップは、適正なシステム動作のために所望によりマルチコアチップ120に接続されている。
マルチチップモジュール100のコンポーネントは、動作中に、単一の集積回路パッケージとして組み合わされ、メモリチップスタック140およびマルチコアチップ120は、ユーザからは単一の集積回路のように見える。マルチコアチップ120へのメモリチップスタック140の電気接続は、水平相互接続と組み合わせた垂直相互接続(例えば、バイア又はシリコンスルーホール)を用いて実現される。マルチコアプロセッサダイ120は、メモリチップスタック140のメモリチップより厚く形成されており、メモリチップスタック140を物理的に支持する。マルチチップモジュール100は、5つのチップの各々と比べた場合に、概してコンポーネントアクセス時間を減少させ、かつ、システム性能を増加させながら、システムコストおよび広いスペースを節約する。しかしながら、メモリチップは、種々の信頼性問題に陥る。例えば、環境内で自然発生し又は半導体パッケージング材料から放出されるアルファ粒子などのバックグラウンド放射線は、ビットセルに当たって値を乱すことがある。メモリの繰り返し使用も他の障害を引き起こすことがある。例えば、特定の重要なデバイスにおけるエレクトロマイグレーションは、当該デバイスの摩耗を引き起こすことがあり、当該デバイスは事実上より薄くなり、これにより当該デバイスの抵抗が増加し、最終的にはタイミング誤差を引き起こし、不正確な値が読み出されることになる。他のタイプの障害も起こりうる。メモリチップが故障した場合、故障したメモリチップを交換する実用的な方法が存在しない。代わりに、ユーザは、まだ機能しているメモリ及びプロセッサチップの全てを含むパッケージ全体を交換しなければならず、これは効果なオプションとなる。
図2は、いくつかの実施形態に係る物理的メモリを実装する第2のマルチチップモジュール200の斜視図である。マルチチップモジュール200は、概して、インターポーザ210と、マルチコアプロセッサチップ220と、メモリチップスタック240と、を含む。インターポーザ210は、マルチコアチップ220のアクティブ側に接続されている。メモリチップスタック240は、積層された複数のメモリチップを含む。図2に示すように、メモリチップスタック240は、メモリチップ242と、メモリチップ244と、メモリチップ246と、メモリチップ248と、を含む。一般に、メモリチップスタック240は、図2に示すよりも多い又は少ないメモリチップを含んでもよいことに留意されたい。メモリチップスタック240の各々のメモリチップは、適正なシステム動作のために所望によりメモリチップスタック240の他のメモリチップに接続されている。また、メモリチップスタック240各々の各メモリチップは、適正なシステム動作のために所望によりマルチコアチップ220に接続されている。いくつかの実施形態では、メモリチップスタック240は単一のメモリチップを含む。いくつかの実施形態では、マルチチップモジュール200は、メモリチップスタック240のように、1つよりも多いメモリチップのスタックを含む。
マルチチップモジュール200のコンポーネントは、動作中に、単一のパッケージ(図2には図示せず)として組み合わされ、これにより、メモリチップスタック240およびマルチコアチップ220は、ユーザからは単一の集積回路のように見える。マルチコアチップ220へのメモリチップスタック240の電気接続は、水平相互接続と組み合わせた垂直相互接続(例えばバイア又はシリコンスルーホール)を用いて実現される。インターポーザ210は、メモリチップスタック240の各々のメモリチップと、マルチコアチップ220との接続を容易にするために、物理的支持およびインターフェースの両方を提供する。5つのチップの各々と比べた場合に、マルチチップモジュール200は、概してコンポーネントアクセス時間を減少させ、かつ、システム性能を増加させながら、システムコストおよび広いスペースを節約する。マルチチップモジュール200は、マルチコアプロセッサ220からメモリチップスタック240を分離し、これにより、マルチコアプロセッサ220のより良好な冷却を可能にする。しかしながら、マルチチップモジュール200は、パッケージ全体を交換せずに、欠陥のあるメモリチップを容易に交換することができないので、信頼性問題及びサービス性問題に悩まされる。
図3は、いくつかの実施形態に係る高信頼性メモリコントローラを有する集積回路300を示すブロック図である。集積回路300は、概して、単一の集積回路ダイ上に実装されたマルチコアプロセッサ310と、メモリ350と、を含む。
マルチコアプロセッサ310は、メモリアクセス生成回路320と、キュー332と、クロスバースイッチ(XBAR)334と、高速入力/出力(I/O)コントローラ336と、メモリコントローラ340と、を含む。メモリアクセス生成回路320は、「CPU」と表記された中央処理装置(CPU)コア322と、「CPU」と表記されたCPUコア324と、を含む。CPUコア322,324は、メモリアクセスを行うとともに、メモリアクセスを定義するアドレス、データ及び制御信号を送受信する。キュー332は、CPUコア322と、CPUコア324と、XBAR334と、に接続されている。XBAR334は、高速I/Oコントローラ336と、メモリコントローラ340と、に接続されている。高速I/Oコントローラ336は、「I/O」と表記された周辺装置(図3には示されていない)に対して外部信号のセットを送受信するために、入力/出力(I/O)ポートを有している。
メモリコントローラ340は、誤り訂正符号(ECC)/巡回冗長符号(CRC)計算(「comp」)回路342と、ダイナミックランダムアクセスメモリ(DRAM)スケジューラ344と、物理的インターフェース(PHY)346と、を含む。ECC/CRC comp回路342及びDRAMスケジューラ344の各々は、PHY346に接続されている。PHY346は、「制御」と表記された信号のセットを提供するための出力と、「BA」と表記されたバンクアドレス信号のセットを提供するための出力と、「アドレス」と表記された信号のセットを提供するための出力と、「データ」と表記された信号のセットを送受信するためのI/Oポートと、を有している。
メモリ350は、アドレス空間を画定し、DRAM352と、DRAM354と、DRAM356と、DRAM358と、を含む複数のダイナミックランダムアクセスメモリ(DRAM)チップを含む。メモリ350は、図1のメモリチップスタック140又は図2のメモリチップスタック240の何れかによって実装されてもよい。DRAM352,354,356,358は、JEDECによって公開されたDDR3ダブルデータレート(DDR)規格に準拠しているが、他の実施形態では、他のDDR規格及び非DDR規格に準拠してもよい。概して、DDRチップの各々は、メモリバンクのセットを有している。メモリ350の各DRAMチップは、制御を受信するための入力と、BAを受信するための入力と、アドレスを受信するための入力と、データを送受信するためのI/Oポートと、を有している。
CPUコア322およびCPUコア324の両方は、動作中に、1つ以上のプログラムに対応する命令をフェッチする機能と、当該命令を実行する機能と、メモリアクセス要求をキュー332に提供することによって当該命令に関連するデータにアクセスする機能と、を有している。キュー332は、I/Oコントローラ336又はメモリコントローラ340にディスパッチするために、アクセスを記憶する。キュー332は、データアクセスに対して、先入れ先出し方式で優先順位を付ける。
XBAR334は、メモリアクセス生成回路320と、キュー332と、高速I/Oコントローラ336と、メモリコントローラ340と、を含むマルチコアプロセッサ310の回路、および、これらに関連したバスを切り換えるとともに多重化する。高速I/Oコントローラ336は、XBAR334と、イーサネット(登録商標)コントローラなどの外部回路との間の接続を提供する。
メモリコントローラ340は、メモリアクセス要求に応じて、メモリ350のアドレス空間内の記憶位置にアクセスする。メモリコントローラ340は、正常なデータと、データに関する特別な信頼性情報と、を標準的な既製のメモリチップに格納することによって、高い信頼性を保証する。信頼性データ情報は、ビットエラーの検出と、当該ビットエラーの可能な訂正と、を可能にする。メモリコントローラ340は、信頼性データを、低コストコモディティのメモリに格納することによって、マルチコアプロセッサ310が低価格のマルチチップモジュールのスタックドダイと一体化されるのを可能にする。
以下により詳細に説明されるように、メモリコントローラ340は、アドレス空間の第1の部分におけるデータ要素と、アドレス空間の第2の部分における前記データ要素に対応する信頼性データと、にアクセスする。メモリコントローラ340は、メモリ350に格納する信頼性データを、ECC/CRC comp回路342を用いて生成し、その後、格納された信頼性データに対してチェックを行うために、信頼性データを計算する。ECC/CRC comp回路342は、DRAMスケジューラ344によってアクセスされたデータを、信頼性データを用いてチェックし、適切な場合には、当該データのエラーを選択的に訂正し、訂正されたデータを、リクエストしているCPUに転送する。
PHY346は、ECC/CRC comp回路342及びDRAMスケジューラ344の、マルチバンクメモリ350へのインターフェースを提供する。PHY346は、データにアクセスするために、標準的な制御信号、BA信号及びアドレス信号を、メモリ350に提供する。概して、メモリコントローラ340は、読み出しアクセス要求に応じて、アドレス空間の第1の部分からデータ要素を読み出し、アドレス空間の第2の部分から信頼性データを読み出すように、PHY346を制御する。ECC/CRC comp回路342は、受信したデータに基づいて信頼性を生成し、メモリコントローラ340は、生成した信頼性データを、検索した信頼性データと比較して、データが適正に読み出されたかどうかを判定する。メモリコントローラ340は、書き込みアクセス要求に応じて、データ要素に関する信頼性データを生成するようにECC/CRC comp回路342を制御し、データ要素をアドレス空間の第1の部分に書き込み、かつ、信頼性データをアドレス空間の第2の部分に書き込むように、PHY346を制御する。異なるレベルの信頼性をサポートするために、メモリコントローラ340がメモリ350のアドレス空間を生成及び管理する方法が以下に記載される。
図4は、いくつかの実施形態に係る図3のメモリのアドレス空間400の表現を示す図である。アドレス空間400は、概して、「バンク0」と表記されたメモリバンク410と、「バンク1」と表記されたメモリバンク420と、「バンク2」と表記されたメモリバンク430と、「バンク3」と表記されたメモリバンク440と、を含む連続したメモリバンクの間でアドレスの連続した部分を含む。
メモリバンク410は、「A」と表記された代表的なメモリページ412と、「B」〜「P」と連続して表記された複数の付加的かつ例示的なメモリページとを含む、複数の4キロバイト(KB)メモリページを含む。
メモリバンク420,430,440は、同様に、複数の4KBメモリページを含む。ここで、メモリバンク440は、連続するデータ部分442と、全てのメモリバンクに関する信頼性データを格納するための連続する信頼性部分444と、を含む。信頼性部分444は、「E」と表記された代表的なメモリページ446と、「E」と表記された代表的なメモリページと、を含む。メモリページ446は、メモリページA〜Hのデータ要素に対応する、「E」〜「E」と連続して表記された信頼性データを含む。
メモリコントローラ340は、動作中に、アドレス空間400の第1の部分(例えば、最上位、又は、より下位のアドレス)におけるデータ要素にアクセスし、かつ、アドレス空間400の第2の部分(例えば、最下位、又は、より上位のアドレス)、すなわち信頼性部分444における、データ要素に対応する信頼性データにアクセスする。例えば、メモリバンク410は、4KBメモリページに編成されている。図4は、アドレスの連続する部分における代表的なページA〜Hを示している。メモリバンク440において、メモリコントローラ340は、アドレスの連続する部分444内のページA〜Hのデータグループに対応する信頼性データE〜Eを含む信頼性データグループEに関する1つの4KBメモリページ446にアクセスする。
同様に、メモリコントローラ340は、メモリバンク410において、アドレスの連続する部分におけるページI〜Pのデータグループに関する8つの4KBメモリページにアクセスする。また、メモリコントローラ340は、メモリバンク440において、信頼性部分444内のページI〜Pのデータグループに対応する信頼性データ(図4には具体的に示されていない)を含む信頼性データグループEに関する1つの4KBメモリページにアクセスする。
アドレス空間400は、アドレス空間400の端部の連続する部分に信頼性データを配置することによって線形データアドレス空間を提供し、これにより、アドレス空間の「穴(holes)」を回避する。アドレス空間400は、種々のタイプの信頼性データをサポートする。例えば、ある規格では、64のデータビットにつき8の信頼性ビット(合計72ビット)を有する、例えば(72,64)SECDEDコードなどの有用なシングルエラー訂正、ダブルエラー検出(SECDED)コードを規定している。ECC/CRC comp回路342は、SECDEDを用いて、シングルエラーを検出及び訂正し、かつ、ダブルエラーを検出するが訂正しない機能を有する。他の周知のコードに関して、ECC/CRC comp回路342は、2つ以上のエラーを検出及び/又は訂正する機能を有する。アドレス空間400は、システムの信頼性のニーズに基づき使用される信頼性コードのタイプに基づいて、信頼性部分444のサイズが変更されるのを可能にする。
しかしながら、メモリコントローラ340は、全ての信頼性データを単一のメモリバンクに配置することによって、いくつかのシステムのアクセス待ち時間を、許容できないほど増加させる場合がある。例えば、複数のバンクにおいてページを同時に開いた状態に維持するシステムでは、メモリコントローラ340が単一のバンク440と異なるバンクへのアクセスのために信頼性データにアクセスする場合に、信頼性部分444へのアクセスが「ボトルネック」を引き起こす。マルチコアプロセッサ310は、このボトルネックを補償するために、他の機構を組み込むことが可能である点に留意されたい。例えば、メモリコントローラ340又はメモリアクセス生成回路320などの回路は、信頼性データをプリフェッチし、信頼性データをローカルキャッシュに格納することができる。以下により十分に述べられるように、メモリコントローラ340は、1つよりも多いシングルバンクに信頼性データを分散させることによって、信頼性データにアクセスするための待ち時間を補償することができ、又は、データ要素及び信頼性データをメモリバンク間で交互に格納することもできる。
図5は、いくつかの実施形態に係る図3のメモリのアドレス空間500の別の表現を示す図である。アドレス空間500は、概して、「バンク0」と表記されたメモリバンク510と、「バンク1」と表記されたメモリバンク520と、「バンク2」と表記されたメモリバンク530と、「バンク3」と表記されたメモリバンク540と、を含む連続したメモリバンクの間でアドレスの連続した部分を含む。
メモリバンク510は、「A」〜「D」と連続して表記された4つの代表的なメモリページ516を含む、連続するデータ部分512内の複数のメモリページを含む。また、バンク510は、信頼性部分514内のメモリページを含む。信頼性部分514内の各ページは、メモリページA〜Dのデータ要素に対応する、「E」と表記された代表的な信頼性データ518と「E」〜「E」と連続して表記された信頼性データとを含む、信頼性データを含む。また、同様に、メモリバンク520,530,540の各々は、データ部分522,532,542と信頼性部分524,534,544とを含む。信頼性部分524,534,544内の各ページは、それぞれデータ部分522,532,542内のデータ要素に対応する信頼性データを含む。
メモリコントローラ340は、動作中に、各メモリバンクの第1の部分内のデータ要素と、同じメモリバンクの第2の部分内のデータ要素に対応する信頼性データとにアクセスする。例えば、メモリコントローラ340は、データ部分510のメモリページ516内のデータ要素A,B,C,Dと、信頼性部分514のメモリページ518内の信頼性データE〜Eとにアクセスする。これにより、メモリコントローラ340は、データと、当該データに対応する信頼性データとを、単一のメモリバンクに格納する。同様に、メモリコントローラ340は、データ部分522,532,542内のデータ要素のために、メモリバンク520,530,540にアクセスする。また、メモリコントローラ340は、信頼性部分524,534,544内の信頼性データのために、メモリバンク520,530,540にアクセスする。
全体として、アドレス空間500は、メモリバンク510〜540間で分散された不連続のデータ部分と、同様にメモリバンク510〜540間で分散された不連続の信頼性部分と、を有する。メモリコントローラ340は、メモリバンクの最初の(100−X)%からデータ要素にアクセスし、かつ、同じメモリバンクの最後のX%から信頼性データにアクセスする。例えば、メモリコントローラ340が(64,72)SECDEDコードを用いる場合には、X=12.5%である。アドレス空間500は、単一の線形データ空間を含まないが、信頼性データを、対応するデータと同じメモリバンクに配置することによって、メモリ空間500は、図4のメモリ空間400に関連したボトルネックを回避する。
図6は、いくつかの実施形態に係る図3のメモリのアドレス空間600の別の表現を示す図である。アドレス空間600は、概して、「バンク0」と表記されたメモリバンク610と、「バンク1」と表記されたメモリバンク620と、「バンク2」と表記されたメモリバンク630と、「バンク3」と表記されたメモリバンク640と、を含む連続したメモリバンクの間でアドレスの連続する部分を含む。
アドレス空間600は、「A」〜「R」と表記された代表的なメモリ列を含む複数のメモリ列であって、データを格納し、かつ、4つのメモリバンク間で分散された複数のメモリ列を含む。また、アドレス空間600は、データに関する信頼性コードを格納する複数のメモリ列であって、メモリバンク間で分散され、かつ、データ要素を有する列とインターリーブされる複数のメモリ列を含む。これらの列の各々は、他の列のデータ要素に対応する信頼性データを有する。
特に、メモリバンク610は列611〜615を含み、メモリバンク620は列621〜625を含み、メモリバンク630は列631〜635を含み、メモリバンク640は列641〜645を含む。アドレス空間600において、データはメモリバンク間で分散される。したがって、データ要素Aはバンク610の列611に格納され、データ要素Bはバンク620の列621に格納され、データ要素Hがバンク640の列642に格納されるまで同様である。ここで、8つのデータ要素がこの方法で列に分散された後に、列に対応する信頼性データのセットが格納される。したがって、メモリバンク610は、列A〜Hのデータ要素に対応する「E〜E」と表記された信頼性データを列613に含む。
バンク610〜640は、データ要素Iを格納するバンク620の列623で始まり、データ要素Jを格納するバンク630の列633、データ要素Pを格納するバンク610の列615まで同様の連続した位置に、8つの後続のデータ要素I〜Pを格納する。メモリバンク620の列625は、列I〜P内のデータ要素に対応する「E〜E」と表記された信頼性データを格納する。
メモリコントローラ340は、動作中に、アドレス空間600内の連続したメモリバンク610〜640間で、データ要素を、当該データ要素に対応する信頼性データとインターリーブする。メモリコントローラ340は、連続してアドレス指定されたある数のデータ要素を有するデータグループの各データ要素を、複数のバンクのうち連続したバンク間で格納し、かつ、グループの全てのデータ要素に関する信頼性データを、次の連続したバンクに格納する。例えば、メモリコントローラ340は、メモリバンク610〜640間の列611,621,631,641,612,622,632,642内の第1の8つのデータグループに水平にアクセスする。メモリコントローラ340は、列A〜H内の第1の8つのデータグループに対応する信頼性データを格納する列613であって、8番目のデータグループの後の列613に配置された信頼性データE〜Eにアクセスする。また、メモリコントローラ340は、メモリバンク610〜640間の列623,633,643,614,624,634,644,615内の第2の8つのデータグループに水平にアクセスする。また、メモリコントローラ340は、列I〜P内の第2の8つのデータグループに対応する信頼性データを格納する列625であって、第2の8つのデータグループの後の列625内の信頼性データE〜Eにアクセスする。
連続したメモリバンク間で、データ要素を、当該データ要素に対応する信頼性データとインターリーブすることによって、メモリコントローラ340は、特定のメモリアクセスに関する信頼性データが、対応するデータを格納するメモリバンクと同じメモリバンクに格納されることになる機会を低減する。DDR DRAMでは、新しいページにアクセスする前に、バンクにプレチャージコマンドを発行することによって前のページが閉じられなければならず、かつ、アクティブ化コマンドを発行することによって新しいページが開かれなければならない。したがって、データと当該データに対応する信頼性データとが同じバンクに格納されることになる確率を低減させることによって、アドレス空間600は、データ及び当該データに対応する信頼性データにアクセスするのに必要な平均時間を減少させる。
図7は、いくつかの実施形態に係る図3のメモリのアドレス空間700の別の表現を示す図である。アドレス空間700は、概して、「チャネル0」と表記されたメモリチャネル710と、「チャネル1」と表記されたメモリチャネル720と、データ要素730と、信頼性データ740と、を含む。メモリチャネル710は、「バンク0」〜「バンク7」と連続して表記されたメモリバンク711〜718を含む複数のメモリバンクを含む。
メモリバンク711は、データバイト「A[7]」〜「A[0]」を含む「A」と表記されたデータグループを含む。メモリバンク712〜718の各々は、8バイトを有し、かつ、メモリバンク711と同様の態様で配列されたデータグループを含む。メモリバンク712は、データバイト「B[7]」〜「B[0]」を含む「B」と表記されたデータグループを含む。メモリバンク713は、データバイト「C[7]」〜「C[0]」を含む「C」と表記されたデータグループを含む。メモリバンク714は、データバイト「D[7]」〜「D[0]」を含む「D」と表記されたデータグループを含む。メモリバンク715は、データバイト「E[7]」〜「E[0]」を含む「E」と表記されたデータグループを含む。メモリバンク716は、データバイト「F[7]」〜「F[0]」を含む「F」と表記されたデータグループを含む。メモリバンク717は、データバイト「G[7]」〜「G[0]」を含む「G」と表記されたデータグループを含む。メモリバンク718は、データバイト「H[7]」〜「H[0]」を含む「H」と表記されたデータグループを含む。
メモリチャネル720は、「バンク0」と表記された代表的なメモリバンク721と、「バンク1」と表記された代表的なメモリバンクとを含む、複数のさらなるメモリバンクを含む。メモリバンク721は、「ECCコンポーネント」と表記された信頼性データコンポーネントを含む。
データ要素730は、8つの代表的なデータバイトであるコンポーネント[0]〜コンポーネント[7]を含む。
メモリコントローラ340は、動作中に、メモリチャネル710間でデータ要素730の一部をインターリーブし、データ要素730に関する信頼性データを、さらなるメモリバンク721に格納する。例えば、メモリコントローラ340は、データ要素730のコンポーネント[0]をバンク711のA[0]に格納し、データ要素730のコンポーネント[1]をバンク712のB[0]に格納し、データ要素730のコンポーネント[2]をバンク713のC[0]に格納し、以降同様に、データ要素730のコンポーネント[7]をバンク718のH[0]に格納する。メモリコントローラ340は、データコンポーネント[7]〜データコンポーネント[0]に対応する信頼性データコンポーネント740を、さらなるメモリバンク721のバイト位置[0]に格納する。
メモリチャネルのバンク間でデータ要素のバイトをインターリーブし、信頼性データバイトをさらなるメモリチャネルのバンクに格納することによって、メモリコントローラ340は、単一のバンクが故障した場合のデータの復元を可能にする。
しかしながら、メモリコントローラ340は、他の十分に機能しているメモリバンクにおいて、故障しているメモリバンクのデータコンポーネントを再度生成する能力を有する。例えば、メモリコントローラ340は、データ要素の各コンポーネントをメモリバンクに格納し、各コンポーネントを、さらなるメモリバンクからの信頼性データコンポーネントでカバーするので、故障しているメモリバンクの全てのデータ要素コンポーネントは、さらなるバンクからの関連する信頼性データによってカバーされる。例えば、メモリコントローラ340は、SECDEDコードを用いて、故障しているバンク内の全てのデータ要素を検出し、訂正し、再度生成する機能を有する。
上記の図4〜図7で開示された構成などの構成を用いることによって、マルチコアプロセッサ310は、低価格な既製のメモリを用いて、メモリチップを追加することなく、システムの信頼性、可用性及びサービス性を高める。
図8は、いくつかの実施形態に係るデータを書き込む方法800のフロー図である。アクションボックス810では、データ要素に関する書き込みアクセスをリクエスタから受信する。アクションボックス820では、データ要素に関する信頼性データが計算される。アクションボックス830では、データ要素がアドレス空間の第1の部分に格納される。アクションボックス840では、信頼性データが前記アドレス空間の第2の部分に格納される。
図9は、いくつかの実施形態に係るデータを読み出す方法900のフロー図である。例えば、図8の方法800を用いて事前に書き込まれたデータに関する読み出しを行うこともできる。アクションボックス910では、データ要素に関する読み出しアクセスをリクエスタから受信する。決定ボックス920では、データ要素がアドレス空間の第1の部分から読み出される。アクションボックスのセット930では、信頼性データが適正に読み出されたかどうかが判定される。
アクションボックスのセット930は、計算された信頼性データを生成するために、アドレス空間の第1の部分から読み出されたデータ要素に関する信頼性データを計算するアクションボックス932と、格納された信頼性データを生成するために、アドレス空間の第2の部分に格納された信頼性データを読み出すアクションボックス934と、格納された信頼性データを計算された信頼性データと比較するアクションボックス936と、をさらに含む。
方法900を続けると、決定ボックス940は、格納された信頼性データが計算された信頼性データと一致するか否かを判定する。格納された信頼性データが計算された信頼性データと一致する場合には、フローは、データ要素をリクエスタに戻すアクションボックス942に進む。格納された信頼性が計算された信頼性データと一致しない場合には、フローは、信頼性データを訂正することができるか否かを判定する決定ボックス944に進む。信頼性データを訂正することができる場合には、フローは、データを訂正するアクションボックス946と、訂正されたデータをリクエスタに戻すアクションボックス948と、に進む。信頼性データを訂正することができない場合には、フローは、エラーをリクエスタに報告するアクションボックス950に進む。
データ及び対応する信頼性データを格納し、後に取り出すことは、上記の図4〜図7で説明された技術の何れかかを用いて行うことができる。したがって、いくつかの実施形態では、アドレス空間は、第1のアドレスの連続する部分と、第2のアドレスの連続する部分と、に分割され、データ要素は、第2のアドレスの連続する部分に格納され、信頼性データは、第2のアドレスの連続する部分に格納される。いくつかの実施形態では、アドレス空間は、バンクの第1のアドレスの連続する部分と、バンクの第2のアドレスの連続する部分と、に分割され、データ要素は、バンクの第1のアドレスの連続する部分に格納され、信頼性データは、バンクの第2のアドレスの連続する部分に格納される。いくつかの実施形態では、アドレス空間は、アドレス空間内で順序を有する複数のバンク間で分割され、アドレス空間の第1の部分は、当該順序の複数のバンク間で分散された所定数のデータ要素の複数のグループとして形成され、アドレス空間の第2の部分は、複数のグループの各々の対応するデータ要素ごとの信頼性データ要素を含み、グループに関する信頼性データ要素は、当該順序のグループの最後のデータ要素を含む第2のバンクの後の第1のバンクに配置される。いくつかの実施形態では、アドレス空間は、第1のチャネル及び第2のチャネルを用いて形成され、第1のチャネルは複数のバンクを含み、データ要素は、第1のチャネルの複数のバンク間で分散され、データ要素に関する信頼性データは、第2のチャネルに格納される。
図3のメモリコントローラ340は、ハードウェア及びソフトウェアの種々の組み合わせと共に実装されてもよく、ソフトウェアコンポーネントは、少なくとも1つのプロセッサによる実行のためにコンピュータ可読記憶媒体に格納されてもよい。さらに、図4〜図7に示されたアドレスマップは、コンピュータ可読記憶媒体に格納されるとともに、メモリコントローラ340の機能を実装する少なくとも1つのプロセッサによって実行される命令によって、少なくとも部分的に実装されてもよい。図8及び図9に示された動作の各々は、固定(non−transitory)のコンピュータメモリ又はコンピュータ可読記憶媒体に格納された命令に対応してもよい。種々の実施形態では、固定のコンピュータ可読記憶媒体は、磁気ディスク記憶装置、光ディスク記憶装置、例えばフラッシュメモリなどのソリッドステート記憶装置、又は、他の1つ以上の不揮発性メモリデバイスを含む。固定のコンピュータ可読記憶媒体に格納されるコンピュータ可読命令は、1つ以上のプロセッサによって解釈及び/若しくは実行可能なソースコード、アセンブリ言語コード、オブジェクトコード、又は、他の命令フォーマットであってもよい。
さらに、メモリコントローラ340及び/又はマルチコアプロセッサ310は、データベースの形態のコンピュータがアクセス可能なデータ構造であってもよいし、集積回路300を製造するためにプログラムによって直接又は間接的に読み出し及び用いることの可能な他のデータ構造によって説明又は表されてもよい。例えば、このデータ構造は、例えばVerilog若しくはVHDLなどの高レベル設計言語(HDL)でのハードウェア機能の挙動レベル記述又はレジスタ伝達レベル(RTL)記述であってもよい。この記述は、合成ライブラリからのゲートのリストを含むネットリストを生成するために記述を合成し得る合成ツールによって読み出されてもよい。ネットリストは、集積回路300を含むハードウェアの機能を表すゲートのセットを含む。ネットリストは、次いで、マスクに適用される幾何学的形状を記述するデータセットを生成するために、配置及びルーティングされてもよい。マスクは、次いで、集積回路300を製造するために、種々の半導体製造ステップで用いられてもよい。代替的に、コンピュータがアクセス可能な記憶媒体上のデータベースは、所望によりネットリスト(合成ライブラリを有する若しくは有しない)又はデータセットであってもよいし、グラフィックデータシステム(GDS)IIデータであってもよい。
開示された実施形態の種々の変更が当業者にとって明白となるであろう。本明細書に記載のメモリコントローラは、マルチチップモジュール100,200の他にデータ破壊を起こしやすい他の集積回路構成に有用である。例えば、プロセッサ及びメモリチップは、フリップチップ結合を用いてマザーボード基板に直接取り付けられる。メモリコントローラ及びメモリは、同じダイ上に実装することもできるが、高レベルの電磁干渉(EMI)を有する環境で用いられることなどによる他の理由でデータ破壊を起こしやすい。メモリチップスタック140又はメモリチップスタック240は、例えば、個別のCPUメモリ、個別のグラフィックス処理ユニット(GPU)メモリ、個別のAPUメモリなどとして、集積回路300のメインメモリとは個別に実装することができる。ダイスタッキング集積(die stacking integration)100及びダイスタッキング集積200は、マルチチップモジュール(MCM)として実装することができる。代替的に、メモリチップは、共通の基板上にCPU、GPU、APU、メインメモリなどと隣接して同一平面上に配置することができる。マルチチップモジュール100,200は4チップメモリチップスタックを含むが、他の実施形態では異なる数のメモリチップを含むこともできる点に留意されたい。
メモリコントローラ340は、図3に示すように、マイクロプロセッサダイ上で少なくとも1つのプロセッサコアと一体化することができ、又は、別個のチップとすることができる。いくつかの実施形態では、集積回路310は、CPUを必要としない論理機能などのコンピューティング機能以外の他の全機能を果たすことができる。さらに、図3では、CPUコア322,324とは個別のメモリコントローラ340が示されているが、メモリコントローラ340は、CPUコア又は他の論理ブロックの内部に形成されてもよい。
メモリコントローラ340の動作は、異なるレベルの信頼性及びオーバーヘッドを実装する種々のアドレスマップに関連して説明されている。図4〜図7では、代表的な数のメモリバンクと共にこれらの概念が示されているが、そこで説明された技術は、異なる数のメモリバンクにスケール変更することができる。例えば、メモリ350が4つのDDR3チップと共に実装される場合には、アドレス空間内のメモリバンクの総数は32となるであろう。
使用され得る信頼性データの例は、パリティビットと、誤り訂正符号ビット(例えば、限定されないが、シングルエラー訂正(SEC)、シングルエラー訂正及びダブルエラー検出(SEC−DED)、ダブルビットエラー訂正及びトリプルビットエラー検出(DEC−TED)、トリプルエラー訂正、クワッドエラー検出(TEC−QED)、及び、Bose Chaudhuri Hocquenghem(BCH)コードなどの線形ブロックコードを含む)と、チェックサム(例えば、CRC、メッセージ・ダイジェスト(MD5))と、を含む。1、2又はそれ以上のレベルのECC保護に関するサポートを提供することができ、この場合、システムハードウェア又はソフトウェアは、性能と信頼性のバランスをとるために選択することができる。
メモリ350は、DRAM技術に関連して上記で説明されている。しかしながら、メモリ350は、他のメモリ技術(例えば、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)、例えばメモリスタ及びスピントルク伝達磁気RAM(STT−MRAM)などの抵抗式RAM技術、並びに、フラッシュメモリ)と共に実装することができる。
上記の図4〜図7に示された実施形態は、8バイトのデータにつき1バイトの信頼性データを用いる。他の実施形態によれば、所与の数のデータバイトに関する信頼性データの量が異なることがある。
図示された実施形態では、メモリコントローラ340は、特定のメモリバンクの特定の部分にある信頼性データにアクセスする。いくつかの実施形態によれば、メモリコントローラ340は、代替メモリバンクの代替部分にアクセスすることもできる。
いくつかの図示された実施形態では、複数のバンク間でデータ要素を当該データ要素に対応する信頼性データとインターリーブすることを示している。いくつかの実施形態によれば、インターリーブアルゴリズム及びマッピングアルゴリズムを変更することもできる。
いくつかの実施形態では、複数のバンクにわたるアドレスの連続する部分が示されている。他の実施形態によれば、アドレスの部分は、アドレスの不連続の部分とすることもでき、アドレスの穴を含むこともできる。
したがって、開示された実施形態の範囲に含まれる開示された実施形態の全ての変更を包含することは、添付の請求項によって意図される。

Claims (30)

  1. アドレス空間(400,500,600,700)を有するメモリ(350)と、
    受信したメモリアクセスに応じて前記アドレス空間(400,500,600,700)にアクセスするために、前記メモリ(350)に接続されたメモリコントローラ(340)と、を備え、
    前記メモリコントローラ(340)は、前記アドレス空間(400,500,600,700)の第1の部分内の複数のデータ要素と、前記アドレス空間(400,500,600,700)の第2の部分内の、前記複数のデータ要素に対応する信頼性データと、にアクセスする、
    集積回路(300)。
  2. 前記アドレス空間(400)の前記第1の部分は、第1のアドレスの連続する部分(412)を含み、
    前記アドレス空間の前記第2の部分は、第2のアドレスの連続する部分(414)を含む、
    請求項1に記載の集積回路(300)。
  3. 前記アドレス空間(400)は、複数のバンク(410,420,430,440)を含み、
    前記第1のアドレスの連続する部分(412)は、前記アドレス空間(400)の上位に存在し、
    前記第2のアドレスの連続する部分(414)は、前記アドレス空間(400)の下位に存在する、
    請求項2に記載の集積回路(300)。
  4. 前記アドレス空間(500)は、複数のバンク(510,520,530,540)を含み、
    前記アドレス空間(500)の前記第1の部分は、前記複数のバンク(510)のうち1つのバンクの第1のアドレスの連続する部分(512)を含み、
    前記アドレス空間(500)の前記第2の部分は、前記複数のバンク(510)のうち前記1つのバンクの第2のアドレスの連続する部分(514)を含む、
    請求項1に記載の集積回路(300)。
  5. 前記第1のアドレスの連続する部分(512)は、前記複数のバンク(510)のうち前記1つのバンクの第1のアドレス空間の上位に存在し、
    前記第2のアドレスの連続する部分(514)は、前記複数のバンク(510)のうち前記1つのバンクの前記第1のアドレス空間の下位に存在する、
    請求項4に記載の集積回路(300)。
  6. 前記アドレス空間(600)は、前記アドレス空間(600)内で順序を有する複数のバンク(610,620,630,640)を含み、
    前記アドレス空間の前記第1の部分は、前記順序の前記複数のバンク(610,620,630,640)間で分散された所定数のデータ要素の複数のグループ(A〜F,I〜P)を含み、
    前記アドレス空間の前記第2の部分は、前記複数のグループの各々の対応するデータ要素ごとの信頼性データ要素を含み、
    グループに関する信頼性データ要素は、前記順序の前記グループの最後のデータ要素を含む第2のバンク(640)の後の第1のバンク(610)に配置されている、
    請求項1に記載の集積回路(300)。
  7. 前記メモリコントローラ(340)は、第1のチャネル(710)及び第2のチャネル(720)を用いて前記アドレス空間(700)を形成し、前記第1のチャネル(710)は複数のバンク(711〜718)を含み、
    前記メモリコントローラ(340)は、前記第1のチャネル(710)の前記複数のバンク(711〜718)間で特定のデータ要素(730)を分散させ、
    前記メモリコントローラ(340)は、前記第2のチャネル(720)の前記データ要素(730)に関する信頼性データ(740)にアクセスする、
    請求項1に記載の集積回路(300)。
  8. 前記メモリアクセスを生成し、前記メモリアクセスを前記メモリコントローラ(340)に提供するためのメモリアクセス生成回路(320)をさらに備える、
    請求項1に記載の集積回路(300)。
  9. 前記メモリアクセス生成回路(320)は中央処理装置コア(322)を含む、
    請求項8に記載の集積回路(300)。
  10. 前記メモリアクセス生成回路(320)及び前記メモリコントローラは、単一の集積回路ダイ(310)上に結合されている、
    請求項8に記載の集積回路(300)。
  11. 前記メモリ(350)は複数のメモリチップ(352,354,356,358)を含む、
    請求項10に記載の集積回路(300)。
  12. 前記信頼性データは、前記データ要素の各々に関する少なくとも1つのECCを含む複数の誤り訂正符号(ECC)を含む、
    請求項1に記載の集積回路(300)。
  13. 前記信頼性データは、前記データ要素の各々に関する少なくとも1つのCRCを含む複数の巡回冗長検査(CRC)符号を含む、
    請求項1に記載の集積回路(300)。
  14. 前記メモリ(350)は、複数のバンクをそれぞれ有する複数のメモリチップ(352,354,356,358)を含む、
    請求項1に記載の集積回路(300)。
  15. 前記複数のメモリチップ(352,354,356,358)はメモリチップスタック(140,240)を含む、
    請求項1に記載の集積回路(300)。
  16. メモリ(350)のアドレス空間(400,500,600,700)内のデータ要素に関するメモリアクセスを生成するためのメモリアクセス生成回路(320)と、
    受信したメモリアクセスに応じて前記アドレス空間(400,500,600,700)にアクセスするために、前記メモリ(350)に接続されたメモリコントローラ(340)と、を備え、
    前記メモリコントローラ(340)は、前記アドレス空間(400,500,600,700)の第1の部分内の複数のデータ要素と、前記アドレス空間(400,500,600,700)の第2の部分内の、前記複数のデータ要素に対応する信頼性データと、にアクセスする、
    集積回路(300)。
  17. 前記アドレス空間(400)の前記第1の部分は、第1のアドレスの連続する部分(412)を含み、
    前記アドレス空間の前記第2の部分は、第2のアドレスの連続する部分(414)を含む、
    請求項16に記載の集積回路(300)。
  18. 前記アドレス空間(400)は、複数のバンク(410,420,430,440)を含み、
    前記第1のアドレスの連続する部分(412)は、前記アドレス空間(400)の上位に存在し、
    前記第2のアドレスの連続する部分(414)は、前記アドレス空間(400)の下位に存在する、
    請求項17に記載の集積回路(300)。
  19. 前記アドレス空間(500)は、複数のバンク(510,520,530,540)を含み、
    前記アドレス空間(500)の前記第1の部分は、前記複数のバンク(510)のうち1つのバンクの第1のアドレスの連続する部分(512)を含み、
    前記アドレス空間(500)の前記第2の部分は、前記複数のバンク(510)のうち前記1つのバンクの第2のアドレスの連続する部分(514)を含む、
    請求項16に記載の集積回路(300)。
  20. 前記第1のアドレスの連続する部分(512)は、前記複数のバンク(510)のうち前記1つバンクの第1のアドレス空間の上位に存在し、
    前記アドレスの第2の連続する部分(514)は、前記複数のバンク(510)のうち前記1つのバンクの前記第1のアドレス空間の下位に存在する、
    請求項19に記載の集積回路(300)。
  21. 前記アドレス空間(600)は、前記アドレス空間(600)内で順序を有する複数のバンク(610,620,630,640)を含み、
    前記アドレス空間の前記第1の部分は、前記順序の前記複数のバンク(610,620,630,640)間で分散された所定数のデータ要素の複数のグループ(A〜F,I〜P)を含み、
    前記アドレス空間の前記第2の部分は、前記複数のグループの各々の対応するデータ要素ごとの信頼性データ要素を含み、
    グループに関する信頼性データ要素は、前記順序の前記グループの最後のデータ要素を含む第2のバンクの後の第1のバンクに配置されている、
    請求項16に記載の集積回路(300)。
  22. 前記メモリコントローラ(340)は、第1のチャネル(710)及び第2のチャネル(720)を用いて前記アドレス空間(700)を形成し、前記第1のチャネル(710)は複数のバンク(711〜718)を含み、
    前記メモリコントローラ(340)は、前記第1のチャネル(710)の前記複数のバンク(711〜718)間で特定のデータ要素(730)を分散させ、
    前記メモリコントローラ(340)は、前記第2のチャネル(720)の前記データ要素(730)に関する信頼性データ(740)にアクセスする、
    請求項16に記載の集積回路(300)。
  23. データ要素に関する書き込みアクセスをリクエスタ(320)から受信すること(810)と、
    前記データ要素に関する信頼性データを計算すること(820)と、
    前記データ要素をアドレス空間(400,500,600,700)の第1の部分に格納し(830)、前記信頼性データを前記アドレス空間(400,500,600,700)の第2の部分に格納すること(840)と、
    を含む、方法。
  24. 前記データ要素に関する読み出しアクセスを前記リクエスタ(320)から受信すること(910)と、
    前記データ要素を前記アドレス空間(400,500,600,700)の前記第1の部分から読み出すこと(920)と、
    前記信頼性データが適正に読み出されたか否かを判定すること(930)と、
    をさらに含む、請求項23に記載の方法。
  25. 前記判定すること(930)は、
    計算された信頼性データを生成するために、前記アドレス空間(400,500,600,700)の前記第1の部分から読み出された前記データ要素に関する信頼性データを計算すること(932)と、
    格納された信頼性データを生成するために、前記アドレス空間(400,500,600,700)の前記第2の部分に格納された前記信頼性データを読み出すこと(934)と、
    前記計算された信頼性データを、前記格納された信頼性データと比較すること(936)と、
    を含む、請求項24に記載の方法。
  26. 前記格納された信頼性データが前記計算された信頼性データと一致する場合に、前記データ要素を前記リクエスタ(320)に戻すこと(942)と、
    前記格納された信頼性が前記計算された信頼性データと一致しない場合に、前記信頼性データを訂正することができるか否かを判定すること(944)と、
    前記信頼性データを訂正することができる場合に、前記データを訂正して(946)、訂正されたデータを前記リクエスタ(320)に戻すこと(948)と、
    前記信頼性データを訂正することができない場合に、前記リクエスタ(320)にエラーを報告すること(950)と、
    をさらに含む、請求項25に記載の方法。
  27. 前記格納すること(830,840)は、
    前記アドレス空間(400)を、第1のアドレスの連続する部分(412)と第2のアドレスの連続する部分(414)とに分割することと、
    前記データ要素を前記第1のアドレスの連続する部分(412)に格納することと、
    前記信頼性データを前記第2のアドレスの連続する部分(414)に格納することと、
    を含む、請求項23に記載の方法。
  28. 前記格納すること(830,840)は、
    前記アドレス空間(500)を、バンク(510)の第1のアドレスの連続する部分(512)と前記バンク(510)の第2のアドレスの連続する部分(514)とに分割することと、
    前記データ要素を、前記バンク(510)の前記第1のアドレスの連続する部分(512)に格納することと、
    前記信頼性データを、前記バンク(510)の前記第2のアドレスの連続する部分(512)に格納することと、
    を含む、請求項23に記載の方法。
  29. 前記格納すること(830,840)は、
    前記アドレス空間(600)を、前記アドレス空間(600)内で順序を有する複数のバンク(610,620,630,640)間で分割することと、
    前記アドレス空間の前記第1の部分を、前記順序の前記複数のバンク(610,620,630,640)間で分散された所定数のデータ要素の複数のグループ(A〜F,I〜P)として形成することと、
    前記複数のグループの各々の対応するデータ要素ごとの信頼性データ要素を含む前記アドレス空間の前記第2の部分を形成することと、を含み、
    グループに関する信頼性データ要素は、前記順序の前記グループの最後のデータ要素を含む第2のバンク(640)の後の第1のバンク(610)に配置されている、
    請求項23に記載の方法。
  30. 前記格納すること(830,840)は、
    第1のチャネル(710)及び第2のチャネル(720)を用いて前記アドレス空間(700)を形成することであって、前記第1のチャネル(710)は複数のバンク(711〜718)を含む、ことと、
    前記第1のチャネル(710)の前記複数のバンク(711〜718)間で前記データ要素(730)を分散させることと、
    前記データ要素(730)に関する前記信頼性データ(740)を前記第2のチャネル(720)に格納することと、
    を含む、請求項23に記載の方法。
JP2015536838A 2012-10-11 2013-10-08 高信頼性メモリコントローラ Active JP6101807B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/649,745 2012-10-11
US13/649,745 US8984368B2 (en) 2012-10-11 2012-10-11 High reliability memory controller
PCT/US2013/063881 WO2014058879A1 (en) 2012-10-11 2013-10-08 High reliability memory controller

Publications (2)

Publication Number Publication Date
JP2015535101A true JP2015535101A (ja) 2015-12-07
JP6101807B2 JP6101807B2 (ja) 2017-03-22

Family

ID=49510512

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015536838A Active JP6101807B2 (ja) 2012-10-11 2013-10-08 高信頼性メモリコントローラ

Country Status (7)

Country Link
US (1) US8984368B2 (ja)
EP (1) EP2907030A1 (ja)
JP (1) JP6101807B2 (ja)
KR (1) KR101626040B1 (ja)
CN (1) CN104871137B (ja)
IN (1) IN2015DN02935A (ja)
WO (1) WO2014058879A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018220849A1 (ja) * 2017-06-02 2018-12-06 ウルトラメモリ株式会社 半導体モジュール
JP2020087413A (ja) * 2018-11-30 2020-06-04 エスケーハイニックス株式会社SK hynix Inc. メモリシステム

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9753858B2 (en) 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
US9009548B2 (en) * 2013-01-09 2015-04-14 International Business Machines Corporation Memory testing of three dimensional (3D) stacked memory
US9798622B2 (en) * 2014-12-01 2017-10-24 Intel Corporation Apparatus and method for increasing resilience to raw bit error rate
US9800271B2 (en) * 2015-09-14 2017-10-24 Qualcomm Incorporated Error correction and decoding
US10013212B2 (en) * 2015-11-30 2018-07-03 Samsung Electronics Co., Ltd. System architecture with memory channel DRAM FPGA module
US10031801B2 (en) * 2015-12-01 2018-07-24 Microsoft Technology Licensing, Llc Configurable reliability for memory devices
US11494087B2 (en) 2018-10-31 2022-11-08 Advanced Micro Devices, Inc. Tolerating memory stack failures in multi-stack systems
CN110770898A (zh) 2019-04-15 2020-02-07 长江存储科技有限责任公司 具有处理器和动态随机存取存储器的键合半导体器件及其形成方法
JP7311615B2 (ja) * 2019-04-30 2023-07-19 長江存儲科技有限責任公司 プロセッサおよびnandフラッシュメモリを有する接合半導体デバイスならびにそれを形成する方法
CN115413367A (zh) 2020-02-07 2022-11-29 日升存储公司 具有低有效延迟的高容量存储器电路
WO2021158994A1 (en) * 2020-02-07 2021-08-12 Sunrise Memory Corporation Quasi-volatile system-level memory
US11656937B2 (en) * 2020-08-25 2023-05-23 Micron Technology, Inc. Techniques for error detection and correction in a memory system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002091382A2 (en) * 2000-12-01 2002-11-14 Yan Chiew Chow A memory matrix and method of operating the same
US20120182821A1 (en) * 2011-01-14 2012-07-19 Rambus Inc. Memory system components that support error detection and correction
JP2013016149A (ja) * 2011-06-08 2013-01-24 Panasonic Corp メモリコントローラ及び不揮発性記憶装置

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5329489A (en) 1988-03-31 1994-07-12 Texas Instruments Incorporated DRAM having exclusively enabled column buffer blocks
US5412787A (en) 1990-11-21 1995-05-02 Hewlett-Packard Company Two-level TLB having the second level TLB implemented in cache tag RAMs
US5848433A (en) 1995-04-12 1998-12-08 Advanced Micro Devices Way prediction unit and a method for operating the same
US5764946A (en) 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US5845323A (en) 1995-08-31 1998-12-01 Advanced Micro Devices, Inc. Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US5802594A (en) 1995-09-06 1998-09-01 Intel Corporation Single phase pseudo-static instruction translation look-aside buffer
JPH09110582A (ja) 1995-10-11 1997-04-28 Kokusai Chodendo Sangyo Gijutsu Kenkyu Center 結晶製造装置
US6061759A (en) 1996-02-09 2000-05-09 Apex Semiconductor, Inc. Hidden precharge pseudo cache DRAM
US5974506A (en) 1996-06-28 1999-10-26 Digital Equipment Corporation Enabling mirror, nonmirror and partial mirror cache modes in a dual cache system
US20010034808A1 (en) 1996-07-19 2001-10-25 Atsushi Nakajima Cache memory device and information processing system
US5784391A (en) 1996-10-08 1998-07-21 International Business Machines Corporation Distributed memory system with ECC and method of operation
JPH10207726A (ja) * 1997-01-23 1998-08-07 Oki Electric Ind Co Ltd 半導体ディスク装置
US6044478A (en) 1997-05-30 2000-03-28 National Semiconductor Corporation Cache with finely granular locked-down regions
US6073230A (en) 1997-06-11 2000-06-06 Advanced Micro Devices, Inc. Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches
US6138213A (en) 1997-06-27 2000-10-24 Advanced Micro Devices, Inc. Cache including a prefetch way for storing prefetch cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line
US6016533A (en) 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Way prediction logic for cache array
KR100313996B1 (ko) 1998-01-08 2001-12-28 구자홍 컴퓨터시스템의바이오스데이터저장장치및방법
JP3307579B2 (ja) * 1998-01-28 2002-07-24 インターナショナル・ビジネス・マシーンズ・コーポレーション データ記憶システム
US6038693A (en) 1998-09-23 2000-03-14 Intel Corporation Error correction scheme for an integrated L2 cache
US6314514B1 (en) 1999-03-18 2001-11-06 Ip-First, Llc Method and apparatus for correcting an internal call/return stack in a microprocessor that speculatively executes call and return instructions
US6493800B1 (en) 1999-03-31 2002-12-10 International Business Machines Corporation Method and system for dynamically partitioning a shared cache
US6353910B1 (en) * 1999-04-09 2002-03-05 International Business Machines Corporation Method and apparatus for implementing error correction coding (ECC) in a dynamic random access memory utilizing vertical ECC storage
US6629207B1 (en) 1999-10-01 2003-09-30 Hitachi, Ltd. Method for loading instructions or data into a locked way of a cache memory
US6804162B1 (en) 2001-04-05 2004-10-12 T-Ram, Inc. Read-modify-write memory using read-or-write banks
US6662272B2 (en) 2001-09-29 2003-12-09 Hewlett-Packard Development Company, L.P. Dynamic cache partitioning
US7007210B2 (en) 2002-01-30 2006-02-28 International Business Machines Corporation Method and system for handling multiple bit errors to enhance system reliability
US7234052B2 (en) 2002-03-08 2007-06-19 Samsung Electronics Co., Ltd System boot using NAND flash memory and method thereof
US6832294B2 (en) 2002-04-22 2004-12-14 Sun Microsystems, Inc. Interleaved n-way set-associative external cache
US7054999B2 (en) 2002-08-02 2006-05-30 Intel Corporation High speed DRAM cache architecture
US20050050278A1 (en) 2003-09-03 2005-03-03 Advanced Micro Devices, Inc. Low power way-predicted cache
US7117290B2 (en) 2003-09-03 2006-10-03 Advanced Micro Devices, Inc. MicroTLB and micro tag for reducing power in a processor
US7237098B2 (en) 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
US20050228631A1 (en) 2004-04-07 2005-10-13 Maly John W Model specific register operations
US7558920B2 (en) 2004-06-30 2009-07-07 Intel Corporation Apparatus and method for partitioning a shared cache of a chip multi-processor
US7996644B2 (en) 2004-12-29 2011-08-09 Intel Corporation Fair sharing of a cache in a multi-core/multi-threaded processor by dynamically partitioning of the cache
CN101107599B (zh) 2005-03-22 2011-09-21 松下电器产业株式会社 高速缓冲存储器控制方法和高速缓冲存储器控制装置
JP4201783B2 (ja) 2005-08-04 2008-12-24 富士通マイクロエレクトロニクス株式会社 キャッシュメモリ装置、半導体集積回路およびキャッシュ制御方法
US7676730B2 (en) * 2005-09-30 2010-03-09 Quantum Corporation Method and apparatus for implementing error correction coding in a random access memory
US7707463B2 (en) 2005-11-30 2010-04-27 International Business Machines Corporation Implementing directory organization to selectively optimize performance or reliability
US7620875B1 (en) 2006-03-07 2009-11-17 Xilinx, Inc. Error correction code memory system with a small footprint and byte write operation
US7739576B2 (en) * 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
US8135935B2 (en) * 2007-03-20 2012-03-13 Advanced Micro Devices, Inc. ECC implementation in non-ECC components
US7809980B2 (en) 2007-12-06 2010-10-05 Jehoda Refaeli Error detector in a cache memory using configurable way redundancy
US8589706B2 (en) 2007-12-26 2013-11-19 Intel Corporation Data inversion based approaches for reducing memory power consumption
US20090276587A1 (en) 2008-04-30 2009-11-05 Moyer William C Selectively performing a single cycle write operation with ecc in a data processing system
US8266498B2 (en) 2009-03-31 2012-09-11 Freescale Semiconductor, Inc. Implementation of multiple error detection schemes for a cache
US8327225B2 (en) * 2010-01-04 2012-12-04 Micron Technology, Inc. Error correction in a stacked memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002091382A2 (en) * 2000-12-01 2002-11-14 Yan Chiew Chow A memory matrix and method of operating the same
US20120182821A1 (en) * 2011-01-14 2012-07-19 Rambus Inc. Memory system components that support error detection and correction
JP2013016149A (ja) * 2011-06-08 2013-01-24 Panasonic Corp メモリコントローラ及び不揮発性記憶装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018220849A1 (ja) * 2017-06-02 2018-12-06 ウルトラメモリ株式会社 半導体モジュール
CN110730988A (zh) * 2017-06-02 2020-01-24 超极存储器股份有限公司 半导体模块
JPWO2018220849A1 (ja) * 2017-06-02 2020-04-16 ウルトラメモリ株式会社 半導体モジュール
JP2021114353A (ja) * 2017-06-02 2021-08-05 ウルトラメモリ株式会社 半導体モジュール
JP7149647B2 (ja) 2017-06-02 2022-10-07 ウルトラメモリ株式会社 半導体モジュール
CN110730988B (zh) * 2017-06-02 2023-07-11 超极存储器股份有限公司 半导体模块
JP2020087413A (ja) * 2018-11-30 2020-06-04 エスケーハイニックス株式会社SK hynix Inc. メモリシステム
JP7349812B2 (ja) 2018-11-30 2023-09-25 エスケーハイニックス株式会社 メモリシステム

Also Published As

Publication number Publication date
KR101626040B1 (ko) 2016-06-13
JP6101807B2 (ja) 2017-03-22
US8984368B2 (en) 2015-03-17
CN104871137B (zh) 2019-02-01
EP2907030A1 (en) 2015-08-19
KR20150070252A (ko) 2015-06-24
WO2014058879A1 (en) 2014-04-17
IN2015DN02935A (ja) 2015-09-18
US20140108885A1 (en) 2014-04-17
CN104871137A (zh) 2015-08-26

Similar Documents

Publication Publication Date Title
JP6101807B2 (ja) 高信頼性メモリコントローラ
US11704183B2 (en) Data integrity for persistent memory systems and the like
JP6339280B2 (ja) ハイブリッドメモリのためのシステム、方法及び装置
US20130346695A1 (en) Integrated circuit with high reliability cache controller and method therefor
KR101203764B1 (ko) 메모리 셀프-리프레시 전력을 절약하기 위한 시스템들, 방법들 및 장치들
US8245109B2 (en) Error checking and correction (ECC) system and method
US11218165B2 (en) Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
TW201435896A (zh) 用以基於叢訊形成符號之記憶體控制器
US12086026B2 (en) Multiple error correction code (ECC) engines and ECC schemes
NL2029789B1 (en) Adaptive error correction to improve for system memory reliability, availability, and serviceability (ras)
Mappouras et al. Jenga: Efficient fault tolerance for stacked dram
US20240070024A1 (en) Read Data Path for a Memory System
CN115016981A (zh) 存储区域的设置方法、数据读取、写入方法及相关装置
US11494087B2 (en) Tolerating memory stack failures in multi-stack systems
KR20070074322A (ko) 메모리 시스템에 있어서 메모리 미러링 방법

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160728

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160802

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20161027

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161228

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170131

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170227

R150 Certificate of patent or registration of utility model

Ref document number: 6101807

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250