(57)【要約】【課題】  ＳＩＭＤプロセスをサポートするプロセッサのマルチスカラ拡張等のマルチスレッドプロッセッシング環境にアドレスマップを最適化するためのシステム及び方法を提供する【解決手段】  内部スレッドメモリ領域のコンフリクトなしに、シングル命令マルチデータスレッド（シムド：ＳＩＭＤ）とマルチスカラスレッドをマルチスレッドプロセスするために用いられるように、かつ、ＳＩＭＤモードからマルチスカラモードへの遷移を可能するために、使用される共有メモリ１２０が開示される。この共有メモリ１２０のメモリ領域は、ジグザク配置されるようアドレスマッピングされる。【選択図】  図１
2005310167.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサの複数かつｎ個の機能ユニットによって、複数の命令を実行するための方法であって、前記複数かつｎ個の機能ユニットは、シングル命令マルチデータ（ＳＩＭＤ）方法における命令を実行するために、及び／又はマルチスカラ方法における複数の命令を実行するために動作可能であり、
共有データを１又はそれ以上のレジスタにロードし、各レジスタは、前記複数の機能ユニットの特定的なユニットによって実行されるためのデータを保持するものであり、
複数かつｎ個の機能ユニット全部のレジスタに保持されるデータに対する前記複数かつｎ個の機能ユニットによる命令を実行するか、ｘ個（０＜ｘ＜ｎ）の機能ユニットによる１つ以上の命令を前記ｘ個の機能ユニットに属するとともに前記機能ユニットの数であるｘに対応した数であるｘ個のレジスタにロードされたデータに対して実行するか、の少なくとも一方のオペレーションを行ない、
その後、前記共有メモリの対応する領域における前記共有メモリのロケーションに、前記レジスタに対応する各々に保持された第２データを記録し、前記ロケーションは、更に、相互に垂直にオフセットされているものである、
方法。
【請求項２】
前記ロケーションは、前記共有メモリの少なくとも一つの行だけ垂直にオフセットされている、
請求項１記載の方法。
【請求項３】
更に、前記共有メモリの前記複数の対応する領域から前記プロセッサの前記機能ユニットの前記レジスタの全部に同時にロードし、前記メモリの前記対応する領域は、前記垂直にオフセットされたロケーションに同時にアクセスすることを可能にする、
請求項１記載の方法。
【請求項４】
更に、データをシーケンシャルに前記共有メモリの個々のロケーションから前記プロセッサの前記機能ユニットの前記レジスタの対応する個々のロケーションにロードし、前記メモリの前記対応する領域は、前記メモリの前記対応する前記ロケーションに対するシーケンシャルアクセスを可能にする、
請求項１記載の方法。
【請求項５】
プロセッサの複数の機能ユニットによって実行するためのデータと命令を保持するための複数のメモリ領域を割り当てるための方法であって、
前記プロセッサの複数かつｎ個の機能ユニットの対応する１つにメモリの複数かつｎ個の領域の対応する１つを割り当て、各機能ユニットは、２Ｘビットサイズのレジスタを有し、
前記複数のメモリ領域の第１メモリ領域内ロケーションにデータを記録し、このロケーションは、前記複数のメモリ領域の第２のメモリ領域内のデータが記録されるロケーションから垂直にオフセットされているものである、
方法。
【請求項６】
更に、前記メモリの前記ｎ個の領域の前記垂直にオフセットされたロケーションのうちから、同時に前記プロセッサの前記ｎ機能ユニットの全部のレジスタへと前記記録されたデータをロードすることを含む、
請求項５記載の方法。
【請求項７】
前記垂直にオフセットされたロケーションは、前記共有メモリの少なくとも１つの行だけオフセットされている、
請求項５記載の方法。
【請求項８】
前記メモリ領域は、前記共有メモリの対応するバンクである、
請求項５記載の方法。
【請求項９】
前記複垂直にオフセットされたロケーションは、ベースアドレスに関連するオフセットによって定められ、前記ベースアドレスは、前記機能ユニットの第１機能ユニットに関する前記メモリロケーションに対応する、
請求項８記載の方法。
【請求項１０】
マルチデータセットにシングル命令セットのマルチスレッドを実行するためのシステムであって、
システムバスを含み、
前記システムバスに少なくとも１つの第１のプロセッシングユニットを含み、各プロセッシングユニットは、プロセッシングユニットバス、前記プロセッシングユニットバス上のダイレクトメモリアクセスコントローラ、前記プロセッシングユニットバス上のプロセッサ、前記プロセッシングユニットバス上の複数の第２のプロセッシングユニットを含み、各第２のプロセッシングユニットは、レジスタ、命令プロセッサ、及び複数の機能ユニットを含み、各前記機能ユニットは、ローカルストア、浮動小数点ユニット、及び整数ユニットを含み、
前記システムバス上のローカル出入力チャネルを含み、
前記システムバスに接続されるネットワークインターフェースを含み、
前記システムバスに接続される共有メモリを含み、前記共有メモリは、前記第１のプロセッシングユニットの前記第２のプロセッシングユニットの前記機能ユニットによって複数のメモリ領域に区分され、前記機能ユニットの各々のデータは、前記メモリ領域の異なるロケーションに記録され、前記ロケーションは、更に、前記機能ユニットに基づいて相互に垂直にオフセットされており、前記メモリ領域は、前記第１のプロセッシングユニットの前記第２のプロセッシングユニットの前記機能ユニットと、前記プロセッシングユニットバス及び前記システムバスを通じ、前記ローカルストア及び前記ダイレクトメモリアクセスコントローラを介して通信を行う、
システム。
【請求項１１】
前記ロケーションは、前記共有メモリの少なくとも１つの行だけ垂直にオフセットされている、
請求項１０記載のシステム。
【請求項１２】
前記第２のプロセッシングユニットは、更に、前記共有メモリの対応する領域からデータを前記プロセッサの全てのレジスタに同時にデータをロードし、前記メモリの前記対応する領域は、前記垂直にオフセットされたロケーションに同時にアクセスすることを可能にする、
請求項１０記載のシステム。
【請求項１３】
前記第２のプロセッシングユニットは、更に、データをシーケンシャルに前記共有メモリの個々のロケーションから前記プロセッサの前記機能ユニットの前記レジスタの対応する個々のロケーションにロードし、前記メモリの前記対応する領域は、前記メモリの前記対応する前記ロケーションに対するシーケンシャルアクセスを可能にする、
請求項１０記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、プロセッサの編成とオペレーションに関し、より具体的には、複数の命令スレッドを独立して実行可能である、複数の演算ユニットを有するプロセッサにおけるメモリの割り当てに関する。
【背景技術】
【０００２】
グラフィックレンダリング、モデリング、又は数値解析に関する計算において、例えば、複数の命令スレッドを同時にプロセスすることは、多くの場合は有利なものとなる。例えば、物理的な現象をモデリングすること、又はグラフィカルワールドを構築することに関連する、ある種の状況では、複数の異なるデータセットに関して同じ命令が実行されるようにスレッドを処理することが有利であろう。このような処理は、データの大きな塊、又は独立したデータを複数の実行ユニットに分散して、ＳＩＭＤ（Single Instruction Multiple Data）演算を実行することで、（例えば、数値解析又はモデリングの）処理を行う、という形態をとりえる。
他の形態では、特にスレッドごとに複数の異なる命令を含む場合は、プロセッサの複数の異なる演算ユニットによって、それぞれ独立して複数の異なるプロセススレッドを処理するほうが有利な場合もある。このような実行方法はマルチスカラとして知られる。マルチスカラにおいて、各演算ユニットによって処理されるデータは、他の全ての演算ユニットによるデータ操作の手法とは独立して操作がなされる。
【０００３】
本発明の譲受人に譲渡され、本件と同様に係属中の２００１年３月２２日に出願の米国出願第０９／８１５，５５４号にはプロセス環境が記載されており、これは、本発明の背景技術ではあるが、従来技術として認める訳ではない。この出願は参照として本文に包含される。この出願に記載されるように、各プロセッサユニット（ＰＵ：Prpcessor Unit）は、複数の命令及びこれらの命令の実行に使用されるデータの格納のために共有メモリの個々に割り当てられた部分を利用する、複数の付加プロセッサユニット（ＡＰＵ:Attached Processor Units）を含む。各ＡＰＵは、それぞれローカルメモリと複数の命令を実行するための複数の機能ユニットとを含み、各機能ユニットは浮動小数点及び整数ユニットを含む。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、現在の並列処理システムでは、マルチ命令スレッドを実行するために複数のデータをロード及び記録することが求められる。特に、通常は、複数のデータ数値が同じ共有アドレススペース内の複数のロケーションに並列に記録される。これにより、複数のデータ数値が同じメモリパイプラインから要求されるときコンフリクト及びディレイが発生し得ることとなり、また、共有メモリから全ての数値が受信済みになるまで、複数スレッドの実行が全体として遅れることを要求することにもなり得る。
【課題を解決するための手段】
【０００５】
本発明は、ＳＩＭＤプロセスをサポートするプロセッサのマルチスカラ拡張のようなマルチスレッドプロッセッシング環境にアドレスマップを最適化するためのシステム及び方法を提供することによって、これらの、又、他の問題を解決する。
【０００６】
本発明の一形態において、マルチプロセッサスレッドにおける複数の命令の並列演算において演算する複数のデータ数値に関する複数のアドレスマップを最適化するためのシステムが提供される。好適に、そのようなシステムは共有メモリの使用に起因するメモリコンフリクトとスレッドの遅れを減少する。
【０００７】
本発明のもう１つの態様において、複数のアドレスマップをジグザク配列あるいはスタガ配列に割り当てるための方法が与えられる。これは、シナジスティックプロセッシングユニット（Synergistic Processing Unit：ＳＰＵ、相乗的プロセッシングユニットとも称される）及び／又はプロセッシングユニットの複数の機能ユニットと複数のローカルストア間にプロセッサとメモリロードを均一に割り当てるために、複数の命令の並列演算中に用いられる複数のデータ数値をマルチプロセッサスレッドに配布する。
【０００８】
本発明のもう１つの形態において、複数のアドレスマップをジグザグ配列に割り当てるための方法が与えられる。これはメモリにおけるデータの実質的な再配置を要求することなしに、ＳＩＭＤプロセッシングモードからマルチスカラプロセスモードに容易に遷移することを可能にする。
【０００９】
本発明のもう１つの形態によれば、プロセッサの複数かつｎ個の機能ユニットによって命令を実行するためにある方法が与えられ、このｎ個の機能ユニットは、ＳＩＭＤ方法での複数の命令を実行可能であり、マルチスカラ方法での複数の命令を実行可能である。
【００１０】
本発明の好適な形態によれば、そのような方法は、共有メモリから１又はそれ以上のレジスタにデータをロードすることを含み、各レジスタは、複数の機能ユニットの特定的な機能ユニットによって演算されるためのデータを保持する。その後、あるオペレーションが以下の二つのうちから実行される。即ち、複数かつｎ個の機能ユニット全部のレジスタに保持されるデータに対する前記複数かつｎ個の機能ユニットによる命令を実行するか、ｘ個（０＜ｘ＜ｎ）の機能ユニットによる１つ以上の命令を前記ｘ個の機能ユニットに属するとともに前記機能ユニットの数であるｘに対応した数であるｘ個のレジスタにロードされたデータに対して実行するか、のうちから実行される。
その後、前記共有メモリの対応する領域における前記共有メモリのロケーションに、前記レジスタに対応する各々に保持された第２データを記録し、前記ロケーションは、更に、相互に垂直にオフセットされているものとなる。
【発明を実施するための最良の形態】
【００１１】
説明目的のため、現在、好適とされている形式が図面に示される。しかし、本発明は、示されている精密な配置及び手段に制限されないことが理解されよう。
図１に本発明の１又はそれ以上の実施形態に従ったマルチプロセスシステム１００を示す。なお、図面において、同様の要素には同様の符号を付した。マルチプロセスシステム１００は、システムバス１３０を介してＤＲＡＭのような共有メモリ１２０に接続される複数のプロセッシングユニット１１０（いくつ用いられてもよい）を含む。共有メモリ１２０は、必ずしもＤＲＡＭである必要がないことに注目されたい。実際上、共有メモリは、知られ得る全ての、又は以下記載の開発されたテクノロジーを用いて形成され得る。各プロセッシングユニット１１０は、１又はそれ以上のシナジスティックプロセッシングユニット（ＳＰＵ）１４０と有利に関連している。これらのＳＰＵ１４０は、各々が少なくとも１つのローカルストア（ＬＳ：Local Store）１５０と関連付けられ、ダイレクトメモリアクセスチャネル（ＤＭＡＣ:Direct Memory Access Channel）１６０を通じて共有メモリ１２０の定義される領域に対するアクセスを有する。各ＰＵ１１０は、ＰＵバス１７０を介してサブコンポーネントと通信を行う。マルチプロセッシングシステム１００は、ローカルＩ／Ｏ  ＡＳＩＣチャネル１８０を介して他の複数のマルチプロセッシングシステム又はコンピュータコンポーネントとローカルに通信を行うが、他の通信標準及び通信チャネルが用いられてもよい。ネットワーク通信は、１又はそれ以上のネットワークインターフェースカード（ＮＩＣ：Network Interface Card）１９０によって実行される。これには、例えば、イーサネットＴＭ（EthernetTM）、インフィニバンドInfinibandTM  [インフィニバンドトレードアソシエーション(Infiniband Trade Association)社の商標]、ワイヤレス、又は他の現在存在する又は後に開発されるネットワークテクノロジーを含む。複数のＮＩＣ１９０を、マルチプロセッシングシステム１００に与えてもよく、あるいは、１又はそれ以上の個々のプロセッシングユニット１１０又はＳＰＵｓ１４０に関連づけてもよい。
【００１２】
入力される命令は、特定的なＰＵ１１０によって処理され、これらの命令は、複数のＬＳ１５０と共有メモリ１２０を用いて実行されるよう、１又はそれ以上のＳＰＵｓ１４０に配布される。ＰＵ１１０の各々と複数のＳＰＵ１４０によって形成される複数のユニットは、“広帯域エンジン（ＢＥ：broadband engine）”１１５とも称される。
【００１３】
図２は、本発明の実施形態に従ったＳＰＵ編成を表すシステム概略図である。ＳＰＵ１４０は、命令処理素子（ＰＲＯＣ）２００とローカルストレージレジスタ（ＲＥＧ）２１０を含む。ＰＲＯＣ２００とＲＥＧ２１０は、マルチスレッド、即ち、命令のマルチシーケンスをプロセスする。従って、４つのスレッドがプロセスされているとき、命令処理素子２００は、命令を機能ユニットの各々である２６５ａ、２６５ｂ、２６５ｃ、及び２６５ｄによって実行されるオペレーションに変換する。レジスタ２１０は、そのような時、有効なサブレジスタ２１５ａ、２１５ｂ、２１５ｃ及び２１５ｄを形成する。ＳＩＭＤ演算が実行されるとき、機能ユニット２６５ａ〜ｄの各々は、異なるデータに対してではあるが、同じ命令を、レジスタ２１５ａ、２１５ｂ、２１５ｃ、及び２１５ｄに保持されるデータに対して実行する。
【００１４】
複数の命令を実行するために、ＳＰＵ１４０は、更に、浮動少数点オペレーションを実行するための浮動少数点ユニット（ＦＰＵ：Floating Poingt units）２２０の一セット、整数オペレーションを実行するための複数の整数ユニット（ＩＵ：Integer units）２３０の一セットを含む。複数のローカルストア（ＬＳ：Local Stor）の一セットが、ＳＰＵ１４０によって共有メモリ１２０（図１）にアクセスするために与えられる。４つの機能ユニット２６５ａ、２６５ｂ、２６５ｃ、及び２６５ｄを有するＳＰＵ１４０がマルチスレッドを実行する際、４スレッドまで処理可能であるようにＳＰＵ１４０のＦＰＵ２２０とＩＵ２３０の各々が、総合して“機能ユニット”２６０を形成する。この場合、機能ユニット２６５ａ、２６５ｂ、２６５ｃ、及び２６５ｄの各々は、対応するＦＰＵ２２５ａ、２２５ｂ、２２５ｃ、及び２２５ｄと、又、ＩＵ２３５ａ、２３５ｂ、２３５ｃ、及び２３５ｄを含み、ローカルストアＬＳ２４５ａ、２４５ｂ、２４５ｃ、及び２４５ｄにアクセスする。各機能ユニット２６５ａ〜ｄは、機能ユニットＦＵ２６５ａ〜ｄをプロセッシング素子２００に電気的に結合するＦＵバス２５０を用いる。通常、ＳＰＵ１４０は、ＳＰＵ１４０における機能ユニット２６０の数にある個別のスレッド数と同数までマルチスレッドし得る。
【００１５】
図３は、ＳＩＭＤ演算環境におけるスロット毎のマルチバンクメモリ割り当てを表す機能概略図である。この実施形態において、機能ＳＰＵを示す表示３００は、機能ユニット３０５ａ、３０５ｂ、３０５ｃ、及び３０５ｄを含み、各々が、対応する命令３１５ａ、３１５ｂ、３１５ｃ、３１５ｄ、３１５ｅ、及び３１５ｆと同様の実行シーケンス３１０を実行する。命令３１５ａ〜３１５ｄの交点と図表における機能ユニット３０５ａ〜３０５ｄは、命令３１５ａ〜３１５ｆによってオペレートされるレジスタを表す。
【００１６】
同様に、メモリ３２５は、４つのローカルストア３２５ａ、３２５ｂ、３２５ｃ、及び３２５ｄとして編成され、１つのローカルストアが各機能ユニット、例えば機能ユニット３０５ａによって用いられる。この際、この実施形態において、メモリ３３０における４つのローカルストア３２５ａ〜３２５ｄにわたるいずれの行も、それらに記録された４つの３２ビット値を処理するための１２８ビット境界３３５を形成し得るようにされている。それ故、命令３１５ｂでＸ値がロードされる。なお、スレッド数をこの例とは異なるものとしてもよく、また、境界３３５及び値のサイズも、異なる用いてもよい。
【００１７】
メモリ３２５において、１２８ビットメモリ行３４０は、４つのデータ値、即ち、行３４０におけるＬＳa（３２５ａ）に記録されるＸa（３４０ａ）値、行３４０におけるＬＳｂ（３２５ｂ）に記録されるＸｂ（３４０ｂ）値、行３４０におけるＬＳｃ（３２５ｃ）に記録されるＸｃ（３４０ｃ）値、行３４０におけるＬＳｄ（３２５ｃ）に記録されるＸｄ（３４０ｄ）値を含む。各３２ビット値は、プロセッサオペレーションのためにそれぞれ対応するＬＳ及び行ロケーション３４０ａ、３４０ｂ、３４０ｃ及び３４０ｄからプロセスレジスタ３２０ａ、３２０ｂ、３２０ｃ、３２０ｄにロードされる(３４５ａ、３４５ｂ、３４５ｃ、３４５ｄ)。付加のプロセッサ命令３１５ｃ及び３１５ｄの後、命令３１５ｅが、共有メモリの対応する機能ユニット３０５ａ〜３０５ｄのレジスタ３５０ａ、３５０ｂ、３５０ｃ、及び３５０ｄ各々のＸ値をメモリ行３６０に記録しようと試みる。しかし、この場合、ＬＳａ３２５ａが、既にＺ値をロケーション３６０aに記録済みとなっている。
【００１８】
従って、ＳＰＵがレジスタ値３５０ａ、３５０ｂ、３５０ｃ、及び３５０ｄを取得して(３５５ａ、３５５ｂ、３５５ｃ、３５５ｄ)共有メモリ行３６０に記録しようと試みても、４つの３２ビット値Ｙａ３５０ａ、Ｙｂ３５０ｂ、Ｙｃ３５０ｃ及びＹｄ３５０ｄの全１２８ビットの行を記録し得ない。Ｚ値３６０ａが既に存在するので、行３６０の全１２８ビットは完全には空いていないからである。Ｙｄ値をメモリ行３７０の別のロケーション３７５に記録することもできるが、この場合、シングル並列ロード又はストアオペレーションを実行するためには、マルチデータ値の１２８ビット境界を破壊し、メモリ３６０，３７０の複数の行をプロセスすることが要求される。１２８ビット境界にわたるこのような並列ロード又はストアオペレーションは、並列アクセスというよりはむしろ、シーケンシャルアクセスを要求する。これは、行３４０のような隣接する行に一度にロード及び記録するのに比較すると、かなり非効率的である。従って、これは、回避されなければならない。  
【００１９】
図４は、マルチスレッドされたプロセッシング環境におけるＳＩＭＤ演算におけるスレッドデータ設定割り当ての一実施形態を表す機能概略図である。前述したように機能ＳＰＵ表示４００は、４つの機能ユニット４０５ａ、４０５ｂ、４０５ｃ、及び４０５ｄを含み、各々は例示的なプロセッサ命令４１５ａ、４１５ｂ、４１５ｃ、４１５ｄ、４１５e、及び４１５ｆと同様の実行シーケンス４１０を実行する。命令４１５ａ〜ｄと図表における機能ユニット４０５ａ〜ｄの交点は、機能ユニット４０５ａ〜ｄによってオペレートされるレジスタを表す。前述したように、実行命令４１５ｂで、Ｘ値セットがレジスタ４２０a、４２０ｂ、４２０ｃ、及び４２０ｄにロードされる。実行命令４１５ａでＹ値セットはレジスタ４３０a、４３０ｂ、４３０ｃ、４３０ｄから共有メモリ４４５に記録される。
【００２０】
機能共有メモリ表示４４５が、メモリアドレス４４０に関して示される。前述したＳＩＭＤメモリ領域において、メモリがローカルストアＬＳａ  ４４５ａ、ＬＳｂ  ４４５ｂ、ＬＳｃ  ４４５ｃ、及びＬＳｄ  ４４５ｄに対して割り当てられ、アクセスされる一方、この場合、機能ユニット４０５ａ、４０５ｂ、４０５ｃ、及び４０５ｄは直接、対応するスレッドデータセット４６０a、４６０ｂ、４６０ｃ及び４６０ｄのストレージにダイレクトメモリ領域を割り当てる。各スレッドデータのセット４６０a〜ｄは、ブロック境界サイズで配列され、この場合、１２８ビット境界４５０が４つのローカルストア４４５ａ〜ｄによって与えられる。ブロック境界サイズは、２ｎ形式の通常のブロック境界のいずれでもよいが、通常は、少なくとも１６ビットサイズ又はそれ以上である。
【００２１】
それ故、Ｘ値セットをレジスタ４２０ａ〜ｄにロードする命令４１５ｂの実行で、Ｘａ値４７０ａはスレッドａデータセット４６０ａからレジスタ４２０ａにロードされ(４２５ａ)、Ｘｂ値４７０ｂはスレッドｂデータセット４６０ｂからレジスタ４２０ｂにロードされ(４２５ｂ)、Ｘｃ値４７０ｃはスレッドｃデータセット４６０ｃからレジスタ４２０ｃにロードされ(４２５ｃ)、及びＸｄ値４７０ｄは、スレッドｄデータセット４６０ｄからレジスタ４２０ｄにロードされる(４２５ｄ)。同様に、Ｙ値セットをレジスタ４３０ａ〜４３０ｄから共有メモリ４４５に記録する命令４１５ｅの実行で、レジスタ４３０ａのコンテンツは、スレッドａデータセット４６０ａにＹａ値４８０ａとして記録され(４３５ｂ)、レジスタ４３０ｄのコンテンツは、スレッドｄデータセット４６０ｄにＹｄ値４８０ｄとして記録される(４３５ｄ)。
【００２２】
このメモリアクセス領域において、数値ロケーションは、特定的に関連されるローカルストアに相互に関連せず、むしろマルチスカラプロセッシング環境における特定的な機能ユニットに割り当てられる特定的なスレッドデータセットに相互に関連している。
【００２３】
図５は、本発明の実施形態に従った等ブロックマルチバンクメモリ割り当て方法の機能概略図を表す。この場合も前述したように、機能ＳＰＵ表示５００は、４つの機能ユニット５０５ａ、５０５ｂ、５０５ｃ、及び５０５ｄを含み、各々は、例示的な命令５１５ａ、５１５ｂ、５１５ｃ、５１５ｄ、５１５ｅ，及び５１５ｆの同様の実行シーケンス５１０を実行する。図表における命令５１５ａ〜５１５ｆと機能ユニット５０５ａ〜５０５ｄの交点は、機能ユニット５０５ａ〜５０５ｄによってオペレートされるレジスタを表す。前述したように実行命令５１５ｂにて、Ｘ値セットがレジスタ５２０ａ、５２０ｂ、５２０ｃ、及び５２０ｄにロードされる。Ｙ値セットは、実行命令５１５ｅでレジスタ５３０ａ、５３０ｂ、５３０ｃ、及び５３０ｄから共有メモリ５４５に記録される。
【００２４】
ローカルストア（図示されない）又はスレッドデータセット（図示されない）を介したストレージではなく、共有メモリは外部から所定のサイズの複数のメモリバンク５５０ａ、５５０ｂ、５５０ｃ、及び５５０ｄに区分される。バンクのサイズは、メモリアドレス５４０の既知の数を表し、一般的に２ｎ形式の通常のサイズ（一般的に少なくとも１６ビット又はそれ以上）のセグメントに割り当てられ、一実施形態では、共有メモリの１２８ビット境界５４５に適合するよう１２８ビットのセグメントに割り当てられる。
【００２５】
それ故、Ｘ値セットをレジスタ５２０ａ〜５２０ｄにロードする命令５１５ｂの実行で、Ｘａ値５６０ａは、メモリバンクａ５５０ａからレジスタ５２０ａにロードされ(５２５ａ)、Ｘｂ値５６０ｂは、メモリバンクｂ５５０ｂからレジスタ５２０ｂにロードされ(５２５ｂ)、Ｘｃ値５６０ｃは、メモリバンクｃ５５０ｃからレジスタ５２０ｃにロードされ(５２５ｃ)、Ｘｄ値５６０ｄは、メモリバンクｄ５５０ｄからレジスタ５２０ｄにロードされる(５２５ｄ)。同様に、レジスタ５３０ａは、Ｙ値セットをレジスタ５３０ａ〜ｄから共有メモリに記録する命令５１５ｅの命令で、Ｙａ値としてメモリバンクａ５５０ａに記録され（５３５ａ）、レジスタ５３０ｂは、Ｙｂ値５７０ｂとしてメモリバンクｂ５５０ｂに記録され（５３５ｂ）、レジスタ５３０ｃは、Ｙｃ値５７０ｃとしてメモリバンクｃ５５０ｃに記録され（５３５ｃ）、及びレジスタ５３０ｄは、Ｙｄ値５７０ｄとしてメモリバンクｄ５５０ｄに記録される（５３５ｄ）。
【００２６】
各スレッドに関して所定のメモリバンクを与えることによって、図３に示す連続メモリアクセスのコンフリクトだけでなくメモリバンク間のコンフリクトも回避される。しかし、メモリ割り当ては、バンクのサイズに極めて制限され、例えばフレキシブル性が低くなる。加えて、図５に描かれている方法は、図３と４に示される他のメモリ管理方法と互換性があるように再編成されることが要求される。
【００２７】
図６は、本発明に従ってスタガ配列されるメモリ割り当ての実施形態を表す機能概略図である。そのようなメモリ割り当ては、並列に実行可能な命令シーケンスのマルチスカラの実行と同様に効率的なＳＩＭＤを得やすくする。マルチスカラオペレーション、及びそのようなオペレーションをコントロールするためのシステムと方法は、２００４年４月２２日に出願で、本発明の譲受人に譲渡された、同時係属中の米国特許仮出願番号６０／５６４６７３号（発明の名称：“Multi-Scalar Extension for SIMD Instruction Set Processors”）に記載される。この出願は、本文に参照として包含される。
【００２８】
図３、４、及び図５に関連して説明された従来技術の方法の各々は、ＳＩＭＤ演算とマルチスカラ実行を切り替えるとき、ポテンシャルバンクコンフリクトに影響されるか、データの再配列を要求されるかの何れかである。しかし、スタガ配列されるメモリ割り当ては、図６に示されるように、データを再配列することなくＳＩＭＤ演算モードとマルチスカラ実行モード間の切り替えを可能にし、又、スレッド実行を遅らせ得るスレッド／ロジカルストアのコンフリクトを回避する。
【００２９】
前述したように、機能ＳＰＵ表示６００は、４つの機能ユニット６０５ａ、６０５ｂ、６０５ｃ、及び６０５ｄを含み、各々は命令６１５ａ、６１５ｂ、６１５ｃ、６１５ｄ、６１５ｅ、及び６１５ｆである同様の実行シーケンス６１０を実行するために命令スレッドＰＲＯＣａ〜ｄを実行する。図表における６命令６１５ａ〜ｆと４機能ユニット６０５ａ〜ｄの交点は、６命令６１５ａ〜ｆによってオペレートされるレジスタを表す。前述したように、Ｘａ値、Ｘｂ値、Ｘｃ値、及びＸｄ値のセットは、実行命令６１５ｂでレジスタ６２０ａ、６２０ｂ、６２０ｃ、及び６２０ｄにロードされる。Ｙａ値、Ｙｂ値、Ｙｃ値、及びＹｄ値のセットは、実行命令６１５ｅでレジスタ６３０ａ、６３０ｂ、６３０ｃ、及び６３０ｄからメモリ６４０の対応するロケーションに記録される。  
【００３０】
メモリ６４０は、各々が３２ビット幅を有する４領域又はバンク６４０ａ、６４０ｂ、６４０ｃ、及び６４０ｄを含み、それ故、１２８ビット境界６５０へのシングル命令メモリがアクセスすることを可能する。メモリ６４０の機能図は、行及び配列図におけるメモリアドレス６４５を含む。機能ユニット６０５ａ〜ｄ、及び対応するスレッドＰＲＯＣａ〜ｄに関するメモリロケーションは、ベースアドレス及びオフセットに基づいて生成される。それ故、第１機能ユニット６０５ａに関する第１メモリロケーション６６０は、利用可能なメモリ行におけるメモリ領域６４０ａにおいて開始するゼロオフセット値で生成される。第２機能ユニット６０５ｂに関して、メモリの利用可能な異なる行において、第２メモリロケーションが、メモリの２行分プラス一つの３２ビットメモリブロックの垂直オフセット６６５として生成される。
【００３１】
メモリロケーション６７０は、オフセット６６５を考慮し、４メモリ領域全て、例えば、メモリバンク６４０ａ〜ｄが確実に用いられる一方で、特定的なメモリ数値のロケーション（図５に示されるような同様のメモリバンクに対しても、又は図４に示されるような複数のスレッドデータセットに対しても、概して同様である）は各特定的なメモリロケーションに対して内部的に同じ状態のままとなり、更にその一方で、共有メモリ６４０に対してはスタガ配列とされるよう、メモリの次の行にも重なる部分があるようになっている。このようにして、更なる垂直オフセットされたメモリロケーション６８０と６９０は、それぞれ機能ユニット６０５ｃと６０５ｄに対応するように生成され、各々がオフセットブロック６７５と６８５を使用する。更に、ブロック７００と７１０、オフセット６９５と７０５（ここでは用いられていないが）が、本願に用いられる技術をジグザグ配列するメモリ割り当てを明瞭に示すために示される。
【００３２】
それ故、実行命令６１５ｂで共有メモリからＸ値セットを対応するプロセッサスレッドにロードし、Ｘａ値７２０ａが、機能ユニット６０５ａと関連付けられるメモリロケーション６６０からレジスタ６２０ａにロードされる（６２５ａ）。同様に、Ｘｂ値７２０ｂ、Ｘｃ値７２０ｃ、及びＸｄ値７２０ｄは、メモリロケーション６７０、６８０、６９０からそれぞれ対応するレジスタ６２０ｂ、６２０ｃ及び６２０ｄにロードされる（６２５ａ、６２５ｂ、６２５ｃ）。
【００３３】
このようにしてデータがＳＩＭＤ演算のために求められると、データは４領域６４０ａ〜６４０ｄから共有メモリの垂直にオフセットされている複数ロケーションの４レジスタ３２０ａ〜ｄ全部に同時にロードされる。一方では、データがマルチスカラプロセッシングのために求められると、バックトゥバックシーケンシャルアクセスが、データを機能ユニットの個々のレジスタにロードするために与えられる。例えば、データＸｂ値は最初のアクセスでオフセットロケーション７２０ｂからレジスタ６２０ｂにロードされる。次のバックトゥバックシーケンシャルアクセスで、例えば、Ｘａ値のような別のデータ値がロケーション７２０ａからレジスタ６２０ｂにロードされ得るし、メモリがそのような複数のバックトゥバックシーケンシャルアクセスを可能にする。前述の値がメモリの複数の異なる領域（バンク）、複数の異なる垂直オフセットロケーションに位置しているからである。
【００３４】
同様に、Ｙ値セットを記録する命令６１５ｅの実行で、レジスタ数値６３０ａ、６３０ｂ、６３０ｃ、及び６３０ｄが対応するメモリ領域６６０，６７０，及び６９０における対応するロケーションＹａ、Ｙｂ、Ｙｃ、及びＹｄに記録される。
【００３５】
本発明の一形態では、内部スレッドメモリ領域のコンフリクトなしに、シングル命令マルチデータスレッド（シムド：ＳＩＭＤ）とマルチスカラスレッドをマルチスレッドプロセスするために用いられるように、かつ、ＳＩＭＤモードからマルチスカラモードへの遷移を可能するために、使用される共有メモリが開示される。この共有メモリのメモリ領域は、ジグザク配置されるようアドレスマッピングされる。
なお、本発明を特定的な実施形態に関連して説明したが、これらの実施形態は本発明の原則とアプリケーションを単に説明する目的のためであることが理解されよう。従って、多くの改変が例示的な実施形態に対して行われ、他の配置が添付された請求項に限定された本発明の趣旨の範囲内において考案されてよいことが理解されよう。
【図面の簡単な説明】
【００３６】
【図１】本発明の実施形態に従ったマルチスレッド処理環境を表すシステム概略図である。
【図２】本発明の一実施形態に従ったシナジスティックプロセッシングユニットを表すシステム概略図である。
【図３】本発明の一実施形態に従った均一のスロットマルチバンクメモリ配置方法を表す機能概略図である。
【図４】本発明の一実施形態に従ったスレッドデータセットの配置方法を表す機能概略図である。
【図５】本発明の一実施形態に従った均一のブロックマルチバンクメモリ配置方法を表す機能概略図である。
【図６】本発明の一実施形態に従ったスタッガーされるメモリ配置方法を表す機能概略図である。
【符号の説明】
【００３７】
１００        マルチプロセスシステム
１１０        プロセッシングユニット
１２０        共有メモリ
１２８        共有メモリ
１３０        システムバス
１８０        チャネル
２００        命令処理素子
２１０        レジスタ
２５０        バス
２６０        機能ユニット
２６５ａ〜ｄ  機能ユニット
【図１】
2005310167.tif 000003
【図２】
2005310167.tif 000004
【図３】
2005310167.tif 000005
【図４】
2005310167.tif 000006
【図５】
2005310167.tif 000007
【図６】
2005310167.tif 000008