허큘리스 (에뮬레이터)

**허큘리스**(Hercules)는 IBM 메인프레임 컴퓨터(System/370, System/390, 그리고 zSeries/System z) 및 플러그 호환 가능 메인프레임(예: 암달 머신)용으로 작성된 소프트웨어를 다른 유형의 컴퓨터 하드웨어, 특히 저가형 개인용 컴퓨터에서 실행할 수 있게 해주는 에뮬레이터이다. 개발은 1999년 메인프레임 시스템 프로그래머인 로저 보울러가 시작했다.

허큘리스는 리눅스, 마이크로소프트 윈도우, FreeBSD, NetBSD, 솔라리스, macOS를 포함한 여러 상위 운영체제에서 실행되며 오픈 소스 소프트웨어 QPL 라이선스 하에 배포된다. 이는 Bochs 및 QEMU와 유사하게 CPU 명령어와 일부 주변 장치만 에뮬레이트한다. 공급업체(또는 배포업체)는 여전히 운영 체제를 제공해야 하며, 사용자는 이를 설치해야 한다. 허큘리스는 64비트 Z/아키텍처 지원을 통합한 최초의 메인프레임 에뮬레이터였다.

## 디자인
이 에뮬레이터는 거의 전적으로 C로 작성되었다. 개발자들은 성능을 크게 향상시킬 수 있음에도 불구하고 이식성 문제를 피하기 위해 머신별 어셈블리 코드를 사용하는 것을 배제했다. 두 가지 예외가 있다. 허큘리스는 SMP 호스트 시스템에서 여러 CPU를 에뮬레이트할 때 프로세서 간 일관성을 제공하기 위해 하드웨어 지원을 사용하며, 운영 체제가 그러한 서비스를 제공하는 플랫폼과 X86/X86-64 프로세서에서 리틀 엔디언과 빅 엔디언 데이터 간 변환을 위해 어셈블러 지원을 사용한다.

## 운영체제 상태
허큘리스는 모든 IBM 메인프레임 운영 체제와 기술적으로 호환되며, 최신 메인프레임에서는 더 이상 실행되지 않는 이전 버전과도 호환된다. 그러나 많은 메인프레임 운영 체제는 합법적으로 실행하려면 공급업체 라이선스가 필요하다. OS/390, Z/OS, VSE/ESA, z/VSE, VM/ESA, Z/VM, TPF/ESA, z/TPF와 같은 최신 라이선스 운영 체제는 기술적으로 호환되지만 매우 제한적인 상황을 제외하고는 허큘리스 에뮬레이터에서 합법적으로 실행할 수 없으며, 항상 IBM에서 라이선스를 받아야 한다. 병렬 시스플렉스를 가능하게 하는 IBM의 커플링 시설 제어 코드와 UTS도 실행하려면 라이선스가 필요하다.

허큘리스에서 라이선스 비용 없이 합법적으로 실행할 수 있는 운영 체제는 다음과 같다.
* OS/360, DOS/360, DOS/VS, MVS, VM/370, TSS/370을 포함한 구형 IBM 운영 체제는 퍼블릭 도메인이거나 "무료로 제공되는 저작권 소프트웨어"이다.
* MUSIC/SP 운영 체제는 저작권 소유자인 맥길 대학교에 요청하면 교육 및 시연 목적으로 사용할 수 있다. MUSIC/SP의 일부 기능, 특히 네트워킹은 z/VM(따라서 IBM 라이선스)을 필요로 한다. 그러나 대체 Sim390 메인프레임 에뮬레이터와 함께 패키지된 MUSIC/SP의 완전한 시연 버전이 제공된다.
* 미시간 터미널 시스템(MTS) 버전 6.0A는 허큘리스에서 실행되도록 맞춤 제작되었다.
* 허큘리스 에뮬레이터에서 오픈 소스 운영 체제인 리눅스 온 IBM Z 및 OpenSolaris for System z를 실행하는 데 알려진 법적 제한은 없다. 이들은 허큘리스에서 잘 실행되며, 많은 리눅스 온 IBM Z 개발자는 허큘리스를 사용하여 작업을 수행한다. 여러 배포업체는 64비트 Z/아키텍처 버전의 리눅스를 제공하며, 일부는 ESA/390 호환 버전도 제공한다. 메인프레임 리눅스 배포판에는 SUSE 리눅스 엔터프라이즈 서버, 레드햇 엔터프라이즈 리눅스, 데비안, CentOS, Slackware가 포함된다. Sine Nomine Associates는 z/VM이 제공하는 기능을 기반으로 OpenSolaris를 System z로 가져왔다. OpenSolaris를 위한 이러한 특정 z/VM 기능 에뮬레이션은 허큘리스 버전 3.07부터 포함된다.
* 상위 운영 체제 없이 메인프레임에서 실행할 수 있는 특정 자유로운 편집기 및 유틸리티도 허큘리스에서 실행할 수 있다.
섬네일|허큘리스에서 실행되는 데비안 GNU/리눅스
* PDOS/3x0 (Public Domain Operating System, 메인프레임 버전)은 MVS API의 하위 집합을 제공하는 것으로 설명된다.

