[net.arch] Tagged architectures

ehj@mordor.UUCP (Eric H Jensen) (01/01/70)

In article <1683@peora.UUCP> you write:
>> And with a tagged memory system, you must read a memory word before
>> doing a write (to see if the tag allows writing).  This causes alot of
>> extra memory accesses and thus detracts from the performance achievable.
>
>No, it only makes it more expensive.  There are always* RAM parts available
>that are faster than those used for the main memory; it's just a question
>of whether you want to incur the extra cost.  ...

This discussion has me a bit confused ...

I don't understand why anyone would want to use tags for read/write
protection.  Whether you can read/write a memory location is either
determined by your page table entry for the current virtual space or
by some capability you possess.   The above is not related to the
current unitialized data debate because once a location is *written* it
is, by definition, initialized.

Tags are usually used to identify the type of data they are associated
with or the type of data the associated pointer points to (i.e.
integer, flonum, cons cell, gate, initialized, uninitialized, etc...).
It makes no sense to me to put protection information in a tag -
unless of course it's in the tag of a pointer and refers to the
protection of the data being pointed to - but thats capabilities
revisited.
-- 
eric h. jensen         (S1 Project @ Lawrence Livermore National Laboratory)
Phone: (415) 423-0229  USMail: LLNL, P.O. Box 5503, L-276, Livermore, Ca., 94550
ARPA:  ehj@angband     UUCP:   ...!decvax!decwrl!mordor!angband!ehj

dick@ucsfcca.UUCP (Dick Karpinski) (09/21/85)

In article <2384@uvacs.UUCP> mac@uvacs.UUCP (Alex Colvin) writes:
>
>I'm still looking for a machine that will trap references to uninitialized
>data.

Arthur Sale (of Pascal Validation Suite fame) wrote a paper about the
proper use of Tag-6 in the Burroughs (sp?) 5500 and successors.  That
flavor of tag (among 8) allows the item to be passed to a subroutine
but not used in expressions.  Only assignment to it is permitted.
Tagged architectures are very tidy, and with the ever decreasing cost
of memory, they become even more attractive.  A few bits and a little
support with comparators in silicon lets you catch very many otherwise
obscure bugs in quite conventional programs.  Compilers get involved
but in many ways, the tags help in avoiding other kinds of run time
tests.  In silicon and in parallel means the cost is reduced to a few
square microns and a few micro-watts.  

Given support by the compiler, even arrays of Booleans can be spread
out into words for checkout purposes to make use of the tags.  I have
neve seen this done.

Dick

-- 
Dick Karpinski    Manager of Unix Services, UCSF Computer Center
UUCP: ...!ucbvax!ucsfcgl!cca.ucsf!dick   (415) 666-4529 (12-7)
BITNET: dick@ucsfcca   Compuserve: 70215,1277  Telemail: RKarpinski
USPS: U-76 UCSF, San Francisco, CA 94143

jvz@loral.UUCP (John Van Zandt) (09/23/85)

Tagged architectures are nice from a software point of view, but they are
usually poor performers.  One article pointed out that because memory and
silicon are cheap, tagged architectures are now viable.  The performance
of a tagged memory architecture (as with all architectures), is hinged on
the number of memory accesses that must be performed (among other things).
And with a tagged memory system, you must read a memory word before
doing a write (to see if the tag allows writing).  This causes alot of
extra memory accesses and thus detracts from the performance achievable.

John Van Zandt
Loral Instrumentation

uucp: ...sdcsvax!jvz
arpa: jvz@UCSD

jer@peora.UUCP (J. Eric Roskos) (09/27/85)

> And with a tagged memory system, you must read a memory word before
> doing a write (to see if the tag allows writing).  This causes alot of
> extra memory accesses and thus detracts from the performance achievable.

No, it only makes it more expensive.  There are always* RAM parts available
that are faster than those used for the main memory; it's just a question
of whether you want to incur the extra cost.  (For some kinds of tag bits,
if you can manufacture your own parts, it's also possible to implement
unconventional RAMs that reduce the number of accesses required; e.g.,
RAMs that can sense a bit transition when you write to them can be used to
implement particular kinds of test & set-style tags.)

*Well, unless you have memory cycle times in the ones of nanoseconds.
-- 
Shyy-Anzr:  J. Eric Roskos
UUCP: Ofc:  ..!{decvax,ucbvax,ihnp4}!vax135!petsd!peora!jer
     Home:  ..!{decvax,ucbvax,ihnp4}!vax135!petsd!peora!jerpc!jer
  US Mail:  MS 795; Perkin-Elmer SDC;
	    2486 Sand Lake Road, Orlando, FL 32809-7642

jer@peora.UUCP (J. Eric Roskos) (10/07/85)

> I don't understand why anyone would want to use tags for read/write
> protection.  Whether you can read/write a memory location is either
> determined by your page table entry for the current virtual space or
> by some capability you possess.

For one thing, because you can then "read/write protect" memory in much
smaller units... but the tags are for other things than that, also, e.g.,
to show the type of the datum, perhaps; or to show whether it is "present";
or the access level required in order to be able to read or write it; etc.

A "capability" in this sense could be thought of as just a set of tags off
somewhere else in memory, along with a pointer to the object the tags are
for...
-- 
Shyy-Anzr:  J. Eric Roskos
UUCP: Ofc:  ..!{decvax,ucbvax,ihnp4}!vax135!petsd!peora!jer
     Home:  ..!{decvax,ucbvax,ihnp4}!vax135!petsd!peora!jerpc!jer
  US Mail:  MS 795; Perkin-Elmer SDC;
	    2486 Sand Lake Road, Orlando, FL 32809-7642