CN113796015A - 数据的压缩和解压缩方法、数据压缩装置、以及数据解压缩装置 - Google Patents

数据的压缩和解压缩方法、数据压缩装置、以及数据解压缩装置 Download PDF

Info

Publication number
CN113796015A
CN113796015A CN202080033904.8A CN202080033904A CN113796015A CN 113796015 A CN113796015 A CN 113796015A CN 202080033904 A CN202080033904 A CN 202080033904A CN 113796015 A CN113796015 A CN 113796015A
Authority
CN
China
Prior art keywords
symbol
entry
compression
registered
decompression
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080033904.8A
Other languages
English (en)
Inventor
山际伸一
丸茂孝一
早川荣作
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of Tsukuba NUC
Original Assignee
University of Tsukuba NUC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by University of Tsukuba NUC filed Critical University of Tsukuba NUC
Publication of CN113796015A publication Critical patent/CN113796015A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4087Encoding of a tuple of symbols
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6052Synchronisation of encoder and decoder
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

压缩装置进行处理:在所输入的符号没有登录在具有多个条目的第一表的情况下,在将所述符号登录于所述多个条目中的一个,并且输出表示非压缩的指标数据和所述符号的处理;在所述符号已登录在所述表的情况下,输出表示压缩的指标数据和表示登录有所述符号的条目的位置并具有比所述符号的大小小的大小的位置信息的处理;以及根据所述多个条目的使用状况而改变所述位置信息的大小的处理。

Description

