(57)【特許請求の範囲】
【請求項１】
無効を示す「０」、又は有効を示す正の整数値、又は有効を示す負の整数値を持つ有効フラグと対になり、且つ順序関係をもって連続して入力する複数の入力データを、１サイクル毎に処理するデータ処理装置において、
前記入力データを前記１サイクル毎に前記順序関係に沿って所定数ずつ取り込み、当該データより順序が前の全てのデータの有効フラグの値の合計値、又はこれに当該データの有効フラグの値を加算した値を当該データの有効フラグ積算値として出力する有効フラグ積算器と、
複数のアドレスを有する複数のメモリからなり、前記有効フラグで有効と指定されたデータが、当該データに対応する前記有効フラグ積算値を入力アドレスとし、該入力アドレスを前記メモリの数で割算した際の「余り」に対応する番号のメモリの「商」に対応するアドレスに書き込まれる記憶装置と、
を備え、
前記有効を示す有効フラグを「１」以外の正又は負の整数値に設定する
ことを特徴とするデータ処理装置。
【請求項２】
請求項１に記載のデータ処理装置において、
前記複数のメモリに対して、前記有効フラグで有効と指定された各入力データを、前記入力アドレスを先頭アドレスとし、そこから有効フラグの値の数だけのメモリ位置に書き込む
ことを特徴とするデータ処理装置。
【請求項３】
無効を示す「０」、又は有効を示す正の整数値、又は有効を示す負の整数値を持つ有効フラグと対になり、且つ順序関係をもって連続して入力する複数の入力データを、１サイクル毎に処理するデータ処理装置において、
前記入力データを前記１サイクル毎に前記順序関係に沿って所定数ずつ取り込み、当該データより順序が前の全てのデータの有効フラグの値の合計値、又はこれに当該データの有効フラグの値を加算した値を当該データの有効フラグ積算値として出力する有効フラグ積算器と、
前記有効フラグ積算器で得られた有効フラグ積算値に拡大倍率をかけて新たな有効フラグ積算値として出力する乗算手段と、
複数のアドレスを有する複数のメモリからなり、前記有効フラグで有効と指定されたデータが、当該データに対応する前記有効フラグ積算値を入力アドレスとし、該入力アドレスを前記メモリの数で割算した際の「余り」に対応する番号のメモリの「商」に対応するアドレスに書き込まれる記憶装置と、
を備えることを特徴とするデータ処理装置。
【請求項４】
請求項３に記載のデータ処理装置において、
前記複数のメモリに対して、前記有効フラグで有効と指定された各入力データを、前記入力アドレスを先頭アドレスとし、そこから有効フラグの値と前記拡大倍率との積の値の数だけのメモリ位置に書き込む
ことを特徴とするデータ処理装置。
【請求項５】
無効を示す「０」、又は有効を示す正の整数値、又は有効を示す負の整数値を持つ有効フラグと対になり、且つ順序関係をもって連続して入力する複数の入力データを、１サイクル毎に処理するデータ処理装置において、
前記入力データを前記１サイクル毎に前記順序関係に沿って所定数ずつ取り込み、当該データより順序が前であってなおかつ当該データと同一サイクル内に処理される全てのデータの有効フラグの値の合計値、又はこれに当該データの有効フラグの値を加算した値を当該データの有効フラグ積算値として出力する有効フラグ積算器と、
前記サイクル数をカウントするサイクル数カウンタと、
複数のアドレスを有する複数のメモリからなり、前記有効フラグで有効と指定されたデータが、当該データに対応する前記有効フラグ積算値を入力アドレスとし、該入力アドレスに対応する番号のメモリの前記サイクル数カウンタに示される前記サイクル数に対応するアドレスに書き込まれる記憶装置と、
を備える
ことを特徴とするデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の入力データから、必要なデータのみを選択し、これを高速に任意の間隔に配置して記憶装置に記憶するデータ処理装置に関するものである。
【０００２】
複数の入力データから必要なデータのみを取り出して、記憶装置に順番に詰めて書き込む間引き処理が必要とされることがある。通常行われるのは、対象となる入力データについて１つづつ順番に、要／不要を判断し、必要と判断された入力データをその前に書き込まれた入力データの次のアドレスに書き込む方法である。この処理をハードウェアで行う従来の方法として、図１５に示すＦＩＦＯメモリ１００を用いる方法がある。
【０００３】
この方法では、まず、各入力データとその入力データの要／不要を示す有効フラグとを組にして１組づつ順番に入力する。このとき、有効フラグの値が有効を示す「１」である入力データのみ、入力順にＦＩＦＯメモリ１００に詰めて記憶する。図１５の例では、入力データＤ１、Ｄ２、Ｄ３、Ｄ４、Ｄ５の内、Ｄ１、Ｄ４のみＦＩＦＯメモリ１００に詰めて記憶する手順を示したものである。Ｄ１、Ｄ２、Ｄ３、Ｄ４、Ｄ５の順に入力データが入力され、各入力データが入力されるごとに有効フラグが「１」か「０」かを判断し、「１」であるＤ１、Ｄ４のみをＦＩＦＯメモリ１００に記憶する。この結果、記憶すべき入力データＤ１、Ｄ４のみをＦＩＦＯメモリ１００に詰めて記憶することができる。
【０００４】
別の従来技術として、特許文献１には、シリアル入力データの内、必要な入力データのみを詰めてパラレルに出力し、これをレジスタに書き込む方法が記載されている。この方法では、シリアルデータをパラレルデータに変換する際に、必要な入力データを、その直前の不要な入力データの数だけシフトレジスタによってデータ位置をシフトさせる。これによって、要／不要の入力データが混在して飛び飛びであったシリアルデータを、必要な入力データのみが詰めて配置されたパラレルデータに変換できる。
【特許文献１】特開平８−１２３６８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、ＦＩＦＯメモリ１００に詰めて記憶する方法では、入力データを１つづつ逐次的に処理せざるを得ないため、データ処理の高速化をはかることが出来ないという問題がある。また、特許文献１に記載の方法でも、シリアル入力のデータ１つづに対して、逐次そのシフト量を判定して、格納場所を決めていかなければならないため、処理速度を速くすることができないという問題がある。
【０００６】
さらに、対象のデータをレジスタではなく、ＲＡＭ等のメモリに書き込む場合には、１回に１ワード単位（１ワードの大きさはそのメモリによる）でしか書き込めないという制限があるため、常に１ワード分データを詰めた状態になるまで蓄積しておいてから書き込まねばならないという問題も生じる。例えば、１ワード４ビットのメモリに書き込む場合を考えると、１回目の書き込みで、１ビットだけデータを書き込み、２回目の書き込みで残りの３ビット分を書き込むということができない。そのため、この従来技術の方法を使うと、４ビット分データが集まるまで、これをバッファしておいてから書き込まねばならないという問題がある。
【０００７】
本発明は、複数データから必要なデータのみ選択し、これを任意の幅に詰めてメモリに記憶する処理を、複数データに対して並列に行うことにより、高速にデータ処理を実施することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、請求項１にかかる発明のデータ処理装置は、無効を示す「０」、又は有効を示す正の整数値、又は有効を示す負の整数値を持つ有効フラグと対になり、且つ順序関係をもって連続して入力する複数の入力データを、１サイクル毎に処理するデータ処理装置において、前記入力データを前記１サイクル毎に前記順序関係に沿って所定数ずつ取り込み、当該データより順序が前の全てのデータの有効フラグの値の合計値、又はこれに当該データの有効フラグの値を加算した値を当該データの有効フラグ積算値として出力する有効フラグ積算器と、複数のアドレスを有する複数のメモリからなり、前記有効フラグで有効と指定されたデータが、当該データに対応する前記有効フラグ積算値を入力アドレスとし、該入力アドレスを前記メモリの数で割算した際の「余り」に対応する番号のメモリの「商」に対応するアドレスに書き込まれる記憶装置と、を備え、前記有効を示す有効フラグを「１」以外の正又は負の整数値に設定することを特徴とする。
請求項２にかかる発明は、請求項１に記載のデータ処理装置において、前記複数のメモリに対して、前記有効フラグで有効と指定された各入力データを、前記入力アドレスを先頭アドレスとし、そこから有効フラグの値の数だけのメモリ位置に書き込むことを特徴とする。
請求項３にかかる発明は、無効を示す「０」、又は有効を示す正の整数値、又は有効を示す負の整数値を持つ有効フラグと対になり、且つ順序関係をもって連続して入力する複数の入力データを、１サイクル毎に処理するデータ処理装置において、前記入力データを前記１サイクル毎に前記順序関係に沿って所定数ずつ取り込み、当該データより順序が前の全てのデータの有効フラグの値の合計値、又はこれに当該データの有効フラグの値を加算した値を当該データの有効フラグ積算値として出力する有効フラグ積算器と、前記有効フラグ積算器で得られた有効フラグ積算値に拡大倍率をかけて新たな有効フラグ積算値として出力する乗算手段と、複数のアドレスを有する複数のメモリからなり、前記有効フラグで有効と指定されたデータが、当該データに対応する前記有効フラグ積算値を入力アドレスとし、該入力アドレスを前記メモリの数で割算した際の「余り」に対応する番号のメモリの「商」に対応するアドレスに書き込まれる記憶装置と、を備えることを特徴とする。
請求項４にかかる発明は、請求項３に記載のデータ処理装置において、前記複数のメモリに対して、前記有効フラグで有効と指定された各入力データを、前記入力アドレスを先頭アドレスとし、そこから有効フラグの値と前記拡大倍率との積の値の数だけのメモリ位置に書き込むことを特徴とする。
請求項５にかかる発明は、無効を示す「０」、又は有効を示す正の整数値、又は有効を示す負の整数値を持つ有効フラグと対になり、且つ順序関係をもって連続して入力する複数の入力データを、１サイクル毎に処理するデータ処理装置において、前記入力データを前記１サイクル毎に前記順序関係に沿って所定数ずつ取り込み、当該データより順序が前であってなおかつ当該データと同一サイクル内に処理される全てのデータの有効フラグの値の合計値、又はこれに当該データの有効フラグの値を加算した値を当該データの有効フラグ積算値として出力する有効フラグ積算器と、前記サイクル数をカウントするサイクル数カウンタと、複数のアドレスを有する複数のメモリからなり、前記有効フラグで有効と指定されたデータが、当該データに対応する前記有効フラグ積算値を入力アドレスとし、該入力アドレスに対応する番号のメモリの前記サイクル数カウンタに示される前記サイクル数に対応するアドレスに書き込まれる記憶装置と、を備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、複数のデータから任意のデータを選択し、これを任意の幅に詰めてメモリに記憶する処理を、複数データに対して並列に行なうことが可能になる。これにより、例えば、画像や音声などの情報データの圧縮や拡大などの処理も高速に実行することができる。
【発明を実施するための最良の形態】
【００１０】
＜発明の概要＞
図１Ａ、１Ｂは、本発明のデータ処理装置によるデータ処理の流れを示したものである。この図では、例として、８個のデータＤ０、Ｄ１、Ｄ２、Ｄ３、Ｄ４、Ｄ５、Ｄ６、Ｄ７のうち、Ｄ０、Ｄ３、Ｄ４〜Ｄ７の６個のデータを選択して、データ番号の順番に詰めて記憶する場合を示す。データを４個づつ同時に入力し、記憶装置１０の４つのメモリＭ０〜Ｍ３のアドレスの若い方からメモリＭ０、Ｍ１、Ｍ２、Ｍ３の順番に詰めて配置し、同時に書き込む。このようにすると、１回の書き込み処理で、１つのメモリに２つ以上のデータが同時に書き込まれることはないので、最大４つのデータを同時並行処理で書き込んでいくことが可能である。
【００１１】
図１Ａでは最初の４つの入力データＤ０〜Ｄ３の処理について示している。各データは、その要／不要を１ビットで示す有効フラグ（「１」が有効、「０」が無効）を持ち、本データ処理装置では、この有効フラグによってデータの要／不要を判断する。入力データＤ０〜Ｄ３のうち、データＤ０、Ｄ３の有効フラグが「１」、残りのＤ１、Ｄ２の有効フラグが「０」となっている。すでに、メモリＭ０、Ｍ１、Ｍ２のアドレスＡＤ０には、データが書き込まれているとすると、データＤ０は、この次のメモリＭ３のアドレスＡＤ０に、データＤ３は、メモリＭ０のアドレスＡＤ１にそれぞれ書き込む。
【００１２】
次の入力データＤ４〜Ｄ７の処理を図１Ｂに示す。入力データＤ４〜Ｄ７はすべて記憶対象であるので、それらの有効フラグはすべて「１」となっている。そして、入力データＤ４はメモリＭ１のアドレスＡＤ１に、入力データＤ５はメモリＭ２のアドレスＡＤ１に、入力データＤ６はメモリＭ３のアドレスＡＤ１に、データＤ７はメモリＭ０のアドレスＡＤ２にそれぞれ書き込む。
【００１３】
このようにして、８個の入力データＤ０〜Ｄ７のうち、記憶すべき６個の入力データＤ０、Ｄ３、Ｄ４〜Ｄ７が、メモリＭ０〜Ｍ３にアドレスの若い方からに詰めて書き込まれる。
【００１４】
図２Ａ，２Ｂは、本発明のデータ処理装置によるデータ処理の動作説明図である。本データ処理装置では、入力データ線ＤＡＴＡ０〜ＤＡＴＡ３と、各入力データごとに要／不要を１ビットで示す有効フラグＶ０〜Ｖ３が接続される。そして、そこに入力するデータと有効フラグを組にして、４組づつ同時に入力し、並列処理する。
【００１５】
図２Ａでは、１回目の入力データとして入力データ線ＤＡＴＡ０〜ＤＡＴＡ３に、それぞれデータＤ０〜Ｄ３が入力され、このうち、記憶すべきデータＤ０、Ｄ３の有効フラグＶ０、Ｖ３を「１」、残りのデータＤ１、Ｄ２の有効フラグＶ１、Ｖ２を「０」と設定している。図２Ｂは、２回目の入力に対する処理を示している。入力データ線ＤＡＴＡ０〜ＤＡＴＡ３に、それぞれデータＤ４〜Ｄ７が入力される。データＤ４〜Ｄ７のすべてを記憶するので、データＤ４〜Ｄ７に対する有効フラグＶ０〜Ｖ３はすべて「１」である。
【００１６】
入力されたデータは、有効フラグ積算器２０によって、各データごとにそれより順番が前の全てのデータの有効フラグ値を合計した積算値をそれぞれ計算し、これを有効フラグ積算値として出力する。有効フラグ積算器２０は、有効フラグ積算先頭値格納部２１と、有効フラグ値同士を加算する３個の加算器２２と、この加算器２２の加算結果と有効フラグ積算先頭値格納部２１の有効フラグ積算先頭値とを加算する４個の加算器２３とを備える。
【００１７】
この例では、すでに３つのデータがメモリＭ０、メモリＭ１、メモリＭ２のアドレスＡＤ０に書き込まれているので、有効フラグ積算値の先頭値である有効フラグ積算先頭値として「３」を与える。そして、データＤ０〜Ｄ３に対する有効フラグ積算値、および次計算サイクル（データＤ４〜Ｄ７に対する計算サイクル）で用いる有効フラグ積算先頭値を次のように計算する。
【００１８】
Ｄ０の有効フラグ積算値＝有効フラグ積算先頭値
Ｄ１の有効フラグ積算値＝有効フラグ積算先頭値＋Ｄ０の有効フラグ値
Ｄ２の有効フラグ積算値＝有効フラグ積算先頭値＋Ｄ０の有効フラグ値＋Ｄ１の有効フラグ値
Ｄ３の有効フラグ積算値＝有効フラグ積算先頭値＋Ｄ０の有効フラグ値＋Ｄ１の有効フラグ値＋Ｄ２の有効フラグ値
次計算サイクルの有効フラグ積算先頭値＝有効フラグ積算先頭値＋Ｄ０の有効フラグ値＋Ｄ１の有効フラグ値＋Ｄ２の有効フラグ値＋Ｄ３の有効フラグ値
【００１９】
その結果、図２Ａに示すように、データＤ０、Ｄ１、Ｄ２、Ｄ３に対する有効フラグ積算値はそれぞれ「３」、「４」、「４」、「４」となり、次計算サイクルの有効フラグ積算先頭値は「５」となる。
【００２０】
図２Ｂは、次サイクルのデータＤ４〜Ｄ７に対する計算処理を示している。有効フラグ積算先頭値として、前の計算サイクルで計算した値「５」を用いて、同様に以下の通り計算する。
Ｄ４の有効フラグ積算値＝有効フラグ積算先頭値
Ｄ５の有効フラグ積算値＝有効フラグ積算先頭値＋Ｄ４の有効フラグ値
Ｄ６の有効フラグ積算値＝有効フラグ積算先頭値＋Ｄ４の有効フラグ値＋Ｄ５の有効フラグ値
Ｄ７の有効フラグ積算値＝有効フラグ積算先頭値＋Ｄ４の有効フラグ値＋Ｄ５の有効フラグ値＋Ｄ６の有効フラグ値
次計算サイクルの有効フラグ積算先頭値＝有効フラグ積算先頭値＋Ｄ４の有効フラグ値＋Ｄ５の有効フラグ値＋Ｄ６の有効フラグ値＋Ｄ７の有効フラグ値
【００２１】
この結果、図２Ｂに示すように、データＤ４、Ｄ５、Ｄ６、Ｄ７に対する有効フラグ積算値はそれぞれ「５」、「６」、「７」、「８」となり、次計算サイクルの有効フラグ積算先頭値は「９」となる。
【００２２】
こうして得られた有効フラグ積算値は、そのデータが有効フラグ「１」の全データのうち先頭から何番目にあるかを示すことになる。ただし、メモリＭ０のアドレスＡＤ０にある先頭データを０番目として数えている。従って、データＤ０は３番目となる。一方、図２Ａ、２Ｂの例では、有効フラグが「１」であるデータをメモリＭ０〜メモリＭ３のアドレスに順番に書き込んで行く。
【００２３】
従って、各データの有効フラグ積算値を４で割った「余り」がメモリＭ０〜メモリＭ３のどのメモリに書き込むかを示し、有効フラグ積算値を４で割った「商」が書き込むべきメモリのアドレスを示している。さらに、この例では、有効フラグ積算値を２進数で書いた場合、下位２ビットが有効フラグ積算値を４で割った「余り」にあたり、３ビット目以上の数値が有効フラグ積算値を４で割った「商」になるから、各データの有効フラグ積算値が、そのデータをどのメモリのどのアドレスに書き込むかを示すことになる。
【００２４】
例えば、図２ＢのデータＤ４に対する有効フラグ積算値は「５」で、これを２進数で表示すると「０１０１」となる。このうちの下位２ビットは「０１」で１０進数表示すると「１」であり、３ビット目以上は「０１」で１０進数表示すると「１」である。従って、データＤ４はメモリＭ１のアドレスＡＤ１に書き込む。
【００２５】
このようにして、各データの有効フラグ積算値を計算した上で、有効フラグが「１」であるデータについて、有効フラグ積算値の下位２ビット値によってメモリを選択し、３ビット目以上の数値を当該メモリのアドレスとしてデータをメモリに書き込む。この方法によれば、４個の入力データに対して、書き込むべきデータを選択して、メモリに順番に詰めて書き込むという処理を同時に並行処理することができる。
【００２６】
以上の説明では、データを４個ずつ入力する構成で説明した。これは、通常、デジタル回路のデータ単位として、４バイト、８バイト、１６バイトなどの２のｎ乗バイトが使用されるということ、および入力データ数が２、４、８、１６のような２のｎ乗である方が構成が簡単であるということからこの例で説明したものであり、入力データ数が３、５、６等のように２のｎ乗でない数であっても、本発明を適用可能である。
【００２７】
入力データ数が２のｎ乗である方が構成が簡単になる理由は、次の通りである。実施例で、有効フラグ積算値を入力データ数（上記例では４）で割った「余り」と「商」を求める必要があるが、入力データ数が２のｎ乗個であるときは、割算回路を設ける必要がない。有効フラグ積算値は２進数で表されるので、例えば、入力データ数が４のとき、有効フラグ積算値の下２桁が「余り」、第３桁目以上が「商」となる。入力データ数が８の場合は、有効フラグ積算値を８で割った「余り」と「商」を求める必要があるが、有効フラグ積算値の下３桁が「余り」、第４桁目以上の部分が「商」となり、この場合も割算回路を設ける必要がない。
【００２８】
一方、入力データ数が２のｎ乗でない数である場合も、有効フラグ積算値を入力数で割った「余り」と「商」を計算すれば、同様に処理できるので、本発明を適用することができる。ただし、この場合は、入力データ数で有効フラグ積算値を割る割算回路を設ける必要がある。この例については、後記する。
【００２９】
＜実施例１＞
図３Ａ、３Ｂは、本発明のデータ処理装置を用いて、複数の入力データのうち、必要なデータのみ選択して、レジスタ等の記憶装置１０に詰めて書き込むようにした実施例１を示したものである。図２Ａ，２Ｂの例と同じく、１回目の入力データＤ０〜Ｄ３、２回目の入力データＤ４〜Ｄ７のうち、６個のデータＤ０、Ｄ３、Ｄ４〜Ｄ７をメモリＭ０〜メモリＭ３にアドレスの若い方からに詰めて書き込む場合について説明する。
【００３０】
まず、本データ処理装置の構成を説明する。有効フラグ積算器２０によって算出した各データの有効フラグ積算値のうち、下位２ビットの値をそれぞれＡＤ０_Ｘ〜ＡＤ３_Ｘとして出力する。このＡＤ０_Ｘ〜ＡＤ３_Ｘと、有効フラグＶ０〜Ｖ３をセレクタ制御信号生成回路３０に入力する。一方、各データの有効フラグ積算値のうち、３ビット目以上の値をそれぞれＡＤ０_Ｙ〜ＡＤ３_Ｙとして出力する。このＡＤ０_Ｙ〜ＡＤ３_Ｙと、各入力データ線ＤＡＴＡ０〜ＤＡＴＡ３をデータセレクタ４０に接続する。セレクタ制御信号生成回路３０から、データセレクタ４０の制御信号ＳＥＬ０_Ｓ〜ＳＥＬ３_Ｓを出力し、データセレクタ４０に入力する。データセレクタ４０からは、データ信号ＯＵＴ_ＤＡＴＡ０〜ＯＵＴ_ＤＡＴＡ３、データ書込アドレス信号ＯＵＴ_ＡＤ０〜ＯＵＴ_ＡＤ３、データ書込制御信号ＯＵＴ_ＷＥ０〜ＯＵＴ_ＷＥ３が出力し、それぞれメモリＭ０〜Ｍ３に入力する。
【００３１】
図４にセレクタ制御信号生成回路３０の構成を示す。本モジュールは、複数の比較器３１とアンド回路３２からなり、有効フラグＶ０〜Ｖ３と、有効フラグ積算値の下位２ビット値であるＡＤ０_Ｘ〜ＡＤ３_Ｘを入力し、データセレクタ制御信号ＳＥＬ０_Ｓ〜ＳＥＬ３_Ｓを出力する。このデータセレクタ制御信号ＳＥＬ０_Ｓ〜ＳＥＬ３_Ｓは、それぞれ４ビット幅の信号であり、次のように計算する。
【００３２】
ＳＥＬｎ_Ｓ［０］＝（ＡＤ０_Ｘ＝ｎ）＆Ｖ０
ＳＥＬｎ_Ｓ［１〕＝（ＡＤ１_Ｘ＝ｎ）＆Ｖ１
ＳＥＬｎ_Ｓ［２］＝（ＡＤ２_Ｘ＝ｎ）＆Ｖ２
ＳＥＬｎ_Ｓ〔３］＝（ＡＤ３_Ｘ＝ｎ）＆Ｖ３
ただし、ｎ＝０〜３
上記の式「 ＳＥＬｎ_Ｓ［０］＝（ＡＤ０_Ｘ＝ｎ）＆Ｖ０ 」の意味は、ＡＤ０_Ｘ＝ｎ且つＶ０＝Ｔｒｕｅのとき、ＳＥＬｎ_Ｓ［０］＝Ｔｒｕｅを意味する。［０］は０ビット目を示す。
【００３３】
例えば、図３Ａの例では、ＡＤ０_Ｘ＝３、ＡＤ１_Ｘ＝０、ＡＤ２_Ｘ＝０、ＡＤ３_Ｘ＝０であり、Ｖ０＝１、Ｖ１＝０、Ｖ２＝０、Ｖ３＝１であるので、ＳＥＬ０_Ｓは、
ＳＥＬ０_Ｓ［０］＝０
ＳＥＬ０_Ｓ［１〕＝０
ＳＥＬ０_Ｓ［２］＝０
ＳＥＬ０_Ｓ〔３］＝１
となる。つまり、ＳＥＬ０_Ｓ＝１０００となる。同様に、ＳＥＬ１_Ｓ＝００００、ＳＥＬ２_Ｓ＝００００、ＳＥＬ３_Ｓ＝０００１と出力する。
【００３４】
図５にデータセレクタ４０の構成を示す。データセレクタ４０には、入力データ線ＤＡＴＡ０〜ＤＡＴＡ３と、各データの有効フラグ積算値の３ビット目以上の値ＡＤ０_Ｙ〜ＡＤ３_Ｙが入力する。ＤＡＴＡ０とＡＤ０_Ｘ、ＤＡＴＡ１とＡＤ１_Ｘ、ＤＡＴＡ２とＡＤ２_Ｘ、ＤＡＴＡ３とＡＤ３_Ｘがそれぞれ組になって、データセレクタ４０の４つのセレクタＳＥＬ０〜ＳＥＬ３のすべてに入力する。そして、セレクタＳＥＬ０〜ＳＥＬ３はそれぞれ、セレクタ制御信号生成回路３０からの制御信号ＳＥＬ０_Ｓ〜ＳＥＬ３_Ｓに応じて、下記のように出力信号を切り替える。
【００３５】
ＳＥＬｎ_Ｓ＝０００１のとき
ＯＵＴ_ＤＡＴＡｎ←ＤＡＴＡ０
ＯＵＴ_ＡＤｎ←ＡＤ０_Ｙ
ＯＵＴ_ＷＥｎ←Ｔｒｕｅ
ＳＥＬｎ_Ｓ＝００１０のとき
ＯＵＴ_ＤＡＴＡｎ←ＤＡＴＡ１
ＯＵＴ_ＡＤｎ←ＡＤ１_Ｙ
ＯＵＴ_ＷＥｎ←Ｔｒｕｅ
ＳＥＬｎ_Ｓ＝０１００のとき
ＯＵＴ_ＤＡＴＡｎ←ＤＡＴＡ２
ＯＵＴ_ＡＤｎ←ＡＤ２_Ｙ
ＯＵＴ_ＷＥｎ←Ｔｒｕｅ
ＳＥＬｎ_Ｓ＝１０００のとき
ＯＵＴ_ＤＡＴＡｎ←ＤＡＴＡ３
ＯＵＴ_ＡＤｎ←ＡＤ３_Ｙ
ＯＵＴ_ＷＥｎ←Ｔｒｕｅ
ＳＥＬｎ_Ｓが上記以外の値のとき
ＯＵＴ_ＤＡＴＡｎ←Ｄｏｎ’ｔ  ｃａｒｅ（任意の値を設定してよい）
ＯＵＴ_ＡＤｎ←Ｄｏｎ’ｔ  ｃａｒｅ（任意の値を設定してよい）
ＯＵＴ_ＷＥｎ←Ｆａｌｓｅ
ただし、ｎ＝０〜３
ここで、ＯＵＴ_ＷＥｎは、メモリＭｎのライトイネーブル信号で、Ｔｒｕｅのとき書込動作するものとする。
【００３６】
例えば、図３Ａの例では、上記したように、
ＳＥＬ０_Ｓ＝１０００
であるので、セレクタＳＥＬ０の出力は、ＯＵＴ_ＤＡＴＡ０＝Ｄ３（＝ＤＡＴＡ３）、ＯＵＴ_ＡＤ０＝１（＝ＡＤ３_Ｙ）、ＯＵＴ_ＷＥ０＝Ｔｒｕｅ（＝Ｖ３）となる。同様に、
ＯＵＴ_ＤＡＴＡ１＝Ｄｏｎ’ｔ  ｃａｒｅ、ＯＵＴ_ＡＤ１＝Ｄｏｎ’ｔ  ｃａｒｅ、ＯＵＴ_ＷＥ１＝Ｆａｌｓｅ
ＯＵＴ_ＤＡＴＡ２＝Ｄｏｎ’ｔ  ｃａｒｅ、ＯＵＴ_ＡＤ２＝Ｄｏｎ’ｔ  ｃａｒｅ、ＯＵＴ_ＷＥ２＝Ｆａｌｓｅ
ＯＵＴ_ＤＡＴＡ３＝Ｄ０（＝ＤＡＴＡ０）、ＯＵＴ_ＡＤ３＝０（＝ＡＤ０_Ｙ）、ＯＵＴ_ＷＥ３＝Ｔｒｕｅ（＝Ｖ０）
となる。
【００３７】
このような構成にすることにより、各入力データのうち、有効フラグ値が「１」であるデータのみが、その有効フラグ積算値の下位２ビット値ＡＤｎ_Ｘで指定されるメモリの、ＡＤｎ_Ｙで指定されるアドレスに書き込まれる。
【００３８】
本発明の有効フラグ積算器２０は、有効フラグ同士を加算する加算器２２と、その加算器２２の加算結果と有効フラグ積算先頭値とを加算する加算器２３からなる簡単な構造であるため、並列度の規模や加算器の性能にもよるが、有効フラグ積算値の計算、データのメモリヘの書込処理を通常１クロックづつで行うことも可能である。そして、複数の入力データに対して同時に並列処理することができるので、非常に高速にデータ処理を行うことが出来る。
【００３９】
＜実施例２＞
上記の実施例１では、入力データを４つづつ同時に入力して、記憶装置１０の４個のメモリＭ０〜Ｍ３に書き込むようにしたが、本実施例２は、図６に示すように、入力データを４つづつ同時に入力して、記憶装置１０Ａの８個のメモリＭ０〜Ｍ７に書き込むようにしたものである。この場合には、各データの有効フラグ積算値を８で割った「余り」がメモリＭ０〜Ｍ７のどのメモリに書き込むかを示し、有効フラグ積算値を８で割った「商」が書き込むべきメモリのアドレスを示している。
【００４０】
従って、この例では、各データの有効フラグ積算値の下位３ビットをそれぞれＡＤ０_Ｘ〜ＡＤ３_Ｘとし、有効フラグ積算値の４ビット目以上の値をＡＤ０_Ｙ〜ＡＤ３_Ｙとして、この値の示すアドレスに書き込むようにすればよい。
【００４１】
＜実施例３＞
本実施例３は、図７に示すように、入力データを４つづつ同時に入力して、これを記憶装置１０Ｂの６個のメモリＭ０〜Ｍ５に書き込むようにしたものである。本装置は、各データの有効フラグ積算値を「６」で割り算する割算器５０をもつ。そして、有効フラグ積算値を６で割った「余り」に応じてメモリＭ０〜Ｍ５のどのメモリに書き込むかを判断し、有効フラグ積算値を「６」で割った「商」によって書き込むべきメモリのアドレスを決定している。
【００４２】
＜実施例４＞
図２Ａ、２Ｂ、図３Ａ、３Ｂに示した有効フラグ積算器２０では、各データの有効フラグ積算値として、そのデータより前にあるすべてのデータの有効フラグを合計して求めた。これに対して、図８Ａ、８Ｂに示す本実施例４では、各データの有効フラグ積算値を、そのデータより前のすべてデータの有効フラグとそのデータ自身の有効フラグを加算することで求める構成にしている。その一方、有効フラグ積算先頭値を図２Ａ，２Ｂ、図３Ａ、３Ｂの方法より、「１」だけ小さい値を設定するようにする。このような本実施例の方法によっても、実施例１と同様の有効フラグ積算値を算出することが出来、有効フラグが「１」であるデータのみを選択して順に詰めて書き込むことが可能になる。
【００４３】
図８Ａ、８Ｂは、実施例１（図３Ａ、３Ｂ）と同じ入力データを入力した場合の、本実施例４によるデータ処理方法および構成を示している。まず、図８Ａにおいては、有効フラグ積算先頭値の初期値として「２」を与える。そして、入力データＤ０〜Ｄ３に対する有効フラグ積算値、および次計算サイクル（Ｄ４〜Ｄ７に対する計算サイクル）で用いる有効フラグ積算先頭値を次のように計算する。
Ｄ０の有効フラグ積算値＝有効フラグ積算先頭値＋Ｄ０の有効フラグ値
Ｄ１の有効フラグ積算値＝有効フラグ積算先頭値＋Ｄ０の有効フラグ値＋Ｄ１の有効フラグ値
Ｄ２の有効フラグ積算値＝有効フラグ積算先頭値＋Ｄ０の有効フラグ値＋Ｄ１の有効フラグ値＋Ｄ２の有効フラグ値
Ｄ３の有効フラグ積算値＝有効フラグ積算先頭値＋Ｄ０の有効フラグ値＋Ｄ１の有効フラグ値＋Ｄ２の有効フラグ値＋Ｄ３の有効フラグ値
次計算サイクルの有効フラグ積算先頭値＝Ｄ３の有効フラグ積算値
【００４４】
その結果、図８Ａに示すように、入力データＤ０〜Ｄ３に対する有効フラグ積算値はそれぞれ「３」、「３」、「３」、「４」となり、次計算サイクルめ有効フラグ積算先頭値は「４」となる。
【００４５】
図８Ｂは、次サイクルの入力データＤ４〜Ｄ７に対する計算処理を示している。有効フラグ積算先頭値として、前の計算サイクルで計算した値４を用いて、同様に以下の通り計算する。
Ｄ４の有効フラグ積算値＝有効フラグ積算先頭値＋Ｄ４の有効フラグ値
Ｄ５の有効フラグ積算値＝有効フラグ積算先頭値＋Ｄ４の有効フラグ値＋Ｄ５の有効フラグ値
Ｄ６の有効フラグ積算値＝有効フラグ積算先頭値＋Ｄ４の有効フラグ値＋Ｄ５の有効フラグ値＋Ｄ６の有効フラグ値
Ｄ７の有効フラグ積算値＝有効フラグ積算先頭値＋Ｄ４の有効フラグ値＋Ｄ５の有効フラグ値＋Ｄ６の有効フラグ値＋Ｄ７の有効フラグ値
次計算サイクルの有効フラグ積算先頭値＝Ｄ７の有効フラグ積算値
【００４６】
この結果、図８Ｂに示すように、入力データＤ４〜Ｄ７に対する有効フラグ積算値はそれぞれ「５」、「６」、「７」、「８」となり、次計算サイクルの有効フラグ積算先頭値は「８」となる。
【００４７】
このように本実施例４の方法によっても、有効フラグが「１」であるデータの有効フラグ積算値は、実施例１で得られる値と同じ値が算出できる。この得られた有効フラグ積算値を用いて、実施例１と同様の方法により、記憶装置１０のメモリＭ０〜Ｍ３にデータを詰めて書き込むことができる。
【００４８】
＜実施例５＞
本実施例は、大きさが異なる入力データに対して、本発明の方法を適用した場合である。図９Ａ、９Ｂに示した例では、入力データＤ０、Ｄ１、Ｄ３は１バイト、Ｄ２は２バイト、Ｄ４は３バイトとし、このうち、網掛け表示したＤ０、Ｄ２、Ｄ４のみ選択して順に詰めて記憶装置１０に記憶した場合を示している。各データとも、単位データ量である１バイトに１つづつ有効フラグを持つようにしている。すなわち、２バイトのＤ２は２つ、３バイトのＤ４は３つの有効フラグをもつ。そして、記憶装置１０に記憶したいデータの有効フラグは対応する有効フラグを「１」にする。このような入力データと有効フラグのペアに対して、実施例１〜４と同様の計算により、各データの１バイトごとに有効フラグ積算値を算出する。
【００４９】
図９Ａでは、データＤ０の有効フラグ積算値が「０」であり、データＤ２の１バイト目、２バイト目の有効フラグ積算値は、それぞれ「１」、「２」となる。これから、Ｄ０、Ｄ２の１バイト目、Ｄ２の２バイト目をそれぞれメモリＭ０、Ｍ１、Ｍ２のアドレスＡＤ０に書き込む。これによって、Ｄ０、Ｄ２を詰めてメモリＭ０、Ｍ１、Ｍ２に書き込むことが出来る。
【００５０】
同様に、図９Ｂでは、記憶すべきデータＤ４の１バイト目、２バイト目、３バイト目の有効フラグ積算値はそれぞれ「３」、「４」、「５」と求められるので、それぞれメモリＭ３のアドレスＡＤ０、メモリＭ０のアドレスＡＤ１、メモリＭ１のアドレスＡＤ１に書き込む。この結果、１バイトのデータＤ０、２バイトのデータＤ２、３バイトのデータＤ４のみ取り出して、図９Ｂに示すように、メモリに順に詰めて記憶する処理を４バイトづつ高速に実行することが出来る。
【００５１】
＜実施例６＞
以上の実施例１〜５では、各データの有効フラグ値を「０」又は「１」に設定した。これに対して、本実施例６では、各データの有効フラグ値を例えば「０」又は「２」、「３」などのように、「１」以外の値に設定することにより、データの間隔をもとの入力時の間隔より広げる処理を可能にするものである。
【００５２】
図１０Ａに示した例では、入力データＤ０〜Ｄ３に対する有効フラグ値を全て「２」と設定して、実施例１と同様の方法で、有効フラグ積算値を算出する。すると、データＤ０〜Ｄ３に対する有効フラグ積算値は、それぞれ「０」、「２」、「４」、「６」となる。これらの値から、各データＤ０、Ｄ１、Ｄ２、Ｄ３を記憶装置１０ＡのメモリＭ０、Ｍ２、Ｍ４、Ｍ６のアドレスＡＤ０に書き込む。これにより、図１０Ａに示すように、データＤ０〜Ｄ３が記憶装置１０Ａの１つおきのメモリに書き込まれ、データ間隔を拡げて書くことが出来る。
【００５３】
ただし、この例において、書込先のメモリが１度に１つのアドレスヘの書込しかできないタイプのメモリである場合は、入力データの数（この場合４）の２倍の８個ないしそれ以上の個数のメモリを用意する必要がある。８個未満の場合、同一のメモリの異なるアドレスに同時に書込動作が行われる可能性があるためであり、注意が必要である。
【００５４】
図１０Ａに示した例では、メモリＭ１、Ｍ３、Ｍ５、Ｍ７にはデータを書き込まず空白としていた。これに対して、図１０Ｂの例は、メモリＭ０とＭ１にデータＤ０、メモリＭ２とＭ３にデータＤ１、メモリＭ４とＭ５にデータＤ２、メモリＭ６とＭ７にデータＤ３を、それぞれ書き込むようにすることも出来る。各データに対して、その有効フラグ積算値を先頭アドレスとして、そこから有効フラグ値の数だけのメモリ位置に各データを書き込むようにする。これにより、例えば、画像データをより面積の広い画像に拡大処理することなどにも応用できる。
【００５５】
図１０Ｃに示すように、入力データのうち、任意のデータのみ選んで、これを指定した間隔で並べることも可能である。図１０Ｃの例では、入力データＤ０〜Ｄ３のうち、Ｄ０、Ｄ２、Ｄ３の有効フラグを「２」、Ｄ１の有効フラグを「０」と設定する。実施例１などと同様の計算により、Ｄ０〜Ｄ３の各データの有効フラグ積算値を算出すると、それぞれ、「０」、「２」、「２」、「４」となる。このうち、有効フラグが「０」でないＤ０、Ｄ２、Ｄ３を、その有効フラグ積算値をアドレスとして記憶装置に書き込むと、図１０Ｃのように、Ｄ０、Ｄ２、Ｄ３がメモリＭ０、Ｍ２、Ｍ４のアドレスＡＤ０に書き込まれる。
【００５６】
図１０Ｄは、図１０Ｃと入力データ、有効フラグ値、算出された有効フラグ積算値は同じだが、図１０Ｂと同じように、各データ間を空白とせず、その前のデータで埋めるようにしたものである。各データに対して、その有効フラグ積算値を先頭アドレスとして、そこから有効フラグ値の数だけのメモリ位置に各データを書き込むようにする。これにより、例えば、画像データをより面積の広い画像に拡大処理することも可能になる。図１０Ｂの場合は一律にデータを拡大することができたが、図１０Ｄのようにすれば、画像データの任意の領域を選んでこれを拡大するということも可能になる。
【００５７】
図１０Ｅのように、各データの有効フラグ値を任意に設定して、データ選択およびデータ間隔を任意に設定することもできる。入力データＤ０〜Ｄ３に対する有効フラグ値をそれぞれ「２」、「０」、「３」、「２」に設定すると、有効フラグ積算値はそれぞれ「０」、「２」、「２」、「５」となる。このうち、有効フラグ値が「０」でないデータＤ０、Ｄ２、Ｄ３をそれぞれの有効フラグ積算値に応じて、それぞれメモリＭ０、Ｍ２、Ｍ５のアドレスＡＤ０に書き込まれる。
【００５８】
このように、有効フラグを「０」に設定したデータＤ１を除き、さらにその他のデータＤ０、Ｄ２、Ｄ３を、それぞれ設定した有効フラグ値の間隔で記憶装置１０Ａに書き込むことが可能になる。この場合も、図９Ａ、９Ｂと同様、データ間の空白領域にその前後のデータ等を書き込むことも可能であることは言うまでもない。本実施例に示したように、本発明の方法により、有効フラグ値の設定によって、任意のデータを選択して、これを任意の間隔に配置することが可能になる。
【００５９】
＜実施例７＞
上記実施例６においては、各データの有効フラグ値として、「２」や「３」などのデータ拡大率を設定することによって、入力時の間隔より広げて出力する方法を示した。これに対し、本実施例は、有効フラグ積算器２０において、入力された有効フラグ値に拡大倍率をかけた値を積算するようにしたものである。
【００６０】
図１１Ａに示す例では、入力データＤ０、Ｄ１、Ｄ２、Ｄ３と、それぞれの有効フラグ値「１」、「０」、「１」、「１」が入力されている。これに対して、有効フラグ積算器２０で、各有効フラグ値をデータ拡大倍率２をかけた値を積算するようにしている。この結果、出力される有効フラグ積算値は、それぞれ「０」、「２」、「２」、「４」となる。このうち、有効フラグ積算値が「０」でないデータＤ０、Ｄ２、Ｄ３を、その有効フラグ積算値をもとに実施例１などの方法に基づき、記憶装置１０Ａの各メモリに書き込む。その結果、データＤ１を除くデータＤ０、Ｄ２、Ｄ３が、メモリＭ０、Ｍ２、Ｍ４のアドレスＡＤ０に書き込まれ、指定した間隔「２」に拡大して記憶装置１０Ａ上に配置することが出来る。
【００６１】
図１１Ｂは、本実施例の有効フラグ積算器２０周辺の構成を示したものである。図３Ａに示した実施例１の有効フラグ積算器１０の出力値を、データ拡大倍率だけ乗じる乗算器６０に入力し、その結果を出力するように構成されている。
【００６２】
図１１Ｃは、乗算器６０を用いる代わりにシフト演算器６０Ａを用いたものである。例えば、データ拡大倍率を２倍、４倍とするときは、入力値を左にそれぞれ１シフト、２シフトすればよい。図１１Ａ、１１Ｂでは、入力データに対して一律のデータ拡大倍率を乗じる場合を示したが、各データごとにデータ拡大倍率を可変に設定できるように構成してもよい。また、図１０Ａ〜図１０Ｅに示した実施例６と同様に、データ間の空白領域にその前後のデータ等を書き込むように構成してもよい。
【００６３】
＜実施例８＞
以上の実施例１〜７では、入力データのうち有効フラグ値が「０」でないデータ全てを順番に詰めて並べるため、全入力データの有効フラグ値を積算していく構成としていた。これに対して、本実施例では、有効フラグ積算器２０Ｂにおいて、１回の入力データごとの有効フラグ積算値を算出して記憶装置１０Ｃのメモリに書き込んでいく。このために、有効フラグ積算先頭値は、毎回同じ固定値を設定する。
【００６４】
図１２Ａの例は、各入力データのうち、有効フラグ値が「１」のデータのみ左詰めにして出力し、これをＦＩＦＯメモリを使用した記憶装置１０Ｃに書き込んでいくように構成したものである。まず、最初の入力データ０（＝Ｄ０、Ｄ１、Ｄ２、Ｄ３、有効フラグ＝「１」、「０」、「０」、「１」）に対して、有効フラグ積算先頭値を「０」として、各データの有効フラグ積算値を算出し、それぞれ「０」、「１」、「１、「１」を得る。このうち、有効フラグ値が「１」であるデータＤ０とＤ３をその有効フラグ積算値の値に従って左から順に並べて出力する。これにより、有効フラグ値が「１」であるＤ０とＤ３が左詰めで出力される。
【００６５】
次に、２回目の入力データ１（＝Ｄ４、Ｄ５、Ｄ６、Ｄ７、有効フラグ＝「１」、「０」、「１」、「０」）に対しても、有効フラグ積算先頭値を「０」として、各データの有効フラグ積算値を算出する。その結果、それぞれ「０」、「１」、「１」、「２」を得る。このうち、有効フラグ値が「１」であるＤ４、Ｄ６をその有効フラグ積算値の値に従って左から順に並べて出力する。そして、出力したデータを、記憶装置１０Ｃの２つのメモリＦＩＦＯ_０、ＦＩＦＯ_１に書き込むようにする。このように構成することにより、選択したデータのみ２つのメモリＦＩＦＯ_０、ＦＩＦＯ_１に順に詰めて書き込んでいくことが可能になる。
【００６６】
図１２Ｂの例は、図１２Ａの構成において、２つのメモリＦＩＦＯ_０、ＦＩＦＯ_１を有する記憶装置１０Ｃの代わりに、アドレス指定して書き込むメモリＭ０、メモリＭ１を有する記憶装置１０Ｄ用い、さらに、有効フラグ積算器２０Ｂ内に、データの入力回数を数えるカウンタ２４を備えていて、このカウンタ値が示す値を記憶装置１０Ｄヘの書込アドレスとして利用するものである。
【００６７】
まず、最初の入力データ０に対して、有効フラグ値が「１」であるデータＤ０とＤ３の有効フラグ積算値はそれぞれ「０」、「１」と算出されるので、それぞれメモリＭ０、Ｍ１に書き込む。書き込むアドレスＡＤ_Ｙは、データ数カウンタ値に従いＡＤ０とする。
【００６８】
次に、２回目の入力データ１に対しては、有効フラグ値が「１」であるデータＤ４とＤ６の有効フラグ積算値はそれぞれ「０」、「１」で、データ数カウンタ値は「１」となるので、それぞれメモリＭ０、Ｍ１の次のアドレスＡＤ１に書き込む。このように構成することにより、選択したデータのみを２つのメモリＭ０、Ｍ１に順に詰めて書き込んでいくことが可能になる。
【００６９】
図１２Ａ、図１２Ｂに示した有効フラグ積算器２０Ｂでは、各データの有効フラグ積算値を、各入力ごとにそのデータより前のデータの有効フラグを合計して求めるようにしている。この代わりに、図１２Ｃに示す構造の有効フラグ積算器２０Ｃを用いても良い。図１２Ｃに示す有効フラグ積算器２０Ｃでは、各データの有効フラグ積算値を、各入力ごとにそのデータより前のデータの有効フラグの合計値とそのデータ自身の有効フラグを加算することで求める構成にしている。その一方、有効フラグ積算値を「−１」に設定するようにする。このように構成した有効フラグ積算器２０Ｃの出力値を用いても、図１２Ａ、１２Ｂと同様の機能を得ることができる。
【００７０】
なお、この実施例８では、有効フラグが「１」であるデータが２つ以内である必要がある。これ以外のときは、エラー処理するような手段を設ける。また、以上の説明では、有効フラグ積算先頭値として「０」（図１２Ａ、１２Ｂ）又は「−１」（図１２Ｃ）に固定した場合を例に説明したが、この値は「０」、「−１」以外の値に設定してもよいし、さらに各入力ごとにこの値を可変に設定できるようにしてもよい。これによって、各入力ごとに先頭の有効なデータの出力先メモリを変えることが可能となる。
【００７１】
＜実施例９＞
上記の実施例１〜８の有効フラグ積算器２０、２０Ａ、２０Ｂ、２０Ｃでは、有効フラグ値を外部から入力するようにしたが、図１３に示すように、各入力データに対する有効フラグ値を、内部で設定するようにした有効フラグ積算器２０Ｄとしてもよい。このとき、設定する有効フラグ値は固定値でもよいし、各データごとに動的に設定してもよい。
【００７２】
＜実施例１０＞
以上の実施例１〜９では、有効フラグ値として、「０」又は「正の整数値」をとる場合を例に説明したが、その代わりに、「０」又は「負の整数値」をとるようにしてもよい。このとき、算出される有効フラグ積算値は、「０」、「−１」、「−２」などとなるが、それぞれに対応するデータを記憶装置のアドレスＡＤ０、ＡＤ１、ＡＤ２に書き込むようにすることで、同様のデータ処理を行うことができる。
【００７３】
＜実施例１１＞
また、有効フラグ値は、「０」又は「正の整数値」、あるいは「０」又は「負の整数値」のどちらかに限定されるわけではない。有効フラグ値として、「０」、「正の整数値」、「負の整数値」をとるようにすることで、入力データの順番を入れ替えることができる。
【００７４】
図１４Ａ、１４Ｂは本実施例１１を説明する図である。この例では、図８Ａ、８Ｂで示した実施例４の構造の有効フラグ積算器２０Ａを用い、有効フラグ先頭値を「−１」に設定している。まず、１組目の入力として、有効フラグ値がそれぞれ「１」、「２」、「−１」、「２」である入力データＤ０〜Ｄ３を入力している。（図１４Ａ）。こらから有効フラグ積算値を求めると、それぞれ「０」、「２」、「１」、「３」となる。これに従って、有効フラグ値が「０」でない入力データＤ０〜Ｄ３をその有効フラグ積算値に従って、それぞれ記憶装置１０のメモリＭ０、Ｍ２、Ｍ３に書き込む。この結果、データＤ０、Ｄ１、Ｄ２、Ｄ３の順で入力されたデータを、Ｄ０、Ｄ２、Ｄ１、Ｄ３と、Ｄ２の順番を入れ替えて、メモリに書き込むことができる。
【００７５】
続いて、２組目の入力データＤ４〜Ｄ７の処理を説明したのが図１４Ｂである。この例では、入力データＤ４〜Ｄ７の有効フラグ値は、それぞれ「３」、「０」、「−１」、「−１」となっている。これから有効フラグ積算値を求めると、それぞれ「６」、「６」、「５」、「４」となる。このうち有効フラグ値が「０」でない入力データＤ４、Ｄ６、Ｄ７をその有効フラグ積算値に従って、それぞれメモリＭ２、Ｍ１、Ｍ０に書き込む。この結果、入力データＤ４〜Ｄ７からＤ５を除いた３つのデータを、Ｄ７、Ｄ６、Ｄ４と順番を入れ替えて、詰めてメモリに書き込むことが出来る。以上のように、本実施例１１によれば、選択したデータのみを任意の順番に入れ替えて、記憶装置のメモリに書き込んでいくことが可能になる。
【図面の簡単な説明】
【００７６】
【図１Ａ】本発明のデータ処理の概略説明図である。
【図１Ｂ】本発明のデータ処理の概略説明図である。
【図２Ａ】本発明のデータ処理装置の動作説明図である。
【図２Ｂ】本発明のデータ処理装置の動作説明図である。
【図３Ａ】本発明の実施例１のデータ処理装置の動作説明図である。
【図３Ｂ】本発明の実施例１のデータ処理装置の動作説明図である。
【図４】本発明の実施例１のデータ処理装置のセレクタ制御信号生成回路の構成を示す回路図である。
【図５】本発明の実施例１のデータ処理装置のデータセレクタの構成を示す回路図である。
【図６】本発明の実施例２のデータ処理の概略説明図である。
【図７】本発明の実施例３のデータ処理の概略説明図である。
【図８Ａ】本発明の実施例４のデータ処理装置の動作説明図である。
【図８Ｂ】本発明の実施例４のデータ処理装置の動作説明図である。
【図９Ａ】本発明の実施例５のデータ処理の概略説明図である。
【図９Ｂ】本発明の実施例５のデータ処理の概略説明図である。
【図１０Ａ】本発明の実施例６のデータ処理の概略説明図である。
【図１０Ｂ】本発明の実施例６のデータ処理の概略説明図である。
【図１０Ｃ】本発明の実施例６のデータ処理の概略説明図である。
【図１０Ｄ】本発明の実施例６のデータ処理の概略説明図である。
【図１０Ｅ】本発明の実施例６のデータ処理の概略説明図である。
【図１１Ａ】本発明の実施例７のデータ処理の概略説明図である。
【図１１Ｂ】本発明の実施例７のデータ処理装置の動作説明図である。
【図１１Ｃ】本発明の実施例７のデータ処理装置の動作説明図である。
【図１２Ａ】本発明の実施例８のデータ処理装置の動作説明図である。
【図１２Ｂ】本発明の実施例８のデータ処理装置の動作説明図である。
【図１２Ｃ】本発明の実施例８のデータ処理装置の動作説明図である。
【図１３】本発明の実施例９のデータ処理装置の動作説明図である。
【図１４Ａ】本発明の実施例１１のデータ処理装置の動作説明図である。
【図１４Ｂ】本発明の実施例１１のデータ処理装置の動作説明図である。
【図１５】従来のデータ処理装置の動作説明図である。
【符号の説明】
【００７７】
１０、１０Ａ、１０Ｂ、１０Ｃ、１０Ｄ：記憶装置
２０、２０Ａ、２０Ｂ、２０Ｃ、２０Ｄ：有効フラグ積算器
３０：セレクタ制御信号生成回路
４０：データセレクタ
５０：割算器
６０：乗算器
７０：シフト演算器
【図１Ａ】
0005072558.tif 000002
【図１Ｂ】
0005072558.tif 000003
【図２Ａ】
0005072558.tif 000004
【図２Ｂ】
0005072558.tif 000005
【図３Ａ】
0005072558.tif 000006
【図３Ｂ】
0005072558.tif 000007
【図４】
0005072558.tif 000008
【図５】
0005072558.tif 000009
【図６】
0005072558.tif 000010
【図７】
0005072558.tif 000011
【図８Ａ】
0005072558.tif 000012
【図８Ｂ】
0005072558.tif 000013
【図９Ａ】
0005072558.tif 000014
【図９Ｂ】
0005072558.tif 000015
【図１０Ａ】
0005072558.tif 000016
【図１０Ｂ】
0005072558.tif 000017
【図１０Ｃ】
0005072558.tif 000018
【図１０Ｄ】
0005072558.tif 000019
【図１０Ｅ】
0005072558.tif 000020
【図１１Ａ】
0005072558.tif 000021
【図１１Ｂ】
0005072558.tif 000022
【図１１Ｃ】
0005072558.tif 000023
【図１２Ａ】
0005072558.tif 000024
【図１２Ｂ】
0005072558.tif 000025
【図１２Ｃ】
0005072558.tif 000026
【図１３】
0005072558.tif 000027
【図１４Ａ】
0005072558.tif 000028
【図１４Ｂ】
0005072558.tif 000029
【図１５】
0005072558.tif 000030