以下、図面を参照して実施形態について説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。
1.第1実施形態
第1実施形態に係る時系列データ圧縮装置について説明する。
1.1 構成について
1.1.1 全体構成について
第1実施形態に係る時系列データ圧縮装置を含む全体システムの構成例について、図1を用いて説明する。図1は、第1実施形態に係る時系列データ圧縮装置を含む時系列データ圧縮システムの構成を示すブロック図である。
図1に示すように、時系列データ圧縮システム1は、携帯端末2、及びIoT(Internet of Thing)機器3を備えている。
携帯端末2は、例えばBluetooth(登録商標)等の無線通信規格によってIoT機器3と無線通信可能な機器である。携帯端末2は、当該無線通信によって通信可能な程度に圧縮されたデータを取得する旨の要求(データ取得要求)をIoT機器3に発行する。また、携帯端末2は、当該データ取得要求に応じてIoT機器3で生成されたデータをIoT機器3から受信する。
IoT機器3は、携帯端末2からのデータ取得要求に応じてデータ(例えば時系列データ)を圧縮し、携帯端末2に転送する機能を有する。IoT機器3は、時系列データ圧縮装置10、フラッシュメモリ20、及びセンサ30を備えている。時系列データ圧縮装置10、フラッシュメモリ20、及びセンサ30は、例えばそれらの組み合わせにより1つの半導体装置を構成してもよく、その例としては、IoT機器3に内蔵されるアプリケーションプロセッサ等が挙げられる。IoT機器3としては、例えば、スマートショッピングにおけるICタグ、ウェアラブル端末、及びデジタル家電等が挙げられる。
フラッシュメモリ20は、複数のメモリセルトランジスタを備え、データを不揮発に記憶する。フラッシュメモリ20は、時系列データ圧縮装置10と接続され、時系列データ圧縮装置10からデータを書込まれる。フラッシュメモリ20は、例えばNOR型フラッシュメモリであるが、これに限られず、NAND型フラッシュメモリ等のその他の形態のメモリも適用可能である。
センサ30は、センサデータを時系列にサンプリングし、時系列データを生成する。センサ30は、時系列データ圧縮装置10と接続され、時系列データ圧縮装置10に時系列データを転送する。センサ30は、例えば加速度計、ジャイロ、及び地磁気センサであり、それぞれ加速度、角速度、及び磁場に関する時系列データを生成する。センサ30は、これに限らず、温湿度センサ、圧力センサ、及び心電センサ等種々のセンサが適用可能であり、それぞれ温湿度、圧力、心拍数等に関する時系列データを生成可能である。
時系列データ圧縮装置10は、時系列データを圧縮して圧縮済みデータを生成し、当該圧縮済みデータを携帯端末2に転送する。時系列データ圧縮装置10は、システムバス11、プロセッサ(CPU)12、システムメモリ13、データ圧縮回路14、外部入出力インタフェース回路15、フラッシュメモリインタフェース回路16、及びセンサインタフェース回路17を備えている。
システムバス11は、CPU12、システムメモリ13、データ圧縮回路14、外部入出力インタフェース回路15、フラッシュメモリインタフェース回路16、及びセンサインタフェース回路17の間の各種データ、命令等の通信経路として機能する。
CPU12は、時系列データ圧縮装置10全体の動作を制御する。CPU12は、携帯端末2からデータ取得要求を受信した際には、データ圧縮回路14に、時系列データを圧縮して圧縮済みデータを生成する命令を発行する。また、CPU12は、圧縮済みデータが生成されると、外部入出力インタフェース回路15に対し、圧縮済みデータを携帯端末2に転送する命令を発行する。また、CPU12は、例えば、フラッシュメモリ20に圧縮済みデータを書込むための命令を発行してもよい。
システムメモリ13は、例えばDRAM等の半導体メモリであり、センサ30から転送された時系列データ、及びデータ圧縮回路14から転送された圧縮済みデータの一時保存領域として使用される。また、システムメモリ13は、例えば、フラッシュメモリ20を管理するためのファームウェア等を保持する。
データ圧縮回路14は、例えば内蔵するクロックに基づいて動作する。データ圧縮回路14は、CPU12から発行された圧縮済みデータを生成する旨の命令に応じて、システムメモリ13に格納された時系列データを読み出し、当該時系列データに基づいて圧縮済みデータを生成する。データ圧縮回路14は、生成した圧縮済みデータを、システムメモリ13に格納する。
外部入出力インタフェース回路15は、時系列データ圧縮装置10と、携帯端末2との間の無線通信を司る。時系列データ圧縮装置10と携帯端末2との間の無線通信には、例えば、Bluetooth(登録商標)等の無線通信規格が適用可能である。外部入出力インタフェース回路15は、携帯端末2から受信したデータ取得要求を、システムバス11を介してCPU12へ転送する。また、外部入出力インタフェース回路15は、CPU12からの命令に応答して、システムメモリ13内の圧縮済みデータを、システムバス11を介して携帯端末2へ転送する。
フラッシュメモリインタフェース回路16は、例えばフラッシュメモリ用バスを介してフラッシュメモリ20と接続され、時系列データ圧縮装置10とフラッシュメモリ20との間の通信を司る。フラッシュメモリインタフェース回路16は、CPU12から受信した命令をフラッシュメモリ20に転送する。また、フラッシュメモリインタフェース回路16は、データの書込み時には、システムメモリ13内の書込み用データをフラッシュメモリ20へ転送する。更に、フラッシュメモリインタフェース回路16は、データの読出し時には、フラッシュメモリ20から読み出されたデータを、システムバス11を介してシステムメモリ13へ転送する。
センサインタフェース回路17は、例えばシリアルバスを介してセンサ30と接続され、時系列データ圧縮装置10とセンサ30との間の通信を司る。センサインタフェース回路17は、センサ30から送信される時系列データを、システムバス11を介してシステムメモリ13へ転送する。
図2は、第1実施形態に係る時系列データ圧縮装置に用いられるデータの一例を示すダイアグラムである。図2(a)は、時系列データの一例を示し、図2(b)は、圧縮済みデータの一例を示している。
図2(a)に示すように、時系列データ100aは、時刻データTと、当該時刻データTが示す時刻に取得されたセンサデータX(T)とが対応付けられた2次元の座標データ(T、X(T))の組が時系列に、例えば昇順に並ぶ。図2(a)の例では、時系列データ100aは、時刻0から時刻31までの32点の座標データが含まれるが、これに限らず、16点、64点等、任意の数の座標データが含まれていてもよい。時刻データTは、例えば、整数値であり、センサデータX(T)に対応するインデックスであってもよい。センサデータX(T)は、例えば実数値であり、時刻データTに対してビット数が大きい。センサデータX(T)は、例えば16ビット、又は24ビット程度のビット数で出力される。
図2(b)に示すように、圧縮済みデータ100bは、時刻データTに関する情報を含むビット列と、センサデータX(T)に関する情報に対応するビット列との組を含む。各ビット列は、例えば独立に符号化して生成される。
1.1.2 データ圧縮回路の構成について
次に、第1実施形態に係る時系列データ圧縮装置のデータ圧縮回路の構成について、図3を用いて説明する。図3は、第1実施形態に係る時系列データ圧縮装置のデータ圧縮回路の構成を示すブロック図である。
図3に示すように、データ圧縮回路14は、通信ユニット141、折れ線近似ユニット142、データバッファ143、記憶ユニット144、及び符号化ユニット145を備えている。
通信ユニット141は、例えばDAMC(Directed Memory Access Controller)であり、CPU12から発行される時系列データを圧縮する命令を受信する。通信ユニット141は、例えば、当該命令に応じて、システムバス11を介してシステムメモリ13内の時系列データを読み出す。通信ユニット141は、読み出した時系列データを、折れ線近似ユニット142に転送する。また、通信ユニット141は、圧縮済みデータを符号化ユニット145から受信すると、当該圧縮済みデータをシステムメモリ13に転送する。
折れ線近似ユニット142は、時系列データを通信ユニット141から受信すると、受信した時系列データについて折れ線近似処理を実行する。具体的には、折れ線近似ユニット142は、時系列データ内の座標データの各々が、折れ線の頂点となる座標データ(折れ線頂点座標データ)であるか否かを判定する。折れ線近似ユニット142は、判定の結果、折れ線頂点座標データであると判定された座標データを抽出し、当該抽出した折れ線頂点座標データを順次データバッファ143に出力する。なお、折れ線近似ユニット142が実行する折れ線近似処理の詳細については、後述する。
データバッファ143は、折れ線近似ユニット142によって順次出力された複数の折れ線頂点座標データを記憶する。データバッファ143は、例えば、予め定められた個数の折れ線頂点座標データを1ブロックの折れ線近似後時系列データとして記憶する。折れ線近似後時系列データは、時系列データ内の座標データの一部を折れ線頂点座標データとして含み、例えば、折れ線頂点座標データが時刻について昇順に並ぶ。なお、1ブロックの折れ線近似後時系列データには、例えば、10点、16点、32点、64点等、任意の数の折れ線頂点座標データが含まれていてもよい。
記憶ユニット144は、符号化ユニット145から読出し/書込み可能なメモリである。記憶ユニット144には、複数の符号化テーブルが予め記憶される。複数の符号化テーブルの各々は、符号化ユニット145による符号化処理に応じて読み出される。また、記憶ユニット144は、符号化ユニット145から圧縮済みデータを書込まれてもよい。
符号化ユニット145は、データバッファ143に1ブロック分の折れ線頂点座標データが折れ線近似後時系列データとして蓄積されると、当該折れ線近似後時系列データをデータバッファ143から読み出す。符号化ユニット145は、データバッファ143から1ブロック分の折れ線近似後時系列データを読出すと、当該折れ線近似後時系列データに基づき、符号化対象データを生成する。符号化対象データは、例えば隣接データ間の予測誤差データの組である。符号化ユニット145は、記憶ユニット144に記憶された符号化テーブルを読み出し、生成された符号化対象データに対して当該符号化テーブルに基づく符号化処理を実行する。符号化処理には、可変長符号化方式が適用される。より具体的には、例えば、符号化処理には、ゴロム符号を用いた可変長符号化方式が適用されるが、ゴロム符号に限らず、種々の符号を用いた可変長符号化方式が適用可能である。なお、符号化ユニット145は、符号化対象データ内の時刻データに対応する部分、及びセンサデータに対応する部分の各々に対して、互いに独立に符号化処理を実行する。符号化ユニット145は、符号化処理の結果生成されたビット列の組を、圧縮済みデータとして通信ユニット141に転送する。また、符号化ユニット145は、圧縮済みデータを記憶ユニット144に書込んでもよい。
図4は、第1実施形態に係る時系列データ圧縮装置に用いられるデータの一例を示すダイアグラムである。図4(a)は、折れ線近似後時系列データの一例を示し、図4(b)は、符号化対象データの一例を示している。
図4(a)に示すように、折れ線近似後時系列データ100cは、時系列データ100a内の座標データのうち、折れ線頂点座標データとして抽出された座標データのみを含む。図4(a)の例では、時刻0から時刻31までのうち、時刻0、時刻1、時刻4、時刻5、時刻10、時刻11、時刻15、時刻17、時刻25、及び時刻31の計10点の座標データを折れ線頂点座標データとして含む。つまり、折れ線近似後時系列データ100cは、時系列データ100aから1ブロックとして10点の折れ線頂点座標データを抽出した例である。
図4(b)に示すように、符号化対象データ100dは、例えば、折れ線近似後時系列データ100c内の隣接する折れ線頂点座標データ間の差として生成される。符号化対象データ100bは、時刻予測誤差データdT、及びセンサ予測誤差データdXを含むデータの組(dT、dX)が並ぶ。符号化対象データ100dは、折れ線近似後時系列データ100cに対応して生成される。図4(b)の例では、符号化対象データ100dは、10点の座標データを含む折れ線近似後時系列データ100cから1点少ない9点の座標データを含む。時刻予測誤差データdTは、時刻データTと同様、整数値である。センサ予測誤差データdXは、センサデータX(T)と同様、実数値であり、時刻予測誤差データdTに対してビット数が大きい。センサ予測誤差データdXは、センサデータX(T)と同様、例えば16ビット、又は24ビット程度のビット数で出力される。
図5は、第1実施形態に係る時系列データ圧縮装置に適用される符号化テーブルのうち、時刻予測誤差データdTに対応する符号化テーブルの一例を示すダイアグラムである。図6は、第1実施形態に係る時系列データ圧縮装置に適用される符号化テーブルのうち、センサ予測誤差データdXに対応する符号化テーブルの一例を示すダイアグラムである。図5及び図6に示される符号化テーブル200a及び符号化テーブル200bは、ゴロム符号の符号化テーブルを示す。
図5に示すように、符号化テーブル200aは、時刻予測誤差データdTが取り得る値と、当該時刻予測誤差データdTが取り得る値に割当てられる符号化結果としてのビット列と、当該ビット列の符号長と、を含む。
時刻予測誤差データdTが取り得る値は、時刻データTが整数値である場合、正の整数となるため、1以上の整数が昇順に並ぶ。ビット列及び符号長は、時刻予測誤差データdTが取り得る値に対して、パラメタK(Kは0以上の整数)の値に応じて割り当てられる。図5の例では、時刻予測誤差データdTの値が7の場合、パラメタKとして“0”を選択すると、符号長“7”のビット列“0000001”が割当てられ、パラメタKとして“2”を選択すると、符号長“4”のビット列“0110”が割当てられる。すなわち、符号化テーブル200aは、パラメタKの数の符号化パターンを有する。
また、ビット列は、プリフィックス及びサフィックスに分けられる。プリフィックスは、ビット列の前半部分に対応し、時刻予測誤差データdTの値が大きくなるほど、その符号長が長くなる。また、プリフィックスは、パラメタKの値が大きくなるほど、同一のプリフィックスが割当てられる時刻予測誤差データdTの範囲が広くなる。サフィックスは、ビット列の後半部分に対応し、同一のプリフィックスが割当てられた異なる時刻予測誤差データdTを区別する。サフィックスは、パラメタKの値が大きくなるほど、サフィックスの符号長が長くなる。
すなわち、符号化テーブル200aに示されるゴロム符号は、符号化対象データ内の時刻予測誤差データdTの値が0に近い範囲で分布する場合、符号化対象データ内の時刻予測誤差データdTの組を短いビット列で符号化することができる。
また、図6に示すように、符号化テーブル200bは、センサ予測誤差データdXが取り得る値と、当該センサ予測誤差データdXが取り得る値に割当てられる符号化結果としてのビット列と、当該ビット列の符号長と、を含む。符号化テーブル200bは、時刻予測誤差データdTが取り得る値の代わりにセンサ予測誤差データdXの対応値が設定されている点を除いて、図5に示される符号化テーブル200aと同一である。センサ予測誤差データdXの対応値は、例えば、0、正の整数、及び負の整数が絶対値順に昇順に並ぶ。符号化テーブル200bに設定されるセンサ予測誤差データdXの対応値は、例えば、センサ予測誤差データdXをセンサデータX(T)の解像度で割った値に対応する。なお、センサ予測誤差データdXとセンサ予測誤差データdXの対応値との対応関係の設定の仕方は、上述の設定の仕方によらず、任意の設定の仕方が適用可能である。
1.1.3 折れ線近似ユニットの機能構成の詳細について
次に、第1実施形態に係る時系列データ圧縮装置の折れ線近似ユニットの機能構成の詳細について説明する。
1.1.3.1 折れ線近似ユニットの機能について
図7は、第1実施形態に係る時系列データ圧縮装置の折れ線頂点座標判定機能の一例を説明するための模式図である。図7に示すように、折れ線近似処理においては、時系列データ内に、評価座標Pc(c、X(c))と、基準座標Ps(s、X(s))とが定義される。評価座標Pcは、例えば、時系列データ内の座標データのうち、折れ線頂点座標データを抽出するための評価対象となる座標データであり、時刻データc及びセンサデータX(c)を含む。基準座標Psは、例えば、評価座標Pcから過去側において折れ線頂点座標データであると判定された直近の座標データであり、時刻データs及びセンサデータX(s)を含む。
折れ線近似ユニット142は、例えば、折れ線頂点座標データを抽出するための、以下の7つの機能を含む。
機能(1−1):評価座標Pcと基準座標Psとを結ぶ線分の傾き(評価値)を示す情報(評価情報)G0、評価値の許容誤差上限値を示す情報(誤差上限情報)G1、評価値の許容誤差下限値を示す情報(誤差下限情報)G2、折れ線判定の傾きの上限値を示す情報(判定上限情報)M1、及び折れ線判定の傾きの下限値を示す情報(判定下限情報)M2を設定する機能。
機能(1−2):評価情報G0、及び判定上限情報M1に基づき、評価値が折れ線判定の傾きの上限値を下回っているか否か(判定1−2)を判定する機能。
機能(1−3):評価情報G0、及び判定下限情報M2に基づき、評価値が折れ線判定の傾きの下限値を上回っているか否か(判定1−3)を判定する機能。
機能(1−4):判定(1−2)の結果及び判定(1−3)の結果のいずれかが否の場合、評価座標Pcの1つ前の時刻の座標データP(c−1)を折れ線頂点座標データとして抽出する機能。
機能(1−5):誤差上限情報G1、及び判定上限情報M1に基づき、評価値の許容誤差上限値が折れ線判定の傾きの上限値を下回っているか否か(判定1−5)を判定する機能。
機能(1−6):誤差下限情報G2、及び判定下限情報M2に基づき、評価値の許容誤差下限値が折れ線判定の傾きの下限値を上回っているか否か(判定1−6)を判定する機能。
機能(1−7):判定(1−5)の結果が真の場合、当該判定上限情報M1を誤差上限情報G1で更新し、判定(1−6)の結果が真の場合、当該判定下限情報M2を誤差下限情報G2で更新する機能。
誤差上限情報G1及び誤差下限情報G2はそれぞれ、図7の例では、評価座標PcのセンサデータX(c)に許容誤差値e(eは実数値)があった場合における、評価情報G0の上限及び下限の情報を示す。判定上限情報M1は、例えば、基準座標Psから評価座標Pcまでの間の座標において、最も小さい傾きを示す誤差上限情報G1が適用される。また、判定下限情報M2は、例えば、基準座標Psから評価座標Pcまでの間の座標において、最も大きい傾きを示す誤差下限情報G2が適用される。
なお、許容誤差値eは、折れ線近似処理の際に予め設定されている値であり、例えば同一の時系列データに対する折れ線近似処理の間、同一の値が適用される。許容誤差値eは、時系列データ毎に固定された値が適用されてもよく、変更されてもよい。
上述の如き機能を奏する折れ線近似処理に用いられる折れ線近似処理アルゴリズムとしては、例えば、第1文献([FAN/SAPA2])のアルゴリズムがある。第1文献[FAN/SAPA2]に関する情報は、次の通りである。
[FAN/SAPA2] McKee, J.J., Evans, N.E., & Owens, F.J., “Efficient implementation of the Fan/SAPA-2 algorithm using fixed point arithmetic”, Automedica. Vol. 16, pp. 109-117. 1994.
なお、第1実施形態に係る折れ線近似ユニットに用いられる折れ線近似処理アルゴリズムでは、評価情報G0、誤差上限情報G1、誤差下限情報G2、判定上限情報M1、及び判定下限情報M2は、傾きの値としてのスカラーとしてではなく、2次元ベクトルとして定義される。例えば、評価情報G0、誤差上限情報G1、誤差下限情報G2、判定上限情報M1、及び判定下限情報M2は、同次座標系における2次元ベクトルとして定義される。同次座標系は、例えばある線分の傾きαがα=x/tの如き分数表現で表される場合、当該傾きαを示す情報を、第1要素を分子x、第2要素を分母tとする座標[x、t]として表現する座標系である。以下の説明では、第1文献[FAN/SAPA2]のアルゴリズムに、上述の同次座標系を適用した折れ線近似処理アルゴリズムを用いるものとして説明する。
つまり、第1実施形態に係る折れ線近似処理アルゴリズムによると、評価情報G0、誤差上限情報G1、誤差下限情報G2は、それぞれ以下のように表される。
G0=[X(c)−X(s)、c−s]
G1=[X(c)−X(s)+e、c−s]
G2=[X(c)−X(s)−e、c−s]
また、判定上限情報M1、及び判定下限情報M2は、便宜的に、それぞれ以下のように表される。
M1=[Xm1、Tm1]
M2=[Xm2、Tm2]
また、機能(1−2)、機能(1−3)、機能(1−5)、及び機能(1−6)は、それぞれ以下の判定(1−2)、判定(1−3)、判定(1−5)、及び判定(1−6)を実行し得る構成によって実現される。
判定(1−2):G0×M1=(X(c)−X(s))Tm1−(c−s)Xm1<0
判定(1−3):G0×M2=(X(c)−X(s))Tm2−(c−s)Xm2>0
判定(1−5):G1×M1=(X(c)−X(s)+e)Tm1−(c−s)Xm1<0
判定(1−6):G2×M2=(X(c)−X(s)−e)Tm2−(c−s)Xm2>0
ここで、演算記号“×”は、2次元ベクトル同士の外積演算を示す記号である。
このように、第1実施形態に係る時系列データ圧縮装置10では、機能(1−2)、機能(1−3)、機能(1−5)、及び機能(1−6)の各々は、1回の外積演算、すなわち2回の乗算を実行し得る2個の乗算器を含む構成によって実現される。
1.1.3.2 折れ線近似ユニットの構成について
図8は、第1実施形態に係る時系列データ圧縮装置の折れ線近似ユニットの構成の一例を説明するための回路図である。図8に示すように、折れ線近似ユニット142は、ステージA、ステージB、及びステージCの3段のパイプラインを含むパイプライン構造を備える。
ステージAは、入力データFIFO(First In First Out)201、及びレジスタ202〜203を備えている。ステージAは、ステージBにおける演算処理及び判定処理に用いられる値が入力データFIFO201、及びレジスタ202〜203に設定されるパイプラインである。
ステージBは、加減算器204〜206、ΔTカウンタ207、レジスタ208〜214、外積回路215〜218、及び判定回路219を備えている。ステージBは、ステージAにおいて設定された値に基づく加減算器204〜206及び外積回路215〜218による演算処理、及び判定回路219による判定(1−2)〜(1−3)、及び判定(1−5)〜(1−6)を含む判定処理が再帰的に実行されるパイプラインである。
ステージCは、出力データFIFO220を備えている。ステージCは、ステージBにおいて実行された判定処理に基づいて、折れ線頂点座標データが出力されるパイプラインである。
入力データFIFO201は、通信ユニット141から時系列データ内を受信し、保持する。入力データFIFO201は、保持している時系列データ内のセンサデータX(T)を対応する時刻データTの昇順に出力する。具体的には、入力データFIFO201は、判定回路219によって判定(1−2)及び判定(1−3)の結果がいずれも真であると判定され、かつ入力データFIFO201内に時系列データがあった場合、出力されるセンサデータX(T)を時刻の昇順に更新する。出力されるセンサデータX(T)は、評価座標PcのセンサデータX(c)としてレジスタ208及び加減算器204〜206の各々に出力される。
レジスタ202は、レジスタ209からセンサデータX(T)を受信する。レジスタ202は、当該センサデータX(T)を受信すると、基準座標PsのセンサデータX(s)として保持する。レジスタ202は、保持しているセンサデータX(s)を、加減算器204〜206の各々に出力する。
レジスタ203は、許容誤差値eを予め保持する。レジスタ203は、保持している許容誤差値eを、加減算器205及び206の各々に出力する。
加減算器204は、入力データFIFO201から出力されたセンサデータX(c)、及びレジスタ202から出力されたセンサデータX(s)を、それぞれ第1入力値及び第2入力値として受信する。加減算器204は、第1入力値に対して第2入力値を減じる減算を実行し、実行結果の値(X(c)−X(s))をレジスタ210に出力する。
加減算器205は、入力データFIFO201から出力されたセンサデータX(c)、レジスタ202から出力されたセンサデータX(s)、及びレジスタ203から出力された許容誤差値eを、それぞれ第1入力値、第2入力値、及び第3入力値として受信する。加減算器205は、第1入力値に対して第2入力値を減じ、更に第3入力値を加える加減算を実行し、実行結果の値(X(c)−X(s)+e)をレジスタ211に出力する。
加減算器206は、入力データFIFO201から出力されたセンサデータX(c)、レジスタ202から出力されたセンサデータX(s)、及びレジスタ203から出力された許容誤差値eを、それぞれ第1入力値、第2入力値、及び第3入力値として受信する。加減算器205は、第1入力値に対して第2入力値を減じ、更に第3入力値を減じる加減算を実行し、実行結果の値(X(c)−X(s)−e)をレジスタ212に出力する。
ΔTカウンタ207は、レジスタ208に保持されているセンサデータX(c)に対応する時刻データcと、レジスタ202に保持されているセンサデータX(s)に対応する時刻データsとに基づき、時刻データc及び(c−1)と、値(c−s)とを保持する。
ΔTカウンタ207は、保持している値(c−s)をノードn0〜n2の各々に出力する。ΔTカウンタ207は、判定回路219によって判定(1−2)及び判定(1−3)の結果がいずれも真であると判定され、かつ入力データFIFO201内に出力される予定の時系列データがあった場合、保持している時刻データc及び(c−1)と、値(c−s)とをそれぞれ1ずつカウントアップする。ΔTカウンタ207は、判定回路219によって判定(1−2)及び判定(1−3)の結果がいずれも真であると判定され、かつ入力データFIFO201内に出力される予定の時系列データがなかった場合、保持している時刻データcを出力データFIFO220に出力する。ΔTカウンタ207は、判定回路219によって判定(1−2)及び判定(1−3)の結果のいずれかが否であると判定された場合、保持している時刻データ(c−1)を出力データFIFO220に出力すると共に、保持している値(c−s)を値“1”に更新する。
レジスタ208は、入力データFIFO201からセンサデータX(c)を受信し、保持する。また、レジスタ208は、判定回路219によって判定(1−2)及び判定(1−3)の結果がいずれも真であると判定された場合、保持しているセンサデータX(c)をレジスタ209に出力する。また、レジスタ208は、判定回路219によって判定(1−2)及び判定(1−3)の結果がいずれも真であると判定され、かつ入力データFIFO201内に出力される予定の時系列データがあった場合、保持しているセンサデータX(c)をレジスタ209に出力した後、入力データFIFO201から新たに出力されたセンサデータX(c+1)を受信し、保持する値を更新する。
レジスタ209は、レジスタ208からセンサデータX(c)を受信するまでは、その1つ前の時刻のセンサデータX(c−1)を保持している。レジスタ209は、判定回路219によって判定(1−2)及び判定(1−3)の結果のいずれかが否であると判定された場合、その際に保持しているセンサデータX(c−1)を、レジスタ202及び出力データFIFO220に出力する。
また、レジスタ209は、判定回路219によって判定(1−2)及び判定(1−3)の結果がいずれも真であると判定された場合、センサデータX(c)をレジスタ208から受信し、保持する値を更新する。また、レジスタ209は、判定回路219によって判定(1−2)及び判定(1−3)の結果がいずれも真であると判定され、かつ入力データFIFO201内に出力される予定の時系列データが無かった場合、更新によって保持しているセンサデータX(c)を出力データFIFO220に出力する。
レジスタ210は、加減算器204から値(X(c)−X(s))を受信し、保持する。レジスタ210は、保持している値(X(c)−X(s))を、ノードn0に出力する。
ノードn0には、ΔTカウンタ207から値(c−s)が、レジスタ210から値(X(c)−X(s))がそれぞれ入力される。ノードn0では、当該入力された各値が同次座標系のベクトルである評価情報G0=[X(c)−X(s)、c−s]として統合され、外積回路215〜216に出力される。
レジスタ211は、加減算器205から値(X(c)−X(s)+e)を受信し、保持する。レジスタ211は、保持している値(X(c)−X(s)+e)を、ノードn1に出力する。
ノードn1には、ΔTカウンタ207から値(c−s)が、レジスタ211から値(X(c)−X(s)+e)がそれぞれ入力される。ノードn1では、当該入力された各値が同次座標系のベクトルである誤差上限情報G1=[X(c)−X(s)+e、c−s]として統合され、外積回路217に出力される。なお、誤差上限情報G1は、判定回路219による判定(1−2)及び判定(1−3)の結果がいずれも真であり、かつ判定(1−5)の結果が否であった場合、レジスタ213に出力される。
レジスタ212は、加減算器206から値(X(c)−X(s)−e)を受信し、保持する。レジスタ212は、保持している値(X(c)−X(s)−e)を、ノードn2に出力する。
ノードn2には、ΔTカウンタ207から値(c−s)が、レジスタ212から値(X(c)−X(s)−e)がそれぞれ入力される。ノードn2では、当該入力された各値が同次座標系のベクトルである誤差下限情報G2=[X(c)−X(s)−e、c−s]として統合され、外積回路218に出力される。なお、誤差下限情報G2は、判定回路219による判定(1−2)及び判定(1−3)の結果がいずれも真であり、かつ判定(1−6)の結果が否であった場合、レジスタ214に出力される。
レジスタ213は、判定上限情報M1を保持する。レジスタ213は、保持する判定上限情報M1を外積回路215及び217に出力する。
具体的には、レジスタ213は、判定回路219による判定(1−2)及び判定(1−3)の結果がいずれも真であり、かつ判定(1−5)の結果が真であった場合、保持する判定上限情報M1を、ノードn1から出力される誤差上限情報G1で更新する。また、レジスタ213は、判定回路219によって判定(1−2)及び判定(1−3)の結果のいずれかが否であった場合、保持する判定上限情報M1をM1=[1、0]に更新する。
レジスタ214は、判定下限情報M2を保持する。レジスタ214は、保持する判定下限情報M2を外積回路216及び218に出力する。
具体的には、レジスタ214は、判定回路219による判定(1−2)及び判定(1−3)の結果がいずれも真であり、かつ判定(1−6)の結果が真であった場合、保持する判定下限情報M2を、ノードn2から出力される誤差下限情報G2で更新する。また、レジスタ214は、判定回路219による判定(1−2)及び判定(1−3)の結果のいずれかが否であった場合、保持する判定下限情報M2をM2=[−1、0]に更新する。
外積回路215は、ノードn0から出力された評価情報G0、及びレジスタ213から出力された判定上限情報M1をそれぞれ第1入力ベクトル及び第2入力ベクトルとして受信し、当該第1入力ベクトル及び第2入力ベクトルに基づいて外積演算を実行する。外積回路215は、当該外積演算の結果、評価情報G0と判定上限情報M1との外積値が負であるか否かの情報(G0×M1の符号情報)を判定回路219に出力する。
外積回路216は、ノードn0から出力された評価情報G0、及びレジスタ214から出力された判定下限情報M2をそれぞれ第1入力ベクトル及び第2入力ベクトルとして受信し、当該第1入力ベクトル及び第2入力ベクトルに基づいて外積演算を実行する。外積回路216は、当該外積演算の結果、評価情報G0と判定下限情報M2との外積値が正であるか否かの情報(G0×M2の符号情報)を判定回路219に出力する。
外積回路217は、ノードn1から出力された誤差上限情報G1、及びレジスタ213から出力された判定上限情報M1をそれぞれ第1入力ベクトル及び第2入力ベクトルとして受信し、当該第1入力ベクトル及び第2入力ベクトルに基づいて外積演算を実行する。外積回路217は、当該外積演算の結果、誤差上限情報G1と判定上限情報M1との外積値が負であるか否かの情報(G1×M1の符号情報)を判定回路219に出力する。
外積回路218は、ノードn2から出力された誤差下限情報G2、及びレジスタ214から出力された判定下限情報M2をそれぞれ第1入力ベクトル及び第2入力ベクトルとして受信し、当該第1入力ベクトル及び第2入力ベクトルに基づいて外積演算を実行する。外積回路218は、当該外積演算の結果、誤差下限情報G2と判定下限情報M2との外積値が正であるか否かの情報(G2×M2の符号情報)を判定回路219に出力する。
判定回路219は、外積回路215から入力されたG0×M1の符号情報に基づき、判定(1−2)を実行する。具体的には、判定回路219は、G0×M1の符号が負(G0×M1<0)である場合、評価座標Pcと基準座標Psとを結ぶ線分の傾き(評価値)が折れ線判定の傾きの上限値を下回っている(判定(1−2)の結果は真である)、と判定する。一方、判定回路219は、G0×M1の符号が0以上(G0×M1≧0)である場合、評価値が折れ線判定の傾きの上限値を上回っている(判定(1−2)の結果は否である)、と判定する。また、判定回路219は、外積回路216から入力されたG0×M2の符号情報に基づき、判定(1−3)を実行する。具体的には、判定回路219は、G0×M2の符号が正(G0×M2>0)である場合、評価値が折れ線判定の傾きの下限値を上回っている(判定(1−3)の結果は真である)、と判定する。一方、判定回路219は、G0×M2の符号が0以下(G0×M2≦0)である場合、評価値が折れ線判定の傾きの下限値を下回っている(判定(1−3)の結果は否である)、と判定する。すなわち、判定回路219は、評価座標P(c)に対する判定(1−2)の結果及び判定(1−3)の結果がいずれも真である場合、評価座標P(c)の1つ前の時刻(c−1)の座標P(c−1)が折れ線頂点座標データでないと判定する。また、判定回路219は、評価座標P(c)に対する判定(1−2)の結果及び判定(1−3)の結果のいずれかが否である場合、座標P(c−1)が折れ線頂点座標データであると判定する。
また、判定回路219は、外積回路217から入力されたG1×M1の符号情報に基づき、判定(1−5)を実行する。具体的には、判定回路219は、G1×M1の符号が負(G1×M1<0)である場合、評価値の許容誤差上限値が折れ線判定の傾きの上限値を下回っている(判定(1−5)の結果は真である)、と判定する。一方、判定回路219は、G1×M1の符号が0以上(G1×M1≧0)である場合、評価値の許容誤差上限値が折れ線判定の傾きの上限値を上回っている(判定(1−5)の結果は否である)、と判定する。すなわち、判定回路219は、判定(1−5)の結果が真である場合、判定上限情報M1を誤差上限情報G1で更新すべきであると判定し、判定(1−5)の結果が否である場合、判定上限情報M1を現状のまま維持すべきであると判定する。
判定回路219は、外積回路218から入力されたG2×M2の符号情報に基づき、判定(1−6)を判定する。具体的には、判定回路219は、G2×M2の符号が正(G2×M2>0)である場合、評価値の許容誤差下限値が折れ線判定の傾きの下限値を上回っている(判定(1−6)の結果は真である)、と判定する。また、判定回路219は、G2×M2の符号が0以下(G2×M2≦0)である場合、評価値の許容誤差下限値が折れ線判定の傾きの下限値を下回っている(判定(1−6)の結果は否である)、と判定する。すなわち、判定回路219は、判定(1−6)の結果が真である場合、判定下限情報M2を誤差下限情報G2で更新すべきであると判定し、判定(1−6)の結果が否である場合、判定下限情報M2を現状のまま維持すべきであると判定する。
出力データFIFO220は、判定回路219によって判定(1−2)及び判定(1−3)の結果のいずれかが否であると判定された場合、ΔTカウンタ207から時刻データ(c−1)を受信すると共に、レジスタ209からセンサデータX(c−1)を受信する。また、出力データFIFO220は、判定回路219によって判定(1−2)及び判定(1−3)の結果がいずれも真であると判定され、かつ入力データFIFO201内に出力される予定の時系列データがない場合、ΔTカウンタ207から時刻データcを受信すると共に、レジスタ209からセンサデータX(c)を受信する。出力データFIFO220は、受信した時刻データ及びセンサデータの組を折れ線頂点座標データとしてデータバッファ143に出力する。
図9は、第1実施形態に係る時系列データ圧縮装置の外積回路の構成の一例を説明するための回路図である。図9に示すように、外積回路215〜218は、同一の構成を備えており、例えば乗算器301〜302、及び比較器303を備えている。図9の例では、外積回路215〜218には、同次座標系のベクトルB1=[X1、T1]及びB2=[X2、T2]が、それぞれ第1入力ベクトル及び第2入力ベクトルとして入力されている場合を一例として示している。第1入力ベクトルB1は、例えば評価情報G0、誤差上限情報G1、又は誤差下限情報G2である。第2入力ベクトルB2は、例えば判定上限情報M1、又は判定下限情報M2である。
乗算器301は、第1入力ベクトルB1の第1成分X1と、第2入力ベクトルB2の第2成分T2とが、それぞれ第1入力値及び第2入力値として入力される。乗算器301は、第1入力値X1及び第2入力値T2の乗算結果X1T2を比較器303に出力する。
乗算器302は、第2入力ベクトルB2の第1成分X2と、第1入力ベクトルB1の第2成分T1とが、それぞれ第1入力値及び第2入力値として入力される。乗算器302は、第1入力値X2及び第2入力値T1の乗算結果X2T1を比較器303に出力する。
比較器303は、乗算器301から出力された値X1T2と、乗算器302から出力された値X2T1との大小を比較し、その比較結果(B1×B2の符号)を出力する。比較器303は、比較の結果、値X1T2が値X2T1よりも小さい場合、B1×B2の符号が負(B1×B2<0)であると判定し、例えばH(High)レベルの信号をB1×B2の符号情報として判定回路219に出力する。一方、比較器303は、比較の結果、値X1T2が値X2T1以上である場合、B1×B2の符号が0又は正(B1×B2≧0)であると判定し、例えばL(Low)レベルの信号をB1×B2の符号情報として判定回路219に出力する。
1.1.4 符号化ユニットの機能構成の詳細について
次に、第1実施形態に係る時系列データ圧縮装置10の符号化ユニットの機能構成の詳細について説明する。
符号化ユニット145は、例えば、符号化対象データを符号化し、圧縮済みデータを生成するための、以下の3つの機能を含む。
機能(2−1):時刻予測誤差データdTにパラメタKの異なる複数の符号化テーブルの各々を適用した場合において生成されるビット列の符号長同士を比較し、時刻予測誤差データdTを最短の符号長で符号化するパラメタKtを決定する機能。
機能(2−2):センサ予測誤差データdXにパラメタKの異なる複数の符号化テーブルの各々を適用した場合において生成されるビット列の符号長同士を比較し、センサ予測誤差データdXを最短の符号長で符号化するパラメタKxを決定する機能。
機能(2−3):機能(2−1)で決定されたパラメタKtの符号化テーブルと、機能(2−2)で決定されたパラメタKxの符号化テーブルとを符号化対象データに適用して、圧縮済みデータとして出力する機能。
符号化ユニット145は、このような機能(2−1)〜(2−3)を含むことにより、符号化対象データの性質に依らず、圧縮済みデータのデータサイズが最も小さくなるパラメタKt及びパラメタKxの符号化テーブルを選択する。そして、符号化ユニット145は、上述の如き最適なパラメタKt及びパラメタKxの選択を、1ブロックごとに適応的に変更し、符号化処理を実行する。
図10は、第1実施形態に係る時系列データ圧縮装置の符号化ユニットの一例を説明するためのブロック図である。図10に示すように、符号化ユニット145は、変換回路401、セレクタ402、及び可変長符号化回路403を備えている。
変換回路401は、データバッファ143から1ブロック分の折れ線近似後時系列データを読み出し、当該折れ線近似後時系列データを符号化対象データに変換する。変換回路401は、符号化対象データをセレクタ402及び可変長符号化回路403に転送する。
セレクタ402は、符号化対象データを変換回路401から受信すると、例えば記憶ユニット144からパラメタKの異なる複数の符号化テーブルを読み出す。セレクタ402は、当該読み出した複数の符号化テーブルの各々に基づいて生成される圧縮済みデータの符号長を算出する。つまり、セレクタ402は、符号化テーブル内の符号長に関する情報に基づき、圧縮済みデータを生成することなく全てのパラメタKの場合における符号長を算出する。セレクタ402は、算出した複数の符号長を比較し、比較の結果最も短い符号長が算出された最適なパラメタに対応する符号化テーブルを、最適な符号化テーブルとして可変長符号化回路403に転送する。
より具体的には、例えば、セレクタ402は、記憶ユニット144からパラメタKの異なる複数の符号化テーブルを順次読出す。セレクタ402は、読み出した符号化テーブル内の符号長の情報を参照することにより、可変長符号化処理を実行せずに、可変長符号化処理を実行した場合に得られる圧縮済みデータの符号長を算出する。セレクタ402は、当該符号長の算出を、記憶ユニット144に保持されている全てのパラメタKについて実行し、最も符号長が短くなる符号化テーブルを抽出する。なお、符号長算出処理及び最適な符号化テーブルの抽出処理は、符号化対象データの時刻予測誤差データdTとセンサ予測誤差データdXとについて独立に実行される。すなわち、セレクタ402は、例えば、上述の機能(2−1)及び機能(2−2)を有する構成である。
可変長符号化回路403は、変換回路401から符号化対象データを、セレクタ402から最適な符号化テーブルを、それぞれ受信する。可変長符号化回路403は、当該最適な符号化テーブルに基づいて符号化対象データを可変長符号化し、圧縮済みデータを生成する。可変長符号化回路403は、生成された圧縮済みデータを通信ユニット141に転送する。
なお、可変長符号化回路403は、当該可変長符号化処理を、符号化対象データの時刻予測誤差データdTとセンサ予測誤差データdXについて独立に実行する。すなわち、可変長符号化回路403は、例えば、上述の機能(2−3)を有する構成である。
1.2 動作について
次に、第1実施形態に係る時系列データ圧縮装置の動作について説明する。
1.2.1 時系列データ圧縮システム全体の動作について
まず、時系列データ圧縮システム全体の動作について、図11を用いて説明する。図11は、第1実施形態に係る時系列データ圧縮システム1の全体動作を示すフローチャートである。
図11に示すように、ステップS10において、センサ30は、時系列データを取得する。センサ30は、取得した時系列データをセンサインタフェース回路17に転送する。CPU12は、センサインタフェース回路17に転送された時系列データを、システムバス11を介してシステムメモリ13に書込む。
ステップS30において、携帯端末2は、IoT機器3にデータ取得要求を発行する。時系列データ圧縮装置10の外部入出力インタフェース回路15は、当該データ取得要求を受信する。外部入出力インタフェース回路15は、システムバス11を介して、データ取得要求をCPU12に転送する。
CPU12は、データ取得要求を受信すると、データ圧縮回路14に圧縮済みデータを生成する旨の命令を発行する。データ圧縮回路14の通信ユニット141は、当該命令を受信すると、システムメモリ13から時系列データを読み出して折れ線近似ユニット142に転送する。
ステップS50において、折れ線近似ユニット142は、時系列データを受信すると、当該時系列データに対して折れ線近似処理を実行する。折れ線近似ユニット142は、折れ線近似処理の結果、時系列データ内の折れ線頂点座標データを抽出し、データバッファ143に転送する。データバッファ143は、時系列データ内の折れ線頂点座標データを、1ブロックの折れ線近似後時系列データとして記憶する。
ステップS70において、符号化ユニット145は、データバッファ143内に蓄積された1ブロックの折れ線近似後時系列データを読出し、可変長符号化処理を実行する。符号化ユニット145は、可変長符号化処理の結果、圧縮済みデータを生成し、通信ユニット141に転送する。通信ユニット141は、圧縮済みデータを受信すると、当該圧縮済みデータをシステムメモリ13に転送すると共に、圧縮済みデータを生成した旨の応答をCPU12に発行する。
ステップS90において、CPU12は、圧縮済みデータを生成した旨の応答を受信すると、システムメモリ13から圧縮済みデータを読出し、データ取得要求に対する応答として、外部入出力インタフェース回路15を介して携帯端末2に転送する。
以上により、時系列データ圧縮システム1の全体動作が終了する。
1.2.2 折れ線近似処理の際の動作について
次に、第1実施形態に係る折れ線近似処理の際の動作について、図12を用いて説明する。図12は、第1実施形態に係る時系列データ圧縮装置における折れ線近似処理の際の動作を示すフローチャートである。なお、以下の説明では、入力データFIFO201は、通信ユニット141から時系列データを入力されており、レジスタ203は、許容誤差値eを固定値として予め保持しているものとして説明する。
図12に示すように、ステップS51において、折れ線近似ユニット142は、ΔTカウンタ207、及びレジスタ213〜214に保持されている値を初期化する。具体的には、ΔTカウンタ207には時刻データc、時刻データ(c−1)、及び値(c−s)の初期値が、レジスタ213には判定上限情報M1の初期値が、レジスタ214には判定下限情報M2の初期値が、それぞれ以下に示す通り設定される。
c=1、c−1=1−1=0、c−s=1−0=1
M1=[Xm1、Tm1]=[1、0]
M2=[Xm2、Tm2]=[−1、0]
ステップS51は、機能(1−1)を実行するための動作に対応する。
ステップS52において、折れ線近似ユニット142は、時系列データの最初の座標(0、X(0))を折れ線近似座標データとして出力する。具体的には、入力データFIFO201は、最初のセンサデータX(0)(T=0)をレジスタ208に出力する。レジスタ208は、受信したセンサデータX(0)をレジスタ209に出力する。レジスタ209は、受信したセンサデータX(0)を保持すると共に、レジスタ202及び出力データFIFO220に出力する。レジスタ202は、受信したセンサデータX(0)を基準座標PsのセンサデータX(s)(s=0)として保持する。ΔTカウンタ207は、時刻データ(c−1=0)を出力データFIFO220に出力する。出力データFIFO220は、受信した時刻データ“0”及びセンサデータX(0)の組(0、X(0))を折れ線頂点座標データとしてデータバッファ143に出力する。
ステップS52は、機能(1−4)を実行するための動作に対応する。
続いて、折れ線近似ユニット142は、以降の各座標データが折れ線頂点座標データであるか否かを判定するためのループ処理に入る準備をする。具体的には、入力データFIFO201は、次のセンサデータX(1)(T=1)をレジスタ208、及び加減算器204〜206に出力する。レジスタ208は、受信したセンサデータX(1)を保持する。また、レジスタ202は、保持しているセンサデータX(0)を加減算器204〜206に出力する。レジスタ203は、保持している許容誤差値eを加減算器205〜206に出力する。
加減算器204は、受信したセンサデータX(1)及びセンサデータX(0)に基づいて加減算を実行し、値(X(1)−X(0))をレジスタ210に出力する。レジスタ210は、受信した値(X(1)−X(0))を保持する。
加減算器205は、受信したセンサデータX(1)、センサデータX(0)、及び許容誤差値eに基づいて加減算を実行し、値(X(1)−X(0)+e)をレジスタ211に出力する。レジスタ211は、受信した値(X(1)−X(0)+e)を保持する。
加減算器206は、受信したセンサデータX(1)、センサデータX(0)、及び許容誤差値eに基づいて加減算を実行し、値(X(1)−X(0)−e)をレジスタ212に出力する。レジスタ212は、受信した値(X(1)−X(0)−e)を保持する。
以上でループ処理に入る準備が完了し、以降の処理において、ループ処理が実行される。なお、以下の説明では、入力データFIFO201は、評価座標PcのセンサデータX(c)を出力しているものとする。レジスタ202は、基準座標PsのセンサデータX(s)を保持しているものとする。ΔTカウンタ207は、時刻データc及び(c−1)と、値(c−s)を保持しているものとする。レジスタ208は、センサデータX(c)を保持し、レジスタ209は、センサデータX(c−1)を保持しているものとする。レジスタ210〜212は、それぞれ値(X(c)−X(s))、(X(c)−X(s)+e)、及び(X(c)−X(s)−e)を保持しているものとする。レジスタ213は、判定上限情報M1=[Xm1、Tm1]を保持し、レジスタ214は、判定下限情報M2=[Xm2、Tm2]を保持しているものとする。
ステップS53において、折れ線近似ユニット142は、4つの外積演算を並列して同時に実行する。
具体的には、ΔTカウンタ207は、保持している値(c−s)をノードn0〜n2の各々に出力する。レジスタ210は、保持している値(X(c)−X(s))をノードn0に出力する。レジスタ211は、保持している値(X(c)−X(s)+e)をノードn1に出力する。レジスタ212は、保持している値(X(c)−X(s)−e)をノードn2に出力する。ノードn0は、受信した値(c−s)及び値(X(c)−X(s))を統合し、評価情報G0=[X(c)−X(s)、c−s]として外積回路215及び216に出力する。ノードn1は、受信した値(c−s)及び値(X(c)−X(s)+e)を統合し、誤差上限情報G1=[X(c)−X(s)+e、c−s]として外積回路217に出力する。ノードn2は、受信した値(c−s)及び値(X(c)−X(s)−e)を統合し、誤差下限情報G2=[X(c)−X(s)−e、c−s]として外積回路218に出力する。レジスタ213は、保持している判定上限情報M1を外積回路215及び217に出力する。レジスタ214は、保持している判定下限情報M2を外積回路216及び218に出力する。
外積回路215は、受信した評価情報G0及び判定上限情報M1に基づいて外積演算G0×M1を実行し、G0×M1の符号情報を判定回路219に出力する。外積回路216は、受信した評価情報G0及び判定下限情報M2に基づいて外積演算G0×M2を実行し、G0×M2の符号情報を判定回路219に出力する。外積回路217は、受信した誤差上限情報G1及び判定上限情報M1に基づいて外積演算G1×M1を実行し、G1×M1の符号情報を判定回路219に出力する。外積回路218は、受信した誤差下限情報G2及び判定下限情報M2に基づいて外積演算G2×M2を実行し、G2×M2の符号情報を判定回路219に出力する。つまり、外積回路215〜218による4つの外積演算(8つの乗算)は、同時に実行される。
ステップS54において、折れ線近似ユニット142は、判定(1−2)及び判定(1−3)を実行する。具体的には、判定回路219は、受信したG0×M1の符号情報に基づき、G0×M1が負(G0×M1<0)であるか否かを判定する。また、判定回路219は、受信したG0×M2の符号情報に基づき、G0×M2が正(G0×M2>0)であるか否かを判定する。判定回路219は、判定(1−2)及び判定(1−3)の結果、G0×M1<0かつG0×M2>0であると判定した場合(ステップS54;yes)、基準座標Psと評価座標Pcとの間に折れ線は無いと判定し、ステップS57に進む。一方、判定回路219は、G0×M2≧0又はG0×M2≦0であると判定した場合(ステップS54;no)、基準座標Psと評価座標Pcとの間に出力すべき折れ線頂点座標データがあると判定し、ステップS55に進む。
ステップS53及びステップS54は、機能(1−2)及び機能(1−3)を実行するための動作に対応する。
ステップS55において、折れ線近似ユニット142は、判定(1−2)及び判定(1−3)の結果に基づき、座標P(c−1)を新たな基準座標Psとするための初期化を行う。具体的には例えば、ΔTカウンタ207は、値(c−s)を、レジスタ213は、判定上限情報M1を、レジスタ214は、判定下限情報M2を、それぞれ以下の通り更新する。
c−s=c−(c−1)=1
M1=[Xm1、Tm1]=[1、0]
M2=[Xm2、Tm2]=[−1、0]
ステップS55は、機能(1−1)を実行するための動作に対応する。
ステップS56において、折れ線近似ユニット142は、折れ線頂点座標データとして座標P(c−1)を出力する。具体的には例えば、ΔTカウンタ207は、保持している時刻データ(c−1)を、出力データFIFO220に出力する。また、レジスタ209は、保持しているセンサデータX(c−1)を、出力データFIFO220に出力する。出力データFIFO220は、受信した時刻データ(c−1)及びセンサデータX(c−1)の組(c−1、X(c−1))を折れ線頂点座標データとしてデータバッファ143に出力する。
その後、折れ線近似ユニット142は、ステップS53に進む。
ステップS56は、機能(1−4)を実行するための動作に対応する。
ステップS57において、折れ線近似ユニット142は、センサデータX(c)が最終データであるか否かを判定する。具体的には、折れ線近似ユニット142は、入力データFIFO201に出力する予定の時系列データが無い場合、レジスタ208に保持されているセンサデータX(c)が最終データであると判定し(ステップS57;yes)、ステップS59に進む。判定回路219は、入力データFIFO201に出力する予定のデータがある場合、レジスタ208に保持されているセンサデータX(c)が最終データではないと判定し(ステップS57;no)、ステップS58に進む。
ステップS58において、折れ線近似ユニット142は、判定(1−5)及び判定(1−6)を実行する。
具体的には、判定回路219は、受信したG1×M1の符号情報に基づき、G1×M1が負(G1×M1<0)であるか否かを判定する。また、判定回路219は、受信したG2×M2の符号情報に基づき、G2×M2が正(G2×M2>0)であるか否かを判定する。
判定回路219は、判定(1−5)の結果、G1×M1<0であると判定した場合、レジスタ213に保持されている判定上限情報M1を誤差上限情報G1で更新する。一方、判定回路219は、G1×M1≧0であると判定した場合、レジスタ213に判定上限情報M1を引き続き保持させる。
また、判定回路219は、判定(1−6)の結果、G2×M2>0であると判定した場合、レジスタ214に保持されている判定下限情報M2を誤差下限情報G2で更新する。一方、判定回路219は、G2×M2≦0であると判定した場合、レジスタ214に判定下限情報M2を引き続き保持させる。
ΔTカウンタ207は、保持している時刻データc及び(c−1)と、値(c−s)との各々の値を1ずつカウントアップさせる。
その後、折れ線近似ユニット142は、ステップS53に進む。
ステップS58は、機能(1−5)、機能(1−6)、及び機能(1−7)を実行するための動作に対応する。
ステップS59において、折れ線近似ユニット142は、最終データであると判定された座標データ(c、X(c))を折れ線頂点座標データとしてデータバッファ143に出力する。具体的には例えば、ΔTカウンタ207は、保持している時刻データcを、出力データFIFO220に出力する。また、レジスタ208は、保持しているセンサデータX(c)をレジスタ209に出力する。レジスタ209は、受信したセンサデータX(c)を出力データFIFO220に出力する。出力データFIFO220は、受信した時刻データc及びセンサデータX(c)の組(c、X(c))を折れ線頂点座標データとしてデータバッファ143に出力する。
ステップS59は、機能(1−4)を実行するための動作に対応する。
以上により、折れ線近似動作が終了する。
なお、上述の通り、ステップS57においてステップS58に進むように判定される場合、ステップS58では、入力データFIFO201から出力されるセンサデータが更新される。すなわち、ステップS53〜S58における一連のループ処理が実行されるたびに、入力データFIFO201から出力される値が更新される。
また、ステップS54においてステップS55に進むように判定された場合、ステップS55では、判定上限情報M1及び判定下限情報M2に初期値が設定される。このため、ステップS53〜S56における一連のループ処理が一度実行されると、次のステップS54においては、必ずステップS57に進むように判定される。
つまり、ステップS53〜S58における一連のループ処理においてステップS55〜S56が実行されずにステップS58に到達した場合、入力データFIFO201は、ステップS53の並列化された乗算処理が1回実行された後に、出力するセンサデータを更新する。一方、ステップS55〜S56が実行された場合、入力データFIFO201は、ステップS53における乗算処理が2回実行された後に、出力するセンサデータを更新する。
ステップS53における乗算処理は、他の処理と比較して処理時間を要する。このため、入力データFIFO201は、ステップS55〜S56が実行されない場合、データ圧縮回路14内のクロックが1クロック動作する期間(以下、単に「1クロック」という。)以内で、出力するセンサデータを更新できる。一方、入力データFIFO201は、ステップS55〜S56が実行された場合、ステージBにおいてパイプラインストールが発生し、出力するセンサデータを1クロック以内に更新できない可能性がある。換言すると、折れ線近似ユニット142は、時系列データ内の或る座標データが折れ線頂点座標データであると判定されない限り、1クロック以内で次の座標データの判定処理に進むことができる。
1.2.3 符号化処理の際の動作について
次に、第1実施形態に係る符号化処理の際の動作について、図13を用いて説明する。図13は、第1実施形態に係る時系列データ圧縮装置における符号化処理の際の動作を示すフローチャートである。なお、可変長符号化回路403は、例えば、パラメタK=0から昇順に符号化テーブルを適用して可変長符号化処理を実行するものし、以下の説明では、或るパラメタK=Knにおける符号化テーブルについて可変長符号化を実行する場合の動作について説明する。
図13に示すように、変換回路401は、データバッファ143から折れ線近似後時系列データを読出し、引き続き、ステップS71において、当該読み出した折れ線近似後時系列データに基づき、符号化対象データを生成する。変換回路401は、生成した符号化対象データをセレクタ402に転送する。
ステップS72において、セレクタ402は、記憶ユニット144から複数の符号化テーブルのうちのパラメタK=Knの符号化テーブルを、時刻予測誤差データdT及びセンサ予測誤差データdXの各々について読み出す。
ステップS73において、セレクタ402は、符号化対象データについて、読み出した符号化テーブルの符号長に係る情報を適用し、当該符号化テーブルを適用した場合に生成される圧縮済みデータの符号長を算出する。具体的には、セレクタ402は、時刻データに対応するビット列の符号長と、センサデータに対応するビット列の符号長と、の各々を算出する。
ステップS74において、セレクタ402は、算出した符号長が、同一の符号化対象データについてこれまで算出した符号長よりも短いか否かを判定する。具体的には、セレクタ402は、パラメタK=Knが最初のパラメタの場合(K=0)、算出した符号長を一時的に記憶する。セレクタ402は、パラメタK=Knが最初のパラメタでなく、それまでに一時的に符号長を記憶している場合、当該記憶していた符号長と、算出した符号長とを比較し、どちらの符号長が短いかを判定する。判定の結果、算出した符号長の方が短いと判定された場合(ステップS74;yes)、セレクタ402は、算出した符号長がこれまで算出した符号長の中で最も短いとみなし、ステップS75に進む。一方、算出した符号長の方が短くないと判定された場合(ステップS74;no)、セレクタ402は、一時的に記憶していた符号長がこれまで算出した符号長の中で最も短いとみなし、一時的に記憶していた符号長を保持し続けると共にステップS76に進む。
ステップS75において、セレクタ402は、一時的に記憶する符号長を、算出した符号長で更新することにより、最適な符号化テーブルを更新する。その後、セレクタ402は、ステップS76を実行する。
ステップS76において、セレクタ402は、ステップS72において読み出された符号化テーブルのパラメタK=Knが最後のパラメタか否かを判定する。パラメタK=Knが最後のパラメタでない場合(S76;no)、ステップS72に進み、次のパラメタK=K(n+1)について以降のステップS72〜S76を再帰的に実行する。一方、パラメタK=Knが最後のパラメタである場合(S76;yes)、セレクタ402は、一時的に記憶している符号長が最短の符号長であると判定する。セレクタ402は、当該最短の符号長に対応する符号化テーブルを最適な符号化テーブルとして記憶ユニット144から可変長符号化回路403に転送する。その後、ステップS77に進む。
ステップS77において、可変長符号化回路403は、最適な符号化テーブルに基づき可変長符号化処理を実行し、圧縮済みデータを生成する。具体的には、変換回路401は、再度データバッファ143から折れ線近似後時系列データを読出し、符号化対象データを生成する。変換回路401は、生成した符号化対象データを可変長符号化回路403に転送する。可変長符号化回路403は、受信した符号化対象データに、最適な符号化テーブルを適用して可変長符号化処理を実行し、圧縮済みデータを生成する。可変長符号化回路403は、生成した圧縮済みデータを通信ユニット141に送出する。
なお、ステップS72〜ステップS76に係る再帰処理は、時刻データに係る部分とセンサデータに係る部分について、独立に実行される。このため、ステップS77では、可変長符号化回路403には、時刻データ及びセンサデータをそれぞれ最も短い符号長で符号化したパラメタKt及びKxの符号化テーブルを最適な符号化テーブルとして受信する。つまり、可変長符号化回路403は、時刻データ及びセンサデータのいずれに対しても最適な可変長符号化処理を実行し、圧縮済みデータを生成することができる。
以上で、符号化処理の動作が終了する。
なお、ステップS72〜ステップS76は、機能(2−1)及び機能(2−2)を実行するための動作に対応する。
ステップS77は、機能(2−3)を実行するための動作に対応する。
1.3 本実施形態に係る効果について
第1実施形態によれば、高スループットで時系列データを圧縮することができる。本効果につき、以下に説明する。
IoT機器は、内蔵されるセンサにおいて時系列データを取得する。センサで取得される時系列データのビット深度は16〜24ビット程度であり、画像データ等のビット深度(8〜10ビット程度)と比較しても非常に深く、大容量となる。取得された大容量の時系列データは、主として携帯端末等の外部機器に転送されることにより利用される。一方、IoT機器は、省リソースの観点から、消費電力の低減、及び外部機器との間の通信の狭帯域化が要求されている。このため、IoT機器は、大量の時系列データをIoT機器内で小さいサイズに圧縮した後に送信したい、という需要が高まっている。
従来のデータ圧縮技術としては、直交変換、パターンマッチング、及び折れ線近似を伴う技術が知られている。このうち、折れ線近似は、直交変換、及びパターンマッチングと比べて、基本的かつ汎用性の高い技術であり、又データ処理量及び占有するワークメモリが少ない、というメリットを有する。
しかしながら、従来の折れ線近似を伴うデータ圧縮技術は、シーケンシャルな処理のループの中に、計算時間が比較的長い除算を含む。このため、データ量辺りのスループットが上がらず、結果として電源ON期間が長くなり、省電力化の障害となっていた。すなわち、従来の技術は、高スループットで時系列データを圧縮する、という点において検討の余地がある。
第1実施形態に係る構成によれば、時系列データ圧縮装置10は、折れ線近似ユニット142において、評価情報G0、誤差上限情報G1、誤差下限情報G2、判定上限情報M1、及び判定下限情報M2を同次座標系で処理する機能を備える。また、これに伴い、折れ線近似ユニット142は、外積回路215〜218を備える。外積回路215〜218の各々は、それぞれG0×M1の符号情報、G0×M2の符号情報、G1×M1の符号情報、及びG2×M2の符号情報を出力する。このような外積回路215〜218は、折れ線近似処理において同時に演算可能なように、並列に接続されている。これにより、高スループットで時系列データを圧縮することができる。
補足すると、従来の折れ線判定処理では、或る座標データが折れ線頂点座標データであるか否かを判定する1回のループ処理の中で、少なくとも3回の除算を用いていた。また、当該3回の除算処理は、各々の処理時間が長いだけでなく、並列して実行できなかった。第1実施形態に係る構成によれば、外積回路215〜218を備えることによって3回の除算に代えて8回の乗算を実行し、従来の技術と同等の機能を実現することができる。また、上述の通り、外積回路215〜218は、並列に接続されており、各々に入力されるデータは互いに依存関係が無い。このため、外積回路215〜218による8回の乗算は、並列して同時に処理を行うことにより、乗算1回に要する時間で処理することができる。これにより、時系列データ内の或る座標データが折れ線頂点座標データであるか否かを判定するに際し、概ね1クロック以内で判定することができる。したがって、1ループ処理に要する処理時間を大幅に削減することができ、高スループットで時系列データを圧縮することができる。また、これに伴い、時系列データの圧縮に際して時系列データ圧縮装置10の電源をONしなければならない期間を低減することができるため、省電力化を図ることができる。
また、第1実施形態に係る第1の態様によれば、外積回路215〜218内の乗算器301及び302に入力されるデータの一方は、時系列データ内の時刻データTであるようにしている。これにより、乗算器301及び302の回路規模を小さく抑えることができる。
補足すると、時刻データTは、整数値であるためデータサイズが小さい。また、折れ線近似処理によって期待される時系列データの圧縮率は実用上10倍程度であるので、折れ線頂点座標データは、平均して10個の座標データにつき1個の割合で抽出される。つまり、時刻データTのダイナミックレンジは、整数値で10程度となる。換言すると、乗算器301及び302に入力される時刻データTは、高々5ビット程度である。一方、乗算器301及び302の回路規模は、2つの入力のうちビット長の短い方の影響を強く受ける。このため、乗算器301及び302の回路規模は、時刻データTのビット長の影響を受け、小さい回路規模で実装することができる。したがって、3個の除算器を8個の乗算器に置き換えた場合においても、回路規模を低減することができる。
また、第1実施形態に係る第2の態様によれば、時系列データ圧縮装置10は、符号化ユニット145を備える。符号化ユニット145は、折れ線近似後時系列データに基づき、符号化対象データを生成する。符号化ユニット145は、生成された符号化対象データに対して、予め記憶された符号化テーブルを用いて可変長符号化処理を実行し、圧縮済みデータを生成するようにしている。これにより、高スループットで時系列データを圧縮することができる。
補足すると、圧縮済みデータがIoT機器3から携帯端末2に転送される場合、通信バンド幅が極端に制限されている場合が多い。このため、時系列データは、上述の如き狭帯域においても問題なく通信できるように、折れ線近似処理に加えて、更にデータサイズを更に圧縮させることが望ましい。一方、折れ線近似処理によって生成される折れ線近似後時系列データは、時系列に並ぶ。このため、折れ線近似後時系列データは、隣接する座標データ間に相関があると想定される。当該相関を利用して生成することにより、折れ線近似後時系列データは、1ブロックにわたって0近辺の値の発生頻度の高い符号化対象データに変換することができる。これにより、可変長符号化に適した符号化対象データを生成できる。したがって、符号化ユニット145は、符号化対象データに対して可変長符号化方式を適用することにより、高い圧縮率で圧縮済みデータを生成することができる。
また、第1実施形態に係る第3の態様によれば、記憶ユニット144には、複数の符号化テーブルが予め記憶されている。符号化ユニット145は、同一の符号化対象データに対して、当該複数の符号化テーブルの各々を適用し、符号化対象テーブル毎に符号長を算出する。そして符号化ユニット145は、算出された複数の符号長の中で最も短いものを選択し、当該最短の符号長で符号化し得るパラメタの符号化テーブルに基づき、圧縮済みデータを生成するようにしている。これにより、折れ線近似後時系列データ1ブロック毎に、最も圧縮率の高いパラメタKの符号化テーブルを選択することができる。
補足すると、高い圧縮率を得るためのパラメタKの設定方針としては、例えば以下の3つが考えられる。
(a)事前に典型的なセンサデータに対して圧縮率評価を実施し、当該評価によってパラメタKを決定する。以後の符号化処理の際に用いるパラメタKは固定する。
(b)折れ線近似後時系列データ1ブロックの中で、動的にパラメタKを変化させる。例えば、直前までに入力されたデータの特性から、適切なパラメタKの値を予測する。
(c)同一の時系列データについて、予め用意された複数のパラメタKの各々を用いて符号化処理を実行し、最も圧縮率の高いパラメタKを選択する。
方針(a)は、時系列データそのものに対して符号化処理を実行する場合、適切な結果が得られる可能性が高い。しかしながら、第1実施形態では高スループットで時系列データを圧縮する必要があるため、時系列データは、折れ線近似処理によって事前に間引きされる。これにより、折れ線近似後時系列データは、折れ線近似処理におけるパラメタ(例えば許容誤差値e)による影響を受け、時系列データ本来の特性と異なる特性を持つ場合がある。したがって、方針(a)により、高い圧縮率を得るパラメタKを設定することは困難である。
方針(b)は、符号化対象データ内の或る座標データに対して符号化するパラメタKを決定する場合に、当該或る座標データの直前までの座標データから当該或る座標データを精度よく予測できる予測関数が用意できれば、高い圧縮率が期待できる。しかしながら、第1実施形態では高スループットで時系列データを圧縮する必要があるため、時系列データは、折れ線近似処理によって事前に間引きされる。これにより、符号化データ内の座標データは、折れ線近似処理によって隣接データ間の時間的距離が離れてしまい、分布の傾向の変化が激しくなる傾向がある。このため、直前の座標データから次の座標データを精度よく予測することが困難であり、圧縮率が低下してしまう可能性が高い。したがって、方針(b)により、高い圧縮率を得るパラメタKを設定することは困難である。
方針(c)は、1座標データ毎にパラメタKを変化させることはできないものの、1ブロック毎にパラメタKを変化させることができる。また、実際の符号化対象データに対して、全ての符号化テーブルを適用するため、確実に圧縮率の高いパラメタKを選択することができる。加えて、符号化処理に要する時間が全体処理に要する時間の中で占める割合は、非常に小さい。このため、高スループットで時系列データを圧縮することも可能である。したがって、方針(c)によるパラメタKを選択することが適切と考えられる。つまり、第1実施形態に係る第2の態様によれば、高スループットで時系列データを圧縮しつつ、高い圧縮率を確保することができる。
2.第2実施形態
次に、第2実施形態に係る時系列データ圧縮装置について説明する。第2実施形態に係る時系列データ圧縮装置は、第1実施形態に係る時系列データ圧縮装置における折れ線近似処理において重複していた乗算を省略し、必要な乗算数を更に低減させたものである。以下の説明では、第1実施形態と同様の構成についてはその説明を省略し、第1実施形態と異なる部分について適宜説明する。
2.1 折れ線近似ユニットの機能について
第2実施形態に係る時系列データ圧縮装置の折れ線近似ユニットの機能の詳細について説明する。
折れ線近似ユニット142は、値g0m1、g0m2、g1m1、及びg2m2を定義する。値g0m1はG0×M1の外積値、値g0m2はG0×M2の外積値を示す。また、値g1m1は値g0m1と値eTm1との和を示し、値g2m2は、値g0m2と値eTm2との差を示す。値eTm1は、許容誤差値e及び判定上限情報M1=[Xm1、Tm1]の第2成分Tm1との積を示し、値eTm2は、許容誤差値e及び判定下限情報M2=[Xm2、Tm2]の第2成分Tm2との積を示す。
これにより、折れ線近似ユニット142の有する機能(1−2)、機能(1−3)、機能(1−5)、及び機能(1−6)は、それぞれ以下の判定(1−2a)、判定(1−3a)、判定(1−5a)、及び判定(1−6a)を実行し得る構成によって実現される。
判定(1−2a):g0m1=G0×M1=(X(c)−X(s))Tm1−(c−s)Xm1<0
判定(1−3a):g0m2=G0×M2=(X(c)−X(s))Tm2−(c−s)Xm2>0
判定(1−5a):g1m1=g0m1+eTm1(=G1×M1)<0
判定(1−6a):g2m2=g0m2−eTm2(=G2×M2)>0
このように、機能(1−2a)、機能(1−3a)の各々は、1回の外積演算、すなわち2回の乗算を実行し得る構成によって実現される。また、機能(1−5a)、及び機能(1−6a)の各々は、それぞれ1回の乗算を実行し得る構成によって実現される。つまり、或る座標データについて折れ線頂点座標データの有無を評価する処理は、合計6回の乗算を実行し得る構成を含む。
2.2 折れ線近似ユニットの構成について
次に、第2実施形態に係る時系列データ圧縮装置の折れ線近似ユニットの構成の詳細について図14を用いて説明する。図14は、第2実施形態に係る時系列データ圧縮装置の折れ線近似ユニットの構成の一例を説明するための回路図である。
図14に示すように、第2実施形態に係る折れ線近似ユニット142は、第1実施形態に係る折れ線近似ユニット142と同様に、入力データFIFO201、レジスタ202、加減算器204〜206、ΔTカウンタ207、レジスタ208〜212、及び出力データFIFO220を備える。また、第2実施形態に係る折れ線近似ユニット142は、レジスタ203A、レジスタ213A〜214A、外積回路215A〜216A、判定回路219A、乗算器221〜222、及び加減算器223〜224を更に備える。
レジスタ203Aは、許容誤差値eを予め保持する。レジスタ203は、保持している許容誤差値eを、加減算器204〜206の各々、及び乗算器221〜222の各々に出力する。
ノードn0には、ΔTカウンタ207から値(c−s)が、レジスタ210から値(X(c)−X(s))がそれぞれ入力される。ノードn0では、当該入力された各値が同次座標系のベクトルである評価情報G0=[X(c)−X(s)、c−s]として統合され、外積回路215A〜216Aに出力される。
ノードn1には、ΔTカウンタ207から値(c−s)が、レジスタ211から値(X(c)−X(s)+e)がそれぞれ入力される。ノードn1では、当該入力された各値が同次座標系のベクトルである誤差上限情報G1=[X(c)−X(s)+e、c−s]として統合される。誤差上限情報G1は、判定回路219Aによる判定(1−2a)及び判定(1−3a)の結果がいずれも真であり、かつ判定(1−5a)の結果が真である場合、レジスタ213Aに出力される。
ノードn2には、ΔTカウンタ207から値(c−s)が、レジスタ212から値(X(c)−X(s)−e)がそれぞれ入力される。ノードn2では、当該入力された各値が同次座標系のベクトルである誤差下限情報G2=[X(c)−X(s)−e、c−s]として統合される。誤差下限情報G2は、判定回路219Aによる判定(1−2a)及び判定(1−3a)の結果がいずれも真であり、かつ判定(1−6a)の結果が真である場合、レジスタ214Aに出力される。
レジスタ213Aは、判定上限情報M1=[Xm1、Tm1]を保持する。レジスタ213Aは、保持する判定上限情報M1を外積回路215Aに出力する。また、レジスタ213Aは、判定上限情報M1の第2成分Tm1を乗算器221に出力する。
具体的には、レジスタ213Aは、判定回路219Aによる判定(1−2a)及び判定(1−3a)の結果がいずれも真であり、かつ判定(1−5a)の結果が真である場合、保持する判定上限情報M1を、ノードn1から出力される誤差上限情報G1で更新する。また、レジスタ213Aは、判定回路219Aによって判定(1−2a)及び判定(1−3a)の結果のいずれかが否であった場合、保持する判定上限情報M1をM1=[1、0]に更新する。
レジスタ214Aは、判定下限情報M2=[Xm2、Tm2]を保持する。レジスタ214Aは、保持する判定下限情報M2を外積回路216Aに出力する。また、レジスタ214Aは、判定下限情報M2の第2成分Tm2を乗算器222に出力する。
具体的には、レジスタ214Aは、判定回路219Aによる判定(1−2a)及び判定(1−3a)の結果がいずれも真であり、かつ判定(1−6a)の結果が真である場合、保持する判定下限情報M2を、ノードn2から出力される誤差下限情報G2で更新する。また、レジスタ214Aは、判定回路219Aによる判定(1−2a)及び判定(1−3a)の結果のいずれかが否であった場合、保持する判定下限情報M2をM2=[−1、0]に更新する。
外積回路215Aは、ノードn0から出力された評価情報G0、及びレジスタ213から出力された判定上限情報M1をそれぞれ第1入力ベクトル及び第2入力ベクトルとして受信し、当該第1入力ベクトル及び第2入力ベクトルに基づく外積演算を実行する。外積回路215Aは、当該外積演算の結果、評価情報G0と判定上限情報M1との外積値g0m1を加減算器223及び判定回路219Aに出力する。
外積回路216Aは、ノードn0から出力された評価情報G0、及びレジスタ214から出力された判定下限情報M2をそれぞれ第1入力ベクトル及び第2入力ベクトルとして受信し、当該第1入力ベクトル及び第2入力ベクトルに基づく外積演算を実行する。外積回路216Aは、当該外積演算の結果、評価情報G0と判定下限情報M2との外積値g0m2を加減算器224及び判定回路219Aに出力する。
乗算器221は、レジスタ203Aから出力された許容誤差値e、及びレジスタ213Aから出力された判定上限情報M1の第2成分Tm1を、それぞれ第1入力値及び第2入力値として受信する。乗算器221は、第1入力値に対して第2入力値を乗ずる乗算を実行し、実行結果の値eTm1を判定回路219Aに出力する。
乗算器222は、レジスタ203Aから出力された許容誤差値e、及びレジスタ214Aから出力された判定下限情報M2の第2成分Tm2を、それぞれ第1入力値及び第2入力値として受信する。乗算器222は、第1入力値に対して第2入力値を乗ずる乗算を実行し、実行結果の値eTm2を判定回路219Aに出力する。
加減算器223は、外積回路215Aから出力された値g0m1、及び乗算器221から出力された値eTm1を、それぞれ第1入力値及び第2入力値として受信する。加減算器223は、第1入力値に対して第2入力値を足す加算を実行し、実行結果の値g1m1=g0m1+eTm1を判定回路219Aに出力する。
加減算器224は、外積回路216Aから出力された値g0m2、及び乗算器222から出力された値eTm2を、それぞれ第1入力値及び第2入力値として受信する。加減算器224は、第1入力値に対して第2入力値を減じる減算を実行し、実行結果の値g2m2=g0m2−eTm2を判定回路219Aに出力する。
判定回路219Aは、外積回路215Aから入力された外積値g0m1に基づき、判定(1−2a)を実行する。具体的には、判定回路219Aは、値g0m1が負(g0m1<0)である場合、評価値が折れ線判定の傾きの上限値を下回っている(判定(1−2a)の結果は真である)、と判定する。一方、判定回路219Aは、値g0m1が0以上(g0m1≧0)である場合、評価値が折れ線判定の傾きの上限値を上回っている(判定(1−2a)の結果は否である)、と判定する。また、判定回路219Aは、外積回路216Aから入力された外積値g0m2に基づき、判定(1−3a)を実行する。具体的には、判定回路219は、値g0m2が正(g0m2>0)である場合、評価値が折れ線判定の傾きの下限値を上回っている(判定(1−3a)の結果は真である)、と判定する。一方、判定回路219Aは、値g0m2が0以下(g0m2≦0)である場合、評価値が折れ線判定の傾きの下限値を下回っている(判定(1−3a)の結果は否である)、と判定する。すなわち、判定回路219Aは、評価座標P(c)に対する判定(1−2a)の結果及び判定(1−3a)の結果がいずれも真である場合、評価座標P(c)の1つ前の時刻(c−1)の座標P(c−1)が折れ線頂点座標データでないと判定する。また、判定回路219Aは、評価座標P(c)に対する判定(1−2a)の結果及び判定(1−3a)の結果のいずれかが否である場合、座標P(c−1)が折れ線頂点座標データであると判定する。
判定回路219Aは、加減算器223から入力された値g1m1に基づき、判定(1−5a)を実行する。具体的には、判定回路219Aは、値g1m1が負(g1m1<0)である場合、評価値の許容誤差上限値が折れ線判定の傾きの上限値を下回っている(判定(1−5a)の結果は真である)、と判定する。一方、判定回路219Aは、値g1m1が0以上(g1m1≧0)である場合、評価値の許容誤差上限値が折れ線判定の傾きの上限値を上回っている(判定(1−5a)の結果は否である)、と判定する。すなわち、判定回路219Aは、判定(1−5a)の結果が真である場合、判定上限情報M1を誤差上限情報G1で更新すべきであると判定し、判定(1−5a)の結果が否である場合、判定上限情報M1を現状のまま維持すべきであると判定する。
判定回路219Aは、加減算器224から入力された値g2m2に基づき、判定(1−6a)を判定する。具体的には、判定回路219Aは、値g2m2が正(g2m2>0)である場合、評価値の許容誤差下限値が折れ線判定の傾きの下限値を上回っている(判定(1−6a)の結果は真である)、と判定する。また、判定回路219Aは、値g2m2が0以下(g2m2≦0)である場合、評価値の許容誤差下限値が折れ線判定の傾きの下限値を下回っている(判定(1−6a)の結果は否である)、と判定する。すなわち、判定回路219Aは、判定(1−6a)の結果が真である場合、判定下限情報M2を誤差下限情報G2で更新すべきであると判定し、判定(1−6a)の結果が否である場合、判定下限情報M2を現状のまま維持すべきであると判定する。
図15は、第2実施形態に係る時系列データ圧縮装置の外積回路215A〜216Aの構成の一例を説明するための回路図である。図15に示すように、外積回路215A〜216Aは、同一の構成を備えており、例えば乗算器301〜302、及び加減算器304を備えている。図15の例では、外積回路215A〜216Aには、同次座標系のベクトルB1=[X1、T1]及びB2=[X2、T2]がそれぞれ第1入力ベクトル及び第2入力ベクトルとして入力されている場合を一例として示している。第1入力ベクトルB1は、例えば評価情報G0である。第2入力ベクトルB2は、例えば判定上限情報M1、又は判定下限情報M2である。
乗算器301は、第1入力ベクトルB1の第1成分X1と、第2入力ベクトルB2の第2成分T2とが、それぞれ第1入力値及び第2入力値として入力される。乗算器301は、第1入力値X1及び第2入力値T2の乗算結果X1T2を加減算器304に出力する。
乗算器302は、第2入力ベクトルB2の第1成分X2と、第1入力ベクトルB1の第2成分T1とが、それぞれ第1入力値及び第2入力値として入力される。乗算器302は、第1入力値X2及び第2入力値T1の乗算結果X2T1を加減算器304に出力する。
加減算器304は、乗算器301から入力された値X1T2と、乗算器302から入力された値X2T1とに基づく減算を実行し、値(X1T2−X2T1)を出力する。
2.3 折れ線近似処理の際の動作について
次に、第2実施形態に係る折れ線近似処理の際の動作について、図16を用いて説明する。図16は、第2実施形態に係る時系列データ圧縮装置における折れ線近似処理の際の動作を示すフローチャートである。なお、以下の説明では、許容誤差値eは、固定値が適用されているものとして説明する。
図16に示すように、ステップS51において、折れ線近似ユニット142は、ΔTカウンタ207、及びレジスタ213A〜214Aに保持されている値を初期化する。また、ステップS52において、折れ線近似ユニット142は、時系列データの最初の座標(0、X(0))を折れ線近似座標データとして出力する。
なお、ステップS51は、機能(1−1)を実行するための動作に対応する。ステップS52は、機能(1−4)を実行するための動作に対応する。ステップS51及びステップS52の具体的な動作は、第1実施形態と同様であるため、その説明を省略する。
続いて、折れ線近似ユニット142は、以降の各座標データが折れ線頂点座標データであるか否かを判定するためのループ処理に入る準備をする。具体的には、入力データFIFO201は、次のセンサデータX(1)(T=1)をレジスタ208、及び加減算器204〜206に出力する。レジスタ208は、受信したセンサデータX(1)を保持する。また、レジスタ202は、保持しているセンサデータX(0)を加減算器204〜206に出力する。レジスタ203Aは、保持している許容誤差値eを加減算器205〜206及び乗算器221〜222に出力する。
加減算器204〜206は、第1実施形態と同様の動作を実行する。
以上でループ処理に入る準備が完了し、以降の処理において、ループ処理が実行される。なお、以下の説明では、入力データFIFO201は、評価座標PcのセンサデータX(c)を出力しているものとする。レジスタ202は、基準座標PsのセンサデータX(s)を保持しているものとする。ΔTカウンタ207は、時刻データc及び(c−1)と、値(c−s)を保持しているものとする。レジスタ208は、センサデータX(c)を保持し、レジスタ209は、センサデータX(c−1)を保持しているものとする。レジスタ210〜212は、それぞれ値(X(c)−X(s))、(X(c)−X(s)+e)、及び(X(c)−X(s)−e)を保持しているものとする。レジスタ213Aは、判定上限情報M1=[Xm1、Tm1]を保持し、レジスタ214Aは、判定下限情報M2=[Xm2、Tm2]を保持しているものとする。
ステップS53aにおいて、折れ線近似ユニット142は、2つの外積演算及び2つの乗算を並列して同時に実行する。
具体的には、ΔTカウンタ207は、保持している値(c−s)をノードn0〜n2の各々に出力する。レジスタ210は、保持している値(X(c)−X(s))をノードn0に出力する。レジスタ211は、保持している値(X(c)−X(s)+e)をノードn1に出力する。レジスタ212は、保持している値(X(c)−X(s)−e)をノードn2に出力する。ノードn0は、受信した値(c−s)及び値(X(c)−X(s))を評価情報G0=[X(c)−X(s)、c−s]として統合する。ノードn1は、受信した値(c−s)及び値(X(c)−X(s)+e)を誤差上限情報G1=[X(c)−X(s)+e、c−s]として統合する。ノードn2は、受信した値(c−s)及び値(X(c)−X(s)−e)を誤差下限情報G2=[X(c)−X(s)−e、c−s]として統合する。レジスタ213Aは、保持している判定上限情報M1を外積回路215Aに出力する。また、レジスタ213Aは、保持している判定上限情報M1の第2成分Tm1を乗算器221に出力する。レジスタ214Aは、保持している判定下限情報M2を外積回路216Aに出力する。また、レジスタ214Aは、保持している判定下限情報M2の第2成分Tm2を乗算器222に出力する。
外積回路215Aは、受信した評価情報G0及び判定上限情報M1に基づいて外積演算G0×M1を実行し、外積値g0m1を判定回路219A及び加減算器223に出力する。外積回路216Aは、受信した評価情報G0及び判定下限情報M2に基づいて外積演算G0×M2を実行し、外積値g0m2を判定回路219A及び加減算器224に出力する。乗算器221は、受信した許容誤差値e及び判定上限情報M1の第2成分Tm1に基づいて乗算を実行し、値eTm1を加減算器223に出力する。乗算器222は、受信した許容誤差値e及び判定下限情報M2の第2成分Tm2に基づいて乗算を実行し、値eTm2を加減算器224に出力する。つまり、外積回路215A〜216Aによる2つの外積演算(4つの乗算)と、乗算器221〜222による2つの乗算と、の合計6つの乗算は、同時に実行される。
加減算器223は、受信した値g0m1及び値eTm1に基づいて加算を実行し、値g1m1を判定回路219Aに出力する。加減算器224は、受信した値g0m2及び値eTm2に基づいて減算を実行し、値g2m2を判定回路219Aに出力する。
ステップS54aにおいて、折れ線近似ユニット142は、判定(1−2a)及び判定(1−3a)を実行する。具体的には、判定回路219Aは、受信した値g0m1が負(g0m1<0)であるか否かを判定する。また、判定回路219Aは、受信した値g0m2が正(g0m2>0)であるか否かを判定する。判定回路219Aは、判定(1−2a)及び判定(1−3a)の結果、g0m1<0かつg0m2>0であると判定した場合(ステップS54a;yes)、基準座標Psと評価座標Pcとの間に折れ線は無いと判定し、ステップS57に進む。一方、判定回路219Aは、g0m1≧0又はg0m2≦0であると判定した場合(ステップS54a;no)、基準座標Psと評価座標Pcとの間に折れ線頂点座標データがあると判定し、ステップS55に進む。
ステップS53a及びステップS54aは、機能(1−2)及び機能(1−3)を実行するための動作に対応する。
ステップS55において、折れ線近似ユニット142は、判定(1−2a)及び判定(1−3a)の結果に基づき、座標P(c−1)を新たな基準座標Psとするための初期化を行う。また、ステップS56において、折れ線近似ユニット142は、折れ線頂点座標データとして座標P(c−1)を出力する。その後、折れ線近似ユニット142は、ステップS53aに進む。
なお、ステップS55は、機能(1−1)を実行するための動作に対応する。ステップS56は、機能(1−4)を実行するための動作に対応する。ステップS55及びステップS56の動作の詳細は、第1実施形態と同様であるため、その説明を省略する。
ステップS57において、折れ線近似ユニット142は、センサデータX(c)が最終データであるか否かを判定する。具体的には、折れ線近似ユニット142は、入力データFIFO201に出力する予定の時系列データが無い場合、レジスタ208に保持されているセンサデータX(c)が最終データであると判定し(ステップS57;yes)、ステップS59に進む。判定回路219は、入力データFIFO201に出力する予定のデータがある場合、レジスタ208に保持されているセンサデータX(c)が最終データではないと判定し(ステップS57;no)、ステップS58aに進む。
ステップS58aにおいて、折れ線近似ユニット142は、判定(1−5a)及び判定(1−6a)を実行する。
具体的には、判定回路219Aは、受信した値g1m1が負(g1m1<0)であるか否かを判定する。また、判定回路219Aは、受信した値g2m2が正(g2m2>0)であるか否かを判定する。
判定回路219Aは、判定(1−5a)の結果、g1m1<0であると判定した場合、レジスタ213Aに保持されている判定上限情報M1をノードn1から出力される誤差上限情報G1で更新する。一方、判定回路219Aは、g1m1≧0であると判定した場合、レジスタ213Aに判定上限情報M1を引き続き保持させる。
また、判定回路219Aは、判定(1−6a)の結果、g2m2>0であると判定した場合、レジスタ214Aに保持されている判定下限情報M2をノードn2から出力される誤差下限情報G2で更新する。一方、判定回路219Aは、g2m2≦0であると判定した場合、レジスタ214Aに判定下限情報M2を引き続き保持させる。
ΔTカウンタ207は、保持している時刻データc及び(c−1)と、値(c−s)との各々の値を1ずつカウントアップさせる。
その後、折れ線近似ユニット142は、ステップS53aに進む。
ステップS58aは、機能(1−5)、機能(1−6)、及び機能(1−7)を実行するための動作に対応する。
ステップS59において、折れ線近似ユニット142は、最終データであると判定された座標データ(c、X(x))を折れ線頂点座標データとしてデータバッファ143に出力する。
なお、ステップS59は、機能(1−4)を実行するための動作に対応し、S59の動作の詳細は、第1実施形態と同様であるため、その説明を省略する。
以上により、折れ線近似動作が終了する。
2.4 本実施形態に係る効果について
第2実施形態に係る構成によれば、折れ線近似ユニット142は、外積回路215A及び216Aを備える。また、折れ線近似ユニット142は、乗算器221及び乗算器222を備える。外積回路215Aは、G0×M1の値g0m1を出力し、外積回路216Aは、G0×M2の値g0m2を出力する。乗算器221は、許容誤差値eと判定上限情報M1の第2成分Tm1との積の値eTm1を出力し、乗算器222は、許容誤差値eと判定下限情報M2の第2成分Tm2との積の値eTm2を出力する。このような外積回路215A及び216Aと、乗算器221及び222とは、折れ線近似処理において同時に演算可能なように、並列に接続されている。これにより、回路規模を第1実施形態より更に低減することができる。
補足すると、第1実施形態に係る構成によれば、外積回路215〜218を備えることによって8回の乗算を実行することにより、機能(1−1)〜機能(1−7)を実現する構成としていた。この8回の乗算の中には、重複する演算が含まれている。このため、当該重複する演算を省略することにより、更に乗算の回数を減らすことができる。これにより、第2実施形態に係る構成によれば、6回の乗算を実行することにより、同等の機能を実現することができる。このため、必要とする乗算器の個数を2個減じることができる。したがって、回路規模を更に低減することができる。
3. 変形例等について
実施形態は、上述の第1実施形態及び第2実施形態で述べた形態に限らず、種々の変形が可能である。例えば、上記第1実施形態及び第2実施形態では、第1文献[FAN/SAPA2]に基づく折れ線近似アルゴリズムに同次座標系を適用する例について説明した。しかしながら、実施形態は、第1文献[FAN/SAPA2]に限らず、その他の折れ線近似アルゴリズムについて同次座標系を適用することにより、上記第1実施形態及び第2実施形態と同様の効果を奏することができる。このような場合の例としては、例えば、第1文献[FAN/SAPA2]に代えて、第2文献[TOMEK]を用いる例が一例として挙げられる。
上述の通り、第1文献[FAN/SAPA2]では、評価座標Pc(c、X(c))のセンサデータX(c)に許容誤差値eを加減することによって、誤差上限情報G1及び誤差下限情報G2が算出される。一方、第2文献[TOMEK]では、基準座標Ps(s、X(s))のセンサデータX(s)に許容誤差値eを加減することによって、誤差上限情報G1及び誤差下限情報G2が算出される点において第1文献[FAN/SAPA2]と相違する。しかしながら、第2文献[TOMEK]の手法においても、評価情報G0と、誤差上限情報G1及び誤差下限情報G2とに基づき、傾きの大小関係を評価する点においては、第1文献[FAN/SAPA2]と同様である。したがって、上記第1実施形態及び第2実施形態では、第1文献[FAN/SAPA2]に代えて、第2文献[TOMEK]に基づく折れ線近似アルゴリズムが適用可能である。なお、第2文献[TOMEK]に関する情報は、次の通りである。
[TOMEK] Tomek I., “Two algorithm for piece-wise linear continuous approximation of functions of one variable”, IEEE Trans. Comput., C-23, t, pp. 445-448, April 1974.
また、上記第1実施形態及び第2実施形態では、評価情報G0が示す情報が直線の傾きである例について説明した。しかしながら、評価情報G0は、直線の傾きに限らず、その他の値に基づいて定義されてもよい。例えば、図17に示すように、評価情報G0は、或る直線(例えばセンサデータX(T)軸に平行な直線)Q:T=qと、基準座標Ps及び評価座標Pcを結ぶ直線との交点Pg0におけるX座標の値であってもよい。これに伴い、誤差上限情報G1、誤差下限情報G2、判定上限情報M1、及び判定下限情報M2は、それぞれ図17における点Pg1、点Pg2、点Pm1、及び点Pm2のX座標を示す。この場合、評価情報G0、誤差上限情報G1、誤差下限情報G2、判定上限情報M1、及び判定下限情報M2は、それぞれの直線の傾きに共通の係数を乗じた値となる。したがって、当該変形例は、評価情報G0が示す情報が直線の傾きである場合と実質的に同じ計算負荷であり、上記第1実施形態及び第2実施形態と同様の効果が得られる。
また、評価情報G0、誤差上限情報G1、誤差下限情報G2、判定上限情報M1、及び判定上限情報M2は、外積演算G0×M1、G0×M2、G1×M1、及びG2×M2の各々の符号が変化しない範囲において結果が逓倍されるような値が定義されてもよい。
具体的には、例えば、外積演算G0×M1を実行する場合において、評価情報G0の同次座標成分をG0=[k(X(c)−X(s))、(c−s)](kは正の実数)、判定上限情報M1の同次座標成分をM1=[kXm1、Tm1]と定義した場合においても、外積演算G0×M1の符号は変化しない。このように、乗算器301及び302に入力される値は、外積演算の符号が定性的に変化しない範囲において、時系列データ内の座標データ間の線分の傾きを直接的に示すものでなくてもよい。
また、例えば、評価情報G0の同次座標成分をG0=[N(X(c)−X(s))、N(c−s)](Nは任意の整数)と定義した場合においても、外積演算G0×M1の符号は変化しない。このように、乗算器301及び302に入力される値は、外積演算の符号が定性的に変化しない範囲において、時系列データ内の座標データの値そのものが入力されなくてもよい。
また、折れ線近似ユニット142は、折れ線近似処理の実行に際し、同次座標系を用いる例について説明した。しかしながら、折れ線近似ユニット142は、同次座標系に限らず、種々の座標系によるベクトル表現を用いて折れ線近似処理を実行可能である。例えば、評価情報G0、誤差上限情報G1、誤差下限情報G2、判定上限情報M1、及び判定下限情報M2は、傾きα=x/tを示す情報を、第1要素を分母t、第2要素を分子xとするベクトル[t、x]として表現する座標系における2次元ベクトルとして定義されてもよい。この場合、機能(1−2)、機能(1−3)、機能(1−5)、及び機能(1−6)による判定は、大小比較の符号が反転する。
このように、乗算器に入力される評価情報G0、誤差上限情報G1、誤差下限情報G2、判定上限情報M1、及び判定下限情報M2は、時系列データ内の時刻データT同士の差に基づいて算出される値と、センサデータX(T)同士の差に基づいて算出される値との組を含む。しかしながら、当該値の組は、種々の変形が適用可能である。
また、時系列データ圧縮装置10は、データ圧縮回路14内の記憶ユニット144において符号化テーブルを記憶する例を説明したが、これに限られない。例えば、符号化テーブルは、システムメモリ13に記憶されていてもよい。この場合、符号化ユニット145は、符号化処理の実行に際し、通信ユニット141を介してシステムメモリ13に記憶された符号化テーブルを読出す。また例えば、符号化テーブルは、メモリに記憶されずに、可変長符号化回路403内で直接計算されるように予め実装されてもよい。
また、センサ30は、1個の時系列データ圧縮装置10に対して1個接続される例を説明したが、これに限らず、複数個接続されていてもよい。この場合、複数のセンサ30は、独立にシステムメモリ13に各々のセンサ30で生成された時系列データを書込む。
また、フラッシュメモリ20及びセンサ30は、IoT機器3に含まれる例を説明したが、これに限らず、IoT機器3に外付けされてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。