JP2021504842A - 分散バッファ・メモリ・システムのためのアドレス/コマンド・チップ同期式自律型データ・チップ・アドレス・シーケンサ - Google Patents

分散バッファ・メモリ・システムのためのアドレス/コマンド・チップ同期式自律型データ・チップ・アドレス・シーケンサ Download PDF

Info

Publication number
JP2021504842A
JP2021504842A JP2020529445A JP2020529445A JP2021504842A JP 2021504842 A JP2021504842 A JP 2021504842A JP 2020529445 A JP2020529445 A JP 2020529445A JP 2020529445 A JP2020529445 A JP 2020529445A JP 2021504842 A JP2021504842 A JP 2021504842A
Authority
JP
Japan
Prior art keywords
data
store
circuit
memory
tag
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
JP2020529445A
Other languages
English (en)
Other versions
JP7036519B2 (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2021504842A publication Critical patent/JP2021504842A/ja
Application granted granted Critical
Publication of JP7036519B2 publication Critical patent/JP7036519B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Systems (AREA)
  • Memory System (AREA)

Abstract

メモリ・システムにおける通信リンクのデータ帯域幅を改善するため、または負荷を低減するため、あるいはその両方のために、メモリ・デバイスに情報を格納する1つまたは複数のメモリ・システム、アーキテクチャ構造、または方法、あるいはその組合せを開示する。システムは、1つまたは複数のメモリ・デバイス、1つまたは複数のメモリ制御回路、および1つまたは複数のデータ・バッファ回路を含むことができる。一実施形態において、ホストは、データ・バッファ回路とのホストの通信リンクでデータを伝送するだけである。一態様において、メモリ制御回路は、制御信号をデータ・バッファ回路に送信しない。一態様において、メモリ制御回路およびデータ・バッファ回路はそれぞれ、同じ順序で同じタグを収める、別々のステート・マシン・ドリブンのアドレス・ポインタまたはローカルなアドレス・シーケンサを保持する。別の態様において、再同期方法が開示される。

Description

本発明はメモリ・システムに関し、より詳細には、分散バッファ・メモリ・システムに関する。
情報技術の最近の進歩、および、情報を格納して処理するためのインターネットの幅広い使用に伴い、コンピューティング・システムによる情報の獲得、処理、格納、および伝播に、ますます需要がある。コンピューティング・システムは、ビジネス、個人的利用、およびエンターテイメントのための、ますます複雑化するアプリケーションをコンピュータが実行できるスピードを、向上させるように開発されつつある。全体的なコンピュータ・システムの性能は、プロセッサの性能/構造、任意のメモリ・キャッシュ、入出力(I/O)サブシステム、メモリ制御機能の効率性、メモリ・デバイスおよびシステムの性能、ならびに任意の関連付けられたメモリ・インターフェース要素、ならびにメモリ相互接続インターフェースのタイプおよび構造を含む、コンピュータ構造の主要な要素のそれぞれによって影響を受ける。
ますます複雑化するアプリケーションを実行するプロセッサのスピードを絶えず向上させることは、ソフトウェア・アプリケーションの動作中、データが何度も格納され、アクセスされ、更新されるメモリ・サブシステムを含む、コンピュータにおける他のサブシステムの全てに対して、より厳しく性能を要求する。メモリの読み書き動作によって消費される時間は、コンピュータ・システムの究極のスピードおよび効率性において主要な要因である。ほとんどのコンピュータのメモリ・サブシステムは、通常、メモリ・コントローラによって動作する。メモリ・コントローラのタスクは、コンピュータのメモリ・サブシステムとコンピュータの1つまたは複数のプロセッサとの間で、できるだけ素早くかつ効率的にデータを移動させることである。コンピュータのメモリ・サブシステムは、通常、いくつかのダイナミック・ランダム・アクセス・メモリ(DRAM:dynamic random access memory)デバイスを含む、1つまたは複数のデュアル・インライン・メモリ・モジュール(DIMM:dual in-line memory module)といったメモリ・モジュールを備えることが多い。
多くのメモリ・サブシステムにおいて、メモリ・コントローラは、複数のメモリ・チャネルを制御することができ、ここで、各チャネルは、1つまたは複数のデュアル・インライン・メモリ・モジュール(DIMM)を含むことができ、ここで、DIMMは、1つまたは複数のランク(rank)に配置されることが可能である。ますます多くの高密度メモリ・デバイスに、ますます速いアクセス・スピードでアクセスできることを、コンピューティング需要が要求する。
メモリ・システム/サブシステムの設計または構造あるいはその両方、およびメモリ・システム/サブシステムが動作する方法、を改善することによって全体的なシステム性能を最大化するという、改善された解決策または革新的な解決策あるいはその両方を作り出すために、大規模なリサーチおよび開発努力が業界によってつぎ込まれる。このような努力は、分散メモリ・システム、分散バッファ・メモリ・システム、レジスタードDIMM(RDIMM)、および負荷低減DIMM(LRDIMM:load reduced DIMM)、ならびに、向上したメモリ性能をもたらす、例えばDDR4およびDDR5などの他のシステム、仕様、および規格、の開発をもたらしてきた。
1つの例において、分散メモリ・システムは、複数のメモリ・デバイス、メモリ制御回路としても知られる1つまたは複数のアドレス・チップ、および、DCチップとしても知られる複数のデータ・バッファまたはデータ回路(DC:data circuit)を含むことができる。ホスト・プロセッサと、メモリ制御回路およびデータ・バッファ回路との間の通信リンクまたはバスが存在する。メモリ制御回路からデータ・バッファ回路への通信リンクまたはバスも存在する。例えばDRAMといったメモリ・デバイスと、メモリ制御回路およびデータ・バッファ回路との間の通信リンクも存在する。通信リンクの帯域幅の限界は、メモリ・システムの性能に影響を及ぼすことがある。例えば、ストア・データ・アドレス・タグおよび位置といった、ストア・データ制御機能を伝送するために配分された帯域幅を含む、ホスト、メモリ制御回路、データ・バッファ回路、およびメモリ・デバイスの間の通信リンクおよびバスで送信されるデータ、コマンド、制御、およびレスポンス信号の量は、メモリ・システムの性能に影響を及ぼす。
本開示の概要は、データを格納およびフェッチするメモリ・システム、アーキテクチャ構造、および方法の理解を助けるために示されるが、本開示または本発明を限定することを意図するものではない。本開示は、当業者を対象とする。本開示の様々な態様および特徴は、いくつかの事例において別々に、または、他の事例において本開示の他の態様および特徴と組み合わせて、有利に使用されることが可能であるということを理解されたい。したがって、種々の効果を実現するために、メモリ・システム、アーキテクチャ構造、および動作方法に対して、変形および修正が行われることが可能である。
一実施形態において、コマンドがホストから受信されるのに応答してデータを格納するためのメモリ・システムが開示され、メモリ・システムは、ホストからコマンドを受信し、モジュール・コマンドおよび制御信号を出力するためのメモリ制御回路と、データを格納し、メモリ制御回路からコマンド信号を受信するように構成された少なくとも1つの、好ましくは複数のメモリ・デバイスと、少なくとも1つのメモリ・デバイスと関連付けられた少なくとも1つの、好ましくは複数のデータ・バッファ回路と、ホストと少なくとも1つのデータ・バッファ回路との間でデータを通信するための通信リンクと、メモリ制御回路と少なくとも1つのデータ・バッファ回路との間の制御通信リンクと、を備える。一実施形態において、メモリ制御回路は、ストア・コマンドおよびストア・データ・タグをホストから受信することに応答して、メモリ制御回路のローカルなアドレス・シーケンサからローカルなストア・データ・タグを取得すること、ホストのストア・データ・タグをメモリ制御回路のストア・データ・タグと関連付けること、ならびにメモリ制御回路内のマッピング・テーブルに関係を格納すること、を行うように構成される。一態様において、システムは、少なくとも1つのデータ・バッファ回路にデータを格納するための位置を指定するストア・データ・タグを、ホストと少なくとも1つのデータ・バッファ回路との間の通信リンクで、少なくとも1つのデータ・バッファ回路に送信しない。
別の実施形態において、メモリ・デバイスにデータを読み書きするためのメモリ・システムが開示され、ここで、システムは、ホストからコマンドを受信し、コマンドおよび制御信号を出力するための少なくとも1つのメモリ制御回路であって、順番に並べられたローカルなストア・タグ位置を有するローカルなアドレス・シーケンサを有する、メモリ制御回路と、データを読み込んで格納すること、およびメモリ制御回路からコマンド信号を受信すること、を行うように構成された少なくとも1つの、好ましくは複数のメモリ・デバイスと、少なくとも1つのメモリ制御回路と関連付けられた少なくとも1つの、好ましくは複数のデータ・バッファ回路であって、少なくとも1つのメモリ制御回路のローカルなアドレス・シーケンサと同じ順番にローカルなストア・タグ位置を並べるローカルなアドレス・シーケンサを有する、少なくとも1つのデータ・バッファ回路と、ホストと少なくとも1つのデータ・バッファ回路との間でデータを通信するためのデータ通信リンクと、メモリ・システムの読み書き動作信号を伝送するための、少なくとも1つのメモリ制御回路と少なくとも1つのメモリ・デバイスと少なくとも1つのデータ・バッファ回路との間の制御通信リンクと、を備え、少なくとも1つのメモリ制御回路は、(i)ストア・コマンドを、ライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに加工すること、(ii)ストア・コマンドを受信すると、少なくとも1つのメモリ制御回路のローカルなアドレス・シーケンサからローカルなストア・データ・タグを取得すること、(iii)少なくとも1つのデータ・バッファ回路にライト・ツー・バッファ・コマンドを送信すること、(iv)少なくとも1つのメモリ・デバイスにストア・コマンドを送信すること、および(iv)ストア・データ・タグと共にストア・フロム・バッファ・コマンドを少なくとも1つのデータ・バッファ回路に送信すること、を行うように構成され、少なくとも1つのデータ・バッファ回路は、(i)ライト・ツー・バッファ・コマンドを受信すると、少なくとも1つのデータ・バッファ回路のローカルなアドレス・シーケンサからローカルなストア・データ・タグを取得すること、(ii)少なくとも1つのデータ・バッファ回路のローカルなアドレス・シーケンサによって取得されたローカルなストア・データ・タグによって指し示されたデータ・バッファに、入って来たストア・データを送信すること、(iii)少なくとも1つのメモリ制御回路から受信されたストア・データ・タグによって指し示されたローカルなデータ・バッファからストア・データをプルすること、および(iv)少なくとも1つのメモリ・デバイスにストア・データを送信すること、を行うように構成される。
メモリ・デバイスにデータを格納するための方法も開示され、方法は、ホストのストア・コマンドを受信すると、メモリ制御回路内のアドレス・シーケンサからローカルなストア・データ・タグを取得することと、メモリ制御回路のローカルなストア・データ・タグにホスト・タグを関連付けること、および関連付けられたタグをマッピング・テーブルに格納することと、メモリ制御回路におけるストア・コマンドを、ライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに加工することと、ライト・ツー・バッファ・コマンドをデータ・バッファ回路に送信することと、データ・バッファ回路内のアドレス・シーケンサからローカルなストア・データ・タグを取得することと、データ・バッファ回路のローカルなアドレス・シーケンサから取得されたローカルなストア・データ・タグによって指し示されたデータ・バッファ回路内の位置に、入って来たデータをプッシュすることと、を含む。一実施形態において、データ・バッファ回路は、ライト・ツー・バッファ・コマンドを受信すると、入って来たデータをデータ・バッファにプッシュする。好ましくは、メモリ制御回路およびデータ・バッファ回路はそれぞれ、同じ順序で同じタグを収める別々のローカルなアドレス・シーケンサを保持する。また、一実施形態において、メモリ制御回路は、メモリ制御回路のローカルなアドレス・シーケンサから受信されたタグをデータ・バッファ回路に送信しないように構成される。
リモート・メモリ制御回路を有する分散メモリ・システムにおけるローカルなアドレス・シーケンサをチェックする方法も開示され、方法は、複数のデータ・バッファ回路の各ローカルなアドレス・シーケンサから、次に使用されることになるストア・データ・タグをプルすることと、各データ・バッファ回路のローカルなアドレス・シーケンサから回復されたストア・データ・タグを比較することと、データ・バッファ回路からのタグのいずれかが異なる場合、リカバリ・コマンドを発行することと、を含む。リモート・メモリ制御回路を有するメモリ・システムにおけるローカルなアドレス・シーケンサをチェックする別の方法が開示され、方法は、メモリ制御回路のローカルなアドレス・シーケンサから発行されることになる次のタグをデータ・バッファ回路に送信することと、データ・バッファ回路のローカルなアドレス・シーケンサから発行されることになる次のタグを、メモリ制御回路によって送信された、次に使用されることになるタグと比較することと、タグがマッチしない場合、リカバリ・コマンドを発行することと、を含む。リカバリ・コマンドは、任意の新しい動作を送出するのを停止すること、全ての未完了動作をフラッシュすること、全てのフェッチ動作が完了するのを待つこと、およびこれらの組合せからなる群のうちの少なくとも1つを含むことができる。方法は、一実施形態によれば、メモリ制御回路とデータ・バッファ回路の両方のローカルなアドレス・シーケンサをリセットすること、をさらに含むことができる。
メモリ・システム、アーキテクチャ構造、およびその動作方法の様々な態様、特徴、および実施形態は、示された図と共に読めば、より良く理解されよう。メモリ・システム、アーキテクチャ構造、および動作方法の態様、特徴、または様々な実施形態、あるいはその組合せを示すために実施形態が図において示されるが、特許請求の範囲は、示された正確な配列、構造、特徴、態様、実施形態、またはデバイスに限定されるべきではなく、示された配列、構造、サブアセンブリ、特徴、態様、実施形態、方法、およびデバイスは、単独で、または、他の配列、構造、サブアセンブリ、特徴、態様、実施形態、方法、およびデバイスと組み合わせて、使用されることが可能である。
一実施形態による、一般的なコンピューティング・システムまたはデータ処理システムを描写する図である。 一実施形態による、メモリ・サブシステムを描写する図である。 一実施形態による、バッファ型DIMM構成を含むメモリ・サブシステムを描写する図である。 一実施形態による、分散バッファ・メモリ・システムを図式的に描写する図である。 一実施形態による、ホストとメモリ制御回路との間の通信リンクで送信されるコマンドおよびアドレス・フレームを示す図である。 一実施形態による、ホストからデータ・バッファ回路に通信リンクで送信されるデータ・フレームを示す図である。 一実施形態による、メモリ制御回路からホストに通信リンクで送信されるフレームを示す図である。 一実施形態による、ストア動作を行う方法のフローチャートである。 一実施形態による、メモリ・サブシステムにおけるストア動作をマッピングする方法のフローチャートである。 一実施形態による、メモリ・サブシステムにおけるストア動作をマッピングするリモート・アドレス・シーケンサの概略図である。 一実施形態による、ストア動作を行う代替方法のフローチャートである。 一実施形態による、メモリ・サブシステムにおける、タグのチェックまたは同期あるいはその両方を行う方法のフローチャートである。 一実施形態による、メモリ・サブシステムにおける、タグのチェックまたは同期あるいはその両方を行う代替方法のフローチャートである。
以下の説明は、本発明の全体的な原理を示すために行われるが、本明細書において特許請求される発明の概念を限定することを意味するものではない。以下の詳細な説明において、メモリ・システム、アーキテクチャ構造、および動作方法の理解をもたらすために非常に多くの詳細が示されるが、メモリ・システム、アーキテクチャ構造、および動作方法の非常に多くの種々の実施形態が、これらの具体的詳細を有さずに実践されることが可能であり、特許請求の範囲および本発明は、本明細書において具体的に説明され、示された詳細の実施形態、サブアセンブリ、特徴、処理、方法、態様、特徴に限定されるべきではないということが、当業者によって理解されよう。さらに、本明細書において説明される特定の特徴は、様々な可能な組合せおよび順列のそれぞれにおける他の説明された特徴と組み合わせて使用されることが可能である。
本明細書において別段の定義が特にない限り、全ての用語は、本明細書から意味される意味、および、当業者によって理解される意味、または辞書、専門書、等において定義されるような意味、あるいはその両方、を含むこれらの可能な限り広範な解釈を与えられることになる。本明細書および添付の特許請求の範囲において使用されるように、単数形「a」、「an」、および「the」は、別段の定めがない限り複数形の指示概念を含むということにも留意されたい。
コンピュータのメモリ・サブシステムは、例えばダイナミック・ランダム・アクセス・メモリ(DRAM)デバイスといった複数のメモリ・デバイスを通常含む、通常、1つまたは複数のデュアル・インライン・メモリ・モジュール(DIMM)といったメモリ・モジュールを備えることが多い。分散メモリ・システムは、例えばDIMMとしてモジュール上に配列されることが可能なDRAMといった複数のメモリ・デバイス、1つまたは複数のメモリ制御回路、および1つまたは複数のデータ・バッファ回路またはデータ回路を含むことができる。一実施形態において、メモリ制御回路は、ホスト・プロセッサから信号を受信し、コマンドおよび制御信号を出力する。メモリ制御回路は、メモリ・コントローラを含むことができ、一実施形態において、回路の形態であることが可能なスケジューラを有することができる。メモリ制御回路またはメモリ・コントローラあるいはその両方は、一実施形態において、ホスト・プロセッサ、データ・バッファ回路、またはメモリ・デバイス、あるいはその組合せから離れていてもよい。例えばスケジューラといったメモリ制御回路は、動作および命令の順序を最適化することができ、データ・バッファ回路およびメモリ・デバイスにコマンド信号(例えば命令)を送出する。ホスト(例えばプロセッサ)、メモリ制御回路、データ・バッファ回路、またはメモリ・デバイス、あるいはその組合せの間に通信リンクまたはバスが存在する。一実施形態において、メモリ制御回路からデータ・バッファ回路への通信バスまたはリンクが存在する。一実施形態において、ホストとメモリ制御回路との間の通信リンクまたはバス、およびホストとデータ・バッファ回路との間の別々の通信リンクまたはバスが存在してもよい。メモリ・システムまたはアーキテクチャ構造あるいはその両方は、メモリ・デバイスとメモリ制御回路の間、またはメモリ・デバイスとデータ・バッファ回路の間、あるいはその両方の通信リンクまたはバスをさらに含むことができる。
例えば分散メモリ・システムを含むメモリ・システムもしくはサブシステムにおける読み書き動作を行う、メモリ・システム、メモリ・アーキテクチャ、または、方法、あるいはその組合せが開示される。一実施形態において、メモリ・デバイスを含むメモリ・システムにおけるデータの格納またはフェッチあるいはその両方を行うメモリ・システム、アーキテクチャ構造、または方法、あるいはその組合せが開示される。下記においてより詳細に開示されるようなメモリ・システムは、1つまたは複数のメモリ・デバイス、および1つまたは複数のデータ・バッファ回路を含むことができる。メモリ・システムは、メモリ制御回路をさらに含むことができ、一実施形態において、メモリ・デバイスを行き来するデータのフローを制御するためのメモリ・コントローラを含むことができる。ホスト、メモリ・デバイス、データ・バッファ回路、またはメモリ制御回路、あるいはその組合せの間で、データ、コマンド、レスポンス、または信号、あるいはその組合せを伝送するための通信リンクまたはバスが存在することが可能である。
一態様において、読み書き動作を行うためのメモリ・システム、アーキテクチャ構造、または方法、あるいはその組合せは、ホストとデータ・バッファ回路との間の通信リンクのデータ帯域幅を改善する。別の実施形態において、メモリ制御回路とデータ・バッファ回路との間の通信リンクの負荷を低減させるためのメモリ・システム、アーキテクチャ構造、または方法、あるいはその組合せが開示される。一実施形態において、データ・バッファ回路への書き込みデータを格納するメモリ・システム、アーキテクチャ構造、または方法、あるいはその組合せが開示される。一態様において、例えばストア・データ位置タグ・アドレスといった制御情報をメモリ制御回路から送信することなく、データ・バッファ回路においてストア・データを管理するメモリ・システム、アーキテクチャ構造、または方法、あるいはその組合せが開示される。一実施形態において、本開示は、データ・バッファ回路がデータをどこに置いたかをデータ・バッファ回路がメモリ制御回路に知らせなくても、また、データをどこに置くべきかをメモリ制御回路がデータ・バッファ回路に知らせなくても、メモリ制御回路によって知られている位置におけるこれらのライト・バッファに、データ・バッファ回路がストア・データを置くためのシステム、アーキテクチャ構造、または方法、あるいはその組合せを提供する。一態様において、メモリ制御回路は、ストア・コマンドおよびストア・データ・タグをホストから受信し、ストア・データ・コマンドをデータ・バッファ回路に送信するが、メモリ制御回路は、ストア・データ・タグをデータ・バッファ回路に送信しない。一態様において、メモリ制御回路およびデータ・バッファ回路は、それぞれ、同じ順序で(データ・バッファにおけるアドレスまたは位置を識別する)同じタグを収める、例えばローカルなストア・タグFIFOといった、別々のステート・マシン・ドリブンのアドレス・ポインタまたはローカルなアドレス・シーケンサを保持する。メモリ制御回路とデータ・バッファ回路の両方は、ストア動作のための、例えばローカルなストア・タグFIFOといった、これらの回路のアドレス・シーケンサからの同じタグを使用する。メモリ制御回路は、メモリ制御回路のローカルなストア・データ・タグFIFOにホストのストア・データ・タグを関連付けるかマッピングし、マッピング・テーブルにホストのストア・データ・タグを格納する。
システムの別の態様において、メモリ制御回路は、ホストのストア・コマンドを受信することに応答して、ストア・コマンドを、ライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに加工することと、制御通信リンクで、少なくとも1つのデータ・バッファ回路にライト・ツー・バッファ・コマンドを送信するが、データ・バッファ回路にデータを格納するための位置を指定するタグをデータ・バッファ回路に送信しないことと、を行うようにさらに構成される。一実施形態において、データ・バッファ回路は、データ・バッファ回路内のどこにストア動作のためのデータを書き込むべきかを追跡するための論理回路を含む。システムの少なくとも1つのデータ・バッファ回路は、ライト・ツー・バッファ・コマンドを受信することに応答して、少なくとも1つのデータ・バッファ回路内の格納位置を指し示すデータ・バッファ回路のローカルなアドレス・シーケンサからローカルなストア・データ・タグを取得することと、データ・バッファ回路のローカルなアドレス・シーケンサによって指し示されたデータ・バッファに、入って来たストア・データをプッシュすることと、を行うようにさらに構成されることが可能である。
メモリ制御回路は、一実施形態において、メモリ制御回路のローカルなアドレス・シーケンサから受信されたローカルなストア・データ・タグと共にストア・フロム・バッファ・コマンドを少なくとも1つのデータ・バッファ回路に、制御通信リンクで送信すること、および少なくとも1つのメモリ・デバイスにストア・コマンドを送信すること、を行うようにさらに構成されることが可能である。また、一実施形態において、少なくとも1つのデータ・バッファ回路は、制御通信リンクでメモリ制御回路から受信されたストア・データ・タグによって指し示されたデータ・バッファの位置からストア・データをプルすること、および少なくとも1つのメモリ・デバイスにストア・データを送信すること、を少なくとも1つのデータ・バッファ回路に行わせるようにさらに構成される。
システムの一態様において、メモリ制御回路は、データを書き込むことになる少なくとも1つのデータ・バッファ回路の次のアドレス・タグ位置を識別するステート・マシン・ドリブンのローカルなアドレス・ポインタを備え、少なくとも1つのデータ・バッファ回路は、データを書き込むことになる少なくとも1つのデータ・バッファ回路の次のアドレス・タグ位置を識別するステート・マシン・ドリブンのローカルなアドレス・ポインタを備え、メモリ制御回路のステート・マシン・ドリブンのローカルなアドレス・ポインタは、少なくとも1つのデータ・バッファ回路のステート・マシン・ドリブンのローカルなアドレス・ポインタと同期される。一実施形態において、メモリ制御回路のローカルなアドレス・シーケンサと少なくとも1つのデータ・バッファ回路のローカルなアドレス・シーケンサは、両方、同じ順序で同じタグを収める。さらなる態様において、メモリ・システムのメモリ制御回路は、少なくとも1つのデータ・バッファ回路にライト・ツー・バッファ・データ・タグを送信しない。一態様において、メモリ・システムにおけるデータ通信リンクは、ホストと少なくとも1つのデータ・バッファ回路との間、および少なくとも1つのデータ・バッファ回路と少なくとも1つのメモリ・デバイスとの間の通信リンクを含み、データおよびCRCだけが、少なくとも1つのデータ・バッファ回路とホストとの間の通信リンクで伝送される。
メモリ・システムは、一実施形態において、モジュール上の単一チップ上に形成されたメモリ制御回路を有し、モジュール上の別々のチップ上に形成された少なくとも9つのデータ・バッファ回路、およびモジュール上に配列された9つのグループに編成された複数のメモリ・デバイスを有する、少なくとも1つのモジュールを備える。
メモリ・デバイスにデータを格納するための方法も開示され、方法は、ホストのストア・コマンドを受信すると、メモリ制御回路内のアドレス・シーケンサからローカルなストア・データ・タグを取得することと、メモリ制御回路のローカルなストア・データ・タグにホスト・タグを関連付けること、および関連付けられたタグをマッピング・テーブルに格納することと、メモリ制御回路におけるストア・コマンドを、ライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに加工することと、ライト・ツー・バッファ・コマンドをデータ・バッファ回路に送信することと、データ・バッファ回路内のアドレス・シーケンサからローカルなストア・データ・タグを取得することと、データ・バッファ回路のローカルなアドレス・シーケンサから取得されたローカルなストア・データ・タグによって指し示されたデータ・バッファ回路内の位置に、入って来たデータをプッシュすることと、を含む。一実施形態において、データ・バッファ回路は、ライト・ツー・バッファ・コマンドを受信すると、入って来たデータをデータ・バッファにプッシュする。好ましくは、メモリ制御回路およびデータ・バッファ回路はそれぞれ、同じ順序で同じタグを収める別々のローカルなアドレス・シーケンサを保持する。また、一実施形態において、メモリ制御回路は、メモリ制御回路のローカルなアドレス・シーケンサから受信されたタグをデータ・バッファ回路に送信しないように構成される。
方法は、メモリ制御回路からメモリ・デバイスにストア・コマンドを送信すること、およびデータ・バッファ回路のローカルなアドレス・シーケンサから取得されたローカルなストア・データ・タグによって指し示された位置からメモリ・デバイスにデータを送信すること、をさらに含むことができる。さらなる態様において、方法は、データ・バッファ回路のローカルなアドレス・シーケンサにローカルなストア・データ・タグをプッシュして戻すことと、メモリ制御回路のローカルなストア・データ・タグと関連付けられたメモリ制御回路のマッピング・テーブルからホストのストア・データ・タグを検索することと、メモリ制御回路のローカルなアドレス・シーケンサにローカルなストア・データ・タグをプッシュして戻すことと、ホストのストア・データ・タグをホストにプッシュして戻すことと、を含む。
別の態様において、信頼性を向上させ、例えばローカルなストア・タグFIFOといったローカルなアドレス・シーケンサの同期が外れるのを阻止して回避するために、周期的なタグ・チェックおよび再同期またはリカバリ方法が実行される。システムは、一態様によれば、少なくとも1つのメモリ制御回路のステート・マシン・ドリブンのローカルなアドレス・ポインタが、少なくとも1つのデータ・バッファ回路のステート・マシン・ドリブンのローカルなアドレス・ポインタと同じ次のタグを有するかどうかをチェックするようにさらに構成される。システムは、メモリ制御回路のステート・マシン・ドリブンのローカルなアドレス・ポインタが、データ・バッファ回路のステート・マシン・ドリブンのローカルなアドレス・ポインタと同じアドレスを指し示していない場合、メモリ制御回路のローカルなアドレス・ポインタおよびデータ・バッファ回路のローカルなアドレス・ポインタが両方リセットされるように、さらに構成されることが可能である。さらなる態様において、システムは、メモリ制御回路のステート・マシン・ドリブンのローカルなアドレス・ポインタが、データ・バッファ回路のステート・マシン・ドリブンのローカルなアドレス・ポインタと同じではない場合、システムは、メモリ制御回路のローカルなアドレス・ポインタおよびデータ・バッファ回路のローカルなアドレス・ポインタをリセットするように構成されることが可能である。一実施形態において、メモリ制御回路は、メモリ制御回路のローカルなアドレス・シーケンサからデータ・バッファ回路に、次に使用されることになるストア・データ・タグを送信することができ、データ・バッファ回路は、データ・バッファ回路のローカルなアドレス・シーケンサからのデータ・バッファ回路の、次に使用されることになるタグを、メモリ制御回路によって送信されたタグと比較して、タグが同じであるかどうかを確かめる。別の実施形態において、データ・バッファ回路は、次に使用されることになるストア・データ・タグをホストに送信することができ、ホストは、各データ・バッファ回路から受信されたタグを比較して、これらのタグが同じであるかどうかを確かめる。タグが同じではない場合、システムは、ローカルなアドレス・シーケンサを特にリセットすることができるリカバリ・ルーチンを経ることが可能である。
メモリ・デバイスにデータを格納するためのコンピュータ・プログラム製品が開示され、コンピュータ・プログラム製品は、プログラム命令が含まれるコンピュータ可読ストレージ媒体を備え、プログラム命令は、メモリ・システムに方法を行わせるようにメモリ・システムによって実行可能であり、メモリ・システムは、一実施形態において、メモリ制御回路、1つまたは複数のデータ・バッファ回路、および複数のメモリ・デバイスを含むことができ、方法は、ホストのストア・コマンドを受信すると、メモリ制御回路内のアドレス・シーケンサからローカルなストア・データ・タグを取得することと、メモリ制御回路のローカルなストア・データ・タグにホスト・タグを関連付けること、および関連付けられたタグをマッピング・テーブルに格納することと、メモリ制御回路におけるストア・コマンドを、ライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに加工することと、ライト・ツー・バッファ・コマンドをデータ・バッファ回路に送信することと、データ・バッファ回路内のアドレス・シーケンサからローカルなストア・データ・タグを取得することと、データ・バッファ回路のローカルなアドレス・シーケンサから取得されたローカルなストア・データ・タグによって指し示されたデータ・バッファ回路内の位置に、入って来たデータをプッシュすることと、を含む。1つの実施形態において、コンピュータ・プログラム製品は、ライト・ツー・バッファ・コマンドを受信すると、入って来たデータをデータ・バッファにプッシュするデータ・バッファ回路をさらに備える。一態様によるコンピュータ・プログラム製品において、メモリ制御回路およびデータ・バッファ回路はそれぞれ、同じ順序で同じタグを収める別々のローカルなアドレス・シーケンサを保持し、別の態様によれば、メモリ制御回路は、メモリ制御回路のローカルなアドレス・シーケンサから受信されたタグをデータ・バッファ回路に送信しないように構成される。
コンピュータ・プログラム製品であって、方法は、メモリ制御回路からメモリ・デバイスにストア・コマンドを送信すること、およびデータ・バッファ回路のローカルなアドレス・シーケンサから取得されたローカルなストア・データ・タグによって指し示された位置からメモリ・デバイスにデータを送信すること、をさらに含む。コンピュータ・プログラム製品であって、方法は、データ・バッファ回路のローカルなアドレス・シーケンサにローカルなストア・データ・タグをプッシュして戻すことと、メモリ制御回路のローカルなストア・データ・タグと関連付けられたメモリ制御回路のマッピング・テーブルからホストのストア・データ・タグを検索することと、メモリ制御回路のローカルなアドレス・シーケンサにローカルなストア・データ・タグをプッシュして戻すことと、ホストのストア・データ・タグをホストにプッシュして戻すことと、をさらに含む。コンピュータ・プログラム製品であって、方法は、複数のデータ・バッファ回路の各ローカルなアドレス・シーケンサから、次に使用されることになるストア・データ・タグをプルすること、各データ・バッファ回路のローカルなアドレス・シーケンサから回復されたストア・データ・タグを比較すること、およびデータ・バッファ回路からのタグのいずれかが異なる場合、リカバリ・コマンドを発行すること、をさらに含む。コンピュータ・プログラム製品であって、方法は、一実施形態によれば、メモリ制御回路のローカルなアドレス・シーケンサから発行されることになる次のタグをデータ・バッファ回路に送信すること、データ・バッファ回路のローカルなアドレス・シーケンサから発行されることになる次のタグを、メモリ制御回路によって送信された次に使用されることになるタグと比較すること、およびタグがマッチしない場合、リカバリ・コマンドを発行すること、を含む。
プログラム・コードを格納または実行あるいはその両方を行うのに適したコンピューティング・システムまたはデータ処理システム100は多くの形態を採用することができ、一実施形態において、図1に示されるように、システム・バスを通じてメモリ・デバイスまたはメモリ・エレメントに直接的または間接的に連結された、コントローラであること、またはコントローラの一部であること、が可能な少なくとも1つのプロセッサ102を含むことができる。図1におけるコンピューティング・システム100は、プロセッサ102、ランダム・アクセス・メモリ(RAM)103、不揮発性メモリ104、デバイス固有回路101、およびI/Oインターフェース105と共に示される。代替として、RAM103または不揮発性メモリ104あるいはその両方は、デバイス固有回路101およびI/Oインターフェース105のように、プロセッサ102に収められることが可能である。プロセッサ102は、例えば、市販のマイクロプロセッサ、カスタム・プロセッサ、フィールド・プログラマブル・ゲート・アレイ(FPGA:Field Programmable Gate Array)、特定用途向け集積回路(ASIC:Application Specific Integrated Circuit)、ディスクリート・ロジック、等を含むことができる。RAM103は、典型的には、変数データ、スタック・データ、実行可能命令、等を保持するために使用され、ダイナミック・ランダム・アクセス・メモリすなわちDRAMを含むことができる。
様々なアプローチによれば、不揮発性メモリ104は、電気的消去可能プログラマブル・リード・オンリ・メモリ(EEPROM)、フラッシュ・プログラマブル・リード・オンリ・メモリ(PROM)、バッテリ・バックアップRAM、ハードディスク・ドライブ、等などであるがこれらに限定されない任意のタイプの不揮発性メモリを含むことができる。不揮発性メモリ104は、典型的には、実行可能なファームウェア、およびプロセッサ102に一定の機能を行わせるように実行されることが可能なプログラム命令を収める任意の不揮発性データを保持するために使用される。
いくつかの実施形態において、I/Oインターフェース105は、コントローラの外部のデバイスとプロセッサ102が通信できるようにする通信インターフェースを含むことができる。通信インターフェースの例は、RS−232、USB(ユニバーサル・シリアル・バス)、スモール・コンピュータ・システム・インターフェース(SCSI)、RS−422などのシリアル・インターフェース、または、Wi−Fi(登録商標)、Bluetooth(登録商標)、近距離無線通信(NFC)、もしくは他のワイヤレス・インターフェースなどのワイヤレス通信インターフェース、を含むことができるがこれらに限定されない。コンピューティング・システム100は、オートメーション/ドライブ・インターフェース(ADI)などの任意の通信プロトコルで通信インターフェース105を介して外部デバイスと通信することができる。
図2は、より大きいコンピュータ・システム構造またはネットワークの一部であることが可能な例示的なメモリ・システム200を描写する。コンピュータ・システム200は、制御プロセッサ・システム202を含み、制御プロセッサ・システム202は、メモリ制御ユニット(MCU:Memory Control Unit)210とインターフェースするように構成されることが可能な、少なくとも1つのプロセッサ・ユニット(CPU:processor unit)206を含む処理サブシステムである。プロセッサすなわちCPU206は、システム・コントローラ(図示せず)からのリード、ライト、および構成リクエストを処理するモジュールであることが可能である。プロセッサ206は、マルチコア・プロセッサであることが可能である。MCU210は、メモリ・サブシステム220における1つまたは複数のメモリ・デバイス250(図1において図示せず)との通信を制御する、メモリ・コントローラとも呼ばれる、メモリ・コントローラ・シンクロナス(MCS:memory controller synchronous)208を含むことができる。MCU210およびMCS208は、1つもしくは複数の処理回路を含むことができ、または処理は、プロセッサ206によって、もしくはプロセッサ206と共に、行われることが可能である。制御プロセッサ・システム202は、図4に関してより詳細に記述されることになるような、通信バス215を通じてメモリ・サブシステム220と通信する。制御プロセッサ・システム202、プロセッサすなわちCPU206、メモリ制御ユニット210、およびMCS208は、個別におよび一括して、本明細書においてホストと呼ばれることがある。ホストは、本明細書において使用されるように、メモリ・システムまたはサブシステムに、コマンドまたは制御信号あるいはその両方を送受信するプロセッサ、コントローラ、またはデバイスを概して指すために使用される。ホストは、メモリ・システムまたはサブシステムからデータ信号を送受信することも可能である。
図3は、メモリ・サブシステム320の例を描写する。メモリ・システム320は、例えば、デュアル・インライン・メモリ・モジュール、すなわちDIMM325といった、複数のメモリ・モジュールを備える。図3において3つの(3)DIMM325a〜DIMM325cだけが示されているが、メモリ・サブシステム320は、より多くの、またはより少ないDIMM325を収めることができるということが理解されよう。DIMM325は、チャネルまたはランクあたり1つまたは複数のDIMM325で、チャネルおよびランクに配置され得る。各DIMM325は、例えば、ダイナミック・ランダム・アクセス・メモリ・チップすなわちDRAM350といった、1つまたは複数の揮発性メモリ・デバイスを収めることができる。メモリ・デバイス350は集積回路またはチップであることが可能であり、情報のビットを保持する基本メモリ・セルを形成する。例えばDRAMといったメモリ・デバイス内のメモリ・セルは、通常、バンクに配置され、ここで、各バンクは、行と列のアレイである。
メモリ・サブシステムは、1つまたは複数のメモリ制御回路330、1つまたは複数のデータ・バッファ回路またはデータ(DC)回路すなわち(DC)チップ340、および1つまたは複数のメモリ・デバイス350を含むこともできる。メモリ制御回路は、メモリ・デバイスを行き来するデータのフローを管理する。メモリ制御回路は、典型的には、例えばホスト・プロセッサといったホストからコマンドおよび制御信号などの信号を受信する。制御信号は、メモリ・デバイス内のどこにデータを格納するべきかについてのアドレス位置またはタグを含むことができる。メモリ制御回路は、メモリ・デバイスまたはデータ・バッファ回路あるいはその両方にコマンドおよび制御信号を出力することができる。メモリ制御回路330は、参照を容易にするために、アドレスおよびコマンド回路、AC回路、またはACチップと呼ばれることもある。メモリ制御回路330は、レジスタード・クロック・ドライバすなわちRCDを有しても、有さなくてもよい。メモリ制御回路330は、一実施形態において、メモリ・コントローラ332を有することができる。メモリ制御回路330またはメモリ・コントローラ332は、スケジューラ338を有することができる。メモリ・コントローラ332またはスケジューラ338あるいはその両方は、動作および命令の順序を最適化することができ、データ・バッファ回路およびメモリ・デバイスに信号を送出する。メモリ制御回路330/メモリ・コントローラ332/メモリ・スケジューラ338は、動作の順序を再配列することができる。メモリ制御回路は、メモリ・デバイスを伴う、例えばDIMMといった基板またはモジュール上に配置されても、されなくてもよい。実施形態において、図3に示されるように、メモリ制御回路330は、集積回路またはチップとして形成され、メモリ・デバイス350と共にモジュール325上に配置される。一実施形態において、メモリ制御回路は、ホスト・プロセッサから離れていてもよい。
データ・バッファ回路340は、例えば、制御プロセッサ・システム302といったホストと、メモリ・デバイス350との間で、データをバッファ、受信、伝送、または移送、あるいはその組合せを行う。データ・バッファ回路は、メモリ・デバイスまたはメモリ制御回路あるいはその両方と同じ、例えばDIMMといった基板またはモジュール上に配置されても、されなくてもよい。データ・バッファ回路340は、一実施形態において、集積回路またはチップとしても形成され、メモリ・デバイス350と共にモジュール325上に配置される。データ・バッファ回路は、データ回路、DC回路、またはDCチップ、あるいはその組合せと呼ばれることもある。
図3の例において、メモリ制御プロセッサ302またはメモリ制御ユニット310あるいはその両方、およびメモリ・サブシステム320を有する分散メモリ・システム300が示される。メモリ制御ユニット310またはメモリ制御プロセッサ302あるいはその両方はホストであることが可能である。メモリまたはデータ・ストレージ・システム320は、データを格納すること、および1つまたは複数のホストにストレージ・サービスを提供すること、を行うように構成されることが可能であり、1つまたは複数のホストは、直接的に、またはネットワークを通じて(例えばインターネットで)、ストレージ・システム320に接続されることが可能である。ストレージ・システムは、ホストとの通信をサポートするためのインターフェースを含むことができる。
図3の実施形態において、メモリ・サブシステム300は、3つの(3)DIMM325a〜DIMM325cを有する。分散メモリ・システム300は、1つまたは複数の制御プロセッサ・システム302を有することができ、より多くの、またはより少ないDIMM325を有することができる。図3の分散メモリ・システム300において、各メモリ・モジュール325はDIMMとして構成され、1つのメモリ制御回路すなわちACチップ330、9つの(9)データ・バッファ回路すなわちDCチップ340、および例えばDRAMといった36個の(36)メモリ・デバイス350を有する。メモリ制御回路は、データ・バッファ回路およびメモリ・デバイスにコマンドおよび制御信号を送信するように構成され、プログラムされる。この例における各メモリ制御チップすなわちACチップ330は、モジュール325上のメモリ・デバイスを行き来するデータのフローを管理する。この例における各データ・バッファ回路すなわちDCチップ340は、4つのメモリ・デバイス350の間のデータと対話してバッファする。DIMMは、例えば、9、18、27、36、もしくはそれ以上といった9のグループ、または例えば、10、20、30、もしくはそれ以上といった10のグループに好ましくは配列および編成された、例えばDRAMといった、メモリ・デバイスを含むことができる。
メモリ・モジュール325のため、およびメモリ・サブシステム320のための他の構成が想定される。典型的には、9個または10個のデータ・バッファ・チップ340毎に1つのメモリ制御チップ330が存在する。例として、DDR4メモリ・システムは、メモリ制御回路すなわちACチップ、および9つの(9)データ・バッファ回路すなわちDCチップのグループを含むことができる。図3のメモリ・デバイス構造またはモジュールあるいはその両方は、9のグループにおけるメモリ・デバイス350を示すが、メモリ・デバイスは、10以上のグループにおいて配列されることが可能であるということが想定される。図3の例において、DIMM毎に1つのACチップが示されるが、DIMM毎に、より多くのACチップが使用されることが可能である。メモリ・システム・アーキテクチャは、DDR4規格およびDDR5規格をサポートするようにフォーマットされ、構造化されることが可能であるが、開示され、教示される方法、システム、およびアーキテクチャは、将来の規格を含む他の構成に適用できるであろう。
1つの例において、データ・バッファ回路すなわちDCチップ340は、それぞれ、ホスト・プロセッサ302(メモリ制御ユニット310)からのストア動作を保持するために使用されるライト・バッファ・アレイを、メモリ制御回路330上のメモリ・コントローラ332がストア動作をスケジュールできるまで、有することができる。ホスト302とメモリ制御回路330との間、およびメモリ制御回路330とメモリ・デバイス350との間の、通信バスまたはリンクが存在する。ホスト302とデータ・バッファ回路340との間、およびデータ・バッファ回路340とメモリ・デバイス350との間の、データ通信リンクまたはバスも存在する。メモリ制御回路330からデータ・バッファ回路すなわちDCチップ340への通信リンクまたはバス332が存在することが可能である。メモリ制御回路330とデータ・バッファ回路340との間の通信リンクまたはバスは、BCOMと呼ばれる1つの方式のブロードキャスト通信リンクまたはバスであることが可能である。通信バスおよびリンクの特定の実施形態に関するより多くの情報は、下記において説明される。
通信リンクの帯域幅は、メモリ・システム300の性能に影響を及ぼす。1つまたは複数の実施形態において、メモリ・システム、アーキテクチャ構造、または動作方法、あるいはその組合せは、ホストと1つまたは複数のメモリ・デバイスとの間のデータを格納または検索あるいはその両方を行う際に改善をもたらす。一実施形態において、ホスト302とデータ・バッファ回路すなわちDCチップ340との間の通信リンク上のデータに利用可能な性能または帯域幅あるいはその両方を改善するためのメモリ・システム、アーキテクチャ構造、または方法、あるいはその組合せが開示される。一実施形態において、ホスト302とデータ・バッファ回路340との間の通信リンクの帯域幅は、ホスト302からデータ・バッファ回路すなわちDCチップ340に制御情報(タグ)を送信する頻度を減少させること(または取り除くこと)によって改善される。
さらなる実施形態において、メモリ制御回路330とデータ・バッファ回路すなわちDCチップ340との間の通信リンクの性能または帯域幅あるいはその両方を改善するためのメモリ・システム、アーキテクチャ構造、または方法、あるいはその組合せが開示される。一実施形態において、メモリ制御回路330とデータ・バッファ回路340との間の通信リンクの帯域幅は、メモリ制御回路330からデータ・バッファ回路(DCチップ)340に制御情報(位置タグ)を送信する頻度を減少させることによって改善される。メモリ制御回路330とDCチップ340との間のリンクに対する要求を低減するために、ストア動作を行う一実施形態において、ホスト300は、ストア・コマンドおよびストア・データ・タグをメモリ制御回路(ACチップ)330に送信し、ACチップ330は、ストア・データ・コマンドをDCチップ340に送信するが、ACチップ330は、対応するストア・データ・タグをDCチップ340に送信しない。代わりに、メモリ制御回路(ACチップ)330およびDCチップ340は、両方、同じ順序で同じタグを収める、例えばストア・タグFIFOといった、別々のステート・マシン・ドリブンのローカルなアドレス・ポインタまたはアドレス・シーケンサ335、345を保持する。ACチップ330およびDCチップ340は、ストア動作のために、例えばローカルFIFOといった、ACチップ330およびDCチップ340のローカルなアドレス・シーケンサ335、345からの同じタグを使用する。ACチップ330は、例えば、ACチップ330のローカルなストア・データ・タグFIFOといった、ACチップ330のローカルなアドレス・シーケンサ335において利用可能な次のタグ(位置アドレス)に、ホストのストア・データ・タグを関連付けるか、マッピングし、マッピング・テーブル336にタグの関連ペアを格納する。
図4は、一実施形態による、分散バッファ・メモリ・システム400の概略図を示す。システムは、例えばDRAMといった複数のメモリ・デバイス450を含む。DRAMは、通常、DIMM325といった、モジュール上に配列されることが可能である。システム400は、1つまたは複数のDIMMを有することができる。システムは、1つまたは複数のメモリ制御回路すなわちACチップ430、および1つまたは複数のデータ・バッファ回路すなわちDCチップ440をさらに含むことができる。一実施形態において、各DIMMは、1つのメモリ制御回路すなわちACチップ430、および複数のデータ・バッファ回路すなわちDCチップ440(ACチップあたり9個または10個のチップ)を含むことができる。各DIMM325は、好ましくは、例えば、9、18、27、36、またはそれ以上といった、9のグループに配列される、例えばDRAM450といった複数のメモリ・デバイスを有することができる。DIMMは、例えばDRAM450といった、等しくない数のメモリ・デバイスを有することができる。一実施形態において、システムは、DDR4またはDDR5メモリ・システムをサポートするように設計されるが、他の構成および配列が想定される。メモリ制御回路430は、レギュレーテッド・クロック・ドライバを有しても有さなくてもよく、一実施形態において、メモリ制御回路430は、メモリ・コントローラ432またはメモリ・スケジューラ438あるいはその両方を有することができる。
図4において図式的に示されるリンク460は、メモリ・サブシステム320にコマンドを送信するためのホスト402/410からメモリ制御回路すなわちACチップ430への8つの(8)レーン、ならびに完了またはエラー通知および詳細である、動作などの状態をレポートするための戻りの1つのHSSレーン、を有するディファレンシャル・ハイ・スピード・シリアル(HSS)バスである。図5は、ホスト402/410からメモリ制御回路すなわちACチップ430にリンク460で送信されるアドレスおよびコマンド・フレームの1つの例を示す。図5において、アドレスおよびコマンド・フレームは、フレームを作り上げるためのサイクル数を指定するための2つの(2)ビット(L0〜L1)、アドレス可能空間の39個の(39)ビット(A0〜A38)、コマンドのための空間の4つの(4)ビット(C0〜C3)、書き込み動作のためにDCチップに送信されるタグフィールド・マッチのための7つの(7)ビット(Q0〜Q6)、アップストリーム・フレームに対する承認のための1つのビット(ACK)、ならびにレーンのエラー検出および特定のために提供される巡回冗長検査(CRC:Cyclic Redundancy Check)コードのための11個の(11)ビット(P0〜P10)、を有する。
リンク465は、ストア・データのための、ホスト402/410から各データ・バッファ回路すなわちDCチップ440への2つの(2)レーン、および、フェッチ・データのための、各DCチップ440からホスト402/410への2つの(2)レーン、を有するHSSバスである。本線動作について、リンク465は、一実施形態において、データを伝送すること、および、このデータを保護するために必要な巡回冗長検査(CRC)のためだけに使用される。リンク465の帯域幅は、一実施形態において、任意の種類の制御情報のために消費されず、応答情報のために消費されるいずれの帯域幅も有さなくてよい。リンク465のための帯域幅の2つのレーンの全ては、一実施形態において、データ(およびCRC)を伝送するために使用される。図6は、リンク465でのホスト402/410からDCチップ440への通信のためのデータ・フレームの1つの例を示す。図6において、(9)フレームのうちの9(9)(またはリンク465の帯域幅の100%)が、データおよびCRCのために使用されるべく、128ビット(メモリ・サイクル(フレーム)1〜8におけるD0〜D127)はデータ・フィールドであり、16個の(16)ビット(メモリ・サイクル(フレーム)9におけるCRC0〜CRC15)はCRCのためのものである。例えば、タグまたはアドレス位置といった、制御信号を伝送するためにリンク465を使用しないことによって、9つのうちの(9)メモリ・サイクルの全てが、データおよびCRCの伝送のために使用され、リンク465におけるデータ移送効率を改善する。
リンク470は、スケジュールされた動作をいつ実行するべきかをDCチップに通知するために使用される、メモリ制御回路すなわちACチップ430からデータ・バッファ回路すなわちDCチップ440へのブロードキャスト(BCOM)バスである。フェッチ動作について、ACチップ430からDCチップ440へのリンク470でコマンドだけが送信される。一態様によれば、ストア動作について、制御メモリ回路430は、ストア・コマンドを、ホスト402/410からDCチップ440上のデータ・バッファにデータを書き込む「ライト・バッファ」または「ライト・ツー・バッファ」、および、DCチップ440から、例えばDRAMといったメモリ・デバイス450へのデータを格納する「ストア・バッファ」または「ストア・フロム・バッファ」と呼ばれる2つのサブ動作に分解する。ライト・バッファについて、一実施形態において、コマンドは、データ・バッファ回路すなわちDCチップ440にACチップ430からリンク470で送信されるが、例えば位置タグ・アドレスといった制御信号は、帯域幅を節約するために、例えばライト・バッファといったデータ・バッファ回路には送信されない。代わりに、各DCチップ440におけるステート・マシン・ドリブンのアドレス・ポインタまたはアドレス・シーケンサ445が、例えば、ライト・バッファにおけるアドレスまたは位置といった、データ・バッファ回路内のどこにストア・データが書き込まれることになるかを追跡する。ストア・バッファ動作について、コマンドと、例えば、ライト・バッファ・アドレスといった制御信号の両方が、データ・バッファ回路すなわちDCチップ440に送信される。メモリ・サブシステムの動作は、下記においてより詳細に説明される。
データ・バッファ回路すなわちDCチップ440と、メモリ制御回路すなわちACチップ430との間のエラーATTNネットワーク475は、ホスト402/410にレポートする必要があるエラーをDCチップ440が得たことをメモリ制御回路すなわちACチップ430に通知する、データ・バッファ回路すなわちDCチップ440からのエラーATTN信号を収めることができる。例えばDRAMといったメモリ・デバイス450がエラーを得たことを示すDRAMのATTN信号は、ACチップ430にATTN信号を直接的にルート・バックされる代わりに、メモリ・デバイス450からメモリ・デバイス450のDCチップ440にルート・バックされる、ということに留意されたい。ACチップ430は、DCチップ440のアップストリーム・フレームにおいてDCチップ440がレスポンスまたは制御情報を有していないので、このエラーをホスト402/410にレポートしなければならない。DCチップ440は、リンク475を介してメモリ・デバイス・エラーをACチップ430に転送して戻すが、各DCチップ440は、例えばDRAM450といった、DCチップ440のメモリ・デバイスのうちの1つがエラーを得たということを知っている。ACチップ430は、エラー信号をホストにルート・バックする。ホスト402/410は、ホスト402/410のエラー・リカバリ・ルーチンを起動することができ、ホスト402/410からの非本線動作は、DCチップ440の状態レジスタを読み取るために使用されることが可能である。ホスト402/410は、次に、エラーがHSSリンクで発生したか、DCチップ440のメモリ・デバイスのうちの1つからのATTNだった場合、または、エラーが、DCチップ440上で発生している他のいくつかのエラーだった場合、どのDCチップ440がエラーを得たものを区分けすることができる。ホスト402/410は、次に、エラーから回復するために望まれるようなアクションを行うことができる。
リンク480は、メモリ制御回路すなわちACチップ430から、例えばDRAMといったメモリ・デバイス450への、コマンドおよびアドレス・バスである。リンク490は、ストア・データをメモリ・デバイスに送信するため、およびメモリ・デバイス450からフェッチ・データを受信するために、DCチップ440によって使用されるメモリ・デバイスのデータ・バスである。通信リンク490も、メモリ・デバイスのATTN信号を受信する。
メモリ・システムの動作をここで参照すると、正常動作中、ホスト402/410は、メモリ制御回路すなわちACチップ430にストア・コマンドを送信する。ホストによってACチップ430に送信されたストア・コマンドは、DCチップ440上のデータ・バッファにホストからのデータを書き込む「ライト・バッファ」コマンド、および、DCチップ440からメモリ・デバイス450へのデータを格納する「ストア・バッファ」コマンドに、加工、デコード、または分解されることが可能である。「ライト・バッファ」コマンドは、直ちに実行するためにスケジュールされ、「ストア・バッファ」コマンドは、システム性能を最適化することに基づいてメモリ制御回路による実行のためにスケジュールされる。
ライト・バッファ・コマンドは、メモリ制御回路すなわちACチップ430によってデータ・バッファ回路すなわちDCチップ440にリンク470で送信され、ホスト402/410は、好ましくは構成可能な遅延の後、格納されることになるデータをDCチップ440にリンク465で送信する。制御信号は、ホストとデータ・バッファ回路との間の通信リンクで送信されない。一実施形態において、ACチップは、データ・バッファ回路440のライト・バッファ内のどこにストア・データがあるべきかを識別するアドレス、タグ、または位置をDCチップ440に送信しない。代わりに、各DCチップ440は、DCチップ440のライト・バッファ内のどこに次のストア動作のためのホストからのデータが書き込まれるべきかをステート・マシン・ドリブンのアドレス・ポインタまたはアドレス・シーケンサ445を通じて追跡する。各DCチップ440は、HSSリンク465上でエラーが発生しなかったことを検証するために、受信されたストア・データからのCRCコードをチェックすることができる。エラーが発生したことがわかった場合、DCチップ440は、エラーが発生し、DCチップの状態レジスタ448にエラーが記録されたことを、リンク475でエラーATTN信号を介してACチップ430に通知する。
ACチップ430は、動作およびシステム命令の順序を最適化し、コマンドを送出するスケジューラ438を含むことができる。スケジューラ438は、動作を再配列することができる。ACチップ・スケジューラ438は、この動作を実行することがシステム性能にとって最適なときに「ストア・バッファ」コマンドをスケジュールすることができる。バンク衝突、周期的動作、およびフェッチ・コマンドは、他の動作が完了すること、またはこれより先に実行すること、を可能にするように、ストア動作を遅らせることができる。「ストア・バッファ」動作がストア動作を完了させると、ホストのストア・コマンドは完了したとみなされ、ACチップ430は、どの動作が完了したかを示すために、例として図7における形式を使用して、アップストリーム・フレームをホストにリンク480を介して送信する。
一実施形態において、フェッチ動作は、前もってデータを送信する必要がないので、通信リンク460を介してフェッチ・コマンドがACチップ430に送信されることでスタートする。フェッチ動作は、システムにおいて優先されることが可能であり、使用のためにバスが利用可能な場合、フェッチ動作は、レイテンシを最小化するために待ち行列におけるストア動作を迂回することになる。しかし、スケジュールされる必要がある他の待ち状態のフェッチ動作が存在する場合、フェッチ動作は、メモリ制御回路スケジューラまたはメモリ・シーケンサ438に入ることになる。
メモリ制御回路のメモリ・スケジューラ438が実行予定のフェッチ動作をスケジュールすると、コマンド信号および例えばアドレス(タグ)といった制御信号は、メモリ・デバイス450にACチップ430からリンク480で送信され、DCチップ440は、固定数のサイクルでホスト402/410に送信されることになるフェッチ・データが到着予定であることをリンク470でACチップ430によって知らされる。フェッチ・データがDCチップ440に到着すると、データは、リンク465でホスト410/402に直接的に転送される。フェッチ・データは、好ましくは、バッファすることが追加のレイテンシを作り出すので、バッファされない。ACチップ430は、それに応じて、次に、フェッチ動作が完了したことをホストに通知するアップストリーム・フレームをホストに送信することになる。
どの動作が完了するかを示すレスポンス・フレームが図7において示される。図7において、2つの(2)ビット(T0〜T1)は、フレーム/タイプ識別子であり、2つの(2)ビット(R0〜R1(op1))は、第1の動作に対する、例えば、ストア完了、フェッチ完了、または注意レスポンスといった、レスポンス・タイプを識別し、7つの(7)ビット(Q0〜Q6(op1))は、第1の動作のレスポンス・タイプと関連付けられたコマンド・キュー・タグであり、2つの(2)ビット(D0〜D1(op1))は、(4つの(4)メモリ・サイクル・フレームの始まりについて、いつフェッチ・データがリターンすることになるかを指定するために)第1の動作のためのフレーム・オフセット・コードを提供し、6つの(6)ビット(CRC0〜CRC5)は、フレームのためのCRCであり、1つのビット(ACK)は、ダウンストリーム・フレームに対する承認(例えば、ACによって受信された図5におけるフレームに対する承認)である。ストア完了レスポンス・タイプ動作について、Q0〜Q6は、ストア完了タグを表し、その一方で、フェッチ完了レスポンス・タイプ動作について、Q0〜Q6は、フェッチ・データと関連付けられたデータ・タグを表す。動作が注意(ATTN)レスポンスであるとき、1つまたは両方のコマンド・キュー・タグ・フィールドは、リカバリおよびステータス・エラー情報をホストに伝えて戻すために過負荷になる可能性がある。レスポンス・タイプ・フィールドR0〜R1、コマンド・キュー・フィールドQ0〜Q6、およびフレーム・オフセット・フィールドD0〜D1は、2つの動作フィールド(op1およびop2)を有し、第2の動作(op2)のためのフィールドは、第1の動作(op1)のためのフィールドと同じ定義を有する。帯域幅を最適化するために、完了情報は、一度に2つの動作に対して送信されることが可能である。Op2は、フレームあたりの2つの動作レスポンス(すなわち、1つのストア完了動作および1つのフェッチ完了動作、2つのストア完了動作、または2つのフェッチ完了動作)をACがリターンできるようにするために使用される。エラー条件をレポートするときにACチップによってホストに送信されるレスポンス・フレームは、図7とは異なる。
一定の実施形態において分散メモリ・バッファ・システムを含むメモリ・システムの動作のさらなる詳細が説明されることになる。図8は、本開示の一実施形態による、分散バッファ・メモリ・システムを含む、メモリ・システムにデータを格納する方法を示し、説明する、一実施形態による例示的な流れ図である。便宜上、格納方法800が説明され、一連のステップまたはいくつかのステップあるいはその両方を含むものとして本開示を限定することを意図するものではないが、処理は、一連のステップとして行われる必要はなく、または、ステップは、図8について示され、説明された順序で行われる必要はなく、あるいはその両方であるが、処理は、統合されることが可能であり、または、1つもしくは複数のステップは、合わせて同時に行われることが可能であり、あるいはその両方であり、あるいはステップは、開示された順序で、または代替の順序で行われることが可能である、ということが理解されよう。
805において、ホスト(例えば、プロセッサ、メモリ・コントローラ)は、例えば図4におけるリンク460といった第1の通信リンクを介して、例えばACチップ430といったメモリ制御回路に、ホスト・タグ・プールから、ストア・データ・タグまたはホスト・タグと共にストア・コマンドを送信する。参照を容易にするために、メモリ制御回路は、本議論において、および図8において、AC回路またはACチップと呼ばれることがある。ホスト・タグ・プールからのストア・データ・タグまたはホスト・タグは、ホストのストア・コマンドと相関させ、識別する。処理の後の方で、ストア動作が完了し、動作が完了したことをホストに知らせるレスポンスがACチップからホストに送り返されるとき、このタグは、このレスポンスの一部であるので、ホストは、どの動作が完了したかを知る。図5において、アドレス(データが格納されることになるDRAMにおける位置)は、ビットA0〜A38として送信され、その一方で、動作を追跡するタグは、Q0〜Q6である。
810において、ホストは、格納されることになるデータを、例えばDCチップといったデータ・バッファ回路に、例えば、図4におけるリンク465といった、異なる第2の通信リンクを介して送信する。一実施形態において、例えばアドレス・タグといった制御信号は、ホストとデータ・バッファ回路との間の通信リンクで送信されない。データ(およびCRC)だけが、本実施形態において、ホストとデータ・バッファ回路との間の通信リンク(例えば、図4におけるリンク465)で送信される。データ・バッファ回路またはDC回路に格納されることになるデータは、構成可能な(またはプログラム可能な)遅延の後、DC回路に送信されることが可能である。遅延は、構成可能またはプログラム可能な固定された遅延であることが可能である。リンク465でアドレス・タグを送信しないことによって、データを伝送するリンク465の効率性または能力は、向上される可能性がある。参照を容易にするために、データ・バッファ回路は、本議論において、および図8において、DC回路またはDCチップと呼ばれることがある。
AC回路430およびDC回路440は、両方、一実施形態において、815において参照されるように、同じ順序で同じタグを収める、例えばローカルなストア・タグFIFOといった、別々のステート・マシン・ドリブンのアドレス・ポインタまたはアドレス・シーケンサ435、445を保持することができる。本明細書において使用されるように、AC回路およびDC回路のローカルなアドレス・シーケンサ435、445からのローカルなストア・データ・タグは、データが格納される可能性のあるデータ・バッファ回路内の位置またはアドレスへの参照である。ステート・マシン・ドリブンのアドレス・ポインタまたはアドレス・シーケンサは、バッファ(例えばデータ・バッファ回路)アドレスの位置を指すか、識別するタグのプールを有し、ステート・マシン・ドリブンのアドレス・ポインタまたはアドレス・シーケンサは、タグまたはアドレスあるいはその両方の追跡を続ける。AC回路およびDC回路のローカルなアドレス・シーケンサ435、445は、好ましくは同期され、FIFOを制御するステート・マシンが同期されるので、自動的であること、および同期されることが可能である。
820において、AC回路430は、ホストのストア・コマンドを受信すると、例えばローカルなストア・タグFIFOといったAC回路430のアドレス・シーケンサ435から、ローカルなストア・データ・タグを取得するか、取り出す。825において、ACチップは、例えばローカルなストア・データ・タグFIFOといったACチップのアドレス・シーケンサ435によって指し示された、ローカルなストア・データ・タグ(例えば、データがバッファされることになるDCチップ上の位置)にホストのストア・データ・タグを関連付けること、例えばマッピングすることを行い、インデックスまたはマッピング・テーブル436に情報を格納する。マッピング・テーブル436は、ACチップのアドレス・シーケンサ435からプルされたローカルなストア・データ・アドレス・タグをストア・データ・タグと関連付けること、または相関させること、あるいはその両方を行うテーブルである。AC回路は、830において、ホストのストア・コマンドを、ライト・ツー・バッファ(「ライト・バッファ」)コマンドおよびストア・フロム・バッファ(「ストア・バッファ」)コマンドに、デコード、加工、または分解、あるいはその組合せを行う。835において、AC回路430は、例えば、図4におけるリンク470といった、第3の異なる通信リンクを介して、ライト・ツー・バッファ・コマンドをDC回路440に送信する。一実施形態において、データ・バッファ回路440においてどこにデータを書き込むべきかを指定する、例えばローカルなストア・タグといった、制御信号は、DC回路440に送信されない。より具体的には、AC回路430は、例えば、図4におけるリンク470といった、第3の通信リンクで、ストア・データ・タグをDC回路440に送信しない。AC回路は、次に、ストア・データ・タグ(ストア・データが保持されるバッファの位置)と共にストア・フロム・バッファ・コマンドを、スケジューラにおけるストア・コマンド・バッファにプッシュすることになる。すなわち、ストア・フロム・バッファ・コマンドは、このコマンドがスケジューラによって後でスケジュールされることを可能にするべく、ACローカルなストア・タグにおけるストア・コマンド・バッファにプッシュされる(例えば、図8のフローチャートにおける850を参照)。
840において、DC回路は、例えば、図4におけるリンク470といった第3の通信リンクからライト・ツー・バッファ・コマンドを受信すると、例えば、ローカルなストア・タグFIFOといった、DC回路のローカルなアドレス・シーケンサ445からローカルなストア・データ・タグを取得すること、生成すること、または取り出すこと、あるいはその組合せを行う。DC回路のローカルなアドレス・シーケンサ445は、AC回路のローカルなアドレス・シーケンサ435と同期されて、ローカルなストア・データ・タグが、DC回路における同じ位置を指し示すようになるのが好ましい。ライト・ツー・バッファ・コマンドを受信することに応答して、845において、DC回路440は、例えば、ローカルなストア・タグFIFOといった、DC回路440のローカルなアドレス・シーケンサ445から取得すること、生成すること、または取り出すこと、あるいはその組合せが行われたストア・データ・タグによって指し示されたデータ・バッファに、例えば、図4におけるリンク465といった、第2の通信リンクから入って来た格納されることになるデータをプッシュする。DC回路440は、構成可能な(またはプログラム可能な)遅延の後、DC回路440のバッファにデータをプッシュすることができる。
850において、AC回路430は、ストア・フロム・バッファ・コマンドをスケジュールし、例えば、図4におけるリンク480といった第4の通信リンクを介して、1つまたは複数のメモリ・デバイス450にストア・コマンドを送信する。ストア・コマンドは、ストア・コマンド、およびメモリ・デバイス内のどこにデータが格納されることになるかについてのアドレス位置、を含むことができる。このストア・コマンドは、別々のライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに、以前にデコードまたは分解されたホストのストア・コマンドと同種のものである。一実施形態において、これは、ストア・コマンド、および、メモリ・デバイスにデータが格納されることになるアドレス・タグまたは位置、を含むDDR4ストア動作であることが可能である。AC回路430は、855において、例えば、図4におけるリンク470といった第3の通信リンクを介して、ストア・データ・タグと共にストア・フロム・バッファ・コマンドも、DC回路440に送信する。DC回路に送信されたストア・データ・タグは、メモリ・デバイスに格納されることになるデータが、DC回路内のどこにあるかをDC回路に知らせるローカルなタグである。860において、DC回路440は、例えば、図4におけるリンク470といった第3の通信リンクを介して、AC回路430から受信されたストア・データ・タグによって指し示されたデータ・バッファから、格納されることになるデータをプルする。865において、DC回路440は、例えば、図4におけるリンク490といった第5の通信リンクを介して、格納されることになるデータをメモリ・デバイス450に送信する。メモリ・デバイスの視点からは、メモリ・デバイスは、AC回路とDC回路の組合せから、一実施形態においてDDR4ストア動作である、ストア動作を見る。
870において、DC回路440は、例えば、DC回路440のローカルなストア・タグFIFOといった、DC回路440のアドレス・シーケンサ445にストア・データ・タグをプッシュして戻す。AC回路430は、AC回路430のローカルなストア・データ・タグをマッピング・テーブルへのインデックスとして使用し、875において、AC回路のマッピング・テーブル436からホストのストア・データ・タグを検索する。880において、AC回路430は、例えば、ACチップのローカルなストア・タグFIFOといった、AC回路430のアドレス・シーケンサ435に、AC回路430のローカルなストア・データ・タグをプッシュして戻す。885において、AC回路430は、例えば、図4におけるリンク460といった第1の通信リンクを介して、ホストのストア・データ・タグをホストにリターンする。ホスト・タグのリターンは、このタグと関連付けられた動作またはコマンドが完了したことを示す。また、890において、ホストは、ホスト・タグ・プールにストア・データ・タグをリターンして戻す。図8は、一連のステップとして方法を開示し、説明するが、上述の順序、および図8における順序は変更されることが可能であるということが理解されよう。
メモリ・システムにデータを格納するシステム、アーキテクチャ、および方法の一態様において、メモリ制御回路は、リモート・アドレス・シーケンサを使用して、データ・バッファ回路のライト・バッファ内のどこに次のストア動作のためのデータを書き込むべきかについての追跡を続ける。同期されたステート・マシン・ドリブンのアドレス・ポインタまたはアドレス・シーケンサを使用して、例えばバッファ・アドレスといった、データ・バッファ回路内のどこにデータが書き込まれるべきかを追跡することは、ホストとDCチップとの間のデータ・リンクの効率性、および、ACチップとDCチップとの間のリンクの効率性を改善するはずである。図9は、AC回路が制御するアドレス・シーケンサを伴う分散メモリ・バッファ・システムが、リモート・シーケンサを使用して、例えばDCチップといったデータ・バッファ回路のライト・バッファ内のどこに次の動作のためのデータを書き込むべきかについての追跡を、どのように続けることができるかについての方法を示し、説明する例示的なフローチャートを示す。図9の方法は、ACチップおよびDCチップの、マッピング・テーブル、および、例えば、ローカルなストア・タグFIFOといった、ステート・マシン・ドリブンのアドレス・ポインタまたはアドレス・シーケンサ435、445を示す図10に関して説明される。方法900は、便宜上説明され、一連のステップまたはいくつかのステップあるいはその両方を含むものとして本開示を限定することを意図するものではないが、処理は、一連のステップとして行われる必要はなく、または、ステップは、図9について示され、説明された順序で行われる必要はなく、あるいはその両方であるが、処理は、統合されることが可能であり、または、1つもしくは複数のステップは、合わせて同時に行われることが可能であり、あるいはその両方であり、あるいはステップは、開示された順序で、または代替の順序で行われることが可能である、ということが理解されよう。
図9の例示的な方法において、905において、ストア・データ・タグと共にストア・コマンドを、ホスト402は送信し、メモリ制御回路430は受信する。ストア・データ・タグは、ホスト・タグ・プール406からホストが取得すること、生成すること、または取り出すことを行ったホストのストア・データ・タグであることが可能である。参照を容易にするために、図9および図10におけるメモリ制御回路は、代替として、AC回路またはACチップと呼ばれることがある。図10において示された例において、ホスト402は、ホスト・タグ・プール406からストア・データ・タグ「G」を得る。ストア・データ・タグは、ホストのストア・コマンドを相関させ、識別する。ストア・コマンドは、データを格納することになるメモリ・デバイス内の位置を識別し、図5において、ビットA0〜A38は、データを格納することになるメモリ・デバイス内の位置であるが、その一方で、ビットQ0〜Q6は、コマンドを識別するために使用されるホスト・タグである。ストア・コマンドを受信すると、AC回路は、図9における910において、AC回路のローカルなアドレス・シーケンサから次のタグを取得するか、取り出す。図10の例において、AC回路430が、例えば、ローカルなストア・タグFIFO435といった、AC回路430のローカルなアドレス・シーケンサから取り出す次のタグは、タグ#29である。
AC回路は、図9における915において、例えば、ローカルなストア・データ・タグといった、AC回路のアドレス・シーケンサ435から取得されたローカルなタグと、ストア・フロム・バッファ・コマンドを関連付け、ホスト・タグ・プールから受信されたストア・データ・タグに、例えば、ローカルなストア・データ・タグといった、AC回路のアドレス・シーケンサからのタグをマッピングし、図10に示されるようなマッピング・テーブル436に情報(例えば、関係、関連付け)を格納する。このように、ローカルなストア・データ・タグは、ホストから受信されたコマンドおよびストア・データ・タグと関連付けられる。図10の例において、AC回路のアドレス・シーケンサ435からの次のタグは、タグ#29であり、ローカルなストア・データ・タグ#29は、ストア・データ・タグ#29がホスト・タグGと関連付けられるように、ホストのストア・データ・タグGにマッピングされる。
AC回路は、図9における920において、図10において示された、例えば、ローカルなストア・タグFIFO445といった、DC回路440のローカルなアドレス・シーケンサから次のタグを取得するか、取り出すために、ライト・ツー・バッファ・コマンドをDC回路440に送信して、DC回路440に知らせる。図9における925において、DC回路は、例えば、ローカルなストア・タグFIFO445といった、DC回路のローカルなアドレス・シーケンサから次のタグを加工すること、取得すること、または取り出すことを行い、DC回路のローカルなアドレス・シーケンサ445によって指し示されたデータ・バッファの位置にホスト402からのデータを格納する。図10の例において、DC回路は、例えば、DC回路のローカルなストア・タグFIFOといった、DC回路のローカルなアドレス・シーケンサ445からタグ#29を取得し、タグ#29と相関関係があるデータ・バッファの位置にホストからのデータを格納する。AC回路430のローカルなアドレス・シーケンサ435は、例えばメモリ・バッファといった、DC回路における同じアドレス/位置をシーケンサが指し示すように、DC回路440のローカルなアドレス・シーケンサ445と同期されるはずである。
図10において示されたAC回路のスケジューラ448は、図9における930において、AC回路のマッピング・テーブルにおける関連付けられたローカルなストア・タグと共にストア・コマンドを、メモリ・デバイスに発行する。図9および図10の例において、AC回路430は、タグ#29と関連付けられたストア・コマンドを、図4におけるメモリ・デバイス450に送信する。AC回路は、コマンド(フェッチまたはストア)をメモリ・デバイスに、およびメモリ・アドレス(図5におけるA0〜A38)をメモリ・デバイスに、送信する。AC回路は、図9における935において、ローカルなストア・データ・タグと共にストア・フロム・バッファ・コマンドをDC回路に送信する。図10の例において、AC回路のスケジューラ438は、タグ#29と関連付けられたストア・フロム・バッファ・コマンドをDC回路440に発行する。図9における940において、DC回路は、AC回路から受信されたローカルなストア・タグを使用してバッファの位置からデータを検索する。図10の例において、DC回路440は、AC回路430から受信されたローカルなタグ#29を使用してバッファの位置#29からデータを検索する。
DC回路は、図9における945おいて、データをメモリ・デバイスに格納する。図10の例において、DC回路440は、ホストのストア・コマンドによって元々識別されていた位置(図5におけるビットA0〜A38によって識別される位置またはアドレス)に、メモリ・デバイス(例えば、図4におけるメモリ・デバイス450)へのデータを格納する。DC回路440は、図9における950において、例えばローカルなストア・タグFIFOといった、DC回路440のアドレス・シーケンサにローカルなタグをプッシュして戻す。図10の例において、DC回路440は、DC回路440のローカルなストア・タグFIFO445にタグ#29をプッシュして戻すか、リターンする。図9における955において、AC回路430は、ローカルなストア・タグをインデックスとして使用することによって、AC回路430のマッピング・テーブル436からホスト・タグを検索し、955において、ホストのストア・データ・タグをホストにリターンする。図10の例において、AC回路は、タグ#29をインデックスとして使用することによって、AC回路のマッピング・テーブル436からホスト・タグGを検索し、ホストのストア・データ・タグGをホストにリターンする。図9における960において、AC回路430は、AC回路430のローカルなストア・データ・タグを、AC回路430のローカルなアドレス・シーケンサにプッシュして戻す。図10の例において、AC回路430は、AC回路430のローカルなストア・データ・タグ#29を、ローカルなストア・タグFIFO435にプッシュするか、リターンして戻す。ホストは、図9における965において、ホストのストア・データ・タグをホスト・タグ・プールにリターンして戻す。図10の例において、ホスト402は、ホストのストア・データ・タグGをホスト・タグ・プール406にリターンして戻す。
メモリ・システムにデータを格納する一実施形態による代替方法が、図11において示される。方法1100は、便宜上説明され、一連のステップまたはいくつかのステップあるいはその両方を含むものとして本開示を限定することを意図するものではないが、処理は、一連のステップとして行われる必要はなく、または、ステップは、図11について示され、説明された順序で行われる必要はなく、あるいはその両方であるが、処理は、統合されることが可能であり、または、1つもしくは複数のステップは、合わせて同時に行われることが可能であり、あるいはその両方であり、あるいはステップは、開示された順序で、または代替の順序で行われることが可能である、ということが理解されよう。
図11の例示的な方法において、1105において、ホストは、ストア・コマンドを、ライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに分解する。1110において、例えば、図4におけるリンク465といった、ホストとDC回路との間の通信リンクで、ストア・データおよびライト・ツー・バッファ・コマンドを、ホストは送信し、DCチップは受信する。1115において、ACチップとDCチップは両方、同期され、同じ順序で同じタグを収める、別々のローカルなステート・マシン・ドリブンのアドレス・ポインタまたはローカルなアドレス・シーケンサ(例えば、ローカルなストア・タグFIFO)を保持する。本実施形態において、ローカルなストア・タグは、例えば、DC回路内のアドレスまたは位置といった、メモリ・データ・バッファ回路内の位置を識別する。1120において、例えば、図4におけるリンク460といった、ホストとAC回路との間の通信リンクを介して、ホスト・プールからのストア・データ・タグ(例えば、ホスト・タグ)と共にストア・コマンドを、ホストは送信し、AC回路は受信する。
1125において、AC回路は、ホストのストア・データ・コマンドを受信すると、AC回路のローカルなアドレス・シーケンサ(例えば、ACのストア・タグFIFO)からローカルなストア・データ・タグを取得する。AC回路は、1130において、ACローカルなアドレス・シーケンサから受信または取得されたACローカルなストア・データ・タグにホストのストア・データ・タグを関連付けるか、マッピングし、マッピング・テーブルに関連付けを格納する。1135において、AC回路は、ホストのストア・コマンドをストア・フロム・バッファ・コマンドにデコードする。本実施形態において、ホストからDC回路にライト・ツー・バッファ・コマンドが直接的に送信されるので、AC回路は、ライト・ツー・バッファ・コマンドをDC回路に送信する必要はない。1140において、AC回路は、(バッファ・メモリまたはDC回路におけるアドレス位置に対応し、アドレス位置を識別する)AC回路のローカルなアドレス・シーケンサから受信されたローカルなストア・データと共にストア・フロム・バッファ・コマンドを、AC回路のスケジューラにおけるストア・コマンド・バッファにプッシュする。1145において、DC回路440は、ライト・ツー・バッファ・コマンドを受信すると、例えば、ローカルなストア・タグFIFOといった、DC回路440のアドレス・シーケンサ445からローカルなストア・データ・タグを取得するか、取り出し、1150において、DC回路440のローカルなアドレス・シーケンサから取得されたストア・データ・タグによって指し示されたデータ・バッファにストア・データを格納する。
図11におけるデータを格納する処理は、図8におけるブロック850からブロック890において示され、上述された動作で継続する。データを格納する本実施形態において、AC回路430は、ホストのストア・コマンドをストア・フロム・バッファ・コマンドにデコードする。DC回路(バッファ・メモリ)内のどこにデータを格納するべきかをDC回路が知っているので、AC回路430は、ライト・ツー・バッファ・コマンドをDC回路440に送信する必要はもはやない。本実施形態において、AC回路430とDC回路440との間のBCOMリンクの帯域幅は、ライト・ツー・バッファ・コマンドに利用されない。しかし、ホストとDC回路との間のリンクの帯域幅は、データを移送するためだけに使用されない。図8および図9の方法におけるように、AC回路とDC回路のローカルなタグFIFOを取り出すようにAC回路がDC回路に命令する代わりに、AC回路とDC回路のローカルなタグFIFOを取り出すようにホストがDC回路に命じる。
同期されたステート・マシンを使用して、データが書き込まれるべきバッファ・アドレスを格納するアドレス・ポインタを追跡することは、ホストとDCチップとの間、およびACチップとDCチップとの間のデータ・リンクの効率性を改善するが、信頼性問題を作り出す可能性もある。例えばローカルなストア・タグFIFOなどの、例えばアドレス・シーケンサといった、ステート・マシン・ドリブンのアドレス・ポインタが同期しなくなる場合、データ・バッファ回路は、メモリ・デバイス内の、メモリ制御回路(ACチップ)がデータを格納するように命じることになる場所とは異なるアドレスにストア・データを連続的に書き込むことになる。これが発生すると、例えばアドレス・シーケンサといったステート・マシンのうちの1つが同期していないことを検出する方式はなく、エラーは、読み取り動作からECCエラー(が検出される)まで気づかれないままである可能性がある。例えば、同期されていないステート・マシンによって以前に格納された位置といった、欠陥データと関連付けられたアドレスに対して読み取り動作が行われるとき、ECCは、悪化するであろう。
同期が外れることによる、メモリ制御回路(ACチップ)およびデータ・バッファ回路(DCチップ)の、例えばローカルなストア・タグFIFOといった、アドレス・シーケンサのリスクを低減するために、周期的タグ・チェックおよび再同期処理が実行されることが可能である。一実施形態において、メモリ制御回路(AC回路)は、BCOMリンクの非稼働サイクル中に、次に使用されることになるストア・データ・タグをデータ・バッファ回路(DCチップ)に送信すること、または、代替実施形態において、データ・バッファ回路すなわちDCチップは、次に使用されることになるストア・データ・タグをホストに送信すること、あるいは両方を行うことができる。両方の処理が、下記においてより詳細に説明される。
メモリ制御回路およびデータ・バッファ回路のステート・マシン・ドリブンのアドレス・ポインタが同期していないかどうかをチェックする1つの方法が、図12におけるフローチャートにおいて図式的に示される。図12における方法1200は、便宜上説明され、一連のステップまたはいくつかのステップあるいはその両方を含むものとして本開示を限定することを意図するものではないが、処理は、一連のステップとして行われる必要はなく、または、ステップは、図12について示され、説明された順序で行われる必要はなく、あるいはその両方であるが、処理は、統合されることが可能であり、または、1つもしくは複数のステップは、合わせて同時に行われることが可能であり、あるいはその両方であり、あるいはステップは、開示された順序で、または代替の順序で行われることが可能である、ということが理解されよう。
図12における1205において、DCチップの全ては、DCチップのローカルなアドレス・シーケンサからの、DCチップの「次に書き込まれることになるアドレス」をホストに送信する。例えば、図4におけるDCチップ440は、第2のリンク465を介して、例えば、図10におけるローカルなストア・タグFIFO445といった、DCチップ440のローカルなアドレス・シーケンサからの、例えばローカルなストア・データ・タグといった、DCチップ440の、次に書き込まれることになるアドレスを、ホストに送信することができる。図12における1210において、各DCチップ440から受信されたタグは、好ましくはホストによって比較される。DCチップからのタグのいずれかが異なる場合、1215において、システムがリカバリ・モードに入ることになるように、リンク460を介して、好ましくはホストによって、ACチップ430にリカバリ・コマンドが発行されることが可能である。リカバリの一部として、図12における1220において、ACチップ430は、リンク470を介して、DCチップ440をリセットすることができる。システムは、ホストへのリンクが非稼働であるとき、または、設定された頻度もしくは時間期間に応じて、チェックが以前に発生しなかった場合、ACチップのローカルなアドレス・シーケンサとDCチップのローカルなアドレス・シーケンサとの同期を周期的にチェックする処理を受けることが可能である。メモリ制御回路(ACチップ)が、システムに対する、例えばアドレス・シーケンサといったアドレス・ポインタを制御しているときに、ホストは、データ・バッファ回路(DCチップ)が正しいアドレス・タグを送信しているかどうかを知らないということに留意されたい。ホストは、DCチップが全て同じ次に書き込まれることになるアドレスをレポートしないということから、エラーが発生したということを検出するにすぎない。ホストは、データ・バッファ回路(DCチップ)の状態レジスタを読み、どこでエラーが発生したか、エラーは何であったかを確認することができる。しかし、同期していないアドレス・シーケンサ(ポインタ)を2つ以上のDCチップが有することになるという可能性は非常に低いので、状態レジスタに問い合わせなくても、どのDCチップがエラーを得たものをホストが区分けすることができる可能性がある。
リカバリ・モードは、以下のアクションの1つまたは複数を含むことができる。例えば、プロセッサまたはホスト・メモリ・コントローラといった、ホストは、メモリ・チャネルで新しい動作を送出するのを停止することができ、ホストは、未完了の全てのストア動作をフラッシュすること、または、ホストは、全てのフェッチ動作が完了するのを待つこと、あるいは両方を行うことができる。例えば、データ・キューが排出される可能性がある、レーンが割愛される可能性がある、など、妥当なアクションが行われる可能性がある。アクションは、頻繁なエラーを得ている場合、欠陥のあるDCチップを除去すること、または割愛することを含むことができる。これらのアクションのうちのいくつかは、典型的には、メモリ・システム上の非本線モードに入る必要がある。ホストは、メモリ制御回路(ACチップ)とデータ・バッファ回路(DCチップ)の全てに、ACチップとDCチップのステート・マシン・ドリブンのアドレス・ポインタまたはアドレス・シーケンサを再初期化させる、ステート・マシン・リセット動作を発行することもできる。ACチップは、リンク470を介してコマンドを送信することによって、DCチップローカルなアドレス・シーケンサをリセットすることができる。好ましい実施形態において、このようなアクションは、非本線動作になるであろう。妥当なアクションを行った後、システムおよびホストは、メモリ・チャネルでコマンドを発行することを再開することができる。
メモリ制御回路(ACチップ)およびデータ・バッファ回路(DCチップ)のローカルなアドレス・シーケンサが同期していないかどうかをチェックする代替方法が、図13のフローチャートにおいて示される。図13における方法1300は、便宜上説明され、一連のステップまたはいくつかのステップあるいはその両方を含むものとして本開示を限定することを意図するものではないが、処理は、一連のステップとして行われる必要はなく、または、ステップは、図13について示され、説明された順序で行われる必要はなく、あるいはその両方であるが、処理は、統合されることが可能であり、または、1つもしくは複数のステップは、合わせて同時に行われることが可能であり、あるいはその両方であり、あるいはステップは、開示された順序で、または代替の順序で行われることが可能である、ということが理解されよう。
ローカルなアドレス・シーケンサが同期しているかどうかをチェックする方法は、是正措置を受けることを含むこともできる。一実施形態において、是正措置は、ACチップが周期的同期コマンドをDCチップに送信することを含むことができる。一実施形態において、ACチップは、BCOMリンク470が非稼働であるかどうかをチェックすることができる。代替として、またはこれらに加えて、一定時間またはいくつかの動作の後にローカルなアドレス・シーケンサがチェックされない場合、システムは、それでも、図13について下記において説明されるような、一実施形態による同期チェックを受けることが可能である。通信リンク470が完全に利用されるシステムにおいて、プログラム可能な時間の後、ACチップ430の、次に使用されることになるタグを、ACチップ430が送信するための非稼働サイクルが見つからない場合、ACチップ430は、システムが同期チェックを受けることができるように、リンク470を介して、次に使用されることになるストア・データ・タグをDCチップ440の全てにACチップ430が送信した後、ACチップ430のスケジューラ438に信号を送って休止する。図13における1305において、メモリ制御回路(ACチップ)は、例えば、ACチップのローカルなストア・タグFIFOといった、ACチップのローカルなアドレス・シーケンサからの次に書き込まれることになるアドレス(タグ)を、データ・バッファ回路(DCチップ)に送信することができる。1つの例において、ACチップ430は、BCOMバス(リンク470)で、ACチップ430のローカルなストア・タグFIFO435からの、ACチップ430の、次に書き込まれることになるアドレス・タグを、DCチップ440に送信することができる。図13における1310において、各DCチップ440は、例えば、DCチップ440のローカルなストア・データ・タグFIFO445といった、DCチップ440のローカルなアドレス・シーケンサからの、DCチップ440の、次に書き込まれることになるアドレス(タグ)を、ACチップ430によって送信されたタグと比較し、DCチップのアドレス・ポインタ(アドレス・シーケンサ)が正しいことをチェックする。DCチップ440のうちの1つが、エラーになった場合、図13における1315において、DCチップ440は、リンク475で、ATTN信号によってACチップ430に通知する。
このATTN信号は、これが有線の論理和信号なので、どのDCチップがエラーを得たかについての情報を提供しない。図13における1320において、ACチップ430は、次に、リンク460を介して、エラーATTN信号をホストに送信する。ホストは、次に、リカバリ・モードに入ることができる。注意信号を受信すると、ホストは、図13における1325において、リンク460を介して、リカバリ・コマンドをACチップ430に発行することができる。しかし、ホストは、アドレス・シーケンサ(アドレス・ポインタ)からの次のアドレスをホストにDCチップが単純に送信したときのように、何が誤っているのか、およびどこなのかということを、もはや知らない。システムは、リカバリ・モードに入ることができ、これによって、ホストは、メモリ・チャネルで新しい動作を送出するのを停止すること、および全ての未完了動作をフラッシュすることができる。フェッチ動作およびストア動作は、何が誤っているのか、またはどこなのかをホストが知らないので、フラッシュされるはずである。システムは、非本線動作に入ることができる。ホストは、DCチップのレジスタから状態レジスタを読み、どこで、および、どのエラーが発生したかを確認することができる。今や、ホストは、何が誤っているのか、およびどこなのかを知っているので、ホストは、おそらく、アクションを行うことができる。アクションは、頻繁なエラーを得ている場合、欠陥のあるDCチップを割愛することであることが可能である。アクションは、例えばアドレス・シーケンサといった、ACチップとDCチップのステート・マシン・ドリブンのアドレス・ポインタを、ACチップとDCチップの全てに再初期化させるステート・マシン・リセット動作を発行することをさらに含むことができる。ACチップは、図13における1330において、リンク470を介して、DCチップ440をリセットすることができる。妥当なアクションの後、システムは、非本線モードを出て、メモリ・チャネルでコマンドを発行することを再開することができる。
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであることが可能である。コンピュータ・プログラム製品は、本発明の態様をプロセッサに行わせるための、コンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(または複数の媒体)を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のための命令を保持および格納することができる有形デバイスであることが可能である。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述のいずれかの適切な組合せであることが可能であるがこれらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の完全に網羅されていないリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD−ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されたパンチ・カードまたは溝内隆起構造などの機械的にエンコードされたデバイス、および前述のいずれかの適切な組合せを含む。コンピュータ可読ストレージ媒体は、本明細書において使用されるように、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号など、それ自体が一過性の信号であると解釈されるべきではない。
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から個々のコンピューティング・デバイス/処理デバイスに、あるいは、例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せといったネットワークを介して外部コンピュータまたは外部ストレージ・デバイスに、ダウンロードされることが可能である。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含むことができる。各コンピューティング・デバイス/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、個々のコンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するためにコンピュータ可読プログラム命令を転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Smalltalk(R)、C++、もしくは同様のものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語、もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む1つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードであることが可能である。コンピュータ可読プログラム命令は、スタンド・アロンのソフトウェア・パッケージとして、全面的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で実行することができ、部分的にユーザのコンピュータ上および部分的にリモート・コンピュータ上で、または全面的にリモート・コンピュータもしくはサーバ上で実行することができる。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)、もしくは広域ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されることが可能であり、または、接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて)外部コンピュータに対して行われることが可能である。いくつかの実施形態において、例えば、プログラム可能論理回路機器、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路機器は、本発明の態様を行うために、コンピュータ可読プログラム命令の状態情報を利用して電子回路機器を個別化にすることによって、コンピュータ可読プログラム命令を実行することができる。
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャートまたはブロック図あるいはその両方を参照しながら本明細書において説明される。フローチャートまたはブロック図あるいはその両方の各ブロック、およびフローチャートまたはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実行されることが可能であるということが理解されよう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサによって実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為を実行するための手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または機械を生み出す他のプログラム可能データ処理装置のプロセッサに提供されることが可能である。特定の手法で機能することを、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに指図することができるこれらのコンピュータ可読プログラム命令は、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為の態様を実行する命令を含む製品を、命令が格納されたコンピュータ可読ストレージ媒体が含むべく、コンピュータ可読ストレージ媒体に格納されることも可能である。
コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為を実行するべく、コンピュータ実行処理を生み出すコンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップが行われるようにするために、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードされることも可能である。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートまたはブロック図の中の各ブロックは、指定された論理機能を実行するための1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または一部を表現することができる。いくつかの代替実装形態において、ブロックに記された機能は、図に記された順序とは異なる順序で発生することが可能である。例えば、連続して示された2つのブロックは、実質的に並行して実行されることが可能であり、またはブロックは、含まれる機能に応じて逆の順序で時には実行されることが可能である。ブロック図またはフローチャートあるいはその両方の各ブロック、およびブロック図またはフローチャートあるいはその両方におけるブロックの組合せは、指定された機能または行為を行うか、専用ハードウェアとコンピュータ命令との組合せを実行する、専用ハードウェア・ベースのシステムによって実行されることが可能であるということにも留意されたい。
その上、様々な実施形態によるシステムは、プロセッサ、およびプロセッサと統合された、またはプロセッサによって実行可能な、あるいはその両方のロジックを含むことができ、ロジックは、本明細書において列挙される処理ステップの1つまたは複数を行うように構成される。統合されることが意味することは、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、などのハードウェア・ロジックとして、プロセッサがロジックを埋め込んでいるということである。プロセッサによって実行可能であることが意味することは、ロジックが、ハードウェア・ロジックであるか、または、ファームウェア、オペレーティング・システムの一部、アプリケーション・プログラムの一部、などのソフトウェア・ロジックであるか、または、プロセッサによってアクセス可能であり、プロセッサによって実行されると、いくつかの機能をプロセッサに行わせるように構成された、ハードウェアとソフトウェア・ロジックの何らかの組合せである、ということである。ソフトウェア・ロジックは、当技術分野で知られているような、任意のメモリ・タイプのローカル・メモリまたはリモート・メモリあるいはその両方に格納されることが可能である。ソフトウェア・プロセッサ・モジュール、またはASIC、FPGA、中央処理装置(CPU)、集積回路(IC)、グラフィックス処理ユニット(GPU)、などのハードウェア・プロセッサ、あるいはその両方など、当技術分野で知られた任意のプロセッサが使用されることが可能である。
前述のシステムまたは方法あるいはその両方の様々な特徴は、上記において提示された説明から複数の組合せを作り出すいずれかの方式で組み合わされることが可能であるということが明らかであろう。
本発明の実施形態は、オンデマンドでサービスを提供するために、顧客の代わりに展開されたサービスの形態で提供されることが可能であるということがさらに認識されよう。
本発明の様々な実施形態の説明が例証のために提示されてきたが、網羅的であること、または開示された実施形態に限定されることを意図するものではない。説明された実施形態の範囲および思想から逸脱することなく、多くの修正および変更が当業者には明らかであろう。本明細書において使用される専門用語は、実施形態の原理、実用的な用途、もしくは市場において見つかる技術に対する技術的改良、を最も良く説明するように、または、本明細書において開示された実施形態を当業者が理解できるように、選ばれた。

