*BSD News Article 32074


Return to BSD News archive

Newsgroups: comp.os.386bsd.questions
Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!msuinfo!agate!howland.reston.ans.net!swrinde!elroy.jpl.nasa.gov!decwrl!netcomsv!netcom.com!mld
From: mld@netcom.com (Matthew Deter)
Subject: Re: 16 MB RAM and Adaptec 1542C
Message-ID: <mldCrzoI2.BLw@netcom.com>
Organization: NETCOM On-line Communication Services (408 261-4700 guest)
X-Newsreader: TIN [version 1.2 PL1]
References: <2udhe3$ofk@toads.pgh.pa.us> <mldCrxqM7.7wp@netcom.com>
Date: Sun, 26 Jun 1994 05:27:37 GMT
Lines: 54

Matthew Deter (mld@netcom.com) wrote:
: Bordin Sapsomboon (bordin@lis.pitt.edu) wrote:
: : I just found denoting message in the installation file telling that FreeBSD
: : system can have only <16 MB if the SCSI controller is Adaptec 1542C.
:                        ^^^
: make that "less than or equal to" not "less than"

At least one person emailed me and admonished me for being less than
helpful and dropping the context (the context of a new user question.)
The message was firm but not too hot.  :-)

Since it was not my intent to obfuscate the matter further and behave
like an asshole, let me explain a bit more.

A FreeBSD system per se is not limted to 16 megs.  A PC running the
ISA bus *is*.  The issue revolves around the way data is xfered from
disk to memory.  SCSI devices use DMA (direct memory access) to allow
data to flow directly from the SCSI host to the machine's DRAM without
CPU intervention.  Other schemes ("programmed" or "polled" I/O require
the CPU to touch all the data as it goes from disk to main memory,
acting as an intermediary.)

Since with SCSI we use DMA to move the data, the SCSI host must be
able to specify where in main memory the data is to end up (or come
from.)  The ISA bus (which is the bus used by the 154x controllers,
the 174x is the EISA bus version) has a 16-bit data bus (which is
mostly irrelevent to this discussion) and a 24-bit address bus.  The
addresses of main memory are placed on teh address bus during a DMA
transfer.

Since the addr bus is 24 bits, we get 2^24 = 16 Megs of DRAM addresses
for DMA on the ISA bus.  Other busses have 32 bit addr paths and
therefore can access 2^32 = 4 gigs of memory.  (quite a lot...  :-)

There is a way to rig the OS (FreeBSD) to access more than 16 megs of
RAM on an ISA bus box using "bounce buffers."  This is a scheme
whereby the CPU is called upon to shove the data across the 24-bit
barrier in a fasion more like polled I/O and less like DMA.  It works,
but is not as efficient as DMA.  If you already have an ISA machine,
this is a good solution for getting at more RAM, altho I personally would
not place more than 16 megs on an ISA machine, preferring to get
another bus on my mohterboard before moving to >16 megs of RAM.

I think the FAQ covers a lot of this, including where to find the
bounce buffer code and how to integrate it into FreeBSD.

Email me for the FAQ if you need it (or if this still doesn't make any
sense) , and accept my apologies for being so terse and unhelpful before.

-- 
   $$    Matthew Deter -- mld@netcom.com
  $$$$
 $$      "Whatever road I take, the guiding star is within me;  the guiding
  $$$$    star and the loadstone which point the way.  They point in but
     $$   one direction.  They point to me."
  $$$$
   $$                              -- from the novel _Anthem_ by Ayn Rand