JP2010525442A - データ格納方法、データロード方法およびシグナルプロセッサ - Google Patents

データ格納方法、データロード方法およびシグナルプロセッサ Download PDF

Info

Publication number
JP2010525442A
JP2010525442A JP2010503635A JP2010503635A JP2010525442A JP 2010525442 A JP2010525442 A JP 2010525442A JP 2010503635 A JP2010503635 A JP 2010503635A JP 2010503635 A JP2010503635 A JP 2010503635A JP 2010525442 A JP2010525442 A JP 2010525442A
Authority
JP
Japan
Prior art keywords
vector
bits
memory
data elements
data
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.)
Granted
Application number
JP2010503635A
Other languages
English (en)
Other versions
JP5435241B2 (ja
Inventor
コルネリス、ハー.ファン、ベルケル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NXP BV
Original Assignee
NXP BV
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 NXP BV filed Critical NXP BV
Publication of JP2010525442A publication Critical patent/JP2010525442A/ja
Application granted granted Critical
Publication of JP5435241B2 publication Critical patent/JP5435241B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)

Abstract

nビットのサイズを有するプロセスデータエレメント(D1、…、D8)のベクトルを、レジスタファイル(RF)からメモリ(M)へ格納する方法が、記載されている。メモリは、格納データエレメントのベクトルを、mビットのサイズを有するロケーション(M1、、…、M5)に格納するように構成されており、m>nである。方法は、ビットを、相互に連続するレジスタエレメントに格納されている、ベクトル内のプロセスデータエレメント間で交換し(S2)、交換が、変更データエレメント(Dm1、…、Dm8)のベクトルを生じるステップと、結果として生じるベクトル内のk連続ビットの群をシャッフルする(S3)ステップと、結果として生じる、変更データエレメントのシャッフルされたベクトルを、格納データエレメントのベクトルとして、メモリ(M)に格納する(S4)ステップと、を備える。

Description

