Parallel Programming Platforms

	Motivating Parallelism
		The Computational Speed Argument
		The Memory/Disk Speed Argument
		The Data Communication Argument
	Implicit Parallelism: Trends in Microprocessor Architectures
		Pipelining and Superscalar Execution}{5}
		Very Long Instruction Word Processors
	Limitations of Memory System Performance
		Improving Effective Memory Latency Using Caches
		Impact of Memory Bandwidth
		Alternate Approaches for Improving Memory System Performance
	Dichotomy of Parallel Computing Platforms
		Control Structure of Parallel Platforms
		Communication Model of Parallel Platforms
			Message Passing Platforms
			Shared-Address-Space Platforms
	Physical Organization of Parallel Platforms}{22}
		Interconnection Networks for Parallel Computers
		Metrics for Interconnection Networks
			Performance Metrics
			Cost Metrics
		Network Topologies
			Bus-based Networks
			Crossbar Networks
			Multistage Networks
			k-d Meshes
			Tree-Based Networks
	Cache Coherence in Multiprocessor Systems
		Performance of Update and Invalidate Protocols
		Maintaining Coherence Using Invalidate Protocols
		Snoopy Cache Systems
		Drawbacks of Snoopy Caches
		Directory Based Systems
		Distributed Directory Schemes
	Communication Costs in Parallel Machines
		Message Handling in Parallel Computers
		Store-and-Forward Routing
		Packet Routing
		Cut-Through Routing
	A Simplified Cost Model for Exchanging Messages

	Case Studies
		The IBM Blue Gene
		The Cray T3E/1350
		SGI Origin Servers
		Sun Enterprise 10000 Server (Starfire)
		Commonly used Networks for Cluster Computing Platforms
			Myrinet
			Gigabit Ethernet
			Asynchronous Transfer Mode (ATM) Networks
			FiberChannel
