[go: up one dir, main page]

JP2003067360A - 積和演算方法および積和演算装置 - Google Patents

積和演算方法および積和演算装置

Info

Publication number
JP2003067360A
JP2003067360A JP2001254847A JP2001254847A JP2003067360A JP 2003067360 A JP2003067360 A JP 2003067360A JP 2001254847 A JP2001254847 A JP 2001254847A JP 2001254847 A JP2001254847 A JP 2001254847A JP 2003067360 A JP2003067360 A JP 2003067360A
Authority
JP
Japan
Prior art keywords
data
address
zero
product
conversion
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
JP2001254847A
Other languages
English (en)
Inventor
Mitsuhiro Inazumi
満広 稲積
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.)
Seiko Epson Corp
Original Assignee
Seiko Epson 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 Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2001254847A priority Critical patent/JP2003067360A/ja
Publication of JP2003067360A publication Critical patent/JP2003067360A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Complex Calculations (AREA)

Abstract

(57)【要約】 【課題】直交変換処理において演算量の多い積和演算を
簡素化する。 【解決手段】データ記憶手段1から積和演算単位として
8個のデータを切り出すデータ選択手段2と、切り出さ
れた8個のデータのそれぞれが零か非零かを判断する零
・非零判定手段3と、その8個のデータの非零要素の存
在する位置に基づき、CPU6で生成されるデータアド
レスに対し、前記非零要素のみを連続的に読み出し可能
となるようなアドレス変換を行うアドレス変換手段4a
と、同じく、CPU6で生成される変換係数アドレスに
対し、前記非零要素に対応する変換係数の読み出しを可
能とするようなアドレス変換を行うアドレス変換手段4
bとを有する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、音情報、画像情報、映
像情報などの情報圧縮、また符号化などの信号処理に用
いられる直交変換処理を高速に行うための積和演算方法
および積和演算装置に関する。
【0002】
【従来の技術】情報機器の高機能化により、情報の符号
化、圧縮に欠かせない直交変換処理は、より重要度を増
している。また、情報機器の汎用性の面から、また技術
革新の速さへの対応のために、より汎用的なハードウェ
ア、また、より一般的なデータ構造に対応できる直交変
換処理方法が求められている。
【0003】以下は具体的な説明のために、広く用いら
れている静止画符号化技術であるJPEG処理を例にと
る。JPEGは、離散コサイン変換(DCT)、量子
化、ランレングス符号化、ハフマン符号化などを技術要
素として含む画像圧縮、符号化方法である。図6から図
8はこれらを簡単に説明するためのものである。
【0004】図6は、画像データD1からJPEG処理
の単位となるデータブロックA1,A2,A3,…の切
り出しを模式的に示すものである。JPEG処理は、N
とMを自然数とし、8N×8Mのサイズのデータブロッ
クに対して行われる。8N×8Mのデータブロックは、
データを間引かれて、最終的に8×8のサイズとなり、
JPEG処理そのものは、全て8×8のデータブロック
に対して行われる。そのため、以降は8×8のデータブ
ロックを例にして説明する。
【0005】具体的な例として、あるデータブロックの
データが図7(a)のようなものであるとする。JPE
G処理の第1ステップは、これにDCT処理を行うもの
である。DCT処理は直交変換の一種であり、画像デー
タを周波数領域に変換するものである。DCT処理は数
式で表現すると、
【0006】
【数1】
【0007】のように表される。この(1)式におい
て、Pは画像データであり、Cは変換係数、i、jはそ
れぞれ横方向、縦方向の画素の位置を示す。また、m,
nはそれぞれ横方向、縦方向の周波数成分を示す。ま
た、Bは本来、符号無しデータである画素データを計算
の都合上、符号有りデータへ変換するためのバイアス値
である。上記の演算によって得られるSが、元画像を周
波数領域へ変換したものである。
【0008】この処理により、図7(a)のデータは、
図7(b)のデータへ変換される。画像の復号時には、
このデータに対し、以下に示す(2)式のような逆DC
T処理を行うことにより、元のデータが復元される。
【0009】
【数2】
【0010】JPEG処理における次のステップは、量
子化である。人間の視覚特性は周波数の低いデータに対
して敏感であり、逆に周波数の高いデータに対して鈍感
である。この特性を利用し、周波数の低い領域のデータ
をより細かなスケールで表現し、逆に周波数の高い領域
のデータをより粗いスケールで表現することにより、全
体としてのデータ量を削減することができる。このよう
な操作をスカラー量子化と呼ぶ。
【0011】仮に図7(d)のような量子化スケールを
用いた場合、図7(b)のデータは、図7(c)のデー
タに量子化される。この図7(c)より明らかなよう
に、零となる要素の数が増えている。
【0012】JPEG処理における次のステップは、ラ
ンレングス符号化である。図8および図9はこれを説明
するためのものである。まず最初に8×8の64個の要
素は、図8(a)に示すようなジグザグスキャン順序
で、図8(b)に示すような1列のデータへ並べ替えら
れる。これは、より最初の方に次元的な意味での低周波
側のデータがあり、後に行くほど高周波側のデータが並
べられることになる。
【0013】図9は、図7(c)のデータを並べ替えた
例であり、図9(a)のデータは、図9(b)のように
並べ替えられる。実際のランレングス符号化では、この
並びの中の零の連鎖をさらに符号化する。たとえば、図
9(c)に示すように、ある位置以降のデータが全て零
である場合、その零の連鎖の全てを、一つのデータ終端
記号(End Of Block、略してEOB)で置
き換える。さらに、それ以外の零もそれぞれ記号に置き
換えられるのであるが、本発明の要点からは離れるので
省略する。
【0014】JPEGにおける次のステップはハフマン
符号化であるが、これも本発明の要点から離れるので省
略する。
【0015】ところで、JPEG全体の処理の中で、特
にDCT処理は非常に大量の演算を必要とする。つま
り、この部分を高速化することが、JPEG処理全体の
高速化につながる。以下、DCT演算を例にとり、その
高速化について説明する。
【0016】DCT演算は前述の(1)式に示したよう
なものであるが、これは以下に示すような2段階の1次
元処理として実行される。
【0017】
【数3】
【0018】
【数4】
【0019】この計算を、より分かりやすくするため
に、変換係数を
【0020】
【数5】
【0021】とし、行列演算の形で書くと以下のような
形となる。
【0022】
【数6】
【0023】
【数7】
【0024】これは模式的に書くと、図10(a),
(b)のように、行方向の演算処理と列方向の演算処理
(処理方向それぞれ矢印で示す)を、行または列のいず
れかから順次実行すると言うことである。ここで重要で
あるのは、(3)式と(4)式の実行順序についての自
由度があると言うことである。原理的に言えば、演算が
有限精度で行われることによる誤差を除き、最終的な結
果は、この実行順序に依存しない。
【0025】DCT演算の高速化は、このような行列演
算を高速化することと同等になる。このような高速化に
おいて、従来例において用いられる方法は以下のような
ものがある。
【0026】特開平4−70060において用いられて
いる手法は、データブロック内の全てのデータが零の
時、そのDCT演算をスキップするというものである。
【0027】上の式から明らかであるように、このよう
な条件では、演算結果は全て零になるので、演算を省略
することが可能である。このような条件は、特にプログ
レッシブ型と呼ばれる時に成立する可能性が高い。
【0028】特開平4−137975において用いられ
ている手法は、4並列演算が可能なハードウェアにおい
て、その4要素が零の時に演算をスキップすると言うよ
うなものである。
【0029】DCT演算で用いられるデータの精度は1
6ビットであることが多く、64ビットの演算レジスタ
をもつハードウェアにおいては、4つのデータを同時に
処理することができる。この並列演算により処理を高速
化し、さらに、結果が自明であるデータが全て零の時に
演算を省略することにより、より高速化を行うものであ
る。この手法は特開平4−200079においても述べ
られている。
【0030】また、特開平4−220081において用
いられている手法は、上述の特開平4−70060と類
似した手法であるが、データブロック内のデータが直流
成分、つまり、(0、0)要素のみの場合に対応したも
のである。このとき、DCT演算結果は、全てのデータ
が同じ値となり、1つのデータの演算を行うだけで、演
算結果を得ることができる。
【0031】また、特開平10−63646で用いられ
ている手法は、データの状態に対応した複数の演算手段
を持ち、EOBの位置により、それらの演算手段の内か
ら最適なものを選択することにより演算を高速化するも
のである。
【0032】図11はこれを簡単に説明するものであ
る。図11(a)に示す位置にEOBが現れたと仮定す
ると、先に説明したように、それ以降のデータは全て零
である。逆に、それ以前のデータは零ではない可能性が
高い。つまり、零ではないデータの位置を塗りつぶし、
零であるデータの位置を塗りつぶさないで表示すると、
ある点にEOBが現れた場合の零、非零のデータの分布
は、図11(b)のようなものである可能性が高い。こ
のデータの偏りに対応する演算手段を複数用意し、最も
適切な演算手段を選択することにより、DCT演算を高
速化することができる。
【0033】特開平10−322699は、上述の例と
類似した考え方であるが、予めデータ領域を2つの領域
に分割し、データが零ではない可能性が高い低周波領域
においては常に高速DCTアルゴリズムを用いた演算を
行い、それ以外の領域では通常のDCTを行うものであ
る。これは図12(a)に示すように、たとえば、デー
タ領域を4つに分割し、左上の領域Z1は常にデータが
あると仮定し、図12(b)に示すように、その左上の
領域はすべて処理対象とし、それ以外の領域は、個別に
零、非零の判断と処理を行うものである。
【0034】これは、処理をある程度固定することによ
り、先の従来例で必要であった条件判断のための負荷を
軽減するものである。
【0035】特開平11−41601は、以上で説明し
た4並列演算、複数の演算手段、またEOBの位置によ
る条件判断の全てを用いるものである。
【0036】
【発明が解決しようとする課題】先に述べたような従来
例は、それぞれ有効なものであるが、以下に述べるよう
な課題は残る。
【0037】特開平4−70060および特開平4−2
20081に述べられているのは、データが特殊な状態
である場合のみの高速化であり、より一般的な条件での
有効性は劣る。
【0038】特開平4−137975および特開平4−
200079に述べられているような4並列演算ハード
ウェアを基本とするものは、4個のデータの整列、分解
の負荷、また、4個のデータが零か非零かの判断の負荷
が大きい。また、4並列演算処理の効果は非常に大きな
ものであるが、このような機能を持つハードウェア以外
においては有効なものではない。
【0039】具体的な例として、図13(a)のような
データを仮定する。図中の塗りつぶした部分が非零要素
であるとする。この場合、4並列演算を用いると、図1
3(b)の塗りつぶした位置の要素につき演算を行う必
要がある。勿論、並列演算の効果により、演算処理時間
の増大は少ないと考えられるが、同時に、単純な処理に
比較した処理の高速化の効果もない。また、データの
零、非零の判断、及び、データの整列、分解の処理が付
加的に必要となる。
【0040】特開平10−63646、および、特開平
10−322699は複数の演算手段を持つものであ
り、処理の複雑さが増す。またEOBによる条件判断
は、必ずしも有効なものではない。たとえば、上と同じ
図14(a)のようなデータを仮定する。そうすると、
EOBによる判断は、図14(b)のようなデータを仮
定することになり、非常に冗長な演算を行う必要がでて
くる。特開平11−41601も以上と同様である。
【0041】以上のように従来例における直交変換処理
の高速化手法は、特殊なデータの場合のみへ対応したも
のであり、また、特定のハードウェア構造を仮定したも
のである。また、一部は非常に複雑な構造を必要とする
ものである。
【0042】本発明は、以上の課題を解決し、音情報、
画像情報、映像情報などの情報圧縮、また符号化などの
信号処理に用いられる直交変換処理を高速に行うための
積和演算方法および積和演算装置を提供することを目的
としている。
【0043】
【課題を解決するための手段】上述した目的を達成する
ため、本発明の積和演算方法は、積和演算単位を構成す
るN個のデータを所定のアドレス順で順次読み出して積
和演算を行う積和演算方法において、前記N個のデータ
のそれぞれについて零か非零かを判断し、そのN個のデ
ータにおける非零要素の存在する位置を示す情報に基づ
いて、前記アドレスに対し、前記非零要素のみを連続的
に読み出し可能となるようなアドレス変換を行い、その
変換後のアドレスによって読み出されたデータに対して
順次積和演算を行うようにしている。
【0044】この積和演算方法において、前記N個のデ
ータにおける非零要素の存在する位置に基づくアドレス
変換は、積和演算を行うに必要な変換係数を読み出すた
めのアドレスに対しても行い、その変換後のアドレスに
よって前記非零要素に対応する変換係数の読み出しを行
うようにしている。
【0045】また、本発明の積和演算装置は、積和演算
単位を構成するN個のデータを所定のアドレス順で順次
読み出して積和演算を行う積和演算装置において、処理
対処となるデータが記憶されるデータ記憶手段と、この
データ記憶手段に記憶された処理対象となるデータか
ら、積和演算単位となるN個のデータを切り出すデータ
選択手段と、このデータ選択手段で切り出されたN個の
データのそれぞれが零か非零かを判断する零・非零判定
手段と、この零・非零判定結果において非零要素の存在
する位置を示す情報に基づいて、前記アドレスに対し、
前記非零要素のみを連続的に読み出し可能となるような
アドレス変換を行うアドレス変換手段とを有し、このア
ドレス変換手段によるアドレス変換後のアドレスによっ
て読み出されたデータに対して前記積和演算手段により
積和演算を行うようにしている。
【0046】このような積和演算装置において、前記N
個のデータにおける非零要素の存在する位置に基づいた
アドレス変換を行うアドレス変換手段は、前記N個のデ
ータを順次読み出すためのアドレスに対してアドレス変
換を行うデータアドレス変換手段と、前記変換係数を読
み出すためのアドレスに対してアドレス変換を行う変換
係数アドレス変換手段を設け、前記データを読み出すた
めのアドレスに対しては、前記データアドレス変換手段
により前記非零要素のみを連続的に読み出し可能となる
ようなアドレス変換を行い、前記変換係数を読み出すた
めのアドレスに対しては、前記変換係数アドレス変換手
段により前記非零要素に対応する変換係数の読み出しが
可能となるようなアドレス変換を行うようにしている。
【0047】このように本発明は、積和演算単位を構成
するN個のデータのそれぞれについて零か非零かを判断
し、そのN個のデータにおける非零要素の存在する位置
を示す情報に基づき、たとえば、CPUやDSP(Digi
tal Signal Processor)などの積和演算処理手段で生成
されるアドレスに対し、前記非零要素のみを連続的に読
み出し可能となるようなアドレス変換を行い、そのアド
レス変換後のアドレス順で読み出されたデータに対して
順次積和演算を行うようにしている。
【0048】このように、CPUやDSPなどが生成す
る連続的なアドレス(積和演算単位として切り出された
N個のデータを、たとえば、データ位置0から順に1,
2,3,…とアクセスするためのアドレス)を、非零要
素のデータのみを順次アクセス可能なアドレスに変換し
て、その変換後のアドレス順でデータを読み出して積和
演算を行うようにしている。
【0049】これにより、CPUやDSPなどは単に連
続したアドレスによって演算すべきデータを読み出して
積和演算する動作を行うだけで、実際には、疎な状態で
飛び飛びにしか存在しない非零要素のみを次々と連続し
て読み出す動作を行うことになる。したがって、たと
え、積和演算すべき非零要素のデータが疎な状態で散ら
ばって存在していたとしても、その疎な状態の非零要素
を次々と連続的に読み出すことができ、これによって、
直交変換処理に伴う積和演算量を効率よく行うことがで
き、その演算量を大幅に削減することができる。
【0050】また、そのアドレス変換は、積和演算を行
うに必要な変換係数を読み出すためのアドレスに対して
も行うようにしているので、疎な状態で存在する非零要
素のデータに対応する変換係数のみを順次アクセスする
ことができる。
【0051】
【発明の実施の形態】以下、本発明の実施の形態につい
て説明する。なお、この実施の形態で説明する内容は、
本発明の積和演算方法および積和演算装置についての説
明である。
【0052】また、本発明の積和演算方法および積和演
算装置は特定の直交変換に適用されるものではないが、
この実施の形態では具体的な説明のために、広く用いら
れている静止画符号化技術であるJPEG処理に適用す
る場合を例にとる。
【0053】本発明の基本的な考え方は、一般的なCP
UやDSPにおいては、積和演算すべきデータが疎な状
態で並んで存在する場合の積和演算効率は悪いが、密な
状態に並んで存在するデータについては効率良く積和演
算を行うことができることを利用したものである。
【0054】このため、本発明では、疎な状態で並んだ
データ位置に依存したアドレス変換処理を行うことによ
り、CPUやDSPなどの積和演算処理手段におけるソ
フトウエア側からは、あたかも密にデータが分布してい
るかのようにみせるようにしたものである。
【0055】本発明は大別して2つの処理(これを第1の
処理と第2の処理という)に分けて考えることできる。
【0056】第1の処理は、処理対象データが記憶され
ているデータ記憶手段から、1つの積和演算単位を構成
するN個(ここではJPEGを例にとっているのでN=
8)データを切り出し、その積和演算単位の中に非零要
素がどのような位置に存在ししているかを判断する非零
要素位置の判断処理である。
【0057】また、第2の処理は、第1の処理で判断され
た非零要素位置の判断処理に基づき、CPUやDSPで
生成されるアドレスを変換するアドレス変換処理であ
る。
【0058】なお、このCPUやDSPで生成されるア
ドレスは、この場合、8個のデータを順次読み出すため
のアドレス(データアドレスという)と、それぞれのデ
ータに対応した変換係数を読み出すためのアドレス(変
換係数アドレスという)が存在し、これらデータアドレ
スと変換係数アドレスをともにアドレス変換する必要が
あるが、これらのアドレス変換処理は同様に考えること
ができるので、まずは、データアドレスについての処理
を説明する。
【0059】図1は第1の処理を説明するもので、図2は
第2の処理を説明する図である。図1において、データ記
憶手段1に記憶されているデータの中から積和演算単位
として切り出された8個のデータ(上述したように、こ
こではJPEGを例にしているので1つの積和演算単位
を8個のデータとし、そのデータ位置を「0」〜「7」
で表す)をデータ選択手段2が切り出し、その切り出し
た8個のデータの零・非零判定を零・非零判定手段3に
より行う。
【0060】ここでは、黒く塗りつぶした部分を非零要
素とし、その非零要素のデータを“1”で表し、また、
零要素のデータを“0”で表すと、この切り出された8
個のデータの零・非零判定結果は、“1001011
0”となる。これを10進数で表すと、「150」とな
り、この零・非零判定手段による零・非零判定結果であ
る非零要素の位置を示す情報に基づいてアドレス変換処
理を行なう。
【0061】まず、この非零要素の位置を示す情報を用
いて、アドレス変換手段がアドレッシングモード設定処
理を行う。このアドレッシングモード設定処理は、アド
レッシングモード選択手段41における「0」〜「25
5」の「150」の位置をkeyとして、アドレッシング
データ記憶手段42内のアドレッシングデータを取得す
る処理である。
【0062】このアドレッシングデータ記憶手段42に
は、アドレッシングモード選択手段41の「0」〜「2
55」のそれぞれに対応したデータ長とそのデータ位置
が記述されていて、たとえば、アドレッシングモード選
択手段41の「150」はデータ長が「4」でそのデー
タ位置が「1,2,4,7」であることを示している。
つまり、アドレッシングモード選択手段41の「15
0」は、8個のデータのうち非零要素のデータが4個存
在し、その4個は「0」〜「7」のデータ位置のうち、
「1」,「2」,「4」,「7」の位置に存在している
ことを示している。
【0063】ちなみに、アドレッシングモード選択手段
41の「0」は、非零要素が0個であるので、そのデー
タ位置は無いことを意味している。また、アドレッシン
グモード選択手段41の「255」は、8個のデータ全
てが非零要素であって、その8個のデータは「0」,
「1」,「2」,「3」,「4」,「5」,「6」,
「7」のデータ位置に存在していることを示している。
【0064】このようにして、1つの積和演算単位とし
て切り出された8個のデータに対し、非零要素の数とそ
のデータ位置が設定される。そして、このように設定さ
れた内容に基づいたアドレス変換処理がなされる。この
アドレス変換処理は図2に示すようにして行われる。
【0065】まず、ベースアドレス記憶手段43に記憶
されているベースアドレス(積和演算単位として切り出
された8個のデータに対し、最初のアドレスとして設定
されるアドレス)を読み出して、読み出されたベースア
ドレス(0x1000とする)を、積和演算処理手段と
してのCPUやDSPが、積和演算単位として切り出さ
れた8個のデータを順に読み出すように生成した連続的
なアドレス(これをここでは仮想アドレスと呼び、0x
1000,0x1001,0x1002,…で表す)か
ら引き算する。なお、このCPUやDSPから出力され
る仮想アドレスは仮想アドレス入力手段44に入力され
ている。
【0066】たとえば、ベースアドレス0x1000を
仮想アドレス0x1000から引き算すると「0」であ
り、その「0」をkeyとして、図1で設定されたアドレッ
シングデータ記憶手段42のアドレッシングデータ(こ
の場合、データ長が「4」でそのデータ位置が「1,
2,4,7」)を見ると、データ位置として「1」が書
き込まれていて、この「1」をベースアドレス0x10
00に加算して、物理アドレスとして0x1001を得
る。この物理アドレス0x1001は物理アドレス記憶
手段45に記憶される。
【0067】同様に、ベースアドレス0x1000を仮
想アドレス0x1001から引き算すると「1」であ
り、その「1」をkeyとして、図1で設定されたアドレ
ッシングデータ記憶手段42のアドレッシングデータ
(同じく、データ長が「4」でそのデータ位置が「1,
2,4,7」)を見ると、この場合、データ位置として
「2」が書き込まれていて、この「2」をベースアドレ
ス0x1000に加算して、物理アドレスとして0x1
002を得る。この物理アドレス0x1002は物理ア
ドレス記憶手段45に記憶される。
【0068】また、ベースアドレス0x1000を仮想
アドレス0x1002から引き算すると「2」であり、
その「2」をkeyとして、図1で設定されたアドレッシン
グデータ記憶手段42のアドレッシングデータ(同じ
く、データ長が「4」でそのデータ位置が「1,2,
4,7」)を見ると、この場合、データ位置として
「4」が書き込まれていて、この「4」をベースアドレ
ス0x1000に加算して、物理アドレスとして0x1
004を得る。この物理アドレス0x1004は物理ア
ドレス記憶手段45に記憶される。
【0069】さらに、ベースアドレス0x1000を仮
想アドレス0x1003から引き算すると「3」であ
り、その「3」をkeyとして、図1で設定されたアドレッ
シングデータ記憶手段42のアドレッシングデータ(同
じく、データ長が「4」でそのデータ位置が「1,2,
4,7」)を見ると、この場合、データ位置として
「7」が書き込まれていて、この「7」をベースアドレ
ス0x1000に加算して、物理アドレスとして0x1
007を得る。この物理アドレス0x1007は物理ア
ドレス記憶手段45に記憶される。
【0070】このような処理によって、CPUやDSP
が生成した仮想アドレス0x1000,0x1001,
0x1002,0x1003に対する物理アドレス0x
1001,0x1002,0x1004,0x1007
が得られる。
【0071】この物理アドレス0x1001,0x10
02,0x1004,0x1007は、図1に示すデー
タ選択手段2によって切り出された積和演算単位の8個
のデータに対し、それぞれ非零要素に対応する位置を指
し示すアドレスとなる。
【0072】このように、本発明によれば、積和演算す
べき非零要素のデータが疎な状態で散らばって並んでい
るような場合、上述したようなアドレス変換を行うこと
によって、CPUやDSP側からみたとき、疎な状態で
散らばっている非零要素のデータがあたかも密な状態で
連続して並んでいるかのように見えることになる。
【0073】これは、前述したように、一般的なCPU
やDSPにおいては、積和演算すべきデータが疎な状態
で並んで存在する場合の積和演算効率は悪いが、密な状
態に並んで存在するデータについては効率よく積和演算
を行うことができることを利用したものであり、このよ
うな連続したデータについて積和演算を行うようなプロ
グラムの設定されたCPUやDSPにとっては極めて都
合のよいものとなる。
【0074】すなわち、積和演算単位として切り出され
た8個のデータのうち、積和演算すべき非零要素のデー
タが疎な状態でしか存在しない場合でも、上述したアド
レス変換処理を行うことによって、CPUやDSPは連
続したアドレスによって演算すべきデータを読み出して
積和演算する動作を行うだけで、実際には、疎な状態で
しか存在しない非零要素のみを次々と連続して読み出す
動作を行うことになる。それによって、効率よく積和演
算が行え、その演算量を大幅に削減することができ、高
速な積和演算が可能となる。
【0075】図3は以上説明した処理の手順を示すフロ
ーチャートである。これまでの説明と重複するが、この
図3を用いてその処理手順を再度説明すると、まず、積
和演算単位として切り出されたN個のデータ(この実施
の形態では、JPEGを例にしているので8個のデー
タ)を切り出し(ステップs1)、切り出された8個の
データの個々のデータが零であるかどうかの判定を行う
(ステップs2)。
【0076】そして、その零・非零判定処理による零・
非零判定結果によって、アドレッシングモード選択手段
41とアドレッシングデータ記憶手段42を用いて、ア
ドレッシングモード設定を行う(ステップs3)。
【0077】これは、零・非零判定結果によって得られ
る非零要素の位置を示す情報に依存したアドレッシング
データをアドレッシングデータ記憶手段42から取得す
ることであり、上述した図1の例においては、切り出さ
れた8個のデータの零・非零判定結果は、“10010
110”であって、これを10進数で表した「150」を
keyとして、アドレッシングモード選択手段41がアド
レッシングデータ記憶手段42からデータ長が「4」で
そのデータ位置が「1,2,4,7」のアドレッシング
データを取得してそれを設定する。
【0078】そして、このアドレッシングモード設定と
ともに、ベースアドレスの設定を行う(ステップs
4)。このベースアドレスは、前述したように、ここで
は0x1000としている。そして、残データ数をデー
タ長に設定する(ステップs5)。この残データ数をデ
ータ長に設定というのは、アドレッシングデータ記憶手
段42により得られたデータ長を設定することであり、
上述の例では、アドレッシングデータ記憶手段42によ
り得られたデータ長は「4」であるので、その「4」が
設定されることになる。
【0079】そして、その残データ数が零か否かを判断
し(ステップs6)、零であれば処理を終了し、零でな
ければ、物理アドレスで指定されるアドレスのデータに
対して積和演算を行う(ステップs7)。
【0080】次に、仮想アドレスに1を加えて(ステッ
プs8)、残データ数から1を減じて(ステップs
9)、ステップs6の処理に戻る。これは、たとえば、
仮想アドレス0x1000に対する積和演算処理が終了
したら、それに1を加えて0x1001とし、そのとき
の残データ数(この場合4)から「1」を減算して残デ
ータ数を「3」としてステップs6を行い、この場合、
残データ数が零でないので、仮想アドレス0x1001
に対する物理アドレス0x1002による積和演算を行
う。
【0081】そして、この仮想アドレス0x1001に
対する積和演算処理が終了したら、それに1を加えて0
x1002とし、そのときの残データ数(この場合3)
から「1」を減算して残データ数を「2」としてステッ
プs6を行い、この場合、残データ数が零でないので、
仮想アドレス0x1002に対する物理アドレス0x1
004による積和演算を行う。
【0082】この仮想アドレス0x1002に対する積
和演算処理が終了したら、それに1を加えて0x100
3とし、そのときの残データ数(この場合2)から
「1」を減算して残データ数を「1」としてステップs
6を行い、この場合、残データ数が零でないので、仮想
アドレス0x1003に対する物理アドレス0x100
7による積和演算を行う。
【0083】この仮想アドレス0x1003に対する積
和演算処理が終了したら、それに1を加えて0x100
4とし、そのときの残データ数(この場合1)から
「1」を減算して残データ数を「0」としてステップs
6を行うと、この場合、残データ数が零であるので、処
理を終了する。
【0084】このように、CPUやDSPは連続的なデ
ータアドレスを生成し、その連続的なデータアドレスに
従って演算処理を行なうが、実際には、その連続的なア
ドレスが疎の状態で存在する積和演算すべきデータを次
々と指し示す物理アドレスとして変換する処理が行わ
れ、それによって、疎な状態でしか存在しない非零要素
のみを次々と連続して読み出す動作を行うことになる。
【0085】なお、積和演算を行う際は、(6)式や
(7)式で示した変換係数を用いて行うが、この変換係
数に対しても、疎の状態で存在する非零要素のデータに
対応し読み出す必要があり、変換係数を読み出すための
変換係数アドレスも上述同様のアドレス変換を行う必要
がある。
【0086】図4は本発明の積和演算装置の全体的な構
成図であり、処理対象となるデータを記憶するデータ記
憶手段1、このデータ記憶手段1から1つの積和演算単
位を構成するデータ(ここでは8個のデータ)を切り出
すデータ選択手段2、このデータ選択手段2で切り出さ
れた積和演算単位の8個のデータに対し、零か非零かの
判定を行う零・非零判定手段3、上述したアドレス変換
処理を行なうアドレス変換手段(このアドレス変換手段
はデータアドレスに対するアドレス変換手段4aと変換
係数アドレスに対するアドレス変換手段4bが存在す
る)、積和演算を行うに必要な変換係数を記憶する変換
係数記憶手段5、積和演算処理を行うCPUあるいはD
SP(ここではCPUとする)6から構成されている。
なお、この図4の構成要素のうち、図1および図2で示し
た構成要素と同じものには同一符号が付されている。
【0087】アドレス変換手段4a,4bは、それぞれ
アドレッシングモード選択手段41、アドレッシングデ
ータ記憶手段42、ベースアドレス記憶手段43を有し
た構成となっており、図1および図2で説明したような
動作を行う。
【0088】図5はこの図2をブロック図として表した
ものであり、ベースアドレス記憶手段43、アドレッシ
ングモード選択手段41、アドレッシングデータ記憶手
段42の他に、CPU6で生成されるデータアドレスあ
るいは変換係数アドレスを仮想アドレスとして入力する
仮想アドレス入力手段44と、その仮想アドレスをアド
レス変換処理することによって生成された物理アドレス
を記憶する物理アドレス記憶手段45を有した構成とな
っている。
【0089】CPU6はデータアドレス生成手段61、
変換係数アドレス生成手段62、積和演算手段63を有
した構成となっており、データアドレスや変換係数アド
レスの生成、積和演算処理を行なうとともに、この図4
に示す各構成要素全体の動作を制御する機能をも有して
いる。
【0090】データアドレス生成手段61で生成される
アドレスは、積和演算単位として切り出された8個のデ
ータを順に読み出すためのアドレス(データアドレス)
であり、このデータアドレスはアドレス変換手段4aに
与えられ、このアドレス変換手段4aに含まれる仮想ア
ドレス入力手段44(図5参照)に仮想アドレスとして
入力される。
【0091】また、変換係数アドレス生成手段62で生
成されるアドレスは、変換係数を読み出すためのアドレ
ス(変換係数アドレス)であり、この変換係数アドレス
は、アドレス変換手段4bに与えられ、このアドレス変
換手段4bに含まれる仮想アドレス入力手段44(図5
参照)に仮想アドレスとして入力される。
【0092】このような構成の積和演算装置におけるア
ドレス変換手段4a,4bのアドレス変換処理などにつ
いてはすでに詳細に説明したので、このアドレス変換処
理についての説明は省略して、全体的な処理について説
明する。
【0093】まず、図1で説明したように、積和演算単
位として切り出された8個のデータにおける非零要素の
位置を示す情報に基づいて、アドレッシングモード選択
手段41がアドレッシングデータ記憶手段42から或る
データ長とデータ位置を示す情報を指示し、そのデータ
長とデータ位置を示す情報がアドレッシングデータとし
て設定される。その後、図2で説明したように、CPU
6のデータアドレス生成手段61で生成される連続的な
データアドレス(仮想アドレス0x1000,0x10
01,0x1002,…)をアドレス変換手段4aでア
ドレス変換処理することで、非零要素のみを連続的に指
し示す物理アドレス(上述の例では、0x1001,0
x1002,0x1004,0x1007)を生成し、
データ記憶手段1からその物理アドレスで示されるデー
タを読み出して、その読み出されたデータが積和演算手
段63に与えられる。
【0094】一方、同じく、CPU6の変換係数アドレ
ス生成手段62で生成される変換係数アドレスをアドレ
ス変換手段4bでデータアドレスと同様にアドレス変換
処理することで、非零要素に対応する変換係数を連続的
に指し示す物理アドレスを生成し、変換係数記憶手段5
からその物理アドレスによって示される変換係数を読み
出して、その読み出された変換係数が積和演算手段63
に与えられる。
【0095】このように、アドレス変換手段4a,4b
によって生成された物理アドレスによって非零要素のデ
ータが順次読み出されるとともに、その非零要素に対応
する変換係数が順次読み出され、それらが積和演算手段
63に与えられることで積和演算が行われる。
【0096】このとき、CPU6からは連続的なデータ
アドレスと変換係数アドレスが生成されるだけである
が、その連続的なデータアドレスと変換係数アドレス
は、疎な状態で存在する非零要素とそれに対応する変換
係数を次々と連続的に指し示す物理アドレスとして変換
され、それによって、たとえ、積和演算すべき非零要素
のデータが疎な状態で散らばって存在していても、CP
U6は単に連続的なデータアドレスおよび変換係数アド
レスを生成し、それに従ったデータの読み出しを行って
積和演算する動作を行うだけで、実際には、疎に存在す
る非零要素のデータとそれに対応する変換係数のみを順
次読み出して積和演算する動作を行うことになり、効率
のよい積和演算が行え、その演算量を大幅に削減するこ
とができる。
【0097】なお、本発明は以上説明した実施の形態に
限定されるものではなく、本発明の要旨を逸脱しない範
囲で種々変形実施可能となるものである。
【0098】また、本発明は、以上説明した本発明を実
現するための処理手順が記述された処理プログラムを作
成し、その処理プログラムをフロッピィディスク、光デ
ィスク、ハードディスクなどの記録媒体に記録させてお
くことができ、本発明はその処理プログラムが記録され
た記録媒体をも含むものである。また、ネットワークか
ら当該処理プログラムを得るようにしてもよい。
【0099】
【発明の効果】以上で説明したように本発明によれば、
積和演算単位を構成するN個のデータのそれぞれについ
て零か非零かを判断し、そのN個のデータにおける非零
要素の存在する位置を示す情報に基づき、CPUやDS
Pなどの積和演算処理手段で生成されるアドレスに対
し、非零要素のみを連続的に読み出し可能となるような
アドレス変換を行い、そのアドレス変換後のアドレス順
で読み出されたデータに対して順次積和演算を行うよう
にしている。
【0100】このように、CPUやDSPなどが生成す
る連続的なアドレスを、非零要素のみを順次アクセス可
能なアドレスに変換して、その変換後のアドレス順でデ
ータを読み出して積和演算を行うようにしている。
【0101】これにより、CPUやDSPなどは単に連
続したアドレスによって演算すべきデータを読み出して
積和演算する動作を行うだけで、実際には、疎な状態で
しか存在しない非零要素のみを次々と連続して読み出す
動作を行うことになる。したがって、たとえ、積和演算
すべき非零要素のデータが疎な状態で散らばって存在し
ていたとしても、その疎な状態の非零要素とそれに対応
する変換係数を次々と連続的に読み出すことができ、こ
れによって、直交変換処理に伴う積和演算を効率よく行
うことができ、その演算量を大幅に削減することができ
る。
【図面の簡単な説明】
【図1】本発明の積和演算処理を説明する図であり、処
理対象となるデータから積和演算単位となる8個のデー
タを切り出し、その8個のデータ中に非零要素がどのよ
うな位置に存在しているかを判断し、それに基づいてデ
ータ長とデータ位置を示す情報を取得する処理を説明す
る図である。
【図2】本発明の積和演算処理を説明する図であり、図
1で示した処理に基づいて、CPUやDSPで生成され
るアドレスを変換するアドレス変換処理を説明する図で
ある。
【図3】本発明の積和演算処理の全体的な処理手順を説
明するフローチャートである。
【図4】本発明の積和演算装置の全体的な構成図であ
る。
【図5】図2で示したアドレス変換動作をブロック図と
して表した図である。
【図6】画像データから処理単位となるN×N(8×
8)のデータブロックの切り出しを模式的に説明する図
である。
【図7】処理単位となるN×N(8×8)のデータブロ
ックのデータ例と、そのデータを周波数領域に変換した
のち量子化する処理例を説明する図である。
【図8】ランレングス符号化処理について説明する図で
ある。
【図9】図7(c)のデータを並べ替え、さらに、零の
連鎖をEOBに置き換えた場合を示す図である。
【図10】処理単位となるN×N(8×8)のデータブ
ロックに対する処理を行方向または列方向のいずれから
行うかを説明する図である。
【図11】従来技術において、EOBの位置により最適
な演算手段を選択して直交変換演算の簡略化を図る例を
説明する図である。
【図12】 従来技術において、処理単位となるN×N
(8×8)のデータブロックをいくつかの領域に分割し
て演算を行うことで直交演算の簡略化を図る例を説明す
る図である。
【図13】処理単位となるN×N(8×8)のデータブ
ロックにおけるデータにおいて、従来技術の1つである
4並列演算(行方向の4並列演算)により積和演算を行
なう場合の問題点を説明する図である。
【図14】処理単位となるN×N(8×8)のデータブ
ロックにおけるデータにおいて、従来技術の1つである
EOBの判断を用いて積和演算を行なう場合の問題点を
説明する図である。
【符号の説明】
1 データ記憶手段 2 データ選択手段 3 零・非零判定手段 4a アドレス変換手段(データアドレスに対するアド
レス変換手段) 4b アドレス変換手段(変換係数アドレスに対するア
ドレス変換手段) 5 変換係数記憶手段 6 CPU 41 アドレッシングモード選択手段 42 アドレッシングデータ記憶手段 43 ベースアドレス記憶手段 61 データアドレス生成手段 62 変換係数アドレス生成手段 63 積和演算手段

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 積和演算単位を構成するN個のデータを
    所定のアドレス順で順次読み出して積和演算を行う積和
    演算方法において、 前記N個のデータのそれぞれについて零か非零かを判断
    し、そのN個のデータにおける非零要素の存在する位置
    を示す情報に基づいて、前記アドレスに対し、前記非零
    要素のみを連続的に読み出し可能となるようなアドレス
    変換を行い、 その変換後のアドレスによって読み出されたデータに対
    して順次積和演算を行うことを特徴とする積和演算方
    法。
  2. 【請求項2】 前記N個のデータにおける非零要素の存
    在する位置に基づくアドレス変換は、積和演算を行うに
    必要な変換係数を読み出すためのアドレスに対しても行
    い、その変換後のアドレスによって前記非零要素に対応
    する変換係数の読み出しを行うことを特徴とする請求項
    1記載の積和演算方法。
  3. 【請求項3】 積和演算単位を構成するN個のデータを
    所定のアドレス順で順次読み出して積和演算を行う積和
    演算装置において、 処理対処となるデータが記憶されるデータ記憶手段と、 このデータ記憶手段に記憶された処理対象となるデータ
    から、積和演算単位となるN個のデータを切り出すデー
    タ選択手段と、 このデータ選択手段で切り出されたN個のデータのそれ
    ぞれが零か非零かを判断する零・非零判定手段と、 その零・非零判定結果において非零要素の存在する位置
    を示す情報に基づいて、前記アドレスに対し、前記非零
    要素のみを連続的に読み出し可能となるようなアドレス
    変換を行うアドレス変換手段と、 を有し、このアドレス変換手段によるアドレス変換後の
    アドレスによって読み出されたデータに対して積和演算
    を行うことを特徴とする積和演算装置。
  4. 【請求項4】 前記N個のデータにおける非零要素の存
    在する位置に基づいたアドレス変換を行うアドレス変換
    手段は、前記N個のデータを順次読み出すためのアドレ
    スに対してアドレス変換を行うデータアドレス変換手段
    と、前記変換係数を読み出すためのアドレスに対してア
    ドレス変換を行う変換係数アドレス変換手段を設け、前
    記データを読み出すためのアドレスに対しては、前記デ
    ータアドレス変換手段により前記非零要素のみを連続的
    に読み出し可能となるようなアドレス変換を行い、前記
    変換係数を読み出すためのアドレスに対しては、前記変
    換係数アドレス変換手段により前記非零要素に対応する
    変換係数の読み出しが可能となるようなアドレス変換を
    行うことを特徴とする請求項3記載の積和演算装置。
JP2001254847A 2001-08-24 2001-08-24 積和演算方法および積和演算装置 Withdrawn JP2003067360A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001254847A JP2003067360A (ja) 2001-08-24 2001-08-24 積和演算方法および積和演算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001254847A JP2003067360A (ja) 2001-08-24 2001-08-24 積和演算方法および積和演算装置

Publications (1)

Publication Number Publication Date
JP2003067360A true JP2003067360A (ja) 2003-03-07

Family

ID=19082943

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001254847A Withdrawn JP2003067360A (ja) 2001-08-24 2001-08-24 積和演算方法および積和演算装置

Country Status (1)

Country Link
JP (1) JP2003067360A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019106186A (ja) * 2017-12-12 2019-06-27 ナンジン ホライゾン ロボティクス テクノロジー カンパニー リミテッドNanjing Horizon Robotics Technology Co., Ltd. 畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置および方法
DE112018004972T5 (de) 2017-10-18 2020-06-18 Mitsubishi Electric Corporation Operationsschaltung und operationsverfahren
JP2021099658A (ja) * 2019-12-23 2021-07-01 三菱電機マイコン機器ソフトウエア株式会社 ニューラルネットワーク処理装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112018004972T5 (de) 2017-10-18 2020-06-18 Mitsubishi Electric Corporation Operationsschaltung und operationsverfahren
US11281376B2 (en) 2017-10-18 2022-03-22 Mitsubishi Electric Corporation Operation circuit and method of operation for use in operations that are performed in parallel using multiple operators
JP2019106186A (ja) * 2017-12-12 2019-06-27 ナンジン ホライゾン ロボティクス テクノロジー カンパニー リミテッドNanjing Horizon Robotics Technology Co., Ltd. 畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置および方法
JP2021099658A (ja) * 2019-12-23 2021-07-01 三菱電機マイコン機器ソフトウエア株式会社 ニューラルネットワーク処理装置

