JP2022510852A - 再構成可能データ・プロセッサの構成ロード - Google Patents

再構成可能データ・プロセッサの構成ロード Download PDF

Info

Publication number
JP2022510852A
JP2022510852A JP2021529097A JP2021529097A JP2022510852A JP 2022510852 A JP2022510852 A JP 2022510852A JP 2021529097 A JP2021529097 A JP 2021529097A JP 2021529097 A JP2021529097 A JP 2021529097A JP 2022510852 A JP2022510852 A JP 2022510852A
Authority
JP
Japan
Prior art keywords
unit
configuration
configurable
file
array
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021529097A
Other languages
English (en)
Inventor
マニッシュ ケイ. シャア,
ラム シヴァラマクリシュナン,
マーク ルットレル,
デイヴィッド ブライアン ジャクソン,
ラグー プラバカール,
サムティ ジャイラス,
グレゴリー フレデリック グロースキー,
プラモッド ナタラジャ,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SambaNova Systems Inc
Original Assignee
SambaNova Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SambaNova Systems Inc filed Critical SambaNova Systems Inc
Publication of JP2022510852A publication Critical patent/JP2022510852A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Logic Circuits (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)

Abstract

再構成可能データ・プロセッサは、バス・システムと、前記バス・システムに接続された構成可能ユニットのアレイと、前記バス・システムに接続された構成ロード・コントローラを備える。前記アレイ内の構成可能ユニットは、対応する構成可能ユニットに特有の構成データの複数のサブファイルを含むユニットファイルを格納する構成データストアを含む。複数の構成可能ユニット内の構成可能ユニットのそれぞれは、バス・システムを介して構成可能ユニットに特有のユニットファイルのサブファイルを受信すること、及び受信したサブファイルを構成可能ユニットの構成ストアにロードすることを含む、ユニット構成ロード処理を実行するロジックを含む。構成ロード・コントローラは、アレイ内の複数の構成可能ユニット用のユニットファイルを備える構成ファイルを分配することを含む、アレイ構成ロード処理を実行するロジックを含む。【選択図】 図1

Description

