IP Library Granted Patent US 7,543,131
Granted Patent B2
US 7,543,131 · App. 11/503,390 · Granted Jun 2, 2009

Controlling an I/O MMU

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,543,131
App. No.
11/503,390
Granted
Jun 2, 2009
Kind
B2
Abstract

In an embodiment, a computer system comprises a processor; a memory management module comprising a plurality of instructions executable on the processor; a memory coupled to the processor; and an input/output memory management unit (IOMMU) coupled to the memory. The IOMMU is configured to implement address translation and memory protection for memory operations sourced by one or more input/output (I/O) devices. The memory stores a command queue during use. The memory management module is configured to write one or more control commands to the command queue, and the IOMMU is configured to read the control commands from the command queue and execute the control commands.

Claims (57)

1. A method comprising:

creating a command queue in a system memory of a computer system that also includes an input/output memory management unit (IOMMU) configured to implement address translation and memory protection for memory requests sourced by one or more input/output (I/O) devices in the computer system;

writing one or more control commands to the command queue by a memory management module executable on a processor in the computer system; and

the IOMMU reading the control commands from the command queue and executing the commands, wherein the control commands comprise invalidate commands defined to invalidate cached translation data in the IOMMU, wherein the cached translation data is used by the IOMMU to perform the address translation and memory protection for memory requests sourced by the I/O devices.

2. The method as recited in claim 1 wherein at least one of the I/O devices comprises an I/O translation lookaside buffer (IOTLB), and wherein the invalidate commands include a command to invalidate one or more entries in the IOTLB.

3. The method as recited in claim 1 wherein I/O devices are mapped to translation tables in the memory through a device table, and wherein the invalidate commands include a command to invalidate one or more cached device table entries.

4. The method as recited in claim 1 wherein the control commands comprise a completion wait command, wherein the method further comprises the IOMMU completing preceding control commands prior to completing the completion wait command.

5. The method as recited in claim 4 further comprising the IOMMU providing a completion indication responsive to executing the completion wait command.

6. The method as recited in claim 5 wherein the completion indication is an interrupt of a processor in the computer system.

7. The method as recited in claim 5 wherein the completion indication comprises a write to a memory location of the memory identified by an address operand of the completion wait command, wherein the write data is also an operand of the completion wait command.

8. The method as recited in claim 5 wherein writing one or more control commands comprising writing one or more control commands followed by the completion wait command, wherein the memory management unit determines that the preceding control commands have completed by detecting the completion indication.

9. The method as recited in claim 1 further comprising:

creating an event log in the system memory;

the IOMMU detecting one or more events;

the IOMMU writing the events to the event log; and

the memory management module reading the events from the event log.

10. The method as recited in claim 9 further comprising the IOMMU sending an interrupt to a processor subsequent to writing one or more events into the event log.

11. The method as recited in claim 1 wherein the system memory is a target of the memory requests sourced by the one or more I/O devices.

12. A method comprising:

creating a command queue in a memory of a computer system that also includes an input/output memory management unit (IOMMU) configured to implement address translation and memory protection for memory requests sourced by one or more input/output (I/O) devices in the system;

writing one or more control commands to the command queue by a memory management module executable on a processor in the computer system;

the IOMMU reading the control commands from the command queue and executing the commands, wherein the control commands comprise a completion wait command;

the IOMMU completing preceding control commands prior to completing the completion wait command, and wherein the completion wait command comprises an attribute specifying whether or not to inhibit initiation of subsequent commands to the completion wait command prior to completing the completion wait command; and

inhibiting initiation of the subsequent commands responsive to the attribute.

13. The method as recited in claim 12 further comprising the IOMMU providing a completion indication responsive to executing the completion wait command.

14. The method as recited in claim 13 wherein the completion indication is an interrupt of a processor in the computer system.

15. The method as recited in claim 13 wherein the completion indication comprises a write to a memory location of the memory identified by an address operand of the completion wait command, wherein the write data is also an operand of the completion wait command.

16. The method as recited in claim 13 wherein writing one or more control commands comprising writing one or more control commands followed by the completion wait command, wherein the memory management unit determines that the preceding control commands have completed by detecting the completion indication.

17. A computer system comprising:

a processor;

a memory management module comprising a plurality of instructions executable on the processor;

an input/output memory management unit (IOMMU) configured to implement address translation and memory protection for memory operations sourced by one or more input/output (I/O) devices; and

a memory subsystem comprising a memory controller and a memory coupled to the memory controller;

