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