SIMD instructions for data compression and decompression

US9298457B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9298457-B2
Application numberUS-201313747352-A
CountryUS
Kind codeB2
Filing dateJan 22, 2013
Priority dateJan 22, 2013
Publication dateMar 29, 2016
Grant dateMar 29, 2016

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

An execution unit configured for compression and decompression of numerical data utilizing single instruction, multiple data (SIMD) instructions is described. The numerical data includes integer and floating-point samples. Compression supports three encoding modes: lossless, fixed-rate, and fixed-quality. SIMD instructions for compression operations may include attenuation, derivative calculations, bit packing to form compressed packets, header generation for the packets, and packed array output operations. SIMD instructions for decompression may include packed array input operations, header recovery, decoder control, bit unpacking, integration, and amplification. Compression and decompression may be implemented in a microprocessor, digital signal processor, field-programmable gate array, application-specific integrated circuit, system-on-chip, or graphics processor, using SIMD instructions. Compression and decompression of numerical data can reduce memory, networking, and storage bottlenecks. This abstract does not limit the scope of the invention as described in the claims.

First claim

Opening claim text (preview).

What is claimed is: 1. A data processor, comprising: an execution unit configured to execute single instruction multiple data (SIMD) instructions, the execution unit including logic responsive to a first SIMD instruction (V_EXPMAX) that includes a multiple data identifier that identifies multiple operands to determine a maximum exponent value of the multiple operands identified by the multiple data identifier, the execution unit including logic to pack a number of bits from each of the plurality of operands based on the maximum exponent value determined in response to the first SIMD instruction to form the compressed data group, wherein the compressed data group represents the plurality of operands. 2. The data processor of claim 1 , wherein said logic responsive to the first SIMD instruction determines a first maximum exponent value of a first subset of the multiple operands, and a second maximum exponent value of a second subset of the multiple operands, said first maximum exponent value being one of the first maximum exponent value and the second maximum exponent value. 3. The data processor of claim 1 , wherein the logic to pack is responsive to a second SIMD instruction (V_PACK_REG). 4. The data processor of claim 1 , wherein the logic to pack encodes the maximum exponent value to form an exponent token for the compressed data group. 5. The data processor of claim 1 , the execution unit including a double buffering circuit, logic to store data from compressed data groups in the double buffering circuit, and logic responsive to a conditional instruction (V_WRITE_IF_FULL) to write data from the double buffering circuit to an array having a fixed width when the double buffering circuit holds said fixed width of data. 6. A data processor, comprising: an execution unit configured to execute single instruction multiple data (SIMD) instructions, the execution unit including logic responsive to a first SIMD instruction (V_EXPMAX) that includes a multiple data identifier that identifies multiple operands to determine a maximum exponent value of the multiple operands identified by the multiple data identifier, the execution unit including logic to map the bits of the operands to a number of nibbles , a given nibble in number of nibbles including bits selected from each of the plurality of operands based on a place value of the bits in the respective operands. 7. A data processor, comprising: an execution unit configured to execute single instruction multiple data (SIMD) instructions, the execution unit including logic responsive to a first SIMD instruction (V_DERIV) that includes a multiple data identifier that identifies multiple operands, to calculate differences between a pairs of operands in the multiple operands identified by the multiple data identifier, to produce a plurality of difference value operands, the execution unit including logic to map the bits of the difference value operands to a number of nibbles in a data store, a given nibble in the number of nibbles including bits selected from each of the multiple operands based on a place value of the bits in the respective difference value operands. 8. The data processor of claim 7 , the execution unit including logic responsive to a second SIMD instruction (V_EXPMAX) that includes a second multiple data identifier that identifies multiple operands to determine a maximum exponent value of the multiple operands, wherein said multiple operands comprise said plurality of difference value operands. 9. A data processor, comprising: an execution unit configured to execute single instruction multiple data (SIMD) instructions, the execution unit including logic responsive to a first SIMD instruction (V_DERIV) that includes a multiple data identifier that identifies multiple operands, to calculate differences between a pairs of operands in the multiple operands identified by the multiple data identifier, to produce a plurality of difference value operands, the execution unit including logic to pack a number of bits from each of the plurality of difference value operands based on a maximum exponent value to form a compressed data group, wherein the compressed data group represents the plurality of operands. 10. The data processor of claim 9 , wherein the logic to pack is responsive to a third SIMD instruction (V_PACK_REG). 11. The data processor of claim 9 , wherein the logic to pack encodes the maximum exponent value to form an exponent token for the compressed data group. 12. The data processor of claim 9 , the logic to pack is responsive to a fourth SIMD instruction (V_PACK_HDR) to generate a header including an attenuator setting and a derivative selector, and to include the header and one or more compressed data groups in a compressed data packet. 13. The data processor of claim 9 , the execution unit including a double buffering circuit, and logic to store one or more compressed data groups in the double buffering circuit, and logic responsive to a conditional instruction (V_WRITE_IF_FULL) to write data from the double buffering circuit to an array having a fixed width when the double buffering circuit holds said fixed width of data. 14. A data processor, comprising: an execution unit configured to execute single instruction multiple data (SIMD) instructions, the execution unit including logic responsive to a first SIMD instruction (V_DECODE_MANTS) that includes a multiple data identifier that identifies a destination for multiple data values of constant data length, which using an exponent for a group of packed mantissas, decodes and sign-extends most significant bits for integer data types to produce the multiple data values identified by the multiple data identifier, or decodes and zero-fills least significant bits for floating point data types to produce the multiple data values identified by the multiple data identifier, wherein the compressed data packet includes packed mantissas having values attenuated by an attenuation value, and the execution unit includes logic to multiply said multiple data values by a reciprocal of said attenuation value. 15. The data processor of claim 14 , the execution unit including logic to decode a compressed data packet to obtain said exponent and said group of packed mantissas. 16. The data processor of claim 14 , the execution unit including logic responsive to a second SIMD instruction (V_INTEG) that includes a second multiple data identifier that identifies multiple operands, to calculate sums of pairs of operands in the multiple operands identified by the second multiple data identifier, to produce a plurality of integrated value operands. 17. A data processor, comprising: an execution unit configured to execute single instruction multiple data (SIMD) instructions, the execution unit including logic responsive to a first SIMD instruction (V_DERIV) that includes a multiple data identifier that identifies multiple operands, to calculate differences between a pairs of operands in the multiple operands identified by the multiple data identifier, to produce a plurality of difference value operands; a second SIMD instruction (V_EXPMAX) that includes a multiple data identifier that identifies multiple operands to determine a maximum exponent value of the multiple operands identified by the multiple data identifier; a third SIMD instruction (V_PACK_REG) pack a number of bits from each of the plurality of operands based on a maximum exponent value to form the compressed data group, wherein the compressed data group represents the plurality of operands; a fourth SIMD instruction (V_DECODE_MANTS) that inc

Assignees

Inventors

Classifications

  • Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE · CPC title

  • Instructions to perform operations on packed data, e.g. vector, tile or matrix operations · CPC title

  • Arithmetic instructions · CPC title

  • of multiple operands or results {(addressing multiple banks G06F12/06)} · CPC title

  • Data switching networks (interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units G06F13/00) · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9298457B2 cover?
An execution unit configured for compression and decompression of numerical data utilizing single instruction, multiple data (SIMD) instructions is described. The numerical data includes integer and floating-point samples. Compression supports three encoding modes: lossless, fixed-rate, and fixed-quality. SIMD instructions for compression operations may include attenuation, derivative calculati…
Who is the assignee on this patent?
Altera Corp
What technology area does this patent fall under?
Primary CPC classification G06F9/30036. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Mar 29 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).