(57)【要約】【課題】  メモリ制約によるデータの非可用性に起因するプロセッサの並列処理能力の制限を解消する。【解決手段】  本発明にかかるプロセッサは、メモリアクセスサイズを定義するプロセッサ命令を実行する命令パイプラインと、メモリアクセスサイズより大きいブロックサイズを有する複数のメモリバンクにキャッシュラインを格納し、この複数のメモリバンクのうちの異なるものに上記メモリアクセスサイズに等しいサイズの連続したビットのグループを格納するマッピングロジックを含むキャッシュメモリとを具備する。【選択図】図２
2005071351.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサであって、
メモリアクセスサイズを定義するプロセッサ命令を実行する命令パイプライン（３０３）と、
前記メモリアクセスサイズより大きいブロックサイズを有する複数のメモリバンクにキャッシュラインを格納し、前記複数のメモリバンクのうちの異なるメモリバンクに前記メモリアクセスサイズに等しいサイズの連続したビットのグループを格納するマッピングロジック（２０２）を含む、キャッシュメモリ（２０１）と
を具備するプロセッサ。
【請求項２】
前記命令パイプラインは、
前記プロセッサ命令を実行する複数の機能ユニット（１１０）
を具備する
請求項１に記載のプロセッサ。
【請求項３】
前記複数の機能ユニットは、第１のプロセッサ命令のパイプライン実行中に前記キャッシュメモリに格納されたデータの第１のメモリアドレスへのメモリアクセスを、第２のプロセッサ命令のパイプライン実行中に前記第１のメモリアドレスの直前の第２のメモリアドレスへのメモリアクセスが発生している間に開始するように動作する
請求項２に記載のプロセッサ。
【請求項４】
前記第１のプロセッサ命令は、前記第２のプロセッサ命令が前記命令パイプラインで処理されている間に、命令フェッチユニット（１０８）によって取得される
請求項３に記載のプロセッサ。
【請求項５】
前記マッピングロジックは、前記キャッシュラインにおける隣接するワードを、前記複数のメモリバンクのうちの異なるメモリバンクに格納する
請求項１に記載のプロセッサ。
【請求項６】
プロセッサを動作させる方法であって、
命令パイプラインにおいて、メモリアクセスサイズを定義する命令を実行すること（６０１）と、
前記プロセッサに含まれるキャッシュメモリのメモリバンクにキャッシュラインを格納すること（６０２）であって、前記メモリバンクが前記メモリアクセスサイズより大きいブロックサイズを有し、前記格納することにより、前記メモリアクセスサイズに等しいサイズの連続したビットのグループが前記メモリバンクのうちの異なるメモリバンクに格納されことと
を含むプロセッサを動作させる方法。
【請求項７】
前記命令パイプラインにおいて前記命令を実行することは、
複数の機能ユニットにおいて命令を並列に実行すること
を含む
請求項６に記載のプロセッサを動作させる方法。
【請求項８】
第１の命令のパイプライン実行中に、前記キャッシュメモリに格納されたデータの第１のメモリアドレスへの第１のメモリアクセスを開始することと、
前記第１のメモリアクセスが保留中である間に、第２の命令のパイプライン実行中に、前記キャッシュメモリに格納されたデータの第２のメモリアドレスへの第２のメモリアクセスを開始することであって、前記第２のメモリアドレスは、前記メモリアクセスサイズに等しいビットの数だけ前記第１のメモリアドレスの直後であることと
をさらに含む請求項６に記載のプロセッサを動作させる方法。
【請求項９】
前記第１のメモリアクセスが保留中である間に前記第２の命令をフェッチすること
をさらに含む請求項８に記載のプロセッサを動作させる方法。
【請求項１０】
前記格納することは、前記キャッシュラインにおける隣接するワードを前記メモリバンクのうちの異なるメモリバンクに格納する
請求項６に記載のプロセッサを動作させる方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサおよびプロセッサの動作方法に関する。
【背景技術】
【０００２】
現在、多種多様のプロセッサタイプが市販されているが、ほとんどのプロセッサは比較的共通するアーキテクチャを利用する。
たとえば、図１は、既知のアーキテクチャを利用して実施されるプロセッサ１００のブロック図を示す。
プロセッサ１００は、バスを介して図示しないより下位レベルのメモリ（たとえば、下位レベルキャッシュまたはメインメモリ）とインタフェースするメモリインタフェースユニット１０１を有する。
プロセッサ１００はさらに、データキャッシュ１０２と命令キャッシュ１０３とを有する。
データキャッシュ１０２と命令キャッシュ１０３とは、通常、オンチップメモリトランザクションのための同期ＲＡＭ（ＳＲＡＭ）等のランダムアクセスメモリ（ＲＡＭ）の比較的効率的な実施態様を採用する。
他の既知のアーキテクチャでは、データキャッシュ１０２と命令キャッシュ１３０とは、プロセッサ１００の単一要素内に統合される。
【０００３】
プロセッサ１００はさらに、トランスレーションルックアサイドバッファ（ＴＬＢ）１０４を有する。
ＴＬＢ１０４は、通常、仮想アドレスと物理アドレスとの間のマッピングを提供する。
ロード待ち行列１０６とストア待ち行列とを有するロード／ストアユニット（ＬＳＵ）１０５は、ロードおよびストアに関連する仮想アドレスを生成する。
ＬＳＵ１０５はさらに、データキャッシュ１０２にアクセスする。
プレフェッチ・ディスパッチユニット（ＰＤＵ）１０８は、命令キャッシュ１０３にアクセスして機能ユニット１１０に提供する命令をフェッチする。
命令バッファ１０９を利用して、命令パイプラインによって要求される前の命令のプレフェッチを容易にすることができる。
機能ユニット１１０は、プロセッサ１００がサポートするさまざまな命令に対し整数演算、浮動小数点演算および／または同様のもの等の処理機能を提供する。
【０００４】
プロセッサ１００のアーキテクチャは、プロセッサ性能を最適化するために２つの技法を利用する。
これらの技法の第１のものは、キャッシングである。
プロセッサ１００が特定のアドレスのデータ要素にアクセスすると、同じ汎用メモリ領域内のアドレスへの後続するアクセスが発生する可能性が高いため、データキャッシュ１０２と命令キャッシュ１０３とは、システム性能を増大させる。
したがって、プロセッサ１００が特定のアドレスのデータを要求すると、複数の「近くの（nearby）」アドレスのデータ（たとえば、キャッシュライン）が、低速なメインメモリからキャッシュメモリに転送される。
そして、プロセッサ１００がキャッシュライン内の別のアドレスのデータを要求すると、低速なメインメモリにアクセスする必要はない。
他のアドレスからのデータをキャッシュメモリから直接取得することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
第２の技法は、機能ユニット１１０を、それらが複数の命令を同時に実行することができるように実施することを含む。
概して、命令は、それぞれの発行条件が満足されると実行を開始する。
満足されない場合、条件が満足されるまで命令はストールする。
かかるインタロック（パイプライン）遅延により、通常、連続する命令のフェッチの割込みがもたらされるか、もしくは等価的に、「ノーオペレーション」命令が必要となる。
複数の命令を同時に実行する能力に対する１つの重要な制限は、命令の実行により処理されるデータの可用性である。
たとえば、命令により２つの浮動小数点数の乗算がもたらされる場合、メモリからそれら２つの浮動小数点数が取得されるまで、命令を実行することができない。
このため、メモリ制約によるデータの非可用性がプロセッサの並列処理能力を制限する可能性がある。
【課題を解決するための手段】
【０００６】
一実施形態では、本発明は、メモリアクセスサイズを定義するプロセッサ命令を実行する命令パイプラインと、メモリアクセスサイズより大きいブロックサイズを有する複数のメモリバンクにキャッシュラインを格納し、この複数のメモリバンクのうちの異なるものに上記メモリアクセスサイズに等しいサイズの連続したビットのグループを格納するマッピングロジックを含むキャッシュメモリとを具備するプロセッサに関する。
【発明を実施するための最良の形態】
【０００７】
本発明のいくつかの代表的な実施形態は、キャッシュメモリにアクセスする場合のバンク競合を最小化するシステムおよび方法に関する。
特に、既知のキャッシング機構が、キャッシュラインをメモリバンクに格納し、プロセッサが、メモリバンクからメモリバンクのブロック幅より小さい複数のビットのデータを検索する場合、逐次命令間でメモリバンク競合が発生する可能性がある。
すなわち、第１のメモリアドレスに対する第１の命令は、所与のメモリバンクに対するメモリアクセスを開始する可能性がある。
そして、第１のメモリアドレスの直後の第２のメモリアドレスに対する第２の命令は、同じメモリバンクに対するメモリアクセスを開始する可能性がある。
第１のメモリアドレスがまだ保留中である場合、第２の命令はストールし第１のメモリアクセスが完了するまで開始することができない。
このため、既知のキャッシング機構により、プロセッサの並列処理能力が低下する。
【０００８】
対照的に、本発明のいくつかの代表的な実施形態により、それぞれの命令の定義されたメモリアクセスサイズに従ってデータがキャッシュメモリのバンク内に格納される方法を適当に構成することによって、競合するメモリアクセスを最小限にすることができる。
かかる代表的な実施形態は、特に、科学用または他の計算集約的プログラムの実行に対して有利である。
特に、メモリからデータに逐次アクセスするプログラムを、これらの実施形態により、既知のプロセッサアーキテクチャに従って実行される場合に可能であるよりも高い並列度で実行することができる。
【０００９】
図２は、本発明の１つの代表的な実施形態によるプロセッサ２００を示す。
プロセッサ２００は、メモリインタフェースユニット１０１を備える。
メモリインタフェースユニット１０１は、データキャッシュ２０１および命令キャッシュ１０３に応じてメインメモリまたは下位レベルキャッシュからのキャッシュラインの格納および検索を容易にする。
特に、キャッシュラインが検索される場合、データキャッシュ２０１は、メモリインタフェースユニット１０１と通信する。
メモリインタフェースユニット１０１は、メインメモリからキャッシュラインに関連するデータを取得するために適当なバス（図示せず）を利用する。
メモリインタフェースユニット１０１は、データをデータキャッシュ２０１に通信する。
マッピングロジック２０２は、メモリインタフェースユニット１０１からデータを受け取り、定義されたマッピング方式に従ってたとえばバンク２０３−１〜２０３−４に亙りデータを格納する。
追加のまたはより少ないメモリバンク２０３を利用してさまざまな代表的な実施形態を実施してもよい、ということが理解されよう。
【００１０】
この代表的な実施形態では、１つまたは複数の命令に関連するメモリバンクブロックのサイズとメモリアクセスサイズのサイズとに従ってマッピング方式を選択する。
メモリバンク２０３のブロックサイズを、１つまたは複数の命令に関連するメモリアクセスサイズより大きいように選択する。
マッピングロジック２０２は、キャッシュラインをビットのグループに分割することにより、メモリバンク２０３に亙りキャッシュラインを格納する。
ここで、グループのサイズは、メモリアクセスサイズに関連する。
特に、ビットのいかなる２つの連続したグループも同じメモリバンク２０３に格納されないように、マッピングロジック２０２によりビットのグループをメモリバンク２０３に格納する。
そうすることにより、メモリアクセスサイズによるキャッシュラインのアドレスへの逐次アクセスが、メモリバンク競合によりストールしない。
【００１１】
図３は、代表的な実施形態による命令のパイプライン実行中におけるキャッシュライン３０１のメモリバンク２０３−１〜２０３−４へのマッピングとキャッシュライン３０１内のデータの検索とを示す。
この代表的な実施形態を論考する目的で、キャッシュラインサイズは８ワード（各々が１６ビットを有する）であり、それぞれのメモリアクセス命令が単一ワード（１６ビット）を検索するものと仮定する。
また、メモリバンク２０３の幅は２ワード（３２ビット）であるものと仮定する。
マッピングロジック２０２が実施するマッピング方式は、キャッシュライン３０１の第１および第５ワードをバンク２０３−１にマッピングすることができ、第２および第６ワードをバンク２０３−２にマッピングすることができ、第３および第７ワードをバンク２０３−３にマッピングすることができ、第４および第８ワードをバンク２０３−４にマッピングすることができる。
このマッピング方式は単に例示であることが理解されよう。
他の実施形態では、それぞれのメモリバンク２０３における隣接するワードまたはビットの隣接するグループを格納するために他のマッピング方式を採用する。
【００１２】
マッピング方式と逐次コードの実行との間の関係を説明するために、ベクトルの値を合計する仮説アプリケーションについて論考する。
仮説アプリケーションでは、ベクトルを、連続したメモリロケーションに格納されたデータ構造によって表す。
各ベクトル要素の大きさを、単一ワード（１６ビット）によって表す。
アプリケーションは、データ構造を含む１つまたはいくつかのキャッシュラインがデータキャッシュ２０１にロードされるようにするさまざまな動作を実行する。
仮説アプリケーションは、反復的に、ベクトルデータ構造の開始アドレスからのメモリアドレスオフセットからそれぞれのワードを検索し、検索したワードをレジスタに追加する。
【００１３】
反復ループにおいて、同じ命令が、ＰＤＵ１０８（図２において先に示した）により繰り返し取得され、機能ユニット１１０（図２において先に示した）のうちの１つまたはいくつかによって実行されるために命令パイプライン３０３に入る。
反復ループにおける最初のメモリアクセス命令３０４−１が、最初にパイプライン３０３に入る。
命令３０４−１は、キャッシュライン３０１における最初のアドレス（すなわち、第１ワード）であると想定される第１のベクトル要素に関連するワードにアクセスする。
命令パイプライン３０３により、メモリバンク２０３−１からの第１のワードの検索が開始する。
メモリバンク制限により、メモリアクセスには、関連するワードの検索を完了するために複数回のサイクルが必要となる可能性がある。
【００１４】
第２のベクトル要素に関連するワードにアクセスする命令３０４−２は、命令パイプライン３０３の命令３０４−１の略直後に入る。
仮説アプリケーションのコードの逐次的性質により、命令３０４−２によって、命令３０４−１によってアドレス指定されるワードの直後のメモリアドレス（キャッシュライン３０１におけるワード２）へのメモリアクセスがもたらされる。
しかしながら、このメモリアドレスは、メモリバンク２０３において先のメモリアドレスの後に順次に位置していない。
すなわち、ワード１の後には第５ワードが順次に格納されている。
第２ワードに関連するメモリアドレスは、別のメモリバンク２０３（すなわち、メモリバンク２０３−２）にマッピングされている。
このように、命令パイプライン３０３によって、メモリバンク２０３−１がまだ第１ワードの検索を実行している間にメモリバンク２０３−２からの第２のワードの検索が開始する。
【００１５】
この反復プロセスは、命令３０４−３および３０４−４によりメモリバンク２０３−３および２０３−４からのワード３および４の検索を開始することによって継続する。
反復プロセスが命令３０４−５に達すると、メモリバンク２０３−１に対する別のメモリアクセスが発生する。
しかしながら、命令３０４−５が命令パイプライン３０３に入る時まで、メモリバンク２０３−１に関連する先のメモリアクセスが完了するのを可能にするために十分な数の命令が実行されている。
このため、メモリバンク２０３−１〜２０３−４に関連するレイテンシにより、マッピングロジック２０２が適当に実施される場合に命令パイプラインがストールしない。
【００１６】
図４は、１つの代表的な実施形態によるキャッシュメモリのメモリバンクにデータを格納するフローチャートを示す。
ステップ４０１において、メインメモリまたは下位レベルキャッシュであってもよい下位レベルメモリからキャッシュラインを検索する。
ステップ４０２において、検索されたキャッシュラインを、１つまたは複数のプロセッサ命令のメモリアクセスサイズに関連するセグメントに分割する。
ステップ４０３において、メモリバンクが複数のセグメントを含みキャッシュラインの連続したセグメントが異なるメモリバンクに格納されるように、セグメントをキャッシュメモリのメモリバンクに格納する。
【００１７】
図５は、いくつかの代表的な実施形態によるキャッシュメモリのメモリバンクからデータを検索するフローチャートを示す。
ステップ５０１では、命令パイプラインにおいて、第１のメモリロケーションにアクセスする命令を受け取る。
ステップ５０２では、第１のメモリバンクからの第１のメモリロケーションからのデータの検索を開始する。
ステップ５０３では、命令パイプラインにおいて、第１のメモリロケーションの直後の第２のメモリロケーションにアクセスする命令を受け取る。
ステップ５０４では、第１の検索トランザクションがまだ保留中である間に第２のメモリロケーションからのデータの検索を開始する。
【００１８】
図６は、プロセッサの動作の方法のフローチャートを示す。
本方法は、ステップ６０１において、命令パイプラインにおいてメモリアクセスサイズを定義する命令を実行することを含む。
本方法は、さらに、ステップ６０２において、プロセッサに含まれるキャッシュメモリのメモリバンクにキャッシュラインを格納することを含む。
ここで、メモリバンクは、メモリアクセスサイズより大きいブロックサイズを有し、この格納により、メモリアクセスサイズに等しいサイズの連続したビットのグループが、メモリバンクのうちの異なるものに格納される。
【００１９】
本発明のいくつかの代表的な実施形態は、複数の利点を提供することができる。
特に、競合するメモリバンクアクセスに関連するパイプライン遅延を回避することにより、キャッシュメモリアクセスの性能を向上させることができる。
そうすることにより、これらの代表的な実施形態によって、データの逐次処理が効率的に発生することが可能になる。
このため、科学的なまたは他の計算集約的なタスクを実行するアプリケーションを、既知のプロセッサ設計を利用して可能である並列度より高い並列度で実行することができる。
【図面の簡単な説明】
【００２０】
【図１】従来技術によるプロセッサのブロック図である。
【図２】代表的な実施形態によるプロセッサのブロック図である。
【図３】代表的な実施形態による命令のパイプライン実行中のメモリバンクへのキャッシュラインのマッピングとキャッシュライン内のデータの検索とを示す図である。
【図４】代表的な実施形態によるキャッシュメモリのメモリバンクにデータを格納するフローチャートを示す図である。
【図５】代表的な実施形態によるキャッシュメモリのメモリバンクからデータを検索するフローチャートを示す図である。
【図６】プロセッサの動作の方法のフローチャートを示す図である。
【符号の説明】
【００２１】
１０１・・・メモリインタフェースユニット、
１０２・・・データキャッシュ、
１０３・・・命令キャッシュ、
１０４・・・トランスレーションルックアサイドバッファ（ＴＬＢ）、
１０５・・・ロード／ストアユニット、
１０６・・・待ち行列、
１０９・・・命令バッファ、
１１０・・・機能ユニット、
２０１・・・データキャッシュ、
２０３−１・・・メモリバンク、
２０２・・・マッピングロジック、
【図１】
2005071351.tif 000003
【図２】
2005071351.tif 000004
【図３】
2005071351.tif 000005
【図４】
2005071351.tif 000006
【図５】
2005071351.tif 000007
【図６】
2005071351.tif 000008