(57)【要約】【課題】ベクトル成分をランダムに並べ換える効率的な手法を提供する。【解決手段】ベクトルを置換する(permute)方法は、置換構造の入力段に、ベクトルのエントリを提供する。該置換構造は、複数の段と、任意の入力ベクトルエントリを任意の出力ベクトルエントリにルーティングすることができるように該複数の段間でのベクトルエントリのグループの相互接続とを有する。該方法は、置換構造の制御要素(202)に、該置換構造の段間のベクトルエントリのルーティングを制御するランダムな制御ビットをロードする。該置換構造を使用し、該制御ビットに従って、該ベクトルエントリを、置換構造の入力段から出力構造までルーティングする。【選択図】図２
2006127505.tif 000002
【特許請求の範囲】
【請求項１】
ベクトルを置換するための方法であって、
前記ベクトルのベクトルエントリを、置換構造の入力段に提供するステップであって、該置換構造は、複数の段（１０１〜１０４）と、任意の入力ベクトルエントリを任意の出力ベクトルエントリにルーティングすることができるように該複数の段間でのベクトルエントリのグループの相互接続と、を有するステップと、
前記置換構造の制御要素（２０２）に、該置換構造の段間のベクトルエントリのルーティングを制御するランダムな制御ビットをロードするステップと、
前記置換構造を使用し、前記制御ビットに従って、前記ベクトルエントリを前記置換構造の入力段から出力構造までルーティングするステップと、
を含む、方法。
【請求項２】
前記置換構造は、それぞれの制御ビットによって、２つの対応するベクトルエントリを、前記置換構造の２つの段の間で交換し、または、該対応するベクトルエントリを、該２つの段の間で同じ位置に継続させる、バタフライ要素を有する、
請求項１に記載の方法。
【請求項３】
前記バタフライ要素のそれぞれは、制御レジスタ（２０２）に結合された２つの２対１マルチプレクサ（２０１）を含む、
請求項２に記載の方法。
【請求項４】
前記置換構造のそれぞれの段は、ベクトルエントリを、２Ｓ個のエントリのグループにグループ化し、該Ｓは、前記置換構造の前記段を示す、
請求項１に記載の方法。
【請求項５】
前記置換構造の前記相互接続は、グループのｉ番目のベクトルエントリを、該グループの（２Ｓ−ｉ番目）のベクトルエントリと交換することを可能にする、
請求項３に記載の方法。
【請求項６】
前記ベクトルエントリの数は、２の累乗である、
請求項１に記載の方法。
【請求項７】
前記置換構造は、ｌｏｇ２Ｍ個の段を含み、該Ｍは、前記ベクトルのベクトルエントリの数を表す、
請求項５に記載の方法。
【請求項８】
さらに、
前記ベクトルエントリを、制御ビットに従って、後続の置換構造の入力段から、該連続置換構造の出力段にルーティングするステップを含み、
該後続の置換構造は、前記置換構造にカスケード接続されている、
請求項１に記載の方法
【請求項９】
前記置換構造は、
ベクトルエントリを、前記複数の段間でルーティングするバレルシフタを含む、
請求項１に記載の方法。
【請求項１０】
ベクトルを置換するためのシステムであって、
前記ベクトルのエントリを受け取る入力段と、該ベクトルの置換済みベクトルを出力する出力段とを有する複数の段（１０１〜１０４）であって、該複数の段のそれぞれは、前記ベクトルのエントリのうちの一部のエントリの位置を制御可能なように切り換える論理要素（２００）を含む、複数の段（１０１〜１０４）と、
前記複数の段の前記論理要素間の相互接続と、
前記複数の段の前記論理要素に、ビットを、偽似ランダムなやり方でロードして、該論理要素の動作を制御する制御要素（２０８）と、を備え、
前記論理要素および前記相互接続は、前記ベクトルの任意のエントリを、前記出力段の任意の出力位置にルーティングすることができるように配置されている、
システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般に、ベクトルを置換するためのシステムおよび方法に関する。
【背景技術】
【０００２】
多くのアプリケーションにおいて、ベクトル成分をランダムに置換する（並べ換える、permute）ように入力ベクトルを処理して、出力ベクトルを生成することが望まれる。また、該置換は、きわめて高速に実行することが望ましい。置換を実行する最適な方法は、階乗置換（factorial permutation）である。階乗置換は、任意のスパンすなわちモジュラス（法、modulus）の、独立して均一に分散した離散型確率変数のソース、すなわち０からＮ−１にわたる均一なソースを使用する（ここで、Ｎは任意の整数）。ここで、置換されるベクトルの長さがＭであると仮定する。階乗置換では、入力ベクトルの第１の入力成分は、スパンＭ−１の確率変数を使用して、出力ベクトルのＭ個の位置のうちの１つに割り当てられる。次に、第２の成分が、スパンＭ−２の確率変数を使用して、Ｍ−１個の残りの位置のうちの１つに割り当てられる。この割り当ては、入力ベクトルの最後の成分が出力ベクトルの或る位置に割り当てられるまで、同じように続く。このようにベクトルエントリをランダム化することにより、Ｍ！の置換が可能になる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
階乗置換は、高速のアプリケーションに適用されるときに制限がある。具体的には、階乗置換は、順序型アルゴリズムである。高速なアプリケーションに階乗置換を適応させるためにパイプライン化が適用されることがあるが、このような適応は、集積回路設計において複雑さおよび待ち時間を増大させる。第２のさらに困難な問題は、任意のモジュラスの一様な乱数を得ることである。このような一様な乱数を生成することができるいくつかの既存のアルゴリズムは、一般に、高速のオペレーションにはなじまない。また、他の既存のアルゴリズムは、許容可能な範囲内の値を得るために繰り返しの試行を必要とし、従って、時間通りに決定することができない。
【課題を解決するための手段】
【０００４】
いくつかの代表的な実施形態は、「バタフライ(butterfly)」構造を使用して入力ベクトルを置換するシステムおよび方法に関する。バタフライ構造は、高速フーリエ変換（ＦＦＴ）および高速アダマール変換（ＦＨＴ）のアルゴリズムによって使用されるバタフライ構造に類似している。１つの実施形態において、置換すべきベクトルがＭ個のベクトルエントリを含み、対応するバタフライ構造がｌｏｇ２Ｍ個の段を含む。この構造の個々のバタフライ要素は、エントリがバタフライの段間でルーティングされるときに、２つのそれぞれのベクトルエントリが位置を交換することを可能にする。具体的には、それぞれの段（「ｓ」で示される）において、ベクトルエントリは、２Ｓ個のエントリのグループにグループ化される。それぞれの段において、バタフライ要素の配置によって、ｉ番目のベクトル成分が、２Ｓ−ｉ番目のベクトル成分と位置を交換することができる。
【０００５】
いくつかの代表的な実施形態は、ベクトルエントリを制御可能なようにルーティングするようバタフライ要素を実現することによって、ＦＦＴおよびＦＨＴのアルゴリズムによって使用されるバタフライ構造と異なる。詳細には、ＦＦＴおよびＦＨＴアルゴリズムによるエントリのルーティングは、根底にある変換の数学的手法によって定義された決定性のある手法(deterministic manner)で行われる。これとは対照的に、いくつかの代表的な実施形態は、それぞれのバタフライ要素について制御構造を提供する。該制御構造の状態に従い、グループの対応する２つのベクトル成分が、位置を交換し、または、位置の変更なしに次の段に続く。入力ベクトルの置換は、ランダム化アルゴリズムを使用して制御構造の状態をロードすることにより、生じる。バタフライ要素をこのようにして実現することによって、制御構造のランダム化に依存して、任意の個々のベクトル成分を出力ベクトルの任意の位置にルーティングすることができる。
【０００６】
いくつかの代表的な実施形態は、ベクトル置換をこのように実現することによって、比較的大きいランダム性を提供することができる。具体的には、バタフライ構造は、２＾｛（Ｍ／２）（ｌｏｇ２Ｍ）｝の置換を行うことができる。さらに、バタフライ要素は、例えば２対１(2-to-1)のマルチプレクサを使用して実現されることができる。したがって、バタフライ構造を、容易にパイプライン化してきわめて高速に動作させることができる。また、ランダム化するベクトルが２の累乗のベクトルエントリ数を有する場合、制御構造のためのビットの生成は、高速動作に適合したアルゴリズムを使用して行うことができる。
【発明を実施するための最良の形態】
【０００７】
図面を参照すると、図１は、１つの代表的な一実施形態によるバタフライ構造（butterfly structure）１００を示す。バタフライ構造１００は、段と段の間で起こり得るベクトル成分のルーティングを示す。図１に示したように、バタフライ構造１００は、簡潔にするために、ハードウェア要素間のルーティングおよび接続を実行するのに使用されるハードウェア要素を省略して描かれている。
【０００８】
置換(permute)すべきベクトルは、（ｘ（０）〜ｘ（１５）で示した）１６個のベクトルエントリを含む。置換されるエントリは、シングルビット値でもデジタルワードでもよい。バタフライ構造１００内の段数は４である。一般的な事例において、任意の入力ベクトルエントリを任意の出力ベクトルエントリにルーティングすることを可能にするために、Ｌｏｇ２Ｍ個の段が利用され、ここで、Ｍは、ベクトルエントリの総数を表す。バタフライ構造１００のそれぞれの段において、対応するベクトル成分を切り換える（交換する）ために、８（すなわちＭ／２）個のバタフライ要素（図示せず）が使用される。したがって、バタフライ要素の総数および制御ビットの総数は、３２（すなわち（ＭＬｏｇ２Ｍ）／２））である。
【０００９】
一般的な事例に関し、ベクトルエントリは、２Ｓ個のエントリのグループにグループ化される。段１０１には、２つのベクトルエントリの８個のグループ（１１０−１〜１１０−８）がある。段１０２には、４つのベクトルエントリの４つのグループ（１２０−１〜１２０−４）がある。段１０３には、８つのエントリの２つのグループ（１３０−１と１３０−２）がある。また、段１０４には、１６個のエントリの１つのグループ１４０だけがある。バタフライ要素の制御構造の状態に従って、対応するベクトル成分は、位置を交換し、または同じ位置で次の段に続く。具体的には、それぞれのグループのｉ番目のベクトルエントリは、２Ｓ−ｉ番目のベクトルエントリと位置を交換し、または、その２つのベクトルエントリは自分達の位置を維持する。
【００１０】
段１０１において、ベクトルエントリは、それぞれが２つのエントリのグループ（１１０−１〜１１０−８）にグループ化される。グループ１１０−１の場合、ベクトルエントリ１１１−１および１１１−２は、制御構造の状態に従って位置を変化させることができる。例えば、対応するバタフライ要素の制御構造が「０（ゼロ）」に設定されたならば、ベクトルエントリ１１１−１は、段１０２のエントリ１２１−１にルーティングされ、エントリ１１１−２は、エントリ１２１−２にルーティングされることになる。代替的に、制御構造が「１」に設定されたならば、エントリ１１１−１は、エントリ１２１−２にルーティングされ、エントリ１１１−２は、エントリ１２１−１にルーティングされることになる。様々なグループの他のエントリが、同様の手法でルーティングされる。
【００１１】
段１０２を参照すると、ベクトルエントリは、それぞれが４つのエントリのグループ（１２０−１〜１２０−４）にグループ化される。グループ１２０−１の場合、ベクトルエントリ１２１−１および１２１−４が、制御構造の状態に従って位置を変化させることができる。対応するバタフライ要素の制御構造が「０」に設定されたならば、ベクトルエントリ１２１−１は、段１０２の要素１３１−１にルーティングされ、エントリ１２１−４はエントリ１３１−４にルーティングされることになる。代替的に、制御構造が「１」に設定されたならば、エントリ１２１−１が、エントリ１３１−４にルーティングされ、エントリ１２１−４が、エントリ１３１−１にルーティングされることになる。様々なグループの他のエントリが、同様の手法でルーティングされる。
【００１２】
エントリのルーティングは、同様の手法で段１０４に続き、その後、バタフライ構造の出力（出力ベクトルエントリＸ（０）〜Ｘ（１５）で示される）に続く。図１に示した経路から、任意の入力ベクトルエントリを、任意の出力ベクトルエントリにルーティングすることができる。バタフライ構造１００を使用した可能な置換数（２＾｛（Ｍ／２）（ｌｏｇ２Ｍ）｝）は、最適数（Ｍ！）よりも少ないが、この置換数は、ほとんどのアプリケーションに対して十分なランダム性を提供する。バタフライ構造１００は、ベクトルエントリのルーティングに依存性を導入する。例えば、エントリ１１１−１がエントリ１２１−１にルーティングされる場合、エントリ１１１−１は、出力ベクトル内の偶数エントリだけにルーティングされ、エントリ１１１−２は、出力ベクトル内の奇数エントリだけにルーティングされる。完全にランダムな置換が実行されると、そのような依存性は存在しなくなる。所与のアプリケーションにとってこのような依存性が適切でない場合は、１つまたはいくつかのバタフライ構造１００をカスケード接続して、ベクトルエントリのルーティングの依存性を実質的に緩和することができる。
【００１３】
他の代表的な実施形態に従うと、バタフライ構造１００を変形させることができる。例えば、バタフライ構造１００の配列を逆にして、ＦＦＴの「ＤＩＦ（decimation-in-frequency、周波数間引き）」と類似の手法で、相互接続の鏡像を形成することができる。また、バタフライ構造１００の上記説明は、入力ベクトルのベクトルエントリの数が２の累乗のときのルーティングの実施形態について述べたが、他の実施形態は、他のサイズのベクトルを置換することができる。具体的には、ＦＦＴ構造が合成数(composite number)まで拡張されるときと同じ手法で、バタフライ構造を合成数Ｍまで拡張することができる。
【００１４】
図２は、代表的な一実施形態によるバタフライ構造においてベクトルエントリをルーティングするための、個別のバタフライ要素を示す。ベクトルエントリのルーティングは、２対１(2-to-1)のマルチプレクサ２０１−１および２０１−２によって実行される。マルチプレクサ２０１−１および２０１−２は、レジスタロジック２０２によって制御される。具体的には、制御ビットが、レジスタロジック２０２に、線２０７を介して乱数発生器２０８によってロードされることができる。その後、レジスタロジック２０２は、２進値をマルチプレクサ２０１−１および２０１−２に出力する。レジスタロジック２０２の値が「０」ならば、線２０３に現れる値が、出力線２０５にルーティングされ、線２０４に現れる値が出力線２０６にルーティングされる。代替的に、ロジック２０２のレジスタ値が「１」ならば、線２０３に現れる値が、出力線２０６にルーティングされ、線２０４に現れる値が、出力線２０５にルーティングされる。
【００１５】
バタフライ構造１００の上記説明は、２つの対応するベクトルエントリだけを、各ルーティング位置に依存したやり方でルーティングすることに依拠しているが、他のルーティング機構を使用してもよい。図２に示したバタフライ要素２００の代わりに、バレルシフタ(barrel shifter)を利用して、段と段の間でベクトルエントリをルーティングすることができる。バレルシフタとは、データワードを、定義された数のビットだけシフトまたは回転（循環）させることができるハードウェア要素である。例えば、Ｒａｄｉｘ−４分解（radi-4 decomposition）を使用して、４入力４出力のバレルシフタを使用することができ、または、置換するベクトルエントリの数に依存して、８入力８出力バレルシフタを使用することができる。図３Ａは、４入力４出力のバタフライ要素３００のブロック図を示し、図３Ｂは、バタフライ要素３００の真理値表の内容３５０を示す。バタフライ要素３００は、２つの制御ビットに従って動作する。図３Ｂで分かるように、４ビットのデータワード（ＡＢＣＤ）に適用される回転ビット数は、制御ビットによって定義される（すなわち、００−ゼロ回転、０１−１ビットの回転、１０−２ビットの回転、および１１−３ビットの回転）。より高次のバレルシフタを使用するほど、アプリケーションにおける制御ビット数が少なくなる。例えば、６４ビットベクトルの置換は、バタフライ構造１００に類似の配置を使用すると、１９２ビットを必要とするが、８ビットのバレルシフタ（３個の制御ビットを有する）を使用すると、４８個の制御ビットを必要とする。
【００１６】
いくつかの代表的な実施形態は、適切な置換構造を使用してベクトル置換を実現することによって、比較的複雑さの小さい回路で、比較的大きなランダム性を提供することができる。いくつかの実施形態において、バタフライ構造は、２＾｛（Ｍ／２）（ｌｏｇ２Ｍ）｝の置換を行うことができる。さらに、バタフライ要素は、例えば２対１のマルチプレクサや他の複雑さの小さい論理装置を使用して実現されることができる。したがって、バタフライ構造を、容易にパイプライン化してきわめて高速に動作させることができる。また、ランダム化するベクトルが２の累乗のベクトルエントリ数を有する場合、制御構造のビットの生成は、高速動作に適切なアルゴリズムを使用して行うことができる。
【図面の簡単な説明】
【００１７】
【図１】代表的な一実施形態による、ベクトルを置換するバタフライ構造を示す図で。
【図２】代表的な一実施形態による、バタフライ要素の実施形態を示す図。
【図３】代表的な一実施形態による、ベクトルを置換するために使用することができるバレルシフタおよび対応する真理値表を示す図。
【符号の説明】
【００１８】
１００  バタフライ構造
１０１〜１０４  段
２００  バタフライ要素
２０１  マルチプレクサ
２０２  制御要素（制御レジスタ）
【図１】
2006127505.tif 000003
【図２】
2006127505.tif 000004
【図３】
2006127505.tif 000005