図面 (/)

技術 パイプライン化構成可能プロセッサ

出願人 シリコンテーラーリミテッド
発明者 メッツゲン、ポール
出願日 2014年10月28日 (6年0ヶ月経過) 出願番号 2016-551066
公開日 2016年11月17日 (4年0ヶ月経過) 公開番号 2016-535913
状態 特許登録済
技術分野 マルチプロセッサ 先行制御 マルチプログラミング マイクロコンピュータ
主要キーワード チェックユニット 構成識別子 一セクション アキュムレート スレッドデータ 立ち下がりクロック スイッチセル 計算問題
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2016年11月17日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (11)

課題・解決手段

複数のスレッドを同時に取り扱うことが可能な構成可能処理回路であって、スレッドデータストアと、複数の構成可能実行ユニットと、スレッドデータストア内の位置を実行ユニットに接続する構成可能ルーティングネットワークと、構成インスタンスを記憶し、該構成インスタンスのそれぞれがルーティングネットワークの構成及び複数の実行ユニットのうち1つ以上の構成を規定している、構成データストアと、実行ユニット、ルーティングネットワーク及びスレッドデータストアから形成されるとともに複数のパイプラインセクションを備え、それら複数のパイプラインセクションが、各クロックサイクルにおいて各スレッドが一つのパイプラインセクションから次のパイプラインセクションに伝播するように構成されている、パイプラインとを備え、(i)各スレッドを構成インスタンスと関連付け、(ii)各クロックサイクルに対して、複数のパイプラインセクションのそれぞれを、そのクロックサイクル中にそのパイプラインセクション内を伝播する各スレッドと関連付けられた構成インスタンスに従うように構成するように構成された回路

概要

背景

集積回路は、典型的に、インターコネクト回路により互いに接続された多数の機能ユニットを備える。機能ユニット及びインターコネクト回路が構成可能な場合もある。これは、機能ユニットを、特定の挙動を採用するようにプログラムできるとともに、インターコネクト回路を、回路の異なる部分を接続するようにプログラムできることを意味する。構成可能回路の良く知られた例が、FPGA(フィールドプログラマブルゲートアレイ)であり、これは、幅広い範囲の異なる機能を実施するようにユーザがプログラムできるものである。構成可能集積回路の他の例が、特許文献1,2及び3に記載されている。

多くの構成可能回路には、速度と柔軟性との間にトレードオフが存在する。柔軟性を最大化するためには、できるだけ多くの異なる組み合わせの機能ユニットを互いに接続できることが望ましい。これは、実行ユニットチップ上において離間している場合には、長いインターコネクト経路が必要となる。一般に、集積回路は、1回のクロック周期で行える最も長い動作よりも速くクロックさせることはできない。多くの場合、インターコネクトが原因の遅延は、機能ユニットが原因の遅延よりも影響が大きいため、データを長いインターコネクト経路を介して伝送するのに要する時間は、最終的に回路全体クロック速度を制限しうる制約となる。

集積回路における時間の遅延に対して上限を設ける選択肢の一つとしては、1回のクロック周期に横断する全てのインターコネクト経路の長さを制限することがある。これは、データが集積回路内を移動する際にそのデータにパイプライン処理を施すことによって実現できる。一例が特許文献4に記載されており、この例では、インターコネクトネットワーク内のスイッチセルへの入力が、そのインターコネクトネットワーク内をデータが送られる際にそのデータにパイプライン処理を施すラッチを有する。この手法の問題は、必要なラッチを組み込むために、ユーザのデザイン修正する必要がある場合があることである。

概要

複数のスレッドを同時に取り扱うことが可能な構成可能処理回路であって、スレッドデータストアと、複数の構成可能実行ユニットと、スレッドデータストア内の位置を実行ユニットに接続する構成可能ルーティングネットワークと、構成インスタンスを記憶し、該構成インスタンスのそれぞれがルーティングネットワークの構成及び複数の実行ユニットのうち1つ以上の構成を規定している、構成データストアと、実行ユニット、ルーティングネットワーク及びスレッドデータストアから形成されるとともに複数のパイプラインセクションを備え、それら複数のパイプラインセクションが、各クロックサイクルにおいて各スレッドが一つのパイプラインセクションから次のパイプラインセクションに伝播するように構成されている、パイプラインとを備え、(i)各スレッドを構成インスタンスと関連付け、(ii)各クロックサイクルに対して、複数のパイプラインセクションのそれぞれを、そのクロックサイクル中にそのパイプラインセクション内を伝播する各スレッドと関連付けられた構成インスタンスに従うように構成するように構成された回路。

目的

スレッド番号を伝播させる選択肢の一つは、各パイプラインセクション内に、そのパイプラインセクションに現在あるスレッドのスレッド番号を記憶するためのレジスタ108を有することである

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

複数のスレッドを同時に取り扱うことが可能な構成可能処理回路であって、スレッドデータストアと、複数の構成可能実行ユニットと、前記スレッドデータストアを前記実行ユニットに接続する構成可能ルーティングネットワークと、構成インスタンスを記憶し、該構成インスタンスのそれぞれがルーティングネットワークの構成及び前記複数の実行ユニットのうち1つ以上の構成を規定している、構成データストアと、前記実行ユニット、前記ルーティングネットワーク及び前記スレッドデータストアから形成されるとともに複数のパイプラインセクションを備え、該複数のパイプラインセクションが、各クロックサイクルにおいて各スレッドが一つのパイプラインセクションから次のパイプラインセクションに伝播するように構成されている、パイプラインとを備え、(i)各スレッドを構成インスタンスと関連付け、(ii)各クロックサイクルにおいて、前記複数のパイプラインセクションのそれぞれを、そのクロックサイクル中にそのパイプラインセクション内を伝播する各スレッドと関連付けられた構成インスタンスに従うように構成するように構成された回路

請求項2

各構成インスタンスを構成識別子と関連付けるように構成された、請求項1に記載の構成可能処理回路。

請求項3

スレッドと関連付けられた構成識別子を、該スレッドと協調して前記パイプライン内を伝播させるように構成された、請求項2に記載の構成可能処理回路。

請求項4

前記構成データストアが、複数のメモリを備え、前記構成インスタンスを前記複数のメモリに亘って分割して、各メモリが特定のパイプラインセクションに適用可能な前記構成インスタンスの部分を記憶するように構成された、請求項1〜3のいずれか一項に記載の構成可能処理回路。

請求項5

各パイプラインセクションが、それに適用可能な前記構成インスタンスの部分を記憶する前記メモリにアクセスすることにより構成インスタンスにアクセスするように構成されている、請求項4に記載の構成可能処理回路。

請求項6

