It's official: Hyper-Threading Technology, Intel's technology for letting a single processor execute two threads simultaneously, is coming to consumer and desktop computing.
Previously, only high-end 32-bit Intel Xeon processors, normally used in servers and technical workstations, included HT Technology. However, at the Intel Developers' Forum in early September, the company announced that the Pentium 4 Processor supporting Hyper-Threading Technology would soon be available for desktop computers.
(Hyper-Threading Technology requires a computer system with an Intel Pentium 4 processor at 3.06 GHz or higher, a chipset and BIOS that utilize this technology, and an operating system that includes optimizations for this technology. Performance will vary depending on the specific hardware and software you use. See www.intel.com/info/hyperthreading for information.)
Heck, Intel did more than announce Hyper-Threading Technology on the desktop: Company president Paul Otellini showed demonstrations on a 3.06 GHz PC based on the Intel Pentium 4 Processor with HT Technology, and said it would be available later in 2002, possibly for the Christmas retail season.
Threading For the First Time
If you're building desktop applications, there's a good chance that your software has never run on a multi-processing system before. Because threaded applications run differently on a multi-processing or Hyper-Threading Technology system, you might want to add such a system to your QA lab. The Intel Developer Services Early Access Program can help you gain access to such system, either for short-term use or purchase at a discount. The Early Access Program also has validation programs where you can test your code for threading correctness. Click here for more information about the Early Access Program.
|
|
As someone who uses several dual-processor systems with Intel Xeon processors and Hyper-Threading Technology under both Red Hat Linux and Windows, I can tell you that adding Hyper-Threading Technology to Intel processors means only good news for consumers and developers. The real opportunity, however, is for ISVs who learn how to exploit Hyper-Threading Technology. That's because these performance-oriented consumers will flock to these processors; I predict that the idea that an affordable uniprocessor system can offer multiprocessing capabilities will prove irresistible. Whether it's in gaming, image processing, business analytics or desktop publishing, sub-$1000 boxes that have the Intel Pentium 4 Processor with HT Technology will be put to the test. And if your application flies on it, you'll have a lot of satisfied customers. (For more about what makes Hyper-Threading Technology so special, see
Boosting Application Performance with Hyper-Threading Technology.)
Is there a catch? No. Intel has made it easy: If your application is properly designed using threads and is running on an operating system that supports HT Technology, it will automatically execute threads in parallel on the Pentium 4 Processor supporting Hyper-Threading Technologyjust as if it was running on a symmetric multiprocessing system. In fact, to applications, the system looks likes SMP.
Many savvy developers already write well-threaded appscorrectly done, threading leads to more efficient execution, whether on a single processor machine or on an eight-way server. Almost all server apps that I've encountered are multithreaded, and perform marvelously on Intel Xeon processors due to Hyper-Threading Technology. Just about every server developer I know probably dreams in multiple threads; for many, threading is second nature during both the software design and coded phases. But because almost all desktop computers have been single-processor boxes, many developers in that space have little or no experience with threading. The immediate payback for threading simply hasn't been there, at least not on the desktop.
Now, thanks to the forthcoming availability of the Pentium 4 Processor supporting Hyper-Threading Technology (it sort of sings, doesn't it?), everything's changing. Of course, it may not always be advisable to rewrite an existing non-threaded application from scratch to use threading. But here are six reasons why your top software developers should care about Hyper-Threading Technologyand why you should ensure that their next desktop development project uses strong threading techniques.
Hyper-Threading Technology vs. Multi-Processing
To your operating system or application, a computer with one processor equipped with Hyper-Threading Technology, such as Intel's Xeon or forthcoming high-speed Pentium processors, looks like a dual-processor multi-processing computer. While threaded applications will be able to take full advantage of Hyper-Threading Technology, there may be some differences in the way that the applications are tuned.
Why? Because a Hyper-Threading Technology-enabled Pentium or Xeon processor has a single set of internal resources, such as the L1 and L2 caches, front-side bus, and multi-step instruction pipeline. Both threads executing under Hyper-Threading Technology have to share those resources. By comparison, in a true multi-processing system, each chip has its own caches, buses and pipelines. While generally these differences will not affect you, it's important to be aware of them. For an intro to these issues, see our article "Boosting Application Performance with Hyper-Threading".
|
|
Reason No. 1: The sheer number of consumers make this a lucrative fast-moving market and a great opportunity for product differentiation. We all know that multithreading means performance benefits. But the number of multithreading systems will explode from today's relatively small number of high-end scientific workstations and multiprocessor servers to the giant consumer market. In effect, the vast majority of computer users will have multithreading capability for the very first time. Wouldn't it be great to be able to market these benefits to your customers? Remember how early vendors onboard with MMX Technology grabbed a mind-share and market-share advantage. With the advent of Hyper-Threading Technology, you have a similar opportunity to take leadership.
Reason No. 2: Intel will help both your marketers and developers. This is a corollary to the first reason, but through its Intel Developer Services Early Access Program, Intel offers technical assistance, advance access to Hyper-Threading Technology-equipped hardware and even come-to-market tools to help you make a big splash with your new or improved product. You can learn more about their general programs through our articles Gain a Business Edge with the Early Access Program and Co-marketing with Intel Through the Early Access Program. For more about the Early Access Program itself, see our Get the latest tools and access expert training and support from the Intel Early Access Program.
Reason No. 3: You're in a great position if your application runs natively on the operating system, such as Linux, Unix or Windows. Native applications, particularly those written in C or C++, have full control over threading. If you're writing in C/C++, you'll find threading especially easy to implement. You can also use a code profiler (such as Intel's VTune Performance Analyzer) to understand your code, and see where it would provide the most bang-for-the-buck to pull individual components or modules out to run in their own threads. Intel's C/C++ and Fortran compilers can also help you optimize your Linux and Windows apps for the new processor.
Reason No. 4: Multiple threads allow you to offer your users a more integrated, streamlined interactive experience. Many desktop applications have a graphical user interface that communicates with a back-end data-processing engine. If you separate the GUI into its own threads, on a multiprocessor or Hyper-Threading Technology-enabled system, those threads will execute fully in parallel with the back-end engine. You'll find opportunities everywhere, such as any application involving multimedia, where you want an animation to run smoothly. Another type of application is in XML-based Web services, where the SOAP listener should have a life of its own. If there's any kind of polling, that should be in its own thread. This technique will generally result in a cleaner and more responsive computing experience, even if the app itself doesn't appear to run faster. (If you have interesting places where multithreading can make a huge impact, drop me a line at zeichick@camdenassociates.com, and we'll talk about them in a future article.)
Reason No. 5: You can boost applications that have parallel operations without many horizontal dependencies. Think back to Project Management 101: Doing things in series is nice and comfortable for anyone raised on structured programming, but in today's modern event-driven world, a lot of things happen in parallel. Forget about obvious examples, like tracking the mouse: There might just be a number of steps in a particular operation that take a long time to complete in series, but could be completed much faster in parallelparticularly when there are external systems involved that might cause delays in a particular critical-path task, such as an I/O request or call for something over the network.
Reason No. 6: It's good programming practice, and the rewards will keep coming. A properly threaded application is easier to write, easier to debug, easier to tune. No matter whether you're running Java, Linux, .NET, Unix, or Windows, threading is the right thing to do. For example, in these DevX articles, Peter Aitken shows how to get started with multithreading in .NET, Mark Williams gets you multithreading with Java, Mani Malarvannan and Oliver Enseling bring you up to speed on Enterprise JavaBeans, and Matthew Amheiter even shows how you can add multithreading to Visual Basic.
In summary, multithreaded execution ain't no newfangled methodology, no sir, no ma'am; threading is essential to high-performance and responsible application design and development. As I said earlier, Intel makes it easy. And with Hyper-Threading Technology-enabled processors, desktop applications will finally see the run-time benefits of this practice. Isn't it time your developers began taking threading into account?