xiaosha921的个人空间 https://blog.eetop.cn/705639 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

转:Simulation & Emulation

已有 2190 次阅读| 2011-8-1 17:00 |个人分类:资料

Simulation & Emulation (2008-01-29 00:39)

    simulation、emulation、模拟、仿真。这四个名词很容易混淆,刚弄明白,赶紧记下来。
    首先,不谈模拟和仿真,先对simulation和emulation进行区分,这是因为这里两个英文单词的界线比两个中文名词的界线要清晰得多。

wiki中关于emulation的解释中提到:

An emulator duplicates (provides an emulation of) the functions of one system using a different system, so that the second system behaves like (and appears to be) the first system. This focus on exact reproduction of external behavior. is in contrast to some other forms of computer simulation, which can concern an abstract model of the system being simulated

   
wiki中关于simulation的解释中提到:

A simulator may imitate only a few of the operations and functions of the unit it simulates. Contrast with: emulate


1965年的Communications of ACM中有一篇论文叫"Emulation of Large Systems",是一个叫Tucker的IBM工程师写的,他们用IBM360来emulate之前的IBM70xx系列机型,里面提到:

A new technique called emulation are discussed ... An emulator is a package that includes both special hardware and a complementary set of software. The package runs in the manner of an interpretive routine simulator program but is about 5 or even 10 times as fast as a purely software simulator


    从上面的资料可以看到,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不是一回事。其他的,以后查到再补进来吧。


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 3

    获赞
  • 0

    评论
  • 293

    访问数
关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-24 23:47 , Processed in 0.022877 second(s), 12 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部