模拟器还是模拟器?有什么区别?


522

虽然我了解模拟和仿真的一般含义,但我几乎总是对它们感到困惑。假设我创建了一个模仿现有硬件/软件的软件,我应该怎么称呼它?模拟器还是模拟器?

谁能解释一下编程方面的区别?

奖励:这两个术语之间的英语区别是什么?(对不起,我不是母语人士:))


3
在移动应用程序开发中,iPhone具有模拟器,而Android具有模拟器。这里更多- stackoverflow.com/questions/4544588/...
毗湿奴Haridas

1
我发现Wikipedia对此信息有帮助:en.wikipedia.org/wiki/Emulator#Emulation_versus_simulation
AmigoNico

这也可以解释这是有帮助的: programmers.stackexchange.com/questions/134746/...
哈坎Fıstık

Answers:


462

仿真是模仿外部可观察到的行为以匹配现有目标的过程。仿真机制的内部状态不必准确反映它正在仿真的目标的内部状态。

另一方面,模拟涉及对目标的基础状态进行建模。良好仿真的最终结果是,仿真模型将仿真所仿真的目标。

理想情况下,您应该能够查看模拟并观察到的属性,如果您查看原始目标,这些属性也将看到。在实践中,出于性能原因,可能会有一些捷径可以进行仿真-也就是说,仿真的某些内部方面实际上可能是仿真。

MAME是一款街机游戏模拟器;Hyperterm是一个(不是很好)的终端模拟器。无需对街机或终端进行详细建模即可获得所需的仿真行为。

Flight Simulator是一个模拟器;SPICE是电子模拟器。他们尽可能地对目标的每个细节进行建模,以表示目标在现实中的行为。

编辑:其他答复指出,仿真的目的是能够替代它正在仿真的对象。这很重要。模拟的重点更多地放在目标内部状态的建模上,并且模拟不一定会导致仿真。特别是,模拟可能比实时运行慢得多。例如,SPICE不能代替实际的电子电路(即使假设存在某种神奇的设备也可以完美地将电路连接到SPICE仿真。)仿真仿真并不总是会导致仿真-


33
根据这个定义,因此不可能在软件中模拟现实世界吗?我认为我们无法准确地表示现实世界的基本状态-暂时仅模拟可观察的属性。
多夫(Dolph)2010年

8
我不同意这种“ [模拟]模型尽可能多地描述目标的每个细节,以表示目标在现实中所做的事情”。仿真具有基于仿真目的的足够详细的目标系统模型。例如,Flight Simulator可能不会对海中的鱼类建模,因为它对模拟没有用。
Hamdi


3
似乎大多数人都以相反的方式使用这些单词,例如:仿真通常比仿真处于更高的级别(尽管在给定的上下文中两个单词很少一起使用)。例如,参见Android模拟器与Apple模拟器。我建议在此答案中切换词语以与大多数定义保持一致,并避免对未来的访问者造成混淆。
飞行员

1
我认为这个答案切换了两个词。所有其他来源将其解释为:模拟=重复行为;仿真=重复的内部工作原理。这导致以下结论:它们都使主观术语变得异常。
metalim

350

如果飞行模拟器可以将您从A运送到B,那么它将是飞行模拟器。

模拟器可以代替原始 实际使用。
虚拟PC模仿PC。

模拟器是用于研究和分析的模型。

仿真器将始终必须接近实时运行。对于模拟器,情况并非总是如此。地质模拟可能达到1000年/秒或更长时间。


6
@Henk您的“座舱”示例很棒,尽管在阅读Toybuilder的答案后我理解了它。谢谢:)
AraK

1
Virtual PC 不会仿真,而是进行虚拟化。另一方面,QEmu 确实可以模仿。在两种情况下,名称都应为提示。
约尔格W¯¯米塔格

24
我认为可以肯定地说Virtual PC可以模拟PC。它是如何通过虚拟化来模拟PC的,但这更多的是实现细节。你可能会说,硬件虚拟化是仿真的超集,在可提供加速支持的CPU,专用的硬件设备访问,等等
利B

