Several weeks ago I mentioned in the forums that we had spent a significant amount of engineering resources creating a 64-bit version of the iRacing simulator, and that it was about to enter alpha testing. Since then we have received a lot of questions and worries from customers regarding the impact of this conversion. We want to assure everyone that customers with 32-bit systems should not be alarmed. Hopefully this post will help put a lot of the questions to rest.
First of all, let me provide some motivation for why we tackled this complex and difficult conversion. Most PC’s these days feature amazing 64-bit processors, and they also ship with a lot more system memory (RAM) than they did just a few years ago. The percentage of iRacing customers with 64-bit processors and operating systems is rapidly increasing. While 32-bit applications often run fine on 64-bit processors, they run somewhat handicapped compared to native 64-bit applications:
- 64-bit applications can utilize more system RAM than 32-bit applications can utilize – a primary benefit of the extra bits (64 vs. 32) is that more memory may now be utilized by a single application (if it is 64-bit).
- 64-bit applications can talk directly to the native 64-bit operating system, rather than going through a 32-bit to 64-bit mode translation (and back again) for every interaction. So there is slightly less performance overhead when calling into lower level systems including Direct3D, DirectSound, and the windows kernel – which are already 64-bit if you have a 64-bit operating system and processor.
- 64-bit applications have access to about double the number of internal processor registers, which often speeds up programs by helping reduce the number of memory accesses required to perform a task. The extra registers also reduce the overhead of function calls through an improved register based calling convention.
- 64-bit applications have guaranteed access to most of the modern processor extensions that have accumulated in 32-bit processors over the years, but which were not always available on all 32-bit processors. This makes it easier and more cost effective to use these extensions for optimization purposes.
Given the above benefits, the number of customers with 64-bit systems, and the fact that our simulation and our race servers were already beginning to bump up against the 32-bit memory limitation, we realized it was just a matter of time until we would need to convert our simulation to run native 64-bit. Although we knew it was a large complex project given our code base, and that it would be accomplished by delaying other features, we felt it needed to be done, and it looked to us like the sooner the better. Fortunately, it actually went a bit quicker than expected. But, we still have a long way to go to unlock the full potential of modern 64-bit processors as time and priorities permit.
Now, on to the main reason for this post, which is to provide some information in response to some questions and worries we have been receiving:
- Customers with 32-bit systems should not be alarmed. In the future we may stop supporting the 32-bit version, but right now we have far too many customers with 32-bit systems to do anything like that. We would give plenty of advance notice if we were contemplating such a drastic change.
- The 64-bit version still needs to pass alpha and beta testing. There is a possibility we may need to delay its release if some major problem is identified. At this time it’s still looking pretty solid for release.
- If we do release the 64-bit version, it will automatically install for everyone along with the 32-bit version in the system package update. So all customers will automatically have both versions of the executable. At this time, all of the simulation data is identical and shared between the versions (cars, tracks, replays, etc.), so the overhead for the 64-bit is just a couple of extra executables residing in the iRacing install directory.
- We still have not worked out the final details of how each customer will select to run either the 32-bit or 64-bit version of the simulator. But, we have designed the service so that if a customer accidently selects the 64-bit version on a 32-bit platform nothing bad will happen. We will detect this error when the simulation is to be launched and the service will automatically fall back to the 32-bit version. One can’t pick the wrong thing and have it not work.
- We may decide to set it up so that by default everyone is set to run the 64-bit version, and to just fallback to the 32-bit version if they are on a 32-bit platform. But, if we do this, and a customer is encountering an issue with the 64-bit version, or they just like the 32-bit version better for some reason, there will be an option somewhere (possibly in the member site account settings) to allow a customer with a 64-bit system to force the service to launch the 32-bit version for them.
- At this time we don’t know of any racing advantages in one mode vs. the other, but we have identified that there can be small differences in ride heights in the garage with the same car setup, so we haven’t ruled out the possibility of some sort of advantage one way or the other. The 64-bit version uses different floating point instructions, different floating point precisions, and vastly different instruction sequences, so complex physics equations obtain results with different rounding errors in them between the two modes. It’s unavoidable.
- Currently there are no feature differences between the versions, except fmod sound support has been removed from the 64-bit version. We are planning to remove fmod as soon as possible from the 32-bit version as well, so this may no longer be a difference if/when 64-bit support is released.
- At this time, based on preliminary testing, it appears that the 64-bit versions runs about the same speed as the 32-bit version, as measured via frames per second, for many systems. We’ve yet to optimize specifically for x64 and some of the benefits of 64-bit are offset by 64-bit negatives. Nonetheless, a native 64-bit version of the simulation is in alpha testing, and seems to be performing quite well, at least on par with the 32-bit version.