前記パイプラインの各セクションが、スレッドと関連付けられた前記構成識別子を使用して、前記構成データストア内のそのスレッドと関連付けられた前記構成インスタンスにアクセスするように構成されている、請求項2〜5のいずれか一項に記載の構成可能処理回路。

請求項7

前記複数のスレッドが独立している、請求項1〜6のいずれか一項に記載の構成可能処理回路。

請求項8

2つ以上のスレッドを同一の構成識別子と関連付けるように構成された、請求項1〜7のいずれか一項に記載の構成可能処理回路。

請求項9

スレッドが前記回路内の第2の後続経路とは異なる前記回路内の一経路上の構成に追従できるように、そのスレッドと関連付けられた前記構成識別子を変更することが可能な、請求項1〜8のいずれか一項に記載の構成可能処理回路。

請求項10

前記スレッドと関連付けられた入力に対して動作を行う際に、前記実行ユニットの1つにより生成された出力に基づき前記構成識別子を変更するように構成された、請求項9に記載の構成可能処理回路。

請求項11

前記構成可能ルーティングネットワークが、複数のネットワーク入力及び複数のネットワーク出力を備え、各ネットワーク入力をネットワーク出力に接続するように構成可能である、請求項1〜10のいずれか一項に記載の構成可能処理回路。

請求項12

前記構成可能ルーティングネットワークが、任意のネットワーク入力を任意のネットワーク出力に接続することが可能である、請求項11に記載の構成可能処理回路。

請求項13

前記構成可能ルーティングネットワークが、任意のネットワーク入力を前記ネットワーク出力のうちの任意の1つ以上に接続することが可能である、請求項11又は12に記載の構成可能処理回路。

請求項14

前記構成可能ルーティングネットワークの出力が、前記実行ユニットの入力に接続されている、請求項1〜13のいずれか一項に記載の構成可能処理回路。

請求項15

前記構成可能ルーティングネットワークが、マルチステージスイッチを備える、請求項1〜14のいずれか一項に記載の構成可能処理回路。

請求項16

前記マルチステージスイッチが、各ステージに1つ以上のスイッチを備え、各スイッチが、複数のスイッチ入力及び複数のスイッチ出力を有し、各スイッチ入力をスイッチ出力に接続するように構成可能である、請求項15に記載の構成可能処理回路。

請求項17

前記マルチステージスイッチの各ステージにおけるスイッチが、同じ数のスイッチ入力及びスイッチ出力を備える、請求項16に記載の構成可能処理回路。

請求項18

前記マルチステージスイッチの1つのステージに備えられた前記スイッチが、他のステージに備えられた前記スイッチとは異なる数のスイッチ入力及びスイッチ出力を備える、請求項16に記載の構成可能処理回路。

請求項19

パイプラインセクションが、前記マルチステージスイッチの1つ以上のステージに備えらえた前記スイッチから形成されている、請求項15〜18のいずれか一項に記載の構成可能処理回路。

請求項20

前記マルチステージスイッチの内側ステージにおけるスイッチから形成されたパイプラインセクションが、該マルチステージスイッチにおける、前記マルチステージスイッチの外側ステージに備えられたスイッチから形成されたパイプラインセクションとは異なる数のステージからのスイッチを備える、請求項19に記載の構成可能処理回路。

請求項21

前記構成可能ルーティングネットワークが、Closネットワークを備える、請求項1〜20のいずれか一項に記載の構成可能処理回路。

請求項22

前記構成可能ルーティングネットワークが、1つ以上のクロスバースイッチを備える、請求項1〜21のいずれか一項に記載の構成可能処理回路。

請求項23

前記構成可能ルーティングネットワークが、非ブロッキングである、請求項1〜22のいずれか一項に記載の構成可能処理回路。

請求項24

前記構成可能ルーティングネットワークが、完全に構成可能である、請求項1〜23のいずれか一項に記載の構成可能処理回路。

請求項25

前記構成可能ルーティングネットワークが、部分的に構成可能である、請求項1〜23のいずれか一項に記載の構成可能処理回路。

請求項26

各実行ユニットのために専用のオンチップメモリを備える、請求項1〜25のいずれか一項に記載の構成可能処理回路。

請求項27

前記スレッドデータストア内に記憶されたデータが有効であることをチェックするチェックユニットを備える、請求項1〜26のいずれか一項に記載の構成可能処理回路。

請求項28

前記チェックユニットは、無効データを認識すると、前記実行ユニットが前記スレッドデータストアに書き込みを行うのを一旦停止するように構成され、且つ/又は、それらが前記無効データを読み出したスレッドに対して動作しているときに、メモリアクセス動作を実行する、請求項27に記載の構成可能処理回路。

請求項29

無効データを読み出したスレッドを、前記回路内のその次の経路上での同じ状態と関連付けるように構成された、請求項27又は28に記載の構成可能処理回路。

請求項30

前記スレッドデータストア内の位置が、2つの有効ビットと関連付けられている、請求項1〜29のいずれか一項に記載の構成可能処理回路。

請求項31

前記構成可能ルーティングネットワークが、前記スレッドデータストアから読み出されたデータを運ぶためのマルチプルビットワイドであるデータ経路を備える、請求項1〜30のいずれか一項に記載の構成可能処理回路。

請求項32

2つの構成可能ルーティングネットワークを備え、前記構成可能ルーティングネットワークの一方が、他方よりも広いデータ経路を備える、請求項1〜31のいずれか一項に記載の構成可能処理回路。

請求項33

フラクチャブル実行ユニットを備える、請求項1〜32のいずれか一項に記載の構成可能処理回路。

請求項34

前記構成可能ルーティングネットワークが、前記スレッドデータストアを、実行ユニットを交換可能な入力と、実行ユニットを交換不可能な入力とに接続するように構成され、前記構成可能ルーティングネットワークの最外側のステージが、前記スレッドデータストアを前記実行ユニットを交換可能な入力に接続するように構成された第1の数のスイッチと、前記スレッドデータストアを前記実行ユニットを交換不可能な入力に接続するように構成された第2の数のスイッチとを備え、前記第1の数が、接続された入力1つ当たりで、前記第2の数よりも少ない、請求項15〜33のいずれか一項に記載の構成可能処理回路。

請求項35

動的再構成が可能な、請求項1〜34のいずれか一項に記載の構成可能処理回路。

請求項36

スレッドデータストアと、複数の構成可能実行ユニットと、前記スレッドデータストアを前記実行ユニットに接続する構成可能ルーティングネットワークと、前記実行ユニット、前記ルーティングネットワーク及び前記スレッドデータストアから形成され、複数のパイプラインセクションを備えるパイプラインとを備える構成可能処理回路において、複数のスレッドを同時に取り扱う方法であって、各スレッドを、前記ルーティングネットワークの構成及び前記複数の実行ユニットのうちの1つ以上の構成を規定する構成インスタンスと関連付けることと、各クロックサイクルにおいて、各スレッドを、一つのパイプラインセクションから次のパイプラインセクションに伝播させることと、各クロックサイクルにおいて、前記複数のパイプラインセクションのそれぞれを、そのクロックサイクル中にそのパイプラインセクション内を伝播する各スレッドと関連付けられた前記構成インスタンスに応じるように構成することとを含む方法。

