JP2015060256A - データ供給回路、演算処理回路、及びデータ供給方法 - Google Patents

データ供給回路、演算処理回路、及びデータ供給方法 Download PDF

Info

Publication number
JP2015060256A
JP2015060256A JP2013191570A JP2013191570A JP2015060256A JP 2015060256 A JP2015060256 A JP 2015060256A JP 2013191570 A JP2013191570 A JP 2013191570A JP 2013191570 A JP2013191570 A JP 2013191570A JP 2015060256 A JP2015060256 A JP 2015060256A
Authority
JP
Japan
Prior art keywords
data
width
circuit
unit
buffer
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.)
Withdrawn
Application number
JP2013191570A
Other languages
English (en)
Inventor
毅 葛
Ge Yi
毅 葛
一生 堀尾
Kazuo Horio
一生 堀尾
博 畑農
Hiroshi Hatano
博 畑農
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.)
Fujitsu Ltd
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Ltd
Fujitsu Semiconductor Ltd
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 Fujitsu Ltd, Fujitsu Semiconductor Ltd filed Critical Fujitsu Ltd
Priority to JP2013191570A priority Critical patent/JP2015060256A/ja
Priority to US14/474,711 priority patent/US20150081987A1/en
Publication of JP2015060256A publication Critical patent/JP2015060256A/ja
Withdrawn legal-status Critical Current

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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic 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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/3824Operand accessing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)
  • Image Processing (AREA)

Abstract

【課題】要求される演算処理に応じて、メモリから読み出したデータを効率よく演算部に供給する。
【解決手段】データ供給回路は、第1の幅のデータを複数個格納可能なバッファと、メモリに格納された所定処理対象データを読み出して1つ又は複数個の前記第1の幅のデータとして前記バッファに格納するメモリアクセスユニットと、前記バッファから前記第1の幅以下の第2の幅のデータを読み出す動作を、複数回繰り返すことにより、前記バッファから複数個の前記第2の幅のデータを隙間なく順番に読み出し、読み出し部分が前記処理対象データの終端に至ると前記処理対象データの始端から読み出しを継続する選択制御部とを含むことを特徴とする。
【選択図】図5

Description

