(58)【調査した分野】(Int.Cl.,DB名)
各アクセスタイミングで順序付けられたリスト内において、前記エントリは、前記インターフェースによる前記関連付けられた未決着のトランザクションの一時的な受信順序に基づいて順序付けられる、請求項1に記載のメモリコントローラ。
特定のメモリアドレスへのアクセスタイミングが、その特定のメモリアドレスを含む行がすでに活性化されているか否かに依存して変動するように、各行がアクセスされるのに先だって、その行は活性化される必要がある、請求項1または2に記載のメモリコントローラ。
前記インターフェースによって受信された各トランザクションに応答して、前記複数の順序付けられたリストのうちの少なくとも1つにおいてそのトランザクションに対するエントリを割り当てるように、割り当て回路をさらに備える、請求項1から3のいずれかに記載のメモリコントローラ。
前記インターフェースによって受信された各トランザクションについて、前記割り当て回路は、前記少なくとも1つの優先順位ベースで順序付けられたリストのうちの1つおよび前記少なくとも1つのアクセスタイミングで順序付けられたリストのうちの1つの両方において、そのトランザクションに対するエントリを割り当てるように構成される、請求項4に記載のメモリコントローラ。
各優先順位ベースで順序付けられたリスト内において、各エントリは、ヘッドインジケータとテールインジケータとを含み、前記ヘッドインジケータは、前記エントリが前記優先順位ベースで順序付けられたリスト内のヘッド位置にある場合に設定され、前記テールインジケータは、前記エントリが前記優先順位ベースで順序付けられたリスト内のテール位置にある場合に設定され、
各エントリは、前記優先順位ベースで順序付けられたリスト内に、次のエントリへのポインタをさらに含み、前記次のエントリは、前記次のエントリを指したエントリよりも、前記ヘッド位置からより離れた位置にある、請求項1から5のいずれかに記載のメモリコントローラ。
前記インターフェースによって受信された現在のトランザクションに応答して、前記現在のトランザクションによって指定された前記メモリアドレスに配慮して選択された前記少なくとも1つの優先順位ベースで順序付けられたリストのうちの選択された1つに、前記現在のトランザクションに対するエントリを割り当てるための割り当て回路をさらに含み、
前記割り当て回路は、前記関連付けられた未決着のトランザクションの優先順位指標が前記現在のトランザクションの前記優先順位指標よりも高いまたは等しく、前記次のエントリに関連付けられた前記未決着のトランザクションの優先順位指標が前記現在のトランザクションの前記優先順位指標よりも低い、前記選択された優先順位ベースで順序付けられたリスト内のエントリを識別するように構成され、
前記割り当て回路は、前記現在のトランザクションの新しいエントリを、前記識別されたエントリと隣接するが、前記識別されたエントリよりも前記ヘッド位置からより離れるように順序付けられる、前記選択された優先順位ベースで順序付けられたリストへ追加するようにさらに構成される、請求項8に記載のメモリコントローラ。
前記識別されたエントリの前記ポインタは前記新しいエントリを指すように更新され、前記新しいエントリの前記ポインタは前記次のエントリを指すように構成される、請求項9に記載のメモリコントローラ。
前記関連付けられた未決着のトランザクションの前記優先順位指標は、前記新しいエントリに関連付けられた前記現在のトランザクションの前記優先順位指標に相当するように更新される、請求項11に記載のメモリコントローラ。
前記新しいエントリが前記優先順位ベースで順序付けられたリスト内の前記テール位置にある場合に、前記割り当て回路によって、前記新しいエントリに前記テールインジケータを設定し、以前は前記テール位置にあった前記エントリの前記テールインジケータをクリアする、請求項9から12のいずれかに記載のメモリコントローラ。
前記関連付けられた未決着のトランザクションの優先順位指標が前記現在のトランザクションの前記優先順位指標よりも高いまたは等しい、前記選択された優先順位ベースで順序付けられたリストにエントリがない場合に、前記割り当て回路は、前記ヘッド位置に前記現在のトランザクションの前記新しいエントリを追加するように構成され、前記新しいエントリに前記ヘッドインジケータが設定され、前記新しいエントリの前記ポインタは、以前に前記ヘッド位置であった前記エントリを指し、前記ヘッド位置にあった前記エントリのヘッドインジケータがクリアされるように構成される、請求項9から13のうちのいずれかに記載のメモリコントローラ。
前記選択された優先順位ベースで順序付けられたリストが現在エントリを有しない場合に、前記割り当て回路は、前記現在のトランザクションに割り当てられた前記新しいエントリにそのヘッドインジケータとそのテールインジケータとの両方を設定するように構成される、請求項9から14のうちのいずれかに記載のメモリコントローラ。
各アクセスタイミングで順序付けられたリスト内において、各エントリは、ヘッドインジケータとテールインジケータとを含み、前記ヘッドインジケータは、前記エントリが前記アクセスタイミングで順序付けられたリスト内のヘッド位置にある場合に設定され、前記テールインジケータは、前記エントリが前記アクセスタイミングで順序付けられたリスト内のテール位置にある場合に設定され、
各エントリは、前記アクセスタイミングで順序付けられたリスト内の次のエントリへのポインタをさらに含み、前記次のエントリは、前記次のエントリを指したエントリよりも前記ヘッド位置からより離れた位置にある、請求項1から15のいずれかに記載のメモリコントローラ。
前記少なくとも1つのトランザクションソースによって発行されたバーストトランザクションは、前記メモリデバイスの複数のリンクバーストトランザクションに変換され、前記メモリコントローラは、
前記リンクバーストトランザクションのうちの最初のものを前記少なくとも1つのアクセスタイミングで順序付けられたリストのうちの1つのエントリに割り当て、次いで、前記エントリに関連付けられたスパーリストのスパーリストエントリに前記残りのリンクトランザクションの全てを割り当てるように構成される割り当て回路と、をさらに含む、請求項16に記載のメモリコントローラ。
前記アービトレーション動作が実行される場合に、最後に前記アービトレーション動作が実行された時に選択された前記ウィニングトランザクションは、前記少なくとも1つのアクセスタイミングで順序付けられたリストのうちの1つにエントリを有し、そのエントリは、それに関連付けられた前記スパーリストを有し、前記アービトレーション動作は、前記ウィニングトランザクションとして、前記スパーリスト内にスパーリストエントリを有する前記リンクトランザクションのうちの1つを選択するように構成される、請求項17に記載のメモリコントローラ。
前記リンクトランザクションの全てがウィニング要求として選択される場合にのみ、前記アービトレーション動作は、それに続く以降のウィニングトランザクションとして、前記少なくとも1つのアクセスタイミングで順序付けられたリストのうちの前記1つに前記次のエントリに関連付けられた前記トランザクションを選択するように構成される、請求項18に記載のメモリコントローラ。
前記メモリデバイスは、複数のバンクを含み、各バンクは、複数の行を含み、前記少なくとも1つのアクセスタイミングで順序付けられたリストは、未決着のトランザクションが存在する各バンクの各行に対して別々のアクセスタイミングで順序付けられたリストを含み、
各アクセスタイミングで順序付けられたリスト内において、各エントリは、前記アクセスタイミングで順序付けられたリストが提供された前記バンクおよび行の指標を含む、請求項16から19のいずれかに記載のメモリコントローラ。
前記所定の例外条件は、特定の未決着のトランザクションの前記優先順位指標を、高い優先順位を表すように変更させる条件であり、前記アービトレーション回路は、前記所定の例外条件が存在する場合に、前記ウィニングトランザクションとして前記特定の未決着のトランザクションを選択するように構成され、前記記憶装置は、前記複数の順序付けられたリストからそのウィニングトランザクションのためのいかなるエントリも除去するように構成される、請求項1から22のいずれかに記載のメモリコントローラ。
前記アクセスタイミングで順序付けられたリストのうちの1つから選択される、少なくとも連続するウィニングトランザクションの数を監視し、閾値条件の発生時にリミッタ信号をアサートするように構成されるリミッタ回路と、
前記リミッタ信号がアサートされる場合に前記所定の例外条件が検出され、前記アービトレーション回路は、前記リミッタ信号のアサートに応答し、最後に前記アービトレーション動作が実行された時に選択された前記ウィニングトランザクションが、前記少なくとも1つのアクセスタイミングで順序付けられたリストのうちの1つにエントリを有し、その少なくとも1つのアクセスタイミングで順序付けられたリストがまだ非空白である場合でも、前記アービトレーション動作の次の実行によって、前記ウィニングトランザクションとして、前記少なくとも1つの優先順位ベースで順序付けられたリストのうちの1つ内のヘッド位置にエントリを有する前記未決着のトランザクションを選択する、
請求項1から23のいずれかに記載のメモリコントローラ。
【発明の概要】
【0008】
第1の態様から見ると、本発明は、メモリデバイスへのアクセスを制御するためのメモリコントローラを提供し、メモリデバイスは、メモリアドレスへのアクセスにかかる時間がメモリデバイス内の先行するアクセスアクティビティに依存するように、不均等アクセスタイミング特性を有し、メモリコントローラは、少なくとも1つのトランザクションソースから発行されたトランザクションを受信するように構成されるインターフェースであって、各トランザクションは、そのトランザクションでアクセスされるメモリアドレスを指定し、そのトランザクションに関連付けられた優先順位指標を含む、インターフェースと、未決着の(pending)トランザクションとして、インターフェースによって受信されメモリコントローラによってメモリデバイスへまだ発行されていないトランザクションを一時的に記憶するように構成される記憶装置であって、記憶装置は、記憶された未決着のトランザクションの複数の順序付けられたリストを維持し、複数のリストは少なくとも1つの優先順位ベースで順序付けられたリストと、少なくとも1つのアクセスタイミングで順序付けられたリストとを含む、記憶装置と、を備え、各優先順位ベースで順序付けられたリストは多数のエントリを有し、各エントリは前記未決着のトランザクションのうちの1つに関連付けられ、各エントリは、関連付けられた未決着のトランザクションの優先順位指標に基づいて、その優先順位ベースで順序付けられたリスト内において順序付けられ、各アクセスタイミングで順序付けられたリストは多数のエントリを有し、各エントリは前記未決着のトランザクションのうちの1つに関連付けられ、各アクセスタイミングで順序付けられたリストに関連付けられる未決着のトランザクションは、前記グループ内の1つのトランザクションのメモリアドレスがアクセスされると、不均等アクセスタイミング特性に配慮したメモリデバイスによって、そのメモリアドレスに効率的にアクセスすることができる、トランザクショングループを形成し、アービトレーション回路は、前記未決着のトランザクションからメモリデバイスに発行されるウィニングトランザクションを選択するように、前記複数の順序付けられたリストが参照されるアービトレーション動作を実行するように構成され、記憶装置は、複数の順序付けられたリストから、ウィニングトランザクションのためのいかなるエントリも除去するように構成され、アービトレーション動作が実行される場合に、最後にアービトレーション動作が実行された時に選択されたウィニングトランザクションは、少なくとも1つのアクセスタイミングで順序付けられたリストのうちの1つにエントリを有し、その少なくとも1つのアクセスタイミングで順序付けられたリストがまだ非空白である場合、アービトレーション動作は、所定の例外条件が存在しない限り,ウィニング(winning)トランザクションとして、その少なくとも1つのアクセスタイミングで順序付けられたリストにエントリを有する未決着のトランザクションのうちの1つを選択するように構成される。
【0009】
本発明に従い、メモリデバイスに送信されるように待機している未決着のトランザクションを追跡するために2つの異なるタイプの順序付けられたリストが使用され、第1のタイプのリストは、優先順位ベースで順序付けられたリストであり、第2のタイプのリストはアクセスタイミングで順序付けられたリストである。アービトレーション(arbitration:調停)回路は、メモリデバイスに発行されるウィニングトランザクションを選択するためにアービトレーション動作を実行する場合にリストの両方のタイプを参照するように構成される。ウィニングトランザクションがアクセスタイミングで順序付けられたリストのうちの1つから選択されると、アービトレーション回路は(所定の例外条件の存在下で)そのアクセスタイミングで順序付けられたリストから以降のウィニングトランザクションを選択する傾向があり、一方で、そのアクセスタイミングで順序付けられたリストは、未決着のトランザクションに対するエントリを含み続ける。
【0010】
かかるアプローチにより、メモリデバイス内のアクセスタイミングを向上させるための未決着のトランザクションの再順序付けと、その高い優先順位のトランザクションが過度に遅延しないことを確実にするための、未決着のトランザクションに関連付けられた優先順位指標を考慮する必要性との間でバランスを取ることが可能になる。
【0011】
一実施形態において、最後にアービトレーション動作が実行された時に選択されたウィニングトランザクションが、少なくとも1つのアクセスタイミングで順序付けられたリストのうちの1つにエントリを有しない場合、または、前記少なくとも1つのアクセスタイミングで順序付けられたリストのうちの1つにエントリを有するが、その少なくとも1つのアクセスタイミングで順序付けられたリストは現在空白である場合、アービトレーション動作は、ウィニングトランザクションとして、前記少なくとも1つの優先順位ベースで順序付けられたリストのうちの1つ内のヘッド位置にエントリを有する未決着のトランザクションを選択するように構成される。これにより、より高い優先順位の未決着のトランザクションが適時にサービスされる。
【0012】
一実施形態において、特定のアクセスタイミングで順序付けられたリストによって参照されるエントリ数が非常に多くなる場合でも、高い優先順位の未決着のトランザクションが適時にサービスされることを確実にするためにさらなるステップを実行できる。特に、一実施形態において、メモリコントローラは、前記アクセスタイミングで順序付けられたリストのうちの1つから選択された少なくとも連続するウィニングトランザクションの数を監視し、閾値条件の発生時にリミッタ信号をアサートするように構成されるリミッタ回路をさらに含む。前記リミッタ信号がアサートされる場合に所定の例外条件が検出され、最後にアービトレーション動作が実行された時に選択されたウィニングトランザクションが、少なくとも1つのアクセスタイミングで順序付けられたリストのうちの1つにエントリを有し、その少なくとも1つのアクセスタイミングで順序付けられたリストがまだ非空白である場合でも、アービトレーション回路は、アービトレーション動作の次の実行によって、ウィニングトランザクションとして、少なくとも1つの優先順位ベースで順序付けられたリストのうちの1つ内のヘッド位置にエントリを有する未決着のトランザクションを選択させるように、リミッタ信号のアサートに応答する。
【0013】
かかる一実施形態において、閾値条件は、いくつかの最大カウント値の形態を取るのみでもよく、カウント値は、優先順位ベースで順序付けられたリストからウィニングトランザクションが選択されるたびにリセットされ、アクセスタイミングで順序付けられたリストからウィニングトランザクションが選択されるたびに増分する。したがって、アービトレーション回路が特定のアクセスタイミングで順序付けられたリストからウィニング要求を連続的に選択する場合に、カウント値は、閾値条件に達するポイントまで増加すると考えられる。閾値条件に達すると、アービトレーション回路は、次いで、アクセスタイミングで順序付けられたリストがまだ空白ではない場合でも、関連する優先順位ベースで順序付けられたリストから次のウィニングトランザクションを選択する。
【0014】
修正された実施形態において、リミッタ回路はカウンタの形態を取るだけではなくてもよいが、その代わりに、特定のアクセスタイミングで順序付けられたリストから選択されるウィニングトランザクションの数の増加を、優先順位の低下と関連付けてもよい。次いで、リミッタ回路に、関連する優先順位ベースで順序付けられたリスト内の最も高い優先順位の未決着のトランザクションの指標が提供される場合、優先順位ベースで順序付けられたリストからの次のウィニングトランザクションの選択に切り替える代わりに、アクセスタイミングで順序付けられたリストからウィニングトランザクションの選択を停止することが適切であるポイントを決定することができる。
【0015】
優先順位ベースで順序付けられたリストは、種々の方法で構成することができる。しかしながら、一実施形態において、各優先順位ベースで順序付けられたリストは、多数のサブリストを含み、各エントリは各サブリストのエントリが同じ優先順位指標を有するトランザクションに関するように、1つのサブリスト内にあり、サブリストは優先順位指標に基づいてそれらの優先順位ベースで順序付けられたリスト内において順序付けられ、各サブリスト内において、そのサブリストのエントリは、前記インターフェースによる関連付けられた未決着のトランザクションの一時的な受信順序に基づいて順序付けられる。このため、かかる実施形態において、各優先順位ベースで順序付けられたリストは、未決着のトランザクションおよび同じ優先順位の指標値を有するトランザクションの間で維持される一時的な順序付けに関連付けられた優先順位の指標値毎に、一組のサブリストを含む。
【0016】
一実施形態において、各アクセスタイミングで順序付けられたリスト内において、エントリは、前記インターフェースによって関連付けられた未決着のトランザクションの一時的な受信順序に基づいて順序付けられる。
【0017】
メモリデバイスは、種々の形態を取ることができる。しかしながら、一実施形態において、メモリデバイスは、複数のバンクを含み、前記少なくとも1つの優先順位ベースで順序付けられたリストは、未決着のトランザクションが存在する各バンクに対して別々の優先順位ベースで順序付けられたリストを含む。
【0018】
さらに、一実施形態において、各バンクは複数の行を含み、指定されたメモリアドレスに対するアクセスタイミングが、その指定されたメモリアドレスを含む行が既にアクティブ化されているかどうかに依存して変動するように、各行は、その行にアクセスする前に活性化することが必要である。かかる構造を有するあるタイプのメモリデバイスは、DRAM(動的ランダムアクセスメモリ)メモリデバイスである。かかる実施形態において、前記少なくとも1つのアクセスタイミングで順序付けられたリストは、未決着のトランザクションが存在する各バンクの各行に対して別々のアクセスタイミングで順序付けられたリストを含んでもよい。
【0019】
一実施形態において、メモリコントローラは、前記インターフェースによって受信された各トランザクションに応答して、前記複数の順序付けられたリストのうちの少なくとも1つに、そのトランザクションに対するエントリを割り当てるための割り当て回路をさらに含む。各トランザクションがインターフェースによって受信される時に割り当てを実行することにより、クリティカルパスから割り当てプロセスを除去できる。特に、ウィニング要求をアービトレーション回路によって選択する必要がある時に、アービトレーション動作は、一時的記憶装置内に維持される複数の順序付けられたリストを参照することによって、迅速に簡便に実行されてもよい。
【0020】
特定の一実施形態において、前記インターフェースによって受信された各トランザクションについて、割り当て回路は、前記少なくとも1つの優先順位ベースで順序付けられたリストのうちの1つおよび前記少なくとも1つのアクセスタイミングで順序付けられたリストのうちの1つの両方に、そのトランザクションに対するエントリを割り当てるように構成される。このため、各未決着のトランザクションは、典型的には2つのエントリ、つまり、優先順位ベースで順序付けられたリスト内の1つおよびアクセスタイミングで順序付けられたリスト内の1つを有する。
【0021】
各優先順位ベースで順序付けられたリスト内のエントリは、種々の形態を取ることができる。しかしながら、一実施形態において、各優先順位ベースで順序付けられたリスト内において、各エントリはヘッドインジケータおよびテールインジケータを含み、エントリが優先順位ベースで順序付けられたリスト内のヘッド位置にある場合はヘッドインジケータが設定され、エントリが優先順位ベースで順序付けられたリスト内のテール位置にある場合にはテールインジケータが設定される。各エントリは、優先順位ベースで順序付けられたリスト内の次のエントリへのポインタをさらに含み、次のエントリは、次のエントリを指したエントリよりもヘッド位置からより離れた位置にある。これは、優先順位ベースで順序付けられたリストのヘッドおよびテール位置において明確にフラグ設定を行いながら、各優先順位ベースで順序付けられたリストにおける種々のエントリの間の相対的な順序付けを維持するための簡便かつ効果的なメカニズムを提供する。
【0022】
一実施形態において、各エントリは、さらに、関連付けられた未決着のトランザクションの優先順位指標を識別する。これは、新しいエントリが優先順位ベースで順序付けられたリストに割り当てられ必要がある場合に必要な割り当てプロセスに役立つ。
【0023】
特定の一実施形態において、各エントリは、前記次のエントリに関連付けられた未決着のトランザクションの優先順位指標をさらに識別する。割り当てプロセスは、次いで、その関連付けられた未決着のトランザクションの優先順位指標と次のエントリに関連付けられた未決着のトランザクションの優先順位指標との特定の組み合わせを有する特定のエントリを見つけるために、エントリを解析することができるため、これは、割り当てプロセスにおいてさらに役立つ。
【0024】
特に、一実施形態において、メモリコントローラは、前記インターフェースによって受信された現在のトランザクションに応答して、現在のトランザクションによって指定されたメモリアドレスを考慮して選択された前記少なくとも1つの優先順位ベースで順序付けられたリストのうちの選択された1つに前記現在のトランザクションのエントリを割り当てるために、割り当て回路をさらに含む。割り当て回路は、関連付けられた未決着のトランザクションの優先順位指標が現在のトランザクションの優先順位指標よりも大きいまたはこれと等しく、前記次のエントリに関連付けられた未決着のトランザクションの優先順位指標が現在のトランザクションの優先順位指標未満である、選択された優先順位ベースで順序付けられたリスト内のエントリを識別するように構成される。次いで、割り当て回路は、現在のトランザクションの新しいエントリを、前記識別されたエントリに隣接するが、前記識別されたエントリよりもヘッド位置からより離れるように順序付けられる、選択された優先順位ベースで順序付けられたリストに追加するようにさらに構成される。
【0025】
上記の解析中、検討中の識別されたエントリに次のエントリがない場合、つまり識別されたエントリがリスト内のテール位置にある場合、次のエントリに関連付けられた未決着のトランザクションの優先順位指標は、適切な場合、リスト内のテール位置のエントリが、上記のメカニズムを使用して識別でき、次いで、リストの新しいテール位置を形成する位置に新しいエントリを追加できるように、現在のトランザクションの優先順位指標よりも低いものと解釈されるいくつかの所定の値に設定されてもよい。
【0026】
一実施形態において、識別されたエントリのポインタは新しいエントリを指すように更新され、新しいエントリのポインタは、前記次のエントリを指すように構成される。
【0027】
随意な拡張(optional enhancement)に従い、その次のエントリに関連付けられた未決着のトランザクションの優先順位指標を更新するように、例えばその次のエントリに関連付けられた未決着のトランザクションの上げられた優先順位を示すために、新しいエントリが挿入された時に上記の次のエントリも修正できる。例えば所定の大きさだけ優先順位指標を増加させるだけで、これを行うことができる多数の方法が存在する。しかしながら、一実施形態において、関連付けられた未決着のトランザクションの優先順位指標は、新しいエントリに関連付けられた現在のトランザクションの優先順位指標に相当するように更新される。(本明細書において「バディ(buddying)」スキームとも称される。)かかる優先順位向上技術は、より低い優先順位トランザクションの無限のブロックを防止することができるため、予測可能な待ち時間計算が可能になる。一実施形態において、新しいエントリの後の次のエントリのみに影響するように優先順位向上技術を構成することができるが、代替の実施形態において、新しく挿入されたエントリの後で1つよりも多いエントリの優先順位を上げるように使用してもよい。
【0028】
一実施形態において、優先順位ベースで順序付けられたリスト内のテール位置に新しいエントリがある場合、割り当て回路によって、新しいエントリのテールインジケータが設定され、以前はテール位置にあったエントリのテールインジケータがクリアされる。
【0029】
さらに、一実施形態において、関連付けられた未決着のトランザクションの優先順位指標が現在のトランザクションの優先順位指標よりも大きいまたは等しい選択された優先順位ベースで順序付けられたリスト内にエントリが存在しない場合、割り当て回路は、ヘッド位置において現在のトランザクションの新しいエントリを追加するように構成され、新しいエントリのヘッドインジケータが設定され、新しいエントリのポインタは、前はヘッド位置にあったエントリを指すように構成され、以前はヘッド位置にあったエントリはそのヘッドインジケータをクリアしている。
【0030】
上記に記載の割り当てプロセスの実行時において、選択された優先順位ベースで順序付けられたリストは、例えば割り当てられる現在のトランザクションが、未決着のトランザクションが存在しないバンクに向けられているため、現在、エントリを有しなくてもよい。その場合、割り当て回路は、現在のトランザクションに割り当てられる新しいエントリによって、そのヘッドインジケータおよびそのテールインジケータの両方を設定するように構成されてもよく、そのエントリは、実際には、関連する優先順位ベースで順序付けられたリストを作成し、そのリストのエントリにすぎない。
【0031】
アクセスタイミングで順序付けられたリスト内の各エントリを構成できる多数の方法が存在する。しかしながら、一実施形態において、各エントリは、優先順位ベースで順序付けられたリスト内のエントリと同様の構成を有し、その各エントリにおいて、ヘッドインジケータおよびテールインジケータを含み、エントリがアクセスタイミングで順序付けられたリストのヘッド位置にある場合にはヘッドインジケータが設定され、エントリがアクセスタイミングで順序付けられたリストのテール位置にある場合にはテールインジケータが設定され、各エントリは、アクセスタイミングで順序付けられたリストにおいて次のエントリへのポインタをさらに含み、次のエントリは、該次のエントリを指すエントリよりもヘッド位置から離れた位置にある。
【0032】
一実施形態において、トランザクションソースによって発行されたバーストトランザクションは、メモリコントローラによって受信されてもよい。かかるトランザクションソースがバーストトランザクションに対して指定し得るバーストサイズが、メモリデバイスによって可能にされる最大バーストサイズを超え得る場合が多く、したがって、かかるバーストトランザクションは、メモリデバイスの複数のリンクバーストトランザクションに変換されてもよい。各リンクバーストトランザクションは、メモリコントローラによって別々のトランザクションとして処理される。一実施形態において、メモリコントローラ内の割り当て回路は、前記少なくとも1つのアクセスタイミングで順序付けられたリストのうちの1つ内のエントリに、前記リンクバーストトランザクションの最初のものを割り当て、次いで残りのリンクトランザクションの全てを、前記エントリに関連付けられたスパーリスト(spur-list:拍車リスト)のスパーリストエントリに割り当てるように、構成できる。
【0033】
かかる方法で種々のリンクバーストトランザクションを構成することにより、アービトレーション回路が、特別な場合として、リンクバーストトランザクションを処理することを可能にする。特に、アービトレーション動作の実行時に、アービトレーション動作が最後に実行される時に選択されたウィニングトランザクションが、前記少なくとも1つのアクセスタイミングで順序付けられたリストのうちの1つ内にエントリを有し、そのエントリがそれに関連付けられた前記スパーリストを有する場合に、アービトレーション動作は、ウィニングトランザクションとして、前記スパーリスト内にスパーリストエントリを有するリンクトランザクションのうちの1つを選択するように構成される。かかるアプローチにより、残りのリンクバーストトランザクションの優先順位が設定される。これは、システムのその他の場所においてあてはまるため有益であり、かかるバーストトランザクションが完了するのを待ちながら特定のリソースを占有してもよく、したがって、メモリデバイスが最初のリンクトランザクションの処理によってかかるバーストトランザクションを処理開始する場合に、残りのリンクトランザクションを迅速に連続して処理できる場合に、非常に有益である。
【0034】
一実施形態において、ウィニング要求としてリンクトランザクションの全てが選択された場合のみ、アービトレーション動作は、以降のウィニングトランザクションとして、アクセスタイミングで順序付けられたリスト内の次のエントリに関連付けられたトランザクションを選択するように構成される。
【0035】
各バンクが複数の行を含み、複数のバンクを含むメモリデバイスの前述の例を考慮すると、次いで一実施形態において、各アクセスタイミングで順序付けられたリスト内において、各エントリは、アクセスタイミングで順序付けられたリストの指標が提供されるバンクおよび行の指標を含む。
【0036】
各トランザクションに関連付けられた優先順位指標は、種々の形態を取ることができる。それはトランザクションの詳細から生成された非明示的な優先順位の指標(例えばトランザクションを発行するマスターデバイスの指標)であってもよいが、一実施形態において、優先順位指標は、トランザクションのフィールド内に提供される明示的な優先順位指標である。特定の一実施形態において、優先順位指標はサービスの質(QoS)レベルの指標である。
【0037】
存在する場合、そのアクセスタイミングで順序付けられたリストから先行するトランザクションが選択された場合にアクセスタイミングで順序付けられたリストからのウィニングトランザクションの選択に対するアービトレーション動作のバイアスを中断する所定の例外条件は、種々の形態を取ることができる。しかしながら、一実施形態において、所定の例外条件は、特定の未決着のトランザクションの優先順位指標を、高い優先順位を表すように変更する条件であり、アービトレーション回路は、その所定の例外条件の存在下で、ウィニングトランザクションとして前記特定の未決着のトランザクションを選択するように構成され、記憶装置は、複数の順序付けられたリストからそのウィニングトランザクションのためのいかなるエントリも除去するように構成される。
【0038】
かかる条件は、例えば、特定のトランザクションで可能にされる最大待ち時間が存在し、その最大待ち時間が近づいている時に、タイムアウト条件によってトリガされてもよい。別の実施形態において、ハザードのクリアが可能になる前に特定のトランザクションを処理する必要があるシステム内の他の場所でハザード条件が検出されてもよい。
【0039】
上記のリンクバーストトランザクションが作成され、アクセスタイミングで順序付けられたリスト内のスパーリストに割り当てられる特定の一実施形態において、次いで、アービトレーション回路は、まず、残りのリンクバーストトランザクションが、存在する所定の例外条件に応答する前にウィニング要求として選択されることを確実にし、その後に、ウィニングトランザクションとして、優先順位が最も高い未決着のトランザクションになるまで優先順位が上げられている特定の未決着のトランザクションを選択する。
【0040】
上に記載の実施形態のメモリコントローラはいずれかのタイプのトランザクションで使用できる。例えば、かかる技術は、メモリデバイスに発行される書き込みトランザクションで利用することができる。しかしながら、一実施形態において、本技術は、メモリデバイスに発行される読み込まれたトランザクションについて利用される。読み込みトランザクションおよび書き込みトランザクションの両方を上に記載の技術に適用することができるように、別の実施形態において、上に記載されたメカニズムを再現できることが理解されよう。
【0041】
一実施形態において、アービトレーション回路は一度に1つのアービトレーション動作のみを実行し、このため、一度に単一のウィニングトランザクションのみを選択するように構成されるが、代替の実施形態において、アービトレーション回路は、複数のアービトレーション動作を並列に実行し、このため、一度に複数のウィニングトランザクションを選択するように構成されてもよい。これは、メモリデバイスが複数のウィニングトランザクションを並列に処理することができる状況において有用である。
【0042】
第2の態様から見ると、本発明は、メモリデバイスへのアクセスを制御する方法を提供し、メモリデバイスは、メモリアドレスのアクセスにかかる時間がメモリデバイス内の先行するアクセスアクティビティに依存するように、不均等アクセスタイミング特性を有し、方法は、少なくとも1つのトランザクションソースから発行されるトランザクションを受信することであって、各トランザクションはそのトランザクションについてアクセスされるメモリアドレスを指定し、そのトランザクションに関連付けられた優先順位指標を含む、前記受信することと、未決着のトランザクションとして、出力インターフェースからメモリデバイスへまだ出力されていないそれらの受信されたトランザクションを記憶装置内に一時的に記憶することであって、記憶装置は記憶された未決着のトランザクションのために複数の順序付けられたリストを維持し、少なくとも1つの優先順位ベースで順序付けられたリストと少なくとも1つのアクセスタイミングで順序付けられたリストとを含む、前記記憶することと、多数のエントリを有するように各優先順位ベースで順序付けられたリストを構成することであって、各エントリは未決着のトランザクションのうちの1つに関連付けられ、各エントリは関連付けられた未決着のトランザクションの優先順位指標に基づいて、その優先順位ベースで順序付けられたリスト内に順序付けられる、前記構成することと、多数のエントリを有するように各アクセスタイミングで順序付けられたリストを構成することであって、各エントリは、前記未決着のトランザクションのうちの1つに関連付けられ、未決着のトランザクションは、前記グループ内の1つのトランザクションのメモリアドレスにアクセスされると、不均等アクセスタイミング特性を考慮するメモリデバイスによって、そのメモリアドレスに効率的にアクセスすることができる、トランザクショングループを形成する各アクセスタイミングで順序付けられたリストに関連付けられる、前記構成することと、前記出力インターフェースから前記メモリデバイスに出力されるウィニングトランザクションを前記未決着のトランザクションから選択するように、前記複数の順序付けられたリストが参照されるアービトレーション動作を実行し、複数の順序付けられたリストからウィニングトランザクションのためのエントリを除去することと、を含み、アービトレーション動作が実行される場合に、最後にアービトレーション動作が実行された時に選択されたウィニングトランザクションは、少なくとも1つのアクセスタイミングで順序付けられたリストのうちの1つにエントリを有し、少なくとも1つのアクセスタイミングで順序付けられたリストはまだ非空白であり、アービトレーション動作は、所定の例外条件が存在しない限り、ウィニングトランザクションとして、その少なくとも1つのアクセスタイミングで順序付けられたリストにエントリを有する未決着のトランザクションのうちの1つを選択するように構成される。
【0043】
第3の態様から見ると、本発明は、メモリデバイスへのアクセスを制御するためのメモリコントローラを提供し、メモリデバイスは、メモリアドレスへのアクセスにかかる時間がメモリデバイス内の先行するアクセスアクティビティに依存するように、不均等アクセスタイミング特性を有し、メモリコントローラは、少なくとも1つのトランザクションソースから発行されたトランザクションを受信するためのインターフェース手段であって、各トランザクションは、そのトランザクションのためにアクセスされるメモリアドレスを指定し、そのトランザクションに関連付けられた優先順位指標を含む、インターフェース手段と、メモリコントローラによってメモリデバイスへまだ発行されていないインターフェース手段によって受信されたそれらのトランザクションを未決着のトランザクションとして一時的に記憶するための記憶手段であって、記憶された未決着のトランザクションの複数の順序付けられたリスト手段を維持し、リスト手段は、少なくとも1つの優先順位ベースで順序付けられたリスト手段と少なくとも1つのアクセスタイミングで順序付けられたリスト手段とを含む、記憶手段とを含み、各優先順位ベースで順序付けされたリスト手段は多数のエントリを持ち、各エントリは前記未決着のトランザクションのうちの1つに関連付けられ、各エントリは、関連付けられた未決着のトランザクションの優先順位指標に基づいてその優先順位ベースで順序付けられたリスト手段内に順序付けられ、各アクセスタイミングで順序付けられたリスト手段は多数のエントリを持ち、各エントリは、前記未決着のトランザクションのうちの1つに関連付けられ、各アクセスタイミングで順序付けられたリスト手段に関連付けられる未決着のトランザクションは、グループ内の1つのトランザクションのメモリアドレスにアクセスされると、不均等アクセスタイミング特性を配慮したメモリデバイスによって、そのメモリアドレスに効率的にアクセスすることができる、トランザクショングループを形成し、前記未決着のトランザクションから、前記メモリデバイスに発行されるウィニングトランザクションを選択するように、前記複数の順序付けられたリスト手段が参照されるアービトレーション動作を実行するためのアービトレーション手段を含み、前記記憶手段は、前記複数の順序付けられたリスト手段から、前記ウィニングトランザクションに対するエントリを除去し、アービトレーション動作が実行される時に、最後にアービトレーション動作が実行された時に選択されたウィニングトランザクションは、前記少なくとも1つのアクセスタイミングで順序付けられたリスト手段のうちの1つにエントリを有し、その少なくとも1つのアクセスタイミングで順序付けられたリスト手段はまだ非空白であり、アービトレーション動作は、所定の例外条件が存在しない限り、ウィニングトランザクションとして、その少なくとも1つのアクセスタイミングで順序付けられたリスト手段内にエントリを有する未決着のトランザクションのうちの1つを選択する。
【0044】
さらに、例示にすぎないが、添付の図面に示されるその実施形態を参照して、本発明を説明する。
【発明を実施するための形態】
【0046】
図1は、相互接続回路30を介して、多数のスレーブデバイス55、60と結合される複数のマスターデバイス10、20を含むデータ処理システムのブロック図である。スレーブデバイスのうちの1つは、DRAMメモリコントローラ50を介して相互接続30に結合されるDRAMメモリデバイス55である。
【0047】
相互接続回路30は、トランザクションを実行することを可能にするために、多数の接続パス35を介してマスターデバイスおよびスレーブデバイスを結合する。各トランザクションは、マスターデバイスからスレーブデバイスへのアドレス転送、およびマスターデバイスおよびスレーブデバイスの間の1つ以上のデータ転送で構成される。相互接続30内のトランザクションの取り扱いのために使用されてもよい多数の公知のプロトコルが存在する。例示を目的として、以下に記載される実施形態では、相互接続回路は、別々のアドレスチャネルおよびデータチャネルが提供される分割トランザクションプロトコルを利用し、データ転送のタイミングが、特定のトランザクションのアドレス転送のタイミングと分離されていると想定される。一特定の実施形態において、相互接続回路はAXIプロトコルに従って動作し、相互接続回路の接続パス35は5つのチャネル、すなわち読み込みアドレスチャネル、書き込みアドレスチャネル、読み込みデータチャネル、書き込みデータチャネル、および書き込み応答チャネルを提供する。
【0048】
アドレス転送の発行によって各マスターデバイスがトランザクションを開始する時に、そのマスターデバイスは、典型的には、トランザクションを識別するためにアドレス転送を有するトランザクション識別子を発行するため、それらのデータ転送をアドレス転送と一致させるために、トランザクションのデータ転送と関連させて前記トランザクション識別子を使用できる。
【0049】
相互接続回路30の制御回路40内において、ID追加/除去回路は、異なるマスターデバイスからのそのトランザクションを相互接続回路30内で一意に識別することを確実にするように提供されてもよい。例えば、応答をそのマスターデバイスに戻すルーティングを可能にすることができるマスター番号を有するそのトランザクション識別子を拡張するように、関連付けられたマスターデバイスによって発行される各トランザクション識別子について、かかるID追加および除去回路を構成してもよい。同様に、転送がマスターデバイスに再びルーティングされる場合に、ID追加/除去回路は、応答転送が関連付けられたマスターデバイス10、20に戻る前にマスター番号を取り除く。応答を適切なマスターデバイスに戻すルーティングを可能にするだけでなく、相互接続回路30内の新しい形態のトランザクション識別子を形成するためのマスター番号を有するトランザクション識別子の拡張子は、さらに、異なるトランザクション識別子を有するトランザクションを再順序付けする能力を有するスレーブデバイス50、55、60が、これらがもともと同じトランザクション識別子を有する場合であっても、異なるマスターデバイスからのトランザクションを再順序付けすることができるという結果を有する。
【0050】
相互接続30の制御回路40は、さらなる機能を含んでもよいことがさらに理解されよう。例えば、潜在的なデッドロック条件を検出するために、可能な場合、デッドロックによって、同時に進行させることができるトランザクションのシーケンスを検出するために、およびかかるデッドロックの発生を回避するために、相互接続30内に周期性従属性回避スキーム(CDAS:cyclic dependency avoidance scheme)制御回路が提供されてもよい。制御回路40は、かかるハザード(hazard)条件が正しく処理されることを目的に、種々のハザード条件、例えば書き込みハザード後の読み込みを監視するためにスコアボーディングおよびハザード検知回路をさらに含んでもよい。これは、例えば、以前のトランザクションが完了するまでの1つのトランザクションの前方への伝播の停止を伴ってもよい。
【0051】
DRAMメモリコントローラ50を考慮すると、上記の記載から、DRAMメモリコントローラ50はトランザクションのストリームを受信し、各トランザクションは典型的にはトランザクション識別子を有することが理解されよう。以下により詳細に記載されるように、本明細書に記載されたDRAMメモリコントローラの実施形態に従い、DRAMメモリコントローラは、DRAM55のアクセス時間を向上させることを目的として、それらのトランザクションを再順序付けすることができる。DRAMメモリコントローラは、相互接続30によって使用されるトランザクションプロトコルの順序付けの制約に従うように、相互接続回路30への出力前に応答を再順序付けすることを確実にできるように、いくつかの内部バッファリングを含む。例えば、これは同じトランザクション識別子を有するトランザクションで必要であってもよく、スレーブから戻る応答は順序通りに戻る必要があり、このため、DRAM効率を向上させるためのかかるトランザクションに関してローカルで実行される再順序付けは、相互接続30への応答転送の出力前に逆の方向にする必要がある。
【0052】
トランザクションの別のプロパティは、トランザクションの明示的なフィールドとして、またはトランザクションから決定することができるいくらかの干渉のために優先順位指標を含んでもよい(例えばマスター110によって発行されるトランザクションがマスター220によって発行されるトランザクションよりも高い優先順位を有することが理解され得る)。本明細書に記載された特定の一実施形態において、各トランザクションは、サービスの質(QoS)指標の形態の明示的な優先順位指標を含む。本明細書に記載された技術に従い、DRAMメモリコントローラ50は、DRAM55へのアクセス時間を向上させるように、しかし一方で、それらのQoS指標を考慮してトランザクションが適切にサービスされることを確実にするように、トランザクションのQoSレベル指標を考慮しながら、トランザクションを再順序付けすることを試みる。
【0053】
図2は、一実施形態に従う
図1のDRAM55を概略的に示す。DRAM55は、複数のバンク130、135、140で構成され、各バンクは複数の行で構成される。各バンクに関連付けられ、DRAMメモリコントローラ50によって発行されるアクセスコマンドに応答するアクセス回路100、110、120が提供される。各アクセス回路100、110、120は、関連付けられたバンクから少なくとも1つのデータ行を記憶するための行バッファ105、115、125を含む。行内のデータ値にアクセスするために、その行はまず、メモリコントローラから発行されたRASコマンドを介して関連行バッファに移動させる必要があり、かかるRASコマンドは、本明細書においてアクティブコマンドとも称される。行バッファに行が記憶されると、次いで、その行内の個々のメモリアドレスは、メモリコントローラから発行されるCASコマンドを介してアクセスすることができる。最終的には、行へのアクセスが完了する場合、または新しい行にアクセスする必要がある場合、メモリコントローラからプリチャージコマンドが発行され、行バッファ内の行の現在のコンテンツを、DRAM55内における関連付けられたバンクに再び記憶させる。
【0054】
このため、そのコンテンツに以降アクセスすることができるように、行を活性化する際に生じる、多大なアクセス時間ペナルティ、および現実の電力消費ペナルティが存在し、したがって、行が活性化された後、したがって、行バッファ内にコンテンツが記憶された後で、行のコンテンツが以降はバンクに戻される前に、その行のメモリアドレスに対する複数のアクセスが実行されると有利であることが理解される。以下により詳細に記載されるように、記載された実施形態のDRAMメモリコントローラはこれを実現するためにトランザクションの再順序付けを実行することができ、これによりアクセス時間および電力消費を低減することができるが、かかる再順序付けがトランザクションのQoS要件に悪影響を及ぼさないことを確実にするように、さらに、トランザクションに関連付けられた優先順位指標を考慮する。
【0055】
図3は、一実施形態に従う
図1のDRAMメモリコントローラ50を概略的に示す。相互接続30から受信された入力トランザクションは、いくつかのローカル再順序付け制御回路210を含んでもよい入力インターフェース200に提供される。この再順序付け制御回路210は、これらのトランザクションをDRAMメモリによって順序に関係なく扱うために、例えば、実際に、同じトランザクション識別子を有する複数のトランザクションを切断するように、入力トランザクションのトランザクション識別子を変更してもよい。しかしながら、この実施形態では、相互接続30が同じトランザクション識別子を有するトランザクションのDRAMからの応答が順序通りに返ることを必要とすると想定されるため、これらのトランザクションを、相互接続30に再びいずれかの応答が出力される前に再び順序付けることが必要となる。したがって、応答データが相互接続30に出力される前にローカル再順序付けを可能にするように、再順序付け制御回路210内にデータバッファ215を提供できる。
【0056】
一実施形態において、書き込みトランザクションに関連して、以下に記載される技術を利用できるが、
図3の例示を目的として、入力トランザクションは全て読み込みトランザクションであり、したがって、相互接続回路への応答出力は読み込みデータであると想定される。書き込みトランザクションについて、応答は、書き込み応答チャネルに提供される状態の情報となる。読み込みトランザクションおよび書き込みトランザクションの両方についての技術を利用することが望ましい場合、
図3に示される回路を全体的または部分的に複製することができるため、読み込みトランザクションに一組の回路が提供され、書き込みトランザクションに複製された一組の回路が提供される。
【0057】
図3に示されるように、インターフェース200は、随意に、バーストフォーマット化回路205を含んでもよい。特に、マスターデバイス10、20のうちの1つは、DRAMメモリのアクセスに許可されるバースト長を超えるバースト長を有するバーストトランザクションを発行してもよい。したがって、インターフェース200によって受信されたかかるバーストトランザクションは、バーストフォーマット化回路205によって複数のリンクバーストトランザクションに変換されてもよく、各リンクバーストトランザクションはメモリコントローラによって別々のトランザクションとして処理される。再順序付け制御回路210からの各リンクバーストトランザクションについて、内部トランザクション識別子を提供することができる。
【0058】
DRAMメモリコントローラ50は、メモリコントローラ50によってDRAM55へまだ発行されていないインターフェース200によって受信されたトランザクションを、未決着のトランザクションとして一時的に記憶するための未決着のトランザクションバッファ230を含む。各トランザクションの関連する詳細を維持するだけではなく、未決着のトランザクションバッファ230は、一組の重複した順序付けられたリスト235を維持し、これらのリストは、少なくとも1つの未決着のトランザクションが存在する各バンクに対して優先順位ベースで順序付けられたリスト(かかる優先順位ベースで順序付けられたリストは本明細書においてQoSリストと称される)、および少なくとも1つの未決着のトランザクションが存在する各バンクの各行に対してアクセスタイミングで順序付けられたリストを含む(かかるリストは本明細書において行ヒットリストと称される)。各トランザクションはインターフェース200によって受信されるため、これは、順序付けられたリスト235のうちの少なくとも1つ内のエントリにその未決着のトランザクションを割り当てるように構成される、リスト割り当て回路220に受け渡される。特に、一実施形態において、リスト割り当て回路220は、関連QoSリストおよび関連行ヒットリストの両方内のエントリに、各未決着のトランザクションを割り当てる。リストおよびリスト割り当て回路220の動作のさらなる詳細を、残りの図を参照して後述する。
【0059】
一実施形態において、バッファ230は、複数のバッファエントリを含み、各バッファエントリは未決着のトランザクションの詳細を記憶するために使用される。各バッファエントリに関連付けられた情報は、次いで、関連のQoSリストおよび行ヒットリスト内の関連付けられたトランザクションの位置を記載するように使用される。次いで、リストそれ自体が仮想リストになる。
【0060】
DRAMメモリ55に新しいトランザクションを発行することが必要な場合、例えばDRAMメモリ55が新しいトランザクションを処理する能力を有するとメモリコントローラ50が決定するため、アービトレーション回路240は、未決着のトランザクションから、DRAM55に発行されるウィニングトランザクションを選択するように複数の順序付けられたリスト235が参照される、アービトレーション動作を実行するように構成される。アービトレーション回路の動作は、以下により詳細に記載されるが、一般的に、アービトレーション回路によって実行されるアービトレーション動作は、最後のウィニングトランザクションがその行ヒットリストから選択される場合に、行ヒットリストのうちの1つからエントリを選択し続けるという偏りがある。しかしながら、個々のトランザクションに関連付けられたQoSレベルを考慮するように、特定の条件によって、アービトレーション回路をその自然なバイアスから偏向させる。
【0061】
アービトレーション回路240によって選択される各ウィニングトランザクションの詳細が、トランザクションを記憶するためにローカルバッファ255および各トランザクションを実行するようにDRAMに対するコマンドのシーケンスを作成するためのDRAMスケジューラー260を含む、メモリインターフェース250に出力される。各トランザクションによって必要なアクセスを実行するにはDRAMスケジューラーから複数のコマンドを発行することが必要であり得るため、典型的にバッファ255が必要であり、インターフェースに加えて、DRAMスケジューラー260とDRAM55との間のパスは、クロックサイクル毎にシングルコマンドのみを発行できるようにされてもよい。このため、メモリインターフェース250による実行プロセスにおいて複数のトランザクション、例えばDRAMの異なるバンクに向けられたトランザクションが存在してもよく、これらのトランザクションの実行に必要な種々のコマンドは、必要なアクセス回路100、110、120の可用性を考慮して、DRAMスケジューラー260によってスケジュールされる。
【0062】
前述のように、DRAMスケジューラー260によって発行されるコマンドは、行をアクティブ化するためのRASコマンド、行内の特定のメモリアドレスにアクセスするための一連のCASコマンド、およびDRAMの関連行に再び行バッファのコンテンツを記憶するためのプリチャージコマンドを含んでもよい。一連のトランザクションが、全てが同じ行にアクセスするメモリインターフェースによって扱われるように、トランザクションを再順序付けすることができる場合、これらのトランザクションのうちのいくつかは、先行するトランザクションとの関連において必要なRASコマンドが既に発行されているため、必要なアクセスを実行するために、相当するCASコマンドをDRAMスケジューラー260から発行することのみが必要になる。さらに、以降のトランザクションが同じ行へアクセスするためのものでもある場合、次いで、現在のトランザクションにはプリチャージコマンドは不要である。
【0063】
一実施形態において、相互接続回路30の外側において、(
図1に概略的に示されるように)
図3に示されるコンポーネントの全てを提供してもよいが、特定の実施形態において、DRAMメモリコントローラ50のコンポーネントのうちの1つ以上を、相互接続30のインターフェースブロックの一部として、相互接続30の内部に提供してもよいことが理解されよう。例えば、一実施形態において、メモリインターフェース250以外のコンポーネントの全てが、相互接続30内に提供されてもよく、一方で、メモリインターフェース250のみが相互接続30とDRAM55との間のインターフェースの外側に提供される。しかしながら、
図3に示されるコンポーネントがデータ処理システム内に物理的に常駐するかどうかにかかわらず、これらのコンポーネントは、DRAM55の「メモリコントローラ」と総称される。
【0064】
前述のように、未決着のトランザクションバッファ230内に維持される一タイプのリストはQoSリストであり、各QoSリストは多数のQoSリストエントリで構成される。各QoSリストエントリは、
図4Aのエンティティ300によって概略的に示される形態を取る。
図4Aで使用される用語は以下の意味を持つ。
Ptr:指定されたバンクに対してQoSで順序付けられたリストにおける次のアイテムに対するポインタ
バンク:このエントリに記憶されたトランザクションの対象となるバンク
QoS:このエントリに記憶されたトランザクションに対するQoS値
pQoS:Ptrによって指されるエントリ(「次のエントリ」)に記憶されたトランザクションのQoS値
V:エントリは有効である(つまりまだ処理されていないトランザクションを含む)
L:エントリが指定されたバンクリストの最後の(テール)トランザクションを含むことを示すように設定
F:エントリが指定されたバンクリストの最初の(ヘッド)トランザクションを含むことを示すように設定
【0065】
さらに、各エントリ300内のボックス305によって識別された番号は、トランザクションの詳細がバッファ230内に記憶される位置を識別する。
【0066】
バンク1の例示的な投入されたQoSリストは、したがって、
図4Bのリスト310によって概略的に示される形態を取ってもよい。
図4Bで見られるように、QoSリスト310は、多数のサブリスト311、312、313、314で形成されると考えることができる。各サブリスト内において、各エントリは同じQoS指標を有し、各サブリスト内のエントリの相対的な順序付けは、メモリコントローラ50のインターフェース200によるこれらのトランザクションの一時的な受信順序に基づく。
図4Bに示されるように、サブリスト311内の唯一のエントリは、それがQoSリスト310に対するヘッドトランザクションであることを示すように設定されたその最初フラグを有し、同様に、サブリスト314内の最後のトランザクションは、それが特定のQoSリストのテールトランザクションであることを示すように設定されたその最後のフィールドを有する。
【0067】
さらに上述のように、未決着のトランザクションバッファ230内で維持される別のタイプの順序付けられたリストは行ヒットリストであり、一実施形態の行ヒットリスト内の各エントリは、
図5Aに示されるエントリ320の形態を取る。
図5Aのエントリ320で使用される用語のそれぞれの意味は以下の通りである。
HPtr:ヒットポインタ。行ヒットリスト内の次のアイテムを指す(後述するインバーストヒットを除く)
バンク:このエントリに記憶されたトランザクションの対象となるバンク
行:このエントリに記憶されたトランザクションの対象となる行
T:エントリが指定された行ヒットリストに対してテールトランザクションを含むことを示すように設定
H:エントリが指定された行ヒットリストに対してヘッドトランザクションを含むことを示すように設定
IB:エントリが規則的な行ヒットではなくインバースト行ヒットを含むことを示すように設定
【0068】
新しい未決着のトランザクションが未決着のトランザクションバッファ230に割り当てられる時に、行ヒットリストテールとしてマークされる一致するバンク/行を有する記憶されたトランザクションが既に存在する場合に、新しいトランザクションに対するエントリが、新しいテールを形成するためにそのリストに押し出される。押し出されない場合には、新しい行ヒットリストを形成するためにエントリが割り当てられる。バンク1、行4に対する投入された行ヒットリストの一例は、このため、リスト330として
図5Bに概略的に示される形態を取ってもよい。
【0069】
図6は、一実施形態に従う
図3のリスト割り当て回路220の動作を示す流れ図であり、この実施形態では、インバースト行ヒットフィールドIBは使用されないと想定される。ステップ350において、リスト割り当て回路220は割り当てる新しいトランザクションを受信し、そのトランザクションは、バンクA、行Bに向けられ、ZのQoS値を有する。ステップ355において、バンクAのQoSリストが既に存在するかどうか、つまりバンクAに向けられている他の未決着のトランザクションが存在するかどうかが決定される。存在しない場合、次いでプロセスはステップ375に進み、ここで、バンクAの新しいQoSリスト内にエントリが作成され、そのエントリの最初および最後フラグが共に設定される。バンクAのQoSリストが存在しない場合には、バンクA、行Bの行ヒットリストも存在しないことであり、したがって、ステップ375が実行される場合に、プロセスは、さらにステップ390を実行し、ここで、バンクA、行Bの行ヒットリスト内にエントリが作成され、そのエントリのヘッドとテールの両フラグが設定される。
【0070】
ステップ355において、QoSリストがバンクAに存在しないことが決定され、次いでステップ360において、現在のトランザクションのQoS値ZがバンクAのQoSリスト内の最も高い優先順位のエントリ、つまりその最初のフィールドが設定されたエントリのQoS値よりも大きいかどうかが決定される。大きい場合には、次いでこれは、QoSリストのヘッド位置に新しいトランザクションを追加するべきであることを示し、したがって、プロセスはステップ370に進み、ここで、既存のQoSリストのヘッドにエントリが作成され、そのエントリはそのQoSリストの以前のヘッドから最初フラグを継承する。しかしながら、QoS値ZがバンクAのQoSリスト内の最も高い優先順位のエントリのQoS値よりも大きくないと想定すると、次いでプロセスは、ステップ365に進み、ここでエントリが作成され、バンクAのQoSリスト内の適切な位置に配置される。
図6のステップ365を実行する1つの方法について、
図7を参照して後述する。
【0071】
ステップ365またはステップ370の後で、バンクAおよび行Bの行ヒットリストが存在するかどうかがステップ380において決定される。そうでない場合には、プロセスはステップ390へと分岐するが、バンクA、行Bで使用できる行ヒットリストが既に存在すると想定すると、プロセスはステップ385に進み、その行ヒットリストのテールにおいて新しいエントリが作成され、そのエントリは以前のテールエントリからテールフラグを継承する。
【0072】
図7は、一実施形態に従う
図6のステップ365を実行するために使用可能な一連のステップを示す流れ図である。ステップ400において、パラメーターNは0と等しくなるように設定され、その後ステップ405においてエントリNのQoSレベルがQoS値Zより大きいまたはこれと等しいかどうか、さらにエントリNで識別されたpQoS値がQoS値Z未満であるかどうかが決定される。そうではない場合、次いでステップ410において最後のQoSリストエントリが解析されたかどうかが決定され、そうでない場合にはステップ415においてパラメーターNが増分され、プロセスがステップ405に返る。特定のエントリについて、ステップ405で設定された条件に適合すると決定されると、プロセスは、ステップ420に進み、ここでQoSリスト内のエントリNの直後にエントリが作成される。ステップ405の条件がリスト内の一エントリについて常に適合できるように、リスト内の最後のエントリは、常にQoS値Z未満であると考えられるある所定の値に設定されるpQoS値を有することができる。例えば、
図4Bを参照すると、かかる所定のレベルは、QoSリストのテールエントリ内の記号「X」によって示される。
【0073】
ステップ420においてエントリを作成するだけでなく、ステップ425において適切である場合に最後フラグが設定され(典型的にはこれは、エントリNから最後フラグを継承することによって行うことができる)、さらに、ステップ430においてエントリNに対するポインタおよびpQoS値が更新される。
【0074】
このプロセスは
図8に概略的に示されており、ここで
図4Aに示されるエントリは、修正されたQoSリスト450を作成するように、新しいエントリ455として
図4BのQoSリスト310内に挿入される。特に、割り当てられる新しいトランザクションのQoS値Zはこの場合「4」であり、このためエントリ457は、それは(
図4BのQoSリスト310内の相当するエントリから明らかなように)4のQoS値および1のpQoS値を最初に有するため、
図7のステップ405の条件に適合するエントリNとして識別される。したがって、エントリ457から元のポインタ値を継承する新しいエントリ455が割り当てられ、一方で、新しいエントリ455を指すようにエントリ457が修正される。さらに、エントリ457に記憶されたpQoS値は、次のエントリ455のQoS値を正しく識別するように、「1」から「4」へと更新される。新しいエントリ455はQoSリスト内の最後のエントリではないため、その最後フラグは設定されない。
【0075】
上に記載の実施形態は、
図7および8を参照し、
図6のステップ365を実行するための適した1つのメカニズムを記載しているが、各エントリは、割り当てプロセスを簡略化および高速化するために、QoSおよびpQoSの両方の値を維持しており、所望の場合、他の技術も利用できることが理解されよう。例えば、所望の場合、テーブルウォークプロセス(table walk process)を使用できる。
【0076】
図9は、一実施形態に従う
図3のアービトレーション回路240によって実行されるアービトレーション動作を示す流れ図である。新しいトランザクションをメモリインターフェース250への受け渡しのために選択することが必要な場合、ステップ500においてアービトレーション動作が開始し、その後ステップ505において、リミッタ信号が設定されたかどうかが決定される。この信号については、
図10Aから
図10Cを参照して後で詳述する。しかしながら、そのリミッタ信号が設定されない限り、プロセスは、ステップ510に進み、ここで、以前に調停されたエントリ(つまりアービトレーション動作が最後に実行されたより前のウィニング要求に相当するエントリ)がその行ヒットリストのテールとしてマークされたかどうかが決定される。マークされていない場合、これは、関連行ヒットリストがまだ空白ではないことを示し、したがって、プロセスはステップ520へと分岐し、ここでアービトレーション動作によって選択されるエントリは、以前に調停されたエントリのヒットポインタによって指される行ヒットリスト内のそのエントリである。
【0077】
しかしながら、ステップ510において、以前に調停されたエントリがその行ヒットリストのテールとしてマークされたことが決定される場合、プロセスはステップ515に進み、ここで、関連バンクQoSリストのヘッドのエントリが次のウィニングエントリとして選択される。関連バンクについて、メモリインターフェース250は、典型的には、アービトレーション回路240に対して、新しいトランザクションを受信できるバンクを識別する。このため、典型的にはステップ515において考慮される単一のQoSリストのみが存在する。
【0078】
ステップ515またはステップ520の後、プロセスはステップ525に進み、ここで選択されるエントリがQoSリストおよび行ヒットリストからポップされ、このプロセスは、
図11Aおよび
図11Bを参照して後述される。
【0079】
図10Aは、一実施形態で使用されてもよいリミッタ回路550の例を概略的に示す。一特定の実施形態において、リミッタ回路は各バンクに対して別々に提供され、アービトレーション回路240の一部を形成すると考えられる。各リミッタ回路は、関連付けられたバンクのウィニングトランザクションが行ヒットリストから選択される度に増分されるカウンタ555を含む。さらに、ウィニングトランザクションがそのバンクのQoSリストから選択される度に、カウンタがリセットされる。カウンタ555によって維持されるカウント値が所定の閾値に達すると、リミッタ信号が設定される。
図9のステップ505を参照すると、リミッタ信号が設定される時に、最後のウィニングトランザクションがテール位置ではない行ヒットリストエントリによるものである場合であっても、次のウィニングトランザクションが行ヒットリストではなくQoSリストから選択されるように、プロセスをステップ515に直接進ませることが理解される。かかるアプローチにより、特定のバンク内の特定の行に対する多数の未決着のトランザクションの存在下においても、その他のトランザクションのQoSレベルが考慮されるため、特定の行に対する多数の未決着のトランザクションの存在下において、高い優先順位のトランザクションが許容不可能な度合まで遅延することがないようにする。
【0080】
図10Bは、簡単なカウンタの代わりに、いくつかの利益解析機能565を実行するための回路が使用されるリミッタ回路の代替例を示す。
図10Aのカウンタ555によって受信された信号に加えて、利益解析機能565は、関連バンクに対してQoSリストのヘッドエントリに関連付けられたQoS値の指標を受信する。DRAMメモリの性質のために、
図10C等のグラフは、特定の行においてメモリアドレスへの連続的なアクセスの行ヒットの利益を識別して形成することができる。アクセスが可能になる前に行をアクティブ化する必要があり、典型的にはその行を再びプリチャージする前に必要な所定の遅延も存在するため、初期における行ヒットの利益は非常に大きい。このため、その期間において、グラフは、
図10Cに示される水平の形式を取る。しかしながら、その初期の期間の後で、特定の行内の複数のアクセスにおいて償却されるオーバーヘッドのために、曲線状のグラフ570が示すように、利益はゆっくりと低下していく。したがって、
図10Cのグラフは、つまり特定の行への連続アクセスに関連付けられた低下する優先順位スケールに変換することができる。つまり、連続するアクセス数が増加すると、それらのアクセスに関連付けられた効果的なQoS値は減少する。したがって、いくつかのポイントにおいて、その疑似QoS値はQoSリストのヘッドに関連付けられたQoS値未満のレベルに落ち込み、そのポイントにおいて、次のウィニングトランザクションが行ヒットリストからの代わりにバンクQoSリストのヘッドから選択されるように、リミッタ信号を設定できる。
【0081】
図11Aは、QoSリストからエントリをポップするように、
図9のステップ525において実行されるステップを表す流れ図である。ステップ600においてそのかかるエントリをポップすることが必要であると決定される場合、プロセスはステップ605に進み、ここで、ポップされるエントリがQoSリストのヘッドにあるかどうかが決定される。これは、
図9のステップ515の実行の結果として
図9のステップ525に達した場合には明らかにあてはまるが、
図9のステップ520によってステップ525に達した場合には必ずしもあてはまらない。特に、行ヒットリストからエントリが選択される場合、バンクQoSリスト内のその相当するエントリは、そのバンクQoSリスト内のいずれの位置であってもよい。
【0082】
ステップ605において、ポップされるエントリがQoSリストのヘッドにあると決定される場合、プロセスはステップ610に進み、ここで、ポップされたエントリによって指されるエントリに最初フラグが設定される。さらに、ポップされているエントリの有効フラグが、そのエントリがもう有効ではないことを示すためにクリアされる。ポップされるべきエントリがQoSリストのヘッドにない場合、プロセスはステップ615に進み、ここで、ポップされたエントリを指すエントリは、ポップされたエントリのポインタ、ポップされたエントリのpQoS値およびポップされたエントリの最後フラグ状態を継承する。再び、ポップされているエントリの有効フラグが、そのエントリがもう有効ではないことを示すためにクリアされる。
【0083】
ステップ615において実行されるプロセスが
図12に概略的に図示されており、ここで、QoSリスト470内のエントリ477がポップされ、その結果として、以前はエントリ477を指していたエントリ475は、そのポインタをエントリ478に指すように更新し、そのpQoS値をエントリ478のQoS値を反映するように更新する。ポップされたエントリ477はその最後フラグを設定しておらず、エントリ475も、その最後エントリを設定していない。
【0084】
図11Bは、行ヒットリストからエントリをポップする場合に実行される相当するステップを示す。
図11Bの
図11Aとの比較に見られるように、プロセスは概して同じである。ポップされたエントリが行ヒットリストのヘッドにある場合、次いで、ステップ660において、ポップされたエントリによって指されるエントリ内のヘッドフラグが設定される。しかしながら、ポップされたエントリが行ヒットリストのヘッドにない場合、ステップ665において、ポップされたエントリを指すエントリはポップされたエントリのポインタおよびテールフラグ状態を継承する。
【0085】
図13は代替の実施形態に従う
図3のリスト割り当て回路220によって実行されるステップを図示する流れ図である。上記の
図6を有する
図13と比較して、
図13のステップ700〜725および750〜760は、それぞれ、
図6のステップ350〜375および380〜390に相当するため、これらのステップについてはさらに記載されないことが理解されよう。しかしながら、
図13の流れ図において、4つの追加のステップすなわちステップ730〜745が実行される。
【0086】
特に、
図13において、QoSリストは、有効または無効にすることができる読み込み向上(escalation)機能を含み、この読み込み向上機能は、さらに、バディス(budding:発芽)スキームと称される。読み込み向上機能が有効ではない場合、プロセスはステップ740に進む。しかしながら、読み込み向上機能が有効にされている場合、プロセスはステップ735に進み、ポイントされたエントリのQoS値はQoS値Zと等しくなるよう増加される。これは、
図8を参照して上述されているものと同じ割り当てを示す
図14に概略的に示されているが、さらに、読み込まれた向上機能の効果を示す。特に、新しいエントリ455が導入される場合、次のエントリ460のQoS値は、新しいエントリのQoS値と等しくなるように増加する、つまり4のQoS値を示す。そのため、挿入されたエントリ455内で識別されたpQoS値は値4をとる。そうでない場合には、プロセスは
図8を参照して前述されるものと全く同じである。かかるアプローチの利点は、新しいエントリがQoSリスト内のエントリ460の前に挿入された場合にエントリ460がその優先順位を上げることであり、そのために、これは、より低い優先順位のトランザクションの無限のブロックを防止することができるため、予測可能な待ち時間計算を可能にする。
図13に記載される実施形態において、ポイントされたエントリのQoS値はQoS値Zと等しくなるように更新されるが、これは必要条件ではなく、読み込み向上スキームの代替の実施形態において、ポイントされたエントリのQoS値をある所定の大きさだけ増加させることのみで十分であることが理解されよう。
【0087】
ステップ740および745は、上述のリンクバーストトランザクションを処理する。特に、一実施形態において、行ヒットリストは、1つ以上のスパーリストをサポートするように構成することができ、各スパーリストはリンクバーストトランザクションを識別する多数のスパーリストエントリを有する。このため、ステップ740において、割り当てられる新しいトランザクションが、リンクバーストトランザクションであり、以前のそれに関連付けられたリンクバーストトランザクションがバンクA、行Bの行ヒットリスト内のエントリを既に割り当てられているバーストトランザクションであるかどうかが決定される。あると決定される場合、プロセスは、ステップ745に進み、ここでバンクA、行Bの行ヒットリストからスパーリスト上にスパーリストエントリが作成され、そのエントリはIBフラグを設定することによって、「インバースト(in-burst)」としてマークされる。これは、行ヒットリスト480について
図15に概略的に示される。特に、最初のリンクバーストランザクションが行ヒットリスト480内のエントリ485に割り当てられる。しかしながら、以降のリンク各バーストトランザクションは、スパーリスト内のスパーリストエントリ487、489に割り当てられる。かかるスパーリストエントリは、例えば
図16を参照して記載されるように、アービトレーション中に異なる方法で処理することができる。
【0088】
特に、
図16は、代替の実施形態に従う
図3のアービトレーション回路240によって実行されてもよいアービトレーション動作を示す。上記の
図9と比較して、ステップ825〜845は
図9のステップ505〜525に相当し、したがって、さらに本明細書に記載されないことが理解されよう。しかしながら、ステップ825の前に、多数のさらなるステップが実行される。特に、ステップ805において、そのインバーストフラグを設定するスパーリストエントリが以前に調停されたエントリを指すかどうかが決定される。このため、
図15を参照して、以前に調停されたエントリがエントリ485である場合、これは、エントリ487がそれを指すことになる。同様に、以前に調停されたエントリがエントリ487である場合、これは、エントリ489がエントリ487を指すことになる。
【0089】
この条件に適合する場合は常に、プロセスはステップ810へと分岐し、ここで、インバーストフラグを設定するスパーリストエントリがウィニングトランザクションを識別するために選択され、その後、ステップ845において、選択されたエントリが行ヒットリストからポップされる(およびその相当するエントリは関連QoSリストからポップされる)。
【0090】
しかしながら、ステップ805において識別されたかかるスパーリストエントリが存在しないと想定して、プロセスはステップ815に進み、ここで、TimedOutフラグが設定されたトランザクションが存在するかどうかが決定される。特に、この実施形態では、所定の例外条件の一例としてTimedOutフラグが使用され、所定の例外条件の存在を識別するためにTimedOutフラグが設定される場合には、通常のアービトレーションプロセスは実行されず、代わりにプロセスはステップ820へと分岐する。TimedOutフラグは、種々の理由により設定することができる。しかしながら、一実施形態において、データ処理システム内の他の場所の要素は、そのトランザクションの待ち時間の上限に達している、またはそのトランザクションが処理されるまで種々の他のトランザクションを処理できない等のために、特定のトランザクションになるべく早い処理が必要であることを識別してもよい。したがって、これらの要素は、そのトランザクションの優先順位を上げる制御信号を発行することにより、TimedOutフラグをその特定のトランザクションのためのメモリコントローラ内に設定する。かかるTimedOutフラグを維持してもよい多数の場所が存在する。しかしながら、一実施形態において、そのTimedOutフラグは、未決着のトランザクションバッファ230内の各未決着のトランザクションの詳細に関連して維持される。
【0091】
TimedOutフラグがいずれかのトランザクションに対して設定される場合、プロセスはステップ820に進み、ここで、そのTimedOutフラグが設定されるトランザクションが選択される。TimedOutフラグが設定された複数のトランザクションがある場合、例えばそのTimedOutフラグが設定されたトランザクションの間で無作為に選択することにより、ステップ820において適切な選択技術を使用してウィニングトランザクションを選択することができる。しかしながら、典型的には、これは、トランザクションに関連付けられたQoS値がメモリコントローラ50によって適切に優先順位が設定されていないことを示すため、概して、TimedOutフラグが設定された複数のトランザクションは存在しないという予想がある。その場合、ステップ825からステップ835の分岐をより頻繁に行い、それによって、トランザクションにTimedOutフラグが設定される可能性が低下するように、リミッタ信号が設定される要件を低くすることが適切である。
【0092】
上記の技術に従い、メモリコントローラは、それらの優先順位レベル内でトランザクションの一時的な順序を同時に保持しながら、トランザクションの重要な再順序付けによって行ヒットの発生率を向上させることができるリスト割り当ておよびアービトレーション動作を実行する。これにより、システムレベルでトランザクションのQoS要件を維持しながら、アクセス待ち時間を低減させるように、トランザクションの再順序付けの間でバランスを確定することができる。
【0093】
本明細書において特定の実施形態を記載しているが、本発明はこれらに制限されず、それに対するその多くの修正および追加を、本発明の範囲内で行ってもよいことが理解されよう。例えば、本発明の範囲から逸脱せずに、以下の従属請求項の種々の特徴を組み合わせることができる。