1978년 말, 나는 내 생애 첫 컴퓨터를 생일 선물로 받았다. 그 컴퓨터는 4KB 메모리와 카세트 테이프 대용량 스토리지가 탑재된 TRS-80 모델 1이었는데, 이후에 Exatron 스트링 플로피(stringy floppy)로 업그레이드했다. 컴퓨터를 선물로 받은 지 몇 주 지나지도 않아, 내 BASIC 프로그래밍 실력은 아직 완성도 하지 못했던 프로그램에 사용 가능한 메모리를 초과할 정도로 발전해버렸다. 그 때로부터 30여 년이 흐른 지금, 임베디드 펌웨어 엔지니어가 된 나는 여전히 더 작은 주소 공간에 더 많은 코드와 데이터를 집어넣는 일에 골몰하며 많은 시간을 쓴다.
컴퓨터의 역사는 매혹적이며, 초창기에 개발된 컴퓨터 중 몇 가지가 특히 관심을 끈다. 초창기 시스템 중 다수는 Konrad Zuse가 1931년에 발명한
Z1과 같이 초보적인 계산기였으며, 시간을 더 거슬러 올라가 보면 1890년도 인구 조사에 사용된 Herman Hollerith의 기계식 정렬 시스템을
만날 수 있다. 그로부터 6년 후에 그의 회사는 다른 회사와 함께 한 기업에 합병되었고, 훗날 그 기업이 바로 IBM이 되었다. Zuse는 자신이 개발한
Z4 컴퓨터에 Plankalkül이라는 최초의 알고리즘 프로그래밍 언어를 도입하기도 했다. Z4는 (릴레이 기반의) 전자기계식
컴퓨터로서 64워드의 메모리를 지원했고 당시로서는 엄청난 40Hz에서 작동했다(소비 전력은 4KW에 달함). John Atanasoff 교수는 1937년에
개발에 착수하여 1941년에 최초의 디지털 컴퓨터를 완성했는데, 이 컴퓨터는 Iowa State College에서 2진 데이터를 사용하여 계산 작업을 하는 데
사용되었다.
ABC(Atanasoff-Berry Computer)의 아이디어는 최초의 일반용 전자 컴퓨터인 ENIAC에 사용되었다. 이런 시스템을 프로그래밍하는 것은 Pascal,
C 또는 LISP와 같은 프로그래밍 언어를 접하며 자란 우리 대부분에게는 무척 낯설다. 예를 들어, 최초의 ENIAC
프로그래밍에서는 프로그래밍 변경을 위해 물리적 배선 작업을 다시 해야 했다. Wikipedia에서는 컴퓨터의 발전에 관한 흥미로운 정보를
확인할 수 있다(참고자료 참조).
Computer History Simulation Project
이젠 작동되지 않지만 지금도 먼지 쌓인 상자 안에 들어 있는 내 첫 컴퓨터인 TRS-80과 마찬가지로, 컴퓨터의 역사는 그냥 쉽게 잊혀질 수 있다. 다행히도, 컴퓨터의 가장 중요한 역사를 놓치지 않으려고 시간과 정력을 아끼지 않는 Bob Supnik과 같은 사람들이 있다. Supnik은 시뮬레이션을 통해 중요한 의미가 있는 컴퓨팅 시스템을 복원하기 위한 한 가지 방편으로서 Computer History Simulation Project를 만들었다. 전 세계 곳곳의 많은 사람들이 자발적으로 도움을 주고 있는 Supnik의 프로젝트를 통해, 수많은 컴퓨팅 시스템을 시뮬레이션하는 SIMH라는 다중 시스템 프레임워크가 등장했다. 여기에는 Data General Nova, DEC의 PDP와 VAX, IBM 1401 및 7090/7094, Interdata 시스템, 심지어는 MITS Altair 시스템(8080 및 Z80용)도 포함되어 있다. 시뮬레이션되는 다른 시스템에 대한 자세한 정보는 참고자료를 참조한다.
SIMH의 일반적인 아키텍처부터 살펴본 다음, 시뮬레이션 대상인 과거의 하드웨어를 부팅하기 위한 몇 가지 SIMH 샘플 사용법을 알아보자.
SIMH는 시스템 에뮬레이터가 빌드되는 프레임워크이다. SIMH 소스 트리의 계층 구조를 탐색해보면, 우선 일반적인 시뮬레이터 파일 세트가 보이고 시스템 시뮬레이션(또는 시스템 시뮬레이션의 클래스)을 포함한 서브디렉토리 세트를 찾을 수 있을 것이다. 그림 1에 표시된 것처럼, 시뮬레이터는 시뮬레이터 제어 패키지(시뮬레이터 콘솔, 터미널 및 파일 I/O 라이브러리, 타이머 및 소켓과 같은 것이 포함됨)와 디바이스 세트로 구성된다. 이런 디바이스는 (디바이스가 작동 중인 상태에서) 디바이스와 데이터 세트(일반적으로 디바이스를 나타내는 데 사용되는 파일)를 나타내는 유닛에 대한 상태를 유지하기 위한 레지스터 세트를 염두에 두고 설계되었다. 모든 디바이스가 있어야 하는 것은 아니다. 예컨대, 네트워킹이 적합하지 않을 수도 있다.
그림 1. SIMH의 기본 아키텍처
시뮬레이터에서 가상 머신이 작동하기 시작할 때, 시뮬레이터 제어 패키지는 먼저 환경의 세부 사항(디바이스의 배열, 2진 로더 루틴, 명령어 세트 시뮬레이터 등)을 식별한다. 곧 알게 되겠지만, 시뮬레이터가 시작된 후 시뮬레이터와 상호 작용하여 가상 머신을 부팅하거나 이런 단계를 간소화하기 위해 한 파일에 이 상호 작용에 대한 정보를 기록할 수 있다. 시뮬레이터는 본질적으로 디버거이므로, 중단점을 설정하고 디바이스, CPU 및 메모리와 상호 작용할 수도 있다. SIMH에서 제공되는 기능의 범위를 고려하여, 코드는 쉽게 읽을 수 있고 생각보다 그다지 크지 않다.
SIMH를 통해 컴퓨터 역사의 초창기로 돌아갈 수 있는 방법을 살펴보자. 이 섹션에서는 SIMH를 설치하고 빌드하는 방법부터 설명한 다음, 소프트웨어 킷에 대해 설명한다.
다음 세션에서는 SIMH를 다운로드하고 빌드하는 방법을 설명한다. 최신 버전의 패키지가 있는지 웹 사이트를 확인해봐야 하겠지만, 이 세션에서는 SIMH 버전 38.1을 바탕으로 데모를 실행한다. 목록 1과 같이, 필자는 패키지를 만들기 위해 우선 ./BIN 서브디렉토리부터 작성해야 했다.
목록 1. SIMH 설치 및 빌드
$ mkdir simh ; cd simh $ wget http://simh.trailing-edge.com/sources/simhv38-1.zip $ unzip simhv38-1.zip $ mkdir BIN $ make -f makefile |
목록 1에 표시된 단계를 완료하면 (ibm1130 및 vax780과 같이) 개별 시뮬레이터를
나타내는 ./BIN 서브디렉토리에 2진 코드 세트가 있을 것이다.
앞선 단계에서는 SIMH 시뮬레이터를 빌드했다. 하지만, 이를 유용하게 활용하려면 이런 시뮬레이터를 위한 소프트웨어(운영 체제 및 애플리케이션)가 필요하다. 이들 시스템은 종이 테이프 및 자기 테이프로 작동했기 때문에, 그런 매체로 대변되는 소프트웨어를 쉽게 사용할 수 있도록 파일로 다시 패키지화했다. 이런 데모의 일부로서, 필요한 소프트웨어 킷을 살펴보고 다운로드할 수 있는 곳을 알아볼 것이다.
(altairz80과 같이, 시뮬레이션할 시스템에 대해 이름이 지정된) 시뮬레이터를 시작하면 sim>
프롬프트가 나타난다. 이 프롬프트에는 시뮬레이션 대상을 가져오기 위해 구성할 수 있는 기본 시뮬레이터에 들어와 있음을 알려주는 메시지가
표시된다. 이 기사에서는 실행 가능한 많은 명령 중 몇 가지만 살펴본다. 전체 목록을 보려면 help를 사용하면
된다. 지원 시스템 중 하나를 에뮬레이트하는 동안 Ctrl-E를 누르면 시뮬레이터로 돌아올 수 있다는 점도 꼭 기억하자.
시뮬레이터에서 중단점을 설정하고 레지스터를 검사하고 시뮬레이터 이벤트 큐를 보는 등 다양한 작업을 수행할 수 있다.
이제 SIMH에 대한 기본적인 이해가 되었으므로, 다양한 컴퓨터 시스템에서의 사용법을 살펴보자. IBM 1130 시스템에서는 LISP, Interdata 32비트 시스템에서는 UNIX®, MITS Altair 시스템에서는 CPM, PDP-15에서는 Focal이 나타날 것이다.
IBM 1130 시스템은 저가 시장을 겨냥한 인기 컴퓨팅 시스템이었다. 이 시스템은 주로 천공 카드와 종이 테이프에 의존했지만, (총 1MB의) 저가형 디스크 스토리지도 사용했다. 디스크에는 운영 체제와 데이터를 저장했다.
1130 시스템은 기본 프로그래밍 언어가 FORTRAN(완전히 어셈블리 언어로 작성되었던 컴파일러는 겨우 4,000워드의 메모리로 작동했음)이었던 1965년에 출시되었다. 이 시스템에서는 15비트 워드 기반의 주소 공간을 사용했으므로, 시스템의 코어 메모리가 64KB로 제한되었다.
IBM 1130 시스템의 흥미로운 사실 중 하나는 다른 언어를 지원한다는 점이었다. FORTRAN 외에도, APL과 RPG를 사용하여 1130을 프로그래밍할 수 있었다. Boston's Latin 고등학교에 있는 1130 시스템에서 프로그래밍을 했던 Guy Steele은 현재 우리가 아직도 사용할 수 있는 LISP 인터프리터를 작성했다. 1130을 관리하고 있는 사이트(ibm1130.org)에서 LISP 인터프리터를 구해 시작해보자(목록 2 참조). SIMH를 설치한 ./simh 서브디렉토리에 있는 것으로 가정하고 설명하겠다.
목록 2. LISP 인터프리터 소프트웨어 킷 설치
$ mkdir kits/ibm1130 ; cd kits/ibm1130 $ wget http://media.ibm1130.org/lisp.zip $ unzip lisp.zip |
이 에뮬레이션은 SIMH로 작업하는 세부사항 중 많은 부분을 숨기지만, 1130의 한 가지 사용 사례에서 흥미로운 역사적 의미를 가지고 있다. 이 데모는 목록 파일로 출력을 내보내는 시뮬레이터에 작업을 지정하는 일괄처리 조작이다. 해당 작업은 LISP 인터프리터의 매우 간단한 용례이다(출력 결과에서 볼 수 있음). 목록 3에서 일괄처리 세션을 제공한다.
목록 3. IBM 1130 시뮬레이터에서 LISP 인터프리터 사용
$ ../../BIN/ibm1130 job lisptest IBM 1130 simulator V3.8-1 PRT: creating new file Loaded DMS V2M12 cold start card Wait, IAR: 0000002A (4c80 BSC I ,0028 ) sim> quit Goodbye $ more lisptest.lst PAGE 1 // JOB 1234 LOG DRIVE CART SPEC CART AVAIL PHY DRIVE 0000 1234 1234 0000 V2 M12 ACTUAL 32K CONFIG 32K ^L PAGE 1 // JOB LOG DRIVE CART SPEC CART AVAIL PHY DRIVE 0000 1234 1234 0000 V2 M12 ACTUAL 32K CONFIG 32K // XEQ LISP ***** 1130 LISP 1.6 ***** BOSTON LATIN SCHOOL ***** LITHP ITH LITHTENING... (SETQQ A (X Y Z)) (X Y Z) (CAR A) X (CDR A) (Y Z) (PLUS 1 2 3) 6(QUIT) ***** 1130 LISP 1.6 ***** END OF RUN ***** THO LONG, COME AGAIN THOON $ |
목록 3에서는 IBM 1130 시뮬레이터를 시작하고 수행할 작업을 지정한다. 코드는 이면에서 디스크(LISP 인터프리터를 로드함),
카드 리더(작업을 읽음) 및 프린터(출력을 내보냄)에 대한 시뮬레이터를 구성한다. 이 작업은 목록 4에 나와 있다(소프트웨어 킷의
lisptest.job). .lst 접미부를 가진 작업 이름과 같은 서브디렉토리에서 이 작업의 출력 결과를 찾을 수 있다.
목록 4. lisptest.job 파일
// JOB // XEQ LISP (SETQQ A (X Y Z)) (CAR A) (CDR A) (PLUS 1 2 3) (QUIT) |
IBM1130.org에서 IBM 1130 소프트웨어 킷을 개발하여 유지보수하고 있다. 이 사이트에서는 FORTRAN과 RPG 외에도 APL 덱을 찾을 수 있다.
Interdata에서는 1966년부터 16비트 및 32비트 미니 컴퓨터 제품을 개발했다(1973년에 Perkin-Elmer에 합병됨). 1974년에 출시된 Interdata-7은 최초의 32비트 컴퓨터 중 하나였다. Interdata의 아키텍처는 느슨하나마 IBM System/360 메인프레임 아키텍처를 기반으로 했다. 이 예제에서는 시뮬레이터의 관점에서 이 시스템이 어떻게 나왔는지 좀 더 깊이 살펴본다(시뮬레이터를 통해 옵션 구성).
목록 5에서는 UNIX 버전 6 이미지를 다운로드하여 키트의 서브디렉토리로 추출한다. 다운로드 파일을 추출할 때 Interdata 시뮬레이터를 시작하고 구성을 시작한다. 우선, 콘솔 터미널(TTP)을 사용하고 프로그램 가능 비동기 행 제어기(PAS)와 자기 테이프 제어기(MT)를 연관하여 디바이스 번호 충돌을 피한다.
부트 장치는 소프트웨어 킷(iu6_dp0.dsk)에서 외부 파일과 연관하는 카트리지 디스크 제어기(DP)이다. 부트 디스크를 정의하면 이 디스크를 부팅하여 UNIX V6 이미지를 시작할 수 있다. Interdata는 비 PDP 시스템에 대한 UNIX의 최초 포트 중 하나였다.
목록 5. UNIX를 이용한 Interdata 32b 시스템 시뮬레이션
$ mkdir kits/id_unix_v6 ; cd kits/id_unix_v6 $ wget http://simh.trailing-edge.com/kits/iu6swre.zip $ unzip iu6swre.zip $ ../../BIN/id32 Interdata 32b simulator V3.8-1 sim> set ttp ena sim> set pas dev=12 sim> set mt dev=85 sim> att -e dp0 iu6_dp0.dsk sim> boot dp0 ?unix Memory = 182.50 K login: root You have mail. # ls -la total 361 drwxr-xr-x 9 root 272 Jun 4 00:16 . drwxr-xr-x 9 root 272 Jun 4 00:16 .. drwxr-xr-x 2 root 1104 Nov 14 1978 bin drwxr-xr-x 2 root 784 Jun 4 01:07 dev drwxr-xr-x 2 root 528 Nov 14 1978 etc drwxr-xr-x 2 root 240 Jun 3 21:44 lib -rw-r--r-- 1 root 552 Jun 3 20:48 mdl drwxr-x--- 2 root 32 Aug 2 1978 mnt drwxrwxrwx 2 root 144 Jun 4 15:38 tmp -rw-r--r-- 1 root 424 Jun 4 00:27 tpboot -rw-r--r-- 1 root 568 Jun 3 20:48 tuboot -rw-r--r-- 1 root 728 Jun 3 20:48 uboot -rw-r----- 1 root 52272 Jun 3 23:56 unix -rwxrwxrwx 1 root 59236 Jun 4 01:21 unix.oxon -rwxrwxrwx 1 rm 60852 Jun 4 01:44 unix.sydney drwxr-xr-x 14 root 240 Jun 4 15:43 usr # |
목록 5에 표시된 것처럼, 시스템 부팅 후 현대식 UNIX 시스템과 비슷한 방법으로 시스템과 상호 작용할 수 있다.
DEC의 마지막 18비트 시스템은 1969년에 발표된 PDP-15였다. 분리된 트랜지스터에서 빌드된 이전의 PDP와 달리, PDP-15는 TTL 집적 회로로 구현되었다. PDP-15는 그 이전의 PDP-9와 호환 가능했고 메모리 보호 및 부동 소수점을 비롯한 다양한 고급 기능을 갖추고 있었다.
PDP-15에서는 다양한 운영 체제를 지원했지만, 이 시스템의 흥미로운 한 가지 용도는 수식 계산기(FOCAL) 언어를 사용한다는 점이다. FOCAL은
원래 Richard Merrill이 PDP-8용으로 작성한 언어로서, 3,000워드(12비트)에 불과한 메모리(사용자 프로그램의 경우 1,000워드)를 가진 시스템에서
실행 가능했다. FOCAL을 사용하는 데는 운영 체제가 필요하지 않았고, 완전히 그 자체로 완전한 환경이었다. FOCAL 시스템은 2진 로더 형식에서
사용되는 종이 테이프 이미지로 제공된다(목록 6 참조). PDP-15 시뮬레이터를 시작한 후, focal15 이미지를 로드하고 실행 명령을 사용하여
시작한다. 짧은 FOCAL 프로그램을 입력하는 FOCAL15 프롬프트가 나타나고, GO 명령으로 시작한다.
목록 6. PDP-15에서의 FOCAL 데모
$ ../../BIN/pdp15 PDP-15 simulator V3.8-1 sim> load focal15.bin sim> run FOCAL15 V6B *01.10 ASK "WHAT YEAR WERE YOU BORN?", BORN *01.20 ASK "WHAT YEAR IS IT?", YEAR *01.30 SET AGE=YEAR-BORN *01.40 TYPE "YOU ARE ", AGE-1, " OR ", AGE, " YEARS OLD.", ! *GO WHAT YEAR WERE YOU BORN?:1964 WHAT YEAR IS IT?:2010 YOU ARE 45.0000 OR 46.0000 YEARS OLD. * <Ctrl-E> Simulation stopped, PC: 000221 (SPA) sim> show dev PDP-15 simulator configuration CPU, idle disabled CLK, 60Hz, devno=00 FPP PTR, devno=01 PTP, devno=02 TTI, devno=03 TTO, devno=04 LP9, disabled LPT, devno=65-66 RF, devno=70-72 RP, devno=63-64, 8 units DT, devno=75-76, 8 units MT, devno=73, 8 units TTIX, lines=1, devno=40-47 TTOX sim> |
여기에는 시뮬레이터와의 상호 작용도 표시되어 있다. 시뮬레이션을 종료하고 시뮬레이터 프레임워크 콘솔로 돌아가려면 Ctrl-E를 누른다. 이때, 디바이스를 열거하도록 요청할 수 있고, 이 PDP-15에 대해 시뮬레이션되는 다양한 디바이스가 표시된다(부동 소수점 프로세서, 종이 테이프 리더, 종이 테이프 펀치 등).
이 예제에서는 이미지에 아무런 운영 체제도 필요하지 않고 대화식으로 구성된 SIMH의 또 다른 측면을 보여준다(IBM 1130 시스템에서 실행되던 이전의 일괄처리와는 다름).
SIMH의 마지막 데모에서는 세계 최초의 미니 컴퓨터인 MITS Altair를 시뮬레이션한다. 1975년에 설계된 Altair는 메모리가 256바이트에 불과한 Intel® 8080 프로세서를 기반으로 했다. 기능은 최소화되었지만, 이 모델은 출시 첫 달에만 수천 대가 팔렸다. S-100이 된 이 모델의 버스는 수많은 공급업체가 18슬롯 시스템용 카드(예: 직렬 카드 및 디스크 제어기)를 개발하기에 충분할 정도로 확장성이 뛰어나, 유용한 컴퓨터로 각광받았다.
Altair 이전에 설계된 컴퓨터 시스템(그 중 일부도 Intel 8008 프로세서를 기반으로 함)이 있었지만, Altair는 강력한 성능을 자랑하며 유용하게 사용되었다(예: 당시에 많이 배우던 주요 언어 중 하나인 BASIC 실행). Altair는 개인용 컴퓨터 혁명에 불을 붙인 제품으로 널리 인정된다.
SIMH 내에서는 표준 Intel 8080 기반 Altair나 Zilog Z80 또는 Intel 8086 프로세서를 사용하는 파생형 Altair 시스템을 실행할 수 있다. 시뮬레이션된 Altair는 뱅크 메모리와 같은 몇 가지 추가 기능도 제공한다. Altair용 소프트웨어 킷은 가장 간단하게 CP/M(Control Program for Microcomputer)을 실행하는 방법 중 하나다. 목록 7에 표시된 예제에서는 Altair 시뮬레이터(이 경우에는 Z80 프로세서 변형)를 시작한 다음, cpm2 스크립트 파일을 사용하여 CP/M을 부팅한다. 이 스크립트에서는 2개의 디스크(운영 체제 디스크와 애플리케이션 디스크)를 사용하여 CP/M 환경을 작성한다. CP/M 환경을 작성했으면, 사용 가능한 파일을 체크아웃한 후 Microsoft basic을 실행하여 Eliza 프로그램을 해석한다.
목록 7. MITS Altair에서 CP/M 데모
$ mkdir cpm ; cd cpm
$ wget http://simh.trailing-edge.com/kits/psaltair.zip
$ unzip psaltair.zip
$ ../../../BIN/altairz80
Altair 8800 (Z80) simulator V3.8-1
sim> do cpm2
62K CP/M Version 2.2 (SIMH ALTAIR 8800, BIOS V1.17, 28-Apr-02)
A>dir
A: PIP COM : LS COM : XSUB COM : STAT COM
A: GO COM : RSETSIMH MAC : SYSCOPY COM : SHOWSEC COM
A: DIF COM : R COM : W COM : L80 COM
A: M80 COM : WM HLP : WM COM : CBIOSX MAC
A: FORMAT COM : SYSCPM2 SUB : DDTZ COM : DSKBOOT MAC
A: TSTART COM : ED COM : DDT COM : EX8080 MAC
A: LOAD COM : ASM COM : LU COM : MBASIC COM
A: ELIZA BAS : DUMP COM : CREF80 COM : EXZ80 MAC
A: UNERA COM : BOOT COM : OTHELLO COM : WORM COM
A: LADDER DAT : LADDER COM : ZSID COM : ZTRAN4 COM
A: SURVEY MAC : CPMBOOT COM : TSHOW MAC : TSTART MAC
A: TSTOP MAC : UNERA MAC : MOVER MAC : EX8080 SUB
A: EXZ80 SUB : CCP MAC : DSKBOOT COM : USQ COM
A: MC SUB : MCC SUB : BDOS MAC : RSETSIMH COM
A: TSHOW COM : TSTOP COM : UNCR COM : SURVEY COM
A: EX8080 COM : EXZ80 COM : COPY COM : SID COM
A: BOOT MAC : BOOTGEN COM : LIB80 COM : DO COM
A>
A>mbasic eliza.bas
BASIC-80 Rev. 5.21
[CP/M Version]
Copyright 1977-1981 (C) by Microsoft
Created: 28-Jul-81
32824 Bytes free
**************************
ELIZA
CREATIVE COMPUTING
MORRISTOWN, NEW JERSEY
ADAPTED FOR IBM PC BY
PATRICIA DANIELSON AND PAUL HASHFIELD
BE SURE THAT THE CAPS LOCK IS ON
PLEASE DON'T USE COMMAS OR PERIODS IN YOUR INPUTS
*************************
HI! I'M ELIZA. WHAT'S YOUR PROBLEM?
? I'M IN LOVE WITH RETROCOMPUTING
DID YOU COME TO ME BECAUSE YOU ARE IN LOVE WITH RETROCOMPUTING
?
|
이 목록에서 알 수 있듯이, 디스크에는 CP/M 어셈블러(ASM.COM), 행 편집기(ED.COM), 디버거 쌍(Intel 8080 프로세서용 SID.COM과 Z80 프로세서용 ZID.COM), 심지어 화면 편집기(WM.COM)와 같이 수많은 유용한 유틸리티가 포함된다.
SIMH는 과거의 컴퓨팅 시스템을 위한 훌륭한 시뮬레이터이지만, 이 역시 점점 커지고 있는 시뮬레이터 및 에뮬레이터 제품군 중 하나이다. 역사적으로 흥미로운 다른 에뮬레이터로는 상업용 하드웨어에서 (System/370, IBM System/390® 및 IBM zSeries®와 같은) IBM 메인프레임 컴퓨터를 에뮬레이트하는 Hercules가 있다.
일부 에뮬레이터는 과거의 하드웨어를 재현하는 데 초점을 맞추지 않고, 하드웨어가 더 이상 존재하지 않는 환경에 비디오 게임을 구현하는 데 초점을 맞춘다. 가장 흥미로운 것 중 하나가 MAME(Multi-Arcade Machine Emulator)이다. 이 에뮬레이터는 (아케이드 머신을 포함한) 엄청난 수의 비디오 게임 하드웨어를 위한 시스템 에뮬레이션을 제공하고, 따라서 데이터 버스, 스토리지 디바이스, 오디오 및 비디오 하드웨어 등을 바탕으로 빌드된 하드웨어 환경과 과거의 프로세서에 대한 에뮬레이션 기능을 제공한다. 오늘날, MAME 프로젝트에서는 4,500여 가지의 독창적인 게임에 대한 에뮬레이션을 제공한다. MAME는 거의 500대의 고유 콘솔, 컴퓨터 및 계산기를 에뮬레이트하는 MESS(Multi-Emulator-Super-System)의 핵심이기도 하다.
Apollo 달 탐사에 사용된 AGC(Apollo Guidance Computer)와 같은 전문 하드웨어용 시뮬레이터도 찾을 수 있다. 유사한 과정을 통해 궤도로 진입하는 동안 로켓 엔진의 점화를 관리했던 LVDC(Launch Vehicle Digital Computer)를 시뮬레이션한다. LVDC는 트랜지스터용으로 설계된 컴퓨터였지만, AGC는 최초로 집적 회로로 설계된 컴퓨터였다. 두 컴퓨터 모두 원시 기계 코드로 설계된 프로그램을 포함한 사용자 정의 명령어 세트가 있었다.
이들 에뮬레이터와 다른 에뮬레이터에 대한 자세한 정보는 참고자료를 참조한다.
레트로 컴퓨팅(Retro-computing)에 대해 정말 흥미진진한 내용이 있다. 오늘날의 컴퓨팅 환경에서 보는 모든 것은 과거의 컴퓨팅 시스템에서 유래된 것이며, 과거의 유산 중 지금도 충분히 사용할 수 있을 정도로 작동하는 하드웨어는 많지 않다. 고맙게도, 새로운 세대에 속하는 이들이 불편을 느끼지 않고 사용할 수 있도록, SIMH 프로젝트에서는 이런 하드웨어뿐 아니라 지난날의 운영 체제와 애플리케이션에 새로운 생명을 불어넣고 있다.
교육
-
Konrad
Zuse의 "Z" 시스템은 베를린기술대학교(Technical University of Berlin)에 훌륭하게 기록된 문서가 소장되어 있다. Zuse의
Z3,
Z4 및
Plankalkül이라는 최초의 언어에 대해 탐구할 수 있다.
- evolution of the
computer(컴퓨터의 발전)에 관한 이 Wikipedia 기사에는 (Konrad Zuse의 초창기 Z 시스템부터 독일어 코드 분석에 사용되는 영국
정부의 비밀 Colossus 컴퓨터 등에 이르기까지) 정의된 다양한 스키마와 컴퓨터를 만들기 위한 소리 없는 경쟁의 흥미로운 역사가 담겨 있다.
- 2010년 현재, 계산 자동화를 위한 최초의 디지털 컴퓨터 발명자를 두고 뜨거운 논쟁이 펼쳐져 왔다.
우리 대부분은 ENIAC과 펜실베이니아 대학교(University of Pennsylvania)라고 생각하지만, 거의 언급되지는 않았지만 그 이전에 관련 작업이
이루어졌었다. 1930년대 말, John Atanasoff와 Clifford Berry가 지금은 ABC라고 부르는 최초의 컴퓨터 제작을 시작했다. 최근에
이 기사에서도 다룬 적이 있지만, Wired:
Pulitzer Prize-Winning Novelist Tells the Tale of the World's First
Computer를 저술한 Jane Smiley가 이런 초창기 역사를 소개하는 신간을 발표했다. 역사와 관련된 내용을 다룬 것 외에도, Smiley는
이 위대한 발명의 이면에서 경쟁사들끼리 벌이는 정치적, 심리적 경쟁을 생생히 보여준다.
- 1971년, Intel에서는 4004라는 칩에 최초로
상업용 마이크로프로세서를 탑재하여 출시했다. 4004 프로세서는 초당 92,000개의 명령어를 실행할 수 있는 4비트 CPU였다. 그 후계자는
1974년에 나온 4040 프로세서로서, 명령어 세트, 프로그램 세트, 레지스터 세트 및
스택을 확장한 제품이었다.
- Computer History Simulation Project에서는 수많은 컴퓨팅 시스템에 대한 시뮬레이터를 구현한다. 프로젝트
웹 사이트를 방문하면 30여 가지 주요 시스템 목록을 확인할 수 있다.
- Writing a Simulator
for the SIMH System 문서를 보면 시뮬레이터 아키텍처뿐 아니라, 시뮬레이션된 다양한 시스템에 대한 세부사항도 살펴볼 수 있다. 또한,
시뮬레이션을 통해 과거의 시스템을 이해하는 방법을 포함한 자세한 정보는 Bob Supnik의
SIMH: Forward into the Past에서 이 프리젠테이션을 통해 읽을 수 있다.
-
Peter Schorn은 SIMH용 Altair 에뮬레이터와 Altair에 대한 방대한 분량의 정보와 소스를
보유한 웹 사이트를 유지보수한다. 그의 사이트에서는 Altair용 운영 체제, 대체 프로그래밍 언어 및 기타 애플리케이션을 정리한 방대한 목록을
확인할 수 있다.
-
Hercules는 System/370, ESA/390 및 z/Architecture를 포함한 다양한 IBM 메인프레임을 위한
오픈 소스 에뮬레이터이다. Hercules는 Linux® 및 FreeBSD를 포함한 다양한 호스트 운영 체제에서 사용할 수 있다.
- 이 기사에서는 AGC와 같은 전문 전자 시스템에 초점을 맞춘 다른 에뮬레이터에 대해서도
설명했다. Virtual AGC와 관련 에뮬레이터는 컴퓨팅 시스템의 다른 흥미로운 측면도 간직하고
있다. Journey to the Moon: The History of the
Apollo Guidance Computer에서 AGC와 그 역사에 대해 자세한 내용을 알아볼 수 있다.
- 게임 에뮬레이터는 흥미로운 개발 영역이다. 이런 에뮬레이터는 자유롭게 사용할 수 있지만, 게임을 제공하는
ROM은 여전히 라이센스 소유자에게 소유권이 있다. ROM을 다운로드하거나 다운로드한 ROM을 사용하기 전에 관련 라이센스를 확인해봐야
한다. 많은 경우, 이런 오래된 게임도 최신 하드웨어에서 실행할 수 있는 버전으로 구입할 수 있다. Multi-Arcade
Machine Emulator는 코어에서 MAME를 사용하는 Multi-Emulator
Super-System 외에 가장 흥미로운 프로젝트 중 하나이다. Wikipedia에서 video
game console emulators(비디오 게임 콘솔 에뮬레이터)와 larger list of emulators(에뮬레이터
상세 목록)와 같은 목록도 찾을 수 있다.
- SIMH 사용자 안내서에는 시뮬레이터
프레임워크에서 사용할 수 있는 명령뿐 아니라, SIMH 구현에 대한 방대한 정보가 제공된다. Computer History and Simulation
Links에서 컴퓨팅 시스템 복원을 포함하여, 다른 에뮬레이터 프로젝트에 대한 자세한 정보도 찾을 수 있다.
토론
- developerWorks 포럼 & 블로그를 통해 developerWorks 커뮤니티에 참여하자.
M. Tim Jones는 임베디드 펌웨어 아키텍트이자 Artificial Intelligence: A Systems Approach, GNU/Linux Application Programming(2판이 나왔다), AI Application Programming(2판이 나왔다), BSD Sockets Programming from a Multilanguage Perspective의 저자이기도 하다. Jones의 공학 배경은 정지 위성을 위한 커널 개발에서 시작해 임베디드 시스템 아키텍처와 네트워크 프로토콜 개발에 이르기까지 다양한 분야를 아우른다. Jones는 콜로라도 주, 롱몬트 소재 Emulex 사에서 컨설턴트 엔지니어로 활약한다.