JP7089530B2 - データ処理 - Google Patents

データ処理 Download PDF

Info

Publication number
JP7089530B2
JP7089530B2 JP2019541458A JP2019541458A JP7089530B2 JP 7089530 B2 JP7089530 B2 JP 7089530B2 JP 2019541458 A JP2019541458 A JP 2019541458A JP 2019541458 A JP2019541458 A JP 2019541458A JP 7089530 B2 JP7089530 B2 JP 7089530B2
Authority
JP
Japan
Prior art keywords
data
data access
memory
request
access request
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.)
Active
Application number
JP2019541458A
Other languages
English (en)
Other versions
JP2020514878A (ja
Inventor
フィリッポ、マイケル
ジャラル、ジャムシェッド
マグナス ブルース、クラス
ギルバート メイヤー、ポール
ジョセフ ホーキンス、デイビッド
クマール マンナバ、ファニンドラ
マイケル プスデスリス、ジョセフ
Original Assignee
アーム・リミテッド
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 アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2020514878A publication Critical patent/JP2020514878A/ja
Application granted granted Critical
Publication of JP7089530B2 publication Critical patent/JP7089530B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/364Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6032Way prediction in set-associative cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Photoreceptors In Electrophotography (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本開示はデータ処理に関する。
データ転送プロトコルは、例えばシステムオンチップ(SoC)システムまたはネットワークオンチップ(NoC)システムとの関連において、相互接続回路を介して互いに接続されたデバイス間またはノード間のデータ転送の動作を調整することができる。そのようなデータ転送プロトコルの一例は、いわゆるアドバンストマイクロコントローラバスアーキテクチャ(AMBA)コヒーレントハブインタフェース(CHI)プロトコルである。
CHIプロトコルでは、ノードはリクエストノード(RN)、ホームノード(HN)、またはスレーブノード(SN)として分類することができる。ノードはフルコヒーレントであっても、入出力(I/O)コヒーレントであってもよい。フルコヒーレントのHNまたはRN(それぞれHN-F、RN-F)は、コヒーレントキャッシュストレージを含み、フルコヒーレントSN(SN-F)はHN-Fと対になる。HN-Fは、メモリ領域のコヒーレンシおよび/またはシリアライゼーションを管理することができ、ポイントオブコヒーレンシ(point of coherency、POC)および/またはポイントオブシリアライゼーション(point of serialisation、POS)の一例と呼ぶことがある。
ここで、「コヒーレント」という用語は、あるノードによってコヒーレントメモリシステム内のメモリアドレスに書き込まれたデータ項目が、別のノードによって、コヒーレントメモリシステム内の当該メモリアドレスから読み出されたデータ項目と一致することを意味する。したがって、コヒーレンス機能に関連づけられたロジックの役割は、データハンドリングトランザクションが行われる前に、アクセスされるデータ項目のバージョンが古ければ(同じデータ項目の別のコピーに対して修正が行われたため)、アクセスされるコピーが、まず最新の状態にされることを確実にすることである。同様に、データハンドリングトランザクションにデータ項目を修正することが含まれる場合、コヒーレンスロジックは、そのデータ項目の、他の既存のコピーとのコンフリクトを回避する。
シリアライゼーションは、複数である可能性のあるリクエスト側ノードからのメモリアクセスリクエストであって、対応すべきレイテンシ期間が異なる可能性のあるメモリアクセスリクエストのハンドリングの順序付けであって、それらのリクエストの結果がリクエスト側ノードに正しい順序で提示され、リクエスト同士の間の依存関係が正しくハンドリングされる(例えば、データ読み出しが、同じアドレスに対するデータ書き込みに続いて行われる)ようにする順序付けに関する。
読み出しリクエスト等のデータアクセスは、(例えばキャッシュメモリにアクセスすることによって)読み出しリクエスト自体に対応することができる、または例えば必要とされるデータ項目が、メインメモリまたは高レベルキャッシュメモリから読み出さなければならない場合には、解決のためにSN-Fに対する読み出しリクエストを参照することができるHN-Fを介して行うことができる。そのような例では、SN-Fは、ダイナミックランダムアクセスメモリ(DRAM)等のメモリに関連づけられたダイナミックメモリコントローラ(DMC)を備えることができる。HN-Fは、HN-F自身がリクエストに対応できない場合には、SN-Fへの読み出しリクエストの発行をハンドリングする。
他の例示的プロトコルとしては、アドバンスト拡張インタフェース(AXI)プロトコルまたはAXIコヒーレンシエクステンション(ACE)プロトコルが挙げられる。ACEプロトコルは、例えばHNを利用しないが、例えば相互接続によって実現されるPOC/POSを提供することができる。
例示的な配置では、メモリコントローラであって、
前記メモリコントローラとデータ通信している別のノードから受信したデータアクセスヒントメッセージに応答して、メモリに格納されているデータのデータアクセスを開始し、
メモリコントローラとデータ通信している別のノードから受信したデータアクセスリクエストに応答して、メモリに格納されているデータにアクセスし、
アクセスされたデータをデータアクセスリクエストに対するデータアクセス応答として提供するように構成されたメモリアクセス回路を備えるメモリコントローラが提供される。
別の例示的な配置では、メモリ制御方法であって、
前記メモリコントローラとデータ通信している別のノードから受信したデータアクセスヒントメッセージに応答して、メモリに格納されているデータのデータアクセスを開始することと、
メモリコントローラとデータ通信している別のノードから受信したデータアクセスリクエストに応答して、メモリに格納されているデータにアクセスすることと、
アクセスされたデータをデータアクセスリクエストに対するデータアクセス応答として提供することとを含むメモリ制御方法が提供される。
別の例示的な配置では、最近のデータアクセスリクエストが第1データソースによって応えられたか、または第2データソースによって応えられたかを示す予測データを格納し、予測データから、次のデータアクセスリクエストが第1データソースによって応えられるかまたは第2データソースによって応えられるかを予測する予測器回路であって、第1データソースおよび第2データソースが、データアクセスリクエストが第1データソースによって応えられない場合に、第2データソースによって応えられるように配置されている、予測器回路と、
第1データソースにデータアクセスリクエストを発行する発行回路であって、所与のデータアクセスリクエストが第2データソースによって応えられるであろうと予測器回路が予測したことに応答して、当該所与のデータアクセスリクエストに第2データソースが応えなければならないであろうという指示を第2データソースに発行する発行回路とを備えるデータ処理回路が提供される。
別の例示的構成では、最近のデータアクセスリクエストが第1データソースによって応えられたか、または第2データソースによって応えられたかを示す予測データを格納することと、
予測データから、次のデータアクセスリクエストが第1データソースによって応えられるか、または第2データソースによって応えられるかを予測することであって、第1データソースおよび第2データソースが、第1データソースがデータアクセスリクエストに応えない場合には、第2データソースによって応えるように配置されている、予測することと、
所与のデータアクセスリクエストが、第2データソースによって応えられるだろうと予測する予測器回路に応答して、当該所与のデータアクセスリクエストに第2データソースが応えなければならないであろうという指示を第2データソースに発行することとを含むデータ処理方法が提供される。
本技術の、さらなるそれぞれの態様および特徴は、添付の特許請求の範囲によって定義される。
本技術は、添付の図面に示される本技術の実施形態を参照して、単なる例としてさらに説明される。
データ処理装置を概略的に示す図である。 データ読み出しアクセスを示す概略タイミング図である。 データ読み出しアクセスを示す概略タイミング図である。 方法を示す概略フローチャートである。 マスターノードを概略的に示す図である。 予測器回路を概略的に示す図である。 予測器回路を概略的に示す図である。 予測器回路の一部を概略的に示す図である。 予測器回路の別の例を概略的に示す図である。 メモリコントローラを概略的に示す図である。 方法を示す概略フローチャートである。 方法を示す概略フローチャートである。
添付の図面を参照して実施形態を説明する前に、以下の実施形態の説明を提供する。
例示的実施形態は、メモリコントローラであって、
メモリコントローラとデータ通信している別のノードから受信したデータアクセスヒントメッセージに応答して、メモリに格納されているデータのデータアクセスを開始し、
メモリコントローラとデータ通信している別のノードから受信したデータアクセスリクエストに応答して、メモリに格納されているデータにアクセスし、
アクセスされたデータをデータアクセスリクエストに対するデータアクセス応答として提供する
ように構成されたメモリアクセス回路を備えるメモリコントローラを提供する。
例示的実施形態では、ホームノード等の別のノードを介してメモリコントローラにルーティングされるデータアクセスリクエスト等のデータアクセスリクエストに関連づけられたレイテンシは、可能性のある後続のデータアクセスリクエストを示すデータアクセスヒントに応答するメモリコントローラを設けることによって低減される可能性がある。後続のデータアクセスリクエストが受信されたとき、関連するデータアクセスは既に開始されている場合がある。
例では、データアクセスヒントメッセージおよびデータアクセスリクエストは、各々が、1つ以上のメモリアドレスの範囲によってデータアクセスを指定する。例えば、メモリアクセス回路が、データアクセスヒントメッセージに応答して1つ以上のメモリアドレスの所与の範囲に対するデータアクセスを開始した場合、メモリアクセス回路は、メモリコントローラが、1つ以上のメモリアドレスの所与の範囲を指定する後続のデータアクセスリクエストを受信したときにのみ、アクセスされたデータをデータアクセス応答として提供するように構成される。このように、データアクセスヒントメッセージはデータアクセスを開始することができるが、そのデータアクセスは、後続のデータアクセスリクエストが受信されない限り完了しない。
例えばデータアクセスリクエストがホームノード等の別のノードを介して到着する場合に応答をルーティングするために、データアクセスリクエストは、メモリコントローラとデータ通信している別のノードであって、データアクセス応答を提供すべき別のノードを指定してもよい。
例では、受信側ノードが、例えば現在の負荷に応じて、データアクセスヒントメッセージによって動作するか動作しないかは任意であってもよい。そのような例では、メモリアクセス回路は、受信したデータアクセスヒントメッセージに応答してデータアクセスを開始するか否かを決定するように構成される。
例示的な配置はまた、各々が、関連づけられたキャッシュメモリを有する1つ以上のマスターノードと、各々が、上述のように定義されるメモリコントローラを備える1つ以上のスレーブノードと、データ処理システムによって格納されているデータ間のコヒーレンシを制御するためのホームノードとを備えるデータ処理システムを提供してもよい。
例では、1つ以上のマスターノードは、ホームノードにデータアクセスリクエストを発行するように構成され、ホームノードは、ホームノードがデータアクセスリクエストに応えられるか、またはデータアクセスが1つ以上のスレーブノードへのアクセスを必要とするかを検出し、1つ以上のスレーブノードへのアクセスが必要なときに、その1つ以上のスレーブノードにデータアクセスリクエストを送信するように構成される。例えば、1つ以上のマスターノードは、以下のいずれかを送信するように構成できる。すなわち、ホームノードへのデータアクセスリクエスト、またはホームノードへのデータアクセスリクエストおよびホームノードがそのデータアクセスに応えることができない場合に、1つ以上のスレーブノードのうち、データアクセスリクエストによって指定されたデータアクセスに応える、該当する1つのスレーブノードへのデータアクセスヒントメッセージである。
例では、マスターノードによって発行されるべきものの選択は、データアクセスヒントメッセージを送信するか否かを決定する予測回路を備える1つ以上のマスターノードによって行われ得る。
例では、予測回路は、ホームノードおよびスレーブノードの一方または両方から受信した指示であって、スレーブノードが、以前のデータアクセスリクエストの1つ以上に応えたか否かを示す指示に応答して、データアクセスヒントメッセージをスレーブノードに送信するか否かを決定するように構成される。
別の例示的実施形態は、メモリ制御方法であって、
メモリコントローラとデータ通信している別のノードから受信したデータアクセスヒントメッセージに応答して、メモリに格納されているデータのデータアクセスを開始することと、
メモリコントローラとデータ通信している別のノードから受信したデータアクセスリクエストに応答して、メモリに格納されているデータにアクセスすることと、
アクセスされたデータをデータアクセスリクエストに対するデータアクセス応答として提供することとを含むメモリ制御方法を提供する。
別の例示的実施形態は、最近のデータアクセスリクエストが第1データソースによって応えられたか、または第2データソースによって応えられたかを示す予測データを格納し、予測データから、次のデータアクセスリクエストが第1データソースによって応えられるかまたは第2データソースによって応えられるかを予測する予測器回路であって、第1データソースおよび第2データソースが、データアクセスリクエストが第1データソースによって応えられない場合に、第2データソースによって応えられるように配置されている、予測器回路と、
第1データソースにデータアクセスリクエストを発行する発行回路であって、所与のデータアクセスリクエストが第2データソースによって応えられるであろうと予測器回路が予測したことに応答して、当該所与のデータアクセスリクエストに第2データソースが応えなければならないであろうという指示を第2データソースに発行する発行回路とを備えるデータ処理回路を提供する。
これらの例示的実施形態では、データアクセスが第2データソースによって応えられるか否かに関する予測に基づいて、指示(読み出しヒントメッセージ等)を第2データソースに発行することもしないこともできる。このようにして、(すべてのデータアクセスについて読み出しヒントメッセージを送信することと比較して)送信帯域幅を節約することができるが、それでも第2データソースが読み出しヒントメッセージに応答してデータアクセスを開始できるようにすることによってレイテンシを低減する可能性がある。
いくつかの例では、予測器回路は、どのデータソースが最近のデータアクセスリクエストに応えたかを示す、第1データソースおよび第2データソースの一方または両方から受信した情報に応答して予測データを格納するように構成される。予測は、そのような格納されたデータに基づくことができる。
いくつかの例では、予測データはカウント値を含み、予測器回路は、最近のデータアクセスリクエストが第1データソースおよび第2データソースのいずれによって応えられたかに応じてカウント値を変更するように構成される。例えば、予測器回路は、カウント値をしきい値と比較するための比較器を含んでもよい。
いくつかの例では、予測器回路は、最近のデータアクセスが第1データソースによって応えられることに応答して第1変更量だけカウント値を変更し、最近のデータアクセスが第2データソースによって応えられることに応答して、第1変更量とは逆方向の第2変更量だけカウント値を変更するように構成される。これらの変更量は固定されてもよく、または予測器回路が第1変更量および第2変更量の一方または両方を変化させるように構成されてもよい。
読み出しヒントメッセージを使用する尤度が異なる可能性を考慮するために、いくつかの例では、予測器回路は、2つ以上のクラスのデータアクセスリクエストについてそれぞれの予測を生成するように構成される。例えば、2つ以上のクラスのデータアクセスリクエストは、
データ読み出しリクエストと、
命令フェッチリクエストと、
アドレス変換フェッチリクエストとからなるリストから選択されてもよい。
異なるデータアクセスリクエスト間の相違を考慮するために、いくつかの例では、
予測器回路は、データアクセスリクエストを開始する処理命令のためのプログラムカウンタ値と、
データアクセスリクエストに応答してアクセスされるデータ項目のアドレスとのうちの1つ以上に依存して予測を生成するように構成される。
いくつかの例では、予測器回路は、プログラムカウンタ値およびデータ項目のアドレスの一方または両方からインデックスを生成し、そのインデックスによってカウンタ値のテーブルにアクセスするように構成される。エイリアシング(同じインデックスによるが、プログラムカウンタおよび/またはアドレスの異なる値に依存する、同じ予測データへの望ましくないアクセス)を軽減するために、いくつかの例では、予測器回路は、プログラムカウンタ値およびデータ項目のアドレスの一方または両方からタグを生成し、インデックスによってアクセスされるカウンタ値のテーブル内のエントリに関連してタグを格納するように構成される。例えば、予測器回路は、格納されているタグを検索し、検索されたタグをプログラムカウンタ値、およびデータ項目のアドレスの一方または両方から生成されたタグと比較するように構成されてもよい。
いくつかの例では、予測器回路は、プログラムカウンタ値およびデータ項目のアドレスの一方または両方の、異なるそれぞれの部分から生成されたそれぞれのインデックスによって、カウンタ値の2つ以上のテーブルにアクセスするように構成される。例えば、2つ以上のテーブルが、生成されたタグと一致する格納されたタグを有するとき、予測器回路が、2つ以上のテーブルのうちの該当する1つによって格納されたカウンタ値であって、プログラムカウンタ値とデータ項目のアドレスの一方または両方の、より大きいビット数によって生成されたインデックスの参照先であるカウンタ値に応じて予測を生成するように構成される。
例示的な配置はまた、各々が、上述のように定義されるデータ処理回路を備え、各々が、関連づけられたキャッシュメモリを有する1つ以上のマスターノードと、
第1データソースを提供するホームノードであって、キャッシュメモリのうち1つ以上からリクエストされたデータを取得することによって所与のデータアクセスリクエストに応えられるか否かを検出するように構成され、かつホームノードが所与のデータアクセスリクエストに応えることができない場合に、第2データソースから、リクエストされたデータをリクエストするように構成されたホームノードと、
各々が、高レベルメモリを有し、第2データソースを提供する1つ以上のスレーブノードとを備えるデータ処理装置を提供する。
いくつかの例では、マスターノードは、1つ以上のスレーブノードのうちの1つへのデータ送信をリクエストする送信リクエストを、ホームノードに発行するように構成され、
ホームノードは、送信リクエストをシリアライズし、1つ以上のスレーブノードへのリクエストにアクセスするようにして、スレーブノードでメモリアドレスに書き込まれたデータを、後続のアクセスリクエストに応答して、メモリアドレスから読み出されたデータと一致させるように構成される。
いくつかの例では、ホームノードは、コヒーレントメモリシステムとして、1つ以上のマスターノードのキャッシュメモリおよび1つ以上のスレーブノードの高レベルメモリにわたってコヒーレンシを制御し、1つのノードによってコヒーレントメモリシステム内のあるメモリアドレスに書き込まれたデータを、別のノードによって、コヒーレントメモリシステム内のメモリアドレスから読み出されたデータと一致させるように構成される。
別の例示的実施形態は、最近のデータアクセスリクエストが第1データソースによって応えられたか、または第2データソースによって応えられたかを示す予測データを格納することと、
予測データから、次のデータアクセスリクエストが第1データソースまたは第2データソースであって、第1データソースおよび第2データソースが、第1データソースがデータアクセスリクエストに応えない場合には、第2データソースによって応えるように配置されている、第1データソースによって応えられるか、または第2データソースによって応えられるかを予測することと、
所与のデータアクセスリクエストが、第2データソースによって応えられるだろうと予測する予測器回路に応答して、当該所与のデータアクセスリクエストに第2データソースが応えなければならないであろうという指示を第2データソースに発行することとを含むデータ処理方法を提供する。
ここで図面を参照すると、図1は、ネットワーク100によって相互接続された装置のネットワークとして実施されたデータ処理装置を概略的に示す。このデータ処理装置は、いわゆるシステムオンチップ(SoC)またはネットワークオンチップ(NoC)等の単一の集積回路として、または複数の相互接続された個別装置として提供されてもよい。
ネットワーク100を介して各種のいわゆるノードが接続されている。これらは、ネットワーク化システム内のデータコヒーレンシを監視する1つ以上のホームノード(HN)110と、高レベルキャッシュメモリ120(「高レベル」の言及は、リクエスト側ノードによって提供され、以下に説明されるキャッシュメモリに関する)等の1つ以上のスレーブノード(SN)と、メインメモリ130と、周辺装置140とを含む。図1に示すスレーブノードの選択は一例であり、各タイプのスレーブノードを0個以上設けてもよい。
この例では、スレーブノード120、130の各々は、メモリコントローラ(DMC)122、132、およびメモリ(DRAM)124、134を備える。
図1はまた、この例ではコヒーレントハブインタフェース(CHI)プロトコルに従って動作する、複数のいわゆるリクエストノード(RN)150、160、170を示す。
RN150、160、170は、関連づけられたキャッシュメモリ152、162、172を有する、フルコヒーレントRN(RN-F)である。RN170はRN-Fでもよく、キャッシュメモリ172を有してもよい。
より一般的には、ノードはフルコヒーレントまたは入出力(I/O)コヒーレントであってもよい。フルコヒーレントHNまたはフルコヒーレントRN(それぞれHN-F、RN-F)は、コヒーレントキャッシュストレージを含む。例えば、HN-F110はキャッシュストレージ112を含む。
フルコヒーレントSN(SN-F)はHN-Fと対になる。HN-Fは、メモリ領域に対するコヒーレンシを管理することができる。
図1は、各々が、関連づけられたキャッシュメモリ152、162、172を有する1つ以上のマスターノード150、160、170と、各々が、メモリコントローラを備える1つ以上のスレーブノード120と、データ処理システムによって格納されているデータ間のコヒーレンシを制御するためのホームノード110とを備えるデータ処理システムの例を提供する。
同様に、図1は、各々が、予測器および発行回路(以下で説明する)を含み、各々が、関連づけられたキャッシュメモリ152、162、172を有する1つ以上のマスターノード150、160、170と、第1データソースを提供するホームノード110であって、1つ以上のキャッシュメモリからリクエストされたデータを取得することによって所与のデータアクセスリクエストに応えられるか否かを検出するように構成され、ホームノードが所与のデータアクセスリクエストに応えることができない場合に、スレーブノード120、130等の第2データソースからリクエストされたデータをリクエストするように構成されたホームノード110と、各々が、高レベルメモリを有し、第2データソースを提供する1つ以上のスレーブノード120、130とを備えるデータ処理装置の例を提供する。
図2は、データ読み出しアクセスを示す概略タイミング図である。
図2では、リクエスト側ノードRN-F150、160、170のうちの1つが、ホームノードHN-F110によって、(コヒーレンシの観点から)監視されているデータを読み出そうとしている。HN-Fは、いわゆるポイントオブコヒーレンシ(PoC)として動作する。時間的に重複するデータアクセスリクエスト、またはあるデータアクセスリクエストの結果が、別のデータアクセスリクエストの完了のタイミングに少なくとも関連するデータアクセスリクエストのハンドリングの順序を管理することに関して、HN-Fは、そのようなデータアクセスリクエストが適切な順序で開始および/または完了されることを確実にするするためのいわゆるポイントオブシリアライゼーション(PoS)としても動作することができる。
したがって、例では、マスターノードは、1つ以上のスレーブノードのうちの1つへのデータ送信をリクエストする送信リクエストを、ホームノードに発行するように構成され、ホームノードは、送信リクエストをシリアライズし、1つ以上のスレーブノードへのリクエストにアクセスするPoSとして動作し、スレーブノードでメモリアドレスに書き込まれたデータが、後続のアクセスリクエストに応答して、そのメモリアドレスから読み出されたデータと一致するように構成される。例では、ホームノードは、コヒーレントメモリシステムとして、1つ以上のマスターノードのキャッシュメモリ、および1つ以上のスレーブノードの高レベルメモリにわたってコヒーレンシを制御するPoCとして動作するように構成され、1つのノードによって、コヒーレントメモリシステム内のあるメモリアドレスに書き込まれたデータが、別のノードによって、コヒーレントメモリシステム内の、そのメモリアドレスから読み出されたデータと一致するようにする。
リクエスト側ノードは、データ読み出しリクエスト200をホームノードに送信する。ホームノードは、ホームノード自身がリクエストに対応できる、すなわち応えられるか否かを検出し、できる場合、ホームノードはリクエストノードにデータ読み出し応答205を提供し、プロセスは終了する。
ホームノードによる読み出しリクエストに対応することには、ホームノードがホームノード自身のキャッシュメモリ(もしあれば)から、リクエストされたデータを検索すること、および/またはPoCとしての役割においてホームノードによって管理される(1つ以上のキャッシュメモリ152、162、172等の)キャッシュメモリから、リクエストされたデータを検索することが含まれ得る。いくつかの例では、ホームノードは、PoC(いわゆるスヌープフィルタ等)としてのホームノードによって維持されており、PoCとして制御している各キャッシュメモリによって保持されているデータを示す記録を調べることによって、または、1つ以上のキャッシュメモリをクエリすることによって、リクエストされたデータの、最新の、すなわち有効なバージョンを保持しているか否か、またはホームノードによってコヒーレンシ管理されているキャッシュメモリが、リクエストされたデータの、最新の、すなわち有効なバージョンを保持しているか否かを検出できる。ホームノードが読み出しリクエストに対応できるか否かを検出するためにホームノードが使用する特定の技術は、使用されているシステムアーキテクチャによって異なる。ホームノードによる、ホームノードが読み出しリクエストに対応できるか否かの検出は、プリエンプティブな検出(例えば、上述のようにスヌープフィルタを使用した)であっても、ホームノードによる、障害から生じる検出であって、読み出しリクエストに対応する試みを正常に完了するための検出であってもよい。
ホームノードによって読み出しリクエストに対応することは、読み出しリクエストに対応するためにメモリ120、130にアクセスが行われないことを意味する。
しかしながら、ホームノードは、ホームノード自身がリクエストに対応することができないことを検出した場合には、その後、読み出しリクエスト210を適切なスレーブノードSN120、130に送信する。スレーブノードのメモリコントローラ(DMC)は、リクエストを受信し、トランザクション215、220として、メモリ(DRAM)から要求されたデータを読み出す。次に、メモリコントローラは、ホームノードを介して、または図2の例に示されているようにリクエストノードに直接に、読み出し応答225としてデータをリクエストノードに返す。例では、ホームノードによって提供される読み出しリクエストは、メモリコントローラとのデータ通信している別のノード(RN等)であって、読み出し応答を提供すべき別のノードを指定することができる。
したがって、ホームノードおよびスレーブノードは、第1データソースによっては、データアクセスリクエストに応えられない場合、第2データソースによって、そのデータアクセスリクエストに応えられるように配置された、第1データソースおよび第2データソースの例をそれぞれ提供する。
メモリアクセスのレイテンシは、(少なくともいくつかの状況では)システム性能にとって重要であり、あるいは重大ですらある。図2の例では、メモリ読み出しリクエストが、DRAMを参照しなければならない場合、レイテンシは、ホームノードが、リクエスト200を受信してからリクエスト210を発行するまでのディレイ230、およびDMCがリクエスト210を受信してからトランザクション215を開始するまでのディレイ235として導入される。
図3は、本開示の例示的実施形態によるデータ読み出しアクセスを示す概略タイミング図である。
RN-Fは、図2を参照して説明したようにデータ読み出しリクエスト300を発行するが、スレーブノードのメモリコントローラに直接、いわゆる「読み出しヒント」305も発行する。このメモリコントローラは、ホームノード自身が読み出しリクエストに対応する、すなわち応えることができない場合には、この読み出しリクエストに対応、すなわち応えなければならない。RN-Fは、システム構成またはメモリマップ情報から、どのスレーブノードが読み出しリクエストに関連しているかを検出できる。例えば、これは、システムレベル構成として確立され、図1のネットワークまたは装置内のアドレス範囲と宛先との間のマッピングを提供する、いわゆるシステムアドレスマップ(SAM)であってもよい。例示的配置では、各ノードは(そのシステム内およびその時点で)一意の識別子(ID)を有する。パケットは、送信先のターゲットIDと、応答が返される先のソースIDを指定する。
読み出しリクエスト等のパケットは、HN-F(フルコヒーレント)またはHN-I(入出力コヒーレント)であってもよいホームノード(または本技術に関してはさらには説明しない様々なノード)に送信することができる。RNのSAMロジックは、使用する特定のHNの選択において、到着するべきアドレスにハッシュ関数を使用することができる。 追加の構成情報は、特定のHNを、あるノードIDにマッピングする。
RN-F150、160、170はまた、HN-F自身がデータアクセスリクエストに応えない場合、リクエストがどのスレーブノードによって処理されるかを検出するために、上述したものと同様のSAM機能を提供する。そのため、1つ以上のスレーブノードのセットも、各RN-FのSAM機能によって、アドレス範囲にマッピングされる。したがって、個々のアドレスに対して、当該アドレスにマッピングされるHNであって、RN-Fが読み出しリクエストを送信する先であるHNがあってもよい。また、同じアドレスにマッピングされるSN-Fであって、RN-Fが読み出しヒントを送信する(該当する場合)先であるSN-Fがあってもよい。読み出しヒントは、スレーブノードのターゲットIDを使用してアドレス指定されるが、読み出しリクエストはHNのターゲットIDを使用してアドレス指定される。
したがって、例では、リクエスト側ノード、すなわちマスターノードは、アドレスまたはアドレス範囲(例えば、データアクセスリクエストに関する)をホームノードおよびスレーブノードにマッピングするアドレス構成情報にアクセスするように構成され、マスターノード、すなわちリクエスト側ノードは、アクセスされるアドレスまたはアドレス範囲に適用可能なデータアクセスリクエスト(読み出しリクエスト等)をホームノードに発行し、かつその同じアドレスまたはアドレス範囲に適用可能なデータアクセスヒント(読み出しヒント等)をスレーブノードに発行することができる。
ホームノードは、上述したように、要求されたデータを読み出し応答310として返すか、または読み出しリクエスト315をスレーブノードに送信して(ここでも、必要に応じて、同様のSAM機能を用いて、どのスレーブノードを使用するか、および/または上述した対配置を検出して)進める。しかし、この場合、スレーブノードは、時間335における読み出しヒント305の受信に応答して、要求されたデータを検索するためのトランザクション320、330を既に開始している。したがって、スレーブノードがトランザクション320を開始するために読み出しリクエスト315の受信まで待機するのではなく、メモリコントローラが、読み出しヒント305の受信に応答してより早くトランザクション320を開始することができる。前述のように、一旦メモリコントローラが要求されたデータを受信すると、メモリコントローラは要求されたデータを読み出し応答340としてRN-Fに提供する。
読み出しヒント305の提供によって、トランザクション320、330をより早く開始することにより、期間345のレイテンシを低減することができる。そのような期間の長さは、システムの多くの異なる設計パラメータおよび態様に依存するが、例示的実施形態では、そのような低減は、DRAMからのデータ読み出しにかかる全体の時間に関して重要となり得る。
図4は、図3を参照して説明した方法を示す概略フローチャートである。図4において、破線(で描かれている)縦線は、リクエスト側ノードの活動、ホームノードの活動、およびスレーブノードの活動を分離している。
図4に示されるプロセスは、ステップ400において、読み出しリクエストおよび読み出しヒントを発行するリクエスト側ノードによって開始される。読み出しリクエストは、要求されたアドレスまたはアドレス範囲に関連するホームノードに発行され、読み出しヒントは、そのアドレスまたはアドレス範囲に関連するスレーブノードに発行され、ホームノードがこの読み出しリクエストに対応できない場合は、この読み出しリクエストを対応するために必要となる。読み出しリクエストおよび読み出しヒントは、リクエスト側ノードによって、どちらの順序でも、あるいは一緒にでも発行することができる。
ステップ405において、ホームノードが読み出しリクエスト300を受信し、ステップ410において、ホームノードがこの読み出しリクエストに応えられるか否かを検出する。ホームノードが読み出しリクエスト300に応えられるか否かを検出するために、例えば、ホームノードは、このリクエストを求めてキャッシュ、スヌープフィルタ等を探索してもよい。
答えが、はいであれば、ステップ415において、ホームノードは読み出しリクエストに応え、ステップ420において読み出し応答310をリクエスト側ノードに提供する。
ステップ410で答えがノーである場合、ステップ425においてホームノードはリクエスト315をスレーブノードに送信する。これで、この特定のトランザクションへのホームノードの関与が終了する。
別に、ステップ430で、スレーブノードはリクエスト側ノードからヒント305を受信し、ステップ435でメモリにアクセスするためにトランザクション320を開始する。その後、スレーブノードにおける制御の流れは、2つの経路のうちの1つをたどることができ、これらの経路間の区別は、以下でさらに説明されるであろう。1つの経路では、ヒント305が受信されたが後続の読み出しリクエスト315が受信されず、ヒント305が不要であり、ホームノードが実際には読み出し応答310でリクエストに対応できることを暗示する場合には、ステップ440でヒントは破棄され、ヒントの受信に応答して開始されたメモリトランザクションを終了する。
一方、リクエスト315が受信されると、トランザクション320、330が完了するが、このような処理をしない場合よりもわずかに早い。このことは、ステップ435において先駆けて処理が開始され、ステップ450において応答340が提供される前に、ステップ445で読み出しリクエストに応えられたことによる。
読み出しヒントは、図1に示すタイプのネットワーク内の、あるタイプのメッセージまたは命令であって、少なくともいくつかの他のタイプのメッセージまたは命令とは異なり、動作を必要とせず、かつ少なくともいくつかの他のタイプまたはメッセージとは異なり、応答を要求しないタイプのメッセージまたは命令とすることができる。例えば、スレーブノードに他の活動が、既に完全にロードされている場合、スレーブノードは読み出しヒントを破棄または無視できる。実際、中間ノードは、例えばその中間ノードのバッファリング容量および/または送信容量が完全にロードされている場合には、読み出しヒントを捨てる、すなわち伝達しないことがある。スレーブノードは、読み出しヒントに関する受信の応答、すなわち肯定応答を提供する必要はない。したがって、例では、メモリアクセス回路は、受信した読み出しヒントに応答してデータアクセスを開始するか否かを決定するように構成することができる。
図4では、1つ以上のマスターノードは、ホームノードにデータアクセスリクエストを発行する(400)ように構成され、ホームノードは、ホームノードがデータアクセスリクエストに応えられるか、またはデータアクセスが1つ以上のスレーブノードへのアクセスを必要とするかを検出し(410)、1つ以上のスレーブノードへのアクセスが必要なときに、その1つ以上のスレーブノードにデータアクセスリクエストを送信する(425)ように構成される。例では、1つ以上のマスターノードは、以下のいずれかを送信するように構成される。すなわち、ホームノードへのデータアクセスリクエスト200、またはホームノードへのデータアクセスリクエスト300およびホームノードがそのデータアクセスに応えられない場合に、1つ以上のスレーブノードのうち、データアクセスリクエストによって指定されたデータアクセスに応える該当する1つへのデータアクセスヒントメッセージ305である。
図5は、リクエスト側ノードRN-F500の機能の一部を概略的に示す。この例は、(以下に説明するように)単一のプロセッサコアに関するものであるが、プロセッサのグループ、すなわち「クラスタ」にも同様に適用することができる。プロセッサコア510は、プロセッサ命令に基づいて処理動作を行い、かつキャッシュメモリ520にアクセスする。プロセッサコアは、図1のネットワーク100を介してデータ処理トランザクションを開始し、そのようなトランザクションを発行し処理するための回路530を備える。
回路530は、予測器回路532と、履歴格納部534と、未処理トランザクションバッファ536と、発行ロジック538とを含む。予測器回路532および履歴格納部534の機能については後述する。発行ロジック538は、ネットワークへのデータ読み出しリクエストまたはデータ書き込みリクエストの発行をハンドリングし、未処理トランザクション格納部536は、発行され、完了応答がまだ受信されていないリクエストの詳細を維持する。
したがって、図5では、1つ以上のマスターノード500は、データアクセスヒントメッセージを送信するか否かを決定する予測回路532を備える。
図5はまた、予測器回路532と発行回路538とを備えるデータ処理回路の例を提供する。予測器回路532は、最近のデータアクセスリクエストが第1データソース(ホームノード等)によって応えられたか、または第2データソース(DRAM等)によって応えられたかを示す予測データを(例えば履歴格納部534に)格納し、予測データから、次のデータアクセスリクエストが第1データソースによって応えられるか、または第2データソースによって応えられるかを予測する。第1データソースおよび第2データソースは、データアクセスリクエストが第1データソースによっては応えられない場合に、第2データソースによって応えられるように配置されている。発行回路538は、第1データソースにデータアクセスリクエスト300を発行するものであり、発行回路は、所与のデータアクセスリクエストが第2データソースによって応えられるであろうと予測器回路が予測したことに応答して、当該所与のデータアクセスリクエストに第2データソースが応えなければならないであろうという指示(読み出しヒント305等)を第2データソースに発行するように構成される。
図6は、予測器回路532の動作の一例を概略的に示す。履歴格納部534は、例えばカウント値を維持する。カウント値は、以前の読み出しトランザクションがどのようにハンドリングされたかについて受信した情報605に応答して変更ロジック600によって変更される。例えば、読み出しトランザクションの応答がホームノードから受信されるように、読み出しトランザクション処理される場合、履歴格納部534によって保持されているカウントをデクリメントし、例えば1だけ減らしてもよい。トランザクションがDRAMによって処理されたことを読み出し応答が示す場合、履歴格納部534によって保持されているカウントをインクリメントし、例えば1だけ増やしてもよい。
比較器610は、履歴格納部534によって保持されている現在のカウントをしきい値620と比較する。現在のカウントがしきい値よりも大きい(最近のトランザクションの多くがDRAMによって処理されたことを示す)場合、予測ロジック532は、(例えば信号615によって)発行回路538に、読み出しリクエストを発行するのと同時に読み出しヒントを発行するように指示してもよい。一方、カウント値がしきい値以下である場合、信号615は、読み出しヒントが発行されていないことを示し得る。
いわゆるコマンド帯域幅が許せば、読み出しヒントは読み出しリクエストと同時に発行できることに留意されたい。すなわち、そのようなコマンドを搬送するために物理バスが提供され、そのバス上に、両方を同時に発行できるスペースがある場合、同時の発行が行われ得る。読み出しリクエストと読み出しヒントを異なる時間に発行しなければならない場合、いくつかの例では、どちらが先に発行されるかは任意に選択される。
図6(および後述する他の例)に示すタイプの回路を使用する1つの理由は、読み出しヒントがすべての読み出しリクエストと一緒に、すなわちすべての読み出しリクエストに関連して発行される状況を回避することである。そうすることは、ネットワーク全体で、関連するスレーブノードに読み出しヒントを伝播する必要があるため、システム全体に負荷をかける可能性がある。したがって、すべての読み出しリクエストと共に読み出しヒントを発行することで(少なくとも一部の例では)ホームノードが読み出しリクエストに対応できない場合に前述のレイテンシの利点が満たされることが保証されるが、ノード間で情報を送信するために利用可能なメッセージ送信帯域幅が過負荷になるという観点から、システム性能が犠牲になる。したがって、図6に示すタイプの回路、または後述する他の例は、特定の読み出しリクエストに関して、読み出しヒントが有用または適切である可能性が高いか否かの予測すなわち推定を提供することができる。このようにして、発行される読み出しヒントは、(すべての読み出しクエストと共に読み出しヒントが発行される比較状況におけるものよりも)少ないが、図6の回路または後述する他の例の目的は、実際に発行される読み出しヒントが有用である、すなわちそれぞれの読み出しリクエストに対して適切な読み出しヒントとなる傾向があることである。
上述したように、読み出しヒントは、中間ノードによって転送されなくてもよく、受信側スレーブノードによって動作がなされなくてもよいことに留意されたい。したがって、いくつかの例では、RNに提供されるものとして本明細書で説明するタイプの予測回路を、代替的にまたは付加的に、それぞれ読み出しヒントを転送および/または動作を行うか否かに関する、中間ノードおよび/またはスレーブノードに対する情報を、中間ノードまたはスレーブノードに提供してもよい。
変更ロジック600は、履歴格納部534によって保持されたカウントのインクリメントまたはデクリメントをハンドリングする。インクリメントの大きさとデクリメントの大きさは1でなくてもよく、または同じでなくてもよい。例えば、カウントは、ホームノードによってハンドリングされた各トランザクションに対して1だけデクリメントされるが、DRAMによってハンドリングされた各トランザクションに対して2だけインクリメントされてもよい。いくつかの例では、例えば、発行回路538が、例えば読み出しヒントを発行する目標レートと比較して、発行される読み出しヒントが多すぎる、または少なすぎることを検出した場合、インクリメントおよびデクリメントは動作中に適応的な基準で変更されてもよい。同様に、しきい値620は、例えば発行回路538によって、同じ基準で適応させることができる。トランザクションがDRAMによってハンドリングされるときにカウントがインクリメントされることも、トランザクションがホームノード自体によってハンドリングされるときにデクリメントされることも要件ではない。変更が逆方向である限り、どちらの意味も使用することができる。同様に、変更ロジック600によって加えられる変更の方向によって、比較器610によって行われるテストは、しきい値620より大きい、しきい値620以上、しきい値620より小さい、またはしきい値620以下のいずれかであり得る。一般に、しきい値620との比較は、(どちらの方向の変更および比較が使用されても)、DRAMが対応しているリクエストが優勢であることが、次の読み出しリクエストが読み出しヒントを伴うべきであることを示す予測回路を導く傾向があり、ホームノードが対応しているリクエストが優勢であることが、次の読み出しリクエストが読み出しヒントを伴うべきではないことを示す予測回路を導く傾向があるように、構成され得る。一般に、例では、予測器回路は、最近のデータアクセスに第1データソースが応えたことに応答して第1変更量だけカウント値を変更し、最近のデータアクセスに第2データソースが応えたことに応答して第1変更量と反対の方向の第2変更量だけカウント値を変化させるように構成される。説明したように、例において、予測器回路は、第1変更量および第2変更量の一方または両方を変化させるように構成されるように、適応変化を使用することができる。
これらの例では、予測データはカウント値を含み、予測器回路は、最近のデータアクセスリクエストに第1データソースが応えたかまたは第2が応えたかに応じてカウント値を変更するように構成される。
図6の例は単一のカウンタを提供し、したがってプログラムが概してキャッシュミスまたは概してキャッシュヒットの挙動に陥る可能性があるように、プログラムの段階的な動作に基づく予測の例を提供する。単一のカウンタは、キャッシュヒットまたはキャッシュミス動作に陥る傾向を追跡するためのエレガントで単純な方法を提供する。他の例では、より複雑なカウント配置が使用され、それに対応してより詳細な予測配置が提供される。
情報605の使用は、ホームノードおよびスレーブノードの一方または両方から受信された、スレーブノードが1つ以上の以前のデータアクセスリクエストを満たしたか否かを示す指示605に応答して、予測回路がデータアクセスヒントメッセージをスレーブノードに送信するか否かを決定するように構成される例を提供し得る。例では、予測器回路は、第1データソースおよび第2データソースの一方または両方から受信した、どのデータソースが最近のデータアクセスリクエストに応えたかを示す情報に応答して予測データを格納するように構成される。
図6の例では、比較器610によるしきい値との「ハード」比較(カウント値をしきい値と比較するための比較器の例)を使用して、読み出しヒントを発行すべきか否かについてはい/いいえの結果を出す。他の例では、カウントの大きさは、ヒントが有用であるという尤度の指示を提供することができ、それにより、比較器は、この尤度および他の要因(上述したように、所望のレートに対する、読み出しヒントを生成するレート等)に基づいて読み出しヒントを送信するか否かの指示を生成できる。そのため、カウントは、ハード比較として適用されるのではなく、「ソフト」な尤度を示すことができる。
RNおよび/または予測回路は、読み出しヒントが特定の読み出しリクエストに対して実際に発行されたか否かを示す情報を格納することができる。この情報は、後述する例示的な方法で、読み出しヒントが有用であるか否かに関する、スレーブノードからの返信情報と共に、および/またはスレーブノードが特定の読み出しリクエストに対応したことを示す、スレーブノードから返される情報と共に使用できる。
図7は、予測器回路の複数のインスタンス700、710、720、例えば、(i)データ読み出し動作、(ii)命令フェッチ動作、(iii)例えばメモリ管理ユニット(MMU)による使用のためのメモリアドレス変換情報フェッチ等の、読み出しトランザクションの複数のクラスの各々に対して1つのインスタンスを概略的に示す。予測回路700、710、720は、図6に示されているタイプ、または後述するタイプのものであってもよい。トランザクション730のタイプに従って、インスタンス700~720のうちのそれぞれ1つのインスタンスが、概略的なマルチプレクサ740による動作のために選択され得る。適切な予測器回路の出力は現在の予測として使用され、予測が適切であったか否かを示す、応答として受信した情報(以前のリクエストがホームノードによって処理されたかDRAMによって処理されたかの指示605等、ただし、後述する他の例では、付加的に、または代替的に、より詳細な情報が提供され得る)が、当該それぞれの予測器回路に提供される。
したがって、図7は、予測器回路が2つ以上のクラスのデータアクセスリクエストについてそれぞれの予測を生成するように構成されている例を提供する。例えば、2つ以上のクラスのデータアクセスリクエストを、データ読み出しリクエスト、命令フェッチリクエスト、およびアドレス変換フェッチリクエストからなるリストから選択することができる。
図8は、テーブル800によって提供され、結合器820によって生成されたアドレス情報810によってアドレス指定される、カウント値または他の情報のテーブルを概略的に示す。結合器820は、例えば現在の読み出し動作を開始する命令に適切なプログラムカウンタ値のビットおよび/または現在の動作によってアクセスされている物理アドレス(PA)のビット(例えば、アクセスされているアドレスの範囲内の最も低い物理アドレス)を結合する。結合器820によって行われる結合は、例えば、ハッシュ演算、またはそれぞれの値のビットのグループが互いに結合される、いわゆる重ね合わせ演算(folding operation)等であり得る。
テーブル800は複数のカウント値を保持する。アドレス情報810に応答して、カウント値の1つがアクセスのために選択され、カウント値805として(例えば、図6の比較器610と同様の比較器に)出力される。以前の読み出しリクエストの結果に関する情報605が受信されたとき(例えば、以前の読み出しリクエストがホームノードによって対応されたかDRAMによって対応されたか)、(PA/PCを使用して結合器820によって決定されるように)当該読み出しリクエストに適した、それぞれのカウント値が、例えば変更ロジック600または同様のものを使用して変更され、例えばインクリメントまたはデクリメントされる。
そのため、図7には、読み出しリクエストのクラスに従って(その動作に関して)分割された予測回路の例を示しした。図8には、読み出しリクエストに関連するPCおよびPAの一方または両方への依存に従って(予測回路の動作に関して)分割された予測回路の例を示す。
なお、結合器820の動作は、いわゆるエイリアシングの事例につながる場合があり、その場合、PAおよびPC(の一方または両方)の値の、異なる複数のセットは、同一のアドレス情報810の生成につながる場合がある。この潜在的な問題は、後述する図9の例によって少なくとも部分的に軽減することができる。
図9は、予測器回路のさらなる例を概略的に示す。ここで、カウント値は、現在のプログラムカウンタおよびアクセスされている物理アドレスの一方または両方から導出される値が、適切なカウント値を選ぶためのインデックスを生成するために使用されるように、例えば256個のエントリ(したがって8ビットインデックスによってアドレス指定される)のテーブルに格納される。
この例では、3つのそのようなテーブル900、910、920が提供される。各々の場合のインデックスは、プログラムカウンタのビットおよび/またはアクセスされている物理アドレスの、異なる組み合わせによって生成される。インデックスの生成は、それぞれの重ね合わせ/ハッシングロジック905、915、925によって実行される。
重ね合わせ/ハッシングロジック905は、(本例では)プログラムカウンタおよび物理アドレスの32ビットすべてに作用する。一例では、重ね合わせ/ハッシングロジック905は、例えばプログラムカウンタおよび物理アドレス値の各々を、8ビットの各部分(例えば、LSBで始まりMSBで終わる連続した8ビット部分)に分割し、これらの部分を繰り上げることなく加算すること(排他的論理和演算)によって、これらの値を一緒に重ね合わせる(fold)。しかしながら、他のビット数低減技術すなわちハッシュ化技術が使用され得る。結果として得られるインデックスは、テーブル900内の適切なエントリにインデックスを付けるために使用される。
テーブル900の各エントリは、それぞれのカウント値およびタグを格納する。タグも、プログラムカウンタおよび/または物理アドレスからも生成されるが、異なる重ね合わせ技術、すなわちハッシング技術を使用して生成される。タグは、カウント値と一緒にテーブル900に格納され、また重ね合わせ/ハッシングロジック905によって別に再生成される。テーブルエントリがアクセスされると、カウント906が出力されるだけでなく、格納されているタグ907も出力され、これは重ね合わせ/ハッシュロジック905によって生成されたタグ908と比較される。比較器909は、2つのタグ値が同じか否かを検出する。もし同じであれば、比較器930によるカウント値としきい値(thr)との比較は予測に関連し、またそれぞれのカウント値は、読み出しリクエストの結果について、応答として受信した情報に応答して、(例えば図9に示されていない変更ロジック600と同様の変更ロジックによって)修正される。タグ値が同じでない場合、これは長いアドレス値を重ね合わせ、すなわちハッシュ化して短いインデックス値とするエイリアシング効果が、プログラムカウンタと物理アドレスとの現在の組み合わせに対して誤ったエントリが読み出されたことを意味することを、単に意味する。この場合、比較器930による比較は、予測プロセスの一部としては使用されない。
重ね合わせ/ハッシングロジック915によって、プログラムカウンタおよび/または物理アドレスの最下位16ビットのみを使用することを除いて、同様の配置が実行される。同様に、重ね合わせ/ハッシングロジック925は、プログラムカウンタおよび/または物理アドレスの最下位8ビットのみを使用する。各々が、比較器909および比較器930の同様の配置を使用する。
したがって、重ね合わせ/ハッシングロジックの3つのインスタンス905、915、925は、PC/PAビットのそれぞれ異なる部分、例えばそれぞれ異なる大きさの部分を使用して、インデックスおよびタグを生成する。小さい部分ほど、上述したエイリアシングのタイプがより発生しやすくなる。2つ以上のテーブルに対するタグの比較が肯定的である(タグが一致する)ことが判明した場合、プログラムカウンタ/物理アドレスのインデックスを生成するために、そのプログラムカウンタ/物理アドレスのより大きなビット数を使用するテーブルのうちの、該当する1つからのカウント値のしきい値との比較が使用される。言い換えれば、一致するタグを有する複数のテーブルがある場合には、(図9に描かれている)より高い位置にあるテーブルが使用される。
他の例では、最近のリクエストの結果、例えば、読み出しリクエストがホームノードによって対応されたことを示す1と、読み出しリクエストがDRAMによって対応されたことを示す0との履歴が、(例えば)32個の履歴値の順序(先入れ先出し)レジスタ950に配置される。順序レジスタ950では、最下位のエントリが最新の履歴値であり、PCおよび/またはPAに加えて、またはその代わりに、最下位のエントリを、例えば上述したのと同じ部分(31:0、15:0、7:0)を使用して重ね合わせ/ハッシュプロセスに組み込むことができる。
したがって、図9は、以下のうちの1つ以上に依存して予測を生成するように構成されている予測器回路の一例を提供する。すなわち、データアクセスリクエストを開始する処理命令のためのプログラムカウンタ値、およびデータアクセスリクエストに応答してアクセスされるデータ項目のアドレスである。例では、予測器回路は、プログラムカウンタ値およびデータ項目のアドレスの一方または両方から(回路905、915、925によって)インデックスを生成し、そのインデックスによってカウンタ値のテーブルにアクセスするように構成される。回路905、915、925は、プログラムカウンタ値およびデータ項目のアドレスの一方または両方からタグを生成し、インデックスによってアクセスされるカウンタ値のテーブル内のエントリに関連してタグを格納することができる。例では、(回路905、915、925および比較器909による)予測器回路は、格納されているタグを検索し、検索されたタグをプログラムカウンタ値およびデータ項目のアドレスの一方または両方から生成されたタグと比較するように構成される。
図9では、予測器回路は、プログラムカウンタ値およびデータ項目のアドレスの一方または両方の、異なるそれぞれの部分から生成されたそれぞれのインデックスによって、カウンタ値の2つ以上のテーブルにアクセスするように構成される。上述したように、例では、2つ以上のテーブルが、生成されたタグと一致する格納されたタグを有するとき、予測器回路が、2つ以上のテーブルのうちの該当する1つによって格納されたカウンタ値であって、プログラムカウンタ値とデータ項目のアドレスの一方または両方の、より大きいビット数によって生成されたインデックスの参照先であるカウンタ値に応じて予測を生成するように構成される。
図10は、読み出しヒント1000、およびリードまたはライトリクエスト1010の一方または両方を受信するように配置されたメモリコントローラ1005(DMC122、132等)を概略的に示す。未処理読み出しヒントのバッファ1020が提供され、それによって、新しい読み出しヒントが受信されて、アクセスロジック1030がDRAMへのアクセスを開始することによってその読み出しヒントに対する動作が行われたとき、そのヒントを定義する情報が未処理ヒントバッファ1020に格納される。
例では、読み出しヒント(データアクセスヒントメッセージ)およびデータアクセスリクエスト(読み出しリクエスト)は、各々が、1つ以上のメモリアドレスの範囲によってデータアクセスを指定する。未処理のヒントと同じメモリアドレスまたはアドレス範囲に関して、後続のリクエストが受信され、ヒントが受信されて動作が開始された後、十分に早くリクエストが受信された場合(後述)、検出回路1022は、未処理ヒントバッファ1020から削除する。別に、リクエストは未処理リクエストバッファ1040に格納される。アクセスロジック1030は関連する1つ以上のメモリアドレスへのアクセスを継続し、適切な時点で応答1050を生成する。応答は、読み出しリクエストの場合にはリクエストされたデータと、いくつかの例では読み出し応答の最後のデータ項目またはデータビートに付随することがある完了の肯定応答とを含むことができる。
検出回路1022は、読み出しヒントに対応するリクエストが受信された時点で、その読み出しヒントがアクティブであった(例えば、未処理ヒントバッファ1020にまだ保持されている)か否かを検出し、この検出の結果を示す信号1024を生成するように配置される。
応答1050の一部または全部を形成する肯定応答は、データがDRAMから取得されたことを識別する(その予測が正しいことを確認するために予測器回路が使用することができる)情報を含むことができる。これは、応答340(図3)のソースの識別子を肯定応答内で示すことによって実施することができる。応答340(図3)のソースの識別子は、例えば、応答340を提供した特定のメモリリソースの識別子として、応答340を提供したメモリリソースのタイプの分類の識別子として、および/または応答340がDRAMによって提供されたという指示として示される。
応答の一部または全部を形成する肯定応答はまた、後続のリクエストが受信された時点で読み出しヒントがまだアクティブであったか否かについての指示(信号1024に応じて)を含むことができ、それによってメモリアクセスレイテンシの一部を低減するのに役立つヒントの使用状況を示す。
ヒントが受信され、動作が行われる(かつ未処理ヒントバッファ1020に格納される)が、後続のリクエストが受信されない場合(例えば、結局、HNがリクエストに対応できたため)、読み出しヒントが受信されてから、および/または未処理ヒントバッファに最初に格納されてから所定時間経過後に、またはアクセスロジック1030が、ヒントによって開始されたアクセスの処理において所定の段階に達したことを示すとき、または2つのうちの早い方、または2つのうち遅い方のいずれかの時点で、検出回路1022はヒントを回収し、そのヒントを未処理ヒントバッファ1020から削除する。
そのため、メモリアクセス回路が、読み出しヒントに応答して、1つ以上のメモリアドレスの所与の範囲に対するデータアクセスを開始した場合、メモリアクセス回路は、メモリコントローラが、1つ以上のメモリアドレスの所与の範囲を指定する後続のデータアクセスリクエストを受信したときにのみ、アクセスされたデータをデータアクセス応答として提供するように構成される。読み出しヒントだけでは、(例の配置では)関連データの返信につながらない。読み出しヒントは、後続の読み出しリクエストに備えて、メモリアクセスを開始するだけである。
しかしながら、その後(読み出しヒントが回収された後に)読み出しリクエストが受信された場合、読み出しリクエストが受信された時点で関連する読み出しヒントがアクティブではなかったことを示すために信号1024が生成される。
上述した予測回路の例では、カウント値等は、読み出しリクエストがホームノードによって処理された、すなわち応えられたか、またはDRAM等のスレーブノードへの参照によって処理された、すなわち応えられたかに応じて変更される。他の例では、カウント値は、(代替的にまたは付加的に)(i)読み出しヒントが実際に提供されたか否か(スレーブノードからの応答による情報を必要とせずに予測回路および/またはRNで行うことができる検出)、(ii)それぞれの読み出しヒントが、後続のリクエストを受信した時点でまだアクティブであり、それによってヒントの使用が、メモリアクセスレイテンシの一部を低減することに有用であったか否かの一方または両方に応じて変更してもよい。「有用な」読み出しヒントが提供された場合、これは、さらなる読み出しヒントが(例えば、その分類またはハッシュされたアドレスに対して)提供されるべきであることを指示する方向に、カウント値または他の予測を導く傾向がある。読み出しヒントが提供されたが「有用」ではなかった場合、さらなる読み出しヒントを提供すべきではないことを指示する方向にカウント値の変更を導くように配置することができる。読み出しヒントが提供されなかったが、読み出しリクエストがスレーブノード(例えば、DRAM)によって対応された場合、これは、さらなる読み出しヒントが提供されるべきであることを指示する方向に予測を導く傾向があり得る。当然のことながら、これらの結果のいずれかの、任意の個々のインスタンスは、それ自体では、(おそらく個々のインスタンスによってカウントがしきい値の逆方向に動かない限り)RNの挙動に変更を加えて読み出しヒントを発行するようにしたり発行しないようにしたりはしない。しかし、そのような個々のインスタンスは、それでも、カウント値を1つの結果または他の結果に向かって動かすことができる。つまり、予測を一方向または他方向に導く傾向がある。
したがって、図10は、メモリコントローラであって、メモリコントローラとデータ通信している別のノードから受信したデータアクセスヒントメッセージ1000に応答して、メモリに格納されているデータのデータアクセスを開始し、メモリコントローラとデータ通信している別のノードから受信したデータアクセスリクエスト1010に応答して、メモリに格納されているデータにアクセスし、アクセスされたデータをデータアクセスリクエストに対するデータアクセス応答1050として提供するように構成されたメモリアクセス回路(アクセスロジック1030等)を備えるメモリコントローラの例を提供する。
図11は、別の例示的実施形態は、メモリ制御方法であって、ステップ1100において、
メモリコントローラとデータ通信している別のノードから受信したデータアクセスヒントメッセージに応答して、メモリに格納されているデータのデータアクセスを開始することと、
ステップ1110において、メモリコントローラとデータ通信している別のノードから受信したデータアクセスリクエストに応答して、メモリに格納されているデータにアクセスすることと、
ステップ1120において、アクセスされたデータをデータアクセスリクエストに対するデータアクセス応答として提供することとを含むメモリ制御方法を概略的に示す。
図12は、ステップ1200で、最近のデータアクセスリクエストが第1データソースによって応えられたか、または第2データソースによって応えられたかを示す予測データを格納することと、
ステップ1210で、予測データから、次のデータアクセスリクエストが第1データソースまたは第2データソースであって、第1データソースおよび第2データソースが、第1データソースがデータアクセスリクエストに応えない場合には、第2データソースによって応えるように配置されている、第1データソースによって応えられるか、または第2データソースによって応えられるかを予測することと、
ステップ1220において、所与のデータアクセスリクエストが、第2データソースによって応えられるだろうと予測する予測器回路に応答して、当該所与のデータアクセスリクエストに、第2データソースが応えなければならないであろうという指示を第2データソースに発行することとを含むデータ処理方法を概略的に示す。
本出願において、「~に構成されている」という用語は、装置の要素が、定義された動作を実行することができる構成を有することを意味するために使用される。これに関連して、「構成」は、ハードウェアまたはソフトウェアの配置または相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用のハードウェアを有してもよく、またはプロセッサまたは他の処理装置(上述のような処理要素等)が機能を行うようにプログラムされてもよい。「に構成されている」は、定義された動作を提供するために装置要素が何らかの方法で変更される必要があることを意味しない。
本技術の例示的な実施形態を添付の図面を参照して本明細書で詳細に説明したが、本技術はそれらの正確な実施形態に限定されず、当業者であれば、添付の特許請求の範囲によって定義されるような技術の範囲および趣旨から逸脱することなく、様々な変更、追加および修正を行うことができることを理解されたい。例えば、従属請求項の特徴の様々な組み合わせは、本技術の範囲から逸脱することなく、独立請求項の特徴と一緒になされ得る。

Claims (29)

  1. メモリアクセス回路を備えるメモリコントローラであって、前記メモリアクセス回路が、
    前記メモリコントローラとデータ通信している別のノードから受信したデータアクセスヒントメッセージに応答して、メモリに格納されているデータのデータアクセスを開始し、
    前記メモリコントローラとデータ通信している別のノードから受信したデータアクセスリクエストに応答して、前記メモリに格納されているデータにアクセスし、
    アクセスされた前記データを前記データアクセスリクエストに対するデータアクセス応答として提供する、
    ように構成されている、メモリコントローラ。
  2. 前記データアクセスヒントメッセージおよび前記データアクセスリクエストの各々が、1つ以上のメモリアドレスの範囲によってデータアクセスを指定する請求項1に記載のメモリコントローラ。
  3. 前記メモリアクセス回路が、データアクセスヒントメッセージに応答して、1つ以上のメモリアドレスの所与の範囲に対するデータアクセスを開始した場合、前記メモリアクセス回路は、前記メモリコントローラが、1つ以上のメモリアドレスの前記所与の範囲を指定する後続のデータアクセスリクエストを受信したときにのみ、アクセスされた前記データをデータアクセス応答として提供するように構成されている、請求項2に記載のメモリコントローラ。
  4. 前記データアクセスリクエストが、前記メモリコントローラとデータ通信している別のノードであって、前記データアクセス応答が提供されるべき別のノードを指定する、請求項1に記載のメモリコントローラ。
  5. 前記メモリアクセス回路が、受信したデータアクセスヒントメッセージに応答して、データアクセスを開始するか否かを決定するように構成されている、請求項1に記載のメモリコントローラ。
  6. データ処理システムであって、
    各々が、関連づけられたキャッシュメモリを有する1つ以上のマスターノードと、
    各々が、請求項1に記載のメモリコントローラを備える1つ以上のスレーブノードと、
    前記データ処理システムによって格納されているデータ間のコヒーレンシを制御するためのホームノードと、
    を備えるデータ処理システム。
  7. 前記1つ以上のマスターノードが、前記ホームノードにデータアクセスリクエストを発行するように構成され、
    前記ホームノードが、前記ホームノードがデータアクセスリクエストに応えられるか、または前記データアクセスが、1つ以上のスレーブノードへのアクセスを必要とするかを検出し、1つ以上のスレーブノードへのアクセスが必要なときに、前記1つ以上のスレーブノードにデータアクセスリクエストを送信するように構成されている、
    請求項6に記載のデータ処理システム。
  8. 前記1つ以上のマスターノードが、
    前記ホームノードへのデータアクセスリクエスト、または
    前記ホームノードへのデータアクセスリクエスト、および前記ホームノードが前記データアクセスに応えることができない場合に、前記データアクセスリクエストによって指定された前記データアクセスに応える、1つ以上のスレーブノードのうちの、該当する1つへのデータアクセスヒントメッセージ、
    のいずれか一方を送信するように構成されている、請求項7に記載のデータ処理システム。
  9. 前記1つ以上のマスターノードが、前記データアクセスヒントメッセージを送信するか否かを決定する予測回路を備える、請求項8に記載のデータ処理システム。
  10. 前記予測回路が、前記ホームノードおよびスレーブノードの一方または両方から受信した指示であって、前記スレーブノードが、以前のデータアクセスリクエストの1つ以上に応えたか否かを示す指示に応答して、前記データアクセスヒントメッセージを前記スレーブノードに送信するか否かを決定するように構成されている、請求項9に記載のデータ処理システム。
  11. モリコントローラとデータ通信している別のノードから受信したデータアクセスヒントメッセージに応答して、メモリに格納されているデータのデータアクセスを開始することと、
    前記メモリコントローラとデータ通信している別のノードから受信したデータアクセスリクエストに応答して、前記メモリに格納されているデータにアクセスすることと、
    アクセスされた前記データを前記データアクセスリクエストに対するデータアクセス応答として提供することと、
    を含むメモリ制御方法。
  12. 最近のデータアクセスリクエストが第1データソースによって応えられたか、または第2データソースによって応えられたかを示す予測データを格納し、前記予測データから、次のデータアクセスリクエストが前記第1データソースによって応えられるかまたは前記第2データソースによって応えられるかを予測する予測器回路であって、前記第1データソースおよび前記第2データソースが、データアクセスリクエストが前記第1データソースによって応えられない場合に、前記第2データソースによって応えられるように配置されている、予測器回路と、
    前記第1データソースに前記データアクセスリクエストを発行する発行回路であって、所与のデータアクセスリクエストが前記第2データソースによって応えられるであろうと前記予測器回路が予測したことに応答して、前記所与のデータアクセスリクエストに前記第2データソースが応えなければならないであろうという指示を前記第2データソースに発行する発行回路と、
    を備えるデータ処理回路。
  13. 前記予測器回路が、前記第1データソースおよび前記第2データソースの一方または両方から受信した、どのデータソースが最近のデータアクセスリクエストに応えたかを示す情報に応答して前記予測データを格納するように構成されている、請求項12に記載のデータ処理回路。
  14. 前記予測データがカウント値を含み、前記予測器回路が、最近のデータアクセスリクエストに前記第1データソースが応えたか、または前記第2データソースが応えたか応じて前記カウント値を変更するように構成されている、請求項13に記載のデータ処理回路。
  15. 前記予測器回路が、前記カウント値をしきい値と比較するための比較器を備える、請求項14に記載のデータ処理回路。
  16. 前記予測器回路が、最近のデータアクセスに前記第1データソースが応えたことに応答して第1変更量だけ前記カウント値を変更し、最近のデータアクセスに前記第2データソースが応えたことに応答して前記第1変更量とは逆の第2変更量だけカウント値を変化させるように構成されている、請求項14に記載のデータ処理回路。
  17. 前記予測器回路が、前記第1変更量および前記第2変更量の一方または両方を変化させるように構成される、請求項16に記載のデータ処理回路。
  18. 前記予測器回路が、データアクセスリクエストの2つ以上のクラスについてそれぞれの予測を生成するように構成されている、請求項12に記載のデータ処理回路。
  19. データアクセスリクエストの前記2つ以上のクラスが、
    データ読み出しリクエストと、
    命令フェッチリクエストと、
    アドレス変換フェッチリクエストとからなるリストと、から選択される、請求項18に記載のデータ処理回路。
  20. 前記予測器回路が、
    データアクセスリクエストを開始する処理命令のためのプログラムカウンタ値と、
    前記データアクセスリクエストに応答してアクセスされるデータ項目のアドレスと、
    のうちの1つ以上に依存して予測を生成するように構成されている、請求項12に記載のデータ処理回路。
  21. 前記予測器回路が、前記プログラムカウンタ値、および前記データ項目の前記アドレスの一方または両方からインデックスを生成し、前記インデックスによってカウンタ値のテーブルにアクセスするように構成されている、請求項20に記載のデータ処理回路。
  22. 前記予測器回路が、前記プログラムカウンタ値、および前記データ項目の前記アドレスの一方または両方からタグを生成し、前記インデックスによってアクセスされるカウンタ値の前記テーブル内のエントリに関連して前記タグを格納する、請求項21に記載のデータ処理回路。
  23. 前記予測器回路が、格納されているタグを検索し、検索された前記タグを前記プログラムカウンタ値、および前記データ項目の前記アドレスの一方または両方から生成された前記タグと比較するように構成されている、請求項22に記載のデータ処理回路。
  24. 前記予測器回路が、前記プログラムカウンタ値、および前記データ項目の前記アドレスの一方または両方の、異なるそれぞれの部分から生成されたそれぞれのインデックスによって、カウンタ値の2つ以上のテーブルにアクセスするように構成されている、請求項23に記載のデータ処理回路。
  25. 2つ以上のテーブルが、生成されたタグと一致する格納されたタグを有するとき、前記予測器回路が、前記2つ以上のテーブルのうちの該当する1つによって格納されたカウンタ値であって、前記プログラムカウンタ値と前記データ項目の前記アドレスの一方または両方の、より大きいビット数によって生成された前記インデックスの参照先であるカウンタ値に応じて前記予測を生成するように構成されている、請求項24に記載のデータ処理回路。
  26. 各々が、請求項12に記載のデータ処理回路を備え、各々が、関連づけられたキャッシュメモリを有する1つ以上のマスターノードと、
    前記第1データソースを提供するホームノードであって、前記キャッシュメモリのうち、1つ以上からリクエストされたデータを取得することによって所与のデータアクセスリクエストに応えられるか否かを検出するように構成され、かつ前記ホームノードが前記所与のデータアクセスリクエストに応えることができない場合に、前記第2データソースから、リクエストされた前記データをリクエストするように構成されたホームノードと、
    各々が、高レベルメモリを有し、前記第2データソースを提供する1つ以上のスレーブノードと、
    を備えるデータ処理装置。
  27. 前記マスターノードが、前記1つ以上のスレーブノードのうちの1つへのデータ送信をリクエストする送信リクエストを、前記ホームノードに発行するように構成され、
    前記ホームノードが、送信リクエストをシリアライズし、前記1つ以上のスレーブノードへのリクエストにアクセスするようにして、スレーブノードでメモリアドレスに書き込まれたデータを、後続のアクセスリクエストに応答して、前記メモリアドレスから読み出されたデータと一致させるように構成されている、請求項26に記載のデータ処理装置。
  28. 前記ホームノードが、コヒーレントメモリシステムとして、前記1つ以上のマスターノードの前記キャッシュメモリおよび前記1つ以上のスレーブノードの前記高レベルメモリにわたってコヒーレンシを制御し、1つのノードによって、前記コヒーレントメモリシステム内のあるメモリアドレスに書き込まれたデータを、別のノードによって、前記コヒーレントメモリシステム内の、前記メモリアドレスから読み出されたデータと一致させるように構成されている、請求項26に記載のデータ処理装置。
  29. 最近のデータアクセスリクエストが第1データソースによって応えられたか、または第2データソースによって応えられたかを示す予測データを格納することと、
    前記予測データから、次のデータアクセスリクエストが前記第1データソースによって応えられるかまたは前記第2データソースによって応えられるかを予測することであって、前記第1データソースおよび前記第2データソースが、データアクセスリクエストが前記第1データソースによって応えられない場合に、前記第2データソースによって応えられるように配置されている、予測することと、
    前記第2データソースに指示を発行することとであって、所与のデータアクセスリクエストが前記第2データソースによって応えられるであろうと予測器回路が予測したことに応答して、前記所与のデータアクセスリクエストに前記第2データソースが応えなければならないであろうという指示を前記第2データソースに発行することと、を含むデータ処理方法。
JP2019541458A 2017-02-08 2018-01-23 データ処理 Active JP7089530B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/427,391 2017-02-08
US15/427,391 US10402349B2 (en) 2017-02-08 2017-02-08 Memory controller having data access hint message for specifying the given range of one or more memory addresses
PCT/GB2018/050191 WO2018146448A1 (en) 2017-02-08 2018-01-23 Data processing

Publications (2)

Publication Number Publication Date
JP2020514878A JP2020514878A (ja) 2020-05-21
JP7089530B2 true JP7089530B2 (ja) 2022-06-22

Family

ID=61132819

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019541458A Active JP7089530B2 (ja) 2017-02-08 2018-01-23 データ処理

Country Status (8)

Country Link
US (2) US10402349B2 (ja)
EP (1) EP3580661B1 (ja)
JP (1) JP7089530B2 (ja)
KR (1) KR102526431B1 (ja)
CN (1) CN110235113B (ja)
IL (1) IL268321B (ja)
TW (1) TWI766936B (ja)
WO (1) WO2018146448A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10402349B2 (en) * 2017-02-08 2019-09-03 Arm Limited Memory controller having data access hint message for specifying the given range of one or more memory addresses
US11269773B2 (en) * 2019-10-08 2022-03-08 Arm Limited Exclusivity in circuitry having a home node providing coherency control
US12056374B2 (en) 2021-02-03 2024-08-06 Alibaba Group Holding Limited Dynamic memory coherency biasing techniques

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006139646A (ja) 2004-11-15 2006-06-01 Seiko Epson Corp データ転送装置およびデータ転送方法
JP2011054077A (ja) 2009-09-04 2011-03-17 Toshiba Corp マルチプロセッサ
US20150199290A1 (en) 2014-01-13 2015-07-16 Arm Limited Data processing system and method for handling multiple transactions

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7062610B2 (en) * 2002-09-30 2006-06-13 Advanced Micro Devices, Inc. Method and apparatus for reducing overhead in a data processing system with a cache
US7058767B2 (en) * 2003-04-28 2006-06-06 International Business Machines Corporation Adaptive memory access speculation
GB2440758B (en) * 2006-08-08 2011-03-30 Advanced Risc Mach Ltd Interconnect logic for a data processing apparatus
US7555597B2 (en) * 2006-09-08 2009-06-30 Intel Corporation Direct cache access in multiple core processors
US7890699B2 (en) 2008-01-10 2011-02-15 International Business Machines Corporation Processing unit incorporating L1 cache bypass
EP2529312A4 (en) * 2010-01-28 2013-07-03 Hewlett Packard Development Co INTERFACE METHOD AND DEVICE FOR MEMORY DEVICES
US9753858B2 (en) * 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
GB2522906B (en) * 2014-02-10 2021-07-14 Advanced Risc Mach Ltd Region identifying operation for identifying a region of a memory attribute unit corresponding to a target memory address
US10445240B2 (en) * 2014-08-01 2019-10-15 Analog Devices Global Unlimited Company Bus-based cache architecture
US9658963B2 (en) * 2014-12-23 2017-05-23 Intel Corporation Speculative reads in buffered memory
US20160224241A1 (en) * 2015-02-03 2016-08-04 Qualcomm Incorporated PROVIDING MEMORY BANDWIDTH COMPRESSION USING BACK-TO-BACK READ OPERATIONS BY COMPRESSED MEMORY CONTROLLERS (CMCs) IN A CENTRAL PROCESSING UNIT (CPU)-BASED SYSTEM
US10282297B2 (en) * 2017-02-08 2019-05-07 Arm Limited Read-with overridable-invalidate transaction
US10402349B2 (en) * 2017-02-08 2019-09-03 Arm Limited Memory controller having data access hint message for specifying the given range of one or more memory addresses

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006139646A (ja) 2004-11-15 2006-06-01 Seiko Epson Corp データ転送装置およびデータ転送方法
JP2011054077A (ja) 2009-09-04 2011-03-17 Toshiba Corp マルチプロセッサ
US20150199290A1 (en) 2014-01-13 2015-07-16 Arm Limited Data processing system and method for handling multiple transactions

Also Published As

Publication number Publication date
WO2018146448A1 (en) 2018-08-16
IL268321A (en) 2019-09-26
EP3580661A1 (en) 2019-12-18
CN110235113A (zh) 2019-09-13
CN110235113B (zh) 2023-11-14
KR102526431B1 (ko) 2023-04-27
US20180225232A1 (en) 2018-08-09
US20190347217A1 (en) 2019-11-14
US10402349B2 (en) 2019-09-03
US10713187B2 (en) 2020-07-14
KR20190112020A (ko) 2019-10-02
JP2020514878A (ja) 2020-05-21
EP3580661B1 (en) 2023-03-01
TW201832084A (zh) 2018-09-01
TWI766936B (zh) 2022-06-11
IL268321B (en) 2020-10-29

Similar Documents

Publication Publication Date Title
US11314648B2 (en) Data processing
US8122223B2 (en) Access speculation predictor with predictions based on memory region prior requestor tag information
JP5037566B2 (ja) ディレクトリ型コヒーレンシー・プロトコルでの同時アクセスの最適化
US8131974B2 (en) Access speculation predictor implemented via idle command processing resources
JP6984022B2 (ja) マルチノードシステムの低電力管理
JP7089530B2 (ja) データ処理
US20090106498A1 (en) Coherent dram prefetcher
JP2019096309A (ja) メンテナンス動作の実行
JPH10320282A (ja) 仮想キャッシュ・コントロール方法及び装置
US20140006716A1 (en) Data control using last accessor information
US7149852B2 (en) System and method for blocking data responses
US20150220447A1 (en) Information processing apparatus and method
US7797495B1 (en) Distributed directory cache
CN112612725A (zh) 用于处理缓存维护操作的装置和方法
US8122222B2 (en) Access speculation predictor with predictions based on a scope predictor
US8127106B2 (en) Access speculation predictor with predictions based on a domain indicator of a cache line
US7725660B2 (en) Directory for multi-node coherent bus
US7669013B2 (en) Directory for multi-node coherent bus
EP3788494A1 (en) Transfer protocol in a data processing network
US10990543B1 (en) Apparatus and method for arbitrating access to a set of resources
JP2001188705A (ja) タグ更新制御回路
JPH06149673A (ja) キャッシュ制御方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220427

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220610

R150 Certificate of patent or registration of utility model

Ref document number: 7089530

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150