US20080165038A1 - Fast implementation of decoding function for variable length encoding - Google Patents
Fast implementation of decoding function for variable length encoding Download PDFInfo
- Publication number
- US20080165038A1 US20080165038A1 US11/621,285 US62128507A US2008165038A1 US 20080165038 A1 US20080165038 A1 US 20080165038A1 US 62128507 A US62128507 A US 62128507A US 2008165038 A1 US2008165038 A1 US 2008165038A1
- Authority
- US
- United States
- Prior art keywords
- data
- decoding
- encoding
- rules
- parameters
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
Definitions
- IBM® is a registered trademark of International Business Machines Corporation, Armonk, N.Y., U.S.A. Other names used herein may be registered trademarks, trademarks or product names of International Business Machines Corporation or other companies.
- This invention relates to a method for encoding/decoding data of a variable length format and in particular to using the method to omit unnecessary pieces of data for the purpose of improved processing performance, reducing the size of data on communication paths, and efficiently using limited physical memory.
- encoding data is commonly utilized as a way in which to compress and reduce the physical size of the data while maintaining the data integrity.
- encoding and decoding algorithms are available and many have been optimized for particular types and or kinds of data.
- a problem with current encoding schemes is that data is encoded with no consideration given to efficiently encoding the data such that decode processing time is minimized.
- existing decoding/encoding programs are inefficient and require lots of processing time to decode the data.
- a method of simultaneous processing data elements in decoding operation of variable length encoded data comprising: collecting a plurality of data to be decoded; determining an encoded data length for each of the plurality of data; obtaining a plurality of parameters based on the determination of the encoded data length of each of the plurality of data; and performing operations on each of the plurality of data.
- FIG. 1 illustrates one example of a program restoration processing
- FIG. 2 illustrates one example of permute instruction of VMX
- FIG. 3 illustrates one example of a method of simultaneous processing of a plurality of elements in decoding operations of variable length encoding data routine 1000 ;
- FIG. 4 illustrates one example of a program for restoration processing by way of routine 1000 ;
- FIG. 5 illustrates one example of a decoding operation
- FIG. 6 illustrates one example of obtaining parameters and performing operations of routine 1000 specific to BER compression decoding
- FIG. 7 illustrates one example of obtaining parameters and performing operations of routine 1000 specific to UTF-8 decoding
- FIG. 8 illustrates one example of the performance of decoding of simple encoding of Table 1
- FIG. 9 illustrates one example of the performance of decoding of BER compression
- FIG. 10 illustrates one example of the performance of UTF-8 decoding.
- a method of variable length encoding/decoding of a plurality of data simultaneously is utilized to reduce the number of conditional branching instructions and arithmetic instructions, which cause a lowering of execution efficiency, and as such a realization of higher speed processing, mainly through a permute instruction.
- variable length data generally includes a number of conditional branches and the decoding of each element concurrently depends on the decoding of the previous element, there is the problem that the parallelism of the instruction level is lowered.
- a permute (or shuffle) instruction is an instruction for rearranging the content of the input register in an arbitrary order.
- VMX which is an SIMD instruction set of the PowerPC
- three 16-byte vector registers are treated as input, one vector register as output, and the data of the vector register as sixteen 1-byte rows, respectively.
- the first and second arguments are first of all combined in this order to make thirty-two 1-byte rows.
- the present method collects the data length of the plurality of data to be processed, obtains the necessary parameters by looking up a table or performing operations, and performs operations using the obtained parameters, simultaneously processing the plurality of data.
- the method begins in block 1002 .
- block 1002 the data length of the plurality of data to be processed is collected. Processing then moves to block 1004 .
- FIGS. 6 and 7 further illustrate the process of obtaining in block 1004 and performing in block 1006 . Processing then moves to block 1006 .
- the prefixes of 4 pieces of input data are collected (functionality of block 1004 ).
- Two parameters are loaded, which are vpattern for rearranging data through the permute instruction and vmask for masking prefix bits (functionality of block 1004 ).
- processing is actually performed by using two parameters (functionality of block 1006 ).
- v pattern ⁇ *, *, *, 0 ⁇ 00, *, *, 0 ⁇ 01 , 0 ⁇ 02, *, 0 ⁇ 03, 0 ⁇ 04, 0 ⁇ 05, *, *, 0 ⁇ 06, 0 ⁇ 07 ⁇
- v mask ⁇ 0, 0, 0, 0 ⁇ 3 F, 0, 0, 0 ⁇ 3 F, 0 ⁇ FF, 0, 0 ⁇ 3 F, 0 ⁇ FF, 0 ⁇ FF, 0, 0, 0 ⁇ 3 F, 0 ⁇ FF ⁇
- FIG. 5 One example of processing in this case is illustrated in FIG. 5 .
- Advantages of this program are, as compared with the code of FIG. 1 that four pieces of data can be processed at one time and, since conditional branching is not used, there are no penalties from branching mis-predictions.
- the processing of block 1002 does not depend on that of block 1004 and block 1006 in the previous iteration; therefore, it can be executed in parallel, having the parallelism of a high instruction level, as compared to the code in FIG. 1 .
- block 1002 functionality is described through scalar instructions; however, this part can be processed through SIMD instructions as well.
- decoding of BER Basic Encoding Rules
- BER Basic Encoding Rules
- ITU-T Recommendation X.690 Information technology—ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)), and it is widely employed not only in the communication field but also in various fields of application.
- BER compression is variable length encoding, which shows that in 1 byte of data, the first bit is a flag and the remaining 7 bits are data, and when the flag bit is 1, the byte continues to the following byte. While this encoding rule is more complicated it is possible to perform processing in nearly the same fashion as decoding in embodiment 1.
- FIG. 6 there is illustrated logic for making some decisions and applying rules.
- An example is illustrated in FIG. 6 , which can be implemented by the VMX.
- the Select is the select instruction of the VMX, using the value of the register as a mask, which is the third argument, and it is the instruction to output the corresponding bit of the first argument when the mask bit is ‘0’ and to output the corresponding bit of the second argument when the mask bit is ‘1’.
- FIG. 7 there is illustrated one example of example of Steps 2 and 3 of UTF-8 decoding.
- UTF-8 encoded UNICODE
- UCS-2 UNICODE
- ASCII character 0 ⁇ 00-0 ⁇ 7F
- two bytes Latin character, etc., 0 ⁇ 80-0 ⁇ 7FF
- Japanese character Japanese character, etc., 0 ⁇ 800-0 ⁇ FFFF
- routine 1000 of the present invention is applicable.
- routine 1000 of the present invention is applicable.
- Various alternative methods are conceivable for performing operations; however, as an example, the VMX can perform operations as shown in FIG. 7 .
- An instruction set having more flexible instructions, such as the permute instruction in units of bits can perform more efficient operations.
- Routine 1000 of the present invention has been implemented and evaluated.
- the results of performance evaluations of Embodiments 1 and 2, conducted on the PowerPC970 and the SPE of the Cell BE processor, are illustrated in FIGS. 8 and 9 . In either example, great improvements in performance are obtained by using the present invention in each design.
- the performance of decoding the UTF-8 of embodiment 2, implemented on the PowerPC970, is shown in FIG. 10 .
- the label of the x-axis is the type of document, input size (KB) ⁇ output size (KB).
- the three on the left, among the input data used in the test, are artificial data, and they are input in the form of all 1-byte characters (ASCII text), all 3 byte characters (Japanese text), and repetitions of 1, 2, and 3 bytes.
- Others are text files in real world (mainly HTML), in which the characters to be encoded into all 1-byte characters and into 2 or 3 bytes are intermingled.
- the graph shown is the relative performance of the implementation compared to a tuned implementation without the method of the present invention. When using the method of the present invention, higher performance is obtained for all documents.
- the capabilities of the present invention can be implemented in software, firmware, hardware or some combination thereof.
- one or more aspects of the present invention can be included in an article of manufacture (e.g., one or more computer program products) having, for instance, computer usable media.
- the media has embodied therein, for instance, computer readable program code means for providing and facilitating the capabilities of the present invention.
- the article of manufacture can be included as a part of a computer system or sold separately.
- At least one program storage device readable by a machine, tangibly embodying at least one program of instructions executable by the machine to perform the capabilities of the present invention can be provided.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Description
- IBM® is a registered trademark of International Business Machines Corporation, Armonk, N.Y., U.S.A. Other names used herein may be registered trademarks, trademarks or product names of International Business Machines Corporation or other companies.
- 1. Field of the Invention
- This invention relates to a method for encoding/decoding data of a variable length format and in particular to using the method to omit unnecessary pieces of data for the purpose of improved processing performance, reducing the size of data on communication paths, and efficiently using limited physical memory.
- 2. Description of Background
- Before our invention encoding data is commonly utilized as a way in which to compress and reduce the physical size of the data while maintaining the data integrity. As such, a variety of encoding and decoding algorithms are available and many have been optimized for particular types and or kinds of data.
- A problem with current encoding schemes is that data is encoded with no consideration given to efficiently encoding the data such that decode processing time is minimized. In this regard, existing decoding/encoding programs are inefficient and require lots of processing time to decode the data.
- As such, current encoding and decoding routines are inefficient, and typically process unnecessary data. All of which consumes valuable processing time, and increases the size of data on communication paths. As such, eliminating unnecessary data by way of an improved encoding and decoding method resulting in a method of speeding up decoding processing time significantly improves processing performance and in part gives rise to the present invention.
- The shortcomings of the prior art are overcome and additional advantages are provided through the provision of a method of simultaneous processing data elements in decoding operation of variable length encoded data, said method comprising: collecting a plurality of data to be decoded; determining an encoded data length for each of the plurality of data; obtaining a plurality of parameters based on the determination of the encoded data length of each of the plurality of data; and performing operations on each of the plurality of data.
- System and computer program products corresponding to the above-summarized methods are also described and claimed herein.
- Additional features and advantages are realized through the techniques of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered a part of the claimed invention. For a better understanding of the invention with advantages and features, refer to the description and to the drawings.
- As a result of the summarized invention, technically we have achieved a solution, which is a method of speeding up the decoding of encoded data.
- The subject matter, which is regarded as the invention, is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The foregoing and other objects, features, and advantages of the invention are apparent from the following detailed description taken in conjunction with the accompanying drawings in which:
-
FIG. 1 illustrates one example of a program restoration processing; -
FIG. 2 illustrates one example of permute instruction of VMX; -
FIG. 3 illustrates one example of a method of simultaneous processing of a plurality of elements in decoding operations of variable lengthencoding data routine 1000; -
FIG. 4 illustrates one example of a program for restoration processing by way ofroutine 1000; -
FIG. 5 illustrates one example of a decoding operation; -
FIG. 6 illustrates one example of obtaining parameters and performing operations of routine 1000 specific to BER compression decoding; -
FIG. 7 illustrates one example of obtaining parameters and performing operations of routine 1000 specific to UTF-8 decoding; -
FIG. 8 illustrates one example of the performance of decoding of simple encoding of Table 1; -
FIG. 9 illustrates one example of the performance of decoding of BER compression; and -
FIG. 10 illustrates one example of the performance of UTF-8 decoding. - The detailed description explains the preferred embodiments of the invention, together with advantages and features, by way of example with reference to the drawings.
- Turning now to the drawings in greater detail, in an exemplary embodiment of the present invention a method of variable length encoding/decoding of a plurality of data simultaneously is utilized to reduce the number of conditional branching instructions and arithmetic instructions, which cause a lowering of execution efficiency, and as such a realization of higher speed processing, mainly through a permute instruction.
- To explain the decoding of variable length encoding, an example of simplified encoding rule is shown in Table 1 below. In the encoding, integer type data of up to 30 bits in length is expressed by a data format of 1 to 4 bytes, with a 2-bit prefix being added.
-
TABLE 1 Encoded Format Input data data 2-bit [first byte] [second byte] . . . X: length length prefix data bit 1 to 6 bits 1 byte 0 (00b) [00xxxxxx] 7 to 14 bits 2 bytes 1 (01b) [01xxxxxx] [xxxxxxxx] 15 to 22 bits 3 bytes 2 (10b) [10xxxxxx] [xxxxxxxx] [xxxxxxxx] 23 to 30 bits 4 bytes 3 (11b) [11xxxxxx] [xxxxxxxx] [xxxxxxxx] [xxxxxxxx] - In the encoding, if the ratio of data having a short input data length is higher, the amount of data will be reduced. One example of a program for performing restoration of the encoded data according to this rule is illustrated in
FIG. 1 . - As illustrated in
FIG. 1 , since the restoration operation of the variable length data generally includes a number of conditional branches and the decoding of each element concurrently depends on the decoding of the previous element, there is the problem that the parallelism of the instruction level is lowered. - As a premise of the present invention, an explanation will be given regarding the permute instruction (as example see IBM Corp. PowerPC Microprocessor Family: Vector/SIMD Multimedia Extension Technology Programming Environments Manual). A permute (or shuffle) instruction is an instruction for rearranging the content of the input register in an arbitrary order. To give an example of the permute instruction of the VMX, which is an SIMD instruction set of the PowerPC, three 16-byte vector registers are treated as input, one vector register as output, and the data of the vector register as sixteen 1-byte rows, respectively. In this instruction, the first and second arguments are first of all combined in this order to make thirty-two 1-byte rows. Based on this, the byte value at the position indicated by the location of the value of the lower 5 bits of each element of the third argument is returned as a return value of the position corresponding to the element. Thus, it becomes possible to rearrange the input data in units of bytes in an arbitrary order. An example of the operation of the permute instruction of the VMX one example of which is illustrate in
FIG. 2 . - Explanations will be given regarding the method of the present invention, using the format shown above in the table as an example. That is to say, an arrangement expressed by variable length encoding of 1 to 4 bytes is decoded in order to be output as an arrangement of a 32-bit integer. According to the method of the present invention, a plurality of data is processed simultaneously. However, explanations will be given on the basis of 4 pieces of data being processed simultaneously. This corresponds to a case where, by using a register of 16-byte length, a 32-bit integer is processed. However, the present method is not limited to this parallelism; 8 pieces of data (8 characters) will be decoded simultaneously in the decoding of the UTF-8 to be described later. Furthermore, the present invention is mainly intended for the decoding of encoded data, however, the object is not limited to this use. For example, it is possible apply it in encoding, using the rules illustrated in the table above.
- Referring to
FIG. 3 there is illustrated one example of a method of simultaneous processing of a plurality of elements in decoding operations of variable lengthencoding data routine 1000. In an exemplary embodiment, the present method collects the data length of the plurality of data to be processed, obtains the necessary parameters by looking up a table or performing operations, and performs operations using the obtained parameters, simultaneously processing the plurality of data. The method begins inblock 1002. - In
block 1002 the data length of the plurality of data to be processed is collected. Processing then moves to block 1004. - In
block 1004 the parameters by looking up a table or performing operations is obtained. In this regard,FIGS. 6 and 7 further illustrate the process of obtaining inblock 1004 and performing inblock 1006. Processing then moves to block 1006. - In
block 1006 operations using the obtained parameters are performed simultaneously processing the plurality of data. The routine in then exited. - Referring to
FIG. 4 there is illustrated one example of such processing. In the example inFIG. 4 , the prefixes of 4 pieces of input data are collected (functionality of block 1004). Two parameters are loaded, which are vpattern for rearranging data through the permute instruction and vmask for masking prefix bits (functionality of block 1004). After the encoded data is loaded, processing is actually performed by using two parameters (functionality of block 1006). - Here, if the prefix of the 4 pieces of input data is, for example, in an order of [0, 1, 2, 1], a constant number table is prepared, in order for the values of the two parameters to become as follows.
-
vpattern={*, *, *, 0×00, *, *, 0×01 , 0×02, *, 0×03, 0×04, 0×05, *, *, 0×06, 0×07} -
vmask={0, 0, 0, 0×3F, 0, 0, 0×3F, 0×FF, 0, 0×3F, 0×FF, 0×FF, 0, 0, 0×3F, 0×FF } - Additionally, ‘*’ denotes an arbitrary value. One example of processing in this case is illustrated in
FIG. 5 . Advantages of this program are, as compared with the code ofFIG. 1 that four pieces of data can be processed at one time and, since conditional branching is not used, there are no penalties from branching mis-predictions. Furthermore, the processing ofblock 1002 does not depend on that ofblock 1004 andblock 1006 in the previous iteration; therefore, it can be executed in parallel, having the parallelism of a high instruction level, as compared to the code inFIG. 1 . In addition, inFIG. 4 , for the purpose of explanation, block 1002 functionality is described through scalar instructions; however, this part can be processed through SIMD instructions as well. - Conversely, the problem is that a table lookup in
block 1004 functionality or operation costs become necessary. In an exemplary embodiment, referred to asembodiment 1 inFIG. 6 , using the program inFIG. 4 can perform decoding of the simple encoding of the Table 1 shown above. - In another exemplary embodiment, referred to as
embodiment 2 inFIG. 6 , decoding of BER (Basic Encoding Rules) compression can be effectuated. In this regard, a variable length encoding format that is included in ITU-T recommendation X.690 (ITU-T Recommendation X.690, Information technology—ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)), and it is widely employed not only in the communication field but also in various fields of application. BER compression is variable length encoding, which shows that in 1 byte of data, the first bit is a flag and the remaining 7 bits are data, and when the flag bit is 1, the byte continues to the following byte. While this encoding rule is more complicated it is possible to perform processing in nearly the same fashion as decoding inembodiment 1. - Referring to
FIG. 6 there is illustrated logic for making some decisions and applying rules. An example is illustrated inFIG. 6 , which can be implemented by the VMX. InFIG. 6 , the Select is the select instruction of the VMX, using the value of the register as a mask, which is the third argument, and it is the instruction to output the corresponding bit of the first argument when the mask bit is ‘0’ and to output the corresponding bit of the second argument when the mask bit is ‘1’. - Referring to
FIG. 7 there is illustrated one example of example ofSteps embodiment 3 inFIG. 7 , a more complicated example is shown that decodes text of the UTF-8 encoded UNICODE (UCS-2). In the decoding of UTF-8, data transfer has to be conducted by bit as well. In UTF-8, when expressing the character code of UCS-2, it is encoded into any one of three kinds of encoding; one byte (ASCII character, 0×00-0×7F), two bytes (Latin character, etc., 0×80-0×7FF), or three bytes (Japanese, etc., 0×800-0×FFFF). As an example, when it is encoded into three-byte length data, three-byte UTF-8 data of [1110xxxx], [10yyyyyy], and [10zzzzzz] has to be transformed into two-byte UNICODE characters of [xxxxyyyy] and [yyzzzzzz], which cannot be realized through sorting only in units of bytes. - Even in such a case, although the number of parameters and operations to be performed may increase, routine 1000 of the present invention is applicable. Various alternative methods are conceivable for performing operations; however, as an example, the VMX can perform operations as shown in
FIG. 7 . An instruction set having more flexible instructions, such as the permute instruction in units of bits can perform more efficient operations. -
Routine 1000 of the present invention has been implemented and evaluated. The results of performance evaluations ofEmbodiments FIGS. 8 and 9 . In either example, great improvements in performance are obtained by using the present invention in each design. - The performance of decoding the UTF-8 of
embodiment 2, implemented on the PowerPC970, is shown inFIG. 10 . The label of the x-axis is the type of document, input size (KB)→output size (KB). The three on the left, among the input data used in the test, are artificial data, and they are input in the form of all 1-byte characters (ASCII text), all 3 byte characters (Japanese text), and repetitions of 1, 2, and 3 bytes. Others are text files in real world (mainly HTML), in which the characters to be encoded into all 1-byte characters and into 2 or 3 bytes are intermingled. The graph shown is the relative performance of the implementation compared to a tuned implementation without the method of the present invention. When using the method of the present invention, higher performance is obtained for all documents. - The capabilities of the present invention can be implemented in software, firmware, hardware or some combination thereof.
- As one example, one or more aspects of the present invention can be included in an article of manufacture (e.g., one or more computer program products) having, for instance, computer usable media. The media has embodied therein, for instance, computer readable program code means for providing and facilitating the capabilities of the present invention. The article of manufacture can be included as a part of a computer system or sold separately.
- Additionally, at least one program storage device readable by a machine, tangibly embodying at least one program of instructions executable by the machine to perform the capabilities of the present invention can be provided.
- The flow diagrams depicted herein are just examples. There may be many variations to these diagrams or the steps (or operations) described therein without departing from the spirit of the invention. For instance, the steps may be performed in a differing order, or steps may be added, deleted or modified. All of these variations are considered a part of the claimed invention.
- While the preferred embodiment to the invention has been described, it will be understood that those skilled in the art, both now and in the future, may make various improvements and enhancements which fall within the scope of the claims which follow. These claims should be construed to maintain the proper protection for the invention first described.
Claims (10)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/621,285 US7394411B1 (en) | 2007-01-09 | 2007-01-09 | Fast implementation of decoding function for variable length encoding |
US12/135,257 US7864081B2 (en) | 2007-01-09 | 2008-06-09 | Fast implementation of decoding function for variable length encoding |
US12/135,233 US20080238734A1 (en) | 2007-01-09 | 2008-06-09 | Fast Implementation Of Decoding Function For Variable Length Encoding |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/621,285 US7394411B1 (en) | 2007-01-09 | 2007-01-09 | Fast implementation of decoding function for variable length encoding |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/135,257 Continuation US7864081B2 (en) | 2007-01-09 | 2008-06-09 | Fast implementation of decoding function for variable length encoding |
US12/135,233 Continuation US20080238734A1 (en) | 2007-01-09 | 2008-06-09 | Fast Implementation Of Decoding Function For Variable Length Encoding |
Publications (2)
Publication Number | Publication Date |
---|---|
US7394411B1 US7394411B1 (en) | 2008-07-01 |
US20080165038A1 true US20080165038A1 (en) | 2008-07-10 |
Family
ID=39561142
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/621,285 Active US7394411B1 (en) | 2007-01-09 | 2007-01-09 | Fast implementation of decoding function for variable length encoding |
US12/135,233 Abandoned US20080238734A1 (en) | 2007-01-09 | 2008-06-09 | Fast Implementation Of Decoding Function For Variable Length Encoding |
US12/135,257 Active 2027-09-12 US7864081B2 (en) | 2007-01-09 | 2008-06-09 | Fast implementation of decoding function for variable length encoding |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/135,233 Abandoned US20080238734A1 (en) | 2007-01-09 | 2008-06-09 | Fast Implementation Of Decoding Function For Variable Length Encoding |
US12/135,257 Active 2027-09-12 US7864081B2 (en) | 2007-01-09 | 2008-06-09 | Fast implementation of decoding function for variable length encoding |
Country Status (1)
Country | Link |
---|---|
US (3) | US7394411B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014210366A1 (en) * | 2013-06-28 | 2014-12-31 | Intel Corporation | Processors, methods, systems, and instructions to transcode variable length code points of unicode characters |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011020072A1 (en) * | 2009-08-14 | 2011-02-17 | Stephen Allyn Joyce | Data encoding method |
US7994949B2 (en) * | 2009-11-30 | 2011-08-09 | Red Hat, Inc. | Unicode-compatible entropy coding |
JP2012022021A (en) * | 2010-07-12 | 2012-02-02 | Sony Corp | Encoding device and encoding method, decoding device and decoding method, and program |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530884A (en) * | 1991-10-24 | 1996-06-25 | Intel Corporation | System with plurality of datapaths having dual-ported local memory architecture for converting prefetched variable length data to fixed length decoded data |
US5929793A (en) * | 1996-03-15 | 1999-07-27 | Lg Electronics Inc. | High speed variable length code detection using a cascaded structure |
US6304197B1 (en) * | 2000-03-14 | 2001-10-16 | Robert Allen Freking | Concurrent method for parallel Huffman compression coding and other variable length encoding and decoding |
US6580828B1 (en) * | 1999-06-30 | 2003-06-17 | Logitech Europe, S.A. | Fast decoding |
US6693643B1 (en) * | 2001-12-31 | 2004-02-17 | Apple Computer, Inc. | Method and apparatus for color space conversion |
US6775414B1 (en) * | 1999-11-19 | 2004-08-10 | Ati International Srl | Variable-length code decoder |
US20050231397A1 (en) * | 2004-04-02 | 2005-10-20 | International Business Machines Corporation | Optimization of conversion of a character coding system |
US7283591B2 (en) * | 2003-03-28 | 2007-10-16 | Tarari, Inc. | Parallelized dynamic Huffman decoder |
USRE39925E1 (en) * | 2000-12-15 | 2007-11-27 | International Business Machines Corporation | Fast JPEG huffman encoding and decoding |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6573846B1 (en) * | 2001-12-31 | 2003-06-03 | Apple Computer, Inc. | Method and apparatus for variable length decoding and encoding of video streams |
US6707398B1 (en) * | 2002-10-24 | 2004-03-16 | Apple Computer, Inc. | Methods and apparatuses for packing bitstreams |
-
2007
- 2007-01-09 US US11/621,285 patent/US7394411B1/en active Active
-
2008
- 2008-06-09 US US12/135,233 patent/US20080238734A1/en not_active Abandoned
- 2008-06-09 US US12/135,257 patent/US7864081B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530884A (en) * | 1991-10-24 | 1996-06-25 | Intel Corporation | System with plurality of datapaths having dual-ported local memory architecture for converting prefetched variable length data to fixed length decoded data |
US5929793A (en) * | 1996-03-15 | 1999-07-27 | Lg Electronics Inc. | High speed variable length code detection using a cascaded structure |
US6580828B1 (en) * | 1999-06-30 | 2003-06-17 | Logitech Europe, S.A. | Fast decoding |
US6775414B1 (en) * | 1999-11-19 | 2004-08-10 | Ati International Srl | Variable-length code decoder |
US6304197B1 (en) * | 2000-03-14 | 2001-10-16 | Robert Allen Freking | Concurrent method for parallel Huffman compression coding and other variable length encoding and decoding |
USRE39925E1 (en) * | 2000-12-15 | 2007-11-27 | International Business Machines Corporation | Fast JPEG huffman encoding and decoding |
US6693643B1 (en) * | 2001-12-31 | 2004-02-17 | Apple Computer, Inc. | Method and apparatus for color space conversion |
US7283591B2 (en) * | 2003-03-28 | 2007-10-16 | Tarari, Inc. | Parallelized dynamic Huffman decoder |
US20050231397A1 (en) * | 2004-04-02 | 2005-10-20 | International Business Machines Corporation | Optimization of conversion of a character coding system |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014210366A1 (en) * | 2013-06-28 | 2014-12-31 | Intel Corporation | Processors, methods, systems, and instructions to transcode variable length code points of unicode characters |
EP3014415A4 (en) * | 2013-06-28 | 2017-02-22 | Intel Corporation | Processors, methods, systems, and instructions to transcode variable length code points of unicode characters |
US9626184B2 (en) | 2013-06-28 | 2017-04-18 | Intel Corporation | Processors, methods, systems, and instructions to transcode variable length code points of unicode characters |
KR101783535B1 (en) * | 2013-06-28 | 2017-09-29 | 인텔 코포레이션 | Processors, methods, systems, and instructions to transcode variable length code points of unicode characters |
RU2638766C2 (en) * | 2013-06-28 | 2017-12-15 | Интел Корпорейшн | Processors, methods, systems and instructions for transcoding points of unicode variable length code |
US10261788B2 (en) | 2013-06-28 | 2019-04-16 | Intel Corporation | Processors, methods, systems, and instructions to transcode variable length code points of unicode characters |
Also Published As
Publication number | Publication date |
---|---|
US7394411B1 (en) | 2008-07-01 |
US20080238735A1 (en) | 2008-10-02 |
US7864081B2 (en) | 2011-01-04 |
US20080238734A1 (en) | 2008-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7728738B2 (en) | Method and apparatus for processing character streams | |
Lemire et al. | Stream VByte: Faster byte-oriented integer compression | |
Lekatsas et al. | SAMC: A code compression algorithm for embedded processors | |
US7774768B2 (en) | Method and apparatus for processor code optimization using code compression | |
US6005503A (en) | Method for encoding and decoding a list of variable size integers to reduce branch mispredicts | |
US7275147B2 (en) | Method and apparatus for data alignment and parsing in SIMD computer architecture | |
Plaisance et al. | Vectorized vbyte decoding | |
US7864081B2 (en) | Fast implementation of decoding function for variable length encoding | |
US7773005B2 (en) | Method and apparatus for decoding variable length data | |
CN102270112A (en) | Reduced instruction-set computer (RISC) microprocessor command decoding circuit | |
Durov | Telegram Open Network Virtual Machine | |
US7068192B1 (en) | System and method for encoding and decoding variable-length data | |
Afroozeh et al. | The fastlanes compression layout: Decoding> 100 billion integers per second with scalar code | |
US6230258B1 (en) | Processor using less hardware and instruction conversion apparatus reducing the number of types of instructions | |
US7868791B2 (en) | Pack unicode zSeries instructions | |
Clausecker et al. | Transcoding unicode characters with AVX‐512 instructions | |
CN112130899A (en) | Stack computer | |
Menon et al. | Space/time tradeoffs in code compression for the tms320c62x processor | |
Pinto et al. | Exact and approximation algorithms for error-detecting even codes | |
Bonny et al. | Instruction re-encoding facilitating dense embedded code | |
US12021551B2 (en) | Method and apparatus for efficient deflate decompression using content-addressable data structures | |
Anand et al. | Accelerating and Visualizing Modulo Arithmetic using Multiple Radices | |
Osawa et al. | An Efficient, Programmable and Interchangeable Code System: EPICS |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:INOUE, HIROSHI;KOMATSU, HIDEAKI;OHARA, MORIYOSHI;REEL/FRAME:018730/0921;SIGNING DATES FROM 20061128 TO 20061129 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
SULP | Surcharge for late payment | ||
AS | Assignment |
Owner name: SAP AG, GERMANY Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:INTERNATIONAL BUSINESS MACHINES CORPORATION;REEL/FRAME:028540/0522 Effective date: 20120629 |
|
AS | Assignment |
Owner name: SAP SE, GERMANY Free format text: CHANGE OF NAME;ASSIGNOR:SAP AG;REEL/FRAME:033625/0334 Effective date: 20140707 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 12 |