Claims (25)

  1. コマンドがホストから受信されるのに応答してデータを格納するためのメモリ・システムであって、
    前記ホストからコマンドを受信し、コマンドおよび制御信号を出力するためのメモリ制御回路と、
    データを格納し、前記メモリ制御回路からコマンド信号を受信するように構成された少なくとも1つのメモリ・デバイスと、
    前記少なくとも1つのメモリ・デバイスと関連付けられた少なくとも1つのデータ・バッファ回路と、
    前記ホストと前記少なくとも1つのデータ・バッファ回路との間でデータを通信するためのデータ通信リンクと、
    前記メモリ制御回路と前記少なくとも1つのデータ・バッファ回路との間の制御通信リンクと、
    を備え、
    前記メモリ制御回路が、
    ストア・コマンドおよびストア・データ・タグを前記ホストから受信することに応答して、メモリ制御回路のローカルなアドレス・シーケンサからローカルなストア・データ・タグを取得すること、
    前記ホストのストア・データ・タグを前記メモリ制御回路のストア・データ・タグと関連付けること、ならびに
    前記メモリ制御回路内のマッピング・テーブルに前記関連を格納すること
    を行うように構成される、メモリ・システム。
  2. 前記少なくとも1つのデータ・バッファ回路にデータを格納するための位置を指定するストア・データ・タグは、前記ホストと前記少なくとも1つのデータ・バッファ回路との間の前記データ通信リンクで、前記少なくとも1つのデータ・バッファ回路に送信されない、請求項1に記載のシステム。
  3. 前記メモリ制御回路が、
    前記ホストのストア・コマンドを受信することに応答して、前記ストア・コマンドを、ライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに加工することと、
    前記制御通信リンクで、少なくとも1つのデータ・バッファ回路に前記ライト・ツー・バッファ・コマンドを送信するが、前記データ・バッファ回路に前記データを格納するための前記位置を指定するタグを前記データ・バッファ回路に送信しないことと
    を行うようにさらに構成される、請求項2に記載のシステム。
  4. 前記データ・バッファ回路が、前記データ・バッファ回路内のどこにストア動作のためのデータを書き込むかを追跡するための論理回路を含む、請求項3に記載のシステム。
  5. 前記データ・バッファ回路が、
    ライト・ツー・バッファ・コマンドを受信することに応答して、前記少なくとも1つのデータ・バッファ回路内の格納位置を指し示すデータ・バッファ回路のローカルなアドレス・シーケンサからローカルなストア・データ・タグを取得することと、
    前記データ・バッファ回路のローカルなアドレス・シーケンサによって指し示されたデータ・バッファに、入って来たストア・データをプッシュすることと
    を行うように構成される、請求項4に記載のシステム。
  6. 前記メモリ制御回路が、前記メモリ制御回路のローカルなアドレス・シーケンサから受信された前記ローカルなストア・データ・タグと共に前記ストア・フロム・バッファ・コマンドを前記少なくとも1つのデータ・バッファ回路に、前記制御通信リンクで送信すること、および、前記少なくとも1つのメモリ・デバイスに前記ストア・コマンドを送信すること、を行うようにさらに構成される、請求項3に記載のシステム。
  7. 前記少なくとも1つのデータ・バッファ回路が、前記制御通信リンクで前記メモリ制御回路から受信された前記ストア・データ・タグによって指し示された前記データ・バッファの位置からストア・データをプルすること、および前記少なくとも1つのメモリ・デバイスに前記ストア・データを送信すること、を前記少なくとも1つのデータ・バッファ回路に行わせるようにさらに構成される、請求項6に記載のシステム。
  8. 前記メモリ制御回路が、論理回路を有し、ストア動作時にデータを書き込むための前記メモリ制御回路内の前記論理回路が、データを書き込むことになる前記少なくとも1つのデータ・バッファ回路の次のアドレス・タグ位置を識別するステート・マシン・ドリブンのローカルなアドレス・ポインタを備え、前記少なくとも1つのデータ・バッファ回路が、データを書き込むことになる前記少なくとも1つのデータ・バッファ回路の前記次のアドレス・タグ位置を識別するステート・マシン・ドリブンのローカルなアドレス・ポインタを備え、前記メモリ制御回路の前記ステート・マシン・ドリブンのローカルなアドレス・ポインタが、前記少なくとも1つのデータ・バッファ回路の前記ステート・マシン・ドリブンのローカルなアドレス・ポインタと同期される、請求項1に記載のシステム。
  9. 前記メモリ制御回路のローカルなアドレス・シーケンサと前記少なくとも1つのデータ・バッファ回路のローカルなアドレス・シーケンサが両方、同じ順序で同じタグを収める、請求項8に記載のメモリ・システム。
  10. 前記メモリ制御回路が、前記少なくとも1つのデータ・バッファ回路にライト・ツー・バッファ・データ・タグを送信しない、請求項8に記載のメモリ・システム。
  11. 前記データ通信リンクが、前記ホストと前記少なくとも1つのデータ・バッファ回路との間、および、前記少なくとも1つのデータ・バッファ回路と前記少なくとも1つのメモリ・デバイスとの間の通信リンクを含み、データおよびCRCだけが、前記少なくとも1つのデータ・バッファ回路と前記ホストとの間の前記通信リンクで伝送される、請求項8に記載のメモリ・システム。
  12. 少なくとも1つのモジュールをさらに備え、前記モジュールが、前記モジュール上の単一チップ上に形成された前記メモリ制御回路を有し、前記モジュール上の別々のチップ上に形成されたデータ・バッファ回路のグループ、および、前記モジュール上のチップとして形成され、グループに編成された複数のメモリ・デバイスを有し、前記メモリ制御回路が、データを書き込むことになる前記データ・バッファ回路の次のアドレス・タグ位置を識別するステート・マシン・ドリブンのローカルなアドレス・ポインタを備え、前記データ・バッファ回路のそれぞれが、データを書き込むことになる前記データ・バッファ回路における前記次のアドレス・タグ位置を識別するステート・マシン・ドリブンのローカルなアドレス・ポインタを備え、前記メモリ制御回路の前記ステート・マシン・ドリブンのローカルなアドレス・ポインタが、前記データ・バッファ回路全ての前記ステート・マシン・ドリブンのローカルなアドレス・ポインタと同期される、請求項1に記載のメモリ・システム。
  13. メモリ・デバイスにデータを読み書きするためのメモリ・システムであって、
    ホストからコマンドを受信し、コマンドおよび制御信号を出力するための少なくとも1つのメモリ制御回路であって、順番に並べられたローカルなストア・タグ位置を有するローカルなアドレス・シーケンサを有する、メモリ制御回路と、
    データを読み込んで格納すること、および前記メモリ制御回路からコマンド信号を受信すること、を行うように構成された少なくとも1つのメモリ・デバイスと、
    前記少なくとも1つのメモリ制御回路と関連付けられた少なくとも1つのデータ・バッファ回路であって、前記少なくとも1つのメモリ制御回路の前記ローカルなアドレス・シーケンサと同じ順番のローカルなストア・タグ位置を有するローカルなアドレス・シーケンサを有する、データ・バッファ回路と、
    前記ホストと前記少なくとも1つのデータ・バッファ回路との間でデータを通信するためのデータ通信リンクと、
    前記メモリ・システムの読み書き動作信号を伝送するための、前記少なくとも1つのメモリ制御回路と前記少なくとも1つのメモリ・デバイスと前記少なくとも1つのデータ・バッファ回路との間の制御通信リンクと
    を備え、
    前記少なくとも1つのメモリ制御回路が、
    ストア・コマンドを、ライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに加工すること、
    ストア・コマンドを受信すると、前記少なくとも1つのメモリ制御回路のローカルなアドレス・シーケンサからローカルなストア・データ・タグを取得すること、
    前記少なくとも1つのデータ・バッファ回路に前記ライト・ツー・バッファ・コマンドを送信すること、
    前記少なくとも1つのメモリ・デバイスに前記ストア・コマンドを送信すること、および
    ストア・データ・タグと共に前記ストア・フロム・バッファ・コマンドを前記少なくとも1つのデータ・バッファ回路に送信すること、
    を行うように構成され、
    前記少なくとも1つのデータ・バッファ回路が、
    前記ライト・ツー・バッファ・コマンドを受信すると、前記少なくとも1つのデータ・バッファ回路のローカルなアドレス・シーケンサからローカルなストア・データ・タグを取得すること、
    前記少なくとも1つのデータ・バッファ回路の前記ローカルなアドレス・シーケンサによって取得された前記ローカルなストア・データ・タグによって指し示されたデータ・バッファに、入って来たストア・データを送信すること、
    前記少なくとも1つのメモリ制御回路から受信されたストア・データ・タグによって指し示されたローカルなデータ・バッファからストア・データをプルすること、および
    前記少なくとも1つのメモリ・デバイスにストア・データを送信すること、
    を行うように構成される、メモリ・システム。
  14. メモリ・デバイスにデータを格納するための方法であって、
    ホストのストア・コマンドを受信すると、メモリ制御回路内のアドレス・シーケンサからローカルなストア・データ・タグを取得することと、
    前記メモリ制御回路のローカルなストア・データ・タグにホスト・タグを関連付けること、および前記関連付けられたタグをマッピング・テーブルに格納することと、
    前記メモリ制御回路におけるストア・コマンドを、ライト・ツー・バッファ・コマンドとストア・フロム・バッファ・コマンドに加工することと、
    前記ライト・ツー・バッファ・コマンドをデータ・バッファ回路に送信することと、
    データ・バッファ回路内のアドレス・シーケンサからローカルなストア・データ・タグを取得することと、
    前記データ・バッファ回路のローカルなアドレス・シーケンサから取得された前記ローカルなストア・データ・タグによって指し示された前記データ・バッファ回路内の位置に、入って来たデータをプッシュすることと
    を含む、方法。
  15. 前記データ・バッファ回路が、前記ライト・ツー・バッファ・コマンドを受信すると、入って来たデータをデータ・バッファにプッシュする、請求項14に記載の方法。
  16. 前記メモリ制御回路および前記データ・バッファ回路は、それぞれ、同じ順序で同じタグを収める別々のローカルなアドレス・シーケンサを保持する、請求項14に記載の方法。
  17. 前記メモリ制御回路が、前記メモリ制御回路のローカルなアドレス・シーケンサから受信された前記タグを前記データ・バッファ回路に送信しないように構成される、請求項14に記載の方法。
  18. 前記メモリ制御回路から前記メモリ・デバイスに前記ストア・コマンドを送信すること、および前記データ・バッファ回路のローカルなアドレス・シーケンサから取得された前記ローカルなストア・データ・タグによって指し示された前記位置から前記メモリ・デバイスにデータを送信すること、をさらに含む、請求項14に記載の方法。
  19. 前記データ・バッファ回路のローカルなアドレス・シーケンサに前記ローカルなストア・データ・タグをプッシュして戻すことと、
    前記メモリ制御回路のローカルなストア・データ・タグと関連付けられた前記メモリ制御回路のマッピング・テーブルからホストのストア・データ・タグを検索することと、
    前記メモリ制御回路のローカルなアドレス・シーケンサに前記ローカルなストア・データ・タグをプッシュして戻すことと、
    前記ホストのストア・データ・タグをホストにプッシュして戻すことと
    というステップをさらに含む、請求項18に記載の方法。
  20. リモート・メモリ制御回路を有する分散メモリ・システムにおけるローカルなアドレス・シーケンサをチェックする方法であって、
    複数のデータ・バッファ回路の各ローカルなアドレス・シーケンサから、次に使用されることになるストア・データ・タグをプルすることと、
    各データ・バッファ回路の前記ローカルなアドレス・シーケンサから回復された前記ストア・データ・タグを比較することと、
    前記データ・バッファ回路からのタグのいずれかが異なる場合、リカバリ・コマンドを発行することと
    を含む、方法。
  21. 前記リカバリ・コマンドが、任意の新しい動作を送出するのを停止すること、全ての未完了動作をフラッシュすること、全てのフェッチ動作が完了するのを待つこと、およびこれらの組合せからなる群のうちの少なくとも1つを含むことができる、請求項20に記載の方法。
  22. メモリ制御回路と前記データ・バッファ回路の両方のローカルなアドレス・シーケンサをリセットすること
    をさらに含む、請求項20に記載の方法。
  23. リモート・メモリ制御回路を有するメモリ・システムにおけるローカルなアドレス・シーケンサをチェックする方法であって、
    前記メモリ制御回路のローカルなアドレス・シーケンサから発行されることになる次のタグをデータ・バッファ回路に送信することと、
    前記データ・バッファ回路のローカルなアドレス・シーケンサから発行されることになる次のタグを、前記メモリ制御回路によって送信された次に使用されることになるタグと比較することと、
    前記タグがマッチしない場合、リカバリ・コマンドを発行することと、
    を含む、方法。
  24. 前記リカバリ・コマンドが、任意の新しい動作を送出するのを停止すること、全ての未完了動作をフラッシュすること、全てのフェッチ動作が完了するのを待つこと、およびこれらの組合せからなる群のうちの少なくとも1つを含むことができる、請求項23に記載の方法。
  25. メモリ制御回路と前記データ・バッファ回路の両方のローカルなアドレス・シーケンサをリセットすること
    をさらに含む、請求項23に記載の方法。