本願開示は、データ供給回路、演算処理回路、及びデータ供給方法に関する。
無線通信信号処理においては行列演算が多く存在する。特に次世代の高速な無線通信信号処理の方式と期待されるLTE-Advancedにおいては、行列演算が全体の演算量に占める割合が大きい。従って、行列演算のような複雑な演算に適していない一般のCPU(Central Processing Unit)による処理だけでは、所望の処理時間内に所望の演算を処理することができない。
一般に、行列演算のような演算量が多い処理を高速に実行することが要求される場合、当該処理のための専用回路を設ける。しかし専用回路を設けたのでは、処理方式が少し変化しただけで対応できなくなってしまう。汎用性を考えた場合、行列演算のような配列データを扱うには、SIMD(Single Instruction Multiple Data)型アーキテクチャが適している。
一般に、SIMD型アーキテクチャでは、単位データとして例えば32ビットのスカラデータを扱う。例えばSIMD幅が4のシステムであれば、スカラデータを4つ並べた長さ4のベクトルを対象として、ベクトルの4つの要素のそれぞれを並列処理することにより、高速に演算を実行する。このようなSIMD型アーキテクチャでは、一般に、例えば単位データ長UL=32ビット、SIMD幅=4、データ処理幅P=128(=4×32)ビット等に固定されている。
単位データとして、スカラデータだけでなく、行列やベクトルも扱うことができるストリーム(配列)処理アーキテクチャのプロセッサが開発されている。またそのようなストリーム処理アーキテクチャのプロセッサにおいて、単位データ長やSIMD幅等を可変なパラメタとしたハードウェア構成とすることで、様々な単位データ長の命令を柔軟に定義できるようになる。このようなハードウェア構成では、単位データ長ULとSIMD幅とにより決まるデータ処理幅P=UL×SIMDが、演算命令により異なることになる。
特開平11−312085号公報 特開2008−77590号公報 特願2012−072237号 特願2012−066430号 特願2013−056569号
以上を鑑みると、要求される演算処理に応じて、メモリから読み出したデータを効率よく演算部に供給することが望まれる。
データ供給回路は、第1の幅のデータを複数個格納可能なバッファと、メモリに格納された所定処理対象データを読み出して1つ又は複数個の前記第1の幅のデータとして前記バッファに格納するメモリアクセスユニットと、前記バッファから前記第1の幅以下の第2の幅のデータを読み出す動作を、複数回繰り返すことにより、前記バッファから複数個の前記第2の幅のデータを隙間なく順番に読み出し、読み出し部分が前記処理対象データの終端に至ると前記処理対象データの始端から読み出しを継続する選択制御部とを含むことを特徴とする。
少なくとも1つの実施例によれば、、要求される演算処理に応じて、メモリから読み出したデータを効率よく演算部に供給することができる。
演算処理装置の構成の一例を示す図である。 演算処理回路の構成の一例を示す図である。 演算データパスによる演算の一例を示す図である。 演算データパスによる演算の一例を示す図である。 データ供給回路の構成の一例を示す図である。 図2及び図5に示す演算処理回路の動作の一例を示すフローチャートである。 メモリアクセスユニット及びデータ供給回路の処理を模式的に示す図である。 メモリアクセスユニット及びデータ供給回路の処理を模式的に示す図である。 選択制御部の構成の一例を示す図である。 制御回路による選択動作の一例を示す図である。 制御回路による選択動作の別の一例を示す図である。 制御回路による選択動作の更に別の一例を示す図である。 制御回路の構成の一例を示す図である。 SEL_WRAP回路の構成の一例を示す図である。 ADD_OFFSET回路の構成の一例を示す図である。 SLS≦Mの場合の各信号の生成ロジックを示した図である。 SLS>Mの場合の各信号の生成ロジックを示した図である。 制御回路の構成の別の一例を示す図である。 SLS_MODテーブルのデータの一例を示す図である。 演算処理回路の構成の別の一例を示す図である。
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
図1は、演算処理装置の構成の一例を示す図である。図1に示す例では、演算処理装置が、携帯電話のベースバンド処理LSI(Large Scale Integrated circuit)に適用されている。ベースバンド処理LSIである演算処理装置は、RF部10と、専用ハードウェア11と、DSP(Digital Signal Processor)12−1〜12−3とを備える。
図1及び以降の図において、各ボックスで示される各回路又は機能ブロックと他の回路又は機能ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。各回路又は機能ブロックは、他のブロックと物理的にある程度分離された1つのハードウェアモジュールであってもよいし、或いは他のブロックと物理的に一体となったハードウェアモジュール中の1つの機能を示したものであってもよい。
RF部10は、アンテナ14を介して受信された無線信号の周波数をダウンコンバートし、デジタル信号に変換してバス13に出力する。また、RF部10は、バス13に出力されたデジタル信号をアナログ信号に変換し、無線周波数にアップコンバートして、アンテナ14に出力する。
専用ハードウェア11は、例えば誤り訂正符号を扱うturbo、ビタビアルゴリズムを実行するviterbi、複数のアンテナでデータの送受信を行なうためのMIMO(Multi Input Multi Output)等を含む。
DSP12−1〜12−3の各々は、プロセッサ21と、プログラムメモリ35と、周辺回路23と、データメモリ30とを備える。プロセッサ21は、CPU25及び行列処理プロセッサ26を含む。DSP12−1〜12−3には、Searcher(同期)、Demodulator(復調)、Decoder(復号)、Codec(符号化)、Modulator(変調)等、無線通信信号処理の各要素処理が割り当てられる。
図2は、演算処理回路の構成の一例を示す図である。図2に示す演算処理回路は、図1に示す演算処理装置のうち、行列処理プロセッサ26、データメモリ30、及びプログラムメモリ(命令メモリ)35の部分に相当する。
演算処理回路は、データメモリ30、データ供給回路31、演算データパス(データ演算ユニット)32、データストア回路33、命令デコーダ34、及び命令メモリ35を含む。データ供給回路31は、データメモリ30に結合され、データメモリ30からデータを読み出す。演算データパス32は、データ供給回路31に結合され、データ供給回路31から供給されるデータに対する演算を実行する。データストア回路33は、演算データパス32とデータメモリ30とに結合され、演算データパス32から供給される演算結果データをデータメモリ30に書き込む。命令メモリ35には、複数の命令からなる命令列が格納されており、命令列の各命令が命令デコーダ34に順番に供給される。命令デコーダ34は、供給される各命令をデコードし、デコード結果に従いデータ供給回路31、演算データパス32、及びデータストア回路33を制御することで、データメモリ30へのアクセス及び演算データパス32による演算処理を実行する。
図3は、演算データパス32による演算の一例を示す図である。第1のソースデータsrc0及び第2のソースデータsrc1の各々は、2×2の行列である。これ以上は分解できない最小のデータの長さ、即ち単位データの長さは1shortであり、16ビットに等しい。行列の各要素は1shortであり、1つの2×2の実数行列は4shortで表現できる。また1つの2×2の複素数行列は8shortで表現できる。1つの行列を演算単位として考えるので、演算ユニット長ULは、2×2の実数行列の場合4shortであり、2×2の複素数行列の場合8shortである。
図3に示す例では、演算データパス32は、命令36のデコード結果に従い、行列同士の積を演算する(乗算を行う)。演算データパス32はSIMD型アーキテクチャであり、1つの命令による演算を複数のデータに対して実行する。例えば、第1のソースデータsrc0の4つの行列と第2のソースデータsrc1の4つの行列とを受け取り、それぞれの行列同士を乗算し、デスティネーションデータdstの4つの行列を演算結果として出力してよい。この場合の行列演算では、2つのソースデータそれぞれの1番目の行列同士を乗算するのと並行して、2番目の行列同士の乗算、3番目の行列同士の乗算、及び4番目の行列同士の乗算を実行する。このときSIMD幅は4である。即ち、SIMD幅は、並列に演算が実行される演算単位(この例では2×2の行列)の数に等しい。各演算サイクルでのデータ処理幅Pは、SIMD幅と演算ユニット長ULとの積に等しい。
演算データパス32では、SIMD幅と演算ユニット長ULとが可変設定可能であってよい。即ち、命令毎に異なるSIMD幅と演算ユニット長ULとの演算を行ってよい。
ソースデータのデータ長、即ち、演算対象となるソースデータの全体の長さを、ストリーム長SLSと呼ぶ。例えば、演算単位が2×2の実数行列(演算ユニット長UL=4short)であり、1000個の行列が演算対象となる場合、ストリーム長SLSは4000shortである。
図4は、演算データパス32による演算の一例を示す図である。図4において、図2と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。図4では、2つのデータ供給回路31と1つのデータストア回路33とを纏めてロードストアユニット38として示してある。図4に示されるように、データ供給回路31は、各ソースデータ(ソースオペランド)に対して1つずつ設けられる。第1のソースデータsrc0の全体データ数は1000行列であり、第2のソースデータsrc1の全体データ数は20行列である。またデスティネーションデータdstの全体データ数は1000行列である。
命令メモリ35(図2参照)からフェッチされた命令「opecode=mul」のデコード結果に従い、演算データパス32が、行列同士を乗算するように制御される。第1のソースデータsrc0のメモリ30中の開始アドレスはXであり、演算単位で数えた第1のソースデータsrc0のデータ長は1000行列である。これらを指定する命令コード「src0 addr=X」及び「src0 length=1000」が第1のデータ供給回路31に供給され、このデータ供給回路31がアドレスXから1000個の行列を順次読み出す。第2のソースデータsrc1のメモリ30中の開始アドレスはYであり、演算単位で数えた第2のソースデータsrc1のデータ長は20行列である。これらを指定する命令コード「src1 addr=Y」及び「src1 length=20」が第2のデータ供給回路31に供給され、このデータ供給回路31がアドレスYから20個の行列を順次読み出す。
デスティネーションデータdstのメモリ30中の格納開始アドレスはZであり、演算単位で数えたデスティネーションデータdstのデータ長は1000行列である。これらを指定する命令コード「dst addr=Z」及び「dst length=1000」がデータストア回路33に供給され、このデータストア回路33がアドレスZから1000個の行列を順次格納する。
デスティネーションデータdstのデータ長が1000行列、即ち演算出力のデータ長が1000行列であるので、1000個の行列を出力するまで、演算データパス32による行列演算が実行される。この際、第1のソースデータsrc0については、全体のデータ長1000行列が演算出力のデータ長に等しい。従って、第1のソースデータsrc0の先頭の行列データから終端の行列データまでを、データ供給回路31により順次読み出して、データ供給回路31から演算データパス32に供給すればよい。第2のソースデータsrc1については、全体のデータ長20行列が演算出力のデータ長よりも短い。従って、第2のソースデータsrc1の先頭の行列データから終端の行列データまでを、データ供給回路31により順次読み出すと、その後先頭の行列データに戻り、再度先頭の行列データから終端の行列データまでを、データ供給回路31により順次読み出す。このようにしてデータ供給回路31は、20個の行列を順番に読み出す動作を繰り返えし、読み出したデータを演算データパス32に供給する。第2のソースデータsrc1の読み出し動作の繰り返し数が50回に到達すると、読み出した行列数は20行列×50回で1000行列となり、読み出し動作が終了することになる。
なお例えば、第1のソースデータsrc0のデータ長が1000行列であり、第2のソースデータsrc1のデータ長が20行列であり、デスティネーションデータdstのデータ長が2000行列であってもよい。この場合、第1のソースデータsrc0の先頭の行列データから終端の行列データまでを順次読み出すと、その後先頭の行列データに戻り、再度先頭の行列データから終端の行列データまでを順次読み出すことになる。第1のソースデータsrc0の読み出し動作の繰り返し数が2回に到達すると、読み出した行列数は1000行列×2回で2000行列となり、読み出し動作が終了することになる。また、第2のソースデータsrc1については、その読み出し動作の繰り返し数が100回に到達すると、読み出した行列数は20行列×100回で2000行列となり、読み出し動作が終了することになる。
図5は、データ供給回路31の構成の一例を示す図である。図5において、図2と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
図5においてデータ供給回路31は、メモリアクセスユニット(MAU)40、バッファキュー41、及び選択制御部42を含む。バッファキュー41は、幅M(M:正の整数)shortのデータを複数個格納可能なFIFO(First in First out)である。メモリアクセスユニット40は、データメモリ30に格納されたデータ長SLS(short)のデータを読み出して1つ又は複数個の幅M(short)のデータとしてバッファキュー41に格納する。具体的には、メモリアクセスユニット40は、データメモリ30に格納されたデータ長SLS(short)のデータの先頭から、データメモリ30の1ラインに等しい、即ちバス30Aの幅に等しい、M(short)個のデータを読み出す。メモリアクセスユニット40は、幅Mのバス30Aを介して受け取った幅Mのデータを、バッファキュー41に書き込む。バッファキュー41は、幅Mのデータを順次格納することができ、先に格納された幅Mのデータから順番に読み出すことができる。
選択制御部42は、データ選択部45及び制御回路46を含む。選択制御部42は、バッファキュー41からP(≦M)個(short)の連続した単位データを選択することにより幅Pのデータを読み出す動作を、複数回繰り返すことにより、バッファキュー41から複数個の幅Pのデータを隙間なく順番に読み出す。具体的には、選択制御部42は、まず最初に、バッファキュー41の最も先に格納された幅MのデータのM個の単位データのうちで、先頭からP(≦M)個の連続した単位データを選択する。選択制御部42は、選択したP個の単位データを、演算データパス32に供給してよい。但し、選択制御部42と演算データパス32との間のデータ転送幅を固定(例えば幅M)とした場合、選択制御部42は、選択したP個の単位データを含む例えば幅Mのデータを、演算データパス32に供給してよい。このとき、選択したP個の単位データ以外のM−P個の単位データについては、どのような値であってよい。
P個の連続した単位データを選択した後、選択制御部42は、既に選択した最後の単位データの次の単位データからP個の連続した単位データを選択し、選択したP個の単位データを、演算データパス32に供給してよい。これを繰り返すことにより、選択制御部42は、複数個の幅Pのデータを隙間なく順番にバッファキュー41から読み出す。なお、選択制御部42により選択する単位データが幅Mのデータの終端の単位データになる場合には、次の順番の幅Mのデータをバッファキュー41から読み出して、この新たな幅Mのデータの先頭の単位データ及びそれに続く単位データを選択し続ければよい。
図6は、図2及び図5に示す演算処理回路の動作の一例を示すフローチャートである。なお図6において、フローチャートに記載された各ステップの実行順序は一例にすぎず、本願の意図する技術範囲が、記載された実行順番に限定されるものではない。例えば、Aステップの次にBステップが実行されるように本願に説明されていたとしても、Aステップの次にBステップを実行することが可能なだけでなく、Bステップの次にAステップを実行することが、物理的且つ論理的に可能である場合がある。この場合、どちらの順番でステップを実行しても、当該フローチャートの処理に影響する全ての結果が同一であるならば、本願に開示の技術の目的のためには、Bステップの次にAステップが実行されてもよいことは自明である。Aステップの次にBステップが実行されるように本願に説明されていたとしても、上記のような自明な場合を本願の意図する技術範囲から除外することを意図するものではなく、そのような自明な場合は、当然に本願の意図する技術範囲内に属する。
図6のステップS1で、命令デコーダ34が命令メモリ35から1つの命令を取得し、その命令をデコードする。ステップS2で、メモリアクセスユニット40が、アクセス対象のソースデータのストリーム長SLSがM以下であるか否かを判定する。SLS≦Mでない場合、ステップS3で、メモリアクセスユニット40は、指定サイズのsrc0のデータをロードし、ロードしたデータをバッファキュー41のFIFOにプッシュする。この指定サイズは、バッファキュー41に格納可能な最大のデータサイズ又はそれ以下のサイズであってよい。具体的には、メモリアクセスユニット40は、ストリーム長SLSのデータを分割して得られる複数の幅Mのデータを、バッファキュー41に順番に格納すればよい。
なおロードする対象がストリーム長SLSのソースデータの最後の部分以外の場合、幅Mのデータが順次ロードされてバッファキュー41に格納される。ロードする対象がストリーム長SLSのソースデータの最後の部分である場合、バスを介して読み出される幅Mのデータの一部にしかソースデータが存在しないことがある。この場合には、無効領域(ソースデータが存在しない領域)を除去する処理が行われる。具体的には、バッファキュー41中で、ストリーム長SLSのソースデータの最後の部分が格納されている幅Mのデータ領域において、無効領域がある場合には、その無効領域を埋めるように、繰り返しの次の回で読み出されるソースデータの先頭部分が格納される。
ステップS4で、選択制御部42が、P単位の消費速度調整して、データを演算データパス32に供給する。即ち、選択制御部42が、各演算サイクルにおいて、バッファキュー41から幅Pのデータを取り出し、取り出したデータを演算データパス32に供給する。これにより、各演算サイクルにおいてデータ処理幅Pの演算対象のデータがデータ供給回路31から演算データパス32に供給されることになる。
ステップS5で、演算データパス32が、ステップS1でのデコード結果に従い、指定された演算を実行する。更に、データストア回路33が、演算結果であるデータをデータメモリ30に格納する。ステップS6で、例えばメモリアクセスユニット40が、ストリーム長SLSの全データの処理を終了したか否かを判定する。全データの処理が終了していない場合には、ステップS3に戻り、以降の処理を繰り返す。
なおステップS6のストリームの全データの処理が終了したか否かの判断は、演算結果の出力データ数に依存してよい。前述のように、例えば第1のソースデータsrc0のデータ長が1000行列であり、デスティネーションデータdstのデータ長が2000行列である場合、第1のソースデータsrc0は2回繰り返して読み出される。従ってこのような場合、SLS>Mである状況において、ストリーム長SLSの全てのデータを読み出した後に、再度同じデータを読み出してよい。このようにして、バッファキュー41に格納される複数の幅Mのデータから複数個の幅Pのデータを隙間なく順番に読み出す動作において、読み出し部分がデータ長SLSのデータの終端に至ると、データ長SLSのデータの始端から読み出しを継続してよい。
ステップS6で全データの処理が終了していると判定された場合、ステップS1でデコードした命令に対する処理が終了する。
ステップS2での判定の結果、SLS≦Mである場合、ステップS7で、メモリアクセスユニット40は、幅Mのデータを一度だけロードし、ロードしたデータをバッファキュー41のFIFOにプッシュする。即ち、メモリアクセスユニット40は、ストリーム長SLSのデータを含む幅Mのデータを一度だけバッファに格納する。SLS≦Mであるので、一度のロード及びプッシュ動作により、全てのソースデータがバッファキュー41に格納されることになる。
ステップS4で、選択制御部42が、データ複製及びP単位の消費速度調整して、データを演算データパス32に供給する。即ち、選択制御部42が、各演算サイクルにおいて、バッファキュー41から幅Pのデータを取り出し、取り出したデータを演算データパス32に供給する。より詳しくは、選択制御部42は、バッファキュー41に格納される1つの幅Mのデータのうちのストリーム長SLSのデータに相当するデータ部分から、複数個の幅Pのデータを隙間なく順番に読み出す。当該読み出し動作において読み出し部分が当該データ部分の終端に至ると、選択制御部42は、当該データ部分の始端から読み出しを継続する。例えば、ストリーム長SLSのデータに相当するデータ部分の終端部においてQ(<P)個の単位データを選択した場合、当該データ部分の先端部からP−Q個の単位データを選択し、P−Q個の単位データをQ個の単位データに後続させて合計P個のデータとする。これにより、各演算サイクルにおいてデータ処理幅Pの演算対象のデータがデータ供給回路31から演算データパス32に供給されることになる。
ステップS9で、演算データパス32が、ステップS1でのデコード結果に従い、指定された演算を実行する。更に、データストア回路33が、演算結果であるデータをデータメモリ30に格納する。ステップS10で、例えばメモリアクセスユニット40が、ストリーム長SLSの全データの処理を終了したか否かを判定する。全データの処理が終了していない場合には、ステップS8に戻り、以降の処理を繰り返す。ステップS10で全データの処理が終了していると判定された場合、ステップS1でデコードした命令に対する処理が終了する。
なお、SLS≦Mである場合、メモリアクセスユニット40は、幅Mのデータを一度だけロードすればよい。このようにデータを一度だけロードすればよいので、消費電力を削減することが出来る。
図7は、メモリアクセスユニット40及びデータ供給回路31の処理を模式的に示す図である。図7に示す処理は、SLS>Mの場合に実行される処理である。
図7(a)に示されるようにデータメモリ30にはストリーム長SLSのデータが格納されている。ストリーム長SLSは、幅Mよりも長い。このストリーム長SLSのデータが、メモリアクセスユニット40により、幅M毎に読み出され、バッファキュー41に格納される。図7(b)には、バッファキュー41に格納されたデータ51が示される。このバッファキュー41に格納されたデータから、P(≦M)個の連続した単位データを選択することにより幅Pのデータを読み出す動作を、複数回繰り返すことにより、バッファキュー41から複数個の幅Pのデータ61乃至64を隙間なく順番に読み出す。幅Pのデータ65はデータ51の終端部分にかかってしまうので、幅Pのデータ65を読み出す前までに、メモリアクセスユニット40により、ストリーム長SLSのデータをデータメモリ30から読み出して、バッファキュー41にデータ52として格納しておく。これにより、バッファキュー41から複数個の幅Pのデータ61乃至69を隙間なく順番に読み出すことができる。なお、幅Pのデータ61乃至69の各々は、演算サイクル毎に、即ち各演算サイクルにおいて1つずつ読み出される。
なお図7の動作例では、ストリーム長SLSのデータをデータメモリ30から読み出して、バッファキュー41にデータ51として格納している。そして更にその後、同一のストリーム長SLSのデータをデータメモリ30から読み出して、バッファキュー41にデータ52として格納している。このような構成にする代わりに、バッファキュー41内に既に格納されているデータ51を使い回して、データ52に相当するデータ部分をバッファキュー41に配置してもよい。
図8は、メモリアクセスユニット40及びデータ供給回路31の処理を模式的に示す図である。図8に示す処理は、SLS≦Mの場合に実行される処理である。
図8(a)に示されるようにデータメモリ30にはストリーム長SLSのデータが格納されている。ストリーム長SLSは、幅Mよりも短い。このストリーム長SLSのデータが、メモリアクセスユニット40により、幅Mのデータとしてロードされ、バッファキュー41に格納される。図8(b)には、バッファキュー41に格納されたデータ70が示される。このバッファキュー41に格納されたデータから、P(≦M)個の連続した単位データを選択することにより幅Pのデータを読み出す動作を、複数回繰り返すことにより、バッファキュー41から複数個の幅Pのデータ71乃至75を隙間なく順番に読み出す。但し、幅Pのデータ73の場合、データ70の終端部分にかかってしまうので、データ70の先端部分に戻り、先端部分から続けてデータを選択して読み出すことになる。これは幅Pのデータ75についても同様である。このようにして、バッファキュー41から複数個の幅Pのデータ71乃至75を隙間なく順番に読み出すことができる。なお、幅Pのデータ71乃至75の各々は、演算サイクル毎に、即ち各演算サイクルにおいて1つずつ読み出される。
図9は、選択制御部42の構成の一例を示す図である。選択制御部42は、データ選択部45と制御回路46とを含む。データ選択部45は、セレクタ回路81、バッファ回路82、結合回路83、セレクタ回路84、及び結合回路85を含む。セレクタ回路84は、セレクタ84−1乃至84−32を含む。
バッファキュー41の最も先に格納された幅M(この例で32short)のデータが、制御回路46からのPOP信号の「1」に応答して、バッファキュー41から読み出され、セレクタ回路81を介してバッファ回路82に格納される。この時、セレクタ回路81はPOP信号の「1」により、図面右側の入力を選択する状態となっている。幅32のデータがバッファ回路82に格納された状態で、バッファキュー41が出力している幅32のデータ(即ち現時点で最も先に格納された幅32のデータ)は、バッファ回路82に格納されたデータの次のデータとなっている。
なおPOP信号の「1」に応答して、メモリアクセスユニット40により、ストリーム長SLSのデータのうちバッファキュー41に未だ格納していない残りのデータをデータメモリ30から読み出して、バッファキュー41に後続データとして格納してよい。この際、データメモリ30から読み出したデータが、ストリーム長SLSのデータの終端に至った場合には、次のPOP信号の「1」に応答して、ストリーム長SLSのデータの始端から読み出しを再開してよい。この場合、図7(b)に示されるように、ストリーム長SLSのデータの始端が、前に読み出したストリーム長SLSのデータの終端に隙間なく続くように、バッファキュー41にデータを格納してよい。
結合回路83は、バッファ回路82の格納する1つの幅32のデータと、バッファキュー41の出力する次の幅32のデータとを並べて構成した、幅64のデータBUFOUTを出力する。このデータBUFOUTの長さは、64short×16ビット、即ち1024ビットである。
セレクタ回路84は、結合回路83の出力する幅64のデータBUFOUTから、制御回路46が供給する選択制御信号SEL00乃至SEL31の指定するP個の連続した単位データを選択する。実際には、データ選択部45の出力は幅32(short)であるので、選択したP個の連続した単位データは、幅32の出力データのうちの連続した一部(典型的には左端の連続した一部分)に配置されてよい。演算データパス32は、データ処理幅Pのデータのみを演算対象とするので、データ選択部45の出力する幅32のデータのうちで例えば左端の連続したP個の単位データを対象として演算を実行すればよい。
具体的には、セレクタ84−1が、幅64のデータBUFOUTのうち、選択制御信号SEL00の指し示す位置にある1shortの単位データを選択して出力する。またセレクタ84−2が、幅64のデータBUFOUTのうち、選択制御信号SEL01の指し示す位置にある1shortの単位データを選択して出力する。以下同様であり、セレクタ84−32が、幅64のデータBUFOUTのうち、選択制御信号SEL31の指し示す位置にある1shortの単位データを選択して出力する。
図10は、制御回路46による選択動作の一例を示す図である。図10に示す例では、幅Mが32(short)、ストリーム長SLSが34(short)、データ処理幅Pが8(short)である。図10の表に示されるSLS_MOD、OFFSETについては、後程説明する。データ処理幅Pが8であるので、以下の説明においては、図9に示す左端の8個のセレクタ84−1乃至84−8に供給される選択制御信号SEL00乃至SEL07のみに着目する。
まず、ストリーム長SLSが34であるデータの先頭の32個の単位データが図9のバッファ回路82に格納され、残りの2個の単位データが、バッファキュー41の出力しているデータの左端に格納された状態であるとする。なお、前述のように、バッファキュー41の出力しているデータにおいては、左端の上記の2個の単位データに続くようにして、その右側に、ストリーム長SLSが34であるデータの先頭の部分のデータ(先頭の30個の単位データ)が格納されている。このように、メモリアクセスユニット40により、ストリーム長SLSのデータをデータメモリ30から随時読み出して、バッファキュー41に後続データとして格納する動作が、継続的に実行される。
最初のサイクル(cycle=0)では、選択制御信号SEL00乃至SEL07は、「0」乃至「7」であり、幅64のデータBUFOUTの0番(一番左端)の単位データから7番(左端から数えて8個目)の単位データまでが選択される。次のサイクル(cycle=1)では、選択制御信号SEL00乃至SEL07は、「8」乃至「15」であり、幅64のデータBUFOUTの8番(左端から数えて9個目)の単位データから15番(左端から数えて16個目)の単位データまでが選択される。その後同様に進行し、バッファ回路82を利用しながら、バッファキュー41から複数個の幅Pのデータを隙間なく順番に選択し、読み出していく。
5番目のサイクル(cycle=4)において、選択制御信号SEL00乃至SEL07は、「32」乃至「39」であり、幅64のデータBUFOUTの32番の単位データから39番の単位データまでが選択される。このとき、POP信号が「1」になる。従って、次のサイクルにおいては、ストリーム長SLSが34であるデータの終端の2個の単位データとそれに続く先頭の30個の単位データが、図9のバッファ回路82に格納される。またそれに続くストリーム長SLSが34であるデータの終端の4個の単位データと、ストリーム長SLSが34であるデータの先頭の部分のデータ(先頭の28個の単位データ)とが、バッファキュー41の出力データ部分に並んで格納される。
6番目のサイクルでは、選択制御信号SEL00乃至SEL07は、「8」乃至「15」であり、幅64のデータBUFOUTの8番(左端から数えて9個目)の単位データから15番(左端から数えて16個目)の単位データまでが選択される。その後同様に進行し、バッファキュー41から複数個の幅Pのデータを隙間なく順番に選択し、読み出していく。
図11は、制御回路46による選択動作の別の一例を示す図である。図11に示す例では、幅Mが32(short)、ストリーム長SLSが34(short)、データ処理幅Pが32(short)である。図11の表に示されるSLS_MOD、OFFSETについては、後程説明する。データ処理幅Pが32であるので、以下の説明においては、図9に示す32個のセレクタ84−1乃至84−32に供給される選択制御信号SEL00乃至SEL31に着目する。
まず、ストリーム長SLSが34であるデータの先頭の32個の単位データが図9のバッファ回路82に格納され、残りの2個の単位データが、バッファキュー41の出力しているデータの左端に格納された状態であるとする。なお、前述のように、バッファキュー41の出力しているデータにおいては、左端の上記の2個の単位データに続くようにして、その右側に、ストリーム長SLSが34であるデータの先頭の部分のデータ(先頭の30個の単位データ)が格納されている。このように、メモリアクセスユニット40により、ストリーム長SLSのデータをデータメモリ30から随時読み出して、バッファキュー41に後続データとして格納する動作が、継続的に実行される。
最初のサイクル(cycle=0)では、選択制御信号SEL00乃至SEL31は、「0」乃至「31」であり、幅64のデータBUFOUTの0番(一番左端)の単位データから31番(一番右端)の単位データまでが選択される。このとき、POP信号が「1」になる。従って、次のサイクルにおいては、ストリーム長SLSが34であるデータの終端の2個の単位データとそれに続く先頭の30個の単位データが、図9のバッファ回路82に格納される。またそれに続くストリーム長SLSが34であるデータの終端の4個の単位データと、ストリーム長SLSが34であるデータの先頭の部分のデータ(先頭の28個の単位データ)とが、バッファキュー41の出力データ部分に並んで格納される。
次のサイクル(cycle=1)でも、選択制御信号SEL00乃至SEL31は、「0」乃至「31」であり、幅64のデータBUFOUTの0番(一番左端)の単位データから31番(一番右端)の単位データまでが選択される。このとき、POP信号が「1」になる。従って、次のサイクルにおいては、ストリーム長SLSが34であるデータの終端の4個の単位データとそれに続く先頭の28個の単位データが、図9のバッファ回路82に格納される。またそれに続くストリーム長SLSが34であるデータの終端の6個の単位データと、ストリーム長SLSが34であるデータの先頭の部分のデータ(先頭の26個の単位データ)とが、バッファキュー41の出力データ部分に並んで格納される。以降同様に進行し、バッファ回路82を利用しながら、バッファキュー41から複数個の幅Pのデータを隙間なく順番に選択し、読み出していく。
図12は、制御回路46による選択動作の更に別の一例を示す図である。図12に示す例では、幅Mが32(short)、ストリーム長SLSが12(short)、データ処理幅Pが8(short)である。図10の表に示されるSLS_MOD、OFFSETについては、後程説明する。データ処理幅Pが8であるので、以下の説明においては、図9に示す左端の8個のセレクタ84−1乃至84−8に供給される選択制御信号SEL00乃至SEL07のみに着目する。
まず、ストリーム長SLSが12であるデータの12個の単位データが図9のバッファ回路82の左端側に詰めて格納された状態であるとする。
最初のサイクル(cycle=0)では、選択制御信号SEL00乃至SEL07は、「0」乃至「7」であり、幅64のデータBUFOUTの0番(一番左端)の単位データから7番(左端から数えて8個目)の単位データまでが選択される。次のサイクル(cycle=1)では、選択制御信号SEL00乃至SEL07は、「8,9,10,11,0,1,2,3」である。従って、幅64のデータBUFOUTの8番(左端から数えて9個目)の単位データから11番(左端から数えて12個目)の単位データまでと、それに続いて0番(一番左端)の単位データから3番(左端から数えて4個目)の単位データまでが選択される。その後同様に進行し、バッファ回路82を利用しながら、バッファキュー41から複数個の幅Pのデータを隙間なく順番に選択し、読み出していく。この読み出し動作では、ストリーム長SLSが幅Mよりも短いので、POP信号が「1」になることはない。
図13は、制御回路46の構成の一例を示す図である。図13に示す制御回路46は、SLS_MOD回路91、SLSレジスタ92、SEL_WRAP回路93−1乃至93−32、OFFSETレジスタ94、ADD_OFFSET回路95、P減算回路96、及びセレクタ回路97を含む。
図14は、SEL_WRAP回路の構成の一例を示す図である。図14に示すSEL_WRAP回路は、SLS判定回路101、SLS減算回路102、N加算回路103、セレクタ回路104、比較回路105、1加算回路106、及びセレクタ回路107を含む。SEL_WRAP回路93−1の場合、印加されるSLS_MOD信号は、SLS_MOD回路91の格納する値に等しい。それ以降のSEL_WRAP回路93−2乃至93−32の場合、印加されるSLS_MOD信号は、前段のSEL_WRAP回路の出力するSLS_MOD_NEXT信号に等しい。
図15は、ADD_OFFSET回路の構成の一例を示す図である。図15に示すADD_OFFSET回路は、加算回路111、OFFSETレジスタ112、OFFSETレジスタ113、セレクタ回路114、及びセレクタ回路115を含む。
図13乃至図15並びに図10を用いて、制御回路46の動作の一例を説明する。初期状態においては、SLS_MOD回路91の格納するSLS_MOD信号は「0」である。またOFFSETレジスタ94の格納するOFFSET信号は「0」である。
図10の例において、SLS>Mであることにより図14に示すセレクタ回路104は、OFFSET信号の値にNを加算した値を選択する。この値Nは、何番目のSEL_WRAP回路であるかを示す値であり、「0」を開始番号として、0番のSEL_WRAP回路93−1の場合には「0」である。従って、SEL_WRAP回路93−1の場合、OFFSET信号の値に「0」を加算した「0」が、出力の選択制御信号SELの値となる。また「0」であるSLS_MOD信号に1加算回路106により「1」を加算した値、即ち「1」が、SLS_MOD_NEXT信号として出力される。次のSEL_WRAP回路93−2の場合、OFFSET信号の値に「1」を加算した「1」が、出力の選択制御信号SELの値となる。またこのSEL_WRAP回路93−2の場合、印加されるSLS_MOD信号は前段からの値「1」のSLS_MOD_NEXT信号であるので、出力するSLS_MOD_NEXT信号の値は「2」となる。以下同様にして、SEL_WRAP回路93−n(n:自然数)の場合、出力する選択制御信号SELは「n−1」であり、出力するSLS_MOD_NEXT信号は「n」となる。これにより、図10の0番のサイクルに示すような選択制御信号SEL00乃至SEL31が生成される。
セレクタ回路97は、SEL_WRAP回路93−1乃至93−32のそれぞれが出力するSLS_MOD_NEXTを受け取る。セレクタ回路97は更に、データ処理幅Pから1減算した値、この例では「7」を選択制御信号として受け取る。セレクタ回路97は、0番を開始番号とした場合の7番(即ち8番目)のSEL_WRAP回路93−8が出力する値「8」であるSLS_MOD_NEXT信号を選択して、SLS_MOD回路91に供給する。これにより、次のサイクルにおいて、SLS_MOD回路91に格納されているSLS_MOD信号は「8」となる。
図15に示すADD_OFFSET回路95において、SLS>Mであることにより、セレクタ回路115は、データ処理幅PにOFFSET信号の値を加算した値を選択し、OFFSET_NEXT信号として出力する。このOFFSET_NEXT信号が、図13に示すOFFSETレジスタ94に格納され、次のサイクルでのOFFSET信号となる。従って、OFFSET信号の値は、1サイクル毎にPずつ増加していく。但し、OFFSET信号の値に加算回路111によりPを加算した値が「32」となるサイクルにおいては、OFFSETレジスタ112に格納された値が1となり、POP_NEXT信号が「1」となる。このPOP_NEXT信号が、制御回路46からPOP信号として出力される。またOFFSET信号の値に加算回路111によりPを加算した値の下位5ビットのみをOFFSETレジスタ113に格納することにより、OFFSET_NEXT信号の値は、「0」乃至「31」の範囲の値のみをとることになる。即ち、OFFSETレジスタ94に格納されるOFFSET値は、「0」乃至「31」の範囲の値を繰り返すことになる。このようにして、図10の動作例に示すような、OFFSET信号及びPOP信号が生成される。なお図10では、OFFSETの値は、6ビット目も含めた値を示してあるため、値「32」の場合が示されている。
図13乃至図15並びに図12を用いて、制御回路46の動作の別の一例を説明する。初期状態においては、SLS_MOD回路91の格納するSLS_MOD信号は「0」である。またOFFSETレジスタ94の格納するOFFSET信号は「0」である。
図12の例において、SLS≦Mであることにより図14に示すセレクタ回路104はSLS_MOD信号を選択するので、SEL_WRAP回路93−1の場合、出力の選択制御信号SELは「0」である。また「0」であるSLS_MOD信号に「1」を加算した値、即ち「1」が、SLS_MOD_NEXT信号として出力される。次のSEL_WRAP回路93−2の場合、印加されるSLS_MOD信号は前段からの値「1」のSLS_MOD_NEXT信号であるので、出力の選択制御信号SELは「1」であり、且つ、出力するSLS_MOD_NEXT信号の値は「2」となる。以下同様にして、SEL_WRAP回路93−n(n:SLSより小さい自然数)の場合、出力する選択制御信号SELは「n−1」であり、出力するSLS_MOD_NEXT信号は「n」となる。
図12の例ではストリーム長SLSが12であるので、SEL_WRAP回路93−12の場合、図14に示す比較回路105の出力が1となり、「0」がセレクタ回路107により選択されて、出力するSLS_MOD_NEXT信号の値が「0」となる。従って、図12の0番のサイクルに示すように、選択制御信号SEL00乃至SEL31は、「0」乃至「11」の間を繰り返す信号となる。
セレクタ回路97は、SEL_WRAP回路93−1乃至93−32のそれぞれが出力するSLS_MOD_NEXTを受け取る。セレクタ回路97は更に、データ処理幅Pから1減算した値、この例では「7」を選択制御信号として受け取る。セレクタ回路97は、0番を開始番号とした場合の7番(即ち8番目)のSEL_WRAP回路93−8が出力する値「8」であるSLS_MOD_NEXT信号を選択して、SLS_MOD回路91に供給する。これにより、次のサイクルにおいて、SLS_MOD回路91に格納されているSLS_MOD信号は「8」となる。
図15に示すADD_OFFSET回路95において、SLS≦Mであることにより、セレクタ回路114及び115は、値「0」を選択して、値「0」のPOP_NEXT信号及び値「0」のOFFSET信号を出力する。これにより、図12の動作例に示すように、OFFSET信号及びPOP信号は、両方とも常に「0」となる。
図16は、SLS≦Mの場合の各信号の生成ロジックを示した図である。SLS≦Mの場合には、図16に示されるロジックにより、SLS_MOD_NEXT信号、選択制御信号SEL、及びPOP信号が生成される。
図17は、SLS>Mの場合の各信号の生成ロジックを示した図である。SLS>Mの場合には、図16に示されるロジックにより、POP信号、OFFSET信号、及び選択制御信号SELが生成される。
図18は、制御回路46の構成の別の一例を示す図である。図13に示す制御回路46は、SLS判定回路121、セレクタ回路122、SLS_MOD回路123、セレクタ回路124、1加算回路125、SLS_MODテーブル(SLS_MOD_TBL)126、及びシフタ回路(shifter384)127を含む。制御回路46は更に、OFFSETレジスタ94、ADD_OFFSET回路95、P減算回路96、及びセレクタ回路97を含む。図18において、図13と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
図19は、SLS_MODテーブル126のデータの一例を示す図である。図19に示すように、SLS_MODテーブル126には、1番から33番までの33個の行に対して、64個の位置データが格納されている。例えば、値が「0」の位置データは、図9の結合回路83の出力するデータBUFOUTの64個の単位データのうち、0番(一番左端)の単位データを選択する。同様に、値がn(n:0〜63の整数)の位置データは、図9の結合回路83の出力するデータBUFOUTの64個の単位データのうち、n番の単位データを選択する。このように、SLS_MODテーブル126は、幅2Mのデータから選択する各単位データの選択位置を示す位置データを格納したテーブルである。
また図18に示すシフタ回路127は、SLS_MODテーブル126から位置データを受け取り、受け取った位置データをシフトし、シフトした位置データをセレクタ回路84(図9参照)に選択制御信号SEL00乃至SEL31として供給する。この構成により、データ選択部45のセレクタ回路84により、適切な単位データを選択することができる。
図18において、SLS判定回路121は、ストリーム長SLSがM以下であるか否かを判定する。SLS>Mである場合、SLS判定回路121の出力は「0」となり、セレクタ回路122は値「33」を選択して出力する。従って、この場合、SLS_MODテーブル126の33番の行が選択され、図19の33番の行に示されるように「0」乃至「63」の64個の位置データが出力される。このときセレクタ回路124は、OFFSETレジスタ94に格納されるOFFSET信号の値を選択し、1加算回路125が、セレクタ回路124により選択された値に「1」を加算し、加算後の値をシフタ回路127に供給する。シフタ回路127は、SLS_MODテーブル126から供給された64個の位置データを、OFFSET信号の値に応じてシフトし、シフト後の64個の位置データを選択制御信号SELとして出力する。これにより、図10や図11に示すような選択制御信号SELが生成されることになる。
SLS≦Mである場合、SLS判定回路121の出力は「1」となり、セレクタ回路122は、ストリーム長SLSの値を選択して出力する。この結果、例えば、図12に示すようにストリーム長SLSが12である場合、SLS_MODテーブル126の12番の行が選択される。即ち、図19の12番の行に示されるように「0」乃至「11」の値を繰り返す64個の位置データが、SLS_MODテーブル126から出力される。このときセレクタ回路124は、SLS_MOD回路123に格納されるSLS_MOD信号の値を選択し、1加算回路125が、セレクタ回路124により選択された値に「1」を加算し、加算後の値をシフタ回路127に供給する。シフタ回路127は、SLS_MODテーブル126から供給された64個の位置データを、SLS_MOD信号の値に応じてシフトし、シフト後の64個の位置データを選択制御信号SELとして出力する。これにより、図12に示すような選択制御信号SELが生成されることになる。
図13の制御回路46では、SEL_WRAP回路93−1乃至93−32が32段に縦続接続されている。従って、SLS_MOD_NEXT信号が格段を伝搬していくのに時間かかり、データ供給回路31による選択動作を十分に高速に実行できない可能性がある。それに対し図18に示す制御回路46では、シフタ回路127による少数段の遅延が発生するのみであり、データ供給回路31による選択動作を十分に高速に実行することができる。
図20は、演算処理回路の構成の別の一例を示す図である。図20において、図2と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
図20の演算処理回路は、データメモリ30、複数のデータ供給回路31−1乃至31−n、演算データパス(データ演算ユニット)32、データストア回路33、命令デコーダ34、及び命令メモリ35を含む。データ供給回路31−1乃至31−nは、データメモリ30に格納される複数n個のソースデータ(オペランド)をそれぞれ読み出し、演算データパス32に供給する。例えば、図4に示す例のように2つのソースデータsrc0とsrc1とが演算対象となる場合、データ供給回路31−1がソースデータsrc0を読み出し、データ供給回路31−2がソースデータsrc1を読み出してよい。データ供給回路31−1乃至31−nの各々の構成及び動作は、前述のデータメモリ30の構成及び動作と基本的に同一であってよい。図20の演算処理回路では、複数n個のソースデータ(オペランド)に対応することが可能となる。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
例えば、図3及び図4では、オペランドが行列であり、演算データパス32が行列演算を並列に実行する場合について説明した。しかしながら、本願発明によるデータ供給回路は、行列演算等の特定の種類の演算に限定されるものではなく、演算一般について適用可能である。即ち、単位データのサイズULとSIMD幅とにより決まるデータ処理幅P=UL×SIMDが可変である演算処理回路一般に対して、データ供給回路31を適用可能である。
10 RF部
11 専用ハードウェア11
12−1〜12−3 DSP(Digital Signal Processor)
21 プロセッサ
22 プログラムメモリ
23 周辺回路
24 データメモリ
30 データメモリ
31 データ供給回路
32 演算データパス
33 データストア回路
34 命令デコーダ
35 命令メモリ
40 メモリアクセスユニット
41 バッファキュー
42 選択制御部
45 データ選択部
46 制御回路

