Performing an aggregation operation using vectorized instructions

US9292558B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9292558-B2
Application numberUS-201313956354-A
CountryUS
Kind codeB2
Filing dateAug 1, 2013
Priority dateJul 31, 2013
Publication dateMar 22, 2016
Grant dateMar 22, 2016

How to read this patent

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

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

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

  4. Key dates

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

  5. First independent claim

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

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Techniques for performing database operations using vectorized instructions are provided. In one technique, an aggregation operation involves executing vectorized instructions to update a data value that corresponds to a particular key. The aggregation operation may be one of count, sum, minimum, maximum, or average.

First claim

Opening claim text (preview).

What is claimed is: 1. A method comprising: in response to determining to perform an aggregation operation, generating a hash table based on data from a relation; wherein generating the hash table comprises: identifying a key that originates from the relation; generating a hash value based on the key; identifying, based on the hash value, in the hash table, a bucket that contains a plurality of keys; loading the plurality of keys into a first register; determining whether the key matches a key in the plurality of keys; loading a plurality of data values into a particular register, wherein the plurality of data values includes a particular data value; in response to determining that the key matches a key in the plurality of keys, using one or more vectorized instructions to update, based on a data value, the particular data value to generate an updated data value, wherein a vectorized instruction, of the one or more vectorized instructions, when processed, causes a single operation to be performed on the plurality of data values in the particular register; wherein the method is performed by one or more computing devices. 2. The method of claim 1 , wherein generating the hash table further comprises updating the bucket to include the updated data value. 3. The method of claim 1 , wherein updating the particular data value comprises summing the particular data value and the data value to generate the updated data value, wherein the data value originates from the relation. 4. The method of claim 1 , wherein: the particular data value is an integer value; the data value is the value one; updating the particular data value comprises increasing the particular data value by one. 5. The method of claim 1 , wherein: the data value originates from the relation; using the one or more vectorized instructions comprises determining whether the data value is less than the particular data value; and the updated data value is generated only in response to determining that the data value is less than the particular data value. 6. The method of claim 1 , wherein: the data value originates from the relation; using the one or more vectorized instructions comprises determining whether the data value is greater than the particular data value; and the updated data value is generated only in response to determining that the data value is greater than the particular data value. 7. The method of claim 1 , wherein using the one or more vectorized instructions comprises: determining a position, within in a second register, that corresponds to a particular key, of the plurality of keys, that matches the key; based on the position, identifying a shuffle mask from among a plurality of shuffle masks; performing a shuffle operation using the shuffle mask and a second mask. 8. One or more storage media storing instructions which, when executed by one or more processors, cause: in response to determining to perform an aggregation operation, generating a hash table based on data from a relation; wherein generating the hash table comprises: identifying a key that originates from the relation; generating a hash value based on the key; identifying, based on the hash value, in the hash table, a bucket that contains a plurality of keys; loading the plurality of keys into a first register; determining whether the key matches a key in the plurality of keys; loading a plurality of data values into a particular register, wherein the plurality of data values includes a particular data value; in response to determining that the key matches a key in the plurality of keys, using one or more vectorized instructions to update, based on a data value, the particular data value to generate an updated data value, wherein a vectorized instruction, of the one or more vectorized instructions, when processed, causes a single operation to be performed on the plurality of data values in the particular register. 9. The one or more storage media of claim 8 , wherein generating the hash table further comprises updating the bucket to include the updated data value. 10. The one or more storage media of claim 8 , wherein updating the particular data value comprises summing the particular data value and the data value to generate the updated data value, wherein the data value originates from the relation. 11. The one or more storage media of claim 8 , wherein: the particular data value is an integer value; the data value is the value one; updating the particular data value comprises increasing the particular data value by one. 12. The one or more storage media of claim 8 , wherein: the data value originates from the relation; using the one or more vectorized instructions comprises determining whether the data value is less than the particular data value; and the updated data value is generated only in response to determining that the data value is less than the particular data value. 13. The one or more storage media of claim 8 , wherein: the data value originates from the relation; using the one or more vectorized instructions comprises determining whether the data value is greater than the particular data value; and the updated data value is generated only in response to determining that the data value is greater than the particular data value. 14. The one or more storage media of claim 8 , wherein using the one or more vectorized instructions comprises: determining a position, within in a second register, that corresponds to a particular key, of the plurality of keys, that matches the key; based on the position, identifying a shuffle mask from among a plurality of shuffle masks; performing a shuffle operation using the shuffle mask and a second mask. 15. The method of claim 1 , wherein each data value of the plurality of data values is the same as each other data value of the plurality of data values. 16. The method of claim 1 , wherein determining whether the key matches a key in the plurality of keys comprises: loading multiple copies of the key into a second register that is different than the first register; using a particular vectorized instruction to compare contents of the first register with contents of the second register. 17. The method of claim 16 , further comprising: storing a result of the particular vectorized instruction in a third register; loading multiple copies of the data value or of the value one into a fourth register that is different than the third register; wherein using the one or more vectorized instructions comprises executing a vectorized AND instruction based on contents of the third register and contents of the fourth register. 18. The one or more storage media of claim 8 , wherein each data value of the plurality of data values is the same as each other data value of the plurality of data values. 19. The one or more storage media of claim 8 , wherein determining whether the key matches a key in the plurality of keys comprises: loading multiple copies of the key into a second register that is different than the first register; using a particular vectorized instruction to compare contents of the first register with contents of the second register. 20. The one or more storage media of claim 19 , wherein the instructions, when executed by the one or more processors, further cause: storing a result of the particular vectorized instruction in a third register; loading multiple copies of the data value or of the value one into a fourth register that is different than

Assignees

Inventors

Classifications

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

  • Compare instructions, e.g. Greater-Than, Equal-To, MINMAX · CPC title

  • Hash tables · CPC title

  • Join operations · CPC title

  • Join order optimisation · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

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

What does patent US9292558B2 cover?
Techniques for performing database operations using vectorized instructions are provided. In one technique, an aggregation operation involves executing vectorized instructions to update a data value that corresponds to a particular key. The aggregation operation may be one of count, sum, minimum, maximum, or average.
Who is the assignee on this patent?
Oracle Int Corp
What technology area does this patent fall under?
Primary CPC classification G06F9/30021. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Mar 22 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 1 related publication on this page (citations in our corpus or others sharing the same primary CPC).