What is the difference between hardware and software emulation?

725 views

I understand that software emulation is an application that imitates another computer and its hardware but I looked at the wiki page for hardware emulation and I’m completely lost. Is it like building a computer with the exact same logic and architecture as the original machine without actually being exactly the same so it functions the same? I’m so confused.

In: Technology

3 Answers

Anonymous 0 Comments

Software emulation doesn’t emulate the hardware of the test system. For instance if you wanted to emulate x86_64 (the instruction set architecture Windows runs on) on ARM you’d have to write an emulator that can translate the x86_64 ISA on ARM, you wouldn’t actually emulate the ARM based processor.

Anonymous 0 Comments

My understanding is that software emulation focuses on emulating the parts of the hardware needed for software to run (sometimes a specific type of software) while hardware emulation attempts to emulate the underlying hardware. This allows testing of the hardware functionality but is also more resource intensive than software emulation.

Software emulation may not implement features the same way the original hardware did while hardware emulation will attempt to simulate the exact behavior of the original hardware.

Anonymous 0 Comments

Let’s say you’re Intel and you want to design a new processor. This is an incredibly complex process that will inarguably have bugs in the design.

But if you wait until the chips have rolled out of the fab to test them, it’ll be too late to change the design (without considerable cost).

So instead you design the chip with a Hardware Description Language. You can then take that HDL code and use it on something like an FPGA (Field Programmable Gate Array – basically a processor whose functions you can change via software) for testing purposes.

While your FPGA-based version of the chip will not be nearly as fast or efficient as the final product and you’ll normally need to test in parts (because the FPGA cannot manifest the full complexity of your design), you can run your software on the FPGA version of the processor to test it.