Intel® Xeon® Processors and Itanium® 2 Processors - Picking the Right

by Roger Smith


Software developers have two powerful allies in their quest for optimal applications performance: Explicitly Parallel Instruction Computing (EPIC) and Hyper-Threading Technology. On one hand, developers coding for the Itanium® 2 processors receive the unparalleled EPIC approach to high-performance computing, which executes multiple instructions in a thread simultaneously. On the other hand, 32-bit developers can leverage the benefits of multi-threaded parallel processing today using the Intel® Xeon® processor's Hyper-Threading Technology. The following sections give some perspective on which types of applications leverage the distinct features of these two enterprise processors.

Parallelism: Intel® Itanium® 2 Processors and Intel® Xeon® Processors

To an independent developer such as myself, it appears that Intel is moving forward on two separate and distinct paths. That is to say, with the familiar 32-bit processor lines (with the Pentium® 4 and Intel Xeon chips) and the newer Itanium architecture typified by the new Itanium 2 processor. Are they two completely different worlds? In some ways, yes. In some ways, no.

While a lot of developers (and the media) focus on the fact that the x86 processor architecture is 32-bit and the Itanium processor is 64-bit, that's only the most obvious of differences between the product families. Another is that the Itanium processor family uses a new EPIC design, which can execute as many as two bundles of three instructions within a single thread in one clock cycle. In other words, it's a form of parallel processing, right there on a single chip. Of course, the Itanium processor family offers other advantages beyond EPIC: the latest Itanium 2 processor includes as much as 3MB of L3 cache, has a 128-bit wide 400MHz system bus, and has extensive support for multiprocessing, floating-point computation, and even has an advanced machine-check architecture that minimizes data loss, corrupt and downtime.

Such ability to process multiple instructions simultaneously is key to many high-performance applications, such as executing database queries on a high-volume transaction server. While EPIC is unique to the Itanium processor family, the Intel Xeon processor family has its own secret weapon: Hyper-Threading Technology, which allows developers to perform simultaneous multithreaded execution on a single chip.

That's not to say that the underlying architecture of these chips' instruction execution systems is similar. Far from it! There is a huge difference between the Itanium 2 processor's EPIC architecture, which was designed around a reduced microprocessor and instruction set and explicit parallelization, and the Intel Xeon processors' x86-based CISC architecture, which uses a complex instruction set architecture. But with Hyper-Threading Technology, applications running on an Intel Xeon processor can enjoy important performance benefits.

How Does Hyper-Threading Technology Work?

Because the Intel® Xeon® processor's Hyper-Threading Technology is a newer technology than the Itanium processor's EPIC, let's go into more detail on how it works. To mak e a long story short, Hyper-Threading Technology allows an operating system to view a single physical processor as if it were two logical processors, thus increasing the number of simultaneous threads that the processor can execute. This is beneficial for e.g. for servers servicing many simultaneous Web transactions and users.

Since Hyper-Threading Technology can effectively double the number of logical processors in a multiprocessing system, it is important for software developers to be able to programmatically identify each logical processor present in a system. Intel has an on-line training course* and code samples that will show you how to do this.

When you couple that with the Intel Xeon processor's higher clock frequencies compared to the older Pentium® II and III systems, Hyper-Threading Technology acts as a force multiplier. Or, putting that another way, Intel processor performance should no longer be judged by raw MHz horsepower numbers alone -- but should now be considered a function of frequency and multi-tasking scalability.

Let's turn that into practical benefits. If your 32-bit applications are running into problems with multitasking, or would operate more efficiently if they could spawn and process more threads, Intel Xeon processors would be a great solution. If, on the other hand, you are trying to manipulate data files in memory that are very large, or if your application requires the processing of individual threads with the maximum efficiency, then the Itanium® 2 processor is your best bet.

By the way, one of the best ways to understand how applications will perform on the Hyper-Threading Technology enabled Intel Xeon processor or on the EPIC architecture in the Intel Itanium 2 processor is to try it for yourself. Intel's Software Partner Program, described later in this article, provides developers with the hardware and tools needed to evaluate both of these leading-edge platforms.

Why You Should Care About Hyper-Threading Technology

