Completing a successful software migration from one processor architecture to another requires an awareness of architecture differences and its impact to the software. The main point to keep in mind is that every situation is different, depending on the goals and requirements of the migration. The level of effort required all depends on the amount of abstraction that is already programmed into the existing code. For example, depending on whether assumptions are made throughout the code base about the underlying operating system (OS) or hardware the migration could be as simple as recompiling the software, or could be more involved, requiring extra programming for areas of software that are hardware or OS dependent. Rest assured, there is nothing to fear but…well I guess that phrase has already been coined. Hopefully you get the point. A successful port can be achieved by assessing and understanding the current situation and requirements, and planning each step before the migration begins.
I hope to use this media as an open dialog to help developers with their IA migration projects. Let me know if there are any topics that you would like more information about.
Note: This “Migrating to Intel® Architecture” blog series will review the software implications of migrating to Intel Architecture (IA). This first blog provides an overview of what’s involved and will be followed by blogs that dive deeper into each area.
There are two parts of software design involved when considering migrating to IA, which include adopting IA (run correctly on one IA core) and then adopting multi-core (benefit from multiple cores). At a very high level there are 5 basic steps, which cover both parts.
- Step 1: Port the current code to the target OS.
- Step 2: Execute the code correctly on one IA core.
- Step 3: Optimize the code for one IA core.
- Step 4: Apply multi-core software design updates.
- Step 5: Optimize the code for multi-core IA performance.
Step 1: Port the current code to the target OS
If the architecture migration includes a port to a different operating system, even if its moving from the uni-processor to symmetric multiprocessing (SMP) version of the same OS, complete the port to the new operating system before you start the migration of the software to IA. This step helps to isolate and resolve issues that are not directly related to processor architecture differences.
When choosing the target OS, check with the OS distributor to see if there is an OS migration guide available that supports the current and target OS pair used in the migration.
Considerations for porting source code to a new OS not only includes updating the OS calls, but also includes locating the correct version of all necessary third-party utilities and libraries needed to build the application (especially in the next step for adopting for IA). Common examples are:
- Source control system
- Developer tools
- Build utilities
- Licensing, graphics, or other third-party libraries
The goal in this step is to ensure that the software performs as expected and correctly on the new OS, prior to any changes for IA. Since this step requires stability of the same code running on the target OS, do not make other software design changes in this step.
In the next blog I’ll start covering topics within the more involved Step 2: Execute the code correctly on one IA core. Is there anything specific you would like to make sure that I cover?