Thread: IDE RAID
View Single Post
  #21  
Old September 20th 04, 09:28 PM
Ron Reaugh
external usenet poster
 
Posts: n/a
Default


"Paul" wrote in message
...
In article ,
Leythos wrote:

In article ,
says...
Nothing in that spec sheet says anything about HW RAID. The ICH5R

does NOT
do HW RAID. There is no uP and NO buffer. Such are requirements of

HW
RAID.


I may be missing something here, but I don't see anything that states
for something to be a raid controller that it must have a CPU or Cache.
As long as the chipset, using any firmware, handles the communications
with the drive and provides RAID 0/1/5 ability, it's Hardware Based
RAID.

If I use a non-RAID chipset and require the OS to process everything,
then it's soft RAID.

If I'm lucky enough to get cache and a CPU on the controller then I get
even faster RAID.

As I see it, the Promise or Intel RAID chipsets on some motherboards
provide the functionality needed to be considered hardware RAID. Sure,
they don't have their own CPU's, but they do have their own BIOS, do
have their own firmware, do take commands from the OS, and do allow the
creation, building, rebuilding of RAID Arrays before the OS is even
installed on the system.


My understanding of hardware raid is as follows:

For a mirror:

If the OS prepares precisely one block of memory, with data
to be read or written, and the hardware solution takes that
block of memory and reads or writes to two disks, and only
returns "complete" status to the OS when both disks finish,


Exactly. And no host based x86 code nor host I/O bus structure is involved
in between. The block gets busmastered DMA-ed just once.

that is hardware RAID. If the OS has to issue two commands
to the hardware, saying write this to disk 0, then says write
this to disk 1, that is software RAID.


Exactly...that's what happens for both the ICH5R and onmobo Promise but not
the 3Ware nor other true HW RAID.

For a stripe:

If the OS prepares precisely one block of memory, and
issues one command to the hardware, and the hardware
alternates writing stripe-sized chunks of data to the
two drives, that is hardware RAID.


Exactly.

If the OS chunkifies
the original large memory block, and alternates commands
to the two channels to write a stripe of data to the drives,
that is software RAID.


Exactly and is what the ICH5R and Promise do.

The difference is in the overhead.


Right and for RAID 0 and RAID 1 that SW RAID overhead isn't that big.

With DMA transfer, the
largest overhead of data movement by the processor is
removed.


Right, but DMA does use bus bandwidth which can slow CPU and other I/O
operations.

So, these days, it will be harder to tell whether
the solution is hardware or software based underneath.


The first order way to tell is the presence of a uP on/in the RAID
controller that hosts a full low level full robust disk driver and that's
not x86 code most often. Also there'll be significant buffering onboard
that RAID controller where the data is held while the RAID processes operate
as you describe above.

It
will be hard to tell from the remaining level of overhead,
to what extent the hardware hides the details of how the
disk subsystem is wired up, and what it is
(mirror or stripe).


Exactly, the difference between SW/firmware RAID and hardware RAID for
simple RAID 0 and RAID 1 is SMALL. For RAID 10 and especially RAID 5 then
hardware RAID becomes distinctly superior.

What you didn't describe above is RAID 5. RAID 5 can be thought of as RAID
0 plus parity. True hardware RAID 5 uses its onboard uP to calculate the
parity using code hosted in the controller memory and nothing in the x86
host. That onboard uP access the data from its onboard cache thus adding NO
additional host bus structure overhead.

The quality of any solution will be measured in two
parameter - max steady state bandwidth (HDTach) and
percent CPU while doing it. So, experiment and find out.


Right.

Whether RAID is hardware or software is based on the
level of abstraction. If the OS/driver, when viewing
the hardware, thinks it is dealing with a single disk,
when in fact the controller handles all the details of
running the RAID, that is a hardware controller.


Yes.

If the
OS is aware


You mean any x86 host based code or driver involved in regular I/O to the
array.

of the details underneath, to achieve basic
data transport, then it is a software based controller.


Right.

Notice that my definition doesn't cover implementation,
so you don't need to know the private details of how it
is done, to have a definition.


Right but the reality of the real world provides some rather good litmus
tests to differentiate hardware from software/firmware RAID.