My favorite example of the value of Hyper-Threading Technology capability is in databases. Hyper-Threading Technology is especially useful for developers who want to dramatically improve the response time of their database applications by breaking down their queries into subsections and spreading those subsections across multiple processors.. Remember, because Hyper-Threading Technology makes a single processor look like two processors to the software, a single chip could handle two separate threads.

The ability to execute queries in parallel on multiprocessor servers has recently become a check box feature for major enterprise database platforms such as Microsoft's SQL Server*, the Oracle9i* database, and IBM's DB2*. One typical use of a parallel query would be to calculate quarterly sales as part of an order processing application, as in the following query:

SELECT TOP 4 QUARTER(QNum, OrderDate) AS FiscalQuarter,
QUARTER(year,Orderdate) AS FiscalYear,
SUM(unitprice*quantity) AS Sales
FROM Orders O,
[Order Details] OD
WHERE O.OrderID = OD.OrderID
GROUP BY QUARTER(year, Orderdate),
QUARTER(QNum, OrderDate)
ORDER BY FiscalYear Desc, FiscalQuarter Desc

In this example, the query is broken down into four sub-tasks, which are associated with each of the four quarters in a fiscal year.

A parallel database query where data for each quarter is assigned to a separate processor

Thus, on a two-way Intel Xeon processor-based server with four logical processors, the RDMS query manager can assign the data for one fiscal quarter to each "visible" processor - and run all four threads simultaneously, two per physical processor, thanks to Hyper-Threading Technology. And this isn't a smoke-and-mirrors trick, where the threads just appear to be running at the same time; they really are.

Moving Forward

When your application has huge data sets, requires extensive floating-point computation, or requires 64-bit addressing, then the Itanium 2 is the clear winner. The EPIC architecture, when paired with Intel's compilers, really optimize individual execution threads to take advantage of parallel processing on a single chip, while the huge cache offers performance benefits across the board.

If you're developing database applications that run large-scale databases like DB2, Oracle*9i or SQL Server*, and assuming you won't need the high end features of the Itanium 2 processor, first ensure you're running the latest versions of these applications that support threading, and run on Hyper-Threading Technology enabled processors. If you're writing or running Java * applications and want to take full advantage of the new Intel Xeon processor features, you'll also need to ensure that you have a JVM that can leverage Hyper-Threading Technology (and Intel's other NetBurst microarchitecture extensions beyond the basic x86 instruction set).

If you're building native applications targeting the Intel Xeon processor running on Linux* or Win32*, the main design goal should be to thread your application, i.e. write the application in a multi-threaded manner, and then use a compiler (such as those from Intel, see Intel Software Development Products) that can automatically generate the proper object code to invoke Hyper-Threading Technology. That doesn't mean that you'll give up compatibility: these compilers can generate single binaries that will include both Hyper-Threading and normal x86 object code.

Still confused about Itanium 2 processors vs. Intel Xeon processors? You're not alone, because both processors have myriad technologies and advantages, and it may not always be a clear-cut choice between one or the other, especially for large enterprise applications. My advice: Work directly with Intel to ensure that your applications can fully exploit the power of its latest processors. By all means, register to become an Intel® Software Partner and leverage Intel's platforms, tools, and expertise in building high-performance apps.

If you need 64-bit addressability, and if your applications can benefit from optimizing the performance of individual threads, the Itanium 2 processor is the one to go for. Alternatively, if you're not getting the optimal performance from 32-bit systems and single-threaded applications but don't have the need for 64 bit addressability, large memory page access and explicit parallelism provided by an Itanium® 2 processor development environment, a high-end multi-processing Intel® Xeon® processor-based system is a great choice.

What's the next step? Join the Discussion at the Intel® Developer Zone Forum.

Related Links

Additional information on Itanium processor architecture

Related Developer Centers

Intel Itanium Processor Family

Parallel Programming Developer Community

Intel Xeon Processor

About the Author

Roger Smith is the former technical editor of Software Development magazine. He has a degree in computer science and has worked for several large companies as a systems analyst and software developer for more than 15 years, using a variety of programming languages including C++*, Java* and UML*.

Pour de plus amples informations sur les optimisations de compilation, consultez notre Avertissement concernant les optimisations.