Intelligent storage device to execute a hint search
A storage device enables a host to search for data stored across channels on a memory device without reading the user data stored on the channels. The storage device includes a memory device including user channels to store user data and a hash channel to store hash data associated with the user data. The hash data is used to identify the user data. A controller on the storage device generates the hash data including hint data during storage of user data on the user channels. The controller receives a hint from the host, generates a request and submits the request to a pattern search engine. The controller sends a hint response including flash translation indices to the host, based on a response from the pattern search engine. The host may read the flash translation indices to request data stored at a specific location in the user channels.
1 . A storage device to enable a host to search for data stored across channels on a memory device without reading user data stored on user channels, the storage device comprises:
the memory device includes the user channels to store user data and a hash channel to store hash data associated with the user data, wherein the hash data is used to identify user data; and
a controller to generate the hash data including hint data during storage of the user data on the user channels in a stripe, receive a hint from the host, generate a request, submit the request to a pattern search engine, and send a hint response including flash translation indices to the host, based on a response from the pattern search engine,
wherein the host reads the flash translation indices to request data stored at a specific location in the user channels.
2 . The storage device of claim 1 , wherein the controller further comprises a front-end module to interface with the host and receive a vendor unique command with the hint from the host.
3 . The storage device of claim 1 , wherein the controller further comprises a flash translation layer to support a RAID-N stripe format including N−2 user channels, the hash channel, and a parity channel and trigger a hash generator when the user data is stored on the user channels, wherein the hash generator generates the hash data.
4 . The storage device of claim 3 , wherein the flash translation layer includes a first search manager to perform one of a full search and a partial search for the hint across the user channels and the hash channel and the first search manager creates a per channel hint search request that is sent to a second search manager.
5 . The storage device of claim 4 , wherein the second search manager reads the hash data for the user channels in the hash channel, generates a request, and submits the request to the pattern search engine.
6 . The storage device of claim 1 , wherein the controller further comprises a back-end module to interface with the memory device and support a RAID-N stripe format including N−2 user channels, the hash channel, and a parity channel.
7 . The storage device of claim 1 , wherein the controller further comprises a parity generator to generate parity information for error correction on the user data, wherein the parity information is stored on a parity channel.
8 . The storage device of claim 1 , wherein the controller further comprises a hash generator to receive predefined sized data and to create a unique hash value for a logical page of data, wherein a hash data size corresponds with the logical page.
9 . The storage device of claim 1 , wherein the hash generator generates a partial hash from a partial data source.
10 . The storage device of claim 1 , wherein the hint is one of a single sequence of bytes and a data structure with multiple information and the hint is a unique hash word associated with a data unit.
11 . The storage device of claim 1 , wherein the hint is a one of a parity polynomial data as a whole and a data structure that is used with additional hints for further accuracy during a search.
12 . The storage device of claim 1 , further comprises the pattern search engine that is a transceiver in a hardware data path in which a search is performed in real time and the pattern search engine searches the hash channel for the hash data associated with the hint and returns a match list of the hash data that matches the hint to the controller.
13 . A method on a storage device for enabling a host to search for data stored across channels on a memory device without reading user data stored on the channels, the storage device comprises a controller to execute the method comprising:
generating hash data including hint data during storage of user data on user channels in a stripe on the memory device;
receiving a hint from the host;
generating a request and submitting the request to a pattern search engine; and
sending a hint response including flash translation indices to the host, based on a response from the pattern search engine,
wherein the host reads the flash translation indices to request data stored at a specific location in the user channels.
14 . The method of claim 13 , further comprising triggering a hash generator when the user data is stored on the user channels to generate the hash data and storing the hash data on a hash channel.
15 . The method of claim 13 , further comprising generating parity information for error correction on the user data and storing the parity information on a parity channel.
16 . The method of claim 13 , further comprising receiving predefined sized input data and creating a unique hash value for a logical page of data, wherein a hash data size corresponds with the logical page.
17 . The method of claim 13 , further comprising generating a partial hash from a partial data source.
18 . The method of claim 13 , further comprising invoking the pattern search engine to perform a search in real time on a hash channel for the hash data associated with the hint and receiving a match list of the hash data that matches the hint from the pattern search engine.
19 . A method on a storage device for generating hash data associated with user data stored on user channels to enable a host to search for data stored across channels on a memory device without reading user data stored on the channels, the storage device comprises a controller to execute the method comprising:
receiving data sent from the host to be saved on the user channels on the memory device;
triggering a parity generator to generate parity data for the user data;
triggering a hash generator to generate hash data for the user data;
storing the user data on the user channels, the parity data on a parity channel, and the hash data on a hash channel;
receiving a hint from the host;
searching the hash channel for the hash data that matches the hint; and
sending a hint response including flash translation indices to the host,
wherein the host reads the flash translation indices to request data stored at a specific location in the user channels.
20 . The method of claim 19 , further comprising invoking a pattern search engine to perform a search in real time on the hash channel for the hash data associated with the hint and receiving a match list of the hash data that matches the hint from the pattern search engine.