wherein the memory stores a command queue during use, and wherein the memory management module is configured to write one or more control commands to the command queue, and wherein the IOMMU is configured to read the control commands from the command queue and execute the control commands, and wherein the control commands comprise invalidate commands defined to invalidate cached translation data in the IOMMU, wherein the cached translation data is used by the IOMMU to perform the address translation and memory protection for memory requests sourced by the I/O devices.

18. The computer system as recited in claim 17 wherein the control commands comprise a completion wait command, wherein the IOMMU is configured to complete preceding control commands prior to competing the completion wait command.

19. The computer system as recited in claim 18 wherein the IOMMU is configured to provide a completion indication responsive to executing the completion wait command.

20. The computer system as recited in claim 19 wherein the completion indication is an interrupt of the processor.

21. The computer system as recited in claim 19 wherein the completion indication comprises a write to a memory location of the memory identified by an address operand of the completion wait command, wherein the write data is also an operand of the completion wait command.

22. The computer system as recited in claim 17 further comprising a second memory management unit (MMU) coupled to the processor and configured to provide address translation and memory protection for memory requests sourced by the processor.

23. The computer system as recited in claim 17 wherein the memory is configured to store an event log during use, and wherein the IOMMU is configured to write detected events to the event log, and the memory management module is configured to read the events from the event log.

24. The computer system as recited in claim 23 wherein the IOMMU is configured to send an interrupt to the processor subsequent to writing the detected events to the event log.

25. The computer system as recited in claim 17 wherein the memory is a target of the memory operations sourced by the one or more I/O devices.

26. A computer system comprising:

a processor;

a memory management module comprising a plurality of instructions executable on the processor;

a memory coupled to the processor; and

an input/output memory management unit (IOMMU) coupled to the memory and configured to implement address translation and memory protection for memory operations sourced by one or more input/output (I/O) devices;

wherein the memory stores a command queue during use, and wherein the memory management module is configured to write one or more control commands to the command queue, and wherein the IOMMU is configured to read the control commands from the command queue and execute the control commands, wherein the control commands comprise a completion wait command, wherein the IOMMU is configured to complete preceding control commands prior to competing the completion wait command, and wherein the completion wait command comprises an attribute specifying whether or not to inhibit initiation of subsequent commands to the completion wait command prior to completing the completion wait command, wherein the IOMMU is configured to inhibit initiation of the subsequent commands responsive to the attribute.

27. The computer system as recited in claim 26 wherein the IOMMU is configured to provide a completion indication responsive to executing the completion wait command.

28. The computer system as recited in claim 27 wherein the completion indication is an interrupt of the processor.

29. The computer system as recited in claim 27 wherein the completion indication comprises a write to a memory location of the memory identified by an address operand of the completion wait command, wherein the write data is also an operand of the completion wait command.

30. An input/output memory management unit (IOMMU) comprising:

one or more control registers programmable to locate a command queue in system memory;

a cache to cache translation data from the system memory; and

a control logic coupled to the cache and the control registers, wherein the control logic is configured to execute the control commands from the command queue, and wherein the control logic is configured to implement address translation and memory protection for memory requests sourced from one or more input/output (I/O) devices, and wherein the control commands comprise invalidate commands defined to invalidate cached translation data in the IOMMU, wherein the cached translation data is used by the IOMMU to perform the address translation and memory protection for memory requests sourced by the I/O devices.

31. The IOMMU as recited in claim 30 wherein the cache comprises a translation lookaside buffer.

32. The IOMMU as recited in claim 30 wherein the control logic is configured to write to an event log in the memory.

Assignments (7)
RELEASE OF SECURITY INTEREST Recorded May 12, 2021
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: GLOBALFOUNDRIES U.S. INC.
Reel/Frame 056987/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2021
From: GLOBALFOUNDRIES US INC.
To: MEDIATEK INC.
Reel/Frame 055173/0781 →
RELEASE OF SECURITY INTEREST Recorded Nov 20, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: GLOBALFOUNDRIES INC.
Reel/Frame 054636/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 2, 2020
From: GLOBALFOUNDRIES INC.
To: GLOBALFOUNDRIES U.S. INC.
Reel/Frame 054633/0001 →
SECURITY AGREEMENT Recorded Nov 29, 2018
From: GLOBALFOUNDRIES INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 049490/0001 →
AFFIRMATION OF PATENT ASSIGNMENT Recorded Aug 18, 2009
From: ADVANCED MICRO DEVICES, INC.
To: GLOBALFOUNDRIES INC.
Reel/Frame 023119/0083 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 2, 2006
From: HUMMEL, MARK D.; LUECK, ANDREW W.; STRONGIN, GEOFFREY S.; ALSUP, MITCHELL; HAERTEL, MICHAEL J.
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 018443/0792 →