Claims (6)

  1. 第1の幅のデータを複数個格納可能なバッファと、
    メモリに格納された所定処理対象データを読み出して1つ又は複数個の前記第1の幅のデータとして前記バッファに格納するメモリアクセスユニットと、
    前記バッファから前記第1の幅以下の第2の幅のデータを読み出す動作を、複数回繰り返すことにより、前記バッファから複数個の前記第2の幅のデータを隙間なく順番に読み出し、読み出し部分が前記処理対象データの終端に至ると前記処理対象データの始端から読み出しを継続する選択制御部と
    を含むことを特徴とするデータ供給回路。
  2. 前記所定処理対象データのデータ長が前記第1の幅以下であるときに、前記メモリアクセスユニットは、前記所定処理対象データを含む前記第1の幅のデータを一度だけ前記バッファに格納し、前記選択制御部は、前記バッファに格納される1つの前記第1の幅のデータのうちの前記所定処理対象データに相当するデータ部分から、前記第2の幅に相当する個数の連続した単位データを選択しながら、複数個の前記第2の幅のデータを隙間なく順番に読み出すことを特徴とする請求項1記載のデータ供給回路。
  3. 前記所定処理対象データのデータ長が前記第1の幅よりも長いときに、前記メモリアクセスユニットは、前記所定処理対象データを分割して得られる複数の前記第1の幅のデータを前記メモリから読み出して前記バッファに順番に格納し、前記所定処理対象データの終端に読み出しが至ると前記所定処理対象データの始端から読み出しを継続することにより前記所定処理対象データの終端と前記所定処理対象データの始端とが隙間なく継続するように前記バッファに順番に格納し、前記選択制御部は、前記バッファに格納される前記複数の第1の幅のデータから、前記第2の幅に相当する個数の連続した単位データを選択しながら、複数個の前記第2の幅のデータを隙間なく順番に読み出すことを特徴とする請求項1記載のデータ供給回路。
  4. 前記選択制御部は、
    1つの前記第1の幅のデータと次の前記第1の幅のデータとを並べて構成した前記第1の幅の2倍の幅のデータから、選択制御信号の指定する前記第2の幅に相当する個数の連続した単位データを選択するセレクタ回路と、
    前記第1の幅の2倍の幅のデータから選択する各単位データの選択位置を示す位置データを格納したテーブルと、
    前記テーブルから前記位置データを受け取り、前記受け取った位置データをシフトし、前記シフトした位置データを前記セレクタ回路に前記選択制御信号として供給するシフタ回路と
    を含む請求項1乃至3何れか一項記載のデータ供給回路。
  5. メモリと、
    前記メモリに結合される1つ又は複数のデータ供給回路と、
    前記1つ又は複数のデータ供給回路に結合されるデータ演算ユニットと、
    前記データ演算ユニットと前記メモリとに結合されるデータストア回路と
    を含み、前記1つ又は複数のデータ供給回路の各々は、
    第1の幅のデータを複数個格納可能なバッファと、
    メモリに格納された所定処理対象データを読み出して1つ又は複数個の前記第1の幅のデータとして前記バッファに格納するメモリアクセスユニットと、
    前記バッファから前記第1の幅以下の第2の幅のデータを読み出す動作を、複数回繰り返すことにより、前記バッファから複数個の前記第2の幅のデータを隙間なく順番に読み出し、読み出し部分が前記処理対象データの終端に至ると前記処理対象データの始端から読み出しを継続する選択制御部と
    を含む演算処理回路。
  6. メモリに格納された所定処理対象データを読み出して1つ又は複数個の第1の幅のデータとしてバッファに格納し、
    前記バッファから前記第1の幅以下の第2の幅のデータを読み出す動作を、複数回繰り返すことにより、前記バッファから複数個の前記第2の幅のデータを隙間なく順番に読み出し、読み出し部分が前記処理対象データの終端に至ると前記処理対象データの始端から読み出しを継続する
    段階を含むデータ供給方法。
