A controller offers a level of abstraction between an operating system and the physical drives. A RAID controller presents groups to applications and operating systems as logical units for which data protection schemes can be defined. Because the controller has the ability to access multiple copies of data on multiple physical devices, it has the ability to improve performance and protect data in the event of a system crash.
In hardware-based RAID, a physical controller is used to manage the RAID array. The controller can take the form of a PCI or PCI Express (PCIe) card, which is designed to support a specific drive format such as SATA or SCSI. (Some RAID controllers can also be integrated with the motherboard.) A RAID controller may also be software-only, using the hardware resources of the host system. Software-based RAID generally provides similar functionality to hardware-based RAID, but its performance is typically less than that of the hardware versions.