請求項37

実質的に、添付の図面を参照してここに説明したような構成可能処理回路。

請求項38

実質的に、添付の図面を参照してここに説明したような方法。

技術分野

0001

本発明は、集積回路のためのプロセッサデザインに関する。

背景技術

0002

集積回路は、典型的に、インターコネクト回路により互いに接続された多数の機能ユニットを備える。機能ユニット及びインターコネクト回路が構成可能な場合もある。これは、機能ユニットを、特定の挙動を採用するようにプログラムできるとともに、インターコネクト回路を、回路の異なる部分を接続するようにプログラムできることを意味する。構成可能回路の良く知られた例が、FPGA(フィールドプログラマブルゲートアレイ)であり、これは、幅広い範囲の異なる機能を実施するようにユーザがプログラムできるものである。構成可能集積回路の他の例が、特許文献1,2及び3に記載されている。

0003

多くの構成可能回路には、速度と柔軟性との間にトレードオフが存在する。柔軟性を最大化するためには、できるだけ多くの異なる組み合わせの機能ユニットを互いに接続できることが望ましい。これは、実行ユニットチップ上において離間している場合には、長いインターコネクト経路が必要となる。一般に、集積回路は、1回のクロック周期で行える最も長い動作よりも速くクロックさせることはできない。多くの場合、インターコネクトが原因の遅延は、機能ユニットが原因の遅延よりも影響が大きいため、データを長いインターコネクト経路を介して伝送するのに要する時間は、最終的に回路全体クロック速度を制限しうる制約となる。

0004

集積回路における時間の遅延に対して上限を設ける選択肢の一つとしては、1回のクロック周期に横断する全てのインターコネクト経路の長さを制限することがある。これは、データが集積回路内を移動する際にそのデータにパイプライン処理を施すことによって実現できる。一例が特許文献4に記載されており、この例では、インターコネクトネットワーク内のスイッチセルへの入力が、そのインターコネクトネットワーク内をデータが送られる際にそのデータにパイプライン処理を施すラッチを有する。この手法の問題は、必要なラッチを組み込むために、ユーザのデザインを修正する必要がある場合があることである。

先行技術

0005

米国特許第7,276,933号明細書
米国特許第8,493,090号明細書
米国特許第6,282,627号明細書
米国特許第6,940,308号明細書

発明が解決しようとする課題

0006

従って、改良された柔軟な処理回路の要求がある。

課題を解決するための手段

0007

一実施例によれば、複数のスレッドを同時に取り扱うことが可能な構成可能処理回路であって、スレッドデータストアと、複数の構成可能実行ユニットと、スレッドデータストア内の位置を実行ユニットに接続する構成可能ルーティングネットワークと、構成インスタンスを記憶し、該構成インスタンスのそれぞれがルーティングネットワークの構成及び複数の実行ユニットのうち1つ以上の構成を規定している、構成データストアと、実行ユニット、ルーティングネットワーク及びスレッドデータストアから形成されるとともに複数のパイプラインセクションを備え、それら複数のパイプラインセクションが、各クロックサイクルにおいて各スレッドが一つのパイプラインセクションから次のパイプラインセクションに伝播するように構成されている、パイプラインとを備え、(i)各スレッドを構成インスタンスと関連付け、(ii)各クロックサイクルに対して、複数のパイプラインセクションのそれぞれを、そのクロックサイクル中にそのパイプラインセクション内を伝播する各スレッドと関連付けられた構成インスタンスに従うように構成するように構成された回路が提供される。

0008

回路は、各構成インスタンスを構成識別子と関連付けるように構成されてもよい。

0009

回路は、スレッドと関連付けられた構成識別子を、そのスレッドと協調してパイプライン内を伝播させるように構成されてもよい。

0010

構成データストアは、複数のメモリを備えてもよく、回路は、構成インスタンスを複数のメモリに亘って分割して、各メモリが特定のパイプラインセクションに適用可能な構成インスタンスの部分を記憶するように構成されてもよい。

0011

各パイプラインセクションは、それに適用可能な構成インスタンスの部分を記憶するメモリにアクセスすることにより構成インスタンスにアクセスするように構成されてもよい。

0012

パイプラインの各セクションは、スレッドと関連付けられた構成識別子を使用して、構成データストア内のそのスレッドと関連付けられた構成インスタンスにアクセスするように構成されてもよい。

0013

複数のスレッドは独立していてもよい。

0014

回路は、2つ以上のスレッドを同一の構成識別子と関連付けるように構成されてもよい。

0015

回路は、スレッドが回路内の第2の後続の経路とは異なる回路内の一経路上の構成に追従できるように、そのスレッドと関連付けられた構成識別子を変更することが可能であってもよい。

0016

回路は、スレッドと関連付けられた入力に対して動作を行う際に、実行ユニットの1つにより生成された出力に基づき構成識別子を変更するように構成されてもよい。

0017

構成可能ルーティングネットワークは、複数のネットワーク入力及び複数のネットワーク出力を備えてもよく、各ネットワーク入力をネットワーク出力に接続するように構成可能であってもよい。

0018

構成可能ルーティングネットワークは、任意のネットワーク入力を任意のネットワーク出力に接続することが可能であってもよい。

0019

構成可能ルーティングネットワークは、任意のネットワーク入力をネットワーク出力のうちの任意の1つ以上に接続することが可能であってもよい。

0020

構成可能ルーティングネットワークの出力は、実行ユニットの入力に接続されていてもよい。

0021

構成可能ルーティングネットワークは、マルチステージスイッチを備えてもよい。

0022

マルチステージスイッチは、各ステージに1つ以上のスイッチを備えてもよく、各スイッチは、複数のスイッチ入力及び複数のスイッチ出力を有し、各スイッチ入力をスイッチ出力に接続するように構成可能であってもよい。

0023

マルチステージスイッチの各ステージにおけるスイッチは、同じ数のスイッチ入力及びスイッチ出力を備えてもよい。

0024

マルチステージスイッチの1つのステージに備えられたスイッチは、他のステージに備えられたスイッチとは異なる数のスイッチ入力及びスイッチ出力を備えてもよい。

0025

パイプラインセクションが、マルチステージスイッチの1つ以上のステージに備えらえたスイッチから形成されていてもよい。

0026

