[net.micro] Segmented Architectures Burroughs systems

tom@hcrvx1.UUCP (Tom Kelly) (12/17/85)

I too think the Burroughs architecture is very interesting and
amply repays study.  I spent 5 years building compilers at Burroughs,
so I'm probably biased.

As a practical matter, code segments can be 8192 *words* long,
at 6 bytes/word.  The ALGOL compiler refused to compile a procedure
longer than that, but the FORTRAN and F77 compilers would - they
simply built the appropriate inter-segment branches.  The user
didn't even know it was happening.

Descriptors (which describe segments) have a 20 bit length field,
the units were words.  Thus, a segment had a maximum length of
2*20 words or 6*2**20 bytes, (i.e., 6MB).  However, descriptors
could describe strings too, i.e., arrays whose elements were smaller
than a word (the hardware supported 4, 6 and 8-bit characters).
When these descriptors were "indexed", (an offset is combined with
the descriptor to produce a reference to a single array element),
the word index could be only 16 bits, because 4 bits were taken
for the byte offset within the word.  This means that, as a practical
matter, string or byte arrays could only be 64K words long,
about 390K bytes.

Note that the architecture was tagged - each word in memory had
a 3 bit extra field checked by the hardware that indicated what
kind of data was stored in the word, and restricted the operations
on that data to those that made sense.

Tom Kelly  (416) 922-1937
Human Computing Resources Corp.
{utzoo, ihnp4, decvax}!hcr!hcrvx1!tom