Enabling Cache Coherency for N-Way SMP Systems on Programmable Chips