Data storage systems often have particular processing needs. For example, some storage systems allow some or all data to be encrypted. Some storage systems provide a multipathing feature to allow data to travel over multiple paths before being written to disk. This may be done to allow for redundancy. It may also be done to increase bandwidth or to distribute load.
In some data storage systems, these particular processing needs are performed in software by a central processing unit (CPU). In particular, data encryption is often performed by a crypto kernel as part of the software used to control the storage system. Path selection for use with multipathing is also often performed by a multipathing module as part of the storage system software. It may be noted that path selection may also involve selecting a particular port of a storage device from a plurality of available ports.
Some storage systems make use of storage devices that incorporate read-ahead caches. These read-ahead caches read several blocks ahead of any given read operation in order to increase efficiency in sequential read operations. This efficiency results from minimizing the need to continually access the disk platters, since disk access operations are much more expensive than cache reads.