IP Library Granted Patent US 12,483,270
Granted Patent B2
US 12,483,270 · App. 18/518,441 · Granted Nov 25, 2025

Using predicates in conditional transcoder for column store

Inventors: Yang Seok Ki (Palo Alto, CA); Ho Bin Lee (San Jose, CA)
Assignee: SAMSUNG ELECTRONICS CO., LTD.
H03M7/3066G06F3/0604G06F3/0656G06F3/0679H03M7/3059H03M7/46H03M7/6011
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 12,483,270
App. No.
18/518,441
Filed
Nov 22, 2023
Granted
Nov 25, 2025
Kind
B2
Art Unit
2132
USPC
711/154
Abstract

A storage device is disclosed. The storage device may comprise storage for input encoded data. A controller may process read requests and write requests from a host computer on the data in the storage. An in-storage compute controller may receive a predicate from the host computer to be applied to the input encoded data. A transcoder may include an index mapper to map an input dictionary to an output dictionary, with one entry in the input dictionary mapped to an entry in the output dictionary, and another entry in the input dictionary mapped to a “don't care” entry in the output dictionary.

Claims (46)

1 . A storage device, comprising:

storage for a first data and a second data, the first data including a first entry and a second entry, one of the first entry and the second entry applicable to the second data;

a processor to receive an instruction, the instruction to be applied to the first data, the instruction including a filtering data; and

a controller to generate a third entry and a fourth entry from the first entry and the second entry based at least in part on the filtering data,

wherein one of first entry and the second entry is different from the third entry or the fourth entry.

2 . The storage device according to claim 1 , wherein the controller includes at least one of a processor, a Field Programmable Gate Array (FPGA), an Application-Specific Integrated Circuit (ASIC), a Graphics Processing Unit (GPU), or a General Purpose GPU (GPGPU).

3 . The storage device according to claim 1 , wherein the processor is operative to apply an acceleration function on a third data encoded using at least one of the third entry or the fourth entry.

4 . The storage device according to claim 3 , wherein:

the storage further stores a fourth data; and

the storage device is configured to generate the third data based at least in part on the fourth data, the third entry, and the fourth entry.

5 . The storage device according to claim 4 , wherein:

the fourth data uses a first encoding scheme;

the third data uses a second encoding scheme; and

the second encoding scheme is different from the first encoding scheme.

6 . The storage device according to claim 4 , further comprising:

a first buffer to store the first data;

a second buffer to store a third data, the third data based at least in part on the first data, the third entry, and the fourth entry;

a third buffer to store a fourth data, the fourth data based at least in part on a fifth data, the third entry, and the fourth entry; and

a rule evaluator to generate an output stream based at least in part on the third data in the second buffer, the fourth data in the third buffer, and at least one transcoding rule.

7 . The storage device according to claim 6 , wherein the at least one transcoding rule is based at least in part on the filtering data.

8 . The storage device according to claim 1 , wherein the data is stored in the storage in a columnar format.

9 . The storage device according to claim 8 , further comprising a column chunk processor to process a column chunk including the data.

10 . The storage device according to claim 9 , wherein the column chunk processor includes at least one of a processor, an FPGA, an ASIC, a GPU, or a GPGPU.

11 . A method, comprising:

receiving an instruction to apply to a first data, the instruction including a filtering data;

identifying a first entry in the first data covered by the instruction and a second entry in the first data not covered by the instruction, the first entry and the second entry applicable to a second data; and

generating a third data including a third entry and a fourth entry based at least in part on the first entry, the second entry, and the filtering data.

12 . The method according to claim 11 , wherein the data includes a column chunk stored in a columnar format.

13 . The method according to claim 11 , further comprising:

transcoding the second data into a fourth data based at least in part on the third data; and

outputting the fourth data.

14 . The method according to claim 13 , wherein:

transcoding the first data into the fourth data based at least in part on the third data includes:

receiving a first chunk from the first data;

determining that the first chunk is covered by the filtering data; and

generating a second chunk from the first chunk of data based at least in part on the third data; and

outputting the fourth data includes outputting the second chunk.

15 . The method according to claim 14 , further comprising generating transcoding rules to apply to the first data based at least in part on the filtering data.

16 . The method according to claim 13 , wherein outputting the fourth data includes outputting the fourth data to a controller of a storage device.

17 . The method according to claim 16 , wherein outputting the fourth data to the controller further includes outputting the third data to the controller.

18 . The method according to claim 17 , further comprising performing an acceleration function on the fourth data by the controller to produce a fifth data.

