Memory apparatus for in-place regular expression search
First Claim
1. A method of searching for data stored in a memory, the method comprising:
- receiving a regex search request;
generating a parse tree comprising fundamental regex operations corresponding to the regex search request;
individually analyzing each of the fundamental regex operations of the generated parse tree in a respective time-step;
determining a memory address location of data corresponding to the analyzed fundamental regex operations by;
using a translation table to determine whether the data exists; and
using a reverse translation table to determine the memory address location of the data, the data being stored in a deduplicated format;
outputting data matching the regex search request after analyzing all of the fundamental regex operations of the generated parse tree;
setting a minimum substring match ability;
providing a rolling window covering a portion of a searched pattern corresponding to the regex search request; and
upon finding a match within the rolling window, searching for data having an address location immediately prior to or immediately subsequent to an address location of data corresponding to the match within the rolling window.
1 Assignment
0 Petitions
Accused Products
Abstract
A method of searching for data stored in a memory, the method including receiving a regex search request, generating a parse tree including fundamental regex operations corresponding to the regex search request, individually analyzing each of the fundamental regex operations of the generated parse tree in a respective time-step, determining a memory address location of data corresponding to the analyzed fundamental regex operations by using a translation table to determine whether the data exists, and using a reverse translation table to determine the memory address location of the data, and outputting data matching the regex search request after analyzing all of the fundamental regex operations of the generated parse tree.
24 Citations
20 Claims
-
1. A method of searching for data stored in a memory, the method comprising:
-
receiving a regex search request; generating a parse tree comprising fundamental regex operations corresponding to the regex search request; individually analyzing each of the fundamental regex operations of the generated parse tree in a respective time-step; determining a memory address location of data corresponding to the analyzed fundamental regex operations by; using a translation table to determine whether the data exists; and using a reverse translation table to determine the memory address location of the data, the data being stored in a deduplicated format; outputting data matching the regex search request after analyzing all of the fundamental regex operations of the generated parse tree; setting a minimum substring match ability; providing a rolling window covering a portion of a searched pattern corresponding to the regex search request; and upon finding a match within the rolling window, searching for data having an address location immediately prior to or immediately subsequent to an address location of data corresponding to the match within the rolling window. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A system for searching for data stored in a memory, the system comprising:
-
a processor of a regex module configured to communicate with a host CPU; and a memory having instructions stored thereon that, when executed by the processor, cause the processor to; receive a regex search request; generate a parse tree comprising fundamental regex operations corresponding to the regex search request; individually analyze each of the fundamental regex operations of the generated parse tree in a respective time-step; determine a memory address location of data corresponding to the analyzed fundamental regex operations by; using a pointer to indicate a starting memory address of the data; using a counter to indicate a number of memory addresses from the starting memory address having the data; using a bit vector for storing matches; and eliminating non-matches at each of a plurality of time-steps using logic implementation; and output data matching the regex search request after all of the fundamental regex operations of the generated parse tree are analyzed. - View Dependent Claims (9, 10, 11, 12, 13)
-
-
14. A system for searching for data stored in a memory of a memory module, the system comprising:
-
an application configured to receive a regex search request; a driver configured to generate a parse tree comprising fundamental regex operations corresponding to the regex search request; and a regex module configured to; individually analyze each of the fundamental regex operations of the generated parse tree in a respective time-step; determine a memory address location of data corresponding to the analyzed fundamental regex operations; set a minimum substring match ability; provide a rolling window covering a portion of a searched pattern corresponding to the regex search request; and upon finding a match within the rolling window, search for data having an address location immediately prior to or immediately subsequent to an address location of data corresponding to the match within the rolling window, wherein the application is further configured to output data matching the regex search request after all of the fundamental regex operations of the generated parse tree are analyzed. - View Dependent Claims (15, 16, 17, 18, 19, 20)
-
Specification