[comp.sys.mac] Parity vs. non-Parity RAM in the Mac IIci

paryavi@harris.cis.ksu.edu (Saiid Paryavi) (09/21/89)

Does anyone know what the difference between parity and non-parity RAM is in
the Mac IIci?  Does it have to do with the speed of the RAM?  Does one type
run faster than the other or is it that one is more reliable???


--
Saiid Paryavi                      			Computer Science Dept.	
Internet:  paryavi@harris.cis.ksu.edu			Nichols Hall
BITNET:    paryavi@ksuvax1.bitnet			Kansas State University
UUCP:      {rutgers, texbell}!ksuvax1!harry!paryavi	Manhattan, KS  66506

c8s-an@franny.Berkeley.EDU (Alex Lau) (09/22/89)

In article <0xe23@deimos.cis.ksu.edu> paryavi@harris.cis.ksu.edu (Saiid Paryavi) writes:
>Does anyone know what the difference between parity and non-parity RAM is in
>the Mac IIci?  Does it have to do with the speed of the RAM?  Does one type
>run faster than the other or is it that one is more reliable???

As I understand it, parity-checking RAM runs an error check while
non-parity-checking RAM doesn't. Parity-checking RAM is a mite
slower and slightly more expensive, although the MS-DOS market is
full of parity-checking RAM machines so the demand is higher and
sometimes the prices are actually lower for the RAM itself.

Also as I understand it, Apple included an option for parity-checking
RAM in the IIci because many major corporations and certain divisions
of the government require it. Apple had a tech note (I forget which
number) explaining why they didn't use parity-checking; I guess that
will soon be updated...

>Saiid Paryavi                      			Computer Science Dept.	

--- Alex
UUCP: {att,backbones}!ucbvax!franny!c8s-an
INTERNET: c8s-an%franny.berkeley.edu@ucbvax.berkeley.edu
FIDONET: Alex.Lau@bmug.fidonet.org (1:161/444)

chuq@Apple.COM (Chuq Von Rospach) (09/22/89)

>Does anyone know what the difference between parity and non-parity RAM is in
>the Mac IIci?  Does it have to do with the speed of the RAM?  Does one type
>run faster than the other or is it that one is more reliable???

Parity RAM is 9 bit ram SIMMS (and support hardware) instead of 8 bit ram
SIMMS. Parity RAM is more expensive, not any faster and somewhat more
reliable, although RAM reliability is high enough these days that unless
you're writing RFC's for government contracts or totally paranoid, not
terribly useful. 

