JP2006215611A - 演算装置 - Google Patents

演算装置 Download PDF

Info

Publication number
JP2006215611A
JP2006215611A JP2005024910A JP2005024910A JP2006215611A JP 2006215611 A JP2006215611 A JP 2006215611A JP 2005024910 A JP2005024910 A JP 2005024910A JP 2005024910 A JP2005024910 A JP 2005024910A JP 2006215611 A JP2006215611 A JP 2006215611A
Authority
JP
Japan
Prior art keywords
source data
address
control signal
arithmetic unit
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.)
Pending
Application number
JP2005024910A
Other languages
English (en)
Inventor
Roou Nagai
呂翁 長井
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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Priority to JP2005024910A priority Critical patent/JP2006215611A/ja
Priority to US11/343,169 priority patent/US7673117B2/en
Priority to KR1020060009512A priority patent/KR101244107B1/ko
Priority to CNB2006100711704A priority patent/CN100383729C/zh
Publication of JP2006215611A publication Critical patent/JP2006215611A/ja
Pending 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F21LIGHTING
    • F21VFUNCTIONAL FEATURES OR DETAILS OF LIGHTING DEVICES OR SYSTEMS THEREOF; STRUCTURAL COMBINATIONS OF LIGHTING DEVICES WITH OTHER ARTICLES, NOT OTHERWISE PROVIDED FOR
    • F21V17/00Fastening of component parts of lighting devices, e.g. shades, globes, refractors, reflectors, filters, screens, grids or protective cages
    • F21V17/10Fastening of component parts of lighting devices, e.g. shades, globes, refractors, reflectors, filters, screens, grids or protective cages characterised by specific fastening means or way of fastening
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F21LIGHTING
    • F21KNON-ELECTRIC LIGHT SOURCES USING LUMINESCENCE; LIGHT SOURCES USING ELECTROCHEMILUMINESCENCE; LIGHT SOURCES USING CHARGES OF COMBUSTIBLE MATERIAL; LIGHT SOURCES USING SEMICONDUCTOR DEVICES AS LIGHT-GENERATING ELEMENTS; LIGHT SOURCES NOT OTHERWISE PROVIDED FOR
    • F21K9/00Light sources using semiconductor devices as light-generating elements, e.g. using light-emitting diodes [LED] or lasers
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F21LIGHTING
    • F21VFUNCTIONAL FEATURES OR DETAILS OF LIGHTING DEVICES OR SYSTEMS THEREOF; STRUCTURAL COMBINATIONS OF LIGHTING DEVICES WITH OTHER ARTICLES, NOT OTHERWISE PROVIDED FOR
    • F21V21/00Supporting, suspending, or attaching arrangements for lighting devices; Hand grips
    • F21V21/02Wall, ceiling, or floor bases; Fixing pendants or arms to the bases
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F21LIGHTING
    • F21YINDEXING SCHEME ASSOCIATED WITH SUBCLASSES F21K, F21L, F21S and F21V, RELATING TO THE FORM OR THE KIND OF THE LIGHT SOURCES OR OF THE COLOUR OF THE LIGHT EMITTED
    • F21Y2115/00Light-generating elements of semiconductor light sources
    • F21Y2115/10Light-emitting diodes [LED]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Optics & Photonics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Advance Control (AREA)
  • Memory System (AREA)

Abstract

【課題】処理を連続して行うことが可能で、条件を満たせば途中で処理を中断するような場合の無駄な処理を抑止でき、また、転送効率の向上を図れることはもとより、システムコストの増大を抑止でき、処理時間と消費電力を削減できる演算装置を提供する。
【解決課題】第1のソースデータDT91を生成し、制御信号INA CTL1と共に出力するアドレス生成装置92と、第2のソースデータDT92を生成し、制御信号INB CTL1−3と共に出力するアドレス生成装置93と、第1の生成装置による第1のソースデータと、第2の生成装置による第2のソースデータに対して制御信号に応じて演算種を切り替えて所定の演算を行い、演算結果を一時保持するレジスタを有する演算器95と、を有し、レジスタの保持データの読み出し、書き込みは、制御信号により制御される。
【選択図】図18

Description

本発明は、いわゆるデータフロー型演算装置に関するものである。
従来のデータフロー型演算器の場合、メモリから連続したデータが転送され、転送されたデータに対しあらかじめ決められた1種類の演算を連続して行うものであった。
しかし、このような演算器の場合、入力条件によって異なる演算を行うような処理を連続して行うことは不可能である。
また、ある条件を満たせば途中で処理を中断するような場合でもあらかじめ決められた個数分の処理を行わなければならないため無駄な処理が行われていた。
さらに、データバス幅よりも小さい語長のデータを累算する場合、たとえば32ビットバスシステムにおいて8ビットデータを扱う場合等、転送効率が悪くなるという不利益があった。
また、IIRのようなフィードバックを伴う演算処理をそのままハードウェアに適用しようとした場合、一度演算結果をメモリに書き出した後再度その結果をメモリから読み出す必要があることからデュアルポートメモリが必須となりシステムコストが高くなる欠点があった。
また、内部のパイプライン化によりメモリ→演算→メモリのレイテンシが大きいシステムでは場合によってはデータが揃うまで待機する動作を行わなければならず効率の悪い処理系になっていた。
本発明は、かかる事情に鑑みてなされたものであり、その目的は、入力条件によって異なる演算を行うような処理を連続して行うことが可能で、条件を満たせば途中で処理を中断するような場合の無駄な処理を抑止でき、また、転送効率の向上を図れることはもとより、システムコストの増大を抑止でき、処理時間と消費電力を削減できる演算装置を提供することにある。
上記目的を達成するため、本発明の第1の観点の演算装置は、第1のソースデータを生成する第1の生成装置と、第2のソースデータを生成する第2の生成装置と、上記第1の生成装置による第1のソースデータと、上記第2の生成装置による第2のソースデータに対して制御信号に応じて演算種を切り替えて所定の演算を行い、演算結果を一時保持するレジスタを有する演算器と、を有し、上記第1の生成装置と上記第2の生成装置の少なくとも一方は、生成したソースデータに制御信号を付加して上記演算器に出力し、上記レジスタの保持データの読み出し、書き込みは、上記制御信号により制御される。
好適には、上記第1のソースデータおよび上記第2のソースデータを格納するメモリを有し、上記第1の生成装置は、上記第1のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第1のソースデータと上記制御信号を上記演算器に出力し、上記第2の生成装置は、上記第2のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第2のソースデータと上記制御信号を上記演算器に出力する。
好適には、上記演算器の演算結果を受けてアドレスを生成して、演算結果を上記メモリに書き込む第3の生成装置をさらに有する。
好適には、上記演算器は、バス幅より小さい語長のデータで累算を行う際に複数のデータをひとかたまりに扱い累算を行う。
本発明の第2の観点の演算装置は、第1のソースデータを生成する第1の生成装置と、第2のソースデータを生成し、かつ、当該第2のソースデータに第1の制御信号を付加して出力する第2の生成装置と、第3のソースデータを生成する第3の生成装置と、上記第1の生成装置の第1のソースデータと、上記第2の生成装置による第2のソースデータに上記第1の制御信号に応じた所定の演算処理を行って第4のソースデータを生成する第1の演算器と、上記第3の生成装置による第3のソースデータと、上記第1の演算器による第4のソースデータに対して第2の制御信号に応じて演算種を切り替えて所定の演算を行い、演算結果を保持するレジスタを有する第2の演算器と、を有し、上記第3のアドレス生成装置および上記第1の演算器の少なくとも一方は生成したソースデータに第2の制御信号を付加して上記第2の演算器に出力し、上記レジスタの保持データの読み出し、書き込みは、上記第2制御信号により制御される。
好適には、上記第1のソースデータ、上記第2のソースデータ、および上記第2のソースデータを格納するメモリを有し、上記第1の生成装置は、上記第1のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第1のソースデータを上記第1の演算器に出力し、上記第2の生成装置は、上記第2のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第2のソースデータと上記第1の制御信号を上記第1の演算器に出力し、上記第3の生成装置は、上記第3のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第3のソースデータを上記第2の演算器に出力する。
好適には、上記第2の演算器の演算結果を受けてアドレスを生成して、演算結果を上記メモリに書き込む第4の生成装置をさらに有する。
本発明によれば、たとえばある特定のインデックス条件を満たす場合のみ演算が加算から減算に切り替わるものである場合に、演算器自体は配列のインデックス、すなわちメモリのアドレスを知らないため演算を切り替える制御はアドレスを発行する側、つまり第2の生成装置が制御信号を生成することになる。
第2の生成装置によりメモリから読み出されたデータと共に制御信号を演算器に渡し、これにより演算が行われ、その結果がたとえばメモリに書き込まれるという一連の処理が実現される。
演算器において、演算結果は、制御信号の制御の下に保持回路(レジスタ)に書き込まれ、制御信号の制御の下に所定のタイミングで読み出される。
本発明によれば、入力条件によって異なる演算を行うような処理を連続して行うことができる。
また、条件を満たせば途中で処理を中断するような場合の無駄な処理を抑止でき、また、転送効率の向上を図れる利点がある。
また、デュアルポートメモリを使う必要がないことからシステムコストを抑えることが可能で、さらには効率的な処理が可能なことから処理時間と消費電力を削減することが可能であるという利点がある。
以下、本発明の実施形態を図面に関連付けて説明する。
<第1実施形態>
図1は、本発明に係るデータフロー型演算装置の第1の実施形態を示す構成図である。
本演算装置10は、複数(図1では3個)のバンク111〜113を備えたメモリ11、バンク111〜113に応対して設けられた第1〜第3のアドレス生成装置12(AG0),13(AG1),14(AG2)、および演算器(PE)15を有している。
アドレス生成装置12は、アドレスADR12およびコントロール信号CTL12をバンク111に与えて演算器15の演算のための第1のデータを読み出して、第1のソースデータDT11として演算器15に出力する。
アドレス生成装置13は、アドレスADR13およびコントロール信号CTL13をバンク112に与えて演算器15の演算のための第2のデータを読み出して、演算の制御信号CTLOPとともに第2のソースデータDT12として演算器15に出力する。
アドレス生成装置14は、アドレスADR14およびコントロール信号CTL14をバンク113に与えて演算器15の演算結果を、バンク113に格納する。
演算器15は、アドレス生成装置12による第1のソースデータDT11とアドレス生成装置13による第2のソースデータDT12に対して、制御信号CTLOPに応じたたとえば以下に示す条件実行演算を行い、演算結果S15(Destination)をアドレス生成装置14に出力する。
演算器15の制御方法を条件実行演算を例に述べる。
以下の例は配列のインデックスが分岐条件となるC言語によるプログラム例である。
<プログラム例1>
for (i=0; i<256; i++) {
if (i > 254) out[i] = a[i] - b[i];
else out[i] = a[i] + b[i];
図2(A)〜(C)は、演算器15の演算実行状態を示す図である。
これはある特定のインデックス条件を満たす場合のみ演算が加算から減算に切り替わるものであるが、演算器自体は配列のインデックス、すなわちメモリのアドレスを知らないため演算を切り替える制御はアドレスを発行する側、つまりはアドレス生成装置13が制御信号CTLOPを生成することになる。
この例では演算の種類が2種類なので制御線としては1ビットの信号線があればよく、図1のようにアドレス生成装置13によりメモリから読み出されたデータと共に制御信号CTLOPを演算器15に渡し、これにより演算が行われ、その結果がまたメモリ11のバンク113に書き込まれるという一連のフローが実現される。
<第2実施形態>
図3は、本発明に係るデータフロー型演算装置の第2の実施形態を示す構成図である。
本演算装置20は、複数(図3では3個)のバンク211〜213を備えたメモリ21、バンク211〜213に応対して設けられた第1〜第3のアドレス生成装置22(AG0),23(AG1),24(AG2)、第1の演算器(PE0)25、および第2の演算器(PE1)26を有している。
アドレス生成装置22は、アドレスADR22およびコントロール信号CTL22をバンク211に与えて演算器26の演算のための第1のデータを読み出して、第1のソースデータDT21として演算器26に出力する。
アドレス生成装置23は、アドレスADR23およびコントロール信号CTL23をバンク212に与えて演算器25の演算のための第2のデータを読み出して、第2のソースデータDT22として演算器25に出力する。
アドレス生成装置24は、アドレスADR24およびコントロール信号CTL24をバンク213に与えて演算器26の演算結果を、バンク213に格納する。
演算器25は、アドレス生成装置23による第2のソースデータDT22に基づいて比較演算を行い、演算の制御信号CTLOPとともに第3のソースデータDT23として演算器26に出力する。
演算器26は、アドレス生成装置22による第1のソースデータDT21とアドレス生成装置23による第3のソースデータDT23に対して、制御信号CTLOPに応じたたとえば以下に示す条件実行演算を行い、演算結果S26(Destination)をアドレス生成装置24に出力する。
演算器25,26の制御方法を条件実行演算を例に述べる。
以下の例は配列のインデックスが分岐条件となるC言語によるプログラム例である。
ここでは、別の例としてデータの値が分岐条件となるプログラム例を以下に示す。
<プログラム例2>
for (i=0; i<256; i++) {
if (a[i] > 0) out[i] = a[i] + b[i];
else out[i] = a[i];
図4(A)〜(C)は、演算器25,26の演算実行状態を示す図である。
この例は、演算器の入力となる配列の値により演算の種類が切り替わるもので、図3のように演算器2つを縦続接続して前段の演算器25で比較演算をすることにより後段の演算器26の演算を切り替えるための制御信号CTLOPを生成する。
このとき、前段の演算器25の演算結果は入力された値と同じ値を出力するようにする。
これは演算器25内部がパイプライン化された場合でもデータと制御信号の同期を取るためである。
なお、上で示した2つの例は何れも2種類の演算を切り替える例であるが、原理的には3種類以上の切り替えも可能でありその場合は制御信号も2ビット以上必要になる。
<第3実施形態>
図5は、本発明に係るデータフロー型演算装置の第3の実施形態を示す構成図である。
本第3の実施形態の演算装置20Aが第2の実施形態の演算装置20と異なる点は、演算器25において比較演算により生成された制御信号CTLOPをアドレス生成装置の制御信号MEMWEとして用いる点にある。
比較演算により生成された制御信号をアドレス生成装置の制御に用いたプログラム例を以下に示す。
<プログラム例3>
j = 0;
for (i=0; i<256; i++) {
if (a[i] > 0) out[j++] = a[i] + b[i];
図6(A)〜(E)は、演算器25,26の演算実行状態およびメモリへの書き込み制御状態を示す図である。
この例は、演算の入力となるデータの値が条件を満たした場合のみ配列のインデックスをインクリメントし、演算結果をメモリへ書き込む動作をする。
図5は、この例を実現するための構成例であるが、図3と同様に2つの演算器25,26を縦続接続しているが、後段の演算器26Aは常に固定の演算を行い、前段の演算器25の比較演算で生成された制御信号CTLOPはそのまま後段を通過しメモリ書き込み用のアドレス生成装置24へデータと共に渡される。
もしも、演算器内部がパイプライン化されている場合でも制御信号がデータと同じ経路を通るためにデータと制御信号は常に同期している。
メモリ書き込み用のアドレス生成装置24ではこの制御信号を用いてメモリに対するアドレスと書き込み(WE)の制御を行う。
<第4実施形態>
図7は、本発明に係るデータフロー型演算装置の第4の実施形態を示す構成図である。
本演算装置30は、複数(図7では3個)のバンク311〜313を備えたメモリ31、バンク311〜313に応対して設けられた第1〜第3のアドレス生成装置32(AG0),33(AG1),34(AG2)、第1の演算器(PE0)35、および第2の演算器(PE1)36を有している。
アドレス生成装置32は、アドレスADR32およびコントロール信号CTL32をバンク311に与えて演算器35の演算のための第1のデータを読み出して、第1のソースデータDT31として演算器35に出力する。
また、アドレス生成装置32は、アドレス生成装置34による制御信号CTLENDを受けて読み出し動作を終了する。
アドレス生成装置33は、アドレスADR33およびコントロール信号CTL33をバンク312に与えて演算器35の演算のための第2のデータを読み出して、第2のソースデータDT32として演算器35に出力する。
また、アドレス生成装置33は、アドレス生成装置34による制御信号CTLENDを受けて読み出し動作を終了する。
アドレス生成装置34は、演算器36による制御信号CTLWEに基づいてアドレスADR34およびコントロール信号CTL34をバンク313に与えて演算器36の演算結果を、バンク313に格納する。
また、アドレス生成装置34は、演算器36による制御信号CTLWEに基づいて一連の処理を終了させるための制御信号CTLENDを生成して、アドレス生成装置32,33に出力する
演算器35は、アドレス生成装置32による第1のソースデータDT31とアドレス生成装置33による第2のソースデータDT32に対して、たとえばたとえば以下に示す条件実行演算を行い、その結果を第3のソースデータDT33として演算器36に出力する。
演算器36は、演算器35による第3のソースデータDT33に基づいて比較演算を行い、メモリ書き込みの制御信号CTLWEとともに演算結果S36(Destination)をアドレス生成装置34に出力する。
以下に、演算結果によってループ処理を途中で終了するプログラム例を示す。
<プログラム例4>
for (i=0; i<256; i++) {
if ((a[i] - b[i]) == 0) break;
out[i] = a[i] - b[i];
図8(A)〜(E)は、図7の演算器35,36の演算実行状態およびメモリへの書き込み制御および読み出し終了制御状態を示す図である。
これは前段の演算器35の演算結果を後段の演算器36で比較し、これにより生成した制御信号CTLWEがデータと共にメモリ書き込み用のアドレス生成装置34に渡される。
メモリ書き込み用のアドレス生成装置34ではこの制御信号CTLWEによりメモリ31のバンク313に対するアドレスと書き込み(WE)の制御を行うが、この時メモリ書き込み用のアドレス生成装置34からメモリ読み込み用のアドレス生成装置32,33に対して動作を終了するような制御信号CTLENDを発生することによりメモリ31のバンク311,312の読み出し動作も終了することで一連の処理動作を完全に終了することができる。
<第5実施形態>
図9は、本発明に係るデータフロー型演算装置の第5の実施形態を示す構成図である。
本演算装置40は、複数(図9では5個)のバンク411〜415を備えたメモリ41、バンク411〜415に応対して設けられた第1〜第5のアドレス生成装置42(AG0),43(AG1),44(AG2),45(AG3),46(AG4)、第1の演算器(PE0)47、および第2の演算器48(PE1)を有している。
アドレス生成装置42は、アドレスADR42およびコントロール信号CTL42をバンク411に与えて演算器47の演算のための第1のデータを読み出して、第1のソースデータDT41として演算器47に出力する。
アドレス生成装置43は、アドレスADR43およびコントロール信号CTL43をバンク412に与えて演算器47の演算のための第2のデータを読み出して、演算の第1の制御信号CTLOPとともに第2のソースデータDT42として演算器47に出力する。
アドレス生成装置44は、アドレスADR44およびコントロール信号CTL44をバンク413に与えて演算器48の演算のための第3のデータを読み出して、第3のソースデータDT43として演算器48に出力する。
アドレス生成装置45は、演算器47による制御信号CTLADおよびアドレスデータS47に基づいてアドレスADR45およびコントロール信号CTL45をバンク414に与えて第4のデータを読み出して、第4のソースデータDT44として演算器48に出力する。
アドレス生成装置46は、アドレスADR46およびコントロール信号CTL46をバンク415に与えて演算器48の演算結果S48を、バンク415に格納する。
演算器47は、アドレス生成装置42による第1のソースデータDT41とアドレス生成装置43による第2のソースデータDT42に対して、第1の制御信号CTLOPに応じたたとえば所定の演算によりアドレスデータS47を生成し、第2の制御信号CTLADと共にアドレス生成装置45に出力する。
演算器48は、アドレス生成装置44による第3のソースデータDT43とアドレス生成装置45による第4のソースデータDT44に対して、所定の演算を行い、演算結果S48(Destination)をアドレス生成装置46に出力する。
演算器をアドレス計算に使う例を下に示す。
<プログラム例5>
for (i=0; i<256; i++) {
index = a[i] * b[i];
out[i] = c[index] + d[i];
本実施形態では、図9に示すように、一旦演算器47を使ってアドレスの演算をした後、アドレス生成装置45ではそのアドレスを利用してメモリを読み出し、別の演算器48で最終的な結果を得るものである。
また、ここへ更に条件実行演算を組み合わせることでより複雑なアドレス生成を行わせることも可能である。
なお、一般的な静止画や動画の処理は8ビットデータが基本であることが多いため、32ビットバスを用いたシステムではバスの利用効率が悪くなる。
そこで、本発明では累算処理の場合に着目してビットデータを4つまとめて処理することで転送効率/処理効率を改善している。
たとえば、8ビットデータが16個ありメモリ上で図10に示すように配置されているとする。
通常のようにデータを1つずつ読み出して処理をした場合は、図11に示すように、16回のメモリ転送が生じる。
これに対し、図12に示すように、4つずつ読み出した場合は4回の転送で済むことになる。
図13、図14はそれぞれ1つずつ、4つずつ読み出した場合の処理ブロック図である。図13および図14においては、51はアキュムレータ、52は加算器を示している。
図14に示すように、4つずつ読み出した場合演算器内部では一度1つにまとめられたデータから4つのデータを分離した後それらを1つに足し合わせ、これが累算されることになる。
また、動画像符号化などで多用される参照データに対する差分絶対値の合計を求める場合は、図15に示すように差分絶対値を4つ同時に求めて1つに足し込んだ後累算を行うことで実現できる。なお、図15において、53−1〜53−4は差分絶対値演算部(AbsDiff)を示している。
なお、これは16ビットデータの場合にも応用することができ、その場合16ビットデータ2つをまとめて処理することになる。
データフロー型演算装置を実装した場合、内部がパイプライン化される場合が多いため最終結果が求められるまでのレイテンシが大きくなる。
したがって、このような演算装置ではできる限り連続した動作をすることが望ましく、本発明の条件実行演算が可能になることにより従来複数回に分けて実行していたものが一度の実行で済むようになり、効率の良い動作が可能になる。
一方、複数のデータをひとつにまとめて累算する方法は動画符号化処理の動き検出など大量のデータを処理する場合にその処理量を大幅に減らすことが可能になり、装置の高効率化に寄与する。
以下では、一般的な2次IIRフィルタを実現するプログラムおよび具体的なハードウェアで実現したIIRフィルタの実施形態について説明する。
以下の例は一般的な2次IIRフィルタを実現するプログラムである。
<プログラム例6>
y[0] = init_y2n;
y[1] = init_y1n;
for (i=2; i<smpl+2; i++) {
y[i] = a0 * x[i] + a1 * x[i-1] + a2 * x[i-2] + b1 * y[i-1] + b2 * y[i-2];
}
このプログラムをそのままハードウェアへ適用すると、y[i-1]およびy[i-2]をメモリから読み出すことになり、更には多項式となることから演算リソースを多量に消費することになる。
そこで、上記例を累算形式に変形し、y[i-1]およびy[i-2]をレジスタに置き換えた例を以下に示す。
<プログラム例7>
y2 = init_y2n;
y1 = init_y1n;
a[] = {a2, a1, a0, b1, b2};
for (i=0; i<smpl; i++) {
y[i] = 0;
for (j=0; j<5; j++) {
if (j==3) y[i] += a[j] * y1;
else if (j==4) y[i] += a[j] * y2;
else y[i] += a[j] * x[i+j];
}
y2 = y1;
y1 = y[i];
}
図16は、上記プログラムをハードウェアで実現した場合に必要となるリソースとその接続関係を示したものである。
図16のIIRフィルタ60は、レジスタ61(FGreg),62(BGreg)、マルチプレクサ(MUX)63、および乗算累算器(MULTIPLIER/ACCUMULATOR)64を有している。
レジスタ61に乗算累算器64の演算結果が保持され、レジスタ62はレジスタ61の保持データが保持される。
マルチプレクサ63は、レジスタ61,62、入力データINAのいずれかを選択して乗算累算器64に入力させる。
乗算累算器64は、マルチプレクサ63の選択データと入力データINBとの乗算累算を行う。
図17は、図16のIIRフィルタ構成を実現する際に必要なパイプラインレジスタ等を含めたより現実的な一実施形態を示す図である。
図17のIIRフィルタ70は、レジスタ71〜76、マルチプレクサ(MUX)77〜80、乗算器81、および加算器(ADDER)82を有している。
レジスタ71(FGreg)はマルチプレクサ77の選択データを保持し、レジスタ72(BGreg)はマルチプレクサ78の選択データを保持する。レジスタ73は入力データINAを保持し、レジスタ74は入力データINBを保持し、レジスタ75はマルチプレクサ80の選択データを保持し、レジスタ76は加算器82の演算結果を保持する。
マルチプレクサ77はレジスタ76の保持データ、入力スタティックデータSD1、レジスタ71の保持データのうちのいずれかを選択してレジスタ71に出力する。
マルチプレクサ78は、レジスタ71の保持データ、入力スタティックデータSD2、レジスタ72の保持データのいずれかを選択してレジスタ72に出力する。
マルチプレクサ79は、レジスタ71の保持データ、レジスタ72の保持データ、レジスタ73の保持データのいずれかを選択して乗算器81に出力する。
マルチプレクサ80は、加算器82の演算結果または固定値0を選択してレジスタ75に出力する。
乗算器81は、マルチプレクサ79の選択データとレジスタ74の保持データとを乗算し加算器82に出力する。
加算器82は、レジスタ75の保持データと乗算器81の演算結果を加算してレジスタ76およびマルチプレクサ80に出力する。
プログラム例7でa[]、x[]で表される配列は、図16および図17における入力データとなり、y[]は出力データとなる。また、y1、y2で表される変数は図中のレジスタに相当し、それぞれFGreg(61,71)、BGreg(62,72)として表されている。
プログラム例7においては、ループ内で配列の引数による条件分岐を行っているが、これを本発明の特徴であるデータに付加された制御信号を用いた形へ書き換えると下記のプログラム例8のようになる。
<プログラム例8>
a[] = {a2, a1, a0, b1, b2};
bctl1[] = {1, 0, 0, 0, 0};
bctl2[] = {0, 0, 0, 1, 1};
bctl3[] = {0, 0, 0, 0, 1};
INA_CTL1 = 1;

for (i=0; i<smpl; i++) {
for (j=0; j<5; j++) {
INA = x[i+j];
INB = a[j];
INB_CTL1 = bctl1[j];
INB_CTL2 = bctl2[j];
INB_CTL3 = bctl3[j];

if (INA_CTL1 == 1) {
FREG = init_y1n;
BREG = init_y2n;
}
if (INB_CTL1 == 1) ACCREG = 0;
if (INB_CTL2 == 1 && INB_CTL3 == 1) ACCREG += BREG * INB;
else if (INB_CTL2 == 1 && INB_CTL3 == 0) ACCREG += FREG * INB;
else ACCREG += INA * INB;
OUT = ACCREG;
if (INB_CTL2 == 1 && INB_CTL3 == 1) {
BREG = FREG;
FREG = OUT;
}

if (INA_CTL1 == 1) INA_CTL1 = 0;

}

y[i] = OUT;

}
プログラム例8において、if分else分となっている部分が図17の実施形態における動作を表している。
この例では、4つの制御信号を組み合わせた幾つかの条件によって初期値の設定やオペランドの選択が行われる。
<第6実施形態>
図18は、本発明に係るデータフロー型演算装置の第6の実施形態を示す構成図である。
図18は、プログラム例8を実現させる構成例を示したものである。この例では主演算器(PE)として図18の装置70を用い、これにメモリおよびアドレス発生装置(AG)を組み合わせたものである。
本演算装置90は、複数(図9では3個)のバンク911〜913を備えたメモリ91、バンク911〜913に応対して設けられた第1〜第3のアドレス生成装置92(AG0),93(AG1),94(AG2)、および演算器(PE)95を有している。
アドレス生成装置92は、アドレスADR92およびコントロール信号CTL92をバンク911に与えて演算器95の演算のための第1のデータを読み出して、演算の制御
信号INA CTL1とともに第1のソースデータDT91(INA)として演算器95に出力する。
アドレス生成装置93は、アドレスADR93およびコントロール信号CTL93をバンク912に与えて演算器95の演算のための第2のデータを読み出して、演算の制御信号INB CTL1〜3とともに第2のソースデータDT92(INB)として演算器95に出力する。
アドレス生成装置94は、アドレスADR94およびコントロール信号CTL94をバンク913に与えて演算器95の演算結果を、バンク913に格納する。
演算器95は、アドレス生成装置92による第1のソースデータDT91(INA)とアドレス生成装置93による第2のソースデータDT92(INB)に対して、制御信号INA CTL1、並びにINB CTL1〜3に応じた、たとえば上記プログラム例に示す条件実行演算を行い、演算結果S95(Destination)をアドレス生成装置94に出力する。
図19(A)〜(O)は、図18の演算装置90の動作波形を示す図である。
演算器95のデータ入力はINAとINBの2つで、さらに制御信号としてINA_CTL1、INB_CTL1、INB_CTL2、INB_CTL3の4つが使用される。
これらはアドレス発生装置92,93により生成されるもので、制御信号INA_CTL1はアドレス生成装置92で、制御信号INB_CTL1〜3はアドレス生成装置93により生成しデータと共に演算器95に入力される。
制御信号INA_CTL1は、図17で示された内部レジスタ71(FGreg)および72(BGreg)を初期化するための信号で、通常は最初の一回のみINA_CTL1=1となる。
制御信号INB_CTL1は、図12(M)に示すように、アキュムレータレジスタ75(ACCREG)をクリアするための信号で、プログラム例8の場合5回累算をする際の最初のデータが入力されるタイミングでINB_CTL1=1となる。
制御信号INB_CTL2と制御信号INB_CTL3は乗数をレジスタ73(INA)、レジスタ71(FGreg)、レジスタ72(BGreg)の3つから選択するための信号であるが、それと同時に内部レジスタ71FGreg)、レジスタ72(BGreg)を更新するためにも使用される。
プログラム例8を実現する図18の構成例では5サイクルに1回の割合で結果が得られるが、演算ユニットを2つ使いパイプライン動作させることで結果を得るために必要なサイクル数を削減することが可能である。
このときの動作はプログラム例8を変形し、プログラム例9のようになる。
<プログラム例9>
a[] = {a2, a1, a0};
b[] = {b0, b1, b2};
bctl1[] = {1, 0, 0};
bctl2[] = {0, 1, 1};
bctl3[] = {0, 0, 1};
IN0B_CTL1 = 1;

for (i=0; i<smpl; i++) {
for (j=0; j<3; j++) {
IN0A = x[i+j];
IN0B = a[j];
IN0B_CTL2 = bctl1[j];

// ---------------- PE0 ---------------------
if (IN0B_CTL2 == 1) ACCREG0 = 0;
ACCREG0 += IN0A * IN0B;
OUT0 = ACCREG0;
// -------------------------------------------------

}

w[i] = OUT0;

for (j=0; j<3; j++) {
IN1A = OUT0;
IN1B = b[j];
IN1A_CTL1 = IN0B_CTL1;
IN1B_CTL1 = bctl1[j];
IN1B_CTL2 = bctl2[j];
IN1B_CTL3 = bctl3[j];

// ---------------- PE1 ---------------------
if (IN1A_CTL1 == 1) {
FREG1 = init_y1n;
BREG1 = init_y2n;
}
if (IN1B_CTL1 == 1) ACCREG1 = 0;
if (IN1B_CTL2 == 1 && IN1B_CTL3 == 1) ACCREG1 += BREG1 * IN1B;
else if (IN1B_CTL2 == 1 && IN1B_CTL3 == 0) ACCREG1 += FREG1 * IN1B;
else ACCREG1 += IN1A * IN1B;
OUT1 = ACCREG1;
if (IN1B_CTL2 == 1 && IN1B_CTL3 == 1) {
BREG1 = FREG1;
FREG1 = OUT1;
}
// --------------------------------------------------

if (IN1A_CTL1 == 1) IN1A_CTL1 = 0;

}

y[i] = OUT1;

}
プログラム例9において、if分else分となっている部分の前半部分は通常の乗算結果を累算しており、一つの演算ユニットPE0に割り当てる。後半部分は図18の実施形態例を用いたもので、もう一つの演算ユニットPE1に割り当てる。
このときの構成例を表したものが図20であり、図20に関連付けて第7の実施形態を説明する。
<第7実施形態>
図20は、本発明に係るデータフロー型演算装置の第7の実施形態を示す構成図である。
本演算装置100は、複数(図20では4個)のバンク1011〜1014を備えたメモリ101、バンク1011〜1014に応対して設けられた第1〜第4のアドレス生成装置102(AG0),103(AG1),104(AG2),105(AG3)、第1の演算器106(PE0)、および第2の演算器107(PE1)を有している。
アドレス生成装置102は、アドレスADR102およびコントロール信号CTL102をバンク1011に与えて演算器106の演算のための第1のデータを読み出して、第1のソースデータDT101(IN0A)として演算器106に出力する。
アドレス生成装置103は、アドレスADR103およびコントロール信号CTL103をバンク1012に与えて演算器106の演算のための第2のデータを読み出して、演算の制御信号IN0B CTL1,2とともに第2のソースデータDT102(IN0B)として演算器106に出力する。
アドレス生成装置104は、アドレスADR104およびコントロール信号CTL104をバンク1013に与えて演算器107の演算のための第3のデータを読み出して、演算の制御信号IN1B CTL1〜3とともに第3のソースデータDT103(IN1B)として演算器107に出力する。
アドレス生成装置105は、アドレスADR105およびコントロール信号CTL105をバンク1014に与えて演算器107の演算結果S107を、バンク1014に格納する。
演算器106は、アドレス生成装置102による第1のソースデータDT101(IN0A)とアドレス生成装置103による第2のソースデータDT102(IN0B)に対して、制御信号IN0B CTL1,2に応じたたとえば所定の演算により第4のソースデータDT104(IN1A)を生成し、制御信号IN1A CTL1と共に演算器107に出力する。
演算器107は、アドレス生成装置104による第3のソースデータDT103(IN1B)と演算器106による第4のソースデータDT104(IN1A)に対して、制御信号IN1B CTL1〜3および制御信号IN1A CTL1に応じた所定の演算を行い、演算結果S107(Destination)をアドレス生成装置105に出力する。
図20の演算装置100においては、演算器(PE0)106の演算結果を演算器(PE1)107の一方の入力とすることでパイプライン動作が可能になり、スループットを向上させている。
図21(A)〜(V)は、図20の演算装置100の動作波形を示す図である。
演算器(PE0)106はIN0AとIN0Bを入力として乗算を行い累積加算を行うが3サンプル毎に累算結果を初期化する必要があるためその制御信号としてIN0B_CTL1をアドレス発生装置102により生成する。
演算器(PE0)106の出力OUT0は演算器(PE1)107のIN1Aへと接続されるが、演算器(PE1)107ではIN1Aに同期した制御信号が必要になることから演算器(PE0)106を通過させる形で制御信号を入力する。
演算器(PE0)106における制御信号IN0B_CTL2がこれに相当するもので、アドレス生成装置103により生成された制御信号は演算器(PE1)107においてレジスタ71,72(FREG1とBREG1:FGreg,BGreg)の初期化に使用される。
また、時間軸の視点で見ると演算器(PE1)107の入力IN1Aは演算器(PE0106のパイプラインディレイ分遅れることになり、更に累算の結果が確定するまでにも2サイクル分待つ必要があるため、演算器(PE1)107においては演算器(PE0106に対し4サイクル分演算開始が遅れることになる。
図20の構成例の場合アドレス発生装置104をアドレス生成装置102および103に対し4サイクル遅らせることでこのような動作を実現することができる。
その他の演算器(PE1)107の動作に関しては図18の構成例における動作と同様なものとなる。
なお、一般的な信号処理においては固定小数点数により演算を行うことが多いが、この場合には、図22に示すように、図17の構成に対しシフタおよび丸め処理を加えることで容易に実現可能である。
図22の装置70Aにおいては、図17の構成に加算器82とレジスタ76との間にレジスタ83およびシフタおよび丸め処理部84を設けている。
以上のように、データフロー型演算装置を実装した場合、内部がパイプライン化される場合が多いため最終結果が求められるまでのレイテンシが大きくなる。したがってこのような演算装置ではできる限り連続した動作をすることが望ましく、本発明の条件実行演算が可能になることにより従来複数回に分けて実行していたものが一度の実行で済むようになり、効率の良い動作が可能になる。
一方、複数のデータをひとつにまとめて累算する方法は動画符号化処理の動き検出など大量のデータを処理する場合にその処理量を大幅に減らすことが可能になり、装置の高効率化に寄与する。
また、IIRフィルタのようなループバックのある処理をそのままハードウェアに適用しようとすると、一端メモリへ演算結果を書き出した後再度その結果を読み出す必要があることからデュアルポートメモリが必須となりシステムコストが高くなる欠点があった。 また、内部のパイプライン化によりメモリ→演算→メモリのレイテンシが大きいシステムでは場合によってはデータが揃うまで待機する動作を行わなければならず効率の悪い処理系になっていた。
これに対し、本発明を適用した場合はデュアルポートメモリを使う必要はなくなることからシステムコストを抑えることが可能で、更には効率的な処理が可能なことから処理時間と消費電力の削減にも寄与するものとなる。
以下に、本実施形態において採用するアドレス生成装置の具体的な構成例について説明する。
図23は、たとえば、図1のアドレス生成装置14、図9のアドレス生成装置46、図18のアドレス生成装置94、図20のアドレス生成装置105のように、入力データに基づいてアドレスを生成するアドレス生成装置の構成例を示す図である。
図23のアドレス生成装置200は、初期値を設定するためのレジスタ201,202、ステップ値を設定するためのレジスタ203,204、固定値を設定するためのレジスタ205、演算装置206,207、選択装置208,209、カウンタ210,211、および演算装置212を有している。
演算装置206は、レジスタ203のステップ値とカウンタ210からフィードバックされる値に基づいて、たとえば加算等の所定の演算を行い、演算結果を選択装置208に出力する。
演算装置207は、レジスタ204のステップ値とカウンタ211からフィードバックされる値に基づいて、たとえば加算等の所定の演算を行い、演算結果を選択装置209に出力する。
選択装置208は、図示されていない制御信号に基づいてレジスタ201の設定値と演算置206の出力のいずれかを選択しカウンタ210に出力する。
選択装置209は、図示されていない制御信号に基づいてレジスタ202の設定値と演算装置207の出力のいずれかを選択しカウンタ211に出力する。
カウンタ210は、選択装置208により選択されたレジスタ201の設定値(初期値)または演算装置206の演算結果の値によりカウント値を設定し、この値を演算装置206にフィードバックし、かつ第1アドレス計算カウント値ACNTV11として演算装置212に出力する。
カウンタ211は、選択装置209により選択されたレジスタ202の設定値(初期値)または演算装置207の演算結果の値によりカウント値を設定し、この値を演算装置207にフィードバックし、かつ第2アドレス計算カウント値ACNTV12として演算装置212に出力する。
演算装置212は、図示されていない制御信号に基づいてカウンタ210による第1アドレス計算カウント値ACNTV11と、カウンタ211による第2アドレス計算カウント値ACNTV12と、レジスタ205に設定された固定値と、入力データDINに基づいて所定の演算を行ってアドレスADRを計算する。
ここで、図23のアドレス生成装置200のアドレス生成動作について、図24(A)〜(G)のタイミングチャートに関連付けて説明する。
図24(A)はカウンタ210のカウント値CNT210を、図24(B)はカウンタ211のカウント値CNT211を、図24(C)は第1アドレス計算カウント値ACNTV11を、図24(D)は第2アドレス計算カウント値ACNTV12を、図24(E)はレジスタ205に設定された固定値SCVを、図24(F)は演算装置212への入力データDIN、および図24(G)は演算装置212において計算されたアドレスADRをそれぞれ示している。
アドレス生成は次のように行われる。
レジスタ201、レジスタ202にはカウンタの初期値として0が格納され、レジスタ203、レジスタ204にはステップ値として1が格納される。
演算装置206、および演算装置207はそれぞれ加算を実行する。
選択装置208は、3サイクルおきにレジスタ201の値を選択し、それ以外のときは演算装置206の値を選択する。
選択装置209は、常に演算装置207の演算結果の値を選択する。
これにより、カウンタ210およびカウンタ211のカウント値CNT210,CNT211は、図24(A),(B)に示すような値をとる。
このように動作させることで、第1アドレス計算カウント値ACNTV11、第2アドレス計算カウント値ACNTV12は、図24(C),(D)に示すような値をとる。
また、図24(E),(F)に示すように、レジスタ205には固定値SCVとして0が設定され、毎サイクル入力データDIN( 0,1,0,1,2,0,1,2,3....)が供給される。
そして、演算装置212は、以下の演算を実行して、アドレスADRを算出する。
(数1)
ADR=ACNTV11+ACNTV12+SCV+DIN
ここで入力データDINとしては、図示されていない他のアドレス生成装置を用いてメモリから読み出したデータや、本実施形態のようにメモリからの読み出しデータに所定の演算を実行した結果を用いることもできる。
演算装置211で実行する演算は減算、乗算などの一般的な演算も可能であり、加算に限定するものではないことは明らかである。
本例によれば、従来のDSPなどで生成される単純なアドレスパターンに比べて、複雑なアドレスパターンを生成することができる。
図25は、たとえば、図1のアドレス生成装置13、図9のアドレス生成装置43、図18のアドレス生成装置92,93、図20のアドレス生成装置103,104のように、制御信号を生成することができるアドレス生成装置の構成例を示す図である。
本アドレス生成装置300は、初期値を設定するレジスタ301、ステップ値を設定するレジスタ302、演算装置303、選択装置304、カウンタ305、演算装置306、パラメータレジスタ307、タイミングカウンタ308、制御装置309、および制御信号生成装置310を有している。また、入力として起動信号TRG、制御入力CTLINを有する。
演算装置303は、レジスタ302のステップ値とカウンタ305からフィードバックされる値に基づいて、たとえば加算等の所定の演算を行い、演算結果を選択装置304に出力する。
選択装置304は、図示されていない制御信号に基づいてレジスタ301の設定値と演算装置303の出力のいずれかを選択しカウンタ305に出力する。
カウンタ305は、選択装置304により選択されたレジスタ301の設定値(初期値)または演算装置303の演算結果の値によりカウント値を設定し、この値を演算装置303にフィードバックし、かつ第1アドレス計算カウント値ACNTV21として演算装置306および制御信号生成装置310に出力する。
カウンタ305は、制御装置309による制御信号S309aに応答してカウントアップ動作を開始する。
演算装置306は、図示されていない制御信号に基づいてカウンタ305による第1アドレス計算カウント値ACNTV21に基づいて所定の演算を行ってアドレスADRを算出する。
パラメータレジスタ307は、外部からアドレス生成遅延値が設定される。
タイミングカウンタ308は、起動信号TRGが入力されるとカウンタ値をカウントアップし、パラメータレジスタ307に設定された値になるまでアドレス生成を遅延させるタイミングをカウントする。
制御装置309は、タイミングカウンタ308のカウント値CNT308が、パラメータレジスタ307に設定された所定の遅延値に達したか否かを判定し、達したと判定した場合に制御信号S309aをカウンタ305に出力して、カウンタ305のカウントアップを有効にする。
また、制御装置309は、タイミングカウンタのタイミングカウント値CNT308が設定値に達した後に、制御信号S309bを制御信号生成装置310に出力してアドレス有効信号AVLDを有効するように制御する。
制御信号生成装置310は、制御入力CTLINとこの有効状態からアドレス有効信号AVLDを生成する。
制御信号生成装置310は、制御装置309による制御信号S309bに応答してアドレス有効信号AVLDを有効状態にし、カウンタ305のカウント値、すなわち第1アドレス計算カウント値ACNTV21が所定の終了値に達するとアドレス有効信号AVLDを無効状態にする。
制御信号生成装置310は、カウンタ305のカウント値が特定の値になったときに制御出力CTLOUTを有効、もしくは無効状態にすることができる。
ここで、図25のアドレス生成装置300におけるアドレス生成動作について図26(A)〜(G)のタイミングチャートに関連付けて説明する。
図26(A)はタイミングカウンタ308に与えれる起動信号TRGを、図26(B)はタイミングカウンタ308のタイミングカウント値CNT308を、図26(C)はカウンタ305による第1アドレス計算カウント値ACNTV21を、図26(D)は演算装置306において計算されたアドレスADRを、図26(E)は制御信号生成装置310で生成されるアドレス有効信号AVLDを、図26(F)は制御入力CTLINを、図26(G)は制御出力CTLOUTをそれぞれ示している。
アドレス生成はつぎのように行われる。
パラメータレジスタ307にはアドレス生成遅延値「4」が設定され、図26(A)に示すように、外部から入力されるトリガ信号としての起動信号TRGによりタイミングカウンタ308のカウントアップが行われる。
そして、図26(B)に示すように、タイミングカウンタ308のカウント値CNT308が、パラメータレジスタ307に設定された所定の遅延値「4」に達すると、制御装置309が、アドレス生成カウンタ305が動作するように制御信号S309aをカウンタ305に出力して、カウンタ305のカウントアップを有効にする。
レジスタ301にはカウンタの初期値として0が格納され、レジスタ302にはステップ値として2が格納される。演算装置303はたとえば加算を実行する。
選択装置304は常に演算装置303の値を選択する。
このように動作させることで、第1アドレス計算カウント値ACNTV21は、図26(C)に示すような値をとる。
演算装置306は、第1アドレス計算カウント値ACNTV21を用いてアドレスADRを算出する。
上記のアドレス生成と並行してアドレス有効信号AVLD・制御出力CTLOUTを出力することも可能である。
図26(E)〜(G)に示すように、アドレス有効信号AVLDは制御入力CTLINと、起動信号TRGとタイミングカウント値CTL308をもとに制御装置309と制御信号生成装置310により生成される。
制御装置309は、タイミングカウント値CNT308が設定値に達した後に、制御信号S309bによりアドレス有効信号AVLDを有効状態にし、カウンタ305のカウント値が終了値に達するとアドレス有効信号AVLDを無効状態にする。
制御信号生成装置310は、カウンタ305のカウント値が特定の値になったときに制御出力CTLOUTを有効、もしくは無効状態にする。
図26(C),(G)に示すように、本例では、第1アドレス計算カウント値ACNTV21が「6」と「12」になったときに制御出力CTLOUTを有効状態にしている。
本例によれば、アドレス生成と同時に制御信号とアドレス有効信号を出力することが可能であるため、これらの信号を用いてメモリや演算装置の制御を柔軟に行うことができるようになる利点がある。
また、アドレス生成のタイミングをパラメータで制御することが可能であるため、複数のメモリからの読み出しや、書き込みに時間的な依存関係がある場合についても容易に対応することが可能になる。
本発明に係るデータフロー型演算装置の第1の実施形態を示す構成図である。 図1の演算器の演算実行状態を示す図である。 本発明に係るデータフロー型演算装置の第2の実施形態を示す構成図である。 図3の演算器の演算実行状態を示す図である。 本発明に係るデータフロー型演算装置の第3の実施形態を示す構成図である。 図5の演算器の演算実行状態およびメモリへの書き込み制御状態を示す図である。 本発明に係るデータフロー型演算装置の第4の実施形態を示す構成図である。 図7の演算器の演算実行状態およびメモリへの書き込み制御および読み出し終了制御状態を示す図である。 本発明に係るデータフロー型演算装置の第5の実施形態を示す構成図である。 8ビットデータの配列の一例を示す図である。 8ビットデータを1つずつ読み出す場合の例を示す図である。 8ビットデータを4つずつ読み出す場合の例を示す図である。 8ビットデータを1つずつ演算処理する場合の例を示す図である。 8ビットデータを4つずつ演算処理する場合の例を示す図である。 差分絶対値を求める例を示す図である。 一般的なIIRフィルTの構成例を示す図である。 図16のIIRフィルタ構成を実現する際に必要なパイプラインレジスタ等を含めたより現実的な一実施形態を示す図である。 本発明に係るデータフロー型演算装置の第6の実施形態を示す構成図である。 図18の演算装置の動作波形図である。 本発明に係るデータフロー型演算装置の第7の実施形態を示す構成図である。 図20の演算装置の動作波形図である。 固定小数点数により演算を行うこと可能なように図17の構成に対しシフタおよび丸め処理を加えた構成例を示す図である。 図1のアドレス生成装置14や図9のアドレス生成装置46のように、入力データに基づいてアドレスを生成するアドレス生成装置の構成例を示す図である。 図23のアドレス生成装置のアドレス生成動作について説明するためのタイミングチャートである。 図1のアドレス生成装置13や図9のアドレス生成装置43のように、制御信号を生成することができるアドレス生成装置の構成例を示す図である。 図25のアドレス生成装置のアドレス生成動作について説明するためのタイミングチャートである。
符号の説明
10…演算装置、11…メモリ、111〜113…バンク、12〜14(AG0〜AG2)…アドレス生成装置、15(PE)…演算器、20,20A…演算装置、21…メモリ、211〜213…バンク、22〜24(AG0〜AG2)…アドレス生成装置、25(PE0)…演算器、26(PE1)…演算器、30…演算装置、31…メモリ、311〜313…バンク、32〜34(AG0〜AG2)…アドレス生成装置、35(PE0)…演算器、36(PE1)…演算器、40…演算装置、41…メモリ、411〜315…バンク、42〜36(AG0〜AG4)…アドレス生成装置、47(PE0)…演算器、48(PE1)…演算器、70…IIRフィルタ、71〜76…レジスタ、77〜80…マルチプレクサ(MUX)、81…乗算器、82…加算器(ADDER)、90…演算装置、91…メモリ、911〜914…バンク、92〜94…アドレス生成装置、95…演算器(PE)、100…演算装置、101…メモリ、1011〜1014…バンク、102〜105…アドレス生成装置、106…第1の演算器(PE0)、107…第2の演算器(PE1)、200…アドレス生成装置、201,202…初期値を設定するレジスタ、203,204…ステップ値を設定するレジスタ、205…固定値を設定するレジスタ、206,207…演算装置、208,209…選択装置、210,211…カウンタ、212…演算装置、300…アドレス生成装置、301…初期値を設定するレジスタ、302…ステップ値を設定する、303…演算装置、304…選択装置、305…カウンタ、306…演算装置、307…パラメータレジスタ、308…タイミングカウンタ、309…制御装置、310…制御信号生成装置、TRG…起動信号、CTLIN…制御入力、CTLOUT…制御出力、AVLD…アドレス有効信号。

Claims (8)

  1. 第1のソースデータを生成する第1の生成装置と、
    第2のソースデータを生成する第2の生成装置と、
    上記第1の生成装置による第1のソースデータと、上記第2の生成装置による第2のソースデータに対して制御信号に応じて演算種を切り替えて所定の演算を行い、演算結果を一時保持するレジスタを有する演算器と、を有し、
    上記第1の生成装置と上記第2の生成装置の少なくとも一方は、生成したソースデータに制御信号を付加して上記演算器に出力し、
    上記レジスタの保持データの読み出し、書き込みは、上記制御信号により制御される
    演算装置。
  2. 上記第1のソースデータおよび上記第2のソースデータを格納するメモリを有し、
    上記第1の生成装置は、上記第1のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第1のソースデータと上記制御信号を上記演算器に出力し、
    上記第2の生成装置は、上記第2のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第2のソースデータと上記制御信号を上記演算器に出力する
    請求項1記載の演算装置。
  3. 上記演算器の演算結果を受けてアドレスを生成して、演算結果を上記メモリに書き込む第3の生成装置をさらに有する
    請求項2記載の演算装置。
  4. 上記演算器は、バス幅より小さい語長のデータで累算を行う際に複数のデータをひとかたまりに扱い累算を行う
    請求項1記載の演算装置。
  5. 第1のソースデータを生成する第1の生成装置と、
    第2のソースデータを生成し、かつ、当該第2のソースデータに第1の制御信号を付加して出力する第2の生成装置と、
    第3のソースデータを生成する第3の生成装置と、
    上記第1の生成装置の第1のソースデータと、上記第2の生成装置による第2のソースデータに上記第1の制御信号に応じた所定の演算処理を行って第4のソースデータを生成する第1の演算器と、
    上記第3の生成装置による第3のソースデータと、上記第1の演算器による第4のソースデータに対して第2の制御信号に応じて演算種を切り替えて所定の演算を行い、演算結果を保持するレジスタを有する第2の演算器と、を有し、
    上記第3のアドレス生成装置および上記第1の演算器の少なくとも一方は生成したソースデータに第2の制御信号を付加して上記第2の演算器に出力し、
    上記レジスタの保持データの読み出し、書き込みは、上記第2制御信号により制御される
    演算装置。
  6. 上記第1のソースデータ、上記第2のソースデータ、および上記第2のソースデータを格納するメモリを有し、
    上記第1の生成装置は、上記第1のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第1のソースデータを上記第1の演算器に出力し、
    上記第2の生成装置は、上記第2のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第2のソースデータと上記第1の制御信号を上記第1の演算器に出力し、
    上記第3の生成装置は、上記第3のソースデータを読み出すためのアドレスを生成し、当該アドレスに基づいて読み出した第3のソースデータを上記第2の演算器に出力する
    請求項5記載の演算装置。
  7. 上記第2の演算器の演算結果を受けてアドレスを生成して、演算結果を上記メモリに書き込む第4の生成装置をさらに有する
    請求項6記載の演算装置。
  8. 上記第1および第2の演算器の少なくとも一方は、バス幅より小さい語長のデータで累算を行う際に複数のデータをひとかたまりに扱い累算を行う
    請求項5記載の演算装置。
JP2005024910A 2005-02-01 2005-02-01 演算装置 Pending JP2006215611A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2005024910A JP2006215611A (ja) 2005-02-01 2005-02-01 演算装置
US11/343,169 US7673117B2 (en) 2005-02-01 2006-01-30 Operation apparatus
KR1020060009512A KR101244107B1 (ko) 2005-02-01 2006-02-01 연산 장치
CNB2006100711704A CN100383729C (zh) 2005-02-01 2006-02-05 运算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005024910A JP2006215611A (ja) 2005-02-01 2005-02-01 演算装置

Publications (1)

Publication Number Publication Date
JP2006215611A true JP2006215611A (ja) 2006-08-17

Family

ID=36781176

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005024910A Pending JP2006215611A (ja) 2005-02-01 2005-02-01 演算装置

Country Status (4)

Country Link
US (1) US7673117B2 (ja)
JP (1) JP2006215611A (ja)
KR (1) KR101244107B1 (ja)
CN (1) CN100383729C (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110153995A1 (en) * 2009-12-18 2011-06-23 Electronics And Telecommunications Research Institute Arithmetic apparatus including multiplication and accumulation, and dsp structure and filtering method using the same
TWI462433B (zh) * 2011-09-02 2014-11-21 Delta Electronics Inc 馬達及其製造方法、風扇

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4056848A (en) * 1976-07-27 1977-11-01 Gilley George C Memory utilization system
JPS54100634A (en) * 1978-01-26 1979-08-08 Toshiba Corp Computer
JPH0246266U (ja) * 1988-09-26 1990-03-29
JP2748503B2 (ja) 1989-02-28 1998-05-06 ソニー株式会社 デジタル信号処理装置
JP2592979B2 (ja) * 1990-04-25 1997-03-19 株式会社東芝 信号処理用集積回路装置
US5305446A (en) * 1990-09-28 1994-04-19 Texas Instruments Incorporated Processing devices with improved addressing capabilities, systems and methods
US5390304A (en) * 1990-09-28 1995-02-14 Texas Instruments, Incorporated Method and apparatus for processing block instructions in a data processor
JP3164832B2 (ja) * 1991-03-22 2001-05-14 株式会社日立製作所 描画制御装置
US5363322A (en) * 1991-04-02 1994-11-08 Motorola, Inc. Data processor with an integer multiplication function on a fractional multiplier
AU4804493A (en) * 1992-08-07 1994-03-03 Thinking Machines Corporation Massively parallel computer including auxiliary vector processor
US6263420B1 (en) * 1997-09-17 2001-07-17 Sony Corporation Digital signal processor particularly suited for decoding digital audio
JP3336986B2 (ja) * 1999-02-03 2002-10-21 日本電気株式会社 信号処理プロセッサ及びそれに用いる丸め機能付き積和演算器
US6477683B1 (en) * 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
JP2001043084A (ja) * 1999-05-24 2001-02-16 Toshiba Microelectronics Corp プロセッサ装置
US6424986B1 (en) * 1999-05-28 2002-07-23 Winbond Electronics (H.K.) Ltd. Architecture of discrete wavelet transformation
US7376820B2 (en) * 2000-03-16 2008-05-20 Fujitsu Limited Information processing unit, and exception processing method for specific application-purpose operation instruction
US7233970B2 (en) * 2001-05-02 2007-06-19 Cipher Corporation Limited Computational method, system, and apparatus
US6799261B2 (en) * 2002-06-28 2004-09-28 Motorola, Inc. Memory interface with fractional addressing
US7293155B2 (en) * 2003-05-30 2007-11-06 Intel Corporation Management of access to data from memory
US7505295B1 (en) * 2004-07-01 2009-03-17 Netlogic Microsystems, Inc. Content addressable memory with multi-row write function

Also Published As

Publication number Publication date
US7673117B2 (en) 2010-03-02
US20060179166A1 (en) 2006-08-10
CN1831755A (zh) 2006-09-13
CN100383729C (zh) 2008-04-23
KR20060088499A (ko) 2006-08-04
KR101244107B1 (ko) 2013-03-18

Similar Documents

Publication Publication Date Title
KR20110090915A (ko) Simd 곱셈-누적 연산 실행장치 및 방법
JP2016526220A (ja) プログラム可能な最適化を有するメモリネットワークプロセッサ
JP2007519052A (ja) 命令制御式データ処理装置
GB2474901A (en) Multiply-accumulate instruction which adds or subtracts based on a predicate value
JP2014501009A (ja) データを移動させるための方法及び装置
JP2007317179A (ja) 帯域幅要件が軽減された行列乗算
CN108319559B (zh) 用于控制矢量内存存取的数据处理装置及方法
JP2008242647A (ja) プロセッサ
EP2866138B1 (en) Floating-point supportive pipeline for emulated shared memory architectures
TWI613590B (zh) 處理器流水線中的靈活的指令執行
TWI613589B (zh) 處理器流水線中的靈活的指令執行
JP2006215611A (ja) 演算装置
JP4771079B2 (ja) Vliw型プロセッサ
JP3935678B2 (ja) Simd積和演算方法、積和演算回路、および、半導体集積回路装置
JP7048612B2 (ja) ベクトル生成命令
JP4444305B2 (ja) 半導体装置
JP5145659B2 (ja) ベクトルリネーミング方式およびベクトル型計算機
JP6378515B2 (ja) Vliwプロセッサ
JP2004503872A (ja) 共同利用コンピュータシステム
JP4590926B2 (ja) 演算装置
WO2001033385A2 (en) Surface computer and computing method using the same
JP2008102599A (ja) プロセッサ
JP5599987B2 (ja) 多重化用補助peおよび半導体集積回路
JP2006293741A (ja) プロセッサ
JP2009059187A (ja) マイクロプロセッサおよびデータ処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070612

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101019

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101213

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110621