(57)【特許請求の範囲】
【請求項１】
読み出し要求に対応するデータが将来的なクロックサイクルで送信されると予想される旨の指示をメモリコントローラから受け取るように結合されたインターフェイスユニットであって、
前記データを前記読み出し要求の発信元に転送する要求を生成し、前記メモリコントローラから前記指示を受け取ってから、以前の遅延から予測される正の整数をＮとするＮクロックサイクル後に前記要求を生成して、前記データを前記将来的なクロックサイクルで続けて受け取った時に前記データの転送を許可するように構成された制御回路と、
前記指示から前記対応するデータの転送までの時間の少なくとも一部にわたる遅延をモニタし、Ｎを適応的に修正して前記遅延の不確実性を考慮するように構成された遅延モニタ回路と、
を備えることを特徴とするインターフェイスユニット。
【請求項２】
前記遅延モニタ回路及び前記制御回路が、第１のクロックに従って動作し、該第１のクロックのクロックサイクルでＮが測定され、前記メモリコントローラが、前記第１のクロックに同期しない第２のクロックに従って動作するように構成され、前記遅延の不確実性の原因が、前記第２のクロックに関連する第２のクロックドメインから前記第１のクロックに関連する第１のクロックドメインへの同期を含む、
ことを特徴とする請求項１に記載のインターフェイスユニット。
【請求項３】
前記遅延の不確実性の別の原因が、前記第１のクロック及び前記第２のクロックの少なくとも一方のクロック周波数の変化である、
ことを特徴とする請求項２に記載のインターフェイスユニット。
【請求項４】
前記遅延の不確実性の原因が、前記読み出し要求の発信元へのパイプラインにおけるストールである、ことを特徴とする請求項１に記載のインターフェイスユニット。
【請求項５】
前記同期を実行するように構成された１又はそれ以上の先出し先入れ（ＦＩＦＯ）バッファと、
前記第１のクロックに従って増分するように構成されたカウンタと、
をさらに備え、前記インターフェイスユニットが、前記カウンタの値を前記第２のクロックドメインに同期させるとともに、前記ＦＩＦＯバッファを介して前記第２のクロックドメインから前記第１のクロックドメインに同期させるように構成され、前記指示と同時に前記ＦＩＦＯバッファから受け取った前記カウンタの値と、前記データと同時に前記ＦＩＦＯバッファから受け取った値との差分を前記遅延の測定値とする、
ことを特徴とする請求項２に記載のインターフェイスユニット。
【請求項６】
各々がデータキャッシュを含むとともに、該データキャッシュにおけるキャッシュミスに応答して読み出し動作を生成するように構成された１又はそれ以上のプロセッサと、
前記プロセッサに結合された第２レベルキャッシュと、
を備え、前記第２レベルキャッシュが、該第２レベルキャッシュにおいて失敗した読み出し動作を請求項１に記載の前記インターフェイスユニットへ送信するように構成され、
前記インターフェイスユニットが、前記第２レベルキャッシュ及びメモリコントローラに結合されて、前記メモリコントローラに前記読み出し動作を送信するように構成されるとともに、前記メモリコントローラから早期応答を受け取るように結合されて、所与の読み出し動作に対応する前記早期応答に応答して、前記所与の読み出し動作の転送にキャッシュブロックのクリティカルワードを利用できるようになる将来的なクロックサイクルを予測するように構成される、
ことを特徴とする集積回路。
【請求項７】
前記インターフェイスユニットが、遅延の第１の数のクロックサイクルを予測し、前記第１の数のクロックサイクルと、前記遅延をモニタすることにより検出された第２の数のクロックサイクルとの差分を求め、前記第１の数を前記差分の２分の１だけ修正して次の予測値を生成するように構成される、
ことを特徴とする請求項６に記載の集積回路。
【請求項８】
前記インターフェイスユニットが、前記予測に応答して前記第２レベルキャッシュからの前記転送経路を推測的に調停するように構成される、
ことを特徴とする請求項６に記載の集積回路。
【請求項９】
インターフェイスユニットにおいて、キャッシュブロックフィルの最初のワードが提供されると予測される旨の指示をメモリコントローラから受け取るステップと、
前記最初のワードが、前記メモリコントローラからの前記指示に従って予想通りに提供された場合、前記インターフェイスユニットが、前記最初のワードを送信するために、前記キャッシュブロックフィルを開始したプロセッサに前記最初のワードを転送する要求を生成すべき後続のクロックサイクルを予測するステップと、
前記指示から前記最初のワードまでの時間の少なくとも一部にわたる実際の遅延をモニタするステップと、
前記実際の遅延に応答して前記予測を適応的に修正するステップと、
を含むことを特徴とする方法。
【請求項１０】
前記要求を前記後続のクロックサイクルで生成するステップと、
前記要求に応答して許可を受け取るステップと、
前記メモリコントローラが予測した通りに前記最初のワードが提供されたことを検出するステップと、
前記許可に応答して前記最初のワードを転送するステップと、
をさらに含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記インターフェイスユニットにおいて、第２のキャッシュブロックフィルの第２の最初のワードが提供されると予測される旨の第２の指示を前記メモリコントローラから受け取るステップと、
前記第２の最初のワードが、前記メモリコントローラが予測した通りに提供された場合、前記インターフェイスユニットが、前記最初のワードを送信するために、前記第２のキャッシュブロックフィルを開始した前記プロセッサに前記第２の最初のワードを転送する第２の要求を生成すべき第２の後続のクロックサイクルを予測するステップと、
前記第２の要求を前記第２の後続のクロックサイクルで生成するステップと、
前記第２の要求に応答して第２の許可を受け取るステップと、
前記第２の最初のワードが予測通りに提供されないことを検出するステップと、
前記第２の許可に応答して取消を送信するステップと、
をさらに含むことを特徴とする請求項９に記載の方法。
【請求項１２】
前記第２の最初のワードを続けて受け取るステップと、
前記第２の最初のワードの受け取りに応答して第３の要求を生成するステップと、
前記第３の要求に応答して第３の許可を受け取るステップと、
前記受け取りに応答して前記第２の最初のワードを転送するステップと、
をさらに含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記インターフェイスユニットにおいて、第２のキャッシュブロックフィルの第２の最初のワードが提供されると予測される旨の第２の指示を前記メモリコントローラから受け取るステップと、
前記第２の最初のワードが、前記メモリコントローラが予測した通りに提供された場合、前記インターフェイスユニットが、前記最初のワードを送信するために、前記第２のキャッシュブロックフィルを開始した前記プロセッサに前記第２の最初のワードを転送する第２の要求を生成すべき第２の後続のクロックサイクルを予測するステップと、
前記第２の最初のワードを予測よりも早く受け取るステップと、
前記第２の最初のワードの受け取りに応答して前記第２の要求を生成するステップと、
前記第２の要求に応答して第２の許可を受け取るステップと、
前記許可に応答して前記プロセッサに前記第２の最初のワードを転送するステップと、
をさらに含むことを特徴とする請求項９に記載の方法。
【請求項１４】
前記メモリコントローラからのそれぞれの指示と前記対応する最初のワードとの間の遅延をモニタするステップと、
前記遅延に従って前記後続のクロックサイクルの予測を修正するステップと、
をさらに含むことを特徴とする請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサの分野に関し、より詳細には、プロセッサ及び関連する回路内のキャッシュブロックフィル(a cache block fill)からのクリティカルワード(the critical word)の転送に関する。
【背景技術】
【０００２】
通常、プロセッサは、メモリ内のデータにアクセスするためにロード及びストア動作を行う。ロードでは、メモリ位置を読み出してプロセッサにデータを提供することが指示され、ストアでは、プロセッサから提供されたデータを使用してメモリ位置に書き込むことが指示される。プロセッサが実装する命令セットアーキテクチャに応じて、ロード及びストアは、この命令セットアーキテクチャで指定される明示的な命令、メモリ動作を指定する命令内の非明示的な演算、又はこれらの組み合わせとなり得る。
【０００３】
ロード及びストアのためのメモリ待ち時間を短縮するために、通常、プロセッサは１又はそれ以上のキャッシュを実装し、メインメモリシステムにアクセスする前にこのキャッシュにアクセスする。キャッシュは、最近アクセスされたデータをキャッシュブロック単位で記憶する。キャッシュブロックは、様々なプロセッサ内で、３２バイト、６４バイト、１２８バイトなどの可変サイズを有することができる。通常、ブロックは、メモリ内でこれらのサイズの固有の境界に整列する。
【０００４】
従って、キャッシュ内でロードに失敗した場合、ロードデータを含むキャッシュブロックがメモリから読み出されてキャッシュに転送される。このキャッシュブロックをキャッシュに記憶することにより、キャッシュ内でヒットするその他のアクセスのための待ち時間は短縮されるが、多くの場合、ロードデータを待つことにより、プロセッサの性能は大きく影響を受ける。通常、キャッシュブロックは、相互接続を介した複数のデータ送信を使用してメモリからプロセッサへ転送される。ロードデータのための待ち時間を短縮するために、ロードデータは、最初のキャッシュブロック転送で提供され、その後残りのデータが転送される。プロセッサ及びキャッシュは、キャッシュブロックが提供されるのを待っている間にロードデータをターゲットに転送するように設計することができる。場合によっては、メモリコントローラを、（例えば、データが転送されるよりも何らかの数のクロックサイクルだけ前に）データがまさに転送されようとしていることを示す応答を送るように設計して、キャッシュ／プロセッサがデータの転送をスケジュールできるようにすることができる。このようなメモリコントローラは、データを転送するよりも固定数のクロックサイクルだけ前に応答を送って、識別されたクロックサイクルでデータが転送されることを保証する。このようにして、転送が正確にスケジュールされる。
【発明の概要】
【課題を解決するための手段】
【０００５】
ある実施形態では、システムが、メモリコントローラ、１又はそれ以上のプロセッサ、及び対応するキャッシュを含む。このシステムは、プロセッサキャッシュ内で失敗したロード動作に関するデータ転送の正確なスケジューリングを妨げる不確実性の原因を含むことがある。メモリコントローラは、次のクロックサイクルでデータが提供されるはずであることを示す早期応答を提供することができる。しかしながら、システムの不確実性に起因して、データが転送される実際のクロックサイクルは変化する。メモリコントローラとキャッシュ／プロセッサの間のインターフェイスユニットは、現在受け取っている早期応答から対応するデータまでの遅延を予測し、予測した通りにデータが利用できるようになると仮定して、データを転送する準備を推測的に行うことができる。この予測が正確な場合、短い待ち時間でデータを転送することができる。予測が正確でない場合、より長い待ち時間でデータが転送されることがある。インターフェイスユニットは、データの早期応答と転送の間の遅延、又は変化し得る遅延の少なくとも一部をモニタすることができる。インターフェイスユニットは、この測定遅延に基づいて、後から予測した遅延を修正することができる。従って、インターフェイスユニットは、予測した遅延をシステム内で生じる実際の遅延に時間とともに適応させ、不確実性に合わせて調整することができる。
【０００６】
ある実施形態では、この不確実性として、例えば、非同期クロックドメインの交差における不確実な同期遅延、メモリコントローラ、キャッシュ、及び／又はプロセッサ内のパイプライン遅延における不確実性、及びシステムの動作モードの変化（例えば、低出力モードに出入りすることなど）に起因するクロック周波数の１又はそれ以上の変化を挙げることができる。不確実性の原因は、システムによって異なることがある。予測した遅延を、生じた実際の遅延に適応させることにより、データの転送準備ができている時にデータの転送経路に転送の準備ができている頻度が上がり、いくつかの実施形態では、キャッシュミスの状況におけるロードデータのための平均待ち時間を短縮することができる。
【０００７】
以下の詳細な説明では添付図面を参照し、以下これらの図面について簡単に説明する。
【図面の簡単な説明】
【０００８】
【図１】集積回路の１つの実施形態を示すブロック図である。
【図２】図１に示すインターフェイスユニットの１つの実施形態を示すブロック図である。
【図３】図２に示す遅延モニタの１つの実施形態の動作を示すフロー図である。
【図４】図３に示すフロー図の一部の１つの実施形態をより詳細に示すフロー図である。
【図５】早期応答の指示に応答するクリティカルワード転送制御回路の１つの実施形態の動作を示すフロー図である。
【図６】クリティカルワード転送制御回路の１つの実施形態により実装できる状態マシーンの１つの実施形態を示すブロック図である。
【図７】クリティカルワード転送の１つの実施形態の動作を示すタイミング図である。
【図８】システムの１つの実施形態を示すブロック図である。
【図９】図１に示すインターフェイスユニットの別の実施形態を示すブロック図である。
【発明を実施するための形態】
【０００９】
本発明は、様々な修正及び代替形態が可能であるが、図面には本発明の特定の実施形態を一例として示し、本明細書ではこれらについて詳細に説明する。しかしながら、図面及びこれらに対する詳細な説明は、開示する特定の形態に本発明を限定することを意図するものではなく、むしろ添付の特許請求の範囲によって定められる本発明の思想及び範囲内にある全ての修正物、同等物及び代替物を含むことを意図するものであると理解されたい。本明細書で使用する表題は構成目的のものにすぎず、説明の範囲を限定するために使用することを意味するものではない。本出願を通じて使用する「ｍａｙ（〜できる）」という用語は、強制的な意味の（すなわち、〜しなければならない（ｍｕｓｔ）を意味する）ものではなく、許容的な意味（すなわち、可能性を有すること（ｈａｖｉｎｇ  ｔｈｅ  ｐｏｔｅｎｔｉａｌ  ｔｏ）を意味する）で使用される。同様に、「含む（ｉｎｃｌｕｄｅ、ｉｎｃｌｕｄｉｎｇ、及びｉｎｃｌｕｄｅｓ）」という用語は、限定するわけではないがｉｎｃｌｕｄｉｎｇを意味する。
【００１０】
様々なユニット、回路、又はその他の構成要素について、（１又は複数の）タスクを実行する「ように構成される（ｃｏｎｆｉｇｕｒｅｄ  ｔｏ）」と記載することがある。このような文脈では、「ように構成される」という表現は、動作中に１又は複数のタスクを実行する「回路を有する」ことを一般に意味する包括的な構造の記述である。従って、これらのユニット／回路／構成要素は、ユニット／回路／構成要素が現在オンでない場合でもタスクを実行するように構成することができる。通常、「ように構成される」に相当する構造を成す回路は、ハードウェア回路を含むことができる。同様に、説明の都合上、様々なユニット／回路／構成要素について、１又は複数のタスクを実行する、と記載することもある。このような記載は、「ように構成される」という表現を含むと解釈すべきである。１又はそれ以上のタスクを実行するように構成されたユニット／回路／構成要素について記述することは、このユニット／回路／構成要素に対して米国特許法第１１２条第６項の解釈を行使することを明確に意図するものではない。
【００１１】
ここで図１を参照すると、メモリ１２に結合された集積回路１０の１つの実施形態を示すブロック図を示している。図示の実施形態では、集積回路１０が、プロセッサ１４Ａ〜１４Ｂなどの１又はそれ以上のプロセッサ、レベル２（Ｌ２）キャッシュ１６、インターフェイスユニット１８、及びメモリコントローラ２０を含む。図１には、プロセッサ１４Ｂの一部が、レジスタファイル２２及びデータキャッシュ２４を含むことをより詳細に示している。プロセッサ１４Ａも同様とすることができる。メモリコントローラ２０は、メモリ１２に結合するように構成され、インターフェイスを介してインターフェイスユニット１８に結合することもできる。図１に示すように、このインターフェイスは、要求、データ書き込み及びデータ読み出し、及び早期応答を含むことができる。インターフェイスユニット１８は、「書き込み」というラベルを付けた書き込みバス、及び要求読み出し及びデータ読み出しを含む読み出しバスを介してＬ２キャッシュ１６にも結合される。インターフェイスユニット１８は、調停読み出し（Ｒｅａｄ  Ａｒｂ）、許可（Ｇｎｔ）及び取消（Ｃｘｃｌ）を含む調停信号方式を介してＬ２キャッシュ１６にさらに結合される。プロセッサ１４Ａ〜１４Ｂは、要求、データ書き込み、及びデータ読み出しを含むことができるインターフェイスによってＬ２キャッシュ１６に結合される。図１には、破線２６でクロックドメイン境界も示している。
【００１２】
プロセッサ１４Ａ〜１４Ｂは、ロード及びストア動作（本明細書ではより簡潔にロード及びストアと呼ぶ）を実行するように構成するとともに、そのローカルキャッシュ（例えば、プロセッサ１４Ｂ内のデータキャッシュ２４及びプロセッサ１４Ａ内の同様のキャッシュ）内のキャッシュミスを検出するように構成することができる。ロードに関しては、プロセッサ１４Ａ〜１４Ｂを、失われたキャッシュブロックを読み出すためにＬ２キャッシュ１６にキャッシュフィル要求を送信するように構成することができる。ストアミスに関しても、いくつかの実施形態では、プロセッサ１４Ａ〜１４Ｂを、キャッシュフィル要求を送信するように構成することができる。他の実施形態では、プロセッサ１４Ａ〜１４Ｂを、Ｌ２キャッシュ１６及び／又はメモリ１２を更新するためにストアを送信するように構成することはできるが、失われたキャッシュブロックを読み出すためにキャッシュフィルを送信することはない。プロセッサ１４Ａ〜１４Ｂは、プロセッサ１４Ａ〜１４Ｂが開始した各キャッシュフィル要求及び互いのトランザクションに識別子（トランザクション識別子、すなわちＴＩＤなど）を割り当てるように構成することができる。このＴＩＤを、トランザクションの要求、データなどとともに送信して、この送信を同じトランザクションの一部として識別するようにすることができる。
【００１３】
図１に示すように、プロセッサ１４ＢとＬ２キャッシュ１６の間のインターフェイスは、要求バス（アドレス、コマンドなど）及びデータ読み出し／書き込みバスを含むことができる。データ読み出し及び書き込みバスは、図示のように別個の一方向バスであってもよく、又は双方向データバスとして組み合わせてもよい。いくつかの実施形態では、コヒーレンス応答を送信するための応答バスが存在してもよい（図１には図示せず）。他の実施形態では、要求、応答及びデータを送信するための、パケットインターフェイスなどの他のインターフェイスを使用してもよい。プロセッサ１４Ａへのインターフェイスは、プロセッサ１４Ｂへのインターフェイスと同様のものであってよい。
【００１４】
プロセッサ１４Ａ〜１４Ｂは、キャッシュフィル要求にキャッシュブロックのアドレスを含めて送信するように構成することができる。このアドレスは、キャッシュライン内でロードがアクセスしようと試みているワードを識別する、キャッシュミスが検出されたロードの最下位ビットを含むことができる。従って、Ｌ２キャッシュ１６及び（Ｌ２キャッシュに失敗した場合には）メモリコントローラ２０に、ロードデータの転送を許可するためにキャッシュブロックのいずれの部分を最初に戻すべきかを識別する情報を提供することができる。ワードは、ロードによりアクセスされるデータ量（例えば、隣接するバイトの数）とすることができる。いくつかの命令セットアーキテクチャでは、様々なデータサイズにアクセスするロードを定義することができる。ワードは、これらのデータサイズの１つとすることができ、このワードの観点から他のデータサイズを表すこともできる（例えば、ワードの１／２にアクセスするロードを表すハーフワード、ワード、２つの隣接するワードにアクセスするロードを表すダブルワードなど）。ロードによりアクセスされたワードは、現在のプロセッサの性能にとってキャッシュブロック内で最も重要なワードであるため、キャッシュフィルのために提供されるキャッシュブロックの「クリティカルワード」と呼ばれることが多い。すなわち、クリティカルワードが提供されるまで、プロセッサはロード状態でストールする（またロードに関するいずれの依存動作もストールする）。いくつかの実施形態では、プロセッサを、他の非依存動作を推測的に実行するように構成することができるが、ロード及びこれに依存する動作を完了するにはクリティカルワードが必要である。
【００１５】
図１に示すように、データ読み出しバスは、データキャッシュ２４に結合してこのキャッシュにキャッシュブロックを書き込むことができ、またレジスタファイル２２に結合してこのレジスタファイル２２にクリティカルワードを書き込むことができる。レジスタファイル２２に書き込むべきクリティカルワードを読み出しデータから選択するための多重化（複合）機能又はその他のスイッチング機能が存在してもよい（図１には図示せず）。データ読み出しバスからのデータをデータキャッシュ２４及び／又はレジスタファイル２２にパイプライン処理するためのバッファリング機能が存在してもよい。
【００１６】
キャッシュブロックは、メモリコントローラ２０からインターフェイスユニット１８に、インターフェイスを介した複数の送信として転送することができる。本明細書では、各送信をデータのビートと呼ぶことができる。例えば、３２バイトのキャッシュブロックは、８バイトの４ビートとして送信することができる。ビートのサイズは、実施形態によって異なることがある。より大きなビートはより広いデータバスで送信することができ、従ってキャッシュブロックの送信にはより少ないビートが必要となり得る。一方、より広いデータバスは、集積回路１０内に設ける相互接続（配線）（又は、他の実施形態では集積回路上のピン）の面から、より高価となり得る。従って、ビートのサイズは、設計／性能のトレードオフに基づき、実施形態によって異なることがある。同様に、ビートのサイズは、地点によっても異なることがある。例えば、Ｌ２キャッシュ１６とインターフェイスユニット１８の間で転送されるビート、及びプロセッサ１４Ａ〜１４ＢとＬ２キャッシュ１６の間で転送されるビートの各々は、インターフェイスユニット１８とメモリコントローラ２０の間のビートに対してサイズが異なることがある（同様に、互いにサイズが異なることもある）。
【００１７】
Ｌ２キャッシュ１６は、プロセッサ１４Ｂからのキャッシュフィル要求に対するヒットをチェックするように構成することができ、またキャッシュヒットが検出された際に、プロセッサ１４Ｂに（最初のビート内のクリティカルワードを含む）キャッシュブロックを戻すように構成することができる。Ｌ２キャッシュ１６におけるキャッシュヒットをインターフェイスユニット１８に進める必要はない。Ｌ２キャッシュ１６は、プロセッサ１４Ａ〜１４Ｂから受け取った要求のためのキューイング機能又はその他のバッファリング機能を含むとともに、インターフェイスユニット１８へ送信されるＬ２キャッシュミスのためのキューイング／バッファリング機能を含むことができる（図１には図示せず）。
【００１８】
図示の実施形態では、Ｌ２キャッシュ１６が、インターフェイスユニット１８への（図１では一般的に「書き込み」として示す）書き込みバスインターフェイスと、図１に示す要求読み出しバス及びデータ読み出しバスを含む、インターフェイスユニット１８への読み出しバスインターフェイスとを含むことができる。他の実施形態では、読み出し及び書き込みに単一のバスインターフェイス（又は各々が読み出し及び書き込みをいずれも送信できる複数のバスインターフェイス）を使用することができ、又はパケットインターフェイスなどの他の種類のインターフェイスを使用することもできる。Ｌ２キャッシュ１６とインターフェイスユニット１８の間のインターフェイスは、調停機能を含むこともでき、従ってインターフェイスユニット１８は、上述したように及び以下でより詳細に説明するように、プロセッサ１４Ｂへのデータ転送を調停することができる。インターフェイスユニット１８は、クリティカルワードの転送、及びキャッシュフィルのためのキャッシュブロックの転送を調停するように構成することができる。Ｌ２キャッシュ１６は、プロセッサ１４Ａ〜１４ＢにＬ２キャッシュヒットデータを供給することもでき、従ってこのＬ２キャッシュヒットデータとインターフェイスユニット１８からのデータ送信との間を調停することにより、競合するデータソース同士がプロセッサバスに適切にアクセスできるようにすることができる。
【００１９】
Ｌ２キャッシュミスの場合、Ｌ２キャッシュ１６を、インターフェイスユニット１８に読み出し要求を送信するように構成することができる。インターフェイスユニット１８は、その後この要求をインターフェイスを介してメモリコントローラ２０へ送信するように構成することができる。インターフェイスユニット１８の１つの実施形態のさらなる詳細については、以下で図２に関連して説明する。図示の実施形態では、インターフェイスが、要求バス、データ書き込みバス、及びデータ読み出しバスを含む（他の実施形態では、双方向のデータ読み出し／書き込みバスを使用することができ、さらに他の実施形態は、パケットインターフェイスを実装することができる）。
【００２０】
図示の実施形態では、インターフェイスユニット１８からメモリコントローラ２０への要求の送信が、図１に破線２６で示すクロックドメイン境界の交差を含むことができる。すなわち、線２６よりも上の回路（プロセッサ１４Ａ〜１４Ｂ、Ｌ２キャッシュ１６、及びインターフェイスユニット１８の一部）は、１つのクロックドメイン内に存在し、メモリコントローラ２０及びここへのインターフェイスは、異なるクロックドメイン内に存在することができる。クロックドメイン内のクロックは同期することができ、従ってクロックの立ち上がりと立ち下がりの関係は（雑音及びジッタを許容する）決定論的なものとなり得る。クロックドメイン内の回路は、同じ周波数及び位相（すなわち、論理的に同じクロック）で、又は異なる周波数ではあるが互いにロックされた位相でクロック制御することができる。一方、異なるクロックドメイン内のクロックは、互いに同期しないことがある。異なるクロックドメイン内のクロック間には、決定論的な位相関係が存在しないことがある。これらのクロックは周波数が異なることがあり、周波数は互いに依存しないことがある。１つのドメイン内のクロックは、他方のクロックドメインへのいずれの信号又はその他の通知にも関係なく、及びこれらを伴わずに周波数を変化させることができる。従って、インターフェイスユニット１８は、一方のクロックドメインから他方のクロックドメインに情報（要求、データなど）を安全に送信するために同期回路を含むことができる。この同期回路は、一方のクロックドメインで正確に（例えば、発信側クロックドメインのタイミング要件を満たして）情報を取得して、他方のクロックドメインで正確に（例えば、受信側クロックドメインのタイミング要件を満たして）情報を送信できるいずれかの回路を含むことができる。以下では、一例として先入れ先出しバッファ（ＦＩＦＯ）を使用するが、あらゆる同期回路を使用することができる。本明細書では、図１のクロックドメイン境界２６よりも上のクロックドメインをプロセッサクロックドメインと呼び、クロックドメイン境界よりも下のクロックドメインをメモリクロックドメインと呼ぶ。各ドメインの対応するクロックを、それぞれプロセッサクロック及びメモリクロックと呼ぶことができる。同様に、所与のクロックドメインのクロックサイクルを、それぞれプロセッサクロックサイクル及びメモリクロックサイクルと呼ぶことができる。クロックサイクルは、対応するクロックの１つの周期とすることができる。
【００２１】
メモリコントローラ２０は、キャッシュブロックのためのデータを他のデータよりも先に読み出して、クリティカルワードを含むビートを読み出すように構成することができる。メモリコントローラ２０は、クリティカルワードを含むビートを、キャッシュブロックの他のビートよりも先に送信するように構成することもできる。本明細書では、クリティカルワードを含むビートを略してクリティカルワードと呼ぶこともできる。
【００２２】
インターフェイスユニット１８は、クリティカルワードを受け取ることができ、クリティカルワードを転送するためにＬ２キャッシュ１６に対する調停要求（Ｒｅａｄ  Ａｒｂ）を送信するように構成することができる。Ｒｅａｄ  Ａｒｂ要求は、プロセッサ１４Ａ〜１４Ｂのいずれが要求されているかを識別することもできる。Ｌ２キャッシュ１６は、インターフェイスユニット１８と、Ｌ２キャッシュ１６内のキャッシュヒットからのデータとの間の調停を行い、データ読み出しバスを介してプロセッサ１４Ｂへ送信すべきデータを決定するように構成することができる（同様にプロセッサ１４Ａに対する調停を行うこともできる）。Ｌ２キャッシュ１６がインターフェイスユニット１８の要求を許可した場合、Ｌ２キャッシュ１６を、インターフェイスユニット１８に許可を送信するように構成することができる。また、Ｌ２キャッシュ１６は、インターフェイスユニット１８からのデータ読み出しバスからプロセッサ１４Ｂへのデータ読み出しバスまでの転送経路２８を準備することができる。経路２８は、複合機能又はその他のスイッチング機能を含むことができ、必要に応じてバッファリング機能を含むこともできる。インターフェイスユニット１８は、データを送信するように構成することができる。一般に、転送経路は、ソースから宛先へデータを送信できる、書き込み、バッファリング、複合、及び／又はその他の回路のあらゆる組み合わせを含むことができる。
【００２３】
メモリコントローラ２０は、キャッシュフィルのための早期応答を戻して、この早期応答を送信したメモリクロックサイクル（「早期応答クロックサイクル」）の後続のメモリクロックサイクルでクリティカルワードの転送が予想されている旨を示すように構成することもできる。この早期応答は、早期応答が行われているトランザクションを識別する、キャッシュフィルのＴＩＤを含むことができる。後続のクロックサイクルと早期応答クロックサイクルの間のメモリクロックサイクルの数は、実施形態によって異なることがある。一般に、このメモリクロックサイクルの数は、インターフェイスユニット１８、Ｌ２キャッシュ１６、及びプロセッサ１４Ａ〜１４Ｂがデータの転送に備える時間を与えるように選択することができる。転送経路を準備するために、１又はそれ以上のプロセッサクロックサイクルを使用することができる。例えば、要求を送信し、調停し、許可を戻し、実際に経路を準備するためのプロセッサクロックサイクルが必要になり得る。このようにして、早期応答が存在せず、クリティカルワードを受け取った時にＬ２に対する調停が行われる場合に比較して、クリティカルワードの転送の遅延を短縮することができる。しかしながら、許可を受け取った時にデータの転送準備ができていない（例えば、以下の様々な不確実性のために）場合、インターフェイスユニット１８は、このデータ送信を取消、クリティカルワードを待ってから再び転送経路に対する調停を行うことができる。メモリコントローラ２０は、キャッシュフィルの読み出しがメモリコントローラ２０内の指図点を通過してメモリ１２に送信されるようスケジュールされた後に早期応答を戻すように構成することができる。１つの実施形態では、メモリコントローラ２０が、早期応答により示されたサイクルで読み出しデータを戻すための迂回経路を含むことができる。ある実施形態では、メモリ１２にインターフェイス接続する物理層回路を、データ戻り待ち時間を動的に調整してメモリ１２の動作を追跡するように構成することができる。このような実施形態では、物理層回路を、現在の遅延を示すフィードバックをメモリコントローラ論理回路に提供するように構成することができる。メモリコントローラ２０は、このフィードバックを使用して、早期戻り応答の配信を調整することができる。
【００２４】
早期応答とクリティカルワードの間のメモリクロックサイクル数は、プロセッサクロックがそのサポートされる最も低い周波数で実行されている一方で、メモリがそのサポートされる最も高い周波数で実行されている時にデータ経路の準備を許可するように選択することもできる。他のクロック周波数設定では、提供する必要があったはずの時点よりも早く早期応答を提供することもできるが、あらゆるクロック周波数の構成で早期応答を使用できるようにすることができる。
【００２５】
また、早期応答と対応するデータの間のメモリクロックサイクル数は、Ｌ２キャッシュ１６を調停する際にインターフェイスユニット１８に何らかの柔軟性を提供するように選択することができる。インターフェイスユニット１８は、早期応答と対応するデータの間の遅延における不確実性の様々な原因を解明するために、（早期応答の送信と比較して）調停要求タイミングを変化させることができる。インターフェイスユニット１８は、システム内で実際に生じた遅延に基づいて調停要求のタイミングを適応させて、転送経路の準備をクリティカルワードの到着により厳密に一致させることができ、従ってクリティカルワードの転送をより短い遅延で成功させる頻度を上げることができる。
【００２６】
上述したように、早期応答から対応するデータまでの遅延の不確実性には原因がある。この不確実性として、例えば、非同期クロックドメインの交差における不確実性を挙げることができる。遅延は、データが到着した時点におけるクロックの捕獲端の位相関係に応じて、様々な時点において１プロセッサクロックサイクルだけ異なることがある。また、いずれかのクロックのクロック周波数の変化が、インターフェイスユニット１８が（プロセッサクロックサイクルで測定した）新たな遅延に合わせて調整を行うまで不確実性の原因となり得る。プロセッサ１４Ａ〜１４Ｂ、Ｌ２キャッシュ１６、インターフェイスユニット１８、及び／又はメモリコントローラ２０のいずれかにおけるパイプラインのストールも、Ｌ２キャッシュ１６における調停遅延と同様に不確実性の原因になり得る。
【００２７】
従って、インターフェイスユニット１８を、以前のクリティカルワード転送動作で生じた遅延をモニタするように構成することができる。インターフェイスユニット１８を、以前に生じた遅延に基づいて、現在のクリティカルワード転送動作に生じる可能性がある遅延を予測するよう構成することができる。すなわち、インターフェイスユニット１８は、最近生じた遅延に基づいて、予測される遅延を適応させることができる。従って、インターフェイスユニット１８は、時間の経過につれて不確実性に適応するので、クリティカルワード転送をより正確に実行することができる。
【００２８】
プロセッサ１４Ａ〜１４Ｂは、あらゆる命令セットアーキテクチャを実装することができる。様々な実施形態では、プロセッサ１４Ａ〜１４Ｂが、スーパースカラ又はスカラ、スーパーパイプライン又はパイプライン、アウトオブオーダー又はインオーダー、投機的又は非投機的などを含むあらゆるマイクロアーキテクチャを実装することができる。様々な実施形態では、必要に応じてマイクロコーディング技術を利用してもよく、又は利用しなくてもよい。データキャッシュ２４は、あらゆる容量及び構成（セットアソシアティブ、直接マップなど）を有することができる。所与の実施形態に含まれるプロセッサ１４Ａ〜１４Ｂの数は異なることができ、１つのプロセッサ又は２つよりも多くのプロセッサを有する実施形態を含む。レジスタファイル２２は、あらゆる数のレジスタに対応する記憶装置を含むことができる。例えば、レジスタファイル２２は、プロセッサ１４Ａ〜１４Ｂが実装する命令セットアーキテクチャで指定される汎用レジスタの数と同じ数のレジスタを少なくとも含むことができる。ある実施形態では、レジスタファイル２２が、レジスタ名変更、マイクロコードの使用のための一時レジスタなどをサポートするために、汎用レジスタの数よりも多くのレジスタを含むことができる。
【００２９】
Ｌ２キャッシュ１６は、必要に応じてあらゆる容量及び構成を有することができる。Ｌ２キャッシュ１６は、データキャッシュ２４を含んでも、或いはデータキャッシュ２４を別にし、すなわち含まなくてもよい。他の実施形態は、Ｌ２キャッシュ１６を含まなくてもよい（そしてプロセッサ１４Ａ〜１４Ｂをインターフェイスユニット１８に直接結合することができる）。さらに他の実施形態は、追加の階層レベルを含むことができる。
【００３０】
メモリコントローラ２０は、メモリ要求を受け取り、メモリ１２にインターフェイス接続して要求を完了するように構成された回路を含むことができる。様々な実施形態では、メモリコントローラ２０を、静的ランダムアクセスメモリ（ＳＲＡＭ）或いは、同期ＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３、ＤＤＲ４など）ＤＲＡＭ、低パワーＤＤＲ（ＬＰＤＤＲ２など）ＤＲＡＭ、ＲＡＭＢＵＳ  ＤＲＡＭなどの様々な種類の動的ＲＡＭ（ＤＲＡＭ）などのあらゆる種類のメモリにインターフェイス接続するように構成することができる。
【００３１】
図示の実施形態では、プロセッサ１４Ａ〜１４Ｂ、Ｌ２キャッシュ１６、インターフェイスユニット１８及びメモリコントローラ２０が、全て集積回路１０としての単一の半導体基板上に統合される。他の実施形態は、他のレベルの統合及び／又は離散部品を実装することができる。集積回路１０は、周辺回路を統合してシステムオンチップ（ＳＯＣ）の実施構成を形成することができる。例えば、このＳＯＣは、ビデオ及び／又はオーディオ処理回路、オンチップ周辺機器、及び／又はオフチップ周辺機器に結合するための周辺インターフェイスなどをさらに含むことができる。図１には１つのクロックドメイン境界２６を示しているが、他の実施形態は、複数のクロックドメイン境界を含むことができる。
【００３２】
ある実施形態では、プロセッサ１４Ａ〜１４Ｂをプロセッサ手段の一例とすることができ、Ｌ２キャッシュ１６をキャッシュ手段の一例とすることができ、インターフェイスユニット１８をインターフェイス手段の一例とすることができ、メモリコントローラ２０をメモリコントローラ手段の一例とすることができる。各手段は、対応する部品の上述した動作を実現するための手段とすることができる。一般に、指定した動作を実行する組み合わせ論理回路及び／又は順序論理回路を使用することができる。
【００３３】
次に図２を参照すると、インターフェイスユニット１８の１つの実施形態のブロック図を示している。図示の実施形態では、インターフェイスユニット１８が、書き込みキュー３０、読み出し要求キュー３２、読み出しデータキュー３４、Ｌ２調停（Ａｒｂ）回路３６、要求制御回路３８、カウンタ４０、クリティカルワード転送制御回路４２、遅延モニタ回路４４、及び非同期（ａｓｙｎｃ）ＦＩＦＯ４６Ａ、４６Ｂ、４６Ｃ及び４６Ｄを含む。書き込みキュー３０は、Ｌ２キャッシュ１６から書き込み動作を受け取るように結合され、非同期ＦＩＦＯ４６Ａ〜４６Ｂ及び要求制御回路３８に結合される。読み出し要求キュー３２は、Ｌ２キャッシュ１６から読み出し要求を受け取るように結合され、要求制御回路３８及び非同期ＦＩＦＯ４６Ｂに結合される。カウンタ４０は、非同期ＦＩＦＯ４６Ｂに結合される。読み出しデータキュー３４は、Ｌ２キャッシュ１６へのデータ読み出しインターフェイス、Ｌ２Ａｒｂ回路３６、及び非同期ＦＩＦＯ４６Ｃに結合される。Ｌ２Ａｒｂ回路３６は、Ｌ２キャッシュ１６への調停インターフェイス（Ｒｅａｄ  Ａｒｂ、Ｇｎｔ、及びＣｘｃｌ）及びクリティカルワード転送制御回路４２に結合される。クリティカルワード転送制御回路４２は、遅延モニタ回路４４及び非同期ＦＩＦＯ４６Ｄに結合される。遅延モニタ回路４４は、非同期ＦＩＦＯ４６Ｃ〜４６Ｄに結合される。非同期ＦＩＦＯ４６Ａは、メモリコントローラ２０へのデータ書き込みバスに結合される。非同期ＦＩＦＯ４６Ｂは、メモリコントローラ２０及び非同期ＦＩＦＯ４６Ｃ〜４６Ｄへの要求バスに結合される。非同期ＦＩＦＯ４６Ｃは、メモリコントローラ２０からのデータ読み出しバスに結合され、非同期ＦＩＦＯ４６Ｄは、メモリコントローラ２０から早期応答を受け取るように結合される。
【００３４】
クリティカルワード転送制御回路４２を、メモリコントローラ２０から（非同期ＦＩＦＯ４６Ｄを介して）早期応答指示を受け取るように結合して、受け取った早期応答に対応するクリティカルワードを転送するためにＬ２キャッシュ１６に対していつ推測的に調停を行うべきかを決定するように構成することができる。より詳細には、クリティカルワード転送制御回路４２を、早期応答を受け取ってから、（ゼロよりも大きな）正の整数をＮとするＮプロセッサクロックサイクル後に転送経路２８を調停する要求を生成するように構成することができる。クロックサイクル数「Ｎ」は、転送経路の許可を、クリティカルワードを転送に利用できるクロックサイクルに合わせて調整して、クリティカルワードまでの遅延を短縮できるように選択することができる。より詳細には、Ｎのサイズを、遅延モニタ回路４４により計算された遅延とすることができ、又はこの遅延から導出することができる。クリティカルワード転送制御回路４２は、Ｌ２Ａｒｂ回路３６に調停要求を信号送信することができ、Ｌ２Ａｒｂ回路３６は、読み出しＡｒｂを応答に含めて送信することができる。
【００３５】
１つの実施形態では、クリティカルワード転送制御回路４２を、複数の早期応答を同時に追跡するように構成することができる。例えば、クリティカルワード転送制御回路４２は、各々が別個の早期応答を追跡するように割り当て可能な、状態マシーン又はその他の論理回路の複数のインスタンスを含むことができる。クリティカルワード転送制御回路４２は、早期応答を受け取った時に、この早期応答にアイドル状態のマシーンを割り当てるように構成することができる。
【００３６】
メモリコントローラ２０は、他の読み出しデータと同様のクリティカルワードをインターフェイスユニット１８に提供することができ、インターフェイスユニット１８は、非同期ＦＩＦＯ４６Ｃを使用して、このデータをプロセッサクロックドメインに同期させることができる。このデータを、読み出しデータキュー３４に提供して記憶し、これを読み出しデータキュー３４からデータ読み出しバスを介してＬ２キャッシュ１６に転送することができる。いくつかの実施形態では、クリティカルワードを、読み出しデータキュー３４を迂回させて、１プロセッサクロックサイクル早く転送するために利用可能にすることができる。
【００３７】
遅延モニタ回路４４は、非同期ＦＩＦＯ４６Ｄ及び４６Ｃから提供された早期応答と対応するデータの間の遅延をそれぞれ測定して、実際に生じている遅延を（プロセッサクロックサイクルの面から）検出するように構成することができる。この測定遅延が以前に測定した遅延と異なる場合、遅延モニタ回路４４を、クリティカルワード転送制御回路４２に提供する遅延を修正するように構成することができる。遅延モニタ回路は、遅延を適応させることができるが、１つの実施形態では、現在測定されている遅延に等しい遅延については即座に設定しないことがある。代わりに、遅延モニタ回路４４は、現在測定されている遅延に近付くように遅延を修正することができる。時間の経過につれ、現在測定されている遅延が安定したままである場合、遅延モニタ回路４４からの遅延は、現在測定されている遅延に近付くことができる。一方、現在測定されている遅延の短期的な変化が、クリティカルワード転送制御回路４２に提供される遅延に大きく影響を与えることはない。遅延モニタ回路４４は、早期応答から実際にデータを受け取るまでの遅延を測定できるが、様々な実施形態は、早期応答とクリティカルワードの転送の間のいずれかの遅延部分を測定すること、又は遅延を全て測定することができる。
【００３８】
図示の実施形態では、カウンタ４０が、プロセッサクロックドメインのクロックサイクル毎に増分し、読み出しデータ及び早期応答のタイムスタンプとして機能することができる。クロックサイクル毎に、現在のカウンタ値を非同期ＦＩＦＯ４６Ｂに（存在する場合には、読み出し要求キュー３２又は書き込みキュー３０からの読み出し又は書き込み要求とともに）書き込み、非同期ＦＩＦＯ４６Ｂの出力に非同期ＦＩＦＯ４６Ｃ及び４６Ｄへの入力として提供することができる。このタイムスタンプを（存在する場合には、読み出しデータ及び早期応答データとともにそれぞれ）非同期ＦＩＦＯ４６Ｃ〜４６Ｄに書き込むことができる。遅延モニタ回路４４は、非同期ＦＩＦＯ４６Ｃ〜４６Ｄからタイムスタンプ及びＴＩＤを受け取ることができる。遅延モニタ回路４４は、同じＴＩＤに関するタイムスタンプの差分を遅延の測定値として取ることができる。他の実施形態では、他の方法で遅延を測定することができる。また、他の実施形態は、他の同期回路を（すなわち、非同期ＦＩＦＯ４６Ｂを使用する代わりに）使用して、タイムスタンプをメモリクロックドメインに同期させることができる。例えば、図９は、インターフェイスユニット１８の別の実施形態のブロック図である。図９の実施形態では、カウンタ４０がグレイエンコーダ１６０に結合される。このグレイエンコーダ１６０を、カウンタ値をグレイ符号化し、このグレイ符号化値を同期装置１６２に提供するように構成することができる。同期装置１６２は、このグレイ符号化値をメモリクロックドメインに同期させるように構成することができる。同期装置１６２の出力は、非同期ＦＩＦＯ４６Ｃ〜４６Ｄにタイムスタンプを提供するように結合されたグレイデコーダ１６４に結合される。グレイデコーダ１６４は、グレイ符号化したカウンタ値を復号し、この値をタイムスタンプとして非同期ＦＩＦＯ４６Ｃ〜４６Ｄに供給することができる。一般に、グレイ符号化は、値が増分される度にこの値の１ビットしか変化しないように設計することができる。グレイ符号化は、クロックドメイン境界２６をまたぐビットの同期タイミングにばらつきがある場合でも、有効値がメモリクロックドメインでサンプリングされることを確実にすることができる。図９の同期回路は、例えば、メモリコントローラ２０に新たな要求が送信された場合にのみ非同期ＦＩＦＯ４６Ｂに書き込みが行われる実施構成で使用することができる。すなわち、カウンタ値を絶えずメモリクロックドメインに同期させることができ、非同期ＦＩＦＯ４６Ｂは、（毎クロックサイクルで発生するわけではない）有効な要求のみをメモリクロックドメインに同期させることができる。
【００３９】
この実施形態では、非同期ＦＩＦＯ４６Ａ〜４６Ｄが同期回路として機能し、クロックドメイン境界２６をまたいで情報の送信を同期させることができる。一般に、非同期ＦＩＦＯは、複数のエントリとして構成されたメモリ、発信側クロックドメインから次の情報を書き込むべきエントリの１つを示す、発信側クロックドメイン内の書き込みポインタ、及び受信側クロックドメインにおいて次の情報を読み出すべきエントリの別の１つを示す、受信側クロックドメイン内の読み出しポインタを含むことができる。読み出しポインタと書き込みポインタが同じエントリを示さないことを確実にする（及び場合によっては、読み出しポインタと書き込みポインタの間に１又はそれ以上のエントリが存在することを確実にする）ことにより、エントリ内の情報が、読み出しポインタに応答して読み出される前に書き込みからのエントリ内で安定することを確実にすることができる。
【００４０】
図示の実施形態では、非同期ＦＩＦＯ４６Ａ〜４６Ｂを、発信される書き込みデータ及び読み出し／書き込み要求を（それぞれ）メモリコントローラ２０に同期させるように構成することができる。より詳細には、Ｌ２キャッシュ１６から受け取った時に、読み出し要求を読み出し要求キュー３２に入れ、書き込み要求及びデータを書き込みキュー３０に入れることができる。要求制御回路３８を、書き込みキュー３０及び読み出し要求キュー３２をモニタして、メモリコントローラ２０に送信すべき要求を選択するように構成することができる。この選択された要求を、キュー３０又は３２から非同期ＦＩＦＯ４６Ｂに書き込むことができる。読み出し要求キュー３２には、例示的なエントリを示しており、このエントリは、要求のアドレスを記憶するアドレスフィールド（Ａｄｄｒ）、属性フィールド（Ａｔｔｒ）内の様々な属性、及びこの要求に割り当てられたＴＩＤを記憶するトランザクションＩＤフィールド（ＴＩＤ）を含む。書き込みキューエントリも同様とすることができるが、このエントリは、データのためのデータフィールドを含むこともできる（又は別個の書き込みデータキューが存在してもよい）。これらの要求アドレス、属性及びＴＩＤを、非同期ＦＩＦＯ４６Ｂの例示的なエントリ内の要求フィールド（Ｒｅｑ）として、上述したようなカウンタ４０からのタイムスタンプとともに示している。同様に、非同期ＦＩＦＯ４６Ａの例示的なエントリには、書き込みデータ及びＴＩＤを示している。
【００４１】
非同期ＦＩＦＯ４６Ｃ〜４６Ｄは、メモリコントローラ２０からの着信読み出しデータ及び早期応答をそれぞれ同期させるように構成することができる。非同期ＦＩＦＯ４６Ｃの例示的なエントリには、読み出しデータ（Ｄａｔａ）及びＴＩＤフィールド、並びに非同期ＦＩＦＯ４６Ｂからのタイムスタンプを取り込むタイムスタンプフィールド（ＴＳ）を示している。この非同期ＦＩＦＯ４６Ｃからのデータを、Ｌ２キャッシュ１６に送信するために読み出しデータキュー３４に書き込むことができる。例示的な読み出しデータキューのエントリには、データフィールド（Ｄａｔａ）及びＴＩＤフィールド（ＴＩＤ）を示している。非同期ＦＩＦＯ４６Ｄには、早期応答が提供される読み出しのＴＩＤ及びタイムスタンプフィールド（ＴＳ）を含む例示的なエントリを示している。
【００４２】
ある実施形態では、キュー３０、３２及び３４をキューイング手段の一例とすることができ、Ｌ２ａｒｂ制御回路３６を調停手段の一例とすることができ、クリティカルワード転送制御回路４２をクリティカルワード転送手段の一例とすることができ、遅延モニタ回路４４をモニタリング手段の一例とすることができ、カウンタ４０を計数手段の一例とすることができ、要求制御回路３８を要求制御手段の一例とすることができ、非同期ＦＩＦＯ４６Ａ〜４６Ｄを同期手段の一例とすることができる。各手段は、対応する部品の上述した動作を実現するための手段とすることができる。一般に、指定した動作を実行する組み合わせ論理回路及び／又は順序論理回路を使用することができる。
【００４３】
なお、インターフェイスユニット１８の他の実施形態は、Ｌ２キャッシュ１６及び／又はメモリコントローラ２０への異なるインターフェイスを有することができ、他にも内部的な違いを有することができる。例えば、ある実施形態では、Ｌ２キャッシュ１６への要求書き込みインターフェイスとデータ書き込みインターフェイスを分離することができ、Ｌ２への調停インターフェイスを、（上述したような）読み出し及び（書き込みデータを抽出するための）書き込みの両方に使用することができる。ある実施形態では、書き込み要求及び読み出し要求を別個のインターフェイスを介してメモリコントローラ２０へ送信することができ、読み出し要求及び書き込み要求のための別個の非同期ＦＩＦＯが存在することができる。メモリコントローラ２０への別個のデータ書き込み及び応答書き込みインターフェイス、及びこれらのインターフェイスのための別個の非同期ＦＩＦＯが存在してもよい。様々な実施形態において、あらゆる構成を使用することができる。
【００４４】
ここで図３を参照すると、遅延を測定し、この測定遅延に基づいて、クリティカルワード転送制御回路４２に提供する遅延を調整するための、遅延モニタ回路４４の１つの実施形態の動作を示すフロー図を示している。理解しやすくするために、ブロックを特定の順序で示しているが、他の順序を使用することもできる。遅延モニタ回路４４が実装する組み合わせ論理では、ブロックを同時に実行することができる。ブロック、ブロックの組み合わせ、及び／又は全体としてのフロー図は、複数のクロックサイクルにわたってパイプライン化することができる。遅延モニタ回路４４を、図３に示す動作を行うように構成することができる。
【００４５】
遅延モニタ回路４４は、早期応答を受け取った（判定ブロック５０、「はい」の支脈）場合、非同期ＦＩＦＯ４６ＤからＴＩＤ及びタイムスタンプを取り込むことができる（ブロック５２）。この遅延モニタ回路４４を、複数の早期応答を同時に追跡するように構成することができる。従って、遅延モニタ回路４４は、ゼロよりも大きな正の整数をＭとする最大Ｍ個のＴＩＤ及びタイムスタンプを取り込むためのリソースを含むことができる。
【００４６】
非同期ＦＩＦＯ４６Ｃにおいてクリティカルワードを受け取った（判定ブロック５４、「はい」の支脈）場合、遅延モニタ回路４４は、このクリティカルワードのＴＩＤを、取り込んだ早期応答のＴＩＤと比較することができる。このＴＩＤがクリティカルワードのＴＩＤの１つに一致した（判定ブロック５６、「はい」の支脈）場合、遅延モニタ回路は、測定遅延を求め、この測定遅延と出力遅延が異なる場合、クリティカルワード転送制御回路４２への出力遅延を調整することができる（ブロック５８）。
【００４７】
図４は、図３に示すブロック５８の１つの実施形態を示すフロー図である。理解しやすくするために、ブロックを特定の順序で示しているが、他の順序を使用することもできる。遅延モニタ回路４４が実装する組み合わせ論理では、ブロックを同時に実行することができる。ブロック、ブロックの組み合わせ、及び／又は全体としてのフロー図は、複数のクロックサイクルにわたってパイプライン化することができる。遅延モニタ回路４４を、図４に示す動作を行うように構成することができる。
【００４８】
遅延モニタ回路４４は、クリティカルワードのタイムスタンプと、一致するＴＩＤからの早期応答タイムスタンプの差分として、測定遅延を計算することができる（ブロック６０）。遅延モニタ回路４４は、ブロック６０からの測定遅延からクリティカルワード転送制御回路４２に出力される現在の遅延を差し引いたものとして、誤差を計算することができる（ブロック６２）。従って、測定遅延が現在出力されている遅延よりも大きい場合、この誤差は正であり、測定遅延が現在出力されている遅延よりも小さい場合、この誤差は負である。遅延モニタ回路４４は、現在出力されている遅延に誤差の１／２を加算して、新たな出力遅延を生成することができる（ブロック６４）。従って、この新たな遅延を、現在出力されている遅延と測定遅延の間の距離の１／２に移行させることができる。他の実施形態では、異なる誤差の割合を含む他の調整機構を使用することができる。
【００４９】
ここで図５を参照すると、クリティカルワード転送制御回路４２の１つの実施形態の動作を示すフロー図を示している。理解しやすくするために、ブロックを特定の順序で示しているが、他の順序を使用することもできる。クリティカルワード転送制御回路４２が実装する組み合わせ論理では、ブロックを同時に実行することができる。ブロック、ブロックの組み合わせ、及び／又は全体としてのフロー図は、複数のクロックサイクルにわたってパイプライン化することができる。クリティカルワード転送制御４２を、図５に示す動作を行うように構成することができる。
【００５０】
クリティカルワード転送制御回路４２が早期応答を受け取り（判定ブロック７０、「はい」の支脈）、予測される遅延に従ってＬ２調停要求を推測的に生じさせるために状態マシーンを利用できる（判定ブロック７２、「はい」の支脈）場合、クリティカルワード転送制御回路４２は、このトランザクションに状態マシーンを割り当てることができる（ブロック７４）。様々な実施形態では、あらゆる数の状態マシーンを実装することができ、様々な割り当て機構を使用することができる。例えば、到着する最初のクリティカルワード転送動作に状態マシーンを割り当てる先着順方式を使用することができる。他の実施形態では、各プロセッサ１４Ａ〜１４Ｂへの少なくとも１つのクリティカルワード転送を処理できるように、各プロセッサ１４Ａ〜１４Ｂのために１又はそれ以上の状態マシーンを確保することができる。残りの状態マシーンが存在する場合、これらを先着順に割り当てることができる。いくつかの実施形態では、各要求をモニタできるように、状態マシーンの数を未処理のキャッシュフィル要求の最大数に等しくすることができる。
【００５１】
図６は、Ｌ２キャッシュ１６への調停要求を推測的に生成し、予測される遅延に基づいてクリティカルワードを転送するためにクリティカルワード転送制御回路４２が実装できる状態マシーンの１つの実施形態のブロック図である。上述したように、複数のクリティカルワード転送の機会を同時に追跡するために、複数の状態マシーンのインスタンスが存在することができる。クリティカルワード転送制御回路４２は、状態マシーンを実装する回路を含むことができる。一般に、状態マシーンは、状態マシーンを所与の状態から離す条件が検出されるまで（例えば、図６に示す矢印を介して）、その状態に留まることができる。
【００５２】
状態マシーンは、リセット時に、又は状態マシーンがそのクリティカルワード転送動作を完了した時にアイドル状態８０において開始することができる。早期応答に応答して状態マシーンが割り当てられると（図５のブロック７４）、状態マシーンは、要求を待つ状態８２に移行することができる。状態マシーンは、要求を行うための予測時間が経過するまで、又はクリティカルワードが到着して転送に利用できるようになるまで、要求を待つ状態８２に留まることができる。予測時間が経過する前にクリティカルワードが到着した場合、転送経路に対する調停要求が非推測的に行われる。いずれの場合にも、状態マシーンは、要求適格状態８４に移行することができる。
【００５３】
この予測時間は、遅延モニタ回路４４からの出力遅延から導出することができる。例えば、予測時間は、インターフェイスユニット１８に対する調停要求と許可の間のサイクル数（例えば、この実施形態では３クロックサイクル）だけ遅延時間よりも少ないことがある。或いは、予測時間と出力される遅延時間の差分に、パイプライン遅延の追加クロックサイクルを含めることもできる。一般に、予測時間は、クリティカルワードの転送経路を推測的に要求することによって短縮できるクロックサイクル数だけ遅延時間よりも少なくなり得る。いくつかの実施形態では、（データよりも前に転送経路が利用可能となるように）遅延を低く見積もるよりも（転送経路が準備される直前にデータが到着するように）高く見積もることが有益な場合がある。例えば、転送経路が利用可能であってクリティカルワードの転送準備ができていない場合、インターフェイスユニット１８は転送を取り消して、データが利用可能になった時に再び調停を行い、推測的な調停によって短縮される遅延を失うことがある。
【００５４】
要求適格状態８４において、クリティカルワード転送制御回路４２は、転送経路の調停を行う要求をＬ２Ａｒｂ回路３６に対して推測的に生成することができる。この読み出しａｒｂ要求が送信されると、状態マシーンは、許可を待つ状態８６に移行して、Ｌ２キャッシュ１６が調停要求を許可するまでここに留まることができる。その後、状態マシーンは、クリティカルワード準備状態８８に移行することができる。クリティカルワードを転送に利用できる場合、状態マシーンは、クリティカルワード転送状態９０に移行してクリティカルワードを転送することができる。１つの実施形態では、キャッシュフィルが完了している場合、状態マシーンが、インターフェイスユニット１８内で読み出し要求が待機解除される時点まで状態９０に留まって待機解除を阻止することができる。その後、キャッシュブロックが提供されると、同じ経路を使用してＬ２キャッシュ１６及びデータキャッシュ２４にデータを書き込むことができる。待機解除が阻止された後、クリティカルワードの転送が完了し、状態マシーンはアイドル状態８０に移行することができる。他の実施形態では、クリティカルワード状態９０後に、連続状態の組を使用して待機解除への進行を追跡し、待機解除を抑制した後でアイドル状態８０に戻ることができる。
【００５５】
一方、状態マシーンが状態８８に到達した時にクリティカルワードの準備ができていない場合、状態マシーンは、転送（Ｌ２キャッシュ１６へのＣｘｃｌ）を取り消して、データを待つ状態９２に移行することができる。状態マシーンは、クリティカルワードを受け取った時に状態９２から状態８４に移行して、このクリティカルワードを非推測的に転送することができる。或いは、他の実施形態では、状態マシーンが、クリティカルワードを転送するための推測的要求のみを処理すればよい。推測に失敗した場合、Ｌ２Ａｒｂ回路３６は、クリティカルワードが到着した時にこれを調停することができる。このような実施形態では状態９２を削除することができ、クリティカルワードを転送する準備ができていない場合、状態マシーンは、状態８８からアイドル状態８０へ戻ることができる。
【００５６】
いくつかの実施形態では、同様にさらなる移行が存在してもよい。例えば、状態マシーンが非推測的なクリティカルワード転送を処理する実施形態では、クリティカルワードが到着した場合、状態マシーンは、アイドル状態８０から要求適格状態８４に移行することができる。
【００５７】
図７は、クリティカルワード転送例の（垂直破線で境界を定めた）プロセッサクロックサイクルを示すタイミング図である。クロックサイクル毎の状態マシーンの状態を、ラベルＳＭから横方向に示している。インターフェイスユニット１８とＬ２キャッシュ１６の間の動作をラベルＬ２から横方向に示しており、プロセッサにおける動作をラベルＰから横方向に示している。
【００５８】
最初のクロックサイクルにおいて、状態マシーンはアイドル状態８０にあり、状態マシーンの割り当てを生じる早期応答が受け取られる（矢印１００）。状態マシーンは、要求を待つ状態８２（図７のＷ４Ｒ）に移行し、推測的要求を行うための予測時間をカウントし始める。第５のクロックサイクルにおいて予測時間が経過し（矢印１０２）、状態マシーンは、要求適格状態８４（図７のＲｅｑＥｌ）に移行する。第６のクロックサイクルにおいて読み出しａｒｂ要求が送信され（矢印１０６）、状態マシーンは、許可を待つ状態８６（図７のＷ４Ｇ）に移行する。第７のクロックサイクルにおいてＬ２キャッシュが調停を行い、第８のクロックサイクルにおいてインターフェイスユニット１８に許可を送信する（矢印１０８）。状態マシーンは、クリティカルワード準備状態８８に移行し、読み出しバッファ３４内でクリティカルワードを転送に利用できるようになる（矢印１１０）。第１０のクロックサイクルにおいて、クリティカルワードが転送経路内に送信され、状態マシーンは、転送クリティカルワード状態９０（図７のＦＣＷ）に移行する。このクロックサイクルは、非推測的調停読み出し要求が正常に送信されるクロックサイクルでもある（破線１１２）。従って、この実施形態で短縮される遅延は、この実施形態の矢印１０６及び１１２に対応するクロックサイクル間の差分、すなわち図示の実施形態では４クロックサイクルとなり得る。
【００５９】
この実施形態では、クリティカルワード転送のためには実行されないＬ２キャッシュルックアップヒット検出のためのいくつかのクロックサイクルが経過する。しかしながら、この例では、クリティカルワードの転送に同じパイプラインが使用され、従ってデータはこれらのパイプライン段階を流れる。データは、Ｌ２を介して（Ｌ２へのデータ、参照数字１１４）プロセッサ（Ｐへのデータ、参照数字１１６）に転送される。その後、状態マシーンはアイドル状態に戻ることができる。
【００６０】
次に図８を参照すると、システム１５０の１つの実施形態のブロック図を示している。図示の実施形態では、システム１５０が、外部メモリ１２に結合された集積回路１０の少なくとも１つのインスタンスを含む。集積回路１０は、１又はそれ以上の周辺機器１５４及び外部メモリ１２に結合される。集積回路１５２に供給電圧を供給し、メモリ１２及び／又は周辺機器１５４に１又はそれ以上の供給電圧を供給する電力供給装置１５６も設けられる。いくつかの実施形態では、集積回路１０の複数のインスタンスを含めることができる（及び複数の外部メモリ１２を同様に含めることもできる）。
【００６１】
周辺機器１５４は、システム１５０の種類に応じて、あらゆる所望の回路を含むことができる。例えば、１つの実施形態では、システム１５０を（携帯情報端末（ＰＤＡ）、スマートフォンなどの）モバイル装置とすることができ、周辺機器１５４が、ｗｉｆｉ、Ｂｌｕｅｔｏｏｔｈ、セルラー、全地球測位システムなどの、様々な種類の無線通信のための装置を含むことができる。周辺機器１５４は、ＲＡＭ記憶装置、固体記憶装置又はディスク記憶装置を含む、追加の記憶装置を含むこともできる。周辺機器１５４は、タッチディスプレイ画面又はマルチタッチディスプレイ画面などのディスプレイ画面、キーボード又はその他の入力装置、マイク、スピーカなどのユーザインターフェイス装置を含むことができる。他の実施形態では、システム１５０が、（デスクトップパーソナルコンピュータ、ラップトップ、ワークステーション、ネットトップなどの）いずれの種類のコンピュータシステムであってもよい。
【００６２】
上記開示が完全に理解されると、当業者には数多くの変形例及び修正例が明らかになるであろう。以下の特許請求の範囲は、全てのこのような変形例及び修正例を含むと解釈されたい。
【符号の説明】
【００６３】
１８  インターフェイスユニット
２６  クロックドメイン境界
３０  書き込みキュー
３２  読み出し要求キュー
３４  読み出しデータキュー
３６  Ｌ２Ａｒｂ
３８  要求制御
４０  カウンタ
４２  クリティカルワード転送制御
４４  遅延モニタ
４６Ａ  非同期ＦＩＦＯ
４６Ｂ  非同期ＦＩＦＯ
４６Ｃ  非同期ＦＩＦＯ
４６Ｄ  非同期ＦＩＦＯ
【図１】
0005621041.tif 000002
【図２】
0005621041.tif 000003
【図３】
0005621041.tif 000004
【図４】
0005621041.tif 000005
【図５】
0005621041.tif 000006
【図６】
0005621041.tif 000007
【図７】
0005621041.tif 000008
【図８】
0005621041.tif 000009
【図９】
0005621041.tif 000010