Software RAID is a driver of the operating system or third party (in the case of Windows) which uses the host computer system (CPU+RAM+SATA controller) to construct a RAID array from multiple physical disks.
Hardware RAID is a "SCSI controller" that internally uses RAID and simulates a single volume via the SCSI/storport interface. Hardware RAID is physical; meaning you can touch the add-on RAID controller while you cannot touch a software RAID driver. The add-on controller will perform RAID while the operating system thinks its working on a single big disk; unaware of the multiple physical disks connected to the hardware RAID.
When using hardware RAID, your operating system does not know it has multiple disks. With software RAID, your operating system system sees the physical disks, and uses an internal driver to create a single volume out of multiple devices using the RAID driver. The RAID driver communicates directly with the harddrives, hides the physical drives from the rest of the software, and creates a new virtual storage device to be used for storage.
Key differences:
■software you can't touch; hardware you can
■software can't break permanently; hardware can
■software depends on the operating system used, and is usually specific for the operating system; a windows RAID driver does not work on Linux or Mac.
■hardware is more OS-independent. It still needs a driver to work, but it'll be a mini-driver that only acts as communication/bridge between software and the Hardware RAID controller add-on card.
■hardware traditionally has optimized firmware to accelerate random I/O patterns often found in servers. Most software RAID drivers are very simple and utilize few optimizations.
■software RAID allows more performance potential than hardware RAID; lower latency due to disks being directly connected, the ability to utilize dynamic stripesizes (impossible with hardware RAID) and the use of a faster CPU for the more computation-heavy RAID4/5/6 schemes.
■most software RAIDs consist of 'onboard RAID' drivers that do all the work; while people often think the onboard RAID controller does something special/different than a normal SATA controller; they are wrong. The driver does everything 'special'. The only thing the hardware support does, is allow booting and creating the RAID array.
In short, Windows RAID drivers often suck; their RAID0/1/0+1 performance may be okay, but their RAID5 support is often unreliable, low-performance and simply dangerous to use. Especially since people think they are safe with RAID5; while its actually a pretty dangerous RAID level for a lot of people.
Advanced (software) RAID drivers can be found on OpenSolaris and FreeBSD operating systems; the ZFS filesystem is the most advanced filesystem to date with internal RAID engine that utilizes dynamic stripesizes. Its also able to enhance reliability significantly, in ways impossible with traditional hardware RAID.
The following 'classes' of RAID can be distinguished:
■True Hardware RAID (PCI-express add-on card with dedicated CPU+RAM)
■Hardware-assisted RAID (Highpoint RR2400 series; real hardware RAID for RAID0/1 but software-assisted for parity RAID5).
■Onboard/Hybrid/Fake RAID (found on motherboards and cheap PCI/PCI-e controllers - uses software RAID drivers - acts as normal SATA controller otherwise)
■Software RAID (nothing you can 'touch' - uses any normal SATA disk/controller - able to mix HDDs connected to different controllers)
Hope any of this is useful.