VC++ Blog Tour Stop: Content Part 6: Roadmap to Taking Advantage of Hardware
You are either tired of hearing about it or you are sleeping under a rock, but like it or not, hardware is changing. Not just from 32-bit to 64-bit, but the fundamental structures are all up for a make-over (not anywhere near the likes of what Trading Spaces has seen). We also see the omni-present device taking the headline spot in personal technology line-ups.
From the tour:
Concurrency
The Hardware - Adding cores to chips is what will make them faster in the future, clock speed is slowing to a crawl.
Intel and AMD both will ship multicore this year – within two years, most CPUs shipped will be multicore.
The Software - There are multiple types of concurrency for different tasks:
- Data parallelism – Algorithmic concurrency, such as loops
- Task parallelism – Traditional threading
- Instruction level parallelism – Vectorization with SSE and SSE2
If you are not taking advantage of the concurrency your application performance will suffer. You’ll need to learn how to write parallel programs!
Data Parallelism: OpenMP
- OpenMP is a specification for writing multithreaded programs
- It consists of a set of simple #pragmas and runtime routines
- Makes it very easy to parallelize loop-based code
- Can parallelize loops and straight-line code
- Includes synchronization constructs
- Helps with load balancing, synchronization, etc…
- In Visual Studio, only available in C++!
Task parallelism: Windows threading
- Standard model of Windows threads and threadpool
- Useful for invoking different threads to run different functions
- Instruction level parallelism: The profiler and C++ optimizer
- Without Visual C++ 2005 you will lose performance on future processors!
64-bit
- The 64-bit Platform provides many benefits:
- Vastly increased address space
- OS has more resources (buffer sizes, handles, etc…)
- Enhanced 32-bit performance on x64 (maybe surprising, but true)
- Modern computer architecture – fewer limitations
- Better programming model (No more PAE/AWE!)
- Full use of 64-bit components
Devices
Devices are now first class citizens in Visual Studio 2005:
- Same IDE as desktop platforms
- Same source base for compilers and native libraries
- Ability to target multiple platforms
- Managed and Native projects in same solution
- Debugging is like the desktop debugger
Again, there are really great sources for further information:
Herb Sutter's Blog - http://pluralsight.com/blogs/hsutter/
Kang Su Gatlin's Blog - http://blogs.msdn.com/kangsu/
64-bit Programming - http://msdn.microsoft.com/visualc/using/building/64bit/default.aspx
Windows Embedded Home - http://msdn.microsoft.com/embedded/default.aspx
Windows CE - http://msdn.microsoft.com/embedded/windowsce/default.aspx