Data compaction using vectorized instructions
AssigneeOracle International Corporation
InventorsRajkumar Sen, Sam Idicula, Nipun Agarwal
Life of this patent
Estimating the term…
Abstract
Techniques for performing database operations using vectorized instructions are provided. In one technique, data compaction is performed using vectorized instructions to identify a shuffle mask based on matching bits and update an output array based on the shuffle mask and an input array. In a related technique, a hash table probe involves using vectorized instructions to determine whether each key in one or more hash buckets matches a particular input key.
Claims24
One or more storage media storing instructions which, when executed by one or more processors, cause:
- storing, in a first register, a plurality of matching data elements, each of which indicates whether a corresponding input data element in a plurality of input data elements is to be stored in a set of output data elements;
- executing a first vectorized instruction against the plurality of the matching data elements in the first register to generate a first result;
- based on the first result, identifying a shuffle mask from among a plurality of shuffle masks;
- storing the shuffle mask in a second register;
- storing the plurality of input data elements in a third register that is different than the second register;
- executing a second vectorized instruction against the plurality of input data elements in the third register and the shuffle mask in the second register to generate a second result;
- storing one or more output data elements based on the second result.
One or more storage media storing instructions which, when executed by one or more processors, further cause:
- in response to receiving a first key from a second relation, generating a first hash value based on a first hash function and the first key;
- identifying, based on the first hash value, a first hash bucket in a hash table that is generated based on a first relation that is different than the second relation;
- wherein the hash table contains duplicate values for each of one or more keys from the first relation;
- using a plurality of vectorized instructions to determine whether each key in the first hash bucket matches the first key.
A method comprising:
- storing, in a first register, a plurality of matching data elements, each of which indicates whether a corresponding input data element in a plurality of input data elements is to be stored in a set of output data elements;
- executing a first vectorized instruction against the plurality of the matching data elements in the first register to generate a first result;
- based on the first result, identifying a shuffle mask from among a plurality of shuffle masks;
- storing the shuffle mask in a second register;
- storing the plurality of input data elements in a third register that is different than the second register;
- executing a second vectorized instruction against the plurality of input data elements in the third register and the shuffle mask in the second register to generate a second result;
- storing one or more output data elements based on the second result;
- wherein the method is performed by one or more computing devices.
A method comprising:
- in response to receiving a first key from a second relation, generating a first hash value based on a first hash function and the first key;
- identifying, based on the first hash value, a first hash bucket in a hash table that is generated based on a first relation that is different than the second relation;
- wherein the hash table contains duplicate values for each of one or more keys from the first relation;
- using a plurality of vectorized instructions to determine whether each key in the first hash bucket matches the first key;
- wherein the method is performed by one or more computing devices.
Dependencies are inferred from the claim text.