A 16-bit bus does not a 386 make…

If you were very young in the early 1990s, or were born after that time, you may have gotten the impression from some retro enthusiasts that certain CPUs labeled “486” aren’t really a 486 at all. Many will point to the fact that these chips have a 16-bit external interface to the mainboard and conclude that they can’t really be a 486. Others may point to their performance being in-between that of a 386 and a i486DX and conclude it’s just a tweaked 386. So what makes a 386, or a 486 for that matter, and are these retro enthusiasts right?

History & Technical Specs

Intel introduced the 80386 in 1985. The 80386, later called the i386 was a huge step forward from Intel’s previous generation of 16-bit microprocessors, the 8086, 8088 and the 80286. Intel extended the architecture & instruction set of the 80286 to 32-bits and added additional features such as a 6-stage pipeline, and an on-chip memory management unit. Intel also added 2 new operating modes (real mode, virtual mode) and extended the existing protected mode to allow for addressing up to 4GB of memory. Like the 80286, the 80386 did not have an internal floating point unit and instead had the option of adding an external math co-processor. Intel also added 16 new instructions to the instruction set of the 80386: BSF, BSR, BT, BTS, BTR, BTC, CDQ, CWDE, LFS, LGS, LSS, MOVSX, MOVZX, SETcc, SHLD, SHRD.

As soon as the 80386, (later rebadged the i386) was in production, Intel began work on the i486 microprocessor. The i486 was released in 1989 and was a more incremental improvement to the i386 design. Like it’s predecessor, the i486 was a 32-bit microprocessor based on the same instruction set, but with a few extensions and improvements. Intel added only 6 new instructions to the i486, ( XADD, BSWAP, CMPXCHG, INVD, WBINVD, INVLPG) but there were many other improvements. An 8k on-chip cache memory, what we now refer to as level 1 greatly enhanced performance. Intel also included an improved version of the memory management unit which further enhanced memory performance. Another improvement was tight pipelining which allowed for simple instructions to complete in a single clock cycle as opposed to 2 on the i386. The one change the i486 (DX) is remembered for is the integration of an on-chip FPU which did away with the need for an external math co-processor. This not only simplified mainboard design, but further enhanced the performance of the floating point unit.

Enter the competition

A relative newcomer to the x86 microprocessor market named Cyrix released their first 486 compatible CPU in 1992, just 3 years after Intel’s i486. Cyrix had previously produced a range of math co-processors known as “FasMath” for the 80286 and later i386. This new processor, the Cx486SLC was intended to be pin-compatible with the i386 and thus had some compromises made to fit the older CPU’s design. Like the lower end i386SX chips it was intended to replace, this meant it was connected via a 16-bit external bus and had a 24-bit address bus. Like Intel’s i486, the Cyrix chip also included an on-chip L1 cache, but unfortunately this was cut down to 1k in the initial version. The Cx486SLC did have a 32-bit internal data bus and supported 8, 16 and 32-bit data types as well as a fully i486 compatible instruction set. 1 month later, in April 1992 Cyrix introduced the Cx486DLC in a 132-pin package that was pin-compatible with the i386DX. This was a fully 32-bit chip, both internally and externally and thus wasn’t subject to some of the performance limitations of the earlier SLC design. While not intended as a direct drop-in replacement for the i386, the Cyrix chips could be used in older mainboards with some minor modifications. (Cyrix did later manufacture upgrade chips like the Cx486DRx2) What this really achieved was the production of Cyrix compatible boards that were cheaper to manufacture than i486 boards because they used older components common with earlier i386 systems. In 1992 Cyrix did not have an i486 (socket 3) pin-compatible chip available. This wouldn’t happen until a year later when the company launched the Cx486S and Cx486DX which included an on-chip FPU as well.

A 386 or a 486?

While the Cyrix Cx486SLC certainly bears some similarities to the earlier i386 due to their pin-compatible design, the chip is clearly not a 386. It has all of the instructions and features of the Intel chip, but in a cost-reduced, low-power design. Certain aspects of the MMU and FPU design on the Cyrix chips were ultimately inferior to the i486, hurting their performance, but this alone does not make them a 386. The form factor and physical limitations of the i386 SX packaging and performance taken together is likely what formed these opinions among many. However, taking a closer look at the architecture, it’s clear the Cyrix 486SLC/DLC and later 486 designs were true 4th generation x86 CPUs, though somewhat lower performing budget options. (clock for clock)

