JP5305542B2 - 投機的なプリチャージの検出 - Google Patents

投機的なプリチャージの検出 Download PDF

Info

Publication number
JP5305542B2
JP5305542B2 JP2010521845A JP2010521845A JP5305542B2 JP 5305542 B2 JP5305542 B2 JP 5305542B2 JP 2010521845 A JP2010521845 A JP 2010521845A JP 2010521845 A JP2010521845 A JP 2010521845A JP 5305542 B2 JP5305542 B2 JP 5305542B2
Authority
JP
Japan
Prior art keywords
memory
page
bank
access
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010521845A
Other languages
English (en)
Other versions
JP2010537310A (ja
Inventor
イー. マドリッド フィリップ
アスカー ターシン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2010537310A publication Critical patent/JP2010537310A/ja
Application granted granted Critical
Publication of JP5305542B2 publication Critical patent/JP5305542B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing or allocation; Relocation with look ahead addressing means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement

Landscapes

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

Description

本発明は、一般に、メモリシステムの分野に関し、より詳細には、メモリコントローラの設計に関する。
今日のコンピュータシステムが一層複雑さを増し、技術の進歩に伴ってプロセッサの速度が上がるのに伴い、多くの場合、帯域幅と所定のシステムのメモリのレーテンシに大きく依存するシステムの性能を最適化することが一層困難となっている。この結果、レーテンシを最小限に抑えてメモリにアクセスし、メモリ帯域幅を最大限に使用することで、システムの性能を改善および/または最適化することができる。メモリにアクセスし、特定のメモリ要求を完了するのに要する時間が長くなると、システムが低速化する。このため、アクセス時間の短縮および/またはメモリバスのスループットの全体的な向上が、システムの性能に寄与しうる。
デスクトップコンピュータ、グラフィックアダプタカード、ノートブックコンピュータなどの多くのシステムが、ダイナミックランダムアクセスメモリ(DRAM)を使用している。DRAMデバイスは、特にスタティックランダムアクセスメモリ(SRAM)デバイスなどの他のメモリ技術に比べて多くの利点を有する。このような利点のうち最も重要なのは、記憶密度の高さと電力消費の低さである。しかし、このような利点は、その後アクセスが行われる度(例えば、各リード/ライトアクセスの前後など)に、DRAMデバイス内のメモリセルや他のコンポーネントを準備する際に発生する、各種の時間遅延という代償を伴う。このような遅延の例としては、行(row)のプリチャージ、行のリフレッシュおよび行のアクティブ化(activation)の実行に要する時間が挙げられる。このような遅延の発生時に、メモリオペレーションをより厳密に管理および制御するために、リード/ライトアクセス中に送信する追加のコマンドが追加されており、オーバーヘッドにつながっている。今日使用されているDRAMのほとんどがダブルデータレートシンクロナスDRAM(DDR SDRAM)ファミリに属する。
DDR SDRAM(DDR2とDDR3を含む)は、システムクロックに基づき、ストローブ信号の立ち上りエッジと立ち下りエッジでデータを転送することで、シングルデータレートSDRAMよりも広い帯域幅を実現している。これにより、転送速度が実際上2倍に上がり、メモリバスの周波数を上げる必要なく、システムの性能を向上させることができる。DRAMの性能を更に向上させるために、記憶素子がページ構成でアクセスされる場合が多い。この構成では、別個の列アドレスストローブ(CAS)信号を使用して、複数のリードまたはライトを実行している間に、DRAMの行が作動される、すなわち開かれる(行アドレスストローブ(RAS)信号をアサートに保持しておく必要がない)。これにより、通常は、プリチャージと行のアクセスに伴う遅延を回避するために、同じ行内で連続してリードまたはライトを行うことが可能となり、バーストデータ転送中のシステムの性能が顕著に向上する。
一般に、メモリページを開いた後でなければ、ページからのリードまたはページへのライトを実行することができない。DRAMコントローラは、リード/ライトコマンドの直後にページを閉じるか、あるいは、ページを開いたままにすると決定しうる。しかし、DRAMコントローラは、処理能力に限界があるため、多くの開かれているページを処理することができないことがある。この結果、DRAMコントローラは、ページを開いたままにすれば、後に転送を実行する際にアクセス遅延を一部低減できる場合であっても、開かれているページの一部を閉じる必要があることがある。このように、DRAMコントローラの限界が、DRAMメモリの動作を十分に活用する上での障害となることがある。
従来技術に関連するほかの対応する問題は、このような従来技術と、本明細書に記載の本発明とを比較することにより、当業者にとって明らかとなろう。
システム(コンピュータシステムなど)は、DRAM(ダイナミックランダムアクセスメモリ)バスに結合されたDRAMデバイスと、DRAMデバイスへのアクセスを管理および制御するように構成されたDRAMコントローラとを備えうる。リードオペレーションまたはライトオペレーションのためにメモリページにアクセスできる前に、そのメモリページが既に開かれていれば、そのメモリページは開く必要がない。DRAMコントローラは、そのページにアクセスしたリード/ライト要求の直後に、開かれているページを閉じるか、ページを開いたままにすると決定しうる。多くの開かれているページを処理できるDRAMコントローラの能力に限界がある場合、場合によっては、ページを開いたままにすれば、(新しいページを開くための)アクティブ化コマンドと(開かれているページを閉じるための)プリチャージコマンドを追加で発行する必要がなくなることで、メモリへのアクセス時間をかなり短縮できる場合であっても、1以上の開かれているページを閉じる必要があることがある。DRAMコントローラが一度に多くの開かれているページを処理できる能力に限界がある場合でも、DRAMバスの全体のスループットを向上させることができる。一組の実施形態では、DRAMコントローラは、その後実行するリード/ライトアクセスの間に発行する必要があるアクティブ化コマンドとプリチャージコマンドを最小限に減らすために、効率的なページポリシーに従って、どのページを開いたままにするか、およびどのページを閉じるかを決定するように構成されうる。
メモリコントローラ(例えばDRAMコントローラ)は、メモリアクセスを改善するための3レベルの自動プリチャージ予測アルゴリズムに従って動作するように構成されうる。DRAMコントローラは、各DRAMバンクについてページアクティビティの履歴を追跡することによって、ページの使用を最適化しうる。特定のバンクへの最近のアクセスの履歴により、DRAMコントローラは、リード/ライトオペレーションの後に、アクセスしたページに対応する行の自動プリジャージを開始すべきか、または、アクセスしたページを開いたままにすべきかを決定することができる。ページを開いたままにすべきであると決定された場合には、特定のページに対する最近のアクセスの履歴を使用して、ページが開かれたまま(かつ未使用)である場合にページを閉じるまでの期間も決定される。このため、DRAMコントローラは、バンク毎に、ページヒット(DRAMの特定のバンク内の既に開かれている行に対して行われる要求)、ページミス(DRAMのどの行も開かれていない特定のバンク内の行に対して行われる要求)、およびページコンフリクト(DRAMの、別の異なる行が既に開かれている特定のバンク内の行に対して行われる要求)の履歴を追跡する一方、バンクベースではない一次ベースの履歴(first order based history that is not bank based)に予測を行うように構成されうる。
一組の実施形態では、DRAMコントローラはページテーブルを有し、このテーブルの各エントリが、特定のメモリバンクに行った最近の4回の履歴アクセスを記録しうる。また、DRAMコントローラは、メモリバンク履歴テーブルも有しうる。あるメモリ要求がアービトレーションで選択されると、DRAMコントローラは、その要求が、特定のメモリバンク内の、前のメモリ要求と同じDRAMページに対するものであるかどうかの指標によって、メモリバンク履歴テーブルを更新しうる。ページミスが、特定のバンク内の最も最近アクセスされたメモリページ(現在閉じられている)であるメモリページを要求することがあるため、この指標は、要求がページヒットであったかどうかの指標とは実際には異なる。
アービトレーションによってある要求が選択されると、予測が実行されうる。選択時に、メモリバンク履歴テーブルが、対象のバンクに対する最近のM回のアクセス(例えば3回のアクセス)と、選択されたアクセスとにより、インデックスされうる。予測が行われたサイクルの後に、メモリバンク履歴テーブルが更新されうる。この更新は、対象のバンクに対して、DRAMページテーブルに記憶されている、対応する(M+1)ビット(例えば、Mが3の場合、4ビット)のバンク履歴情報によってインデックスされている位置に記憶されている値に対して実行されうる。一組の実施形態では、予測の更新は、信頼度カウンタに基づいて行われうる。メモリバンク履歴テーブルの各エントリは、Nビット(例えば2ビット)の信頼度カウント値を有しうる。DRAMコントローラは、予測が正しかった場合、信頼度カウント値(最大値で飽和)をインクリメントしうる。DRAMコントローラは、予測が正しくなかった場合に、信頼度カウント値をデクリメントしうる。その後、カウンタが所定の値(ゼロなど)に達した場合にのみ、DRAMコントローラは予測値を更新しうる。別の実施形態では、カウント値は、初期値として小さい値が設定されて、インクリメントされ、予測値の更新を示す指標として最大値が使用されてもよい。履歴、予測、および信頼度カウント値の更新は、下で更に詳細に説明するように、自動プリチャージの決定が、バンクヒットまたはバンクコンフリクトによって決定された要求に対しては実行されない。
メモリバンク履歴テーブル内の予測値が示す自動プリチャージ予測の代わりに、キュー内の他の未処理の要求が、特定のDRAMバンクに対する要求であるかどうかの状態が使用され(supersede)うる。例えば、メモリバンク履歴テーブルに記憶されている、現在のメモリ要求に対応する予測値により、自動プリチャージを有効にして、現在のリード/ライト要求をDRAMメモリに送信すべきであることが予測されうる。しかし、要求キューに、現在のメモリ要求と同じDRAMページに対する、1つ以上の待機中の要求が含まれることもある。このことは、この場合、自動プリチャージが有利ではないことを示しうる。
一組の実施形態では、(例えばアービトレーションの結果)未処理のメモリ要求が現在のメモリ要求として選択されると、バンク履歴予測を確認(qualify)するために、バンクヒット信号とバンクコンフリクト信号(それぞれ、対象のメモリバンク内の潜在的なページヒットおよびページミスに対応する)が生成されうる。DRAMコントローラが、未処理のメモリ要求のうち、ページヒットまたはページコンフリクトとなるものが存在しない(すなわち、未処理のメモリ要求のうち、対象のメモリバンクへのアクセスを要求するものが存在しない)ことを決定すると、DRAMコントローラは、(前述のように)バンク履歴予測に基づいて、現在のメモリ要求に対して自動プリチャージを設定しうる。未処理のメモリ要求のうちページヒットとなるものが存在しないが、未処理のメモリ要求の少なくとも1つがページコンフリクトとなる場合、現在のメモリ要求に対して自動プリチャージが有効にされうる。未処理のメモリ要求の少なくとも1つがページヒットとなる場合、現在のメモリ要求に対して自動プリチャージが無効にされうる。
リード/ライト要求により自動プリチャージが行われない場合、DRAMコントローラは、アイドルサイクルカウンタを使用して、所定の期間の経過後に開かれているページが遊休状態であった場合、このページを閉じるべきかを決定しうる。一実施形態では、DRAMページテーブルの各エントリが、特定の開かれているメモリページが開かれている期間を追跡しうる。アイドルサイクルカウンタがプログラム可能な限界に達した場合、DRAMコントローラは開かれているメモリページを閉じうる。DRAMコントローラは、プログラム可能な固定のクロックサイクル数後に、未使用の(inactive)ページを閉じても、DRAMページテーブルのエントリの履歴に基づいて動的に調整される固定のクロックサイクル数後に、未使用のページを閉じてもよい。
メモリバスを介したメモリへのアクセスを制御するように構成されたメモリコントローラを備える例示的なシステムのブロック図。 図1のメモリコントローラの一実施形態の部分論理ブロック図。 一実施形態に係るバンク履歴テーブルのアクセスおよび更新を示す構造図。 3レベルの自動プリチャージ予測アルゴリズムの一部の一実施形態を示すフローチャート。
以下の詳細な説明を読み、添付図面を参照することにより、本発明の他の態様が明らかになるであろう。
本発明は、さまざまに変形されたり代替形態を取りうるが、その特定の実施形態が、例として図面に図示され、かつ本明細書に詳細に記載される。しかし、図面およびその説明は、本発明を開示された特定の形態に限定するようには意図されてはおらず、逆に、本発明は、添付の特許請求の範囲によって規定される本発明の趣旨および範囲内に入るあらゆる変更、均等物、および代替物を網羅するものであることが理解されるべきである。
本明細書で使用されるように、「特定のメモリバンクに対して行われるメモリ要求」または「開かれている/閉じられているメモリページに対して行われるメモリ要求」との文言は、そのメモリ要求が、その特定のメモリバンク、および/または開かれている/閉じられているメモリページへのアクセスを要求していることを指す。換言すれば、例えば、「開かれているページに対して行われるメモリ要求」との文言は、「開かれているページへのアクセスを要求しているメモリ要求」と同義である。同様に、「特定のバンクに対するメモリ要求」または「開かれている/閉じられているページに対するメモリ要求」との文言は、そのメモリ要求が、その特定のメモリバンク、および/または開かれている/閉じられているメモリページへのアクセスを要求していることを指す。
図1は、コンピュータシステムなど、基本の例示的なシステム100のブロック図を示し、処理ユニット100は、メモリコントローラ103に結合されたプロセッサコア101を備えて構成されている。メモリコントローラ103は、メモリバス111に結合され、メモリコントローラ103は、メモリバス111を介して、処理ユニット100とメモリ105との間のデータ交換を促すために、メモリ105へのアクセスを調整しうる。システム100は、さまざまな方法で実装することができ、メモリコントローラによってメモリアクセスが制御される基本的な構成を示すために図示されていることを当業者は認めるであろう。
一組の実施形態では、メモリコントローラ103は、システム100のニーズによって要求される一連の機能に対応するための、副次的な回路および/またはコンポーネント(レジスタなど)を備えてもよい。例えば、メモリコントローラ103は、メモリ105とプロセッサコア101間で転送中のデータをバッファするための各種バッファを備えても、サブ制御ブロックに分割されてもよい。同様に、メモリ105は、メモリバス111を介してメモリコントローラ103とインタフェースするように適合された、さまざまな構成の複数の記憶素子またはメモリデバイスを備えうる。各種の実施形態が可能であり、考察される。
一組の実施形態では、メモリ105はDRAM(ダイナミックランダムアクセスメモリ)であり、このためメモリコントローラ103はDRAMコントローラである。更に別の組の実施形態では、メモリ105は、ダブルデータレートDRAM(DDR DRAM)(DDR3メモリなど)を備え、これがDDR3メモリコントローラ103によって制御されていてもよい。一組の実施形態では、DRAMコントローラ103は、DRAMデバイス内のメモリページへのアクセスを管理および制御するように構成されうる。リードオペレーションまたはライトオペレーションのためにメモリページにアクセスする前に、そのメモリページを開く必要がある。DRAMコントローラ103は、リード/ライトアクセスの後、開かれているページを閉じるか、あるいはページを開いたままにすると決定しうる。一組の実施形態では、DRAMコントローラ103は、効率的なページポリシーに従って動作するように構成されている。このページポリシーは、後から実行されるリード/ライトアクセスの間に発行されるアクティブ化コマンドとプリチャージコマンドを減らし、このため、DRAMコントローラ103が、多くの開かれているページを同時に処理することができない場合であっても、DRAMバス111の全体のスループットを改善するように設計されている。
DRAMコントローラ103は、DRAM105とインタフェースする際に、リード要求およびライト要求を処理するように動作され、リード要求およびライト要求は、3つのタイプの異なるメモリアクセスとなりうる。1番目のタイプのメモリアクセスは、DRAM105の、既に別の行が開かれている特定のバンク内の行に対して行われる要求に対応しており、一般に「ページコンフリクト」と呼ばれる。ページコンフリクトの場合、要求されたリード/ライトオペレーションのためにDRAM105を準備するために、ページが、まずプリチャージコマンドにより閉じられ、次にアクティブ化コマンドによって開かれる。2番目のタイプのメモリアクセスは、DRAM105の、どの行も開かれていない特定のバンク内の行に対して行われる要求に対応しており、一般に「ページミス」と呼ばれる。ページミスの場合、要求されたリード/ライトオペレーションのためにDRAM105を準備するために、ページが、まずアクティブ化コマンドによって開かれる。3番目のタイプのメモリアクセスは、DRAM105の、特定のバンク内の既に開かれている行に対して行われる要求に対応しており、一般に「ページヒット」と呼ばれる。ページヒットの場合、要求されたリード/ライトオペレーションのためにDRAM105を準備する必要がなく、このため、最初に追加のコマンドを実行しなくても、要求されたリード/ライトオペレーションを実行できる。
したがって、ページヒットの数を最大限に増やし、ページコンフリクトとページのアクティブ化の数を最小限に減らすように、リード/ライト要求をリオーダーするようにDRAMコントローラ103を構成することが好ましいことがある。このため、要求のストリームに関連するアドレスのストリームにより、ページヒットが得られない場合には、DRAMコントローラ103は、ページコンフリクトに対抗する次善策として、ページミスを選択するように動作されうる。したがって、最適な性能を実現するために、DRAMコントローラ103は、3レベルの自動プリジャージ予測アルゴリズムを実行するように構成されうる。
図2は、3レベルの自動プリジャージ予測アルゴリズムを実行するように構成されているDRAMコントローラ103の可能な一実施形態を示す。一組の実施形態では、DRAMコントローラ103は、DRAMページテーブル106を使用して、特定の数の開かれているページ(一部の実施形態のでは、開かれているページ数が32)に対応することができる。DRAMページテーブル106は、チップセレクト信号およびバンク選択信号に基づいてインデックスされており、このため、全バンクをカバーしており、各バンクに対する行アドレスと最近のバンク履歴情報とを記憶するために使用されうる。また、DRAMページテーブル106は、リード/ライト要求により、ページヒット、ページミスまたはページコンフリクトのいずれが発生するかと、現在のリード/ライト要求に対して自動プリジャージを実行すべきかどうかとを決定するためにも使用されうる。アドレスマップ104は、プロセッサコア101から現在のリード/ライト要求に対応するアドレスを受け取り、DRAMページテーブル106内で現在の要求に対応するページを検索するためのインデックス(ルックアップ)信号を生成しうる。
到着したコマンドは、所定の数のエントリ(一部の実施形態では12のエントリ)を保持するように構成されうるDRAMコントローラ要求キュー(DCQ)114に入れられる。このため、DCQ114は、リード、ライトおよびプリフェッチのほか、DRAMアドレス情報、ページヒット/ページミス/ページコンフリクト情報、リード要求およびライト要求に対応する要求の優先度情報、およびプリフェッチコマンドを記憶するように構成されている。DCQ114は、上記の情報が取得されると割り当てられ、その後、要求の全コマンドシーケンスが完了すると解放されうる。また、DCQ114は、DRAMページテーブル106が変更される度に更新されうる。キューイングされたコマンドのアービトレーションは、アービタ112によって実行されうる。このアービトレーションは、DRAMページテーブル106から受け取ったページ情報とタイミングチェックブロック110から受け取ったタイミングチェック情報とに少なくとも基づき、所定の優先度方式に従って、および/またはさまざまな要求のタイプの優先度に従って行われる。一般に、到着した要求のアービトレーションは、多くの可能な優先度方式の1つ以上に従って実行され、各優先度方式は、特定のシステムの性能およびメモリの性能のニーズに従って考案されうる。例えば、追加の機構を設けることで、最も古いエントリが、所定の回数を超える回数バイパスされることがないように、古い要求が、新しい要求よりも高い優先権を与えられうる。別の可能な方式として、ページミスよりもページヒットを優先し、ページコンフリクトよりもページミスを優先する方式も考えられる。複数の異なるアービトレーション方式にページの使用の最適化が関与しており、本明細書に明示的に開示しないものの、他のさまざまな優先度方式も可能であり、考察されることを、当業者は認めるであろう。アービトレーションによってDCQ114からコマンドが選択されると、選択されたコマンドが、関連するアドレス情報と共に、マルチプレクサ116からパッド124aを介して、DRAM105に提供されうる。
また、DRAMコントローラ105は、バックエンドのリードキュー120とライトキュー118も有する。ライトキュー118は、ライトデータ要求のコマンド部分が完了し、DCQ114が解放された後に、このようなライトデータ要求を所定の数(一部の実施形態では6)記憶するために、使用されうる。このため、ライトキュー118は、メモリコントローラのデータバッファからのデータの読み出しをより正確なタイミングで可能にする。リードキュー120は、ライトデータ要求のコマンド部分が完了し、DCQ114が解放された後に、このようなライトデータ要求を所定の数(一部の実施形態では12)記憶するために、使用されうる。このため、リードキュー120は、DDRメモリの場合に、負クロックドメインにデータを転送するために、DDRトリガ信号DQSおよびデータレシーバ、受信FIFO(先入れ先出し)バッファ122の制御を支援する。
自動プリジャージ予測を使用した、ページの使用の最適化
DRAMコントローラ103は、DRAM105の各バンクについてページアクティビティの履歴を追跡することによって、ページの使用を最適化しうる。所定のバンクに対する最近のアクセスの履歴により、DRAMコントローラ103は、リード/ライトオペレーション後に自動プリジャージを開始すべきか、または、メモリページを開いたままにすべきかを決定することができる。ページを開いたままにすべきであると決定された場合には、この履歴を使用して、ページが開かれたまま(おそらく遊休のまま)である場合にページを閉じるまでの期間も決定される。一組の実施形態では、DRAM105内の全ページの履歴が追跡されうる。しかし、これをハードウェアで実装するのが実際的ではない場合には、DRAMコントローラ103は、バンク毎に、(例えば、DRAMページテーブル106を使用して)ページヒット、ページミスおよびページコンフリクトの履歴を追跡する一方、(DRAMページテーブル106と共にバンク履歴テーブル108を使用して)バンクベースではない一次ベースの履歴に予測を行うように構成されてもよい。
バンク履歴
前述のように、DRAMコントローラ103は、DRAM105の各DRAMバンクについてページアクティビティの履歴を追跡しうる。バンク履歴テーブル108内の各エントリには、(DRAMページテーブル106に記憶されている)特定のバンク内の最近の4回のページアクセスの履歴に基づく予測が含まれうる。ある要求が、アービタ112からのアービトレーションによって現在の要求として選択されると、現在の要求が、同じバンク内の、そのバンクに対して行われた前の要求と同じDRAMページに対するものであるかどうかに応じて、バンク履歴が更新されうる。換言すれば、追跡がバンク毎に行われるため、この指標は、現在の要求がページヒットであるかどうかの指標とはわずかに異なる。例えば、現在の要求がページミスとなったが、現在要求されているバンクに対して最後に要求されたのと同じページを要求している場合、要求されたバンクについて、要求されたバンクに対するページアクセスが追跡されているという観点から、現在の要求は、「ヒット」と考えられる。別の言い方をすると、要求されたページが閉じられたタイミングが早すぎたと仮定すると、ページミスが、実際には、現在の要求がページヒットであったことを示すことがある。仮にそのページが閉じられていなければ、現在の要求により、ページミスではなく、ページヒットまたはページコンフリクトが発生したはずである。ここで説明している実施形態では、プリフェッチおよびライトにより、ページ履歴テーブル108が更新されることがないが、別の実施形態では異なって構成されてもよい点に留意すべきである。
図3は、バンク履歴テーブル108のアクセスおよび更新の一実施形態を示す。図の実施形態では、バンク履歴テーブル108のエントリは、自動プリジャージ予測ビット(AP)を有し、このビットは、自動プリチャージが予測されることを示す「1」の値と、自動プリチャージが予測されないことを示す「0」の値をとることができる。しかし、別の実施形態では、特定の値が示す意味が明らかである限り、自動プリジャージの予測を示すAPの値が、図の値と異なっていてもよい。図3に示すように、バンク履歴テーブル108は、個々の4ビットインデックスに対応する16のエントリ(210)を有し、各インデックスは、特定のバンクに対する最近の4回のページアクセス/要求に対応するバンク履歴に基づいて作成されうる。換言すれば、現在要求されているページの予測のエントリにアクセスするためのインデックスは、現在要求されているバンクへの最近の3回のアクセス(すなわち、DRAMページテーブル106に記憶されているバンク履歴情報)と、現在の要求とに基づいて作成されうる。
特定のページに対する予測は、アービタ112が現在の要求を選択した後に実行され、その際、前述のようにインデックス値を使用して、バンク履歴テーブル108内の対応する予測値がアクセスされうる。図3に示すように、現在要求されているバンクへの最近の3回のアクセスの履歴に対応する3ビット(206)と、現在の要求(208)とが使用され、バンク履歴テーブル108内の、現在要求されているページに対する予測値にアクセスするためのインデックスが作成される。追加のクロックサイクルによるページヒットの遅延を防ぐために、予測値へのアクセスが1クロックサイクルで行われることが望ましい。
一組の実施形態では、インデックスは、チップセレクト信号/バンクセレクト信号とページヒット信号とを多重化し、ページテーブル106からのバンク履歴を多重化することにより生成されうる。この点において、別の実施形態では、少なくとも、追跡されている最近の要求/アクセスの数によって決定されるエントリの数が異なっていてもよい点に留意すべきであり、可能な変形例は、図3に示す実施形態に限定されないということを当業者は認めるであろう。例えば、バンクへの5回の最近のアクセス/要求が追跡される場合、バンク履歴テーブル108は、4ビットの過去のバンク履歴と、現在の(新しい)バンク履歴とを含む5ビットのインデックスに基づいてアクセス可能な32のエントリを有するように構成されうる。結論として、追跡される最近のアクセスの数には4以外の値を指定することができ、追跡される最近のアクセスの数が4とは異なる多くの実施形態も可能である。
その後、バンク履歴テーブル108が、予測の後のクロックサイクル中に更新されうる。図3に示すように、予測の後に、DRAMページテーブル106から取得される4ビットのバンク履歴、すなわち、現在要求されているバンクへの最近の4回のアクセスの履歴に対応する4ビット(202)によって定義されるインデックスに対応するエントリ(AP)の値を更新することにより、バンク履歴テーブル108が更新されうる。現在の要求がページヒットとなる場合、APが「0」に更新されうる(一部の実施形態では、下で更に詳細に後述する信頼度カウンタにも従う)。現在の要求がページコンフリクトとなる場合、APが「1」に更新されうる(この場合も、一部の実施形態では信頼度カウンタにも従う)。現在の要求がページミスとなる場合、現在要求されている行が、要求されているバンク内の最後にアクセスされた/要求された行であればAPが「0」に更新され、そうでない場合にはAPが「1」に更新されうる(この場合も、一部の実施形態では信頼度カウンタにも従う)。バンク履歴テーブル108が更新されると、ページテーブル106内の現在要求されているバンクに対応するバンク履歴のエントリが、新しいバンク履歴を反映するために更新され、この履歴には、現在発生しているか完了したメモリアクセスが含まれるようになる。
上で説明したように、一組の実施形態では、バンク履歴テーブル108の予測値APの更新が、付加的に、信頼度カウンタに基づいても実行されてもよい。バンク履歴テーブル108の各エントリは、対応するNビットの信頼度カウンタ値も有しうる。カウンタは、このカウンタに対応するバンクの予測が正確であった場合にインクリメントされ、ビット数によって決まる値で飽和する。例えば、バンク履歴テーブル108の各エントリが、対応する2ビットの信頼度カウンタを有する場合、カウンタは3で飽和しうる。予測が誤っていた場合、カウンタがデクリメントされうる。カウンタがゼロになると、予測値(すなわちバンク履歴テーブル108内のAPの対応する値)が反転され、一連の予測が誤っていたことを示すようになる。カウンタ値が、任意のビット数を有してもよく、ここで使用した実際の値は単に例示に過ぎないということを当業者は認めるであろう。
自動プリジャージ予測アルゴリズム
上で説明したバンク履歴の追跡は、DRAMコントローラ103によって実行される、3レベルの予測を含む自動プリジャージ予測アルゴリズムの一部として使用されうる。
レベル1:DCQ114内の今後実行される要求を使用して、特定のバンク内の最後にアクセスされたDRAMページを、アクセス後に直ちに閉じるべきか、あるいは開いたままにすべきかが決定されうる。すなわち、レベル1の自動プリジャージ予測を実行するために、DCQ114内の他の待機中の要求が、特定のDRAMバンクに対するものであるかどうかの状態が使用されうる。このため、DCQ114内の待機中の各要求が評価され、その要求に対するバンクと、その要求がその特定のバンク内の現在開かれているページに対するものであるかどうかが決定されうる。一組の実施形態では、この評価は、現在処理中のメモリ要求に対してアクセスされている開かれているページ(およびその対応する特定のバンク)に対してなされうる。すなわち、待機中の各要求が評価され、その要求が、アクセスされているバンクおよび/またはページに対する要求であるかどうかが決定され、現在処理中のメモリ要求を、自動プリジャージを有効または無効にしてDRAMメモリに送信すべきかどうかが決定されうる。DCQ114内の待機中の要求が評価されると実行される動作は、以下の4つのカテゴリの1つでありうる。
(A)DCQ114内の待機中の要求のうち、特定のバンク内のページに対するものが存在しない(すなわち、待機中の要求のうち、特定のバンク内のページを要求するものがなく、このため、その特定のバンク内の開かれているページに対してページヒットまたはページコンフリクトが発生しない)場合、上の「バンク履歴」の項目で説明したようにバンク履歴情報に従って、レベル2の予測が行われ(下記の「レベル2」の項目も参照のこと)、現在処理中のメモリ要求に対して自動プリジャージが対応して設定されうる。
(B)DCQ114内の待機中の要求のうち、特定のバンク内の開かれているページに対するものが存在しないが、少なくとも1つの待機中の要求が、特定のバンク内の閉じられているページに対するものである(すなわち、特定のバンクに対する待機中の要求のうち、特定のバンク内の開かれているページに対してページヒットとなるものが存在しないが、待機中の要求の少なくとも1つによりページコンフリクトが発生する)場合、バンク履歴テーブル108内の対応する予測の内容に関わらず、現在処理中のメモリ要求に対して自動プリジャージが有効にされうる。
(C)特定のバンクに対するDCQ114内のすべての待機中の要求が、この特定のバンク内の開かれているページに対するものである(すなわち、特定のバンクに対するすべての待機中の要求が、特定のバンク内の開かれているページに対してページヒットとなる)場合、特定のバンク内の開かれているページが開かれたままとされうる、すなわち、現在のメモリアクセス後に自動プリジャージが実行されない。
(D)特定のバンクに対するDCQ114内の待機中の要求の少なくとも1つが、その特定のバンク内の開かれているページに対するものであり、待機中の要求の少なくとも1つが、その特定のバンク内の閉じられているページに対するものである(すなわち、特定のバンクに対する待機中の要求の少なくとも1つが、特定のバンク内の開かれているページに対してページヒットとなり、これらの待機中の要求の少なくとも1つがページコンフリクトとなる)場合、特定のバンク内の開かれているページが開かれたままとされうる、すなわち、現在のメモリアクセス後に自動プリジャージが実行されない。ページヒットとなる待機中の要求は、先にDCQ114から送られ、このような要求がすべて送られると、上の(B)に記載した状態となる。
以上のように、条件(C)と条件(D)を組み合わせて使用して、DCQ114内の待機中の要求の少なくとも1つが特定のバンク内の開かれているページに対するものである場合に、(その特定のバンクへの)現在のメモリ要求に対して自動プリジャージが無効すべきことが決定されうる。
レベル2:(上のレベル1の(A)で説明したように)DCQ114内の待機中の要求のうち、特定のバンク内のDRAMページに対するものが存在しない場合、最近のバンク履歴情報を使用して、アクセス後にDRAMページを直ちに閉じるべきか、あるいは、開いたままにすべきかが予測されうる。この予測は、上の「バンク履歴」で説明したようにバンク履歴テーブル108においてアクセスされうる。
レベル3:DRAMページがレベル1またはレベル2の予測に基づいて閉じられていない場合、そのDRAMページが開いたままにされるが、最後にアクセスされた時点から特定の(プログラム可能な)クロックサイクル数の間、遊休状態であれば閉じられうる。
ここでも、自動プリジャージの決定が、上のレベル1の(A)で説明したように、レベル1の予測によって決定された要求に対しては、DRAMページテーブル106のバンク履歴、バンク履歴テーブル108の予測値、および対応する信頼度カウンタ値が更新されない点に留意されたい。同様に、プリフェッチおよびライト要求によって、バンク履歴テーブル108を使用した予測、またはバンク履歴テーブル108の更新が行われないこともある。このようなタイプの要求と併せて自動プリチャージが実行されるかどうかも、上のレベル1の(A)に記載したようにレベル1の予測によって決定される。しかし、DRAMコントローラ103が、バースト書き込みの最後のライト要求の後に自動プリチャージを常に開始するように構成され、プリフェッチおよびライト要求が、ほかの要求のようにページヒット/ページコンフリクトに影響してもよい。
上で説明したように、自動プリチャージ予測アルゴリズムを使用して、リード/ライト要求に対して自動プリチャージを実行すべきかどうかが予測されうる。予測によりリード/ライト要求に対して自動プリチャージが行われない場合、開かれているページをいつ閉じるべきかの問題が依然として残る。ページが開かれているが、長時間遊休状態である場合、バンク履歴予測が誤っていた可能性があり、その結果、ページコンフリクトが発生することがある。このため、DRAMコントローラ103は、特定のページが開かれている期間を追跡するための、DRAMページテーブルのエントリのそれぞれに対応する個々のアイドルサイクルカウンタを備えるように構成されうる。一組の実施形態では、開かれているページに対応するアイドルサイクルカウンタが所定の限度に達すると、DRAMコントローラ103は開かれている(アイドリング、遊休の)ページを閉じるように動作しうる。一実施形態では、この所定の限度はプログラム可能でもよい。このため、DRAMコントローラ103は、所定のクロックサイクル数(例えば一実施形態では128サイクル)の後に未使用の(遊休の)ページを閉じるか、または動的に調整された所定のクロックサイクル数(例えば16、32、64、96サイクルなど)後に、未使用のページを閉じ、この動的な調整は、DRAMページテーブル履歴106内のこの特定のメモリページに対応するバンク履歴のエントリに基づいて行われうる。
図4は、メモリコントローラ(例えば図1,図2のメモリコントローラ103)によって実行されうる3レベルの自動プリチャージ予測アルゴリズムの一部分の一実施形態のフローチャートを示す。到着したメモリ要求(メモリコントローラが受け取ったメモリ要求など)が、未処理のメモリ要求としてキューに記憶されうる(402)。キューに記憶されている未処理のメモリ要求の1つが、処理/実行(service)のために選択されて、キューから削除され、選択されたメモリ要求によって要求されている特定のメモリページ(および対応する特定のメモリバンク)が特定されうる(404)。次に、この特定のメモリバンクへの最近のアクセス履歴に対応する現在の予測値に基づいて、特定のメモリページを閉じるか、または開いたままにすべきかの予測が行われうる(406)。予測を行ったら、この特定のメモリバンクに対する、最近の所定の数の前のメモリアクセスに対応する将来の予測値が更新されうる(412)。メモリキュー内の未処理のメモリ要求が分析され、キューに記憶されている未処理のメモリ要求の少なくとも1つが、この特定のメモリバンクへのアクセスを要求しているかどうかが決定される(410)。
410における分析により、キューに記憶されている未処理のメモリ要求の少なくとも1つが、この特定のメモリバンクへのアクセスを要求していることが示された(すなわち、キューに記憶されている未処理のメモリ要求の少なくとも1つが、この特定のメモリバンク内のメモリページに対するものである)場合、キューに記憶されている未処理のメモリ要求を使用して、この特定のメモリページを閉じるか、または開いたままにすべきかが決定されうる(414,418)。一方、410における分析により、キューに記憶されている未処理のメモリ要求のうち特定のメモリバンクへのアクセスを要求するものが存在しないことが示された場合、406で行った予測に従って、この特定のメモリページが閉じられるか、または開いたままにされうる(416)。
418または416のいずれかにより、この特定のメモリページを閉じるべきことが示された場合、選択されたメモリ要求のためのこの特定のメモリページへのアクセスが完了したら(一部の実施形態では、メモリが再びアクセスされる前に)、特定のメモリページが閉じられうる(422)。特定のメモリページを開いたままにすべきであると決定された場合、選択されたメモリ要求のためのこの特定のメモリページへのアクセスが完了したあと、そのメモリページが開いたままにされ(424)、所定の期間、特定のメモリページが遊休状態であれば、この所定の期間後にこのメモリページが閉じられうる(426)。この所定の期間は、クロックサイクルを使用して測定されても、プログラムされてもよい。例えば、特定のメモリページが128クロックサイクルの間遊休状態であれば、この特定のメモリページが閉じられうる。特定の実施形態では、クロックサイクル数が、この特定のメモリバンクへの最近のアクセス履歴に基づいて動的に調整されうる。例えば、この特定のメモリバンクへの最近のアクセス履歴に基づいて、128クロックサイクルが、16、32、64クロックサイクルなどに調整されうる。一部の実施形態では、アルゴリズムが、この特定のメモリバンクに対する最近のアクセス履歴を更新し、406において予測が行われると、この特定のメモリバンクに対する最近のアクセス履歴に対応する予測値を更新してもよい。
図4のフローチャートが、選択された(このため現在の)メモリアクセスによって、この特定のメモリページへの実際のアクセスがいつ行われるかについては指定していないという点を、ここで注意すべきである。一組の実施形態では、この特定のメモリページへの今後実行されるアクセスについて決定されてから、この特定のメモリページへのアクセスが行われてもよい。別の組の実施形態では、この決定が行われている間、または決定が行われる前に、アクセスが行われてもよい。しかし、選択されたメモリ要求のためのこの特定のメモリページへのアクセスが完了した後に(特定の実施形態では、メモリが別のメモリ要求によってアクセスされる前に)、この特定のメモリページの状態が決定される。このため、一部の実施形態では、この特定のメモリページへの今後実行されるアクセスについて決定されると、(特定のメモリページにアクセスするために)選択されたメモリ要求(コマンド)が、選択されたメモリコマンドに対する自動プリチャージ標識を有効にしてメモリに転送されうる。この自動プリチャージ標識は、この特定のメモリページを閉じるべきであると予測された場合に有効にされ、この特定のメモリページを開いたままにすべきであると予測された場合に無効にされる。自動プリチャージが有効にされている場合、選択されたメモリ要求のためのこの特定のメモリページへのアクセスが完了したら、この特定のバンク内の特定のメモリページに対応する行が自動プリチャージされうる。自動プリチャージが無効にされている場合、選択されたメモリ要求のためのこの特定のメモリページへのアクセスの完了後に、この特定のバンク内の特定のメモリページに対応する行の状態が変更されることはない。
このように、DRAMコントローラは、ページヒットの数を最大限に増やし、ページコンフリクトの数を最小限に減らすように、リード/ライト要求をリオーダーするように構成されうる。その際、DRAM内に構成されている個々のページのすべてを追跡することなく、最適な性能を実現するために、リード/ライト要求の後にプリチャージを行うべきかどうかを予測するための、3レベルの自動プリチャージ予測アルゴリズムを実行することによって得られる自動プリチャージ予測によって、リオーダーの実行が通知されうる。
本発明を特定の実施形態を参照して記載したが、この実施形態は例示であり、本発明の範囲はこれに制限されないことが理解されよう。記載した各種実施形態のどのような変形、変更、追加および改良も可能である。このような変形、変更、追加および改良は、添付の特許請求の範囲に詳述する発明の範囲に含まれうる。
本発明は、一般にマイクロプロセッサに利用可能である。

Claims (9)

  1. 複数のメモリバンクを有するメモリ(105)へのアクセスを管理する方法であって、
    1つ以上のメモリバンクのそれぞれに対して、個々のメモリバンクアクセス履歴情報をページテーブル内に記憶するステップと、
    現在のメモリ要求によって要求されている、前記複数のメモリバンクの特定のメモリバンク内の特定のメモリページを特定するステップ(404)と、
    前記1つ以上のメモリバンクの1つに対して、前記ページテーブルに記憶されている個々のメモリバンクアクセス履歴情報に対応する個々の予測値を、複数のエントリを有するメモリバンク履歴テーブル(108)の各エントリに記憶するステップと、
    前記特定のメモリバンクへの最近のメモリアクセスの履歴に対応する現在の個々の予測値に基づいて、前記特定のメモリページを閉じるべきか、または開いたままにすべきかを決定するステップ(406)と、
    前記現在のメモリ要求のための前記特定のメモリページへのアクセスが完了すると、
    前記決定により、前記特定のメモリページを閉じるべきであると決定されると、前記特定のメモリページを閉じるステップ(422)、または、
    前記決定により、前記特定のメモリページを開いたままにすべきであると決定されると、前記特定のメモリページを開いたままにするステップ(424)、の一方を実行するステップと、
    前記メモリへのアクセスを待機している1つ以上の追加のメモリ要求のうち、前記特定のメモリバンク内のメモリページを要求するものが存在しないことを決定するステップと、を含み、
    前記1つ以上の追加のメモリ要求のうち、前記特定のメモリバンク内のメモリページを要求するものが存在しないことが決定されると、前記特定のメモリページを閉じるべきか、または開いたままにすべきかかの前記決定が実行される方法。
  2. 前記一方の実行は、前記現在のメモリ要求のための前記特定のメモリページへのアクセスの完了後、前記メモリが再度アクセスされる前に実行される請求項1に記載の方法。
  3. 前記特定のメモリページが、所定の期間、遊休状態であった場合、前記現在のメモリ要求のための前記特定のメモリページへのアクセスから前記所定の期間の経過後に、前記特定のメモリページを閉じるステップ(426)を更に有する請求項1に記載の方法。
  4. 前記特定のメモリバンクへの第1の数の最近のメモリアクセスに対応する第1の情報と、
    前記現在のメモリ要求のための前記特定のメモリページへの前記アクセスに対応する第2の情報とに従って、前記現在の予測値を取得するステップを更に有する請求項1に記載の方法。
  5. 複数のメモリ要求を受け取り、前記受け取ったメモリ要求を未処理のメモリ要求としてキューに記憶するステップ(402)と、
    前記キューに記憶されている前記未処理のメモリ要求の1つを選択し、前記キューから前記選択されたメモリ要求を削除する(404)ステップと、
    前記選択されたメモリ要求によって要求されている第1のメモリページと、対応する第1のメモリバンクとを特定するステップ(404)と、
    前記第1のメモリバンクへの最近のメモリアクセスの履歴に対応する現在の予測値に基づいて、前記第1のメモリページを閉じるべきか、または開いたままにすべきかを予測するステップ(406)と、
    前記キューに記憶されている前記未処理のメモリ要求のうち、前記第1のメモリバンクへのアクセスを要求するものが存在しないことを決定するステップ(410)と、
    前記決定が行われると、
    前記予測により、前記第1のメモリページを閉じるべきであると予測されると、前記選択されたメモリ要求の自動プリジャージを有効にするステップ(422)、または
    前記予測により、前記第1のメモリページを開いたままにすべきであると予測されると、前記選択されたメモリ要求の前記自動プリジャージを無効にするステップ(424)、の一方を実行するステップと、を更に有する請求項1に記載の方法。
  6. 1つ以上のメモリバンクを有するメモリ(105)へのアクセスを制御するように構成されたメモリコントローラ(103)であって、
    前記1つ以上のメモリバンクのそれぞれに対して、個々のメモリバンクアクセス履歴情報を記憶するように構成されたページテーブル(106)と、
    複数のエントリを有するメモリバンク履歴テーブル(108)とを備え、前記複数のエントリの各エントリは、前記1つ以上のメモリバンクの1つに対して、前記ページテーブルに記憶されている個々のメモリバンクアクセス履歴情報に対応する個々の予測値を記憶するように構成され、
    前記メモリコントローラは、現在のメモリ要求の対象である、前記1つ以上のメモリバンクの特定のメモリバンク内の特定のメモリページを特定するように構成され、
    前記メモリコントローラは、前記メモリバンク履歴テーブルから現在の予測値を取得するように更に構成され、前記現在の予測値は、前記特定のメモリバンクに対して、前記ページテーブルに記憶されている前記個々のメモリバンクアクセス履歴情報に少なくとも基づき、前記現在の予測値は、前記メモリコントローラが前記特定のメモリページを閉じるべきか、または前記特定のメモリページを開いたままにすべきかを前記メモリコントローラに指示し、
    前記メモリコントローラは、未処理のメモリ要求のうち、前記特定のメモリバンクに対するものが存在するかどうかを決定し、未処理のメモリ要求のうち、前記特定のメモリバンクに対するものが存在しないと決定されると、前記現在のメモリ要求のための前記特定のメモリページへのアクセスが完了すると、前記現在の予測値の内容に従って前記特定のメモリページを閉じるか、または開いたままにするように構成され、
    前記未処理のメモリ要求は、前記メモリへのアクセスを待機している1つ以上の追加のメモリ要求を含むメモリコントローラ。
  7. 前記メモリバンク履歴テーブルの特定のエントリから前記現在の予測値を取得し、前記特定のエントリの位置は、
    前記特定のメモリバンクに対して、前記ページテーブルに記憶されている前記個々のメモリバンクアクセス履歴情報の少なくとも最初の部分と、
    前記現在のメモリ要求に対応するメモリバンクアクセス情報とによって決定され、
    前記未処理のメモリ要求のうち、前記特定のメモリページに対するものが存在せず、前記未処理のメモリ要求の少なくとも1つが、前記特定のメモリバンク内の閉じられているメモリページに対するものである場合、前記現在のメモリ要求のための前記特定のメモリページへのアクセスが完了すると、前記特定のメモリページを閉じ、
    前記未処理のメモリ要求のうち、前記特定のメモリバンク内の閉じられているいずれかのメモリページに対するものが存在せず、前記未処理のメモリ要求の少なくとも1つが、前記特定のメモリページに対するものである場合、前記現在のメモリ要求のための前記特定のメモリページへのアクセスが完了すると、前記特定のメモリページを開いたままにし、
    前記未処理のメモリ要求の少なくとも1つが、前記特定のメモリページに対するものであり、前記未処理のメモリ要求の少なくとも1つが、前記特定のメモリバンク内の閉じられているメモリページに対するものである場合、前記現在のメモリ要求のための前記特定のメモリページへのアクセスが完了すると、前記特定のメモリページを開いたままにし、
    前記現在の予測値を取得した後に前記メモリバンク履歴テーブルに記憶されている将来の予測値を更新し、
    前記メモリバンク履歴テーブルの特定のエントリに記憶されている前記将来の予測値を更新し、前記特定のエントリの位置は、前記特定のメモリバンクに対して、前記ページテーブルに記憶されている前記個々のメモリバンクアクセス履歴情報によって決定され、
    前記現在のメモリ要求に対応するメモリアクセス状況を特定し、前記メモリアクセス状況に従って前記将来の予測値を更新するように更に構成され、前記メモリアクセス状況は、
    前記特定のメモリページが既に開かれていることを示すページヒット、
    前記特定のメモリバンク内のどのページも開かれていないことを示すページミス、または
    前記特定のメモリページが開かれておらず、前記特定のメモリバンク内の別のメモリページが開かれていることを示すページコンフリクトの1つである、請求項に記載のメモリコントローラ。
  8. 前記メモリアクセス状況がページヒットの場合、前記メモリコントローラは、前記将来の予測値を、前記特定のメモリページを開いたままとすべきであることを示すように更新するように動作可能であり、
    前記メモリアクセス状況がページコンクリクトの場合、前記メモリコントローラは、前記将来の予測値を、前記特定のメモリページを閉じるべきであることを示すように更新するように動作可能であり、
    前記メモリアクセス状況がページミスであり、前記特定のメモリバンク内で最後に開かれているページが前記特定のメモリページでない場合、前記メモリコントローラは、前記将来の予測値を、前記特定のメモリページを閉じるべきであることを示すように更新するように動作可能であり、
    前記メモリアクセス状況がページミスであり、前記特定のメモリバンク内で最後に開かれているページが前記特定のメモリページである場合、前記メモリコントローラは、前記将来の予測値を、前記特定のメモリページを開いたままにすべきであることを示すように更新するように動作可能であり、
    前記メモリバンク履歴テーブルの各エントリは、個々の信頼度カウンタ値を記憶するように更に構成され、
    前記メモリコントローラは、前記メモリバンク履歴テーブルの特定のエントリに、前記将来の予測値を記憶するように動作可能であり、
    前記メモリコントローラは、前記メモリアクセス状況と、前記特定のエントリに記憶されている前記個々の信頼度カウンタ値とに従って、前記将来の予測値を更新するように動作可能である、請求項7に記載のメモリコントローラ。
  9. システム(100)であって、請求項6に記載のメモリコントローラ(103)を備え、前記メモリコントローラに結合された1つ以上の記憶素子(105)を更に備え、
    前記メモリコントローラは、前記1つ以上の記憶素子へのアクセスを制御するように構成されているシステム。
JP2010521845A 2007-08-22 2008-07-28 投機的なプリチャージの検出 Active JP5305542B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/843,443 2007-08-22
US11/843,443 US7761656B2 (en) 2007-08-22 2007-08-22 Detection of speculative precharge
PCT/US2008/009098 WO2009025712A1 (en) 2007-08-22 2008-07-28 Detection of speculative precharge

Publications (2)

Publication Number Publication Date
JP2010537310A JP2010537310A (ja) 2010-12-02
JP5305542B2 true JP5305542B2 (ja) 2013-10-02

Family

ID=39865815

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010521845A Active JP5305542B2 (ja) 2007-08-22 2008-07-28 投機的なプリチャージの検出

Country Status (7)

Country Link
US (1) US7761656B2 (ja)
EP (1) EP2191376B1 (ja)
JP (1) JP5305542B2 (ja)
KR (1) KR101554294B1 (ja)
CN (1) CN102084345B (ja)
TW (1) TWI457753B (ja)
WO (1) WO2009025712A1 (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090157985A1 (en) * 2007-12-18 2009-06-18 Arm Limited Accessing memory arrays
US8429367B2 (en) * 2007-12-28 2013-04-23 Intel Corporation Systems, methods and apparatuses for clock enable (CKE) coordination
US8347020B2 (en) * 2009-03-20 2013-01-01 Qualcomm Incorporated Memory access controller, systems, and methods for optimizing memory access times
JP5428687B2 (ja) * 2009-09-14 2014-02-26 株式会社リコー メモリ制御装置
KR20110032606A (ko) * 2009-09-23 2011-03-30 삼성전자주식회사 전자 디바이스의 성능 개선을 위한 전자 디바이스 컨트롤러
US20120059983A1 (en) * 2010-09-03 2012-03-08 David Wilkins Nellans Predictor-based management of dram row-buffers
US8615638B2 (en) * 2010-10-08 2013-12-24 Qualcomm Incorporated Memory controllers, systems and methods for applying page management policies based on stream transaction information
WO2013083194A1 (en) * 2011-12-08 2013-06-13 Huawei Technologies Co., Ltd. Memory controller and method for controlling accesses to a memory
US8990473B2 (en) * 2012-10-04 2015-03-24 Applied Micro Circuits Corporation Managing requests to open and closed banks in a memory system
US9251048B2 (en) * 2012-10-19 2016-02-02 International Business Machines Corporation Memory page management
CN103902462B (zh) * 2012-12-27 2018-03-09 华为技术有限公司 内存管理方法、内存管理装置及计算机
US20150199134A1 (en) * 2014-01-10 2015-07-16 Qualcomm Incorporated System and method for resolving dram page conflicts based on memory access patterns
KR20160061704A (ko) 2014-11-24 2016-06-01 삼성전자주식회사 페이지 상태 알림 기능이 있는 메모리 장치
WO2016089355A1 (en) 2014-12-01 2016-06-09 Hewlett Packard Enterprise Development Lp Auto-negotiation over extended backplane
CN107534590B (zh) 2015-10-12 2020-07-28 慧与发展有限责任合伙企业 网络系统
US9703493B2 (en) 2015-12-14 2017-07-11 Qualcomm Incorporated Single-stage arbiter/scheduler for a memory system comprising a volatile memory and a shared cache
JP2018049387A (ja) * 2016-09-20 2018-03-29 東芝メモリ株式会社 メモリシステム及びプロセッサシステム
US10379748B2 (en) 2016-12-19 2019-08-13 International Business Machines Corporation Predictive scheduler for memory rank switching
US11029879B2 (en) * 2018-01-29 2021-06-08 Samsung Electronics Co., Ltd Page size synchronization and page size aware scheduling method for non-volatile memory dual in-line memory module (NVDIMM) over memory channel
JP2019204150A (ja) * 2018-05-21 2019-11-28 日本電信電話株式会社 通信用入出力装置
US11189662B2 (en) 2018-08-13 2021-11-30 Micron Technology Memory cell stack and via formation for a memory device
US10991425B2 (en) 2018-08-13 2021-04-27 Micron Technology, Inc. Access line grain modulation in a memory device
CN109658009B (zh) * 2019-01-11 2024-05-07 杭州市电力设计院有限公司 基于随机原理与排队理论的电动汽车充电站能量管理方法
US10991417B1 (en) 2019-05-24 2021-04-27 Xilinx, Inc. Auto-precharge management in a controller
US11373695B2 (en) * 2019-12-18 2022-06-28 Micron Technology, Inc. Memory accessing with auto-precharge
KR102343550B1 (ko) * 2020-04-10 2021-12-24 원광대학교산학협력단 스몰 액티브 커맨드를 이용한 메모리 시스템

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0394344A (ja) * 1989-09-07 1991-04-19 Nec Corp 情報処理装置
US5715421A (en) * 1992-10-16 1998-02-03 Seiko Epson Corporation Apparatus and method of addressing paged mode memory including adjacent page precharging
JP3254019B2 (ja) * 1992-11-30 2002-02-04 富士通株式会社 データ先読み制御装置
US5732236A (en) 1993-05-28 1998-03-24 Texas Instruments Incorporated Circuit and method for controlling access to paged DRAM banks with request prioritization and improved precharge schedule
JPH07105686A (ja) * 1993-10-04 1995-04-21 Oki Electric Ind Co Ltd メモリ制御装置
US5625790A (en) 1995-09-14 1997-04-29 Micron Technology, Inc. Method and apparatus for reducing the access time of a memory device by decoding a row address during a precharge period of the memory device
US5889714A (en) * 1997-11-03 1999-03-30 Digital Equipment Corporation Adaptive precharge management for synchronous DRAM
US5983325A (en) 1997-12-09 1999-11-09 Advanced Micro Devices, Inc. Dataless touch to open a memory page
US6199145B1 (en) * 1998-02-27 2001-03-06 Intel Corporation Configurable page closing method and apparatus for multi-port host bridges
US6219765B1 (en) * 1998-08-03 2001-04-17 Micron Technology, Inc. Memory paging control apparatus
US6401180B1 (en) 1999-01-04 2002-06-04 Advanced Micro Devices, Inc. Bank history table for improved pre-charge scheduling of random access memory banks
JP2001166985A (ja) * 1999-12-10 2001-06-22 Nec Gumma Ltd メモリ制御装置
US7127573B1 (en) 2000-05-04 2006-10-24 Advanced Micro Devices, Inc. Memory controller providing multiple power modes for accessing memory devices by reordering memory transactions
US6785793B2 (en) * 2001-09-27 2004-08-31 Intel Corporation Method and apparatus for memory access scheduling to reduce memory access latency
US6829184B2 (en) 2002-01-28 2004-12-07 Intel Corporation Apparatus and method for encoding auto-precharge
US7124260B2 (en) 2002-08-26 2006-10-17 Micron Technology, Inc. Modified persistent auto precharge command protocol system and method for memory devices
CN1279450C (zh) * 2002-11-13 2006-10-11 矽统科技股份有限公司 内存读取/写入仲裁方法
US7133995B1 (en) 2002-12-16 2006-11-07 Advanced Micro Devices, Inc. Dynamic page conflict prediction for DRAM
JP4250989B2 (ja) * 2003-03-26 2009-04-08 日本電気株式会社 メモリアクセス制御装置
US20050060533A1 (en) 2003-09-17 2005-03-17 Steven Woo Method, device, software and apparatus for adjusting a system parameter value, such as a page closing time
US7167946B2 (en) 2003-09-30 2007-01-23 Intel Corporation Method and apparatus for implicit DRAM precharge
US7130967B2 (en) * 2003-12-10 2006-10-31 International Business Machines Corporation Method and system for supplier-based memory speculation in a memory subsystem of a data processing system
US7162567B2 (en) * 2004-05-14 2007-01-09 Micron Technology, Inc. Memory hub and method for memory sequencing
KR100650730B1 (ko) 2004-12-28 2006-11-27 주식회사 하이닉스반도체 메모리 장치의 프리차지 타이밍 제어 방법 및 그 장치
US7167385B2 (en) 2005-02-11 2007-01-23 International Business Machines Corporation Method and apparatus for controlling the timing of precharge in a content addressable memory system
JP4839749B2 (ja) * 2005-09-20 2011-12-21 日本電気株式会社 コンピュータ、携帯端末装置、電力制御方法、電力制御プログラム
US20070162642A1 (en) * 2005-12-19 2007-07-12 Ivo Tousek A dma controller with multiple intra-channel software request support
US7606988B2 (en) * 2007-01-29 2009-10-20 International Business Machines Corporation Systems and methods for providing a dynamic memory bank page policy

Also Published As

Publication number Publication date
EP2191376B1 (en) 2016-09-28
CN102084345A (zh) 2011-06-01
TW200925859A (en) 2009-06-16
TWI457753B (zh) 2014-10-21
CN102084345B (zh) 2014-06-18
KR101554294B1 (ko) 2015-09-18
EP2191376A1 (en) 2010-06-02
KR20100055503A (ko) 2010-05-26
US20090055570A1 (en) 2009-02-26
US7761656B2 (en) 2010-07-20
JP2010537310A (ja) 2010-12-02
WO2009025712A1 (en) 2009-02-26

Similar Documents

Publication Publication Date Title
JP5305542B2 (ja) 投機的なプリチャージの検出
US8560796B2 (en) Scheduling memory access requests using predicted memory timing and state information
US7127574B2 (en) Method and apparatus for out of order memory scheduling
US6799257B2 (en) Method and apparatus to control memory accesses
US7536530B2 (en) Method and apparatus for determining a dynamic random access memory page management implementation
US8572322B2 (en) Asynchronously scheduling memory access requests
US7069399B2 (en) Method and related apparatus for reordering access requests used to access main memory of a data processing system
US20150046642A1 (en) Memory command scheduler and memory command scheduling method
KR20070086640A (ko) 메모리내의 명령을 실행하기 위한 우선순위 부여 방식
US7587547B2 (en) Dynamic update adaptive idle timer
US11609709B2 (en) Memory controller system and a method for memory scheduling of a storage device
US20060129764A1 (en) Methods and apparatus for storing a command
US9116814B1 (en) Use of cache to reduce memory bandwidth pressure with processing pipeline
CN113946435A (zh) 内存管理技术及计算机系统
CN112965816B (zh) 内存管理技术及计算机系统
US20240112722A1 (en) Directed refresh management for dram
US20210294642A1 (en) Improving the responsiveness of an apparatus to certain interrupts

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110722

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130517

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130619

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130624

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5305542

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250