Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Hercules (emulator)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Multi-platform emulator for mainframe software}} {{Use dmy dates|date=May 2020}} {{Infobox software | name = Hercules | logo = [[File:Hercules-logo.gif|frameless]] | screenshot = Hercules-emulator-running-ubuntu.png | caption = Hercules emulator running [[MVS]] in [[Ubuntu]] | collapsible = | author = Roger Bowler | developer = [[Jay Maynard]], Jan Jaeger, David "Fish" Trout, Greg Smith, Bernard van der Helm, Ivan Warren, and others<ref>{{citation | title = FAQ | place = [[European Union]] | chapter = 6.1 | publisher = Hercules 390 | chapter-url = http://www.hercules-390.eu/hercfaq.html#6.01}}</ref> | released = {{start date text|1999}} | latest release version = {{wikidata|property|Q101213707|P348}} | latest release date = {{Start date and age |df=yes|{{wikidata|qualifier|Q101213707|P348|P577}}}} | latest preview version = 4.0.0-rc0 | latest preview date = {{Start date and age|df=yes|2016|12|16}} | programming language = [[C (programming language)|C]] | operating system = [[Cross-platform]] | platform = | size = | language = | genre = [[Emulator]] | license = [[Q Public License]] | website = {{URL|www.hercules-390.eu}} | repo = {{URL|github.com/rbowler/spinhawk|3.xx spinhawk}}<br />{{URL|github.com/hercules-390/hyperion|4.0 hyperion}} | discontinued = yes }} {{Infobox software | developer = [[Jay Maynard]], Jan Jaeger, David "Fish" Trout, Greg Smith, Bernard van der Helm, Ivan Warren, and others<ref>{{citation | title = FAQ | place = [[GitHub]] | chapter = 6.1 | publisher = SDL Hercules 390 | chapter-url = https://sdl-hercules-390.github.io/html/hercfaq.html#6.01}}</ref> | name = SDL 4.x Hyperion | latest release version = 4.8.0 | latest release date = {{Start date and age|df=yes|2025|03|27}} | repo = {{URL|github.com/SDL-Hercules-390/hyperion}} | website = {{URL|https://sdl-hercules-390.github.io/html/}} | replaces = {{URL|https://github.com/hercules-390/hyperion|Hercules 4.0.0 Release Candidate 0}} }} '''Hercules''' is a computer [[emulator]] allowing software written for [[IBM mainframe]] computers ([[System/370]], [[System/390]], and [[System z|zSeries/System z]]) and for [[plug compatible]] mainframes (such as [[Amdahl Corporation|Amdahl]] machines) to run on other types of computer hardware, notably on low-cost [[personal computer]]s. Development started in 1999 by Roger Bowler, a mainframe systems programmer. Hercules runs under multiple parent [[operating system]]s including [[Linux]], [[Microsoft Windows]], [[FreeBSD]], [[NetBSD]], [[Solaris (operating system)|Solaris]], and [[macOS]] and is released under the [[open source software]] license [[QPL]].<ref>{{citation | url = https://opensource.org/licenses/alphabetical | type = list | format = alphabetical | title = Licenses by Name | date = 16 September 2022 | publisher = Open Source Initiative}}</ref> It is analogous to [[Bochs]] and [[QEMU]] in that it emulates [[Central processing unit|CPU]] instructions and select peripheral devices only. A vendor (or distributor) must still provide an operating system, and the user must install it. Hercules was the first mainframe emulator to incorporate 64-bit [[z/Architecture]] support. ==Design== The emulator is written almost entirely in [[C (programming language)|C]]. Its developers ruled out using machine-specific [[Assembly language|assembly]] code to avoid problems with portability even though such code could significantly improve performance. There are two exceptions: Hercules uses hardware assists to provide inter-processor consistency when emulating multiple CPUs on SMP host systems, and Hercules uses assembler assists to convert between [[endianness|little-endian]] and big-endian data on platforms where the operating system provides such services and on [[x86]]/[[x86-64]] processors. ==Operating systems status== Hercules is technically compatible with all IBM mainframe operating systems, even older versions which no longer run on newer mainframes. However, many mainframe operating systems require vendor licenses to run legally. Newer licensed operating systems, such as [[OS/390]], [[z/OS]], [[VSE (operating system)|VSE/ESA]], [[VSE (operating system)|z/VSE]], [[VM/ESA]], [[z/VM]], [[TPF/ESA]], and [[z/TPF]] are technically compatible but cannot legally run on the Hercules emulator except in very limited circumstances{{citation needed|date=January 2017}}, and they must always be licensed from IBM. IBM's [[Coupling Facility]] control code, which enables [[Parallel Sysplex]], and [[UTS (Mainframe UNIX)|UTS]] also require licenses to run. Operating systems which may legally be run, without license costs, on Hercules include: * Older IBM operating systems including [[OS/360]], [[DOS/360]], [[DOS/VS]], [[MVS]], [[VM/370]], and [[TSS/360|TSS/370]] which are either [[public domain]] or "copyrighted software provided without charge."<ref>{{citation | contribution-url = http://www.hercules-390.eu/hercfaq.html#2.02 | contribution = 2.02. What operating systems can I run legally? | publisher = Hercules 390 Version 3 | place = EU | title = Frequently-Asked Questions}}.</ref> * The [[MUSIC/SP]] operating system may be available for educational and demonstration purposes upon request to its copyright holder, [[McGill University]]. Some of MUSIC/SP's features, notably networking, require z/VM (and thus an IBM license). However, a complete demonstration version of MUSIC/SP, packaged with the alternative Sim390 mainframe emulator, is available. * The [[Michigan Terminal System]] (MTS) version 6.0A has been tailored to run under Hercules.<ref>{{cite web | title = Michigan Terminal System Archive | url = http://archive.michigan-terminal-system.org/ | access-date = 10 December 2022 | archive-date = 11 January 2011 | archive-url = https://web.archive.org/web/20110111201148/http://archive.michigan-terminal-system.org/ | url-status = dead }}</ref> * There is no known legal restriction to running [[open-source software|open-source]] operating systems [[Linux on IBM Z]] and [[OpenSolaris for System z]] on the Hercules emulator. They run well on Hercules, and many Linux on IBM Z developers{{who|date=April 2022}} do their work using Hercules. Several distributors provide 64-bit z/Architecture versions of Linux, and some also provide [[ESA/390]]-compatible versions. Mainframe Linux distributions include [[SUSE Linux Enterprise Server]], [[Red Hat Enterprise Linux]], [[Debian]], [[CentOS]], and [[Slackware]]. Sine Nomine Associates brought OpenSolaris to System z, relying on features provided by z/VM. Emulation of those specific z/VM features for OpenSolaris is included starting with Hercules Version 3.07. * Certain unencumbered editors and utilities which can run on a mainframe without a parent operating system may be available to run on Hercules as well. [[File:Hercules IPL of IBM ESA-390 hardware emulation running Debian GNU-Linux.png|thumb|Debian GNU/Linux running on Hercules]] * PDOS/3X0 (Public Domain Operating System, mainframe version) ==Usage== Hercules can be used as a development environment to verify that code is portable (across Linux processor architectures, for example), supports [[symmetric multiprocessing]] (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{{citation needed|date=November 2018}}. Most of the skills acquired when exploring classic IBM mainframe operating system versions are still relevant when transitioning to licensed IBM machines running the latest versions{{citation needed|date=November 2018}}. The [[open source software|open source]] nature of Hercules means that anyone can produce their own customized version of the emulator. For example, a group of developers independent of the Hercules project implemented a hybrid mainframe architecture which they dubbed "S/380"<ref>{{citation | contribution-url = https://mvs380.sourceforge.net | contribution = S/380 Description | publisher = Sourceforge | title = MVS/380 project}}.</ref> using modifications to both Hercules and to freely available classic versions of MVS (and later VM and DOS/VS), enhancing the operating systems with some degree of 31-bit (and as of 2016, 64-bit) binary compatibility with later operating system versions (and as of 2018, 32-bit is also supported). ==Performance== {{more citations needed section|date=February 2014}} It is difficult to determine exactly how Hercules emulation performance corresponds to real mainframe hardware, but the performance characteristics are understandably quite different. This is partially due to the difficulty of comparing real mainframe hardware to other PCs and servers as well as the lack of concrete, controlled performance comparisons. Performance comparisons are likely legally impossible for licensed IBM operating systems, and those operating systems are quite different from other operating systems, such as Linux. Hercules expresses its processing performance in [[Million instructions per second|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, despite the considerable overhead of emulating a computer architecture in software. However, newer, partially or fully configured System z machines outperform Hercules by a wide margin. A relatively fast dual processor X86 machine running Hercules is capable of sustaining about 50 to 60 MIPS for code that utilizes both processors in a realistic environment, with sustained rates rising to a reported 300 MIPS on leading-edge (early 2009) PC-class systems. Hercules can produce peaks of over 1200 MIPS when running in a tight loop, such as in a synthetic instruction benchmark or with other small, compute-intensive programs. Tom Lehmann, co-founder of TurboHercules, wrote: {{Blockquote | ...We can run a reasonably sized load (800 MIPS with our standard package). If the machine in question is larger than that, we can scale to 1600 MIPS with our quad Nehalem based package, and we have been promised an 8 way Nehalem EX based machine early next year that should take us to the 3200 MIPS mark. Anything bigger than that is replicated by a collection of systems.<ref>{{citation | publisher = Oracle | type = Web log | url = http://blogs.oracle.com/jsavit/entry/hercules_goes_commercial | url-status = dead | archive-url = https://web.archive.org/web/20161010102547/http://blogs.oracle.com/jsavit/entry/hercules_goes_commercial | archive-date = 10 October 2016 | title = Hercules goes commercial!}}</ref>}} Hercules generally outperforms [[PC-based IBM-compatible Mainframes|IBM's PC based mainframes]] from the mid-1990s, which have an advertised peak performance of around 29 MIPS. Compared to the more powerful but still entry-level IBM Multiprise 2000 and 3000 mainframes (also from the 1990s), Hercules on typical x86 hardware would be considered a mid-range server in performance terms. For every mainframe after the 9672 Generation 1, Hercules would generally be the lowest end system. For comparison, 2010-era high-end IBM [[zEnterprise 196]] systems can deliver over 52,000 MIPS per machine, and they have considerable I/O performance advantages.{{citation needed|date=June 2013}} With the same number of emulated Sys Z processors, z/PDT is about 3 times faster than Hercules.{{citation needed|date=June 2013}} Note that there are other non-functional system attributes beyond performance which are typically relevant to mainframe operators. These include high availability, failover, hot-plug CPU and RAM, I/O routing over I/O meshes, system migration and LPAR management. For example, the 370/390/ESA/z architectures implement I/O using four instructions: large, complex I/O operations can be set up and handed over to the peripheral for processing; the CPU has no further involvement in the I/O until the I/O device notifies that it has completed the operation. This results in mainframe systems where the vast majority of "CPU cycles" are used not in mainframe CPU itself, but the assortment of processors embedded in the I/O peripherals. The mainframe CPU then acts more as orchestra conductor, coordinating data movement, rather than "computing" per se. The simplest I/O devices can be emulated; complex systems would pose a challenge. ==TurboHercules== In 2009, Roger Bowler founded TurboHercules SAS, based in France, to commercialize the Hercules technology. In July 2009, TurboHercules SAS asked IBM to license [[z/OS]] to its customers for use on systems sold by TurboHercules. IBM declined the company's request.<ref>{{citation|url=http://www.turbohercules.com/TH_IBM_Letters/ |title=Exchange of letters between TurboHercules and IBM |publisher=Turbo Hercules |url-status=dead |archive-url=https://web.archive.org/web/20111012024909/http://www.turbohercules.com/TH_IBM_Letters/ |archive-date=12 October 2011}}.</ref> In March 2010, TurboHercules SAS filed [[European Union IBM competition cases|a complaint with European Commission regulators]], alleging that IBM infringed EU antitrust rules through its alleged [[Tying (commerce)|tying]] of mainframe hardware to its mainframe operating system, and the EC opened a preliminary investigation.<ref>{{citation | url = https://ec.europa.eu/commission/presscorner/detail/en/IP_10_1006 | publisher = European Commission | title = Antitrust: Commission initiates formal investigations against IBM in two cases of suspected abuse of dominant market position | date = 26 July 2010}}.</ref> In November 2010, TurboHercules announced that it had received an investment from Microsoft Corporation.<ref>{{citation|url=http://www.turbohercules.com/uploads/main/TurboHercules-News-Release.pdf |publisher=TurboHercules |title=News Release |date=23 November 2010 |url-status=dead |archive-url=https://web.archive.org/web/20120310233934/http://www.turbohercules.com/uploads/main/TurboHercules-News-Release.pdf |archive-date=10 March 2012}}.</ref> In September 2011, EC regulators closed their investigation without action.<ref>{{citation | url = https://ec.europa.eu/commission/presscorner/detail/en/IP_11_1044 | publisher = EC | title = Antitrust: Commission market tests IBM's commitments on mainframe maintenance and closes separate case into alleged unlawful tying |date = 20 September 2011}}.</ref> ==See also== * [[PC-based IBM-compatible mainframes#z/Architecture and today|PC-based IBM-compatible mainframes β z/Architecture and today]] ==References== {{Reflist}} ==External links== * [https://web.archive.org/web/20191003042917if_/http://www.tech-news.com/another/ap200601b.html Hercules, Son of Z's] (Review on Tech-news.com) * [https://www.cbttape.org CBT tape] has a collection of IBM mainframe operating systems and of other software * [http://www.ibiblio.org/jmaynard/ Public domain software archive] (includes Turnkey MVS CD image) {{DEFAULTSORT:Hercules}} [[Category:1999 software]] [[Category:Linux emulation software]] [[Category:Free emulation software]] [[Category:MacOS emulation software]] [[Category:Windows emulation software]] [[Category:IBM System/360 mainframe line]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Blockquote
(
edit
)
Template:Citation
(
edit
)
Template:Citation needed
(
edit
)
Template:Cite web
(
edit
)
Template:Comma separated entries
(
edit
)
Template:Infobox
(
edit
)
Template:Infobox software
(
edit
)
Template:Main other
(
edit
)
Template:More citations needed section
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Template other
(
edit
)
Template:Use dmy dates
(
edit
)
Template:Who
(
edit
)