A technique for reducing synchronization overhead in large scale multiprocessors

A b s t r a c t The effectiveness of multiprocessing a single subroutine in a tightly coupled muir!processor system is highly dependent (among other factors) on the amount of overhead incurred due to synchronized references to shared data items by active processes. In this paper we present a technique to reduce this overhead. This is achieved by reducing the number of synchronized references issued by different processes. We describe the criteria used to identify the variables whose synchronized accesses will eliminate the need to synchronize references to other variables. Our technique can be implemented in optimizing compilers for mnltiprocessor machines. It can also be used when designing parallel algorithms for multiproeessors. We implemented the technique as a pass in the Parafrase system of the University of Illinois. Relevant measurements on all the subroutines of the EISPACK package are reported (61 subroutines). The results show that our technique is quite effective. For subroutines with interprocess communication, it reduced the number of memory references requiring synchronization by 10% in two thirds of these subroutines and by more than 30% for one third of the subroutines.