Interesting thread! A few incidental points... (in a spirit of opening up options to consider, rather than advocating any particular choice).
Chromatix wrote:
fewer signals need to be deasserted to turn off the outputs.
Might adding a bus transceiver or FET bus switch be a worthwhile tradeoff? There's a certain cost in board area and BOM, but the cost in prop delay is small -- almost zero, in the case of a FET bus switch (and these switches are available with pinouts identical to 74xx245). Also: a transceiver may incidentally offer level translation, potentially solving a TTL-to-CMOS issue, or even opening the door to options involving multiple supply voltages.
Quote:
Dynamically stretching the Phi2 clock will distort any timers that rely directly on it, like the 6522
It's an important point. What does it buy us, and what does it cost us?
The cost of dynamically stretching Phi2 is to either
- tolerate the timer issue (eg: issue a caveat about using 6522 timers), or
- include a fix, perhaps as follows. An oscillator or Master Clock is divided by two to provide a constant, free-running Phi2 used only by chips like the 6522. The same master clock is divided by two -- or sometimes three or more -- to generate a dynamically stretchable clock for the system (CPU and DRAM). This makes half-cycle "wait states" available for occasions when a DRAM access requires one. A half-cycle wait-state also occurs if the 6522 is accessed and the system clock is presently out of step with the free-running 6522 clock. The circuit isn't complicated, so it's a fairly cheap way to supply a predictable timebase for 6522's (eg). (OTOH, program execution time won't always be easily predictable. But having reliable timers may be enough.)
What we buy with the fix is better DRAM performance (on the premise that half-cycle wait states do a better job of matching actual DRAM timing needs than do full-cycle wait states as provided by RDY). Arguably, an even better choice would be if the Master Clock were 4x, say (rather than 2x) -- a tradeoff of complexity vs diminishing returns. 2x
is nice and simple...
Drifting slightly OT, another aspect whose performance benefits from sub-cycle wait states is opcode substitution -- a topic recently touched on elsewhere. Also there may well be I/O devices (or ROM's) whose timing needs are most efficiently met by sub-cycle wait states.
Parting comment on saving money by using DRAM: in many 65xx contexts, 16MB will naturally be the ceiling. But it's no great stretch to contemplate much larger spaces. And that's where DRAM will
really become important!
-- Jeff
_________________
In 1988 my 65C02 got six new registers and 44 new full-speed instructions!
https://laughtonelectronics.com/Arcana/ ... mmary.html