an emulator schedules emulation threads for dma emulation and other emulation functions in a time - multiplexed manner . emulation threads are selected for execution according to a load balancing scheme . non - dma emulation threads are executed until their execution time period expires or they stall . dma emulation thread execution is allowed to execute indefinitely until the dma emulation thread stalls . the dma emulation thread prefetches additional adjacent data in response to target computer system dma requests . upon receiving a target computer system dma request , the dma emulation thread first checks to the prefetched data to see if this data matches the request . if so , the request is fulfilled using the prefetched data . if the prefetched data does not match the target computer system dma request , the dma emulation thread fetches and stores the requested data and additional adjacent data for potential future use .