IP Library › Granted Patent US 12,737,301
Granted Patent B2
US 12,737,301 · App. 17/899,912 · Granted Sep 15, 2026

Software interface to XPU address translation cache

Inventors: Rupin H. Vakharwala (Hillsboro, OR); Philip Lantz (Cornelius, OR); David J. Harriman (Portland, OR)
Assignee: Intel Corporation
G06F12/1027G06F12/0891
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 12,737,301
App. No.
17/899,912
Granted
Sep 15, 2026
Kind
B2
Abstract

In an embodiment, a core includes at least one execution circuit. The core may be configured to: send a command for a first address translation cache (ATC) of a first device to perform an operation, the core to send the command to a first device queue of a shared memory, the first device queue associated with the first ATC; and send a register write directly to the first device to inform the first ATC regarding presence of the command in the first device queue. Other embodiments are described and claimed.

Claims (37)

1 . An apparatus comprising:

a core comprising at least one execution circuit, wherein the core is to:

send a command for a first address translation cache (ATC) of a first device to perform an operation, the core to send the command to a first device queue in a memory, the first device queue associated with the first ATC; and

send a register write directly to a configuration register of the first device to update a tail pointer register of the first ATC, the update informing the first ATC of presence of the command in the first device queue, wherein the direct register write bypasses an input/output memory management unit (IOMMU) to enable parallel communication between the core and the first ATC.

2 . The apparatus of claim 1 , wherein the core is to send an initialization message to the first device queue to indication initialization of the first device queue, the initialization message comprising metadata including a base address for the first device queue, a head pointer value and a tail pointer value.

3 . The apparatus of claim 1 , wherein the core is to send a second register write directly to the first device to cause the first ATC to update a tail pointer register of the first ATC.

4 . The apparatus of claim 3 , wherein in response to the tail pointer register update, the first ATC is to read at least one command stored in the first device queue.

5 . The apparatus of claim 4 , wherein the at least one command comprises an invalidation command.

6 . The apparatus of claim 1 , wherein software in execution on the core is to poll a completion address specified in the command in the memory to identify when the first ATC has completed the operation of the command.

7 . The apparatus of claim 6 , wherein the first ATC is to write a completion message to the completion address specified in the command after completion of the operation of the command.

8 . The apparatus of claim 1 , wherein the core is to receive an interrupt from a first ATC, the interrupt to indicate presence of a second command from the first ATC for a software in execution on the core to perform another operation.

9 . The apparatus of claim 8 , wherein, in response to the interrupt, the core is to read a tail pointer register of the first ATC to identify a location of the second command in another queue.

10 . The apparatus of claim 8 , wherein the core is to receive the second command comprising a page request to provide a translation for a page of the memory.

11 . The apparatus of claim 1 , wherein the core is to:

send a second command for a second ATC of a second device to perform an operation, the core to send the second command to a second device queue in the memory, the second device queue associated with the second ATC and separate from the first device queue; and

send a register write directly to the second device to inform the second ATC regarding presence of the second command in the second device queue.

12 . A method comprising:

receiving, in an address translation cache (ATC) of a device coupled to a processor, a first register write request;

writing information of the first register write request into one or more configuration registers associated with the ATC;

receiving, in the ATC, a second register write request directly from the processor;

updating a tail pointer in a configuration register of the ATC based on the second register write request, the tail pointer identifying a location of a command in an ATC queue of a memory coupled to the device, wherein the second register write request updates a tail pointer register of the ATC and bypasses an input/output memory management unit (IOMMU) to enable parallel communication between the processor and the ATC; and

executing an operation in the ATC in response to command information obtained from a location in an ATC queue of a memory coupled to the device, the location identified by the second register write request.

13 . The method of claim 12 , further comprising, after executing the operation in the ATC, sending completion information to the memory, for storage at a completion address.

14 . The method of claim 13 , further comprising sending the completion information for storage at the completion address, the completion address included in the command information.

15 . The method of claim 13 , further comprising sending, from the ATC, an interrupt directly to the processor to inform the processor regarding presence of the command information.

16 . The method of claim 13 , further comprising receiving, in the ATC, a register read request from the processor and, in response to the register read request, providing a value of a tail pointer register of the ATC to the processor.

17 . A system comprising:

an accelerator comprising:

at least one functional circuit; and

an address translation cache (ATC) coupled to the at least one functional circuit, the ATC comprising:

at least one configuration register to store a head pointer and a tail pointer to locations in a queue associated with the ATC, the queue in a shared memory; and

wherein the ATC is to directly communicate with software in execution on a processor;

the processor coupled to the accelerator; and

the shared memory coupled to the processor and the accelerator, wherein the direct communication comprises a register write to update the tail pointer that bypasses an input/output memory management unit (IOMMU) to enable parallel communication between the processor and the ATC.

18 . The system of claim 17 , wherein the ATC is to send a command for storage in the queue and update the pointer stored in the configuration register to indicate presence of the command in the queue.

19 . The system of claim 18 , wherein the command comprises a page request and the ATC is to identify completion of a page request operation by the processor on receipt of a page response command from the software, the page response command stored in another queue in the shared memory.

20 . The system of claim 17 , further comprising an input/output memory management unit (IOMMU) coupled to the processor and the accelerator, wherein the direct communication between the software and the ATC is to bypass the IOMMU.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 11, 2026
From: INTEL CORPORATION
To: INTEL PRODUCTS IP LLC
Reel/Frame 075991/0408 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2022
From: HARRIMAN, DAVID J.
To: INTEL CORPORATION
Reel/Frame 061296/0117 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2022
From: VAKHARWALA, RUPIN H.; LANTZ, PHILIP
To: INTEL CORPORATION
Reel/Frame 061298/0279 →
Continuity (2)
Provisional Application 63332186 · Apr 18, 2022
Related Publication 20220414020A1 · Dec 29, 2022
References Cited (13)
US 20070180157A1 · Irish et al. · 2007 [cited by applicant]
US 20080189720A1 · Moertl et al. · 2008 [cited by applicant]
US 20080209130A1 · Kegel · 2008 [cited by examiner]
US 20180181488A1 · Fowler et al. · 2018 [cited by applicant]
US 20190138240A1 · Gayen et al. · 2019 [cited by applicant]
US 20200210345A1 · Seo · 2020 [cited by examiner]
US 20220050781A1 · Acharya et al. · 2022 [cited by applicant]
US 20220091986A1 · Kotra · 2022 [cited by examiner]
US 20220414020A1 · Vakharwala et al. · 2022 [cited by applicant]
International Searching Authority, International Search Report and Written Opinion dated Aug. 18, 2023 in PCT International Application No. PCT/US2023/063898 (11 pages). [cited by applicant]
U.S. Appl. No. 16/912,542, filed Jun. 25, 2020, entitled “Secure Address Translation Services Using Cryptographically Protected Host Physical Address,” by Michael Kounavis, et al. [cited by applicant]
U.S. Appl. No. 17/133,570, filed Dec. 23, 2020, entitled “64-BIT Virtual Addresses Having Metadata Bit(s) and Canonicality Check That Does Not Fail Due to Non-Canonical Values of Metadata Bit(s),” by Vedvyas Shanbhogue,… [cited by applicant]
U.S. Appl. No. 17/473,468, filed Sep. 13, 2021, entitled “Method and Apparatus to Enable a Cache (DEVPIC) to Store Process Specific Information Inside Devices That Support Address Translation Service (ATS),” by Rupin Va… [cited by applicant]