Accuracy vs. speed is the main tradeoff with emulators. For more technical reasons, read the article.
This is kind of a myth, and with all due respect to byuu, I think laypeople would be benefited from hearing the take of other emulator authors.
There are many tradeoffs in the design of an emulator that can affect performance. For instance, performance can be effected by (this is hardly exhaustive): programming language used, portability efforts, legibility/lines of code, and effort and ingenuity in optimization. Poor accuracy is also not necessarily consciously obtained in favor of performance (or superior accuracy at the expense of performance). It can be in favor of implementation time and/or complexity. Or, very commonly, because the emulator author doesn't know have enough information for how the system works, either because he doesn't understand the available information or because the information hasn't been available in the first place. Reverse engineering hardware specifications exactly can be extremely difficult.
Several of the examples byuu gave have nothing to do with performance decisions.
Accuracy itself can refer to a lot of different things. Really broadly speaking, you can look at functional specification and timing specification as being two sort of separate things (even though they aren't really at the fundamental level). For instance an ISA may define the functional specification of an instruction set at great detail but say nothing about timing, which can vary a lot between CPU microarchitectures. But these different CPUs are still intended to run the same programs, and most programs (at least those made in the last 15+ years, outside of embedded programming) don't rely on timing to the extent that they only operate "correctly" if the timing is spot on. They might operate "differently" in some circumstances though, like having a higher framerate or exhibiting less slowdown. If this bothers you then it makes sense to push for better timing accuracy. But the popular N64 emulators suffer from way more fundamental forms of functional inaccuracy.
Note that the virtualization standards set forth by Popek and Goldberg basically boil down to the virtualized program not knowing it's being virtualized, yet performance/timing accuracy is given as an explicit exception to this.
The gold standard for timing accuracy is "cycle accuracy", which at least makes sense for consoles where everything runs off of a single clock - including I/O devices, so making a cycle accuracy CD-ROM emulator for instance makes no sense. Making a cycle accuracy N64 emulator would indeed be very resource intensive.. but first and foremost it'd be really hard to determine how all of the N64 works at this level. Since it has a lot of different components with complex interconnects.
Revolution 11 said:
I am still waiting for BenchPress to jump in here and show us how AVX2 will change emulation forever. He's been doing that for every other thread out there. :whiste:
It probably could theoretically, but it won't ;p In the context of N64 on I could see an efficient AVX2 implementation helping a lot with RSP emulation.