Hercules emulator

From Wikipedia, the free encyclopedia

Hercules logo
Hercules logo

The Hercules emulator is an emulator for the IBM mainframe hardware: the System/370, System/390 and zSeries computers. It runs under Linux, Windows, FreeBSD and Mac OS X and is released under the open source software license QPL. It emulates the CPU and peripheral device hardware only; the operating system has to be supplied by the user. Hercules was notably the first mainfame emulator to incorporate 64-bit z/Architecture support, beating out other commercial offerings.

Development of the Hercules emulator was started in 1999 by Roger Bowler, a mainframe systems programmer. The project is currently maintained and hosted by Jay Maynard.

Contents

[edit] Background

The emulator is written entirely in C. Machine specific assembly code, which other emulators use, was ruled out due to its lack of portability even though it could significantly improve performance. There is one exception: hardware assists are used to provide inter-processor consistency when emulating multiple CPUs on SMP host systems.

The IBM public domain operating systems OS/360, DOS/360, DOS/VS, MVS, VM/370, and TSS/370 run under the emulator. Newer operating systems, such as OS/390, z/OS, VSE, VM/ESA, and z/VM will run, but cannot legally be used except in very limited circumstances for license reasons. Linux/390 runs well on Hercules, and much development work is done on the emulator. Several Linux distributions include ports for S/390 and some also include a separate zSeries port, the most popular being SUSE LINUX Enterprise Server. Other distributions with mainframe ports include Red Hat Enterprise Linux, Debian Linux, and CentOS.

One of the prime uses for Hercules is as a cheap way of getting multiprocessor and 64-bit environments for development purposes to verify that code is portable and works with SMP and is 64-bit clean. There is also a large community of current and former mainframe operators and programmers, as well as those with no prior experience, who use Hercules and the public domain IBM operating systems as a hobby and for learning purposes.

[edit] Example Usage

The screenshot below shows Hercules' emulation of the Hardware Management Console (HMC) on an IBM S/390 mainframe. On real zSeries machines it is an IBM Thinkpad laptop running OS/2 and dedicated software, however with the introduction of the System z9 in late 2005, OS/2 is no longer used. PSW means "Program Status Word", known as "Instruction Pointer" on some other architectures. All counters are zero because the machine has not yet been told to boot. The console is active and ready to take commands. In Unix terminology the mainframe is talking back in single user console mode, however the actual operating system (Debian GNU/Linux 390 in this case) has not been loaded yet.

Hardware Management Console (HMC)
Hardware Management Console (HMC)

To the right is what you see after an operating system is booted, in this case Debian GNU/Linux 390. The HMC command "IPL 0800" (Initial Program Load) was issued to boot from the device found at address 0800, approximately speaking. A Linux boot sequence takes place that looks more-or-less as it does on Alpha, Intel or other platforms. Interaction here is still via the virtualised HMC, where the rule is that any commands prefixed by a dot "." are passed through to the mainframe session and anything else is interpreted as an HMC command. An alternative is to connect via a 3270 session or a TCP/IP connection over ssh or X11/xterm just as for a personal computer.

Hercules Linux/390
Hercules Linux/390


The screenshot on the left is after logging in (with password in plain text due to the HMC pass-through arrangement. The user has shown that Linux/390 thinks it is running on a dual processor S/390 with a serial number of Pi.

[edit] Performance

It is difficult to determine exactly how Hercules emulation speeds correspond to real mainframe hardware partially due to the difficulty in comparing real mainframe hardware to other PCs and servers as well as the lack of a concrete performance measurement. Hercules expresses its processing performance in MIPS. Due to the age of the earlier System/360 and System/370 hardware, it is a relatively safe assumption that Hercules will outperform them when running on moderately powerful hardware. In the case of newer System/390 and zSeries/z9 operating systems, mainframes unsurprisingly still outperform Hercules. A relatively fast dual processor machine is capable of sustaining about 50 to 60 MIPS when executing code that utilizes both processors in a realistic environment with a peak of around 100 to 130 MIPS when running in a tight loop (not doing any useful processing). Hercules generally outperforms IBM's PC based mainframes from the mid-1990's which have an advertised peak performance of around 29 MIPS. Compared to the more powerful, but still undersized Multiprise 2000 and 3000 mainframes, Hercules would be considered a mid-range server. For every mainframe after the 9672 Generation 1, Hercules would generally be the lowest end system. Current high end System z9 systems are capable of performance around 12,000 MIPS, so Hercules is outperformed by several orders of magnitude.

Processing power alone is only a small part of the larger picture. Mainframes are renowned for reliability, disk I/O performance, and their ability to handle many concurrent tasks, among other things. These aspects are usually lacking on most PCs, so even though Hercules may be capable of performing more instructions per second than some mainframes, disk bottlenecks may degrade performance.

[edit] External links

In other languages