simulation(模拟器) 与 emulation(仿真器)的区别
simulation、emulation、模拟、仿真。这四个名词很容易混淆,刚弄明白,赶紧记下来。
首先,不谈模拟和仿真,先对simulation和emulation进行区分,这是因为这里两个英文单词的界线比两个中文名词的界线要清晰得多。
wiki中关于emulation的解释中提到:
An emulator duplicates (provides an |
wiki中关于simulation的解释中提到:
A simulator may imitate only a few of |
1965年的Communications of
ACM中有一篇论文叫"Emulation of Large
Systems",是一个叫Tucker的IBM工程师写的,他们用IBM360来emulate之前的IBM70xx系列机型,里面提到:
A new technique called emulation are |
从上面的资料可以看到,simulation和emulation的区别还是比较明显的。根据我的理解,simulation和emulation都是在制造一个“假象”,但是emulation比simulation要“假”得更完全。
simulation是模拟出原系统的一个抽象模型,而不需要真的去做真实系统要做的事情。因此它其实不具备真实系统的功能,只是当某一功能执行时,通常不必输出功能执行的结果,只是在simulator中记录下由此引发的状态变化。因此它通常用于设计初期的模型验证。
emulation则更进一步,要真正地去做所有真实系统能做的事情,只不过做的“过程”不同,它一般用于处理兼容性问题和在资源有限的条件下完成系统原型的实现。
如果把真实系统比作一个人的话,simulator就是这个人的一幅肖像画,而emulator则是这个人的一个克隆人
举个例子,我们要实现一个p2p文件分发系统。
最开始的时候我们可以实现一个simulator:它用一个函数来模拟节点间的通信,这个函数的输入是网络性能(带宽,跳数...),输出是通信时延————注意,并没有真正的数据在传输和拷贝,甚至都没有真正的节点,我们只是模拟了通信时延这个“特征(feature)”。
接下来,我们把这个分发系统实现了,编译成一个exe文件,但这时我们发现我们没有足够多的计算机来组成一个真实的、具有足够规模的网络来进一步测试(通常p2p网络的节点数成百上千),这时,我们可以写一个emulator:它可以区分同一个计算机上的不同进程,因此我们可以在一台计算机上开100个进程,这样可以用100台计算机模拟出10000台计算机的网络————注意,此时数据真的是通过Socket在传输,只不过有的数据走的是loopback口,并没有真的进网卡。
有一种流行的说法是,simulation是用软件实现,emulation要涉及到硬件实现的部分。这个区分很简单明了,在很多情况下也是适用的(包括上面举的p2p分发系统的例子)。但是这种说法只是对于大多数情况的一种归纳性解释,因此在某些情况下就无法区分二者了。比如,这种解释无法区分Operating
System Emulator和Operating System Simulator————这个时候二者都不涉及硬件,这是因为真实系统(Operating
System)本身就不涉及硬件。
再说说“模拟”与“仿真”。首先,即使在正式场合下(如论文标题),{模拟,仿真}和{simulation,emulation}这两个集合并不是一一映射的。你可以看到"模拟-simulation"的组合,也可以看到"仿真-simulation"的组合。显然,这个不一致现象是由于同时存在两种一一映射造成的。这个问题不是说理能解决的,还得随着使用次数越来越大,看大多数人的习惯。个人感觉,simulation翻译成“模拟”,而emulation翻译成“仿真”的情况多一些。
最后,提一下“虚拟”这个概念。这个概念最近火的不行,英文名叫virtualization。我还没有仔细调查它和前两个概念的细微差别,但是可以肯定的是,virtualization和emulation比较相似,和simulation不是一回事。其他的,以后查到再补进来吧。
文章出处: http://blogold.chinaunix.net/u1/45052/showart_472785.html
simulation(模拟器) 与 emulation(仿真器)的区别相关推荐
- 仿真器(emulator)和模拟器(simulator)的区别
仿真器(emulator)和模拟器(simulator)是比较容易混淆的概念,这两个概念不仅针对计算机体系结构,在很多方面都有所应用,例如航空模拟器.街机仿真器等. 模拟器(simulator)是用于 ...
- 模拟(Simulation)与仿真(Emulation)的区别
根据国际标准化组织(ISO)标准中得<数据处理词汇>部分的名次解释,"模拟"(Simulation)与"仿真"(Emulation)两词含义分别为: ...
- 仿真(simulation)与模拟(emulation)的区别
首先,我们不应该太在意这两个词的中文翻译,因为都可以. 仿真(simulation)是对现实变幻的模仿,比如产生仿真报文的过程,过程是真的,但输入是假的. 而模拟(emulation),输入是真的,过 ...
- JTAG、JLink、ULINK、ST-LINK仿真器区别
首先要了解一下JTAG. JTAG协议 JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试.现在多数 ...
- DSP仿真器510和560区别
我用过510,对于560只知道功能比510强大许多,具体却没有深究过.看了你的问题后,特意搜了下,找到一篇解释的很详细的,转贴到这里,让大家共享. 1. 实时调试工具和传统仿真器的区别?http:// ...
- 《硬件仿真(Emulation)EDA工具前端设计流程》
硬件仿真(Emulation)EDA工具设计流程总结,仅介绍必要设计步骤,具体详细步骤由于公司机密,暂不详细说明. 文章目录 前言 1. Emulation 1.1 什么是Emulation 1.2 ...
- 科普:原型验证系统VS硬件仿真器,哪一个更好?
总有小伙伴问我:"原型验证系统和硬件仿真器,哪一个更好?" 为什么会有这样的选择困难呢?实在是现在的芯片规模太大.太复杂了. 随着AI.5G等新技术的不断推进,&qu ...
- iOS 11开发教程(四)iOS11模拟器介绍一
iOS11模拟器介绍 在图1.6或者1.7中所看到的类似于手机的模型就是iOS模拟器.iOS模拟器是在没有iPhone或iPad设备时,对程序进行检测的设备.iOS模拟器可以模仿真实的iPhone或i ...
- iOS 9应用开发教程之创建iOS 9项目与模拟器介绍
iOS 9应用开发教程之创建iOS 9项目与模拟器介绍 编写第一个iOS 9应用 本节将以一个iOS 9应用程序为例,为开发者讲解如何使用Xcode 7.0去创建项目,以及iOS模拟器的一些功能.编辑 ...
最新文章
- 发现的bug不能重现怎么办?
- twig 调用php函数,twig里使用js变量的方法
- cmd指令大全指令_干货 | Linux 超全实用指令大全
- Python串行运算、并行运算、多线程、多进程对比实验
- 研究电子计算机的想法,电子计算机发明于哪一年 1946年在美国问世(为研制导弹而生)...
- 《1万小时成功定律——解构成功》
- 【重点EI会议推荐】机器学习主题方向论文征稿:2021计算机、物联网与控制工程国际学术会议(CITCE 2021)...
- 测试手机信号格数软件,超详细教程之教你如何查询手机信号的强度
- UI-- Empty Application 新建空工程
- How to resolve error message Malformed URI literal syntax
- 分布式开放消息系统 ( RocketMQ ) 的原理与实践
- 测试Word2013发布博客
- SpringBoot学习(三)
- 使用JAVA实现语音朗读一段文本
- 各种通信接口的简单对比
- U盘启动 WinPE系统维护工具 任意安装GHO/WIM/ESD系统映像 无广告专业版
- 苹果Mac电脑文件夹路径怎么看?“访达”也能显示文件路径
- pe系统 服务器维护,FirPE 维护系统
- 【福利】小程序开发资源干货汇总
- NF-ResNet:去掉BN归一化,值得细读的网络信号分析 | ICLR 2021
热门文章
- 个股期权交易系统为什么和私密机构紧密相连?
- php免费翻译接口,免费的翻译接口用不起不要太爽啊!
- doug lea java并发_Doug Lea
- message函数php,ReplyMessage()函数
- 安卓屏幕朗读app_推荐5个让人心动的学习App
- Docker 创建 Bamboo6.7.1 以及与 Crowd3.3.2 实现 SSO 单点登录
- 每天学一点英文:Espresso 20210818
- 阿里董事局主席张勇:数字化建设将成为新发展方向
- python UI自动化知识点总结
- mxreality.js 免费开源的全景图/全景视频/VR 直播播放器介绍