Reply 40 of 44, by mkarcher
Deunan wrote on 2022-04-10, 12:08:I'd like to add a few techical bits that are perhaps worth considering. The 386 has a NA# signal that allows for limited bus pipelining - it can drive a full set of control signals (not just the address) 1 bus cycle (2 clock cycles) earlier to allow the chipset to do things like cache tag checks or perhaps address output if 2 or more RAM banks are used. Though frankly it's rather difficult to do properly and I have not seen it used (but then again I have not probed each and every mobo I have).
I have read about NA# and its use in the "Compaq Deskpro 386/20 Technical Reference Manual". It is based on the Intel 82385 cache controller. The ISA bridge is custom logic, as I understand it.
I have seen a VLSI VL82C320 / VL82C331 (TOPCAT) aka Intel 82343/Intel 82344 based mainboard with a jumper called "pipeline", and experienced higher bus performance with pipelining enabled than with pipelining disabled.
The bus timing behaviour is quite different between the 286 and the 386DX. The 286 had the behaviour I described: The address is presented half a processor / bus clock (i.e. a full CLK2x clock) early, unconditionally. The 386 had behaviour Deunan described: The "NA#" pin that allowed the chipset to voluntarily release the current address from the bus, so the next address and the associated control signals (if already known) could be presented a full processor / bus clock (i.e. two CLK2x clocks) early. This difference between the 286 and 386DX bus protocol makes it obvious that the 386SX is not just a 386 core with a 286 bus interface unit. The 386SX uses the same timing and pipelining capability as the 386DX. It's bus timing is incompatible with the 286.
A lot of late 80286 chipsets (the TOPCAT I mentioned above is one of these) support both the 80286 and the 80386(SX) bus timing, so the same chipset can be used with either processor. You could even easily build mainboards that supported both kinds of processor, if some logic detected which processor socket is populated or a jumper was used to configure 286 vs. 386(SX) bus mode. The existence of such boards reinforced the misconception that the 386SX uses the same bus protocol as the 286.