LIBRARY OF THE
UNIVERSITY OF ILLINOIS
AT URBANA-CHAMPAICN
l&CoX
«W5.4ft-420
"/
*— *5 ^ 7 C
\ \ \ \ ; <—? c
K \ \ \ / > C
\ \ \ \ / > L
^c— ^ L
T
FC(O)
X__}
SC(O)
DC(O)
^ ^ ^
FC(I)
SC(I )
DC(I)
T
FC(2)
2
SC(2)
A
DC(2)
} . ) . )
FC(3)
SCO)
DC (3)
T
AU(O)
TTl
AU(I)
A
u
^ ^
PAU
<* EXCHANGE NET-
J.
1
I/O PROCESSORS
I ,
r
I
CENTRAL UNITS-
ttt.tj.^ r ^ *> VV n ,^
CHANNEL INTERFACE UNITS
4|5|6|7l8|9|l0l
II
SECONDARY STORAGE
12
SCAN/DISPLAY
13
14
INTER-
MACHINE
LINKS
15
LOW
SPEED
TERM.
FIGURE 1.2 SCHEMATIC OF ILLIAC IE COMPUTER
6/16/69
Section 1.2 - h/k
1.3 General Description of the Taxicrinic Processors
1.3.1 Basic Purpose of the Taxicrinic Processors
The Taxicrinic Processors are the central control units of
Illiac III. Their principal activites are the manipulation, search and
systemization of abstract graphs (bilateral list structures) which have
been produced from the pictorial input to the Pattern Articulation Unit.
In addition to this they also issue commands to the other Illiac III
processors (e.g., Arithmetic Units) whenever they are needed to perform
specialized operations. The name "Taxicrinic" comes from two Greek words:
x q E,\Q meaning "arrangement" or "pattern", and ro^ia meaning to "judge", thus
indicating the TP's general purpose, which is to syntactically analyze
digitized pictures and other material which can be cast into the form of a
directed, labeled graph.
Because the main purpose of a TP is to process list structures,
its main operations are centered around this type of operation. A certain
number of simple arithmetic instructions can be performed, but, in general,
whenever a complicated arithmetic computation must be performed, an Arith-
metic Unit (AU) is utilized. This is done by giving an AU a command via
the Exchange Net (XN).
The TP also has the ability to initiate input-output operations
by giving commands to the Input/Output Processor (I0P) via the Interrupt
Unit (IU) and to control the jobs performed by the Pattern Articulation
Unit (PAU). The commands necessary to exercise this control are given to
the various units concerned through the Exchange Net system which sets up
the necessary priority schemes. The Exchange Net also controls the communi-
cation between all the processors (including the TP's) and the various
storage modules.
It should be kept in mind that all four TP's are exactly the
same. Each is equipped with its own private fast registers and operates
completely independently of the other TP's.
5/2/69 Section 1.3.1 - 1/2
CABLE DRIVERS
POINTER REGISTERS
AND
SPARE BUFFER REGISTER
4 CABLE TERMINATORS
ii ►
SEGMENT NAME
REGISTERS
PRSNB
.I ►
ASSOCIATIVE REGISTERS
AND
ASSOCIATION LOGIC
BASE/BOUNDS REGISTERS
AND
INSTRUCTION REGISTER
DB
BROS
OPERAND STACK
REGISTERS
W V ,r " 1 ! V. I
INPUT SIGNALS
PERMUTER
OUTPUT
T
INSTRUCTION REGISTER
IR
LOGIC REGISTER f
L R
DISTRIBUTION REGISTER ►
DR
ADDER
A
ARITHMETIC REGISTER ftR f
EXCHANGE
NET
Figure 1.3.1 - Major TP Registers and Data Paths
11/20/70
Section 1.3.1 - 2/2
1-3.2 General O rganization of the Taxicrinic Processor
1.3.2.1 The Taxicrinic Processor
Figure 1.3.1 shows the main registers and subprocessors of the
TP, exclusive of the main control, together with the various data paths
between them. The main "active" registers are the Instruction Register
(IR), the Logic Register (LR), the Distribution Register (DR),the Arith-
metic Register (AR), and the Spare Buffer Register (SBR). These are all
36 bits long (h bytes of 8 bits and 1 flag each) and are used to hold data
temporarily as various instructions are being processed. None of these
are directly accessible to the programmer.
The main "storage" registers are the Base Registers
(8 registers of 27 bits or 3 bytes), the Associative Registers (7 registers
of 16 bits), the Pointer Registers (15 registers of 36 bits or k bytes),
the PR Segment Name Registers, (16 registers of 16 bits), the Operand
Stack (one continuous register of 32 bytes) and the Instruction Buffer
Register (one double word 8 bytes). These registers contain data which
may be used by the programmer during the execution of his program. They
are all accessible by programming except for the Associative Registers and
the Instruction Buffer Register, although the Base Register may
only be changed by "privileged" instructions.
There are other registers in the TP which are not accessible to
the programmer and which are used during special operations. These will be
fully explained in their respective sections in this manual.
Finally in connection with Figure 1.3.1 it should be noted that
the output from the Permuter, the Distribution Bus ( DB) , is not a register.
It consists of 36 lines which serve as inputs to nearly all of the registers
and control sections in the TP. The DB is the main avenue of information
transfer in the TP.
6/10/69 Section 1.3.2.1 - 1/1
1-3.2.2 The TP Subprocessors
The general structure of the TP is divided up into various sub-
processors which are in turn controlled by the TP main control sequencing.
These subprocessors communicate with the main control by means of "con-
trol lines" which give commands to the subprocessors and "output lines"
which give the main control information about the status of the subprocess.
The subprocessors are in general fairly independent and need only receive a
small number of control line inputs to perform rather complex operations.
The main subprocessor groups are the Permuter, the Operand Stack
and Operand Stack Control, the Pointer Registers and Pointer Register
Control, the Base Registers and Base Register Control, the Instruction
Buffer Register, the 32 Bit Adder, the Boolean/Shift Logic,
Algebraic /Logical Compare Logic, and the Cell Size Generator.
The permuter is a system of gates and drivers which is central
to the transfer of information in the Taxicrinic Processor. As can be
seen in Figure 1.3.1 it is capable of transferring information to and
from all the subprocessors of the TP and essentially all of the fast storage
registers. One of the reasons that the permuter is required is that
operands are not constrained to be on "natural boundaries". For example, a
double word operand may have 3 bytes in one double word of core and 5 bytes
in the next double word of core. The permuter is used to assemble
these bytes into a single double word operand in the TP fast memory.
The name "permuter" is derived from the fact that an input cell
may be permuted to make its boundaries coincide with its destination bound-
aries. The permutation may be likened to a circular left shift on a byte
basis. The position of the four bytes is changed, but the position of one
relative to the other is not. For example, the cell: A B C D appears
as B C D A when permuted left one byte and as D A B C when
6/10/69 Section 1.3.2.2 - l/ 3
permuted left three bytes. Cells smaller than k hytes (bytes or halfwords)
are assumed to have garbage in the non-data bytes while double words must be
permuted one word at a time.
In addition to permuting the input cell, the permuter has the
capability to inhibit all of the output bytes in any combination, or any
combination of bits in the rightmost output byte (byte 3). This facility
enables the permuter, among other things, to generate constants to put on the
distribution line (+32, +8, +2 and +1 are provided for) and to mask in bits
to the low order positions of, say the Pointer Registers, as they are gated
through the permuter.
The actual Permuter logic cards are also used to construct the
storage space for the LR, IR, AR and DR. The Permuter is described in
Section 2.1.
The Subprocessors for the Operand Stack, the Pointer Register
and the Base Register all require a more detailed description than could
possibly be given at this time; their complete description will be deferred
until Section 2.
The Instruction Buffer Register (IBR) is an eight byte (double
word) register used to store that portion of the instruction code which has
yet to be processed. It may also be used to store successive instructions
which will be executed after the present one.
The 32 bit Adder in the Taxicrinic Processor is used to perform
binary addition within the TP. It is also used to generate the outputs for
the Boolean operations, EQV and XOR. The adder uses 2's complement number
representation and employs two levels of carry lookahead to hasten carry
propagation.* The adder is broken down into eight four-bit sum groups with
full carry lookahead within the groups. The second level of lookahead occurs
between groups, with lookahead between groups 1, 2 and 3 and between groups
k through 8. The final carry between these two second level groups is a
"ripple" carry.
*For a more complete discussion of carry lookahead adders, see Wiegel,
Roger I , "Methods of Binary Addition", DCS Report No. 195, February 1 9 66.
6/10/69 Section 1.3.2.2 -2/3
The Boolean logic performs the Boolean functions "AND", "OR",
"XOR" and "EQV". The "XOR" and "EQV" functions are generated using part
of the 32 bit adder.
The Shift logic employs the permuter to make shifts in multiples
of 8 bits. The shift control first makes the highest multiple-of-8 bit
shift that it can without exceeding the desired shift. This is done using
the permuter and inhibiting the necessary bytes. After this has been done
the shift control shifts one bit at a time until the proper number of addi-
tional bits have been shifted. Since the flags are not touched in the bit
shifting, the shift control only -will shift flags in multiples of 8 (i.e. ,
when the permuter is used).
The Algebraic/Logical Compare Logic is used to accomplish alge-
braic and logical compares (greater, equal and less), the AR equal to zero
test, and flag match compares. The instructions realized are CPRA, CPRL,
TEST(M), SCAN(M), and TA.Operands are compared by subtracting one from
another; then signs are compared and appropriate indicators are set. The
logic discussed here can only be used with long or short fixed point numbers;
decimal and floating point numbers are routed to the floating point arith-
metic unit.
6/10/69 Section 1.3.2.2 - 3/3
2. SUBPROCESSOR DESCRIPTIONS
2.1 Permuter
The Permuter is a system of gates and drivers which are
central to the transfer of information in the Taxicrinic Processor.
As can be seen in Figure 1.3.1, it is capable of transferring informa-
tion to and from all the subprocessors of the TP and almost all fast
storage registers.
The name "permuter" derives from the fact that an input cell
may be permuted to make its boundaries coincide with its destination
boundaries. A permutation begins with a circular left shift on a
byte basis. The position of the four bytes is changed, but the cyclic
ordering of the bytes is preserved. For example, the cell:
A
BCD
appears as
B
C ' D I A
when permuted left one byte and as
D
i
A : B
1
— — —
C
when permuted left three bytes. Cells smaller than k bytes (that is,
bytes and half-words) are assumed to have garbage in the non-data posi-
tions, while double words must be permuted one word at a time.
In addition to permuting the input cell, the permuter has the
capability to inhibit all of the output bytes in any combination, or in
the rightmost output byte (byte 3) to inhibit any combination of bits. This
3/5/69
Section 2.1 - 1/2
facility enables the permuter, among other things, to generate con-
stants to put on the distribution bus (+32, +8, and +2 are provided
for) and to mask in bits to the low order positions of (for example)
the pointer registers as they are gated through the permuter. The SCR
(Stack Control Register) and OSTR (Operand Stack Top Register) of the
Operand Stack and the ICTR (instruction Counter) are the registers which
may be masked in.
Finally it should be noted that the permuter logic cards also
physically contain the registers for the LR, DR, AR and IR. Although
these registers are not directly used by the permuter to execute its
permutation operations, these registers are commonly used as sources or
destinations for data (see Figure 1.3.1 ) For example, the permuter
boards are used in data transfers from the LR and DR even though this
data path is not shown as going through the permuting mechanism. As a
matter of fact, since data going from the LR to the DR is not always permu-
ted, the LR can be simply gated directly to the DR whenever this is
desired - thus saving time.
U/U/69 Section 2.1 - 2/2
2.1.1 Permuter - Functional Description
2.1.1.1 Permuter Input
follows
The logic used to realize the permuter input gating is as
inputs from ith
position of all inputs
to Permuter
i+27 i+18 i+9
PL3/E
PL2/E
W
PL1/E
PLO/E
input driver
W
W
*all arithmetic
is Mod(36)
U
i output also goes to i-9
i-18
i-27
Figure 2.1.1.1/1 - Permuter Schematic
The PLi/E are the permutation selection gate signals. PL3/E,
for example, enables the left 3 permutation. PLO/E is the straight -through
(left zero) gate.
3/5/69
Section 2.1.0.1- 1/2
Every possible input to the permuter has a gated line which
is an input to the input driver (see figure above). Thus each bit in
any input byte will go to one of the 36 input drivers depending on which
byte it is in and its position in that byte. The outputs of these input
drivers go to the corresponding bit positions in each of the four byte
positions. Here they are gated with the corresponding permute signal.
As an example, input driver 36 will have as inputs the 36th
bit of all permuter input registers. This is the 9th position (flag)
in the 3rd byte (bytes are numbered from the left to 3). Thus the
output of input driver 36 is gated to position 36 by the PLO/E signal, to
position 27 by the PLl/E signal, to position 18 by the PL2/E signal and
to position 9 by the PL3/E signal (i.e., the 9th bit position of each
byte). At the same time position 36 of the permuter will be receiving
the outputs of input drivers 9, 18 and 27 which will be gated with PLl/E,
PL2/E and PL3/E, respectively. Thus the output (pin P in the diagram
above) for the 36th bit position will depend on which of the h permute
signals is activated.
/69 Section 2.1.1.1 - 2/2
2.1.1.2 Permutation Control Logic
Once the input has been selected by enabling the gate from
the desired register to the input drivers, the Permutation Control Logic
ensures that the proper permutation takes place. This logic has 3
inputs: a source bit-pair, a destination bit-pair and a reversing bit.
To determine the permutation which is desired, the position
of the first byte of the cell must be known for both the source and
destination registers. These positions are given by the bit-pair
"addresses" as shown in the figure below. Here an address of "00"
indicates that a cell is to be left-justified in its source (destination)
register. This address code is also just the low order two bits of a
memory address or the low order two bits of the Stack Control Register
in the Operand Stack logic or the Instruction Byte Counter.
00 01
10
11
Bit-Pair Address Convention
In summary then, the source bit-pair indicates the position
of the left-most byte of the cell in its source register. In like manner
the destination bit pair gives the position the left-most byte
is to occupy in the destination register.
The reversing bit is used to specify the direction in which
the data is to flow. In the permuter the paths which must be provided
with permutation are:
1. Memory to registers (LR, DR, AR, IR) - left justified
2. Operand Stack to registers - left or right justified
9/26/69 Section 2.1.1.2 -1/3
3. Base Registers to registers - left justified
k. Instruction Buffer to registers - left justified
or justified on "byte 1.
The "natural" flow of information is taken to be from the
various types of storage (memory, stack, buffer, etc.) to the working
registers (IB, DR, AR, IR). For this direction the reversing bit is
considered off (0). When the reversing bit is on (l), the data flows
in the reverse direction and the permutation is changed accordingly.
Gating signals from main control select the permuter input and
signify left or right justification (if required). The Permutation Control
Logic then works by feeding the proper bit-pairs into the source and
destination pair buses. After the two bit-pairs have been loaded, the
reversing bit (RSD/E) is used to gate them to the decoding circuits (see
Section 2.1.1.3). If the data flow is in the "natural" direction the
source bit-pair and destination bit-pairs are gated straight through to
the X and Y busses respectively (as they are called in Section 2.1.1.3).
While if the data flow is in the "reverse" direction the source bit-pair
is gated to the Y lines while the destination bit-pair is gated to the
X lines.
When none of the four "natural" or "reverse" data paths are
being evoked, the source and destination inputs to the decoder are in
the rest state, 00/00 which decodes as "gate straight through", i.e.
without permutation. Thus if a data path other than one of these four
is used, and no permutation is necessary, the data transfer can be
carried out without concern for the permuter control inputs. One specxal
case does arise: right and left shifting in steps of 9 bits; in this case
all the internal permutation signals of the permutation control logxc
are disabled using the LRS/E signal. The proper permutation for the shift
required is decoded (along with inhibit signals - see Section 2.8.1.2 in
the Shift Control Logic) and is routed directly to the permutation gate
drivers (output signals PLO, PL1, etc.) to effect the permutation.
7/19/69 Secti ° n 2 - 1 ' 1 - 2 ' 2/3
The LRS/E signal is also turned on automatically
whenever one of the direct permutation control lines from the main
control logic is turned on. This inhibits the normal operation of
the permutation control and allows the main control logic to determine
the permutation.
9/17/69 Section 2.1.1.2 - 3/3
2.1.1.3 Permutation Decoding
If we let )^X be the source byte "address" bit-pair and
Y Y be the destination bit-pair, then these can be considered a
four-bit binary number which can be decoded to give the proper permuta-
tion. If the four permutation control signals are designated PLO , PL1 ,
PL2 and PL3 , they can be expressed in terms of XX and Y Y as:
Left 0: PLO: = X^Y^ v X^Y^ v X^Y^ v X^Y^
5 10 15
Left 1: PLI: = \^-J 2 v X^Y^ v X^Y^ v X^Y^
h 9 ik 3
Left 2: PL2 : = X^Y^ v X^Y^ v X^Y^ v X^Y^
8 13 2 7
Left 3: PL 3 : = X^Y^ v X lX2 Y lY2 v X^Y^ v Xl X 2 Y lY2
12 1 6 11
The PLi signals are then used to drive the four groups of (36
each) permutation gates.
There are also "direct" inputs to the PLi drivers. In this case
the desired permutation can be selected directly without decoding from
X , etc. An example of this is the shift control logic. If a "direct"
input is used, the decoder is inhibited by the LRS/E signal input. The
direct inputs go directly to the PLi drivers in complement form.
3/5/69 Section 2.1.1.3 - 1/1
2.1.1. U Permuter Output
The basic output of the Permuter is the Distribution Bus (DB).
This bus is a k byte (36 bit) bus and serves as an input to all the major
registers and storage areas in the Taxicrinic Processor.
Although not shown in Figure 1.3.1, the DB is, in reality,
made up of two separate busses which are arranged as shown below:
Permuter Output
to DR, IR, 0S
PR, BR, IBR, SBR
to AR, LR, etc.
Figure 2.1.1.U/1 - Distribution Bus
The DBP bus specifically drives the DR, IR, 0S, the PR's, the BR's,
the IBR and the SBR. The DB bus drives the AR, LR , the NR » s , the 0S control
logic, the BR name storage flip-flops, the instruction byte counter, the
shift boolean logic, the adder input gates, the bounds check logic, and
the cable drivers to the Exchange Net.
In this manual, reference to the Distribution Bus (or DB) will
mean either of these two busses since their contents are logically equivalent
Reference to DBP however will specifically mean the DBP part of the
Distribution Bus.
U/8/69
Section 2.1.1.U - l/l
2.1.1.5 Inhibit Generation Logic
In Figure 2.1.1.5/1 we give a more complete version of the
logic circuit shown in Figure 2.1.1.1/1. As can be seen, several masking
options have been dot-or'ed with the input driver and an inhibit signal
has been added to the output. The purpose of this section is to describe
the effects which can be achieved using these supplementary features.
First, however, we shall run through a general description of the
circuit with particular attention to inhibit conditions. Note that due to the
dot-orjm the FBI line, if any of the masking option lines are selected,
the FBI will be forced to "0" . This in turn v-m fo W /. a + *,
-Liixb ±n T,urn will force the corresponding
DBP bit position to "1" (assume for the moment that only PLO/E is "l").
It should be noted that the inhibit line will force the DBP to "0" if it
is turned on, independent of the FBI signal. Thus we have two methods
for changing the DBP: We can force the DBP to "l" by turning on one of
the masking options, or we can force the DBP to "0" by turning on the inhibit.
Now we can begin to consider the various effects that can be
accomplished using these two methods. The permuter is capable of inhibiting
any combination of bytes in the output using the IBO/E, IB1/E, IB2/E, and
IB3/E signals. Each of these signals is hooked up to the 9 corresponding
bit position inhibit signals on the output of the Permuter. In addition
any combination of bits in the rightmost byte of the Permuter Output
(byte 3) may be inhibited since the bit inhibit lines for this byte are
made so they can be controlled individually if desired (see TP logic
drawings 04-5 and 0U-3).
It is also possible to construct constants using the Permuter.
If all of the input gates are turned off (referring again to Figure 2.1.1.5/1),
the FBI lines will all be "l" which will cause the DBP bus to contain all
zeroes. Then in order to make positive constants, the corresponding FBI
lines need only have one of their "masking options" turned on. The positive
constants which are provided are + 1 , +2 , + 8 and +3 2 (all 2's complement).
V25/69
Section 2.1.1. 5 - 1/5
MASKING
OPTIONS
INPUTS
at most only
I on
>
>
INPUT
DRIVER
PLO/E
INHIBIT
= I, if mask bit =0
U
FBI
DBP OUTPl,
BUS
FIGURE 2.1. 1. 5/1 INHIBIT GENERATION LOGIC.
5/2/69
Section 2.1.1.5 - 2/5
In order to generate negative constants all l's are put on the
output bus by inhibiting the PLO/E signal with LRS/E. If no other PLi/E
signals are on, the DBP will become all ones. Then a one's complement
number can be produced by inhibiting the proper output position. This
number is changed to two's complement in the adder by injecting a low-order
carry. The negative constants which are produced in this manner are -1, -2,
-8 and -32 (all l's complement).
The final effect which can be produced is masking. In many cases
it is desired to mask the SCR, 0STR, or ICT into the lower order bits of
a pointer register. Here the FBI lines corresponding to the positions
which are to be masked in, are set to zero by one of the masking option
signals. This causes the corresponding output bit position to become "l".
The actual contents of the register to be masked is used to set the
inhibit lines. If a given bit position in the register is "0", the
corresponding inhibit line is set, thus causing the Permuter output to be
"0" in that position.
In two of the masking cases given above (ICT and SCR) the masking
is done automatically. Whenever PR#0 is used as the input to the Permuter
the ICT is automatically masked into the lowest 3 bits. Whenever PR#13 is
the input, the SCR is masked into the lowest 5 bits. During Operand Stack
overflow or underflow (see Sections 2.2.2.5 and 4.2.2.8) the 0STR (2 bits)
must be masked into the Vth and 5th lowest order bits with zeros in the
lowest 3 bits of PR#13. Since the SCR is normally masked into PR#13 there
must be an inhibit to SCR masking when the 0STR is being used instead.
With this in mind the control logic necessary for the automatic
masking of the ICT and SCR are given in Figure 2.1.1.5/2 and /3 respectively.
The signal definitions are given below:
PRP/G = 1 if a PR is the permuter input
N13S = 1 if the TGR = 13
NOS = 1 if the TGR =
NPR13/S = 1 if control selects PR#13
NPRO/S = 1 if control selects PR#0
OSTP/G = 1 if the OSTR is to be masked into PR#13
OSR = data bus to the inhibit signals
SCRP/G, ICTP/G = mask select signals
V25/69 Section 2.1.1.5 -3/5
ICT
PRP/G — {
TNB/G
NOS
PRP/G —
NPRO/S —
DBP
IC LO'GIC IN DRIVER FROM K "
CONTROL CONTROL LOGIC DTL LOGIC IN LOWER BAY
FIGURE 2.1.1.5/2 ICT MASKING CONTROL LOGIC
5/16/69
Section
2.1.1.5 - U /5
OSTP/G
OST R
SCR
16
lH
PRP/G
OSTP/G
NI3S
16-1 \>
SCRP/6
PRP/G
OSTP/G
NPRI3/S
OSTP/G
16-1 p 16-1 D
y SCRP/G \ \ r
OSR
04- 5V
B3i
DBP
FIGURE 2.1.1.5/3 SCR MASKING CONTROL LOGIC
5/2/69
Section 2.1.1.5 - 5-/5
2.1.1.6 Gate Inhibits for the LR and IR
As mentioned previously in Section 2.1.1, the Permuter cards
physically contain the LR, AR, IR and DR flip-flop storage. These
registers are built up from a "latch" type flip-flop which is shown and
described in Figure 2.1.1.6/1. In order to load a new value into the
latch flip-flop, the gate must be on and the latch signal must be off.
The gating inputs for each of these h registers are organized
on a byte basis, i.e. each gating signal is used to activate the h gate
and k latch lines to the appropriate register. In this process it is
quite simple to impose gate inhibits on the individual bytes of a register,
and this is exactly what was done in the case of the DR and the IR.
The rest of this section will describe the LR gate inhibit logic.
The IR logic is quite similar and may be found in the TP Logic Book in the
Series-OU drawings. The LR gate which is inhibited is the DR-to-LR gate.
The logic for this inhibition is shown in Figure 2.1.1.6/2. DLR/G is
the main gating signal from the control logic. It is NAND'ed with
DLRi/N (i = 1, 2, 3, k) , one of Ij- inhibit lines. Thus if DLRi/N = "l" ,
the gate signal will be inhibited and the gating and latching signals to
the ith byte of the LR will not be activated. Note that other signals
such as the right shift enable, RS/E, the AND enable, AND/E, or others
can also set the LR latch signal to and the gate signal to 1.
This facility is used mainly in the merging operations in the
memory access sequencing. It is also used in other control sequences
where it is desired to replace part of the contents of a register and
leave the remaining contents unmodified.
h/Q/69 Section 2.1.1.6 - 1/3
GATE
"A
LATCH
OUT
n
i>o
*OUT
where n = 0,l,2," • additional gates
Gate: enables A to be transmitted to the NOR
Latch: when off, allows the output of the gate AND's to deter-
mine the state of the flip-flop. When ON maintains
state of the flip-flop so, that gates will not affect it
Figure 2.1.1.6/1 - Latch Logic Circuits
H/8/69
Section 2.1.1.6 - 2/3
RS/E
AND/E
DLRO/N
DLR/G
DLRI/N
DLR2/N
DLR3/N
5/16/69
>
>
>
>
>
>
-Z>
r>
>-o
>
>
>
■o
~>
-~>
LRLO
LRO/G
LRLI
LRI/G
LRL2
LR2/G
LRL3
LR3/G
L R Li = LATCH
LRi/G=GATE
FIGURE 2.1.1.6/2 GATE INHIBIT CIRCUIT
Section 2.1.1.6
- 3/3
2.1.1.7 Permuter Register Gate Drivers
These gate drivers are used to drive the various flip-flop
(latch) register and permuter input gates. The various gating lines
can be found on the 237-00 card schematic in the circuit book or in the
TP Logic Book. Each -237 card contains one bit position of the permuter
as well as the LR, DR, AR, IR registers.
There is only a single input to the LR, AE and IR; all the various
gating signals are combined in the control gating logic, and the single
gate and latch signal needed is sent to the register on a per byte basis.
The data inputs are combined in a dot-or (see, for example, the SHIFT/
BOOLEAN logic). Note that the LR and AR are loaded with the complement
of the desired output.
The gating signals are formed on a byte basis; there is a
group of drivers for each register byte (9 bits).
Provision is made to inhibit bytes on certain transfers, these
being: DR to LR; adder to AR, and DB to IR. In this case, the inhibit
implies that the byte inhibited is not transferred into the register in
question. The original register contents remain unchanged however —
nothing is set to zero. This feature allows bytes to be masked into a
common register (c.f. PR transfer logic).
U/8/69
Section 2.1.1.7 - l/l
2.1.2 Signal Name Lists for the Permuter
2.1.2.1 Control Signals
Input Select Gates :
ARP/G/ - AE is the permuter input storage block
BR/S - Select BR from BR-IBR
BRSP/G/ - BR-IBR Storage Block output bus (BR0Si) is the permuter
input
CTP/G/ - Cable terminators is the permuter input
DRP/G/ - DR is the permuter input
IBR/S - Select IBR from BR-IBR Storage Block
ICTP/G - Mask ICT into low-order 3 bits of DB
IRP/G/ - IR is the permuter input
LRP/G/ - LR is the permuter input
OSP/G/ - Operand stack output bus (BR0Si) is the permuter input
PRP/G/ - Pointer register output bus (PRBi) is the permuter input
SCRP/G/ - Mask SCR into low-order 5 bits of DB via OSR bus and
permuter
Constant Generator Enable Signals :
Ml/E/
M2/E/
MU/E/
M8/E/
M32/E/
Generate -1
Generate -2
Generate -h
Generate -8
Generate -32
Pl/E
P2/E
PU/E
P8/E
P32/E
Generate +1
Generate +2
Generate +h
Generate +8
Generate +32
6/17/69
Section 2.1.2.1 - 1/3
Reg
ister Transfer Gate Signals
ADR/G/
BAR/G/
BDR/G/
BIR/G/
BLR/G/
CDR/E/
DLR/G/
LDR/G/
Gate AR to DR - direct
Gate DB to AR
Gate DBP to DR
Gate DBP to IR
Gate DB to LR
Gate DB + spares to cable driver
Gate DR to LR - direct
Gate LR to DR - direct
Register Transfer Byte Inhibit Signals
ADDO/N/
ADD1/N/
ADD2/N/
ADD3/N/
Inhibit adder output byte i
BIRO/N/
BIR1/N/
BIR2/N/
BIR3/N/
Inhibit byte i on DBP to IR gate
DLRO/N/
DLR1/N/
DLR2/N/
DLR3/N/
Inhibit byte i on DR to LR gate
6/17/69
Section 2.1.2.1 - 2/3
Permutation Control Signals:
BNR/G
CRRL/G
LJI/E
LRS/E
OPJ/E
OSRL/G
OSRR/G
OSS/S
RJI/E
RSD/E
Base name register gate. Uses contents of base
name register to control permutation of data into
or out of (depending on RSD/E) "base register
storage.
Gate "core" to registers (DR, LR, etc.) left
justified
Left justify
Inhibits normal operation of permutation control
logic.
This signal is used by the shift control logic
to perform shifts in byte multiples using the
PLi and/or IBPLij signals. It must also be used
when the PLCi signals are used by the main control
logic to generate a permutation. Note! One of
the above mentioned signals must be on when
LRS/E is on in order for the permuter to work
properly. (See Section 2.1. U. 3) .
Used if IBRP/G is also on. Justifies opcode on
byte 3 instead of byte 0.
Gate OS to registers right justified
Gate OS to registers left justified
Select OS. Turns on when either DBOS/S or
DSP/G is 'on'.
Right justify
Reverses role of source and destination bits in
permutation control
9/17/69
Section 2.1.2.1 - 3/3
2.1.2.2 "Internal" Signals Used by the Permuter
Logic Book Name
ARi
ARi/G
ARGi/G
ARLi
ARNi/
BRSP/G
CSB
CSBH
CSH
CTi
DBi
DBDi/G
DBPi
DRi
DRLi
FBIi
IBi/E
IBPL13
IBPL21
IBi/
ICTi
IRi
IRi/G
IRLi
Description
Arithmetic Register - bit i
AR input gating signal, ARN — >AR - byte i
Gate signal, AR-^DR, byte i
AR latch, always = ARi/G- byte i
Adder output bus = AR input - bit i
Permuter in gate signal, BR0Si— ^FBIi, =
OSP/G v BRS
Cell size = byte
Cell size = byte or halfword
Cell size = halfword
Cable Terminators - bit i
Distribution Bus, bit i = DBPi
Gate signal, DB— > DR - byte i
Distribution Bus directly from permuter - bit i
Distribution Register -bit i
DR latch, byte i = whenever something— *DR -
bit i
Output from permuter input gate - bit i
Inhibit Enable - byte i
Inhibit byte 1 - permute left 3
Inhibit byte 2 - permute left 1
Inhibit signal for byte i - from shift
control
Instruction byte counter - bit i
Instruction register - "bit i
IR input gating signal DB-^IR - byte i
IR latch, always = IRi/G - byte i
5/16/69
Section 2.1.2.2 - 1/2
Logic Book Name
LRi
LRDi/G
LRi/G
LRLi
LRNi
OSRi
OSTRi
PLi
PLi/E
PRBi
SCRi
T2Ri
Description
Logic Register ~ bit i
Gate signal, LR-> DR - byte i
LR input gating signal LRN— > LR - byte i
LR latch, = LRi/G - byte i
In-bus to LR - comes from SHIFT/BOOLEAN and
PACK-UNPACK, etc. _ byte i
Bus used to insert 0STR, SCR and ICT onto
permuter output (last 5 bits)
Operand Stack Top register
Permute left i bytes - output from shift
control
Enable permute left i bytes
Pointer Register Bus - bit i
Stack Control Register - bit i
Temporary Register 2 in Operand Stack - bit
5/16/69
Section 2.1.2.2 - 2/2
iiii/» iib, ibL, hl) (0:3) BIT(l);
,RROS,CT,DB,DBB,DBP,DR,IR,LR,PRB) (36) ♦ (BNR, ICT ) (3) ,
,CCT)(4), (SCR,T2R) (5) , 0STR(2), BRS(0:7))
RITI1 \ CVTCDMAI •
2.1.3 Permuter - PL/I Description
FXFC PL1
■Ll.SYSPUNCH nn SYSOUT=B
PL 1. SYS IN DO *
PFR_IN: PROCURPG, BNRG,BRGS, BRSBPG, CRRLGt CSR,
CSBH, CSH, CTPG, DBRJ, DRPG, IBPL13,
IBPL21, IBRSt ICTPG, IRPG, LJIE, LJOPE,
LRPG, LRSEt M16E, MIEt M2E, M32E,
M^E. M8Et MRSETG, OPJE, OSPG, OSTPG,
P16E, PIE, P2E, • P32E, P4E, PRE,
PLC1, ?LC2, PLC3, PRPG, RJIF, RSOE,
SCRPG, LRSF1, IB, IBC, PL, HSSS,
nsPTG, nsPFG);
OCL (OSPTG,nSPFG) BIT(l);
HCL LRSE1 BIT(l);
dcl nsss bit ( 1 ) ;
DCL( ARPG,BNRG, BRGS, BRSBPG, CPRLG, CSB,
CSRH, CSH, CTPG, DBRJ, DRPG, IBPL13,
IBPL21, IBRS, ICTPG, IRPG, LJIF, LJOPF,
LRPG, LRSE, M16E, M1E, M2E, M32E,
M 4F, MRE, NRSFTG, OPJF, OSPG, OSTPG,
P16F, PIE, P2E, P32E, P4E, PRE,
PLC1, PLC2, PLC3, PRPG, RJIF, RSDF,
SCRPG) BIT(l), (IB, IBC, PL) (0:3) BIT(l)
nCL( (AR
(ACT
BIT(l) external;
OCL
OCL FBK36) BIT( 1 ) , I BE ( : 2 ) B I T ( 1) ,IBE3(1 :9)BIT( 1 ) ,
(S
P
( I ,J )
DSPG=()SPTG I DSPFG;
I* DFTFRMINE LFNGTH OF SHIFT FROM SOURCE AND DESTI-
NATION POSITIONS, S AND 0. IF LRSE IS ON INHIBIT
NORMAL COVTROL.*/
LRSF = MIE|M2E|M4E|MRE|M16E|M32E|LRSF1 I PLC1 I PLC2 I PLC3 ;
IF LRSF THFM DO;
PLI0F,PLI1E,PLI2E,PLI3E=»0'B;
GO TO SKIPSD;
FND;
S(0),S(1),D(0),D(1)='0'B;
IF BRGS THEN DO;
S(0)=BRS( 1 ) |BRS(2) |BRS(5) |BRS(6) ;
S(1)=BRS(1)|BRS(3)|BRS(5)|BRS(7);
END;
if dbrj then do;
d(0)=csh;
0(1 )=CSB;
END;
IF OSSS THEN DO;
S(0 )=T2R(4) ;
S(l )=T2R(5) ;
END;
Bl I ( 1 ) EXTERNAL ;
(PLI0F,PLI1F,PLI2E,PLI3F) BIT(l);
BI (36 ) BIT(l),IBE(0:2)BIT(l),IBE3(l:
S,D) (0:1 )BU( 1 ) ,OSR( 1:5) BIT(1 ),
PLOF,PLlF t PL2E,PL3E,BRSPG) BIT( 1 ),
I , J ) FIXED BIN;
HA/70
Section 2.1.3 - 1/9
IF BNRG THEN DO;
S (1 )=BNR(3) ;
S(0)=BNR(2)£(-BNR(3) )
|BNR(3)£(-BNR(2) ) 5
END;
IF CRRLG THEN DO;
S(0)=AR(3A);
S(l )=AR(35) ;
END;
IF IBRS THEN DO;
S(0)=ICT(2 ) ;
S(l ) = ICT(3) ;
D(l )=GPJE;
END;
IF LJGPE THEN n(l)='0 , B;
IF RSDE THEN
BEGIN;
DCL TEMP(0: 1 ) BIT( 1 ) ;
TEMP=S;
S = d;
D=TEMP;
end;
no
PLI0F= -S(0)£-S( 1)£-D(0)£-D( 1
|-,S(0)£ S( 1)£-.D(0)S D(l
| S(0)£-S( 1)£ D(0)£-D(1
| S ( ) & S ( 1 ) £ D ( ) 6 D(l
PLI1E- -S(0)£ S( 1 )£--D(0) &-.D( 1
| S(0)6-«S(1>£'-D(0)6 D(l
| S(0)£ S(l)£ D(0)£-D(1
|-.S(0)£-'S( 1)£ D(0)£ D( 1
PLI?F= S(0)£-S( 1)£-D(0)£-D(1
| S(O) £ S( 1)£^D(0)£ D(l
|-.S(0)£-S(1>£ 0(0) £-.&(!
|-.S(0)£ S< 1)£ D(0)£ 0(1
PI I3E= S(0)£ S(1)£-D(0)£-D(1)
|-.S(0)£-^S(1)£-*D(0)£ 0(1
|-,S(0)£ S( 1)£ 0(0) £-0(1
I S(0)£->S( 1 )£ 0(0)£ 0(1
end;
skipso: pl0f=pli0e |pl(0) ;
PL1F=PLI1E|PL( 1) I IBPL21IPLC1;
PL2F = PLI2E|PL(2) |PLC2;
PI 3E=PLI3F|PL(3)|IBPL13|PLC3;
/* SELECT PRGPFR INPUT TO BE GATED*/
F B I = ' ' B ;
brspg='0'b;
IF ORPG THEN FBI=DR;
ll/H/TO
Section 2.1.3 - 2/9
IF IRPG THFM FB I = I R ;
IF LRPG THFN FBI=LR;
IF ARPG THFN FBI=AR;
IF PRPG THEN FBI=PRB;
IF CTPG THFM FBI=CT;
IF HSPTGI OSPFGI BRSBPG THEN DO;
BRSPG=«1»B; FBI=BRnS; END;
/* CHFCK FOR MASKING */
IF nSTPG | SCRPG THFN DO 1=31 TO 35;
FB I ( I ) = • 1 • B ;
END;
IF ICTPG THFN OH 1=33 TO 35;
FBI ( I )=' 1 «B;
END;
IF MRSETG THEN 00 1=1 TO 4;
FBI ( I+27)=ACT( I ) ;
FBI ( 1+31 )=CCT( I ) ;
fnd;
/* DFTERMINE INPUTS TO INHIBIT ENABLF NETWORK FROM
OPERAND STACK.-/
nSR= '1 "B;
IF OSTPG THFM 00;
OSR( 1 )=OSTR( 1 ) ;
gsr(2 )=nsTR(2 ) ;
0SR(3) ,0SR(4) ,0SR(5)='0'B;
END;
IF SCRPG THEM OSR=SCR;
/* DFTFRMINE INPUTS TO INHIBIT ENABLE NETWORK FROM
INSTRUCTION BYTE COUNTER.*/
IF ICTPG THEN 00;
OSR( 1 ) T OSR( 2)='0'B;
DO 1=1 TO 3;
OSR( I+2) = ICT( I ) ;
END;
FND;
/* CALCULATE INHIBITS.*/
IBE=»0'B;
00 1 = 1 TO 3; IBE3( I ) = '0'R; end;
00 1=1 TO 5; IBE3( I+3)=-»0SR(I ); END;
IF RJIE THFN 00;
IF CSBH THEN IBE(0)= I 1 'B;
IF CSH THEN IBE( 1 ) = • 1 «B;
IF CSB THEN I BE ( 1 ) t I BE ( 2 ) = ' 1 • B ;
END;
IF LJIF THFN DO;
IF CSBH THEN IBE3=« 1 «B;
IF CSH THEN IBE(2)=' l'B;
11/14/70 Section 2.1.3 - 3/9
IF
IF
IF
IF
IF
IF
IF CSR THEN IBE(l) , I BE ( 2 ) = ' 1 ' B ;
END;
IBPL13 THEN I3E(1)='1'B;
IBP121 THEN IBE(2)='1'B;
IB(O) I IBC(O) THEN IBE(0)='1'B;
18(1)1 IBC(l) THEN IBE(1)»'1'B;
IB ( 2 ) I IBC(2) THEN IBE(2)='1'B;
IB(3) I IBC(3) THEN' IBE3='1'B;
/* CHECK FOR INHIBITS FROM CONSTANT GENERATOR.*/
IF M1E THEN IBE3(8)=« l'B;
IF M2E THEN I BE3 ( 7 ) = ' 1 ' B ;
IF M4E THEM I BE3 ( 6 ) = ' 1 ' B ;
IF M8F THEM I B E3 ( 5 ) = ' 1 ' B ;
IF M16E THEN IBE3(4)=« l'B;
IF M32E THEN IBF3(3)=' l'B;
IF P1F THEN FBI (35) = ' 1 'B
IF
IF
IF
IF
IF
P2E
P4E
P8F
P16F
P32E
THEN
THEN
THEN
THEN
THFM
FBI (34) = ' l'B
FBI (33)=' l'B
FBI (32 )=' l'B
FBI (31 ) = ' 1 'B
FBI (30)=' 1 'B
DBP=' l'B;
/* SFLFCT ANO PERFORM SHIFTS.*/
IF PLOF THEN OBP=FBI ;
IF PL1F THEN 00;
DO 1=1 TO 27;
DBP( I )=FBI ( 1+9) ;
end;
DO 1=1 TO 9;
DBP( I+27)=FBI ( I ) ;
END;
end;
IF PL?F THEN DO 1=1 TO 18;
DBP( I )=FBI ( 1 + 18) ;
DBP( I+18)=FBI ( I ) 5
END;
IF PL3F THEN DO;
DO 1=1 TO 9;
DBP( I ) = FBI ( 1+27) ;
END;
DO 1=1 TO 27;
DBP( I + 9)=FBI ( I ) 5
end;
END;
/* CHECK IB INHIBITS.*/
IF IBF(O) THEN DO 1=1 TO 9;
DBP( I ) = '0'B;
li/U/TO
Section 2.1.3 - U/9
FNO;
IF I HF( 1 ) THEN OH 1=1 TO 9 ;
ORP( I+9)=»0'B;
FNO;
IF IRF(? ) THFM 00 1 = 1 TO 9;
DBP( I+18)=»0'R;
END;
on i=] to 9:
IF IBF3(I) THEN DBP ( 1 +27 J ■ • « R •
ENO;
/* MAKF OR OUTPUTS EQUAL TO OBP OUTPUTS.*/
OR t OBR=OBP;
FMO PFR_IN;
HA/70 « *.
Section 2.1.3 - 5/9
PER OUT
PROCUDDE,
BIRG,
DBPRG,
LDRG,
WRBRE,
XORE,
ADDN,
DBDG,
LRDG,
ARF33,
A ORG,
B I R G ,
DBPRG*
L DR G ,
WRBRE,
XORE,
(ADDN,
DBDGr
LRDG,
OCL( AODE,
ADRG,
BLRG*
DBSTG,
LSE, .
WRPRLE,
XRVE,
ARG,
DLRN,
LRG,
ARE34,
ANDE,
BLRGt
DBSTG,
LSE,
WRPRLE,
XRVE,
ARG,
DLRN,
LRG,
ASRWE,
BRGSt
DLRG,
RSEt
WRPRVE,
ANDE,
ARGG,
DRL,
LRL,
ARF35,
ASRWE,
BRGS,
DLRG,
RSE,
WRPRVE,
DBDSG,
ARGG,
DRL,
LRL) (0:3)
BIT(l)
BARG,
BSR1G,
EOVE,
RWBGE,
WSBLE,
ARL,
IRG,
DBOSG,
ARARFG)
BARG,
BSR1G,
EOVE,
RWBGE,
WSBLE,
CORE)
ARL,
IRG,
BIT( 1 )
BORG,
BSR2G,
FLPRN,
SBRS,
WSBVE,
BIRN,
IRL,
CDREf
BORG,
BSR2G,
FLPRM»
SBRS,
WSBVE,
BIT(l) ,
BIRN,
IRL,
SCR (5), (ASRWE1,ASRWE2,RBRS)(7),
PRS(i:14), (PSMWS1,PSNWS2) (0:15 ),
rr(0:7,36) ,
PRSNR (0: 15, IB ) ,
fxtermal;
OCI (ARB,LRB,DRB) (36) BIT(l) EXTERNAL?
OCL 00(36) BIT(l) extfrnal;
IF CORE THEN CD=DB?
BRS(0:7) ,
0SS(0:31 ) ,
SMR(0:1A,A), PR(0:14,36)
0S(0:31,9), ASRG(7,18))
BIT( 1)
/* TRAMSFFR T TO LRN
X R\/P = XORE I EOVE;
IF XRVE THEN 00;
LRM=^T ;
OH 1=9 TO 36 BY 9;
IF 0B( I )=0R( I )
end;
OR AW IMG 07-1 */
THEN LRNU )='1'B;
E N
TO PROPER REGISTFRS.*/
SEND OUTPUT
DRL=' 1 'B;
DBDG, ARGG, LRDG='0'B;
IF BORG I A ORG I L ORG THEN ORL='0'B;
IF BORG THEN DO;
DBDG=' l'B;
or=obp;
eno;
if a org then 00;
ARGG=' l'B;
or=ar;
eno;
IF LORG THEN 00;
LROG=» 1 «b;
ll/U/70
Section 2.1.3 - 6/9
DR=LR;
END;
IF BLRG THEN LRN < * ) =DB ( * ) | LR N ( * ) ;
IF DLRG THEN LRN ( * ) =DR ( * ) I LRN ( * ) ;
/* CALCULATE LR GATE AND LATCH SIGNALS DRAWING 04-4 */
DO 1=0 TO 3;
LRG( I )=RSE|LSE|-*DLRN( I ) £OLRG | BLRG | ANDE I XR VE ;
END;
LRL=-^LRG;
nn i=o to 3;
IF LRG(I) THEN DO J=I*9+1 TO 1*9+9;
LR( J )=LRN( J) ;
END;
END;
IF BIRG THEM DO 1=0 TO 3;
IF -.BIRN( I ) THEN DO;
IRL( I ) = '0'B;
IRG( I ) = • 1 • B;
DO J=l*9+1 TO 1*9+9;
I R ( J ) = DB P ( J ) ;
END;
END;
END;
IF BARG THEM ARN=ARN|DB;
DO 1=0 TO 3;
ARG( I )=BARG I ADDE^ADDN( I ) ;
END;
ARG(0)=ARG(0) IRWBGE;
ARL=^ARG;
DO 1=0 TO 3;
IF ARG(I) THEM 0(1 J=I*9+1 TO 1*9 + 9;
AR (J )=ARM( J ) ;
END;
END;
IF ARARFG THEM Of);
ARF33=AR(33) ;
ARF34=AR ( 34 ) ;
ARF35 = AR( 35) ;
END;
/* CHECK FOR INITIALIZATION OF STACK */
/* DBSTG WILL BE OM IE THE OSTR AND SCR ARE TO BE RFLOADED
WITH A MEW OPERAND STACK POINTER ADDRESS */
IF DBSTG THEN DO;
DO 1=1 TO 2;
OSTR( I )=DB( 1+30) ;
END;
DO 1=1 TO 5;
SCR( I )=DB( 1+30) ;
FMD;
FMD;
11A/70 Section 2.1.3 - 7/9
/* LOAD OS FROM OB */
IF DBOSG THFN DO 1=0 TO 31 1
if nssu ) then nn;
l=mod( 1,4);
DO J = l TO 9;
ns( i tJ)«DBU*9+j);
end;
fnd;
fno;
WRITE ON SELECT POINTER OR SBR IE DESIRED */
IF DBPRG THEN DO;
IF WRPRLE THEN DO 1=0 TO 14;
IF PRS( I ) THEN DO;
IF FLPRN THEN DO;
DO J=l TO 8;
PR( I ,J)=DBP( J) ;
END;
no j =10 to 17;
PR( I t J)=OBP( J) ;
END;
END;
ELSE DO J=l TO 18;
PR( I, J)=DBP( J) ;
end;
end;
end;
IF WRPRVE THEM DO 1=0 TO 14;
IF PRSU ) THEM DO:
IF FLPRN THFN DO;
00 J=19 TO 26;
Pkd,j )=dbp(J) ;
fno;
no J=28 TO 35;
PR( I ,J)=DBP( J) ;
end:
END;
FLSE DO J=19 TO 36;
PR( I ,J)=DBP( J) ;
end;
end;
ENn;
IF WSBLE&SBRS THEN
do 1=1 to ib;
SBR( I )=DBP( I ) ;
end;
IF WSBVF f> SBRS THEM
no 1=19 TO 36;
SBR( I )=DBP( I ) ;
END?
end;
/* IMTERROPT RECOVERY FOR SHADOW NAME REGISTER */
IF BSR1G THFN DO 1=0 TO 2;
DO J=l TO 4;
SNR(2*I+8 r J)=DB(I*9+J) ;
H/W70 Section 2.1.3 - 8/9
SNR(2*I+9, J )=DR( I*9+J+4) ;
END;
DO J=l TO 4;
SNR( 14,J)=DB(27+J ) ;
end;
end;
IF BSR2G THEN DO 1=0 TO 3;
DO J=l TO 4;
• SNR(2*ItJ)=DB( I*9+J ) ;
SNR( 2*1+1 »J)=DB( I*9+J+4) ;
END;
END;
/* CHFCK FDR WRITING INTO THE POINTER REGISTER SEGMENT NAME
REGISTER PRSNR */
/* DEFINE PRSNR(0:15,18) AS THE INTERNAL REGISTERS ON
DRAWINGS 22-4 TO 22-19 IN THE LOGIC BOOK */
DO 1=0 TO 15;
IF PSNWSl(I) THEN DO J=l TO 8;
PRSNR( I t J)=DBB( J) ;
END;
END;
DO 1=0 TO 15;
IF PSNWS2(I) THEN DO J=10 TO 17;
PRSNR( I, J)=DBB( J) ;
END;
END;
/■* ASSOCIATIVE REGISTER WRITE SIGNAL DRIVERS */
IF ASRWE THEN DO 1=1 TO 7;
IF RBRS( I ) THEN DO;
ASRWEK I), ASRWE2< I ) = • l'B;
DO J = l TO 17 WHILE ( J-^ = 9) ;
ASRG( I» J)=DBB( J ) ;
END;
END;
END;
FLSF ASRWE1»ASRWE2=» O'B;
/* WRITF INTO BASE REGISTER */
IF BRGSfcWRBRE THEN DO 1=0 TO 7;
IF BRS(I) THEN BR ( I ,* ) =DBP ( * ) ;
END;
LRB=LR;
ARB=AR;
DRB=DR;
END PER_OUT;
ll/U/70 Section 2.1.3 - 9/9
2.1. h Permuter - Logic Description
2.1.4.1 The Basic Permuter Card
The heart of the Permuter logic is the -237 card shown in
Figure 2.1.4.1. This card consists of four latch flip-flops plus two
NOR's, each driven by several AND circuits.
The flip-flops are designated LR, AR, IR, and DR. The first
two are independent of any direct action taken by the rest of the card
circuitry (i.e. there are no direct connections to the LR and AR flip-
flops from the other circuits).
In the LR flip-flop note that the complement of the input (LRNi) is
stored when the gate signal, LRi/G, is logically "l" (+6v) and the latch
signal, LRLi, is logically "0" (Ov). After the data has been stored in
the flip-flop, the latch signal must be "l" and the gate must be "0". In
order to maintain the new state reliabily the latch must become "l" before
the gate becomes "0". Otherwise the input signal may be cut off before
the new state is "locked in".
The AR flip-flop works in exactly the same manner as the LR
flip-flop. The IR flip-flop is also similar except that the data input
is from the second of the 2 NOR's on the -237 card. Since this input
(DBPi) is not in complemented form the output definitions are reversed.
In effect, by connecting the input of the IR flip-flop internally to the
card we are restricting its input so that it can only be loaded directly
from the Distribution Bus (DBP).
The DR flip-flop is like the IR flip-flop, in that its output
definitions are reversed. However, in addition it has three inputs
instead of the usual one. One of the inputs is from the DBP as in the IR.
The other two are from the LR and AR. Each input has its own separate
4/7/69
Section 2.1.4.1 - 1/3
gate. Note that in order to store data from one of the three inputs the
latching signal (DRLi) must be logically "0" and one of the three gating
signals must be "l". If more than one gate is on, the result in the DR
will be the OR function of the data on the lines with the gate signals
on. Once again, when the data is stored the latch signal should be
turned on before the gate signal is turned off.
The first NOR on the -237 card is what has been called the Permuter
input driver (see Section 2.1.1,1 and Figure 2.1.1.5/1). All of the
possible inputs to the permuter are AND'ed with their respective gating
signals and then NOR'ed together to produce the FBIi signal. This signal
is, in effect, the complement of the desired input to the Permuter. As
mentioned in Section 2.1,1.5, various signals from other cards may be
dot- OR'ed with this line to cause masking on certain parts of the input.
The final NOR circuit on the -237 card controls the output from
the permuter. The first four inputs to this NOR are gated by the Permuta-
tion Control signals, PLO/E, PLl/E, PL2/E and PL3/E. At most only one of
these will be on at any given time. The data which is gated by these
signals comes from an FBI line on one of four of the Permuter cards. PLO/E
gates in the FBI signal from the same card. PLl/E gates in the signal from
9 bit positions to the right of the present positions (i.e. i + 9), PL2/E
gates the FBI from 18 positions to the right, etc
The last of the inputs to the final NOR is the inhibit signal
which causes the DBP to become "0" if it is turned on. It should be noted
again that DBP and DB are logically equivalent (see Section 2.1.1.U).
Section 2.1.U.1 - 2/3
U/7/69
3 d
In a
TJ
-P
3
Ah
CVJ
0)
tsD
f> w
5 fe « JOT «h to
ft*
(9
* (E
6/25/69
<9 J
3 i
y * w ;
£ ot 5 a. « £ - e „ > - «m
S a Be. Q.o oat
* Is) + yj
- s
Section 2.1. U.l - 3/3
2.1.4.2 Inhibit Generator
The Inhibit Generator for the Permuter is contained in Drawing
OU-5 in the TP Logic Book. It is used to determine the inhibit signals
sent to pin V on the -237 cards. It should be noted that in bytes 0, 1
and 2 of the Permuter output, the whole byte is inhibited by the same
signal, i.e. IBO/E, IB1/E, or IB2/E, whereas in byte 3 of the Permuter
output each of the nine bits can be inhibited individually (see Section
2.1.1.5).
As shown in Figure 2.1.4.2 the inhibit signals can be used for
right and left justification of data and for shifting data on a byte basis.
A series of five NAND's decode the right and left justification control
signals and the cell size signals to determine which inhibit signals should
be turned on. The outputs of these NAND's become "0" if the inhibit signal
to which they eventually lead must be turned on. In addition to these
decoders there are six signals which come from the Boolean/Shift circuits :
IBO, IB1, IB2, IB3, IBPL21 and IBPL13. These signals are produced by the
Boolean/Shift logic and therefore their generation will be explained in
detail in Section 2.8.
The first h of these 6 signals are obvious in their meaning and
are fed directly to the inhibit signal drivers. The last two actually serve
two purposes. IBPL21 indicates that byte two should be inhibited and also
that there should be a left permutation of 1 byte. The permutation will
be discussed later. For now it should be noted that this signal is treated
the same as IB2. The IBPL13 is the same type of signal and indicates that
byte number 1 is to be inhibited and that' a left permutation of 3 bytes is
to take place. This signal is treated similarly to IB1.
11/25/69 , Section 2.1.4.2 _ 1/3
IBO/E
IB1/E
IB2/E
-INHIBIT ALL BITS
IN 3RD BYTE
POSITION
FIGURE 2.I.4.2 INHIBIT GENERATION LOGIC
5/16/69
Section 2.1. U. 2 - 2/3
There are 3 NMD circuits which act as drivers for IBO/E
IB1/E and IB2/E. If one of these is to be turned on, one of the
inputs to its respective driver will turn to "0". m the case of byte
number 3, however, there are actually nine separate drivers, one for
each bit in the byte. If the whole byte is to be inhibited one input
in each bit driver is set to "0". otherwise the input rests at "1" and
each driver output w thus be controlled individually by the other
driver inputs. These individual inhibit signals ffi ay be used as explained
in Section 2.1.1. 5
V25/69
Section 2.1. k. 2 - 3/3
2.1.U.3 Permutation Control Logic
The permutation control signals, PLO/E, PLl/E, PL2/E,
and PL3/E, are obtained either directly from a set of control signals
or indirectly by decoding the contents of the 2 bit source and
destination busses. The set of control signals originates from the
shift control logic in drawing 17-1 of the TP Logic Book or from the
main control logic drivers. The permutation control logic itself is
on drawing OU-7.
If the set of control signals is used to generate the
permutation control signals, the decoding network must be disabled.
This job is performed by the LRS/E 1 signal which is inverted and
used to drive the enabling input of the decoding logic.
It should be noted that when PLC1, PLC2, or PLC3 is used
to control the permutation, the Main Control logic is responsible
for turning LRS/E on. This is done at the final driver stage in
the control logic just before the signals are sent to the Permuter
itself.
It is also important to notice that if LRS/E is turned on and
none of the permutation control signals are activated, none of the
input data will get through the Permuter. Instead, the output will
be all l's since all of the permutation signals (even PLO/E) will be
off. It is exactly this situation that is taken advantage of in the
generation of negative constants (see section 2.1.15). The above
mentioned logic in the Main Control section is also responsible in
this instance to make sure that LRS/E is turned on if Ml/E, M2/E,
M1+/E, M8/E, M16/E, or M32/E is turned on.
The name of this signal derives from the fact that when originally
conceived, it was used to allow the Left /Right Shift logic to control
the permutation.
8 /22/69 Section 2. l.U. 3 - lA
Whenever the source and destination busses are used to
determine the permutation, the set of control signals must he off
and LRS/E must he off. This latter condition enables the 236-15, h
bit decoding diode matrix board (see figure 2.1.U.3/D to drive 16,
228-05 circuits. These circuits in turn are dot-or'ed and fed to the
h NAM) circuits driving the PLi/E signals according to the equations
given in section 2.1.1.3.
The inputs to the decoding circuit consist of the true and
complement signals from two, 2-bit busses. These two busses are
loaded from the source and destination busses by the Reverse Source
and Destination enable signal, -RStTF. When E3B71T = 1. the source bus
is gated to the first 2 bit input bus to the decoder (ItiAl and INA2
in figure 2.1.U.3/D and the destination bus is gated to the second
input bus (INB1 and INB2 in figure 2.1.H.3/1). When W= 0, the
gating is reversed and the source bus goes to XHB and the destination
bus goes to INA.
It should be noted that KSHTF is normally automatically
activated by special logic in the Main control logic final driver
stage where it is turned on by any signal which indicates that there
will be a write in one of the storage areas.
The source and destination busses themselves are generated
hy dot-or'ing various types of information onto them depending on the
type of registers involved in the transfer and the type of data
justification desired. Note that in drawing 0U-7, the source and
destination busses are in complemented form as they go into the
RSD/E and RSD/E gates .
The key point to remember when trying to understand the
operation of the logic attached to these busses is that the normal
flow of data is considered to be from storage areas (ie.memory or the
storage blocks) to the "working" registers (ie.AR, DR, IR, LR). Thus
Section 2.1.U.3 - 2/U
8/22/69
when expressing the data justification used by a given storage block,
the source bus is always used, even if the data is being loaded into
the storage block i nstead of being read out of it . In the case of
loading a storage block the RSD/E signal will be set to by the
control logic and the source bus will then act as the destination
input to the decoding logic.
With this in mind we can discuss the various inputs to the
source and destination busses.
The DBRJ signal is used when the data is to be right justified
in the working registers. In this case, if the cell is a halfword, the
"destination" cell will be on the 10 byte boundary and therefore
Dl must be forced to '0». If the cell size is a byte the destination
address is 01 and D2 must be set to »0'. Note that for word and
doubleword cell sizes no action need be taken since the data will begin
at the 00 byte address. In doubleword cells this is due to the fact
that the doubleword cell is treated as two word size cells in the
Permuter.
When OSS/S is turned on, data is either coming from the
OS or going to the OS via the Permuter. The address within the OS,
of the cell being accessed is contained in the 5 bit Operand Stack
Temporary Register, T2R. In particular, the last two bits of the
register, T2RU and T2R5 , indicate the byte boundary address of the
cell. Thus, considering the "normal" flow of data through the
Permuter, the two source lines must be set equal to the last two
T2R bits, ie. SI = T2RT and S2 = T2R?.
When BRG/S is on, the base. register storage block is being
accessed. As is explained in section 2.5.1.1, the storage for the
base registers is rather mixed up since each register is only 3 bytes
long while the storage blocks are based on 8 byte double words. This
causes the beginning byte address to vary according to the base
register number. Referring to figure 2.5.1.1, it can be seen that
8/22/69
Section 2.1.4.3 - 3/k
the equations for the two source hits can he written as:
51 = BR1/S v BR2/S v BR5/S v BR6/S
52 = BR1/S v BR3/S v BR5/S v BRT/S
Two NATO's utilizing inverted input sjxe used to produce these
signals which are then gated to the SI and S2 lines by the BRG/S
signal.
The CRRL/G signal is used when accesses are being made to
core. In this case the last two hits of the core address determine
the source hit settings. These two hits are stored in ARF3U and
ARF35 which are part of a 3 hit register specifically used for storing
the low order 3 hits of the core address.
The IBR/S signal indicates that the IBR part of the BR-IBR
storage block is to be accessed. The initial address of the word cell
to he accessed is determined by the ICT. Thus ICT2 and ICT3 are
gated to the SI and S2 lines respectively. In addition if both
IBR/S and OPJ/E are on the 52 line will be activated. This option
is used when it is desired to justify the data from the IBR on the
01 byte position of the destination.
8/22/69 Section 2 - 1 - U - 3 " ^
2 ' 2 Nine Bit/Byte Buffer Storage Blocks
Nine bit/byte storage blocks are used by the Taxicrinic
Processor to buffer data for which fast access is required. The
basic storage element is the Smith flip-flop 1 , eight of which are
contained on one -20U card. By driving nine of these -20U cards
with two -205 cards, a storage block containing eight bytes of
nine bits each (8 data bits and 1 flag bit), complete with gates
and drivers, is formed. These blocks are then used in groups to
build up the various data registers in the TP.
Storage blocks are used to form 25 registers in the TP
in addition to the fast storage in the Operand Stack. Four blocks
are required to form the 32 bytes of the Operand Stack maintained
in the TP. Eight blocks form the 15 pointer registers (h bytes
each) and the Spare Buffer Register (k bytes). And finally k
blocks are used to form the 8 Base Registers (3 bytes each) and
the Instruction Buffer Register (8 bytes).
Designed by Professor K. C. Smith
h/k/69
Section 2.2 - l/l
2.2.1 Buffer Storage - Functional Description
The organization of the Buffer Storage Blocks is shown
in Drawing 01-0 in the TP Logic Book. Each block is made up of
two -205 cards which provide the gating and driving logic, and
nine -20h cards which provide the actual storage. Each -20*+ card
supplies 1 bit position for each of 8 bytes.
This section defines the data and control signal inputs to
a storage block. Operation of the storage block is then described.
The two -205 cards together supply 8 Byte Select Drivers
(BSD), 2 Input Gate Drivers (IGD), 2 Output Gate Drivers (OGD) and
6 spare NMD circuits. All inputs to all drivers rest in the
logical "1" state.
The BSD's set the proper voltage level on the emitters of
the flip-flops in the -204 cards. Each BSD drives one flip-flop on
each -20U card, these flip-flops then represent the byte designated
by their corresponding BSD. As shown in Figure 2.2.1/1 there are 3
output levels, which determine the "sensitivity" of the 9 driven
flip-flops. A "high" output level (+3.5 volts) enables the flip-
flop to receive data or to be written into; the "intermediate"
level (+1 volt) is the "holding" level at which the flip-flop can
neither be written into or read out of. The "low" output level of
the BSD (-2.5 volts) causes the flip-flops to be read out via the
Output Gates.
The signal levels on the two input control lines to the
BSD uniquely determine the state of the output line. One input,
k/k/69
Section 2.2.1 - 1/6
BYTE SELECT >
READ/WRITE
+ 6.0
+ 6.0
BYTE SELECT
DRIVER
(BSD)
♦ TO FLIP-FLOPS
+ 3.5/ + I.0/-2.5
FIGURE 2.2.1/1 BYTE SELECT DRIVER
5/16/69
Section 2.2.1 - 2/6
the Byte Select line, overrides the effects of the second, the
Read/Write line. When the Byte Select line is "l", the BSD
output is at the intermediate level (+1 volt). If the Byte Select
line is "0" the output will be determined by the Read/Write input
signal. When this is "l" the output is at -2.5 volts, the "read
out" level. A "0" Read/Write signal sets the BSD output to +3.5
volts, or the "write in" state, again only when the Byte Select
signal is "0".
As shown in the TP Logic Book Drawing 01-0 the Byte Select
lines come from input pins D,H,L, and P on the two -205 cards. The
Read/Write input lines come from pins B,E,J, and M.
The Input Gate Drivers, as shown in Figure 2.2.1/2, gate
in the data line to the 2 input gates of the flip-flops. The inputs
to the IGD's are normally resting at logical "l" (+6 volts) causing
the outputs to normally rest at "0" (0 volts). The drivers are
operated together in the normal method of operation: for a "gate
both in" effect, both inputs to the flip-flop are activated with
complementary signals. If only the "gate true in" signal on the
IGD is activated, only the "true" input to the flip-flops will be
activated and the result in the flip-flop will be an OR of the old
and new data. It must be remembered that in order for a "write in"
to occur, the BSD must also be in the "write in" state.
On the -205 cards, the IGD's are simply 2 input NAND's
which drive NAND circuits on the -20U cards. Each IGD drives 9
NAND circuits, (one byte) one from each -20^ card in the block.
These NANDS then drive the inputs to the flip-flops. As shown in
k/k / 6 9 Section 2.2.1 - 3/6
GATE
TRUE INTe^"
u
17
GATE
BOTH IN+g/o
INPUT GATE
DRIVER
# 1 (IGD)
Li
INPUT GATE
DRIVER
-#2 (IGD)
IN DATA
INHIBIT +6/0
205 CARDS
TO FLIP-FLOP
INPUTS
-H6/0
TO 8
OTHER
204 CAF
204 CARD
FIGURE 2.2.I/2 INPUT GATE DRIVER
5/16/69
Section 2.2.1 - U/6
the TP Logic Book Drawing 01-1, the "gate true in" signal to the
IGD comes from pin U of the first -205 card. The "gate both in"
signal comes from pin 17 of the first -205 card and is tied, intern-
ally to the card, to both IGD's.
The In Data Inhibit signal shown in Figure 2.2.1/2 is used
in some of the storage blocks (i.e. the Operand Stack) to inhibit the
loading of certain bit positions (notably the flags). If the inhibit
signal is set to the logical "0" state, the data will not be trans-
mitted to the flip-flops even though the in gates and the select
signals are on.
The Output Gate Drivers on the -205 card drive the output
gates on the -20^ cards. They are shown in Figure 2.2.1/3. The
voltage level outputs from the driver are +0.7 and -2.9 volts. Inputs
to the driver rest at logical "l", the outputs at logical "0". One
0GD is used to drive the true gate from the flip-flop; the other, the
false gate. The drivers can be operated either simultaneously for a
double-gate effect, or singly, for a gate true (false) out effect.
If they are only operated singly, the outputs of the output gates
(not the gate drivers) may be tied together (dot OR) to yield a true
or complement output from the registers onto a single output line.
(This has been done in the Operand Stack buffer storage).
The gating signals into the 0GD must be operated when the
BSD is set for the "read out" state. Otherwise the outputs from
the output gates will both be "0" (0 volts).
The OGD's on the -205 cards consist of a 2 input NAKD
followed by a driver circuit. There is one OGD on each -205 card.
For simultaneous operation, two of the input pins, one from each
OGD, are tied together. Pin 20 on the second -205 card connects to
the "gate true out".
k/k / 69 Section 2.2.1 - 5/6
DATA OUT
GATE 20
TRUE OUT +6/0 I
GATE
BOTH OUT +6/0
GATE
OUTPUT GATE
DRIVER
* 2 (OGD)
+ 0.7/-2.9
20
FALSE OUT +6/0
OUTPUT GATE
DRIVER
# I (OGD)
+0.7-2.9
205 CARDS
TRUE OUT
+ 6/0
CD
FALSE
FALSE OUT
+6/0
OUTPU
GATES
TO 8
OTHEf
204 1
TRUE
FROM FLIP-FLOPS
204 CARDS
FIGURE 2.2.1/3 OUTPUT GATE DRIVERS
5/16/69
Section 2.2.1 - 6/6
2.2.2 Signal Name List for Buffer Storage - Control Signals
Buffer Storage
Name
Base
Byte Select
Read/Write
Gate Both In
Data In
Gate True Out
Gate False Out
Data Out
In Data Inhibit
Actual Names Used*
, Spare
Inst. Pointer i Buffer
Buf. Reg. ] Reg. ) Register
BRI/S i IBRI/S
PRi/S
SBR/S
WRBR/E ' WRIB/E
'DBBRS/G-
BRSBP/G
BROSi
*«-
DBPi
■*♦
WPRL/E I WSBL/E
WPRV/E WSBV/E
-DBPRS/G-
l
PRTG/S I PR8G/S
PR8G/S !
PRBi
Operand
Stack
OSi/S
DBOS/G
DBOS/G
OSPF/G **
OSPT/G **
BROSi
FLOS/N
*Gate True In and Gate Both Out are provided in the storage blocks
but not used.
**Since the outputs from the Operand Stack Storage Blocks are inverted
the Output Gates are the reverse of what would be expected.
11/5/70
Section 2.2.2 - l/l
2.2.U Buffer Storage - Logical Description
The purpose of this section is to describe the operation of
the buffer storage from a detailed logical and electrical point of
view. The description repeats some of the information in Section 2.2.1
but extends to a much more detailed level.
A buffer storage block generally consists of 9, 20k storage
boards and 2, 205 driver boards. The 20*+ board as shown in Figure 2.2.U/1
contains eight flip-flops and some associated circuitry. These eight
flip-flops are internally wired to form a "vertical" stack, and in normal
operation the nine 20U boards are wired side by side (horizontally) to
form an 8 x 9 or 72 bit array. The two 205 boards are needed to drive
the 72 bit array.
During a read or write operation the contents of one of the
eight flip-flops will account for one and only one bit of the output
register. The nine 20*+ boards together will account for nine bits, i.e.
a byte. During the operation of this storage block one byte will be
operated on at a time. A typical operation might be sensing the contents
of the third flip-flop in each of the nine boards.
In order to be able to work on nine flip-flops at a time,
some sort of gating signal must be applied. This is the function of the
205 driver boards. Each of these boards contains four circuits which
will gate information into and out of the flip-flops. Thus, for a
vertical stack of eight flip-flops two such boards are necessary. The
remaining circuits on these 205 boards are used for controlling the
input and output buffers of the entire array.
The key to the operation of this memory is in the type of
gating signal supplied by the 205 boards. This signal has three distinct
levels, and each of these levels puts the flip-flops into a different
mode of operation. The different voltages corresponding to these levels
are approximately +3-5, +1.0, and -3.0.
The description in this section is the work of H. Magusky.
2
The design of this board is an outgrowth of the flow gating memory described
by Guckel, Kunihiro , and Crow in DCL Report No. 106, March 196l.
11/5/70 Section 2. 2A - 1/9
FF SELECT
FF SELECT
FF SELECT
FF SELECT
FF SELECT
FF
TLC
0/OUT
w (DJ
FF SELECT
FF SELECT
SBDI OUT
B E
SBD2 LOGIC OUT
10/8/69
Figure 2.2.U/1 Logic for 20H Board
Section 2.2.U/1 - 2/9
c
F E
K (S
n E
x [y]
R
14
S |M)
15
16
T m
U
17
18
V (£]
w m
Figure 2.2.U/2 Logic for 205 Board
11/7/69
Section 2.2.U - 3/9
NOTES
I, UNLESS OTHERWISE SPECIFIED,
RESISTANCE VALUES ARE IN
OHMS. 1/4 WATT, 2%,
I JNLESS OTHERWISE SPECIFIED,
DIODES ARE USD3.
3, UNLESS OTHERWISE SPECIFIED,
TRANSISTORS ARE USN3.
a, UNLESS OTHERWISE SPECIFIED,
CAPACITANCE VALUES ARE
IN MICROFARADS.
&TEST POINTS ARE INDICATED
BY ®, WITH TEST PINS
INDICATED BY Q
6 UNUSED PINS
TEST PLUG— B. H, J, K,
L, S, T.
7 POWER SUPPLY COMMON TO
4 CIRCUITS (SIGNAL GOES
TO NEGATIVE VOLTAGE
LEVEL)
8- COMMON TO 2 CIRCUITS.
9, OUTPUT FROM C, E «. N
IS SPECIAL 3 LEVEL SIGNAL
USED TO DRIVE 204 CARD. '
10 OUTPUT FROM X, S. T. V, W
ARE USED TO DRIVE 204 CARD
E.E.
S, T, V, W
Bl.Sl.E.E
igure 2.2.U/3 Electrical Schematic for 205 Board
Fig
11/7/69
Section 2.2.U - U/9
Once the 205 boards have generated the proper voltage levels
the 204 board can take then and convert them to read and write operations.
Referring to Figure 2.2.4/4 notice that the second circuit from the top
has connections to pins J through S, and 8 through 15. These eight
circuits are the flip-flops that store the information, and the lines
connecting to the above pins are known as the "FF Select" lines (see
Figure 2.2.4/1). These FF Select lines have the three levels mentioned
above .
Each of these lines connects to the common emitter connection
of the flip-flop. These flip-flops were designed so that they will keep
their state even if the common emitter voltage varies over a range of
+ 4 volts from ground. Due to some external connections to the flip-
flop, however, the mode of operation of the flip-flop changes as the
voltage is varied over this range. Specifically, the flip-flops are at
rest when the voltage is +1 volt, they are ready to accept new information
when the voltage is +3-5, and their internal states are sensed at -3.0
volts.
The reason why they act in this manner is not too difficult
to understand. Take first the case of new information coming into the
flip-flop. When the write gating signal comes along the FF Select lines
are placed at +3-5 volts, and the flip-flops will be forced into a raw
state if any of the base connected diodes (D5 to D8) are grounded or
near ground. If D5 or D6 is grounded, the flip-flop will set to "0", and
if D7 or D8 is grounded, the flip-flop stores a "l." A "l" state is
defined when the signal at the output test point resistor (R22) is
positive.
Diodes D5 and D7 on all flip-flops are connected internally
to the IN 1 and IN lines respectively. These two lines are normally
the complements of each other, and can never be grounded at the same
time. The status of these two lines depends on the inputs to the Storage
Bus Drivers (SBD1 & SBD2), and since both SBD gates can be controlled
by the inputs to SBD1, complete control over setting a or 1 is possible
10/8/69
Section 2.2.4. - 5/9
D®
lj©
-J
B
@
-,-«
3
@
10
a
CO
* 3 r-i
= -
@
Q
0>"
« "n" and onlv the control signals
of X2, both the XI and X2 gates will be , and only
OSCi/E will be able to determine the state of CGBi.
Section 2.3-1.2 - 2/3
6/18/69
CGB 1
CGB 2
CGB
CGB^
CGB
CGBj^
CGB 2
CGB
CGB^
CGB
CSB
1
1
CSH
1
1
CSW
1
1
CSD
1
1
XI (multiply by l) X2 (multiply by 2)
CGB
CGB 2
CGB
CG B]+
CG
0SC16/E
1
0SC8/E
1
OSC&/E
1
0SC2/E
1
OSC1/E
1
Note: Only one of CSB, CSH, CSW and CSD can be on at one time.
Figure 2.3.1.2
6/18/69
Section 2.3.1.2 - 3/3
2.3.1-3 Byte Selection Logic
In order to know where a cell is to be stored or read from in
the 32 byte buffer storage of the operand stack, a method is needed to
select the bytes desired for any current action. This is the purpose of
the byte selection logic. The basic idea involved is that the bytes con-
cerned should first be chosen on the basis of the single byte address in
register T2R and then this byte and the necessary bytes after it can be
either read out of or written into the 0S.
The four different cell sizes cause a problem of picking out the
right number of bytes. However all data lines are built for four bytes
therefore it was decided that four bytes would be selected regardless of cell
size. For word or double-word cell size (a double word size needs two
"accesses" to the stack anyway because of the size of the data lines) this
procedure is optimal. The half-word and byte cell sizes also usually work
because only the top of the stack is ever accessed and if the cell desired
is only 1 or 2 bytes long, the other 3 or 2 bytes will contain garbage which
can be ignored. The only exception to this rule occurs when the 0STR
boundary occurs within 3 or 2 bytes of the last byte which needs to be
accessed. Referring to Figure 2. 3. 1.3, for example, if the rightmost half
word in the 00 double word were the cell being written on, and the selection
logic picked out four bytes, the first two bytes in the 01 double word
would be overwritten and destroyed. For this reason the byte selection
logic does not allow four bytes to be chosen in such a manner that the
0STR boundary will be "crossed".
With this in mind the byte decoding and selection logic is rela-
tively straightforward. The byte address in T2R is decoded to give one of
32 outputs. Each output represents a particular byte in the hardware 0S.
In the next-byte-selection logic the next three bytes in increasing order
are selected along with the original byte and selection signals are generated
3/12/69 Section 2.3.1.3 - 1/2
00
01
■I I I I *-
t t
SCR OSTR
' ■ ' I — I — u
10
L II I III
11
I I I I) I ■ ' ' ' ' ' '
Figure 2.3-1-3
to be dallied to the actual hardware 0S. These selection signals m ay
I the "11111" - "00000" boundary or cross any other double word
wrap around tne -LJ~i~i~l ^
wx p , . .v,_ m^tr In this case the
boundary except the boundary defined by the 0STR.
selection of bytes past the boundary is inhibited.
The boundary inhibit gates are inserted every eight
Dy tes. The one (of four) boundary gates which inhibits propagation
. +0 .nf qeipfted hv the (decoded)
of select-next signals is itself selected oy m \ "natural"
contents of the 0STR. Boundaries are located at the our n u ^1
wlred - in aouble-word addresses. The inhibit gates allow c lis
loa ded into the 0S right up to, but never beyond, the boundary.
Section
2.3-1-3 - 2/2
9/17/69
2.3.1.1+ Stack Overflow-Underflow Sensing Logic
The stack overflow/underflow sensing logic determines the
position of the top of the stack within the 32 bytes in OS hardware
buffers relative to the boundary between the TP and Main Storage
portion of the stack. Inputs to the OV/UF logic come from the OSTR,
the SCR, the adder overflow flip-flop A50V and the cell size decoder.
The philosophy of the OV/UF logic is first to discover which
double word the top of the stack (SCR) is in relative to the boundary
(OSTR): the first or second double-word above the boundary or the first
or second below the boundary. Then, on the basis of the input cell
size and the position of the top of the stack within the double-word (as
given by the low-order bits of the SCR) the appropriate output signal is
activated: 0V1, 0V2, UF1 , or UF2. 0V1 indicates that there is inadequate
room in the hardware stack to insert one cell of the indicated size. 0V2
indicates that there is not room for two of the given cells. UF1 states
that there remains less than one of the cell of the indicated size in
the hardware stack. And UF2 shows there is less than two cells remaining.
The equations for the position of the top of the OS relative
to the boundary are:
3/12/69 Section 2. 3.1 A - 1/U
E01 = X^Yg v WW v X 1 X 2 Y 1 Y 2 v X^Yg
= «i« if the top of the OS is in the D-word immediately
preceding the boundary.
E02 = ljgj 2 ▼ ^VA v ^y^ ▼ X i X 2 Y l Y 2
= '1' if the top of the OS is in the second D-word
preceding the boundary.
EU1 = I^Y^ V V2V2 V X 1 7 2 Y 1 Y 2 V X 1 X 2 Y 1 Y 2
= •!' if the top of the OS is in the same D-word as
the "boundary.
EU2 = WW v X l X 2 Y l Y 2 V X A Y 1 Y 2 V X 1 X 2 Y 1 Y 2
= «i« if the top is in the second D-word above the
boundary .
y and Y are defined as SCR n and SCR and Y
In the above equations, X ± and X g are aenneu ± 21
and Y are OSTR x and 0STR 2 respectively.
The above overflow/underflow enable signals are then combined
with the cell size and SRO inputs to generate the true OV/UF signals.
The "region of effect" of the E-signals may be shown by the followxng
diagram:
Bottom limit
E02 E01 |/eU1 ■ EU2
I 1 \ " I ^
/* boundary as defined by OSTR
Top Limit
3/12/69
Section 2.3.1^ " 2 A
In the case where the SCR points to the boundary defined by
the 0STR we have a problem of knowing whether the stack is completely
empty or completely full. For this situation EU1 = 1 , while EU2, E01
and E02 = 0. What we really want to know, is where the SCR was pointing
just before it moved to the 0STR boundary. If it was in the EU1 region,
the stack is now empty, while if it was previously in the E01 region
it is now full.
To determine this, a stack full flip-flop (0SF) is used. When-
ever the SCR is modified using the SCR M0D control sequence, a signal
sets 0SF to 1 if the following conditions are satisfied:
a) the first two bits of the new value of the SCR (which
at this time will be in the adder output register, TRl)
are equal to the 0STR ,
b) the low order 3 bits of the SCR are zero,
c) the E01 signal was activated by the old value of the SCR.
This assures that when the SCR "approaches" the 0STR from region E01 ,
the stack will be declared to be full. Once 0SF has been turned on, it
is used to keep both 0U1 and 0U2 turned on.
0SF is reset by the main control using the R0SF signal when-
ever the SCR is modified. This is necessary as a preliminary to checking
for a possible "stack full" condition at the new SCR position. 0SF
is also reset whenever the 0STR is moved.
The actual over flow /under flow signals may now be defined:
0V1 = 0SF v E01 • CSD • (X, v X, v X _) v E01 • CSW • X ■ (X, v I )
v E01 • CSH ■ X • X, • X c
0V2 = 0V1 v E02 • CSD • (X 3 v X^ v X ? ) v E01 ■ CSW«(X v X^ v X )
v E01 • CSH • X • (X, vX,)t E01 • CSB • X, . X, -X
UF1 = EU1 • CSD v EU1 • CSW • X_ v EU1 • CSH • X • X, v EU1 • CSB'X ■ X, • X
J 3 4 3 k 5
UF2 = UF1 v EU2 • CSD v EU1 • CSW v EU1 • CSH • x" v EU1 * CSB • X • X,
3 3 4
where once again the X's refer to the SCR bit positions.
11 /5/T0 Section 2.3.1. U-3/U
• a i s are used in the OS sequencing control to control
These signals are usea iu
fl ..dating and to control the time of transfer of
::r,;r;rr:r.rr. ...... - — . - - —
of the OS.
mi (WR) as the name implies, is used to
Temporary Register #1 (T1R), as t-ne + + „ om the
• nv a five -bit stack address. TIE has the output from the
hold temporarily a five dim receive
«„ Mt adder as its only input. Its primary function is to receive
five-bit aaaer Qther reglsters .
a sum from the adder before passing it on on fussed
j ,-v, +>,<= nvprf low/underflow logic, u-l&v,^
Bits 1 and 2 are also employed m the overflow/
above .
Temporary Register #2 (T2R) is, again, used to temporarily hold
yZesL However, TSR's functions are less transient than
five . tlt stack addresses ^ ^^ ^
those of TR1. The purpose of T2R is , g
dri .e the decoding and hyte-seleotion logic, which turn
wo rd select inputs. T2R has as inputs the outputs of TIB
T2R-S outputs are also fed to the SCR.
Asters are not essential for the proper opera-
Two temporary registers are
, \ , loalc They do offer a speed increase over one-
tion of the «, contro lo ^ ^ ^ ^ ^^ ^
agister ^^^^^^ first may he constructed in the five-
qu ich succes sion th d ^^ ^ ^ ^ ^
hit adder and gated into 12K v address of the
., 4.x, «™+ cell is being accessed, the anaress
SCR. Then, while the first cell i B as Eoon
second is computed and placed into T1R ready to be gated
as the access of the first cell is complete.
The adder itself uses full carry loohahead to speed addition.
„ adds in fewer than 6 «» delays (^ reader err ^ ^ ^
„ rit eup of the 32 hit adder in Sec 10 . fo ^ ^
Xoohahead principle and equations.) Its input a
.„, • += The sum is obtained from one 'A plus one
aad -B- inputs. Th sum ^ ^ ^ Mnstant
'A' inputs are the SCR, 0bK, an .
output of the adder goes to T1R.
If an overflow (or underflow), condition is detected, the five-
« Ustfv) is set. When this occurs, Pointer
Mt adder overflow flip- OP ^ ^ determlned
Register #13 is incremented (decrement
by the main control. &&!<* 2.3.1.U - U/U
11/5/70
2.3.1.5 5-Bit Adder-Functional Description
The 5-bit Adder is the small full carry lookahead adder used
by the Operand Stack logic to perform any additions which may be needed
in its operation. This adder is totally independent and completely
separate from the Main TP 32-bit Adder.
The 5 bit Adder has two 5 bit input busses. The A input bus
has 3 possible sources: temporary register T2R, the Stack Control
Register, SCR, or the Operand Stack Top Register, OSTR. Note that in
the latter case only the two highest order bits are used. The B input
bus has two possible sources: the Constant Generator (see Section
2.3.1.2) or the tenporary register T2R.
The output of the 5-bit Adder is sent to temporary register
T1R. If an illegal result is obtained due to an overflow on either
an addition or a subtraction, the A50V flip-flop is set.
The 5 bit Adder is generally used to add or subtract numbers
from the SCR or 0STR when these registers are "moving" one of the
Operand Stack boundries. The Constant Generator can generate l's
complement numbers and if a low order carry is injected into the
adder (C5IN J) at the same time, a subtraction will result.
9/30/69 Section 2.3.1.5 - 1/1
2.3.2 Signal Name Lists for the Operand Stack
2.3.2.1 Control Signals
Operand Stack:
CK0F/E
DB0S/G
DBST/G/
FL0S/N
0SPF/G/
0SPT/G/
OSTP/G
0V1, 0V1/
0V2
R0SF/
SCRP/G
SCT2/G/
T1R2/G/
T1SC/G/
T1ST/G/
T2SC/G/
UF1
UF2
ZSCR
Enable 0S overflow/underflow check
Gate the DBP— >0S according to 0S select lines
Gate DB-4SCR and DB-% 0STR (part of stack
initialization)
Inhibit flags of DBP from being gated into 0S
storage
Gate 0S-4 permuter (using 0S select) l's complement
Gate 0S -^permuter (using 0S select) true
Mask OSTR into permuter via 0SR
Output - indicates no room in 0S for cell of
current size
Output - indicates no room in 0S for 2 cells of
current size
Reset "0S full" flip-flop
Mask SCR into permuter via 0SR
Gate SCR-*T2R
Gate T1R -» T2R
Gate T1R -* SCR
Gate T1R-*0STR
Gate T2R -% SCR
Output - indicates 0S does not contain 1 cell
the size of CS
Output - indicates 0S does not contain 2 cells
the size of CS.
Output - SCR(3), SCR(U) and SCR(5) are
6/17/69
Section 2.3-2.1 - 1/2
5 Bit Adder:
ADD5/E/
KB/G
0TA/G
RSYS/
SCA/G
T2A/G
T2B/G
Enable the 5 hit adder
gate output of const, gen. to B input of
5 bit adder
gate 0STR-* A input of the 5 hit adder
reset system
gate SCR -> A input of the 5 hit adder
gate T2R-*A input of the 5 hit adder
gate T2R -* B input of the 5 hit adder
Constant Generator;
X2/
S/E
CGBi/
0SCG/E/
0SCG1/E
0SCG2/E
0SCGU/E
0SCG8/E
0SCG16/E
if "0", multiply output of constant generator
hy 2
subtract enable - if = 1, generate negative
const .
constant generator intermediate bus - hit i
enable generation of a const, from control
generate 1 on constant bus
generate 2 on constant bus
generate h on constant bus
generate 8 on constant bus
generate l6 on constant bus
5/16/69
Section
2.3-2.1 - 2/2
2.3.2.2 Internal Signals Used by the Operand Stack
Operand Stack
BROSi
BYi
E01
E02
EU1
EU2
0SF
0Si/S/
0STPi
SCRi
TIRi
T2Ri
Input bus to permuter from Base Register and
OS storage - bit i
First byte select from 0S, byte i on if it
is first byte selected decoded from T2R.
= 1 if top of 0S is in DW immediately preceding
0STR boundary.
= 1 if top of 0S is in second DW immediately
preceding 0STR boundary.
= 1 if top of 0S is in same DW as 0STR
boundary .
= 1 if top of 0S is in second DW above 0STR
boundary .
Operand Stack Full
0S select; if on indicates ith byte has been
selected (l to h signals will be on at one
time )
Operand Stack Top Register (indicates the
double "word at the boundary between the
hardware OS stack and core memory) - bit i
Stack Control Register (gives current entry
point to OS) - bit i
Temporary Register #1 = output from 5 bit
adder - bit i
Temporary Register #2 = output from T1R or
SCR - bit i
9/17/69
Section 2.3.2.2 - 1/2
5 Bit Adder:
Ai
A50V
Bi
Ki
OSTRi
SCRi
TIRi
T2Ri
"A" input to Adder (= 0STR, SCR, T2R) - bit i
if on, 5 bit adder overflowed
"B" input to Adder (= T2R, K) - bit i
output of const, generator- bit i
"Operand Stack Top" register - bit i
Stack Control Register - gives current entry point
to OS - bit i
w Rp^ster #1-5 bit adder output - bit i
Temporary Register n± j
Temporary Register #2 - bit l
Constant Generator:
CSB
CSD
CSH
CSW
Ki
Cell size is byte
Cell size is double word
Cell size is halfword
Cell size is word
Output of const, generator
- bit i
5/16/69
Section 2.3-2.2 -2/2
2.3.3 Operand Stack - PL/1 Description
// FXFC PL1
//PL1.SYSPUNCH DD SYSniJT = R
//PL1.SYSIN DD *
OPSTKIN: PROC(CKOFE, CSB, CSO, CSH, CSW,
dbosg, osf, dspfg, nsPTGt osss,
nvi, ov2 t rosf, ufi, uf?,
ZSCR) ;
DCL(CKDEE,CSB, CSD, CSH t CSW, OBOSGt
osf, ospfg, osPTGt nssst nvi, ov2,
KOSF, UFI, UF2, ZSCR) BIT(l);
DCL( BR0S(36), BY(0:31), 0S(0:31,9), nSS(0:31), OSTR(2),
SCR(5), T1R(0:5) ,T2R (5) ) BIT(l) EXTFRNAL;
OCL
(X(5),
Y(2)
) BIT < 1 ) t
( I , J,L ) FIXFD BIN,
(EDI ,
E02,
EU1 ,
EU2
) BIT ( 1 ) ;
DCL T2RVAL FIXED BIN;
DCL GSTRVAL FIXFD BIN;
/* USE BYTE DECODER*/
/* USE THE CONTENTS OF T2R TO SELFCT THE CORRESPONDING
BY( I ) SIGNAL */
OSS= »0 »B ;
B Y = » • B ;
OSS S= DBOSG IOSPTG IOSPFG;
IF -.OSSS THEN GO TO CKSCRZ;
T2RVAL=0?
DO 1=1 TO 5;
IF T2R ( I ) THEN
T2RVAL = T2RVAL + 2**( e >-I );
END;
BY( T2RVAL )=• 1 ■ B;
/* NEXT 3 BYTE SELFCT.
USE THE BY(I) SIGNALS TO SELECT AN OSS(I) SIGNAL AND UP TO
3 SUCCESSIVE OSS(I) SIGNALS */
IE T2RVAL<=28 THEN
DO I=T2RVAL TO (T2RVAL+3);
OSS( I )=• i»b;
END;
ELSE DO;
DO I=T2RVAL TO 31;
OSS( I ) = '1 , B;
END;
11/5/70
Section 2.3.3 - 1/6
On 1=0 TO (T2RVAL-28);
nss( I )= , i , b;
end;
fnr;
OSTRVAL=0;
IF nSTR(l) THFN OSTR VAL = OSTR VAL +16,
IF 0STR(2) THEN OSTR VAL=OSTR VAL +8;
' F "T^V^HBV.roilBVO!, THB. OSS < > , OSS < ! , . OSS < 2 , = ' • B;
END;
flsf no;
i =nsTRVAi_;
IF BY( 1-1 ) I BY ( 1-2) !BY( 1-3)
THEN nSS(I),0SS(I+l>,0SS(I+2)='0'B;
end;
/* LOAD BRDS FROM OS */
IF (OSPTG|OSPFG)S-DBOSG THEN DO;
on 1=0 to 31 ;
IF OSSU ) THEN DO;
/; , : L IS TH F = BYT^PHSITION OF THE BROS TO WHICH THE
SFLFCTFD BYTE OF THE OS IS GATED */
00 J=l TO 9;
BRGS(L*9+J)=nS( I tJ) ;
FND;
END;
end;
IF nSPFG THEN BRnS =^BROS;
fmd;
/♦CHECK FOR
BITS =0 */
SCR ON DOUBLE WORD BOUNDARY, I.E. LOW ORDER 3
CKSCRZ: ZSCR = -SCR(3)&-'SCR(4)&-iSCR(5);
/;;: C hfCK FOR OVERFLOW*/
1F kqSF THFN OSF ='0'B;
nn 1=1 to 5;
x ( i )=scr( i ) ;
END;
no 1=1 to 2;
y(I)=ostr(I);
END;
E01- ^X(l)fi-X(2)fi-.Y(l)fi Y(2)hX(l)£ X(2 >fi Y ( 1)6-Y( 2 >
|X(1)^X(2)G Y(1)G Y(2)l X(l)6 X ( 2 > £-Y ( 1 > &-Y < 2 > ,
11/5/70
Section 2.3.3 - 2/6
ED2 = X( 1 }£-.X(2)£-.Y( 1)£-Y<2) I X(l)£ X(2)£-«Y(1)£ Y(2)
l-XU )£-X(2)£ Y(l)£-Y(2) |-X(1)£ X(2J6 Y(l)£ Y(2)
EU1« ^X(l)£-.X(2)G-»Y(l)fi-,Y(2)|-.X(l)E X(2)£-Y<1)£ y(2)
I X(1)C-X(2)C Y(1)£-,Y(2)| X(l)£ X(2)£ Y(l)£ Y(2)
EU2 = -.X(l)£iX<2)£ Y(l)£ V(2)hX(ll( X (2 >6«-Y< 1 ) 6-,Y<2 )
I X(1)£-.X(2)£-Y(1)£ Y(2)| X(l)£ X(2)£ Y(l)£-Y{2)
nvi= OSF |Eni£CSD£(X(3) |X(4) |X(5) )
|FD1£CSW£X(3)£(X(4) |X(5) )
lEni£CSH£X(3)£ X(4)£ X(5) ;
0V2= nvi |E02£CSD£(X(3) |X(4) |Xt5) )
|E01£CSD£-.X(3)£-.X( A)£-.X (5 )
|E01£CSW£(X(3) I X ( A ) | X ( 5 ) )
|E01£CSH£X(3)£(X(4) | X ( 5 ) )
|E01£CSB£X(3)£X(4)£X(5) ;
UF1= FIJ1£-.DSF£CSD
I EUl£-.nSF£CSW£-.X(3)
I FI)1£-.0SF£CSH£-.X( 3) £-.X(4)
I EUl£-.nSF£CSB£-.X(3)£-.X(A)£-.X (5 ) ;
UF2= IJF1
I EU2£CS0
I EW1£-.0SF£CSW
I EUl£--nSF£CSH£-.X (3)
I FUl£-.nSF£CSB£-»X(3 )£-X(4) ;
IF CKOFF THEM
IF OV2 THEN
IF OSTR( 1 )=T1R( 1 ) THEN
IF DSTR(2)=T1R(2) THEN DO;
nsF=«i«B;
nvi=« 1«B;
END;
END DPSTKIN;
n /5/TO Section 2.3.3 -3/6
A ODER 5
PRQC (
OCL (
DCL
OCL
OCL
IF
IF
/*
A,B
A50V T
RSYSt
TISTGt
A50V,
RSYSt
T1STG,
ADD5E,
SCAGt
T2AG,
AOD5E t
SCAG,
T2AG,
IF
(HSTR(2), (K,SCR,T2R)(5)t
( A , B ) ( : 5 ) R I T ( 1 ) ;
I FIXED bin;
T2SCG THEN DO 1=1 TO 5;
SCR( I )=T2R( I ) ;
fnd;
SCT2G THEN DO 1=1 TO 5;
T2R( I ) = SCR( I ) ;
END;
LOAD A AND B INPUTS */
= «o ' b;
IF OTAG THEN BEGIN;
/* GATE HSTR TO A */
mi )=nsTR( l ) ;
A(2 )=GSTR(2) ;
A ( 3 ) , A ( 4 ) , A ( 5 ) = ' ' B ;
end;
SCAG THFN DO I = 1 TO 5 ;
a( i ) = scr( i ) ;
END;
C5INJ,
SCT2Gt
T2BG,
C5INJ*
SCT2G»
T2BG,
T1R(0:5> )
KBG, OTAG,
T1R2G, T1SCG.
T2SCG) ;
KBGt OTAG,
T1R2G, T1SCG,
T2SCG) BIT(l);
BIT(l) external;
1F J2AG THFN DO 1=1 TO 5;
A( I )=T2R( I ) ;
ENO;
IF T2BG THFN 00 1=1 TO 5;
B( I )=T2R( 1 ) ?
ENO;
IE KBG THFN 00 1=1 TO 5;
b( I )=k ( I ) ;
ENO;
/.; PERFORM ADDITION */
IF AODSE THEN
f ai I AonssoB ;
/; . C HECK FOR OVERFLOW */
AS0V = AD0SFM^C5INjr,TlR(0)|CSINJ^TlR(0));
J* CHECK FOR TRANSFERS INVOLVING T1R,T2R,SCR,
OR THE OSTR */
[F T1STG THEN DO 1=1 TO 2;
USTR ( I )=T1R( I ) ?
end;
I F T1SCG THEM DO I =1 TO 5 5
scr( i ) = tir( i ) ;
end;
IF T1R2G THEN DO 1=1 TO 5;
T2R( I )=T1R( I ) ;
11/5/70
Section 2,3.3 - k/6
FND:
/* RESFT SYSTEM */
IF RSYS THEN
A50V=«0«B;
ADD5SUB: PROC;
DCL (I, ONE) FIXFD BIN, C BIT (6), X FIXED BIN(6,0>;
ONE=l ;
x=o;
no I = o to 5;
IF A(I) THEN X=X+2**( 5-1 ) ;
IF B(I) THEN X=X+2**<5-I ) ;
END;
IF C5INJ THEN X=X+1;
C = BIT( X,M;
DO I =1 TO 6;
T1R( 1-1 )=SUBSTR(C, I ,OME) ;
END;
END ADD5SUB;
END ADDER 5;
/*
11/5/70 Section 2.3.3 - 5/6
CHNSGEN: PRDC (C5INJ,
0SCG16E,
DSCGE,
DCL(C5INJ»CSB,
0SCG1E,
SEt
CSB»
0SCG1E,
SE,
CSD,
nSCG2F T
CSD»
OSCG2E,
X2) ;
CSHt
nSCG^Et
CSH,
OSCG^E,
csw,
DSCGRE,
CSWt
OSCGBFt
0SCG16E,
nscGF*
X 2 ) B I T ( 1 ) ;
L K (5) BIT(1) EXTERNAL*,
^"^AN^^e'dEEINE^ CONVENIENCE TO S.MPLIP, THE
FOUATinNS. */
ocl
CGB(5) BIT (l)t (T1,T2) BIT (1);
T2=-OSCGE£X2;
Tl=-X2?
CGBd )=T2fXSD|nSCG16E;
CGB ( 2 > =T1 £CSD I T2RCSW I DSCG8E ?
C GB ( 3 ) =T 1 PXSW I T 2 RC SH | 0SCG4E ;
C( ; H ( 4 ) =T 1 T.CSH I T2 &C SB | OSCG2E ;
rirxsB inscGlE; rrR'S TO THE K ( I ) • s
MUMRER IS TO BE NEGATIVE, GATE THE ( » S ^ PjB(I) J
IRECTLY, HTHFR^ISE* FOR POSITIVE niimh..
CGR(5)=T1£CSB lOSCGlF;
/ * I F M
1 )
j I ^sf THEN DO*,
k=cgb;
csinj^'o 1 b;
else on;
k=-CGb;
C5INJ=' i'b;
ENo;
!-MF) r iwsgfn;
/*
11/5/70
Section 2.3.3 - 6/6
2.3.^ Operand Stack - Logical Description
2.3.1+.1 Operand Stack Storage
The storage used for the fast storage of the Operand Stack
consists of k storage blocks of the type described in Section 2.2. Each
block provides 8 bytes of 9 bit storage for a total of 32 bytes of fast
storage.
The actual byte positions are arranged so that the first block
contains bytes 0, U, 8, ..., 28, the second block contains 1, 5, 9, ... 29,
and so on.
The input to the OS storage consists of 32 select lines, OSi/S,
the Distribution Bus (DBP) from the Permuter and k data control lines:
DBOS/G, FLOS/N, OSPT/G and OSPF/G. Figure 2.3.U is an exerpt from the
01-U drawing in the TP Logic Book. It shows a diagram of the fourth
storage block in the OS fast storage and indicates the various inputs and
outputs to the block.
The DBOS/G control signal is used to gate the DB through the In-
put Gate Drivers into the four storage blocks. Since there is only one
type of storage in these four blocks (as opposed to, s a y, the PR storage
which also contains the Spare Buffer Register ), all of the read/write
enable signals to the Byte Select Drivers (BSD's) can be activated by the
same signal. Thus the DBOS/G signal is fed to 9 inverters. One of these
drives the four IGD's. The other 8 each drive four read/write enable inputs
to the BSD's. Thus all 32 read/write enable lines are activated more or
less in unison with the IGD gate signals. Only the "Gate Both In" option
is used on the IGD's.
The FLOS/N signal is used by the OS storage blocks to inhibit
writing in the flag positions. FLOS/N drives an inverter which then
feeds the In Data Inhibit signal to the Input Gates on the flag bit
11/5/70 Section 2.3-U - 1/3
TO THE REMAINING OS
STORAGE BLOCKS
04_3 0BP28
J
04-3 DBP36
C
16-5
FLOS/N
OSPT/G
OSPF/G
0S3/S
0S7/S
OSII/S
0SI5/S
0SI9/S
0S23/S
0S27/S
16-3 0S3I/S
C DBOS/G
1-5
x44 203-00
X44
X44
X44
X44
X43
BSGI6
BR0S28 04-3
I 1
BR0S36 04-3
5/2/69
FIGURE 2.3.4
Section 2.3-U - 2 / 3
position of every byte in the OS fast storage (see Figure 2.2.1/2).
The OSPT/G and OSPF/G control signals are connected to the
"Gate False Out" and "Gate True Out" inputs of the Output Gate Drivers,
respectively (see Figure 2.2.1/3). This seemingly reversal of the gate
signals is brought about because it is necessary to dot-or the outputs
of the Operand Stack Storage Blocks and thus the inverted values must
be sent out. The output from the OS fast storage is the Base Register-
Operand Stack Bus (BROS). When either the OSPT/G or OSPF/G control
lines are set to "0", the true or l's complement representation of the
selected bytes in the OS fast storage are dot-ored to the BROS. Note
that if both OSPT/G and OSPF/G are set to logical "0" at the same time,
logical "0" would result in all positions.
Each block (representing 8 interleaved bytes) is gated to a
separate byte of the BROS. When one of the output control lines is
activated the selected bytes are gated to the bus. As explained in
Section 2.3.1.3., no more than four bytes are ever gated out at one
time from the OS storage. Since the blocks are permanently connected
to the BROS, the OS bytes always come out in the same position on the
BROS regardless of where the cell boundaries happen to be. Therefore,
the Permuter is used to justify the boundaries of the BROS bytes when
the information is transferred to the DB.
11/5/70 Section 2.3.U - 3/3
2.3.U.2 Overflow-Underflow- Logical Description
As explained in Section 2.3.1.1+ the OS overflow/underflow
logic can be broken up, conceptually, into several sections. First
there are the equations for the position of the SCR relative to the
OSTR, i.e. E01, E02 , EU1, and EU2. Secondly, there are the equations
for the overflow and underflow signals themselves, i.e. 0V1 , 0V2, UF1
and UF2. Finally there is the logic involved in setting and using the
OS Full flip-flop, OSF. All three sections of logic are shown in Drawing
16-6 of the TP Logic Book and will now be explained.
The equations for E01 , E02 , EU1 and EU2 as given previously in
Section 2.3.1.*+ are fairly straightforward to implement. The diode matrix
board, 236-01, which is shown in Figure 2. 3- h. 2/1 as a logical circuit and
in Figure 2. 3. h. 2/2 as a schematic, is used to calculate the equations.
This board is simply a four-bit decoder which decodes all possible combina-
tions of the two high order SCR and OSTR bits. The inputs to the diode
matrix are driven by 228-07 circuits. The 16 individual outputs of the
diode matrix are sent to 228-05 circuits, the outputs of which are dot-or'ed
to generate the four signals according to the equations in Section 2.3.1.4.
These signals are inverted by k 228-07 circuits for use in the 0V1, 0V2,
UF1 and UF2 equations.
The equations for 0V1 , 0V2, UF1, and UF2 are considerably more
difficult to implement. As shown in Section 2.3.1.1+ they are as follows:
0V1 = 0SF v E01-CSD-(X v X, v X )
*J T" J
v E01-CSW-X 3 - (X^ v X ) v E01-CSH-X • X^ X
V2 = 0V1 v E02-CSD-(X v X, v X )
v E0LCSD v E01-CSW-(X v X.VX )
v E01-CSH-X 3 -(X 1+ v X 5 ) v E01.CSB-X-X 1+ -X
8/12/69
Section 2.3.4.2 - 1/j
r
otnl t
3 f .
~"\ A i
SCR2 r
("VCTDI
7 .
0STR2 |
T
15 •
1 1
<>■
N B '
0STR2 1
9
1
I
II
^\
\ C i
OSTRI
1
I'
— 1
^ E '
_J ;
■
l 5
<
1
1
-i
^\ fi
_>^-
SCR2
l <
1
2
1
1
A H
►— 1
i
1
1
^ jj
_J :
i
Lh
A L 1
—
_>^-
SCRI
;
>
"\ Pi
_J !
I
►— —
> \ r 1
— ^T
» —
*\ Ti
jT
y i
i>—
"\ u 1
Pr
y ,
n—
""N V|
'
ii—
*\ Ul 1
1 w
J '
y ,
ii —
"\ Yi
- It
y i
i V—
A z 1
>Ht~
y
j
Figure 2. 3. U. 2/1 - SCR-0STR Decoder for
E01, E02, EU1, EU2 Signals Logic Representation
9/10/69
Section 2.3.U.2 - 2/7
IV
' J
:i i :
)[
go
>
3
1
IJL 11.
i^
1
M
w
CD
>
n ,
to
D
-\
: i :
[
5;
h-
..
M
ro
.. J '.
— •-
\
OJ
Q_
. L
— *
—
Z
O
5
en
_J
• ■
""""? T"~ 1
11 11 1
[
CD
"3
\[ ll 11
i^
X
— •— — • ,
ii y. ]
CD
Ll.
-•
— •— — • 1
m
LlJ
. .
— •—
W 1
«-
Q '
..
El
ro
OQ
1 -
— — •
CM
*
I "
I JL
—
Q
h
C
;o - cm 3
^ cq. -. - a
io r*- (j) k5" u
d co
o
CM
Oi
CJ
OJ
CM
-2i
J 2
t— i
_
CV)
CVJ
oc
1— 1
a:
tr
QC
LL
q:
h-
H
o
o
o
o
co
co
C7)
CO
U)
en
o
o
CM
a:
CV) c/>
o o
Figure 2. 3.^.2/2 -
SCR-0STR Decoder for E01, E02, EU1, EU2 Signals
Diode Matrix Representation
9/10/69
Section 2.3.U.2 - 3/7
UF1 = EUl> OSF- CSD v EU1- OSF- CSW- X 3
v EUl'OSF-CSH-X 3 - X^ v EULOSF-CSB-X^ X^^
UF2 = UF1 _
v EU1-OSF-CSW v EU1-OSF.CSH X 3
v EUl-OSF-CSB-X 3 « I h
where, as before, X. represents SCRi.
When implemented by the logic in Drawing l6-6, however, these
equations look considerably different. For 0V1 we have:
0V1 = OSF v (E01-CSD'(X 3 v X H v X^)
v E01-CSW-(X • U k v X 5 ))
v E01-CSH-(X 3 « X u -X 5 ) )
Note that 0V1 consists essentially of two terms which are inputs to a
21 U-03 driver going to the control logic. The first term comes directly
fr om the output of the OSF flip-flop. The second term is produced by
dot-oring 3 NAND circuits together. Each of these NAND's has as inputs
the E01 signal, a cell si.e signal, and some function of the 3 low-order
bits of the SCR.
The equation for 0Y2 as implemented by the logic can be written
as follows :
0V2 = OSF v (E01-CSD-(X 3 v X u v X 5 )
V E01-CSW-CX • U h v X 5 ))
VE01- CSH-(X 3 ' X h - X 5 ) )
v (E02-CSD-(X 3 v X^ v X ? )
v E01 • CSD
v E01-CSW-(X 3 v X^ v X 5 )
v E01-CSH-(X - (X u v X 5 ))
v E01-CSB-(X 3 « X u - X 5 ) )
Section 2.3.^-2 -V7
Q /1 -3 /£n
This equation consists of three terms all of which are inputs to a 21U-03
driver going to the control logic. The first two terms are identical to
the ones used for 0V1 . These replace the 0V1 term in the original 0V2
equation and eliminate the need to invert the 0V1 output and use it as an
input to 0V2, thus saving 2 collector delays. The third term has the same
format as the last term in 0V1 . It consists of 5 NAM) circuits dot-or'ed
together. Each NAND circuit has as inputs either E01 or E02, a cell size
signal, and a function of the low-order 3 bits of the SCR. Note that
three of these SCR terms are functions which were also used in 0V1,
except that in that case they were associated with different cell size
signals.
The logic implementation for UF1 and UF2 are somewhat confusing.
This is due, in part because they are partially implemented on the l6-6
drawing using DTL logic and partially implemented in the main control
logic using IC's. Because of several changes which were necessary after
the initial wiring of this logic, the structure is somewhat haphazard.
The actual implementation equations for UF1 and UF2 are as follows:
UF1 = (OSF • (EU1-CSD
v EU1- CSW-X,
v EU1- CSH-U • X, )
v EU1-CSB-(X - X 2 - X)))
UF2 = (EU2-CSD)
v (0SF-(EU1-CSW
v EU1-CSH-X,
v EU1-CSB-X • X, ))
3 k
v (0SF.(EU1-CSD
v EU1- CSW-X.
v EU1- CSH-U -• X, )
v EU1'CSB-(X ■ X.-X )))
8/13/69
Section 2.3.U.2 - 5/7
Note that UF1 consists of one term and UF2 consists of three terms, the
last of which is identical to the term for UF1 . This is done for the same
reasons as "before with 0V2 and 0V1.
In the case of UF1 and UF2, the final signals are formed by IC
NAND circuits in the control logic section of the TP. Thus the singly
term for UF1 (which is also the last term of UF2) is given the name UF12C
and is formed by a 21^-03 circuit using two inputs. The first input is
5sF and the second is the inverted output of a dot-or connection between
four NAND circuits. Each of these four NAND's has as an input the EU1
signal, a cell size signal and some function of the 3 low-order bits of
the SCR.
In addition to the UF12C signal, the UF2 signal has two other
terms which have been given the names UF2A and UF2B. The first term, U F2A,
consists of the output of one 21U-03 NAND which forms the term EU2-CSD.
The second term also comes from a 21H-03 circuit but uses two inputs.
The first is OSF. The second is the inverted output of a dot-or connection
between h NAND circuits. Each of these NAND circuits has as an input the
EU1 signal, a cell size signal, and some function of the 3 low-order bits
of the SCR. The 2 NAND circuits which form UF1 and UF2 in the TP Control
section are shown in Figure 2. 3. ^.2/3.
The final section of logic in the OS overflow/underflow logic
is the OSF flip-flop itself. As discussed in Section 2.3-l.U, the setting
and resetting of the OSF flip-flop is determined by the Main Control Logic,
specifically the OS ENTRY and SCR MOD sequences.
The OSF flip-flop will be set to "l" whenever the CKOF/E signal
goes to "1" and at the same time the two high order bits of the SCR are
equal to the OSTR, the three low-order bits of the SCR are "0", and the EU1
signal is on. In this situation the SCR is moving to the OSTR boundary from
the "full" side of the hardware registers.
OSF is reset by Main Control using the ROSF control line.
.. ,, Section 2.3. U. 2 - 6/7
8/13/69
UFT2C
UFI
UF2A
UF2B
UF2
Figure 2. 3. U. 2/3 - UFI and UF2 IC Logic Implementation
9/10/69
Section 2.3.U.2 - 7/7
2.3.^.3 3-Bit Adder-Logical Description
The 5-Bit Adder is a full carry lookahead adder generally
used for adding or subtracting constants from various operand stack
control registers. In basic construction it is somewhat similar to
the 32-Bit Adder (Section 2.7) except, of course, it is much simpler
since it has much fewer bit positions. The two 5 bit input busses
are the A bus and the B bus. The A bus is usually loaded with one of
the Operand Stack Registers and the B bus is usually loaded with a
+ constant from the Constant Generator. The results of the addition
are stored in temporary Register TlR.
At each input bit position of the 5-bit Adder there are k
NAND gates. These NAND's are all activated by the ADD5/E signal and
produce for each bit position, i, a generate signal, GENi , and a transfer
signal, TRANi.
When a generate signal is on, it indicates that for the
particular bit position, i, a carry will be produced out of it independently
of whether or not a carry was made into the position. This can be
expressed as a function of the two input data bits for that position
by the equation:
GENi = Ai • Bi
When a transfer signal is on, it indicates that for the
particular position, i, a carry will be produced out of it only if a
carry is made into it. This can be expressed as a function of the two
input data bits for that position by the equation:
TRANi = Ai- m" v Ai 'Bi
Note that if a GENi signal is on for a given bit position the
TRANi signal for that bit position cannot be on and if the TRANi signal
is on, the GENi signal cannot be on. However, it is possible for both
signals to be off at the same time.
As can be seen in Drawing 16-3 of the TP Logic Book, these
two signals are actually each generated by "dot-oring" 2 NAND circuits
together. Figure 2. 3. U. 3/1 shows the GENi and TRANi logic for one bit
11/5/70 Section 2. 3.U. 3 - 1/5
position of the 5-bit Adder. The so called "dot-ors" must really he
considered as MD circuits in the sense that if either input xs
forced to zero, the output will_be forced to zero. Thus we have:
GENi = (Ai) • (Bi)
= Ai * Bi
TRAM = (Ai • Bi) • (AT • "Bi )
= (Ai • Bi) v 55 •"51)
= (Ai « Bi) v (Ai • Bi)
Once these two signals have been generated, they can be used
to calculate the carrys into every bit position of the adder by using
the following equations:
C5DI5 = C5MJ
C5Ilrt = G5 v 15 ' C51HJ
C5IN3 = Qlt v TU • G5 v TU • T5 • C5MJ
C5IN2 = G3 r T3 • Oh v 13 • A • G5 t T3 • TU • T 5 ■ C5IHJ
C5IH1 = G2 v T2 • G3 v T2 • T3 • Gl, v T2 • T3 • Tl, • G5
= Y T2 • T3 ' TU • T5 - C5MJ
C50V = Gl Y Tl • G2 T Tl • T2 • G3 v Tl • T2 • T3 • GU Y
= V Tl . T2 ■ T3 • T^ • G 5 Y Tl • 12 • T3 • TU • T5 • C 5 INJ
where Gi and Ti represent GESi and TRAHi respectiYely, C5IM is the
input carry into hit position i, C5H.J is an injected carry into the
low order hit (used in subtraction to conYert a Vs complement constant
to 2-s complement), and the adder hit positions are numhered heginnmg
with 1 at the highest order position.
The last k equations are implemented using the 236-00 Loohahead
Carry Generator diode matrix hoard shown in Figure 2.3.U.3/2. The two
initial ones are implemented using MB circuits. The outputs are sent
«* +h P S-bit Adder and the overflow indicator,
to the 5 output positions of the 5-bit Aaaer
The Adder outputs are determined by the equation:
Section 2.3.U.3 - 2/5
11/5/70
Ai
Bi
Ai
Bi
Ai
Bi
ADD5/E
TRAN
— GEN
Figure 2. 3. h. 3/1
Generation of GENi and TRANi in the 5-Bit Adder
10/22/69
Section 2.3.^.3 - 3/5
f
„ -*■ 1! S
>. — !! !! t
d
^^ II 1 "
M i 1 1 *
3 !! !! !! y y-
U
-*j[i I jl I jl ;
2- 1
*■*■][! Ill
1
-H 1 — T T " 2
z ][ )[ j !1
-rtJ -T- ~ 0>
2 j ! 1 j :
>.
_H« 00
_j !! !!
>
y y y ±
10S
o
— W 1 1 1 lO
>
.-11 1
8^ 1 H
ro
1
*~II JL
s.
«~ : l! l_ _L
z
m m 't
z z z
«■ ro ro oj w = ^
z z z z z § uj
LU < UJ < W
^ I— i- r- H
Figure 2. 3. U.3/2
5-Bit Adder Lookahead Carry Generator - Diode Matrix - 236-00
10/22/69 Section 2 - 3 - k - 3 ~ k/5
TIRi = TRANi ■ C5INi v TRANi ■ C5INi
The overflow bit is determined by:
A50V = C5INJ C50V v C5INJ C50V
This merely means that if an addition sum (C5INJ = 0) is greater than
31 or if a subtraction difference (C5INJ = l) is less than 0, the
A50V flip-flop will be set. This does not necessarily indicate a fatal
error. As is explained in Sections 2.3.1.U and k.^.l.k, this condition
is used to indicate stack wraparound.
Note that in the logic in Drawing 16-3 of the TP Logic Book
the inputs to the temporary register T1R and the 5-bit Adder Overflow
Flip-Flop, A50V, are enabled by the ADD51E signal.
10 /9/69 Section 2.3.U.3 - 5/5
2.4 The Pointer Registers
There are 15 Pointer Registers (PR's) in the Taxicrinic
Processor. These registers are in some ways similar to the index
registers of more conventional machines, although they are much
more powerful. As with conventional index registers, the PR's may
be incremented, modified and tested. Thus they can be used in any
of the ways that an index register might be used, except that these
operations usually appear quite different in the TP because of the
unusual machine organization.
Primarily, however, the PR's are a means of addressing
storage. All storage accessing is performed "through" the PR's, by
indicating the name of the PR which contains the address desired instead
of requesting the actual address (the contents of the PR can be modified
as noted above). The indicated PR will contain a segment name and an
address in that segment relative to the segment base address. By
loading the PR's beforehand, the programmer can refer to any address in
memory by using only a 4-bit tag to indicate the name of the PR to be
chosen. (For a more detailed description of memory accessing, see
Section 4.1) .
In order to be able to choose a particular PR, each PR has
associated with it a 4-bit Name Register (NR). Each NR holds the
current "name" assigned to its associated PR. These names are unique
but not permanent, i.e., the name of the PR (which is a number for to
Ik) can be changed, but only one PR has any given name at any given time.
The process whereby the PR names are changed is called "name permutation"
and is described in detail in Section 4.2.4.3.
3/10/69 Section 2.4 - 1/2
Since the PR's axe the onlv_ means hy which memory may he
accessed, the address of a variahle must he assigned to its particular
PR prior to its first call. Provisions are provided in the instruc-
tion set to initialize all designated PR's either one-at-a-time or hy
multiple assignment (using an imprimitive instruction, see Section U.2.U).
Section 2.U - 2/2
3/10/69
2.U.1 Pointer Register Formats
There are three formats for the pointer registers. The
"normal" format is used in connection with the pointer stacks as
shown in Figure 2.U.1.1 of Section 2.U.I.I.
The "list processing format" is used with the list processing
instructions and does not utilize pointer stacking. Instead the pointer
is divided into two half-word link fields which are identical to the
contents in the cell currently being "looked at" by the pointer register.
The third format for pointer registers is the "available space"
format. This format is used whenever a PR is utilized to control the
assignment of list processing cells. In particular PRlU , which controls
the storage of the pointer registers in the pointer stacks, is in this
format .
3/10/69 Section 2.1+.1 - l/l
2.4.1.1 Pointer Stack Format
Reflecting the nested nature of operand calls, pointer
stacks are provided into which the current value of a PR can be
pushed for safekeeping. When this value is again required, the
stack can be popped and the value reloaded into the PR. The pointer
stacks are maintained in main storage under the control of PRlU , which
is in the "available space" format (see Section 2.4.1.3).
The pointer stacks themselves are ordinary unidirectional
linked lists. The pointer stack cells take up two words of storage,
but only the first 6 bytes are currently being used. As shown in
Figure 2.4.1.1, the first two bytes are used to hold the 16 bit address
of the previous entry in the stack, while the next two bytes contain
the relative address within the segment. The final 2 bytes contain
the segment name.
□ D
□ D
□ □
LINK
VALUE
NAME
Figure 2.4.1.1 Pointer Stack Cell
The physical Pointer Registers in the TP actually consist of
2 registers, a 4 byte register containing the link and value fields and
a 2 byte register containing the name field. This configuration of the
pointer register is referred to as the "normal" or "pointer stack" format
It should be noted that all flag bits are always pushed into the pointer
stacks along with the link, value and name fields.
6/17/69
Section 2.4.1.1 - l/l
2.4.1.2 List Processing Format
The List Processing format for the pointer registers
differs from the normal PR format. As shown in Figure 2.4.1.2 it
consists of a left and right link instead of a link and value field.
The name field remains the same and indicates the name of the segment
being used as the base for the two links. There are no stacks con-
nected with PR's in this format.
□
a
□
□
a
LEFT LINK
RIGHT LINK NAME
Figure 2.4.1.2 List Processing Format
In the list processing format, a PR can be considered to be
a "bug" which moves along a list structure in core. At any given
time the PR contains an image of the first four bytes of the cell cur-
rently being "looked at". These first four bytes will usually be inter-
preted as two separate pointers. It should be noted that the PR does
not contain a pointer to the cell being looked at. It only contains the
contents of the first 4 bytes of that cell. In the conventional method
of using the Illiac III list processing instructions (specifically SL
and SR), the address of the current cell will be available at the top
of the OS.
In use the PR can be used to sequence through a list structure.
At any given point, cells may be added or deleted to the "right" or "left"
of the current cell. Links in the structure may also be changed by using
the ASSIGN statement to load the contents of some PR into a cell in the
structure. Instructions such as POP and PUSH can also be used to load
and unload links from the OS.
3/10/69
Section 2.4.1.2 - l/l
2.^.1.3 Available Space Format
The Available Space format la used whenever a PR is utilized
to control the assignment of list processing cells. nll U , which controls
11 r T of rointer resisters ln the polnter stackE - is *^ * «*.
iormat. As snown in Figure ? k i -z/i +i
qnp , «, g 2.4.1.3/1 the pointer register in the available
space format consists of a link f-i-i/i n ^
±lnk fleld and a co ^t field. The name field
L 6 rin^r 1 : T interPretati °" - fOT «» ~ -d list processing formats,
and lndl cates the n m e of the segnent being used as the base for the li„ k
and count relative addresses.
r
LINK
D 9 D D n
COUNT
NAME
Figure 2.4.1.3/1 Available Space Format
1116 baSlC "^ beMnd tMs f °™ at 0.
But what happens if the free list is empty? To solve this
problem the last cell in the free list (# 7 in the illustration) has its
link pointing to the lowest addressed cell in consecutive storage. The
second two bytes of the available space PR (called the COUNT) also con-
tains this address, so that whenever the LINK equals the COUNT, the
free list has been exhausted. When this happens and a request for
another cell is received, the first cell of consecutive storage is used
and both the count and link are incremented by the number of bytes in the
cell. (However, if the assigned cell crosses or exceeds the segment
boundary, an Available Space Empty interrupt is generated. In this
latter case the count and link are not incremented, and therefore reflect
the arrangement of the available space at the time of the illicit memory
access . )
3/10/69
Section 2.U.1.3 - 3/k
As an example, in Figure 2. U. 1.3/2 if the free list became
exhausted, the LINK and COUNT would both be equal to the address of
cell 10. If a request for a cell were then made, cell 10 would be
given out and both LINK and COUNT would be incremented by the value
stored in the first half word of the zeroth cell. LINK and COUNT would
then point to the address of cell 11.
The count receives its name from the fact that it is the
number of cells (times the cell size) in the list storage area. When
the count equals the cell size, all storage is consecutive. (The zeroth
cell is dedicated to the cell size.) When the high order byte of the
count equals the address bounds of the segment all storage in the segment
is of the list type.
One precaution should he noted. Since a PR in available space
m0 de does not have a pointer stack of its own, it cannot he pushed into
one as a result a programmer must he extremely careful to avoid pushing
an available space format PB or drastic confusion may result. In general
there is nothing in the hardware to prevent this. However in the case of
PR#lH, an interrupt will be initiated.
Section 2.U.1.3 - h/k
U/18/69
2.U.2 Pointer Registers - Functional Description
2.!+. 2.1 Pointer Register Storage
The Pointer Register contents, consisting of a link field, a
value field, and a segment name field (or link, count and segment name
fields in the available space format), are stored in two separate areas
of the TP mainframe. This is mainly because the use of segment names was
not developed until after the rest of the PR logic had been designed.
The first two PR fields are stored in storage blocks whose design
is explained in Section 2.2. Each PR has k storage bytes consisting of 8
data bits and 1 flag bit each. This PR storage is divided into two groups,
PRO through PR7 and PR8 through PRlU. Also contained in the second group
is the Spare Buffer Register (SBR), which is physically exactly like the
first k bytes of a PR. It is not treated as a PR, however. Instead it is
intended to be an additional storage register to be used by the TP control
unit. It is not accessible to the programmer.
As shown in diagrams 01-0, 01-2 and 01-3 of the TP Logic Book,
each group of PR storage is made up of k of the 9 bit/byte storage blocks
described in Section 2.2. Each of these blocks represents 1 byte position
of a PR. Since each 20^-00 circuit board contains 8 fast register flip-flops,
this allows 8 registers in each group.
The data input to the PR storage blocks consists of the Distribu-
tion Bus from the Permuter (DBP). The selection lines from the Pointer
Register Selection Logic operate the byte select lines to the byte select
drivers (BSD) in the blocks. For writing data into the PR's only the
"Gate Both In" option is used by the Input Gate Drivers (see Section 2.2.1).
This signal is controlled by DBPR/G and gates the Distribution Bus into the
PR storage flip-flops selected by the PR Selection Logic. The DBPR/G signal
is common to all 15 Pointer Registers.
5/15/69 Section 2.4.2.1 - 1/5
The other control inputs to the PR storage blocks are WRPRL/E ,
the write PR link field enable signal, and WRPRV/E , the write value field
enable signal. These signals are inverted and then become the Read/Write
input to the BSD's as described in Section 2.2.1. The WRPRL/E and WRPRV/E
are common to all 15 Pointer Registers in the two storage groups.
The data outputs of the two PR storage groups are dot or'ed
together to give a single output line in each position, called PRBAi .
This presents a minor problem since if both output gates in a given posi-
tion are activated with a read/write input of "0" , the group which does
not have a select signal activated will have as its output all zeros and
this will "erase" the output of the group desired. Therefore a means to
gate out only that group which has a word selected in it must be provided.
This means is provided by the PRTG/S and PR8G/S signals. They
arise in the PR Selection Logic. If one of the PR's to 7 is selected,
the PRTG/S is "1", enabling the proper group to be gated out. PR8G/S is
always the inverse of PR7G/S, so if one group is not in a "selected" state,
the other is. This selection need not be made for input gating since the
PR actually written into is controlled by the PR select input.
Only the "Gate False Out" signal is used in the PR storage blocks,
since an inverted signal is desired at the output. The method of choosing
the select lines is explained in Section 2.14.2.3.
The final PR field, the segment name, is stored in a special
block of IC storage. This storage block consists of l6 registers, each
16 bits long and is made up of SN?U75N quadruple bistable latch chips.
The storage itself is organized into subgroups of 8 registers x 2 bits,
as shown in Figure 2. k. 2.1/1.
The data input lines come from the IC driver extension of the
DB. The output of the segment name storage is the PR Segment Name Bus,
PRSNB, which leads to the association logic and can also be gated to the
PRB input to the permuter.
11/12/70 Sectl0n 2 - U - 2 - 1 " 2/5
DATA OUT A
DATA OUT B
A
Mill
o
m
cr.
r
DATA
IN A
DATA
IN B
FOUR ITERATIONS
PER BLOCK
AAAAi
5o"
o
o
on
"1
o
o
_l
o
ZT
o
_l
o
o
c
c
_
IT
N
<*
N
Z
,9
WRITE
SELECT
READ
SELECT
Figure 2.U.2.1/1-PR Segment Name Storage Registers
(Block Includes 8 Registers x 2 Bits
and Read/Write Logic)
Section 2.4.2.1 - 3/5
To select the desired register, the logic shown in Figure
2. k. 2.1/2 is used. When the PR Selection Logic determines the PR which
which is to he accessed (see Section 2.U.2.3), the proper selection line,
PRiTs, will be activated and can he gated into the PR Segment Name Register
Selector Logic by activating SNsTg. Then in order to read out the selected
Segment Name, SNRD/E must be set to 0. As shown in Figures 2. k. 2.1/1 and
2. U. 2. 1/2 this will activate one of the PSNRi/S lines which in turn will
cause the selected PR Segment Name Register to appear on the PRSNB. A
write can be performed by activating SNWT/E.
Note that tie selector is not attached to PR Segment Name Register
#15. Since there is no PR#15, this segment name register is used as temporary
storage by the Memory Sequence. It has independent read and write control
lines so that it can be operated without affecting the selector logic.
. ., Section 2.U.2.1 - U/5
5/12/69
PSNRO/Sl
PSNRO/S2
PSNRW15
Figure 2.4.2.1/2 - PR Segment Name Register Selector Logic
Section 2.4.2.1 - 5/5
2,1*. 2. 2 Pointer Register Control Registers
In using the Pointer Registers several additional control
registers are necessary: 15 Name Registers (NR's), 15 Shadow Name
Registers (SNR's), 15 one-bit Name Flag Registers (NFR's), the Tag
Register (TGR), and two counters (CCT and ACT). They are arranged as
shown in Figure 2.H.2.2 along with the Name Bus (NB) and the Shadow
Name Bus (SNB). All the registers (except for the NFR's), counters and
buses are h bits in length
The SNR's, NFR's, CCT, ACT and the SNB are used in the process
of name permutation whose explanation is deferred until Section U.2.4.3.
As mentioned previously, the Name Registers are used to hold the
current name for each PR. The PR's themselves each have a fixed, "wired-in"
name (0 through Ik) corresponding to the PR's position in the hardware.
Each physical position however, can be assigned, via the name registers,
any distinct name from to Ik by loading this name into the appropriate NR.
The Tag Register is used to store the tag portion of an operand
phrase. This gives the name which is to be searched for in the Name Registers,
The Name Bus is in reality the input to the compare circuit. The
compare circuit compares whatever is on the Name Bus with the contents of
the Name Registers and produces an output on one of 15 output lines corres-
ponding to the Name Register which matches the input.
5/19/69 Section 2.H.2.2 - 1/2
TAG
REGISTER
(TGR)
4 bits
•- )SNB-
15
SHADOW
NAME
REGISTERS
(SNR)
15
NAME
REGISTERS
(NR)
13
n
13 •
NAME REGISTER
VS
NAME BUS
COMPARE LOGIC
13
FIGURE 2.4.2. 2 POINTER REGISTER CONTROL REGISTERS
5/16/69
Section 2.4.2.2 - 2/2
2.1*. 2. 3 Pointer Register Selection Process
When a Pointer Register must be accessed, its name is to be
found in the tag portion of the operand phrase currently being decoded.
Therefore the first step in the PR selection process is to gate the tag
portion of the IR into the TGR where it is stored for possible later use.
The TGR is subsequently gated onto the Name Bus which is con-
nected to the NR/NB Compare Logic. This logic has as inputs the Name Bus
and the 15 NR's, and has as outputs, 15 select lines. The NB is com-
pared with the NR's and the matching register activates an output on the
select line corresponding to the physical PR with that name. For example,
suppose the operand wants the PR currently named #3. This value is gated
through to the NB and compared with all of the NR's. The NR with 3 as its
contents then indicates which PR is #3 at the present time by activating
the output line corresponding to that PR. If a match is obtained in none
or more than one NR, a malfunction has occurred since the names in the NR's
are supposed to be unique.
After the selected output line from the NR/NB Compare Logic is
activated it is then used to activate the proper PR select line which is
sent to the storage blocks and the segment name register selector and also
to indicate which of the two storage groups (0 through 7 or 8 through lU)PR is
in. This latter indication is of no importance when data is to be written into
the storage group, since the writing process depends only on the word selected
to be written into. On a read out, however, the output gates of the byte
storage group which does not contain the selected word must be inhibited;
otherwise, all zeros are output from this group. These zeros will in turn
override any data output from the other group containing the selected cell.
5//19 ^ 69 Section 2.4.2.3 - 1/2
The logic here senses for a select signal to one of the
(physical) PR's 8 through lU and enables the output select gate from
that group. If one of PR's 8-lU is not selected, it is assumed that
one of through 7 is selected and that group's output gate is enabled.
The group selection signals are PR7G/S and PR8G/S which select registers
0-7 and 8-lU, respectively. In the rest, or inhibit, state, the PR8G/S
rests '1', or in the select mode. This corresponds to the group containing
the SBR. The select signal, when up, enables the output gates of the PR
group selected. If no word internal to the 9 bit /byte storage group is
also selected, the data output lines from the storage group will all
rest '0'.
When the Spare Buffer Register (SBR) is to be used, the output
selection signals from the NR/NB Compare Logic are inhibited so that no PR
select lines are chosen. Therefore PR8G/S is on and PR7G/S is off. This
causes the group containing the SBR to be chosen. The select signal for
the SBR is given by the TP Control.
. ,. Section 2.U.2.3 - 2/2
5/19/69
2.U.2.U Tag Setting and Sensing
Sense logic driven by the TGR is used to sense the contents of the
TGR for PR#13. If PR#13 is selected (PR#13 corresponds to the Operand
Stack Pointer), it may be necessary to clear out or initialize the hard-
ware portion of the OS. This signal, N13S is routed back to the control
logic;when N13S goes to *1*, it indicates that PR#13 is being (or is to
be) selected.
When the TGR, or either of the counters for that matter, is not
selected to be gated onto the NB, the NB contains the number (name) 0000
(zero). This name corresponds to the instruction pointer register. Whenever
it becomes necessary to access the instruction pointer, it is only necessary
to inhibit the TGR to NB gating in order to select the PR named zero. Two
other control signals NPR13/S and NPRlU/S are used to force the names '1101'
(PR#13) and '1110* (PR#lU) onto the NB. Again in these cases, the TGR to
NB gate is inhibited when the names are forced on to the NB. This allows
PR#13, the OS pointer, or PR#lU, the Available Space Pointer, to be selected
without explicitly gating it into the TGR.
5/19/69 Section 2.U.2.U - l/l
2.1+.3 Signal Name Lists for Pointer Registers
2.U.3.1 Control Signals
ACT/E/
ANB/G
ASB/G
BSR1/G/
BSR2/G/
CCT/E/
CEQA
CNB/G
CTSB/G
DBDR/G
INB1/G/
INB2/G/
IRTGO/G/
IRTG1/G/
IRTG2/G/
NFCK/E/
NFONE
NFR/G/
NOS
N13S
NPR13/S
NPRlU/S
ACT enable count (ACT = ACT +1)
ACT-» NB gate
ACT -* SNB gate
interrupt recovery - load higher SNR's from DB
interrupt recovery - load lower SNR's from DB
CCT enable count (CCT = CCT + l)
output - value of CCT = value of ACT
CCT -♦NB gate
CCT -» SNB gate
DB -¥ PR storage blocks
interrupt save - gate lower SNR's onto BR0S
interrupt save - gate higher NR's onto BR0S
interrupt save - tag field in byte
gate the IR->TGR, tag field in byte 1
gate the IR -» TGR, tag field in byte 2
name flag check enable
output - name flag of SNR indicated by NB is = 1
gate name flag register, i.e. set name flag register
indicated by NCE.
Output - set to 1 if TGR = (i.e. if instruction
pointer is selected)
Output - set to 1 if TGR =13 (i.e. if 0S pointer
is selected)
Load NB with +13 (i.e. the operand stack pointer
number)
Load NB with +lU (i.e. the available space pointer
number)
1/1/69
Section 2.U.3.1 - 1/2
PSNRi/Sl -
PSNRi/S2 -
PSNRR15/ -
PSNRW15/ -
PSNWi/Sl -
PSNWi/S2 -
RACT
RCT
RNFR
RSNR/
SBR/S
SBSR/G/ -
SNNR/G/ -
SNRD/E/ -
SNS/G/
SNWT/E/ ■
TNB/G
TSB/G
WRPRL/E
WRPRV/E
WSBV/E
PR Segment Name Register - Read Select Register i,
Signal 1
PR Segment Name Register - Read Select Register i,
Signal 2
PR Segment Name Register #15 - Read
PR Segment Name Register #15 - Write
PR Segment Name Register - Write Select Register i,
Signal 1
PR Segment Name Register - Write Select Register i,
Signal 2
Reset auxiliary k bit counter (ACT)
Reset k bit counter (CCT)
Reset all name flag registers
Reset all Shadow Name Registers to
Spare "buffer register select
Gate SNB-» SNR(i) where i is given by NCE which
is on
SNR-»NR gate - (all registers whose name flags = l)
Enable PR Segment Name Register Read
Gate PR Select Signals, PRi/S/ , into PR Segment
Name Selector Logic
Enable PR Segment Name Register Write
Gate the TGR -» NB
Gate the TGR -* SNB
DBP-* pointer link field selected by PRS's
DBP-*SBR link field if SBR/S is on
DBP-* SBR value field if SBR/S is on
7/7/69
Section
2.1+.3-1 - 2/2
2.U.3.2 Internal Signals Used by Pointer Registers
ACTi
BR0Si
CCTi
DBi
DBPi
NBi
NCEi
NFRi
NjRi
PRBi
PRi/S/
PR7G/S
PR8G/S
PRSNBi
PSNAi
PSNbi
SNBi
TGRi
Auxiliary h bit counter - bit i
Base register - Operand Stack bus bit i - to
empty NR's
h bit counter - bit i
Permuter Output Bus - from DBP - ith bit
Permuter Output Bus - directly from Permuter - bit i
Name Bus - bit i
Name Compare Equal for ith register - i.e. NB = value
in ith NR
Name Flag Register - bit i
jth name register - ith bit
Pointer Register Bus output - bit i
Pri has been selected
PR selected belongs to PR's through 7
PR selected belongs to PR's 8 through lU or SBR
PR Segment Name Register Output Bus, bit i
PR Segment Name Register, Out bus A, bit i
PR Segment Name Register, Outbus B, bit i
Shadow Name Bus - bit i
Tag Register, holds tag from IR - bit i
6/18/69
Section 2.U.3.2 - l/l
2.U.U Pointer Registers - PL/I Description
// FXFC PL1
//(■'L 1 .SYSPDNCH mi SYSOUT*ft
//PL 1. SYS I M no *
pregin: ppoci
actf, anbg, asrgt cctf, ceqa» cmbg,
ctsbg, imm, inr1g, inb2g, n13sf nfckf,
NFflMF, NFRG, NPR13S, MPR14S» RACT, RCT,
RN'FR, RSNR, SBRS, SBSRG, S^NRG, TGIM,
TNBG, TSBG, IRTGG, PSMPRBG):
OCL( ACTF, ANBG, ASBG, CCTF, CFOA,
CNBG» CTSHGt IMM, INB1G, INB2G, M 13 S ,
MFCKF, MFOMF, NFRG, MPR13S, NPR14S, RACT,
RCT, RNFR, RSNR, SBRS, SBSRG, SMMRG,
TGIM, TNBG, TSBG) B I T ( 1 ) , I R TGG ( : 2 ) RIT(l);
OCL PSMPRBG HIT ( 1 ) ;
OCL AOOl FNTRY( (4)RIT( 1 ) ) EXTERNAL;
OCL( (ACT,CCT,TGR) (4), NFR(0:14), ( BROS , I R t PRB , SBR ) ( 36
PRS(0:14), (NR,SNR) (0:14,4) , PR(0:14,36)) BIT(l)
external;
OCL MCE (0:14) BIT(l),
(MB,
SMB
) (4) BIT( 1 ) ,
( PR7GS,
PR8GS
) BIT ( 1) ,
( I , J ) FIXFO BIN;
/* SFT U P CniJMTFRS */
IF RCT THEN CCT='0'B;
IF PACT THFM ACT='0'B;
IF ACTF THEM CALL AOOl (ACT);
IF CCTF THEM CALL AODKCCT);
nn i=i. in 4;
IF ACT( I )i=CCT( I ) THFM GO TO SKI PI;
F N ;
CFOA= • 1 • B;
.-■;-. i _,-ian MAMF BUS AND/OR SHAOOW MAMF BUS */
C K i pi :mh , SNB=' O'B;
IF IRTGG(O) THEN
00 1=1 TO 4;
TGR( I ) = IR( I ) ;
TGIM=IR(8) 6 1 MM;
ENO;
I F IRTGG( 1 ) THFM
nn I = 1 TO 4;
TGR( I ) = IR( 1+9 ) ;
TGIM=IR( 17) SIMM;
END;
IF IRTGG(2) THEN
nn i= i tu 4;
TGR( I)=IR(I+18);
TGIM=IR( 26 )RIMM;
END;
IF TNBG THFM MR=TGR;
IF ANBG THEN NB=ACT;
II/5/7O Section' 2 . U, 4 - 1/3
IF CM8G THEM NB=CCT;
IF TSBG THEN SNB=TGR;
IF ASBG THEN SNB=ACT;
IF CTSBG THEM SNB=CCT;
IF NPR13S THEN DO;
NB='l • B;
MB( 3)= , , B;
END;
IF MPR1AS THEN DO;
nn 1=1 to 3;
MB( I ) = • l'B;
end;
MB ( 4 ) = • ' B :
IF fr,*(l)RTGR(2)B-»Tr,R(3)GTGR(4) THEN N13S='l'B;
ELSE N 1 3 S = ' • B ;
/* COMPARE NAME BUS *IITH EACH REGISTER */
nn i=o to ia;
NCF( I ) = •()' B;
nn j=i Tn 4;
IF MR(I,J)-=NB(J) THEM GO TO N0TF0;
E n n ;
MCF( I ) = ' 1 'b;
NOTEO : END ;
/:■, SFT up POINTER SFI.FCT SIGNALS */
II- SBKSIPSNPRBG THEN PRS='0'B;
ELSE PRS=MCF;
/>. qhFCK FOR MAMF FLAG RESETS */
IF KNFR THEN NFR='0'B;
/:;; chFCK FOR GATING IN NAME FLAG REGISTER */
j F MPRr-, thfm nn 1=0 TO 14;
IF MCF ( I ) THEN MFR ( I )= ' 1 ' B;
E\in;
/ •-;= C H F C K MAMF FLA G * /
N F M F = • 1 ' B ;
IF MFCKF THFM 110 1=0 TO 14;
IF NCF ( I )f.MFR( I ) THEN NEONE='0'B;
FMO;
/:;: SFT up GROUP SFLFCT SIGNALS */
PRRGS= ' O'B ;
\y) \=H TO 14;
I F MCF( I ) THEM PRBGS=' 1 'B;
f n o ;
IP SBRS THFM prsgs='1 , b;
PK7GS = -«(PRHGS ) ;
/* GATF POINTER TO POINTER BUS AS OUTPUT */
if PR7GS them nn 1=0 TO 7;
IF PRS(I) THEM PRB(*)sPR( It *) S
F m n ;
IF PR8GS THFM 00;
nn i=b to 14;
H/5/70 Section 2.k.h- 2/3
IF PRS( I ) THEM PRB(*)=PR (I,*);
FNin;
I F SBRS THEN PRR = SBR ;
END;
/* INTFRRIIPT RliS */
IF IN81G then nn 1=0 TO 3;
on j=i to 4;
8R0S( I#9 + J )=NR (2*1 , J ) ;
bros(i*9+j+4)=nr(2*i+i t j);
EMO?
ENO;
IF INR2G THFN 00 1=0 TO 2;
DO J=l TO 4;
BRITS ( 1*9 + J )=NR (2*1+8, J ) ;
BRnS(I*9+J+4)=NR(2*I+9,J);
END;
DO J=l TO 4;
3R0S(27+J)=NR< 14, J ) ;
BRnS(31+J)=«0 , B;
END;
FND;
/* CHECK FOR RFSFT DF SNR */
IF KSMR THEM SMR='0'B;
/•: CHFCK FOR GATIMG(SMB TO SNR)'*/
It- SBSRG THEM OH 1=0 TCI 14;
IF MCE(I) THEN SNR ( I , * ) =SNB ;
FNO;
/■ CHFCK FOR SMR TO MR * /
if snmrg thfm nn i=n Tn 14;
IF MFR(I) THFM MR ( I , * ) =SNR ( I , * ) ;
END?
F • '■' P^FGI N :
11/5/70
Section 2.k.k - 3/3
2. 5 Base Registers
The Base Registers (BR's) are used as a part of the memory
accessing scheme to contain information about the segments of the
Ik
current process. Up to 2 segments are allowed the programmer. But
as there are only 7 usable base registers, only the data on the 7 most
recently used segments is held within the TP. The remaining segment
base information is retained in memory in the Segment Name Table of the
current process. BR's 1 through 7 are used to address recent data. BR#0
is used to indicate the Segment Name Table.
To identify which segments have their bases in the TP, each
base register (other than BR#0) has an associative register assigned to
it which contains the name of the segment currently in that base register.
When a PR is selected as an address of a cell to be accessed from memory,
its segment name register is associatively compared with the associative
registers for each base register. If a match is found, the matching base
register will be used. If there is no match, the required base data will
be accessed from the Segment Name Table.
In order to completely determine a file, the base register must
1) a base address which indicates where the file storage
begins. (in Partitioned Mode the base address is the
address of the page map - see Section k. 1.3.2).
2) a bounds, which indicates how many pages have been assigned
3) a code bit to indicate the Data Access Mode (Contiguous or
Partitioned), and
h) two other code bits to determine the level of Accessing
Privilege (read-write, read only, trap, or no access).
contain :
3/12/69
Section 2.5 - 1/2
The base address uses a 16 bit page address which represents
the upper 16 bits of a normal 2k bit address. The rightmost 8 bits of
the corresponding absolute address are always taken to be zeros. The
bounds is an 8 bit quantity allotting the user a specified number (up
to 256) of pages of memory for this file. These two quantities are
placed in a 3 byte BR with the bounds in the leftmost byte, the base
address in the rightmost 2 bytes, as shown in Figure 2.5/1- The Data
Access Mode bit is in the flag position of the leftmost byte and the
Accessing Privilege bits are in the flag positions of the 2 rightmost
bits. How these various quantities are used is explained in Section k.l
on Memory Accessing.
Since the base information controls where and how a user may
access the memory, users must he prevented from changing the contents of
any BR. For this reason instructions which change the value of any portion
of a BR are considered "privileged" and may only he used hy the supervisor
routine.
Data Access
Mode Bit
Accessing Privi-
lege Bits
D
bounds
page address
D
n
Figure 2.5/1 - Base Register Format
5/16/69
Section 2.5 - 2/2
2.5-1 Base Register Functional Description
The Base Register Logic is shown in block diagram form in Figure
2.5-1. In a memory access a pointer register will be selected and one
of the segment name registers will be gated out to the PRSN bus. This
is then associatively compared with all of the Associative Registers.
If there is a match, the corresponding BR select line will be activated
and the proper Base Register will be read out onto the BROS bus. If
there is no match, a special control sequence will be entered to access
the Segment Name Table for the proper base information. This data is
then stored in the base register which has been "inactive" for the longest
amount of time. This choice of BR is made by the Queue Counter Logic
(Section 2.5-1.2).
3/12/69 Section 2.5-1 - 1/2
UJ
co
z o
o u
a. <"
ro
UJ*
CO 2
o <
UI z
cr
i-
cr z
UJ UJ
CD
z
CO
CL
O
UJ
cr
UJ
<
UJ
CO
cr
0.
in
1-3
o
ui CO
_l UJ
UI z
>-
cr
*— ♦
00
Q
cr
UJ
h-
cr
ui
a.
o
CO
z
CO
<
o
o
CO
CO
<
o
UI
CO
> cr
•- y
< *7
o o
CO LU
co cr
<
lO
nnm
rrrrrn
co
cr
UJ UI
II
CO
cm
cr
CD
cr
I
cr cr
UJ UJ
co
CD
ui
cr
7/9/69
O
o
UI
Z> I-
UJ O
3 liJ
O -J
cr
UI
*9 < O
UJ cr o
CO
♦i
CO
UJ
m
m
UJ
cr
cr>
Q
cr
o
CO
CO
cr
CD
ui
cr
co
<
UJ
T
ui
\
cr
CD
Q_
cr
tr
CD
CO
Sect
ion 2.5-1 " 2/2
o
CD
3
q:
uj
I-
co
2.5.1.1 Base Register Storage
The Base Register storage is made up of the same type of
storage blocks as the Operand Stack and the Pointer Register, i.e. 9,
201+-00 circuit boards driven by 2, 205-00 circuit boards. The BR
storage consists of k blocks arranged as shown in Drawing Number 01-1
of the TP Logic Book. (For a detailed description of these blocks -
see Section 2.2).
Because of the fact that the BR's are only 3 bytes long, they
are staggered in their arrangement in the k subgroups. This arrangement
is shown in Figure 2. 5 .1.1, where BRij indicates the position of the jth
byte of the ith Base Register. Each Base/Bounds register is a 3 byte unit
and the Byte Select inputs are common in 3 byte groups. Note that in this
arrangement, there are 8 bytes of storage which remain unused. As will be
explained later (in Section 2.6), these are used for the Instruction Buffer
Register (IBR).
The inputs to the Base Register storage group consist of the
Distribution Bus from the Permuter (DBP), the Base Register select lines,
and read/write control lines. The Base Register select lines are connected
to the word select inputs of the storage block Byte Select Drivers (BSD).
The write operation takes two control lines ,DBBRS/G/ to gate the DBP to the
inputs of the flip-flops and WRBR/E which puts the selected flip-flops in
the "write in" state so that they will accept the data gated in. The
WRBR/E signal connects by means of an inverter to the read/write input of
the BSD while the DBBRS/G/connects directly to the "Gate Both In" line of
the Input Gate Drivers.
Previous to gating the data into the flip-flops, the Permuter is
used to shift the data so that when it is placed on the DBP, its boundaries
will coincide with those of Figure 2.5.1.1.
3/12/69 Section 2.5-1.1 - 1/2
Group
BR01
BR12
BR23
BRUl
BR52
BR63
Group 1
BR02
BR13
BR31
BRU2
BR53
BRT1
Group 2
BR03
BR21
BR32
BRU3
BR6l
BRT2
Group 3
BR11
BR22
BR33
BR51
BR62
BRT3
RESERVED FOR INSTRUCTION BUFFER
REG.
Figure 2.5-1.1 Arrangement of Base Registers
The output of the BR Storage Group is the Base Register-Operand
Stack Bus (BROS). When the BRBSP/G signal, which is connected directly to
the "Gate False Out" input of the Output Gate JDrivers , is activated, the inverte
contents of the selected BR is gated to the BROS. The data, at this point,
is still in the position given in Figure 2.5-1.1. The Permuter can then
be used to shift it so that it is delivered to the DB, left justified.
11/5/70
Section
2.5-1.1 - 2/2
2.5.1.2 Associative Register Storage
The Associative Register Storage "block is completely made
up of IC chips. It consists of 7 registers each containing 16 bits,
along with the appropriate input and output gating. An example of one
register is shown in Figure 2.5.1.2/1.
Each Associative Register itself is made up of four SN7I+75
quad bistable latch chips. The input data comes from the DBB bus which
is merely an extension of the DB bus into the IC logic part of the
machine. The input gating signals are generated by 2 NOR circuits
whose outputs go to 1 when the inputs, ASRW/E and RBRi /S , go to zero.
ASRwZe is the main signal for writing data into an Associative Register.
RBRi /S is a select signal generated by the Queue Counter logic (see
Section 2.5.1.3). It selects the particular Associative Register to be
written into.
Under normal program control there is never any need to read
out the contents of an associative register since these registers are
only used in comparisons with the PR Segment Name Bus. When a task is
removed from a TP the Associative Register contents are simply abandoned
by setting all of the OK bits to zero.
It is necessary, however, for the Engineering Console (see
Section k.T) to be able to display the contents of these registers. For
this reason the Associative Registers have output gates which allow a
selected register to be gated on to the PRSNB bus and from there to the
PRB bus and the Permuter input gate.
11/5/70 Section 2.5.1.2 - l/l
2.5.1.3 Queue Counters
The Queue Counters are used to keep track of which base
register has not been used for the longest length of time. The queue
counter logic provides a series of output signals (REPLACE SELECT i)
which indicate which associative register has not been in use for the
longest period.
The overall idea is to use 3 bit counters to indicate a base
register position in a service queue from to 6. The register labeled
is that register most recently accessed, while the register labeled 6
was used least recently. Each time a memory access is performed (and
the segment name is among those currently in the associative registers),
the counter corresponding to the associative register is set to zero,
and all the counters with counts less than the previous contents of the
selected counter are incremented by one. This ensures that the order in
the queue will always be in the order of most recent usage. Therefore
the least recently used associative register will always have a counter
containing a 6.
11/5/70 Section 2.5.1.3 - l/k
The detailed logic of the Queue Counters is shown in Figure
2. 5.1. 3. /I. Operation is as follows.
Each counter has an overflow detector in the form of a flip-
flop. After a base register-associative register combination has been
selected, all of the 3 bit queue counters are incremented one count at
a time until the counter corresponding to the selected register overflows.
At this point an extra count is added to all counters whose overflow flip-
flops are still off. Then the count pulses are continued until the total
number of pulses, not counting the extra pulse, is 8. All counters with
numbers . the count in the selected base register have now returned to
their initial value, while those with initial counts the selected count
have been incremented by 1. Also all overflow flip-flops are now on.
The overflow flip-flops are now reset by inserting a common
count pulse into each overflow flip-flop. Finally the selected counter
is reset to zero. An example of the counting is shown in Figure 2.5-1.3/2.
For the queue counters to function properly each counter must
initially contain a distinct number from to 6 inclusive. Therefore at
turn-on a special sequence must be performed to ensure that this condx-
tion is met. Once the counters have been set up, however, they will
continue to operate properly as long as no hardware error occurs.
The setup process is quite simple. It consists of using the
cycle counter to select each queue counter in turn to be reset. Between
each reset, all the queue counters are incremented once. Thus after 7
cycles there will be one counter with each number from to 6. The
logic is given in TP Logic Book, Drawing No. 23-3.
, , Section 2.5.1-3 - 2/U
11/5/70
:nt/e qcnt/e
SOCTOV
RSCTR/S
RQOVF/S
BR7/S
Figure 2. 5.1. 3 A - Queue Counters
11/5/70
Section 2.5-1.3 - 3/k
Contents
of
Counters
Counter of
Selected — * 3
Associa-
tive h
Register
5
1
2
3
k
5
6
Count Cycles
3 U 5 X 6 7 8
h 5 6 7 0* 1
5 6 T 0* 1 2
6 7 0* 1 2 3
T 0* 1 2 ©
2 3
3 h
h 5
5 6
67 0* 1123^
7 0* 1223^5
This is then reset to 0,
* = overflow
X = extra count
7 0* 1
3 U
Figure 2.5.1.3/2 Operation of the Queue
Counters : An Example
11/5/70
Section 2.5.1. 3 " ^ /U
2.5.1.1* Association Logic and Associative Registers
The Association Logic compares the contents of the PRSNB bus
with each of the Associative Registers "connected" to the BR's. It is
conceptually similar to the comparison logic for matching the Name Bus
with the Name Registers in the Pointer Register logic. The Associative
Registers however are 16 bits long while the Name Registers are only k
bits in length.
The association logic is shown in Figure 2.5.1.3/1. The OKn
signal comes from a flip-flop attached to the particular association
register which indicates that the data in the register is valid. Thus
all that is needed to "empty" the registers is to set the seven OK flip-
flops to 0.
11/13/70 Section 2.5-l.U - 1/2
figure 2.5.1.V1
ASSOCIATION LOGIC FOR ASSOCIATION REGISTER i
11/13/70
Section 2.5-l. 1+ - 2/2
2.5.2 Signal Name Lists for the Base Registers
2.5.2.1 Control Signals
ASRiW/El
ASRiW/E2
ASRW/E
BRG/S
BRi/S/
BRRi/S/
BRQi/S
BRSBP/G/
BRSS/G
CYC6
CYC^V
CYCT/E
DA
NYET
QCNT/E
QSETUP
RBRi/s/
RCYCT/S
RPBR/E
RQ0VF/S
RSCTR/S
SNS/G
SQCT0V
XQCNT/E
Associative Register i, write enable 1
11 if 11 11 11 o
Associative Register write enable. Enables Associative
Register selected by RBRi/S signals.
Select BR portion of BR-IBR storage block.
Select BRi in BR-IBR storage block.
BRi was selected by association logic
Select BR Queue counter i
Gate base register storage to BROSi according to BRi/S signals
Gate BRNi/S signals to BR Queue counter select register.
Output Signal - cycle counter equals 6.
Output Signal - cycle counter overflow
Enable count of +1 on cycle counter.
Output signal - a match between PRSNB and an associative
register has been made.
Output signal - no match between PRSNB and an associative register
Enable count of +1 on all Queue counters
Turned on during initial Queue counter set up procedure.
Select BRi for reloading
Reset cycle counter
Enable the replacement of the BR selected by the RBRi/S signals
Reset overflow bit on Q counters. This signal only works if
all overflow bits are on.
Reset selected Q counter
Gate PR Select Signals into select register
Overflow by counter selected by BRi/S
Enable extra count of +1 for all Queue counters with their
overflow bit off
11/5/70
Section 2.5-2.1 - 1/1
2.5.2.2 Base Register Control - Internal Signals Used by the Base Regi:;t'jr:;
CMAi/
CMBi/
CMCi/
CMDi/
BR/Si
DBBi
DBPi
OKi
PRSNBi
Compare result of first quarter of associative register i with
PRSNB. Set to if equal.
Compare result of second quarter of associative register i with
PRSNB. Set to if equal.
Compare result of third quarter of associative register i with
PRSNB. Set to if equal.
Compare result of fourth quarter of associative register i
with PRSNB. Set to if equal.
Output bus for Base Registers and Operand Stack.
Permuter Output Bus used by control logic. Logically equivalent
to DB, but produced by IC drivers, bit i
Permuter Output bus direct from Permuter.
Associative Register i contains valid data.
PR Segment Name Bus - bit i.
11/5/70
Section 2.5.2.2 - l/l
2.5.3 Base Registers - PL/1 Description
E X 6 C P L 1
[■ACL CI. I
Ptl .SYSPUNCH DD SYSniJT = B
PL1. SYSIN DD *
BRFGIN: PROC(BRGS, BRSSG, CYC6, CYCOV, CYCTF,
DA, NYFT, PSNRR15, PSNRW15, QCNTF,
OSETUP, RCYCTSr RDBRF, RPBRF, RODVFSt
SNRDE, SNSG, SNWTF, SOTOV, WRRRF,
XOCNTF, BR S» PSNPRBG);
OCL(BRGS, BRSSGt CYC6, CYCOV, CYCTF, DA,
NYET, PSNRR15t PSNRW15, QCNTF, OSETI)P t
RCYCTS, RDBRE, RPBRFt RQOVFS, SNRDF,
SNSG, SNWTE, SQTOVt WRBRE, XQCN1 F )
B I T { 1 ) ;
DCL PSNPRBG BIT ( 1 ) ;
OCL AOD1 EIMTRY( (4) BIT(l)) EXTERNAL;
OCL PRB(l:36) BIT(l) EXTERNAL;
DCU ASRG(7,18), BR<0:7,36), BROS(36), CYCTR(4),
QC0UNT(7,4) ,PRSNB( 1 : 36 ) ,PRSNR(0: 15, 18 ) ,
( PR S,PSNRS1,PSNRS2,PSNWS1,PSNWS2, SNSRG) (0:15),
(RRCS,BROS ,BRRS,BRWS,CMA,CMB,CMC,CMD,OK,RBRS )
(0:7)) BIT ( 1 ) EXTERNAL;
DCL BRS(0:7 ) BIT ( 1 ) ;
PCL ( PSNA,PSNB) ( 1 : 17) BIT(l),
C00NTFR(4) BIT ( 1 ) ,
(X,I,J) FI XFD bin;
DCL BRSRFG(0:7) RIT(l) EXTERNAL;
/* TORN ON ASSOC IATIVF LOGIC CONTROL SIGNALS */
RPBRE=BRGSGWRBRE;
RDBRE = BRGSG-.WRBRF;
BRSSG=RDBRE ;
/* GATE PR SELECT SIGNALS INTO SELFCT REGISTFR SNSRG */
IF SNSG THFN SNSRG=PRS;
IF SNRDE THFN 00 1=0 TO 14;
PSNRS1 ( I ) ,PSNRS2( I )= SNSRG ( I ) ;
END;
IF SNWTE THEN 00 1=0 TO 14;
PSNWS1(I),PSNWS2(I )= SNSRG ( I ) ;
END;
PSNRS1 ( 15) ,PSNRS2 ( 15)=PSNRR15;
PSNWS1(15),PSNWS2(15)=PSNRW15;
PSNA ,PSNB= ' O'B ;
00 J=l TO 8;
DO 1=0 TO 7;
PSNA( J )=PSNA( J) | (PSMRSK I ) EPRSNR ( I , J ) ) ;
END;
DO 1=8 TO IS;
PSNB(J)=PSNB(J) | (PSNRS1 ( I )£PRSNR< I , J ) );
END;
END;
H/5/70 Section 2.5.3 - lA
nn j =10 to 17;
~PSNA(J)=PSNA(J) I ;
END;
D ° I= PSNB(J)=PSNB(J)I (PSNRS2U ) f.PRSNR ( I , J ) ) ;
end;
end;
/* PR SEGMENT NAME REG OUTPUT BUS */
Dfl 1 = 1 TO 17;
PRSNB( I )=PSNA( I ) |PSNB( I ) ;
end;
IF PSNPRBG THEN PRB=PRSNB;
/* fDMRARE THE A QUARTERS OF EACH ASSOCIATIVE REGISTER WITH
THE RESPECTIVE QUARTERS OF PRSMB. IE THE QUARTERS MATCH, SET
THF RESPECTIVE CM SIGNALS TO 1 */
CMA,CMB,CMC,CMD=« l'B;
DO 1=1 TO 7;
DO J =1 TO A;
IF PRSNR(J)-. = ASRG(I,J) THEN CMA(I) = , 0'B;
end;
nn j=s to 8;
IF PRSNB(J)-=ASRG( I, J) THEN CMB(I)='0«B;
END;
DO J = 1 TO 13;
IF PRSNB(J)-=ASRG(I,J) THEM CMC(I)='0'B;
END;
DO J = 14 TO 17;
IF PRSNB(J)-=ASRG(ItJ) THEN CMD(I)='0'B;
END;
E N D ;
/* BASF REGISTER SELECT SIGNAL DRIVERS */
brp-s=' O'B;
B R W S = ' ' B ;
IF rpbRE THEN DO I = 1 TO 7;
BRWSt I )=RBRS( I ) ;
end;
if rorpf thfn do 1=1 to 7;
BRRS(I)=OK(I )6CMA( I )&CMB( I KCMCd )6CMD(I )?
END;
/^--CALCULATE BRCS WHEN IMPLEMENTFD *l
B R S = ' ' B ;
IF BRGS THEM DO 1=1 TO 7;
BRS( I )=BRRS( I ) |BRWS( I ) ;
end;
/* BRSREG IS THE REGISTER ON DRAWING 23-3 */
IF BRSSG THFN BRSRFG=BRRS;
11/5/70
Se
ction 2.5.3 - 2/h
/* CYCTR IS THE 4 BIT COUNTFR (IN DRAWING 23-3 */
IF CYCTF THEN CALL ADD 1 ( CYC TR ) ;
IF KCYCTS THFN CYCTR='0'B;
CYCOV= '0' ft;
IF CYCTR(l) THEN CYC0V='1'B;
/* nECnOF VALUE IN CYCTR-*/
x = o;
IF CYCTR (2 ) THEM X=X+4;
IF CYCTR(3) THEN X=X+2;
IF CYCTR(4) THEM X=X+1;
CYC6= 'O'B;
IF X = 6 THEN CYCA = DA |BRRS( I ) ;
END;
NYET = -.DA ;
IE BRGSE-iWRBRF THEN DO;
H/5/70
Section 2.5.3 - 3/U
BRns= , o , B;
DO 1=0 TO 7;
IF BRS(I) THEN BROS ( * ) = BROS ( * ) I BR ( I , *) ;
END;
END;
emo bregin;
/*
U/5/70
Section 2.5.3- hfi
2.6 Instruction Buffer Register
The Instruction Buffer Register (IBR) is an eight byte (double
word) register used to store the instructions as they are obtained from
core. The Instruction Register (IR) is used to hold that part of the
instruction which is currently being processed and is loaded from the
IBR. In the case of Primitive Instructions the IR usually contains the
complete instruction.
The IR is loaded from the IBR according to the count in the 3
bit Instruction Counter (ICT). This counter indicates the first byte of
the next phrase to be worked on. When a new phrase is to be interpreted
the byte designated by the ICT and the three succeeding bytes are read out
on to the BROS bus from the fast registers.
In the next section a more detailed description of the operation
of the IBR and ICT will be given.
U/7/69 Section 2.6 - 1/1
2 - 6 ' 1 Instruction Buffer Register-Functional Description
2.6.1.1 Instruction Buffer Register Storage
The Instruction Buffer Register is contained in the same 9
bit/byte storage blocks as the Base Registers (see Section 2.5.1.1).
As can be seen in Drawing 01- 1 of th e TP Logic Book, each byte of the
IBR has its own select line, IBRO/S, IBRlTs etc. which is connected to
the byte select input of the Byte Select Driver (BSD). The WRIB/E line
is used to indicate whether the selected byte should be read or written
over.
In order to write, WRIB/E must be "0",DBBRS/G must be "0" in
order to gate the data from the permuter to the flip-flop inputs, and
the proper select lines must be "0".
The output of the IBR is connected to the BROS bus. When the
BRSBPTg signal, which is connected directly to the "Gate True Out" input
of the Output Gate Drivers is activated, the four IBR bytes selected by
the ICT are gated to the BROS. The permuter is then used to place them
in sequential positions in the IR.
k/7/69
y Section 2.6.1.1 - 1/1
.1.2 The Instruction Counter and Selection Logic
The Instruction Counter (ICT) is a three bit double-rank
counter which is capable of being counted up by ones or twos (refer
to TP Logic Book Drawing lU-2). It has a special added bit to indicate
overflow. The purpose of the ICT is to keep track of the initial byte
position of the instruction currently being executed by the TP. For
this reason it really represents the low order 3 bits of PR#0.
The ICT is used to drive the Instruction Buffer Register
selection logic so that whenever the IR is loaded from the IBR the
proper h bytes will be selected. The selection is done with a 23U-0U
diode matrix card, the same type as used in the Operand Stack selection
logic (see Section 2.3.1-3). As shown in the TP Logic Book Drawing lU-1,
the three output lines from the ICT can be gated to the input bus where
they are decoded using eight 3-input NANDS from a 2U1-00 board. These
eight outputs are then used as inputs into the 23^-OU. The diode matrix
card acrivates the four desired select signals. Note that the 23^-OU
utilizes a wrap-around feature so that h bytes are always selected no
matter what the value of ICT.
As can be seen in TP Logic Book Drawing 14-1, there is a pro-
vision for gating the last 3 bits of the DB into the ICT if the DBCT/G
line is on. Tnis is used whenever PR#0 is loaded with a new value field.
Whenever PR#0 is read out of storage, the 3 bits of the ICT are masked into
the 3 low-order bit positions. This masking is performed using the ICTP/G
signal and the OSR bus into the Permuter.
The overflow bit is used during instruction scanning. If it
turns on, PR#0 must be incremented by 8.
V7/69 Section 2.6.1.2 - l/l
2.6.2 Signal Name Lists for the Instruction Buffer Register
2.6.2.1 Control Signals
BRSBP/G/ - BR Storage Block -» Permuter Input
DBBRS/G/ - Gate DB -4 BR-IBR Storage Block
DBCT/G/ - Gate DB-4 ICT
IBR/S/ - Selection IBR portion of BR-IRB storage
ICT1/E - Enable counter, ICT = ICT + 1
ICT2/E - Enable counter, ICT = ICT + 2
ICTP/G - Mask ICT into permuter output
WRIB/E/ - Load instruction storage buffer read-write
7/7/69
Section 2.6.2,1 - l/l
2.6.2.2 Internal Signals Used by the Instruction Buffer Register
DBi
DBPi
ICTi
IBRi/S/
IRi
0SRi
Output bus from DBP - bit i
Output bus directly from permuter - bit i
Instruction Counter - bit i
Instruction Buffer - select byte i (U chosen at
a time)
Instruction Register - bit. i
Bus from 0S registers to Permuter - bit i
6/18/69
Section 2.6.2.2 - l/l
■• •*'' ■'-' '•"- '■'!' i-ui'i-.T !:, r ,i:-.t..T - Logical Degcrigtion
2.6. k.l Instruction Counter Logic
The Instruction Counter (lCT),as shown in Drawing lU-2 of
the TP Logic Book, is a three bit double rank counter which can count
by one's or two's and which has a special overflow flip-flop to indicate
when it has exceeded a count of 7. It can be set to a predetermined
number by gating the true and complement values of the 3 low order data
bits of the DB (DB33, DB 3 U , and DB35) to the true and complement output
lines of the upper rank of the counter. This causes the upper rank
flip-flops to be forced to the value which appears on the 3 low order
DB bit positions.
The ICT itself is a normal double rank counter in that the
upper rank, which contains the current state of the counter, is gated
into the lower rank during the time that the ICT is not counting (i.e.
both ICT1/E and ICT2/E are '0'). The output of the lower rank, in turn
is sent to the carry propagation logic which decides what the state of
the ICT will be the next time that one of the count signals is activated.
However since neither ICT1 or ICT2 is active at this time the actual
value of the next state cannot be gated into the upper rank. When this
does happen the gates which send the data from the upper rank to the
lower rank will close. This ensures that the data inputs to the carry
logic will not change. Then, depending on which signal was activated,
the proper new state will be gated into the upper rank. When enough
time has passed for the new count to be stable in the upper rank the
count enable signal can be deactivated.
The carry generation logic is complicated by the fact that the
ICT can be incremented by either one or two. In an incrementation by
one, the low order ICT bit position, ICT3 , will change state and the
ICT2, ICT1 and ICTOV bit positions will change state if the previous
state generated a carry.
In an incrementation by two, the second lowest order ICT bit
position, ICT2, will change state and ICT1 and ICTOV will change state
if the previous state generates a carry. In the count-by-two case ICT3
does not change state.
11/12/69 Section 2.6.1k! - 1/2
Thus what we have, in effect, is two sets of carry generation
l06 ic - one set to increment the counter by 1 and the other set to
increment the counter by 2. Since the counter is oniy 3 hits long, full
carry looKahead is used since it adds almost no extra logic rn thrs
case All this means is that at any given hit position in the counter
that'position will change state if every previous position in the counter
ls a •!' (for the case of indention hy l) of if every prevxous posrtxon
with the possible exception of the lowest order position is a '1' (an
the case of incrementation by 2).
Thus for the lowest order position, ICT3, all that is necessary
ls to change state when I0T1/E = 1 and to do nothing when ICT2/E - 1.
For the second lowest order position, ICT2, the upper rank flip-flop
changes state every ti»e ICT2/E - 1 hut if ICTl/E - 1 it only changes I
state if 1CT3 was also a 1. This process of changing state is accomplrshed
hy double gating the signals of the lower rank flip-flop into the upper
rank flip-flop in such a manner as to reverse its setting. Cray one
of the gates will actually operate each time, one being used when the
flip-flop is set to 1, the other when the flip-flop is set to 0.
The highest order position ICT1 is the most complicated of the
■ i~ t-p TPTP/E = 1, it will change
three, hut it is still fairly simple. If ICT2/h ±,
state if ICT2 and ICT3 were both previously 1.
v+ Tr^nv is set when ICT1 goes from a 1
The ICT overflow bit, ICIOV, is sex
■111. to '000'. The set signal is determined from the proper gatxng
circuit for the ICT1 position.
It should be noted that in order to speed up the setting of
the ICTOV flip-flop, the count signals ICTl/E and 1CT2/E were used
cirectly instead of using a doubly inverted gate signal as an th b
ICT positions. This will not cause timing problems however sance ICTOV
o s ot feed back into a lower rank. It will enable a faster operation
siace the signals which indicate overflow will he valid at the tame the
count enable signals are activated.
Section 2.6.U.1 - 2/2
11/12/69
2.7 The 32 Bit Adder
The 32 bit adder in the Taxicrinic Processor is used to perform
binary addition within the TP. It is also used to generate the outputs
for the boolean operations, EQV and XOR. The adder uses 2's complement
number representation and employs two levels of carry lookahead to hasten
carry propagation.*
The inputs to the adder are obtained from the Distribution Register
(DR) and the Permuter Distribution Bus (DB). These two inputs can be gated
to the adder only in "true" form. To calculate the difference of two
numbers, the subtrahend must be gated from the 9 bit /byte storage (Operand
Stack, Pointer Registers, etc.) in l's complement form (see Section 2.2).
In this case a carry is injected at the low-order end of the adder to obtain
the true 2's complement difference.
The adder itself is broken down into eight four-bit sum groups
with full carry lookahead within the groups. The second level of lookahead
occurs between groups, with lookahead between the leftmost groups 1, 2 and 3
and also between the rightmost groups k through 8. The final carry between
these two, second level groups is a "ripple" carry.
The adder output is the ARN bus. This is the input bus to the AR
and must be latched into the Arithmetic Register (see Section 2.1.2.5 for a
short description of a latch flip-flop). The ARN is in complemented form,
but converts to "true" form when it is latched into the AR.
*For a more complete discussion of carry lookahead adders see Wiegel, Roger E. ,
"Methods of Binary Addition", DCS Report No. 195, February 1966.
11/5/70 Section 2.7 - 1/1
2.7-1 32 Bit Adder-Functional Description
2.7«1»1 Block Diagram Description
As can be seen from the block diagram in Figure 2.7-1.1/1 the
32 bit Adder consists of the following sections: Input Gates, Carry-
Generators, Propagation Generators, Group Carry Generators, and Output
Gates. Each of these sections are represented by blocks in the diagram.
Note that the 32 bit Adder is divided into eight 4-bit groups. The
lines leaving the various sections are labeled with the number of signals
they represent, either 1 or k.
The purpose of the 8 Input Gates is to produce the carry trans-
mit and carry generate signal for each bit position in a 4-bit group, i.e.
Ti = Xi ' Yi v Xi * Yi = Xi 9 Yi
Gi = Xi • Yi
where Xi and Yi are the ith bits of the DR and DB , respectively. If
Gi = 0, the ith bit position will generate a carry into the next (left)
position, i-1. If Ti = 0, the ith bit will not generate a carry, but it
will transmit a carry if it receives one from the i + 1 th position.
Each Input Gate generates k Ti and k Gi signals. The Ti signals
are sent to the Carry Generator, Propagate Generator and the Output Gates.
The Gi signals are only sent to the Carry Generator.
The Carry Generator and Propagate Generator comprise the first
level of lookahead. The Carry Generator is used to generate the carry
signals for each position in each four bit group. The Boolean expressions
for the jth group are as follows:
CkGj = CINj
C3Gj = G4 v Tk •
CINj
C2Gj = G3 v T3 '
G4 v T3 *
t4 •
CINj
CIGj = G2 v T2 •
G3 v T2 •
T3 *
G4 v T2
COUTj = GI v TI
• G2 v TI
. T2
• G3 v TI
T3 • Th ■ CINj
■ T2 • T3 ' G4
where TI through ih and GI through G4 represent the Ti and Gi signals
for the first through fourth bit positions in the jth group, respectively,
CINj represents the carry into the jth group from the next lower order
group, and COUTj represents the carry out of the jth group into the next
higher order group.
11/4/70 Section 2.7-1.1 - 1/6
DR.DR
BITS 32-35
1st LEVEL LOOKAHEAD
2nd LEVEL LOOKAHEAD
Figure 2.7.1.1/1 - TP - 32 Bit Adder
11/17/70
Section 2.7-1.1 - 2/6
Note that the carries are produced by a carry generate signal
in some position to the right of the position of interest with an
unbroken series of carry transmit signals between the two positions.
Note also that except for the last signal, which is actually a carry
generate signal for the four bit group, all of the expressions depend
on the input carry which will come from the previous group and which will
not be known until later . However, at the first level of lookahead, we
are really only interested in finding out if this group will generate a
carry by itself, so only the last equation is important at this stage.
These carry signals are produced by using a diode matrix board.
In order to facilitate the hardware realization and to speed up the adder,
De Morgan's theorem was used to rewrite them in the following form:
Cl+.i =
CINj
C3j = Gk-Tk v GU.CINj
C2j = G3 • T3 v G3 • GU . TU v G3 • GU . CINj
Clj = G2 • T2 v G2 • G3 • T3 v G2 • G3 • GU • TU v G2 • G3 • Gl+ • CINj
COUTj = G1.T1 v G1»G2*T2 v G1«G2»G3*T3 v G1»G2«G3«GU
The logical drawing for the diode matrix is shown in Figure
2.7.1.1/2 while the diode layout is shown in Figure 2.7-1.1/3.
The Propagate Generator produces a propagate signal which
indicates if the particular four -bit group will conduct an input carry all
the way through the group. It is calculated from the Ti signals of the
four-bit group, i.e.
Pj = Tl • T2 • T3 • TU = Tl v T2 v T3 v T^
Once the Pj and COUTj signals have been produced, the first
level of lookahead is completed. Note that the production of these
signals only depends on the Ti and Gi signals which were produced by the
Input Gates.
llA/70 Section 2.7.1.1 - 3/6
T,
L7, L8
15,16
= 13,14
'2
G 2
9,10
T 3
G 3
7,8
5,6
T 3 ' 4
G 4 i—
c J—
'N
OUTPUT
SIGNAL
\
R,S
► COUTj
N
M
J,K
H
C,D
B
A
Figure 2. 7. 1.1/2 - Lookahead Carry Generator for Group j
CIG
C2G;
C3G;
9/18/69
bee
tion 2.7-1-1 - W6
ISI
00
>-
£-
co
>
in
z>
^
c
H
ro
*
1
CJ
!!
1
I
a.
—
O
J
3
[
3
!
*
2
o
>
j
[
?
?
*
z
o>
i
*
_)
CO
H
?
]
[
3
;
~3
I s -
\
:
E
3
!
3
;
X
(D
<
;
[
1
3
[
3
»
U_
!
lO
3
;
'
.IT* ;
ID
|
:
)
'
CD
'
CVJ
J
2
!
'
n 1
<
—
^_
;
[
3
!
=>UJ
i-o
OO
—
CJ
ro"
CO
»
O
of
rO
CO
lO
GO
05
CJ
CJ
•-CE
o 2
_ <3" 'J'rOroOJcvi — —
O lO |l- lO |l- |o |l- IO It-
Figure- 2.7.1.1/3 - 1st Level Lookahead Carry Generator - 236-1^
9/26/69
Section 2.7.1.1 - 5/6
The second stage of lookahead involves the Group Carry
Generators. We want to calculate the CINJ signals for each group so
that we can complete the calculation of the carry signals in the equations
given above. Taking the low order Group Carry Generator first, we have
the following equations :
CIN8 = CINJ
CINT = C08 vP8* CINJ
CIN6 = COT v PT ♦ C08 v PT • P8 * CINJ
CIN5 = C06 v P6*C07 v P6-PT-C08 v P6-P7 «P8 -CINJ
CINU = C05 v P5«C06 v P5-P6-COT v P5-P6-P7-C08 v P5-P6-P7-P8-CINJ
CIN3 = COU v PU-C05 v PH.P5-C06 v pU«P5'P6'COT v Pl+-P5'P6'PT*C08
v pU*P5'P6'PT-P8'CINJ
where CINJ is the low-order injected carry to the adder, and the CO j ' s
are the COUTj signals from the Carry Generators. Note that the form of
the equations is the same as in the equations for the Carry Generator
hut in this case the COj signals represent a carry generated hy the
group and the Pj signals represent a carry transmitted by the group.
The 0-3 Group Carry Generator has to wait for CIN3 to be
formed before it can "start" since in its equations CIN3 takes the
place of CINJ, i.e. :
CIN2 = C03 v P3 • CIN3
CIN1 = C02 v P2 • C03 v P2 • P3 • CIN3
This wait is what is referred to as the "ripple" carry in the
adder.
Finally, with all the input carries to the groups determined,
the carry generators can now generate the proper individual carries for
each bit simultaneously and the Output Gates can use these carries and
the Ti signals previously calculated, to determine the adder output.
These output signals are calculated for each bit position i, as follows:
ARN i = T i * C i ▼ T^" • C^.
Overflow-Underflow signals are formed using sign bit and output
information. This is explained in greater detail in Section 2.7-1.3-
iiA/70 Section 2 ' 1 ' 1 ' 1 ' 6/6
2.7-1.2 Adder Timing
Figure 2.T-1-2 gives a timing chart for the adder. Time is given
in delay units in the left-hand column: 1 delay unit per NAND and 1/2 delay
unit per AND-OR diode matrix. The event column is subdivided into sum groups
1 and 2 and groups 3-8, (where group 8 contains bits 32-35)- The Sum in
groups 1 and 2 takes 2 delays more to form than the sum in 3-8 due to the
ripple-carry between second level lookahead units. .
5/5/69 Section 2.7-1.2 - 1/2
EVENT
Time in
Delays
Sum Group:
1 2
X
and Y appear at inputs j
1/2
1
8-1/2 C., s in S.G,
9-1/2 SUM output
Groups 1 and 2
+ 2 delays to set AR + k to
set 0V/UF
Figure 2.7.1.2 Lookahead Adder Timing
9/30/69
Section 2.7-1.2 - 2/2
2.7-1.3 Adder Overflow
In considering the overflow conditions of the adder there are
eight possible sign configurations which can occur:
B:
Augend :
+
*
+
*
-
-
D:
Addend :
+
+
-
-
-
-
A:
Sum:
+
-
+
-
+
-
00
01
10
01
10
11
*2 cases each
The second and fifth cases are the error conditions. Overflow and underflow
may be illustrated by two examples, respectively:
+5 0101
+h_ 0100
-7 1001
-5 1011
-k 1100
+7 0111
An overflow (or underflow) signal is given by:
0V = D«B.AvD.B.A
as determined by the sign bits of the Augend (B) , Addend (j)} and Sum (A)
5/5/69 Section 2.7-1.3 - 1/1
2-7.2 Signal Name Lists for the 32 Bit Adder Logic
2.7-2.1 32 Bit Adder Control Signals
ADD/E - Enable 32 bit adder
BAR/G - Gates DB to AR through ARN
7/8/69
Section 2.7.2.1 - 1/1
2.7-2.2 32 Bit Adder Internal Signals
ARNi
CINi/
CINJ
COUTi
PRi
Ti/
AR input bus - bit i. Output of 32 bit adder is
loaded onto this bus .
Carry into ith adder group, i = 3, . . ., 7
Inject carry into low order bit of 32 bit adder
Carry generated within ith adder group, i = 2..., 8
In adder this represents ability of a given bit
position to transmit an incomming carry.
If on, indicates a carry will propagate through ith
adder group, i = 3, ..., 8
Equivalence function (NOT - XOR) between DBi and DRi,
Used by both adder and Boolean logic.
7/8/69
Section 2.7-2.2 - l/l
2.7.3 32 Bit Adder - PL/1 Description
// EXEC PL1
//PL 1 .SYSPUNCH
//PL1 .SYSIN i)D
ADD32: PR
nCL ( AO
OCL AO
nCL (AR
OCL G
Gl
G2
G3
G4
G5
G6
G7
G8
G9
G10
Gil
G12
G13
G14
G15
G16
G17
G19
G2
G21
G2 2
G23
G2 4
G2 5
G2 6
G28
G29
G30
G31
G32
G33
G34
G35
Tl
T2
T3
T4
T5
T6
T7
TB
T10
Til
T12
T13
T14
T15
T16
T17
on SYsnuT=R
nc ( AnnF»c iMJt E
DF, CINJt FOVE,
nouT bit ( l ) ;
N,OB,DR,T ) (36 )
OVE, XDREt AonnuT)
XORF ) B I T ( 1 ) ;
(36) B
B I T ( 1
BIT( 1
BITd
B I T ( 1
BITd
BITd
BITd
BIT(1
BITd
BITd
BITd
BITd
BITd
BITd
BIT(1
BIT(1
BITd
BITd
BITd
BITd
BIT(1
BITd
BITd
BITd
BITd
BITd
BITd
BITd
BIT(1
BITd
BITd
BITd
BIT(1
BITd
BITd
BITd
BIT(1
BITd
BITd
BITd
BITd
BITd
BITd
BITd
BITd
BITd
BIT(1
BITd
BIT( 1
T( 1 ) EXT
E F I M F
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
OFFIMFD
OFF I NED
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
DEF INED
DEFINED
OFF INED
DEFINED
F F I N E D
DFFINED
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
D F F I N E
D E F I N F D
OFF I NED
DEFINED
OFF INED
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
DEF INED
DEFINED
DFFINED
DEFINED
DEFINED
DEFINED
DEFINED
DFFINED
BITd )
ERNAL,
■G pdsi
pnsi
PDSI
posi
POSI
PDSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
POSI
FXTERNAL ;
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
G
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
T
TION( 1
TION(2
TI0N(3
TI0N(4
TION(5
TI0N(6
TION(7
TION(8
TI0N(9
TION( 10)
TI0N( 1 1 )
TI0N( 12 )
TI0N( 13)
TION( 14)
TION( 15)
TION( 16 )
TI0N( 17)
TI0N( 19 )
TI0N(20)
TION(21 )
T I ON (22)
TION(23)
TION(24)
TION(25 )
TI0N(26)
TI0NK2R )
TI0N(29)
TION(30)
TI0N(31 )
T I ON (32 )
TI0N(33)
T I ON (34)
TION(35)
T I ON ( 1 )
TI0N(2 )
TI0N(3 )
TI0N(4 )
TION(5 )
TI0N(6 )
TI0N(7 )
TION(8 )
TION( 10)
TION( 11 )
T I ON (12 )
TION( 13)
TION( 14)
TION( 15)
TION( 16)
TION( 17)
11/5/70
Section 2.7.3 - 1/6
T19
T20
T21
T22
T23
T24
T2S
T26
T28
T29
T30
T31
T32
T33
T34
T35
DCL (
I
BIT(1 )
BIT(l)
BITd)
BITd)
BIT(1 )
BIT(l)
BIT(1 )
BIT(l)
BIT(1 )
BIT(l)
BIT(1 )
BIT(l)
BIT(1 )
BITd)
BlTd )
BIT( 1)
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
DEFINED
T P0SITI0N(19 ) t
T PnSITI0N(20) »
T P0SITI0N(21 )t
T POSITION (22) ,
T POSITION(23),
T POSITION(2^) t
T POSITION(25),
T POSITION(26>) »
T POSITION(2B ),
T POSITinN(29) »
T POSITION(30),
T POSITION(31) t
T POSITION(32 )t
T PGSITI0N(33) t
T POSITinN(3A)»
T POSITION(35) ;
DFFINED
/^INTERNAL VARIABLES,*/
CARRY PROPAGATF SIGNALS*/
Pl t P2,P3,P4,P5,P6,P7,P8,
CARRY INTO ITH ADDER
GROUP */
r ari (-3G2tC3G3tC3G4,C3G5,C3G6tC3G7,C3G8,
/"JrYI^O FOURTH POSITION OF ITH ADDER
C4GltC4G2 f C4G3,C4G4,C4G5,C4G6tC4G7,C4G8
GROUP*/
) BITd);
PUT LlSTt ■ ADD32 ENTERED' ) ;
/* CALCULATE THE CARRY TRANSMI
SIGNALS (G) */
if fovFI ADDFIXORE THEM
nn i=j*9+l to j-9+b;
T(I)=DB( I)6-DR( I) !-DB( I )f.DR( I);
Gd )=DB(I )&DR( I )?
END;
SIGNALS (T) AND CARRY GENERATE
DO J=0 TO 3;
THROUGH THF GROUP */
Pl = Tlf.T2&T3f,TA;
P2=T5F,T6&T7£T8;
P3 = T10f>Tll£T12£T13;
P4 = T14&TlSf,T16&T17;
P5=T19&T20&T21&T22;
11/5/70
Section 2.T.3 - 2/6
P6»T23£T24£T256T26
P7=T28£T29£T30£T31
P8=T32£T33£T34£T35
CIN3= C0UT4
lCniJT5f.P4
I CmiTft£P4£P5
|CniJT7£P4£P5£P6
lcnuT8£P4£P5£P6
ICINJ £P4£P5£P6£P'7£P8;
CIN4 = C0UT5
! cm iT6 cp s
|CniJT7£P5£P6
ICC11JT8£P5£P6£P7
ICINJ £P5£P6£P7£P8;
CIM5= C0MT6
|C0UT7£P6
|CGUT8£P6£P7
ICINJ £P6£P7£P8;
CIN6= C0IJT7
|C0UT8£P7
ICINJ £P7£P8;
CIN7= C0JT8
ICINJ&P8;
CIMH=CINJ ;
/-CALCULATE RIPPLE CARRY */
CIN2= COUT3|CIN3£P3;
CINla CCHJT2 lCriUT3£P2|CIN3£P2£P3;
C1G1=G2|T2£G3|T2£T3£G4|T2£T3£T4£CIN1;
C2G1=G3|T3£G4|T3£T4£CINI1;
C3G1=G4| T4£CIN1;
C4.G1=CIN1 ;
C1G2=G6|T6£G7|T6£T7£G8|T6£T7£T8£CIN2;
C2G2=G7|T7£G8|T7£T8£CIN2;
C3G2=G8 I T86CIN2 ;
C4G2=CIN2;
C1^3 = G11|T11£G12|T11£T12£G13|T11£T12£T13£CINI3;
C2G3=G12|T12£G13|T12£T13£CIN3;
C3G3=G13 I T13SCIN3;
C4G3=CIN3;
ClG4*G15|T15£G16|T15fiT16fiG17|T15£T166T17fiCIN4:
C2u4=G16|T16£G17|T16£T17£CIN4;
C3G4=G17 | T17£CIM4;
C4G4=CIN4;
C2G5=G21 I T21£G22 I T2 1£T22£C IN5 ;
C3G5=G22 |T22£CIN5;
C4G5=C IM5;
C1^ = G24|T24£G25|T24£T25£G26|T24£T25£T26£CIN6;
C2G6=G25|T25£G2^|T25£T26£CIN6;
C3G6=G26|T26£CIN6;
C«*G6 = C IN6 ;
^r7 = r^! T29r ' G3 ° |T29&T30r ' G31,T29&T3 °ST31£CIN7;
C?G7=G30|T30£G31|T30£T31£CIN7;
C3G7=G31 I T31&CIN7;
C4G7=CIN7;
riro = ^ 3 ! T33&G34,T33&T34SG35 ' T33 ^34£T35£CIN8;
C2G8 = G34|T34£G35|T35£CIN8; ^i=TB&-C4G2|-T8&CAG2;
&RN(10)3T106-C1G3[-.T106C1G3;
ARN(11)=T11£^C2G3HT11£C2G3,
ARM(12)=T12&-C3G3|-T12&C3G3;
ARN(13)=T13R-C4G3|-«T136C^G3;
/*GR0UP#4*/
ARN(14)=T14&-XlG4|-T14fXlG4;
ARN(15)=T156-.C2G4|--T15fX2G^;
ARN(16)=T16&-X3G4|-.T16fX3G4;
ARN117)=T17£-.C4G4|-.T17£C4G4;
/*GROUP#5 */
ARN(19)=T19C-C1G5|-T19&C1G5;
ARN(?0)=T20£r.C2G5|-.T20£C2G5;
ARN(21)=T216-C3G5j-.T21CC3G5;
ARN(22)=T22 6-C4G5|-.T22£C4G5,
/*GROUP >*6 */
ARN(23)=T23R-.C1G6|-.T23 6C.1G6;
ARN ( ? 4)=T24&-C2G6|-T24FX2G6;
ARN(25)=T2"'5R-«C3G6l-T25fiC3G6;
ARN(26)=T26K-X4G6|-T26fX4G6;
/*GROUP #7 */
ARN(28)=T2MRiClG7l-T28£ClG7;
ARN(29)=T29&-.C2G7|-»T296C2G7;
ARN(30)=T30&-C3G7|-T30&C3G7;
ARM (31 )=.T31.&-«C4G7|-.T31£C4G7;
/*GROUP *8*/
ARM 32 )=T32f^ClG8l-T32£ClG8,
ARM(33)=T33r.-C2G8l-T33fX2G8;
APN(34)=T34&-C3G8|--T34CC3G8;
ARN(35)=T35f.-.C4G8|r.T35 6C4G8;
IF AOnOUT THFN DO;
PUT SKIP(^);
CALL PRINT1 (DB, ' DB ' ) ?
CALL PRINTKORt'DR ' ) 5
CALL PR I NT 1 (Gt ' G ' ) »
CAI L PRlMTKTf 'T ' ) ;
CALL PRIMT1(ARN,'ARN »);
p l)T Fi)ITCGROUP','l'T'2«t'3',«4','5
,.. T F rnif.c™.TSili! , .couTi i cmiT2 f cnuT3 f coiiT4 f cnuT5.couT6.
cnuT7,cnuT«) „,,,,,.
(SKIP, AllO), 8 (X(2),B<1>>).
PUT EOITCPm-.Pl,P2.P3;i;*.«,P6,P7.P8)
PUTE0IT ,.irNi.;:!:c !;!.«ii^«t«i*,ciH 9 .c.-6,c™T,c,-.,
11/5/70 Section 2.7.3 _ ^/o
PUT
PUT
PUT
PUT
END;
FMD AD032
(SKIP, A
EDI T( 'C1G( I )=
(SKIP, A
EDIT( 'C2G( I )=
(SKIP, A
EDIT( 'C3G( I ) =
(SKIP, A
EDIT( «C4G( I )=
(SKIP, A
10) tfl (X(2) ,B( 1
,C1G1,C1G2,C1G3
1 ) , 8 ( X ( 2 ) , B ( 1
,C2G1,C2G2,C2G3
10) ,8 (X( 2) ,B( 1
) ) ;
C1G4,C1G5,C1G6,C1G7,C1G8 )
) ) ;
C2G4,C2G5,C2G6,C2G7,C2G8)
) ) ;
,C3G1,C3G2,C3G3,C3G4,C3G5,C3G6,C3G7,C3G8 )
10) ,8 (X(2) ,B( 1
,C4G1,C4G2,C4G3
10) ,8 (X( 2) ,B( 1
) ) ;
C4G4,C4G5,C4G6,C4G7,OG8 )
) ) ;
/*
11/5/70
Section 2.7.3 - 5/6
/*
ADDOVF: PROCUDDE, aov, aucg, csb, csh,
csw, RSYS);
DCLUDDE, AOV, AUCG, CSB, CSH, CSW,
RSYS ) BIT! 1 ) ?
DCL ( AR, DB, DR, LR ) ( 36 ) BIT(l) EXTERNAL;
PUT LISK'ADDOVF ENTERED');
/* CHECK FOR ADDER OVERFLOW */
AOV= 'O'B;
IF LR(9)£AUCG THEN AOV='l'B;
F t S E DO *
IF CSW THEN AOV = ADDE&(DR(l)&DB(l )£-ARU )
| DR ( 1 )£-*DB( 1 )&AR( 1 ) ) 5
IF CSH THEN AO V = ADDE £ ( DR ( 19 ) &DB ( 19 ) &-AR ( 19 )
|-,DR(19)&-DB(19)&AR(1) ) 5
IF CSB THEN AOV=ADDE£(DR(28)£DB(28 )£-AR(28)
|-,DR(28)&-DB(28 )f.AR(28) ) ;
end;
IF RSYS THEN AOV='0'B;
FND ADDOVF;
11/5/70 Section 2.7.3 - 6/6
2.8 Boolean/Shift Logic
The boolean logic accepts operands from the Distribution Regis-
ter (DR) and the Distribution Bus (DB), performs one of the boolean func-
tions, "AND", "OR", "XOR" or "EQU" on them, and gates the result into the
Logic Register (LR). The "OR" function is a combination of a data transfer
from the DB to the LR and from the DR to the LR.
The "XOR" and "EQU' functions are generated using parts of the 32
bit adder. The appropriate outputs are then gated from the adder to the LR.
The shift logic employs the permuter to make shifts in multiples
of 8 bits. The shift control first makes the highest multiple-of-8 bit
shift that it can without exceeding the desired shift. This is done using
the permuter and inhibiting the necessary bytes. After this has been done
the shift control shifts the DR to the LR shifting one bit at a time and
then returning the LR to the DR until the proper number of additional bits
have been shifted and the properly shifted result is in the LR. Since the
flags are not touched in the bit shifting, the shift control only will
shift flags in multiples of 8 (i.e. when the permuter is used).
6/18/69 Section 2.8 - l/l
■ 1 Boolean/Shirt Logic-Functional Description
2.8.1.1 Boolean Logic
As stated previously the "OR" function is a combination of a
data transfer from the DB and DR to the LR. The DR and DB are simultaneously-
gated in complemented form to the LR "in bus" (LRN) where they are dot-ored
and then gated into the LR.
The "AND" function is realized by a NAND gate, with a DR and a
DB input, in each position. The NAND outputs are dot-ored to the respec-
tive bit positions on the LRN. The LRN at this point is in complemented
form but this is compensated for in the output definitions of the LR.
Exclusive or's, "XOR" , and equivalences "EQV" are actually
generated in the 32 bit adder. The input gates generate the function
T. = DB. • DR. v DB. • DR.
ill 11
in every bit position. These T. signals are then routed to the boolean
logic as well as to the inner portions of the adder itself. In the
boolean logic, the T. signals are gated to the LRN inputs whenever the
XOR or EQV function is selected. The function that is formed is determined
as follows: If both operands are gated from the Operand Stack in 'true'
form, the EQV function is formed. If one of the operands is complemented
when it is gated from the OS, the XOR function is generated, since
X.YvX-Y = X.YvX»Y( alternately , X © Y = X ® Y ) .
Flag bits are treated the same way as the data bits in all
boolean operations. Extra logic is employed to generate the XOR and EQV
functions for the flags since none is provided in the adder.
U/T/69 Section 2.8.1.1 - l/l
1.1.2 Shift Logic
Logical left and right shifts take place between the DR and the
LR. Gates are provided to allow an operand in the DR to be shifted one bit
position to either the right or the left while being transferred from the
DR to the LR. During these shifts the positions of the flags are not
changed. Shifts of more than one bit are effected by gating the LR directly
back to the DR, then shifting another bit position. The TP control uses the
M counter to keep track of the number of shifts still to be performed.
For shifts of 8 bits or more the Permuter Logic is also used.
Before single bit shifting is performed, the DR is shifted the highest
number of bytes possible without exceeding the bit shift count in the M
counter. The flags are shifted along with the data bits. By using the
permuter for large shifts, the one-bit -at-a-time shifter never has to make
more than 7 shifts to complete a given shift command. If a shift of more
than 31 positions is specified, the cell is set to all zeros.
The multiple-of-8 shift by the Permuter is made in one permuta-
tion regardless of how many byte places are being shifted. Since the
permuter does not shift bytes "off the end" the shift logic must provide
the proper inhibit signals to the Permuter so that these bytes will be
masked out. Figure 2.8.1.2 gives a table showing how far to permute and
which bytes must be inhibited as a function of the shift direction and the
high-order two bits of the M counter (these bits give the number of bytes
to be shifted). Using this table the following equations can be developed:
1+/T/69 Section 2.8.1.2 - l/k
Left
Sh
ift
Right
Shift
Permute
Inhibit
Permute
Inhibit
MCT
MCT
Signal
Bytes
Signal
Bytes
PLO
-
PLO
-
1
PL1
3
PL3
1
PL2
2,3
PL2
0,1
1
1
PL3
1,2,3
PL1
0,1,2
Figure 2.8.1.2 - Permuter Control Signals for Byte Shifting
, , „ Section 2.8.1.2 - 2/k
U/T/69
PLO = LSP • M • M v RSP'M • M g
I BO = RSP • (M v M )
PL1 = LSP • M • M v RSP-M 1 • M g
PL2 = LSP * M • M v RSP*M • M 2
PL3 = LSP • M • M v RSP-I^ • M 2
IB1 = RSP • M v LSP • M • M
IB2 = LSP * M v RSP ' M ■ M
IB3 = LSP * (M v M )
where PLi = permuter left i bytes; RSP = right shift; LSP = left shift
However, referring to the equations for PLI and IB2, and PL3
and IB1 some simplification can take place if we let
IBPL21 = RSP • M
1
IBPL13 = LSP
M„
M,
M,
1 2
where IBPLij = is a control line to the permuter which inhibits byte i
and also permutes left j bytes.
These signals go directly to the Permutation Control
Logic and turn on the appropriate permute and inhibit signals. This
means that the remaining parts of the shift equations can be written
as follows :
PLO = LSP
M
1
PLI = LSP • M
1
PL2 = LSP • M
1
M v RSP.M
M 2 v RSP»M
M,
M,
IBO = RSP • (M v M )
IB1 = RSP
M,
PL3 = RSP • M
1
M,
IB2 = LSP • M,
IB3 = LSP • (M v M )
Using these equations the permutation and inhibit signals are
decoded from the M-counter and the inputs from the TP control and are
then routed to the permuter. The rest state of the permuter is disabled
during this cycle when the operand is being shifted in steps of 8.
Double words are not shifted, primarily because of the problems
involved in masking bits shifted out of one half of the double word
into the proper positions in the other half.
11/16/70
Section 2.8.1.2 - 3/U
When bytes or half-words are to he shifted they are initially
loaded into the DR by the Permuter, right or left justified depending
on the direction of the shift. The cell is placed so that the bits will
be shifted "off the end" of the DR and not into the "unused" portion.
During these loadings the "unused" portion of the DR is set to zero by
inhibiting the proper permuter bytes.
The Shift Logic contains several sections of "testing" logic
to detect certain conditions of which the TP control must be aware. MZER
is "one" if the M counter and all the high order bits of the shift count
(which is in the right-most bytes of the IR) are zero.
Section 2.8.1.2 - k/k
h/1/69
2.8.2 Signal Name Lists for the Boolean/Shift Logic
2.8.2.1 Control Signals
AND/E/
BLR/G/
CTD/E/
CTMHZ
CTMLZ
CTU/E/
DLR/G/
EQV/E/
LS/E/
LSP/E
MCT/E/
MZER
0R/E/
RMCT/
RS/E/
RSP/E
X0R/E/
AND enable DB • DR -* LR
Gate DB -♦ LR
Enable count down for M counter (MCT)
Output Signal - High Order 2 bits of the MCT =
Output Signal - Low Order 3 bits of the MCT =
Enable count up for M counter (MCT)
Gate DR-^LR
Enable equivalence
Enable - left shift
"left shift" to be made by shift control using permuter
Enable M- counter
Output - M-counter and high order bits of IR all = 0.
0R enable DB v DR -^ LR
Reset M-counter
Enable - right shift
"right shift" to be made by shift control using
permuter
Exclusive 0R unable DB $ DR -f LR
6/18/69
Section 2.8.2.1 - 1/1
2.8.2.2 Internal Signals Used by the Boolean/Shift Logic
CTD
CTU
DBi
DRi
IBi/
IBPL13
IBPL21
IRi
LRi
LRi/G
LRLi
LRNi
MCTi
PLi/
Ti/
XRV/E
When on, M counter counts down
When on, M counter counts up
Distribution bus - bit i
Distribution register - one of the inputs for
shift - bit i
Inhibit signal for byte i in permuter output
Inhibit byte 1 - permute left 3
Inhibit byte 2 - permute left 1
Instruction Register - bit i
Logic register - output of shift/boolean - bit i
LR input gating signal: LRN -* LR - byte i
LR latch, must be for LRN -^ LR - byte i
Input bus to logic register - bit i
M counter - bit i
Permute left i bytes
Adder Output - equals EQV of DR and DB - bit i
Exclusive or or equivalence enable (goes to permuter)
11/5/70
Section 2.8.2.2 - l/l
2.8.3 Boolean/Shift Logic - PL/l Description
/ / E X F C P L 1
I//PL 1 .SYSPUNCH
//PL I. SYS IN do
KOULSHFT :
ANDF,
IBPL13,
orf,
IB,
DCL
no SYsni)T = R
PROC (
CTDF,
IBPL21 ,
RMCT,
PL) ;
( ANDF,CTDE,
IBPL13,
MCTF,
CTMH2 ,
LRMCTG,
RSF,
CTMHZ,
IBPL21,
ORE
DCL
DCL
CTMLZt
LSF,
RSPEt
CTMLZ»
LRMCTG,
RMCT,
CTUE,
LSPF,
CTUE,
LSE,
RSE,
(IB, PL ) (0:3 ) B I T (
(DB,DR,LR,LRN) (36) BIT( 1 )
(CTU,CTD) STATIC BIT( 1 ) ,
MCT( 1:5) B I T ( 1 ) STATIC;
BI T ( 1 ) ;
EXTERNAL ;
(CTLZ,CTHZ,CTZ )BIT( 1 ) ,
DLRG,
MCTE,
DLRG,
LSPE,
RSPF)
BIT( 1
LRN-'O'B;
/*
IF RSF T H F M
on 1=0 to 3;
ORAW ING
oo;
07-1*/
00 J=I*9+1 TO 1*9+8;
end;
END;
LRN( J + l )=LRN( J + l ) | OR ( J ) ;
00 1=9 TO 36 BY 9;
LRN( I )=0R ( I ) ;
LRN(1)='0'B;
END;
E N ;
IF LSF THEN 00;
00 1=0 TO 3;
on j=i*9+i Tn 1*9+8;
LRM( J-l )=LRM( J-l ) I 0R( J ) ;
FND;
FNO;
00 1=9 TU 36 BY 9;
LRN( I )=0R ( I ) ;
C
END;
IF ANOE T
END;
LRN(35 )= '0' B;
"ALL PR INT1 (LRN, » LRN ' ) ;
/PRESET COUNTER, SELECT COUNT UP n
/ :!: nuAIJTMr. 1 7 _ O ;i
*/
iHEN LRN( *)=0R( *) 8DB( *) ;
/- :: CALCULATE CONTROL INFORMATION DRAWING 17-1
CTMHZ=-.MCT( 5 )£^MCT(4) ;
CTMLZ=-.MCT(3) f.-.MCT( 2) £-.MCT( 1 ) ;
/* LOAD M-COUNTFR FROM THE LR DRAWING 17-1 *,
IF LRMCTG THEN DO 1=1 TU 5;
MCT ( I )=LR ( 1+30) ;
END;
T COUNT UP OR DOWN, AND COUNT */
/* DRAWING 17-2 */
*/
IF RMCT THEN MCT='0'B;
IF CTUE THEN 00;
CTU=« 1 'B;
CTD= 'O'B;
END;
11/5/70
Section 2.8.3 - 1/2
IF CTDE THEN DO;
CTD=' l'B;
ctu= , o , b;
END;
IF MCTE THEN CALL
mctr;
/* nETFRMINE BYTF SHIFTING
/* DRAWING
FOR PERMUTER
17-1*/
*/
IBPL21=RSPE6MCT(1 )£MCT(2) ;
IBPL13 = LSPEf.MCT(l)f»MCT(2) ;
PL(0)=-MCT(1 )£-,MCT(2)£(LSPE|RSPE);
PL (1 )=LSPE&-MCT( 1)£MCT(2) ;
PL(2)=(MCT(1 )&^MCT(2) ) £ ( LSPE I RSPE ) ;
PL(3)=RSPEC-.MCT(1)F.MCT(2) ;
IB(0)=RSPE&(MCT(1) |MCT(2) >!
18(1 )=RSPEf,MCT( 1 ) ;
IB(2)=LSPFCMCT(1 ) ;
IB(3)=LSPEf>(MCT(l) |MCT(2) ) ?
DLRG = DLRGlORE";
u i — r p • p k ( ) C *
DCL (M-tl) FIXFD BIN (5,0), MS BIT(5),0NE FIXED BIN;
PUT LIST( 'MCTR ENTERED' ) ;
DNE = 1 ;
DO 1=1 Tn 5;
if mct(i) then *m*m+2**(5-i ) »
end;
IF CT.U THEN M = M + l;
IF CTD THEN M=M-1;
IF M<0 THEN MCT='1'B;
FLSE on; ,
MS = M;
on 1=1 to 5;
MCT( I )=SDBSTR(MS,I ,DNE) *,
END;
END;
END mctr;
END BOOLSHFT;
/*
11/5/70
Section 2.8.3- 2/2
2 ' Q ' k Boolean/Shi ft Logic - Logical Descrip t.i nn
2 ' 8 - I+ - 1 Basic Boolean/Shift Logic
The basic Boolean/Shift Logic is used to perform the actual
boolean and shifting operations on data. This logic is really cuite
straight forward. It consists of various sets of gates each of which
can be operated separately. Each set has 32 bit positions and the
corresponding bit positions of each set are dot-ored together to form
a 32 bit input bus (LRNi) to the Logic Register (LR). The flag
positions of the input data are handled separately and are also gated
to their corresponding positions in the LRNi.
The various boolean operations are accomplished as explained
a Section 2.8.1.1 and are activated by turning on the necessary gate
Signals, i.e. XOR/E, EQV/E, AND/E, and OR/E. The shifting operations
are performed between the DR and the LR by using a simple gate, but
gating each input bit position to the corresponding output bit position
which is one place to the right or left. In the case of a right or
left shift by one bit, the flags are gated straight through from the
DR to the LR without changing position.
11/17/69 Section 2.8.1..1 - 1/!
2.8.14.2 M-Counter Logic
The M- Count er , as shown in the TP Logic Book, drawing 17-2,
is a double rank, up-down counter with a combination of ripple and
lookahead carry logic. The information is stored in the upper rank and
can be retrieved in true or complement form. The choice of up or down
counting is made by setting the direction flip-flop to either CTU or
CTD by means of the CTU/E or CTD/E control signals, respectively.
As in a normal double rank counter, the upper rank, which
contains the current state of the counter, is gated into the lower rank
of the counter during the time that the M Counter is not counting (i.e.
MCT/E = l). The output of the lower rank, in turn, is sent to the
carry propagation logic which in turn decides what the state of the
M-Counter will be the next time that MCT/E is activated. However, since
MCT/E is not active at this time, this result sits at the input of the
upper rank until such time as MCT/E goes to (i.e. MCT/E = l). As
soon as this happens, the gates to the lower rank close. This ensures
that the inputs (and thus the outputs also) of the carry propagation
logic will not change. One collector delay later, the output of the
carry propagation logic is gated into the upper rank. Thus, provided
that there is a sufficient length of time for the carry propagation logic
to have settled down after the previous count, a new count value will
appear at the output of the "M-Counter 1 collector delay time plus 1,
260 flip-flop storage time after MCT/E goes to 0.
The most complicated part of the M-Counter logic is the carry
propagation logic. It is also the key to the whole M-Counter operation.
Its inputs consist of the 5 data signals from the lower rank of the
counter (in both true and complement form), the CTU and CTD signals which
determine whether we will add 1 or subtract 1, and the MCT/E signal which
is inverted and then used to gate the output of the carry propagation
logic into the M-Counter' s upper rank.
As mentioned earlier, the carry propagation logic uses both
ripple and lookahead carry propagation techniques. The lookahead is
used between bits 1 and 2 and between bits 3, 1+, and 5 where bit 1 is
10/30/69 Section 2.8.U.2 - 1/7
the high order bit and bit 5 is the low order bit. A ripple carry
i
is performed between bits 2 and 3.
The carry propagation logic itself can be thought of as two
sets of gates which if both are turned on, cause the corresponding bit
of the counter to change state.' A simplified logic diagram is shown in
Figure 2. 8. h. 2/1. The second gate is activated when the count enable
pulse is activated while the first gate is activated by a carry (or
borrow) from the previous lower order stage. Note that the inputs to
the gate system are arranged so that if either gate is off, the bit
represented by the upper rank flip-flop will not change. As can be
seen, therefore, the new state will be determined by what appears on
the second gate line at each position of the counter.
In actual fact, the "carry gates" at each counter position
are determined by 2 NAND circuits which are dot-ored together, one
NAND being activated when the M-Counter is counting up (CTU = l)
and the other NAND being activated when.the M-Counter is counting down
(CTD =1). The single exception to this scheme is the low order bit
position, MCT5, which always changes state when the MCT/E signal goes
to regardless of whether CTU or CTD is 1.
As an example, in the case of a count up, MCTU will change
state only if the next lower order position, MCT5, was a 1 during the
previous counter state. This is due to the fact that if a 1 is added
to the MCT5 position when it is already 1, a carry into position MCTU
will result which in turn will cause MCTH to change state. On the
other hand in the case of a count down, MCTU will change state only if
the next lower order position, MCT5, was a during the previous counter
state. This is due to the fact that if a 1 is subtracted from the MCT5
position when it is in the state, it will have to borrow from the
MCTU position which in turn causes MCTU to change state. The logic used
to generate the "carry gate" for position k is shown in Figure 2.8.U.2/2.
Note that in Drawing 17-2 of the TP Logic Book the MCT 5 and MCT5 signals ar
actually taken from the lower rank flip-flops of the M-Counter.
For the MCT3 position things become slightly more complicated.
In the first place the conditions which determine whether or not MCT3
changes state depend on both of the two lower order positions, MCTU and
MCT5. In a count up they must both be 1 and in a count down they must
10/30/69
Section 2.8.U.2 - 2/7
MCTi
MCTi
MCTi MCTi
Figure 2. 8, k, 2/1 - Simplified Logic for One Position of the M-Counter
12/16/69
Section 2.Q.U.2 - 3/7
CTU
MCT5
CTD-
MCT5
lt CARRY GATE
FOR POSITION 4
Figure 2
U.2/2 - Carry Gate Logic for Position MCTU
12/10/69
Se
ction 2.8A.2 - U/7
both be in order to produce either a carry into or a borrow from the
third position. In Figure 2.8. k. 2/3 the logic used to generate the
3rd position "carry gate" is shown. Note that there are actually 2
"carry gates", one for each previous position, and that both must be on
in order to cause a change of state. Each of these "carry gates" is
produced in the same way as the "carry gate" for position MCTU. In fact
one of them is actually the same signal as was used in the MCTU position.
It can be seen from the above description, that if we wanted
to use full iookahead, each higher order position of the counter could
be constructed by adding an additional "carry gate" and AND'ing it along
with all of the previous gates. However this method would create the
need for NAND circuits with more and more inputs and since there is no
need for the high speed which can be achieved with a full Iookahead counter,
it was decided to save logic by using a ripple carry between the 2nd
and 3rd positions.
Using a ripple carry simply means that in the 2nd M-Counter
position, instead of looking at the contents of all 3 lower order
positions we will simply sit around and wait until the previous logic
has decided whether or not the immediately preceding position, MCT3,
will have to change state. It is called a ripple carry because if
every counter position acted this way we could only find out the new
count one bit position at a time beginning at the low order end of the
counter, and the new count would "ripple" through to the high order
end one bit position at a time.
If it turns out that the MCT3 position does change state
then one of the outputs from the "carry gate" circuits (labelled A
and B in Figure 2.8.U.2/1) will be '1' and the other will be '0'.
B will be *1' if MCT3 is going from 1 to and A will be '1' if
MCT3 is going from to 1. If no change in MCT3 is to occur, both
A and B will be 0. Thus the generation of the carry gate for the MCT2
position can be accomplished by the logic shown in Figure 2.8.U.2/H.
Finally the two carry gates for M-Counter position 1 can be
generated exactly the same way as for position 3 except that this time
the results from position 2 and the ripple results from position 3 are used.
10/30/69 Section 2.8.U.2 - 5/7
MCT3
>
MCT3
>
CTU
MCT4
CTD 1
MCT4
MCT5
>
r>
MCT5
r>
Figure 2.8. U. 2/3 - Carry Gate Logic for Position MCT3
12/10/69
Section 2. 8.U. 2 - 6/7
CTU
A
O
CTD
B
CARRY GATE
FOR MCT2
Note: the A and B inputs come from the positions indicated
in Figure 2. 8. h. 2/1.
Figure 2. 8. k. 2/h - Carry Gate Logic for "Ripple Carry"
to Position MCT2
12/10/69
Section 2.8.U.2 - 7/7
2.9 Algebraic /Logical Compare Logic
The algebraic/logical compare logic in the TP is used to make
comparisons between byte, halfword or word size cells. If it is neces-
sary to compare two floating point or BCD numbers, this is done using
the Arithmetic Unit.
Generally speaking the comparisons are made by subtracting and
then comparing the result with zero. Therefore the hardware is set up to
test the AR for zero. Various groups of bits are tested depending on the
cell size and the type of comparison. The sign is also checked to set
the "greater" and "less" flip-flops.
The compare is usually done in two cycles. During the first
the "greater" or "less" flip-flops are set according to the signs and
the EQ is set to 1 if the AR is zero. In the second cycle, both the
"greater" and "less" flip-flops are reset to zero if the EQ flip-flop
was previously set to one.
In the following section the various hardware descriptions are
given. The actual sequencing of the various kinds of comparisons is
given in Section U.3.2.1.
I+/7/69 Section 2.9 - l/l
2-9.1 A/L Compare Logic - Functional Description
The A/L Compare Logic is used to perform algebraic and logical
comparisons between two numbers. In an algebraic compare, the numbers
are treated as 2's complement numbers with the highest order bit being
the sign bit. In a logical compare, the numbers are treated as unsigned
positive numbers.
The logic for the A/L compare is shown in the 05-series of
drawings in the TP Logic Book. In order to understand this logic, it is
necessary to know how the control logic uses it. The basic comparison
method, as previously mentioned in Section 2.9, uses a subtraction. In
certain cases this is not necessary since the results of the comparison
can be determined directly from the high order bits of the two numbers when
these are different. When the sign bits are the same , however , the subtraction must
be performed and the proper indicator settings determined from the sign
bit of the result.
Since the cells are right justified and may be either bytes, half-
words, or words, the actual sign positions which are used will depend on
the cell size. Only the position corresponding to the highest order bit
of the present cell size cell is used.
Figure 2.9-1/1 shows a table giving the algebraic and logical
interpretation of the various bit strings in the set of ii-bit binary
numbers. Note that if two numbers are interpreted as algebraic they can
always be compared by 2 ' s complement subtraction and observation of the
sign of the result. This will also hold for logical numbers if both numbers
have the same first bit . It will not work if the numbers have opposite
high order bits. However, it is exactly this situation which can be pre-
dicted without subtraction. In the case of logical numbers the
operand with the '1' in the first bit position is larger while in the case
of algebraic numbers the operand with the '0* in the first bit is larger.
Figure 2.9.1/2 gives the indicator settings for the situation in which
both operands have the same high order bit.
11 A/TO Section 2.9-1 - lA
. Bit Logical
Algebraic String Interpretation
Interpretation coring
-1
-2
-3
-5
-7
-8
7
5
3
2
1
1110
1101
_u iioo
_6 1° 10
1001
1000
mi 15
ik
13
12
11
10
1011
0111
g 0110
0101
li 0100
0011
0010
0001
0000
9
8
7
Figure 2.9.1/1 - Algebraic and Logical Interpretation
of U-Bit Numbers
Section 2.9-1 - 2 A
Operand Stack:
^TOP
Compare: A — B
First gate B -> DR (true); gate A - DB (complemented)
Second Form B - A; gate result into AR
Result in
AR
A
B
Compa
y-p A 1 cr
AR >0 (+)
small +
large +
<
Compare I
<
>0 ( + )
large -
small -
<
<
=0 ( + )
(B=A)
=
<0 (-)
large +
small +
>
>
<0 (-)
small -
large -
>
>
Figure 2.9.1/2 - Setting the GT and LT Flip-Flops When the First
Bit of Both Operands is the Same
7/8/69
Section 2.9.1 - 3/I4.
The 05-2 drawing shows the equality compare circuit. After
the subtraction this circuit checks for zero in the AE. Note that the
cell size signal is used to control which bits are checked. If all of
the applicable bits are zero, the EQ flip-flop is set.
Note that even if the EQ flip-flop is set, one of the GT or LT
flip-flops will still be set on the basis of the contents of the AR and
DR sign positions. Therefore in this case the RGL/E signal can be turned
on and if EQ is on, the GT and LT flip-flops will be reset.
The flag match logic is shown in Drawing 05-3- It is very
simple and merely compares the flags on the DR and DB before the sub-
traction takes place.
The match checking is effected by a gated "equivalence" between
the flags of the top and next-to-top operands in the OS. However, since
the second from the top operand was gated out in complement form, an
"exclusive or" is performed rather than an equivalence; the results are
the same, though, since:
FM = A ¥ B = A B v A B and if C is substituted for A:
FM = CB v CB
If any pair of flags do not match, the FM indicator is not set.^ The final
step for the main control in these instruction sequences is to "pop" the
top cell out of the OS.
Section 2.9-1 - **A
7/8/69
2.9-2 Signal Name Lists for the A/L Compare Logic
2.9-2.1 Control Signals
AUC/G
CPA/E/
CPH/E/
CPL/E/
FLM/E/
RGL/E
RSYS/
TZ/E/
Gate AU condition code
Algebraic compare enable
Hollerith compare enable
Logical compare enable
Flag match enable
Reset GT and LT if EQ = 1
Reset system
Test zero enable
6/18/69
Section 2.9-2.1 - l/l
2.9.2.2 Internal Signals Used by the A/L Compare Logic
ARi - Arithmetic Register - bit i
CSB - Cell size is byte
CSH - Cell size is halfvrord
CSW - Cell size is word
DBi - Distribution bus, from the permuter - bit i
DRi - Distribution Register
EQ - Equality flip-flop
FM - Flags of cells in DR and DB match
GT - Greater than flip-flop
LT - Less than flip-flop
6/18/69 Section 2.9-2.2 - l/l
2.9.3 A/L Compare Logic - 1'L/j Description
EXFC PL 1
ML 1 .SYSPUMCH HO SYSnilT=H
•■I i . sys in do *
Compare: prdu aucg, cpae, cphf, cplf
CSB * csh, C sw, eo, GTf
IT, RCOMFF, RFOS, ROLF, SGTSvSLTS,
I C t I |
DCLUUCG, CPAF, CPHF, CPLF, csh, C SH
""! E °' GT ' LT, RCOMFF,
RFOS,RGLF,SGTS,SLTS,TZF) BIT(l) ;
DCL( AR,I)K,LK ) ( 36) BIT(l) FXTFRNAl;
DC I (I»ZFR0)FIXFD KIN ;
IF RCDMFF THEM LT,GT=»0«R;
IF FQRRGLE THFN GT= ' 1 ' B;
IF I_R(27)£AUCG|SLTS THFN LT='1'B;
IF DR(9)f.AlJCG|SGTS THFN GT=»l'ft;
IF ( AR (28 I&CSB&CPLE
I AR( I )f,CSWf.(CPLF ICPAE)
I AR( 19)r.CSH£(CPLE ICPAE)
I A R ( 3 5 ) £C P H F )
THEN GT=« 1«B;
IF (-AR(28 )SCSBSCPLF
l-AR( l >fi(CPLE|CPAE)6CSW
l-AR( 19)fv(CPLE|CPAE )£CSH
I -«AR ( 35 )SCPHE )
THEN LT= • 1 • B;
IF RCOMFFIRFOS THEN FO='l'B;
IF -iLR ( 3.6 )-£ AUCG THEN EO= , l , B;
IF (CPLEICPAEITZE) THEN DO;
ZFRO='0'B;
IF (CSB ICSHICSW) THEM DO 1=28 TO 35;
ZFRO=ZERO|AR( I ) ;
END;
IF (CSHICSW) THEN 00 1=19 TO 26;
ZFRO=ZERO| AR( I ) ;
END;
IF CSW THEN DO 1 = 1 TO 17 WHILF (I-, = 9);
ZFRO = ZFRO | AR ( I ) ;
END;
I F -iZFRO THFN F0= • 1 ' B;
END;
FND COMPARE;
11/5/70 Section 2.9.3 - l/l
2.10 Cell Size Generator
The cell size generator is used to drive the cell size sig-
nals for the various logic and control groups. These output signals
consist of true and complement forms of CSB, CSH, CSW and CSD which
indicate byte, halfword, word and double word cell sizes, and CSBH
which indicates that the cell size is either a byte or a halfword.
Only one of the first four signals will be active at any one time and
it is possible that none of them may be on.
There are four possible determinants for the cell size to be
activated:
1) the field designator bits when interpreted as a cell
size or immediate address field selector (selector state 00) ,
2) the field designator bits when interpreted as a number type
(selector state 01),
3) the contents of the control cell size flip-flops
(selector state 10), or
h) the four individual cell size control signals (selector
state 11 ).
At any given time the decoding method actually chosen is deter-
mined by a four state selector. If the control cell size signals are
chosen, and no control cell size signal is turned on, none of the signals
will be activated. At most only one of the control cell size signals will
be on at any one time.
In addition to the cell size signals, this block of logic also
produces the signals which indicate the number type for arithmetic instruc-
tions. The rest of this section gives a more detailed explanation of the
various parts of the cell size generator.
6/19/69 Section 2.10 - l/l
2.10.1 Cell Size Generator-Functional Description
The main output bus of the Cell Size Generator consists of five
signals obtained by dot-or'ing the outputs of several input gating
circuits. Each gating circuit transmits data from a different source
which is decoded to activate the proper signal(s). The gate signals
for the gating circuits are generated by means of decoding logic
attached to a selector (see Figure 2.10.1). Two flip-flops are set to
one of four possible states by four different control signals. The
state is then decoded by a group of NAND's. If the fourth state is
set (ll), all of the gates are turned off.
Note that the 00 state of the selector is actually used to
activate three possible signals, IMCSS/E, NICSS/E, and CSS/E. These
three signals distinguish two possible decodings of the IRT and IR8 bit
positions which contain the field designator code. In the 00 state,
if there is an immediate address option for the instruction and this
option is used, then IMM = 1, IMCSS/E = and the following decoding
is used:
IRT
IR8
Cell Size
Immediate Field
halfword
value field
1
halfword
link field
1
word
link-value field
1
1
halfword
segment name field
If IMM = then NICSS/E = and the decoding is strictly
according to cell size and is as follows:
RT
IR8
Cell Size
byte
1
halfword
1
word
1
1
double word
11/5/70 Section 2.10.1 - 1/3
MM
IMM
>
IMCSS/E=OCMMM
NICSS/E =00* IMM
CSS/E = 00
r>
CSF/G = 10
:3
NCS/E = 01
SNCS/S
NOTE: THE 11 STATE CAUSES ALL GATES TO BE INACTIVE
FIGURE 2.10.1
CELL SIZE GENERATOR GATE SELECTOR
5/22/69
Section 2.10.1 - 2/3
Note that 01 and 10 codes are the same whether I MM is on or off.
Therefore these decoders are driven by the CSS/E signal. IMCSS/E
and NICSS/E are used to drive the proper cell size signals when IMM = 1
and IMM = 0, respectively.
If the NCS/E signal is turned on, (i.e. the selector state
is 01) the cell size signals are determined by the IR7 and IR8 bits
which contain a field designator indicating a number type. One of
the number type signals will also be turned on in this case. The code
is as follows :
IRT
IR8
Number Type
Cell Size
short fixed
halfword
1
long fixed
word
1
floating point
doubleword
1
1
hollerith
doubleword
If the CSF/G signal is turned on, (i.e. the selector state
is 10) the cell size signals are determined by the control cell size
flip-flops. The coding is the same as that used for the cell size
field designator case (lMM=0) except that two control flip-flops
take the place of IR7 and IR8. These flip-flops are set in a manner
similar to the selector used in the gating signals.
If the selector is in the fourth state where the three
gating signals are off, the cell size signals may be set by using one
of the control cell size signals CCSB/E, CCSH/E, CCSW/E, or CCSD/E
which will activate the proper cell size signals.
11/10/70 Section 2.10.1 - 3/3
2.10.2 Signal Name Lists for Cell Size Generator
2.10.2.1 Control Signals
CCSB/E Enable byte output line
Enable double word output line
Enable halfword output line
Enable word output line
Set cell size control flip-flop to byte
Set cell size control flip-flop to double word
Gate control flip-flops to CS generator
Set cell size control flip-flop to halfword
Enable decoding of field designator bits as a cell
size independent of immediate option
Set cell size control flip-flop to word
Immediate operand - cell size option
Control FF indicates instruction uses immediate
option
Enable decoding of field designator bits as a
number type
No immediate operand - cell size option
Set CS gate selector off for control signal select
Set CS gate selector for CSF/G
Set CS gate selector for CSS/E
Set CS gate selector for NCS/E
CCSD/E
CCSH/E
CCSW/E
CSBF/E
CSDF/E
CSF/G
CSHF/E
CSS/E
CSWF/E
IMCSS/E/ -
IMM
NCS/E
NICSS/E/ -
SCSC/S
SCSF/S
SCSS/S
SNCS/S
7/7/69
Section 2.10.2.1 - l/l
2.10.2.2 Internal Signals Used by Cell Size Generator
CSB
CSBH
CSD
CSH
csw
FPT/
H0L/
IRi
LFX/
SFX/
Cell size is byte
Cell size is byte or half word
Cell size is double vord
Cell size is half word
Cell size is word
Floating point (CSD)
Hollerith ( CSD )
Instruction Register, bit i
Long fixed (CSW)
Short fixed (CSH)
6/19/69
Section 2.10.2.2 - 1/1
2.10.3 Cell Size Generator - PL/1 Description
/ FXFC PL1
/PL 1 .SYSPUNCH DO SYSOUT=B
/PL1.SYSIN DO *
CSGFM: PROC( CCSBF, CCSDE, CCSHE, CCSWE, CSB,
CSBEE, CSBH, CSD, CSDEE, CSFG,
CSH, CSHFE, CSSE, CSW, CSWFF,
FPT, HDL, IMM, LFX, NCSE,
SCSCS, SCSFS, SCSSS, SFX t SNCSS);
OCL (CCSRE, CCSDE, CCSHE, CCSWE, CSB» CSBFEt
CSBH, CSO t CSDFE, CSFGt CSH,
CSHFE, CSSE, CSW, CSWFE, FPT,
HDL , IMM, LFX, NCSE, SCSCS,
SCSFS, SCSSS, SFX, SNCSS) RIT(l);
nCL IR(36) BIT < 1 ) external;
OCL (GSEF, /* GATE SELECTOR FLIP-FLOP OUTPUT */
CSCEE) /* CELL SIZE CONTROL FLIP-FLOP OUTPUT */
(1:2) BIT( 1 ) STATIC,
(IMCSSE, /* CELL SIZE DETERMINED BY IMM OPTION */
NICSSE) /* CELL SIZE DETERMINED WITH IMM OPTION OFF */
BITU) ;
/-RESFT CELL SIZE SIGNALS TO ZERO-/
CSB, CSBH, CSH, CSW, CSD ='0'B;
SFT_SELECTOR:
/* SET CELL SIZE GATE SELECTOR FLIP-FLOP STATES */
/* SET GATE SELECTOR FOR CSSE */
IF SCSSS THEN DO;
GSFF( 1 )='0'B;
GSFF(2 )= 'O'B;
END;
/* SET GATE SELECTOR FOR NCSE */
IF SNCSS THEN DO;
GSFF( 1 )='0'B;
GSFF(2)='1»B;
END;
/* SET GATF SELECTOR FOR CSFG */
IE SCSFS THEN DO;
GSFFd ) = • l'B;
GSEF (2 )= 'O'B;
END;
/* SET GATE SELECTOR OFF FOR CONTROL SIGNAL SELECT */
IF SCSCS THEN 00;
GSFF( 1 )=• 1 «B;
GSEF (2 )= ' 1 »B;
END;
11/5/70 Section 2.10.3 - lA
FCnr)F 7* F CHEjK R iF FIELD DESIGNATOR BITS ARE TO BE DECODED AS 'A CELL
SIZE INDEPENDENT OF IMMEDIATE OPTION */
CSSE = -.GSFF(1 )&-GSFF(2) ?
NICSSE=CSSF&-IMM;
IMCSSF = CSSEf.IMM;
/* CHECK IF CONTROL FLIP-FLOPS ARE TO BE GATED TO CELL
GENERATOR */
CSFG=GSFF(1 )G-.GSFF(2) ;
/-CHECK IF FIELD DESIGNATOR BITS ARE TO BE DECODED AS A
NUMBFR TYPE */
NCSE = -GSFFU )&GSFF(2) ;
cct fSCFFs
"/-SET CELL SIZE CONTROL FI IP-FLOP STATES *./
/* ENABLE BYTE HOTPOT LINE */
IF CSBFE THEN DO;
CSCFF( 1 ) = '0«B;
CSCFF(2)='0'B;
END;
/♦.ENABLE HALFWORD OUTPUT LINE */
IF CSHFE THEN DO;
CSCFF( 1 ) = '0'B;
CSCFF(2)= , 1'B;
end;
/* ENABLE WORD OUTPUT LINE */
IF CSWFE THFN DO;
CSCFFd ) = ' l'B;
CSCFF(2 )='o«b;
END;
/* EMABLF DOUBLE WORD OUTPUT LINE */
IF CSDFE THEN DO;
CSCFFd ) = »1'B;
CSCFF(2 ) = • 1 'B;
END J
11/5/TO
section 2.10.3- 2 A
SET_CFLL_SIZES:
/* SET CELL SIZES */
/* CHECK IF CELL SIZE IS TO BE DETERMINED INDEPENDENTLY
OF THE IMMEDIATE OPTION */
IF CSSE THEN DO;
CSH = -»IR(7)£IR(8) ;
CSBH = -IR(7) ;
CSW=IR( 7)fi-IR(8) ;
end;
/* CHECK IF CELL SIZE TO BE DETERMINED BY THE IMMFDIATE
OPTION ON #/
IF IMCSSF THEN DO;
CSH = MR(7)&-.IR(8) |CSH;
CSW= IR(7)6 IR(8) ICSW;
END;
/* CHECK IF CELL SIZE IS DETERMINED BY IMMEDIATE OPTION OFF*/
IF NICSSE THEN DO;
CSB=iIR(7)S-iIR(8) ICSB;
CSD= IR(7)S IR(8) ICSD;
END;
/* CHECK IF CELL SIZE IS TO BE DETERMINED BY CFLL SIZE CONTROL
FLIP-FLOPS */
IF CSFG THEN DO;
CSB = -.CSCFF(1)&-CSCFF(2)|CSB;
CSH = -.CSCFF( 1 )6 CSCFF(2) ICSH;
CSBH= CSCFFd ) ICSBH;
CSW= CSCFF( 1 )S-.CSCFF(2) ICSW;
CSD= CSCFF(1)G CSCFF(2) ICSD;
END;
/* CHECK IF FIELD DESIGNATOR BITS ARE TO BE DECODED AS A
NUMBER TYPE #/
IF MCSF THEN DO ;
CSH = -iIR(7)GIR(8) |CSH;
CSBH = -.IR ( 7)S-»1R(8) ICSBH;
CSD= IR (7) ICSD;
FPT= IR(7)G-.IR(8);
HOL= IR(7)G IR(8) ;
SFX = MR.(7)G-IR(8) ;
LFX = -.IR(7)fi IR(8) ;
END;
ELSE FPT,HOL,SFX,LFX='0'B;
11/5/70 Section 2.10.3 -3 A
/* CHECK IF CELL SIZE IS DETERMINED BY CONTROL */
csb=csb!ccsbe;
csh=csh|ccshe;
CSBH=CSBH|CCSHE|CCSBE;
csw=csw|ccswe;
csd=csdjccsde;
END CSGEN?
/*
11/5/70
Section 2.10.3- *+A
3. INTERFACE TO THE OTHER SUBSYSTEMS
The purpose of this section of the manual is to briefly describe
the other subsystems in Illiac III with which the Taxicrinic Processor
comes in contact and to explain in detail the nature of the interactions
between these units and the TP.
There are six other subsystems with which the TP interacts: the
Exchange Net , the Storage Units, the Arithmetic Unit, the Input-Output
Processor, the Pattern Articulation Unit and the Interrupt Unit. The TP
is directly connected to only the Exchange Net and certain lines in the
Interrupt Unit. All other communication with processors and units is done
through the Exchange Net.
5/15/69 Section 3 - l/l
3.1 The Exchange Net
The Exchange Net is depicted in Figure 3.1 as having six Processor
ports and eighteen Unit ports. The purpose of the Exchange Net is to pro-
vide a 50 bit Processor-to-Unit information path and a 50 bit Unit-to-Processor
information path, for every possible Processor-Unit pair.
5/15/69 Section 3.1 - 1/2
K
5
in
in
z
UJ
t 2 i
o o z H
H <_> UJ wtWHOZ
EFINtTIONS
EXCHANGE NET
PROCESSOR POR
INPUT -OUTPUT
TAXICRINC PRO
LOCAL EXCHANG
UNIT PORT
UNIT ADDRESS
FAST CORE UNI
SLOW CORE UN
DICTIONARY COR
INTERRUPT UN
PATTERN ARTIC
; ARITHMETIC U
= NOT ASSIGNED
z a a.
u Q- 2
_ -J 3 3 ■*■ w ° M 2 z
1
| A
A
s
A
_i_
A
A
it
-^^
— +
^J— ! »
a.
1 3T1
2. -J, * -> •
— 'c
s <;
\
^
\
Sit
UJ
<
V
N
V
N c
i r — -
h-: ^
V
3^
a
\
s
^
-^t
^5
— ^r-+
7 %
a- 1
^ 3 1
r=in — e-
,
>
.^
-*<
—i
r-^
— s
s
V
-. r--
to
u < t.
a. ■
3 1
UJ
N
N
V
N
V
>c-
|slt=
- o — j ►
^
"V
V
UJ
JJt
i
^— ►
H
<\l — 1 k
a
N
o <
<\l
'i
■^c
,i
r - *
1
CO
I
viva
31V9^
00
viva
4f
o
lO
viva
3
,
o
•H
o
•H
O
o
u
o
CO
en
a>
a
o
o '—
-p W
P
-p m
•H EH
fl p
P o
CM
CM
00
0)
U
I
•H
P>4
S3<7>
bfl H
•H \
Pn CM
0) H
0) •
CO OO
lOViMliM!
39NVH3X3 - WKS100M
6/25/69
Section 3.1.2 - h/h
3.1.3 Standard Signals Used in the Control Bytes of all Processors and Units
■;nal Name
PREN
UA1
UA2
UA3
UAU
ENRP
Til
UCO
UC1
UC2
UC3
UCU
UC5
UREN
ENRU
TI0
USO
US1
US2
US 3
usU
US 5
Signal Assertion
Processor Requests Exchange Net
Unit Address bit (most significant)
" n ii -|
ti it ii p
II II II o
ii it ii ^
Exchange Net Reply to Processor
Transfer Information In
Unit Command bit
" it tt -j
ti ti tt p
II tt tt q
II II tt ^
tl tt II q
Unit Requests Exchange Net
Exchange Net Reply to Unit
Transfer Information Out
Unit Status bit = UB = Unit Busy
Unit Status bit 1 = UM = Unit
Malfunction
Unit Status bit 2 = UPE = Unit Parity
Error
Unit Status bit 3
Unit Status bit h
Unit Status Bit 5
Signal Type
Access
Transfer
Unit Command
Access
Access
Transfer
Unit Status
Unit Status
Unit Status
Unit Status
Unit Status
Unit Status
Standard signals are assigned to lines of the control bytes as shown in
Figure 3.1.3.
5/15/69
Section 3.1,3 - 1/2
p
R
C
E
S
S
R
PROCESSOR-EXCHANGE EXCHANGE
NET INTERFACE
PREN
Til
NET
INBUS BIT
►
* I *
uco
UNIT-EXCHANGE
NET INTERFACE
PREN
ENRU
Til
UC
UAO
UC2
UA
UC3
UA2
UC4
UA3
UC5
UA4
8
* 9 *
0UTBUS BIT
« L
UREN
ENRP
TI0
UB
= USO
UM = US I
UPE
US2
UCO
UCI
UC2
UC3
UC4
UC5
u
N
|!
T
* I*
UREN
TI0
USO = UB
US3
US4
US5
8
* 9 *
USI = UM
US2=JJPE
US3
US4
US5
VINDICATES THAT THIS LINE DOES NOT GO THROUGH THE
EXCHANGE NET, ie: IS BROKEN.
Figure 3.1.3
c t^,,- IC<
Section 3-1.3 - 2/2
3.1. k Standard Signal Sequencing (Control Byte)
PREN is a Processor's request for an INBUS path, via the Exchange
Net, to a Unit specified in the Unit Address bits UAO-U . The unit address
bits must be valid before and 100 nsec. after PREN = 1. Then 100 nsec. after
PREN = 1, but before any Til signals are generated, the Unit Address lines
may be changed to contain other information, i.e. part of the Unit command
field.
Within the Exchange Net, the requesting Processor must compete
2
with other Processors that may be requesting the use of the same INBUS.
If the requesting Processor wins the priority competition, its identification
number is copied into the requested Unit's Processor Identification Register,
contained within the Exchange Net. The contents of this register are used
by the requested Unit to specify the address of the requesting Processor
when the Unit desires to respond.
When the INBUS path has been secured, the Exchange Net sends a
reply, ENRP = 1, back to the requesting Processor. Once ENRP = 1, the
Processor may transfer information to a Unit any time it desires to do so.
When the Processor desires to transfer information, it does so
by generating a sequence of Til signals: TIIO, Till, TII2, etc. on the Til
line. Associated with each Til signal, there is a discrete amount of informa-
tion on the INBUS which must be valid during the time each Til signal is valid.
The number and duration of Til signals generated, and the nature of the cor-
responding information on the INBUS, when the Til signals occur, is Unit
dependent .
When the last Til signal goes to "0", the Processor releases the
INBUS by setting PREN = 0. After the requesting Processor releases the
INBUS, the Exchange Net will set the Processor's ENRP = 0.
1. Processors cannot enter into Priority competition for a requested Unit if
that Unit is busy, i.e. UB = 1.
2. That portion of an INBUS that lies within the Exchange Net is used to service
a maximum of 3 Units. An INBUS may be requested by a maximum of 6 Processors,
5/15/69 Section 3.1.1+ - 1/3
UREN is a Unit's request for an 0UTBUS path, via the Exchange
Net, to a Processor specified in the Unit's Processor Identification
Register. Except for the IU, this register always contains the identifica-
tion number of the Processor that last accessed the Unit via the INBUS.
The Processor Identification Registers, for all Units except the IU, are
set by the Exchange Net when ENRP goes to »l". The IU has the capability
of setting its own Processor Identification Register.
Within the Exchange Net, the requesting Unit must compete with
other Units that may be requesting the use of the same 3 0UTBUS. When the
0UTBUS has been secured, the Exchange Net sends a reply, ENRU, back to the
requesting Unit. Once ENRU = 1, the Unit may send information to the
Processor any time it desires to do so. When the Unit desires to transfer
information, it does so by generating a sequence of TI0 signals TI0O, TI01
etc. on the TI0 line. Associated with each TI0 signal, there is a discrete
amount of information on the 0UTBUS which must be valid during the time
each TI0 signal is valid. The number and duration of TI0 signals generated,
and the nature of the corresponding information on the 0UTBUS, when the
TI0 signals occur, is Unit operation dependent.
When the last TI0 signal goes to "0", the Unit releases the 0UTBUS
by setting UREN = . After the Unit releases the 0UTBUS, the Exchange Net
will set the Unit's ENRU = 0. Units holds the 0UTBUS (UREN = l) at
least until PREN = UB = .
UB is a Unit status line. UB = 1 during the Unit cycle time, i.e.
from the time the first Til signal goes to "l" until the last TI0 signal goes
to "0". Unit operation time begins when the last Til signal goes to "0" and
ends when the Unit sets UREN = 1 . The unit operation occurs as a result of a
Unit's receiving a Unit command.
UM is a Unit status line. UM = 1 whenever a condition, associated
with the Unit threatens or impairs reliable Unit operation.
3. That portion of an 0UTBUS that lies within the Exchange Net is used to
service a maximum of 6 Processors. An 0UTBUS may be requested by a
maximum of 3 Units.
. ., Section 3.1.U - 2 / 3
5/15/69
UPE is a Unit status line. All Units will check all INBUS bytes,
except byte 0, for correct parity (odd) and set UPE = 1 if an error should
occur. All storage Units, drums, disks, tapes, core memories, etc. will
also set UPE = 1 should a Parity Error occur during a read operation.
The remaining sets of signals are peculiar to any Processor and
a particular Unit. INBUS bit lines 3-8 are the Unit Status field US0-US5
respectively. US0-US2 are the standard Unit Status lines UB, UM and UPE
respectively. US3-US5 are optional status lines.
5/15/69 Section 3-lJ* - 3/3
3.1.5 Exchange Net - TF Interface - General
The main purpose of the Exchange Net - TP Interface Logic
is to provide a smooth transition between the TP control sequence logic
and the functions required by the Exchange Net. This logic allows the
TP control logic to access the Exchange Net using the same basic prin-
ciples that it uses when activating a subsequence, namely initiating an
action with a task signal and then waiting for either a normal return
or an interrupt return. The Exchange Net-TP Interface logic takes care
of generating all of the needed control byte signals and of checking for
invalid data or malfunctioning units.
The EN-TP Interface presently can handle requests for the core
units, the AU, the PAU, and the Interrupt Unit. The detailed logic for
these various requests will be explained in the relevant subsections of
Sections 3.2, 3-3, 3-5 and 3.6, respectively.
The first set of main input control signals are the Exchange Net
Control Byte Enable signals, ENMCB/E, ENACB/E, ENPCB/E and ENICB/E. These
signals enable the proper logic to generate the unit addresses as shown in
Figure 3.1.6. Note that in the case of the core units, the high order bits
of the core address must be decoded to determine the unit address. The
ENiCB/E signals also turn on the Processor Request for the Exchange Net
signal once the unit address has been generated, and also the logic which
keeps track of the length of time that the request has been active. An
interrupt will be generated if the TP is not answered within a sufficient
length of time. If a valid reply is made by the Exchange Net a proper
return signal will be generated by the interface logic.
The second set of input signals to the EN-TP Interface logic are
the unit activate enable signals. Only the Interrupt Unit and the AU
make use of these signals at the present time. Their purpose is to gen-
erate a unit command on certain bit lines in the INBUS control byte.
After this has been done the Til line is turned on to indicate to the
unit that a valid command is on the lines and that the unit is to begin
6/23/69 Section 3.1-5 - 1/3
Starting Core
Unit Address Bits
TTni t
Address
0123U
FC (0)
0101100
00000
FC (1)
0101101
00001
FC (2)
0101110
00010
FC (3)
0101111
00011
SC (0)
01100
00100
SC (1)
01101
00101
SC (2)
oino
00110
SC (3)
01111
00111
DC (0)
100
01000
DC (1)
101
01001
DC (2)
110
01010
DC (3)
111
01011
01100
IU
01101
PAU
OHIO
(not assigned J
01111
AUO, AU1
10000
(not used)
10001
(not assigned)
L INBUS bit 20. INDUS bit hk is the least sign fi ^jt f 3 Zl k
addresses. All core addresses are contained in INDUS bytes ,3d
Fla* bit positions are not used by the core address field. The most
significant bit of a FC address (lU bits is bit 27, of a SC address
(16 bits), bit 25, and of a DC address (l8 bits), bit 23-
Figure 3.1-5 - Unit Address Listing
6/23/69
Section 3.1-5 " 2 /3
operation. The replies which might come back are unit dependent and
are explained in detail in the respective sections for each unit.
The EN-TP Interface also nas provision for independent setting
of the Til lines for those control sequences wnich send long strings of
data over the data lines once the accessing of tne unit has been completed,
As mentioned previously, the EN-TP interface logic will auto-
matically generate an interrupt return in the case of a "no reply condi-
tion. In this case it will set the proper interrupt indicators and
retain the unit address which caused the "no reply". In the case where
the unit malfunction or parity error lines are turned on during the
access, the Interface logic will set an appropriate temporary storage
flip-flop and turn on the access fail signal, ACFAIL. The control
sequence will have to test this line and set the appropriate interrupt
indicators, if necessary. Tne unit address will still be in the unit
address storage register in the EN-TP Interface Logic, however.
ll/U/70 Section 3.1-5 - 3/3
3.2 The Core Storage Units
There are three types of Core Storage Units used in the
Illiac III system.
1) FC = Fast Core. This type of core storage has a
capacity of 16,381+ memory words and a cycle time
of TOO nsec.
2) SC = Slow Core. This type of core storage has a
capacity of 65,536 memory words and a cycle time
of 3ysec.
3) DC = Dictionary Core (read only). This type of core
storage has a capacity of 262, lUU memory words and a
cycle time of 8ysec. (No regeneration is required.)
All three forms of storage use the same type of accessing procedure; they
are distinguished within the computer only by the unit address which is
originally given to the Exchange Net.
In the Illiac III system there are a maximum of four units of
each type of storage. Each unit is self-contained assembly consisting of
all registers, timing circuits, power supplies, amplifiers, and interface
circuitry necessary for operation of the system and compatibility with
the Illiac III environment.
The standard memory word is 80 bits, consisting of 6h data bits,
8 flag bits, and 8 parity bits. This corresponds to an Illiac III double-
word cell, augmented by parity bits. Each memory word is divided into
eight byte zones which may be read and/or written (if not read-only storage)
independently of one another. One parity bit is associated with each byte
of the word. Correct parity is odd — the sum of 10 bits in each byte,
module 2, is 1 if the byte is error-free.
1. A core memory word = two data fields. A data field = bytes 1,2,3 and
k (bits 10-^9) of one INBUS or 0UTBUS word. One core memory word = 8
bytes (0-T) = 80 bits (0-79).
6/24/69
Section 3.2 - 1/2
The data input to each storage unit consists of 36 information
lines plus U parity lines. The input lines may be time-shared and may
send the following information:
1) 18 address hits and 8 read/write control hits
2) UO Left Word hits
3) HO Right Word hits
In addition to the data input lines there are 10 lines for input control
information. This control byte (control field) of an INBUS word, is never
stored in any Core Storage Unit. The control bytes are used for accessing,
controlling data transmission and transmitting Unit status. The Core Storage
Units do not require a Unit command.
The data output to each storage unit also consists of 36 data lines
plus k parity bits . The output lines may be time-shared and may send the
following information:
1) kO Left Word bits
2) HO Right Word bits
In addition to the data output lines there are 10 lines for output control
information.
All input signals (control and data) are supplied to the memory
on the INBUS of the Exchange Net and all output signals are transmitted to
the OUTBUS. The requirements for Processors and Memory Units and the
detailed bit- to-bit relations of INBUS and OUTBUS lines are given in the
following sections along with a detailed explanation of each signal. Then
the Processor-Core Signal Sequencing will be described. The last section
deals with the various differences between the three types of core units.
5/15/69 SeCti ° n 3 ' 2 " 2/2
3.2.1 Requirements for Processors and the Core Storage Unit:.;
When communicating with the Core Storage Units each Processor
must be capable of:
1) Generating a Til sequence TIIO, Till and TII2 on the Til line
of the INBUS control byte.
2) Transmitting in the INBUS data field during TIIO time: 8 Byte
Read /Write bits (BRW 0-7) and an address (ik bits for FC, 16
bits for SC, and 18 bits for DC). INBUS data byte 1 (bits 10-
17) is used to transmit BRW bits 0-7 respectively. BRW bits
0-7 are associated respectively with bytes 0-7 of a memory
word. INBUS data bytes 2 (bits 23-27), 3 (bits 30-37) and
Mbits U0-1+4) are used to transmit all core addresses. Bit kk
of an INBUS word is the least significant bit of all core
addresses .
The transfer of information from an INBUS data byte position
during Till or TII2 time, into a data byte position of a core
memory word, is conditional on the associated BRW bit being a
logical 1. If a particular BRW bit is a logical 0, the con-
tents of the associated byte of a core memory word is unchanged,
3) Transmitting information in the INBUS data field, during Till
and TII2 time.
k) Using a sequence of TI0 signals, TI0O and TI01, in the 0UTBUS
control byte, to transfer information from the 0UTBUS data
field into its buffer registers.
When communicating with the Processors each Core Memory Unit must
be capable of:
1) Generating a TI0 sequence TI0O and TI01 on the TI0 line of
the 0UTBUS control byte.
2) Transmitting information in the 0UTBUS data field during TI0O
and TI01 time.
3) Using a sequence of Til signals, TIIO, Till, and TII2, in the
INBUS control byte, to transfer information from the INBUS
data field into its buffer registers.
1. DC will not require BRW (zone) bits.
5/15/69 , Section 3.2.1 - l/l
3-2.2 Input to the S torage Units
Figure 3.2.2/1 shows the positions of the eight read/write bits
and the 18 address bits during the time they are on the input lines.
Figure 3.2.2/2 shows the positions of the various control signals in the
input control lines to the memory units. The purpose of this section is
to explain in detail what these inputs mean.
The Byte Read/Write information comprises eight (8) bits,
BRW. , i = 0, 1,..., 7-
If BRW. = "1", the ith byte of the selected (addressed)
memory word is to be treated in the Clear/Write mode.
If BRW. = "0", the i th byte of the selected memory word is
to be treated in the Read/Restore mode.
The address information comprises 18 bits, a , a , , ..., a ,
which is interpreted as the integer double-word address.
!7 i
A = Z 2 a.
i=0
Note that, as can be seen in Figure 3.2.2/1, the lower most 3 data bits
of the 3 byte address, which in the Illiac III system denote the byte
address within a double word, are not even used by the memory. However,
they are transmitted by the Taxicrinic Processor anyway.
The first Transfer Information In signal TIIO, going to a "l" ,
causes the start of the memory operation cycle. It is only accepted if
another memory cycle is not already in progress. The TIIO signal must
be on for at least 50 nsec. in order to be definitely accepted by the
memory unit .
U/18/69 Section 3.2.2 - 1/U
BYTE READ/WRITE
ADDRESS BITS
r
r
BYTE I
BYTE 2
BYTE 3
BYTE 4
10
5 °>
o
o
CL
BYTE NUMBER TO WHICH
THIS BRW SIGNAL APPLIES
10
o
o
Q.
8
10
o
?»,
5 O
Q.
'10
'13 °I2
'14
'15
16
'17
Figure 3.2.2/1 - Input to the Storage Units:
At Time TIIO
o
'
Section 3.2.2 - 2/k
TP-EN
Interface
PREN
(none)
Til
(not used)
(none)
Exchange Net
INBUS Bit No,
2
3
1+
5
6
7
8
*9*
Description
Processor Request to Exchange Net
Exchange Net ' s Reply to Unit
Transfer Information In
•Indicates that this line does not go through the Exchange Net
Figure 3.2.2/2 - Memory Unit INBUS Control Byte
7/1/69
Section 3.2.2 - 3A
The BRW and address signals are accepted by the memory if they
occur (i.e., reach mid-swing) not later than the time of occurrence of
the TIIO signal and remain stable for at least 60 nsec. after the TIIO is
accepted.
There will be three Transfer Information In (Til) signals in
each memory cycle. They are used to actively gate information to be
written from the INBUS into the memory address and data buffer registers.
In order of time of occurrence in the cycle, the three signals are desig-
nated TIIO, Till and TII2. These signals are always delivered to the
Til line. TIIO starts the memory cycle (as stated previously).
The widths of the Till and TII2 signals which are acceptable
to the memory are between kO and 80 nsec. The expected temporal positions
of the leading edges of Till and TII2 (when they occur) relative to the
leading edge of the TIIO is 120 and 2^0 nsec, respectively.
The memory contains internal circuitry for generating the Till
and TII2 signals. The occurrence of these signals relative to the occurence
of the TIIO can be adjusted to any time between the TIIO and the beginning
of the restore/write position of the memory cycle in steps of 25 nsec.
Till and TII2 gate information into the memory's data buffer
register. Till gates data into the left word of core and TII2 gates data
into the right word. In either case, the write information presented to the
memory on the U0 data input lines must be physically aligned with the memory
digit positions in which the input information is to be stored. This means
that it is the responsibility of the calling processor to permute the data
boundaries so that it coincides with the double word boundaries of the
accessed word in memory.
5/15/69 Section 3 - 2 - 2 " h/k
3.2.3 Output from the Storage Units
Figure 3-2.3/1 shows the positions of the various control
signals in the output control lines from the storage units. The
purpose of this section is to explain in detail what these outputs mean.
The Transfer Information Out line is used to gate the left and
right data words of core into user (processor) data buffers.
The Unit Request's Exchange Net signal is used in the core to
retain the 0UTBUS after Unit Busy = 0, i.e. between cycles.
The Unit Busy signal is generated by the memory and remains in
the "l" state from the time of reception of a TIIO signal until TI01
goes to "0".
The Unit Malfunction signal becomes "l" when any measured
temperature or DC voltage substantially exceeds expected tolerances.
The signal is intended to indicate that a hardware condition clearly
prejudicial to continued operation of the memory has arisen.
The Unit Parity Error signal becomes "l" if the parity of one
or more bytes of the Word in the memory data buffer register has erroneous
parity at the beginning of the write/restore portion of the cycle. The
signal is generated and transmitted no later than 150 ns. after the write/
restore begins. The signal is reset to "0" by the memory unit at the end
of each memory cycle, i.e. when Busy goes to "0".
Two pulses are used, TI0O and TI01. TI0O = 1 means that the
left word of a core address is on the 0UTBUS; TI01 = 1 means that the
right word of a core address is on the 0UTBUS, TI0O and TI01 are each 125
nsec. wide; they are separated by 100 nsec. in time.
6/2U/69 Section 3.2.3 - 1/3
Memory- EN
Interface
UREN
ENRP
TI0
UB
UM
UPE
(not used)
(none)
Exchange Net
OUTBUS Bit No,
2
3
k
5
6
T
8
*9*
Description
Unit reauests Exchange Net
Trans, information out
Unit busy
Unit malfunction
Unit parity error
indicates that this line does not go through the Exchange Net
Figure 3.2.3/1 - Memory Unit OUTBUS Control Byte
7/1/69
Section 3-2.3 - 2/3
At information ready time (data register is reliable for
reading) the core requests (Unit-Requests-Exchange-Net on line of
the OUTBUS) the Exchange Net. After the Exchange Net sends a reply
back to core, (Exchange Net-Reply-to-Unit on line 1 of the INBUS)
the core responds. Two TI0 signals, TI0O and TI01 , are sequenced on
the TI0 line (2) of the OUTBUS. When TI0O = 1 the left data word is on
the OUTBUS. TI0O and TI01 are equal to 1 for 125 nsec. each; they are
separated by 100 nsec.
When TI01 -> 0, Unit Busy -> and the core is ready to be
cycled again. Once the response logic of the core secures the OUTBUS,
it will not release it until (Unit Busy = 0). (Processor Requests
Exchange Net = , on line of the INBUS ). This technique allows a user
(Processor) to transfer (read or write) in a burst mode if desired, i.e.
the Exchange Net is accessed only once and the INBUS and OUTBUS are not
released until all data transfers are complete.
h/lQ/69 Section 3.2.3 - 3/3
3.2. k Processor-Core Memory Unit Signal Sequencing
A core cycle is started when TIIO initially goes to a logical
1. During the time TIIO = 1 the core address and BRW 0-7 are gated,
from the INBUS data field, into their respective buffer registers, within
a Core Memory Unit.
During the time Till = 1, the contents of bytes 1 (bits 10-19),
2 (bits 20-29), 3(bits 30-39), and U(bits U0-U9), of the INBUS data field
are gated into bytes 0(bits 0-9), l(bits 10-19 ), 2 (bits 20-29), and
3(bits 30-39) > respectively, of a Core Memory's data buffer.
During the time TII2 = 1, the contents of bytes l(bits 10-19),
2(bits 20-29), 3(bits 30-39), and U(bits U0-U9), of the INBUS data field
p
are gated into bytes U(bits U0-U9), 5(bits 50-59), 6(bits 6O-69), and
7(bits 70-79), respectively, of a Core Memory's data buffer.
Till and TII2 will not be required for the Dictionary Core (DC).
After TII2 time a core is ready to transfer information back
to the requesting Processor. A core transfers information back to a
requesting Processorby generating a sequence of TI0 signals TI0O and TI01.
During the time TI0O = 1, the contents of bytes 0(bits 0-9),
l(bits 10-19), 2(bits 20-29), and 3(bits 30-39), of a Core Memory's data
buffer are contained in bytes l(bits 10-19), 2 (bits 20-29), 3 (bits 30-39),
and Mbits U0-U9), respectively, of the 0UTBUS data field.
During the time TI01 = 1, the contents of bytes U(bits U0-U9),
5(bits 50-59), 6(bits 6O-69), and 7(bits 70-79) of a Core Memory's data
buffer, are contained in bytes l(bits 10-19), 2(bits 20-29), 3(bits 30-39)
and Mbits I+O-U9), respectively, of the 0UTBUS data field.
1. Conditional on BRW bits 0-3.
2. Conditional on BRW bits U-7
U/I8/69 Section 3.2.U - 1/1
3.2.6 Exchange Net-TP Interface for the Memory Units
The purpose of this part of the Exchange Net-TP Interface
Logic is to provide the needed control signals so that the memory
sequences can easily communicate through the Exchange Net to the core
memory units . The memory units are harder to control than the other
units for two reasons:
1) There are more of them. This means more logic is
needed simply to generate all of the unit addresses
which might be used.
2) Their timing is much more critical. Since they are
essentially synchronous devices the commands and data
being sent to them must appear at fairly accurately
specified times in relation to one another.
The first memory-related Exchange Net control signal is the
Exchange Net Memory Control Byte Enable signal, ENMCB/E. This signal
enables the logic which decodes the high order bits of the core address
and determines the unit address which must be placed on the INBUS control
byte (see Figure 3.1.6 for the listing of unit addresses). It also turns
on the Processor Request to the Exchange Net, once the unit address is
valid. At this time it also turns on the TIIO signal so that the memory
cycle will begin as soon as the path through the Exchange Net has been
cleared. This can be done in the case of the core memories since there
are no unit commands which must be sent and the other data needed by the
memory (i.e. address and read/write byte) is already valid at the time
the path is completed.
Finally the ENMCB/E signal activates the timing logic which keeps
track of the length of time the request has been active. This logic
basically consists of a pair of control points which turn the input count
signal of an 8-bit IC counter on and off. The desired length of time can
6/23/69 Section 3.2.6 - 1/3
In
be measured by waiting for a pre-determined state of the counter
order to minimize the logic needed only a few high order hits of the 8
bit counter need be used. If the counter reaches this state before the
Exchange Net replies, the interface logic automatically cancels the
request, turns on the appropriate interrupt indicator, activates the
interrupt return signal, and turns on the Exchange Net No Reply signal,
XNNRP, which is used to turn off the activated control point.
Under normal circumstances the Exchange Net will send a reply
to the TP indicating that the path to the unit has been completed. When
this happens the interface logic will generate the XNRET signal which may
be used by the memory sequence to initiate any operations which might have
to take place before data from the sequence is returned, or in the case of
a write sequence, to initiate transmission of the data to be written. The
interface logic also insures that the TIIu signal is automatically turned
off an appropriate amount of time after the memory cycle has started.
Finally the interface logic resets the timing logic and begins
timing tne length of time for the unit to respond. If this does not occur
within the prescribed length of time, an interrupt is generated in a man-
ner analogous to the Exchange Net timing interrupt and tne Memory Unit No
Reply Signal, mUNRP, is turned on. In a read access, this signal is used
to turn off the control point which is currently waiting to store the
returning data into a register. In a write access the signal is sent Dack
to a null control point occurring immediately after sending tne second
data word to be written. This control point waits for either a data
ready signal from the memory unit (signifying that the unit is operating
and has reached the write portion of the memory cycle) or the MUNRP signal.
If more data is to be sent to the memory, as in the case of a
write command, it is the responsibility of the control sequence to see
that it is placed on the INBUS at the proper time. The Exchange Net Logic
can be used to transmit the information once it is on tne cable drivers to
; ,, Section 3-2.6 - 2/3
7/1/69
k
the Exchange Net by activating the TII/E signal which will turn on the
Til signal. The interface logic produces a delayed signal, TIID, which
can be used by the control point which generated Til/E to turn itself off
after Til has been on for the proper length of time.
When the last piece of data has been sent to the memory unit,
the control sequence must turn on the Exchange Net Release Signal,
XNREL wnich will cause the processor request to the Exchange Net to
turn off.
If and when the memory sends data to the TP, it will activate
the TIO control line on the OUTBUS control byte. The Exchange Net-TP
Interface uses this signal to produce several control signals for the TP
memory control sequence.
Since the read sequence must know which data word is being sent
back, i.e. the first or second, the interface logic uses two flip-flops,
MDAT1 and MDAT2, which are turned on when the first and second data words,
respectively, arrive. These flip-flops are reset the next time an access
is made to the Exchange Wet. It is important to note that there is a
built-in delay between the time there is valid data on the lines coming
from the memory and the time the MDAT1 or MDAT2 signals are sent to the
memory control sequence logic. This allows time for the data to be
gated into the desired register. The detailed operation is explained
in Section 4.1.3.6, the Read Access Control Logic.
If at any time after the Exchange Net has established the path,
the memory unit signals that a memory malfunction or parity error has
occurred, the interface logic will set a temporary storage flip-flop and
turn on the access failure line, ACFAIL. This signal must be tested by
the memory control sequence after it has completed an access. If it is
on, the control sequence must set the proper interrupt indicator, using
the two temporary storage flip-flops and then transfer control to the
Memory Interrupt Sequence.
7/1/69 Section 3.2.6 - 3/3
3.3 The Arithmetic Units
The two identical Arithmetic Units (AU's) perform most of the
arithmetic operations in the Illiac III system. The exceptions are integer
addition and subtraction as well as several unary operations which are
executed by the Taxicrinic Processors.
The prime responsibility of the Arithmetic Units is the high-
speed execution of floating point arithmetic operations. The units also
provide facilities for integer multiplication and division and conversion
from one number-type to another, e.g. floating to long fixed.
As in the case with the other units in the system, communication
with the processors is via the Exchange Net. The AU's interact pri-
marily with the TP's although paths are also available between the AU's
and the I/O Processor. The Exchange Net assigns an AU to a requesting
processor and also makes certain that the results of an arithmetic opera-
tion are returned to the processor which initiated the operation. The
position of the AU's in the overall system is shown in Section 1.1 in
Figure 1.1.
The execution of an arithmetic instruction begins in a Taxicrinic
Processor. If the TP determines that the AU is required to execute the
operation, it sends a request to the Exchange Net which locates and assigns
an AU which is not in use. The TP then sends the AU a control byte and h
data bytes. The control byte contains the instruction variant ( add, subtract ,
etc.) and the number type (fixed, floating, or decimal). Since in general
the operands will occupy more than h bytes , several data transmissions will
need to take place. The AU, based on a rapid decoding of the control byte,
will load the data as it is received into the proper AU registers.
5/8/69 Section 3.3 - 1/2
When all of the operands have been sent, the Processor breaks
its link with the Exchange Net and the AU executes the instruction. When
the execution is finished,the AU notifies the Exchange Net which in turn
accesses the TP which made the original request. The result is then returned
one word at a time to the TP. If an error condition such as overflow has
occurred, a bit is set in the control byte accompanying the result and a
flag designating the nature of error is set in the data.
A more detailed description of the input and output operations in
the AU will be given in the following sections.
The expected execution time for floating point (56 bit mantissa)
addition, subtraction and multiplication in 3-6 ysec. For floating point
division, the expected execution time will be 8-9 ysec. These operations
are not interrupt able. However, POLY, the multi-cycle polynomial evalua-
tion instruction can require tens of microseconds and therefore is
interruptable by the Exchange Net.
d
5/8/69
Section 3-3 - 2/2
3.3.1 Input to the Arithmetic Units
The structure of the control byte which is sent to an Arithmetic
Unit when its services are needed is shown in the table in Figure 3.3.1/1.
A brief description of each signal name is given in the table in Figure
3.3.1/2. The nomenclature is consistent with that defined in File No. 790,
"A Discussion of Illiac III Processor-Unit Communication via the Exchange
Net".
Assuming that the reader is now familiar with the signal names ,
the next section describes the signal sequencing for a TP to AU transmission.
Having recognized the need for an AU, a TP sets PREN = "l" with
the Unit Address bits 5-8 of TP-EN Inbus Interface) set to 1111 = 15,q. The
unit address must be valid before, and 100 nsec. after, PREN = 1. One hundred
nsec. after PREN = 1 but before any Til signals are generated, the unit
address lines are changed to contain instruction variant and number type
information.
Within the Exchange Net, the TP is assigned to an AU and the TP
identification number is copied into the assigned AU Identification Register
(contained within the EN). The contents of this register are used by the AU
in returning results to the TP which requested it.
When the INBUS path to an AU has been secured, the Exchange Net
sends a reply, ENRP = 1, back to the requesting TP. Once ENRP = 1 the TP
may transfer information to the AU at any time it is available. The TP
transfers operands by generating a sequence of Til signals TIIO, Till, TII2 ,
TII3, on the Til line. Associated with each Til signal is a full word of
data and one control byte on the INBUS which must be valid during the time
each TII signal is valid. The initial design values for the timing rela-
tionship between valid data and the TII signals are given in Figure 3.1.1/3-
5/12/69 Section 3.3.1 - 1/6
TP - EN
Exchange
Net
AU - EN
Interface
INBUS Bit
* 1 *
No.
Interface
PREN
PREN
(none)
ENRU
Til (Transfer Information In)
2
Til
IVO = UCO
3
IVO
IV1 = UC1
h
IV1
IV2 = UC2
5
IV2
IV3 = UC3
6
IV3
NTO = UCU
7
NTO
NTl = UC5
8
* 9 *
NTl
(none)
IAUO
^Indicates that this line does not go through the Exchange Net
Figure 3.3.1/1 - INBUS Control Bit Assignment
5/13/69
Section 3-3.1 - 2/6
Name
Description
Equivalent Name in
AU Documentation
if Different
PREN *
ENRU *
Til *
IV
n
NT
UC *
n
IAUO
Processor Requests Exchange Net
Exchange Net Reply to Unit
Transfer Information In
Instruction Variant, Bit n
Number Type , Bit n
Unit Command, Bit n
(These bits are assigned to
instruction variant and number
type bits as shown in Figure 3-3.1/^
during TP to AU transmission. )
Interrupt AU
AU Request
In Info Ready
Interrupt
*Standard Signals used in control bytes for all Processors and Units
See DCS File No. 790.
Figure 3.3-1/2 - Description of INBUS Control Signals
5/13/69
Section 3-3.1 - 3/6
Data Valid at
EN - AU
Interface
TIIO
FIRST DATA WORD:
300 ns
2U0 ns
-1
60 ns_
Data Valid at
EN - AU
Interface
Til n
for n >
SUCCEEDING DATA WORDS:
220 ns
160 ns >h^° nS
Figure 3.3.1/3 - Relative Timing Between Valid Data
on INBUS and Til
5/19/69
Section 3.3-1 - U/6
data must be valid longer for the first transmission since the
instruction variant and number type must be decoded prior to the loading
of the data (the IV and NT codes are given in Figure 3.1-lA). This
case is illustrated at the top of Figure 3- 1.1/3- The timing for all
successive transmissions is shown at the bottom. In both cases, the
data must remain valid at least 60 ns . after the Til is turned off. The
minimum interval required between successive Til pulses is only about 20
nsec, however in practice the TP cannot supply operands this rapidly.
There are no bounds on the maximum duration of this interval. It is
anticipated that emperical fine-turning will reduce these duration require-
ments by 50$.
With the exception of POLY, the AU knows how many transmissions
to expect based upon a decoding of the order (IV and NT). When the correct
number has been received the AU begins execution. In the case of POLY,
the TP must maintain the count of the number of coefficients sent. The
last coefficient is sent to the AU with the IV field all l's. When the
last Til signal goes to 0, the TP releases the INBUS by setting PREN = 0.
The Exchange Net in turn sets the TP's ENRP = 0.
The remaining signal in Table 3.1.1/1 to be discussed is IAU0.
This interrupt line is used in the case in which both AU's are performing
POLY orders in conjunction with two TP's and a third TP requires the use
of an AU. In this case, the Exchange Net will set IAU0 = 1 to interrupt
AU number 0. This unit will then return a partial result to the calling
TP and next accept the pending order. The TP holding the uncompleted
POLY will initiate a request to the EN for an AU to complete the work and
the request will be granted when either AU is free.
6/2U/69 Section 3-3.1 - 5/6
IV Bit No.
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
ORDER
Not used
CYL
CVF
CVD
NEG
ABS
MNS
TA
ADD
Not used
SUB
CPRA
MPY
POLY Note : End of POI
indicated by 111]
Not used (Except as
indication of end of P(
NTO NT1
1
1
1 1
Number Type
S. Fixed
L. Fixed
Floating
Decimal
Figure 3.3.1 A - Instruction Variant Code for Arithmetic Operations
5/1U/69
Section 3-3.1 - 6/6
3.3.2 Output from the Ar it timet ic Units
The structure of the control byte which is returned to a TP
from an AU is shown in the table in Figure 3-3.2/1. A brief description
of each signal name is given in the table in Figure 3.3.2/2. The nomen-
clature is consistent with that described in Department of Computer Science
File No. 790.
When the AU has results to return to the calling TP, the signal
UREN is set to 1 and the EN makes a path to the TP specified into the AU
Processor Identification Register. This register contains the identifica-
tion number of the TP that last accessed the AU. When the return path is
made, ENRU (in the INBUS, Figure 3.1.1/1) is set to 1. The AU may then
transfer information by placing valid data on the 0UTBUS and generating
the appropriate sequence of TI0 signals. An AU returns either 1 or 2 words
When the last TI0 signal goes to 0, the AU may release the 0UTBUS by
setting UREN = 0. The Exchange Net will then set the AU's ENRU = 0.
When AU #0 is interrupted during a POLY order, the partial
result will be returned to the TP as described above except that MCI = 1,
indicating that the order has not been completed. The fact that AU#0 was
executing a POLY order is transmitted to the Exchange Net by UMC = 1.
If a Unit Malfunction such as low-voltage is detected in the
course of executing an AU order, UM will be set to 1. An error in the
result caused by improper format of operands or results out of bounds will
set the BR (Bogus Result) bit. A more specific indication of the nature
the error condition is given by the flags of result as shown in Figure
3.3.2/3.
The signal UB is set to 1 by the AU as soon as the pending AU
order is decoded. Being a 1 , it prevents the Exchange Net from assigning
it to another AU prior to completion of the present order.
5/13/69 Section 3.3-2 - 1/5
TP - EN
Interface
UREN
ENRP
TI0
UB =
USO
UM =
US1
UPE
= US2
UMC
= US3
MCI
= usU
BR = US5
(none)
Exchange Net
AU - EN
0UTBUS Bit No.
Interface
UREN
* 2. *
(none)
2
TI0
3
UB
h
UM
5
UPE
6
US3 = UMC
T
USU = MCI
8
US5 = BR
* 9 *
(none)
indicates that this line does not go through the Exchange Net.
Figure 3.3.2/1 - 0UTBUS Control Bit Assignment
5/13/69
Section 3-3.2 - 2/5
Name
UREN *
ENRP *
TI0 *
UB
UM
UPE
UMC
MCI
BR
US *
n
Description
Unit Requests Exchange Net
Exchange Net Reply to Processor
Transfer Information Out
Unit Busy-
Unit Malfunction
Unit Parity Error
Unit Multi-Cycle
Multi-Cycle Interrupt (to notify
TP that the AU it has been using
has been interrupted).
Bogus Result
(Indicates to the TP that
the result is incorrect . The
TP determines the nature of the
error from the flags of incorrect
result) .
Unit Status, Bit n
(These standard signals are
assigned to specific status
signals as shown in JFigure 3.3.2/1
Equivalent Name in
AU Documentation
if Different
Exchange Request
Out Info Ready
Parity Error
Multi-Cycle in progress
*Standard signals used in the control bytes of all Processors and Units
See DCS File No. 790.
Figure 3-3.2/2 - Description of 0UTBUS Control Signals
5/13/69
Section 3-3.2 - 3/5
H
gs
%
E
■j
%
>
TSk.
2
u
El
*
c?
w
>
E
>
2
ON
-P
•H
pq
-P
m
o
w
k3
n
ft
0)
•H
43
-P
•H
Ti
0)
en
pi
-P
o
>
X
Jh
O
-P
05
o
•H
-P
-P
•H
^
O
UNIVERSITY-TYPE CONTRACTOR'S RECOMMENDATION FOR
AECM3201 DISPOSITION OF SCIENTIFIC AND TECHNICAL DOCUMENT
I See Inttrvctioru on Rtvrw Sid* )
I. AEC REPORT NO. l^y
COO-2118-0001
2. title ILLIAC III COMPUTER SYSTEM MANUAL:
TAXICRINIC PROCESSOR VOLUME 1
3. TYPE OF DOCUMENT (Check one):
CJJ a. Scientific and technical report
□ b. Conference paper not to be published in a journal:
Title of conference
Date of conference
Exact location of conference.
Sponsoring organization
□ c. Other (Specify)
4. RECOMMENDED ANNOUNCEMENT AND DISTRIBUTION (Check one):
Q a. AEC's normal announcement and distribution procedures may be followed.
□ b. Make available only within AEC and to AEC contractors and other US. Government agencies and their contractors.
~2 c. Make no announcement or distrubution.
5. REASON FOR RECOMMENDED RESTRICTIONS:
6. SUBMITTED BY: NAME AND POSITION (Please print or type)
Bernard J. Nordmann, Jr.
Research Assistant
Organization
Department of Computer Science
University of Illinois
Urbana, Illinois 6l801
JHjlAsywJL J T^U^z^yL J^
Date
November 2k. 1970
FOR AEC USE ONLY
7. AEC CONTRACT ADMINISTRATOR'S COMMENTS, IF ANY, ON ABOVE ANNOUNCEMENT AND DISTRIBUTION
RECOMMENDATION:
8. PATENT CLEARANCE:
□ a. AEC patent clearance has been granted by responsible AEC patent group.
b - Report has been sent to responsible AEC patent group for clearance.
1 I c. Patent clearance not required.
#
%
\