| CPC G06F 3/0659 (2013.01) [G06F 3/0604 (2013.01); G06F 3/0679 (2013.01)] | 20 Claims |

|
1. A storage device comprising:
a controller which receives a command from a host for instructing performance of a first computation;
a non-volatile memory which stores a plurality of datasets;
a buffer memory, wherein a first dataset among the plurality of datasets stored in the non-volatile memory is provided to the buffer memory in response to the command; and
an accelerator which performs the first computation corresponding to the command, using the first dataset provided to the buffer memory,
wherein the accelerator comprises:
a memory access module which receives a first input query and a second input query for instructing the first computation and the first dataset from the buffer memory, wherein the first input query is different from the second input query;
a first computing module which is connected to the memory access module and determines first final candidate data corresponding to the first input query, using the first dataset received from the memory access module, wherein the first computing module calculates first vector distances between the first input query and entry points of the first dataset and retains the first vector distances that are shorter than a minimum distance as the first final candidate data; and
a second computing module which is connected to the memory access module and determines second final candidate data corresponding to the second input query, using the same first dataset received from the memory access module, wherein the second computing module calculates second other vector distances between the second input query and the entry points and retains the second vector distances that are shorter than a minimum distance as the second final candidate data,
wherein at least one of the computing modules:
maintains a visit list that tracks previously evaluated data points within the corresponding dataset, wherein a data point from the corresponding dataset is added to the visit list after its vector distance to the corresponding input query has been calculated;
maintains a candidate list comprising unvisited data points within the corresponding dataset, wherein a data point from the corresponding dataset is added to the candidate list when its vector distance to the corresponding input query is within a predefined distance threshold and has not been previously evaluated; and
selects the corresponding final candidate data based on data points in the candidate list that meet a predefined threshold,
wherein a block random-access memory (RAM) of the storage device includes a first block RAM storing an activated visit list and a second block RAM storing an initialized visit list.
|