(57)【特許請求の範囲】
【請求項１】
バスエージェントに結合した、複数のメモリバンクを有する少なくとも１つのメモリを有し、
各バスエージェントは各メモリバンクの開いているページアドレスを格納するための複数のトラッキングレジスタを含むトラッキングロジックを有し、前記トラッキングロジックは、到来するスヌープアドレスに基づいて前記トラッキングレジスタを更新し、
前記各バスエージェントは、スヌープアドレスを生成して他のバスエージェントにそのトラッキングレジスタを更新させ、
前記バスエージェントの少なくとも１つは、前記トラッキングレジスタに格納された値により決定された前記複数のメモリバンクのページオープン状態に基づいて、前記メモリに対するメモリトランザクションを並び替える装置。
【請求項２】
前記バスエージェントは共有バス構成であることを特徴とする、請求項１に記載の装置。
【請求項３】
前記バスエージェントは独立バス構成であることを特徴とする、請求項１に記載の装置。
【請求項４】
前記バスエージェントはスイッチングファブリック構成であることを特徴とする、請求項１に記載の装置。
【請求項５】
前記バスエージェントはポイントツーポイント構成であることを特徴とする、請求項１に記載の装置。
【請求項６】
前記メモリはダイナミックランダムアクセスメモリ（ＤＲＡＭ）であることを特徴とする、請求項１に記載の装置。
【請求項７】
前記バスエージェントは、プロセッサ、バスブリッジ、メモリコントローラ、入出力デバイス（Ｉ／Ｏデバイス）、またはグラフィックスモジュールのうちいずれかであることを特徴とする、請求項１に記載の装置。
【請求項８】
前記バスエージェントの各々は、他のバスエージェントから到来するスヌープアドレスを受け取りデコードするデコーダにより前記到来するスヌープアドレスに対応するメモリバンクを決定し、前記決定したバンクに対応するトラッキングレジスタの値を前記到来するスヌープアドレスで比較更新することにより、前記複数のメモリバンクのページオープン状態を追跡することを特徴とする、請求項１に記載の装置。
【請求項９】
第１と第２のメモリトランザクションを受け取るステップと、
到来するスヌープアドレスをデコードして前記スヌープアドレスに対応するメモリバンクを決定し、バスエージェントのトラッキングロジックに含まれる前記決定したメモリバンクに対応するトラッキングレジスタの値を、前記到来するスヌープアドレスで比較更新することにより、メモリバンクのページオープン状態を追跡するステップと、
メモリトランザクションのアドレスと前記トラッキングレジスタに維持された値とを比較することにより判定された、前記メモリトランザクションがアクセス対象とするメモリバンクのページオープン／クローズ状態に基づき、第１と第２のメモリトランザクションを並べ替えるステップと、を有し、
前記トラッキングレジスタは他のバスエージェントにそのトラッキングレジスタを更新させるスヌープアドレスを選択的に生成することを特徴とする方法。
【請求項１０】
前記第２のメモリトランザクションがオープン状態を有するメモリバンクに対するものであり、前記第１のメモリトランザクションがクローズ状態を有するメモリバンクに対するものであるとき、前記第２のメモリトランザクションを前記第１のメモリトランザクションの前に実行するように並べ替えることを特徴とする、請求項９に記載の方法。
【発明の詳細な説明】
【関連する出願】
【０００１】
この出願は、2002年12月24日に出願され、本願出願人に譲渡された出願番号第_____号「A  Method  and  Apparatus  for  determining  a  dynamic  random  access  memory  page  management  implementation（ダイナミックランダムアクセスメモリページ管理実装を決定するための方法と装置）」（発明者E.  Sprangle、A.  Rohillah）と関連する。
【技術分野】
【０００２】
本開示は、マイクロプロセッサシステムの分野に関し、特に、システムバス上でメモリコントローラとともに動作することができるマイクロプロセッサシステムに関する。
【背景技術】
【０００３】
ダイナミックランダムアクセスメモリ（DRAM)は、メモリプリチャージ、アクティベート、リード、及びライトの動作をする。特に、メモリバンクをアドレスするメモリコントローラは、メモリバンクをプリチャージし、その後、１つのページのアドレスされたカラムをアクセス（リードまたはライト）する前に、そのバンク内のアドレスされたそのページをアクティベートしなければならない。開かれたDRAMページにアクセス（ページヒット）することは、アクセスされるメモリがすでにプリチャージされ、アクティベートされていることを示す。各メモリアクセスの間にはそのメモリをプリチャージしアクティベートすることなくDRAMページとの間でデータをリード及びライトすることができる。「ページミス」（すなわち、開かれたページ以外のページのデータへのアクセス）が発生すると、新しいメモリページをプリチャージしアクティベートしてアクセス可能とする前に、現在開いているページを閉じなければならない（すなわち、センスアンプからDRAMチップに書き戻し）。古いページをDRAMに書き込み、新しいDRAMページをプリチャージ及びアクティベートするには、時間とメモリコマンド帯域幅を要する。そうするとメモリアクセスのアクセスレイテンシが増大し、その結果メモリバスの使用が不効率となり（帯域幅利用効率の減少）、DRAMを使用している装置（例えば、コンピュータ）の性能が落ちる。
【発明の詳細な説明】
【０００４】
メモリアクセスを最適化することによりマルチCPUシステムにおけるCPU性能を改善する方法を以下に説明する。以下の説明では、具体的な詳細を多数説明するが、それは本発明をよりよく理解してもらうためである。しかし、当業者には言うまでもなく、これらの具体的な詳細がなくても本発明を実施することができる。当業者は、以下の説明に基づいて、必要以上の実験をすることなく適当なロジック回路を実施することができるであろう。以下に説明するいろいろな実施形態により、CPUはメモリの状態をトラックすることができ、そのメモリ（例えばDRAM）をマルチCPUシステムにおいて効率的に使用することができる。例えば、クレームした主題により、他のCPUからのインカミングスヌープアドレスをデコードし、それをDRAMトラッキングレジスタの内容と比較し、そのトラッキングレジスタを適宜更新することが容易になる。同様に、ピンやプロトコルを追加しなくても、他の非CPUバスエージェント及び／またはバスマスタリングデバイス（例えば、バスブリッジ、メモリコントローラ、入出力（I/O）、グラフィックス）からのトランザクションをトラックすることもできるであろう。前述の通り、E.  SprangleとA.  Rohillaによる関連出願においてDRAMトラッキングロジックが開示されている。
【０００５】
このように、CPUはDRAMアクセスの状態と開いているページをトラックすることができる。それゆえ、クレームした主題によりDRAMメモリへのアクセスを最適化することによりCPU性能が改善されるが、それはそのCPUがトランザクションを順序付け、現在開いているDRAMページを効率的に利用するからである。
【０００６】
従来のDRAMメモリを変形したものが多数あるので、この開示では「DRAM」という用語を広い意味で使用している。一部の実施形態では単一トランジスタ、容量性メモリセルを用いて高密度メモリアレイを設けたが、開示した技術及びこの開示とクレームの範囲は特定タイプのメモリには限定されない。メモリセルの構成そのもの、センスアンプ、出力ラッチ、出力マルチプレクサにかかわらず、最終アドレスの区分的仕様（piece-wise  specification  of  the  ultimate  address）が可能ないろいろなメモリアレイに開示した実施形態を生かすことができる。
【０００７】
図１は、一実施形態において使用する装置を示す図である。DRAMメモリのページ状態のトラッキングを可能とするように結合されたN個のCPUを示すハイレベルの概略図である。一実施形態において、この装置は、メモリコントローラハブ（MCH）１０６を介してDRAMメモリ１０８と結合した複数のプロセッサ１０２と１０４を有するシステムである。同実施形態において、各プロセッサ１０２と１０４は複数のDRAMトラッキングレジスタを有する。
【０００８】
しかし、クレームされた主題はプロセッサが２つの場合に限定されない。そうではなく、図１は、マルチプロセッサ共有バス構成の一例を示しているだけである。あるいは、同様の共有バス構成において３つまたは４つのマイクロプロセッサを使用することもできる。また、クレームした主題は共有バス構成のプロセッサに限定されるものでもない。複数のプロセッサを独立バス構成で使用することもできる。独立バス構成では、複数のトラッキングレジスタがスヌープフィルタロジックに組み込まれている。これらのトラッキングレジスタは、各プロセッサにダミースヌープを生成し、本発明を実施するプロセッサにそのトラッキングレジスタを更新させる。別の実施形態において、プロセッサを他の構成（例えば、スイッチングファブリックやポイントツーポイント）で使用してもよい。
【０００９】
各プロセッサ（１０２と１０４）は、各バンク及びランクでどのDRAMメモリページが開いているかをトラックする１以上のDRAMトラッキングレジスタを有する。例えば、CPUはアウトゴーイングトランザクションキューからのアウトゴーイングトランザクションのアドレスをデコードし、DRAMトラッキングロジックはページアドレスを適当なトラッキングレジスタにロードすることを容易にする。このように、トラッキングレジスタの内容は、そのDRAMバンク中のどのページが開いているかを示す。さらにまた、CPUはトランザクションを順序付け、開いているとトラックされたページにアクセスすることにより、ページヒットの確率を高める。
【００１０】
図２は、一実施形態による装置を示す図である。この装置は、一実施形態において、図１に関して示したDRAMトラッキングロジックと共に使用されるロジックである。
【００１１】
一実施形態において、この装置は、図１に関して説明した各CPU内に組み込まれている。１つのCPUの観点から、本装置は他のCPU及びエージェントから少なくとも１つのスヌープアドレス２０２を受け取り、そのスヌープアドレスをデコードし、複数のDRAMトラッキングレジスタ２０４と比較する。CPUはそのトラッキングレジスタ比較の結果を用いて、トラッキングレジスタの内容を更新する。DRAM中の開いたページの状態に基づき、CPUはトランザクションを順序付け、開いたページを利用してページヒットの可能性を向上する。逆に、CPUはページミス条件が解消するのを待つため、ページミスは性能を低下させるので、CPUはトランザクションを順序付けてページミストランザクションのプライオリティを下げ、ページミスの可能性を下げる。
【００１２】
バンクデコーダ２０８は、スヌープアドレス２０２をデコードして、CPUがアクセスしているDRAMバンクを判断する。マルチプレクサ２０６は、バンクデコーダからのデコードされたバンク情報に少なくとも部分的に基づいて、トラッキングレジスタ２０４を選択し、そのトラッキングレジスタの内容をコンパレータ２１０に送る。コンパレータ２１０により、スヌープアドレスの複数のページアドレスビットをそのトラッキングレジスタの内容と比較する。一致しない場合、他のCPUまたはバスエージェントが別のDRAMページにアクセスしていて、現在開いているページを閉じて、スヌープアドレスにより決まる新しいページを開くことを示す。また、スヌープアドレスを有するCPUはトラッキングレジスタの内容にそのスヌープアドレスをリロードする。それ故、そのCPUは、自分のDRAMトラッキングレジスタ２０４を比較更新するために、自分のアウトゴーイングトランザクションと併せて他のCPU及びエージェントからのスヌープアドレス情報を利用する。
【００１３】
図３は、一実施形態による方法を示す図である。この方法は、ブロック３０２に示したように、第１のCPUが第２のCPUまたはエージェントからスヌープアドレスを受け取るステップを有する。ブロック３０４に示したように、第１のCPUはそのスヌープアドレスをデコードし、適当なDRAMバンクを判断する。第１のCPUはそのバンク情報に少なくとも部分的に基づいてレジスタを選択する。その後、ブロック３０６に示したように、第１のCPUはそのバンク情報を選択されたレジスタの内容と比較する。一致しない場合、ブロック３０８に示したように、第１のCPUは選択されたレジスタの内容をスヌープアドレスの値で更新する。ブロック３１０に示したように、一致した場合、CPUは何もしない。
【００１４】
図４は、一実施形態による装置を示す図である。一実施形態によるこの装置は、メモリ４０６に結合したメモリコントローラ４０４と複数のプロセッサ４０２を有する。例えば、このプロセッサは、メモリコントローラ機能の実行を可能とするメモリコントローラと一体となっており、そのプロセッサ自体がメモリコントローラ機能を持っていてもよい。
【００１５】
逆に、他の実施形態において、プロセッサ４０２はメモリ４０６と結合したメモリコントローラ４０４と結合し、そのプロセッサ自体はメモリコントローラ機能は持っていない。前述の両方の実施形態においては、この装置は図１−３に示した前述の実施形態を有する。また、一実施形態において、装置はシステムである。
【００１６】
また、メモリは、シンクロナスDRAM（SDRAM）、ラムバスDRAM（RDRAM）、ダブルデータレートDRAM（DDR  DRAM）、スタティックランダムアクセスメモリ（SRAM）、メモリの完全なアドレスを生成するために少なくとも２回のアクセスを利用するいかなるメモリであってもよい。例えば、一実施形態において、単一のマルチプレクサを通して経路指定される複数のメモリチップを有するSRAMを用いてもよい。複数の実施形態を説明し図に示したが、言うまでもなく、上記実施形態は単なる例示であって、本発明を限定するものではない。また、本発明は、図示し説明した具体的な構成に限定されるものでもない。当業者は、この開示を研究して、いろいろな修正を加えることができるであろう。
【図面の簡単な説明】
【００１７】
【図１】一実施形態で使用される装置を示す図である。
【図２】一実施形態で使用される装置を示す図である。
【図３】一実施形態で使用される方法を示すフローチャートである。
【図４】一実施形態で使用されるシステムを示す図である。
【図１】
0004395511.tif 000002
【図２】
0004395511.tif 000003
【図３】
0004395511.tif 000004
【図４】
0004395511.tif 000005