Enquanto eu entendo o que simulação e emulação significam em geral, quase sempre fico confuso sobre eles. Suponha que eu crie um software que imite o hardware / software existente, como devo chamá-lo? Um simulador ou um emulador?
Alguém poderia explicar a diferença em termos de programação?
Bônus: Qual é a diferença em inglês entre esses dois termos? (Desculpe, eu não sou um falante nativo :))
Respostas:
Emulação é o processo de imitar o comportamento observável externamente para corresponder a um alvo existente. O estado interno do mecanismo de emulação não precisa refletir com precisão o estado interno do destino que ele está emulando.
A simulação, por outro lado, envolve modelar o estado subjacente do destino. O resultado final de uma boa simulação é que o modelo de simulação emulará o destino que está simulando.
Idealmente, você deve poder examinar a simulação e observar as propriedades que também veria se visse o destino original. Na prática, pode haver alguns atalhos para a simulação por razões de desempenho - ou seja, alguns aspectos internos da simulação podem realmente ser uma emulação.
MAME é um emulador de jogo de arcade; Hyperterm é um emulador de terminal (não muito bom). Não é necessário modelar a máquina de fliperama ou um terminal em detalhes para obter o comportamento emulado desejado.
O Flight Simulator é um simulador; O SPICE é um simulador de eletrônica. Eles modelam o máximo possível todos os detalhes do alvo para representar o que o alvo faz na realidade.
EDIT: Outras respostas apontaram que o objetivo de uma emulação é capaz de substituir o objeto que está emulando. Esse é um ponto importante. O foco de uma simulação está mais na modelagem do estado interno do alvo - e a simulação não necessariamente leva à emulação. Em particular, uma simulação pode ser muito mais lenta que o tempo real. O SPICE, por exemplo, não pode substituir um circuito eletrônico real (mesmo que suponha que exista algum tipo de dispositivo mágico que faça a interface perfeita entre circuitos elétricos e uma simulação do SPICE.) Uma simulação de simulação nem sempre leva à emulação -
fonte
Se um simulador de vôo pudesse transportá-lo de A para B, seria um emulador de vôo.
Um emulador pode substituir o original para uso real .
Um PC virtual emula um PC.
Um simulador é um modelo para estudo e análise.
Um emulador sempre terá que operar próximo ao tempo real. Para um simulador que nem sempre é o caso. Uma simulação geológica pode durar 1000 anos / segundo ou mais.
fonte
Simulação = Para análise e estudo
Emulação = Para uso como substituto
Um simulador é um ambiente que modela, mas um emulador que replica o uso como no dispositivo ou sistema original.
O simulador imita a atividade de algo que está simulando. Ele "parece" (pode haver muita coisa com "parece", dependendo do contexto) como sendo o mesmo que está sendo simulado. Por exemplo, o simulador de voo "parece" ser um voo real para o usuário, embora não o transporte de um lugar para outro.
O emulador, por outro lado, na verdade " faz " o que a coisa que está sendo emulada faz e, ao fazê-lo, também " parece estar fazendo a mesma coisa ". Um emulador pode usar um conjunto diferente de protocolos para imitar a coisa que está sendo emulada, mas o resultado / resultado é sempre o mesmo que o objeto original. Por exemplo, o EMU8086 emula o microprocessador 8086 no seu computador, que obviamente não está sendo executado no 8086 (= protocolos diferentes ), mas a saída fornecida é o que um 8086 real daria.
fonte
É uma diferença de foco. Os emuladores 1 se concentram em recriar o comportamento de um sistema, sem levar em consideração como o sistema funciona internamente. Os simuladores 2 se concentram na modelagem dos componentes de um sistema. Você usa um emulador quando se preocupa principalmente com o que um sistema faz e um simulador quando se preocupa com como ele faz.
Quanto aos significados gerais em inglês, a emulação é "o esforço de igualar ou sobressair outro em qualidades ou ações ", enquanto a simulação é " modelar , replicar, duplicar o comportamento, aparência ou propriedades de". Pouca diferença. A emulação vem de æmulus , "esforçando-se, rivalizando" e está relacionada a "imitar" e "imagem", o que sugere uma semelhança com a alavanca de superfície. "Simulação" vem de similis "like", assim como a palavra "similar", o que talvez sugere uma congruência mais profunda.
Referências:
fonte
Eu não acho que o emulador e o simulador possam ser comparados. Ambos imitam algo, mas não fazem parte do mesmo escopo de raciocínio, não são usados no mesmo contexto.
Em resumo: um emulador é projetado para copiar alguns recursos do original e pode até substituí-lo no ambiente real. Um simulador não foi projetado para copiar os recursos do original, mas apenas para parecer semelhante ao original para os seres humanos. Sem os recursos do original, o simulador não pode substituí-lo no ambiente real.
Um emulador é um dispositivo que imita algo próximo o suficiente para que possa ser substituído pela coisa real. Por exemplo, você deseja que um circuito funcione como um circuito ROM (memória somente leitura), mas também deseja ajustar o conteúdo até que seja o que você deseja. Você usará um emulador de ROM, uma caixa preta (provavelmente baseada em CPU) com interfaces físicas e elétricas compatíveis com a ROM que deseja emular. O emulador será conectado ao dispositivo no lugar da ROM real. A placa-mãe não verá nenhuma diferença ao trabalhar, mas você poderá alterar o conteúdo da ROM emulada facilmente. Dito de outra forma, o emulador atuará exatamente como a coisa real no contexto da placa-mãe (talvez um pouco mais lento devido ao modelo interno real), mas haverá funções adicionais (como reescrever) visíveis apenas para o designer, fora do contexto da placa-mãe . A definição do emulador seria: algo que imita o original, tem todos os seus recursos funcionais,
Um simulador é usado em outro contexto de pensamento, por exemplo, um simulador de avião, um simulador de carro, etc. A simulação tratará apenas de alguns aspectos da coisa real, geralmente aqueles relacionados a como um ser humano a perceberá e controlará.. O simulador não desempenhará as funções do material real e não poderá ser sustentado por ele. O simulador de avião não voa ou carrega alguém, não é seu objetivo. O simulador não se destina a funcionar, mas a parecer ao piloto de alguma forma como a coisa real para outros fins que não os normais, por exemplo, para permitir treinamento no solo (inclusive em situações incomuns, como falha de todos os motores). A definição do simulador seria: algo que pode parecer humano, até certo ponto, como o original, mas não pode substituí-lo para uso real. Além disso, o piloto saberá que o simulador é um simulador.
Não acho que veremos nenhum simulador de ROM, porque a ROM não está interagindo com seres humanos, nem veremos emulador de avião, porque os aviões não podem ter um substituto executando as mesmas funções no mundo real.
Na minha opinião, o modelo dentro de um emulador ou simulador pode ser qualquer coisa, e não deve ser semelhante ao modelo do original. Um modelo de emulador de ROM provavelmente será software em vez de hardware, o MS Flight Simulator não pode ser mais software do que é.
Essa comparação dos dois termos contradiz a resposta atualmente selecionada (do Toybuilder), que coloca a diferença no modelo interno, enquanto minha sugestão é que a diferença é se o falso pode ou não ser usado para desempenhar a função real no mundo real ( até certo ponto aceito).
Observe que o simulador de avião também terá que simular a terra, o sol, o vento, etc., que não fazem parte do plano, portanto, um simulador de avião precisará imitar alguns aspectos do avião, bem como o ambiente da aeronave. avião porque não é usado neste ambiente real, mas em uma sala de treinamento.
Essa é uma grande diferença com o emulador que emula apenas o original, e seu objetivo é ser usado no ambiente do original sem a necessidade de emulação. De volta ao contexto do avião ... o que poderia ser um emulador de avião? Talvez um trem que conecte dois aeroportos - na verdade dois degraus de avião - transporta passageiros, com aeromoças a bordo, com o interior do carro parecendo uma cabine de avião real, e com o capitão dizendo "Senhoras e Senhores Deputados, nossa altitude é de 10 km e a temperatura no nosso destino é 24 ° C ". Seu benefício é difícil de ver, hum ...
Como conclusão, o emulador é uma coisa real destinada a funcionar, o simulador é um falso destinado a enganar o usuário.
fonte
Explicação simples.
Se você deseja converter seu PC (executando o Windows) em Mac, você pode:
(ou)
No primeiro caso, você pode experimentar o Mac, mas não pode esperar a mesma saída que no Mac.
No segundo caso, você pode esperar a mesma saída que no Mac, mas ainda assim o fato é que é apenas um PC.
fonte
Para entender a diferença entre um simulador e um emulador, lembre-se de que um simulador tenta imitar o comportamento de um dispositivo real. Por exemplo, no caso do iOS Simulator, ele simula o comportamento real de um dispositivo iPhone / iPad real. No entanto, o próprio Simulador usa as várias bibliotecas instaladas no Mac (como o QuickTime) para executar sua renderização, de modo que o efeito pareça o mesmo que um iPhone real. Além disso, os aplicativos testados no Simulador são compilados no código x86, que é o código de bytes compreendido pelo Simulador. Um dispositivo iPhone real, por outro lado, usa código baseado em ARM.
Por outro lado, um emulador emula o funcionamento de um dispositivo real. Os aplicativos testados em um emulador são compilados no código de bytes real usado pelo dispositivo real. O emulador executa o aplicativo convertendo o código de bytes em um formulário que pode ser executado pelo computador host que está executando o emulador.
Para entender a sutil diferença entre simulação e emulação, imagine que você está tentando convencer uma criança de que brincar com facas é perigoso. Para simular isso, você finge se cortar com uma faca e geme de dor. Para imitar isso, você realmente se corta.
fonte
Um emulador é um modelo de sistema que aceitará qualquer entrada válida que o sistema emulado aceitaria e produzirá a mesma saída ou resultado. Portanto, seu software é um emulador, apenas se ele reproduzir precisamente o comportamento do sistema emulado.
fonte
Há alguns anos, criei um ditado muito curto que, acredito, captura bem a essência da diferença:
Com isso, quero dizer que você usa um emulador quando não pode usar a coisa real, e usa um simulador quando não pode usar a coisa real e deseja descobrir algo sobre isso .
fonte
Em linguagem mais ou menos normal: se o seu software pode fazer tudo o que o sistema imitado pode fazer, é um emulador. Se apenas aproximar os resultados de um sistema (TI ou não), é um simulador.
fonte
Simulador: é semelhante ao intérprete. ou seja, ele realmente executa o código real linha por linha para imitar o comportamento
Emulador: é executável semelhante. isto é, pega o código compilado e o executa.
fonte
Um emulador é uma alternativa ao sistema real, mas um simulador é usado para otimizar, entender e estimar o sistema real.
fonte
A distinção entre os dois termos é um pouco confusa. Vindo de um mundo onde "Emuladores" são peças de hardware que permitem depurar sistemas embarcados. E lembre-se de produtos que permitiam que você tivesse recursos de ICE (Emulação de Circuito) para depurar uma plataforma de PC, acho que o uso do termo "Emulação" é um pouco impróprio para software que simula o comportamento de uma peça de hardware.
Minha justificativa para o uso atual do termo é Emulação: ele pode "aumentar" a funcionalidade e se preocupa apenas com uma aproximação "razoável" do comportamento do sistema.
ICE: (Emulação de circuito) Uma peça de hardware conectada a uma placa no lugar do processador real. Ele permite que você execute o sistema como se o processador real estivesse presente. Normalmente, eles possuem uma variante do processador para executar o software com lógica de cola, permitindo que o usuário interrompa a execução e a etapa única sob controle de hardware. Alguns também forneceriam capacidade de registro. A maioria dos sistemas modernos de desenvolvimento de processadores substitui a emulação do tipo ICE pela emulação JTAG, onde o JTAG apenas conversa com o processador por meio de um link serial para fins especiais e toda a execução é realizada pelo processador montado na placa.
EMULADOR DE SOFTWARE: Um emulador 0x86 se preocupa apenas com a capacidade de executar a linguagem assembly 0x86, não fornecendo um modelo comportamental preciso de ciclo por ciclo de um processador SPECIFIC 0x86. Bochs é um exemplo disso. O QEMU faz isso, mas também permite "virtualização" usando módulos especiais do kernel.
SIMULADOR: A Texas Instruments fornece um modelo comportamental de CICLO PRECISO dos processadores para desenvolvimento de software que se destina a ser uma SIMULAÇÃO precisa do comportamento ESPECÍFICO dos núcleos do processador que os desenvolvedores devem usar antes de ter o hardware em funcionamento.
Funcionalidade de aprimoramento do EMULATOR de software: o BLEEM não apenas permitiu a execução do software Playstation, mas também permitiu a saída do monitor com resolução mais alta do que o Playstation foi capaz de fornecer e também aproveitou os recursos mais avançados das GPUs disponíveis. (ou seja, melhor mistura e suavização de texturas.)
fonte
Ambos são modelos de um objeto para os quais você tem alguns meios de controlar entradas e observar saídas.
A principal diferença é que:
Deixe-me dar um exemplo - suponha que você queira fazer alguns testes do sistema para ver como a adição de um novo sensor (como um termômetro) a um sistema afetaria o sistema. Você sabe que o termômetro envia uma mensagem 8 vezes por segundo contendo sua medição.
Simulação - se você ainda não possui o termômetro, mas deseja testar se essa taxa de mensagens não sobrecarregará o sistema, você pode simular o sensor conectando uma unidade que envia um número aleatório 8 vezes por segundo. Você pode executar qualquer teste que não dependa do valor real que o sensor envia.
Emulação - suponha que você tenha um termômetro muito caro que mede 0,001 C e deseja ver se consegue um termômetro mais barato que mede apenas os 0,5 C. mais próximo. Você pode emular o termômetro mais barato usando um termômetro caro e arredondando a leitura para os 0,5 C mais próximos e executando testes que dependem dos valores de temperatura.
Observe que simulações também podem ser usadas para prever ou prever comportamentos. Simulações de análise de elementos finitos são usadas em muitas aplicações, incluindo previsão do tempo e túneis virtuais de vento.
As definições dos termos:
fonte
Provavelmente, é melhor responder a essa pergunta examinando a prática histórica.
No passado, eu vi emuladores de console de jogos no PC para o PlayStation e SEGA.
Os simuladores são comuns quando se refere a softwares que tentam imitar ações da vida real, como dirigir ou voar. Gran Turismo e Microsoft Flight Simulator vêm à mente como exemplos clássicos de simuladores.
Quanto à diferença linguística, emulação geralmente se refere à ação de copiar características ou comportamentos dignos de louvor de alguém (ou algo). A emulação é distinta da imitação, na qual uma pessoa é copiada com a finalidade de zombaria.
O significado linguístico do verbo 'simulação' é essencialmente fingir ou imitar alguém ou algo.
fonte
Na ciência da computação, tanto a simulação quanto a emulação produzem as mesmas saídas, a partir das mesmas entradas, que o sistema original; No entanto, uma emulação também usa os mesmos processos para alcançá-lo e é feita com os mesmos materiais . Uma simulação usa processos diferentes do sistema original. Também digno de nota é o termo replicação, que é o intermediário dos dois - usando os mesmos processos, mas sendo feito de um material diferente.
Portanto, se eu quiser executar meu antigo jogo de Super Mario Bros no meu PC, uso um emulador de SNES , porque ele está usando o mesmo código de computador ou similar (processos) para executar o jogo e usa materiais iguais ou similares (chip de silicone) . No entanto, se eu quiser pilotar um jato Boeing 747 no meu PC, uso um simulador de voo porque ele usa processos completamente diferentes do original (não há asas, sustentação ou aerodinâmica reais envolvidas).
Aqui estão as definições exatas retiradas de um glossário de ciência da computação:
Uma simulação é um modelo de um sistema que captura as conexões funcionais entre entradas e saídas do sistema, mas sem necessariamente se basear em processos que são iguais ou semelhantes aos do próprio sistema.
Uma replicação é um modelo de um sistema que captura as conexões funcionais entre entradas e saídas do sistema e baseia-se em processos iguais ou semelhantes aos do próprio sistema.
Uma emulação é um modelo de algum sistema que captura as conexões funcionais entre entradas e saídas do sistema, com base em processos iguais ou semelhantes aos do sistema e que é construído com os mesmos materiais desse sistema .
Referência: The Open University, M366 Glossário 1.1, 2007
fonte
Uma simulação é um sistema que se comporta de maneira semelhante a outra coisa, mas é implementado de uma maneira totalmente diferente. Ele fornece o comportamento básico de um sistema, mas pode não necessariamente respeitar todas as regras do sistema que está sendo simulado. Está aqui para lhe dar uma idéia de como algo funciona.
Uma emulação é um sistema que se comporta exatamente como outra coisa e cumpre todas as regras do sistema que está sendo emulado. É efetivamente uma replicação completa de outro sistema, até ser binário compatível com as entradas e saídas do sistema emulado, mas operando em um ambiente diferente do ambiente do sistema emulado original. As regras são fixas e não podem ser alteradas ou o sistema falha.
fonte
As definições das palavras descrevem a diferença da melhor maneira. Uma pesquisa no Google fornece as seguintes definições de simular e emular:
simular imitar a aparência ou o caráter de.
emular, imitar correspondência ou superação (uma pessoa ou conquista), normalmente por imitação.
Uma simulação imita um sistema. Uma emulação simula um sistema tão bem que pode substituí-lo ou até superá-lo.
Na computação, uma emulação seria uma queda no substituto do sistema que está emulando. Muitas vezes, ele supera o sistema que está imitando. Por exemplo, os emuladores de console de jogos geralmente fazem melhorias, como maior compatibilidade de hardware, melhor desempenho e melhor qualidade de áudio / vídeo.
As simulações, por outro lado, são limitadas por serem modelos. Eles são a melhor tentativa de imitar um sistema, mas não os substituem. Existem emuladores de hardware porque o hardware pode ser imitado e seria difícil dizer a diferença. Não há emulador agrícola, porque não há emulação que poderia substituir a agricultura real. Só podemos simular um modelo de agricultura para obter informações sobre como cultivar melhor.
fonte
Um PC virtual tenta emular um computador, do ponto de vista de um programador , mas, ao mesmo tempo, simula um computador do ponto de vista de um engenheiro elétrico .
fonte
Emulador:
Considere uma situação em que você saiba apenas inglês e esteja na China. Para interagir com uma pessoa chinesa, você precisa de um tradutor. Agora, o papel do tradutor é que ele buscará informações suas em inglês e converterá para chinês, além de fornecer essas informações para a pessoa chinesa e obter resposta da pessoa chinesa e converter para inglês e fornecer a saída para você em inglês. Agora esse tradutor e chinês é o emulador. Ambas as combinações fornecerão funcionalidade semelhante como se você estivesse se comunicando com a pessoa em inglês. Portanto, o hardware pode ser diferente, mas a funcionalidade será a mesma.
Simulador:
Não posso dar um exemplo melhor do que o SPICE ou o simulador de vôo. Ambos substituirão o comportamento do componente de hardware pelo software ou modelo matemático que se comportará de maneira semelhante ao hardware.
No final, depende do contexto em que solução melhor se adapte às necessidades do projeto.
fonte
Simulador é algo mais amplo que Emulador e parece que a dualidade desses termos é exagerada nos posts acima.
Emulador
As pessoas decidiram usar uma nova emulação de palavras no "mundo dos computadores" quando começaram a substituir algumas partes de hardware do sistema existente de maneira direta - imitando seu comportamento e baseando-se na natureza computacional para não quebrar nada e deixar tudo no estado equivalente.Então nós emulamos o pedaço disso! (e o todo ainda funciona como antes)
Emulador geralmente usado em sentido estrito na área digital como substituição e virtualização - apresentando-se na forma digital como um software - de algo conhecido e que existia anteriormente (chips virtuais, placas de circuito, dispositivos eletrônicos). Então, quando o mundo se tornou mais digital e trouxe a palavra emulador para as massas, as massas acrescentaram incerteza a ele (ou razões adicionais).
Simulador
Antes de tudo, vi muitos comentários sobre emuladores fazerem ou substituirem algo real, mas não simuladores.
MAS o simulador de vôo é usado para algo real - ele treina pilotos, fornece habilidades e conhecimento e substitui aviões reais caros e economiza muito dinheiro. E não podemos simplesmente dizer um emulador de avião, porque temos a sensação interna de que isso é muito mais do que isso, então chamamos de simulador :) O simulador de avião pode conter radar ou transponder emulado que seja verdadeiro.
Contra-afirmações de que simuladores são usados para análise e estudo (e emuladores para algo real), mas que análise e estudo não são menos reais do que as placas GSM emuladas (ainda mais na era da informação em que vivemos). A análise agrega valor ao negócio, reduz custos ou aponta para lucros não inferiores ao hardware (emulado) substituído.
O simulador é semelhante à modelagem de algo que não podemos obter por algum motivo (custo, tecnologia, impossibilidade física). Geralmente é simulado para algo novo, intangível ou complexo, ou que não seja conhecido por nós como mercado, clima, combustão, usuário. Então aqui vem o voo, buraco negro, bolsa de valores, simulações.
Então finalmente:
Quanto à origem das palavras
Todos vieram do latim e significam:
fonte