IP Library Granted Patent US 10,489,302
Granted Patent B1
US 10,489,302 · App. 15/965,697 · Granted Nov 26, 2019

Emulated translation unit using a management processor

Inventors: Adi Habusha (Moshav Alonei Abba, IL); Leah Shalev (Zichron Yaakov, IL); Nafea Bshara (San Jose, CA)
Assignee: Amazon Technologies, Inc.
G06F12/1009G06F3/0604G06F3/0638G06F3/0673G06F9/45558G06F12/0802G06F2009/45583G06F2212/50G06F2212/60
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 10,489,302
App. No.
15/965,697
Filed
Apr 27, 2018
Granted
Nov 26, 2019
Kind
B1
Art Unit
2137
USPC
711/118
Abstract

An emulated input/output memory management unit (IOMMU) includes a management processor to perform page table translation in software. The emulated IOMMU can also include a hardware input/output translation lookaside buffer (IOTLB) to store translations between virtual addresses and physical memory addresses. When a translation from a virtual address to a physical address is not found in the IOTLB for an I/O request, the translation can be generated by the management processor using page tables from a memory and can be stored in the IOTLB. Some embodiments can be used to emulate interrupt translation service for message based interrupts for an interrupt controller.

Claims (31)

1. A system comprising:

a first processor configured to execute a first context and a second context;

a memory communicatively coupled to the first processor, wherein the memory is configured to store page tables that are used for generating translations between addresses for the first context and physical addresses for the memory, and generating translations between addresses for the second context and the physical addresses for the memory;

a translation cache configured for storing translations between the addresses from the first context and the physical addresses for the memory; and

a second processor communicatively coupled to the memory and to the translation cache, the second processor configured to execute instructions stored in a non-transitory computer readable medium that cause the second processor to:

perform context switching on the translation cache from the first context to the second context, wherein performing the context switching includes pre-loading the translation cache with a set of translations for the second context;

receive a request from the first processor for a translation from an address for the second context to a physical address for the memory, wherein the translation is not already in the translation cache;

generate the translation using the page tables stored in the memory; and

store the translation for the request in the translation cache.

2. The system of claim 1 , wherein the translation cache is a hardware translation cache configured to store the translations between the addresses of the first context and the physical addresses of the memory, prior to the context switching.

3. The system of claim 1 , wherein the translation cache includes a translation table in the memory for storing the translations between addresses of the first context and the physical addresses of the memory, prior to the context switching.

4. The system of claim 1 , wherein the addresses from the first context are addresses for a virtual address space for the first context.

5. The system of claim 1 , wherein the request for the translation is received from an input/output memory management unit (IOMMU) driver executing on the first processor.

6. The system of claim 5 , wherein the IOMMU driver communicates with the second processor using memory mapped input/output (MMIO) operations using a MMIO transaction buffer in the memory.

7. The system of claim 5 , wherein the page tables in the memory are configured by the IOMMU driver for generating the translations between the addresses of the first context or the second context or both, and wherein the physical addresses for the memory are based on a specific translation architecture.

8. The system of claim 5 , wherein the translation is associated with a direct memory access (DMA) to the memory by a device communicatively coupled to the translation cache.

9. The system of claim 1 wherein the instructions stored in the non-transitory computer readable medium further cause the second processor to perform invalidation and exception handling associated with the translation cache.

10. The system of claim 1 , wherein the translations include a translation of an interrupt identifier for the first context to a physical address of the memory.

11. The system of claim 10 , wherein the interrupt identifier is associated with a message based interrupt generated from a device communicatively coupled to the translation cache.

12. The system of claim 11 , wherein the instructions stored in the non-transitory computer readable medium further cause the second processor to perform interrupt remapping of the message based interrupt.

13. The system of claim 1 , wherein the system is implemented as a system-on-chip (SoC), field programmable gate array (FPGA), microprocessor, or an application specific integrated circuit (ASIC).

14. A method comprising:

receiving, by a first processor in a system, a request from a second processor for a translation for an address from a first context to a physical address for a memory upon a determination that the translation for the request does not reside in a hardware translation cache communicatively coupled to the first processor, wherein the hardware translation cache is configured to store translations for addresses for the first context and physical addresses for the memory, wherein the second processor is configured to execute the first context and a second context, and wherein the first processor is configured to manage the hardware translation cache to perform context switching from the first context to the second context, wherein the context switching includes pre-loading the hardware translation cache with a set of translations for the second context;

generating the translation for the request using page tables from the memory, wherein the memory is communicatively coupled to the first processor; and

storing the translation for the request in the hardware translation cache.

15. The method of claim 14 , wherein the addresses for the first context are addresses for a virtual address space for the first context.

16. The method of claim 14 , wherein the request for the translation is received from an input/output memory management unit (IOMMU) driver executing on the second processor.

17. The method of claim 16 , wherein the IOMMU driver communicates with the first processor using memory mapped input/output (MMIO) operations using a MMIO transaction buffer in the memory.

18. The method of claim 16 , wherein the page tables in the memory are configured by the IOMMU driver for generating translations between the addresses of the first context or the second context or both, and the physical addresses for the memory are based on a specific translation architecture.

19. The method of claim 14 , wherein the translations include a translation of an interrupt identifier for the first context to a physical address of the memory.

20. The method of claim 19 , wherein the interrupt identifier is associated with a message based interrupt generated from a device communicatively coupled to the hardware translation cache.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 27, 2018
From: HABUSHA, ADI; SHALEV, LEAH; BSHARA, NAFEA
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 045661/0559 →
Continuity (1)
Continuation 14982977 · Dec 29, 2015
Cited By (2)
US 12,219,009 US 12,254,338