## 사용법
허큘리스는 코드가 이식 가능한지(예: 리눅스 프로세서 아키텍처 전반에서), 대칭형 다중 처리(SMP)를 지원하는지, 64비트 "클린"한지 확인하기 위한 개발 환경으로 사용될 수 있다.

또한 현재 및 전직 메인프레임 운영자 및 프로그래머, 그리고 이전 경험이 없는 사람들도 취미 및 학습 목적으로 허큘리스와 퍼블릭 도메인 IBM 운영 체제를 사용하는 대규모 커뮤니티가 있다. 클래식 IBM 메인프레임 운영 체제 버전을 탐색하면서 습득한 대부분의 기술은 최신 버전을 실행하는 라이선스 IBM 머신으로 전환할 때 여전히 관련성이 있다.

허큘리스의 오픈 소스 특성으로 인해 누구나 자신만의 맞춤형 에뮬레이터 버전을 만들 수 있다. 예를 들어, 허큘리스 프로젝트와 독립적인 개발자 그룹은 허큘리스와 자유롭게 사용 가능한 MVS의 클래식 버전(이후 VM 및 DOS/VS) 모두를 수정하여 "S/380"이라고 부르는 하이브리드 메인프레임 아키텍처를 구현했으며, 이후 운영 체제 버전과의 31비트(2016년 기준, 64비트) 바이너리 호환성을 어느 정도 향상시켰다(2018년 기준, 32비트도 지원됨).

## 성능

허큘리스 에뮬레이션 성능이 실제 메인프레임 하드웨어와 정확히 어떻게 일치하는지 결정하기는 어렵지만, 성능 특성은 당연히 상당히 다르다. 이는 실제 메인프레임 하드웨어를 다른 PC 및 서버와 비교하기 어렵고 구체적이고 통제된 성능 비교가 부족하기 때문이기도 하다. 성능 비교는 라이선스 IBM 운영 체제의 경우 법적으로 불가능할 가능성이 높으며, 이들 운영 체제는 리눅스와 같은 다른 운영 체제와는 상당히 다르다.

허큘리스는 처리 성능을 MIPS로 표현한다. 초기 System/360 및 System/370 하드웨어의 연식을 고려할 때, 소프트웨어에서 컴퓨터 구조를 에뮬레이트하는 상당한 오버헤드에도 불구하고 허큘리스가 적당히 강력한 하드웨어에서 실행될 때 이들보다 성능이 뛰어날 것이라는 것은 비교적 안전한 가정이다. 그러나 최신, 부분적으로 또는 완전히 구성된 System z 머신은 허큘리스를 훨씬 능가한다. 허큘리스를 실행하는 비교적 빠른 듀얼 프로세서 X86 머신은 실제 환경에서 두 프로세서를 모두 사용하는 코드에 대해 약 50~60 MIPS를 유지할 수 있으며, 최첨단(2009년 초) PC급 시스템에서는 300 MIPS에 달하는 지속적인 속도를 보고했다. 허큘리스는 합성 명령어 벤치마크 또는 기타 작고 컴퓨팅 집약적인 프로그램과 같이 밀접한 루프에서 실행될 때 1200 MIPS 이상의 최고치를 달성할 수 있다.

