Académique Documents
Professionnel Documents
Culture Documents
Pattern matching can be defined as the process of checking if a character string is part of a longer sequence
of characters.
Pattern matching is used in a large variety of fields in computer science. In text processing programs such
as Microsoft Word, pattern matching is used in the search function. The purpose is to match the keyword
being searched against a sequence of characters that build the complete text.
In database information retrieval, the content of different fields of a given database entry are matched
against the sequence of characters that build the user request.
Speech recognition and other pattern recognition tools also use pattern matching as basic operations on top
of which complex intelligent functions may be built, to better classify the audio sequences.
Other applications using pattern matching are:
dictionary implementation, spam avoidance, network intrusion detection and content surveillance.
The first advantage of using the reconfigurable device here is the inherent fine-grained parallelism that
characterizes the search. Many different words can be searched for in parallel by matching the input text
against a set of words on different paths. The second advantage is the possibility of quickly exchanging the
list of searched words by means or reconfiguration.
We define the capacity of a search engine as the number of words that can be searched for in parallel. A
large capacity also means a high complexity of the function to be implemented in hardware, which in turn
means a large amount of resources. The goal in implementing a search engine in hardware is to have a
maximal hardware utilization, i.e. as many words as possible that can be searched for in parallel.
The different hardware implementation of pattern matching are :
1. Sliding Window Approach
2. Hash Tabled Based Text Searching
3. Automation Based Text Searching
The Sliding Windows Approach
One approach for text searching is the so-called sliding window. In the 1-keyword version, the target word
is stored in one register, each character being stored in one register field consisting of a byte. The length of
the register is equal to the length of the word it contains. The text is streamed through a separate shift
register, whose length is the same as that of the keyword. For each character of the given keyword stored as
a byte in one register field, an 8-bit comparator is used to compare this character with the corresponding
character of the text, which streams through the shift register. A hit occurs when all the comparators return
the value true.
The sliding window can be extended to check a match of multiple patterns in parallel. Each target word
will then be stored in one register and will have as many comparators as required.
The main advantage of this approach resides in the reconfiguration. Because each keyword is stored in an
independent register, the reconfiguration can happen without affecting the other words, thus providing the
possibility to gradually and quickly modify the dictionary.
that share a common prefix use a common path from the root corresponding to the length of their common
prefix. A split occurs at the node where the common prefix ends.
In the hardware implementation of a group of words with a common prefix, common flip flops will be used
to implement the common path (figure 9.3a). For each character in the target alphabet, only one comparator
is needed. The comparison occurs in this case, once at a particular location in the device. Incoming
characters can be directly sent to a set of all possible comparators. Upon matching a particular one, a
corresponding signal is sent to all the flip flops, which need the result of that comparison. This method will
reduce the number of comparators needed almost by the sum of the length of all target words.
The overall structure of the search engine previously explained is given in shown above. It consists of an
array of comparators to decode the characters of the FSM alphabet, a state decoder that moves the state
machine in the next states and a preprocessor to map incoming 8-bit characters to 5-bit characters, thus
mapping all the characters to lower cases.
As case insensitivity is considered in most application in information retrieval, the preprocessor is designed
to map upper and lower case characters to the binary code of 1 to 26 and the rest of character to 0.
Characters are streamed to the device in ASCII notation. An incoming 8-bit character triggers the clock and
is mapped to a 5-bit character that is sent to the comparator array. All the 5-bit signals are distributed to all
the comparators that operate in parallel to check if a match of the incoming character with an alphabet
character occurs. If a match occurs for the comparator k, the output signal chark is set to one and all the
others are set to zero. If no match occurs, all the output signal are set to be zero.
Pattern Matching
Video Streaming
Distributed Arithmetic
Adaptive Controller
Adaptive Cryptographic Systems
Software Defined Radio
High-Performance Computing
The management of the reconfigurable device is usually done by a scheduler and a placer that can
be implemented as part of an operating system running on a processor .
The processor can either reside inside or outside the reconfigurable chip.
The scheduler manages the tasks and decides when a task should be executed.
The tasks that are available as configuration data in a database are characterized through their
bounding box and their run-time. The bounding box defines the area that a task occupies on the
device.
The scheduler determines which task should be executed on the RPU and then gives the task to the
placer that will try to place it on the device, i.e. allocate a set of resources for the implementation
of that task.
If the placer is not able to find a site for the new task, then it will be sent back to the scheduler that
can then decide to send it later and to send another task to the placer. In this case, we say that the
task is rejected.
The host CPU is used for device configuration and data transfer.
Usually, the reconfigurable device and the host processor communicates through a bus that is used
for the data transfer between the processor and the reconfigurable device
The RPU acts like a coprocessor with varying instruction sets accessible by the processor in a
function call.
A fine-grained computing device which adds small, on-chip instruction memories to FPGAs
Used for typical logic applications and finite-state machines.
DPGA implementation is one-third the size of the FPGA implementation.
Each compute and interconnect resource has its own, small, memory for describing its behavior
These instruction memories are read in parallel whenever a context (instruction) switch is indicated.