IP Library Granted Patent US 10,505,563
Granted Patent B1
US 10,505,563 · App. 16/171,863 · Granted Dec 10, 2019

Techniques for optimizing entropy computations

Inventors: Istvan Gonczi (Berkley, MA); Ivan Bassov (Brookline, MA); Sorin Faibish (Newton, MA)
Assignee: EMC IP Holding Company LLC
H03M7/6011H03M7/3095H03M7/4031H03M7/42
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,505,563
App. No.
16/171,863
Granted
Dec 10, 2019
Kind
B1
Abstract

Techniques for data processing may include: determining a data layout for a configuration of counters stored in registers, wherein each of the registers is configured to store at least two counters, and each counter is associated with a particular data item allowable in the data set and denotes a current frequency of the particular data item; receiving data items of a data chunk of the data set; for each data item received, performing processing including: determining a first of the counters corresponding to the data item, wherein the first counter is stored in a first of the registers and denotes a current frequency of the data item; and incrementing the first counter stored in the first register by one; and determining, in accordance with the counters stored in the registers, an entropy value for the data chunk.

Claims (59)

1. A method of data processing comprising:

determining a data layout for a configuration of a plurality of counters stored in a plurality of registers, wherein each of the plurality of registers is configured to store at least two of the plurality of counters, wherein a first portion of data items allowable in a data set are mapped to the plurality of counters, wherein each of the plurality of counters is associated with a particular data item of the first portion of data items allowable in the data set and denotes a current frequency of the particular data item;

receiving a plurality of data items of a data chunk of the data set;

for each data item of the plurality of data items, performing processing including:

determining a first of the plurality of counters corresponding to said each data item, wherein the first counter is stored in a first of the plurality of registers and denotes a current frequency of said each data item in the first plurality of data items; and

incrementing the first counter stored in the first register by one; and

determining, in accordance with the plurality of counters stored in the plurality of registers, an entropy value for the data chunk.

2. The method of claim 1 , wherein the plurality of counters are not stored in memory and are only stored in the plurality of registers.

3. The method of claim 1 , wherein each of the plurality of counters is associated with a different data item of the first portion of data items allowable in the data set and each of the plurality of counters is implemented as a data type having a size of a number of bits capable of representing a range of defined frequency values, wherein the range includes a maximum number of potential occurrences of the different data item allowable in the data chunk.

4. The method of claim 1 , wherein a second plurality of counters are stored in memory and associated with a second portion of data items allowable in the data set, and wherein each of the second plurality of counters is associated with a particular data item of the second portion of data items allowable in the data set and denotes a current frequency of the particular data item.

5. The method of claim 4 , further comprising:

ranking an aggregate set of data items allowable in the data set, wherein said ranking is performed in accordance with probabilities that data items of the aggregate set are expected to occur in the data set, wherein said aggregate set includes the first portion of data items allowable in the data set and includes the second portion of data items allowable in the data set;

selecting the first portion of data items allowable in the data set for storage in the plurality of registers, wherein the first portion of data items are ranked by said ranking as having highest associated probabilities of expected occurrence in the data set; and

selecting the second portion of data items allowable in the data chunk for storage in memory, where the second portion of data items are ranked by said ranking as having associated probabilities of expected occurrence in the data set which are less than probabilities of expected occurrence in the data set associated with the first portion of data items allowable in the data set.

6. The method of claim 1 , wherein the plurality of data items received in said receiving are data items processed in a single pass, wherein a number of data items in the plurality of data items is selected in accordance with a maximum counter value representable by each of the plurality of counters stored in the plurality of registers.

7. The method of claim 6 , wherein after performing the processing for the plurality of data items of the single pass, the method includes performing other processing including:

updating in-memory cumulative counter values for the data chunk in accordance with the plurality of counters stored in the plurality of registers, wherein each of the plurality of counters stored in one of the plurality of registers has a corresponding one of the in-memory cumulative counter values and said updating adds said each counter stored in the one register to the corresponding one of the in-memory cumulative counter values.

8. The method of claim 7 , further comprising:

receiving a second plurality of data items of the data chunk processed in a second single pass, wherein a number of data items in the second plurality of data items is selected in accordance with the maximum counter value representable by each of the plurality of counters stored in the plurality of registers.

9. The method of claim 8 , further comprising:

for each data item of the second plurality of data items, performing second processing including:

determining one of the plurality of counters corresponding to said each data item, wherein the one counter is stored in a second of the plurality of registers and denotes a current frequency of said each data item in the second plurality of data items; and

incrementing the one counter stored in the second register by one; and

updating the in-memory cumulative counter values for the data chunk in accordance with the plurality of counters stored in the plurality of registers after completing the second processing for the second plurality of data items, wherein said updating after completing the second processing adds the plurality of counters stored in the plurality of registers to corresponding ones of the in-memory cumulative counter values.