19 . An article, comprising a non-transitory storage medium, the non-transitory storage medium having stored thereon instructions that, when executed by a machine, result in:

receiving an instruction to apply to a first data, the instruction including a filtering data;

identifying a first entry in the first data covered by the instruction and a second entry in the first data not covered by the instruction, the first entry and the second entry applicable to a second data; and

generating a third data including a third entry and a fourth entry based at least in part on the first entry, the second entry, and the filtering data.

20 . The article according to claim 19 , wherein the data includes a column chunk stored in a columnar format.

Continuity (7)
Continuation 17518581 · Nov 3, 2021
Continuation 16820675 · Mar 16, 2020
Provisional Application 62945877 · Dec 9, 2019
Provisional Application 62945883 · Dec 9, 2019
Provisional Application 62834900 · Apr 16, 2019
Provisional Application 62819499 · Mar 15, 2019
Related Publication 20240088914A1 · Mar 14, 2024
References Cited (50)
US 5861827A · Welch et al. · 1999 [cited by applicant]
US 5918225A · White et al. · 1999 [cited by applicant]
US 7646317B2 · Chen · 2010 [cited by applicant]
US 7966343B2 · Yang et al. · 2011 [cited by applicant]
US 7978768B2 · Koto · 2011 [cited by applicant]
US 8032499B2 · Faerber et al. · 2011 [cited by applicant]
US 8159374B2 · Schneider · 2012 [cited by applicant]
US 8170095B2 · Roman · 2012 [cited by applicant]
US 8239421B1 · Marwah · 2012 [cited by examiner]
US 8626725B2 · Netz et al. · 2014 [cited by applicant]
US 8762387B1 · Patel et al. · 2014 [cited by applicant]
US 8930798B2 · Cideciyan et al. · 2015 [cited by applicant]
US 9418091B2 · Li et al. · 2016 [cited by applicant]
US 9779071B2 · Kataoka et al. · 2017 [cited by applicant]
US 10951679B2 · Corley et al. · 2021 [cited by applicant]
US 10951905B2 · Mao et al. · 2021 [cited by applicant]
US 10951906B2 · Kelly et al. · 2021 [cited by applicant]
US 11048624B2 · Fischer et al. · 2021 [cited by applicant]
US 11139827B2 · Ki et al. · 2021 [cited by applicant]
US 11184021B2 · Ki · 2021 [cited by examiner]
US 11838035B2 · Ki · 2023 [cited by examiner]
US 20030138158A1 · Schwartz · 2003 [cited by applicant]
US 20080294676A1 · Faerber · 2008 [cited by examiner]
US 20090002207A1 · Harada et al. · 2009 [cited by applicant]
US 20090060047A1 · Schneider · 2009 [cited by applicant]
US 20090254532A1 · Yang et al. · 2009 [cited by applicant]
US 20100214137A1 · Schneider · 2010 [cited by applicant]
US 20120194361A1 · Archbold et al. · 2012 [cited by applicant]
US 20130060780A1 · Lahiri et al. · 2013 [cited by applicant]
US 20160094242A1 · Ackerman et al. · 2016 [cited by applicant]
US 20170011022A1 · Grossman · 2017 [cited by examiner]
US 20170155403A1 · Kletter · 2017 [cited by applicant]
US 20190171634A1 · Nowakiewicz et al. · 2019 [cited by applicant]
US 20190279095A1 · Guntoro et al. · 2019 [cited by applicant]
US 20200295779A1 · Ki et al. · 2020 [cited by applicant]
US 20220309180A1 · Barbas et al. · 2022 [cited by applicant]
CA 2156889C · 1999 [cited by applicant]
CN 106354699A · 2017 [cited by applicant]
CN 108197087A · 2018 [cited by applicant]
JP 2007096800A · 2007 [cited by applicant]
JP 2017028372A · 2017 [cited by applicant]
KR 20170042431A · 2017 [cited by applicant]
KR 20180119473A · 2018 [cited by applicant]
TW 410311B · 2000 [cited by applicant]
TW 200844798A · 2008 [cited by applicant]
WO 9952111A1 · 1999 [cited by applicant]
Notice of Allowance for U.S. Appl. No. 16/820,665, mailed Apr. 15, 2021. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 16/820,675, mailed Jul. 22, 2021. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 17/518,581, mailed Jul. 26, 2023. [cited by applicant]
Office Action for U.S. Appl. No. 17/518,581, mailed Mar. 2, 2023. [cited by applicant]