IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アーム・リミテッドの特許一覧

特表2024-528421ストールされたデータを処理するためのデータ処理装置及び方法
<>
  • 特表-ストールされたデータを処理するためのデータ処理装置及び方法 図1
  • 特表-ストールされたデータを処理するためのデータ処理装置及び方法 図2
  • 特表-ストールされたデータを処理するためのデータ処理装置及び方法 図3
  • 特表-ストールされたデータを処理するためのデータ処理装置及び方法 図4
  • 特表-ストールされたデータを処理するためのデータ処理装置及び方法 図5
  • 特表-ストールされたデータを処理するためのデータ処理装置及び方法 図6
  • 特表-ストールされたデータを処理するためのデータ処理装置及び方法 図7
  • 特表-ストールされたデータを処理するためのデータ処理装置及び方法 図8
  • 特表-ストールされたデータを処理するためのデータ処理装置及び方法 図9
  • 特表-ストールされたデータを処理するためのデータ処理装置及び方法 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-30
(54)【発明の名称】ストールされたデータを処理するためのデータ処理装置及び方法
(51)【国際特許分類】
   G06F 15/173 20060101AFI20240723BHJP
【FI】
G06F15/173 685A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023577728
(86)(22)【出願日】2022-06-21
(85)【翻訳文提出日】2024-01-18
(86)【国際出願番号】 GB2022051577
(87)【国際公開番号】W WO2023275514
(87)【国際公開日】2023-01-05
(31)【優先権主張番号】2109518.7
(32)【優先日】2021-07-01
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VERILOG
(71)【出願人】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】エヨール、ムボウ
(72)【発明者】
【氏名】ガブリエリ、ジャコモ
(72)【発明者】
【氏名】ヴェヌー、バラジ
【テーマコード(参考)】
5B045
【Fターム(参考)】
5B045DD10
5B045JJ42
(57)【要約】
データ処理装置及び方法が提供される。データ処理装置は、空間アーキテクチャを形成するために単一チップ上に配置されたネットワークを介して接続された複数の処理要素を備える。各処理要素は、処理動作を実行する処理回路と、データ転送動作を実行し、要求されたデータに対するデータ転送要求をネットワークに発行するメモリ制御回路とを備える。メモリ制御回路は、ネットワークを監視して、要求されたデータをネットワークから取り出すように構成される。各処理要素は、処理動作に関連するデータを記憶するための複数のローカル記憶セクタを含むローカル記憶回路と、ネットワークを監視してストールされたデータを検出するための補助メモリ制御回路とを更に備える(S60)。補助メモリ制御回路は、ストールされたデータをネットワークから、複数のローカル記憶セクタ(S64)の中から動的に選択された補助記憶バッファ(S66)に転送するように構成される。
【特許請求の範囲】
【請求項1】
単一チップ上に配置されたネットワークを介して接続されて空間アーキテクチャを形成する複数の処理要素を備えるデータ処理装置であって、前記複数の処理要素の各処理要素は、
処理動作を実行する処理回路と、
前記処理要素に関連付けられたデータ転送動作を実行し、要求されたデータについてのデータ転送要求を前記ネットワークに発行するメモリ制御回路であって、前記要求されたデータについて前記ネットワークを監視し、前記要求されたデータの検出に応答して、前記要求されたデータを前記ネットワークから取り出すように構成されたメモリ制御回路と、
前記処理動作に関連付けられたデータを記憶するローカル記憶回路であって、複数のローカル記憶セクタを備えるローカル記憶回路と、
前記処理要素に関連付けられたストールされたデータを検出するために前記ネットワークを監視し、前記ストールされたデータの検出に応答して、前記複数のローカル記憶セクタの中から動的に選択された補助記憶バッファに前記ストールされたデータを前記ネットワークから転送するように構成された補助メモリ制御回路と、を含む、データ処理装置。
【請求項2】
前記処理動作及び前記データ転送動作がトリガ動作であり、
各トリガ動作は、対応する処理トリガ条件を満たすトリガデータに応答して実行され、
前記処理要素は、前記トリガされた動作の完了に応答して、更なるトリガデータを設定するように構成される、
請求項1に記載のデータ処理装置。
【請求項3】
各データ転送要求は、データ要求タグを指定し、
前記補助メモリ制御回路は、前記ストールされたデータの対応するデータ要求タグと前記補助記憶バッファ内の対応する位置とを関連付ける補助メモリテーブルを記憶するための補助テーブル記憶装置を備える、
請求項1又は2に記載のデータ処理装置。
【請求項4】
前記補助メモリ制御回路は、前記メモリ制御回路が前記ストールされたデータを必要とするという指示に応答して、前記データ転送要求によって指定された前記データ要求タグに基づいて前記補助メモリテーブル内でルックアップを実行するように構成される、請求項3に記載のデータ処理装置。
【請求項5】
前記補助メモリ制御回路は、前記ルックアップが前記補助メモリテーブル内でヒットするとき、前記データ要求タグに関連付けられた位置を前記メモリ制御回路に提供するように構成され
前記メモリ制御回路は、前記ストールされたデータを前記位置から取り出すように構成される、
請求項4に記載のデータ処理装置。
【請求項6】
補助メモリ制御回路は、前記メモリ制御回路による前記ローカル記憶セクタの各々の使用メトリックに基づいて、前記複数のローカル記憶セクタの中から前記補助記憶バッファを動的に選択するように構成される、請求項1~5のいずれか一項に記載のデータ処理装置。
【請求項7】
各処理要素は、前記使用メトリックを定義する複数のカウンタを更に備え、各カウンタは、関連付けられたローカル記憶セクタが前記メモリ制御回路によってアクセスされた回数を示し、
前記補助メモリ制御回路は、前記補助記憶バッファとして、最も少ないアクセスを示す前記複数のカウンタのうちの1つのカウンタに対応する特定のローカル記憶セクタを選択するように構成される、
請求項6に記載のデータ処理装置。
【請求項8】
前記ローカル記憶装置は、前記メモリ制御回路及び前記補助メモリ制御回路が異なるセクタに並列にアクセスすることを可能にするように構成される、請求項7に記載のデータ処理装置。
【請求項9】
前記ローカル記憶回路は、前記メモリ制御回路及び前記補助制御回路による同じセクタへの並列アクセスに応答して、前記補助メモリ制御回路を優先するように構成される、請求項8に記載のデータ処理装置。
【請求項10】
前記メモリ制御回路は、前記ネットワークから前記データを取り出すときに、前記データが前記ネットワークから除去されたことを示すためにデキュー信号を修正するように構成され、
前記補助メモリ制御回路は、前記ストールされたデータを検出するために前記ネットワークを監視するとき、
前記デキュー信号を周期的に監視し、
前記データが前記ネットワーク上に残っていることを前記デキュー信号が示すとき、キューイングされたデータがストールされたデータを含むと決定するように構成される、
請求項1~9のいずれか一項に記載のデータ処理装置。
【請求項11】
各処理要素は、前記処理要素と前記ネットワークとの間で転送されるキューイングされたデータを記憶するための複数のインターフェースチャネルを更に備え、
前記メモリ制御回路は、前記複数のインターフェースチャネルを監視することによって、前記要求されたデータについて前記ネットワークを監視するように構成される、
請求項1~10のいずれか一項に記載のデータ処理装置。
【請求項12】
前記補助メモリ制御回路は、ストールされたデータを検出するために前記ネットワークを監視するとき、
所定の期間の開始時に、前記複数のインターフェースチャネル内の前記キューイングされたデータを示す第1のキューデータを捕捉することと、
前記所定の期間の終了時に、前記複数のインターフェースチャネル内の前記キューイングされたデータを示す第2のキューデータを捕捉することと、
前記第1のキューデータが前記第2のキューデータと同じであるとき、前記キューイングされたデータがストールされたデータを含むと決定することと、を行うように構成される、請求項11に記載のデータ処理装置。
【請求項13】
前記複数のインターフェースチャネルの各々は、先入れ先出しバッファである、請求項11又は12に記載のデータ処理装置。
【請求項14】
前記複数のインターフェースチャネルは、前記ネットワークからデータを受信するように構成された複数の入力チャネルと、前記ネットワークに出力されるデータをバッファリングするように構成された複数の出力チャネルとを含む、請求項11~13のいずれか一項に記載のデータ処理装置。
【請求項15】
前記空間アーキテクチャは、多次元アレイを形成するように接続された前記複数の処理要素を含む、請求項1~14のいずれか一項に記載のデータ処理装置。
【請求項16】
前記多次元アレイは、多次元トーラスレイアウトを形成するように接続される、請求項15に記載のデータ処理装置。
【請求項17】
前記データ転送要求は、
別の処理要素から転送されるべきデータを指定する処理要素間データ転送要求、
メインメモリ内のメモリ位置から転送されるべきデータを指定するメモリ要求のうちの1つである、請求項1~16のいずれか一項に記載のデータ処理装置。
【請求項18】
前記データ転送要求は、
前記データ転送要求を行う前記処理要素、
特定のインターフェースチャネル、
データ要素の宛先がメモリ制御回路であるか前記処理回路であるか、
前記データ転送要求が、複数の処理要素を指定するマルチキャストデータ転送要求であるか否か、及び
転送されるべきデータの量、のうちの少なくとも1つを指定する、請求項1~17のいずれか一項に記載のデータ処理装置。
【請求項19】
前記複数の処理要素は、共通インターフェースノードを介してグローバル記憶装置に接続される、請求項1~18のいずれか一項に記載のデータ処理装置。
【請求項20】
前記データ処理装置は、前記複数の処理要素のうちの処理要素をサブグループに配置するように構成され、
前記データ処理装置は、前記処理要素を含む前記サブグループにメモリ要求をルーティングするように構成されたマルチプレクサを更に備える、
請求項19に記載のデータ処理装置。
【請求項21】
前記データ転送要求は、前記返されたデータが特定の記憶位置に記憶される静的データであることを指定する、請求項1~20のいずれか一項に記載のデータ処理装置。
【請求項22】
前記補助メモリ制御回路は、前記ストールされたデータが静的データであることを検出することに応答して、前記ストールされたデータを前記ネットワークから前記特定の記憶位置に転送するように構成される、請求項21に記載のデータ処理装置。
【請求項23】
請求項1に記載のデータ処理装置の製造のためのコンピュータ可読コードを記憶する非一時的コンピュータ可読媒体。
【請求項24】
空間アーキテクチャを形成するために単一チップ上に配置されたネットワークを介して接続された複数の処理要素を備えるデータ処理装置を動作させる方法であって、各処理要素は、処理回路と、メモリ制御回路と、複数のローカル記憶セクタを備えるローカル記憶回路と、補助メモリ制御回路とを備え、前記方法は、
前記処理回路を使用して処理動作を実行することと、
前記処理動作に関連付けられたデータを記憶することと、
前記メモリ制御回路を用いて、前記処理要素に関連付けられたデータ転送動作を実行し、要求されたデータについてのデータ転送要求を前記ネットワークに発行し、前記要求されたデータについて前記ネットワークを監視し、複数のインターフェースチャネルのうちの1つにおいて前記要求されたデータを検出することに応答して、前記要求されたデータを前記ネットワークから取り出すことと、
前記補助メモリ制御回路を用いて、前記処理要素に関連付けられたストールされたデータを検出するために前記ネットワークを監視し、前記ストールされたデータの検出に応答して、前記複数のローカル記憶セクタの中から動的に選択された補助記憶バッファに前記ストールされたデータを前記ネットワークから転送することと、を含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
データ処理装置には、空間アーキテクチャを形成するように配置された複数の処理要素を備え、各処理要素がネットワークを介して接続されるものがある。処理要素は、ネットワークからデータを要求するためにデータ転送要求を発行することを含む処理動作及びデータ転送動作を実行する。通常、空間アーキテクチャの処理要素は、ネットワーク上のデータを監視して、要求されたデータを識別し、それが検出されたときにそれをネットワークから取り出すように構成される。しかしながら、処理要素に対して要求されたデータ項目が、データ処理要素によって予期される順序とは異なる順序で返される場合、返されたデータは、要求されたデータが他の要求されたデータの後にスタックされた状態でストールする可能性がある。このストールされたデータは、空間アーキテクチャをストールさせ得る。
【0002】
いくつかの例示的な構成によれば、空間アーキテクチャを形成するように単一チップ上に配置されたネットワークを介して接続された複数の処理要素を備えるデータ処理装置が提供され、複数の処理要素の各処理要素は、
処理動作を実行する処理回路と、
処理要素に関連付けられたデータ転送動作を実行し、要求されたデータについてのデータ転送要求をネットワークに発行するメモリ制御回路であって、要求されたデータについてネットワークを監視し、要求されたデータの検出に応答して、要求されたデータをネットワークから取り出すように構成されたメモリ制御回路と、
処理動作に関連付けられたデータを記憶するローカル記憶回路であって、複数のローカル記憶セクタを備えるローカル記憶回路と、
処理要素に関連付けられたストールされたデータを検出するためにネットワークを監視し、ストールされたデータの検出に応答して、複数のローカル記憶セクタの中から動的に選択された補助記憶バッファにストールされたデータをネットワークから転送するように構成された補助メモリ制御回路と、を含む。
【0003】
更なる例示的な構成によれば、空間アーキテクチャを形成するために単一チップ上に配置されたネットワークを介して接続された複数の処理要素を備えるデータ処理装置を動作させる方法が提供され、各処理要素は、処理回路と、メモリ制御回路と、複数のローカル記憶セクタを備えるローカル記憶回路と、補助メモリ制御回路とを備え、方法は、
処理回路を使用して処理動作を実行することと、
処理動作に関連付けられたデータを記憶することと、
メモリ制御回路を用いて、処理要素に関連付けられたデータ転送動作を実行し、要求されたデータについてのデータ転送要求をネットワークに発行し、要求されたデータについてネットワークを監視し、複数のインターフェースチャネルのうちの1つにおいて要求されたデータを検出することに応答して、要求されたデータをネットワークから取り出すことと、
補助メモリ制御回路を用いて、処理要素に関連付けられたストールされたデータを検出するためにネットワークを監視し、ストールされたデータの検出に応答して、メモリ制御回路によってローカル記憶セクタの各々の使用メトリックに基づいて複数のローカル記憶セクタの中から動的に選択された補助記憶バッファにストールされたデータをネットワークから転送することと、を含む。
【図面の簡単な説明】
【0004】
添付図面に示されるそれらの実施形態を参照して、あくまで一例として本技術を更に説明する。
図1】本技術の様々な例による、空間アーキテクチャとして配置されたデータ処理装置を概略的に示す。
図2】本技術の様々な例による、データ処理装置におけるストールを検出するための代替方法を概略的に示す。
図3】本技術の様々な例による、データ処理装置において典型的に観測されるデータ要求の頻度を概略的に示す。
図4】本技術の様々な例による、処理要素の詳細を概略的に示す。
図5】本技術の様々な例による、処理要素の詳細を概略的に示す。
図6】本技術の様々な例による、メモリ制御回路によって行われる一連のステップを概略的に示す。
図7】本技術の様々な例による、補助メモリ制御回路によって行われる一連のステップを概略的に示す。
図8】本技術の様々な例による、ストールされたデータを検出するために補助メモリ制御回路によって行われる一連のステップを概略的に示す。
図9】本技術の様々な例による、データ転送要求に応答して補助メモリ制御回路によって行われる一連のステップを概略的に示す。
図10】本技術の様々な例による、ローカル記憶回路によって行われる一連のステップを概略的に示す。
【0005】
いくつかの例示的な構成では、空間アーキテクチャを形成するために単一チップ上に配置されたネットワークを介して接続された複数の処理要素を備えるデータ処理装置が提供される。複数の処理要素の各処理要素は、処理動作を実行する処理回路と、処理要素に関連付けられたデータ転送動作を実行するメモリ制御回路とを備える。メモリ制御回路は、要求されたデータについてのデータ転送要求をネットワークに発行するように構成され、要求されたデータについてネットワークを監視するように構成される。メモリ制御回路は、要求されたデータを検出することに応答して、ネットワークから要求されたデータを取り出すように構成される。データ処理装置の各処理要素はまた、処理動作に関連付けられたデータを記憶するためのローカル記憶回路であって、複数のローカル記憶セクタを備えるローカル記憶回路と、ネットワークを監視して処理要素に関連付けられたストールされたデータを検出するように構成された補助メモリ制御回路とを備える。補助メモリ制御回路は、ストールされたデータの検出に応答して、ストールされたデータをネットワークから補助記憶バッファに転送するように構成され、補助記憶バッファは、複数のローカル記憶セクタの中から動的に選択される。
【0006】
空間アーキテクチャは、空間に分散されたデータ処理要素の配置であり、いくつかの計算が順次ではなく並列に実行されることを可能にする。典型的な空間アーキテクチャは、異なる命令が異なるデータに並列に適用されること、又は同じ命令が同じ命令サイクル中に異なるデータに適用されることを可能にする。空間アーキテクチャの処理要素は、互いに通信する物理的に別個の回路として、又はメモリ制御回路及び処理回路の両方の機能を実行する回路の単一ブロックとして提供することができるメモリ制御回路及び処理回路を備える。メモリ制御回路は、メモリ制御回路又は処理回路によってデコードされた命令に応答することができるデータ転送要求を発行するように構成される。更に、メモリ制御回路は、ネットワーク上で返された要求されたデータを検出するために、変化する、ランダムな、又は固定された周期で周期的に、あるいは連続的にネットワークを監視する。各処理要素は、処理動作に関連するデータを記憶するためのローカル記憶回路も備える。ローカル記憶回路は、いくつかのセクタに分割される。いくつかの構成では、ローカル記憶回路は、各処理要素に固有であり、他の例示的な構成では、ローカル記憶回路は、いくつかの隣接する処理要素同士の間で共有される。メモリ制御回路は、要求されたデータの検出に応答して、ローカル記憶回路に記憶するために、又は処理回路によって処理するために、要求されたデータをネットワークから取り出す。
【0007】
本技術の発明者らは、処理要素によって要求されたデータが(要求された順序に関して)順不同で返され得る場合、要求されたデータは、要求されたがまだ必要とされていないデータの後にスタック(ストール)され得ることを認識した。その結果、処理要素、及び潜在的に空間アーキテクチャ全体がストールする可能性がある。したがって、データ処理装置は補助メモリ制御回路を備えている。補助メモリ制御回路は、処理回路及びメモリ制御回路とインターフェースする各処理要素のための回路の別個のブロックとして提供されてもよい。代替として、補助メモリ制御回路は、共通メモリ制御回路ブロックの一部として、又は処理要素を形成する他の回路のいずれかの一部として提供され得る。補助メモリ制御回路は、ネットワーク上のデータを監視して、データがストールしたかどうかを決定する。補助メモリ制御部は、ストールされたデータの検出に応答して、ネットワークからストールされたデータを転送(取り出し)し、ローカル記憶回路のセクタのうちの1つにストールされたデータを記憶するように構成される。したがって、補助メモリ制御回路は、ローカル記憶回路の一部を再利用して、ネットワークへの重圧を軽減し、ネットワークストールの確率を低減する。
【0008】
処理要素に関連する特定のアーキテクチャは、様々に定義することができる。いくつかの例示的な構成では、処理要素は、プログラムカウンタ順序で命令のシーケンスに応答するように構成された処理パイプラインを備える。いくつかの他の例示的な構成では、処理動作及びデータ転送動作はトリガされる動作である。各トリガされた動作は、対応する処理トリガ条件を満たすトリガデータに応答して実行され、処理要素は、トリガされた動作の完了に応答して更なるトリガデータを設定するように構成される。プログラムカウンタ順序で命令のシーケンスに応答するように構成された処理要素とは対照的に、処理要素(処理回路又はメモリ制御回路)によって実行される各命令は、トリガ条件のセットを有するトリガされる動作である。トリガされる動作は、それらのトリガ条件が有効であるときにのみ発行される(それぞれの処理回路又はメモリ制御回路による実行のために送信される)。トリガ条件は、処理要素の任意の規定された状態(例えば、トリガ述語、メモリ占有、又は動作コンテキストの状態)に依存し得る。トリガされた動作が完了すると、処理要素(処理回路又はメモリ制御回路)は、1つ以上のトリガ条件を設定する(例えば、トリガ述語のビットを設定する)ことによって、更なるトリガデータを設定することができ、トリガデータは、その後、他の命令が実行の準備ができているかどうかを決定するために使用され得る。いくつかのトリガされたアーキテクチャ構成では、明示的なプログラムカウンタが提供されず、専用分岐命令が定義されない。空間アーキテクチャの一部としてトリガされる処理要素を提供することにより、処理回路が簡略化され、複雑な分岐予測機構の必要性が回避される。
【0009】
ネットワークと処理要素との間のデータ転送は、いくつかの異なる方法で管理することができる。いくつかの例示的な構成では、各データ転送要求はデータ要求タグを指定し、補助メモリ制御回路は、ストールされたデータの対応するデータ要求タグと補助記憶バッファ内の対応する位置とを関連付ける補助メモリテーブルを記憶するための補助テーブル記憶装置を備える。補助テーブル記憶装置は、補助メモリ制御回路に関連付けられた専用記憶装置であってもよいし、ローカル記憶回路の一部であってもよい。補助記憶回路がローカル記憶回路の一部である構成では、補助メモリ制御回路は、補助テーブル記憶装置として使用されるローカル記憶回路内の位置を示すレジスタ又は他の記憶要素を備える。補助記憶テーブルは、セットアソシアティブキャッシュ、フルアソシアティブキャッシュ、ダイレクトマップキャッシュ、又は当業者に知られている任意の他のメモリ構成として構成することができる。いくつかの代替の例示的な構成では、メモリ制御回路は、必要なデータが補助メモリ回路によってネットワークからすでに取り出されているかどうかを決定するために、ローカル記憶回路において、データ要求タグを指定する初期チェックを実行する。
【0010】
例えば、補助メモリテーブルが提供される例示的な構成では、補助メモリ制御回路は、メモリ制御回路がストールされたデータを必要とするという指示に応答して、データ転送要求によって指定されたデータ要求タグに基づいて補助メモリテーブル内でルックアップを実行するように構成される。補助メモリテーブルにおけるルックアップは、データ要求タグ又はデータ要求タグのハッシュに基づいて実行される。
【0011】
いくつかの例示的な構成では、補助メモリ制御回路は、ルックアップが補助メモリテーブル内でヒットするとき、データ要求タグに関連付けられた位置をメモリ制御回路に提供するように構成され、メモリ制御回路は、ストールされたデータをその位置から取り出すように構成される。補助メモリ回路は、データ要求タグに関連付けられた補助記憶バッファ内の位置を返すように構成される。特に、補助メモリ回路は、データ要求タグを入力として受け取り、補助記憶バッファ内の位置を返す。いくつかの例示的な構成では、ルックアップが補助メモリテーブル内でミスするとき、補助メモリ制御回路は、データが補助記憶バッファ内に存在しないという指示をメモリ制御回路に提供する。メモリ制御回路は、補助メモリ制御回路からの指示に応答して、要求されたデータについてネットワークを監視する。いくつかの例示的な構成では、補助メモリテーブル内のルックアップは、メモリ制御回路がネットワークの監視を開始する前に実行される。代替構成では、補助メモリ制御回路は、要求されたデータについてネットワークを監視するメモリ制御回路と並列にルックアップを実行する。
【0012】
補助記憶バッファは、ローカル記憶回路によって提供される複数のローカル記憶セクタのうちの1つ以上である。補助記憶バッファ用に再利用される(使用される)特定のセクタは、様々な異なる方法で選択することができる。例えば、補助記憶バッファは、処理回路の動作中に静的に選択されるか又はランダムに変更されるローカル記憶セクタに配置されてもよい。いくつかの例示的な構成では、補助メモリ制御回路は、メモリ制御回路によるローカル記憶セクタの各々の使用メトリックに基づいて、複数のローカル記憶セクタの中から補助記憶バッファを動的に選択するように構成される。このようにして、補助記憶回路のために使用されるローカル記憶セクタは、メモリ制御回路及び補助メモリ制御回路による同時アクセスによる競合を引き起こす可能性が最も低いローカル記憶セクタである。
【0013】
ローカル記憶セクタが使用メトリックに基づくいくつかの例示的な構成では、各処理要素は、使用メトリックを定義する複数のカウンタを更に備え、各カウンタは、関連付けられたローカル記憶セクタがメモリ制御回路によってアクセスされた回数を示し、補助メモリ制御回路は、補助記憶バッファとして、最も少ないアクセスを示す複数のカウンタのうちの1つのカウンタに対応する特定のローカル記憶セクタを選択するように構成される。複数のカウンタの動作は、様々な方法で定義することができる。いくつかの例示的な構成において、補助メモリ制御回路は、複数のカウンタの各々の現在の値に基づいてローカル記憶セクタを周期的に選択する。特に、補助メモリ記憶回路は、最低カウンタ値を有するカウンタに関連付けられたローカル記憶セクタを選択する。ローカル記憶セクタが選択されると、カウンタはリセットされる。メモリ制御回路は、アクセスするローカル記憶セクタに関連付けられたカウンタを修正(増分)するように構成される。次に、補助メモリ制御回路が、所定の時間が経過した後、使用されるべきローカル記憶セクタを選択するとき、カウンタは、所定の時間にわたるメモリ制御回路によるアクセス数を示す。いくつかの代替構成では、カウンタは、最小値(例えば、0)に飽和し、最大値(例えば、Nビットカウンタの場合、2-1)に飽和する飽和カウンタである。そのような構成では、メモリ制御回路は、現在アクセスされているローカル記憶セクタに対応するカウンタを第1の量だけ第1の方向に修正(増分)し、異なるセクタ(現在アクセスされていないローカル記憶セクタ)に関連付けられた各カウンタを第2の方向に修正(減分)するように構成される。このようにして、どのローカル記憶セクタがメモリ制御回路によってアクセスされているかのグローバルピクチャを使用して、補助記憶バッファとして使用すべきローカル記憶セクタを決定することができる。第1の量及び第2の量は任意の値をとることができ、いくつかの例示的な構成では、第1の量及び第2の量は同じ量、例えば1である。
【0014】
ローカル記憶回路は、様々な異なる回路配置を使用して提供することができる。いくつかの例示的な構成では、ローカル記憶装置は、メモリ制御回路及び補助メモリ制御回路が異なるセクタに並列にアクセスすることを可能にするように構成される。並列アクセスが許可される例示的な構成では、ローカル記憶回路は、メモリ制御回路及び補助制御回路による同じセクタへの並列アクセスに応答して、補助メモリ制御回路を優先するように構成される。他の例示的な構成では、補助メモリ制御回路は、任意の所与の時間にローカルメモリ記憶回路への1つのアクセスのみを可能にするように構成される。そのような例示的な構成では、ローカル記憶セクタは、補助メモリ制御回路を優先するように構成される。アクセス競合に応答して補助メモリ制御回路を優先することによって、処理要素は、ネットワークからのストールされたデータの除去を優先することができる。
【0015】
ストールされたデータは、異なる方法で検出することができる。いくつかの例示的な構成では、メモリ制御回路は、ネットワークからデータを取り出すとき、データがネットワークから除去されたことを示すためにデキュー信号を修正するように構成され、補助メモリ制御回路は、ストールされたデータを検出するためにネットワークを監視するときに、デキュー信号を周期的に監視し、データがネットワーク上に残っていることをデキュー信号が示した場合、キューイングされたデータがストールされたデータを含むと決定するように構成される。デキュー信号は、メモリ制御回路がネットワークから値を取り出すときに、メモリ制御回路によってアサートされる(データがデキューされたことを示すように修正される)。補助メモリ制御回路は、このデキュー信号を周期的に監視する。デキュー信号が、データがネットワーク上に残っている(すなわち、デキュー信号がアサートされていない)ことを示す場合、補助メモリ制御回路は、キューイングされたデータがストールされたデータを含む(すなわち、ストール状態が発生した)と決定し、ストールされたデータをネットワークから転送するためのアクションをとる。指定された間隔は、指定された時間間隔であってもよいし、指定された命令サイクル数であってもよい。更に、指定された間隔は、固定持続時間又は可変持続時間(例えば、ランダム又は擬似ランダム変動が使用され得る)であってもよい。補助メモリ制御回路は、ネットワークからデータを転送するとき、デキュー信号を修正して、データがネットワークから取り出されたことを示す。いくつかの例示的な構成では、補助メモリ制御回路は、ストール状態が発生しない限りデキュー信号をアサートせず、補助メモリ制御回路は、その後、データ転送を傍受し、ネットワークからデータを取り出す。いくつかの例示的な構成では、補助メモリ制御回路は、取り出されるべきデータがネットワーク上で検出され、データが除去されたことをデキュー信号が示す(すなわち、デキュー信号がクリアである)とき、データがネットワーク上に残っている(すなわち、ネットワークから転送されるべきデータがある)ことを示すように、デキュー信号を修正するように構成される。いくつかの例示的な構成では、メモリ制御回路は、(例えば、トリガ条件がアサートされていないために)メモリ制御回路が取り出すことができないデータがネットワーク上に残っていることを示すために、デキュー信号を修正するように構成される。このようにして、補助メモリ制御回路は、メモリ制御回路がネットワークからデータを取り出したかどうか(すなわち、デキュー信号をセットしたかどうか)、又は補助メモリ制御回路による介入を必要とするネットワーク上にストールされたデータがあるかどうかの見解を維持することができる。
【0016】
いくつかの例示的な構成では、各処理要素は、処理要素とネットワークとの間で転送されるべきキューイングされたデータを記憶するための複数のインターフェースチャネルを更に備え、メモリ制御回路は、複数のインターフェースチャネルを監視することによって、要求されたデータについてネットワークを監視するように構成される。処理要素によって要求されたデータは、ネットワークを介して複数のインターフェースチャネルに返される。複数のインターフェースチャネルは、ネットワーク上で返されたが、処理要素によってまだ取り出されていないデータのための一時記憶を提供する。このようにして、例えば、異なる処理要素によって必要とされる後続のデータ項目のための空間を空けるために、ネットワークからデータを迅速に除去する必要がないので、ネットワークスループットを改善することができる。
【0017】
複数のインターフェースチャネルが提供される、いくつかの例示的な構成では、補助メモリ制御回路は、ストールされたデータを検出するためにネットワークを監視するとき、所定の期間の開始時に、複数のインターフェースチャネル内のキューイングされたデータを示す第1のキューデータを捕捉することと、所定の期間の終了時に、複数のインターフェースチャネル内のキューイングされたデータを示す第2のキューデータを捕捉することと、第1のキューデータが第2のキューデータと同じであるとき、キューイングされたデータがストールされたデータを含むと決定することと、を行うように構成される。いくつかの構成では、補助メモリ制御回路は、第1のキューデータ及び第2のキューデータの複数のセットを捕捉し、第1のキューデータ及び第2のキューデータの複数のセットのうちの対応するペアが、特定のインターフェースチャネル内のデータが所定の期間にわたって変化していないことを示したとき、複数のインターフェースチャネルのうちの特定のインターフェースチャネル内のキューイングされたデータがストールされたデータを含むと決定する。このようにして、補助メモリ回路は、補助メモリ制御回路がデータを取り出すチャネルの数を最小限に抑えながら、ネットワークストールの確率を低減することができる。
【0018】
複数のインターフェースチャネルは、記憶要素の任意のセットとして構成することができる。しかしながら、いくつかの例示的な構成では、複数のインターフェースチャネルの各々は、先入れ先出しバッファである。これは、低回路面積実装を提供する。
【0019】
複数のインターフェースチャネルは、共有された入力及び出力チャネルとして機能するように構成され得る。代替的に、いくつかの例示的な構成では、複数のインターフェースチャネルは、ネットワークからデータを受信するように構成された複数の入力チャネルと、ネットワークに出力されるデータをバッファリングするように構成された複数の出力チャネルとを備える。このようにして、補助メモリ制御回路は、入力チャネルのみを監視するように構成することができ、複数のチャネルのどのデータが取り出されたデータであり、どのデータが出力データであるかを監視する必要がなくなる。
【0020】
空間アーキテクチャは、単一チップ内の処理要素の任意のレイアウトであり得る。このようにして、処理要素の位置は、単一チップの記憶構造及び入力/出力構造の位置に基づいて調整することができる。いくつかの例示的な構成では、空間アーキテクチャは、多次元アレイを形成するように接続された複数の処理要素を備える。アレイに関連する次元の数は、特に定義されず、チップ上の構成要素の物理的配置に関連する次元の数によって制限されない。むしろ、多次元アレイは、処理要素同士の間の接続のレイアウトによって定義される。いくつかの例示的な構成では、空間アーキテクチャは、2次元アレイで接続された処理要素を備える。このような構成では、各処理要素は、要素Pi-1,j、P-i+1,j、P-i,j-1、及びP-i,j+1の間に接続された処理要素Pi,jを有する行及び列のシーケンスのトポロジカル等価物において接続される。
【0021】
いくつかの例示的な構成では、多次元アレイは、多次元トーラスレイアウトを形成するように接続される。多次元トーラスレイアウトは、サイズR×Sのアレイを配置することで達成され、その結果、処理要素Pi,j(1<i≦R;1<j≦S)は、要素Pi-1,j、Pi+1,j、Pi,j-1、及びPi,j+1の間に接続され、要素P1,j(1<j<S)は、要素PR,j、P2,j、P1,j-1、及びP1,j+1の間に接続され、PR,j(1<j<S)は、要素PR-1,j、P1,j、PR,j-1、及びPR,j+1の間に接続され、Pi,1-(1<i<R)は、要素Pi-1,1、Pi+1,1、Pi,S、及びPi,2の間に接続され、要素Pi,S(1<i<R)は、Pi-1,S、Pi+1,S、Pi,S-1、及びPi,1の間に接続され、P1,1は、PR,1、P2,1、P1,S、及びP1,2に接続され、P1,Sは、PR,S、P2,S、P1,S-1、及びP1,1に接続され、PR,1は、PR-1,1、P1,1、PR,S、及びPR,2に接続され、PR,Sは、PR-1,S、P1,S、PR,S-1、及びPR,1に接続される。多次元トーラスレイアウトは、処理要素がアレイの端に配置されず、ネットワーク帯域幅のより均等な分布をもたらすという利点を提供する。
【0022】
各処理要素は、異なるタイプのデータ要求に応答する。いくつかの例示的な構成では、データ転送要求は、別の処理要素から転送されるべきデータを指定する処理要素間データ転送要求、及びメインメモリ内のメモリ位置から転送されるべきデータを指定するメモリ要求のうちの1つである。いくつかの例示的な構成では、データ転送要求は、データがメインメモリに、又は複数の処理要素のうちの別の処理要素に転送されることを要求し得る。更に、いくつかの例示的な構成では、データ転送要求は、データ転送要求を行う処理要素、特定のインターフェースチャネル、データ要素の宛先がメモリ制御回路であるか処理回路であるか、データ転送要求が、複数の処理要素を指定するマルチキャストデータ転送要求であるか否か、及び転送されるデータの量のうちの少なくとも1つを指定する。
【0023】
複数の処理要素は、ネットワーク内の複数の経路のいずれかを介してグローバル記憶装置に接続されてもよい。しかしながら、いくつかの例示的な構成では、複数の処理要素は、共通インターフェースノードを介してグローバル記憶装置に接続される。インターフェースノードは、複数の処理要素からのデータ要求を順次順序付けて調停し、返されたデータをデータ処理要素に分配する。いくつかの例示的な構成では、データ処理装置は、複数の処理要素のうちの処理要素をサブグループに配置するように構成され、データ処理装置は、処理要素を含むサブグループにメモリ要求をルーティングするように構成されたマルチプレクサを更に備える。このアプローチは、処理要素によって要求されたデータが処理要素に近い位置で提供されることを保証する。代替構成では、マルチプレクサは、メモリ要求をルーティングするためのランダムサブグループを選択するように構成される。このアプローチは、メモリアクセスをネットワークにわたってより均一に分散させる。
【0024】
一般に、補助メモリ制御回路は、本明細書で説明する技術に基づいて、ストールされたデータを補助メモリバッファに記憶するように構成される。いくつかの例示的な構成では、データ転送要求は、返されるデータが特定の記憶位置に記憶される静的データであることを指定する。特定の記憶位置は、ローカル記憶回路内の特定の位置であり、特定のデータがプログラム動作に有利であり得る位置に記憶されることを保証するための柔軟性をプログラマに提供する。メモリ制御回路は、特定の記憶位置の指定に応答して、データを特定の記憶位置に記憶するように構成される。いくつかの例示的な構成では、補助メモリ制御回路は、ストールされたデータが静的データであることを検出することに応答して、ストールされたデータをネットワークから特定の記憶位置に転送するように構成される。このようにして、処理要素は、データがメモリ制御回路又は補助メモリ制御回路によって取り出されるかどうかにかかわらず、静的データが特定の記憶位置に記憶されることを確実にする。
【0025】
いくつかの例示的な構成では、本明細書で説明されるデータ処理装置の製造のためのコンピュータ可読コードを記憶する非一時的コンピュータ可読媒体が提供される。
【0026】
本明細書に記載の概念は、記載された概念を具現化する装置の製造のためのコンピュータ可読コードで具現化され得る。例えば、コンピュータ可読コードは、概念を具現化する装置を備える集積回路を製造するために、電子設計自動化(Electronic Design Automation、EDA)ステージを含む半導体設計及び製造プロセスの1つ以上のステージで使用することができる。上記のコンピュータ可読コードは、追加的又は代替的に、本明細書に記載の概念を具現化する装置の定義、モデリング、シミュレーション、検証及び/又は試験を可能にすることができる。
【0027】
例えば、本明細書に記載の概念を具現化する装置を製造するためのコンピュータ可読コードは、概念のハードウェア記述言語(Hardware Description Language、HDL)表現を定義するコードで具現化することができる。例えば、コードは、概念を具現化する装置を定義するための1つ以上の論理回路のレジスタ転送レベル(Register-Transfer-Level、RTL)抽象化を定義することができる。コードは、Verilog、SystemVerilog、Chisel、又はVHDL(Very High-Speed Integrated Circuit Hardware Description Language、超高速集積回路ハードウェア記述言語)における装置を具現化する1つ以上の論理回路のHDL表現、並びにFIRRTLなどの中間表現を定義することができる。コンピュータ可読コードは、SystemC及びSystemVerilogなどのシステムレベルモデリング言語又は概念のシミュレーション、機能的及び/若しくは形式的な検証、及び試験を可能にするためにコンピュータによって解釈され得る概念の他の行動表現を使用して概念を具現化する定義を提供することができる。
【0028】
追加的又は代替的に、コンピュータ可読コードは、1つ以上のネットリストのコンピュータ可読表現を具現化することができる。1つ以上のネットリストは、1つ以上の論理合成プロセスをRTL表現に適用することによって生成することができる。代替的又は追加的に、1つ以上の論理合成プロセスは、記載された概念を具現化するようにフィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)を構成するためにFPGAにロードされるビットストリームをコンピュータ可読コードから生成することができる。FPGAは、集積回路での製造前に概念の検証及び試験の目的で展開されてもよく、又はFPGAは製品に直接展開されてもよい。
【0029】
コンピュータ可読コードは、例えば、本発明を具現化する装置を製造するための半導体設計及び製造プロセスで使用されるRTL表現、ネットリスト表現、又は別のコンピュータ可読定義のうちの1つ以上の混合を含む、装置の製造のためのコード表現の混合を含むことができる。代替的又は追加的に、概念は、装置を製造するために半導体設計及び製造プロセスで使用されるコンピュータ可読定義と、いったん製造されると定義された装置によって実行される命令を定義するコンピュータ可読コードとの組合せで定義されてもよい。
【0030】
そのようなコンピュータ可読コードは、任意の既知の一時的なコンピュータ可読媒体(ネットワークを介したコードの有線又は無線送信など)、又は半導体、磁気ディスク、若しくは光ディスクなどの非一時的コンピュータ可読媒体に配置することができる。コンピュータ可読コードを使用して製造された集積回路は、中央処理装置、グラフィック処理装置、ニューラル処理装置、デジタル信号プロセッサ、又は概念を個別に若しくは集合的に具現化する他の構成要素のうちの1つ以上などの構成要素を備えることができる。
【0031】
ここで、特定の実施形態を、図面を参照して説明する。
【0032】
図1は、本技術の様々な例による、空間アーキテクチャとして配置されたデータ処理装置10を概略的に示す。空間アーキテクチャは、プログラム実行の最も時間のかかる部分を形成する計算を、時間ではなく空間で展開することによって、いくつかのアプリケーションを加速することができる。計算は、同時並行動作(concurrent operation)が可能な複数のハードウェアユニットを使用することによって「空間」内で展開される。チップ上に分散されている分離されたアプリケーションによって提供される同時実行機会を利用することに加えて、データ処理装置10などの空間アーキテクチャは、分散オンチップメモリも利用する。このようにして、各処理要素は、それに近接する1つ以上のメモリブロックに関連付けられる。その結果、空間アーキテクチャは、多くの従来のアーキテクチャの性能を妨げるフォンノイマンボトルネックを回避することができる。
【0033】
データ処理装置10は、インターフェースタイル(Interface Tile、IT)とも呼ばれ、マルチプレクサ(Multiplexer、X)を介してネットワークに接続されるインターフェースノードを介してキャッシュ階層又はメインメモリに接続される処理要素のアレイを備える。本明細書で説明される構成によるデータ処理装置10内の処理要素は、2つの異なるタイプの回路を備える。各処理要素は、演算タイル(Compute Tile、CT)とも呼ばれる処理回路と、メモリタイル(Memory Tile、MT)とも呼ばれるメモリ制御回路とを備える。CTの役割は、データ処理動作及び算術計算の大部分を実行することである。MTの役割は、ローカルに接続されたメモリ(ローカル記憶回路)へのデータアクセス、メモリのより離れた領域への/からのデータ転送、及び処理要素と他の処理要素との間の処理要素間メモリ転送を実行することである。
【0034】
いくつかの例示的な構成では、データ処理装置10の処理要素の各々は、各メモリ制御回路(MT)に接続されたローカル記憶回路を備え、各メモリ制御回路(MT)は、1つの処理回路(CT)への直接接続を有する。各MT-CTクラスタは、メモリ制御回路(MT)同士の間及び各メモリ制御回路(MT)とインターフェースノード(IT)との間でデータを転送するために使用されるネットワークオンチップに接続される。代替構成では、ローカル記憶回路が複数の処理要素同士の間に設けられ、複数のメモリ制御回路(MT)によってアクセス可能である。処理要素は、従来の処理要素であってもよい。代替的に、処理要素は、それぞれの1つ以上のトリガ条件が満たされたときに命令が実行されるトリガ処理要素であってもよい。
【0035】
図1に示されるデータ処理装置10の処理要素はそれぞれ、入力チャネル及び出力チャネルのセットを介して、スイッチと、2次元トーラストポロジレイアウトを形成するそれらのスイッチ同士の間のデータリンクとを備えるネットワークオンチップに接続される。データは、任意のアルゴリズムを使用して、ネットワークオンチップを迂回してルーティングされ得る。しかしながら、特に効率的なルーティングアルゴリズムは、トーラスレイアウトを考慮に入れるように修正されたxyルーティングアルゴリズムである。xyアルゴリズムは、y方向に沿ってルーティングされたデータがその後x方向に沿ってルーティングされることを禁止することによって、ネットワーク内のルーティングデッドロック(順方向進行を不可能にする、処理要素及び/又はネットワークリソース間の周期的依存)を防止する。xyアルゴリズムの次元順ルーティングにより、ネットワーク自体がデッドロックフリーになることが知られているが、処理要素とネットワークとの間の相互作用のためにデッドロックの可能性が依然として存在する。
【0036】
特に、処理要素がトリガされた処理要素である場合、以下のように処理要素-ネットワークインターフェースにおいてデッドロックが発生し得る可能性がある。メモリ制御回路(MT)は、複数のデータ要求をネットワークに発行し、複数のデータ要求の各々は、異なるインターフェースチャネルに対するものである。要求は、要求をメモリに送信するインターフェースノード(IT)にルーティングされる。その間に、処理要素の処理回路(CT)は、いくつかの他の処理を実行し、最初に要求されたデータのために指定されたインターフェースチャネル上の複数のデータ要求のうちの最初に要求されたデータ要求を待っているので、最終的に継続することができない。インターフェースノード(IT)は、メモリ要求に関連付けられたデータを受信し、それらをネットワーク上に順不同で送信する。その結果、最初に要求されたデータは、後で要求されたデータの後ろに「スタック」されてしまう。後で要求されるデータは、そのデータに関連付けられた対応するトリガ条件が満たされないので、ネットワークから抽出することができない。その結果、ストールされたデータがネットワーク内に蓄積され、処理装置10がストールする。
【0037】
これに対するいくつかの潜在的な解決策があり、各々がいくつかの課題を提起する。第1の例示的な解決策では、ネットワークと処理要素との間のインターフェースチャネルのバッファ容量が増加される。このアプローチは、デッドロックの開始を遅延させるが、特にインターフェースチャネルが先入れ先出しバッファを含む場合には、それを必ずしも回避しない。第2の例示的な解決策では、インターフェースノード(IT)は、要求の再順序付けを実行しないように修正される。しかしながら、これは、ネットワーク内で負荷分散を実行するインターフェースノードの能力を除去し、ネットワークのいくつかの部分内でより高いネットワーク輻輳をもたらし得るので、望ましくない。第3の例示的な解決策では、トリガされた処理要素は、ストールがないことを保証するために複数のインターフェースチャネルの各チャネルが周期的にチェックされるように、状態を周期的に切り替える。これは、ネットワークにかなりの複雑さを加え、不必要な遅延を加える。第4の例示的な解決策では、データ処理装置は、パケットがネットワークを迂回してルーティングされるときにパケットが互いを追い越すことを可能にする仮想回路を使用するように構成される。しかしながら、このアプローチは、ネットワーク設計を複雑にし、必要とされるバッファリングの量及びデータ処理装置の電力消費を著しく増加させる。第5の例示的な解決策では、処理要素は、インターフェースノード(IT)が送信を開始することができる前に準備完了を示すためにインターフェースノード(IT)と通信するように修正される。このアプローチは、追加の同期ステップを必要とし、データ転送を処理要素による計算と完全に重複させることができないので、性能を低下させる可能性がある。
【0038】
代替として、いくつかの構成では、複数のインターフェースチャネルのうちのいずれかにアクティビティがある場合、命令がトリガされることを可能にする「いずれか(either)」節が、トリガされた命令仕様に追加され得る。このシナリオは、2つのチャネルがチェックされる状況について図2に示されている。フローはステップS10で始まり、メモリ検査回路(MT)は、チャネルA又はチャネルB上にアクティビティがあるかどうかを決定する。チャネルA上にアクティビティがある場合、フローは、ステップS12に進み、メモリ制御回路はチャネルAからデータを取り出す。フローはステップS14に進み、全てのデータがチャネルAから取り出されたかどうかが決定される。次に、フローは、ステップS16に進み、全てのデータが読み出されたかどうかが決定される。「はい」の場合、フローはステップS24に進み、チャネルA及びBからのデータのローディングが完了したと決定される。一方、ステップS16において、全てのデータが読み出されていないと決定された場合、フローはステップS10に戻る。ステップS10において、チャネルB上にアクティビティがあると決定された場合、フローはステップS18に進み、メモリ制御回路がチャネルBからデータを取り出す。次に、フローはステップS20に進み、全てのデータがチャネルBから取り出されたかどうかが決定される。次に、フローはステップS22に進み、全てのデータが読み出されたかどうかが決定される。「はい」の場合、フローはステップS24に進み、チャネルA及びBからのデータのローディングが完了したと決定される。一方、ステップS22において、全てのデータが読み出されていないと決定された場合、フローはステップS10に戻る。このようにして、メモリ制御回路(MT)は、要求されたデータの項目に関して複数のチャネルを監視することができ、したがって、特定のチャネル上のデータに関するストールを回避することができる。しかしながら、このアプローチは、メモリ制御回路(MT)内の命令発行回路の複雑さを増大させる。この複雑さは、図2に示される「チェック」状態がバイナリチェックオプションでない場合、更に増大する。
【0039】
上記の解決策に関連する潜在的な欠点を克服するために、本発明者らは、空間アーキテクチャにおけるネットワークトラフィックに関連するデータが、空間アーキテクチャの典型的な作業負荷において「バースト性」になる傾向があるという観察を使用した。これは、いくつかの処理要素のインターフェースチャネル占有率が時間とともにどのように変化するかを示す図3に示されている。プロットは、8×8の処理要素の2次元アレイを備える空間アーキテクチャ内の座標(7,0)、(3,2)、及び(4,4)における処理要素のメモリ制御回路から取られたデータを示す。データは、GEMMベンチマークの実行からのものであり、バーストは、いくつかのデータセットがインターフェースノード(IT)からメモリ制御回路(MT)に転送される計算内のエポックの開始を表す。したがって、特定のピークを扱うことができないことはデッドロックにつながる可能性があるが、バーストに対処するためにネットワーク自体の中にかなりの量のバッファリングを単に追加することは、バッファが大部分の時間にわたって十分に利用されないことになるので、オーバープロビジョニングされた設計につながることになる。
【0040】
上記の解決策とは対照的に、図4は、本技術の様々な例によるデータ処理装置100の詳細を概略的に示す。データ処理装置100は、単一チップ上に空間的アーキテクチャで配置され、ネットワーク108を介して互いに接続された複数の処理要素102を含むように構成される。処理要素102(A)によって例示される各処理要素102は、処理動作を実行する処理回路114と、処理要素102(A)に関連付けられたデータ転送動作を実行し、要求されたデータに対するデータ転送要求をネットワーク108に発行するメモリ制御回路104とを備える。メモリ制御回路104はまた、要求されたデータについてネットワーク108を監視し、要求されたデータの検出に応答して、要求されたデータをネットワークから取り出すように構成される。データ処理装置100は、処理動作に関連付けられたデータを記憶するための複数のローカル記憶セクタ112(A)、122(B)及び112(C)を備えるローカル記憶回路110を更に備える。データ処理装置100は、処理要素102(A)に関連付けられたストールされたデータを検出するためにネットワーク108を監視し、ストールされたデータの検出に応答して、複数のローカル記憶セクタ112の中から動的に選択された補助記憶バッファにストールされたデータをネットワークから転送するように構成された補助メモリ制御回路106を更に備える。3つの処理要素102が図示されているが、空間アーキテクチャは任意の数の処理要素102を含むことができることが当業者には容易に明らかになるであろう。更に、ローカル記憶回路110は、任意の数のローカル記憶セクタ112を備えることができる。
【0041】
図5は、本技術の様々な例による処理要素の更なる詳細を概略的に示す。データ処理装置20は、単一チップ上に実装された空間アーキテクチャを含む。空間アーキテクチャは、複数の処理要素22(A)~22(I)を含み、各処理要素は、関連する処理要素を隣接するネットワークスイッチ又はルータに接続するためのネットワークスイッチ又はルータを含む。複数の処理要素の各々は、処理動作を実行するための処理回路26と、データを要求しネットワークからデータを取り出すためのメモリ制御回路24と、複数のローカル記憶セクタ34(A)~34(D)を含むローカル記憶装置と、ネットワークを監視して処理要素に関連付けられたストールされたデータを検出するための補助メモリ制御回路と、マルチプレクサ40及び(任意選択で)先入れ先出し(First-In-First-Out、FIFO)キュー52を介してネットワークに接続された入力チャネル42、並びにマルチプレクサ36及び(任意選択で)FIFOキュー52を介してネットワークに接続された出力チャネル38を含むインターフェースチャネルと、を備える。補助メモリ制御回路28は、要求されたデータのデータ要求タグとローカル記憶セクタ34内の対応する位置とを関連付ける補助メモリテーブルを記憶するための補助テーブル記憶装置30を備える。ローカル記憶回路は、複数のカウンタ32(A)~32(D)を更に備える。複数のカウンタ32の各々は、メモリ制御回路24による、対応するローカル記憶セクタ34への最近のアクセス数を示す。図示の例では、ローカル記憶回路は、4つのローカル記憶セクタ34(A)~34(D)を含む。カウンタ32(A)は、メモリ制御回路24によるローカル記憶セクタ34(A)への最近のアクセス数を示す。カウンタ32(B)は、メモリ制御回路24によるローカル記憶セクタ34(B)への最近のアクセス数を示す。カウンタ32(C)は、メモリ制御回路24によるローカル記憶セクタ34(C)への最近のアクセス数を示す。カウンタ32(D)は、メモリ制御回路24によるローカル記憶セクタ34(D)への最近のアクセス数を示す。
【0042】
処理要素22(ネットワークスイッチ又はルータを含む)は、2次元アレイを形成するように配置され、いくつかの構成では、2次元トーラスレイアウトで配置され得る。処理要素22は、マルチプレクサ46を介してインターフェースノード56に接続される。インターフェースノード56は、要求キュー44と転送再順序付けユニット48とを含む。メモリ制御回路24からのデータの要求は、出力チャネル38を介して、マルチプレクサ36、FIFO54、ネットワーク、マルチプレクサ46を通り、インターフェースノード56に出力される。要求は、要求キュー44にキューイングされ、インターフェースノード56から記憶装置50に送信される前に、転送再順序付けユニット48によって再順序付けされ得る。記憶装置50からのデータは、ネットワークへの分配のためにインターフェースノード56を介してマルチプレクサ46に返される。特定の処理要素に対して要求されたデータは、データタグに基づいて識別され、FIFO52及びマルチプレクサ40を介して入力チャネル42のうちの1つに転送される。
【0043】
メモリ制御回路24は、入力チャネル42を監視し、要求されたデータを検出し、適切なトリガ条件が満たされたことに応答して、入力チャネル42からデータを転送する。補助メモリ制御回路28は、ストールされたデータについて入力チャネル42を監視する。いくつかの構成では、補助メモリ制御回路28は、異なる時間における各入力チャネル42内のデータのスナップショットを比較して、入力チャネル42がストールされたデータを含むかどうかを決定する。他の構成では、補助メモリ制御回路28は、入力チャネル42から取り出されたデータに応答してメモリ制御回路24によって修正されるデキュー信号を監視する。ストールされたデータが検出されると、補助メモリ制御回路28は入力チャネルからストールされたデータを取り出し、デキュー信号をアサートし、データを補助記憶バッファに記憶する。補助記憶バッファは、例えば、メモリ制御回路によって頻繁にアクセスされないために、補助メモリ制御回路30によって選択される1つ以上のローカル記憶セクタ34である。補助メモリ制御回路28が入力チャネル42から補助記憶バッファにデータを取り出すとき、補助メモリ制御回路28は、補助テーブル記憶装置30に記憶された補助メモリテーブルにエントリを追加して、ローカル記憶セクタ34内の位置を、要求されたデータに対応するデータ要求タグに関連付ける。したがって、補助メモリ制御回路28は、インターフェースノード56によって順不同で提供され得る入力チャネル42上の大量のデータ、例えば、図3で観察されるデータ「バースト」を処理するためのコンパクトな解決策を提供する。
【0044】
要求されたデータについて入力チャネル42を監視するとき、メモリ制御回路24は、信号を補助メモリ制御回路28に送信して、補助テーブル記憶装置30に記憶された補助メモリテーブル内でルックアップを実行し、要求されたデータが補助記憶バッファに転送されたかどうかを決定する。補助メモリテーブル内のルックアップがヒットした場合、ローカル記憶セクタ34内の要求されたデータに対応する位置がメモリ制御回路24に返され、メモリ制御回路24は、ローカル記憶セクタ34内の位置からデータを取り出すことができる。補助メモリテーブル内のルックアップがミスした場合、ミスは、補助メモリ制御回路28によってメモリ制御回路24に示され、メモリ制御回路24は、要求されたデータについて入力チャネル42を監視し続ける。
【0045】
補助メモリ制御回路28は、複数のカウンタ32に基づいて、ローカル記憶装置のローカル記憶セクタ34を決定する。カウンタ32は、メモリ制御回路24による最近のアクセス数を示す。いくつかの構成では、カウンタ32は、所定の時間後にデフォルト値(例えば、0)にリセットされる。ローカル記憶セクタ34がメモリ制御回路24によってアクセスされるとき、ローカル記憶セクタに対応するカウンタ32は、アクセスを示すように変更される(例えば、カウンタが増分される)。このようにして、各カウンタ32は、メモリ制御回路24による、対応するローカル記憶セクタ34へのアクセス数を表す。したがって、補助メモリ制御回路28は、複数のカウンタ32が最後にリセットされてから、複数のローカル記憶セクタ34のうちのどの記憶セクタ34が最も使用されていないかを決定することができる。いくつかの構成では、メモリ制御回路は、カウンタ値32の現在のセットに基づいて補助記憶バッファの次の位置を決定し、次いでカウンタ値32をリセット(又は減分)するように構成される。代替構成では、カウンタ32は、上位飽和カウンタ及び下位飽和カウンタであり、記憶回路は、アクセスされたローカル記憶セクタ34に関連するカウンタ32を増分し、異なるローカル記憶セクタ34に関連する全てのカウンタを減分する。このようにして、最も最近アクセスされた記憶セクタのグローバルピクチャを維持することができる。
【0046】
メモリ制御回路24及び補助メモリ制御回路28は各々、メモリ制御回路によって発行されるデータ要求の特定の要件を尊重するように構成される。特に、メモリ制御回路24及び補助メモリ制御回路28は、要求されたデータがローカル記憶回路の特定の位置に記憶されるべきであることを要求が示す場合、ローカル記憶回路の特定の位置が補助記憶バッファとして現在使用されているローカル記憶セクタ34内にあるかどうかとは無関係に、要求されたデータをローカル記憶回路の特定の位置に取り出すように構成される。ローカル記憶回路は更に、メモリ制御回路24及び補助メモリ制御回路28からの要求を調停し、競合がある場合に補助メモリ制御回路28からのアクセスを優先するように構成される。
【0047】
図6は、本技術の様々な例に従ってメモリ制御回路24によって行われる一連のステップを概略的に示す。ステップS50において、メモリ制御回路24は、データ転送要求をネットワークに発行する。データ転送要求は、記憶回路50又は異なる処理要素22からのデータの要求であってもよい。次に、フローはステップS52に進み、メモリ制御回路24は、要求されたデータについてネットワークを監視する。メモリ制御回路24は、データ転送要求を発行することに応答して、又はデータ転送要求に関連付けられたトリガ条件が満たされることに応答して、この監視を実行することができる。次に、フローはステップS54に進み、要求されたデータが入力チャネル42上で検出されたかどうかが決定される。データが検出されない場合、フローはステップS52に戻る。あるいは、データが入力チャネル42上で検出された場合、フローはステップS56に進み、データがネットワークから取り出されるように要求される。
【0048】
図7は、本技術の様々な例に従って補助メモリ制御回路28によって行われる一連のステップを概略的に示す。フローはステップS60で開始し、補助メモリ制御回路28がネットワーク(入力チャネル42)を監視して、ストールされたデータを検出する。次に、フローはステップS62に進み、ストールされたデータが検出されたかどうかが決定される。「いいえ」の場合、フローはステップS60に戻る。あるいは、ステップS62において、ストールされたデータがネットワーク(入力チャネル42)において検出されたと決定された場合、フローはステップS64に進み、補助記憶バッファが、各記憶セクタの使用メトリックに基づいて(例えば、カウンタ32を使用して)複数のローカル記憶セクタ34から動的に選択される。次に、フローはステップS66に進み、ストールされたデータがネットワーク(入力チャネル42)から補助記憶バッファに転送される。
【0049】
図8は、本技術の様々な例による、ストールされたデータを検出するために補助メモリ制御回路28によって行われるステップの更なる詳細を概略的に示す。フローはステップS70で始まり、補助メモリ制御回路28は、入力チャネル42に一時的に記憶されたデータを示す第1のキューデータを捕捉する。第1のキューデータは、入力チャネル42に記憶された全てのデータを示すことができる。代替的に、第1のキューデータは、入力チャネル42の各々の先頭のデータのみを表してもよい。第1のキューデータは、要求されたデータのデータタグ及び任意の属性を示すことができる。次にフローはステップS72に進み、補助メモリ制御回路28は所定の期間待機する。次に、フローはステップS74に進み、補助メモリ制御回路28は、入力チャネル42に一時的に記憶されたデータを示す第2のキューデータを捕捉する。第2のキューデータは、入力チャネル42に記憶された全てのデータを示すことができる。あるいは、第2のキューデータは、入力チャネル42の各々の先頭のデータのみを表してもよい。第2のキューデータは、要求されたデータのデータタグ及び任意の属性を示すことができる。次に、フローはステップS76に進み、第1のキューデータが第2のキューデータに等しいかどうかが決定される。この決定は、第1のキューデータ内に存在するデータが全てキュー内に依然として存在するかどうか、すなわちキューイングされたデータがストールされたデータである可能性があるかどうかを決定することを伴う。第1のキューデータの全てが第2のキューデータ内に存在しない場合、データ項目が所定の期間中に入力チャネル42から除去されたと決定され、フローはステップS84に進み、第1のキューデータが第2のキューデータに対応するように修正され、フローはステップS72に戻る。あるいは、ステップS76において、第1のキューデータ及び第2のキューデータが、入力チャネル42にストールされたデータが存在することを示すと決定された場合、フローはステップS78に進む。ステップS78で、第1のキューデータが、ローカル記憶装置の特定の領域を指定する要求されたデータ項目を含むかどうかが決定される。「はい」の場合、フローはステップS80に進み、第1のキューデータによって示されるデータが、入力チャネル42から第1のキューデータで指定されたローカル記憶セクタ34に転送(取り出)される。次いで、フローはステップS82に進む。あるいは、ステップS78において、第1のキューデータがローカル記憶装置の特定の領域を指定しないと決定された場合、フローはステップS86に進み、ローカル記憶セクタ34に関連付けられた最低カウンタ値32に基づいて、補助記憶バッファとして使用するためにローカル記憶セクタ34が選択される。次に、フローはステップS88に進み、最初にキューイングされたデータが補助記憶バッファに転送される。次にフローはステップS82に進み、補助テーブル記憶装置30に記憶された補助メモリテーブルに1つ以上のエントリが作成される。次いで、フローはステップS70に戻る。
【0050】
図9は、本技術の様々な例による、データ転送要求に応答して補助メモリ制御回路28によって行われる一連のステップを概略的に示す。フローはステップS90で始まり、メモリ制御回路は、要求されたデータが入力チャネルに存在するかどうかを決定するために、入力チャネル42を監視する要求を発行する。補助メモリ制御回路28は、この要求を傍受し、ステップS92において、補助メモリテーブルのルックアップを実行する。次に、フローはステップS94に進み、ルックアップが補助メモリテーブル内でヒットするかどうかが決定される。ルックアップがヒットしない場合、フローはステップS100に進み、メモリ制御回路は、要求されたデータについて入力チャネル42を監視する。あるいは、ステップS94において、ルックアップが補助メモリテーブル内でヒットしたと決定された場合、フローはステップS96に進み、監視されたデータに関連付けられた位置がメモリ制御回路24に返される。次に、フローはステップS98に進み、メモリ制御回路24からの入力チャネル42を監視する要求が抑制される。次いで、フローはステップS90に戻る。
【0051】
図10は、本技術の様々な例による、ローカル記憶回路によって行われる一連のステップを概略的に示す。フローはステップS110で始まり、カウンタ32の各々が0に設定される。次に、フローはステップS112に進み、ローカル記憶セクタがアクセスされたかどうかが決定される。「いいえ」の場合、フローはステップS112に留まる。あるいは、ステップS112において、ローカル記憶セクタ、例えばローカル記憶セクタS34(B)がアクセスされたと決定された場合、フローはステップS114に進み、アクセスされたローカル記憶セクタに関連付けられたカウンタ、この場合はカウンタ32(B)が第1の量だけ増分される。次にフローはステップS116に進み、アクセスされたローカル記憶セクタ34に関連付けられていないカウンタ32が第2の量だけ減分される。この例の場合、カウンタ32(A)、32(C)及び32(D)は、第2の量だけ減分される。次いで、フローはステップS112に戻る。このようにして、ローカル記憶回路のカウンタ32は、メモリ制御回路24による最近のアクセス期間中にどのローカル記憶セクタ34が最も頻繁にアクセスされたかの指示を表す。
【0052】
要約すると、データ処理装置及び方法が提供される。データ処理装置は、空間アーキテクチャを形成するために単一チップ上に配置されたネットワークを介して接続された複数の処理要素を備える。各処理要素は、処理動作を実行する処理回路と、データ転送動作を実行し、要求されたデータに対するデータ転送要求をネットワークに発行するメモリ制御回路とを備える。メモリ制御回路は、ネットワークを監視して、要求されたデータをネットワークから取り出すように構成される。各処理要素は更に、処理動作に関連するデータを記憶するための複数のローカル記憶セクタを含むローカル記憶回路と、ネットワークを監視してストールされたデータを検出するための補助メモリ制御回路とを備える。補助メモリ制御回路は、ストールされたデータをネットワークから、複数のローカル記憶セクタの中から動的に選択された補助記憶バッファに転送するように構成される。
【0053】
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実施することが可能である構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの配置又は相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有し得るか、又はプロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされ得る。「ように構成された」は、装置要素が、定義された動作を提供するために何らかの変更がなされる必要があることを意味しない。
【0054】
本明細書では例示的な実施形態について添付の図面を参照して詳細に説明してきたが、理解されるように、本発明はそれらと寸分違わない実施形態に制限されるのではなく、添付の特許請求の範囲に定める本発明の範囲及び趣旨から逸脱することなく、当業者は様々な変更、追加、及び修正を行うことができる。例えば、従属請求項の特徴の様々な組合せは、本発明の範囲から逸脱することなく、独立請求項の特徴でなされ得る。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
【国際調査報告】