本発明は、データ格納方法に関する。
本発明は、さらにデータロード方法に関する。
本発明は、さらにまたシグナルプロセッサに関する。
例えば音声および映像処理のための信号処理は、通常、同じ指示が、ベクトルの複数のデータエレメントに対して繰り返されることを必要とする。このようなプロセッサの例、ここではSIMDプロセッサが、図1に示されている。図示のSIMDプロセッサは、ベクトルメモリMと、レジスタファイルRFと、複数の機能ユニットFU1、…、FUnとを備える。
SIMDプロセッサは、VLIW命令の格納用の命令メモリPMと、命令メモリに結合されたVLIWコントローラCTRLと、メモリ用のアドレスユニットACU+とをさらに有する。
メモリMは、各々mビットのPワードを備える、複数のベクトル用の格納能力を有する。例えばP=8およびm=16である。機能ユニットFUは、データのロードおよび格納、乗算、ならびに多重蓄積演算など、レジスタファイルに格納されたデータに対する、多数の演算を並行してサポートする。
ロードベクトル演算は、ベクトルを、SIMDメモリMからレジスタファイルRFに移動させる。格納ベクトル演算は、ベクトルを、レジスタファイルRFからSIMDメモリMに移動させる。
SIMDプロセッサにおいて、レジスタファイル+機能ユニットの組み合わせは、P平行メモリバンクを有するメモリと通信する、P平行データレーンと考えられる。いわゆるベクトル間演算の場合、基本演算が、各レーンにおいて局所的にP回適用される。いわゆるベクトル内演算は、単一ベクトルのPエレメントに対して作用し、そのためPレーンにわたり作用する。Pレーンの各々は、それぞれのメモリバンクに結合されている。
信号処理アプリケーションにより用いられる、データエレメントのワードサイズ(プロセスデータエレメント)は、デジタル・シグナル・プロセッサ(DSP)のメモリロケーションのワードサイズにあまり一致していないことが多い。例えば通常のメモリワードサイズは、16ビットである。しかしDVB−Tレシーバの内部遅延ラインは、10ビットの48kサンプルの能力を有する(48k=10ビットの2ワードの8複合サンプルの3フレーム)。これをプログラマブルDSPのメモリにマッピングすることは、16ビット格納位置への、10ビットデータエレメントのマッピングを意味する。そのためこの遅延ラインの全体メモリ要件は、480kビットから768kビットに増大する[60%アップ!]。
理想的には、メモリに格納されるべきデータエレメント(格納データエレメント)が、メモリ格納位置のサイズと同等のサイズを有するように、この過度なメモリ要件は、データの圧縮により回避されるべきである。
圧縮されたメモリフォーマット自体は、新しくはない。しかしそれらの実施は、SIMD装置の場合には、特別な挑戦を課す。一例として、これは、16ビットのサイズを有するP=8ワードのベクトルを処理する、SIMDを参照して説明される。いわゆるベクトルメモリは、P×16ビットのラインの物理メモリである。
メモリに格納された16ビットの5つの圧縮されたデータエレメント(格納データエレメント)からの、10ビットのP=8データエレメントのロード演算を実行するための、概念的に単純な解決法は、マルチプレクサを導入して、整列したベクトルをPレーンにわたって広げることであろう。同様に、メモリ内の16ビットの5つの圧縮されたデータエレメントとして、10ビットのP=8データエレメントの格納演算を、そのようなマルチプレクサで実現することもできる。しかしこれは、レーン境界を横切る、およそ10ワイヤの最大Pセットを意味することになる。なお多数のデータエレメントサイズに対する圧縮が、サポートされなければならない場合(例えば10および12ビットの両方)、このようなマルチプレクサが、ロード演算および格納演算の両方に対して、サイズ毎に必要とされる。(そしてこれは、圧縮および非圧縮ベクトルの両方が、整列される場合しかサポートしないことになり、さらなる回転演算を必要とする。)SIMD装置のVLSIレイアウトは、既にワイヤ制限されているため、これは相当な面積およびパワーペナルティを意味することになる。
本発明の目的は、複雑なさらなるデータラインを必要とせずに、より効率的なデータの格納を可能にする、データ格納方法を提供することである。
本発明のさらなる目的は、複雑なさらなるデータラインを必要とせずに、格納される前に有していた元のフォーマットで、データの再構築を可能にする、データロード方法を提供することである。
本発明のさらなる目的は、複雑なさらなるデータラインを必要とせずに、より効率的なデータ格納を可能にする、データ処理装置を提供することである。
本発明のさらなる目的は、複雑なさらなるデータラインを必要とせずに、格納される前に有していた元のフォーマットで、データのロードおよび再構築を可能にする、データ処理装置を提供することである。
本発明によれば、nビットのサイズを有するデータエレメントのベクトルを、レジスタファイルからメモリへ格納する方法であって、メモリは、格納データエレメントのベクトルを、mビットのサイズを有する位置に格納するように構成されており、m>nである、方法であって、
ビットを、相互に連続するレジスタファイルエレメントに格納されている、ベクトル内のプロセスデータエレメント間で交換するステップであって、交換するステップが、変更データエレメントのベクトルを生じるステップと、
結果として生じるベクトル内のk連続ビットの群をシャッフルするステップと、
結果として生じる、変更データエレメントのシャッフルされたベクトルを、格納データエレメントのベクトルとして、メモリに格納するステップと、
を備えることを特徴とする方法が、提供される。
一方で、本発明による格納方法は、データエレメント内のデータを、メモリ内の格納位置のサイズと適正に一致するように、再配置することにより、メモリを効率的に用いる。他方で、本発明による方法は、データレーンを跨ぐ余分な配線を必要としない。それは、比較的大きい細分性でデータをシャッフルするだけの、シャッフリングファシリティを再利用するとともに、データを、相互に隣接するビットレーン間で交換する、というこの目的に十分である。
シャッフル演算は、いくつかのSIMDプロセッサでは既にサポートされている。シャッフルは、2つのソースベクトルsおよびp、ならびに1つのターゲットベクトルtを有する。インデックスiを用いて、0≦i<Pとすると、この演算は、全iに対してt[i]=s[p[i]]によって特定することができる。言葉にすると、ターゲットベクトルtのエレメントiは、インデックスp[i]により特定される、sからのエレメントのコピーである。
シャッフル演算のプロパティは、
1. r個分の位置のベクトル回転で、−P<r<Pは、シャッフルの特殊な場合である。
2. 他のシャッフルの結果に対して続くシャッフルは、単一のシャッフル演算に削減できる。特に、回転+シャッフルを、単一のシャッフルに統合することができる。
同様に、本発明による方法が、提供され、メモリのmビットのサイズを有するメモリロケーションに格納されている、格納データエレメントのベクトルを、nビットのサイズを有するプロセスデータエレメントのベクトルとして、レジスタファイルへロードする方法であって、m>nである、方法において、
格納データエレメントのベクトルを、メモリから検索するステップと、
k連続ビットの2つ以上の群が、それらの全体で交換されて、シャッフルされたベクトルを生じる、シャッフリングを適用するステップと、
ビットを、連続するレジスタエレメントに格納されている、シャッフルされたベクトル内のデータエレメントの組間で交換し、交換が、変更データエレメントのベクトルを生じるステップと、
を備えることを特徴とする。
本発明の目的によれば、デジタルシグナルプロセッサは、
1つまたは複数の機能ユニットと、
少なくともプロセスデータエレメントのベクトルを格納するための、第1の複数のレジスタエレメントを備えるレジスタファイルであって、前記プロセスデータエレメントのベクトルは、nビットサイズを有する、レジスタファイルと、
少なくとも1つのベクトルを、mビットのサイズを有する複数のメモリロケーションに格納するためのメモリであって、m>nである、メモリと、
ベクトルのkビットのサイズを有するデータエレメントをシャッフルするための、シャッフルユニットと、
ビットを、ベクトルの相互に連続するデータエレメント間で交換するための、交換ファシリティと、
を備えることを特徴とする。
これらおよび他の態様は、図面を参照してより詳細に説明される。
図1は、従来のベクトルプロセッサを示す。 図2は、本発明によるベクトルプロセッサを示す。 図3は、本発明による第1の方法を概略的に示す。 図4は、図3による方法を実行する様々な段階における、データの構造を概略的に示す。 図5は、本発明による第2の方法を概略的に示す。 図6は、図5による方法を実行する様々な段階における、データの構造を概略的に示す。
本発明の以下の詳細な説明において、多数の具体的な詳細が、本発明の十分な理解を提供するために記載されている。しかし本発明は、これらの具体的な詳細なしに実践されてもよい。他の例において、本発明の態様を不必要に分かりにくくしないように、周知の方法、手順及び/又は構成要素は、詳細に説明されてはいない。
図2は、本発明によるベクトルプロセッサを概略的に示す。ベクトルプロセッサは、レジスタファイルRFに結合された、複数の機能ユニットFU1、…FUnを備える。レジスタファイルは、レジスタR1、R2、R3のセットを有する。各レジスタは、それぞれのレジスタエレメントR11、…、R18内に、データエレメントを有するベクトルを格納可能である。
ベクトルエレメントは、レジスタエレメントのサイズ、例えば16ビットより小さいnビット、例えば10または12のサイズを有する。
レジスタファイルは、複数の交換ユニットEF1、…、FE8を備える交換ファシリティEFへの、平行データレーンDP11、…、DP18を有する、第1のデータ経路DP1と結合されている。各交換ユニットEFjは、その隣の交換ユニットと、データビットを交換可能である。交換ユニットEFjは、平行データレーンDP21、…、DP28を有する第2のデータ経路DP2を介して、シャッフルユニットSFに結合されている。
m番目のデータ経路のn番目のデータレーンは、DPmnと示される。データレーンも、概してDLiと示される。
交換ファシリティEFは、所定のパターンに従って、連続するレジスタエレメント間で、データエレメントを交換するように構成されていてもよい。例えば、10ビットのサイズを有するプロセスデータエレメントを圧縮する際、単一のタイプのプロセスデータを圧縮しなければならない場合には、このような交換ファシリティが適している。しかし好適な実施形態において、交換ファシリティは、制御可能である。このようにして、多数のm値を、サポートすることができる。
次に、シャッフルユニットSFは、データレーンDP31、…、DP38を有するデータ経路DP3を介して、メモリMと結合されている。各データレーンDP31、…、DP38は、それぞれのメモリバンクと結合されている。メモリMは、mビットのサイズを有する複数のメモリロケーションに、少なくとも1つのベクトルを格納可能であり、ここでm>nである。例えばm=16。
シャッフルユニットSFは、ベクトルのkビットのサイズを有するデータエレメントをシャッフル可能である。
図3は、第1のプロセスデータエレメントD1、D2、…、D8のベクトルをメモリに格納する、本発明による方法を概略的に示す。ベクトルを格納するとは、特定のレジスタから、ベクトルメモリ内の特定の位置に、ベクトルを移動させることを意味する。図4は、図3による方法を実行する様々な段階における、データの構造を示す。図示の実施形態において、n=10ビットのサイズを有するプロセスデータエレメントが、レジスタファイルRFのレジスタR1のそれぞれのレジスタエレメントR11、…、R18内に、一時的に存在する。レジスタエレメントのサイズは、16ビットである。メモリMは、ベクトルの格納データエレメントを、ロケーションM1、…、M5に格納するように構成されている。メモリのロケーションM1、…、M5は、第1のデータエレメントD1、…、D8のサイズnより大きいサイズmを有する。この場合m=16ビット。
方法は、以下のステップを備える。
第1のステップS1において、プロセスデータエレメントD1〜D8のサイズnが、メモリロケーションM1〜M5のサイズmと比較される。プロセスデータエレメントのサイズが、常に同じである場合には、このステップは不要であり、この比較の結果は、あらかじめに分かっている。
第2のステップS2において、ビットが、ベクトル内の相互に連続するプロセスデータエレメントD1〜D8間で、量および方向に関して、比較に応じておよびベクトル内のプロセスデータエレメントの位置に応じて、交換される。ステップS2におけるビットの交換は、変更データエレメントDm1〜Dm8のベクトルを生じる。
この第2のステップS2において、データエレメントDjのj*2mod8ビットが、後続のデータエレメントDj+1に転送される。例えば2ビットが、第1のプロセスデータエレメントD1から、第2のプロセスデータエレメントD2に転送され、4ビットが、第2のプロセスデータエレメントD2から、第3のプロセスデータエレメントに転送される。ゼロ(0)ビットが、第4のプロセスデータエレメントから、第5のプロセスデータエレメントに転送される。
結果として生じる変更データエレメントDm1〜Dm8は、8ビットを有する、例えばDm1、Dm2、または16ビットを有する、例えばDm8のどちらかである。
図示の実施形態において、交換のステップS2は、3つのサブステップで実行される。
S2a:転送されるべきビットを、補助レジスタR2に格納し、
S2b:転送されるべきでないビットを回転させ、
S2c:回転されたビットを、転送されたビットとマージする。
ステップS3において、結果として生じるベクトルDm1〜Dm8内のk連続ビット(ここでk=8)の群がシャッフルされる。従って、変更データエレメントを格納するために用いられる、レジスタエレメントR11〜R15の各々は、16ビットのデータを備えるとともに、16ビットのデータで完全に占有される。
ステップS3において、データは、以下の表に従ってシャッフルされる。データ元が、左列に示されているとともに、宛先が、表の第2の列に示されている。表内でR1sおよびR1sは、レジスタエレメントR1sの左右の8ビットずつを表わす。
Figure 2010525442
そしてステップS4において、変更データエレメントの、結果として生じるシャッフルされたベクトルVsが、第2のデータエレメントのベクトルとして、メモリMに格納される。
シャッフルされたベクトルは、メモリバンクの数より少ない数のレジスタエレメントを占有しているため、メモリM内のベクトルの整列は、新たなシャッフルされたベクトルVsが格納される度に、シフトする必要がある。その結果、次のシャッフルされたベクトルVsの格納S4は、2つのサブステップS4a、S4bとして実行される。サブステップS4aにおいて、シャッフルされたベクトルVsは、必要な数のデータユニットk、例えば8ビットのデータユニットだけ回転されて、部分Vr1、Vr2を有する回転ベクトルが得られる。後続のサブステップS4bにおいて、回転ベクトルVr1+Vr2が、メモリに書き込まれる。ステップS4bの書き込みは、圧縮データにより書き込まれる予定の領域以外のメモリロケーションを上書きしないように、マスクモードで行うことができる。ステップS4は、ステップS3と統合して、単一のシャッフル/回転演算にすることができる。
図5は、ベクトルをロードする、つまりベクトルを、ベクトルメモリから特定のレジスタに移動させる方法を概略的に示す。図6は、図5による方法を実行する様々な段階における、データの構造を示す。ベクトルは、メモリロケーションM1、…、M5に格納されている、格納データエレメントDs1、…、Ds5を備える。格納データエレメントは、メモリロケーションのサイズ、例えば16ビット、と同等のmビットのサイズを有するとともに、データは、nビットのサイズを有するプロセスデータのベクトルとして、レジスタファイルに格納されなければならず、ここでm>nである。図示の実施形態において、nは10ビットである。方法は、以下のステップを備える。
ステップS11において、格納データエレメントDs1〜Ds5のベクトルは、メモリMから検索される。それらの格納データエレメントが、1つのメモリラインに格納されているか、2つのメモリラインに格納されているかに応じて、ベクトルは、1つまたは2つのメモリサイクルで検索されるとともに、1つまたは2つのレジスタ(RS1、RS2)に格納される。例に示すように、データエレメントが、2つのメモリラインに格納されている場合(選択肢2)、追加ステップS12が実行され、すべてのデータが、単一のレジスタ、ここではRS1に統合される。ステップS12の後で、または選択肢1の場合ステップS11の直後に、データが、レジスタR1内に整列しているかが確認される。
検索されたデータが、レジスタ内に整列している場合には、(選択肢Y)制御フローは、ステップS14を続ける。さもなければ、整列を得るために、まず整列ステップ(S13)が、実行される。
ステップS14においてシャッフリングが、適用されて、2つ以上の群のk連続ビット(例えば8)が、その全体で交換されて、シャッフルされたベクトルになる。
ステップS13(Ds13)およびS14(Ds14)の結果が、以下の表に図示されている。
Figure 2010525442
ステップ13およびS14を、単一のシャッフルステップに統合することができる。
続いてステップS15において、ビットが、シャッフルされたベクトル内の連続する第2のデータエレメントの組間で、量および方向に関して、mおよびnの値に応じて、およびシャッフルされたベクトル内の第2のデータエレメントの位置に応じて、交換される。交換は、プロセスデータエレメントを表わす変更データエレメントのベクトルを生じる。
交換されるべきビットの数は、以下の表に概略的に図示されている。この表でDPi,i+1は、データレーンを示し、それらの間でデータが交換されるとともに、Ni,i+1は、交換されるビットの数を示す。正の符号は、ビットが、データレーンDPiからDPi+1へ交換されることを示すとともに、負の符号は、その反対方向を示す。
Figure 2010525442
連続するレジスタエレメントR11〜R18に格納されているデータエレメント間で、データを交換するために、別の選択肢が、可能である。どのような選択肢が利用可能であるかも、シャッフルファシリティSFにより扱われるデータユニットのサイズkによる。まず、サイズkが、メモリロケーションのサイズに相当すると仮定する。
1つの選択肢は、多数のビットを次のデータエレメントに貸すことである(貸出法)。このステップは、メモリM内の格納位置のビット数と同等のビット数を有するデータエレメントが得られるまで、以下のワードにより繰り返すことができる。
この方法は、以下の手順により記述することができる。
nlend=n
For Iel=2 to Nel
if(nlend+n)≦m then
add データエレメントIel−1のnlendビット to データエレメントIel
nlend=nlend+n
else
nlend=0
endif
next
例えば、4ビットのサイズnを有するプロセスデータエレメントのベクトルと、16ビットのサイズを有するロケーションを有するメモリとを考えると、第1のプロセスデータエレメントは、4ビットを第2のプロセスデータエレメントに貸し、第2のプロセスデータエレメントは、8ビットを第3のプロセスデータエレメントに貸し、さらに第3のプロセスデータエレメントは、12ビットを第4のプロセスデータエレメントに貸す。この手順は、4ビットを第6のプロセスデータエレメントに貸す等、第5のプロセスデータエレメントで繰り返す。ここで各第4のプロセスデータエレメントは、16ビットのデータを備える一方で、他のデータエレメントの内容は、余分になっている。その後シャッフリングユニットは、16ビットのデータを備えるデータエレメントを、連続的に再配列することができるとともに、結果として生じる再配列シーケンスが、メモリに格納することができ、100%の格納効率をもたらす。
格納効率を向上させるために、メモリロケーションのサイズmは、プロセスデータエレメント内の複数のビット数であることが好ましいが、必須ではない。例えば数n=5と仮定する。以上の手順を適用することにより、各第3のプロセスデータエレメントは、15関連ビットを備える。連続するレジスタエレメント内の、これらの第3のプロセスデータエレメントを、シャッフリングユニットを用いて再構成することにより、関連データを、31%ではなく93%の効率で格納することができる。さらに必要とされるデータラインは、2つの連続するレジスタエレメント間で、データをシフトさせるもののみである。
1つの選択肢は、多数のビットを、次のプロセスデータエレメントから借りることである(借入法)。上記の例において、これは、第1のプロセスデータエレメントの場合、ビットの数が、第2のプロセスデータエレメントからの6ビットを用いて、16ビットで完成することを意味する。第2のプロセスデータエレメントは、ここで4ビットを有するとともに、ビット数は、第3のプロセスデータエレメントからの4ビットを用いて、8で完成する。ここで6ビットを有する第3のプロセスデータエレメントは、第4のプロセスデータエレメントからの2ビットで完成する等。
より一般的な場合、アルゴリズムを、以下のように記述することができる。
nrem=n
For Iel=1 to Nel−1、“For ベクトル内の全プロセスデータエレメント
if nrem=k“借りない”
else
if nrem<k then
add プロセスデータエレメントIel+1のk−nremビット to プロセスデータエレメントIel
nrem=nrem+n−k
else
add プロセスデータエレメントIel+1のm−nremビット to プロセスデータエレメントIel
nrem=n−(m−nrem)
enf if
End For
プロセスデータエレメント内のビット数が、メモリ内の格納位置のサイズより小さいが、シャッフルユニットにより扱われる細分性kより大きい場合には、「貸出法」を用いてもよく、プロセスデータエレメント内の余分ビット数が、次のプロセスデータエレメントに持ち越される。
例えば、各プロセスデータエレメント内のビット数nが、10であり、シャッフルユニットにより扱われるサイズkが、8ビットであり、さらにメモリロケーションのサイズmが、16ビットであるとすると、第1のプロセスデータエレメントは、2ビットを、次のプロセスデータエレメントに貸す。ここで12ビットを有する第2のプロセスデータエレメントは、4ビットを、第3のプロセスデータエレメントに貸す等。より一般的な場合、アルゴリズムを、以下のように記述することができる。
nrem=n−k(次のプロセスデータエレメントに持ち越されるビット数)
For Iel=2 to Nel(For ベクトル内の全プロセスデータエレメント)
add プロセスデータエレメントIel−1のnremビット to データエレメントIel
nsum=n+nrem
if nsum=m then nrem=0
else nrem=nsum−k
End For
第1のベクトルのプロセスデータエレメント内のビット数は、kより小さく、例えばn=6およびk=8でもよい。貸出法によれば、第1のプロセスデータエレメントの多数の6ビットが、次のプロセスデータエレメントに貸し出される。第2のプロセスデータエレメントは、ここで12ビットを有するとともに、4ビットを第3のプロセスデータエレメントに貸す等。
より一般的な場合、アルゴリズムを、以下のように記述することができる。
nrem=n
For Iel=1 to Nel−1、“For ベクトル内の全プロセスデータエレメント
プロセスデータエレメントIel−1のnremビット to データエレメントIel
if (nrem+n)>k then
nrem=nrem+n−k
else
nrem=nrem+n
endif
End For
プロセスデータエレメントのビットを、隣のプロセスデーエレメントに加える際、ビットが、連続配置される限り、結果として生じるビット群は、任意に配列されてもよいとともに、配列は、データをメモリからロードするために用いられるアルゴリズムと一致している。
本発明の場合、ロケーションが、メモリ内にどのように配置されているかは関係ない。ロケーションは、例えば連続的に配置されてもよい。しかし、ロケーションが、並行してアクセス可能である場合には、高速アクセスが、可能である。
本発明の保護範囲は、本明細書に記載されている実施形態に限定されないことを、注記する。システムの一部は、ハードウェア、ソフトウェアまたはそれらの組み合わせで実施されてもよい。どれも、特許請求の範囲の参照番号により限定される、本発明の保護範囲ではない。単語「備える」は、請求項に述べられたもの以外の部分を除外するものではない。要素の前の単語「1つの(a(n))」は、複数のそれらの要素を除外するものではない。本発明の部分を形成する手段は、専用ハードウェアの形状、またはプログラムされた汎用プロセッサの形状のいずれで実施されてもよい。本発明は、各新規の特徴、または特徴の組み合わせにある。

