US20180167083A1 - Lossless data compression - Google Patents

Lossless data compression Download PDF

Info

Publication number
US20180167083A1
US20180167083A1 US15/376,170 US201615376170A US2018167083A1 US 20180167083 A1 US20180167083 A1 US 20180167083A1 US 201615376170 A US201615376170 A US 201615376170A US 2018167083 A1 US2018167083 A1 US 2018167083A1
Authority
US
United States
Prior art keywords
data
compressed
row
compression
precedent
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US15/376,170
Other versions
US10069511B2 (en
Inventor
Aishwarya Dubey
Hetul Sanghvi
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
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 Texas Instruments Inc filed Critical Texas Instruments Inc
Priority to US15/376,170 priority Critical patent/US10069511B2/en
Assigned to TEXAS INSTRUMENTS INCORPORATED reassignment TEXAS INSTRUMENTS INCORPORATED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DUBEY, AISHWARYA, SANGHVI, HETUL
Priority to CN201780068635.7A priority patent/CN109952708B/en
Priority to PCT/US2017/065915 priority patent/WO2018111942A1/en
Priority to EP17880411.8A priority patent/EP3552312A4/en
Priority to JP2019551920A priority patent/JP7421036B2/en
Publication of US20180167083A1 publication Critical patent/US20180167083A1/en
Application granted granted Critical
Publication of US10069511B2 publication Critical patent/US10069511B2/en
Active legal-status Critical Current
Adjusted 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
    • 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/3059Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/60General implementation details not specific to a particular type of compression
    • H03M7/6005Decoder aspects
    • 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/60General implementation details not specific to a particular type of compression
    • H03M7/6017Methods or arrangements to increase the throughput
    • 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/60General implementation details not specific to a particular type of compression
    • H03M7/6064Selection of Compressor
    • 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/60General implementation details not specific to a particular type of compression
    • H03M7/6064Selection of Compressor
    • H03M7/6076Selection between compressors of the same type
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data

Definitions

  • Disclosed embodiments generally relate to methods for losslessly compressing and storing digital data including the organization of pixel information in memory.
  • Data compression techniques can be divided into two major categories: lossy and lossless.
  • Lossless data compression techniques are employed when it is required that no information is lost in the compression/decompression process. Lossy data techniques are less accurate than lossless techniques but are generally are much faster.
  • lossless compression techniques employ methods that guarantee the precise duplication of data after it has passed through the compression/decompression cycle. Lossless compression is most commonly associated with storage of digital data used in with a computer. Such applications include the storage of data base records, spread sheet information, and word processing files. If information in a data message is redundant so that its omission does not reduce, in any way, the information encoded in the data, the message can be shortened without losing any of the information encoded therein. Thus, lossless data compression reduces the size of the message without compromising the integrity of the information conveyed by the message.
  • ADAS Advanced driver assistance system
  • gaming virtual reality
  • machine learning algorithms are all becoming limited by double data rate (DDR) memory performance and bandwidth.
  • DDR double data rate
  • the data streams radar data, images data, etc.
  • the bits are only “roughly equal”.
  • Online data compression for raster data is needed to use DDR memory more effectively.
  • Compressing data is generally an easy problem to solve.
  • the problems that are harder to solve are ensuring that the data size of the compressed data stream is bounded even for random data samples.
  • Another problem is providing a decompression scheme during data read that is fast.
  • Other problems include the requirement of being able to handle different data types and memory access schemes for such distinct data types. For example, a cache line fill versus a Direct Memory Access (DMA) controlled image data access will require different access schemes.
  • DMA Direct Memory Access
  • Another problem is providing random access to the compressed data within a deterministic and fixed time interval.
  • Disclosed embodiments provide methods and systems for dynamically configurable online lossless compression and decompression of rasterized sensor data, such as data from image sensors or radar sensors that provide random data access within a deterministic and fixed time.
  • Disclosed embodiments include a method and system for lossless data compression with single clock cycle decompression.
  • the method comprises obtaining binary sensor data comprising a plurality of rows with each row including a plurality of multi-bit data samples.
  • the rows are each divided into a plurality of data groups each including two or more samples.
  • a precedent value is selected for each row or respective precedent values are selected for each of the data groups (DGs).
  • a compressed row of compressed sensor data is generated from each row by calculating differences between each data sample and the precedent value for its associated DG.
  • a Compression Information Packet (CIP) is generated for each row that includes information for losslessly returning (i.e. decompressing) the sensor data.
  • the CIP information includes a compressed predicate comprising a data structure which indicates whether each of the DGs is stored compressed, a flexible DG size being a multi-bit value that stores a group size used for row compression, and a compressed word size being a multi-bit value that stores a dynamic range of the row compression.
  • the DG size can be for example, 16, 32 or 64 bits.
  • the CIP information can also include a cumulative data size being a multi-bit value up to 128 bits which indicates the cumulative data size of the raster data till that row in the frame being stored, and a signature that captures the error correction code (ECC) and/or a cyclic redundancy check (CRC) encoded representation of the CIP for the row.
  • ECC error correction code
  • CRC cyclic redundancy check
  • the compressed rows are stored as stored compressed data along with the CIPs.
  • the method can further comprise decompressing the stored compressed data to losslessly recover the sensor data from any random memory location, and recovering all of the sensor data in a single clock cycle.
  • FIG. 1 is a flow chart showing steps for an example method of lossless data compression, according to an example embodiment.
  • FIG. 2 shows an example of disclosed compression workings where a row comprising 256 bits of original data is converted in 157 bits of compressed data. Precedents for each DG in the row are shown for example as being the first data sample value in the DG.
  • FIG. 3A shows example lossless data compression having a single clock cycle parallel compression block and a voting circuit for obtaining compression parameters for obtaining a minimum compression ratio and compressed data size.
  • FIG. 3B shows example components for the precedent selection circuit and for the sample processing circuit.
  • FIG. 4 shows example formation of a CIP that is with the compressed data for each row.
  • FIG. 5A shows an example decompression scheme using a 2/2 address calculation transform engine ⁇ -architecture for decompression by converting disclosed compressed data into an uncompressed original data output.
  • FIG. 5B shows an example circuit implementation for the address pointers calculator shown in FIG. 5A .
  • FIG. 5C shows an example of add or copy as is circuit operation.
  • FIG. 6A shows a first example option for data storage in a DDR memory that comprises an inline option.
  • FIG. 6B shows a second example option for data storage in a DDR memory which comprises a dense storage option.
  • FIG. 7A is a block diagram of an example system for lossless data compression of sensed data streams (radar data or image data), according to an example embodiment.
  • FIG. 7B is a block diagram of an example system for lossless data compression and decompressing of data signals.
  • FIG. 7C depicts 4 types of compression and decompression blocks that can be used for implementing disclosed compression and decompression in an example system.
  • FIGS. 8A and 8B show experimentally determined compression ratio vs compression word size data for a DG size of 4 and 6, respectively for an example imaging application.
  • Example embodiments are described with reference to the drawings, wherein like reference numerals are used to designate similar or equivalent elements. Illustrated ordering of acts or events should not be considered as limiting, as some acts or events may occur in different order and/or concurrently with other acts or events. Furthermore, some illustrated acts or events may not be required to implement a methodology in accordance with this disclosure.
  • Coupled to or “couples with” (and the like) as used herein without further qualification are intended to describe either an indirect or direct electrical connection.
  • a first device “couples” to a second device, that connection can be through a direct electrical connection where there are only parasitics in the pathway, or through an indirect electrical connection via intervening items including other devices and connections.
  • the intervening item generally does not modify the information of a signal but may adjust its current level, voltage level, and/or power level.
  • FIG. 1 is a flow chart showing steps for an example method 100 of lossless data compression of sensed data streams, according to an example embodiment.
  • the sensed data streams can comprise radar data for radar applications such as frequency-modulated continuous-wave (FMCW) radar, or pixel data for imaging, such as for Advanced Driver Assistance Systems (ADAS) applications.
  • FMCW frequency-modulated continuous-wave
  • ADAS Advanced Driver Assistance Systems
  • Step 101 comprises obtaining binary sensor data originating from a sensed data source comprising a plurality of rows with each row including a plurality of multi-bit (e.g., 16 ) data samples.
  • Each row corresponds to a frame or as a channel, where the frames may include 2D planar data corresponding to each image captured at the same or different exposure times (e.g., 3) in the case of imaging application, or 2D planar data corresponding to radar sensor chirp reflections for every radar dwell.
  • the sensed data source can be a sensor that provides real-time data as a data stream, or the data source can be a memory that stores sensor data obtained from a sensor.
  • Step 102 comprises dividing each row into a plurality of DGs each including two or more data samples.
  • a “data group” (DG) as used herein is a consecutive group of raster data values (e.g., samples or pixels) that demonstrate data locality and are thus are relatively easy to compress.
  • Step 103 comprises selecting a precedent value for each row or respective precedent values for each of the DGs in the rows.
  • a “precedent value” as used herein is a value selected to minimize what is termed herein as “drift”. Drift is defined as the signed difference between current data value and the precedent within the DG being compressed.
  • the precedent is the first data sample value in a DG.
  • Precedent values can also be selected based on a predicted value of every sample (e.g., pixel) in the DG, where the generating of a predicted value can be by linear, quadratic, mean, median or any other method which yields a better match for the sample being compressed.
  • the precedent selection is an intelligent method generally performed with dedicated hardware.
  • a precedent can be any data value in the row, average of all the data values, median of the data values or a user′ configured value.
  • the circuit for precedent selection can also include statistical histogram computation for the data being compressed (see statistical histogram computation block (HIST) 311 shown in FIG. 3B described below) and the precedent can be selected based on the output of this block and heuristic rules that are pre-computed offline.
  • HIST statistical histogram computation block
  • Step 104 comprises generating a compressed row of compressed sensor data from each row by calculating differences between each data sample and the precedent value for its associated DG.
  • Step 105 comprises generating a CIP for each row having information for losslessly returning the sensor data.
  • a CIP includes a compressed predicate that comprises a data structure which indicates if each DG is stored compressed, a group size that is multi-bit value that stores a flexible data group size used for row compression, and a compressed word size being a multi-bit value that stores a dynamic range of the row compression. (See the example CIPs shown in FIG. 4 described below).
  • Step 106 comprises storing the compressed rows as stored compressed data along with the CIPs. For example, see the storage options described below relative to FIG. 6A and FIG. 6B .
  • Method 100 can further comprise decompressing the stored compressed data.
  • Step 107 shown in FIG. 1 comprises retrieving the stored compressed data from a memory (e.g., DDR or on-chip RAM) and decompressing to recover the original uncompressed data using the CIPs within a single cycle.
  • a memory e.g., DDR or on-chip RAM
  • decompressing see the decompression circuit options described in FIG. 5A , FIG. 5B and FIG. 5C .
  • the method can also include parallel single clock cycle processing of all the plurality of DGs.
  • Hardware is provided for calculating compressed output for all DGs in the row simultaneously (not linearly), such as shown in FIG. 3A described below, so that the time required for compression is independent of the DG group configuration, and precedent selection etc.
  • the method can also comprise dynamically selecting a compressed word size to obtain the best compression output, reflected in a low compression ratio.
  • Compression parameters can be dynamically selected through control by the configuration including a drift, compressed word size, precedent values, and the DG size.
  • the method can further comprises decompressing stored compressed data to losslessly recover the original sensor data including accessing random locations in a fixed time. Accessing random locations in fixed time means accessing any data value (e.g., pixel value) in a constant time. This is non-trivial as every DG that comes before that data value can be compressed onto any size. Instead of having to sequentially adding up the size of all the previous DGs, the CIP is defined. Using the cumulating data size, predicate, compressed word size and DG size, one can determine where the data value lies in the memory.
  • the decompressing can comprise a single cycle for recovery of the sensor data.
  • the method can further comprise using parallel map-reduce functions and a single cycle address pointer calculation for the decompressing.
  • FIG. 2 shows an example of a disclosed compression operation where a row comprising 256 bits of original data 210 that is uncompressed is converted into compressed data 220 comprising a row comprising 157 bits along with compressed predicates 225 shown comprising 4 1 bit compressed predicates.
  • the compressed predicates shown are one bit data structures that indicates if a DG in the compressed data 220 has been compressed or not.
  • Precedents for each of the 4 data groups is shown as the being the first data sample value in the DG, with each sample having 16 bits, so that the DGs each have 64 bits.
  • the DGs are shown as G 1 , G 2 , G 3 and G 4 .
  • each DG has 4 samples, every data sample is 16 bits in the original data 210 , and the compressed word size used was 5 bits.
  • the compressed word size as used herein is a dynamically selectable compression parameter typically from 4 to 10 for 16 bit data which defines the dynamic range of drift for the data that can be compressed inside a DG.
  • G 1 , G 2 , and G 4 are seen to be compressed, while there is no compression for the G 3 because the range of drift for data in G 3 is 50 (difference between 100 and 150 that are the minimum and maximum data values in the DG respectively) which is greater than the number that can be encoded in the 5 bits set by the compressed word size used.
  • G 1 using the precedent of 2, the non-precedent original samples are processed by subtracting 2 from the original data sample values to provide the compressed data value.
  • the compressed data predicate shown is given a 1 in case of G 1 , G 2 , and G 4 which received compression, and a 0 for G 3 which received no compression.
  • a basic principle for disclosed compression is to never increase the compressed data size in any row defined as the size of the compressed row plus the size of the CIP beyond a predetermined size determined by the original data size plus W/N bits, where W is original data length (in bits) and N is the size (in bits) of the DG.
  • W original data length
  • N the size (in bits) of the DG.
  • the original data length (row) is 256 bits in FIG. 2 and the final data length is 157 bits.
  • FIG. 3A shows example lossless data compression using single clock cycle parallel connected compression circuits 310 1 , 310 2 , to 310 n (collectively compression circuit 310 ) for each DG distributed across the raster data width that provide a minimum compression ratio for each row of original input binary sensor data shown received shown as input data 305 .
  • the compression circuits 310 1 , 310 2 , to 310 n each comprises two components described below in FIG. 3B as a precedent selection circuit 310 a for providing the precedent selection signals shown in FIG. 3A and a sample processing by differencing implemented by sample processing circuit 310 b that uses the respective precedent values received from precedent selection circuit 310 a to generate compressed data.
  • the compressed data output from the compression circuits 310 1 , 310 2 , to 310 n is shown coupled to a voting circuit 320 then to a DDR memory 330 .
  • a voting circuit 320 can be utilized to compress a row with different configuration values of DG size and drift. This can be followed by the voting circuit 320 shown, which compares the compression ratio achieved from all these computations and forwards the compressed data that corresponds to the best compression ratio to the DDR 330 .
  • FIG. 3B shows example components for the precedent selection circuit 310 a and for the sample processing circuit 310 b .
  • the precedent selection circuit 310 a shown in FIG. 3B can select from a plurality of different precedent selection options shown by example as first pixel 312 a , average shown as mean 312 b and median 312 c depending upon the statistical distribution of input data calculated by the HIST block 311 .
  • HIST block 311 outputs a MUX select signal 316 to a MUX 317 which in response outputs a precedent value.
  • These compression circuits 310 1 , 310 2 , to 310 n being electrically in parallel perform single clock cycle lossless compression over the input data 305 with a variety of configurations for DG size and dynamic range of drift and a data precedent selected based on the real-time calculations rendered. Output from these compression circuits 310 1 , 310 2 , to 310 n is compressed output data generated for the different configurations as well as the compression ratio achieved by each. The output of the compression circuits 310 1 , 310 2 , to 310 n is coupled to an input of a voting circuit 320 which implements voting for selecting precedents, DG size and drift that realized the best case compression and forwards the compressed data and CIP corresponding to that option to DDR memory 330 or another internal memory for storage.
  • a voting circuit 320 which implements voting for selecting precedents, DG size and drift that realized the best case compression and forwards the compressed data and CIP corresponding to that option to DDR memory 330 or another internal memory for storage.
  • FIG. 4 shows example formation of a CIP for each of 4 rows shown as Row 1 to Row 4.
  • CIPs are stored in memory along with the compressed data (see FIGS. 6A and 6B described below).
  • a CIP is a packet of data created and stored together with each row.
  • the CIP is generally not considered when calculating the compression ratio because the size of the CIP is generally significantly less than that of a typical row size. For example, in a 2 Mpixel camera, the uncompressed row size is 6 kbytes, while the size of CIP will be ⁇ 100 bytes.
  • the CIP information is created by the compression circuits while compressing data and used by the decompressor circuits for extracting (decompressing) the original data packet.
  • the compressed predicate being 1 bit (shown as W/N bits, but a circuit can make the compressed predicate a fixed bit field (e.g., 512 bits) thereby putting a limit on the maximum number of DGs) for every DG to indicate compression or not, where W is the raster row size and N the data group size.
  • W is the raster row size and N the data group size.
  • a compressed data size is shown as 32 bits, where the total compressed data size is for one row of raster data being 157 bits for the example in FIG. 2 , and a cumulative data size shown as 64 bits that is the total compressed data size of the frame till that row.
  • the CIP also includes a compressed word (CW) size this is a 4 bit value that stores the dynamic range of compression scheme for the row signature, a DG size that is an 8 bit value that stores the flexible DG size used to compress one particular row, and an ECC and/or CRC signature calculated for every CIP which in turn corresponds to a row of data to ensure functional safety and correctness of compression.
  • the signature also ensures that even if a CIP is corrupted such as because of a cosmic alpha particle, electromagnetic interference (EMI), clock or power failure, it can be corrected on-the-fly and therefore the decompression process for the full frame happens correctly.
  • EMI electromagnetic interference
  • FIG. 5A shows an example decompression scheme that uses an address calculation transform engine ⁇ -architecture for converting compressed data into an uncompressed data output (the original data 210 ).
  • the compressed data shown is this example is the compressed data 220 in FIG. 2 along with the compressed predicate of the respective DGs is processed by a parallel map and reduce block 510 that generates the transformed predicate 520 shown from the compressed predicates 225 received.
  • the usage of a parallel map and reduce block 510 circuit architecture based on systolic adders ensures that the transformed predicate values represent a dual data structure.
  • the first part of the data structure has information about the number of DGs that were successfully compressed and this can be calculated from the compressed predicate 225 input with log 2 n complexity to ensure fast computation.
  • the second part of the transformed predicate 520 can contain cumulative information of how many DGs were stored uncompressed till that point in a row. This transformed predicate 520 is then followed by an address pointers calculator 525 .
  • This address pointers calculator 525 multiplies the first part of the transformed predicate 520 for a DG by the compressed word size ( 31 in this example) and the second part of the transformed predicate 520 with the compressed word size ( 64 in this example). These two values are then added to calculate the compressed precedents' location pointers in retrieved compressed data.
  • the output of the address pointers calculator 525 is coupled to a decoder 530 for decoding the location of the precedents as well as to compute the correct uncompressed data values.
  • the decoder 530 fetches the precedent values from the compressed row data for each data group based on the address pointers calculator 525 . It also receives the compressed predicate for the row being uncompressed as another input.
  • the output of the decoder 530 is coupled to an add or copy as is decision block 535 . If a DG was stored with compression as indicated by the compressed predicate, then the precedent value for that DG is added with the other values received in compressed data to calculate uncompressed data values.
  • FIG. 5B shows an example circuit implementation for the address pointers calculator shown in FIG. 5A now shown as 525 ′ along with the parallel map and reduce circuit 510 now shown as parallel map and reduce log 2 n layers 510 ′.
  • Address pointers calculator 525 ′ includes an adder 525 a that adds the outputs of its' preceding two multipliers 525 b and 525 c .
  • 525 b multiplies the first half 520 a of the transformed predicate 520 for the corresponding DG with a fixed value that is equal to the size of compressed DG.
  • 525 c multiplies the second half 520 b of the corresponding DG with a fixed value that is equal to the size of uncompressed DG.
  • the output of address pointers calculator 525 ′ is coupled to decoder 530 .
  • the data structure for the transformed predicate 520 is calculated by a combination of map-reduce circuits 510 1 and 510 2 .
  • the input to both these circuits is the compressed predicate 225 for the data row being uncompressed.
  • 510 1 counts the number of data groups that were stored after successful compression preceding to the DG for the data row being uncompressed.
  • 510 2 counts the number of DGs that could not be compressed preceding to the DG for the data row being uncompressed.
  • FIG. 5C shows an example of the operation of an example add or copy as is block 535 .
  • the input to this circuit is compressed predicate 225 , compressed data and the precedents that are fetched from the address locations decoded by decoder 530 . If the compressed predicate indicates that the DG was stored after compression then the values received are added to the precedent by adders 538 a, b and c , otherwise these values are copied as is (no change) shown as uncompensated data output 210 a.
  • FIG. 6A shows a first example option for data storage of compressed data in a DDR memory.
  • This is a simple inline option that generally does not optimize the DDR memory density.
  • This method improves the DDR bandwidth for writing compressed data into memory.
  • the OP is prepended (attached as a header) to the actual compressed data packet.
  • the compressed data is stored in memory such that the first byte of CIP of every rasterized row is at a location where the actual data would have been if it was uncompressed.
  • This data storage format makes it easier to configure a DMA engine that can issue series of commands to access the data from every row in the frame.
  • the DMA/streaming engine can pull in the CIP, process the packet, and then forward the packet to parallel map and reduce block 510 , transformed predicate 520 and address pointers calculation block 525 .
  • FIG. 6B shows a second example option for data storage in a DDR memory.
  • This is a dense storage option that improves the DDR memory storage density, i.e. more data can be stored in the same DDR memory size compared to the first example option shown in FIG. 6A .
  • the CIP structure includes the address of the next CIP as well.
  • the cumulative data size field of the CIP structure can be used to determine the start address of the next row of data.
  • a DMA engine tasked with accessing compressed data frame reads the first CIP in the data frame, follows it up with fetching the exact bytes as indicated by the CIP to store the compressed row data and the CIP for the next row before forwarding the data it to the decompression circuit. Through this process the memory accessing logic of a DMA engine keeps calculating the addresses of the next access.
  • the address calculation thus performed is done through two unique processes, first with an optional CIP field that stores the address of the next CIP and the second by using the compressed data size field and adding it to the current address. This process ensures a functionally safe and reliable data access and guards against circuit failures caused by cosmic alpha particles, EMI, clock or random voltage noise.
  • Disclosed embodiments also include adaptive and scalable compression scheme algorithms. It is recognized that each dataset behaves differently and there is no ideal set of compression parameters to ensure the best compression results.
  • N all combinations of the DG size values and compressed word size values.
  • N all combinations of the DG size values and compressed word size values.
  • This adaptive and scalable compression algorithm and logic is fully scalable and ensures that an optimal compressed dataset is created for each row of data.
  • a 4 ⁇ semiconductor (e.g., silicon) area of the compression scheme ensures a 4 ⁇ improvement in performance.
  • a system 700 for compressing data signals including a processing unit 705 .
  • the processing unit 705 is shown formed on a substrate 702 having a semiconductor surface (e.g., silicon substrate) which can be implemented as a system-on-a-chip (SOC) architecture with distributed instantiation of the compression and decompression circuits.
  • the processing unit 705 can comprise a microprocessor, digital signal processor (DSP), or a microcontroller unit (MCU).
  • DSP digital signal processor
  • MCU microcontroller unit
  • the processing unit 705 is in electronic communication with a sensed data source 710 .
  • Examples of the data source can include, but are not limited to, a digital camera, a camcorder, a mobile device or device that captures and provides a video signal indicative of a physical scene, or an antenna together with an analog front end in the case of radar.
  • the processing unit 705 is in electronic communication with an external memory 715 .
  • An example of the external memory 715 is a DDR memory.
  • the processing unit 705 includes a processing subsystem 720 for processing the sensed date signal.
  • the data processing subsystem 720 includes a front end 725 and a back end 730 that is coupled together by a buffer 780 .
  • the front end 725 includes a sensor interface 735 that receives the sensed data signal from the data source 710 .
  • the back end 730 includes an encoder 740 for generating a compressed version of the frames in the data signal according a disclosed compression scheme.
  • the encoder 740 can include a separate unit for generating a compressed version of the frames of the data signal.
  • the processing unit 705 includes a direct memory access (DMA) data and configuration bus 745 .
  • the DMA data and configuration bus 745 transfer data and control signals between components in the processing unit 705 .
  • DMA direct memory access
  • the processing unit 705 includes a reduced instruction set computing (RISC) processor 750 that functions as a central processing unit.
  • the RISC processor 750 is operable to perform input or output functions, and system control functions.
  • the processing unit 705 includes a digital signal processor (DSP) 755 .
  • the DSP 755 is operable to process real-time signal processing software algorithms.
  • the DSP 755 is operable to process codecs.
  • a codec can be defined as a coding or decoding software.
  • the processing unit 705 includes a DMA controller 760 for direct memory accessing.
  • the processing unit 705 includes an on-chip memory 765 that stores frames of the data signal.
  • An example of the on-chip memory 765 is a static random access memory (SRAM).
  • the processing unit 705 can include other memories for storing the codecs.
  • the processing unit 705 also includes an external memory controller 770 for controlling the external memory 715 .
  • the processing unit 705 includes one or more peripherals 775 , for example a communication peripheral to transmit one or more frames of the data signal. Examples of the communication peripheral include ports and sockets.
  • the peripherals 775 can also include a system peripheral such as a timer and temporary storage such as a RAM.
  • FIG. 7B shows an example system 700 ′ for compressing and decompressing data signals.
  • System 700 ′ includes disclosed compression circuits 791 and decompression circuits 792 between the buffer 780 and the front end including the sensor interface 735 and between the buffer 780 and the back end 730 .
  • the example architecture of system 700 ′ ensures distributed compression and decompression blocks needed and instantiated at the inputs and outputs of various data processing and data input blocks of the system.
  • FIG. 7C depicts an example 4 types of compression and decompression blocks that can be used for implementing disclosed compression and decompression.
  • the modules shown include modules 1-4 shown as modules 794 , 795 , 796 and 797 . Each encircled number shown corresponds to a type of compression and decompression.
  • Encircled 1 which can be processed by module 794 shown corresponds to raster linear (1D) data Y plane image or linear radar data
  • encircled 2 which can be processed by module 795 is shown corresponding to raster linear data U
  • encircled 3 which can be processed by module 796 is shown corresponding to block wise (2D) random access for sensor data
  • encircled 4 which can be processed by module 797 is shown corresponding to block wise (2D) regular access for sensor data.
  • This example shown can also instantiate compression and decompression blocks for handling linear radar data.
  • the mechanisms, circuits and methods for compression and decompression allow the data handling for different data topologies (1D, 2D) and access patterns (regular or random) in fixed and deterministic time.
  • Disclosed compression enables random data access.
  • Disclosed embodiments are particularly well suited for safety critical applications, with the disclosed OP structure.
  • BOM Bill Of Materials
  • Disclosed embodiments allow a variety of external memory storage schemes, both linear and block-wise.
  • Disclosed embodiments also allow fixed density, decoupled control and data packets, and parallel processing of DGs which minimizes latency.
  • FIGS. 8A and 8B show compression ratio vs compression word size data for a DG size of 4 and 6, respectively, for an example imaging application using disclosed compression and decompression.
  • data was generated by varying the DG size 4 in FIG. 8A and DG size 6 in FIG. 8B .
  • the X-axis in FIGS. 8A and 8B records the CW size used for compression.
  • the best compression ratio is achieved for a CW size of 8 and DG size of 6 that is roughly equal to 0.6.
  • the original data samples were 16 bit image data (pixels). Each frame included about 300,000 pixels.
  • the post compression bandwidth is seen to have been reduced to 60% of the uncompressed data.
  • the achievable compression ratio was found to be about 70%.

Abstract

A method of data compression includes obtaining binary sensor data having rows with multi-bit data samples. The rows are divided into data groups each including two or more samples. A precedent value is selected for the rows or respective precedent values are selected for each data group. A compressed row of compressed sensor data is generated from each row by calculating differences between the data sample and the precedent value for its associated data groups. A Compression Information Packet (CIP) is generated for each row including information for returning the binary sensor data that includes a compressed predicate indicating whether each data group is stored compressed, a data group size being a multi-bit value that stores a group size used for row compression, and a compressed word size that stores a dynamic range of the row compression. The compressed rows are stored as stored compressed data along with the CIPs.

Description

    FIELD
  • Disclosed embodiments generally relate to methods for losslessly compressing and storing digital data including the organization of pixel information in memory.
  • BACKGROUND
  • Techniques for compressing data are common in the fields of communications and computers. In communications, it is often desirable to transmit compressed strings of data that upon reception can be reconstructed into their original form. Transmitting compressed data takes less time than transmitting the same data in an uncompressed format. In computers, compressed data offers a storage advantage over non-compressed data. Thus, for a storage device having a fixed storage capacity, more files can be stored therein if they are compressed.
  • Data compression techniques can be divided into two major categories: lossy and lossless. Lossless data compression techniques are employed when it is required that no information is lost in the compression/decompression process. Lossy data techniques are less accurate than lossless techniques but are generally are much faster. By definition, lossless compression techniques employ methods that guarantee the precise duplication of data after it has passed through the compression/decompression cycle. Lossless compression is most commonly associated with storage of digital data used in with a computer. Such applications include the storage of data base records, spread sheet information, and word processing files. If information in a data message is redundant so that its omission does not reduce, in any way, the information encoded in the data, the message can be shortened without losing any of the information encoded therein. Thus, lossless data compression reduces the size of the message without compromising the integrity of the information conveyed by the message.
  • Advanced driver assistance system (ADAS) algorithms as well as gaming, virtual reality, machine learning algorithms are all becoming limited by double data rate (DDR) memory performance and bandwidth. The data streams (radar data, images data, etc.) typically do show strong locality, but the bits are only “roughly equal”. Online data compression for raster data is needed to use DDR memory more effectively.
  • Compressing data is generally an easy problem to solve. The problems that are harder to solve are ensuring that the data size of the compressed data stream is bounded even for random data samples. Another problem is providing a decompression scheme during data read that is fast. Other problems include the requirement of being able to handle different data types and memory access schemes for such distinct data types. For example, a cache line fill versus a Direct Memory Access (DMA) controlled image data access will require different access schemes. Finally, another problem is providing random access to the compressed data within a deterministic and fixed time interval.
  • SUMMARY
  • This Summary is provided to introduce a brief selection of disclosed concepts in a simplified form that are further described below in the Detailed Description including the drawings provided. This Summary is not intended to limit the claimed subject matter's scope.
  • Disclosed embodiments provide methods and systems for dynamically configurable online lossless compression and decompression of rasterized sensor data, such as data from image sensors or radar sensors that provide random data access within a deterministic and fixed time. Disclosed embodiments include a method and system for lossless data compression with single clock cycle decompression.
  • The method comprises obtaining binary sensor data comprising a plurality of rows with each row including a plurality of multi-bit data samples. The rows are each divided into a plurality of data groups each including two or more samples. A precedent value is selected for each row or respective precedent values are selected for each of the data groups (DGs). A compressed row of compressed sensor data is generated from each row by calculating differences between each data sample and the precedent value for its associated DG. A Compression Information Packet (CIP) is generated for each row that includes information for losslessly returning (i.e. decompressing) the sensor data.
  • The CIP information includes a compressed predicate comprising a data structure which indicates whether each of the DGs is stored compressed, a flexible DG size being a multi-bit value that stores a group size used for row compression, and a compressed word size being a multi-bit value that stores a dynamic range of the row compression. The DG size can be for example, 16, 32 or 64 bits. The CIP information can also include a cumulative data size being a multi-bit value up to 128 bits which indicates the cumulative data size of the raster data till that row in the frame being stored, and a signature that captures the error correction code (ECC) and/or a cyclic redundancy check (CRC) encoded representation of the CIP for the row.
  • The compressed rows are stored as stored compressed data along with the CIPs. The method can further comprise decompressing the stored compressed data to losslessly recover the sensor data from any random memory location, and recovering all of the sensor data in a single clock cycle.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • Reference will now be made to the accompanying drawings, which are not necessarily drawn to scale, wherein:
  • FIG. 1 is a flow chart showing steps for an example method of lossless data compression, according to an example embodiment.
  • FIG. 2 shows an example of disclosed compression workings where a row comprising 256 bits of original data is converted in 157 bits of compressed data. Precedents for each DG in the row are shown for example as being the first data sample value in the DG.
  • FIG. 3A shows example lossless data compression having a single clock cycle parallel compression block and a voting circuit for obtaining compression parameters for obtaining a minimum compression ratio and compressed data size.
  • FIG. 3B shows example components for the precedent selection circuit and for the sample processing circuit.
  • FIG. 4 shows example formation of a CIP that is with the compressed data for each row.
  • FIG. 5A shows an example decompression scheme using a 2/2 address calculation transform engine μ-architecture for decompression by converting disclosed compressed data into an uncompressed original data output.
  • FIG. 5B shows an example circuit implementation for the address pointers calculator shown in FIG. 5A.
  • FIG. 5C shows an example of add or copy as is circuit operation.
  • FIG. 6A shows a first example option for data storage in a DDR memory that comprises an inline option.
  • FIG. 6B shows a second example option for data storage in a DDR memory which comprises a dense storage option.
  • FIG. 7A is a block diagram of an example system for lossless data compression of sensed data streams (radar data or image data), according to an example embodiment.
  • FIG. 7B is a block diagram of an example system for lossless data compression and decompressing of data signals.
  • FIG. 7C depicts 4 types of compression and decompression blocks that can be used for implementing disclosed compression and decompression in an example system.
  • FIGS. 8A and 8B show experimentally determined compression ratio vs compression word size data for a DG size of 4 and 6, respectively for an example imaging application.
  • DETAILED DESCRIPTION
  • Example embodiments are described with reference to the drawings, wherein like reference numerals are used to designate similar or equivalent elements. Illustrated ordering of acts or events should not be considered as limiting, as some acts or events may occur in different order and/or concurrently with other acts or events. Furthermore, some illustrated acts or events may not be required to implement a methodology in accordance with this disclosure.
  • Also, the terms “coupled to” or “couples with” (and the like) as used herein without further qualification are intended to describe either an indirect or direct electrical connection. Thus, if a first device “couples” to a second device, that connection can be through a direct electrical connection where there are only parasitics in the pathway, or through an indirect electrical connection via intervening items including other devices and connections. For indirect coupling, the intervening item generally does not modify the information of a signal but may adjust its current level, voltage level, and/or power level.
  • FIG. 1 is a flow chart showing steps for an example method 100 of lossless data compression of sensed data streams, according to an example embodiment. The sensed data streams can comprise radar data for radar applications such as frequency-modulated continuous-wave (FMCW) radar, or pixel data for imaging, such as for Advanced Driver Assistance Systems (ADAS) applications.
  • Step 101 comprises obtaining binary sensor data originating from a sensed data source comprising a plurality of rows with each row including a plurality of multi-bit (e.g., 16) data samples. Each row corresponds to a frame or as a channel, where the frames may include 2D planar data corresponding to each image captured at the same or different exposure times (e.g., 3) in the case of imaging application, or 2D planar data corresponding to radar sensor chirp reflections for every radar dwell. The sensed data source can be a sensor that provides real-time data as a data stream, or the data source can be a memory that stores sensor data obtained from a sensor.
  • Step 102 comprises dividing each row into a plurality of DGs each including two or more data samples. A “data group” (DG) as used herein is a consecutive group of raster data values (e.g., samples or pixels) that demonstrate data locality and are thus are relatively easy to compress. There will be 2 or more DGs in each row of rasterized data. For example, in FIG. 2 described below there are for example 4 DGs each having 4 samples per row shown in the example compression shown in FIG. 2 described below.
  • Step 103 comprises selecting a precedent value for each row or respective precedent values for each of the DGs in the rows. A “precedent value” as used herein is a value selected to minimize what is termed herein as “drift”. Drift is defined as the signed difference between current data value and the precedent within the DG being compressed. In one particular embodiment, as shown in FIG. 2, the precedent is the first data sample value in a DG.
  • There are a variety of methods for dynamically selecting precedent values. One way is such that it results into a smallest compressed data (highest compression ratio). Precedent values can also be selected based on a predicted value of every sample (e.g., pixel) in the DG, where the generating of a predicted value can be by linear, quadratic, mean, median or any other method which yields a better match for the sample being compressed. The precedent selection is an intelligent method generally performed with dedicated hardware. A precedent can be any data value in the row, average of all the data values, median of the data values or a user′ configured value. The circuit for precedent selection can also include statistical histogram computation for the data being compressed (see statistical histogram computation block (HIST) 311 shown in FIG. 3B described below) and the precedent can be selected based on the output of this block and heuristic rules that are pre-computed offline.
  • Step 104 comprises generating a compressed row of compressed sensor data from each row by calculating differences between each data sample and the precedent value for its associated DG. Step 105 comprises generating a CIP for each row having information for losslessly returning the sensor data. As noted above, a CIP includes a compressed predicate that comprises a data structure which indicates if each DG is stored compressed, a group size that is multi-bit value that stores a flexible data group size used for row compression, and a compressed word size being a multi-bit value that stores a dynamic range of the row compression. (See the example CIPs shown in FIG. 4 described below). Step 106 comprises storing the compressed rows as stored compressed data along with the CIPs. For example, see the storage options described below relative to FIG. 6A and FIG. 6B.
  • Method 100 can further comprise decompressing the stored compressed data. Step 107 shown in FIG. 1 comprises retrieving the stored compressed data from a memory (e.g., DDR or on-chip RAM) and decompressing to recover the original uncompressed data using the CIPs within a single cycle. For example, for decompressing, see the decompression circuit options described in FIG. 5A, FIG. 5B and FIG. 5C.
  • The method can also include parallel single clock cycle processing of all the plurality of DGs. Hardware is provided for calculating compressed output for all DGs in the row simultaneously (not linearly), such as shown in FIG. 3A described below, so that the time required for compression is independent of the DG group configuration, and precedent selection etc. The method can also comprise dynamically selecting a compressed word size to obtain the best compression output, reflected in a low compression ratio.
  • Compression parameters can be dynamically selected through control by the configuration including a drift, compressed word size, precedent values, and the DG size. The method can further comprises decompressing stored compressed data to losslessly recover the original sensor data including accessing random locations in a fixed time. Accessing random locations in fixed time means accessing any data value (e.g., pixel value) in a constant time. This is non-trivial as every DG that comes before that data value can be compressed onto any size. Instead of having to sequentially adding up the size of all the previous DGs, the CIP is defined. Using the cumulating data size, predicate, compressed word size and DG size, one can determine where the data value lies in the memory. The decompressing can comprise a single cycle for recovery of the sensor data. The method can further comprise using parallel map-reduce functions and a single cycle address pointer calculation for the decompressing.
  • FIG. 2 shows an example of a disclosed compression operation where a row comprising 256 bits of original data 210 that is uncompressed is converted into compressed data 220 comprising a row comprising 157 bits along with compressed predicates 225 shown comprising 4 1 bit compressed predicates. The compressed predicates shown are one bit data structures that indicates if a DG in the compressed data 220 has been compressed or not.
  • This example row compression provides a compression ratio of 161/256=59%. Precedents for each of the 4 data groups is shown as the being the first data sample value in the DG, with each sample having 16 bits, so that the DGs each have 64 bits. In the first row the DGs are shown as G1, G2, G3 and G4. In the compression scheme shown each DG has 4 samples, every data sample is 16 bits in the original data 210, and the compressed word size used was 5 bits. The compressed word size as used herein is a dynamically selectable compression parameter typically from 4 to 10 for 16 bit data which defines the dynamic range of drift for the data that can be compressed inside a DG.
  • In this example, G1, G2, and G4 are seen to be compressed, while there is no compression for the G3 because the range of drift for data in G3 is 50 (difference between 100 and 150 that are the minimum and maximum data values in the DG respectively) which is greater than the number that can be encoded in the 5 bits set by the compressed word size used. In G1, using the precedent of 2, the non-precedent original samples are processed by subtracting 2 from the original data sample values to provide the compressed data value. For the second sample of the second data group the calculation is 10−2=8. The compressed data predicate shown is given a 1 in case of G1, G2, and G4 which received compression, and a 0 for G3 which received no compression. An advantage is provided by disclosed methods by using a compressed predicate value of zero (or 1) to avoid decompression processing a DG when no data compression is implemented for the DG.
  • A basic principle for disclosed compression is to never increase the compressed data size in any row defined as the size of the compressed row plus the size of the CIP beyond a predetermined size determined by the original data size plus W/N bits, where W is original data length (in bits) and N is the size (in bits) of the DG. For example the original data length (row) is 256 bits in FIG. 2 and the final data length is 157 bits.
  • FIG. 3A shows example lossless data compression using single clock cycle parallel connected compression circuits 310 1, 310 2, to 310 n (collectively compression circuit 310) for each DG distributed across the raster data width that provide a minimum compression ratio for each row of original input binary sensor data shown received shown as input data 305. The compression circuits 310 1, 310 2, to 310 n each comprises two components described below in FIG. 3B as a precedent selection circuit 310 a for providing the precedent selection signals shown in FIG. 3A and a sample processing by differencing implemented by sample processing circuit 310 b that uses the respective precedent values received from precedent selection circuit 310 a to generate compressed data.
  • The compressed data output from the compression circuits 310 1, 310 2, to 310 n is shown coupled to a voting circuit 320 then to a DDR memory 330. There can be additional compression circuits which can be utilized to compress a row with different configuration values of DG size and drift. This can be followed by the voting circuit 320 shown, which compares the compression ratio achieved from all these computations and forwards the compressed data that corresponds to the best compression ratio to the DDR 330.
  • FIG. 3B shows example components for the precedent selection circuit 310 a and for the sample processing circuit 310 b. The precedent selection circuit 310 a shown in FIG. 3B can select from a plurality of different precedent selection options shown by example as first pixel 312 a, average shown as mean 312 b and median 312 c depending upon the statistical distribution of input data calculated by the HIST block 311. HIST block 311 outputs a MUX select signal 316 to a MUX 317 which in response outputs a precedent value.
  • These compression circuits 310 1, 310 2, to 310 n being electrically in parallel perform single clock cycle lossless compression over the input data 305 with a variety of configurations for DG size and dynamic range of drift and a data precedent selected based on the real-time calculations rendered. Output from these compression circuits 310 1, 310 2, to 310 n is compressed output data generated for the different configurations as well as the compression ratio achieved by each. The output of the compression circuits 310 1, 310 2, to 310 n is coupled to an input of a voting circuit 320 which implements voting for selecting precedents, DG size and drift that realized the best case compression and forwards the compressed data and CIP corresponding to that option to DDR memory 330 or another internal memory for storage.
  • FIG. 4 shows example formation of a CIP for each of 4 rows shown as Row 1 to Row 4. CIPs are stored in memory along with the compressed data (see FIGS. 6A and 6B described below). As described above, a CIP is a packet of data created and stored together with each row. The CIP is generally not considered when calculating the compression ratio because the size of the CIP is generally significantly less than that of a typical row size. For example, in a 2 Mpixel camera, the uncompressed row size is 6 kbytes, while the size of CIP will be <100 bytes. The CIP information is created by the compression circuits while compressing data and used by the decompressor circuits for extracting (decompressing) the original data packet. The fields in the example CIP shown in FIG. 4 include the compressed predicate being 1 bit (shown as W/N bits, but a circuit can make the compressed predicate a fixed bit field (e.g., 512 bits) thereby putting a limit on the maximum number of DGs) for every DG to indicate compression or not, where W is the raster row size and N the data group size.
  • A compressed data size is shown as 32 bits, where the total compressed data size is for one row of raster data being 157 bits for the example in FIG. 2, and a cumulative data size shown as 64 bits that is the total compressed data size of the frame till that row. The CIP also includes a compressed word (CW) size this is a 4 bit value that stores the dynamic range of compression scheme for the row signature, a DG size that is an 8 bit value that stores the flexible DG size used to compress one particular row, and an ECC and/or CRC signature calculated for every CIP which in turn corresponds to a row of data to ensure functional safety and correctness of compression. The signature also ensures that even if a CIP is corrupted such as because of a cosmic alpha particle, electromagnetic interference (EMI), clock or power failure, it can be corrected on-the-fly and therefore the decompression process for the full frame happens correctly.
  • FIG. 5A shows an example decompression scheme that uses an address calculation transform engine μ-architecture for converting compressed data into an uncompressed data output (the original data 210). The compressed data shown is this example is the compressed data 220 in FIG. 2 along with the compressed predicate of the respective DGs is processed by a parallel map and reduce block 510 that generates the transformed predicate 520 shown from the compressed predicates 225 received.
  • There is generally one transformed predicate computed for every DG. The usage of a parallel map and reduce block 510 circuit architecture based on systolic adders ensures that the transformed predicate values represent a dual data structure. The first part of the data structure has information about the number of DGs that were successfully compressed and this can be calculated from the compressed predicate 225 input with log2 n complexity to ensure fast computation. The second part of the transformed predicate 520 can contain cumulative information of how many DGs were stored uncompressed till that point in a row. This transformed predicate 520 is then followed by an address pointers calculator 525. This address pointers calculator 525 multiplies the first part of the transformed predicate 520 for a DG by the compressed word size (31 in this example) and the second part of the transformed predicate 520 with the compressed word size (64 in this example). These two values are then added to calculate the compressed precedents' location pointers in retrieved compressed data.
  • The output of the address pointers calculator 525 is coupled to a decoder 530 for decoding the location of the precedents as well as to compute the correct uncompressed data values. The decoder 530 fetches the precedent values from the compressed row data for each data group based on the address pointers calculator 525. It also receives the compressed predicate for the row being uncompressed as another input. The output of the decoder 530 is coupled to an add or copy as is decision block 535. If a DG was stored with compression as indicated by the compressed predicate, then the precedent value for that DG is added with the other values received in compressed data to calculate uncompressed data values. Otherwise the values in the compressed data are copied as is (no changes) by the add or copy as is decision block 535 as original data to a memory without adding these with precedents. This processing by add or copy as is decision block 535 results in return of the 256 bits of the row of original data 210 shown in FIG. 2.
  • FIG. 5B shows an example circuit implementation for the address pointers calculator shown in FIG. 5A now shown as 525′ along with the parallel map and reduce circuit 510 now shown as parallel map and reduce log2 n layers 510′. Address pointers calculator 525′ includes an adder 525 a that adds the outputs of its' preceding two multipliers 525 b and 525 c. 525 b multiplies the first half 520 a of the transformed predicate 520 for the corresponding DG with a fixed value that is equal to the size of compressed DG. 525 c multiplies the second half 520 b of the corresponding DG with a fixed value that is equal to the size of uncompressed DG.
  • The output of address pointers calculator 525′ is coupled to decoder 530. The data structure for the transformed predicate 520 is calculated by a combination of map-reduce circuits 510 1 and 510 2. The input to both these circuits is the compressed predicate 225 for the data row being uncompressed. 510 1 counts the number of data groups that were stored after successful compression preceding to the DG for the data row being uncompressed. 510 2 counts the number of DGs that could not be compressed preceding to the DG for the data row being uncompressed.
  • FIG. 5C shows an example of the operation of an example add or copy as is block 535. The input to this circuit is compressed predicate 225, compressed data and the precedents that are fetched from the address locations decoded by decoder 530. If the compressed predicate indicates that the DG was stored after compression then the values received are added to the precedent by adders 538 a, b and c, otherwise these values are copied as is (no change) shown as uncompensated data output 210 a.
  • FIG. 6A shows a first example option for data storage of compressed data in a DDR memory. This is a simple inline option that generally does not optimize the DDR memory density. This method improves the DDR bandwidth for writing compressed data into memory. The OP is prepended (attached as a header) to the actual compressed data packet. The compressed data is stored in memory such that the first byte of CIP of every rasterized row is at a location where the actual data would have been if it was uncompressed. This data storage format makes it easier to configure a DMA engine that can issue series of commands to access the data from every row in the frame. The DMA/streaming engine can pull in the CIP, process the packet, and then forward the packet to parallel map and reduce block 510, transformed predicate 520 and address pointers calculation block 525.
  • FIG. 6B shows a second example option for data storage in a DDR memory. This is a dense storage option that improves the DDR memory storage density, i.e. more data can be stored in the same DDR memory size compared to the first example option shown in FIG. 6A. In this case the CIP structure includes the address of the next CIP as well. Alternatively, the cumulative data size field of the CIP structure can be used to determine the start address of the next row of data. A DMA engine tasked with accessing compressed data frame reads the first CIP in the data frame, follows it up with fetching the exact bytes as indicated by the CIP to store the compressed row data and the CIP for the next row before forwarding the data it to the decompression circuit. Through this process the memory accessing logic of a DMA engine keeps calculating the addresses of the next access.
  • The address calculation thus performed is done through two unique processes, first with an optional CIP field that stores the address of the next CIP and the second by using the compressed data size field and adding it to the current address. This process ensures a functionally safe and reliable data access and guards against circuit failures caused by cosmic alpha particles, EMI, clock or random voltage noise.
  • Disclosed embodiments also include adaptive and scalable compression scheme algorithms. It is recognized that each dataset behaves differently and there is no ideal set of compression parameters to ensure the best compression results. One can define a constrained range of “valid parameters” for a range of DG sizes and compressed word sizes so that they are both flexible parameters. For example, the valid values of DG size can be 4, 8, 12 and 16. Similarly, valid values for the compressed word size can be between 6 and 12. For every row of data the following steps can be performed:
  • i) in parallel, run compression for the full row using the N parameter sets (N=all combinations of the DG size values and compressed word size values). Generate N CIPs;
    ii) compare the size of the compressed data (compressed data size) from each of the runs in i) by comparing the relevant CIP fields (total compressed size), and
    iii) picking the best compressed word size and DG choice on the basis of the voting circuit 320 comparison of the compression ratios achieved for all performed configuration options.
  • This adaptive and scalable compression algorithm and logic is fully scalable and ensures that an optimal compressed dataset is created for each row of data. A 4× semiconductor (e.g., silicon) area of the compression scheme ensures a 4× improvement in performance. One can constrain the semiconductor area by using the same circuitry in a time-multiplexed fashion, at the cost of some latency.
  • Referring to FIG. 7A now, a system 700 for compressing data signals is shown including a processing unit 705. The processing unit 705 is shown formed on a substrate 702 having a semiconductor surface (e.g., silicon substrate) which can be implemented as a system-on-a-chip (SOC) architecture with distributed instantiation of the compression and decompression circuits. The processing unit 705 can comprise a microprocessor, digital signal processor (DSP), or a microcontroller unit (MCU). The processing unit 705 is in electronic communication with a sensed data source 710. Examples of the data source can include, but are not limited to, a digital camera, a camcorder, a mobile device or device that captures and provides a video signal indicative of a physical scene, or an antenna together with an analog front end in the case of radar. The processing unit 705 is in electronic communication with an external memory 715. An example of the external memory 715 is a DDR memory.
  • The processing unit 705 includes a processing subsystem 720 for processing the sensed date signal. The data processing subsystem 720 includes a front end 725 and a back end 730 that is coupled together by a buffer 780. The front end 725 includes a sensor interface 735 that receives the sensed data signal from the data source 710. The back end 730 includes an encoder 740 for generating a compressed version of the frames in the data signal according a disclosed compression scheme. In some embodiments, the encoder 740 can include a separate unit for generating a compressed version of the frames of the data signal. The processing unit 705 includes a direct memory access (DMA) data and configuration bus 745. The DMA data and configuration bus 745 transfer data and control signals between components in the processing unit 705.
  • The processing unit 705 includes a reduced instruction set computing (RISC) processor 750 that functions as a central processing unit. The RISC processor 750 is operable to perform input or output functions, and system control functions. The processing unit 705 includes a digital signal processor (DSP) 755. The DSP 755 is operable to process real-time signal processing software algorithms. In one embodiment, the DSP 755 is operable to process codecs. A codec can be defined as a coding or decoding software.
  • The processing unit 705 includes a DMA controller 760 for direct memory accessing. The processing unit 705 includes an on-chip memory 765 that stores frames of the data signal. An example of the on-chip memory 765 is a static random access memory (SRAM). The processing unit 705 can include other memories for storing the codecs. The processing unit 705 also includes an external memory controller 770 for controlling the external memory 715. The processing unit 705 includes one or more peripherals 775, for example a communication peripheral to transmit one or more frames of the data signal. Examples of the communication peripheral include ports and sockets. The peripherals 775 can also include a system peripheral such as a timer and temporary storage such as a RAM.
  • FIG. 7B shows an example system 700′ for compressing and decompressing data signals. System 700′ includes disclosed compression circuits 791 and decompression circuits 792 between the buffer 780 and the front end including the sensor interface 735 and between the buffer 780 and the back end 730. The example architecture of system 700′ ensures distributed compression and decompression blocks needed and instantiated at the inputs and outputs of various data processing and data input blocks of the system.
  • FIG. 7C depicts an example 4 types of compression and decompression blocks that can be used for implementing disclosed compression and decompression. The modules shown include modules 1-4 shown as modules 794, 795, 796 and 797. Each encircled number shown corresponds to a type of compression and decompression. Encircled 1 which can be processed by module 794 shown corresponds to raster linear (1D) data Y plane image or linear radar data, encircled 2 which can be processed by module 795 is shown corresponding to raster linear data U, V interleaved plane image data, encircled 3 which can be processed by module 796 is shown corresponding to block wise (2D) random access for sensor data, and encircled 4 which can be processed by module 797 is shown corresponding to block wise (2D) regular access for sensor data. This example shown can also instantiate compression and decompression blocks for handling linear radar data. The mechanisms, circuits and methods for compression and decompression allow the data handling for different data topologies (1D, 2D) and access patterns (regular or random) in fixed and deterministic time.
  • Advantages of disclosed embodiments include a simple lossless and dynamic adaptive data compression scheme. Disclosed compression enables random data access. Disclosed embodiments are particularly well suited for safety critical applications, with the disclosed OP structure. There are potential Bill Of Materials (BOM) cost reductions for functional safety. Disclosed embodiments allow a variety of external memory storage schemes, both linear and block-wise. Disclosed embodiments also allow fixed density, decoupled control and data packets, and parallel processing of DGs which minimizes latency.
  • Examples
  • Disclosed embodiments are further illustrated by the following specific Examples, which should not be construed as limiting the scope or content of this Disclosure in any way.
  • FIGS. 8A and 8B show compression ratio vs compression word size data for a DG size of 4 and 6, respectively, for an example imaging application using disclosed compression and decompression. For this example, data was generated by varying the DG size 4 in FIG. 8A and DG size 6 in FIG. 8B. The X-axis in FIGS. 8A and 8B records the CW size used for compression. In this particular example, the best compression ratio is achieved for a CW size of 8 and DG size of 6 that is roughly equal to 0.6. The original data samples were 16 bit image data (pixels). Each frame included about 300,000 pixels. The post compression bandwidth is seen to have been reduced to 60% of the uncompressed data. For 12 bit image data (not shown), the achievable compression ratio was found to be about 70%.
  • Those skilled in the art to which this disclosure relates will appreciate that many other embodiments and variations of embodiments are possible within the scope of the claimed invention, and further additions, deletions, substitutions and modifications may be made to the described embodiments without departing from the scope of this disclosure.

