Chained hybrid input/output memory management unit
AssigneeAdvanced Micro Devices, Inc.
InventorsMichael Haertel, Mark D. Hummel, Geoffrey S. Strongin, Andrew W. Lueck, Mitchell Alsup
Life of this patent
Estimating the term…
Abstract
In one embodiment, an input/output (I/O) node comprises an I/O memory management unit (IOMMU) configured to translate memory requests. The I/O node is configured to couple to an interconnect and to operate as a tunnel on the interconnect, and wherein the IOMMU is configured translate memory requests passing through the tunnel in the upstream direction. In another embodiment, a system comprises another I/O node configured to bridge another interconnect to the interconnect, wherein the I/O node is the tunnel for the other I/O node.
Claims18
An input/output (I/O) node comprising:
- an I/O memory management unit (IOMMU) configured to translate memory requests, including translating addresses of memory requests;
- and
- the I/O node is configured to couple to an interconnect that comprises a plurality of links having a same protocol, and the I/O node is configured to couple to two of the plurality of links, and one of the two links is designated an upstream link and another one of the two links is designated a downstream link, and the I/O node is configured to operate as a tunnel on the interconnect, and wherein the IOMMU is configured to translate memory requests received from the downstream link and passing through the tunnel in the upstream direction on the interconnect, and the I/O node is configured to transmit the translated memory requests on the upstream link and wherein the IOMMU comprises a control register programmable with an enable indication indicating whether or not translation of the memory requests passing through the tunnel is enabled, wherein the IOMMU is configured to translate the memory requests passing through the tunnel if the enable indication indicates enabled, and wherein the IOMMU is configured to pass the memory requests unmodified if the enable indication indicates disabled, and wherein the I/O node is configured to transmit translated memory requests on the upstream link that are received from one or more I/O devices that are coupled to the I/O node separate from the interconnect, and wherein the IOMMU is configured to translate memory requests from the one or more I/O devices even if the enable indication indicates disabled.
A system comprising:
- a first input/output (I/O) node configured to bridge a first interconnect to a second interconnect;
- and
- a second I/O node configured to bridge a third interconnect to the second interconnect, wherein the first I/O node is coupled to the second I/O node via the second interconnect, and wherein the second I/O node is configured to operate as a tunnel for memory requests from the first I/O node traveling upstream, and wherein the second I/O node comprises an I/O memory management unit (IOMMU) configured to translate memory requests from the third interconnect and to translate memory requests from the first I/O node, wherein translating the memory requests includes translating addresses of the memory requests, and wherein the IOMMU comprises a control register programmable with an enable indication indicating whether or not translation of the memory requests passing through the tunnel is enabled, wherein the IOMMU is configured to translate the memory requests passing through the tunnel if the enable indication indicates enabled, and wherein the IOMMU is configured to pass the memory requests unmodified if the enable indication indicates disabled, and wherein the second I/O node is configured to transmit translated memory requests on an upstream link that are received from one or more I/O devices that are coupled to the second I/O node separate from the interconnect, and wherein the IOMMU is configured to translate memory requests from the one or more I/O devices even if the enable indication indicates disabled.
A method comprising:
- receiving a memory request from a downstream link of a first interconnect into an input/output (I/O) node, the memory request traveling upstream on the first interconnect, wherein the I/O node operates as a tunnel on the first interconnect;
- translating the memory request using an I/O memory management unit (IOMMU) in the I/O node, wherein the translating comprises translating an address of the memory request, wherein the translating is further responsive to an enable indication that controls whether or not translation of memory requests traveling in the tunnel is enabled, wherein the IOMMU is configured to translate the memory requests passing through the tunnel if the enable indication indicates enabled, and wherein the IOMMU is configured to pass the memory requests unmodified if the enable indication indicates disabled;
- forwarding the translated memory request on an upstream link of the first interconnect, wherein the downstream link and the upstream link have the same protocol;
- receiving a second memory request from a device separate from the downstream link and the upstream link;
- translating the second memory request from the device even when the enable indication indicates disabled;
- and
- forwarding the translated second memory request on the upstream link.
Dependencies are inferred from the claim text.