Claims (7)

  1. nビットのサイズを有するプロセスデータエレメントのベクトルを、レジスタファイルからメモリへ格納する方法であって、前記メモリは、格納データエレメントのベクトルを、mビットのサイズを有する位置に格納するように構成されており、m>nである、方法において、
    ビットを、相互に連続するレジスタエレメントに格納されている、前記ベクトル内のプロセスデータエレメント間で交換し、前記交換が、変更データエレメントのベクトルを生じるステップと、
    結果として生じるベクトル内のk連続ビットの群をシャッフルするステップと、
    結果として生じる、変更データエレメントのシャッフルされたベクトルを、格納データエレメントのベクトルとして、前記メモリに格納するステップと、
    を備えることを特徴とする方法。
  2. メモリのmビットのサイズを有するメモリロケーションに格納されている、格納データエレメントのベクトルを、nビットのサイズを有するプロセスデータエレメントのベクトルとして、レジスタファイルへロードする方法であって、m>nである、方法において、
    格納データエレメントのベクトルを、前記メモリから検索するステップと、
    k連続ビットの2つ以上の群が、それらの全体で交換されて、シャッフルされたベクトルを生じる、シャッフリングを適用するステップと、
    ビットを、連続するレジスタエレメントに格納されている、シャッフルされたベクトル内のデータエレメントの組間で交換し、前記交換が、変更データエレメントのベクトルを生じるステップと、
    を備えることを特徴とする方法。
  3. デジタルシグナルプロセッサであって、
    1つまたは複数の機能ユニットと、
    少なくともプロセスデータエレメントのベクトルを格納するための、第1の複数のレジスタエレメントを備える、レジスタファイルであって、前記プロセスデータエレメントのベクトルは、nビットサイズを有する、レジスタファイルと、
    少なくとも1つのベクトルを、mビットのサイズを有する複数のメモリロケーションに格納するためのメモリであって、m>nである、メモリと、
    ベクトルのkビットのサイズを有するデータエレメントをシャッフルするための、シャッフルファシリティと、
    ビットを、ベクトルの相互に連続するデータエレメント間で交換するための交換ファシリティと、
    を備えることを特徴とするデジタルシグナルプロセッサ。
  4. m=p×kであり、pは正の整数である、ことを特徴とする請求項3に記載のデジタルシグナルプロセッサ。
  5. 前記交換ファシリティは、データを交換するための固定ビットパッドを備える、ことを特徴とする請求項4に記載のデジタルシグナルプロセッサ。
  6. 前記交換ファシリティは、制御可能である、ことを特徴とする請求項4に記載のデジタルシグナルプロセッサ。
  7. 前記シャッフルユニットは、さらに、データをメモリからロードする際に、データを整列させるために、または、データをメモリから検索する際に、データを回転させるために用いられる、ことを特徴とする請求項4に記載のデジタルシグナルプロセッサ。
