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

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

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

特表2024-543087ベクトル処理動作を制御するための技法
<>
  • 特表-ベクトル処理動作を制御するための技法 図1
  • 特表-ベクトル処理動作を制御するための技法 図2
  • 特表-ベクトル処理動作を制御するための技法 図3
  • 特表-ベクトル処理動作を制御するための技法 図4
  • 特表-ベクトル処理動作を制御するための技法 図5
  • 特表-ベクトル処理動作を制御するための技法 図6
  • 特表-ベクトル処理動作を制御するための技法 図7a
  • 特表-ベクトル処理動作を制御するための技法 図7b
  • 特表-ベクトル処理動作を制御するための技法 図8
  • 特表-ベクトル処理動作を制御するための技法 図9
  • 特表-ベクトル処理動作を制御するための技法 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-19
(54)【発明の名称】ベクトル処理動作を制御するための技法
(51)【国際特許分類】
   G06F 9/38 20180101AFI20241112BHJP
   G06F 9/30 20180101ALI20241112BHJP
【FI】
G06F9/38 310G
G06F9/30 310Z
G06F9/38 370A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024529451
(86)(22)【出願日】2022-10-18
(85)【翻訳文提出日】2024-06-06
(86)【国際出願番号】 GB2022052649
(87)【国際公開番号】W WO2023094789
(87)【国際公開日】2023-06-01
(31)【優先権主張番号】2117039.4
(32)【優先日】2021-11-25
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VERILOG
(71)【出願人】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】エヨール、ムボウ
(72)【発明者】
【氏名】ケネディー、マイケル アレキサンダー
(72)【発明者】
【氏名】カブリエリ、ジャコモ
【テーマコード(参考)】
5B013
5B033
【Fターム(参考)】
5B013AA14
5B013DD01
5B033AA03
5B033BA00
(57)【要約】
デコーダ回路を備える処理装置が提供される。デコーダ回路は、命令に応答して制御信号を生成するように構成されている。処理装置は、複数の処理レーンを備える処理回路を更に備える。処理回路は、制御信号に応答して、複数の処理レーンのうち、その処理レーンのための処理が有効であることをレーンごとのマスクが示す各処理レーンにおいてベクトル処理動作を実施するように構成されている。処理装置は、複数の処理レーンにおいて実施される複数の命令の各命令について複数の処理レーンの各処理レーンを監視し、処理レーンの処理状態が1つ以上の所定条件を満たすことに応答して、複数の処理レーンのうちの処理レーンについてレーンごとのマスクを修正する制御回路を更に備える。
【特許請求の範囲】
【請求項1】
処理装置であって、
命令に応答して、制御信号を生成するように構成されたデコーダ回路と、
複数の処理レーンを備える処理回路であって、前記処理回路は、前記制御信号に応答して、前記複数の処理レーンのうち、その処理レーンのための処理が有効であることをレーンごとのマスクが示す各処理レーンにおいてベクトル処理動作を実施するように構成されている、処理回路と、
前記複数の処理レーンにおいて実施される複数の命令の各命令について前記複数の処理レーンの各処理レーンを監視し、前記処理レーンの処理状態が1つ以上の所定条件を満たすことに応答して、前記複数の処理レーンのうちの処理レーンについて前記レーンごとのマスクを修正する制御回路と、を備える、処理装置。
【請求項2】
前記命令は、トリガされた命令であり、
前記処理装置は、複数の取り出された命令を処理し、前記処理回路の実行状態が前記複数の取り出された命令のうちの1つに関連付けられたトリガ条件を満たすことに応答して、前記トリガされた命令を生成するフロントエンド回路を備えるトリガされた処理装置である、請求項1に記載の処理装置。
【請求項3】
前記フロントエンド回路は、前記複数の取り出された命令のうちの2つ以上の取り出された命令が所与の時間においてトリガ条件を満たすという判定に応答して、前記2つ以上の取り出された命令の各々に関連付けられた有効である処理レーンの数に基づいて、前記2つ以上の取り出された命令の優先順位を判定するように構成されている、請求項2に記載の処理装置。
【請求項4】
前記フロントエンド回路は、前記2つ以上の取り出された命令の前記トリガ条件が満たされている時間の長さに基づいて、前記優先順位を判定するように構成されている、請求項3に記載の処理装置。
【請求項5】
前記処理装置は、空間アーキテクチャを形成するように配置された複数の処理要素を備え、
前記デコーダ回路、前記制御回路、及び前記処理回路は、前記複数の処理要素のうちの1つの処理要素に配置されている、請求項1~4のいずれか一項に記載の処理装置。
【請求項6】
前記複数の処理要素は、二次元トーラスとして配置された二次元ネットワークを介して接続される、請求項5に記載の処理装置。
【請求項7】
前記デコーダ回路は、新しい条件を指定する更新条件命令に応答して、更新条件制御信号を生成し、
前記処理回路は、前記更新条件制御信号に応答して、前記新しい条件を前記1つ以上の所定条件のうちの1つとして設定するように構成されている、請求項1~6のいずれか一項に記載の処理装置。
【請求項8】
前記制御回路は、エネルギー消費目標を満たすために、前記レーンごとのマスクを修正するように構成されている、請求項1~7のいずれか一項に記載の処理装置。
【請求項9】
前記1つ以上の所定条件は、飽和条件を含み、前記制御回路は、前記処理レーン内の値が飽和していることを前記処理レーンの前記処理状態が示すことに応答して、前記レーンごとのマスクを修正するように構成されている、請求項1~8のいずれか一項に記載の処理装置。
【請求項10】
前記1つ以上の所定条件は、否定条件を含み、前記制御回路は、前記処理レーン内の値が否定であることを前記処理レーンの前記処理状態が示すことに応答して、前記レーンごとのマスクを修正するように構成されている、請求項1~9のいずれか一項に記載の処理装置。
【請求項11】
前記1つ以上の所定条件は、0除算条件を含み、前記制御回路は、前記処理レーン内の値が0除算であることを前記処理レーンの前記処理状態が示すことに応答して、前記レーンごとのマスクを修正するように構成されている、請求項1~10のいずれか一項に記載の処理装置。
【請求項12】
前記1つ以上の所定条件は、数を指定する数値条件を含み、前記制御回路は、前記処理レーン内の値が前記数に等しいことを前記処理レーンの前記処理状態が示すことに応答して、前記レーンごとのマスクを修正するように構成されている、請求項1~11のいずれか一項に記載の処理装置。
【請求項13】
データ処理動作に関連付けられたデータを受信するように構成された複数のデータ入力チャネルを更に備え、
前記1つ以上の所定条件は、前記複数のデータ入力チャネルのうちの1つのデータ入力チャネルを指定するデータ条件を含み、前記制御回路は、前記処理レーンに関連付けられた前記入力チャネル内のデータが無効としてマークされていることを前記処理レーンの前記処理状態が示すことに応答して、前記レーンごとのマスクを修正するように構成されている、請求項1~12のいずれか一項に記載の処理装置。
【請求項14】
前記デコード回路は、新しいレーンごとのマスクを指定するマスク設定命令に応答して、マスク設定制御信号を生成し、
前記処理回路は、前記マスク設定制御信号に応答して、前記新しいレーンごとのマスクを前記レーンごとのマスクとして設定するように構成されている、請求項1~13のいずれか一項に記載の処理装置。
【請求項15】
前記デコード回路は、リセット条件命令に応答して、リセット条件制御信号を生成し、
前記処理回路は、前記リセット条件制御信号に応答して、前記所定条件をデフォルトの所定条件に設定するように構成されている、請求項1~14のいずれか一項に記載の処理装置。
【請求項16】
前記レーンごとのマスクは、単一の暗黙的述語であり、前記処理回路は、前記複数の処理レーンにおいて処理を実施する前記複数の命令のうちの全ての命令について前記暗黙的述語を参照するように構成されている、請求項1~15のいずれか一項に記載の処理装置。
【請求項17】
前記レーンごとのマスクは、複数の暗黙的述語のうちの1つであり、前記処理回路は、前記命令のタイプに応じて前記複数の暗黙的述語のうちの1つを参照するように構成されている、請求項1~16のいずれか一項に記載の処理装置。
【請求項18】
複数の処理レーンを備える処理回路を備える処理装置を動作させる方法であって、
命令に応答して、制御信号を生成することと、
前記制御信号に応答して、前記複数の処理レーンのうち、その処理レーンのための処理が有効であることをレーンごとのマスクが示す各処理レーンにおいて、前記処理回路を使用してベクトル処理動作を実施することと、
前記複数の処理レーンにおいて実施される複数の命令の各命令について前記複数の処理レーンの各処理レーンを監視し、前記処理レーンの処理状態が1つ以上の所定条件を満たすことに応答して、前記複数の処理レーンのうちの処理レーンについて前記レーンごとのマスクを修正することと、を含む、方法。
【請求項19】
処理装置の製造のためのコンピュータ可読コードを記憶するための非一時的コンピュータ可読媒体であって、
命令に応答して、制御信号を生成するように構成されたデコーダ回路と、
複数の処理レーンを備える処理回路であって、前記処理回路は、前記制御信号に応答して、前記複数の処理レーンのうち、その処理レーンのための処理が有効であることをレーンごとのマスクが示す各処理レーンにおいてベクトル処理動作を実施する、処理回路と、
前記複数の処理レーンにおいて実施される複数の命令の各命令について前記複数の処理レーンの各処理レーンを監視し、前記処理レーンの処理状態が1つ以上の所定条件を満たすことに応答して、前記複数の処理レーンのうちの処理レーンについて前記レーンごとのマスクを修正する制御回路と、を備える、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本技法は、処理装置、処理装置を動作させる方法、及び処理装置の製造のためのコンピュータ可読コードを記憶する非一時的コンピュータ可読媒体を提供する。
【背景技術】
【0002】
いくつかのデータ処理装置は、ベクトル処理動作が実施されることを可能にするために、複数の処理レーンを備える。ベクトル処理動作を利用するいくつかのワークフローでは、複数の処理レーンのサブセットのみにおいてベクトル処理動作を実施することが望ましい場合がある。
【発明の概要】
【0003】
いくつかの構成では、処理装置が提供され、この処理装置は、
命令に応答して、制御信号を生成するように構成されたデコーダ回路と、
複数の処理レーンを備える処理回路であって、処理回路は、制御信号に応答して、複数の処理レーンのうち、その処理レーンのための処理が有効であることをレーンごとのマスクが示す各処理レーンにおいてベクトル処理動作を実施するように構成されている、処理回路と、
複数の処理レーンにおいて実施される複数の命令の各命令について複数の処理レーンの各処理レーンを監視し、処理レーンの処理状態が1つ以上の所定条件を満たすことに応答して、複数の処理レーンのうちの処理レーンについてレーンごとのマスクを修正する制御回路と、を備える。
【0004】
いくつかの構成では、複数の処理レーンを備える処理回路を備える処理装置を動作させる方法が提供され、この方法は、
命令に応答して、制御信号を生成することと、
制御信号に応答して、複数の処理レーンのうち、その処理レーンのための処理が有効であることをレーンごとのマスクが示す各処理レーンにおいて、処理回路を使用してベクトル処理動作を実施することと、
複数の処理レーンにおいて実施される複数の命令の各命令について複数の処理レーンの各処理レーンを監視し、処理レーンの処理状態が1つ以上の所定条件を満たすことに応答して、複数の処理レーンのうちの処理レーンについてレーンごとのマスクを修正することと、を含む。
【0005】
いくつかの構成では、処理装置の製造のためのコンピュータ可読コードを記憶する非一時的コンピュータ可読媒体が提供され、この処理装置は、
命令に応答して、制御信号を生成するように構成されたデコーダ回路と、
複数の処理レーンを備える処理回路であって、処理回路は、制御信号に応答して、複数の処理レーンのうち、その処理レーンのための処理が有効であることをレーンごとのマスクが示す各処理レーンにおいてベクトル処理動作を実施するように構成されている、処理回路と、
複数の処理レーンにおいて実施される複数の命令の各命令について複数の処理レーンの各処理レーンを監視し、処理レーンの処理状態が1つ以上の所定条件を満たすことに応答して、複数の処理レーンのうちの処理レーンについてレーンごとのマスクを修正する制御回路と、を備える、非一時的コンピュータ可読媒体。
【図面の簡単な説明】
【0006】
本技法は、あくまで一例として、添付図面に示されるそれらの構成を参照して更に説明される。
図1】本技法の様々な構成による処理装置を、概略的に示す。
図2】本技法の様々な構成による処理装置を、概略的に示す。
図3】本技法の様々な構成による処理装置を、概略的に示す。
図4】本技法の様々な構成による処理装置の制御回路の詳細を、概略的に示す。
図5】本技法の様々な構成による処理要素を有する空間アーキテクチャを、概略的に示す。
図6】本技法の様々な構成によるトリガされた処理要素を、概略的に示す。
図7a】本技法の様々な構成による処理ステップのシーケンスを、概略的に示す。
図7b】本技法の様々な構成による処理ステップのシーケンスを、概略的に示す。
図8】本技法の様々な構成に従って行われるステップのシーケンスを概略的に示す。
図9】本技法の様々な構成に従って行われるステップのシーケンスを概略的に示す。
図10】本技法の様々な構成による処理装置の製造を、概略的に示す。
【発明を実施するための形態】
【0007】
少なくともいくつかの構成は、デコーダ回路を備える処理装置を提供する。デコーダ回路は、命令に応答して制御信号を生成するように構成されている。処理装置は、複数の処理レーンを備える処理回路を更に備える。処理回路は、制御信号に応答して、複数の処理レーンの、その処理レーンのための処理が有効であることをレーンごとのマスクが示す各処理レーンにおいてベクトル処理動作を実施するように構成されている。処理装置は、複数の処理レーンにおいて実施される複数の命令の各命令について複数の処理レーンの各処理レーンを監視し、処理レーンの処理状態が1つ以上の所定条件を満たすことに応答して、複数の処理レーンのうちの処理レーンについてレーンごとのマスクを修正する制御回路を更に備える。
【0008】
いくつかの構成では、処理回路、デコーダ回路、及び制御回路は各々、別個の(個別の)機能回路として提供される。しかしながら、いくつかの構成では、処理回路、デコーダ回路、及び制御回路のうちの2つ以上が、2つ以上の回路として機能するように配置された回路の同じブロックとして提供される。デコーダ回路は、命令セットアーキテクチャを形成する特定の命令セットを解釈するために提供される。命令セットアーキテクチャは、プログラマが処理回路を制御することを可能にするためにプログラマに利用可能な完全な命令セットである。デコーダ回路は、命令セットアーキテクチャの各命令を認識し、その命令に応答して処理回路に特定の動作を実施させるために必要な制御信号を生成するために提供される。処理装置は、ベクトル処理動作を実施することを可能にするために複数の処理レーンを備える。通常、そのような処理装置では、ベクトル処理レジスタ内に提供される異なるデータを使用して、処理レーンの各々において同じ動作が実施される。このようにして、処理装置の総スループットが増加する。いくつかのワークフローでは、処理レーンの各々において処理を実施することが望ましいことがある。しかしながら、他のワークフローでは、レーンごとベースでどの処理レーンが処理動作を実施するかを制御することが望ましいことがある。言い換えれば、複数の処理レーンのうちのどの処理レーンが特定の動作を実施し、複数の処理レーンのうちのどの処理レーンが特定の動作を実施しないかを制御することが望ましいことがある。
【0009】
動作のレーンごとの制御は、例えば、レーンごとのマスクを設定するために追加の動作を追加し、そのレーンごとのマスクを追加の入力として、処理が実施されるべきであることをマスクが示す複数の処理レーンのうちの処理レーンにおいてのみその動作を実施することになる具体的に設計された命令に明示的に提供することによって実施され得る。本技法の発明者らは、そのような制御が必要とされるたびに明示的なレーンごとのマスクを設定及び提供することが必ずしも望ましいとは限らないことを認識した。なぜなら、そのような手法は、性能の低下をもたらす著しい制御オーバーヘッドを追加する場合があるからである。
【0010】
代わりに、本技法は、複数の処理レーンにおいて実施される複数の命令の各々について複数の処理レーンの各処理レーンを監視する制御回路を提供する。言い換えれば、制御回路は、少なくとも複数(2つ以上)の命令の持続時間の間、処理レーンを継続的に監視している。制御回路は、処理レーンを監視して、その処理レーンの処理状態が1つ以上の所定条件を満たすかどうかを判定するように配置されている。言い換えれば、各個々の処理レーンについて、制御回路は、処理レーンの現在の処理状態が1つ以上の所定条件を満たすかどうかに基づいて、複数の命令の各命令についてそのレーン内の処理が実施されるべきかどうかを判定する。このようにして、処理装置は、各処理レーンが1つ以上の所定条件を満たすときにその処理レーンを無効にし、複数の処理レーンのうちの残りのレーンにおいてのみ処理動作を実施し続けるように配置され得る。有利なことに、制御回路は、処理回路によって処理される各命令に対してレーンごとのマスクを明示的に設定及び提供する必要をなくし、したがって、そのような技法に関連付けられた制御オーバーヘッドが低減される。
【0011】
本技法が適用される処理装置のタイプは特に限定されない。いくつかの構成では、処理装置は、プログラムカウンタ順序で命令を処理するインオーダ処理装置である。他の構成では、処理装置は、プログラマ又はコンパイラによって定義された元のプログラムカウンタ順序で処理動作が提供されるアウトオブオーダ処理装置である。しかしながら、アウトオブオーダ処理装置は、処理命令に関連付けられたオペランドのランタイム可用性に基づいて、元のプログラムカウンタ順序から逸脱する可能性がある。いくつかの構成では、命令は、トリガされた命令であり、処理装置は、複数の取り出された命令を処理し、処理回路の実行状態が取り出された命令のうちの1つに関連付けられたトリガ条件を満たすことに応答して、トリガされた命令を生成するフロントエンド回路を備えるトリガされた処理装置である。このような処理装置では、プログラムカウンタの概念はない。代わりに、各命令は、実行状態がその命令に関連付けられたトリガ条件を満たすようにプロセッサの実行状態を設定する先行命令に応答してトリガされる。言い換えれば、所定のプログラム順序(アウトオブオーダ処理装置の場合、ランタイム時に変化し得る)を有するのではなく、トリガされた処理装置の命令の実行順序は、ランタイムまで判定されない。トリガされた処理装置と各処理レーンを監視する制御回路との組み合わせは、特に柔軟な処理装置を提供し、命令が処理される順序及び処理動作を実施するレーンが、処理回路の処理状態及び処理回路の実行状態に応答してランタイムにおいて判定される。
【0012】
いくつかの構成では、フロントエンド回路は、複数の取り出された命令のうちの2つ以上の取り出された命令が所与の時間においてトリガ条件を満たすという判定に応答して、2つ以上の取り出された命令の各々に関連付けられた有効である処理レーンの数に基づいて、2つ以上の取り出された命令の優先順位を判定するように構成されている。トリガされた処理装置は、命令の所定の実行順序を有さないので、同じ実行状態に応答して、複数の命令がトリガされる可能性がある。そのような状況では、トリガされた処理装置は、複数のトリガされた命令の各々について有効である処理レーンの数に基づいて、複数のトリガされた命令についての優先順位を判定するように構成されている。例えば、先行する命令の完了に応答して、トリガされた処理装置の実行状態は、2つの命令が実行の準備ができていることを示してもよい。しかしながら、一方のトリガされた命令に関連付けられた処理状態は、処理レーンのサブセットのみが利用されることを示してもよく、他方のトリガされた命令に関連付けられた処理状態は、全ての処理レーンが利用されることを示してもよい。フロントエンド回路は、この情報を使用して、命令に関連付けられた優先順位を判定するように構成されている。いくつかの構成では、フロントエンド回路は、最も少ないレーンを最初に利用するトリガされた動作を優先するように構成されている。この手法は、トリガされた動作の結果が他の処理動作によって利用されるレーンの数を低減する状況に対して、全体的な電力消費の低減をもたらすことができる。いくつかの代替構成では、フロントエンド回路は、処理レーンの有効/無効を最小限に抑えるために必要とされるレーンごとのマスクへの変更が最も少ない処理動作を優先する。他の代替構成では、フロントエンド回路は、チャネルの最大利用を提供するために、複数の処理レーンのうちのより多くのレーンが有効であることを実行状態が示すトリガされた命令を優先する。
【0013】
トリガされた動作が実施される順序を判定するための処理状態の使用に加えて、いくつかの構成では、フロントエンド回路は、2つ以上の取り出された命令のトリガ条件が満たされている時間の長さに基づいて優先順位を判定するように構成されている。この手法は、性能及び/又は電力消費要件を満たすことと、性能及び/又は電力消費要件に従って処理回路を最良に利用しないことがある異なるトリガされた命令間の公平性を保証することとの間でバランスがとられることを保証する。
【0014】
処理装置の配置は特に限定されない。いくつかの構成では、処理装置は、シングルコア処理装置又はマルチコア処理装置であってもよい。いくつかの構成では、処理装置は、空間アーキテクチャを形成するように配置された複数の処理要素を備え、デコーダ回路、制御回路、及び処理回路は、複数の処理要素のうちの1つの処理要素に配置されている。言い換えれば、複数の処理要素の各処理要素は、その処理要素に専用のデコーダ回路、処理回路、及び制御回路を提供するように配置されている。空間アーキテクチャの処理要素は、回路面積を最良に利用し、処理要素に関連付けられたオンチップ記憶装置に対する処理要素の局所性を保証するために、単一チップ全体に分散される。
【0015】
空間アーキテクチャの処理要素の配置は限定されず、処理要素を接続するネットワークは、各処理要素がN個の異なるネットワーク経路に沿って近くの処理要素に接続されるN次元ネットワークを形成するように配置され得る。いくつかの構成では、複数の処理要素は、二次元トーラスとして配置された二次元ネットワークを介して接続される。ネットワークに関連付けられた次元の数は、チップ上の構成要素の物理的配置に関連付けられた次元の数によって制限されない。むしろ、ネットワークの次元の数は、処理要素の間の接続のレイアウトによって定義される。二次元ネットワークでは、各処理要素は、要素Pi-1,j、Pi+1,j、Pi,j-1、及びPi,j+1間に接続された処理要素Pi,jを有する行及び列のシーケンスのトポロジカル等価物において接続される。ネットワーク接続を配置して二次元トーラスを形成することにより、ネットワークのエッジ要素に関連付けられたネットワークボトルネックを回避しながら、データを処理要素の間でルーティングすることができる特に効率的な構成をもたらす。二次元トーラスレイアウトは、サイズ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に接続される。二次元トーラスレイアウトは、処理要素がネットワークのエッジに位置せず、ネットワーク帯域幅のより均等な分布をもたらすという利点を提供する。
【0016】
1つ以上の所定条件は、必ずしも固定されず、いくつかの構成では、デコーダ回路は、新しい条件を指定する更新条件命令に応答して、更新条件制御信号を生成し、処理回路は、更新条件制御信号に応答して、新しい条件を1つ以上の所定条件のうちの1つとして設定するように構成されている。いくつかの構成では、デコーダ回路は、新しい条件が1つ以上の所定条件の追加条件として追加されるべきか、又は既存の1つ以上の所定条件を置き換えるべきかを指定する条件更新命令に応答する。いくつかの構成では、制御回路は、1つ以上の所定条件のいずれかが満たされることに応答して、レーンごとのマスクを修正するように構成されている。他の構成では、制御回路は、1つ以上の所定条件の論理的組み合わせが満たされることに応答して、レーンごとのマスクを修正するように構成されている。
【0017】
1つ以上の所定条件は、様々に定義され得る。しかしながら、いくつかの構成では、制御回路は、エネルギー消費目標を満たすために、レーンごとのマスクを修正するように構成されている。いくつかの構成では、より多くのレーンを有効にすることによって得られる性能と、レーンの数が増加するにつれて実質的により多くなり得る追加のレーンによって消費される電力との間に非線形関係がある。そのような場合、及び性能が最も重要でない場合、制御回路は、有効であるレーンの数を低減することによって効率を改善することができる。例えば、複数の処理レーンの全てのレーンを使用して単一の動作を実施するのではなく、制御回路は、複数の処理レーンのレーンの半分を無効にすることができ、2つの動作が実施されるという要件をもたらす。しかしながら、レーンの非線形電力要件に起因して、2つの動作の各々によって使用される電力量は、レーンの全てが有効にされた場合に使用されたであろう電力量の半分未満である。したがって、全体的なエネルギー低減を達成することができる。
【0018】
いくつかの構成では、1つ以上の所定条件は、飽和条件を含み、制御回路は、処理レーン内の値が飽和していることを処理レーンの処理状態が示すことに応答して、レーンごとのマスクを修正するように構成されている。制御回路は、処理装置の各レーン内の値を監視し、処理レーン内の値が飽和するときに、制御回路は、その処理要素を伴う更なる動作が実施されないように、その処理レーンを無効にするように構成されている。処理レーン内の値は、処理レーン内に存在する任意の値であり得る。いくつかの構成では、値は、処理レーン内の入力レジスタの入力要素の値である。他の構成では、値は、処理レーンの先行する動作の出力レジスタの出力要素の値である。
【0019】
いくつかの構成では、1つ以上の所定条件は、負の条件を含み、制御回路は、処理レーン内の値が負であることを処理レーンの処理状態が示すことに応答して、レーンごとのマスクを修正するように構成されている。制御回路は、処理装置の各レーン内の値を監視し、処理レーン内の値が負になるときに、制御回路は、その処理要素を伴う更なる動作が実施されないように、その処理レーンを無効にするように構成されている。処理レーン内の値は、処理レーン内に存在する任意の値であり得る。いくつかの構成では、値は、処理レーン内の入力レジスタの入力要素の値である。他の構成では、値は、処理レーンの先行する動作の出力レジスタの出力要素の値である。
【0020】
いくつかの構成では、1つ以上の所定条件は、0除算条件を含み、制御回路は、処理レーン内の値が0除算であることを処理レーンの処理状態が示すことに応答して、レーンごとのマスクを修正するように構成されている。制御回路は、処理装置の各レーン内の値を監視し、例えば、処理レーン内の値がNaN(Not a Number)値を示すので、0除算動作が発生したことを処理レーン内の値が示すときに、制御回路は、その処理要素を伴う更なる動作が実施されないように、その処理レーンを無効にするように構成されている。処理レーン内の値は、処理レーン内に存在する任意の値であり得る。いくつかの構成では、値は、処理レーン内の入力レジスタの入力要素の値である。他の構成では、値は、処理レーンの先行する動作の出力レジスタの出力要素の値である。
【0021】
いくつかの構成では、1つ以上の所定条件は、数を指定する数値条件を含み、制御回路は、処理レーン内の値がその数に等しいことを処理レーンの処理状態が示すことに応答して、レーンごとのマスクを修正するように構成されている。制御回路は、処理装置の各レーン内の値を監視し、処理レーン内の値がその数に等しくなるときに、制御回路は、その処理要素を伴う更なる動作が実施されないように、その処理レーンを無効するように構成されている。処理レーン内の値は、処理レーン内に存在する任意の値であり得る。いくつかの構成では、値は、処理レーン内の入力レジスタの入力要素の値である。他の構成では、値は、処理レーンの先行する動作の出力レジスタの出力要素の値である。いくつかの構成では、制御回路は、その数を記憶する記憶回路を備える。他の構成では、記憶回路は、その数が記憶される場所へのポインタを記憶するために使用される。
【0022】
いくつかの構成では、処理装置は、データ処理動作に関連付けられたデータを受信するように構成された複数のデータ入力チャネルを更に備え、1つ以上の所定条件は、複数のデータ入力チャネルのうちの1つのデータ入力チャネルを指定するデータ条件を含み、制御回路は、処理レーンに関連付けられた入力チャネル内のデータが無効としてマークされていることを処理レーンの処理状態が示すことに応答して、レーンごとのマスクを修正するように構成されている。このようにして、制御回路は、利用可能なデータが存在する複数の処理レーンのうちのレーンにおいてのみ動作を実施するように処理回路を制御するように配置され得る。処理装置がトリガされる処理装置として配置されるいくつかの構成では、データ条件は、最大量のデータが利用可能である命令に優先度が与えられるように、トリガされた命令の間で優先順位を付けるために使用され得、それによって、命令のより大きなスループットをもたらす。
【0023】
一方、レーンごとのマスクは、処理レーンの各々の処理状態に応答して制御回路によって制御される。いくつかの構成では、デコード回路は、新しいレーンごとのマスクを指定するマスク設定命令に応答して、マスク設定制御信号を生成し、処理回路は、マスク設定制御信号に応答して、新しいレーンごとのマスクをレーンごとのマスクとして設定するように構成されている。新しいレーンごとのマスクは、即値として、又は、新しいレーンごとのマスクを記憶するレジスタ若しくはレジスタの一部分を指定することによって、指定され得る。この手法により、プログラマは、複数の処理レーンのうちのどのレーンが有効であるかに関する制御をプログラマに提供するために、レーンごとのマスクを指定することができる。例えば、プログラマは、複数の処理レーンのうちの全ての処理レーンを有効にすることを選択することができる。いくつかの構成では、デコーダ回路は、マスク設定命令に応答して、制御回路に、複数の処理レーンの各処理レーンの監視を休止させる。他の構成では、マスク設定命令は、各処理レーンの処理状態に基づいて、制御回路によってその後変更される初期レーンごとのマスクを設定する。
【0024】
いくつかの構成では、デコード回路は、リセット条件命令に応答して、リセット条件制御信号を生成し、処理回路は、リセット条件制御信号に応答して、所定条件をデフォルトの所定条件に設定するように構成されている。デフォルトの所定条件は、前述の条件のいずれかとすることができる。いくつかの構成では、デフォルトの所定条件は、ヌル条件であり、デフォルトの所定条件が設定されるときに、制御回路は、複数の処理レーンの各々の処理状態から独立して、レーンごとのマスクの現在の値を維持するように構成されている。
【0025】
いくつかの構成では、レーンごとのマスクは、単一の暗黙的述語であり、処理回路は、複数の処理レーンにおいて処理を実施する複数の命令のうちの全ての命令について暗黙的述語を参照するように構成されている。したがって、単一の暗黙的述語は、処理回路によって実施される各動作について、複数の処理レーンのうちのどのレーンが有効であり、複数の処理レーンのうちのどのレーンが無効であるかを判定するために使用される。代替構成では、レーンごとのマスクは、複数の暗黙的述語のうちの1つであり、処理回路は、命令のタイプに応じて複数の暗黙的述語のうちの1つを参照するように構成されている。処理回路によって実行される命令ごとに、処理回路は、そのタイプの命令に関連付けられた複数の暗黙的述語のうちの暗黙的述語にアクセスする。このようにして、プログラマは、異なる述語を使用して異なるタイプの命令を制御することができる。
【0026】
本明細書に記載の概念は、記載された概念を具現化する装置の製造のためのコンピュータ可読コードで具現化され得る。例えば、コンピュータ可読コードは、概念を具現化する装置を備える集積回路を製造するために、電子設計自動化(electronic design automation、EDA)ステージを含む半導体設計及び製造プロセスの1つ以上のステージで使用することができる。上記のコンピュータ可読コードは、追加的又は代替的に、本明細書に記載の概念を具現化する装置の定義、モデリング、シミュレーション、検証及び/又は試験を可能にすることができる。
【0027】
例えば、本明細書に記載の概念を具現化する装置を製造するためのコンピュータ可読コードは、概念のハードウェア記述言語(hardware description language、HDL)表現を定義するコードで具現化することができる。例えば、コードは、概念を具現化する装置を定義するための1つ以上の論理回路のレジスタ転送レベル(register-transfer-level、RTL)抽象化を定義することができる。コードは、Verilog、SystemVerilog、Chisel、又は超高速集積回路ハードウェア記述言語(Very High-Speed Integrated Circuit Hardware Description Language、VHDL)並びにFIRRTLのような中間表現を用いて、装置を具現化する1つ以上の論理回路のHDL表現を定義し得る。コンピュータ可読コードは、SystemC及びSystemVerilogなどのシステムレベルモデリング言語又は概念のシミュレーション、機能的及び/若しくは形式的な検証、及び試験を可能にするためにコンピュータによって解釈され得る概念の他の行動表現を使用して概念を具現化する定義を提供することができる。
【0028】
追加的又は代替的に、コンピュータ可読コードは、GDSIIなどの表現を含む、1つ以上のネットリスト又は集積回路レイアウト定義など、本明細書に記載の概念を具現化する集積回路要素の低レベル記述を定義し得る。集積回路要素の1つ以上のネットリスト又は他のコンピュータ可読表現は、1つ以上の論理合成プロセスをRTL表現に適用して、本発明を具現化する装置の製造に使用する定義を生成することによって生成し得る。代替的又は追加的に、1つ以上の論理合成プロセスは、記載の概念を具現化するようにフィールドプログラマブルゲートアレイ(field programmable gate array、FPGA)を構成するためにFPGAにロードされるビットストリームをコンピュータ可読コードから生成することができる。FPGAは、集積回路での製造前に概念の検証及び試験の目的で展開されてもよく、又はFPGAは製品に直接展開されてもよい。
【0029】
コンピュータ可読コードは、例えば、本発明を具現化する装置を製造するための半導体設計及び製造プロセスで使用されるRTL表現、ネットリスト表現、又は別のコンピュータ可読定義のうちの1つ以上の混合を含む、装置の製造のためのコード表現の混合を含むことができる。代替的又は追加的に、概念は、装置を製造するために半導体設計及び製造プロセスで使用されるコンピュータ可読定義と、いったん製造されると定義された装置によって実行される命令を定義するコンピュータ可読コードとの組み合わせで定義されてもよい。
【0030】
そのようなコンピュータ可読コードは、任意の既知の一時的なコンピュータ可読媒体(ネットワークを介したコードの有線又は無線送信など)、又は半導体、磁気ディスク、若しくは光ディスクなどの非一時的コンピュータ可読媒体に配置することができる。コンピュータ可読コードを使用して製造された集積回路は、中央処理ユニット、グラフィック処理ユニット、ニューラル処理ユニット、デジタル信号プロセッサ、又は概念を個別に若しくは集合的に具現化する他の構成要素のうちの1つ以上などの構成要素を備えることができる。
【0031】
ここで、本技法の特定の構成について、図を参照して記載する。
【0032】
図1は、本技法の様々な構成による、処理装置10を概略的に示す。処理装置10は、デコーダ回路12と、制御回路14と、処理回路20と、を備える。デコーダ回路12は、命令セットアーキテクチャからの命令をデコードして、処理回路20を制御するために使用される制御信号を生成するために提供される。処理回路20は、複数の処理レーン24を備える。示される構成では、4つの処理レーン24、すなわち、処理レーン00 24(A)、処理レーン01 24(B)、処理レーン10 24(C)、及び処理レーン11 24(D)が提供される。デコーダ回路12によって提供される制御信号は、処理回路の各レーン24が、その処理レーン24が有効であるときの処理動作を実施するように制御する。処理レーンが有効であるどうかに関する制御は、制御回路14によって管理される。制御回路は、処理レーン24の各々の処理状態を監視し、レーンが1つ以上の所定条件18を満たすかどうかを判定する。各処理レーン24の処理状態が所定条件18を満たすかどうかに応じて、制御回路14は、レーンごとのマスク16を修正する。示される例では、制御回路14は、処理レーン10 24(C)が所定条件18を満たすと判定しており、処理レーン10が無効であるべきであることを示すために、レーンごとのマスク16の対応するビットを0に設定している。レーンごとのマスク16は、処理回路にフィードバックされ、スイッチ22は、対応する処理レーンが有効であるか、又は無効であるかを制御するために使用される。示される構成では、レーンごとのマスク16は1101に設定され、処理レーン00 24(A)、処理レーン01 24(B)、及び処理レーン11 24(D)が有効であり、処理レーン10 24(C)が無効であることを示す。したがって、レーンごとのマスク16の最上位(最左)ビットが論理1に設定されていることに応答して、スイッチ22(A)は、有効状態にあり、デコーダ回路12によって生成された制御信号は、処理レーン00 24(A)を制御するために使用される。レーンごとのマスク16の次の最上位ビット(最左から2番目のビット)が論理1に設定されていることに応答して、スイッチ22(B)は、有効状態にあり、デコーダ回路12によって生成された制御信号は、処理レーン01 24(B)を制御するために使用される。レーンごとのマスク16の次の最上位ビット(最左から3番目のビット)が論理0に設定されることに応答して、スイッチ22(C)は無効状態にあり、デコーダ回路12によって生成された制御信号は、処理レーン10 24(C)から保留され、処理レーン10 24(C)は、無効である。最後に、レーンごとのマスク16の最下位ビット(最右ビット)が論理1に設定されていることに応答して、スイッチ22(D)は、有効状態にあり、デコーダ回路12によって生成された制御信号は、処理レーン11 24(D)を制御するために使用される。制御回路14は、処理回路を継続的に監視し、任意の時点で、処理レーン24の処理状態が、所定条件18がその処理レーンに対して満たされるように変化する場合、レーンごとのマスク16を修正するようにアレンジされ、制御回路14は、レーンごとのマスク16の対応するビットを修正するように構成されている。
【0033】
いくつかの代替構成では、処理装置10内の処理レーン24の数は4つよりも多い。例えば、処理レーン24の数は、8、16、32以上とすることができる。そのような構成では、レーンごとのマスクは、処理レーンの各々に対して1つずつ、より多くのビットを備え、処理レーンが有効であるか、又は無効であるかの制御は、示された処理レーンに関連して記載されたように行われる。いくつかの構成では、制御回路14は、処理回路20と同じ回路ブロックの一部を形成する。
【0034】
図2は、本技法の様々な構成による、処理装置10を概略的に示す。図2に示す機能構成要素は、図1に示すものと同じであり、簡潔にするために、これらの構成要素の説明は繰り返さない。図2は、レーンごとのマスク16に対する新しい値を指定するマスク設定命令、及び新しい条件を指定する条件更新命令に対する処理装置10の応答を示す。マスク設定命令に応答して、デコーダ回路12は、処理回路20を介して制御回路14に渡されるマスク設定制御信号を生成する。制御回路14は、マスク設定制御信号に応答して、レーンごとのマスクを、マスク設定命令において指定された新しいレーンごとのマスクに修正する。更新条件命令に応答して、デコーダ回路12は、制御回路14に渡される更新条件制御信号を生成する。制御回路14は、デコーダ回路14によって発行された制御信号に応答して、所定条件18を修正し、制御回路が、処理レーンの処理状態が新しい条件を満たすことに応答して、レーンごとのマスクを修正するように構成されている。いくつかの代替構成では、マスク設定制御信号及び更新条件制御信号は、処理回路を経由せずに、デコーダ回路12から制御回路14に直接渡される。
【0035】
図3は、本技法の様々な構成による、トリガされた処理装置として動作するようにアレンジされた処理装置30を概略的に示す。処理装置30は、フロントエンド回路36と、デコーダ回路38と、処理回路40と、制御回路46と、を備える。フロントエンド回路36は、各々がトリガ条件に関連付けられた複数の取り出された命令を記憶し、処理回路の実行状態が複数の取り出された命令のうちの1つに関連付けられたトリガ条件を満たすときにトリガされた命令を生成するようにアレンジされる。フロントエンド回路はまた、取り出された命令に関連付けられたデータを取り出すための複数の入力チャネルを備える。トリガされた命令は、フロントエンド回路36からデコーダ回路38に渡され、このデコーダ回路は、処理回路40に渡される制御信号を生成する。処理回路は、レーンごとのマスク32に基づいて有効/無効である複数の処理レーン44を使用して、制御信号によって定義される動作を実施する。レーンごとのマスク32は、所定条件32を満たす個々の処理レーン44の処理状態に基づいて、制御回路46によって継続的に更新される。このように、実行される命令の選択は、処理回路40全体の実行状態に基づいており、動作のレーンごとの実行は、各処理レーンの処理状態に基づいて、レーンごとのマスク32によって制御される。レーンごとのマスク32は、フロントエンド回路36にもフィードバックされる。処理回路40の実行状態が、複数の取り出された命令が、トリガされた命令としてデコーダ回路38に渡されるのに適格であるようなものであるときに、フロントエンド回路36は、トリガされた命令を生成するために適格な命令のうちのどれが最初に使用される(優先順位付けされる)べきかを選択するように構成されている。いくつかの代替構成では、制御回路は、フロントエンド処理回路36によって受信された入力データがレーンごとに有効又は無効としてマーク付けされるかどうかに基づいて、所定条件34が満たされるかどうかを判定するように構成されている。
【0036】
図4は、本技法の様々な構成による処理装置の制御回路50の詳細を概略的に示す。制御回路50は、第1のレーンごとのマスク54及び第2のレーンごとのマスク56を記憶するように構成されており、処理回路によって処理されている命令のタイプに基づいて、どのレーンごとの命令マスクが使用されるべきかを選択するようにアレンジされている。制御回路50は、第1のレーンごとのマスク54と第2のレーンごとのマスク56との間で選択するようにスイッチ52を制御する命令タイプの指示を受信する。制御回路50はまた、第1の所定条件58及び第2の所定条件60を記憶するように構成されている。処理回路の各処理レーンの処理状態は、第1の所定条件58及び第2の所定条件60と比較される。第1のレーンごとのマスク54のビットは、対応する処理レーンの処理状態が第1の所定条件58を満たすときに設定され、第2のレーンごとのマスク56のビットは、対応する処理レーンの処理状態が第2の所定条件60を満たすときに設定される。このようにして、特定の処理レーンの処理状態は、第1の所定条件58が満たされず(第1のレーンごとのマスク54の最下位から3つ目のビットに示されるように)、第2の所定条件60が満たされる(第2のレーンごとのマスク56の最下位から3つ目のビットに示されるように)ようなものであり得る。その結果、最下位から3つ目の処理レーンは、第2のレーンごとのマスク56に関連付けられたタイプの命令に対して有効であり、第1のレーンごとのマスク54に関連付けられたタイプの命令に対して無効である。
【0037】
図5は、本技法の様々な例による、空間アーキテクチャとしてアレンジされたデータ処理装置62を概略的に示す。空間アーキテクチャは、プログラム実行の最も時間のかかる部分を形成する計算を、時間ではなく空間で展開することによって、いくつかのアプリケーションを加速することができる。計算は、同時並行動作(concurrent operation)が可能な複数のハードウェアユニットを使用することによって「空間」内で展開される。チップ上に分散されている分離されたアプリケーションによって提供される同時実行機会を利用することに加えて、処理装置62などの空間アーキテクチャは、分散オンチップメモリも利用する。このようにして、各処理要素は、それに近接する1つ以上のメモリブロックに関連付けられる。その結果、空間アーキテクチャは、多くの従来のアーキテクチャの性能を妨げるフォンノイマンボトルネックを回避することができる。
【0038】
処理装置62は、インターフェースタイル(interface tile、IT)とも呼ばれ、マルチプレクサ(X)を介してネットワークに接続されるインターフェースノードを介してキャッシュ階層又はメインメモリに接続される処理要素のアレイを備える。本明細書に記載の構成による処理装置62内の処理要素は、2つの異なるタイプの回路を備える。各処理要素は、演算タイル(compute tile、CT)とも呼ばれる処理回路と、メモリタイル(memory tile、MT)とも呼ばれるメモリ制御回路とを備える。CTの役割は、データ処理動作及び算術計算の大部分を実施することである。処理装置62の処理要素内の演算タイルの各々は、図1図4に関連して記載したようにアレンジされ得る。
【0039】
MTの役割は、ローカルに接続されたメモリ(ローカル記憶回路)へのデータアクセス、メモリのより離れた領域への/からのデータ転送、及び処理要素と他の処理要素との間の処理要素間メモリ転送を実施することである。
【0040】
いくつかの例示的な構成では、処理装置62の処理要素の各々は、各メモリ制御回路(MT)に接続されたローカル記憶回路を備え、各メモリ制御回路(MT)は、1つの処理回路(CT)への直接接続を有する。各MT-CTクラスタは、メモリ制御回路(MT)同士の間及び各メモリ制御回路(MT)とインターフェースノード(IT)との間でデータを転送するために使用されるネットワークオンチップに接続される。代替構成では、ローカル記憶回路が複数の処理要素同士の間に設けられ、複数のメモリ制御回路(MT)によってアクセス可能である。処理要素は、従来の処理要素であってもよい。代替的に、処理要素は、それぞれの1つ以上のトリガ条件が満たされたときに命令が実行されるトリガ処理要素であってもよい。
【0041】
図5に示されるデータ処理装置62の処理要素はそれぞれ、入力チャネル及び出力チャネルのセットを介して、スイッチと、二次元トーラストポロジレイアウトを形成するそれらのスイッチ同士の間のデータリンクとを備えるネットワークオンチップに接続される。データは、任意のアルゴリズムを使用して、ネットワークオンチップを迂回してルーティングされ得る。しかしながら、特に効率的なルーティングアルゴリズムは、トーラスレイアウトを考慮に入れるように修正されたxyルーティングアルゴリズムである。xyアルゴリズムは、y方向に沿ってルーティングされたデータがその後x方向に沿ってルーティングされることを禁止することによって、ネットワーク内のルーティングデッドロック(順方向進行を不可能にする、処理要素及び/又はネットワークリソース間の周期的依存)を防止する。
【0042】
図6は、処理装置がトリガされるアーキテクチャとしてアレンジされるときの、本技法の様々な構成による処理装置の動作の更なる詳細を概略的に示す。処理要素は、処理回路の現在の実行状態をラッチする現在の実行状態ラッチ70と、複数の取り出された命令の各々に関連付けられた命令オペコード72のシーケンスを、対応するトリガ条件及び処理要素が対応する命令の実行に成功すると到達する次の実行状態を示す次の実行状態情報74とともに記憶する命令キャッシュ72、74とを備える。処理要素は、命令キャッシュ72、74に記憶された命令を処理回路66の処理レーン80における処理に好適なマイクロ動作にスプリットするための初期プリデコードステップを実施するプリデコード回路76を更に備える。処理要素は、現在の命令が完了すると、処理回路が入る次の実行状態を記憶する次の実行状態ラッチ84と、命令が完了したかどうかに関する指標をラッチする完了ラッチ82と、を更に備える。処理要素は、現在の命令が完了したことを完了ラッチ82が示すことに応答して、現在の実行状態ラッチ70に記憶された処理回路の現在の実行状態を更新するスイッチ(デマルチプレクサ)86を備える。現在の実行状態ラッチ70、命令キャッシュ72、74、プリデコード回路76、完了ラッチ、及び次の実行状態ラッチはともに、処理要素の現在の実行状態に基づいて、トリガされた命令を生成する役割を果たすフロントエンド回路を形成する。処理要素はまた、本明細書に記載の構成のいずれかに従ってアレンジされる制御回路64を備える。制御回路は、処理レーン80の処理状態を監視し、処理レーンの各々が1つ以上の所定条件を満たすかどうかを判定する。制御回路64は、処理回路80にフィードバックされる処理レーンの処理状態に応答して、レーンごとのマスクを更新して、処理レーンの各々が有効又は無効であるようにする。制御回路64はまた、複数の取り出された命令のうちの2つ以上に関連付けられたトリガ条件が同時に満たされるときに、取り出された命令を優先順位付けするためにレーンごとのマスクを使用するフロントエンド回路の命令キャッシュ72、74にレーンごとのマスクをフィードバックする。
【0043】
動作中、処理要素は、現在の実行状態ラッチ70にラッチされた現在実行状態に基づいて、命令キャッシュ72、74に記憶された命令を次にトリガされた命令であると判定する。現在の実行状態ラッチ70にラッチされた現在の実行状態が、命令キャッシュ72、74に記憶された命令に関連付けられたトリガ条件に一致する場合、その命令はプリデコード回路76に渡されてマイクロ動作に分解され、マイクロ動作は、トリガされた命令としてデコード回路78に渡される。加えて、命令キャッシュ72、74は、トリガ条件が満たされた命令に関連付けられた対応する次の実行状態74を判定する。次の実行状態74は、次の実行状態ラッチ84に渡される。この時点で、命令は完了しておらず、したがって、完了ラッチは、これがそうであるという指標を記憶する。現在の実行状態ラッチ70は、次の実行状態ラッチ84に記憶された次の実行状態で更新されない。代わりに、現在の実行状態ラッチ70に記憶されている現在の実行状態は、スイッチ86を介して現在の実行状態ラッチ70の入力にフィードバックされ、このようにして、現在の実行状態ラッチは現在の実行状態で維持される。トリガされた命令はデコード回路78に渡され、このデコード回路は、制御信号を生成して、対応する処理レーンが有効であることを制御回路に記憶されたレーンごとのマスクが示す処理レーン80に、トリガされた命令に基づいて処理動作を実施させる。処理動作が完了するときに、処理動作が完了したという指標が完了ラッチに記憶される。処理レーン80からの出力は、処理中に行われる動作に基づいて次の実行状態を更新するために使用されてもよく、処理レーン80の各々の処理状態は、制御回路64によって監視される。処理要素が、処理が完了したことを完了ラッチ82にラッチすると、現在の実行状態ラッチは、次の実行状態ラッチに以前にラッチされた値を含むように更新される。次いで、現在の実行状態ラッチ70にラッチされた新しい現在の実行状態は、トリガされた命令を生成するために使用される次の命令を判定するように処理要素によって使用され得る。
【0044】
図7a及び図7bは、命令のシーケンスに応答して命令を実行する前後の所定条件及びレーンごとのマスクの値を概略的に示す。命令は、図の各々の上部の最初の命令から図の各々の下部の最後の命令まで順に記載される。
【0045】
図7aから開始して、受信される最初の命令は、「listener SAT」命令である。「listener」命令は、処理装置に所定条件を飽和条件に更新させる条件更新命令である。制御回路は、この命令に応答して、所定条件を飽和条件に設定する。示される例では、この命令が受信される前のレーンごとのマスクは、複数の処理レーンの各レーンが有効であることを示す[1,1,1,1]であると仮定する。この場合、先行する命令によって判定されるベクトルvecJの値を示す、命令後の処理レーン内の値は、[-124,2,2,-64]である。「listener SAT」命令は、所定条件を更新するが、命令が実行された後に、処理レーン内の値又はレーンごとのマスクに影響を及ぼさない。
【0046】
実行されるべき次の命令は、飽和加算動作「qadd vecJ,vecJ,vecS」であり、vecSは、「vecS=[126,126,126,126]」であるように(例えば、前の命令によって)すでに定義されている。この命令は、vecSの値をvecJに加算し、出力をvecJに記憶する。qaddは、飽和加算であるので、出力は飽和値を超えず、代わりにvecJに記憶され得る最大値まで飽和する。「listener SAT」命令の後のレーンごとのマスクは、[1,1,1,1]に設定された。したがって、複数の処理レーンの各処理レーンが有効であり、飽和加算動作が各レーンに対して行われる。処理レーンにおける値は、127の値で飽和すると仮定される。したがって、命令後の処理レーン内の値は、vecJ=[2,127,127,62]である。vecJの第2及び第3の最下位要素が飽和しているので、制御回路は、命令後のレーンごとのマスクを自動的に[1,0,0,1]に設定する。
【0047】
実行されるべき次の命令は、第2の飽和加算動作「qadd vecJ,vecJ,vecS」であり、vecSは、「vecS=[126,126,126,126]」であるように(例えば、前の命令によって)すでに定義されている。この命令は、vecSの値をvecJに加算し、出力をvecJに記憶する。qaddは、飽和加算であるので、出力は飽和値を超えず、代わりにvecJに記憶され得る最大値まで飽和する。「listener SAT」命令の後のレーンごとのマスクは、[1,0,0,1]に設定された。したがって、複数の処理レーンの最上位処理レーン及び最下位処理レーンが有効であり、これらのレーンに対して飽和加算動作が行われる。第2及び第3の最下位処理レーンは無効であり、したがってこれらのレーンでは処理は行われない。処理レーンにおける値は、127の値で飽和すると仮定される。したがって、命令後の処理レーンの値は、vecJ=[127,127,127,127]である。vecJの要素の各々が飽和しているので、制御回路は、命令後のレーンごとのマスクを自動的に[0,0,0,0]に設定する。
【0048】
次に発行される命令は、所定条件をデフォルトの所定条件にリセットする「reset-condition」命令と、レーンごとのマスクの値を[1,1,1,1]に設定する「set per-lane mask[1,1,1,1]命令である。vecJの値は、これらの命令に応答して変更されず、代わりに、所定条件がリセットされ、レーンごとのマスクが更新される。
【0049】
次の命令は、処理レーン内のvecJの値が64に設定されるときに所定条件が満たされるように、1つ以上の所定条件を更新する「listener value,64」命令である。処理レーン内の値のいずれも64に設定されていないので、レーンごとのマスクは修正されないままであり、「listener value,64」命令が実行された後に[1,1,1,1]の値を有する。
【0050】
次の命令は、別の飽和加算動作「qadd vecJ,vecJ,vecS」であり、vecSは、「vecS=[-63,-64,-65,-66]」であるように(例えば、前の命令によって)すでに定義されている。この命令は、vecSの値をvecJに加算し、出力をvecJに記憶する。qaddは、飽和加算であるので、出力は飽和値を超えず、代わりにvecJに記憶され得る最大値まで飽和する。「listener value,64」命令の後のレーンごとのマスクは、[1,1,1,1]に設定された。したがって、複数の処理レーンの各レーンが有効であり、飽和加算動作が全てのレーンに対して行われる。命令後の処理レーン内の値は、vecJ=[64,63,62,61]である。vecJの最上位要素は64に等しいので、制御回路は、命令後のレーンごとのマスクを自動的に[0,1,1,1]に設定する。
【0051】
次の命令は、別の飽和加算動作「qadd vecJ,vecJ,vecS」であり、vecSは、「vecS=[1,1,1,1]」であるように(例えば、前の命令によって)すでに定義されている。この命令は、vecSの値をvecJに加算し、出力をvecJに記憶する。qaddは、飽和加算であるので、出力は飽和値を超えず、代わりにvecJに記憶され得る最大値まで飽和する。先行する「qadd vecJ,vecJ,vecS」命令の後のレーンごとのマスクは、[0,1,1,1]に設定された。したがって、複数の処理レーンのうちの3つの最下位(最右)レーンが有効であり、これらのレーンに対して飽和加算動作が行われる。複数の処理レーンの最上位(最左)レーンは、このレーンについて所定条件がすでに満たされていることをレーンごとのマスクが示すので、無効である。命令後の処理レーン内の値は、vecJ=[64,64,63,62]である。vecJの2つの最上位要素は64に等しいので、制御回路は、命令後のレーンごとのマスクを自動的に[0,0,1,1]に設定する。
【0052】
次の命令は、別の飽和加算動作「qadd vecJ,vecJ,vecS」であり、vecSは、「vecS=[1,1,1,1]」であるように(例えば、前の命令によって)すでに定義されている。この命令は、vecSの値をvecJに加算し、出力をvecJに記憶する。qaddは、飽和加算であるので、出力は飽和値を超えず、代わりにvecJに記憶され得る最大値まで飽和する。先行する「qadd vecJ,vecJ,vecS」命令の後のレーンごとのマスクは、[0,0,1,1]に設定された。したがって、複数の処理レーンのうちの2つの最下位(最右)レーンが有効であり、これらのレーンに対して飽和加算動作が行われる。複数の処理レーンの2つの最上位(最左)レーンは、これらのレーンについて所定条件がすでに満たされていることをレーンごとのマスクが示すので、無効である。命令後の処理レーン内の値は、vecJ=[64,64,64,63]である。vecJの3つの最上位要素は64に等しいので、制御回路は、命令後のレーンごとのマスクを自動的に[0,0,0,1]に設定する。
【0053】
命令のストリームは、図7bに続き、第1の命令は、所定条件をデフォルト条件に設定する「reset-condition」命令、及び所定条件をdiv0条件に設定する「listener div0」命令である。したがって、制御回路は、値が64に等しいかどうかの監視を停止し、代わりに、0除算が発生したという指標を監視する。処理レーン内の値は、「listener div0」動作によって修正されない。しかしながら、ここでは、命令後の処理レーン内の値が0除算条件を満たすかどうかに基づいて、レーンごとのマスクが設定される。命令後の処理レーン内の値は、[64,64,64,63]であり、いずれも0除算が発生したことを示さない。したがって、命令後のレーンごとのマスクの値は、[1,1,1,1]である。
【0054】
次の命令は、「sdiv vecJ,vecJ,vecS」命令であり、vecSは、(例えば、前の命令によって)「vecS=[4,2,1,0]」であるとすでに定義されている。sdiv命令は、ベクトルvecJの各要素をベクトルvecSの対応する要素で除算させ、その結果をベクトルvecJに記憶させる。先行する「listener div0」命令の後のレーンごとのマスクは、[1,1,1,1]に設定された。したがって、複数の処理レーンの全てのレーンが有効であり、全てのレーンに対して除算動作が行われる。命令後の処理レーン内の値は、vecJ=[16,32,64,NaN]である(NaNは、0除算が発生したので結果が数ではないことを示す値である)。制御回路は、0除算に応答して、命令の後のレーンごとのマスクを[1,1,1,0]に設定するように構成されている。
【0055】
次の命令は、「set per-lane mask [1,1,1,1]」命令である。この命令の目的は、レーンごとのマスクの現在の値を、この場合は[1,1,1,1]に設定することである。しかしながら、制御回路は、依然として、0除算エラーが発生した場合を監視しているので、制御回路は、「set per-lane mask」命令がレーンごとのマスクに影響を及ぼさないように、レーンごとのマスクを[1,1,1,0]に設定する。
【0056】
次の命令は、別の「sdiv vecJ,vecJ,vecS」命令であり、vecSは、(例えば、前の命令によって)「vecS=[2,1,0,-1]」であるとすでに定義されている。sdiv命令は、ベクトルvecJの各要素をベクトルvecSの対応する要素で除算させ、その結果をベクトルvecJに記憶させる。先行する「set per-lane mask [1,1,1,1]」命令の後のレーンごとのマスクは、[1,1,1,0]に設定された。したがって、複数の処理レーンのうちの3つの最上位(最左)レーンが有効であり、これらのレーンに対して除算動作が行われる。複数の処理レーンの最下位(最右)レーンは無効であり、このレーンにおいて除算動作は行われない。命令後の処理レーン内の値は、vecJ=[8,32,NaN,NaN]である(NaNは、0除算が発生したので結果が数ではないことを示す値である)。制御回路は、0除算に応答して、命令の後のレーンごとのマスクを[1,1,0,0]に設定するように構成されている。
【0057】
次の命令は、所定条件に新しい条件を追加する「listener negative」命令である。この場合、条件は、負の条件であり、これは、制御回路に、0除算動作を監視することに加えて、処理レーン内の負の値を監視させる。「listener negative」命令は、処理レーン内の値を修正しておらず、処理レーンのいずれも負の値を含まないので、命令後のレーンごとのマスクは[1,1,0,0]のままである。
【0058】
最後の命令は、「qadd vecJ,vecJ,vecJ,vecS」命令であり、vecSは、(例えば、前の命令によって)「vecS=[-128,-128,-128,-128]」であるとすでに定義されている。先行する「listener negative」命令の後のレーンごとのマスクは、[1,1,0,0]に設定された。したがって、複数の処理レーンのうちの2つの最上位(最左)レーンが有効であり、これらのレーンに対して除算動作が行われる。複数の処理レーンのうちの最下位(最右)2つのレーンが無効であり、これらのレーンにおいて除算動作は行われない。命令後の処理レーン内の値は、vecJ=[-120,-96,NaN,NaN]である(NaNは、0除算が発生したので結果が数ではないことを示す値である)。制御回路は、2つの最下位(最右)レーンにおける0除算及び2つの最上位(最左)レーンにおける負の値に応答して、命令後のレーンごとのマスクを[0,0,0,0]に設定するように構成されている。
【0059】
前述の例示的な命令は、処理回路の処理レーンの処理状態に応答して、その処理レーンを有効/無効にする制御回路の動作を概略的に示すために提供される。代替命令が異なる順序で提供され得ること、及び制御回路が処理レーンの処理状態を監視して、複数の処理レーンのうちのどのレーンが有効/無効であるべきかを判定することが、当業者には容易に明らかになるであろう。
【0060】
図8は、本技法の様々な構成による制御回路によって行われるステップのシーケンスを概略的に示す。フローはステップS800で始まり、制御回路は、次の命令サイクルを待つ。次の命令サイクルにおいて、フローはステップS802に進み、制御回路は、レーンの各々について所定条件が満たされるかどうかを判定するプロセスを始める。ステップS802において、変数jが0に等しく設定される。変数jは、レーンの各々を順に進むためのカウンタとして使用される。次いで、フローはステップS804に進み、所定条件がレーンjに対して満たされるかどうかが判定される。所定条件がレーンjに対して満たされる場合、フローはステップS806に進み、レーンごとのマスクのj番目のビットが、所定条件が満たされていることを示すように設定される。次いで、フローはステップS808に進む。しかしながら、ステップS804において、レーンjについて所定条件が満たされていないと判定された場合、フローはステップS812に進み、レーンごとのマスクのj番目のビットが、所定条件が満たされていないことを示すように設定される。次いで、フローはステップS808に進む。ステップS808において、テストすべきレーンが更にあるかどうかが判定される。ステップS808において、テストすべきレーンがもうないと判定された場合、フローはステップS800に戻る。しかしながら、ステップS808において、テストすべきレーンが更にあると判定される場合、変数jがインクリメントされ、フローはステップS804に戻る。所定条件が満たされているかどうかを判定するプロセスが順に示されている。しかしながら、所定条件が満たされているかどうかを判定するプロセスは、代替構成では、レーンの各々について並列に行われ得る。
【0061】
図9は、本技法の様々な構成による、処理装置によって行われるステップのシーケンスを概略的に示す。フローはステップS900で始まり、命令が受信されたかどうかが判定される。命令が受信されていない場合、フローはステップS900に留まる。ステップS900において、命令が受信されたと判定される場合、フローはステップS902に進む。ステップS902において、デコーダ回路は、受信された命令に応答して制御信号を生成する。次いで、フローはステップS904に進み、処理回路は、処理が有効であることをレーンごとのマスクが示す複数の処理レーンにおいて処理動作を実施する。処理動作は、処理が無効であることをレーンごとのマスクが示す処理レーンにおいて実施されない。次いで、フローはステップS906に進み、制御回路は、処理レーンの処理状態を監視する。フローは、次いで、ステップS908に進み、制御回路は、複数の処理レーンのうちのどの処理レーンが1つ以上の所定条件を満たすのかを示すように、レーンごとのマスクを更新する。次いで、フローはステップS900に戻る。
【0062】
図10は、本技法の様々な構成による、処理装置の製造を概略的に示す。製造は、非一時的コンピュータ可読媒体1000に記憶されたコンピュータ可読コード1002に基づいて行われる。コンピュータ可読コードは、概念を具現化する装置を備える集積回路を製造するために、電子設計自動化(EDA)ステージを含む半導体設計及び製造プロセスの1つ以上のステージで使用することができる。製造プロセスは、コンピュータ可読コード1002を、フィールドプログラマブルゲートアレイ(FPGA)などの1つ以上のプログラマブルハードウェアユニットに直接適用して、上述した構成を具現化するようにFPGAを構成すること、あるいは1つ以上の集積回路として実装される装置又は上述した構成を具現化する装置の製造を容易にすることを含む。製造された設計1004は、図1を参照して記載したようなデコーダ回路12、処理回路20、及び制御回路14を備える処理装置10である。代替構成では、非一時的コンピュータ可読媒体1000上に記憶されたコンピュータ可読コード1002は、記載の構成による処理装置の製造を容易にするために使用される情報を記憶するように構成され得る。
【0063】
要約すると、デコーダ回路を含む処理装置が存在する。デコーダ回路は、命令に応答して、制御信号を生成するように構成されている。処理装置は、複数の処理レーンを備える処理回路を更に備える。処理回路は、制御信号に応答して、複数の処理レーンのうち、その処理レーンのための処理が有効であることをレーンごとのマスクが示す各処理レーンにおいてベクトル処理動作を実施するように構成されている。処理装置は、複数の処理レーンにおいて実施される複数の命令の各命令について複数の処理レーンの各処理レーンを監視し、処理レーンの処理状態が1つ以上の所定条件を満たすことに応答して、複数の処理レーンのうちの1つの処理レーンについてレーンごとのマスクを修正する制御回路を更に備える。
【0064】
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を行うことが可能である構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの配置又は相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有し得るか、又はプロセッサ若しくは他の処理デバイスが、機能を実施するようにプログラムされ得る。「ように構成された」は、装置要素が、定義された動作を提供するために何らかの変更がなされる必要があることを意味しない。
【0065】
本明細書では例示的な構成について添付の図面を参照して詳細に説明してきたが、理解されるように、本発明はそれらと寸分違わない構成に制限されるのではなく、また、添付の特許請求の範囲に定める本発明の範囲及び精神から逸脱することなく、当業者によって様々な変更、追加、及び修正を行うことができる。例えば、従属請求項の特徴の様々な組み合わせは、本発明の範囲から逸脱することなく、独立請求項の特徴でなされ得る。
図1
図2
図3
図4
図5
図6
図7a
図7b
図8
図9
図10
【国際調査報告】