There are three main modes of data transfer between CPU and I/O devices:
1) Programmed I/O where the CPU actively manages all data transfers by executing I/O instructions.
2) Interrupt-driven I/O where devices interrupt the CPU when data is available to transfer, allowing the CPU to perform other tasks in the meantime.
3) Direct Memory Access (DMA) where an I/O controller directly accesses memory to transfer data without CPU involvement, freeing up the CPU.