VOGONS


First post, by furan

User metadata
Rank Member
Rank
Member

I've been trying to figure out what, if any pins the IBM 486SLC2 uses in addition to what is in the 386SX standard. I don't have one handy right now, because I'm traveling. However, I did figure out something interesting about how the cache works, from the OPTi 82C295 chipset datasheet, which has support for the cache. On the 386SX, the ADS# is output only, and asserted by the processor when all of the pins have been set up properly for a bus transfer. It turns out that on the IBM 486SLC2, this pin is I/O. The chipset asserts it during a DMA cycle, and the 486SLC2 uses this as a hint to snoop the WR#/MIO#/address signals to know whether it needs to invalidate an entry in the cache. So it looks like no additional pins are required for the CPU cache, but, the chipset controller has to be capable of asserting the pins connected to ADS#/WR#/MIO# on the CPU in order for it to properly snoop the cache and invalidate entries.

486slc2.png
Filename
486slc2.png
File size
179.01 KiB
Views
517 views
File license
CC-BY-4.0

What is strange is that the chipset is compatible with the 386sx, the IBM 486SLC2, and the Cyrix Cx486SLC - which does have special pins to control the cache, but there is no configuration for "chip type" in the chipset - either by pin or by software. So, this would seem to imply that it always asserts these pins, even on a 386SX or a Cyrix Cx486SLC, that it always asserts the special Cyrix pins, and that perhaps on the Intel and Cyrix chips, these internally float when not in use, even though they are output only?

Reply 1 of 2, by mkarcher

User metadata
Rank l33t
Rank
l33t
furan wrote on 2020-10-25, 22:30:

On the 386SX, the ADS# is output only, and asserted by the processor when all of the pins have been set up properly for a bus transfer. It turns out that on the IBM 486SLC2, this pin is I/O. The chipset asserts it during a DMA cycle, and the 486SLC2 uses this as a hint to snoop the WR#/MIO#/address signals to know whether it needs to invalidate an entry in the cache.

So, this would seem to imply that it always asserts these pins, even on a 386SX or a Cyrix Cx486SLC, that it always asserts the special Cyrix pins, and that perhaps on the Intel and Cyrix chips, these internally float when not in use, even though they are output only?

ADS#, M/IO# C/D# are no input pins on a 386SX, but as the local / front side bus is a bus, these pins are floated when the processor is not the bus master (i.e. it has relinquished the bus in response to a HOLD request), so that a different bus master (or the ISA bridge in case of ISA DMA) can drive those pins. It's just that the 386SX ignores external cycles while in bus hold mode, whereas the IBM SLC2 uses these pins for snooping. Not all 386SX chipsets forward ISA DMA cycles to the processor bus, though.