(57)【要約】メモリ帯域幅利用効率を最適化するマルチプロセッサコンピューティングシステムにおけるメモリページアクセスをトラッキングするフローチャートと回路が開示されている。
2006526224.tif 000002
【特許請求の範囲】
【請求項１】
バスエージェントの構成に結合した、複数のメモリバンクを有する少なくとも１つのメモリと、
前記複数のメモリバンクのページオープン状態に少なくとも部分的に基づいて、前記メモリのメモリトランザクションを順序付ける前記バスエージェントの少なくとも１つと、を有することを特徴とする装置。
【請求項２】
請求項１に記載の装置であって、
前記構成は共有バス構成であることを特徴とする装置。
【請求項３】
請求項１に記載の装置であって、
前記構成は独立バス構成であることを特徴とする装置。
【請求項４】
請求項１に記載の装置であって、
前記構成はスイッチングファブリック構成であることを特徴とする装置。
【請求項５】
請求項１に記載の装置であって、
前記構成はポイントツーポイント構成であることを特徴とする装置。
【請求項６】
請求項１に記載の装置であって、
前記メモリはダイナミックランダムアクセスメモリ（DRAM）であることを特徴とする装置。
【請求項７】
請求項１に記載の装置であって、
前記複数のメモリバンクの前記ページオープン状態は、前記バスエージェントの構成からの他のメモリトランザクションに基づくことを特徴とする装置。
【請求項８】
請求項７に記載の装置であって、
各メモリバンクの前記ページオープン状態は前記バスエージェントの少なくとも１つの中の複数のトラッキングレジスタの１つに格納されることを特徴とする装置。
【請求項９】
請求項８に記載の装置であって、
前記バスエージェントは、プロセッサ、バスブリッジ、メモリコントローラ、入出力デバイス（I/Oデバイス）、またはグラフィックスモジュールのうちいずれかであることを特徴とする装置。
【請求項１０】
請求項７に記載の装置であって、
メモリバンクを決定し、インカミングスヌープアドレスの前記メモリバンクの状態をデコードされたバンクに基づく前記トラッキングレジスタの１つの状態と比較するため、前記他のバスエージェントからインカミングスヌープアドレスを受け取る、前記バスエージェントの各々の中のデコーダによりメモリバンクのページオープン状態が計算されることを特徴とする装置。
【請求項１１】
バスエージェントの構成と結合した、複数のメモリバンクを有する少なくとも１つのメモリと、
前記１つのバスエージェント内の複数のトラッキングレジスタの前記他のバスエージェントの１つからのデコードされたインカミングスヌープアドレスとの比較に少なくとも部分的に基づいて、前記メモリの第１と第２のメモリトランザクションを順序付けるかどうか判断する前記バスエージェントの少なくとも１つと、を有することを特徴とする装置。
【請求項１２】
請求項１１に記載の装置であって、
前記構成は共有バス構成であることを特徴とする装置。
【請求項１３】
請求項１１に記載の装置であって、
前記構成は独立バス構成であることを特徴とする装置。
【請求項１４】
請求項１１に記載の装置であって、
前記構成はスイッチングファブリック構成であることを特徴とする装置。
【請求項１５】
請求項１１に記載の装置であって、
前記構成はポイントツーポイント構成であることを特徴とする装置。
【請求項１６】
請求項１１に記載の装置であって、
前記メモリはダイナミックランダムアクセスメモリ（DRAM）であることを特徴とする装置。
【請求項１７】
請求項１１に記載の装置であって、
前記順序付けにより、ページヒット状態を有するメモリバンクへの第２のメモリトランザクションがページミス状態を有するメモリバンクへの第１のメモリトランザクションの前に処理されることを特徴とする装置。
【請求項１８】
請求項１７に記載の装置であって、
各メモリバンクのページヒット状態は、前記バスエージェントの少なくとも１つの中の複数のトラッキングレジスタの１つに格納されることを特徴とする装置。
【請求項１９】
請求項１８に記載の装置であって、
前記バスエージェントは、プロセッサ、バスブリッジ、メモリコントローラ、入出力デバイス（I/Oデバイス）、またはグラフィックスモジュールのうちいずれかであることを特徴とする装置。
【請求項２０】
請求項１７に記載の装置であって、
メモリバンクを決定し、インカミングスヌープアドレスの前記メモリバンクの状態をデコードされたバンクに基づく前記トラッキングレジスタの１つの状態と比較するため、前記他のバスエージェントからインカミングスヌープアドレスを受け取る、前記バスエージェントの各々の中のデコーダによりメモリバンクのページヒット状態が計算されることを特徴とする装置。
【請求項２１】
スヌープアドレスを受け取るステップと、
前記スヌープアドレスをデコードしてメモリバンクを決定するステップと、
前記バンクを１つの値と比較するステップと、
前記比較により一致しない場合、前記トラッキングレジスタの１つの前記値を前記スヌープアドレスで更新するステップと、を有することを特徴とする方法。
【請求項２２】
請求項２１に記載の方法であって、
前記バンクを前記値と比較するステップは、前記スヌープアドレスのデコードに基づいて複数のレジスタの１つを選択するステップを有することを特徴とする方法。
【請求項２３】
第１と第２のメモリトランザクションを受け取るステップと、
インカミングスヌープアドレスのデコードと前記インカミングスヌープアドレスと１つの値との比較により決定されたメモリバンクのページオープン状態に基づき第１と第２のメモリトランザクションを順序付けるステップと、を有することを特徴とする方法。
【請求項２４】
請求項２３に記載の方法であって、
前記第２のメモリトランザクションがオープン状態を有するメモリバンクに対するものであり、前記第１のメモリトランザクションがクローズ状態を有するメモリバンクに対するものであるとき、前記第２のメモリトランザクションを前記第１のメモリトランザクションの前に実行するように順序付けることを特徴とする方法。
【請求項２５】
少なくとも第１と第２のメモリバンクを有するシンクロナスDRAM（SDRAM）またはダブルデータレートDRAM（DDR  DRAM）と結合した、複数のバスエージェントの構成と、
前記バスエージェントの１つであるエージェントXは、
第１と第２のメモリバンクへの第１と第２のメモリオペレーションを生成し、
エージェントXへのインカミングスヌープアドレスとエージェントXの複数のレジスタの１つ内に格納された値の間の比較に少なくとも部分的に基づいて、第１のメモリトランザクションの前に第２のメモリトランザクションが処理されるように順序付けすることを特徴とするシステム。
【請求項２６】
請求項２５に記載のシステムであって、
前記インカミングスヌープアドレスの値は、前記第１または第２のメモリバンクいずれかのページオープン状態であることを特徴とするシステム。
【請求項２７】
請求項２５に記載のシステムであって、
前記複数のレジスタの１つは、前記インカミングスヌープアドレスのデコードされたバージョンにより選択されることを特徴とするシステム。
【請求項２８】
請求項２５に記載のシステムであって、
前記構成は共有バス構成であることを特徴とするシステム。
【請求項２９】
請求項２５に記載のシステムであって、
前記構成は独立バス構成であることを特徴とするシステム。
【請求項３０】
請求項２５に記載のシステムであって、
前記構成はスイッチングファブリック構成であることを特徴とするシステム。
【請求項３１】
請求項２５に記載のシステムであって、
前記構成はポイントツーポイント構成であることを特徴とするシステム。
【発明の詳細な説明】
【関連する出願】
【０００１】
この出願は、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を用いてもよい。複数の実施形態を説明し図に示したが、言うまでもなく、上記実施形態は単なる例示であって、本発明を限定するものではない。また、本発明は、図示し説明した具体的な構成に限定されるものでもない。当業者は、この開示を研究して、いろいろな修正を加えることができるであろう。
【図面の簡単な説明】
【００１７】
【図１】一実施形態で使用される装置を示す図である。
【図２】一実施形態で使用される装置を示す図である。
【図３】一実施形態で使用される方法を示すフローチャートである。
【図４】一実施形態で使用されるシステムを示す図である。
【図１】
2006526224.tif 000003
【図２】
2006526224.tif 000004
【図３】
2006526224.tif 000005
【図４】
2006526224.tif 000006
【国際調査報告】
2006526224.tif 000007
2006526224.tif 000008
2006526224.tif 000009