データ処理装置
【課題】複数の連続する入力データの内から選択したデータのみを詰めて記憶装置に書き込む処理を高速に実施する。
【解決手段】無効を示す「0」又は有効を示す「1」をもつ有効フラグと対になり、且つ連続して入力する入力データD0〜D7を、4個づつ処理するデータ処理装置である。入力データをD0〜D3、D4〜D7毎に取り込み、当該データより順序が前の全てのデータの有効フラグ値の合計値を当該データの有効フラグ積算値として有効フラグ積算器10で算出し、得られた有効フラグ積算値をアドレスとして、前記入力データの内の有効フラグで有効と指定されたデータを記憶装置に書き込む。
【解決手段】無効を示す「0」又は有効を示す「1」をもつ有効フラグと対になり、且つ連続して入力する入力データD0〜D7を、4個づつ処理するデータ処理装置である。入力データをD0〜D3、D4〜D7毎に取り込み、当該データより順序が前の全てのデータの有効フラグ値の合計値を当該データの有効フラグ積算値として有効フラグ積算器10で算出し、得られた有効フラグ積算値をアドレスとして、前記入力データの内の有効フラグで有効と指定されたデータを記憶装置に書き込む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の入力データから必要なデータのみを取り出して記憶装置に書き込むデータ処理装置に関するものである。
【背景技術】
【0002】
複数の入力データから必要なデータのみを取り出して、記憶装置に順番に詰めて書き込む間引き処理が必要とされることがある。通常行われるのは、対象となる入力データについて1つづつ順番に、要/不要を判断し、必要と判断された入力データのみ選択し、これを記憶装置に詰めて書き込む方法である。この処理をハードウェアで行う従来の方法として、図12に示すFIFOメモリ50を用いる方法がある。
【0003】
この方法では、まず、各入力データとその入力データの要/不要を示す有効フラグとを組にして1組づつ順番に入力する。このとき、有効フラグの値が有効を示す「1」である入力データのみ、入力順にFIFOメモリ50に詰めて記憶する。図12の例では、入力データD1、D2、D3、D4、D5の内、D1、D4のみFIFOメモリ50に詰めて記憶する手順を示したものである。D1、D2、D3、D4、D5の順に入力データが入力され、各入力データが入力されるごとに有効フラグが「1」か「0」かを判断し、「1」であるD1、D4のみをFIFOメモリ50に記憶する。この結果、記憶すべき入力データD1、D4のみをFIFOメモリ50に詰めて記憶することができる。
【0004】
別の従来技術として、特許文献1には、シリアル入力データの内、必要な入力データのみを詰めてパラレルに出力し、これをレジスタに書き込む方法が記載されている。この方法では、シリアルデータをパラレルデータに変換する際に、必要な入力データを、その直前の不要な入力データの数だけシフトレジスタによってデータ位置をシフトさせる。これによって、要/不要の入力データが混在して、飛び飛びであったシリアルデータを、必要な入力データのみが詰めて配置されたパラレルデータに変換できる。
【特許文献1】特開平8−123683号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、FIFOメモリ50に詰めて記憶する方法では、入力データを1つづつ逐次的に処理せざるを得ないため、データ処理の高速化をはかることが出来ないという問題がある。また、特許文献1に記載の方法でも、シリアル入力のデータ1つづに対して、逐次そのシフト量を判定して、格納場所を決めていかなければならないため、処理速度を速くすることができないという問題がある。
【0006】
本発明は、複数の入力データの内から必要なデータのみ選択しこれを任意の幅に詰める処理を、1サイクル当り所定数のデータ毎に並列に行うことにより、高速にデータ処理を実施することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するために、請求項1にかかる発明は、無効を示す「0」、又は有効を示す正の整数値、又は有効を示す負の整数値をもつ有効フラグと対になり、且つ順序関係をもって連続して入力する複数の入力データを、1サイクル毎に処理するデータ処理装置であって、前記入力データを前記1サイクル毎に前記順序関係に沿って所定数づつ取り込み、当該データより順序が前の全てのデータの有効フラグの値の合計値を当該データの有効フラグ積算値として算出する有効フラグ積算器を備え、該有効フラグ積算器で得られた有効フラグ積算値を前記入力データのアドレスとすることを特徴とする。
請求項2にかかる発明は、無効を示す「0」、又は有効を示す正の整数値、又は有効を示す負の整数値をもつ有効フラグと対になり、且つ順序関係をもって連続して入力する複数の入力データを、1サイクル毎に処理するデータ処理装置であって、前記入力データを前記1サイクル毎に前記順序関係に沿って所定数づつ取り込み、当該データの有効フラグの値と当該データより順序が前の全てのデータの有効フラグの値との合計値を当該データの有効フラグ積算値として算出する有効フラグ積算器を備え、該有効フラグ積算器で得られた有効フラグ積算値を前記入力データのアドレスとすることを特徴とする。
請求項3にかかる発明は、請求項1又は2に記載のデータ処理装置において、 該有効フラグ積算器で得られた有効フラグ積算値をアドレスとして、前記入力データの内の前記有効フラグで有効と指定されたデータが書き込まれる記憶装置とを備えることを特徴とする。
請求項4にかかる発明は、請求項1、2又は3に記載のデータ処理装置において、前記入力データの内の連続する2以上のデータがまとまりのあるデータであるとき、当該まとまりのある各データに同じ値の有効フラグを付与することを特徴とする。
請求項5にかかる発明は、請求項3に記載のデータ処理装置において、前記入力データの内の連続する2以上のデータがまとまりのあるデータであるとき、当該まとまりのあるデータの先頭データに、当該まとまりのあるデータのデータ量を正の整数値で示す有効フラグを付与するとともに、残りのデータの有効フラグを「0」とし、前記記憶装置に対して、前記先頭データに対応する有効フラグ積算値を先頭アドレスとして、前記データ量に対応する連続アドレスに書き込むことを特徴とする。
請求項6にかかる発明は、請求項1、2又は3に記載のデータ処理装置において、前記有効を示す正の整数値の有効フラグを、「1」以外の正の整数値に設定することを特徴とする。
請求項7にかかる発明は、請求項6に記載のデータ処理装置において、前記有効フラグ積算値を先頭アドレスとし、そこから当該データの有効フラグの値の数だけの連続アドレスに当該データを割り当てることを特徴とする。
請求項8にかかる発明は、請求項1、2又は3に記載のデータ処理装置において、前記有効フラグ積算器を、前記有効フラグ積算器で得られた有効フラグ積算値に拡大倍率をかけた値を新たな有効フラグ積算値として出力する有効フラグ積算器に置き換えたことを特徴とする。
請求項9にかかる発明は、請求項1、2、3又は8に記載のデータ処理装置において、前記有効フラグ積算器は、前記1サイクル内の所定数の入力データの有効フラグの値のみから有効フラグ積算値を算出することを特徴とする。
請求項10にかかる発明は、請求項3に記載のデータ処理装置において、前記有効フラグを、前記1サイクル当りの所定数の全入力データが無効であれば「0」を、有効であればそのデータ長を正の整数で示すデータ長フラグに置き換え、前記有効フラグ積算器を、前記データ長フラグ値を前記有効フラグ積算値と同様に積算することでデータ長フラグ積算値を出力する有効フラグ積算器に置き換え、前記記憶装置を、前記各サイクルの入力データを該有効フラグ積算器で得られたデータ長フラグ積算値を先頭アドレスとして、そのデータ長フラグの値だけ連続するアドレスに書き込む記憶装置に置き換える、ことを特徴とする。
【発明の効果】
【0008】
本発明によれば、1サイクル当り所定数のデータ内から、必要なデータを取り出し、これを詰めて、あるいは飛び飛びに、あるいはデータ毎重複して、あるいは順序を入れ替えて、記憶装置に書き込むことができる。これにより、例えば、画像や音声などの情報データの圧縮、拡大、並び替えなどの処理も高速に実行することができる。
【発明を実施するための最良の形態】
【0009】
図1A,Bは、本発明のデータ処理方法の概要を説明する図である。図1A,Bでは、例として、8個の入力データD0〜D7の内、D0、D3、D5、D7の4つの入力データのみ、この順番に詰めて記憶する場合について、データ処理の流れを示している。この例では、1サイクル当り入力データを4つづつ同時に入力し、並列処理する。この内、図1Aでは最初の4つの入力データD0〜D3の処理について示し、図1Bでは次の4つの入力データD4〜D7の処理について示している。
【0010】
各入力データは、その要/不要を1ビットで示す有効フラグ値をもつ。この例では、記憶するべきデータD0、D3、D5、D7の有効フラグ値を有効を示す「1」、残りの廃棄すべきデータD1、D2、D4、D6の有効フラグ値を無効を示す「0」とする。
【0011】
図1A,Bの方法では、入力データと有効フラグを組にして、4組づつ同時に入力し、並列処理する。ここでは、各入力データごとに、それより時間的順番が前の全ての入力データの有効フラグ値を合計した積算値を計算し、これを有効フラグ積算値として出力する。図1Aは、入力データD0〜D3のデータ処理を示している。図1Aにおいて、10は有効フラグ積算器であり、有効フラグ積算先頭値格納部11と、有効フラグ値同士を加算する3個の加算器12と、この加算器12の加算結果と有効フラグ積算先頭値格納部11の有効フラグ積算先頭値を加算する4個の加算器13とを備える。
【0012】
まず、有効フラグ積算先頭値の初期値として、有効フラグ積算先頭値格納部11に「0」を与える。そして、入力データD0〜D3に対する有効フラグ積算値、および次計算サイクル(D4〜D7に対する計算サイクル)で用いる有効フラグ積算先頭値を次のように計算する。
【0013】
D0の有効フラグ積算値=有効フラグ積算先頭値
D1の有効フラグ積算値=有効フラグ積算先頭値+D0の有効フラグ値
D2の有効フラグ積算値=有効フラグ積算先頭値+D0の有効フラグ値+D1の有効フラグ値
D3の有効フラグ積算値=有効フラグ積算先頭値+D0の有効フラグ値+D1の有効フラグ値+D2の有効フラグ値
次計算サイクルの有効フラグ積算先頭値=有効フラグ積算先頭値+D0の有効フラグ値+D1の有効フラグ値+D2の有効フラグ値+D3の有効フラグ値
【0014】
その結果、図1Aに示すように、入力データD0〜D3に対する有効フラグ積算値はそれぞれ「0」、「1」、「1」、「1」となり、次計算サイクルの有効フラグ積算先頭値は「2」となる。
【0015】
一方、図1Bは、次サイクルの入力データD4〜D7に対する計算処理を示している。有効フラグ積算先頭値として、前の計算サイクルで計算した値「2」を用いて、同様に以下の通り計算する。
【0016】
D4の有効フラグ積算値=有効フラグ積算先頭値
D5の有効フラグ積算値=有効フラグ積算先頭値+D4の有効フラグ値
D6の有効フラグ積算値=有効フラグ積算先頭値+D4の有効フラグ値+D5の有効フラグ値
D7の有効フラグ積算値=有効フラグ積算先頭値+D4の有効フラグ値+D5の有効フラグ+D6の有効フラグ値
次計算サイクルの有効フラグ積算先頭値=有効フラグ積算先頭値+D4の有効フラグ値+D5の有効フラグ値+D6の有効フラグ値+D7の有効フラグ値
【0017】
この結果、図1Bに示すように、入力データD4〜D7に対する有効フラグ積算値はそれぞれ「2」、「2」、「3」、「3」となり、次計算サイクルの有効フラグ積算先頭値は「4」となる。
【0018】
こうして得られた有効フラグ値が「1」の入力データの有効フラグ積算値は、そのデータが有効フラグ値「1」の全データの内先頭から何番目にあるかを示すことになる(この例では、先頭の入力データD0を0番目として数えている)。そこで、有効フラグ値が「1」である入力データを、その有効フラグ積算値をアドレスとして、レジスタやメモリなどの記憶装置に書き込むことにより、有効フラグ値「1」の入力データのみアドレス順に詰めた状態で書き込むことができる。
【0019】
図1A、図1Bの例では、有効フラグ値が「1」である入力データD0、D3、D5、D7をそれぞれの有効フラグ積算値「0」、「1」、「2」、「3」のアドレス番地に書き込むと、図1Bのように、出力データD0、D3、D5、D7として、出力アドレス「0」、「1」、「2」、「3」に詰めた状態で書き込むことができる。以下、本発明の実施例を添付の図を基に説明する。
【実施例1】
【0020】
図2A、図2Bは、複数の入力データの内、必要なデータのみ選択して、レジスタ等の記憶装置に詰めて書き込むようにした本発明のデータ処理装置の実施例を示したものである。
【0021】
図2A、図2Bにおいて、10は前記した有効フラグ積算器、20は間引き演算器、30は記憶装置である。各入力データ線DATA0〜DATA3を記憶装置30のデータ端子31に接続する。有効フラグ線V0〜V3は、それぞれ2つに分岐し、一方を記憶装置30の書込制御信号端子32(ライトイネーブル信号端子)に、他方を有効フラグ積算器10に入力する。有効フラグ積算器10から出力される有効フラグ積算値信号VS0〜VS3を記憶装置30のアドレス信号端子33に接続する。
【0022】
記憶装置30では、書込制御信号としての有効フラグ値が「1」である入力データについて、アドレス信号端子33のアドレス信号で指定されたアドレスに書き込まれるものとすると、図2A、図2Bに示すように、有効フラグ値が「1」である入力データD0、D3、D5、D7のみが、それぞれ、有効フラグ積算器10で計算した有効フラグ積算値で表されるアドレス0、1、2、3に書き込まれる。このようにして、有効フラグ値が「1」であるデータのみ、順に詰めて記憶装置30に書き込むことが可能になる。
【0023】
この記憶装置30として、例えば、レジスタを用いれば、入力データを最大で4つづつ同時に書き込むことが可能になり、処理の高速化を図ることができる。また、記憶装置30として、1本のメモリを用いる場合は、有効フラグ「1」のデータについて1つづつ順次、有効フラグ積算器10で計算されたアドレスに書き込んでいってもよい。
【0024】
有効フラグ積算器10は、有効フラグ積算先頭値格納部11と、有効フラグ同士を加算する3個の加算器12と、この加算器12の加算結果と有効フラグ積算先頭値格納部11の有効フラグ積算先頭値を加算する4個の加算器13とからなる簡単な構造であるため、並列度の規模や加算器の性能にもよるが、有効フラグ積算値の計算、データの記憶装置への書き込みを、通常1クロックづつで行うことが可能である。
【0025】
なお、本実施例では、有効フラグ積算先頭値の初期値として「0」を与えた場合を例として説明したが、この初期値は「0」に限るものではない。例えば、その初期値として「5」を与えれば、出力アドレスが「5」以降の領域に出力データを詰めて書き込むようにすることができる。
【実施例2】
【0026】
前記の実施例1では、各入力データの有効フラグ積算値として、そのデータより前にあるすべての入力データの有効フラグ値を合計して求めた。これに対して、図3A、図3Bに示す本実施例では、各入力データの有効フラグ積算値を、そのデータより前のすべて入力データの有効フラグとそのデータ自身の有効フラグ値を加算することで求める構成にしている。また、前記の実施例1では、有効フラグ積算先頭値の初期値を「0」に設定したが、本実施例では、「−1」に設定する。図3A、図3Bは、本実施例における有効フラグ積算器10の構造と、処理の流れを示したものであるが、この方法においても有効フラグが「1」であるデータのみを選択して順に詰めて書き込むことが可能になる。
【0027】
図3Aは、本実施例による入力データD0〜D3のデータ処理を示している。まず、有効フラグ積算先頭値の初期値として「−1」を与える。そして、入力データD0〜D3に対する有効フラグ積算値、および次計算サイクル(D4〜D7に対する計算サイクル)で用いる有効フラグ積算先頭値を次のように計算する。
【0028】
D0の有効フラグ積算値=有効フラグ積算先頭値+D0の有効フラグ値
D1の有効フラグ積算値=有効フラグ積算先頭値+D0の有効フラグ値+D1の有効フラグ値
D2の有効フラグ積算値=有効フラグ積算先頭値+D0の有効フラグ値+D1の有効フラグ値+D2の有効フラグ値
D3の有効フラグ積算値=有効フラグ積算先頭値+D0の有効フラグ値+D1の有効フラグ値+D2の有効フラグ+D3の有効フラグ値
次計算サイクルの有効フラグ積算先頭値=D3の有効フラグ積算値
【0029】
その結果、図3Aに示すように、入力データD0〜D3に対する有効フラグ積算値はそれぞれ「0」、「0」、「0」、「1」となり、次計算サイクルの有効フラグ積算先頭値は「1」となる。
【0030】
図3Bは、次サイクルの入力データD4〜D7に対する計算処理を示している。有効フラグ積算先頭値として、前の計算サイクルで計算した値「1」を用いて、同様に以下の通り計算する。
【0031】
D4の有効フラグ積算値=有効フラグ積算先頭値+D4の有効フラグ値
D5の有効フラグ積算値=有効フラグ積算先頭値+D4の有効フラグ値+D5の有効フラグ値
D6の有効フラグ積算値=有効フラグ積算先頭値+D4の有効フラグ値+D5の有効フラグ値+D6の有効フラグ値
D7の有効フラグ積算値=有効フラグ積算先頭値+D4の有効フラグ値+D5の有効フラグ値+D6の有効フラグ値+D7の有効フラグ値
次計算サイクルの有効フラグ積算先頭値=D7の有効フラグ積算値
【0032】
この結果、図3Bに示すように、入力データD4〜D7に対する有効フラグ積算値はそれぞれ「1」、「2」、「2」、「3」となり、次計算サイクルの有効フラグ積算先頭値は「3」となる。
【0033】
こうして得られた有効フラグ値が「1」の入力データの有効フラグ積算値は、そのデータが有効フラグ値「1」の全データの内先頭から何番目にあるかを示すことになる(この例では、先頭の入力データD0を0番目として数えている)。そこで、有効フラグ値が「1」である入力データを、その有効フラグ積算値をアドレスとして、レジスタやメモリなどの記憶装置30に書き込むことにより、有効フラグ値「1」のデータのみアドレス順に詰めた状着で書き込むことができる。
【0034】
本実施例は、各データの有効フラグ積算値と有効フラグ積算先頭値の計算式が、当該データの有効フラグ値を含む点で、実施例1におけるものと異なるが、有効フラグが「1」である入力データD0、D3、D5、D7をそれぞれの有効フラグ積算値「0」、「1」、「2」、「3」のアドレス番地に書き込むと、図3Bのように、図2Bと全く同様に、詰めた状態で書き込むことができる。
【0035】
なお、本実施例では、有効フラグ積算先頭値の初期値として「−1」を与えた場合を例として説明したが、この初期値は「−1」に限るものではない。例えば、その初期値として「4」を与えれば、出力アドレスが「5」以降の領域に出力データを詰めて書き込むようにすることができる。
【実施例3】
【0036】
本実施例は、大きさが異なる入力データに対して、本発明の方法を適用した場合である。図4A、図4Bに示した例では、入力データD0、D1、D3は1バイト、D2は2バイト、D4は3バイトとし(個々のデータを1バイトとするとき、2バイト以上のデータを、請求項3では「まとまりのあるデータ」と呼んでいる。)、この内、網掛け表示したD0、D2、D4のみ選択して順に詰めて記憶装置30に記憶する場合を示している。各入力データとも、単位データ量である1バイトに1つづつ有効フラグを持つようにしている。すなわち、2バイトのD2は2つ、3バイトのD4は3つの有効フラグをもつ。そして、記憶装置30に記憶したいデータは対応する有効フラグ値を「1」にする。このような入力データと有効フラグのペアに対して、実施例1又は2と同様の計算により、各データの1バイトごとに有効フラグ積算値を算出する。
【0037】
図4Aでは、入力データD0の有効フラグ積算値が「0」であり、入力データD2の1バイト目、2バイト目の有効フラグ積算値はそれぞれ「1」、「2」となる。これから、入力データD0、D2の1バイト目、D2の2バイト目をそれぞれ記憶装置30のアドレス0、1、2に記憶する。
【0038】
同様に、図4Bでは、記憶すべき入力データD4の1バイト目、2バイト目、3バイト目の有効フラグ積算値はそれぞれ「3」、「4」、「5」と求められるので、それぞれ記憶装置3のアドレス3、4、5に記憶する。この結果、1バイトの入力データD0、2バイトの入力データD2、3バイトの入力データD4のみ取り出して、順に詰めて記憶する処理を4バイトづつ高速に実行することが出来る。
【実施例4】
【0039】
本実施例は、実施例3と同じように大きさが異なる入力データに対して、本発明の方法を適用する例である(図5A、図5B参照)。本実施例では、2バイト以上の入力データについては、そのデータが選択される場合は、その入力データの先頭バイトに対応する有効フラグにそのデータの大きさを正の整数値で設定し、先頭以外のバイトに対する有効フラグ値を「0」に設定する。そして、実施例1又は2と同様の計算により、各入力データの1バイトごとに有効フラグ積算値を算出する。この結果、得られた各入力データのバイトごとの有効フラグ積算値、および有効フラグ値を用いて次のような手順で、記憶装置30への書込処理を行う。すなわち、1バイトデータが選択されたときはそのデータの有効フラグ積算値をアドレスとして、前記実施例1〜4と同様に記憶装置30に書き込む。また、2バイト以上のまとまりのあるデータが選択されたときはそのデータの先頭バイトに対応する有効フラグ積算値を先頭アドレスとして、そのデータの大きさ分の連続アドレスに記憶装置30に書き込む。これにより、必要なデータのみ取り出して順に詰めて記憶する処理を4バイトづつ高速に実行することが出来る。
【実施例5】
【0040】
前記した実施例1〜4では、各入力データのフラグ値を「0」または「1」に設定した。これに対して、本実施例では、入力データが有効なときは、有効フラグ値を「2」、あるいは「3」などのように、「1」以外の正の整数値に設定することにより、データの間隔をもとの入力時の間隔より広げる処理を行うものである。図6Aに示した例では、入力データD0〜D3に対する有効フラグ値を全て「2」と設定して、実施例1又は2と同様の方法で、有効フラグ積算値を算出する。すると、入力データD0〜D3に対する有効フラグ積算値は、それぞれ、「0」、「2」、「4」、「6」となる。これらの値を各データの記憶装置30でのアドレスとして指定して、各データを書き込むと、図6Aに示すように、D0〜D3が1つおきのアドレスに書き込まれ、データ間隔を拡げて書き込むことが出来る。
【0041】
図6Aに示した例では、記憶装置30のアドレス1、3、5、7にはデータが書き込まれず空白となっているが、図6Bのように、アドレス0と1にD0、アドレス2と3にD1、アドレス4と5にD2、アドレス6と7にD3を書き込むようにすることも出来る。各入力データに対して、その有効フラグ積算値を先頭アドレスとして、そこから有効フラグ値の数だけ連続するアドレスに各データを書き込むようにする。これにより、例えば、画像データをより面積の広い画像に拡大処理することも可能になる。
【0042】
また、図6Cに示すように、入力データの内、任意のデータのみ選んで、これを指定した間隔で並べることも可能である。図6Cの例では、入力データD0〜D3の内、D0、D2,D3の有効フラグ値を「2」、D1の有効フラグ値を「0」と設定する。実施例1又は2と同様の計算により、入力データD0〜D3の有効フラグ積算値を算出すると、それぞれ、「0」、「2」、「2」、「4」となる。この内、有効フラグが「0」でないデータD0、D2、D3を、その有効フラグ積算値をアドレスとして記憶装置30に書き込むと、図9Cのように、データD0、D2、D3がアドレス0、2、4に指定した間隔2で書き込まれる。
【0043】
図6Dは、図6Cと入力データ、有効フラグ値、算出された有効フラグ積算値は同じだが、図6Bと同じように各データ間を空白とせず、その前のデータで埋めるようにしたものである。各入力データに対して、その有効フラグ積算値を先頭アドレスとして、そこから有効フラグ値の数だけの連続するアドレスに各データを書き込むようにする。これにより、例えば、画像データをより面積の広い画像に拡大処理することも可能になる。図6Bの場合は一律にデータを拡大することができたが、図6Dの場合は、画像データの任意の領域を選んでこれを拡大するということも可能になる。
【0044】
図6Eは、各データの有効フラグ値を任意に設定して、データ選択およびデータ間隔を任意に設定した場合である。入力データD0〜D3に対する有効フラグ値をそれぞれ「2」、「0」、「3」、「2」設定すると、有効フラグ積算値はそれぞれ「0」、「2」、「2」、「5」となる。この内、有効フラグ値が「0」でないデータD0、D2、D3をそれぞれの有効フラグ積算値のアドレスに書き込むと、D0、D2、D3がそれぞれアドレス0、2、5に書き込まれる。これによって、有効フラグ値を「0」と設定したデータD1を除き、さらにその他のデータD0、D2、D3をそれぞれ設定した有効フラグ値の間隔で記憶装置30に書き込むことが可能になる。このように、有効フラグの設定によって、任意のデータを選択して、これを任意の間隔に配置することが可能になる。この場合も、図6B、図6Dと同様、データ間の空白領域にその前後のデータ等を書き込むことも可能であることは言うまでもない。
【実施例6】
【0045】
前記の実施例5においては、各データの有効フラグ値として、「2」や「3」などのデータ拡大率を設定することによって、入力時の間隔より広げて出力する方法を示した。これに対し、本実施例では、間引き演算器20内の有効フラグ積算器10において、入力された有効フラグ値に拡大倍率をかけた値を有効フラグ積算値として出力するようにしたものである。
【0046】
図7Aに示す例では、入力データD0〜D3と、それぞれの有効フラグ値「1」、「0」、「1」、「1」が入力されている。これに対して、有効フラグ積算器10で、各有効フラグ値をデータ拡大倍率「2」をかけた値を積算するようにしている。この結果、出力される有効フラグ積算値は、それぞれ「0」、「2」、「2」、「4」となる。この内、有効フラグ積算値が「0」でないデータD0、D2、D3をその有効フラグ積算値をアドレスとして書き込む。その結果、データD1を除くデータD0、D2、D3が、アドレス0、2、4に間隔2に拡大されて配置される。
【0047】
図7Bは、本実施例の間引き演算器20を有するデータ処理装置の構成を示したものである。図2Aに示した実施例1の有効フラグ積算器10の出力値をデータ拡大倍率だけ乗じる乗算器21に入力し、その乗算結果を出力するように構成されている。図7Cは、乗算器21を用いる代わりにシフト演算器22を用いたものである。例えば、データ拡大倍率を2倍、4倍とするときは、入力値を左にそれぞれ1、2シフトすればよい。
【0048】
なお、図7A、図7Bでは、入力データに対して一律のデータ拡大倍率を乗じる場合を示したが、各データごとにデータ拡大倍率を可変に設定できるように構成してもよい。また、実施例5と同様に、データ間の空白領域にその前後のデータ等を書き込むように構成してもよい。
【実施例7】
【0049】
前記の実施例1〜6では、入力データの内の有効フラグ値が「0」でないデータ全てを順番に詰めて並べるため、全入力データの有効フラグ値を積算していく構成としていた。これに対して、本実施例では、1回に入力するデータごとに詰めて並べて出力するようにしたもので、1回の入力データごとの有効フラグ積算値を算出する。このために、有効フラグ積算先頭値は、毎回固定値とする。
【0050】
図8Aの例は、各入力データの内、有効フラグ値が「1」のみを左詰にして出力するように構成されたものである。まず、最初の入力データ0(=D0〜D3)に対して、有効フラグ積算先頭値を「0」として、各データの有効フラグ積算値を算出し、それぞれ「0」、「1」、「1」、「1」を得る。この内、有効フラグ値が「1」であるデータD0とD3をその有効フラグ積算値の値に従って左から順に並べて出力する。これにより、有効フラグ値が「1」であるデータD0とD3が左詰で出力される。
【0051】
次に、2回目の入力データ1(=D4〜D7)に対しても、有効フラグ積算先頭値を「0」として、各データの有効フラグ積算値を算出する。その結果、それぞれ「0」、「1」、「2」、「2」を得る。この内、有効フラグ値が「1」であるデータD4、D5、D7をその有効フラグ積算値の値に従って左から順に並べて出力する。これにより、有効フラグ値が「1」であるデータD4、D5、D7が左詰で出力される。このように構成することにより、選択したデータのみ左詰で出力することが可能になる。
【0052】
図8Bは、4バイトの入力データの内、1バイト目と3バイト目のみ取り出して左詰にした2バイトのデータを出力するようにした例を示したものである。これにより入力データを圧縮して出力するフィルタとして用いることが可能となる。入力データ0(=D0〜D3)では、データD0とD2の有効フラグが「1」となり、入力データ1(=D4〜D7)ではデータD4とD6の有効フラグ値を「1」としている。
【0053】
これに対して、データ0(=D0〜D3)と入力データ1(=D4〜D7)それぞれで図8Aの場合と同様の処理をすることにより、入力データ0(=D0〜D3)は、データD0とD2が左詰になった出力データ0に変換されて出力し、入力データ1(=D4〜D7)は、データD4とD6が左詰になった出力データ1に変換されて出力する。この場合、有効フラグ値を入力値として入力する代わりに、有効フラグ積算器10内で、左から1番目と3番目の有効フラグ値を「1」に、左から2番目と4番目の有効フラグ値を「0」にして計算するようにしてもよい。
【0054】
図8Cは、2バイトの入力データと、「2」に設定された各データの有効フラグ値とを入力し、図8Aと同様の処理を行うことによって、それぞれのデータが1バイトおきに拡大配置された4バイトデータを出力するようにしたものである。
【0055】
図8Dは、各有効フラグ値にデータ拡大倍率「2」を乗じた値を積算した有効フラグ積算値を算出し、さらに各データの右に同じデータを配置するようにした。これにより、左からD0、D1と並んだ2バイトの入力データ0(=D0、D1)が、データD0、D0、D1、D1と4バイトに拡大された出力データ0に変換され、左からD2、D3と並んだ2バイトの入力データ1(=D2、D3)がデータD2、D2、D3、D3のように4バイトに拡大された出力データ1に変換される。このようにして、入力データを拡大して出力するフィルタの機能を果たすことが可能になる。
【0056】
図8Eは、本実施例の間引き演算器20内の有効フラグ積算器10の構成を示したものである。本構成では、有効フラグ積算先頭値は固定値「0」を設定する。そして、各データに対する有効フラグ積算値VSO〜VS3をつぎにように計算する。
【0057】
有効フラグ積算値VS0=有効フラグ積算先頭値
有効フラグ積算値VS1=有効フラグ積算先頭値+有効フラグ値V0
有効フラグ積算値VS2=有効フラグ積算先頭値+有効フラグ値V0+有効フラグ値V1
有効フラグ積算値VS3=有効フラグ積算先頭値+有効フラグ値V0+有効フラグ値V1+有効フラグ値V2
【0058】
そして、有効フラグ値が「1」であるデータをその有効フラグ積算値の値に応じた位置に、セレクタ等を用いて移動させた上で、出力する。これによって、図8Eの例のように、入力データ0(=D0〜D3)では、有効フラグ値が「1」であるデータD0、D3が左詰で出力され、入力データ1(=D4〜D7)では、有効フラグ値が「1」であるデータD4、D5、D7が左詰で出力される。
【0059】
図8Fは、有効フラグ積算先頭値を「−1」に固定した場合の有効フラグ積算器10の構成を示したものである。本構成では、各入力データに対する有効フラグ積算値VS0〜VS3を次のように計算する。
【0060】
有効フラグ積算値VS0=有効フラグ積算先頭値+有効フラグ値V0
有効フラグ積算値VS1=有効フラグ積算先頭値+有効フラグ値V0+有効フラグ値V1
有効フラグ積算値VS2=有効フラグ積算先頭値+有効フラグ値V0+有効フラグ値V1+有効フラグ値V2
有効フラグ積算値VS3=有効フラグ積算先頭値+有効フラグ値V0+有効フラグ値V1+有効フラグ値V2+有効フラグ値V3
【0061】
この場合も図8Eと同様に、有効フラグ値が「1」であるデータをその有効フラグ積算値の値に応じた位置に、セレクタ等を用いて移動させた上で、出力する。これによって、図8Fの例のように、入力データ0(=D0〜D3)では、有効フラグ値が「1」であるデータD0、D3が左詰で出力され、入力データ1(=D4〜D7)では、有効フラグ値が「1」であるデータD4、D5、D7が左詰で出力される。
【0062】
これらの説明では、有効フラグ値を外部から有効フラグ積算器11に入力するようにしたが、有効フラグ積算器11内で、有効フラグ値を各入力データに与えるようにしてもよい。
【0063】
なお、本実施例では、有効フラグ積算先頭値の初期値として「0」(図8E)または「−1」(図8F)に固定した場合を例として説明したが、この初期値は「0」、「−1」に限るものではない。例えば、図8Eにおいて、その初期値を「0」の代わりに「1」に固定すれば、各サイクルで、出力データが出力アドレス「1」以降の領域に左詰めで出力するようにすることができる。
【実施例8】
【0064】
図9に示す実施例8では、1サイクル当りの各入力データについて、無効なデータ長を示すデータ長フラグの値を「0」とし、有効なデータ長を示すデータ長フラグの値を正の整数として、有効フラグ積算器11に入力する。有効フラグ乗算器11では、このデータ長フラグの値の積算値であるデータ長フラグ積算値を出力する。そして、データ長フラグ値が正の整数値のデータについて、記憶装置30に対して、そのデータ長フラグ積算値を先頭アドレスにして、そのデータ長フラグの値分の連続アドレスに書き込むようにすれば、データ長フラグで指定された入力データを順に詰めて、記憶装置30に書き込むことが出来る。
【0065】
図9に示す例では、まず4バイトの有効データD0をもつ入力データ0と、この有効データのデータ長を示す値「4」が設定されたデータ長フラグ0が入力される。この入力に対する、データ長フラグ積算値0には、データ長フラグ積算値の先頭値として「0」を与える。
【0066】
次に、1バイトの有効データD1をもつ入力データ1と、この有効データのデータ長を示す値「1」が設定されたデータ長フラグ1が入力される。この入力に対する、データ長フラグ積算値1は、
データ長フラグ積算値1=データ長フラグ積算値0+データ長フラグ1
と計算し、データ長フラグ積算値1=「4」が出力される。同様に、入力データ2に対するデータ長フラグ積算値2は、
データ長フラグ積算値2=データ長フラグ積算値1+データ長フラグ2
と計算し、データ長フラグ積算値2=「5」が得られる。同様に、データ長フラグ積算値3=「5」が得られる。この出力結果を用いて、以下のように記憶装置に書き込む。
【0067】
出力データ0:先頭アドレスをデータ長フラグ積算値0の値「0」として記憶装置に書き込む。
出力データ1:先頭アドレスをデータ長フラグ積算値1の値「4」として記憶装置に書き込む。
出力データ2:データ長フラグ2=「0」であるので、記憶装置に書き込まない。
出力データ3:先頭アドレスをデータ長フラグ積算値3の値「5」として記憶装置に書き込む。
【0068】
以上の処理により、各入力データの有効データD0、D1、D2を記憶装置50に順に詰めて書き込むことが出来る。
【実施例9】
【0069】
上記の実施例では、有効フラグ値を外部から有効フラグ積算器10に入力するようにしたが、図10に示すように、各入力データに対する有効フラグ値を、有効フラグ積算器10内で設定するようにしてもよい。このとき、設定する有効フラグ値は固定値でもよいし、各データごとに動的に設定してもよい。
【実施例10】
【0070】
図11A、図11Bは、本実施例を説明する図である。この例では、実施例4の構造の有効フラグ積算器10を用い、有効フラグ先頭値に「−1」を設定している。そして、有効な有効フラグ値として、正の整数値以外に負の整数値を用いる。まず、1組目の入力として、有効フラグ値がそれぞれ、「1」、「2」、「−1」、「2」である入力データD0〜D3を入力している(図11A)。これから有効フラグ積算値を求めると、それぞれ「0」、「2」、「1」、「3」となる。これに従って、有効フラグ値が「0」でない入力データD0〜D3をその有効フラグ積算値に従って、それぞれメモリ0、メモリ2、メモリ1、メモリ3に書き込む。この結果、D0、D1、D2、D3の順で入力されたデータを、D0、D2、D1、D3のように、D1とD2の順番を入れ替えて、メモリに書き込むことができる。
【0071】
続いて、2組目の入力データD4〜D7の処理を説明したのが、図11Bである。この例では、入力データD4〜D7の有効フラグ値はそれぞれ「3」、「0」、「−1」、「−1」となっている。これから有効フラグ積算値を求めると、それぞれ「6」、「6」、「5」、「4」となる。この内有効フラグが「0」でない入力データD4、D6、D7をその有効フラグ積算値に従って、それぞれメモリ2、メモリ1、メモリ0に書き込む。この結果、入力データD4〜D7からD5を除いた3つのデータを、D7、D6、D4のように順番を入れ替えて、詰めてメモリに書き込むことができる。
【0072】
以上のように、本実施例によれば、選択した入力データのみ任意の順番に入れ替えて、メモリに書き込んで行くことが可能となる。
【図面の簡単な説明】
【0073】
【図1A】本発明のデータ処理の概要説明図である。
【図1B】本発明のデータ処理の概要説明図である。
【図2A】本発明の実施例1のデータ処理装置の説明図である。
【図2B】本発明の実施例1のデータ処理装置の説明図である。
【図3A】本発明の実施例2のデータ処理装置の説明図である。
【図3B】本発明の実施例2のデータ処理装置の説明図である。
【図4A】本発明の実施例3のデータ処理装置の説明図である。
【図4B】本発明の実施例3のデータ処理装置の説明図である。
【図5A】本発明の実施例4のデータ処理装置の説明図である。
【図5B】本発明の実施例4のデータ処理装置の説明図である。
【図6A】本発明の実施例5のデータ処理装置の説明図である。
【図6B】本発明の実施例5のデータ処理装置の説明図である。
【図6C】本発明の実施例5のデータ処理装置の説明図である。
【図6D】本発明の実施例5のデータ処理装置の説明図である。
【図6E】本発明の実施例5のデータ処理装置の説明図である。
【図7A】本発明の実施例6のデータ処理装置の説明図である。
【図7B】本発明の実施例6のデータ処理装置の説明図である。
【図7C】本発明の実施例6のデータ処理装置の説明図である。
【図8A】本発明の実施例7のデータ処理装置の説明図である。
【図8B】本発明の実施例7のデータ処理装置の説明図である。
【図8C】本発明の実施例7のデータ処理装置の説明図である。
【図8D】本発明の実施例7のデータ処理装置の説明図である。
【図8E】本発明の実施例7のデータ処理装置の説明図である。
【図8F】本発明の実施例7のデータ処理装置の説明図である。
【図9】本発明の実施例8のデータ処理装置の説明図である。
【図10】本発明の実施例9のデータ処理装置の説明図である。
【図11A】本発明の実施例10のデータ処理装置の説明図である。
【図11B】本発明の実施例10のデータ処理装置の説明図である。
【図12】従来のデータ処理装置の説明図である。
【符号の説明】
【0074】
10,10A:有効フラグ積算器、11:有効フラグ積算先頭値格納部、12,13:加算器
20:間引き演算器、21:乗算器、22:シフト演算器
30:記憶装置
40:メモリ
50:FIFOメモリ
【技術分野】
【0001】
本発明は、複数の入力データから必要なデータのみを取り出して記憶装置に書き込むデータ処理装置に関するものである。
【背景技術】
【0002】
複数の入力データから必要なデータのみを取り出して、記憶装置に順番に詰めて書き込む間引き処理が必要とされることがある。通常行われるのは、対象となる入力データについて1つづつ順番に、要/不要を判断し、必要と判断された入力データのみ選択し、これを記憶装置に詰めて書き込む方法である。この処理をハードウェアで行う従来の方法として、図12に示すFIFOメモリ50を用いる方法がある。
【0003】
この方法では、まず、各入力データとその入力データの要/不要を示す有効フラグとを組にして1組づつ順番に入力する。このとき、有効フラグの値が有効を示す「1」である入力データのみ、入力順にFIFOメモリ50に詰めて記憶する。図12の例では、入力データD1、D2、D3、D4、D5の内、D1、D4のみFIFOメモリ50に詰めて記憶する手順を示したものである。D1、D2、D3、D4、D5の順に入力データが入力され、各入力データが入力されるごとに有効フラグが「1」か「0」かを判断し、「1」であるD1、D4のみをFIFOメモリ50に記憶する。この結果、記憶すべき入力データD1、D4のみをFIFOメモリ50に詰めて記憶することができる。
【0004】
別の従来技術として、特許文献1には、シリアル入力データの内、必要な入力データのみを詰めてパラレルに出力し、これをレジスタに書き込む方法が記載されている。この方法では、シリアルデータをパラレルデータに変換する際に、必要な入力データを、その直前の不要な入力データの数だけシフトレジスタによってデータ位置をシフトさせる。これによって、要/不要の入力データが混在して、飛び飛びであったシリアルデータを、必要な入力データのみが詰めて配置されたパラレルデータに変換できる。
【特許文献1】特開平8−123683号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、FIFOメモリ50に詰めて記憶する方法では、入力データを1つづつ逐次的に処理せざるを得ないため、データ処理の高速化をはかることが出来ないという問題がある。また、特許文献1に記載の方法でも、シリアル入力のデータ1つづに対して、逐次そのシフト量を判定して、格納場所を決めていかなければならないため、処理速度を速くすることができないという問題がある。
【0006】
本発明は、複数の入力データの内から必要なデータのみ選択しこれを任意の幅に詰める処理を、1サイクル当り所定数のデータ毎に並列に行うことにより、高速にデータ処理を実施することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するために、請求項1にかかる発明は、無効を示す「0」、又は有効を示す正の整数値、又は有効を示す負の整数値をもつ有効フラグと対になり、且つ順序関係をもって連続して入力する複数の入力データを、1サイクル毎に処理するデータ処理装置であって、前記入力データを前記1サイクル毎に前記順序関係に沿って所定数づつ取り込み、当該データより順序が前の全てのデータの有効フラグの値の合計値を当該データの有効フラグ積算値として算出する有効フラグ積算器を備え、該有効フラグ積算器で得られた有効フラグ積算値を前記入力データのアドレスとすることを特徴とする。
請求項2にかかる発明は、無効を示す「0」、又は有効を示す正の整数値、又は有効を示す負の整数値をもつ有効フラグと対になり、且つ順序関係をもって連続して入力する複数の入力データを、1サイクル毎に処理するデータ処理装置であって、前記入力データを前記1サイクル毎に前記順序関係に沿って所定数づつ取り込み、当該データの有効フラグの値と当該データより順序が前の全てのデータの有効フラグの値との合計値を当該データの有効フラグ積算値として算出する有効フラグ積算器を備え、該有効フラグ積算器で得られた有効フラグ積算値を前記入力データのアドレスとすることを特徴とする。
請求項3にかかる発明は、請求項1又は2に記載のデータ処理装置において、 該有効フラグ積算器で得られた有効フラグ積算値をアドレスとして、前記入力データの内の前記有効フラグで有効と指定されたデータが書き込まれる記憶装置とを備えることを特徴とする。
請求項4にかかる発明は、請求項1、2又は3に記載のデータ処理装置において、前記入力データの内の連続する2以上のデータがまとまりのあるデータであるとき、当該まとまりのある各データに同じ値の有効フラグを付与することを特徴とする。
請求項5にかかる発明は、請求項3に記載のデータ処理装置において、前記入力データの内の連続する2以上のデータがまとまりのあるデータであるとき、当該まとまりのあるデータの先頭データに、当該まとまりのあるデータのデータ量を正の整数値で示す有効フラグを付与するとともに、残りのデータの有効フラグを「0」とし、前記記憶装置に対して、前記先頭データに対応する有効フラグ積算値を先頭アドレスとして、前記データ量に対応する連続アドレスに書き込むことを特徴とする。
請求項6にかかる発明は、請求項1、2又は3に記載のデータ処理装置において、前記有効を示す正の整数値の有効フラグを、「1」以外の正の整数値に設定することを特徴とする。
請求項7にかかる発明は、請求項6に記載のデータ処理装置において、前記有効フラグ積算値を先頭アドレスとし、そこから当該データの有効フラグの値の数だけの連続アドレスに当該データを割り当てることを特徴とする。
請求項8にかかる発明は、請求項1、2又は3に記載のデータ処理装置において、前記有効フラグ積算器を、前記有効フラグ積算器で得られた有効フラグ積算値に拡大倍率をかけた値を新たな有効フラグ積算値として出力する有効フラグ積算器に置き換えたことを特徴とする。
請求項9にかかる発明は、請求項1、2、3又は8に記載のデータ処理装置において、前記有効フラグ積算器は、前記1サイクル内の所定数の入力データの有効フラグの値のみから有効フラグ積算値を算出することを特徴とする。
請求項10にかかる発明は、請求項3に記載のデータ処理装置において、前記有効フラグを、前記1サイクル当りの所定数の全入力データが無効であれば「0」を、有効であればそのデータ長を正の整数で示すデータ長フラグに置き換え、前記有効フラグ積算器を、前記データ長フラグ値を前記有効フラグ積算値と同様に積算することでデータ長フラグ積算値を出力する有効フラグ積算器に置き換え、前記記憶装置を、前記各サイクルの入力データを該有効フラグ積算器で得られたデータ長フラグ積算値を先頭アドレスとして、そのデータ長フラグの値だけ連続するアドレスに書き込む記憶装置に置き換える、ことを特徴とする。
【発明の効果】
【0008】
本発明によれば、1サイクル当り所定数のデータ内から、必要なデータを取り出し、これを詰めて、あるいは飛び飛びに、あるいはデータ毎重複して、あるいは順序を入れ替えて、記憶装置に書き込むことができる。これにより、例えば、画像や音声などの情報データの圧縮、拡大、並び替えなどの処理も高速に実行することができる。
【発明を実施するための最良の形態】
【0009】
図1A,Bは、本発明のデータ処理方法の概要を説明する図である。図1A,Bでは、例として、8個の入力データD0〜D7の内、D0、D3、D5、D7の4つの入力データのみ、この順番に詰めて記憶する場合について、データ処理の流れを示している。この例では、1サイクル当り入力データを4つづつ同時に入力し、並列処理する。この内、図1Aでは最初の4つの入力データD0〜D3の処理について示し、図1Bでは次の4つの入力データD4〜D7の処理について示している。
【0010】
各入力データは、その要/不要を1ビットで示す有効フラグ値をもつ。この例では、記憶するべきデータD0、D3、D5、D7の有効フラグ値を有効を示す「1」、残りの廃棄すべきデータD1、D2、D4、D6の有効フラグ値を無効を示す「0」とする。
【0011】
図1A,Bの方法では、入力データと有効フラグを組にして、4組づつ同時に入力し、並列処理する。ここでは、各入力データごとに、それより時間的順番が前の全ての入力データの有効フラグ値を合計した積算値を計算し、これを有効フラグ積算値として出力する。図1Aは、入力データD0〜D3のデータ処理を示している。図1Aにおいて、10は有効フラグ積算器であり、有効フラグ積算先頭値格納部11と、有効フラグ値同士を加算する3個の加算器12と、この加算器12の加算結果と有効フラグ積算先頭値格納部11の有効フラグ積算先頭値を加算する4個の加算器13とを備える。
【0012】
まず、有効フラグ積算先頭値の初期値として、有効フラグ積算先頭値格納部11に「0」を与える。そして、入力データD0〜D3に対する有効フラグ積算値、および次計算サイクル(D4〜D7に対する計算サイクル)で用いる有効フラグ積算先頭値を次のように計算する。
【0013】
D0の有効フラグ積算値=有効フラグ積算先頭値
D1の有効フラグ積算値=有効フラグ積算先頭値+D0の有効フラグ値
D2の有効フラグ積算値=有効フラグ積算先頭値+D0の有効フラグ値+D1の有効フラグ値
D3の有効フラグ積算値=有効フラグ積算先頭値+D0の有効フラグ値+D1の有効フラグ値+D2の有効フラグ値
次計算サイクルの有効フラグ積算先頭値=有効フラグ積算先頭値+D0の有効フラグ値+D1の有効フラグ値+D2の有効フラグ値+D3の有効フラグ値
【0014】
その結果、図1Aに示すように、入力データD0〜D3に対する有効フラグ積算値はそれぞれ「0」、「1」、「1」、「1」となり、次計算サイクルの有効フラグ積算先頭値は「2」となる。
【0015】
一方、図1Bは、次サイクルの入力データD4〜D7に対する計算処理を示している。有効フラグ積算先頭値として、前の計算サイクルで計算した値「2」を用いて、同様に以下の通り計算する。
【0016】
D4の有効フラグ積算値=有効フラグ積算先頭値
D5の有効フラグ積算値=有効フラグ積算先頭値+D4の有効フラグ値
D6の有効フラグ積算値=有効フラグ積算先頭値+D4の有効フラグ値+D5の有効フラグ値
D7の有効フラグ積算値=有効フラグ積算先頭値+D4の有効フラグ値+D5の有効フラグ+D6の有効フラグ値
次計算サイクルの有効フラグ積算先頭値=有効フラグ積算先頭値+D4の有効フラグ値+D5の有効フラグ値+D6の有効フラグ値+D7の有効フラグ値
【0017】
この結果、図1Bに示すように、入力データD4〜D7に対する有効フラグ積算値はそれぞれ「2」、「2」、「3」、「3」となり、次計算サイクルの有効フラグ積算先頭値は「4」となる。
【0018】
こうして得られた有効フラグ値が「1」の入力データの有効フラグ積算値は、そのデータが有効フラグ値「1」の全データの内先頭から何番目にあるかを示すことになる(この例では、先頭の入力データD0を0番目として数えている)。そこで、有効フラグ値が「1」である入力データを、その有効フラグ積算値をアドレスとして、レジスタやメモリなどの記憶装置に書き込むことにより、有効フラグ値「1」の入力データのみアドレス順に詰めた状態で書き込むことができる。
【0019】
図1A、図1Bの例では、有効フラグ値が「1」である入力データD0、D3、D5、D7をそれぞれの有効フラグ積算値「0」、「1」、「2」、「3」のアドレス番地に書き込むと、図1Bのように、出力データD0、D3、D5、D7として、出力アドレス「0」、「1」、「2」、「3」に詰めた状態で書き込むことができる。以下、本発明の実施例を添付の図を基に説明する。
【実施例1】
【0020】
図2A、図2Bは、複数の入力データの内、必要なデータのみ選択して、レジスタ等の記憶装置に詰めて書き込むようにした本発明のデータ処理装置の実施例を示したものである。
【0021】
図2A、図2Bにおいて、10は前記した有効フラグ積算器、20は間引き演算器、30は記憶装置である。各入力データ線DATA0〜DATA3を記憶装置30のデータ端子31に接続する。有効フラグ線V0〜V3は、それぞれ2つに分岐し、一方を記憶装置30の書込制御信号端子32(ライトイネーブル信号端子)に、他方を有効フラグ積算器10に入力する。有効フラグ積算器10から出力される有効フラグ積算値信号VS0〜VS3を記憶装置30のアドレス信号端子33に接続する。
【0022】
記憶装置30では、書込制御信号としての有効フラグ値が「1」である入力データについて、アドレス信号端子33のアドレス信号で指定されたアドレスに書き込まれるものとすると、図2A、図2Bに示すように、有効フラグ値が「1」である入力データD0、D3、D5、D7のみが、それぞれ、有効フラグ積算器10で計算した有効フラグ積算値で表されるアドレス0、1、2、3に書き込まれる。このようにして、有効フラグ値が「1」であるデータのみ、順に詰めて記憶装置30に書き込むことが可能になる。
【0023】
この記憶装置30として、例えば、レジスタを用いれば、入力データを最大で4つづつ同時に書き込むことが可能になり、処理の高速化を図ることができる。また、記憶装置30として、1本のメモリを用いる場合は、有効フラグ「1」のデータについて1つづつ順次、有効フラグ積算器10で計算されたアドレスに書き込んでいってもよい。
【0024】
有効フラグ積算器10は、有効フラグ積算先頭値格納部11と、有効フラグ同士を加算する3個の加算器12と、この加算器12の加算結果と有効フラグ積算先頭値格納部11の有効フラグ積算先頭値を加算する4個の加算器13とからなる簡単な構造であるため、並列度の規模や加算器の性能にもよるが、有効フラグ積算値の計算、データの記憶装置への書き込みを、通常1クロックづつで行うことが可能である。
【0025】
なお、本実施例では、有効フラグ積算先頭値の初期値として「0」を与えた場合を例として説明したが、この初期値は「0」に限るものではない。例えば、その初期値として「5」を与えれば、出力アドレスが「5」以降の領域に出力データを詰めて書き込むようにすることができる。
【実施例2】
【0026】
前記の実施例1では、各入力データの有効フラグ積算値として、そのデータより前にあるすべての入力データの有効フラグ値を合計して求めた。これに対して、図3A、図3Bに示す本実施例では、各入力データの有効フラグ積算値を、そのデータより前のすべて入力データの有効フラグとそのデータ自身の有効フラグ値を加算することで求める構成にしている。また、前記の実施例1では、有効フラグ積算先頭値の初期値を「0」に設定したが、本実施例では、「−1」に設定する。図3A、図3Bは、本実施例における有効フラグ積算器10の構造と、処理の流れを示したものであるが、この方法においても有効フラグが「1」であるデータのみを選択して順に詰めて書き込むことが可能になる。
【0027】
図3Aは、本実施例による入力データD0〜D3のデータ処理を示している。まず、有効フラグ積算先頭値の初期値として「−1」を与える。そして、入力データD0〜D3に対する有効フラグ積算値、および次計算サイクル(D4〜D7に対する計算サイクル)で用いる有効フラグ積算先頭値を次のように計算する。
【0028】
D0の有効フラグ積算値=有効フラグ積算先頭値+D0の有効フラグ値
D1の有効フラグ積算値=有効フラグ積算先頭値+D0の有効フラグ値+D1の有効フラグ値
D2の有効フラグ積算値=有効フラグ積算先頭値+D0の有効フラグ値+D1の有効フラグ値+D2の有効フラグ値
D3の有効フラグ積算値=有効フラグ積算先頭値+D0の有効フラグ値+D1の有効フラグ値+D2の有効フラグ+D3の有効フラグ値
次計算サイクルの有効フラグ積算先頭値=D3の有効フラグ積算値
【0029】
その結果、図3Aに示すように、入力データD0〜D3に対する有効フラグ積算値はそれぞれ「0」、「0」、「0」、「1」となり、次計算サイクルの有効フラグ積算先頭値は「1」となる。
【0030】
図3Bは、次サイクルの入力データD4〜D7に対する計算処理を示している。有効フラグ積算先頭値として、前の計算サイクルで計算した値「1」を用いて、同様に以下の通り計算する。
【0031】
D4の有効フラグ積算値=有効フラグ積算先頭値+D4の有効フラグ値
D5の有効フラグ積算値=有効フラグ積算先頭値+D4の有効フラグ値+D5の有効フラグ値
D6の有効フラグ積算値=有効フラグ積算先頭値+D4の有効フラグ値+D5の有効フラグ値+D6の有効フラグ値
D7の有効フラグ積算値=有効フラグ積算先頭値+D4の有効フラグ値+D5の有効フラグ値+D6の有効フラグ値+D7の有効フラグ値
次計算サイクルの有効フラグ積算先頭値=D7の有効フラグ積算値
【0032】
この結果、図3Bに示すように、入力データD4〜D7に対する有効フラグ積算値はそれぞれ「1」、「2」、「2」、「3」となり、次計算サイクルの有効フラグ積算先頭値は「3」となる。
【0033】
こうして得られた有効フラグ値が「1」の入力データの有効フラグ積算値は、そのデータが有効フラグ値「1」の全データの内先頭から何番目にあるかを示すことになる(この例では、先頭の入力データD0を0番目として数えている)。そこで、有効フラグ値が「1」である入力データを、その有効フラグ積算値をアドレスとして、レジスタやメモリなどの記憶装置30に書き込むことにより、有効フラグ値「1」のデータのみアドレス順に詰めた状着で書き込むことができる。
【0034】
本実施例は、各データの有効フラグ積算値と有効フラグ積算先頭値の計算式が、当該データの有効フラグ値を含む点で、実施例1におけるものと異なるが、有効フラグが「1」である入力データD0、D3、D5、D7をそれぞれの有効フラグ積算値「0」、「1」、「2」、「3」のアドレス番地に書き込むと、図3Bのように、図2Bと全く同様に、詰めた状態で書き込むことができる。
【0035】
なお、本実施例では、有効フラグ積算先頭値の初期値として「−1」を与えた場合を例として説明したが、この初期値は「−1」に限るものではない。例えば、その初期値として「4」を与えれば、出力アドレスが「5」以降の領域に出力データを詰めて書き込むようにすることができる。
【実施例3】
【0036】
本実施例は、大きさが異なる入力データに対して、本発明の方法を適用した場合である。図4A、図4Bに示した例では、入力データD0、D1、D3は1バイト、D2は2バイト、D4は3バイトとし(個々のデータを1バイトとするとき、2バイト以上のデータを、請求項3では「まとまりのあるデータ」と呼んでいる。)、この内、網掛け表示したD0、D2、D4のみ選択して順に詰めて記憶装置30に記憶する場合を示している。各入力データとも、単位データ量である1バイトに1つづつ有効フラグを持つようにしている。すなわち、2バイトのD2は2つ、3バイトのD4は3つの有効フラグをもつ。そして、記憶装置30に記憶したいデータは対応する有効フラグ値を「1」にする。このような入力データと有効フラグのペアに対して、実施例1又は2と同様の計算により、各データの1バイトごとに有効フラグ積算値を算出する。
【0037】
図4Aでは、入力データD0の有効フラグ積算値が「0」であり、入力データD2の1バイト目、2バイト目の有効フラグ積算値はそれぞれ「1」、「2」となる。これから、入力データD0、D2の1バイト目、D2の2バイト目をそれぞれ記憶装置30のアドレス0、1、2に記憶する。
【0038】
同様に、図4Bでは、記憶すべき入力データD4の1バイト目、2バイト目、3バイト目の有効フラグ積算値はそれぞれ「3」、「4」、「5」と求められるので、それぞれ記憶装置3のアドレス3、4、5に記憶する。この結果、1バイトの入力データD0、2バイトの入力データD2、3バイトの入力データD4のみ取り出して、順に詰めて記憶する処理を4バイトづつ高速に実行することが出来る。
【実施例4】
【0039】
本実施例は、実施例3と同じように大きさが異なる入力データに対して、本発明の方法を適用する例である(図5A、図5B参照)。本実施例では、2バイト以上の入力データについては、そのデータが選択される場合は、その入力データの先頭バイトに対応する有効フラグにそのデータの大きさを正の整数値で設定し、先頭以外のバイトに対する有効フラグ値を「0」に設定する。そして、実施例1又は2と同様の計算により、各入力データの1バイトごとに有効フラグ積算値を算出する。この結果、得られた各入力データのバイトごとの有効フラグ積算値、および有効フラグ値を用いて次のような手順で、記憶装置30への書込処理を行う。すなわち、1バイトデータが選択されたときはそのデータの有効フラグ積算値をアドレスとして、前記実施例1〜4と同様に記憶装置30に書き込む。また、2バイト以上のまとまりのあるデータが選択されたときはそのデータの先頭バイトに対応する有効フラグ積算値を先頭アドレスとして、そのデータの大きさ分の連続アドレスに記憶装置30に書き込む。これにより、必要なデータのみ取り出して順に詰めて記憶する処理を4バイトづつ高速に実行することが出来る。
【実施例5】
【0040】
前記した実施例1〜4では、各入力データのフラグ値を「0」または「1」に設定した。これに対して、本実施例では、入力データが有効なときは、有効フラグ値を「2」、あるいは「3」などのように、「1」以外の正の整数値に設定することにより、データの間隔をもとの入力時の間隔より広げる処理を行うものである。図6Aに示した例では、入力データD0〜D3に対する有効フラグ値を全て「2」と設定して、実施例1又は2と同様の方法で、有効フラグ積算値を算出する。すると、入力データD0〜D3に対する有効フラグ積算値は、それぞれ、「0」、「2」、「4」、「6」となる。これらの値を各データの記憶装置30でのアドレスとして指定して、各データを書き込むと、図6Aに示すように、D0〜D3が1つおきのアドレスに書き込まれ、データ間隔を拡げて書き込むことが出来る。
【0041】
図6Aに示した例では、記憶装置30のアドレス1、3、5、7にはデータが書き込まれず空白となっているが、図6Bのように、アドレス0と1にD0、アドレス2と3にD1、アドレス4と5にD2、アドレス6と7にD3を書き込むようにすることも出来る。各入力データに対して、その有効フラグ積算値を先頭アドレスとして、そこから有効フラグ値の数だけ連続するアドレスに各データを書き込むようにする。これにより、例えば、画像データをより面積の広い画像に拡大処理することも可能になる。
【0042】
また、図6Cに示すように、入力データの内、任意のデータのみ選んで、これを指定した間隔で並べることも可能である。図6Cの例では、入力データD0〜D3の内、D0、D2,D3の有効フラグ値を「2」、D1の有効フラグ値を「0」と設定する。実施例1又は2と同様の計算により、入力データD0〜D3の有効フラグ積算値を算出すると、それぞれ、「0」、「2」、「2」、「4」となる。この内、有効フラグが「0」でないデータD0、D2、D3を、その有効フラグ積算値をアドレスとして記憶装置30に書き込むと、図9Cのように、データD0、D2、D3がアドレス0、2、4に指定した間隔2で書き込まれる。
【0043】
図6Dは、図6Cと入力データ、有効フラグ値、算出された有効フラグ積算値は同じだが、図6Bと同じように各データ間を空白とせず、その前のデータで埋めるようにしたものである。各入力データに対して、その有効フラグ積算値を先頭アドレスとして、そこから有効フラグ値の数だけの連続するアドレスに各データを書き込むようにする。これにより、例えば、画像データをより面積の広い画像に拡大処理することも可能になる。図6Bの場合は一律にデータを拡大することができたが、図6Dの場合は、画像データの任意の領域を選んでこれを拡大するということも可能になる。
【0044】
図6Eは、各データの有効フラグ値を任意に設定して、データ選択およびデータ間隔を任意に設定した場合である。入力データD0〜D3に対する有効フラグ値をそれぞれ「2」、「0」、「3」、「2」設定すると、有効フラグ積算値はそれぞれ「0」、「2」、「2」、「5」となる。この内、有効フラグ値が「0」でないデータD0、D2、D3をそれぞれの有効フラグ積算値のアドレスに書き込むと、D0、D2、D3がそれぞれアドレス0、2、5に書き込まれる。これによって、有効フラグ値を「0」と設定したデータD1を除き、さらにその他のデータD0、D2、D3をそれぞれ設定した有効フラグ値の間隔で記憶装置30に書き込むことが可能になる。このように、有効フラグの設定によって、任意のデータを選択して、これを任意の間隔に配置することが可能になる。この場合も、図6B、図6Dと同様、データ間の空白領域にその前後のデータ等を書き込むことも可能であることは言うまでもない。
【実施例6】
【0045】
前記の実施例5においては、各データの有効フラグ値として、「2」や「3」などのデータ拡大率を設定することによって、入力時の間隔より広げて出力する方法を示した。これに対し、本実施例では、間引き演算器20内の有効フラグ積算器10において、入力された有効フラグ値に拡大倍率をかけた値を有効フラグ積算値として出力するようにしたものである。
【0046】
図7Aに示す例では、入力データD0〜D3と、それぞれの有効フラグ値「1」、「0」、「1」、「1」が入力されている。これに対して、有効フラグ積算器10で、各有効フラグ値をデータ拡大倍率「2」をかけた値を積算するようにしている。この結果、出力される有効フラグ積算値は、それぞれ「0」、「2」、「2」、「4」となる。この内、有効フラグ積算値が「0」でないデータD0、D2、D3をその有効フラグ積算値をアドレスとして書き込む。その結果、データD1を除くデータD0、D2、D3が、アドレス0、2、4に間隔2に拡大されて配置される。
【0047】
図7Bは、本実施例の間引き演算器20を有するデータ処理装置の構成を示したものである。図2Aに示した実施例1の有効フラグ積算器10の出力値をデータ拡大倍率だけ乗じる乗算器21に入力し、その乗算結果を出力するように構成されている。図7Cは、乗算器21を用いる代わりにシフト演算器22を用いたものである。例えば、データ拡大倍率を2倍、4倍とするときは、入力値を左にそれぞれ1、2シフトすればよい。
【0048】
なお、図7A、図7Bでは、入力データに対して一律のデータ拡大倍率を乗じる場合を示したが、各データごとにデータ拡大倍率を可変に設定できるように構成してもよい。また、実施例5と同様に、データ間の空白領域にその前後のデータ等を書き込むように構成してもよい。
【実施例7】
【0049】
前記の実施例1〜6では、入力データの内の有効フラグ値が「0」でないデータ全てを順番に詰めて並べるため、全入力データの有効フラグ値を積算していく構成としていた。これに対して、本実施例では、1回に入力するデータごとに詰めて並べて出力するようにしたもので、1回の入力データごとの有効フラグ積算値を算出する。このために、有効フラグ積算先頭値は、毎回固定値とする。
【0050】
図8Aの例は、各入力データの内、有効フラグ値が「1」のみを左詰にして出力するように構成されたものである。まず、最初の入力データ0(=D0〜D3)に対して、有効フラグ積算先頭値を「0」として、各データの有効フラグ積算値を算出し、それぞれ「0」、「1」、「1」、「1」を得る。この内、有効フラグ値が「1」であるデータD0とD3をその有効フラグ積算値の値に従って左から順に並べて出力する。これにより、有効フラグ値が「1」であるデータD0とD3が左詰で出力される。
【0051】
次に、2回目の入力データ1(=D4〜D7)に対しても、有効フラグ積算先頭値を「0」として、各データの有効フラグ積算値を算出する。その結果、それぞれ「0」、「1」、「2」、「2」を得る。この内、有効フラグ値が「1」であるデータD4、D5、D7をその有効フラグ積算値の値に従って左から順に並べて出力する。これにより、有効フラグ値が「1」であるデータD4、D5、D7が左詰で出力される。このように構成することにより、選択したデータのみ左詰で出力することが可能になる。
【0052】
図8Bは、4バイトの入力データの内、1バイト目と3バイト目のみ取り出して左詰にした2バイトのデータを出力するようにした例を示したものである。これにより入力データを圧縮して出力するフィルタとして用いることが可能となる。入力データ0(=D0〜D3)では、データD0とD2の有効フラグが「1」となり、入力データ1(=D4〜D7)ではデータD4とD6の有効フラグ値を「1」としている。
【0053】
これに対して、データ0(=D0〜D3)と入力データ1(=D4〜D7)それぞれで図8Aの場合と同様の処理をすることにより、入力データ0(=D0〜D3)は、データD0とD2が左詰になった出力データ0に変換されて出力し、入力データ1(=D4〜D7)は、データD4とD6が左詰になった出力データ1に変換されて出力する。この場合、有効フラグ値を入力値として入力する代わりに、有効フラグ積算器10内で、左から1番目と3番目の有効フラグ値を「1」に、左から2番目と4番目の有効フラグ値を「0」にして計算するようにしてもよい。
【0054】
図8Cは、2バイトの入力データと、「2」に設定された各データの有効フラグ値とを入力し、図8Aと同様の処理を行うことによって、それぞれのデータが1バイトおきに拡大配置された4バイトデータを出力するようにしたものである。
【0055】
図8Dは、各有効フラグ値にデータ拡大倍率「2」を乗じた値を積算した有効フラグ積算値を算出し、さらに各データの右に同じデータを配置するようにした。これにより、左からD0、D1と並んだ2バイトの入力データ0(=D0、D1)が、データD0、D0、D1、D1と4バイトに拡大された出力データ0に変換され、左からD2、D3と並んだ2バイトの入力データ1(=D2、D3)がデータD2、D2、D3、D3のように4バイトに拡大された出力データ1に変換される。このようにして、入力データを拡大して出力するフィルタの機能を果たすことが可能になる。
【0056】
図8Eは、本実施例の間引き演算器20内の有効フラグ積算器10の構成を示したものである。本構成では、有効フラグ積算先頭値は固定値「0」を設定する。そして、各データに対する有効フラグ積算値VSO〜VS3をつぎにように計算する。
【0057】
有効フラグ積算値VS0=有効フラグ積算先頭値
有効フラグ積算値VS1=有効フラグ積算先頭値+有効フラグ値V0
有効フラグ積算値VS2=有効フラグ積算先頭値+有効フラグ値V0+有効フラグ値V1
有効フラグ積算値VS3=有効フラグ積算先頭値+有効フラグ値V0+有効フラグ値V1+有効フラグ値V2
【0058】
そして、有効フラグ値が「1」であるデータをその有効フラグ積算値の値に応じた位置に、セレクタ等を用いて移動させた上で、出力する。これによって、図8Eの例のように、入力データ0(=D0〜D3)では、有効フラグ値が「1」であるデータD0、D3が左詰で出力され、入力データ1(=D4〜D7)では、有効フラグ値が「1」であるデータD4、D5、D7が左詰で出力される。
【0059】
図8Fは、有効フラグ積算先頭値を「−1」に固定した場合の有効フラグ積算器10の構成を示したものである。本構成では、各入力データに対する有効フラグ積算値VS0〜VS3を次のように計算する。
【0060】
有効フラグ積算値VS0=有効フラグ積算先頭値+有効フラグ値V0
有効フラグ積算値VS1=有効フラグ積算先頭値+有効フラグ値V0+有効フラグ値V1
有効フラグ積算値VS2=有効フラグ積算先頭値+有効フラグ値V0+有効フラグ値V1+有効フラグ値V2
有効フラグ積算値VS3=有効フラグ積算先頭値+有効フラグ値V0+有効フラグ値V1+有効フラグ値V2+有効フラグ値V3
【0061】
この場合も図8Eと同様に、有効フラグ値が「1」であるデータをその有効フラグ積算値の値に応じた位置に、セレクタ等を用いて移動させた上で、出力する。これによって、図8Fの例のように、入力データ0(=D0〜D3)では、有効フラグ値が「1」であるデータD0、D3が左詰で出力され、入力データ1(=D4〜D7)では、有効フラグ値が「1」であるデータD4、D5、D7が左詰で出力される。
【0062】
これらの説明では、有効フラグ値を外部から有効フラグ積算器11に入力するようにしたが、有効フラグ積算器11内で、有効フラグ値を各入力データに与えるようにしてもよい。
【0063】
なお、本実施例では、有効フラグ積算先頭値の初期値として「0」(図8E)または「−1」(図8F)に固定した場合を例として説明したが、この初期値は「0」、「−1」に限るものではない。例えば、図8Eにおいて、その初期値を「0」の代わりに「1」に固定すれば、各サイクルで、出力データが出力アドレス「1」以降の領域に左詰めで出力するようにすることができる。
【実施例8】
【0064】
図9に示す実施例8では、1サイクル当りの各入力データについて、無効なデータ長を示すデータ長フラグの値を「0」とし、有効なデータ長を示すデータ長フラグの値を正の整数として、有効フラグ積算器11に入力する。有効フラグ乗算器11では、このデータ長フラグの値の積算値であるデータ長フラグ積算値を出力する。そして、データ長フラグ値が正の整数値のデータについて、記憶装置30に対して、そのデータ長フラグ積算値を先頭アドレスにして、そのデータ長フラグの値分の連続アドレスに書き込むようにすれば、データ長フラグで指定された入力データを順に詰めて、記憶装置30に書き込むことが出来る。
【0065】
図9に示す例では、まず4バイトの有効データD0をもつ入力データ0と、この有効データのデータ長を示す値「4」が設定されたデータ長フラグ0が入力される。この入力に対する、データ長フラグ積算値0には、データ長フラグ積算値の先頭値として「0」を与える。
【0066】
次に、1バイトの有効データD1をもつ入力データ1と、この有効データのデータ長を示す値「1」が設定されたデータ長フラグ1が入力される。この入力に対する、データ長フラグ積算値1は、
データ長フラグ積算値1=データ長フラグ積算値0+データ長フラグ1
と計算し、データ長フラグ積算値1=「4」が出力される。同様に、入力データ2に対するデータ長フラグ積算値2は、
データ長フラグ積算値2=データ長フラグ積算値1+データ長フラグ2
と計算し、データ長フラグ積算値2=「5」が得られる。同様に、データ長フラグ積算値3=「5」が得られる。この出力結果を用いて、以下のように記憶装置に書き込む。
【0067】
出力データ0:先頭アドレスをデータ長フラグ積算値0の値「0」として記憶装置に書き込む。
出力データ1:先頭アドレスをデータ長フラグ積算値1の値「4」として記憶装置に書き込む。
出力データ2:データ長フラグ2=「0」であるので、記憶装置に書き込まない。
出力データ3:先頭アドレスをデータ長フラグ積算値3の値「5」として記憶装置に書き込む。
【0068】
以上の処理により、各入力データの有効データD0、D1、D2を記憶装置50に順に詰めて書き込むことが出来る。
【実施例9】
【0069】
上記の実施例では、有効フラグ値を外部から有効フラグ積算器10に入力するようにしたが、図10に示すように、各入力データに対する有効フラグ値を、有効フラグ積算器10内で設定するようにしてもよい。このとき、設定する有効フラグ値は固定値でもよいし、各データごとに動的に設定してもよい。
【実施例10】
【0070】
図11A、図11Bは、本実施例を説明する図である。この例では、実施例4の構造の有効フラグ積算器10を用い、有効フラグ先頭値に「−1」を設定している。そして、有効な有効フラグ値として、正の整数値以外に負の整数値を用いる。まず、1組目の入力として、有効フラグ値がそれぞれ、「1」、「2」、「−1」、「2」である入力データD0〜D3を入力している(図11A)。これから有効フラグ積算値を求めると、それぞれ「0」、「2」、「1」、「3」となる。これに従って、有効フラグ値が「0」でない入力データD0〜D3をその有効フラグ積算値に従って、それぞれメモリ0、メモリ2、メモリ1、メモリ3に書き込む。この結果、D0、D1、D2、D3の順で入力されたデータを、D0、D2、D1、D3のように、D1とD2の順番を入れ替えて、メモリに書き込むことができる。
【0071】
続いて、2組目の入力データD4〜D7の処理を説明したのが、図11Bである。この例では、入力データD4〜D7の有効フラグ値はそれぞれ「3」、「0」、「−1」、「−1」となっている。これから有効フラグ積算値を求めると、それぞれ「6」、「6」、「5」、「4」となる。この内有効フラグが「0」でない入力データD4、D6、D7をその有効フラグ積算値に従って、それぞれメモリ2、メモリ1、メモリ0に書き込む。この結果、入力データD4〜D7からD5を除いた3つのデータを、D7、D6、D4のように順番を入れ替えて、詰めてメモリに書き込むことができる。
【0072】
以上のように、本実施例によれば、選択した入力データのみ任意の順番に入れ替えて、メモリに書き込んで行くことが可能となる。
【図面の簡単な説明】
【0073】
【図1A】本発明のデータ処理の概要説明図である。
【図1B】本発明のデータ処理の概要説明図である。
【図2A】本発明の実施例1のデータ処理装置の説明図である。
【図2B】本発明の実施例1のデータ処理装置の説明図である。
【図3A】本発明の実施例2のデータ処理装置の説明図である。
【図3B】本発明の実施例2のデータ処理装置の説明図である。
【図4A】本発明の実施例3のデータ処理装置の説明図である。
【図4B】本発明の実施例3のデータ処理装置の説明図である。
【図5A】本発明の実施例4のデータ処理装置の説明図である。
【図5B】本発明の実施例4のデータ処理装置の説明図である。
【図6A】本発明の実施例5のデータ処理装置の説明図である。
【図6B】本発明の実施例5のデータ処理装置の説明図である。
【図6C】本発明の実施例5のデータ処理装置の説明図である。
【図6D】本発明の実施例5のデータ処理装置の説明図である。
【図6E】本発明の実施例5のデータ処理装置の説明図である。
【図7A】本発明の実施例6のデータ処理装置の説明図である。
【図7B】本発明の実施例6のデータ処理装置の説明図である。
【図7C】本発明の実施例6のデータ処理装置の説明図である。
【図8A】本発明の実施例7のデータ処理装置の説明図である。
【図8B】本発明の実施例7のデータ処理装置の説明図である。
【図8C】本発明の実施例7のデータ処理装置の説明図である。
【図8D】本発明の実施例7のデータ処理装置の説明図である。
【図8E】本発明の実施例7のデータ処理装置の説明図である。
【図8F】本発明の実施例7のデータ処理装置の説明図である。
【図9】本発明の実施例8のデータ処理装置の説明図である。
【図10】本発明の実施例9のデータ処理装置の説明図である。
【図11A】本発明の実施例10のデータ処理装置の説明図である。
【図11B】本発明の実施例10のデータ処理装置の説明図である。
【図12】従来のデータ処理装置の説明図である。
【符号の説明】
【0074】
10,10A:有効フラグ積算器、11:有効フラグ積算先頭値格納部、12,13:加算器
20:間引き演算器、21:乗算器、22:シフト演算器
30:記憶装置
40:メモリ
50:FIFOメモリ
【特許請求の範囲】
【請求項1】
無効を示す「0」、又は有効を示す正の整数値、又は有効を示す負の整数値をもつ有効フラグと対になり、且つ順序関係をもって連続して入力する複数の入力データを、1サイクル毎に処理するデータ処理装置であって、
前記入力データを前記1サイクル毎に前記順序関係に沿って所定数づつ取り込み、当該データより順序が前の全てのデータの有効フラグの値の合計値を当該データの有効フラグ積算値として算出する有効フラグ積算器を備え、
該有効フラグ積算器で得られた有効フラグ積算値を前記入力データのアドレスとすることを特徴とするデータ処理装置。
【請求項2】
無効を示す「0」、又は有効を示す正の整数値、又は有効を示す負の整数値をもつ有効フラグと対になり、且つ順序関係をもって連続して入力する複数の入力データを、1サイクル毎に処理するデータ処理装置であって、
前記入力データを前記1サイクル毎に前記順序関係に沿って所定数づつ取り込み、当該データの有効フラグの値と当該データより順序が前の全てのデータの有効フラグの値との合計値を当該データの有効フラグ積算値として算出する有効フラグ積算器を備え、
該有効フラグ積算器で得られた有効フラグ積算値を前記入力データのアドレスとすることを特徴とするデータ処理装置。
【請求項3】
請求項1又は2に記載のデータ処理装置において、
該有効フラグ積算器で得られた有効フラグ積算値をアドレスとして、前記入力データの内の前記有効フラグで有効と指定されたデータが書き込まれる記憶装置とを備えることを特徴とするデータ処理装置。
【請求項4】
請求項1、2又は3に記載のデータ処理装置において、
前記入力データの内の連続する2以上のデータがまとまりのあるデータであるとき、当該まとまりのある各データに同じ値の有効フラグを付与することを特徴とするデータ処理装置。
【請求項5】
請求項3に記載のデータ処理装置において、
前記入力データの内の連続する2以上のデータがまとまりのあるデータであるとき、当該まとまりのあるデータの先頭データに、当該まとまりのあるデータのデータ量を正の整数値で示す有効フラグを付与するとともに、残りのデータの有効フラグを「0」とし、前記記憶装置に対して、前記先頭データに対応する有効フラグ積算値を先頭アドレスとして、前記データ量に対応する連続アドレスに書き込むことを特徴とするデータ処理装置。
【請求項6】
請求項1、2又は3に記載のデータ処理装置において、
前記有効を示す正の整数値の有効フラグを、「1」以外の正の整数値に設定することを特徴とするデータ処理装置。
【請求項7】
請求項6に記載のデータ処理装置において、
前記有効フラグ積算値を先頭アドレスとし、そこから当該データの有効フラグの値の数だけの連続アドレスに当該データを割り当てることを特徴とするデータ処理装置。
【請求項8】
請求項1、2又は3に記載のデータ処理装置において、
前記有効フラグ積算器を、前記有効フラグ積算器で得られた有効フラグ積算値に拡大倍率をかけた値を新たな有効フラグ積算値として出力する有効フラグ積算器に置き換えたことを特徴とするデータ処理装置。
【請求項9】
請求項1、2、3又は8に記載のデータ処理装置において、
前記有効フラグ積算器は、前記1サイクル内の所定数の入力データの有効フラグの値のみから有効フラグ積算値を算出することを特徴とするデータ処理装置。
【請求項10】
請求項3に記載のデータ処理装置において、
前記有効フラグを、前記1サイクル当りの所定数の全入力データが無効であれば「0」を、有効であればそのデータ長を正の整数で示すデータ長フラグに置き換え、
前記有効フラグ積算器を、前記データ長フラグ値を前記有効フラグ積算値と同様に積算することでデータ長フラグ積算値を出力する有効フラグ積算器に置き換え、
前記記憶装置を、前記各サイクルの入力データを該有効フラグ積算器で得られたデータ長フラグ積算値を先頭アドレスとして、そのデータ長フラグの値だけ連続するアドレスに書き込む記憶装置に置き換える、
ことを特徴とするデータ処理装置。
【請求項1】
無効を示す「0」、又は有効を示す正の整数値、又は有効を示す負の整数値をもつ有効フラグと対になり、且つ順序関係をもって連続して入力する複数の入力データを、1サイクル毎に処理するデータ処理装置であって、
前記入力データを前記1サイクル毎に前記順序関係に沿って所定数づつ取り込み、当該データより順序が前の全てのデータの有効フラグの値の合計値を当該データの有効フラグ積算値として算出する有効フラグ積算器を備え、
該有効フラグ積算器で得られた有効フラグ積算値を前記入力データのアドレスとすることを特徴とするデータ処理装置。
【請求項2】
無効を示す「0」、又は有効を示す正の整数値、又は有効を示す負の整数値をもつ有効フラグと対になり、且つ順序関係をもって連続して入力する複数の入力データを、1サイクル毎に処理するデータ処理装置であって、
前記入力データを前記1サイクル毎に前記順序関係に沿って所定数づつ取り込み、当該データの有効フラグの値と当該データより順序が前の全てのデータの有効フラグの値との合計値を当該データの有効フラグ積算値として算出する有効フラグ積算器を備え、
該有効フラグ積算器で得られた有効フラグ積算値を前記入力データのアドレスとすることを特徴とするデータ処理装置。
【請求項3】
請求項1又は2に記載のデータ処理装置において、
該有効フラグ積算器で得られた有効フラグ積算値をアドレスとして、前記入力データの内の前記有効フラグで有効と指定されたデータが書き込まれる記憶装置とを備えることを特徴とするデータ処理装置。
【請求項4】
請求項1、2又は3に記載のデータ処理装置において、
前記入力データの内の連続する2以上のデータがまとまりのあるデータであるとき、当該まとまりのある各データに同じ値の有効フラグを付与することを特徴とするデータ処理装置。
【請求項5】
請求項3に記載のデータ処理装置において、
前記入力データの内の連続する2以上のデータがまとまりのあるデータであるとき、当該まとまりのあるデータの先頭データに、当該まとまりのあるデータのデータ量を正の整数値で示す有効フラグを付与するとともに、残りのデータの有効フラグを「0」とし、前記記憶装置に対して、前記先頭データに対応する有効フラグ積算値を先頭アドレスとして、前記データ量に対応する連続アドレスに書き込むことを特徴とするデータ処理装置。
【請求項6】
請求項1、2又は3に記載のデータ処理装置において、
前記有効を示す正の整数値の有効フラグを、「1」以外の正の整数値に設定することを特徴とするデータ処理装置。
【請求項7】
請求項6に記載のデータ処理装置において、
前記有効フラグ積算値を先頭アドレスとし、そこから当該データの有効フラグの値の数だけの連続アドレスに当該データを割り当てることを特徴とするデータ処理装置。
【請求項8】
請求項1、2又は3に記載のデータ処理装置において、
前記有効フラグ積算器を、前記有効フラグ積算器で得られた有効フラグ積算値に拡大倍率をかけた値を新たな有効フラグ積算値として出力する有効フラグ積算器に置き換えたことを特徴とするデータ処理装置。
【請求項9】
請求項1、2、3又は8に記載のデータ処理装置において、
前記有効フラグ積算器は、前記1サイクル内の所定数の入力データの有効フラグの値のみから有効フラグ積算値を算出することを特徴とするデータ処理装置。
【請求項10】
請求項3に記載のデータ処理装置において、
前記有効フラグを、前記1サイクル当りの所定数の全入力データが無効であれば「0」を、有効であればそのデータ長を正の整数で示すデータ長フラグに置き換え、
前記有効フラグ積算器を、前記データ長フラグ値を前記有効フラグ積算値と同様に積算することでデータ長フラグ積算値を出力する有効フラグ積算器に置き換え、
前記記憶装置を、前記各サイクルの入力データを該有効フラグ積算器で得られたデータ長フラグ積算値を先頭アドレスとして、そのデータ長フラグの値だけ連続するアドレスに書き込む記憶装置に置き換える、
ことを特徴とするデータ処理装置。
【図1A】
【図1B】
【図2A】
【図2B】
【図3A】
【図3B】
【図4A】
【図4B】
【図5A】
【図5B】
【図6A】
【図6B】
【図6C】
【図6D】
【図6E】
【図7A】
【図7B】
【図7C】
【図8A】
【図8B】
【図8C】
【図8D】
【図8E】
【図8F】
【図9】
【図10】
【図11A】
【図11B】
【図12】
【図1B】
【図2A】
【図2B】
【図3A】
【図3B】
【図4A】
【図4B】
【図5A】
【図5B】
【図6A】
【図6B】
【図6C】
【図6D】
【図6E】
【図7A】
【図7B】
【図7C】
【図8A】
【図8B】
【図8C】
【図8D】
【図8E】
【図8F】
【図9】
【図10】
【図11A】
【図11B】
【図12】
【公開番号】特開2009−122964(P2009−122964A)
【公開日】平成21年6月4日(2009.6.4)
【国際特許分類】
【出願番号】特願2007−296223(P2007−296223)
【出願日】平成19年11月15日(2007.11.15)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【公開日】平成21年6月4日(2009.6.4)
【国際特許分類】
【出願日】平成19年11月15日(2007.11.15)
【出願人】(000004226)日本電信電話株式会社 (13,992)
[ Back to top ]