Hardware Techniques to Reduce Communication Costs In Multiprocessors