数据的压缩和解压缩方法、数据压缩装置、以及数据解压缩 装置
技术领域
本发明涉及数据的压缩和解压缩方法、数据压缩装置、以及数据解压缩装置。
背景技术
以往,存在一种数据压缩器(例如,专利文献1),其包括:转换部,其在由多个固定长度的符号(symbol)所组成的输入数据流所包含的、连续的两个以上的符号已被登录的情况下,将两个以上的符号转换为一个符号;以及输出部,其在两个以上的符号在转换部中已被转换为一个符号的情况下,输出该一个符号,否则,输出两个以上的符号。
此外,存在如下的数据压缩方法。即,以符号为单位压缩数据流,其中,符号为固定长度的数据。而后,检索表示转换前的两个以上的符号和转换后的一个符号的对应关系的条目(entry)所登录的转换表(conversion table),在判断为数据流中连续的两个以上的符号没有作为转换前的两个以上的符号登录的情况下,将连续的两个以上的符号作为转换前的两个以上的符号的条目登录于转换表。此外,将连续的两个以上的符号不转换而输出,在数据流中连续的两个以上的符号作为转换前的两个以上的符号登录在转换表的条目的情况下,将连续的两个以上的符号转换为在该条目中建立了对应关系的转换后的一个符号(例如,专利文献2)。
(现有技术文献)
(专利文献)
专利文献1:日本特开2014-236449号公报
专利文献2:日本特开2016-184830号公报
发明内容
(发明所要解决的问题)
在上述现有技术中,通过将固定长度的两个符号转换为固定长度的一个符号来进行压缩,并没有根据表(table)的使用状况而使压缩后的数据长度可变的观点。
本发明是鉴于上述问题而提出的,其目的在于,提供一种根据表的使用状况而可使数据的压缩率提高的技术。
(解决问题所采用的措施)
本发明的方式之一为数据的压缩和解压缩方法,其中,压缩装置进行以下处理:在所输入的符号未登录在具有多个条目的第一表的情况下,将所述符号登录于所述多个条目中的一个,并且输出表示非压缩的指标数据和所述符号的处理;在所述符号已登录在所述表的情况下,输出表示压缩的指标数据和表示登录有所述符号的条目的位置并具有比所述符号的大小(size)小的大小的位置信息的处理;以及根据所述多个条目的使用状况而改变所述位置信息的大小的处理;
解压缩装置进行以下处理:在接收到表示所述非压缩的指标数据和所述符号的情况下,以与所述压缩装置的所述符号的登录方法相同的方法将所述符号登录于具有与所述第一表相同的数据结构的第二表中,并且输出所述符号的处理;以及在接收到表示所述压缩的指标数据和所述位置信息的情况下,读取在由所述位置信息所表示的所述第二表中的条目中登录的所述符号而输出的处理。
本发明的其他方式可以包括上述压缩装置、解压缩装置、基于这些的数据压缩方法和数据解压缩方法、将计算机作为压缩装置、解压缩装置而使其工作的程序等。
(发明的效果)
根据本发明,根据表的使用状况而可使数据的压缩率提高。
附图说明
图1示意性地示出设置于参考例的压缩器和解压缩器的转换表。
图2A~C为参考例的压缩方法的说明图。
图3A~C为参考例的压缩方法的说明图。
图4A和B为参考例的压缩方法的说明图。
图5A及B为参考例的压缩方法的说明图。
图6A~C为参考例的解压缩方法的说明图。
图7A~C为参考例的解压缩方法的说明图。
图8A和B为参考例的解压缩方法的说明图。
图9A和B为参考例的解压缩方法的说明图。
图10示出实施方式一的压缩装置的配置示例。
图11为示出串化器的处理示例的流程图。
图12为举例示出压缩符号、Cmark位以及数据掩码与串化器的输出之间的关系的表。
图13示出压缩器的配置示例。
图14示出转换表的数据结构示例。
图15为示出压缩器11的处理示例的流程图。
图16A~C为用于说明转换表的第一操作方法的图。
图17A~C为用于说明转换表的第二操作方法的图。
图18A~C示出熵的第一计算方法的示例。
图19示出实施方式一的解压缩装置的配置示例。
图20示出解压缩器的配置示例。
图21为示出解串化器的处理示例的流程图。
图22为示出解压缩器的处理示例的流程图。
图23A~C为压缩装置的工作示例的说明图。
图24A~C为压缩装置的工作示例的说明图。
图25A~C为压缩装置的工作示例的说明图。
图26A~C为压缩装置的工作示例的说明图。
图27A~C为压缩装置的工作示例的说明图。
图28为压缩装置的工作示例的说明图。
图29A~C为解压缩装置的工作示例的说明图。
图30A~C为解压缩装置的工作示例的说明图。
图31A~C为解压缩装置的工作示例的说明图。
图32A~C为解压缩装置的工作示例的说明图。
图33A~C为解压缩装置的工作示例的说明图。
图34为解压缩装置的工作示例的说明图。
图35示出实施方式二的熵剔除的一个示例。
图36为示出实验的结果的图表。
图37A~C为例外符号的说明图。
图38A~C示出不进行条目的保留而将指令从压缩装置向解压缩装置发送的方法。
图39为汇总了第一~第四发送方法的表。
图40示出利用例外符号的情况下的时序图。
图41A~C为实施方式三的压缩装置的工作示例的说明图。
图42A~C为实施方式三的压缩装置的工作示例的说明图。
图43A~C为实施方式三的压缩装置的工作示例的说明图。
图44A~C为实施方式三的压缩装置的工作示例的说明图。
图45A~C为实施方式三的压缩装置的工作示例的说明图。
图46A和B为实施方式三的压缩装置的工作示例的说明图。
图47A~C为实施方式三的解压缩装置的工作示例的说明图。
图48A~C为实施方式三的解压缩装置的工作示例的说明图。
图49A~C为实施方式三的解压缩装置的工作示例的说明图。
图50A~C为实施方式三的解压缩装置的工作示例的说明图。
图51A~C为实施方式三的解压缩装置的工作示例的说明图。
图52A和B为实施方式三的解压缩装置的工作示例的说明图。
图53A~C示出实施方式四的压缩装置的工作示例。
图54A~C示出实施方式四的压缩装置的工作示例。
图55A~C示出实施方式四的压缩装置的工作示例。
图55A~C示出实施方式四的压缩装置的工作示例。
图57A~C示出实施方式四的压缩装置的工作示例。
图58示出实施方式四的压缩装置的工作示例。
图59A~C示出实施方式四的解压缩装置的工作示例。
图60A~C示出实施方式四的解压缩方法的工作示例。
图61A~C示出实施方式四的解压缩装置的工作示例。
图62A~C示出实施方式四的解压缩装置的工作示例。
图63A~C示出实施方式四的解压缩方法的工作示例。
图64示出实施方式四的解压缩装置的工作示例。
图65A~C示出实施方式五的压缩装置的工作示例。
图66A~C示出实施方式五的压缩装置的工作示例。
图67A~C示出实施方式五的压缩装置的工作示例。
图68A~C示出实施方式五的解压缩方法的工作示例。
图69A~C示出实施方式五的解压缩方法的工作示例。
图70A~C示出实施方式五的解压缩方法的工作示例。
图71示出实施方式六的压缩装置。
图72示出实施方式六的解压缩装置。
图73A和B为实施方式七的说明图。
图74示出实施方式八的压缩装置。
图75示出实施方式八的解压缩装置。
图76示出可应用于实施方式一~八的压缩装置和解压缩装置的终端装置的配置示例。
图77示出压缩装置的电路配置示例。
图78示出解压缩装置的电路配置示例。
图79为示出实施方式十的压缩器的处理示例的流程图。
图80为示出实施方式十的解压缩器的处理示例的流程图。
图81A和B为第二计算方法的说明图。
图82A和B为第二计算方法的说明图。
图83A和B为第二计算方法的说明图。
图84A和B为第二计算方法的说明图。
图85A和B为第二计算方法的说明图。
图86为第二计算方法的说明图。
图87A和B为实施方式十一的说明图。
具体实施方式
实施方式的数据的压缩和解压缩方法包括如下。
(1)压缩装置进行以下处理:在所输入的符号未登录在具有多个条目的第一表的情况下,将所述符号登录于所述多个条目中的一个,并且输出表示非压缩的指标数据和所述符号的处理;在所述符号已登录在所述表的情况下,输出表示压缩的指标数据和表示登录有所述符号的条目的位置并具有比所述符号的大小(size)小的大小的位置信息的处理;以及根据所述多个条目的使用状况而改变所述位置信息的大小的处理。
(2)解压缩装置进行以下处理:在接收到表示所述非压缩的指标数据和所述符号的情况下,以与所述压缩装置中的所述符号的登录方法相同的方法将所述符号登录于具有与所述第一表相同的数据结构的第二表中,并且输出所述符号的处理;以及在接收到表示所述压缩的指标数据和所述位置信息的情况下,读取登录在由所述位置信息所表示的所述第二表中的条目的所述符号而输出的处理。
实施方式的压缩装置也可以基于表示第一表的所述多个条目的使用状况的信息而计算表达位置信息的位数(bit number),并输出由位数表达的位置信息。在该情况下,解冻装置也可以基于表示第二表的多个条目的使用状况的信息而计算表达位置信息的位数,并使用位数而从输入于解压缩装置的位流中提取位置信息。
实施方式的压缩装置也可以使用第一表的使用中的条目数k和下述式1而计算表示第一表的多个条目的使用状况的信息,解压缩装置也可以使用第二表的使用中的条目数k和下述式1而计算表示第二表的所述多个条目的使用状况的信息,
式1:ceil(log2k)。
或者,实施方式的压缩装置也可以使用对规定数量的符号的压缩处理的结果中的第一表的使用率、登录有符号的条目的命中率(hit ratio)以及下述式2而计算表示第一表的多个条目的使用状况的信息。在该情况下,解压缩装置也可以使用对规定数量的符号的解压缩处理的结果中的第一表的使用率、登录有符号的条目的命中率以及下述式2而计算表示第二表的多个条目的使用状况的信息,
式2:ceil(log2((使用率/命中率)*条目数))。
例如,在符号的大小为N位(bit)且位置信息的原始大小为M位的情况下,也可以生成表示与表示多个条目的使用状况的信息相对应的有效位数且小于所述N的有效位数的M位的数据掩码,并基于所述数据掩码而从原始大小的位置信息中去除无效的位,由此生成由所述有效位数表达的位置信息。
上述的位置信息可以是例如对第一表和第二表的多个条目从开头的条目开始按照顺序分配的索引编号。在该情况下,在符号的第一表的检索中登录有符号的条目命中的情况下,压缩装置可以使符号移动至第一表的开头的条目,并且使登录在位于第一表的开头的条目到所述命中的条目的前一个条目之间的条目中的符号移动至下一个条目。在该情况下,在符号的第二表的检索中登录有符号的条目命中的情况下,解压缩装置可以使符号移动至第二表的开头的条目,并且使登录在位于第二表的开头的条目到命中的条目的前一个条目之间的条目中的符号移动至下一个条目。开头的条目可以是被保留(reserve)的条目。
在符号的第一表的检索中登录有符号的条目命中的情况下,关于第一表,实施方式的压缩装置可以将登录在命中的条目的符号登录于比命中的条目更靠近开头侧的规定的移动对象条目,并且使登录在位于移动目的条目到命中的条目的前一个条目之间的条目中的符号移动至下一个条目。在该情况下,在对于符号的第二表的检索中,登录有符号的条目命中的情况下,关于第二表,解压缩装置将命中的条目中的符号登录于比命中的条目更靠近开头侧的规定的移动对象条目,并且使登录在位于移动目的条目到命中的条目的前一个条目之间的条目中的符号移动至下一个条目。
上述的规定的移动对象条目也可以是第一表和所述第二表中的开头的条目。此外,在第一表和第二表中,规定的移动对象条目也可以是位于从命中的条目向开头方向回溯了规定数量后的位置的条目。在该情况下,在回溯了规定数量后的位置超过了开头的情况下,压缩装置和解压缩装置可以将开头的条目设定为移动对象。规定的移动对象条目可以是被保留的条目。
在第一表的所有条目为使用中的状态下的、符号的第一表的检索中登录有所述符号的条目没有命中的情况下,实施方式的压缩装置可以将符号登录于第一表的开头的条目,并且使登录在位于第一表的开头的条目到末尾的条目的前一个条目之间的条目中的符号移动至下一个条目而删除登录在所述末尾的条目中的符号。在该情况下,在第二表的所有条目为使用中的状态下的、符号的第二表的检索中登录有符号的条目没有命中的情况下,解压缩装置将符号登录于第二表的开头的条目,并且使登录在位于第二表的开头的条目到末尾的条目的前一个条目之间的条目中的符号移动至下一个条目而删除登录在末尾的条目中的符号。
在符号的第一表的检索中登录有符号的条目没有命中的情况下,若第一表中的第一条目为空状态,则实施方式的压缩装置可以将符号登录于第一表中的第一条目,若第一表的所有条目为使用中,则实施方式的压缩装置可以将所述符号覆盖登录于第一表中的第一条目。在该情况下,在符号的第二表的检索中登录有符号的条目没有命中的情况下,若第二表中的第一条目为空状态,则解压缩装置可以将符号登录于第二表中的第一条目,若第二表的所有条目为使用中,则解压缩装置可以将所述符号覆盖登录于第二表中的第一条目。例如,第一表中的第一条目为第一表的末尾的条目,第二表中的第一条目为第二表的末尾的条目。然而,也可以将其他条目设定为第一条目。
关于第一表,在登录有符号的条目的命中数或者登录有符号的条目的未命中数达到规定值的情况下,实施方式的压缩装置也可以删除登录有符号的条目中的索引编号最大的条目中的符号。在该情况下,关于第二表,在登录有符号的条目的命中数或者登录有符号的条目的未命中数达到规定值的情况下,解压缩装置删除登录有符号的条目中的索引编号最大的条目中的符号。
关于第一表,在索引编号最大的条目相当于位于从开头开始的规定范围的条目的情况下,实施方式的压缩装置也可以不删除索引编号最大的条目中的符号。在该情况下,关于第二表,在索引编号最大的条目相当于位于从开头开始的规定范围的条目的情况下,解压缩装置不删除索引编号最大的条目中的符号。
此外,在实施方式中,在第一表和第二表中的相同的规定条目中登录有表示命令的命令符号的情况下,压缩装置可以输出表示压缩的指标数据和表示所述规定条目的位置信息,并且执行所述命令符号所表示的命令。在该情况下,解压缩装置基于从压缩装置接收过来的表示压缩的指标数据和表示规定条目的位置信息而读取登录在第二表中的规定条目中的命令符号,并执行命令符号所表示的命令。
在实施方式中,在第一表和第二表中的相同的规定条目中登录有表示解压缩装置需执行的命令的命令符号的情况下,压缩装置可以输出表示非压缩的指标数据和所述命令符号。在该情况下,在基于表示非压缩的指标数据的命令符号的登录处理中,解压缩装置作为对于命令符号已登录在第二表的情况的例外处理而执行命令符号所表示的命令。
在使所述解压缩装置执行命令的情况下,实施方式的压缩装置可以输出表示压缩的指标数据和表示所述第一表的空状态的条目的位置信息。在该情况下,在基于从压缩装置接收过来的表示压缩的指标数据和位置信息的符号的读取处理中,在因符号没有登录在位置信息所表示的第二表的条目而发生的例外的发生时,解压缩装置可以取得表示命令的信息而执行。
实施方式的压缩装置可以在输出表示压缩的指标数据和表示第一表的空状态的条目的位置信息之后,输出表示非压缩的指标数据和表示命令的命令符号。在该情况下,解压缩装置在例外的发生时执行命令符号所表示的命令。
此外,在使解压缩装置执行命令的情况下,实施方式的压缩装置可以输出表示非压缩的指标数据和在第一表中登录中的符号。在该情况下,在基于从压缩装置接收过来的表示非压缩的指标数据的符号的登录处理中,在因在第二表中登录有相同的符号而发生的例外的发生时,解压缩装置取得表示命令的信息而执行。
此外,实施方式的压缩装置可以在输出表示非压缩的指标数据和在第一表中登录中的符号之后,输出表示非压缩的指标数据和表示所述命令的命令符号。在该情况下,解压缩装置在例外的发生时执行命令符号所表示的命令。
可以采用如下配置:符号是用于构成由位于压缩装置的前段的其他的压缩装置实施了压缩处理的符号串(Symbol Sequence)的符号,解压缩装置所输出的符号作为符号串的一部分而输入给位于解压缩装置的后段的其他的解压缩装置的配置。如此,可以级联连接(cascade connection)压缩装置、解压缩装置。
可以采用如下配置:第一表和第二表是由表的分割而得到的多个库(bank)中的一个,第一表和第二表的选择是使用相同的散列(hash)函数而进行的配置。
此外,压缩装置和解压缩装置也可以进行如下的与加密相关的交流。即,压缩装置将公共密钥(common key)发送给解压缩装置,其中,所述公共密钥包含从为了对于符号的压缩处理而设定的多个形参(Parameter)中选择的两个以上的形参的组合。之后,压缩装置使用公共密钥而对表示非压缩的指标数据和符号的组合以及表示压缩的指标数据和位置信息的组合进行加密,并将加密的结果发送给解压缩装置。为了输出符号的解压缩处理,解压缩装置使用表示非压缩的指标数据和符号的组合或者表示压缩的指标数据和位置信息的组合而设定从压缩装置发送过来的公共密钥中的两个以上的形参,并使用所述公共密钥进行加密的结果的解码,并且进行对于解码后的结果的解压缩处理。
虽然在后叙述,多个形参可为符号的位数N、对于符号的压缩处理的结果(符号或者位置信息)的位数M、表示从压缩装置输出的位数的单位的K、使用于熵剔除(entropyculling)的命中次数或者未命中次数、例外符号的设定、加扰(scramble)运算的种类、加扰密钥、邻近条目交换偏移值k、库结构(库数量)等。
此外,在来自压缩装置的加密的结果发送之前,压缩装置可以在进行初始化第一表的状态的处理,并且将用于初始化第二表的状态的信息发送给解压缩装置,解压缩装置基于上述初始化的信息而初始化第二表的状态。
[参考例]
在说明本发明的实施方式之前,对参考例的压缩器和解压缩器(压缩和解压缩方法进行说明。图1示意性地示出设置于参考例的压缩器和解压缩器的转换表。转换表由具有索引(index)的多个条目构成。作为条目数,对于压缩器和解压缩器确定相同数量的适当的数量。条目数的最大值为在索引的最大值上加上1的数。在图1所示的示例中,索引值为0~3,条目数为4。
在条目中登录压缩前的符号和计数值。在转换表中设定登录指针(registrationpointer)和删除指针(erasure pointer)。登录指针和删除指针的初始位置为索引“0”。登录指针示出对未登录的压缩前条目进行登录的条目位置。若在登录指针所指的条目中登录符号,则登录指针指下一个未登录的条目,因此登录指针向索引值变大的方向移动。然而,在登录指针的当前位置为末尾的条目(在参考例中为索引“3”的条目)的情况下,登录指针返回至索引“0”之后,被设定于未登录的条目位置。
删除指针示出减少计数值的条目。计数值为使用于条目的老化(aging)处理的值。在计数值变为0的情况下,该条目的登录内容(压缩前符号)被删除,条目变为未登录状态。在条目中登录压缩前符号的情况下,设定计数值的初始值(在图1的示例中为2)。删除指针所指的条目的计数值减1。此时,删除指针向索引值变大的方向移动一个位置。然而,在删除指针的当前位置为末尾的条目(索引“3”的条目)的情况下,返回至索引0。在条目命中(hit)的情况下,该条目的索引值加1。删除指针可以循环(round robin)移动。
<参考例的压缩器的工作示例>
接下来,示出压缩器的工作示例(压缩方法)。图2A~C、图3A~C、图4A和B、图5A和B为参考例的压缩方法的说明图。在图2A中示出工作示例的转换表。该转换表具有用图1进行说明的结构。转换表的整个条目数为4,计数值的初始值为2。作为一个示例,输入为8位(1字节)的数据(符号)相连的数据流。在初始状态的转换表中,所有的条目均处于未登录状态。在转换表处于初始状态的情况下,登录指针和删除指针指向索引“0”的条目。在以下的说明中,存在用索引值特定条目的情况(例如,索引值“0”的条目被简称为索引“0”)。
假设如下情况:在转换表处于初始状态的情况下,输入到压缩器的压缩前符号(也被称为“原始符号(original symbol)”)串“ABAC0ADBCFGDEDA1AB…”被输入的情况。压缩器对符号串中的每两个符号进行压缩处理。图2A示出符号串中的、最开头的符号串“AB”的处理。在该情况下,在转换表中检索符号串“AB”。然而,符号串“AB”没有登录在转换表(“AB”没有命中)。在该情况下,原始符号串“AB”和计数值的初始值“2”被登录(存储)于登录指针所指的条目(索引“0”)。此时,作为压缩器的输出(压缩处理后的符号),原始符号串“AB”被原样输出。此外,在新登录了符号的索引“0”处设定删除指针,登录指针前进至作为下一个未登录条目的索引“1”。
图2B示出紧接着符号串“AB”的原始符号串“AC”的处理。符号“AC”没有登录在转换表。因此,将原始符号串“AC”和计数值“2”登录于登录指针所指的条目(索引“1”)。此外,从压缩器输出原始符号串“AC”。此外,登录指针前进至下一个未登录条目(索引“2”)。此外,索引“0”的计数值减1(2→1),删除指针前进至下一个索引“1”。
图2C示出紧接着符号串“AC”的原始符号串“AB”的处理。符号串“AB”已登录,因此在转换表中检索到符号串“AB”(命中)。在该情况下,登录有符号串“AB”的条目的索引值“0”作为压缩后的符号而被输出。由此,2字节的原始符号串被压缩成1字节的压缩符号。此时,进行索引“0”的计数值的自增(increment)(1→2)。此外,进行删除指针所指的索引“1”的计数值的自减(decrement)(2→1),删除指针前进至索引“0”。此外,登录指针前进至作为下一个未登录条目的索引“2”。
图3A示出紧接着符号串“AB”的原始符号串“AD”的处理。符号串“AD”没有登录在转换表。因此,原始符号串“AD”和计数值“2”被登录于登录指针所指的条目(索引“2”)。登录指针前进至下一个索引“3”。此外,删除指针所指的索引“0”的计数值减1(2→1),删除指针前进至下一个索引“1”。
图3B示出紧接着符号串“AD”的原始符号串“BC”的处理。符号串“BC”没有登录在转换表。因此,原始符号串“BC”和计数值“2”被登录于登录指针所指的条目(索引“3”)。从压缩器输出原始符号串“BC”。此外,进行删除指针所指的索引“1”的计数值的自减,删除指针前进至下一个索引“2”。在索引“1”中,计数值变为“0”而符号“AC”被删除,索引“1”变为未登录的状态,并在此设定登录指针。
图3C示出紧接着符号串“BC”的原始符号串“FG”的处理。符号串“FG”没有登录在转换表。因此,原始符号串“FG”和计数值“2”被登录于登录指针所指的条目(索引“1”)。从压缩器输出原始符号串“FG”。在该时间点,转换表的所有条目都已登录(没有空状态的条目)。在该情况下,登录指针可以指向任意条目。然而,为了便于说明,在图3C示出的例子中,按照向索引值变大的方向前进一个位置的规则,指下一个索引“2”。此外,进行删除指针所指的索引“2”的计数值的自减,删除指针前进至下一个索引“3”。
图4A示出紧接着符号串“FG”的原始符号串“DE”的处理。符号串“DE”没有登录在转换表。然而,转换表满格(没有空条目),因此无法登录符号串“DE”。在该情况下,不进行登录处理,而将输入的符号串“DE”原样输出。由此维持吞吐量(throughput)。此外,进行删除指针所指向的条目(索引“3”)的计数值的自减,删除指针前进至下一个位置(索引“0”)。在该情况下,登录指针的位置也可以是任意位置。在图4A所示的示例中,作为一个例子,指向索引“3”。
图4B示出紧接着符号“DE”的原始符号串“DA”的处理。符号串“DA”没有登录于转换表。然而,转换表中没有空条目。因此,在不进行符号串“DA”的登录的前提下,输出符号串“DA”而维持吞吐量。此时,进行删除指针所指的索引“0”的计数值(1→0)的自减,删除指针前进至索引“1”。索引“0”的计数值因自减而变为0,索引“0”变为未登录状态,并且在此处设定登录指针。
图5A示出紧接着符号“DA”的原始符号串“FG”的处理。符号“FG”已登录在转换表。因此,输出对应的条目的索引值“1”。此时,进行索引“1”的自增和自减,计数值保持为“2”。此时,删除指针前进至索引“2”。登录指针不移动。
图5B示出紧接着符号串“FG”的原始符号串“AB”的处理。符号串“AB”没有登录在转换表。因此,输出符号串“AB”。此外,符号串“AB”和计数值“2”被登录于索引“0”。此外,删除指针所指的索引“2”的计数值减1(1→0),删除指针前进至索引“3”。由此,索引“2”的计数值变为0,因此该条目变为未登录的状态,并在此处设定登录指针。如此,作为压缩后的符号串,从压缩器输出“ABAC0ADBCFGDEDA0AB…”。
<参考例的解压缩器的工作示例>
接下来,对解压缩器的工作示例(解压缩方法)进行说明。从压缩器输出的数据流(符号串)“ABAC0ADBCFGDEDA0AB…”输入于解压缩器。图6A~C、图7A~C、图8A和B、图9A和B为参考例的解压缩方法的说明图。图6A示出解压缩器所具有的转换表。转换表的结构与压缩器所具有的转换表的结构相同。此外,图6A示出在解压缩器的转换表处于初始状态的情况下输入至解压缩器的符号串“AB”的处理。
最开始,索引“A”从转换表中被检索。然而,索引“A”未命中,因此可知索引“A”处于范围外或者未登录。在该情况下,继续读取下一个输入符号,并原样输出。在此,由符号“A”和紧接着符号“A”的符号“B”构成的符号串“AB”作为解压缩的结果而被输出。此外,符号串“AB”和计数值“2”被登录于索引“0”。此外,在索引“0”处设定删除指针,登录指针前进至索引“1”。
图6B示出后续的符号串“AC”的处理。在该情况下,也检索与符号“A”相匹配的转换表的索引。然而,没有找到对应的索引。因此,包含下一个符号“C”的符号串“AC”被原样输出。此外,符号串“AC”和计数值“2”被登录于登录指针所指的条目(索引“1”),登录指针前进至下一个索引“2”。此外,在索引“0”的计数值减1后,删除指针前进至索引“1”。
图6C示出后续的符号“0”的处理。在该情况下,在转换表中检索到对应的索引“0”。在该情况下,从解压缩器输出在索引“0”的条目中所登录的符号串“AB”。此时,在索引“0”的计数值加1(1→2),并在索引“0”处设定删除指针。此外,登录指针的位置停留于索引“2”。
图7A示出后续的符号串“AD”的处理。此时,不存在检索到与符号“A”相匹配的转换表的索引。因此,从解压缩器输出由符号“A”和紧接着符号“A”的符号“D”构成的符号串“AD”。此外,符号串“AD”和计数值“2”被登录于登录指针所指的条目(索引“2”)。登录指针前进至下一个索引“3”。此外,删除指针所指的索引“0”的计数值减1,删除指针前进至下一个索引值“1”。
图7B示出后续的符号串“BC”的处理。在该情况下,不存在检索到与符号“B”相对应的转换表的索引。因此,从解压缩器输出由符号“B”和紧接着符号“B”的符号“C”构成的符号串“BC”。此外,符号串“BC”和计数值“2”被登录于登录指针所指的条目(索引“3”)。此外,删除指针所指的索引“1”的计数值减1(1→0),删除指针前进至下一个索引“2”。索引“1”的计数值变为0,因此索引“1”的条目变为未登录状态。登录指针被设定于索引“1”。
图7C示出后续的符号串“FG”的处理。在该情况下,不存在与符号“F”相匹配的索引。因此,从解压缩器输出由符号“F”和紧接着符号“F”的符号“G”构成的符号串“FG”。此外,符号串“FG”和计数值“2”被登录于登录指针所指的条目(索引“1”)。此外,删除指针所指的索引“2”的计数值减1,删除指针前进至下一个索引“3”。由于转换表满格,因此登录指针的位置可以是任意的。然而,在本工作示例中,示出无论登录还是未登录与否登录指针前进一个位置的例子。图7C示出前进至索引“2”的情况的示例。
图8A示出后续的符号串“DE”的处理。在该情况下,不存在与符号“D”相对应的索引。因此,从解压缩器输出由符号“D”和紧接着符号“D”的符号“E”构成的符号串“DE”。然而,转换表满格,因此不进行符号串“DE”的登录。删除指针所指的索引“3”的计数值减1,删除指针返回至索引“0”。登录指针的位置可以是任意的。在图8A中,示出登录指针按照使登录指针从当前位置前进一个位置的规则而前进至索引“3”的例子。
图8B示出后续的符号串“DA”的处理。在该情况下,不存在与符号“D”相匹配的索引。因此,输出由符号“D”和符号“A”构成的符号串“DA”。然而,在转换表中没有空条目,因此不进行符号“DA”的登录。此时,删除指针所指的索引“0”的计数值减1,删除指针前进至索引“1”。索引“0”的计数值变为0,索引“0”变为未登录状态,并在此处设定登录指针。
图9A示出后续的符号“1”的处理。在该情况下,转换表中存在相匹配的索引“1”。因此,从解压缩器输出在索引“1”的条目中所登录的符号串“FG”。此时,进行删除指针所指的索引“1”的计数值的自减和索引“1”的计数值的自增,索引“1”计数值变为“2”。删除指针前进至索引“2”,登录计数指向索引“0”。
图9B示出后续的符号串“AB”的处理。在该情况下,符号“A”没有登录在转换表。因此,从解压缩器输出由符号“A”和紧接着符号“A”的符号“B”构成的符号串“AB”。此外,符号串“AB”和计数值“2”被登录于作为空的条目的索引“0”。此时,删除指针所指的索引“2”的计数值减1,删除指针前进至索引“3”。索引“2”的条目的计数值变为0,因此索引“2”变为未登录状态,并在此处设定登录指针。
在以上说明的参考例中,即使未示出压缩器中的转换表的登录内容,也可以在解压缩器中生成具有与压缩器相同的登录内容的转换表,并进行使用该转换表的解压缩处理。
此外,在参考例的工作示例中,以将压缩后的符号(例如“0”)不使用于压缩前的符号为前提。然而,在现实中,通常使用8位数据的所有的组合(256种)。因此,无法区别原始的符号“0”和表示已压缩的“0”。因此,对于压缩后的符号或者符号串,添加称之为“Cmark位”的表示压缩(转换)/非压缩(非转换)的位(bit)。Cmark位的值“0”表示非压缩,值“1”表示压缩。但也可以相反设定。
<参考例所涉及的问题>
<<问题一>>
在参考例的压缩和解压缩方法中,压缩后的符号长度为固定长度。如示例所示,在将两个符号的输入转换为一个符号的压缩中,压缩率最大也就50%。因此,期望进一步提高压缩率。
在此,考虑到香农(shannon)的平均信息量(也被称为香农信息量、熵)。平均信息量是表示“数据的复杂程度”的指标,由以下的式(1)表示。在式(1)中,i表示数据,pi表示数据i的出现率。
[数1]
平均信息量H=-Σipilog2(pi)…(1)
例如,在数据符号串(一个符号8位)为“ABACABADBC”的情况下,符号“A”、“B”、“C”和“D”各自的出现概率如下。
A的出现概率:4/10=0.4
B的出现概率:3/10=0.3
C的出现概率:2/10=0.2
D的出现概率:1/10=0.1。
若使用式(1)来计算上述数据符号串的平均信息量H,则H=1.84643934465。换言之,该数据符号串由2的1.84643934465次方的组合构成,可以用1.84643934465位来表示。该数据字符串的各要素(符号)为Ceil(1.84643934465)=2,因此可以用2位来表示。
例如,在定义为A=00、B=01、C=10、D=11的情况下,上述数据符号串成为“00010010000100110110”。可以将8位的数据压缩至2位,因此数据量成为1/4。
<<问题二>>
在上述参考例的压缩、解压缩方法中,压缩数据的尾端不明。若可以嵌入特殊的代码,则可以将压缩数据流的尾端通知给解压缩器。
本申请的发明人们使用上述的平均信息量(熵)的想法,思考了可否按照转换表的使用率改变压缩后的符号长度而谋求压缩率的提高。积极努力的结果,发明者们发明出了在以下的实施方式中所示的压缩和解压缩方法。
[实施方式]
以下,参照附图,对数据的压缩和解压缩方法、数据压缩方法、数据压缩装置、数据压缩程序、数据解压缩方法、数据解压缩装置、数据解压缩程序的实施方式进行说明。实施方式的结构是示例,本发明并不限定于实施方式的结构。
[实施方式一]
<压缩装置的配置>
图10示出实施方式一的压缩装置的配置示例。在图10中,压缩装置10具备压缩器11和串化器(序列化器,串行器,serializer)12。N位(N为正整数)的原始的符号数据输入于压缩器11。压缩器11输出M位(M为正整数)的压缩符号)、Cmark位和M位的数据掩码。在以下的实施方式的说明中,以设定为N=M的情况为中心进行说明。然而,也可以有N<M或N>M的情况。若将M设定为“log2(条目数)”,则当条目数大于2的N次方时,N<M。在与之相反的情况下,成为N>M。
压缩符号表示从压缩器11输出的、压缩处理后的符号数据。Cmark位是表示从压缩器11输出的符号数据是否被压缩器11压缩的位(bit)。作为一个示例,位值为“0”的情况表示非压缩,位值为“1”的情况表示压缩。与位值意思相反也可。数据掩码是为了表现形成压缩符号的位流(位串)中的、有效的位的数位(digit)或者有效的位的数而使用。例如,有效掩码以“1”表示有效的数位。此外,数据掩码也可以是表示有效的位的数的位流。
串化器12接收压缩符号、Cmark位和数据掩码,并输出将Cmark位和数据掩码所表示的压缩符号中的有效位串联而成的数据。所输出的数据成为向解压缩装置发送的传输数据。即使在来自压缩器11的输出为N>M的情况下,由数据掩码所表示的有效位的数也可以是达到N的值。因此,对于N位的原始符号,压缩装置10的输出最长成为N+1位。传输数据经由传输路径(网络)而被发送至解压缩装置。
<<串化器>>
图11为示出串化器12的处理示例的流程图。在S1中,串化器12基于数据掩码而从压缩符号中去除不需要(无效)的位。即,串化器12从压缩符号中剪切与在数据掩码中以“1”示出的数位相对应的部分。
在S2中,串化器12在剪切的压缩符号的部分的最高位添加Cmark位。在S3中,对于Cmark位和剪切后的压缩符号,串化器12按照适当的规则,每次以K位量进行位的输出。
图12为举例示出压缩符号、Cmark位及数据掩码与串化器的输出之间的关系的表。例如,假设如下情况:在大端(big endian)的情况下,压缩符号数据、Cmark位、数据掩码流分别为“0001000”(M=7)、“1”、“0011111”(M=7)的情况。在该情况下,数据掩码将最低有效位(LSB)至第五位作为有效位而示出。因此,在串化器12中,最高有效位(MSB)至第二位从压缩符号中被去除,并输出Cmark位“1”和有效位流“01000”的位流(串行数据)“101000”。
在来自下一个压缩器11的输出为压缩符号数据“1110100”、Cmark位“0”、数据掩码“1111111”的情况下,串化器12的输出成为Cmark位“1”和有效位“1110100”的串行数据“01110100”。在图12中也举例示出与其他的压缩符号和Cmark位的组合相关的串化器12的输出。
<<压缩器>>
图13示出压缩器11的配置示例。压缩器11包括符号转换部111、熵计算部112和掩码生成部113。符号转换部111进行使用转换表的符号转换。
图14示出压缩装置和解压缩装置所具备的转换表的数据结构例。转换表由多个条目构成。在多个条目中,从开头的条目开始依次分配有数值变大的索引编号(索引值)。若将压缩后的符号的最长的位数设为X(X为正整数),则条目数为2X。图14所示的转换表的例子示出X=2的情况,条目数为4。在初始状态的转换表中,例如,所有条目为空。然而,也可以在所有条目中设定有符号。压缩装置所具备的转换表为第一表的一个示例,解压缩装置所具备的转换表为第二表的一个示例。索引编号为表示条目的位置的位置信息的一个示例。
熵计算部112利用规定的计算方法计算熵,其中,所述熵为表示转换表的多个条目的使用状况的信息。掩码生成部113接收熵计算部112的熵的计算结果,并生成与此对应的数据掩码。在本实施方式中,作为一个示例,对N=M=8位的情况进行说明。
图15为示出压缩器11的处理示例的流程图。在S11中,原始符号(N位)输入于符号转换部111。于是,符号转换部111从转换表中检索登录有原始符号的条目(S12)。在登录有原始符号的情况(条目命中的情况)下,处理进入S13,在没有登录有原始符号的情况(条目没有命中的情况)下,处理进入S14。
在处理进入到S13的情况下,符号转换部111将登录有原始符号的条目的索引值作为压缩符号而输出。而后,处理进入S15。索引值根据其自身的值改变表现所需要的位数。例如,在所命中的条目的索引值为“0”或“1”的情况下,索引值可以用1位(1bit)来表现。在本实施方式中,基于转换表的使用状况来决定表现索引值的有效位数,有效位数由数据掩码表示。在串化器12中,从压缩器11输出的索引值(M位)成为数据掩码所表示的有效位数。此时,索引被转换为小于N的位数,由此数据被压缩。
在处理进入到S14的情况下,将原始符号本身作为压缩符号而输出。在S15中,符号转换部111输出与压缩符号相对应的Cmark位。例如,在原始符号从转换表未命中的情况(没有登录在转换表的情况)下,符号转换部111输出表示非压缩的Cmark位“0”。与之相对地,在原始符号命中的情况(登录在转换表的情况)下,符号转换部111输出表示压缩的Cmark位“1”。
在S16中,符号转换部111进行转换表的更新处理。关于转换表的更新处理,在后文中说明。在S17中,熵计算部112进行熵计算。S16和S17的顺序也可以相反。在S18中,掩码生成部113输出与熵的计算结果相应的数据掩码。然而,在Cmark位为“0”的情况下,可以与熵计算值无关地输出全部都为“1”的数据掩码,也可以不输出数据掩码(在Cmark位为“1”时输出)。
<转换表的第一操作方法>
图16A~C为用于说明转换表的第一操作方法的图。图16A示出原始符号命中的情况。假设在如图16A所示那样的转换表的登录状况下输入原始符号“B”的情况。在该情况下,符号“B”已登录在转换表中,符号“B”命中。此时,符号转换部111将命中的符号“B”移动至开头的条目。此外,符号转换部111输出登录有符号“B”的条目的索引值“1”和表示压缩的Cmark位“1”。
图16B示出存在空条目且原始符号未命中的情况。如图16B所示,假设在索引“3”的条目为空条目的情况下输入原始符号“B”的情况。在该情况下,符号“B”未登录在转换表中,符号“B”成为未命中。此时,符号转换部111推动(push)整个转换表,使已登录的各符号(“A”、“C”、“D”)移动至索引值加上1后的位置。由此,开头的条目(索引“0”)成为空状态。符号转换部111将符号“B”登录于开头的条目。此外,符号转换部111输出原始符号“B”和表示非压缩的Cmark位“0”。
图16C示出不存在空条目且原始符号未命中的情况。如图16C所示,假设在转换表的所有的条目都已登录有符号(满格)的情况下输入原始符号“B”的情况。在该情况下,符号“B”未登录在转换表中,符号“B”成为未命中。此时,符号转换部111推动整个转换表,使已登录的各符号(“A”、“C”、“D”、“E”)移动至索引值加上1后的位置。然而,登录在末尾的条目(索引“3”)的符号“E”从转换表中挤出而被删除。符号转换部111将符号“B”登录在成为空状态的开头的条目。此外,符号转换部111输出原始符号“B”和表示非压缩的Cmark位“0”。
<转换表的第二操作方法>
图17A~C为用于说明转换表的第二操作方法的图。图17A示出原始符号命中的情况。假设在如图17A所示那样的转换表的登录状况下输入原始符号“B”的情况。在该情况下,由于符号“B”命中,因此符号转换部111将符号“B”移动至开头的条目。此外,符号转换部111输出索引值“1”和Cmark位“1”。这与第一操作方法相同。
图17B示出存在空条目且原始符号未命中的情况。如图17B所示,假设在索引“3”为空条目的情况下输入原始符号“B”的情况。在该情况下,符号“B”未登录在转换表中,符号“B”成为未命中。此时,符号转换部111将符号“B”登录于相当于空条目中的预定位置(例如末尾的空条目)的索引“3”。此外,符号转换部111输出原始符号“B”和Cmark位“0”。
图17C示出不存在空条目且原始符号未命中的情况。如图17C所示,假设在转换表满格的情况下输入原始符号“B”的情况。在该情况下,符号“B”成为未命中。符号转换部111在预定条目(例如末尾的索引“3”)覆盖登录符号“B”(其结果,符号“E”被删除)。符号转换部111输出符号“B”和Cmark位“0”。
然而,图17B和图17C所示的例子为一个例子,对于未命中的符号的登录位置,只要在压缩器和解压缩器之间应用等同的规则,能够在解压缩器的转换表中重现压缩器的转换表的登录状况的变化即可。
符号转换部111可以执行第一操作方法和第二操作方法中的任意一种。此外,关于第一操作方法,由于进行推动操作的硬件(电路)变得复杂,因此优选为使用软件(程序和存储器)来实现。与之相对地,与第一操作方法相比,第二操作方法容易用硬件来实现。
<熵的计算方法(第一计算方法)>
在转换表中检测到了原始符号的情况(原始符号命中的情况)下,压缩器11在输出Cmark位“1”的同时,输出遵循熵计算的结果的数据掩码。
在第一计算方法中,在原始符号为N位的情况下,生成在转换表中的使用中的条目数k的以2为底的对数(二进制对数)的上取整函数(ceiling function)(即ceil(log2k))的值的范围将位(bit)设定为“1”的N位的掩码。即,熵值E由以下的式1求得。
式1:E=ceil(log2k)
例如,在转换表中的使用中的条目数为1的情况下,ceil(log21)=0。此外,在使用中的条目数为2的情况下,ceil(log22)=1。此外,在使用中的条目数为3的情况下,ceil(log23)=2。此外,在使用中的条目数为5的情况下,ceil(log25)=3。
图18A~C示出熵的第一计算方法的示例。在图18A~C所示的例子中,转换表具有索引数为8(索引值为“0”~“7”)的条目。
在图18A所示的例子中,在仅在索引“0”登录有符号的情况下,使用中的条目数为k=1。因此,由熵计算部112计算出的熵的计算结果成为ceil(log21)=0。在该情况下,作为N位的数据掩码,掩码生成部113生成“00000000”而输出。在k=1的情况下,若Cmark位为“1”,则显然在索引“0”的条目中必定登录有符号。因此,索引“0”由0位表示,串化器12仅输出Cmark位。
在图18B所示的例子中,在索引“0”~“2”登录有符号,使用中的条目数为3。在该情况下,熵的计算结果成为ceil(log23)=2,作为数据掩码,从N=8位中的最低有效位开始的两个数位的位被设定为“1”(有效位表示低位2位)的数据掩码“00000011”被输出。在图18C所示的例子中,使用中的条目数为5,因此熵的计算结果成为ceil(log25)=3,作为数据掩码,从N=8位中的最低有效位开始的三个数位的位被设定为“1”(有效位表示低位3位)的数据掩码“00000111”被输出。
在图18A~C所示的转换表中,在仅在索引“0”登录有符号的情况下,数据掩码中的有效位的数为0。此外,在索引“0”和“1”登录有符号的情况下,数据掩码中的有效位的数为1。在索引“0”到“2”或者“0”到“3”登录有符号的情况下,数据掩码中的有效位的数为2。在索引“0”到“4”以下登录有符号的情况下,数据掩码中的有效位的数为3。
<解压缩装置的配置>
图19示出实施方式一的解压缩装置的配置示例。在图19中,解压缩装置50具备解串化器(deserializer)51和解压缩器52。分成每k位而被传输的传输数据输入于解串化器51。解串化器51从传输数据中取出M位的压缩符号和1位的Cmark位并输入给解压缩器52。解压缩器52使用压缩符号和Cmark位而输出M位的数据掩码,并且输出N位的原始符号数据。
图20示出解压缩器52的配置示例。解压缩器52具有:符号转换部521、熵计算部522和掩码生成部523。符号转换部521具有与压缩器11所具有的转换表相同结构的转换表。符号转换部521接收压缩符号和Cmark位,使用这些和转换表而输出原始符号。
熵计算部522从符号转换部521取得表示转换表的使用中的条目数的信息,用与压缩器11的熵计算部122所进行的计算方法相同的计算方法计算熵,并将计算结果提供给掩码生成部523。掩码生成部523从符号转换部521接收Cmark位,若位值为“0”,则输出均为“1”的数据掩码,若位值为“1”,则输出具有遵照来自熵计算部522的熵计算结果的有效位数的数据掩码。数据掩码输入于解串化器51。
图21为示出解串化器51的处理示例的流程图。在S21中,解串化器51读取所输入的传输数据的最开头的1位(相当于Cmark位)。
在S22中,解串化器51判定位值是“1”还是“0”。在比值为“1”的情况下,读取从解压缩器52输入的数据掩码所表示的位数的传输数据,并将其作为压缩符号而输出(S23)。与之相对地,在位值为“0”的情况下,解串化器51读取N位的传输数据,并将其作为压缩符号而输出(S24)。该N位的输出还可以如下进行:可以通过向解串化器51输入表示N位全部为有效位的数据掩码(“11111111”:N=M=8的情况)并解串化器51参照该数据掩码而进行,也可以与数据掩码的值无关地按照输出的N位的定义而进行。在实施方式一中,对在Cmark位“0”的情况下输入数据掩码“11111111”的方式进行说明。
在S25中,将在S21中所读取的位作为Cmark位而输出。S25的处理可以在S23和S24之前执行,也可以在S22之前执行。在S26中,判定是否结束了传输数据,在没有传输数据的情况下,结束处理。在存在传输数据的情况下,处理返回S21。
图22为示出解压缩器52的处理示例的流程图。在S31中,解压缩器52的符号转换部521判定从解串化器51输入的Cmark位的值是“0”还是“1”。在Cmark位的值为“0”的情况下(S31,0),符号转换部521判定登录对象的符号是否已经登录在转换表。此时,在判定为已登录有登录对象的符号的情况下(S38,是),解压缩器52进行规定的错误处理(errorhandling)(S41),并结束处理。
与之相对地,在判定为没有登录有登录对象的符号的情况下(S38,否),符号转换部521进行将压缩符号登录于转换表的处理(表更新)(S39)。而后,符号转换部521将从解串化器51输入的压缩符号作为原始符号而输出(S40)。而后,处理进入S36。然而,S39的处理和S40的处理的顺序可以相反,也可以并列。
与之相对地,在Cmark位的值为“1”的情况下(S31,1),符号转换部521从转换表中检索与从解串化器51输入的压缩符号的值相匹配的索引(S32)。符号转换部521判定索引是否命中(S33),在未命中的情况下(S33,否),进行规定的错误处理(S42),并结束图22的处理。
与之相对地,在索引命中的情况下(S33,是),符号转换部521将与索引相对应的条目中的符号作为原始符号而输出(S34)。在S35中,符号转换部521进行表更新处理,并使命中的符号移动至规定位置(索引“0”)的同时,使登录在从索引“0”至登录有命中的符号的条目的上一个条目中的符号向下一个条目移动。S34和S35的处理的顺序可以相反,也可以并列。
在S36中,每当输出原始符号时,熵计算部522取得表示转换表的使用状况的信息(使用率、命中率)。关于取得,可以参照转换表来取得使用率等,也可以从符号转换部521取得表示使用率等的信息。熵计算部522使用第一或者第二计算方法而进行熵计算。掩码生成部523取得熵计算值,生成具有与该熵计算值相对应的有效位的数据掩码,并提供给解串化器51。而后,结束图22的处理。此外,在实施方式三中,S38和S41的处理、及S33和S42的处理不一定是必要的。
<工作示例>
<<压缩方法>>
图23A~C、图24A~C、图25A~C、图26A~C、图27A~C、图28为压缩装置10的工作示例(压缩方法)的说明图。在图23A中示出工作示例的转换表。该转换表具有使用图18A~C而说明的结构。转换表的整个条目数为8(索引值“0”~“7”)。作为一个示例,输入为8位的原始符号相连的符号数据流“ABACDABFGEFHJAB”。假设在初始状态的转换表中所有的条目均处于未登录状态。在以下的工作示例中,通过转换表的第一操作方法进行转换表的更新处理。转换表的更新处理由压缩器11(符号转换部)111进行。熵计算部112使用第一计算方法而计算熵。此外,在本工作示例中,对N=M=8位的情况进行说明。
图23B示出所输入的原始符号“A”的处理。原始符号“A”未登录在转换表(未命中)。因此,符号转换部111将原始符号“A”登录于开头的条目(索引“0”)。符号转换部111将原始符号“A”作为压缩符号而输出的同时,输出表示非压缩的Cmark位“0”。
掩码生成部113输出表示8位全部为有效位的数据掩码“11111111”。串化器12进行图11所示的处理,根据数据掩码“11111111”输出在Cmark位“0”后接着符号“A”(ASCII码:01000001)的“0A”的串行数据。然而,符号也可以由ASCII码以外的方式进行表示。
图23C示出在原始符号“A”之后输入的原始符号“B”的处理。原始符号“B”未登录,因此符号转换部111进行推动处理而将符号“B”登录于索引“0”,符号“A”登录于作为下一个条目的索引“1”。符号转换部111输出符号“B”和Cmark位“0”。此时,掩码生成部113输出数据掩码“11111111”。串化器12根据数据掩码输出在Cmark位“0”后接着符号“B”(ASCII码:01000010)的“0B”的串行数据。
图24A示出在原始符号“B”之后输入的原始符号“A”的处理。符号“A”已登录在索引“1”。因此,符号“A”命中。在该情况下,符号转换部111将表示登录有符号“A”的条目的索引值“1”的位值“1”作为压缩符号而输出,并且输出表示压缩的Cmark位“1”。此外,符号转换部111使命中的符号“A”移动至开头的条目(索引“0”)的同时,使登录在索引“0”的符号“B”移动至下一个条目(索引“1”)。
在该情况下,熵计算部112中的熵的计算结果成为ceil(log22)=1。因此,掩码生成部113生成数据掩码“00000001”而输出。在符号被压缩(进行了符号转换)的情况下,在Cmark位为“1”时,串化器12将数据掩码所表示的有效位数(=1)的位“1”作为压缩符号而输出(图21,S23)。由此,串化器12输出在Cmark位“1”后接着压缩符号“1”的2位的串行数据“11”。
图24B示出在符号“A”之后输入的原始符号“C”的处理。符号“C”未登录,因此符号转换部111输出符号“C”和Cmark位“0”的同时,进行对于符号“C”的推动处理。即,将符号C登录于索引“0”,并将已登录的符号移动至下一个条目。在该情况下,掩码生成部113生成全为“1”的数据掩码而输出。串化器12根据数据掩码输出在Cmark位“0”后接着符号“C”(ASCII码:01000011)的“0C”的串行数据。
图24C示出在符号“C”之后输入的原始符号“D”的处理。符号“D”未登录,因此符号转换部11输出符号“C”和Cmark位“0”的同时,进行对于符号“D”的推动处理。掩码生成部113生成全为“1”的数据掩码而输出。串化器12根据数据掩码输出在Cmark位“0”后接着符号“D”(ASCII码:01000100)的“0D”的串行数据。
图25A示出在符号“D”之后输入的原始符号“A”的处理。符号“A”已登录在索引“2”(图24C)。因此,符号转换部111将表示登录有符号“A”的条目的索引值“2”(图24C)的位值“10”作为压缩符号而输出,并且输出表示压缩的Cmark位“1”。此外,符号转换部111将命中的符号“A”移动至索引“0”的同时,使符号“D”、“C”、“B”移动至下一个条目。
在该情况下,熵计算部112中的熵的计算结果为2。因此,掩码生成部113生成数据掩码“00000011”而输出。由于Cmark位为“1”,因此串化器12将数据掩码所表示的有效位数(=2)的位“10”作为压缩符号而输出。因此,从串化器12输出在Cmark位“1”后接着压缩符号“10”的3位的串行数据“110”。
图25B示出在符号“A”之后输入的原始符号“B”的处理。符号“B”已登录在索引“3”(图25A),因此符号转换部111将表示登录有符号“B”的条目的索引值“3”的位值“11”作为压缩符号而输出,并且输出表示压缩的Cmark位“1”。此外,符号转换部111将符号“B”移动至索引“0”的同时,使符号“A”、“D”、“C”移动至下一个条目。
在该情况下,熵计算部112中的熵的计算结果为2,掩码生成部113生成数据掩码“00000011”而输出。由于Cmark位为“1”,因此串化器12将数据掩码所表示的有效位数(=2)的位作为压缩符号而输出。因此,从串化器12输出在Cmark位“1”后接着压缩符号“11”的3位的串行数据“111”。
图25C示出在符号“B”之后输入的原始符号“F”的处理。符号“F”未登录,因此符号转换部111输出符号“F”和Cmark位“0”的同时,进行对于符号“F”的推动处理。在该情况下,掩码生成部113生成全为“1”的数据掩码而输出。串化器12根据数据掩码输出在Cmark位“0”后接着符号“F”(ASCII码:01000110)的“0F”的串行数据。
图26A示出紧接着符号“F”的符号“G”的处理。符号“G”未登录,因此符号转换部111输出符号“G”和Cmark位“0”的同时,进行对于符号“G”的推动处理。在该情况下,掩码生成部113生成全为“1”的数据掩码而输出。串化器12根据数据掩码输出在Cmark位“0”后接着符号“G”(ASCII码:01000110)的“0G”的串行数据。
图26B示出紧接着符号“G”的符号“E”的处理。符号“E”未登录,因此符号转换部111输出符号“E”和Cmark位“0”的同时,进行对于符号“E”的推动处理。在该情况下,掩码生成部113生成全为“1”的数据掩码而输出。串化器12根据数据掩码输出在Cmark位“0”后接着符号“E”(ASCII码:01000101)的“0E”的串行数据。
图26C示出在符号“E”之后输入的原始符号“F”的处理。符号“F”已登录在索引“2”(图26B)。因此,符号转换部111输出表示索引值“2”的位值“10”和Cmark值“1”。此外,将符号“F”移动至索引“0”的同时,使符号“E”、“G”移动至下一个条目(符号“B”、“A”、“D”、“C”保持不动)。
在该情况下,熵计算部112输出熵的计算结果“3”,掩码生成部113生成数据掩码“00000111”而输出。由于Cmark位为“1”,因此串化器12将数据掩码所表示的有效位数(=3)的位“010”作为压缩符号而输出。由此,从串化器12输出在Cmark位“1”后接着压缩符号“010”的4位的串行数据“1010”。
图27A示出在符号“F”之后输入的原始符号“H”的处理。符号“H”未登录,因此符号转换部111输出符号“H”和Cmark位“0”的同时,进行对于符号“H”的推动处理。在该情况下,掩码生成部113生成全为“1”的数据掩码而输出。串化器12根据数据掩码输出在Cmark位“0”后接着符号“H”(ASCII码:01001000)的“0H”的串行数据。
图27B示出在符号“H”之后的符号“J”的处理。符号“J”未登录,因此符号转换部111输出符号“J”和Cmark位“0”的同时,进行对于符号“J”的推动处理。此时,符号“C”从转换表中挤排而被删除。掩码生成部113生成全为“1”的数据掩码而输出。串化器12根据数据掩码输出在Cmark位“0”后接着符号“J”(ASCII码:01001010)的“0J”的串行数据。
图27C示出紧接着符号“J”的符号“A”的处理。符号“A”已登录在索引“6”(图27B)。因此,符号转换部111输出表示索引值“6”的位值“110”和Cmark值“1”。此外,将符号“A”移动至索引“0”的同时,使符号“J”至“B”移动至下一个条目。
在该情况下,熵计算部112输出熵的计算结果“3”,掩码生成部113生成数据掩码“00000111”而输出。由于Cmark位为“1”,因此串化器12将数据掩码所表示的有效位数(=3)的位“110”作为压缩符号而输出。由此,从串化器12输出在Cmark位“1”后接着压缩符号“110”的4位的串行数据“1110”。
图28示出紧接着符号“A”的符号“B”的处理。符号“B”已登录在索引“6”(图27C)。因此,符号转换部111输出索引值“6”(位值“111”)和Cmark值“1”。此外,将符号“B”移动至索引“0”的同时,使符号“A”至“G”移动至下一个条目。
在该情况下,熵计算部112输出熵的计算结果“3”,掩码生成部113生成数据掩码“00000111”而输出。由于Cmark位为“1”,因此串化器12将数据掩码所表示的有效位数(=3)的位“110”作为压缩符号而输出。由此,串化器12输出在Cmark位“1”后接着压缩符号“110”的4位的串行数据“1110”。
此外,在上述的压缩装置10的输出中,与原始符号串“ABACDABFGEFHJAB”(15×8=120位)相对应的串化器12的输出为101位,压缩率为84%。
<<解压缩方法>>
图29A~C、图30A~C、图31A~C、图32A~C、图33A~C、图34为解压缩装置50的工作示例(压缩方法)的说明图。在图29A中示出解压缩装置50的工作示例的转换表。该转换表具有与图23A示出的压缩装置10所具有的转换表相同的数据结构。因此,省略重复的说明。
作为一个示例,对解压缩装置10的输入为在压缩装置10的工作示例中从压缩装置10输出的串行数据(Cmark位+压缩符号的)位流、“0A”、“0B”、“11”、“0C”、“0D”、“110”、“111”、“0F”、“0G”、“0E”、“1010”、“0H”、“0J”、“1110”、“1110”。
此外,假设在解压缩器52中的初始状态的转换表中所有的条目均处于未登录状态。在以下的工作示例中,通过转换表的第一操作方法进行转换表的更新处理。转换表的更新处理由解压缩器52(符号转换部521)进行。熵计算部522使用第一计算方法而计算熵。
图29B示出向解压缩装置50输入串行数据“0A”的情况的处理。解串化器51将串行数据“0A”分离为Cmark位“0”和压缩符号“A”而输入给解压缩器52。
由于Cmark位为“0”,因此符号转换部521将压缩符号“A”作为原始符号(解压缩符号)而输出。熵计算部522将0作为熵的计算结果而输出,数据掩码生成部523与熵计算值无关地生成并输出表示所有均为有效位的数据掩码“11111111”。
图29C示出向解压缩装置50输入串行数据“0B”的情况的处理。解串化器51将串行数据“0B”分离为Cmark位“0”和压缩符号“B”而输入给解压缩器52。由于Cmark位为“0”,因此符号转换部521将压缩符号“B”作为原始符号而输出。此时,生成并输出数据掩码“11111111”。
图30A示出向解压缩装置50输入串行数据“11”的情况的处理。解串化器51参照串行数据“11”的最开头的“1”而判定为Cmark位“1”。在该情况下,根据来自解压缩器52的数据掩码“00000001”读取1位,并将其作为压缩数据而输出。由此,Cmark位“1”和压缩符号“1”被分离,并各自输入于解压缩器52。
由于Cmark位为“1”,因此符号转换部521读取登录(存储)在压缩符号“1”所表示的索引、即索引“1”的符号“A”(图29C),并将其作为原始符号而输出。此外,符号转换部521将符号“A”移动至索引“0”,使符号“B”移动至下一个条目(索引“1”)。熵计算部522将“1”作为熵的计算结果而输出,掩码生成部523生成数据掩码“00000001”而提供给解串化器51。
图30B示出向解压缩装置50输入串行数据“0C”的情况的处理。解串化器51判定Cmark位为“0”,并进行N位的输出。由此,输出压缩符号“C”。解串化器51将Cmark位“0”和压缩符号“C”提供给解压缩器52。
由于Cmark位为“0”,因此符号转换部521将压缩符号“C”作为原始符号而输出的同时,进行对于转换表的推动处理,并将符号“C”登录于索引“0”。在该情况下,生成并输出数据掩码“11111111”。
图30C示出向解压缩装置50输入串行数据“0D”的情况的处理。由于Cmark位为“0”,因此解串化器51通过N位的输出来输出压缩符号“D”。解串化器51将Cmark位“0”和压缩符号“D”提供给解压缩器52。
由于Cmark位为“0”,因此符号转换部521将压缩符号“D”作为原始符号而输出的同时,进行对于转换表的推动处理,并将符号“D”登录于索引“0”。在该情况下,生成并输出数据掩码“11111111”。
图31A示出向解压缩装置50输入串行数据“110”的情况的处理。解串化器51参照串行数据“110”的最开头的“1”而判定为Cmark位“1”。在该情况下,根据来自解压缩器52的数据掩码“00000011”读取2位,将位值“10”作为压缩数据而输出。由此,Cmark位“1”和压缩符号“10”输入于解压缩器52。
由于Cmark位为“1”,因此符号转换部521读取登录在压缩符号“10”所表示的索引、即索引“2”的符号“A”(图30C),并将其作为原始符号而输出。此外,符号转换部521将符号“A”移动至索引“0”,并使符号“D”和“C”移动至下一个条目。熵计算部522将“2”作为熵的计算结果而输出,掩码生成部523生成数据掩码“00000011”而提供给解串化器51。
图31B示出向解压缩装置50输入串行数据“111”的情况的处理。解串化器51参照串行数据“111”的最开头的“1”而判定为Cmark位“1”。在该情况下,根据来自解压缩器52的数据掩码“00000011”读取2位,将位值“11”作为压缩数据而输出。由此,Cmark位“1”和压缩符号“11”输入于解压缩器52。
由于Cmark位为“1”,因此符号转换部521读取登录在压缩符号“11”所表示的索引、即索引“3”的符号“B”(图31A),并将其作为原始符号而输出。此外,符号转换部521将符号“B”移动至索引“0”,并使符号“A”、“D”、“C”移动至下一个条目。熵计算部522将“2”作为熵的计算结果而输出,掩码生成部523生成数据掩码“00000011”而提供给解串化器51。
图31C示出向解压缩装置50输入串行数据“0F”的情况的处理。由于Cmark位为“0”,因此解串化器51根据N位的输出来输出压缩符号“F”。解串化器51将Cmark位“0”和压缩符号“F”提供给解压缩器52。
由于Cmark位为“0”,因此符号转换部521将压缩符号“F”作为原始符号而输出的同时,进行对于转换表的推动处理,将符号“F”登录于索引“0”。在该情况下,生成并输出数据掩码“11111111”。
图32A示出向解压缩装置50输入串行数据“0G”的情况的处理。由于Cmark位为“0”,因此解串化器51根据N位的输出来输出压缩符号“G”。解串化器51将Cmark位“0”和压缩符号“G”提供给解压缩器52。
由于Cmark位为“0”,因此符号转换部521将压缩符号“G”作为原始符号而输出的同时,进行对于转换表的推动处理,将符号“G”登录于索引“0”。在该情况下,生成并输出数据掩码“11111111”。
图32B示出向解压缩装置50输入串行数据“0E”的情况的处理。由于Cmark位为“0”,因此解串化器51根据N位的输出来输出压缩符号“E”。解串化器51将Cmark位“0”和压缩符号“E”提供给解压缩器52。
由于Cmark位为“0”,因此符号转换部521将压缩符号“E”作为原始符号而输出的同时,进行对于转换表的推动处理,将符号“E”登录于索引“0”。在该情况下,生成并输出数据掩码“11111111”。
图32C示出向解压缩装置50输入串行数据“1010”的情况的处理。解串化器51参照串行数据“1010”的最开头的“1”而判定为Cmark位“1”。在该情况下,根据来自解压缩器52的数据掩码“00000111”读取3位,并将位值“010”作为压缩数据而输出。由此,Cmark位“1”和压缩符号“010”输入于解压缩器52。
由于Cmark位为“1”,因此符号转换部521读取登录在压缩符号“010”所表示的索引、即索引“2”的符号“F”(图32B),并将其作为原始符号而输出。此外,符号转换部521将符号“F”移动至索引“0”,并使符号“E”、“G”移动至下一个条目。熵计算部522将“3”作为熵的计算结果而输出,掩码生成部523生成数据掩码“00000111”而提供给解串化器51。
图33A示出向解压缩装置50输入串行数据“0H”的情况的处理。由于Cmark位为“0”,因此解串化器51根据N位的输出来输出压缩符号“H”。解串化器51将Cmark位“0”和压缩符号“H”提供给解压缩器52。
由于Cmark位为“0”,因此符号转换部521将压缩符号“H”作为原始符号而输出的同时,进行对于转换表的推动处理,将符号“H”登录于索引“0”。在该情况下,生成并输出数据掩码“11111111”。
图33B示出向解压缩装置50输入串行数据“0J”的情况的处理。由于Cmark位为“0”,因此解串化器51根据N位的输出来输出压缩符号“J”。解串化器51将Cmark位“0”和压缩符号“J”提供给解压缩器52。
由于Cmark位为“0”,因此符号转换部521将压缩符号“J”作为原始符号而输出的同时,进行对于转换表的推动处理,将符号“J”登录于索引“0”。此时,符号“C”从转换表中挤出而被删除。熵计算部522将“3”作为熵计算结果而输出,掩码生成部523将数据掩码“00000111”提供给解串化器51。
图33C示出向解压缩装置50输入串行数据“1110”的情况的处理。解串化器51参照串行数据“1110”的最开头的“1”而判定为Cmark位“1”。在该情况下,根据来自解压缩器52的数据掩码“00000111”读取3位,将位值“110”作为压缩数据而输出。由此,Cmark位“1”和压缩符号“110”输入于解压缩器52。
由于Cmark位为“1”,因此符号转换部521读取登录在压缩符号“110”所表示的索引、即索引“6”的符号“A”(图33B),并将其作为原始符号而输出。此外,符号转换部521将符号“A”移动至索引“0”,并使符号“J”至“B”移动至下一个条目。熵计算部522将“3”作为熵的计算结果而输出,掩码生成部523生成数据掩码“00000111”而提供给解串化器51。
图34示出向解压缩装置50输入串行数据“1110”的情况的处理。解串化器51参照串行数据“1110”的最开头的“1”而判定为Cmark位“1”。在该情况下,根据来自解压缩器52的数据掩码“00000111”读取3位,将位值“110”作为压缩数据而输出。由此,Cmark位“1”和压缩符号“110”输入于解压缩器52。
由于Cmark位为“1”,因此符号转换部521读取登录在压缩符号“110”所表示的索引、即索引“6”的符号“B”(图33C),并将其作为原始符号而输出。此外,符号转换部521将符号“A”移动至索引“0”,并使符号“A”至“G”移动至下一个条目。熵计算部522将“3”作为熵的计算结果而输出,掩码生成部523生成数据掩码“00000111”而提供给解串化器51。
根据上述解压缩方法,在解压缩器52中重现压缩器11所具备的转换表,可以使用转换表来解压缩(复原)原始符号。此时,根据转换表的使用状况能够改变压缩符号长度。因此,根据表(多个条目)的使用状况来能够提高压缩率。此外,可以减少流经压缩装置10和解压缩装置50之间的传输路径的数据量。
[实施方式二]
接下来,对实施方式二的压缩装置和解压缩装置进行说明。实施方式二包括与实施方式一相同的结构,因此省略相同的结构的说明,主要说明不同点。
在实施方式一中,随着原始符号的种类的增多,转换表成为满格,在满格的情况下,数据掩码成为M位,即使在转换表中原始符号命中,压缩符号也还是会成为M位,因此无法在局部地进行熵控制。因此,在实施方式二中,根据符号的命中的次数或者未命中的次数来清除使用中的条目中的、位于最后(索引值最大)的条目中的符号,由此实现熵的减少(也被称为熵剔除)。
图35示出实施方式二的熵剔除的一个示例。如图35的左上所示,假设在压缩装置的转换表中符号“A”~“E”登录在索引“0”~“4”的情况。此时,若作为原始符号而输入符号“D”(8位),则索引“3”(位值:011)命中。此时,第一计算方法下的熵计算结果为3,基于此的数据掩码成为“00000111”,因此从压缩装置的输出、即Cmark位和压缩符号的串行数据成为“1011”。
基于符号“D”的命中,按照第一操作方法而符号“D”移动至索引“0”,符号“A”、“B”、“C”移动至下一个条目(参照图中右上的转换表)。
而后,假设输入符号“C”作为原始符号。在该情况下,还是索引“3”命中。熵值和数据掩码没有改变,因此输出串行数据“1011”。
基于符号“C”的命中,按照第一操作方法而符号“C”移动至索引“0”,符号“D”、“A”、“B”移动至下一个条目(参照图中左下的转换表)。此外,将两次的命中作为触发(trigger)来删除(清除)使用中的条目中的、索引值最大的条目中的符号“E”。
而后,若符号“B”作为原始符号而输入,则索引“4”命中。在此,因符号“E”的删除而熵的计算结果成为2,并数据掩码成为“00000011”。因此,从压缩装置输出由Cmark位“1”和压缩符号“11”组成的串行数据“111”。
而后,基于符号“B”的命中,按照第一操作方法而符号“B”移动至索引“0”,符号“C”、“D”、“A”移动至下一个条目(参照图中右下的转换表)。而后,若符号“C”作为原始符号而输入,则索引“1”命中。在该时间点的熵的计算结果成为2,数据掩码成为“00000011”。因此,从压缩装置输出由Cmark位“1”和压缩符号“01”组成的串行数据“101”。
在解压缩装置中也同样地将两次的命中作为契机来清除使用中的条目中的、索引值最大的条目中的符号。因此,解压缩装置中的转换表也进行如图35所示的转变。除上述点外,压缩装置和解压缩装置的结构与实施方式一相同。
此外,可以制定登录在位于从开头到规定的位置(位于规定的范围)的条目中的符号不会因剔除而被删除的规则。由此,可以防止剔除所导致的已登录的符号被过多删除的情况。例如,在图35所示的转换表中,可以采用即使登录在索引“0”和“1”的条目的符号满足剔除的条件,也不会被作为清除的对象的结构。规定的位置可适当地设定。
此外,在上述的例子中,示出了通过第两次的命中来进行剔除的例子,但也可以将规定次数的未命中作为触发而执行剔除。在对次数进行计数的命中或者未命中之间也可以夹着未命中、命中(命中或者未命中的次数不需要连续)。
根据实施方式二,通过熵剔除,可以进行局部的熵的控制,可以缩小压缩符号的大小(size)。
[实施方式三]
而后,对实施方式三的压缩装置和解压缩装置进行说明。实施方式三包括与实施方式一相同的结构,因此省略相同的结构的说明,主要说明不同点。
如作为参考例的问题二所示的那样,在参考例中,在解压缩侧无法识别压缩符号串的末尾。因此,通过例外符号来预定(保留)转换表的开头到规定的位置的条目。例外符号为分配有规定的命令(指令)的符号,在解压缩侧,识别由例外符号所表示的与控制相关的命令。登录在被保留的条目中的例外符号不会成为覆盖登录、删除的对象。在压缩侧,避开(bypass)使用了转换表的转换处理而进行例外符号的输出也可。此外,在来自压缩装置的输出中,可以以Cmark位“0”且N位宽度将附随于指令的实参(引数,argument)接在例外符号之后。设定为在解压缩侧(解压缩装置)掌握该实参的个数。
<指令发送>
图37A~C为例外符号的说明图。在图37A中示出压缩装置和解压缩装置共享的转换表的一个例子。转换表具有规定数量(作为一个例子为4)的条目(索引“0”~“3”),索引“0”以表示指令1的例外符号的登录用而被保留,索引“1”以表示指令2的例外符号的登录用而被保留。
图37B示出指令1的发送方法(第一发送方法)的一个例子。在将指令1从压缩侧向解压缩侧发送的情况下,压缩装置将Cmark位“1”和作为压缩符号的索引“0”发送给解压缩侧。解压缩装置根据Cmark位“1”来从索引“0”读取指令1的例外符号并识别指令1而进行与指令1相对应的处理。然而,在使用第一发送方法的情况下,需要保证用于指令的位流(符号)不会作为原始符号而出现。或者,有必要保留登录有指令的条目,以使无法其作为原始符号的登录用而使用。
图37C示出指令1的其他发送方法(第二发送方法)。在将指令1向解压缩装置发送的情况下,压缩装置将Cmark位“0”和作为压缩符号的指令1的例外符号发送给解压缩装置。在解压缩装置中,根据Cmark位“0”而欲要将指令1的例外符号登录于转换表,但是由于指令1的例外符号已被登录,因此发生错误(例外)(参照图22、S38、S41)。解压缩装置在对于该例外的例外处理中执行作为例外指令的指令1。
图38A~C示出不进行条目的保留而将指令从压缩装置向解压缩装置发送的方法。图38A示出转换表的一个例子。转换表具有规定数量(作为一个例子为4)的条目,索引“0”和“1”中分别登录有两个符号“AB”和“CD”。符号“AB”和“CD”并不是例外符号,而是通常的原始符号,。此外,符号的数量为示例,也可以是1个或者3个以上。
图38B示出指令的第三发送方法。在压缩装置和解压缩装置中具有图38A所示的登录内容的转换表的状况下,发送Cmark位“1”和作为压缩符号的空条目的索引(索引“2”或者“3”)。解压缩装置根据Cmark位“1”而尝试从索引“2”或者“3”中读取符号,但是由于是空条目,因此无法读取而成为错误(参照图22、S33、S42)。解压缩装置将该错误的发生当作例外(指令执行)的发生。此时,若为索引“2”,则可以解释为指令1,若为索引“3”,则可以解释为指令2。
图38C示出指令的第四发送方法。在压缩装置和解压缩装置中具有图38A示出的登录内容的转换表的状况下,发送Cmark位“0”和作为压缩符号的、符号“AB”或者“CD”。解压缩装置根据Cmark位“0”而尝试登录符号“AB”或者“CD”,但是由于符号“AB”和“CD”已被登录,因此发生错误。解压缩装置将该错误的发生当作例外(指令执行)的发生。此时,若为符号“AB”,则可以解释为指令1的执行,若为符号“CD”,则可以解释为指令2的执行。
在第一~第四发送方法的执行之时,符号转换部111也可以不进行与转换表相关的通常的处理,而是生成与指令相对应的Cmark位和压缩符号的组合而发送。
图39为汇总了第一~第四发送方法的表。上述的第一和第二发送方法属于保留用于登录作为指令的例外符号的条目的类型(类型1)。与之相对地,第三和第四发送方法属于不保留指令(例外符号)用的条目的类型(类型2)。类型一和类型二分别被分类为向解压缩侧发送条目的索引的类型(类型3)和向解压缩侧发送原始符号的类型(类型4)。
第一发送方法为类型1和类型3的组合。如上所述,压缩装置将被保留的条目的索引和Cmark位“1”发送给解压缩装置。解压缩装置取得登录在由索引所指定的条目中的符号而执行指令。第一发送方法被称为RETI(Reserve Entry(保留条目),Transmit Index(传输索引))。
第二发送方法为类型1和类型4的组合。如上所述,压缩装置将登录在被保留的条目的原始符号(指令)和Cmark位“0”发送给解压缩装置。在解压缩装置中,原始符号(指令)为已登录,因此发生错误(例外)。作为对于该例外的例外处理,解压缩装置执行指令。第二发送方法被称为RETO(Reserve Entry(保留条目),Transmit Original(传输原始))。
第三发送方法为类型2和类型3的组合。如上所述,压缩装置将未使用的条目的索引和Cmark位“1”发送给解压缩装置。在解压缩装置中,索引所表示的条目为未使用,因此发生错误(例外)。作为对于该例外的例外处理,解压缩装置执行指令。第三发送方法被称为FETI(Free Entry(自由条目),Transmit Index(传输索引))。
第四发送方法为类型2和类型4的组合。如上所述,压缩装置将登录在被保留的条目中的原始符号(指令)和Cmark位“0”发送给解压缩装置。在解压缩装置中,原始符号为已登录,因此发生错误(例外)。作为对于该例外的例外处理,解压缩装置执行指令。第四发送方法被称为FETO(Free Entry(自由条目),Transmit Original(传输原始))。在第三和第四发送方法中,可以使用从压缩装置发送的指令,也可以解压缩装置取得发生例外时保持在本地(lacal)的指令而执行。不提及指令的取得路径。
类型1的优点在于不需要检索所有的条目。与此相对地,类型1的缺点在于会产生无法利用于压缩的条目、需要事先定义指令登录用的条目。类型2的优点在于虽然需要检索所有的条目,但是可将所有的条目利用于压缩。类型2的缺点在于在转换表满格的情况和存在空条目的情况下分开使用第三发送方法(FETI)和第四发送方法(FETO)。具体地,在转换表满格的情况下执行FETO。在转换表中存在空条目的情况下执行FETI。除此之外,FETO被执行。
图40为示出指令发送的一个示例的时序图。在对于原始符号串的压缩装置10的压缩处理过程中,若输入例外,则停止对于原始符号的压缩处理,而执行规定的例外处理。作为例外处理,在解压缩装置50中进行将指令执行用数据插入到压缩符号串间的处理。指令执行用数据包括:例如使例外发生的例外符号(在图37B和C、图38B和C中示出的索引、符号)、解压缩装置50所需执行的指令。更进一步地,在指令执行用数据中可以包括与指令执行相关的一个或者两个以上的实参。在图40中,在指令之后插入有两个实参。若例外处理结束,则重新开始对于原始符号的压缩处理。
在解压缩装置50中,在对于压缩符号的解压缩处理过程中,若检测到例外符号,则发生例外,作为例外处理,加塞而进行指令的执行。在指令的执行期间,停止对于压缩符号的解压缩处理,不将例外符号、指令、实参作为解压缩结果而输出。
<工作示例>
<<压缩装置中的处理>>
图41A~C、图42A~C、图43A~C、图44A~C、图45A~C、图46A和B为用于说明实施方式三中的压缩装置10的工作示例(压缩方法)的图。在本工作示例中处理8位的原始符号。转换表的大小为条目数8(索引“0”~“7”)(参照图41A)。关于例外符号,进行使用FETI(第三发送方法)或者FETO(第四发送方法)的应对。
作为基于例外符号的指令,在本工作示例中,使用RES(Reset Table,重置表)指令和EOS(End of Stream,结束流)指令。RES指令为重置转换表的登录内容的指令。RES指令记为“RET”。RES指令由符号“E”表示。EOS指令为表示压缩符号串的尾端的符号,记为“EOS”。EOS指令由符号“F”表示。在以下说明中示出由符号转换部111、521执行指令的例子,但也可以由符号转换部111、521以外的部件执行指令。例如,也可以设置执行指令的指令执行部。
假设对压缩装置10作为原始符号串而输入“ABAC(RET)BACAGFHJK(EOS)”的情况。图41B示出对于原始符号串的最开头的符号“A”的处理,图41C示出对于符号“A”之后的符号“B”的处理。对于符号“A”和符号“B”的处理与实施方式一相同,因此省略说明。
图42A示出对于符号“B”之后的符号“A”的处理,图42B示出对于符号“A”之后的符号“C”的处理。对于符号“A”和符号“C”的处理与实施方式一相同,因此省略说明。
图42C示出输入了例外指令“RET”的情况的处理。若“RET”被输入,则压缩装置10的压缩器11的符号转换部111进行利用FETO(第四发送方法)的应对。在本工作示例中,作为已登录的条目的一个例子而使用索引“0”,将已登录在索引“0”的符号“C”作为压缩符号而输出。符号转换部111将对于该符号“C”的Cmark位的值设定为“0”。由此,在解压缩装置50产生关于符号“C”的矛盾,成为例外发生的触发。继而,符号转换部111输出意味着RES指令的指令符号“E”。此外,使用于FETO的条目也可以是索引“0”以外的条目,只要是已登录的即可。
图43A示出根据“RET”来执行例外(RES指令)的情况。压缩器11(符号转换部111)通过执行RES指令来进行转换表的重置(所有的已登录的符号的清除),初始化转换表。能够通过RES指令为了不同的数据流而重置熵的历史记录(履历)。
图43B示出对于原始符号“B”的处理,图43C示出对于符号“B”之后的原始符号“A”的处理。这些处理与实施方式一相同,因此省略说明。
图44A示出对于原始符号“C”的处理,图44B示出对于符号“C”之后的原始符号“A”的处理,图44C示出对于符号“A”之后的原始符号“G”的处理。这些处理与实施方式一相同,因此省略说明。
图45A示出对于原始符号“F”的处理,图45B示出对于符号“F”之后的原始符号“H”的处理,图45C示出对于符号“H”之后的原始符号“J”的处理。这些处理与实施方式一相同,因此省略说明。
图46A示出对于符号“J”之后的原始符号“K”处理。这些处理与实施方式一相同,因此省略说明。图46B示出输入了例外指令“EOS”的情况下的处理。若“EOS”被输入,则压缩装置10的压缩器11的符号转换部111将登录在索引“0”的符号“K”作为压缩符号而输出,以此作为基于FETO(第四发送方法)的应对。符号转换部111将对于该符号“K”的Cmark位的值设定为“0”。由此,在解压缩装置50产生关于符号“C”的矛盾,成为例外发生的触发。继而,符号转换部111输出意味着EOS指令的指令符号“F”。而后,在压缩装置10中,通过例外指令“EOS”来识别原始符号串的尾端,并进行规定的处理(也可以结束压缩处理)。
<<解压缩装置中的处理>>
图47A~C、图48A~C、图49A~C、图50A~C、图51A~C、图52A和B为用于说明实施方式三中的解压缩装置50的工作示例(解压缩方法)的一个示例的图。图47A示出解压缩装置50的解压缩器52所具有的转换表,其具有与压缩装置10所具有的转换表相同的结构。在本工作示例中,对作为压缩符号而向解压缩装置50输入“AB1CCEBAC1GFHJKKF”的情况进行说明。其中,各符号在其前面放置有Cmark位,与Cmark位组合而成串行数据。这一点与实施方式一相同。
图47B示出关于串行数据“0A”的处理。在实施方式三中,解串化器51也将串行数据“0A”分离为Cmark位“0”和压缩符号“A”而输入给解压缩器52。解压缩器52根据Cmark位“0”而将压缩符号“A”作为原始符号而输出。这是与实施方式一相同的处理。
然而,在实施方式三中,在将符号登录于转换表的情况下,符号转换部521在确认所有的条目中均未登录有登录对象的符号之后进行登录。在此,符号转换部521在确认符号“A”没被登录之后进行符号“A”的登录。
图47C示出对于串行数据“0A”之后的串行数据“0B”的处理。图48A示出对于串行数据“0B”之后的串行数据“11”的处理。图48B示出对于串行数据“11”之后的串行数据“0C”的处理。这些处理与实施方式一相同,因此省略说明。
图48C示出对于串行数据“0C”的处理。符号转换部521根据Cmark位“0”而欲要将符号“C”登录于转换表。然而,符号“C”已登录在转换表。因此,发生矛盾(错误)。于是,符号转换部521参照下一个输入的压缩符号,若符号的值为符号“E”,则执行指令“RET”,清除转换表的所有的条目。由此,表被重置(参照图49A)。对于符号转换部521,符号“C”为矛盾发生用的符号,符号“E”为指令符号,因此符号转换部521不输出与这些相对应的原始符号(解压缩符号)。
图49B示出对于在表重置后输入的串行数据“0B”的处理。图49C示出对于串行数据“0B”之后的串行数据“0A”的处理。图50A示出对于串行数据“0A”之后的串行数据“0C”的处理。图50B示出对于串行数据“0C”之后的串行数据“11”的处理。图50C示出对于串行数据“11”之后的串行数据“0G”的处理。这些处理与实施方式一相同,因此省略说明。
图51A示出对于串行数据“0G”之后的串行数据“0F”的处理。图51B示出对于串行数据“0F”之后的串行数据“0H”的处理。图51C示出对于串行数据“0H”之后的串行数据“0J”的处理。图52A示出对于串行数据“0J”之后的串行数据“0K”的处理。这些处理与实施方式一相同,因此省略说明。
图52B示出对于在串行数据“0K”之后的串行数据“0K”的处理。符号转换部521根据Cmark位“0”而欲要将符号“K”登录于转换表。然而,符号“K”已登录在转换表,因此发生矛盾。于是,符号转换部521参照下一个压缩符号。若下一个压缩符号为“F”,则符号转换部执行指令“EOS”,识别(检测)原始符号串的尾端。与此同时,进行规定的处理(解压缩处理的结束等)。
根据实施方式三,可以将指令从压缩装置10向解压缩装置50发送,并进行表重置、原始符号串的尾端位置的识别等。指令的内容为示例,也可以发送RET、EOS以外的指令。
[实施方式四]
接下来,说明实施方式四的压缩装置和解压缩装置。实施方式四包括与实施方式一和实施方式三相同的结构,因此省略相同的结构的说明,主要说明不同点。
实施方式四示出在实施方式三中所说明的转换表中保留指令符号登录用的条目的方式。图53A~C、图54A~C、图55A~C、图56A~C、图57A~C、图58示出实施方式四中的压缩装置10的工作示例(压缩方法)。如图53A所示,在实施方式四中,在压缩装置10和解压缩装置50的各转换表中保留索引“0”和“1”,预先登录指令用的符号“C”和“F”。可以登录原始符号的条目成为以索引“2”为开头的索引“2”~“7”。
由于是已在索引“0”和“1”中登录有符号的状态,因此实施方式四中的熵计算值的初始值成为“1”。其他的条件与实施方式三相同,原始符号和例外符号(指令)的串也与实施方式三相同。
图53B示出对于原始符号“A”的处理。符号“A”为未登录,因此符号转换部111将符号“A”登录于索引“2”,并输出Cmark位“0”和压缩符号“A”。熵计算值成为2。数据掩码全部成为1。图53B示出对于原始符号“B”的处理。在该情况下,符号“B”登录于索引“2”,符号“A”向下方的索引“3”移动。输出Cmark位“0”和压缩符号“B”。熵计算值为2,数据掩码全部为1。
图54A示出对于原始符号“A”的处理。符号“A”已登录在索引“3”(图53C),因此输出Cmark位“1”和索引值“3”。此时的熵计算值为2,数据掩码成为表示有效位数2的“00000011”。
图54B示出对于原始符号“C”的处理。符号C已登录在索引“0”,因此输出Cmark位“1”和索引值“0”。如此,对于作为原始符号的符号“C”,为了登录指令符号“C”而被保留的索引“0”使用于原始符号“C”的压缩。在该情况下的熵计算值为2,数据掩码为“00000011”。
图54C示出指令符号“RET”的输入时的处理。若输入指令符号“RET”,则符号转换部111使用RETO(第四发送方法)将登录在预定的索引“0”的RET的指令符号“C”作为压缩符号而输出,并且输出用于在解压缩装置50引起矛盾的Cmark位“0”。因此,数据掩码全部为1。符号转换部111根据指令“RET”清除索引“2”之后的条目中的已登录符号。
图55A示出对于原始符号“B”的处理,图55B示出对于原始符号“A”的处理,图55C示出对于原始符号“C”的处理。图56A示出对于原始符号“A”的处理,图56B示出对于原始符号“G”的处理。与实施方式三相同地,按照第一操作方法进行这些处理。省略详细的说明。
图56C示出对于原始符号“F”的处理。符号“F”作为指令符号而登录在索引“1”。将该条目使用于原始符号“F”的压缩,符号转换部111输出Cmark位“1”和索引值“1”。此时的熵计算值为3,输出数据掩码“00000111”。
图57A示出对于原始符号“H”的处理,图57B示出对于原始符号“J”的处理,图57C示出对于原始符号“K”的处理。与实施方式三相同地,按照第一操作方法进行这些处理。省略详细的说明。
图58示出指令符号“EOS”的输入时的处理。若输入指令符号“EOS”,则符号转换部111使用RETO(第四发送方法)将登录在预定的索引“1”的EOS的指令符号“F”作为压缩符号而输出,并且输出用于在解压缩装置50引起矛盾的Cmark位“0”。因此,数据掩码全部为1。在压缩器11(压缩装置10)中,通过指令“EOS”识别原始符号串的尾端,并进行规定的处理。
图59A~C、图60A~C、图61A~C、图62A~C、图63A~C、图64示出实施方式四中的解压缩装置50的工作示例(解压缩方法)。如图59A所示,与压缩装置10相同地,解压缩器52所具有的转换表的索引“0”和“1”被保留,登录(存储)有符号“C”和“F”。因此,熵计算值的初始值为1。
从压缩装置10输出的串行数据流作为传输数据而输入于解压缩装置50。串行数据流为在压缩符号“AB30CBA02G1HJKF”的每个符号前添加了Cmark位的串行数据的集合。以下,在与实施方式三的比较而说明解压缩装置50中的处理。
图59B示出对于串行数据“0A”的处理。在解压缩装置50中,解串化器51将串行数据“0A”分离为Cmark位“0”和压缩符号“A”而提供给解压缩器52。解串化器51的动作与实施方式三相同,在解压缩器52中,符号转换部521进行与实施方式三相同的处理(图22)。然而,索引“0”和“1”被保留,因此,除了用于登录压缩符号的条目从索引“2”开始和熵的计算值由此而发生变化外,与实施方式三相同。
图59C示出对于串行数据“0B”的处理。图60A示出对于串行数据“111”的处理。图60B示出对于串行数据“100”的处理。关于这些,除了上述的登录位置和熵计算值不同以外都与实施方式三相同,因此省略说明。
图60C示出对于串行数据“0C”的处理。Cmark位“0”和因压缩装置10中的RETO而作为压缩符号输出的符号“C”(指令“RET”的符号)输入于解压缩器52。符号转换部521根据Cmark位“0”而参照转换表时,符号“C”已登录,因此发生错误。以该错误为契机执行分配有符号“C”的指令“RET”,重置除了保留区域以外的转换表的登录内容。
图61A~C示出对于串行数据“0B”、“0A”、“100”的处理。图62A~C示出对于串行数据“110”、“0G”、“0F”的处理。图63A~C示出对于串行数据“0H”、“0J”、“0K”的处理。这些处理实质上与实施方式三的动作相同,因此省略说明。
图64示出对于串行数据“0F”的处理。Cmark位“0”和压缩装置10通过RETO所输出的压缩符号“F”(指令“EOS”的符号)输入于解压缩器52。根据Cmark位“0”来在转换表中检索符号“F”,符号“F”已登录,因此发生错误。以该错误为契机执行分配有符号“F”的指令“EOS”,识别原始符号串的尾端。也可以执行与尾端的识别相对应的规定的处理。
根据实施方式四,与实施方式三相同地,可以使解压缩装置50执行规定的指令(命令)。
[实施方式五]
接下来,对实施方式五的压缩装置和解压缩装置进行说明。实施方式五的结构与实施方式一具有共同点,因此主要说明不同点,省略共同点的说明。
在实施方式一中,在登录有检索对象的符号的条目命中的情况下,命中的条目中的符号向索引“0”的条目移动,并通过推动来将登录在其他条目的符号向下一个条目移动(图16A)。在实施方式一中,与命中的条目的位置(索引)无关地,进行向索引“0”的移动。然而,在通过硬件(电路)来实现这种处理的情况下,可能会导致电路结构的复杂化,电路规模的增大和动作频率的下降。
因此,在实施方式五中,在表更新(图15的S16、图23的S35)中,使命中的条目中的符号向从命中的条目的索引i(i为0以上的整数)回溯了k个后的条目移动。由此,减少通过推动来移动的符号的数量,实现电路规模的缩小。然而,在i-k≤0的情况下,使符号向原始符号的登录领域的开头的条目移动。若没有保留,则开头的条目为索引“0”,若存在保留,则被保留的条目数+1的索引成为开头的条目。
图65A~C、图66A~C、图67A~C示出实施方式五的压缩装置10的工作示例。图65A示出实施方式五的压缩装置10和解压缩装置50所具有的转换表的数据结构。在本工作示例中,与实施方式一相同地,原始符号的大小为8位,使用条目数为8(索引“0”~“7”)的转换表。此外,在本工作示例中,转换表的操作采用第一操作方法,熵的计算采用第一计算方法。关于例外符号,通过RETI(第三发送方法)进行处理。
然而,与实施方式一不同地,在条目命中的情况下,命中的条目中的符号向从其索引i回溯了k个后的条目(k=2)移动。其中,k的值可以设定为2以外的适当的数。此外,在两次的条目的命中时(命中次数(命中计数=2)的情况下),进行在实施方式二中所说明的条目剔除。
如图65A所示,在本工作示例中,索引“0”被保留,登录有指令1。指令1的符号(例外符号)与原始符号不同。在本工作示例中,指令1为指令“EOS”,但也可以是EOS以外的指令。由于保留了索引“0”,因此用于登录原始符号的条目的开头为索引“1”。
图65B示出对于原始符号“A”的处理。图65C示出对于原始符号“B”的处理。关于这些动作,除了登录于符号“A”的登录位置为原始符号的登录区域的开头的索引“1”之外,与实施方式一相同,因此省略详细的说明。数据掩码的创建方法也与实施方式相同。
图66A示出对于原始符号“A”的处理。在该情况下,登录有符号“A”的索引“2”命中。然而,由于i-k=2-2=0(i-k≤0),因此符号“A”向作为原始符号的登录区域的开头的索引“1”(参照图66A的箭头)移动。此外,在该情况下,Cmark位成为“1”,压缩符号成为“2”,数据掩码成为“00000011”。此外,命中次数(命中计数)的值成为1。
图66B和C示出对于原始符号“C”和“D”的处理。这些处理与实施方式一中的、对于未登录的符号的处理相同,因此省略说明。
图67A示出对于原始符号“B”的处理。符号“B”登录在索引“4”,因此从压缩器11输出Cmark位“1”和索引值“4”。此时,符号“B”向从命中的条目的索引“4”回溯两个后的索引“2”移动。此时,符号“A”和“C”被推动,分别移动至下一个条目。这些转换表的替换处理例如由压缩器11(符号转换部111)进行,但也可以由符号转换部111以外的部件进行。该情况下的熵计算值成为2,数据掩码成为“00000011”。
此外,命中计数成为2。因此,在作为已登录的条目中的、位于末尾的条目的索引“4”中所登录的符号“A”因熵剔除而被删除。该处理也可以由压缩器11(符号转换部111)或者符号转换部111以外的部件进行。在实施剔除的同时,重置命中计数的值(成为0)。
图67B示出对于原始符号“C”的处理。符号“C”已登录在索引“3”,因此从压缩器11输出Cmark位“1”和索引值“3”。此时,符号“C”向从命中的条目的索引“3”回溯两个后的索引“1”移动。此时,符号“D”和“B”被推动,分别移动至下一个条目。该情况下的熵计算值成为2,数据掩码成为“00000011”,命中计数成为1。
图67C示出输入了例外指令“EOS”的情况下的处理。在该情况下,进行RETI(第一发送方法)。即,表示“EOS”的符号(指令1)已登录在被保留的索引“0”,因此从压缩器11输出Cmark位“1”和索引“0”。在命中指令符号的情况下,不发生命中的符号的移动。因此,是否将该命中加入到作为剔除的发生条件的命中计数中是任意的,遵循指令规范。在图67C中,示出加入到命中的次数而执行剔除,删除末尾的符号“B”的例子。该情况下,熵计算值为2,数据掩码为“00000011”,命中计数为0。在不进行剔除的情况下,维持符号“B”和命中计数值“1”不变。
图68A~C、图69A~C、图70A~C示出实施方式五的解压缩装置50的工作示例。图68A示出解压缩器52所具有的转换表。转换表的数据结构与压缩器11所具有的转换表的数据结构相同。给由原始符号串的转换而得到的压缩符号串“AB2CD430”的各符号添加了Cmark位的串行数据流输入于解压缩装置50。
图68B和C示出对于串行数据“0A”和“0B”的处理。在解压缩装置50中,解串化器51将串行数据分离为Cmark位“0”和压缩符号“A”而提供给解压缩器52。解串化器51的动作与实施方式三相同,在解压缩器52中,符号转换部521进行与实施方式三相同的处理(图22)。然而,索引“0”被保留,因此,除了用于登录压缩符号的条目从索引“1”开始和熵的计算值由此而发生变化外,与实施方式三相同。
图69A示出对于串行数据“110”的处理。基于Cmark位“1”和压缩符号“10”,索引“2”命中。在该情况下,登录在索引“2”的符号“A”向索引“1”(由于满足i-k≤0)移动,登录在索引“1”的符号“B”向索引“2”移动。符号“A”作为解压缩符号而输出。熵计算值为2,数据掩码为“00000011”,位计数为1。
图69B示出对于串行数据“0C”的处理。基于Cmark位“0”而压缩符号“C”登录于索引“1”,符号“A”和“B”移动至下一个条目。符号“C”作为解压缩符号而输出。熵计算值、数据掩码、位计数没有变化。
图69C示出对于串行数据“0D”的处理。基于Cmark位“0”而压缩符号“D”登录于索引“1”,符号“C”、“A”、“B”移动至下一个条目。符号“D”作为解压缩符号而输出。熵计算值成为3,数据掩码成为“00000111”。位计数保持为1。
图70A示出对于串行数据“1100”的处理。基于Cmark位“1”和压缩符号“100”而索引“4”命中。在该情况下,登录在索引“4”的符号“B”向索引“2”移动(由于k=2),登录在索引“2”和“3”的符号“C”和“A”移动至下一个条目。此时,命中计数成为2,因此进行熵剔除,删除位于末尾的符号“A”。由此,熵计算值成为2,数据掩码成为“00000011”。命中计数被重置。
图70B示出对于串行数据“111”的处理。基于Cmark位“1”和压缩符号“11”而索引“3”命中。在该情况下,登录在索引“3”的符号“C”向索引“1”移动(由于k=2),登录在索引“1”和“2”的符号“D”和“B”移动至下一个条目。此时,命中计数成为1。符号“C”作为解压缩符号而输出。熵计算值为2,数据掩码为“00000011”。
图70C示出对于串行数据“100”的处理。基于Cmark位“1”和压缩符号“00”而索引“0”命中。在该情况下,读取登录在索引“0”的符号“指令1=指令EOS”。执行EOS,解压缩器52识别原始符号串的尾端。也可以根据该识别来进行规定的处理。此外,在图70C示出的例子中,示出通过熵剔除来删除末尾的符号“B”的情况,但也可以不删除。
根据实施方式五,通过条目的相邻交换,可以缩小随着命中而登录内容发生变化的条目的范围,可以减少转换表的更新处理的负荷、时间。
[实施方式六]
接下来,说明实施方式六的压缩装置和解压缩装置。实施方式六的结构与实施方式一具有共同点,因此主要说明不同点,省略共同点的说明。
作为实施方式六,示出级联连接实施方式一中所说明的压缩器11、解压缩器52的例子。图71示出实施方式六的压缩装置10A。在图71中,在压缩装置10A中,串联连接多个(在图71的例子中为三个)压缩器11a、11b、11c和串化器12。
原始符号数据(N位)输入于压缩器11a。压缩器11a具有在实施方式一中所说明的转换表,以N=四个符号的方式将原始符号数据(例如“ABCDABCDABEF”)转换为N位的压缩符号“ABCD1010ABEF”,并将其和与压缩符号相对应的Cmark位一同输出。压缩器11b也具有与压缩器11a相同的结构。压缩器11b以N=两个符号的方式将从压缩器11a输入的N位的压缩符号转换为N位的压缩符号“ABCD1002EF”,并将其和对应的Cmark位一同输出。压缩器11b为“其他压缩装置”的一个例子。
压缩器11c和串化器12具有与在实施方式一中所说明的压缩器11和串化器12相同的结构。压缩器11c输出M位的压缩符号、Cmark位和数据掩码。
图72示出实施方式六的解压缩装置50A。在图72中,在解压缩装置50A中,串联连接解串化器51和与压缩装置10A所具有的压缩器的数量(三个)相对应的解压缩器52a、52b、52c。
解串化器51和解压缩器52a具有与实施方式一中的解串化器51和解压缩器52相同的结构。发送自压缩装置10A的、k位的传输数据(压缩装置10A)输入于解串化器51,并解串化器51输出M位的压缩符号和对于压缩符号的Cmark位。
来自解压缩器52a的解压缩符号和Cmark位输入于解压缩器52b,解压缩器52b输出N位的压缩符号和对应的Cmark位。解压缩器52b为“其他解压缩装置”的一个例子。
来自解压缩器52b的解压缩符号和Cmark位输入于解压缩器52c,解压缩器52v输出N位的原始符号数据和对应的Cmark位。解压缩器52a输出N位的解压缩符号“ABCD1002EF”,解压缩器52b进行N=两个符号的解压缩,输出解压缩符号“ABCD1010ABEF”,解压缩器52c输出原始符号数据“ABCDABCDABEF”。
根据实施方式六,压缩装置10A和解压缩装置50A具有级联连接(cascadeconnection)了进行压缩、解压缩的位宽度(符号数)不同的多个压缩器(压缩器11a~11c)、多个解压缩器(解压缩器52a~52c)的结构。由此,可以使具有长的位模式(bit pattern)的原始符号数据的、传输路径中的大小变得足够小。
[实施方式七]
接下来,对实施方式七的压缩装置和解压缩装置进行说明。实施方式七的结构与实施方式一具有共同点,因此主要说明不同点,省略共同点的说明。
在实施方式七中,将转换表分割为多个库(bank)。各库所具有的条目数因分割而少于一个转换表所具有的条目数。因此,在基于软件的实现中,能够实现基于检索次数的削减的高速化,在基于硬件的实现中,能够实现频率的提高。
被分割的表(库)的选择是使用散列函数(hash function)而进行。对于散列函数不做特别限定,使用构成原始符号的位的一部分的情况、循环(round-robin)指定库编号的情况、使用一阶散列、二阶散列的情况等。
图73A和B为实施方式七的说明图。图73A示出压缩装置10的压缩器11所具有的转换表的例子。在图73A所示出的例子中,具有八个条目的转换表被分割为具有两个条目的四个库#0~#3”。各库的条目分配有索引值“0”和“1”。作为散列函数,应用将原始符号(N位)的低位的2位作为库编号而散列的函数。
例如,对于8位的原始符号“A(ASCII码:01000010)”,基于其低位的2位的“10”(二进制数的3)来选择库#2。通过库#2的检索,作为登录有符号“A”的条目而索引“1”命中。在该情况下,压缩器11生成在库编号“10”之后接着索引编号“1”的压缩符号。在压缩符号之前添加表示压缩的Cmark位“1”。由此,原始符号“A”被压缩为4位的串行数据“1101”,并作为传输数据而发送给解压缩装置50。在实施方式七中,在压缩装置10、解压缩装置50中的每一个中,针对每一个库而进行熵计算,针对每一个库而生成数据掩码。
如上所述,在条目命中的情况下,符号数据由表示Cmark位“1”+库编号+索引编号的位构成。然而,在散列值由数据的顺序决定的情况(例如,在根据库编号而循环决定库的情况)下,符号数据中可以不包含库编号。
在图73A的例子中,库编号和索引编号分别由2位、1位表示,但以与库数、索引数相对应的规定的位数表达。在条目没有命中的情况下,符号数据例如为Cmark位“0”+原始符号组合。库由散列函数唯一确定,因此在库内进行与没有被库化的情况相同的动作即可。在解压缩器中,可以将Cmark位“0”以后的N位识别为原始符号。然而,若在解压缩侧使用和压缩侧相同的散列函数,则符号数据的Cmark位、库编号、索引编号、原始符号的位置(顺序)由库内的条目使用状态唯一确定。
如图73B所示,解压缩装置50的解压缩器52所具有的转换表也具有与图73A相同的结构。在例如被输入有串行数据“1101”的情况下,解压缩器52基于Cmark位“1”而使用接下来的2位“10”来进行散列,由此访问库编号2的库#2。此外,将串行数据的最低有效位识别为索引编号,将登录在索引“1”的符号作为原始符号而输出。如此,输出原始符号“A”。
此外,关于包含原始符号的串行数据,由于Cmark位为“0”,因此解压缩器52将从串行数据的最低位开始的N位识别为原始符号。库编号由对于Cmark位“0”之后的原始符号的散列决定,数据掩码由与库相对应的熵计算决定,原始符号被登录于库内部。
也可以采用如下配置:使用在实施方式一中所使用的熵计算部112(522)、掩码生成部113(523)、串化器12和解串化器51,并根据库中的条目的使用状况来改变压缩符号中的表示库编号、索引编号的位数的配置。
[实施方式八]
接下来,对实施方式八的压缩装置和解压缩装置进行说明。实施方式八的结构与实施方式一具有共同点,因此主要说明不同点,省略共同点的说明。
在实施方式一~七所示出的压缩方法中,压缩符号的一部分变得复杂,若转换表的结构不明,则无法复原为原始符号。此外,为了压缩而转换的数据的一部分包含原来的数据,因此将压缩符号直接作为密码的做法并不理想。实施方式八用于解决这样的问题。在实施方式八中,使用公共密钥加密方法进行对从压缩装置向解压缩装置发送的传输数据的加密。
图74示出实施方式八中的压缩装置10B,图75示出实施方式八中的解压缩装置50B。压缩装置10B和解压缩装置50B使用公共密钥加密方法来进行通信。
如图74所示,压缩装置10B除了在实施方式一中所示出的压缩装置10的结构外,还包括加扰(scramble)运算部14。从串化器12输出的数据(K位)和加扰密钥(公共密钥)输入于加扰运算部14。加扰运算部14通过使用了加扰密钥的加扰运算对数据进行加密,并输出被加密的数据(加密数据、K位)。加密数据作为传输数据而经由传输路径(网络)发送给解压缩装置50B。
解压缩装置50B除了在实施方式一中所示出的解压缩装置50的结构外,还包括加扰逆运算部53。发送自压缩装置10B的加密数据(K位)和加扰密钥(公共密钥)输入于加扰逆运算部53。加扰逆运算部53输出通过使用了加扰密钥的加扰逆运算对加密数据进行了解码的数据(K位)。数据为实施方式一中的传输数据,其输入于解串化器51。以后的处理与实施方式一相同。
压缩装置10B和解压缩装置50B为了开始加密通信而执行如下过程(步骤一~三)。其中,步骤二是可选项(option)。
(步骤一)将第一密钥(公共密钥)从压缩装置10B向解压缩装置50B发送。
(步骤二)将第二密钥从压缩装置10B向解压缩装置50B发送。最后发送EOK(End ofKey(结束密钥))指令。EOK指令为表示终止密钥交换的指令。
(步骤三)将要加密的数据(原始符号数据)输入给压缩装置10B。
在步骤一中,将如下的形参的组合作为第一密钥而设定于压缩装置10:从为了对符号的压缩处理而设定的多个形参(parameter)中选择的两个以上的形参、即从与压缩和解压缩相关的多种形参中选择的一个或者两个以上的形参的组合。形参为原始符号的位数N、压缩符号的位数M、使用于来自串化器12的输出的位数K、使用于熵剔除的命中次数或者未命中次数、例外符号的设定、加扰运算的种类、加扰密钥、邻近条目交换偏移值k、库结构(库数量)。
例如,如下为将上述的形参全部组合的情况的一个例子。
(8,8,4,+2,EOK by RETI,f(x),0xA5,2,1)
上述的组合表示N=8、M=8、K=4、以两次的命中/未命中实施剔除、使用于加扰运算的函数f(x)、加扰密钥、k=2、库数=1(未分割)。函数f(x)例如为“f(x)=X xor cyclic(KEY)”,通过循环密钥来对位流X进行异或(XOR)运算的函数。
在步骤二中发送的第二密钥为私钥(private key),为了在压缩装置10和解压缩装置50中创建转换表的初始状态而发送。例如,压缩装置10进行如下动作:将指令“EOK”在实施方式五中所示出的“ABACDBC(EOK)”中重复了规定次数(例如四次)的“ABACDBC(EOK)(EOK)(EOK)(EOK)(EOK)”输出的动作。由此,私钥被发送至解压缩装置50。第二密钥为“对第二表的状态进行初始化的信息”的一个例子。
在从串化器12输出的情况下,构成在实施方式五中输出的压缩符号串“ABACDBC(EOK)”的符号在从串化器12输出的情况下分别成为“001000001”、“001000010”、“110”、“001000011”、“001000100”、“1100”、“111”、“100”的串行数据。这些串行数据输入于加扰运算部14。
加扰运算部14以N位(在本实施方式中为8)划分连接了上述串行数据的位流,并输出用循环密钥来对其进行XOR运算的值。具体地,为如下运算。
00100000 xor 10100101=10000101
10010000 xor 11010010=01000010
10110001 xor 01101001=11011000
00001100 xor 10110100=10111000
10001001 xor 01011010=11010011
10011110 xor 00101101=10111111
01001001 xor 10010110=11011111
00100100 xor 01001011=01101111
而后,加扰运算部14以K位(在本实施方式中为4)串行化(serialize)加扰运算的结果。即,以4位划分而输出。其结果,“1000”、“0101”、“0100”、“0010”、“1101”、“1000”、“1011”、“1000”、“1101”、“0011”、“1011”、“1111”、“1101”、“1111”、“0110”、“1111”的串行数据作为加密数据而从加扰运算部14输出。
在解压缩装置50B中,接收步骤一中的第一密钥并将其设定于解压缩装置50。第一密钥被当作在解压缩装置50中使用于解码的公共密钥(加扰密钥)。此外,解压缩装置50根据包含于第一密钥的形参组,来进行用于进行从压缩装置10接收的数据的解压缩处理的解串化器51和解压缩器52的规范设定(配置设定(config setting))。若根据上述例子,则第一密钥如下。
(8,8,4,+2,EOK by RETI,f-1(x),0xA5,2,1)
其中,f-1(x)为使用于加扰运算的函数f(x)的反函数,为“f-1(x)=X xor cyclic(KEY)”。
上述的加密数据输入于解压缩装置50的加扰逆运算部53。加扰逆运算部53进行从K位(K=4)至M位(M=8)的反串行化,并进行使用了f-1(x)的运算。运算如下所示。
10000101 xor 10100101=00100000
01000010 xor 11010010=10010000
11011000 xor 01101001=00100001
10111000 xor 10110100=00000100
11010011 xor 01011010=00001000
10111111 xor 00101101=00001100
11011111 xor 10010110=00000000
01101111 xor 01001011=00000000
加扰逆运算部53将运算的结果合而为一并划分为Cmark位+压缩符号的形式。其结果,得到与串化器12的输出相同的串行数据“001000001”、“001000010”、“110”、“001000011”、“001000100”、“1100”、“111”、“100”。即,加密数据被解码。使用这种串行数据组而生成解压缩器52中的转换表的初始状态。在解压缩装置50中,通过检测指令“EOK”的重复,来检测对转换表的初始状态进行创建的符号串的尾端。
如此,基于第一密钥,来在压缩装置10和解压缩装置50中进行具有共同的规范的状态的设定,基于第二密钥,压缩装置10进行对压缩装置10的转换表进行初始化的处理,解压缩装置50使用从压缩装置10发送过来的第二密钥而对解压缩装置50的转换表进行初始化。由此,生成在压缩装置10和解压装置50之间同步的转换表的初始状态。而后,压缩装置10用第一密钥对原始符号串的压缩结果进行加密,并将其作为传输数据而发送给传输路径。解压缩装置50使用第一密钥对从传输路径接收到的传输数据进行解码,并进行解压缩处理。根据实施方式八,可以加密流经传输路径的数据。
[实施方式九]
在实施方式一~八中示出的压缩装置和解压缩装置可以基于软件实现,也可以基于硬件实现。
<基于软件的实现例>
图76示出可应用于实施方式一~八的压缩装置和解压缩装置的终端装置的配置示例。终端装置30是通用或者专用的计算机(信息处理装置),作为通用的计算机,例如,可以应用个人计算机(PC)、工作站(workstation)。作为专用计算机,例如可以应用服务器计算机(server machine)。此外,终端装置30可以是固定终端,也可以是无线终端。无线终端包括智能电话、平板终端等的智能设备。此外,终端装置30还可以包括汽车导航装置、游戏装置等。
如图1所示,终端装置30包括:例如通过总线而与CPU 31连接的存储装置32、输入装置33、输出装置34和通信接口(通信IF)35。
存储装置32包括主存储装置和辅助存储装置。主存储装置作为CPU 31的工作区域、程序和/或数据的存储区域、通信数据的缓冲区域而使用。主存储装置是所谓的存储器,例如为Random Access Memory(RAM,随机存取存储器)、或者由RAM和Read Only Memory(ROM,只读存储器)的组合而形成。
辅助存储装置存储由CPU 31执行的程序和执行程序时所使用的数据。辅助存储装置例如为硬盘驱动器(HDD)、Solid State Drive(SSD,固态硬盘)、快闪存储器、Electrically Erasable Programmable Read-Only Memory(EEPROM,带电可擦可编程只读存储器)等。此外,辅助存储装置包括对于信息处理装置可装卸的可移动存储介质。可移动存储介质例如为Universal Serial Bus(USB,通用串行总线)存储器。
输入装置33用于向终端装置30输入信息、数据。输入装置33例如包括按钮、键盘、鼠标等的定点设备(pointing device)、触控面板等。输入装置33可以包括传声器等的声音输入装置。此外,输入装置33还可以包括相机、图像扫描仪(Image scanner)等的摄像装置、用于取得传感数据的传感器等。
输出装置34输出信息、数据。输出装置例如为显示装置。输出装置34可以包括扬声器等的声音输出装置。通信IF 35连接至数据的传输路径(网络)。通信IF 35例如为LocalArea Network(LAN,局域网)卡。通信IF 35可以包括无线通信用的无线电路。对无线通信标准不做限制,例如,可以应用3G(W-CDMA,宽带码分多址等)、Long Term Evolution(LTE,长期演进)、无线局域网(IEEE802.11系列、Wi-Fi)、蓝牙(注册商标)、低功耗蓝牙等。然而,通信标准并不限定于此。
CPU 31为处理器的一个例子,加载存储在存储装置22的程序而执行。在存储装置32中安装有操作系统(OS,Operating System)和应用程序。CPU 31执行程序而终端装置30作为如实施方式一~九所示的压缩装置10、10A、10B、解压缩装置50、50A、50B而工作。
即,CPU 31可以作为压缩器11(压缩器11a~11c)、串化器12而工作。换言之,可以是图11、图15所示的工作示例的主体。此外,CPU 31作为解串化器51、解压缩器52(解压缩器52a~52c)而工作。换言之,可以是图21和图22所示的工作示例的主体。此外,CPU 31可以是识别指令、执行指令的主体。
转换表存储于存储装置32。然而,也可以存储于存储装置32以外的装置。通过来自输入装置33的输入、基于通信IF 35的接收来取得原始符号数据。通信IF 35用于传输数据的发送、接收。输出装置34可以使用于输出、显示由解压缩而得到的原始符号数据。
此外,在CPU 31中执行的处理也可以由多个CPU(处理器)执行。在CPU 11中执行的处理的至少一部分可以由例如Digital Signal Processor(DSP,数字信号处理器)等的CPU以外的处理器执行。此外,如上所述的那样,在CPU31执行的处理的至少一部分也可以由硬件来执行。硬件例如包括Field Programmable Gate Array(FPGA,现场可编程逻辑门阵列)、IC、LSI、Application Specific Integrated Circuit(ASIC,专用集成电路)等的集成电路。此外,压缩装置和解压缩装置也可以通过MCU(Micro Control Unit,微控制单元)、SoC(System-on-a-Chip,系统级芯片)等的电路和处理器的组合来实现。
<基于硬件的实现例>
<<压缩装置的电路配置>>
图77示出压缩装置10的电路配置示例。在图77中,压缩装置10包括保持解压缩装置原始符号数据的触发器(F/F)(flip-flop)61、表电路62、转换表的操作电路63、压缩/非压缩的判定电路64、作为熵计算部112和掩码生成部113而工作的电路65、作为串化器12而工作的桶式移位器(barrel shifter)66。
表电路62具有n个(索引“0”~“n-1”,图77的例子为n=4)存储区域621,各个存储区域621作为转换表的条目而使用。图示于存储区域621的“v”是表示条目是否为使用中(是否存储有原始符号)的信息(位)。例如,v位为“0”时表示空,v位为“1”时表示使用中。
判定电路64包括比较器641和选择器(selector)642。来自各个存储区域621的输出和来自F/F61的输出(原始符号)输入于比较器641。比较器641比较原始符号的值和来自各个存储区域621的值,在不存在一致的存储区域621的情况下,输出Cmark位“0”。与之相对地,在存在输出了与原始符号相同的值的存储区域621的情况下,输出Cmark位“1”和该存储区域621的索引值(INDEX)。
选择器642具有输入端子,F/F61的原始符号和来自比较器641的索引值输入于所述输入端子。此外,选择器642具有控制端子和输出端子,其中,Cmark位输入于所述控制端子;在Cmark位“0”时,所述输出端子将原始符号作为压缩符号而输出,在Cmark位“1”时,所述输出端子将索引值作为压缩符号而输出。
操作电路63具有选择器631和选择器632。选择器632具有输入端子、控制端子和输出端子,其中,存储于索引“1”~“n-1”的符号输入于所述输入端子;登录有与原始符号相同的符号的存储区域621(条目)的索引值输入于所述控制端子;所述输出端子使与索引值匹配的符号输入于选择器631。
选择器631具有输入端子和控制端子,其中,来自选择器632的输出和来自F/F61的原始符号输入于所述输入端子;Cmark位输入于所述控制端子。此外,选择器631具有输出端子,在Cmark位为“0”时,所述输出端子将原始符号向开头的(索引“0”的)存储区域621输出,在Cmark位为“1”时,所述输出端子将来自选择器632的符号向索引“0”的存储区域621输出。
各个存储区域621在索引值变大的方向上与下一个存储区域621相连接,在接收到了Cmark位“1”时,若该存储区域621中存储有符号,则使该符号移动至下一个存储区域621。然而,对于索引“n-1”的存储区域621,覆盖符号的值。
此外,来自比较器641的索引值输入于存储区域621。存储区域621具有例如大小比较器,在被输入的索引值大于自身的索引值的情况下,将存储有的符号值输入给选择器632。然而,仅限于存储有符号的情况(v位值为“1”的情况)。如此,进行条目命中的情况下的向开头条目的符号移动、向下一个条目的移动(推动动作)。
索引值、Cmark位和各个存储区域621的v位输入于电路65。通过v位可知转换表的使用率。在Cmark位为“1”的情况下,电路65进行基于第一或者第二计算方法的熵计算。电路65生成与熵计算值相对应的数据掩码,并将其输入给桶式移位器66。
此外,在实施方式九中,表电路62、判定电路64、操作电路63进行作为符号转换部111的动作。此外,也可以使用表示存储区域621(条目)的使用数的计数而代替v位。
Cmark位、来自选择器642的压缩符号和来自电路65的数据掩码输入于桶式移位器66。桶式移位器66以K位为单位输出Cmark位+压缩符号。桶式移位器66的输出作为传输数据而发送给解压缩装置50。
此外,在Cmark位为“0”时,与熵计算值无关地,以数据掩码“11111111”从电路65输入于桶式移位器的方式构成电路。或者,在Cmark位为“0”时,也可以电路65不输出数据掩码,桶式移位器66将压缩符号接在Cmark位后面而直接输出。
<<解压缩装置的电路结构>>
图78示出解压缩装置50的电路配置示例。在图78中示出的解压缩装置50具有与图77示出的压缩装置10相对应的结构。解压缩装置50具有:作为解串化器51而动作的桶式移位器76、电路75、与(AND)电路77、F/F 71、表电路72、转换表的操作电路73和是否需要解压缩的判定电路74。
通过传输路径发送的传输数据输入于桶式移位器76。桶式移位器分离Cmark位和压缩符号而输出。Cmark位输入于电路65,压缩符号输入于与电路77的输入端。
表电路72具有与表电路62相同的结构,具有多个(n个)符号的存储区域721(条目)。各个存储区域721设定有上述的v位,各个存储区域721的v位作为表示转换表的使用状况的信息而输入于电路75。
电路75作为熵计算部522和掩码生成部523而动作,进行熵计算和与该计算结果相对应的数据掩码的生成。而且,电路75将数据掩码输入给与电路77的输入端。此外,从桶式移位器76输入于与电路77的压缩符号的位数由数据掩码所示出的有效位数决定。
与电路77进行压缩符号和数据掩码的与运算,并将结果输出给F/F。在Cmark位为“1”时,电路75输出与熵计算值相对应的表示有效位数的数据掩码。在Cmark位为“0”时,与熵计算值无关地,输出表示所有位为有效的数据掩码“11111111”。然而,在Cmark位为“0”时,也可以采用电路75不输出数据掩码,从桶式移位器66输出的压缩符号原样输入给F/F71的结构。
判定电路74包括选择器741和选择器742。来自各个存储区域621的输出和来自F/F71的输出输入于选择器741。在从F/F 71输出并输入于选择器741的控制端的压缩符号为原始符号的情况下,选择器741停止从选择器741向选择器742的输出。与之相对地,在从控制端输入的压缩符号为索引值的情况下,选择器741将从与索引值相对应的存储区域721读取的原始符号输入给选择器742。
若存在来自选择器741的输入,选择器742输出该输入,在不存在来自选择器741的输入的情况下,输出来自F/F 71的输入。由此,在来自F/F 71的输出为原始符号的情况下,从选择器742输出该原始符号。与之相对地,在来自F/F 71的输入为索引值的情况下,从选择器742输出从选择器741输出的原始符号。
操作电路73具有选择器731和选择器732。选择器732具有输入端子、控制端子和输出端子,其中,存储在索引“1”~“n-1”的符号输入于所述输入端子;,登录有与原始符号相同的符号的存储区域621(条目)的索引值输入于所述控制端子;所述输出端子将与索引值匹配的符号输入给选择器731。
选择器731具有输入端子和控制端子,其中,来自选择器732的输出和来自F/F 71的原始符号输入于所述输入端子;Cmark位输入于所述控制端子。此外,选择器631具有输出端子,在Cmark位为“0”时,所述输出端子将原始符号向开头的(索引“0”的)存储区域621输出,在Cmark位为“1”时,所述输出端子将来自选择器732的符号向索引“0”的存储区域721输出。
各个存储区域721在索引值变大的方向上与下一个存储区域721相连接,在接收到Cmark位“1”时,若该存储区域721存储有符号,则使该符号移动至下一个存储区域721。然而,对于索引“n-1”的存储区域621,覆盖符号的值。
此外,来自F/F 71的索引值输入于存储区域721。存储区域721具有例如大小比较器,在输入的索引值大于自身的索引值的情况下,将存储的符号值输入给选择器732。然而,仅限于存储有符号的情况(v位值为“1”的情况)。如此,进行条目命中的情况下的向开头条目的符号移动、向下一个条目的移动(推动动作)。
如实施方式九所示,压缩装置和解压缩装置可以基于软件实现,也可以基于硬件实现。
[实施方式十]
作为实施方式十,说明与在实施方式一中说明的熵计算方法(第一计算方法)不同的熵的第二计算方法。在熵的第二计算方法中,使用对于过去T个符号的压缩处理中的转换表的使用率和条目的命中率来计算熵。例如,代替第一计算方法中的ceil(log2k)而使用以下的式2求出熵值E。
式2:E=ceil(log2((使用率/命中率)*条目数))
使用率和命中率表示对于过去T(T为正整数)个符号的压缩结果的转换表的使用率和命中率。其中,熵值E的范围为0≤E≤M。M为压缩器、解压缩器的数据掩码的最大字长。此外,在E为负数的情况下将其设为0。
第二计算方法依赖于过去的命中率、表使用率的统计值,因此在压缩时会存在原始符号命中的索引超出由使用了式2的熵的计算而得到的数值所表示的索引的范围的情况(例如,在E=2的情况下,索引“7”命中的情况等)。因此,用与实施方式一不同的方法进行压缩、解压缩。
图79为示出实施方式十的使用第二计算方法的压缩器的处理示例的流程图。实施方式十的压缩器11的处理与实施方式一中的压缩器的处理(图15)相比,不同点在于在S12和S13之间设置有S12A的处理。
在S12A中,压缩器11判定在S12中命中的条目的索引值是否为2的E次方以上。在判定为索引值不是2的E次方以上(小于2的E次方)的情况下,处理进入S13,成为与实施方式一相同的动作。与之相对地,在判定为索引值是2的E次方以上的情况下,压缩器11进行S14的处理,在S15的处理中输出Cmark“0”。即,若索引值为2的E次方以上,则当作未命中(未登录)。
图80为示出实施方式十的、使用第二计算方法的解压缩器的处理示例的流程图。实施方式十的解压缩器52的处理与实施方式一中的解压缩器的处理(图22)相比,不同点在于设置S38A、S38B、S38C、S38D而代替S38、S39、S40、S41。
在S31中,判定为Cmark位“0”的情况下,解压缩器52对转换表的、索引值为2的E次方以后的条目进行压缩符号的检索(S38A)。在判定为压缩符号命中的情况下(S38B,是),解压缩器52进行第一操作方法的命中时的动作(参照图16C)(S38C),即,将命中的压缩符号作为原始符号(解压缩符号)而输出,并且将压缩符号移动至规定位置(例如,条目的开头),将分别登录在开头条目到命中的条目的前一个条目中的符号移动至下一个条目。
与之相对地,在判定为压缩符号没有命中(未命中)的情况下(S38B,否),解压缩器52进行第一操作方法的未命中时的动作(图16(B))(图38D)。即,解压缩器52将压缩符号登录于开头条目,并将登录在开头条目以后的条目中的符号移动至下一个条目。若S38C或者S38D的处理结束,则处理进入S36。除了上述的点外,图79和图80的处理的说明与在图15和图22中示出的处理相同,因此省略对于相同处理的说明。
图81A和B、图81A和B、图82A和B、图83A和B、图84A和B和图85示出熵的第二计算方法的例子。使用过去T=5次的符号的输入(压缩处理)中的使用率和命中率来计算熵值。此外,在该计算例中,设定不进行因条目命中而进行的登录位置的改变、伴随着命中数或者未命中数的条目的删除。熵值E的计算公式为式2,即E=ceil(log2((使用率/命中率)*条目数))。E的范围为0≤E≤M,M为数据掩码的最长位数。
图81A示出计算示例中的初始状态。假设作为输入数据的例子输入“ABCABABDAB”的符号串的情况。如图79A的左上所示,在初始状态的转换表(条目数=4,索引“0”~“3”,因此M=2)中没有登录有符号。在图81A的下侧的表示出对于过去输入的五个符号(第四个输入前、第三个输入前、第二个输入前、现在)的各自的、转换表的使用率和命中率以及平均值。在图79A示出的例子中,将使用率的平均的初始值设为“0/20”,将命中率的平均的初始值设为“5/5”。然而,也可以将使用率的平均的初始值设定为“4/4”,将命中率的平均的初始值设定为“0”。在该情况下,熵值E为0。
图81B示出输入符号“A”并登录在转换表的情况的计算示例。现在的使用率成为“1/4”,其平均值成为“1/20”。此外,命中率的平均值成为“4/5”。而且,基于式2的熵的计算值成为“-2”。计算结果小于E所能取的范围,因此熵值成为作为E的范围的下限的0。
图82A示出输入符号“A”之后的符号“B”并登录在转换表的情况的计算示例。现在的使用率成为“2/4”,其平均值成为“3/20”。此外,命中率的平均值成为“3/5”。此时的熵的计算值和E的值均为“0”。此外,在此时的对于符号“B”的压缩处理中,符号“B”为未命中,符号“B”被作为压缩符号而输出,因此不使用数据掩码。使用条目数为2的同时,数据掩码所表示的有效位数成为0位,但由于不使用数据掩码,因此不会在解压缩侧产生矛盾。
图82B示出输入符号“B”之后的符号“C”并登录在转换表的情况的计算示例。现在的使用率成为“3/4”,其平均值成为“6/20”。此外,命中率的平均值成为“2/5”。此时的熵的计算值为“1.58”,熵值E成为2。
图83A示出输入符号“C”之后的符号“A”并索引“2”命中的情况的计算示例。现在的使用率成为“3/4”,其平均值成为“9/20”。此外,命中率的平均值成为“2/5”。此时的熵的计算值为“2.16”,但是由于超出E的范围的上限值“2”,因此E的值成为上限值“2”。
图83B示出输入符号“A”之后的符号“B”并索引“1”命中的情况的计算示例。现在的使用率成为“3/4”,其平均值成为“12/20”。此外,命中率的平均值成为“2/5”。此时的熵的计算值为“2.58”,但是由于超出E的范围的上限值“2”,因此E的值成为上限值“2”。
图84A示出输入符号“B”之后的符号“A”并索引“2”命中的情况的计算示例。现在的使用率成为“3/4”,其平均值成为“14/20”。此外,命中率的平均值成为“3/5”。此时的熵的计算值为“2.22”,但是由于超出E的范围的上限值“2”,因此E的值成为上限值“2”。
图84B示出输入符号“A”之后的符号“B”并索引“1”命中的情况的计算示例。现在的使用率成为“3/4”,其平均值成为“15/20”。此外,命中率的平均值成为“4/5”。此时的熵的计算值为“1.90”,熵值E成为2。
图85A示出输入符号“B”之后的符号“D”并登录在转换表的情况的计算示例。现在的使用率成为“4/4”,其平均值成为“16/20”。此外,命中率的平均值成为“4/5”。此时的熵的计算值和E的值为“2”。
图85B示出输入符号“D”之后的符号“A”并索引“3”命中的情况的计算示例。现在的使用率成为“4/4”,其平均值成为“17/20”。此外,命中率的平均值成为“4/5”。此时的熵的计算值为“2.08”,但是由于超出E的范围的上限值“2”,因此E的值成为上限值“2”。
图86示出输入符号“A”之后的符号“B”并索引“2”命中的情况的计算示例。现在的使用率成为“4/4”,其平均值成为“18/20”。此外,命中率的平均值成为“4/5”。此时的熵的计算值为“2.17”,但是由于超出E的范围的上限值“2”,因此E的值成为上限值“2”。
[计算方法的性能评价]
实验性地证明在实施方式一~十中说明的熵计算是否可以正确表达香农的平均信息量。使用在实施方式一中说明的压缩装置10并使用上述熵的第一计算方法和第二计算方法而在每次输入原始符号时计算熵并记录,将整个原始符号串的处理结束的情况下的基于第一计算方法和第二计算方法的计算结果的平均值的每一个与整个原始符号串的香农的平均信息量进行比较。
在实验中,关于压缩装置10的配置,将第二计算方法(实施方式十)中的过去的符号数T设为100。此外,将转换表的条目数设为256。其中,以四次的命中作为触发而实施熵剔除。此外,在实验中,采用了k=8的设定。因此,在条目命中的情况下,将条目的登录内容移动至从该条目的索引回溯八个后的索引位置,并一一挪动位于该移动后的位置到命中的条目位置的条目的内容。
关于从1~256中可选择种类数的数据,决定种类数(例如,128(0~127)种)。关于种类数为128的数据,关于使数据(原始符号)随机地出现时的原始符号串,进行每次出现原始符号时的熵计算,并求出其整个平均值。此外,关于上述原始符号串,求出香农的平均信息量,并进行比较。
图36为示出实验的结果的图表(graph),纵轴表示熵值,横轴表示数据(符号)的种类数。点线(dotted line)为表示香农的平均信息量的图表,粗线为使用了第一计算方法(式1)的情况下的图表,细线为使用了第二计算方法(式2)的情况下的图表。虚线表示数据的种类数为64种的情况。
在出现64种类的数据的情况下,可由6位表达,因此香农的平均信息量的图表和第二计算方法的图表的值几乎成为6。由此,可以说由使用式2的第二计算方法得到的值与熵的理论值一致。在第一计算方法的图表中,熵值为5.66,几乎成为理论值。不过,由于稍微理论值,因此说明可以用少的位数来表示压缩符号。
[实施方式十一]
对实施方式十一进行说明。实施方式十一为实施方式四和实施方式五的变形例。在实施方式四和五中,针对转换表的被保留的条目区域,所登录的符号被固定,不会成为与条目的命中/未命中相伴随的表更新的对象(参照图54A、图66A)。
然而,在进行RERI、RETO的情况下,若被保留的条目被控制为不为空,则还有可能当作条目命中时的交换对象。例如,在图53C的状态中,也可以进行图87A所示的处理而代替在实施方式四中说明的图54A所示的处理。即,在输入符号“A”并索引“3”命中的情况下,压缩器11也可以使符号“A”移动至开头的索引“0”,使符号“C”、“F”、和“B”分别移动至下一个条目。
或者,在图65C的状态下,也可以进行图87A所示的处理而代替在实施方式四中说明的图54A所示的处理。即,在输入符号“A”并索引“2”命中的情况下,压缩器11也可以使符号“A”移动至开头的索引“0”,使符号“指令1”和“B”分别移动至下一个条目。
在该情况下,“指令1”被当作原始符号,“指令1”的条目内容失去作为指令的意义,但压缩、解压缩正常工作。因此,虽然替换了保留条目的内容,但也可以实现RETI、RETO。然而,条件在于不使被保留的条目因表重置指令、熵剔除而为空。进行这种控制可以不牺牲被保留的条目,因此压缩率会变好。
可以适当组合上述的实施方式的特征。在实施方式二以后示出的特征为可选项,不是必要的构成要素。反过来说,在实施方式二以后说明的特征,特别是在实施方式三和四中说明的用于将指令从压缩侧发送给解压缩侧的特征可以应用于通过熵计算来改变索引的有效位数的压缩装置和解压缩装置以外的装置。例如,可以应用于在参考例中示出的压缩装置和解压缩装置。
(附图标记的说明)
10:压缩装置;11:压缩器;12:串化器;50:解压缩装置;
51:解串化器;52:解压缩器;111、521:符号转换部;
112、522:熵计算部;113、523:数据掩码。

