In one embodiment, an input/output memory management unit (IOMMU)
comprises a cache to cache translation data from memory; and a control
unit coupled to the cache. The control unit is configured to implement
address translation and memory protection for memory requests sourced by
one or more input/output (I/O) devices. The memory requests sourced by
the I/O devices travel in one or more first virtual channels, and the
control unit is configured to transmit memory requests sourced by the
control unit in at least a second virtual channel separate from the first
virtual channels.