[net.arch] byte alignment and interleaving

rcd@opus.UUCP (Dick Dunn) (10/12/84)

Somewhat of a side issue on byte alignment:

> I suppose it would be possible to have fiendishly clever memory designs
> where adjacent words were always in different memory banks so you could
> cycle both at the same time.  Sounds pretty awful, though, since you have
> to determine for each memory reference how many memories to cycle and how
> to splice the parts together.  As far as I can tell, it's never been
> seriously proposed for implementation, except perhaps incidentally in very
> large cached architectures such as the IBM 308X.

There's nothing "fiendishly clever" required.  Just decode the address
differently--use the lower bits as bank select instead of the higher
bits.  "Cycling" the memories isn't a problem.  Splicing the parts is, but
that problem happens with or without the interleaving.

This scheme of addressing was used on the old CDC 6x00 series machines.  It
wasn't for the purpose of avoiding alignment problems, though--since the
machines were word-addressable.  It did serve to speed up programs which
accessed sequential locations in main memory, and it made transfers between
main memory and a backing bulk core storage FAST:  600 Mbits / sec, which
is substantial considering the main memory had a 1 us cycle and the bulk core
a 3.2 us cycle.
-- 
Dick Dunn	{hao,ucbvax,allegra}!nbires!rcd		(303)444-5710 x3086
   ...Relax...don't worry...have a homebrew.

guy@rlgvax.UUCP (Guy Harris) (10/13/84)

> > I suppose it would be possible to have fiendishly clever memory designs
> > where adjacent words were always in different memory banks so you could
> > cycle both at the same time.  Sounds pretty awful, though, since you have
> > to determine for each memory reference how many memories to cycle and how
> > to splice the parts together.  As far as I can tell, it's never been
> > seriously proposed for implementation, except perhaps incidentally in very
> > large cached architectures such as the IBM 308X.
> 
> There's nothing "fiendishly clever" required.  Just decode the address
> differently--use the lower bits as bank select instead of the higher
> bits. ... This scheme of addressing was used on the old CDC 6x00 series
> machines. ... It did serve to speed up programs which accessed sequential
> locations in main memory...

As Dick Dunn points out *via* his title, this is actually the standard
technique known as "memory interleaving", used on a number of machines.
Most machines with interleaved memory don't cycle the banks at the same time,
as all banks are on a common memory bus; however, you don't have to wait for
the bank with word N to recover from the fetch before fetching the next word,
you merely need wait till the word is fetched.  (A principle useful elsewhere
in life, at least if you have a dirty enough mind.)

	Guy Harris
	{seismo,ihnp4,allegra}!rlgvax!guy