Hardware and software architectures for pattern recognition