JP2005107926A - ベクトルプロセッサ、デジタルデータ処理方法およびデジタルデータ処理プログラム - Google Patents
ベクトルプロセッサ、デジタルデータ処理方法およびデジタルデータ処理プログラム Download PDFInfo
- Publication number
- JP2005107926A JP2005107926A JP2003341076A JP2003341076A JP2005107926A JP 2005107926 A JP2005107926 A JP 2005107926A JP 2003341076 A JP2003341076 A JP 2003341076A JP 2003341076 A JP2003341076 A JP 2003341076A JP 2005107926 A JP2005107926 A JP 2005107926A
- Authority
- JP
- Japan
- Prior art keywords
- frequency
- digital data
- storage memory
- digital
- counting
- 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
Links
Images
Landscapes
- Image Processing (AREA)
Abstract
【課題】 デジタル値を計数する際の処理効率を向上させること。
【解決手段】 ベクトルプロセッサ1においては、実行されるプログラムCにおけるロード命令(LW[8])からストア命令(SW[8])までのサイクル数に相当する数の度数格納用メモリを用意し、それらの記憶領域に固有のアドレスを設定する。また、これらの度数格納用メモリの記憶領域の数は、画素値の範囲と対応する数とされている。そして、処理対象である所定の画像データの画素値それぞれを、画像データ相互において重複しないように記憶領域の固有のアドレスと対応付ける。さらに、処理対象である所定の画像データにおいて出現した画素値について、対応するアドレスの記憶領域に記憶されている度数をインクリメントしていく。したがって、画素値を計数する際の処理効率を向上させることが可能となる。
【選択図】 図1
【解決手段】 ベクトルプロセッサ1においては、実行されるプログラムCにおけるロード命令(LW[8])からストア命令(SW[8])までのサイクル数に相当する数の度数格納用メモリを用意し、それらの記憶領域に固有のアドレスを設定する。また、これらの度数格納用メモリの記憶領域の数は、画素値の範囲と対応する数とされている。そして、処理対象である所定の画像データの画素値それぞれを、画像データ相互において重複しないように記憶領域の固有のアドレスと対応付ける。さらに、処理対象である所定の画像データにおいて出現した画素値について、対応するアドレスの記憶領域に記憶されている度数をインクリメントしていく。したがって、画素値を計数する際の処理効率を向上させることが可能となる。
【選択図】 図1
Description
本発明は、デジタル値の度数を計数するためのベクトルプロセッサ、デジタルデータ処理方法およびデジタルデータ処理プログラムに関する。
従来、画像データに含まれる画素値のヒストグラムを作成する場合等、デジタル値の度数を計数する処理が行われている。
例えば、画像データに含まれる画素値のヒストグラムを作成する場合には、画素値の範囲が“0”〜“255”であるとすると、各画素値に対応する256個の記憶領域(以下、適宜「度数格納用メモリ」と言う。)をメモリ上に用意しておき、画像データに含まれる各画素値に対応する記憶領域の値を1つずつインクリメントしていく。
例えば、画像データに含まれる画素値のヒストグラムを作成する場合には、画素値の範囲が“0”〜“255”であるとすると、各画素値に対応する256個の記憶領域(以下、適宜「度数格納用メモリ」と言う。)をメモリ上に用意しておき、画像データに含まれる各画素値に対応する記憶領域の値を1つずつインクリメントしていく。
その結果、256個の記憶領域(度数格納用メモリ)には、画像データ全体における画素値それぞれの度数が記憶されており、これらの値に基づいて、画像データの画素値に関するヒストグラムが作成される。
ところで、このようにデジタル値の度数を計数する処理をベクトルプロセッサによって行う場合、記憶領域に記憶されたデータの不整合を来す可能性が生ずる。
ところで、このようにデジタル値の度数を計数する処理をベクトルプロセッサによって行う場合、記憶領域に記憶されたデータの不整合を来す可能性が生ずる。
具体的には、ベクトルプロセッサにおいては、各命令がステージに分割されて連続的に実行されるため、先行する命令の実行結果が記憶領域に書き戻される前に、後続の命令において、その記憶領域のデータを参照してしまうという事態が生ずる。そして、この場合、後続する命令において算出された画素値の度数は不正な値となる。
即ち、後述する命令において、先行する命令の実行結果である度数がメモリ上の記憶領域に書き込まれる前に、その記憶領域のデータを参照していることから、後続する命令では正しい度数が算出されないこととなる。
即ち、後述する命令において、先行する命令の実行結果である度数がメモリ上の記憶領域に書き込まれる前に、その記憶領域のデータを参照していることから、後続する命令では正しい度数が算出されないこととなる。
以下、具体的に説明する。
図4は、処理対象である画像データの画素値を示す図である。
図4に示す画素値の度数を計数するために、従来の方法に従って処理を行う場合では、例えば、以下に示すプログラムXをベクトルプロセッサに行わせることとなる。ただし、ベクトルレジスタVR1,VR0は、8個の要素レジスタからなるベクトルレジスタであり、メモリには、画素値“0”〜“255”に対応する256個の記憶領域(度数格納用メモリ)が用意されている。また、各記憶領域のサイズ(ワード長)は4バイトの仕様である。
図4は、処理対象である画像データの画素値を示す図である。
図4に示す画素値の度数を計数するために、従来の方法に従って処理を行う場合では、例えば、以下に示すプログラムXをベクトルプロセッサに行わせることとなる。ただし、ベクトルレジスタVR1,VR0は、8個の要素レジスタからなるベクトルレジスタであり、メモリには、画素値“0”〜“255”に対応する256個の記憶領域(度数格納用メモリ)が用意されている。また、各記憶領域のサイズ(ワード長)は4バイトの仕様である。
(プログラムX)
000:LBU.2D[8] %VR0,[%base],#1
001:NOP
002:NOP
003:SLW[8] %VR0,%VR0,#2
004:NOP
005:LW[8] %VR1,[%base2,%VR0]
006:NOP
007:NOP
008:ADDWI[8] %VR1,%VR1,#1
009:NOP
010:SW[8] %VR1,[%base2,%VR0]
000:LBU.2D[8] %VR0,[%base],#1
001:NOP
002:NOP
003:SLW[8] %VR0,%VR0,#2
004:NOP
005:LW[8] %VR1,[%base2,%VR0]
006:NOP
007:NOP
008:ADDWI[8] %VR1,%VR1,#1
009:NOP
010:SW[8] %VR1,[%base2,%VR0]
上述のプログラムXでは、“000”において、まず、画像データにおける第1行の画素値を、“%base”を先頭アドレスとして1バイトずつベクトルレジスタVR0に読み込む。
そして、ハードウェアの仕様に基づき“001”〜“002”まで2サイクルのノーオペレーション(NOP)を経て、“003”において、ベクトルレジスタVR0の各値を左に2ビットシフトする。
ここで、“003”において2ビットシフトする処理は、値を4倍することに相当するが、これは、度数格納用メモリの1ワードが4バイトである仕様に基づいており、この結果、ベクトルレジスタVR1において、各値の度数に対応する記憶領域のアドレス(インデックスアドレス)が算出される。
そして、ハードウェアの仕様に基づき“001”〜“002”まで2サイクルのノーオペレーション(NOP)を経て、“003”において、ベクトルレジスタVR0の各値を左に2ビットシフトする。
ここで、“003”において2ビットシフトする処理は、値を4倍することに相当するが、これは、度数格納用メモリの1ワードが4バイトである仕様に基づいており、この結果、ベクトルレジスタVR1において、各値の度数に対応する記憶領域のアドレス(インデックスアドレス)が算出される。
次に、“004”のノーオペレーションを経て、“%base2”を先頭アドレスとして、ベクトルレジスタVR0のインデックスアドレスに示されるメモリ上の記憶領域から、記憶されている度数をロードする。
そして、“006”〜“007”まで2サイクルのノーオペレーションを経て、“008”では、“005”でロードした各画素値の度数をインクリメントする。
そして、“006”〜“007”まで2サイクルのノーオペレーションを経て、“008”では、“005”でロードした各画素値の度数をインクリメントする。
さらに、“009”のノーオペレーションを経て、“010”では、“%base2”を先頭アドレスとして、ベクトルレジスタVR0のインデックスアドレスに示されるメモリ上の記憶領域に、“008”においてインクリメントした度数の書き戻し(ストア)を行い、画像データにおける第1行の処理が終了する。
ところが、このような従来の方法に従うと、“005”において、メモリ上の記憶領域から一時にデータをロードした後に、画素値のインクリメントおよびストアを行うため、上述のように、画像データの第1行において2度以上出現する画素値の度数が正しく計数されないこととなる。
ところが、このような従来の方法に従うと、“005”において、メモリ上の記憶領域から一時にデータをロードした後に、画素値のインクリメントおよびストアを行うため、上述のように、画像データの第1行において2度以上出現する画素値の度数が正しく計数されないこととなる。
そこで、このようなデータの不整合を回避するために、各デジタル値の度数を記憶する度数格納用メモリを複数用意しておくことにより、記憶領域の競合を回避する方法(止まり木法)が知られている。
止まり木法においては、度数を計数する要素数に応じた数だけ、度数格納用メモリを複数用意しておき、計数された度数に対して、それぞれ異なる記憶領域をインクリメントすることにより、記憶領域の競合を回避するものである。例えば、8×8画素の画像データについて止まり木法を用いる場合、1行である8画素に対応して、度数格納用メモリを8組用意し、1行の画素それぞれについての画素値をカウントする記憶領域が、互いに異なるような構成とされる。
止まり木法においては、度数を計数する要素数に応じた数だけ、度数格納用メモリを複数用意しておき、計数された度数に対して、それぞれ異なる記憶領域をインクリメントすることにより、記憶領域の競合を回避するものである。例えば、8×8画素の画像データについて止まり木法を用いる場合、1行である8画素に対応して、度数格納用メモリを8組用意し、1行の画素それぞれについての画素値をカウントする記憶領域が、互いに異なるような構成とされる。
即ち、止まり木法を用いた従来の方法では、度数を格納するためのメモリ上の記憶領域を、画素値“0”〜“255”に対応する256個の記憶領域からなる度数格納用メモリが、論理的に8組連なる構成とする。
そして、止まり木法を用いた従来の方法では、例えば、以下に示すプログラムYをベクトルプロセッサに行わせることとなる。
そして、止まり木法を用いた従来の方法では、例えば、以下に示すプログラムYをベクトルプロセッサに行わせることとなる。
(プログラムY)
000:LBU.2D[8] %VR0,[%base],#1
001:NOP
002:NOP
003:ADDW[8] %VR0,%VR0,%VR7
004:NOP
005:SLW[8] %VR0,%VR0,#2
006:NOP
007:LW[8] %VR1,[%base2,%VR0]
008:NOP
009:NOP
010:ADDWI[8] %VR1,%VR1,#1
011:NOP
012:SW[8] %VR1,[%base2,%VR0]
000:LBU.2D[8] %VR0,[%base],#1
001:NOP
002:NOP
003:ADDW[8] %VR0,%VR0,%VR7
004:NOP
005:SLW[8] %VR0,%VR0,#2
006:NOP
007:LW[8] %VR1,[%base2,%VR0]
008:NOP
009:NOP
010:ADDWI[8] %VR1,%VR1,#1
011:NOP
012:SW[8] %VR1,[%base2,%VR0]
上述のプログラムYは、“003”,“004”の処理が挿入されている点が、プログラムXと異なっている。
プログラムYでは、“003”において、“001”でロードされたベクトルレジスタVR0の値(画素値)に、ベクトルレジスタVR7の値が加算されている。
ベクトルレジスタVR7には、8組の度数格納用メモリそれぞれの先頭を示すアドレス(オフセット値)が順に記憶されている。即ち、VR7には、要素レジスタに、0,256×1,256×2,256×3,256×4,256×5,256×6,256×7の値が順に記憶されている。
プログラムYでは、“003”において、“001”でロードされたベクトルレジスタVR0の値(画素値)に、ベクトルレジスタVR7の値が加算されている。
ベクトルレジスタVR7には、8組の度数格納用メモリそれぞれの先頭を示すアドレス(オフセット値)が順に記憶されている。即ち、VR7には、要素レジスタに、0,256×1,256×2,256×3,256×4,256×5,256×6,256×7の値が順に記憶されている。
したがって、このオフセット値が加算されることで、ベクトルレジスタVR0の各要素レジスタには、それぞれ固有のインデックスアドレスが記憶されることとなり、仮に、“001”でロードされた画素値が同一の場合であっても、“003”の処理を経ることにより、それらは互いに異なるインデックスアドレスを示すこととなる。
そして、“007”において、“%base2”を先頭アドレスとして、ベクトルレジスタVR0のインデックスアドレスに示されるメモリ上の記憶領域から、記憶されている度数がロードされ、“010”において、それらの度数がインクリメントされた後、“012”で、それぞれの記憶領域にストアされる。
そして、“007”において、“%base2”を先頭アドレスとして、ベクトルレジスタVR0のインデックスアドレスに示されるメモリ上の記憶領域から、記憶されている度数がロードされ、“010”において、それらの度数がインクリメントされた後、“012”で、それぞれの記憶領域にストアされる。
このような方法に従えば、各画素値にベクトルレジスタVR7のオフセット値が加算されることから、各画素値を格納する記憶領域が確実に異なるものとなり、記憶領域の競合が回避される。
なお、止まり木法については、特開2003−150577号公報に記載されている。
特開2003−150577号公報
なお、止まり木法については、特開2003−150577号公報に記載されている。
しかしながら、デジタル値の度数を計数するために止まり木法を用いる場合、プロセッサ等、ハードウェアの仕様に関わらず、度数を計数する要素数に応じた所定数の度数格納用メモリを用意することとされていた。そのため、度数格納用メモリを一律に所定数倍だけ用意する必要が生ずると共に、最終的に、それら所定数の度数格納用メモリのデータを要素毎に加算する(例えば、上述の例では7回)ことから、処理速度の低下を招くという問題が生じていた。即ち、従来の方法においては、デジタル値の度数を計数する処理効率は高いものではなかった。
本発明の課題は、デジタル値を計数する際の処理効率を向上させることである。
本発明の課題は、デジタル値を計数する際の処理効率を向上させることである。
以上の課題を解決するため、本発明は、
対象となる複数のデジタルデータについて、デジタル値それぞれの度数を計数するベクトルプロセッサであって、前記デジタルデータの値域(例えば、画像データにおける画素値の取りうる値の範囲)に対応する数の記憶領域からなる度数格納用メモリ(例えば、発明を実施するための最良の形態中の度数格納用メモリ)を1組として、度数を計数する際の処理単位となるデジタルデータ(例えば、図1の画像データにおける第1行の画素列)の数と、前記デジタルデータのロードステップから度数をインクリメントして書き戻すストアステップまでに要するサイクル数(例えば、プログラムC中のサイクル“003”〜“006”の4サイクル)とに基づく組数からなる度数格納用メモリ群を備え、前記度数格納用メモリ群は、前記処理単位のデジタルデータそれぞれが互いに異なる前記度数格納用メモリに対応するようにアドレスが設定され、前記処理単位におけるデジタルデータそれぞれに対応するアドレスの前記度数格納用メモリ(例えば、図1の画像データの第1行であれば、第1番目の画像データの場合には、度数格納用メモリ群を構成する度数格納用メモリM1、第2番目の画像データの場合には、度数格納用メモリ群を構成する度数格納用メモリM2等)において、該デジタルデータのデジタル値に対応する前記記憶領域が記憶する度数をインクリメントしていき、対象となる全てのデジタルデータについて度数の計数が終了した後、前記度数格納用メモリにおいて、同一の前記デジタル値に対応する前記記憶領域が記憶している度数を加算することにより、対象となるデジタルデータ全体におけるデジタル値それぞれの度数を計数することを特徴としている。
対象となる複数のデジタルデータについて、デジタル値それぞれの度数を計数するベクトルプロセッサであって、前記デジタルデータの値域(例えば、画像データにおける画素値の取りうる値の範囲)に対応する数の記憶領域からなる度数格納用メモリ(例えば、発明を実施するための最良の形態中の度数格納用メモリ)を1組として、度数を計数する際の処理単位となるデジタルデータ(例えば、図1の画像データにおける第1行の画素列)の数と、前記デジタルデータのロードステップから度数をインクリメントして書き戻すストアステップまでに要するサイクル数(例えば、プログラムC中のサイクル“003”〜“006”の4サイクル)とに基づく組数からなる度数格納用メモリ群を備え、前記度数格納用メモリ群は、前記処理単位のデジタルデータそれぞれが互いに異なる前記度数格納用メモリに対応するようにアドレスが設定され、前記処理単位におけるデジタルデータそれぞれに対応するアドレスの前記度数格納用メモリ(例えば、図1の画像データの第1行であれば、第1番目の画像データの場合には、度数格納用メモリ群を構成する度数格納用メモリM1、第2番目の画像データの場合には、度数格納用メモリ群を構成する度数格納用メモリM2等)において、該デジタルデータのデジタル値に対応する前記記憶領域が記憶する度数をインクリメントしていき、対象となる全てのデジタルデータについて度数の計数が終了した後、前記度数格納用メモリにおいて、同一の前記デジタル値に対応する前記記憶領域が記憶している度数を加算することにより、対象となるデジタルデータ全体におけるデジタル値それぞれの度数を計数することを特徴としている。
このような構成により、デジタル値の度数を計数するために必要となる記憶領域が、従来に比べて減少すると共に、最終的に、それぞれの記憶領域ごとに加算する処理が軽減される。
また、パイプライン処理の実行ステージにおける実行結果を、レジスタを介さずに、他の命令で直接引用するフォワーディング機能をさらに備え、前記ロードステップから前記ストアステップまでの処理サイクルを該フォワーディング機能によって短縮可能であることを特徴としている。
このような構成により、ロードステップからストアステップまでの処理サイクル数が少なくなり、度数を計数するための必要となる記憶領域の数を、従来に比べてさらに減少させることが可能となる。
また、パイプライン処理の実行ステージにおける実行結果を、レジスタを介さずに、他の命令で直接引用するフォワーディング機能をさらに備え、前記ロードステップから前記ストアステップまでの処理サイクルを該フォワーディング機能によって短縮可能であることを特徴としている。
このような構成により、ロードステップからストアステップまでの処理サイクル数が少なくなり、度数を計数するための必要となる記憶領域の数を、従来に比べてさらに減少させることが可能となる。
また、前記度数格納用メモリ群は、前記処理単位となるデジタルデータのデジタル値それぞれを所定ビット分ビットシフトした値に基づいて生成されるアドレスと、前記各度数格納用メモリのアドレスとが1対1に対応するように、前記度数格納用メモリが論理的に連なるアドレスとして設定されており、前記処理単位となるデジタルデータのデジタル値それぞれを、前記所定ビット分ビットシフトした値として解釈することにより、該デジタルデータのデジタル値に対応する記憶領域を特定することを特徴としている。
このような構成により、処理単位となるデジタルデータのデジタル値をビットシフトする処理を省略することが可能となり、より効率的に、デジタル値の度数を計数する処理を行うことが可能となる。
このような構成により、処理単位となるデジタルデータのデジタル値をビットシフトする処理を省略することが可能となり、より効率的に、デジタル値の度数を計数する処理を行うことが可能となる。
また、本発明は、
対象となる複数のデジタルデータについて、そのデジタル値それぞれの度数をベクトルプロセッサによって計数するためのデジタルデータ処理方法であって、所定のデジタル値の度数を記憶しておく度数格納用メモリ群から、記憶されている度数を読み込むロードステップと、前記ロードステップにおいて読み込まれた度数をインクリメントして書き戻すストアステップとを含み、デジタル値の値域の要素数に対応する数の記憶領域からなる度数格納用メモリを、度数を計数する際の処理単位となるデジタルデータの数と、前記ロードステップから前記ストアステップまでに要するサイクル数とに基づく組数分、前記度数格納用メモリ群として用意しておき、前記処理単位のデジタルデータそれぞれが互いに異なる前記度数格納用メモリに対応するようにアドレスを設定し、前記処理単位におけるデジタルデータそれぞれに対応するアドレスの前記度数格納用メモリにおいて、該デジタルデータのデジタル値に対応する前記記憶領域が記憶する度数をインクリメントしていき、対象となる全てのデジタルデータについて度数の計数が終了した後、前記度数格納用メモリにおいて、同一の前記デジタル値に対応する前記記憶領域が記憶している度数を加算することにより、対象となるデジタルデータ全体におけるデジタル値それぞれの度数を計数することを特徴としている。
対象となる複数のデジタルデータについて、そのデジタル値それぞれの度数をベクトルプロセッサによって計数するためのデジタルデータ処理方法であって、所定のデジタル値の度数を記憶しておく度数格納用メモリ群から、記憶されている度数を読み込むロードステップと、前記ロードステップにおいて読み込まれた度数をインクリメントして書き戻すストアステップとを含み、デジタル値の値域の要素数に対応する数の記憶領域からなる度数格納用メモリを、度数を計数する際の処理単位となるデジタルデータの数と、前記ロードステップから前記ストアステップまでに要するサイクル数とに基づく組数分、前記度数格納用メモリ群として用意しておき、前記処理単位のデジタルデータそれぞれが互いに異なる前記度数格納用メモリに対応するようにアドレスを設定し、前記処理単位におけるデジタルデータそれぞれに対応するアドレスの前記度数格納用メモリにおいて、該デジタルデータのデジタル値に対応する前記記憶領域が記憶する度数をインクリメントしていき、対象となる全てのデジタルデータについて度数の計数が終了した後、前記度数格納用メモリにおいて、同一の前記デジタル値に対応する前記記憶領域が記憶している度数を加算することにより、対象となるデジタルデータ全体におけるデジタル値それぞれの度数を計数することを特徴としている。
また、本発明は、
対象となる複数のデジタルデータについて、そのデジタル値それぞれの度数を計数するためのデジタルデータ処理プログラムであって、所定のデジタル値の度数を記憶しておく度数格納用メモリ群から、記憶されている度数を読み込むロード機能と、前記ロードステップにおいて読み込まれた度数をインクリメントして書き戻すストア機能と、デジタル値の値域の要素数に対応する数の記憶領域からなる度数格納用メモリを、度数を計数する際の処理単位となるデジタルデータの数と、前記ロードステップから前記ストアステップまでに要するサイクル数とに基づく組数分、前記度数格納用メモリ群として用意し、前記処理単位のデジタルデータそれぞれが互いに異なる前記度数格納用メモリに対応するようにアドレスを設定し、前記処理単位におけるデジタルデータそれぞれに対応するアドレスの前記度数格納用メモリにおいて、該デジタルデータのデジタル値に対応する前記記憶領域が記憶する度数をインクリメントしていき、対象となる全てのデジタルデータについて度数の計数が終了した後、前記度数格納用メモリにおいて、同一の前記デジタル値に対応する前記記憶領域が記憶している度数を加算することにより、対象となるデジタルデータ全体におけるデジタル値それぞれの度数を計数する計数機能とをベクトルプロセッサに実現させることを特徴としている。
このように、本発明によれば、デジタル値を計数する際の処理効率を向上させることが可能となる。
対象となる複数のデジタルデータについて、そのデジタル値それぞれの度数を計数するためのデジタルデータ処理プログラムであって、所定のデジタル値の度数を記憶しておく度数格納用メモリ群から、記憶されている度数を読み込むロード機能と、前記ロードステップにおいて読み込まれた度数をインクリメントして書き戻すストア機能と、デジタル値の値域の要素数に対応する数の記憶領域からなる度数格納用メモリを、度数を計数する際の処理単位となるデジタルデータの数と、前記ロードステップから前記ストアステップまでに要するサイクル数とに基づく組数分、前記度数格納用メモリ群として用意し、前記処理単位のデジタルデータそれぞれが互いに異なる前記度数格納用メモリに対応するようにアドレスを設定し、前記処理単位におけるデジタルデータそれぞれに対応するアドレスの前記度数格納用メモリにおいて、該デジタルデータのデジタル値に対応する前記記憶領域が記憶する度数をインクリメントしていき、対象となる全てのデジタルデータについて度数の計数が終了した後、前記度数格納用メモリにおいて、同一の前記デジタル値に対応する前記記憶領域が記憶している度数を加算することにより、対象となるデジタルデータ全体におけるデジタル値それぞれの度数を計数する計数機能とをベクトルプロセッサに実現させることを特徴としている。
このように、本発明によれば、デジタル値を計数する際の処理効率を向上させることが可能となる。
以下、図を参照して本発明の実施の形態を説明する。
初めに、本発明に係るデジタルデータ処理方法について説明する。
なお、以下の説明においては、8×8画素の画像データ(図4参照)における画素値の度数をベクトルプロセッサによって計数する処理について説明する。
本発明に係るデジタルデータ処理方法では、上述の止まり木法を用いた従来の方法を改善し、処理効率を向上させるものである。
即ち、本発明に係るデジタルデータ処理方法では、上述のプログラムYに対応して、例えば、以下に示すプログラムAをベクトルプロセッサに行わせる。
初めに、本発明に係るデジタルデータ処理方法について説明する。
なお、以下の説明においては、8×8画素の画像データ(図4参照)における画素値の度数をベクトルプロセッサによって計数する処理について説明する。
本発明に係るデジタルデータ処理方法では、上述の止まり木法を用いた従来の方法を改善し、処理効率を向上させるものである。
即ち、本発明に係るデジタルデータ処理方法では、上述のプログラムYに対応して、例えば、以下に示すプログラムAをベクトルプロセッサに行わせる。
(プログラムA)
000:LBU.2D[8] %VR0,[%base],#1
001:;;;NOP
002:NOP
003:ADDW[8] %VR0,%VR0,%VR7
004:;;;NOP
005:SLW[8] %VR0,%VR0,#2
006:NOP
007:LW[8] %VR1,[%base2,%VR0]
008:;;;NOP
009:NOP
010:ADDWI[8] %VR1,%VR1,#1
011:;;;NOP
012:SW[8] %VR1,[%base2,%VR0]
000:LBU.2D[8] %VR0,[%base],#1
001:;;;NOP
002:NOP
003:ADDW[8] %VR0,%VR0,%VR7
004:;;;NOP
005:SLW[8] %VR0,%VR0,#2
006:NOP
007:LW[8] %VR1,[%base2,%VR0]
008:;;;NOP
009:NOP
010:ADDWI[8] %VR1,%VR1,#1
011:;;;NOP
012:SW[8] %VR1,[%base2,%VR0]
ここで、プログラムAにおける“;;;”は、そのノーオペレーションを省略し、高速化することが可能であることを意味しており、具体的には、フォワーディングを行うことにより、ノーオペレーションをプログラムから削除することができる。
したがって、プログラムAは、以下のプログラムBとして書き直すことができる。
したがって、プログラムAは、以下のプログラムBとして書き直すことができる。
(プログラムB)
000:LBU.2D[8] %VR0,[%base],#1
001:NOP
002:ADDW[8] %VR0,%VR0,%VR7
003:SLW[8] %VR0,%VR0,#2
004:NOP
005:LW[8] %VR1,[%base2,%VR0]
006:NOP
007:ADDWI[8] %VR1,%VR1,#1
008:SW[8] %VR1,[%base2,%VR0]
000:LBU.2D[8] %VR0,[%base],#1
001:NOP
002:ADDW[8] %VR0,%VR0,%VR7
003:SLW[8] %VR0,%VR0,#2
004:NOP
005:LW[8] %VR1,[%base2,%VR0]
006:NOP
007:ADDWI[8] %VR1,%VR1,#1
008:SW[8] %VR1,[%base2,%VR0]
上述のプログラムBを実行する場合、“005”のロード命令(LW[8])から“008”のストア命令(SW[8])までには4サイクルを要する。
即ち、本発明に係るデジタルデータ処理方法においては、画素値“0”〜“255”に対応する256個の記憶領域からなる度数格納用メモリが、論理的に4組連なる度数格納用メモリ群を用いることにより、画素値の度数を計数することができる。
即ち、本発明に係るデジタルデータ処理方法においては、画素値“0”〜“255”に対応する256個の記憶領域からなる度数格納用メモリが、論理的に4組連なる度数格納用メモリ群を用いることにより、画素値の度数を計数することができる。
したがって、最終的に、度数格納用メモリ群を構成する各度数格納用メモリの記憶領域ごとにデータの加算を行う処理が、従来の7回から3回に軽減されることとなる。
さらに、本発明に係るデジタルデータ処理方法においては、プログラムのオプションとして、ベクトルレジスタVR0の各値を2ビットシフトされたものと解釈する機能を備えることによって、“003”における2ビットのシフトを行うことなく、インデックス修飾を行うことが可能である。
即ち、プログラムBは、以下のプログラムCとして書き直すことができる。
さらに、本発明に係るデジタルデータ処理方法においては、プログラムのオプションとして、ベクトルレジスタVR0の各値を2ビットシフトされたものと解釈する機能を備えることによって、“003”における2ビットのシフトを行うことなく、インデックス修飾を行うことが可能である。
即ち、プログラムBは、以下のプログラムCとして書き直すことができる。
(プログラムC)
000:LBU.2D[8] %VR0,[%base],#1
001:NOP
002:ADDW[8] %VR0,%VR0,%VR7
003:LW[8] %VR1,[%base2,%VR0]
004:NOP
005:ADDWI[8] %VR1,%VR1,#1
006:SW[8] %VR1,[%base2,%VR0]
000:LBU.2D[8] %VR0,[%base],#1
001:NOP
002:ADDW[8] %VR0,%VR0,%VR7
003:LW[8] %VR1,[%base2,%VR0]
004:NOP
005:ADDWI[8] %VR1,%VR1,#1
006:SW[8] %VR1,[%base2,%VR0]
上述のプログラムCを実行する場合、プログラムBに比べて処理サイクルが、さらに2サイクル短縮され、処理効率の向上が図られている。
なお、プログラムCを実行する場合、ベクトルレジスタVR7には、要素レジスタに、0,256×1,256×2,256×3,0,256×1,256×2,256×3の値が順に記憶されることとなる。
次に、本発明に係るデジタルデータ処理方法を実行するベクトルプロセッサについて説明する。
なお、プログラムCを実行する場合、ベクトルレジスタVR7には、要素レジスタに、0,256×1,256×2,256×3,0,256×1,256×2,256×3の値が順に記憶されることとなる。
次に、本発明に係るデジタルデータ処理方法を実行するベクトルプロセッサについて説明する。
まず、構成を説明する。
図1は、本発明に係るベクトルプロセッサ1の構成を示す図である。
図1において、ベクトルプロセッサ1は、ベクトルプロセッサ1は、メモリ10と、メモリ制御部20と、命令フェッチ部30と、レジスタファイル40と、ロードユニット50と、ストアユニット60と、演算ユニット70とを含んで構成される。
メモリ10は、ベクトルプロセッサ1に与えられる命令コードおよび演算対象となるデータを記憶している。
また、メモリ10は、“0”〜“255”の画素値それぞれに対応する256個の記憶領域からなる度数格納用メモリを4組有しており、これらの度数格納用メモリは、論理的に連なるものとしてアドレスが設定されている。
図1は、本発明に係るベクトルプロセッサ1の構成を示す図である。
図1において、ベクトルプロセッサ1は、ベクトルプロセッサ1は、メモリ10と、メモリ制御部20と、命令フェッチ部30と、レジスタファイル40と、ロードユニット50と、ストアユニット60と、演算ユニット70とを含んで構成される。
メモリ10は、ベクトルプロセッサ1に与えられる命令コードおよび演算対象となるデータを記憶している。
また、メモリ10は、“0”〜“255”の画素値それぞれに対応する256個の記憶領域からなる度数格納用メモリを4組有しており、これらの度数格納用メモリは、論理的に連なるものとしてアドレスが設定されている。
メモリ制御部20は、メモリ10に対するアクセス、即ち、データの読み出しや書き込みを制御する。例えば、メモリ制御部20は、ロードユニット50あるいはストアユニット60によって指定されたメモリ10のアドレスからデータを読み出したり、メモリ10から読み出されたデータをレジスタファイル40に出力したりする。
命令フェッチ部30は、メモリ制御部20を介して、メモリ10から命令コードをフェッチし、一時的に記憶する。
命令フェッチ部30は、メモリ制御部20を介して、メモリ10から命令コードをフェッチし、一時的に記憶する。
レジスタファイル40は、32個のスカラーレジスタSR0〜SR31と、8個の要素レジスタからなる8本のベクトルレジスタVR0〜VR7とを含んで構成され、メモリ10から読み出されたデータおよび演算結果を一時的に記憶する。
さらに、レジスタファイル40は、フォワーディング機構を備えており、パイプライン処理の実行ステージにおける実行結果を、レジスタを介さずに、他の命令で直接引用することが可能となっている。
さらに、レジスタファイル40は、フォワーディング機構を備えており、パイプライン処理の実行ステージにおける実行結果を、レジスタを介さずに、他の命令で直接引用することが可能となっている。
ロードユニット50は、命令フェッチ部30に記憶された命令コードがロード命令である場合に、メモリ10から命令コードあるいはデータを読み出す処理を行う。
ストアユニット60は、命令フェッチ部30に記憶された命令コードがストア命令である場合に、メモリ10にデータを書き込む処理を行う。
演算ユニット70は、命令フェッチ部30に記憶された命令コードが所定の演算命令である場合に、レジスタファイル40に記憶された所定データを対象として演算処理を行う。
ストアユニット60は、命令フェッチ部30に記憶された命令コードがストア命令である場合に、メモリ10にデータを書き込む処理を行う。
演算ユニット70は、命令フェッチ部30に記憶された命令コードが所定の演算命令である場合に、レジスタファイル40に記憶された所定データを対象として演算処理を行う。
次に、動作を説明する。
ベクトルプロセッサ1は、上述のプログラムCを実行するものであり、初めに、処理対象となる画像データの第1行を、ベクトルレジスタVR0に読み込む(サイクル“000”,“001”)。
そして、ベクトルレジスタVR7に記憶されているインデックスアドレスを、ベクトルレジスタVR0の各要素に加算し(サイクル“002”)、算出されたメモリ10のアドレスから、各要素の度数をロードする(サイクル“003”,“004”)。なお、ここで算出されたメモリ10のアドレスは、度数格納用メモリ群において、各画素値に対応する記憶領域のアドレスを示している。
ベクトルプロセッサ1は、上述のプログラムCを実行するものであり、初めに、処理対象となる画像データの第1行を、ベクトルレジスタVR0に読み込む(サイクル“000”,“001”)。
そして、ベクトルレジスタVR7に記憶されているインデックスアドレスを、ベクトルレジスタVR0の各要素に加算し(サイクル“002”)、算出されたメモリ10のアドレスから、各要素の度数をロードする(サイクル“003”,“004”)。なお、ここで算出されたメモリ10のアドレスは、度数格納用メモリ群において、各画素値に対応する記憶領域のアドレスを示している。
さらに、ベクトルプロセッサ1は、ロードした各要素の度数を“1”インクリメントし(サイクル“005”)、その結果を、ロードした記憶領域にそれぞれ書き戻す(サイクル“006”)。
この時点で、処理対象である画像データの第1行についての処理が終了し、ベクトルプロセッサ1は、同様の処理を第8行まで行う。
この時点で、処理対象である画像データの第1行についての処理が終了し、ベクトルプロセッサ1は、同様の処理を第8行まで行う。
そして、ベクトルプロセッサ1は、第8行の処理が終了すると、度数格納用メモリの記憶領域ごとに度数を加算し、各画素値の度数を合計する。
その結果、記憶領域の競合を生ずることなく、画像データに関する画素値の計数が完了することとなる。
以上のように、本実施の形態に係るデジタルデータ処理方法およびベクトルプロセッサ1においては、実行されるプログラムCにおけるロード命令(LW[8])からストア命令(SW[8])までのサイクル数に相当する数の度数格納用メモリを用意し、それらの記憶領域に固有のアドレスを設定する。また、これらの度数格納用メモリの記憶領域の数は、画素値の範囲と対応する数とされている。
その結果、記憶領域の競合を生ずることなく、画像データに関する画素値の計数が完了することとなる。
以上のように、本実施の形態に係るデジタルデータ処理方法およびベクトルプロセッサ1においては、実行されるプログラムCにおけるロード命令(LW[8])からストア命令(SW[8])までのサイクル数に相当する数の度数格納用メモリを用意し、それらの記憶領域に固有のアドレスを設定する。また、これらの度数格納用メモリの記憶領域の数は、画素値の範囲と対応する数とされている。
そして、処理対象である所定の画像データの画素値それぞれを、画像データ相互において重複しないように記憶領域の固有のアドレスと対応付ける。さらに、処理対象である所定の画像データにおいて出現した画素値について、対応するアドレスの記憶領域に記憶されている度数をインクリメントしていく。
このような処理を画像データ全体について行い、最終的に、用意した度数格納用メモリそれぞれの記憶領域ごとに加算を行い、各画素値についての度数が取得される。
このような処理を画像データ全体について行い、最終的に、用意した度数格納用メモリそれぞれの記憶領域ごとに加算を行い、各画素値についての度数が取得される。
したがって、画素値の度数を計数するために必要となるメモリ10上の領域が従来に比べて減少すると共に、最終的に、度数格納用メモリそれぞれの記憶領域ごとに加算する処理が軽減される。
具体的には、以下のような効果を奏する。
図2は、従来の方法(プログラムX)に従った場合のデータの遷移を示す図である。また、図3は、本発明に係るデジタルデータ処理方法に従った場合のデータの遷移を示す図である。
具体的には、以下のような効果を奏する。
図2は、従来の方法(プログラムX)に従った場合のデータの遷移を示す図である。また、図3は、本発明に係るデジタルデータ処理方法に従った場合のデータの遷移を示す図である。
図2においては、上述のように、“005”においてロードした度数がベクトルレジスタVR1に記憶された状態で、各要素レジスタの値が“1”ずつインクリメントされ、その後、メモリ上の記憶領域に書き戻されるため、画素値“127”および“128”の度数として誤った値がストアされることとなっている。
一方、図3においては、“003”において、メモリ上のそれぞれ異なる記憶領域からロードされた度数がインクリメントされた後、メモリ上のそれぞれ異なる記憶領域に書き戻され、最終的に、“006”において、それぞれの記憶領域ごとに加算されている。そのため、画素値“127”および“128”の度数を含め、全ての画素値の度数が正しく計数されている。
即ち、本発明によれば、画素値を計数する際の処理効率を向上させることが可能となる。
一方、図3においては、“003”において、メモリ上のそれぞれ異なる記憶領域からロードされた度数がインクリメントされた後、メモリ上のそれぞれ異なる記憶領域に書き戻され、最終的に、“006”において、それぞれの記憶領域ごとに加算されている。そのため、画素値“127”および“128”の度数を含め、全ての画素値の度数が正しく計数されている。
即ち、本発明によれば、画素値を計数する際の処理効率を向上させることが可能となる。
1 ベクトルプロセッサ、10 メモリ、20 メモリ制御部、30 命令フェッチ部、40 レジスタファイル、50 ロードユニット、60 ストアユニット、70 演算ユニット
Claims (5)
- 対象となる複数のデジタルデータについて、デジタル値それぞれの度数を計数するベクトルプロセッサであって、
前記デジタルデータの値域に対応する数の記憶領域からなる度数格納用メモリを1組として、度数を計数する際の処理単位となるデジタルデータの数と、前記デジタルデータのロードステップから度数をインクリメントして書き戻すストアステップまでに要するサイクル数とに基づく組数からなる度数格納用メモリ群を備え、
前記度数格納用メモリ群は、前記処理単位のデジタルデータそれぞれが互いに異なる前記度数格納用メモリに対応するようにアドレスが設定され、
前記処理単位におけるデジタルデータそれぞれに対応するアドレスの前記度数格納用メモリにおいて、該デジタルデータのデジタル値に対応する前記記憶領域が記憶する度数をインクリメントしていき、対象となる全てのデジタルデータについて度数の計数が終了した後、前記度数格納用メモリにおいて、同一の前記デジタル値に対応する前記記憶領域が記憶している度数を加算することにより、対象となるデジタルデータ全体におけるデジタル値それぞれの度数を計数することを特徴とするベクトルプロセッサ。 - パイプライン処理の実行ステージにおける実行結果を、レジスタを介さずに、他の命令で直接引用するフォワーディング機能をさらに備え、前記ロードステップから前記ストアステップまでの処理サイクルを該フォワーディング機能によって短縮可能であることを特徴とする請求項1記載のベクトルプロセッサ。
- 前記度数格納用メモリ群は、前記処理単位となるデジタルデータのデジタル値それぞれを所定ビット分ビットシフトした値に基づいて生成されるアドレスと、前記各度数格納用メモリのアドレスとが1対1に対応するように、前記度数格納用メモリが論理的に連なるアドレスとして設定されており、
前記処理単位となるデジタルデータのデジタル値それぞれを、前記所定ビット分ビットシフトした値として解釈することにより、該デジタルデータのデジタル値に対応する記憶領域を特定することを特徴とする請求項1または2記載のベクトルプロセッサ。 - 対象となる複数のデジタルデータについて、そのデジタル値それぞれの度数をベクトルプロセッサによって計数するためのデジタルデータ処理方法であって、
所定のデジタル値の度数を記憶しておく度数格納用メモリ群から、記憶されている度数を読み込むロードステップと、
前記ロードステップにおいて読み込まれた度数をインクリメントして書き戻すストアステップとを含み、
デジタル値の値域の要素数に対応する数の記憶領域からなる度数格納用メモリを、度数を計数する際の処理単位となるデジタルデータの数と、前記ロードステップから前記ストアステップまでに要するサイクル数とに基づく組数分、前記度数格納用メモリ群として用意しておき、前記処理単位のデジタルデータそれぞれが互いに異なる前記度数格納用メモリに対応するようにアドレスを設定し、前記処理単位におけるデジタルデータそれぞれに対応するアドレスの前記度数格納用メモリにおいて、該デジタルデータのデジタル値に対応する前記記憶領域が記憶する度数をインクリメントしていき、対象となる全てのデジタルデータについて度数の計数が終了した後、前記度数格納用メモリにおいて、同一の前記デジタル値に対応する前記記憶領域が記憶している度数を加算することにより、対象となるデジタルデータ全体におけるデジタル値それぞれの度数を計数することを特徴とするデジタルデータ処理方法。 - 対象となる複数のデジタルデータについて、そのデジタル値それぞれの度数を計数するためのデジタルデータ処理プログラムであって、
所定のデジタル値の度数を記憶しておく度数格納用メモリ群から、記憶されている度数を読み込むロード機能と、
前記ロードステップにおいて読み込まれた度数をインクリメントして書き戻すストア機能と、
デジタル値の値域の要素数に対応する数の記憶領域からなる度数格納用メモリ、度数を計数する際の処理単位となるデジタルデータの数と、前記ロードステップから前記ストアステップまでに要するサイクル数とに基づく組数分、前記度数格納用メモリ群として用意し、前記処理単位のデジタルデータそれぞれが互いに異なる前記度数格納用メモリに対応するようにアドレスを設定し、前記処理単位におけるデジタルデータそれぞれに対応するアドレスの前記度数格納用メモリにおいて、該デジタルデータのデジタル値に対応する前記記憶領域が記憶する度数をインクリメントしていき、対象となる全てのデジタルデータについて度数の計数が終了した後、前記度数格納用メモリにおいて、同一の前記デジタル値に対応する前記記憶領域が記憶している度数を加算することにより、対象となるデジタルデータ全体におけるデジタル値それぞれの度数を計数する計数機能と、
をベクトルプロセッサに実現させることを特徴とするデジタルデータ処理プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003341076A JP2005107926A (ja) | 2003-09-30 | 2003-09-30 | ベクトルプロセッサ、デジタルデータ処理方法およびデジタルデータ処理プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003341076A JP2005107926A (ja) | 2003-09-30 | 2003-09-30 | ベクトルプロセッサ、デジタルデータ処理方法およびデジタルデータ処理プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005107926A true JP2005107926A (ja) | 2005-04-21 |
Family
ID=34535788
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003341076A Pending JP2005107926A (ja) | 2003-09-30 | 2003-09-30 | ベクトルプロセッサ、デジタルデータ処理方法およびデジタルデータ処理プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005107926A (ja) |
-
2003
- 2003-09-30 JP JP2003341076A patent/JP2005107926A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI322947B (en) | Inserting bits within a data word | |
JPS59212958A (ja) | コンピユ−タシステム | |
US7093103B2 (en) | Method for referring to address of vector data and vector processor | |
US4734877A (en) | Vector processing system | |
CN108959180B (zh) | 一种数据处理方法及系统 | |
EP1193594A2 (en) | Register renaming apparatus and processor | |
JP2020502669A (ja) | ベクトル生成命令 | |
JPS6041769B2 (ja) | アドレス指定方式 | |
US4812970A (en) | Microprogram control system | |
JP2748957B2 (ja) | データ処理装置 | |
JPH0363092B2 (ja) | ||
JP2005107926A (ja) | ベクトルプロセッサ、デジタルデータ処理方法およびデジタルデータ処理プログラム | |
JP2009507292A (ja) | 分離したシリアルモジュールを備えるプロセッサアレイ | |
JP4482356B2 (ja) | Simdプロセッサを用いた画像処理方法及び画像処理装置 | |
US20020156992A1 (en) | Information processing device and computer system | |
JP3211791B2 (ja) | ループ処理方式 | |
JPS61110240A (ja) | 最適化コンパイラ | |
JPH0954694A (ja) | パイプラインプロセッサおよびその処理方法 | |
JP2004030783A (ja) | パターン発生回路及び半導体装置並びに半導体装置の試験方法 | |
US20050055514A1 (en) | Data rearrangement method | |
JP2013161325A (ja) | Simd型マイクロプロセッサ、プロセッサシステムおよびsimd型マイクロプロセッサのデータ処理方法 | |
JP2004302772A (ja) | ベクトルプロセッサおよびアドレス指定方法 | |
JP3488815B2 (ja) | アドレス記憶回路 | |
JPH01284926A (ja) | 演算装置の命令読出方式 | |
JP3705263B2 (ja) | シーケンサ |