EP2901329A1 - Testing apparatuses, servers and methods for controlling a testing apparatus - Google Patents
Testing apparatuses, servers and methods for controlling a testing apparatusInfo
- Publication number
- EP2901329A1 EP2901329A1 EP13824783.8A EP13824783A EP2901329A1 EP 2901329 A1 EP2901329 A1 EP 2901329A1 EP 13824783 A EP13824783 A EP 13824783A EP 2901329 A1 EP2901329 A1 EP 2901329A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- query
- cells
- cell
- bit
- state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/56—External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
- G11C15/04—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
- G11C15/046—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements using non-volatile storage elements
Definitions
- Embodiments relate generally to testing apparatuses and methods for controlling a testing apparatus.
- NN search finds the most similar matches to a query vector from a large database of vectors, also known as Nearest Neighbor (NN) search, is a well-known problem in audio, video and other information retrieval, particularly audio/video fingerprinting, which tries to identify a query audio/video clip from a database of reference audio/video content.
- Exact NN search is challenging when the vectors have high dimensions, where no indexing structure is known to be consistently faster than brute-force search.
- ANN approximate NN
- LSH Locality Sensitive Hashing
- a testing apparatus may include: a plurality of cells, each cell including a plurality of terminals, the plurality of cells configured to define a string, wherein each cell of the plurality of cells includes a first terminal; a controller configured to control voltages to the respective first terminals of the plurality of terminals of each cell based on a query pattern, wherein a state of each cell of the plurality of cells is defined by the voltage supplied to the first terminal of the cell; and a determination circuit configured to determine whether the string corresponds to the query pattern based on the states of the plurality of cells.
- a server may be provided.
- the sewer may include: a receiver configured to receive a query pattern from a client; a testing apparatus; and a transmitter configured to transmit a result determined by the determination circuit of the testing apparatus to the client.
- a testing method may be provided.
- the testing method may include: controlling voltages to a respective first terminal of a plurality of terminals of each cell of a plurality of cells based on a query pattern, wherein the plurality of cells are configured to define a string, wherein a state of each cell of the plurality of cells is defined by the voltage supplied to the first terminal of the cell; and determining whether the string corresponds to the query pattern based on the states of the plurality of cells.
- FIG. 1 shows an illustration of top-2 N s (nearest neighbors);
- FIG. 2 shows an illustration of random projection and quantization of a feature vector
- FIG. 3 shows an illustration of an example of LSH hash indexing and look-up
- FIG. 4A and FIG. 4B illustrate a difference between LSH and media fingerprinting
- FIG. 5 and FIG. 6 show illustrations of weak bits and their enumeration to improve recall and/or reduce storage requirement
- FIG. 7 shows an illustration of vote-count based media fingerprint database
- FIG. 8 shows an illustration of different distribution of vote count
- FIG. 9A shows testing apparatus according to various embodiments
- FIG. 9B shows a server according to various embodiments
- FIG. 9C shows a flow diagram illustrating a testing method
- FIG. 10 shows an illustration of a scheme, for example illustrating comparing multiple projections at a time per vote count update
- FIG. 1 1 A and FIG. 1 1 B show illustrations of the use of weak bits along with multiple projection comparison
- FIG. 12 shows an illustration of embedding linear time trend information into storage format of media fingerprints to filter out unrelated matches
- FIG. 13 shows an illustration illustrating a need for multiple input probes if using less storage space in media fingerprints
- FIG. 14 shows an illustration of avoiding the need for AND/intersection by using large enough samples so that one probe provides enough linear time trend information
- FIG. 15 shows an illustration of an alternative storage approach by enumerating non-zero query/reference time offsets
- FIG. 16 shows an illustration illustrating an effect of radius r on per-projection success rate (pi) vs. collision rate (p 2 ) for the range quantizer;
- FIG. 17 shows an illustration illustrating Pcoiusion as a function of range r
- FIG. 18 shows an illustration illustrating a performance comparison
- FIG. 19 shows an illustration of an implementation, with each reference vector corresponding to one column in a DRAM matrix array
- FIG. 20 shows an illustration of a working principle of floating gate transistors in Flash memories
- FIG. 21 shows an illustration of an example of a basic circuit layout of NAND Flash within one column
- FIG. 22A shows an illustration of different charging states
- FIG. 22B shows an illustration of an interlocked fGT pair representation enabling power-savings
- FIG. 23 shows an illustration of an example, where the series is 6 cells long, and query pattern is 10X;
- FIG. 24 shows an illustration of an example of reference-side wild-card
- FIG. 25A, FIG. 25B, and FIG. 25C show illustrations, like stated in Table 2;
- FIG. 26 shows an illustration of an example of range query
- FIG. 27 shows an illustration of an example of NAND Flash string in schematic and in manufactured integrated circuit
- FIG. 28A shows a schematic symbol of the Flash cell
- FIG. 29B shows an equivalent circuit
- the testing apparatus as described in this description may include a memory which is for example used in the processing carried out in the testing apparatus.
- a memory used in the embodiments may be a volatile memory, for example a DRAM (Dynamic Random Access Memory) or a non-volatile memory, for example a PROM (Programmable Read Only Memory), an EPROM (Erasable PROM), EEPROM (Electrically Erasable PROM), or a flash memory, e.g., a floating gate memory, a charge trapping memory, an MRAM (Magnetoresistive Random Access Memory) or a PCRAM (Phase Change Random Access Memory).
- DRAM Dynamic Random Access Memory
- PROM Programmable Read Only Memory
- EPROM Erasable PROM
- EEPROM Electrical Erasable PROM
- flash memory e.g., a floating gate memory, a charge trapping memory, an MRAM (Magnetoresistive Random Access Memory) or a PCRAM (Phase Change Random Access Memory).
- a “circuit” may be understood as any kind of a logic implementing entity, which may be special purpose circuitry or a processor executing software stored in a memory, firmware, or any combination thereof.
- a “circuit” may be a hard-wired logic circuit or a programmable logic circuit such as a programmable processor, e.g. a microprocessor (e.g. a Complex Instiaiction Set Computer (CISC) processor or a Reduced Instruction Set Computer (RISC) processor).
- a “circuit” may also be a processor executing software, e.g. any kind of computer program, e.g. a computer program using a virtual machine code such as e.g. Java. Any other kind of implementation of the respective functions which will be described in more detail below may also be understood as a "circuit” in accordance with an alternative embodiment.
- NN search finds the most similar matches to a query vector from a large database of vectors, also known as Nearest Neighbor (NN) search, is a well-known problem in audio, video and other information retrieval, particularly audio/video fingerprinting, which tries to identify a query audio/video clip from a database of reference audio/video content.
- Exact NN search is challenging when the vectors have high dimensions, where no indexing structure is known to be consistently faster than brute-force search.
- ANN approximate NN
- state-of-art algorithms such as Locality Sensitive Hashing (LSH) either become slow due to excessive number of hard disk seeks, or have to use an excessive amount of main memory for indexing, when the NN distance to query vector is far and the database is large.
- LSH Locality Sensitive Hashing
- Similar image search allows a user to find other related images based on a query image that the user already has.
- the similarity measure may be defined as the distance between feature vectors of two images, where features with a predetermined definition (such as color, brightness, sharpness) are extracted from an image and form a feature vector.
- features with a predetermined definition such as color, brightness, sharpness
- One simple example could be: dividing an image into a 10x 10 grid of small blocks, and the average brightness in each block is one feature, and thus forming a feature vector of 100 dimensions.
- the feature vector is essentially a coarse representation of the image, but other types of features may be used such that from the features alone it is impossible or unlikely to infer a coarse approximation of the image, e.g., to minimize copyright concerns.
- the distance metric may be defined as the Euclidean (i.e., L2 norm) distance, although other distance metrics such as L I norm, may also be used.
- distance metric is Hamming distance, when the features are discrete (specifically, binary) instead of continuous, and may be defined as the number of differing bits between two such binary vectors.
- the Hamming distance may also be equivalent to the case of LI norm distance when the features are binary (i.e., 0 or 1 ).
- the top-k Nearest Neighbors may be defined as the k feature vectors among a given database that are closest in distance to the query feature vector. If k is not mentioned, then the NN may be the top- 1 NN.
- FIG. 1 shows an illustration 100 of top-2 NNs.
- FIG. 1 illustrates top-2 NNs to a query point in a 2D Euclidean space.
- a and B may be the top-2 NNs for Q, as no other points are closer to Q than A and B (in circle 102, there are only Q, A, and B); for example, C and D are further away from Q than A and B.
- the NN may refer to the exact NN, where the definition of closest distance may be exact. It may be found that no known indexing structure is consistently faster than brute-force search for exact NN for high dimensional data where dimension d > 10. Since many similarity search applications involve large d, approximate NN (ANN) is often used instead to reduce search complexity. Commonly used methods for ANN may be Locality Sensitive Hashing (LSH) and its variants.
- LSH Locality Sensitive Hashing
- FIG. 2 shows an illustration 200 of random projection and quantization of a feature vector 204.
- a quantization interval 202, a random projection vector 206 and a projected value 208 are shown.
- the symbol “3" in FIG. 2 may mean "there exists”.
- “3D such” may mean that there are D such random projection vectors, and random projection may be applied D times, once per projection vector.
- LSH works by projecting a feature vector 204, quantizing the projected value (see FIG. 2), and then applying this step D times (usually D ⁇ d) and concatenating the D quantized values to form a codeword (also known as robust hash or signature) for index building or look-up.
- the following chart shows a high level concept implementation of LSH.
- Hash_map table // hash index for database ⁇ j ⁇ D _ Q II D projection vectors
- cw cw + quantize(y. d j ); II + for concatenating quantized projected values return cw;
- the feature vector may optionally be converted to a vector of different (usually lower) dimensionality, for example by a number D of random projections where D is the newly desired dimensionality.
- a dot-product implements a linear projection, and non-linear projections may also be used as projections, depending on user requirement.
- a projection generates a scalar value, and applying the projection with D (preferably different) projection vectors generates D scalar values and thus forms a D-dimensional vector.
- Pr stands for probability. That is, the query codeword is more likely to match NN's than unrelated vectors'. Either the converted vector or the feature vector is then quantized (if the vector elements are already and always discrete, then the quantization step may be optional) on one dimension at a time (see FIG. 2 for example of converted case where random projection is used), and then with the quantized values concatenated to produce a discrete value known as a robust hash, signature, or codeword.
- a quantizer converts a scalar, continuous value into a discrete value depending on which quantization interval/bin the scalar value falls into, and the same quantizer may be used for all dimensions, or different quantizers may be used for certain dimensions.
- a c-bit quantizer generally describes c-bit discrete values and can support up to 2 C quantization intervals/bins. Quantization may also be performed after a projection without combining multiple projection values to form the converted vector, since the combining step and the converted vector is not strictly needed.
- Feature vectors from both the database (also referred to as reference feature vectors, or reference vector in short) and the query are applied with the same projection, quantization and concatenation process (same sets of projection vectors are applied to both reference and query feature vectors, etc.), to generate the query feature vector's codeword, which may then be used as indexing value for look-up of a feature vector in a database.
- codeword of the reference vector is usually used to build the hash index
- the codeword of the query feature vector (or query vector in short) is usually used as the hash key for look-up, and all collision items in the hash bucket matching the hash key may be considered candidates for full matching.
- the full matching is usually the full (e.g., Euclidean) distance check between candidate feature vectors corresponding to the collision items and the query feature vector.
- FIG. 3 shows an illustration 300 of an example of LSH hash indexing and look-up.
- LSH hash indexing with D projections per hash table 304 is shown.
- Quantized query projections 302 and a HDD (hard disk drive) 306 are shown.
- media fingerprinting Another application of similarity search is media fingerprinting, whose goal is to identify a query media clip from a database of reference media content. If the media is audio, it is called audio fingerprinting. Audio features such as frequency components may be extracted from consecutive sampling of the audio signals (for both query and reference audio) over some predetermined audio buffer size, say at every 20ms stepping and 300ms audio buffer, which means the buffer slides 20ms forward in time on each step (hence consecutively) and generates a feature vector per step. A sequence of consecutive codewords, typically as a pre-determined number of codewords, may be called a media fingerprint, and in case of audio signals, an audio fingerprint.
- Audio features such as frequency components may be extracted from consecutive sampling of the audio signals (for both query and reference audio) over some predetermined audio buffer size, say at every 20ms stepping and 300ms audio buffer, which means the buffer slides 20ms forward in time on each step (hence consecutively) and generates a feature vector per step.
- a sequence of consecutive codewords typically as
- an audio fingerprint search engine is to identify the query audio clip based on similarity of audio signals, which in turn is typically based on similarity of audio fingerprints and/or feature vectors.
- some similarity measure of audio fingerprints such as Hamming distance (number of differing bits) between audio fingerprints, is typically used instead of full (e.g., Euclidean) distance comparison on feature vectors
- Similarity search based on ANN is challenging when the feature vector is high dimensional (d » 1) and the NN reference vector in the database has a large distance to the query vector such that the distances from non-NN vectors to the query vector are not significantly higher than the NN distance ( ⁇ v NN - q ⁇ « ⁇ v ot — q ⁇ ).
- This is especially relevant when the top-k NN(s) are supposed to have a semantic correspondence to the query, and for example, may happen in case of audio fingerprinting, if the query audio clip is a heavily modified version of an original audio clip.
- One example of such heavy modification is microphone capture of loudspeaker playback of an audio clip in a noisy environment.
- the quantization error may be expressed in terms of the bit error rate (BER), which is the ratio of number of differing bits between a query and a reference codeword to total number of bits in a codeword. In case of media fingerprinting, this ratio may also be defined between fingerprints instead of codewords.
- BER bit error rate
- SER symbol error rate
- ANN neuronal neural network
- the precision may be defined as the ratio of desired information to some top portion of the search results after the results have been potentially sorted according to likelihood of being desired information.
- ANN a full (e.g., Euclidean) distance check is generally performed to sort candidate matches and only top-k matches with the smallest distances to the query are returned, hence its precision would be the same as its recall and becomes redundant. Therefore, in this disclosure, we define ANN's precision alternatively in terms of collision count: that is, the number of candidate matches. The smaller the collision count is, the higher precision the ANN algorithm is, and any mapping function from collision count to precision that satisfies this behavior may be used. This measure is useful, because having a small collision count reduces the number of full distance checks that have to be performed and thus reduces search time. If the feature vectors are stored on hard disks, reducing collision count usually means reducing number of disk seeks, and disk seek time is usually a major bottleneck in information retrieval applications.
- collision count usually means reducing number of disk seeks, and disk seek time is usually a major bottleneck in information retrieval applications.
- LSH suffers from at least one of: low recall, slow search time, large storage requirement.
- L « 3/p s 2418 tables are at least needed.
- FIG. 4A and FIG. 4B illustrate a difference between LSH and media fingerprinting.
- FIG. 4A shows an illustration 400 of a query codeword 402 for a 1 st hast table 406, a query codeword 404 for a second hash table 408, and a HDD 410.
- FIG. 4B shows an illustration 412 of a plurality of codewords 414, a hash table 416, and a HDD 418.
- FIG. 4B illustrates search steps of media fingerprinting, using n look-ups and fingerprint Hamming distance.
- the candidate codeword's corresponding fingerprint (the n-codeword reference sequence whose i-th element is the said candidate) is generally compared against the query fingerprint for Hamming distance (Euclidean distance check at codeword or fingerprint level may be used but it is uncommon).
- FIG. 4A and FIG. 4B illustrate this difference between LSH and media fingerprinting.
- media fingerprinting exploits the semantic redundancy among n codewords in a fingerprint: as long as one out of n codewords leads to true NN, the search is considered a success. Such semantic redundancy is generally not applicable in case of similar image search, where there is no presumed time sequence information between successive images.
- media fingerprinting may also use multiple hash tables to further improve recall, but it usually needs fewer hash tables than LSH for the same ⁇ ⁇ / , due to this inherent redundancy.
- FIG. 5 and FIG. 6 show illustrations of weak bits and their enumeration to improve recall and/or reduce storage requirement.
- FIG. 5 shows an illustration 500 illustrating a quantization interval 502, a query vector 504, a reference vector 506, a random projection vector 508, a projected value 510 of the query, and a projected value 512 of the reference vector.
- FIG. 5 illustrates a cause of an issue: the query or reference vector's projected value lying too close to quantization boundary.
- FIG. 6 shows an illustration 600 of an initial query codeword 602, a codeword with weak bits 604, an illustration 606 of values (or variations) the codeword with weak bits 604 may take, and an illustration of the number 608 of variations of the codeword with weak bits 604.
- FIG. 6 illustrates that identifying and enumerating (on a query-side) weak bits may improve recall w/o (without) many hash tables.
- the miss may be mitigated by enumerating "weak bits" in a codeword , i.e., the bits that are most likely to have flipped from original to query, generally due to their pre-quantization value (which is the projected value when projection is used or the feature value otherwise) lying too closely to the quantization boundary, as illustrated in FIG. 5.
- pre-quantization value which is the projected value when projection is used or the feature value otherwise
- a weak bit may be more precisely referred to as a "weak projection", and a small range covering the quantized value is used for each such projection during enumeration.
- weak bits are determined on the query codeword because then the weak bit positions are fixed at query time, whereas weak bit positions in the reference codeword are often different across the database, making it impractical to enumerate all the reference side weak bits (with an exception for the invention in this disclosure, to be described in more detail below).
- FIG. 6 illustrates weak-bit enumeration for a 6-bit long codeword, although in practice a codeword is usually much longer.
- Weak-bit enumeration may be used to reduce L and thus storage requirement, because by enumerating variations of weak bits, firstly the effective length of a codeword is shorter, and secondly the remaining non-enumerated bits are expected to have a lower BER compared to the average BER of the entire codeword (SER in case of multi-bit quantization), thus improving p s and reducing L.
- Commonly used methods suggest the prospect of reducing L by l Ox to 20x on some difficult data sets. If we assume L is reduced 20x in the above example, the indexing would still require 967GB, and feature vector still 100GB, with total of 1067GB DRAM.
- a vote-count method may provide high recall and precision on relatively difficult data sets, with an implementation that achieves relatively fast search time and low cost, thus making it potentially useful for large-scale data sets.
- the vote- count method may still have fairly high collision count if the data set is significantly correlated and not random enough. High collision count translates to longer search time due to the need for full distance check on all candidate matches.
- the vote-count method may also use random projections as LSH does, but instead of concatenating D quantized projections to form a codeword as in LSH, vote- count performs L projections (where this L may be different from LSH's L in value) and quantization for both reference and query vectors, and increment a vote counter for each reference vector if the query and reference matches on a projection after quantization.
- L projections where this L may be different from LSH's L in value
- quantization for both reference and query vectors
- FIG. 7 shows an illustration of vote-count based media fingerprint database (for example with F codewords/sec, L projections, 3-sec long).
- a quantized projected value of a query frame I 702 and data for a plurality of frames 704 are shown.
- the arrow to the right of the circle denotes equality comparison.
- the reference vectors whose vote count exceed T*L are chosen as candidate matches and then checked for full distance, and those with the smallest distances are returned as the top-k NN(s).
- the database may be stored according to FIG. 7, and the update of vote counters for each projection can be efficiently implemented using the approach as described in more detail below.
- the vote count would have two binomial distributions, one with a peak at pi *L for true NN, another with a peak at p 2 *L for unrelated reference vectors.
- Suitably chosen L and threshold factor T can make the probability of unrelated vector's vote count exceeding T*L so low that very few of unrelated vectors become candidate matches, i.e., having very low collision count (thus high precision and faster search time). This may be illustrated in FIG. 8.
- a query vector may have an entire cluster of reference vectors close to it, causing high collision count, and make the basic vote-count algorithm perform inefficiently. In case of audio fingerprinting, this can happen if the feature extraction algorithm makes the feature too robust but not unique (e.g., random) enough.
- the commonly used method may update the vote count one projection at a time, thus requiring L rounds of update. If this number of rounds can be reduced, it may lead to a reduction in search time.
- the method may always update the vote count at each projection, but due to the presence of weak bits or weak projections, some projections may be better left out in the update of the vote count.
- the power consumption of the corresponding hardware implementing the vote-count algorithm where the hardware may be Dynamic Random Access Memory (DRAM), NAND Flash or NOR Flash, as described in more detail below.
- DRAM Dynamic Random Access Memory
- NAND Flash NAND Flash
- NOR Flash NOR Flash
- the method may be desired to be implemented in hardware because updating N vote counters on an N-vector database would be very slow if done in software for large N.
- such hardware may consume a lot of power.
- Such high power may be both a tough challenge for cooling and a serious concern for fire hazard if the semiconductor transistors do not lose integrity and melt first, and cooling itself may consume even more power.
- search time may be faster but NOR Flash and DRAM are much more expensive, and power consumption may likely to be even higher.
- an ANN search method and its supporting hardware design may be provided that can achieve fast search time, high recall and precision, and save orders of magnitude in power and energy consumption, on large and difficult data sets, compared to state-of-art approaches.
- devices and methods may be provided for high performance search methods for large-scale information retrieval.
- FIG. 9A shows a testing apparatus 900 according to various embodiments.
- the testing apparatus 900 may include a plurality of cells 902. Each cell of the plurality of cells 902 may include a plurality of terminals. The plurality of cells 902 may be configured to define a string. Each cell of the plurality of cells 902 may include a first terminal.
- the testing apparatus 900 may further include a controller 904 configured to control voltages to the respective first terminals of the plurality of terminals of each cell of the plurality of cells based on a query pattern. A state of each cell of the plurality of cells 902 may be defined by the voltage supplied to the first terminal of the cell.
- the testing apparatus 900 may further include a determination circuit 906 configured to determine (in other words: to test) whether the string corresponds to the query pattern based on the states of the plurality of cells.
- the plurality of cells 902 and the controller 904 may be coupled with each other, like indicated by a first line 908, for example electrically coupled, for example using a line or a cable, and/ or mechanically coupled.
- the plurality of cells 902 and the determination circuit 906 may be coupled with each other, like indicated by a second line 909, for example electrically coupled, for example using a line or a cable, and/ or mechanically coupled.
- the first line 908 from the controller 904 to the plurality of cells 902 may represent the control voltages to the first terminals (for example G-terminals).
- the second line 909 from the determination circuit 906 to the plurality of cells 902 may represent the serial circuit (e.g., the bit-line) being sensed like will be described in more detail below.
- the per column serial circuit e.g., the bit-line
- the state of a cell may refer to a conductibility state, for example indicating whether the cell is conductive under a probing voltage.
- the plurality of cells 902 may be connected in series to define the string.
- states of each cell of the plurality of cells may include a conductable state and a non-conductable state.
- each cell of the plurality of cells may be configured to be in the conductable state if the voltage supplied to the first terminal of the cell is in a pre-determined range.
- the determination circuit 906 may be configured to determine that the string corresponds to the query pattern if the states of all cells of the plurality of cells 902 is the conductable state.
- each cell of the plurality of cells 902 may be a transistor.
- the first terminal of each cell of the plurality of cells 902 may include or may be a gate terminal.
- two cells of the plurality of cells 902 define one bit of the string.
- a bit of the string may have a value selected from a list of values consisting of: low; high; and don't care.
- the testing apparatus 900 may be configured to provide a test for at least one of: audio fingerprint; video fingerprinting; content identification; anti-piracy; similar image search; example-based image processing; super-resolution; de-noising; image compression; bioinformatics; DNA pattern matching; biometrics security; voiceprint; or faceprint.
- FIG. 9B shows a server 910 according to various embodiments.
- the server 910 may include a receiver 912 configured to receive a query pattern from a client (not shown).
- the server 910 may further include a testing apparatus 914 according to various embodiments, for example the testing apparatus 900 of FIG. 9A.
- the server 900 may further include a transmitter 916 configured to transmit a result determined by the determination circuit of the testing apparatus 914 to the client.
- the receiver 912, the testing apparatus 914, and the transmitter 916 may be coupled with each other, like indicated by lines 918, for example electrically coupled, for example using a line or a cable, and/ or mechanically coupled.
- a network service may be provided where a query request is sent from a client to a server, processed according to various embodiments as described herein, and the query result returned to the client.
- FIG. 9C shows a flow diagram 920 illustrating a testing method.
- voltages to a respective first terminal of a plurality of terminals of each cell of a plurality of cells may be controlled based on a query pattern.
- the plurality of cells may be configured to define a string.
- a state of each cell of the plurality of cells may be defined by the voltage supplied to the first terminal of the cell.
- it may be determined (in other words: it may be tested) whether the string corresponds to the query pattern based on the states of the plurality of cells.
- the cells of the plurality of cells may be connected in series to define the string.
- states of each cell of the plurality of cells may include or may be a conductable state and a non-conductable state.
- each cell of the plurality of cells may be in the conductable state if the voltage supplied to the first terminal of the cell is in a predetermined range.
- the testing method may further include: determining that the string corresponds to the query pattern if the states of all cells of the plurality of cells is the conductable state.
- each cell of the plurality of cells may include or may be a transistor.
- the first terminal may include or may be a gate terminal.
- two cells of the plurality of cells may define one bit of the string.
- a bit of the string may have a value selected from a list of values consisting of: low; high; and don't care.
- the testing method may further include: providing a test for at least one of: audio fingerprint; video fingerprinting; content identification; anti-piracy; similar image search; example-based image processing; super- resolution; de-noising; image compression; bioinformatics; DNA pattern matching; biometrics security; voiceprint; or faceprint.
- An improved vote-count algorithm which will also be referred to as enhanced vote-count or vote-count++ and to distinguish from the (basic) vote-count, may be provided which may addresses these issues.
- a power-efficient hardware design with preferred embodiments by modifying NAND Flash, which is also an integral part of enhanced vote-count, may be provided, like will be described in more detail below.
- search time may be about L/m*t. This may assume m projections can be compared within time ⁇ , which is validated as will be described in more detail below.
- the number of multiple projections being compared may be less than m accordingly, for example this number may be L%m, i.e., the remainder of L/m.
- L%m the number of projections (m) compared at a time, but more generally it is also acceptable to change this number m at some loops or at each loop. Even more generally, the said multiple projections do not need to form a partition of all L projections and could be overlapping across loops.
- some projection(s) may be reused across loops, which may save on time computing projections and/or storage capacity, but potentially at the expense of more correlation in vote count updates across loops.
- the counter is incremented (by one) per m projections, instead of per projection, upon an overall equality match on the m projections. If the counter is incremented by m per m projections and ceil(L/m) is replaced by L, then it is functionally equivalent to increment by one per m projections.
- O.A[j..j+m- l ] may denote m quantized values of the feature vector on j-th to (j+m- l )-th dimensions.
- L/m is also referred to as L'.
- an efficient implementation that can perform equality comparison on all m projections with time ⁇ may be provided, thus reducing search time to roughly L/m*T. This may be achieved without requiring m times the hardware resources during implementation.
- This implementation may also reduce power consumption exponentially, as will be described in more detail below, by ensuring non-negligible power is consumed for a column only when all m projections of this column match with those of the query vector.
- the expected power during vote-count is roughly p 2 m xPmax, where P raax is the maximum possible power consumption when all columns consume non-negligible power.
- P max 3MW for a one-trillion vector database implemented on NAND Flash.
- a higher m will lead to lower power consumption.
- m > 1 the binomial distribution curves in FIG. 8 will shift and generally L needs to be increased in order to maintain the same recall and same low collision rate.
- An increased L may translate to more hardware resources and thus higher cost needed during implementation. Nevertheless, if m is carefully chosen, the benefits of power-saving, which can be several orders of magnitude, far outweigh the additional cost in hardware implementation.
- an example configuration may achieve high recall, low collision, fast search time, as well as very low power consumption on a one-trillion vector database with a BER « 0.2.
- a query or reference bit (or more generally a projection for multi-bit quantization) is weak, then its value is unreliable, so its corresponding equality comparison result may also tend to be unreliable, hence it may be better to remove such weak bits or projections from being participating in the vote-count process.
- the query side weak bits or projections are fixed given a query vector but reference side weak bits or projections can vary across reference vectors, one way of introducing weak bit into vote-count is by disregarding the number of weak bits (or more generally, weak projections), say w such projections, from L, and the vote counters are updated only if a query side projection is not weak.
- the vote counters are compared to T*(L-w) instead of T*L.
- a weak bit is more precisely referred to as a weak projection.
- the following (Chart 4) may be an example pseudo-code using query side range query, and note here instead of excluding weak projections from vote-count process, they are used toward vote-count update, which is another way of using weak bits and projections.
- Chart 4 Example process flow of query-side range query with vote-count
- Such range query test capability can be implemented efficiently like will be described in more detail below.
- Various elements shown in FIG. 1 1 A may be similar to elements shown in FIG. 10, so that the same reference signs may be used and duplicate description may be omitted.
- a x denotes a weak bit, and here query side has a weak bit 1 102 for projection 1 , and reference side's frame 1 vector has a weak bit 1 104 for projection 2.
- FIG. 1 1 A shows use of weak bits, which is the special case of range query, on multiple projections. It is to be noted that both query and reference side weak bits are shown to illustrate the flexibility of mixing and matching various capabilities according to various embodiments.
- FIG 1 1A the value of query projection 0 and 2, and various reference projection values (except the wild-card) are not shown.
- FIG 1 1 B specific values are shown for both query and reference, so query 1X0 will match frame 1 , but not frame 0. (0085] In the following, reducing collision count for media fingerprinting by intelligently exploiting linear time trend according to various embodiments will be described.
- feature extraction may be designed to emphasize robustness as opposed to uniqueness/differentiation (where differentiation can mean distance separation between unrelated feature vectors), in order to cope with heavy modification in the query clip.
- this may increase collision count in candidate matches and sometimes even break the semantic meaning of N matches: that is, the actual corresponding original content's feature vector may even become 2 nd or 3 ,d N s etc., instead of being the top- 1 NN, and this would reduce recall unless top-k (k > 1 ) matches are returned as opposed to top- 1 , but at the cost of more unrelated matches in the search result.
- a match can refer to either a candidate match or a match that already passed full (e.g., Euclidean) distance check to be among top-k in a search result.
- Media fingerprinting has the inherent time sequence semantics, so one method to filter out the number of unrelated matches (candidate or top-k) is to perform several searches at query timestamp t, t+ 1 , t+2, etc., and then perform a linear trend detection over time-axes (x-axis being query timestamp, y-axis being timestamp of matched content) on the search results after initially sorting the search results by matched content ID. That is, the matches under the same content ID are tested for presence of linear trend over time, and only matches that exhibit linear trend may be returned as final matches.
- a method may be provided next that can reduce collision count in candidate matches by applying linear time trend constraint during the vote-count steps.
- the vote counters may be updated for quantized projected values for multiple query timestamps at a time. For example, query timestamps t, t+ 1 , and t+2 may be checked simultaneously, by placing the quantized values of a reference feature vector from a set of projections and from t r , t r +l , t r +2, within the same column of storage, as illustrated in the pseudo-code of Chart 6 and in FIG. 12, as opposed to FIG. 7.
- O.A_0[i], O.A_F[j], O.A_2F(j] denote quantized values on j-th projection for 3 reference vectors with frame or codeword offset 0, F, and 2F, respectively, Q.A_0[i] etc. are similarly defined. If an unrelated match at reference timestamp t r happens to be a top-k N (whether exact or ANN) at query timestamp t, it is very unlikely for its successor vector at t r +l to also be a top-k NN (whether exact or ANN) at query timestamp t+ 1 , and similarly for t r +2 and t+2, etc. A sampling interval other than 1 sec may be used.
- At least 2 samples are needed to verify the presence of linear trend.
- a linear slope of 1.0 is assumed, because query and reference content are generally extracted at the same rate and are expected to have the same playback speed. If the extraction rate and/or playback speed is different for query and reference, the assumed/expected slope will be different from 1.0 but still fixed and known as long as the extraction rate and playback speed are fixed and known for query and reference.
- FIG. 12 shows an illustration 1200 of embedding linear time trend information into storage format of media fingerprints to filter out unrelated matches, reducing collision count and search time.
- 1 -bit quantization and L projections are used as example, feature vectors extracted at F frames/sec (F fps). 1 rectangle denotes 1 projection, 1 circle denotes 1 quantized projected value of query vector. Notations and settings may be the same as in FIG. 7 otherwise.
- a query frame 1202 and a plurality of frames 1204 are shown.
- FIG. 12 only 1 projection from a given query timestamp is compared at a time, but it is possible to add multiple projection comparison in FIG. 10 (which is across projections) on top of time trend information (which is across time), and may even combine reference and/or query side range query capabilities.
- FIG. 10 which is across projections
- each circle should be expanded to m circles, to represent the m projections.
- Weak bits and range queries such as in FIG. 1 1 A may also be used together with time trend information.
- FIG. 13 shows an illustration 1300 illustrating a need for multiple input probes if using less storage space in media fingerprints.
- Data for a first sub-search 1302, data for a second sub-search 1304, and data for a third sub-search 1306 are shown.
- a circle in FIG. 13 may have same meaning as in FIG. 12, and q 0 may denote the projection is from query frame i, qF from frame i+F, q 2 p from frame i+2F, and the x denotes an always-match pattern (wild-card).
- the 1 st sub-search in FIG. 13 may be self-explanatory, but the 2 nd sub-search may be more complicated, because effectively two probes are needed, since the query clip's qo may correspond to reference content's frame F, so q 0 need to be shifted downward by 1 row during matching, and the top row should be ignored (by using a "always-match" range query pattern). However, q 2 p still need to be matched, as top row in another probe, with bottom 2 rows ignored (using "always-match”), and the two probes' result should be intersected (ANDed). This is similar for 3 rd sub-search. Implementing the intersection between probes is expensive. Alternatively, we can choose a larger number of samples in linear time trend, but use a subset of projections that is guaranteed to fit within the same column.
- FIG. 14 shows an illustration 1400 of avoiding the need for AND/intersection by using large enough samples so that one probe provides enough linear time trend information.
- 5 samples are shifted in round-robin manner, and at least 3 samples are enforced within one probe.
- 5 samples may be used simultaneously for some time offset such as in 1 st sub-search of FIG. 14, but 3 samples may also be used simultaneously without having to apply intersection and yet still capture enough linear time trend information, as illustrated in 3 rd and 4 th sub-searches of FIG. 14.
- FIG. 14 shows how AND/intersection can be avoided. Using 5 samples (4 seconds apart), one probe can always contain at least 3 samples (if consecutively sampled, at least 2 seconds apart), so that unlike FIG. 13, the other probe is not necessary.
- the 1 st sub-search has 5 samples, but one may use 3 or 4 samples as well, at a slight reduction in filtering capability but may improve pattern match probability slightly.
- FIG. 14 gives an intuitive order of search (from 1 st to 5 th ), which corresponds to the round-robin shift of the input pattern, but in practice any order of search may be applied.
- Non-consecutive sampling e.g., q 0 x q 2 F x q 4 F, may also be used.
- one may run all 1 st sub- searches (over all projections) on say in this example a 4-sec span of query clip, update the vote counters, and generate 1 st ANN sub-results (e.g., generate candidate matches by applying > T*L test on vote counters); then all 2 nd sub-searches are run to generate 2 nd ANN sub-results, etc. All these ANN sub-results can then be combined to generate the final ANN search results (with full distance check if necessary).
- the quantized projections may be stored more than once, by enumerating non-zero time offsets that the query clip may have with respect to its corresponding reference content.
- FIG. 15 shows an illustration 1500 of an alternative storage approach by enumerating non-zero query/reference time offsets.
- the frame numbers are displayed instead of the rectangles in FIG. 12.
- FIG. 15 shows an example, where all such non-zero time offsets are enumerated, and since 3 samples are used for linear time trend, the storage space usage is 3 times as that in FIG. 12.
- the approach in FIG. 15 has one advantage over FIG. 12: it only needs 1 sub-search (and with no AND/intersection required) instead of 3 sub- searches as in FIG. 13, because the extra storage already represents all possible time offsets between query and reference content. Therefore, this approach saves search time.
- the pseudo-code in Chart 6 can be used as-is without modification.
- the feature vectors and the query vector are quantized, and the decision of the vote count updating is based on comparison result on quantized vectors.
- the quantizer used in the vote-count method thus determines the granularity of the comparison and hence it plays an important role in determining the overall performance of the vote count algorithm. For example, it may be desirable that the quantizer provides a granularity that is sufficiently fine to avoid unnecessary collision. On the other hand, it also may be desired to provide sufficient error tolerance in order to maintain a desirable level of recall rate.
- the quantizer used in vote-count algorithm should thus be designed based on these two different and in general contradicted optimization criteria in order to deliver the optimal query quality.
- the quantizer may use a three-step quantization interval with an adjustable "match-zone" centered at the projected value of the feature vectors, and the vote count is incremented only when the projected value of the query vector falls into this "match-zone".
- the width, or "range” of the match-zone is determined as a solution of a constraint optimization problem to provide the desirable trade-off between recall rate and collision rate of the final vote- count algorithm based on the statistical models of both feature vectors.
- this quantizer or this quantizer design may be referred to as range quantizer. Experimental results show that compared to the fixed quantizer described above, the range quantizer better captures the statistical property of feature vectors and hence it can dramatically improve the performance of the vote-count method.
- a query vector q which is extracted from a query media file using the same method as that for generating the feature vectors in 5 , can be represented as
- the noise vector may be modeled with a random vector n, which may be assumed to be Gaussian distributed with zero mean and a diagonal covariance matrix ⁇ ⁇ where I is the identity matrix.
- the vote count of a feature vector may be increased by one only when it is sufficiently close to the query vector after linear projection, or equivalently, when the projected value of the query vector falls into a certain range of the projected value of feature vector, on a given projection. More specifically, denoting by r the radius of the range, the vote-count algorithm with range quantizer can be expressed as follows:
- a £ R d may be the random projection vector and c t - may be the vote count corresponding to feature vector € S, and a.
- q represents the dot-product (i.e., linear projection) of a and q.
- p Pr(
- FIG. 16 shows an illustration 1600 illustrating an effect of radius r on per- projection success rate (pi) vs. collision rate (p 2 ) for the range quantizer.
- the range 1604 may be centered at d. v with width 2r, but it is also possible to make its center off a. v for more flexibility in optimization while at the cost of much more complex optimization procedure.
- Curve 1602 is the probability distribution of what a reference projected value would lie at (when considering all reference vectors), after being projected with projection d .
- Curve 1604 is the probability distribution of what the query q after projecting with d would lie at (when considering all possible noise/distortions in q).
- I ⁇ L is the threshold of vote-count algorithm (i.e., the T*L).
- T*L the threshold of vote-count algorithm
- devices and methods may be provided for optimizing problem P I while the devices and methods according to various embodiments may similarly be applied to optimization problem P2 as well.
- f overa u O ma Y be any function that gives a reasonable overall score based on the expected peak power (which may be defined as p2 m xP m ax), the system cost and the search throughput, where the score is higher if expected peak power is lower, and/or if system cost is lower, and/or if search throughput is faster:
- FIG. 17 shows an illustration 1700 illustrating prolusion as a function of range r.
- FIG. 17 shows how a choice of r can greatly affect collision rate.
- the range quantizer can have Pcoiusion (calculated using Gaussian approximation of binomial distribution) as low as 3.3 x l 0 '6
- FIG. 18 shows a conventional 1-bit quantizer achieves p * oiiision of approximately 2.8x l 0 '4 , almost l OOx higher than range quantizer. This l OOx difference is also largely maintained when varying recall from 0.8 to 0.98, as shown in FIG. 18.
- Commonly used hardware implementation may perform the equality comparison and counter update very fast, using Dynamic Random Access Memory (DRAM) or any storage device with a matrix layout (e.g., Flash memory).
- DRAM Dynamic Random Access Memory
- Flash memory any storage device with a matrix layout
- FIG. 19 shows an illustration 1900 of an implementation, with each reference vector corresponding to one column in a DRAM matrix array.
- the entire column of cells stores the quantized values from L projections, and at the end of each column an equality comparator and vote counter are added to provide parallel comparisons and counter update.
- a basic vote-count hardware architecture for fast ANN, in DRAM is shown.
- T and L may achieve high recall and high precision, even in large-scale, difficult data sets.
- the storage device then needs to have 1 billion columns, which may be implemented by having multiple storage arrays of a fixed number of columns, with total number of columns equal to 1 billion (e.g., 100,000 arrays with 10,000 columns each), and activating the comparison on all involved storage arrays in parallel.
- a key characteristic of most matrix-layout storage arrays is that whenever a row is accessed for read, the stored data in the entire row in that array becomes available. Vote-count exploits this characteristic to update all the vote counters in parallel, instead of having to increment them one by one, for example such as in software.
- Flash memories In contrast to DRAM, Flash memories also have a matrix layout, but are nonvolatile and do not require power to retain its stored data. NAND Flash, the kind used in digital cameras, USB (universal serial bus) thumb drives, is the cheapest type of Flash memories, and may serve as a base form from which power-efficient designs may be applied. Note here the term cells and transistors (including the floating gate transistors to be described) may be used interchangeably, unless explicitly noted.
- the said design can also significantly reduce power consumption.
- FIG. 20 shows an illustration 2000 of a working principle of floating gate transistors in Flash memories.
- NAND Flash may be constructed as series of floating gate transistors (fGTs).
- An fGT (assuming n-channel type), in the case of single level cell (SLC), has two states, erased (encodes a "1 "), or programmed (encodes a "0") Note the encoding-to-state correspondence is by convention but an opposite correspondence may also be used.
- the fGT In erased state, the fGT has a low threshold voltage (V th ) of say 0.7V, whereas its V th is much higher in programmed state, say 3V, as illustrated for the working principle of fGTs in FIG. 20.
- threshold voltage for fGT may be similar to that of a MOSFET: if the voltage from Control Gate to Source is above V ⁇ , a conducting channel will form between Drain and Source and allow currents to flow (note that if the input voltage is below V th , a very small current may still flow, but it will be almost negligible) through if V DS > 0.
- the voltage from Control Gate to Bulk which is typically connected to Ground
- the voltage from Control Gate to Bulk may be used to define and its characteristics in lieu of the voltage from Control Gate to Source.
- the voltage from Control Gate to the Source terminal of the bottom fGT (i.e., closest to Ground) in the series of concatenated fGTs may be used instead.
- the leftmost icon is the commonly used symbol denoting fGT
- the middle diagram illustrates an fGT in erased state
- the rightmost diagram illustrates an fGT in programmed state. Note that for convenience of drawing, the ellipse representing the (negative) charge is placed in between the floating gate and the body electrode (the biggest blue unfilled rectangle), although in reality the charge is stored on the floating gate itself.
- FIG. 21 shows an illustration 2100 of an example of a basic circuit layout of NAND Flash within one column.
- NAND Flash within a column, a series (referred to as a "string" in NAND Flash terminology) of fGTs are concatenated together, with one fGT's Source connecting to the next fGT's Drain. This is illustrated in FIG. 21 , where String select is a MOSFET that controls whether this series/string is selected, and GND select is another MOSFET that controls whether the string's bottom is connected to Ground.
- String select is a MOSFET that controls whether this series/string is selected
- GND select is another MOSFET that controls whether the string's bottom is connected to Ground.
- NOR Flash fGT's Drain is always connected to the same bit-line, and Source is always connected to the Source line.
- Such a series connection simplifies physical layout and reduces manufacturing complexity, thus leading to lower cost for NAND Flash in contrast to NOR Flash.
- NAND Flash may read its data by probing all wordlines (a wordline is a row input line) in the series with high voltage that is greater than V t h of the erased state (such as 3.5V which is greater than V ⁇ of 3V illustrated in right part of FIG. 20, so that they always conduct) except for the row it intends to read.
- the probing voltage is in between V ⁇ of erased state and V ⁇ of programmed state, such as I V which is greater than Vu, of 0.7V illustrated in right part of FIG. 20. These two voltages are denoted here symbolically as hi and mid, respectively. If the fGT is programmed, it won't conduct, else it will conduct. The detection of conduction and/or current in the series allows the detection of fGT state, either by sensing the current, or by sensing the voltage of the bit-line, hence the readout of stored data (0 or 1 ). This is illustrated in FIG.
- a column has one or more series/strings whose ends (outer side of GND select MOSFET) are connected in parallel instead of in series.
- a typical string may have 8- 128 fGT cells.
- a "page” is an entire row of data in a NAND Flash array, and a "block” is all pages of data from all rows within a string.
- NAND Flash typically the smallest unit of programming is 1 page, and smallest unit of erase is 1 block, and after a page is programmed, it has to be erased (along with the entire block, which is slow) before it can be programmed again.
- the series nature of the NAND Flash circuit provides a possibility of power efficiency. If the circuits can be modified such that a column (which may correspond to a feature vector) conducts only if the whole query probing pattern matches with what's stored on the fGTs on the same rows as the queiy probe, then (non-negligible) power is consumed only if the pattern matches on that column, instead of consuming power for every column.
- a trivial design where probing voltages are equal to voltages required to just cause an fGT having a particular test bit value from the query pattern to conduct, does not work.
- FIG. 22A shows an illustration 2200 of different charging states.
- FIG. 22B shows an illustration 2202 of an interlocked fGT pair representation enabling power-savings, assuming (hi,hi) is not allowed. (mid,mid) and (hi,hi) probes may not allowed by default.
- the two other possible input probe combinations are not allowed here (but may be allowed in special cases to be described later).
- the above interlocked design uses 2 fGTs per represented bit (as opposed to 1 fGT in design of basic vote-count), but it allows multiple projection comparison (as described above) within time ⁇ , thus reduces search time, and it also allows significant power savings. It does not require any modification in the physical design of fGTs, nor require any modification in read write circuit of NAND Flash. Conventional writing procedures may be used as-is, as long as the data to-be-written conform to the interlocked design representation, and this conformance can be implemented at the software level (which is easier to implement) and need not be at the NAND Flash circuit level.
- the interlocked design only requires some modification to the probing circuits on each wordline, in addition to the per-column vote counter circuitry in basic vote-count.
- Such modification creates a new mode other than read and write: a query mode.
- the NAND Flash circuit does not necessarily know the data stored in the fGT cells, and it only knows whether the stored data match the query input pattern of probing voltages. If the pattern exactly matches, the circuit knows what is stored, but if no match, the circuit knows it didn't match and wouldn't necessarily know what exactly is stored.
- CMOS may have some notion of interlocking in its design, but CMOS ensures that in any stable state the MOSFETs are interlocked in a way that they never conduct current.
- the above interlocked design in this disclosure will conduct current when the query input pattern matches the stored data pattern, and is therefore a completely different design and has completely different functionality.
- the length of the series may be chosen to correspond exactly to the length of query input pattern.
- the series may be 16 cells long when using 8-bit patterns (which would generate 16 probing voltages on 16 wordlines).
- 8-bit patterns which would generate 16 probing voltages on 16 wordlines.
- such choice may be inflexible because the length of the series is generally determined at NAND Flash manufacturing time, while the length of query input pattern may vary at run-time.
- a more flexible way is to create a series whose length (fixed at manufacturing time) is long enough (e.g., to have enough reduction in search time and/or to provide the desired power-saving factor, and use special query input patterns that ignore irrelevant rows in a series/string.
- the series may be 48 cells long, but an 8-bit pattern ( 16 rows) may be used for query.
- FIG. 23 shows an illustration 2300 of such an example, where the series is 6 cells long, and query pattern is 10X, meaning the 3 rd bit (that is represented in the two bottom fGT cells) should be ignored during probing.
- the encoding convention is assumed to be the same as in FIG. 22B.
- FIG. 23 an example of using wild-card/don't care capability is shown.
- the query pattern may be 10X where X may mean "don't care".
- FIG. 23 may correspond to the query side, wherein FIG. 24 (like will be described in more detail below) may correspond to the reference side.
- fGT fO, fl , f2, f3, f4, f5 are 3 pairs, and actually series lay out could be fO, f2, f4, fl , D, f5.
- This layout decision may be performed at manufacturing time, but may also be, and more likely, at run-time when storing the data.
- the 8 pairs of fGTs need not be consecutive in the physical layout: these 8 pairs can be allocated on any 16 rows within a series as long as the query circuit knows on which 16 rows and the layout is identical across columns in the same Flash array, and the series may be longer than 16 cells as noted before.
- Testing for a multi-bit pattern with an interlocked series design may reduce search time and may save power, but may reduce match probability if the pattern is long and/or BER is high.
- weak bits may be used and the "don't care"/"always-match"/"wild-card” pattern may be used as an efficient alternative to weak-bit enumeration. It is expected that, certain projections of a vector are close to quantization boundaries and therefore vulnerable to bit errors, because even a small distortion may cause the quantization to differ between query and original reference.
- Weak-bit enumeration has been proposed in both audio/video fingerprinting and LSH to reduce the impact of high BER due to quantization error in such cases.
- the search algorithm identifies which projections and bit positions (conventionally only at the query side for efficiency reasons) are weak and vulnerable, possibly using some distance threshold to quantization boundaries, and then enumerate some or all variations at these bits, with each variation generating a particular query probe. If there are for example 12 weak bits in the query codeword, then 2 12 variations may be probed against the hash indexing table. If the number of weak bits is high, it may become very slow to enumerate all these variations.
- the interlocked design enables an efficient alternative to enumerating weak bits, because it can have a "don't care"/"always-match"/"wild-card” input pattern. Since enumerating a weak bit implies that the said weak bit becomes a don't care bit, consequently, for all weak bits in the query codeword, we can map it to a don't care pattern, such as a (hi,hi) probe pattern just like in FIG. 23, and this may be highly attractive when the match pattern is very long and the number of weak bits fairly high.
- the query codeword is 64-bit long and on average 30 weak bits are expected
- a 128-cell series string may be created on NAND Flash that will support 64-bit look-up with arbitrary number of weak bits in time ⁇ (which is one NAND Flash row random access cycle, typically 5-50 8).
- ⁇ which is one NAND Flash row random access cycle, typically 5-50 8.
- 30 weak bits are enumerated, even if each enumeration takes only Ins, it will take a total of 2 30 x Ins « l sec to complete all enumeration.
- the number of weak bits does not affect the vote-count portion of search time, because there is no enumeration involved.
- bitwise XOR operation may be used to verify whether the reference-side pattern matches the query pattern, instead of enumerations, so that 10 9 XOR instructions are needed, which is still a lot more than the 2 10 * 10 3 query-side enumerations.
- FIG. 24 shows an illustration 2400 of an example of reference-side wild-card.
- a reference vector may generate a wild-card pattern 1 OX represented in fGT states, and a query vector may generate non-wild-card pattern 101.
- FIG. 23 (as described above) may correspond to the query side, wherein FIG. 24 may correspond to the reference side.
- the interlocked design allows wild-card at the reference side, an abstraction as described above. If a reference vector's codeword is found to have weak bits during database build time, a (erased,erased) combination may be stored in the fGT pair for each such reference-side weak bit, as illustrated in FIG. 24. In such case, the pair is technically no longer trivially "interlocked", instead it will match any input pattern.
- reference-side wild-card because it may be better to conceptually draw a radius R from the original audio clip's feature vector(s) and hoping the distorted version is within that radius and it should have low collision count, assuming different reference vectors are at least radius R apart from each other. In contrast, although drawing a radius R from a potentially distorted version may also find the original version, more unrelated reference vectors may fall within that radius.
- the query side may generate query input patterns that do not use wild-cards, and the system may still be expected to identify the right matches with reasonably high accuracy. Since reference-side wild-cards are generated at database build time, it may save computational time in determining query-side wild-cards at query run-time. Alternatively, the query side may also generate its own weak-bits in the query input pattern, to further improve the match success probability (but at the cost of potentially more unrelated matches), and in such cases, the query side's number of weak bits and its criteria for choosing weak bits need not be the same as the reference side's. For example, reference side may generate approximately 10 weakest bits, and query side may generate approximately 6 weakest bits.
- m-bit fGT cells for example multi-level cells; MLCs
- MLCs multi-level cells
- SLC single-level cell
- MLC can store 2 or more bits per cell.
- MLC works by differentiating between the amount of charges stored in the fGT. Instead of 1 programmed state, in case of 2 bits per cell, the fGT has 3 programmed states, each in progressively larger amount of electron charges. Together with the erased state, there are 4 states and it is capable of storing 2 bits per cell. The nominal amount of charges between successive states are chosen to have sufficient difference (in charges and in V ⁇ ) to tell the exact state.
- MLCs are cheaper per bit than SLC, but are less reliable and wear out more quickly due to a smaller number of allowable erase cycles.
- SLC single-cell memory
- one input voltage is used at the wordline of interest for reading data, and the cell current is compared to currents of several pre-calibrated fGT cells under the same input voltage, and the comparison results are used to infer and readout the stored data, in one row access cycle.
- the previously described interlocked design can be extended accordingly and still keeping a 100% overhead (2 bits to represent 1 bit).
- a number i in the state set denotes (in monotonic but not necessarily in linear scale) an input voltage required to cause a conduction channel for an MLC with state 0 to i. That is, a cell with a state of 3 require an input voltage of symbol "3" to conduct, and the actual voltage value of "3" should be higher than the actual voltage value of "2", which in turn should be higher than the actual voltage value of "1 ", and so on.
- a larger state number i also corresponds to a larger amount of charges stored in the MLC.
- a cell state number i means the cell's threshold voltage is V th (i)
- f(i) is a monotonic increasing function defined over valid values of i.
- V,j,(i) is defined as the minimum (for n-channel fGTs) threshold voltage that can guarantee with a specified probability the conductable (or conductible or conductive) state of the said cell under the considered variability and/or noise conditions.
- f(i) and/or V ⁇ i) may be different depending on how many rows of cells the query wordline is away from Ground, and/or depending on the query pattern, in order to compensate for effects that alter Vm of a cell, such as the Body effect.
- general mapping functions f(i) and Vth(i) may be provided. This may enable more robust pattern matching at the electrical level.
- a pair of such MLC fGTs may use the following encoding, with the notation (top, bottom) :
- V( h (i) decreases as state number i increases
- V th (i) and f(i) are monotonically decreasing (as opposed to increasing when using the previous convention) functions over state number i
- input voltage (required to cause a conduction channel) is used to describe the MLC state
- other metrics may be used, such as the amount of charges stored in the MLC, or the current flowing through the MLC at a fixed given input voltage. Of those, the amount of charges is not directly measurable. Note the exact input voltage for a given MLC state may take on different values across use cases, as long as these voltages for successive states follow a monotonic trend and are separated with sufficient voltage difference to tolerate noise in MLCs and/or query input voltage generation circuitry.
- fGTs have mainly two types, the n-channel type (described in FIG. 20), and the p-channel type.
- the latter has a p-n-p junction instead of the n-p-n junction, and Flash memories built from p-channel fGTs have certain advantages in low power consumption while programming the cells (writing data).
- the control-gate voltage (VCG or V G in short) of a p-channel fGT usually has to be negative (when measured with respect to the Bulk in p-channel, which is usually Vdd) to cause a conduction channel (hence its threshold voltage is usually negative), and a sufficiently negative VG will always cause a conduction channel.
- p-channel fGTs can also be used for interlocked representation, for example, by denoting its state 0 to be the state requiring the least negative V G (i.e., has the most amount of negative charges on its floating gate) to cause a conduction channel, and state 2 m - l requiring the most negative VG (i.e., has the least amount of negative charges on its floating gate) to cause a conduction channel, and state i's input voltage should be more negative than state i- l 's, etc.
- Vth(i) is defined as the maximum (for p-channel fGTs) threshold voltage that can guarantee with a specified probability the conductable (or conductible or conductive) state of the said cell under the considered variability and/or noise conditions.
- f(i) ⁇ V t h(i) and f(i) > V ⁇ i+ l ).
- the same interlocked notation may be used for both n-channel and p-channel fGTs as-is and it will have the semantic meaning (including Table 2 as will be described in more detail below) for both types of fGTs.
- the fGT can support m-bit per cell, the user may still choose to use fewer than m bits per cell for implementation of vote-count ANN search, albeit at lower efficiency.
- 2 bits may be used in a 3-bit capable fGT MLC and a pair of such MLCs may be used to represent 2 bits of data (either using it as a 2-bit MLC, or as a 3-bit MLC but ignores its least significant bit) in an interlocked format.
- interlocked representation which uses 2 bits of storage to represent 1 bit of data
- other interlocked representation may be used.
- the input voltage pattern will not be able to cause conduction in the series.
- Such unary representation is however, less efficient, since it uses k bits of storage to represent ceil(log 2 k) bits of data.
- p-channel SLCs the same query pattern may be used, provided mid ⁇ hi in terms of voltage including the +/- sign, and that mid and hi voltages should be chosen such that it should cause the conductible state in an erased and in a programmed cell, respectively.
- mid and hi is the same as n-channel in a verbatim manner, but with the exception that in n-channel, a voltage of hi or above will guarantee the conductible state in the probed cell, but in p- channel, a voltage of mid or below will guarantee the conductible state in the probed cell.
- SLC i is in erased state if and only if the represented state is i. So for a represented state i, all other SLCs are in programmed state, and only SLC i is in erased state. To test whether the represented state is i, the query input voltage for all other SLCs should be hi, and only SLC i's input voltage should be mid. If the represented state is not i, the input voltage pattern will not be able to cause conduction in the series.
- the minor difference between the first and the alternative unary representation is that, if the data stored on the SLCs do not always conform to the supposed representation, then when there is conduction for the first unary representation, the stored data on that particular conducting column must be conforming to supposed representation, because there is only one stored pattern that could cause conduction.
- a conducting column may in fact have one of several patterns, since there are multiple patterns that could cause conduction assuming the stored data do not always conform to the supposed representation. If p- channel SLCs are used, the same query pattern from this paragraph may be used, provided we follow the same mid and hi definitions as mentioned in the previous paragraph.
- the first unary representation for p-channel behaves like the second unary representation for n-channel in the sense that a conducting column may have one of several patterns and thus be ambiguous.
- the second unary representation for p-channel behaves like the first unary representation for n-channel in the sense that a conducting column must be conforming to supposed representation.
- n-state MLCs may be used (albeit even more inefficiently than SLCs) for the first and alternative unary representations.
- cell state 0 being the erased state (i.e., having less negative charges stored on the floating gate compared to all other cell states) and state w+1 storing more negative charges than state w
- V th (w) being the threshold voltage for a cell in state w
- MLC i should be in a cell state x, and all other k- 1 MLCs should be in some other cell state y (but the k- 1 MLCs need not have the same y) and satisfying V G _ se i*sgn >V th (x)*sgn and V G _ ot her*sgn ⁇ V A (y) *sgn, where V G se i is the V G applied to MLC i and V G o ther is the V G applied to remaining k- 1 MLCs when the query probing state is i, plus the following conditions.
- an m-bit MLC may be used to represent k states where k ⁇ 2 m .
- a 2-bit MLC may have only 3 states, by either using it as a 2-bit MLC but ignoring and never using state 3, or adjusting the input voltages such that the voltage for state 2 becomes equal to the voltage for what was previously state 3 as a 2-bit MLC.
- Such representation can still be used for interlocked design as-is, for example by replacing 2 m - 1 with k- 1 in the state pair definition, resulting in (i, k-i- 1 ) instead of (i, 2 m -i- l ). This may be useful, for example when the quantizer has only k ⁇ 2 m quantization bins.
- an MLCs state may be described in terms of the input voltage required to cause a conduction channel. Usually both such state and input voltage are discrete, with 2 m states and voltages for an m-bit MLC. If instead, such state as well as the input voltage is allowed to be continuous, then it becomes an analog MLC, where the MLC can store a state as a real number. This analog behavior may be approximated by using a very large m for the MLC. The amount of noise and/or variability in the amount of charges will affect the precision of the input voltage and determine how precise such an analog MLC is.
- the interlocked representation for value x is preferably defined as the pair (x, 1 -x), which is the limiting case of the m-bit MLC interlocked notation (i, 2 m -i-l ) after dividing it by 2 m , as m ⁇ ro,
- a range other than [0, 1) may also be used.
- the query input or cell state pair is not (i, 2 m -i- l ), then it may be a form of wild-card, or its generalization. First, at the reference side, it can represent a range interval instead of an always-match wild-card.
- a query probe pattern will be (x, 2 m -x- l), and it will match (i.e., the fGT pair conducts) if and only if x e range [a,b].
- a c-bit quantized value may need to be stored in 2 or more pairs of MLCs, which may affect the effectiveness of range query, because a single MLC range query description may not be able to cover a desired quantized value range exactly. Either multiple MLC range query descriptions may be needed, or a single MLC range query description may need to cover a larger than desired range.
- the quantized value may be stored in c interlocked pairs of SLCs within a column, preferably within the same series/string. In such cases, exact pattern matches works well, but non-trivial range query, where the range is not of the type [x,x], becomes difficult. This is because when the quantized value x increases or decreases by a small amount, each bit in x may change, depending on the value of x and the amount of increase/decrease. Therefore, it is hard to confine the number of weak bits to a small number. Alternatively, Gray code may be used to encode a quantized value.
- Gray code is designed to have only 1 changed bit for any x to x+ 1 , a short range like [x,x+l ] will modify only 1 bit at a known bit position provided x is known, and this bit becomes the weak bit.
- [x- 1 , + 1 ], 3 choices, x- 1 , x, x+1 are tested, but 2 weak bits generate 4 variations, so 1 out of 4 variations does not correspond to the range [x- 1 , +1 ], which could cause more unrelated candidate matches.
- the range becomes wider, even with Gray code it becomes increasingly difficult and less effective because the number of modified (thus also weak) bits increases quickly. Both query and reference side small range queries can be supported using Gray code and weak bits on SLCs.
- [a,b] should be wide enough to cover the possible values of query value x with notation (x, l -x) if the corresponding reference vector is supposed to be the true N of query vector.
- [a,b] should also be wide enough to cover the noise and/or variability both in the state of the analog MLC (reference side), and in the query side input voltage.
- query range [x,y] is a subset of reference range [a,b], i.e., it tests the condition ([x,y] c [a,b]).
- x tests whether x > a
- reference-side and query-side range query may be combined or used alone, and need not use the same criteria for choosing the range query.
- the "always-match" pattern at query- side is ( 1 , 1) or in voltage (hi, hi), and at reference-side is (0, 0) or in charge state (erased, erased); whereas the "anti-match" pattern at query-side is (0, 0) or equivalently in voltage (mid, mid) provided reference does not store (0, 0) or equivalently in charge state (erased, erased), and at reference-side is ( 1 , 1) or equivalently in charge state (programmed, programmed) provided query is not ( 1 , 1 ) or in voltage (hi, hi).
- FIG. 25A shows an illustration 2500
- FIG. 25B shows an illustration 2502
- FIG. 25C shows an illustration 2504, like stated in Table 2.
- the interlocked notation may be used as-is for Table 2 and the same semantics will be achieved.
- the query side notation (x, k-y- 1 ) and reference side notation (a, k-b- 1) may be changed to (k-x- l ,y) and (k-a- l ,b), respectively, and it will still achieve the same semantics as in Table A l (except for the change of query and reference side notation).
- TCAM Ternary Content Associative Memory
- TCAM has been proposed for very fast LSH-based ANN search.
- TCAM is hardware based and supports weak-bit without enumeration, similar in functionality to what has been described above, but both its design and implementation are very different from this invention, and it only supports reference-side weak bit and not query-side weak bit.
- TCAM does not support non- trivial range query with multi-bit quantization where the number of bits c > 1. While very fast, TCAM is also very expensive and has high power consumption, making it unsuitable for large-scale databases.
- TCAM does not have the notion of vote count: a reference word is returned in search result if and only if the entire word (with weak bits if any) matches the query input word.
- range queries can help mitigate symbol error rates (SERs, which are generalization of BERs at projection level as opposed to bit level) that are caused by weak projections or bits, but in an even more effective manner than the wild-card.
- SERs symbol error rates
- 2-bit quantization may be used (with say equal probability mass in each of 4 quantization bins), but coupled with range query, such that a reference side projection always covers 2 consecutive quantization bins instead of 1 , and this results in effectively 1 -bit differentiation.
- x-bit differentiation means that on a given projection, an unrelated vector would accidentally match the query vector (after applying query and reference side range query if any) with approximately 1/2 X probability (assuming each quantization bin has same probability mass).
- Such 2-bit (4 bins) quantization with 2-bin range query also achieves effectively 1 -bit differentiation per projection, but reduces BER and SER, and therefore may help increase the upper limit of number of pairs of fGTs probed in a series while maintain high enough recall and low enough collision count, and thus save even more power.
- Range query may also be applied directly to feature vectors.
- FIG. 26 shows an illustration 2600 of an example of range query.
- a filled circle or rectangle indicates a non-trivial range query from query or reference side, respectively.
- FIG. 26 shows an example of range query, by adapting from FIG. 1 1 A.
- the quantized values are shown next to the circles denoting query input, and also shown next to the rectangles corresponding to reference frame 0 and 1.
- the queiy and reference side range query results in a match on reference frame 1.
- the m in FIG. 26 refers to the number of projections compared at a time, not to be confused with the number of bits in an fGT MLC.
- the analog MLC paradigm allows certain interesting analyses on performance trade-offs among the width and location of the range in a range query, probability of successful matching for true NN on the said range, and the differentiation level (which affects collision count).
- a (reference-side) range quantizer may be provided that can achieve much lower collision rate at the same recall rate of a conventional 1-bit quantizer.
- the distribution of a. q, a. v and d. Vi may have a wide range, and it is to be noted as described above that since an analog MLCs state can describe a real number in [0,1), a monotonic, reversible mapping function may be used to map the allowed range of a. q , a. v and a.
- the range used is a reference-side range, i.e., if using the interlocked design for n-channel fGTs, the cell pair for reference vector v may store two values (before mapping the allowed range of a. q, . v and d. Vi such as (- ⁇ ,+ ⁇ ) to [0, 1) ) a. v— r and— (d. v + r) , respectively, and the query probing voltages (also before mapping) are preferably a. q and— d.
- mapping function for mapping ranges to [0,1 ) may work less efficiently in the sense of being more susceptible to noise or imprecision such as when depositing charges to the fGT. Because the range is reference-side, the values are stored on the fGTs during database building time, and if radius r, which controls the robustness of the search, is to be changed on the fly, say at query time, it is hard to do because the entire database has to be rebuilt with the updated a. v— r and—(a. v + r) for each reference vector v, to reflect the updated r.
- a technique may be provided as will be described in the following, which may effectively adjust r on the fly at query time, by intelligently changing the query probing voltages.
- d. q and—d. q as the query probing voltages d. q— ⁇ and— d. q— 5 are used. This will test the conditions a. q - ⁇ a. v - r && -a. q— ⁇ — ( ⁇ . v + r), which becomes d. q ⁇ a. v— (r - ⁇ ) and a. q ⁇ a.
- v— r and d. v + r can be mapped to h mav (a. v— r) and 1 — h map (a. v + r) respectively (notice that we use 1- here instead of - operation in the previous paragraphs, because the stored data now has a range of [0,1) instead of (- ⁇ ,+ ⁇ ), and if the stored data range is [c,d) instead of [0,1), and h map (x) maps to (c,d), then the interlocked pair of h map (d. v— r) and d— (h map (a. v + r)— c) can be used instead.) and stored on the corresponding fGT pair as a reference-side range.
- function f(x) as a mapping function from a cell state x to a voltage V G (i.e., applied to the Control Gate) that will cause the cell with a state x to be conductible
- V G i.e., applied to the Control Gate
- f(x) may be defined as V t ( ) (or V( h (x) " plus a small constant)
- a. q and the robustness adjustment ⁇ create a pre-mapped range of (a. q— ⁇ , ⁇ . ⁇ + ⁇ ), which can be mapped to a query-side range of
- the query would also test for
- V th (h map (d. v— r)) etc. because V th (x)*sgn is a monotonic increasing function, which means for p-channel fGTs Vo,(x) is a monotonic decreasing function, it can be verified that it will also implement the range query radius semantics plus robustness adjustment. [00195J If f(x) is defined as V( h (x)+c where c is a small non-zero constant, then it can be verified that its use shifts the center of the range, but in a non-trivial way and it also distorts the result so that it does not enforce the range quantizer radius and robustness adjustment semantics 100% of the time. Therefore, such f(x) is not the preferred choice compared to V ⁇ x).
- a. v— r x and a. v + r 2 may be used instead of a. v— r and a. v + r, and/or (a. q - S- ⁇ . a. q + ⁇ 2 ) may be used instead of (a. q— S. a. q + ⁇ 5), and this would be a more generalized form of range quantizer based range query with robustness adjustment.
- top and bottom cells of a cell pair need not be adjacent to each other in the physical layout, as long as they are on the same series/string.
- a NAND Flash string may include or may consist of multiple Flash memory cells connected in series, whereby the D terminal of an fGT is connected to the S terminal of one of its adjacent fGTs (with potentially the exception at both ends of the string).
- the two serially connected D and S terminals of two such adjacent fGTs may be depicted as individual terminals in FIG. 21 , these two terminals generally appear as one electrode in manufactured integrated circuits, as shown in FIG. 27.
- FIG. 27 shows an illustration 2700 of an example of NAND Flash string in schematic (top) and in manufactured integrated circuit (bottom).
- the D and S terminals may become invisible in some Flash memory designs, such as certain 3D NAND Flash designs like p-BiCS, TCAT, VSAT and VG.
- the electrode that used to represent the two connected D and S terminals may disappear altogether, because the fringe electrical field emanating from each word line may be strong enough to form a conducting channel in the part of the bulk where the electrode used to be located.
- Such omission of electrodes is sometimes referred to as junction-free design, and makes manufacturing of 3D NAND Flash easier.
- Flash memory designs such as SONOS Flash in p-BiCS
- the memory cell is different from conventional fGTs because its charge storage site is not a conventional floating gate (usually metal or semiconductor) but rather a charge-trapping insulator.
- other types of memory cells such as based on Ferro-electricity, has been proposed to be used in a NAND string architecture, as a Fe-NAND Flash memory.
- Counting # (number) of matched patterns for each DB item may be provided. Only DB item(s) with counts larger or equal ( 3 ⁇ 4 to a pre-determined threshold may be reported.
- Applications of EVC may include audio/video fingerprinting (for example content identification and/ or anti-piracy), similar image search, example-based image processing (for example super-resolution, de-noising, image compression, and so on), bioinformatics (for example DNA (deoxyribonucleic acid) pattern matching), and biometrics security (for example voiceprint, faceprint, and so on).
- audio/video fingerprinting for example content identification and/ or anti-piracy
- similar image search for example-based image processing (for example super-resolution, de-noising, image compression, and so on)
- bioinformatics for example DNA (deoxyribonucleic acid) pattern matching
- biometrics security for example voiceprint, faceprint, and so on.
- the query functionality of EVC may be provided as a network service, where the EVC hardware resides on a server machine, which may be located in a centralized infrastructure such as a Data Center, and a client machine may send a query request to the server via a transmission venue such as a data transport network like the IP (Internet Protocol) network, and the server performs the query according to the EVC query mechanism, and then returns the query result back to the client via the same or optionally another transmission venue for use by the client.
- a transmission venue such as a data transport network like the IP (Internet Protocol) network
- the query request may contain data that are useable in the EVC query mechanism, and for example may be a query feature vector, or one or more query patterns (where one pattern may correspond to simultaneously matching more than one projections at a time) containing quantized value(s), weak bit(s), and discrete and/or analog (e.g. floating-point) weak range(s), or other pattern elements conforming to the interlocked design.
- data that are useable in the EVC query mechanism, and for example may be a query feature vector, or one or more query patterns (where one pattern may correspond to simultaneously matching more than one projections at a time) containing quantized value(s), weak bit(s), and discrete and/or analog (e.g. floating-point) weak range(s), or other pattern elements conforming to the interlocked design.
- a Flash cell may include or may be a floating gate transistor.
- an interlocked design may be provided.
- a match pattern may draw power only if it matches. For example, for an 8-bit pattern, 1/2 8 power vs. peak power may be provided.
- Various embodiments may work on NAND Flash.
- Various embodiments may allow weak-bit (don't care bit) based fuzzy search, which may reduce effective BER.
- even fuzzier weak- ranges may be provided, for example using NAND MLC, which may further reduces effective BER.
- accessing circuits may include: an row address decoder; a word-Line (WL) decoder & driver. Commonly used may be 1 WL in a NAND string which has special (e.g., mid) voltage. According to various embodiments, for EVC, each WL in a NAND string may have special voltage(s). According to various embodiments, furthermore the accessing circuits may include a column-specific vote-counting circuit; and a priority encoder for reporting matching column ID (identifier). According to various embodiments, Read/Write circuits may require no change and may use reference designs from NAND papers.
- an apparatus may be provided for testing whether a query pattern matches the pattern stored on a string of data storage cells (for example also referred to as cells for brevity), where each cell consists of at least 3 terminals, denoted G (gate), D (drain), and S (source), with voltage of G controls- the conductability state of the said cell between D and S, and the said query pattern controls the voltage of G at the said cells whose stored pattern is to be matched against, where a string is defined as a circuit in which two or more cells are connected in series with at least one of the said two or more cells' D connected to one of its adjacent cells' S, where the said query pattern is a sequence of query pattern elements, where the said sequence has at least two query pattern elements, and each query pattern element is converted to a set of voltages that are fed to the G terminals of a corresponding set of cells on the said string, where the cardinality of the said set of voltages is equal to the cardinality of the said corresponding set of cells and is
- the cardinality of the said set of voltages is two for all query pattern elements, that is, each said set of voltages are a pair of voltages and each said corresponding set of cells are a pair of cells, and the total number of cells whose stored pattern are to be matched against the said query pattern in the said string is an even number, the voltage of G is always measured with respect to Ground of the apparatus.
- the said set of voltages are k voltages and the said corresponding set of cells are k cells, and k is a positive integer and k > 1 , a cell C I out of the said corresponding set of cells stores a value x and remaining k-1 cells store some other value y that is different from x, and the k- 1 cells need not have the same y,
- the query pattern element in general, is a value i that can take on one of k distinct values, where each of the k distinct values is mapped to a selected cell out of said k cells, where the said selected cell is distinct (i.e., unrepeated) for each of the k distinct values, where the said selected cell is independent of CI
- the stored pattern element of the said corresponding set of cells is a value j that can take on one of k distinct values, where each of the said k distinct values has a one-to-one correspondence with the k cells in the said corresponding set of cells, the voltage fed to
- the said cells are floating gate transistors (fGTs) with G, D, S being the Control Gate, Drain, Source terminals of an fGT, respectively, and the said string is a NAND string as defined in NAND Flash terminology, the resistance threshold for determining a cell's conductability state is defined such that the said cell is in the conductable state if and only if its voltage at G (denoted V G and measured with respect to the string's Bulk electrode and measured with respect to the string's Bulk electrode) satisfies V G *sgn V a ,*sgn, where sgn is a variable denoting positive or negative signs and is defined as +1 for n-channel fGTs and -1 for p-channel fGTs, and where V,h is the threshold voltage of the said cell.
- fGTs floating gate transistors
- the fGTs support n cell states, i.e., can store an integer value between 0 and n- 1 , where n >2, the value w and w+1 are defined as follows: for both n-channel and p-channel fGTs, value w+ 1 and w represents the more and the less amount of negative charges stored on the floating gate of an fGT, respectively; V, (w) may be defined as the threshold voltage for a cell storing value w, and if there is variability or noise present in the amount of charges stored on the floating gate for storing value w, the said threshold voltage is defined as the minimum (for n- channel fGTs) or maximum (for p-channel fGTs) threshold voltage that can guarantee with a specified probability the conductable state of the said cell under the considered variability and/or noise conditions; satisfying Vc_sei*sgn >Vth(x)*sgn and for any of the remaining k- 1 voltages V G _ 0
- value x and y satisfy Vth(x) > Vth(y), and for any of the remaining k-1 voltages VG ot er ⁇ ⁇ x).
- value x and y satisfy Vth(x) ⁇ Vth(y), V G s ei ⁇ th(y).
- the fGTs are used as k-state cells each capable of encoding k states, whose states are denoted as ⁇ 0, 1 , .. .,k- l ⁇ , where a larger state number i for a cell always corresponds to more (for n-channel fGTs) or less (for p- channel fGTs) negative charges being stored on the said cell, and where Vth(i) is the threshold voltage, and if there is variability or noise present in the amount of charges stored on the floating gate for storing state i, the said threshold voltage is defined as the minimum (for n-channel fGTs) or maximum (for p-channel fGTs) threshold voltage that can guarantee with a specified probability the conductable state of the said cell under the considered variability and/or noise conditions, a stored pattern element is a general range [a,b] and is represented by storing (a, k-b-1 ) on a pair of fGTs, where "
- a larger state number i for a cell always corresponds to less (for n-channel fGTs) or more (for p-channel fGTs) negative charges being stored on the said cell
- a stored pattern element is a general range [a,b] and is represented by storing (k-a- l ,b) on a pair of fGTs, where "general” means it is valid to have a > b for such a range, f(i)*sgn is a decreasing function
- a pattern element in the said query pattern is a general range [x,y] and is represented by a pair of voltages f(k-x- l ) and f(y), where "general" has the same meaning as in bullet item (b).
- the said query pattern element tests on the stored pattern element on the said pair of fGTs one of the following logical expressions, and each said logical expression is defined to be true if and only if the said pair of fGTs are in the conductable state under the said query pattern element:
- don't-care i.e., a logical expression that always evaluates to true
- k 2 m and m is a positive integer and m > 1.
- one or more strings are associated with a column, where each column is associated with a counter that is initially set to 0 at the beginning of a search operation, where L' rounds of pattern matches are tested and each round of pattern match is a test between a query pattern and the stored pattern on a corresponding string over one or more columns, where the counter of each said column is incremented by 1 on round i if and only if the query pattern at round i matches the stored pattern on the corresponding string of the said column, where after L' rounds are completed, the column(s) whose counter(s) is(are) greater than or equal to T*L' is(are) reported as candidates of the said search operation, where T is a threshold factor between 0 and 1.
- a query pattern element for a query vector d on a projection vector d given a specified query-side robustness radius adjustment ⁇ ⁇ and ⁇ 2 corresponds to a tuple of values (d. d, 5 1 ( ⁇ 2 ), and is converted to a pair of voltages f(h map (d. d— ⁇ ⁇ )) and d-(f(h map (d.
- a monotonically increasing function hmap(x) is used to map a real number in the possible range of a projected value of any reference vector v on ⁇ projection vector d, to cell state [0,k- l ], which is a discrete case that approximates analog MLC, and if k is very large, then the approximation will be very good
- a stored pattern element for a reference vector v on a projection vector a given a specified reference-side robustness radius r corresponds to a range of [d. v— r x , a. v + r 2 ], and is stored as h map (d. v— r a ) and k-l-h map (d.
- a query pattern element for a query vector q on a projection vector ⁇ given a specified query-side robustness radius adjustment ⁇ and ⁇ 2 corresponds to a tuple of values (d. d, 5 1 ( S 2 ), and is converted to a pair of voltages f(h map (d. q— S j )) and fik-l-hmap ⁇ ⁇ " ⁇ ⁇ 2 )), respectively, 's projection on d is deemed to fall into [ a. v— (r x — Si), d. y + (r 2 — ⁇ 5 2 ) ], if the corresponding pair of cells are in the conductible state.
- a monotonically decreasing function hmap(x) is used, and Vt (x)*sgn is a monotonic decreasing function.
- the content from whom pattern elements are derived from has an intrinsic time relationship between successive snapshots of the same piece of content
- one or more pattern elements derived from each of two or more snapshots of a piece of reference content are stored in the same string of storage cells in the said apparatus, where the snapshots are separated by one or more predetermined time intervals
- the said query pattern contains one or more pattern elements derived from each of two or more snapshots of a piece of query content, where the snapshots are separated by one or more predetermined time intervals; wherein for each snapshot, it may contribute one or more (stored) pattern elements, and they are placed in the same string.
- n*U*F+j+(U- l )*F are stored, the said pattern elements derived from the said snapshots in the said piece of query content are shifted in an integer multiple of T, where the minimum set of partem elements that can be shifted out is referred to as a slot.
- the said integer multiplier to T is enumerated from 0 to U- l , any vacant slot in the said queiy pattern due to shift is replaced by a query-side don't care pattern element, if the remaining non-vacant slot(s) after shifting is(are) fewer than the number of slots shifted out, the query pattern elements from the said shifted out slots are used instead as the query pattern, given each said enumeration, pattern matches are performed for L' rounds as in claim 1 1 , and the candidates from each said enumeration are combined to form a combined set of candidates.
- n may not vary across cells.
- the cell may have 3-input control gates, but only two may be used, and the remaining one may always have high voltage (i.e., does not add to non-conductability).
- 2 cells may store 1 value, but if each cell is n-input, cardinality of input voltages is 2*n, not 2.
- a single input control gate may control the On/Off state of a Flash cell.
- a Flash cell may have multiple input control gates, as shown in FIG. 28A and FIG. 28B.
- FIG. 28A shows a schematic symbol 2800 of the Flash cell.
- FIG. 29B shows an equivalent circuit 2802.
- Vg l a specific Vg range that will form a conducting channel in the Flash cell between Drain and Source
- Vg n any voltage combination that will form a conducting channel in the cell between Drain and Source
- the cells may still store data in interlocked form as usual, but each value in the query pattern is converted to up to 2*n voltages (as opposed to 2 voltages).
- n- 1 inputs to a cell are fixed at a certain combination of voltages, while remaining c inputs ( 1 ⁇ c ⁇ n) may be shorted to the same input voltage i.e., degenerating an n-input cell to a 1 -input cell when storing data.
- all n-inputs may be used.
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
Claims
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261678701P | 2012-08-02 | 2012-08-02 | |
PCT/SG2013/000327 WO2014021785A1 (en) | 2012-08-02 | 2013-08-02 | Testing apparatuses, servers and methods for controlling a testing apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
EP2901329A1 true EP2901329A1 (en) | 2015-08-05 |
EP2901329A4 EP2901329A4 (en) | 2016-07-13 |
Family
ID=50028317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP13824783.8A Withdrawn EP2901329A4 (en) | 2012-08-02 | 2013-08-02 | Testing apparatuses, servers and methods for controlling a testing apparatus |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP2901329A4 (en) |
SG (1) | SG11201504839PA (en) |
WO (1) | WO2014021785A1 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170169075A1 (en) * | 2014-02-28 | 2017-06-15 | Agency For Science, Technology And Research | Testing apparatuses, hierarchical priority encoders, methods for controlling a testing apparatus, and methods for controlling a hierarchical priority encoder |
PL3314534T3 (en) * | 2015-06-23 | 2022-01-17 | Politecnico Di Torino | Method and device for searching images |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6031232A (en) * | 1995-11-13 | 2000-02-29 | Bio-Rad Laboratories, Inc. | Method for the detection of malignant and premalignant stages of cervical cancer |
US6621574B1 (en) * | 2000-05-25 | 2003-09-16 | Inphotonics, Inc. | Dual function safety and calibration accessory for raman and other spectroscopic sampling |
US7647092B2 (en) * | 2002-04-05 | 2010-01-12 | Massachusetts Institute Of Technology | Systems and methods for spectroscopy of biological tissue |
US8169808B2 (en) * | 2008-01-25 | 2012-05-01 | Micron Technology, Inc. | NAND flash content addressable memory |
JP2010287279A (en) * | 2009-06-11 | 2010-12-24 | Toshiba Corp | Nonvolatile semiconductor memory |
CN102725624A (en) * | 2009-12-17 | 2012-10-10 | 不列颠哥伦比亚癌症分社 | Apparatus and methods for in vivo tissue characterization by Raman spectroscopy |
WO2012103075A1 (en) * | 2011-01-24 | 2012-08-02 | Aplus Flash Technology, Inc. | An one-die flotox-based combo non-volatile memory |
-
2013
- 2013-08-02 SG SG11201504839PA patent/SG11201504839PA/en unknown
- 2013-08-02 EP EP13824783.8A patent/EP2901329A4/en not_active Withdrawn
- 2013-08-02 WO PCT/SG2013/000327 patent/WO2014021785A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2014021785A1 (en) | 2014-02-06 |
WO2014021785A9 (en) | 2015-04-30 |
SG11201504839PA (en) | 2015-07-30 |
EP2901329A4 (en) | 2016-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101981355B1 (en) | Soft information generation for memory systems | |
US9792071B2 (en) | End of life prediction to reduce retention triggered operations | |
US8650352B2 (en) | Systems and methods for determining logical values of coupled flash memory cells | |
US10008273B2 (en) | Cell current based bit line voltage | |
US8255643B2 (en) | Memory system and data processing method thereof | |
US8694715B2 (en) | Methods for adaptively programming flash memory devices and flash memory systems incorporating same | |
US10372373B1 (en) | Adaptive power balancing for memory device operations | |
US8347023B2 (en) | Compression based wear leveling for non-volatile memory | |
US10558381B2 (en) | Dynamic read table generation | |
US20090323419A1 (en) | Read-time wear-leveling method in storage system using flash memory device | |
US20150036432A1 (en) | Method and Apparatus for Improving Data Integrity Using Threshold Voltage Recalibration | |
US20240312530A1 (en) | Classification of Error Rate of Data Retrieved from Memory Cells | |
CN109065092B (en) | Method and device for setting reading threshold of NVM (non-volatile memory) chip | |
JP2014529827A (en) | Apparatus and method for operating for memory endurance | |
JP6012811B2 (en) | Output from memory with specific data quantization | |
KR20200091798A (en) | Memory device with enhanced error correction | |
US20100077133A1 (en) | Flash Memory Integrated Circuit with Compression/Decompression CODEC | |
US20130124781A1 (en) | Data scrambling based on transition characteristic of the data | |
CN110120234B (en) | Solid-state memory device and method for searching for optimum read threshold voltage thereof | |
US7672161B2 (en) | Adaptive detection of threshold levels in memory | |
Liu et al. | Shaping codes for structured data | |
EP2901329A1 (en) | Testing apparatuses, servers and methods for controlling a testing apparatus | |
US8194449B2 (en) | Memory device and operating method | |
WO2024207902A1 (en) | Flash memory error count testing method and apparatus, electronic device and storage medium | |
US20240069730A1 (en) | Varying memory erase depth according to block characteristics |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
17P | Request for examination filed |
Effective date: 20150610 |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
AX | Request for extension of the european patent |
Extension state: BA ME |
|
DAX | Request for extension of the european patent (deleted) | ||
RA4 | Supplementary search report drawn up and despatched (corrected) |
Effective date: 20160609 |
|
RIC1 | Information provided on ipc code assigned before grant |
Ipc: G11C 29/56 20060101ALI20160603BHEP Ipc: G06F 17/30 20060101AFI20160603BHEP |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN |
|
18D | Application deemed to be withdrawn |
Effective date: 20180301 |