IP Library Granted Patent US 11,487,594
Granted Patent B1
US 11,487,594 · App. 17/303,697 · Granted Nov 1, 2022

Artificial reality system with inter-processor communication (IPC)

Inventor: Gregory Edward Ehmann (Sleepy Hollow, IL)
Assignee: META PLATFORMS TECHNOLOGIES, LLC
G06F9/54G06F5/06
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 11,487,594
App. No.
17/303,697
Granted
Nov 1, 2022
Kind
B1
Abstract

The disclosure describes techniques for interrupt and inter-processor communication (IPC) mechanisms that are shared among computer processors. For example, an artificial reality system includes a plurality of processors and an inter-processor communication (IPC) unit. The IPC unit includes one or more doorbell registers, wherein each doorbell register is associated with a uniquely assigned source processor and a uniquely assigned target processor. Each doorbell register is further configured to store doorbell data indicative of whether an interrupt is a high priority interrupt or a low priority interrupt. The IPC unit may also include one or more FIFO (first-in first-out) memories configured to store data associated with each interrupt.

Claims (69)

1. An artificial reality system comprising:

a plurality of processors;

an inter-processor communication (IPC) unit comprising:

a doorbell register uniquely associated with a source processor of the plurality of processors and a target processor of the plurality of processors; and

a doorbell first-in first-out (FIFO) memory, wherein a portion of the doorbell FIFO memory is uniquely allocated to the doorbell register;

wherein the IPC unit is configured to:

receive, from the source processor, a first memory access request to write a FIFO data entry to the doorbell FIFO memory;

write the FIFO data entry to the uniquely allocated portion of the doorbell FIFO memory in response to verifying a source id in the first memory access request matches a value stored in a source id register uniquely associated with the doorbell register;

receive, from the source processor, a second memory access request to write doorbell data to the doorbell register;

generate, in response to writing of the doorbell data to the doorbell register, an interrupt to the target processor; and

receive, from the target processor, a third memory access request to read the FIFO data entry from the doorbell FIFO memory.

2. The artificial reality system of claim 1 , further comprising:

a head-mounted display comprising one or more processors configured to output artificial reality content,

wherein the plurality of processors of the artificial reality system includes the one or more processors of the head-mounted display.

3. The artificial reality system of claim 1 , further comprising:

a System-on-a-Chip (SoC) comprising one or more processors configured to process artificial reality content,

wherein the plurality of processors of the artificial reality system includes the one or more processors of the SoC.

4. The artificial reality system of claim 1 , further comprising:

a peripheral device comprising processors configured to receive one or more inputs from a user of the artificial reality system,

wherein the plurality of processors includes the one or more processors of the peripheral device.

5. The artificial reality system of claim 1 ,

wherein the IPC unit further comprises the source id register uniquely associated with the doorbell register,

wherein the first memory access request comprises the source id for the source processor.

6. The artificial reality system of claim 1 ,

wherein the IPC unit further comprises a source id register uniquely associated with the doorbell register,

wherein the second memory access request comprises a source id for the source processor, and

wherein the IPC unit is configured to write the doorbell data to the doorbell status register in response to verifying the source id in the second memory access request matches a value stored in the source id register uniquely associated with the doorbell register.

7. The artificial reality system of claim 1 ,

wherein the IPC unit further includes a target id register associated with the doorbell register,

wherein the third memory access request comprises a target id for the target processor, and

wherein the IPC unit is configured to transmit the FIFO data entry from the uniquely allocated portion of the doorbell FIFO memory in response to verifying the target id in the third memory access request matches a value stored in the target id register associated with the doorbell register.

8. The artificial reality system of claim 1 , wherein the IPC unit is configured to generate, in response to writing of the doorbell data to the doorbell register, one of a high priority interrupt to the target processor or a lower priority interrupt to the target processor.

9. The artificial reality system of claim 1 , wherein the IPC unit further comprises:

a plurality of doorbell registers, each of the plurality of doorbell registers uniquely associated with a source processor of the plurality of processors and a target processor of the plurality of processors, and wherein each of the plurality of doorbell registers is associated with a uniquely allocated portion of the doorbell FIFO memory.

10. The artificial reality system of claim 9 , wherein the plurality of doorbell registers are organized into a plurality of doorbell groups, and wherein each of the plurality of doorbell groups is uniquely associated with a different target processor of the plurality of processors.

