记得我刚上研究生的时候,在阅读外文资料时总是分不清楚“Simulation”和“Emulation”的区别。于是我就去问导师,导师解释的也很简单:“Simulation就是模拟,Emulation就是仿真嘛!”其实很多人一开始研究模拟器时也会遇到同样的问题,面对文献中大量的“Simulation”和“Emulation”不知所措,结果就越看越糊涂。当时上网又不方便,不像现在“Google”一下就搞定了,自己对这个问题的理解基本上是无师自通的,所幸的是理解并没有错,后来论文落到某位专家的手中也没有对这个问题对我提出异议。

做模拟器首先就要搞清楚“Simulation”、“Emulation”、模拟和仿真这四者的区别和关系,下面我谈谈我个人的理解。

Simulation,是指用软件去模拟某个系统的功能,并不要求实现该系统的内部细节,只要在同样的输入下,软件的输出和所模拟系统的输出一致就可以了。比如你在PC机上用一个软件去simulate红白机的游戏“超级玛莉”,你只要让你的软件运行出来的效果和红白机上“超级玛莉”游戏一样就可以,至于这个软件你是怎么实现则无关紧要。

Emulation,是指用软件去模拟出某个系统中各个部件的组成,真实地模拟出系统的运行机制。这就要求软件的作者需要非常了解所模拟系统的内部结构,能够利用各种数据结构实现出各个部件的模型。同样去emulate红白机的游戏“超级玛莉”,首先就要用软件模拟出红白机中的各种硬件,如CPU、内存、图形处理芯片、声音处理芯片以及游戏手柄等,再通过将加载游戏的ROM来运行该游戏。现在各种游戏模拟器,如MAME、VirtualNes都是采用emulation的手段去实现游戏的模拟,所以它们又叫做emulator。

模拟就是指用在某个平台上用纯软件的方法去模拟另一个平台上程序的运行,模拟包含“Simulation”和“Emulation”,通过上面对这两者的分析大家可以知道,“Simulation”是一种高层次上的模拟,类似于“黑盒”,而“Emulation”更注重于对底层的模拟,类似于“白盒”。

仿真的解释就比较多了,有的说仿真是指用机器底层的微指令来解释执行另一个平台的指令,有的说仿真是软件结合硬件来模拟另一种平台程序的运行,即“硬件仿真+软件模拟”。其实这两者是针对不同仿真对象和宿主平台而言的:前者具体的是讲系统仿真,是以大型机CPU(现在也可以指PC机)为仿真对象的,通常在研制CPU的过程中,用宿主机的CPU去仿真其软件的运行,这样可以使硬件和软件的研发过程同步,加快整体系统的研发进度;后者一般指嵌入式仿真,做过嵌入式开发的朋友都知道,开发过程中经常要用仿真器去调试程序,我们可以在PC机上调试嵌入式系统中的某个程序,通过仿真器向嵌入式微控制器发送调试信号(如JTAG),使微控制器执行某条指令,而PC机上会相应地显示出该条指令执行的结果,看上去似乎是PC在“执行”这条指令一样,这样来达到仿真的目的。但不管怎样,仿真总是与硬件相关的,这一点与模拟是有区别的。

现在还出现了“虚拟机”一词,在我看来,虚拟机更多地采用了模拟技术,而不是仿真,但是虚拟机相对于一个模拟器而言要复杂很多,像Bochs这样的虚拟机实质上应该是一个emulator,而像VirtualPC、VMWare和VirtualBox这样的虚拟机,则采用了更为复杂的技术,既有simulation,也有emulation,甚至还有系统仿真,所以不能单纯地将它认为是一个模拟器。

emulation和simulation的区别相关推荐

  1. 《硬件仿真(Emulation)EDA工具前端设计流程》

    硬件仿真(Emulation)EDA工具设计流程总结,仅介绍必要设计步骤,具体详细步骤由于公司机密,暂不详细说明. 文章目录 前言 1. Emulation 1.1 什么是Emulation 1.2 ...

  2. simulation(模拟器) 与 emulation(仿真器)的区别

    偶然遇到这么个问题,弄不清楚,便到网上查了查看到了这么一篇文章,分享给还没意识到这个区别的坛友们学习.文章如下: simulation.emulation.模拟.仿真.这四个名词很容易混淆,刚弄明白, ...

  3. 理解:simulation、emulation、模拟、仿真

    原文地址:http://blog.chinaunix.net/u1/45052/showart_472785.html simulation.emulation.模拟.仿真.这四个名词很容易混淆,刚弄 ...

  4. Simulation Emulation(转载)

    原文地址:http://blog.chinaunix.net/u1/45052/showart_472785.html simulation.emulation.模拟.仿真.这四个名词很容易混淆,刚弄 ...

  5. simulation、emulation、模拟、仿真

    原文地址:http://blog.chinaunix.net/u1/45052/showart_472785.html simulation.emulation.模拟.仿真.这四个名词很容易混淆,刚弄 ...

  6. 计算机中定义事物各种特点的术语,计算机科学中具有特殊含义或易溷淆的术语辨析(2版).doc...

    计算机科学中具有特殊含义或易溷淆的术语辨析(2版) 计算机科学中具有特殊含义或易混淆的术语辨析 术语的统一不同国家process和procedure 进程 process 和线程 thread arg ...

  7. 1.1 什么是PowerVM(IBM小型机)虚拟化技术

    最后更新2021/07/03 在计算机世界里,虚拟化是一个已经被用滥了的词汇,其所涵盖内容之广.涉及层次之深.延续历史之长,几乎再无第二种技术名词能与之匹敌.计算机领域的虚拟化,可以简单地理解为资源的 ...

  8. 计算机科学中具有特殊含义或易误解混淆的术语辨析

    计算机科学中具有特殊含义或易误解混淆的术语辨析 这是我以前收集整理的文档,参考了一些网上的公开资料.这次发到这里,是因为可以随时修改.不足之处,敬请指正,以便修正. 计算机科学中有些术语不具一致性,容 ...

  9. 芯片制造中的软力量(下)

    作者:李剑 首发于公众号:常垒资本(ID:conswall_cap) 前文回顾: 6 TCAD(工艺和器件仿真) 1. TCAD简介 1.1. 什么是TCAD 随着微电子技术的发展,半导体工艺水平和器 ...

最新文章

  1. 利用python卷积神经网络手写数字识别_Keras深度学习:卷积神经网络手写数字识别...
  2. ecshop管理找不到index.php,前台出现找不到这样的目录,打不开某文件的提示
  3. 女主计算机的学霸,又一部青春网剧开机,学霸女主牵手计算机大神,另类爱情精彩上演...
  4. 数据数组赋值_嵌入式-数组赋值
  5. s905各种型号的区别_梯式桥架和槽式桥架的区别介绍
  6. 使用oprofile分析性能瓶颈
  7. stm32l0的停止模式怎么唤醒_手把手教你怎么利用旧电脑搭建NAS组建自己的黑群晖...
  8. @configuration注解_超级全面的 SpringBoot 注解介绍,每一个用途都应该清晰
  9. Ubuntu切换用户su和su-的区别
  10. 比较两个字符串相同的个数,并输出
  11. 橘子无法启动计算机丢失,《战地1》橘子平台无法启动 橘子意料之外的问题解决方法...
  12. 20130830sqlplus使用及联机文档
  13. echarts地图设置label引导线
  14. 多图详解IT架构师完整知识体系及技术栈
  15. Python爬取淘宝销量数据!这年头数据就是钱啊!
  16. python读取grd数据_一个关于grads显示grd格式数据的问题。
  17. 各种梯度算法总结 + Total Variation
  18. navicat运行db文件_navicat导入db文件_db文件转换为txt
  19. 进销存ERP系统、销售单、采购单、退货单、库存管理、库存盘点、调拨、借入、借出、出库、入库、归还单、收款单、付款单、资金流水、销售报表、采购报表、库存报表、财务报表、商品库、电商erp、连锁erp
  20. sql中将字符串数字转换成数字

热门文章

  1. Thrift 中的 Transport
  2. 【论文分享】无监督恶意域名检测:Unsupervised malicious domain detection with less labeling effort
  3. 【wifi测试】一周总结,新年展望(2013年1月6号更新)
  4. 从再见Borland说起
  5. 2008春节晚会节目单
  6. short—溢出问题
  7. 烈火如歌-ROS入门使用
  8. VisionPro 常用控件的说明 C# 开发
  9. 震撼光效:Geomerics Enlighten Demo at GDC 2010
  10. 简学Python第二章__巧学数据结构文件操作