JP2013191570A 2013-09-17 2013-09-17 データ供給回路、演算処理回路、及びデータ供給方法 Withdrawn JP2015060256A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013191570A JP2015060256A (ja) 2013-09-17 2013-09-17 データ供給回路、演算処理回路、及びデータ供給方法
US14/474,711 US20150081987A1 (en) 2013-09-17 2014-09-02 Data supply circuit, arithmetic processing circuit, and data supply method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013191570A JP2015060256A (ja) 2013-09-17 2013-09-17 データ供給回路、演算処理回路、及びデータ供給方法

Publications (1)

Publication Number Publication Date
JP2015060256A true JP2015060256A (ja) 2015-03-30

Family

ID=52669084

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013191570A Withdrawn JP2015060256A (ja) 2013-09-17 2013-09-17 データ供給回路、演算処理回路、及びデータ供給方法

Country Status (2)

Country Link
US (1) US20150081987A1 (ja)
JP (1) JP2015060256A (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6848042B1 (en) * 2003-03-28 2005-01-25 Xilinx, Inc. Integrated circuit and method of outputting data from a FIFO
US8677078B1 (en) * 2007-06-28 2014-03-18 Juniper Networks, Inc. Systems and methods for accessing wide registers
WO2014108749A1 (en) * 2013-01-10 2014-07-17 Freescale Semiconductor, Inc. Data processor and method for data processing

Also Published As

Publication number Publication date
US20150081987A1 (en) 2015-03-19

Similar Documents

Publication Publication Date Title
JP3719509B2 (ja) シリアル演算パイプライン、演算装置、算術論理演算回路およびシリアル演算パイプラインによる演算方法
US9268746B2 (en) Architecture for vector memory array transposition using a block transposition accelerator
US8443170B2 (en) Apparatus and method for performing SIMD multiply-accumulate operations
KR101202445B1 (ko) 프로세서
EP2972988A2 (en) Vector processing engines having programmable data path configurations for providing multi-mode radix-2x butterfly vector processing circuits, and related vector processors, systems, and methods
US8989242B2 (en) Encoding/decoding processor and wireless communication apparatus
JP2013205973A (ja) 行列演算装置
CN109144469B (zh) 流水线结构神经网络矩阵运算架构及方法
JP6079433B2 (ja) 移動平均処理プログラム、及びプロセッサ
JP6003744B2 (ja) 演算処理装置及び演算処理方法
US8892615B2 (en) Arithmetic operation circuit and method of converting binary number
US9350584B2 (en) Element selection unit and a method therein
US10656943B2 (en) Instruction types for providing a result of an arithmetic operation on a selected vector input element to multiple adjacent vector output elements
US8909687B2 (en) Efficient FIR filters
CN109389213B (zh) 存储装置及方法、数据处理装置及方法、电子装置
CN116888591A (zh) 一种矩阵乘法器、矩阵计算方法及相关设备
US10387118B2 (en) Arithmetic operation unit and method of controlling arithmetic operation unit
CN110914800B (zh) 基于寄存器的复数处理
CN113485751B (zh) 执行伽罗瓦域乘法的方法、运算单元和电子装置
JP2015060256A (ja) データ供給回路、演算処理回路、及びデータ供給方法
IL271636B1 (en) Vector integration in a data processing device
JP2016218528A (ja) データ処理装置、およびデータ処理方法
JPS6310263A (ja) ベクトル処理装置
CN117032801A (zh) 可用于sha256的指令执行方法、设备、数据处理系统及芯片
JPH03256117A (ja) 乗算器

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20150501

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160530

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20170116