8

Why are tristates favored over multiplexers to select the output from RAM? The explanation that I've heard of is that the RAM is too large for using a multiplexer but I need more details.

A theory we've come up with is that using a multiplexer would necessitate a tree of OR-gates to select the output which would dramatically increase the propagation time of the signal to the bus whereas with tristates, no matter the size of the RAM, the propagation delay would be constant.

Is that correct?

Thanks

Sid
  • 83
  • 1
  • 4

3 Answers3

6

It's an issue of "fan-out" or "fan-in". So your theory is more or less accurate. However there is the additional benefit of using tristate outputs that you can attach them to a bus! If you use a CMOS Multiplexer you cannot share the wires that the output is on, if you use Tri-State devices then you can share the bus with other bussed devices (under the control of an arbiter for example)... in the context of RAM, think "memory bus."

vicatcu
  • 22,499
  • 13
  • 79
  • 155
  • Is there any reference you could point me to which explains this issue in some detail? Thanks! – Sid Aug 25 '10 at 04:42
  • sure, how about http://en.wikipedia.org/wiki/Three-state_logic and http://www.cs.umd.edu/class/spring2003/cmsc311/Notes/CompOrg/tristate.html – vicatcu Aug 25 '10 at 16:14
  • 2
    I meant more for a reference for why multiplexers are not used in RAM. While the cmu reference certainly implies it when it mentions the current issue with large fan-in/fan-outs, it would be great to have a reference that explicitly mentions this. – Sid Aug 25 '10 at 18:25
2

If one builds a rectangular memory array which is read using a tri-state driver in each memory cell, then one decoder circuit can control all of the cells in a row. One will need circuitry around the perimeter of the array to control it, but the amount of control circuitry will be proportional to sqrt(N)*lg(N). By contrast, if one tried to feed all the memory cells into a multiplexer, one would end up needing a lot more circuitry.

The multiplexer-based approach does have some advantages. If one built a one mega-word memory using two-way multiplexers, each bit would have to pass through 20 multiplexers, but one could achieve a very high-bandwidth pipelined memory system if each multiplexer included a latch. It would take 20 cycles to perform any particular read operation, but in 100 cycles one could begin 100 different reads. Since the signal wouldn't have to go very far in each cycle and wouldn't be driving any large buses, the cycle rate could be extremely high.

The issue of whether to use multiplexers or buses ends up being somewhat similar to the question of whether to use data repeaters when sending information over long distances. On the one hand, data repeaters add delay. On the other hand, the time required for a signal transition at one end of a stretch of copper to cause a transition at the other end is asymptotically proportional to the square of the length (since adding length adds both resistance and capacitance). Adding a repeater in the middle of a long wire may end up improving speed since the long run will be replaced by two shorter ones with somewhere between a quarter and half of the longer delay.

If one were to double the width and length of a memory array without improving the 'oomph' of the row and column driver circuits, one would more than double the time required to switch the rows and columns. By contrast, if one were to use four smaller memory arrays and multiplex the outputs, one would only add a constant to the access time. Faster memories are subdivided into more small arrays connected by multiplexers; cheaper memories use fewer multiplexers but aren't as fast.

supercat
  • 45,939
  • 2
  • 84
  • 143
0

By tri-stating onto a bus, your system scales better. You can just add more tristatable devices, without having to reconfigure both the old devices and the new device to cooperate through a new and larger multiplexer.

JustJeff
  • 19,163
  • 3
  • 48
  • 75