(57)【要約】  ＤＲＡＭコントローラ（１０３）は、ページヒットの数を最大限に増やし、ページコンフリクトおよびページミスの数を最小限に減らすように、リード／ライト要求をリオーダーするように構成されうる。個々のページのすべてを追跡することなく、各リード／ライト要求に対するプリチャージ予測を取得するために、３レベルの自動プリチャージ予測アルゴリズムが実行されうる。全てのページの追跡に代えて、ＤＲＡＭコントローラは、ＤＲＡＭ（１０５）の各バンクについてページアクティビティの履歴を追跡し、バンクベースではない１次ベースの履歴に予測を行いうる。一度に所定の数のメモリ要求がキューに記憶され、ページへのアクセス後に、そのページを閉じるか、または開いたままにすべきかを決定するために使用されうる。キュー内の今後実行される要求が、そのページを含む特定のバンクに対するものではない場合、そのバンクに対する最近のバンク履歴を使用して、ページを閉じるか、または開いたままにすべきかの予測が取得される。ページが決定および／または予測により閉じられない場合、そのページの最後のアクセスから所定時間遊休状態であった場合、そのページが閉じられうる。
2010537310.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリバンクを有するメモリ（１０５）へのアクセスを管理する方法であって、
現在のメモリ要求によって要求されている、前記複数のメモリバンクの特定のメモリバンク内の特定のメモリページを特定するステップ（４０４）と、
前記特定のメモリバンクへの最近のメモリアクセスの履歴に対応する現在の予測値に基づいて、前記特定のメモリページを閉じるべきか、または開いたままにすべきかを決定するステップ（４０６）とを含み、
前記現在のメモリ要求のための前記特定のメモリページへのアクセスが完了すると、
前記決定により、前記特定のメモリページを閉じるべきであると決定されると、前記特定のメモリページを閉じるステップ（４２２）、または
前記決定により、前記特定のメモリページを開いたままにすべきであると決定されると、前記特定のメモリページを開いたままにするステップ（４２４）、の一方を実行する方法。
【請求項２】
前記一方の実行は、前記現在のメモリ要求のための前記特定のメモリページへのアクセスの完了後、前記メモリが再度アクセスされる前に実行される請求項１に記載の方法。
【請求項３】
前記メモリへのアクセスを待機している１つ以上の追加のメモリ要求のうち、前記特定のメモリバンク内のメモリページを要求するものが存在しないことを決定するステップを更に有し、
前記１つ以上の追加のメモリ要求のうち、前記特定のメモリバンク内のメモリページを要求するものが存在しないことが決定されると、前記特定のメモリページを閉じるべきか、または開いたままにすべきかかの前記決定が実行される請求項１に記載の方法。
【請求項４】
前記特定のメモリページが、所定の期間、遊休状態であった場合、前記現在のメモリ要求のための前記特定のメモリページへのアクセス完了から前記所定の期間の経過後に、前記特定のメモリページを閉じるステップ（４２６）を更に含む、請求項１に記載の方法。
【請求項５】
前記特定のメモリバンクへの第１の数の最近のメモリアクセスに対応する第１の情報と、
前記現在のメモリ要求のための前記特定のメモリページへの前記アクセスに対応する第２の情報とに従って、前記現在の予測値を取得するステップを更に含む、請求項１に記載の方法。
【請求項６】
複数のメモリ要求を受け取り、前記受け取ったメモリ要求を未処理のメモリ要求としてキューに記憶するステップ（４０２）と、
前記キューに記憶されている前記未処理のメモリ要求の１つを選択し、前記キューから前記選択されたメモリ要求を削除する（４０４）ステップと、
前記選択されたメモリ要求によって要求されている第１のメモリページと、対応する第１のメモリバンクとを特定するステップ（４０４）と、
前記第１のメモリバンクへの最近のメモリアクセスの履歴に対応する現在の予測値に基づいて、前記第１のメモリページを閉じるべきか、または開いたままにすべきかを予測するステップ（４０６）と、
前記キューに記憶されている前記未処理のメモリ要求のうち、前記第１のメモリバンクへのアクセスを要求するものが存在しないことを決定するステップ（４１０）とをさらに含み、
前記決定が行われると、
前記予測により、前記第１のメモリページを閉じるべきであると予測されると、前記選択されたメモリ要求の自動プリジャージを有効にするステップ（４２２）、または
前記予測により、前記第１のメモリページを開いたままにすべきであると予測されると、前記選択されたメモリ要求の前記自動プリジャージを無効にするステップ（４２４）、の一方を実行する、請求項１に記載の方法。
【請求項７】
１つ以上のメモリバンクを有するメモリ（１０５）へのアクセスを制御するように構成されたメモリコントローラ（１０３）であって、
前記１つ以上のメモリバンクのそれぞれに対して、個々のメモリバンクアクセス履歴情報を記憶するように構成されたページテーブル（１０６）と、
複数のエントリを有するメモリバンク履歴テーブル（１０８）とを備え、
前記複数のエントリの各エントリは、前記１つ以上のメモリバンクの１つに対して、前記ページテーブルに記憶されている個々のメモリバンクアクセス履歴情報に対応する個々の予測値を記憶するように構成され、
前記メモリコントローラは、現在のメモリ要求の対象である、前記１つ以上のメモリバンクの特定のメモリバンク内の特定のメモリページを特定するように構成され、
前記メモリコントローラは、前記メモリバンク履歴テーブルから現在の予測値を取得するように更に構成され、前記現在の予測値は、前記特定のメモリバンクに対して、前記ページテーブルに記憶されている前記個々のメモリバンクアクセス履歴情報に少なくとも基づき、前記現在の予測値は、前記メモリコントローラが前記特定のメモリページを閉じるべきか、または前記特定のメモリページを開いたままにすべきかを前記メモリコントローラに指示し、
未処理のメモリ要求のうち、前記特定のメモリバンクに対するものが存在しない場合に、前記現在のメモリ要求のための前記特定のメモリページへのアクセスが完了すると、前記メモリコントローラは、前記現在の予測値の内容に従って前記特定のメモリページを閉じるか、または開いたままにするように構成され、
前記未処理のメモリ要求は、前記メモリへのアクセスを待機している１つ以上の追加のメモリ要求を含むメモリコントローラ。
【請求項８】
前記メモリコントローラは、
前記メモリバンク履歴テーブルの特定のエントリから前記現在の予測値を取得し、前記特定のエントリの位置は、
前記特定のメモリバンクに対して、前記ページテーブルに記憶されている前記個々のメモリバンクアクセス履歴情報の少なくとも最初の部分と、
前記現在のメモリ要求に対応するメモリバンクアクセス情報とによって決定され、
前記未処理のメモリ要求のうち、前記特定のメモリページに対するものが存在せず、前記未処理のメモリ要求の少なくとも１つが、前記特定のメモリバンク内の閉じられているメモリページに対するものである場合、前記現在のメモリ要求のための前記特定のメモリページへのアクセスが完了すると、前記特定のメモリページを閉じ、
前記未処理のメモリ要求のうち、前記特定のメモリバンク内の閉じられているいずれかのメモリページに対するものが存在せず、前記未処理のメモリ要求の少なくとも１つが、前記特定のメモリページに対するものである場合、前記現在のメモリ要求のための前記特定のメモリページへのアクセスが完了すると、前記特定のメモリページを開いたままにし、
前記未処理のメモリ要求の少なくとも１つが、前記特定のメモリページに対するものであり、前記未処理のメモリ要求の少なくとも１つが、前記特定のメモリバンク内の閉じられているメモリページに対するものである場合、前記現在のメモリ要求のための前記特定のメモリページへのアクセスが完了すると、前記特定のメモリページを開いたままにし、
前記現在の予測値を取得した後に前記メモリバンク履歴テーブルに記憶されている将来の予測値を更新し、
前記メモリバンク履歴テーブルの特定のエントリに記憶されている前記将来の予測値を更新し、前記特定のエントリの位置は、前記特定のメモリバンクに対して、前記ページテーブルに記憶されている前記個々のメモリバンクアクセス履歴情報によって決定され、
前記現在のメモリ要求に対応するメモリアクセス状況を特定し、前記メモリアクセス状況に従って前記将来の予測値を更新するように更に構成され、前記メモリアクセス状況は、
前記特定のメモリページが既に開かれていることを示すページヒット、
前記特定のメモリバンク内のどのページも開かれていないことを示すページミス、または
前記特定のメモリページが開かれておらず、前記特定のメモリバンク内の別のメモリページが開かれていることを示すページコンフリクトの１つである、請求項７に記載のメモリコントローラ。
【請求項９】
前記メモリアクセス状況がページヒットの場合、前記メモリコントローラは、前記将来の予測値を、前記特定のメモリページを開いたままとすべきであることを示すように更新するように動作可能であり、
前記メモリアクセス状況がページコンクリクトの場合、前記メモリコントローラは、前記将来の予測値を、前記特定のメモリページを閉じるべきであることを示すように更新するように動作可能であり、
前記メモリアクセス状況がページミスであり、前記特定のメモリバンク内で最後に開かれているページが前記特定のメモリページでない場合、前記メモリコントローラは、前記将来の予測値を、前記特定のメモリページを綴じるべきであることを示すように更新するように動作可能であり、
前記メモリアクセス状況がページミスであり、前記特定のメモリバンク内で最後に開かれているページが前記特定のメモリページである場合、前記メモリコントローラは、前記将来の予測値を、前記特定のメモリページを開いたままにすべきであることを示すように更新するように動作可能であり、
前記メモリバンク履歴テーブルの各エントリは、個々の信頼度カウンタ値を記憶するように更に構成され、
前記メモリコントローラは、前記メモリバンク履歴テーブルの特定のエントリに、前記将来の予測値を記憶するように動作可能であり、
前記メモリコントローラは、前記メモリアクセス状況と、前記特定のエントリに記憶されている前記個々の信頼度カウンタ値とに従って前記将来の予測値を更新するように動作可能である、請求項８に記載のメモリコントローラ。
【請求項１０】
システム（１００）であって、請求項７に記載のメモリコントローラ（１０３）を備え、前記メモリコントローラに結合された１つ以上の記憶素子（１０５）を更に備え、
前記メモリコントローラは前記１つ以上の記憶素子へのアクセスを制御するように構成されている、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、メモリシステムの分野に関し、より詳細には、メモリコントローラの設計に関する。
【背景技術】
【０００２】
今日のコンピュータシステムが一層複雑さを増し、技術の進歩に伴ってプロセッサの速度が上がるのに伴い、多くの場合、帯域幅と所定のシステムのメモリのレーテンシに大きく依存するシステムの性能を最適化することが一層困難となっている。この結果、レーテンシを最小限に抑えてメモリにアクセスし、メモリ帯域幅を最大限に使用することで、システムの性能を改善および／または最適化することができる。メモリにアクセスし、特定のメモリ要求を完了するのに要する時間が長くなると、システムが低速化する。このため、アクセス時間の短縮および／またはメモリバスのスループットの全体的な向上が、システムの性能に寄与しうる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
デスクトップコンピュータ、グラフィックアダプタカード、ノートブックコンピュータなどの多くのシステムが、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）を使用している。ＤＲＡＭデバイスは、特にスタティックランダムアクセスメモリ（ＳＲＡＭ）デバイスなどの他のメモリ技術に比べて多くの利点を有する。このような利点のうち最も重要なのは、記憶密度の高さと電力消費の低さである。しかし、このような利点は、その後アクセスが行われる度（例えば、各リード／ライトアクセスの前後など）に、ＤＲＡＭデバイス内のメモリセルや他のコンポーネントを準備する際に発生する、各種の時間遅延という代償を伴う。このような遅延の例としては、行（row）のプリチャージ、行のリフレッシュおよび行のアクティブ化（activation）の実行に要する時間が挙げられる。このような遅延の発生時に、メモリオペレーションをより厳密に管理および制御するために、リード／ライトアクセス中に送信する追加のコマンドが追加されており、オーバーヘッドにつながっている。今日使用されているＤＲＡＭのほとんどがダブルデータレートシンクロナスＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）ファミリに属する。
【０００４】
ＤＤＲ  ＳＤＲＡＭ（ＤＤＲ２とＤＤＲ３を含む）は、システムクロックに基づき、ストローブ信号の立ち上りエッジと立ち下りエッジでデータを転送することで、シングルデータレートＳＤＲＡＭよりも広い帯域幅を実現している。これにより、転送速度が実際上２倍に上がり、メモリバスの周波数を上げる必要なく、システムの性能を向上させることができる。ＤＲＡＭの性能を更に向上させるために、記憶素子がページ構成でアクセスされる場合が多い。この構成では、別個の列アドレスストローブ（ＣＡＳ）信号を使用して、複数のリードまたはライトを実行している間に、ＤＲＡＭの行が作動される、すなわち開かれる（行アドレスストローブ（ＲＡＳ）信号をアサートに保持しておく必要がない）。これにより、通常は、プリチャージと行のアクセスに伴う遅延を回避するために、同じ行内で連続してリードまたはライトを行うことが可能となり、バーストデータ転送中のシステムの性能が顕著に向上する。
【０００５】
一般に、メモリページを開いた後でなければ、ページからのリードまたはページへのライトを実行することができない。ＤＲＡＭコントローラは、リード／ライトコマンドの直後にページを閉じるか、あるいは、ページを開いたままにすると決定しうる。しかし、ＤＲＡＭコントローラは、処理能力に限界があるため、多くの開かれているページを処理することができないことがある。この結果、ＤＲＡＭコントローラは、ページを開いたままにすれば、後に転送を実行する際にアクセス遅延を一部低減できる場合であっても、開かれているページの一部を閉じる必要があることがある。このように、ＤＲＡＭコントローラの限界が、ＤＲＡＭメモリの動作を十分に活用する上での障害となることがある。
【０００６】
従来技術に関連するほかの対応する問題は、このような従来技術と、本明細書に記載の本発明とを比較することにより、当業者にとって明らかとなろう。
【課題を解決するための手段】
【０００７】
システム（コンピュータシステムなど）は、ＤＲＡＭ（ダイナミックランダムアクセスメモリ）バスに結合されたＤＲＡＭデバイスと、ＤＲＡＭデバイスへのアクセスを管理および制御するように構成されたＤＲＡＭコントローラとを備えうる。リードオペレーションまたはライトオペレーションのためにメモリページにアクセスできる前に、そのメモリページが既に開かれていれば、そのメモリページは開く必要がない。ＤＲＡＭコントローラは、そのページにアクセスしたリード／ライト要求の直後に、開かれているページを閉じるか、ページを開いたままにすると決定しうる。多くの開かれているページを処理できるＤＲＡＭコントローラの能力に限界がある場合、場合によっては、ページを開いたままにすれば、（新しいページを開くための）アクティブ化コマンドと（開かれているページを閉じるための）プリチャージコマンドを追加で発行する必要がなくなることで、メモリへのアクセス時間をかなり短縮できる場合であっても、１以上の開かれているページを閉じる必要があることがある。ＤＲＡＭコントローラが一度に多くの開かれているページを処理できる能力に限界がある場合でも、ＤＲＡＭバスの全体のスループットを向上させることができる。一組の実施形態では、ＤＲＡＭコントローラは、その後実行するリード／ライトアクセスの間に発行する必要があるアクティブ化コマンドとプリチャージコマンドを最小限に減らすために、効率的なページポリシーに従って、どのページを開いたままにするか、およびどのページを閉じるかを決定するように構成されうる。
【０００８】
メモリコントローラ（例えばＤＲＡＭコントローラ）は、メモリアクセスを改善するための３レベルの自動プリチャージ予測アルゴリズムに従って動作するように構成されうる。ＤＲＡＭコントローラは、各ＤＲＡＭバンクについてページアクティビティの履歴を追跡することによって、ページの使用を最適化しうる。特定のバンクへの最近のアクセスの履歴により、ＤＲＡＭコントローラは、リード／ライトオペレーションの後に、アクセスしたページに対応する行の自動プリジャージを開始すべきか、または、アクセスしたページを開いたままにすべきかを決定することができる。ページを開いたままにすべきであると決定された場合には、特定のページに対する最近のアクセスの履歴を使用して、ページが開かれたまま（かつ未使用）である場合にページを閉じるまでの期間も決定される。このため、ＤＲＡＭコントローラは、バンク毎に、ページヒット（ＤＲＡＭの特定のバンク内の既に開かれている行に対して行われる要求）、ページミス（ＤＲＡＭのどの行も開かれていない特定のバンク内の行に対して行われる要求）、およびページコンフリクト（ＤＲＡＭの、別の異なる行が既に開かれている特定のバンク内の行に対して行われる要求）の履歴を追跡する一方、バンクベースではない一次ベースの履歴（first order based history that is not bank based）に予測を行うように構成されうる。
【０００９】
一組の実施形態では、ＤＲＡＭコントローラはページテーブルを有し、このテーブルの各エントリが、特定のメモリバンクに行った最近の４回の履歴アクセスを記録しうる。また、ＤＲＡＭコントローラは、メモリバンク履歴テーブルも有しうる。あるメモリ要求がアービトレーションで選択されると、ＤＲＡＭコントローラは、その要求が、特定のメモリバンク内の、前のメモリ要求と同じＤＲＡＭページに対するものであるかどうかの指標によって、メモリバンク履歴テーブルを更新しうる。ページミスが、特定のバンク内の最も最近アクセスされたメモリページ（現在閉じられている）であるメモリページを要求することがあるため、この指標は、要求がページヒットであったかどうかの指標とは実際には異なる。
【００１０】
アービトレーションによってある要求が選択されると、予測が実行されうる。選択時に、メモリバンク履歴テーブルが、対象のバンクに対する最近のＭ回のアクセス（例えば３回のアクセス）と、選択されたアクセスとにより、インデックスされうる。予測が行われたサイクルの後に、メモリバンク履歴テーブルが更新されうる。この更新は、対象のバンクに対して、ＤＲＡＭページテーブルに記憶されている、対応する（Ｍ＋１）ビット（例えば、Ｍが３の場合、４ビット）のバンク履歴情報によってインデックスされている位置に記憶されている値に対して実行されうる。一組の実施形態では、予測の更新は、信頼度カウンタに基づいて行われうる。メモリバンク履歴テーブルの各エントリは、Ｎビット（例えば２ビット）の信頼度カウント値を有しうる。ＤＲＡＭコントローラは、予測が正しかった場合、信頼度カウント値（最大値で飽和）をインクリメントしうる。ＤＲＡＭコントローラは、予測が正しくなかった場合に、信頼度カウント値をデクリメントしうる。その後、カウンタが所定の値（ゼロなど）に達した場合にのみ、ＤＲＡＭコントローラは予測値を更新しうる。別の実施形態では、カウント値は、初期値として小さい値が設定されて、インクリメントされ、予測値の更新を示す指標として最大値が使用されてもよい。履歴、予測、および信頼度カウント値の更新は、下で更に詳細に説明するように、自動プリチャージの決定が、バンクヒットまたはバンクコンフリクトによって決定された要求に対しては実行されない。
【００１１】
メモリバンク履歴テーブル内の予測値が示す自動プリチャージ予測の代わりに、キュー内の他の未処理の要求が、特定のＤＲＡＭバンクに対する要求であるかどうかの状態が使用され（supersede）うる。例えば、メモリバンク履歴テーブルに記憶されている、現在のメモリ要求に対応する予測値により、自動プリチャージを有効にして、現在のリード／ライト要求をＤＲＡＭメモリに送信すべきであることが予測されうる。しかし、要求キューに、現在のメモリ要求と同じＤＲＡＭページに対する、１つ以上の待機中の要求が含まれることもある。このことは、この場合、自動プリチャージが有利ではないことを示しうる。
【００１２】
一組の実施形態では、（例えばアービトレーションの結果）未処理のメモリ要求が現在のメモリ要求として選択されると、バンク履歴予測を確認（qualify）するために、バンクヒット信号とバンクコンフリクト信号（それぞれ、対象のメモリバンク内の潜在的なページヒットおよびページミスに対応する）が生成されうる。ＤＲＡＭコントローラが、未処理のメモリ要求のうち、ページヒットまたはページコンフリクトとなるものが存在しない（すなわち、未処理のメモリ要求のうち、対象のメモリバンクへのアクセスを要求するものが存在しない）ことを決定すると、ＤＲＡＭコントローラは、（前述のように）バンク履歴予測に基づいて、現在のメモリ要求に対して自動プリチャージを設定しうる。未処理のメモリ要求のうちページヒットとなるものが存在しないが、未処理のメモリ要求の少なくとも１つがページコンフリクトとなる場合、現在のメモリ要求に対して自動プリチャージが有効にされうる。未処理のメモリ要求の少なくとも１つがページヒットとなる場合、現在のメモリ要求に対して自動プリチャージが無効にされうる。
【００１３】
リード／ライト要求により自動プリチャージが行われない場合、ＤＲＡＭコントローラは、アイドルサイクルカウンタを使用して、所定の期間の経過後に開かれているページが遊休状態であった場合、このページを閉じるべきかを決定しうる。一実施形態では、ＤＲＡＭページテーブルの各エントリが、特定の開かれているメモリページが開かれている期間を追跡しうる。アイドルサイクルカウンタがプログラム可能な限界に達した場合、ＤＲＡＭコントローラは開かれているメモリページを閉じうる。ＤＲＡＭコントローラは、プログラム可能な固定のクロックサイクル数後に、未使用の（inactive）ページを閉じても、ＤＲＡＭページテーブルのエントリの履歴に基づいて動的に調整される固定のクロックサイクル数後に、未使用のページを閉じてもよい。
【図面の簡単な説明】
【００１４】
【図１】メモリバスを介したメモリへのアクセスを制御するように構成されたメモリコントローラを備える例示的なシステムのブロック図。
【図２】図１のメモリコントローラの一実施形態の部分論理ブロック図。
【図３】一実施形態に係るバンク履歴テーブルのアクセスおよび更新を示す構造図。
【図４】３レベルの自動プリチャージ予測アルゴリズムの一部の一実施形態を示すフローチャート。
【発明を実施するための形態】
【００１５】
以下の詳細な説明を読み、添付図面を参照することにより、本発明の他の態様が明らかになるであろう。
【００１６】
本発明は、さまざまに変形されたり代替形態を取りうるが、その特定の実施形態が、例として図面に図示され、かつ本明細書に詳細に記載される。しかし、図面およびその説明は、本発明を開示された特定の形態に限定するようには意図されてはおらず、逆に、本発明は、添付の特許請求の範囲によって規定される本発明の趣旨および範囲内に入るあらゆる変更、均等物、および代替物を網羅するものであることが理解されるべきである。
【００１７】
本明細書で使用されるように、「特定のメモリバンクに対して行われるメモリ要求」または「開かれている／閉じられているメモリページに対して行われるメモリ要求」との文言は、そのメモリ要求が、その特定のメモリバンク、および／または開かれている／閉じられているメモリページへのアクセスを要求していることを指す。換言すれば、例えば、「開かれているページに対して行われるメモリ要求」との文言は、「開かれているページへのアクセスを要求しているメモリ要求」と同義である。同様に、「特定のバンクに対するメモリ要求」または「開かれている／閉じられているページに対するメモリ要求」との文言は、そのメモリ要求が、その特定のメモリバンク、および／または開かれている／閉じられているメモリページへのアクセスを要求していることを指す。
【００１８】
図１は、コンピュータシステムなど、基本の例示的なシステム１００のブロック図を示し、処理ユニット１００は、メモリコントローラ１０３に結合されたプロセッサコア１０１を備えて構成されている。メモリコントローラ１０３は、メモリバス１１１に結合され、メモリコントローラ１０３は、メモリバス１１１を介して、処理ユニット１００とメモリ１０５との間のデータ交換を促すために、メモリ１０５へのアクセスを調整しうる。システム１００は、さまざまな方法で実装することができ、メモリコントローラによってメモリアクセスが制御される基本的な構成を示すために図示されていることを当業者は認めるであろう。
【００１９】
一組の実施形態では、メモリコントローラ１０３は、システム１００のニーズによって要求される一連の機能に対応するための、副次的な回路および／またはコンポーネント（レジスタなど）を備えてもよい。例えば、メモリコントローラ１０３は、メモリ１０５とプロセッサコア１０１間で転送中のデータをバッファするための各種バッファを備えても、サブ制御ブロックに分割されてもよい。同様に、メモリ１０５は、メモリバス１１１を介してメモリコントローラ１０３とインタフェースするように適合された、さまざまな構成の複数の記憶素子またはメモリデバイスを備えうる。各種の実施形態が可能であり、考察される。
【００２０】
一組の実施形態では、メモリ１０５はＤＲＡＭ（ダイナミックランダムアクセスメモリ）であり、このためメモリコントローラ１０３はＤＲＡＭコントローラである。更に別の組の実施形態では、メモリ１０５は、ダブルデータレートＤＲＡＭ（ＤＤＲ  ＤＲＡＭ）（ＤＤＲ３メモリなど）を備え、これがＤＤＲ３メモリコントローラ１０３によって制御されていてもよい。一組の実施形態では、ＤＲＡＭコントローラ１０３は、ＤＲＡＭデバイス内のメモリページへのアクセスを管理および制御するように構成されうる。リードオペレーションまたはライトオペレーションのためにメモリページにアクセスする前に、そのメモリページを開く必要がある。ＤＲＡＭコントローラ１０３は、リード／ライトアクセスの後、開かれているページを閉じるか、あるいはページを開いたままにすると決定しうる。一組の実施形態では、ＤＲＡＭコントローラ１０３は、効率的なページポリシーに従って動作するように構成されている。このページポリシーは、後から実行されるリード／ライトアクセスの間に発行されるアクティブ化コマンドとプリチャージコマンドを減らし、このため、ＤＲＡＭコントローラ１０３が、多くの開かれているページを同時に処理することができない場合であっても、ＤＲＡＭバス１１１の全体のスループットを改善するように設計されている。
【００２１】
ＤＲＡＭコントローラ１０３は、ＤＲＡＭ１０５とインタフェースする際に、リード要求およびライト要求を処理するように動作され、リード要求およびライト要求は、３つのタイプの異なるメモリアクセスとなりうる。１番目のタイプのメモリアクセスは、ＤＲＡＭ１０５の、既に別の行が開かれている特定のバンク内の行に対して行われる要求に対応しており、一般に「ページコンフリクト」と呼ばれる。ページコンフリクトの場合、要求されたリード／ライトオペレーションのためにＤＲＡＭ１０５を準備するために、ページが、まずプリチャージコマンドにより閉じられ、次にアクティブ化コマンドによって開かれる。２番目のタイプのメモリアクセスは、ＤＲＡＭ１０５の、どの行も開かれていない特定のバンク内の行に対して行われる要求に対応しており、一般に「ページミス」と呼ばれる。ページミスの場合、要求されたリード／ライトオペレーションのためにＤＲＡＭ１０５を準備するために、ページが、まずアクティブ化コマンドによって開かれる。３番目のタイプのメモリアクセスは、ＤＲＡＭ１０５の、特定のバンク内の既に開かれている行に対して行われる要求に対応しており、一般に「ページヒット」と呼ばれる。ページヒットの場合、要求されたリード／ライトオペレーションのためにＤＲＡＭ１０５を準備する必要がなく、このため、最初に追加のコマンドを実行しなくても、要求されたリード／ライトオペレーションを実行できる。
【００２２】
したがって、ページヒットの数を最大限に増やし、ページコンフリクトとページのアクティブ化の数を最小限に減らすように、リード／ライト要求をリオーダーするようにＤＲＡＭコントローラ１０３を構成することが好ましいことがある。このため、要求のストリームに関連するアドレスのストリームにより、ページヒットが得られない場合には、ＤＲＡＭコントローラ１０３は、ページコンフリクトに対抗する次善策として、ページミスを選択するように動作されうる。したがって、最適な性能を実現するために、ＤＲＡＭコントローラ１０３は、３レベルの自動プリジャージ予測アルゴリズムを実行するように構成されうる。
【００２３】
図２は、３レベルの自動プリジャージ予測アルゴリズムを実行するように構成されているＤＲＡＭコントローラ１０３の可能な一実施形態を示す。一組の実施形態では、ＤＲＡＭコントローラ１０３は、ＤＲＡＭページテーブル１０６を使用して、特定の数の開かれているページ（一部の実施形態のでは、開かれているページ数が３２）に対応することができる。ＤＲＡＭページテーブル１０６は、チップセレクト信号およびバンク選択信号に基づいてインデックスされており、このため、全バンクをカバーしており、各バンクに対する行アドレスと最近のバンク履歴情報とを記憶するために使用されうる。また、ＤＲＡＭページテーブル１０６は、リード／ライト要求により、ページヒット、ページミスまたはページコンフリクトのいずれが発生するかと、現在のリード／ライト要求に対して自動プリジャージを実行すべきかどうかとを決定するためにも使用されうる。アドレスマップ１０４は、プロセッサコア１０１から現在のリード／ライト要求に対応するアドレスを受け取り、ＤＲＡＭページテーブル１０６内で現在の要求に対応するページを検索するためのインデックス（ルックアップ）信号を生成しうる。
【００２４】
到着したコマンドは、所定の数のエントリ（一部の実施形態では１２のエントリ）を保持するように構成されうるＤＲＡＭコントローラ要求キュー（ＤＣＱ）１１４に入れられる。このため、ＤＣＱ１１４は、リード、ライトおよびプリフェッチのほか、ＤＲＡＭアドレス情報、ページヒット／ページミス／ページコンフリクト情報、リード要求およびライト要求に対応する要求の優先度情報、およびプリフェッチコマンドを記憶するように構成されている。ＤＣＱ１１４は、上記の情報が取得されると割り当てられ、その後、要求の全コマンドシーケンスが完了すると解放されうる。また、ＤＣＱ１１４は、ＤＲＡＭページテーブル１０６が変更される度に更新されうる。キューイングされたコマンドのアービトレーションは、アービタ１１２によって実行されうる。このアービトレーションは、ＤＲＡＭページテーブル１０６から受け取ったページ情報とタイミングチェックブロック１１０から受け取ったタイミングチェック情報とに少なくとも基づき、所定の優先度方式に従って、および／またはさまざまな要求のタイプの優先度に従って行われる。一般に、到着した要求のアービトレーションは、多くの可能な優先度方式の１つ以上に従って実行され、各優先度方式は、特定のシステムの性能およびメモリの性能のニーズに従って考案されうる。例えば、追加の機構を設けることで、最も古いエントリが、所定の回数を超える回数バイパスされることがないように、古い要求が、新しい要求よりも高い優先権を与えられうる。別の可能な方式として、ページミスよりもページヒットを優先し、ページコンフリクトよりもページミスを優先する方式も考えられる。複数の異なるアービトレーション方式にページの使用の最適化が関与しており、本明細書に明示的に開示しないものの、他のさまざまな優先度方式も可能であり、考察されることを、当業者は認めるであろう。アービトレーションによってＤＣＱ１１４からコマンドが選択されると、選択されたコマンドが、関連するアドレス情報と共に、マルチプレクサ１１６からパッド１２４ａを介して、ＤＲＡＭ１０５に提供されうる。
【００２５】
また、ＤＲＡＭコントローラ１０５は、バックエンドのリードキュー１２０とライトキュー１１８も有する。ライトキュー１１８は、ライトデータ要求のコマンド部分が完了し、ＤＣＱ１１４が解放された後に、このようなライトデータ要求を所定の数（一部の実施形態では６）記憶するために、使用されうる。このため、ライトキュー１１８は、メモリコントローラのデータバッファからのデータの読み出しをより正確なタイミングで可能にする。リードキュー１２０は、ライトデータ要求のコマンド部分が完了し、ＤＣＱ１１４が解放された後に、このようなライトデータ要求を所定の数（一部の実施形態では１２）記憶するために、使用されうる。このため、リードキュー１２０は、ＤＤＲメモリの場合に、負クロックドメインにデータを転送するために、ＤＤＲトリガ信号ＤＱＳおよびデータレシーバ、受信ＦＩＦＯ（先入れ先出し）バッファ１２２の制御を支援する。
【００２６】
自動プリジャージ予測を使用した、ページの使用の最適化
ＤＲＡＭコントローラ１０３は、ＤＲＡＭ１０５の各バンクについてページアクティビティの履歴を追跡することによって、ページの使用を最適化しうる。所定のバンクに対する最近のアクセスの履歴により、ＤＲＡＭコントローラ１０３は、リード／ライトオペレーション後に自動プリジャージを開始すべきか、または、メモリページを開いたままにすべきかを決定することができる。ページを開いたままにすべきであると決定された場合には、この履歴を使用して、ページが開かれたまま（おそらく遊休のまま）である場合にページを閉じるまでの期間も決定される。一組の実施形態では、ＤＲＡＭ１０５内の全ページの履歴が追跡されうる。しかし、これをハードウェアで実装するのが実際的ではない場合には、ＤＲＡＭコントローラ１０３は、バンク毎に、（例えば、ＤＲＡＭページテーブル１０６を使用して）ページヒット、ページミスおよびページコンフリクトの履歴を追跡する一方、（ＤＲＡＭページテーブル１０６と共にバンク履歴テーブル１０８を使用して）バンクベースではない一次ベースの履歴に予測を行うように構成されてもよい。
【００２７】
バンク履歴
前述のように、ＤＲＡＭコントローラ１０３は、ＤＲＡＭ１０５の各ＤＲＡＭバンクについてページアクティビティの履歴を追跡しうる。バンク履歴テーブル１０８内の各エントリには、（ＤＲＡＭページテーブル１０６に記憶されている）特定のバンク内の最近の４回のページアクセスの履歴に基づく予測が含まれうる。ある要求が、アービタ１１２からのアービトレーションによって現在の要求として選択されると、現在の要求が、同じバンク内の、そのバンクに対して行われた前の要求と同じＤＲＡＭページに対するものであるかどうかに応じて、バンク履歴が更新されうる。換言すれば、追跡がバンク毎に行われるため、この指標は、現在の要求がページヒットであるかどうかの指標とはわずかに異なる。例えば、現在の要求がページミスとなったが、現在要求されているバンクに対して最後に要求されたのと同じページを要求している場合、要求されたバンクについて、要求されたバンクに対するページアクセスが追跡されているという観点から、現在の要求は、「ヒット」と考えられる。別の言い方をすると、要求されたページが閉じられたタイミングが早すぎたと仮定すると、ページミスが、実際には、現在の要求がページヒットであったことを示すことがある。仮にそのページが閉じられていなければ、現在の要求により、ページミスではなく、ページヒットまたはページコンフリクトが発生したはずである。ここで説明している実施形態では、プリフェッチおよびライトにより、ページ履歴テーブル１０８が更新されることがないが、別の実施形態では異なって構成されてもよい点に留意すべきである。
【００２８】
図３は、バンク履歴テーブル１０８のアクセスおよび更新の一実施形態を示す。図の実施形態では、バンク履歴テーブル１０８のエントリは、自動プリジャージ予測ビット（ＡＰ）を有し、このビットは、自動プリチャージが予測されることを示す「１」の値と、自動プリチャージが予測されないことを示す「０」の値をとることができる。しかし、別の実施形態では、特定の値が示す意味が明らかである限り、自動プリジャージの予測を示すＡＰの値が、図の値と異なっていてもよい。図３に示すように、バンク履歴テーブル１０８は、個々の４ビットインデックスに対応する１６のエントリ（２１０）を有し、各インデックスは、特定のバンクに対する最近の４回のページアクセス／要求に対応するバンク履歴に基づいて作成されうる。換言すれば、現在要求されているページの予測のエントリにアクセスするためのインデックスは、現在要求されているバンクへの最近の３回のアクセス（すなわち、ＤＲＡＭページテーブル１０６に記憶されているバンク履歴情報）と、現在の要求とに基づいて作成されうる。
【００２９】
特定のページに対する予測は、アービタ１１２が現在の要求を選択した後に実行され、その際、前述のようにインデックス値を使用して、バンク履歴テーブル１０８内の対応する予測値がアクセスされうる。図３に示すように、現在要求されているバンクへの最近の３回のアクセスの履歴に対応する３ビット（２０６）と、現在の要求（２０８）とが使用され、バンク履歴テーブル１０８内の、現在要求されているページに対する予測値にアクセスするためのインデックスが作成される。追加のクロックサイクルによるページヒットの遅延を防ぐために、予測値へのアクセスが１クロックサイクルで行われることが望ましい。
【００３０】
一組の実施形態では、インデックスは、チップセレクト信号／バンクセレクト信号とページヒット信号とを多重化し、ページテーブル１０６からのバンク履歴を多重化することにより生成されうる。この点において、別の実施形態では、少なくとも、追跡されている最近の要求／アクセスの数によって決定されるエントリの数が異なっていてもよい点に留意すべきであり、可能な変形例は、図３に示す実施形態に限定されないということを当業者は認めるであろう。例えば、バンクへの５回の最近のアクセス／要求が追跡される場合、バンク履歴テーブル１０８は、４ビットの過去のバンク履歴と、現在の（新しい）バンク履歴とを含む５ビットのインデックスに基づいてアクセス可能な３２のエントリを有するように構成されうる。結論として、追跡される最近のアクセスの数には４以外の値を指定することができ、追跡される最近のアクセスの数が４とは異なる多くの実施形態も可能である。
【００３１】
その後、バンク履歴テーブル１０８が、予測の後のクロックサイクル中に更新されうる。図３に示すように、予測の後に、ＤＲＡＭページテーブル１０６から取得される４ビットのバンク履歴、すなわち、現在要求されているバンクへの最近の４回のアクセスの履歴に対応する４ビット（２０２）によって定義されるインデックスに対応するエントリ（ＡＰ）の値を更新することにより、バンク履歴テーブル１０８が更新されうる。現在の要求がページヒットとなる場合、ＡＰが「０」に更新されうる（一部の実施形態では、下で更に詳細に後述する信頼度カウンタにも従う）。現在の要求がページコンフリクトとなる場合、ＡＰが「１」に更新されうる（この場合も、一部の実施形態では信頼度カウンタにも従う）。現在の要求がページミスとなる場合、現在要求されている行が、要求されているバンク内の最後にアクセスされた／要求された行であればＡＰが「０」に更新され、そうでない場合にはＡＰが「１」に更新されうる（この場合も、一部の実施形態では信頼度カウンタにも従う）。バンク履歴テーブル１０８が更新されると、ページテーブル１０６内の現在要求されているバンクに対応するバンク履歴のエントリが、新しいバンク履歴を反映するために更新され、この履歴には、現在発生しているか完了したメモリアクセスが含まれるようになる。
【００３２】
上で説明したように、一組の実施形態では、バンク履歴テーブル１０８の予測値ＡＰの更新が、付加的に、信頼度カウンタに基づいても実行されてもよい。バンク履歴テーブル１０８の各エントリは、対応するＮビットの信頼度カウンタ値も有しうる。カウンタは、このカウンタに対応するバンクの予測が正確であった場合にインクリメントされ、ビット数によって決まる値で飽和する。例えば、バンク履歴テーブル１０８の各エントリが、対応する２ビットの信頼度カウンタを有する場合、カウンタは３で飽和しうる。予測が誤っていた場合、カウンタがデクリメントされうる。カウンタがゼロになると、予測値（すなわちバンク履歴テーブル１０８内のＡＰの対応する値）が反転され、一連の予測が誤っていたことを示すようになる。カウンタ値が、任意のビット数を有してもよく、ここで使用した実際の値は単に例示に過ぎないということを当業者は認めるであろう。
【００３３】
自動プリジャージ予測アルゴリズム
上で説明したバンク履歴の追跡は、ＤＲＡＭコントローラ１０３によって実行される、３レベルの予測を含む自動プリジャージ予測アルゴリズムの一部として使用されうる。
【００３４】
レベル１：ＤＣＱ１１４内の今後実行される要求を使用して、特定のバンク内の最後にアクセスされたＤＲＡＭページを、アクセス後に直ちに閉じるべきか、あるいは開いたままにすべきかが決定されうる。すなわち、レベル１の自動プリジャージ予測を実行するために、ＤＣＱ１１４内の他の待機中の要求が、特定のＤＲＡＭバンクに対するものであるかどうかの状態が使用されうる。このため、ＤＣＱ１１４内の待機中の各要求が評価され、その要求に対するバンクと、その要求がその特定のバンク内の現在開かれているページに対するものであるかどうかが決定されうる。一組の実施形態では、この評価は、現在処理中のメモリ要求に対してアクセスされている開かれているページ（およびその対応する特定のバンク）に対してなされうる。すなわち、待機中の各要求が評価され、その要求が、アクセスされているバンクおよび／またはページに対する要求であるかどうかが決定され、現在処理中のメモリ要求を、自動プリジャージを有効または無効にしてＤＲＡＭメモリに送信すべきかどうかが決定されうる。ＤＣＱ１１４内の待機中の要求が評価されると実行される動作は、以下の４つのカテゴリの１つでありうる。
【００３５】
（Ａ）ＤＣＱ１１４内の待機中の要求のうち、特定のバンク内のページに対するものが存在しない（すなわち、待機中の要求のうち、特定のバンク内のページを要求するものがなく、このため、その特定のバンク内の開かれているページに対してページヒットまたはページコンフリクトが発生しない）場合、上の「バンク履歴」の項目で説明したようにバンク履歴情報に従って、レベル２の予測が行われ（下記の「レベル２」の項目も参照のこと）、現在処理中のメモリ要求に対して自動プリジャージが対応して設定されうる。
【００３６】
（Ｂ）ＤＣＱ１１４内の待機中の要求のうち、特定のバンク内の開かれているページに対するものが存在しないが、少なくとも1つの待機中の要求が、特定のバンク内の閉じられているページに対するものである（すなわち、特定のバンクに対する待機中の要求のうち、特定のバンク内の開かれているページに対してページヒットとなるものが存在しないが、待機中の要求の少なくとも１つによりページコンフリクトが発生する）場合、バンク履歴テーブル１０８内の対応する予測の内容に関わらず、現在処理中のメモリ要求に対して自動プリジャージが有効にされうる。
【００３７】
（Ｃ）特定のバンクに対するＤＣＱ１１４内のすべての待機中の要求が、この特定のバンク内の開かれているページに対するものである（すなわち、特定のバンクに対するすべての待機中の要求が、特定のバンク内の開かれているページに対してページヒットとなる）場合、特定のバンク内の開かれているページが開かれたままとされうる、すなわち、現在のメモリアクセス後に自動プリジャージが実行されない。
【００３８】
（Ｄ）特定のバンクに対するＤＣＱ１１４内の待機中の要求の少なくとも１つが、その特定のバンク内の開かれているページに対するものであり、待機中の要求の少なくとも１つが、その特定のバンク内の閉じられているページに対するものである（すなわち、特定のバンクに対する待機中の要求の少なくとも１つが、特定のバンク内の開かれているページに対してページヒットとなり、これらの待機中の要求の少なくとも１つがページコンフリクトとなる）場合、特定のバンク内の開かれているページが開かれたままとされうる、すなわち、現在のメモリアクセス後に自動プリジャージが実行されない。ページヒットとなる待機中の要求は、先にＤＣＱ１１４から送られ、このような要求がすべて送られると、上の（Ｂ）に記載した状態となる。
【００３９】
以上のように、条件（Ｃ）と条件（Ｄ）を組み合わせて使用して、ＤＣＱ１１４内の待機中の要求の少なくとも１つが特定のバンク内の開かれているページに対するものである場合に、（その特定のバンクへの）現在のメモリ要求に対して自動プリジャージが無効すべきことが決定されうる。
【００４０】
レベル２：（上のレベル１の（Ａ）で説明したように）ＤＣＱ１１４内の待機中の要求のうち、特定のバンク内のＤＲＡＭページに対するものが存在しない場合、最近のバンク履歴情報を使用して、アクセス後にＤＲＡＭページを直ちに閉じるべきか、あるいは、開いたままにすべきかが予測されうる。この予測は、上の「バンク履歴」で説明したようにバンク履歴テーブル１０８においてアクセスされうる。
【００４１】
レベル３：ＤＲＡＭページがレベル１またはレベル２の予測に基づいて閉じられていない場合、そのＤＲＡＭページが開いたままにされるが、最後にアクセスされた時点から特定の（プログラム可能な）クロックサイクル数の間、遊休状態であれば閉じられうる。
【００４２】
ここでも、自動プリジャージの決定が、上のレベル１の（Ａ）で説明したように、レベル１の予測によって決定された要求に対しては、ＤＲＡＭページテーブル１０６のバンク履歴、バンク履歴テーブル１０８の予測値、および対応する信頼度カウンタ値が更新されない点に留意されたい。同様に、プリフェッチおよびライト要求によって、バンク履歴テーブル１０８を使用した予測、またはバンク履歴テーブル１０８の更新が行われないこともある。このようなタイプの要求と併せて自動プリチャージが実行されるかどうかも、上のレベル１の（Ａ）に記載したようにレベル１の予測によって決定される。しかし、ＤＲＡＭコントローラ１０３が、バースト書き込みの最後のライト要求の後に自動プリチャージを常に開始するように構成され、プリフェッチおよびライト要求が、ほかの要求のようにページヒット／ページコンフリクトに影響してもよい。
【００４３】
上で説明したように、自動プリチャージ予測アルゴリズムを使用して、リード／ライト要求に対して自動プリチャージを実行すべきかどうかが予測されうる。予測によりリード／ライト要求に対して自動プリチャージが行われない場合、開かれているページをいつ閉じるべきかの問題が依然として残る。ページが開かれているが、長時間遊休状態である場合、バンク履歴予測が誤っていた可能性があり、その結果、ページコンフリクトが発生することがある。このため、ＤＲＡＭコントローラ１０３は、特定のページが開かれている期間を追跡するための、ＤＲＡＭページテーブルのエントリのそれぞれに対応する個々のアイドルサイクルカウンタを備えるように構成されうる。一組の実施形態では、開かれているページに対応するアイドルサイクルカウンタが所定の限度に達すると、ＤＲＡＭコントローラ１０３は開かれている（アイドリング、遊休の）ページを閉じるように動作しうる。一実施形態では、この所定の限度はプログラム可能でもよい。このため、ＤＲＡＭコントローラ１０３は、所定のクロックサイクル数（例えば一実施形態では１２８サイクル）の後に未使用の（遊休の）ページを閉じるか、または動的に調整された所定のクロックサイクル数（例えば１６、３２、６４、９６サイクルなど）後に、未使用のページを閉じ、この動的な調整は、ＤＲＡＭページテーブル履歴１０６内のこの特定のメモリページに対応するバンク履歴のエントリに基づいて行われうる。
【００４４】
図４は、メモリコントローラ（例えば図１，図２のメモリコントローラ１０３）によって実行されうる３レベルの自動プリチャージ予測アルゴリズムの一部分の一実施形態のフローチャートを示す。到着したメモリ要求（メモリコントローラが受け取ったメモリ要求など）が、未処理のメモリ要求としてキューに記憶されうる（４０２）。キューに記憶されている未処理のメモリ要求の１つが、処理／実行（service）のために選択されて、キューから削除され、選択されたメモリ要求によって要求されている特定のメモリページ（および対応する特定のメモリバンク）が特定されうる（４０４）。次に、この特定のメモリバンクへの最近のアクセス履歴に対応する現在の予測値に基づいて、特定のメモリページを閉じるか、または開いたままにすべきかの予測が行われうる（４０６）。予測を行ったら、この特定のメモリバンクに対する、最近の所定の数の前のメモリアクセスに対応する将来の予測値が更新されうる（４１２）。メモリキュー内の未処理のメモリ要求が分析され、キューに記憶されている未処理のメモリ要求の少なくとも１つが、この特定のメモリバンクへのアクセスを要求しているかどうかが決定される（４１０）。
【００４５】
４１０における分析により、キューに記憶されている未処理のメモリ要求の少なくとも１つが、この特定のメモリバンクへのアクセスを要求していることが示された（すなわち、キューに記憶されている未処理のメモリ要求の少なくとも１つが、この特定のメモリバンク内のメモリページに対するものである）場合、キューに記憶されている未処理のメモリ要求を使用して、この特定のメモリページを閉じるか、または開いたままにすべきかが決定されうる（４１４，４１８）。一方、４１０における分析により、キューに記憶されている未処理のメモリ要求のうち特定のメモリバンクへのアクセスを要求するものが存在しないことが示された場合、４０６で行った予測に従って、この特定のメモリページが閉じられるか、または開いたままにされうる（４１６）。
【００４６】
４１８または４１６のいずれかにより、この特定のメモリページを閉じるべきことが示された場合、選択されたメモリ要求のためのこの特定のメモリページへのアクセスが完了したら（一部の実施形態では、メモリが再びアクセスされる前に）、特定のメモリページが閉じられうる（４２２）。特定のメモリページを開いたままにすべきであると決定された場合、選択されたメモリ要求のためのこの特定のメモリページへのアクセスが完了したあと、そのメモリページが開いたままにされ（４２４）、所定の期間、特定のメモリページが遊休状態であれば、この所定の期間後にこのメモリページが閉じられうる（４２６）。この所定の期間は、クロックサイクルを使用して測定されても、プログラムされてもよい。例えば、特定のメモリページが１２８クロックサイクルの間遊休状態であれば、この特定のメモリページが閉じられうる。特定の実施形態では、クロックサイクル数が、この特定のメモリバンクへの最近のアクセス履歴に基づいて動的に調整されうる。例えば、この特定のメモリバンクへの最近のアクセス履歴に基づいて、１２８クロックサイクルが、１６、３２、６４クロックサイクルなどに調整されうる。一部の実施形態では、アルゴリズムが、この特定のメモリバンクに対する最近のアクセス履歴を更新し、４０６において予測が行われると、この特定のメモリバンクに対する最近のアクセス履歴に対応する予測値を更新してもよい。
【００４７】
図４のフローチャートが、選択された（このため現在の）メモリアクセスによって、この特定のメモリページへの実際のアクセスがいつ行われるかについては指定していないという点を、ここで注意すべきである。一組の実施形態では、この特定のメモリページへの今後実行されるアクセスについて決定されてから、この特定のメモリページへのアクセスが行われてもよい。別の組の実施形態では、この決定が行われている間、または決定が行われる前に、アクセスが行われてもよい。しかし、選択されたメモリ要求のためのこの特定のメモリページへのアクセスが完了した後に（特定の実施形態では、メモリが別のメモリ要求によってアクセスされる前に）、この特定のメモリページの状態が決定される。このため、一部の実施形態では、この特定のメモリページへの今後実行されるアクセスについて決定されると、（特定のメモリページにアクセスするために）選択されたメモリ要求（コマンド）が、選択されたメモリコマンドに対する自動プリチャージ標識を有効にしてメモリに転送されうる。この自動プリチャージ標識は、この特定のメモリページを閉じるべきであると予測された場合に有効にされ、この特定のメモリページを開いたままにすべきであると予測された場合に無効にされる。自動プリチャージが有効にされている場合、選択されたメモリ要求のためのこの特定のメモリページへのアクセスが完了したら、この特定のバンク内の特定のメモリページに対応する行が自動プリチャージされうる。自動プリチャージが無効にされている場合、選択されたメモリ要求のためのこの特定のメモリページへのアクセスの完了後に、この特定のバンク内の特定のメモリページに対応する行の状態が変更されることはない。
【００４８】
このように、ＤＲＡＭコントローラは、ページヒットの数を最大限に増やし、ページコンフリクトの数を最小限に減らすように、リード／ライト要求をリオーダーするように構成されうる。その際、ＤＲＡＭ内に構成されている個々のページのすべてを追跡することなく、最適な性能を実現するために、リード／ライト要求の後にプリチャージを行うべきかどうかを予測するための、３レベルの自動プリチャージ予測アルゴリズムを実行することによって得られる自動プリチャージ予測によって、リオーダーの実行が通知されうる。
【００４９】
本発明を特定の実施形態を参照して記載したが、この実施形態は例示であり、本発明の範囲はこれに制限されないことが理解されよう。記載した各種実施形態のどのような変形、変更、追加および改良も可能である。このような変形、変更、追加および改良は、添付の特許請求の範囲に詳述する発明の範囲に含まれうる。
【産業上の利用可能性】
【００５０】
本発明は、一般にマイクロプロセッサに利用可能である。
【図１】
2010537310.tif 000003
【図２】
2010537310.tif 000004
【図３】
2010537310.tif 000005
【図４】
2010537310.tif 000006
【手続補正書】
【提出日】平成21年7月8日(2009.7.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のメモリバンクを有するメモリ（１０５）へのアクセスを管理する方法であって、
現在のメモリ要求によって要求されている、前記複数のメモリバンクの特定のメモリバンク内の特定のメモリページを特定するステップ（４０４）と、
前記特定のメモリバンクへの最近のメモリアクセスの履歴に対応する現在の予測値に基づいて、前記特定のメモリページを閉じるべきか、または開いたままにすべきかを決定するステップ（４０６）と、
前記現在のメモリ要求のための前記特定のメモリページへのアクセスが完了すると、
前記決定により、前記特定のメモリページを閉じるべきであると決定されると、前記特定のメモリページを閉じるステップ（４２２）、または、
前記決定により、前記特定のメモリページを開いたままにすべきであると決定されると、前記特定のメモリページを開いたままにするステップ（４２４）、の一方を実行するステップと、
前記メモリへのアクセスを待機している１つ以上の追加のメモリ要求のうち、前記特定のメモリバンク内のメモリページを要求するものが存在しないことを決定するステップと、を含み、
前記１つ以上の追加のメモリ要求のうち、前記特定のメモリバンク内のメモリページを要求するものが存在しないことが決定されると、前記特定のメモリページを閉じるべきか、または開いたままにすべきかかの前記決定が実行される方法。
【請求項２】
前記一方の実行は、前記現在のメモリ要求のための前記特定のメモリページへのアクセスの完了後、前記メモリが再度アクセスされる前に実行される請求項１に記載の方法。
【請求項３】
前記特定のメモリページが、所定の期間、遊休状態であった場合、前記現在のメモリ要求のための前記特定のメモリページへのアクセスから前記所定の期間の経過後に、前記特定のメモリページを閉じるステップ（４２６）を更に有する請求項１に記載の方法。
【請求項４】
前記特定のメモリバンクへの第１の数の最近のメモリアクセスに対応する第１の情報と、
前記現在のメモリ要求のための前記特定のメモリページへの前記アクセスに対応する第２の情報とに従って、前記現在の予測値を取得するステップを更に有する請求項１に記載の方法。
【請求項５】
複数のメモリ要求を受け取り、前記受け取ったメモリ要求を未処理のメモリ要求としてキューに記憶するステップ（４０２）と、
前記キューに記憶されている前記未処理のメモリ要求の１つを選択し、前記キューから前記選択されたメモリ要求を削除する（４０４）ステップと、
前記選択されたメモリ要求によって要求されている第１のメモリページと、対応する第１のメモリバンクとを特定するステップ（４０４）と、
前記第１のメモリバンクへの最近のメモリアクセスの履歴に対応する現在の予測値に基づいて、前記第１のメモリページを閉じるべきか、または開いたままにすべきかを予測するステップ（４０６）と、
前記キューに記憶されている前記未処理のメモリ要求のうち、前記第１のメモリバンクへのアクセスを要求するものが存在しないことを決定するステップ（４１０）と、
前記決定が行われると、
前記予測により、前記第１のメモリページを閉じるべきであると予測されると、前記選択されたメモリ要求の自動プリジャージを有効にするステップ（４２２）、または
前記予測により、前記第１のメモリページを開いたままにすべきであると予測されると、前記選択されたメモリ要求の前記自動プリジャージを無効にするステップ（４２４）、の一方を実行するステップと、を更に有する請求項１に記載の方法。
【請求項６】
１つ以上のメモリバンクを有するメモリ（１０５）へのアクセスを制御するように構成されたメモリコントローラ（１０３）であって、
前記１つ以上のメモリバンクのそれぞれに対して、個々のメモリバンクアクセス履歴情報を記憶するように構成されたページテーブル（１０６）と、
複数のエントリを有するメモリバンク履歴テーブル（１０８）とを備え、前記複数のエントリの各エントリは、前記１つ以上のメモリバンクの１つに対して、前記ページテーブルに記憶されている個々のメモリバンクアクセス履歴情報に対応する個々の予測値を記憶するように構成され、
前記メモリコントローラは、現在のメモリ要求の対象である、前記１つ以上のメモリバンクの特定のメモリバンク内の特定のメモリページを特定するように構成され、
前記メモリコントローラは、前記メモリバンク履歴テーブルから現在の予測値を取得するように更に構成され、前記現在の予測値は、前記特定のメモリバンクに対して、前記ページテーブルに記憶されている前記個々のメモリバンクアクセス履歴情報に少なくとも基づき、前記現在の予測値は、前記メモリコントローラが前記特定のメモリページを閉じるべきか、または前記特定のメモリページを開いたままにすべきかを前記メモリコントローラに指示し、
前記メモリコントローラは、未処理のメモリ要求のうち、前記特定のメモリバンクに対するものが存在するかどうかを決定し、未処理のメモリ要求のうち、前記特定のメモリバンクに対するものが存在しないと決定されると、前記現在のメモリ要求のための前記特定のメモリページへのアクセスが完了すると、前記現在の予測値の内容に従って前記特定のメモリページを閉じるか、または開いたままにするように構成され、
前記未処理のメモリ要求は、前記メモリへのアクセスを待機している１つ以上の追加のメモリ要求を含むメモリコントローラ。
【請求項７】
前記メモリバンク履歴テーブルの特定のエントリから前記現在の予測値を取得し、前記特定のエントリの位置は、
前記特定のメモリバンクに対して、前記ページテーブルに記憶されている前記個々のメモリバンクアクセス履歴情報の少なくとも最初の部分と、
前記現在のメモリ要求に対応するメモリバンクアクセス情報とによって決定され、
前記未処理のメモリ要求のうち、前記特定のメモリページに対するものが存在せず、前記未処理のメモリ要求の少なくとも１つが、前記特定のメモリバンク内の閉じられているメモリページに対するものである場合、前記現在のメモリ要求のための前記特定のメモリページへのアクセスが完了すると、前記特定のメモリページを閉じ、
前記未処理のメモリ要求のうち、前記特定のメモリバンク内の閉じられているいずれかのメモリページに対するものが存在せず、前記未処理のメモリ要求の少なくとも１つが、前記特定のメモリページに対するものである場合、前記現在のメモリ要求のための前記特定のメモリページへのアクセスが完了すると、前記特定のメモリページを開いたままにし、
前記未処理のメモリ要求の少なくとも１つが、前記特定のメモリページに対するものであり、前記未処理のメモリ要求の少なくとも１つが、前記特定のメモリバンク内の閉じられているメモリページに対するものである場合、前記現在のメモリ要求のための前記特定のメモリページへのアクセスが完了すると、前記特定のメモリページを開いたままにし、
前記現在の予測値を取得した後に前記メモリバンク履歴テーブルに記憶されている将来の予測値を更新し、
前記メモリバンク履歴テーブルの特定のエントリに記憶されている前記将来の予測値を更新し、前記特定のエントリの位置は、前記特定のメモリバンクに対して、前記ページテーブルに記憶されている前記個々のメモリバンクアクセス履歴情報によって決定され、
前記現在のメモリ要求に対応するメモリアクセス状況を特定し、前記メモリアクセス状況に従って前記将来の予測値を更新するように更に構成され、前記メモリアクセス状況は、
前記特定のメモリページが既に開かれていることを示すページヒット、
前記特定のメモリバンク内のどのページも開かれていないことを示すページミス、または
前記特定のメモリページが開かれておらず、前記特定のメモリバンク内の別のメモリページが開かれていることを示すページコンフリクトの１つである、請求項７に記載のメモリコントローラ。
【請求項８】
前記メモリアクセス状況がページヒットの場合、前記メモリコントローラは、前記将来の予測値を、前記特定のメモリページを開いたままとすべきであることを示すように更新するように動作可能であり、
前記メモリアクセス状況がページコンクリクトの場合、前記メモリコントローラは、前記将来の予測値を、前記特定のメモリページを閉じるべきであることを示すように更新するように動作可能であり、
前記メモリアクセス状況がページミスであり、前記特定のメモリバンク内で最後に開かれているページが前記特定のメモリページでない場合、前記メモリコントローラは、前記将来の予測値を、前記特定のメモリページを閉じるべきであることを示すように更新するように動作可能であり、
前記メモリアクセス状況がページミスであり、前記特定のメモリバンク内で最後に開かれているページが前記特定のメモリページである場合、前記メモリコントローラは、前記将来の予測値を、前記特定のメモリページを開いたままにすべきであることを示すように更新するように動作可能であり、
前記メモリバンク履歴テーブルの各エントリは、個々の信頼度カウンタ値を記憶するように更に構成され、
前記メモリコントローラは、前記メモリバンク履歴テーブルの特定のエントリに、前記将来の予測値を記憶するように動作可能であり、
前記メモリコントローラは、前記メモリアクセス状況と、前記特定のエントリに記憶されている前記個々の信頼度カウンタ値とに従って、前記将来の予測値を更新するように動作可能である、請求項７に記載のメモリコントローラ。
【請求項９】
システム（１００）であって、請求項６に記載のメモリコントローラ（１０３）を備え、前記メモリコントローラに結合された１つ以上の記憶素子（１０５）を更に備え、
前記メモリコントローラは、前記１つ以上の記憶素子へのアクセスを制御するように構成されているシステム。
【国際調査報告】
2010537310.tif 000007
2010537310.tif 000008
2010537310.tif 000009