JP2020529445A 2017-11-29 2018-11-22 分散バッファ・メモリ・システムのためのアドレス/コマンド・チップ同期式自律型データ・チップ・アドレス・シーケンサ Active JP7036519B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/825,882 US10489069B2 (en) 2017-11-29 2017-11-29 Address/command chip synchronized autonomous data chip address sequencer for a distributed buffer memory system
US15/825,882 2017-11-29
PCT/IB2018/059206 WO2019106496A1 (en) 2017-11-29 2018-11-22 Address/command chip synchronized autonomous data chip address sequencer for a distributed buffer memory system

Publications (2)

Publication Number Publication Date
JP2021504842A true JP2021504842A (ja) 2021-02-15
JP7036519B2 JP7036519B2 (ja) 2022-03-15

Family

ID=66632406

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020529445A Active JP7036519B2 (ja) 2017-11-29 2018-11-22 分散バッファ・メモリ・システムのためのアドレス/コマンド・チップ同期式自律型データ・チップ・アドレス・シーケンサ

Country Status (6)

Country Link
US (3) US10489069B2 (ja)
JP (1) JP7036519B2 (ja)
CN (1) CN111417935B (ja)
DE (1) DE112018005427T5 (ja)
GB (1) GB2582497B (ja)
WO (1) WO2019106496A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10534555B2 (en) 2017-11-29 2020-01-14 International Business Machines Corporation Host synchronized autonomous data chip address sequencer for a distributed buffer memory system
US10489069B2 (en) 2017-11-29 2019-11-26 International Business Machines Corporation Address/command chip synchronized autonomous data chip address sequencer for a distributed buffer memory system
US10395698B2 (en) 2017-11-29 2019-08-27 International Business Machines Corporation Address/command chip controlled data chip address sequencing for a distributed memory buffer system
US10642535B2 (en) * 2018-01-23 2020-05-05 International Business Machines Corporation Register access in a distributed memory buffer system
WO2020055921A1 (en) 2018-09-10 2020-03-19 GigaIO Networks, Inc. Methods and apparatus for high-speed data bus connection and fabric management
US11157439B2 (en) 2019-07-25 2021-10-26 Western Digital Technologies, Inc. Method for delaying fundamental reset in power loss protection (PLP) enabled devices
US11403247B2 (en) 2019-09-10 2022-08-02 GigaIO Networks, Inc. Methods and apparatus for network interface fabric send/receive operations
US11593288B2 (en) * 2019-10-02 2023-02-28 GigalO Networks, Inc. Methods and apparatus for fabric interface polling
US11392528B2 (en) 2019-10-25 2022-07-19 Cigaio Networks, Inc. Methods and apparatus for DMA engine descriptors for high speed data systems
CN114518902A (zh) * 2020-11-20 2022-05-20 马来西亚瑞天芯私人有限公司 一种内存定序器系统和应用该系统的内存定序方法
JP2023036371A (ja) * 2021-09-02 2023-03-14 株式会社デンソー 車両用制御システム、および回路装置
US20230148253A1 (en) * 2021-11-08 2023-05-11 Ambiq Micro, Inc. Flexible and low power cache memory architecture

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005092630A (ja) * 2003-09-18 2005-04-07 Sony Corp メモリ制御装置及び制御方法
JP2006221642A (ja) * 2005-02-08 2006-08-24 Sony Computer Entertainment Inc ハイブリッドdmaキュー及びdmaテーブルのデータ処理方法、装置及びシステム
JP2006313538A (ja) * 2005-05-03 2006-11-16 Samsung Electronics Co Ltd メモリモジュール及びメモリシステム
US20140281191A1 (en) * 2013-03-15 2014-09-18 International Business Machines Corporation Address mapping including generic bits

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5815723A (en) 1990-11-13 1998-09-29 International Business Machines Corporation Picket autonomy on a SIMD machine
US6104751A (en) * 1993-10-29 2000-08-15 Sgs-Thomson Microelectronics S.A. Apparatus and method for decompressing high definition pictures
US6757800B1 (en) 1995-07-31 2004-06-29 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6381659B2 (en) 1999-01-19 2002-04-30 Maxtor Corporation Method and circuit for controlling a first-in-first-out (FIFO) buffer using a bank of FIFO address registers capturing and saving beginning and ending write-pointer addresses
US6510100B2 (en) 2000-12-04 2003-01-21 International Business Machines Corporation Synchronous memory modules and memory systems with selectable clock termination
US7330992B2 (en) 2003-12-29 2008-02-12 Micron Technology, Inc. System and method for read synchronization of memory modules
US7363427B2 (en) 2004-01-12 2008-04-22 Hewlett-Packard Development Company, L.P. Memory controller connection to RAM using buffer interface
US8180931B2 (en) 2004-01-20 2012-05-15 Super Talent Electronics, Inc. USB-attached-SCSI flash-memory system with additional command, status, and control pipes to a smart-storage switch
GB0404696D0 (en) 2004-03-02 2004-04-07 Level 5 Networks Ltd Dual driver interface
US7373471B2 (en) 2005-02-09 2008-05-13 International Business Machines Corporation Executing background writes to idle DIMMs
US20070180186A1 (en) 2006-01-27 2007-08-02 Cornwell Michael J Non-volatile memory management
US7984359B2 (en) 2006-05-01 2011-07-19 Seagate Technology, Llc Correction of data errors in a memory buffer
US7984329B2 (en) 2007-09-04 2011-07-19 International Business Machines Corporation System and method for providing DRAM device-level repair via address remappings external to the device
KR101467623B1 (ko) 2008-08-08 2014-12-01 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 메모리 모듈 및 메모리 모듈 제어 방법
US9003159B2 (en) * 2009-10-05 2015-04-07 Marvell World Trade Ltd. Data caching in non-volatile memory
FR2951290B1 (fr) 2009-10-08 2011-12-09 Commissariat Energie Atomique Controleur d'acces direct en memoire a sources multiples, procede et programme d'ordinateur correspondants
WO2011058389A1 (en) 2009-11-10 2011-05-19 Freescale Semiconductor, Inc. Advanced communication controller unit and method for recording protocol events
US8510100B2 (en) 2010-05-20 2013-08-13 Xerox Corporation Human readable sentences to represent complex color changes
US9201817B2 (en) * 2011-08-03 2015-12-01 Montage Technology (Shanghai) Co., Ltd. Method for allocating addresses to data buffers in distributed buffer chipset
CN102609378B (zh) 2012-01-18 2016-03-30 中国科学院计算技术研究所 一种消息式内存访问装置及其访问方法
US9679104B2 (en) 2013-01-17 2017-06-13 Edico Genome, Corp. Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform
US9430418B2 (en) 2013-03-15 2016-08-30 International Business Machines Corporation Synchronization and order detection in a memory system
CN103246625B (zh) 2013-05-24 2016-03-30 北京大学 一种数据与地址共用引脚自适应调整访存粒度的方法
US9600232B2 (en) * 2013-12-11 2017-03-21 International Business Machines Corporation Aligning FIFO pointers in a data communications lane of a serial link
WO2015095612A1 (en) 2013-12-18 2015-06-25 Rambus Inc. High capacity memory system with improved command-address and chip-select signaling mode
US9887008B2 (en) 2014-03-10 2018-02-06 Futurewei Technologies, Inc. DDR4-SSD dual-port DIMM device
US20150261446A1 (en) 2014-03-12 2015-09-17 Futurewei Technologies, Inc. Ddr4-onfi ssd 1-to-n bus adaptation and expansion controller
US9792965B2 (en) 2014-06-17 2017-10-17 Rambus Inc. Memory module and system supporting parallel and serial access modes
US9348518B2 (en) 2014-07-02 2016-05-24 International Business Machines Corporation Buffered automated flash controller connected directly to processor memory bus
US20160092361A1 (en) 2014-09-26 2016-03-31 Intel Corporation Caching technologies employing data compression
CN105868125B (zh) 2015-01-23 2018-10-19 澜起科技(上海)有限公司 缓冲存储器及用于控制内部存储器数据访问的装置和方法
US10025747B2 (en) 2015-05-07 2018-07-17 Samsung Electronics Co., Ltd. I/O channel scrambling/ECC disassociated communication protocol
US10031677B1 (en) 2015-10-14 2018-07-24 Rambus Inc. High-throughput low-latency hybrid memory module
CN105553636B (zh) 2015-12-11 2018-07-03 中国航空工业集团公司西安航空计算技术研究所 一种余度模式fc发送通道帧同步电路及方法
CN106940683B (zh) 2016-01-04 2018-12-28 综合器件技术公司 用于上电时的单端存储器信号均衡的方法和装置
US20180181504A1 (en) 2016-12-23 2018-06-28 Intel Corporation Apparatuses and methods for training one or more signal timing relations of a memory interface
US10489069B2 (en) 2017-11-29 2019-11-26 International Business Machines Corporation Address/command chip synchronized autonomous data chip address sequencer for a distributed buffer memory system
US10534555B2 (en) 2017-11-29 2020-01-14 International Business Machines Corporation Host synchronized autonomous data chip address sequencer for a distributed buffer memory system
US10395698B2 (en) 2017-11-29 2019-08-27 International Business Machines Corporation Address/command chip controlled data chip address sequencing for a distributed memory buffer system
US10747442B2 (en) 2017-11-29 2020-08-18 International Business Machines Corporation Host controlled data chip address sequencing for a distributed memory buffer system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005092630A (ja) * 2003-09-18 2005-04-07 Sony Corp メモリ制御装置及び制御方法
JP2006221642A (ja) * 2005-02-08 2006-08-24 Sony Computer Entertainment Inc ハイブリッドdmaキュー及びdmaテーブルのデータ処理方法、装置及びシステム
JP2006313538A (ja) * 2005-05-03 2006-11-16 Samsung Electronics Co Ltd メモリモジュール及びメモリシステム
US20140281191A1 (en) * 2013-03-15 2014-09-18 International Business Machines Corporation Address mapping including generic bits