マルチステージスイッチの内側ステージにおけるスイッチから形成されたパイプラインセクションが、そのマルチステージスイッチにおける、マルチステージスイッチの外側ステージに備えられたスイッチから形成されたパイプラインセクションとは異なる数のステージからのスイッチを備えてもよい。

0027

構成可能ルーティングネットワークは、Closネットワークを備えてもよい。

0028

構成可能ルーティングネットワークは、1つ以上のクロスバースイッチを備えてもよい。

0029

構成可能ルーティングネットワークは、非ブロッキングであってもよい。

0030

構成可能ルーティングネットワークは、完全に構成可能であってもよい。

0031

構成可能ルーティングネットワークは、部分的に構成可能であってもよい。

0032

回路は、各実行ユニットのために専用のオンチップメモリを備えてもよい。

0033

回路は、スレッドデータストア内に記憶されたデータが有効であることをチェックするチェックユニットを備えてもよい。

0034

チェックユニットは、無効データを認識すると、実行ユニットがスレッドデータストアに書き込みを行うのを一旦停止するように構成されてもよく、且つ/又は、それらが無効データを読み出したスレッドに対して動作しているときに、メモリアクセス動作を実行してもよい。

0035

回路は、無効データを読み出したスレッドを、回路内のその次の経路上での同じ状態と関連付けるように構成されてもよい。

0036

スレッドデータストア内の位置は、2つの有効ビットと関連付けられていてもよい。

0037

構成可能ルーティングネットワークは、スレッドデータストアから読み出されたデータを運ぶためのマルチプルビットワイドであるデータ経路を備えてもよい。

0038

回路は、2つの構成可能ルーティングネットワークを備えてもよく、構成可能ルーティングネットワークの一方が、他方よりも広いデータ経路を備えてもよい。

0039

回路は、フラクチャブル実行ユニットを備えてもよい。

0040

回路は、入力を交換可能に構成された実行ユニットを備えてもよい。構成可能ルーティングネットワークは、スレッドデータストアを、実行ユニットを交換可能な入力と、実行ユニットを交換不可能な入力とに接続するように構成されてもよく、構成可能ルーティングネットワークの最外側のステージが、スレッドデータストアを実行ユニットを交換可能な入力に接続するように構成された第1の数のスイッチと、スレッドデータストアを実行ユニットを交換不可能な入力に接続するように構成された第2の数のスイッチとを備えてもよく、第1の数が、接続された入力1つ当たりで、第2の数よりも少なくてもよい。

0041

回路は、動的再構成が可能であってもよい。

0042

本発明の第2実施例によれば、スレッドデータストアと、複数の構成可能実行ユニットと、スレッドデータストアを実行ユニットに接続する構成可能ルーティングネットワークと、実行ユニット、ルーティングネットワーク及びスレッドデータストアから形成され、複数のパイプラインセクションを備えるパイプラインとを備える構成可能処理回路において、複数のスレッドを同時に取り扱う方法であって、各スレッドを、ルーティングネットワークの構成及び複数の実行ユニットのうちの1つ以上の構成を規定する構成インスタンスと関連付けることと、各クロックサイクルにおいて、各スレッドを、一つのパイプラインセクションから次のパイプラインセクションに伝播させることと、各クロックサイクルにおいて、複数のパイプラインセクションのそれぞれを、そのクロックサイクル中にそのパイプラインセクション内を伝播する各スレッドと関連付けられた構成インスタンスに応じるように構成することとを含む方法が提供される。

0043

以下、本発明を、添付の図面を参照して例を用いて説明する。

図面の簡単な説明

0044

構成可能処理回路の一例を示す。
ルーティングネットワークの一例を示す。
クロスバースイッチの一例を示す。
実行ユニットの一例を示す。
加算器として構成された実行ユニットの一例を示す。
パイプライン化ALUとして構成された実行ユニットの一例を示す。
レイテンシ実行ユニットの一例を示す。
スレッド用の構成インスタンス識別子を設定する実行ユニットの一例を示す。
フラクチャブル実行ユニットの一例を示す。
最適化ルックアップテーブルの2つの例を示す。

0045

構成可能処理回路は、好ましくは、複数のスレッドを同時に取り扱うことが可能である。回路は、スレッドデータストアと、1つ以上の構成可能ルーティングネットワークと、幾つかの構成可能実行ユニットとを備える。データストアからの値が読み出され、そしてルーティングネットワークを介して実行ユニットに送られる。実行ユニットは、これらの値に対して動作を行い、それらの出力から新しい値を送達する。実行ユニットの出力は、データストアに書き戻される。

0046

回路は、パイプラインも備える。パイプラインは、データストア、ルーティングネットワーク及び実行ユニットから形成される。これは、複数のパイプラインセクションを備え、各クロックサイクルにおいて各スレッドが一つのパイプラインセクションから次のパイプラインセクションに伝播するようになっている。回路は、好ましくは、パイプラインセクションがその時点で取り扱うスレッドに各クロックサイクルが適合するようそれらのパイプラインセクションを構成するように配置される。スレッドの構成は、そのスレッドで回路「内をクロックして」各スレッドのデータが処理回路内のそれ自体の特定の経路に向かうようになっているものとして考えることができる。

0047

回路は、複数の構成インスタンスを保持するオンチップメモリも備える。回路は、データストア内のどの位置から読み出すか、及び、データストア内のどの位置に実行ユニットが書き込むかを、構成インスタンスに基づき選択する。また回路は、ルーティングネットワークを介して得られたルートを設定し、構成インスタンスを用いて実行ユニットの挙動を制御するように構成されている。各構成インスタンスは、構成インスタンス識別子により独自に参照することができる。回路は、スレッドを特定の構成インスタンス識別子と関連付けることにより、どの構成インスタンスをそのスレッドに対して使用するかを選択するように構成してもよい。

0048

GPU(グラフィック処理ユニット)の出現により、プログラマーは、互いに対する相互作用が低い多数のスレッドを使用して計算問題解くのが習慣になっている。これらの概ね独立したスレッドは、本明細書に記載のマルチスレッド化された再構成可能プロセッサにより処理されるのに理想的に適している。GPUは、多くの場合複数の同一のプロセッサから構築され、ホモニアスコンピューティングと称される。GPUとは異なり、本明細書に記載の回路は、複数の異なる実行ユニットを可能とし、ヘテロジニアスコンピューティングの一形態である。回路の特定のインスタンスにおける実行ユニットの数及び能力は、特定のクラスの問題に適合するように選択できる。これにより、GPUと比較して、任意の所定のタスクをより効率的に実装できるようになる。

0049

回路の概説
構成可能処理回路の一例を図1に示す。この回路は、構成可能ルーティングネットワーク(この例では、2つのルーティングネットワーク111,112として実装される)を備える。回路は、幾つかの構成可能実行ユニット(115,116)も含む。回路は、パイプライン化されており、図において点線102により表されている。図示の例において、パイプラインは、図の下側に沿って数字で示すように、8つのステージから構成される。パイプラインセクション間の境界は、最大クロック速度に対応できるように、いずれかのパイプラインセクションにおいて要する最長時間を制限するよう適切に選択される。

0050

以下の説明は、パイプラインを介したスレッドの伝播を発動するのが立ち上がりクロックエッジであることを前提としている。これが例示のみのためのものであり立ち下がりクロックエッジも同様に使用してもよいことは理解すべきである。同様に、立ち上がりエッジ及び立ち下がりエッジの混合をパイプライン全体に使用してもよい。各パイプラインステージは、それ自体のクロックを有してもよい(ただし、それらのクロックは、全てのパイプラインステージにおいてクロックエッジが同時に起こるように同期される)。

0051

回路は、複数のスレッドを同時に取り扱うように構成されている。ハードウェアにおけるスレッドは一般に、他のスレッドから独立して実行される一連アクションであると考えられる。また、スレッドは、そのスレッドに対してのみ利用可能な何らかの状態を有することが多い。スレッドは通常、プロセス内に含まれる。プロセスは、複数のスレッドを含みうる。同じプロセス内に存在するスレッドは、メモリ等のリソース共有することができる。

0052

スレッドカウンタ101は、各クロックサイクルにおいて、新規のスレッドを回路に投入する。ある状況において、この新規のスレッドは、パイプラインを介した伝播を完了したばかりのスレッドの繰り返しであってもよい。スレッド番号を、各クロックサイクルにおいて、一つのパイプラインセクションから次のパイプラインセクションに伝播させてもよい。スレッド番号を伝播させる選択肢の一つは、各パイプラインセクション内に、そのパイプラインセクションに現在あるスレッドのスレッド番号を記憶するためのレジスタ108を有することである。

0053

スレッドカウンタは、それ自体が構成可能であってもよい。典型的に、スレッドカウンタは、外部プロセッサにより構成されて、例えば、シーケンス及び/又はシーケンス長を変更する。

0054

各構成インスタンスは、数千ビットを含みうる。この例において、各インスタンスは、構成インスタンスよりも小さい多数のビットから構成され便利なショートハンドとして働く識別子と関連付けられる。パイプラインにおける第1のステージは、現在のスレッドが使用する構成インスタンス識別子をレジスタストア(103)からルックアップするように構成されている。構成インスタンス識別子は、レジスタ(105)を使用して、パイプラインを介して伝播される。構成インスタンス識別子は、各パイプラインステージにおいて、そのパイプラインステージに必要な構成インスタンスの部分をルックアップするために使用される。これは、構成インスタンスを、各パイプラインステージ(104)のための別々のオンチップメモリに分割することにより実現できる。パイプラインステージは、それが特定のスレッドのために必要とする構成インスタンスを、メモリのその特定のセクションにおいてそのスレッドの構成識別子をルックアップすることにより取得する。各スレッドが、パイプラインを介して移動する際、その構成インスタンス識別子と関連付けられた構成インスタンスのみを経験する。

0055

構成インスタンスを含むオンチップメモリは、任意のスレッドが任意の構成インスタンスを使用できるようにスレッド間で共有される。一つのスレッドは、他のものと同じ構成インスタンスを使用できる。スレッドは、異なる構成インスタンスを使用することもできる。多くのインスタンスにおいて、スレッドは、回路内においてそれに先行するスレッドとは全く異なる構成インスタンスを使用してもよい。従って、いかなる時も回路内で複数の構成インスタンスがアクティブとなっている可能性もある(実際、その可能性は高い)。スレッドの実行によって、回路内における次の経路上でそれがどの構成インスタンス識別子を使用するか(ひいては、どの構成インスタンスを使用するか)を変更してもよい。

0056

スレッド番号及び幾つかの構成インスタンスビットを使用して、データストアからの値にアクセスする。この例において、これは、便宜上レジスタストア(106)により実施される。本発明の一実施例において、スレッドは、他のスレッドにより使用されているレジスタストア内の値にはアクセスできない。レジスタストアの値は、後続のクロックサイクルにおいてデータルーティングネットワーク111に入力される。データルーティングネットワークは、値を特定の実行ユニットに送ることが可能である。データルーティングネットワークは構成可能であるが、ルーティングネットワークを介したスイッチングの少なくとも一部を、ある一つのクロックサイクルから次のクロックサイクルに変更できる。ルーティングネットワークの一つのパイプライン化ステージから次のパイプライン化ステージに伝播する際に各入力が経験するスイッチングは、ネットワーク内においてそれに追従する構成インスタンス識別子から導出される構成インスタンスによって決まる。

0057

データルーティングネットワーク内のデータ経路は、好ましくは、マルチプルビットワイドである。データ経路の正確な幅は、特定の用途に応じて調整できる。いずれの所定のルーティングネットワーク内においても、データ経路の全てが同じ幅を有している必要はない。例えば、データ経路のうちの幾つかの経路は、他のものよりも広い入力に対応するようにしてもよい。これは、ある状況においては、ルーティングの柔軟性を制限する可能性がある。データ経路のうち十分に広い経路を介して入力を送る必要があり、スレッドの他の入力に利用可能なルートを制限してしまう可能性がある。入力は、データ経路の全幅を利用する必要はないが、ネットワークの出力は、データルーティングネットワーク内の最も広い経路と等しい幾つかのビットに対応できなければならない。

0058

本発明の幾つかの実施例では、単一のモノリシックなルーティングネットワークよりも、幾つかの別個のルーティングネットワークを有する方が便利なことがある。本発明の一実施例において、制御値及びデータ値は分離され、それぞれが、それ自体のレジスタストア(106及び107)及びルーティングネットワーク(111及び112)の組みを有する。一例において、ルーティングネットワーク(111)は、制御値のための幅が1ビットのみのデータ経路を備えてもよく、他のルーティングネットワーク(112)は、データ値のための幅が32ビットのデータ経路を備えてもよい。ルーティングネットワークのサイズは、入力及び出力の数によって決まり、そのように異なるルーティングネットワークは、異なるパイプライン深さを必要とする場合がある。図1のルーティングネットワークは、1つ又は2つのパイプラインステージを有してのみ示されている。実際は、ルーティングネットワークは、典型的に12前後のパイプラインステージを有することができる。

0059

入力選択ユニットは、ルーティングネットワークからの各出力を実行ユニット(115)の入力に接続する。実行ユニットは、それらが入力に対して行うその動作が構成インスタンスからのビットによって決まるように構成可能である。実行ユニットにより実行されるその動作は、スレッドデータからの1以上のビット(例えば、そのデータに含まれる制御値)によって決まることもある。典型的に、実行ユニットは、パイプラインの単一のセクションを形成するが、幾つかの実行ユニットが、2つ以上のクロックサイクル(116)を必要とするより長い動作を実行するように構成されてもよく、これらの実行ユニットが、2つ以上のパイプラインセクションを形成するようにしてもよい。同様に、実行ユニットは、スレッドが1つ実行ユニットのから他の実行ユニット(不図示)に伝播するようにパイプラインの端部において互いに連結されてもよい。

0060

各実行ユニットは、それが書き込むことのできるレジスタストア(117)に結果の値を書き込んでもよい。各レジスタストアには、1つの実行ユニットによってのみ書き込まれる。実行ユニットは、2つ以上のレジスタストアに書き込んでもよい。幾つかの実行ユニットは、共通の共有リソース(例えば、外部メモリ)に対して読み出し及び書き込むができる。共有リソース(オンチップ又は外部)に対する読み出し及び書き込みは、1回のクロックサイクルよりも長くできる可変レイテンシ動作となる傾向がある。

0061

幾つかのレジスタストア内の幾つかのレジスタの位置を、その位置に記憶されたデータが有効か否かをアサートする有効ビットと関連付けてもよい。典型的に、可変レイテンシ実行ユニットと関連付けられたレジスタストアのみが、各位置を有効又は無効としてマークするための余分なビットを有している必要がある。他のレジスタストアは、常に有効値を保持すると考えられてもよい。

0062

有効ビットは、書き込み動作の開始時に「無効」に設定され、書き込み動作が完了したときにのみ「有効」に戻るようにしてもよい。回路には、スレッドが読み出したいレジスタの位置が有効であることを、そのスレッドが実行ユニット(110)に達する前に確認する手段が組み込まれてもよい。これらの手段は、ルーティングネットワークと同じパイプラインセクション内に効率的に配置することができる。この役割は、スレッドに適切な有効ビットを、それが実行ユニットに投入される前に読み出すように構成されたチェックユニットによって実行されてもよい。チェックユニットは、無効データに対して動作する実行ユニットにスレッドが投入される場合、それらの実行ユニットを全て停止(又は、少なくとも、それらのメモリへの書き込み及びレジスタストアへの書き込みを停止)してもよい。これにより、「無効」データに対して実行された動作の結果がレジスタ又は他のメモリに書き込まれるのを阻止する。

0063

一例において、2つの有効ビットが、それらを必要とする各レジスタストアの位置に割り当てられる。あるレジスタストアの位置に記憶されたデータは、その2つの有効ビットが異なる場合は無効であり、2つのビットが同じであれば有効であるとみなしてもよい(又は、その逆)。2つの有効ビットを有することによって、2つの異なるパイプラインステージにより同時にそれらを書き込むことが可能となる。典型的に、レジスタストア内のデータを無効化したいパイプラインステージは、有効ビットの一方をフリップするように構成され、レジスタストア内のデータを有効化する他のパイプラインステージは、有効ビットの他方をフリップするように構成される。

0064

実行ユニット(118)は、特定のスレッドが回路内の他の経路で使用する構成インスタンスを、そのスレッド(119)と関連付けられた構成インスタンス識別子を変更することによって変更することもできる。新規の構成インスタンス識別子は、そのスレッドのために、回路内の次の経路において使用される。

0065

実行ユニットは時々、スレッドの前回の実行による結果に基づく動作を行う必要がある。その一例として、アキュムレート動作がある。回路は、そのような動作を行う専用の1つ以上のユニットを備えてもよい。その一例として、アキュムレートレジスタストアがある。これらのレジスタストア(例えば:114)は、ルーティングネットワーク内を移動する必要がなく、必要なルーティングネットワークの大きさを低減できる。

0066

実行ユニットは、典型的に、その内部にフィードバックを何ら有さない。フィードバックは、レジスタストア又は外部メモリに記憶されたデータを変更する、且つ/又は、スレッドの構成インスタンス識別子を変更するあるスレッドの実施によって、全回路ベースで実現される。

0067

レジスタストア
各レジスタストアは、別個の値を記憶する複数の位置を含む。回路は、レジスタストアアドレスを用いて位置を選択してもよい。本発明の一実施例において、スレッドは、各レジスタストア内の位置の別個の組みにアクセスする。これは、レジスタストアに対する読み出しアドレス及び書き込みアドレスの一部が(適切なパイプラインステージにおける)スレッド番号並びにゼロ以上の構成インスタンスビットに基づくことを確保することによって実装できる。この実施例において、スレッドは、他のスレッドと関連付けられたレジスタストア内に保持された値にアクセスすることはできない。

0068

レジスタストアは、通常、異なるパイプラインステージ内において読み出し及び書き込みが行われるため、任意の所定のクロックサイクルにおけるそのレジスタストアに対する読み出しアドレス及び書き込みアドレスが異なる場合が多い。従って、レジスタストアは、1つのクロックサイクルにおいて別個の読み出し動作及び書き込み動作を行うことが可能なオンチップメモリに実装すると有利である。

0069

ルーティングネットワーク
ルーティングネットワークは、基本的に、複数の入力を複数の出力に接続するスイッチである。入力は、単一の出力又は複数の出力に接続させることができる。ルーティングネットワークは、好ましくは、そのスイッチングの少なくとも一部が構成インスタンスからのビットによってクロックサイクル毎に設定できるように、構成可能である。

0070

ルーティングネットワークは、任意の入力又は任意の出力(更に、幾つかの実施例において、2つ以上の出力)に接続可能であってもよい。ルーティングネットワークは、入力を任意の組み合わせで出力に接続することができるように、非ブロッキング(non−blocking)としてもよい。

0071

構成可能ルーティングネットワークを実施するのに適切なスイッチの一例として、クロスバースイッチがある。「クロスバースイッチ」という用語は、完全に柔軟なスイッチを称するのに使用される場合があるが、それぞれ且つ全ての入力を1つ(そして1つのみ)の出力に接続する能力を有するスイッチを称するのにも使用される。大きなスイッチに対して、Closネットワークが適切な場合もある。Closネットワークは、マルチステージスイッチである。選択肢の一つは、Closネットワークを複数のクロスバースイッチから構築することである。Closネットワークは、典型的に、それぞれ且つ全ての入力を、制限なく1つの出力に接続できる。また、これは常に可能というわけではないが、必要な接続性に応じて、入力を複数の出力に接続することも可能である。

0072

ルーティングネットワークを実装するのに適切なスイッチの一例を、図2に示す。この図は、N×NのClosネットワークを示し、ここで、ネットワークの少なくとも2つの外側ステージが、2×2クロスバースイッチ(201)により実装されている。ネットワークの内側部分は、2つのN/2クロスバースイッチにより実装されていることが示されている(203)。これらのより大きなクロスバースイッチは、「入れ子ネスト)」になっていてもよく、例えば、それら自体をクロスバースイッチ(又は何らかの他のスイッチ)の複数のステージにより実装されたClosネットワークとしてもよい。スイッチは、レジスタ202により示されるように、パイプライン化されている。レジスタは、1つのクロックサイクルから次のクロックサイクルへのスレッドデータを保持するように構成されている。

0073

ルーティングネットワークをパイプライン化する利点は、それにより、長いデータ経路をより小さいセクションに分割することが可能となることである。これらのより小さいセクションは、より迅速に移動させることができ、それらに沿った伝搬は、速いクロックであっても単一のクロックサイクルに対応できる。選択肢の一つは、(スイッチの各ステージがパイプラインの一セクションを表すように)入れ子化されたマルチステージスイッチの全てのレベルにおいてレジスタを有することである。しかしながら実際は、これは、スイッチの内側ステージにおける距離がずっと短くなる傾向がありクロック速度を抑制しそうにない場合には不必要である。従って、単一のパイプラインセクションが、マルチステージスイッチの内側ステージを2つ以上備えて、レジスタがスイッチの各ステージに必要ないようにしてもよい。

0074

2×2クロスバースイッチの一例を、図3に示す。このスイッチは、2つの入力301を受信し2つの出力304を出力するように配置されている。スイッチは、2つのマルチプレクサ302を備える。各マルチプレクサは、2つの入力のそれぞれを受信し、1つを出力として選択する。各マルチプレクサは、その入力の特定の1つをその出力として選択するように、構成インスタンスビット303により制御される。従って、構成インスタンスは、入力301から出力304へのマッピングを制御する。2×2クロスバーは、単純な例であるが、2×2クロスバーのレイヤを積層することによって、複数の入力を取り込みそれらを複数の出力に送ることができる柔軟なルーティングネットワークを構築することが可能である。これにより、入力を、更なる処理のために回路の適切な位置に送達することができる。

0075

2×2クロスバーは、クロスバースイッチの単なる一例であり、他の大きさのクロスバーを使用することもできる(例えば、3×3、4×4又はそれ以上)。マルチステージスイッチは、異なるステージにおいて異なる大きさのクロスバーを使用してもよい。

0076

実行ユニット
実行ユニットは、これらに限定はされないが、算出演算、論理演算若しくはシフト演算、又は、メモリの読み出し若しくは書き込み動作を含む一連の動作を実行することが可能となるようにデザインできる。実行ユニットは、そのデータ入力からのビット(例えばスレッドの制御値)に加えて構成インスタンスからのビットを使用でき、それにより特定のスレッドに対してどの動作を実行するかを決定できる。幾つかの実行ユニットは、他の実行ユニットとは異なる固有の能力を有してもよい。例えば、他の実行ユニットが実行できない動作を実行することが可能であってもよい。実行ユニットの数及び能力は、特定の用途に適合するように変更することができる。

0077

実行ユニットの一例を、図4に示す。実行ユニット401は、構成インスタンスビット407に基づき動作を実行するように構成可能である。実行ユニットがデータに対してどのように動作するかを決定するのは、構成インスタンスビットである。実行ユニットは、データ入力405も備える。典型的に、これらの入力は、データルーティング回路により実行ユニットに送られたスレッドデータを受信する。これらの入力の幾つかは、実行ユニットがどのように動作するかに対して影響も及ぼす。実行ユニットは、クロック信号402及びスレッド番号403も受信する。クロック信号が、パイプラインを制御する。スレッド番号により、実行ユニットが現在処理しているスレッドが識別される。最終入力404が、レジスタの書き込みを可能とし、以下、より詳細に説明する。

0078

実行ユニットは、データを、その専用のレジスタストア(408,409)への書き込みのために出力する。出力データは、実行ユニットがその入力に対して実行した動作の結果を表す。各データ出力412には、好ましくは、2つの添付出力、すなわち、書き込みイネーブル410及び書き込みアドレス411が設けられる。書き込みイネーブル410は、レジスタの書き込みを可能とする入力404によって設定される。データは、書き込みイネーブルが適切な値(典型的に1又は0)に保持されている場合にのみ、レジスタに書き込みしてもよい。書き込み動作は、書き込みイネーブルが適切な値でない場合に停止される。これを、レジスタの位置が無効であると判明した場合に用いて、その位置が再び有効となるまで、全てのレジスタの書き込みを禁止することができる(これは、以下の「パイプライン」セクションにおいてより詳細に説明する)。書き込みアドレス411は、通常、スレッド番号及び幾つかの構成インスタンスビットによって決まる。

0079

特定の実行ユニットの幾つかの例を、図5〜10に示す。

0080

図5は、簡単な加算器として構成された実行ユニットを示す。実行ユニットは、書き込みを可能とする入力501と、スレッド番号を識別するための入力502とを備える。実行ユニットは、加算すべきデータのための入力503,504も備える。この例において、実行ユニットは、加算のみ行うことができる(507)。構成インスタンスから抽出される1つの構成インスタンスビットによって、加算器の結果をレジスタストアに書き込むかが決まる(505)。現在のスレッドの値がいずれも有効でない場合に高く駆動されるレジスタの書き込みを可能とする入力は、加算器の結果が書き込まれるのを阻止することもできる。実行ユニットの出力508は、書き込みデータ、書き込みアドレス及びレジスタストアのための書き込みイネーブルを出力する。

0081

図6は、パイプライン化ALUとして構成された実行ユニットを示す。このより複雑な例において、実行ユニットは、幾つかの異なる動作を実行できる。幾つかの構成インスタンスビット及び入力601からのビットにより、ALUが何を行うかが制御される(603)。例えば、一構成においてALUはマルチプレクサとして動作し、他の構成においてALUはキャリービットとして制御入力を使用してAddを実行し、他の構成において制御入力はALUがAdd又はSubtractのいずれを実行するかを選択できる。レジスタ602が設けられて、他の入力をパイプライン化してALUパイプラインに適合させる。ALUは、出力604並びにデータ値を生成する。一例として、この1ビットの出力は、ALUの結果がゼロの場合に高くなる。

0082

図7は、長レイテンシオペレータ701を有する実行ユニットを示す。この例において、複数のレジスタ702が設けられて、書き込みイネーブル及び書き込みアドレスの値をパイプライン化する。これらの値は、各クロックサイクルにおいてレジスタを通って伝播し、新規のスレッドが実行ユニットに投入されて各クロックサイクルにおいて長レイテンシ動作を開始するのを可能とする。レジスタの数は、好ましくは、動作のレイテンシと適合する。オペレータ701は、パイプライン化されていてもされていなくてもよい。長レイテンシの動作の一部はオペレータにより実行されないため、幾つかのオペレータはパイプライン化を必要としない。例えば、この動作は、外部メモリに対する読み出し動作や書き込み動作であり、この場合、レイテンシは、そのメモリへのシステムバスを介したアクセスと関連付けられる。

