Difference between revisions of "UNIBUS and QBUS termination"

From Computer History Wiki
Jump to: navigation, search
(also the -11/04)
(Write up 'SACK turnaround' issues in detail)
Line 5: Line 5:
 
* they provide analog [[terminator|termination]] the otherwise un-terminated [[transmission line]]s of the bus (i.e. a [[resistor|resistance]] at the end of a transmission line that prevents reflections of [[signal]]s passing down it, 'bouncing' off its end);
 
* they provide analog [[terminator|termination]] the otherwise un-terminated [[transmission line]]s of the bus (i.e. a [[resistor|resistance]] at the end of a transmission line that prevents reflections of [[signal]]s passing down it, 'bouncing' off its end);
  
* provide pullups (so those [[wired-OR]] transmission lines normally float at roughly 3 [[volt]]s, unless actively driven low by one of the boards plugged into the bus);
+
* provide pullups (so those [[wired-OR]] [[broadcast]] transmission lines normally float at roughly 3 [[volt]]s, unless actively driven low by one of the boards plugged into the bus);
  
* in some cases, they do 'SACK turnaround' (an 'unused' [[bus grant]] from the [[Central Processing Unit|CPU]], theoretically for a [[peripheral|device]]'s [[interrupt]], is 'turned around' by the terminator, and retuned to the CPU as the SACK signal); this prevents the CPU from freezing up.
+
* in some cases, (such as the [[M9302 UNIBUS terminator‎]]), they do 'SACK turnaround' (an 'unused' [[bus grant]] from the [[Central Processing Unit|CPU]] is 'turned around' by the terminator, and returned to the CPU as the SACK signal); this is discussed at greater length below.
  
 
The first is not ''absolutely'' necessary; this can be seen in small [[QBUS]] systems which can get away without it in small configurations. Whether it's needed on particular system is hard to predict, theoretically; the easiest thing is to just try it and see. Note: it ''may'' 'work' without it, but not be as ''reliable'' as with it.
 
The first is not ''absolutely'' necessary; this can be seen in small [[QBUS]] systems which can get away without it in small configurations. Whether it's needed on particular system is hard to predict, theoretically; the easiest thing is to just try it and see. Note: it ''may'' 'work' without it, but not be as ''reliable'' as with it.
Line 15: Line 15:
 
(Note that the first and second are usually both done by a single set of components.)
 
(Note that the first and second are usually both done by a single set of components.)
  
The third is required by ''some'' UNIBUS CPUs (ISTR that the [[PDP-11/04]] won't run without it), but most (including all QBUS CPUs, such as the [[KDF11 CPUs]]) don't need it; they will [[timeout]] unused grants. (SACK turnaround could potentially be used for a start-up 'safety check' where an un-requested - and thus 'un-grabbed' by any device - bus grant from the CPU on start-up is 'turned around' by the terminator; this verifies that the [[bus grant line]]s are un-broken between the CPU and the terminator - e.g. by someone forgetting to plug in a [[grant continuity card]].)
+
==SACK turnaround==
 +
 
 +
The full story of the third function, 'SACK turnaround', is somewhat complex. The need for it is, as mentioned, that an 'unused' bus grant, theoretically for a [[peripheral|device]]'s [[interrupt]], can, if not 'turned around' by the terminator, can cause the CPU to freeze up. This because if the CPU does not have an 'interrupt grant [[timeout]]' [[circuit]], then after such an 'un-needed' grant has been sent out, the CPU can ''potentially'' freeze up, waiting for the interrupt bus cycle to come in.
 +
 
 +
So SACK turnaround is therefore ''required'' by ''some'' UNIBUS CPUs, which do not have that circuit; this includes the [[KD11-D CPU]] of the [[PDP-11/04]] and the [[KD11-E CPU]] of the [[PDP-11/34]] (although the optional [[M8264 No-SACK Timeout Module]] can be used on both of these to add that functionality). However, most PDP-11 CPUs (including all QBUS CPUs, such as the [[KDF11 CPUs]]) have it, and will time out unused grants. (This takes somewhat longer than the SACK turnaround mechanism, which is why that is preferred.)
 +
 
 +
How can a device not accept the grant of an interrupt that it requested? For example, if, having requested an interrupt, the device is reset ''just'' as the CPU is granting that interrupt, by the time the grant arrives at the device, it will have 'forgotten' that it was ever requesting an interrupt, and pass the grant on through. If no downstream (on the bus) device is requesting an interrupt, the grant will go unused - hanging a CPU which does not have a grant timeout circuit.
 +
 
 +
Machines which do not have a grant timeout circuit will function correctly ''most'' of the time without a terminator with SACK turnaround functionality; they are potentially vulnerable to the 'un-claimed grant' bug described above, though.
 +
 
 +
===SACK turnaround and CPU hangs===
 +
 
 +
On machines which use the [[KY11-L to CPU interface]] (the KD11-D CPU of the PDP-11/04, the KD11-E CPU of the PDP-11/34, and the [[KD11-EA CPU]] of the [[PDP-11/34A]]), SACK turnaround terminators can hang the CPU if the machine is powered on with a break in the [[bus grant line]]s somewhere between the CPU and the terminator - e.g. by someone forgetting to plug in a [[grant continuity card]].
 +
 
 +
That is because the KY11-L to CPU interface uses SACK for the [[front panel]] to signal to the CPU that it should remain halted; if there is a break in a grant line, the resulting 'open' input to the [[transistor-transistor logic|TTL]] [[gate]] monitoring the grant line in the device immediately down-stream from the break will float high, thereby looking like a permanent incoming grant. The device will pass it on, and the SACK turnaround circuit in the terminator will turn it into a permanent assertion of SACK - which will cause the CPU to hang forever once it halts.
 +
 
 +
(SACK turnaround could potentially be used for a start-up 'safety check' for grant line continuity, where an un-requested - and thus 'un-grabbed' by any device - bus grant from the CPU on start-up is turned around by the terminator; this would verify that the grant line is continuous between the CPU and the terminator. Apparently no CPU does this, though.)
  
[[Category: DEC Buses]]
 
 
[[Category: UNIBUS]]
 
[[Category: UNIBUS]]
 
[[Category: QBUS]]
 
[[Category: QBUS]]

Revision as of 23:42, 31 March 2022

UNIBUS and QBUS termination are very similar, since in analog terms the two buses are very similar (e.g. their use of the same transceiver chips, such as DS8641's).

Their terminators do a number of things:

  • provide pullups (so those wired-OR broadcast transmission lines normally float at roughly 3 volts, unless actively driven low by one of the boards plugged into the bus);
  • in some cases, (such as the M9302 UNIBUS terminator‎), they do 'SACK turnaround' (an 'unused' bus grant from the CPU is 'turned around' by the terminator, and returned to the CPU as the SACK signal); this is discussed at greater length below.

The first is not absolutely necessary; this can be seen in small QBUS systems which can get away without it in small configurations. Whether it's needed on particular system is hard to predict, theoretically; the easiest thing is to just try it and see. Note: it may 'work' without it, but not be as reliable as with it.

The second is necessary, but can be provided anywhere on the bus; most UNIBUS/QBUS CPUs do so, with the notable exception of the KD11-D of the PDP-11/04, and the KD11-E/-EA of the PDP-11/34-34A. (In the PDP-11/40, there's an oddball exception: the M981 UNIBUS jumper does it - but that's 'sort of' part of the CPU.)

(Note that the first and second are usually both done by a single set of components.)

SACK turnaround

The full story of the third function, 'SACK turnaround', is somewhat complex. The need for it is, as mentioned, that an 'unused' bus grant, theoretically for a device's interrupt, can, if not 'turned around' by the terminator, can cause the CPU to freeze up. This because if the CPU does not have an 'interrupt grant timeout' circuit, then after such an 'un-needed' grant has been sent out, the CPU can potentially freeze up, waiting for the interrupt bus cycle to come in.

So SACK turnaround is therefore required by some UNIBUS CPUs, which do not have that circuit; this includes the KD11-D CPU of the PDP-11/04 and the KD11-E CPU of the PDP-11/34 (although the optional M8264 No-SACK Timeout Module can be used on both of these to add that functionality). However, most PDP-11 CPUs (including all QBUS CPUs, such as the KDF11 CPUs) have it, and will time out unused grants. (This takes somewhat longer than the SACK turnaround mechanism, which is why that is preferred.)

How can a device not accept the grant of an interrupt that it requested? For example, if, having requested an interrupt, the device is reset just as the CPU is granting that interrupt, by the time the grant arrives at the device, it will have 'forgotten' that it was ever requesting an interrupt, and pass the grant on through. If no downstream (on the bus) device is requesting an interrupt, the grant will go unused - hanging a CPU which does not have a grant timeout circuit.

Machines which do not have a grant timeout circuit will function correctly most of the time without a terminator with SACK turnaround functionality; they are potentially vulnerable to the 'un-claimed grant' bug described above, though.

SACK turnaround and CPU hangs

On machines which use the KY11-L to CPU interface (the KD11-D CPU of the PDP-11/04, the KD11-E CPU of the PDP-11/34, and the KD11-EA CPU of the PDP-11/34A), SACK turnaround terminators can hang the CPU if the machine is powered on with a break in the bus grant lines somewhere between the CPU and the terminator - e.g. by someone forgetting to plug in a grant continuity card.

That is because the KY11-L to CPU interface uses SACK for the front panel to signal to the CPU that it should remain halted; if there is a break in a grant line, the resulting 'open' input to the TTL gate monitoring the grant line in the device immediately down-stream from the break will float high, thereby looking like a permanent incoming grant. The device will pass it on, and the SACK turnaround circuit in the terminator will turn it into a permanent assertion of SACK - which will cause the CPU to hang forever once it halts.

(SACK turnaround could potentially be used for a start-up 'safety check' for grant line continuity, where an un-requested - and thus 'un-grabbed' by any device - bus grant from the CPU on start-up is turned around by the terminator; this would verify that the grant line is continuous between the CPU and the terminator. Apparently no CPU does this, though.)