Global Initialization: Things you do once to set your processor and I/O interface for the system. Transfer Initialization: Things you set to make sure that a transfer is successful, you do this every time you want to transfer.
Data transfer: Includes synchronization before and after the transfer.

Memory Mapped I/O

MMIO