(57)【要約】  不均等アクセスタイミング特性を有するタイプのメモリデバイスへのアクセスを制御するために、メモリコントローラが提供される。メモリコントローラは少なくとも１つのトランザクションソースから発行されたトランザクションを受信するためのインターフェースを有し、各トランザクションは、そのトランザクションのためにアクセスされるメモリアドレスを指定し、そのトランザクションに関連付けられる優先順位指標を含む。インターフェースによって受信され、まだメモリデバイスに発行されていないトランザクションを、未決着のトランザクションとして一時的に記憶するために、バッファが使用され、バッファは、少なくとも１つの優先順位ベースで順序付けられたリストと、少なくとも１つのアクセスタイミングで順序付けられたリストとを含む、記憶された未決着のトランザクションのための複数の順序付けられたリストを維持する。各優先順位ベースで順序付けられたリストは多数のエントリを有し、各エントリは未決着のトランザクションのうちの１つに関連付けられ、各エントリは、関連付けられた未決着のトランザクションの優先順位指標に基づいてその優先順位ベースで順序付けられたリスト内に順序付けられる。各アクセスタイミングで順序付けられたリストは多数のエントリを有し、各エントリは未決着のトランザクションのうちの１つに関連付けられ、各アクセスタイミングで順序付けられたリストに関連付けられた未決着のトランザクションは、グループ内の１つのトランザクションのメモリアドレスがアクセスされると、メモリデバイスによってそのメモリアドレスに効率的にアクセスすることができる、トランザクショングループを形成する。アービトレーション回路は、複数の順序付けられたリストが、未決着のトランザクションからメモリデバイスに発行されるウィニングトランザクションを選択するように参照される、アービトレーション動作を実行する。次いで、ウィニングトランザクションに対するエントリが、複数の順序付けられたリストから除去される。アービトレーション動作が実行される時に、以前に選択されたウィニングトランザクションが、特定のアクセスタイミングで順序付けられたリストにエントリを有し、アクセスタイミングで順序付けられたリストがまだ非空白である場合、アービトレーション動作は、所定の例外条件の非存在下で、ウィニングトランザクションとして、アクセスタイミングで順序付けられたリストにエントリを有する未決着のトランザクションのうちの１つを選択するように構成される。かかるアプローチにより、種々のトランザクションの優先順位が考慮されることを確実としながら、メモリアクセス時間を向上させるために、トランザクションの再順序付けの間でバランスが達成されることを可能にする。
2014517431.tif 000002
【特許請求の範囲】
【請求項１】
メモリデバイスへのアクセスを制御するためのメモリコントローラであって、前記メモリデバイスは、メモリアドレスへのアクセスにかかる時間が前記メモリデバイス内の先行するアクセスアクティビティに依存するように、不均等アクセスタイミング特性を有し、前記メモリコントローラは、
少なくとも１つのトランザクションソースから発行されたトランザクションを受信するように構成されるインターフェースであって、各トランザクションは、そのトランザクションでアクセスされるメモリアドレスを指定し、そのトランザクションに関連付けられた優先順位指標を含む、前記インターフェースと、
未決着のトランザクションとして、前記インターフェースによって受信された、前記メモリコントローラによって前記メモリデバイスへまだ発行されていないそれらのトランザクションを一時的に記憶するように構成される記憶装置であって、前記記憶装置は、前記記憶された未決着のトランザクションの複数の順序付けられたリストを維持し、前記複数のリストは少なくとも１つの優先順位ベースで順序付けられたリストと、少なくとも１つのアクセスタイミングで順序付けられたリストとを含む、前記記憶装置と、を備え、
各優先順位ベースで順序付けられたリストは多数のエントリを有し、各エントリは前記未決着のトランザクションのうちの１つに関連付けられ、各エントリは、前記関連付けられた未決着のトランザクションの前記優先順位指標に基づいて、その優先順位ベースで順序付けられたリスト内において順序付けられ、
各アクセスタイミングで順序付けられたリストは多数のエントリを有し、各エントリは前記未決着のトランザクションのうちの１つに関連付けられ、各アクセスタイミングで順序付けられたリストに関連付けられる前記未決着のトランザクションは、グループ内の１つのトランザクションの前記メモリアドレスがアクセスされると、前記不均等アクセスタイミング特性に配慮した前記メモリデバイスによって、そのメモリアドレスに効率的にアクセスすることができる、トランザクショングループを形成し、
アービトレーション回路は、前記未決着のトランザクションから前記メモリデバイスに発行されるウィニング（ｗｉｎｎｉｎｇ）トランザクションを選択するように、前記複数の順序付けられたリストが参照されるアービトレーション動作を実行するように構成され、前記記憶装置は、前記複数の順序付けられたリストから、前記ウィニングトランザクションのためのいかなるエントリも除去するように構成され、
前記アービトレーション動作が実行される場合に、最後に前記アービトレーション動作が実行された時に選択された前記ウィニングトランザクションは、前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つにエントリを有し、その少なくとも１つのアクセスタイミングで順序付けられたリストがまだ非空白である場合、前記アービトレーション動作は、所定の例外条件が存在しない限り、前記ウィニングトランザクションとして、その少なくとも１つのアクセスタイミングで順序付けられたリストにエントリを有する前記未決着のトランザクションのうちの１つを選択するように構成される、メモリコントローラ。
【請求項２】
最後に前記アービトレーション動作が実行された時に選択された前記ウィニングトランザクションが、前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つにエントリを有しない場合に、または前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つにエントリを有するが、少なくとも１つのアクセスタイミングで順序付けられたリストが現在空白である場合に、前記アービトレーション動作は、前記ウィニングトランザクションとして、前記少なくとも１つの優先順位ベースで順序付けられたリストのうちの１つ内のヘッド位置にエントリを有する前記未決着のトランザクションを選択するように構成される、請求項１に記載のメモリコントローラ。
【請求項３】
各優先順位ベースで順序付けられたリストは、多数のサブリストを含み、各エントリは、各サブリストの前記エントリが同じ優先順位指標を有するトランザクションに関するように、１つのサブリスト内にあり、前記サブリストは、前記優先順位指標に基づいてそれらの優先順位ベースで順序付けられたリスト内に順序付けられ、各サブリスト内において、そのサブリストの前記エントリは、前記インターフェースによる前記関連付けられた未決着のトランザクションの一時的な受信順序に基づいて順序付けられる、請求項１または２に記載のメモリコントローラ。
【請求項４】
各アクセスタイミングで順序付けられたリスト内において、前記エントリは、前記インターフェースによる前記関連付けられた未決着のトランザクションの一時的な受信順序に基づいて順序付けられる、いずれかの先行する請求項に記載のメモリコントローラ。
【請求項５】
前記メモリデバイスは複数のバンクを含み、前記少なくとも１つの優先順位ベースで順序付けられたリストは、未決着のトランザクションが存在する各バンクに対して別々の優先順位ベースで順序付けられたリストを含む、いずれかの先行する請求項に記載のメモリコントローラ。
【請求項６】
各バンクは複数の行を含み、指定されたメモリアドレスを含む前記行が既に活性化されているかどうかに依存して、その指定されたメモリアドレスへの前記アクセスタイミングが変動するように、各行がアクセスされるのに先だって、その行を活性化する必要があり、
前記少なくとも１つのアクセスタイミングで順序付けられたリストは、未決着のトランザクションが存在する各バンクの各行に対して別々のアクセスタイミングで順序付けられたリストを含む、請求項５に記載のメモリコントローラ。
【請求項７】
前記インターフェースによって受信された各トランザクションに応答して、前記複数の順序付けられたリストのうちの少なくとも１つにおいてそのトランザクションに対するエントリを割り当てるように、割り当て回路をさらに備える、いずれかの先行する請求項に記載のメモリコントローラ。
【請求項８】
前記インターフェースによって受信された各トランザクションについて、前記割り当て回路は、前記少なくとも１つの優先順位ベースで順序付けられたリストのうちの１つおよび前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つの両方において、そのトランザクションに対するエントリを割り当てるように構成される、請求項７に記載のメモリコントローラ。
【請求項９】
各優先順位ベースで順序付けられたリスト内において、各エントリは、ヘッドインジケータとテールインジケータとを含み、前記ヘッドインジケータは、前記エントリが前記優先順位ベースで順序付けられたリスト内のヘッド位置にある場合に設定され、前記テールインジケータは、前記エントリが前記優先順位ベースで順序付けられたリスト内のテール位置にある場合に設定され、
各エントリは、前記優先順位ベースで順序付けられたリスト内に、次のエントリへのポインタをさらに含み、前記次のエントリは、前記次のエントリを指したエントリよりも、前記ヘッド位置からより離れた位置にある、いずれかの先行する請求項に記載のメモリコントローラ。
【請求項１０】
各エントリは、前記関連付けられた未決着のトランザクションの前記優先順位指標をさらに識別する、請求項９に記載のメモリコントローラ。
【請求項１１】
各エントリは、前記次のエントリに関連付けられた前記未決着のトランザクションの前記優先順位指標をさらに識別する、請求項１０に記載のメモリコントローラ。
【請求項１２】
前記インターフェースによって受信された現在のトランザクションに応答して、前記現在のトランザクションによって指定された前記メモリアドレスに配慮して選択された前記少なくとも１つの優先順位ベースで順序付けられたリストのうちの選択された１つに、前記現在のトランザクションに対するエントリを割り当てるための割り当て回路をさらに含み、
前記割り当て回路は、前記関連付けられた未決着のトランザクションの優先順位指標が前記現在のトランザクションの前記優先順位指標よりも高いまたは等しく、前記次のエントリに関連付けられた前記未決着のトランザクションの優先順位指標が前記現在のトランザクションの前記優先順位指標よりも低い、前記選択された優先順位ベースで順序付けられたリスト内のエントリを識別するように構成され、
前記割り当て回路は、前記現在のトランザクションの新しいエントリを、前記識別されたエントリと隣接するが、前記識別されたエントリよりも前記ヘッド位置からより離れるように順序付けられる、前記選択された優先順位ベースで順序付けられたリストへ追加するようにさらに構成される、請求項１１に記載のメモリコントローラ。
【請求項１３】
前記識別されたエントリの前記ポインタは前記新しいエントリを指すように更新され、前記新しいエントリの前記ポインタは前記次のエントリを指すように構成される、請求項１２に記載のメモリコントローラ。
【請求項１４】
前記次のエントリ内で、前記関連付けられた未決着のトランザクションの前記優先順位指標が更新される、請求項１３に記載のメモリコントローラ。
【請求項１５】
前記関連付けられた未決着のトランザクションの前記優先順位指標は、前記新しいエントリに関連付けられた前記現在のトランザクションの前記優先順位指標に相当するように更新される、請求項１４に記載のメモリコントローラ。
【請求項１６】
前記新しいエントリが前記優先順位ベースで順序付けられたリスト内の前記テール位置にある場合に、前記割り当て回路によって、前記新しいエントリに前記テールインジケータを設定し、以前は前記テール位置にあった前記エントリの前記テールインジケータをクリアする、請求項１２〜１５のいずれかに記載のメモリコントローラ。
【請求項１７】
前記関連付けられた未決着のトランザクションの優先順位指標が前記現在のトランザクションの前記優先順位指標よりも高いまたは等しい、前記選択された優先順位ベースで順序付けられたリストにエントリがない場合に、前記割り当て回路は、前記ヘッド位置に前記現在のトランザクションの前記新しいエントリを追加するように構成され、前記新しいエントリに前記ヘッドインジケータが設定され、前記新しいエントリの前記ポインタは、以前に前記ヘッド位置であった前記エントリを指し、前記ヘッド位置にあった前記エントリのヘッドインジケータがクリアされるように構成される、請求項１２〜１６のうちのいずれかに記載のメモリコントローラ。
【請求項１８】
前記選択された優先順位ベースで順序付けられたリストが現在エントリを有しない場合に、前記割り当て回路は、前記現在のトランザクションに割り当てられた前記新しいエントリにそのヘッドインジケータとそのテールインジケータとの両方を設定するように構成される、請求項１２〜１７のうちのいずれかに記載のメモリコントローラ。
【請求項１９】
各アクセスタイミングで順序付けられたリスト内において、各エントリは、ヘッドインジケータとテールインジケータとを含み、前記ヘッドインジケータは、前記エントリが前記アクセスタイミングで順序付けられたリスト内のヘッド位置にある場合に設定され、前記テールインジケータは、前記エントリが前記アクセスタイミングで順序付けられたリスト内のテール位置にある場合に設定され、
各エントリは、前記アクセスタイミングで順序付けられたリスト内の次のエントリへのポインタをさらに含み、前記次のエントリは、前記次のエントリを指したエントリよりも前記ヘッド位置からより離れた位置にある、いずれかの先行する請求項に記載のメモリコントローラ。
【請求項２０】
前記少なくとも１つのトランザクションソースによって発行されたバーストトランザクションは、前記メモリデバイスの複数のリンクバーストトランザクションに変換され、前記メモリコントローラは、
前記リンクバーストトランザクションのうちの最初のものを前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つのエントリに割り当て、次いで、前記エントリに関連付けられたスパーリストのスパーリストエントリに前記残りのリンクトランザクションの全てを割り当てるように構成される割り当て回路と、をさらに含む、請求項１９に記載のメモリコントローラ。
【請求項２１】
前記アービトレーション動作が実行される場合に、最後に前記アービトレーション動作が実行された時に選択された前記ウィニングトランザクションは、前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つにエントリを有し、そのエントリは、それに関連付けられた前記スパーリストを有し、前記アービトレーション動作は、前記ウィニングトランザクションとして、前記スパーリスト内にスパーリストエントリを有する前記リンクトランザクションのうちの１つを選択するように構成される、請求項２０に記載のメモリコントローラ。
【請求項２２】
前記リンクトランザクションの全てがウィニング要求として選択される場合にのみ、前記アービトレーション動作は、それに続く以降のウィニングトランザクションとして、前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの前記１つに前記次のエントリに関連付けられた前記トランザクションを選択するように構成される、請求項２１に記載のメモリコントローラ。
【請求項２３】
前記メモリデバイスは、複数のバンクを含み、各バンクは、複数の行を含み、前記少なくとも１つのアクセスタイミングで順序付けられたリストは、未決着のトランザクションが存在する各バンクの各行に対して別々のアクセスタイミングで順序付けられたリストを含み、
各アクセスタイミングで順序付けられたリスト内において、各エントリは、前記アクセスタイミングで順序付けられたリストが提供された前記バンクおよび行の指標を含む、請求項１９〜２２のいずれかに記載のメモリコントローラ。
【請求項２４】
前記優先順位指標は、各トランザクションのフィールド内に提供される明示的な優先順位指標である、いずれかの先行する請求項に記載のメモリコントローラ。
【請求項２５】
前記優先順位指標はサービスの質（ＱｏＳ）レベル指標である、請求項２４に記載のメモリコントローラ。
【請求項２６】
前記所定の例外条件は、特定の未決着のトランザクションの前記優先順位指標を、高い優先順位を表すように変更させる条件であり、前記アービトレーション回路は、前記所定の例外条件が存在する場合に、前記ウィニングトランザクションとして前記特定の未決着のトランザクションを選択するように構成され、前記記憶装置は、前記複数の順序付けられたリストからそのウィニングトランザクションのためのいかなるエントリも除去するように構成される、いずれかの先行する請求項に記載のメモリコントローラ。
【請求項２７】
前記アクセスタイミングで順序付けられたリストのうちの１つから選択される、少なくとも連続するウィニングトランザクションの数を監視し、閾値条件の発生時にリミッタ信号をアサートするように構成されるリミッタ回路と、
前記リミッタ信号がアサートされる場合に前記所定の例外条件が検出され、前記アービトレーション回路は、前記リミッタ信号のアサートに応答し、最後に前記アービトレーション動作が実行された時に選択された前記ウィニングトランザクションが、前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つにエントリを有し、その少なくとも１つのアクセスタイミングで順序付けられたリストがまだ非空白である場合でも、前記アービトレーション動作の次の実行によって、前記ウィニングトランザクションとして、前記少なくとも１つの優先順位ベースで順序付けられたリストのうちの１つ内のヘッド位置にエントリを有する前記未決着のトランザクションを選択する、
いずれかの先行する請求項に記載のメモリコントローラ。
【請求項２８】
前記インターフェースによって受信された前記トランザクションは読み込まれたトランザクションである、いずれかの先行する請求項に記載のメモリコントローラ。
【請求項２９】
前記アービトレーション回路は、複数のアービトレーション動作を並列で実行するように構成される、いずれかの先行する請求項に記載のメモリコントローラ。
【請求項３０】
メモリデバイスへのアクセスを制御する方法であって、前記メモリデバイスは、メモリアドレスのアクセスにかかる時間は前記メモリデバイス内の先行するアクセスアクティビティに依存するように、不均等アクセスタイミング特性を有し、前記方法は、
少なくとも１つのトランザクションソースから発行されるトランザクションを受信することであって、各トランザクションはそのトランザクションについてアクセスされる前記メモリアドレスを指定し、そのトランザクションに関連付けられた優先順位指標を含む、前記受信することと、
未決着のトランザクションとして、出力インターフェースから前記メモリデバイスへまだ出力されていないそれらの受信されたトランザクションを記憶装置内に一時的に記憶することであって、前記記憶装置は前記記憶された未決着のトランザクションのために複数の順序付けられたリストを維持し、前記複数のリストは少なくとも１つの優先順位ベースで順序付けられたリストと少なくとも１つのアクセスタイミングで順序付けられたリストとを含む、前記記憶することと、
多数のエントリを有するように各優先順位ベースで順序付けられたリストを構成することであって、各エントリは前記未決着のトランザクションのうちの１つに関連付けられ、各エントリは前記関連付けられた未決着のトランザクションの前記優先順位指標に基づいて、その優先順位ベースで順序付けられたリスト内に順序付けられる、前記構成することと、
多数のエントリを有するように各アクセスタイミングで順序付けられたリストを構成することであって、各エントリは、前記未決着のトランザクションのうちの１つに関連付けられ、各アクセスタイミングで順序付けられたリストに関連付けられる前記未決着のトランザクションは、グループ内の１つのトランザクションの前記メモリアドレスがアクセスされると、前記不均等アクセスタイミング特性に配慮した前記メモリデバイスによって、そのメモリアドレスに効率的にアクセスすることができる、トランザクショングループを形成する、前記構成することと、
前記出力インターフェースから前記メモリデバイスに出力されるウィニングトランザクションを前記未決着のトランザクションから選択するように、前記複数の順序付けられたリストが参照されるアービトレーション動作を実行し、前記複数の順序付けられたリストから前記ウィニングトランザクションに対するエントリを除去することと、を含み、
前記アービトレーション動作が実行される場合に、最後に前記アービトレーション動作が実行された時に選択された前記ウィニングトランザクションは、前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つにエントリを有し、少なくとも１つのアクセスタイミングで順序付けられたリストはまだ非空白であり、前記アービトレーション動作は、所定の例外条件が存在しない限り、前記ウィニングトランザクションとして、その少なくとも１つのアクセスタイミングで順序付けられたリストにエントリを有する前記未決着のトランザクションのうちの１つを選択する、前記方法。
【請求項３１】
メモリデバイスへのアクセスを制御するためのメモリコントローラであって、前記メモリデバイスは、メモリアドレスへのアクセスにかかる時間が前記メモリデバイス内の先行するアクセスアクティビティに依存するように、不均等アクセスタイミング特性を有し、前記メモリコントローラは、
少なくとも１つのトランザクションソースから発行されたトランザクションを受信するためのインターフェース手段であって、各トランザクションは、そのトランザクションのためにアクセスされる前記メモリアドレスを指定し、そのトランザクションに関連付けられた優先順位指標を含む、前記インターフェース手段と、
前記メモリコントローラによって前記メモリデバイスへまだ発行されていない前記インターフェース手段によって受信されたそれらのトランザクションを未決着のトランザクションとして一時的に記憶するための記憶手段であって、前記記憶された未決着のトランザクションの複数の順序付けられたリスト手段を維持し、前記リスト手段は、少なくとも１つの優先順位ベースで順序付けられたリスト手段と少なくとも１つのアクセスタイミングで順序付けられたリスト手段とを含む、前記記憶手段と、を有し
各優先順位ベースで順序付けられたリスト手段は多数のエントリを有し、各エントリは前記未決着のトランザクションのうちの１つに関連付けられ、各エントリは、関連付けられた未決着のトランザクションの優先順位指標に基づいてその優先順位ベースで順序付けられたリスト手段内に順序付けられ、
各アクセスタイミングで順序付けられたリスト手段は多数のエントリを有し、各エントリは、前記未決着のトランザクションのうちの１つに関連付けられ、各アクセスタイミングで順序付けられたリスト手段に関連付けられる前記未決着のトランザクションは、グループ内の１つのトランザクションの前記メモリアドレスにアクセスされると、前記不均等アクセスタイミング特性に配慮した前記メモリデバイスによって、そのメモリアドレスに効率的にアクセスすることができる、トランザクショングループを形成し、
前記メモリコントローラはさらに、
前記未決着のトランザクションから前記メモリデバイスに発行されるウィニングトランザクションを選択するように、前記複数の順序付けられたリスト手段が参照されるアービトレーション動作を実行するためのアービトレーション手段を含み、
前記記憶手段は、前記複数の順序付けられたリスト手段から、前記ウィニングトランザクションに対するエントリを除去し、
前記アービトレーション動作が実行される場合に、最後に前記アービトレーション動作が実行された時に選択された前記ウィニングトランザクションは、前記少なくとも１つのアクセスタイミングで順序付けられたリスト手段のうちの１つにエントリを有し、その少なくとも１つのアクセスタイミングで順序付けられたリスト手段はまだ非空白であり、前記アービトレーション動作は、所定の例外条件が存在しない限り、前記ウィニングトランザクションとして、その少なくとも１つのアクセスタイミングで順序付けられたリスト手段内にエントリを有する前記未決着のトランザクションのうちの１つを選択する、前記メモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリコントローラおよびかかるメモリコントローラの動作方法に関し、より詳細には、メモリアドレスのアクセスにかかる時間が、メモリデバイス内の先行するアクセスアクティビティに依存するように、不均等(non-uniform)アクセスタイミング特性を有するタイプのメモリデバイスへのアクセスを制御するための、メモリコントローラに関する。
【背景技術】
【０００２】
現代の多くのデータ処理システムは、不均等アクセスタイミング特性を有するメモリデバイスを使用する。例えば、多くの場合、メモリデバイス内のメモリアドレスの特定の行へのアクセスを可能にすることに伴い初期時間オーバーヘッドが生じるが、その行内のアドレスに対してアクセスのシーケンスが生じる場合、その初期オーバーヘッドは、複数のアクセスにおいて少しづつ償却することができる。しかしながら、シーケンスの各アクセスが異なる行にアクセスする場合、行を有効化するオーバーヘッドはアクセス毎に別々に生じるため、全てが同じ行にアクセスするアクセスのシーケンスと比較した場合に、かかるアクセスのシーケンスについてより長いアクセスタイミング特性がもたらされる。
【０００３】
上記の性質を示す１つのメモリデバイスのタイプは、複数のバンクを含むメモリデバイスであり、各バンクは複数の行を含み、各行はその行にアクセスする前に活性化する必要がある。かかるメモリデバイスの一例はＤＲＡＭ（動的ランダムアクセスメモリ）メモリデバイスである。その行にアクセスする前に各行を活性化する必要があるため、トランザクションによって指定された特定のメモリアドレスのアクセスタイミングは、そのメモリアドレスを含む行が、現在、既に活性化されているかどうかに依存して変動すると考えられる。
【０００４】
アクセスする前に行を活性化しなければならないため、上述のパフォーマンスペナルティが生じるだけでなく、行の活性化プロセスの実行中に消費される電力による、電力消費ペナルティも生じる。したがって、アクセス時間の向上を試みるように、および特に、その行が活性化された場合に特定の行に対して可能な複数のアクセスが行われることを確実にするように、かかるメモリに発行されるトランザクションを再順序付け（reorder）することが望ましいと考えられる。Ｐｒｏｃｅｅｄｉｎｇｓ ｏｆ ｔｈｅ ２７ｔｈ Ｉｎｔｅｒｎａｔｉｏｎａｌ Ｓｙｍｐｏｓｉｕｍ ｏｎ Ｃｏｍｐｕｔｅｒ Ａｒｃｈｉｔｅｃｔｕｒｅ ２０００，１４ Ｊｕｎｅ ２０００， ｐａｇｅｓ １２８−１３８に記載される、Ｓ Ｒｉｘｎｅｒ ｅｔ ａｌ，Ｃｏｍｐｕｔｅｒ Ｓｙｓｔｅｍｓ Ｌａｂｏｒａｔｏｒｙ，Ｓｔａｎｆｏｒｄ Ｕｎｉｖｅｒｓｉｔｙ，Ｃａｌｉｆｏｒｎｉａ，ＵＳＡによる記事「Ｍｅｍｏｒｙ Ａｃｃｅｓｓ Ｓｃｈｅｄｕｌｉｎｇ」は、ＤＲＡＭアーキテクチャ、およびＤＲＡＭの不均等アクセス時間を有効利用するために、メモリ動作を再順序付けするように使用可能な多数のメモリアクセススケジューリング技術について記載している。
【０００５】
メモリ帯域幅は、種々のタイプのシステム、例えばメディア処理システムにおけるより高いパフォーマンスの実現における制限要因となるため、測定されたアクセス時間を削減するためにメモリ動作を再順序付けするためのかかる技術は非常に有益であり得る。しかしながら、多くの現実の用途において、かかるメモリデバイスを組み込むシステム内の他の測定基準（ｍｅｔｒｉｃｓ）を考慮することも必要である。特に、メモリアクセスタイミングを最適化するためにメモリアクセス再順序付けが単独で実行される場合、かかる再順序付けが、システムの別の測定基準に許容不可能なレベルまで悪影響を与えかねない可能性がある。
【０００６】
一例として、ある形式の優先順位指標はデータ処理システム内で発行される各トランザクションに関連付けられることが多い。これは、トランザクションを発行するマスターデバイスによって追加される明示的な優先順位指標にしてもよい、またはトランザクションから推測される非明示的な優先順位指標にしてもよい。例えば、他のマスターデバイスによって実行されているアクティビティよりもあるマスターデバイスのアクティビティがより重要である（または少なくともより待ち時間に対する許容度が低い）ことが理解され得、また、こうして、かかるマスターデバイスによって発行されるトランザクションを、推測されるより高い優先順位を有するように構成することができる。多くの場合、かかる優先順位指標は、それらのトランザクションで必要なサービスの質を示し、このため、アクセス時間を削減するためにメモリデバイスに発行されるトランザクションを再順序付けしたいという希望とかかるサービスの質の要件とのバランスを取ることを確実にすることが重要である。
【０００７】
したがって、かかるバランスを実現することができる向上したメモリコントローラを提供することが望ましい。
【発明の概要】
【０００８】
第１の態様から見ると、本発明は、メモリデバイスへのアクセスを制御するためのメモリコントローラを提供し、メモリデバイスは、メモリアドレスへのアクセスにかかる時間がメモリデバイス内の先行するアクセスアクティビティに依存するように、不均等アクセスタイミング特性を有し、メモリコントローラは、少なくとも１つのトランザクションソースから発行されたトランザクションを受信するように構成されるインターフェースであって、各トランザクションは、そのトランザクションでアクセスされるメモリアドレスを指定し、そのトランザクションに関連付けられた優先順位指標を含む、インターフェースと、未決着の(pending)トランザクションとして、インターフェースによって受信されメモリコントローラによってメモリデバイスへまだ発行されていないトランザクションを一時的に記憶するように構成される記憶装置であって、記憶装置は、記憶された未決着のトランザクションの複数の順序付けられたリストを維持し、複数のリストは少なくとも１つの優先順位ベースで順序付けられたリストと、少なくとも１つのアクセスタイミングで順序付けられたリストとを含む、記憶装置と、を備え、各優先順位ベースで順序付けられたリストは多数のエントリを有し、各エントリは前記未決着のトランザクションのうちの１つに関連付けられ、各エントリは、関連付けられた未決着のトランザクションの優先順位指標に基づいて、その優先順位ベースで順序付けられたリスト内において順序付けられ、各アクセスタイミングで順序付けられたリストは多数のエントリを有し、各エントリは前記未決着のトランザクションのうちの１つに関連付けられ、各アクセスタイミングで順序付けられたリストに関連付けられる未決着のトランザクションは、前記グループ内の１つのトランザクションのメモリアドレスがアクセスされると、不均等アクセスタイミング特性に配慮したメモリデバイスによって、そのメモリアドレスに効率的にアクセスすることができる、トランザクショングループを形成し、アービトレーション回路は、前記未決着のトランザクションからメモリデバイスに発行されるウィニングトランザクションを選択するように、前記複数の順序付けられたリストが参照されるアービトレーション動作を実行するように構成され、記憶装置は、複数の順序付けられたリストから、ウィニングトランザクションのためのいかなるエントリも除去するように構成され、アービトレーション動作が実行される場合に、最後にアービトレーション動作が実行された時に選択されたウィニングトランザクションは、少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つにエントリを有し、その少なくとも１つのアクセスタイミングで順序付けられたリストがまだ非空白である場合、アービトレーション動作は、所定の例外条件が存在しない限り,ウィニング(winning)トランザクションとして、その少なくとも１つのアクセスタイミングで順序付けられたリストにエントリを有する未決着のトランザクションのうちの１つを選択するように構成される。
【０００９】
本発明に従い、メモリデバイスに送信されるように待機している未決着のトランザクションを追跡するために２つの異なるタイプの順序付けられたリストが使用され、第１のタイプのリストは、優先順位ベースで順序付けられたリストであり、第２のタイプのリストはアクセスタイミングで順序付けられたリストである。アービトレーション（arbitration:調停）回路は、メモリデバイスに発行されるウィニングトランザクションを選択するためにアービトレーション動作を実行する場合にリストの両方のタイプを参照するように構成される。ウィニングトランザクションがアクセスタイミングで順序付けられたリストのうちの１つから選択されると、アービトレーション回路は（所定の例外条件の存在下で）そのアクセスタイミングで順序付けられたリストから以降のウィニングトランザクションを選択する傾向があり、一方で、そのアクセスタイミングで順序付けられたリストは、未決着のトランザクションに対するエントリを含み続ける。
【００１０】
かかるアプローチにより、メモリデバイス内のアクセスタイミングを向上させるための未決着のトランザクションの再順序付けと、その高い優先順位のトランザクションが過度に遅延しないことを確実にするための、未決着のトランザクションに関連付けられた優先順位指標を考慮する必要性との間でバランスを取ることが可能になる。
【００１１】
一実施形態において、最後にアービトレーション動作が実行された時に選択されたウィニングトランザクションが、少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つにエントリを有しない場合、または、前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つにエントリを有するが、その少なくとも１つのアクセスタイミングで順序付けられたリストは現在空白である場合、アービトレーション動作は、ウィニングトランザクションとして、前記少なくとも１つの優先順位ベースで順序付けられたリストのうちの１つ内のヘッド位置にエントリを有する未決着のトランザクションを選択するように構成される。これにより、より高い優先順位の未決着のトランザクションが適時にサービスされる。
【００１２】
一実施形態において、特定のアクセスタイミングで順序付けられたリストによって参照されるエントリ数が非常に多くなる場合でも、高い優先順位の未決着のトランザクションが適時にサービスされることを確実にするためにさらなるステップを実行できる。特に、一実施形態において、メモリコントローラは、前記アクセスタイミングで順序付けられたリストのうちの１つから選択された少なくとも連続するウィニングトランザクションの数を監視し、閾値条件の発生時にリミッタ信号をアサートするように構成されるリミッタ回路をさらに含む。前記リミッタ信号がアサートされる場合に所定の例外条件が検出され、最後にアービトレーション動作が実行された時に選択されたウィニングトランザクションが、少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つにエントリを有し、その少なくとも１つのアクセスタイミングで順序付けられたリストがまだ非空白である場合でも、アービトレーション回路は、アービトレーション動作の次の実行によって、ウィニングトランザクションとして、少なくとも１つの優先順位ベースで順序付けられたリストのうちの１つ内のヘッド位置にエントリを有する未決着のトランザクションを選択させるように、リミッタ信号のアサートに応答する。
【００１３】
かかる一実施形態において、閾値条件は、いくつかの最大カウント値の形態を取るのみでもよく、カウント値は、優先順位ベースで順序付けられたリストからウィニングトランザクションが選択されるたびにリセットされ、アクセスタイミングで順序付けられたリストからウィニングトランザクションが選択されるたびに増分する。したがって、アービトレーション回路が特定のアクセスタイミングで順序付けられたリストからウィニング要求を連続的に選択する場合に、カウント値は、閾値条件に達するポイントまで増加すると考えられる。閾値条件に達すると、アービトレーション回路は、次いで、アクセスタイミングで順序付けられたリストがまだ空白ではない場合でも、関連する優先順位ベースで順序付けられたリストから次のウィニングトランザクションを選択する。
【００１４】
修正された実施形態において、リミッタ回路はカウンタの形態を取るだけではなくてもよいが、その代わりに、特定のアクセスタイミングで順序付けられたリストから選択されるウィニングトランザクションの数の増加を、優先順位の低下と関連付けてもよい。次いで、リミッタ回路に、関連する優先順位ベースで順序付けられたリスト内の最も高い優先順位の未決着のトランザクションの指標が提供される場合、優先順位ベースで順序付けられたリストからの次のウィニングトランザクションの選択に切り替える代わりに、アクセスタイミングで順序付けられたリストからウィニングトランザクションの選択を停止することが適切であるポイントを決定することができる。
【００１５】
優先順位ベースで順序付けられたリストは、種々の方法で構成することができる。しかしながら、一実施形態において、各優先順位ベースで順序付けられたリストは、多数のサブリストを含み、各エントリは各サブリストのエントリが同じ優先順位指標を有するトランザクションに関するように、１つのサブリスト内にあり、サブリストは優先順位指標に基づいてそれらの優先順位ベースで順序付けられたリスト内において順序付けられ、各サブリスト内において、そのサブリストのエントリは、前記インターフェースによる関連付けられた未決着のトランザクションの一時的な受信順序に基づいて順序付けられる。このため、かかる実施形態において、各優先順位ベースで順序付けられたリストは、未決着のトランザクションおよび同じ優先順位の指標値を有するトランザクションの間で維持される一時的な順序付けに関連付けられた優先順位の指標値毎に、一組のサブリストを含む。
【００１６】
一実施形態において、各アクセスタイミングで順序付けられたリスト内において、エントリは、前記インターフェースによって関連付けられた未決着のトランザクションの一時的な受信順序に基づいて順序付けられる。
【００１７】
メモリデバイスは、種々の形態を取ることができる。しかしながら、一実施形態において、メモリデバイスは、複数のバンクを含み、前記少なくとも１つの優先順位ベースで順序付けられたリストは、未決着のトランザクションが存在する各バンクに対して別々の優先順位ベースで順序付けられたリストを含む。
【００１８】
さらに、一実施形態において、各バンクは複数の行を含み、指定されたメモリアドレスに対するアクセスタイミングが、その指定されたメモリアドレスを含む行が既にアクティブ化されているかどうかに依存して変動するように、各行は、その行にアクセスする前に活性化することが必要である。かかる構造を有するあるタイプのメモリデバイスは、ＤＲＡＭ（動的ランダムアクセスメモリ）メモリデバイスである。かかる実施形態において、前記少なくとも１つのアクセスタイミングで順序付けられたリストは、未決着のトランザクションが存在する各バンクの各行に対して別々のアクセスタイミングで順序付けられたリストを含んでもよい。
【００１９】
一実施形態において、メモリコントローラは、前記インターフェースによって受信された各トランザクションに応答して、前記複数の順序付けられたリストのうちの少なくとも１つに、そのトランザクションに対するエントリを割り当てるための割り当て回路をさらに含む。各トランザクションがインターフェースによって受信される時に割り当てを実行することにより、クリティカルパスから割り当てプロセスを除去できる。特に、ウィニング要求をアービトレーション回路によって選択する必要がある時に、アービトレーション動作は、一時的記憶装置内に維持される複数の順序付けられたリストを参照することによって、迅速に簡便に実行されてもよい。
【００２０】
特定の一実施形態において、前記インターフェースによって受信された各トランザクションについて、割り当て回路は、前記少なくとも１つの優先順位ベースで順序付けられたリストのうちの１つおよび前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つの両方に、そのトランザクションに対するエントリを割り当てるように構成される。このため、各未決着のトランザクションは、典型的には２つのエントリ、つまり、優先順位ベースで順序付けられたリスト内の１つおよびアクセスタイミングで順序付けられたリスト内の１つを有する。
【００２１】
各優先順位ベースで順序付けられたリスト内のエントリは、種々の形態を取ることができる。しかしながら、一実施形態において、各優先順位ベースで順序付けられたリスト内において、各エントリはヘッドインジケータおよびテールインジケータを含み、エントリが優先順位ベースで順序付けられたリスト内のヘッド位置にある場合はヘッドインジケータが設定され、エントリが優先順位ベースで順序付けられたリスト内のテール位置にある場合にはテールインジケータが設定される。各エントリは、優先順位ベースで順序付けられたリスト内の次のエントリへのポインタをさらに含み、次のエントリは、次のエントリを指したエントリよりもヘッド位置からより離れた位置にある。これは、優先順位ベースで順序付けられたリストのヘッドおよびテール位置において明確にフラグ設定を行いながら、各優先順位ベースで順序付けられたリストにおける種々のエントリの間の相対的な順序付けを維持するための簡便かつ効果的なメカニズムを提供する。
【００２２】
一実施形態において、各エントリは、さらに、関連付けられた未決着のトランザクションの優先順位指標を識別する。これは、新しいエントリが優先順位ベースで順序付けられたリストに割り当てられ必要がある場合に必要な割り当てプロセスに役立つ。
【００２３】
特定の一実施形態において、各エントリは、前記次のエントリに関連付けられた未決着のトランザクションの優先順位指標をさらに識別する。割り当てプロセスは、次いで、その関連付けられた未決着のトランザクションの優先順位指標と次のエントリに関連付けられた未決着のトランザクションの優先順位指標との特定の組み合わせを有する特定のエントリを見つけるために、エントリを解析することができるため、これは、割り当てプロセスにおいてさらに役立つ。
【００２４】
特に、一実施形態において、メモリコントローラは、前記インターフェースによって受信された現在のトランザクションに応答して、現在のトランザクションによって指定されたメモリアドレスを考慮して選択された前記少なくとも１つの優先順位ベースで順序付けられたリストのうちの選択された１つに前記現在のトランザクションのエントリを割り当てるために、割り当て回路をさらに含む。割り当て回路は、関連付けられた未決着のトランザクションの優先順位指標が現在のトランザクションの優先順位指標よりも大きいまたはこれと等しく、前記次のエントリに関連付けられた未決着のトランザクションの優先順位指標が現在のトランザクションの優先順位指標未満である、選択された優先順位ベースで順序付けられたリスト内のエントリを識別するように構成される。次いで、割り当て回路は、現在のトランザクションの新しいエントリを、前記識別されたエントリに隣接するが、前記識別されたエントリよりもヘッド位置からより離れるように順序付けられる、選択された優先順位ベースで順序付けられたリストに追加するようにさらに構成される。
【００２５】
上記の解析中、検討中の識別されたエントリに次のエントリがない場合、つまり識別されたエントリがリスト内のテール位置にある場合、次のエントリに関連付けられた未決着のトランザクションの優先順位指標は、適切な場合、リスト内のテール位置のエントリが、上記のメカニズムを使用して識別でき、次いで、リストの新しいテール位置を形成する位置に新しいエントリを追加できるように、現在のトランザクションの優先順位指標よりも低いものと解釈されるいくつかの所定の値に設定されてもよい。
【００２６】
一実施形態において、識別されたエントリのポインタは新しいエントリを指すように更新され、新しいエントリのポインタは、前記次のエントリを指すように構成される。
【００２７】
随意な拡張（ｏｐｔｉｏｎａｌ ｅｎｈａｎｃｅｍｅｎｔ）に従い、その次のエントリに関連付けられた未決着のトランザクションの優先順位指標を更新するように、例えばその次のエントリに関連付けられた未決着のトランザクションの上げられた優先順位を示すために、新しいエントリが挿入された時に上記の次のエントリも修正できる。例えば所定の大きさだけ優先順位指標を増加させるだけで、これを行うことができる多数の方法が存在する。しかしながら、一実施形態において、関連付けられた未決着のトランザクションの優先順位指標は、新しいエントリに関連付けられた現在のトランザクションの優先順位指標に相当するように更新される。（本明細書において「バディ(buddying)」スキームとも称される。）かかる優先順位向上技術は、より低い優先順位トランザクションの無限のブロックを防止することができるため、予測可能な待ち時間計算が可能になる。一実施形態において、新しいエントリの後の次のエントリのみに影響するように優先順位向上技術を構成することができるが、代替の実施形態において、新しく挿入されたエントリの後で１つよりも多いエントリの優先順位を上げるように使用してもよい。
【００２８】
一実施形態において、優先順位ベースで順序付けられたリスト内のテール位置に新しいエントリがある場合、割り当て回路によって、新しいエントリのテールインジケータが設定され、以前はテール位置にあったエントリのテールインジケータがクリアされる。
【００２９】
さらに、一実施形態において、関連付けられた未決着のトランザクションの優先順位指標が現在のトランザクションの優先順位指標よりも大きいまたは等しい選択された優先順位ベースで順序付けられたリスト内にエントリが存在しない場合、割り当て回路は、ヘッド位置において現在のトランザクションの新しいエントリを追加するように構成され、新しいエントリのヘッドインジケータが設定され、新しいエントリのポインタは、前はヘッド位置にあったエントリを指すように構成され、以前はヘッド位置にあったエントリはそのヘッドインジケータをクリアしている。
【００３０】
上記に記載の割り当てプロセスの実行時において、選択された優先順位ベースで順序付けられたリストは、例えば割り当てられる現在のトランザクションが、未決着のトランザクションが存在しないバンクに向けられているため、現在、エントリを有しなくてもよい。その場合、割り当て回路は、現在のトランザクションに割り当てられる新しいエントリによって、そのヘッドインジケータおよびそのテールインジケータの両方を設定するように構成されてもよく、そのエントリは、実際には、関連する優先順位ベースで順序付けられたリストを作成し、そのリストのエントリにすぎない。
【００３１】
アクセスタイミングで順序付けられたリスト内の各エントリを構成できる多数の方法が存在する。しかしながら、一実施形態において、各エントリは、優先順位ベースで順序付けられたリスト内のエントリと同様の構成を有し、その各エントリにおいて、ヘッドインジケータおよびテールインジケータを含み、エントリがアクセスタイミングで順序付けられたリストのヘッド位置にある場合にはヘッドインジケータが設定され、エントリがアクセスタイミングで順序付けられたリストのテール位置にある場合にはテールインジケータが設定され、各エントリは、アクセスタイミングで順序付けられたリストにおいて次のエントリへのポインタをさらに含み、次のエントリは、該次のエントリを指すエントリよりもヘッド位置から離れた位置にある。
【００３２】
一実施形態において、トランザクションソースによって発行されたバーストトランザクションは、メモリコントローラによって受信されてもよい。かかるトランザクションソースがバーストトランザクションに対して指定し得るバーストサイズが、メモリデバイスによって可能にされる最大バーストサイズを超え得る場合が多く、したがって、かかるバーストトランザクションは、メモリデバイスの複数のリンクバーストトランザクションに変換されてもよい。各リンクバーストトランザクションは、メモリコントローラによって別々のトランザクションとして処理される。一実施形態において、メモリコントローラ内の割り当て回路は、前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つ内のエントリに、前記リンクバーストトランザクションの最初のものを割り当て、次いで残りのリンクトランザクションの全てを、前記エントリに関連付けられたスパーリスト（spur-list:拍車リスト）のスパーリストエントリに割り当てるように、構成できる。
【００３３】
かかる方法で種々のリンクバーストトランザクションを構成することにより、アービトレーション回路が、特別な場合として、リンクバーストトランザクションを処理することを可能にする。特に、アービトレーション動作の実行時に、アービトレーション動作が最後に実行される時に選択されたウィニングトランザクションが、前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つ内にエントリを有し、そのエントリがそれに関連付けられた前記スパーリストを有する場合に、アービトレーション動作は、ウィニングトランザクションとして、前記スパーリスト内にスパーリストエントリを有するリンクトランザクションのうちの１つを選択するように構成される。かかるアプローチにより、残りのリンクバーストトランザクションの優先順位が設定される。これは、システムのその他の場所においてあてはまるため有益であり、かかるバーストトランザクションが完了するのを待ちながら特定のリソースを占有してもよく、したがって、メモリデバイスが最初のリンクトランザクションの処理によってかかるバーストトランザクションを処理開始する場合に、残りのリンクトランザクションを迅速に連続して処理できる場合に、非常に有益である。
【００３４】
一実施形態において、ウィニング要求としてリンクトランザクションの全てが選択された場合のみ、アービトレーション動作は、以降のウィニングトランザクションとして、アクセスタイミングで順序付けられたリスト内の次のエントリに関連付けられたトランザクションを選択するように構成される。
【００３５】
各バンクが複数の行を含み、複数のバンクを含むメモリデバイスの前述の例を考慮すると、次いで一実施形態において、各アクセスタイミングで順序付けられたリスト内において、各エントリは、アクセスタイミングで順序付けられたリストの指標が提供されるバンクおよび行の指標を含む。
【００３６】
各トランザクションに関連付けられた優先順位指標は、種々の形態を取ることができる。それはトランザクションの詳細から生成された非明示的な優先順位の指標（例えばトランザクションを発行するマスターデバイスの指標）であってもよいが、一実施形態において、優先順位指標は、トランザクションのフィールド内に提供される明示的な優先順位指標である。特定の一実施形態において、優先順位指標はサービスの質（ＱｏＳ）レベルの指標である。
【００３７】
存在する場合、そのアクセスタイミングで順序付けられたリストから先行するトランザクションが選択された場合にアクセスタイミングで順序付けられたリストからのウィニングトランザクションの選択に対するアービトレーション動作のバイアスを中断する所定の例外条件は、種々の形態を取ることができる。しかしながら、一実施形態において、所定の例外条件は、特定の未決着のトランザクションの優先順位指標を、高い優先順位を表すように変更する条件であり、アービトレーション回路は、その所定の例外条件の存在下で、ウィニングトランザクションとして前記特定の未決着のトランザクションを選択するように構成され、記憶装置は、複数の順序付けられたリストからそのウィニングトランザクションのためのいかなるエントリも除去するように構成される。
【００３８】
かかる条件は、例えば、特定のトランザクションで可能にされる最大待ち時間が存在し、その最大待ち時間が近づいている時に、タイムアウト条件によってトリガされてもよい。別の実施形態において、ハザードのクリアが可能になる前に特定のトランザクションを処理する必要があるシステム内の他の場所でハザード条件が検出されてもよい。
【００３９】
上記のリンクバーストトランザクションが作成され、アクセスタイミングで順序付けられたリスト内のスパーリストに割り当てられる特定の一実施形態において、次いで、アービトレーション回路は、まず、残りのリンクバーストトランザクションが、存在する所定の例外条件に応答する前にウィニング要求として選択されることを確実にし、その後に、ウィニングトランザクションとして、優先順位が最も高い未決着のトランザクションになるまで優先順位が上げられている特定の未決着のトランザクションを選択する。
【００４０】
上に記載の実施形態のメモリコントローラはいずれかのタイプのトランザクションで使用できる。例えば、かかる技術は、メモリデバイスに発行される書き込みトランザクションで利用することができる。しかしながら、一実施形態において、本技術は、メモリデバイスに発行される読み込まれたトランザクションについて利用される。読み込みトランザクションおよび書き込みトランザクションの両方を上に記載の技術に適用することができるように、別の実施形態において、上に記載されたメカニズムを再現できることが理解されよう。
【００４１】
一実施形態において、アービトレーション回路は一度に１つのアービトレーション動作のみを実行し、このため、一度に単一のウィニングトランザクションのみを選択するように構成されるが、代替の実施形態において、アービトレーション回路は、複数のアービトレーション動作を並列に実行し、このため、一度に複数のウィニングトランザクションを選択するように構成されてもよい。これは、メモリデバイスが複数のウィニングトランザクションを並列に処理することができる状況において有用である。
【００４２】
第２の態様から見ると、本発明は、メモリデバイスへのアクセスを制御する方法を提供し、メモリデバイスは、メモリアドレスのアクセスにかかる時間がメモリデバイス内の先行するアクセスアクティビティに依存するように、不均等アクセスタイミング特性を有し、方法は、少なくとも１つのトランザクションソースから発行されるトランザクションを受信することであって、各トランザクションはそのトランザクションについてアクセスされるメモリアドレスを指定し、そのトランザクションに関連付けられた優先順位指標を含む、前記受信することと、未決着のトランザクションとして、出力インターフェースからメモリデバイスへまだ出力されていないそれらの受信されたトランザクションを記憶装置内に一時的に記憶することであって、記憶装置は記憶された未決着のトランザクションのために複数の順序付けられたリストを維持し、少なくとも１つの優先順位ベースで順序付けられたリストと少なくとも１つのアクセスタイミングで順序付けられたリストとを含む、前記記憶することと、多数のエントリを有するように各優先順位ベースで順序付けられたリストを構成することであって、各エントリは未決着のトランザクションのうちの１つに関連付けられ、各エントリは関連付けられた未決着のトランザクションの優先順位指標に基づいて、その優先順位ベースで順序付けられたリスト内に順序付けられる、前記構成することと、多数のエントリを有するように各アクセスタイミングで順序付けられたリストを構成することであって、各エントリは、前記未決着のトランザクションのうちの１つに関連付けられ、未決着のトランザクションは、前記グループ内の１つのトランザクションのメモリアドレスにアクセスされると、不均等アクセスタイミング特性を考慮するメモリデバイスによって、そのメモリアドレスに効率的にアクセスすることができる、トランザクショングループを形成する各アクセスタイミングで順序付けられたリストに関連付けられる、前記構成することと、前記出力インターフェースから前記メモリデバイスに出力されるウィニングトランザクションを前記未決着のトランザクションから選択するように、前記複数の順序付けられたリストが参照されるアービトレーション動作を実行し、複数の順序付けられたリストからウィニングトランザクションのためのエントリを除去することと、を含み、アービトレーション動作が実行される場合に、最後にアービトレーション動作が実行された時に選択されたウィニングトランザクションは、少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つにエントリを有し、少なくとも１つのアクセスタイミングで順序付けられたリストはまだ非空白であり、アービトレーション動作は、所定の例外条件が存在しない限り、ウィニングトランザクションとして、その少なくとも１つのアクセスタイミングで順序付けられたリストにエントリを有する未決着のトランザクションのうちの１つを選択するように構成される。
【００４３】
第３の態様から見ると、本発明は、メモリデバイスへのアクセスを制御するためのメモリコントローラを提供し、メモリデバイスは、メモリアドレスへのアクセスにかかる時間がメモリデバイス内の先行するアクセスアクティビティに依存するように、不均等アクセスタイミング特性を有し、メモリコントローラは、少なくとも１つのトランザクションソースから発行されたトランザクションを受信するためのインターフェース手段であって、各トランザクションは、そのトランザクションのためにアクセスされるメモリアドレスを指定し、そのトランザクションに関連付けられた優先順位指標を含む、インターフェース手段と、メモリコントローラによってメモリデバイスへまだ発行されていないインターフェース手段によって受信されたそれらのトランザクションを未決着のトランザクションとして一時的に記憶するための記憶手段であって、記憶された未決着のトランザクションの複数の順序付けられたリスト手段を維持し、リスト手段は、少なくとも１つの優先順位ベースで順序付けられたリスト手段と少なくとも１つのアクセスタイミングで順序付けられたリスト手段とを含む、記憶手段とを含み、各優先順位ベースで順序付けされたリスト手段は多数のエントリを持ち、各エントリは前記未決着のトランザクションのうちの１つに関連付けられ、各エントリは、関連付けられた未決着のトランザクションの優先順位指標に基づいてその優先順位ベースで順序付けられたリスト手段内に順序付けられ、各アクセスタイミングで順序付けられたリスト手段は多数のエントリを持ち、各エントリは、前記未決着のトランザクションのうちの１つに関連付けられ、各アクセスタイミングで順序付けられたリスト手段に関連付けられる未決着のトランザクションは、グループ内の１つのトランザクションのメモリアドレスにアクセスされると、不均等アクセスタイミング特性を配慮したメモリデバイスによって、そのメモリアドレスに効率的にアクセスすることができる、トランザクショングループを形成し、前記未決着のトランザクションから、前記メモリデバイスに発行されるウィニングトランザクションを選択するように、前記複数の順序付けられたリスト手段が参照されるアービトレーション動作を実行するためのアービトレーション手段を含み、前記記憶手段は、前記複数の順序付けられたリスト手段から、前記ウィニングトランザクションに対するエントリを除去し、アービトレーション動作が実行される時に、最後にアービトレーション動作が実行された時に選択されたウィニングトランザクションは、前記少なくとも１つのアクセスタイミングで順序付けられたリスト手段のうちの１つにエントリを有し、その少なくとも１つのアクセスタイミングで順序付けられたリスト手段はまだ非空白であり、アービトレーション動作は、所定の例外条件が存在しない限り、ウィニングトランザクションとして、その少なくとも１つのアクセスタイミングで順序付けられたリスト手段内にエントリを有する未決着のトランザクションのうちの１つを選択する。
【００４４】
さらに、例示にすぎないが、添付の図面に示されるその実施形態を参照して、本発明を説明する。
【図面の簡単な説明】
【００４５】
【図１】一実施形態に従うメモリコントローラを組み込むデータ処理システムのブロック図である。
【図２】一実施形態に従う図１のＤＲＡＭメモリのブロック図である。
【図３】一実施形態に従う図１のＤＲＡＭメモリコントローラのブロック図である。
【図４Ａ】一実施形態に従う優先順位ベースで順序付けられたリストのエントリを概略的に示す。
【図４Ｂ】優先順位ベースで順序付けられたリストから形成するように順序付けられた複数のかかるエントリを概略的に示す。
【図５Ａ】一実施形態に従うアクセスタイミングで順序付けられたリストのエントリを概略的に示す。
【図５Ｂ】アクセスタイミングで順序付けられたリストを形成するように順序付けられた複数のかかるエントリを概略的に示す。
【図６】一実施形態に従う図３のリスト割り当て回路によって実行されるステップを図示する流れ図である。
【図７】図６のステップ３６５を実行するために一実施形態で実行されるステップのシーケンスを示す流れ図である。
【図８】新しいエントリが、図７の技術に従って既存の優先順位ベースで順序付けられたリストへ挿入される様子を概略的に示す。
【図９】一実施形態に従う図３のアービトレーション回路によって実行されるステップを示す流れ図である。
【図１０Ａ】一実施形態に従うリミッタ回路の動作を概略的に示す。
【図１０Ｂ】代替の実施形態に従うリミッタ回路の動作を概略的に示す。
【図１０Ｃ】代替の実施形態に従うリミッタ回路の動作を概略的に示す。
【図１１Ａ】一実施形態に従う、それぞれ、優先順位ベースで順序付けられたリストから、およびアクセスタイミングで順序付けられたリストから、エントリをポップする場合に実行されるステップを示す。
【図１１Ｂ】一実施形態に従う、それぞれ、優先順位ベースで順序付けられたリストから、およびアクセスタイミングで順序付けられたリストから、エントリをポップする場合に実行されるステップを示す。
【図１２】図１１Ａのプロセスに従う優先順位ベースで順序付けられたリストからエントリがポップされる様子を概略的に示す。
【図１３】代替の実施形態に従う、図３のリスト割り当て回路によって実行されるステップを示す流れ図である。
【図１４】図１３の読み込み向上ステップ７３０および７３５が、一実施形態に従い、優先順位ベースで順序付けられたリストのエントリに影響する様子を概略的に示す。
【図１５】一実施形態に従う、図１３のステップ７４０および７４５によって、アクセスタイミングで順序付けられたリストからスパーリストを生成できる様子を概略的に示す。
【図１６】代替の実施形態に従う、図３のアービトレーション回路によって実行されるステップを示す流れ図である。
【発明を実施するための形態】
【００４６】
図１は、相互接続回路３０を介して、多数のスレーブデバイス５５、６０と結合される複数のマスターデバイス１０、２０を含むデータ処理システムのブロック図である。スレーブデバイスのうちの１つは、ＤＲＡＭメモリコントローラ５０を介して相互接続３０に結合されるＤＲＡＭメモリデバイス５５である。
【００４７】
相互接続回路３０は、トランザクションを実行することを可能にするために、多数の接続パス３５を介してマスターデバイスおよびスレーブデバイスを結合する。各トランザクションは、マスターデバイスからスレーブデバイスへのアドレス転送、およびマスターデバイスおよびスレーブデバイスの間の１つ以上のデータ転送で構成される。相互接続３０内のトランザクションの取り扱いのために使用されてもよい多数の公知のプロトコルが存在する。例示を目的として、以下に記載される実施形態では、相互接続回路は、別々のアドレスチャネルおよびデータチャネルが提供される分割トランザクションプロトコルを利用し、データ転送のタイミングが、特定のトランザクションのアドレス転送のタイミングと分離されていると想定される。一特定の実施形態において、相互接続回路はＡＸＩプロトコルに従って動作し、相互接続回路の接続パス３５は５つのチャネル、すなわち読み込みアドレスチャネル、書き込みアドレスチャネル、読み込みデータチャネル、書き込みデータチャネル、および書き込み応答チャネルを提供する。
【００４８】
アドレス転送の発行によって各マスターデバイスがトランザクションを開始する時に、そのマスターデバイスは、典型的には、トランザクションを識別するためにアドレス転送を有するトランザクション識別子を発行するため、それらのデータ転送をアドレス転送と一致させるために、トランザクションのデータ転送と関連させて前記トランザクション識別子を使用できる。
【００４９】
相互接続回路３０の制御回路４０内において、ＩＤ追加／除去回路は、異なるマスターデバイスからのそのトランザクションを相互接続回路３０内で一意に識別することを確実にするように提供されてもよい。例えば、応答をそのマスターデバイスに戻すルーティングを可能にすることができるマスター番号を有するそのトランザクション識別子を拡張するように、関連付けられたマスターデバイスによって発行される各トランザクション識別子について、かかるＩＤ追加および除去回路を構成してもよい。同様に、転送がマスターデバイスに再びルーティングされる場合に、ＩＤ追加／除去回路は、応答転送が関連付けられたマスターデバイス１０、２０に戻る前にマスター番号を取り除く。応答を適切なマスターデバイスに戻すルーティングを可能にするだけでなく、相互接続回路３０内の新しい形態のトランザクション識別子を形成するためのマスター番号を有するトランザクション識別子の拡張子は、さらに、異なるトランザクション識別子を有するトランザクションを再順序付けする能力を有するスレーブデバイス５０、５５、６０が、これらがもともと同じトランザクション識別子を有する場合であっても、異なるマスターデバイスからのトランザクションを再順序付けすることができるという結果を有する。
【００５０】
相互接続３０の制御回路４０は、さらなる機能を含んでもよいことがさらに理解されよう。例えば、潜在的なデッドロック条件を検出するために、可能な場合、デッドロックによって、同時に進行させることができるトランザクションのシーケンスを検出するために、およびかかるデッドロックの発生を回避するために、相互接続３０内に周期性従属性回避スキーム（ＣＤＡＳ:cyclic dependency avoidance scheme）制御回路が提供されてもよい。制御回路４０は、かかるハザード(hazard)条件が正しく処理されることを目的に、種々のハザード条件、例えば書き込みハザード後の読み込みを監視するためにスコアボーディングおよびハザード検知回路をさらに含んでもよい。これは、例えば、以前のトランザクションが完了するまでの１つのトランザクションの前方への伝播の停止を伴ってもよい。
【００５１】
ＤＲＡＭメモリコントローラ５０を考慮すると、上記の記載から、ＤＲＡＭメモリコントローラ５０はトランザクションのストリームを受信し、各トランザクションは典型的にはトランザクション識別子を有することが理解されよう。以下により詳細に記載されるように、本明細書に記載されたＤＲＡＭメモリコントローラの実施形態に従い、ＤＲＡＭメモリコントローラは、ＤＲＡＭ５５のアクセス時間を向上させることを目的として、それらのトランザクションを再順序付けすることができる。ＤＲＡＭメモリコントローラは、相互接続３０によって使用されるトランザクションプロトコルの順序付けの制約に従うように、相互接続回路３０への出力前に応答を再順序付けすることを確実にできるように、いくつかの内部バッファリングを含む。例えば、これは同じトランザクション識別子を有するトランザクションで必要であってもよく、スレーブから戻る応答は順序通りに戻る必要があり、このため、ＤＲＡＭ効率を向上させるためのかかるトランザクションに関してローカルで実行される再順序付けは、相互接続３０への応答転送の出力前に逆の方向にする必要がある。
【００５２】
トランザクションの別のプロパティは、トランザクションの明示的なフィールドとして、またはトランザクションから決定することができるいくらかの干渉のために優先順位指標を含んでもよい（例えばマスター１１０によって発行されるトランザクションがマスター２２０によって発行されるトランザクションよりも高い優先順位を有することが理解され得る）。本明細書に記載された特定の一実施形態において、各トランザクションは、サービスの質（ＱｏＳ）指標の形態の明示的な優先順位指標を含む。本明細書に記載された技術に従い、ＤＲＡＭメモリコントローラ５０は、ＤＲＡＭ５５へのアクセス時間を向上させるように、しかし一方で、それらのＱｏＳ指標を考慮してトランザクションが適切にサービスされることを確実にするように、トランザクションのＱｏＳレベル指標を考慮しながら、トランザクションを再順序付けすることを試みる。
【００５３】
図２は、一実施形態に従う図１のＤＲＡＭ５５を概略的に示す。ＤＲＡＭ５５は、複数のバンク１３０、１３５、１４０で構成され、各バンクは複数の行で構成される。各バンクに関連付けられ、ＤＲＡＭメモリコントローラ５０によって発行されるアクセスコマンドに応答するアクセス回路１００、１１０、１２０が提供される。各アクセス回路１００、１１０、１２０は、関連付けられたバンクから少なくとも１つのデータ行を記憶するための行バッファ１０５、１１５、１２５を含む。行内のデータ値にアクセスするために、その行はまず、メモリコントローラから発行されたＲＡＳコマンドを介して関連行バッファに移動させる必要があり、かかるＲＡＳコマンドは、本明細書においてアクティブコマンドとも称される。行バッファに行が記憶されると、次いで、その行内の個々のメモリアドレスは、メモリコントローラから発行されるＣＡＳコマンドを介してアクセスすることができる。最終的には、行へのアクセスが完了する場合、または新しい行にアクセスする必要がある場合、メモリコントローラからプリチャージコマンドが発行され、行バッファ内の行の現在のコンテンツを、ＤＲＡＭ５５内における関連付けられたバンクに再び記憶させる。
【００５４】
このため、そのコンテンツに以降アクセスすることができるように、行を活性化する際に生じる、多大なアクセス時間ペナルティ、および現実の電力消費ペナルティが存在し、したがって、行が活性化された後、したがって、行バッファ内にコンテンツが記憶された後で、行のコンテンツが以降はバンクに戻される前に、その行のメモリアドレスに対する複数のアクセスが実行されると有利であることが理解される。以下により詳細に記載されるように、記載された実施形態のＤＲＡＭメモリコントローラはこれを実現するためにトランザクションの再順序付けを実行することができ、これによりアクセス時間および電力消費を低減することができるが、かかる再順序付けがトランザクションのＱｏＳ要件に悪影響を及ぼさないことを確実にするように、さらに、トランザクションに関連付けられた優先順位指標を考慮する。
【００５５】
図３は、一実施形態に従う図１のＤＲＡＭメモリコントローラ５０を概略的に示す。相互接続３０から受信された入力トランザクションは、いくつかのローカル再順序付け制御回路２１０を含んでもよい入力インターフェース２００に提供される。この再順序付け制御回路２１０は、これらのトランザクションをＤＲＡＭメモリによって順序に関係なく扱うために、例えば、実際に、同じトランザクション識別子を有する複数のトランザクションを切断するように、入力トランザクションのトランザクション識別子を変更してもよい。しかしながら、この実施形態では、相互接続３０が同じトランザクション識別子を有するトランザクションのＤＲＡＭからの応答が順序通りに返ることを必要とすると想定されるため、これらのトランザクションを、相互接続３０に再びいずれかの応答が出力される前に再び順序付けることが必要となる。したがって、応答データが相互接続３０に出力される前にローカル再順序付けを可能にするように、再順序付け制御回路２１０内にデータバッファ２１５を提供できる。
【００５６】
一実施形態において、書き込みトランザクションに関連して、以下に記載される技術を利用できるが、図３の例示を目的として、入力トランザクションは全て読み込みトランザクションであり、したがって、相互接続回路への応答出力は読み込みデータであると想定される。書き込みトランザクションについて、応答は、書き込み応答チャネルに提供される状態の情報となる。読み込みトランザクションおよび書き込みトランザクションの両方についての技術を利用することが望ましい場合、図３に示される回路を全体的または部分的に複製することができるため、読み込みトランザクションに一組の回路が提供され、書き込みトランザクションに複製された一組の回路が提供される。
【００５７】
図３に示されるように、インターフェース２００は、随意に、バーストフォーマット化回路２０５を含んでもよい。特に、マスターデバイス１０、２０のうちの１つは、ＤＲＡＭメモリのアクセスに許可されるバースト長を超えるバースト長を有するバーストトランザクションを発行してもよい。したがって、インターフェース２００によって受信されたかかるバーストトランザクションは、バーストフォーマット化回路２０５によって複数のリンクバーストトランザクションに変換されてもよく、各リンクバーストトランザクションはメモリコントローラによって別々のトランザクションとして処理される。再順序付け制御回路２１０からの各リンクバーストトランザクションについて、内部トランザクション識別子を提供することができる。
【００５８】
ＤＲＡＭメモリコントローラ５０は、メモリコントローラ５０によってＤＲＡＭ５５へまだ発行されていないインターフェース２００によって受信されたトランザクションを、未決着のトランザクションとして一時的に記憶するための未決着のトランザクションバッファ２３０を含む。各トランザクションの関連する詳細を維持するだけではなく、未決着のトランザクションバッファ２３０は、一組の重複した順序付けられたリスト２３５を維持し、これらのリストは、少なくとも１つの未決着のトランザクションが存在する各バンクに対して優先順位ベースで順序付けられたリスト（かかる優先順位ベースで順序付けられたリストは本明細書においてＱｏＳリストと称される）、および少なくとも１つの未決着のトランザクションが存在する各バンクの各行に対してアクセスタイミングで順序付けられたリストを含む（かかるリストは本明細書において行ヒットリストと称される）。各トランザクションはインターフェース２００によって受信されるため、これは、順序付けられたリスト２３５のうちの少なくとも１つ内のエントリにその未決着のトランザクションを割り当てるように構成される、リスト割り当て回路２２０に受け渡される。特に、一実施形態において、リスト割り当て回路２２０は、関連ＱｏＳリストおよび関連行ヒットリストの両方内のエントリに、各未決着のトランザクションを割り当てる。リストおよびリスト割り当て回路２２０の動作のさらなる詳細を、残りの図を参照して後述する。
【００５９】
一実施形態において、バッファ２３０は、複数のバッファエントリを含み、各バッファエントリは未決着のトランザクションの詳細を記憶するために使用される。各バッファエントリに関連付けられた情報は、次いで、関連のＱｏＳリストおよび行ヒットリスト内の関連付けられたトランザクションの位置を記載するように使用される。次いで、リストそれ自体が仮想リストになる。
【００６０】
ＤＲＡＭメモリ５５に新しいトランザクションを発行することが必要な場合、例えばＤＲＡＭメモリ５５が新しいトランザクションを処理する能力を有するとメモリコントローラ５０が決定するため、アービトレーション回路２４０は、未決着のトランザクションから、ＤＲＡＭ５５に発行されるウィニングトランザクションを選択するように複数の順序付けられたリスト２３５が参照される、アービトレーション動作を実行するように構成される。アービトレーション回路の動作は、以下により詳細に記載されるが、一般的に、アービトレーション回路によって実行されるアービトレーション動作は、最後のウィニングトランザクションがその行ヒットリストから選択される場合に、行ヒットリストのうちの１つからエントリを選択し続けるという偏りがある。しかしながら、個々のトランザクションに関連付けられたＱｏＳレベルを考慮するように、特定の条件によって、アービトレーション回路をその自然なバイアスから偏向させる。
【００６１】
アービトレーション回路２４０によって選択される各ウィニングトランザクションの詳細が、トランザクションを記憶するためにローカルバッファ２５５および各トランザクションを実行するようにＤＲＡＭに対するコマンドのシーケンスを作成するためのＤＲＡＭスケジューラー２６０を含む、メモリインターフェース２５０に出力される。各トランザクションによって必要なアクセスを実行するにはＤＲＡＭスケジューラーから複数のコマンドを発行することが必要であり得るため、典型的にバッファ２５５が必要であり、インターフェースに加えて、ＤＲＡＭスケジューラー２６０とＤＲＡＭ５５との間のパスは、クロックサイクル毎にシングルコマンドのみを発行できるようにされてもよい。このため、メモリインターフェース２５０による実行プロセスにおいて複数のトランザクション、例えばＤＲＡＭの異なるバンクに向けられたトランザクションが存在してもよく、これらのトランザクションの実行に必要な種々のコマンドは、必要なアクセス回路１００、１１０、１２０の可用性を考慮して、ＤＲＡＭスケジューラー２６０によってスケジュールされる。
【００６２】
前述のように、ＤＲＡＭスケジューラー２６０によって発行されるコマンドは、行をアクティブ化するためのＲＡＳコマンド、行内の特定のメモリアドレスにアクセスするための一連のＣＡＳコマンド、およびＤＲＡＭの関連行に再び行バッファのコンテンツを記憶するためのプリチャージコマンドを含んでもよい。一連のトランザクションが、全てが同じ行にアクセスするメモリインターフェースによって扱われるように、トランザクションを再順序付けすることができる場合、これらのトランザクションのうちのいくつかは、先行するトランザクションとの関連において必要なＲＡＳコマンドが既に発行されているため、必要なアクセスを実行するために、相当するＣＡＳコマンドをＤＲＡＭスケジューラー２６０から発行することのみが必要になる。さらに、以降のトランザクションが同じ行へアクセスするためのものでもある場合、次いで、現在のトランザクションにはプリチャージコマンドは不要である。
【００６３】
一実施形態において、相互接続回路３０の外側において、（図１に概略的に示されるように）図３に示されるコンポーネントの全てを提供してもよいが、特定の実施形態において、ＤＲＡＭメモリコントローラ５０のコンポーネントのうちの１つ以上を、相互接続３０のインターフェースブロックの一部として、相互接続３０の内部に提供してもよいことが理解されよう。例えば、一実施形態において、メモリインターフェース２５０以外のコンポーネントの全てが、相互接続３０内に提供されてもよく、一方で、メモリインターフェース２５０のみが相互接続３０とＤＲＡＭ５５との間のインターフェースの外側に提供される。しかしながら、図３に示されるコンポーネントがデータ処理システム内に物理的に常駐するかどうかにかかわらず、これらのコンポーネントは、ＤＲＡＭ５５の「メモリコントローラ」と総称される。
【００６４】
前述のように、未決着のトランザクションバッファ２３０内に維持される一タイプのリストはＱｏＳリストであり、各ＱｏＳリストは多数のＱｏＳリストエントリで構成される。各ＱｏＳリストエントリは、図４Ａのエンティティ３００によって概略的に示される形態を取る。図４Ａで使用される用語は以下の意味を持つ。
Ｐｔｒ：指定されたバンクに対してＱｏＳで順序付けられたリストにおける次のアイテムに対するポインタ
バンク：このエントリに記憶されたトランザクションの対象となるバンク
ＱｏＳ：このエントリに記憶されたトランザクションに対するＱｏＳ値
ｐＱｏＳ：Ｐｔｒによって指されるエントリ（「次のエントリ」）に記憶されたトランザクションのＱｏＳ値
Ｖ：エントリは有効である（つまりまだ処理されていないトランザクションを含む）
Ｌ：エントリが指定されたバンクリストの最後の（テール）トランザクションを含むことを示すように設定
Ｆ：エントリが指定されたバンクリストの最初の（ヘッド）トランザクションを含むことを示すように設定
【００６５】
さらに、各エントリ３００内のボックス３０５によって識別された番号は、トランザクションの詳細がバッファ２３０内に記憶される位置を識別する。
【００６６】
バンク１の例示的な投入されたＱｏＳリストは、したがって、図４Ｂのリスト３１０によって概略的に示される形態を取ってもよい。図４Ｂで見られるように、ＱｏＳリスト３１０は、多数のサブリスト３１１、３１２、３１３、３１４で形成されると考えることができる。各サブリスト内において、各エントリは同じＱｏＳ指標を有し、各サブリスト内のエントリの相対的な順序付けは、メモリコントローラ５０のインターフェース２００によるこれらのトランザクションの一時的な受信順序に基づく。図４Ｂに示されるように、サブリスト３１１内の唯一のエントリは、それがＱｏＳリスト３１０に対するヘッドトランザクションであることを示すように設定されたその最初フラグを有し、同様に、サブリスト３１４内の最後のトランザクションは、それが特定のＱｏＳリストのテールトランザクションであることを示すように設定されたその最後のフィールドを有する。
【００６７】
さらに上述のように、未決着のトランザクションバッファ２３０内で維持される別のタイプの順序付けられたリストは行ヒットリストであり、一実施形態の行ヒットリスト内の各エントリは、図５Ａに示されるエントリ３２０の形態を取る。図５Ａのエントリ３２０で使用される用語のそれぞれの意味は以下の通りである。
ＨＰｔｒ：ヒットポインタ。行ヒットリスト内の次のアイテムを指す（後述するインバーストヒットを除く）
バンク：このエントリに記憶されたトランザクションの対象となるバンク
行：このエントリに記憶されたトランザクションの対象となる行
Ｔ：エントリが指定された行ヒットリストに対してテールトランザクションを含むことを示すように設定
Ｈ：エントリが指定された行ヒットリストに対してヘッドトランザクションを含むことを示すように設定
ＩＢ：エントリが規則的な行ヒットではなくインバースト行ヒットを含むことを示すように設定
【００６８】
新しい未決着のトランザクションが未決着のトランザクションバッファ２３０に割り当てられる時に、行ヒットリストテールとしてマークされる一致するバンク／行を有する記憶されたトランザクションが既に存在する場合に、新しいトランザクションに対するエントリが、新しいテールを形成するためにそのリストに押し出される。押し出されない場合には、新しい行ヒットリストを形成するためにエントリが割り当てられる。バンク１、行４に対する投入された行ヒットリストの一例は、このため、リスト３３０として図５Ｂに概略的に示される形態を取ってもよい。
【００６９】
図６は、一実施形態に従う図３のリスト割り当て回路２２０の動作を示す流れ図であり、この実施形態では、インバースト行ヒットフィールドＩＢは使用されないと想定される。ステップ３５０において、リスト割り当て回路２２０は割り当てる新しいトランザクションを受信し、そのトランザクションは、バンクＡ、行Ｂに向けられ、ＺのＱｏＳ値を有する。ステップ３５５において、バンクＡのＱｏＳリストが既に存在するかどうか、つまりバンクＡに向けられている他の未決着のトランザクションが存在するかどうかが決定される。存在しない場合、次いでプロセスはステップ３７５に進み、ここで、バンクＡの新しいＱｏＳリスト内にエントリが作成され、そのエントリの最初および最後フラグが共に設定される。バンクＡのＱｏＳリストが存在しない場合には、バンクＡ、行Ｂの行ヒットリストも存在しないことであり、したがって、ステップ３７５が実行される場合に、プロセスは、さらにステップ３９０を実行し、ここで、バンクＡ、行Ｂの行ヒットリスト内にエントリが作成され、そのエントリのヘッドとテールの両フラグが設定される。
【００７０】
ステップ３５５において、ＱｏＳリストがバンクＡに存在しないことが決定され、次いでステップ３６０において、現在のトランザクションのＱｏＳ値ＺがバンクＡのＱｏＳリスト内の最も高い優先順位のエントリ、つまりその最初のフィールドが設定されたエントリのＱｏＳ値よりも大きいかどうかが決定される。大きい場合には、次いでこれは、ＱｏＳリストのヘッド位置に新しいトランザクションを追加するべきであることを示し、したがって、プロセスはステップ３７０に進み、ここで、既存のＱｏＳリストのヘッドにエントリが作成され、そのエントリはそのＱｏＳリストの以前のヘッドから最初フラグを継承する。しかしながら、ＱｏＳ値ＺがバンクＡのＱｏＳリスト内の最も高い優先順位のエントリのＱｏＳ値よりも大きくないと想定すると、次いでプロセスは、ステップ３６５に進み、ここでエントリが作成され、バンクＡのＱｏＳリスト内の適切な位置に配置される。図６のステップ３６５を実行する１つの方法について、図７を参照して後述する。
【００７１】
ステップ３６５またはステップ３７０の後で、バンクＡおよび行Ｂの行ヒットリストが存在するかどうかがステップ３８０において決定される。そうでない場合には、プロセスはステップ３９０へと分岐するが、バンクＡ、行Ｂで使用できる行ヒットリストが既に存在すると想定すると、プロセスはステップ３８５に進み、その行ヒットリストのテールにおいて新しいエントリが作成され、そのエントリは以前のテールエントリからテールフラグを継承する。
【００７２】
図７は、一実施形態に従う図６のステップ３６５を実行するために使用可能な一連のステップを示す流れ図である。ステップ４００において、パラメーターＮは０と等しくなるように設定され、その後ステップ４０５においてエントリＮのＱｏＳレベルがＱｏＳ値Ｚより大きいまたはこれと等しいかどうか、さらにエントリＮで識別されたｐＱｏＳ値がＱｏＳ値Ｚ未満であるかどうかが決定される。そうではない場合、次いでステップ４１０において最後のＱｏＳリストエントリが解析されたかどうかが決定され、そうでない場合にはステップ４１５においてパラメーターＮが増分され、プロセスがステップ４０５に返る。特定のエントリについて、ステップ４０５で設定された条件に適合すると決定されると、プロセスは、ステップ４２０に進み、ここでＱｏＳリスト内のエントリＮの直後にエントリが作成される。ステップ４０５の条件がリスト内の一エントリについて常に適合できるように、リスト内の最後のエントリは、常にＱｏＳ値Ｚ未満であると考えられるある所定の値に設定されるｐＱｏＳ値を有することができる。例えば、図４Ｂを参照すると、かかる所定のレベルは、ＱｏＳリストのテールエントリ内の記号「Ｘ」によって示される。
【００７３】
ステップ４２０においてエントリを作成するだけでなく、ステップ４２５において適切である場合に最後フラグが設定され（典型的にはこれは、エントリＮから最後フラグを継承することによって行うことができる）、さらに、ステップ４３０においてエントリＮに対するポインタおよびｐＱｏＳ値が更新される。
【００７４】
このプロセスは図８に概略的に示されており、ここで図４Ａに示されるエントリは、修正されたＱｏＳリスト４５０を作成するように、新しいエントリ４５５として図４ＢのＱｏＳリスト３１０内に挿入される。特に、割り当てられる新しいトランザクションのＱｏＳ値Ｚはこの場合「４」であり、このためエントリ４５７は、それは（図４ＢのＱｏＳリスト３１０内の相当するエントリから明らかなように）４のＱｏＳ値および１のｐＱｏＳ値を最初に有するため、図７のステップ４０５の条件に適合するエントリＮとして識別される。したがって、エントリ４５７から元のポインタ値を継承する新しいエントリ４５５が割り当てられ、一方で、新しいエントリ４５５を指すようにエントリ４５７が修正される。さらに、エントリ４５７に記憶されたｐＱｏＳ値は、次のエントリ４５５のＱｏＳ値を正しく識別するように、「１」から「４」へと更新される。新しいエントリ４５５はＱｏＳリスト内の最後のエントリではないため、その最後フラグは設定されない。
【００７５】
上に記載の実施形態は、図７および８を参照し、図６のステップ３６５を実行するための適した１つのメカニズムを記載しているが、各エントリは、割り当てプロセスを簡略化および高速化するために、ＱｏＳおよびｐＱｏＳの両方の値を維持しており、所望の場合、他の技術も利用できることが理解されよう。例えば、所望の場合、テーブルウォークプロセス(table walk process)を使用できる。
【００７６】
図９は、一実施形態に従う図３のアービトレーション回路２４０によって実行されるアービトレーション動作を示す流れ図である。新しいトランザクションをメモリインターフェース２５０への受け渡しのために選択することが必要な場合、ステップ５００においてアービトレーション動作が開始し、その後ステップ５０５において、リミッタ信号が設定されたかどうかが決定される。この信号については、図１０Ａから図１０Ｃを参照して後で詳述する。しかしながら、そのリミッタ信号が設定されない限り、プロセスは、ステップ５１０に進み、ここで、以前に調停されたエントリ（つまりアービトレーション動作が最後に実行されたより前のウィニング要求に相当するエントリ）がその行ヒットリストのテールとしてマークされたかどうかが決定される。マークされていない場合、これは、関連行ヒットリストがまだ空白ではないことを示し、したがって、プロセスはステップ５２０へと分岐し、ここでアービトレーション動作によって選択されるエントリは、以前に調停されたエントリのヒットポインタによって指される行ヒットリスト内のそのエントリである。
【００７７】
しかしながら、ステップ５１０において、以前に調停されたエントリがその行ヒットリストのテールとしてマークされたことが決定される場合、プロセスはステップ５１５に進み、ここで、関連バンクＱｏＳリストのヘッドのエントリが次のウィニングエントリとして選択される。関連バンクについて、メモリインターフェース２５０は、典型的には、アービトレーション回路２４０に対して、新しいトランザクションを受信できるバンクを識別する。このため、典型的にはステップ５１５において考慮される単一のＱｏＳリストのみが存在する。
【００７８】
ステップ５１５またはステップ５２０の後、プロセスはステップ５２５に進み、ここで選択されるエントリがＱｏＳリストおよび行ヒットリストからポップされ、このプロセスは、図１１Ａおよび図１１Ｂを参照して後述される。
【００７９】
図１０Ａは、一実施形態で使用されてもよいリミッタ回路５５０の例を概略的に示す。一特定の実施形態において、リミッタ回路は各バンクに対して別々に提供され、アービトレーション回路２４０の一部を形成すると考えられる。各リミッタ回路は、関連付けられたバンクのウィニングトランザクションが行ヒットリストから選択される度に増分されるカウンタ５５５を含む。さらに、ウィニングトランザクションがそのバンクのＱｏＳリストから選択される度に、カウンタがリセットされる。カウンタ５５５によって維持されるカウント値が所定の閾値に達すると、リミッタ信号が設定される。図９のステップ５０５を参照すると、リミッタ信号が設定される時に、最後のウィニングトランザクションがテール位置ではない行ヒットリストエントリによるものである場合であっても、次のウィニングトランザクションが行ヒットリストではなくＱｏＳリストから選択されるように、プロセスをステップ５１５に直接進ませることが理解される。かかるアプローチにより、特定のバンク内の特定の行に対する多数の未決着のトランザクションの存在下においても、その他のトランザクションのＱｏＳレベルが考慮されるため、特定の行に対する多数の未決着のトランザクションの存在下において、高い優先順位のトランザクションが許容不可能な度合まで遅延することがないようにする。
【００８０】
図１０Ｂは、簡単なカウンタの代わりに、いくつかの利益解析機能５６５を実行するための回路が使用されるリミッタ回路の代替例を示す。図１０Ａのカウンタ５５５によって受信された信号に加えて、利益解析機能５６５は、関連バンクに対してＱｏＳリストのヘッドエントリに関連付けられたＱｏＳ値の指標を受信する。ＤＲＡＭメモリの性質のために、図１０Ｃ等のグラフは、特定の行においてメモリアドレスへの連続的なアクセスの行ヒットの利益を識別して形成することができる。アクセスが可能になる前に行をアクティブ化する必要があり、典型的にはその行を再びプリチャージする前に必要な所定の遅延も存在するため、初期における行ヒットの利益は非常に大きい。このため、その期間において、グラフは、図１０Ｃに示される水平の形式を取る。しかしながら、その初期の期間の後で、特定の行内の複数のアクセスにおいて償却されるオーバーヘッドのために、曲線状のグラフ５７０が示すように、利益はゆっくりと低下していく。したがって、図１０Ｃのグラフは、つまり特定の行への連続アクセスに関連付けられた低下する優先順位スケールに変換することができる。つまり、連続するアクセス数が増加すると、それらのアクセスに関連付けられた効果的なＱｏＳ値は減少する。したがって、いくつかのポイントにおいて、その疑似ＱｏＳ値はＱｏＳリストのヘッドに関連付けられたＱｏＳ値未満のレベルに落ち込み、そのポイントにおいて、次のウィニングトランザクションが行ヒットリストからの代わりにバンクＱｏＳリストのヘッドから選択されるように、リミッタ信号を設定できる。
【００８１】
図１１Ａは、ＱｏＳリストからエントリをポップするように、図９のステップ５２５において実行されるステップを表す流れ図である。ステップ６００においてそのかかるエントリをポップすることが必要であると決定される場合、プロセスはステップ６０５に進み、ここで、ポップされるエントリがＱｏＳリストのヘッドにあるかどうかが決定される。これは、図９のステップ５１５の実行の結果として図９のステップ５２５に達した場合には明らかにあてはまるが、図９のステップ５２０によってステップ５２５に達した場合には必ずしもあてはまらない。特に、行ヒットリストからエントリが選択される場合、バンクＱｏＳリスト内のその相当するエントリは、そのバンクＱｏＳリスト内のいずれの位置であってもよい。
【００８２】
ステップ６０５において、ポップされるエントリがＱｏＳリストのヘッドにあると決定される場合、プロセスはステップ６１０に進み、ここで、ポップされたエントリによって指されるエントリに最初フラグが設定される。さらに、ポップされているエントリの有効フラグが、そのエントリがもう有効ではないことを示すためにクリアされる。ポップされるべきエントリがＱｏＳリストのヘッドにない場合、プロセスはステップ６１５に進み、ここで、ポップされたエントリを指すエントリは、ポップされたエントリのポインタ、ポップされたエントリのｐＱｏＳ値およびポップされたエントリの最後フラグ状態を継承する。再び、ポップされているエントリの有効フラグが、そのエントリがもう有効ではないことを示すためにクリアされる。
【００８３】
ステップ６１５において実行されるプロセスが図１２に概略的に図示されており、ここで、ＱｏＳリスト４７０内のエントリ４７７がポップされ、その結果として、以前はエントリ４７７を指していたエントリ４７５は、そのポインタをエントリ４７８に指すように更新し、そのｐＱｏＳ値をエントリ４７８のＱｏＳ値を反映するように更新する。ポップされたエントリ４７７はその最後フラグを設定しておらず、エントリ４７５も、その最後エントリを設定していない。
【００８４】
図１１Ｂは、行ヒットリストからエントリをポップする場合に実行される相当するステップを示す。図１１Ｂの図１１Ａとの比較に見られるように、プロセスは概して同じである。ポップされたエントリが行ヒットリストのヘッドにある場合、次いで、ステップ６６０において、ポップされたエントリによって指されるエントリ内のヘッドフラグが設定される。しかしながら、ポップされたエントリが行ヒットリストのヘッドにない場合、ステップ６６５において、ポップされたエントリを指すエントリはポップされたエントリのポインタおよびテールフラグ状態を継承する。
【００８５】
図１３は代替の実施形態に従う図３のリスト割り当て回路２２０によって実行されるステップを図示する流れ図である。上記の図６を有する図１３と比較して、図１３のステップ７００〜７２５および７５０〜７６０は、それぞれ、図６のステップ３５０〜３７５および３８０〜３９０に相当するため、これらのステップについてはさらに記載されないことが理解されよう。しかしながら、図１３の流れ図において、４つの追加のステップすなわちステップ７３０〜７４５が実行される。
【００８６】
特に、図１３において、ＱｏＳリストは、有効または無効にすることができる読み込み向上（escalation）機能を含み、この読み込み向上機能は、さらに、バディス(budding:発芽)スキームと称される。読み込み向上機能が有効ではない場合、プロセスはステップ７４０に進む。しかしながら、読み込み向上機能が有効にされている場合、プロセスはステップ７３５に進み、ポイントされたエントリのＱｏＳ値はＱｏＳ値Ｚと等しくなるよう増加される。これは、図８を参照して上述されているものと同じ割り当てを示す図１４に概略的に示されているが、さらに、読み込まれた向上機能の効果を示す。特に、新しいエントリ４５５が導入される場合、次のエントリ４６０のＱｏＳ値は、新しいエントリのＱｏＳ値と等しくなるように増加する、つまり４のＱｏＳ値を示す。そのため、挿入されたエントリ４５５内で識別されたｐＱｏＳ値は値４をとる。そうでない場合には、プロセスは図８を参照して前述されるものと全く同じである。かかるアプローチの利点は、新しいエントリがＱｏＳリスト内のエントリ４６０の前に挿入された場合にエントリ４６０がその優先順位を上げることであり、そのために、これは、より低い優先順位のトランザクションの無限のブロックを防止することができるため、予測可能な待ち時間計算を可能にする。図１３に記載される実施形態において、ポイントされたエントリのＱｏＳ値はＱｏＳ値Ｚと等しくなるように更新されるが、これは必要条件ではなく、読み込み向上スキームの代替の実施形態において、ポイントされたエントリのＱｏＳ値をある所定の大きさだけ増加させることのみで十分であることが理解されよう。
【００８７】
ステップ７４０および７４５は、上述のリンクバーストトランザクションを処理する。特に、一実施形態において、行ヒットリストは、１つ以上のスパーリストをサポートするように構成することができ、各スパーリストはリンクバーストトランザクションを識別する多数のスパーリストエントリを有する。このため、ステップ７４０において、割り当てられる新しいトランザクションが、リンクバーストトランザクションであり、以前のそれに関連付けられたリンクバーストトランザクションがバンクＡ、行Ｂの行ヒットリスト内のエントリを既に割り当てられているバーストトランザクションであるかどうかが決定される。あると決定される場合、プロセスは、ステップ７４５に進み、ここでバンクＡ、行Ｂの行ヒットリストからスパーリスト上にスパーリストエントリが作成され、そのエントリはＩＢフラグを設定することによって、「インバースト（in-burst）」としてマークされる。これは、行ヒットリスト４８０について図１５に概略的に示される。特に、最初のリンクバーストランザクションが行ヒットリスト４８０内のエントリ４８５に割り当てられる。しかしながら、以降のリンク各バーストトランザクションは、スパーリスト内のスパーリストエントリ４８７、４８９に割り当てられる。かかるスパーリストエントリは、例えば図１６を参照して記載されるように、アービトレーション中に異なる方法で処理することができる。
【００８８】
特に、図１６は、代替の実施形態に従う図３のアービトレーション回路２４０によって実行されてもよいアービトレーション動作を示す。上記の図９と比較して、ステップ８２５〜８４５は図９のステップ５０５〜５２５に相当し、したがって、さらに本明細書に記載されないことが理解されよう。しかしながら、ステップ８２５の前に、多数のさらなるステップが実行される。特に、ステップ８０５において、そのインバーストフラグを設定するスパーリストエントリが以前に調停されたエントリを指すかどうかが決定される。このため、図１５を参照して、以前に調停されたエントリがエントリ４８５である場合、これは、エントリ４８７がそれを指すことになる。同様に、以前に調停されたエントリがエントリ４８７である場合、これは、エントリ４８９がエントリ４８７を指すことになる。
【００８９】
この条件に適合する場合は常に、プロセスはステップ８１０へと分岐し、ここで、インバーストフラグを設定するスパーリストエントリがウィニングトランザクションを識別するために選択され、その後、ステップ８４５において、選択されたエントリが行ヒットリストからポップされる（およびその相当するエントリは関連ＱｏＳリストからポップされる）。
【００９０】
しかしながら、ステップ８０５において識別されたかかるスパーリストエントリが存在しないと想定して、プロセスはステップ８１５に進み、ここで、ＴｉｍｅｄＯｕｔフラグが設定されたトランザクションが存在するかどうかが決定される。特に、この実施形態では、所定の例外条件の一例としてＴｉｍｅｄＯｕｔフラグが使用され、所定の例外条件の存在を識別するためにＴｉｍｅｄＯｕｔフラグが設定される場合には、通常のアービトレーションプロセスは実行されず、代わりにプロセスはステップ８２０へと分岐する。ＴｉｍｅｄＯｕｔフラグは、種々の理由により設定することができる。しかしながら、一実施形態において、データ処理システム内の他の場所の要素は、そのトランザクションの待ち時間の上限に達している、またはそのトランザクションが処理されるまで種々の他のトランザクションを処理できない等のために、特定のトランザクションになるべく早い処理が必要であることを識別してもよい。したがって、これらの要素は、そのトランザクションの優先順位を上げる制御信号を発行することにより、ＴｉｍｅｄＯｕｔフラグをその特定のトランザクションのためのメモリコントローラ内に設定する。かかるＴｉｍｅｄＯｕｔフラグを維持してもよい多数の場所が存在する。しかしながら、一実施形態において、そのＴｉｍｅｄＯｕｔフラグは、未決着のトランザクションバッファ２３０内の各未決着のトランザクションの詳細に関連して維持される。
【００９１】
ＴｉｍｅｄＯｕｔフラグがいずれかのトランザクションに対して設定される場合、プロセスはステップ８２０に進み、ここで、そのＴｉｍｅｄＯｕｔフラグが設定されるトランザクションが選択される。ＴｉｍｅｄＯｕｔフラグが設定された複数のトランザクションがある場合、例えばそのＴｉｍｅｄＯｕｔフラグが設定されたトランザクションの間で無作為に選択することにより、ステップ８２０において適切な選択技術を使用してウィニングトランザクションを選択することができる。しかしながら、典型的には、これは、トランザクションに関連付けられたＱｏＳ値がメモリコントローラ５０によって適切に優先順位が設定されていないことを示すため、概して、ＴｉｍｅｄＯｕｔフラグが設定された複数のトランザクションは存在しないという予想がある。その場合、ステップ８２５からステップ８３５の分岐をより頻繁に行い、それによって、トランザクションにＴｉｍｅｄＯｕｔフラグが設定される可能性が低下するように、リミッタ信号が設定される要件を低くすることが適切である。
【００９２】
上記の技術に従い、メモリコントローラは、それらの優先順位レベル内でトランザクションの一時的な順序を同時に保持しながら、トランザクションの重要な再順序付けによって行ヒットの発生率を向上させることができるリスト割り当ておよびアービトレーション動作を実行する。これにより、システムレベルでトランザクションのＱｏＳ要件を維持しながら、アクセス待ち時間を低減させるように、トランザクションの再順序付けの間でバランスを確定することができる。
【００９３】
本明細書において特定の実施形態を記載しているが、本発明はこれらに制限されず、それに対するその多くの修正および追加を、本発明の範囲内で行ってもよいことが理解されよう。例えば、本発明の範囲から逸脱せずに、以下の従属請求項の種々の特徴を組み合わせることができる。
【図１】
2014517431.tif 000003
【図２】
2014517431.tif 000004
【図３】
2014517431.tif 000005
【図４Ａ】
2014517431.tif 000006
【図４Ｂ】
2014517431.tif 000007
【図５Ａ】
2014517431.tif 000008
【図５Ｂ】
2014517431.tif 000009
【図６】
2014517431.tif 000010
【図７】
2014517431.tif 000011
【図８】
2014517431.tif 000012
【図９】
2014517431.tif 000013
【図１０Ａ】
2014517431.tif 000014
【図１０Ｂ】
2014517431.tif 000015
【図１０Ｃ】
2014517431.tif 000016
【図１１Ａ】
2014517431.tif 000017
【図１１Ｂ】
2014517431.tif 000018
【図１２】
2014517431.tif 000019
【図１３】
2014517431.tif 000020
【図１４】
2014517431.tif 000021
【図１５】
2014517431.tif 000022
【図１６】
2014517431.tif 000023
【手続補正書】
【提出日】平成25年8月29日(2013.8.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリデバイスへのアクセスを制御するためのメモリコントローラであって、前記メモリデバイスは、それぞれが複数の行を含む複数のバンクを含み、メモリアドレスへのアクセスにかかる時間が前記メモリデバイス内の先行するアクセスアクティビティに依存するように、不均等アクセスタイミング特性を有し、
前記メモリコントローラは、
少なくとも１つのトランザクションソースから発行されたトランザクションを受信するように構成されるインターフェースであって、各トランザクションは、そのトランザクションでアクセスされるメモリアドレスを指定し、そのトランザクションに関連付けられた優先順位指標を含む、前記インターフェースと、
未決着のトランザクションとして、前記インターフェースによって受信された、前記メモリコントローラによって前記メモリデバイスへまだ発行されていないそれらのトランザクションを一時的に記憶するように構成される記憶装置であって、前記記憶装置は、前記記憶された未決着のトランザクションの複数の順序付けられたリストを維持し、前記複数のリストは少なくとも１つの優先順位ベースで順序付けられたリストと、少なくとも１つのアクセスタイミングで順序付けられたリストとを含み、前記少なくとも１つの優先順位ベースで順序付けられたリストは、未決着のトランザクションが存在する前記メモリデバイスの各バンクに対して別々の優先順位ベースで順序付けられたリストを含み、前記少なくとも１つのアクセスタイミングで順序付けられたリストは、未決着のトランザクションが存在する各バンクの各行に対して別々のアクセスタイミングで順序付けられたリストを含む、前記記憶装置と、を備え、
各優先順位ベースで順序付けられたリストは多数のエントリを有し、各エントリは前記未決着のトランザクションのうちの１つに関連付けられ、各エントリは、前記関連付けられた未決着のトランザクションの前記優先順位指標に基づいて、その優先順位ベースで順序付けられたリスト内において順序付けられ、各優先順位ベースで順序付けられたリストは、多数のサブリストを含み、各エントリは、各サブリストの前記エントリが同じ優先順位指標を有するトランザクションに関するように、１つのサブリスト内にあり、前記サブリストは、前記優先順位指標に基づいてそれらの優先順位ベースで順序付けられたリスト内に順序付けられ、各サブリスト内において、そのサブリストの前記エントリは、前記インターフェースによる前記関連付けられた未決着のトランザクションの一時的な受信順序に基づいて順序付けられ、
各アクセスタイミングで順序付けられたリストは多数のエントリを有し、各エントリは前記未決着のトランザクションのうちの１つに関連付けられ、各アクセスタイミングで順序付けられたリストに関連付けられる前記未決着のトランザクションは、グループ内の１つのトランザクションの前記メモリアドレスがアクセスされると、前記不均等アクセスタイミング特性に配慮した前記メモリデバイスによって、そのメモリアドレスに効率的にアクセスすることができる、トランザクショングループを形成し、
アービトレーション回路は、前記未決着のトランザクションから前記メモリデバイスに発行されるウィニング（ｗｉｎｎｉｎｇ）トランザクションを選択するように、前記複数の順序付けられたリストが参照されるアービトレーション動作を実行するように構成され、前記記憶装置は、前記複数の順序付けられたリストから、前記ウィニングトランザクションのためのいかなるエントリも除去するように構成され、
前記アービトレーション動作が実行される場合に、最後に前記アービトレーション動作が実行された時に選択された前記ウィニングトランザクションは、前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つにエントリを有し、その少なくとも１つのアクセスタイミングで順序付けられたリストがまだ非空白である場合、前記アービトレーション動作は、所定の例外条件が存在しない限り、前記ウィニングトランザクションとして、その少なくとも１つのアクセスタイミングで順序付けられたリストにエントリを有する前記未決着のトランザクションのうちの１つを選択するように構成され、
最後に前記アービトレーション動作が実行された時に選択された前記ウィニングトランザクションが、前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つにエントリを有しない場合に、または前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つにエントリを有するが、少なくとも１つのアクセスタイミングで順序付けられたリストが現在空白である場合に、前記アービトレーション動作は、前記ウィニングトランザクションとして、前記少なくとも１つの優先順位ベースで順序付けられたリストのうちの１つ内のヘッド位置にエントリを有する前記未決着のトランザクションを選択するように構成される、
メモリコントローラ。
【請求項２】
各アクセスタイミングで順序付けられたリスト内において、前記エントリは、前記インターフェースによる前記関連付けられた未決着のトランザクションの一時的な受信順序に基づいて順序付けられる、請求項１に記載のメモリコントローラ。
【請求項３】
特定のメモリアドレスへのアクセスタイミングが、その特定のメモリアドレスを含む行がすでに活性化されているか否かに依存して変動するように、各行がアクセスされるのに先だって、その行は活性化される必要がある、請求項１または２に記載のメモリコントローラ。
【請求項４】
前記インターフェースによって受信された各トランザクションに応答して、前記複数の順序付けられたリストのうちの少なくとも１つにおいてそのトランザクションに対するエントリを割り当てるように、割り当て回路をさらに備える、請求項１から３のいずれかに記載のメモリコントローラ。
【請求項５】
前記インターフェースによって受信された各トランザクションについて、前記割り当て回路は、前記少なくとも１つの優先順位ベースで順序付けられたリストのうちの１つおよび前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つの両方において、そのトランザクションに対するエントリを割り当てるように構成される、請求項４に記載のメモリコントローラ。
【請求項６】
各優先順位ベースで順序付けられたリスト内において、各エントリは、ヘッドインジケータとテールインジケータとを含み、前記ヘッドインジケータは、前記エントリが前記優先順位ベースで順序付けられたリスト内のヘッド位置にある場合に設定され、前記テールインジケータは、前記エントリが前記優先順位ベースで順序付けられたリスト内のテール位置にある場合に設定され、
各エントリは、前記優先順位ベースで順序付けられたリスト内に、次のエントリへのポインタをさらに含み、前記次のエントリは、前記次のエントリを指したエントリよりも、前記ヘッド位置からより離れた位置にある、請求項１から５のいずれかに記載のメモリコントローラ。
【請求項７】
各エントリは、前記関連付けられた未決着のトランザクションの前記優先順位指標をさらに識別する、請求項６に記載のメモリコントローラ。
【請求項８】
各エントリは、前記次のエントリに関連付けられた前記未決着のトランザクションの前記優先順位指標をさらに識別する、請求項７に記載のメモリコントローラ。
【請求項９】
前記インターフェースによって受信された現在のトランザクションに応答して、前記現在のトランザクションによって指定された前記メモリアドレスに配慮して選択された前記少なくとも１つの優先順位ベースで順序付けられたリストのうちの選択された１つに、前記現在のトランザクションに対するエントリを割り当てるための割り当て回路をさらに含み、
前記割り当て回路は、前記関連付けられた未決着のトランザクションの優先順位指標が前記現在のトランザクションの前記優先順位指標よりも高いまたは等しく、前記次のエントリに関連付けられた前記未決着のトランザクションの優先順位指標が前記現在のトランザクションの前記優先順位指標よりも低い、前記選択された優先順位ベースで順序付けられたリスト内のエントリを識別するように構成され、
前記割り当て回路は、前記現在のトランザクションの新しいエントリを、前記識別されたエントリと隣接するが、前記識別されたエントリよりも前記ヘッド位置からより離れるように順序付けられる、前記選択された優先順位ベースで順序付けられたリストへ追加するようにさらに構成される、請求項８に記載のメモリコントローラ。
【請求項１０】
前記識別されたエントリの前記ポインタは前記新しいエントリを指すように更新され、前記新しいエントリの前記ポインタは前記次のエントリを指すように構成される、請求項９に記載のメモリコントローラ。
【請求項１１】
前記次のエントリ内で、前記関連付けられた未決着のトランザクションの前記優先順位指標が更新される、請求項１０に記載のメモリコントローラ。
【請求項１２】
前記関連付けられた未決着のトランザクションの前記優先順位指標は、前記新しいエントリに関連付けられた前記現在のトランザクションの前記優先順位指標に相当するように更新される、請求項１１に記載のメモリコントローラ。
【請求項１３】
前記新しいエントリが前記優先順位ベースで順序付けられたリスト内の前記テール位置にある場合に、前記割り当て回路によって、前記新しいエントリに前記テールインジケータを設定し、以前は前記テール位置にあった前記エントリの前記テールインジケータをクリアする、請求項９から１２のいずれかに記載のメモリコントローラ。
【請求項１４】
前記関連付けられた未決着のトランザクションの優先順位指標が前記現在のトランザクションの前記優先順位指標よりも高いまたは等しい、前記選択された優先順位ベースで順序付けられたリストにエントリがない場合に、前記割り当て回路は、前記ヘッド位置に前記現在のトランザクションの前記新しいエントリを追加するように構成され、前記新しいエントリに前記ヘッドインジケータが設定され、前記新しいエントリの前記ポインタは、以前に前記ヘッド位置であった前記エントリを指し、前記ヘッド位置にあった前記エントリのヘッドインジケータがクリアされるように構成される、請求項９から１３のうちのいずれかに記載のメモリコントローラ。
【請求項１５】
前記選択された優先順位ベースで順序付けられたリストが現在エントリを有しない場合に、前記割り当て回路は、前記現在のトランザクションに割り当てられた前記新しいエントリにそのヘッドインジケータとそのテールインジケータとの両方を設定するように構成される、請求項９から１４のうちのいずれかに記載のメモリコントローラ。
【請求項１６】
各アクセスタイミングで順序付けられたリスト内において、各エントリは、ヘッドインジケータとテールインジケータとを含み、前記ヘッドインジケータは、前記エントリが前記アクセスタイミングで順序付けられたリスト内のヘッド位置にある場合に設定され、前記テールインジケータは、前記エントリが前記アクセスタイミングで順序付けられたリスト内のテール位置にある場合に設定され、
各エントリは、前記アクセスタイミングで順序付けられたリスト内の次のエントリへのポインタをさらに含み、前記次のエントリは、前記次のエントリを指したエントリよりも前記ヘッド位置からより離れた位置にある、請求項１から１５のいずれかに記載のメモリコントローラ。
【請求項１７】
前記少なくとも１つのトランザクションソースによって発行されたバーストトランザクションは、前記メモリデバイスの複数のリンクバーストトランザクションに変換され、前記メモリコントローラは、
前記リンクバーストトランザクションのうちの最初のものを前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つのエントリに割り当て、次いで、前記エントリに関連付けられたスパーリストのスパーリストエントリに前記残りのリンクトランザクションの全てを割り当てるように構成される割り当て回路と、をさらに含む、請求項１６に記載のメモリコントローラ。
【請求項１８】
前記アービトレーション動作が実行される場合に、最後に前記アービトレーション動作が実行された時に選択された前記ウィニングトランザクションは、前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つにエントリを有し、そのエントリは、それに関連付けられた前記スパーリストを有し、前記アービトレーション動作は、前記ウィニングトランザクションとして、前記スパーリスト内にスパーリストエントリを有する前記リンクトランザクションのうちの１つを選択するように構成される、請求項１７に記載のメモリコントローラ。
【請求項１９】
前記リンクトランザクションの全てがウィニング要求として選択される場合にのみ、前記アービトレーション動作は、それに続く以降のウィニングトランザクションとして、前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの前記１つに前記次のエントリに関連付けられた前記トランザクションを選択するように構成される、請求項１８に記載のメモリコントローラ。
【請求項２０】
前記メモリデバイスは、複数のバンクを含み、各バンクは、複数の行を含み、前記少なくとも１つのアクセスタイミングで順序付けられたリストは、未決着のトランザクションが存在する各バンクの各行に対して別々のアクセスタイミングで順序付けられたリストを含み、
各アクセスタイミングで順序付けられたリスト内において、各エントリは、前記アクセスタイミングで順序付けられたリストが提供された前記バンクおよび行の指標を含む、請求項１６から１９のいずれかに記載のメモリコントローラ。
【請求項２１】
前記優先順位指標は、各トランザクションのフィールド内に提供される明示的な優先順位指標である、請求項１から２０のいずれかに記載のメモリコントローラ。
【請求項２２】
前記優先順位指標はサービスの質（ＱｏＳ）レベル指標である、請求項２１に記載のメモリコントローラ。
【請求項２３】
前記所定の例外条件は、特定の未決着のトランザクションの前記優先順位指標を、高い優先順位を表すように変更させる条件であり、前記アービトレーション回路は、前記所定の例外条件が存在する場合に、前記ウィニングトランザクションとして前記特定の未決着のトランザクションを選択するように構成され、前記記憶装置は、前記複数の順序付けられたリストからそのウィニングトランザクションのためのいかなるエントリも除去するように構成される、請求項１から２2のいずれかに記載のメモリコントローラ。
【請求項２４】
前記アクセスタイミングで順序付けられたリストのうちの１つから選択される、少なくとも連続するウィニングトランザクションの数を監視し、閾値条件の発生時にリミッタ信号をアサートするように構成されるリミッタ回路と、
前記リミッタ信号がアサートされる場合に前記所定の例外条件が検出され、前記アービトレーション回路は、前記リミッタ信号のアサートに応答し、最後に前記アービトレーション動作が実行された時に選択された前記ウィニングトランザクションが、前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つにエントリを有し、その少なくとも１つのアクセスタイミングで順序付けられたリストがまだ非空白である場合でも、前記アービトレーション動作の次の実行によって、前記ウィニングトランザクションとして、前記少なくとも１つの優先順位ベースで順序付けられたリストのうちの１つ内のヘッド位置にエントリを有する前記未決着のトランザクションを選択する、
請求項１から２３のいずれかに記載のメモリコントローラ。
【請求項２５】
前記インターフェースによって受信された前記トランザクションは読み込まれたトランザクションである、請求項１から２４のいずれかに記載のメモリコントローラ。
【請求項２６】
前記アービトレーション回路は、複数のアービトレーション動作を並列で実行するように構成される、請求項１から２５のいずれかに記載のメモリコントローラ。
【請求項２７】
メモリデバイスへのアクセスを制御する方法であって、前記メモリデバイスは、それぞれが複数の行を含む複数のバンクを含み、メモリアドレスのアクセスにかかる時間は前記メモリデバイス内の先行するアクセスアクティビティに依存するように、不均等アクセスタイミング特性を有し、前記方法は、
少なくとも１つのトランザクションソースから発行されるトランザクションを受信することであって、各トランザクションはそのトランザクションについてアクセスされる前記メモリアドレスを指定し、そのトランザクションに関連付けられた優先順位指標を含む、前記受信することと、
未決着のトランザクションとして、出力インターフェースから前記メモリデバイスへまだ出力されていないそれらの受信されたトランザクションを記憶装置内に一時的に記憶することであって、前記記憶装置は前記記憶された未決着のトランザクションのために複数の順序付けられたリストを維持し、前記複数のリストは少なくとも１つの優先順位ベースで順序付けられたリストと少なくとも１つのアクセスタイミングで順序付けられたリストとを含み、前記少なくとも１つの優先順位ベースで順序付けられたリストは、未決着のトランザクションが存在する前記メモリデバイスの各バンクに対して別々の優先順位ベースで順序付けられたリストを含み、前記少なくとも１つのアクセスタイミングで順序付けられたリストは、未決着のトランザクションが存在する各バンクの各行に対して別々のアクセスタイミングで順序付けられたリストを含む、前記記憶することと、
多数のエントリを有するように各優先順位ベースで順序付けられたリストを構成することであって、各エントリは前記未決着のトランザクションのうちの１つに関連付けられ、各エントリは前記関連付けられた未決着のトランザクションの前記優先順位指標に基づいて、その優先順位ベースで順序付けられたリスト内に順序付けられ、各優先順位ベースで順序付けられたリストは、多数のサブリストを含み、各エントリは、各サブリストの前記エントリが同じ優先順位指標を有するトランザクションに関するように、１つのサブリスト内にあり、前記サブリストは、前記優先順位指標に基づいてそれらの優先順位ベースで順序付けられたリスト内に順序付けられ、各サブリスト内において、そのサブリストの前記エントリは、前記インターフェースによる前記関連付けられた未決着のトランザクションの一時的な受信順序に基づいて順序付けられる、前記構成することと、
多数のエントリを有するように各アクセスタイミングで順序付けられたリストを構成することであって、各エントリは、前記未決着のトランザクションのうちの１つに関連付けられ、各アクセスタイミングで順序付けられたリストに関連付けられる前記未決着のトランザクションは、グループ内の１つのトランザクションの前記メモリアドレスがアクセスされると、前記不均等アクセスタイミング特性に配慮した前記メモリデバイスによって、そのメモリアドレスに効率的にアクセスすることができる、トランザクショングループを形成する、前記構成することと、
前記出力インターフェースから前記メモリデバイスに出力されるウィニングトランザクションを前記未決着のトランザクションから選択するように、前記複数の順序付けられたリストが参照されるアービトレーション動作を実行し、前記複数の順序付けられたリストから前記ウィニングトランザクションに対するエントリを除去することと、を含み、
前記アービトレーション動作が実行される場合に、最後に前記アービトレーション動作が実行された時に選択された前記ウィニングトランザクションは、前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つにエントリを有し、少なくとも１つのアクセスタイミングで順序付けられたリストはまだ非空白であり、前記アービトレーション動作は、所定の例外条件が存在しない限り、前記ウィニングトランザクションとして、その少なくとも１つのアクセスタイミングで順序付けられたリストにエントリを有する前記未決着のトランザクションのうちの１つを選択し、
最後に前記アービトレーション動作が実行された時に選択された前記ウィニングトランザクションが、前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つにエントリを有しない場合に、または前記少なくとも１つのアクセスタイミングで順序付けられたリストのうちの１つにエントリを有するが、少なくとも１つのアクセスタイミングで順序付けられたリストが現在空白である場合に、前記アービトレーション動作は、前記ウィニングトランザクションとして、前記少なくとも１つの優先順位ベースで順序付けられたリストのうちの１つ内のヘッド位置にエントリを有する前記未決着のトランザクションを選択する、前記方法。
【請求項２８】
メモリデバイスへのアクセスを制御するためのメモリコントローラであって、前記メモリデバイスは、それぞれが複数の行を含む複数のバンクを含み、メモリアドレスへのアクセスにかかる時間が前記メモリデバイス内の先行
するアクセスアクティビティに依存するように、不均等アクセスタイミング特性を有し、前記メモリコントローラは、
少なくとも１つのトランザクションソースから発行されたトランザクションを受信するためのインターフェース手段であって、各トランザクションは、そのトランザクションのためにアクセスされる前記メモリアドレスを指定し、そのトランザクションに関連付けられた優先順位指標を含む、前記インターフェース手段と、
前記メモリコントローラによって前記メモリデバイスへまだ発行されていない前記インターフェース手段によって受信されたそれらのトランザクションを未決着のトランザクションとして一時的に記憶するための記憶手段であって、前記記憶された未決着のトランザクションの複数の順序付けられたリスト手段を維持し、前記リスト手段は、少なくとも１つの優先順位ベースで順序付けられたリスト手段と少なくとも１つのアクセスタイミングで順序付けられたリスト手段とを含み、前記少なくとも１つの優先順位ベースで順序付けられたリスト手段は、未決着のトランザクションが存在する前記メモリデバイスの各バンクに対して別々の優先順位ベースで順序付けられたリスト手段を含み、前記少なくとも１つのアクセスタイミングで順序付けられたリスト手段は、未決着のトランザクションが存在する各バンクの各行に対して別々のアクセスタイミングで順序付けられたリスト手段を含む、前記記憶手段と、を有し
各優先順位ベースで順序付けられたリスト手段は多数のエントリを有し、各エントリは前記未決着のトランザクションのうちの１つに関連付けられ、各エントリは、関連付けられた未決着のトランザクションの優先順位指標に基づいてその優先順位ベースで順序付けられたリスト手段内に順序付けられ、各優先順位ベースで順序付けられたリスト手段は、多数のサブリストを含み、各エントリは、各サブリストの前記エントリが同じ優先順位指標を有するトランザクションに関するように、１つのサブリスト内にあり、前記サブリストは、前記優先順位指標に基づいてそれらの優先順位ベースで順序付けられたリスト手段内に順序付けられ、各サブリスト内において、そのサブリストの前記エントリは、前記インターフェース手段による前記関連付けられた未決着のトランザクションの一時的な受信順序に基づいて順序付けられ、
各アクセスタイミングで順序付けられたリスト手段は多数のエントリを有し、各エントリは、前記未決着のトランザクションのうちの１つに関連付けられ、各アクセスタイミングで順序付けられたリスト手段に関連付けられる前記未決着のトランザクションは、グループ内の１つのトランザクションの前記メモリアドレスにアクセスされると、前記不均等アクセスタイミング特性に配慮した前記メモリデバイスによって、そのメモリアドレスに効率的にアクセスすることができる、トランザクショングループを形成し、
前記メモリコントローラはさらに、
前記未決着のトランザクションから前記メモリデバイスに発行されるウィニングトランザクションを選択するように、前記複数の順序付けられたリスト手段が参照されるアービトレーション動作を実行するためのアービトレーション手段を含み、
前記記憶手段は、前記複数の順序付けられたリスト手段から、前記ウィニングトランザクションに対するエントリを除去し、
前記アービトレーション動作が実行される場合に、最後に前記アービトレーション動作が実行された時に選択された前記ウィニングトランザクションは、前記少なくとも１つのアクセスタイミングで順序付けられたリスト手段のうちの１つにエントリを有し、その少なくとも１つのアクセスタイミングで順序付けられたリスト手段はまだ非空白であり、前記アービトレーション動作は、所定の例外条件が存在しない限り、前記ウィニングトランザクションとして、その少なくとも１つのアクセスタイミングで順序付けられたリスト手段内にエントリを有する前記未決着のトランザクションのうちの１つを選択し、最後に前記アービトレーション動作が実行された時に選択された前記ウィニングトランザクションが、前記少なくとも１つのアクセスタイミングで順序付けられたリスト手段のうちの１つにエントリを有しない場合に、または前記少なくとも１つのアクセスタイミングで順序付けられたリスト手段のうちの１つにエントリを有するが、少なくとも１つのアクセスタイミングで順序付けられたリスト手段が現在空白である場合に、前記アービトレーション動作は、前記ウィニングトランザクションとして、前記少なくとも１つの優先順位ベースで順序付けられたリスト手段のうちの１つ内のヘッド位置にエントリを有する前記未決着のトランザクションを選択するように構成される、前記メモリコントローラ。
【国際調査報告】
2014517431.tif 000024
2014517431.tif 000025