CN103270699A - 用于确定搜索起点的装置和方法 - Google Patents

用于确定搜索起点的装置和方法 Download PDF

Info

Publication number
CN103270699A
CN103270699A CN2011800618066A CN201180061806A CN103270699A CN 103270699 A CN103270699 A CN 103270699A CN 2011800618066 A CN2011800618066 A CN 2011800618066A CN 201180061806 A CN201180061806 A CN 201180061806A CN 103270699 A CN103270699 A CN 103270699A
Authority
CN
China
Prior art keywords
data
sequence
circuit
search
row
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.)
Granted
Application number
CN2011800618066A
Other languages
English (en)
Other versions
CN103270699B (zh
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN103270699A publication Critical patent/CN103270699A/zh
Application granted granted Critical
Publication of CN103270699B publication Critical patent/CN103270699B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
    • G11C11/417Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
    • G11C11/418Address circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
    • G11C11/417Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
    • G11C11/419Read-write [R-W] circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • 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/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Development Economics (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Game Theory and Decision Science (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Computational Linguistics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明的目的是从待搜索对象之中有效地检测更长的字符串,从而具有相同部分的不同长度的多个字符串存在于其中。本发明包括:重复数据搜索电路(21),其以某个字符为起点评估在已经输入的字符数据与CAM单元阵列(26)内的字符数据之间的连续匹配以便输出指示存在或者不存在连续匹配的OFRB-0和指示连续匹配的地址的MADR-0;以及跟踪电路1001,...,100K,其评估以已经移位一个字符的字符各自为起点来评价连续匹配以便输出指示存在或者不存在连续匹配的OFRB-1、...、OFRB-K和指示连续匹配的地址的MADR-1、...、MADR-K。然后标识已经输出在OFRB-0、...、OFRB-K之中为最长连续匹配的信号的电路,并且使用由该电路输出的在MADR-1、...、MADR-K之中的地址作为最长匹配字符串的地址。

Description

用于确定搜索起点的装置和方法
技术领域
本发明涉及一种用于确定搜索起点的装置和方法。具体而言,其涉及一种用于基于第一数据元序列确定搜索第二数据元序列时的在第一数据元序列中的搜索起点的装置和方法。
背景技术
缩减(deflate)压缩(RFC1951)是在计算机中广泛使用的ZLIB(RFC1950)和GZIP(RFC1952)所基于的压缩算法。缩减压缩是两种压缩算法的组合,并且在缩减压缩的前一半中使用LZ77编码。LZ77编码是通过搜寻数据的迭代字符序列部分并且周迭代字符序列部分的位置和长度替换迭代字符序列部分来压缩数据。例如在字符序列“IBM is IBM”的LZ77编码中,第二次出现的“IBM”是迭代字符序列部分、并因此被压缩。更具体而言,用诸如“7,3”之类的代码替换迭代字符序列部分,该代码指示具有三个字符的长度的字符序列从在迭代字符序列部分的前导字符之前的第七个字符开始、并因此被压缩。在这一情况下,迭代部分的长度越大,压缩比就越高。
根据缩减压缩的规定,在上至32千字节先前数据中搜寻迭代字符序列部分,并且搜寻迭代字符序列部分需要大量字符序列比较处理。
如果通过软件执行处理,则处理花费长时间。典型软件使用哈希方法以减少搜索时间。然而如果存在具有相同哈希值的许多字符序列,则哈希方法可能丢弃一些字符序列。因此从处理时间和缓冲器容量的观点来看存在难以完全搜索整个字符序列这样的问题。
鉴于这样的境况,申请人已经提出使用硬件来完全搜索整个字符序列的方法(见专利文献1至3)。根据这些方法,可以极快地搜索字符序列。
根据专利文献1,在以这一顺序存储于内容可寻址存储器单元中的字符序列(B,A,B,C,A,B,B,...)中搜寻搜索字符序列(ABCA)时,通过以下步骤在短时间内完成搜索处理:比较第一字符(A)与存储于所有单元行中的字符、比较序列字符(B)与仅在与其中先前比较产生结果“匹配”的单元行相邻的地址(2)和(5)的单元行中的字符、类似地比较序列字符(C)与仅在地址(3)和(6)的单元行中的字符并且类似地比较最后字符(A)与地址(4)的单元行中的字符。
根据专利文献2,在功率供应与匹配线的在切换单元的与接地端子相反的一侧上的部分之间提供第一切换装置,接通第一切换装置持续如下时段的部分或者在比较之前的预备时段,内容可寻址存储器在该时段中根据比较结果接通或者关断切换单元、由此缩短其中流过的电流流动的时段并且减少功率消耗。
根据专利文献3,依次在第一锁存器和第二锁存器中存储在写入缓冲器中的搜索字符与存储于每个CAM单元行中的字符数据之间的比较结果,信号生成电路如果输入信号为低则经由第三锁存器向优先级编码器并且向或电路输出前一级中的第一锁存器的输出和第三锁存器的输出的与,并且如果输入信号为高则经由第三锁存器向优先级编码器以及向或电路输出前一级中的第一锁存器的输出和第二锁存器的输出的与,第一优先级编码器和第二优先级编码器输出这些输入信号的或,并且经由第四锁存器和另一或电路向每个信号生成电路输入从或电路输出的信号。以这一方式,信号必须在时钟的一个周期中穿过的路径的长度减半、由此增加处理速度。
[引用列表]
[专利文献]
[专利文献1]JP7-114577A
[专利文献2]JP8-147986A
[专利文献3]JP8-242176A
发明内容
[技术问题]
在专利文献1至3中描述的字符序列搜索装置通过从第一匹配字符开始跟踪存储的字符序列来确定包括一个或者多个字符的字符序列是否与字符序列相匹配。这一方法对于将要被压缩的许多种类的数据有效。然而存在如下情况,其中包含相同部分的具有不同长度的多个字符序列同时存在,多个字符序列之一在其尾末端包含相同的部分,并且多个字符序列中的另一字符序列在其前导端包含相同部分,并且后一字符序列比前一字符序列更长。在这样的情况下,需要并行执行多个字符序列跟踪。
本发明的目的是高效地从包含相同部分的具有不同长度的多个字符序列的待检测目标检测更长的字符序列。
[对问题的解决方案]
为了达到上文描述的目的,本发明提供一种基于第一数据元序列确定搜索第二数据元序列时的在第一数据元序列中的搜索起点的装置,该装置包括:内容可寻址存储器,其在与形成第二数据元序列的数据元在第二数据元序列中的位置相对应的地址处存储多个所述数据元中的每个数据元,并且在给出搜索数据元时,在将与搜索数据元相匹配的匹配数据元存储作为多个数据元之一的情况下输出存储匹配数据元的地址;多个生成电路,多个生成电路中的每个生成电路是在向内容可寻址存储器给出搜索数据元、并且与开始于先前给出的搜索数据元的序列中的针对生成电路而确定的具体起点的序列相匹配的匹配数据元的序列被存储在内容可寻址存储器中的情况下,基于从内容可寻址存储器输出的地址而生成行存在信息的生成电路,行存在信息指示匹配数据元的序列被存储;以及确定部,其基于在向内容可寻址存储器连续给出形成第一数据元序列的数据元作为搜索数据元时由多个生成电路连续生成的多条行存在信息来确定搜索起点。
如果多个生成电路中的特定生成电路对行存在信息的连续生成数量满足让该数量被识别为足够大的预定条件,则确定部可以确定针对特定生成电路确定的具体起点作为搜索起点。
预定条件可以包括如下条件:特定生成电路对行存在信息的连续生成数量大于多个生成电路中的任何其它生成电路对行存在信息的连续生成数量。
另外,本发明提供一种通过将数据元序列的第一部分数据元序列替换为关于数据元序列的第二部分数据元序列的位置和长度的信息来压缩数据元序列的装置,该装置包括:内容可寻址存储器,在与形成数据元序列的至少一部分的数据元在数据元序列中的位置相对应的地址处存储多个所述数据元中的每个数据源,并且在给出搜索数据元时,在将与搜索数据元相匹配的匹配数据元存储作为多个数据元之一的情况下输出存储匹配数据元的地址;多个生成电路,多个生成电路中的每个生成电路是在向内容可寻址存储器给出搜索数据元、并且与开始于先前给出的搜索数据元的序列中的针对生成电路而确定的具体起点的序列相匹配的匹配数据元的序列被存储在内容可寻址存储器中的情况下,基于从内容可寻址存储器输出的地址而生成行存在信息和行地址信息的生成电路,行存在信息指示匹配数据元的序列被存储和,并且行地址信息指示存储匹配数据元的序列的地址;以及确定部,基于由多个生成电路通过向内容可寻址存储器连续给出形成第一部分数据元序列的数据元作为搜索数据元来连续生成的多条行存在信息和多条行地址信息,确定第二部分数据元序列的位置和长度。
另外,本发明提供一种通过将数据元序列的第一部分数据元序列替换为关于数据元序列的第二部分数据元序列的位置和长度的信息来压缩数据元序列的装置,该装置包括:内容可寻址存储器,在与形成数据元序列的至少一部分的数据元在数据元序列中的位置相对应的地址处存储多个数据元中的每个数据元,并且在给出搜索数据元时,在将与搜索数据元相匹配的匹配数据元存储作为多个数据元之一的情况下输出存储匹配数据元的地址;主生成电路,在向内容可寻址存储器给出搜索数据元、并且与开始于先前给出的搜索数据元的序列中的参考数据元的序列相匹配的匹配数据元的序列被存储在内容可寻址存储器中的情况下,基于从内容可寻址存储器输出的地址生成第一行存在信息和第一行地址信息,第一行存在信息指示匹配数据元的序列被存储,并且第一行地址信息指示存储匹配数据元的序列的地址;K个扩展生成电路,K个扩展生成电路中的第J个扩展生成电路在向内容可寻址存储器给予搜索数据元、并且与开始于先前给出的搜索数据元的序列中的从参考数据元起的第J个数据元的序列相匹配的匹配数据元的序列被存储在内容可寻址存储器中的情况下,基于从内容可寻址存储器输出的地址生成第一行存在信息和第一行地址信息,第一行存在信息指示匹配数据元的序列被存储,并且第一行地址信息指示存储匹配数据元的序列的地址(K代表自然数,并且J代表等于或者小于K的自然数);第一输出电路,在向内容可寻址存储器给出搜索数据元、并且主生成电路和K个扩展生成电路中的任何生成电路生成第一行存在信息的情况下,输出第二行存在信息,第二行存在信息指示与开始于先前给出的搜索数据元的序列中的参考数据元之后的任何数据元的序列相匹配的匹配数据元的序列被存储在该内容可寻址存储器中;第二输出电路,在向内容可寻址存储器给出搜索数据元的情况下输出由主生成电路和K个扩展生成电路中生成第一行存在信息的至少一个生成电路生成的第一行地址信息作为第二行地址信息;以及确定部,向内容可寻址存储器连续给出形成第一部分数据元序列的数据元作为搜索数据元、基于紧接于第一输出电路不再输出第二行存在信息之前从第二输出电路输出的第二行地址信息来确定第二部分数据元序列的位置、以及基于从第一输出电路对第二行存在信息的连续输出数量确定第二部分数据元序列的长度。
另外,本发明提供一种基于第一数据元序列确定搜索第二数据元序列时的在第一数据元序列中的搜索起点的方法,该方法包括以下步骤:内容可寻址存储器在与形成第二数据元序列的数据元在第二数据元序列中的位置相对应的地址存储多个数据元中的每个数据元,并且当给出搜索数据元时,在与搜索数据元相匹配的匹配数据元被存储作为多个数据元之一的情况下输出存储匹配数据元的地址;多个生成电路中的每个生成电路在向内容可寻址存储器给出搜索数据元、并且与开始于先前给出的搜索数据元的序列中的针对生成电路而确定的具体起点的序列相匹配的匹配数据元的序列被存储在内容可寻址存储器中的情况下,基于从内容可寻址存储器输出的地址生成行存在信息的步骤,行存在信息指示匹配数据元的序列被存储;以及基于由多个生成电路通过向内容可寻址存储器连续给出形成第一数据元序列的数据元来连续生成的多条行存在信息,确定搜索起点的步骤。
根据本发明,可以从包含具有不同长度的多个字符序列的待搜索目标高效地检测更长的包含相同部分的字符序列。
附图说明
图1是示出本发明的一个实施例被应用于的微计算机的配置的示例的图;
图2是示出根据本发明的实施例的迭代数据搜索电路的配置的示例的框图;
图3是示出内容可寻址存储器的配置的示例的电路图;
图4是示出根据本发明的实施例的比较结果控制电路的配置的示例的框图;
图5(a)至5(e)是用于图示根据实施例的比较结果控制电路的操作的概念图;
图6是示出其中需要并行执行多个字符序列跟踪的字符序列搜索的具体示例的图;
图7-1是示出根据本发明的实施例的迭代数据搜索装置的配置的示例的图;
图7-2是示出根据本发明的实施例的迭代数据搜索装置的配置的示例的图;
图8-1(a)和8-1(b)是用于图示根据本发明的实施例的迭代数据搜索电路和跟踪电路中的操作的概念图;
图8-2(c)和8-2(d)是用于图示根据本发明的实施例的迭代数据搜索电路和跟踪电路中的操作的概念图;
图8-3(e)和8-3(f)是用于图示根据本发明的实施例的迭代数据搜索电路和跟踪电路中的操作的概念图;
图9是示出根据本发明的实施例的数据压缩控制器的操作的示例的流程图;并且
图10是示出图9中所示流程图的压缩数据输出处理的细节的流程图。
具体实施方式
在下文中,将参照附图具体描述本发明的一个实施例。
图1示出这一实施例被应用于的微计算机10(的一部分)的配置。微计算机10包括通过总线18相互连接的CPU12、ROM14和RAM16,该总线包括地址总线、数据总线、控制总线等。
微计算机10还包括多个根据这一实施例的迭代数据搜索装置20a、20b等等,这些迭代数据搜索装置经由数据压缩控制器22连接到总线18,该数据压缩控制器控制迭代数据搜索装置的操作。迭代数据搜索装置20a、20b等等具有相同配置,并且在这一实施例中提供P+1个迭代数据搜索装置。在下文中,P+1个迭代数据搜索装置将统称为“迭代数据搜索装置20”,并且将描述迭代数据搜索装置20的配置。每个个体迭代数据搜索装置将称为块、比如“块0”和“块P”以将它与其它迭代数据搜索装置进行区分。
图2是根据这一实施例的迭代数据搜索装置20所基于的迭代数据搜索电路21的图。
迭代数据搜索电路21具有包括在矩阵中布置的大量内容可寻址存储器单元28的CAM单元阵列26(内容可寻址存储器下文将缩写为CAM)。在附图中,由圆圈示出CAM单元28。在CAM单元阵列26中,各自在矩阵中布置N+1个字线WL0至WLN、N+1个匹配线匹配0至匹配N以及M+1个位线对BL0和BL0’至BLM和BLM’,并且每个CAM单元28连接到字线WL0至WLN中的任何字线、匹配线匹配0至匹配N中的任何匹配线以及位线对BL0和BL0'至BLM和BLM’中的任何位线对。
大量CAM单元28具有相同配置。如图3中所示,CAM单元28具有两个非电路30和32而一个电路的输入端子和输出端子分别连接到另一电路的输出端子和输入端子。非电路30和32形成的回路形成存储1位数据的(SRAM类型的)存储电路。非电路30的输出端子连接到N-MOSFET34的源极,非电路32的输出端子连接到N-MOSFET36的源极,并且N-MOSFET34和36的栅极连接到字线WL。N-MOSFET34和36的漏极分别连接到位线BL和BL’。
为了向CAM的单元28写入1位数据,将字线WL设置在高电平,在与待写入数据D对应的电平设置位线BL(如果数据D为“1”则为高电平而如果数据为“0”则为低电平),并且在从位线BL的电平反转的电平设置位线BL’(如果位线BL在高电平则为低电平而如果位线BL在低电平则为高电平)。这使N-MOSFET34和36接通,并因此在非电路30和32的回路中保持经由位线BL和BL'供应的数据。
非电路30的输出端子连接到N-MOSFET38的栅极,并且非电路32的输出端子连接到N-MSOFET40的栅极。非电路32输出从数据D反转的数据(Q’),并且非电路30输出从数据Q’反转的数据Q(=D)。N-MOSFET38和40的漏极分别连接到位线BL'和BL,并且N-MOSFET38和40的源极连接到N-MOSFET42的栅极。N-MOSFET42的漏极连接到匹配线匹配,并且N-MOSFET42的源极接地。
在这一实施例中,作为示例,M+1个CAM单元28连接到相同字线和相同匹配线,从而可以在连接到相同字线和相同匹配线的多个CAM单元28中存储M+1位数据(这些CAM单元下文将称为CAM单元行)。在CAM单元阵列26中,向每个CAM单元行分配地址。
再次参照图2,迭代数据搜索电路21具有定时控制器50。定时控制器50连接到数据压缩控制器22。在从数据压缩控制器22向定时控制器50输入搜索指令SEARCH时,迭代数据搜索电路21执行“搜索”模式,该模式涉及到将输入的搜索数据与存储于CAM单元阵列26的每个CAM单元行中的数据反复比较,并且向CAM单元阵列26的任何CAM单元行写入搜索数据。
从数据压缩控制器22向定时控制器50输入系统时钟CLOCK,并且定时控制器50生成与系统时钟CLOCK同步的时钟SR。也向连接到定时控制器50的写入缓冲器56输出时钟SR。
写入缓冲器56连接到数据压缩控制器22,并且从控制器22向写入缓冲器56连续输入搜索数据。写入缓冲器56连接到位线对BL0和BL0’至BLM和BLM’、保持输入搜索数据,并且在与从定时控制器50输入的时钟SR同步的定时处根据保持的搜索数据的值来改变位线对BL0和BL0’至BLM和BLM'的电平(也就是驱动位线对)。在写入缓冲器56根据预定搜索数据驱动位线对之时,比较预定搜索数据与存储于每个CAM单元行中的数据并且向预定CAM单元行写入预定搜索数据。
定时控制器50也连接到地址解码器52,并且也向地址解码器52输入时钟输出时钟SR。地址解码器52连接到数据压缩控制器22,并且数据压缩控制器22指定搜索数据将被写入到的CAM单元行的地址(写入地址WADR)。字线WL0至WLN连接到地址解码器52,并且地址解码器52确立(使能)与指定的写入地址WADR对应的CAM单元行的字线,并且在与时钟SR同步的定时处、更具体而言在其中写入缓冲器56根据预定搜索数据驱动位线对的时段期间比较预定搜索数据与存储于每个CAM单元行中的数据之后向与指定的地址对应的CAM单元行写入预定搜索数据。
各自连接到匹配线匹配0至匹配N中的对应匹配线的N+1个匹配线控制器580至58N也连接到定时控制器50,并且也向匹配线控制器580至58N输出时钟SR。基于输入时钟SR,匹配线控制器580至58N在比较搜索数据与存储于每个CAM单元行中的数据之前,将匹配线匹配0至匹配N充电(预充电)成高电平。匹配线控制器580至58N对匹配线预充电出现于在完成写入缓冲器56根据预定搜索数据驱动位线对之后并且在开始根据下一搜索数据驱动位线对之前的时段中。
匹配线匹配0至匹配N也连接到比较结果控制电路60。如图4中所示,比较结果控制电路60具有锁存器620至62N、信号生成电路640至64N和锁存器660至66N。在图4中省略匹配线控制器580至58N的图示。在信号生成电路640至64N之中,虽然图示仅示出连接到匹配线匹配1的信号生成电路641的具体配置,但是其它信号生成电路也具有相同配置。在下文中,将仅描述比较结果控制电路60的涉及到匹配线匹配1的电路部分。
匹配线匹配1连接到锁存器621的输入端子,并且锁存器621的输出端子连接到信号生成电路641中的与电路681和701中的每个与电路的两个输入端子之一。或电路721的输出端子连接到与电路681的两个输入端子中的另一输入端子。或电路721的两个输入端子之一和与电路701的两个输入端子中的另一输入端子连接到前一级中的锁存器660的输出端子。与电路681的输出端子连接到锁存器661的输入端子,并且锁存器661的输出端子与上文描述的锁存器660的输出端子一样连接到下一级中的信号生成电路642的中的或电路722和与电路702(二者均未示出)中的每个电路的输入端子。锁存器661的输出端子也连接到第一优先级编码器74的输入端子。与电路701的输出端子连接到或电路78的输入端子之一。与电路700和702至70N(未示出)的输出端子连接到或电路78的其它输入端子。或电路78的输出端子连接到或电路80的输入端子之一。其它迭代数据搜索电路21中的或电路78的输出端子连接到或电路80的其它输入端子。或电路80的输出端子经由未示出的反相器连接到信号生成电路640至64N中的或电路720至72N的输入端子(在附图中仅示出或电路721)。反转从或电路80输出的反馈信号ORFB、然后向或电路720至72N输入该反馈信号ORFB。也向数据压缩控制器22(见图2)输出从或电路80输出的反馈信号ORFB。
图4示出块0中的迭代数据搜索电路21中的比较结果控制电路60,并且信号生成电路640中的或电路720的两个输入端子之一连接到块P中的比较结果控制电路60中的锁存器66N的输出端子。块0中的比较结果控制电路60中的锁存器66N的输出端子连接到块1中的比较结果控制电路60中的或电路720的两个输入端子之一(见图2)。
第一优先级编码器74的输出端子连接到第二优先级编码器76的输入端子。第一优先级编码器74在从比较结果控制电路60中的锁存器660至66N输入的信号的“搜索”操作之后对与在高电平的信号对应的地址编码并且向第二优先级编码器76输出编码的地址作为匹配地址MADR0,并且向第二优先级编码器76输出从锁存器660至66N输入的信号的逻辑求和作为匹配信号MSIG0。如果从锁存器660至66N输入的信号中的多个信号在高电平,则输出根据预定标准的最高优先级、例如最低地址或者与在该时间点的写入地址WADR最接近的地址的内容可寻址存储器单元行的地址作为匹配地址MADR0。输出后一个地址的原因是因为在压缩中使用的距离信息具有小体积、因此造成高可压缩率。
也向第二优先级编码器76的输入端子输入从其它迭代数据搜索电路21中的第一优先级编码器74输出的匹配地址MADR和匹配信号MSIG。第二优先级编码器76的输出端子连接到数据压缩控制器22。
第二优先级编码器76具有与第一优先级编码器74基本上相同的配置。第二优先级编码器76向数据压缩控制器22输出在从多个第一优先级编码器74输入的地址MADR0至MADRP之中的匹配信号MISG0至MSIGP在高电平的地址之中根据预定标准的最高优先级的地址、例如通过将相关块的地址(向多个迭代数据搜索装置中的相关迭代数据搜索装置分配的地址)与最低地址或者与在该时间点的写入地址WADR最接近的地址相加而形成的地址作为匹配地址MADR并且向数据压缩控制器22输出如下信号,该信号指示从多个第一优先级编码器74输入的匹配信号MSIG0至MSIGP的逻辑求和作为匹配信号MISG。
接着,作为这一实施例的效果,将描述出现于迭代数据搜索电路21中的比较操作。如后文描述的那样,为了压缩待压缩数据(原始数据),数据压缩控制器22从原始数据连续提取具有预定位长度的单位数据作为搜索数据并且将搜索数据与搜索指令SEARCH和写入地址WADR一起向迭代数据搜索电路21连续输出。
在已经接收搜索指令SEARCH的迭代数据搜索电路21中,定时控制器50向写入缓冲器56、地址解码器52和匹配线控制器580至58N输出时钟SR,匹配线控制器58在CAM单元阵列26的比较操作之前对匹配线匹配0至匹配N预充电,并且写入缓冲器56保持输入的搜索数据并且根据搜索数据驱动位线对BL0至BL0’至BLM和BLM’。
在CAM单元阵列26中的每个CAM单元28中,如果从非电路30输出的数据Q为“1”(高电平)则接通N-MOSFET,并且如果从非电路32输出的数据Q’为“1”则接通N-MOSFET40。因此,如果保持于非电路30和32的回路中的数据Q(Q’)与通过位线对BL和BL'供应的数据D(D’)匹配,则未接通N-MOSFET42。并且如果数据Q(Q’)未与数据D(D’)匹配,则电流从N-MOSFET38和40中的接通的任一N-MOSFET的漏极流向源极并且接通N-MOSFET42。作为结果,将预充电的匹配线匹配的电平减少至低电平(放电)。
上文描述的数据比较同时出现于CAM单元28中。多个CAM单元28(CAM单元行)连接到一个匹配线匹配,并且一般在时钟SR的一个周期的前一半中完成在输入的字符数据与存储于CAM单元行中的字符数据之间的比较操作。仅如果未在连接到每个匹配线的所有CAM单元28中接通N-MOSFET42,也就是说,如果存储于CAM单元行中的字符数据与向写入缓冲器56输入的字符数据匹配,则在高电平维持该匹配线,并且如果字符数据未相互匹配则将该匹配线设置在低电平。
在时钟SR的一个周期的第二半中,地址解码器52确定(使能)与输入的写入地址WADR对应的CAM单元行的字线,并且向CAM单元行写入搜索数据。然后,在完成向CAM单元行写入搜索数据时,将子线设置在低电平,并且停止写入缓冲器56驱动每个位线对,匹配线控制器58再次对每个匹配线预充电。
上文描述的操作(比较操作)出现于时钟SR的一个周期中并且与从数据压缩控制器22输入搜索数据、搜索指令SEARCH和写入地址WADR同步地重复。
上文描述中的字符数据是数据元的示例。在“1”设置的反馈信号ORFB是行存在信息、也就是第一行存在信息的示例,该行存在信息指示存储匹配数据元行。匹配地址MADR是如下行地址信息、也就是第一行地址信息的示例,该行地址信息指示存储匹配数据元行的地址。信号生成电路64、锁存器66、第一优先级编码器74、第二优先级编码器76和或电路78形成的一部分是生成电路、具体为主生成电路的示例。另外,数据压缩控制器22是确定搜索起点以及数据元行的位置和长度的确定部的示例。
接着将参照图5描述比较结果控制电路60的操作。作为示例,图5示出如下情况,其中原始数据是文本数据,在地址“0”至“5”的CAM单元行中先前存储字符数据序列“ABABBC”,并且依此顺序输入字符数据A、B、B、B、C等等作为搜索数据。示出锁存器620至625为ML0至ML5,并且示出锁存器660至665为PS0至PS5。在下文描述中,将假设其它迭代数据搜索装置中的比较操作的结果持续地是“不匹配”。
如图5(a)中所示,在首先输入字符数据“A”作为搜索数据时,比较结果在(图5中的粗框包围的)地址“0”和“2”的CAM单元行中是“匹配”。在匹配线匹配0至匹配5之中,将除了匹配线匹配0和匹配2之外的匹配线放电成低电平,并且在高电平仅维持匹配线匹配0和匹配2。分别在比较结果控制电路60中的锁存器ML0至ML5中保持、然后在下一周期中分别向信号生成电路640至645输出匹配线匹配0至匹配5的电平。
如图5(a)中所示,在这一时间点,保持于锁存器PS0至PS5中的电平是低电平(在图5中为“0”,这对于未示出的锁存器PS6至PSN和其它块的锁存器PS0至PSN同样成立),因此从与电路700至705输出的信号都在低电平,并且从或电路78输出的反馈信号ORFB0和从或电路80输出的反馈信号ORFB也在低电平。如从上文描述可见,根据这一实施例,在仅一个字符与存储的数据匹配时,也就是说,在CAM单元行中的仅一个比较操作产生比较结果“匹配”时未将反馈信号ORFB设置在高电平。由于反馈信号ORFB在低电平,所以或电路720至725的输出都在高电平,并且在锁存器PS0至PS5中保持从锁存器ML0至ML5输出的信号的电平不变(见图5(b))。
如图5(b)中所示,在输入字符数据“B”作为下一搜索数据时,比较结果在地址“1”、“3”和“4”的CAM单元行中“匹配”,并且在锁存器ML0至ML5中保持匹配线的电平(仅匹配线匹配1、匹配3和匹配5在高电平)。然后在下一周期中,将设置锁存器ML1、ML3和ML5的输出设置在高电平,并且将锁存器PS0和PS2的输出(也就是说,在锁存器ML1和ML3的相应前一级中的锁存器PS)设置在高电平,从而将从与电路701和703输出的信号设置在高电平、并且将从或电路78输出的反馈信号ORFB0和从或电路80输出的反馈信号ORFB设置在高电平,如图5(b)中所示。
如从上文描述可见,仅如果两个或者更多连续字符与存储的数据匹配,也就是说,如果在CAM单元阵列26中已经存储包括多条连续输入的搜索数据的数据序列,则将反馈信号ORFB设置在高电平。如果假设第一优先级编码器74输出最低地址作为匹配地址MADR0,则匹配地址MADR0是与锁存器PS0对应的地址“0”。虽然从第二优先级编码器76输出的匹配地址MADR依赖于从其它迭代数据搜索装置输入的匹配地址的值,但是如果数据在其它迭代数据搜索装置中未与存储的数据匹配,则匹配地址MADR的更低有效位的值等于匹配地址MADR0的值。匹配地址MADR的更高有效位的值是匹配编码器块的地址(向多个迭代数据搜索装置中的相关迭代数据搜索装置分配的地址)的值。在这一情况下,相关块是地址“0”的块,值为全0。
如图5(c)中所示,在输入字符数据“B”作为下一搜索数据时,将与在前一搜索数据的情况下的匹配线相同的匹配线设置在高电平,并且在锁存器ML0至ML5中保持、然后向信号生成电路640至645输出匹配线的电平。在这一时间点,在其输出在高电平的锁存器ML1、ML3和ML4之中,仅锁存器ML4从前一级中的锁存器PS接收在高电平的输出,从而在从与电路701、703和704输出的信号之中,仅从与电路704输出的信号在高电平。因此,维持从或电路78输出的反馈信号ORFB0在高电平,并且匹配地址MADR0是与锁存器PS4对应的地址“4”。
由于反馈信号ORFB维持在高电平,假如“m”表示当前循环,则向地址“n”的锁存器PS输出与地址“n”的锁存器ML的输出ML(n,m)与前一级中的锁存器PS的输出PS(n-1,m)的逻辑乘积对应的信号。作为结果,仅锁存器PS4保持高电平。
然后如图5(d)中所示,输入字符数据“B”作为下一搜索数据。在这一情况下,将匹配线电平暂时保持于锁存的ML0至ML5中、然后向信号生成电路640至645输入的匹配线的电平与在前一搜索数据的情况下的电平相同。然而输出在高电平的信号的所有锁存器ML1、ML3和ML4接收从相应前一级中的锁存器PS输出的在低电平的信号,从而从与电路700至705输出的所有信号在低电平并且反馈信号ORFB0和反馈信号ORFB在低电平。当反馈信号ORFB被设置在低电平时,将信号生成电路640至645中的或电路720至725的输出信号设置在高电平,从而在锁存器PS0至PS5中保持从锁存器ML1至ML5输出的信号的电平而不变。
然后如图5(e)中所示,在输入字符数据“C”作为下一搜索数据时,仅将匹配线匹配5设置在高电平,并且分别在锁存器ML0至ML5中暂时保持、然后向信号生成电路640至645输出匹配线的电平。在这一情况下,仅锁存器ML5输出在高电平的信号,并且前一级中的锁存器PS4也输出在高电平的信号。作为结果,在从与电路700至705输出的信号之中,仅将从与电路705输出的信号设置在高电平。因此,在高电平维持从或电路78输出的反馈信号ORFB0,并且匹配地址MAD0是与锁存器PS1对应的地址“1”。
如上文描述的那样,迭代数据搜索电路21具有如下功能,该功能在整个CAM单元阵列26中搜寻与每个输入字符匹配的字符,以及如下功能,该功能保持关于在与存储于CAM单元阵列26中的字符匹配的任何字符之前的字符序列是否与存储于CAM单元阵列26中的字符序列匹配的信息,并且可以在比其它方法高得多的速度搜寻字符序列。
有如何开始跟踪字符序列的问题。通常,字符序列的跟踪始于第一匹配字符的位置。根据这一方法,可以在某一程度上高效压缩字符序列。然而根据待压缩字符序列,在第一匹配字符的位置开始跟踪字符序列可能未造成最佳压缩。
图6示出这样的字符序列搜索的示例。
在这一示例中,如图6(a)中所示,在(框包围的)已经输入始于“A”并且结束于“Y”的十个字符的状态中,在由十个字符构成的字符序列中搜寻与新输入的字符序列“ABCDEF”匹配的字符序列。
如果在第一匹配字符开始跟踪,则压缩结果如图6(b)中所示。更具体而言,首先发现(粗框包围的)与字符序列“ABC”匹配的字符序列,然后发现(粗框包围的)与新输入的字符序列的剩余字符序列“DEF”匹配的字符序列。因此,通过替换为“<10,3><7,3>”来压缩字符序列“ABCDEF”。
然而如果忽略第一匹配字符并且在第二匹配字符的位置开始跟踪,则压缩结果如图6(c)中所示。也就是说,发现(粗框包围的)与字符序列“BCDEF”匹配的字符序列。因此,用“A<7,5>”替换字符序列“ABCDEF”,并且可压缩率高于在图6(b)中所示情况下的可压缩率。
是否应当忽略第一匹配字符或者应当忽略从第一匹配字符起的多少匹配字符依赖于待压缩数据的属性。因此,在实际应用中,有必要在相同时间执行多个跟踪并且通过丢弃产生更短字符序列的跟踪来选择产生最长匹配字符序列的跟踪。
为此,根据这一实施例,照旧使用上文参照图2至5描述的字节匹配检测机制,并且多个字符序列跟踪机制级联连接到该机制。多个字符序列跟踪机制并行高效执行字符序列匹配搜索而根据字符序列跟踪机制在级联中的位置对跟踪起点移位并且选择产生最长匹配字符序列的跟踪之一。换而言之,照旧使用上文参照图2至5描述的占用装置的大面积的匹配字符检测机制,并且仅附加地提供多个字符序列跟踪机制。以这一方式,使硬件资源的增加最少并且增强字符序列搜索功能而未减少吞吐量。
图7-1和7-2示出根据这一实施例的迭代数据搜索装置20的配置的示例。
如图7-1中所示,迭代数据搜索装置20包括迭代数据搜索电路21以及跟踪电路1001、1002、...和100K
迭代数据搜索电路21的内部配置与上文参照图2至4描述的内部配置相同。然而由于连接到数据搜索电路21的跟踪电路1001、1002、...和100K,所以迭代数据搜索电路21的从外部电路接收信号和向外部电路输出信号的部分的配置略微不同于上文参照图2至5描述的配置,并且下文仅描述该部分。在附图中,图4中的锁存器620至62N一并示出为锁存器62,并且锁存器660至66N一并示出为锁存器66。如在图4中那样,仅示出与电路681、与电路680至68N的与电路701和或电路721、与电路700至70N以及或电路720至72N。注意未示出下标。
如图7-1中所示,迭代数据搜索电路21还包括或电路78和JK触发器1021。或电路78的输出端子连接到或电路84的输入端子之一,并且或电路84的输出端子经由反相器连接到或电路72的两个输入端子之一。或电路78的输出端子也连接到JK触发器1021的J输入端子,并且或电路84的输出端子经由反相器连接到JK触发器1021的K输入端子。
虽然在图4中提供第一优先级编码器74和第二优先级编码器76,但是在这一示例中仅提供与第二优先级编码器76对应的优先级编码器82。也就是说,尽管图4中所示迭代数据搜索电路21由从CAM单元阵列26到第一优先级编码器74的部件形成,但是这一附图中所示迭代数据搜索电路21由从CAM单元阵列26到与第二优先级编码器76对应的优先级编码器82的部件形成。
跟踪电路1001、1002、......和100K具有相同配置,因此将描述跟踪电路100J作为代表(J=1,2,...和K)。
跟踪电路100J具有与排除CAM单元阵列26和收尘器62的迭代数据搜索电路21基本上相同的配置。更具体而言,跟踪电路100J具有分别与迭代数据搜索电路21中的锁存器660至66N、与电路680至68N、与电路700至70N、或电路720至72N、或电路78和优先级编码器82对应的锁存器106J0至106JN、与电路108J0至108JN、与电路110J0至110JN、或电路112J0至112JN、或电路114J和优先级编码器116J。注意对于跟踪电路100J,锁存器106J0至106JN同样将统称为锁存器106J。在与电路108J0至108JN、与电路110J0至110JN和或电路112J0至112JN之中,仅示出与电路108J1、与电路110J1和或电路112J1。然而未示出相应第二下标(指示CAM单元行的地址的下标)。
如图7-1中所示,跟踪电路100J包括或电路114J、JK触发器102J+1和与电路104J。或电路114J的输出端子连接到或电路84的输入端子之一。或电路114J的输出端子也连接到JK触发器102J+1的J输入端子,并且或电路84的输出端子经由反向器连接到JK触发器102J+1的K输入端子(除了在J=K的情况下之外)。或电路84的输出端子也连接到与电路104J的两个输入端子之一,并且JK触发器102J-1的输出端子连接到与电路104J的两个输入端子中的另一输入端子。
如图7-2中所示,迭代数据搜索装置20还包括定时调整电路组86、触发器组88、或电路90、解码器92、触发器组84和选择器96。
定时调整电路组86包括与电路1180至118K和D触发器1200至120K。与电路1180的两个输入端子之一连接到迭代数据搜索电路21中的或电路78的输出端子,并且与电路1180的两个输入端子中的另一输入端子连接到D触发器1200的输出端子。D触发器1200的数据输入端子接地,并且D触发器1200的时钟输入端子连接到或电路78的输出端子。与电路118J的两个输入端子之一连接到跟踪电路100J中的或电路114J的输出端子,并且与电路118J的两个输入端子中的另一输入端子连接到D触发器120J的输出端子。D触发器120J的数据输入端子接地,并且D触发器120J的时钟输入端子连接到或电路114J的输出端子(J=1,2,...和K)。
触发器组88包括触发器12201至1220K、12211至1221(K-1)、...和122(K-1)1。触发器122J1至122J(K-J)形成(K-J)级触发器,并且触发器122J(K-J)的输入端子连接到与电路118J的输出端子,并且触发器122J1的输出端子连接到或电路90和解码器92的输入端子(J=1,2,...和K-1)。注意与电路118K的输出端子直接连接到或电路90和解码器82的输入端子。
触发器组94包括触发器12401至1240K、12411至1241(K-1)、...和124(K-1)1。触发器12401至1240K形成K级触发器,触发器1240K的输入端子连接到迭代数据搜索电路21中的优先级编码器82的输出端子,并且触发器12401的输出端子连接到选择器96的输入端子。触发器124J1至124J(K-J)形成(K-J)级触发器,触发器124J(K-J)的输入端子连接到跟踪电路100J中的优先级编码器116J的输出端子,并且触发器124J1的输出端子连接到选择器96的输入端子(J=1,2,...和K-1)。注意优先级编码器116K的输出端子直接连接到选择器96的输入端子。
在上文描述中,锁存器106J、与电路108J、与电路110J、或电路112J、或电路114J和优先级编码器116J形成的部分是生成电路、具体为第J个扩展生成电路的示例。或电路90是第一输出电路的示例,并且选择器96是第二输出电路的示例。
接着将参照图8-1至8-3描述根据这一实施例的迭代数据搜索装置20的操作。作为示例,图8-1至8-3示出如下情况,其中原始数据是文本数据,在地址“0”至“9”的CAM单元行中先前存储字符数据序列“ABCXBCDEFH”,并且依次输入字符数据A、B、C、D、E和F作为搜索数据,并且假设跟踪电路100的数目为五。示出锁存器620至629为ML0至ML9,示出锁存器660至669为PS00至PS09,示出锁存器10610至10619为PS10至PS10,示出锁存器10620至10629为PS20至PS29,并且示出锁存器10650至10659为PS50至PS59。还假设如果在迭代数据搜索电路21以及跟踪电路1001、1002、...和100J中的每个电路中,多个锁存器PS保持“1”,优先级编码器82以及1161、1162、...和116K选择和输出最低地址。
如图8-1(a)中所示,在首先输入字符数据“A”作为搜索数据时,比较结果在地址“0”的CAM单元行中是“匹配”,从而保持于锁存器ML0中的电平是高电平。
在这一时间点,保持于锁存器PS00至PS09中的电平是低电平,从而从与电路700至709输出的所有信号在低电平并且从或电路78输出的反馈信号ORFB-0也在低电平。
由于保持于锁存器PS10至PS19、...和PS50至PS59中的电平在低电平,所以从与电路11010至11019、...和11050至11059输出的所有信号在低电平,并且从或电路1141、...和1145输出的反馈信号ORFB-1、...和ORFB-5也在低电平。
由于反馈信号ORFB-0、ORFB-1、...和ORFB-5如上文描述的那样在低电平,所以从或电路84输出的信号在低电平,从而或电路720至729的所有输出在高电平并且在锁存器PS00至PS09中保持从锁存器ML0至ML9输出的信号的电平而不变。因此,锁存器PS00至PS09中的仅锁存器PS00保持高电平,从而优先级编码器82输出地址“0”作为匹配地址MADR-0(见图8-1(b))。
此外,向JK触发器1021的J输入端子输入从或电路78输出的在低电平的信号,并且向JK触发器1021的K输入端子输入从或电路84输出的在低电平的信号反转的在高电平的信号,从而保持于JK触发器1021中的电平是低电平。
如图8-1(b)中所示,在输入字符数据“B”作为下一搜索数据时,比较结果在地址“1”和“4”的CAM单元行中是“匹配”,从而保持于锁存器ML1和ML4中的电平是高电平。
在这一时间点,保持于锁存器PS00中的电平是高电平,从而从与电路701输出的信号在高电平并且从或电路78输出的反馈信号ORFB-0也在高电平。
由于保持于锁存器PS10至PS19、...和PS50至PS59中的电平是低电平,所以从与电路11010至11019、...和11050至11059输出的所有信号在低电平并且从或电路1141、...和1145输出的反馈信号ORFB-1、...和ORFB-5也在低电平。
由于反馈信号ORFB-0如上文描述的那样在高电平,所以从或电路84输出的信号也在高电平,从而在锁存器PS00至PS09中锁存从锁存器ML0至ML9输出的信号和从前一级中的锁存器PS输出的信号的电平的逻辑乘积。因此,锁存器PS00至PS09中仅锁存器PS1保持高电平,从而优先级编码器82输出地址“1”作为匹配地址MADR-0(见图8-2(c)中的PS0字段)。
已经保持于JK触发器1021中的电平是低电平,并且从与电路1041输出的信号也在低电平,从而或电路11210至11219的所有输出在高电平并且在锁存器PS10至PS19中保持从锁存器ML0至ML9输出的信号的电平而不变。因此,锁存器PS10至PS19的锁存器PS11和PS14保持高电平,从而优先级编码器1161输出地址“1”作为匹配地址MADR-1(见图8-2(c)中的PS1字段)。
此外,向JK触发器1021的J输入端子输入从或电路78输出的在高电平的信号,并且向JK触发器1021的K输入端子输入从或电路84输出的在高电平的信号反转的在低电平的信号,从而保持于JK触发器1021中的电平是高电平。
向JK触发器1022的J输入端子输入从或电路1141输出的在低电平的信号,并且向JK触发器1022的K输入端子输入从或电路84输出的在低电平的信号反转的在高电平的信号,从而保持于JK触发器1022中的电平是低电平。
如图8-2(c)中所示,在输入字符数据“C”作为下一搜索数据时,比较结果在地址“2”和“5”的CAM单元行中是“匹配”,从而保持于锁存器ML2和ML5中的电平是高电平。
在这一时间点,保持于锁存器PS01中的电平是高电平,从而从与电路701输出的信号在高电平并且或电路78输出的反馈信号ORFB-0也在高电平。
由于保持于锁存器PS11和PS14中的电平是高电平,所以从与电路11011和11014输出的信号在高电平并且从或电路1141输出的反馈信号ORFB-1也在高电平。
由于保持于锁存器PS20至PS29、...和PS50至PS59中的电平是低电平,所以从与电路11020至11029、...和11050至11059输出的所有信号在低电平并且从或电路1142、...和1145输出的反馈信号ORFB-2、...和ORFB-5也在低电平。
由于反馈信号ORFB-0和ORFB-1如上文描述的那样在高电平,所以从或电路84输出的信号也在高电平,从而在锁存器PS00至PS09中保持从锁存器ML0至ML9输出的信号和从锁存器PS0输出的信号的电平的逻辑乘积。。因此,锁存器PS00至PS09中仅锁存器PS02保持高电平,从而优先级编码器82输出地址“2”作为匹配地址MADR-0(见图8-2(d)中的PS0字段)。
已经保持于JK触发器1021中的电平是高电平,从或电路84输出的信号在高电平,并且从与电路1041输出的信号也在高电平,从而在锁存器PS10至PS19中保持从锁存器ML0至ML9输出的信号和从前一级中的锁存器PS1输出的信号的电平的逻辑乘积。因此,锁存器PS10至PS19中的锁存器PS12和PS15保持高电平,从而优先级编码器1161输出地址“2”作为匹配地址MADR-1(见图8-2(d)中的PS1字段)。
已经保持于JK触发器1022中的电平是低电平,并且从与电路1042输出的信号也在低电平,从而或电路11220至11229的所有输出在高电平并且在锁存器PS10至PS19中保持从锁存器ML0至ML9输出的信号的电平而不变。因此,锁存器PS20至PS29中的锁存器PS22和PS25保持高电平,从而优先级编码器1162输出地址“2”作为匹配地址MADR-2(见图8-2(d))。
此外,向JK触发器1021的J输入端子输入从或电路78输出的在高电平的信号,并且向JK触发器1021的K输入端子输入从或电路84输出的在高电平的信号反转的在低电平的信号,从而保持于JK触发器1021中的电平是高电平。
向JK触发器1022的J输入端子输入从或电路1141输出的在高电平的信号,并且向JK触发器1022的K输入端子输入从或电路84输出的在高电平的信号反转的在低电平的信号,从而保持于JK触发器1022中的电平是高电平。
向JK触发器1023的J输入端子输入从或电路1142输出的在低电平的信号,并且向JK触发器1023的K输入端子输入从或电路84输出的在高电平的信号反转的在低电平的信号,从而保持于JK触发器1023中的电平是低电平。
如图8-2(d)中所示,在输入字符数据“D”作为下一搜索数据时,比较结果在地址“6”的CAM单元行中是“匹配”,从而保持于锁存器ML6中的电平是高电平。
在这一时间点,在锁存器ML6的前一级中的锁存器PS05中保持的电平是低电平,并且尽管在后续级中的锁存器ML3中保持的电平是低电平,保持于锁存器PS02中的电平是高电平,从而从与电路700至709输出的所有信号在低电平并且从或电路78输出的反馈信号ORFB-0也在低电平。
由于保持于锁存器PS12、PS15、PS22和PS25中的电平是高电平,所以从与电路11010至11019和11020至11029输出的所有信号是在高电平并且从或电路1141和1142输出的反馈信号ORFB-1和ORFB-2也在高电平。
由于保持于锁存器PS30至PS39、...和PS50至PS59中的电平是低电平,从与电路11030至11039、...和11050至11059输出的所有信号在低电平并且从或电路1143、...和1145输出的反馈信号ORFB-3、...和ORFB-5也在低电平。
由于反馈信号ORFB-1和ORFB-2如上文描述的那样在高电平,所以从或电路84输出的信号也在高电平,从而在锁存器PS00至PS09中保持从锁存器ML0至ML9输出的信号和从前一级中的锁存器PS0输出的信号的电平的逻辑乘积(见图8-3(e)中的PS0字段)。也就是说,字符序列在这一点不再与搜索数据匹配,从而保持于锁存器PS00至PS09中的电平是低电平。
已经保持于JK触发器1021和1022中的电平是高电平,从或电路84输出的信号在高电平,并且从与电路1041和1042输出的信号也在高电平,从而在锁存器PS10至PS19和PS20至PS29中保持从锁存器ML0至ML9输出的信号和从先前级中的锁存器PS1和PS2输出的信号的电平的逻辑乘积。因此,锁存器PS10至PS19和PS20至PS29的锁存器PS16和PS26保持高电平,从而优先级编码器1161和1162输出地址“6”作为匹配地址MADR-1和MADR-2(见图8-3(e)中的PS1字段和PS2字段)。
已经保持于JK触发器1023中的电平是低电平,并且从与电路1043输出的信号也在低电平,从而或电路11230至11239的所有输出在高电平,并且在锁存器PS30至PS39中保持从锁存器ML0至ML9输出的信号的电平而不变。因此,锁存器PS30至PS39中的锁存器PS36保持高电平,从而优先级编码器1163输出地址“6”作为匹配地址MADR-3(见图8-3(e)中的PS3字段)。
此外,向JK触发器1021的J输入端子输入从或电路78输出的在低电平的信号,并且向JK触发器1021的K输入端子输入从或电路84输出的在高电平的信号反转的在低电平的信号,从而保持于JK触发器1021中的电平是高电平。
向JK触发器1022和1023的J输入端子输入从或电路1141和1142输出的在高电平的信号,并且向JK触发器1022和1023的K输入端子输入从或电路84输出的在高电平的信号反转的在低电平的信号,从而保持于JK触发器1022和1023中的电平是高电平。
向JK触发器1024的J输入端子输入从或电路1143输出的在低电平的信号,并且向JK触发器1024的K输入端子输入从或电路84输出的在高电平的信号反转的在低电平的信号,从而保持于JK触发器1024中的电平是低电平。
如图8-3(e)中所示,在输入字符数据“E”作为下一搜索数据时,比较结果在地址“7”的CAM单元行中是“匹配”,从而保持于锁存器ML6中的电平是高电平。
在这一时间点,保持于锁存器PS00至PS09中的电平是低电平,从而从与电路700至709输出的所有信号在低电平,并且从或电路78输出的反馈信号ORFB-0也在低电平。
由于保持于锁存器PS16、PS26和PS36中的电平是高电平,所以从与电路11010至11019、11020至11029和11030至11039输出的所有信号在高电平并且从或电路1141、1142和1143输出的反馈信号ORFB-1、ORFB-2和ORFB-3也在高电平。
由于保持于锁存器PS40至PS49和PS50至PS59中的电平是低电平,所以从与电路11040至11049和11050至11059输出的所有信号在低电平并且从或电路1144和1145输出的反馈信号ORFB-4和ORFB-5也在低电平。
由于反馈信号ORFB-1、ORFB-2和ORFB-3如上文描述的那样在高电平,所以从或电路84输出的信号也在高电平,从而在锁存器PS00至PS09中保持从锁存器ML0至ML9输出的信号和从前一级中的锁存器PS0输出的信号的电平的逻辑乘积(见图8-3(f)中的PS0字段)。
已经保持于JK触发器1021、1022和1023中的电平是高电平,从或电路84输出的信号在高电平,并且从与电路1041、1042和1043输出的信号也在高电平,从而在锁存器PS10至PS19、PS20至PS29和PS30至PS39中保持从锁存器ML0至ML9输出的信号和从前一级中的锁存器PS1、PS2和PS3输出的信号的电平的逻辑乘积。因此,锁存器PS10至PS19、PS20至PS29和PS30至PS39中的锁存器PS17、PS27和PS37保持高电平,从而优先级编码器1161、1162和1163输出地址“7”作为匹配地址MADR-1、MADR-2和MAD-3(见图8-3(f)中的PS1字段、PS2字段和PS3字段)。
已经保持于JK触发器1024中的电平是低电平,并且从与电路1044输出的信号也在低电平,从而或电路11240至11249的所有输出在高电平并且在锁存器PS40至PS49中保持从锁存器ML0至ML9输出的信号的电平而不变。因此,锁存器PS40至PS49中的锁存器PS47保持高电平,从而优先级编码器1164输出地址“7”作为匹配地址MADR-4(见图8-3(f)中的PS4字段)。
在上文描述的操作中,经由与电路1180至118K向解码器92输出每当输入字符数据时输出的反馈信号ORFB-0至ORFB-K(在上文描述的示例中为K=5)。在这一实施例中,如果来自或电路84的反馈信号ORFB被设置在低电平,则D触发器1200至120K被设置在高电平,并且反馈信号ORFB-0至ORFB-K可以穿过与电路1180至118K。另一方面,如果一旦反馈信号ORFB-0至ORFB-K的电平被设置在高电平、然后再设置在低电平,则向D触发器1200至120K的时钟输入端子输入的信号的电平从低电平改变成高电平并且反馈信号ORFB-0至ORFB-K不能穿过与电路1180至118K
向选择器9输出每当输入字符数据时也输出的匹配地址MADR-0至MADR-5。
然而根据这一实施例,在反馈信号ORFB-J的路径上在解码器92之前提供(K-J)级触发器122,并且在匹配地址MADR-J的路径上在选择器96之前提供(K-J)级触发器124(J=1,2,...,K-1),而在反馈信号ORFB-K和匹配地址MADR-K的路径上未在解码器92和选择器96之前提供触发器。作为结果,反馈信号ORFB-0至ORFB-5和匹配地址MADR-0至MADR-5未在与在上文描述的操作中用作参考的字符数据的输入时间同步的时间到达解码器92和选择器96、但是在被移位触发器级数的时间到达解码器92和选择器96。
接着将描述迭代数据搜索装置20在解码器92和选择器96接收信号的时间的操作。虽然在图8-1至8-3中未示出,但是将在下文描述中假设图8-3(f)中所示字符数据“F”是在与存储的数据匹配的字符序列中的最后字符数据。也就是说,在输入在字符数据“F”之后的字符数据时,反馈信号ORFB-0至ORFB-5被设置在低电平。解码器92向选择器96通知在反馈信号ORFB-0至ORFB-5中的设置在高电平的任何反馈信号ORFB的数目,并且选择器96从解码器92向选择器96通知编号的匹配地址MADR之中选择最小编号的匹配地址MADR。
首先,将考虑在解码器92从触发器12201接收在图8-1(b)中所示时间点输出的反馈信号ORFB-0时的时间点。在这一时间点,解码器92从触发器12211接收在图8-2(c)中所示时间点输出的反馈信号ORFB-1、从触发器12221接收在图8-2(d)中所示时间点输出的反馈信号ORFB-2、从触发器12231接收在图8-3(e)中所示时间点输出的反馈信号ORFB-3、从触发器12241接收在图8-3(f)中所示时间点输出的反馈信号ORFB-4并且从优先级编码器1165接收在图8-3(f)中所示时间点之后输出的反馈信号ORFB-5(在低电平)。在这一情况下,反馈信号ORFB-0至ORFB-4在高电平,从而从或电路90向数据压缩控制器22输出的合并的ORFB(合并的反馈信号,下文缩写为C-ORFB)在高电平。解码器92向选择器96通知从触发器反馈信号ORFB-0至ORFB-4在高电平,并且选择器96选择匹配地址MADR-0并且向数据压缩控制器22输出地址“0”。
然后,解码器92从触发器12201接收在图8-2(c)中所示时间点输出的反馈信号ORFB-0、从触发器12211接收在图8-2(d)中所示时间点输出的反馈信号ORFB-1、从触发器12221接收在图8-3(e)中所示时间点输出的反馈信号ORFB-2、从触发器12231接收在图8-3(f)中所示时间点输出的反馈信号ORFB-3并且分别从触发器12241和优先级编码器1165接收在图8-3(f)中所示时间点之后输出的反馈信号ORFB-4和ORFB-5(二者在低电平)。在这一情况下,反馈信号ORFB-0至ORFB-3在高电平,从而从或电路90向数据压缩控制器22输出的合并的反馈信号C-ORFB在高电平。解码器92向选择器96通知反馈信号ORFB-0至ORFB-3在高电平,并且选择器96选择匹配地址MADR-0并且向数据压缩控制器22输出地址“1”。
然后,解码器92从触发器12201接收在图8-2(d)中所示时间点输出的反馈信号ORFB-0、从触发器12211接收在图8-3(e)中所示时间点输出的反馈信号ORFB-1、从触发器12221接收在图8-3(f)中所示时间点输出的反馈信号ORFB-2并且分别从触发器12231、触发器12241和优先级编码器1165接收在图8-3(f)中所示时间点之后输出的反馈信号ORFB-3至ORFB-5(都在低电平)。在这一情况下,反馈信号ORFB-1和ORFB-2在高电平,从而从或电路90向数据压缩控制器22输出的合并的反馈信号C-ORFB在高电平。解码器92向选择器96通知反馈信号ORFB-1和ORFB-2在高电平,并且选择器96选择匹配地址MADR-1并且向数据压缩控制器22输出地址“6”。在图8-1至8-3中所示示例中,在跟踪始于字符数据“A”的情况下,字符序列在这一时间点不再与存储的数据匹配,从而解码器92未向选择器96通知反馈信号ORFB-0,从而选择器96未选择反馈信号ORFB-0。
然后,解码器92从触发器12201接收在图8-3(e)中所示时间点输出的反馈信号ORFB-0、从触发器12211接收在图8-3(f)中所示时间点输出的反馈信号ORFB-1并且分别从触发器12221、触发器12231、触发器12241和优先级编码器1165接收在图8-3(f)中所示时间点之后输出的反馈信号ORFB-2至ORFB-5(都在低电平)。在这一情况下,反馈信号ORFB-1在高电平,从而从或电路90向数据压缩控制器22输出的合并的反馈信号C-ORFB在高电平。解码器92向选择器96通知反馈信号ORFB-1在高电平,并且选择器96选择匹配地址MADR-1并且向数据压缩控制器22输出地址“7”。
然后,解码器92从触发器12201接收在图8-3(f)中所示时间点输出的反馈信号ORFB-0并且分别从触发器12211、触发器12221、触发器12231、触发器12241和优先级编码器1165接收在图8-3(f)中所示时间点之后输出的反馈信号ORFB-1至ORFB-5(都在低电平)。在这一情况下,反馈信号ORFB-1至ORFB-5在低电平,从而从或电路90向数据压缩控制器22输出的合并的反馈信号C-ORFB在低电平。
因此,数据压缩控制器22使用紧接于合并的反馈信号C-ORFB被设置在低电平之前从选择器96接收的地址“7”作为匹配地址。
接着将描述根据这一实施例的数据压缩控制器的操作。
图9是示出在数据压缩控制器22中执行的过程的流程图。在经由总线18向数据压缩控制器22传送待压缩数据(原始数据)、并且CPU12通知数据压缩单元22压缩原始数据时执行这一过程。
数据压缩控制器22首先重置迭代数据搜索装置20中的比较结果控制电路60中的锁存器620至62N和锁存器660至66N(步骤200)。然后执行初始化以将匹配长度MLEN设置在“1”并且将写入地址WADR设置在“0”(步骤202)。然后确定是否完成向迭代数据搜索装置20输出原始数据(步骤204)。如果确定结果为否定,则从原始数据提取关于与前导一个字符对应的字符C0的数据作为搜索数据并且将数据与搜索指令SEARCH和写入地址WADR一起向迭代数据搜索装置20输出(步骤206)。响应于这一点,迭代数据搜索装置20执行上文描述的搜索操作。
然后,数据压缩控制器22确定是否从迭代数据搜索装置20输出的字符序列匹配信号C-ORFB被设置在高电平(步骤208)。在这一情况下,由于已经在先前步骤200中重置锁存器62和锁存器66并且因此在低电平维持字符序列匹配信号C-ORFB,所以确定结果为否定、并且该过程前进至步骤210。然后,数据压缩控制器22确定当前比较操作是否为对预定原始数据的第一比较操作(步骤210)。如果确定结果为肯定,则绕过步骤212中的输出压缩的数据这样的处理并且该过程前进至步骤214。与上文描述的反馈信号ORFB一样,除非两个或者更多连续字符与存储的数据匹配,否则不将字符序列匹配信号C-ORFB设置在高电平,并且因此如果出现连串比较结果“不匹配”,则如后文描述的那样输出在先前搜索中搜寻的字符作为压缩的数据。因此在这一时间点没有将作为压缩的数据而输出的数据,并因此不执行步骤212。
然后,数据压缩控制器22用“1”替换最大长度MLEN(步骤214),并且该过程前进至步骤218。然后,数据压缩控制器22用关于在先前搜索中搜寻的字符C1的数据替换在第二先前搜索中搜寻的字符C2并且用关于在当前搜寻中搜寻的字符C0的数据替换在先前搜索中搜寻的字符C1(步骤218)并且在与当前写入地址WADR对应的CAM单元行中写入关于字符C0的数据(在第一比较操作中为0)(步骤220)。在实践中,地址解码器52确立(使能)与写入地址WADR对应的CAM单元行的字线来执行写入处理。另外,数据压缩控制器22将写入地址WADR递增1以提供下一写入地址WADR(也就是说,以CAM单元行的地址的升序写入字符数据)、将写入地址WADR除以CAM单元阵列26的大小N+1并且设置余数(步骤222)。
一旦以这一方式在所有CAM单元行中写入数据,数据就被写入到地址“0”的CAM单元行中。因此,使用CAM单元阵列26作为所谓环形缓冲器,并且CAM单元阵列26等的溢出未出现。
在执行步骤222中的处理之后,该过程返回到步骤204。如果在步骤204中的确定的结果为否定,则再次执行步骤206和后继步骤中的过程。在步骤206中,从原始数据提取关于在先前搜索中搜寻的字符C1之后的字符C0的数据作为搜索数据并且将该数据与搜索指令SEARCH和写入地址WADR一起向迭代数据搜索装置20输出。然后,如果在步骤208中的确定的结果为否定,则该过程前进至步骤210。如果在步骤210中的确定的结果为否定,则执行步骤212中的压缩数据输出处理。
在这一压缩数据输出处理中,如图10中所示,数据压缩控制器22确定匹配长度MLEN是否为2(步骤230)。如果先前比较的结果是“匹配”,但是第二先前比较的结果不是“匹配”,则确定结果为肯定,并且输出关于在第二先前搜索中搜寻的字符C2的数据作为压缩的数据(步骤236),然后输出关于在先前搜索中搜寻的字符C1的数据(步骤238),然后该过程前进至图9中所示流程图中的步骤214。
如果在步骤230中的确定的结果为否定,则数据压缩控制器22确定匹配长度MLEN是否为1(步骤232)。如果先前比较的结果不是“匹配”,则确定结果为肯定,则输出关于在先前搜索中搜寻的字符C1的数据作为压缩的数据,然后该过程前进至图9中所示流程图中的步骤214。
在图9中所示流程图中,如果在步骤208中的确定的结果为肯定,则递增匹配长度MLEN(步骤216),然后该过程前进至步骤218。因此,在字符序列匹配信号C-ORFB在高电平之时未输出压缩的数据。
如果将已经在先前比较操作中在高电平设置的字符序列匹配信号C-ORFB改变成低电平并且在步骤210中的确定的结果为否定,则意味着检测到具有两个或者更多字符的长度的迭代字符序列的末尾,从而在步骤212中执行压缩数据输出处理。在这一情况下,如果先前比较和第二先前比较的结果二者是“匹配”,则在上文描述的步骤216中将匹配长度MLEN递增至3或者更大,从而在步骤230和232中的确定的结果二者为否定,并且该过程前进至步骤234。
然后,数据压缩控制器22确定用于压缩迭代字符序列的压缩代码。根据这一实施例,使用包括第一代码和第二代码的压缩代码,该第一代码代表如下指针,该指针指示与迭代字符序列匹配的字符序列的位置,该第二代码代表迭代字符序列的长度,设置在匹配地址MADR与匹配长度MLEN之差加上1(MADR-MLEN+1)作为第一代码并且输出该代码,并且设置匹配长度MLEN作为第二代码并且输出该代码(步骤234)。作为结果,从数据压缩控制器22输出的压缩的数据的长度比原始数据的长度更短。
在输出压缩代码时,为了在解压压缩的字符序列时在压缩代码与字符数据之间区分,数据压缩控制器22也在字符数据与压缩代码之间插入代表断点的代码。以这一方式,每次发现迭代字符序列时,执行步骤234,将发现的迭代字符序列转换成压缩代码,并且输出压缩代码、由此去除原始数据的冗余性并且将原始数据压缩成压缩的数据。
重复上文描述的过程,并且在原始数据中的提取关于字符C的数据的位置到达原始数据的末尾时,在步骤204中的确定的结果为肯定,并且数据压缩控制器22再次执行压缩数据输出处理(步骤224)。在这一情况下,如果匹配长度MLEN的值等于或者大于3,则在步骤234中输出压缩代码。然而如果匹配长度MLEN的值是2,则在步骤236中输出关于在第二先前搜索中搜寻的字符C2的数据作为压缩的数据,在步骤238中输出关于在先前搜索中搜寻的字符C1的数据作为压缩的数据,并且该过程结束。如果匹配长度MLEN的值是1,则在步骤238中输出关于在先前搜索中搜寻的字符C1的数据作为压缩的数据,并且该过程结束。
虽然在这一操作示例中使用如下指针作为压缩代码的第一代码,该指针指示与迭代字符序列匹配的字符序列的位置,但是也可以如在上文描述的示例中那样使用在与迭代字符序列匹配的字符序列的位置与迭代字符序列的位置之间的距离。在这一情况下,数据压缩控制器22可以基于来自迭代数据搜索装置20的解码输出信号(见图7-2)识别在迭代数据搜索电路21以及跟踪电路1001、1002、...和100K之中已经连续输出在高电平的反馈信号持续最长时间的电路,并且使用通过从在电路中开始跟踪的字符的位置减去与迭代字符序列匹配的字符序列的位置而获得的值作为第一代码。
上文已经描述本发明的一个实施例。
如上文描述的那样,根据这一实施例,多个跟踪电路100连接到迭代数据搜索电路,该迭代数据搜索电路从CAM单元阵列26检测与输入的字符数据匹配的字符数据并且确定输入的字符数据作为字符序列是否与检测到的字符数据匹配,这些跟踪电路针对在以一个字符的步进移位的不同搜索起点开始的字符序列进行匹配确定。作为结果,可以从包含具有不同长度的如下多个字符序列的待搜索目标高效检测更长字符序列,这些多个字符序列包含相同部分,并且可以提高可压缩率。
接着将描述这一实施例的有效性的验证。
作为用于评估数据压缩算法的典型数据集,有坎特伯雷全集数据系列。作为示例,下文将描述评估结果,该评估结果示出这一实施例对于kennedy.xls(1029744字节)数据系列的有效性。通过使用32-KB CAM来LZ77压缩数据、用固定霍夫曼表压缩所得数据并且使用提供与硬件的性能等效的性能的软件模型来获得下文描述的评估结果。
(1)在仅将迭代数据搜索电路21用于LZ77的情况下,压缩的数据的字节数为417599并且可压缩率是0.41。
(2)在将如下电路用于LZ77的情况下,该电路包括迭代数据搜索电路21和在1字节的延迟之后执行跟踪的一个跟踪电路100,压缩的数据的字节数为302140并且可压缩率是0.29。
迭代数据搜索电路21在每个地址保持10位信息(在CAM单元阵列26中为8位、在锁存器62中为1位并且在锁存器66中为1位)。然而如从上文描述可见,通过在每个地址保持1位更多信息来明显提高可压缩率。
虽然在这一实施例中假设通过将字符序列的部分替换为关于字符序列的另一部分的位置和长度的信息来压缩字符序列,但是可以假设用于搜索字符序列的部分的搜索起点基于字符序列的另一部分来确定。在该情况下,标识在高电平的反馈信号ORFB的连续生成次数在迭代数据搜索电路21以及跟踪电路1001、1002、...和100K之中最大的电路就足够了,从而并非总是有必要通过取反馈信号ORFB的逻辑求和来确定合并的反馈信号C-ORFB或者对合并的反馈信号C-ORFB的连续输出次数计数。
虽然在这一实施例中指定针对连续生成在高电平的反馈信号ORFB的次数最大的电路而先前确定的具体起点作为搜索起点,但是本发明不限于这一实现方式。例如可以在高电平的反馈信号的连续生成次数超过阈值时的时间点终止跟踪,可以选择在该点生成在高电平的反馈信号的任何电路,并且可以指定针对选择的电路而先前确定的具体起点作为搜索起点。更一般地,可以指定针对连续生成在高电平的反馈信号ORFB的次数方面满足预定条件的电路而先前确定的具体起点作为搜索起点。
另外,虽然在这一实施例中以一个字符的步进对迭代数据搜索电路21以及跟踪电路1001、1002、...和100K的具体起点移位,但是本发明不限于这一实现方式。仅需电路具有不同具体起点,并且可以用任何数目的字符的步进对具体起点移位。
虽然上文已经描述本发明的一个实施例,但是本发明的技术范围不限于上文描述的实施例。本领域技术人员清楚,可以进行各种修改并且可以使用各种备选而未脱离本发明的精神实质和范围。
权利要求书(按照条约第19条的修改)
1.一种通过将数据元序列的第一部分数据元序列替换为关于所述数据元序列的第二部分数据元序列的位置和长度的信息来压缩所述数据元序列的装置,包括:
内容可寻址存储器,被配置用于将形成所述数据元序列的至少一部分的多个数据元中的每个数据元存储与所述数据元在所述数据元序列中的位置相对应的地址处,并且在给出搜索数据元时,在与所述搜索数据元相匹配的匹配数据元被存储作为所述多个数据元之一的情况下输出存储所述匹配数据元的所述地址;
主生成电路,被配置用于在向所述内容可寻址存储器给出所述搜索数据元、并且与开始于先前给出的搜索数据元的序列中的参考数据元的序列相匹配的匹配数据元的序列被存储在所述内容可寻址存储器中的情况下,基于从所述内容可寻址存储器输出的所述地址生成第一行存在信息和第一行地址信息,所述第一行存在信息指示所述匹配数据元的序列被存储,并且所述第一行地址信息指示存储所述匹配数据元的序列的所述地址;
K个扩展生成电路,所述K个扩展生成电路中的第J个扩展生成电路(K代表自然数,并且J代表等于或者小于K的自然数)被配置用于在向所述内容可寻址存储器给出所述搜索数据元、并且与开始于先前给出的搜索数据元的序列中的从所述参考数据元起的第J个数据的序列相匹配的匹配数据元的序列被存储在所述内容可寻址存储器中的情况下,基于从所述内容可寻址存储器输出的所述地址生成第一行存在信息和第一行地址信息,所述第一行存在信息指示所述匹配数据元的序列被存储,并且所述第一行地址信息指示存储所述匹配数据元的序列的所述地址;
第一输出电路,被配置用于在向所述内容可寻址存储器给出所述搜索数据元、并且所述主生成电路和所述K个扩展生成电路中的任何生成电路生成所述第一行存在信息的情况下,输出所述第二行存在信息,所述第二行存在信息指示与开始于先前给出的搜索数据元的序列中的所述参考数据元之后的任何数据元的序列相匹配的匹配数据元的序列被存储在所述内容可寻址存储器中;
第二输出电路,被配置用于在向所述内容可寻址存储器给出所述搜索数据元的情况下,输出由所述主生成电路和所述K个扩展生成电路中生成所述第一行存在信息的至少一个生成电路生成的所述第一行地址信息作为第二行地址信息;以及
确定部,被配置用于向所述内容可寻址存储器连续给出形成所述第一部分数据元序列的所述数据元作为所述搜索数据元,基于紧接于所述第一输出电路不再输出所述第二行存在信息之前从所述第二输出电路输出的所述第二行地址信息来确定所述第二部分数据元序列的所述位置,以及基于来自所述第一输出电路的所述第二行存在信息的连续输出的数量来确定所述第二部分数据元序列的所述长度。
2.根据权利要求1所述的装置,其中如果所述多个生成电路中的特定生成电路对所述行存在信息的连续生成的数量满足让所述数量被识别为足够大的预定条件,则所述确定部确定针对所述特定生成电路而确定的所述具体起点作为所述搜索起点。
3.根据权利要求2所述的装置,其中所述预定条件包括如下条件:所述特定生成电路对所述行存在信息的连续生成的所述数量大于所述多个生成电路中的任何其它生成电路对所述行存在信息的连续生成的数量。

Claims (8)

1.一种基于第一数据元序列来确定搜索第二数据元序列时在所述第一数据元序列中的搜索起点的装置,包括:
内容可寻址存储器,被配置用于将形成所述第二数据元序列的多个数据元中的每个数据元存储在与所述数据元在所述第二数据元序列中的位置相对应的地址处,并且在给出搜索数据元时,在与所述搜索数据元相匹配的匹配数据元被存储作为所述多个数据元之一的情况下输出存储所述匹配数据元的所述地址;
多个生成电路,所述多个生成电路中的每个生成电路是这样的生成电路,其被配置用于在向所述内容可寻址存储器给出所述搜索数据元、并且与开始于先前给出的搜索数据元的序列中的针对所述生成电路而确定的具体起点的序列相匹配的匹配数据元的序列被存储在所述内容可寻址存储器中的情况下,基于从所述内容可寻址存储器输出的所述地址而生成行存在信息,所述行存在信息指示所述匹配数据元的所述序列被存储;以及
确定部,被配置用于基于在向所述内容可寻址存储器连续给出形成所述第一数据元序列的所述数据元作为所述搜索数据元时由所述多个生成电路连续生成的多条行存在信息,来确定所述搜索起点。
2.根据权利要求1所述的装置,其中如果所述多个生成电路中的特定生成电路对所述行存在信息的连续生成的数量满足让所述数量被识别为足够大的预定条件,则所述确定部确定针对所述特定生成电路而确定的所述具体起点作为所述搜索起点。
3.根据权利要求2所述的装置,其中所述预定条件包括如下条件:所述特定生成电路对所述行存在信息的连续生成的所述数量大于所述多个生成电路中的任何其它生成电路对所述行存在信息的连续生成的数量。
4.一种通过将数据元序列的第一部分数据元序列替换为关于所述数据元序列的第二部分数据元序列的位置和长度的信息来压缩所述数据元序列的装置,包括:
内容可寻址存储器,被配置用于将形成所述数据元序列的至少一部分的多个数据元中的每个数据元存储在与所述数据元在所述数据元序列中的位置相对应的地址处,并且在给出搜索数据元时,在与所述搜索数据元相匹配的匹配数据元被存储作为所述多个数据元之一的情况下输出存储所述匹配数据元的所述地址;
多个生成电路,所述生成电路中的每个生成电路是这样的生成电路,其被配置用于在向所述内容可寻址存储器给出所述搜索数据元、并且与开始于先前给出的搜索数据元的序列中的针对所述生成电路而确定的具体起点的序列相匹配的匹配数据元的序列被存储在所述内容可寻址存储器中的情况下,基于从所述内容可寻址存储器输出的所述地址而生成行存在信息和行地址信息,所述行存在信息指示所述匹配数据元的序列被存储,并且所述行地址信息指示存储所述匹配数据元的序列的所述地址;以及
确定部,被配置用于基于由所述多个生成电路通过向所述内容可寻址存储器连续给出形成所述第一部分数据元序列的所述数据元作为所述搜索数据元而连续生成的多条行存在信息和多条行地址信息,来确定所述第二部分数据元序列的位置和长度。
5.根据权利要求4所述的装置,其中如果所述多个生成电路中的特定生成电路对所述行存在信息的连续生成的数量满足让所述数量被识别为足够大的预定条件,则所述确定部基于由所述特定生成电路紧接于所述特定生成电路不再生成所述行存在信息之前生成的所述行地址信息来确定所述第二部分数据元序列的所述位置,并且基于所述连续生成的数量来确定所述第二部分数据元序列的所述长度。
6.根据权利要求5所述的装置,其中所述预定条件包括如下条件:所述特定生成电路对所述行存在信息的连续生成的数量大于所述多个生成电路中的任何其它生成电路对所述行存在信息的连续生成的数量。
7.一种通过将数据元序列的第一部分数据元序列替换为关于所述数据元序列的第二部分数据元序列的位置和长度的信息来压缩所述数据元序列的装置,包括:
内容可寻址存储器,被配置用于将形成所述数据元序列的至少一部分的多个数据元中的每个数据元存储与所述数据元在所述数据元序列中的位置相对应的地址处,并且在给出搜索数据元时,在与所述搜索数据元相匹配的匹配数据元被存储作为所述多个数据元之一的情况下输出存储所述匹配数据元的所述地址;
主生成电路,被配置用于在向所述内容可寻址存储器给出所述搜索数据元、并且与开始于先前给出的搜索数据元的序列中的参考数据元的序列相匹配的匹配数据元的序列被存储在所述内容可寻址存储器中的情况下,基于从所述内容可寻址存储器输出的所述地址生成第一行存在信息和第一行地址信息,所述第一行存在信息指示所述匹配数据元的序列被存储,并且所述第一行地址信息指示存储所述匹配数据元的序列的所述地址;
K个扩展生成电路,所述K个扩展生成电路中的第J个扩展生成电路(K代表自然数,并且J代表等于或者小于K的自然数)被配置用于在向所述内容可寻址存储器给出所述搜索数据元、并且与开始于先前给出的搜索数据元的序列中的从所述参考数据元起的第J个数据的序列相匹配的匹配数据元的序列被存储在所述内容可寻址存储器中的情况下,基于从所述内容可寻址存储器输出的所述地址生成第一行存在信息和第一行地址信息,所述第一行存在信息指示所述匹配数据元的序列被存储,并且所述第一行地址信息指示存储所述匹配数据元的序列的所述地址;
第一输出电路,被配置用于在向所述内容可寻址存储器给出所述搜索数据元、并且所述主生成电路和所述K个扩展生成电路中的任何生成电路生成所述第一行存在信息的情况下,输出所述第二行存在信息,所述第二行存在信息指示与开始于先前给出的搜索数据元的序列中的所述参考数据元之后的任何数据元的序列相匹配的匹配数据元的序列被存储在所述内容可寻址存储器中;
第二输出电路,被配置用于在向所述内容可寻址存储器给出所述搜索数据元的情况下,输出由所述主生成电路和所述K个扩展生成电路中生成所述第一行存在信息的至少一个生成电路生成的所述第一行地址信息作为第二行地址信息;以及
确定部,被配置用于向所述内容可寻址存储器连续给出形成所述第一部分数据元序列的所述数据元作为所述搜索数据元,基于紧接于所述第一输出电路不再输出所述第二行存在信息之前从所述第二输出电路输出的所述第二行地址信息来确定所述第二部分数据元序列的所述位置,以及基于来自所述第一输出电路的所述第二行存在信息的连续输出的数量来确定所述第二部分数据元序列的所述长度。
8.一种基于第一数据元序列来确定搜索第二数据元序列时在所述第一数据元序列中的搜索起点的方法,包括:
内容可寻址存储器被配置用于将形成所述第二数据元序列的的多个数据元中的每个数据元存储在与所述数据元在所述第二数据元序列中的位置相对应的地址处,并且当给出搜索数据元时,在与所述搜索数据元相匹配的匹配数据元被存储作为所述多个数据元之一的情况下输出存储所述匹配数据元的地址;
由多个生成电路中的每个生成电路在向所述内容可寻址存储器给出所述搜索数据元、并且与开始于先前给出的搜索数据元的序列中的针对所述生成电路而确定的具体起点的序列相匹配的匹配数据元的序列被存储在所述内容可寻址存储器中的情况下,基于从所述内容可寻址存储器输出的所述地址生成行存在信息的步骤,所述行存在信息指示所述匹配数据元的序列被存储;以及
基于由所述多个生成电路通过向所述内容可寻址存储器连续给出形成所述第一数据元序列的所述数据元作为所述搜索数据元而连续生成的多条行存在信息,来确定所述搜索起点的步骤。
CN201180061806.6A 2010-12-28 2011-11-01 用于确定搜索起点的装置和方法 Active CN103270699B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2010293990 2010-12-28
JP2010-293990 2010-12-28
PCT/JP2011/075170 WO2012090584A1 (ja) 2010-12-28 2011-11-01 検索開始点を決定する装置及び方法

Publications (2)

Publication Number Publication Date
CN103270699A true CN103270699A (zh) 2013-08-28
CN103270699B CN103270699B (zh) 2016-08-10

Family

ID=46382705

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180061806.6A Active CN103270699B (zh) 2010-12-28 2011-11-01 用于确定搜索起点的装置和方法

Country Status (5)

Country Link
US (2) US9372887B2 (zh)
JP (1) JP5520391B2 (zh)
CN (1) CN103270699B (zh)
DE (1) DE112011104633B4 (zh)
WO (1) WO2012090584A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8766827B1 (en) * 2013-03-15 2014-07-01 Intel Corporation Parallel apparatus for high-speed, highly compressed LZ77 tokenization and Huffman encoding for deflate compression
CN103425739B (zh) * 2013-07-09 2016-09-14 国云科技股份有限公司 一种字符串匹配方法
US9537504B1 (en) * 2015-09-25 2017-01-03 Intel Corporation Heterogeneous compression architecture for optimized compression ratio
JP6480304B2 (ja) * 2015-11-06 2019-03-06 日本電信電話株式会社 信号探索方法、装置、及びプログラム
JP2019008845A (ja) * 2017-06-22 2019-01-17 ルネサスエレクトロニクス株式会社 半導体装置
JP7475078B2 (ja) 2022-04-26 2024-04-26 克己 井上 全文検索プロセッサ
WO2023210643A1 (ja) * 2022-04-26 2023-11-02 克己 井上 全文検索プロセッサ

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5448733A (en) * 1993-07-16 1995-09-05 International Business Machines Corp. Data search and compression device and method for searching and compressing repeating data
CN1200604A (zh) * 1997-05-12 1998-12-02 莱克斯马克国际公司 数据压缩方法和设备
US5877714A (en) * 1994-12-28 1999-03-02 International Business Machines Corporation Search circuit for data compression
CN1263306A (zh) * 1999-02-05 2000-08-16 Arm有限公司 在数据处理系统内的位图字形数据存储
CN1388443A (zh) * 2001-05-28 2003-01-01 佳能株式会社 用于数据压缩的方法、装置、计算机程序和存储介质
JP2005175940A (ja) * 2003-12-11 2005-06-30 Matsushita Electric Ind Co Ltd データ圧縮装置

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2760790B2 (ja) * 1986-10-09 1998-06-04 株式会社日立製作所 データ処理装置
JPS63177242A (ja) 1987-01-19 1988-07-21 Hitachi Ltd 連想メモリのパリテイチエツク方法
JP2693338B2 (ja) 1992-03-04 1997-12-24 富士通株式会社 データ圧縮・復元処理における誤り制御処理方式
US5821885A (en) * 1994-07-29 1998-10-13 Discovision Associates Video decompression
US5455576A (en) * 1992-12-23 1995-10-03 Hewlett Packard Corporation Apparatus and methods for Lempel Ziv data compression with improved management of multiple dictionaries in content addressable memory
US5602764A (en) * 1993-12-22 1997-02-11 Storage Technology Corporation Comparing prioritizing memory for string searching in a data compression system
US5883588A (en) 1994-10-04 1999-03-16 Nec Corporation Data compression system and data compression device for improving data compression rate and coding speed
JP3117375B2 (ja) 1994-11-28 2000-12-11 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 連想メモリの制御回路及び連想メモリ装置
US5729228A (en) * 1995-07-06 1998-03-17 International Business Machines Corp. Parallel compression and decompression using a cooperative dictionary
US5951623A (en) * 1996-08-06 1999-09-14 Reynar; Jeffrey C. Lempel- Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases
US6191710B1 (en) * 1998-12-30 2001-02-20 Intel Corp. Data compression and decompression method and system for data compression and decompression
US6505270B1 (en) * 1999-07-02 2003-01-07 Lara Technology, Inc. Content addressable memory having longest prefix matching function
GB0001707D0 (en) 2000-01-25 2000-03-15 Btg Int Ltd Data compression having more effective compression
US6615310B1 (en) * 2000-05-18 2003-09-02 International Business Machines Corporation Lossless data compressor with all CAM words available
JP4596733B2 (ja) * 2000-11-21 2010-12-15 アスペックス・セミコンダクター・リミテッド 内容照合(連想)記憶装置に関する改良
WO2002082304A1 (en) * 2001-04-06 2002-10-17 Specht Donald F String search neuron for artificial neural networks
US7050317B1 (en) * 2002-03-15 2006-05-23 Integrated Device Technology, Inc. Content addressable memory (CAM) devices that support power saving longest prefix match operations and methods of operating same
US6771525B2 (en) * 2002-05-31 2004-08-03 Mosaid Technologies Incorporated Method and apparatus for performing variable word width searches in a content addressable memory
US20040022312A1 (en) 2002-07-31 2004-02-05 Jones Simon R. Lossless data compression
US7487542B2 (en) * 2004-01-14 2009-02-03 International Business Machines Corporation Intrusion detection using a network processor and a parallel pattern detection engine
US7706242B2 (en) * 2004-02-25 2010-04-27 Ricoh Company, Ltd. Optical disk, signal generation method, clock signal generation method, and optical disk device
JP2005353238A (ja) * 2004-06-14 2005-12-22 Renesas Technology Corp 連想メモリ
US7937510B1 (en) * 2005-02-01 2011-05-03 Altera Corporation Lempel Ziv compression architecture
US7783654B1 (en) * 2006-09-19 2010-08-24 Netlogic Microsystems, Inc. Multiple string searching using content addressable memory
US7827190B2 (en) * 2006-12-08 2010-11-02 Pandya Ashish A Complex symbol evaluation for programmable intelligent search memory
US8532299B2 (en) * 2007-05-29 2013-09-10 Denso Wave Incorporated Method for producing two-dimensional code and reader for reading the two-dimensional code
WO2010050282A1 (ja) 2008-10-28 2010-05-06 インターナショナル・ビジネス・マシーンズ・コーポレーション パラレル連想メモリ
JP4806054B2 (ja) * 2009-05-13 2011-11-02 インターナショナル・ビジネス・マシーンズ・コーポレーション データが記憶された位置を選択する装置及び方法
JP5584895B2 (ja) * 2009-10-08 2014-09-10 ルネサスエレクトロニクス株式会社 半導体信号処理装置
DE112011104620T5 (de) 2010-12-28 2013-10-02 International Business Machines Corporation Vorrichtung und Verfahren zum Verarbeiten einer Datenelementsequenz

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5448733A (en) * 1993-07-16 1995-09-05 International Business Machines Corp. Data search and compression device and method for searching and compressing repeating data
US5877714A (en) * 1994-12-28 1999-03-02 International Business Machines Corporation Search circuit for data compression
CN1200604A (zh) * 1997-05-12 1998-12-02 莱克斯马克国际公司 数据压缩方法和设备
CN1263306A (zh) * 1999-02-05 2000-08-16 Arm有限公司 在数据处理系统内的位图字形数据存储
CN1388443A (zh) * 2001-05-28 2003-01-01 佳能株式会社 用于数据压缩的方法、装置、计算机程序和存储介质
JP2005175940A (ja) * 2003-12-11 2005-06-30 Matsushita Electric Ind Co Ltd データ圧縮装置

Also Published As

Publication number Publication date
US9372887B2 (en) 2016-06-21
US20160372179A1 (en) 2016-12-22
US11120867B2 (en) 2021-09-14
DE112011104633T5 (de) 2013-10-02
JPWO2012090584A1 (ja) 2014-06-05
US20130297649A1 (en) 2013-11-07
WO2012090584A1 (ja) 2012-07-05
JP5520391B2 (ja) 2014-06-11
DE112011104633B4 (de) 2016-11-10
CN103270699B (zh) 2016-08-10

Similar Documents

Publication Publication Date Title
CN103270699A (zh) 用于确定搜索起点的装置和方法
US9647684B2 (en) Memory-based history search
KR101956031B1 (ko) 데이터 압축 장치 및 방법, 데이터 압축 장치를 포함하는 메모리 시스템
US10305512B2 (en) Encoding method and apparatus
US10452297B1 (en) Generating and optimizing summary index levels in a deduplication storage system
JPH07114577A (ja) データ検索装置、データ圧縮装置及び方法
US8677079B2 (en) Selecting a position where data is stored
CN105791828B (zh) 二进制算术编码器及其编码方法
Ledwon et al. High-throughput FPGA-based hardware accelerators for deflate compression and decompression using high-level synthesis
CN103283149B (zh) 用于处理数据元素序列的装置和方法
US7109895B1 (en) High performance Lempel Ziv compression architecture
CN103117748B (zh) 一种bwt实现方法中对后缀进行排序的方法及系统
US9455742B2 (en) Compression ratio for a compression engine
US11777518B2 (en) Data compression device, memory system and method
US12001339B2 (en) Dictionary compression device and memory system
US20230289293A1 (en) Dictionary compression device and memory system
US20210157485A1 (en) Pattern-based cache block compression
CN118132730A (zh) 一种数据查询方法、系统、装置、设备、可读存储介质
CN105740058A (zh) 一种数据转换方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant