0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

仿真器和模拟器有什么不一样?

ss 来源:网络整理 作者:工程师谭军 2018-10-11 14:53 次阅读

模拟器(simulator)是用于分析研究目标系统本身,模拟器系统本身要跟目标系统保持一致。例如飞行模拟器对于用户来讲其本身要跟真正的飞机一致;再比如gem5模拟器,其本身要跟CPU所有内部行为一致(包括内部运行原理都要一致)。好的模拟器本身也可以仿真其目标系统,但不是所有模拟器都有这个特性。

仿真器(emulator)的目的是作为目标系统的替代品,可以完全替代目标系统,完成其对外的功能,即仿真器系统只需要保证呈现给外部的行为跟目标系统一致(不需要保证内部运行原理一致)。例如想在电脑上玩小时候玩的街机游戏,就需要在电脑上安装一个街机仿真器(虽然很多人喜欢称其为“街机模拟器”)。使用仿真器的目的是模拟目标系统呈现出的运行环境,仿真器保证的是完成目标系统相同的行为,不在乎其内部实现原理,再例如EMU8086仿真器,可以在另一台非8086电脑上仿真8086微处理器的行为。即使再好的仿真器也不能作为模拟器用于研究目标系统内部运行原理。针对gem5,其本身是一个CPU模拟器,但是因为其也能做到仿真器可以完成的工作(gem5运行于Atmoic模式), 尽管其运行速度相比真正CPU差很多,也可以认为其是一个类似于EMU8086的CPU仿真器。但是尽管gem5运行于乱序(Out Of Order, 简称O3)时,gem5可以被看做CPU模拟器,其内部模拟的CPU各个模块也不是完全一样,所以也可以任务,gem5是由仿真多个部件的仿真器构成的。总之,模拟器针对目标系统内部进行模拟,仿真器用于仿真目标系统对外的行为。

仿真器和模拟器的不同----程序运行区别

在线仿真器ICE(In\ Circuit Emulator)能检查运行程序的处理器的状态。实际上,ICE取代了(或仿真了)目标板上的处理器,是一种强有力的工具。程序在ICE中可以实时运行、调试。 模拟器(simulator)是完全基于主机程序的。它模拟了目标处理器的功能和指令系统,其用户界面通常和仿真器的一样或比较类似。模拟器最大的缺点是它仅能模拟处理器,而嵌入式系统经常包含一个或更多重要的外围部件。模拟器无能为力而且不能实时运行程序。它只能起辅助作用进行软件粗调试,是纯软件的工具;而仿真器是硬件工具。

仿真器和模拟器的不同----工作过程区别

模拟器是模拟出原系统的一个抽象模型,而不需要真的去做真实系统要做的事情。因此它其实不具备真实系统的功能,只是当某一功能执行时,通常不必输出功能执行的结果,只是在simulator中记录下由此引发的状态变化。因此它通常用于设计初期的模型验证。

仿真器则更进一步,要真正地去做所有真实系统能做的事情,只不过做的“过程”不同,它一般用于处理兼容性问题和在资源有限的条件下完成系统原型的实现。

如果把真实系统比作一个人的话,simulator就是这个人的一幅肖像画,而emulator则是这个人的一个克隆人。

举个例子,我们要实现一个p2p文件分发系统。

最开始的时候我们可以实现一个simulator:它用一个函数来模拟节点间的通信,这个函数的输入是网络性能(带宽,跳数),输出是通信时延————注意,并没有真正的数据在传输和拷贝,甚至都没有真正的节点,我们只是模拟了通信时延这个“特征(feature)”。

接下来,我们把这个分发系统实现了,编译成一个exe文件,但这时我们发现我们没有足够多的计算机来组成一个真实的、具有足够规模的网络来进一步测试(通常p2p网络的节点数成百上千),这时,我们可以写一个emulator:它可以区分同一个计算机上的不同进程,因此我们可以在一台计算机上开100个进程,这样可以用100台计算机模拟出10000台计算机的网络————注意,此时数据真的是通过Socket在传输,只不过有的数据走的是loopback口,并没有真的进网卡。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 仿真器
    +关注

    关注

    14

    文章

    988

    浏览量

    82990
  • 模拟器
    +关注

    关注

    2

    文章

    817

    浏览量

    42697
收藏 人收藏

    评论

    相关推荐

    2003和245什么不一样的地方

    2003和245什么不一样的地方啊啊 啊???
    发表于 10-11 23:11

    线损校准,为啥不一样

    线损校准,为啥不一样,今天测试时发现,校准是,信号源频率不一样,线损差别很大,1dB 多!!!
    发表于 06-05 13:58

    两种仿真软件仿真结果不一样怎么回事

    `请问大家有谁遇到过modelsim与signaltap仿真结果不一样的情况,不知道什么原因引起的,请大家指教!`
    发表于 09-01 17:13

    数据类型不一样和接口 怎么解决

    要怎么解决接口和产生的数据类型不一样的问题,然后利用MYRIO的模拟输出通道接到示波器里面为什么没有波形啊,数据类型应该是不一样,要怎么解决这个问题呢?
    发表于 05-09 01:00

    请问使用仿真器加载程序到DDR内存中运行程序是怎样的过程呢?它和般的内存中的数据的读写有什么不一样吗?

    本帖最后由 只耳朵怪 于 2018-5-25 15:32 编辑 请问使用仿真器加载程序到DDR内存中运行程序是怎样的过程呢?它和般的内存中的数据的读写有什么不一样吗?如果DD
    发表于 05-25 09:24

    FLASH的连接仿真器仿真与脱离仿真器的运行问题,请问为什么会与屏上显示的不一样

    的参数,是实际参数吗?为什么会与屏上显示的不一样?此外,在两块DSP芯片互相传输的实验中,插着仿真器运行时,传输无误,但是断电,拔掉仿真器,上电之后,传输就会出现错误。请问这个问题又是怎么回事?
    发表于 06-06 04:00

    DSP读FPGA的DNA,请问为什么会出现仿真器在线运行和片内自动运行结果不一样的情况呢?

    致。但把程序烧进6713,重启运行,总是显示错误,并且经常出现上电后HPI忙(HYDY为1)使得上位机直等待而系统黑屏,为什么?说明:6713读FPGA时序已经设计为默认,即SET\STROBE\HOLD时间均为最长。为什么会出现仿
    发表于 08-02 06:31

    程序编辑结果不一样

    个程序段int i=1;int j=0;j=((i++)*(i++));printf(“%d,%d\n”,i,j);在不同的编辑结果为什么不一样 我用虚拟机的VI编辑结果i=3;j=1;用C++编辑结果i=3;j=2;到底结
    发表于 03-13 02:22

    为什么我的泪滴不一样

    我的泪滴怎么和网上的不一样??
    发表于 03-13 15:23

    这个仿真例程设置的参数一样,为何会出现不一样仿真结果?

    这个仿真例程设置的参数一样,为何会出现不一样仿真结果?
    发表于 12-23 09:08

    仿真器仿真时CCS报错的原因?

    您好,我在使用2812的仿真器产生PWM控制MOSFET时,经常出现CCS报错的问题,如果把程序烧写进DSP就不会出现问题,使用仿真器控制DSP与把程序固化到DSP中,什么不一样吗?
    发表于 06-13 20:31

    伺服电机控制对比步进电机控制不一样

    伺服电机控制与步进电机控制不一样
    发表于 02-25 07:42

    风速传感和风量传感什么不一样

    风速传感和风量传感什么不一样
    发表于 03-17 06:57

    SWD和传统的调试方式什么不一样

    SWD 仿真模式概念简述先所说 SWD 和传统的调试方式什么不一样:首先给大家介绍下经验之谈:(): SWD 模式比 JTAG 在高速模式下面更加可靠. 在大数据量的情况下面 JT
    发表于 02-23 06:38

    仿真器模拟器的不同_仿真器模拟器的区别简单分析

    仿真器模拟器经常被混淆,两者有些许相似,但是是两个不同的概念,本文为大家带来仿真器模拟器的区别简单分析。
    发表于 01-05 14:27 8179次阅读