[comp.sys.mac] Parity checking

torch@attctc.Dallas.TX.US (Jay Finger) (09/23/89)

I don't have any info from Apple which will allow me to say all this with 100%
certainty, but the comments I've seen here to the effect that parity checking
will slow memory accesses seem rather silly.  What follows is my explanation
of why I think that the parity feature probably does not slow down the memory
subsystem, and even better yet, that it's all a moot point anyhow.  It tends
to get a bit technical, and I'm not going to bother explaing any terms here.

Before I go rambling on here I guess (for fairness' sake) I should state that
allthough I do support myself to some degree by designing digital circuits
(I mostly do software) I have little experience with dynamic RAM system design.
If I say something wrong I'd appreciate being set straight.

Let's assume for a moment that Apple used a discrete off-the-shelf chip to
do the parity generation and checking.  A 74FCT833B could combine the data
bus buffering (which has to be done whether or not you're using parity) and
the parity logic on one chip.  I picked that chip only because it was in a
databook that I had sitting on my desk, not because it's the fastest
available (I'd be surprised if it were).  When writing to memory the data
would get through the chip only 4ns before the parity bit. When reading from
memory an error signal would be available 1ns after the data.  Allthough
these are worst case conditions (typical response times would be better) any
halfway decent engineer uses the worst case values.  Even though the 4ns
needs to be considered in the timing chain there are other things going on
at the same time.  For starters, address decoders need to figure out which
bank of ram you're accessing, and there are certain minimum pulse widths
for the strobe signals that are sent to the RAMs.  As a result there are many
places where that 4ns could be hidden.

Now the assumption that Apple would use an off-the-shelf general-purpose chip
for this purpose is ludicrous when you consider how many large ASICs they
designed for that board.  The internal delays in these chips are much shorter
that the delays encountered when using discrete logic chips.  Also, since you
have so many gates available to you you can handle much of the memory logic in
one chip in whatever way best suits your situation.  What this all adds up to
is that the designer now has tens (if not hundreds) of places in which to
hide the time that it takes to do the parity generation/checking.  By hiding
I'm not trying to imply that somebody's coming up with a kludge, it's merely a
matter of doing separate things in parallel.

Now that we have a way to lose the extra time it takes to handly the parity
bit, I'm happy to tell you that it probably doesn't matter anyhow.  The
chances are quite good that the IIci systems without parity support actually
do all the work all the time anyhow:  it's probably all a matter of disabling
the signal that generates an interrupt when an error is found.  Writing a
parity bit to a RAM chip that doesn't exist (the empty 9th space on your 8-bit
SIMM) certainly doesn't hurt anything.  When read from 8-bit SIMMS you'll get
a parity error 50% of the time since that 9th data bit will be more or less
random, but since we've disabled the interrupt, who cares?  To not implement
the no-parity feature in this way could end up leading to two separate timing
circuits.

I felt that this was all pretty important because I'd hate for anyone to
pass up parity merely because of a false belief that your computer will
suffer a speed penalty.  While it's true that you increase the potential
of a memory error by 9/8, you will have greatly increased the chances of
your finding out about it when it does happen.  I personally would like to
know if a piece of date in a spreadsheet (or whatever I'm working on) changes
randomly.

I hope I haven't spread any falsehoods here, but if I have I would be more
than happy to be corrected/educated.

------------------------------------------------------------------------------
Jay Finger  (214) 298-5915            |If all you do is treat symptoms, you'll
UUCP:   {ames, mit-eddie}!attctc!torch|continue to see more symptoms forever.
DOMAIN: ames!torch@attctc.dallas.tx.us|                    -- Tom van Vleck
==============================================================================

torch@attctc.Dallas.TX.US (Jay Finger) (09/23/89)

My comment that parity increased the likelihood of a memory error by 9/8
was wrong (a small case of brain-lock on my part).  It's really only
12.5%.

------------------------------------------------------------------------------
Jay Finger  (214) 298-5915            |If all you do is treat symptoms, you'll
UUCP:   {ames, mit-eddie}!attctc!torch|continue to see more symptoms forever.
DOMAIN: ames!torch@attctc.dallas.tx.us|                    -- Tom van Vleck
==============================================================================

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

In <9451@attctc.Dallas.TX.US> torch@attctc.Dallas.TX.US (Jay Finger) writes:
> Writing a parity bit to a RAM chip that doesn't exist (the empty 9th space
> on your 8-bit SIMM) certainly doesn't hurt anything.

	As long as the missing chip is the same speed as all the other chips
in the SIMM.  Don't go mixing 80ns chips with 70ns spaces or you'll get
memory heartburn! :-)
-- 
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"

torch@attctc.Dallas.TX.US (Jay Finger) (09/25/89)

In article <4009@phri.UUCP>, roy@phri.UUCP (Roy Smith) writes:
> In <9451@attctc.Dallas.TX.US> torch@attctc.Dallas.TX.US (Jay Finger) writes:
> > Writing a parity bit to a RAM chip that doesn't exist (the empty 9th space
> > on your 8-bit SIMM) certainly doesn't hurt anything.
> 
> 	As long as the missing chip is the same speed as all the other chips
> in the SIMM.  Don't go mixing 80ns chips with 70ns spaces or you'll get
> memory heartburn! :-)
> -- 
> Roy Smith, Public Health Research Institute

If that 9th chip is missing how can it have a speed.  The idea here is that
the CAS, RAS, WR, etc signals are just going off into never-never land.  The
parity bit will never get written (since there's nothing to write it into).
When you read it back there's no chip to drive the data line, so it either
comes back random or it'll float low or high all the time.  It doesn't matter
because if you're using 8-bit SIMMS you've parity disabled so the error is
never caught.

------------------------------------------------------------------------------
Jay Finger  (214) 298-5915            |If all you do is treat symptoms, you'll
UUCP:   {ames, mit-eddie}!attctc!torch|continue to see more symptoms forever.
DOMAIN: ames!torch@attctc.dallas.tx.us|                    -- Tom van Vleck
==============================================================================

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

In article <4009@phri.UUCP>, I wrote:
-> Don't go mixing 80ns chips with 70ns spaces or you'll get memory
-> heartburn! :-)

In <9460@attctc.Dallas.TX.US> torch@attctc.Dallas.TX.US (Jay Finger) replies:
-> If that 9th chip is missing how can it have a speed.

Uh, Jay.  Didn't you notice the little smiley face I put in?
-- 
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"