JP2006511886A - ダイナミックランダムアクセスメモリページ管理実現を決定する方法及び装置 - Google Patents

ダイナミックランダムアクセスメモリページ管理実現を決定する方法及び装置 Download PDF

Info

Publication number
JP2006511886A
JP2006511886A JP2004565222A JP2004565222A JP2006511886A JP 2006511886 A JP2006511886 A JP 2006511886A JP 2004565222 A JP2004565222 A JP 2004565222A JP 2004565222 A JP2004565222 A JP 2004565222A JP 2006511886 A JP2006511886 A JP 2006511886A
Authority
JP
Japan
Prior art keywords
memory
page
bus
memory access
counter
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.)
Granted
Application number
JP2004565222A
Other languages
English (en)
Other versions
JP4203022B2 (ja
Inventor
スプラングル,エリック
ロヒラ,アンウォー
Original Assignee
インテル コーポレイション
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 インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2006511886A publication Critical patent/JP2006511886A/ja
Application granted granted Critical
Publication of JP4203022B2 publication Critical patent/JP4203022B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • G06F13/1631Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
    • 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

Landscapes

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

Abstract

メモリコントローラのレジスタまたは回路に直接アクセスする必要なく、メモリコントローラにより利用されるメモリページ管理実現をプロセッサにより決定するシステム及び方法が開示される。一実施例では、カウンタのマトリックスは、潜在的なページ管理実現とブロックごとのページ数に対応する。長いアクセス遅延が検出されたときは常に、対応するページ管理実現とページ数がページ境界を予測するかに依存して、カウンタがインクリメントまたはデクリメントされてもよい。一定時間後に最大値を有するカウンタが、実際のページ管理実現及びブロックごとのページ数に対応するかもしれない。

Description

発明の詳細な説明
[技術分野]
本開示は、一般にマイクロプロセッサに関し、より詳細には、システムバスを介しメモリコントローラと共に動作可能なマイクロプロセッサシステムに関する。
[背景]
ダイナミックランダムアクセスメモリ(DRAM)は、メモリプリチャージ動作、起動動作、リード動作及びライト動作を有するかもしれない。特に、メモリバンクをアドレス指定するメモリコントローラは、まずメモリバンクをプリチャージし、その後、当該バンク内のアドレス指定されたページが、当該ページのアドレス指定されたカラムがアクセス(リードまたはライト)される前に起動される必要がある。「DRAMページオープン」や「ページヒット」は、アクセスされているメモリがすでにプリチャージ及び起動されていることを示し、各メモリアクセス中にメモリをプリチャージまたは起動する必要なく、データがページから読み出しまたは書き込みされるかもしれない。「ページミス」が発生すると(すなわち、オープンされているページ以外のメモリのページからデータがアクセスされる)、このオープンされているページは、センスアンプからDRAMチップに書き込みされる必要がある。次に、新たなメモリページがまずプリチャージされ、アクセスされる前に起動される必要がある。古いページのDRAMへの書き込みと、新しいDRAMページのプリチャージ及び起動は時間を要するものであり、メモリアクセスをスローダウンさせ、メモリバスの非効率な利用(帯域幅の減少)とDRAMを用いる装置(例えば、コンピュータなど)のパフォーマンスのロスを引き起こす。
プロセッサは、システムバスを介しメモリコントローラにメモリアクセスコマンドを発行することにより、DRAMを含むシステムメモリとやりとりするかもしれない。プロセッサのバスインタフェース回路は、バスアクセスキューを介しプロセッサからシステムメモリへのアクセス(リード及びライト)をスケジューリングするバススケジューラを有するかもしれない。バススケジューラがメモリアクセスリクエストをバスアクセスキューにページミスを減少させ、ページヒットを増加させる順序により配置することが可能である場合、アクセス遅延は減少するかもしれない。プロセッサが、通常はメモリコントローラにより制御されているメモリページ管理実現(memory page management implementation)とバンクごとのページ数の両方を知っている場合、そのようなバススケジューラを生成することが可能であろう。しかしながら、この情報は、一般にはメモリコントローラから読み出すことができない。
[詳細な説明]
以下の説明では、メモリコントローラのレジスタまたは回路への直接的なアクセスを有する必要なく、メモリコントローラにより利用されているメモリページ管理実現を決定するプロセッサのための技術が説明される。以下の説明では、本発明の完全なる理解を与えるため、論理実現、ソフトウェアモジュール割当て、バス信号処理技術などの多数の具体的詳細及び動作の詳細が提供される。しかしながら、本発明がこのような具体的詳細なく実現されうるということは、当業者には理解されるであろう。他の例では、制御構造、ゲートレベル回路および完全なソフトウェア命令シーケンスは、本発明を不明瞭にすることを避けるため、詳細には図示されていない。当業者は、含まれている説明により、過度な実験を行うことなく適切な機能を実現することができるであろう。本発明は、メモリコントローラに接続されたシステムメモリを有するマイクロプロセッサシステム内部のシステムバスにより接続されたメモリコントローラ及びプロセッサの形態により開示される。しかしながら、本発明は、他の構成のプロセッサ及びシステムメモリにより実現されてもよい。
図1を参照するに、一実施例によるマルチプロセッサシステム100の概略図が示される。図1のシステムは、簡単化のため2つのプロセッサ140と160のみが示されているが、複数のプロセッサを有するようにしてもよい。プロセッサ140と160は、レベル1キャッシュ142と162を有するようにしてもよい。図1のマルチプロセッサシステム100は、バスインタフェース144、164、112及び108を介しシステムバス106と接続される複数の機能を有するようにしてもよい。一実施例では、システムバス106は、インテル(登録商標)コーポレイションにより製造されているペンティアム(登録商標)マイクロプロセッサと共に利用されるフロントサイドバス(FSB)であってもよい。システムバストバスインタフェースを介し接続される機能の一般的名称は、「エージェント」である。エージェントの例として、プロセッサ140と160、バスブリッジ132及びメモリコントローラ134があげられる。一部の実施例では、メモリコントローラ134とバスブリッジ132は、まとめてチップセットと呼ばれることもある。一部の実施例では、チップセットの機能は、図1の実施例に示されるものとは異なる物理的チップに分割されてもよい。
プロセッサ140と160のぞれぞれのバスインタフェース144と164のそれぞれは、一実施例では、メモリアクセスリクエストをキュー処理するためのバスアクセスキュー、メモリアクセスリクエストをバスアクセスキューに配置するバススケジューラ、及びページミスアクセスの回数を減少させる順番によりバスアクセスリクエストを配置するバススケジューラを支援するページヒット予測器を有する。
メモリコントローラ134は、プロセッサ140と160がシステムメモリ110及びBIOS(Basic Input/Output System)EPROM(Erasable Programmable Read−Only Memory)136に対する読み出し及び書き込みを実行することを許可するかもしれない。一部の実施例では、BIOS EPROM136は、フラッシュメモリを利用してもよい。メモリコントローラ134は、メモリリード及びライトデータがシステムバス106上のバスエージェントとの間で搬送されることを可能にするバスインタフェースを有するようにしてもよい。メモリコントローラ134はまた、ハイパフォーマンスグラフィックインタフェース139を介しハイパフォーマンスグラフィック回路138と接続されてもよい。ある実施例では、ハイパフォーマンスグラフィックインタフェース139は、4×AGPや8×AGPなどの複数スピードで動作するAGPインタフェースあるいはアドバンストグラフィックポートAGPインタフェースであってもよい。メモリコントローラ134は、ハイパフォーマンスグラフィックインタフェース139を介しシステムメモリ110からハイパフォーマンスグラフィック回路138にリードデータを伝送する。
バスブリッジ132は、一部の実施例では、ISA(Industry Standard Architecture)バスあるいはPCI(Peripheral Component Interconnect)バスであってもよいシステムバス106とバス116との間のデータ交換を可能にするかもしれない。一部の実施例にでは、ローパフォーマンスグラフィックコントローラ、ビデオコントローラ及びネットワーキングコントローラを含むバス116上の各種入出力I/O装置114が設けられてもよい。他のバスブリッジ118は、一部の実施例では、バス116と120との間のデータ交換を可能にするよう利用されてもよい。一部の実施例では、バス120は、SCSI(Small Computer System Interface)バス、IDE(Integrated Drive Electronics)バス、あるいはUSB(Universal Serial Bus)バスであってもよい。追加的I/O装置はバス120と接続されてもよい。これらには、キーボード、マウスを含むカーソル制御装置122、音声I/O124、モデムやネットワークインタフェースを含む通信装置126、及びデータ記憶装置128を有するものであってもよい。ソフトウェアコード130が、データ記憶装置128に格納されてもよい。一部の実施例では、データ記憶装置128は、固定された磁気ディスク、フロッピー(登録商標)ディスクドライブ、光ディスクドライブ、光磁気ディスクドライブ、磁気テープ、フラッシュメモリを含む不揮発性メモリであってもよい。
図2を参照するに、一実施例によるメモリ管理実現の概略図が示される。一般に、メモリはバンクに組織化され、さらにページに分割される。メモリアクセス方法の詳細は、メモリページ管理実現(memory page management implementation)と呼ばれるかもしれない。与えられたメモリサイズに対し、多数の可能なメモリページ管理実現が存在する。例えば、DRAMは、ファーストページDRAM、EDO(Extended Data Out)DRAM、シンクロナスDRAM(SDRAM)、デュアルデータレートSDRAM(DDR SDRAM)、ランバス(登録商標)DRAM(RDRAM)などの各種個別のフォーマットにより購入されてもよい。多数のより多くのフォーマットが以降において利用可能となるかもしれない。あるメモリページ管理実現は、システムメモリ110とメモリコントローラ134との組み合わせにより特定されるかもしれない。メモリタイプ、メモリサイズ、インタリーブされたアクセスの利用性、及び他の多くの要因が、特定のメモリページ管理実現に加わるかもしれない。
図2は、1つの可能なメモリページ管理実現を示す。ここでは、バンク0(220)とバンク1(230)の2つが示されているが、2以上のメモリバンクが設けられてもよい。各バンクに対し4つのページが示されているが、他の実施例では、一様でないサイズのページを含む各バンクに対し他の個数のページが設けられてもよい。バンク0(220)には、ページ0(222)、ページ1(224)、ページ2(226)及びページ3(228)とラベル付けされている。他の実施例では、異なるバンク0(220)とバンク1(230)には、異なる個数のページが設けられてもよい。図2の実施例では、ある時点においては各バンクに対し1つのみのページがオープンされてもよいと仮定されているが、他の実施例では、ある時点において複数のページがオープン可能であるかもしれない。
バンク0(220)のメモリアクセス240、242、244のシーケンスを考える。この例では、ページ1(224)はすでにオープンされていると仮定する。このとき、ページ1(224)は、アクセス240においてオープンのままであり、ページヒットとなる。同一のページ1(224)に対する以降のアクセス242もまたページ224がオープンであると検出すべきであり、このため、アクセス242もまたページヒットとなるべきである。しかしながら、アクセス224はアクセス244の開始時にはクローズされているページ2(226)に対するものである。一般に、アクセス244は、アクセス242と比較すると、ある程度より時間がかかるべきである。
メモリにわたってメモリアクセスを行い、アクセス遅延時間が基準より長いとき通知することにより、プロセッサは実際のページ管理実現を判断することが可能となるようである。この場合、メモリページの境界が探索されたということは推論可能である。しかしながら実際には、この方法は正確な結果を与えないかもしれない。例えば、所与のメモリアクセスがある基準より長いアクセス遅延時間を有するのには他の多くの理由が存在する。DRAMは、リフレッシュサイクルを利用している。リフレッシュサイクル中に発行されたアクセスは、基準より長い遅延時間を有するかもしれない。同様に、図1に示されるマルチプロセッサシステムでは、プロセッサ140により発行されたメモリアクセスは、プロセッサ160により発行された以前のメモリアクセスにより遅延されるかもしれない。プロセッサ160により発行されたメモリアクセスはそれ自体時間を要するものであるだけでなく、メモリの異なるページをオープンさせるかもしれない。これら両方の効果は、プロセッサ140により発行されるアクセスのメモリアクセス遅延に影響を与えるかもしれない。
図3を参照するに、本開示の一実施例による図1のバスインタフェースの概略図が示される。図3は、一実施例ではフロントサイドバス(FSB)インタフェースであるかもしれないメモリアクセスをスケジューリングするバスインタフェースを示す。バスインタフェース144は、バスアクセスキュー310を用いてプロセッサ140からDRAMへのDRAMアクセスをスケジューリングするバススケジューラ320を有するようにしてもよい。バスインタフェース144は、キャッシュ142の内部の追加的バスを介しプロセッサ140に、システムバス106を介しメモリコントローラ134のバスインタフェースに接続されてもよい。メモリコントローラ134は、メモリバスを介しシステムメモリ110に接続されてもよい。一実施例では、システムメモリ110はDRAMであってもよい。
プロセッサ140は、アウト・オブ・オーダ(out−of−order)コアとハードウェアプリフェッチャ(HWP)とから構成されてもよい。アウト・オブ・オーダコアは、複数の命令がプロセッサの全体的パフォーマンスを向上させるように実行中にオーバーラップされるパイプライン技術を利用してもよい。HWPは、アウト・オブ・オーダコアの実行ユニットにより最終的に必要とされると予測されるDRAMアクセスを予め取得してもよい。
バスインタフェース144は、バススケジューラ320とページヒット予測器330とを有するようにしてもよい。一実施例では、バススケジューラ320はページヒット予測器330に接続されてもよく、バススケジューラ320はバスアクセスキュー310に接続されてもよい。他の実施例では、バスアクセスキュー310にはページヒット予測器330とバススケジューラ320の両方が接続されてもよい。一実施例では、バススケジューラ320は、プロセッサにより処理されているアプリケーションまたはアプリケーションの一部に基づき、プロセッサ140から(すなわち、アウト・オブ・オーダコアとHWPから)システムメモリ110へのアクセスをスケジューリングする。例えば、処理されているアプリケーションが遅延耐性的なものである場合、バススケジューラ320は、利用可能なメモリバス帯域幅を利用するため、メモリアクセスをスケジューリングするかもしれない。
あるいは、処理されているアプリケーションが遅延耐性的でない場合、バススケジューラ320は、メモリアクセス遅延を減少させるようメモリアクセスをスケジューリングするかもしれない。言い換えると、バススケジューラ320は、プロセッサ140により処理されているアプリケーションの特性に基づき、バスアクセスキュー310のメモリアクセスを調整するようにしてもよい。例えば、メモリアクセスが分岐予測ミスを解決する必要があるとき、アプリケーションは遅延耐性的でないかもしれない。この例では、分岐が予測ミスされると、コアにより実行される投機的作業は、メモリアクセスが完了し、プロセッサがプログラム実行の正確なパスから命令をフェッチするまで、無駄となるかもしれない。アプリケーションが「遅延耐性的」または「遅延非耐性的」か判断するため、バススケジューラ320は、HWPとアウト・オブ・オーダコアにより生成されたメモリアクセスをモニタするようにしてもよい。
システムメモリのオープンページからデータにアクセスすると予測されるシステムメモリアクセスをスケジューリングするため、バススケジューラ320は、ページヒット予測器330を利用してもよい。一実施例では、ページヒット予測器330は、アクセスされるシステムメモリ内のページ履歴を追跡するようにしてもよく、アクセスされたページの履歴に基づき、ページヒット予測器320は、オープンされると予測されるシステムメモリ内のページのリストを生成するようにしてもよい。例えば、ページ12、14、16及び18が以前にアクセスされ、システムメモリ110のページ管理実現により4ページが同時にオープンされることを可能にされている場合、ページヒット予測器は、ページ12への新たなアクセスがヒットし、ページ13への新たなアクセスがミスすると予測するかもしれない。本発明の一実施例では、ページヒット予測器330は、少なくともメモリバスサイクルごとにシステムメモリにおいてオープンされると予測されるページリストを生成(または更新)するようにしてもよい。他の実施例では、ページヒット予測器330は、少数の(例えば、2以上)メモリバスサイクルごとにシステムメモリにおいてオープンされると予測されるページリストを生成(または更新)するようにしてもよい。
メモリのオープンなページを決定するため、ページヒット予測器330は、システムメモリ110の実際のページ管理実現を知るべきである。このことは多くの実施例では困難かもしれない。なぜなら、プロセッサ140は、実際のページ管理実現を示すメモリコントローラ134の部分に直接アクセスしないからである。また、図2の説明で述べられたように、単にメモリアクセス遅延の増加を通知することによるメモリ全体へのメモリアクセスの実行及びメモリページ境界の位置の特定は、正確な結果を与えないかもしれない。
従って、本開示の一実施例では、ページヒット予測器330は、システムの実際のページ管理実現の決定において支援する追加的回路を有するようにしてもよい。図3の実施例では、タイマ332、平均遅延カウンタ334及びカウンタマトリックス336が、この決定に資するよう利用されてもよい。さらなる他の実施例では、本開示の方法はプロセッサ上で実行されるソフトウェアプログラムにより実行されてもよい。
タイマ332は、プロセッサ140により発行された所与のメモリアクセスに対する測定されたメモリアクセス遅延時間を提供するのに利用されてもよい。一実施例では、この遅延時間は、リードデータがバスインタフェース144に到達するまで、あるいはライトデータがバスインタフェース144から放出されるまで、システムバス106を介しバスアクセスキュー310から発行されるメモリアクセスリクエスト間の時間として与えられるかもしれない。タイマ332は、当該技術では周知な回路を用いて実現されてもよい。
平均遅延カウンタ334は、プロセッサ140から発行されるメモリアクセスの移動平均遅延を追跡するのに利用されてもよい。一般に、あるタイプのDRAMにはノミナルなメモリアクセス時間が存在するかもしれない。例えば、あるDRAMの例では、ページヒットには、125ナノ秒のメモリアクセス遅延が想定され、ページミスには、180ナノ秒が想定されるかもしれない。これらの値は一般には静的なものであり、時間に関して可変的なものではない。いくつかのDRAMは、「ページエンプティ」状態へのアクセスに対応する第3の可能なノミナルメモリアクセス時間を有するかもしれない。ページエンプティ状態は、バンクのリード回路の何れもがチャージされていないとき(すなわち、何れのページもオープンでないとき)、発生するかもしれない。このため、アクセスされたページに対応するリード回路がチャージされる必要はあるが、センスアンプからDRAMに書き込まれる必要のあるオープンページは存在しない。このため、ページエンプティバンクへのメモリアクセスは、ページヒットのものとページミス状態との間の何れかにおいて、ノミナルなアクセス遅延を有するかもしれない。
一部の実施例では、平均遅延として上記静的なメモリアクセス時間の1つあるいは組み合わせを利用することが可能であろう。しかしながら、平均遅延カウンタ334は、移動平均遅延を与えるため利用されるかもしれない。平均遅延カウンタ334は、ある選ばれた値に初期化されてもよい。このとき、観察される各メモリアクセス遅延に対し、この新しい値は、平均遅延の新たな値を生成するため、平均遅延カウンタ334のコンテンツと合成される。一実施例では、平均遅延カウンタ334は、メモリアクセスが完了するたび、1000だけインクリメントされてもよい。このとき、平均遅延カウンタ334は、各クロックサイクルで0.999と乗算されてもよい。ノミナルにメモリアクセスが100クロックサイクルごとに完了する場合、平均リターン遅延は、10/(平均遅延カウンタのコンテンツ)となるかもしれない。他の実施例では、他の移動平均遅延値を与えるため、平均遅延カウンタの他の実現が利用されてもよい。
カウンタマトリックス336は、各々が特定の可能なページ管理実現と特定の可能なバンクごとのページ数の両方に対応する多数のカウンタを有するようにしてもよい。発生する各メモリアクセスに対し、カウンタマトリックス336は、特定の可能なページ管理実現とバンクごとのページ数の各組み合わせに対し、直前のメモリアクセスと比較して、ページ境界がクロスするかの予測を計算するかもしれない。メモリアクセス遅延(一実施例では、タイマ332により生成されるような)と平均遅延(一実施例では、平均遅延カウンタ334により生成されるような)との間の差が選択された閾値より大きい場合、カウンタマトリックス336のすべてのカウンタがインクリメントあるいはデクリメントされるかもしれない。直前のメモリアクセスと比較するとき、ページ境界がクロスするかという予測が偽である場合、特定のカウンタがデクリメントされる。他方、直前のメモリアクセスと比較するとき、ページ境界がクロスするかという予測が真である場合、特定のカウンタがインクリメントされる。一実施例では、カウンタがインクリメントされる量は10であり、デクリメントされる量は1である。他の量が選択されてもよい。このようにして、所定の時間後、最大値を有するカウンタが、実際のページ管理実現とバンクごとの実際のページ数に対応すると推定される。
図3に示される回路は、ページ管理実現とバンクごとのページ数がシステムメモリ内の各種バンク間において同一であることを前提としている。他の実施例では、追加的なカウンタマトリックスが、異なるページ管理実現とバンクごとのページ数によりバンクに対応するよう追加されてもよい。
図4を参照するに、本開示の一実施例による可能なメモリ管理実現とブロックごとのメモリのページ数に対応するij個のカウンタ集合の概略図が示される。ij個のカウンタの集合は、図3の通常のカウンタマトリックス336に構成されるものとして示される。しかしながら、他の実施例では、ij個のカウンタの集合は、マトリックス以外のものとして構成されてもよい。
カウンタマトリックス336の上部には、0PMI、1PMIから4PMIまでラベル付けされたいくつかの可能なページ管理実現(PMI)が設けられている。与えられる実施例に従って、それ以上またはそれ以下のページ管理実現が設けられてもよい。一部の実施例では、以降におけるページ管理実現の新たな形式の追加を可能にするため、カウンタマトリックスには余分なカラムが設けられてもよい。第jMPIの例として、「ファーストページ−非インタリーブ」、「ファーストページ−インタリーブ」、「EDO−非インタリーブ」「EDO−インタリーブ」と共に、他の多数のタイプのページ管理実現があるかもしれない。
カウンタマトリック336の左側には、バンクごとのページ数が示されている。図4は、2のべき乗としてバンクごとのページ数iを示している。しかしながら、他の実施例では、他の値のシーケンスを利用することも可能である。一部の実施例では、以降におけるバンクごとの新たなページ数の追加を可能にするため、カウンタマトリックスに余分なローが設けられてもよい。
図4に示されるij個のカウンタの各々は、j番目の可能なページ管理実現とi番目のバンクごとのページ数に対応している。例えば、2,3カウンタ428は、第3ページ管理実現と第2バンクごとのページ数(8ページ)に対応している。図3に関する上述のプロセスが実行された後、最大の値を有するijカウンタは、実際のページ管理実現と実際のバンクごとのページ数に対応するであろう。例えば、2,1カウンタ424が最大値を有する場合、第1ページ管理実現が実際のものであり、第2バンクごとのページ数(8ページ)が実際のページ数となるであろう。
ijカウンタの最大値の決定は、様々な方法により実行されるかもしれない。一実施例では、固定された閾値Mが選ばれ、ijカウンタの何れかがM以上となると、当該プロセスは中断される。他の実施例では、カウンタは時間の制限なく実行され、必要に応じて読み出されるようにしてもよい。一部の状況では、実際のページ管理実現が与えられたカウンタマトリックスにリストされないということは注目すべきことである。しかしながら依然として、最大値を有するijカウンタに対応する潜在的なページ管理実現を利用して、ページヒット予測器330などのページヒット予測器において利用されるとき効果的であるかもしれない。
図5を参照するに、本開示の一実施例による方法のフローチャートが示される。図示されるプロセスは、簡単化のためリードメモリアクセスを説明するものであるが、ライトメモリアクセスが利用されてもよい。図5のプロセスは、ブロック514において開始され、初期値がカウンタマトリックスの様々なijカウンタに配置されるかもしれない。このとき、平均遅延に対する初期値を用いて、平均遅延カウンタが初期化されてもよい。その後ブロック518において、本プロセスはメモリからデータが到達するのを待機する。データがメモリから到達すると、ブロック522において、本プロセスはカウンタマトリックスのロー0及びカラム0から開始される。ブロック526において、現在のメモリアクセスに対して、第iページ数と第jページ管理実現によるページに関する予測された位置に実行される。その後判定ブロック530において、観察された遅延と平均遅延との差が閾値Tを上回っているか判断される。
判定ブロック530の結果がYESである場合、本プロセスは判定ブロック534に移行する。判定ブロック534において、ブロック526において決定されたページに関する予測された位置が直前のメモリアクセスに対し予測されたものと異なるページ上にあるか判断される。判定ブロック534の結果がYESである場合、本プロセスはブロック538においてijカウンタをインクリメントする。他方、判定ブロック534の結果がNOである場合、本プロセスはブロック542においてijカウンタをデクリメントする。何れの場合でも、その後本プロセスは判定ブロック546に移行し、本プロセスがカウンタマトリックスの最後のローに対するものであったか判断される。この回答がNOである場合、ブロック554においてiの値はインクリメントされ、本プロセスはブロック526において繰り返される。回答がYESである場合、本プロセスは判定ブロック550に移行し、本プロセスがカウンタマトリックスの最後のカラムに対するものであったか判断される。回答がNOである場合、ブロック558において、iの値は0にリセットされ、jの値はインクリメントされる。その後本プロセスはブロック526に繰り返される。他方、回答がYESである場合、ブロック562において平均遅延は更新され、本プロセスはブロック518においてデータを待機するため戻る。
判定ブロック530に戻って、そこでなされた判定がNOである場合、ブロック562において平均遅延が更新され、本プロセスはブロック518においてデータを待機するため戻る。
上記明細書では、本発明はそれの特定の実施例を参照して説明された。しかしながら、添付された請求項に与えられるような本発明のより広範な趣旨及び範囲から逸脱することなく、様々な改良及び変更が可能であるということは明らかであろう。従って、明細書と図面は、限定的な意味でなく、例示的なものとしてみなされるべきである。
図1は、一実施例によるマルチプロセッサシステムの概略図である。 図2は、一実施例によるメモリ管理実現の概略図である。 図3は、本開示の一実施例による図1のバスインタフェースの概略図である。 図4は、本開示の一実施例による可能なメモリ管理実現とブロックごとのメモリのページ数に対応するカウンタ集合の概略図である。 図5は、本開示の一実施例による方法のフローチャートである。

Claims (26)

  1. メモリアクセスリクエストをキュー処理するバスアクセスキューと、
    メモリアクセスリクエストを前記バスアクセスキューにスケジューリングするバススケジューラと、
    ij個のカウンタ(ただし、iはバンクのメモリページ数、jは可能なページ管理実現に対応する)のマトリックスを有するページヒット予測データを前記バススケジューラに提供するページヒット予測器と、
    から構成されることを特徴とするバスインタフェース。
  2. 請求項1記載のバスインタフェースであって、さらに、
    観察された遅延を決定するタイマを有することを特徴とするバスインタフェース。
  3. 請求項2記載のバスインタフェースであって、さらに、
    平均遅延を決定する平均遅延カウンタを有することを特徴とするバスインタフェース。
  4. 請求項3記載のバスインタフェースであって、
    前記ページヒット予測器は、前記観察された遅延から前記平均遅延を引いた値が閾値より大きいか判断することを特徴とするバスインタフェース。
  5. 請求項4記載のバスインタフェースであって、
    前記ページヒット予測器は、前記jに対応する可能なページ管理実現と前記iに対応するメモリページの個数とにより、現在のメモリアクセスが以前のメモリアクセスと比較して新しいメモリページ上にあると予測されると、論理信号を真に設定することを特徴とするバスインタフェース。
  6. 請求項5記載のバスインタフェースであって、
    前記ijカウンタは、前記論理信号が真であるときインクリメントされることを特徴とするバスインタフェース。
  7. 請求項5記載のバスインタフェースであって、
    前記ijカウンタは、前記論理信号が偽であるときデクリメントされることを特徴とするバスインタフェース。
  8. 各々が可能なページ管理実現とブロックのメモリページ数の組み合わせに対応するカウンタの集合を確立するステップと、
    メモリアクセスに対する観察される遅延が平均遅延を超えるか判断するステップと、
    前記メモリアクセスに対する観察される遅延が平均遅延を超える場合、前記対応する可能なページ管理実現とメモリページ数の組み合わせにより、前記メモリアクセスが以前のメモリアクセスとは異なるページに対するものであると予測されると、前記カウンタの1つをインクリメントするステップと、
    から構成されることを特徴とする方法。
  9. 請求項8記載の方法であって、
    前記判断するステップは、メモリアクセスに対する前記観察された遅延から前記平均遅延を引いた値が閾値を超えるか判断することを特徴とする方法。
  10. 請求項8記載の方法であって、さらに、
    前記判断するステップが肯定される場合、前記対応する可能なページ管理実現とメモリページ数の組み合わせにより、前記メモリアクセスが以前のメモリアクセスとは異なるページに対するものでないと予測されると、前記カウンタの1つをデクリメントするステップを有することを特徴とする方法。
  11. 請求項8記載の方法であって、さらに、
    前記平均遅延を更新するステップを有することを特徴とする方法。
  12. 請求項8記載の方法であって、さらに、
    前記カウンタの集合の値の集合の最大値を決定するステップを有することを特徴とする方法。
  13. 請求項12記載の方法であって、さらに、
    前記最大値を有するカウンタに対応する前記可能なページ管理実現とメモリページ数の組み合わせの1つをページヒット予測器に供給するステップを有することを特徴とする方法。
  14. プロセッサにより実行されるとき、
    各々が可能なページ管理実現とブロックのメモリページ数の組み合わせに対応するカウンタの集合を確立するステップと、
    メモリアクセスに対する観察される遅延が平均遅延を超えるか判断するステップと、
    前記メモリアクセスに対する観察される遅延が平均遅延を超える場合、前記対応する可能なページ管理実現とメモリページ数の組み合わせにより、前記メモリアクセスが以前のメモリアクセスとは異なるページに対するものであると予測されると、前記カウンタの1つをインクリメントするステップと、
    を実行するプログラム命令を有することを特徴とするコンピュータ可読媒体。
  15. 請求項14記載のコンピュータ可読媒体であって、
    前記判断するステップは、メモリアクセスに対する前記観察された遅延から前記平均遅延を引いた値が閾値を超えるか判断することを特徴とする媒体。
  16. 請求項14記載のコンピュータ可読媒体であって、さらに、
    前記判断するステップが肯定される場合、前記対応する可能なページ管理実現とメモリページ数の組み合わせにより、前記メモリアクセスが以前のメモリアクセスとは異なるページに対するものでないと予測されると、前記カウンタの1つをデクリメントするステップを有することを特徴とする媒体。
  17. 請求項14記載のコンピュータ可読媒体であって、さらに、
    前記平均遅延を更新するステップを有することを特徴とする媒体。
  18. 請求項14記載のコンピュータ可読媒体であって、さらに、
    前記カウンタの集合の値の集合の最大値を決定するステップを有することを特徴とする媒体。
  19. 請求項18記載のコンピュータ可読媒体であって、さらに、
    前記最大値を有するカウンタに対応する前記可能なページ管理実現とメモリページ数の組み合わせの1つをページヒット予測器に供給するステップを有することを特徴とする媒体。
  20. メモリアクセスリクエストをキュー処理するバスアクセスキューと、メモリアクセスリクエストを前記バスアクセスキューにスケジューリングするバススケジューラと、ij個のカウンタ(ただし、iはバンクのメモリページ数、jは可能なページ管理実現に対応する)のマトリックスを有するページヒット予測データを前記バススケジューラに提供するページヒット予測器とを有するプロセッサと、
    前記プロセッサに接続されるシステムバスと、
    前記システムバスに接続され、前記メモリアクセスリクエストを受信するメモリコントローラと、
    前記システムバスに接続される音声入出力装置と、
    から構成されることを特徴とするシステム。
  21. 請求項20記載のシステムであって、
    前記プロセッサは、観察された遅延を決定するタイマを有することを特徴とするシステム。
  22. 請求項21記載のシステムであって、
    前記プロセッサは、平均遅延を決定する平均遅延カウンタを有することを特徴とするシステム。
  23. 請求項22記載のシステムであって、
    前記ページヒット予測器は、前記観察された遅延から前記平均遅延を引いた値が閾値より大きいか判断することを特徴とするシステム。
  24. 請求項23記載のシステムであって、
    前記ページヒット予測器は、前記jに対応する可能なページ管理実現と前記iに対応するメモリページの個数とにより、現在のメモリアクセスが以前のメモリアクセスと比較して新しいメモリページ上にあると予測されると、論理信号を真に設定することを特徴とするシステム。
  25. 請求項24記載のシステムであって、
    前記ijカウンタは、前記論理信号が真であるときインクリメントされることを特徴とするシステム。
  26. 請求項25記載のシステムであって、
    前記ijカウンタは、前記論理信号が偽であるときデクリメントされることを特徴とするシステム。
JP2004565222A 2002-12-24 2003-12-04 ダイナミックランダムアクセスメモリページ管理実現を決定する方法及び装置 Expired - Fee Related JP4203022B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/328,576 US7020762B2 (en) 2002-12-24 2002-12-24 Method and apparatus for determining a dynamic random access memory page management implementation
PCT/US2003/038727 WO2004061685A2 (en) 2002-12-24 2003-12-04 Method and apparatus for determining a dynamic random access memory page management implementation

Publications (2)

Publication Number Publication Date
JP2006511886A true JP2006511886A (ja) 2006-04-06
JP4203022B2 JP4203022B2 (ja) 2008-12-24

Family

ID=32594518

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004565222A Expired - Fee Related JP4203022B2 (ja) 2002-12-24 2003-12-04 ダイナミックランダムアクセスメモリページ管理実現を決定する方法及び装置

Country Status (7)

Country Link
US (2) US7020762B2 (ja)
JP (1) JP4203022B2 (ja)
CN (1) CN100416529C (ja)
AU (1) AU2003298950A1 (ja)
DE (1) DE10393803T5 (ja)
TW (1) TWI236591B (ja)
WO (1) WO2004061685A2 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7020762B2 (en) * 2002-12-24 2006-03-28 Intel Corporation Method and apparatus for determining a dynamic random access memory page management implementation
JP4250989B2 (ja) * 2003-03-26 2009-04-08 日本電気株式会社 メモリアクセス制御装置
US7404047B2 (en) * 2003-05-27 2008-07-22 Intel Corporation Method and apparatus to improve multi-CPU system performance for accesses to memory
US8028143B2 (en) * 2004-08-27 2011-09-27 Qualcomm Incorporated Method and apparatus for transmitting memory pre-fetch commands on a bus
US8443162B2 (en) 2005-01-21 2013-05-14 Qualcomm Incorporated Methods and apparatus for dynamically managing banked memory
US7587547B2 (en) * 2006-03-30 2009-09-08 Intel Corporation Dynamic update adaptive idle timer
US20090132769A1 (en) * 2007-11-19 2009-05-21 Microsoft Corporation Statistical counting for memory hierarchy optimization
CN101453361B (zh) * 2007-12-07 2012-03-14 中国科学院声学研究所 一种网站请求队列管理方法
WO2011007599A1 (ja) 2009-07-17 2011-01-20 株式会社 東芝 メモリ管理装置
US8260991B2 (en) * 2009-09-15 2012-09-04 Arm Limited Data processing apparatus and method for measuring a value of a predetermined property of transactions
US8935489B2 (en) * 2010-01-19 2015-01-13 Rambus Inc. Adaptively time-multiplexing memory references from multiple processor cores
US9720859B1 (en) 2010-04-30 2017-08-01 Mentor Graphics Corporation System, method, and computer program product for conditionally eliminating a memory read request
US9418011B2 (en) * 2010-06-23 2016-08-16 Intel Corporation Region based technique for accurately predicting memory accesses
US9183041B2 (en) * 2012-09-21 2015-11-10 International Business Machines Corporation Input/output traffic backpressure prediction
US9336164B2 (en) * 2012-10-04 2016-05-10 Applied Micro Circuits Corporation Scheduling memory banks based on memory access patterns
GB2517195A (en) * 2013-08-15 2015-02-18 Ibm Computer system productivity monitoring
US10387046B2 (en) * 2016-06-22 2019-08-20 Micron Technology, Inc. Bank to bank data transfer
TWI595412B (zh) * 2016-09-09 2017-08-11 大心電子(英屬維京群島)股份有限公司 資料傳輸方法、記憶體儲存裝置及記憶體控制電路單元
US20180150125A1 (en) * 2016-11-28 2018-05-31 Qualcomm Incorporated Wifi memory power minimization
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
US10846363B2 (en) 2018-11-19 2020-11-24 Microsoft Technology Licensing, Llc Compression-encoding scheduled inputs for matrix computations
US11493985B2 (en) * 2019-03-15 2022-11-08 Microsoft Technology Licensing, Llc Selectively controlling memory power for scheduled computations

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US586106A (en) * 1897-07-13 Flour-sifter
US5651130A (en) * 1993-03-22 1997-07-22 Compaq Computer Corporation Memory controller that dynamically predicts page misses
US5787267A (en) * 1995-06-07 1998-07-28 Monolithic System Technology, Inc. Caching method and circuit for a memory system with circuit module architecture
US5860106A (en) 1995-07-13 1999-01-12 Intel Corporation Method and apparatus for dynamically adjusting power/performance characteristics of a memory subsystem
US6088772A (en) * 1997-06-13 2000-07-11 Intel Corporation Method and apparatus for improving system performance when reordering commands
US6035377A (en) * 1997-12-17 2000-03-07 Ncr Corporation Method and apparatus for determining memory pages having greatest frequency of access in a non-uniform memory access computer system
US6199145B1 (en) * 1998-02-27 2001-03-06 Intel Corporation Configurable page closing method and apparatus for multi-port host bridges
US6539440B1 (en) * 1998-11-16 2003-03-25 Infineon Ag Methods and apparatus for prediction of the time between two consecutive memory accesses
US6212598B1 (en) * 1998-11-30 2001-04-03 Micron Technology, Inc. Controlling a paging policy based on a requestor characteristic
US6684304B2 (en) * 1999-01-29 2004-01-27 Micron Technology, Inc. Method to access memory based on a programmable page limit
JP2004500667A (ja) * 2000-04-03 2004-01-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 改良されたメモリリクエスト調停機構を有するメモリコントローラを含むバスブリッジ
TW544575B (en) * 2000-08-15 2003-08-01 Silicon Integrated Sys Corp Page organizer within memory controller
US6799257B2 (en) 2002-02-21 2004-09-28 Intel Corporation Method and apparatus to control memory accesses
US7020762B2 (en) * 2002-12-24 2006-03-28 Intel Corporation Method and apparatus for determining a dynamic random access memory page management implementation

Also Published As

Publication number Publication date
US7020762B2 (en) 2006-03-28
JP4203022B2 (ja) 2008-12-24
CN100416529C (zh) 2008-09-03
US20060112255A1 (en) 2006-05-25
AU2003298950A8 (en) 2004-07-29
CN1729462A (zh) 2006-02-01
WO2004061685A3 (en) 2004-11-04
TWI236591B (en) 2005-07-21
DE10393803T5 (de) 2005-10-20
AU2003298950A1 (en) 2004-07-29
US20040123067A1 (en) 2004-06-24
TW200416535A (en) 2004-09-01
WO2004061685A2 (en) 2004-07-22
US7536530B2 (en) 2009-05-19

Similar Documents

Publication Publication Date Title
JP4203022B2 (ja) ダイナミックランダムアクセスメモリページ管理実現を決定する方法及び装置
US6799257B2 (en) Method and apparatus to control memory accesses
JP5305542B2 (ja) 投機的なプリチャージの検出
KR100724557B1 (ko) 아웃 오브 오더 dram 시퀀서
US6298424B1 (en) Computer system including priorities for memory operations and allowing a higher priority memory operation to interrupt a lower priority memory operation
US6785793B2 (en) Method and apparatus for memory access scheduling to reduce memory access latency
US8583894B2 (en) Hybrid prefetch method and apparatus
JP4866646B2 (ja) メモリーに送るコマンドの選択方法、メモリーコントローラー、コンピュータシステム
US20200285580A1 (en) Speculative memory activation
US7587547B2 (en) Dynamic update adaptive idle timer
US5784711A (en) Data cache prefetching under control of instruction cache
US20040059854A1 (en) Dynamic priority external transaction system
EP0812437A1 (en) Performing speculative system memory reads
EP3570286B1 (en) Apparatus for simultaneous read and precharge of a memory
US6553473B1 (en) Byte-wise tracking on write allocate
US20070239955A1 (en) Memory Scoreboard
US9047199B2 (en) Reducing penalties for cache accessing operations
US9037806B2 (en) Reducing store operation busy times
EP0482706B1 (en) Method for intelligent data cache prefetching, and computer for implementing this method
JPH1131072A (ja) メモリ先行ロード装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080507

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080807

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: 20080909

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081009

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111017

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121017

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131017

Year of fee payment: 5

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

LAPS Cancellation because of no payment of annual fees