Put another way, calling a Cyrix 486 a “386” would be like calling the 8088 a “fancy 8080.” If you don’t get my reference, stick with me for a sec. The 8008, 8080 (and later 8085) were Intel’s earlier 8-bit line of microprocessors. They were much simpler than Intel’s first 16-bit CPU, the 8086, but used a similar base microarchitecture. The original IBM PC XT used the 8088 which was a 16-bit CPU like the earlier 8086, but was constructed with an 8-bit data bus similar to the earlier 8080 and 8085. This made it possible to build a system around the 8088 using much cheaper components than would be possible with an 8086. (see the similarities?) The 8086 was a far superior chip, clocked at double the speed of the 8088 and with a 16-bit data bus, but both chips were capable of running the same software. While the 8086 famously appeared in several popular systems like the original Compaq Deskpro and the Tandy 1000 SL/RL, it was the PC XT’s 8088 that kicked off the PC revolution.

(mostly) 4th Gen x86 Shootout!

Having recently restored my old 486SLC board, I was curious how it stacked up against other 486s of the era. I actually have a fairly decent collection of chips from this time period and a few motherboards that accept them.

For the majority of this test, I used a PerComp branded board made by PC Chips, (model M912) that has a fairly broad range of support for these CPUs and is based on the PC Chips “Chip 16″/”Chip 18” chipset. The board is configured with 256KB of L2 cache, 16MB of 32-pin SIMM memory and supports 7x 16-bit ISA expansion slots, 3 of which support 32-bit VLB cards.

stock photo of an unlabeled M912 board

One funny thing about this board is the branding on the chipset. At the time PC Chips didn’t have a great reputation for performance. In an attempt to boost their sales, they often placed stickers on their chips with the model numbers of other more popular chipsets.

fake chipset branding
actual chipset branding

Alright, enough of the history… let’s get into the testing! The chips I selected for the test were several Intel CPUs, a couple of Cyrix CPUs and a single AMD CPU. These were as follows: i486SX-25 (overclocked to 33Mhz), i486DX-33, i486DX2-66, Cx486DX2-66, Am486DX4-100, Cx5x86-100 (overclocked to 120Mhz)

stock photo of the chip I have. Mine has a fan bolted onto the heatsink as I’ve overclocked it to 120Mhz

The five 486 CPUs shown above all contain 8k of L1 cache on-die. They were all tested on the same motherboard mentioned above, which was configured with 256k of L2 cache.

I’ve also included the 486SLC numbers from a previous test. The SLC and the 5×86 aren’t a good direct comparison since the motherboard and configurations are quite different. Unfortunately, I managed to kill the Cyrix 486DX2-66 when I tested it the second time and wasn’t able to get cache and system performance numbers, but an image with the last screen it produced is included below.

What was most interesting to me were the results for the Intel SX and DX chips clocked at 33Mhz. All of the results from these 2 chips were identical except for the performance index. (which is lower on the SX as it lacks an FPU) What this tells me is that unlike the 3rd generation, Intel’s 4th generation SX chips were fully 32-bit externally. The i386SX was 16-bit externally and was dramatically slower as a result. Likewise the Cyrix 486SLC also suffered in this test due to its 16-bit external bus. I suspect Intel’s 4th generation SX chips were simply lower binned parts from the DX production line that had defects in the FPU section of the die. Simply disabling the FPU by cutting/burning the traces between it and the CPU section of the die would allow these otherwise defective chips to be sold, albeit as a lower-end model.

TX486SLC-e w/IIT FPU
i486SX25 @33Mhz
i486DX-33
i486DX2-66
Cx486DX2-66
Am486DX4-100
Cx5x86-100 @120Mhz

It’s a shame the Cyrix DX2-66 gave up the ghost during the test. However, it’s not a chip I was likely to put back into use in any of these systems. What data I did get from it confirmed my recollection of the CPU. It was slightly faster than the Intel DX2-66 in integer ops, but was a bit slower in floating point due to a weaker FPU design.