等等,虚拟PC不能提供真实PC的1:1副本吗?(我的意思是,一般而言,系统虚拟化不仅应模拟外部行为,而且应模拟系统的每个角落,与不重新创建网络堆栈的应用程序虚拟化不同)。
卡米洛·马丁

1
我在哪里可以找到上述飞行模拟器?
杰里·道奇

175

模拟=用于分析研究

仿真=用作替代品

模拟器是一种可以建模的环境,而模拟器是一种可以复制原始设备或系统上的用法的环境。

模拟器模拟其正在模拟的活动。它“出现”(取决于上下文,很多“出现”都可以)与被模拟的对象相同。例如,飞行模拟器“看上去”是对用户的真实飞行,尽管它不会将您从一个地方运送到另一个地方。

另一方面,仿真器实际上是“ 被仿真的事情,并且这样做也“ 看起来是在做同样的事情 ”。仿真器可以使用不同的协议集来模仿被仿真的事物,但是结果/结果始终与原始对象相同。例如,EMU8086在您的计算机上模拟了8086微处理器,该微处理器显然没有在8086上运行(= 不同的协议),但是它提供的输出才是真正的8086所提供的。


9
我见过的最清晰的答案。对我来说,只能通过省略多余的句子或将其整合到您的出色对比定义中来加以改进:-D
doughgle 2013年

40

重点不同。仿真器1专注于重新创建系统的行为,而不考虑系统内部的功能。模拟器2专注于对系统组件进行建模。当您最关心系统的工作时,可以使用模拟器,而当您关心系统的工作时,则可以使用模拟器。

至于它们的一般英语含义,模拟是“力求在品质或行为上等同于或超越他人”,而模拟是“ 模拟,复制,复制其行为,外观或特性”。没有太大的区别。模拟来自æmulus(“努力,竞争”),并且与“模仿”和“图像”有关,这暗示了表面杠杆的相似性。“模拟”来自similis “喜欢”一样,这或许意味着更深的一致性单词“类似,”。

参考文献:

  1. 维基百科:模拟器
  2. 维基百科:计算机仿真
  3. 维基百科:仿真
  4. 维基百科:模拟
  5. 在线词源:仿真
  6. 在线词源:模拟

您的答案与众不同。根据您的要求,Virtual PC是模拟器还是模拟器?
麦克尔迈耶

@MikaëlMayer:许多答案与其他答案不同,只有一些相似。我认为我的答案与Toybuilder和cdiggens的答案相同(因为它们的分类方式相同),并且与Jörg的答案兼容。这仅与Pontus和Aeolai的相反。
outis

@MikaëlMayerVirtual PC是一个模拟器。它可以完成真实PC可以执行的所有操作。
用户

1
@Pri请参阅有关Virtual PC的该线程的答案。两者都取决于视角。例如,您仍然可以说这是一个模拟,因为它无法像真实计算机一样发热。
麦克尔迈耶

感谢您回来@MikaëlMayer,但老实说,有时候我们实际上无法区分系统是模拟器还是模拟器。一系列的辩论开始了。希望我是对的!很少有人会根据用法,英语含义,功能性和可负担性得出差异。但是,当我在案例研究中应用所有答案时,这并不是一件容易的事
用户

19

我认为仿真器和仿真器无法比拟。两者都模仿某些东西,但不是同一推理范围的一部分,它们不在同一上下文中使用。

简而言之:仿真器旨在复制原始功能,甚至可以在实际环境中替换原始功能。模拟器并非旨在复制原件的功能,而仅仅是为了看起来与原件相似。如果没有原始功能,模拟器将无法在实际环境中替换它。