Claims (19)

1. A method of lossless data compression, comprising:
obtaining binary sensor data comprising a plurality of rows with each said row including a plurality of multi-bit data samples;
dividing each said row into a plurality of data groups each including two or more of said multi-bit data samples;
selecting a precedent value for each said row or respective ones of said precedent values for each of said plurality of data groups;
generating a compressed row of compressed sensor data from each said row by calculating differences between each said data sample and said precedent value for its associated one of said data groups;
generating a Compression Information Packet (CIP) for each said row having information for losslessly returning said binary sensor data including a compressed predicate comprising a data structure which indicates whether each of said data groups is stored compressed, a data group size being a multi-bit value that stores a group size used for row compression, and a compressed word size being a multi-bit value that stores a dynamic range of said row compression, and
storing said compressed rows as stored compressed data along with said CIPs.
2. The method of claim 1, wherein said method comprises parallel single clock cycle processing of all of said plurality of data groups.
3. The method of claim 1, further comprising using a voting circuit that dynamically selects said compressed word size.
4. The method of claim 1, further comprising dynamically selecting compression parameters controlled by configuration including a drift being a difference between a current data value and said precedent value within said data group, said compressed word size, said precedent values, and said data group size.
5. The method of claim 1, further comprising decompressing said stored compressed data to recover said binary sensor data including accessing random location in a fixed time.
6. The method of claim 5, wherein said decompressing comprises a single cycle for said recovery of said binary sensor data.
7. The method of claim 1, further comprising using parallel map-reduce functions and a single cycle address pointer calculation for said decompressing.
8. The method of claim 1, wherein said CIP includes at least one error correction code (ECC) or a cyclic redundancy check (CRC) field.
9. A system for providing lossless data compression, comprising:
a sensor interface for receiving binary sensor data comprising a plurality of rows with each said row including a plurality of multi-bit data samples;
a data processing subsystem including an encoder having an input coupled to an output of said sensor interface, said data processing subsystem including hardware and software for:
dividing each said row into a plurality of data groups each including two or more of said multi-bit data samples;
selecting a precedent value for each said row or respective ones of said precedent values for each of said plurality of data groups;
generating a compressed row of compressed sensor data from each said row by calculating differences between each said data sample and said precedent value for its associated said data groups, and
generating a Compression Information Packet (CIP) for each said row having information for losslessly returning said binary sensor data including a compressed predicate comprising a data structure which indicates whether each of said data groups is stored compressed, a data group size being a multi-bit value that stores a group size used for row compression, and a compressed word size being a multi-bit value that stores a dynamic range of said row compression.
10. The system of claim 9, wherein said data processing subsystem further provides storing said compressed rows as stored compressed data along with said CIPs.
11. The system of claim 9, wherein said data processing subsystem includes circuitry for parallel processing of said plurality of data groups.
12. The system of claim 9, wherein said encoder comprises a substrate having a semiconductor surface.
13. The system of claim 9, further comprising a single clock cycle compression circuit for implementing said lossless data compression.
14. The system of claim 10, further comprising a voting circuit for dynamical selecting said compressed word size.
15. The system of claim 10, further comprising a dynamic selecting compression parameter block controlled by configuration including a drift being a value of a difference between a current data value and said precedent value within said data group, said compressed word size, said precedent values, and said data group size.
16. The system of claim 10, further comprising a decoder for decompressing said stored compressed data to recover said binary sensor data.
17. The system of claim 16, wherein said decoder comprises a decompression circuit which operates in a single cycle for said recovery of said binary sensor data.
18. The system of claim 16, further comprising using parallel map-reduce functions and a single cycle address pointers calculator for identifying a location of said precedent values for said decompressing.
19. The system of claim 10, wherein said CIP includes at least one error correction code (ECC) or a cyclic redundancy check (CRC) field.
US15/376,170 2016-12-12 2016-12-12 Lossless data compression Active 2037-01-12 US10069511B2 (en)

