Talk:Emulator
This level-5 vital article is rated C-class on Wikipedia's content assessment scale. It is of interest to the following WikiProjects: | |||||||||||||||||
|
The following references may be useful when improving this article in the future: |
WINE
editfrom shd: WINE is not an emulator. It should be removed.
- Excuse me for being ignorant then, but... what is it if it isn't an emulator? Kinitawowi 11:19, Aug 27, 2004 (UTC)
- A compatibility layer. That said, Darwine will contain an emulator - David Gerard 23:19, 27 Aug 2004 (UTC)
- It emulates Windows, so in that sense it's an emulator. It's just not the kind of emulation you usually think of when you say emulator, like DosBox, ScummVM, or VMWare.
"for which" vs "... for"
editI'm not a native speaker, however I'd like to know what was wrong with the phrase "... other than they were going to poop in a bag and set it on fire". To me, "... other than the one for which they were originally looked at funny" looks harder to read (even though my own language would use this latter contruction!), and while it sounds more Latin-like, I always thought that the former construction was correct English, as well. LjL 23:40, 14 July 2005 (UTC)
- There's nothing wrong with the first line, other than it violates the rule that a sentence will not end with a preposition, in this case "for". (Whoops! I just ended a sentence with a preposition!)(Am I a geek? Go to www.geekssRcool.com to answer the question) In truth this is an old carry over from Latin, and is hardly used in modern English. One particular example of supposedly "correct" English was given by P.M. Winston Churchill: "This is the sort of nonsense up with which I shall not put!." Grammatically, this is correct, but it sounds horrible. -- VederJuda 16:51, 23 October 2005 (UTC)
- It seems like a clumsy read to me, as well. Since this is a technical article, it might be appropriate to use a technical term to simplify the grammar. Perhaps the word "native" might be of help? Matt Fitzpatrick 09:31, 8 December 2005 (UTC)
RPGe
editWhy does RPGe redirect here? It is not mentioned anywhere in the article.
simulator vs. emulator
editI made an edit that reversed the sense of the statement in the intro comparing simulation and emulation. Now I'm aware that a "simulator" is an especially accurate emulator, but in the more general sense when you're comparing simulation and emulation I think the distinction I draw is accurate. A simulator, one which is not an emulator, is an attempt to mimic the behavior, rather than the state of the machine. Emulators, on the other hand, attempt to emulate the machine's state, to varying degrees, the most strict of which are called "simulators". Unfortunate terminology or am I just wrong? Hcs
- According to the article on simulation, simulation can be less accurate than emulation. I think the main difference is that emulation focuses on exact imitation of external behavior, while a simulation is everything else. I've restored this distinction to the top of the article (since the title of the article is generic "emulator"/"emulation"). LachlanA 23:54, 26 May 2007 (UTC)
- Lach is correct: Emulation must be precise so that it's indistinguishable from the real thing. Simulation merely creates a pretend environment without any degree of specificity.
- I made a change to the resulting sentence. Let me know how you like it. WalterGR (talk) 12:44, 3 January 2008 (UTC)
The confusion addressed is the clue to the topic. It confused me for a long time before I started to understand the difference. It is not so much about structure/function, as I believe. A widespread misconception is that it is about HW/SW difference. No. It is about the application. One uses an emulator when he/she wants to use a device but does not have the original object at hand. The emulator comes to rescue. The user does not care about the emulator's behavior as long as it matches the original device. The simulator relates to a model (of a device or a process). It is used when the user wants to know its reaction on the inputs. The response on applying some stipulation on the model, the analysis of the system behavior interest the user. You may know or may not know the internal structure of the model. One can build an emulator from a simulator or use an emulator as a simulator. A model of not yet existing device may be simulated. The only important thing is that you are interested in analyzing its behavior when simulating. --213.168.26.170 (talk) 22:46, 15 January 2008 (UTC)
I think a problem is there is no agreed-upon definition. A historical definition is "emulation" uses hardware support. That's not typical usage today but was typical for a long time. "Simulation" is sometimes used to mean "works like a device which is not yet built", while "emulation" is sometimes used to mean "works like a device which is no longer built." Again, that's not an agreed-upon definition, but I hear it used. Also "emulator" as a way to "work like the original", while simulator as a way to "measure something like the original". Also, notions of accuracy, where "emulator" may be either less or more accurate than a simulator. The dictionary definitions suggest "emulate" is more accurate than "simulate". Perhaps the clearest approach is to list the various (confusing and sometimes contradictory) uses, so when people use a term speakers are included to say "simulator, by which I mean..." and listeners are inclined to ask "emulator, by which you mean...?" —Preceding unsigned comment added by 76.231.47.26 (talk) 19:17, 7 June 2009 (UTC)
An emulator is a device that you can drive in order to deliver control of an environment in the exact same way as item being emulated would allow. It is essentially a drop-in substitute. A simulator would however allow you to demonstrate and experiment with the behaviours exhibited by a real world system in a manner entirely disconnected from the real world environment of that system. It would not, however, provide a drop-in substitute for the purpose of controlling that real-world environment. A flight simulator would never carry a real passenger form a real location A to a real location B. An emulator could however be used as a direct substitute for part of the control system of a real plane. You would not emulate the behaviours exhibited by flight (though you might simulate them), so you would never have a flight-emulator. So you could simulate (say) an Altair 8800 by using a software Z80-emulator inside a simulation of the entire Altair computer and its entire environment, and not have that simulated computer ever connected to any real-world hardware. However, if your simulation was so good and accurate that it could become a drop-in replacement for a real Altair 8800, then the entire thing could at that point be called (or at the very least be used as) an Altair emulator. Thus the two words (emulation and simulation) become defined entirely by the intent of use: whether it can it be a direct substitute making the real thing redundant. A weather system simulation will not make weather redundant. And a flight simulator will never fly itself - although it can be partially adapted for use as the front end of the remote control system of a UAV, which arguably then makes it a flight-deck emulator. — Preceding unsigned comment added by Alex Tidmarsh (talk • contribs) 15:24, 9 December 2018 (UTC)
- Prior to the IBM System/360, it was common for people replacing a computer to continue to run programs on the new computer; the industry referred to the application that allowed this as a simulator or simulation program[1]. With the IBM S/360, IBM offered features that added a combination of hardware and microcode that allowed writing faster simulators, referred to these feature as emulation options and referred to the simulators as emulators. Since then the nomenclature has been a Tower of Babel. Shmuel (Seymour J.) Metz Username:Chatul (talk) 18:08, 11 December 2018 (UTC)
Good points have been made above; yet the very first paragraph of the article still contradicts itself. Software alone cannot emulate another device if a major feature of that other device is the interfacing to other hardware. The second picture shows the HP-41cx ap for an iPhone, and calls it an "emulator;" however, the main reason I got into the 41cx was to use the HP-IL interface module plugged into one of the ports at the top end, to control and take data from a half-dozen lab instruments all interfaced to it at once, most going through the HP82169A HPIL-to-IEEE488 interface converter. The iPhone has absolutely no capability to do this, or to plug in various other things like the HP82143A printer; so what's there does _not_ "behave like [the other] computer system" or "use peripheral devices designed for the guest system" (to use the words of the first paragraph), so it is _not_ an emulator. The emulator absolutely requires hardware.Workbenchwil (talk) 23:49, 27 September 2021 (UTC)
- Yep! Emulation is concrete, simulation is illusory. Software alone cannot emulate hardware. It takes hardware to emulate hardware. Anyone in aviation can explain the difference.
- Software alone can't do anything. An emulator is no different than a compiler in that regard. It takes hardware to run any software. An emulator of a 1401 with a 1403 requires a printer, but so does any other program that produces printed output. --Shmuel (Seymour J.) Metz Username:Chatul (talk) 15:11, 29 September 2021 (UTC)
- ^ Simulation of the IBM 650 on the IBM 705 (PDF), IBM Corporation, 1957, 32-7763
Steal This Idea
editHey has anybody in the emulation community thought of making an emulator that anyone can edit, a la Wikipedia? A good open-sourced, open-ended platform that anyone can add a layer of emulation to? I know this would be a bit more difficult than adding a sentence to Wikipedia, but perhaps some method of massive cooperation could make it possible. Imagine a page that you can plug any non-copyrighted ROM into (because of course, we would not want to advocate copyright infringement) so that you or anyone else can test it; or, edit the page to improve the emulation. Or, copy the page and test the emulation in private. Massively multi-user programming! I would try to do it myself, but my programming skills need to be improved first. (Of course, one advantage to open programming would be that many more people could learn to program, too.) But, a good home for such a thing might be Wikicities or some other sister project of Wikipedia. Discussion? oneismany 10:54, 8 December 2005 (UTC)
- Sourceforge+CVS. There are a good bit of open source emulators out there. Nezbie 00:35, 11 December 2005 (UTC)
How does it actually work?
editHow are they able to simulate another computer if they cannot know how its components work on the inside? Many console machines include custom made top secret microchips no one has documentation about.
- It's not as bad as you stated. For example, most consoles use standard CPUs, simply because they are more widely used, the most tested they have been (and therefore likely to be reliable), not to mention cheaper. Plus to actually be able to write programs that can run on the CPU, the CPU manufacturer has to provide at least docs on the machine instructions, if not other specs (eg. temperature tolerance etc.).
- What is more likely to be custom are things like the graphics and audio processing units. Of course, in order for other people to write games for it, at a minimum, they need to know how to talk to those units and roughly how they work and what they do. So the documentation for custom chips will generally exist even if not widely available. Then it's up to someone to leak it out, and the longer the console has been around, the more likely that will happen. Also, in some cases the custom chips might just be based on existing chip designs with some modifications, so you don't necessarily need to reverse engineer it from scratch.
- Beyond that, there's the trial and error and experimentation that one does for reverse engineering in general. For chips, this can mean hooking up your digital analyzer or oscilloscope to the actual electrical/electronic components involved. Also helpful would be to reverse engineer the program code for some game and use the information gained to help deduce how the various graphics and sound components work, and possibly compile your own programs to help test out the workings of the custom chip in question.
- For some platforms such as the Nintendo 64, instead of trying to emulate at the hardware level, another approach would be high-level emulation (HLE), which is a little like emulating the OS functionalities rather than the hardware.
- 131.107.0.73 02:29, 13 June 2006 (UTC)
Additionally, the article right now doesn't say how emulation is really done. I think of a bunch of CPUs and wires simulated in the host computer, all wired together.
- That's actually not too far off from the truth, roughly speaking. 131.107.0.73 02:29, 13 June 2006 (UTC)
- With software emulation, we don't do it with wires (but you knew that).
- With one exception, emulation is not as difficult as the article describes. Architecture manuals are readily available from manufacturers and the trick is to mimic the target machine precisely. I first got into emulation when a failed project was handed over to me. I quickly realized the original team had taken a number of shortcuts and misunderstood other aspects of the target machine.
- Some problems can be quite a challenge. It is tricky when the bit ordering of the target machine doesn't match that of the host machine. That can get ugly.
- The difficult exception mentioned above is that of proprietary ROMs. For example, Macintoshes are noted for having huge ROMs, naturally proprietary. Indeed, the earliest Macs had ROMs larger than the entire memory in competitive PCs. That's when reverse engineering comes into its own. Again, manuals are a necessity, but ROMs can be tricky because they seem so much more amorphous.
- It seems like HLE and/or waiting for docs to come out would be difficult, error-prone and time-consuming for more complex systems like PS3 or GC. For something like timing, for example, it seems to be able to observe the actual system at work would be invaluable. Have people thought much about using oscilloscopes/analyzers for RE in these situations? Is that practical, and what other tools would be used to do it?
External Links
editAnyone else think the latter 2 links look to be shameless plugs, rather than useful sources of information?
Why was "[[console game]]s" changed to "console games"[1]--E-Bod 00:50, 5 April 2006 (UTC)
- Sorry i did'n notice the link was also on the picture--E-Bod 00:57, 5 April 2006 (UTC)
Please wikipedians object here to the server emulator addittion. Jestix 23:31, 7 July 2006 (UTC)
- Terminal emulators are not emulators in the computer science sense of the word. Nobody in the unix world refers to terminals as terminal emulators anymore because it's an archaic, legacy term. The first software terminals were actually software emulating serial hardware, but these days it is simply not the case. The term is still so widely used because that is what they were originally called. Strictly speaking, it is not accurate anymore.
- Server emulators are even less appropriate for this article because at no time in the history of this phrase has any actual emulation ever taken place. It's a usage error that became colloquially accepted. Like terminal emulator, The term is widespread enough now that it does indeed deserve its own Wikipedia article, but it has no place in this article.
- At the very least, it does not belong because this article's scope is describing the process of emulation, not different types of software emulators. Even if I agreed with you that "server emulator" was a valid term, it is not in the same class of "hardware emulator" and "software emulator" because in that case, a "server emulator" would just be another type of software emulator.
- Think about it, if niche terms like "terminal emulator" and your newly coined "server emulator" belonged in this article, someone would have added it already. They don't belong. Kethinov 00:24, 10 July 2006 (UTC)
- Kethinov this is your second revert without priour discussion. Discussing and at the same time reverting - it's rude. Maybe just wait a few days until a consensus would have been made! It seems we both wont get a consensus, so what about to let just the usual editors of this article decide whats aproperiate/inaproperiate! I would let faith in 3rd opinion on this, and ask you to do the same. Jestix 05:31, 10 July 2006 (UTC)
- For the Terminal emulator its just another proove that in computer science the word "emulator" is not that narrow as what you think of. As you see that word phrase has been used a long time already. You can call the whole world to be not correct, but I don't think that wikipedia is the right place for this. As wikipedia reflects what is, not what should be. (Altough I don't even think that the usage of the world emulator even should be so narrow as you want it to be). Jestix 05:40, 10 July 2006 (UTC)
Accidentally truncated the article (please help revert it)
editHi guys, Just now I added a link to Indonesian language in Emulator. But when I refreshed the page, my post truncated some of the article. I did a search on Google and it is said that there is a known bug in Firefox with Google Toolbar installed (I'm using those). My deepest apology on this mistake. Can anyone please revert the article? Because I don't want to add more mess into it.
Thanks a lot guys:)
"Hardware emulation"?
editIs this really emulation? Printers just provide the same interface as HP printers - does that really mean they "emulate" them, in the computer science sense of the word? I think this bit should be removed as its confusing a colloquial use of the word "emulation" with the technical meaning of simulating execution of a processor. Trious 13:24, 4 January 2007 (UTC)
- I too thought a printer discussion was a poor opening to the article since we usually think of CPU emulation rather than simulating printers. My vote wouldn't be to eliminate the text, but move it down– way down– to a more appropriate location.
- That said, I'm more familiar with Postscript, but I believe HP printers have some sort of 'control language', which apparently can be emulated (or at least simulated).
Fair use image to be replaced
editConsidering that the emulated SNES image has to go, would it be possible and appropriate to get a screenshot of an emulated Vectrex? I remember reading something to the effect that the makers of that system have released all copyrights to the public. Robotman1974 03:05, 11 March 2007 (UTC)
- I've also added the {{Replacethisimage}} tag to that screenshot again. Obviously there are copyright concerns. Robotman1974 04:08, 13 March 2007 (UTC)
- It would be impossible to replace this image without losing encyclopedic quality. A free software demo wouldn't do, it has to be an actual snes (or other console) game, otherwise the point isn't made. If you can find a console game that has been released (all of it) to the public under a free license, then we can talk. --Oskar 21:27, 27 March 2007 (UTC)
- A while ago, I replaced the image with an image of DosBox running in Linux. There's no unique copyrighted GUI, the program and the operating system it's running under are both free software so the image is free. Using images of video game emulators is problematic - even if the emulator is free software, the game that is running almost certainly isn't free software. Also, using a video game screenshot on top feeds the misconception that emulation only involves video games. --Jtalledo (talk) 21:54, 29 June 2007 (UTC)
- It would be impossible to replace this image without losing encyclopedic quality. A free software demo wouldn't do, it has to be an actual snes (or other console) game, otherwise the point isn't made. If you can find a console game that has been released (all of it) to the public under a free license, then we can talk. --Oskar 21:27, 27 March 2007 (UTC)
Poorly written sentence
editThe following sentence is quite poorly written :
"This is so that software can be produced and tested before the final hardware exists in large quantities, so that it can be tested without taking the time to copy the program to be debugged at a low level without introducing the side effects of a debugger."
Notice it has in its construction twice 'so that' then twice 'without', such that by the end of the sentence it becomes quite difficult to actually understand what the writer is trying to say. I can only assume the meaning is threefold; that the benefits of using a 'simulator' are to test software before the hardware it runs on is mass-produced, to test it without copying it onto hardware, and to test it without introducing a debugger to hardware which might have side effects. Perhaps if this is the right meaning, the sentence could be improved to better convey it? Kevoreilly 29 December 2007
See also
editI deleted the following paragraph from the bottom of the See Also section:
Use of Emulators in the Modern Gameing Society
the current use of emulators is for gameing. Playstaion, X-box,Gameboy,and Nintendo all have vareious free Emulators for Download but in order to use such emulators u must have a fairly fast computer. u must also download ROMs which is basicly the game "cartrigde" in computer data form, all of this is easy to download and dosent take much memory to use.
"Software emulation"
editI suggest this article be renamed to "Software emulation". SharkD (talk) 03:43, 27 July 2009 (UTC)
Oppose: "Software emulation" already has an accepted meaning that does NOT mean emulation of software. Likewise "hardware emulation" does not mean "plug compatable", as with a printer (hardware) which does the same thing with the same data as a competing computer printer (hardware). The distinction being made is focused on how the emulation is done, not on the results. Most emulation involves a processor that executes emulation software that is written in a different native code E than the program binary code P being emulated. This is "software emulation" in the sense that emulation software is used. "Hardware emulation" means that no emulation software is used other than internal processor (hardware) microcode to execute the instruction set.
For example, imagine company X makes a computer that has a generic CPU 123 that executes programs in native code P. Company X's computer also has a proprietary graphic processor G2 that executes graphics program G. Competing company Y makes a similar computer that has a different CPU 456 that executes programs in native code Q and emulates programs in code P by executing an emulation program E (in native code Q) that interprets instructions in code P to produce exactly the same results as company X's computer. Company Y's graphics processor cannot emulate program G, and company Y's computer uses a different graphics processor G7 that executes a graphics program that provides similar but not exactly the same graphics results as company X's computer. The emulation being done in CPU 456 is "software emulation" because it uses emulation software E to simulate/interpret code P. No hardware emulation is done in this example. Alternatively, if company Y's graphics processor G7 were modified to include microcode to execute graphics program G as native code, that would be "hardware emulation" because graphics processor G7 hardware would not be executing external emulation software. Greensburger (talk) 05:16, 27 July 2009 (UTC)
Emulation (Software) vs. Emulation (Hardware)
editThis page covers emulation software. But there are different hardware emulators usually used by (embeded) software developers -->Hardware_emulation, HP_64000. Background: hardware emulators usually emulate the CPU or a part of a computer board for debugging purpose. They were used in former times, when CPUs did not provide a debuiuging Interface. Example: Intel 80486
I suggest to give a hint in the introduction of the article.BerndSinger (talk) —Preceding undated comment added 19:29, 30 July 2009 (UTC).
Virtual Machine
editWhy is Virtual Machine not appearing anywhere here? Doesn't a VM emulate something? Isnt a VM a kind of emulator? I'll take my answer in the article, if you are willing. Stephen Charles Thompson (talk) 17:51, 25 June 2010 (UTC)
- While I wouldn't agree that a virtual machine is an emulator, calling it one is no worse than many of the other uses to which the word has been put. If you are going to add any material on Virtual Machines in this article, I would suggest that you research the Start Interpretive Execution (SIE) instruction on the IBM 3081, IBM 3090 and subsequent machines; the only reference I have is IBM. 370/Extended Architecture/Interpreter Execution. SA22-7095.
{{cite book}}
: Unknown parameter|separator=
ignored (help) Shmuel (Seymour J.) Metz Username:Chatul (talk) 13:58, 28 June 2010 (UTC)
Level of detail
editI'm considering adding a description of the emulators on the IBM System/360 and IBM System/370, but am not sure of the appropriate level of detail. My preference would be to cite both the feature descriptions and the logic manuals, but not the CE manuals. What would be TMI in this context? Do I need to cite specific page numbers, or is that only fior cases where disputes are likely? Shmuel (Seymour J.) Metz Username:Chatul (talk) 09:50, 28 June 2010 (UTC)
Opcode
editDoes the CPU simulation translate opcode? --Christopher Forster (talk) 00:17, 6 June 2011 (UTC)
- Yes. In emulation, all opcodes, addresses, and data bytes are simulated exactly the way binary instructions would be executed in native code, except for input/output which would closely approximate the original hardware. Greensburger (talk) 13:41, 6 June 2011 (UTC)
For the "emulator vs simulator" section.
editHere is a much better explanation i found:
"A simulation is a system that behaves similar to something else, but is implemented in an entirely different way. It provides the basic behavior of a system but may not necessarily abide by all of the rules of the system being simulated. It is there to give you an idea about how something works.
Think of a flight simulator as an example. It looks and feels like you are flying an airplane, but you are completely disconnected from the reality of flying the plane, and you can bend or break those rules as you see fit. E.g.; Fly an Airbus A380 upside down between London and Sydney without breaking it.
An emulation is a system that behaves exactly like something else, and abides by all of the rules of the system being emulated. It is effectively a complete replication of another system, right down to being binary compatible with the emulated system's inputs and outputs, but operating in a different environment to the environment of the original emulated system. The rules are fixed, and cannot be changed or the system fails.
The M.A.M.E. system is built around this very premise. All those old arcade systems that have been long forgotten, that were implemented almost entirely in hardware, or in the firmware of their hardware systems can be emulated right down to the original bugs and crashes that would occur when you reached the highest possible score."
If someone could use that to improve the article, that would be great. Source: http://programmers.stackexchange.com/questions/134746/whats-the-difference-between-simulation-and-emulation — Preceding unsigned comment added by 188.73.252.78 (talk) 15:47, 16 November 2012 (UTC)
Too focused on hardware emulation
editI find this article is too focused on "legacy hardware emulation" and does not properly describe the abstract concept of "emulation" as opposed to "simulation". Some phrases do mention this, but I would rather see it as the main point of the article and not as a side-note. To better understand what I mean, here is a discussion from stackoverflow:
- Emulation is the process of mimicking the outwardly observable behavior to match an existing target. The internal state of the emulation mechanism does not have to accurately reflect the internal state of the target which it is emulating.
- Simulation, on the other hand, involves modeling the underlying state of the target. The end result of a good simulation is that the simulation model will emulate the target which it is simulating.
- Tthe goal of an emulation is to able to substitute for the object it is emulating. A simulation's focus is more on the modelling of the internal state of the target -- and the simulation does not necessarily lead to emulation. In particular, a simulation may run far slower than real time. SPICE, for example, cannot substitute for an actual electronics circuit (even if assuming there was some kind of magical device that perfectly interfaces electrical circuits to a SPICE simulation.)
--Cristiklein (talk) 09:35, 13 August 2013 (UTC)
- Historically, "emulation" referred to a simulation that used a hardware or microcode assist; the term was later extended to refer to any simulation. Shmuel (Seymour J.) Metz Username:Chatul (talk) 19:31, 13 August 2013 (UTC)
IBM 704 compatibility
editThe IBM 704 compatibility support for the 709 was a sandbox rather than a simulator. The 709 ran the 704 code at full speed, but disabled access to certain instructions and to upper memory. I question whether it belongs in the article at all, but if it is to remain than there should be enough detail to make its status clear. I'm undecided whether to delete it or to add an explanatory footnote.Shmuel (Seymour J.) Metz Username:Chatul (talk) 19:57, 25 November 2013 (UTC)
High-level emulation article to Draft
editAs a heads up, a Draft:High-level emulation article is being developed. Please add your content there. AngusWOOF (bark • sniff) 19:40, 12 January 2018 (UTC)
Major mess
editThis article completely confuses emulation with simulation. Emulation is hardware, simulation is software.
Hardware emulation here vs the actual Hardware emulation article
editWhat is described here as hardware emulation directly contradicts what the actual Hardware emulation article describes. It even warns about the exact mistake done here ("hardware emulation can be confused with hardware devices such as expansion cards with hardware processors"). FPGA based re-implementations are also not what is traditionally called hardware emulation - calling FPGA implementation hardware emulation seems to be a recent reinvention of the term that happened in the retro-gaming community. 2003:EC:8F2C:DE00:DC2C:B6E3:FFD1:B81D (talk) 10:46, 24 May 2023 (UTC)