(57)【要約】【課題】  デジタル値を計数する際の処理効率を向上させること。【解決手段】  ベクトルプロセッサ１においては、実行されるプログラムＣにおけるロード命令（ＬＷ［８］）からストア命令（ＳＷ［８］）までのサイクル数に相当する数の度数格納用メモリを用意し、それらの記憶領域に固有のアドレスを設定する。また、これらの度数格納用メモリの記憶領域の数は、画素値の範囲と対応する数とされている。そして、処理対象である所定の画像データの画素値それぞれを、画像データ相互において重複しないように記憶領域の固有のアドレスと対応付ける。さらに、処理対象である所定の画像データにおいて出現した画素値について、対応するアドレスの記憶領域に記憶されている度数をインクリメントしていく。したがって、画素値を計数する際の処理効率を向上させることが可能となる。【選択図】  図１
2005107926.tif 000002
【特許請求の範囲】
【請求項１】
対象となる複数のデジタルデータについて、デジタル値それぞれの度数を計数するベクトルプロセッサであって、
前記デジタルデータの値域に対応する数の記憶領域からなる度数格納用メモリを１組として、度数を計数する際の処理単位となるデジタルデータの数と、前記デジタルデータのロードステップから度数をインクリメントして書き戻すストアステップまでに要するサイクル数とに基づく組数からなる度数格納用メモリ群を備え、
前記度数格納用メモリ群は、前記処理単位のデジタルデータそれぞれが互いに異なる前記度数格納用メモリに対応するようにアドレスが設定され、
前記処理単位におけるデジタルデータそれぞれに対応するアドレスの前記度数格納用メモリにおいて、該デジタルデータのデジタル値に対応する前記記憶領域が記憶する度数をインクリメントしていき、対象となる全てのデジタルデータについて度数の計数が終了した後、前記度数格納用メモリにおいて、同一の前記デジタル値に対応する前記記憶領域が記憶している度数を加算することにより、対象となるデジタルデータ全体におけるデジタル値それぞれの度数を計数することを特徴とするベクトルプロセッサ。
【請求項２】
パイプライン処理の実行ステージにおける実行結果を、レジスタを介さずに、他の命令で直接引用するフォワーディング機能をさらに備え、前記ロードステップから前記ストアステップまでの処理サイクルを該フォワーディング機能によって短縮可能であることを特徴とする請求項１記載のベクトルプロセッサ。
【請求項３】
前記度数格納用メモリ群は、前記処理単位となるデジタルデータのデジタル値それぞれを所定ビット分ビットシフトした値に基づいて生成されるアドレスと、前記各度数格納用メモリのアドレスとが１対１に対応するように、前記度数格納用メモリが論理的に連なるアドレスとして設定されており、
前記処理単位となるデジタルデータのデジタル値それぞれを、前記所定ビット分ビットシフトした値として解釈することにより、該デジタルデータのデジタル値に対応する記憶領域を特定することを特徴とする請求項１または２記載のベクトルプロセッサ。
【請求項４】
対象となる複数のデジタルデータについて、そのデジタル値それぞれの度数をベクトルプロセッサによって計数するためのデジタルデータ処理方法であって、
所定のデジタル値の度数を記憶しておく度数格納用メモリ群から、記憶されている度数を読み込むロードステップと、
前記ロードステップにおいて読み込まれた度数をインクリメントして書き戻すストアステップとを含み、
デジタル値の値域の要素数に対応する数の記憶領域からなる度数格納用メモリを、度数を計数する際の処理単位となるデジタルデータの数と、前記ロードステップから前記ストアステップまでに要するサイクル数とに基づく組数分、前記度数格納用メモリ群として用意しておき、前記処理単位のデジタルデータそれぞれが互いに異なる前記度数格納用メモリに対応するようにアドレスを設定し、前記処理単位におけるデジタルデータそれぞれに対応するアドレスの前記度数格納用メモリにおいて、該デジタルデータのデジタル値に対応する前記記憶領域が記憶する度数をインクリメントしていき、対象となる全てのデジタルデータについて度数の計数が終了した後、前記度数格納用メモリにおいて、同一の前記デジタル値に対応する前記記憶領域が記憶している度数を加算することにより、対象となるデジタルデータ全体におけるデジタル値それぞれの度数を計数することを特徴とするデジタルデータ処理方法。
【請求項５】
対象となる複数のデジタルデータについて、そのデジタル値それぞれの度数を計数するためのデジタルデータ処理プログラムであって、
所定のデジタル値の度数を記憶しておく度数格納用メモリ群から、記憶されている度数を読み込むロード機能と、
前記ロードステップにおいて読み込まれた度数をインクリメントして書き戻すストア機能と、
デジタル値の値域の要素数に対応する数の記憶領域からなる度数格納用メモリ、度数を計数する際の処理単位となるデジタルデータの数と、前記ロードステップから前記ストアステップまでに要するサイクル数とに基づく組数分、前記度数格納用メモリ群として用意し、前記処理単位のデジタルデータそれぞれが互いに異なる前記度数格納用メモリに対応するようにアドレスを設定し、前記処理単位におけるデジタルデータそれぞれに対応するアドレスの前記度数格納用メモリにおいて、該デジタルデータのデジタル値に対応する前記記憶領域が記憶する度数をインクリメントしていき、対象となる全てのデジタルデータについて度数の計数が終了した後、前記度数格納用メモリにおいて、同一の前記デジタル値に対応する前記記憶領域が記憶している度数を加算することにより、対象となるデジタルデータ全体におけるデジタル値それぞれの度数を計数する計数機能と、
をベクトルプロセッサに実現させることを特徴とするデジタルデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル値の度数を計数するためのベクトルプロセッサ、デジタルデータ処理方法およびデジタルデータ処理プログラムに関する。
【背景技術】
【０００２】
従来、画像データに含まれる画素値のヒストグラムを作成する場合等、デジタル値の度数を計数する処理が行われている。
例えば、画像データに含まれる画素値のヒストグラムを作成する場合には、画素値の範囲が“０”〜“２５５”であるとすると、各画素値に対応する２５６個の記憶領域（以下、適宜「度数格納用メモリ」と言う。）をメモリ上に用意しておき、画像データに含まれる各画素値に対応する記憶領域の値を１つずつインクリメントしていく。
【０００３】
その結果、２５６個の記憶領域（度数格納用メモリ）には、画像データ全体における画素値それぞれの度数が記憶されており、これらの値に基づいて、画像データの画素値に関するヒストグラムが作成される。
ところで、このようにデジタル値の度数を計数する処理をベクトルプロセッサによって行う場合、記憶領域に記憶されたデータの不整合を来す可能性が生ずる。
【０００４】
具体的には、ベクトルプロセッサにおいては、各命令がステージに分割されて連続的に実行されるため、先行する命令の実行結果が記憶領域に書き戻される前に、後続の命令において、その記憶領域のデータを参照してしまうという事態が生ずる。そして、この場合、後続する命令において算出された画素値の度数は不正な値となる。
即ち、後述する命令において、先行する命令の実行結果である度数がメモリ上の記憶領域に書き込まれる前に、その記憶領域のデータを参照していることから、後続する命令では正しい度数が算出されないこととなる。
【０００５】
以下、具体的に説明する。
図４は、処理対象である画像データの画素値を示す図である。
図４に示す画素値の度数を計数するために、従来の方法に従って処理を行う場合では、例えば、以下に示すプログラムＸをベクトルプロセッサに行わせることとなる。ただし、ベクトルレジスタＶＲ１，ＶＲ０は、８個の要素レジスタからなるベクトルレジスタであり、メモリには、画素値“０”〜“２５５”に対応する２５６個の記憶領域（度数格納用メモリ）が用意されている。また、各記憶領域のサイズ（ワード長）は４バイトの仕様である。
【０００６】
（プログラムＸ）
０００：ＬＢＵ．２Ｄ［８］    ％ＶＲ０，［％ｂａｓｅ］，＃１
００１：ＮＯＰ
００２：ＮＯＰ
００３：ＳＬＷ［８］          ％ＶＲ０，％ＶＲ０，＃２
００４：ＮＯＰ
００５：ＬＷ［８］            ％ＶＲ１，［％ｂａｓｅ２，％ＶＲ０］
００６：ＮＯＰ
００７：ＮＯＰ
００８：ＡＤＤＷＩ［８］      ％ＶＲ１，％ＶＲ１，＃１
００９：ＮＯＰ
０１０：ＳＷ［８］            ％ＶＲ１，［％ｂａｓｅ２，％ＶＲ０］
【０００７】
上述のプログラムＸでは、“０００”において、まず、画像データにおける第１行の画素値を、“％ｂａｓｅ”を先頭アドレスとして１バイトずつベクトルレジスタＶＲ０に読み込む。
そして、ハードウェアの仕様に基づき“００１”〜“００２”まで２サイクルのノーオペレーション（ＮＯＰ）を経て、“００３”において、ベクトルレジスタＶＲ０の各値を左に２ビットシフトする。
ここで、“００３”において２ビットシフトする処理は、値を４倍することに相当するが、これは、度数格納用メモリの１ワードが４バイトである仕様に基づいており、この結果、ベクトルレジスタＶＲ１において、各値の度数に対応する記憶領域のアドレス（インデックスアドレス）が算出される。
【０００８】
次に、“００４”のノーオペレーションを経て、“％ｂａｓｅ２”を先頭アドレスとして、ベクトルレジスタＶＲ０のインデックスアドレスに示されるメモリ上の記憶領域から、記憶されている度数をロードする。
そして、“００６”〜“００７”まで２サイクルのノーオペレーションを経て、“００８”では、“００５”でロードした各画素値の度数をインクリメントする。
【０００９】
さらに、“００９”のノーオペレーションを経て、“０１０”では、“％ｂａｓｅ２”を先頭アドレスとして、ベクトルレジスタＶＲ０のインデックスアドレスに示されるメモリ上の記憶領域に、“００８”においてインクリメントした度数の書き戻し（ストア）を行い、画像データにおける第１行の処理が終了する。
ところが、このような従来の方法に従うと、“００５”において、メモリ上の記憶領域から一時にデータをロードした後に、画素値のインクリメントおよびストアを行うため、上述のように、画像データの第１行において２度以上出現する画素値の度数が正しく計数されないこととなる。
【００１０】
そこで、このようなデータの不整合を回避するために、各デジタル値の度数を記憶する度数格納用メモリを複数用意しておくことにより、記憶領域の競合を回避する方法（止まり木法）が知られている。
止まり木法においては、度数を計数する要素数に応じた数だけ、度数格納用メモリを複数用意しておき、計数された度数に対して、それぞれ異なる記憶領域をインクリメントすることにより、記憶領域の競合を回避するものである。例えば、８×８画素の画像データについて止まり木法を用いる場合、１行である８画素に対応して、度数格納用メモリを８組用意し、１行の画素それぞれについての画素値をカウントする記憶領域が、互いに異なるような構成とされる。
【００１１】
即ち、止まり木法を用いた従来の方法では、度数を格納するためのメモリ上の記憶領域を、画素値“０”〜“２５５”に対応する２５６個の記憶領域からなる度数格納用メモリが、論理的に８組連なる構成とする。
そして、止まり木法を用いた従来の方法では、例えば、以下に示すプログラムＹをベクトルプロセッサに行わせることとなる。
【００１２】
（プログラムＹ）
０００：ＬＢＵ．２Ｄ［８］    ％ＶＲ０，［％ｂａｓｅ］，＃１
００１：ＮＯＰ
００２：ＮＯＰ
００３：ＡＤＤＷ［８］        ％ＶＲ０，％ＶＲ０，％ＶＲ７
００４：ＮＯＰ
００５：ＳＬＷ［８］          ％ＶＲ０，％ＶＲ０，＃２
００６：ＮＯＰ
００７：ＬＷ［８］            ％ＶＲ１，［％ｂａｓｅ２，％ＶＲ０］
００８：ＮＯＰ
００９：ＮＯＰ
０１０：ＡＤＤＷＩ［８］      ％ＶＲ１，％ＶＲ１，＃１
０１１：ＮＯＰ
０１２：ＳＷ［８］            ％ＶＲ１，［％ｂａｓｅ２，％ＶＲ０］
【００１３】
上述のプログラムＹは、“００３”，“００４”の処理が挿入されている点が、プログラムＸと異なっている。
プログラムＹでは、“００３”において、“００１”でロードされたベクトルレジスタＶＲ０の値（画素値）に、ベクトルレジスタＶＲ７の値が加算されている。
ベクトルレジスタＶＲ７には、８組の度数格納用メモリそれぞれの先頭を示すアドレス（オフセット値）が順に記憶されている。即ち、ＶＲ７には、要素レジスタに、０，２５６×１，２５６×２，２５６×３，２５６×４，２５６×５，２５６×６，２５６×７の値が順に記憶されている。
【００１４】
したがって、このオフセット値が加算されることで、ベクトルレジスタＶＲ０の各要素レジスタには、それぞれ固有のインデックスアドレスが記憶されることとなり、仮に、“００１”でロードされた画素値が同一の場合であっても、“００３”の処理を経ることにより、それらは互いに異なるインデックスアドレスを示すこととなる。
そして、“００７”において、“％ｂａｓｅ２”を先頭アドレスとして、ベクトルレジスタＶＲ０のインデックスアドレスに示されるメモリ上の記憶領域から、記憶されている度数がロードされ、“０１０”において、それらの度数がインクリメントされた後、“０１２”で、それぞれの記憶領域にストアされる。
【００１５】
このような方法に従えば、各画素値にベクトルレジスタＶＲ７のオフセット値が加算されることから、各画素値を格納する記憶領域が確実に異なるものとなり、記憶領域の競合が回避される。
なお、止まり木法については、特開２００３−１５０５７７号公報に記載されている。
【特許文献１】特開２００３−１５０５７７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
しかしながら、デジタル値の度数を計数するために止まり木法を用いる場合、プロセッサ等、ハードウェアの仕様に関わらず、度数を計数する要素数に応じた所定数の度数格納用メモリを用意することとされていた。そのため、度数格納用メモリを一律に所定数倍だけ用意する必要が生ずると共に、最終的に、それら所定数の度数格納用メモリのデータを要素毎に加算する（例えば、上述の例では７回）ことから、処理速度の低下を招くという問題が生じていた。即ち、従来の方法においては、デジタル値の度数を計数する処理効率は高いものではなかった。
本発明の課題は、デジタル値を計数する際の処理効率を向上させることである。
【課題を解決するための手段】
【００１７】
以上の課題を解決するため、本発明は、
対象となる複数のデジタルデータについて、デジタル値それぞれの度数を計数するベクトルプロセッサであって、前記デジタルデータの値域（例えば、画像データにおける画素値の取りうる値の範囲）に対応する数の記憶領域からなる度数格納用メモリ（例えば、発明を実施するための最良の形態中の度数格納用メモリ）を１組として、度数を計数する際の処理単位となるデジタルデータ（例えば、図１の画像データにおける第１行の画素列）の数と、前記デジタルデータのロードステップから度数をインクリメントして書き戻すストアステップまでに要するサイクル数（例えば、プログラムＣ中のサイクル“００３”〜“００６”の４サイクル）とに基づく組数からなる度数格納用メモリ群を備え、前記度数格納用メモリ群は、前記処理単位のデジタルデータそれぞれが互いに異なる前記度数格納用メモリに対応するようにアドレスが設定され、前記処理単位におけるデジタルデータそれぞれに対応するアドレスの前記度数格納用メモリ（例えば、図１の画像データの第１行であれば、第１番目の画像データの場合には、度数格納用メモリ群を構成する度数格納用メモリＭ１、第２番目の画像データの場合には、度数格納用メモリ群を構成する度数格納用メモリＭ２等）において、該デジタルデータのデジタル値に対応する前記記憶領域が記憶する度数をインクリメントしていき、対象となる全てのデジタルデータについて度数の計数が終了した後、前記度数格納用メモリにおいて、同一の前記デジタル値に対応する前記記憶領域が記憶している度数を加算することにより、対象となるデジタルデータ全体におけるデジタル値それぞれの度数を計数することを特徴としている。
【００１８】
このような構成により、デジタル値の度数を計数するために必要となる記憶領域が、従来に比べて減少すると共に、最終的に、それぞれの記憶領域ごとに加算する処理が軽減される。
また、パイプライン処理の実行ステージにおける実行結果を、レジスタを介さずに、他の命令で直接引用するフォワーディング機能をさらに備え、前記ロードステップから前記ストアステップまでの処理サイクルを該フォワーディング機能によって短縮可能であることを特徴としている。
このような構成により、ロードステップからストアステップまでの処理サイクル数が少なくなり、度数を計数するための必要となる記憶領域の数を、従来に比べてさらに減少させることが可能となる。
【００１９】
また、前記度数格納用メモリ群は、前記処理単位となるデジタルデータのデジタル値それぞれを所定ビット分ビットシフトした値に基づいて生成されるアドレスと、前記各度数格納用メモリのアドレスとが１対１に対応するように、前記度数格納用メモリが論理的に連なるアドレスとして設定されており、前記処理単位となるデジタルデータのデジタル値それぞれを、前記所定ビット分ビットシフトした値として解釈することにより、該デジタルデータのデジタル値に対応する記憶領域を特定することを特徴としている。
このような構成により、処理単位となるデジタルデータのデジタル値をビットシフトする処理を省略することが可能となり、より効率的に、デジタル値の度数を計数する処理を行うことが可能となる。
【００２０】
また、本発明は、
対象となる複数のデジタルデータについて、そのデジタル値それぞれの度数をベクトルプロセッサによって計数するためのデジタルデータ処理方法であって、所定のデジタル値の度数を記憶しておく度数格納用メモリ群から、記憶されている度数を読み込むロードステップと、前記ロードステップにおいて読み込まれた度数をインクリメントして書き戻すストアステップとを含み、デジタル値の値域の要素数に対応する数の記憶領域からなる度数格納用メモリを、度数を計数する際の処理単位となるデジタルデータの数と、前記ロードステップから前記ストアステップまでに要するサイクル数とに基づく組数分、前記度数格納用メモリ群として用意しておき、前記処理単位のデジタルデータそれぞれが互いに異なる前記度数格納用メモリに対応するようにアドレスを設定し、前記処理単位におけるデジタルデータそれぞれに対応するアドレスの前記度数格納用メモリにおいて、該デジタルデータのデジタル値に対応する前記記憶領域が記憶する度数をインクリメントしていき、対象となる全てのデジタルデータについて度数の計数が終了した後、前記度数格納用メモリにおいて、同一の前記デジタル値に対応する前記記憶領域が記憶している度数を加算することにより、対象となるデジタルデータ全体におけるデジタル値それぞれの度数を計数することを特徴としている。
【００２１】
また、本発明は、
対象となる複数のデジタルデータについて、そのデジタル値それぞれの度数を計数するためのデジタルデータ処理プログラムであって、所定のデジタル値の度数を記憶しておく度数格納用メモリ群から、記憶されている度数を読み込むロード機能と、前記ロードステップにおいて読み込まれた度数をインクリメントして書き戻すストア機能と、デジタル値の値域の要素数に対応する数の記憶領域からなる度数格納用メモリを、度数を計数する際の処理単位となるデジタルデータの数と、前記ロードステップから前記ストアステップまでに要するサイクル数とに基づく組数分、前記度数格納用メモリ群として用意し、前記処理単位のデジタルデータそれぞれが互いに異なる前記度数格納用メモリに対応するようにアドレスを設定し、前記処理単位におけるデジタルデータそれぞれに対応するアドレスの前記度数格納用メモリにおいて、該デジタルデータのデジタル値に対応する前記記憶領域が記憶する度数をインクリメントしていき、対象となる全てのデジタルデータについて度数の計数が終了した後、前記度数格納用メモリにおいて、同一の前記デジタル値に対応する前記記憶領域が記憶している度数を加算することにより、対象となるデジタルデータ全体におけるデジタル値それぞれの度数を計数する計数機能とをベクトルプロセッサに実現させることを特徴としている。
このように、本発明によれば、デジタル値を計数する際の処理効率を向上させることが可能となる。
【発明を実施するための最良の形態】
【００２２】
以下、図を参照して本発明の実施の形態を説明する。
初めに、本発明に係るデジタルデータ処理方法について説明する。
なお、以下の説明においては、８×８画素の画像データ（図４参照）における画素値の度数をベクトルプロセッサによって計数する処理について説明する。
本発明に係るデジタルデータ処理方法では、上述の止まり木法を用いた従来の方法を改善し、処理効率を向上させるものである。
即ち、本発明に係るデジタルデータ処理方法では、上述のプログラムＹに対応して、例えば、以下に示すプログラムＡをベクトルプロセッサに行わせる。
【００２３】
（プログラムＡ）
０００：ＬＢＵ．２Ｄ［８］    ％ＶＲ０，［％ｂａｓｅ］，＃１
００１：；；；ＮＯＰ
００２：ＮＯＰ
００３：ＡＤＤＷ［８］        ％ＶＲ０，％ＶＲ０，％ＶＲ７
００４：；；；ＮＯＰ
００５：ＳＬＷ［８］          ％ＶＲ０，％ＶＲ０，＃２
００６：ＮＯＰ
００７：ＬＷ［８］            ％ＶＲ１，［％ｂａｓｅ２，％ＶＲ０］
００８：；；；ＮＯＰ
００９：ＮＯＰ
０１０：ＡＤＤＷＩ［８］      ％ＶＲ１，％ＶＲ１，＃１
０１１：；；；ＮＯＰ
０１２：ＳＷ［８］            ％ＶＲ１，［％ｂａｓｅ２，％ＶＲ０］
【００２４】
ここで、プログラムＡにおける“；；；”は、そのノーオペレーションを省略し、高速化することが可能であることを意味しており、具体的には、フォワーディングを行うことにより、ノーオペレーションをプログラムから削除することができる。
したがって、プログラムＡは、以下のプログラムＢとして書き直すことができる。
【００２５】
（プログラムＢ）
０００：ＬＢＵ．２Ｄ［８］    ％ＶＲ０，［％ｂａｓｅ］，＃１
００１：ＮＯＰ
００２：ＡＤＤＷ［８］        ％ＶＲ０，％ＶＲ０，％ＶＲ７
００３：ＳＬＷ［８］          ％ＶＲ０，％ＶＲ０，＃２
００４：ＮＯＰ
００５：ＬＷ［８］            ％ＶＲ１，［％ｂａｓｅ２，％ＶＲ０］
００６：ＮＯＰ
００７：ＡＤＤＷＩ［８］      ％ＶＲ１，％ＶＲ１，＃１
００８：ＳＷ［８］            ％ＶＲ１，［％ｂａｓｅ２，％ＶＲ０］
【００２６】
上述のプログラムＢを実行する場合、“００５”のロード命令（ＬＷ［８］）から“００８”のストア命令（ＳＷ［８］）までには４サイクルを要する。
即ち、本発明に係るデジタルデータ処理方法においては、画素値“０”〜“２５５”に対応する２５６個の記憶領域からなる度数格納用メモリが、論理的に４組連なる度数格納用メモリ群を用いることにより、画素値の度数を計数することができる。
【００２７】
したがって、最終的に、度数格納用メモリ群を構成する各度数格納用メモリの記憶領域ごとにデータの加算を行う処理が、従来の７回から３回に軽減されることとなる。
さらに、本発明に係るデジタルデータ処理方法においては、プログラムのオプションとして、ベクトルレジスタＶＲ０の各値を２ビットシフトされたものと解釈する機能を備えることによって、“００３”における２ビットのシフトを行うことなく、インデックス修飾を行うことが可能である。
即ち、プログラムＢは、以下のプログラムＣとして書き直すことができる。
【００２８】
（プログラムＣ）
０００：ＬＢＵ．２Ｄ［８］    ％ＶＲ０，［％ｂａｓｅ］，＃１
００１：ＮＯＰ
００２：ＡＤＤＷ［８］        ％ＶＲ０，％ＶＲ０，％ＶＲ７
００３：ＬＷ［８］            ％ＶＲ１，［％ｂａｓｅ２，％ＶＲ０］
００４：ＮＯＰ
００５：ＡＤＤＷＩ［８］      ％ＶＲ１，％ＶＲ１，＃１
００６：ＳＷ［８］            ％ＶＲ１，［％ｂａｓｅ２，％ＶＲ０］
【００２９】
上述のプログラムＣを実行する場合、プログラムＢに比べて処理サイクルが、さらに２サイクル短縮され、処理効率の向上が図られている。
なお、プログラムＣを実行する場合、ベクトルレジスタＶＲ７には、要素レジスタに、０，２５６×１，２５６×２，２５６×３，０，２５６×１，２５６×２，２５６×３の値が順に記憶されることとなる。
次に、本発明に係るデジタルデータ処理方法を実行するベクトルプロセッサについて説明する。
【００３０】
まず、構成を説明する。
図１は、本発明に係るベクトルプロセッサ１の構成を示す図である。
図１において、ベクトルプロセッサ１は、ベクトルプロセッサ１は、メモリ１０と、メモリ制御部２０と、命令フェッチ部３０と、レジスタファイル４０と、ロードユニット５０と、ストアユニット６０と、演算ユニット７０とを含んで構成される。
メモリ１０は、ベクトルプロセッサ１に与えられる命令コードおよび演算対象となるデータを記憶している。
また、メモリ１０は、“０”〜“２５５”の画素値それぞれに対応する２５６個の記憶領域からなる度数格納用メモリを４組有しており、これらの度数格納用メモリは、論理的に連なるものとしてアドレスが設定されている。
【００３１】
メモリ制御部２０は、メモリ１０に対するアクセス、即ち、データの読み出しや書き込みを制御する。例えば、メモリ制御部２０は、ロードユニット５０あるいはストアユニット６０によって指定されたメモリ１０のアドレスからデータを読み出したり、メモリ１０から読み出されたデータをレジスタファイル４０に出力したりする。
命令フェッチ部３０は、メモリ制御部２０を介して、メモリ１０から命令コードをフェッチし、一時的に記憶する。
【００３２】
レジスタファイル４０は、３２個のスカラーレジスタＳＲ０〜ＳＲ３１と、８個の要素レジスタからなる８本のベクトルレジスタＶＲ０〜ＶＲ７とを含んで構成され、メモリ１０から読み出されたデータおよび演算結果を一時的に記憶する。
さらに、レジスタファイル４０は、フォワーディング機構を備えており、パイプライン処理の実行ステージにおける実行結果を、レジスタを介さずに、他の命令で直接引用することが可能となっている。
【００３３】
ロードユニット５０は、命令フェッチ部３０に記憶された命令コードがロード命令である場合に、メモリ１０から命令コードあるいはデータを読み出す処理を行う。
ストアユニット６０は、命令フェッチ部３０に記憶された命令コードがストア命令である場合に、メモリ１０にデータを書き込む処理を行う。
演算ユニット７０は、命令フェッチ部３０に記憶された命令コードが所定の演算命令である場合に、レジスタファイル４０に記憶された所定データを対象として演算処理を行う。
【００３４】
次に、動作を説明する。
ベクトルプロセッサ１は、上述のプログラムＣを実行するものであり、初めに、処理対象となる画像データの第１行を、ベクトルレジスタＶＲ０に読み込む（サイクル“０００”，“００１”）。
そして、ベクトルレジスタＶＲ７に記憶されているインデックスアドレスを、ベクトルレジスタＶＲ０の各要素に加算し（サイクル“００２”）、算出されたメモリ１０のアドレスから、各要素の度数をロードする（サイクル“００３”，“００４”）。なお、ここで算出されたメモリ１０のアドレスは、度数格納用メモリ群において、各画素値に対応する記憶領域のアドレスを示している。
【００３５】
さらに、ベクトルプロセッサ１は、ロードした各要素の度数を“１”インクリメントし（サイクル“００５”）、その結果を、ロードした記憶領域にそれぞれ書き戻す（サイクル“００６”）。
この時点で、処理対象である画像データの第１行についての処理が終了し、ベクトルプロセッサ１は、同様の処理を第８行まで行う。
【００３６】
そして、ベクトルプロセッサ１は、第８行の処理が終了すると、度数格納用メモリの記憶領域ごとに度数を加算し、各画素値の度数を合計する。
その結果、記憶領域の競合を生ずることなく、画像データに関する画素値の計数が完了することとなる。
以上のように、本実施の形態に係るデジタルデータ処理方法およびベクトルプロセッサ１においては、実行されるプログラムＣにおけるロード命令（ＬＷ［８］）からストア命令（ＳＷ［８］）までのサイクル数に相当する数の度数格納用メモリを用意し、それらの記憶領域に固有のアドレスを設定する。また、これらの度数格納用メモリの記憶領域の数は、画素値の範囲と対応する数とされている。
【００３７】
そして、処理対象である所定の画像データの画素値それぞれを、画像データ相互において重複しないように記憶領域の固有のアドレスと対応付ける。さらに、処理対象である所定の画像データにおいて出現した画素値について、対応するアドレスの記憶領域に記憶されている度数をインクリメントしていく。
このような処理を画像データ全体について行い、最終的に、用意した度数格納用メモリそれぞれの記憶領域ごとに加算を行い、各画素値についての度数が取得される。
【００３８】
したがって、画素値の度数を計数するために必要となるメモリ１０上の領域が従来に比べて減少すると共に、最終的に、度数格納用メモリそれぞれの記憶領域ごとに加算する処理が軽減される。
具体的には、以下のような効果を奏する。
図２は、従来の方法（プログラムＸ）に従った場合のデータの遷移を示す図である。また、図３は、本発明に係るデジタルデータ処理方法に従った場合のデータの遷移を示す図である。
【００３９】
図２においては、上述のように、“００５”においてロードした度数がベクトルレジスタＶＲ１に記憶された状態で、各要素レジスタの値が“１”ずつインクリメントされ、その後、メモリ上の記憶領域に書き戻されるため、画素値“１２７”および“１２８”の度数として誤った値がストアされることとなっている。
一方、図３においては、“００３”において、メモリ上のそれぞれ異なる記憶領域からロードされた度数がインクリメントされた後、メモリ上のそれぞれ異なる記憶領域に書き戻され、最終的に、“００６”において、それぞれの記憶領域ごとに加算されている。そのため、画素値“１２７”および“１２８”の度数を含め、全ての画素値の度数が正しく計数されている。
即ち、本発明によれば、画素値を計数する際の処理効率を向上させることが可能となる。
【図面の簡単な説明】
【００４０】
【図１】本発明に係るベクトルプロセッサ１の構成を示す図である。
【図２】従来の方法に従った場合のデータの遷移を示す図である。
【図３】本発明に係るデジタルデータ処理方法に従った場合のデータの遷移を示す図である。
【図４】処理対象である画像データの画素値を示す図である。
【符号の説明】
【００４１】
１  ベクトルプロセッサ、１０  メモリ、２０  メモリ制御部、３０  命令フェッチ部、４０  レジスタファイル、５０  ロードユニット、６０  ストアユニット、７０  演算ユニット
【図１】
2005107926.tif 000003
【図２】
2005107926.tif 000004
【図３】
2005107926.tif 000005
【図４】
2005107926.tif 000006