Also Published As

Publication number Publication date
WO2019106496A1 (en) 2019-06-06
JP7036519B2 (ja) 2022-03-15
CN111417935A (zh) 2020-07-14
US11379123B2 (en) 2022-07-05
US10976939B2 (en) 2021-04-13
US20210191630A1 (en) 2021-06-24
DE112018005427T5 (de) 2020-07-16
GB2582497A (en) 2020-09-23
CN111417935B (zh) 2023-11-21
US20190163378A1 (en) 2019-05-30
US20200042205A1 (en) 2020-02-06
US10489069B2 (en) 2019-11-26
GB202008475D0 (en) 2020-07-22
GB2582497B (en) 2022-07-06

Similar Documents

Publication Publication Date Title
JP7036519B2 (ja) 分散バッファ・メモリ・システムのためのアドレス/コマンド・チップ同期式自律型データ・チップ・アドレス・シーケンサ
CN103377695B (zh) 存储系统、存储器件、存储控制器及操作其的方法
US10108372B2 (en) Methods and apparatuses for executing a plurality of queued tasks in a memory
US7299313B2 (en) System, method and storage medium for a memory subsystem command interface
TWI294573B (en) Apparatus and method for controlling establishing command order in an out of order dma command queue, and computer readable medium recording with related instructions
US7707366B2 (en) Memory control device
US7694035B2 (en) DMA shared byte counters in a parallel computer
US9032162B1 (en) Systems and methods for providing memory controllers with memory access request merging capabilities
US20120239874A1 (en) Method and system for resolving interoperability of multiple types of dual in-line memory modules
US20130067156A1 (en) Double data rate controller having shared address and separate data error correction
US11687254B2 (en) Host synchronized autonomous data chip address sequencer for a distributed buffer memory system
US20120102262A1 (en) Memory control device, storage device, and memory control method
KR20200123260A (ko) 캐시 및 다중 독립 어레이를 갖는 메모리용 인터페이스
US11587600B2 (en) Address/command chip controlled data chip address sequencing for a distributed memory buffer system
US10747442B2 (en) Host controlled data chip address sequencing for a distributed memory buffer system
US8745294B2 (en) Dynamic random access memory for a semiconductor storage device-based system
US9620215B2 (en) Efficiently accessing shared memory by scheduling multiple access requests transferable in bank interleave mode and continuous mode
US20120173783A1 (en) Serial input output (sio) port expansion apparatus and method
US20220091927A1 (en) Method and apparatus to reduce bandwidth overhead of crc protection on a memory channel
US9465691B2 (en) Read request processing apparatus
US20100106911A1 (en) Methods and systems for communication between storage controllers
US20130086335A1 (en) Memory system and memory interface device
CN101002272A (zh) 动态随机存取存储器内的数据寻址
US20200168281A1 (en) Read data sorting method and storage device
EP3327521B1 (en) Duplexing process control device

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200603

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20200930

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210423

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: 20220222

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20220222

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220301

R150 Certificate of patent or registration of utility model

Ref document number: 7036519

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150