Abstract
We examine the suitability of Ada to a specific multiprocessor architecture, the NYU Ultracomputer. The Ultracomputer is an MIMD machine with shared memory, and a special hardware primitive, the fetch-and-add operation, with which non-blocking versions of well-known synchronization primitives can be implemented. We show that fetch-and-add can be used to implement some common Ada tasking idioms, and that well-known algorithms for MIMD machines find a natural description in Ada. Furthermore, Ada solutions implemented with fetch-and-add have fewer and smaller critical sections than previously presented versions. The fetch-and-add primitive also provides an efficient solution to the problem of initializing a number of identical tasks, and to the potentially expensive implementation of termination for large numbers of tasks. We conclude that the Ada tasking model "fits" well an MIMD architecture such as the Ultracomputer.
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have