JP5621041B2 - 適応予測によるクリティカルワードの転送 - Google Patents

適応予測によるクリティカルワードの転送 Download PDF

Info

Publication number
JP5621041B2
JP5621041B2 JP2013512246A JP2013512246A JP5621041B2 JP 5621041 B2 JP5621041 B2 JP 5621041B2 JP 2013512246 A JP2013512246 A JP 2013512246A JP 2013512246 A JP2013512246 A JP 2013512246A JP 5621041 B2 JP5621041 B2 JP 5621041B2
Authority
JP
Japan
Prior art keywords
word
delay
clock
request
interface unit
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
JP2013512246A
Other languages
English (en)
Other versions
JP2013532325A (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.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Publication of JP2013532325A publication Critical patent/JP2013532325A/ja
Application granted granted Critical
Publication of JP5621041B2 publication Critical patent/JP5621041B2/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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、プロセッサの分野に関し、より詳細には、プロセッサ及び関連する回路内のキャッシュブロックフィル(a cache block fill)からのクリティカルワード(the critical word)の転送に関する。
通常、プロセッサは、メモリ内のデータにアクセスするためにロード及びストア動作を行う。ロードでは、メモリ位置を読み出してプロセッサにデータを提供することが指示され、ストアでは、プロセッサから提供されたデータを使用してメモリ位置に書き込むことが指示される。プロセッサが実装する命令セットアーキテクチャに応じて、ロード及びストアは、この命令セットアーキテクチャで指定される明示的な命令、メモリ動作を指定する命令内の非明示的な演算、又はこれらの組み合わせとなり得る。
ロード及びストアのためのメモリ待ち時間を短縮するために、通常、プロセッサは1又はそれ以上のキャッシュを実装し、メインメモリシステムにアクセスする前にこのキャッシュにアクセスする。キャッシュは、最近アクセスされたデータをキャッシュブロック単位で記憶する。キャッシュブロックは、様々なプロセッサ内で、32バイト、64バイト、128バイトなどの可変サイズを有することができる。通常、ブロックは、メモリ内でこれらのサイズの固有の境界に整列する。
従って、キャッシュ内でロードに失敗した場合、ロードデータを含むキャッシュブロックがメモリから読み出されてキャッシュに転送される。このキャッシュブロックをキャッシュに記憶することにより、キャッシュ内でヒットするその他のアクセスのための待ち時間は短縮されるが、多くの場合、ロードデータを待つことにより、プロセッサの性能は大きく影響を受ける。通常、キャッシュブロックは、相互接続を介した複数のデータ送信を使用してメモリからプロセッサへ転送される。ロードデータのための待ち時間を短縮するために、ロードデータは、最初のキャッシュブロック転送で提供され、その後残りのデータが転送される。プロセッサ及びキャッシュは、キャッシュブロックが提供されるのを待っている間にロードデータをターゲットに転送するように設計することができる。場合によっては、メモリコントローラを、(例えば、データが転送されるよりも何らかの数のクロックサイクルだけ前に)データがまさに転送されようとしていることを示す応答を送るように設計して、キャッシュ/プロセッサがデータの転送をスケジュールできるようにすることができる。このようなメモリコントローラは、データを転送するよりも固定数のクロックサイクルだけ前に応答を送って、識別されたクロックサイクルでデータが転送されることを保証する。このようにして、転送が正確にスケジュールされる。
ある実施形態では、システムが、メモリコントローラ、1又はそれ以上のプロセッサ、及び対応するキャッシュを含む。このシステムは、プロセッサキャッシュ内で失敗したロード動作に関するデータ転送の正確なスケジューリングを妨げる不確実性の原因を含むことがある。メモリコントローラは、次のクロックサイクルでデータが提供されるはずであることを示す早期応答を提供することができる。しかしながら、システムの不確実性に起因して、データが転送される実際のクロックサイクルは変化する。メモリコントローラとキャッシュ/プロセッサの間のインターフェイスユニットは、現在受け取っている早期応答から対応するデータまでの遅延を予測し、予測した通りにデータが利用できるようになると仮定して、データを転送する準備を推測的に行うことができる。この予測が正確な場合、短い待ち時間でデータを転送することができる。予測が正確でない場合、より長い待ち時間でデータが転送されることがある。インターフェイスユニットは、データの早期応答と転送の間の遅延、又は変化し得る遅延の少なくとも一部をモニタすることができる。インターフェイスユニットは、この測定遅延に基づいて、後から予測した遅延を修正することができる。従って、インターフェイスユニットは、予測した遅延をシステム内で生じる実際の遅延に時間とともに適応させ、不確実性に合わせて調整することができる。
ある実施形態では、この不確実性として、例えば、非同期クロックドメインの交差における不確実な同期遅延、メモリコントローラ、キャッシュ、及び/又はプロセッサ内のパイプライン遅延における不確実性、及びシステムの動作モードの変化(例えば、低出力モードに出入りすることなど)に起因するクロック周波数の1又はそれ以上の変化を挙げることができる。不確実性の原因は、システムによって異なることがある。予測した遅延を、生じた実際の遅延に適応させることにより、データの転送準備ができている時にデータの転送経路に転送の準備ができている頻度が上がり、いくつかの実施形態では、キャッシュミスの状況におけるロードデータのための平均待ち時間を短縮することができる。
以下の詳細な説明では添付図面を参照し、以下これらの図面について簡単に説明する。
集積回路の1つの実施形態を示すブロック図である。 図1に示すインターフェイスユニットの1つの実施形態を示すブロック図である。 図2に示す遅延モニタの1つの実施形態の動作を示すフロー図である。 図3に示すフロー図の一部の1つの実施形態をより詳細に示すフロー図である。 早期応答の指示に応答するクリティカルワード転送制御回路の1つの実施形態の動作を示すフロー図である。 クリティカルワード転送制御回路の1つの実施形態により実装できる状態マシーンの1つの実施形態を示すブロック図である。 クリティカルワード転送の1つの実施形態の動作を示すタイミング図である。 システムの1つの実施形態を示すブロック図である。 図1に示すインターフェイスユニットの別の実施形態を示すブロック図である。
本発明は、様々な修正及び代替形態が可能であるが、図面には本発明の特定の実施形態を一例として示し、本明細書ではこれらについて詳細に説明する。しかしながら、図面及びこれらに対する詳細な説明は、開示する特定の形態に本発明を限定することを意図するものではなく、むしろ添付の特許請求の範囲によって定められる本発明の思想及び範囲内にある全ての修正物、同等物及び代替物を含むことを意図するものであると理解されたい。本明細書で使用する表題は構成目的のものにすぎず、説明の範囲を限定するために使用することを意味するものではない。本出願を通じて使用する「may(〜できる)」という用語は、強制的な意味の(すなわち、〜しなければならない(must)を意味する)ものではなく、許容的な意味(すなわち、可能性を有すること(having the potential to)を意味する)で使用される。同様に、「含む(include、including、及びincludes)」という用語は、限定するわけではないがincludingを意味する。
様々なユニット、回路、又はその他の構成要素について、(1又は複数の)タスクを実行する「ように構成される(configured to)」と記載することがある。このような文脈では、「ように構成される」という表現は、動作中に1又は複数のタスクを実行する「回路を有する」ことを一般に意味する包括的な構造の記述である。従って、これらのユニット/回路/構成要素は、ユニット/回路/構成要素が現在オンでない場合でもタスクを実行するように構成することができる。通常、「ように構成される」に相当する構造を成す回路は、ハードウェア回路を含むことができる。同様に、説明の都合上、様々なユニット/回路/構成要素について、1又は複数のタスクを実行する、と記載することもある。このような記載は、「ように構成される」という表現を含むと解釈すべきである。1又はそれ以上のタスクを実行するように構成されたユニット/回路/構成要素について記述することは、このユニット/回路/構成要素に対して米国特許法第112条第6項の解釈を行使することを明確に意図するものではない。
ここで図1を参照すると、メモリ12に結合された集積回路10の1つの実施形態を示すブロック図を示している。図示の実施形態では、集積回路10が、プロセッサ14A〜14Bなどの1又はそれ以上のプロセッサ、レベル2(L2)キャッシュ16、インターフェイスユニット18、及びメモリコントローラ20を含む。図1には、プロセッサ14Bの一部が、レジスタファイル22及びデータキャッシュ24を含むことをより詳細に示している。プロセッサ14Aも同様とすることができる。メモリコントローラ20は、メモリ12に結合するように構成され、インターフェイスを介してインターフェイスユニット18に結合することもできる。図1に示すように、このインターフェイスは、要求、データ書き込み及びデータ読み出し、及び早期応答を含むことができる。インターフェイスユニット18は、「書き込み」というラベルを付けた書き込みバス、及び要求読み出し及びデータ読み出しを含む読み出しバスを介してL2キャッシュ16にも結合される。インターフェイスユニット18は、調停読み出し(Read Arb)、許可(Gnt)及び取消(Cxcl)を含む調停信号方式を介してL2キャッシュ16にさらに結合される。プロセッサ14A〜14Bは、要求、データ書き込み、及びデータ読み出しを含むことができるインターフェイスによってL2キャッシュ16に結合される。図1には、破線26でクロックドメイン境界も示している。
プロセッサ14A〜14Bは、ロード及びストア動作(本明細書ではより簡潔にロード及びストアと呼ぶ)を実行するように構成するとともに、そのローカルキャッシュ(例えば、プロセッサ14B内のデータキャッシュ24及びプロセッサ14A内の同様のキャッシュ)内のキャッシュミスを検出するように構成することができる。ロードに関しては、プロセッサ14A〜14Bを、失われたキャッシュブロックを読み出すためにL2キャッシュ16にキャッシュフィル要求を送信するように構成することができる。ストアミスに関しても、いくつかの実施形態では、プロセッサ14A〜14Bを、キャッシュフィル要求を送信するように構成することができる。他の実施形態では、プロセッサ14A〜14Bを、L2キャッシュ16及び/又はメモリ12を更新するためにストアを送信するように構成することはできるが、失われたキャッシュブロックを読み出すためにキャッシュフィルを送信することはない。プロセッサ14A〜14Bは、プロセッサ14A〜14Bが開始した各キャッシュフィル要求及び互いのトランザクションに識別子(トランザクション識別子、すなわちTIDなど)を割り当てるように構成することができる。このTIDを、トランザクションの要求、データなどとともに送信して、この送信を同じトランザクションの一部として識別するようにすることができる。
図1に示すように、プロセッサ14BとL2キャッシュ16の間のインターフェイスは、要求バス(アドレス、コマンドなど)及びデータ読み出し/書き込みバスを含むことができる。データ読み出し及び書き込みバスは、図示のように別個の一方向バスであってもよく、又は双方向データバスとして組み合わせてもよい。いくつかの実施形態では、コヒーレンス応答を送信するための応答バスが存在してもよい(図1には図示せず)。他の実施形態では、要求、応答及びデータを送信するための、パケットインターフェイスなどの他のインターフェイスを使用してもよい。プロセッサ14Aへのインターフェイスは、プロセッサ14Bへのインターフェイスと同様のものであってよい。
プロセッサ14A〜14Bは、キャッシュフィル要求にキャッシュブロックのアドレスを含めて送信するように構成することができる。このアドレスは、キャッシュライン内でロードがアクセスしようと試みているワードを識別する、キャッシュミスが検出されたロードの最下位ビットを含むことができる。従って、L2キャッシュ16及び(L2キャッシュに失敗した場合には)メモリコントローラ20に、ロードデータの転送を許可するためにキャッシュブロックのいずれの部分を最初に戻すべきかを識別する情報を提供することができる。ワードは、ロードによりアクセスされるデータ量(例えば、隣接するバイトの数)とすることができる。いくつかの命令セットアーキテクチャでは、様々なデータサイズにアクセスするロードを定義することができる。ワードは、これらのデータサイズの1つとすることができ、このワードの観点から他のデータサイズを表すこともできる(例えば、ワードの1/2にアクセスするロードを表すハーフワード、ワード、2つの隣接するワードにアクセスするロードを表すダブルワードなど)。ロードによりアクセスされたワードは、現在のプロセッサの性能にとってキャッシュブロック内で最も重要なワードであるため、キャッシュフィルのために提供されるキャッシュブロックの「クリティカルワード」と呼ばれることが多い。すなわち、クリティカルワードが提供されるまで、プロセッサはロード状態でストールする(またロードに関するいずれの依存動作もストールする)。いくつかの実施形態では、プロセッサを、他の非依存動作を推測的に実行するように構成することができるが、ロード及びこれに依存する動作を完了するにはクリティカルワードが必要である。
図1に示すように、データ読み出しバスは、データキャッシュ24に結合してこのキャッシュにキャッシュブロックを書き込むことができ、またレジスタファイル22に結合してこのレジスタファイル22にクリティカルワードを書き込むことができる。レジスタファイル22に書き込むべきクリティカルワードを読み出しデータから選択するための多重化(複合)機能又はその他のスイッチング機能が存在してもよい(図1には図示せず)。データ読み出しバスからのデータをデータキャッシュ24及び/又はレジスタファイル22にパイプライン処理するためのバッファリング機能が存在してもよい。
キャッシュブロックは、メモリコントローラ20からインターフェイスユニット18に、インターフェイスを介した複数の送信として転送することができる。本明細書では、各送信をデータのビートと呼ぶことができる。例えば、32バイトのキャッシュブロックは、8バイトの4ビートとして送信することができる。ビートのサイズは、実施形態によって異なることがある。より大きなビートはより広いデータバスで送信することができ、従ってキャッシュブロックの送信にはより少ないビートが必要となり得る。一方、より広いデータバスは、集積回路10内に設ける相互接続(配線)(又は、他の実施形態では集積回路上のピン)の面から、より高価となり得る。従って、ビートのサイズは、設計/性能のトレードオフに基づき、実施形態によって異なることがある。同様に、ビートのサイズは、地点によっても異なることがある。例えば、L2キャッシュ16とインターフェイスユニット18の間で転送されるビート、及びプロセッサ14A〜14BとL2キャッシュ16の間で転送されるビートの各々は、インターフェイスユニット18とメモリコントローラ20の間のビートに対してサイズが異なることがある(同様に、互いにサイズが異なることもある)。
L2キャッシュ16は、プロセッサ14Bからのキャッシュフィル要求に対するヒットをチェックするように構成することができ、またキャッシュヒットが検出された際に、プロセッサ14Bに(最初のビート内のクリティカルワードを含む)キャッシュブロックを戻すように構成することができる。L2キャッシュ16におけるキャッシュヒットをインターフェイスユニット18に進める必要はない。L2キャッシュ16は、プロセッサ14A〜14Bから受け取った要求のためのキューイング機能又はその他のバッファリング機能を含むとともに、インターフェイスユニット18へ送信されるL2キャッシュミスのためのキューイング/バッファリング機能を含むことができる(図1には図示せず)。
図示の実施形態では、L2キャッシュ16が、インターフェイスユニット18への(図1では一般的に「書き込み」として示す)書き込みバスインターフェイスと、図1に示す要求読み出しバス及びデータ読み出しバスを含む、インターフェイスユニット18への読み出しバスインターフェイスとを含むことができる。他の実施形態では、読み出し及び書き込みに単一のバスインターフェイス(又は各々が読み出し及び書き込みをいずれも送信できる複数のバスインターフェイス)を使用することができ、又はパケットインターフェイスなどの他の種類のインターフェイスを使用することもできる。L2キャッシュ16とインターフェイスユニット18の間のインターフェイスは、調停機能を含むこともでき、従ってインターフェイスユニット18は、上述したように及び以下でより詳細に説明するように、プロセッサ14Bへのデータ転送を調停することができる。インターフェイスユニット18は、クリティカルワードの転送、及びキャッシュフィルのためのキャッシュブロックの転送を調停するように構成することができる。L2キャッシュ16は、プロセッサ14A〜14BにL2キャッシュヒットデータを供給することもでき、従ってこのL2キャッシュヒットデータとインターフェイスユニット18からのデータ送信との間を調停することにより、競合するデータソース同士がプロセッサバスに適切にアクセスできるようにすることができる。
L2キャッシュミスの場合、L2キャッシュ16を、インターフェイスユニット18に読み出し要求を送信するように構成することができる。インターフェイスユニット18は、その後この要求をインターフェイスを介してメモリコントローラ20へ送信するように構成することができる。インターフェイスユニット18の1つの実施形態のさらなる詳細については、以下で図2に関連して説明する。図示の実施形態では、インターフェイスが、要求バス、データ書き込みバス、及びデータ読み出しバスを含む(他の実施形態では、双方向のデータ読み出し/書き込みバスを使用することができ、さらに他の実施形態は、パケットインターフェイスを実装することができる)。
図示の実施形態では、インターフェイスユニット18からメモリコントローラ20への要求の送信が、図1に破線26で示すクロックドメイン境界の交差を含むことができる。すなわち、線26よりも上の回路(プロセッサ14A〜14B、L2キャッシュ16、及びインターフェイスユニット18の一部)は、1つのクロックドメイン内に存在し、メモリコントローラ20及びここへのインターフェイスは、異なるクロックドメイン内に存在することができる。クロックドメイン内のクロックは同期することができ、従ってクロックの立ち上がりと立ち下がりの関係は(雑音及びジッタを許容する)決定論的なものとなり得る。クロックドメイン内の回路は、同じ周波数及び位相(すなわち、論理的に同じクロック)で、又は異なる周波数ではあるが互いにロックされた位相でクロック制御することができる。一方、異なるクロックドメイン内のクロックは、互いに同期しないことがある。異なるクロックドメイン内のクロック間には、決定論的な位相関係が存在しないことがある。これらのクロックは周波数が異なることがあり、周波数は互いに依存しないことがある。1つのドメイン内のクロックは、他方のクロックドメインへのいずれの信号又はその他の通知にも関係なく、及びこれらを伴わずに周波数を変化させることができる。従って、インターフェイスユニット18は、一方のクロックドメインから他方のクロックドメインに情報(要求、データなど)を安全に送信するために同期回路を含むことができる。この同期回路は、一方のクロックドメインで正確に(例えば、発信側クロックドメインのタイミング要件を満たして)情報を取得して、他方のクロックドメインで正確に(例えば、受信側クロックドメインのタイミング要件を満たして)情報を送信できるいずれかの回路を含むことができる。以下では、一例として先入れ先出しバッファ(FIFO)を使用するが、あらゆる同期回路を使用することができる。本明細書では、図1のクロックドメイン境界26よりも上のクロックドメインをプロセッサクロックドメインと呼び、クロックドメイン境界よりも下のクロックドメインをメモリクロックドメインと呼ぶ。各ドメインの対応するクロックを、それぞれプロセッサクロック及びメモリクロックと呼ぶことができる。同様に、所与のクロックドメインのクロックサイクルを、それぞれプロセッサクロックサイクル及びメモリクロックサイクルと呼ぶことができる。クロックサイクルは、対応するクロックの1つの周期とすることができる。
メモリコントローラ20は、キャッシュブロックのためのデータを他のデータよりも先に読み出して、クリティカルワードを含むビートを読み出すように構成することができる。メモリコントローラ20は、クリティカルワードを含むビートを、キャッシュブロックの他のビートよりも先に送信するように構成することもできる。本明細書では、クリティカルワードを含むビートを略してクリティカルワードと呼ぶこともできる。
インターフェイスユニット18は、クリティカルワードを受け取ることができ、クリティカルワードを転送するためにL2キャッシュ16に対する調停要求(Read Arb)を送信するように構成することができる。Read Arb要求は、プロセッサ14A〜14Bのいずれが要求されているかを識別することもできる。L2キャッシュ16は、インターフェイスユニット18と、L2キャッシュ16内のキャッシュヒットからのデータとの間の調停を行い、データ読み出しバスを介してプロセッサ14Bへ送信すべきデータを決定するように構成することができる(同様にプロセッサ14Aに対する調停を行うこともできる)。L2キャッシュ16がインターフェイスユニット18の要求を許可した場合、L2キャッシュ16を、インターフェイスユニット18に許可を送信するように構成することができる。また、L2キャッシュ16は、インターフェイスユニット18からのデータ読み出しバスからプロセッサ14Bへのデータ読み出しバスまでの転送経路28を準備することができる。経路28は、複合機能又はその他のスイッチング機能を含むことができ、必要に応じてバッファリング機能を含むこともできる。インターフェイスユニット18は、データを送信するように構成することができる。一般に、転送経路は、ソースから宛先へデータを送信できる、書き込み、バッファリング、複合、及び/又はその他の回路のあらゆる組み合わせを含むことができる。
メモリコントローラ20は、キャッシュフィルのための早期応答を戻して、この早期応答を送信したメモリクロックサイクル(「早期応答クロックサイクル」)の後続のメモリクロックサイクルでクリティカルワードの転送が予想されている旨を示すように構成することもできる。この早期応答は、早期応答が行われているトランザクションを識別する、キャッシュフィルのTIDを含むことができる。後続のクロックサイクルと早期応答クロックサイクルの間のメモリクロックサイクルの数は、実施形態によって異なることがある。一般に、このメモリクロックサイクルの数は、インターフェイスユニット18、L2キャッシュ16、及びプロセッサ14A〜14Bがデータの転送に備える時間を与えるように選択することができる。転送経路を準備するために、1又はそれ以上のプロセッサクロックサイクルを使用することができる。例えば、要求を送信し、調停し、許可を戻し、実際に経路を準備するためのプロセッサクロックサイクルが必要になり得る。このようにして、早期応答が存在せず、クリティカルワードを受け取った時にL2に対する調停が行われる場合に比較して、クリティカルワードの転送の遅延を短縮することができる。しかしながら、許可を受け取った時にデータの転送準備ができていない(例えば、以下の様々な不確実性のために)場合、インターフェイスユニット18は、このデータ送信を取消、クリティカルワードを待ってから再び転送経路に対する調停を行うことができる。メモリコントローラ20は、キャッシュフィルの読み出しがメモリコントローラ20内の指図点を通過してメモリ12に送信されるようスケジュールされた後に早期応答を戻すように構成することができる。1つの実施形態では、メモリコントローラ20が、早期応答により示されたサイクルで読み出しデータを戻すための迂回経路を含むことができる。ある実施形態では、メモリ12にインターフェイス接続する物理層回路を、データ戻り待ち時間を動的に調整してメモリ12の動作を追跡するように構成することができる。このような実施形態では、物理層回路を、現在の遅延を示すフィードバックをメモリコントローラ論理回路に提供するように構成することができる。メモリコントローラ20は、このフィードバックを使用して、早期戻り応答の配信を調整することができる。
早期応答とクリティカルワードの間のメモリクロックサイクル数は、プロセッサクロックがそのサポートされる最も低い周波数で実行されている一方で、メモリがそのサポートされる最も高い周波数で実行されている時にデータ経路の準備を許可するように選択することもできる。他のクロック周波数設定では、提供する必要があったはずの時点よりも早く早期応答を提供することもできるが、あらゆるクロック周波数の構成で早期応答を使用できるようにすることができる。
また、早期応答と対応するデータの間のメモリクロックサイクル数は、L2キャッシュ16を調停する際にインターフェイスユニット18に何らかの柔軟性を提供するように選択することができる。インターフェイスユニット18は、早期応答と対応するデータの間の遅延における不確実性の様々な原因を解明するために、(早期応答の送信と比較して)調停要求タイミングを変化させることができる。インターフェイスユニット18は、システム内で実際に生じた遅延に基づいて調停要求のタイミングを適応させて、転送経路の準備をクリティカルワードの到着により厳密に一致させることができ、従ってクリティカルワードの転送をより短い遅延で成功させる頻度を上げることができる。
上述したように、早期応答から対応するデータまでの遅延の不確実性には原因がある。この不確実性として、例えば、非同期クロックドメインの交差における不確実性を挙げることができる。遅延は、データが到着した時点におけるクロックの捕獲端の位相関係に応じて、様々な時点において1プロセッサクロックサイクルだけ異なることがある。また、いずれかのクロックのクロック周波数の変化が、インターフェイスユニット18が(プロセッサクロックサイクルで測定した)新たな遅延に合わせて調整を行うまで不確実性の原因となり得る。プロセッサ14A〜14B、L2キャッシュ16、インターフェイスユニット18、及び/又はメモリコントローラ20のいずれかにおけるパイプラインのストールも、L2キャッシュ16における調停遅延と同様に不確実性の原因になり得る。
従って、インターフェイスユニット18を、以前のクリティカルワード転送動作で生じた遅延をモニタするように構成することができる。インターフェイスユニット18を、以前に生じた遅延に基づいて、現在のクリティカルワード転送動作に生じる可能性がある遅延を予測するよう構成することができる。すなわち、インターフェイスユニット18は、最近生じた遅延に基づいて、予測される遅延を適応させることができる。従って、インターフェイスユニット18は、時間の経過につれて不確実性に適応するので、クリティカルワード転送をより正確に実行することができる。
プロセッサ14A〜14Bは、あらゆる命令セットアーキテクチャを実装することができる。様々な実施形態では、プロセッサ14A〜14Bが、スーパースカラ又はスカラ、スーパーパイプライン又はパイプライン、アウトオブオーダー又はインオーダー、投機的又は非投機的などを含むあらゆるマイクロアーキテクチャを実装することができる。様々な実施形態では、必要に応じてマイクロコーディング技術を利用してもよく、又は利用しなくてもよい。データキャッシュ24は、あらゆる容量及び構成(セットアソシアティブ、直接マップなど)を有することができる。所与の実施形態に含まれるプロセッサ14A〜14Bの数は異なることができ、1つのプロセッサ又は2つよりも多くのプロセッサを有する実施形態を含む。レジスタファイル22は、あらゆる数のレジスタに対応する記憶装置を含むことができる。例えば、レジスタファイル22は、プロセッサ14A〜14Bが実装する命令セットアーキテクチャで指定される汎用レジスタの数と同じ数のレジスタを少なくとも含むことができる。ある実施形態では、レジスタファイル22が、レジスタ名変更、マイクロコードの使用のための一時レジスタなどをサポートするために、汎用レジスタの数よりも多くのレジスタを含むことができる。
L2キャッシュ16は、必要に応じてあらゆる容量及び構成を有することができる。L2キャッシュ16は、データキャッシュ24を含んでも、或いはデータキャッシュ24を別にし、すなわち含まなくてもよい。他の実施形態は、L2キャッシュ16を含まなくてもよい(そしてプロセッサ14A〜14Bをインターフェイスユニット18に直接結合することができる)。さらに他の実施形態は、追加の階層レベルを含むことができる。
メモリコントローラ20は、メモリ要求を受け取り、メモリ12にインターフェイス接続して要求を完了するように構成された回路を含むことができる。様々な実施形態では、メモリコントローラ20を、静的ランダムアクセスメモリ(SRAM)或いは、同期DRAM(SDRAM)、ダブルデータレート(DDR、DDR2、DDR3、DDR4など)DRAM、低パワーDDR(LPDDR2など)DRAM、RAMBUS DRAMなどの様々な種類の動的RAM(DRAM)などのあらゆる種類のメモリにインターフェイス接続するように構成することができる。
図示の実施形態では、プロセッサ14A〜14B、L2キャッシュ16、インターフェイスユニット18及びメモリコントローラ20が、全て集積回路10としての単一の半導体基板上に統合される。他の実施形態は、他のレベルの統合及び/又は離散部品を実装することができる。集積回路10は、周辺回路を統合してシステムオンチップ(SOC)の実施構成を形成することができる。例えば、このSOCは、ビデオ及び/又はオーディオ処理回路、オンチップ周辺機器、及び/又はオフチップ周辺機器に結合するための周辺インターフェイスなどをさらに含むことができる。図1には1つのクロックドメイン境界26を示しているが、他の実施形態は、複数のクロックドメイン境界を含むことができる。
ある実施形態では、プロセッサ14A〜14Bをプロセッサ手段の一例とすることができ、L2キャッシュ16をキャッシュ手段の一例とすることができ、インターフェイスユニット18をインターフェイス手段の一例とすることができ、メモリコントローラ20をメモリコントローラ手段の一例とすることができる。各手段は、対応する部品の上述した動作を実現するための手段とすることができる。一般に、指定した動作を実行する組み合わせ論理回路及び/又は順序論理回路を使用することができる。
次に図2を参照すると、インターフェイスユニット18の1つの実施形態のブロック図を示している。図示の実施形態では、インターフェイスユニット18が、書き込みキュー30、読み出し要求キュー32、読み出しデータキュー34、L2調停(Arb)回路36、要求制御回路38、カウンタ40、クリティカルワード転送制御回路42、遅延モニタ回路44、及び非同期(async)FIFO46A、46B、46C及び46Dを含む。書き込みキュー30は、L2キャッシュ16から書き込み動作を受け取るように結合され、非同期FIFO46A〜46B及び要求制御回路38に結合される。読み出し要求キュー32は、L2キャッシュ16から読み出し要求を受け取るように結合され、要求制御回路38及び非同期FIFO46Bに結合される。カウンタ40は、非同期FIFO46Bに結合される。読み出しデータキュー34は、L2キャッシュ16へのデータ読み出しインターフェイス、L2Arb回路36、及び非同期FIFO46Cに結合される。L2Arb回路36は、L2キャッシュ16への調停インターフェイス(Read Arb、Gnt、及びCxcl)及びクリティカルワード転送制御回路42に結合される。クリティカルワード転送制御回路42は、遅延モニタ回路44及び非同期FIFO46Dに結合される。遅延モニタ回路44は、非同期FIFO46C〜46Dに結合される。非同期FIFO46Aは、メモリコントローラ20へのデータ書き込みバスに結合される。非同期FIFO46Bは、メモリコントローラ20及び非同期FIFO46C〜46Dへの要求バスに結合される。非同期FIFO46Cは、メモリコントローラ20からのデータ読み出しバスに結合され、非同期FIFO46Dは、メモリコントローラ20から早期応答を受け取るように結合される。
クリティカルワード転送制御回路42を、メモリコントローラ20から(非同期FIFO46Dを介して)早期応答指示を受け取るように結合して、受け取った早期応答に対応するクリティカルワードを転送するためにL2キャッシュ16に対していつ推測的に調停を行うべきかを決定するように構成することができる。より詳細には、クリティカルワード転送制御回路42を、早期応答を受け取ってから、(ゼロよりも大きな)正の整数をNとするNプロセッサクロックサイクル後に転送経路28を調停する要求を生成するように構成することができる。クロックサイクル数「N」は、転送経路の許可を、クリティカルワードを転送に利用できるクロックサイクルに合わせて調整して、クリティカルワードまでの遅延を短縮できるように選択することができる。より詳細には、Nのサイズを、遅延モニタ回路44により計算された遅延とすることができ、又はこの遅延から導出することができる。クリティカルワード転送制御回路42は、L2Arb回路36に調停要求を信号送信することができ、L2Arb回路36は、読み出しArbを応答に含めて送信することができる。
1つの実施形態では、クリティカルワード転送制御回路42を、複数の早期応答を同時に追跡するように構成することができる。例えば、クリティカルワード転送制御回路42は、各々が別個の早期応答を追跡するように割り当て可能な、状態マシーン又はその他の論理回路の複数のインスタンスを含むことができる。クリティカルワード転送制御回路42は、早期応答を受け取った時に、この早期応答にアイドル状態のマシーンを割り当てるように構成することができる。
メモリコントローラ20は、他の読み出しデータと同様のクリティカルワードをインターフェイスユニット18に提供することができ、インターフェイスユニット18は、非同期FIFO46Cを使用して、このデータをプロセッサクロックドメインに同期させることができる。このデータを、読み出しデータキュー34に提供して記憶し、これを読み出しデータキュー34からデータ読み出しバスを介してL2キャッシュ16に転送することができる。いくつかの実施形態では、クリティカルワードを、読み出しデータキュー34を迂回させて、1プロセッサクロックサイクル早く転送するために利用可能にすることができる。
遅延モニタ回路44は、非同期FIFO46D及び46Cから提供された早期応答と対応するデータの間の遅延をそれぞれ測定して、実際に生じている遅延を(プロセッサクロックサイクルの面から)検出するように構成することができる。この測定遅延が以前に測定した遅延と異なる場合、遅延モニタ回路44を、クリティカルワード転送制御回路42に提供する遅延を修正するように構成することができる。遅延モニタ回路は、遅延を適応させることができるが、1つの実施形態では、現在測定されている遅延に等しい遅延については即座に設定しないことがある。代わりに、遅延モニタ回路44は、現在測定されている遅延に近付くように遅延を修正することができる。時間の経過につれ、現在測定されている遅延が安定したままである場合、遅延モニタ回路44からの遅延は、現在測定されている遅延に近付くことができる。一方、現在測定されている遅延の短期的な変化が、クリティカルワード転送制御回路42に提供される遅延に大きく影響を与えることはない。遅延モニタ回路44は、早期応答から実際にデータを受け取るまでの遅延を測定できるが、様々な実施形態は、早期応答とクリティカルワードの転送の間のいずれかの遅延部分を測定すること、又は遅延を全て測定することができる。
図示の実施形態では、カウンタ40が、プロセッサクロックドメインのクロックサイクル毎に増分し、読み出しデータ及び早期応答のタイムスタンプとして機能することができる。クロックサイクル毎に、現在のカウンタ値を非同期FIFO46Bに(存在する場合には、読み出し要求キュー32又は書き込みキュー30からの読み出し又は書き込み要求とともに)書き込み、非同期FIFO46Bの出力に非同期FIFO46C及び46Dへの入力として提供することができる。このタイムスタンプを(存在する場合には、読み出しデータ及び早期応答データとともにそれぞれ)非同期FIFO46C〜46Dに書き込むことができる。遅延モニタ回路44は、非同期FIFO46C〜46Dからタイムスタンプ及びTIDを受け取ることができる。遅延モニタ回路44は、同じTIDに関するタイムスタンプの差分を遅延の測定値として取ることができる。他の実施形態では、他の方法で遅延を測定することができる。また、他の実施形態は、他の同期回路を(すなわち、非同期FIFO46Bを使用する代わりに)使用して、タイムスタンプをメモリクロックドメインに同期させることができる。例えば、図9は、インターフェイスユニット18の別の実施形態のブロック図である。図9の実施形態では、カウンタ40がグレイエンコーダ160に結合される。このグレイエンコーダ160を、カウンタ値をグレイ符号化し、このグレイ符号化値を同期装置162に提供するように構成することができる。同期装置162は、このグレイ符号化値をメモリクロックドメインに同期させるように構成することができる。同期装置162の出力は、非同期FIFO46C〜46Dにタイムスタンプを提供するように結合されたグレイデコーダ164に結合される。グレイデコーダ164は、グレイ符号化したカウンタ値を復号し、この値をタイムスタンプとして非同期FIFO46C〜46Dに供給することができる。一般に、グレイ符号化は、値が増分される度にこの値の1ビットしか変化しないように設計することができる。グレイ符号化は、クロックドメイン境界26をまたぐビットの同期タイミングにばらつきがある場合でも、有効値がメモリクロックドメインでサンプリングされることを確実にすることができる。図9の同期回路は、例えば、メモリコントローラ20に新たな要求が送信された場合にのみ非同期FIFO46Bに書き込みが行われる実施構成で使用することができる。すなわち、カウンタ値を絶えずメモリクロックドメインに同期させることができ、非同期FIFO46Bは、(毎クロックサイクルで発生するわけではない)有効な要求のみをメモリクロックドメインに同期させることができる。
この実施形態では、非同期FIFO46A〜46Dが同期回路として機能し、クロックドメイン境界26をまたいで情報の送信を同期させることができる。一般に、非同期FIFOは、複数のエントリとして構成されたメモリ、発信側クロックドメインから次の情報を書き込むべきエントリの1つを示す、発信側クロックドメイン内の書き込みポインタ、及び受信側クロックドメインにおいて次の情報を読み出すべきエントリの別の1つを示す、受信側クロックドメイン内の読み出しポインタを含むことができる。読み出しポインタと書き込みポインタが同じエントリを示さないことを確実にする(及び場合によっては、読み出しポインタと書き込みポインタの間に1又はそれ以上のエントリが存在することを確実にする)ことにより、エントリ内の情報が、読み出しポインタに応答して読み出される前に書き込みからのエントリ内で安定することを確実にすることができる。
図示の実施形態では、非同期FIFO46A〜46Bを、発信される書き込みデータ及び読み出し/書き込み要求を(それぞれ)メモリコントローラ20に同期させるように構成することができる。より詳細には、L2キャッシュ16から受け取った時に、読み出し要求を読み出し要求キュー32に入れ、書き込み要求及びデータを書き込みキュー30に入れることができる。要求制御回路38を、書き込みキュー30及び読み出し要求キュー32をモニタして、メモリコントローラ20に送信すべき要求を選択するように構成することができる。この選択された要求を、キュー30又は32から非同期FIFO46Bに書き込むことができる。読み出し要求キュー32には、例示的なエントリを示しており、このエントリは、要求のアドレスを記憶するアドレスフィールド(Addr)、属性フィールド(Attr)内の様々な属性、及びこの要求に割り当てられたTIDを記憶するトランザクションIDフィールド(TID)を含む。書き込みキューエントリも同様とすることができるが、このエントリは、データのためのデータフィールドを含むこともできる(又は別個の書き込みデータキューが存在してもよい)。これらの要求アドレス、属性及びTIDを、非同期FIFO46Bの例示的なエントリ内の要求フィールド(Req)として、上述したようなカウンタ40からのタイムスタンプとともに示している。同様に、非同期FIFO46Aの例示的なエントリには、書き込みデータ及びTIDを示している。
非同期FIFO46C〜46Dは、メモリコントローラ20からの着信読み出しデータ及び早期応答をそれぞれ同期させるように構成することができる。非同期FIFO46Cの例示的なエントリには、読み出しデータ(Data)及びTIDフィールド、並びに非同期FIFO46Bからのタイムスタンプを取り込むタイムスタンプフィールド(TS)を示している。この非同期FIFO46Cからのデータを、L2キャッシュ16に送信するために読み出しデータキュー34に書き込むことができる。例示的な読み出しデータキューのエントリには、データフィールド(Data)及びTIDフィールド(TID)を示している。非同期FIFO46Dには、早期応答が提供される読み出しのTID及びタイムスタンプフィールド(TS)を含む例示的なエントリを示している。
ある実施形態では、キュー30、32及び34をキューイング手段の一例とすることができ、L2arb制御回路36を調停手段の一例とすることができ、クリティカルワード転送制御回路42をクリティカルワード転送手段の一例とすることができ、遅延モニタ回路44をモニタリング手段の一例とすることができ、カウンタ40を計数手段の一例とすることができ、要求制御回路38を要求制御手段の一例とすることができ、非同期FIFO46A〜46Dを同期手段の一例とすることができる。各手段は、対応する部品の上述した動作を実現するための手段とすることができる。一般に、指定した動作を実行する組み合わせ論理回路及び/又は順序論理回路を使用することができる。
なお、インターフェイスユニット18の他の実施形態は、L2キャッシュ16及び/又はメモリコントローラ20への異なるインターフェイスを有することができ、他にも内部的な違いを有することができる。例えば、ある実施形態では、L2キャッシュ16への要求書き込みインターフェイスとデータ書き込みインターフェイスを分離することができ、L2への調停インターフェイスを、(上述したような)読み出し及び(書き込みデータを抽出するための)書き込みの両方に使用することができる。ある実施形態では、書き込み要求及び読み出し要求を別個のインターフェイスを介してメモリコントローラ20へ送信することができ、読み出し要求及び書き込み要求のための別個の非同期FIFOが存在することができる。メモリコントローラ20への別個のデータ書き込み及び応答書き込みインターフェイス、及びこれらのインターフェイスのための別個の非同期FIFOが存在してもよい。様々な実施形態において、あらゆる構成を使用することができる。
ここで図3を参照すると、遅延を測定し、この測定遅延に基づいて、クリティカルワード転送制御回路42に提供する遅延を調整するための、遅延モニタ回路44の1つの実施形態の動作を示すフロー図を示している。理解しやすくするために、ブロックを特定の順序で示しているが、他の順序を使用することもできる。遅延モニタ回路44が実装する組み合わせ論理では、ブロックを同時に実行することができる。ブロック、ブロックの組み合わせ、及び/又は全体としてのフロー図は、複数のクロックサイクルにわたってパイプライン化することができる。遅延モニタ回路44を、図3に示す動作を行うように構成することができる。
遅延モニタ回路44は、早期応答を受け取った(判定ブロック50、「はい」の支脈)場合、非同期FIFO46DからTID及びタイムスタンプを取り込むことができる(ブロック52)。この遅延モニタ回路44を、複数の早期応答を同時に追跡するように構成することができる。従って、遅延モニタ回路44は、ゼロよりも大きな正の整数をMとする最大M個のTID及びタイムスタンプを取り込むためのリソースを含むことができる。
非同期FIFO46Cにおいてクリティカルワードを受け取った(判定ブロック54、「はい」の支脈)場合、遅延モニタ回路44は、このクリティカルワードのTIDを、取り込んだ早期応答のTIDと比較することができる。このTIDがクリティカルワードのTIDの1つに一致した(判定ブロック56、「はい」の支脈)場合、遅延モニタ回路は、測定遅延を求め、この測定遅延と出力遅延が異なる場合、クリティカルワード転送制御回路42への出力遅延を調整することができる(ブロック58)。
図4は、図3に示すブロック58の1つの実施形態を示すフロー図である。理解しやすくするために、ブロックを特定の順序で示しているが、他の順序を使用することもできる。遅延モニタ回路44が実装する組み合わせ論理では、ブロックを同時に実行することができる。ブロック、ブロックの組み合わせ、及び/又は全体としてのフロー図は、複数のクロックサイクルにわたってパイプライン化することができる。遅延モニタ回路44を、図4に示す動作を行うように構成することができる。
遅延モニタ回路44は、クリティカルワードのタイムスタンプと、一致するTIDからの早期応答タイムスタンプの差分として、測定遅延を計算することができる(ブロック60)。遅延モニタ回路44は、ブロック60からの測定遅延からクリティカルワード転送制御回路42に出力される現在の遅延を差し引いたものとして、誤差を計算することができる(ブロック62)。従って、測定遅延が現在出力されている遅延よりも大きい場合、この誤差は正であり、測定遅延が現在出力されている遅延よりも小さい場合、この誤差は負である。遅延モニタ回路44は、現在出力されている遅延に誤差の1/2を加算して、新たな出力遅延を生成することができる(ブロック64)。従って、この新たな遅延を、現在出力されている遅延と測定遅延の間の距離の1/2に移行させることができる。他の実施形態では、異なる誤差の割合を含む他の調整機構を使用することができる。
ここで図5を参照すると、クリティカルワード転送制御回路42の1つの実施形態の動作を示すフロー図を示している。理解しやすくするために、ブロックを特定の順序で示しているが、他の順序を使用することもできる。クリティカルワード転送制御回路42が実装する組み合わせ論理では、ブロックを同時に実行することができる。ブロック、ブロックの組み合わせ、及び/又は全体としてのフロー図は、複数のクロックサイクルにわたってパイプライン化することができる。クリティカルワード転送制御42を、図5に示す動作を行うように構成することができる。
クリティカルワード転送制御回路42が早期応答を受け取り(判定ブロック70、「はい」の支脈)、予測される遅延に従ってL2調停要求を推測的に生じさせるために状態マシーンを利用できる(判定ブロック72、「はい」の支脈)場合、クリティカルワード転送制御回路42は、このトランザクションに状態マシーンを割り当てることができる(ブロック74)。様々な実施形態では、あらゆる数の状態マシーンを実装することができ、様々な割り当て機構を使用することができる。例えば、到着する最初のクリティカルワード転送動作に状態マシーンを割り当てる先着順方式を使用することができる。他の実施形態では、各プロセッサ14A〜14Bへの少なくとも1つのクリティカルワード転送を処理できるように、各プロセッサ14A〜14Bのために1又はそれ以上の状態マシーンを確保することができる。残りの状態マシーンが存在する場合、これらを先着順に割り当てることができる。いくつかの実施形態では、各要求をモニタできるように、状態マシーンの数を未処理のキャッシュフィル要求の最大数に等しくすることができる。
図6は、L2キャッシュ16への調停要求を推測的に生成し、予測される遅延に基づいてクリティカルワードを転送するためにクリティカルワード転送制御回路42が実装できる状態マシーンの1つの実施形態のブロック図である。上述したように、複数のクリティカルワード転送の機会を同時に追跡するために、複数の状態マシーンのインスタンスが存在することができる。クリティカルワード転送制御回路42は、状態マシーンを実装する回路を含むことができる。一般に、状態マシーンは、状態マシーンを所与の状態から離す条件が検出されるまで(例えば、図6に示す矢印を介して)、その状態に留まることができる。
状態マシーンは、リセット時に、又は状態マシーンがそのクリティカルワード転送動作を完了した時にアイドル状態80において開始することができる。早期応答に応答して状態マシーンが割り当てられると(図5のブロック74)、状態マシーンは、要求を待つ状態82に移行することができる。状態マシーンは、要求を行うための予測時間が経過するまで、又はクリティカルワードが到着して転送に利用できるようになるまで、要求を待つ状態82に留まることができる。予測時間が経過する前にクリティカルワードが到着した場合、転送経路に対する調停要求が非推測的に行われる。いずれの場合にも、状態マシーンは、要求適格状態84に移行することができる。
この予測時間は、遅延モニタ回路44からの出力遅延から導出することができる。例えば、予測時間は、インターフェイスユニット18に対する調停要求と許可の間のサイクル数(例えば、この実施形態では3クロックサイクル)だけ遅延時間よりも少ないことがある。或いは、予測時間と出力される遅延時間の差分に、パイプライン遅延の追加クロックサイクルを含めることもできる。一般に、予測時間は、クリティカルワードの転送経路を推測的に要求することによって短縮できるクロックサイクル数だけ遅延時間よりも少なくなり得る。いくつかの実施形態では、(データよりも前に転送経路が利用可能となるように)遅延を低く見積もるよりも(転送経路が準備される直前にデータが到着するように)高く見積もることが有益な場合がある。例えば、転送経路が利用可能であってクリティカルワードの転送準備ができていない場合、インターフェイスユニット18は転送を取り消して、データが利用可能になった時に再び調停を行い、推測的な調停によって短縮される遅延を失うことがある。
要求適格状態84において、クリティカルワード転送制御回路42は、転送経路の調停を行う要求をL2Arb回路36に対して推測的に生成することができる。この読み出しarb要求が送信されると、状態マシーンは、許可を待つ状態86に移行して、L2キャッシュ16が調停要求を許可するまでここに留まることができる。その後、状態マシーンは、クリティカルワード準備状態88に移行することができる。クリティカルワードを転送に利用できる場合、状態マシーンは、クリティカルワード転送状態90に移行してクリティカルワードを転送することができる。1つの実施形態では、キャッシュフィルが完了している場合、状態マシーンが、インターフェイスユニット18内で読み出し要求が待機解除される時点まで状態90に留まって待機解除を阻止することができる。その後、キャッシュブロックが提供されると、同じ経路を使用してL2キャッシュ16及びデータキャッシュ24にデータを書き込むことができる。待機解除が阻止された後、クリティカルワードの転送が完了し、状態マシーンはアイドル状態80に移行することができる。他の実施形態では、クリティカルワード状態90後に、連続状態の組を使用して待機解除への進行を追跡し、待機解除を抑制した後でアイドル状態80に戻ることができる。
一方、状態マシーンが状態88に到達した時にクリティカルワードの準備ができていない場合、状態マシーンは、転送(L2キャッシュ16へのCxcl)を取り消して、データを待つ状態92に移行することができる。状態マシーンは、クリティカルワードを受け取った時に状態92から状態84に移行して、このクリティカルワードを非推測的に転送することができる。或いは、他の実施形態では、状態マシーンが、クリティカルワードを転送するための推測的要求のみを処理すればよい。推測に失敗した場合、L2Arb回路36は、クリティカルワードが到着した時にこれを調停することができる。このような実施形態では状態92を削除することができ、クリティカルワードを転送する準備ができていない場合、状態マシーンは、状態88からアイドル状態80へ戻ることができる。
いくつかの実施形態では、同様にさらなる移行が存在してもよい。例えば、状態マシーンが非推測的なクリティカルワード転送を処理する実施形態では、クリティカルワードが到着した場合、状態マシーンは、アイドル状態80から要求適格状態84に移行することができる。
図7は、クリティカルワード転送例の(垂直破線で境界を定めた)プロセッサクロックサイクルを示すタイミング図である。クロックサイクル毎の状態マシーンの状態を、ラベルSMから横方向に示している。インターフェイスユニット18とL2キャッシュ16の間の動作をラベルL2から横方向に示しており、プロセッサにおける動作をラベルPから横方向に示している。
最初のクロックサイクルにおいて、状態マシーンはアイドル状態80にあり、状態マシーンの割り当てを生じる早期応答が受け取られる(矢印100)。状態マシーンは、要求を待つ状態82(図7のW4R)に移行し、推測的要求を行うための予測時間をカウントし始める。第5のクロックサイクルにおいて予測時間が経過し(矢印102)、状態マシーンは、要求適格状態84(図7のReqEl)に移行する。第6のクロックサイクルにおいて読み出しarb要求が送信され(矢印106)、状態マシーンは、許可を待つ状態86(図7のW4G)に移行する。第7のクロックサイクルにおいてL2キャッシュが調停を行い、第8のクロックサイクルにおいてインターフェイスユニット18に許可を送信する(矢印108)。状態マシーンは、クリティカルワード準備状態88に移行し、読み出しバッファ34内でクリティカルワードを転送に利用できるようになる(矢印110)。第10のクロックサイクルにおいて、クリティカルワードが転送経路内に送信され、状態マシーンは、転送クリティカルワード状態90(図7のFCW)に移行する。このクロックサイクルは、非推測的調停読み出し要求が正常に送信されるクロックサイクルでもある(破線112)。従って、この実施形態で短縮される遅延は、この実施形態の矢印106及び112に対応するクロックサイクル間の差分、すなわち図示の実施形態では4クロックサイクルとなり得る。
この実施形態では、クリティカルワード転送のためには実行されないL2キャッシュルックアップヒット検出のためのいくつかのクロックサイクルが経過する。しかしながら、この例では、クリティカルワードの転送に同じパイプラインが使用され、従ってデータはこれらのパイプライン段階を流れる。データは、L2を介して(L2へのデータ、参照数字114)プロセッサ(Pへのデータ、参照数字116)に転送される。その後、状態マシーンはアイドル状態に戻ることができる。
次に図8を参照すると、システム150の1つの実施形態のブロック図を示している。図示の実施形態では、システム150が、外部メモリ12に結合された集積回路10の少なくとも1つのインスタンスを含む。集積回路10は、1又はそれ以上の周辺機器154及び外部メモリ12に結合される。集積回路152に供給電圧を供給し、メモリ12及び/又は周辺機器154に1又はそれ以上の供給電圧を供給する電力供給装置156も設けられる。いくつかの実施形態では、集積回路10の複数のインスタンスを含めることができる(及び複数の外部メモリ12を同様に含めることもできる)。
周辺機器154は、システム150の種類に応じて、あらゆる所望の回路を含むことができる。例えば、1つの実施形態では、システム150を(携帯情報端末(PDA)、スマートフォンなどの)モバイル装置とすることができ、周辺機器154が、wifi、Bluetooth、セルラー、全地球測位システムなどの、様々な種類の無線通信のための装置を含むことができる。周辺機器154は、RAM記憶装置、固体記憶装置又はディスク記憶装置を含む、追加の記憶装置を含むこともできる。周辺機器154は、タッチディスプレイ画面又はマルチタッチディスプレイ画面などのディスプレイ画面、キーボード又はその他の入力装置、マイク、スピーカなどのユーザインターフェイス装置を含むことができる。他の実施形態では、システム150が、(デスクトップパーソナルコンピュータ、ラップトップ、ワークステーション、ネットトップなどの)いずれの種類のコンピュータシステムであってもよい。
上記開示が完全に理解されると、当業者には数多くの変形例及び修正例が明らかになるであろう。以下の特許請求の範囲は、全てのこのような変形例及び修正例を含むと解釈されたい。
18 インターフェイスユニット
26 クロックドメイン境界
30 書き込みキュー
32 読み出し要求キュー
34 読み出しデータキュー
36 L2Arb
38 要求制御
40 カウンタ
42 クリティカルワード転送制御
44 遅延モニタ
46A 非同期FIFO
46B 非同期FIFO
46C 非同期FIFO
46D 非同期FIFO

Claims (14)

  1. 読み出し要求に対応するデータが将来的なクロックサイクルで送信されると予想される旨の指示をメモリコントローラから受け取るように結合されたインターフェイスユニットであって、
    前記データを前記読み出し要求の発信元に転送する要求を生成し、前記メモリコントローラから前記指示を受け取ってから、以前の遅延から予測される正の整数をNとするNクロックサイクル後に前記要求を生成して、前記データを前記将来的なクロックサイクルで続けて受け取った時に前記データの転送を許可するように構成された制御回路と、
    前記指示から前記対応するデータの転送までの時間の少なくとも一部にわたる遅延をモニタし、Nを適応的に修正して前記遅延の不確実性を考慮するように構成された遅延モニタ回路と、
    を備えることを特徴とするインターフェイスユニット。
  2. 前記遅延モニタ回路及び前記制御回路が、第1のクロックに従って動作し、該第1のクロックのクロックサイクルでNが測定され、前記メモリコントローラが、前記第1のクロックに同期しない第2のクロックに従って動作するように構成され、前記遅延の不確実性の原因が、前記第2のクロックに関連する第2のクロックドメインから前記第1のクロックに関連する第1のクロックドメインへの同期を含む、
    ことを特徴とする請求項1に記載のインターフェイスユニット。
  3. 前記遅延の不確実性の別の原因が、前記第1のクロック及び前記第2のクロックの少なくとも一方のクロック周波数の変化である、
    ことを特徴とする請求項2に記載のインターフェイスユニット。
  4. 前記遅延の不確実性の原因が、前記読み出し要求の発信元へのパイプラインにおけるストールである、ことを特徴とする請求項1に記載のインターフェイスユニット。
  5. 前記同期を実行するように構成された1又はそれ以上の先出し先入れ(FIFO)バッファと、
    前記第1のクロックに従って増分するように構成されたカウンタと、
    をさらに備え、前記インターフェイスユニットが、前記カウンタの値を前記第2のクロックドメインに同期させるとともに、前記FIFOバッファを介して前記第2のクロックドメインから前記第1のクロックドメインに同期させるように構成され、前記指示と同時に前記FIFOバッファから受け取った前記カウンタの値と、前記データと同時に前記FIFOバッファから受け取った値との差分を前記遅延の測定値とする、
    ことを特徴とする請求項に記載のインターフェイスユニット。
  6. 各々がデータキャッシュを含むとともに、該データキャッシュにおけるキャッシュミスに応答して読み出し動作を生成するように構成された1又はそれ以上のプロセッサと、
    前記プロセッサに結合された第2レベルキャッシュと、
    を備え、前記第2レベルキャッシュが、該第2レベルキャッシュにおいて失敗した読み出し動作を請求項1に記載の前記インターフェイスユニットへ送信するように構成され、
    前記インターフェイスユニットが、前記第2レベルキャッシュ及びメモリコントローラに結合されて、前記メモリコントローラに前記読み出し動作を送信するように構成されるとともに、前記メモリコントローラから早期応答を受け取るように結合されて、所与の読み出し動作に対応する前記早期応答に応答して、前記所与の読み出し動作の転送にキャッシュブロックのクリティカルワードを利用できるようになる将来的なクロックサイクルを予測するように構成される、
    ことを特徴とする集積回路。
  7. 前記インターフェイスユニットが、遅延の第1の数のクロックサイクルを予測し、前記第1の数のクロックサイクルと、前記遅延をモニタすることにより検出された第2の数のクロックサイクルとの差分を求め、前記第1の数を前記差分の2分の1だけ修正して次の予測値を生成するように構成される、
    ことを特徴とする請求項6に記載の集積回路。
  8. 前記インターフェイスユニットが、前記予測に応答して前記第2レベルキャッシュからの前記転送経路を推測的に調停するように構成される、
    ことを特徴とする請求項6に記載の集積回路。
  9. インターフェイスユニットにおいて、キャッシュブロックフィルの最初のワードが提供されると予測される旨の指示をメモリコントローラから受け取るステップと、
    前記最初のワードが、前記メモリコントローラからの前記指示に従って予想通りに提供された場合、前記インターフェイスユニットが、前記最初のワードを送信するために、前記キャッシュブロックフィルを開始したプロセッサに前記最初のワードを転送する要求を生成すべき後続のクロックサイクルを予測するステップと、
    前記指示から前記最初のワードまでの時間の少なくとも一部にわたる実際の遅延をモニタするステップと、
    前記実際の遅延に応答して前記予測を適応的に修正するステップと、
    を含むことを特徴とする方法。
  10. 前記要求を前記後続のクロックサイクルで生成するステップと、
    前記要求に応答して許可を受け取るステップと、
    前記メモリコントローラが予測した通りに前記最初のワードが提供されたことを検出するステップと、
    前記許可に応答して前記最初のワードを転送するステップと、
    をさらに含むことを特徴とする請求項9に記載の方法。
  11. 前記インターフェイスユニットにおいて、第2のキャッシュブロックフィルの第2の最初のワードが提供されると予測される旨の第2の指示を前記メモリコントローラから受け取るステップと、
    前記第2の最初のワードが、前記メモリコントローラが予測した通りに提供された場合、前記インターフェイスユニットが、前記最初のワードを送信するために、前記第2のキャッシュブロックフィルを開始した前記プロセッサに前記第2の最初のワードを転送する第2の要求を生成すべき第2の後続のクロックサイクルを予測するステップと、
    前記第2の要求を前記第2の後続のクロックサイクルで生成するステップと、
    前記第2の要求に応答して第2の許可を受け取るステップと、
    前記第2の最初のワードが予測通りに提供されないことを検出するステップと、
    前記第2の許可に応答して取消を送信するステップと、
    をさらに含むことを特徴とする請求項9に記載の方法。
  12. 前記第2の最初のワードを続けて受け取るステップと、
    前記第2の最初のワードの受け取りに応答して第3の要求を生成するステップと、
    前記第3の要求に応答して第3の許可を受け取るステップと、
    前記受け取りに応答して前記第2の最初のワードを転送するステップと、
    をさらに含むことを特徴とする請求項11に記載の方法。
  13. 前記インターフェイスユニットにおいて、第2のキャッシュブロックフィルの第2の最初のワードが提供されると予測される旨の第2の指示を前記メモリコントローラから受け取るステップと、
    前記第2の最初のワードが、前記メモリコントローラが予測した通りに提供された場合、前記インターフェイスユニットが、前記最初のワードを送信するために、前記第2のキャッシュブロックフィルを開始した前記プロセッサに前記第2の最初のワードを転送する第2の要求を生成すべき第2の後続のクロックサイクルを予測するステップと、
    前記第2の最初のワードを予測よりも早く受け取るステップと、
    前記第2の最初のワードの受け取りに応答して前記第2の要求を生成するステップと、
    前記第2の要求に応答して第2の許可を受け取るステップと、
    前記許可に応答して前記プロセッサに前記第2の最初のワードを転送するステップと、
    をさらに含むことを特徴とする請求項9に記載の方法。
  14. 前記メモリコントローラからのそれぞれの指示と前記対応する最初のワードとの間の遅延をモニタするステップと、
    前記遅延に従って前記後続のクロックサイクルの予測を修正するステップと、
    をさらに含むことを特徴とする請求項9に記載の方法。
JP2013512246A 2010-06-01 2011-05-26 適応予測によるクリティカルワードの転送 Active JP5621041B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/791,387 US8713277B2 (en) 2010-06-01 2010-06-01 Critical word forwarding with adaptive prediction
US12/791,387 2010-06-01
PCT/US2011/038171 WO2011153072A1 (en) 2010-06-01 2011-05-26 Critical word forwarding with adaptive prediction

Publications (2)

Publication Number Publication Date
JP2013532325A JP2013532325A (ja) 2013-08-15
JP5621041B2 true JP5621041B2 (ja) 2014-11-05

Family

ID=44504142

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013512246A Active JP5621041B2 (ja) 2010-06-01 2011-05-26 適応予測によるクリティカルワードの転送

Country Status (10)

Country Link
US (1) US8713277B2 (ja)
EP (1) EP2539824A1 (ja)
JP (1) JP5621041B2 (ja)
KR (1) KR101417558B1 (ja)
CN (1) CN102822810B (ja)
AU (1) AU2011261655B2 (ja)
BR (1) BR112012024958A2 (ja)
MX (1) MX2012011336A (ja)
TW (1) TWI451252B (ja)
WO (1) WO2011153072A1 (ja)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9251874B2 (en) * 2010-12-21 2016-02-02 Intel Corporation Memory interface signal reduction
WO2013080289A1 (ja) * 2011-11-28 2013-06-06 富士通株式会社 信号処理装置及び信号処理方法
GB2497525A (en) 2011-12-12 2013-06-19 St Microelectronics Ltd Controlling shared memory data flow
WO2013103339A1 (en) * 2012-01-04 2013-07-11 Intel Corporation Bimodal functionality between coherent link and memory expansion
US8982644B1 (en) * 2012-02-24 2015-03-17 Marvell Israel (M.I.S.L.) Ltd. Method and apparatus for memory control
US8612650B1 (en) * 2012-03-13 2013-12-17 Western Digital Technologies, Inc. Virtual extension of buffer to reduce buffer overflow during tracing
US8996853B2 (en) 2012-06-29 2015-03-31 Vmware, Inc. Probing the boot sequence of a computer system
US9146758B2 (en) * 2012-06-29 2015-09-29 Vmware, Inc. Simultaneous probing of multiple software modules of a computer system
US10089126B2 (en) 2013-03-21 2018-10-02 Vmware, Inc. Function exit instrumentation for tail-call optimized code
US9678816B2 (en) 2012-06-29 2017-06-13 Vmware, Inc. System and method for injecting faults into code for testing thereof
KR102025251B1 (ko) * 2012-10-31 2019-09-25 삼성전자주식회사 메모리 시스템 및 그것의 프로그램 방법
US10592278B2 (en) 2013-03-15 2020-03-17 Facebook, Inc. Defer heavy operations while scrolling
US9122570B2 (en) * 2013-09-03 2015-09-01 Nanya Technology Corp. Data pattern generation for I/O training and characterization
US9625971B2 (en) * 2014-01-10 2017-04-18 Taiwan Semiconductor Manufacturing Company, Ltd. System and method of adaptive voltage frequency scaling
US20150331608A1 (en) * 2014-05-16 2015-11-19 Samsung Electronics Co., Ltd. Electronic system with transactions and method of operation thereof
WO2016043885A1 (en) * 2014-09-15 2016-03-24 Adesto Technologies Corporation Support for improved throughput in a memory device
US9541949B2 (en) * 2014-09-22 2017-01-10 Intel Corporation Synchronization of domain counters
US9740646B2 (en) * 2014-12-20 2017-08-22 Intel Corporation Early identification in transactional buffered memory
US9658963B2 (en) * 2014-12-23 2017-05-23 Intel Corporation Speculative reads in buffered memory
US10048893B2 (en) * 2015-05-07 2018-08-14 Apple Inc. Clock/power-domain crossing circuit with asynchronous FIFO and independent transmitter and receiver sides
KR20170094815A (ko) 2016-02-11 2017-08-22 삼성전자주식회사 비휘발성 메모리, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 읽기 방법
GB2548845B (en) * 2016-03-29 2019-11-27 Imagination Tech Ltd Handling memory requests
US10261704B1 (en) 2016-06-29 2019-04-16 EMC IP Holding Company LLC Linked lists in flash memory
US10089025B1 (en) 2016-06-29 2018-10-02 EMC IP Holding Company LLC Bloom filters in a flash memory
US10037164B1 (en) 2016-06-29 2018-07-31 EMC IP Holding Company LLC Flash interface for processing datasets
US10331561B1 (en) 2016-06-29 2019-06-25 Emc Corporation Systems and methods for rebuilding a cache index
US10146438B1 (en) 2016-06-29 2018-12-04 EMC IP Holding Company LLC Additive library for data structures in a flash memory
US10055351B1 (en) 2016-06-29 2018-08-21 EMC IP Holding Company LLC Low-overhead index for a flash cache
US11196587B2 (en) 2016-11-23 2021-12-07 DeGirum Corporation Permutated ring network
US10164758B2 (en) 2016-11-30 2018-12-25 Taiwan Semicondcutor Manufacturing Co., Ltd. Read-write data translation technique of asynchronous clock domains
US10380034B2 (en) * 2017-07-14 2019-08-13 International Business Machines Corporation Cache return order optimization
US10476656B2 (en) * 2018-04-13 2019-11-12 DeGirum Corporation System and method for asynchronous, multiple clock domain data streams coalescing and resynchronization
US10691632B1 (en) 2019-03-14 2020-06-23 DeGirum Corporation Permutated ring network interconnected computing architecture
US11757612B2 (en) 2021-10-29 2023-09-12 Hewlett Packard Enterprise Development Lp Communicating management traffic between baseboard management controllers and network interface controllers

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63308656A (ja) * 1987-06-10 1988-12-16 Fujitsu Ltd ブロックアクセス制御装置
GB2226666B (en) * 1988-12-30 1993-07-07 Intel Corp Request/response protocol
JPH0810445B2 (ja) * 1990-09-21 1996-01-31 インターナショナル・ビジネス・マシーンズ・コーポレイション 動的バス調停方法及び装置
US5371880A (en) 1992-05-13 1994-12-06 Opti, Inc. Bus synchronization apparatus and method
JP2729343B2 (ja) * 1992-08-28 1998-03-18 三菱電機株式会社 複数個の処理装置を有する情報処理システムおよびこの情報処理システムにおいて用いられる制御装置ならびに処理装置
US5875462A (en) 1995-12-28 1999-02-23 Unisys Corporation Multi-processor data processing system with multiple second level caches mapable to all of addressable memory
US5933610A (en) 1996-09-17 1999-08-03 Vlsi Technology, Inc. Predictive arbitration system for PCI bus agents
US6018792A (en) 1997-07-02 2000-01-25 Micron Electronics, Inc. Apparatus for performing a low latency memory read with concurrent snoop
US6049845A (en) * 1997-11-05 2000-04-11 Unisys Corporation System and method for providing speculative arbitration for transferring data
JPH11203864A (ja) * 1998-01-14 1999-07-30 Mitsubishi Electric Corp 同期型半導体記憶装置
JP2000029822A (ja) 1998-07-15 2000-01-28 Matsushita Electric Ind Co Ltd ブリッジ装置
US6272601B1 (en) 1999-05-20 2001-08-07 International Business Machines Corporation Critical word forwarding in a multiprocessor system
US6393553B1 (en) * 1999-06-25 2002-05-21 International Business Machines Corporation Acknowledgement mechanism for just-in-time delivery of load data
US6519685B1 (en) 1999-12-22 2003-02-11 Intel Corporation Cache states for multiprocessor cache coherency protocols
US6647464B2 (en) 2000-02-18 2003-11-11 Hewlett-Packard Development Company, L.P. System and method utilizing speculative cache access for improved performance
ATE275277T1 (de) 2000-05-31 2004-09-15 Broadcom Corp Multiprozessorcomputer busschnittstellenadapter und methode
US6745297B2 (en) 2000-10-06 2004-06-01 Broadcom Corporation Cache coherent protocol in which exclusive and modified data is transferred to requesting agent from snooping agent
US6725337B1 (en) 2001-05-16 2004-04-20 Advanced Micro Devices, Inc. Method and system for speculatively invalidating lines in a cache
US6571321B2 (en) 2001-07-27 2003-05-27 Broadcom Corporation Read exclusive for fast, simple invalidate
US7287126B2 (en) 2003-07-30 2007-10-23 Intel Corporation Methods and apparatus for maintaining cache coherency
US7111153B2 (en) 2003-09-30 2006-09-19 Intel Corporation Early data return indication mechanism
US20050172091A1 (en) * 2004-01-29 2005-08-04 Rotithor Hemant G. Method and an apparatus for interleaving read data return in a packetized interconnect to memory
JP2006040167A (ja) * 2004-07-29 2006-02-09 Sharp Corp バス調停回路、情報処理装置、並びに、そのプログラムおよび記録媒体
US7174403B2 (en) 2005-02-24 2007-02-06 Qualcomm Incorporated Plural bus arbitrations per cycle via higher-frequency arbiter
US7434007B2 (en) 2005-03-29 2008-10-07 Arm Limited Management of cache memories in a data processing apparatus
US20070083715A1 (en) 2005-09-13 2007-04-12 International Business Machines Corporation Early return indication for return data prior to receiving all responses in shared memory architecture
US7536514B2 (en) 2005-09-13 2009-05-19 International Business Machines Corporation Early return indication for read exclusive requests in shared memory architecture
US7478190B2 (en) 2006-02-10 2009-01-13 University Of Utah Technology Commercialization Office Microarchitectural wire management for performance and power in partitioned architectures
JP2008083845A (ja) * 2006-09-26 2008-04-10 Hitachi Ltd ストレージ装置及びストレージシステム並びにデータ読出し方法
US7702858B2 (en) 2007-06-05 2010-04-20 Apple Inc. Latency reduction for cache coherent bus-based cache
US8006042B2 (en) 2007-11-26 2011-08-23 Globalfoundries Inc. Floating point bypass retry
US8090967B2 (en) * 2008-05-23 2012-01-03 Intel Corporation Power state transition initiation control of memory interconnect based on early warning signal, memory response time, and wakeup delay
US20100005214A1 (en) * 2008-07-01 2010-01-07 International Business Machines Corporation Enhancing bus efficiency in a memory system

Also Published As

Publication number Publication date
AU2011261655A1 (en) 2012-10-11
KR20120131196A (ko) 2012-12-04
KR101417558B1 (ko) 2014-07-08
BR112012024958A2 (pt) 2016-07-12
EP2539824A1 (en) 2013-01-02
TWI451252B (zh) 2014-09-01
WO2011153072A1 (en) 2011-12-08
CN102822810A (zh) 2012-12-12
US20110296110A1 (en) 2011-12-01
US8713277B2 (en) 2014-04-29
TW201211766A (en) 2012-03-16
JP2013532325A (ja) 2013-08-15
CN102822810B (zh) 2015-09-16
MX2012011336A (es) 2012-11-30
AU2011261655B2 (en) 2013-12-19

Similar Documents

Publication Publication Date Title
JP5621041B2 (ja) 適応予測によるクリティカルワードの転送
EP3729281B1 (en) Scheduling memory requests with non-uniform latencies
US7269709B2 (en) Memory controller configurable to allow bandwidth/latency tradeoff
KR101557090B1 (ko) 이종 소스들에 대한 계층적인 메모리 중재 기법
US6775749B1 (en) System and method for performing a speculative cache fill
US20130054901A1 (en) Proportional memory operation throttling
US11474942B2 (en) Supporting responses for memory types with non-uniform latencies on same channel
US10133670B2 (en) Low overhead hierarchical connectivity of cache coherent agents to a coherent fabric
US8627021B2 (en) Method and apparatus for load-based prefetch access
US11016913B1 (en) Inter cluster snoop latency reduction
US8464005B2 (en) Accessing common registers in a multi-core processor
US7296167B1 (en) Combined system responses in a chip multiprocessor
US20130054902A1 (en) Accelerating blocking memory operations
JP2000200218A (ja) キャッシュメモリを有するマイクロプロセッサ
KR20230170995A (ko) 스케일러블 인터럽트들
JP2012173847A (ja) バス調停装置およびバス調停方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140422

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140919

R150 Certificate of patent or registration of utility model

Ref document number: 5621041

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250