Happy 30, 80186 (and 0b100000, 8051)

As mentioned in past blog posts on Simics, maintaining old software and developing new software for older hardware is a not-too-uncommon use case for Simics. Case in point: we recently added a couple of new target processors to the Simics model library that most people would probably consider "surprisingly old" hardware. For a long-time embedded programmer like myself, it just feels like going back to the roots.


The 80186 was launched by Intel in 1982, and was an interesting little branch on the 8086 family tree. It had most of the devices needed to build a complete system on the chip along with the processor core, making a full system much cheaper to build than with the 8086.

Unfortunately, it did not have the same devices in the same places as the IBM PC. This killed the 80186 in the general computer market, even though a surprising number of education computers were designed based on the 80186. I actually briefly used one such computer in high school, the Compis. I remember trying to find a way to harness its enormous 256 kB of RAM to implement a sieve of Eratosthenes on a bit level, but could never figure out the segmented memory system nor find a working assembler. Soon, the Compis machines got replaced by regular PCs.

Still, the 80186 found a lot of takers in the embedded space. Intel manufactured them until 2007, and there are a few companies selling 80186-compatible soft cores for use in FPGAs and ASICs. Sometimes, a 16-bit processor is all you need and if there is a large set of legacy software for it, why go to the huge expense to change both it and the hardware with the resulting need to recertify the system top-to-bottom?

80186 in Simics
So, in time for its 30th birthday, the 80186 seems to be still going pretty strong, and we just released a Simics model of the 80186 instruction set to be used to build simulations of any old (or new) system out that that uses this venerable processor.

Another old Intel processor that seems to have infinite life is the 8051. When I started in the embedded field in the mid-1990s, I was told that there were a billion 8051 variants sold each year, and that this seemed to have always been the case and would always be the case. While I do suspect that the volumes are lower today, the 8051 is very much alive and kicking. Intel is not making any 8051 chips anymore, but the 8051 instruction set has been used in microcontrollers from many different vendors. Today, there are companies selling single-cycle 8051 cores that can be clocked at 450 Mhz, executing code some 450 times faster than the original processor did!

8051 in Simics

This year, the 8051 turns binary 100000, a nice age for a processor. Just like for the 80186, we recently added a model of this old processor to the Simics model library. It is actually the first 8-bit processor ever modeled in Simics, after more than twenty years of Simics development. Since the simulator is pretty flexible, the 8051 can be configured as an 8052 as well (really just a change in the size of memory).

Indeed, Simics started out modeling 32-bit SPARCs, moved on to 64-bit processors, and now we seem to be moving back down the size ladder to address 16-bit and 8-bit machines. Just goes to demonstrate the flexibility of the framework and the wide span of markets we are addressing with Simics. In Simics, we can have a system setup containing a mix of multicore 64-bit Intel Sandy Bridge processors alongside 8-bit Intel 8051s, all talking to 32-bit ARMs and Power Architecture processors.

New or old, big or small, little- or big-endian: as said before, resistance is futile, you will be simulated.