優先出願
本出願は、2018年11月21日に出願された米国出願第16/197,826号(代理人整理番号SBNV1001-1A)の利益を主張し、この米国出願は、参照により本明細書に組み込まれる。
本技術は、再構成可能アーキテクチャの構成に関し、特に粗粒度再構成可能アーキテクチャの構成に適用することができる。
フィールド・プログラマブル・ゲートアレイFPGAを含む再構成可能プロセッサは、コンピュータ・プログラムを実行する汎用プロセッサを使用して達成され得るものよりも効率的または高速に様々な機能を実装するように構成され得る。いわゆる粗粒度再構成可能アーキテクチャ(例えば、CGRA)が開発されており、このアーキテクチャでは、アレイ内の構成可能ユニットが、典型的なより細粒度のFPGAで使用されるよりも複雑であり、様々なクラスの機能のより高速またはより効率的な実行を可能にすることができる。例えば、機械学習及び人工知能作業負荷のためのエネルギー効率のよいアクセラレータの実施態様を可能にすることができるCGRAが提案されている。Prabhakar, et al., "Plasticine: A Reconfigurable Architecture for Parallel Patterns"、ISCA '17, June 24-28, 2017, Toronto, ON, Canadaを参照されたい。
再構成可能プロセッサの構成には、構成記述をコンパイルして構成ファイル(ビットストリームまたはビットファイルと呼ばれることもある)を生成し、構成ファイルをプロセッサ上の構成可能ユニットに分配することが含まれる。処理を開始するには、構成ファイルをその処理用にロードする必要がある。処理を変更するには、構成ファイルを新しい構成ファイルに置き換える必要がある。
構成ファイルを分配及びロードするための手続き及びサポート構造は複雑になる可能性があり、手続きの実行には時間がかかる場合がある。
動作効率を最大にし、再構成可能プロセッサ上でプログラムをスワップできるようにするために、構成状態を効率的にロードし、構成及びプログラム状態を格納する手段が必要である。
グリッドまたはタイル状に配置されたプログラマブル素子、及び他のタイプの再構成可能プロセッサを含む粗粒度再構成可能アレイ・プロセッサのための構成及び制御状態の効率的なロード及びアンロードを可能にする技術について説明する。
本明細書で説明される技術は、メモリに記憶されたフォーマットされた構成ファイルから構成データをロードし、パラレル及びシリアル手法の組み合わせを介して再構成可能プロセッサに転送する能力を提供する。また、本明細書で説明する技術は、プログラム制御及びデータ状態を同様にフォーマットされたアンロード構成ファイルにアンロードする効率的な手段を提供する。ロード及びアンロード技術は、組み合わせて、プログラムを再構成可能プロセッサとの間で迅速にスワップし、時分割及び他の仮想化手法を可能にするプロトコルをサポートすることができる。
本明細書では、バス・システムと、バス・システムに接続された構成可能ユニットの1または複数のアレイとを備える再構成可能プロセッサに使用可能な構成及び再構成手続き及び構造について説明する。1または複数のアレイ内の構成可能ユニットは、本明細書でユニットファイルと呼ばれる構成データを記憶するために、例えばラッチのシリアル・チェーンを使用して実装される構成データストアを含む。構成可能ユニットに特有のユニットファイルは、構成データの複数のサブファイルを含むことができる。本明細書で説明する例では、サブファイルがバス・システムを使用して効率的に分配するのに適したサイズを有するデータの「チャンク」からなる。
複数の構成可能ユニット内の構成可能ユニットは、バス・システムを介して、構成可能ユニットに特有のユニットファイルのサブファイルを受信し、受信したサブファイルを構成可能ユニットの構成ストアにロードすることを含む、ユニット構成ロード処理を実行するロジックをそれぞれ含むことができる。幾つかの実施形態では、複数の構成可能ユニット内の構成可能ユニットが、構成ロード処理でも使用されるバス・システム内のルートを構成後の実行中に使用する。
アレイ構成ロード処理を実行するためのロジックを含む構成ロード・コントローラを説明する。アレイ構成ロード処理は、マシンを実装するために、アレイ内の複数の構成可能ユニットのためのユニットファイルを含む構成ファイルを分配することを含む。
本技術の一態様では、ユニットファイルが複数の順序付けられたサブファイルを含むように編成することができる。異なる構成可能ユニットに特有のユニットファイルは、幾つかの実施形態において、異なる数の順序付けられたサブファイルを有することができる。構成可能ユニットのアレイ用の構成ファイルは、ユニットファイルのサブファイルが他のユニットファイルに対して同じ順序の他のサブファイルとインターリーブされるように配置され、構成ファイル内のサブファイルの位置がサブファイルのアレイ内の構成可能ユニットと、構成可能ユニットに特有のユニットファイル内のその順序とを示すように配置される。
本明細書で説明するアレイ構成ロード処理の一例は、Nラウンドの分配シーケンス(i=0~N-1におけるラウンドR(i))で、アレイ内の複数の構成可能ユニットにサブファイルを送信することによって実行される。各ラウンドR(i)において、処理はバス・システムを介して、最大(i+1)のサブファイルを含むユニットファイルを有する構成可能ユニットに、順序(i)の1つのサブファイルを転送する。
複数の構成可能ユニット内の構成可能ユニットの構成データストアはシリアル・チェーンを含むことができ、ユニット構成ロード処理は、1つのバス・サイクルにおいて、分配シーケンスの1つのラウンドにおいてバス・システムから構成可能ユニットに特有のユニットファイルの第1のサブファイルの全部または一部を受信し、分配シーケンスの次のラウンドにおいて第2のサブファイルを受信する前に、次のバス・サイクルにおいて受信した第1のサブファイルをシリアル・チェーン内にプッシュすることを開始し、分配シーケンスの次のラウンドにおいて後のバス・サイクルのバス・システムから第2のサブファイルを受信し、先に受信されたサブファイルをシリアル・チェーン内にプッシュした後のバス・サイクル中に受信した第2のサブファイルをシリアル・チェーン内にプッシュすることを開始することによって実行できる。
分配シーケンスの幾つかのラウンドでは、第1のサブファイルは、複数の順序付けられたサブファイル内の第2のサブファイルが構成可能ユニットによって受信される前に、構成可能ユニット内でユニット構成ロード処理によって使用される。
アレイは複数のタイプの構成可能ユニットを含むことができ、異なるタイプの構成可能ユニットのためのユニットファイルは、構成データの異なる数のサブファイルを含むことができる。例えば、第1タイプの構成可能ユニットのユニットファイルにはZ1個のチャンクが含まれ、第2タイプの構成可能ユニットのユニットファイルにはZ2個のチャンクが含まれ、Z1はZ2未満である。アレイ構成ロード処理は、(i)が0からZ1-1までにおいて、ラウンドR(i)で分配される第1のタイプ及び第2のタイプの全ての構成可能ユニットに対するユニットファイルのサブファイル(i)を含む構成ファイルのセグメントを検索し、次に、(i)がZ1からZ2-1までにおいて、ラウンドR(i)で分配される第2のタイプの全ての構成可能ユニットに対するユニットファイルのサブファイル(i)を含む構成ファイルのセグメントを検索することができる。このプロトコルは、ユニットファイル内に異なる数のサブファイルを有する、任意の数のタイプの構成可能ユニットに拡張することができる。
アレイ構成ロード処理を開始する1つの手法では、構成ファイルのメモリ内の位置を識別する構成ロード・コマンドをホスト処理から受信でき、そのコマンドに応答して、処理が1以上のメモリ・アクセス・リクエストを生成する。構成ファイルのリクエストされた部分が戻されると、分配シーケンスを実行できる。
複数のユニットファイルのサブファイルは、分配シーケンスに一致するインターリーブ方式で構成ファイルに配置することができる。この構成ファイルの配置により、構成ロード処理は、構成可能ユニットと、構成ファイル内のサブファイルの位置による各サブファイルの複数の順序付けられたサブファイル内の位置とを示すことができる。アレイ構成ロード処理は、構成ファイル内のサブファイルの位置に基づいて、サブファイルを構成可能ユニットにルーティングすることを含むことができる。
アレイ構成ロード処理によって構成データを受信する複数の構成可能ユニットは、構成可能ユニットのアレイ内の全ての構成可能ユニットを含むことができる。構成ファイルによって実装されているマシンが構成可能ユニットの全てを利用しない場合、1以上の使用されていない構成可能ユニットのユニットファイルは、ノーオペレーション構成を実施できる。また、アレイ構成ロード処理は、アレイ構成ロード処理によって構成データを受信する複数の構成可能ユニットが構成可能ユニットのアレイ内の全て構成可能ユニットよりも少ないユニットを含むように構成することができる。
本明細書で説明される実施例における構成可能ユニットのアレイ内の構成可能ユニットは、アレイ構成ロードロジックで開始及び終了するデイジー・チェーンで接続されたそれぞれのロード完了状態ロジックを含む。デイジー・チェーンを使用して構成ファイルのロードが成功したことを確認する手続きにおいて、アレイ構成ロードロジックは構成ファイルが分配された後にデイジー・チェーン上において構成ロード完了信号を転送し、アレイ内の各構成可能ユニットにおいて、構成ロード完了状態ロジックは、チェーンの前のメンバからの構成ロード完了信号が受信され、それ自体のユニットファイルのロードが完了したときに、デイジー・チェーン上において構成ロード完了信号を転送する。
本明細書では、構成可能ユニットの複数のアレイをサポートするバス・システムについて説明し、そこで、各アレイはタイルと呼ぶことができる。説明されるバス・システムは、外部データ・インタフェース(1以上のPCIEまたはDDRタイプのインタフェース等)及び各タイルのためのアレイ・インタフェースに接続されるトップ・レベル・ネットワークと、対応するタイルのためのアレイ・インタフェースと、構成可能ユニットのアレイ内の構成可能ユニットとに接続されるアレイ・レベル・ネットワークを含む。アレイ構成ロード処理には、ホスト処理から、構成ファイルのメモリ内の位置を識別する構成ロード・コマンドを受信し、外部データ・インタフェースを介して構成ファイルを取得するコマンドに応答して、トップ・レベル・ネットワークを介して1以上のメモリ・アクセス・リクエストを生成することができる。アレイ構成ロード処理は、構成ファイル内のサブファイルの位置によって示されるアドレスを使用して、サブファイルをアレイ・レベル・ネットワーク経由で構成可能ユニットにルーティングできる。
アレイ構成アンロード処理を実行するロジックを含む構成アンロード・コントローラについて説明する。アレイ構成アンロード処理は、アレイ内の複数の構成可能ユニットにアンロード・コマンドを分配して、対応する構成可能ユニットに特有のユニットファイルをアンロードすること、但し、該ユニットファイルのそれぞれが複数の順序付けられたサブファイルを備える、構成アンロード・コントローラで構成可能ユニットのアレイからサブファイルを受信することを含む。構成アンロードファイルは、サブファイルがその一部であるユニットファイルの構成可能ユニットと、ユニットファイル内のサブファイルの順序に従って、受信したサブファイルをメモリ内に配置することでアセンブルされる。構成アンロードファイルの構造は、上述の構成ファイルの構造と同じでも構わない。複数の構成可能ユニット内の構成可能ユニットは、構成可能ユニットの構成ストアからサブファイルをアンロードし、バス・システムを介して(例えば、アレイ・レベル・ネットワークを介して)、構成可能ユニットに特有のユニットファイルのサブファイルを構成アンロード・コントローラに送信することを含む、ユニット構成アンロード処理を実行するロジックを含むことができる。アンロードされたサブファイルは、構成アンロード・コントローラが特定の順序で受信する必要はない。次いで、構成アンロード・コントローラは、バス・システムを介して(例えば、トップ・レベル・ネットワークを介して)、ユニット・サブファイルをメモリに送信する。
再構成可能データ・プロセッサの構成方法も提供されている。
本明細書で説明される技術の他の態様及び利点は、以下の図面、詳細な説明、及び特許請求の範囲を検討することによって理解することができる。
ホスト、メモリ、及び再構成可能データ・プロセッサを含むシステムを示すシステム図である。
トップ・レベル・ネットワーク及びCGRA(粗粒度再構成可能アーキテクチャ)の構成要素の簡略化されたブロック図である。
図2の構成で使用可能なタイル及びアレイ・レベル・ネットワークの簡略図であり、アレイ内の構成可能ユニットは、アレイ・レベル・ネットワーク上のノードである。
アレイ・レベル・ネットワーク内の素子を接続する例示的なスイッチ・ユニットを示す。
例示的な構成可能ユニットを示すブロック図である。
構成可能ユニットにおけるユニット構成ロード処理を制御するために使用することができるステート・マシン図の一例を示す。
構成可能ユニット内の構成ストアのロードをサポートする構造の論理的表示である。
再構成可能データ・プロセッサに接続されたホストの動作を示すフローチャートである。
マスタAGCUの一部とすることができ、そうでなければタイル内の構成可能ユニットのアレイと通信することができる構成ロード・コントローラの動作を示すフローチャートである。
構成ファイルの編成例を示す図である。
図2及び図3のようなシステムのアレイ構成ロード処理を実行するロジックの一例を示すステート・マシン図である。
図10のような分配シーケンスの早期ラウンドのタイミングを示すタイミング図である。
構成可能ユニットにおけるユニット構成ロード処理を示すフローチャートである。
図2及び図3のようなシステムのアレイ構成アンロード処理を実行するロジックの一例を示すステート・マシン図である。
構成可能ユニットにおけるユニット構成アンロード処理を示すフローチャートである。
以下の説明は、典型的には特定の構造的な実施形態及び方法を参照する。本技術を、具体的に開示された実施形態及び方法に限定する意図はないが、本技術は他の特徴、素子、方法、及び実施形態を使用して実施されてもよいことを理解されたい。好ましい実施形態は、本技術を例示するために記載されており、請求項によって定義される本技術の範囲を限定するものではない。当業者であれば、以下の説明に対して様々な均等な変形を認識するのであろう。
図1には、ホスト120、メモリ140、再構成可能データ・プロセッサ110を含むシステムを説明するシステム図が示されている。図1の例に示すように、再構成可能データ・プロセッサ110は、構成可能ユニットのアレイ190と、構成ロード/アンロード・コントローラ195とを含む。本明細書で使用される「構成ロード/アンロード・コントローラ」という語句は、構成ロード・コントローラと構成アンロード・コントローラとの組合せを指す。構成ロード・コントローラ及び構成アンロード・コントローラは別個のロジック及びデータ・パス・リソースを使用して実装されてもよく、または特定の実施形態に適合するように、共用のロジック及びデータ・パス・リソースを使用して実装されてもよい。幾つかの実施形態では、システムは本明細書で説明するタイプの構成ロード・コントローラのみを含むことができる。幾つかの実施形態では、システムは本明細書で説明するタイプの構成アンロード・コントローラのみを含むことができる。
プロセッサ110は、ホスト120に接続された外部I/Oインタフェース130と、メモリ140に接続された外部I/Oインタフェース150とを含む。I/Oインタフェース130、150は、バス・システム115を介して、構成可能ユニットのアレイ190と、構成ロード/アンロード・コントローラ195とに接続する。バス・システム115は、データの1つのチャンクを搬送するバス幅を有してもよく、本例ではバス幅は128ビットとすることができる(全体を通した128ビットへの言及は、より一般的にはチャンク・サイズの一例と見なすことができる)。一般に、構成ファイルのチャンクはビット数Nのデータを有することができ、バス・システムはNビットのデータを1つのバス・サイクルで転送するように構成することができ、ここで、Nは、任意の実用的なバス幅である。分配シーケンスで分配されるサブファイルは、1つのチャンク、または特定の実施形態に適した他のデータ量で構成することができる。本明細書では、それぞれがデータの1チャンクから成るサブファイルを使用する手続きについて、説明される。もちろん、この技術は、例えば2つのバス・サイクルで分配された2つのチャンクで構成されるサブファイルを含む、異なるサイズのサブファイルを分配するように構成することができる。
構成ファイルを用いて構成可能ユニットのアレイ190内の構成可能ユニットを構成するために、ホスト120は、再構成可能データ・プロセッサ110内のインタフェース130、バス・システム115、及びインタフェース150を介して、構成ファイルをメモリ140に送信することができる。構成ファイルは、構成可能プロセッサ110外のデータパス内を含む特定のアーキテクチャに適するように、多くの方法でロードされ得る。構成ファイルは、メモリ・インタフェース150を介してメモリ140から検索することができる。次いで、構成ファイルのチャンクは、本明細書に説明するように、再構成可能データ・プロセッサ110内の構成可能ユニットのアレイ190内の構成可能ユニットに、分配シーケンスで送信することができる。
外部クロック発生器170または他のクロック信号源は、構成可能ユニットのアレイ190、バス・システム115、及び外部データI/Oインタフェースを含む、再構成可能データ・プロセッサ110内の素子にクロック信号175またはクロック信号を供給することができる。
図2は、CGRA(粗粒度再構成可能アーキテクチャ)プロセッサの構成要素の簡略化されたブロック図である。この例では、CGRA プロセッサは2つのタイル(タイル1、タイル2)を有する。タイルは、この例ではアレイ・レベル・ネットワークを含む、バス・システムに接続された構成可能ユニットのアレイを含む。バス・システムは、タイルを外部I/Oインタフェース205(または任意の数のインタフェース)に接続するトップ・レベル・ネットワークを含む。他の実施形態では、異なるバス・システム構成を利用することができる。各タイルにおける構成可能ユニットは、本実施形態におけるアレイ・レベル・ネットワーク上のノードである。
4つのタイルのそれぞれは、4つのAGCU(アドレス生成及び結合ユニット)(例えば、MAGCU1、AGCU12、AGCU13、AGCU14)を有する。AGCUは、トップ・レベル・ネットワーク上のノードとアレイ・レベル・ネットワーク上のノードであり、各タイル内のトップ・レベル・ネットワーク上のノードとアレイ・レベル・ネットワーク上のノード間でデータをルーティングするためのリソースを含む。
この例のトップ・レベル・ネットワーク上のノードには、インタフェース205を含む1以上の外部I/Oが含まれる。外部デバイスへのインタフェースは、トップ・レベル・ネットワーク上のノードと、インタフェースに接続された大容量メモリ、ホストプロセッサ、他のCGRAプロセッサ、FPGAデバイスなどの外部デバイスとの間でデータをルーティングするためのリソースを含む。
タイル内のAGCUの内の1つは、この例ではマスタAGCUであるように構成され、このマスタAGCUはタイルのためのアレイ構成ロード/アンロード・コントローラを含む。他の実施形態では、2つ以上のアレイ構成ロード/アンロード・コントローラを実装することができ、1つのアレイ構成ロード/アンロード・コントローラを、2以上のAGCUに分配されたロジックによって実装することができる。
MAGCU1はタイル1のための構成ロード/アンロード・コントローラを含み、MAGCU2は、タイル2のための構成ロード/アンロード・コントローラを含む。他の実施形態では、複数のタイルのロード及びアンロード構成のために、構成ロード/アンロード・コントローラを設計することができる。他の実施形態では、単一のタイルの構成のために、2以上の構成コントローラを設計することができる。また、構成ロード/アンロード・コントローラは、トップ・レベル・ネットワーク及びアレイ・レベル・ネットワーク上のスタンドアロン・ノードとしてのものを含む、システムの他の部分に実装することができる。
トップ・レベル・ネットワークは、AGCU及びI/Oインタフェース205を含むトップ・レベル・ネットワーク上の他のノードと同様に、互いに接続するトップ・レベル・スイッチ(211~216)を使用して構築される。トップ・レベル・ネットワークはトップ・レベル・スイッチを接続するリンク(例えば、L11、L12、L21、L22)を含む。データは、リンク上のトップ・レベル・スイッチ間、及び、スイッチからスイッチに接続されているネットワーク上のノードへ、パケットで移動する。例えば、トップ・レベル・スイッチ211及び212はリンクL11によって接続され、トップ・レベル・スイッチ214及び215はリンクL12によって接続され、トップ・レベル・スイッチ211及び214はリンクL13によって接続され、トップ・レベル・スイッチ212及び213はリンクL21によって接続される。リンクは、1以上のバスと、例えばチャンク・ワイド・バス(ベクトル・バス)を含むサポート制御ラインとを含むことができる。例えば、トップ・レベル・ネットワークは、AXI互換プロトコルに類似した方法で、データの転送のために協調して動作可能なデータ、リクエスト及び応答チャネルを含むことができる。AMBA(登録商標) AXI及びACE プロトコル仕様書、ARM,2017を参照されたい。
トップ・レベル・スイッチは、AGCUに接続することができる。例えば、トップ・レベル・スイッチ211、212、214及び215は、タイル1内のMAGCU1、AGCU12、AGCU13、及びAGCU14にそれぞれ接続される。トップ・レベル・スイッチ212、213、215及び216は、タイル2内のMAGCU2、AGCU22、AGCU23、及びAGCU24にそれぞれ接続される。
トップ・レベル・スイッチは1以上の外部I/Oインタフェース(例えば、インタフェース205)に接続され得る。
図3は、図2の構成で使用可能なタイル及びアレイ・レベル・ネットワークの簡略図であり、アレイ内の構成可能ユニットは、アレイ・レベル・ネットワーク上のノードである。
この例では、構成可能ユニット300のアレイが複数のタイプの構成可能ユニットを含む。この例における構成可能ユニットのタイプは、パターン計算ユニット(PCU)、パターン・メモリ・ユニット(PMU)、スイッチ・ユニット(S)、及びアドレス生成及び結合ユニット(それぞれ2つのアドレス生成器AG及び共用CUを含む)を含む。これらのタイプの構成可能ユニットの機能の例については、「Prabhakar et al., "Plasticine: A Reconfigurable Architecture For Parallel Patterns", ISCA '17, June 24-28, 2017, Toronto, ON, Canada」を参照されたく、また、上記文献は本明細書に完全に記載されているかのように参照により組み込まれる。これらの構成可能ユニットのそれぞれは、プログラムを実行するためのセットアップまたはシーケンスの何れかを表すレジスタまたはフリップフロップのセットを含む構成ストアを含み、ネスト化されたループの数、各ループ・イテレータの限界、各ステージに対して実行される命令、オペランドのソース、及び、入力及び出力インタフェースのネットワーク・パラメータを含むことができる。
さらに、これらの構成可能ユニットのそれぞれは、ネスト化されたループまたは他のものにおける進行を追跡するために使用可能な状態を記憶するレジスタまたはフリップフロップのセットを備える構成ストアを含む。構成ファイルは、プログラムを実行する各構成要素の初期構成または開始状態 を表すビットストリームを含む。このビットストリームは、ビットファイルと呼ばれる。プログラム・ロードは、ビットファイルの内容に基づいて構成可能ユニットのアレイに構成ストアをセットアップし、全ての構成要素がプログラム(つまり、マシン)を実行できるようにする処理である。また、プログラム・ロードは、全てのPMUメモリのロードを必要とすることもある。
アレイ・レベル・ネットワークは、アレイ内の構成可能ユニットを相互接続するリンクを含む。アレイ・レベル・ネットワーク内のリンクは、1以上の物理バスを含み、この場合では、チャンクレベル・ベクトル・バス(例えば、128ビットのデータ)、ワードレベル・スカラバス(例えば、32ビットのデータ)、及び複数ビットレベル制御バスの3種類の物理バスを含む。例えば、スイッチ・ユニット311と312との間の相互接続321は、128ビットのベクトル・バス幅を有するベクトル・バス相互接続と、32ビットのスカラバス幅を有するスカラバス相互接続と、制御バス相互接続とを含む。
3種類の物理バスは、転送されるデータの粒度が異なる。一実施形態では、ベクトル・バスがそのペイロードとして16バイト(=128ビット)のデータを含むチャンクを搬送することができる。スカラ・バスは32ビットのペイロードを持つことができ、スカラ・オペランドまたは制御情報を搬送することができる。制御バスは、トークン及び他の信号などの制御ハンドシェイクを搬送することができる。ベクトル・バスとスカラバスはパケット交換が可能であり、各パケットの宛先を示すヘッダと、パケットが順不同で受信されたときにファイルを再構成するために使用できるシーケンス番号などのその他の情報を含む。各パケットヘッダには、宛先スイッチ・ユニットの地理的座標(例:アレイ内の行と列)を識別する宛先識別子と、宛先ユニットに到達するために使用される宛先スイッチ上のインタフェースを識別するインタフェース識別子(例:北、南、東、西など)を含めることができる。制御ネットワークは、例えば、デバイス内のタイミング回路に基づいて回路を切り替えることができる。構成ロード/アンロード・コントローラは、128ビットの構成データのチャンクごとにヘッダを生成できる。ヘッダは、ヘッダバス上で、構成可能ユニットのアレイ内の各構成可能ユニットに送信される。
一例では、128ビットのデータのチャンクが構成可能ユニットへのベクトル入力としてチャンクを提供するベクトル・バス上で送信される。ベクトル・バスには、128本のペイロードラインと、一組のヘッダラインを含めることができる。ヘッダには、チャンクごとに、シーケンスIDを含めることができ、それは、以下を含み得る:
・ チャンクがスクラッチパッド・メモリか構成ストアデータかを示すビット。
・ チャンク番号を形成するビット。
・ 列識別子を示すビット。
・ 行識別子を示すビット。
・ 構成要素識別子を示すビット。
ロード動作の場合、構成ロード・コントローラは、N-1から0までの順序で、N個のチャンクを構成可能ユニットに送信することができる。この例では、6つのチャンクが、チャンク5->チャンク4->チャンク3->チャンク2->チャンク1ー>チャンク0 の最上位ビット・ファーストの順序で送信される(この最上位ビット・ファーストの順序は、チャンク5がアレイ構成ロード・コントローラからの分配シーケンスのラウンド0に分配されることに注意する)。アンロード動作の場合、構成アンロード・コントローラは、順序のアンロード・データをメモリに書き出すことができる。ロード動作及びアンロード動作の両方について、構成可能ユニット内の構成データストア内の構成シリアル・チェーン内のシフトは、LSB(最下位ビット)からMSB(最上位ビット)へ、またはMSBアウト・ファーストである。
図3Aは、アレイ・レベル・ネットワーク内の素子を接続する例示的なスイッチ・ユニットを示す。図3Aの例に示すように、スイッチ・ユニットは、8つのインタフェースを有することができる。スイッチ・ユニットの北、南、東、及び西インタフェースは、スイッチ・ユニット間の接続に使用される。スイッチ・ユニットの北東、南東、北西、及び南西インタフェースはそれぞれ、PCUまたはPMUインスタンスへの接続を行うために使用される。各タイル象限内の2つのスイッチ・ユニットのセットは、複数のアドレス生成(AG)ユニットと、複数のアドレス生成ユニットに接続された結合ユニット(CU)とを含むアドレス生成及び結合ユニット(AGCU)への接続を有する。結合ユニット(CU)はAG間を調停し、メモリ・リクエストを処理する。スイッチ・ユニットの8つのインタフェースのそれぞれは、ベクトル・インタフェース、スカラ・インタフェース、及び、ベクトルネットワーク、スカラ・ネットワーク、及び制御ネットワークと通信するための制御インタフェースを含むことができる。
構成後のマシンの実行中に、データは、アレイ・レベル・ネットワーク上の1以上のスイッチ・ユニットのベクトル・バス及びベクトル・インタフェースを使用して、1以上のユニットスイッチ及びユニットスイッチ間の1以上のリンクを介して構成可能ユニットに送信することができる。
本明細書で説明する実施形態では、タイルの構成前に、構成ファイルまたはビットファイルを、同じベクトル・バスを使用して構成ロード・コントローラから、アレイ・レベル・ネットワーク上の1以上のスイッチ・ユニットのベクトル・バス及びベクトル・インタフェースを使用して、1以上のユニットスイッチと、ユニットスイッチ間の1以上のリンクとを介して、構成可能ユニットに送信することができる。例えば、構成可能ユニットPMU341に特有のユニットファイル内の構成データのチャンクは、構成ロード/アンロード・コントローラ301からPMU341に、構成ロード/アンロード・コントローラ301とスイッチ・ユニット311の西(W)ベクトル・インタフェースとの間のリンク320、スイッチ・ユニット311、及びスイッチ・ユニット311の南東(SE)ベクトル・インタフェースとPMU341との間のリンク331を介して、送信することができる。
この例では、AGCUの内の1つは構成ロード/アンロード・コントローラ(例えば、301)を含むマスタAGCUであるように構成される。マスタAGCU は、ホスト(図1の120)がバス・システムを介してマスタAGCUにコマンドを送信できるレジスタを実装している。マスタAGCUはタイル内の構成可能ユニットのアレイ上での操作を制御し、レジスタへの書き込みを通じてホストから受信したコマンドに基づいてタイルの状態を追跡するプログラム制御ステート・マシンを実装する。状態遷移ごとに、マスタAGCUはデイジー・チェーン接続されたコマンド・バスを介してタイル上の全ての構成要素にコマンドを発行する(図4)。コマンドには、タイル内の構成可能ユニットのアレイで構成可能ユニットをリセットするプログラム・リセット・コマンドと、構成可能ユニットに構成ファイルをロードするプログラム・ロード・コマンドが含まれる。
マスタAGCUの構成ロード・コントローラは、メモリから構成ファイルを読み取ることと、タイルの全ての構成可能ユニットに構成データを送信することを担っている。マスタAGCUは、好ましくはトップ・レベル・ネットワークの最大スループットで、メモリから構成ファイルを読み取ることができる。メモリから読み出されたデータは、マスタAGCUによって、アレイ・レベル・ネットワーク上のベクトル・インタフェースを介して、本明細書で説明する分配シーケンスに従って、対応する構成可能ユニットに送信される。
一実施形態では、構成可能ユニット内の配線要件を低減可能な方法で、構成要素内における構成ロード処理でロードされるか、または構成アンロード処理でアンロードされるユニットファイルを保持する構成レジスタ及び状態レジスタは、シリアル・チェーンで接続され、シリアル・チェーンを介してビットをシフトする処理によってロードすることができる。幾つかの実施形態では、並列または直列に配置された2以上のシリアル・チェーンがあってもよい。構成可能ユニットが例えば128ビットの構成データをマスタAGCUから1バス・サイクルで受信すると、構成可能ユニットはこのデータをそのシリアル・チェーンを介して1サイクル当たり1ビットのレートでシフトさせる。ここで、シフト・サイクルは、バス・サイクルと同じレートで作動できる。構成可能ユニットが128ビットの構成ビットを、ベクトル・インタフェースを介して受信された128ビットのデータでロードするには、128シフト・サイクルを要する。128 ビットの構成データは、チャンクと呼ばれる。構成可能ユニットは、その全ての構成ビットをロードするために複数チャンクのデータを必要とすることがある。シフト・レジスタ構造の一例を図6に示す。
構成可能ユニットは、複数のメモリ・インタフェースを介してメモリとインタフェースする(図1の150)。メモリ・インタフェースのそれぞれには、幾つかのAGCUを使用してアクセスできる。各AGCUは、オフチップ・メモリのリクエストを生成するための再構成可能スカラ・データパスを含む。各AGCUは、送信するコマンド、データ、及び、オフチップ・メモリからの受信応答をバッファするためのFIFO(データを編成するための先入れ先出しバッファ)が含まれている。
AGCU内のアドレス生成器AGは、密または疎の何れかであるメモリコマンドを生成することができる。密リクエストは連続するオフチップ・メモリ領域をバルク転送するために使用することができ、構成可能ユニットのアレイ内の構成可能ユニットから/構成可能ユニットへのデータのチャンクを読み書きするために使用することができる。密リクエストは、AGCU内の連結ユニット(CU)によって複数のオフチップ・メモリ・バースト・リクエストに変換することができる。疎リクエストは、アドレスのストリームを結合ユニットにエンキューできる。結合ユニットは結合キャッシュを使用して、発行されたオフチップ・メモリ・リクエストのメタデータを維持し、同じオフチップ・メモリ・リクエストに属する疎アドレスを組み合わせて、発行されたオフチップ・メモリ・リクエストの数を最小限に抑える。
図4は、パターン計算ユニット(PCU)などの例示的な構成可能ユニット400を示すブロック図である。構成可能ユニットのアレイ内の構成可能ユニットは、対応する構成可能ユニットに特有の構成データの複数のチャンク(または他のサイズのサブファイル)を含むユニットファイルを格納するための構成データストア420(例えば、シリアル・チェーン)を含む。構成可能ユニットのアレイ内の構成可能ユニットはそれぞれ、ユニット構成ロード処理を実行するために、ライン422を介して構成データストア420に接続されたユニット構成ロードロジック440を含む。ユニット構成ロード処理は、バス・システム(例えば、ベクトル入力)を介して、構成可能ユニットに特有のユニットファイルのチャンクを受信することと、受信したチャンクを構成可能ユニットの構成データストア420にロードすることとを含む。ユニット構成ロード処理は、図5を参照してさらに説明される。
構成データは、この例では複数の構成可能ユニット内の構成可能ユニットに格納され、ラッチのシリアル・チェーンを備え、ラッチは構成可能ユニット内のリソースの構成を制御するビットを格納する。構成データストアのシリアル・チェーンには、構成データ用のシフト・レジスタ・チェーンと、直列に接続された状態情報及びカウンタ値用の第2のシフト・レジスタ・チェーンを含めることができる。構成ストアについては、図6を参照してさらに説明する。
構成可能ユニットは、スカラ入力/出力、ベクトル入力/出力、及び制御入力/出力の3つの対応する入力及び出力(IO)のセットを使用して、スカラバス、ベクトル・バス、及び制御バスとインタフェースすることができる。スカラIO は、データの単一ワード(32 ビットなど)の通信に使用できる。ベクトルIOは、ユニット構成ロード処理において構成データを受信し、構成後の動作中に複数のPCU間の長いパイプラインを介してデータを送受信するような場合に、データのチャンク(例えば、128ビット)を通信するために使用することができる。制御IOを使用して、構成可能ユニットの実行の開始または終了などの制御信号を通信することができる。制御入力は制御ブロック470によって受信され、制御出力は制御ブロック470によって供給される。
各ベクトル入力は、1以上のベクトルFIFOを含むことのできるベクトルFIFOブロック460内のベクトルFIFOを使用してバッファリングされる。各スカラ入力は、スカラFIFO450を使用してバッファリングされる。入力FIFOを使用することで、データのプロデューサとコンシューマ間のタイミングを切り離し、入力遅延不整合に対してロバストにすることによって、構成可能ユニット間の制御ロジックを単純化する。
入力構成データ410は、ベクトル入力としてベクトルFIFOに供給され、次いで構成データストア420に転送される。出力構成データ430は、ベクトル出力を使用して構成データストア420からアンロードすることができる。
CGRAは、ロード/アンロード・コマンドが完了した時を示すためにデイジー・チェーン接続された完了バスを使用する。マスタAGCUは、デイジー・チェーン接続されたコマンド・バスを介して、構成可能ユニットのアレイ内の構成可能ユニットにプログラム・ロード及びアンロード・コマンドを送信する(図5のS0からS1への遷移)。図4の例に示すように、デイジー・チェーン接続された完了バス491及びデイジー・チェーン接続されたコマンド・バス492がデイジー・チェーン・ロジック493に接続されており、これはユニット構成ロードロジック440と通信する。デイジー・チェーン・ロジック493は以下に説明するように、ロード完了状態ロジックを含むことができる。デイジー・チェーン接続された完了バスについては、以下でさらに説明する。コマンド・バス及び完了バスの他のトポロジも明らかに可能であるが、ここでは説明しない。
構成可能ユニットは、ブロック480内に複数の再構成可能データパスを含む。構成可能ユニット内のデータパスは、マルチステージ(ステージ1...ステージN)、再構成可能SIMD(単一命令、マルチデータ)パイプラインとして編成することができる。構成可能ユニットの構成シリアル・チェーンにプッシュされるデータのチャンクには、構成可能ユニットの各データパスの各ステージの構成データが含まれる。構成データストア420内の構成シリアル・チェーンは、ライン421を介してブロック480内の複数のデータパスに接続される。
パターン・メモリ・ユニット(例えば、PMU)はPCUで使用されるバス・インタフェースと共に、アドレス計算用の再構成可能スカラ・データパスに結合されたスクラッチパッド・メモリを含むことができる。PMUは、再構成可能ユニットのアレイ全体にオンチップメモリを分配するために使用することができる。一実施形態では、PMU内のメモリ内のアドレス計算がPMUデータパス上で実行され、コア計算がPCU内で実行される。
図5は、構成可能ユニットにおけるユニット構成ロード処理を制御するために使用され得るステート・マシンの一例を示す。一般に、ユニット構成ロード処理は、1つのバス・サイクルにおいてバス・システムから構成可能ユニットに特有のユニットファイルの第1のチャンク(またはサブファイル)を受信し、ユニットファイルの第2のチャンクが受信される前に、バス・サイクルと同じレートで発生する後続のシフト・サイクル中に、受信された第1のチャンクをシリアル・チェーンにプッシュし始める。後のバス・サイクルにおいて、構成可能ユニットに特有のユニットファイルの第2のチャンクをバス・システムから受信すると、処理は先に受信したチャンクをシリアル・チェーンにプッシュした後のサイクル中に、受信した第2のチャンクをシリアル・チェーンにプッシュし始める。構成ロード処理の幾つかのまたは全てのラウンドでは、複数の順序付けられたチャンク内の第2のチャンク(ユニットファイルのチャンクの順序で次に)が構成可能ユニットによって受信される前に、構成可能ユニット内でユニット構成ロード処理によって第1のチャンクを消費することができる。
図5のステート・マシンは、6つの状態S0~S5を含む。状態S0(アイドル)では、ユニット構成ロード処理がマスタAGCU内の構成ロード/アンロード・コントローラからの構成ロード/アンロード・コマンドを待つ。構成ロード/アンロード・コントローラは、オフチップメモリ(図1の140)からの/への、及び、構成可能ユニットのアレイ(図1の190)への/からの、構成データのロード/アンロードを行う。構成ロード/アンロード・コントローラでロード・コマンドが受信されると、ユニット構成ロード処理は状態S1に入る。
状態S1(静止待ち)では、複数のデータパス内の機能的フロップはディスエーブルされ、機能的フロップは循環せず、スカラ出力、ベクトル出力、及び制御出力はオフにされ、出力は如何なる負荷も駆動しない。ロード・コマンドが受信された場合、ユニット構成ロード処理は状態S2に入る。アンロード・コマンドが受信されると、ユニット構成ロード処理は状態S4に入る。
状態S2(入力有効待ち)では、ユニット構成ロード処理は入力FIFO(図6の610) が有効になるまで待機する。入力FIFOが有効になると、入力FIFOはバス・システム経由で構成ファイルの構成データのチャンクを受信した。例えば、構成データのチャンクは、128ビットのロードデータを含むことができ、これはバス・システムのベクトル・ネットワークで受信され、ベクトル・ネットワークのベクトル・バス幅は128ビットである。入力FIFOが有効になると、ユニット構成ロード処理は状態S3に入る。
状態S3(ロードシフト)では、128ビットの構成データのチャンクが最初に入力FIFOから1クロックサイクルでデキューされ、128ビットの構成データのチャンクが128クロックサイクルで入力シフト・レジスタ(図6の620)にシフトされる。入力シフト・レジスタは構成データのチャンクと同じ長さ(例えば、128ビット)を有することができ、構成データのチャンクを入力シフト・レジスタ内にシフトするのに、構成データのチャンクの長さと同じ数のシフト・クロックサイクル(例えば、128)を要する。上述のように、幾つかの実施形態では、シフト・クロック及びバスクロック(またはバス・サイクル)は同じレートで動作することができる。
構成可能ユニット内の構成データストアは、構成可能ユニットに特有の構成データの複数のチャンクを備えるユニットファイルを格納するために、FIFOチェーンとして構成され得る構成シリアル・チェーン(図6の630、640)を備える。構成データの複数のチャンクは、構成データの最初のチャンクと、構成データの最後のチャンクとを含む。入力シフト・レジスタ内の構成データのチャンクは、後続のクロックサイクルで構成データストア内にさらにシリアルにシフトされる。構成データストアについては、図6を参照してさらに説明する。
構成可能ユニットに特有のユニットファイルの最初のチャンクが状態S3で入力シフト・レジスタにシフトされた後、ユニット構成ロード処理は、構成データの最初のチャンクが構成可能ユニットに特有の構成データの最後のチャンクであるかどうかを判断する。最後のチャンクである場合、構成可能ユニットのユニットファイルのロードは完了し、ユニット構成ロード処理は状態S0に入る。最後のチャンクでない場合、ユニット構成ロード処理は状態S2 に入り、入力FIFO が構成可能ユニットに特有の構成データの2番目のチャンクに対して有効になるのを待つ。
状態S1においてアンロード・コマンドが受信されると、ユニット構成ロード処理は状態S4に入る。
状態S4(アンロードシフト)で、構成データストアからの構成データのチャンクが出力シフト・レジスタ内にシフトされる(図6の650)。構成データのチャンクには、128ビットのアンロード・データを含めることができる。出力シフト・レジスタは、構成データのチャンクと同じ長さ(例えば、128)を有することができ、構成データのチャンクを構成データストアから出力FIFO内にシフトするのに、構成データのチャンクの長さと同じ数のシフト・クロック・サイクル(例えば、128)を要する。構成データのチャンクが出力シフト・レジスタ内にシフトされると、ユニット構成ロード処理は状態S5(出力有効待ち)に入る。
状態S5(出力有効待ち)において、ユニット構成ロード処理は、出力FIFO(図6の660)が有効になるのを待つ。出力FIFOが有効になると、出力シフト・レジスタから128 ビットの構成データのチャンクが1クロックサイクルで出力FIFO に挿入される。出力FIFO内の構成データのチャンクは、バス・システムに送信できる(図3)。
状態S5で、構成データの最初のチャンクが出力FIFOにシフトされた後、ユニット構成ロード処理は、構成データの最初のチャンクが構成データストア内の構成データの最後のチャンクであるかどうかを判断する。最後のチャンクである場合、構成可能ユニットの構成データのアンロードが完了し、ユニット構成ロード処理は状態S0に入る。最後のチャンクでない場合、ユニット構成ロード処理は状態S4に入り、構成データストアからの構成データの第2のチャンクが出力シフト・レジスタにシリアルにシフトされる。
図6は、構成可能ユニット内の構成ストアの論理的表示である。構成可能ユニット内の構成データストア(図4の420)は、本実施形態では第1のシフト・レジスタ・チェーン630及び第2のシフト・レジスタ・チェーン640を含む構成シリアル・チェーンを備える。第1のシフト・レジスタ・チェーン630は、1組のレジスタまたはラッチを含む。第2のシフト・レジスタ・チェーン640は、別の1組のレジスタまたはラッチ(フリップフロップ)を含む。第1のシフト・レジスタ・チェーン及び第2のシフト・レジスタ・チェーンは、本実施形態では直列に接続されて単一のチェーンを形成する。
構成ファイルは、構成可能ユニットのアレイ内の複数の構成可能ユニット内の構成可能ユニットごとに、構成データの複数のチャンクを含む。構成データのチャンクは、それぞれの構成可能ユニットの初期構成または開始状態を表す。本システムにおける構成ロード操作は、構成可能ユニットのアレイに構成データのユニットファイルを設定して、全ての構成可能ユニットがプログラムを実行できるようにする処理である。
第1のシフト・レジスタ・チェーン630内のレジスタのセットは、レジスタを含む構成可能ユニットの動作の定義を含む、プログラムを実行するためのセットアップまたはシーケンスの何れかを表すことができる。これらのレジスタは、ネスト化されたループの数、各ループ・イテレータの限界、各ステージに対して実行される命令、オペランドのソース、及び入力及び出力インタフェースのネットワーク・パラメータを登録できる。第2のシフト・レジスタ・チェーンのレジスタのセットには、構成可能ユニットにロードされたプログラムのサイクルごとの実行状態に関するデータを含めることができる。
図6の例に示されるように、第1のシフト・レジスタ・チェーン630及び第2のシフト・レジスタ・チェーン640は直列に接続され、その結果、第1のシフト・レジスタ・チェーンのMSB(最上位ビット)は第2のシフト・レジスタ・チェーンのLSB(最下位ビット)に接続される。ロード信号またはアンロード信号は第1のシフト・レジスタ・チェーンのLSB及び第2のシフト・レジスタ・チェーンのLSBに結合されたシフトイネーブル信号として作用し、第1のシフト・レジスタ・チェーン及び第2のシフト・レジスタ・チェーン上のロード/アンロード動作を制御することができる。入力FIFO610は、セレクタ670を介して入力シフト・レジスタ620に結合される。セレクタ670はロード信号がアクティブであるとき、入力シフト・レジスタ620を構成データストア(第1のシフト・レジスタ・チェーン630のLSB)の入力に接続する。
ロード信号がアクティブであるとき、入力シフト・レジスタ620内の構成データは、構成シリアル・チェーン内の第1のシフト・レジスタ・チェーン630及び第2のシフト・レジスタ・チェーン640にシフトされ得る。ここで、ロード信号は、入力シフト・レジスタ、第1シフト・レジスタ・チェーン、及び第2シフト・レジスタ・チェーンのイネーブル信号として作用し得る。構成可能ユニットの構成データの全てのチャンクが構成可能ユニットの構成データストアにロードされるまで、ロード操作を繰り返すことができる。シリアル・チェーンの長さが整数個のチャンク(またはサブファイル) の長さと異なる場合、直列状の最初のチャンクに差分を埋め込むことができ、最後のチャンクがシフトインされると、パッドビットがチェーンの最後にシフトアウトされる。例えば、構成可能ユニット内の構成データストアは、760ビットのサイズを有するユニットファイルを記憶することができる。ユニット構成ロード処理は、整数N個のチャンクをロードすることができる。この例では、N=6であり、N個のチャンクは、チャンク5、チャンク4、チャンク3、チャンク2、チャンク1及びチャンク0を含む。ベクトル・バスのベクトル幅は128 ビット、構成データのチャンクは128 ビットで、チャンクは1つのバスクロックサイクルで構成可能ユニットに送信できる。N個のチャンクのサイズは、N×128=6×128=768ビットで、これには760ビットのユニットファイルサイズに一致させるための8パッドビットが含まれる。
エラーから回復するために、アンロード操作は、各構成可能ユニットの状態をチェックポイントすることができる。アンロード操作では、再起動に必要な各構成可能ユニットの実行状態を保存し、エラーが発生した場合にアプリケーションを再起動できるようにすることができる。また、構成可能ユニットの状態を保存したり、デバッグ目的で転送したりすることもできる。保存する必要がある状態は、少なくとも第1または第2のシフト・レジスタの一部の内容と、オプションでPMUメモリの内容が含まれる。プログラム・アンロードは、第1及び第2のシフト・レジスタの全ての状態をアンロードすることも必要とすることがある。
出力FIFO660は、出力シフト・レジスタ650に結合され、このシフト・レジスタは次に、構成データストアの出力(第2のシフト・レジスタ・チェーン640のMSB)に結合される。アンロード操作の場合、アンロード信号がアクティブであるとき、第2のシフト・レジスタ・チェーン640及び第1のシフト・レジスタ・チェーン630内の構成データを出力シフト・レジスタ650にシフトすることができる。出力FIFO660が有効であるとき、出力シフト・レジスタ650内の構成データ(例えば128ビット)を、1クロックサイクルで出力FIFO660に挿入することができる。アンロード操作は、構成可能ユニットの構成データストア内の構成データの全てのチャンクが出力FIFOにアンロードされるまで繰り返すことができる。
MAGCU内の構成ロード・コントローラによって発行された構成ロード・コマンドの完了と同期して、通信するために、一例では、チェーンの各構成要素内のデイジー・チェーン・ロジック(例えば、図4のデイジー・チェーン・ロジック493)に含まれるロジックによってサポートされる単一ワイヤ・デイジー・チェーン方式が実装される。このスキームでは、全ての構成要素が次の2つのポートを持つ必要がある:
1. PROGRAM_LOAD_DONE_INという入力ポート
2. PROGRAM_LOAD_DONE_OUTという出力ポート
構成要素は、MAGCUによって発行されたコマンドの実行を完了し、そのPROGRAM_LOAD_DONE_IN入力がhighに駆動されると、そのPROGRAM_LOAD_DONE_OUT信号を駆動する。MAGCU は、コマンドの実行に必要な全てのステップが完了すると、PROGRAM_LOAD_DONE_OUTを駆動してデイジー・チェーンを開始する。チェーンの最後の構成要素は、MAGCUのPROGRAM_LOAD_DONE_INに接続されるPROGRAM_LOAD_DONE_OUTを駆動する。MAGCUのPROGRAM_LOAD_DONE_INがhighになると、コマンドの完了を示す。全ての構成要素の全てのチャンクに対応するデータを配信した後、MAGCUはそのPROGRAM_LOAD_DONE_OUTポートをhighに駆動する。全ての構成要素は、全ての構成ビットのロードを完了すると、それぞれのPROGRAM_LOAD_DONE_OUTポートをhighに駆動する。
MAGCUの入力ポートPROGRAM_LOAD_DONE_INがアサートされると、構成ファイルのロードが完了する。
図7は、再構成可能データ・プロセッサに接続されたホストの動作を示すフローチャートである。ステップ711で、ホスト(図1の120)はPCIEインタフェース(図1の130)及びトップ・レベル・ネットワーク(図1の115)を介して、構成可能ユニットのアレイのための構成ファイルをオフチップメモリ(図1の140)に送信するか、そうでなければ、構成可能プロセッサにアクセス可能なメモリに構成ファイルを格納する。
ステップ712で、構成ファイルのメモリへのロードが完了すると、ホスト120は、プロセッサ内の構成ロード・コントローラ(この例ではマスタAGCUの一部)に構成ロード・コマンドを送信する。マスタAGCUは、ホストが構成ロード・コントローラに構成ロード・コマンドを送信できるレジスタを実装できる。構成ロード・コマンドは、構成可能プロセッサのメモリ・インタフェースを介してアクセス可能なメモリ内の位置を識別できる。その後、構成ロード・コントローラは、構成ファイルを取得するコマンドに応答して、トップ・レベル・ネットワークを介して1以上のメモリ・アクセス・リクエストを生成できる。その後、ホストは、構成ファイルが完全にロードされたことを示す信号(714)について、構成可能プロセッサを監視できる。ファイルのロードが完了すると、ホストはマシン(716)によって実行される機能を開始できる。
図8は、MAGCUの一部となり得る、さもなければタイル内の構成可能ユニットのアレイと通信できる構成ロード・コントローラの動作を示すフローチャートである。構成ロード・コントローラは、オフチップメモリ(図1の140)から構成ファイルを読み出すことと、構成可能ユニットのアレイ内の全ての構成可能ユニットに構成データを送信することを行う。このフローチャートは、構成ロード・コントローラが構成ロード・コマンドを待つこと(810)から始まる。上述のように、構成ロード・コマンドは、構成ファイルと、プロセッサがアクセス可能なメモリ内のその位置を識別する。
ロード・コマンドを受信すると、ステップ811で、構成ロード・コントローラは、再構成可能データ・プロセッサ(図1の110)に接続されたメモリ(図1の140)にロード・リクエストを発行する。ステップ812で、構成ロード・コントローラは、メモリ・インタフェースを介してトップ・レベル・ネットワーク上の構成ファイルのチャンクを取得する。ステップ813で、構成ロード・コントローラは、構成ファイルのチャンクを、順序付けされたラウンドでアレイ・レベル・ネットワーク上のアレイ内の構成可能ユニットに分配する。構成ファイルの全てのチャンクが受信され、分配されると、構成ロード・コントローラは、ステップ814で、分配完了信号(例えば、そのPROGRAM_LOAD_DONE_OUT)を生成する。次に、構成ロード・コントローラは、ステップ815で、例えばPROGRAM_LOAD_DONE_INのアサーションによって示される、それぞれのユニットファイルがロードされたことの構成可能ユニットからの確認を待つ。構成ロードの成功が確認されると、構成ロード・コントローラはホストに通知することができる(816)。
図9は、構成ファイルの一構成例を示している。構成ファイルをロード及びアンロードするための特定のプロトコルに適合するように用意された他の構成も、同様に使用することができる。図9を参照して説明した例では、構成可能ユニットのアレイ内の構成可能ユニットがスイッチ、PCU、PMU、及びAGCUを含む。これらの構成可能ユニットのそれぞれは、プログラムを実行するセットアップまたはシーケンスを表すレジスタのセットを含む。これらのレジスタには、ネスト化されたループの数、各ループ・イテレータの限界、各ステージに対して実行される命令、オペランドのソース、入力及び出力インタフェースのネットワーク・パラメータなど、それを含む構成可能ユニットの動作を定義するデータが含まれている。さらに、各構成ファイルには、ネスト化された各ループでの進捗を追跡するカウンタのセットにコンテキストを設定するデータが含まれる。
実行可能なプログラムは、プログラムを実行する構成可能ユニットそれぞれの初期構成または開始状態を表すビットストリームを含む。このビットストリームは、ビットファイル、またはここでは構成ファイルと称される。プログラム・ロードは、構成ファイルの内容に基づいて構成可能ユニット内に構成ストアを設定し、全ての構成可能ユニットがプログラムを実行できるようにする処理である。プログラム・アンロードは構成可能ユニットから構成ストアをアンロードし、本明細書でアンロード構成ファイルと呼ばれるビットストリームをアセンブルする処理である。アンロード構成ファイルは、ここで説明する例では、プログラム・ロードに使用されるのと同じ配置のチャンクまたはサブファイルと構成ファイルを有する。
構成ファイルは、構成可能ユニットのアレイ内の構成可能ユニットごとに、構成データの複数のチャンクを含み、チャンクはそれらが分配されるシーケンスと一致するように、構成ファイル内に配置される。この構成ファイルの編成により、構成ファイル内のチャンクの位置に基づいて、構成可能ユニットにチャンクをルーティングするためのアレイ構成ロード処理が可能になる。
図9に示すように、構成ファイル(及び同様に配置されたアンロード構成ファイル)は、複数の構成可能ユニット内の構成可能ユニットごとにユニットファイルの複数のチャンクを含み、ユニットファイルは、ユニットファイル内の順序(i)を有する最大M個(本例ではZ4=6個)のサブファイルを有する。図9では、Mは6であり、チャンクは第1から第6まで順序付けられる(すなわち、第1から第6のチャンクは、このインデキシングにおけるチャンク(0)から(5)に対応する)。チャンクは、ロードまたはアンロード構成ファイル内の全てのユニットファイルについて、(i)が0からM-1までの順序(i)の全てのサブファイルが、(i)が0からM-1までのメモリ内のアドレス空間の対応するブロック(i)に格納されるように配置される。アドレスA0~A1-1を含むブロック(0)には、順序(0)のチャンクが格納される。この例におけるスイッチ・ユニットの順序(0)のチャンクは、ブロック(0)内の連続したアドレスのグループ内にある。PCUの順序(0)のチャンクは、ブロック(0)内の連続したアドレスのグループ内にある。PMUの順序(0)のチャンクは、ブロック(0)内の連続したアドレスのグループ内にある。AGCUの順序(0)のチャンクは、連続したアドレスのグループ内にある。順序(1)のチャンクは、アドレスA1~A2-1を含むブロック(1)に格納される。この例におけるスイッチ・ユニットの順序(1)のチャンクは、ブロック(1)内の連続したアドレスのグループ内に格納される。PCUの順序(1)のチャンクは、ブロック(1)内の連続したアドレスのグループ内にある。PMUの順序(1)のチャンクは、ブロック(1)内の連続したアドレスのグループ内にある。AGCUの順序(1)のチャンクは、ブロック(1)内の連続したアドレスのグループ内にある。順序3~5のチャンクは、図9に示すように、ブロック(2)~(5)のパターンに従って配置される。
図から分かるように、この例では、線形アドレス空間が、線境界上の構成ファイルに対して、ブロック内に割り振られる。他の実施形態では、線形アドレス空間が、ワード境界またはチャンク境界上に割り振ることができる。境界は、使用されるメモリの効率特性に適合するように選択することができる。従って、この例の構成ファイルは、シーケンシャル・ライン・アドレスを持つメモリのラインで構成される。
また、アレイは、複数タイプの構成可能ユニットを含み、異なるタイプの構成可能ユニットのユニットファイルは、異なる数の構成データのサブファイルを含み、アドレス空間のブロック(i)内で、各タイプの構成可能ユニットのサブファイルは、アドレス空間のブロック(i)内の対応する連続したアドレスのグループ内に格納される。
アレイには、複数タイプの構成可能ユニットを含めることができ、異なるタイプの構成可能ユニットのユニットファイルには、異なる数の構成データのチャンクを含めることができる。例えば、図3に示すように、アレイ内の構成可能ユニットのタイプは、スイッチ・ユニット、PCU(パターン計算ユニット)、PMU(パターン・メモリ・ユニット)、及びAGCU(アドレス生成及び結合ユニット)を含むことができる。
構成ファイルの編成例には以下が含まれる:
W(例えば、図3の28)個のスイッチ・ユニット、各ユニットはZ1個のチャンクの構成ビットを必要とする;
X(例えば、9)個のPCUユニット、各ユニットはZ2個のチャンクの構成ビットを必要とする;
Y(例えば、9)個のPMUユニット、各ユニットはZ3個のチャンクの構成ビットを必要とする;
Z(例えば、4)個のAGCUユニット、各ユニットはZ4個のチャンクの構成ビットを必要とする。
従って、第1タイプの構成可能ユニットのユニットファイルは、Z1個のチャンクを含むことができ、第2タイプの構成可能ユニットのユニットファイルは、Z2個のチャンクを含む。Z1はZ2未満である。アレイ構成ロード処理は、第1タイプ及び第2タイプの全ての構成可能ユニットのためのユニットファイルのチャンク(i)を含む構成ファイルのセグメントを、(i)が0からZ1-1までのZ1回のラウンドで検索し、次に、第2タイプの全ての構成可能ユニットのためのユニットファイルのチャンク(i)を含む構成ファイルのセグメントを、(i)がZ1からZ2-1までのZ2回のラウンドで検索することを含むことができる。第3タイプの構成可能ユニットのユニットファイルは、Z3個のチャンクを含むことができ、第4タイプの構成可能ユニットのユニットファイルはZ4個のチャンクを含む。Z1はZ2未満、Z2はZ3未満、Z3はZ4未満である。分配シーケンスは、このモードでは、(i+1)個より多い数のチャンクを必要とする様々なタイプの構成可能ユニットの全てに対して、チャンク(i)ごとに ラウンドで続行できる。
構成ファイルの編成例に示すように、構成ファイル内の構成データのチャンクはインターリーブ方式で配置される:
・ ラウンドR(i=0)におけるスイッチ・ユニットのそれぞれに対する2つのチャンクの構成ビットの1番目;
・ ラウンドR(i=0)におけるPCUユニットのそれぞれに対する3つのチャンクの構成ビットの1番目;
・ ラウンドR(i=0)におけるPMUユニットのそれぞれに対する5つのチャンクの構成ビットの1番目;
・ ラウンドR(i=0)におけるAGCUユニットのそれぞれに対する6つのチャンクの構成ビットの1番目;
・ ラウンドR(i=1)におけるスイッチ・ユニットのそれぞれに対する2つのチャンクの構成ビットの2番目;
・ ラウンドR(i=1)におけるPCUユニットのそれぞれに対する3つのチャンクの構成ビットの2番目;
・ ラウンドR(i=1)におけるPMUユニットのそれぞれに対する5つのチャンクの構成ビットの2番目;
・ ラウンドR(i=1)におけるAGCUユニットのそれぞれに対する6つのチャンクの構成ビットの2番目;
・ ラウンドR(i=2)におけるPCUユニットのそれぞれに対する3つのチャンクの構成ビットの3番目;
・ ラウンドR(i=2)におけるPMUユニットのそれぞれに対する5つのチャンクの構成ビットの3番目;
・ ラウンドR(i=2)におけるAGCUユニットのそれぞれに対する6つのチャンクの構成ビットの3番目;
・ ラウンドR(i=3)におけるPMUユニットのそれぞれに対する5つのチャンクの構成ビットの4番目;
・ ラウンドR(i=3)におけるAGCUユニットのそれぞれに対する6つのチャンクの構成ビットの4番目;
・ ラウンドR(i=3)におけるPMUユニットのそれぞれに対する5つのチャンクの構成ビットの5番目;
・ ラウンドR(i=4)におけるAGCUユニットのそれぞれに対する6つのチャンクの構成ビットの5番目;
・ ラウンドR(i=4)における4AGCUユニットのそれぞれに対する6つのチャンクの構成ビットの6番目。
ユニットファイルは、複数の順序付けられたチャンク(または他のサイズのサブファイル)を含むように編成することができる。異なる構成可能ユニットに特有のユニットファイルは、幾つかの実施形態において、異なる数の順序付きチャンクを有することができる。構成可能ユニットのアレイの構成ファイルは、ユニットファイルのチャンクが他のユニットファイルに対して同じ順序のチャンクでグループ化されるように配置される。また、構成ファイル内のチャンクの位置が、チャンクのアレイ内の構成可能ユニットと、構成可能ユニットに特有のユニットファイル内のその順序を示すように配置される。
アレイ構成ロード処理では、(i)が0からZ1-1(=1)までに対して、第1タイプ(スイッチタイプ)、第2タイプ(PCUタイプ)、第3タイプ(PMUタイプ)、第4タイプ(AGCUタイプ)の全ての構成可能ユニットのユニットファイルのチャンク(i)を含む構成ファイルのセグメントを取得できる。4つのタイプの構成可能ユニットの全てのユニットファイルのチャンク(0)は1回目のラウンドで取得され、4つのタイプの構成可能ユニットの全てのユニットファイルのチャンク(1)は2回目のラウンドで取得される。1回目と2回目のラウンド後に、第1タイプ(スイッチタイプ)の構成可能ユニットのユニットファイルの全て(2つ)の チャンクが取得された。第1、第2、第3、及び第4タイプの全ての構成可能ユニットのユニットファイルには、取得されるべきチャンクがそれぞれ0、1、3、及び4個残っている。
次に、アレイ構成ロード処理は、第3ラウンドにおける第2、第3、及び第4タイプの全ての構成可能ユニットについて、ユニットファイルのチャンク(i)を含む構成ファイルのセグメントを取得することができる。第3ラウンド以降、第2タイプ(PCUタイプ)の全ての構成可能ユニットのユニットファイルの全て(3つ)のチャンクが取得された。第1、第2、第3、及び第4タイプの全ての構成可能ユニットのユニットファイルには、取得されるべきチャンクがそれぞれ0、0、2、及び3個残っている。
次に、アレイ構成ロード処理は、第4ラウンドにおける第3及び第4タイプの全ての構成可能ユニットについて、ユニットファイルのチャンク(i)を含む構成ファイルのセグメントを取得することができる。第4ラウンドの後、第3タイプ(PMUタイプ)の全ての構成可能ユニットのユニットファイルの全て(4つ)のチャンクが取得された。第1、第2、第3、及び第4タイプの全ての構成可能ユニットのユニットファイルには、取得されるべきチャンクがそれぞれ0、0、1、及び2個残っている。
次に、アレイ構成ロード処理は、第5及び第6ラウンドで、(i)がZ3(=4)からZ4-1(5)に対して、第3及び第4タイプの全ての構成可能ユニットについて、ユニットファイルのチャンク(i)を含む構成ファイルのセグメントを取得することができる。第6ラウンドの後、第4タイプ(AGCUタイプ)の全ての構成可能ユニットのユニットファイルの全て(6つ)のチャンクが取得された。第1、第2、第3、及び第4タイプの全ての構成可能ユニットのユニットファイルには、取得されるべき残りのチャンクがそれぞれ0、0、0、及び0個ある。
上記の方法では、第1、第2、第3、及び第4タイプの全ての構成可能ユニットのユニットファイルが取得されるべきチャンクを有さなくなるまで、アレイ構成ロード処理を継続することができる。
アレイ構成ロード処理は、構成ファイル内のチャンクの位置によって示されるアドレスを使用して、構成データのチャンクをアレイ・レベル・ネットワーク経由で構成可能ユニットにルーティングする。例えば、198個のスイッチ・ユニットのそれぞれに対する構成データの2つのチャンクの内の1番目のチャンクは線形メモリ・アドレス0~12288を有し、198個のスイッチ・ユニットのそれぞれに対する構成データの2つのチャンクの内の2番目のチャンクは、線形メモリ・アドレス33792~46080を有する。
幾つかの実施形態では、構成ファイルのチャンクがメモリから構成ロード・コントローラに順序どおりに戻されない場合がある。構成ファイル内のチャンクの位置を使用して、チャンクを正しい構成可能ユニットにルーティングできる。分配シーケンス内のラウンドの編成のお陰で、構成可能ユニットは、そのユニットファイルのチャンクを順番に受信することが保証される。
図10は、図2及び図3のようなシステムに対して、アレイ構成ロード処理を実行するロジックの一例を示すステート・マシン図である。アレイ構成ロード処理は、複数の構成可能ユニット用のユニットファイルであって、それぞれが複数の順序付けられたチャンク(または、サブファイル)を有するユニットファイルを備える構成ファイルをアレイに分配することを含み、その構成ファイルの分配は、順序(i)の1ユニットチャンクを、バス・システムを介してN個のサブファイルまでを含む全ての構成可能ユニットに、構成ファイル内のユニットファイルが複数の構成可能ユニットに分配されるまで、Nラウンド(R(i)、i=0~N-1)のシーケンスで送信することにより実行される。
この例では、ステート・マシンは6つの状態S1~S6を含む。状態S1(アイドル)では、構成ロード・コントローラはホストからの構成ロード・コマンドを待機する。構成ロード・コマンドが受信されると、ロード処理は状態S2に入り、分配シーケンスの第1ラウンドR(0)の実行を開始する。各ラウンドは、状態S2~S6を横切る。本明細書で説明する例では、アレイ内の構成可能ユニットに分配されるチャンクの最大数が6であるため、6ラウンドが存在する。
状態S2(スイッチ・リクエスト)では、構成ロード・コントローラは、トップ・レベル・ネットワークを介してメモリ・アクセス・リクエストを生成し、各スイッチ・ユニットの構成ユニットファイルのラウンドR(i)の状態S2のチャンクを取得し、取得したチャンクを各スイッチ・ユニットに分配する。i=0 の場合、ラウンドR(0)では、構成ロード・コントローラは、各スイッチ・ユニットの複数のチャンク内のチャンク(0)に対するメモリ・アクセス・リクエストを生成し、チャンク(0)を各スイッチ・ユニットに送信する。i=1の場合、ラウンドR(1)では、構成ロード・コントローラは、各スイッチ・ユニットの複数のチャンク内のチャンク(1)に対するメモリ・アクセス・リクエストを生成し、該チャンクを各スイッチ・ユニットに送信する。ラウンドR(i)において、構成ロード・コントローラは、各スイッチ・ユニットの複数のチャンク内のチャンク(i)に対するメモリ・アクセス・リクエストを生成し、全てのスイッチ・ユニットに対してチャンクを分配したとき、ロード処理は状態S3に入る。
状態S3(PCUリクエスト)では、構成ロード・コントローラは、トップ・レベル・ネットワークを介してメモリ・アクセス・リクエストを生成し、各PCUユニット(パターン計算ユニット)の構成ユニットファイルのラウンドR(i)のチャンクを取得し、取得したチャンクを各PCUユニットに分配する。ラウンドR(i)の状態S3では、構成ロード・コントローラは、各PCUユニットの複数チャンク(i)に対するメモリ・アクセス・リクエストを生成し、チャンク(i)を各PCUユニットに送信する。ラウンドR(i)では、構成ロード・コントローラは、各PCUユニットの複数チャンク内のチャンク(i)に対するメモリ・アクセス・リクエストを生成し、チャンクを分配したとき、ロード処理は状態S4に入る。
状態S4(PMUリクエスト)では、構成ロード・コントローラは、トップ・レベル・ネットワークを介してメモリ・アクセス・リクエストを生成し、構成可能ユニットのアレイ内の各PMUユニット(パターンメモリユニット)の構成ユニットファイルのチャンクを取得し、取得したチャンクを各PMUユニットに送信する。ラウンドR(i)の状態S4では、構成ロード・コントローラは、各PMUユニットの複数のチャンク内のチャンク(i)に対するメモリ・アクセス・リクエストを生成し、チャンク(i)を各PMUユニットに送信する。例えば、i=0の場合、ラウンドR(0)では、構成ロード・コントローラは、各PMUユニットの複数のチャンク内のチャンク(0)に対するメモリ・アクセス・リクエストを生成し、チャンク(0)を各PMUユニットに送信する。i=1の場合、ラウンドR(1)では、構成ロード・コントローラは、各PMUユニットの複数のチャンク内のチャンク(1)に対するメモリ・アクセス・リクエストを生成し、チャンク(1)を各PMUユニットに送信する。ラウンドR(i)において、構成ロード・コントローラが、各PMUユニットの複数のチャンク内のチャンク(i)に対するメモリ・アクセス・リクエストを生成し、チャンクを分配したとき、ロード処理は状態S5に入る。
状態S5(AGCUリクエスト)では、構成ロード・コントローラは、トップ・レベル・ネットワークを介してメモリ・アクセス・リクエストを生成し、構成可能ユニットのアレイ内の各AGCU(アドレス生成及び結合ユニット)の構成ユニットファイルのチャンクを取得し、取得したチャンクを各AGCUユニットに送信する。ラウンドR(i)の状態S5において、構成ロード・コントローラは、各AGCUユニットの複数のチャンク内のチャンク(i)に対するメモリ・アクセス・リクエストを生成し、チャンク(i)を各AGCUユニットに送信する。ラウンドR(i)の状態S5において、構成ロード・コントローラが、各AGCUユニットの複数のチャンク内のチャンク(i)に対するメモリ・アクセス・リクエストを生成し、チャンクを分配したとき、ロード処理はラウンドR(i)の状態S6に入る。
状態S6(応答待ち)では、構成ロード・コントローラは、アレイ内の構成可能ユニット(スイッチ、PCU、PMU、AGCUユニット)が次のラウンドで構成データのより多くのチャンクを受信する準備ができていることを保証するために待機する。スイッチ・ユニットに対する全てのチャンクが送信されない場合、ロード処理は(i)をインクリメントし、状態S2に進み、次のラウンドR(i+1)を開始する。スイッチ・ユニットの全てのチャンクは送信されるが、PCUチャンクの全てのチャンクは送信されない場合、ロード処理は(i)をインクリメントし、状態S3に進み、次のラウンドR(i+1)を開始する。スイッチ・ユニット及びPCUユニットに対する全てのチャンクは送信されるが、PMUチャンクの全てのチャンクは送信されない場合、ロード処理は(i)をインクリメントし、状態S4に進み、次のラウンドR(i+1)を開始する。スイッチ・ユニット、PCUユニット、及びPMUユニットの全てのチャンクは送信されるが、AGCUチャンクの全てのチャンクは送信されない場合、ロード処理は(i)をインクリメントし、状態S5に進み、次のラウンドR(i+1)を開始する。全ての構成可能ユニット(スイッチ、PCU、PMU、AGCUユニット)の全てのチャンクが送信される(すなわち、全てのラウンドが完了する)と、ロード処理は状態S1に進む。
図11は、図10のような分配シーケンスの初期のラウンドのタイミングを示すタイミング図である。この例では、構成ユニットファイルのチャンクがビット数B(例えば、B=128)のデータを有し、分配シーケンスのラウンドは構成可能ユニットの数Xを含むことができ、構成可能ユニットのアレイは構成可能ユニットの数Y(例えば、Y=148)を含むことができる。ラウンドR(0)において、XはYに等しくなり得る。後続のラウンドでは、XはY以下になり得る。
この例では、ラウンドR(0)がY=148個の構成可能ユニットを含む。ラウンドR(0)及びR(1)については、X=Yである。最初の2つのラウンドR(0)及びR(1)の後、スイッチ・ユニットは全ての(2)のそれらのチャンクを受信したので、第3のラウンドR(2)は128未満の構成可能ユニットを含む。
図11の例に示されるように、ラウンドR(0)、構成ユニットファイルの最初のチャンクP11は、1番目のバス・サイクルC0においてバス・システムを介して構成可能ユニットで受信される。次に、該ラウンドの他のチャンクが、構成ロード・コントローラによって他の構成可能ユニットに分配される間に、Bクロックサイクル(バスクロックと同じレートで実行することができる)で第1のチャンクP11内のBビットのデータを構成可能ユニットにおいて並列タスクでシリアルにシフトすることによって、最初のチャンクが、第1の構成可能ユニット「ユニット1」の構成ストアにロードされる。構成ファイルの2番目のチャンクP21は、2番目のバス・サイクルC1においてバス・システムを介して受信される。次に、2番目のチャンクは、2番目のチャンクP21内のBビットのデータをBクロックサイクルでシリアルにシフトすることによって、第2の構成可能ユニット「ユニット2」の構成ストアに並列タスクでロードされる。構成ファイルの3番目のチャンクP31は、3番目のバス・サイクルC2でバス・システムを介して受信される。次に、3番目のチャンクP31内のBビットのデータをBクロックサイクルでシリアルにシフトすることによって、第3の構成可能ユニット「ユニット3」の構成ストアに第3のチャンクP31がロードされる。このラウンドは、構成可能ユニットがそれらに特有のユニットファイルの最初のチャンクを受信するまで進行する。
ラウンドR(0)は、構成ファイルのY個のチャンクの第1セット(P11、P21、P31、・・・、PY1)を、アレイ内のY個の各構成可能ユニット(ユニット1、・・・、ユニットY)に分配することを含む。構成ファイルのチャンクは、ビット数Bのデータを有し、構成可能ユニットのアレイは、Y個の構成可能ユニットを有する。ラウンドR(0)が完了すると、第1セット内の構成ファイルのY個のチャンク(P11、P21、P31、・・・、PY1)が、Yバス・サイクル(C0~CY-1)でアレイ内のY個の構成可能ユニット内で受信され、最初のチャンクP11は、Bクロックサイクル内で第1の構成可能ユニット「ユニット1」の構成ストア内にロードされ、またはシリアルにシフトされている。Bクロックサイクルは、最初のチャンクP11が受信される最初のクロックサイクルC0に続く。
次のラウンドR(1)は、アレイ内のY個の各構成可能ユニット(ユニット1、・・・、ユニットY)内の構成ファイルのY個のチャンクの第2セット(P12、P22、P32、・・・、Py2)を受信することを含む。ラウンドR(1)が完了すると、第2セット内の構成ファイルのY個のチャンク(P12、P22、P32、・・・、Py2)が、Yクロックサイクル(Cy~C2y-1)でアレイ内のY個の各構成可能ユニット内で受信されている。ラウンドR(1)が完了すると、第1の構成可能ユニット「ユニット1」の2番目のチャンクP12が、ラウンドR(1)における最初のクロックサイクル(Cy)に続くBクロックサイクルにおいて、第1の構成可能ユニット「ユニット1」の構成ストアにロードされるか、またはシリアルにシフトされている。また、2番目のラウンドが完了すると、ラウンドR(0)で受信された構成ファイルのY個のチャンクの第1セットの最後のチャンクPY1が、最後の構成可能ユニット「ユニットY」の構成ストアにロードまたはシリアルにシフトされている。
或るラウンドで、チャンク内のビット数B(128)が構成可能ユニットの個数X未満である限り、構成可能ユニットは、シーケンスが行き詰まることなく構成可能ユニットが準備できるように、前のチャンクがロードされた後に、ユニット構成ファイルの次のチャンクを受信する。この例では、チャンク内のビット数Bは128で、ラウンドR(0)における構成可能ユニットの個数Xは、X=Y=148である。チャンク内の128ビットを構成可能ユニットの構成データストアにシリアルにシフトするのに128クロックサイクルを要するため、シフトが行われてから実質的に20(Y-B=148-128)のバッファサイクルがあり、最初の構成可能ユニット「ユニット1」が次のラウンドR(1)で次のチャンク(P12)を受け入れる準備ができていることを保証している。或るラウンドで、チャンク内のビット数Bが構成可能ユニットの個数Xより大きいとき、前のチャンクが消費されている間に次のチャンクを受信できる。ここで、消費されているとは、チャンク内のビットを構成可能ユニットの構成データストアにシリアルにシフトすることを意味する。
一般に、ユニット構成ロード処理は、1つのバス・サイクルでバス・システムから構成可能ユニットに特有のユニットファイルの最初のチャンク(またはサブファイル)を受信し、次のラウンドのためのユニットファイルの2番目のチャンクが受信される前に、受信された最初のチャンクをシリアル・チェーンにプッシュし始め、後のバス・サイクルでシーケンスの次のラウンドのためにバス・システムから構成可能ユニットに特有のユニットファイルの2番目のチャンクを受信し、先に受信したチャンクをシリアル・チェーンにプッシュした後のシーケンスのサイクルの間に、受信した2番目のチャンクをシリアル・チェーンにプッシュし始める。幾つかのラウンドでは、次のチャンクが受信される前に、受信したチャンクの全てを消費することができる。
異なるタイプの構成可能ユニットは異なる数の構成ビットを有することがあるので、構成可能ユニットはチャンク数の変更を必要とすることがある。より少ない数のチャンクを必要とする構成可能ユニットが全ての構成ビットをロードすると、構成ロード・コントローラはそれらへのデータの送信を停止する。これは、インターリーブされる構成可能ユニット(個数X)をより少なくすることができ、構成可能ユニットが前のチャンクの処理を完了する前に新しいチャンクを受信することを誘導し得る。これは、アレイ・レベル・ネットワークにバック・プレッシャをもたらす可能性がある。
バック・プレッシャは、アレイ・レベル・ネットワーク上のクレジット機構を介して処理することができる。例えば、各入力FIFOにホップ・ツー・ホップ・クレジットを設定できるため、PCUの入力FIFOがいっぱいになると、そのPCUの入力FIFOに構成データを送信しようとするアレイ・レベル・ネットワーク内のスイッチは、入力FIFOが1つのエントリを空にして送信スイッチにクレジットを返すまで、データを送信できない。最終的に、バック・プレッシャは、リンクがビジーになっているときにAGCUがデータを送信するのを停止することがある。しかし、構成可能ユニットがチャンクの128ビット全てを消費すると、1つの入力FIFOエントリを空にし、クレジットが解放され、その後、送信者は利用可能であれば、新しいチャンクを送信することができる。
図12は、構成可能ユニットにおけるユニット構成ロード処理を示すフローチャートである。ステップ1221で、ユニット構成ロード処理は、入力FIFO(図6の610)が有効になるのを待つ。有効になると、入力FIFOは構成可能ユニットを構成するために、バス・システムを介して構成ファイルの構成データのチャンクを受信した。入力FIFOが有効な場合、フローはステップ1222に進む。
ステップ1222で、入力FIFOはデキューされる。ステップ1223で、入力FIFOからの構成データのチャンクが、入力シフト・レジスタに並列にロードされる(図6の620)。ステップ1224で、入力シフト・レジスタ内の構成データのチャンクが、構成可能ユニットの構成データストア内の構成シリアル・チェーンにシフトされる。
ステップ1225で、ユニット構成ロード処理は、ロードされた構成データのチャンクが構成可能ユニットの構成データの最後のチャンクであるかどうかを判定する。最後のチャンクである場合、構成可能ユニットのための構成データのロードは完了する。最後のチャンクでない場合、フローはステップ1221に進み、ユニット構成ロード処理は、入力FIFOが次の構成データのチャンクに対して有効になるのを待つ。構成可能ユニットにおけるユニット構成ロード処理は、図5及び図6を参照してさらに説明される。
図13は、図2及び図3のようなシステムのためのアレイ構成アンロード処理を実行するためのロジックの一例のためのステート・マシン図である。
この例では、ステート・マシンは3つの状態S1~S3を含む。状態S1(アイドル)では、構成アンロード・コントローラはホストからの構成アンロード・コマンドを待機する。構成アンロード・コントローラは、アレイ構成アンロード処理に対して、“next_unld_req_count”と“next_unld_resp_count”の2つのカウントを実施し、カウント“next_unld_req_count”は次のアンロード・リクエスト・カウントを追跡する。カウント“next_unld_resp_count”は次のアンロード応答カウントを追跡する。状態S1において、両方のカウントは、0のような初期値にリセットされる。構成アンロード・コマンドを受信すると、アンロード処理は状態S2に入る。
状態S2(Genリクエスト)で、構成アンロード・コントローラは、構成可能ユニットのアレイ内のスイッチ・ユニット、PCU、PMU、及びAGCUを含むアレイ内の構成可能ユニットそれぞれについてのアンロード・リクエストを生成する。各アンロード・リクエストが生成されるたびに、カウント“next_unld_req_count”がインクリメントされる。カウント“next_unld_req_count”は、所定の数PROGRAM_UNLOAD_REQ_COUNTと比較される。これは構成可能ユニットのアレイ内の構成可能ユニットの総数を表す。カウント“next_unld_req_count”がPROGRAM_UNLOAD_REQ_COUNT未満である限り、アンロード処理は状態S2のままである。カウント“next_unld_req_count”がPROGRAM_UNLOAD_REQ_COUNTと等しい場合、アレイ内の構成可能ユニットそれぞれに対しアンロード・リクエストが生成され、アンロード処理は状態S3に入る。
状態S3(応答待ち)では、構成アンロード・コントローラがアレイ内の構成可能ユニットから受信した各応答に対するカウント“next_unld_resp_count”をインクリメントする。応答は、構成可能ユニットの構成データのユニットファイル内のチャンク(サブファイル)を含む。応答はまた、幾つかの例では、PMUスクラッチパッドデータを含むことができる。アンロード処理中に、応答が構成可能ユニットのベクトル出力に提供され、ベクトル・バス上で構成ロード・コントローラに送信される。カウント“next_unld_resp_count”がPROGRAM_UNLOAD_REQ_COUNT未満である限り、アンロード処理は状態S3のままである。
状態S3では、アンロード処理は受信した各応答に対しメモリ・アドレスを生成し、受信した各応答をトップ・レベル・ネットワークで生成されたメモリ・アドレスとともに挿入する。各応答は、アンロード・チャンクとシーケンスIDを含む。メモリ・アドレスは、シーケンスID内のチャンク番号、列識別子、行識別子、及び構成要素識別子を含む、アレイ・レベル・ネットワーク内のチャンクを搬送するパケットに付随するヘッダから生成される。構成要素識別子は、構成可能ユニットが、スイッチ・ユニット、PCUユニット、PMUユニット、またはAGCUユニットであるかを示すことができる。シーケンスIDは、図3を参照してさらに説明される。
カウント“next_unld_resp_count”がPROGRAM_UNLOAD_REQ_COUNTに等しい場合、応答はアレイ内の構成可能ユニットそれぞれから受信され、トップ・レベル・ネットワーク上に挿入され、アンロード処理は状態S1に戻る。
一実施形態では、スイッチ・ユニット内の構成データに対する線形メモリ・アドレスの順序は、スイッチ・ユニットの1列目の各行の第1のチャンクと、それに続くスイッチ・ユニットの2列目の各行の第1のチャンクと、それに続くスイッチ・ユニットの3列目の各行の第1のチャンクと、・・・、最終列の各行の第1のチャンクまで続く。これにより、線形アドレス空間内の全てのスイッチ・ユニットの第1のチャンクがグループ化される。他のタイプの構成可能ユニットの第1のチャンクは、隣接するアドレス空間のグループ内にロードされる。次に、順番の後には、スイッチ・ユニットの1列目の各行の第2のチャンクと、それに続くスイッチ・ユニットの2列目の各行の第2のチャンクと、それに続くスイッチ・ユニットの3列目の各行の第2のチャンクと、・・・、スイッチ・ユニットの最終列の最終行の最後のチャンクまでが続き、そして、全てのタイプの構成可能ユニットの第2のチャンクについて、同様に続く。
上述のようにスイッチ・ユニット内の構成データに対するメモリ・アドレスの順序を使用して、以下の擬似コードは、スイッチユニット(comp_switch)の線形メモリ・アドレスをどのように生成するかを示す。疑似コードは以下の4つの入力を使用し:
comp_id: 構成要素識別子;
comp_col: 列識別子;
comp_row: 行識別子;
comp_chunk: チャンク番号;
以下の出力を生成する:
linear_address: アンロード・チャンクの線形メモリ・アドレス;
スイッチ・ユニットの特定のアンロード・チャンクに対する線形メモリ・アドレスを生成するための擬似コードは、以下の通りである:
If (comp_id==comp_switch)begin
comp_num = comp_col*NUM_ROW_SW + comp_row;
linear_comp_num = comp_num +(comp_chunk * COMP_COUNT_ALL);
linear_address = linear_comp_num * 16;
end
但し、
・ comp_switchは、スイッチ・ユニットを示し;
・ NUM_ROW_SW は、全てのスイッチ・ユニットの行数であり;
・ COMP_COUNT_ALL は、全ての構成可能ユニットの合計である。
PCU、PMU、またはAGCUユニットの特定のアンロード・チャンクに対する線形メモリ・アドレスを生成するために、同様のコードを使用することができる。1つの違いは、全てのスイッチ・ユニットの行数が全てのPCUの行数、全てのPMUの行数、及び全てのAGCUの行数と異なる点である。別の違いは、スイッチ・ユニットの線形メモリ・アドレスが、ベースアドレス(例えば、0)で始まることができ、PCU、PMU、及びAGCUに対する線形メモリ・アドレスがそれぞれスイッチ・ユニット、PCU、及びPMUの最後のチャンクの後のアドレスで始まることである。
図14は、構成可能ユニットにおけるユニット構成アンロード処理を示すフローチャートである。ステップ1431において、構成データストア内の構成シリアル・チェーンからの構成データのチャンクが、出力シフト・レジスタ(図6の650)にシリアルにシフトされる。フローはステップ1432に入る。
ステップ1432で、ユニット構成アンロード処理は、出力FIFO(図6の660)または他のタイプの出力バッファ回路が有効になるのを待つ。ステップ1433で、出力FIFOが有効になると、出力シフト・レジスタからの構成データのチャンクが出力FIFOに挿入される。ステップ1434で、出力FIFO内の構成データのチャンクがバス・システムに書き込まれる(図3)。
ステップ1435で、ユニット構成アンロード処理は、構成データの最初のチャンクが構成データストア内の構成データの最後のチャンクであるかどうかを判断する。そうである場合、構成可能ユニットの構成データのアンロードは完了する。そうでない場合、フローはステップ1431に戻り、構成データストアからの構成データの第2のチャンクが、出力シフト・レジスタにシリアルにシフトされる。
本発明は、上記で詳述された好ましい実施形態及び実施例を参照することによって開示されるが、これらの実施例は限定的な意味ではなく、例示的な意味で意図されたものと理解されるべきである。当業者であれば、本発明の精神及び以下の特許請求の範囲の技術的範囲内における修正及び組み合わせを容易に想到すると予期される。
フィールド・プログラマブル・ゲートアレイFPGAを含む再構成可能プロセッサは、コンピュータ・プログラムを実行する汎用プロセッサを使用して達成され得るものよりも効率的または高速に様々な機能を実装するように構成され得る。いわゆる粗粒度再構成可能アーキテクチャ(例えば、CGRA)が開発されており、このアーキテクチャでは、アレイ内の構成可能ユニットが、典型的なより細粒度のFPGAで使用されるよりも複雑であり、様々なクラスの機能のより高速またはより効率的な実行を可能にすることができる。例えば、機械学習及び人工知能作業負荷のためのエネルギー効率のよいアクセラレータの実施態様を可能にすることができるCGRAが提案されている。Prabhakar, et al., "Plasticine: A Reconfigurable Architecture for Parallel Patterns"、ISCA '17, June 24-28, 2017, Toronto, ON, Canadaを参照されたい。米国出願公開US2018/0189231A1は、可変長パケットの構成をPEにロードする1つの方法を含む、構成可能な空間アクセラレータを備えたプロセッサ、方法、およびシステムについて説明している。
つのタイルのそれぞれは、4つのAGCU(アドレス生成及び結合ユニット)(例えば、MAGCU1、AGCU12、AGCU13、AGCU14)を有する。AGCUは、トップ・レベル・ネットワーク上のノードとアレイ・レベル・ネットワーク上のノードであり、各タイル内のトップ・レベル・ネットワーク上のノードとアレイ・レベル・ネットワーク上のノード間でデータをルーティングするためのリソースを含む。
構成ファイルの編成例に示すように、構成ファイル内の構成データのチャンクはインターリーブ方式で配置される:
・ ラウンドR(i=0)におけるスイッチ・ユニットのそれぞれに対する2つのチャンクの構成ビットの1番目;
・ ラウンドR(i=0)におけるPCUユニットのそれぞれに対する3つのチャンクの構成ビットの1番目;
・ ラウンドR(i=0)におけるPMUユニットのそれぞれに対する5つのチャンクの構成ビットの1番目;
・ ラウンドR(i=0)におけるAGCUユニットのそれぞれに対する6つのチャンクの構成ビットの1番目;
・ ラウンドR(i=1)におけるスイッチ・ユニットのそれぞれに対する2つのチャンクの構成ビットの2番目;
・ ラウンドR(i=1)におけるPCUユニットのそれぞれに対する3つのチャンクの構成ビットの2番目;
・ ラウンドR(i=1)におけるPMUユニットのそれぞれに対する5つのチャンクの構成ビットの2番目;
・ ラウンドR(i=1)におけるAGCUユニットのそれぞれに対する6つのチャンクの構成ビットの2番目;
・ ラウンドR(i=2)におけるPCUユニットのそれぞれに対する3つのチャンクの構成ビットの3番目;
・ ラウンドR(i=2)におけるPMUユニットのそれぞれに対する5つのチャンクの構成ビットの3番目;
・ ラウンドR(i=2)におけるAGCUユニットのそれぞれに対する6つのチャンクの構成ビットの3番目;
・ ラウンドR(i=3)におけるPMUユニットのそれぞれに対する5つのチャンクの構成ビットの4番目;
・ ラウンドR(i=3)におけるAGCUユニットのそれぞれに対する6つのチャンクの構成ビットの4番目;
・ ラウンドR(i=3)におけるPMUユニットのそれぞれに対する5つのチャンクの構成ビットの5番目;
・ ラウンドR(i=4)におけるAGCUユニットのそれぞれに対する6つのチャンクの構成ビットの5番目;
・ ラウンドR(i=4)におけるAGCUユニットのそれぞれに対する6つのチャンクの構成ビットの6番目。

Claims (35)

  1. バス・システムと、
    前記バス・システムに接続された構成可能ユニットのアレイと、
    前記バス・システムに接続された構成ロード・コントローラを含む、再構成可能データ・プロセッサであって、
    前記アレイ中の構成可能ユニットが、対応する構成可能ユニットに特有の構成データの複数のサブファイルを含むユニットファイルを格納する構成データストアを含み、
    複数の構成可能ユニット内の構成可能ユニットのそれぞれが、前記バス・システムを介して前記構成可能ユニットに特有のユニットファイルのサブファイルを受信すること、及び、受信した前記サブファイルを前記構成可能ユニットの前記構成ストアにロードすることを含むユニット構成ロード処理を実行するロジックを含み、
    前記構成ロード・コントローラが、前記アレイ内の複数の前記構成可能ユニット用のそれぞれが複数の順序付けられたサブファイルを含むユニットファイルを備える構成ファイルを分配することを含むアレイ構成ロード処理を実行するロジックを含み、
    前記アレイ構成ロード処理は、Nラウンドのシーケンス(i=0~N-1におけるラウンドR(i))で、前記複数の構成可能ユニット内に最大(i+1)のサブファイルを含む前記構成可能ユニットの全てに、前記バス・システムを介して、順序(i)の1つのユニット・サブファイルを送信することによって実行される、
    ことを特徴とする再構成可能データ・プロセッサ。
  2. 前記複数の構成可能ユニットが、前記構成可能ユニットのアレイ内の全ての前記構成可能ユニットを含み、前記構成可能ユニットの1以上対する前記ユニットファイルが、ノーオペレーション構成を実施する請求項1に記載のプロセッサ。
  3. 前記複数の構成可能ユニット内の構成可能ユニットの前記構成データストアが、シリアル・チェーンを備え、
    前記ユニット構成ロード処理が、前記構成可能ユニットに特有の前記ユニットファイルの第1のサブファイルを、1つのバス・サイクルにおいて前記バス・システムから受信し、前記ユニットファイルの第2のサブファイルを受信する前に、後続のバス・サイクル中に、受信した前記第1のサブファイルを前記シリアル・チェーン内にプッシュすることを開始し、後のバス・サイクルにおいて、前記シーケンスの次のラウンドに対する前記構成可能ユニットに特有の前記ユニットファイルの前記第2のサブファイルを前記バス・システムから受信し、先に受信したサブファイルを前記シリアル・チェーン内にプッシュした後の前記シーケンスのサイクル中に、受信した前記第2のサブファイルを前記シリアル・チェーン内にプッシュすることを開始する請求項1に記載のプロセッサ。
  4. 前記複数の順序付けられたサブファイル内の前記第2のサブファイルが前記構成可能ユニットによって受信される前に、前記第1のサブファイルが、前記ユニット構成ロード処理によって前記構成可能ユニット内で使用される請求項3に記載のプロセッサ。
  5. 前記アレイ構成ロード処理が、前記構成ファイルのメモリ内の位置を識別する構成ロード・コマンドをホスト処理から受信すること、及び、前記構成ファイルを取得する前記コマンドに応答して、1以上のメモリ・アクセス・リクエストを生成する請求項1に記載のプロセッサ。
  6. 前記構成ファイルが、複数の構成可能ユニット内の各構成可能ユニットに対するユニットファイルの複数のサブファイルを含み、前記サブファイルが、前記シーケンスに一致するインターリーブ方式で前記構成ファイル内に配置されており、
    前記アレイ構成ロード処理が、前記構成ファイル内の前記サブファイルの位置に基づいて、前記サブファイルを構成可能ユニットにルーティングすることを含む請求項1に記載のプロセッサ。
  7. サブファイルがビット数Nのデータを有し、
    前記バス・システムが、Nビットのデータを1つのバス・サイクルで転送するように構成されている請求項1に記載のプロセッサ。
  8. 前記複数の構成可能ユニット内の構成可能ユニットの前記構成データストアが、シリアル・チェーンを備え、
    前記ユニット構成ロード処理が、前記構成可能ユニットに特有の前記ユニットファイルの第1のサブファイルを、1つのバス・サイクルにおいて前記バス・システムから受信し、受信した前記第1のサブファイルをN回の後続のバス・サイクル中に前記シリアル・チェーン内にプッシュし、後のバス・サイクルにおいて、前記構成可能ユニットに特有の前記ユニットファイルの第2のサブファイルを前記バス・システムから受信し、先に受信したサブファイルを前記シリアル・チェーン内にプッシュした後のN回の後続のバス・サイクル中に、受信した前記第2のサブファイルを前記シリアル・チェーン内にプッシュする請求項7に記載のプロセッサ。
  9. 前記アレイが、N個より多い構成可能ユニットを含む請求項8に記載のプロセッサ。
  10. 前記アレイが、複数のタイプの構成可能ユニットを含み、構成可能ユニットの異なるタイプに対する前記ユニットファイルは、構成データの異なる数のサブファイルを含む請求項1に記載のプロセッサ。
  11. 第1タイプの構成可能ユニットの前記ユニットファイルが、Z1個のサブファイルを含み、第2タイプの構成可能ユニットの前記ユニットファイルが、Z2個のサブファイルを含み、Z1はZ2未満であり、
    前記アレイ構成ロード処理が、
    (i)が0からZ1-1までにおいて、前記第1及び第2のタイプの全ての前記構成可能ユニットに対する前記ユニットファイルのサブファイル(i)を含む前記構成ファイルのセグメントを検索し、次に、(i)がZ1からZ2-1までにおいて、前記第2のタイプの全ての前記構成可能ユニットに対する前記ユニットファイルのサブファイル(i)を含む前記構成ファイルのセグメントを検索する請求項1に記載のプロセッサ。
  12. 前記構成可能ユニットのアレイ内の構成可能ユニットが、前記アレイ構成ロードロジックで開始及び終了するデイジー・チェーンで接続されたそれぞれのロード完了状態ロジックを含む請求項1に記載のプロセッサ。
  13. 前記アレイ構成ロードロジックが、前記構成ファイルが分配された後に前記デイジー・チェーン上においてロード完了信号を転送し、
    前記アレイ内の各構成可能ユニットにおいて、前記構成ロード完了状態ロジックが、前記デイジー・チェーンの前のメンバからの前記ロード完了信号が受信され、そのユニットファイルのロードが完了したときに、前記デイジー・チェーン上において前記ロード完了信号を転送する請求項12に記載のプロセッサ。
  14. 前記バス・システムが、外部データ・インタフェースとアレイ・インタフェースを含むトップ・レベル・ネットワークと、前記アレイ・インタフェース及び前記構成可能ユニットのアレイ内の前記構成可能ユニットに接続されたアレイ・レベル・ネットワークを含む請求項1に記載のプロセッサ。
  15. 前記アレイ構成ロード処理が、ホスト処理から、前記構成ファイルのメモリ内の位置を識別する構成ロード・コマンドを受信し、前記外部データ・インタフェースを介して前記構成ファイルを取得する前記コマンドに応答して、前記トップ・レベル・ネットワークを介して1以上のメモリ・アクセス・リクエストを生成する請求項14に記載のプロセッサ。
  16. 前記アレイ構成ロード処理が、前記構成ファイル内の前記サブファイルの位置によって示されるアドレスを使用して、前記構成データのサブファイルを前記アレイ・レベル・ネットワーク経由で構成可能ユニットにルーティングする請求項15に記載のプロセッサ。
  17. 前記複数の構成可能ユニット内の構成可能ユニットが、前記構成ロード処理においても使用される前記バス・システム内のルートを構成後の実行中に使用する請求項1に記載のプロセッサ。
  18. バス・システムと、前記バス・システムに接続された構成可能ユニットのアレイを含む、再構成可能データ・プロセッサを操作する方法であって、
    前記アレイ中の構成可能ユニットが、前記対応する構成可能ユニットに特有の構成データの複数のサブファイルを含むユニットファイルを格納する構成データストアを含み、
    前記方法が、
    前記アレイ内の複数の前記構成可能ユニット用のそれぞれが複数の順序付けられたサブファイルを含むユニットファイルを備える構成ファイルを、Nラウンドのシーケンス(i=0~N-1におけるラウンドR(i))で、前記複数の構成可能ユニット内に最大(i+1)のサブファイルを含む前記構成可能ユニットの全てに、前記バス・システムを介して、順序(i)の1つのユニット・サブファイルを送信することによって、分配すること、及び、
    前記構成可能ユニットに特有のユニットファイルの前記サブファイルを前記構成可能ユニット内に受信すること、及び、受信した前記サブファイルを前記構成可能ユニットの前記構成ストアにロードすることを備える
    ことを特徴とする再構成可能データ・プロセッサを操作する方法。
  19. 前記複数の構成可能ユニットが、前記構成可能ユニットのアレイ内の全ての前記構成可能ユニットを含み、前記構成可能ユニットの1以上対する前記ユニットファイルが、ノーオペレーション構成を実施する請求項18に記載の方法。
  20. 前記複数の構成可能ユニット内の構成可能ユニットの前記構成データストアが、シリアル・チェーンを備え、
    特定の構成可能ユニット内の前記ユニットファイルの第1のサブファイルを、1つのバス・サイクルにおいて受信すること、
    前記ユニットファイルの第2のサブファイルを受信する前に、後続のバス・サイクル中に、受信した前記第1のサブファイルを前記シリアル・チェーン内にプッシュすることを開始すること、
    後のバス・サイクルにおいて、前記シーケンスの次のラウンドに対する前記特定の構成可能ユニット内の前記ユニットファイルの前記第2のサブファイルを受信すること、及び、
    先に受信したサブファイルの前記シリアル・チェーン内へのプッシュが完了した後の前記シーケンスのサイクル中に、受信した前記第2のサブファイルを前記シリアル・チェーン内にプッシュすることを開始すること、を含む
    請求項18に記載の方法。
  21. 前記複数の順序付けられたサブファイル内の前記第2のサブファイルが前記構成可能ユニットによって受信される前に、前記第1のサブファイルが、ユニット構成ロード処理によって前記構成可能ユニット内で使用される請求項20に記載の方法。
  22. 前記分配することの前に、前記構成ファイルのメモリ内の位置を識別する構成ロード・コマンドをホスト処理から受信すること、及び、前記構成ファイルを取得する前記コマンドに応答して、1以上のメモリ・アクセス・リクエストを生成することを含む請求項18に記載の方法。
  23. 前記構成ファイルが、複数の構成可能ユニット内の各構成可能ユニットに対するユニットファイルの複数のサブファイルを含み、前記サブファイルが、前記シーケンスに一致するインターリーブ方式で前記構成ファイル内に配置されており、
    前記構成ファイル内の前記サブファイルの位置に基づいて、前記サブファイルを構成可能ユニットにルーティングすることを含む請求項18に記載の方法。
  24. サブファイルがビット数Nのデータを有し、
    前記バス・システムが、Nビットのデータを1つのバス・サイクルで転送するように構成されている請求項23に記載の方法。
  25. 前記複数の構成可能ユニット内の構成可能ユニットの前記構成データストアが、シリアル・チェーンを備え、
    前記構成可能ユニットに特有の前記ユニットファイルの第1のサブファイルを、1つのバス・サイクルにおいて前記構成可能ユニットにおいて受信すること、
    受信した前記第1のサブファイルをN回の後続のバス・サイクル中に前記シリアル・チェーン内にプッシュすること、
    後のバス・サイクルにおいて、前記構成可能ユニットに特有の前記ユニットファイルの第2のサブファイルを受信すること、及び、
    先に受信したサブファイルを前記シリアル・チェーン内にプッシュした後のN回の後続のバス・サイクル中に、受信した前記第2のサブファイルを前記シリアル・チェーン内にプッシュすること、を含む請求項24に記載の方法。
  26. 前記アレイが、N個より多い構成可能ユニットを含む請求項25に記載の方法。
  27. 前記アレイが、複数のタイプの構成可能ユニットを含み、構成可能ユニットの異なるタイプに対する前記ユニットファイルは、構成データの異なる数のサブファイルを含む請求項18に記載の方法。
  28. 第1タイプの構成可能ユニットの前記ユニットファイルが、Z1個のサブファイルを含み、第2タイプの構成可能ユニットの前記ユニットファイルが、Z2個のサブファイルを含み、Z1はZ2未満であり、
    (i)が0からZ1-1までにおいて、前記第1及び第2のタイプの全ての前記構成可能ユニットに対する前記ユニットファイルのサブファイル(i)を含む前記構成ファイルのセグメントを検索すること、及び、
    次に、(i)がZ1からZ2-1までにおいて、前記第2のタイプの全ての前記構成可能ユニットに対する前記ユニットファイルのサブファイル(i)を含む前記構成ファイルのセグメントを検索すること、を含む請求項18に記載の方法。
  29. 構成可能ユニットのデイジー・チェーン内でロード完了状態を転送することを含む請求項18に記載の方法。
  30. 前記構成ファイルが分配された後に前記デイジー・チェーン上の第1ノードからロード完了信号を転送すること、
    前記アレイ内の各構成可能ユニットにおいて、前記デイジー・チェーンの前のノードからの前記ロード完了信号が受信され、そのユニットファイルのロードが完了したときに、前記デイジー・チェーン上において前記ロード完了信号を転送する請求項29に記載の方法。
  31. ホスト処理から、前記構成ファイルのメモリ内の位置を識別する構成ロード・コマンドを受信すること、及び、
    前記構成ファイルを取得する前記コマンドに応答して、前記トップ・レベル・ネットワークを介して1以上のメモリ・アクセス・リクエストを生成すること、を含む請求項18に記載の方法。
  32. 前記アレイ構成ロード処理が、前記構成データのサブファイルを、前記構成ファイル内の前記サブファイルの位置によって示されるアドレスを使用して、前記アレイ・レベル・ネットワーク経由で構成可能ユニットにルーティングする請求項31に記載の方法。
  33. 前記分配に対しても使用される前記バス・システム内のルートを構成後の実行中に使用する請求項18に記載の方法。
  34. バス・システムと、
    前記バス・システムに接続された構成可能ユニットのアレイと、
    前記バス・システムに接続された構成ロード・コントローラを含む、再構成可能データ・プロセッサであって、
    前記アレイ中の構成可能ユニットが、シリアル・チェーン内に配置された、対応する構成可能ユニットに特有の構成データの複数のサブファイルを含むユニットファイルを格納する構成データストアを含み、
    前記構成ロード・コントローラが、前記アレイ内の複数の前記構成可能ユニット用のユニットファイルを備える構成ファイルを並列サブファイル内に分配するロジックを含む、
    ことを特徴とする再構成可能データ・プロセッサ。
  35. バス・システムと、前記バス・システムに接続された構成可能ユニットのアレイを含む、再構成可能データ・プロセッサを操作する方法であって、
    前記アレイ中の構成可能ユニットが、シリアル・チェーン内に配置された、対応する構成可能ユニットに特有の構成データの複数のサブファイルを含むユニットファイルを格納する構成データストアを含み、
    前記方法が、前記アレイ内の複数の前記構成可能ユニット用のユニットファイルを備える構成ファイルを、並列サブファイル内に分配することを含む、
    ことを特徴とする再構成可能データ・プロセッサを操作する方法。
