MSDN Magazine - October 2008 - (Page 74) Pa r a d i g m S h i f t Design Considerations For Parallel Programming david Callahan from about 1986 to 2002, the performance of microprocessors improved at the rate of 52% per year. This astounding technology advance was the result of a combination of the ever-shrinking cost of transistors, as per Moore’s Law, and the engineering excellence of processor vendors. This combination has been referred to as “Moore’s Dividend” by Microsoft Researcher Jim Larus, who reflects on how this dividend has paid for the creation of the modern software industry and allowed computers to become as pervasive as they are (see go.microsoft.com/fwlink/?LinkId=124628). On the software side, this phenomenon is called the “free lunch”— application performance improving simply by upgrading the hardware on which it runs. (For more on this, see “A Fundamental Turn Toward Concurrency in Software” at ddj.com/184405990.) But the model is changing; today, performance is improved by this article is based on a prerelease of Visual Studio tools. all information herein is subject to change. the addition of processors. So-called multicore systems are now ubiquitous. Of course, the multicore approach improves performance only when software can perform multiple activities at the same time. Functions that perform perfectly well using sequential techniques must be written to allow multiple processors to be used if they are to realize the performance gains promised by the multiprocessor machines. Concurrency and Parallelism this article discusses: • Parallel computing • Concurrent programming • Performance improvements technologies discussed: multithreading 74 msdn magazine For some time now, programmers have had to think about a programming challenge related to parallelism—concurrency. In order to maintain responsiveness, there needed to be some way to offload long-latency activities from the thread that reacts to input events. Most of the activities to be offloaded had, in the past, been related to file I/O, but more and more often now they are related to conversations with Web services. The Microsoft .NET Framework provides the asynchronous programming model and notions of background workers to facilitate this common programming concern. While many of the complexities of parallel programming have analogues in concurrent programming, the basic patterns and goals are different. Multicore processors will not alleviate the need for concurrent programming but rather will be a technique used to optimize the background activities and other computations performed in the system with the goal of improved performance. http://go.microsoft.com/fwlink/?LinkId=124628 http://www.ddj.com/184405990
For optimal viewing of this digital publication, please enable JavaScript and then refresh the page. If you would like to try to load the digital publication without using Flash Player detection, please click here.