Hercules es un emulador de ordenador que permite ejecutar software escrito para ordenadores mainframe de IBM ( System/370 , System/390 y zSeries/System z ) y para mainframes compatibles con plug-in (como las máquinas Amdahl ) en otros tipos de hardware informático, especialmente en ordenadores personales de bajo coste . Su desarrollo comenzó en 1999 a cargo de Roger Bowler, un programador de sistemas mainframe.
Hercules se ejecuta en varios sistemas operativos principales, incluidos Linux , Microsoft Windows , FreeBSD , NetBSD , Solaris y macOS, y se publica bajo la licencia de software de código abierto QPL . [3] Es análogo a Bochs y QEMU en el sentido de que emula instrucciones de CPU y selecciona solo dispositivos periféricos. Un proveedor (o distribuidor) aún debe proporcionar un sistema operativo y el usuario debe instalarlo. Hercules fue el primer emulador de mainframe en incorporar compatibilidad con z/Architecture de 64 bits .
El emulador está escrito casi en su totalidad en C. Sus desarrolladores descartaron el uso de código ensamblador específico de la máquina para evitar problemas con la portabilidad, aunque dicho código podría mejorar significativamente el rendimiento. Hay dos excepciones: Hercules usa asistencias de hardware para proporcionar consistencia entre procesadores al emular múltiples CPU en sistemas host SMP, y Hercules usa asistencias de ensamblador para convertir entre datos little-endian y big-endian en plataformas donde el sistema operativo proporciona dichos servicios y en procesadores x86 / x86-64 .
Hercules es técnicamente compatible con todos los sistemas operativos mainframe de IBM, incluso con versiones anteriores que ya no se ejecutan en mainframes más nuevos. Sin embargo, muchos sistemas operativos mainframe requieren licencias de proveedores para ejecutarse legalmente. Los sistemas operativos con licencia más nuevos, como OS/390 , z/OS , VSE/ESA , z/VSE , VM/ESA , z/VM , TPF/ESA y z/TPF son técnicamente compatibles pero no pueden ejecutarse legalmente en el emulador Hercules excepto en circunstancias muy limitadas [ cita requerida ] , y siempre deben tener licencia de IBM. El código de control Coupling Facility de IBM , que habilita Parallel Sysplex , y UTS también requieren licencias para ejecutarse.
Los sistemas operativos que pueden ejecutarse legalmente, sin costos de licencia, en Hercules incluyen:
Hercules se puede utilizar como un entorno de desarrollo para verificar que el código sea portable (en todas las arquitecturas de procesadores Linux, por ejemplo), admita multiprocesamiento simétrico (SMP) y sea "limpio" de 64 bits.
También existe una gran comunidad de operadores y programadores de mainframe actuales y antiguos, así como de aquellos sin experiencia previa, que utilizan Hercules y los sistemas operativos de dominio público de IBM como pasatiempo y con fines de aprendizaje [ cita requerida ] . La mayoría de las habilidades adquiridas al explorar las versiones clásicas del sistema operativo de mainframe de IBM siguen siendo relevantes al realizar la transición a máquinas IBM con licencia que ejecutan las versiones más recientes [ cita requerida ] .
La naturaleza de código abierto de Hercules significa que cualquiera puede producir su propia versión personalizada del emulador. Por ejemplo, un grupo de desarrolladores independientes del proyecto Hercules implementaron una arquitectura híbrida de mainframe a la que denominaron "S/380" [6] utilizando modificaciones tanto de Hercules como de versiones clásicas de MVS (y más tarde de VM y DOS/VS) disponibles de forma gratuita, mejorando los sistemas operativos con cierto grado de compatibilidad binaria de 31 bits (y a partir de 2016, de 64 bits) con versiones posteriores del sistema operativo (y a partir de 2018, también se admite la de 32 bits).
Es difícil determinar exactamente cómo se corresponde el rendimiento de la emulación de Hercules con el hardware de mainframe real, pero es comprensible que las características de rendimiento sean bastante diferentes. Esto se debe en parte a la dificultad de comparar el hardware de mainframe real con otros PC y servidores, así como a la falta de comparaciones de rendimiento concretas y controladas. Es probable que las comparaciones de rendimiento sean legalmente imposibles para los sistemas operativos IBM con licencia, y esos sistemas operativos son bastante diferentes de otros sistemas operativos, como Linux.
Hercules expresa su rendimiento de procesamiento en MIPS . Debido a la antigüedad del hardware anterior System/360 y System/370, es una suposición relativamente segura que Hercules los superará cuando se ejecute en hardware moderadamente potente, a pesar de la considerable sobrecarga de emular una arquitectura de computadora en software. Sin embargo, las máquinas System z más nuevas, configuradas parcial o totalmente, superan a Hercules por un amplio margen. Una máquina X86 con procesador dual relativamente rápida que ejecute Hercules es capaz de mantener alrededor de 50 a 60 MIPS para código que utiliza ambos procesadores en un entorno realista, con tasas sostenidas que aumentan hasta los 300 MIPS informados en sistemas de clase PC de vanguardia (principios de 2009). Hercules puede producir picos de más de 1200 MIPS cuando se ejecuta en un bucle estrecho, como en un punto de referencia de instrucción sintética o con otros programas pequeños de uso intensivo de cómputo.
Tom Lehmann, cofundador de TurboHercules, escribió:
...Podemos ejecutar una carga de tamaño razonable (800 MIPS con nuestro paquete estándar). Si la máquina en cuestión es más grande que eso, podemos escalar a 1600 MIPS con nuestro paquete basado en Nehalem cuádruple, y nos han prometido una máquina basada en Nehalem EX de 8 vías a principios del próximo año que debería llevarnos a la marca de 3200 MIPS. Cualquier cosa más grande que eso se replica mediante una colección de sistemas. [7]
Hercules generalmente supera a los mainframes basados en PC de IBM de mediados de los años 90, que tienen un rendimiento máximo anunciado de alrededor de 29 MIPS. Comparado con los mainframes IBM Multiprise 2000 y 3000 (también de los años 90), más potentes pero aún de nivel de entrada, Hercules en hardware x86 típico se consideraría un servidor de rango medio en términos de rendimiento. Para cada mainframe posterior al 9672 Generación 1, Hercules generalmente sería el sistema de gama más baja. A modo de comparación, los sistemas IBM zEnterprise 196 de gama alta de la era 2010 pueden ofrecer más de 52.000 MIPS por máquina y tienen considerables ventajas en el rendimiento de E/S. [ cita requerida ] Con la misma cantidad de procesadores Sys Z emulados, z/PDT es aproximadamente 3 veces más rápido que Hercules. [ cita requerida ]
Tenga en cuenta que existen otros atributos del sistema no funcionales más allá del rendimiento que suelen ser relevantes para los operadores de mainframe. Estos incluyen alta disponibilidad, conmutación por error, CPU y RAM de conexión en caliente, enrutamiento de E/S sobre mallas de E/S, migración del sistema y administración de LPAR. Por ejemplo, las arquitecturas 370/390/ESA/z implementan la E/S utilizando cuatro instrucciones: se pueden configurar operaciones de E/S grandes y complejas y entregarlas al periférico para su procesamiento; la CPU no tiene más participación en la E/S hasta que el dispositivo de E/S notifica que ha completado la operación. Esto da como resultado sistemas mainframe donde la gran mayoría de los "ciclos de CPU" no se utilizan en la propia CPU del mainframe, sino en la variedad de procesadores integrados en los periféricos de E/S. La CPU del mainframe actúa entonces más como director de orquesta, coordinando el movimiento de datos, en lugar de "computar" per se. Los dispositivos de E/S más simples se pueden emular; los sistemas complejos plantearían un desafío.
En 2009, Roger Bowler fundó TurboHercules SAS, con sede en Francia, para comercializar la tecnología Hercules. En julio de 2009, TurboHercules SAS solicitó a IBM que otorgara licencias de z/OS a sus clientes para su uso en sistemas vendidos por TurboHercules. IBM rechazó la solicitud de la empresa. [8] En marzo de 2010, TurboHercules SAS presentó una queja ante los reguladores de la Comisión Europea , alegando que IBM infringía las normas antimonopolio de la UE a través de su supuesta vinculación del hardware de mainframe a su sistema operativo de mainframe, y la CE abrió una investigación preliminar. [9] En noviembre de 2010, TurboHercules anunció que había recibido una inversión de Microsoft Corporation. [10] En septiembre de 2011, los reguladores de la CE cerraron su investigación sin tomar medidas. [11]