JP2021529097A 2018-11-21 2019-11-19 再構成可能データ・プロセッサの構成ロード Pending JP2022510852A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/197,826 2018-11-21
US16/197,826 US10831507B2 (en) 2018-11-21 2018-11-21 Configuration load of a reconfigurable data processor
PCT/US2019/062287 WO2020106768A1 (en) 2018-11-21 2019-11-19 Configuration load of a reconfigurable data processor

Publications (1)

Publication Number Publication Date
JP2022510852A true JP2022510852A (ja) 2022-01-28

Family

ID=68916571

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021529097A Pending JP2022510852A (ja) 2018-11-21 2019-11-19 再構成可能データ・プロセッサの構成ロード

Country Status (7)

Country Link
US (2) US10831507B2 (ja)
EP (1) EP3884394A1 (ja)
JP (1) JP2022510852A (ja)
KR (1) KR20210116444A (ja)
CN (1) CN113383327B (ja)
CA (1) CA3120683C (ja)
WO (1) WO2020106768A1 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10831507B2 (en) 2018-11-21 2020-11-10 SambaNova Systems, Inc. Configuration load of a reconfigurable data processor
US11188497B2 (en) 2018-11-21 2021-11-30 SambaNova Systems, Inc. Configuration unload of a reconfigurable data processor
US10698853B1 (en) 2019-01-03 2020-06-30 SambaNova Systems, Inc. Virtualization of a reconfigurable data processor
US11386038B2 (en) 2019-05-09 2022-07-12 SambaNova Systems, Inc. Control flow barrier and reconfigurable data processor
US11055141B2 (en) 2019-07-08 2021-07-06 SambaNova Systems, Inc. Quiesce reconfigurable data processor
US11327923B2 (en) 2019-09-04 2022-05-10 SambaNova Systems, Inc. Sigmoid function in hardware and a reconfigurable data processor including same
US11327713B2 (en) 2019-10-01 2022-05-10 SambaNova Systems, Inc. Computation units for functions based on lookup tables
US11327717B2 (en) 2019-11-19 2022-05-10 SambaNova Systems, Inc. Look-up table with input offsetting
US11328038B2 (en) 2019-11-25 2022-05-10 SambaNova Systems, Inc. Computational units for batch normalization
US11150872B2 (en) 2019-12-17 2021-10-19 SambaNova Systems, Inc. Computational units for element approximation
US11836629B2 (en) 2020-01-15 2023-12-05 SambaNova Systems, Inc. Computationally efficient softmax loss gradient backpropagation
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11782729B2 (en) 2020-08-18 2023-10-10 SambaNova Systems, Inc. Runtime patching of configuration files
US11443823B2 (en) 2020-10-29 2022-09-13 SambaNova Systems, Inc. Method and circuit for scan dump of latch array
US11392740B2 (en) * 2020-12-18 2022-07-19 SambaNova Systems, Inc. Dataflow function offload to reconfigurable processors
US11182221B1 (en) * 2020-12-18 2021-11-23 SambaNova Systems, Inc. Inter-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS)
US11237880B1 (en) 2020-12-18 2022-02-01 SambaNova Systems, Inc. Dataflow all-reduce for reconfigurable processor systems
US11782760B2 (en) 2021-02-25 2023-10-10 SambaNova Systems, Inc. Time-multiplexed use of reconfigurable hardware
WO2022204069A1 (en) 2021-03-23 2022-09-29 SambaNova Systems, Inc. Floating point multiply-add, accumulate unit with carry-save accumulator
US11200096B1 (en) 2021-03-26 2021-12-14 SambaNova Systems, Inc. Resource allocation for reconfigurable processors
US11204889B1 (en) 2021-03-29 2021-12-21 SambaNova Systems, Inc. Tensor partitioning and partition access order
US11366783B1 (en) 2021-03-29 2022-06-21 SambaNova Systems, Inc. Multi-headed multi-buffer for buffering data for processing
WO2023283073A1 (en) 2021-07-09 2023-01-12 SambaNova Systems, Inc. A processor unit with combined memory, logic, and bist
US11449404B1 (en) 2021-07-09 2022-09-20 SambaNova Systems, Inc. Built-in self-test for processor unit with combined memory and logic
US11327771B1 (en) 2021-07-16 2022-05-10 SambaNova Systems, Inc. Defect repair circuits for a reconfigurable data processor
US11556494B1 (en) 2021-07-16 2023-01-17 SambaNova Systems, Inc. Defect repair for a reconfigurable data processor for homogeneous subarrays
US11409540B1 (en) 2021-07-16 2022-08-09 SambaNova Systems, Inc. Routing circuits for defect repair for a reconfigurable data processor
US11709611B2 (en) 2021-10-26 2023-07-25 SambaNova Systems, Inc. Determining and using memory unit partitioning solutions for reconfigurable dataflow computing systems
CN114185611B (zh) * 2021-11-26 2023-09-12 京微齐力(深圳)科技有限公司 一种待配置器件多列自动复制配置方法及电路
US11487694B1 (en) 2021-12-17 2022-11-01 SambaNova Systems, Inc. Hot-plug events in a pool of reconfigurable data flow resources
US11928445B2 (en) * 2022-01-20 2024-03-12 SambaNova Systems, Inc. Compiler for a fracturable data path in a reconfigurable data processor
US20230305860A1 (en) * 2022-02-09 2023-09-28 SambaNova Systems, Inc. Reconfigurable Data Processor with Fast Argument Load using a Runtime Program on a Host Processor

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013254436A (ja) * 2012-06-08 2013-12-19 Fujitsu Semiconductor Ltd 動的再構成回路,半導体集積回路および動的再構成回路の制御方法
JP2014157508A (ja) * 2013-02-15 2014-08-28 Canon Inc 演算装置、アレイ型演算装置およびその制御方法、情報処理システム
US20180189231A1 (en) * 2016-12-30 2018-07-05 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator

Family Cites Families (124)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3006021A (en) 1957-12-30 1961-10-31 Philip G Patch Power driven street sweeper
JPS6238075A (ja) 1985-08-13 1987-02-19 Fuji Xerox Co Ltd 行列デ−タの転置処理装置
US5963746A (en) 1990-11-13 1999-10-05 International Business Machines Corporation Fully distributed processing memory element
US5430850A (en) 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
US5498975A (en) 1992-11-19 1996-03-12 Altera Corporation Implementation of redundancy on a programmable logic device
US5434995A (en) 1993-12-10 1995-07-18 Cray Research, Inc. Barrier synchronization for distributed memory massively parallel processing systems
CN1076838C (zh) 1994-08-19 2001-12-26 财团法人工业技术研究院 离散余弦转换/反离散余弦转换电路的转置存储器
US5794033A (en) 1995-10-24 1998-08-11 International Business Machines Corporation Method and system for in-site and on-line reprogramming of hardware logics with remote loading in a network device
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
US6105119A (en) 1997-04-04 2000-08-15 Texas Instruments Incorporated Data transfer circuitry, DSP wrapper circuitry and improved processor devices, methods and systems
US7073069B1 (en) 1999-05-07 2006-07-04 Infineon Technologies Ag Apparatus and method for a programmable security processor
US8230411B1 (en) 1999-06-10 2012-07-24 Martin Vorbach Method for interleaving a program over a plurality of cells
US6845445B2 (en) * 2000-05-12 2005-01-18 Pts Corporation Methods and apparatus for power control in a scalable array of processor elements
US6728862B1 (en) 2000-05-22 2004-04-27 Gazelle Technology Corporation Processor array and parallel data processing methods
US6817005B2 (en) 2000-05-25 2004-11-09 Xilinx, Inc. Modular design method and system for programmable logic devices
US6990555B2 (en) 2001-01-09 2006-01-24 Pact Xpp Technologies Ag Method of hierarchical caching of configuration data having dataflow processors and modules having two- or multidimensional programmable cell structure (FPGAs, DPGAs, etc.)
US9411532B2 (en) 2001-09-07 2016-08-09 Pact Xpp Technologies Ag Methods and systems for transferring data between a processing device and external devices
US6766505B1 (en) 2002-03-25 2004-07-20 Altera Corporation Parallel programming of programmable logic using register chains
US7216227B2 (en) 2002-04-23 2007-05-08 Amiram Grynberg Method and system for controlling the use of addresses using address computation techniques
EP1372084A3 (en) 2002-05-31 2011-09-07 Imec Method for hardware-software multitasking on a reconfigurable computing platform
GB0304628D0 (en) 2003-02-28 2003-04-02 Imec Inter Uni Micro Electr Method for hardware-software multitasking on a reconfigurable computing platform
US7111213B1 (en) 2002-12-10 2006-09-19 Altera Corporation Failure isolation and repair techniques for integrated circuits
US7685254B2 (en) 2003-06-10 2010-03-23 Pandya Ashish A Runtime adaptable search processor
US7412581B2 (en) 2003-10-28 2008-08-12 Renesas Technology America, Inc. Processor for virtual machines and method therefor
US7386703B2 (en) 2003-11-18 2008-06-10 International Business Machines Corporation Two dimensional addressing of a matrix-vector register array
JP4594666B2 (ja) * 2004-07-12 2010-12-08 富士通株式会社 再構成可能な演算装置
US7299339B2 (en) 2004-08-30 2007-11-20 The Boeing Company Super-reconfigurable fabric architecture (SURFA): a multi-FPGA parallel processing architecture for COTS hybrid computing framework
US7251804B1 (en) 2004-10-01 2007-07-31 Xilinx, Inc. Structures and methods of overcoming localized defects in programmable integrated circuits by routing during the programming thereof
US7804504B1 (en) 2004-12-13 2010-09-28 Massachusetts Institute Of Technology Managing yield for a parallel processing integrated circuit
US7228521B1 (en) 2005-02-01 2007-06-05 Xilinx Inc. System for operating a programmable logic device having a defective region
US20060190517A1 (en) 2005-02-02 2006-08-24 Guerrero Miguel A Techniques for transposition of a matrix arranged in a memory as multiple items per word
JP4804829B2 (ja) 2005-08-24 2011-11-02 富士通株式会社 回路
US7571269B2 (en) 2005-08-25 2009-08-04 Silicon Image, Inc. Covert channel for conveying supplemental messages in a protocol-defined link for a system of storage devices
US7793251B2 (en) 2006-01-12 2010-09-07 International Business Machines Corporation Method for increasing the manufacturing yield of programmable logic devices
US7904848B2 (en) 2006-03-14 2011-03-08 Imec System and method for runtime placement and routing of a processing array
GB0605349D0 (en) 2006-03-17 2006-04-26 Imec Inter Uni Micro Electr Reconfigurable multi-processing coarse-grain array
EP1868094B1 (en) 2006-06-12 2016-07-13 Samsung Electronics Co., Ltd. Multitasking method and apparatus for reconfigurable array
US8456191B2 (en) 2006-06-21 2013-06-04 Element Cxi, Llc Data-driven integrated circuit architecture
US8395414B2 (en) 2006-06-21 2013-03-12 Element Cxi, Llc Hierarchically-scalable reconfigurable integrated circuit architecture with unit delay modules
US8407429B2 (en) 2006-06-21 2013-03-26 Element Cxi, Llc Multi-context configurable memory controller
US7797258B1 (en) 2006-11-02 2010-09-14 Nvidia Corporation Graphics system transposer read scheduler
US7996348B2 (en) 2006-12-08 2011-08-09 Pandya Ashish A 100GBPS security and search architecture using programmable intelligent search memory (PRISM) that comprises one or more bit interval counters
US7669014B2 (en) 2007-07-23 2010-02-23 Nokia Corporation Transpose memory and method thereof
DE212007000102U1 (de) 2007-09-11 2010-03-18 Core Logic, Inc. Rekonfigurierbarer Array-Prozessor für Gleitkomma-Operationen
US8526422B2 (en) 2007-11-27 2013-09-03 International Business Machines Corporation Network on chip with partitions
US8001316B2 (en) 2007-12-27 2011-08-16 Sandisk Il Ltd. Controller for one type of NAND flash memory for emulating another type of NAND flash memory
US7906984B1 (en) 2008-02-26 2011-03-15 The United States Of America As Represented By The Secretary Of The Air Force Relocatable field programmable gate array bitstreams for fault tolerance
US8006021B1 (en) 2008-03-27 2011-08-23 Xilinx, Inc. Processor local bus bridge for an embedded processor block core in an integrated circuit
CN101593169A (zh) * 2008-05-30 2009-12-02 国际商业机器公司 可配置逻辑阵列的配置管理器和配置方法
US8045546B1 (en) 2008-07-08 2011-10-25 Tilera Corporation Configuring routing in mesh networks
US7952387B1 (en) 2008-08-13 2011-05-31 Altera Corporation Securing memory based IP in FPGAs
US20100161309A1 (en) 2008-12-23 2010-06-24 Scaleo Chip Apparatus and Methods Thereof for Configuration and Control of a System-On-Chip Emulation Platform
CN101485576A (zh) * 2008-12-30 2009-07-22 深圳市蓝韵实业有限公司 一种对设备内fpga芯片统一配置和管理的系统
KR101581882B1 (ko) * 2009-04-20 2015-12-31 삼성전자주식회사 재구성 가능한 프로세서 및 그 재구성 방법
US7795901B1 (en) 2009-05-19 2010-09-14 Xilinx, Inc. Automatic isolation of a defect in a programmable logic device
GB2471067B (en) 2009-06-12 2011-11-30 Graeme Roy Smith Shared resource multi-thread array processor
EP2534583A1 (en) 2009-12-01 2012-12-19 Queen's University At Kingston Method and system for a run-time reconfigurable computer architecture
US7902855B1 (en) 2010-03-03 2011-03-08 Altera Corporation Repairable IO in an integrated circuit
KR101076869B1 (ko) * 2010-03-16 2011-10-25 광운대학교 산학협력단 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치
US20110264723A1 (en) 2010-04-21 2011-10-27 Samsung Electronics Co., Ltd. System and method for successive matrix transposes
CN103168289B (zh) 2011-10-14 2016-07-06 松下知识产权经营株式会社 转置运算装置及其集成电路、以及转置处理方法
US9405552B2 (en) 2011-12-29 2016-08-02 Intel Corporation Method, device and system for controlling execution of an instruction sequence in a data stream accelerator
US9465632B2 (en) 2012-02-04 2016-10-11 Global Supercomputing Corporation Parallel hardware hypervisor for virtualizing application-specific supercomputers
KR101978409B1 (ko) * 2012-02-28 2019-05-14 삼성전자 주식회사 재구성가능 프로세서, 이를 위한 코드 변환 장치 및 방법
US9875105B2 (en) 2012-05-03 2018-01-23 Nvidia Corporation Checkpointed buffer for re-entry from runahead
KR102070199B1 (ko) * 2012-05-11 2020-01-28 삼성전자주식회사 재구성가능 프로세서 및 재구성가능 프로세서의 코드 압축해제 방법
US9160617B2 (en) 2012-09-28 2015-10-13 International Business Machines Corporation Faulty core recovery mechanisms for a three-dimensional network on a processor array
US9448967B2 (en) 2012-10-31 2016-09-20 Mstar Semiconductor, Inc. Stream data processor
US8860460B1 (en) 2012-11-05 2014-10-14 Altera Corporation Programmable integrated circuits with redundant circuitry
WO2014075705A1 (en) 2012-11-13 2014-05-22 Hewlett-Packard Indigo B.V. Formation of a crease and an image on media
US20140149480A1 (en) 2012-11-28 2014-05-29 Nvidia Corporation System, method, and computer program product for transposing a matrix
US9411715B2 (en) 2012-12-12 2016-08-09 Nvidia Corporation System, method, and computer program product for optimizing the management of thread stack memory
CN103906068B (zh) 2012-12-26 2017-07-21 华为技术有限公司 虚拟基站创建方法及装置
US9569214B2 (en) 2012-12-27 2017-02-14 Nvidia Corporation Execution pipeline data forwarding
US9495154B2 (en) 2013-03-13 2016-11-15 Qualcomm Incorporated Vector processing engines having programmable data path configurations for providing multi-mode vector processing, and related vector processors, systems, and methods
US10628578B2 (en) 2013-03-15 2020-04-21 Imagine Communications Corp. Systems and methods for determining trust levels for computing components using blockchain
KR20140126190A (ko) 2013-04-22 2014-10-30 삼성전자주식회사 프로세서의 긴 라우팅 처리를 지원하는 메모리 장치, 그 메모리 장치를 이용한 스케줄링 장치 및 방법
KR20140131472A (ko) * 2013-05-03 2014-11-13 삼성전자주식회사 상수 저장 레지스터를 구비하는 재구성 가능 프로세서
US9178513B1 (en) 2013-12-19 2015-11-03 Altera Corporation Memory blocks with shared address bus circuitry
US9588774B2 (en) 2014-03-18 2017-03-07 International Business Machines Corporation Common boot sequence for control utility able to be initialized in multiple architectures
US9992057B2 (en) 2014-04-25 2018-06-05 International Business Machines Corporation Yield tolerance in a neurosynaptic system
US10140157B2 (en) 2014-05-29 2018-11-27 Apple Inc. Multiple process scheduling of threads using process queues
TWI570573B (zh) 2014-07-08 2017-02-11 財團法人工業技術研究院 矩陣轉置電路
US9372956B1 (en) 2014-11-10 2016-06-21 Xilinx, Inc. Increased usable programmable device dice
US20160246602A1 (en) 2015-02-19 2016-08-25 Arizona Board Of Regents On Behalf Of Arizona State University Path selection based acceleration of conditionals in coarse grain reconfigurable arrays (cgras)
US10180908B2 (en) 2015-05-13 2019-01-15 Qualcomm Incorporated Method and apparatus for virtualized control of a shared system cache
US20170083313A1 (en) 2015-09-22 2017-03-23 Qualcomm Incorporated CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs)
US10019234B2 (en) 2015-10-05 2018-07-10 Altera Corporation Methods and apparatus for sequencing multiply-accumulate operations
US9697318B2 (en) 2015-10-08 2017-07-04 Altera Corporation State visibility and manipulation in integrated circuits
EP3157172B1 (en) 2015-10-15 2018-11-28 Menta System and method for testing and configuration of an fpga
US10528356B2 (en) 2015-11-04 2020-01-07 International Business Machines Corporation Tightly coupled processor arrays using coarse grained reconfigurable architecture with iteration level commits
GB2545170B (en) 2015-12-02 2020-01-08 Imagination Tech Ltd GPU virtualisation
US10037227B2 (en) 2015-12-17 2018-07-31 Intel Corporation Systems, methods and devices for work placement on processor cores
US10230817B2 (en) 2015-12-21 2019-03-12 Intel Corporation Scheduling highly parallel applications
US9698794B1 (en) 2015-12-22 2017-07-04 Altera Corporation Systems and methods for coalescing regions on a virtualized programmable logic device
JP6669961B2 (ja) 2015-12-24 2020-03-18 富士通株式会社 プロセッサ、再構成可能回路の制御方法及びプログラム
US10516396B2 (en) 2016-04-29 2019-12-24 University Of Florida Research Foundation, Incorporated Overlay architecture for programming FPGAs
US10146555B2 (en) 2016-07-21 2018-12-04 Micron Technology, Inc. Adaptive routing to avoid non-repairable memory and logic defects on automata processor
US10067911B2 (en) 2016-07-26 2018-09-04 Advanced Micro Devices, Inc. High performance inplace transpose operations
DE102016216944A1 (de) 2016-09-07 2018-03-08 Robert Bosch Gmbh Verfahren zur Berechnung einer Neuronenschicht eines mehrschichtigen Perzeptronenmodells mit vereinfachter Aktivierungsfunktion
US10719470B2 (en) 2016-09-26 2020-07-21 Wave Computing, Inc. Reconfigurable fabric direct memory access with multiple read or write elements
US10459644B2 (en) 2016-10-28 2019-10-29 Western Digital Techologies, Inc. Non-volatile storage system with integrated compute engine and optimized use of local fast memory
US11487445B2 (en) * 2016-11-22 2022-11-01 Intel Corporation Programmable integrated circuit with stacked memory die for storing configuration data
US9952831B1 (en) 2017-02-16 2018-04-24 Google Llc Transposing in a matrix-vector processor
US10261786B2 (en) 2017-03-09 2019-04-16 Google Llc Vector processing unit
US11093278B2 (en) 2017-06-30 2021-08-17 Intel Corporation Modifying processor frequency based on interrupt rate
US11256978B2 (en) 2017-07-14 2022-02-22 Intel Corporation Hyperbolic functions for machine learning acceleration
US11055126B2 (en) 2017-08-16 2021-07-06 Royal Bank Of Canada Machine learning computing model for virtual machine underutilization detection
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
WO2019089816A2 (en) 2017-10-31 2019-05-09 Micron Technology, Inc. System having a hybrid threading processor, a hybrid threading fabric having configurable computing elements, and a hybrid interconnection network
GB2568087B (en) 2017-11-03 2022-07-20 Imagination Tech Ltd Activation functions for deep neural networks
US10599596B2 (en) 2018-01-08 2020-03-24 Intel Corporation Management of processor performance based on user interrupts
US20190303297A1 (en) 2018-04-02 2019-10-03 Intel Corporation Apparatus, methods, and systems for remote memory access in a configurable spatial accelerator
US11048661B2 (en) 2018-04-16 2021-06-29 Simple Machines Inc. Systems and methods for stream-dataflow acceleration wherein a delay is implemented so as to equalize arrival times of data packets at a destination functional unit
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10642630B1 (en) 2018-08-27 2020-05-05 Liquid Instruments Pty. Ltd. Process of programming field programmable gate arrays using partial reconfiguration
US10831507B2 (en) 2018-11-21 2020-11-10 SambaNova Systems, Inc. Configuration load of a reconfigurable data processor
US11188497B2 (en) 2018-11-21 2021-11-30 SambaNova Systems, Inc. Configuration unload of a reconfigurable data processor
US10698853B1 (en) 2019-01-03 2020-06-30 SambaNova Systems, Inc. Virtualization of a reconfigurable data processor
US10713403B1 (en) 2019-04-03 2020-07-14 Xilinx, Inc. Selectively bypassing design process steps for a register-transfer logic (RTL) design in an electronic design automation (EDA) development environment
US11907828B2 (en) 2019-09-03 2024-02-20 International Business Machines Corporation Deep neural network on field-programmable gate array
US11049586B2 (en) 2019-11-26 2021-06-29 Mythic, Inc. Systems and methods for implementing redundancy for tile-based intelligence processing computing architecture
US11662923B2 (en) 2020-07-24 2023-05-30 Gowin Semiconductor Corporation Method and system for enhancing programmability of a field-programmable gate array

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013254436A (ja) * 2012-06-08 2013-12-19 Fujitsu Semiconductor Ltd 動的再構成回路,半導体集積回路および動的再構成回路の制御方法
JP2014157508A (ja) * 2013-02-15 2014-08-28 Canon Inc 演算装置、アレイ型演算装置およびその制御方法、情報処理システム
US20180189231A1 (en) * 2016-12-30 2018-07-05 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator

Also Published As

Publication number Publication date
CA3120683A1 (en) 2020-05-28
CN113383327A (zh) 2021-09-10
US11609769B2 (en) 2023-03-21
WO2020106768A1 (en) 2020-05-28
US20200159544A1 (en) 2020-05-21
CA3120683C (en) 2022-07-26
CN113383327B (zh) 2022-12-02
US10831507B2 (en) 2020-11-10
KR20210116444A (ko) 2021-09-27
US20210055940A1 (en) 2021-02-25
EP3884394A1 (en) 2021-09-29

Similar Documents

Publication Publication Date Title
JP2022510852A (ja) 再構成可能データ・プロセッサの構成ロード
JP2022511754A (ja) 再構成可能データ・プロセッサの構成アンロード
US20230289310A1 (en) Top level network and array level network for reconfigurable data processors
TWI758770B (zh) 靜止可重組態的資料處理器
US20230325163A1 (en) Flow control for reconfigurable processors
JP2022531910A (ja) 制御フロー・バリアと再構成可能データ・プロセッサ
US11561925B2 (en) Tensor partitioning and partition access order
TW202307689A (zh) 用於緩衝資料以進行處理的多頭多緩衝器
TWI766211B (zh) 可重組態資料處理器的組態加載和卸載

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20210702

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221019

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230829

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20240319