虽然我理解模拟和模拟的一般含义,但我几乎总是对它们感到困惑。假设我创建了一个模仿现有硬件/软件的软件,我应该如何称呼它?模拟器还是模拟器?
有人能从编程的角度来解释一下吗?
福利:这两个词在英语中有什么区别?(对不起,我的母语不是英语:))
虽然我理解模拟和模拟的一般含义,但我几乎总是对它们感到困惑。假设我创建了一个模仿现有硬件/软件的软件,我应该如何称呼它?模拟器还是模拟器?
有人能从编程的角度来解释一下吗?
福利:这两个词在英语中有什么区别?(对不起,我的母语不是英语:))
当前回答
模拟器是真实系统的替代品,但模拟器用于优化、理解和估计真实系统。
其他回答
模拟=用于分析和研究
模拟=作为替代品使用
模拟器是模拟环境,而模拟器是复制原始设备或系统上的使用情况的环境。
模拟器模拟它所模拟的事物的活动。它“看起来”(根据上下文,很多人都可以用这个“看起来”)与被模拟的事物相同。例如,对用户来说,飞行模拟器“看起来”是一次真实的飞行,尽管它并不能将你从一个地方运送到另一个地方。
另一方面,模拟器实际上“做”被模拟的事情,在这样做的时候,它也“看起来在做同样的事情”。仿真器可以使用不同的协议集来模拟被仿真的对象,但结果/结果总是与原始对象相同。例如,EMU8086模拟计算机上的8086微处理器,显然它不是在8086上运行的(=不同的协议),但它给出的输出是真正的8086所给出的。
几年前,我想出了一个非常简短的格言,我相信,它很好地抓住了差异的本质:
模拟器是执行任务的模拟器。
我的意思是,当你不能使用真正的东西时,你可以使用模拟器,当你不能使用真正的东西时,你可以使用模拟器,当你想找到一些关于它的东西时。
模拟器是真实系统的替代品,但模拟器用于优化、理解和估计真实系统。
在计算机科学中,模拟和仿真都从相同的输入产生与原始系统相同的输出;但是,仿真也使用相同的过程来实现它,并且由相同的材料制成。模拟使用与原始系统不同的进程。同样值得注意的是术语复制,它是两者的中间——使用相同的过程,但由不同的材料制成。
所以如果我想在我的PC上运行我的旧《超级马里奥兄弟》游戏,我会使用SNES模拟器,因为它使用相同或类似的计算机代码(进程)来运行游戏,并使用相同或类似的材料(硅芯片)。 然而,如果我想在我的个人电脑上驾驶波音747喷气式飞机,我会使用飞行模拟器,因为它使用的过程与原来的完全不同(没有实际的机翼、升力或空气动力学!)。
以下是摘自计算机科学术语表的准确定义:
模拟是一种系统模型,它捕捉了系统输入和输出之间的功能连接,但不一定基于与系统本身相同或相似的过程。
复制是一种系统模型,它捕获系统输入和输出之间的功能连接,并基于与系统本身相同或相似的过程。
仿真是某种系统的模型,它捕获系统输入和输出之间的功能连接,基于与该系统相同或类似的过程,并且由与该系统相同的材料构建。
参考文献:The Open University, M366 Glossary 1.1, 2007
这两个术语之间的区别有点模糊。来自一个“模拟器”是允许您调试嵌入式系统的硬件的世界。记住那些允许你拥有ICE (In Circuit Emulation)功能来调试PC平台的产品,我发现术语“仿真”的使用对于模拟一块硬件行为的软件来说有点不恰当。
我对当前使用“仿真”一词的理由是,它可以“增强”功能,并且只与系统行为的“合理”近似有关。
ICE: (In Circuit Emulation) A piece of hardware that is plugged into a board in place of the actual processor. It allows you to run the system as if the actual processor was present. Typically these have a variant of the processor on them to actually execute the software with glue logic to allow the user to break executation and single step under hardware control. Some would also provide logging capability. Most modern processors development systems have replace ICE type emulation with JTAG Emulation, where the JTAG just talks to the processor via a special purpose serial link and all execution is perform by the processor mounted on the board.
软件模拟器: 0x86仿真器只关心是否能够执行0x86汇编语言,而不提供特定0x86处理器的精确的每周期行为模型。Bochs就是一个例子。QEMU做到了这一点,但也允许使用特殊的内核模块进行“虚拟化”。
模拟器: 德州仪器为软件开发提供了一个处理器的CYCLE ACCURATE行为模型,该模型旨在精确模拟特定处理器核心的行为,供开发人员在拥有工作硬件之前使用。
软件模拟器增强功能: BLEEM不仅允许你运行Playstation软件,还允许显示器输出比Playstation能够提供的分辨率更高的分辨率,并且还利用了可用的gpu的更高级功能。(即更好的混合和平滑纹理。)