一个仿真器是一种装置,模仿的东西足够接近,以便它可以替代真实的东西。例如,您希望电路像ROM(只读存储器)电路一样工作,但还希望调整内容直到您想要的内容为止。您将使用ROM模拟器,这是一个黑匣子(可能基于CPU),其物理和电气接口与您要模拟的ROM兼容。仿真器将代替真正的ROM插入设备。主板在工作时不会有任何区别,但是您可以轻松更改仿真ROM的内容。换句话说,仿真器将在其主板环境中与实际情况完全一样(由于实际内部模型可能会稍慢一些),但是在主板环境之外,还有其他功能(如重写)仅对设计人员可见。因此,模拟器的定义是:模仿原始内容的东西,具有所有功能,

一个模拟器在另一个思维环境中使用,如飞机模拟器,汽车模拟器等模拟将只需要的实际事情的某一方面,通常是那些涉及到照顾一个人如何感知和控制它。模拟器将不会执行真实物品的功能,因此无法将其设置为真实物品。飞机模拟器不会飞行或不会载人,这根本不是目的。该模拟器并非旨在工作,而是在飞行员看来某种类似于实际事物的目的,而不是出于其正常目的,例如,允许进行地面训练(包括在异常情况下,例如全引擎故障)。因此,模拟器的定义是:某些东西在人类看来可以扩展到某种程度,就像原始的一样,但是不能代替它进行实际使用。另外,飞行员将知道模拟器是模拟器。

我认为我们不会看到任何ROM仿真器,因为ROM不会与人互动,也不会看到任何平面仿真器,因为在现实世界中飞机无法替代它们执行相同的功能。

在我看来,仿真器或仿真器中的模型可以是任何东西,并且不必与原始模型相似。ROM仿真器模型可能是软件而不是硬件,MS Flight Simulator不能是比它更多的软件。

这两个术语的比较将与当前选择的答案(来自Toybuilder)相矛盾,后者使内部模型有所不同,而我的建议是,区别在于伪造品是否可以在现实世界中用于执行实际功能(确实可以接受)。

请注意,飞机模拟器还必须模拟不属于飞机的一部分的地球,太阳,风等,因此飞机模拟器将必须模拟飞机的某些方面以及飞机的环境。飞机,因为它不在实际环境中使用,而是在训练室中使用。

这与仅模拟原始字符的模拟器有很大的不同,其目的是在原始文件的环境中使用,而无需对其进行模拟。回到飞机环境中...飞机模拟器是什么?也许一列火车将连接两个机场-实际上是两个飞机台阶-载有乘客,机上有空姐,汽车内部看起来像一个实际的飞机舱,机长说:“女士们,先生们,我们的海拔高度是10公里,温度在我们的目的地是24°C”。它的好处很难看,哼...

总而言之,模拟器是旨在工作的真实事物,模拟器是旨在欺骗用户的假货。


1
短语“ ROM模拟器”使我想起了虚拟视频游戏机。
Joe Z.

11

简单的解释。

如果要将PC(运行Windows)转换为Mac,可以执行以下任一操作:

(1)您可以简单地在Windows上安装Mac主题。因此,您的PC感觉更像Mac,但实际上无法运行任何Mac程序。(SIMULATION)

(要么)

(2)您可以将PC编程为像Mac一样运行(我不确定是否可以:P)。现在,您甚至可以成功运行Mac程序,并期望获得与Mac上相同的输出。(EMULATION)

在第一种情况下,您可以体验Mac,但不能期望与Mac上的输出相同。
在第二种情况下,您可以期望获得与Mac上相同的输出,但事实仍然是它只是一台PC。


3
这既简单又完全错误。(2)接近仿真,但(1)既不是仿真也不是仿真。
尼克·巴斯汀

10

要了解模拟器与模拟器之间的区别,请记住,模拟器试图模仿真实设备的行为。例如,对于iOS模拟器,它可以模拟实际iPhone / iPad设备的真实行为。但是,模拟器本身使用Mac上安装的各种库(例如QuickTime)执行渲染,因此效果与实际的iPhone相同。此外,在Simulator上测试的应用程序被编译为x86代码,这是Simulator可以理解的字节代码。相反,真正的iPhone设备使用基于ARM的代码。