All parity does is check to make sure that the eight bits you wrote into the
RAM come out again the same way (but only if you flip one bit. Parity
doesn't cover multi-bit errors. You need ECC to do that).

There's no reason why a 'normal' user needs parity unless their applications
require extremely high reliability.

-- 

Chuq Von Rospach <+> Editor,OtherRealms <+> Member SFWA/ASFA
chuq@apple.com <+> CI$: 73317,635 <+> [This is myself speaking. I am not Appl
Segmentation Fault. Core dumped.

roy@phri.UUCP (Roy Smith) (09/22/89)

In <0xe23@deimos.cis.ksu.edu> paryavi@harris.cis.ksu.edu (Saiid Paryavi):
> Does anyone know what the difference between parity and non-parity RAM is in
> the Mac IIci?  Does it have to do with the speed of the RAM?  Does one type
> run faster than the other or is it that one is more reliable???

	Parity is a scheme used for detecting memory errors.  It can take
many forms, but the basic idea is that for each 8-bit byte, you actually
store 9 bits in the memory.  Everytime you write a byte (or word, or
whatever the appropriate memory transfer unit is) to memory, the hardware
counts the number of ones in the 8 data bits and makes the 9th bit (the
parity bit) either a one or a zero such that the total number of ones in
the 9 bits is even (or, depending on the machine, odd; it doesn't really
matter as long as it's consistant).

	Whenever a byte is read from memory, the hardware again counts the
number of ones in the 8 data bits, calculates what the parity bit should
have been, and checks to make sure it really is that.  If it's not, that
means a bit was either turned from a one to a zero or from a zero to a one,
either case meaning a memory error.  The hardware then signals a parity
error and presumably the operating system does something about it, often
simply just printing an error message and halting.

	To get back to your questions, it has nothing to do with the speed
of the ram chips.  The disadvantages of parity memory are that it takes
more chips (9/8ths as many in the common case described above) and the
memory system as a whole will probably be slower, even if the ram chips
themselves are the same speed, because of the added parity generation and
checking required.  This speed delay is generally pretty marginal.  If
you've ever looked at a typical Mac SIMM, you will notice that there are 8
chips and a space on the board for a ninth.  That's for the chip which will
hold the parity bits.

	With simple parity, there is no way to know which bit has the error
in it, nor is there any way to correct the error on-the-fly.  There are
more complicated parity-like schemes, called Error Correcting Codes (ECC)
which not only let you detect errors, but lets you track down exactly which
bit within the word was bad, and lets the memory system correct it before
the CPU gets the data.  These take even more memory chips (typically
something like an extra 7 bits for every 32), and incur an even greater
memory speed delay.  Larger systems usually have ECC memory.
-- 
Roy Smith, Public Health Research Institute
455 First Avenue, New York, NY 10016
{att,philabs,cmcl2,rutgers,hombre}!phri!roy -or- roy@alanine.phri.nyu.edu
"The connector is the network"

roy@phri.UUCP (Roy Smith) (09/22/89)

In article <34935@apple.Apple.COM> chuq@Apple.COM (Chuq Von Rospach) writes:
> RAM reliability is high enough these days that unless you're writing RFC's
> for government contracts or totally paranoid, not terribly useful. [...]
> There's no reason why a 'normal' user needs parity unless their applications
> require extremely high reliability.

	This is a matter of opinion, and clearly Chuq is entitled to his, but
I disagree.  We've gone through about 200 Mbyte-years of Sun-3/50 (parity)
memory here.  I've seen 3 memory failures which the parity systems caught.
That's one failure every 65 or so Mbyte-years.  The usual mode of failure is
an isolated parity error, then another one a few months or weeks later, then
occuring with increasing frequency until eventually it becomes a hard error
at which time it becmes easy to track down using memory diagnostics.

	Lets assume that Mac memory is about as reliable as Sun memory
(although this may be apples and oranges, we're also comparing 1989
technology to 1986 technology).  We've got about 30 Mbytes of installed Mac
memory (not quite true; 8 of those are sitting on a shelf in front of me, but
should be installed this afternoon, but then again, I'm also currently
writing budget requests for Macs with another 10-20 Mbytes worth of ram)
here, so we should expect to see on the order of one memory failure every
other year.  Without parity to detect it, all we'll see is random unexplained
crashes (or worse, silent data corruption).

	So, I conclude that while Chuq's opinion is not totally off the wall,
he is erring on the side of risk, while I'm taking a more conservative point
of view.  A typical user with a 1 Meg MacPlus at home might very well not see
a parity error for decades (i.e. never).  On the other hand, for any place
with an installed base of more than a couple of Macs, the odds that they will
see a parity error in the course of a few years is reasonably high.  And a
large shop, with dozens or even hundreds of Macs with lots of memory in each,
might be seeing many memory errors a year.  And, even if ram technology has
gotten better, there are other reasons why memory errors might occur (for
example, I suspect the snap-in SIMMs in Mac-IIs are more likely to suffer
mechanical connection problems than the soldered-in chips in our Sun-3/50s).
-- 
Roy Smith, Public Health Research Institute
455 First Avenue, New York, NY 10016
{att,philabs,cmcl2,rutgers,hombre}!phri!roy -or- roy@alanine.phri.nyu.edu
"The connector is the network"

chuq@Apple.COM (Chuq Von Rospach) (09/22/89)

>Gee ... I thought apples (Macs) didn't have parity circuitry built in
>to them.  Parity mem in a Mac is just wasted!? 

The new Mac IIci supports parity as an option. It is currently the only Mac
that has parity support.

-- 

Chuq Von Rospach <+> Editor,OtherRealms <+> Member SFWA/ASFA
chuq@apple.com <+> CI$: 73317,635 <+> [This is myself speaking. I am not Appl
Segmentation Fault. Core dumped.

jpainter@tjp.East.Sun.COM (John Painter - Sun BOS Hardware) (09/23/89)

In article <34935@apple.Apple.COM> chuq@Apple.COM (Chuq Von Rospach) writes:

>There's no reason why a 'normal' user needs parity unless their applications
>require extremely high reliability.

Gee ... I thought apples (Macs) didn't have parity circuitry built in
to them.  Parity mem in a Mac is just wasted!? 

BTW I have some parity simms (happened on a good deal) and some non-parity
(happened on an even better deal) simms in my SE with no bad effects.

(Also one simm has mixed 100ns and 80ns parts.  Hardware doesn't care,
It just wants 'em faster than 150ns (120ns for MacIIs and up??)
/Tjp
-disclaimer I just right software and build computers.  Why would I know?

pepke@loligo (Eric Pepke) (09/23/89)

In article <34935@apple.Apple.COM> chuq@Apple.COM (Chuq Von Rospach) writes:
>Parity RAM is 9 bit ram SIMMS (and support hardware) instead of 8 bit ram
>SIMMS. Parity RAM is more expensive, not any faster and somewhat more
>reliable, although RAM reliability is high enough these days that unless
>you're writing RFC's for government contracts or totally paranoid, not
>terribly useful. 
>
>All parity does is check to make sure that the eight bits you wrote into the
>RAM come out again the same way (but only if you flip one bit. Parity
>doesn't cover multi-bit errors. You need ECC to do that).

Parity memory is less, not more, reliable than non-parity memory.  All that
parity does is, under certain conditions, alert the processor that a single
bit error has occured.  The effect of parity on most systems is to halt the
processor or kill the process rather than allow the program blithely to 
process the value on the assumption that it is correct.

Because parity requires an extra bit per byte, it actually increases the 
probability that bit errors will occur.  Assuming all the obvious things, 
parity memory will be about 9/8 as likely to fail within a period of time 
as non-parity memory.  About 1/9 of these failures will be failures of the 
parity bit which can be avoided by leaving the parity bit out of the system.

As far as multi-bit errors go, there is a well-known kind of ECC called
SECDED (Single Error Correction Double Error Detection), and it's obvious
what that does.  There are a lot of ways to detect multi-bit errors without 
using ECC, including the ever-popular CRC.

>There's no reason why a 'normal' user needs parity unless their applications
>require extremely high reliability.

Even a user who requires high reliability would not get it from parity.  
Parity would only benefit people who would rather see the system hang than
produce a wrong answer or execute a wild instruction.  Parity only changes
the kind of unreliability.  Which kind is the more desirable is debatable 
and may be a matter of taste.

Eric Pepke                                     INTERNET: pepke@gw.scri.fsu.edu
Supercomputer Computations Research Institute  MFENET:   pepke@fsu
Florida State University                       SPAN:     scri::pepke
Tallahassee, FL 32306-4052                     BITNET:   pepke@fsu

Disclaimer: My employers seldom even LISTEN to my opinions.
Meta-disclaimer: Any society that needs disclaimers has too many lawyers.

nagle@well.UUCP (John Nagle) (09/25/89)

In article <4004@phri.UUCP> roy@phri.UUCP (Roy Smith) writes:
>In <0xe23@deimos.cis.ksu.edu> paryavi@harris.cis.ksu.edu (Saiid Paryavi):
>... and the
>memory system as a whole will probably be slower, even if the ram chips
>themselves are the same speed, because of the added parity generation and
>checking required. 

     In general, this isn't the case, and nothing in the Apple data sheets
indicates that there's a speed penalty associated with installing parity
memory in the Mac.  In systems that don't correct errors, most designs
don't hold up delivery of the data on a read until the parity check is
made.  With ECC, it's a different story, since the correction logic has
to delay delivery of the data at least until the check is complete, and
in the presence of errors, perhaps longer.

     The big unanswered question is what happens when a parity error is
detected.  Does the Mac OS properly support the detection hardware, and
if so, what does it do with an error?  Does A/UX support it?  Is there
error logging, as on Sun machines?  It would be good to get field
experience with the error logs, and find out what the real error rates
are.

					John Nagle