02.07.2013 Views

PDP11 PeripheralsHbk 1972 - Trailing-Edge

PDP11 PeripheralsHbk 1972 - Trailing-Edge

PDP11 PeripheralsHbk 1972 - Trailing-Edge

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

The internal timer is started every time one processor has the switch in either the<br />

Connected or Controlled positions, and the other processor requests the switch. If<br />

the processor that is requesting the switch removes its request, the timer is<br />

stopped .. If the processor that has the switch lets it go to Neutral, the other pro·<br />

cessor's request will.then be honored and it will get the switch. If the processor<br />

that has the switch re-requests it, the timer will be restarted. Should the timer<br />

ever time-out, the switch is forced to the neutral position, and then, if a request<br />

for the switch is waiting, the switch will honor, it. Thus, if the processor that has<br />

the switch re-requests it at the same time that'the timer times out, the switch will<br />

go to Neutral and then return to the first processor, since that processor had the<br />

switch last.<br />

If the timer is running and a processor stops or hangs because of a failure, the<br />

switch will not be referenced within this time and will automatically go to the neutral<br />

position, when the other processor can get the switch.<br />

The way that the timer works means that the following rules should be followed to<br />

prevent a processor that is hung in a program loop from holding on to the switch<br />

by re-requesting it.<br />

1. The re-request of the switch should not be put in basic interrupt service routi<br />

nes, program loops, or done usi ng the T-bit trap.<br />

2_ The re-requests should be put in the main-line program, to check that it is getting<br />

executed as often as expected.<br />

3. The placing of the re-requests must be carefully considered to make sure that<br />

no legal combination of interrupts, traps and subroutine calls that cause leaving<br />

the main-line program could result in not re-requesting the switch often<br />

enough.<br />

If the switch is in the connected state (as opposed to Controlled) when the timer<br />

times out, the bus switch will wait up to 5 microseconds to synchronize with the<br />

processor before disconnecting. If nothing is happening on the switched bus, the<br />

bus switch will automatically switch to Neutral after that time. Thus, if the machine<br />

is halted or hung, the switch will change position without waiting to synchronize.<br />

This might, however, cause the processor to hang. To cause a working<br />

processor to hang, the timer must time out and the processor must be doing a<br />

Wait instruction. About 5 microseconds after the time-out, a device on the<br />

switched bus must then request use of the bus (for either a DMA transfer or interrupt).<br />

If the switch disconnects just as the processor starts to service the bus<br />

request, the processor may hang. The way to prevent this is to make sure the<br />

timer never times out. It should be noted that timeouts are fatal errors, and<br />

should never occur in a correctly functioning system (the system being the combined<br />

software and hardware).<br />

7.2.5 * Interprocessor Communication<br />

To enable a minimum of communication between the two processors, two bits are<br />

provided for each processor. One bit is an interrupt enable bit; the other is a communication<br />

bit. A processor gets an interrupt when its interrupt enable is set and<br />

the other processor's communication bit is set. The interrupt occurs only when<br />

the "AND"of the two bits becomes true.<br />

In a non-fail-soft environment, these bits, in conjunction with the not-neutral bit<br />

can be used by two processors to control the switch without having the timer go-<br />

103

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!