If memory must be prepared long in advance of the transfer, the driver can reduce the execution overhead by postponing cache manipulations. This is because cache manipulations are wasted if the buffer will be accessed normally before the transfer. By omitting both kIOIsInput and kIOIsOutput from the options field, the driver prevents PrepareMemoryForIO from manipulating the caches at that time. Later, the driver calls CheckpointIO just prior to the transfer to prepare the caches. This is part of the technique discussed in the Multiple Transfers.