Similar Documents

Publication Publication Date Title
JP3378257B2 (ja) 希薄データセットをネスト状分割コード化するシステム及び方法
US7474805B2 (en) Efficient scaling in transform domain
KR19990087552A (ko) 멀티미디어 정보용 역코사인 변환 함수를 수행하는 컴퓨터시스템
US5453788A (en) Apparatus for converting encoded data into image data, including data preparing circuit, to allow enlargement or reduction of image
KR100944928B1 (ko) 버터플라이 프로세서를 이용하여 이산 코사인 변환을인코딩하고 계산하는 장치 및 방법
JP3902990B2 (ja) アダマール変換処理方法及びその装置
US7463782B2 (en) Data encoding with an amplitude model and path between the data and corresponding decoding
JP4688988B2 (ja) ビデオデータの圧縮方法並びに装置、及び伸張方法並びに装置
WO2007102518A1 (ja) 算術符号化装置、算術符号化方法、算術符号化プログラム及びプログラムを格納したコンピュータで読み取り可能な記録媒体
JP6457558B2 (ja) データ圧縮装置およびデータ圧縮方法
JP2003067360A (ja) 積和演算方法および積和演算装置
US6304604B1 (en) Method and apparatus for configuring compressed data coefficients to minimize transpose operations
US5784011A (en) Multiplier circuit for performing inverse quantization arithmetic
JP2001326935A (ja) 画像符号/復号方法及びその装置並びにそのプログラムを記録した記録媒体
JPH10283343A (ja) データ処理方法
US7099523B2 (en) Method and system for scaling a signal sample rate
JP2845098B2 (ja) 多値画像圧縮符号の復号方法および装置
JPH08116268A (ja) 情報処理装置
JP3733883B2 (ja) 2次元直交変換処理方法および2次元直交変換処理装置
JP2802158B2 (ja) 逆直交変換方法および逆直交変換回路
US7430332B2 (en) Approximations used in performance sensitive transformations which contain sub-transforms
JP2728003B2 (ja) ゼロラン展開回路およびゼロラン展開方法
JPH10105672A (ja) コンピュータ及びそれに使用する演算機能付きメモリ集積回路
JP3130721B2 (ja) 2値画像圧縮伸張処理システム及び2値画像切出し方法
JP4444480B2 (ja) フィルタ処理装置

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20070402

A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20081104