(57)【特許請求の範囲】
【請求項１】
複数のレジスタエレメントを有し、少なくともプロセスデータエレメントを格納するためのレジスタファイルと、
それぞれがｍビットのサイズを有する複数のメモリロケーションを含むメモリと、を備えるデジタルシグナルプロセッサにて、
ｎ（＜ｍ）ビットのサイズを有する前記プロセスデータエレメントを、前記レジスタファイルから前記メモリ内のメモリロケーションへ移動する方法であって、
交換ファシリティが、相互に連続する前記レジスタエレメントに格納されている前記プロセスデータエレメントのビットを、前記ビットの前記レジスタエレメントにおける位置に応じて、ｍビットまたはｍ／２ビットの変更データエレメントが生成されるよう、前記プロセスデータエレメント間で交換するステップと、
シャッフルファシリィティが、ｍの値に応じて、ｍビットのシャッフル後変更データエレメントが生成されるよう、前記交換の結果として生じた変更データエレメントにおけるｋ（＜ｎ）連続ビットの群をシャッフルするステップと、
シャッフルファシリィティが、前記シャッフルの結果として生じたシャッフル後変更データエレメントを、前記メモリの前記メモリロケーションに格納するステップと、
を備えることを特徴とする方法。
【請求項２】
複数のレジスタエレメントを有するレジスタファイルと、
それぞれがｍビットのサイズを有する複数のメモリロケーションを含み、少なくとも格納データエレメントを格納するためのメモリと、を備えるデジタルシグナルプロセッサにて、
前記メモリのメモリロケーションに格納されている格納データエレメントを、ｎ（＜ｍ）ビットのサイズを有するプロセスデータエレメントとして、前記レジスタファイルへロードする方法であって、
シャッフルファシリィティが、前記格納データエレメントに対してシャッフリングを適用し、ｍの値に応じて、ｍビットまたはｍ／２ビットのシャッフル後格納データエレメントが生成されるよう、ｋ（＜ｎ）連続ビットの２つ以上の群をそれらの全体で交換し、生成されたシャッフル後格納データエレメントを前記レジスタエレメントに格納するステップと、
交換ファシリティが、前記シャッフル後格納データエレメントのビットを、前記ビットの前記レジスタエレメントにおける位置およびｍ，ｎの値に応じて、ｎビットのプロセスデータエレメントが生成されるよう、連続するレジスタエレメントに格納されたデータエレメントの組間で交換することにより、前記プロセスデータエレメントを前記レジスタファイルへロードするステップと、
を備えることを特徴とする方法。
【請求項３】
デジタルシグナルプロセッサであって、
１つまたは複数の機能ユニットと、
複数のレジスタエレメントを有し、少なくともプロセスデータエレメントを格納するためのレジスタファイル、と、
それぞれがｍビットのサイズを有する複数のメモリロケーションを含み、少なくとも１つのｎ（＜ｍ）ビットのサイズを有するデータエレメントを格納するためのメモリと、
ｍの値に応じて、ｍビットまたはｍ／２ビットのシャッフル後格納データエレメントが生成されるよう、ｋ（＜ｎ）ビットのサイズを有する前記データエレメントをシャッフルし、生成されたシャッフル後格納データエレメントを前記レジスタエレメントに格納するためのシャッフルファシリティと、
前記シャッフル後格納データエレメントのビットを、前記ビットの前記レジスタエレメントにおける位置に応じて、ｎビットのプロセスデータエレメントが生成されるよう、相互に連続する前記データエレメント間で交換するための交換ファシリティと、
を備えることを特徴とするデジタルシグナルプロセッサ。
【請求項４】
ｍ＝ｐ×ｋであり、ｐは正の整数である、ことを特徴とする請求項３に記載のデジタルシグナルプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ格納方法に関する。
【０００２】
本発明は、さらにデータロード方法に関する。
【０００３】
本発明は、さらにまたシグナルプロセッサに関する。
【背景技術】
【０００４】
例えば音声および映像処理のための信号処理は、通常、同じ指示が、ベクトルの複数のデータエレメントに対して繰り返されることを必要とする。このようなプロセッサの例、ここではＳＩＭＤプロセッサが、図１に示されている。図示のＳＩＭＤプロセッサは、ベクトルメモリＭと、レジスタファイルＲＦと、複数の機能ユニットＦＵ１、…、ＦＵｎとを備える。
【０００５】
ＳＩＭＤプロセッサは、ＶＬＩＷ命令の格納用の命令メモリＰＭと、命令メモリに結合されたＶＬＩＷコントローラＣＴＲＬと、メモリ用のアドレスユニットＡＣＵ＋とをさらに有する。
【０００６】
メモリＭは、各々ｍビットのＰワードを備える、複数のベクトル用の格納能力を有する。例えばＰ＝８およびｍ＝１６である。機能ユニットＦＵは、データのロードおよび格納、乗算、ならびに多重蓄積演算など、レジスタファイルに格納されたデータに対する、多数の演算を並行してサポートする。
【０００７】
ロードベクトル演算は、ベクトルを、ＳＩＭＤメモリＭからレジスタファイルＲＦに移動させる。格納ベクトル演算は、ベクトルを、レジスタファイルＲＦからＳＩＭＤメモリＭに移動させる。
【０００８】
ＳＩＭＤプロセッサにおいて、レジスタファイル＋機能ユニットの組み合わせは、Ｐ平行メモリバンクを有するメモリと通信する、Ｐ平行データレーンと考えられる。いわゆるベクトル間演算の場合、基本演算が、各レーンにおいて局所的にＰ回適用される。いわゆるベクトル内演算は、単一ベクトルのＰエレメントに対して作用し、そのためＰレーンにわたり作用する。Ｐレーンの各々は、それぞれのメモリバンクに結合されている。
【０００９】
信号処理アプリケーションにより用いられる、データエレメントのワードサイズ（プロセスデータエレメント）は、デジタル・シグナル・プロセッサ（ＤＳＰ）のメモリロケーションのワードサイズにあまり一致していないことが多い。例えば通常のメモリワードサイズは、１６ビットである。しかしＤＶＢ−Ｔレシーバの内部遅延ラインは、１０ビットの４８ｋサンプルの能力を有する（４８ｋ＝１０ビットの２ワードの８複合サンプルの３フレーム）。これをプログラマブルＤＳＰのメモリにマッピングすることは、１６ビット格納位置への、１０ビットデータエレメントのマッピングを意味する。そのためこの遅延ラインの全体メモリ要件は、４８０ｋビットから７６８ｋビットに増大する［６０％アップ！］。
【００１０】
理想的には、メモリに格納されるべきデータエレメント（格納データエレメント）が、メモリ格納位置のサイズと同等のサイズを有するように、この過度なメモリ要件は、データの圧縮により回避されるべきである。
【００１１】
圧縮されたメモリフォーマット自体は、新しくはない。しかしそれらの実施は、ＳＩＭＤ装置の場合には、特別な挑戦を課す。一例として、これは、１６ビットのサイズを有するＰ＝８ワードのベクトルを処理する、ＳＩＭＤを参照して説明される。いわゆるベクトルメモリは、Ｐ×１６ビットのラインの物理メモリである。
【００１２】
メモリに格納された１６ビットの５つの圧縮されたデータエレメント（格納データエレメント）からの、１０ビットのＰ＝８データエレメントのロード演算を実行するための、概念的に単純な解決法は、マルチプレクサを導入して、整列したベクトルをＰレーンにわたって広げることであろう。同様に、メモリ内の１６ビットの５つの圧縮されたデータエレメントとして、１０ビットのＰ＝８データエレメントの格納演算を、そのようなマルチプレクサで実現することもできる。しかしこれは、レーン境界を横切る、およそ１０ワイヤの最大Ｐセットを意味することになる。なお多数のデータエレメントサイズに対する圧縮が、サポートされなければならない場合（例えば１０および１２ビットの両方）、このようなマルチプレクサが、ロード演算および格納演算の両方に対して、サイズ毎に必要とされる。（そしてこれは、圧縮および非圧縮ベクトルの両方が、整列される場合しかサポートしないことになり、さらなる回転演算を必要とする。）ＳＩＭＤ装置のＶＬＳＩレイアウトは、既にワイヤ制限されているため、これは相当な面積およびパワーペナルティを意味することになる。
【発明の概要】
【発明が解決しようとする課題】
【００１３】
本発明の目的は、複雑なさらなるデータラインを必要とせずに、より効率的なデータの格納を可能にする、データ格納方法を提供することである。
【００１４】
本発明のさらなる目的は、複雑なさらなるデータラインを必要とせずに、格納される前に有していた元のフォーマットで、データの再構築を可能にする、データロード方法を提供することである。
【００１５】
本発明のさらなる目的は、複雑なさらなるデータラインを必要とせずに、より効率的なデータ格納を可能にする、データ処理装置を提供することである。
【００１６】
本発明のさらなる目的は、複雑なさらなるデータラインを必要とせずに、格納される前に有していた元のフォーマットで、データのロードおよび再構築を可能にする、データ処理装置を提供することである。
【課題を解決するための手段】
【００１７】
本発明によれば、ｎビットのサイズを有するデータエレメントのベクトルを、レジスタファイルからメモリへ格納する方法であって、メモリは、格納データエレメントのベクトルを、ｍビットのサイズを有する位置に格納するように構成されており、ｍ＞ｎである、方法であって、
ビットを、相互に連続するレジスタファイルエレメントに格納されている、ベクトル内のプロセスデータエレメント間で交換するステップであって、交換するステップが、変更データエレメントのベクトルを生じるステップと、
結果として生じるベクトル内のｋ連続ビットの群をシャッフルするステップと、
結果として生じる、変更データエレメントのシャッフルされたベクトルを、格納データエレメントのベクトルとして、メモリに格納するステップと、
を備えることを特徴とする方法が、提供される。
【００１８】
一方で、本発明による格納方法は、データエレメント内のデータを、メモリ内の格納位置のサイズと適正に一致するように、再配置することにより、メモリを効率的に用いる。他方で、本発明による方法は、データレーンを跨ぐ余分な配線を必要としない。それは、比較的大きい細分性でデータをシャッフルするだけの、シャッフリングファシリティを再利用するとともに、データを、相互に隣接するビットレーン間で交換する、というこの目的に十分である。
【００１９】
シャッフル演算は、いくつかのＳＩＭＤプロセッサでは既にサポートされている。シャッフルは、２つのソースベクトルｓおよびｐ、ならびに１つのターゲットベクトルｔを有する。インデックスｉを用いて、０≦ｉ＜Ｐとすると、この演算は、全ｉに対してｔ［ｉ］＝ｓ［ｐ［ｉ］］によって特定することができる。言葉にすると、ターゲットベクトルｔのエレメントｉは、インデックスｐ［ｉ］により特定される、ｓからのエレメントのコピーである。
【００２０】
シャッフル演算のプロパティは、
１．  ｒ個分の位置のベクトル回転で、−Ｐ＜ｒ＜Ｐは、シャッフルの特殊な場合である。
２．  他のシャッフルの結果に対して続くシャッフルは、単一のシャッフル演算に削減できる。特に、回転＋シャッフルを、単一のシャッフルに統合することができる。
【００２１】
同様に、本発明による方法が、提供され、メモリのｍビットのサイズを有するメモリロケーションに格納されている、格納データエレメントのベクトルを、ｎビットのサイズを有するプロセスデータエレメントのベクトルとして、レジスタファイルへロードする方法であって、ｍ＞ｎである、方法において、
格納データエレメントのベクトルを、メモリから検索するステップと、
ｋ連続ビットの２つ以上の群が、それらの全体で交換されて、シャッフルされたベクトルを生じる、シャッフリングを適用するステップと、
ビットを、連続するレジスタエレメントに格納されている、シャッフルされたベクトル内のデータエレメントの組間で交換し、交換が、変更データエレメントのベクトルを生じるステップと、
を備えることを特徴とする。
【００２２】
本発明の目的によれば、デジタルシグナルプロセッサは、
１つまたは複数の機能ユニットと、
少なくともプロセスデータエレメントのベクトルを格納するための、第１の複数のレジスタエレメントを備えるレジスタファイルであって、前記プロセスデータエレメントのベクトルは、ｎビットサイズを有する、レジスタファイルと、
少なくとも１つのベクトルを、ｍビットのサイズを有する複数のメモリロケーションに格納するためのメモリであって、ｍ＞ｎである、メモリと、
ベクトルのｋビットのサイズを有するデータエレメントをシャッフルするための、シャッフルユニットと、
ビットを、ベクトルの相互に連続するデータエレメント間で交換するための、交換ファシリティと、
を備えることを特徴とする。
【図面の簡単な説明】
【００２３】
これらおよび他の態様は、図面を参照してより詳細に説明される。
【図１】図１は、従来のベクトルプロセッサを示す。
【図２】図２は、本発明によるベクトルプロセッサを示す。
【図３】図３は、本発明による第１の方法を概略的に示す。
【図４】図４は、図３による方法を実行する様々な段階における、データの構造を概略的に示す。
【図５】図５は、本発明による第２の方法を概略的に示す。
【図６】図６は、図５による方法を実行する様々な段階における、データの構造を概略的に示す。
【発明を実施するための形態】
【００２４】
本発明の以下の詳細な説明において、多数の具体的な詳細が、本発明の十分な理解を提供するために記載されている。しかし本発明は、これらの具体的な詳細なしに実践されてもよい。他の例において、本発明の態様を不必要に分かりにくくしないように、周知の方法、手順及び／又は構成要素は、詳細に説明されてはいない。
【００２５】
図２は、本発明によるベクトルプロセッサを概略的に示す。ベクトルプロセッサは、レジスタファイルＲＦに結合された、複数の機能ユニットＦＵ１、…ＦＵｎを備える。レジスタファイルは、レジスタＲ１、Ｒ２、Ｒ３のセットを有する。各レジスタは、それぞれのレジスタエレメントＲ１１、…、Ｒ１８内に、データエレメントを有するベクトルを格納可能である。
【００２６】
ベクトルエレメントは、レジスタエレメントのサイズ、例えば１６ビットより小さいｎビット、例えば１０または１２のサイズを有する。
【００２７】
レジスタファイルは、複数の交換ユニットＥＦ１、…、ＦＥ８を備える交換ファシリティＥＦへの、平行データレーンＤＰ１１、…、ＤＰ１８を有する、第１のデータ経路ＤＰ１と結合されている。各交換ユニットＥＦｊは、その隣の交換ユニットと、データビットを交換可能である。交換ユニットＥＦｊは、平行データレーンＤＰ２１、…、ＤＰ２８を有する第２のデータ経路ＤＰ２を介して、シャッフルユニットＳＦに結合されている。
【００２８】
ｍ番目のデータ経路のｎ番目のデータレーンは、ＤＰｍｎと示される。データレーンも、概してＤＬｉと示される。
【００２９】
交換ファシリティＥＦは、所定のパターンに従って、連続するレジスタエレメント間で、データエレメントを交換するように構成されていてもよい。例えば、１０ビットのサイズを有するプロセスデータエレメントを圧縮する際、単一のタイプのプロセスデータを圧縮しなければならない場合には、このような交換ファシリティが適している。しかし好適な実施形態において、交換ファシリティは、制御可能である。このようにして、多数のｍ値を、サポートすることができる。
【００３０】
次に、シャッフルユニットＳＦは、データレーンＤＰ３１、…、ＤＰ３８を有するデータ経路ＤＰ３を介して、メモリＭと結合されている。各データレーンＤＰ３１、…、ＤＰ３８は、それぞれのメモリバンクと結合されている。メモリＭは、ｍビットのサイズを有する複数のメモリロケーションに、少なくとも１つのベクトルを格納可能であり、ここでｍ＞ｎである。例えばｍ＝１６。
【００３１】
シャッフルユニットＳＦは、ベクトルのｋビットのサイズを有するデータエレメントをシャッフル可能である。
【００３２】
図３は、第１のプロセスデータエレメントＤ１、Ｄ２、…、Ｄ８のベクトルをメモリに格納する、本発明による方法を概略的に示す。ベクトルを格納するとは、特定のレジスタから、ベクトルメモリ内の特定の位置に、ベクトルを移動させることを意味する。図４は、図３による方法を実行する様々な段階における、データの構造を示す。図示の実施形態において、ｎ＝１０ビットのサイズを有するプロセスデータエレメントが、レジスタファイルＲＦのレジスタＲ１のそれぞれのレジスタエレメントＲ１１、…、Ｒ１８内に、一時的に存在する。レジスタエレメントのサイズは、１６ビットである。メモリＭは、ベクトルの格納データエレメントを、ロケーションＭ１、…、Ｍ５に格納するように構成されている。メモリのロケーションＭ１、…、Ｍ５は、第１のデータエレメントＤ１、…、Ｄ８のサイズｎより大きいサイズｍを有する。この場合ｍ＝１６ビット。
【００３３】
方法は、以下のステップを備える。
【００３４】
第１のステップＳ１において、プロセスデータエレメントＤ１〜Ｄ８のサイズｎが、メモリロケーションＭ１〜Ｍ５のサイズｍと比較される。プロセスデータエレメントのサイズが、常に同じである場合には、このステップは不要であり、この比較の結果は、あらかじめに分かっている。
【００３５】
第２のステップＳ２において、ビットが、ベクトル内の相互に連続するプロセスデータエレメントＤ１〜Ｄ８間で、量および方向に関して、比較に応じておよびベクトル内のプロセスデータエレメントの位置に応じて、交換される。ステップＳ２におけるビットの交換は、変更データエレメントＤｍ１〜Ｄｍ８のベクトルを生じる。
【００３６】
この第２のステップＳ２において、データエレメントＤｊのｊ＊２ｍｏｄ８ビットが、後続のデータエレメントＤｊ＋１に転送される。例えば２ビットが、第１のプロセスデータエレメントＤ１から、第２のプロセスデータエレメントＤ２に転送され、４ビットが、第２のプロセスデータエレメントＤ２から、第３のプロセスデータエレメントに転送される。ゼロ（０）ビットが、第４のプロセスデータエレメントから、第５のプロセスデータエレメントに転送される。
【００３７】
結果として生じる変更データエレメントＤｍ１〜Ｄｍ８は、８ビットを有する、例えばＤｍ１、Ｄｍ２、または１６ビットを有する、例えばＤｍ８のどちらかである。
【００３８】
図示の実施形態において、交換のステップＳ２は、３つのサブステップで実行される。
Ｓ２ａ：転送されるべきビットを、補助レジスタＲ２に格納し、
Ｓ２ｂ：転送されるべきでないビットを回転させ、
Ｓ２ｃ：回転されたビットを、転送されたビットとマージする。
【００３９】
ステップＳ３において、結果として生じるベクトルＤｍ１〜Ｄｍ８内のｋ連続ビット（ここでｋ＝８）の群がシャッフルされる。従って、変更データエレメントを格納するために用いられる、レジスタエレメントＲ１１〜Ｒ１５の各々は、１６ビットのデータを備えるとともに、１６ビットのデータで完全に占有される。
【００４０】
ステップＳ３において、データは、以下の表に従ってシャッフルされる。データ元が、左列に示されているとともに、宛先が、表の第２の列に示されている。表内でＲ１ｓＬおよびＲ１ｓＲは、レジスタエレメントＲ１ｓの左右の８ビットずつを表わす。
【００４１】
【表１】
0005435241.tif 000002
【００４２】
そしてステップＳ４において、変更データエレメントの、結果として生じるシャッフルされたベクトルＶｓが、第２のデータエレメントのベクトルとして、メモリＭに格納される。
【００４３】
シャッフルされたベクトルは、メモリバンクの数より少ない数のレジスタエレメントを占有しているため、メモリＭ内のベクトルの整列は、新たなシャッフルされたベクトルＶｓが格納される度に、シフトする必要がある。その結果、次のシャッフルされたベクトルＶｓの格納Ｓ４は、２つのサブステップＳ４ａ、Ｓ４ｂとして実行される。サブステップＳ４ａにおいて、シャッフルされたベクトルＶｓは、必要な数のデータユニットｋ、例えば８ビットのデータユニットだけ回転されて、部分Ｖｒ１、Ｖｒ２を有する回転ベクトルが得られる。後続のサブステップＳ４ｂにおいて、回転ベクトルＶｒ１＋Ｖｒ２が、メモリに書き込まれる。ステップＳ４ｂの書き込みは、圧縮データにより書き込まれる予定の領域以外のメモリロケーションを上書きしないように、マスクモードで行うことができる。ステップＳ４は、ステップＳ３と統合して、単一のシャッフル／回転演算にすることができる。
【００４４】
図５は、ベクトルをロードする、つまりベクトルを、ベクトルメモリから特定のレジスタに移動させる方法を概略的に示す。図６は、図５による方法を実行する様々な段階における、データの構造を示す。ベクトルは、メモリロケーションＭ１、…、Ｍ５に格納されている、格納データエレメントＤｓ１、…、Ｄｓ５を備える。格納データエレメントは、メモリロケーションのサイズ、例えば１６ビット、と同等のｍビットのサイズを有するとともに、データは、ｎビットのサイズを有するプロセスデータのベクトルとして、レジスタファイルに格納されなければならず、ここでｍ＞ｎである。図示の実施形態において、ｎは１０ビットである。方法は、以下のステップを備える。
【００４５】
ステップＳ１１において、格納データエレメントＤｓ１〜Ｄｓ５のベクトルは、メモリＭから検索される。それらの格納データエレメントが、１つのメモリラインに格納されているか、２つのメモリラインに格納されているかに応じて、ベクトルは、１つまたは２つのメモリサイクルで検索されるとともに、１つまたは２つのレジスタ（ＲＳ１、ＲＳ２）に格納される。例に示すように、データエレメントが、２つのメモリラインに格納されている場合（選択肢２）、追加ステップＳ１２が実行され、すべてのデータが、単一のレジスタ、ここではＲＳ１に統合される。ステップＳ１２の後で、または選択肢１の場合ステップＳ１１の直後に、データが、レジスタＲ１内に整列しているかが確認される。
【００４６】
検索されたデータが、レジスタ内に整列している場合には、（選択肢Ｙ）制御フローは、ステップＳ１４を続ける。さもなければ、整列を得るために、まず整列ステップ（Ｓ１３）が、実行される。
【００４７】
ステップＳ１４においてシャッフリングが、適用されて、２つ以上の群のｋ連続ビット（例えば８）が、その全体で交換されて、シャッフルされたベクトルになる。
【００４８】
ステップＳ１３（Ｄｓ１３）およびＳ１４（Ｄｓ１４）の結果が、以下の表に図示されている。
【００４９】
【表２】
0005435241.tif 000003
【００５０】
ステップ１３およびＳ１４を、単一のシャッフルステップに統合することができる。
【００５１】
続いてステップＳ１５において、ビットが、シャッフルされたベクトル内の連続する第２のデータエレメントの組間で、量および方向に関して、ｍおよびｎの値に応じて、およびシャッフルされたベクトル内の第２のデータエレメントの位置に応じて、交換される。交換は、プロセスデータエレメントを表わす変更データエレメントのベクトルを生じる。
【００５２】
交換されるべきビットの数は、以下の表に概略的に図示されている。この表でＤＰｉ，ｉ＋１は、データレーンを示し、それらの間でデータが交換されるとともに、Ｎｉ，ｉ＋１は、交換されるビットの数を示す。正の符号は、ビットが、データレーンＤＰｉからＤＰｉ＋１へ交換されることを示すとともに、負の符号は、その反対方向を示す。
【００５３】
【表３】
0005435241.tif 000004
【００５４】
連続するレジスタエレメントＲ１１〜Ｒ１８に格納されているデータエレメント間で、データを交換するために、別の選択肢が、可能である。どのような選択肢が利用可能であるかも、シャッフルファシリティＳＦにより扱われるデータユニットのサイズｋによる。まず、サイズｋが、メモリロケーションのサイズに相当すると仮定する。
【００５５】
１つの選択肢は、多数のビットを次のデータエレメントに貸すことである（貸出法）。このステップは、メモリＭ内の格納位置のビット数と同等のビット数を有するデータエレメントが得られるまで、以下のワードにより繰り返すことができる。
【００５６】
この方法は、以下の手順により記述することができる。
【００５７】
ｎｌｅｎｄ＝ｎ
Ｆｏｒ  Ｉｅｌ＝２  ｔｏ  Ｎｅｌ
ｉｆ（ｎｌｅｎｄ＋ｎ）≦ｍ  ｔｈｅｎ
ａｄｄ  データエレメントＩｅｌ−１のｎｌｅｎｄビット  ｔｏ  データエレメントＩｅｌ
ｎｌｅｎｄ＝ｎｌｅｎｄ＋ｎ
ｅｌｓｅ
ｎｌｅｎｄ＝０
ｅｎｄｉｆ
ｎｅｘｔ
【００５８】
例えば、４ビットのサイズｎを有するプロセスデータエレメントのベクトルと、１６ビットのサイズを有するロケーションを有するメモリとを考えると、第１のプロセスデータエレメントは、４ビットを第２のプロセスデータエレメントに貸し、第２のプロセスデータエレメントは、８ビットを第３のプロセスデータエレメントに貸し、さらに第３のプロセスデータエレメントは、１２ビットを第４のプロセスデータエレメントに貸す。この手順は、４ビットを第６のプロセスデータエレメントに貸す等、第５のプロセスデータエレメントで繰り返す。ここで各第４のプロセスデータエレメントは、１６ビットのデータを備える一方で、他のデータエレメントの内容は、余分になっている。その後シャッフリングユニットは、１６ビットのデータを備えるデータエレメントを、連続的に再配列することができるとともに、結果として生じる再配列シーケンスが、メモリに格納することができ、１００％の格納効率をもたらす。
【００５９】
格納効率を向上させるために、メモリロケーションのサイズｍは、プロセスデータエレメント内の複数のビット数であることが好ましいが、必須ではない。例えば数ｎ＝５と仮定する。以上の手順を適用することにより、各第３のプロセスデータエレメントは、１５関連ビットを備える。連続するレジスタエレメント内の、これらの第３のプロセスデータエレメントを、シャッフリングユニットを用いて再構成することにより、関連データを、３１％ではなく９３％の効率で格納することができる。さらに必要とされるデータラインは、２つの連続するレジスタエレメント間で、データをシフトさせるもののみである。
【００６０】
１つの選択肢は、多数のビットを、次のプロセスデータエレメントから借りることである（借入法）。上記の例において、これは、第１のプロセスデータエレメントの場合、ビットの数が、第２のプロセスデータエレメントからの６ビットを用いて、１６ビットで完成することを意味する。第２のプロセスデータエレメントは、ここで４ビットを有するとともに、ビット数は、第３のプロセスデータエレメントからの４ビットを用いて、８で完成する。ここで６ビットを有する第３のプロセスデータエレメントは、第４のプロセスデータエレメントからの２ビットで完成する等。
【００６１】
より一般的な場合、アルゴリズムを、以下のように記述することができる。
【００６２】
ｎｒｅｍ＝ｎ
Ｆｏｒ  Ｉｅｌ＝１  ｔｏ  Ｎｅｌ−１、“Ｆｏｒ  ベクトル内の全プロセスデータエレメント
ｉｆ  ｎｒｅｍ＝ｋ“借りない”
ｅｌｓｅ
ｉｆ  ｎｒｅｍ＜ｋ  ｔｈｅｎ
ａｄｄ  プロセスデータエレメントＩｅｌ＋１のｋ−ｎｒｅｍビット  ｔｏ  プロセスデータエレメントＩｅｌ
ｎｒｅｍ＝ｎｒｅｍ＋ｎ−ｋ
ｅｌｓｅ
ａｄｄ  プロセスデータエレメントＩｅｌ＋１のｍ−ｎｒｅｍビット  ｔｏ  プロセスデータエレメントＩｅｌ
ｎｒｅｍ＝ｎ−（ｍ−ｎｒｅｍ）
ｅｎｆ  ｉｆ
Ｅｎｄ  Ｆｏｒ
【００６３】
プロセスデータエレメント内のビット数が、メモリ内の格納位置のサイズより小さいが、シャッフルユニットにより扱われる細分性ｋより大きい場合には、「貸出法」を用いてもよく、プロセスデータエレメント内の余分ビット数が、次のプロセスデータエレメントに持ち越される。
【００６４】
例えば、各プロセスデータエレメント内のビット数ｎが、１０であり、シャッフルユニットにより扱われるサイズｋが、８ビットであり、さらにメモリロケーションのサイズｍが、１６ビットであるとすると、第１のプロセスデータエレメントは、２ビットを、次のプロセスデータエレメントに貸す。ここで１２ビットを有する第２のプロセスデータエレメントは、４ビットを、第３のプロセスデータエレメントに貸す等。より一般的な場合、アルゴリズムを、以下のように記述することができる。
【００６５】
ｎｒｅｍ＝ｎ−ｋ（次のプロセスデータエレメントに持ち越されるビット数）
Ｆｏｒ  Ｉｅｌ＝２  ｔｏ  Ｎｅｌ（Ｆｏｒ  ベクトル内の全プロセスデータエレメント）
ａｄｄ  プロセスデータエレメントＩｅｌ−１のｎｒｅｍビット  ｔｏ  データエレメントＩｅｌ
ｎｓｕｍ＝ｎ＋ｎｒｅｍ
ｉｆ  ｎｓｕｍ＝ｍ  ｔｈｅｎ  ｎｒｅｍ＝０
ｅｌｓｅ  ｎｒｅｍ＝ｎｓｕｍ−ｋ
Ｅｎｄ  Ｆｏｒ
【００６６】
第１のベクトルのプロセスデータエレメント内のビット数は、ｋより小さく、例えばｎ＝６およびｋ＝８でもよい。貸出法によれば、第１のプロセスデータエレメントの多数の６ビットが、次のプロセスデータエレメントに貸し出される。第２のプロセスデータエレメントは、ここで１２ビットを有するとともに、４ビットを第３のプロセスデータエレメントに貸す等。
【００６７】
より一般的な場合、アルゴリズムを、以下のように記述することができる。
【００６８】
ｎｒｅｍ＝ｎ
Ｆｏｒ  Ｉｅｌ＝１  ｔｏ  Ｎｅｌ−１、“Ｆｏｒ  ベクトル内の全プロセスデータエレメント
プロセスデータエレメントＩｅｌ−１のｎｒｅｍビット  ｔｏ  データエレメントＩｅｌ
ｉｆ  （ｎｒｅｍ＋ｎ）＞ｋ  ｔｈｅｎ
ｎｒｅｍ＝ｎｒｅｍ＋ｎ−ｋ
ｅｌｓｅ
ｎｒｅｍ＝ｎｒｅｍ＋ｎ
ｅｎｄｉｆ
Ｅｎｄ  Ｆｏｒ
【００６９】
プロセスデータエレメントのビットを、隣のプロセスデーエレメントに加える際、ビットが、連続配置される限り、結果として生じるビット群は、任意に配列されてもよいとともに、配列は、データをメモリからロードするために用いられるアルゴリズムと一致している。
【００７０】
本発明の場合、ロケーションが、メモリ内にどのように配置されているかは関係ない。ロケーションは、例えば連続的に配置されてもよい。しかし、ロケーションが、並行してアクセス可能である場合には、高速アクセスが、可能である。
【００７１】
本発明の保護範囲は、本明細書に記載されている実施形態に限定されないことを、注記する。システムの一部は、ハードウェア、ソフトウェアまたはそれらの組み合わせで実施されてもよい。どれも、特許請求の範囲の参照番号により限定される、本発明の保護範囲ではない。単語「備える」は、請求項に述べられたもの以外の部分を除外するものではない。要素の前の単語「１つの（ａ（ｎ））」は、複数のそれらの要素を除外するものではない。本発明の部分を形成する手段は、専用ハードウェアの形状、またはプログラムされた汎用プロセッサの形状のいずれで実施されてもよい。本発明は、各新規の特徴、または特徴の組み合わせにある。
【図１】
0005435241.tif 000005
【図２】
0005435241.tif 000006
【図３】
0005435241.tif 000007
【図４】
0005435241.tif 000008
【図５】
0005435241.tif 000009
【図６】
0005435241.tif 000010