Architecture Support

From gem5
Revision as of 02:06, 16 May 2011 by Gblack (talk | contribs) (x86)
Jump to: navigation, search


Gem5 models a DEC Tsunami based system. In addition to the normal Tsunami system that support 4 cores, we have an extension which supports 64 cores (a custom PALcode and patched Linux kernel is required). The simulated system looks like an Alpha 21264 including the BWX, MVI, FIX, and CIX to user level code. For historical reasons the processor executes EV5 based PALcode.

It can boot unmodified Linux 2.4/2.6, FreeBSD, or L4Ka::Pistachio as well as applications in syscall emulation mode. Many years ago it was possible to boot HP/Compaq's Tru64 5.1 operating system. We no longer actively maintain that capability, however, and it does not currently work.


The ARM Architecture models within gem5 support an ARMv7-a profile of the ARM® architecture with multi-processor extensions. Specifically, this include support for Thumb®, Thumb-2, VFPv3 (32 double register variant) and NEON™. Optional features of the architecture that are not currently supported are TrustZone®, ThumbEE, Jazelle®, and Virtualization and Large Physical Address Extensions (LPAE).

In full system mode gem5 is able to boot uni- or multi-processor Linux and bare metal applications built with ARM's compilers. Additionally, statically linked Linux binaries can be run in ARM's syscall emulation mode.




Gem5 models a single core of a UltraSPARC T1 processor (UltraSPARC Architecture 2005).

It can boot Solaris like the Sun T1 Architecture simulator tools do (building the hypervisor with specific defines and using the HSMID virtual disk driver). Multiprocessor support was never completed for full-system SPARC. With syscall emulation gem5 supports running Linux or Solaris binaries. New versions of Solaris no longer support generating statically compiled binaries which gem5 requires.


Gem5 models a generic x86 CPU with 64 bit extensions, more similar to AMD's version of the architecture than Intel's but not strictly like either. Unmodified versions of the Linux kernel can be booted in UP and SMP configurations, and patches are available for speeding up boot. SSE and 3dnow are implemented, but the majority of x87 floating point is not. Most effort has been focused on 64 bit mode, but compatibility mode and legacy modes have some support as well. Real mode works enough to bootstrap an AP, but hasn't been extensively tested. The features of the architecture that are exercised by Linux and standard Linux binaries are implemented and should work, but other areas may not. 64 and 32 bit Linux binaries are supported in syscall emulation mode.