GR740-UM-DS, Nov 2017, Version 1.7
121
www.cobham.com/gaisler
GR740
12
IOMMU - Bridge connecting Master I/O AHB bus
12.1
Overview
The IOMMU is a bridge that connects the Master I/O AHB bus to the Processor AHB bus and to the
Memory AHB bus. AHB transfer forwarding is performed in one direction, where AHB transfers to
the slave interface are forwarded to one of the master interfaces. The bridge can be configured to pro-
vide access protection and address translation for AMBA accesses traversing over the core. Access
protection can be provided using a bit vector to restrict access to memory. Access protection and
address translation can also be provided using page tables in main memory, providing full IOMMU
functionality. Both protection strategies allow devices to be placed into eight groups that share data
structures located in main memory. The protection and address translation functionality provides pro-
tection for memory assigned to processes and operating systems from unwanted accesses by units
capable of direct memory access.
Applications of the core include system partitioning, clock domain partitioning, system expansion and
secure software partitioning.
Features offered by the core include:
•
Single and burst AHB transfer forwarding
•
Access protection and address translation that can provide full IOMMU functionality
•
Devices can be placed into groups where a group shares page tables / access restriction vectors
•
Hardware table-walk
•
Efficient bus utilization through data prefetching and posted writes
•
Read and write combining, improves bus utilization and allows connecting cores with differing
AMBA access size restrictions.
12.2
Bridge operation
12.2.1 General
The first sub sections below describe the general AHB bridge function. The functionality providing
access restriction and address translation is described starting with section 12.3. In the description of
AHB accesses below the core propagates accesses from the Master I/O AHB bus to one of its master
interfaces (Processor AHB bus or Memory AHB bus).
The core occupies the full 4 GiB AMBA address space on the Master I/O AHB bus and is capable of
handling single and burst transfers generated by the AHB masters on the Master I/O bus.
For AHB write transfers write data is always buffered in an internal FIFO implementing posted
writes. For AHB read transfers the core uses GRLIB’s AMBA Plug&Play information to determine
whether the read data will be prefetched and buffered in an internal FIFO. If the target address for an
AHB read burst transfer is a prefetchable location the read data will be prefetched and buffered.
The core will insert wait states when handling an access. The core will still issue RETRY when the
core is busy emptying it’s write buffer on the master side.
12.2.2 Multi-bus bridge
The bridge has two AHB master interfaces connected to separate AHB buses. The bus select fields in
the bridge’s Master configuration registers allows the user to select which AHB master interface that
should be used for accesses initiated by a specific master on the Master I/O AHB bus. This selection
can be overridden by a field in the IOPTE when IOMMU protection is enabled. Otherwise the Master
configuration register for a master selects which bus accesses from the master will be propagated to.
The bus selection is valid even if the IOMUU is disabled via the control register’s EN bit.