(57)【要約】【課題】科学計算用ストレージプロセッサアレイを提供する。【解決手段】本明細書に開示する複数の実施形態は、記憶処理ユニット間のデータ通信を提供すべく構成された相互接続ネットワークを含んでいる。開示する相互接続ネットワークは、記憶処理ユニットが局所的に科学計算を実行すべく構成されている場合に特に効果的であり得る。開示する相互接続ネットワークは、ホストシステムに過負荷をかけることなく、局所化され、スループットが高く、且つ待ち時間が短い記憶処理ユニット間のデータ通信を提供する。【選択図】図１
2017117439.tif 000002
【特許請求の範囲】
【請求項１】
二次元配列として配置された複数の記憶処理ユニットの各々が計算ユニットおよび不揮発性メモリモジュールを含む複数の記憶処理ユニットと、
複数のユニットネットワークモジュールを含み、且つ前記複数の記憶処理ユニット間のデータ通信を提供すべく構成された相互接続ネットワークとを含み、
前記複数の記憶処理ユニットが、記憶処理ユニットの複数のサブアレイにグループ化され、
前記複数のサブアレイのうち第１のサブアレイ内の記憶処理ユニットが前記複数のユニットネットワークモジュールのうち第１のものを用いて互いに結合されている固体装置システム。
【請求項２】
前記複数のサブアレイのうち第２のサブアレイ内の記憶処理ユニットが、前記複数のユニットネットワークモジュールのうち第２のものを用いて互いに結合されている、請求項１に記載のシステム。
【請求項３】
前記第１のサブアレイおよび前記第２のサブアレイを含む前記複数のサブアレイが、前記複数のユニットネットワークモジュールのうち第３のものを用いて互いに結合されていることにより、記憶処理ユニットの階層的相互接続を形成する、請求項２に記載のシステム。
【請求項４】
前記ユニットネットワークモジュールの各々が、第１の種類の相互接続トポロジを有している、請求項３に記載のシステム。
【請求項５】
前記第１の種類の相互接続トポロジが、変更されたリングネットワークトポロジを含んでいる、請求項４に記載のシステム。
【請求項６】
前記第１の種類の相互接続トポロジが、変更されたリングネットワークトポロジを含んでいる、請求項４に記載のシステム。
【請求項７】
前記複数のユニットネットワークモジュールのうち前記第１のものが第１の種類の相互接続トポロジを有し、前記複数のユニットネットワークモジュールのうち前記第２のものが第２の種類の相互接続トポロジを有している、請求項３に記載のシステム。
【請求項８】
前記第１のサブアレイが前記第２のサブアレイから対角方向に配置され、前記複数のユニットネットワークモジュールのうち前記第３のものが、前記第１のサブアレイと前記第２のサブアレイを直接接続すべく構成された対角相互接続部を含んでいる、請求項３に記載のシステム。
【請求項９】
前記対角相互接続部が、前記第１のサブアレイの通信ハブと前記第２のサブアレイの通信ハブを直接接続すべく構成されている、請求項８に記載のシステム。
【請求項１０】
前記複数の記憶処理ユニットが印刷回路基板上に配置されていて、前記相互接続ネットワークが前記刷回路基板上に電気導体を含んでいる、請求項１に記載のシステム。
【請求項１１】
前記相互接続ネットワークを介して前記複数の記憶処理ユニット間のデータ転送をスケジューリングすべく構成されたメモリコントローラを更に含んでいる、請求項１に記載のシステム。
【請求項１２】
前記メモリコントローラが更に、
二次元行列に対応する複数のブロックを前記複数のサブアレイにロードし、
前記複数のサブアレイを起動して転置演算を局所的に実行させて前記複数の転置ブロックを計算し、
前記複数のサブアレイのうち２個を起動して前記相互接続ネットワークを介して前記２個のサブアレイに格納された転置ブロックを入れ替えさせるべく構成されている、請求項１１に記載のシステム。
【請求項１３】
前記メモリコントローラが、前記２個のサブアレイが前記転置ブロックを入れ替える前記相互接続ネットワーク上の経路を決定すべく構成されている、請求項１２に記載のシステム。
【請求項１４】
前記複数の記憶処理ユニット内の前記計算ユニットが科学計算を実行すべく構成されている、請求項１に記載のシステム。
【請求項１５】
前記複数のユニットネットワークモジュールのうち１個が、第１種Ｌ字対角ユニットネットワークモジュールを含んでいる、請求項１に記載のシステム。
【請求項１６】
前記複数のユニットネットワークモジュールのうち１個が、第２種Ｌ字対角ユニットネットワークモジュールを含んでいる、請求項１に記載のシステム。
【請求項１７】
前記複数のユニットネットワークモジュールのうち１個が、第３種Ｌ字対角ユニットネットワークモジュールを含んでいる、請求項１に記載のシステム。
【請求項１８】
前記複数のユニットネットワークモジュールのうち１個が、第４種Ｌ字対角ユニットネットワークモジュールを含んでいる、請求項１に記載のシステム。
【請求項１９】
前記複数のユニットネットワークモジュールのうち１個が、フルメッシュユニットネットワークモジュールを含んでいる、請求項１に記載のシステム。
【請求項２０】
請求項１に記載の前記固体装置システムと、
前記固体装置システムとデータ通信状態にあるホスト装置とを含み、前記ホスト装置が、前記複数の記憶処理ユニット内の前記計算ユニットにより処理されるデータを前記固体装置システムに送信すべく構成されているシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、科学計算用ストレージプロセッサアレイを提供する装置、システム、および方法に関する。
【背景技術】
【０００２】
固体ドライブは、フラッシュメモリ等の不揮発性固体メモリを含んでいてよい。フラッシュメモリは、電気的消去可能且つプログラム可能な読み出し専用メモリ（ＥＥＰＲＯＭ）の改良された形式を含んでいてよい。従来のＥＥＰＲＯＭ装置は、一度に１個のメモリ位置（例えばメモリセル）の消去または書き込みしかできない。対照的に、フラッシュメモリでは１回のプログラム動作で多数のメモリ位置の消去または書き込みがすることができる。フラッシュメモリは従って、従来のＥＥＰＲＯＭに比べてより高速に動作可能である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
固体メモリは、他の記憶装置に比べて多くの利点がある。例えば、一般に、読み出しアクセス時間がより速く、且つハードディスクドライブ（ＨＤＤ）よりも衝撃耐性が良好である。動的ランダムアクセスメモリ（ＤＲＡＭ）とは異なり、固体メモリは一般に不揮発性であり、すなわちフラッシュメモリに格納されるデータが、当該メモリへの電力供給が停止されても失われないことを意味する。これらの利点等により、メモリカード、ＵＳＢフラッシュドライブ、携帯電話、デジタルカメラ、大容量記憶装置、ＭＰ３プレーヤ等の装置における記憶用フラッシュメモリが普及し続けていることが説明できる。
【課題を解決するための手段】
【０００４】
本開示の複数の実施形態は、科学計算用のストレージプロセッサアレイを提供する装置、システム、および方法に関する。
【０００５】
本開示のいくつかの実施形態は、固体装置システムを含んでいる。固体装置システムは二次元配列として配置された複数の記憶処理ユニットを含み、複数の記憶処理ユニットの各々は計算ユニットおよび不揮発性メモリモジュールを含んでいる。固体装置システムはまた、複数のユニットネットワークモジュールを含む相互接続ネットワークを含み、当該相互接続ネットワークは複数の記憶処理ユニット間のデータ通信を提供すべく構成されている。複数の記憶処理ユニットは、記憶処理ユニットの複数のサブアレイにグループ化され、複数のサブアレイのうち第１のサブアレイ内の記憶処理ユニットが複数のユニットネットワークモジュールのうち第１のものを用いて互いに結合されている。
【０００６】
いくつかの実施形態において、複数のサブアレイのうち第２のサブアレイ内の記憶処理ユニットは、複数のユニットネットワークモジュールのうち第２のものを用いて互いに結合されている。
【０００７】
いくつかの実施形態において、第１のサブアレイおよび第２のサブアレイを含む複数のサブアレイは、複数のユニットネットワークモジュールのうち第３のものを用いて互いに結合されていることにより、記憶処理ユニットの階層的相互接続を形成する。
【０００８】
いくつかの実施形態において、ユニットネットワークモジュールの各々は、第１の種類の相互接続トポロジを有している。
【０００９】
いくつかの実施形態において、第１の種類の相互接続トポロジは、変更されたリングネットワークトポロジを含んでいる。
【００１０】
いくつかの実施形態において、第１の種類の相互接続トポロジは、変更されたリングネットワークトポロジを含んでいる。
【００１１】
いくつかの実施形態において、複数のユニットネットワークモジュールのうち第１のものは第１の種類の相互接続トポロジを有し、複数のユニットネットワークモジュールのうち第２のものは第２の種類の相互接続トポロジを有している。
【００１２】
いくつかの実施形態において、第１のサブアレイは第２のサブアレイから対角方向に配置され、複数のユニットネットワークモジュールのうち第３のものは、第１のサブアレイと第２のサブアレイを直接接続すべく構成された対角相互接続部を含んでいる。
【００１３】
いくつかの実施形態において、対角相互接続部は、第１のサブアレイの通信ハブと第２のサブアレイの通信ハブを直接接続すべく構成されている。
【００１４】
いくつかの実施形態において、複数の記憶処理ユニットは印刷回路基板上に配置されていて、相互接続ネットワークは印刷回路基板上に電気導体を含んでいる。
【００１５】
いくつかの実施形態において、固体装置システムは更に、相互接続ネットワークを介して複数の記憶処理ユニット間のデータ転送をスケジューリングすべく構成されたメモリコントローラを含んでいる。
【００１６】
いくつかの実施形態において、メモリコントローラは更に、二次元行列に対応する複数のブロックを複数のサブアレイにロードし、当該複数のサブアレイを起動して転置演算を局所的に実行させて複数の転置ブロックを計算し、当該複数のサブアレイのうち２個を起動して相互接続ネットワークを介して当該２個のサブアレイに格納された転置ブロックを入れ替えさせる。
【００１７】
いくつかの実施形態において、メモリコントローラは、当該２個のサブアレイが転置ブロックを入れ替える相互接続ネットワーク上の経路を決定すべく構成されている。
【００１８】
いくつかの実施形態において、複数の記憶処理ユニット内の計算ユニットは科学計算を実行すべく構成されている。
【００１９】
いくつかの実施形態において、複数のユニットネットワークモジュールのうち１個が、第１種Ｌ字対角ユニットネットワークモジュールを含んでいる。
【００２０】
いくつかの実施形態において、複数のユニットネットワークモジュールのうち１個が、第２種Ｌ字対角ユニットネットワークモジュールを含んでいる。
【００２１】
いくつかの実施形態において、複数のユニットネットワークモジュールのうち１個が、第３種Ｌ字対角ユニットネットワークモジュールを含んでいる。
【００２２】
いくつかの実施形態において、複数のユニットネットワークモジュールのうち１個が、第４種Ｌ字対角ユニットネットワークモジュールを含んでいる。
【００２３】
いくつかの実施形態において、複数のユニットネットワークモジュールのうち１個が、フルメッシュユニットネットワークモジュールを含んでいる。
【００２４】
本開示のいくつかの実施形態はシステムを含んでいる。本システムは、いくつかの実施形態による固体装置システム、および当該固体装置システムとデータ通信状態にあるホスト装置を含んでいてよく、当該ホスト装置は、複数の記憶処理ユニット内の計算ユニットにより処理されるデータを固体装置システムに送信すべく構成されている。
【００２５】
開示する主題の各種の目的、特徴、および利点は、開示する主題の以下の詳細説明を添付図面（同一参照番号は同一要素を指している）と合わせて参照することにより理解が深まろう。添付図面は模式的であって、一定比率での描画を意図していない。各図において見やすさのため必ずしも全ての構成要素にラベル付けしていない。また、当業者に開示する主題を理解させるための説明が必要でない場合、必ずしも開示する主題の各実施形態の全ての構成要素を図示していない。
【図面の簡単な説明】
【００２６】
【図１】いくつかの実施形態による、ホストシステムおよび記憶システムを有する例示的なコンピュータシステムを示す。
【図２】いくつかの実施形態による、複数の記憶処理ユニットの二次元配列を示す。
【図３】いくつかの実施形態による、ユニットネットワークモジュールのリングトポロジを示す。
【図４】いくつかの実施形態による、ユニットネットワークモジュールの変更されたリングトポロジを示す。
【図５Ａ】いくつかの実施形態による、行列転置演算に結線を追加する利点を示す。
【図５Ｂ】いくつかの実施形態による、行列転置演算に結線を追加する利点を示す。
【図６】いくつかの実施形態による、ユニットネットワークモジュールのフルメッシュトポロジを示す。
【図７Ａ】いくつかの実施形態による、ユニットネットワークモジュールの４個のＬ字対角トポロジを示す。
【図７Ｂ】いくつかの実施形態による、ユニットネットワークモジュールの４個のＬ字対角トポロジを示す。
【図７Ｃ】いくつかの実施形態による、ユニットネットワークモジュールの４個のＬ字対角トポロジを示す。
【図７Ｄ】いくつかの実施形態による、ユニットネットワークモジュールの４個のＬ字対角トポロジを示す。
【図８】いくつかの実施形態による、記憶処理ユニットの複数のサブアレイを示す。
【図９】いくつかの実施形態による、記憶処理ユニットの複数のサブアレイを示す。
【図１０】いくつかの実施形態による、記憶処理ユニットの階層的変更後リングネットワークを示す。
【図１１】いくつかの実施形態による、記憶処理ユニットの階層的メッシュネットワークを示す。
【図１２】いくつかの実施形態による、記憶処理ユニットの階層的ネットワークを示す。
【図１３】いくつかの実施形態による、記憶処理ユニットのアレイを用いるブロック転置演算を示す。
【図１４Ａ】特定の入力行列に対する図１３のブロック転置演算を示す。
【図１４Ｂ】特定の入力行列に対する図１３のブロック転置演算を示す。
【図１４Ｃ】特定の入力行列に対する図１３のブロック転置演算を示す。
【図１５】いくつかの実施形態による、記憶処理ユニットの階層的ネットワークを示す。
【発明を実施するための形態】
【００２７】
以下の説明において、開示する主題が完全に理解されるよう、開示する主題のシステムおよび方法並びにそのようなシステムおよび方法が動作可能な環境等に関する多数の具体的な詳細事項を記述している。しかし、当業者には、そのような具体的な詳細事項が無くても開示する主題が実施可能であること、および開示する主題が煩雑になるのを避けるため当分野で公知である特定の特徴については詳述しないことは明らかであろう。また、以下に挙げる例は例示的であって、開示する主題の範囲に含まれる他のシステムおよび方法も存在し得るものと理解されたい。
【００２８】
従来の計算および記憶モデルにおいて、コンピュータシステムはホストシステムおよび記憶システムを含んでいる。当該モデルにおいて、ホストシステムは計算を実行すべく設計され、記憶システムはホストシステムにより処理された情報を格納すべく設計されている。いくつかの場合において、ホストシステムは記憶システムの記憶動作を調整可能であるが、ホストシステムの処理能力は多くの場合、記憶システムとは別個である。
【００２９】
特定の計算動作をホストシステムから記憶システムに移管するのが望ましい場合がある。例えば、データ集中的アプリケーションでは、データ集中的な計算を記憶システム内で局所的に実行できるように、記憶システムの計算能力を増大させることが望ましい場合がある。このように、ホストシステムに対する計算負荷が軽減し、システム全体としての入出力（Ｉ／Ｏ）負荷もまた軽減できる。
【００３０】
システム全体としての入出力（Ｉ／Ｏ）負荷は軽減可能であるが、依然としてデータ通信に対する顕著なニーズが存在し得る。往々にして、記憶システムは複数の記憶処理ユニットを含んでいてよく、記憶処理ユニットはホストシステムから移管された特定の計算を完了すべく互いに通信することが必要になり得る。このような通信は、ホストシステム、または例えば周辺機器相互接続エクスプレス（ＰＣＩｅ）バスのようなピアツーピア通信バスを通じて実行される。残念ながら、いずれの方式も、ホストシステムおよび／またはピアツーピア通信バスの飽和が急激に生じてしまう。ピアツーピア通信バス上でのデータ通信は、ピアツーピア通信バスの帯域幅に制約があるため特に非実用的である。
【００３１】
本開示のいくつかの実施形態は、記憶システム内の記憶処理ユニット間のデータ通信に対処するものである。特に、開示する実施形態は、記憶処理ユニット間のデータ通信を提供すべく構成された相互接続ネットワークを含んでいる。開示する相互接続ネットワークは、記憶処理ユニットが科学計算を局所的に実行すべく構成されている場合に特に効果的である。開示する相互接続ネットワークは、ホストシステムに過大な負荷をかけることなく、局所化され、スループットが高く、且つ待ち時間が短い記憶処理ユニット間のデータ通信を提供する。
【００３２】
高位レベルでは、開示する相互接続ネットワークにより、記憶処理ユニットがホストシステム等の仲介装置を介さずに互いに通信可能になる。記憶処理ユニットが記憶システム内で局所的に互いに通信可能であるため、記憶処理ユニット間の通信を高いスループットおよび／または短い待ち時間で実現できる。
【００３３】
いくつかの実施形態において、開示する相互接続ネットワークは、複数の記憶処理ユニットを、限られた個数の相互接続部により接続することができる。例えば、メモリシステムが２×２行列に配置された４個の記憶処理ユニットを含む場合、開示する相互接続ネットワークは、記憶処理ユニットのうち１個が通信ハブとして動作することにより、記憶処理ユニット間での通信を集中化するように構成されていてよい。
【００３４】
いくつかの実施形態において、相互接続ネットワークは、複数のユニットネットワークモジュールを含んでいてよい。各ユニットネットワークモジュールは、記憶処理ユニットのサブセットを相互接続すべく構成することができる。いくつかの場合において、記憶処理ユニットのサブセットは、互いに階層的に結合可能であることにより、ユニットネットワークモジュールの階層的接続を形成する。
【００３５】
図１に、いくつかの実施形態による、ホストシステムおよび記憶システムを有する例示的なコンピュータシステムを示す。コンピュータシステム１００は、ホストシステム１０２および記憶システム１０４を含んでいてよく、記憶システム１０４は、メモリコントローラ１０６、複数の記憶処理ユニット１０８ａ〜１０８ｄ、および当該複数の記憶処理ユニット１０８ａ〜１０８ｄ間の相互接続ネットワーク１１４を含んでいる。
【００３６】
ホストシステム１０２は、データ読み出しおよびデータ書き込み動作のために記憶システム１０４を使用およびアクセスするコンピュータシステムを含んでいてよい。そのようなホストシステム１０２は、データベース、ファイルシステム、およびウェブサービス等のアプリケーションを実行することができる。ホストシステム１０２は、ホストＣＰＵ、ホストメモリ装置、および記憶処理ユニットアプリケーションプログラミングインターフェース（ＡＰＩ）、および／または装置ドライバを含んでいてよい。いくつかの実施形態において、ホストシステム１０２は、記憶システム１０４と物理的に同じ箇所に（例えば、物理的に近接して）配置されていてよい。このような実施形態において、ホストシステム１０２は、バスを介して記憶システム１０４と通信すべく構成されていてよい。バスは、例えばＰＣＩ、ＰＣＩエクスプレス、ＰＣＩ−Ｘ、ＩｎｆｉｎｉＢａｎｄ、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ、ＳＣＳＩ  ＰＣＩ−Ｅカード、ＳＡＴＡＰＣＩ−Ｅカード、ｉＳＣＳＩアダプタカード、およびファイバーチャネルＰＣＩ−Ｅカードを含んでいてよい。いくつかの実施形態において、ホストシステム１０２は、記憶システム１０４から物理的に分離されていてよい。このような実施形態において、ホストシステム１０２は、通信ネットワークを介して記憶システム１０４と通信することができる。ネットワークは、インターネット、ローカルエリアネットワーク（ＬＡＮ）、パケットデータネットワーク、レガシーネットワーク、またはホストシステム１０２と記憶システム１０４の間のデータ通信を提供する任意の種類のネットワークを含んでいてよい。
【００３７】
いくつかの実施形態において、メモリコントローラ１０６はハードウェアに実装することができる。ハードウェアは、目標メモリブロックを選択すると共に、新規データを受容すべく、選択された目標メモリブロックからデータを削除するための論理回路および／またはメモリを含んでいる。いくつかの実施形態において、メモリコントローラ１０６用のハードウェアは、Ｖｅｒｉｌｏｇ、ＶＨＳＩＣハードウェア記述言語（ＶＨＤＬ）、およびＢｌｕｅＳｐｅｃ（商標）（Ｂｌｕｅｓｐｅｃ  Ｉｎｃ．，Ｆｒａｍｉｎｇｈａｍ，Ｍａｓｓａｃｈｕｓｅｔｔｓ）を含むハードウェア記述言語を用いて実装可能であり、Ｄｅｓｉｇｎ  Ｃｏｍｐｉｌｅｒ（登録商標）（Ｓｙｎｏｐｓｉｓ  Ｉｎｃ．，Ｍｏｕｎｔａｉｎ  Ｖｉｅｗ，Ｃａｌｉｆｏｒｎｉａ）、Ｅｎｃｏｕｎｔｅｒ  ＲＴＬコンパイラ（Ｃａｄｅｎｃｅ  Ｄｅｓｉｇｎ  Ｓｙｓｔｅｍｓ，Ｉｎｃ．，Ｓａｎ  Ｊｏｓｅ，Ｃａｌｉｆｏｒｎｉａ）、ＲｅａｌＴｉｍｅ  Ｄｅｓｉｇｎｅｒ（Ｏａｓｙｓ  Ｄｅｓｉｇｎ  Ｓｙｓｔｅｍｓ，Ｉｎｃ．，Ｓａｎｔａ  Ｃｌａｒａ，Ｃａｌｉｆｏｒｎｉａ）、およびＢｏｏｌｅＤｏｚｅｒ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅ，Ｅｎｄｉｃｏｔｔ，Ｎｅｗ  Ｙｏｒｋ）を含む論理合成ツールを用いて合成される。
【００３８】
いくつかの実施形態において、メモリコントローラ１０６は、ファームウェアの一部として実装することができる。ファームウェアは、劣化数テーブルおよび劣化数マップを保持するメモリ空間を割り当てることができ、更にガーベージコレクション動作用のメモリブロックを識別すべく動作可能な命令を含んでいてよい。
【００３９】
いくつかの実施形態において、メモリコントローラ１０６は、非一時的コンピュータ可読媒体、プログラム可能読出し専用メモリ（ＰＲＯＭ）、またはフラッシュメモリ等のメモリを用いてソフトウェアに実装することができる。ソフトウェアは、メモリコントローラ１０６に常駐するプロセッサ上で実行することができる。プロセッサは、メモリコントローラ１０６に実装された非一時的コンピュータ可読媒体に実装可能な命令またはコンピュータコードを実行すべく構成されていてよい。
【００４０】
いくつかの実施形態において、各記憶処理ユニット１０８は、データを保持する不揮発性メモリ（ＮＶＭ）記憶ユニット１１０および計算用のアクセラレータ１１２を含んでいてよい。
【００４１】
いくつかの実施形態において、ＮＶＭ記憶ユニット１１０は、データを保持する複数のメモリブロックを含んでいてよい。各々のメモリブロックは、固定されたサイズを有していてよい。例えば、１個のメモリブロックの長さは１２８ＫＢであってよい。各メモリブロックは複数のページに分割されていてよい。メモリブロック内の各ページは固定されたサイズを有していてよい。例えば、１ページの長さは４ＫＢであってよい。
【００４２】
いくつかの実施形態において、アクセラレータ１１２は、科学計算等の特定の演算を実行すべく構成されていてよい。例えば、アクセラレータ１１２は、高速フーリエ変換、キー値の保存、検索やソート、および／または行列計算を実行すべく構成されていてよい。
【００４３】
いくつかの実施形態において、アクセラレータ１１２は、ハードウェアに実装することができる。アクセラレータ１１２用のハードウェアは、Ｖｅｒｉｌｏｇ、ＶＨＳＩＣハードウェア記述言語（ＶＨＤＬ）、およびＢｌｕｅＳｐｅｃ（商標）（Ｂｌｕｅｓｐｅｃ  Ｉｎｃ．，Ｆｒａｍｉｎｇｈａｍ，Ｍａｓｓａｃｈｕｓｅｔｔｓ）を含むハードウェア記述言語を用いて実装可能であり、Ｄｅｓｉｇｎ  Ｃｏｍｐｉｌｅｒ（登録商標）（Ｓｙｎｏｐｓｉｓ  Ｉｎｃ．，Ｍｏｕｎｔａｉｎ  Ｖｉｅｗ，Ｃａｌｉｆｏｒｎｉａ）、Ｅｎｃｏｕｎｔｅｒ  ＲＴＬコンパイラ（Ｃａｄｅｎｃｅ  Ｄｅｓｉｇｎ  Ｓｙｓｔｅｍｓ，Ｉｎｃ．，Ｓａｎ  Ｊｏｓｅ，Ｃａｌｉｆｏｒｎｉａ）、ＲｅａｌＴｉｍｅ  Ｄｅｓｉｇｎｅｒ（Ｏａｓｙｓ  Ｄｅｓｉｇｎ  Ｓｙｓｔｅｍｓ，Ｉｎｃ．，Ｓａｎｔａ  Ｃｌａｒａ，Ｃａｌｉｆｏｒｎｉａ）、およびＢｏｏｌｅＤｏｚｅｒ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅ，Ｅｎｄｉｃｏｔｔ，Ｎｅｗ  Ｙｏｒｋ）を含む論理合成ツールを用いて合成される。
【００４４】
いくつかの実施形態において、相互接続ネットワーク１１４は、複数の記憶処理ユニット１０８間の通信を可能にすべく構成されていてよい。相互接続ネットワーク１１４は、データを送受信すべくハードウェアに実装することができる。相互接続ネットワーク１１４は、光媒体、電気媒体、磁気媒体等の各種媒体、および／または複数の記憶処理ユニット１０８間の通信を可能にする他の任意の種類の媒体のうち１個以上で通信を可能にすべく構成されていてよい。相互接続ネットワーク１１４は、多くの通信プロトコルでの通信を可能にすべく構成されていてよい。いくつかの実施形態において、相互接続ネットワーク１１４は、ＰＣＩインターフェース、ＰＣＩｅインターフェース、シリアルＡＴ接続（ＳＡＴＡ）インターフェース、および／またはシリアル接続ＳＣＳＩ（ＳＡＳ）インターフェースを含んでいてよい。
【００４５】
いくつかの実施形態において、複数の記憶処理ユニット１０８は、二次元配列として配置されていてよい。図２に、いくつかの実施形態による、複数の記憶処理ユニットの二次元配置を示す。複数の記憶処理ユニットは、行列配置とも称する二次元配列として配置される。同図では１６個の記憶処理ユニットがある。従って、記憶処理ユニットは４×４行列として配置することができる。いくつかの実施形態において、記憶処理ユニットは印刷回路基板（ＰＣＢ）等の回路基板上に配置可能であり、相互接続ネットワーク１１４は回路基板上に電気導体を含んでいてよい。
【００４６】
いくつかの実施形態において、１個以上の記憶処理ユニット１０８を、二次元添え字を用いて示すことできる。例えば、左上の記憶処理ユニットをＳＰＵ０，０、右下の記憶処理ユニットをＳＰＵ３，３、第ｉ行第ｊ列の記憶処理ユニットをＳＰＵｉ，ｊで示すことができる。
【００４７】
いくつかの実施形態において、ソース記憶処理ユニットとも称する複数の記憶処理ユニット１０８のうち１個が、相互接続ネットワーク１１４を介して宛先記憶処理ユニットにデータを送信することができる。相互接続ネットワーク１１４がソース記憶処理ユニットを宛先記憶処理ユニットに直接結合している場合、ソース記憶処理ユニットは相互接続ネットワーク１１４を介して宛先記憶処理ユニットにデータを直接送信することができる。相互接続ネットワーク１１４がソース記憶処理ユニットを宛先記憶処理ユニットに直接結合していない場合、ソース記憶処理ユニットは各種のデータルーティング技術を用いて宛先記憶処理ユニットにデータを送信することができる。例えば、ソース記憶処理ユニットは、相互接続ネットワーク１１４内の最短距離で宛先記憶処理ユニットにデータを送信することができる。いくつかの実施形態において、メモリコントローラ１０６は、相互接続ネットワーク１１４内でのデータのルーティングを集中的にスケジューリングすることができる。他の複数の実施形態において、複数の記憶処理ユニットは、相互接続ネットワーク１１４内でのデータのルーティングを分散的にスケジューリングすることができる。
【００４８】
いくつかの実施形態において、相互接続ネットワーク１１４は複数のユニットネットワークモジュールを含んでいてよい。各ユニットネットワークモジュールは、二次元配列内の記憶処理ユニットのサブセットを接続すべく構成されていてよい。例えば、ユニットネットワークモジュールは、二次元配列として配置された記憶処理ユニットのサブセット（例：ＳＰＵ０，０、ＳＰＵ０，１、ＳＰＵ１，０、ＳＰＵ１，１）を結合すべく構成されていてよい。二次元配列として配置された記憶処理ユニットのサブセットは、記憶処理ユニットのサブアレイとも称することがある。
【００４９】
いくつかの実施形態において、ユニットネットワークモジュールは、複数の接続トポロジのいずれか一つに配置されたインターフェース接続を含んでいてよい。ユニットネットワークモジュールに関連付けられた接続トポロジは、ユニットネットワークモジュールの種類を決定することができる。複数の接続トポロジは、例えば、リングトポロジ、変更されたリングトポロジ、フルメッシュトポロジ、第１種Ｌ字対角トポロジ、第２種Ｌ字対角トポロジ、第３種Ｌ字対角トポロジ、および第４種Ｌ字対角トポロジを含んでいてよい。これらのトポロジを、いくつかの実施形態に従い図３、４、６、７に示す。
【００５０】
いくつかの実施形態において、記憶処理ユニットのサブアレイは、記憶処理ユニットの他のサブアレイに階層的に接続されていてよい。例えば、図２において、１６個の記憶処理ユニットは、記憶処理ユニットの４個のサブアレイにグループ化できる。第１のサブアレイはＳＰＵ０，０、ＳＰＵ０，１、ＳＰＵ１，０、ＳＰＵ１，１を含み、第２のサブアレイはＳＰＵ０，２、ＳＰＵ０，３、ＳＰＵ１，２、ＳＰＵ１，３を含み、第３のサブアレイはＳＰＵ２，０、ＳＰＵ２，１、ＳＰＵ３，０、ＳＰＵ３，１を含み、第４のサブアレイはＳＰＵ２，２、ＳＰＵ２，３、ＳＰＵ３，２、ＳＰＵ３，３を含んでいる。これらの記憶処理ユニットのサブアレイは、上述の相互接続トポロジのうち１個を用いて、互いに結合されていてよいため、記憶処理ユニット間の階層的結合を提供する。いくつかの実施形態において、記憶処理ユニットの各サブアレイは、同じ種類のユニットネットワークモジュールを用いることができる。他の複数の実施形態において、記憶処理ユニットの少なくとも１個のサブアレイは異なる種類のユニットネットワークモジュールを用いる。
【００５１】
図３に、いくつかの実施形態による、ユニットネットワークモジュールのリングトポロジを示す。図３は、二次元配列として配置された４個の記憶処理ユニット３０２〜３０８を示している。ユニットネットワークモジュールは、４本の結線３１０〜３１６を含んでいる。図３に示すユニットネットワークモジュールは、当該ユニットネットワークモジュールが記憶処理ユニットを環状に接続するため、リングトポロジを有すると言われている。ユニットネットワークモジュールの各結線は、結線により接続された２個の記憶処理ユニット（ＳＰＵ）の間が直接接続されていることを示す。例えば、ＳＰＵ  Ａ３０２およびＳＰＵ  Ｂ３０４は、相互接続結線３１０を介して互いに直接接続されている。２個のＳＰＵが直接接続されている場合、当該２個のＳＰＵは、当該２個のＳＰＵを接続する相互接続結線を介してデータを直接互いに送信することができる。例えば、ＳＰＵ  Ａ３０２およびＳＰＵ  Ｂ３０４は、相互接続結線３１０を介してデータを直接互いに送信することができる。２個のＳＰＵが直接接続されていない場合、２個のＳＰＵは別のＳＰＵを介してデータを互いに送信することができる。例えば、ＳＰＵ  Ａ３０２はＳＰＵ  Ｃ３０６またはＳＰＵ  Ｂ３０４のいずれかを介してＳＰＵ  Ｄ３０８にデータを送信することができる。
【００５２】
図４に、いくつかの実施形態による、ユニットネットワークモジュールの変更されたリングトポロジを示す。変更されたリングトポロジは、図３に示すリングトポロジと同様であるが、変更されたリングトポロジは追加的な対角結線４０２を有している。
【００５３】
この追加的な結線４０２により、ＳＰＵ  Ｂ３０４とＳＰＵ  Ｃ３０６の間のデータ通信が容易になるため、特定の種類の科学計算に有用であろう。例えば、追加的な結線４０２は、行列転置演算にとって有益であり得る。図５Ａ〜５Ｂに、いくつかの実施形態による、行列転置演算の追加的な結線４０２の利点を示す。図５Ａは２×２の行列
【数１】
2017117439.tif 000003
を示し、図５Ｂは当該行列の転置
【数２】
2017117439.tif 000004
を示す。行列Ｐの値が別々のＳＰＵに格納されている（例：ＳＰＵ０，０に１が格納され、ＳＰＵ０，１に２が格納され、ＳＰＵ１，０に５が格納され、ＳＰＵ１，１に６が格納されている）場合、転置演算はＳＰＵ０，１とＳＰＵ１，０に格納された値を入れ替えることにより値２と５の位置を再配置する筈である。この場合、変更されたリングトポロジを有するユニットネットワークモジュールを用いてＳＰＵ０，０、ＳＰＵ０，１、ＳＰＵ１，０、ＳＰＵ１，１が相互接続されていれば、ＳＰＵ０，１とＳＰＵ１，０は、結線４０２を介して互いにデータを直接送信することにより値を交換することができる。これは、変更されたリングトポロジを有するユニットネットワークモジュールが行列転置演算に有用であり得ることを示す。
【００５４】
図６は、いくつかの実施形態による、ユニットネットワークモジュールのフルメッシュトポロジを示す。フルメッシュトポロジは、図４に示す変更されたリングトポロジに極めて類似しているが、フルメッシュトポロジは追加的な対角結線６０２を有している。当該追加的な結線６０２により、ＳＰＵ  Ａ３０２とＳＰＵ  Ｄ３０８の間のデータ通信が容易になるため、特定の種類の科学演算に有用であろう。追加的な結線６０２は、回路基板上で追加的な領域を占有するが、ＳＰＵアレイはＳＰＵ  Ａ３０２とＳＰＵ  Ｄ３０８の間で高速データ転送を行う追加的な柔軟性を有しているため、ＳＰＵアレイの処理能力と適用性を向上させることができる。フルメッシュトポロジを有するユニットネットワークモジュールは、高速フーリエ変換（ＦＦＴ）、キー値の保存、検索やソート、および／または行列計算に特に有用であろう。
【００５５】
関心対象である特定のアプリケーションに応じて、ユニットネットワークモジュールの異なるトポロジも同様に有用になり得る。図７Ａ〜７Ｄに、いくつかの実施形態による、ユニットネットワークモジュールの４個のＬ字対角トポロジを示す。図７Ａに示すトポロジを第１種Ｌ字対角トポロジと称し、図７Ｂに示すトポロジを第２種Ｌ字対角トポロジと称し、図７Ｃに示すトポロジを第３種Ｌ字対角トポロジと称し、図７Ｄに示すトポロジを第４種Ｌ字対角トポロジと称する。
【００５６】
Ｌ字対角トポロジは、一般に、Ｌ字状を形成すべく対角結線、およびリムの回りに２本の結線を含んでいる。例えば、図７Ａに示す第１種Ｌ字対角トポロジは逆対角結線６０２と、ＳＰＵ  Ａ３０２に結合された２本の結線３１０、３１２とを含んでいる。このように、ＳＰＵ  Ａ３０２は４個のＳＰＵ間の通信ハブとしての役割を果たすことができる。別の例として、図７Ｂに示す第２種Ｌ字対角トポロジは対角結線４０２と、ＳＰＵ  Ｂ３０４に結合された２本の結線３１０、３１６とを含んでいる。このように、ＳＰＵ  Ｂ３０４は４個のＳＰＵ間の通信ハブとしての役割を果たすことができる。別の例として、図７Ｃに示す第３種Ｌ字対角トポロジは対角結線４０２と、ＳＰＵ  Ｃ３０６に結合された２本の結線３１２、３１４とを含んでいる。このように、ＳＰＵ  Ｃ３０６は、４個のＳＰＵ間の通信ハブとしての役割を果たすことができる。別の例として、図７Ｄに示す第４種Ｌ字対角トポロジは、逆対角結線６０２と、ＳＰＵ  Ｄ３０８に結合された２本の結線３１４、３１６とを含んでいる。このように、ＳＰＵ  Ｄ３０８は、４個の記憶処理ユニット間に通信ハブとしての役割を果たすことができる。
【００５７】
メモリシステムが多数の記憶処理ユニットを有している場合、上述のトポロジを用いて記憶処理ユニットを接続するのは複雑且つ高価であり得る。更に、上述のトポロジのいくつかは、記憶処理ユニットのより大きい二次元配列には容易に拡張できない。例えば、記憶処理ユニットの４×４アレイの中央の４個の記憶処理ユニットは他の記憶処理ユニットと相互接続されていないため、リングトポロジは記憶処理ユニットの４×４アレイには容易に拡張できない。
【００５８】
上述の問題は、ユニットネットワークモジュールを階層的に用いて記憶処理ユニットを接続することにより対処することができる。
【００５９】
いくつかの実施形態において、記憶処理ユニットの二次元配列は、記憶処理ユニットの複数のサブアレイに分割でき、同一サブアレイ内の記憶処理ユニットはユニットネットワークモジュールを用いて互いに結合することができる。図８に、いくつかの実施形態による、記憶処理ユニットの複数のサブアレイを示す。各サブアレイ８０２〜８０８を破線枠で示しており、各サブアレイ８０２〜８０８は４個の記憶処理ユニットを有している。サブアレイ内の記憶処理ユニットは、図７Ａに示す第１種Ｌ字対角トポロジを用いて互いに結合されている。
【００６０】
いくつかの実施形態において、各サブアレイは、同一種類のユニットネットワークモジュールを用いることができる。例えば、図８において各サブアレイは、同一種類のユニットネットワークモジュール、すなわち図７Ａに示す第１種Ｌ字対角トポロジを用いる。
【００６１】
他の複数の実施形態において、１個以上のサブアレイは、ユニットネットワークモジュールの異なる種類を用いることができる。図９に、いくつかの実施形態による、記憶処理ユニットの複数のサブアレイを示す。図９において、１個以上のサブアレイ９０２〜９０８は異なる種類のユニットネットワークモジュールを用いる。例えば、左上のサブアレイ９０２は、変更されたリングトポロジを有するユニットネットワークモジュールを用い、右下のサブアレイ９０８は第２種Ｌ字対角トポロジを有するユニットネットワークモジュールを用いる。このように、第１のサブアレイを第１のアプリケーション（例：ＦＦＴ計算）に、第２のサブアレイを第２のアプリケーション（例：行列転置演算）に用いる場合、第１のサブアレイと第２のサブアレイ用のユニットネットワークモジュールは、各々のアプリケーションのパフォーマンスを向上させるべく独立に構成されていてよい。
【００６２】
いくつかの実施形態において、当該複数のサブアレイは、上で開示したトポロジの１個以上を用いて互いに接続されることにより、記憶処理ユニットの階層的相互接続ネットワークを形成することができる。図１０に、いくつかの実施形態による、記憶処理ユニットの階層的変更後リングネットワークを示す。図１０において、各サブアレイ１００２〜１００８は、変更されたリングトポロジを有するユニットネットワークモジュールを用いる。サブアレイ１００２〜１００８は次いで、破線枠を接続している太矢印で示すように、同一の変更されたリングトポロジを用いて互いに接続されている。このように、ＳＰＵの階層的変更後リングネットワークを形成することができる。記憶処理ユニットの当該階層的変更後リングネットワークは、階層的に接続された４個のユニット変更後リングネットワーク相互接続部があるため、階層的変更後リングネットワーク（ＨＭＲＮ）−４と称することがある。
【００６３】
いくつかの実施形態において、記憶処理ユニットのサブアレイを跨るインターフェースのルーティングは、ＳＰＵで利用可能なバッファメモリの量に基づいて決定することができる。例えば、インターフェース１０１０は、第１のサブアレイ１００２と第２のサブアレイ１００４の間の直接通信を可能にする。図１０に、インターフェース１０１０が第１のサブアレイ１００２のＳＰＵ０，１および第２のサブアレイ１００４のＳＰＵ０，２に接続されている様子を示す。しかし、いくつかの実施形態において、インターフェース１０１０は、ＳＰＵ０，１、ＳＰＵ０，２、ＳＰＵ１，１およびＳＰＵ１，２で利用可能なバッファメモリの量に応じて第１のサブアレイ１００２のＳＰＵ１，１および／または第２のサブアレイ１００２のＳＰＵ１，２に接続可能である。例えば、ＳＰＵ１，１がＳＰＵ０，１に比べてより多くのバッファメモリを利用できる場合、インターフェース１０１０はＳＰＵ１，１に接続可能である。同様に、ＳＰＵ１，２がＳＰＵ０，２に比べてより多くのバッファメモリを利用できる場合、インターフェース１０１０はＳＰＵ１，２に接続可能である。従って、第１のサブアレイ１００２と第２のサブアレイ１００４の間でインターフェース１０１０を提供する４通りの異なる仕方がある。これは、第２のサブアレイ１００４と第３のサブアレイ１００６の間、第３のサブアレイ１００６と第４のサブアレイ１００８の間、および第４のサブアレイ１００８と第１のサブアレイ１００２の間のインターフェースについても同様である。
【００６４】
いくつかの場合において、階層的相互接続ネットワークを再帰的に形成することができる。例えば、４個のＨＭＲＮ−４を用いて、当該４個のＨＭＲＮ−４がユニット変更後リングネットワーク相互接続を用いて接続されているＨＭＲＮ−１６を構築することができる。同様に、４個のＨＭＲＮ−１６を用いて、４個のＨＭＲＮ−１６がユニット変更後リングネットワーク相互接続を用いて接続されているＨＭＲＮ−６４を構築することができる。一般化すれば、４個のＨＭＲＮ−Ｎ／４を用いて、当該４個のＨＭＲＮ−Ｎ／４が装置変更されたリングネットワーク相互接続を用いて接続されているＨＭＲＮ−Ｎを構築することができる。
【００６５】
図１１に、いくつかの実施形態による、記憶処理ユニットの階層的メッシュネットワークを示す。図１１において、各サブアレイ１１０２〜１１０８は、フルメッシュトポロジを有するユニットネットワークモジュールを用いる。サブアレイ１１０２〜１１０８は次いで、破線枠を接続している太矢印で示すように、同一フルメッシュトポロジを用いて互いに接続されている。このように、記憶処理ユニットの階層的フルメッシュネットワークを形成することができる。図１１に示すフルメッシュネットワークは、階層的フルメッシュネットワーク（ＨＦＭＮ）−４と称することがある。
【００６６】
いくつかの実施形態において、記憶処理ユニットのサブアレイを跨るインターフェースのルーティングは、ＳＰＵで利用可能なバッファメモリの量に基づいて決定することができる。例えば、インターフェース１１１０は、第１のサブアレイ１１０２と第２のサブアレイ１１０４の間の直接通信を可能にする。図１１に、インターフェース１１１０が第１のサブアレイ１１０２のＳＰＵ０，１および第２のサブアレイ１１０４のＳＰＵ０，２に接続されている様子を示す。しかし、いくつかの実施形態において、インターフェース１１１０は、ＳＰＵ０，１、ＳＰＵ０，２、ＳＰＵ１，１およびＳＰＵ１，２で利用可能なバッファメモリの量に応じて第１のサブアレイ１１０２のＳＰＵ１，１および／または第２のサブアレイ１１０２のＳＰＵ１，２に接続可能である。例えば、ＳＰＵ１，１がＳＰＵ０，１に比べてより多くのバッファメモリを利用できる場合、インターフェース１１１０はＳＰＵ１，１に接続可能である。同様に、ＳＰＵ１，２がＳＰＵ０，２に比べてより多くのバッファメモリを利用できる場合、インターフェース１１１０はＳＰＵ１，２に接続可能である。従って、第１のサブアレイ１１０２と第２のサブアレイ１１０４の間でインターフェース１１１０を提供する４通りの異なる仕方がある。これは、第２のサブアレイ１１０４と第３のサブアレイ１１０６の間、第３のサブアレイ１１０６と第４のサブアレイ１１０８の間、および第４のサブアレイ１１０８と第１のサブアレイ１１０２の間のインターフェースについても同様である。
【００６７】
いくつかの場合において、階層的フルメッシュネットワークを再帰的に形成することができる。例えば、４個のＨＦＭＮ−４を用いて、当該４個のＨＦＭＮ−４がユニットフルメッシュネットワーク相互接続を用いて接続されているＨＦＭＮ−１６を構築することができる。同様に、４個のＨＦＭＮ−１６を用いて、当該４個のＨＦＭＮ−１６が装置フルメッシュネットワーク相互接続を用いて接続されているＨＦＭＮ−６４を構築することができる。一般化すれば、４個のＨＦＭＮ−Ｎ／４を用いて、当該４個のＨＦＭＮ−Ｎ／４が装置フルメッシュネットワーク相互接続を用いて接続されているＨＦＭＮ−Ｎを構築することができる。
【００６８】
いくつかの実施形態において、記憶処理ユニットの階層的相互接続ネットワークは、２種類以上のユニットネットワークモジュールを用いることができる。記憶処理ユニットの第１のサブアレイがインターフェースを介して記憶処理ユニットの第２のサブアレイに接続されている場合、インターフェースは第１のサブアレイの通信ハブと第２のサブアレイの通信ハブを接続することができる。例えば、第１のサブアレイが第１種Ｌ字対角ユニットネットワークモジュールを含み（図７Ａに示すように）、且つ第１のサブアレイが第２種Ｌ字対角ユニットネットワークモジュールを含む（図７Ｂに示すように）場合、第１のサブアレイと第２のサブアレイを接続するインターフェースは、第１のサブアレイのＳＰＵ  Ａ３０２と第２のサブアレイのＳＰＵ  Ｂ３０４を接続することができる。
【００６９】
いくつかの実施形態において、階層的相互接続ネットワークで用いられるユニットネットワークモジュールの種類は、特定のアプリケーションに依存し得る。例えば、行列ブロック転置演算を考える。行列Ｘが次式のようにブロック行列Ａ、Ｂ、ＣおよびＤを含むと仮定する。
【数３】
2017117439.tif 000005
次いで、ＸＴと表記するＸの転置は次式のように計算可能である。
【数４】
2017117439.tif 000006
これは、ＡＴおよびＤＴが同一位置に留まるが、ＢＴおよびＣＴの位置が入れ替わっていることを示す。
【００７０】
行列ブロック転置演算のこの特徴は、記憶処理ユニットのアレイにより利用可能である。図１２に、いくつかの実施形態による、記憶処理ユニットの階層的ネットワークを示す。図１２のネットワークは、３種類のユニットネットワークモジュール、すなわち第１種Ｌ字対角トポロジ、第２種Ｌ字対角トポロジ、および第３種Ｌ対角トポロジを使用するが、太矢印で示すように、これらのユニットネットワークモジュールのうち２個だけが単一の対角接続１２１０を用いて接続される。
【００７１】
いくつかの実施形態において、図１２に示す記憶処理ユニットのアレイは、サイズが４×４より大きい行列の行列ブロック転置演算を実行するのに有用であり得る。図１３に、いくつかの実施形態による、記憶処理ユニットのアレイを用いるブロック転置演算１３００を示す。
【００７２】
ステップ１３０２において、メモリコントローラ１０６は記憶処理ユニットに入力行列Ｘをロードすることができる。入力行列Ｘが４×４であって、４個の２×２行列に分割されるものと仮定する。各々の２×２行列は、サブアレイ１２０２、１２０４、１２０６、１２０８のいずれか１個にロードされる。サブアレイ１２０２に対応する２×２行列をＡと表記し、サブアレイ１２０４に対応する２×２行列をＢと表記し、サブアレイ１２０６に対応する２×２行列をＣと表記し、サブアレイ１２０８に対応する２×２行列をＤと表記する場合がある。入力行列Ｘ、および当該入力行列Ｘが記憶処理ユニットのアレイにロードされる構成の例を図１４Ａに示す。
【００７３】
ステップ１３０４において、各々のサブアレイは、各々の記憶処理ユニット内のユニットネットワークモジュールおよび／またはアクセラレータを用いて転置演算を局所的に実行することができる。この局所的ブロック単位転置演算の後で、サブアレイ１２０２に対応する２×２行列はＡＴを保持し、サブアレイ１２０４に対応する２×２行列はＢＴを保持し、サブアレイ１２０６に対応する２×２行列はＣＴを保持して、サブアレイ１２０４に対応する２×２行列はＤＴを保持することができる。局所的ブロック単位転置演算の結果を図１４Ｂに示す。図１４Ｂの太数字は、局所的ブロック単位転置演算により位置が入れ替わった行列Ｘの要素を示す。
【００７４】
ステップ１３０６において、サブアレイ１２０４およびサブアレイ１２０６は、転置されたブロック行列ＢＴとＣＴを入れ替えて行列転置演算を完了することができる。ＳＰＵ１，２およびＳＰＵ２，１が各々サブアレイ１２０４およびサブアレイ１２０６のハブを形成するため、サブアレイ１２０４およびサブアレイ１２０６との対角結合１２１０により、サブアレイ１２０４とサブアレイ１２０６の間でデータを効率的に転送することができる。ステップ１３０６の後、ＳＰＵのアレイは入力行列Ｘの転置を保持することができる。
【数５】
2017117439.tif 000007
図１４Ｂに示すデータに対するステップ１３０６の結果を図１４Ｃに示す。図１４Ｃの太数字は、ステップ１３０６で位置が入れ替わった行列Ｘの要素を示す。
【００７５】
いくつかの実施形態において、図１３に示す演算が反復的に実行されて、より大きい行列、例えば８×８行列、１６×１６行列、およびサイズが２Ｎ×２Ｎ（Ｎは整数）である任意の行列の転置演算を実行することができる。
【００７６】
図１５に、いくつかの実施形態による、記憶処理ユニットの階層的ネットワークを示す。図１５のネットワークは、３種類のユニットネットワークモジュール、すなわち第１種Ｌ字対角トポロジ、第２種Ｌ字対角トポロジ、および第３種Ｌ対角トポロジを使用し、これらのユニットネットワークモジュールは、太矢印で示すように、フルメッシュトポロジを用いて接続されている。図１５の記憶処理ユニットのアレイはまた、図１３に示す処理に従い行列ブロック転置演算を実行すべく用いることができる。
【００７７】
本明細書において２個以上の特定のステップを含む方法に言及しているが、当該特定ステップは任意の順序で、または同時に実行可能であり（文脈から別途指示される場合を除く）、且つ本方法は、当該特定ステップの前に、当該特定ステップのうち２個の間に、または当該特定ステップの全ての後で（文脈から別途指示される場合を除く）実行される１個以上の他のステップを含んでいてよい。
【００７８】
当業者には、本明細書に記述する各種の実施例が電子ハードウェア、コンピュータソフトウェア、ファームウェア、または電子ハードウェア、コンピュータソフトウェア、およびファームウェアのうち２個以上の組合せとして実装できることが理解されよう。ハードウェア、ソフトウェア、および／またはファームウェアのこのような代替可能性を示すために、各種の例示的なブロック、モジュール、素子、要素、方法、およびアルゴリズムについて機能の観点から上で一般的に述べてきた。このような機能がハードウェア、ソフトウェア、ファームウェアまたはそれらの組合せとして実装されるか否かは、システム全体に課される特定のアプリケーションおよび設計の制約に依存する。当業者であれば、特定のアプリケーション毎に上述の機能を様々な仕方で実装することができる。各種の要素およびブロックは全て、主題技術の範囲から逸脱することなく異なる仕方で（例えば、異なる順序で配置、または異なる仕方で区分されて）配置することができる。開示する主題の実装は、１個のコンピュータシステムで集中的に、または異なる要素が互いに接続された複数のコンピュータシステムを跨って分散的に実現することができる。本明細書に記述する方法を実行すべく適合された任意の種類のコンピュータシステム、または他の装置が、本明細書に記述する機能を実行するのに適している。
【００７９】
ハードウェアとソフトウェアの典型的な組合せとして、ロードおよび実行された場合に本明細書に記述する方法を実行すべくコンピュータシステムを制御するコンピュータプログラムを備えた汎用コンピュータシステムがあり得る。開示する主題はまた、本明細書に記述する方法およびシステムを実装可能にする全ての特徴を含むと共にコンピュータシステムにロードされた場合に当該方法を実行可能なコンピュータプログラム製品に埋め込まれていてよい。
【００８０】
本文脈におけるコンピュータプログラムまたはアプリケーションは、情報処理能力を有するシステムに、特定の機能を直接実行させるか、またはａ）別の言語、符号または表記への変換、ｂ）異なる媒体形式での再現、の一方または両方を実行した後で実行させることを目的とする命令の組の任意の言語、符号または表記による任意の表現を意味している。重要な点として、本明細書に記述するシステムおよび方法はまた、その趣旨または基本的属性から逸脱することなく、他の特定の形式で実施可能であり、従って、本システムおよび方法の範囲を示すものとして上述の明細書本文ではなく、以下の請求項を参照されたい。
【００８１】
本開示について、例示的な実施形態を具体的に参照しながら詳細に述べてきた。しかし、上述の明細書本文に記述しているように、本開示の範囲内で各種の修正および変更が可能であることは明らかであり、そのような修正および変更は等価物であって本開示の一部をなすものと考えられたい。
【符号の説明】
【００８２】
１００  コンピュータシステム
１０２  ホストシステム
１０４  記憶システム
１０６  メモリコントローラ
１０８ａ〜１０８ｄ  記憶処理ユニット
１１０  ＮＶＭ記憶ユニット
１１２  アクセラレータ
１１４  相互接続ネットワーク
３０２〜３０８  記憶処理ユニット
３１０〜３１６  結線
４０２，６０２  対角結線
８０２〜８０８  サブアレイ
９０２〜９０８  サブアレイ
１００２〜１００８  サブアレイ
１０１０，１１１０  インターフェース
１２０２〜１２０８  サブアレイ
１２１０  対角結合
ＳＰＵｉ，ｊ  記憶処理ユニット
【図１】
2017117439.tif 000008
【図２】
2017117439.tif 000009
【図３】
2017117439.tif 000010
【図４】
2017117439.tif 000011
【図５Ａ】
2017117439.tif 000012
【図５Ｂ】
2017117439.tif 000013
【図６】
2017117439.tif 000014
【図７Ａ】
2017117439.tif 000015
【図７Ｂ】
2017117439.tif 000016
【図７Ｃ】
2017117439.tif 000017
【図７Ｄ】
2017117439.tif 000018
【図８】
2017117439.tif 000019
【図９】
2017117439.tif 000020
【図１０】
2017117439.tif 000021
【図１１】
2017117439.tif 000022
【図１２】
2017117439.tif 000023
【図１３】
2017117439.tif 000024
【図１４Ａ】
2017117439.tif 000025
【図１４Ｂ】
2017117439.tif 000026
【図１４Ｃ】
2017117439.tif 000027
【図１５】
2017117439.tif 000028
【外国語明細書】
2017117439000001.pdf