相反,仿真器可模拟真实设备的工作。在仿真器上测试的应用程序被编译为实际设备使用的实际字节码。仿真器通过将字节代码转换为可以由运行仿真器的主机执行的形式来执行应用程序。

要了解模拟和仿真之间的细微差别,请想象您试图说服孩子使用刀子是危险的。为了模拟这一点,您假装用刀割伤自己,痛苦地吟。为了模拟这一点,您实际上切开了自己。


7
孩子们不要在家尝试:D
Gearoid Murphy 2012年

9

仿真器是系统的模型,它将接受仿真系统将接受的任何有效输入,并产生相同的输出或结果。因此,仅当软件精确地再现了仿真系统的行为时,您的软件才是仿真器。


谢谢。我认为这是仿真的非常精确的定义。因此,例如Wine是一个模拟器,因为它不一定提供Windows中定义的相同精确输出?
AraK

6
在尝试将WINE插入仿真器或仿真器中的一个或多个时要小心。WINE是一个兼容性层,它使一个系统中的二进制文件在另一系统的二进制API层上运行。您可能将其称为适配器。我想模拟器也不是理解它的一种好方法,但是它并没有比模拟器更紧密。
李B

在这个范围内,WINE是仿真的。它具有链接Windows二进制文件的外观,但是如果您查看内部结构,则不会学到任何有关Windows的知识。
尼克·巴斯汀

9

几年前,我想出了一条很短的格言,我相信,它很好地抓住了这种差异的本质:

模拟器是执行任务的模拟器。

我的意思是说,当您不能使用真实物品时,您可以使用一个模拟器;当您不能使用真实物品时,您可以使用一个模拟器,而您想从中找到一些东西


8

用或多或少的普通话来说:如果您的软件可以完成模拟系统可以做的所有事情,那么它就是一个模拟器。如果它仅近似系统结果(IT或其他),则它是模拟器。


5

模拟器:类似于解释器。即它实际上逐行执行真实代码以模仿行为

模拟器:类似于可执行文件。即它需要编译的代码并执行它。


4

仿真器是实际系统的替代方法,但模拟器用于优化,理解和估算实际系统。


3

这两个术语之间的区别有点模糊。来自“ Emulators”是允许您调试嵌入式系统的硬件的世界。记住那些使您具有ICE(在线仿真)功能来调试PC平台的产品,我发现“仿真”一词的使用在某种程度上误称了模拟硬件行为的软件。

我对该术语的当前使用的理由是仿真,它是它可以“增强”功能,并且仅与系统行为的“合理”近似有关。

ICE :(在线仿真中)代替实际处理器插入板中的硬件。它使您可以像运行实际处理器一样运行系统。通常,它们具有处理器的一种变体,可以实际使用胶合逻辑执行软件,以允许用户在硬件控制下中断执行和执行单步操作。有些还可以提供日志记录功能。大多数现代处理器开发系统已经用JTAG仿真代替了ICE类型的仿真,在JTAG仿真中,JTAG只是通过专用串行链接与处理器通信,所有执行都由板上安装的处理器执行。

软件仿真器:0x86仿真器仅与能够执行0x86汇编语言有关,而不能提供SPECIFIC 0x86处理器的每个周期的准确行为模型。博克斯就是一个例子。QEMU可以做到这一点,但也可以使用特殊的内核模块进行“虚拟化”。

仿真器:德州仪器(TI)为软件开发提供了该处理器的周期精确行为模型,旨在准确模拟特定处理器内核的性能,供开发人员在拥有可用硬件之前使用。

软件EMULATOR增强功能:BLEEM不仅允许您运行Playstation软件,而且允许以比Playstation能够提供的分辨率更高的分辨率输出显示,还利用了可用的GPU的更高级功能。(即更好地融合和平滑纹理。)


3

