Historically, the conventional means of boosting processor performance has been to increase clock speed. Today the industry is leaping ahead with a new paradigm that delivers dramatic performance gains by employing multiple execution cores in each processor package. By the end of 2007, a substantial majority of the new computers sold will contain dual-core or quad-core technology.
The widespread adoption of multi-core processing technology is inspiring a fresh look at computing possibilities and triggering a creative outburst of innovative solution designs. On the software side, parallelism has become essential to getting the best possible performance out of this new generation of multi-core processors. Developers must understand the inherent parallelism in their applications and acquire skills to design, develop, debug and test threaded applications to scale well with the multi-core processors. This change will be a gradual evolution; it is not something that will happen overnight.
How can I scale up my application for multi-core processors? Have related queries? Post them here.
As designers, software engineers, system architects, and solution developers grasp the concept of being able to run multiple threads simultaneously, it opens up whole new worlds in terms of what computers can do. Likewise, threaded application design expands possibilities for the software development community and innovative uses are already appearing that hint at the potential.
Threads can take advantage of existing and future processor designs in ways that developers are only now beginning to understand. For example, if an application has been set up for hyper-threading, it can deliver immediate benefits on a dual-core system because it was simply written to use two threads. Hopefully, the application is written to create more than two threads so it can use more than a hyper-threaded processor or a dual-core processor.
Ideally, a program is written and prepared to create at least as many threads as processors. Having a program ready to use additional threads, whether from cores or hyper-threading, allows the application performance to scale with the number of processors.
When architecting applications for dual and quad-core, developers have a tendency, because of the way platforms have worked in the past, to think in terms of utilizing two threads or four threads. However, if developers program for as many threads as possible within the program, as additional cores become available, the application will run faster and more efficiently.
The practice of threading beyond the immediate number of available cores essentially future-proofs application design and delivers returns on the investment of time and effort that can extend years beyond the application release. Optimally, developers and software designers should not think in terms of whether they need dual- or quad-core. Instead, it is practical and effective when architecting applications to consider how many tasks can be performed in parallel.
In sum, the arrival of Multi-Core processors, developers can explore new ways to employ multitasking for applications that have been complex in the past. For example with Multi-Core processors, useful tasks can be running in parallel-the virus scanner operating continuously and proactively, an automatic backup utility ensuring no work files are ever lost, an intelligent workflow monitor anticipating user requirements and delivering real-time information on cue.
Can I thread beyond the immediate number of available cores? Have more such queries? Post them here.
The variety of practical applications that will be running in the background on an ongoing basis will continue to grow as multi-core processing becomes more prevalent on client computers. With additional processing capabilities coming on line, development opportunities will move beyond simple performance related improvements, enabling whole new capabilities. Voice-activated commands, voice and video over IP, new information assistance and real-time access capabilities, enhanced IP management, and search and retrieval functions on multiple layers are just some of the capabilities enabling richer and more responsive computing environments for users.
The shift to parallel computing is producing a renaissance of development tools, fresh programming concepts, new models for multitasking, and a slate of opportunities for solution developers and system architects to break new ground and create trend-setting applications.
As a developer, how can you ensure that you stay ahead of this new paradigm?
- Educate and train yourself to exploit multi-core processor features and future-proof application designs.
- Identify and remove I/O memory bottlenecks.
- Validate your applications using the latest Software Development Products.
- Understand where your operating system of choice is threaded and take full advantage.
- Deliver products that enhance end user experiences through richer media processing, liberal multitasking, and multi-threading performance advantages.
Read more, get resources and training on:
www.intel.com/software/mcdeveloper
We have on board Intel expert, Kalyan Muthukumar on Ask the Expert. Kalyan can answer all your queries related to the multi-core platform. Post questions on developing multitasking client apps; scale up multithreaded applications to the multi-core processors; benefits and challenges of writing code for multiple cores etc. Post a query
/ciol/media/agency_attachments/c0E28gS06GM3VmrXNw5G.png)
Follow Us