JP2010503635A 2007-04-16 2008-04-11 データ格納方法、データロード方法およびシグナルプロセッサ Expired - Fee Related JP5435241B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP07106203 2007-04-16
EP07106203.8 2007-04-16
PCT/IB2008/051388 WO2008126041A1 (en) 2007-04-16 2008-04-11 Method of storing data, method of loading data and signal processor

Publications (2)

Publication Number Publication Date
JP2010525442A true JP2010525442A (ja) 2010-07-22
JP5435241B2 JP5435241B2 (ja) 2014-03-05

Family

ID=39556993

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010503635A Expired - Fee Related JP5435241B2 (ja) 2007-04-16 2008-04-11 データ格納方法、データロード方法およびシグナルプロセッサ

Country Status (5)

Country Link
US (1) US8489825B2 (ja)
EP (1) EP2147369B1 (ja)
JP (1) JP5435241B2 (ja)
AT (1) ATE523840T1 (ja)
WO (1) WO2008126041A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012137839A (ja) * 2010-12-24 2012-07-19 Fujitsu Ltd メモリ制御装置、及びメモリ制御方法
JP2017508201A (ja) * 2014-01-31 2017-03-23 クゥアルコム・インコーポレイテッドQualcomm Incorporated ベクトルプロセッサにおけるロード/ストア演算中のフォーマット変換

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9218182B2 (en) * 2012-06-29 2015-12-22 Intel Corporation Systems, apparatuses, and methods for performing a shuffle and operation (shuffle-op)
US9665483B2 (en) * 2013-09-30 2017-05-30 Alcatel Lucent Method and apparatus for bit-interleaving
JP6786948B2 (ja) * 2016-08-12 2020-11-18 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US20190272175A1 (en) * 2018-03-01 2019-09-05 Qualcomm Incorporated Single pack & unpack network and method for variable bit width data formats for computational machines
US10831965B1 (en) 2019-07-23 2020-11-10 International Business Machines Corporation Placement of vectorized latches in hierarchical integrated circuit development

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60186964A (ja) * 1984-03-05 1985-09-24 Hitachi Ltd ベクトル処理装置
JPS6162974A (ja) * 1984-09-05 1986-03-31 Hitachi Ltd ベクトルプロセツサ

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3700873A (en) * 1970-04-06 1972-10-24 Ibm Structured computer notation and system architecture utilizing same
JPH05143633A (ja) * 1991-11-22 1993-06-11 Nec Corp イソジオメトリツク形高速フーリエ変換実現方式
US5742840A (en) 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US6374376B1 (en) * 1998-09-03 2002-04-16 Micron Technology, Inc. Circuit, system and method for arranging data output by semiconductor testers to packet-based devices under test
EP1391086B1 (de) * 2001-03-15 2005-12-14 Robert Bosch GmbH Verfahren und vorrichtung zur erstellung eines zeitplans der übermittlung von nachrichten auf einem bussystem
IL145245A0 (en) * 2001-09-03 2002-06-30 Jtc 2000 Dev Delaware Inc System and method including vector-matrix multiplication
US6795003B2 (en) * 2003-01-30 2004-09-21 Broadcom Corporation Hardware-efficient implementation of dynamic element matching in sigma-delta DAC's
ATE372542T1 (de) * 2002-05-24 2007-09-15 Nxp Bv Zugriff zum breiten speicher
US20040122887A1 (en) * 2002-12-20 2004-06-24 Macy William W. Efficient multiplication of small matrices using SIMD registers
US20040120518A1 (en) * 2002-12-20 2004-06-24 Macy William W. Matrix multiplication for cryptographic processing
EP1794671A2 (en) 2004-09-21 2007-06-13 Koninklijke Philips Electronics N.V. Micro processor device and method for shuffle operations

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60186964A (ja) * 1984-03-05 1985-09-24 Hitachi Ltd ベクトル処理装置
JPS6162974A (ja) * 1984-09-05 1986-03-31 Hitachi Ltd ベクトルプロセツサ

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012137839A (ja) * 2010-12-24 2012-07-19 Fujitsu Ltd メモリ制御装置、及びメモリ制御方法
JP2017508201A (ja) * 2014-01-31 2017-03-23 クゥアルコム・インコーポレイテッドQualcomm Incorporated ベクトルプロセッサにおけるロード/ストア演算中のフォーマット変換

