Virtual memory is used in most modern general purpose computer
systems. This invention simplifies systems and increases their
usability and efficiency.
In recent years, I/O devices also started using virtual addresses.
However support for I/O page faults is still lacking. I/O devices are
designed under the assumption that the virtual addresses they are
using are always valid and the software is forced to makes sure that
this is indeed the case. This deficiency deprives one class of
software from the benefits of virtual memory: it prevents
memory overcommitment, complicates the programming model and hinders
The effected software class is exclusively comprised of software that
performs direct I/O, which is the act of accessing I/O devices
without any involvement of intermediary privileged software such as
the operating system (OS) kernel or the hypervisor. Prominent example
of this are direct device assignment of SR-IOV (single root I/O
virtualization) instances in virtualization scenarios and kernel
bypassing access to I/O devices by user space applications.
This thesis presents a working hardware and software support for I/O
page faults (IOPFs) in a network interface card (NIC). It described
the challenges involved in implementing this support and demonstrates
that an IOPF-enabled NIC allows for efficient memory overcommitment.