10. The method of claim 9 , wherein said determining an entropy value for the data chunk uses the in-memory cumulative counter values for the data chunk.

11. The method of claim 1 , wherein the entropy value for the data chunk is determined inline as part of I/O path processing for the data chunk.

12. The method of claim 11 , further comprising:

determining, in accordance with the entropy value for the data chunk, whether to compress the data chunk.

13. The method of claim 12 , further comprising:

determining whether the entropy value for the data chunk is greater than an entropy threshold;

responsive to determining that the entropy value for the data chunk is greater than the entropy threshold, determining that the data chunk is uncompressible and not to compress the data chunk, wherein the data chunk is stored in its original uncompressed form; and

responsive to determining that the entropy value for the data chunk is equal to or less than the entropy threshold, compressing the data chunk.

14. The method of claim 13 , wherein subsequent to said compressing the data chunk, the method includes:

determining whether a compressed form of the data chunk, as compared to an original uncompressed form of the data chunk, achieves at least a threshold level of data reduction;

responsive to determining the compressed form of the data chunk achieves at least a threshold level of data reduction, determining the data chunk is compressible and storing the data chunk in the compressed form; and

responsive to determining the compressed form of the data chunk does not achieve at least a threshold level of data reduction, determining the data chunk is uncompressible and storing the data chunk in its uncompressed form.

15. A system comprising:

at least one processor; and

at least one memory comprising code stored thereon that, when executed, performs a method of data processing comprising:

determining a data layout for a configuration of a plurality of counters stored in a plurality of registers, wherein each of the plurality of registers is configured to store at least two of the plurality of counters, wherein a first portion of data items allowable in a data set are mapped to the plurality of counters, wherein each of the plurality of counters is associated with a particular data item of the first portion of data items allowable in the data set and denotes a current frequency of the particular data item;

receiving a plurality of data items of a data chunk of the data set;

for each data item of the plurality of data items, performing processing including:

determining a first of the plurality of counters corresponding to said each data item, wherein the first counter is stored in a first of the plurality of registers and denotes a current frequency of said each data item in the first plurality of data items; and

incrementing the first counter stored in the first register by one; and

determining, in accordance with the plurality of counters stored in the plurality of registers, an entropy value for the data chunk.

16. A non-transitory computer readable medium comprising code stored thereon that, when executed, performs a method of data processing comprising:

determining a data layout for a configuration of a plurality of counters stored in a plurality of registers, wherein each of the plurality of registers is configured to store at least two of the plurality of counters, wherein a first portion of data items allowable in a data set are mapped to the plurality of counters, wherein each of the plurality of counters is associated with a particular data item of the first portion of data items allowable in the data set and denotes a current frequency of the particular data item;

receiving a plurality of data items of a data chunk of the data set;

for each data item of the plurality of data items, performing processing including:

determining a first of the plurality of counters corresponding to said each data item, wherein the first counter is stored in a first of the plurality of registers and denotes a current frequency of said each data item in the first plurality of data items; and

incrementing the first counter stored in the first register by one; and

determining, in accordance with the plurality of counters stored in the plurality of registers, an entropy value for the data chunk.

17. The non-transitory computer readable medium of claim 16 , wherein the plurality of counters are not stored in memory and are only stored in the plurality of registers.

18. The non-transitory computer readable medium of claim 16 , wherein each of the plurality of counters is associated with a different data item of the first portion of data items allowable in the data set and each of the plurality of counters is implemented as a data type having a size of a number of bits capable of representing a range of defined frequency values, wherein the range includes a maximum number of potential occurrences of the different data item allowable in the data chunk.

19. The non-transitory computer readable medium of claim 16 , wherein a second plurality of counters are stored in memory and associated with a second portion of data items allowable in the data set, and wherein each of the second plurality of counters is associated with a particular data item of the second portion of data items allowable in the data set and denotes a current frequency of the particular data item.

20. The non-transitory computer readable medium of claim 19 , wherein the method further comprises:

ranking an aggregate set of data items allowable in the data set, wherein said ranking is performed in accordance with probabilities that data items of the aggregate set are expected to occur in the data set, wherein said aggregate set includes the first portion of data items allowable in the data set and includes the second portion of data items allowable in the data set;

selecting the first portion of data items allowable in the data set for storage in the plurality of registers, wherein the first portion of data items are ranked by said ranking as having highest associated probabilities of expected occurrence in the data set; and

selecting the second portion of data items allowable in the data chunk for storage in memory, where the second portion of data items are ranked by said ranking as having associated probabilities of expected occurrence in the data set which are less than probabilities of expected occurrence in the data set associated with the first portion of data items allowable in the data set.

Assignments (5)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST AF REEL 052243 FRAME 0773 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0152 →
SECURITY AGREEMENT Recorded Mar 26, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 052243/0773 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 26, 2018
From: GONCZI, ISTVAN; BASSOV, IVAN; FAIBISH, SORIN
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 047327/0423 →