터보헤르큘리스의 공동 창립자 톰 레만은 다음과 같이 썼다.

허큘리스는 일반적으로 1990년대 중반 IBM의 PC 기반 메인프레임보다 성능이 뛰어나며, 광고된 최대 성능은 약 29 MIPS이다. 더 강력하지만 여전히 보급형인 IBM Multiprise 2000 및 3000 메인프레임(역시 1990년대 제품)과 비교할 때, 일반적인 x86 하드웨어의 허큘리스는 성능 면에서 미드레인지 서버로 간주될 것이다. 9672 1세대 이후의 모든 메인프레임에 대해 허큘리스는 일반적으로 가장 낮은 엔드 시스템일 것이다. 비교를 위해, 2010년대의 고급 IBM zEnterprise 196 시스템은 머신당 52,000 MIPS 이상을 제공할 수 있으며, 상당한 I/O 성능 이점을 가지고 있다. 동일한 수의 에뮬레이트된 Sys Z 프로세서를 사용할 경우 z/PDT는 허큘리스보다 약 3배 빠르다.

성능 외에도 메인프레임 운영자에게 일반적으로 관련이 있는 비기능적 시스템 속성들이 있다는 점에 유의해야 한다. 여기에는 고가용성, 페일오버, 핫플러그 CPU 및 RAM, I/O 메시를 통한 I/O 라우팅, 시스템 마이그레이션 및 LPAR 관리가 포함된다. 예를 들어, 370/390/ESA/z 아키텍처는 네 가지 명령어를 사용하여 I/O를 구현한다. 크고 복잡한 I/O 작업은 설정되어 주변 장치로 넘겨져 처리되며, CPU는 I/O 장치가 작업 완료를 통지할 때까지 I/O에 더 이상 관여하지 않는다. 이로 인해 메인프레임 CPU 자체가 아닌 I/O 주변 장치에 내장된 다양한 프로세서에서 "CPU 사이클"의 대부분이 사용되는 메인프레임 시스템이 된다. 메인프레임 CPU는 "계산" 그 자체보다는 데이터 이동을 조율하는 오케스트라 지휘자 역할을 더 많이 한다. 가장 간단한 I/O 장치는 에뮬레이트할 수 있지만, 복잡한 시스템은 어려움을 초래할 것이다.

## 터보헤르큘리스
2009년 로저 보울러는 프랑스에 터보헤르큘리스 SAS를 설립하여 허큘리스 기술을 상용화했다. 2009년 7월, 터보헤르큘리스 SAS는 IBM에 터보헤르큘리스가 판매하는 시스템에서 사용할 수 있도록 고객에게 Z/OS 라이선스를 요청했다. IBM은 회사의 요청을 거부했다. 2010년 3월, 터보헤르큘리스 SAS는 유럽 연합 집행위원회 규제 당국에 불만을 제기하여 IBM이 메인프레임 하드웨어를 메인프레임 운영 체제에 끼워파는 행위를 통해 EU 독점 금지 규정을 위반했다고 주장했고, EC는 예비 조사를 시작했다. 2010년 11월, 터보헤르큘리스는 마이크로소프트 코퍼레이션으로부터 투자를 받았다고 발표했다. 2011년 9월, EC 규제 당국은 아무런 조치 없이 조사를 종결했다.

## 같이 보기
* PC 기반 IBM 호환 메인프레임 – Z/아키텍처 및 현재

## 각주

## 외부 링크
* Hercules, Son of Z's (Tech-news.com 리뷰)
* CBT tape는 IBM 메인프레임 운영 체제 및 기타 소프트웨어 모음을 보유하고 있다.
* 퍼블릭 도메인 소프트웨어 아카이브 (턴키 MVS CD 이미지 포함)

분류:리눅스 에뮬레이션 소프트웨어
분류:윈도우 에뮬레이션 소프트웨어
분류:자유 에뮬레이션 소프트웨어
분류:1999년 소프트웨어
분류:MacOS 에뮬레이션 소프트웨어