Priority Applications (5)

Application Number Priority Date Filing Date Title
US15/376,170 US10069511B2 (en) 2016-12-12 2016-12-12 Lossless data compression
CN201780068635.7A CN109952708B (en) 2016-12-12 2017-12-12 Lossless data compression
PCT/US2017/065915 WO2018111942A1 (en) 2016-12-12 2017-12-12 Lossless data compression
EP17880411.8A EP3552312A4 (en) 2016-12-12 2017-12-12 Lossless data compression
JP2019551920A JP7421036B2 (en) 2016-12-12 2017-12-12 lossless data compression

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US15/376,170 US10069511B2 (en) 2016-12-12 2016-12-12 Lossless data compression

Publications (2)

Publication Number Publication Date
US20180167083A1 true US20180167083A1 (en) 2018-06-14
US10069511B2 US10069511B2 (en) 2018-09-04

Family

ID=62490497

Family Applications (1)

Application Number Title Priority Date Filing Date
US15/376,170 Active 2037-01-12 US10069511B2 (en) 2016-12-12 2016-12-12 Lossless data compression

Country Status (5)

Country Link
US (1) US10069511B2 (en)
EP (1) EP3552312A4 (en)
JP (1) JP7421036B2 (en)
CN (1) CN109952708B (en)
WO (1) WO2018111942A1 (en)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10402111B1 (en) * 2017-08-14 2019-09-03 Xilinx, Inc. Systems and methods for data storage compression
CN110247666A (en) * 2019-05-22 2019-09-17 深圳大学 A kind of system and method for hardware concurrent compression
CN111307182A (en) * 2020-03-06 2020-06-19 宁波飞芯电子科技有限公司 Data processing method and array type sensor
CN111697973A (en) * 2019-05-16 2020-09-22 时擎智能科技(上海)有限公司 Compression method and compression system
US10824433B2 (en) 2018-02-08 2020-11-03 Marvell Asia Pte, Ltd. Array-based inference engine for machine learning
US10891136B1 (en) 2018-05-22 2021-01-12 Marvell Asia Pte, Ltd. Data transmission between memory and on chip memory of inference engine for machine learning via a single data gathering instruction
US10929779B1 (en) 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Architecture to support synchronization between core and inference engine for machine learning
US10929778B1 (en) * 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Address interleaving for machine learning
US10929760B1 (en) 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Architecture for table-based mathematical operations for inference acceleration in machine learning
US10997510B1 (en) 2018-05-22 2021-05-04 Marvell Asia Pte, Ltd. Architecture to support tanh and sigmoid operations for inference acceleration in machine learning
US11016801B1 (en) 2018-05-22 2021-05-25 Marvell Asia Pte, Ltd. Architecture to support color scheme-based synchronization for machine learning
WO2021130086A1 (en) * 2019-12-23 2021-07-01 Ams Ag Lossless data transfer compression
US20220294467A1 (en) * 2019-09-24 2022-09-15 Conti Temic Microelectronic Gmbh Processing of lossy-compressed adas sensor data for driver assistance systems
US11615286B2 (en) 2019-05-24 2023-03-28 Neuchips Corporation Computing system and compressing method for neural network parameters
US20230177730A1 (en) * 2021-12-07 2023-06-08 International Business Machines Corporation Stochastic compression of raster data

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112241005A (en) * 2019-07-19 2021-01-19 杭州海康威视数字技术股份有限公司 Method and device for compressing radar detection data and storage medium
CN114268323B (en) * 2021-12-24 2023-07-07 成都索贝数码科技股份有限公司 Data compression coding method, device and time sequence database supporting line memory

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9748972B2 (en) * 2015-09-14 2017-08-29 Leco Corporation Lossless data compression
US9843588B2 (en) * 2011-04-27 2017-12-12 Iii Holdings 1, Llc Systems and methods for lossless compression of data and high speed manipulation thereof
US9900025B2 (en) * 2014-10-29 2018-02-20 Institute Of Geology And Geophysics, Chinese Academy Of Sciences Efficient adaptive seismic data flow lossless compression and decompression method
US9923577B1 (en) * 2016-09-04 2018-03-20 ScaleFlux, Inc. Hybrid software-hardware implementation of lossless data compression and decompression

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04252569A (en) * 1991-01-28 1992-09-08 Nec Corp Picture data compression system
JPH06319047A (en) * 1993-05-07 1994-11-15 Seiko Epson Corp Information processor
JPH1132328A (en) * 1997-07-10 1999-02-02 Pfu Ltd Method and device for compressing multilevel picture data and recording medium
US9204157B2 (en) 2011-11-18 2015-12-01 Texas Instruments Incorporated Video compression searching reference frame in hybrid growing-window and sliding-window
CN201523455U (en) * 2009-09-24 2010-07-07 信飞系统公司 Signal compression device in base transceiver system
JP2012013657A (en) 2010-07-05 2012-01-19 Ihi Infrastructure Systems Co Ltd Spectroscopy analyzer
JP5591080B2 (en) * 2010-11-26 2014-09-17 三菱電機株式会社 Data compression apparatus, data processing system, computer program, and data compression method
US20120239612A1 (en) 2011-01-25 2012-09-20 Muthian George User defined functions for data loading
JP2014075687A (en) 2012-10-04 2014-04-24 Seiko Epson Corp Image data compression apparatus, image data decompression apparatus, display device, image processing system, image data compression method, and image data decompression method
US9800886B2 (en) 2014-03-07 2017-10-24 Lattice Semiconductor Corporation Compressed blanking period transfer over a multimedia link
US9496894B1 (en) * 2015-10-21 2016-11-15 GE Lighting Solutions, LLC System and method for data compression over a communication network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9843588B2 (en) * 2011-04-27 2017-12-12 Iii Holdings 1, Llc Systems and methods for lossless compression of data and high speed manipulation thereof
US9900025B2 (en) * 2014-10-29 2018-02-20 Institute Of Geology And Geophysics, Chinese Academy Of Sciences Efficient adaptive seismic data flow lossless compression and decompression method
US9748972B2 (en) * 2015-09-14 2017-08-29 Leco Corporation Lossless data compression
US9923577B1 (en) * 2016-09-04 2018-03-20 ScaleFlux, Inc. Hybrid software-hardware implementation of lossless data compression and decompression

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10402111B1 (en) * 2017-08-14 2019-09-03 Xilinx, Inc. Systems and methods for data storage compression
US11086633B2 (en) 2018-02-08 2021-08-10 Marvell Asia Pte, Ltd. Single instruction set architecture (ISA) format for multiple ISAS in machine learning inference engine
US10970080B2 (en) 2018-02-08 2021-04-06 Marvell Asia Pte, Ltd. Systems and methods for programmable hardware architecture for machine learning
US11256517B2 (en) 2018-02-08 2022-02-22 Marvell Asia Pte Ltd Architecture of crossbar of inference engine
US11029963B2 (en) 2018-02-08 2021-06-08 Marvell Asia Pte, Ltd. Architecture for irregular operations in machine learning inference engine
US10824433B2 (en) 2018-02-08 2020-11-03 Marvell Asia Pte, Ltd. Array-based inference engine for machine learning
US10896045B2 (en) 2018-02-08 2021-01-19 Marvell Asia Pte, Ltd. Architecture for dense operations in machine learning inference engine
US10891136B1 (en) 2018-05-22 2021-01-12 Marvell Asia Pte, Ltd. Data transmission between memory and on chip memory of inference engine for machine learning via a single data gathering instruction
US10997510B1 (en) 2018-05-22 2021-05-04 Marvell Asia Pte, Ltd. Architecture to support tanh and sigmoid operations for inference acceleration in machine learning
US10929760B1 (en) 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Architecture for table-based mathematical operations for inference acceleration in machine learning
US10929779B1 (en) 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Architecture to support synchronization between core and inference engine for machine learning
US11016801B1 (en) 2018-05-22 2021-05-25 Marvell Asia Pte, Ltd. Architecture to support color scheme-based synchronization for machine learning
US10929778B1 (en) * 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Address interleaving for machine learning
CN111697973A (en) * 2019-05-16 2020-09-22 时擎智能科技(上海)有限公司 Compression method and compression system
CN110247666A (en) * 2019-05-22 2019-09-17 深圳大学 A kind of system and method for hardware concurrent compression
US11615286B2 (en) 2019-05-24 2023-03-28 Neuchips Corporation Computing system and compressing method for neural network parameters
US20220294467A1 (en) * 2019-09-24 2022-09-15 Conti Temic Microelectronic Gmbh Processing of lossy-compressed adas sensor data for driver assistance systems
US11876540B2 (en) * 2019-09-24 2024-01-16 Conti Temic Microelectronic Gmbh Processing of lossy-compressed ADAS sensor data for driver assistance systems
WO2021130086A1 (en) * 2019-12-23 2021-07-01 Ams Ag Lossless data transfer compression
US20230074041A1 (en) * 2019-12-23 2023-03-09 Ams Ag Lossless data transfer compression
CN111307182A (en) * 2020-03-06 2020-06-19 宁波飞芯电子科技有限公司 Data processing method and array type sensor
US20230177730A1 (en) * 2021-12-07 2023-06-08 International Business Machines Corporation Stochastic compression of raster data

Also Published As

Publication number Publication date
EP3552312A1 (en) 2019-10-16
WO2018111942A1 (en) 2018-06-21
EP3552312A4 (en) 2019-12-25
JP7421036B2 (en) 2024-01-24
CN109952708B (en) 2023-06-30
US10069511B2 (en) 2018-09-04
CN109952708A (en) 2019-06-28
JP2020501475A (en) 2020-01-16

Similar Documents

Publication Publication Date Title
US10069511B2 (en) Lossless data compression
US9425828B2 (en) Memory device and memory system
CN102033728B (en) Graphic system
US20180167088A1 (en) Error-Correcting Code Method and System with Hybrid Block Product Codes
US11093168B2 (en) Processing of neural networks on electronic devices
US11960986B2 (en) Neural network accelerator and operating method thereof
US9858994B2 (en) Memory system with MLC memory cells and partial page compression or reduction
WO2015176638A1 (en) Count table maintenance apparatus for maintaining count table during processing of frame and related count table maintenance method
CN114222129A (en) Image compression encoding method, image compression encoding device, computer equipment and storage medium
US11455259B2 (en) Memory module data object processing systems and methods
US11562241B2 (en) Data output method, data acquisition method, device, and electronic apparatus
CN108668169B (en) Image information processing method and device, and storage medium
US20160291898A1 (en) Methods and systems for processing files in memory
Gashnikov et al. A hierarchical compression method for space images
US20210385468A1 (en) Methods, apparatuses, computer programs and computer-readable media for processing configuration data
US20210409735A1 (en) Methods, apparatuses, computer programs and computer-readable media for scalable video coding and transmission
CN114375462A (en) Multi-view and multi-scale method and apparatus for view synthesis
CN111651188A (en) Data result determining method, device, equipment and storage medium for differential packet
CN116325741A (en) Point cloud encoding method, point cloud decoding method and related devices
CN115022628B (en) JPEG-LS (joint photographic experts group-LS) -based high-throughput lossless image compression method
CN114302150B (en) Video encoding method and device, video decoding method and device and electronic equipment
US11048413B2 (en) Method for reducing read ports and accelerating decompression in memory systems
US20160098814A1 (en) Data processing systems
CN113949868B (en) Entropy coding method and device
CN112329925B (en) Model generation method, feature extraction method, device and electronic equipment

Legal Events

Date Code Title Description
AS Assignment

Owner name: TEXAS INSTRUMENTS INCORPORATED, TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DUBEY, AISHWARYA;SANGHVI, HETUL;SIGNING DATES FROM 20161208 TO 20161212;REEL/FRAME:040714/0411

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4