Also Published As

Publication number Publication date
JP5435241B2 (ja) 2014-03-05
ATE523840T1 (de) 2011-09-15
US20100211749A1 (en) 2010-08-19
EP2147369A1 (en) 2010-01-27
EP2147369B1 (en) 2011-09-07
WO2008126041A1 (en) 2008-10-23
US8489825B2 (en) 2013-07-16

Similar Documents

Publication Publication Date Title
JP5435241B2 (ja) データ格納方法、データロード方法およびシグナルプロセッサ
JP3891609B2 (ja) 並べ換え装置
TWI315034B (en) A data processing apparatus and method for moving data between registers and memory
TWI276972B (en) Efficient multiplication of small matrices using SIMD registers
US5812147A (en) Instruction methods for performing data formatting while moving data between memory and a vector register file
US8868885B2 (en) On-the-fly permutation of vector elements for executing successive elemental instructions
WO2014031129A1 (en) Systems and methods of data extraction in a vector processor
JP2012009055A (ja) 2次元マトリクス処理のためのレジスタ
US8078834B2 (en) Processor architectures for enhanced computational capability
US20100164972A1 (en) System, method and apparatus for memory with embedded associative section for computations
WO1999036852A1 (en) Digital signal processor having data alignment buffer for performing unaligned data accesses
JP2008513903A (ja) シャッフル演算のためのマイクロプロセッサデバイス及び方法
JPH03501787A (ja) データ並列処理装置
US6958718B2 (en) Table lookup operation within a data processing system
JPH03144783A (ja) 入出力システム
JPH07141175A (ja) アクティブメモリおよび処理方式
JP2005174296A (ja) Simdデータ処理システムにおけるエンディアンの補償
JP2005174298A (ja) “ベクトル×スカラ”演算
US20050125635A1 (en) Moving data between registers of different register data stores
WO2011097427A1 (en) Digital signal processor comprising a compute array with a recirculation path and corresponding method
JP2005174292A (ja) データシフト操作
US20140195776A1 (en) Memory access for a vector processor
JP3706633B2 (ja) 命令キャッシュを備えたプロセッサ
US20080162743A1 (en) Method and apparatus to select and modify elements of vectors
US20080158238A1 (en) Format conversion apparatus from band interleave format to band separate format

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110303

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130417

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131016

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: 20131105

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20131126

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131126

R150 Certificate of patent or registration of utility model

Ref document number: 5435241

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees