Emulasi mengacu pada kemampuan sebuah program komputer atau perangkat elektronik untuk meniru program lain atau perangkat. Many printers , for example, are designed to emulate Hewlett-Packard LaserJet printers because so much software is written for HP printers. Banyak printer , misalnya, dirancang untuk meniru Hewlett-Packard LaserJet printer karena begitu banyak perangkat lunak yang ditulis untuk printer HP. If a non-HP printer emulates an HP printer, any software written for a real HP printer will also run in the non-HP printer emulation and produce equivalent printing. Jika printer non-HP mengemulasi sebuah printer HP, setiap perangkat lunak yang ditulis untuk printer HP yang nyata juga akan berjalan di emulasi printer non-HP dan menghasilkan pencetakan setara.
A hardware emulator is an emulator which takes the form of a hardware device. hardware Sebuah emulator adalah emulator yang mengambil bentuk perangkat keras. Examples include the DOS-compatible card installed in some old-world Macintoshes like Centris 610 or Performa 630 that allowed them to run PC programs and FPGA -based hardware emulators . Contohnya termasuk yang kompatibel dengan kartu DOS diinstal di beberapa dunia Macintoshes tua seperti Centris 610 atau 630 Performa yang memungkinkan mereka untuk menjalankan program PC dan FPGA berbasis hardware emulator .
In a theoretical sense, the Church-Turing thesis implies that any operating environment can be emulated within any other. Dalam arti teoretis, tesis Gereja-Turing menyatakan bahwa setiap lingkungan operasi dapat ditiru dalam lainnya. However, in practice, it can be quite difficult, particularly when the exact behavior of the system to be emulated is not documented and has to be deduced through reverse engineering . Namun, dalam praktiknya, bisa cukup sulit, terutama ketika perilaku yang tepat dari sistem yang akan ditiru tidak didokumentasikan dan harus disimpulkan melalui reverse engineering . It also says nothing about timing constraints; if the emulator does not perform as quickly as the original hardware, the emulated software may run much more slowly than it would have on the original hardware, possibly triggering time interrupts to alter performance. Ia juga mengatakan apa-apa tentang kendala waktu, jika emulator tidak melakukan secepat hardware asli, software diemulasikan dapat berjalan jauh lebih lambat dari itu akan ada pada hardware asli, mungkin memicu menyela waktu untuk mengubah kinerja.
Emulation in preservation Persaingan dalam pelestarian
Emulation is a strategy in digital preservation to combat obsolescence . Persaingan adalah strategi dalam preservasi digital untuk memerangi usang . Emulation focuses on recreating an original computer environment, which can be time-consuming and difficult to achieve, but valuable because of its ability to maintain a closer connection to the authenticity of the digital object. [ 1 ] Emulasi berfokus pada menciptakan lingkungan komputer yang asli, yang bisa memakan waktu dan sulit untuk dicapai, namun berharga karena kemampuannya untuk memelihara hubungan dekat dengan keaslian objek digital. [1]
Emulation addresses the original hardware and software environment of the digital object, and recreates it on a current machine. [ 2 ] The emulator allows the user to have access to any kind of application or operating system on a current platform , while the software runs as it did in its original environment. [ 3 ] Jeffery Rothenberg, an early proponent of emulation as a digital preservation strategy states, "the ideal approach would provide a single extensible, long-term solution that can be designed once and for all and applied uniformly, automatically, and in synchrony (for example, at every refresh cycle) to all types of documents and media". [ 4 ] He further states that this should not only apply to out of date systems, but also be upwardly mobile to future unknown systems. [ 5 ] Practically speaking, when a certain application is released in a new version, rather than address compatibility issues and migration for every digital object created in the previous version of that application , one could create an emulator for the application , allowing access to all of said digital objects. Emulation alamat asli perangkat keras dan perangkat lunak lingkungan objek digital, dan membuat ulang pada komputer saat ini. [2] Emulator memungkinkan pengguna untuk memiliki akses ke segala jenis aplikasi atau sistem operasi pada saat platform , sedangkan perangkat lunak berjalan sebagai hal itu di lingkungan aslinya. [3] Jeffery Rothenberg, seorang pendukung awal emulasi sebagai preservasi digital menyatakan strategi, "pendekatan ideal akan memberikan extensible tunggal, solusi jangka panjang yang dapat dirancang sekali dan untuk semua dan diterapkan secara seragam , secara otomatis, dan selaras (misalnya, pada setiap siklus refresh) untuk semua jenis dokumen dan media ". [4] Dia lebih lanjut menyatakan bahwa ini tidak hanya berlaku untuk keluar dari sistem tanggal, tetapi juga menanjak mobile untuk masa depan yang tidak diketahui sistem. [5] Secara praktis, ketika sebuah aplikasi tertentu dilepaskan dalam versi baru, bukan alamat kompatibilitas masalah dan migrasi untuk setiap objek digital dibuat dalam versi sebelumnya dari aplikasi , kita dapat membuat sebuah emulator untuk aplikasi , yang memungkinkan akses untuk semua kata benda digital.
Benefits Manfaat
• Emulators maintain the original look, feel, and behavior of the digital object, which is just as important as the digital data itself. [ 6 ] Emulator mempertahankan tampilan asli, merasa, dan perilaku objek digital, yang sama pentingnya sebagai data digital itu sendiri. [6]
• Despite the original cost of developing an emulator, it may prove to be the more cost efficient solution over time. [ 7 ] Meskipun biaya asli mengembangkan sebuah emulator, mungkin membuktikan menjadi solusi yang lebih efisien biaya dari waktu ke waktu. [7]
• Reduces labor hours, because rather than continuing an ongoing task of continual data migration for every digital object, once the library of past and present operating systems and application software is established in an emulator, these same technologies are used for every document using those platforms . [ 3 ] Mengurangi kerja jam, karena daripada meneruskan tugas yang berkelanjutan terus-menerus migrasi data untuk setiap objek digital, setelah perpustakaan masa lalu dan kini sistem operasi dan perangkat lunak aplikasi yang didirikan pada sebuah emulator, teknologi ini sama digunakan untuk setiap dokumen yang menggunakan platform . [3]
• Many emulators have already been developed and released under GNU General Public License through the open source environment, allowing for wide scale collaboration. [ 8 ] Banyak emulator telah dikembangkan dan dirilis di bawah GNU General Public License melalui open source lingkungan, yang memungkinkan untuk kolaborasi skala luas. [8]
• Emulators allow video games exclusive to one system to be played on another. Emulator memungkinkan video game eksklusif untuk satu sistem untuk dimainkan pada yang lain. For example, a PS3 exclusive game could (in theory) be played on a PC or Xbox 360 using an emulator. Misalnya, PS3 eksklusif permainan dapat (secara teori) akan dimainkan pada PC atau Xbox 360 menggunakan sebuah emulator.
Obstacles Hambatan
• Intellectual property - Many technology vendors implemented non-standard features during program development in order to establish their niche in the market, while simultaneously applying ongoing upgrades to remain competitive. Kekayaan intelektual - vendor teknologi dilaksanakan Banyak fitur non-standar selama pengembangan program dalam rangka membangun ceruk mereka di pasar, sementara secara bersamaan menerapkan upgrade berkelanjutan untuk tetap kompetitif. While this may have advanced the technology industry and increased vendor's market share , it has left users lost in a preservation nightmare with little supporting documentation due to the proprietary nature of the hardware and software. [ 9 ] Meskipun hal ini mungkin telah maju industri teknologi dan vendor meningkat's pangsa pasar , ia telah meninggalkan pengguna hilang dalam mimpi buruk pelestarian dengan dokumen pendukung sedikit karena sifat kepemilikan perangkat keras dan perangkat lunak. [9]
• Copyright laws are not yet in effect to address saving the documentation and specifications of proprietary software and hardware in an emulator module. [ 10 ] Hak cipta hukum belum berlaku untuk mengatasi menyimpan dokumentasi dan spesifikasi perangkat lunak berpemilik dan perangkat keras dalam emulator modul. [10]
Emulators in new media art Emulator dalam seni media baru
Because of its primary use of digital formats, new media art relies heavily on emulation as a preservation strategy. Karena penggunaan utama format digital, seni media baru sangat bergantung pada persaingan sebagai sebuah strategi preservasi. Artists such as Cory Arcangel specialize in resurrecting obsolete technologies in their artwork and recognize the importance of a decentralized and deinstitutionalized process for the preservation of digital culture. Seniman seperti Cory Arcangel mengkhususkan diri dalam membangkitkan teknologi usang dalam karya seni mereka dan mengakui pentingnya dan deinstitutionalized proses desentralisasi untuk pelestarian budaya digital.
In many cases, the goal of emulation in new media art is to preserve a digital medium so that it can be saved indefinitely and reproduced without error, so that there is no reliance on hardware that ages and becomes obsolete. Dalam banyak kasus, tujuan persaingan dalam seni media baru adalah untuk melestarikan media digital sehingga dapat disimpan tanpa batas waktu dan direproduksi tanpa kesalahan, sehingga tidak ada ketergantungan pada perangkat keras yang usia dan menjadi usang. The paradox is that the emulation and the emulator have to be made to work on future computers. [ 11 ] Paradoksnya adalah bahwa persaingan dan emulator harus dibuat untuk bekerja pada komputer masa depan. [11]
Types of emulators Jenis-jenis emulator
Windows XP running an Acorn Archimedes emulator, which is in turn running a Sinclair ZX Spectrum emulator. Windows XP menjalankan Acorn Archimedes emulator, yang pada gilirannya menjalankan Sinclair ZX Spectrum emulator.
Most emulators just emulate a hardware architecture—if operating system firmware or software is required for the desired software, it must be provided as well (and may itself be emulated). Kebanyakan emulator hanya mengemulasikan hardware arsitektur-jika sistem operasi firmware atau perangkat lunak yang diperlukan untuk perangkat lunak yang dikehendaki, maka harus disediakan juga (dan mungkin sendiri akan ditiru). Both the OS and the software will then be interpreted by the emulator, rather than being run by native hardware. Baik OS dan perangkat lunak kemudian akan diinterpretasikan oleh emulator, daripada yang dijalankan oleh perangkat keras asli. Apart from this interpreter for the emulated binary machine's language , some other hardware (such as input or output devices) must be provided in virtual form as well; for example, if writing to a specific memory location should influence what is displayed on the screen, then this would need to be emulated. Selain itu juru bahasa untuk biner ditiru itu bahasa mesin , beberapa perangkat keras lain (seperti atau keluaran perangkat input) harus diberikan dalam bentuk virtual juga, misalnya, jika menulis ke lokasi memori tertentu harus mempengaruhi apa yang ditampilkan di layar, maka ini akan perlu dicontoh.
While emulation could, if taken to the extreme, go down to the atomic level, basing its output on a simulation of the actual circuitry from a virtual power source, this would be a highly unusual solution. Sementara emulasi bisa, jika dibawa ke ekstrim, pergi ke tingkat atom, output mendasarkan pada simulasi sirkuit yang sebenarnya dari sumber listrik virtual, ini akan menjadi solusi yang sangat tidak biasa. Emulators typically stop at a simulation of the documented hardware specifications and digital logic. Emulator biasanya berhenti di sebuah simulasi dari spesifikasi hardware didokumentasikan dan logika digital. Sufficient emulation of some hardware platforms requires extreme accuracy, down to the level of individual clock cycles, undocumented features, unpredictable analog elements, and implementation bugs. persaingan yang cukup dari beberapa platform perangkat keras membutuhkan akurasi ekstrim, sampai ke tingkat jam siklus individu, tidak berdokumen fitur, elemen analog tidak terduga, dan bug implementasi. This is particularly the case with classic home computers such as the Commodore 64 , whose software often depends on highly sophisticated low-level programming tricks invented by game programmers and the demoscene . Hal ini terutama terjadi pada komputer rumah klasik seperti Commodore 64 , yang sering tergantung pada software pemrograman tingkat rendah-trik canggih sangat ditemukan oleh programmer permainan dan demoscene .
In contrast, some other platforms have had very little use of direct hardware addressing. Sebaliknya, beberapa platform lain memiliki sangat sedikit digunakan hardware langsung menangani. In these cases, a simple compatibility layer may suffice. Dalam kasus ini, sederhana lapisan kompatibilitas mungkin cukup. This translates system calls for the emulated system into system calls for the host system eg, the Linux compatibility layer used on *BSD to run closed source Linux native software on FreeBSD, NetBSD and OpenBSD. Sistem menerjemahkan panggilan untuk sistem ditiru menjadi panggilan sistem untuk sistem host misalnya, kompatibilitas Linux lapisan digunakan pada * BSD untuk menjalankan perangkat lunak sumber Linux ditutup pribumi di FreeBSD, NetBSD dan OpenBSD.
Developers of software for embedded systems or video game consoles often design their software on especially accurate emulators called simulators before trying it on the real hardware. Pengembang perangkat lunak untuk embedded system atau konsol permainan video sering desain perangkat lunak mereka pada emulator akurat terutama disebut simulator sebelum mencoba pada perangkat keras yang sebenarnya. 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 and without introducing the side effects of a debugger . Hal ini dimaksudkan agar perangkat lunak dapat diproduksi dan diuji sebelum hardware final ada dalam jumlah besar, sehingga dapat diuji tanpa meluangkan waktu untuk menyalin program yang akan debug pada tingkat rendah dan tanpa memperkenalkan efek samping dari sebuah debugger . In many cases, the simulator is actually produced by the company providing the hardware, which theoretically increases its accuracy. Dalam banyak kasus, simulator sebenarnya diproduksi oleh perusahaan yang menyediakan perangkat keras, yang secara teoritis meningkatkan akurasinya.
Math coprocessor emulators allow programs compiled with math instructions to run on machines that don't have the coprocessor installed, but the extra work done by the CPU may slow the system down. Math coprocessor emulator memungkinkan program dikompilasi dengan instruksi matematika untuk berjalan pada mesin yang tidak memiliki coprocessor terinstal, tetapi bekerja ekstra yang dilakukan oleh CPU dapat memperlambat sistem bawah. If a math coprocessor isn't installed or present on the CPU, when the CPU executes any coprocessor instruction it will make a determined interrupt (coprocessor not available), calling the math emulator routines. Jika math coprocessor tidak terinstal atau ada pada CPU, ketika CPU melakukan suatu instruksi coprocessor itu akan membuat ditentukan mengganggu (coprocessor tidak tersedia), menyebut matematika emulator rutinitas. When the instruction is successfully emulated, the program continues executing. Ketika instruksi berhasil ditiru, program ini terus dijalankan.
Structure of an emulator Struktur sebuah emulator
This article's section named "Structure of an emulator" needs additional citations for verification . artikel Bagian ini bernama "Struktur sebuah emulator" kebutuhan tambahan kutipan untuk verifikasi .
Please help improve this article by adding reliable references . Silakan bantu memperbaiki artikel ini dengan menambahkan referensi yang handal . Unsourced material may be challenged and removed . (June 2008) Disertai rujukan bahan mungkin ditantang dan dihapus . (Juni 2008)
Typically, an emulator is divided into modules that correspond roughly to the emulated computer's subsystems. Biasanya, sebuah emulator dibagi menjadi modul-modul yang sesuai kira-kira untuk dicontoh's komputer subsistem tersebut. Most often, an emulator will be composed of the following modules: Paling sering, sebuah emulator akan terdiri dari modul berikut:
• a CPU emulator or CPU simulator (the two terms are mostly interchangeable in this case) CPU CPU emulator atau simulator (dua istilah kebanyakan dipertukarkan dalam kasus ini)
• a memory subsystem module modul memori subsistem
• various I/O devices emulators berbagai I / O device emulator
Buses are often not emulated, either for reasons of performance or simplicity, and virtual peripherals communicate directly with the CPU or the memory subsystem. Bus sering tidak ditiru, baik untuk alasan kinerja atau kesederhanaan, dan perangkat virtual berkomunikasi langsung dengan CPU atau subsistem memori.
Memory subsystem Memori subsistem
It is possible for the memory subsystem emulation to be reduced to simply an array of elements each sized like an emulated word; however, this model falls very quickly as soon as any location in the computer's logical memory does not match physical memory . Hal ini dimungkinkan untuk emulasi subsistem memori dikurangi menjadi hanya sebuah array dari elemen masing-masing berukuran seperti kata ditiru, namun model ini jatuh sangat cepat secepat apapun logis lokasi di memori komputer tidak cocok dengan memori fisik .
This clearly is the case whenever the emulated hardware allows for advanced memory management (in which case, the MMU logic can be embedded in the memory emulator, made a module of its own, or sometimes integrated into the CPU simulator). Hal ini jelas terjadi setiap kali perangkat keras ditiru memungkinkan untuk manajemen memori maju (dalam hal ini, maka MMU logika dapat tertanam dalam memori emulator, membuat modul sendiri, atau kadang-kadang diintegrasikan ke dalam simulator CPU).
Even if the emulated computer does not feature an MMU, though, there are usually other factors that break the equivalence between logical and physical memory: many (if not most) architecture offer memory-mapped I/O ; even those that do not almost invariably have a block of logical memory mapped to ROM , which means that the memory-array module must be discarded if the read-only nature of ROM is to be emulated. Bahkan jika komputer tidak ditiru fitur sebuah MMU, meskipun, biasanya ada faktor lain yang melanggar kesetaraan antara fisik dan memori logika: banyak (jika tidak sebagian besar) menawarkan arsitektur memori-mapped I / O ; bahkan mereka yang tidak hampir selalu memiliki blok memori logis dipetakan ke ROM , yang berarti bahwa modul memori-array harus dibuang jika hanya membaca sifat ROM yang akan dicontoh. Features such as bank switching or segmentation may also complicate memory emulation. Fitur seperti switching bank atau segmentasi juga dapat mempersulit emulasi memori.
As a result, most emulators implement at least two procedures for writing to and reading from logical memory, and it is these procedures' duty to map every access to the correct location of the correct object. Akibatnya, emulator yang paling menerapkan setidaknya dua prosedur untuk menulis dan membaca dari memori logis, dan itu adalah tugas prosedur 'untuk memetakan setiap akses ke lokasi yang benar dari objek yang benar.
On a base-limit addressing system where memory from address 0 to address ROMSIZE-1 is read-only memory, while the rest is RAM, something along the line of the following procedures would be typical: Pada batas-basa menangani sistem dimana alamat memori dari 0 ke alamat ROMSIZE-1 adalah read-only memori, sedangkan sisanya RAM, sesuatu di sepanjang garis prosedur berikut akan khas:
void WriteMemory ( word Address , word Value ) { void WriteMemory (kata Alamat, kata Value) {
word RealAddress ; kata RealAddress;
RealAddress = Address + BaseRegister ; RealAddress = Alamat + BaseRegister;
if ( ( RealAddress < LimitRegister ) && if ((RealAddress LimitRegister <) & &
( RealAddress > ROMSIZE ) ) { (RealAddress ROMSIZE>)) {
Memory [ RealAddress ] = Value ; Memory [RealAddress] = Nilai;
} else { } Else {
RaiseInterrupt ( INT_SEGFAULT ) ; RaiseInterrupt (INT_SEGFAULT);
} }
} }
word ReadMemory ( word Address ) { ReadMemory kata (kata Alamat) {
word RealAddress ; kata RealAddress;
RealAddress = Address + BaseRegister ; RealAddress = Alamat + BaseRegister;
if ( RealAddress < LimitRegister ) { if (LimitRegister
} else { } Else {
RaiseInterrupt ( INT_SEGFAULT ) ; RaiseInterrupt (INT_SEGFAULT);
return NULL ; return NULL;
} }
} }
CPU simulator CPU simulator
The CPU simulator is often the most complicated part of an emulator. CPU simulator seringkali merupakan bagian paling rumit dari sebuah emulator. Many emulators are written using "pre-packaged" CPU simulators, in order to concentrate on good and efficient emulation of a specific machine. Banyak emulator ditulis menggunakan "pra-paket" simulator CPU, untuk berkonsentrasi pada persaingan yang baik dan efisien dari suatu mesin yang spesifik.
The simplest form of a CPU simulator is an interpreter , which follows the execution flow of the emulated program code and, for every machine code instruction encountered, executes operations on the host processor that are semantically equivalent to the original instructions. Bentuk paling sederhana dari CPU simulator merupakan interpreter , yang mengikuti aliran eksekusi kode program ditiru dan, untuk setiap instruksi kode mesin ditemui, melaksanakan operasi pada prosesor host yang semantik setara dengan petunjuk aslinya.
This is made possible by assigning a variable to each register and flag of the simulated CPU. Hal ini dimungkinkan dengan menetapkan variabel untuk masing-masing mendaftar dan bendera dari CPU simulasi. The logic of the simulated CPU can then more or less be directly translated into software algorithms, creating a software re-implementation that basically mirrors the original hardware implementation. Logika dari CPU simulasi kemudian dapat lebih atau kurang langsung diterjemahkan ke dalam algoritma perangkat lunak, menciptakan ulang implementasi software yang pada dasarnya mencerminkan implementasi hardware asli.
The following example illustrates how CPU simulation can be accomplished by an interpreter. Contoh berikut menggambarkan bagaimana simulasi CPU yang dapat dicapai oleh seorang penerjemah. In this case, interrupts are checked-for before every instruction executed, though this behavior is rare in real emulators for performance reasons. Dalam hal ini, menyela-untuk diperiksa sebelum setiap instruksi dieksekusi, meskipun perilaku ini jarang terjadi di emulator nyata untuk alasan kinerja.
void Execute ( void ) { void Execute (void) {
if ( Interrupt != INT_NONE ) { if (Interrupt! = INT_NONE) {
SuperUser = TRUE ; SuperUser = TRUE;
WriteMemory ( ++ StackPointer , ProgramCounter ) ; WriteMemory (+ + StackPointer, ProgramCounter);
ProgramCounter = InterruptPointer ; ProgramCounter = InterruptPointer;
} }
switch ( ReadMemory ( ProgramCounter ++ ) ) { switch (ReadMemory (ProgramCounter + +)) {
/* / *
* Handling of every valid instruction * Penanganan setiap instruksi yang valid
* goes here... * Pergi di sini ...
*/ * /
default : default:
Interrupt = INT_ILLEGAL ; Interrupt = INT_ILLEGAL;
} }
} }
Interpreters are very popular as computer simulators, as they are much simpler to implement than more time-efficient alternative solutions, and their speed is more than adequate for emulating computers of more than roughly a decade ago on modern machines. Juru sangat populer sebagai simulator komputer, karena mereka jauh lebih sederhana untuk diterapkan daripada solusi alternatif lebih hemat waktu, dan kecepatan mereka lebih dari cukup untuk meniru komputer lebih dari sekitar satu dekade yang lalu pada mesin modern.
However, the speed penalty inherent in interpretation can be a problem when emulating computers whose processor speed is on the same order of magnitude as the host machine. Namun, hukuman kecepatan yang melekat dalam interpretasi dapat menjadi masalah ketika meniru kecepatan prosesor komputer yang sama ada di urutan besarnya sebagai mesin host. Until not many years ago, emulation in such situations was considered completely impractical by many. Sampai tidak bertahun-tahun yang lalu, persaingan dalam situasi seperti itu dianggap benar-benar tidak praktis oleh banyak orang.
What allowed breaking through this restriction were the advances in dynamic recompilation techniques. Apa yang diperbolehkan menerobos pembatasan ini adalah kemajuan dalam kompilasi dinamis teknik. Simple a priori translation of emulated program code into code runnable on the host architecture is usually impossible because of several reasons: Wikipedia apriori terjemahan kode program ditiru ke dalam kode runnable pada arsitektur host biasanya mustahil karena beberapa alasan:
• code may be modified while in RAM , even if it is modified only by the emulated operating system when loading the code (for example from disk) kode dapat dimodifikasi sementara di RAM , bahkan jika hal itu diubah hanya oleh sistem operasi ditiru ketika loading kode (misalnya dari disk)
• there may not be a way to reliably distinguish data (which should not be translated) from executable code . mungkin tidak ada cara untuk membedakan andal data (yang tidak boleh diterjemahkan) dari eksekusi kode .
Various forms of dynamic recompilation, including the popular Just In Time compiler (JIT) technique, try to circumvent these problems by waiting until the processor control flow jumps into a location containing untranslated code, and only then ("just in time") translates a block of the code into host code that can be executed. Berbagai bentuk kompilasi dinamis, termasuk yang populer Just In Time) Compiler (JIT teknik, cobalah untuk menghindari masalah ini dengan menunggu sampai kontrol aliran prosesor melompat ke lokasi yang berisi kode diterjemahkan, dan hanya kemudian ("tepat waktu") menerjemahkan blok kode ke dalam kode host yang dapat dieksekusi. The translated code is kept in a code cache , and the original code is not lost or affected; this way, even data segments can be (meaninglessly) translated by the recompiler, resulting in no more than a waste of translation time. Kode diterjemahkan disimpan dalam kode cache , dan kode asli tidak hilang atau terkena dampak; cara ini, bahkan segmen data dapat (meaninglessly) diterjemahkan oleh recompiler, sehingga dalam waktu tidak lebih dari membuang-buang waktu terjemahan.
Speed may not be desirable as some older games were not designed with the speed of faster computers in mind. Kecepatan mungkin tidak diinginkan karena beberapa permainan yang lebih tua tidak dirancang dengan kecepatan komputer yang lebih cepat dalam pikiran. A game designed for a 30 MHz PC with a level timer of 300 game seconds might only give the player 30 seconds on a 300 MHz PC. Sebuah permainan yang dirancang untuk PC 30 MHz dengan tingkat timer 300 detik permainan mungkin hanya memberi pemain 30 detik pada PC 300 MHz. Other programs, such as some DOS programs, may not even run on faster computers. Program lain, seperti beberapa program DOS, bahkan mungkin tidak berjalan pada komputer yang lebih cepat. Particularly when emulating computers which were "closed-box", in which changes to the core of the system were not typical, software may use techniques that depend on specific characteristics of the computer it ran on (ie its CPU's speed) and thus precise control of the speed of emulation is important for such applications to be properly emulated. Terutama ketika meniru komputer yang "tertutup-kotak", di mana perubahan pada inti sistem itu tidak khas, perangkat lunak dapat menggunakan teknik yang tergantung pada karakteristik khusus dari komputer itu berlari pada (yaitu kecepatan CPU) dan dengan demikian kontrol yang tepat dari kecepatan emulasi adalah penting untuk aplikasi seperti untuk menjadi benar dicontoh.
I/O I / O
Most emulators do not, as mentioned earlier, emulate the main system bus ; each I/O device is thus often treated as a special case, and no consistent interface for virtual peripherals is provided. Kebanyakan emulator tidak, seperti yang disebutkan sebelumnya, meniru utama bus sistem , setiap I / O device demikian sering diperlakukan sebagai kasus khusus, dan tidak ada antarmuka yang konsisten untuk periferal virtual disediakan.
This can result in a performance advantage, since each I/O module can be tailored to the characteristics of the emulated device; designs based on a standard, unified I/O API can, however, rival such simpler models, if well thought-out, and they have the additional advantage of "automatically" providing a plug-in service through which third-party virtual devices can be used within the emulator. Hal ini dapat menghasilkan keuntungan kinerja, karena masing-masing modul I / O dapat disesuaikan dengan karakteristik perangkat ditiru; desain berdasarkan standar, bersatu I / O API bisa, bagaimanapun, saingan model sederhana tersebut, jika dipikirkan dengan baik-out , dan mereka memiliki keuntungan tambahan "secara otomatis" menyediakan plug-in layanan melalui perangkat virtual yang pihak ketiga dapat digunakan dalam emulator.
A unified I/O API may not necessarily mirror the structure of the real hardware bus: bus design is limited by several electric constraints and a need for hardware concurrency management that can mostly be ignored in a software implementation. Sebuah Saya terpadu / O API belum tentu mencerminkan struktur bus perangkat keras yang nyata: desain bus dibatasi oleh beberapa kendala listrik dan kebutuhan untuk perangkat keras concurrency manajemen yang kebanyakan dapat diabaikan dalam implementasi software.
Even in emulators that treat each device as a special case, there is usually a common basic infrastructure for: Bahkan di emulator yang memperlakukan setiap perangkat sebagai kasus khusus, biasanya ada infrastruktur dasar umum untuk:
• managing interrupts , by means of a procedure that sets flags readable by the CPU simulator whenever an interrupt is raised, allowing the virtual CPU to "poll for (virtual) interrupts" mengelola menyela , melalui prosedur yang menetapkan bendera dapat dibaca oleh CPU simulator setiap kali interrupt dinaikkan, yang memungkinkan CPU virtual untuk "jajak pendapat untuk (virtual) interupsi"
• writing to and reading from physical memory, by means of two procedures similar to the ones dealing with logical memory (although, contrary to the latter, the former can often be left out, and direct references to the memory array be employed instead) menulis dan membaca dari memori fisik, melalui dua prosedur yang sama dengan yang berurusan dengan memori logis (meskipun, bertentangan dengan yang kedua, yang pertama sering bisa ditinggalkan, dan referensi langsung ke memori array dipekerjakan sebagai gantinya)
Emulation versus simulation Emulation versus simulasi
The word "emulator" was coined in 1957 at IBM, as an optional feature in the IBM 709 to execute legacy IBM 704 programs on the IBM 709. Kata "emulator" diciptakan pada tahun 1957 di IBM, sebagai fitur opsional dalam IBM 709 untuk mengeksekusi warisan IBM 704 program pada IBM 709. Registers and most 704 instructions were emulated in 709 hardware. Register dan sebagian besar instruksi 704 dicontoh di 709 hardware. Complex 704 instructions such as floating point trap and input-output routines were emulated in 709 software. 704 instruksi kompleks seperti perangkap floating point dan rutinitas input-output dicontoh di 709 perangkat lunak. In 1963, IBM constructed emulators for development of the NPL (360) product line, for the "new combination of software, microcode, and hardware". [ 12 ] Pada tahun 1963, IBM dibangun emulator untuk pengembangan garis (360) produk NPL, untuk "kombinasi baru perangkat lunak, microcode, dan perangkat keras". [12]
It has recently become common to use the word "emulate" in the context of software. Baru-baru ini menjadi umum untuk menggunakan kata "meniru" dalam konteks perangkat lunak. However, before 1980, "emulation" referred only to emulation with a hardware or microcode assist, while "simulation" referred to pure software emulation. [ 13 ] For example, a computer specially built for running programs designed for another architecture is an emulator. Namun, sebelum 1980, "emulasi" dimaksud hanya untuk persaingan dengan hardware atau microcode membantu, sementara "simulasi" disebut perangkat lunak emulasi murni. [13] Sebagai contoh, sebuah komputer khusus dibangun untuk menjalankan program yang dirancang untuk arsitektur lain adalah sebuah emulator. In contrast, a simulator could be a program which runs on a PC, so that old Atari games can be run on it. Sebaliknya, simulator bisa menjadi program yang berjalan pada PC, sehingga Atari game lama bisa dijalankan di atasnya. Purists continue to insist on this distinction, but currently the term "emulation" often means the complete imitation of a machine executing binary code. Puritan terus bersikeras mengenai perbedaan ini, tapi saat ini "emulasi" istilah yang sering berarti meniru lengkap dari sebuah mesin mengeksekusi kode biner.
Logic simulators Logika simulator
Main article: Logic simulation Artikel utama: simulasi Logika
Logic simulation is the use of a computer program to simulate the operation of a digital circuit such as a processor. simulasi Logika adalah penggunaan program komputer untuk mensimulasikan pengoperasian sirkuit digital seperti prosesor. This is done after a digital circuit has been designed in logic equations, but before the circuit is fabricated in hardware. Hal ini dilakukan setelah sirkuit digital telah dirancang dalam persamaan logika, tapi sebelum sirkuit yang dibuat di hardware.
Functional simulators Fungsional simulator
Main article: High level emulation Artikel utama: emulasi tingkat tinggi
Functional simulation is the use of a computer program to simulate the execution of a second computer program written in symbolic assembly language or compiler language, rather than in binary machine code . simulasi fungsional adalah penggunaan program komputer untuk mensimulasikan pelaksanaan program komputer kedua ditulis dalam simbolik bahasa assembly atau compiler bahasa, bukan dalam biner kode mesin . By using a functional simulator, programmers can execute and trace selected sections of source code to search for programming errors (bugs), without generating binary code. Dengan menggunakan simulator fungsional, pemrogram dapat mengeksekusi dan menelusuri bagian-bagian tertentu dari kode sumber untuk mencari kesalahan pemrograman (bug), tanpa membuat kode biner. This is distinct from simulating execution of binary code, which is software emulation. Hal ini berbeda dari simulasi eksekusi kode biner, yang merupakan emulasi perangkat lunak.
The first functional simulator was written by Autonetics about 1960 for testing assembly language programs for later execution in military computer D-17B . Simulator fungsional pertama ditulis oleh Autonetics tahun 1960 untuk menguji program-program bahasa assembly untuk eksekusi kemudian di komputer militer D-17B . This was so that flight programs could be written, executed, and tested before D-17B computer hardware had been built. Ini adalah supaya program penerbangan dapat ditulis, dijalankan, dan diuji sebelum perangkat keras komputer D-17B telah dibangun. Autonetics also programmed a functional simulator for testing flight programs for later execution in the military computer D-37C . Autonetics juga diprogram simulator fungsional untuk pengujian program penerbangan untuk eksekusi kemudian di komputer militer D-37C .
Video game console emulators Video game konsol emulator
Main article: Video game console emulator Artikel utama: Video konsol game emulator
Video game console emulators are programs that allow a computer or modern console to emulate a video game console. Video game konsol emulator adalah program yang memungkinkan komputer atau konsol modern untuk meniru video game konsol. They are most often used to play older video games on personal computers and modern video game consoles, but they are also used to translate games into other languages, to modify existing games, and in the development process of home brew demos and new games for older systems. Mereka yang paling sering digunakan untuk bermain video game lebih tua pada komputer pribadi dan konsol permainan video modern, tetapi mereka juga digunakan untuk menerjemahkan game ke dalam bahasa lain, untuk mengubah game yang ada, dan dalam proses pembangunan demo minuman rumah dan permainan baru untuk yang lebih tua sistem. The internet has helped in the spread of console emulators, as most - if not all - would be unavailable for sale in retail outlets. Ini internet telah membantu dalam penyebaran konsol emulator, karena kebanyakan - jika tidak semua - akan tersedia untuk dijual di gerai ritel. Examples of console emulators that have been released in the last 2 decades are: Dolphin , Zsnes , Kega Fusion , Desmume , Epsxe , Project64 , Visual Boy Advance , NullDC and Nestopia . Contoh emulator konsol yang telah dirilis dalam dekade terakhir 2 adalah: Dolphin , Zsnes , Kega Fusion , Desmume , ePSXe , Project64 , Visual Boy Advance , NullDC dan Nestopia .
Terminal emulators Terminal emulator
Main article: Terminal emulator Artikel utama: Terminal emulator
Terminal emulators are software programs that provide modern computers and devices interactive access to applications running on mainframe computer operating systems or other host systems such as HP-UX or OpenVMS . Terminal emulator adalah software program yang menyediakan komputer modern dan perangkat akses interaktif ke aplikasi yang berjalan pada komputer mainframe sistem operasi atau sistem host lainnya seperti HP-UX atau OpenVMS . Terminals such as the IBM 3270 or VT100 and many others, are no longer produced as physical devices. Terminal seperti IBM 3270 atau VT100 dan banyak lainnya, tidak lagi diproduksi sebagai perangkat fisik. Instead, software running on modern operating systems simulates a "dumb" terminal and is able to render the graphical and text elements of the host application, send keystrokes and process commands using the appropriate terminal protocol. Sebaliknya, perangkat lunak yang berjalan pada sistem operasi modern mensimulasikan "dumb" terminal dan mampu membuat elemen grafis dan teks dari aplikasi host, mengirim perintah penekanan tombol dan proses menggunakan protokol terminal yang sesuai.