JP6708552B2 - パイプライン化構成可能プロセッサ - Google Patents

パイプライン化構成可能プロセッサ Download PDF

Info

Publication number
JP6708552B2
JP6708552B2 JP2016551066A JP2016551066A JP6708552B2 JP 6708552 B2 JP6708552 B2 JP 6708552B2 JP 2016551066 A JP2016551066 A JP 2016551066A JP 2016551066 A JP2016551066 A JP 2016551066A JP 6708552 B2 JP6708552 B2 JP 6708552B2
Authority
JP
Japan
Prior art keywords
configurable
thread
processing circuit
configuration
circuit according
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.)
Active
Application number
JP2016551066A
Other languages
English (en)
Other versions
JP2016535913A5 (ja
JP2016535913A (ja
Inventor
メッツゲン、ポール
Original Assignee
シリコン テーラー リミテッド
シリコン テーラー リミテッド
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 シリコン テーラー リミテッド, シリコン テーラー リミテッド filed Critical シリコン テーラー リミテッド
Publication of JP2016535913A publication Critical patent/JP2016535913A/ja
Publication of JP2016535913A5 publication Critical patent/JP2016535913A5/ja
Application granted granted Critical
Publication of JP6708552B2 publication Critical patent/JP6708552B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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
    • G06F15/7878Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS for pipeline reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/10Distribution of clock signals, e.g. skew
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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
    • G06F15/7875Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS for multiple contexts
    • 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/7885Runtime interface, e.g. data exchange, runtime control
    • G06F15/7892Reconfigurable logic embedded in CPU, e.g. reconfigurable unit
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3873Variable length pipelines, e.g. elastic pipeline
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • H04L49/1515Non-blocking multistage, e.g. Clos
    • H04L49/1546Non-blocking multistage, e.g. Clos using pipelined operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/101Packet switching elements characterised by the switching fabric construction using crossbar or matrix
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • H04L49/1553Interconnection of ATM switching modules, e.g. ATM switching fabrics
    • H04L49/1569Clos switching fabrics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Logic Circuits (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Description

本発明は、集積回路のためのプロセッサデザインに関する。
集積回路は、典型的に、インターコネクト回路により互いに接続された多数の機能ユニットを備える。機能ユニット及びインターコネクト回路が構成可能な場合もある。これは、機能ユニットを、特定の挙動を採用するようにプログラムできるとともに、インターコネクト回路を、回路の異なる部分を接続するようにプログラムできることを意味する。構成可能回路の良く知られた例が、FPGA(フィールドプログラマブルゲートアレイ)であり、これは、幅広い範囲の異なる機能を実施するようにユーザがプログラムできるものである。構成可能集積回路の他の例が、特許文献1,2及び3に記載されている。
多くの構成可能回路には、速度と柔軟性との間にトレードオフが存在する。柔軟性を最大化するためには、できるだけ多くの異なる組み合わせの機能ユニットを互いに接続できることが望ましい。これは、実行ユニットがチップ上において離間している場合には、長いインターコネクト経路が必要となる。一般に、集積回路は、1回のクロック周期で行える最も長い動作よりも速くクロックさせることはできない。多くの場合、インターコネクトが原因の遅延は、機能ユニットが原因の遅延よりも影響が大きいため、データを長いインターコネクト経路を介して伝送するのに要する時間は、最終的に回路全体のクロック速度を制限しうる制約となる。
集積回路における時間の遅延に対して上限を設ける選択肢の一つとしては、1回のクロック周期に横断する全てのインターコネクト経路の長さを制限することがある。これは、データが集積回路内を移動する際にそのデータにパイプライン処理を施すことによって実現できる。一例が特許文献4に記載されており、この例では、インターコネクトネットワーク内のスイッチセルへの入力が、そのインターコネクトネットワーク内をデータが送られる際にそのデータにパイプライン処理を施すラッチを有する。この手法の問題は、必要なラッチを組み込むために、ユーザのデザインを修正する必要がある場合があることである。
米国特許第7,276,933号明細書 米国特許第8,493,090号明細書 米国特許第6,282,627号明細書 米国特許第6,940,308号明細書
従って、改良された柔軟な処理回路の要求がある。
一実施例によれば、複数のスレッドを同時に取り扱うことが可能な構成可能処理回路であって、スレッドデータストアと、複数の構成可能実行ユニットと、スレッドデータストア内の位置を実行ユニットに接続する構成可能ルーティングネットワークと、構成インスタンスを記憶し、該構成インスタンスのそれぞれがルーティングネットワークの構成及び複数の実行ユニットのうち1つ以上の構成を規定している、構成データストアと、実行ユニット、ルーティングネットワーク及びスレッドデータストアから形成されるとともに複数のパイプラインセクションを備え、それら複数のパイプラインセクションが、各クロックサイクルにおいて各スレッドが一つのパイプラインセクションから次のパイプラインセクションに伝播するように構成されている、パイプラインとを備え、(i)各スレッドを構成インスタンスと関連付け、(ii)各クロックサイクルに対して、複数のパイプラインセクションのそれぞれを、そのクロックサイクル中にそのパイプラインセクション内を伝播する各スレッドと関連付けられた構成インスタンスに従うように構成するように構成された回路が提供される。
回路は、各構成インスタンスを構成識別子と関連付けるように構成されてもよい。
回路は、スレッドと関連付けられた構成識別子を、そのスレッドと協調してパイプライン内を伝播させるように構成されてもよい。
構成データストアは、複数のメモリを備えてもよく、回路は、構成インスタンスを複数のメモリに亘って分割して、各メモリが特定のパイプラインセクションに適用可能な構成インスタンスの部分を記憶するように構成されてもよい。
各パイプラインセクションは、それに適用可能な構成インスタンスの部分を記憶するメモリにアクセスすることにより構成インスタンスにアクセスするように構成されてもよい。
パイプラインの各セクションは、スレッドと関連付けられた構成識別子を使用して、構成データストア内のそのスレッドと関連付けられた構成インスタンスにアクセスするように構成されてもよい。
複数のスレッドは独立していてもよい。
回路は、2つ以上のスレッドを同一の構成識別子と関連付けるように構成されてもよい。
回路は、スレッドが回路内の第2の後続の経路とは異なる回路内の一経路上の構成に追従できるように、そのスレッドと関連付けられた構成識別子を変更することが可能であってもよい。
回路は、スレッドと関連付けられた入力に対して動作を行う際に、実行ユニットの1つにより生成された出力に基づき構成識別子を変更するように構成されてもよい。
構成可能ルーティングネットワークは、複数のネットワーク入力及び複数のネットワーク出力を備えてもよく、各ネットワーク入力をネットワーク出力に接続するように構成可能であってもよい。
構成可能ルーティングネットワークは、任意のネットワーク入力を任意のネットワーク出力に接続することが可能であってもよい。
構成可能ルーティングネットワークは、任意のネットワーク入力をネットワーク出力のうちの任意の1つ以上に接続することが可能であってもよい。
構成可能ルーティングネットワークの出力は、実行ユニットの入力に接続されていてもよい。
構成可能ルーティングネットワークは、マルチステージスイッチを備えてもよい。
マルチステージスイッチは、各ステージに1つ以上のスイッチを備えてもよく、各スイッチは、複数のスイッチ入力及び複数のスイッチ出力を有し、各スイッチ入力をスイッチ出力に接続するように構成可能であってもよい。
マルチステージスイッチの各ステージにおけるスイッチは、同じ数のスイッチ入力及びスイッチ出力を備えてもよい。
マルチステージスイッチの1つのステージに備えられたスイッチは、他のステージに備えられたスイッチとは異なる数のスイッチ入力及びスイッチ出力を備えてもよい。
パイプラインセクションが、マルチステージスイッチの1つ以上のステージに備えらえたスイッチから形成されていてもよい。
マルチステージスイッチの内側ステージにおけるスイッチから形成されたパイプラインセクションが、そのマルチステージスイッチにおける、マルチステージスイッチの外側ステージに備えられたスイッチから形成されたパイプラインセクションとは異なる数のステージからのスイッチを備えてもよい。
構成可能ルーティングネットワークは、Closネットワークを備えてもよい。
構成可能ルーティングネットワークは、1つ以上のクロスバースイッチを備えてもよい。
構成可能ルーティングネットワークは、非ブロッキングであってもよい。
構成可能ルーティングネットワークは、完全に構成可能であってもよい。
構成可能ルーティングネットワークは、部分的に構成可能であってもよい。
回路は、各実行ユニットのために専用のオンチップメモリを備えてもよい。
回路は、スレッドデータストア内に記憶されたデータが有効であることをチェックするチェックユニットを備えてもよい。
チェックユニットは、無効データを認識すると、実行ユニットがスレッドデータストアに書き込みを行うのを一旦停止するように構成されてもよく、且つ/又は、それらが無効データを読み出したスレッドに対して動作しているときに、メモリアクセス動作を実行してもよい。
回路は、無効データを読み出したスレッドを、回路内のその次の経路上での同じ状態と関連付けるように構成されてもよい。
スレッドデータストア内の位置は、2つの有効ビットと関連付けられていてもよい。
構成可能ルーティングネットワークは、スレッドデータストアから読み出されたデータを運ぶためのマルチプルビットワイドであるデータ経路を備えてもよい。
回路は、2つの構成可能ルーティングネットワークを備えてもよく、構成可能ルーティングネットワークの一方が、他方よりも広いデータ経路を備えてもよい。
回路は、フラクチャブル実行ユニットを備えてもよい。
回路は、入力を交換可能に構成された実行ユニットを備えてもよい。構成可能ルーティングネットワークは、スレッドデータストアを、実行ユニットを交換可能な入力と、実行ユニットを交換不可能な入力とに接続するように構成されてもよく、構成可能ルーティングネットワークの最外側のステージが、スレッドデータストアを実行ユニットを交換可能な入力に接続するように構成された第1の数のスイッチと、スレッドデータストアを実行ユニットを交換不可能な入力に接続するように構成された第2の数のスイッチとを備えてもよく、第1の数が、接続された入力1つ当たりで、第2の数よりも少なくてもよい。
回路は、動的再構成が可能であってもよい。
本発明の第2実施例によれば、スレッドデータストアと、複数の構成可能実行ユニットと、スレッドデータストアを実行ユニットに接続する構成可能ルーティングネットワークと、実行ユニット、ルーティングネットワーク及びスレッドデータストアから形成され、複数のパイプラインセクションを備えるパイプラインとを備える構成可能処理回路において、複数のスレッドを同時に取り扱う方法であって、各スレッドを、ルーティングネットワークの構成及び複数の実行ユニットのうちの1つ以上の構成を規定する構成インスタンスと関連付けることと、各クロックサイクルにおいて、各スレッドを、一つのパイプラインセクションから次のパイプラインセクションに伝播させることと、各クロックサイクルにおいて、複数のパイプラインセクションのそれぞれを、そのクロックサイクル中にそのパイプラインセクション内を伝播する各スレッドと関連付けられた構成インスタンスに応じるように構成することとを含む方法が提供される。
以下、本発明を、添付の図面を参照して例を用いて説明する。
構成可能処理回路の一例を示す。 ルーティングネットワークの一例を示す。 クロスバースイッチの一例を示す。 実行ユニットの一例を示す。 加算器として構成された実行ユニットの一例を示す。 パイプライン化ALUとして構成された実行ユニットの一例を示す。 長レイテンシ実行ユニットの一例を示す。 スレッド用の構成インスタンス識別子を設定する実行ユニットの一例を示す。 フラクチャブル実行ユニットの一例を示す。 最適化ルックアップテーブルの2つの例を示す。
構成可能処理回路は、好ましくは、複数のスレッドを同時に取り扱うことが可能である。回路は、スレッドデータストアと、1つ以上の構成可能ルーティングネットワークと、幾つかの構成可能実行ユニットとを備える。データストアからの値が読み出され、そしてルーティングネットワークを介して実行ユニットに送られる。実行ユニットは、これらの値に対して動作を行い、それらの出力から新しい値を送達する。実行ユニットの出力は、データストアに書き戻される。
回路は、パイプラインも備える。パイプラインは、データストア、ルーティングネットワーク及び実行ユニットから形成される。これは、複数のパイプラインセクションを備え、各クロックサイクルにおいて各スレッドが一つのパイプラインセクションから次のパイプラインセクションに伝播するようになっている。回路は、好ましくは、パイプラインセクションがその時点で取り扱うスレッドに各クロックサイクルが適合するようそれらのパイプラインセクションを構成するように配置される。スレッドの構成は、そのスレッドで回路「内をクロックして」各スレッドのデータが処理回路内のそれ自体の特定の経路に向かうようになっているものとして考えることができる。
回路は、複数の構成インスタンスを保持するオンチップメモリも備える。回路は、データストア内のどの位置から読み出すか、及び、データストア内のどの位置に実行ユニットが書き込むかを、構成インスタンスに基づき選択する。また回路は、ルーティングネットワークを介して得られたルートを設定し、構成インスタンスを用いて実行ユニットの挙動を制御するように構成されている。各構成インスタンスは、構成インスタンス識別子により独自に参照することができる。回路は、スレッドを特定の構成インスタンス識別子と関連付けることにより、どの構成インスタンスをそのスレッドに対して使用するかを選択するように構成してもよい。
GPU(グラフィック処理ユニット)の出現により、プログラマーは、互いに対する相互作用が低い多数のスレッドを使用して計算問題を解くのが習慣になっている。これらの概ね独立したスレッドは、本明細書に記載のマルチスレッド化された再構成可能プロセッサにより処理されるのに理想的に適している。GPUは、多くの場合複数の同一のプロセッサから構築され、ホモジニアスコンピューティングと称される。GPUとは異なり、本明細書に記載の回路は、複数の異なる実行ユニットを可能とし、ヘテロジニアスコンピューティングの一形態である。回路の特定のインスタンスにおける実行ユニットの数及び能力は、特定のクラスの問題に適合するように選択できる。これにより、GPUと比較して、任意の所定のタスクをより効率的に実装できるようになる。
回路の概説
構成可能処理回路の一例を図1に示す。この回路は、構成可能ルーティングネットワーク(この例では、2つのルーティングネットワーク111,112として実装される)を備える。回路は、幾つかの構成可能実行ユニット(115,116)も含む。回路は、パイプライン化されており、図において点線102により表されている。図示の例において、パイプラインは、図の下側に沿って数字で示すように、8つのステージから構成される。パイプラインセクション間の境界は、最大クロック速度に対応できるように、いずれかのパイプラインセクションにおいて要する最長時間を制限するよう適切に選択される。
以下の説明は、パイプラインを介したスレッドの伝播を発動するのが立ち上がりクロックエッジであることを前提としている。これが例示のみのためのものであり立ち下がりクロックエッジも同様に使用してもよいことは理解すべきである。同様に、立ち上がりエッジ及び立ち下がりエッジの混合をパイプライン全体に使用してもよい。各パイプラインステージは、それ自体のクロックを有してもよい(ただし、それらのクロックは、全てのパイプラインステージにおいてクロックエッジが同時に起こるように同期される)。
回路は、複数のスレッドを同時に取り扱うように構成されている。ハードウェアにおけるスレッドは一般に、他のスレッドから独立して実行される一連のアクションであると考えられる。また、スレッドは、そのスレッドに対してのみ利用可能な何らかの状態を有することが多い。スレッドは通常、プロセス内に含まれる。プロセスは、複数のスレッドを含みうる。同じプロセス内に存在するスレッドは、メモリ等のリソースを共有することができる。
スレッドカウンタ101は、各クロックサイクルにおいて、新規のスレッドを回路に投入する。ある状況において、この新規のスレッドは、パイプラインを介した伝播を完了したばかりのスレッドの繰り返しであってもよい。スレッド番号を、各クロックサイクルにおいて、一つのパイプラインセクションから次のパイプラインセクションに伝播させてもよい。スレッド番号を伝播させる選択肢の一つは、各パイプラインセクション内に、そのパイプラインセクションに現在あるスレッドのスレッド番号を記憶するためのレジスタ108を有することである。
スレッドカウンタは、それ自体が構成可能であってもよい。典型的に、スレッドカウンタは、外部プロセッサにより構成されて、例えば、シーケンス及び/又はシーケンス長を変更する。
各構成インスタンスは、数千ビットを含みうる。この例において、各インスタンスは、構成インスタンスよりも小さい多数のビットから構成され便利なショートハンドとして働く識別子と関連付けられる。パイプラインにおける第1のステージは、現在のスレッドが使用する構成インスタンス識別子をレジスタストア(103)からルックアップするように構成されている。構成インスタンス識別子は、レジスタ(105)を使用して、パイプラインを介して伝播される。構成インスタンス識別子は、各パイプラインステージにおいて、そのパイプラインステージに必要な構成インスタンスの部分をルックアップするために使用される。これは、構成インスタンスを、各パイプラインステージ(104)のための別々のオンチップメモリに分割することにより実現できる。パイプラインステージは、それが特定のスレッドのために必要とする構成インスタンスを、メモリのその特定のセクションにおいてそのスレッドの構成識別子をルックアップすることにより取得する。各スレッドが、パイプラインを介して移動する際、その構成インスタンス識別子と関連付けられた構成インスタンスのみを経験する。
構成インスタンスを含むオンチップメモリは、任意のスレッドが任意の構成インスタンスを使用できるようにスレッド間で共有される。一つのスレッドは、他のものと同じ構成インスタンスを使用できる。スレッドは、異なる構成インスタンスを使用することもできる。多くのインスタンスにおいて、スレッドは、回路内においてそれに先行するスレッドとは全く異なる構成インスタンスを使用してもよい。従って、いかなる時も回路内で複数の構成インスタンスがアクティブとなっている可能性もある(実際、その可能性は高い)。スレッドの実行によって、回路内における次の経路上でそれがどの構成インスタンス識別子を使用するか(ひいては、どの構成インスタンスを使用するか)を変更してもよい。
スレッド番号及び幾つかの構成インスタンスビットを使用して、データストアからの値にアクセスする。この例において、これは、便宜上レジスタストア(106)により実施される。本発明の一実施例において、スレッドは、他のスレッドにより使用されているレジスタストア内の値にはアクセスできない。レジスタストアの値は、後続のクロックサイクルにおいてデータルーティングネットワーク111に入力される。データルーティングネットワークは、値を特定の実行ユニットに送ることが可能である。データルーティングネットワークは構成可能であるが、ルーティングネットワークを介したスイッチングの少なくとも一部を、ある一つのクロックサイクルから次のクロックサイクルに変更できる。ルーティングネットワークの一つのパイプライン化ステージから次のパイプライン化ステージに伝播する際に各入力が経験するスイッチングは、ネットワーク内においてそれに追従する構成インスタンス識別子から導出される構成インスタンスによって決まる。
データルーティングネットワーク内のデータ経路は、好ましくは、マルチプルビットワイドである。データ経路の正確な幅は、特定の用途に応じて調整できる。いずれの所定のルーティングネットワーク内においても、データ経路の全てが同じ幅を有している必要はない。例えば、データ経路のうちの幾つかの経路は、他のものよりも広い入力に対応するようにしてもよい。これは、ある状況においては、ルーティングの柔軟性を制限する可能性がある。データ経路のうち十分に広い経路を介して入力を送る必要があり、スレッドの他の入力に利用可能なルートを制限してしまう可能性がある。入力は、データ経路の全幅を利用する必要はないが、ネットワークの出力は、データルーティングネットワーク内の最も広い経路と等しい幾つかのビットに対応できなければならない。
本発明の幾つかの実施例では、単一のモノリシックなルーティングネットワークよりも、幾つかの別個のルーティングネットワークを有する方が便利なことがある。本発明の一実施例において、制御値及びデータ値は分離され、それぞれが、それ自体のレジスタストア(106及び107)及びルーティングネットワーク(111及び112)の組みを有する。一例において、ルーティングネットワーク(111)は、制御値のための幅が1ビットのみのデータ経路を備えてもよく、他のルーティングネットワーク(112)は、データ値のための幅が32ビットのデータ経路を備えてもよい。ルーティングネットワークのサイズは、入力及び出力の数によって決まり、そのように異なるルーティングネットワークは、異なるパイプライン深さを必要とする場合がある。図1のルーティングネットワークは、1つ又は2つのパイプラインステージを有してのみ示されている。実際は、ルーティングネットワークは、典型的に12前後のパイプラインステージを有することができる。
入力選択ユニットは、ルーティングネットワークからの各出力を実行ユニット(115)の入力に接続する。実行ユニットは、それらが入力に対して行うその動作が構成インスタンスからのビットによって決まるように構成可能である。実行ユニットにより実行されるその動作は、スレッドデータからの1以上のビット(例えば、そのデータに含まれる制御値)によって決まることもある。典型的に、実行ユニットは、パイプラインの単一のセクションを形成するが、幾つかの実行ユニットが、2つ以上のクロックサイクル(116)を必要とするより長い動作を実行するように構成されてもよく、これらの実行ユニットが、2つ以上のパイプラインセクションを形成するようにしてもよい。同様に、実行ユニットは、スレッドが1つ実行ユニットのから他の実行ユニット(不図示)に伝播するようにパイプラインの端部において互いに連結されてもよい。
各実行ユニットは、それが書き込むことのできるレジスタストア(117)に結果の値を書き込んでもよい。各レジスタストアには、1つの実行ユニットによってのみ書き込まれる。実行ユニットは、2つ以上のレジスタストアに書き込んでもよい。幾つかの実行ユニットは、共通の共有リソース(例えば、外部メモリ)に対して読み出し及び書き込むができる。共有リソース(オンチップ又は外部)に対する読み出し及び書き込みは、1回のクロックサイクルよりも長くできる可変レイテンシ動作となる傾向がある。
幾つかのレジスタストア内の幾つかのレジスタの位置を、その位置に記憶されたデータが有効か否かをアサートする有効ビットと関連付けてもよい。典型的に、可変レイテンシ実行ユニットと関連付けられたレジスタストアのみが、各位置を有効又は無効としてマークするための余分なビットを有している必要がある。他のレジスタストアは、常に有効値を保持すると考えられてもよい。
有効ビットは、書き込み動作の開始時に「無効」に設定され、書き込み動作が完了したときにのみ「有効」に戻るようにしてもよい。回路には、スレッドが読み出したいレジスタの位置が有効であることを、そのスレッドが実行ユニット(110)に達する前に確認する手段が組み込まれてもよい。これらの手段は、ルーティングネットワークと同じパイプラインセクション内に効率的に配置することができる。この役割は、スレッドに適切な有効ビットを、それが実行ユニットに投入される前に読み出すように構成されたチェックユニットによって実行されてもよい。チェックユニットは、無効データに対して動作する実行ユニットにスレッドが投入される場合、それらの実行ユニットを全て停止(又は、少なくとも、それらのメモリへの書き込み及びレジスタストアへの書き込みを停止)してもよい。これにより、「無効」データに対して実行された動作の結果がレジスタ又は他のメモリに書き込まれるのを阻止する。
一例において、2つの有効ビットが、それらを必要とする各レジスタストアの位置に割り当てられる。あるレジスタストアの位置に記憶されたデータは、その2つの有効ビットが異なる場合は無効であり、2つのビットが同じであれば有効であるとみなしてもよい(又は、その逆)。2つの有効ビットを有することによって、2つの異なるパイプラインステージにより同時にそれらを書き込むことが可能となる。典型的に、レジスタストア内のデータを無効化したいパイプラインステージは、有効ビットの一方をフリップするように構成され、レジスタストア内のデータを有効化する他のパイプラインステージは、有効ビットの他方をフリップするように構成される。
実行ユニット(118)は、特定のスレッドが回路内の他の経路で使用する構成インスタンスを、そのスレッド(119)と関連付けられた構成インスタンス識別子を変更することによって変更することもできる。新規の構成インスタンス識別子は、そのスレッドのために、回路内の次の経路において使用される。
実行ユニットは時々、スレッドの前回の実行による結果に基づく動作を行う必要がある。その一例として、アキュムレート動作がある。回路は、そのような動作を行う専用の1つ以上のユニットを備えてもよい。その一例として、アキュムレートレジスタストアがある。これらのレジスタストア(例えば:114)は、ルーティングネットワーク内を移動する必要がなく、必要なルーティングネットワークの大きさを低減できる。
実行ユニットは、典型的に、その内部にフィードバックを何ら有さない。フィードバックは、レジスタストア又は外部メモリに記憶されたデータを変更する、且つ/又は、スレッドの構成インスタンス識別子を変更するあるスレッドの実施によって、全回路ベースで実現される。
レジスタストア
各レジスタストアは、別個の値を記憶する複数の位置を含む。回路は、レジスタストアアドレスを用いて位置を選択してもよい。本発明の一実施例において、スレッドは、各レジスタストア内の位置の別個の組みにアクセスする。これは、レジスタストアに対する読み出しアドレス及び書き込みアドレスの一部が(適切なパイプラインステージにおける)スレッド番号並びにゼロ以上の構成インスタンスビットに基づくことを確保することによって実装できる。この実施例において、スレッドは、他のスレッドと関連付けられたレジスタストア内に保持された値にアクセスすることはできない。
レジスタストアは、通常、異なるパイプラインステージ内において読み出し及び書き込みが行われるため、任意の所定のクロックサイクルにおけるそのレジスタストアに対する読み出しアドレス及び書き込みアドレスが異なる場合が多い。従って、レジスタストアは、1つのクロックサイクルにおいて別個の読み出し動作及び書き込み動作を行うことが可能なオンチップメモリに実装すると有利である。
ルーティングネットワーク
ルーティングネットワークは、基本的に、複数の入力を複数の出力に接続するスイッチである。入力は、単一の出力又は複数の出力に接続させることができる。ルーティングネットワークは、好ましくは、そのスイッチングの少なくとも一部が構成インスタンスからのビットによってクロックサイクル毎に設定できるように、構成可能である。
ルーティングネットワークは、任意の入力又は任意の出力(更に、幾つかの実施例において、2つ以上の出力)に接続可能であってもよい。ルーティングネットワークは、入力を任意の組み合わせで出力に接続することができるように、非ブロッキング(non−blocking)としてもよい。
構成可能ルーティングネットワークを実施するのに適切なスイッチの一例として、クロスバースイッチがある。「クロスバースイッチ」という用語は、完全に柔軟なスイッチを称するのに使用される場合があるが、それぞれ且つ全ての入力を1つ(そして1つのみ)の出力に接続する能力を有するスイッチを称するのにも使用される。大きなスイッチに対して、Closネットワークが適切な場合もある。Closネットワークは、マルチステージスイッチである。選択肢の一つは、Closネットワークを複数のクロスバースイッチから構築することである。Closネットワークは、典型的に、それぞれ且つ全ての入力を、制限なく1つの出力に接続できる。また、これは常に可能というわけではないが、必要な接続性に応じて、入力を複数の出力に接続することも可能である。
ルーティングネットワークを実装するのに適切なスイッチの一例を、図2に示す。この図は、N×NのClosネットワークを示し、ここで、ネットワークの少なくとも2つの外側ステージが、2×2クロスバースイッチ(201)により実装されている。ネットワークの内側部分は、2つのN/2クロスバースイッチにより実装されていることが示されている(203)。これらのより大きなクロスバースイッチは、「入れ子(ネスト)」になっていてもよく、例えば、それら自体をクロスバースイッチ(又は何らかの他のスイッチ)の複数のステージにより実装されたClosネットワークとしてもよい。スイッチは、レジスタ202により示されるように、パイプライン化されている。レジスタは、1つのクロックサイクルから次のクロックサイクルへのスレッドデータを保持するように構成されている。
ルーティングネットワークをパイプライン化する利点は、それにより、長いデータ経路をより小さいセクションに分割することが可能となることである。これらのより小さいセクションは、より迅速に移動させることができ、それらに沿った伝搬は、速いクロックであっても単一のクロックサイクルに対応できる。選択肢の一つは、(スイッチの各ステージがパイプラインの一セクションを表すように)入れ子化されたマルチステージスイッチの全てのレベルにおいてレジスタを有することである。しかしながら実際は、これは、スイッチの内側ステージにおける距離がずっと短くなる傾向がありクロック速度を抑制しそうにない場合には不必要である。従って、単一のパイプラインセクションが、マルチステージスイッチの内側ステージを2つ以上備えて、レジスタがスイッチの各ステージに必要ないようにしてもよい。
2×2クロスバースイッチの一例を、図3に示す。このスイッチは、2つの入力301を受信し2つの出力304を出力するように配置されている。スイッチは、2つのマルチプレクサ302を備える。各マルチプレクサは、2つの入力のそれぞれを受信し、1つを出力として選択する。各マルチプレクサは、その入力の特定の1つをその出力として選択するように、構成インスタンスビット303により制御される。従って、構成インスタンスは、入力301から出力304へのマッピングを制御する。2×2クロスバーは、単純な例であるが、2×2クロスバーのレイヤを積層することによって、複数の入力を取り込みそれらを複数の出力に送ることができる柔軟なルーティングネットワークを構築することが可能である。これにより、入力を、更なる処理のために回路の適切な位置に送達することができる。
2×2クロスバーは、クロスバースイッチの単なる一例であり、他の大きさのクロスバーを使用することもできる(例えば、3×3、4×4又はそれ以上)。マルチステージスイッチは、異なるステージにおいて異なる大きさのクロスバーを使用してもよい。
実行ユニット
実行ユニットは、これらに限定はされないが、算出演算、論理演算若しくはシフト演算、又は、メモリの読み出し若しくは書き込み動作を含む一連の動作を実行することが可能となるようにデザインできる。実行ユニットは、そのデータ入力からのビット(例えばスレッドの制御値)に加えて構成インスタンスからのビットを使用でき、それにより特定のスレッドに対してどの動作を実行するかを決定できる。幾つかの実行ユニットは、他の実行ユニットとは異なる固有の能力を有してもよい。例えば、他の実行ユニットが実行できない動作を実行することが可能であってもよい。実行ユニットの数及び能力は、特定の用途に適合するように変更することができる。
実行ユニットの一例を、図4に示す。実行ユニット401は、構成インスタンスビット407に基づき動作を実行するように構成可能である。実行ユニットがデータに対してどのように動作するかを決定するのは、構成インスタンスビットである。実行ユニットは、データ入力405も備える。典型的に、これらの入力は、データルーティング回路により実行ユニットに送られたスレッドデータを受信する。これらの入力の幾つかは、実行ユニットがどのように動作するかに対して影響も及ぼす。実行ユニットは、クロック信号402及びスレッド番号403も受信する。クロック信号が、パイプラインを制御する。スレッド番号により、実行ユニットが現在処理しているスレッドが識別される。最終入力404が、レジスタの書き込みを可能とし、以下、より詳細に説明する。
実行ユニットは、データを、その専用のレジスタストア(408,409)への書き込みのために出力する。出力データは、実行ユニットがその入力に対して実行した動作の結果を表す。各データ出力412には、好ましくは、2つの添付出力、すなわち、書き込みイネーブル410及び書き込みアドレス411が設けられる。書き込みイネーブル410は、レジスタの書き込みを可能とする入力404によって設定される。データは、書き込みイネーブルが適切な値(典型的に1又は0)に保持されている場合にのみ、レジスタに書き込みしてもよい。書き込み動作は、書き込みイネーブルが適切な値でない場合に停止される。これを、レジスタの位置が無効であると判明した場合に用いて、その位置が再び有効となるまで、全てのレジスタの書き込みを禁止することができる(これは、以下の「パイプライン」セクションにおいてより詳細に説明する)。書き込みアドレス411は、通常、スレッド番号及び幾つかの構成インスタンスビットによって決まる。
特定の実行ユニットの幾つかの例を、図5〜10に示す。
図5は、簡単な加算器として構成された実行ユニットを示す。実行ユニットは、書き込みを可能とする入力501と、スレッド番号を識別するための入力502とを備える。実行ユニットは、加算すべきデータのための入力503,504も備える。この例において、実行ユニットは、加算のみ行うことができる(507)。構成インスタンスから抽出される1つの構成インスタンスビットによって、加算器の結果をレジスタストアに書き込むかが決まる(505)。現在のスレッドの値がいずれも有効でない場合に高く駆動されるレジスタの書き込みを可能とする入力は、加算器の結果が書き込まれるのを阻止することもできる。実行ユニットの出力508は、書き込みデータ、書き込みアドレス及びレジスタストアのための書き込みイネーブルを出力する。
図6は、パイプライン化ALUとして構成された実行ユニットを示す。このより複雑な例において、実行ユニットは、幾つかの異なる動作を実行できる。幾つかの構成インスタンスビット及び入力601からのビットにより、ALUが何を行うかが制御される(603)。例えば、一構成においてALUはマルチプレクサとして動作し、他の構成においてALUはキャリービットとして制御入力を使用してAddを実行し、他の構成において制御入力はALUがAdd又はSubtractのいずれを実行するかを選択できる。レジスタ602が設けられて、他の入力をパイプライン化してALUパイプラインに適合させる。ALUは、出力604並びにデータ値を生成する。一例として、この1ビットの出力は、ALUの結果がゼロの場合に高くなる。
図7は、長レイテンシオペレータ701を有する実行ユニットを示す。この例において、複数のレジスタ702が設けられて、書き込みイネーブル及び書き込みアドレスの値をパイプライン化する。これらの値は、各クロックサイクルにおいてレジスタを通って伝播し、新規のスレッドが実行ユニットに投入されて各クロックサイクルにおいて長レイテンシ動作を開始するのを可能とする。レジスタの数は、好ましくは、動作のレイテンシと適合する。オペレータ701は、パイプライン化されていてもされていなくてもよい。長レイテンシの動作の一部はオペレータにより実行されないため、幾つかのオペレータはパイプライン化を必要としない。例えば、この動作は、外部メモリに対する読み出し動作や書き込み動作であり、この場合、レイテンシは、そのメモリへのシステムバスを介したアクセスと関連付けられる。
図8は、スレッドが回路内の次の経路で使用する構成インスタンス識別子を変更する実行ユニットの一例を示す。この例において、選択は、8つの構成インスタンス識別子802のうちの1つを選択する3つの制御ビット801によって制御される。実行ユニットは、選択された構成インスタンス識別子を記憶するための出力803を備える。
実行ユニットはフラクチャブルであってもよい。すなわち、スレッドの要件に応じて、より小さい個別の実行可能ユニットに分離可能であってもよい。一例を図9に示す。図9の実行ユニットは、2つの32ビットALUに分割可能な64ビットALU901を備える。2対の32ビットの値又は1対の64ビットの値に対して、入力902,903を使用できる。構成インスタンスビットは、ALUが、64ビットALUとして動作するか、又は、2つの32ビットALUとして動作するかを設定する。フラクチャブル実行ユニットの利点の一つは、2つ以上の個別のユニットよりも実装が廉価で済むことである。
従来、幾つかの実行ユニットは、特定の順序で入力が示されている必要がある。好ましくは、実行ユニットは、可能であれば、入力の順序が問題とならないように構成される。2つの例は、図10に示すルックアップテーブルを含む。これらのルックアップテーブルは、入力が提示される順序に影響を受けないように構成され、これにより幾つかのスイッチをルーティングネットワークから取り除くことが可能となる。
パイプライン
命令が完了するのにかかる時間は、あるレジスタストアの読み出しとそれに対応するレジスタストアの書き込みとの間のパイプラインステージの最大数(「p」で示す)、及び、プロセッサのクロック周波数(「f」で示す)によって決まる。そして、1命令当たりのレイテンシは、p/fとなる。しかしながら、パイプラインは、クロックサイクル毎に、p以上の異なるスレッドからの命令を処理することができる。スレッドは、連続的に循環し、クロックサイクル毎に1つずつ、パイプラインに発行される。
レジスタストアから読みだされた値が有効でないとみなされる場合には常に、そのスレッドは、あらゆるレジスタストアへの書き込みやその構成インスタンス識別子の変更が阻止される。これにより、スレッドは、そのスレッドに可視な状態を変更することが不可能となり、それがパイプラインに再発行された際には同じ状態から再開する。好ましくは、回路は、各スレッドがそれ自体の(上述のような)レジスタストアにのみアクセスするように構成される。そして、全ての他のスレッドは、他のスレッドのいずれかが無効値に当たるか否かに関係なく、それらの読み出された値が有効であることを条件に影響を受けていないパイプライン内を進行する。無効なレジスタの値は可変レイテンシを有する実行ユニットから生じ、従って、無効レジスタの値は最終的に有効となり、前回は状態を更新することを阻止されていたスレッドが、それを行うことが可能となる。このようにして、個々のスレッドは、パイプライン自体が値を伝播し続けていても、「ストールしている(stalled)」とみなされうる。
ユーザは、パイプラインレジスタの可視性を持たない。これにより、プログラムは、異なるパイプラインを回路が有する場合であっても、変形させることなく本明細書に記載の原理に応じて、設計された異なる回路上で動作することが可能となる。唯一の違いは、各命令を完了するのにかかる時間の長さである。
構成インスタンス
オンチップメモリには、1組の構成インスタンスがある。本発明の一実施例において、その構成インスタンスメモリには外部プロセッサによってアクセスしうる。個々の構成インスタンスは、構成インスタンスメモリに書き込むことによってロードできる。構成メモリが同じクロックサイクルで読み出し及び書き込みできる場合には、スレッドは、構成インスタンスがロードされている間も、パイプライン内を進行し続けることができる。パイプライン内のいずれかのスレッドにより使用されている構成インスタンスは、ロードされないようにすべきである。これは、使用中の全ての構成インスタンス識別子を監視するオペレーティングシステム又は何らかの追加ハードウェアによって実現できる。
1つの構成インスタンスを、レジスタストアを変更したりメモリへのアクセスを行ったりできないようにしてもよい。この「ヌル」構成インスタンスは、スレッドが非アクティブのとき(例えば起動時)に、パイプライン内のスロットに対して使用しうる。
本発明の一実施例において、ルーティングの特定の実行ユニット又は一部のための回路を動的に変更してもよい。オペレーティングシステムは、どのスレッドも、動的に変更されている最中の回路を使用しないことを確実にするように構成する必要がある。動的に回路を変更可能な技術の一例として、FPGAがある。典型的に、この種の再プログラミングは、オフチップからプログラムファイルをダウンロードして回路の全て又は一部を再構成することを伴う。このプロセスは、典型的に、ミリセカンドオーダーで行われる(それに対して、各スレッドに対する回路の構成は、ナノセカンドオーダーで行われる)。回路が、暗号化や何らかの他の集中的な処理動作等の幾つかの専門処理を一度に実行する必要がある場合には、遅延は正当化される。本明細書に記載の回路は、その内部に実行ユニットが含まれるため、この種の動的再構成に特に適している。それらは、周囲の回路の構造を変更する必要なく、変更することができる。
上述の特定の例は、本発明の範囲内において様々な形で変更することができる。例えば、上述の回路は、スレッドが、それが回路内の次の経路で使用する構成インスタンス識別子を変更することにより、又は、制御データを書き込むことにより、その構成インスタンスを変更することを可能としている。将来実装されうる他の可能性としては、スレッドに、他のスレッドに適用される構成インスタンス識別子を変更させることや、スレッドに、構成インスタンスメモリに直接書き込みさせることが挙げられる。
出願人は、本明細書に記載の個々の特徴及びそのような特徴の2つ以上のあらゆる組み合わせを分離して開示しているが、その開示は、そのような特徴及び組み合わせが本明細書に開示の問題を解決するかどうかにかかわらず、且つ、特許請求の範囲に対して何ら限定することなく、そのような特徴及び組み合わせを当業者の一般的常識に鑑み本明細書全体に基づき実行可能となる程度になされている。出願人は、本発明の態様が、任意のそのような個々の特徴又は特徴の組み合わせから構成されうることを指摘する。前述の説明に鑑み、当業者にとって、本発明の範囲内において様々な変更を行ってもよいことは明らかであろう。

Claims (31)

  1. 複数のスレッドを同時に取り扱うことが可能な構成可能処理回路であって、
    スレッドデータストアと、
    複数の構成可能実行ユニットと、
    前記スレッドデータストアを前記実行ユニットに接続する構成可能ルーティングネットワークと、
    構成インスタンスを記憶し、該構成インスタンスのそれぞれがルーティングネットワークの構成及び前記複数の実行ユニットのうち1つ以上の構成を規定している、構成データストアと、
    前記実行ユニット、前記ルーティングネットワーク及び前記スレッドデータストアから形成されるとともに複数のパイプラインセクションを備え、該複数のパイプラインセクションが、各クロックサイクルにおいて各スレッドが一つのパイプラインセクションから次のパイプラインセクションに伝播するように構成されている、パイプラインとを備え、
    (i)各スレッドを構成インスタンスと関連付け、
    (ii)各クロックサイクルにおいて、前記複数のパイプラインセクションのそれぞれを、そのクロックサイクル中にそのパイプラインセクション内を伝播する各スレッドと関連付けられた構成インスタンスに従うように構成し、
    (iii)前記スレッドデータストア内のどの位置から読み出すか、及び、前記スレッドデータストア内のどの位置に前記実行ユニットが書き込むかを、前記構成インスタンスに基づき選択するように構成された回路。
  2. 各構成インスタンスを構成識別子と関連付けるように構成された、請求項1に記載の構成可能処理回路。
  3. スレッドと関連付けられた構成識別子を、該スレッドと協調して前記パイプライン内を伝播させるように構成された、請求項2に記載の構成可能処理回路。
  4. 前記構成データストアが、複数のメモリを備え、
    前記構成インスタンスを前記複数のメモリに亘って分割して、各メモリが特定のパイプラインセクションに適用可能な前記構成インスタンスの部分を記憶するように構成された、請求項1〜3のいずれか一項に記載の構成可能処理回路。
  5. 各パイプラインセクションが、それに適用可能な前記構成インスタンスの部分を記憶する前記メモリにアクセスすることにより構成インスタンスにアクセスするように構成されている、請求項4に記載の構成可能処理回路。
  6. 前記パイプラインの各セクションが、スレッドと関連付けられた前記構成識別子を使用して、前記構成データストア内のそのスレッドと関連付けられた前記構成インスタンスにアクセスするように構成されている、請求項2、3、請求項2に従属する請求項4又は5のいずれか一項に記載の構成可能処理回路。
  7. 前記複数のスレッドが独立している、請求項1〜6のいずれか一項に記載の構成可能処理回路。
  8. 2つ以上のスレッドを同一の構成識別子と関連付けるように構成された、請求項1〜7のいずれか一項に記載の構成可能処理回路。
  9. 前記構成可能ルーティングネットワークが、複数のネットワーク入力及び複数のネットワーク出力を備え、各ネットワーク入力をネットワーク出力に接続するように構成可能である、請求項1〜のいずれか一項に記載の構成可能処理回路。
  10. 前記構成可能ルーティングネットワークが、任意のネットワーク入力を任意のネットワーク出力に接続することが可能である、請求項に記載の構成可能処理回路。
  11. 前記構成可能ルーティングネットワークが、任意のネットワーク入力を前記ネットワーク出力のうちの任意の1つ以上に接続することが可能である、請求項又は1に記載の構成可能処理回路。
  12. 前記構成可能ルーティングネットワークの出力が、前記実行ユニットの入力に接続されている、請求項1〜1のいずれか一項に記載の構成可能処理回路。
  13. 前記構成可能ルーティングネットワークが、マルチステージスイッチを備える、請求項1〜1のいずれか一項に記載の構成可能処理回路。
  14. 前記マルチステージスイッチが、各ステージに1つ以上のスイッチを備え、各スイッチが、複数のスイッチ入力及び複数のスイッチ出力を有し、各スイッチ入力をスイッチ出力に接続するように構成可能である、請求項1に記載の構成可能処理回路。
  15. 前記マルチステージスイッチの各ステージにおけるスイッチが、同じ数のスイッチ入力及びスイッチ出力を備える、請求項1に記載の構成可能処理回路。
  16. 前記マルチステージスイッチの1つのステージに備えられた前記スイッチが、他のステージに備えられた前記スイッチとは異なる数のスイッチ入力及びスイッチ出力を備える、請求項1に記載の構成可能処理回路。
  17. 1つのパイプラインセクションが、前記マルチステージスイッチの1つ以上のステージに備えられた前記スイッチから形成されている、請求項1〜1のいずれか一項に記載の構成可能処理回路。
  18. 前記マルチステージスイッチの内側ステージにおけるスイッチから形成されたパイプラインセクションが、該マルチステージスイッチにおける、前記マルチステージスイッチの外側ステージに備えられたスイッチから形成されたパイプラインセクションとは異なる数のステージからのスイッチを備える、請求項1に記載の構成可能処理回路。
  19. 前記構成可能ルーティングネットワークが、Closネットワークを備える、請求項1〜18のいずれか一項に記載の構成可能処理回路。
  20. 前記構成可能ルーティングネットワークが、1つ以上のクロスバースイッチを備える、請求項1〜19のいずれか一項に記載の構成可能処理回路。
  21. 前記構成可能ルーティングネットワークが、非ブロッキングである、請求項1〜2のいずれか一項に記載の構成可能処理回路。
  22. 前記構成可能ルーティングネットワークが、完全に構成可能である、請求項1〜2のいずれか一項に記載の構成可能処理回路。
  23. 前記構成可能ルーティングネットワークが、部分的に構成可能である、請求項1〜2のいずれか一項に記載の構成可能処理回路。
  24. 各実行ユニットのために専用のオンチップメモリを備える、請求項1〜2のいずれか一項に記載の構成可能処理回路。
  25. 前記スレッドデータストア内に記憶されたデータが有効であることをチェックするチェックユニットを備える、請求項1〜2のいずれか一項に記載の構成可能処理回路。
  26. 前記スレッドデータストア内の位置が、2つの有効ビットと関連付けられている、請求項1〜2のいずれか一項に記載の構成可能処理回路。
  27. 前記構成可能ルーティングネットワークが、前記スレッドデータストアから読み出されたデータを運ぶためのマルチプルビットワイドであるデータ経路を備える、請求項1〜26のいずれか一項に記載の構成可能処理回路。
  28. 2つの構成可能ルーティングネットワークを備え、前記構成可能ルーティングネットワークの一方が、他方よりも広いデータ経路を備える、請求項1〜27のいずれか一項に記載の構成可能処理回路。
  29. フラクチャブル実行ユニットを備える、請求項1〜28のいずれか一項に記載の構成可能処理回路。
  30. 動的再構成が可能な、請求項1〜29のいずれか一項に記載の構成可能処理回路。
  31. スレッドデータストアと、複数の構成可能実行ユニットと、前記スレッドデータストアを前記実行ユニットに接続する構成可能ルーティングネットワークと、前記実行ユニット、前記ルーティングネットワーク及び前記スレッドデータストアから形成され、複数のパイプラインセクションを備えるパイプラインとを備える構成可能処理回路において、複数のスレッドを同時に取り扱う方法であって、
    各スレッドを、前記ルーティングネットワークの構成と、前記複数の実行ユニットのうちの1つ以上の構成と、前記データストア内のどの位置から読み出すか、及び、前記データストア内のどの位置に前記実行ユニットが書き込むかと、を規定する構成インスタンスと関連付けることと、
    各クロックサイクルで、各スレッドを、一つのパイプラインセクションから次のパイプラインセクションに伝播させることと、
    各クロックサイクルにおいて、前記複数のパイプラインセクションのそれぞれを、そのクロックサイクル中にそのパイプラインセクション内を伝播する各スレッドと関連付けられた前記構成インスタンスに応じるように構成することと
    を含む方法。
JP2016551066A 2013-10-31 2014-10-28 パイプライン化構成可能プロセッサ Active JP6708552B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1319279.4 2013-10-31
GB1319279.4A GB2519813B (en) 2013-10-31 2013-10-31 Pipelined configurable processor
PCT/GB2014/053200 WO2015063466A1 (en) 2013-10-31 2014-10-28 Pipelined configurable processor

Publications (3)

Publication Number Publication Date
JP2016535913A JP2016535913A (ja) 2016-11-17
JP2016535913A5 JP2016535913A5 (ja) 2017-12-14
JP6708552B2 true JP6708552B2 (ja) 2020-06-10

Family

ID=49767493

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016551066A Active JP6708552B2 (ja) 2013-10-31 2014-10-28 パイプライン化構成可能プロセッサ

Country Status (7)

Country Link
US (3) US9658985B2 (ja)
EP (1) EP3063651A1 (ja)
JP (1) JP6708552B2 (ja)
KR (1) KR20160105774A (ja)
CN (1) CN105830054B (ja)
GB (2) GB2519813B (ja)
WO (1) WO2015063466A1 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2519813B (en) * 2013-10-31 2016-03-30 Silicon Tailor Ltd Pipelined configurable processor
JP6816380B2 (ja) * 2016-04-15 2021-01-20 オムロン株式会社 画像処理装置、画像処理方法、情報処理プログラム、および記録媒体
CN107962560B (zh) * 2016-10-18 2020-08-07 珠海格力智能装备有限公司 机器人及其控制方法和装置
CN107953330A (zh) * 2016-10-18 2018-04-24 珠海格力智能装备有限公司 机器人及其控制方法和装置
US11055807B2 (en) * 2017-06-12 2021-07-06 Apple Inc. Method and system for a transactional based display pipeline to interface with graphics processing units
US11093251B2 (en) 2017-10-31 2021-08-17 Micron Technology, Inc. System having a hybrid threading processor, a hybrid threading fabric having configurable computing elements, and a hybrid interconnection network
EP3704595A4 (en) * 2017-10-31 2021-12-22 Micron Technology, Inc. SYSTEM WITH A HYBRID THREADING PROCESSOR, HYBRID THREADING MATRIX WITH CONFIGURABLE COMPUTER ELEMENTS AND HYBRID CONNECTION NETWORK
WO2019191742A1 (en) * 2018-03-31 2019-10-03 Micron Technology, Inc. Loop thread order execution control of a multi-threaded, self-scheduling reconfigurable computing fabric
WO2019191738A1 (en) 2018-03-31 2019-10-03 Micron Technology, Inc. Backpressure control using a stop signal for a multi-threaded, self-scheduling reconfigurable computing fabric
EP3776238A1 (en) 2018-03-31 2021-02-17 Micron Technology, Inc. Execution control of a multi-threaded, self-scheduling reconfigurable computing fabric
WO2019191739A1 (en) 2018-03-31 2019-10-03 Micron Technology, Inc. Efficient loop execution for a multi-threaded, self-scheduling reconfigurable computing fabric
US11048656B2 (en) 2018-03-31 2021-06-29 Micron Technology, Inc. Multi-threaded, self-scheduling reconfigurable computing fabric
WO2019191740A1 (en) 2018-03-31 2019-10-03 Micron Technology, Inc. Multiple types of thread identifiers for a multi-threaded, self-scheduling reconfigurable computing fabric
CN111919203A (zh) 2018-03-31 2020-11-10 美光科技公司 使用重入队列的多线程自调度可重新配置计算架构的循环执行控制
WO2019191743A1 (en) 2018-03-31 2019-10-03 Micron Technology, Inc. Conditional branching control for a multi-threaded, self- scheduling reconfigurable computing fabric
US11119972B2 (en) * 2018-05-07 2021-09-14 Micron Technology, Inc. Multi-threaded, self-scheduling processor
US11074213B2 (en) * 2019-06-29 2021-07-27 Intel Corporation Apparatuses, methods, and systems for vector processor architecture having an array of identical circuit blocks
US11573834B2 (en) 2019-08-22 2023-02-07 Micron Technology, Inc. Computational partition for a multi-threaded, self-scheduling reconfigurable computing fabric
US11150900B2 (en) 2019-08-28 2021-10-19 Micron Technology, Inc. Execution or write mask generation for data selection in a multi-threaded, self-scheduling reconfigurable computing fabric
US11494331B2 (en) 2019-09-10 2022-11-08 Cornami, Inc. Reconfigurable processor circuit architecture
US20220413721A1 (en) * 2021-06-28 2022-12-29 Google Llc Control of machine-learning systems
US11709796B2 (en) 2021-08-16 2023-07-25 Micron Technology, Inc. Data input/output operations during loop execution in a reconfigurable compute fabric
CN116450570B (zh) * 2023-06-19 2023-10-17 先进能源科学与技术广东省实验室 基于fpga的32位risc-v处理器及电子设备

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282627B1 (en) 1998-06-29 2001-08-28 Chameleon Systems, Inc. Integrated processor and programmable data path chip for reconfigurable computing
US6349346B1 (en) 1999-09-23 2002-02-19 Chameleon Systems, Inc. Control fabric unit including associated configuration memory and PSOP state machine adapted to provide configuration address to reconfigurable functional unit
US6693456B2 (en) * 2000-08-04 2004-02-17 Leopard Logic Inc. Interconnection network for a field programmable gate array
US6759869B1 (en) * 2002-06-05 2004-07-06 Xilinx, Inc. Large crossbar switch implemented in FPGA
US6925643B2 (en) * 2002-10-11 2005-08-02 Sandbridge Technologies, Inc. Method and apparatus for thread-based memory access in a multithreaded processor
US7149996B1 (en) * 2003-07-11 2006-12-12 Xilinx, Inc. Reconfigurable multi-stage crossbar
US7694304B2 (en) * 2003-08-28 2010-04-06 Mips Technologies, Inc. Mechanisms for dynamic configuration of virtual processor resources
US7263599B2 (en) * 2004-02-06 2007-08-28 Infineon Technologies Thread ID in a multithreaded processor
JP4484756B2 (ja) * 2004-06-21 2010-06-16 三洋電機株式会社 リコンフィギュラブル回路および処理装置
US7873776B2 (en) * 2004-06-30 2011-01-18 Oracle America, Inc. Multiple-core processor with support for multiple virtual processors
US7224184B1 (en) * 2004-11-05 2007-05-29 Xilinx, Inc. High bandwidth reconfigurable on-chip network for reconfigurable systems
US7276933B1 (en) 2004-11-08 2007-10-02 Tabula, Inc. Reconfigurable IC that has sections running at different looperness
CN100492296C (zh) * 2005-04-12 2009-05-27 松下电器产业株式会社 处理器
WO2006109835A1 (ja) * 2005-04-12 2006-10-19 Matsushita Electric Industrial Co., Ltd. プロセッサ
US20100122105A1 (en) * 2005-04-28 2010-05-13 The University Court Of The University Of Edinburgh Reconfigurable instruction cell array
US7768301B2 (en) * 2006-01-17 2010-08-03 Abound Logic, S.A.S. Reconfigurable integrated circuits with scalable architecture including a plurality of special function elements
US7928761B2 (en) * 2007-09-06 2011-04-19 Tabula, Inc. Configuration context switcher with a latch
US8868888B2 (en) * 2007-09-06 2014-10-21 Qualcomm Incorporated System and method of executing instructions in a multi-stage data processing pipeline
US7902862B2 (en) * 2007-09-14 2011-03-08 Agate Logic, Inc. High-bandwidth interconnect network for an integrated circuit
US8006073B1 (en) * 2007-09-28 2011-08-23 Oracle America, Inc. Simultaneous speculative threading light mode
US8078833B2 (en) * 2008-05-29 2011-12-13 Axis Semiconductor, Inc. Microprocessor with highly configurable pipeline and executional unit internal hierarchal structures, optimizable for different types of computational functions
JP2010146102A (ja) * 2008-12-16 2010-07-01 Sanyo Electric Co Ltd 演算処理装置および記憶領域割当方法
US8126002B2 (en) * 2009-03-31 2012-02-28 Juniper Networks, Inc. Methods and apparatus related to a shared memory buffer for variable-sized cells
US8352669B2 (en) * 2009-04-27 2013-01-08 Lsi Corporation Buffered crossbar switch system
US8006075B2 (en) * 2009-05-21 2011-08-23 Oracle America, Inc. Dynamically allocated store queue for a multithreaded processor
JPWO2011125174A1 (ja) * 2010-04-06 2013-07-08 トヨタ自動車株式会社 動的再構成プロセッサ及びその動作方法
US20110276760A1 (en) * 2010-05-06 2011-11-10 Chou Yuan C Non-committing store instructions
US7982497B1 (en) 2010-06-21 2011-07-19 Xilinx, Inc. Multiplexer-based interconnection network
US9152748B2 (en) * 2011-05-06 2015-10-06 Xcelemor, Inc. Computing system with switching mechanism and method of operation thereof
US9166928B2 (en) * 2011-09-30 2015-10-20 The Hong Kong University Of Science And Technology Scalable 3-stage crossbar switch
GB2519813B (en) * 2013-10-31 2016-03-30 Silicon Tailor Ltd Pipelined configurable processor

Also Published As

Publication number Publication date
US20180089140A1 (en) 2018-03-29
GB2526018B (en) 2018-11-14
US20160259757A1 (en) 2016-09-08
EP3063651A1 (en) 2016-09-07
GB201319279D0 (en) 2013-12-18
WO2015063466A4 (en) 2015-07-30
GB2519813B (en) 2016-03-30
JP2016535913A (ja) 2016-11-17
GB2526018A (en) 2015-11-11
US10275390B2 (en) 2019-04-30
CN105830054A (zh) 2016-08-03
GB201513909D0 (en) 2015-09-23
US9658985B2 (en) 2017-05-23
WO2015063466A1 (en) 2015-05-07
CN105830054B (zh) 2019-03-08
GB2519813A (en) 2015-05-06
KR20160105774A (ko) 2016-09-07
US20200026685A1 (en) 2020-01-23

Similar Documents

Publication Publication Date Title
JP6708552B2 (ja) パイプライン化構成可能プロセッサ
US11157428B1 (en) Architecture and programming in a parallel processing environment with a tiled processor having a direct memory access controller
US5933855A (en) Shared, reconfigurable memory architectures for digital signal processing
JP4391935B2 (ja) 散在しているプロセッサと通信要素を備える処理システム
US20060294344A1 (en) Computer processor pipeline with shadow registers for context switching, and method
US11334504B2 (en) Hybrid architecture for signal processing and signal processing accelerator
JPS63147258A (ja) マルチノード再構成可能パイプラインコンピュータ
US10114795B2 (en) Processor in non-volatile storage memory
KR20220010035A (ko) 이종 처리 시스템을 위한 데이터 흐름 그래프 프로그래밍 환경
US20060015701A1 (en) Arithmetic node including general digital signal processing functions for an adaptive computing machine
JP2005539293A (ja) 部分的にグローバルなコンフィギュレーションバスを用いたプログラマブルパイプラインファブリック
US20170147513A1 (en) Multiple processor access to shared program memory
JP2005539292A (ja) 信号伝播を終了させる機構を有するプログラマブルパイプラインファブリック
US9553590B1 (en) Configuring programmable integrated circuit device resources as processing elements
JP2006018452A (ja) 半導体装置
US8607029B2 (en) Dynamic reconfigurable circuit with a plurality of processing elements, data network, configuration memory, and immediate value network
US8041925B2 (en) Switch coupled function blocks with additional direct coupling and internal data passing from input to output to facilitate more switched inputs to second block
GB2555363A (en) Multistage switch
US6963966B1 (en) Accumulator-based load-store CPU architecture implementation in a programmable logic device
US9081901B2 (en) Means of control for reconfigurable computers
Amano et al. A dynamically adaptive switching fabric on a multicontext reconfigurable device
WO2021014017A1 (en) A reconfigurable architecture, for example a coarse-grained reconfigurable architecture as well as a corresponding method of operating such a reconfigurable architecture
Bindal et al. Special Topics
Hendry The Effects of Caching on Reconfigurable Adaptive Computing Systems

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171030

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171030

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181205

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190304

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190507

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20191030

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200228

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20200324

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200428

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200521

R150 Certificate of patent or registration of utility model

Ref document number: 6708552

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250