Distributed and parallel systems. From instruction parallelism to cluster computing. (The Kluwer international series in engineering and computer science 567)