Rapid character substring searching

US10169451B1 · US · B1

Patent metadata
FieldValue
Publication numberUS-10169451-B1
Application numberUS-201815957984-A
CountryUS
Kind codeB1
Filing dateApr 20, 2018
Priority dateApr 20, 2018
Publication dateJan 1, 2019
Grant dateJan 1, 2019

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.

A processor unit can be used to rapidly search a string of characters. The processor unit can include vector registers each having M vector elements, each vector element having n bits of data for containing an encoded character. An M×M matrix of comparators within the processor unit can be used to compare elements of a first register storing a reference string and elements of a second register storing a target string. A logic gate is associated with each diagonal of the matrix of comparators, and is configured to combine the results of comparators along the diagonal, resulting in a bit vector indicating characters of the target string that fully match the reference string and characters that partially match the reference string. Correction logic within the processor unit can suppress indications of a partial match or of a full match in the bit vector.

First claim

Opening claim text (preview).

What is claimed is: 1. A processor unit for searching, within a target character string, for a reference character string of length “L,” the processor unit comprising a plurality of vector registers each including a number “M” of n-bit vector elements, each vector element of the M n-bit vector elements configured to contain a binary-encoded character, the processor unit further comprising: an M×M matrix of comparators configured to perform a character-by-character comparison of characters of a reference string stored in a first register of the plurality of vector registers with characters of a target string stored in a second register of the plurality of vector registers; a plurality of logic gates, each logic gate of the plurality of logic gates associated with a respective diagonal of the matrix of comparators, each logic gate of the plurality of logic gates configured to combine the results of comparators located along the respective diagonal of the matrix of comparators, the plurality of logic gates configured to produce a bit vector indicating at least one item selected from the group consisting of: characters of the target string that fully match characters of the reference string and characters of the target string that partially match characters of the reference string; and correction logic configured to suppress an indication of at least one item selected from the group consisting of: a partial match in the resulting bit vector and a full match in the resulting bit vector. 2. The processor unit of claim 1 , wherein the plurality of logic gates includes an AND gate chain configured to perform a logical AND operation between outputs of comparators located along a diagonal of the matrix of comparators. 3. The processor unit of claim 2 , wherein the AND gate chain includes an AND gate connected to outputs of each adjacent pair of comparators of the diagonal of the matrix of comparators. 4. The processor unit of claim 1 , the correction logic including a register configured to store the resulting bit vector, the register including a correction mask and logic for performing a logical AND operation between corresponding elements of the resulting bit vector and of the correction mask. 5. The processor unit of claim 1 , the plurality of logic gates further including: zero-detect logic configured to identify empty n-bit vector elements of the first register and to generate a zero bit vector including logical values indicating the identified empty n-bit vector elements and indicating the non-empty n-bit vector elements; and a logic circuit for performing a logical OR operation between each bit value of the zero bit vector and the output of a corresponding comparator, wherein the corresponding comparator output results from the comparison of an n-bit vector element stored in the first register to an n-bit vector element stored in the second register. 6. The processor unit of claim 5 , the logic circuit for performing logical OR operation including a plurality of OR gates, wherein each OR gate of the plurality of OR gates is connected between an AND gate and a respective comparator. 7. The processor unit of claim 1 , wherein the correction logic includes: a NOR logic circuit configured to identify empty elements of the first register and further configured to generate a zero bit vector having values indicating of positions of the identified empty elements and non-empty elements; a shift unit configured to shift the zero bit vector and reverse the order of bits in the shifted zero bit vector, the shifting and reversing of the order of bits producing a correction mask having the last L−1 bits set to zero; and a combination logic configured to combine the correction mask with the resulting bit vector for the suppression. 8. The processor unit of claim 1 , wherein the resulting bit vector includes a first bit value located in a first bit position that indicates a beginning of a substring of the target string that fully matches the reference string and a second bit value at a second bit position that indicates the beginning of a substring of the target string that matches a portion of the reference string. 9. The processor unit of claim 1 , wherein the correction logic is configured to maintain an indication of the characters of the target string that fully match characters of the reference string in the bit vector. 10. The processor unit of claim 1 , wherein the comparators are equality comparators. 11. A method for searching within a target character string of length “L,” using a processor unit comprising a plurality of vector registers each including a number “M” of n-bit vector elements, each vector element of the M n-bit vector elements configured to contain a binary-encoded character, the method comprising: loading a reference string into a first register of the plurality of vector registers; loading a target string into a second register of the plurality of vector registers; performing, using an M×M matrix of comparators, a character-by-character comparison of characters of the reference string with characters of the target string; combining, with a plurality of logic gates, each logic gate of the plurality of logic gates associated a respective diagonal of the matrix of comparators, the results of comparators located along the respective diagonal of the matrix of comparators, the combining producing a bit vector indicating at least one item selected from the group consisting of: characters of the target string that fully match characters of the reference string and characters of the target string that partially match characters of the reference string; and suppressing, with a correction logic, an indication of at least one item selected from the group consisting of: a partial match in the resulting bit vector and a full match in the resulting bit vector. 12. The method of claim 11 , wherein the suppressing includes performing a bitwise operation on the resulting bit vector. 13. The method of claim 12 , further comprising: creating a correction mask having rightmost L−1 bits set to a logical “0”; and performing a logical AND operation between the resulting bit vector and the correction mask for use in performing the suppression. 14. The method of claim 11 , further comprising: identifying empty elements of the first register and, in response to the identifying, generating a zero bit vector including values that indicate identified empty elements and non-empty elements; and using the zero bit vector to disregard comparisons involving the empty elements. 15. The method of claim 11 , wherein bits of the resulting bit vector are ordered so that a first bit includes the results of comparators along a main diagonal of the matrix, and so that subsequent bits include the results of comparators located along respective subsequent diagonals adjacent to the main diagonal. 16. A computer program product for searching, within a target character string, for a reference character string of length “L,” using at least one processor unit comprising a plurality of vector registers each including a number “M” of n-bit vector elements, each vector element of the M n-bit vector elements configured to contain a binary-encoded character, the computer program product comprising at least one non-transitory computer-readable storage medium having program instructions embodied therewith, the program instructions executable by the at least one processor unit to cause the at least one processor unit to perform a method comprising: loading a reference string into a first register of the plurality of vector registers;

Assignees

Inventors

Classifications

  • Character encoding · CPC title

  • by using string matching techniques · CPC title

  • characterised by logic function, e.g. AND, OR, NOR, NOT circuits (H03K19/003 - H03K19/01 take precedence) · CPC title

  • using vector based model · CPC title

  • the logic functions being realised by the interconnection of rows and columns · 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 US10169451B1 cover?
A processor unit can be used to rapidly search a string of characters. The processor unit can include vector registers each having M vector elements, each vector element having n bits of data for containing an encoded character. An M×M matrix of comparators within the processor unit can be used to compare elements of a first register storing a reference string and elements of a second register …
Who is the assignee on this patent?
IBM
What technology area does this patent fall under?
Primary CPC classification G06F16/3347. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jan 01 2019 00:00:00 GMT+0000 (Coordinated Universal Time) (B1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 4 related publications on this page (citations in our corpus or others sharing the same primary CPC).