Claims (28)

1.一种数据的压缩和解压缩方法,其特征在于,
压缩装置进行以下处理:
在所输入的符号未登录在具有多个条目的第一表的情况下,将所述符号登录于所述多个条目中的一个,并且输出表示非压缩的指标数据和所述符号的处理;以及在所述符号已登录在所述表的情况下,输出表示压缩的指标数据和表示登录有所述符号的条目的位置并具有比所述符号的大小小的大小的位置信息的处理;
解压缩装置进行以下处理:
在接收到表示所述非压缩的指标数据和所述符号的情况下,以与所述压缩装置的所述符号的登录方法相同的方法将所述符号登录于具有与所述第一表相同的数据结构的第二表中,并且输出所述符号的处理;以及在接收到表示所述压缩的指标数据和所述位置信息的情况下,读取登录在由所述位置信息所表示的所述第二表中的条目的所述符号而输出的处理,
在输出表示所述压缩的指标数据和所述位置信息的情况下,所述压缩装置基于表示所述第一表的所述多个条目的使用状况的信息来输出由第一位数所表达的所述位置信息,其中,所述第一位数为可表达所述第一表中的使用中的条目的位置信息的最小的位数,
在接收到表示所述非压缩的指标数据和所述符号而将所述符号登录于所述第二表的情况下,所述解压缩装置基于表示所述第二表的所述多个条目的使用状况的信息并使用由与所述第一位数的计算方法相同的计算方法计算的第二位数而从发送自所述压缩装置且输入于所述解压缩装置的位流中提取所述位置信息,其中,所述第二位数为可表达所述第二表中的使用中的条目的位置信息的最小的位数。
2.根据权利要求1所述的数据的压缩和解压缩方法,其中,
所述压缩装置使用所述第一表的使用中的条目数k和下述式1而计算所述第一位数,
所述解压缩装置使用所述第二表的使用中的条目数k和下述式1而计算所述第二位数,
式1:ceil(log2k)。
3.根据权利要求1所述的数据的压缩和解压缩方法,其中,
所述压缩装置使用对规定数量的符号的压缩处理的结果中的所述第一表的使用率、登录有符号的条目的命中率以及下述式2而计算所述第一位数,
所述解压缩装置使用对规定数量的符号的解压缩处理的结果中的所述第二表的使用率、登录有符号的条目的命中率以及下述式2而计算所述第二位数,
式2:ceil(log2((使用率/命中率)*条目数))。
4.根据权利要求1至3中任一项所述的数据的压缩和解压缩方法,其中,
所述位置信息是对所述第一表和所述第二表的所述多个条目从开头的条目开始按照顺序分配的索引编号。
5.根据权利要求1至4中任一项所述的数据的压缩和解压缩方法,其中,
在所述符号的所述第一表的检索中登录有所述符号的条目命中的情况下,所述压缩装置使所述符号移动至所述第一表的开头的条目,并且使登录在位于所述第一表的所述开头的条目到所述命中的条目的前一个条目之间的条目中的符号移动至下一个条目,
在所述符号的所述第二表的检索中登录有所述符号的条目命中的情况下,所述解压缩装置使所述符号移动至所述第二表的开头的条目,并且使登录在位于所述第二表的开头的条目到所述命中的条目的前一个条目之间的条目中的符号移动至下一个条目。
6.根据权利要求1至4中任一项所述的数据的压缩和解压缩方法,其中,
在所述符号的所述第一表的检索中登录有所述符号的条目命中的情况下,关于所述第一表,所述压缩装置将登录在所述命中的条目中的符号登录于比所述命中的条目更靠近开头侧的规定的移动对象条目,并且使登录在位于所述移动目的条目到所述命中的条目的前一个条目之间的条目中的符号移动至下一个条目,
在所述符号的所述第二表的检索中登录有所述符号的条目命中的情况下,关于所述第二表,所述解压缩装置将所述命中的条目中的符号登录于比所述命中的条目更靠近开头侧的规定的移动对象条目,并且使登录在位于所述移动目的条目到所述命中的条目的前一个条目之间的条目中的符号移动至下一个条目。
7.根据权利要求6所述的数据的压缩和解压缩方法,其中,
所述规定的移动对象条目是所述第一表和所述第二表中的开头的条目。
8.根据权利要求6所述的数据的压缩和解压缩方法,其中,
在所述第一表和所述第二表中,所述规定的移动对象条目是位于从所述命中的条目向开头方向回溯了规定数量后的位置的条目,
在回溯了所述规定数量后的位置超过了开头的情况下,所述压缩装置和所述解压缩装置将开头的条目设定为移动对象。
9.根据权利要求1至8中任一项所述的数据的压缩和解压缩方法,其中,
在所述第一表的所有条目为使用中的状态下的、所述符号的所述第一表的检索中登录有所述符号的条目没有命中的情况下,所述压缩装置将所述符号登录于所述第一表的开头的条目,并且使登录在位于所述第一表的所述开头的条目到末尾的条目的前一个条目之间的条目中的符号移动至下一个条目而删除登录在所述末尾的条目中的符号,
在所述第二表的所有条目为使用中的状态下的、所述符号的所述第二表的检索中登录有所述符号的条目没有命中的情况下,所述解压缩装置将所述符号登录于所述第二表的开头的条目,并且使登录在位于所述第二表的所述开头的条目到末尾的条目的前一个条目之间的条目中的符号移动至下一个条目而删除登录在所述末尾的条目中的符号。
10.根据权利要求1至8中任一项所述的数据的压缩和解压缩方法,其中,
在所述符号的所述第一表的检索中登录有所述符号的条目没有命中的情况下,若所述第一表中的第一条目为空状态,则所述压缩装置将所述符号登录于所述第一表中的第一条目,若所述第一表的所有条目为使用中,则所述压缩装置将所述符号覆盖登录于所述第一表中的第一条目,
在所述符号的所述第二表的检索中登录有所述符号的条目没有命中的情况下,若所述第二表中的第一条目为空状态,则所述解压缩装置将所述符号登录于所述第二表中的第一条目,若所述第二表的所有条目为使用中,则所述解压缩装置将所述符号覆盖登录于所述第二表中的第一条目。
11.根据权利要求10所述的数据的压缩和解压缩方法,其中,
所述第一表中的第一条目为所述第一表的末尾的条目,
所述第二表中的第一条目为所述第二表的末尾的条目。
12.根据权利要求1至11中任一项所述的数据的压缩和解压缩方法,其中,
关于所述第一表,在登录有符号的条目的命中数或者登录有符号的条目的未命中数达到规定值的情况下,所述压缩装置删除登录有符号的条目中的索引编号最大的条目中的符号,
关于所述第二表,在登录有符号的条目的命中数或者登录有符号的条目的未命中数达到规定值的情况下,所述解压缩装置删除登录有符号的条目中的索引编号最大的条目中的符号。
13.根据权利要求12所述的数据的压缩和解压缩方法,其中,
关于所述第一表,在所述索引编号最大的条目相当于位于从开头开始的规定范围的条目的情况下,所述压缩装置不删除所述索引编号最大的条目中的符号,
关于所述第二表,在所述索引编号最大的条目相当于位于从开头开始的规定范围的条目的情况下,所述解压缩装置不删除所述索引编号最大的条目中的符号。
14.根据权利要求1至13中任一项所述的数据的压缩和解压缩方法,其中,
所述第一表和所述第二表中的相同的规定条目中登录有表示命令的命令符号,
所述压缩装置输出表示压缩的指标数据和表示所述规定条目的位置信息,并且执行所述命令符号所表示的命令,
所述解压缩装置基于从所述压缩装置接收过来的表示所述压缩的指标数据和表示所述规定条目的位置信息而读取登录在所述第二表中的所述规定条目中的所述命令符号,并执行所述命令符号所表示的命令。
15.根据权利要求1至13中任一项所述的数据的压缩和解压缩方法,其中,
所述第一表和所述第二表中的相同的规定条目中登录有表示所述解压缩装置需执行的命令的命令符号,
所述压缩装置输出表示非压缩的指标数据和所述命令符号,
在基于表示所述非压缩的指标数据的所述命令符号的登录处理中,所述解压缩装置作为对于所述命令符号已登录在所述第二表的情况的例外处理而执行所述命令符号所表示的命令。
16.根据权利要求1至13中任一项所述的数据的压缩和解压缩方法,其中,
在使所述解压缩装置执行命令的情况下,所述压缩装置输出表示压缩的指标数据和表示所述第一表的空状态的条目的位置信息,
在基于从所述压缩装置接收过来的表示所述压缩的指标数据和所述位置信息的符号的读取处理中,在因符号没有登录在所述位置信息所表示的所述第二表的条目而发生的例外的发生时,所述解压缩装置取得表示所述命令的信息而执行。
17.根据权利要求16所述的数据的压缩和解压缩方法,其中,
所述压缩装置在输出表示所述压缩的指标数据和表示所述第一表的空状态的条目的位置信息之后,输出表示非压缩的指标数据和表示所述命令的命令符号,
所述解压缩装置在所述例外的发生时执行所述命令符号所表示的命令。
18.根据权利要求1至13中任一项所述的数据的压缩和解压缩方法,其中,
在使所述解压缩装置执行命令的情况下,所述压缩装置输出表示非压缩的指标数据和在所述第一表中登录中的符号,
在基于从所述压缩装置接收过来的表示所述非压缩的指标数据的符号的登录处理中,在因在所述第二表中登录有相同的符号而发生的例外的发生时,所述解压缩装置取得表示所述命令的信息而执行。
19.根据权利要求18所述的数据的压缩和解压缩方法,其中,
所述压缩装置在输出表示所述非压缩的指标数据和在所述第一表中登录中的符号之后,输出表示非压缩的指标数据和表示所述命令的命令符号,
所述解压缩装置在所述例外的发生时执行所述命令符号所表示的命令。
20.根据权利要求1至19中任一项所述的数据的压缩和解压缩方法,其中,
所述符号是用于构成由位于所述压缩装置的前段的其他的压缩装置实施了压缩处理的符号串的符号,
所述解压缩装置所输出的所述符号作为所述符号串的一部分而输入给位于所述解压缩装置的后段的其他的解压缩装置。
21.根据权利要求1至20中任一项所述的数据的压缩和解压缩方法,其中,
所述第一表和所述第二表是由表的分割而得到的多个库中的一个,所述第一表和所述第二表的选择是使用相同的散列函数而进行。
22.根据权利要求1至21中任一项所述的数据的压缩和解压缩方法,其中,
所述压缩装置将公共密钥发送给所述解压缩装置,其中,所述公共密钥包含从为了对于所述符号的压缩处理而设定的多个形参中选择的两个以上的形参的组合,之后,所述压缩装置使用公共密钥而对表示所述非压缩的指标数据和所述符号的组合以及表示所述压缩的指标数据和所述位置信息的组合进行加密,并将所述加密的结果发送给所述解压缩装置,
为了输出所述符号的解压缩处理,所述解压缩装置使用表示所述非压缩的指标数据和所述符号的组合或者表示所述压缩的指标数据和所述位置信息的组合而设定从所述压缩装置发送过来的所述公共密钥中的所述两个以上的形参,并使用所述公共密钥进行所述加密的结果的解码,并且进行对于解码后的结果的所述解压缩处理。
23.一种数据压缩方法,其特征在于,
压缩装置进行以下处理:
在所输入的符号未登录在具有多个条目的第一表的情况下,将所述符号登录于所述多个条目中的一个,并且输出表示非压缩的指标数据和所述符号的处理;
在所述符号已登录在所述表的情况下,输出表示压缩的指标数据和表示登录有所述符号的条目的位置并具有比所述符号的大小小的大小的位置信的处理;以及,
根据所述多个条目的使用状况而改变所述位置信息的大小的处理,
在输出表示所述压缩的指标数据和所述位置信息的处理中,基于表示所述第一表的所述多个条目的使用状况的信息来输出由可表达所述第一表中的使用中的条目的位置信息的最小的位数表达的所述位置信息。
24.一种数据压缩装置,其特征在于,包括压缩器,其进行以下处理:
在所输入的符号未登录在具有多个条目的第一表的情况下,将所述符号登录于所述多个条目中的一个,并且输出表示非压缩的指标数据和所述符号的处理;以及在所述符号已登录在所述表的情况下,输出表示压缩的指标数据和表示登录有所述符号的条目的位置并具有比所述符号的大小小的大小的位置信息的处理,
在输出表示所述压缩的指标数据和所述位置信息的处理中,所述压缩器基于表示所述第一表的所述多个条目的使用状况的信息来输出由可表达所述第一表中的使用中的条目的位置信息的最小的位数表达的所述位置信息。
25.一种程序,其特征在于,使计算机执行以下的处理:
在所输入的符号未登录在具有多个条目的第一表的情况下,将所述符号登录于所述多个条目中的一个,并且输出表示非压缩的指标数据和所述符号的处理;以及在所述符号已登录在所述表的情况下,输出表示压缩的指标数据和表示登录有所述符号的条目的位置并具有比所述符号的大小小的大小的位置信息的处理,
在输出表示所述压缩的指标数据和所述位置信息的处理中,基于表示所述第一表的所述多个条目的使用状况的信息来输出由可表达所述第一表中的使用中的条目的位置信息的最小的位数表达的所述位置信息。
26.一种数据解压缩方法,其特征在于,
解压缩装置进行以下处理:
在接收到从压缩装置发送过来的表示非压缩的指标数据和符号的情况下,以与所述压缩装置的所述符号的登录方法相同的方法将所述符号登录于具有与所述压缩装置所具有的第一表相同的数据结构的第二表中,并且输出所述符号的处理;以及在接收到表示所述压缩的指标数据和在所述第一表中表示登录有所述符号的条目的位置的位置信息的情况下,读取登录在由所述位置信息所表示的所述第二表中的条目的所述符号而输出的处理,
所述位置信息由第一位数表达,其中,所述第一位数为可表达所述第一表中的使用中的条目的位置信息的最小的位数,在所述压缩装置输出表示所述压缩的指标数据和所述位置信息的情况下,基于表示所述第一表的所述多个条目的使用状况的信息而计算出所述第一位数,
在接收到表示所述非压缩的指标数据和所述符号而将所述符号登录于所述第二表的情况下,所述解压缩装置基于表示所述第二表的所述多个条目的使用状况的信息并使用由与所述第一位数的计算方法相同的计算方法计算的第二位数而从发送自所述压缩装置且输入于所述解压缩装置的位流中提取所述位置信息,其中,所述第二位数为可表达所述第二表中的使用中的条目的位置信息的最小的位数。
27.一种数据解压缩装置,其特征在于,包括解压缩器,其进行以下处理:
在接收到从压缩装置发送过来的表示非压缩的指标数据和符号的情况下,以与所述压缩装置的所述符号的登录方法相同的方法将所述符号登录于具有与所述压缩装置所具有的第一表相同的数据结构的第二表中,并且输出所述符号的处理;以及在接收到表示所述压缩的指标数据和在所述第一表中表示登录有所述符号的条目的位置的位置信息的情况下,读取在由所述位置信息所表示的所述第二表中的条目中登录的所述符号而输出的处理,
所述位置信息由第一位数表达,其中,所述第一位数为可表达所述第一表中的使用中的条目的位置信息的最小的位数,在所述压缩装置输出表示所述压缩的指标数据和所述位置信息的情况下,基于表示所述第一表的所述多个条目的使用状况的信息而计算出所述第一位数,
在接收到表示所述非压缩的指标数据和所述符号而将所述符号登录于所述第二表的情况下,所述解压缩器基于表示所述第二表的所述多个条目的使用状况的信息并使用由与所述第一位数的计算方法相同的计算方法计算的第二位数而从发送自所述压缩装置且输入于所述解压缩装置的位流中提取所述位置信息,其中,所述第二位数为可表达所述第二表中的使用中的条目的位置信息的最小的位数。
28.一种程序,其特征在于,使计算机执行以下的处理:
在接收到从压缩装置发送过来的表示非压缩的指标数据和符号的情况下,以与所述压缩装置的所述符号的登录方法相同的方法将所述符号登录于具有与所述压缩装置所具有的第一表相同的数据结构的第二表中,并且输出所述符号的处理;以及在接收到表示压缩的指标数据和在所述第一表中表示登录有所述符号的条目的位置并根据所述第一表的使用状况而被改变大小的位置信息的情况下,读取登录在由所述位置信息所表示的所述第二表中的条目中的所述符号而输出的处理,
所述位置信息由第一位数表达,其中,所述第一位数为可表达所述第一表中的使用中的条目的位置信息的最小的位数,在所述压缩装置输出表示所述压缩的指标数据和所述位置信息的情况下,基于表示所述第一表的所述多个条目的使用状况的信息而计算出所述第一位数,
在接收到表示所述非压缩的指标数据和所述符号而将所述符号登录于所述第二表的情况下,基于表示所述第二表的所述多个条目的使用状况的信息并使用由与所述第一位数的计算方法相同的计算方法计算的第二位数而从发送自所述压缩装置且输入于所述解压缩装置的位流中提取所述位置信息,其中,所述第二位数为可表达所述第二表中的使用中的条目的位置信息的最小的位数。
CN202080033904.8A 2019-05-07 2020-04-28 数据的压缩和解压缩方法、数据压缩装置、以及数据解压缩装置 Pending CN113796015A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2019-087870 2019-05-07
JP2019087870A JP6614735B1 (ja) 2019-05-07 2019-05-07 データの圧縮及び解凍方法、データ圧縮方法、データ圧縮装置、データ圧縮プログラム、データ解凍方法、データ解凍装置、データ解凍プログラム
PCT/JP2020/018146 WO2020226105A1 (ja) 2019-05-07 2020-04-28 データの圧縮及び解凍方法、データ圧縮装置、及びデータ解凍装置

