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