  Linear-time pattern matching engines have seen promising results using Finite
Automata (FA) as their computation model. Among different FA variants,
deterministic (DFA) and non-deterministic (NFA) are the most commonly used
computation models for FA-based pattern matching engines. Moreover, NFA is the
prevalent model in pattern matching engines on spatial architectures. The
reasons are: i) DFA size, as in #states, can be exponential compared to
equivalent NFA, ii) DFA cannot exploit the massive parallelism available on
spatial architectures. This paper performs an empirical study on the #state of
minimized DFA and optimized NFA across a diverse set of real-world benchmarks
and shows that if distinct DFAs are generated for distinct patterns, #states of
minimized DFA are typically equal to their equivalent optimized NFA. However,
NFA is more robust in maintaining the low #states for some benchmarks. Thus,
the choice of NFA vs. DFA for spatial architecture is less important than the
need to generate distinct DFAs for each pattern and support these distinct
DFAs' parallel processing. Finally, this paper presents a throughput study for
von Neumann's architecture-based (CPU) vs. spatial architecture-based (FPGA)
automata processing engines. The study shows that, based on the workload,
neither CPU-based automata processing engine nor FPGA-based automata processing
engine is the clear winner. If #patterns matched per workload increases, the
CPU-based automata processing engine's throughput decreases. On the other hand,
the FPGA-based automata processing engine lacks the memory spilling option;
hence, it fails to accommodate an entire automata if it does not fit into
FPGA's logic fabric. In the best-case scenario, the CPU has a 4.5x speedup over
the FPGA, while for some benchmarks, the FPGA has a 32,530x speedup over the
CPU.
