(57)【要約】アンキャッシュ素子（１２O〜１２N）のための利用可能な帯域幅の使用を向上させるためのシステムおよび方法。素子に書込まれるデータは、アンキャッシュ素子（１２O〜１２N）のための適切なサイズの複数のデータ要素にデータをまたがらせることによって書込まれる。素子から読出されるデータは、プロセッサ素子（１０O〜１０N）での不必要な待ちサイクルを避けるため、アンキャッシュ素子（１２O〜１２N）上の複数のアドレスから検索される。
2005508549.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステム内のアンキャッシュ素子にデータを書込むための方法であって、
アンキャッシュ素子にデータを書込むための要求をプロセッサによって受取るステップと、
前記プロセッサによって前記データを要求するステップと、
前記プロセッサによって前記データを受取るステップと、
前記アンキャッシュ素子アドレス空間の最適な数の連続するキャッシュラインアドレスにデータのセクションをまたがらせるステップと、
前記連続するキャッシュラインアドレスを前記アンキャッシュ素子に書込むステップとを含む、方法。
【請求項２】
各キャッシュラインアドレス書込への応答を前記プロセッサによって受取るステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記データを要求するステップは、キャッシュラインのデータのブロックを要求するステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記プロセッサによって前記データを受取るステップは、前記プロセッサのキャッシュに前記データを保存するステップをさらに含む、請求項１に記載の方法。
【請求項５】
プロセッサの実行の列の深さに等しいアドレスの数を使用することによってキャッシュラインアドレスの数を最適化するステップをさらに含む、請求項１に記載の方法。
【請求項６】
前記プロセッサのトランザクションの列によって許可される最大の数の書込コマンドを発行するステップをさらに含む、請求項１に記載の方法。
【請求項７】
前記データのセクションをまたがらせるステップは、前記データのすべてをまたがらせるステップを含む、請求項１に記載の方法。
【請求項８】
コンピュータシステム内のアンキャッシュ素子からデータを読出すための方法であって、
アンキャッシュ素子からデータを読出すための要求をプロセッサによって受取るステップと、
前記アンキャッシュ素子にある複数のアドレスから前記データを検索するステップと、
前記複数のアドレスをまとめて、１つまたは複数のキャッシュラインフォーマットされたデータブロックにするステップと、
１つまたは複数のキャッシュラインデータブロックをメモリに書込むステップとを含む、方法。
【請求項９】
アンキャッシュアドレスの最適な数を判定するステップをさらに含む、請求項８に記載の方法。
【請求項１０】
前記アンキャッシュアドレスの最適な数を判定するステップは、
メインメモリの待ち時間を前記プロセッサのトランザクションピリオドで除すことによって第１の数を計算するステップと、
前記プロセッサの実行の列の長さを使用することによって第２の数を計算するステップと、
２つのうちの少ない方をアンキャッシュアドレスの最適な数として使用するステップとをさらに含む、請求項９に記載の方法。
【請求項１１】
アンキャッシュ素子のための帯域幅の使用を向上させるためのシステムであって、
少なくとも１つのプロセッサと、
メモリと、
メモリアドレスとしてマッピングされた複数のアドレスを含むアンキャッシュ素子と、
キャッシュラインデータブロックを前記アンキャッシュ素子によって使用可能なデータの複数のラインに分配し、
前記データの複数のラインを前記アンキャッシュ素子に書込み、
前記データの複数のラインをアンキャッシュ素子から読出し、
前記データの複数のラインをキャッシュラインブロックにまとめるようにプログラムされる少なくとも１つのプロセッサとを含む、システム。
【請求項１２】
前記複数のアドレスは、先入れ先出し受取列を含む、請求項１１に記載のシステム。
【請求項１３】
前記複数のアドレスは、先入れ先出し出力列を含む、請求項１１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の背景
発明の分野
この発明はコンピュータシステム内のアンキャッシュ素子のための帯域幅の使用を向上させるためのシステムおよび方法に関し、特に、コンピュータシステム内に組込まれた再構成可能なプロセッサのための利用可能な帯域幅を最大限に使用するためのシステムおよび方法に関する。
【背景技術】
【０００２】
関連技術の検討
現代のマイクロプロセッサは、プロセッサのコアの非常に近くにあるキャッシュメモリを使用することで性能を最大化するように設計されている。キャッシュメモリは、コンピュータシステムのメインメモリの最も最近かつ頻繁に使用された内容を記憶する。キャッシュメモリは、メインメモリよりもはるかに速くマイクロプロセッサにデータを提供することができる。これにはいくつかの理由がある。メモリキャッシュはメインメモリよりも高品質のメモリ回路から作られていることが多い。これらハイエンドの回路はメインメモリよりも高いクロックレートで動作することができる。さらに、マイクロプロセッサとキャッシュメモリとの間には専用バスがあることがあり、マイクロプロセッサとメインメモリとの間の高い帯域幅に繋がる。最後に、時間的な局所性を利用するため、キャッシュメモリは物理的にメインメモリよりもマイクロプロセッサのずっと近くにあり、場合によってはマイクロプロセッサと同じ回路に組込まれる。
【０００３】
物理的に遠いメインメモリではなく、キャッシュメモリにまずアクセスすることで、マイクロプロセッサはメモリアクセスの待ち時間を低減し、処理スループットを高めることができる。あるアイテムがキャッシュで見つからないときのみ、マイクロプロセッサはそれをメインメモリから検索し、今後の使用のためにキャッシュに位置付ける必要がある。あるデータ片がアクセスされるとき、近くのデータのユニットも間もなくアクセスさせる可能性が高い。この空間的な局所性を利用するため、一般に、メインメモリがアクセスされるとき、現在必要とされているより多くのデータのブロックがキャッシュに書込まれる。キャッシュメモリは、通常、データの行として組織され、各行はメモリからフェッチされるデータブロックの長さである。これら行の各々はキャッシュラインとして知られる。メモリからの各フェッチはキャッシュラインの幅と同じサイズのデータのブロックを戻す。効率のため、キャッシュと対話する各バスはキャッシュラインをベースとして対話を行なう。言換えれば、すべてのデータ転送はキャッシュラインサイズで行なわれる。
【０００４】
キャッシュメモリの使用は、通常のメモリチップではないメモリサブシステムに関連する素子も含むマイクロプロセッサベースのシステムでは問題を起こす。そのような一例は、ＳＲＣのマルチアダプティブプロセッサ（Multi-Adaptive Processor；「ＭＡＰ（Ｒ）」）ユニットなどの再構成可能なプロセッサである。これらＭＡＰ（Ｒ）ユニットは、通常のメモリアドレスをデコードして、再構成可能な論理が実行するコマンドにする。そのようなコマンドセットは、とりわけ、ＭＡＰ（Ｒ）上の先入れ先出し受取列（「受取ＦＩＦＯ」）にオペランドを書込みかつＭＡＰ（Ｒ）にある先入れ先出し出力列（「出力ＦＩＦＯ」）から結果を読出すためのコマンドを含む。
【０００５】
プロセッサの効率の低下およびキャッシュラインサイズのデータを扱うためのアンキャッシュ素子の能力の限界のため、読出および書込要求がキャッシュをバイパスしてアンキャッシュ素子があるところへ直接進めるようにする必要がある。幸い、大抵のマイクロプロセッサは、そのようにするアンキャッシュメモリ参照を許容する。しかしながら、これらアンキャッシュメモリ参照は、次のトランザクションの発行が可能になる前にアンキャッシュ素子からの応答を必要とする。アンキャッシュモードでは、プロセッサは読出要求を、たとえばメインメモリに直接送り、適切な応答を待つ。大きなシステムでは、この応答にいくつかのマイクロプロセッサのトランザクションピリオドに等しい時間がかかることがある。このため、マイクロプロセッサは、第１のトランザクションへの応答が受取られる前に異なるアドレスへの複数のトランザクションを開始するのを可能にする実行の列を有する。この方法はマイクロプロセッサの入出力帯域幅を最大化する。
【０００６】
マイクロプロセッサが出力ＦＩＦＯに記憶された結果を読出そうとすると、ＭＡＰ（Ｒ）の場合のように、ＭＡＰ（Ｒ）  ＲＥＡＤコマンドにデコードされたアドレスがプロセッサによって要求される。このアドレスはＭＡＰ（Ｒ）の出力ＦＩＦＯの前端と相互に関連し、出力ＦＩＦＯがどれだけ長くてもまたは短くても変わらない。しかしながら、後続のＭＡＰ（Ｒ）  ＲＥＡＤコマンドが同じアドレスにアクセスしようとするため、マイクロプロセッサは、マイクロプロセッサの実行の列の深さに関係なく、第１のコマンドからの応答が受取られるまで第２のＭＡＰ（Ｒ）  ＲＥＡＤコマンドを発行できない。応答待ちはプロセッサの利用可能な資源の使用効率を大きく低下させる。
【０００７】
この遅延の理由は、マイクロプロセッサプログラムが実行しているとき、キャッシュがバイパスされているため、マイクロプロセッサは第２のメインメモリアクセスのためのアドレスが第１のものと同じだと考える。この状況では、マイクロプロセッサは既にそのアドレスへの未処理の要求を有していると気づいており、第１の応答が受取られるまでそのアドレスがさらに使用されるのを停止しなければならない。
【０００８】
同様の問題がアンキャッシュ素子への書込コマンド中にも起こる。アンキャッシュ素子は、通常、キャッシュライン一杯のデータを扱うことはできない。ＭＡＰ（Ｒ）の場合、ＭＡＰ（Ｒ）に書込まれるべきコマンドは、アンキャッシュ素子に転送され得るデータの量より短いことがある。これらデータ要素の各々のためにメモリから読出すことは、コンピュータシステムがデータを転送する効率を大きく低下させる。データのライン一杯にデータを書込むことはＭＡＰ（Ｒ）ユニットにさらに負荷を生じさせる。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
発明の概要
したがって、この発明は、関連技術の限界および欠点による問題の１つまたは複数を実質的に未然に防ぐ、アンキャッシュ素子のための利用可能な帯域幅の使用を向上させるためのシステムおよび方法に向けられる。
【００１０】
この発明の目的は、アンキャッシュメモリ読出要求のために帯域幅を効率的に使用するためのシステムおよび方法を提供することである。
【００１１】
この発明の別の目的は、アンキャッシュメモリ書込要求のために帯域幅を効率的に使用するための方法を提供することである。
【００１２】
この発明のさらに別の特徴および利点は、以下の説明に記載され、一部は説明から明らかであり、またはこの発明を実践することで学ばれるであろう。この発明の目的およびその他の利点は、記載される説明および特許請求の範囲ならびに添付の図面に具体的に指摘される構造によって理解され、実現されるであろう。
【課題を解決するための手段】
【００１３】
一実施例では、この発明は、コンピュータシステム内のアンキャッシュ素子にデータを書込むための方法を含み、この方法は、アンキャッシュ素子にデータを書込むための要求をプロセッサによって受取るステップと、プロセッサによってデータを要求するステップと、プロセッサによってデータを受取るステップと、データのセクションをアンキャッシュ素子アドレス空間の最適な数の連続するキャッシュラインアドレスにまたがらせる（striding）ステップと、連続するキャッシュラインアドレスをアンキャッシュ素子に書込むステップとを含む。
【００１４】
さらに別の実施例では、この発明は、コンピュータシステム内のアンキャッシュ素子からデータを読出すための方法を含み、この方法は、アンキャッシュ素子からデータを読出すための要求をプロセッサによって受取るステップと、アンキャッシュ素子にある複数のアドレスからデータを検索するステップと、複数のアドレスをまとめて１つまたは複数のキャッシュラインフォーマットされたデータブロックにするステップと、１つまたは複数のキャッシュラインデータブロックをメモリに書込むステップとを含む。
【００１５】
さらに別の実施例では、この発明は、アンキャッシュ素子のための帯域幅の使用を向上させるためのシステムを含み、このシステムは、少なくとも１つのプロセッサ、メモリ、およびメモリアドレスとしてマッピングされた複数のアドレスを含むアンキャッシュ素子を含む。少なくとも１つのプロセッサは、キャッシュラインのデータのブロックをアンキャッシュ素子によって使用可能なデータの複数のラインへ分配し、データの複数のラインをアンキャッシュ素子に書込み、アンキャッシュ素子からデータの複数のラインを読出し、かつデータの複数のラインをキャッシュラインブロックにまとめるようにプログラムされる。
【００１６】
上述の一般的な説明および以下の詳細な説明は、例示および説明のためのものであり、特許請求の範囲に記載されるこの発明をさらに説明するためのものである。
【００１７】
この発明をさらによく理解できるようにするために含まれる添付の図面は、この明細書に組込まれ、その一部を構成する。添付の図面はこの発明の実施例を示し、説明とともにこの発明の原則を説明する役割を果たす。
【発明を実施するための最良の形態】
【００１８】
好ましい実施例の詳細な説明
この発明の好ましい実施例を詳しく参照する。その例は添付の図面に示される。
【００１９】
この発明のこの実施例を説明するため、図面を含めて示される例は、Pentium（Ｒ）IIIクラスのマイクロプロセッサの使用を仮定する。具体的には、３２バイトのキャッシュライン幅、８バイトのアンキャッシュデータ幅、および最大の実行の列の長さは４であることが仮定される。
【００２０】
図１を参照すると、プロセッサおよび再構成可能なプロセッサを含むハイブリッドマルチプロセッサコンピュータシステムがプロセッサボード１０O〜１０Nとともに示される。第１のプロセッサボード１０Oを参照すると、２つのプロセッサ１００OAおよび１００OBを含む。各プロセッサは、データバス２０Oを介してマルチプレクサ１４Oに接続するブリッジ１１０Oに接続する。プロセッサボード１０iの別の実施例では、プロセッサ１００i A+Bはメモリ入出力ブリッジ１１０iを通じてアンキャッシュ素子１１１iに接続される。
【００２１】
マルチプレクサ１４O〜１４Nはクロスバー１６を介して共通のメモリ１８へおよびそこからデータを向けるか、またはＭＡＰ（Ｒ）素子１２O〜１２Nへおよびそこからデータを向けるためのスイッチである。ＭＡＰ（Ｒ）素子１２O〜１２Nはクロスバー１６のプロセッサ側に示される。ハイブリッドコンピュータシステムのさらに別の実施例は、ＭＡＰ（Ｒ）をクロスバー１６のメモリ側に置いてもよいし、またはコンピュータシステム内のさまざまな他の場所に置いてもよい。これらのどの構成でも、この発明は同様の態様で動作する。各バス２０O〜２０N、２２O〜２２N、２４O〜２４Nおよび２６は、３２バイトのキャッシュラインプロトコルを介して通信する。言換えれば、これら経路に沿って送られるデータは、３２バイトのブロックであるか、または１６ワードＷO〜Ｗ15の幅である。
【００２２】
図２および図３を参照すると、１６ワードＷO〜Ｗ15のキャッシュラインが図２に示される。付随する例で使用される種類のプロセッサは、ＭＡＰ（Ｒ）などのアンキャッシュ素子に一度に４ワードＷO〜Ｗ3のデータのみを転送することができる。図３はキャッシュラインからの利用可能な４ワードＷO〜Ｗ3を示す。アンキャッシュ素子と通信するときは、キャッシュラインの最後の１２ワードＷ4〜Ｗ15は無効であり、使用不可能である。
【００２３】
図４を参照すると、ＭＡＰ（Ｒ）への書込中、マイクロプロセッサは共通メモリから標準の３２バイトのキャッシュラインをフェッチする。２バイトのＭＡＰ（Ｒ）コマンドがこの例では使用される。プロセッサによって読出されるデータのキャッシュライン内には最高１６個の２バイトのコマンドがある。個々の書込トランザクションが連続的に完了するのを待つ遅延を避けるためにＭＡＰ（Ｒ）への書込トランザクションのアドレスはキャッシュライン境界にまたがるため、マイクロプロセッサのトランザクションの深さを十分に利用することができる。各書込転送は異なるキャッシュラインアドレスを使用し、それらはすべてＭＡＰ（Ｒ）素子の受取ＦＩＦＯへとマッピングされるため、マイクロプロセッサはプロセッサのトランザクションの深さによって許容されるだけ多くのこれらトランザクションを発行することができる。マイクロプロセッサが書込トランザクションへの返答を受取り、トランザクションの列がはけると、さらに多くの書込トランザクションを発行できる。このシーケンスはそのキャッシュラインのデータが消費されるまで続けられ、次のキャッシュラインが共通メモリからフェッチされる。
【００２４】
図５を参照すると、この発明によるアンキャッシュ素子に対する書込要求を扱う方法は次のステップを含む。プロセッサがアンキャッシュ素子書込要求を受取る、ステップ３０。プロセッサが、キャッシュされた共通メモリアドレス空間からプロセッサのキャッシュライン幅に等しいデータブロックを検索する、ステップ３２。データはキャッシュに書込まれ、プロセッサに利用可能となる、ステップ３４。プロセッサが使用可能なデータを連続するキャッシュラインに分配する、ステップ３６。プロセッサがトランザクションの列によって許可される最大の数の書込コマンドを使用してアンキャッシュ素子の受取ＦＩＦＯの複数のアドレスにデータを書込む、ステップ３８。キャッシュライン内でさらにデータが利用可能な場合、ステップ３６および３８が繰返される、ステップ３９。
【００２５】
図６を参照すると、読出しコマンドは実質的にこのプロセスを逆行する。先入れ先出し列４０または出力ＦＩＦＯは各ＭＡＰ（Ｒ）素子にある。出力ＦＩＦＯ４０はＭＡＰ（Ｒ）から読出される準備のできた情報のための列を提供する。列の上部は、そのプロセッサのためのメモリの場所としてマッピングされた４つの連続するアドレス４１〜４４を含む。列の末尾のアドレス４５1〜４５Nはマッピングされないが、列が大きくなるための付加的な空間を提供する。
【００２６】
複数の連続するキャッシュラインアドレス４１〜４４を設けることによって、プロセッサは同一のアドレスへの要求を伴う応答の遅延を待つことなく各アドレスからデータを要求することができる。これらアドレスの最適な数は、メインメモリの待ち時間をマイクロプロセッサのトランザクションピリオドで除したものかまたはプロセッサの実行の列の深さのどちらか小さい方に等しい。Intel Pentium（Ｒ）IIIプロセッサを用いたＳＲＣ−６コンピュータおよびＭＡＰ（Ｒ）素子を例として使用することができる。Pentium（Ｒ）IIIプロセッサの実行の列の深さは４であり、これはメインメモリの待ち時間をトランザクション当たり５０ｎｓで除したものより小さい。したがって、この発明は出力ＦＩＦＯの最初の４つのアドレス４１〜４４をマッピングすることでプロセッサの待ちを軽減する。４つのアドレスを用いることで、プロセッサは列の先頭の１つのアドレスへの単一の４つの要求の代わりに、４つすべてから同時にデータを要求することができる。列の先頭から読出された４つのデータ要素は続いて図３に示される単一のキャッシュラインにロードされ、メモリに書込まれる。
【００２７】
図７を参照すると、一旦これら４つのデータアイテムが出力ＦＩＦＯ４０から読出されると、出力ＦＩＦＯ４０の残っている内容は列の先頭に移動される。残っているデータが列の最初の４つのアドレス４１〜４４を占めるように移動されると、最初の４つのデータアイテムとして同じ態様で読出すことができる。
【００２８】
図８を参照すると、この発明によるアンキャッシュ素子から読出す方法は以下のようである。プロセッサがアンキャッシュ素子への読出のための要求を受取る、ステップ５０。プロセッサがアンキャッシュ素子に関連する４つの連続するキャッシュラインメモリアドレスにあるデータを要求する、ステップ５２。プロセッサがこれらアドレスからのデータをまとめて単一のキャッシュラインにする、ステップ５４。プロセッサが新たに形成されたキャッシュラインをキャッシュおよび共通メモリに書込む、ステップ５６。
【００２９】
当業者には、この発明の範囲および精神を離れることなく、この発明の帯域幅向上のための方法でさまざまな修正および変形が可能であることが明らかであろう。したがって、この発明は、特許請求の範囲およびその均等物の範囲内にあるこの発明の修正および変形を含むことを意図する。
【図面の簡単な説明】
【００３０】
【図１】再構成可能なプロセッサを含むハイブリッドコンピュータシステムの概略図である。
【図２】データバス上での典型的なキャッシュライン転送データブロックの図である。
【図３】データバス上での最大のアンキャッシュ転送データブロックの図である。
【図４】キャッシュラインのデータを２バイトのコマンドの４つのアンキャッシュ転送ブロックへと分配するステップを表わす図である。
【図５】アンキャッシュ素子にデータを書込むための方法のフローチャートである。
【図６】プロセッサからの読出要求の前のＭＡＰ（Ｒ）ユニットの出力ＦＩＦＯを示す図である。
【図７】プロセッサからの４つのアドレスへの読出要求の後のＭＡＰ（Ｒ）ユニットの出力ＦＩＦＯを示す図である。
【図８】アンキャッシュ素子からデータを読出すための方法を示すフローチャートである。
【図１】
2005508549.tif 000003
【図２】
2005508549.tif 000004
【図３】
2005508549.tif 000005
【図４】
2005508549.tif 000006
【図５】
2005508549.tif 000007
【図６】
2005508549.tif 000008
【図７】
2005508549.tif 000009
【図８】
2005508549.tif 000010
【国際公開パンフレット】
2005508549.tif 000011
2005508549.tif 000012
2005508549.tif 000013
2005508549.tif 000014
2005508549.tif 000015
2005508549.tif 000016
2005508549.tif 000017
2005508549.tif 000018
2005508549.tif 000019
2005508549.tif 000020
2005508549.tif 000021
2005508549.tif 000022
2005508549.tif 000023
2005508549.tif 000024
2005508549.tif 000025
2005508549.tif 000026
2005508549.tif 000027
2005508549.tif 000028
2005508549.tif 000029
【国際調査報告】
2005508549.tif 000030