Resurrecting the past

Lately I’ve been digging into more of my retro collection to repair and preserve some of these systems and components. One of the systems I’ve put a fair amount of time into was the first motherboard I bought. It was a humble system, even by the standards of the day, barely exceeding the performance of the previous generation, but it was really the beginning… the first system I assembled from (mostly) new parts. My first 2 computers were an 8088 (XT) I cobbled together from spare parts and an 80286 that I got from a friend and some additional used parts from the 8088 and elsewhere. The system board I chose to create this new computer from was an Eteq 486SLC at 33Mhz. It was powered by a Texas Instruments TX486SLC/E-33MAB CPU, a licensed copy of the Cyrix 486SLC. This was a low power variant of the Cyrix 486 CPU intended for use in mobile or embedded applications. (like Intel’s SX compared with the DX 486 CPUs, or DLC in the case of Cyrix) In a desktop the 486SLC was competent, but was not fast by any means, only performing slightly faster than a i386DX CPU at 40Mhz. (mostly due to the fact that the Cyrix/TI design had a small amount of onboard cache memory, but also close because the SLC/SX CPUs only have a 16-bit external bus which slows down I/O)

Eteq 486SLC board with corrosion, before cleaning
corrosion visible on the board before cleaning

Like many systems of the era, this board was equipped with a Varta NiMH rechargeable battery soldered permanently to the board. Also like many of these systems, over time the battery leaked and began corroding the conductive metals near the area. I had previously removed the battery and scrubbed some of these parts

with IPA and a toothbrush, but it hadn’t gotten a lot of the corrosion off. I decided to see if a bath in white vinegar would stop the corrosion and sure enough, it neutralized and broke it up. I repeated this several times until there were few if any remains of the corrosion visible. I had also removed the power and keyboard connectors from the board and given them a vinegar bath as well. (I had also removed all of the socketed chips and checked them for corrosion ahead of time) With the corrosion eliminated, I washed the board with tap water in the sink and set it up to dry for several days. (I also helped it along by turning it upside down and spraying it with compressed air)

Once I was sure the board was completely dry, I placed all of the chips back in their sockets and soldered the keyboard and power connectors back onto the board. While I had to fiddle with the hardware, I was able to get the system to POST after a few tries. The next problem I ran into was

corrosion removed from the board

the BIOS and it’s lack of support for large drives. I had purchased some IDE to CF adapters to allow me to boot from a Compact Flash card, but the 8GB cards I selected were too large. I’d recently seen a video about another retro enthusiast who had been able to use a network card with a custom boot ROM that might be able to solve this issue. While restoring my old 286, I built a complete 8-bit ISA controller using this same software (XTIDE) and thought I’d give this a try. I also happened to have the original EPROM for the Eteq 486SLC (which I’d replaced because it got corrupted… that’s a story for another time) and was able to successfully erase and re-write the chip with the XTIDE firmware. This got me further, but the system still seems to have some translation issues with the Winbond multi-io card I’m using. Eventually, I imaged the card with one I’d taken of an identical card from another system and that got it booting.

Eteq 486SLC with ALU and RAM populated

So, time to run some benchmarks and see what the system can do! As I suspected though, the system was pretty modest. As I mentioned earlier, the system only performed a little better than a i386-DX40. This isn’t so bad considering the design. You have to remember, at the time small jumps in processor frequency provided measurable performance increases. While the Cyrix-designed chip was a little slower and had an I/O bus half the size of 386, it had a more efficient design and onboard cache that helped it perform much better.

Also helping this system is a math co-processor made by IIT, the XC87SLC-33. This chip was effectively a recycled 80387 compatible design IIT had been pumping out since the 386 days. It’s performance is modest, but it was cheap and that made it attractive as a poor college

speedsys results

student. The Norton SpeedSys benchmark shown above demonstrates just how modest this system was. Looking at some similar reports for i486-DX266 CPUs, this is a little less than half the speed in just about every area. Because I’m curious, I’ll probably drop my Cyrix 486DX2-66 into a compatible motherboard and see how they compare. This system isn’t fast and it’s not all that exciting, but I’m glad I saved it from rotting away for good. Perhaps one of these days I’ll find a baby AT case and build it up into a complete system again.