两者都是对象的模型,您可以通过某些方法控制输入和观察输出。

关键区别在于:

  • 使用emulator,您希望输出要模拟的对象完全匹配
  • 使用模拟器,您希望输出的某些属性与对象将产生的属性相似

让我举个例子-假设您要进行一些系统测试,以了解向系统中添加新传感器(例如温度计)将如何影响系统。您知道温度计每秒8次发送一条包含其测量值的消息。

模拟-如果您还没有温度计,但要测试此消息速率是否不会使系统过载,则可以通过连接每秒发送8次随机数的单元来模拟传感器。您可以运行任何不依赖于传感器发送的实际值的测试。

仿真-假设您有一个非常昂贵的温度计,可测量到0.001 C,并且您想看看是否可以买到便宜的温度计,它只能测量到最接近的0.5 C.您可以使用一个昂贵的温度计来模拟便宜的温度计然后将读数四舍五入到最接近的0.5 C,并根据温度值运行测试。

注意,模拟也可以用于预测或预测行为。有限元分析模拟被用于许多应用中,包括天气预报和虚拟风洞。

术语的定义:

  • 仿真-超过或完全匹配
  • 模拟-模仿外观或角色

注意-这与已被标记为该问题的重复项的问题的答案非常相似(stackoverflow.com/questions/2174638/…)。我确实添加了术语的定义(在问题中提出但尚未回答),并且还添加了一些有关模拟用途(有限元分析)的信息,其用途不只是模仿设备。
杰伊·埃尔斯顿

2

看看历史实践,也许可以最好地回答这个问题。

过去,我曾在PC上看到过适用于PlayStation和SEGA的游戏机模拟器。

在指代试图模仿现实生活中的动作(例如驾驶或飞行)的软件时,模拟器是司空见惯的。Gran Turismo和Microsoft Flight Simulator是模拟器的经典示例。

至于语言上的差异,模仿通常是指复制某人(或某物)值得称赞的特征或行为的行为。模仿不同于模仿,模仿是为了模仿而复制一个人。

动词“模拟”的语言含义实质上是假装或模仿某人或某物。


2

在计算机科学中,模拟和仿真从原始输入产生的输出与原始系统相同;但是,仿真也使用相同的过程来实现,并且由相同的材料制成。模拟使用与原始系统不同的过程。另外值得注意的是复制一词,它是两者的中间产物-使用相同的过程,但由不同的材料制成。

因此,如果要在PC上运行旧的《超级马里奥兄弟》游戏,请使用SNES 模拟器,因为它使用相同或相似的计算机代码(进程)来运行游戏,并且使用相同或相似的材料(硅芯片) 。但是,如果要在PC上驾驶Boeing 747喷气式飞机,请使用飞行模拟器,因为它使用的过程与原始飞行器完全不同(不涉及实际机翼,升力或空气动力学!)。

以下是计算机科学词汇表中的确切定义:

仿真是系统的模型,可捕获系统输入和输出之间的功能连接,但不一定基于与系统本身相同或相似的过程。

复制是系统的模型,该模型捕获系统的输入和输出之间的功能连接,并基于与系统本身的过程相同或相似的过程。

仿真是某些系统的模型,该模型基于与该系统相同或相似的过程捕获该系统的输入和输出之间的功能连接,并且该过程由与该系统相同的材料构成。

参考:开放大学,M366术语表1.1,2007年


2

模拟是一个行为其他类似的系统,但是以完全不同的方式实现。它提供了系统的基本行为,但不一定遵守所模拟系统的所有规则。它可以让您了解某些事物的工作原理。

仿真是一个行为完全相同的系统,并遵守被仿真系统的所有规则。它实际上是对另一个系统的完整复制,它与模拟系统的输入和输出二进制兼容,但在与原始模拟系统环境不同的环境中运行。规则是固定的,不能更改,否则系统将失败。


2

词语的定义最好地描述了差异。谷歌搜索给出了模拟和仿真的以下定义:

模拟 模仿的外观或性格。

模拟 比赛或超越(一个人或一个成就),通常是模仿。

模拟模仿系统。仿真可以很好地模拟系统,以至于可以替代甚至超越它。

在计算中,仿真将取代它正在仿真的系统。通常,它甚至会胜过它所模仿的系统。例如,游戏机模拟器通常会进行改进,例如增强硬件兼容性,改善性能并改善音频/视频质量。

另一方面,仿真受模型限制。它们是模仿系统的最佳尝试,但不能替代它。有硬件仿真器,因为可以模仿硬件,很难区分两者之间的区别。没有耕作模拟器,因为没有可以替代实际耕作的模仿。我们只能模拟一种耕作模型,以了解如何更好地耕种。


1

虚拟PC试图从Programmer BUT 的角度模拟计算机,同时,从电气工程师的角度模拟计算机。


0

仿真器:

考虑一个您只会英语并且您在中国的情况。为了与中国人互动,您需要翻译。现在,翻译器的作用是它将以英语寻求您的输入并将其转换为中文,然后将该输入提供给中国人,并得到中国人的回应,并转换为英语并将输出以英语提供给您。现在,翻译和中国人是模拟器。两种组合都将提供类似的功能,就像您与英国人交流一样。因此硬件可能不同,但功能将相同。

模拟器:

我不能提供比SPICE或Flight Simulator更好的示例。两者都将用与硬件相似的软件或数学模型代替硬件组件的行为。

最后,取决于上下文,哪种解决方案更适合项目需求。


0

SimulatorEmulator更为广泛,似乎在以上文章中都过分考虑了该术语的对偶性。

仿真器

人们开始以直接的方式替换现有系统的某些硬件部分时,决定在“计算机世界”中使用新的词模拟 -模仿他们的行为并依靠计算性质来确保不会破坏某些内容并将所有内容留在计算机中等效状态。因此,我们模拟了这一部分!(并且整个过程仍然像以前一样)

仿真器通常在狭义上用于数字领域,作为以前已知和存在的东西(虚拟芯片,电路板,电子设备)的替换和虚拟化(以数字形式作为软件呈现)。因此,当世界变得更加数字化并将仿真器词带给大众时,大众为它增加了不确定性(或其他原因)。

仿真器

首先,我看到了许多关于模拟器的评论,这些评论确实或代替了真实的东西,但模拟器却没有。

但是,飞行模拟器用于真实物体-它可以训练飞行员,提高他们的技能和知识,并且可以代替昂贵的真实飞机并节省大量资金。我们不能只说一个平面仿真器,因为我们有一种内在的感觉,那就是它不止于此,因此我们称之为模拟器:)平面模拟器可以包含真实的仿真雷达或应答器。

相反,使用模拟器进行分析和研究(使用模拟器进行真实的研究),但是 分析和研究的真实性不比仿真GSM板低(在我们生活的信息时代甚至更多)。分析为企业增加了价值,削减了成本或指出了不少于已更换(模拟)硬件的利润。

Simulator类似于对由于某种原因(成本,技术,物理上的不可能)而无法获得的某些事物进行建模的模型。通常针对市场,天气,燃烧,用户等我们不熟悉的新事物,无形事物或复杂事物进行模拟。因此,出现了飞行,黑洞,证券交易所,模拟。

所以最后:

  1. 模拟器比模拟器更广泛
  2. 模拟器通常倾向于模仿/建模更多的全局过程/事物,具有缩小模仿范围的能力(例如,具有代表某些已知模型的预设的电容器模拟器)
  3. 仿真器倾向于模仿具有特定规格,已知特性和属性的某些硬件设备(例如SNES仿真器,Intel 8087或Roland TB-303)

至于单词的起源

全部来自拉丁语,意思是:

  • 模仿是“平等的”(看起来更具攻击性和直接性-竞争)
  • 模拟是“相似”(看起来更狡猾和棘手-模仿)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.