Publications (1)

Publication Number Publication Date
CN113796015A true CN113796015A (zh) 2021-12-14

Family

ID=68763437

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080033904.8A Pending CN113796015A (zh) 2019-05-07 2020-04-28 数据的压缩和解压缩方法、数据压缩装置、以及数据解压缩装置

Country Status (5)

Country Link
US (1) US11876542B2 (zh)
EP (1) EP3968524A4 (zh)
JP (1) JP6614735B1 (zh)
CN (1) CN113796015A (zh)
WO (1) WO2020226105A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115333544B (zh) * 2022-10-13 2023-01-31 上海登临科技有限公司 一种数据解压缩电路及其方法、芯片及电子设备

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4558302A (en) * 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
JP2823918B2 (ja) * 1990-01-12 1998-11-11 富士通株式会社 データ圧縮方式
US5627533A (en) * 1994-08-05 1997-05-06 Hayes Microcomputer Products, Inc. Adjusting encoding table size and memory allocation for data compression in response to input data
JPH0993138A (ja) * 1995-09-27 1997-04-04 Canon Inc データ圧縮装置及びデータ復元装置
JP3209923B2 (ja) 1996-06-27 2001-09-17 タカノ株式会社 螺着部材の脱落防止構造及びそれを用いた椅子
US6606040B2 (en) 2001-02-13 2003-08-12 Mosaid Technologies, Inc. Method and apparatus for adaptive data compression
JP4000266B2 (ja) * 2002-03-08 2007-10-31 株式会社リコー データ符号化装置、データ符号化方法、及びそのプログラム
WO2008034213A1 (en) * 2006-09-18 2008-03-27 Infobright Inc. A method and system for data compression in a relational database
JP6168595B2 (ja) * 2013-06-04 2017-07-26 国立大学法人 筑波大学 データ圧縮器及びデータ解凍器
JP6256883B2 (ja) 2015-03-25 2018-01-10 国立大学法人 筑波大学 データ圧縮・解凍システム、データ圧縮方法及びデータ解凍方法、並びにデータ圧縮器及びデータ解凍器

Also Published As

Publication number Publication date
US20220239316A1 (en) 2022-07-28
EP3968524A4 (en) 2023-06-14
JP2020184672A (ja) 2020-11-12
WO2020226105A1 (ja) 2020-11-12
JP6614735B1 (ja) 2019-12-04
EP3968524A1 (en) 2022-03-16
US11876542B2 (en) 2024-01-16

Similar Documents

Publication Publication Date Title
US7233266B2 (en) Data compression/decompression device and data compression/decompression method
US9054729B2 (en) System and method of compression and decompression
US10268380B2 (en) Methods, devices and systems for semantic-value data compression and decompression
US8090027B2 (en) Data compression using an arbitrary-sized dictionary
US5229768A (en) Adaptive data compression system
AU702207B2 (en) Method of and apparatus for compressing and decompressing data and data processing apparatus and network system using the same
US8712977B2 (en) Computer product, information retrieval method, and information retrieval apparatus
US7616138B2 (en) Data compression using a stream selector with edit-in-place capability for compressed data
JP5008106B2 (ja) データ圧縮装置および方法
US8799239B2 (en) Method, apparatus and computer program product for performing a query using a decision diagram
JPH0869370A (ja) データ圧縮方法およびシステム
JP5251799B2 (ja) データ処理装置およびデータ処理方法
EP0628228A1 (en) Data compression using hashing
CN115065725B (zh) 数据处理方法、装置、电子设备及存储介质
CN112506879B (zh) 数据处理方法及相关设备
WO2017171611A1 (en) Variable-sized symbol entropy-based data compression
US10897270B2 (en) Dynamic dictionary-based data symbol encoding
US6515598B2 (en) System and method for compressing and decompressing data in real time
US6748520B1 (en) System and method for compressing and decompressing a binary code image
JP2016025536A (ja) 圧縮プログラム、圧縮方法および圧縮装置
CN113796015A (zh) 数据的压缩和解压缩方法、数据压缩装置、以及数据解压缩装置
CN1656688B (zh) 在压缩之前处理数字数据
US11967975B1 (en) Method and apparatus for recursive data compression using seed bits
Nadarajan et al. Analysis of string matching compression algorithms
JPH06274310A (ja) データ圧縮処理装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination