검수요청.png검수요청.png

"에뮬레이션"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
1번째 줄: 1번째 줄:
'''에뮬레이션'''(emulation)은 어떤 계산기가 다른 종류의 계산기용으로 작성된 프로그램을 특별한 기구와 프로그래밍 기법을 이용하여 그대로 실행할 수 있도록 하는 것을 이른다.<ref name="에뮬레이션"> 〈[https://terms.naver.com/entry.naver?docId=592810&cid=42340&categoryId=42340 에뮬레이션]〉, 《네이버 지식백과》 </ref>
+
'''에뮬레이션'''(emulation)은 어떤 계산기가 다른 종류의 계산기용으로 작성된 프로그램을 특별한 기구와 프로그래밍 기법을 이용하여 그대로 실행할 수 있도록 하는 것을 이른다.<ref name="에뮬레이션 네이버 지식백과"> 〈[https://terms.naver.com/entry.naver?docId=592810&cid=42340&categoryId=42340 에뮬레이션]〉, 《네이버 지식백과》 </ref>
  
 
== 개요 ==
 
== 개요 ==
에뮬레이션은 어떤 계산기가 다른 종류의 계산기 용으로 작성된 프로그램을 특별한 기구와 프로그래밍 기법을 이용하여 그대로 실행할 수 있도록 하는 것을 이른다. 또는 에뮬레이션을 하는 장치 또는 프로그램을 가리켜 [[에뮬레이터]](emulator)라고 한다. 새로운 정보 기술이 출현할 때마다 이전의 프로그램에 대한 소스 코드를 입수할 수 있거나, 이전의 프로그램을 그대로 재현할 수 있을 만큼 충분히 상세한 문서화가 이루어지거나, 또는 최신 버전과 이전 버전의 호환을 돕는 연계 소프트웨어가 있다는 보장을 전제로 한다. 그러나 이러한 전제들이 현실적이지 않다는 점이 이 선택을 유일한 해결책으로 단정하기 어렵게 하는 제약이다.<ref> 〈[https://terms.naver.com/entry.naver?docId=441101&cid=42081&categoryId=42081 에뮬레이션]〉, 《네이버 지식백과》 </ref> 에뮬레이션은 서로 다른 기종의 프로그램 호환성을 갖게 하기 위한 수단이다. 대상에 대한 소프트웨어 모델을 만들고, 그것을 계산기로 작동하여 그 상태를 [[시뮬레이트]]하는 프로그램 시뮬레이션의 일종이라고도 생각 할 수 있지만, 에뮬레이터는 보통 마이크로 프로그래밍 기능 등에 의해 고속화를 꾀하고 있다. 에뮬레이터는 예를 들면 마이크로 컴퓨터를 개발하는 경우 등에 마이크로컴퓨터(MDS) 개발 시스템의 일부로서 강력한 디버깅 루트를 제공하며, 과대한 진단 장치나 진단 프로그램은 불필요하다. 예를 들어, <ref name="에뮬레이션"></ref>  
+
에뮬레이션은 어떤 계산기가 다른 종류의 계산기 용으로 작성된 프로그램을 특별한 기구와 프로그래밍 기법을 이용하여 그대로 실행할 수 있도록 하는 것을 이른다. 또는 에뮬레이션을 하는 장치 또는 프로그램을 가리켜 [[에뮬레이터]](emulator)라고 한다. 새로운 정보 기술이 출현할 때마다 이전의 프로그램에 대한 소스 코드를 입수할 수 있거나, 이전의 프로그램을 그대로 재현할 수 있을 만큼 충분히 상세한 문서화가 이루어지거나, 또는 최신 버전과 이전 버전의 호환을 돕는 연계 소프트웨어가 있다는 보장을 전제로 한다. 그러나 이러한 전제들이 현실적이지 않다는 점이 이 선택을 유일한 해결책으로 단정하기 어렵게 하는 제약이다.<ref> 〈[https://terms.naver.com/entry.naver?docId=441101&cid=42081&categoryId=42081 에뮬레이션]〉, 《네이버 지식백과》 </ref> 에뮬레이션은 서로 다른 기종의 프로그램 호환성을 갖게 하기 위한 수단이다. 대상에 대한 소프트웨어 모델을 만들고, 그것을 계산기로 작동하여 그 상태를 [[시뮬레이트]]하는 프로그램 시뮬레이션의 일종이라고도 생각 할 수 있지만, 에뮬레이터는 보통 마이크로 프로그래밍 기능 등에 의해 고속화를 꾀하고 있다. 에뮬레이터는 예를 들면 마이크로 컴퓨터를 개발하는 경우 등에 마이크로컴퓨터(MDS) 개발 시스템의 일부로서 강력한 디버깅 루트를 제공하며, 과대한 진단 장치나 진단 프로그램은 불필요하다.<ref name="에뮬레이션 네이버 지식백과"></ref>  
  
 
==종류==
 
==종류==
8번째 줄: 8번째 줄:
  
 
*'''하드웨어 에뮬레이션''': 원래 하드웨어와 똑같은 성능을 내도록 처리하게 만들어 회로 내에서 디버깅이 용이하게 한다. 개발 작업의 효율성을 극대화 시킨다. 예로는 인서킷 에뮬레이터 등이 있다.<ref name="시리즈"></ref>
 
*'''하드웨어 에뮬레이션''': 원래 하드웨어와 똑같은 성능을 내도록 처리하게 만들어 회로 내에서 디버깅이 용이하게 한다. 개발 작업의 효율성을 극대화 시킨다. 예로는 인서킷 에뮬레이터 등이 있다.<ref name="시리즈"></ref>
 +
 +
==에뮬레이터 정의 및 종류==
 +
 +
에뮬레이터: 어떤 하드웨어나 소프트웨어의 기능을 다른 종류의 하드웨어나 소프트웨어로 모방하여 실현시키기 위한 장치나 프로그램이다. 컴퓨터 사용 시의 여러 제약을 극복하고 호환성을 실현하는 방법의 하나로 사용된다. 흉내 내다(emulate)라는 뜻에서 붙여진 이름인데, 본래의 기능을 흉내 내어 유사한 기능을 할 수 있도록 했다는 뜻에서 사용하게 되었다. 예를 들어 하나의 프로그램을 실행시킬 때 사용 중인 컴퓨터의 입출력 장치 등의 조건이 실행 프로그램과 일치하지 않는다면 프로그램은 절대로 실현되지 않는데, 이러한 상황에서 프로그램이 작동되도록 하는 방법으로 많이 이용된다. PC통신에 접속한 개인용 컴퓨터를 호스트 컴퓨터의 단말기처럼 동작하게 하는 통신 에뮬레이터와 같은 프로그램이 대표적이다.<ref> 〈[https://terms.naver.com/entry.naver?docId=592810&cid=42340&categoryId=42340 에뮬레이터]〉, 《네이버 지식백과》 </ref>
 +
 +
*'''마메'''(Multiple Arcade Machine Emulator)
 +
# 분류: 오락실 기판 에뮬레이터
 +
# 대표 타이틀: [[갤러그]]
 +
# 특징: [[아케이드]] 기판 게임을 모두 지원하겠다는 당찬 포부로 제작된 에뮬레이터로서, 소스 공개를 통해 다양한 변종 버전이 개발되고 있으며 얼마 전부터는 기존의 오락실 기판의 에뮬레이터에서 벗어나, CPS기판의 게임들과 [[네오지오]](NEO-GEO) 게임 등을 지원, 가장 많은 수의 롬 파일을 지원하고 있다.<ref name="archanjels0"> archanjels0, 〈[https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=archanjels0&logNo=70031201048 에뮬레이터 종류 및 특징]〉, 《네이버 블로그》, 2008-05-21 </ref>
 +
 +
*'''칼러스(Callus)'''
 +
# 분류 : 오락실 기판 에뮬레이터
 +
# 대표타이틀 : 스트리트 파이터
 +
# 일본 캡콤사의 CPS(Camcom’s Play System) 기판을 지원하는 대표적인 에뮬레이터이다. 빠른 실행과 최적화, 안정화에 중점을 두고 개발됐다. 캡콤 게임중 2D에 최적화를 이뤘다. 현재는 개발이 중단됐다.<ref name="archanjels0"></ref>
 +
 +
*'''네오레이지X'''(Neo Real Arcade Game EmulatorX)
 +
# 분류 : 오락실 기판 에뮬레이터
 +
# 대표타이틀 : 더 킹 오브 파이터즈
 +
# 일본 SNK에서 제작한 오락실용 기판인 네오지오에 최적화를 이뤘던 네오레이지의 후속 에뮬레이터이다. 저사양에서도 무리 없이 실행되며 안정적인 구동 역시 장점이다. 네오지오 롬파일의 특성상 덤프과정에서 대용량의 롬파일들이 추출, 롬파일의 크기에 따라 로딩 시간의 편차가 큰 편이다.<ref name="archanjels0"></ref>
 +
 +
*'''윈 카왁스'''(WinKawaks)
 +
# 분류 : 오락실 기판 에뮬레이터
 +
# 대표타이틀 : 던전앤드래곤스
 +
# 네오지오 기판과 캡콤의 CPS1, 2 기판을 동시에 지원하는 개성 넘치는 에뮬레이터이다. 그래픽과 사운드 등 다양한 세부 옵션의 설정이 가능한 완벽한 에뮬레이팅을 보여주고 있다. 특히 넷플레이와 게임의 플레이 영상을 저장할 수 있다는 점은 독창적인 요소로 손꼽힌다. 비교적 높은 사양의 PC와 중급 이상의 그래픽 카드가 필요하다.<ref name="archanjels0"></ref>
 +
 +
*'''ZiNc'''
 +
# 분류 : 오락실 기판 에뮬레이터
 +
# 대표타이틀 : 철권2
 +
# 소니의 ZN1,2기판과 남코의 시스템11기판, 캡콤의 CPS1,2기판을 지원하는 대표적인 3D 에뮬레이터. 캡콤의 3D게임을 전문적으로 지원했던 고사양 에뮬레이터 임팩트(Impact)의 개발팀이 제작한 만큼 대용량의 램과 최신의 3D그래픽 카드 등 고사양을 필요로 한다. 최근에는 윈도우와 리눅스 기반의 PC를 모두 지원한다.<ref name="archanjels0"></ref>
 +
 +
*'''Snes9X'''(Super Nintendo Entertainment System 9X)
 +
# 분류 : 슈퍼패미콤 에뮬레이터
 +
# 대표타이틀 : 파이날 판타지 6
 +
# 슈퍼패미콤 에뮬레이터의 대명사로 군림 중인 Snes9X. 반투명 기능을 비롯해 강력한 강제 저장 및 로드 기능, 뛰어난 그래픽과 사운드를 통해 ZSNES를 누르고 독보적인 위치를 차지하는데 성공했다. 초창기 슈퍼패미콤의 게임부터 2000년대 초반에 등장한 다양한 게임들을 지원하며 완숙기에 접어든 형태를 취하고 있다.<ref name="archanjels0"></ref>
 +
 +
*'''네뷸라'''(Nebula)
 +
# 분류 : 오락실 기판 에뮬레이터
 +
# 대표타이틀 : 삼국전기
 +
# 네뷸라는 은하계의 안드로메다 성운을 의미하는 말로, 수많은 CPS2 에뮬레이터 중 빛을 발하고자 했던 제작자들의 목표를 이름으로 사용했다. 초창기에는 라이벌이었던 파이날 번(FinalBurn)에 비해 부족했지만 유저의 욕구를 적극 수용하며 발전을 거듭, 대표적인 에뮬레이터로 자리 잡았다.<ref name="archanjels0"></ref>
 +
 +
*'''블루 MSX'''(Blue MSX)
 +
# 분류 : PC 에뮬레이터
 +
# 대표타이틀 : 이스
 +
# PC98기종과 마찬가지로 MSX 역시 PC용 게임의 에뮬레이터라는 점에서 기존의 에뮬레이터와 차별화된다. 1983년 미국 MS와 일본 아스키가 PC의 호환성을 목표로 제작한 8비트 퍼스컴의 통일규격인 MSX (MicroSoft eXtended)의 게임을 모두 지원하며 MSX와 흡사한 사운드를 들려준다.<ref name="archanjels0"></ref>
 +
 +
*'''ePSXe'''
 +
# 분류 : PS1 에뮬레이터
 +
# 대표타이틀 : 메탈기어 솔리드
 +
# CD 혹은 CD 이미지를 이용해 소니의 PS1 게임을 거의 완벽에 가깝게 재현한 에뮬레이터. 가상 CD를 이용해 실행되는 만큼 가상 CD프로그램인 데몬이나 LCD프로그램과 짝을 이뤄 사용된다. 복잡한 인터페이스가 단점이다.<ref name="archanjels0"></ref>
 +
 +
*'''프로젝트64'''(Project64)
 +
# 분류 : 닌텐도64 에뮬레이터
 +
# 대표타이틀 : 젤다의 전설
 +
# 64비트 가정용 게임기인 닌텐도64 전용 에뮬레이터.CD롬 방식 채택한 소니의 PS1이나 세가의 세턴과는 달리 롬 카트리지 방식을 사용, 기존 에뮬레이터와 같은 방식인 만큼 초기부터 높은 완성도를 선보였다.<ref name="archanjels0"></ref>
  
 
==에뮬레이션과 시뮬레이션의 차이점==
 
==에뮬레이션과 시뮬레이션의 차이점==
에뮬레이션과 [[시뮬레이션]](simulation)은 모두 어떤 시스템의 일부 또는 전체를 흉내 낸다는 공통점이 있지만 시뮬레이션은 몇 가지 특성을 주고, 거기에 대한 결과를 산출해보는 것이고, 에뮬레이션은 완전 똑같은 방법으로 다른 대상을 [[하드웨어]] 동작까지도 흉내 내는 것을 말한다.<ref name="시리즈"></ref> 예들 들어, 게임 중에 시뮬레이션 게임들이 있다. 그 시뮬레이션 게임들은 실제 상황을 시뮬레이션 해서 만드는 것이다. 즉, 실제와 완전히 똑같을 필요까지는 없고 시뮬레이션하는 대상이 지니는 주요 특성만을 재현해주면 되는 것이다. 비행 시뮬레이션 이라면 하늘을 나는 것처럼 3D표현으로 화면에 보여주고 하늘을 나는 것처럼 조작할 수 있게 해주면 되는 것이다. 물론 실험용 시뮬레이션이라면 바람이나 기후에 의한 영향이라던지 기체의 상태에 의한 영향 같이 더 자세한 특성들을 재현해줘야 하는 것이지만 그렇다고 해서 모든 것(화면 모습의 텍스쳐를 실제 현실처럼 자세하게 해줘야 한다거나 하는...)을 재현할 필요까지는 없다. 심지어는 어떠한 시뮬레이션의 경우는 단순히 그 상황에 대한 관측 수치만 제공하는 경우도 있다.그에 반해 에뮬레이터는 재현고자 하는 대상을 완벽하게 재현하는 것이 목표이다. 어떠한 PDA를 에뮬레이션 하려고 한다면 PDA에 사용된 cpu가 처리할 수 있는 명령어들을 그대로 처리할 수 있는 가상의 cpu를 구현해야 하고 PDA에 사용된 디스플레이와 같은 해상도에서 PDA와 동일한 성능으로 PDA에서 돌아가는 프로그램을 사용할 수 있어야 한다. 간단히 말하자면 에뮬레이터는 어떠한 하드웨어를 소프트웨어 적으로 재구현하는 것이다. (유사하게 하드웨어 -> 하드웨어는 짝퉁(카피) (중국의 짝퉁 자동차나 짝퉁 mp3같은... )
+
에뮬레이션과 [[시뮬레이션]](simulation)은 모두 어떤 시스템의 일부 또는 전체를 흉내 낸다는 공통점이 있지만 시뮬레이션은 몇 가지 특성을 주고, 거기에 대한 결과를 산출해보는 것이고, 에뮬레이션은 완전 똑같은 방법으로 다른 대상을 [[하드웨어]] 동작까지도 흉내 내는 것을 말한다.<ref name="시리즈"></ref> 예들 들어, 게임 중에 시뮬레이션 게임들이 있다. 그 시뮬레이션 게임들은 실제 상황을 시뮬레이션 해서 만드는 것이다. 즉, 실제와 완전히 똑같을 필요까지는 없고 시뮬레이션하는 대상이 지니는 주요 특성만을 재현해주면 되는 것이다. 비행 시뮬레이션 이라면 하늘을 나는 것처럼 3D표현으로 화면에 보여주고 하늘을 나는 것처럼 조작할 수 있게 해주면 되는 것이다. 물론 실험용 시뮬레이션이라면 바람이나 기후에 의한 영향이라던지 기체의 상태에 의한 영향 같이 더 자세한 특성들을 재현해줘야 하는 것이지만 그렇다고 해서 모든 것, 즉 화면 모습의 텍스쳐를 실제 현실처럼 자세하게 재현할 필요까지는 없다. 심지어는 어떠한 시뮬레이션의 경우는 단순히 그 상황에 대한 관측 수치만 제공하는 경우도 있다. 그에 반해 에뮬레이터는 재현하고자 하는 대상을 완벽하게 재현하는 것이 목표이다. 어떠한 PDA를 에뮬레이션하려고 한다면 PDA에 사용된 cpu가 처리할 수 있는 명령어들을 그대로 처리할 수 있는 가상의 cpu를 구현해야 하고 PDA에 사용된 디스플레이와 같은 해상도에서 PDA와 동일한 성능으로 PDA에서 돌아가는 프로그램을 사용할 수 있어야 한다. 간단히 말하자면 에뮬레이터는 어떠한 하드웨어를 소프트웨어 적으로 재구현하는 것이다. 그리고 그 설명에서는 "시뮬레이터는 하드웨어도 포함할 수도 있지만, 에뮬레이터는 소프트웨어적으로만 구현하는 것을 의미한다." 라고 이해하면 된다.
소프트웨어 -> 소프트웨어는 클론( 네이트온을 대신하는 Jateon 같은... )
+
저 차이는 두가지를 완벽하게 구분하는데 사용하기는 힘든 특성이다. 즉, 시뮬레이션은 소프트웨어적, 하드웨어적, 혹은 소프트웨어 + 하드웨어 등을 동시에 사용하여 어떠한 상황에 대한 자세한 데이터를 수집하거나 보여주는 것이 목적이고, 에뮬레이션은 어떠한 하드웨어를 소프트웨어적으로 구현하여 대상 하드웨어를 사용하는 것과 동일하게 사용하는 것이 목적이라고 할 수 있다.<ref> Embedded Lab/linux, x86,〈[https://4369.tistory.com/entry/%EC%97%90%EB%AE%AC%EB%A0%88%EC%9D%B4%ED%84%B0%EC%99%80-%EC%8B%9C%EB%AE%AC%EB%A0%88%EC%9D%B4%ED%84%B0%EC%9D%98-%EC%B0%A8%EC%9D%B4 에뮬레이터와 시뮬레이터의 차이]〉, 《티스토리》, 2013-03-24 </ref>
소프트웨어 -> 하드웨어는 생각이 안나는군요. (이러는 경우가 있기는 하던가요;;)
 
이라고 할 수 있다. )
 
그리고 그 설명에서는 "시뮬레이터는 하드웨어도 포함할 수도 있지만
 
에뮬레이터는 소프트웨어적으로만 구현하는 것을 의미한다." 라고 이해하시면 될것 같다.
 
저 차이는 두가지를 완벽하게 구분하는데 사용하기는 힘든 특성이다. 즉, 시뮬레이션은 소프트웨어적, 하드웨어적, 혹은 소프트웨어+하드웨어 등을 동시에 사용하여
 
어떠한 상황에 대한 자세한 데이터를 수집하거나 보여주는 것이 목적이고,에뮬레이션은 어떠한 하드웨어를 소프트웨어적으로 구현하여 대상 하드웨어를 사용하는 것과동일하게 사용하는 것이 목적이라고 할 수 있다.<ref> Embedded Lab/linux, x86,〈[https://4369.tistory.com/entry/%EC%97%90%EB%AE%AC%EB%A0%88%EC%9D%B4%ED%84%B0%EC%99%80-%EC%8B%9C%EB%AE%AC%EB%A0%88%EC%9D%B4%ED%84%B0%EC%9D%98-%EC%B0%A8%EC%9D%B4 에뮬레이터와 시뮬레이터의 차이]〉, 《티스토리》, 2013-03-24 </ref>
 
  
 
==에뮬레이션과 가상화의 차이점==
 
==에뮬레이션과 가상화의 차이점==
36번째 줄: 84번째 줄:
 
== 참고자료 ==
 
== 참고자료 ==
 
* 〈[https://terms.naver.com/entry.naver?docId=592810&cid=42340&categoryId=42340 에뮬레이션]〉, 《네이버 지식백과》
 
* 〈[https://terms.naver.com/entry.naver?docId=592810&cid=42340&categoryId=42340 에뮬레이션]〉, 《네이버 지식백과》
* 〈[https://terms.naver.com/entry.naver?docId=441101&cid=42081&categoryId=42081 에뮬레이션]〉, 《네이버 지식백과》  
+
* 〈[https://terms.naver.com/entry.naver?docId=441101&cid=42081&categoryId=42081 에뮬레이션]〉, 《네이버 지식백과》
 +
* 〈[https://terms.naver.com/entry.naver?docId=592810&cid=42340&categoryId=42340 에뮬레이터]〉, 《네이버 지식백과》  
 
*  시리즈,〈[https://mypdf.tistory.com/entry/%EC%97%90%EB%AE%AC%EB%A0%88%EC%9D%B4%EC%85%98emulation%EA%B3%BC-%EC%8B%9C%EB%AE%AC%EB%A0%88%EC%9D%B4%EC%85%98simulation-%EC%B0%A8%EC%9D%B4 에뮬레이션과 시뮬레이션 차이]〉, 《티스토리》, 2014-07-08
 
*  시리즈,〈[https://mypdf.tistory.com/entry/%EC%97%90%EB%AE%AC%EB%A0%88%EC%9D%B4%EC%85%98emulation%EA%B3%BC-%EC%8B%9C%EB%AE%AC%EB%A0%88%EC%9D%B4%EC%85%98simulation-%EC%B0%A8%EC%9D%B4 에뮬레이션과 시뮬레이션 차이]〉, 《티스토리》, 2014-07-08
 
* Data Scientist cinema4dr12,〈[https://cinema4dr12.tistory.com/537 가상화 vs 에뮬레이션, 차이점은 대체 무엇일까?]〉, 《티스토리》, 2014-04-27  
 
* Data Scientist cinema4dr12,〈[https://cinema4dr12.tistory.com/537 가상화 vs 에뮬레이션, 차이점은 대체 무엇일까?]〉, 《티스토리》, 2014-04-27  
 +
* Embedded Lab/linux, x86,〈[https://4369.tistory.com/entry/%EC%97%90%EB%AE%AC%EB%A0%88%EC%9D%B4%ED%84%B0%EC%99%80-%EC%8B%9C%EB%AE%AC%EB%A0%88%EC%9D%B4%ED%84%B0%EC%9D%98-%EC%B0%A8%EC%9D%B4 에뮬레이터와 시뮬레이터의 차이]〉, 《티스토리》, 2013-03-24
 +
* archanjels0, 〈[https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=archanjels0&logNo=70031201048 에뮬레이터 종류 및 특징]〉, 《네이버 블로그》, 2008-05-21
  
 
== 같이 보기 ==
 
== 같이 보기 ==

2021년 7월 16일 (금) 16:23 판

에뮬레이션(emulation)은 어떤 계산기가 다른 종류의 계산기용으로 작성된 프로그램을 특별한 기구와 프로그래밍 기법을 이용하여 그대로 실행할 수 있도록 하는 것을 이른다.[1]

개요

에뮬레이션은 어떤 계산기가 다른 종류의 계산기 용으로 작성된 프로그램을 특별한 기구와 프로그래밍 기법을 이용하여 그대로 실행할 수 있도록 하는 것을 이른다. 또는 에뮬레이션을 하는 장치 또는 프로그램을 가리켜 에뮬레이터(emulator)라고 한다. 새로운 정보 기술이 출현할 때마다 이전의 프로그램에 대한 소스 코드를 입수할 수 있거나, 이전의 프로그램을 그대로 재현할 수 있을 만큼 충분히 상세한 문서화가 이루어지거나, 또는 최신 버전과 이전 버전의 호환을 돕는 연계 소프트웨어가 있다는 보장을 전제로 한다. 그러나 이러한 전제들이 현실적이지 않다는 점이 이 선택을 유일한 해결책으로 단정하기 어렵게 하는 제약이다.[2] 에뮬레이션은 서로 다른 기종의 프로그램 호환성을 갖게 하기 위한 수단이다. 대상에 대한 소프트웨어 모델을 만들고, 그것을 계산기로 작동하여 그 상태를 시뮬레이트하는 프로그램 시뮬레이션의 일종이라고도 생각 할 수 있지만, 에뮬레이터는 보통 마이크로 프로그래밍 기능 등에 의해 고속화를 꾀하고 있다. 에뮬레이터는 예를 들면 마이크로 컴퓨터를 개발하는 경우 등에 마이크로컴퓨터(MDS) 개발 시스템의 일부로서 강력한 디버깅 루트를 제공하며, 과대한 진단 장치나 진단 프로그램은 불필요하다.[1]

종류

  • 소프트웨어 에뮬레이션: 원래 하드웨어적으로 수행되는 작업을 소프트웨어로 흉내내어 처리하는 것을 의미한다. 예를 들어 부동 소수점 연산을 처리하기 위해 CPU에 부동소수점 연산회로를 내장하는 대신 마이크로 프로그래밍을 이용하여 소프트웨어적으로 처리하는 경우, 대개 처리 속도는 늦어지나 가격은 그만큼 떨어진다.[3]
  • 하드웨어 에뮬레이션: 원래 하드웨어와 똑같은 성능을 내도록 처리하게 만들어 회로 내에서 디버깅이 용이하게 한다. 개발 작업의 효율성을 극대화 시킨다. 예로는 인서킷 에뮬레이터 등이 있다.[3]

에뮬레이터 정의 및 종류

에뮬레이터: 어떤 하드웨어나 소프트웨어의 기능을 다른 종류의 하드웨어나 소프트웨어로 모방하여 실현시키기 위한 장치나 프로그램이다. 컴퓨터 사용 시의 여러 제약을 극복하고 호환성을 실현하는 방법의 하나로 사용된다. 흉내 내다(emulate)라는 뜻에서 붙여진 이름인데, 본래의 기능을 흉내 내어 유사한 기능을 할 수 있도록 했다는 뜻에서 사용하게 되었다. 예를 들어 하나의 프로그램을 실행시킬 때 사용 중인 컴퓨터의 입출력 장치 등의 조건이 실행 프로그램과 일치하지 않는다면 프로그램은 절대로 실현되지 않는데, 이러한 상황에서 프로그램이 작동되도록 하는 방법으로 많이 이용된다. PC통신에 접속한 개인용 컴퓨터를 호스트 컴퓨터의 단말기처럼 동작하게 하는 통신 에뮬레이터와 같은 프로그램이 대표적이다.[4]

  • 마메(Multiple Arcade Machine Emulator)
  1. 분류: 오락실 기판 에뮬레이터
  2. 대표 타이틀: 갤러그
  3. 특징: 아케이드 기판 게임을 모두 지원하겠다는 당찬 포부로 제작된 에뮬레이터로서, 소스 공개를 통해 다양한 변종 버전이 개발되고 있으며 얼마 전부터는 기존의 오락실 기판의 에뮬레이터에서 벗어나, CPS기판의 게임들과 네오지오(NEO-GEO) 게임 등을 지원, 가장 많은 수의 롬 파일을 지원하고 있다.[5]
  • 칼러스(Callus)
  1. 분류 : 오락실 기판 에뮬레이터
  2. 대표타이틀 : 스트리트 파이터
  3. 일본 캡콤사의 CPS(Camcom’s Play System) 기판을 지원하는 대표적인 에뮬레이터이다. 빠른 실행과 최적화, 안정화에 중점을 두고 개발됐다. 캡콤 게임중 2D에 최적화를 이뤘다. 현재는 개발이 중단됐다.[5]
  • 네오레이지X(Neo Real Arcade Game EmulatorX)
  1. 분류 : 오락실 기판 에뮬레이터
  2. 대표타이틀 : 더 킹 오브 파이터즈
  3. 일본 SNK에서 제작한 오락실용 기판인 네오지오에 최적화를 이뤘던 네오레이지의 후속 에뮬레이터이다. 저사양에서도 무리 없이 실행되며 안정적인 구동 역시 장점이다. 네오지오 롬파일의 특성상 덤프과정에서 대용량의 롬파일들이 추출, 롬파일의 크기에 따라 로딩 시간의 편차가 큰 편이다.[5]
  • 윈 카왁스(WinKawaks)
  1. 분류 : 오락실 기판 에뮬레이터
  2. 대표타이틀 : 던전앤드래곤스
  3. 네오지오 기판과 캡콤의 CPS1, 2 기판을 동시에 지원하는 개성 넘치는 에뮬레이터이다. 그래픽과 사운드 등 다양한 세부 옵션의 설정이 가능한 완벽한 에뮬레이팅을 보여주고 있다. 특히 넷플레이와 게임의 플레이 영상을 저장할 수 있다는 점은 독창적인 요소로 손꼽힌다. 비교적 높은 사양의 PC와 중급 이상의 그래픽 카드가 필요하다.[5]
  • ZiNc
  1. 분류 : 오락실 기판 에뮬레이터
  2. 대표타이틀 : 철권2
  3. 소니의 ZN1,2기판과 남코의 시스템11기판, 캡콤의 CPS1,2기판을 지원하는 대표적인 3D 에뮬레이터. 캡콤의 3D게임을 전문적으로 지원했던 고사양 에뮬레이터 임팩트(Impact)의 개발팀이 제작한 만큼 대용량의 램과 최신의 3D그래픽 카드 등 고사양을 필요로 한다. 최근에는 윈도우와 리눅스 기반의 PC를 모두 지원한다.[5]
  • Snes9X(Super Nintendo Entertainment System 9X)
  1. 분류 : 슈퍼패미콤 에뮬레이터
  2. 대표타이틀 : 파이날 판타지 6
  3. 슈퍼패미콤 에뮬레이터의 대명사로 군림 중인 Snes9X. 반투명 기능을 비롯해 강력한 강제 저장 및 로드 기능, 뛰어난 그래픽과 사운드를 통해 ZSNES를 누르고 독보적인 위치를 차지하는데 성공했다. 초창기 슈퍼패미콤의 게임부터 2000년대 초반에 등장한 다양한 게임들을 지원하며 완숙기에 접어든 형태를 취하고 있다.[5]
  • 네뷸라(Nebula)
  1. 분류 : 오락실 기판 에뮬레이터
  2. 대표타이틀 : 삼국전기
  3. 네뷸라는 은하계의 안드로메다 성운을 의미하는 말로, 수많은 CPS2 에뮬레이터 중 빛을 발하고자 했던 제작자들의 목표를 이름으로 사용했다. 초창기에는 라이벌이었던 파이날 번(FinalBurn)에 비해 부족했지만 유저의 욕구를 적극 수용하며 발전을 거듭, 대표적인 에뮬레이터로 자리 잡았다.[5]
  • 블루 MSX(Blue MSX)
  1. 분류 : PC 에뮬레이터
  2. 대표타이틀 : 이스
  3. PC98기종과 마찬가지로 MSX 역시 PC용 게임의 에뮬레이터라는 점에서 기존의 에뮬레이터와 차별화된다. 1983년 미국 MS와 일본 아스키가 PC의 호환성을 목표로 제작한 8비트 퍼스컴의 통일규격인 MSX (MicroSoft eXtended)의 게임을 모두 지원하며 MSX와 흡사한 사운드를 들려준다.[5]
  • ePSXe
  1. 분류 : PS1 에뮬레이터
  2. 대표타이틀 : 메탈기어 솔리드
  3. CD 혹은 CD 이미지를 이용해 소니의 PS1 게임을 거의 완벽에 가깝게 재현한 에뮬레이터. 가상 CD를 이용해 실행되는 만큼 가상 CD프로그램인 데몬이나 LCD프로그램과 짝을 이뤄 사용된다. 복잡한 인터페이스가 단점이다.[5]
  • 프로젝트64(Project64)
  1. 분류 : 닌텐도64 에뮬레이터
  2. 대표타이틀 : 젤다의 전설
  3. 64비트 가정용 게임기인 닌텐도64 전용 에뮬레이터.CD롬 방식 채택한 소니의 PS1이나 세가의 세턴과는 달리 롬 카트리지 방식을 사용, 기존 에뮬레이터와 같은 방식인 만큼 초기부터 높은 완성도를 선보였다.[5]

에뮬레이션과 시뮬레이션의 차이점

에뮬레이션과 시뮬레이션(simulation)은 모두 어떤 시스템의 일부 또는 전체를 흉내 낸다는 공통점이 있지만 시뮬레이션은 몇 가지 특성을 주고, 거기에 대한 결과를 산출해보는 것이고, 에뮬레이션은 완전 똑같은 방법으로 다른 대상을 하드웨어 동작까지도 흉내 내는 것을 말한다.[3] 예들 들어, 게임 중에 시뮬레이션 게임들이 있다. 그 시뮬레이션 게임들은 실제 상황을 시뮬레이션 해서 만드는 것이다. 즉, 실제와 완전히 똑같을 필요까지는 없고 시뮬레이션하는 대상이 지니는 주요 특성만을 재현해주면 되는 것이다. 비행 시뮬레이션 이라면 하늘을 나는 것처럼 3D표현으로 화면에 보여주고 하늘을 나는 것처럼 조작할 수 있게 해주면 되는 것이다. 물론 실험용 시뮬레이션이라면 바람이나 기후에 의한 영향이라던지 기체의 상태에 의한 영향 같이 더 자세한 특성들을 재현해줘야 하는 것이지만 그렇다고 해서 모든 것, 즉 화면 모습의 텍스쳐를 실제 현실처럼 자세하게 재현할 필요까지는 없다. 심지어는 어떠한 시뮬레이션의 경우는 단순히 그 상황에 대한 관측 수치만 제공하는 경우도 있다. 그에 반해 에뮬레이터는 재현하고자 하는 대상을 완벽하게 재현하는 것이 목표이다. 어떠한 PDA를 에뮬레이션하려고 한다면 PDA에 사용된 cpu가 처리할 수 있는 명령어들을 그대로 처리할 수 있는 가상의 cpu를 구현해야 하고 PDA에 사용된 디스플레이와 같은 해상도에서 PDA와 동일한 성능으로 PDA에서 돌아가는 프로그램을 사용할 수 있어야 한다. 간단히 말하자면 에뮬레이터는 어떠한 하드웨어를 소프트웨어 적으로 재구현하는 것이다. 그리고 그 설명에서는 "시뮬레이터는 하드웨어도 포함할 수도 있지만, 에뮬레이터는 소프트웨어적으로만 구현하는 것을 의미한다." 라고 이해하면 된다. 저 차이는 두가지를 완벽하게 구분하는데 사용하기는 힘든 특성이다. 즉, 시뮬레이션은 소프트웨어적, 하드웨어적, 혹은 소프트웨어 + 하드웨어 등을 동시에 사용하여 어떠한 상황에 대한 자세한 데이터를 수집하거나 보여주는 것이 목적이고, 에뮬레이션은 어떠한 하드웨어를 소프트웨어적으로 구현하여 대상 하드웨어를 사용하는 것과 동일하게 사용하는 것이 목적이라고 할 수 있다.[6]

에뮬레이션과 가상화의 차이점

에뮬레이션(Emulation)과 가상화(Virtualization)는 비슷한 점이 많지만 운영 상 차이점도 많다. 새로운 아키텍처에서 기존의 운영체제에 접근하려 한다면 에뮬레이션을 선호할 테지만, 반대로 가상화된 시스템은 기초 하드웨어와 독립적으로 작동한다. 짧게 말해, 에뮬레이션은 하나의 시스템이 다른 시스템을 흉내 내도록 하는 것이다. 예를 들어, 한 소프트웨어가 시스템 A에서는 구동하고 시스템 B에서는 구동하지 않을 때, 시스템 B에서 시스템 A의 동작을 "에뮬레이션"한다. 그러면 해당 소프트웨어는 시스템 A의 에뮬레이션에서 구동하게 된다. 이 때, 가상화에서는 시스템 A를 B와 C 두 개의 서버로 분리한다. 이 "가상" 서버들은 독립적인 소프트웨어 컨테이너(Container)로써, 자체적으로 CPU, RAM, 스토리지, 네트워킹소프트웨어 기반 자원에 접근할 수 있으며 독립적으로 재부팅도 가능하다. 이 둘은 정확히 실제 하드웨어처럼 작동하며, 애플리케이션 또는 다른 컴퓨터는 그 차이점을 인지하지 못한다. 이 각각의 기술은 저마다의 용도, 장점, 단점이 있다.[7]

  • 에뮬레이션: 에뮬레이션의 예에서 소프트웨어는 하드웨어를 대신해 하드웨어와 같은 방식으로 동작하는 환경을 구성한다. 이 때, 에뮬레이션 프로세스에 사이클을 할당함으로써 프로세서에 피해를 주는 대신에 사이클은 실행 연산으로 활용된다. 따라서 CPU 연산능력의 상당 부분을 이 환경을 구성하는데 사용하게 되는데, 흥미롭게도 사용자는 에뮬레이션 환경에서 가상 서버를 구동할 수 있다. 이렇게 에뮬레이션의 자원 낭비가 심한데도 불구하고 이를 고려해야 하는 이유는 여러가지 효율 높은 활용성 때문이다. 또한 에뮬레이션은 여러 시스템을 위한 소프트웨어를 설계할 때 유용하다. 코딩을 단일 머신에서 수행할 수 있으며 애플리케이션은 자체 창에서 동시에 실행되는 복수의 운영체제 에뮬레이션에서 구동할 수 있다.[7]
    • 다른 하드웨어용 운영체제 구동 (PC에서 맥(Mac) 소프트웨어 구동 또는 컴퓨터에 콘솔 기반 게임 구동)
    • 다른 운영체제용 소프트웨어 구동 (PC에서 맥 전용 소프트웨어 구동 또는 반대의 경우)
    • 호환 하드웨어가 없는 상태에서 레거시(Legacy) 소프트웨어 구동
  • 가상화: 가상화(Virtualization)의 경우, 물리적인 위치 또는 배치에 상관 없이 컴퓨팅 자원을 효율적이며 기능적인 방식으로 활용한다. 충분한 RAM과 스토리지를 갖춘 고성능 머신은 가상화로 각각 자원을 보유한 여러 대의 서버로 분리될 수 있다. 가상화를 사용하지 않으면 일반적으로 단일 서버로 배치되는 이런 단일 머신들은 각각 회사의 웹이나 이메일 서버를 호스팅할 수 있다. 따라서 기존에 충분히 활용하지 않던 컴퓨팅 자원을 적극적으로 활용할 수 있다. 이는 비용 절감에 크게 도움이 된다.에뮬레이션 환경은 하드웨어와 상호 작용하는 소프트웨어 브리지가 필요한 반면에 가상화는 하드웨어에 직접 접근한다. 단, 가상화는 전반적으로 속도가 빠르기는 하지만 이미 기본 하드웨어에서 구동할 수 있는 소프트웨어 구동으로 제한된다. 에뮬레이션과 가상화를 통해 기업은 대부분의 가상 시스템 기능을 수행할 수 있다. 두 서비스가 비슷하게 들리겠지만, 중요한 것은 '소프트웨어를 어떻게 활용하는가'이다. 소프트웨어를 더욱 빨리 실행하고 싶다면 가상화를 통해 게스트 코드를 CPU에서 직접 실행할 수 있다. 반대로, 에뮬레이터는 게스트 코드 자체를 구동하여 CPU를 다른 작업에 활용할 수 있다.[7]
    • 기존 x86 CPU 아키텍처와의 광범위한 호환성
    • 모든 하드웨어와 소프트웨어에 물리적인 장치로 표시
    • 인스턴스가 독립적으로 작동함

각주

  1. 1.0 1.1 에뮬레이션〉, 《네이버 지식백과》
  2. 에뮬레이션〉, 《네이버 지식백과》
  3. 3.0 3.1 3.2 시리즈,〈에뮬레이션과 시뮬레이션 차이〉, 《티스토리》, 2014-07-08
  4. 에뮬레이터〉, 《네이버 지식백과》
  5. 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 archanjels0, 〈에뮬레이터 종류 및 특징〉, 《네이버 블로그》, 2008-05-21
  6. Embedded Lab/linux, x86,〈에뮬레이터와 시뮬레이터의 차이〉, 《티스토리》, 2013-03-24
  7. 7.0 7.1 7.2 Data Scientist cinema4dr12,〈가상화 vs 에뮬레이션, 차이점은 대체 무엇일까?〉, 《티스토리》, 2014-04-27

참고자료

같이 보기


  검수요청.png검수요청.png 이 에뮬레이션 문서는 소프트웨어에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.