Cache Coherency for Symmetric Multiprocessor Systems on Programmable Chips