CN101803203B - Optimized data stream compression using data-dependent chunking - Google Patents

Optimized data stream compression using data-dependent chunking Download PDF

Info

Publication number
CN101803203B
CN101803203B CN200880107012.7A CN200880107012A CN101803203B CN 101803203 B CN101803203 B CN 101803203B CN 200880107012 A CN200880107012 A CN 200880107012A CN 101803203 B CN101803203 B CN 101803203B
Authority
CN
China
Prior art keywords
data
data chunks
signature
code sequence
byte code
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.)
Expired - Fee Related
Application number
CN200880107012.7A
Other languages
Chinese (zh)
Other versions
CN101803203A (en
Inventor
N·Y·阿伯多
N·S·伯杰纳
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN101803203A publication Critical patent/CN101803203A/en
Application granted granted Critical
Publication of CN101803203B publication Critical patent/CN101803203B/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method

Abstract

Systems and methods for compression of data to be transmitted are described. A data stream, such as a byte code sequence, is partitioned into one or more data chunks. The data chunks can be associated with an identifier, such as a signature that differentiates one data chunk from the other. Thus, different data chunks would be identifiable through different signatures. The data chunks associated with the signatures can be compared with a repository or a history buffer. The history buffer includes a collection of previously transmitted data chunks each associated with their respective signature.

Description

The optimized data stream compression of usage data dependent chunking
Background
Usually, the system based on calculating of interconnection sends mass data between itself.Computing equipment can be communicated by letter data (sending and receiving) as a whole, but maybe can segment data into the administrative section that allows efficient and feasible transmission.For providing data from one such as computing equipments such as servers to another equipment (for example, client devices), data can be sent as stream.The fluidisation of data provides the function of increase, to allow quickly receive data of user.In the situation that there is not fluidisation, client devices may experience delay before whole data can be present in the client place.
Equipment (for example, server) can send data by the compression form.Compression causes the effective fluidized of data on network between one or more equipment.For example, the network that comprises server apparatus and one or more client devices can have limited bandwidth.This bandwidth may be limited in the amount that sends to the data of client devices in the special time amount from server.By compression fluidisation data, can also therefore improve at any one time the effectiveness of fluidisation data by low-bandwidth network transmission more data.
By can using for the various technology that realize data compression such as agreements such as RDPs (RDP) of Microsoft's exploitation.These technology depend on that demand can be that diminish or harmless.These technology have reduced the bandwidth use by the fluidisation data.
General introduction
Provide this to summarize to introduce the concept that realizes the stream Real Time Compression.These concepts will further describe in the following detailed description.This general introduction is not intended to identify the essential feature of theme required for protection, is not intended to for the scope that helps to determine theme required for protection yet.
In one embodiment, come to carry out compression at the byte code sequence of data flow by byte code sequence being divided into data chunks.One unique signature is associated with data chunks.The signature of data chunks is compared with the signature of before storage.Can further carry out scanning to determine matching length on the data chunks of coupling, this length may extend to longer than chunk sizes.
The accompanying drawing summary
Detailed description is described with reference to the accompanying drawings.In the accompanying drawings, the accompanying drawing that this Reference numeral of leftmost Digital ID occurs first in the Reference numeral.In each accompanying drawing, indicate identical feature and assembly with identical label.
Fig. 1 illustrates the block diagram for the example architecture that realizes Real Time Compression.
Fig. 2 illustrates the block diagram of the exemplary computer system that realizes Real Time Compression.
Fig. 3 (A), 3 (B) and 3 (C) illustrate the flow chart for the illustrative methods that realizes the fluidisation Real Time Compression.
Fig. 4 illustrates the block diagram of exemplary universal computing environment.
Describe in detail
The system and method that is used for realizing the fluidisation Real Time Compression has been described.As mentioned above, can be by realize the communication of the data between one or more equipment based on calculating via the connecting media fluidisation data between the communication equipment.For example, but the client computer request server with visit data.Can send data with the form of fluidisation data to the user by network.Can before sending data, compress these fluidisation data.
As example, in the situation that realize such as agreements such as RDPs (RDP), can minimize with the batch compress technique size of the data that send by network.Data can be sent as grouping.Can send compressed packet to intended destination.Be located in purpose, the data of compressed packet to reduce in the compressed grouping can decompress.Do not carry out in the situation of compression therein, send data with unpressed form to the destination, and can be the compression of subsequent data packet executing data.
For this reason, system can comprise one or more modules of the packet that will send for compression.These modules can will be divided into one or more data " chunk " such as input traffics such as byte code sequences.In one realized, the size of data chunks was adjustable.Particularly, the mean size of chunk is adjustable, but chunk length do not fix, and mean size decides the chunk chunk algorithm initial or ending of where placing in data flow to determine by the characteristic based on the data in the stream itself.Data chunks can be associated with the identifiers such as signature such as the differentiation data chunks.Therefore, the different pieces of information chunk can sign to identify by difference.The data chunks with signature is associated that can be called interchangeably " signed data chunk " can be compared with storage vault or history buffer.History buffer comprise separately that signatures corresponding to it all be associated before the set of the data chunks that is sent out.Based on the comparison, can change the input data comprising corresponding to the quoting of similar data chunks, rather than the bytecode of data chunks itself.Therefore, the part of input traffic can be quoted as the one or more of comparison that have based on the data chunks of obtaining from history buffer, be sent together with the stream of a series of bytecodes that in history buffer, do not have Corresponding matching.Therefore the more greatly I of history buffer causes searching for preferably.
In addition, history buffer and corresponding memory spending thereof are adjustable.Because limited size and the memory spending thereof of history buffer; And the slow search speed that the needs that check owing to the basis by every byte cause, technology before is conditional.For example, each byte that takies history buffer will need the memory spending of extra nybble.In current instant situation, the size of history buffer and memory spending is adjustable, and for example, the history buffer of 600KB size can have the memory spending of 2MB.
In one realized, described compress technique also can be appended another auxiliary compression module.Handle this auxiliary compression module to collect the approaching coupling between corresponding data chunk and the signature that is stored in the data chunks in the history buffer.Even the compression algorithm of better quality (that is, auxiliary compression round or module) can be processed whole data, this type of chunk compression based on signature also can be used as for the Lempel-Ziv of better quality or the preprocessor of similar compression algorithm.This can be applicable to such as in the real-time sensitive applications such as RDP.Should be appreciated that, Lempel-Ziv only is illustrative methods.Can adopt such as other algorithms such as Burrows-Wheeler, wherein this type of algorithm is the high-quality algorithm of obtaining based on the maximum compression of its encoding scheme, and is relative with the described method based on chunk of not doing like this.Can be with different computing systems, environment and/or the Configuration of any number, the embodiment of descriptive system analysis and management in the context of following system architecture although relate to the each side of the described system and method for realizing the different themes Phrase extraction.
The example architecture that is used for Real Time Compression
Fig. 1 illustrates the exemplary computer system 100 that realizes the fluidisation Real Time Compression.Computer system 100 comprises server computing device 102, network 104 and one or more equipment or client devices 106 (1)-(N) based on calculating.Server computing device 102 and client devices 106 (1)-(N) can comprise personal computer (PC), web server, e-mail server, home entertainment device, game console, set-top box and any other equipment based on calculating as known in the art.Client devices 106 (1)-(N) can be collectively referred to as client devices 106.
In addition, computer system 100 can comprise any amount of client devices 106.For example, computer system 100 can be company's network, comprises thousands of the PC of office that spread all over some countries, various server and any other equipment based on calculating.Perhaps, in another possible realization, system 100 can comprise the home network with a limited number of PC that belongs to single family.Client devices 106 can come coupled to each other according to various combinations by the wired and/or wireless network that comprises LAN, WAN or any other networking technology known in the art.
Server computing device 102 can be provided for the Terminal Service of remote application.But the one or more application programs that can carry out thereon of server computing device 102 main memories.When carrying out, server computing device 102 can send to one or more in the client devices 106 by network 104 output of will being correlated with.The example of computer 100 includes but not limited to the system based on RDP.Server computing device 102 can be known as server 102.
Server computing device 102 comprises memory 108.Memory 108 further comprises compression module 110 and signature blocks 112.Compression module 110 compression will send to any data the client devices 106 from server computing device 102.The data that generate are to carry out the result of the one or more application programs that exist on the server computing device 102.Can with client devices 106 in any or a plurality of mutual or carry out application program on the server computing device 102 when receiving from any or a plurality of order in the client devices 106.
One or more data chunks that can be divided into compression module 110 by the data that will send realize compression.Usually, data can be expressed as a series of bytes.Therefore in the data chunks each is corresponding to one or more parts of byte code sequence.In one realized, compression module 108 was carried out division based on the data that are included in the input traffic.
For purposes of discussion, the relevant chunkization of local content can represent only based on local message data flow to be divided into the method for chunk.In other words, the value of byte of the fixed qty on the left side of boundary position and right side can only be depended in the position on the chunk border in the data-oriented stream.
The meaning of local (that is, data are relevant) chunk method is to have guaranteed only will have the chunk that equates in data flow different on the content of the first byte except the first chunk.This is convertible into the chunk that does not line up in the position of resisting in the data flow.
Using the meaning of chunk and signature thereof is to carry out relatively less searching (that is, hash table) by byte.Because chunk is made of some bytes, each chunk is once searched, and searches so average every byte will be less than a hash table.Perhaps, chunk sizes can be (for example, 16) of fixing and be sliding window (for example, 16 bytes) compute signature, and makes as each byte and show to search.This has allowed to seek the every a pair of ability of coupling 16 byte chunks, but may need every byte once to show to search, and stands higher computing cost.The compression of the relevant chunk of based on data does not have this type of computing cost.
Below be for the example that realizes the relevant chunk of data.Scope h=16 and window size w=16 fix.The sequence of every w (16) byte is used as 128 bit numbers, and (16 * 8=128) treat.Make that B is the buffering/stream of byte.B[I:J] expression is from the subsequence of the byte that begins and finish at J with I of B.If sequence B [I+h-w:I+h-1] when being interpreted as numeral greater than all 2h on left side and right side digital B[I-w:I-1] ... B[I+2h-w:I+2h-1], position B[I+h-1 then] be the chunk border.Can realize for the highly effective algorithm of determining the chunk border based on definition.
After data are divided into data chunks, signature blocks 112 with these data chunks be associated such as index such as signatures.The attribute of signature blocks 112 data flow-baseds will be signed and be carried out related with the variable-size data chunks.Therefore, distinguish the data chunks with different signatures.Similar signature can be indicated data chunks is comprised similar byte data within it.Can with the signed data chunk store externally in the storage vault as data structure.Data structure can comprise points to the pointer that is stored in the one or more data chunks in the history buffer.The data flow that sends can be represented as with one or more index a series of bytecodes intermittently, and wherein these index are associated with corresponding bytecode.
The each side that data byte is divided into one or more data chunks and compressed data stream is described in more detail with reference to figure 2.
Example server device
Fig. 2 illustrates the relevant exemplary components of server computing device 102.The server computing device 102 that is called as server 102 can comprise one or more processors 202, network interface 204, input/output interface 206 and memory 108.Processor 202 can comprise microprocessor, microcomputer, microcontroller, digital signal processor, CPU, state machine, logical circuit and/or based on any equipment of operational order operation signal.Processor 202 is configured to fetch and carry out the computer-readable instruction that is stored in the memory 108, and has other ability.
Network interface 204 allows server 102 to communicate by letter based on the equipment (for example, client devices 106) that calculates by network 104 and other.Network interface 204 can comprise for a plurality of computing equipments being connected to each other or being connected to one or more ports of server computing device.Network interface 204 can be convenient to various network and interior the communicating by letter of protocol type, includes spider lines (for example, LAN, cable etc.) and wireless network (for example, WLAN, honeycomb, satellite etc.).
Input/output interface 206 is provided for the input-output function of server 102.Input/output interface 206 can comprise for the one or more ports that connect such as a plurality of input equipments such as keyboard, mouse and a plurality of output equipments such as monitor, loud speaker.In one realizes, server 102 via the keyboard that connects by input/output interface 206 or mouse receive from the user such as input data such as application component descriptions.
Memory 108 can comprise any computer-readable medium known in the art, for example comprises volatile memory (for example RAM) and/or nonvolatile memory (for example, flash memory).As shown in Figure 2, memory 108 also can comprise program 208 and data 210.Program 208 comprises for example compression module 110, signature blocks 112, auxiliary compression module 222 and other application program 212.Other application program 212 comprises the program such as the application program on the additional equipment based on calculating such as application program update.Data 210 comprise for example signature database 214, history buffer 216, data chunks 218 and other data 220.
The compression that compression module 110 is realized input traffics sends to arbitrary or a plurality of the client devices 106 for information from server 102.The transmission of data can be used for realizing the application program based on RDP.Although some are based on the application program that realizes RDP certain in the example described herein, this type of technology also may be used on other environment.For this reason, compression module 110 is divided into one or more data chunks with data flow.Data chunks can be variable byte length, maybe can be fixed byte length.
For example, server 102 receives following byte code sequence as the part of input traffic, for sending to named place of destination from a source:
4?5?9?7?4?5?6?3?9?4?5?1?4?6
Bytecode above can be variable-length.In one realized, the data flow that can send was stored in the history buffer 216.Add data to history buffer 216.In case be added, data can be sent to compression module 110.Compression module 110 is divided into one or more data chunks 218 with data flow.Get back to example as implied above, byte code sequence can be divided into two parts, be called as 4597456 of chunk A; And be called as 3945146 of chunk B.Chunk A and B can be stored in the data chunks 218, and be shown in this example the bytecode with equal amount.Input traffic can be divided into any amount of data chunks of the bytecode that can comprise variable number and not deviate from the scope of theme required for protection.Bytecode in each data chunks 218 is corresponding to the bytecode that is included in the input traffic.In one realized, the average length of the bytecode in the data chunks 218 can be 16 bytes.
Can realize the wherein mode of the division of executing data stream with any technology as known in the art.In one realized, the division of being carried out by compression module 110 came data stream is divided based on the bytecode pattern that occurs before existing in the byte code sequence that occurs before.Generally speaking, compression is based on the observation that there is many redundancies.Dividing is not very to be tied to redundancy, but is tied at the algorithm of " stablizing " being selected identical cutpoint based on similar data pattern.Send redundant data and can cause expense, and then affect systematic function.And divide, but wherein finish the content of the some data flow-based that is called as cutpoint of division itself in data flow.In another was realized, even similar bytecode is centered on by different bytecode patterns, compression module 110 also produced similar data chunks for similar bytecode.In one realized, compression module 110 was divided data stream based on one of each known block identifier (chunker) function.So compression described in the example is carried out by the basis of every data chunks rather than by the basis of foregoing every bytecode.
From the data chunks 218 that the division to byte code sequence of being undertaken by compression module 110 is obtained, namely chunk A and B are associated with signature.In one realized, signature blocks 112 was associated data chunks 218 with signature.Signature blocks 112 is assessed this signature based on the bytecode that is included in the data chunks 218.In one realized, signature blocks 112 was by assessing signature to data chunk 218 usefulness hashing algorithms.Can be with the signed data chunk store in signature database 214.In one realized, signature database 214 was to keep the signed data chunk together with hash table in the memory of the side-play amount of data chunks 218.The signed data chunk that is stored in the signature database 214 also can be corresponding to before serviced device 102 compressions and the data chunks that sends.
The signed data chunk of signing chunk A and B and store is compared.As mentioned above, the signed data chunk of storing is corresponding to the data that have been sent out before.Can handle signature blocks 112 compares the signature of chunk A and B and the signature corresponding to the data chunks that sends before of storing.Also can be by assessing the signature that is associated with the data chunks that is sent out before such as the known technologies such as module with hashing algorithm.
By the similar degree between the data chunks of relatively determining chunk A and B and sending before of signature blocks 112 execution.For example, if one or more data chunks and the signature separately of data chunks before are similarly, then can think the one or more data chunks and before data chunks coupling.Incomplete same but similarly data chunks can be construed to similar data chunks, can indicate the larger similar degree between one or more bytecodes of input traffic and be not only similar bytecode in one or more data chunks.
Signature blocks 112 is listed has the data chunks 218 that is similar to corresponding to the signature of the signature of the chunk of the bytecode of input traffic, such as chunk A and B.Do not have any data chunks 218 of similarly signing with the data chunks of considering (for example, chunk A or B) if signature blocks 112 finds, then the mode by not change sends its corresponding bytecode,, literally sends to output buffer that is.In one realizes, listed data chunks can be stored in the data chunks 218.
For have with the data chunks 218 of signing like chunk A or the category-B in each, the scan matching candidate is with the similar degree between the data chunks 218 of one of finding out among chunk A or the B and be found to have similar signature associated with it.For example, but compression module 110 scan matching candidates to find out the similar degree between the data chunks 218.Should be noted that the similar degree of signature is owing to the similar degree in the bytecode pattern occurs.As example, the signature of data chunks A when some part of its byte code sequence and the byte code sequence of another data chunks is identical and this data chunks similar.Therefore, in scanning, compression module 110 carry out matching candidates byte code sequence scan forward and backward determined whether to exist in the first-class data chunks such as data chunks 218 than large model.The gained of data chunks partly is the larger byte code sequence that is called as matching length, and it is matched with corresponding to the byte code sequence in the data chunks 218 of inlet flow.Matching length can be stored in other data 220.
In aforesaid mode, by carrying out the set that above technology is obtained Different matching length for a plurality of chunks.In one realized, the quantity of searching for for the chunk that obtains the matching length set can be subjected to a threshold restriction.For example, but compression module 110 scan matching candidates' set to obtain the matching length set that has with the matching length of threshold value equal amount.Should be noted that in the application based on RDP, data flow is so that exist the matched data chunk to form the very high possibility of the part of much bigger coupling segmentation.Therefore, only check that the coupling chunk will allow to seek the byte sequence that comprises the coupling larger than chunk itself.
Matching length in the Optimized Matching lengths sets is to select the best of breed of coupling.The needs of generation to optimizing because certain in the matching length some can have the part overlapping with other matching length.In one realizes, can use " greediness " as known in the art algorithm to come the Optimized Matching lengths sets.For example, got rid of the matching length that is included in fully in another matching length.Other mechanism as known in the art also can be used for the Optimized Matching lengths sets.
In case obtained optimum Match length, compression module 110 generates the tabulation that the output conduct comprises matching length, copies offset tuple and byte code sequence.Byte code sequence is that it is not found those of matching candidate with similar signature.Matching length also comprises the position of the byte that indication is replaced and the attribute of quantity in input traffic.In one realizes, align with the bytecode of safeguarding subsequent byte code sequence in the situation that generate the output of compression module 110 without any the position encapsulation.To be delivered to by the output that compression module 110 generates auxiliary compression module 222.Auxiliary compression module 222 can be used for determining approaching and shorter length coupling of compressed module 110 ignorance of possibility.The example of auxiliary compression module includes but not limited to by Microsoft
Figure GPA00001052914200091
The compressor reducers such as MPPC compressor reducer, RDP batch compressor reducer of company's exploitation.
Illustrative methods
The illustrative methods that is used for realizing the fluidisation Real Time Compression has been described with reference to Fig. 1 and 2.These illustrative methods can be described in the general context of computer executable instructions.Generally speaking, computer executable instructions can comprise the routine carrying out specific function or realize specific abstract data type, program, object, assembly, data structure, process, module, function etc.These methods therein function by realizing in the distributed computing environment (DCE) of finishing by the teleprocessing equipment of communication network link.In distributed computing environment (DCE), computer executable instructions can be arranged in the local and remote computer-readable storage medium that comprises memory storage device.
Fig. 3 (A), 3 (B) and 3 (C) illustrate the exemplary process diagram 300 of describing by residing in the fluidisation Real Time Compression that one or more program modules on the computing equipment (for example, any in the client devices 106 or a plurality of) or agency realize.
The order of describing each method is not intended to be interpreted as restriction, and any amount of described method frame can make up to realize each method or realize replacement method by any order.In addition, can from method, delete each frame, and not deviate from the spirit and scope of theme described herein.In addition, this method can make up to realize with any suitable hardware, software, firmware or its.
At frame 302, input traffic can be received as byte code sequence.For example, compression module 110 can receive byte code sequence as be intended to from such as sources such as servers 102 to such as the one or more parts that wait the input traffic of destination transmission the client devices 106.Usually, the fluidisation data can be sent as series of data packets.In the packet each comprises the data of using the byte code sequence form.In one realizes, add byte code sequence to history buffer 216.Also can use sliding window mechanism that byte code sequence is contained in the history buffer 216.
At frame 304, byte code sequence can be divided into one or more data chunks.For example, compression module 110 can be divided into byte code sequence two data chunks, such as chunk A and chunk B.Bytecode in each data chunks 218 is corresponding to the bytecode that is included in the input traffic.In one realized, the average length of the bytecode in the data chunks 218 can be 16 bytes.Can realize the wherein mode of the division of executing data stream with any technology as known in the art.In one realized, the division of being carried out by compression module 110 came data stream is divided based on the bytecode pattern that occurs before existing in the data flow that occurs before.Can be with data chunks (chunk A and B) as data chunks 218 storages.
At frame 306, signature can be associated with data chunks.For example, signature blocks 112 can be associated signature with data chunks A and B.Signature blocks 112 is assessed this signature based on the bytecode that is included in the data chunks 218.Signature blocks 112 is by assessing signature to data chunk 218 usefulness hashing algorithms.Can be with the signed data chunk store in signature database 214.
At frame 308, will compare with the stored signature of the data chunks of being communicated by letter before corresponding to the signature of the data chunks of input traffic.In one realized, signature blocks 112 was compared the signature of chunk A and B with the signature from the data chunks of transmission before storing.Similar degree between the data chunks of this relatively more definite chunk A and B and before transmission.Can determine to have the chunk of high coupling possibility.Incomplete same but similarly data chunks can be considered, be not only the similar bytecode in one or more data chunks because similar data chunks can indicate the larger similar degree between one or more bytecodes of input traffic.Signature blocks 112 do not find have with the data chunks of considering (as, chunk A or B) similarly in the situation of any data chunks 218 of signature, launch its corresponding bytecode by the mode of not change, that is, literally send to output buffer.
At frame 310, determine to be called as the sequence of the bytecode of matching length.Should be noted that coupling indication between the signature of data chunks of the signature of data chunks of input traffic and the data that send before can have the code sequence that is similar in the input traffic yard larger bytecode segmentation.In one realizes, compression module 110 carry out matching candidates byte code sequence scan forward and backward to determine in the first-class data chunks such as data chunks 218, whether to exist than large model.The gained of data chunks partly is the larger byte code sequence that is called as matching length, and it is matched with corresponding to the byte code sequence in the data chunks 218 of inlet flow.Matching length can be stored in other data 220.
In addition, the matching length in the Optimized Matching lengths sets is to select optimum Match to be combined the part of avoiding overlapping with other matching length in the matching length.In one realizes, can come the Optimized Matching lengths sets with greedy algorithm as known in the art.
At frame 312, generate the output of compression module.For example, compression module 110 generates output, and it comprises matching length, copies the tabulation of offset tuple and byte code sequence.Matching length also comprises the position of the byte that indication is replaced and the attribute of quantity in input traffic.Byte code sequence in the output is corresponding to not can be its data chunks of determining any coupling 218 from signature database 214.
At frame 314, the output that generates is delivered to auxiliary compression module for further compression.For example, compression module 110 is delivered to auxiliary compression module 222 with the output that generates.Assist compression module 222 to be used for the coupling of approaching and shorter length of determining that the compressed module 110 of possibility is ignored during the process of division and signature distribution.The example of auxiliary compression module includes but not limited to by Microsoft
Figure GPA00001052914200111
The compressor reducers such as MPPC compressor reducer, RDP batch compressor reducer of company's exploitation.
The example calculation environment
Fig. 4 shows exemplary general computer environment 400, and it can be used for realizing technology described herein, and represents in whole or in part element described herein.Computer environment 400 only is an example of computing environment, but not is intended to the scope of application or the function of cyber-net architecture are proposed any restriction.Computer environment 400 should not be interpreted into at the arbitrary assembly shown in the example computer environment 400 or its combination any dependence or requirement being arranged yet.
Computer environment 400 comprises the general equipment based on calculating of computer 402 forms.Computer 402 is such as being desktop computer, handheld computer, notebook or laptop computer, server computer, game console etc.Each assembly of computer 402 can include but not limited to: one or more processors or processing unit 404, system storage 406 and will comprise that each system component of processor 404 is coupled to the system bus 408 of system storage 406.
One or more in the bus structures of any some types of system bus 408 expression, the processor or the local bus that comprise memory bus or Memory Controller, peripheral bus, Accelerated Graphics Port and use any various bus architectures.As example, such architecture can comprise industry standard architecture (ISA) bus, MCA (MCA) bus, enhancement mode ISA (EISA) bus, Video Electronics Standards Association's (VESA) local bus and peripheral parts interconnected (PCI) bus (being also referred to as interlayer (Mezzanine) bus).
Computer 402 generally includes various computer-readable mediums.Such medium can be by any usable medium of computer 402 access, to comprise volatibility and non-volatile media and removable and irremovable medium.
System storage 406 comprises the computer-readable medium such as volatile memory forms such as random access memory (RAM) 410, and/or such as the computer-readable medium of the nonvolatile memory forms such as read-only memory (ROM) 412.Show to comprise and help between such as the starting period basic input/output (BIOS) 414 of the basic routine of transmission of information between computer 402 interior elements, it is stored among the ROM412.RAM 410 comprises processing unit 404 usually can zero access and/or present data and/or the program module that is operating.
Computer 402 can also comprise that other are removable/computer-readable storage medium of irremovable, volatile, nonvolatile.As example, Fig. 4 illustrates be used to the hard disk drive 416 of reading and writing irremovable non-volatile magnetizing mediums (not shown).In addition, Fig. 4 illustrates for to removable, non-volatile magnetic disk 420 (for example, " floppy disk ") read-write disc driver 418, in addition, Fig. 4 illustrates the CD drive 422 of reading and/or writing for to removable, non-volatile CDs 424 such as CD-ROM, DVD-ROM or other optical medium.Hard disk drive 416, disc driver 418 and CD drive 422 are connected to system bus 408 by one or more data media interfaces 426 separately.Perhaps, hard disk drive 416, disc driver 418 and CD drive 422 also can and be connected to system bus 408 by one or more interface (not shown).
Disk drive and the computer-readable medium that is associated thereof provide non-volatile memories to computer-readable instruction, data structure, program module and other data to computer 402.Although this example shows hard disk 416, moveable magnetic disc 420 and removable CD 424, be appreciated that and store and also can be used to realize this exemplary computer system and environment, these media such as cassette tape or other magnetic storage apparatus, flash card, CD-ROM, digital versatile disc (DVD) or other optical disc storage, random access memory (RAM), read-only memory (ROM), Electrically Erasable Read Only Memory (EEPROM) etc. by the computer-readable medium of other type of the data of computer access.
Numerous program modules can be stored among hard disk 416, disk 420, CD 424, ROM 412 and/or the RAM 410, comprise operating system 426, one or more application program 428, other program module 430 and routine data 432 as example.Each such operating system 426, one or more application program 428, other program module 430 and routine data 432 (or its certain combination) can realize supporting resident assembly all or part of of distributed file system.
The user can be by input equipments such as keyboard 434 and pointing device 436 (such as " mouse ") to computer 402 input commands and information.Other input equipments 438 (not specifically illustrating) can comprise microphone, joystick, game paddle, satellite dish, serial port, scanner etc.These and other input equipment is connected to processing unit 804 by the input/output interface 440 that is coupled to system bus 408, but also can connect with bus structures such as parallel port, game port or USB (USB) by other interface.
The display device of monitor 442 or other types is also via being connected to system bus 408 such as interfaces such as video adapters 444.Except monitor 442, other output ancillary equipment can comprise assemblies such as loud speaker (not shown) and printer 446, and these assemblies can be connected to computer 402 by input/output interface 440.
Computer 402 can use to be connected in the networked environment to the logic of one or more remote computer (such as long-range equipment 448 based on calculating) and operate.As example, long-range equipment 448 based on calculating can be personal computer, portable computer, server, router, network computer, peer device or other common network node etc.Long-range equipment 448 based on calculating is illustrated as being included in herein with respect to many or whole elements of computer 402 descriptions and the portable computer of feature.
Logic connection between computer 402 and the remote computer 448 is depicted as local area network (LAN) (LAN) 450 and general wide area network (WAN) 452.Such networked environment is common in office, enterprise-wide. computer networks, Intranet and the internet.
When realizing in the LAN networked environment, computer 402 is connected to local area network (LAN) 450 by network interface or adapter 454.When realizing in the WAN networked environment, computer 402 generally includes modulator-demodulator 456 or is used for setting up other device of communication at wide area network 452.Modulator-demodulator 456 can be that computer 402 is internal or external, and it can be connected to system bus 408 by input/output interface 440 or other suitable mechanism.Network connection shown in being appreciated that is exemplary, also can adopt other means of setting up communication linkage between computer 402 and 448.
Such as in to the networked environment shown in the computing environment 400, program module or its part described with respect to computer 402 can be stored in the remote memory storage device.As example, remote application 458 resides on the memory devices of remote computer 448.For purposes of illustration, the piece that application program and here be illustrated as such as other executable program components of operating system disperses, but be appreciated that, such program and assembly and are carried out by the data processor of computer in the different time resides in different memory modules based on the equipment 402 that calculates.
Various modules and technology can be described in the general context of the computer executable instructions of being carried out by one or more computers or other equipment such as program module etc. herein.Generally speaking, program module comprises the routine carrying out specific task or realize specific abstract data type, program, object, assembly, data structure etc.Usually, the function of program module can make up in each embodiment or distribute as required.
The realization of these modules and technology can be stored on the computer-readable medium of certain form or the computer-readable medium transmission by certain form.Computer-readable medium can be can be by any usable medium of computer access.And unrestricted, computer-readable medium can comprise " computer-readable storage medium " and " communication media " as example.
" computer-readable storage medium " comprises storing such as any method of the information such as computer-readable instruction, data structure, program module or other data or volatibility and non-volatile, the removable and irremovable medium of technology realization.Computer-readable storage medium includes but not limited to, RAM, ROM, EEPROM, flash memory or other memory technologies, CD-ROM, digital versatile disc (DVD) or other optical disc storage, cassette tape, tape, disk storage or other magnetic storage apparatus, perhaps any other can be used for storing information needed and can be by the medium of computer access.
Perhaps, the combination of the each several part available hardware of framework or hardware, software and/or firmware realizes.For example, one or more application-specific integrated circuit (ASIC)s (ASIC) or programmable logic device (PLD) can be designed or be programmed for the one or more parts that realize this framework.
Conclusion
Be used for each embodiment that Real Time Compression is flowed in realization although used architectural feature and/or the specific language description of method, should be appreciated that the theme of claims is not necessarily limited to described special characteristic or method.On the contrary, these specific features and method are as disclosed for the exemplary realization that the stream Real Time Compression is provided.

Claims (18)

1. method that is used for the compressed byte code sequence comprises:
Described byte code sequence is divided into one or more data chunks, wherein said division be according to data flow and can select the average group block size;
With the signature with described data chunks in each carry out related;
Signature and the stored signature of described data chunks are compared to determine coupling;
The data chunks of scan matching is to determine matching length, and wherein matching length is the larger byte sequence of described data chunks;
Generation comprises the one or more output in the following: matching length, copy offset tuple and corresponding to the byte code sequence that does not have to determine for it data chunks of any coupling from described stored signature; And
Transmit the output generate to determine unheeded approaching and the coupling of shorter length of described division and scan period.
2. the method for claim 1 is characterized in that, by check before the set point in the data flow and the window of afterwards data to determine whether these data need to be come data flow is carried out division by chunk at this point.
3. the method for claim 1 is characterized in that, described association is used hashing algorithm to described data chunks.
4. the method for claim 1 is characterized in that, described relatively is that signature with the data chunks that is sent to before described byte code sequence carries out.
5. the method for claim 1 is characterized in that, described relatively more definite not coupling, and described byte code sequence literally is sent out.
6. the method for claim 1 is characterized in that, carries out described scanning with scanning forward and backward of described byte code sequence.
7. the method for claim 1 is characterized in that, comprises that also the Optimized Matching lengths sets is to avoid part overlapping with other matching length in the matching length.
8. method as claimed in claim 7 is characterized in that, described optimization comprises greedy algorithm.
9. the method for claim 1 is characterized in that, described data chunks and signature are the bases of the auxiliary compression round of high-quality high cost.
10. method as claimed in claim 9 is characterized in that, the auxiliary compression round of described high-quality high cost is based on the Lempel-Ziv scheme.
11. a system that is used for the compressed byte code sequence comprises:
Be used for described byte code sequence is divided into the device of one or more data chunks;
Be used for to sign and carry out related device with each of described data chunks;
Be used for signature and the stored signature of described data chunks are compared to determine the device of coupling;
Be used for the data chunks of scan matching to determine the device of matching length, wherein matching length is the larger byte sequence of described data chunks;
Be used for to generate the device of the one or more output that comprises the following: matching length, copy offset tuple and corresponding to the byte code sequence that does not have to determine for it data chunks of any coupling from described stored signature; And
Be used for to transmit the output that generates with determine divide and scan period the unheeded device that approaches the coupling of also shorter length.
12. system as claimed in claim 11 is characterized in that, described device for dividing is divided described byte code sequence based on the bytecode pattern that occurs before existing in the byte code sequence that occurs before.
13. system as claimed in claim 11 is characterized in that, described device for division is divided described byte code sequence based on piece identifier function.
14. system as claimed in claim 11 is characterized in that, describedly for associated apparatus described data chunks is used hashing algorithm.
15. a method that sends data between server and one or more client devices comprises:
The place is divided into one or more data chunks with byte code sequence at described server;
With the signature with described data chunks in each carry out related;
The signature of described data chunks is compared to determine coupling with the signature of storing; And
The data chunks of scan matching is to determine matching length, and wherein matching length is the larger byte sequence of described data chunks;
Generation comprises the one or more output in the following: matching length, copy offset tuple and corresponding to the byte code sequence that does not have to determine for it data chunks of any coupling from the described signature of storing;
Transmit the output generate to determine unheeded approaching and the coupling of shorter length of described division and scan period; And
Described output is sent to described one or more client devices.
16. method as claimed in claim 15 is characterized in that, based on the bytecode pattern that occurs before existing in the data flow that occurs before data flow is carried out described division.
17. method as claimed in claim 15 is characterized in that, carries out described scanning with scanning forward and backward of described byte code sequence.
18. method as claimed in claim 15 is characterized in that, described one or more client devices are emission literal or enter historical to copy the replication engine of the data chunks with the historical skew of coupling or length.
CN200880107012.7A 2007-09-14 2008-09-12 Optimized data stream compression using data-dependent chunking Expired - Fee Related CN101803203B (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/855,986 US8819288B2 (en) 2007-09-14 2007-09-14 Optimized data stream compression using data-dependent chunking
US11/855,986 2007-09-14
PCT/US2008/076267 WO2009036350A2 (en) 2007-09-14 2008-09-12 Optimized data stream compression using data-dependent chunking

Publications (2)

Publication Number Publication Date
CN101803203A CN101803203A (en) 2010-08-11
CN101803203B true CN101803203B (en) 2013-10-16

Family

ID=40452854

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880107012.7A Expired - Fee Related CN101803203B (en) 2007-09-14 2008-09-12 Optimized data stream compression using data-dependent chunking

Country Status (5)

Country Link
US (1) US8819288B2 (en)
EP (1) EP2198522B1 (en)
JP (1) JP5566888B2 (en)
CN (1) CN101803203B (en)
WO (1) WO2009036350A2 (en)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9372941B2 (en) 2007-10-25 2016-06-21 Hewlett Packard Enterprise Development Lp Data processing apparatus and method of processing data
US8140637B2 (en) * 2007-10-25 2012-03-20 Hewlett-Packard Development Company, L.P. Communicating chunks between devices
WO2009054827A1 (en) * 2007-10-25 2009-04-30 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
JP4960417B2 (en) * 2009-09-15 2012-06-27 株式会社東芝 Method and apparatus for determining start / end offsets of variable length data fragments
US8417039B2 (en) 2010-06-03 2013-04-09 Microsoft Corporation Motion detection techniques for improved image remoting
EP2490393B1 (en) * 2011-02-17 2013-07-17 Desoma GmbH Method and device for analysing data packets
US9344528B2 (en) 2011-08-31 2016-05-17 Microsoft Technology Licensing, Llc Data compressor using hints
US8874697B2 (en) * 2011-11-30 2014-10-28 Red Hat, Inc. Content download based on hashes
US8838826B2 (en) 2012-04-04 2014-09-16 Google Inc. Scalable robust live streaming system
US9178929B2 (en) * 2012-05-01 2015-11-03 Ericsson Ab Client-side class-of-service-based bandwidth management in over-the-top video delivery
US9628829B2 (en) 2012-06-26 2017-04-18 Google Technology Holdings LLC Identifying media on a mobile device
CN104718706B (en) 2012-08-21 2019-11-05 Emc 公司 The method and system of format identification for segmented image data
US8756237B2 (en) * 2012-10-12 2014-06-17 Architecture Technology Corporation Scalable distributed processing of RDF data
US20140149605A1 (en) * 2012-11-26 2014-05-29 Saravana Annamalaisami Systems and methods for dictionary based compression
US9582240B2 (en) * 2012-12-26 2017-02-28 Vmware, Inc. Using contextual and spatial awareness to improve remote desktop imaging fidelity
US9477682B1 (en) * 2013-03-13 2016-10-25 Emc Corporation Parallel compression of data chunks of a shared data object using a log-structured file system
CN104219102B (en) * 2013-05-29 2018-10-30 华为技术有限公司 A kind of methods, devices and systems of network data compression statistics
US9917882B2 (en) 2014-11-30 2018-03-13 Sonicwall Inc. Transparent deferred spooling store and forward based on standard network system and client interface
US10313486B2 (en) * 2015-01-07 2019-06-04 Sonicwall Inc. Optimizing transfer of fragmented packetized data
US9385749B1 (en) 2015-03-06 2016-07-05 Oracle International Corporation Dynamic data compression selection
US9813526B2 (en) 2015-05-26 2017-11-07 Sonicwall Inc. Reducing transmission pathway lengths within a distributed network
US9552384B2 (en) 2015-06-19 2017-01-24 HGST Netherlands B.V. Apparatus and method for single pass entropy detection on data transfer
US10152389B2 (en) 2015-06-19 2018-12-11 Western Digital Technologies, Inc. Apparatus and method for inline compression and deduplication
US10158735B2 (en) 2015-08-07 2018-12-18 Sonicwall Inc. Read-ahead on signed connections with unsigning, inline, transparent proxies
US10268537B2 (en) 2016-05-26 2019-04-23 International Business Machines Corporation Initializing a pseudo-dynamic data compression system with predetermined history data typical of actual data
US10002081B2 (en) 2016-07-05 2018-06-19 Intel Corporation Apparatus for hardware implementation of heterogeneous decompression processing
US10324805B1 (en) * 2016-10-03 2019-06-18 EMC IP Holding Company LLC Targeted chunking of data
US10721300B2 (en) * 2017-06-02 2020-07-21 Arc Document Solutions, Llc System and method for optimizing transfer of data chunks using radio frequency (RF) handshaking
CN108494408B (en) * 2018-03-14 2021-07-13 电子科技大学 Hash dictionary-based underground high-speed real-time compression method for density logging while drilling instrument
US10997123B2 (en) 2018-11-19 2021-05-04 Fungible, Inc. Matching techniques in data compression accelerator of a data processing unit
US10727865B2 (en) 2018-11-19 2020-07-28 Fungible, Inc. Data striping for matching techniques in data compression accelerator of a data processing unit
US10812630B2 (en) 2018-11-19 2020-10-20 Fungible, Inc. Merging techniques in data compression accelerator of a data processing unit
WO2020106626A1 (en) * 2018-11-19 2020-05-28 Fungible, Inc. History-based compression pipeline for data compression accelerator of a data processing unit
US11309908B2 (en) 2018-11-26 2022-04-19 Fungible, Inc. Static dictionary-based compression hardware pipeline for data compression accelerator of a data processing unit
US10938961B1 (en) 2019-12-18 2021-03-02 Ndata, Inc. Systems and methods for data deduplication by generating similarity metrics using sketch computation
US11119995B2 (en) 2019-12-18 2021-09-14 Ndata, Inc. Systems and methods for sketch computation
US11630729B2 (en) 2020-04-27 2023-04-18 Fungible, Inc. Reliability coding with reduced network traffic
CN113727117B (en) * 2021-11-01 2022-02-15 武汉精测电子集团股份有限公司 DP-based compressed data stream transmission method, device, equipment and storage medium

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5049881A (en) * 1990-06-18 1991-09-17 Intersecting Concepts, Inc. Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique
CN1737791A (en) * 2005-09-08 2006-02-22 无敌科技(西安)有限公司 Data compression method by finite exhaustive optimization

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5016009A (en) * 1989-01-13 1991-05-14 Stac, Inc. Data compression apparatus and method
US5406278A (en) * 1992-02-28 1995-04-11 Intersecting Concepts, Inc. Method and apparatus for data compression having an improved matching algorithm which utilizes a parallel hashing technique
US5371499A (en) * 1992-02-28 1994-12-06 Intersecting Concepts, Inc. Data compression using hashing
US5990810A (en) 1995-02-17 1999-11-23 Williams; Ross Neil Method for partitioning a block of data into subblocks and for storing and communcating such subblocks
US6167156A (en) 1996-07-12 2000-12-26 The United States Of America As Represented By The Secretary Of The Navy Compression of hyperdata with ORASIS multisegment pattern sets (CHOMPS)
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
US6091777A (en) * 1997-09-18 2000-07-18 Cubic Video Technologies, Inc. Continuously adaptive digital video compression system and method for a web streamer
US6320523B1 (en) * 1999-07-30 2001-11-20 Unisys Corporation Method and apparatus for reducing the time required for compressing data
AU2001274972A1 (en) * 2000-05-26 2001-12-11 Citrix Systems, Inc. Method and system for efficiently reducing graphical display data for transmission over a low bandwidth transport protocol mechanism
EP1311978A4 (en) 2000-07-20 2004-03-03 Repliweb Inc Focal point compression method and apparatus
US6515598B2 (en) * 2000-12-22 2003-02-04 Cilys 53, Inc. System and method for compressing and decompressing data in real time
US7064688B2 (en) * 2001-07-09 2006-06-20 Good Technology, Inc. System and method for compressing data on a bandwidth-limited network
JP2003108464A (en) 2001-09-27 2003-04-11 Toshiba Corp Device and method for transferring data
US7171444B2 (en) * 2001-11-14 2007-01-30 Sharp Laboratories Of America, Inc. Remote desktop protocol compression system
CA2411991A1 (en) * 2001-11-19 2003-05-19 Linear Systems Ltd. Transmitting digital video signals over an ip network
US20050281470A1 (en) * 2001-12-26 2005-12-22 Adams Michael A System and method for streaming media
JP3584032B2 (en) * 2003-02-24 2004-11-04 沖電気工業株式会社 Data compression device and data decompression device
US7296030B2 (en) * 2003-07-17 2007-11-13 At&T Corp. Method and apparatus for windowing in entropy encoding
US6903668B1 (en) * 2003-11-18 2005-06-07 M-Systems Flash Disk Pioneers Ltd. Decompression accelerator for flash memory
US7966424B2 (en) 2004-03-15 2011-06-21 Microsoft Corporation Data compression
US7555531B2 (en) 2004-04-15 2009-06-30 Microsoft Corporation Efficient algorithm and protocol for remote differential compression
US7613787B2 (en) 2004-09-24 2009-11-03 Microsoft Corporation Efficient algorithm for finding candidate objects for remote differential compression
US7487169B2 (en) * 2004-11-24 2009-02-03 International Business Machines Corporation Method for finding the longest common subsequences between files with applications to differential compression
US8055783B2 (en) * 2005-08-22 2011-11-08 Utc Fire & Security Americas Corporation, Inc. Systems and methods for media stream processing
US7676582B2 (en) * 2006-06-30 2010-03-09 Microsoft Corporation Optimized desktop sharing viewer join
US8090027B2 (en) * 2007-08-29 2012-01-03 Red Hat, Inc. Data compression using an arbitrary-sized dictionary

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5049881A (en) * 1990-06-18 1991-09-17 Intersecting Concepts, Inc. Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique
CN1737791A (en) * 2005-09-08 2006-02-22 无敌科技(西安)有限公司 Data compression method by finite exhaustive optimization

Also Published As

Publication number Publication date
JP2010539606A (en) 2010-12-16
EP2198522A4 (en) 2010-09-29
JP5566888B2 (en) 2014-08-06
CN101803203A (en) 2010-08-11
US20090077252A1 (en) 2009-03-19
EP2198522B1 (en) 2013-10-23
WO2009036350A3 (en) 2009-05-07
US8819288B2 (en) 2014-08-26
EP2198522A2 (en) 2010-06-23
WO2009036350A2 (en) 2009-03-19

Similar Documents

Publication Publication Date Title
CN101803203B (en) Optimized data stream compression using data-dependent chunking
CN1753368B (en) Efficient algorithm for finding candidate objects for remote differential compression
WO2016106397A1 (en) Lossless reduction of data by deriving data from prime data elements resident in a content-associative sieve
CN106257403A (en) The apparatus and method of the single-pass entropy detection for transmitting about data
US11424760B2 (en) System and method for data compaction and security with extended functionality
US11609882B2 (en) System and method for random-access manipulation of compacted data files
US11831343B2 (en) System and method for data compression with encryption
US11733867B2 (en) System and method for multiple pass data compaction utilizing delta encoding
CN101911058A (en) Generation of a representative data string
WO2016205209A1 (en) Performing multidimensional search, content-associative retrieval, and keyword-based search and retrieval on data that has been losslessly reduced using a prime data sieve
US20240020006A1 (en) System and method for compaction of floating-point numbers within a dataset
US20230283292A1 (en) System and method for data compaction and security with extended functionality
US11967974B2 (en) System and method for data compression with protocol adaptation
US11609881B2 (en) System and method for computer data type identification
US20240106457A1 (en) System and method for data compression and encryption using asymmetric codebooks
US20240113728A1 (en) System and method for data compaction and security with extended functionality
US11811428B2 (en) System and method for data compression using genomic encryption techniques
US20240072825A1 (en) System and method for encrypted data compression
US20240113729A1 (en) System and method for data compression with homomorphic encryption
US20240120940A1 (en) System and method for distributed node-based data compaction
WO2020264522A1 (en) Data storage, transfer, synchronization, and security using recursive encoding

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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150423

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150423

Address after: Washington State

Patentee after: MICROSOFT TECHNOLOGY LICENSING, LLC

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20131016

CF01 Termination of patent right due to non-payment of annual fee