Вы находитесь на странице: 1из 56
United States Patent 11) Welch (1) Patent Number: [43]_Date of Patent 4,558,302 Dec. 10, 1985 [54] HIGH SPEED DATA COMPRESSION AND DECOMPRESSION APPARATUS AND ‘METHOD [75] Inventor: Terry A. Weleh, Concord, Mass. (73] Assignee: Sperry Corporation, New York, N-Y. [21] Appl. No: 505,638 22] Filed: Jum, 20, 1983 [51] Imas.. sess GOR 8/00 [2] Us.a. 23407347 DD; 235/310 58) Feld of Search 340/347 DD; 235/310, 235/311; 364/200, 900 (56) References Cited US. PATENT DOCUMENTS 4464650 8/1984 Eastman coco OTHER PUBLICATIONS Ziv, “IEEE Transactions on Information Theory”, TT-24-5, Sep. 1977, pp. 530-537, Ziv, “IEEE Transactions on Information Theory’ TT-23-3, May 1977, pp. 337-348, Primary Examiner—Charles D. Miller ‘Auiorey, Agent, or Firm—Howard P. Terry; Albert B. Cooper (71 ABSTRACT ‘A data compressor compresses an input stream of data character signals by storing in a string table strings of data character signals encountered in the input stream, ‘The compressor searches the input stream to determine sw 0/347 DD the longest match toa stored string. Each stored string comprises a prefix string and an extension character ‘here the extension character isthe last character in the string and the prefix string comprises all but the exten- sion character. Each string has a code signal associated therewith and a string is stored in the string table by, at least implicitly, storing the code signal for the string, the code signal for the string prefix and the extension character. When the longest match between the input data character stream and the stored strings is deter- ‘mined, the code signal for the longest match i transmit- ted as the compressed code signal forthe encountered string of characters and an extension string is stored in the string table. The prefix ofthe extended string is the longest match and the extension character of the ex- tended string is the nest input data character signal following the longest match. Searching through the string table and entering extended strings therein is effected by a limited search hashing procedure. Decom- pression is effected by a decompressor that receives the ‘compressed code signals and generates a string table similar to that constructed by the compressor to effect Tookup of received code signals 0 as to recover the data character signals comprising a stored string. The 39041S 3009 "577 or uBLOVHVHO 083z o— bk oe eo 3009 Y31SI934 yaisioay _ 0 SHBLOVYVHO 4nd1nd 4agNNAN 3009 yalovavHo} op” LndNi rz — Pa fee (£1 WON) GNYWWOo, g2= BuvdWOO NOILONNA HSVH jo HSVH 1x3N j———— (7 wows) ANIVA LNYLSNOD°——— f » LI 62 ee 3009 XId3¥d /*X— (£7 WON) ONVWWOD 311M o—s} (I WON4)o— QNVWNOO Ova wea ONYWWOD HSVH M3N g2=3NTWA ee AINVISNOO 92 (ef WOys) GNVWWOD LNNOS ouaz STAVL ONIMIS Bz \ ssa3uaav wv SE. 4,558,302 Sheet 3 of 9 U.S. Patent Dec. 10, 1985 el 0 Tis viva viva £ ola 10018 aw a ‘Zl © F80N1S VL LAINE sudwoogg BY | Seg — — saowis yossaydWwooaG oe sles ~ See (neon 7OuLNOD —— [8% __ | ee SY3LOVYVHD -—_———_—— ans eae. —_o 4indino 88 Ge eS be al wBLNIOd ea ee 04aZ o—my BATS re — 1 os Seaudduet ones z= mM agar Sioau fo 3009 NOILVOOT «7 2 waday -— 193130 faleesana nani oyazZo———,—»| SS3yNGav ' oF i ea) 09 8 lag | ag C1 ouazo——f— 42 | 1 = T3A37 3LOVEVHO NOILONAS auvawoo Lice > tae || isv1 [ei] HSvH oo eee adie ig J “LL (£5 WOM) sl } a ml 18) 79° 1 ee faencs t HSWVH Te L 6L£ 24 of ea ouazZ 1 jOW3Z« 1 ge l (£5 WOU) ¥ yiI~08 ‘GNVWINGO od HSWH 2 man | z = aaa! waLOvEWHO |3q09 xIgaud 8 66 3 (£9 WOSS) GNVWINOD 3LINM | n (66 WOU) GNYANOD ava¥o—a| ! ! o oh oo Sega FSV. ONINLS uaLNnoo 3 cs io NOLLYZITVILLIN| caus uaz 4,558,302 Sheet 4 of 9 U.S. Patent Dec. 10, 1985 ‘bv Old b ‘914 40 nose swo7a THY OL a a ayNoIs LE oo _ sav tivay andino 4 | wyomian | | wr gm “v0 TWidas J] LIS _, 3a0u1s tir | Puen on™ pee ee ar | ver | | eee eIr 62T ee Hi on azis undar uaisio3y yaisioay |” \ sua.ovEvHo 3009 po yagwinN-3d09 ;> | | | fuaLovavHo "LN | oer | ry | > ear I | zer oi? |~92T (ert Wows) (ez ous) | cue I 1 GNVWNOO INVNOD o— le—oHSVH Lx3N 4Nn0o Soe eee auvawoot, | | L ee ouazo—>| . ee [Meer | —ole77, woud) ~ ‘aNVWWOO. fe _| eer i Ger Loo UT et lar iE get >) 9 | Suaz ee zzz HSVH MGN t=2 | | > e2t~ | aoalza fp z | J | St peer 2er 3009 ONIHS 13009 xI4aNd #K—] & h-2er 2 ONS | 3 ae (eT Wows) (£77 WOYS) GNVWNOD 3LIuMo—| ' B u3LNNOD gNnOo NowvZrViLiNt (ETT WO4S) ANVWNOD Gv3¥o—>| we ouaz ter J1@VL ONIILS ost ter? 4,558,302 Sheet 5 of 9 U.S. Patent Dec. 10, 1985 3aON1S viv AndlnO ger. (€ST WOYA), dOd? | (€ST WO), Hsnd' sualov —uvHO Andino WOWLS S ‘Old suoo1a TV OL yossaudWo0ad sort} (et _ 2st) aviv Ist £8 (€S7 WOuS) ‘GNYNWOD ALISA o>} (£51 WOYS)0—>} ‘ONVNINOD YALOVHVHO |3009 x143ud 1 wa ssayqay Wa ava Zp TIBVL ONTYLS (£6 WO'S) ONYAWOD Nn090——-» = viva sat L ot uaz 493130 C TU oar EO 09 | Nzer Pear [2ST | fous: ~[SOMIBN L,_ LOAN J L3IHS PT Wwesas ast" ¥ Ost auvaiNoo ald lyor azis f*L__3009 a. 2b x a o 7 BL a 10. Ww nae 13. he 150 18s m tor 15s 202 2b 220 23. 2 25. zat an Ree 2. 305 Mt Be 33. se Bs ee x Be 350 a an eae U.S. Patent Dec. 10,1985 Sheet6of9 4,558,302 ¢ c SUBROUTINE COMP CIBUFAy NAy TGUFB, NB? PuRPose CONVERT CONSECUTIVE 9 BIT STRINGS TO CONSECUTIVE 12 B17 StRINGS USAGE 0 100 120 130 130 220 330 «00 CALL COMP CIBUFAy Ay IBUFH, NBD Input IBUFA © INPUT BUFFER CONTAINING CONSECUTIVE 9 B1T STRINGS. NA © NOs OF CONSECUTIVE 9 BIT STRINGS STARTING AT IEUFA. ‘ouTPUT BUFR = OUTPUT BUFFER CONTAINING CONSECUTIVE 12 BIT STRINGS. NE © NO. OF CONSECUTIVE 12 BIT STRINGS STARTING AT IBUFE. DIMENSION TBUFACI), ITABLEC&C96), TOUFBC1) DATA TFILL (5127 NCHAST @ Input CHARACTER COUNT NBs 2 outeuT iNoEx O10 151, 4095 TTABLECIDSTFILL NODENO=1B1TSG CIBUFACTD, 94 1) NCHAENCHAST IF (HCHA sGT« MAD 60 TO 460 NOWCHR=LGITSG CLBUFACT)» 9» NCHAD LOC=x0R ((511-KOWCHR} #5, NODEKOD +1 net IF (LOC ates $13) 60 To 189 IF CITASLECLOC) eME. NODENOD GO To 130 NODENO=LOC~1 60 To 100 IF CITABLE (LOC) sE@. IFILL? GO TO 200 Nenet IF 4 .3T, 7) 60 TO 360 LOC#MOD CXOR(Z4NODEND, 1365)+L0C-1, 4096241 60 to 120 ITABLE (LOC) =NODENO CALL ISITSP (C1BUFECIDy 125 NBy NODENO? ONCHR. 60 70 160 CALL ISITSP C1BUFBCID, 12, NB, MODENOD RETURN END U.S. Patent Dec.10,1985 Sheet 70f9 4,558,302 ae So: ste S20 53: 54s 55: 56. 57: 5B. 10 100 120 130 200 210 ais 8 220 225 519 SUBROUTINE DECOMP (IEUFB, NBy TEUFAy NAD CONVERT CONSECUTIVE 12 BIT STRINGS TO OUTPUT BIT STRINGS IBUF6 = INPUT BUFFER CONTAINING CONSECUTIVE 12 BIT STRINGS, NB = NOs OF CONSECUTIVE 12 GIT STRINGS STARTING AT 14UF IBUFA = OUTPUT GUSFER CONTAINING CONSECUTIVE NBITSA BIT STRINGS» NA © NOs OF CONSECUTIVE NEITSA BIT STRINGS STARTING AT TBUFA. DIMENSION 1BUFB(1), ITABLECKO96), IBUFAC1) DATA NSITSA /9/ NeMa=t NAST O10 1-14 4096 ITABLE C= NOCODE=IGITSG(TBUFBC1), 125 NCHS? ICHAR=NOCODE CALL IS1TSP C1EUFAy NBITSAy WAy ECHARD Nopotb=nocone tevou NCHBENCHB*T IF (CHB .GT. NB) GO TO 519 BITSGCIGUFB(1), 125 NCHBD ODENO 60 To 210 IF CITABLECNODENO1) NE. OD 60 TO 130 LEVEL=LEVOLD CALL IB1TSP CIEUFAy NEITSAy NASLEVEL4T, TCHARD NODENO=NODOLD. 60 To 200 LEVEL=B1TSCITABLECODENO#19y 13 179 IF (HODENO sLE~ $12) 60 TO 210 INDEX=B1S CLTABLE(NODENO* 15 134 12) ICHAR=B17S CITABLE(NODENO#1, 255 NEITSAD CALL 1817S CIBUFAy NEITSAy INDEXSNA+T, TCHARD NODENO=5ITS CITABLE (NODENO*IDy 14 12) 60 To 200 TCHAR=NODENO CALL I8ETSP CIBUFAy NBITSAy NAST, ICHARD wet LOC=xoR((S11=1CHARD #2, NODOLDI+T I (LOC «LEs $13) 60 TO 218 IF CATAGLECLOC) «Ea, 09 60 TO 220 ened IF (W261. 7) Go 10 225 Loc#nod(xOR (ZeNODOLDy 1365)¢LOC=1, 4096241 60 To 215 BITSCATABLE (LOCDy 1) 12)=NODOLD BITSCITABLE (LOC), 25y NBITSAI=ICHAR BITSCITASLE (LOC), 13, 12)=LEVOLD NODOLO=nOCODE. LEVOLD=LEVEL+1 NASNASLEVEL#1 0 To 100 RETURN END FIG.7.

Вам также может понравиться