When I was a student, my algorithms professor (who was strong in VLSI), told me that pretty much anything you can do in hardware, you can do in software, and vice versa. I assume she meant in terms of computability, not in terms of performance. She didn't teach me this part, but generally hardware has the ability to squeeze out a bit more performance, and may cost more or less than a software rendition, but hardware is often harder to fix than software if there are problems in the implementation, especially if you cannot flash in new firmware to fix it. On the other hand, sometimes a hardware implementation will be -slower- than a software implementation - not because of any inherent performance limitation of hardware implementation, but rather because sometimes the hardware designers will err on the side of keeping costs down, in which case an otherwise-unloaded software implementation on a nice system could well outperform the hardware implementation - and I gather this is not at all uncommon in the RAID world.