(57)【要約】【課題】圧縮効率の低下を抑制し、かつ、高い周波数で動作可能な、データ圧縮装置、及び、データ伸張装置、並びに、データ圧縮伸張装置を提供する。【解決手段】連続して入力されるデータをＷビットのデータブロックに分割しＮ個ずつ１セグメントとして出力するデータ切り出し部１１と、セグメントの圧縮手段として、一のセグメントに含まれるデータブロックが特定データである割合に応じ、ランレングス方式、またはフラグ方式、または非圧縮のいずれかを選択する、圧縮方法判定部１２とを有する。また、特定データに関し、連続量を圧縮データに格納するランレングス方式をセグメントに対し実行するＲＬ１３１圧縮部と、特定データの位置情報を圧縮データに格納するフラグ方式をセグメントに対し実行するフラグ圧縮部１３２とを有する。また、圧縮データは、圧縮手段を識別可能な識別用ビットを有する。【選択図】図１
2018061199.tif 000002
【特許請求の範囲】
【請求項１】
連続して入力されるデータを、第１のビット幅を有するデータブロックに分割し、前記データブロックを所定の個数ずつ、１セグメントとして出力する入力データ分割部と、
前記セグメントの圧縮手段として、一の前記セグメントに含まれる前記データブロックが特定データである割合に応じ、第１の圧縮手段、または第２の圧縮手段、または非圧縮手段のいずれかを選択する、圧縮手段選択部と、
前記特定データに関し、連続量を圧縮データに格納する前記第１の圧縮手段を前記セグメントに対し実行する第１の圧縮部と、
前記特定データの位置情報を前記圧縮データに格納する前記第２の圧縮手段を前記セグメントに対し実行する第２の圧縮部と、を有し、
前記圧縮手段選択部によって選択された手段に従って圧縮された前記圧縮データは、前記圧縮手段を識別可能な識別用ビットを有することを特徴とする、データ圧縮装置。
【請求項２】
前記圧縮手段選択部は、第１の圧縮手段選択部と、第２の圧縮手段選択部とを有しており、前記第１の圧縮手段選択部は、前記第１の圧縮手段または前記非圧縮手段を選択し、前記第２の圧縮手段選択部は、前記第２の圧縮手段または前記非圧縮手段を選択し、
前記圧縮データは、前記第１の圧縮手段選択部によって選択された前記圧縮手段により前記セグメントを圧縮して中間データを生成し、前記第２の圧縮手段選択部によって選択された前記圧縮手段により前記中間データを圧縮して生成することを特徴とする、請求項１に記載のデータ圧縮装置。
【請求項３】
連続して入力される第２のビット幅を有する複数のフィールドからなる圧縮データを伸張する伸張装置であって、
前記フィールドに含まれる圧縮手段を識別可能な識別ビットに従って、第１の伸張手段、または第２の伸張手段、または非伸張手段を選択する、伸張手段選択部と、
前記圧縮データに格納された連続量に基づき、特定データを出力する第１の伸張手段を前記圧縮データに対し実行する第１の伸張部と、
前記圧縮データに格納された位置情報に基づき、前記特定データまたは非圧縮データを出力する第２の伸張手段を前記圧縮データに対し実行する第２の伸張部と、を有することを特徴とする、データ伸張装置。
【請求項４】
前記伸張手段選択部は、第１の伸張手段選択部と、第２の伸張手段選択部とを有しており、前記第１の伸張手段選択部は、前記第１の伸張手段または前記非伸張手段を選択し、前記第２の伸張手段選択部は、前記第２の伸張手段または前記非伸張手段を選択し、
前記伸張データは、前記第１の伸張手段選択部によって選択された前記伸張手段により前記フィールドを伸張して中間データを生成し、前記第２の伸張手段選択部によって選択された前記伸張手段により前記中間データを伸張して生成することを特徴とする、請求項３に記載のデータ伸張装置。
【請求項５】
請求項１に記載のデータ圧縮装置と、前記データ圧縮装置で生成された圧縮データを伸張する請求項３に記載のデータ伸張装置とを有する、データ圧縮伸張装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、データ圧縮装置、及び、データ伸張装置、並びに、データ圧縮伸張装置に関する。
【背景技術】
【０００２】
従来、オリジナルのデータ列の内容を損なわずにデータ量を圧縮したり、圧縮されたデータを伸張し、オリジナルのデータ列に復元したりする、データ圧縮・伸張技術が開発されている。この技術の一つとして、ランレングス方式が存在する。ランレングス方式は、ある特定のデータが連続して出現する場合に、データ種別と連続する長さとのペアで符号化することにより、当該連続データを圧縮する
ランレングス方式では、圧縮されたデータを高い周波数で伸張する場合、ランレングス値を固定長で表現する方法が一般的に行われている。ただし、固定長方式では、特定データの連続数が非常に大きい場合や、逆に非常に小さい場合には、圧縮効率が悪くなってしまう。そこで、連続数に応じて複数の圧縮データフォーマットを使い分けることで圧縮効率の改善を図る圧縮装置が提案されている（例えば、特許文献１参照）。
【０００３】
しかしながら、伸張装置のスループット（１サイクルで伸張するデータ数）を保証しなければならない場合において、特許文献１に記載された圧縮装置で圧縮されたデータでは、１サイクルで複数のランレングスデータの解析が必要となってしまう。このため、１サイクルの処理中に、比較や加算を多数行わなければならず、動作周波数が低くなってしまうという問題があった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３６７６０７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本実施形態は、圧縮効率の低下を抑制し、かつ、高い周波数で動作可能な、データ圧縮装置、及び、データ伸張装置、並びに、データ圧縮伸張装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本実施形態の圧縮装置は、連続して入力されるデータを、第１のビット幅を有するデータブロックに分割し、前記データブロックを所定の個数ずつ、１セグメントとして出力する入力データ分割部と、前記セグメントの圧縮手段として、一の前記セグメントに含まれる前記データブロックが特定データである割合に応じ、第１の圧縮手段、または第２の圧縮手段、または非圧縮手段のいずれかを選択する、圧縮手段選択部と、前記特定データに関し、連続量を圧縮データに格納する前記第１の圧縮手段を前記セグメントに対し実行する第１の圧縮部と、前記特定データの位置情報を前記圧縮データに格納する前記第２の圧縮手段を前記セグメントに対し実行する第２の圧縮部と、を有し、前記圧縮手段選択部によって選択された手段に従って圧縮された前記圧縮データは、前記圧縮手段を識別可能な識別用ビットを有することを特徴とする。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態に係わる圧縮装置の構成を説明する概略ブロック図。
【図２】圧縮データフォーマットを説明する図。
【図３】入力データと圧縮データのデータ構造を説明する図。
【図４】第１の実施形態に係わる圧縮装置の動作を説明するフローチャート。
【図５】第１の実施形態に係わる圧縮装置の別の構成を説明する図。
【図６】第１の実施形態に係わる伸張装置の構成を説明する概略ブロック図。
【図７】第１の実施形態に係わる伸張装置の動作を説明するフローチャート。
【図８】第１の実施形態の変形例に係わる圧縮データフォーマットを説明する図。
【図９】第１の実施形態の別の変形例に係わる圧縮データフォーマットを説明する図。
【図１０】第２の実施形態に係わる圧縮装置の構成を説明する概略ブロック図。
【図１１】入力データ、中間データ、及び、圧縮データのデータ構造を説明する図。
【図１２】第２の実施形態に係わる圧縮装置の動作を説明するフローチャート。
【図１３】第２の実施形態に係わる伸張装置の構成を説明する図。
【図１４】第２の実施形態に係わる伸張装置の動作を説明するフローチャート。
【発明を実施するための形態】
【０００８】
以下、図面を参照して実施形態を説明する。
（第１の実施形態）
図１は、第１の実施形態に係わる圧縮装置の構成を説明する図である。圧縮装置１は、入力データを受け取って、圧縮データを生成し出力する。圧縮装置１は、入力データから、Ｗbitごとに区切られたデータブロックをN個ずつ取り出す。Ｎ個のデータブロックを１セグメントとし、１セグメントごとに所定の圧縮方法を用いて圧縮データを生成し、出力する。なお、圧縮装置１は、予め設定された特定のデータを圧縮する。以下、特定のデータとして“０”が設定されており、１６bit（Ｗ＝１６）ごとに区切られたデータブロックを４個（Ｎ＝４）ずつ取り出して圧縮する場合について説明する。
【０００９】
圧縮装置１は、データ切り出し部１１と、圧縮方法判定部１２と、圧縮データ生成部１３とを有して構成される。
【００１０】
データ切り出し部（入力データ分割部）１１は、入力データから、圧縮対象となるデータを取り出す。圧縮は、１セグメントごとに行うので、データ切り出し部１１では、１セグメント分のデータとして、入力データの先頭からＮ×Ｗbitずつ切り出す。切り出されたデータは、圧縮方法判定部１２に出力される。
【００１１】
圧縮方法判定部（圧縮手段選択部）１２は、入力された１セグメントのデータを圧縮する方法を決定する。圧縮装置１は、１セグメントごとに、（１）ランレングス方式、（２）フラグ方式、（３）圧縮を行わない（非圧縮）、のいずれかの方法を用いて圧縮を行う。圧縮方法は、以下のように決定する。
【００１２】
N個のデータブロックが全て“０”である場合、ランレングス方式が選択される。“０”であるデータブロックが１つ以上Ｎ個未満の場合、フラグ方式が選択される。Ｎ個のデータブロックが全て“０”以外の値である場合、非圧縮が選択される。選択された圧縮方法と、圧縮対象となるデータとは、圧縮データ生成部１３に出力される。
【００１３】
圧縮データ生成部１３は、ＲＬ圧縮部（第１の圧縮部）１３１と、フラグ圧縮部（第２の圧縮部）１３２と、非圧縮部１３３とから構成される。選択された圧縮方法に応じて、１セグメントの圧縮対象データは、ＲＬ圧縮部１３１、フラグ圧縮部１３２、非圧縮部１３３のいずれかに入力され、圧縮データに変換され出力される。
【００１４】
図２は、圧縮データフォーマットを説明する図である。図２（ａ）は、ランレングス方式の圧縮データ、図２（ｂ）は、フラグ方式の圧縮データの先頭フィールド、図２（ｃ）は、非圧縮データの、データフォーマットを示している。
【００１５】
各データフォーマットの先頭には、識別子が付与される。識別子は、圧縮データがランレングス方式による圧縮データであるか、フラグ方式による圧縮データであるか、非圧縮データであるかを識別可能な値が設定される。例えば、ランレングスは“１”、フラグは“２”、非圧縮は“３”などの値が設定される。
【００１６】
ランレングス方式（第１の圧縮手段）を用いて圧縮したデータは、ランレングス方式で圧縮を行うセグメントの連続数を表すランレングス値を示す。例えば、連続する３つのセグメントのデータブロックが全て“０”である場合、ランレングス値は“３”となる。圧縮データは、Ｗbitのランレングス値の先頭にＩbitの識別子を付加し、Ｉ＋Ｗbitの固定長フィールドで出力される。
【００１７】
フラグ方式（第２の圧縮手段）を用いて圧縮したデータは、図２（ｂ）に示す形式の先頭フィールドに、値が“０”以外データブロックを付加して生成される。先頭フィールドは、フラグビットの先頭に、圧縮方法を識別するための識別子が付与される。フラグビットは、値が“０”であるデータブロックの位置にビット「１」を立て、“０”データの位置情報を記憶させる。従って、フラグビットは、１つのセグメントに含まれるデータブロックの数と等しいビット数（Ｎbit）で表現される。先頭フィールドは、Ｎbitのフラグビットの前に（Ｗ−Ｎ）bitの予備ビットと識別子Ｉbitを付加して、Ｉ＋Ｗbitの固定長フィールドとする。また、値が“０”以外のデータブロックは、各先頭にＩbitの調整ビットを付加し、Ｉ＋Ｗbitの固定長フィールドとする。
【００１８】
例えば、あるセグメントのデータブロックの値が、“１”“０”“２”“０”の順である場合、フラグビットは「０１０１」となる。また、“０”のデータブロックが除去され、“１”と“２”のデータブロックが、先頭フィールドに付加される。
【００１９】
非圧縮の場合、１セグメントのデータは、ＷbitのデータブロックごとにＩbitの識別子を付加し、出力される。すなわち、各方式の圧縮データは、Ｗbitのデータの先頭にＩbitの識別子を付加し、Ｉ＋Ｗbitの固定長フィールドで出力される。
【００２０】
ＲＬ圧縮部１３１は、ランレングス値をカウントするカウンタ１３１ａを有している。圧縮方法判定部１２は、圧縮方法としてランレングス方式を選択した場合、対象データをＲＬ圧縮部１３１に入力し、カウンタ１３１ａをインクリメントする。圧縮方法判定部１２は、次のセグメントの圧縮方式を、フラグ方式または非圧縮と判定した場合、ＲＬ圧縮部１３１に対して圧縮データの出力を指示する。ＲＬ圧縮部１３１は、ランレングス値を用いたフォーマットの圧縮データを生成し、出力する。
【００２１】
フラグ圧縮部１３２は、圧縮方法判定部１２から１セグメント分のデータを入力されると、フォーマットの先頭フィールドを生成し、出力する。先頭フィールドに続けて、入力されたデータから“０”であるデータブロックを除去し、各データの先頭にＩbitの調整ビットを付加して圧縮データを生成し、出力する。
【００２２】
非圧縮部１３３は、圧縮方法判定部１２から１セグメント分のデータを入力されると、各データブロックの先頭にＩbitの識別子を付加し、出力する。
【００２３】
図３は、入力データと圧縮データのデータ構造を説明する図である。図３は、１６bitのデータブロック４個を１セグメントとし、セグメントごとに圧縮を行う場合について示している。入力データの最初のセグメントは、全てのデータブロックの値が“０”であるので、ランレングス方式で圧縮を行う。次のセグメントは、２つ目のデータブロックの値が“１”であり、他のデータブロックの値が“０”であるので、フラグ方式で圧縮を行う。最後のセグメントは、全てのデータブロックの値が“０”以外であるので、非圧縮とする。
【００２４】
従って、最初のセグメントを圧縮したデータとして、ランレングス値が１である１６＋Ｉbitのフィールドが出力される。すなわち、ランレングス圧縮により、１６bitのデータブロック４個が、１６＋Ｉbitのフィールド１個に圧縮されて出力される。
【００２５】
２つ目のセグメントを圧縮したデータとして、４bitのフラグビット「１０１１」を含む１６＋Ｉbitの先頭フィールドが出力される。続いて、当該セグメントから値が“０”であるデータブロックを除去し、“１”のデータブロックを残す。そして、“１”のデータブロックの先頭にＩbitの調整ビットを付加した１６＋Ｉbitのフィールドが出力される。すなわち、１６bitのデータブロック４個がフラグ圧縮されて、１６＋Ｉbitのフィールド２個が出力される。
【００２６】
３つ目のセグメントは非圧縮であるので、各データブロックの先頭に、Ｉbitの識別子を付加した、１６＋Ｉbitのフィールドが４個出力される。
【００２７】
次に、本実施形態の圧縮装置の動作を説明する。図４は、第１の実施形態に係わる圧縮装置の動作を説明するフローチャートである。なお、圧縮に先立ち、圧縮装置には圧縮する特定データの値が登録されているものとする。以下、特定データとして“０”が登録されている場合について、説明する。
【００２８】
まず、カウンタ１３１ａの値をゼロクリアする（ｚｃ＝０、Ｓ１）。続いて、圧縮装置１に１セグメント分の入力データを読み込む（Ｓ２）。データ切り出し部１１は、１セグメント分のデータを構成するＮ個のデータブロックを切り出し、圧縮方法判定部１２に出力する（Ｓ３）。
【００２９】
圧縮方法判定部１２は、Ｎ個のデータブロックのうち、値が“０”であるデータブロックの個数をカウントする（Ｓ４）。Ｎ個のデータブロックの全てが“０”である場合（Ｓ５、ＹＥＳ）、ＲＬ圧縮部１３１は、カウンタ１３１ａの値を１増加させる。そして、圧縮装置１は、Ｓ２に戻って次のセグメントの入力データを読み込む。
【００３０】
一方、Ｎ個のデータブロックのうち、“０”でない値のデータブロックがある場合（Ｓ５、ＮＯ）、カウンタ１３１ａの値をチェックする。カウンタ１３１ａの値が０より大きい場合（Ｓ７、ＹＥＳ）、ＲＬ圧縮部１３１は、読み込み済かつ未圧縮であるセグメントのデータをランレングス方式で圧縮する。すなわち、カウンタ１３１ａの値をランレングス値とする圧縮データを生成し（Ｓ８）、出力する（Ｓ１２）。続いてＳ９に進み、現在の入力データについて、圧縮方法の判定を継続する。
【００３１】
カウンタ１３１ａの値が０である場合（Ｓ７、ＮＯ）、Ｎ個のデータブロックの中に、値が“０”のものが存在するか否かを判定する（Ｓ９）。値が“０”のデータブロックが存在する場合（Ｓ９、ＹＥＳ）、フラグ圧縮部１３２は、セグメントのデータからフラグビットを作成してフラグ圧縮し（Ｓ１０）、圧縮データを出力する（Ｓ１３）。
【００３２】
一方、値が“０”のデータブロックが存在しない場合（Ｓ９、ＮＯ）、非圧縮部１３３は、非圧縮処理（非圧縮データを示す識別子を、データの先頭に付与する）を行い（Ｓ１１）、圧縮データとして出力する（Ｓ１３）。
【００３３】
圧縮データの出力が完了すると、Ｓ１に戻り、カウンタ１３１ａをゼロクリアした後に、次のセグメントの入力データを読み込む。このようにして、圧縮装置１へのデータの入力が終了するまで、Ｓ１からＳ１３の一連の動作を繰り返し、圧縮データを生成して出力する。
【００３４】
なお、図１では、ハードウェア上で圧縮装置を実現する場合について示しているが、ソフトウェアを用いて実現してもよい。図５は、第１の実施形態に係わる圧縮装置の別の構成例を説明する図である。ソフトウェアで実現する場合、圧縮動作を記述した圧縮プログラム３３をデータベース３に登録しておく。データの圧縮を行う際には、ＰＣ２のＲＡＭ２２に圧縮プログラム３３を読み込んで展開する。そして、データベース３からＰＣ２に入力データ３１を読み込み、ＣＰＵ２１で圧縮プログラム３３を実行することにより、圧縮データ３２を生成する。
【００３５】
なお、図５では、入力データ３１、圧縮データ３２、圧縮プログラム３３を同一のデータベース３に格納するように構成しているが、別々のデータベースに格納するように構成してもよい。また、入力データ３１と圧縮データ３２とは、データベース３に格納せずに、別の装置との間で直接入出力するように構成してもよい。
【００３６】
次に、圧縮装置１を用いて生成した圧縮データを伸張する伸張装置４について説明する。図６は、第１の実施形態に係わる伸張装置の構成を説明する図である。伸張装置４は、圧縮データを受け取って、伸張データを生成し出力する。伸張装置４は、圧縮データから、Ｉ＋Ｗbitごとに出力されたフィールド単位でデータを伸張し、Ｗbitのデータブロック単位で伸張データを出力する。
【００３７】
伸張装置４は、伸張方法判定部（伸張手段選択部）４１と、伸張データ生成部４２とを有して構成される。伸張方法判定部４１は、入力された圧縮データを伸張する方法を決定する。圧縮データとして、（１）ランレングス方式、（２）フラグ方式、（３）非圧縮、の３つのタイプの圧縮データが入力される。各フィールドの先頭には、圧縮方法を示すＩbitの識別子が付与されている。従って、この識別子を解析することで、伸張方法判定部４１は伸張方法を判別する。なお、伸張方法判定部４１は、伸張方法判定の対象となるフィールドの位置を示すリードポインタ４１ａを備える。
【００３８】
伸張データ生成部４２は、ＲＬ伸張部（第１の伸張部）４２１と、フラグ伸張部（第２の伸張部）４２２と、非伸張部４２３とから構成される。伸張方法判定部４１で選択された伸張方法に応じて、１フィールド分の圧縮データが、ＲＬ伸張部４２１、フラグ伸張部４２２、非伸張部４２３のいずれかに入力され、伸張データに変換され出力される。
【００３９】
伸張方法判定部４１において、リードポインタ４１ａが指すフィールドの識別子が、ランレングス方式を示していると判定された場合、当該フィールドはＲＬ伸張部４２１に入力される。ＲＬ伸張部４２１は、当該フィールドに格納されているランレングス値に基づき、伸張データを生成する。すなわち、ランレングス値が示すセグメント数だけ、特定データを出力する。例えば、ランレングス値が３の場合、３セグメント×４データブロック＝１２個の“０”を出力する。伸張方法判定部４１は、伸張に用いたフィールド数（＝１フィールド）だけ、リードポインタ４１ａを進める。
【００４０】
伸張方法判定部４１において、識別子がフラグ方式を示していると判定された場合、当該フィールドはフラグ伸張部４２２に入力される。フラグ伸張部４２２は、当該フィールドに格納されているフラグビットを解析し、伸張に用いるフィールド数を決定する。すなわち、フラグ方式では、フラグビットが「１」である箇所はデータが圧縮されているが、フラグビットが「０」である箇所はデータが圧縮されずに付加されている。従って、フラグビットを格納している先頭フィールドに加え、データが圧縮されずに付加されているフィールド分のデータを用いて伸張を行う。
【００４１】
例えば、フラグビットが「０１０１」である場合、伸張に用いるフィールド数は、１（先頭フィールド）＋２（フラグビット０の個数）＝３となる。フラグ伸張部４２２は、伸張方法判定部４１に対し、フラグビット「０」の個数分のフィールドを要求する。また、伸張方法判定部４１は、伸張に用いるフィールド数だけ、リードポインタ４１ａを進める。
【００４２】
伸張方法判定部４１は、要求された個数分のフィールドを、フラグ伸張部４２２に出力する。フラグ伸張部４２２は、先頭フィールドに格納されているフラグビットに従い、フラグビットが「１」の場合は“０”を出力し、フラグビットが「０」の場合は、後続のフィールドの値を出力する。
【００４３】
例えば、フラグビットが「０１０１」であり、圧縮データとして入力された後続のフィールドが“２”“３”である場合、“２”“０”“３”“０”の４個のデータブロックを伸張データとして出力する。
【００４４】
伸張方法判定部４１において、識別子が非圧縮を示していると判定された場合、当該フィールドは非伸張部４２３に入力される。非伸張部４２３は、先頭のＩbitの識別子を削除し、Ｗbitの伸張データとして出力する。伸張方法判定部４１は、処理に用いたフィールド数（＝Ｎフィールド）分だけ、リードポインタ４１ａを進める。
【００４５】
すなわち、本実施形態の伸張装置４は、圧縮データのフィールドを参照すれば、伸張方法、及び、１サイクルの伸張に用いるフィールド数を決定することができる。従って、従来のように、複数のフィールドを参照してフィールド間の加算や比較を行う必要がないため、高い周波数で伸張処理を行うことができる。
【００４６】
次に、本実施形態の伸張装置の動作を説明する。図７は、第１の実施形態に係わる伸張装置の動作を説明するフローチャートである。なお、データ伸張に先立ち、伸張装置には伸張する特定データの値が登録されているものとする。また、リードポインタ４１ａは、入力される圧縮データの先頭のフィールドを指しているものとする。以下、特定データとして“０”が登録されている場合について、説明する。
【００４７】
まず、リードポインタ４１ａを参照し、圧縮データのフィールドを読み込み、当該フィールドに付加されている識別子を解析する（Ｓ２１）。識別子がランレングス方式を示している場合（Ｓ２２、ＹＥＳ）、ＲＬ伸張部４２１において当該フィールドをランレングス伸張する（Ｓ２３）。伸張方法判定部４１は、リードポインタ４１ａを１進め（Ｓ２４）、伸張データを出力する（Ｓ３０）。
【００４８】
識別子がランレングス方式ではないと判定された場合（Ｓ２２、ＮＯ）、フラグ方式であるか否かを判定する（Ｓ２５）。フラグ方式であると判定された場合（Ｓ２５、ＹＥＳ）、フラグ伸張部４２２においてフラグビット解析を行い、フラグ伸張に必要なフィールドを伸張方法判定部４１に要求し、フラグ伸張を行う（Ｓ２６）。また、伸張方法判定部４１は、フラグ伸張に用いたフィールド数（フラグビットが「０」の数＋１）だけ、リードポインタ４１ａを進め（Ｓ２７）、伸張データを出力する（Ｓ３０）。
【００４９】
識別子がフラグ方式ではないと判定された場合（Ｓ２５、ＮＯ）、非圧縮データであると判定する。非伸張部４２３において、先頭のＩbitを当該フィールドから削除し、伸張データを生成する（Ｓ２８）。伸張方法判定部４１は、リードポインタ４２１ａをＮ進め（Ｓ２９）、伸張データを出力する（Ｓ３０）。
【００５０】
ＲＬ伸張部４２１、フラグ伸張部４２２、非伸張部４２３のいずれかから伸張データが出力される（Ｓ３０）と、Ｓ２１に戻り、リードポインタ４２１ａが示すフィールドを解析する。このようにして、伸張装置４へのデータの入力が終了するまで、Ｓ２１からＳ３０の一連の動作を繰り返し、伸張データを生成して出力する。
【００５１】
なお、上述ではハードウェア上で伸張装置を実現する場合について説明しているが、圧縮装置同様に、図７に示す伸張動作を、ソフトウェアを用いて実現してもよい。
【００５２】
このように、本実施形態によれば、Ｎ個のデータブロックからなるセグメントごとにデータを圧縮する。圧縮データの先頭に、圧縮方法を示す識別子を付与することで、伸張時には圧縮データのフィールドを参照すれば、伸張方法、及び、１サイクルの伸張に用いるフィールド数を決定することができる。従って、従来のように、複数のフィールドを参照してフィールド間の加算や比較を行う必要がないため、高い周波数で伸張処理を行うことができる。ただし、ランレングス圧縮を１セグメントごとに行うため、ランレングス値がＮ個の倍数に制限されてしまい、圧縮効率が低下する可能性がある。しかしながら、本実施形態によれば、ランレングス方式に加えてフラグ方式を併用することで、端数の特定データについても圧縮を行うことができるため、圧縮効率の低下を抑制することができる。
【００５３】
なお、圧縮データのフォーマットは、図２に示すフォーマットに限定される趣旨のものではなく、フィールドが固定長であって、特定の位置を参照することで圧縮方法を識別できるようなものであれば、種々の変更が可能である。図８は、第１の実施形態の変形例に係わる圧縮データフォーマットを説明する図である。フラグ方式の先頭フィールドのデータフォーマットの一例を示している。
【００５４】
本変形例では、フラグ圧縮の先頭フィールドにおいて、図２（ｂ）に示した（Ｗ−Ｎ）bitの予備ビット部分に、フラグビットにおける非ゼロの数を格納する。これにより、フラグ方式で圧縮されたデータを伸張する際に、非ゼロ数を参照し、これに１（＝先頭フィールド）を加えることで、伸張に用いるフィールドの数を特定することができる。フラグビットを解析してフィールド数を算出する必要がなくなるため、より高周波数で伸張処理を行うことができる。
【００５５】
なお、フラグビットの非ゼロ数に１を加えた数を、予備ビット部分に格納してもよい。この場合、予備ビット部分の数＝伸張に必要なフィールド数となるため、伸張に必要なフィールド数特定時の加算処理が不要になり、より高周波数での処理が可能となる。
【００５６】
図９は、第１の実施形態の別の変形例に係わる圧縮データフォーマットを説明する図である。図９には、入力データのフォーマットが、ＩＥＥＥ７５４の半精度２進浮動小数点表現である場合の、圧縮データフォーマットの一例を示している。例えばＩＥＥＥ７５４のように、入力データのフォーマットが予め定義されている場合、特定のビットパターンに圧縮方式を割り当てることで、圧縮方式の識別が可能となる。
【００５７】
ＩＥＥＥ７５４の半精度２進浮動小数点表現のデータフォーマットでは、１６bitのデータブロックのうち、先頭の１bitが符号部、続く５bitが指数部、最後の１０bitが仮数部に割り当てられている。符号部、指数部、仮数部の組み合わせで、±０、非正規仮数、正規仮数、ＮａＮ、±∞を識別、表現する。例えば、非正規仮数やＮａＮが使用されない用途である（入力データとして用いられない）場合、これらのパターンにランレングス方式やフラグ方式を割り当てる。
【００５８】
例えば、非正規化数を表すパターン（符号部：１、指数部：０、仮数部：０以外の値）にランレングス方式で圧縮したデータを、ＮａＮを表すパターン（符号部：０or１、指数部：０ｘ１ｆ、仮数部：０以外の任意の値）にフラグ方式で圧縮したデータを割り当てる。ランレングス方式で圧縮したデータは、仮数部にランレングス値を格納し、フラグ方式で圧縮したデータは、仮数部にフラグビット（または、伸張時に用いるフィールド数、及び、フラグビット）を格納する。
【００５９】
この場合、フィールドの先頭の６bitを参照し、符号部＝１、指数部＝０であれば、ランレングス方式を用いた圧縮データであると判定する。また、フィールドの２bit目以降を参照し、指数部＝０ｘ１ｆ、仮数部：非ゼロであれば、フラグ方式を用いた圧縮データであると判定することができる。従って、圧縮データの先頭に、識別子を付加する必要がなくなるため、圧縮後の各データのビット幅が、入力データのビット幅（＝Ｗbit）のままとなる。従って、圧縮効率が改善される。
【００６０】
なお、予めデータフォーマットが定義されている入力データであれば、ＩＥＥＥ７５４以外のフォーマットでもよく、例えば、ＡＳＣＩＩコードなどの文字コードでもよい。ＡＳＣＩＩコードは、８bitでアルファベット、数字、記号等を識別、表現する。例えば、″が使用されない用途である（入力データとして用いられない）場合、記号のパターンにランレングス方式やフラグ方式を割り当てることができる。
（第２の実施形態）
第１の実施形態の圧縮装置は、ランレングス方式、フラグ方式、非圧縮のいずれの方法で圧縮を行うかを圧縮方法判定部で判定し、それぞれの圧縮部に入力データを振り分けていた。これに対し、第２の実施形態の圧縮装置は、まず、一つ目の圧縮器で、入力データに関してランレングス方式の圧縮を行い、続いて二つ目の圧縮器で、入力データに関してフラグ方式の圧縮を行う、すなわち、２段階で圧縮を行う点が異なっている。
【００６１】
図１０は、第２の実施形態に係わる圧縮装置の構成を説明する図である。圧縮装置５は、第１圧縮器５１と、第２圧縮器５２とから構成される。第１の圧縮器５１で入力データを受け取って、中間データを生成し、第２圧縮器５２に出力する。第２圧縮器５２は、中間データから圧縮データを生成し、出力する。
【００６２】
圧縮装置５は、入力データから、Ｗbitごとに区切られたデータブロックをN個ずつ取り出す。Ｎ個のデータブロックを１セグメントとし、ランレングス方式の圧縮を行い、中間データを生成して出力する。続いて、中間データから、Ｗ＋Ｉbitごとに区切られたシンボルをＮ個ずつ取り出す。Ｎ個のシンボルを１セグメントとし、フラグ方式の圧縮あるいは非圧縮を行い、圧縮データを生成して出力する。本実施形態の圧縮装置は、予め設定された特定のデータを圧縮する。以下、特定のデータとして“０”が設定されており、入力データから１６bit（Ｗ＝１６）ごとに区切られたデータブロックを４個（Ｎ＝４）ずつ取り出して圧縮する場合について説明する。
【００６３】
第１圧縮器５１は、データ切り出し部５１１と、圧縮方法判定部５１２と、圧縮データ生成部５１３とを有して構成される。圧縮データ生成部５１３は、ＲＬ圧縮部５１４と、非圧縮部５１５とを有して構成される。また、第２圧縮器５２は、データ切り出し部５２１と、圧縮方法判定部５２２と、圧縮データ生成部５２３とを有して構成される。圧縮データ生成部５２３は、フラグ圧縮部５２４と、非圧縮部５２５とを有して構成される。
【００６４】
データ切り出し部５１１は、入力データから、圧縮対象となるデータを取り出す。圧縮は、１セグメントごとに行うので、データ切り出し部５１１では、１セグメントのデータとして、入力データの先頭からＮ×Ｗbitずつ切り出す。切り出されたデータは、圧縮方法判定部５１２に出力される。
【００６５】
圧縮方法判定部５１２は、１セグメントの入力データをランレングス方式で圧縮するか否かを判定する。N個のデータブロックが全て“０”である場合、ランレングス方式で圧縮可能であると判定される。ランレングス方式で圧縮可能であると判定された場合、Ｎ個のシンボルは、ＲＬ圧縮部５１４に出力される。一方、ランレングス方式で圧縮不可と判定された場合、非圧縮部５１５に出力される。
【００６６】
ＲＬ圧縮部５１４は、ランレングス値をカウントするカウンタ５１２ａを有している。圧縮方法判定部５１２は、ランレングス方式で圧縮可能であると判定した場合、カウンタ５１２ａをインクリメントする。圧縮方法判定部５１２は、次のセグメントの入力データをランレングス方式で圧縮不可と判定した場合、ＲＬ圧縮部５１４に対して圧縮データの出力を指示する。ＲＬ圧縮部５１４は、ランレングス値を用いて図２（ａ）に示すフォーマットの圧縮データを生成し、中間データとして出力する。
【００６７】
非圧縮部５１５は、圧縮方法判定部５１２から１セグメント分のデータを入力されると、各データブロックの先頭にＩbitの調整ビット（例えば“０”）を付加し、中間データとして出力する。
【００６８】
データ切り出し部５２１は、中間データから、圧縮対象となるデータを取り出す。圧縮は、１セグメントごとに行うので、データ切り出し部５２１は、１セグメントのデータとして、中間データの先頭からＮ×（Ｗ＋Ｉ）bitずつ切り出す。切り出されたデータは、圧縮方法判定部５２２に入力される。
【００６９】
圧縮方法判定部５２２は、１セグメントの中間データをフラグ方式で圧縮するか否かを判定する。 “０”であるシンボルが１つ以上Ｎ個未満の場合、フラグ方式で圧縮可能であると判定される。フラグ方式で圧縮可能であると判定された場合、Ｎ個のシンボルは、フラグ圧縮部５２４に出力される。一方、フラグ方式で圧縮不可と判定された場合、非圧縮部５２５に出力される。
【００７０】
フラグ圧縮部５２４は、圧縮方法判定部５２２から１セグメント分のデータを入力されると、第１の実施形態のフラグ圧縮部１３２と同様に、図２（ｂ）に示すフォーマットの先頭フィールドを生成し、出力する。先頭フィールドに続けて、入力されたデータから“０”であるデータブロックを除去して圧縮データを生成し、出力する。なお、先頭フィールドは、図８に示すフォーマットでもよい。
【００７１】
非圧縮部５２５は、圧縮方法判定部５２２から１セグメント分のデータを入力されると、先頭のＩbitについて、非圧縮を識別する識別子に変更し、出力する。
【００７２】
図１１は、入力データ、中間データ、及び、圧縮データのデータ構造を説明する図である。図１１は、データブロックまたはシンボル４個を１セグメントとし、セグメントごとに圧縮を行う場合について示している。入力データの最初のセグメントは、全てのデータブロックの値が“０”であるので、第１圧縮器５１においてランレングス方式で圧縮を行う。２番目のセグメントと、３番目のセグメントは、“０”以外のデータブロックを含むので、第１圧縮器５１では圧縮を行わない。
【００７３】
従って、中間データとして、まず、データブロック４個が、ランレングス方式により１６＋Ｉbitのシンボル１個に圧縮されて出力される。これに続いて、各データブロックの先頭にＩbitの調整ビットが付加された８個のシンボルが出力される。すなわち、１２個のデータブロックが９個のシンボルに圧縮されて出力される。
【００７４】
続いて、中間データの最初のセグメントは、２番目と４番目のシンボルが“０”であるので、フラグ方式で圧縮を行う。２番目のセグメントは、１番目のシンボルが“０”であるので、フラグ圧縮を行う。９番目のシンボルは、これ以降のシンボルの値に応じて圧縮を行う。（ここでは、非圧縮とする。）
従って、最初のセグメントの圧縮データとして、先頭フィールドが出力され、 “ＲＬ”“１”のフィールドが続く。なお、“ＲＬ”は、ランレングス方式で圧縮生成されていることを示す。すなわち、４個のシンボルがフラグ圧縮され、３個のフィールドが出力される。
【００７５】
続いて、２番目のセグメントの圧縮データとして、先頭フィールドが出力され、 “２”“３”“４”のデータブロックが続く最後に、非圧縮である９番目のシンボルが、先頭のＩbit部分を、非圧縮を識別する識別子に変換され、１フィールドの圧縮データとして出力される。
【００７６】
次に、本実施形態の圧縮装置の動作を説明する。図１２は、第２の実施形態に係わる圧縮装置の動作を説明するフローチャートである。なお、圧縮に先立ち、圧縮装置には圧縮する特定データの値が登録されているものとする。以下、特定データとして“０”が登録されている場合について、説明する。
【００７７】
まず、カウンタ５１２ａの値をゼロクリアする（ｚｃ＝０、Ｓ３１）。続いて、第１圧縮器５１に、１セグメント分の入力データを読み込む（Ｓ３２）。データ切り出し部５１１は、１セグメント分のデータを構成するＮ個のデータブロックを切り出し、圧縮方法判定部５１２に出力する（Ｓ３３）。
【００７８】
圧縮方法判定部５１２は、Ｎ個のデータブロックのうち、値が“０”であるデータブロックの個数をカウントする（Ｓ３４）。Ｎ個のデータブロックの全てが“０”である場合（Ｓ３５、ＹＥＳ）、カウンタ５１２ａの値を１増加させ（Ｓ３６）、第１圧縮器５１は、Ｓ３２に戻って次のセグメントの入力データを読み込む。
【００７９】
一方、Ｎ個のデータブロックのうち、“０”でない値のデータブロックがある場合（Ｓ３５、ＮＯ）、ＲＬ圧縮部５１３は、カウンタ５１２ａの値をランレングス値とする圧縮データを生成し、中間データとして出力する。また、非圧縮部５１４は、Ｎ個のデータブロックのそれぞれの先頭に、ビット幅調整用のＩbit （例えば“０”）を付加し、中間データとして出力する（Ｓ３７）。以上、Ｓ３１からＳ３７までの一連の処理は、第１圧縮器５１において実行される。
【００８０】
続いて、第２圧縮器５２に、１セグメント分の中間データを読み込む。データ切り出し部５２１は、１セグメント分のデータを構成するＮ個のシンボルを切り出し、圧縮方法判定部５２２に出力する（Ｓ３８）。圧縮方法判定部５２２は、Ｎ個のシンボルの中に、値が“０”のものが存在するか否かを判定する（Ｓ３９）。値が“０”のデータブロックが存在する場合（Ｓ３９、ＹＥＳ）、フラグ圧縮部５２４において、セグメントのデータからフラグビットを作成してフラグ圧縮し（Ｓ４０）、圧縮データとして出力する（Ｓ４２）
一方、値が“０”のシンボルが存在しない場合（Ｓ３９、ＮＯ）、非圧縮部５２５は、非圧縮処理（非圧縮を示す識別子を、シンボルの先頭の調整ビットと置換する処理）を行い（Ｓ４１）、圧縮データとして出力する（Ｓ４２）。以上、Ｓ３８からＳ４２までの一連の処理は、第２圧縮器５２において実行される。
【００８１】
圧縮データの出力が完了すると、Ｓ３１に戻り、カウンタ５１２ａをゼロクリアした後に、次のセグメントの入力データを読み込む。このようにして、圧縮装置５へのデータの入力が終了するまで、Ｓ３１からＳ４１の一連の動作を繰り返し、圧縮データを生成して出力する。
【００８２】
なお、上述ではハードウェア上で圧縮装置を実現する場合について説明しているが、図１２に示す圧縮動作を、ソフトウェアを用いて実現してもよい。
【００８３】
次に、の圧縮装置５を用いて生成した圧縮データを伸張する伸張装置６について説明する。図１３は、第２の実施形態に係わる伸張装置の構成を説明する図である。伸張装置６は、圧縮データから、Ｉ＋Ｗbitごとに出力されたフィールド単位でデータを伸張し、伸張データを出力する。伸張装置６は、第１伸張器６１と、第２伸張器６２とから構成される。第１伸張器６１は、圧縮データから中間データを生成し、第２伸張器６２に出力する。第２伸張器６２は、中間データから伸張データを生成し、出力する。
【００８４】
第１伸張器６１は、伸張方法判定部６１１と、中間データ生成部６１２とを有して構成される。伸張方法判定部６１１は、伸張方法判定の対象となるフィールドの位置を示すリードポインタ６１１ａを備える。リードポインタ６１１ａが指すフィールドの識別子が、フラグ方式を示していると判定された場合、当該フィールドはフラグ伸張部６１３に入力される。フラグ伸張部６１３は、当該フィールドに格納されているフラグビットを解析し、伸張に用いるフィールド数を決定する。そして、フラグ伸張部６１３は、伸張方法判定部６１１に対し、フラグビット０の個数分のフィールドを要求する。伸張方法判定部６１１は、伸張に用いるフィールド数だけリードポインタ６１１ａを進める。
【００８５】
伸張方法判定部６１１は、要求された個数分のフィールドを、フラグ伸張部６１３に出力する。フラグ伸張部６１３は、先頭フィールドに格納されているフラグビットに従い、フラグビットが「１」の場合は“０”を出力し、フラグビットが「０」の場合は、後続のフィールドの値を出力する。
【００８６】
例えば、フラグビットが「０１０１」であり、圧縮データとして入力された後続のフィールドが“ＲＬ”“３”である場合、“ＲＬ”“０”“３”“０”の４個のシンボルを中間データとして出力する。ランレングス方式で圧縮生成されたシンボル“ＲＬ”は、フラグ伸張において、非ゼロと同様に扱われる。なお、中間データのシンボルは、１６＋Ｉbit区切りで生成される。
【００８７】
伸張方法判定部６１１において、識別子が非圧縮を示していると判定された場合、当該フィールドは非伸張部６１４に入力される。非伸張部６１４は、入力されたフィールドをそのまま中間データとして出力する。伸張方法判定部６１１は、処理に用いたフィールド数（＝Nフィールド）分だけ、リードポインタ６１１ａを進める。
【００８８】
第２伸張器６２は、伸張方法判定部６２１と、伸張データ生成部６２２とを有して構成される。伸張方法判定部６２１は、伸張方法判定の対象となるシンボルの位置を示すリードポインタ６２１ａを備える。リードポインタ６２１ａが指すシンボルの識別子が、ランレングス方式を示していると判定された場合、当該シンボルはＲＬ伸張部６２３に入力される。ＲＬ伸張部６２３は、当該シンボルに格納されているランレングス値に基づき、伸張データを生成する。伸張方法判定部６２１は、伸張に用いたシンボル数（＝１シンボル）だけ、リードポインタ６２１ａを進める。
【００８９】
伸張方法判定部６２１において、識別子が非圧縮を示していると判定された場合、当該シンボルは非伸張部６２４に入力される。非伸張部６２４は、先頭のＩbitの識別子を削除し、Ｗbitの伸張データとして出力する。伸張方法判定部６２１は、処理に用いたシンボル数（＝Ｎシンボル）分だけ、リードポインタ６２１ａを進める。
【００９０】
すなわち、本実施形態の伸張装置６は、フラグ方式での伸張処理と、ランレングス方式での伸張処理とを、別々の伸張器で段階的に行うことにより、圧縮データの先頭のフィールドの解析パターン数を削減することができる。従って、より高い周波数で伸張処理を行うことができる。
【００９１】
次に、本実施形態の伸張装置の動作を説明する。図１４は、第２の実施形態に係わる伸張装置の動作を説明するフローチャートである。なお、データ伸張に先立ち、伸張装置には伸張する特定データの値が登録されているものとする。また、リードポインタ６１１ａ、６２１ａは、圧縮データ、及び、中間データの、先頭のフィールドを示しているものとする。以下、特定データとして“０”が登録されている場合について、説明する。
【００９２】
まず、リードポインタ６１１ａを参照し、伸張対象となる圧縮データの先頭フィールドを第１伸張器６１に読み込み、当該フィールドに付加されている識別子を解析する（Ｓ５１）。識別子がフラグ方式を示している場合（Ｓ５２、ＹＥＳ）、フラグ伸張部６１３において当該フィールドをフラグ伸張し、中間データとして出力する。また、伸張方法判定部６１１は、フラグ伸張に用いたフィールド数（フラグビットが０の数＋１）だけ、リードポインタ６１１ａを進める（Ｓ５３）。
【００９３】
識別子がフラグ方式の圧縮データを示していないと判定された場合（Ｓ５２、ＮＯ）、非伸張部６１４を介し、当該フィールドをそのまま中間データとして出力する。伸張方法判定部６１１は、リードポインタ６１１ａをＮ進める（Ｓ５４）。Ｓ５１からＳ５４までの一連の手順は、第１伸張器６１において実行される。
【００９４】
続いて、リードポインタ６２１ａを参照し、中間データのシンボルを第２伸張器６２に読み込み、当該シンボルに付加されている識別子を解析する（Ｓ５５）。識別子がランレングス方式であると判定された場合（Ｓ５６、ＹＥＳ）、ＲＬ伸張部６２３においてランレングス伸張を行い、伸張データを生成する（Ｓ５７）。また、伸張方法判定部６１１は、リードポインタ６２１ａを１進め（Ｓ６０）、伸張データを出力する（Ｓ６１）。
【００９５】
識別子がランレングス方式ではないと判定された場合（Ｓ５６、ＮＯ）、非圧縮であると判定する。非伸張部６２４において、先頭のＩbitを当該シンボルから削除し、伸張データを生成する（Ｓ５８）。また、伸張方法判定部６２１は、リードポインタ６２１ａをN進め（Ｓ５９）、伸張データを出力する（Ｓ６１）。上述のＳ５５からＳ６１までの一連の手順は、第２伸張器６２において実行される。
【００９６】
伸張データ生成部６２２から伸張データが出力されると、Ｓ５１に戻り、リードポインタ６１１ａが示すフィールドを解析する。このようにして、伸張装置６へのデータの入力が終了するまで、Ｓ５１からＳ６１の一連の動作を繰り返し、伸張データを生成して出力する。
【００９７】
なお、上述ではハードウェア上で伸張装置を実現する場合について説明しているが、圧縮装置同様に、図１４に示す伸張動作を、ソフトウェアを用いて実現してもよい。
【００９８】
このように、本実施形態によれば、ランレングス方式と、フラグ方式とを２段階に分けて圧縮を行っているので、伸張処理においても、フラグ方式と、ランレングス方式とを、別々の伸張器で段階的に行うことができる。これにより、圧縮データのフィールドの解析パターン数を削減することができる。従って、より高い周波数で伸張処理を行うことができる。
【００９９】
なお、圧縮のデータフォーマットは、フィールドが固定長であって、特定の位置を参照することで圧縮方法を識別できるようなものであれば、種々の変更が可能である。例えば、図８に示すように、フラグ圧縮の先頭フィールドについて、（Ｗ−Ｎ）bitの予備ビット部分に、フラグビットにおける非ゼロの数を格納してもよい。また、図９に示すように、入力データのフォーマットが予め定義されている場合、特定のビットパターンに圧縮方式を割り当て、圧縮方式の識別子を付加せずに圧縮処理を行うようにしてもよい。圧縮データフォーマットの変更に応じて、伸張時における圧縮方法を識別する具体的な方法は、変更される。
【０１００】
本明細書における各「部」は、実施の形態の各機能に対応する概念的なもので、必ずしも特定のハードウェアやソフトウエア・ルーチンに１対１には対応しない。従って、本明細書では、実施の形態の各機能を有する仮想的回路ブロック（部）を想定して説明した。
【０１０１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、一例として示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０２】
１、５…圧縮装置、２…ＰＣ、３…データベース、４、６…伸張装置、１１、５１１、５２１…データ切り出し部、１２、５１２、５２２…圧縮方法判定部、１３、５１３、５２３…圧縮データ生成部、３１…入力データ、３２…圧縮データ、３３…圧縮プログラム、４１、６１１、６２１…伸張方法判定部、４１ａ、４２１ａ、６１１ａ、６２１ａ…リードポインタ、４２、６２２…伸張データ生成部、５１…第１圧縮器、５２…第２圧縮器、６１…第１伸張器、６２…第２伸張器、１３１、５１４…ＲＬ圧縮部、１３１ａ、５１２ａ…カウンタ、１３２、５２４…フラグ圧縮部、１３３、５１５、５２５…非圧縮部、４２１、６２３…ＲＬ伸張部、４２２、６１３…フラグ伸張部、４２３、６１４、６２４…非伸張部、６１２…中間データ生成部、
【図１】
2018061199.tif 000003
【図２】
2018061199.tif 000004
【図３】
2018061199.tif 000005
【図４】
2018061199.tif 000006
【図５】
2018061199.tif 000007
【図６】
2018061199.tif 000008
【図７】
2018061199.tif 000009
【図８】
2018061199.tif 000010
【図９】
2018061199.tif 000011
【図１０】
2018061199.tif 000012
【図１１】
2018061199.tif 000013
【図１２】
2018061199.tif 000014
【図１３】
2018061199.tif 000015
【図１４】
2018061199.tif 000016