(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024167169
(43)【公開日】2024-12-03
(54)【発明の名称】負荷ジャンプの緩和を有する回路
(51)【国際特許分類】
G06F 1/04 20060101AFI20241126BHJP
H03K 5/15 20060101ALI20241126BHJP
【FI】
G06F1/04
H03K5/15
【審査請求】未請求
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024079184
(22)【出願日】2024-05-15
(31)【優先権主張番号】18/318,038
(32)【優先日】2023-05-16
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】599158797
【氏名又は名称】インフィニオン テクノロジーズ アクチエンゲゼルシャフト
【氏名又は名称原語表記】Infineon Technologies AG
【住所又は居所原語表記】Am Campeon 1-15, 85579 Neubiberg, Germany
(74)【代理人】
【識別番号】100114890
【弁理士】
【氏名又は名称】アインゼル・フェリックス=ラインハルト
(74)【代理人】
【識別番号】100098501
【弁理士】
【氏名又は名称】森田 拓
(74)【代理人】
【識別番号】100116403
【弁理士】
【氏名又は名称】前川 純一
(74)【代理人】
【識別番号】100134315
【弁理士】
【氏名又は名称】永島 秀郎
(74)【代理人】
【識別番号】100162880
【弁理士】
【氏名又は名称】上島 類
(72)【発明者】
【氏名】ダイソン ウィルケス
(72)【発明者】
【氏名】ミクダッド ハジ
(72)【発明者】
【氏名】マーク セルビー
(72)【発明者】
【氏名】ニール スチュアート ヘイスティ
(57)【要約】 (修正有)
【課題】グローバルクロックがイネーブルされ、並列ストリーミングFFT(高速フーリエ変換)アクセラレータにおいて処理を開始するとき、負荷ジャンプまたは電流消費の大きい増加がありうる。
【解決手段】負荷ジャンプの緩和を有する回路は、パイプライン構成に配置され、段クロック信号に基づいて動作可能な回路処理段と、回路処理段に接続され、段クロック信号を制御するクロック制御回路と、を備える。クロック制御回路の各々は、データ入力信号を受信することに応答して、段クロック信号をイネーブルし、任意の有効データを受信してから経過した所定の回路処理段処理遅延に基づいて、段クロック信号をディセーブルし、段クロック信号がイネーブルされてから所定の回路処理段処理遅延に基づいて、クロック制御回路の次のクロック制御回路をイネーブルし、回路処理段が、次の回路処理段に対する処理された有効データの送信を開始していることを示す。
【選択図】
図1
【特許請求の範囲】
【請求項1】
負荷ジャンプの緩和を有する回路であって、前記回路は、
パイプライン構成に配置され、それぞれの段クロック信号に基づいて動作可能な回路処理段と、
前記回路処理段にそれぞれ接続され、前記それぞれの段クロック信号を制御するクロック制御回路と、
を備え、
前記クロック制御回路の各々は、
それぞれの回路処理段が、処理のための有効データの受信を開始することを表現するデータ入力信号を受信することに応答して、前記それぞれの段クロック信号をイネーブルし、
前記それぞれの回路処理段が任意の有効データを受信してから経過した所定のそれぞれの回路処理段処理遅延に基づいて、前記それぞれの段クロック信号をディセーブルし、
前記それぞれの段クロック信号がイネーブルされてから経過した前記所定のそれぞれの回路処理段処理遅延に基づいて、前記回路処理段の次の回路処理段に接続されている、前記クロック制御回路の次のクロック制御回路をイネーブルし、前記それぞれの回路処理段が、前記次の回路処理段に対する前記処理された有効データの送信を開始していることを示す、
ように動作可能である、
回路。
【請求項2】
前記回路処理段のうちの少なくとも2つは、異なる処理遅延を有する、
請求項1に記載の回路。
【請求項3】
前記クロック制御回路の各々は、前記それぞれの段クロック信号をイネーブルするために、前記それぞれの回路処理段が、処理のための有効データの受信を開始することを表現する前記データ入力信号を受信することに応答して、回路処理段ゲートクロックイネーブル信号を出力するように動作可能である、
請求項1に記載の回路。
【請求項4】
前記クロック制御回路の各々は、前記それぞれの回路処理段の処理時間に対応する第1の所定の数のクロックサイクルをカウントするように動作可能な処理時間カウンタ回路を備える、
請求項3に記載の回路。
【請求項5】
前記処理時間カウンタ回路は、
前記それぞれの回路処理段が、処理のための有効データを受信することを表現する前記データ入力信号を、それぞれのクロック制御回路が受信するクロックサイクルごとに、前記第1の所定の数のクロックサイクルのカウントをリロードし、
前記それぞれの段クロック信号をディセーブルするために、前記処理時間カウンタ回路が、最後のリロードから前記第1の所定の数のクロックサイクルをカウントしたことに応答して、前記回路処理段ゲートクロックイネーブル信号を出力する、
ようにさらに動作可能である、
請求項4に記載の回路。
【請求項6】
前記回路は、クロックゲート回路をさらに備え、
前記クロックゲート回路は、前記クロック制御回路と前記回路処理段との間にそれぞれ接続され、前記回路処理段ゲートクロックイネーブル信号に基づいて、それぞれの回路処理段クロック信号を開始/停止させるように動作可能である、
請求項3に記載の回路。
【請求項7】
前記クロック制御回路の各々は、前記それぞれの回路処理段の処理遅延に対応する第2の所定の数のクロックサイクルをカウントするように動作可能な次の段カウンタ回路を備える、
請求項1に記載の回路。
【請求項8】
それぞれのクロック制御回路が、前記それぞれの段クロック信号をイネーブルさせる前記データ入力信号が受信される間のクロックサイクルの後、前記第2の所定の数のクロックサイクルをカウントすることに応答して、
前記次の段カウンタ回路は、前記クロック制御回路の次に対して、次のデータ入力信号を出力するようにさらに動作可能である、
請求項7に記載の回路。
【請求項9】
前記回路は、前記次の段カウンタ回路の出力と入力との間に接続されているフィードバック回路をさらに備え、
前記それぞれの段クロック信号がイネーブルされ、前記次のデータ入力信号が出力されていることに応答して、前記フィードバック回路は、前記次の段カウンタ回路の前記第2の所定の数のクロックサイクルをリロードするように動作可能である、
請求項7に記載の回路。
【請求項10】
前記回路は、高速フーリエ変換(FFT)処理回路である、
請求項1に記載の回路。
【請求項11】
前記クロック制御回路の各々は、遅延回路を備え、
前記遅延回路は、受信した前記データ入力信号が、前記クロック制御回路の次に対して、データ出力信号として送信されるのを遅延させるように動作可能である、
請求項2に記載の回路。
【請求項12】
前記遅延回路は、
1つまたは複数のフリップフロップ回路のチェーンと、
それぞれのフリップフロップ回路の出力に接続されている入力を有し、前記フリップフロップ回路の出力信号に基づいて、前記それぞれの段クロック信号をイネーブルするように動作するORゲートと、
を備える、
請求項11に記載の回路。
【請求項13】
前記クロック制御回路の各々は、回路要素を備え、
前記回路要素は、前記遅延回路と前記それぞれの回路処理段との間に接続され、前記それぞれの段クロック信号がイネーブルされる間、前記それぞれの回路処理段に対する電力をイネーブルするように動作可能である、
請求項11に記載の回路。
【請求項14】
前記クロック制御回路の各々は、第2のORゲートを備え、
前記回路要素が前記データ入力信号、クロックイネーブル信号、または、1つもしくは複数のフリップフロップ回路の前記チェーンの最後のフリップフロップ回路からのデータの最後を受信するとき、前記第2のORゲートは、前記それぞれの回路処理段に対する電力をイネーブルするように動作可能である、
請求項12に記載の回路。
【請求項15】
前記それぞれの回路処理段は、メモリおよび論理回路を備え、
前記クロック制御回路の各々は、前記メモリおよび前記論理回路の少なくとも一部の一方に対する前記それぞれの段クロック信号をイネーブルおよびディセーブルするように動作可能である、
請求項1に記載の回路。
【請求項16】
前記回路は、前記クロック制御回路と、前記それぞれの回路処理段の前記メモリおよび前記論理回路の一方と、の間に接続されているクロックゲート回路をさらに備える、
請求項15に記載の回路。
【請求項17】
前記それぞれの回路処理段の各々は、メモリおよび論理回路を備え、前記論理回路は、制御論理回路およびデータパス論理回路を備え、
それぞれのクロック制御回路は、前記データパス論理回路に対する前記それぞれの段クロック信号をイネーブルおよびディセーブルし、前記メモリおよび前記制御論理回路のカウントを継続するように動作可能である、
請求項1に記載の回路。
【請求項18】
回路の負荷ジャンプを緩和するための方法であって、
前記回路は、パイプライン構成に配置され、それぞれの段クロック信号に基づいて動作可能な回路処理段と、前記回路処理段にそれぞれ接続され、前記それぞれの段クロック信号を制御するクロック制御回路と、を有し、前記方法は、
それぞれの回路処理段が、処理のための有効データの受信を開始することを表現するデータ入力信号を、それぞれのクロック制御回路が受信することに応答して、前記それぞれの段クロック信号をイネーブルするステップと、
前記それぞれの回路処理段が任意の有効データを受信してから経過した所定のそれぞれの回路処理段処理遅延に基づいて、前記それぞれの段クロック信号をディセーブルするステップと、
前記それぞれの段クロック信号がイネーブルされてから経過した前記所定のそれぞれの回路処理段処理遅延に基づいて、前記回路処理段の次の回路処理段に接続されている、前記クロック制御回路の次のクロック制御回路をイネーブルするステップであって、前記それぞれの回路処理段が、前記次の回路処理段に対する前記処理された有効データの送信を開始していることを示すステップと、
を含む方法。
【請求項19】
前記回路処理段のうちの少なくとも2つは、異なる処理遅延を有する、
請求項18に記載の方法。
【請求項20】
前記方法は、前記それぞれの段クロック信号をイネーブルするために、前記それぞれの回路処理段が、処理のための有効データの受信を開始することを表現する前記データ入力信号を受信することに応答して、前記クロック制御回路の各々によって、回路処理段ゲートクロックイネーブル信号を出力するステップをさらに含む、
請求項18に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、負荷ジャンプの緩和を有する回路に関するものである。
【背景技術】
【0002】
高速フーリエ変換(FFT)は、関数のサンプルのシーケンスの離散フーリエ変換(DFT)を計算するのに用いられるアルゴリズムである。FFTアルゴリズムは、複数の段に分割され、これは、時間間引き(DIT)または周波数間引き(DIF)と称される。加えて、各段のための処理遅延は、DIFにはより小さくなり、DITにはより大きくなる。並列ストリーミングFFTでは、ハードウェアは、各段のために用いられるが、非並列ノンストリーミングFFTでは、単一のハードウェアユニットは、すべての段のために用いられ、メモリは共有される。
【0003】
グローバルクロックがイネーブルされ、並列ストリーミングFFTアクセラレータにおいて処理を開始するとき、負荷ジャンプまたは電流消費の大きい増加がありうる。緩和なしでは、負荷ジャンプによって、電圧降下が生じ、故障につながりうる。しかしながら、クロックをオフにすると、結果として過電圧および回路損傷になりうる。したがって、電力供給ネットワークを補強し、電圧変動を防止し、FFTアクセラレータの適切な機能を確実にすることは、避けられない。
【図面の簡単な説明】
【0004】
【
図1】開示の態様に従う、負荷ジャンプの緩和を有する回路の概略図を示す。
【
図2A】開示の態様に従う、クロックサイクルカウンタを有する段クロック制御回路の概略図である。
【
図2B】
図2Aのクロックサイクルカウンタを有する段クロック制御回路のタイミング図である。
【
図3】開示の態様に従う、遅延回路を有する段クロック制御回路の概略図である。
【
図4A】
図4Aは、開示の態様に従う、パワーダウンを有する段クロック制御回路の概略図である。
【
図4B】
図4Bは、開示の態様に従う、
図4Aのパワーダウンを有する段クロック制御回路のタイミング図である。
【
図5】開示の態様に従う、部分的なシャットダウンを有する回路処理段の概略図である。
【
図6】開示の態様に従う、ドリームスリープモードを有する回路処理段の概略図である。
【発明を実施するための形態】
【0005】
並列ストリーミング高速フーリエ変換(FFT)アクセラレータのような回路における負荷ジャンプは、回路の各回路処理段に対するクロックを順序付けることによって緩和することができる。回路処理段は、パイプラインを形成し、FFTアクセラレータが開始するとき、有益な処理の履行および実行を開始する。回路処理段が有益な処理を実行していない場合、クロックを送る(clocked)必要はない。開示されたアプローチは、各回路処理段に対するクロックイネーブルの順序付けを制御し、単一のクロックサイクルですべて直ちに行うよりもむしろ、電力消費を段階的に増加させ、このことにより、負荷ジャンプを減少させる。同様に、逆のプロセスによって電力を段階的に減少することができる。
【0006】
図1は、開示の態様に従う、負荷ジャンプの緩和を有する回路の概略図を示す。この回路は、例えば、信号処理ユニット(SPU)内に備えられてもよい。
【0007】
回路は、回路処理段10、クロックゲート回路20およびクロック制御回路100を備える。回路要素の多数は、主クロック信号(Clock_in)と同期する。
【0008】
回路処理段10(10.1、10.2...)は、パイプライン構成に配置され、それらのそれぞれの段クロック信号clock#(clock1、clock2...)に基づいて動作する。パイプライン回路段10は、例えば、FFTアクセラレータの段でもよいが、この応用に制限されるものではなく、特にストリーミングデータ上で動作する他の処理エンジンもまた、本願明細書において開示される負荷ジャンプの緩和の技術から、利益を得ることができる。回路処理段10の数は、FFTのサイズのような、実行されている特定の動作に依存する。
【0009】
回路処理段10の各々は、同じ処理時間(遅延)を有してもよいし、または、代替的には、電力ランプが複数の段にわたり指数的に増加するFFTアクセラレータの場合のように、異なった処理時間を有してもよい。等価な処理時間を有する回路処理段10を有する処理回路は、結果として線形の電力ランプになる。
【0010】
各回路処理段10は、次の回路処理段10のための処理すべき有効データを有するとき、次の回路処理段10にパイプラインで信号を送る。データ入力信号(Valid_in)は、現在の回路処理段10での有効データの受信を示し、次の回路処理段10のクロック(および/または電力)をイネーブルするために利用される。
【0011】
クロックゲート回路20は、クロック制御回路100と回路処理段10との間に接続され、回路処理段ゲートクロックイネーブル信号(clock_en#)に基づいて、それぞれの段クロック信号(clock#)を開始/停止させるように動作可能である。この例ではANDゲートに結合されたネガティブエッジのフリップフロップを有するこれらのクロックゲート回路20は、段クロック信号(Clock#)が、アクティブな立ち上がりクロックエッジの間でのみイネーブルすることを確実にする。
【0012】
各段クロック制御回路100(100.1、100.2...)は、データ入力信号(Valid_in)、リセット信号および主クロック信号(Clock_in)を受信する。段クロック制御回路100は、互いに実質的に同一であるが、開示が必ずしもこの点に制限されるというわけではない。
【0013】
それぞれの回路処理段10が処理のための有効データ(Data)の受信を開始したことを示すデータ入力信号(Valid_in)を受信すると、各段クロック制御回路100は、それぞれの段クロック信号(Clock)をイネーブルすることができる。段クロック制御回路100は、それぞれのクロックゲート回路20を介してそれぞれの回路処理段10に、クロックイネーブル信号(Clock_en)を出力する。
【0014】
加えて、データ入力信号(Valid_in)によって示されるように、それぞれの回路段10が有効データ(Data)を最後に受信してから第1の所定の回路段処理遅延(N)が経過するならば、各段クロック制御回路100は、それぞれの段クロック信号(Clock)をディセーブルするように動作可能である。
【0015】
加えて、段クロック制御回路100は、データ出力信号(Valid_out)を出力し、このデータ出力信号(Valid_out)は、次の段クロック制御回路100のためのデータ入力信号(Valid_in)として用いられる。より詳しくは、それぞれの段クロック信号(Clock)をイネーブルしてから第2の所定のそれぞれの回路段処理遅延(M)が経過した後、各段クロック制御回路100は、回路段10の次に結合される、段クロック制御回路100の次をイネーブルすることができる。この遅延Mは、それぞれの回路段10が次の回路処理段10に処理された有効データの送信を開始したことを示す。オプションで、Mは、Nに等しく設定可能である。
【0016】
図2Aおよび
図2Bは、開示の態様に従う、クロックサイクルカウンタを有する段クロック制御回路200および対応するタイミング
図200Bを示す。段クロック制御回路カウンタ200は、
図1のクロック制御回路100のいずれかの一例である。
【0017】
段クロック制御回路200は、処理時間カウンタ回路210、次の段カウンタ回路220、フィードバック回路230、ANDゲート240およびインバータ250を備える。
【0018】
処理時間カウンタ回路210は、それぞれの回路処理段10がデータを処理するとき、アクティブであるそれぞれの段クロック信号(clock#)をイネーブルおよびディセーブルする。詳しくは、処理時間カウンタ回路210は、回路処理段10がNサイクルの受信データを処理するための時間をカウントする。一旦、回路処理段10がNクロックサイクル分のデータの処理を完了すると、処理時間カウンタ回路210から出力されるクロックイネーブル信号(Clock_en)は、有効になり、すなわち、この例ではハイになる。この場合Nクロックサイクルである受信データの継続中の処理が完了するまで、回路処理段10は、依然として処理を継続する。最後のデータの受信後に、回路処理段10がデータを完了するには処理時間がかかる。この点で、処理時間カウンタ回路210は、クロックイネーブル信号(Clock_en)を無効にすることができ、回路処理段10が処理を完了してから、段クロック信号(clock#)をディアクティベートさせる。
【0019】
さらに具体的には、処理時間カウンタ回路210は、データ入力信号(Valid_in)を受信すると、それぞれの段クロック信号(clock#)をイネーブルする回路段ゲートクロックイネーブル信号(clock_en)を生成する。データ入力信号(Valid_in)は、それぞれの回路処理段10が処理のための有効データを受信したことを示す。それぞれの回路処理段10が有効データを最後に受信してから、Nクロックサイクルの第1の所定のそれぞれの回路処理段処理遅延に基づいて、処理時間カウンタ回路210は、それぞれの段クロック信号(clock#)をディセーブルする。処理時間カウンタ回路210は、受信データのセットの最後が処理され、その出力に現れるまで、現在の回路処理段10がアクティベートされたままであることを確実にする。
【0020】
データの受信を示すデータ入力信号(Valid_in)のパルスの発生は、散発的に発生してもよい。回路処理段10が定常速度でデータを受信していない場合、データ入力信号(Valid_in)は、ローであり、有効データは、この段階の間カウントされないが、段クロック信号は、イネーブルされたままである。処理時間カウンタ回路210がゼロに到達する(これは、回路処理段10がデータの処理を完了したことを示す)まで、クロックイネーブル信号(Clock_en)は、ハイのままである。
【0021】
処理時間カウンタ回路210は、第1のカウンタ212および第1の比較器214を備え、第1のカウンタ212は、所定の一定の値Nがロードされている。第1のカウンタ212のカウント(Count_1)は、リセット動作の間、ゼロにリセットされる。処理時間カウンタ回路210は、第1の所定の数のクロックサイクルNをカウントし、クロックサイクルNは、それぞれの回路処理段10の処理時間に対応する。それぞれの回路処理段10が処理のための有効データを有することを示す、データ入力信号(Valid_in)がそれぞれの段クロック制御回路200によって受信されるクロックサイクルごとに、処理時間カウンタ回路210は、第1の所定の数のクロックサイクルのカウントNをリロードする。最後のリロードから第1の所定の数のクロックサイクルNがカウントされたということを、第1の比較器214が決定すると、処理時間カウンタ回路210は、ANDゲート240およびインバータ250を介してそれぞれの段クロック信号(Clock#)をディセーブルする。
【0022】
ANDゲート240は、反転したデータ入力信号(Valid_in)および第1の比較器214の出力を入力として受信し、ディセーブル信号を出力として生成する。インバータ250は、ディセーブル信号を入力として受け取り、ディセーブル信号の反転バージョンをクロックイネーブル信号(Clock_en)として出力する。
【0023】
次の段カウンタ回路220は、次の段クロック制御回路200に接続されている次の回路処理段10(例えば、10.2)の段クロック信号をイネーブルする際、遅延を導入する。詳しくは、次の段カウンタ回路220は、データ出力信号(Valid_out)の出力を遅延させ、現在の回路処理段(例えば、10.1)がそのデータの処理を完了し、次の回路処理段(例えば、10.2)が処理すべき、処理したデータを出力するまで、次の回路処理段(例えば、10.2)がイネーブルされないことを示す。次の段カウンタ回路220は、それぞれの段クロック信号(例えば、Clock1)をイネーブルしてから、第2の所定のそれぞれの回路処理段処理遅延(Mクロックサイクル)の後、次の段クロック制御回路200(例えば、200.2)に、データ出力信号(Valid_out)を出力し、それぞれの回路処理段(例えば、10.1)が、次の回路処理段(例えば、10.2)に、処理した有効データの送信を開始したことを示す。現在の段クロック制御回路(例えば、200.1)のデータ出力信号(Valid_out)は、次の段クロック制御回路(例えば、200.2)のためのデータ入力信号(Valid_in)として機能する。
【0024】
次の段カウンタ回路220は、第2のカウンタ222および第2の比較器224を備える。次の段カウンタ回路220は、それぞれの回路処理段10の処理遅延に対応する、第2の所定の数のクロックサイクルMをカウントする。第2のカウンタ222は、第2の比較器224に第2のカウント値を出力し、次に、第2の比較器224は、第2のカウント値をゼロと比較する。イネーブルされるそれぞれの段クロック信号をトリガするデータ入力信号(Valid_in)が受信されるクロックサイクルに続いて、第2の所定の数のクロックサイクルMをカウントした後に、次の段カウンタ回路220は、次のデータ入力信号(Valid_out/in)を、段クロック制御回路200の次に出力する。この例では、データ出力信号(Valid_out)がローになると、第2の所定の数のクロックサイクルは、Mに、この場合7にリセットされる。
【0025】
この例では、第1のカウンタ212および第2のカウンタ222は、それらの負荷信号がアクティベートされると、それらのData_in入力上の値(それぞれ、一定の値NおよびMによって表現される)がロードされる同一のダウンカウンタ回路である。この例では、第1のカウンタ212および第2のカウンタ222の各々は、そのイネーブル入力がアクティベートされると、立ち上がりクロックエッジにおいて1つデクリメントするが、これは単なる設計上の選択なだけである。
【0026】
負荷ジャンプの緩和を有する回路がFFTエンジンである場合、第2の所定の数のクロックサイクルMは、第1の所定の数のクロックサイクルNに等しくない。これは、回路処理段がその処理を完了する前に、FFTエンジン段がデータのすべてを必要とするという事実に起因する。
【0027】
それぞれの回路処理段10は、フィードバック回路230によってシャットダウン可能である。次の段カウンタ回路220をリセットすることによって、次の段カウンタ回路220がゼロまでカウントダウンするとき、データ出力信号(Valid_out)をローにする。フィードバック回路230は、次の段カウンタ回路220の出力と入力との間に接続され、ANDゲート232およびORゲート234を備える。ANDゲート232の第1の入力は、インバータ250の上流で受け取られるそれぞれの段クロックイネーブル信号(Clock_en)の反転バージョンであり、第2の入力は、データ出力信号(Valid_out)である。段クロック信号(clock#)がディセーブルされ、次の段カウンタ回路220が、ゼロまでカウントダウンして、それぞれの回路処理段10の経過した処理遅延を表現するとき、フィードバック回路230は、ORゲート234を介して次の段カウンタ回路220の第2の所定の数のクロックサイクルMをリロードする。
【0028】
図3は、開示の態様に従う、遅延回路を有する段クロック制御回路300の概略図を示す。
【0029】
遅延回路を有する段クロック制御回路300は、
図1の段クロック制御回路100のいずれかの一例であり、データ出力信号(Valid_out/in)として次の段クロック制御回路300に、受信したデータ入力信号(Valid_in)を送信する前に、受信したデータ入力信号(Valid_in)の遅延を導入する。
【0030】
遅延回路を有する段クロック制御回路300は、1つまたは複数のフリップフロップ回路のチェーン310と、ORゲート320と、を備える。フリップフロップ回路のチェーン310の長さは、対応する回路処理段10の処理遅延に対応する。図の破線は、フリップフロップ回路のチェーン310の長さがそれぞれの回路処理段10の処理遅延に基づいて変化してもよいことを示す。代替的には、フリップフロップ回路のチェーン310は、例えば、シフトレジスタで置換されてもよい。
【0031】
ORゲート320には、フリップフロップ回路のチェーン310の出力が供給される。遅延回路を有する段クロック制御回路300は、それぞれのフリップフロップ回路のチェーン310の出力信号に基づいて、それぞれの段クロック信号(Clock)をイネーブルする。フリップフロップ回路310の各々は、ORゲート320のそれぞれの入力に接続されている。
【0032】
データ入力信号(Valid_in)は、フリップフロップ回路のチェーン310を通して送信される。ORゲート320は、その入力の少なくとも1つが論理値1であるとき、クロックイネーブル信号(Clock_en)を出力する。フリップフロップ回路のチェーン310は、データ入力信号(Valid_in)の遅延したバージョンをデータ出力信号(Valid_out)として出力する。フリップフロップ回路のチェーン310をリセットすると、データ出力信号(Valid_out)およびクロックイネーブル(Clock_en)の両方は、ゼロになる。
【0033】
回路処理段が、その最後の処理ステップを完了し、最終的なデータ入力を受信すると、その段のためのクロックは停止する。グリッチのないクロックゲーティングから生ずる潜在的遅延を説明するために、クロックイネーブル信号のサイクルタイミングは、前進することができる。これには、通常1クロックサイクルがかかり、アクティブエッジに影響を及ぼさずにクロックをイネーブルすることができる。T遅延は、「クロックゲーティングレイテンシ」として知られている。
【0034】
回路は、データ入力信号(Valid_in)を送るデータ(Data)を処理する。クロックゲーティングレイテンシを説明するために、有効データの1つのクロックサイクルは、先取りされる(preempted)。さらに、データ内の余分のビットは、有効データを示し、メモリが遅延のために利用される場合、これらのビットをクリアすることは、処理時間の観点で高コストとなりうる。回路がシャットダウンするとき、このクリアは、メモリ内で実行可能であり、同時に、電流消費が減少(ランプダウン)するのを防止する。代替的なアプローチは、メモリビットを1ビットの長さの幅の適切なシフトレジスタで置換することである。シフトレジスタは、「1つのホット」値を有するように構成可能であり、シフトレジスタがそれ自体をクリアすることを可能にする。
【0035】
図4Aおよび
図4Bは、開示の態様に従う、パワーダウンを有するクロック制御回路400Aおよび対応するタイミング
図400Bを示す。
【0036】
十分に大きい回路処理段を有するより大きな処理エンジンを取り扱うとき、別々の電力ドメインを用いて、電力供給を順番にオフにすることができる。このアプローチは、リーク電流の突然の変化から生じる負荷ジャンプを減少させるのを助ける。
【0037】
パワーダウンを有するクロック制御回路400は、
図3の遅延回路300と、それぞれの回路処理段10に対する電力供給のオン/オフを切り替えることができるORゲート410と、を備える。この回路400は、クロックイネーブル信号(Clock_en)を提供する第1のORゲート320を有する回路300と同様に動作し、クロックイネーブル信号(Clock_en)は、ORゲート410への入力の1つである。パワー制御ORゲート410の出力は、設計により決まる方法で、それぞれのクロック制御回路10に接続されている。
【0038】
パワーORゲート410は、遅延回路300とそれぞれの回路処理段10との間に接続されている。それぞれの段クロック信号(Clock#)がイネーブルされると、パワーORゲート410によって、電力は、それぞれの回路処理段10に流れることができる。パワーORゲート410は、データ入力信号(Valid_in)、クロックイネーブル信号(Clock_en)またはフリップフロップ回路のチェーン310の最後からの最終的なデータを受信すると、それぞれの回路処理段10に対する電力供給を可能にする。
【0039】
図4Bのタイミング
図400Bにおいて、主クロック信号(Clock_in)とパワーイネーブル信号(Power_en)とクロックイネーブル信号(Clock_en)との間の相互関係が示される。段クロック信号(Clock#)がイネーブルされる持続期間の間、電力は、回路処理段10に供給され、完全に電源を入れた回路処理段10にクロックイネーブル信号(Clock_en)が到達するのに十分な時間でオンにされる。例えば、電力は、クロックイネーブル信号(Clock_en)の前の1クロックサイクルの間にオンにされることができ、クロックイネーブル信号(Clock_en)がディセーブルされた後の1クロックサイクルの間にオンのままである。
【0040】
より詳しくは、パワーダウンを有するクロック制御回路400がデータ入力信号(Valid_in)を受信すると、パワーイネーブル信号(Power_en)は、次のクロックサイクルの立ち上がりエッジでオンになる。電力は、それぞれの回路処理段10がデータを受信および処理する間の遅延期間の間、オンのままであり、次のクロックサイクルの立ち下がりエッジの後、クロックイネーブル信号(Clock_en)をディセーブルした後、電力はオフになる。
【0041】
図5は、開示の態様に従う、部分的なシャットダウンを有する回路処理段500の概略図を示す。
【0042】
回路処理段500は、メモリ510と、レジスタを有する論理回路520と、を備え、
図1の回路処理段10の一例である。
【0043】
回路処理段全体500に対するクロック信号(Clock#)を完全にディセーブルする代わりに、特定部分、例えば、メモリ510だけ、論理回路520だけ、または、論理回路520の一部だけは、それらのクロック信号(Clock)をディセーブルしてもよい。電力を完全に切断すると、高負荷ジャンプが生じ、悪影響を有することがありうるが、この部分的なシャットダウンは、電力を完全に切断することなく、回路処理段10の電力消費を減少させるのを助ける。
【0044】
ストリーミングデータソースが非連続であり、有効データが入力されない間隔が存在する状況では、パイプラインがデータをドレイン(drain)するとき、回路処理段10は、順番にオフにすることができる。入力が再び利用できるようになると、回路処理段10は、順番に再びオンにすることができる。回路がなんらかの理由で、例えば、共有システムメモリの競合のために、データを受け入れることができないとき、このメカニズムを用いて、処理を「遅れさせる」ことができる。
【0045】
この例では、クロック制御回路(例えば、
図2Aの200または
図3の300)は、メモリ510に対するそれぞれの段クロック信号(Clock#)をイネーブルおよびディセーブルし、クロックゲート回路20は、クロック制御回路(例えば、200または300)とメモリ510との間に接続されている。代替的には、クロック制御回路(例えば、200または300)は、論理回路520の少なくとも一部に対するそれぞれの段クロック信号(Clock#)をイネーブルおよびディセーブルすることができ、この場合、クロックゲート回路20は、クロック制御回路(例えば、200または300)と論理回路520との間に結合される。回路処理段500のどの部分がその段クロック信号をディセーブルさせるのかについての決定は、電力低減と負荷ジャンプとの間のトレードオフである。
【0046】
図6は、開示の態様に従う、ドリームスリープモードを有する回路処理段600を示す。
【0047】
処理を継続することができないとき、クロックを完全に停止させるよりはむしろ、回路処理段10は、処理は継続するがメモリ内のデータは修正されない「ドリームスリープ」モードに入ることができる。これは、
図2Aのクロック制御回路200または
図3のクロック制御回路300を用いて達成可能である。データがメモリに書き込まれるのを防止するために、「汚れた(dirty)」信号は、「有効な」信号に追加可能である。しかしながら、一時記憶であるパイプラインレジスタは、依然としてロード可能である。
【0048】
回路処理段600は、メモリ610、論理回路620およびANDゲート630を備える。論理回路620は、制御論理回路622と、例えば、算術演算を実行するデータパス論理回路624と、を備える。回路処理段600は、
図1の回路処理段10の一例である。
【0049】
クロック制御回路(例えば、
図2Aの200または
図3の300)は、依然としてメモリ610および制御論理回路622にクロックを送る(clocking)間、クロックゲート20を介してデータパス論理回路624に対する段クロック信号(Clock)をイネーブルおよびディセーブルすることができる。データパス論理回路624のクロックは、オフにされる一方、制御論理回路622およびメモリ610は、それらのクロックがオンのままである。ANDゲート630は、クロックイネーブル信号(Clock_en)と、制御論理回路622からの書き込みイネーブル信号と、を入力として受信する。クロックイネーブル信号(Clock_en)がアサートされると、このANDゲート630は、書き込みイネーブル信号(Write_en)が制御論理回路622からメモリ610に通過するのを可能にする。
【0050】
書き込みイネーブル信号(Write_en)を禁止することによって、メモリ610の状態は、ドリーム状態に維持され、これにより、メモリ610に対する読み書きを行うよりも少ない電力を消費する。回路処理段600は、通常動作の間に行うような、なんらかのデータを書き込むことなく、メモリアドレスを通して実質的に循環する(cycle)。クロックが再度イネーブルされると、処理は、中止したところから迅速に再開することができる。
【0051】
開示のこの態様は、回路処理段600のいくつかの部分に対するクロックをディセーブルすることによる、最小の平均電力消費と最大負荷ジャンプとの間のトレードオフである。例えば、データパイプラインレジスタに対するクロックは、オフにされるが、メモリ内のデータの読み出しは継続する。読み出しアドレスがデータ依存である場合、疑似乱数読み出しパターンを使用することができる。しかしながら、メモリクロックおよびアクセスが停止する場合、疑似乱数データは、実際のデータを置換する。
【0052】
オプションで、
図600のドリームスリープモードは、
図5の部分的なシャットダウンおよび/または
図4Aおよび
図4Bのパワーダウンに関連して利用されてもよく、異なるモードは、回路処理段10の各々のために用いられてもよい。
【0053】
開示された態様は、アナログ回路、デジタル回路、混合信号回路またはプログラマブル回路を含むがこれらに限定されないさまざまなタイプの回路を用いて実施されてもよい。アナログ回路は、電圧または電流のような連続信号によって動作する電子回路である。一方、デジタル回路は、典型的には二進数の形の離散信号によって動作する。混合信号回路は、アナログ回路およびデジタル回路の両方を組み合わせ、連続成分および離散成分の両方を含む信号を処理する。フィールドプログラマブルゲートアレイ(FPGA)またはデジタル信号プロセッサ(DSP)のようなプログラマブル回路は、開示された態様の実施態様において柔軟性および再構成可能性を提供し、回路がプログラムまたは再プログラムされ、異なる機能または動作を実行できるようにする。
【0054】
高電圧レベルと低電圧レベルとの間で切り替わるデジタルパルス信号は、イネーブルまたはディセーブルする機能を表現することができる。高電圧レベルは、典型的には、イネーブルすなわちアクティブ状態を表現し、一方、低電圧レベルは、典型的には、ディセーブルすなわち非アクティブ状態を表現する。加えて、パルス信号は、信号の極性を変えるために反転可能であり、その結果、高電圧レベルは、ディセーブルすなわち非アクティブ状態を表現し、一方、低電圧レベルは、イネーブルすなわちアクティブ状態を表現する。
【0055】
この開示の技術は、以下の例において記載されてもよい。
【0056】
例1.負荷ジャンプの緩和を有する回路であって、回路は、
パイプライン構成に配置され、それぞれの段クロック信号に基づいて動作可能な回路処理段と、
回路処理段にそれぞれ接続され、それぞれの段クロック信号を制御するクロック制御回路と、
を備え、
クロック制御回路の各々は、
それぞれの回路処理段が、処理のための有効データの受信を開始することを表現するデータ入力信号を受信することに応答して、それぞれの段クロック信号をイネーブルし、
それぞれの回路処理段が任意の有効データを受信してから経過した所定のそれぞれの回路処理段処理遅延に基づいて、それぞれの段クロック信号をディセーブルし、
それぞれの段クロック信号がイネーブルされてから経過した所定のそれぞれの回路処理段処理遅延に基づいて、回路処理段の次の回路処理段に接続されている、クロック制御回路の次のクロック制御回路をイネーブルし、それぞれの回路処理段が、次の回路処理段に対する処理された有効データの送信を開始していることを示す、
ように動作可能である、
回路。
【0057】
例2.回路処理段のうちの少なくとも2つは、異なる処理遅延を有する、
例1に記載の回路。
【0058】
例3.クロック制御回路の各々は、それぞれの段クロック信号をイネーブルするために、それぞれの回路処理段が、処理のための有効データの受信を開始することを表現するデータ入力信号を受信することに応答して、回路処理段ゲートクロックイネーブル信号を出力するように動作可能である、
例1から2のいずれか1つまたは複数に記載の回路。
【0059】
例4.クロック制御回路の各々は、それぞれの回路処理段の処理時間に対応する第1の所定の数のクロックサイクルをカウントするように動作可能な処理時間カウンタ回路を備える、
例1から3のいずれか1つまたは複数に記載の回路。
【0060】
例5.処理時間カウンタ回路は、
それぞれの回路処理段が、処理のための有効データを受信することを表現するデータ入力信号を、それぞれのクロック制御回路が受信するクロックサイクルごとに、第1の所定の数のクロックサイクルのカウントをリロードし、
それぞれの段クロック信号をディセーブルするために、処理時間カウンタ回路が、最後のリロードから第1の所定の数のクロックサイクルをカウントしたことに応答して、回路処理段ゲートクロックイネーブル信号を出力する、
ようにさらに動作可能である、
例1から4のいずれか1つまたは複数に記載の回路。
【0061】
例6.回路は、クロックゲート回路をさらに備え、
クロックゲート回路は、クロック制御回路と回路処理段との間にそれぞれ接続され、回路処理段ゲートクロックイネーブル信号に基づいて、それぞれの回路処理段クロック信号を開始/停止させるように動作可能である、
例1から5のいずれか1つまたは複数に記載の回路。
【0062】
例7.クロック制御回路の各々は、それぞれの回路処理段の処理遅延に対応する第2の所定の数のクロックサイクルをカウントするように動作可能な次の段カウンタ回路を備える、
例1から6のいずれか1つまたは複数に記載の回路。
【0063】
例8.それぞれのクロック制御回路が、それぞれの段クロック信号をイネーブルさせるデータ入力信号が受信される間のクロックサイクルの後、第2の所定の数のクロックサイクルをカウントすることに応答して、
次の段カウンタ回路は、クロック制御回路の次に対して、次のデータ入力信号を出力するようにさらに動作可能である、
例1から7のいずれか1つまたは複数に記載の回路。
【0064】
例9.回路は、次の段カウンタ回路の出力と入力との間に接続されているフィードバック回路をさらに備え、
それぞれの段クロック信号がイネーブルされ、次のデータ入力信号が出力されていることに応答して、フィードバック回路は、次の段カウンタ回路の第2の所定の数のクロックサイクルをリロードするように動作可能である、
例1から8のいずれか1つまたは複数に記載の回路。
【0065】
例10.回路は、高速フーリエ変換(FFT)処理回路である、
例1から9のいずれか1つまたは複数に記載の回路。
【0066】
例11.クロック制御回路の各々は、遅延回路を備え、
遅延回路は、受信したデータ入力信号が、クロック制御回路の次に対して、データ出力信号として送信されるのを遅延させるように動作可能である、
例1から10のいずれか1つまたは複数に記載の回路。
【0067】
例12.遅延回路は、
1つまたは複数のフリップフロップ回路のチェーンと、
それぞれのフリップフロップ回路の出力に接続されている入力を有し、フリップフロップ回路の出力信号に基づいて、それぞれの段クロック信号をイネーブルするように動作するORゲートと、
を備える、
例1から11のいずれか1つまたは複数に記載の回路。
【0068】
例13.クロック制御回路の各々は、回路要素を備え、
回路要素は、遅延回路とそれぞれの回路処理段との間に接続され、それぞれの段クロック信号がイネーブルされる間、それぞれの回路処理段に対する電力をイネーブルするように動作可能である、
例1から12のいずれか1つまたは複数に記載の回路。
【0069】
例14.クロック制御回路の各々は、第2のORゲートを備え、
回路要素がデータ入力信号、クロックイネーブル信号、または、1つもしくは複数のフリップフロップ回路のチェーンの最後のフリップフロップ回路からのデータの最後を受信するとき、第2のORゲートは、それぞれの回路処理段に対する電力をイネーブルするように動作可能である、
例1から13のいずれか1つまたは複数に記載の回路。
【0070】
例15.それぞれの回路処理段は、メモリおよび論理回路を備え、
クロック制御回路の各々は、メモリおよび論理回路の少なくとも一部の一方に対するそれぞれの段クロック信号をイネーブルおよびディセーブルするように動作可能である、
例1から14のいずれか1つまたは複数に記載の回路。
【0071】
例16.回路は、クロック制御回路と、それぞれの回路処理段のメモリおよび論理回路の一方と、の間に接続されているクロックゲート回路をさらに備える、
例1から15のいずれか1つまたは複数に記載の回路。
【0072】
例17.それぞれの回路処理段の各々は、メモリおよび論理回路を備え、論理回路は、制御論理回路およびデータパス論理回路を備え、
それぞれのクロック制御回路は、データパス論理回路に対するそれぞれの段クロック信号をイネーブルおよびディセーブルし、メモリおよび制御論理回路のカウントを継続するように動作可能である、
例1から16のいずれか1つまたは複数に記載の回路。
【0073】
例18.回路の負荷ジャンプを緩和するための方法であって、
回路は、パイプライン構成に配置され、それぞれの段クロック信号に基づいて動作可能な回路処理段と、回路処理段にそれぞれ接続され、それぞれの段クロック信号を制御するクロック制御回路と、を有し、方法は、
それぞれの回路処理段が、処理のための有効データの受信を開始することを表現するデータ入力信号を、それぞれのクロック制御回路が受信することに応答して、それぞれの段クロック信号をイネーブルするステップと、
それぞれの回路処理段が任意の有効データを受信してから経過した所定のそれぞれの回路処理段処理遅延に基づいて、それぞれの段クロック信号をディセーブルするステップと、
それぞれの段クロック信号がイネーブルされてから経過した所定のそれぞれの回路処理段処理遅延に基づいて、回路処理段の次の回路処理段に接続されている、クロック制御回路の次のクロック制御回路をイネーブルするステップであって、それぞれの回路処理段が、次の回路処理段に対する処理された有効データの送信を開始していることを示すステップと、
を含む方法。
【0074】
例19.回路処理段のうちの少なくとも2つは、異なる処理遅延を有する、
例18に記載の方法。
【0075】
例20.方法は、それぞれの段クロック信号をイネーブルするために、それぞれの回路処理段が、処理のための有効データの受信を開始することを表現するデータ入力信号を受信することに応答して、クロック制御回路の各々によって、回路処理段ゲートクロックイネーブル信号を出力するステップをさらに含む、
例18から19のいずれか1つまたは複数に記載の方法。
【0076】
上述したことは、例示的な実施形態と関連して記載されているが、「例示的」という用語が、最善または最適というよりはむしろ単なる一例を意味するだけであるということを理解されたい。したがって、開示は、開示の範囲内に含まれうる代替、修正および均等物をカバーすることを意図する。
【0077】
本願明細書において特定の実施形態が図示および記載されてきたが、当業者によってさまざまな代替のおよび/または等価な実施態様が本開示の範囲を逸脱することなく図示および記載される特定の実施形態で置換されてもよいことを認識されたい。この開示は、本願明細書において述べられる特定の実施形態の任意の適合または変化をカバーすることを意図する。
【外国語明細書】