Expect performance differences between
32- and 64-bit versions of Pro/ENGINEER
by Joseph Michaud, Intel Corp.
Posted 15 March 2006
Performance differences between the 32-bit and 64-bit versions of Pro/ENGINEER running on x86-compatible processors should be expected, but they can often be surprising. In this paper, we explore the kinds of performance differences a user might encounter and the reasons behind them.
An application is typically compiled for 64-bit to accommodate larger data sizes. In this process, pointers and sometimes integers become 64-bits. Larger data sizes, of course, consume more resources in the computer. They require more of a variety of resources, including more memory to store the working data; more CPU cache to reference the larger memory; more pages of virtual memory (if the page size doesn't change); more virtual memory page tables (for the OS to keep track of all those virtual pages); and more swap space into which the OS can save the process.
More memory, more cache
Probably the resource most affected by larger data sets is memory. Regardless of which version of Pro/ENGINEER that you run, if you don't have enough physical memory, it will run slower (oftentimes much slower). The culprit in this case is the OS paging the virtual memory in and out of physical memory from the swap space so that Pro/ENGINEER can do its work.
If your physical memory requirements running your model with 32-bit Pro/ENGINEER are just under the limits of your machine, then all is well. But, with 64-bit Pro/ENGINEER you might actually require more physical memory to run that same model. You might now not have enough physical memory, and as a result you will run slower because of paging. More physical memory (usually) means better performance.
The next important, but perhaps less obvious, resource is the CPU cache. The cache contains a quickly accessible copy of the physical memory. A 64-bit data model means bigger data, and bigger data means that the same amount of cache (like physical memory) can't hold as much of it. If the data isn't in cache, then a cache miss occurs and the CPU has to trudge out to the memory to get a copy – that takes time. As with physical memory, more cache (usually) means better performance. Unfortunately we can't increase the CPU cache as easily as we can add physical memory to the system.
Other performance factors
As you can see, in the case of 32- vs. 64-bit, bigger isn’t always better. But there are, of course, major advantages associated with a 64-bit CPU.
One advantage of 64-bit applications is that there are more data registers for the CPU to use directly. The CPU can work on more data at once without having to shuffle data in and out of those registers. Shuffling data, like paperwork, is often necessary but not terribly productive. The less you have to do, the more real work you can get done. More registers mean better performance. This applies to floating-point data registers as well as integer data registers.
Other factors might contribute to a difference in relative performance between running Pro/E in the 32- or 64-bit version. The drivers used by the OS (as well as the OS itself) might or might not be well tuned for the application. There might be different versions that provide different features affecting performance. The compilers used to create the software might be able to take better advantage of instructions provided by 64-bit CPUs.
Try it yourself
As this brief summary shows, a variety of factors can contribute to performance differences between 32- and 64-bit versions of Pro/ENGINEER. Some factors increase performance, others decrease it, but it is not always obvious what will or should happen. The best way to determine how the different versions will perform is to try them with your application, or with a benchmark such as SPECapc for Pro/ENGINEER Wildfire 2.0 that seeks to reflect the types of workloads and operations experienced in day-to-day use.
Joseph Michaud is an applications engineer in the Developer Products Division at Intel, and previously worked in the same capacity at SGI.
Editor’s note: As of this writing, PTC does not support the 32-bit version of Pro/ENGINEER on a 64-bit OS. So while it might be interesting to test this, it should not be benchmarked with the intention of adopting it in an actual design and engineering environment.