11. The artificial reality system of claim 9 , wherein the IPC unit further comprises:

a plurality of doorbell data FIFO memories, and wherein each of the plurality of doorbell registers is associated with a uniquely allocated portion of the plurality of doorbell FIFO memories.

12. The artificial reality system of claim 9 , wherein the IPC unit further comprises:

a plurality of doorbell data FIFO memories, wherein the plurality of doorbell registers are organized into a plurality of doorbell instances, and wherein the doorbell registers associated with each doorbell instance share a common one of the plurality of data FIFO memories.

13. A method for inter-processor communication (IPC), the method comprising:

receiving, by an IPC unit from a source processor of an artificial reality system, a first memory access request to write a first-in first-out (FIFO) data entry to a doorbell FIFO memory, wherein a portion of the doorbell FIFO memory is uniquely allocated to a doorbell register that is uniquely associated with a source processor of a plurality of processors and with a target processor of the plurality of processors;

writing, by the IPC unit, the FIFO data entry to the uniquely allocated portion of the doorbell FIFO memory in response to verifying a source id in the first memory access request matches a value stored in a source id register uniquely associated with the doorbell register;

receiving, by the IPC unit from the source processor, a second memory access request to write doorbell data to the doorbell register;

generating, in response to writing of the doorbell data to the doorbell register, an interrupt to the target processor; and

receiving, by the IPC unit from the target processor, a third memory access request to read the FIFO data entry from the doorbell FIFO memory.

14. The method of claim 13 ,

wherein the artificial reality system comprises a source id register uniquely associated with the doorbell register, and

wherein the first memory access request comprises a source id for the source processor,

the method further comprising permitting writing of the FIFO data entry to a portion of the doorbell FIFO memory uniquely allocated do the doorbell register in response to verifying the source id in the first memory access request matches a value stored in a source id register associated with the doorbell register.

15. The method of claim 13 ,

wherein the artificial reality system comprises the source id register uniquely associated with the doorbell register, and

wherein the first memory access request comprises the source id for the source processor.

16. The method of claim 13 ,

wherein the artificial reality system comprises a target id register associated with the doorbell register, and

wherein the third memory access request comprises a target id for the target processor,

the method further comprising permitting reading of the FIFO data entry from a portion of the doorbell FIFO memory uniquely allocated to the doorbell register in response to verifying the target id in the third memory access request matches a value stored in a target id register associated with the doorbell register.

17. The method of claim 13 ,

wherein the doorbell data comprises a first value,

the method further comprising, in response to writing of the first value to the doorbell register, generating a high priority interrupt to the target processor.

18. The method of claim 17 ,

wherein the doorbell data comprises a second value different than the first value,

the method further comprising, in response to writing of the second value to the doorbell register, generating a low priority interrupt to the target processor.

19. The method of claim 13 , further comprising uniquely allocating a portion of the doorbell FIFO memory to each of a plurality of doorbell registers.

20. A non-transitory computer-readable storage medium comprising instructions that, when executed, configure processing circuitry to:

receive, by an inter-processor communication (IPC) unit from a source processor of an artificial reality system, a first memory access request to write a first-in first-out (FIFO) data entry to a doorbell FIFO memory, wherein a portion of the doorbell FIFO memory is uniquely allocated to a doorbell register that is uniquely associated with a source processor of a plurality of processors and with a target processor of the plurality of processors;

write the FIFO data entry to the uniquely allocated portion of the doorbell FIFO memory in response to verifying a source id in the first memory access request matches a value stored in a source id register uniquely associated with the doorbell register;

receive, from the source processor, a second memory access request to write doorbell data to the doorbell register;

generate, in response to writing of the doorbell data to the doorbell register, an interrupt to the target processor; and

receive, from the target processor, a third memory access request to read the FIFO data entry from the doorbell FIFO memory.

Assignments (2)
CHANGE OF NAME Recorded Jul 21, 2022
From: FACEBOOK TECHNOLOGIES, LLC
To: META PLATFORMS TECHNOLOGIES, LLC
Reel/Frame 060802/0799 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2021
From: EHMANN, GREGORY EDWARD
To: FACEBOOK TECHNOLOGIES, LLC
Reel/Frame 056597/0192 →
Continuity (2)
Continuation In Part 16726492 · Dec 24, 2019
Provisional Application 62905095 · Sep 24, 2019
Cited By (1)
US 12,260,268