0083

図8は、スレッドが回路内の次の経路で使用する構成インスタンス識別子を変更する実行ユニットの一例を示す。この例において、選択は、8つの構成インスタンス識別子802のうちの1つを選択する3つの制御ビット801によって制御される。実行ユニットは、選択された構成インスタンス識別子を記憶するための出力803を備える。

0084

実行ユニットはフラクチャブルであってもよい。すなわち、スレッドの要件に応じて、より小さい個別の実行可能ユニットに分離可能であってもよい。一例を図9に示す。図9の実行ユニットは、2つの32ビットALUに分割可能な64ビットALU901を備える。2対の32ビットの値又は1対の64ビットの値に対して、入力902,903を使用できる。構成インスタンスビットは、ALUが、64ビットALUとして動作するか、又は、2つの32ビットALUとして動作するかを設定する。フラクチャブル実行ユニットの利点の一つは、2つ以上の個別のユニットよりも実装が廉価で済むことである。

0085

従来、幾つかの実行ユニットは、特定の順序で入力が示されている必要がある。好ましくは、実行ユニットは、可能であれば、入力の順序が問題とならないように構成される。2つの例は、図10に示すルックアップテーブルを含む。これらのルックアップテーブルは、入力が提示される順序に影響を受けないように構成され、これにより幾つかのスイッチをルーティングネットワークから取り除くことが可能となる。

0086

パイプライン
命令が完了するのにかかる時間は、あるレジスタストアの読み出しとそれに対応するレジスタストアの書き込みとの間のパイプラインステージの最大数(「p」で示す)、及び、プロセッサのクロック周波数(「f」で示す)によって決まる。そして、1命令当たりのレイテンシは、p/fとなる。しかしながら、パイプラインは、クロックサイクル毎に、p以上の異なるスレッドからの命令を処理することができる。スレッドは、連続的に循環し、クロックサイクル毎に1つずつ、パイプラインに発行される。

0087

レジスタストアから読みだされた値が有効でないとみなされる場合には常に、そのスレッドは、あらゆるレジスタストアへの書き込みやその構成インスタンス識別子の変更が阻止される。これにより、スレッドは、そのスレッドに可視な状態を変更することが不可能となり、それがパイプラインに再発行された際には同じ状態から再開する。好ましくは、回路は、各スレッドがそれ自体の(上述のような)レジスタストアにのみアクセスするように構成される。そして、全ての他のスレッドは、他のスレッドのいずれかが無効値に当たるか否かに関係なく、それらの読み出された値が有効であることを条件に影響を受けていないパイプライン内を進行する。無効なレジスタの値は可変レイテンシを有する実行ユニットから生じ、従って、無効レジスタの値は最終的に有効となり、前回は状態を更新することを阻止されていたスレッドが、それを行うことが可能となる。このようにして、個々のスレッドは、パイプライン自体が値を伝播し続けていても、「ストールしている(stalled)」とみなされうる。

0088

ユーザは、パイプラインレジスタ可視性を持たない。これにより、プログラムは、異なるパイプラインを回路が有する場合であっても、変形させることなく本明細書に記載の原理に応じて、設計された異なる回路上で動作することが可能となる。唯一の違いは、各命令を完了するのにかかる時間の長さである。

0089

構成インスタンス
オンチップメモリには、1組の構成インスタンスがある。本発明の一実施例において、その構成インスタンスメモリには外部プロセッサによってアクセスしうる。個々の構成インスタンスは、構成インスタンスメモリに書き込むことによってロードできる。構成メモリが同じクロックサイクルで読み出し及び書き込みできる場合には、スレッドは、構成インスタンスがロードされている間も、パイプライン内を進行し続けることができる。パイプライン内のいずれかのスレッドにより使用されている構成インスタンスは、ロードされないようにすべきである。これは、使用中の全ての構成インスタンス識別子を監視するオペレーティングシステム又は何らかの追加ハードウェアによって実現できる。

0090

1つの構成インスタンスを、レジスタストアを変更したりメモリへのアクセスを行ったりできないようにしてもよい。この「ヌル」構成インスタンスは、スレッドが非アクティブのとき(例えば起動時)に、パイプライン内のスロットに対して使用しうる。

0091

本発明の一実施例において、ルーティングの特定の実行ユニット又は一部のための回路を動的に変更してもよい。オペレーティングシステムは、どのスレッドも、動的に変更されている最中の回路を使用しないことを確実にするように構成する必要がある。動的に回路を変更可能な技術の一例として、FPGAがある。典型的に、この種の再プログラミングは、オフチップからプログラムファイルダウンロードして回路の全て又は一部を再構成することを伴う。このプロセスは、典型的に、ミリセカンドオーダーで行われる(それに対して、各スレッドに対する回路の構成は、ナノセカンドオーダーで行われる)。回路が、暗号化や何らかの他の集中的な処理動作等の幾つかの専門処理を一度に実行する必要がある場合には、遅延は正当化される。本明細書に記載の回路は、その内部に実行ユニットが含まれるため、この種の動的再構成に特に適している。それらは、周囲の回路の構造を変更する必要なく、変更することができる。

0092

上述の特定の例は、本発明の範囲内において様々な形で変更することができる。例えば、上述の回路は、スレッドが、それが回路内の次の経路で使用する構成インスタンス識別子を変更することにより、又は、制御データを書き込むことにより、その構成インスタンスを変更することを可能としている。将来実装されうる他の可能性としては、スレッドに、他のスレッドに適用される構成インスタンス識別子を変更させることや、スレッドに、構成インスタンスメモリに直接書き込みさせることが挙げられる。

実施例

0093

出願人は、本明細書に記載の個々の特徴及びそのような特徴の2つ以上のあらゆる組み合わせを分離して開示しているが、その開示は、そのような特徴及び組み合わせが本明細書に開示の問題を解決するかどうかにかかわらず、且つ、特許請求の範囲に対して何ら限定することなく、そのような特徴及び組み合わせを当業者の一般的常識に鑑み本明細書全体に基づき実行可能となる程度になされている。出願人は、本発明の態様が、任意のそのような個々の特徴又は特徴の組み合わせから構成されうることを指摘する。前述の説明に鑑み、当業者にとって、本発明の範囲内において様々な変更を行ってもよいことは明らかであろう。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

該当するデータがありません

関連する公募課題

該当するデータがありません

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

該当するデータがありません

この 技術と関連する公募課題

該当するデータがありません

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