Intel Technology Journal
Porting Operating System Kernels to the IA-64 Architecture for Pre-silicon Validation Purposes

Kathy Carver, IA-64 Processor Division, Intel Corporation
Chuck Fleckenstein, IA-64 Processor Division, Intel Corporation
Joshua LeVasseur, IA-64 Processor Division, Intel Corporation
Stephan Zeisset, IA-64 Processor Division, Intel Corporation

ABSTRACT

To provide additional vehicles for pre-silicon validation and post-silicon debug of the Intel Itanium™ processor, we ported two operating system kernels to the IA-64 architecture. The Mach3* microkernel was ported first, followed by the Linux* 2.2.0 kernel, and these have helped track the overall health of the Itanium RTL model for the last two years. These operating system (OS) kernels also helped pre-silicon performance analysis and compiler-generated code analysis.

The Mach3 kernel (the IA-64 port was called Munster internally) was ported because it contained features similar to Microsoft Windows NT*, such as tasks, threads, interprocess communication (IPC), and symmetric multiprocessing (SMP). Mach3* allowed us to exercise parts of the Itanium model in a similar way to Microsoft Windows NT, but at a reduced scale and without device support.

Linux (the IA-64 port was called IPD-Linux internally) was ported because its source is readily available and 64-bit clean, it is highly configurable, and it would exercise the model in a different way than Mach3. We started with a released 2.2.0 version of the source and ported the kernel using a non-GNU C Compiler (GCC). The difficulty of porting the Linux kernel without GCC made the task more challenging.

Besides porting the architecture-specific portions of the kernels, modifications were necessary to both kernels to remove certain dependencies on external devices and BIOS initialization. Also, the OS initialization paths executed prior to user-level programs had to be shortened to accommodate the simulation speed of the RTL environment. The kernels had to be extremely configurable in order to run in diverse simulation environments.

Both kernels were tested from processor reset to user-mode code execution to validate the significant parts of the RTL that an operating system would exercise during the boot process. Kernel initialization, virtual memory management, context switching, trap handling, system call interfaces, and user-mode context paths were all exercised on the actual RTL model. This effort uncovered several errata in the RTL model and in the IA-64 tools (such as the compiler and linker). It also provided us a model regression sanity check for each new RTL release. We believe this pre-silicon effort was instrumental in allowing Windows NT to boot just days after first silicon. In this paper, we discuss the porting of kernels to the IA-64 architecture for pre-silicon operating system validation.



Next    Page 1 of 12