The central role of the hash table in providing refutations and telling the program when to go parallel makes it clear that the hash table must be shared among all processors. Local hash tables would not work since the complex, dynamically changing organization of processors makes it very unlikely that a processor will search the same region of the tree in two successive levels of iterative deepening. A shared table is expensive on a distributed-memory machine, but in this case it is worth it. Each processor contributes an equal amount of memory to the shared hash table. The global hash function maps each chess position to a global slot number consisting of a processor ID and a local slot number.
Remote memory is accessed by sending a message to the processor in which the desired memory resides.
To insure prompt service to remote memory requests, these messages must cause an interrupt on arrival. When a processor wants to read a remote slot in the hash table, it sends a message containing the local slot number and the 64-bit collision check to the appropriate processor. The processor which made the request waits until the answer comes back before proceeding. Remote writing is a bit more complicated due to the possibility of collisions. Remote writing is accomplished by sending a message containing the new hash table entry to the appropriate processor.