1. An adaptive method of prefetching data blocks from an input/output device, said method comprising: predicting the address of each read operation reading a data block from said input/output device, the prediction based on the address of the immediately preceding read operation from said input/output device; tracking, for each said read operation, whether each said read operation reads a data block from the same address of the input/output device predicted for said read operation; and prefetching a data block for a read operation from said input/output device in accordance with the state of a state machine, the state of the state machine depending upon whether immediately preceding read operations read a block data from the same address of the input/output device predicted for said read operations.