Armulator
Encyclopedia
ARM Instruction Set Simulator
Instruction Set Simulator
An instruction set simulator is a simulation model, usually coded in a high-level programming language, which mimics the behavior of a mainframe or microprocessor by "reading" instructions and maintaining internal variables which represent the processor's registers.Instruction simulation is a...

, ARMulator, is one of the software development tools provided by the development systems business unit of ARM Limited to all users of ARM-based chips. It owes its heritage to the early development of the instruction set by Sophie Wilson
Sophie Wilson
Sophie Wilson is a British computer scientist. She is known for designing the Acorn Micro-Computer, the first of a long line of computers sold by Acorn Computers Ltd, as well as the instruction set of the highly successful ARM processor.- Life and career :...

. Part of this heritage is still visible in the provision of a Tube BBC Micro
Tube (BBC Micro)
In computing, the Tube was the expansion interface and architecture of the BBC Microcomputer System which allowed the BBC Micro to communicate with a second processor, or coprocessor....

 model in ARMulator.

ARMulator is written in C, and provides more than just an instruction set simulator, it provides a virtual platform for system emulation. It comes ready to emulate an ARM processor and certain ARM Coprocessor
Coprocessor
A coprocessor is a computer processor used to supplement the functions of the primary processor . Operations performed by the coprocessor may be floating point arithmetic, graphics, signal processing, string processing, or encryption. By offloading processor-intensive tasks from the main processor,...

s. If the processor is part of an embedded system
Embedded system
An embedded system is a computer system designed for specific control functions within a larger system. often with real-time computing constraints. It is embedded as part of a complete device often including hardware and mechanical parts. By contrast, a general-purpose computer, such as a personal...

, then licensees may extend ARMulator to add their own implementations of the additional hardware to the ARMulator model. ARMulator provides a number of services to help with the time-based behaviour and event scheduling. ARMulator ships with examples of memory mapped and co-processor expansions. This way, they can use ARMulator to emulate their entire embedded system
Embedded system
An embedded system is a computer system designed for specific control functions within a larger system. often with real-time computing constraints. It is embedded as part of a complete device often including hardware and mechanical parts. By contrast, a general-purpose computer, such as a personal...

. A key limitation for ARMulator is that it can only simulate a single ARM CPU at one time, although almost all ARM cores up to ARM11
ARM11
ARM11 is an ARM architecture 32-bit RISC microprocessor family which introduced the ARMv6 architectural additions. These include SIMD media instructions, multiprocessor support and a new cache architecture...

 are available.

Performance of ARMulator is good for the technology employed, it's about 1000 host (PC) instructions per ARM instruction. This means that emulated speeds of 1MHz were normal for PCs of the mid to late 90s. Accuracy is good too, although it is classed as cycle count accurate rather than cycle accurate, this is because the ARM pipeline isn't fully modeled (although register interlocks are). Resolution is to an instruction, as a consequence when single stepping the register interlocks are ignored and different cycle counts are returned than if the program had simply run, this was unavoidable.

Testing ARMulator was always a time consuming challenge, the full ARM architecture validation suites being employed. At over 1 million lines of C code it was a fairly hefty product.

ARMulator allows runtime debugging using either armsd (ARM Symbolic Debugger), or either of the graphical debuggers that were shipped in SDT and the later ADS products. ARMulator suffered from being an invisible tool with a text file configuration (armul.conf) that many found complex to configure.

ARMulator was available on a very broad range of platforms through its life, including Mac
Mac OS
Mac OS is a series of graphical user interface-based operating systems developed by Apple Inc. for their Macintosh line of computer systems. The Macintosh user experience is credited with popularizing the graphical user interface...

, RISC OS
RISC OS
RISC OS is a computer operating system originally developed by Acorn Computers Ltd in Cambridge, England for their range of desktop computers, based on their own ARM architecture. First released in 1987, under the name Arthur, the subsequent iteration was renamed as in 1988...

 platforms, DEC Alpha
DEC Alpha
Alpha, originally known as Alpha AXP, is a 64-bit reduced instruction set computer instruction set architecture developed by Digital Equipment Corporation , designed to replace the 32-bit VAX complex instruction set computer ISA and its implementations. Alpha was implemented in microprocessors...

, HP-UX
HP-UX
HP-UX is Hewlett-Packard's proprietary implementation of the Unix operating system, based on UNIX System V and first released in 1984...

, Solaris, SunOS
SunOS
SunOS is a version of the Unix operating system developed by Sun Microsystems for their workstation and server computer systems. The SunOS name is usually only used to refer to versions 1.0 to 4.1.4 of SunOS...

, Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

, Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

. In the mid-90s there was reluctance to support Windows platforms, pre-Windows 95 it was a relatively challenging platform. Through the late 90's and early 00's support was removed for all but Solaris, Windows and Linux - although undoubtedly the code base remains littered with pragmas such as #ifdef RISCOS.

ARMulator II formed the basis for the high accuracy, cycle callable co-verification models of ARM processors, these CoVs models (see Cycle Accurate Simulator
Cycle Accurate Simulator
A Cycle Accurate Simulator is a computer program that simulates a microarchitecture cycle-accurate. In contrast an instruction set simulator simulates an Instruction Set Architecture usually faster but not cycle-accurate to a specific implementation of this architecture. They are often used when...

) were the basis of many CoVerification systems for ARM processors. Mentor Graphic's Seamless have the market leading CoVs system that supports many ARM cores, and many other CPUs.

ARMulator II shipped in early ARM toolkits as well as the later SDT 2.5, SDT 2.5.1, ADS 1.0, ADS 1.1, ADS 1.2, RCVT 1.0 and also separately as RVISS.

Key contributors to ARMulator II were Mike Williams, Louise Jameson, Charles Lavender, Donald Sinclair, Chris Lamb and Rebecca Bryan (who worked on ARMulator as both an engineer and later as product manager). Significant input was also made by Allan Skillman, who was working on ARM CoVerification models at the time.

A key contributor to ARMulator I was Dave Jaggar.

Special models were produced during the development of CPUs, notably the ARM9E
ARM9E
ARM9 is an ARM architecture 32-bit RISC CPU family. With this design generation, ARM moved from a von Neumann architecture to a Harvard architecture with separate instruction and data buses , significantly increasing its potential speed...

, ARM10 and ARM11
ARM11
ARM11 is an ARM architecture 32-bit RISC microprocessor family which introduced the ARMv6 architectural additions. These include SIMD media instructions, multiprocessor support and a new cache architecture...

, these models helped with architectural decisions such as Thumb-2 and TrustZone.

ARMulator has been gradually phased out and has been replaced by Just-in-time compilation
Just-in-time compilation
In computing, just-in-time compilation , also known as dynamic translation, is a method to improve the runtime performance of computer programs. Historically, computer programs had two modes of runtime operation, either interpreted or static compilation...

-based high performance CPU and system models (See FastSim link below).

ARMulator I was made open source and is the basis for the GNU version of ARMulator. Key differences are in the memory interface and services, also the instruction decode is done differently.
The GNU ARMulator is available as part of the GDB debugger in the ARM GNU Tools.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK