# US 10,372,199 B2 · Apparatus for managing power and running and booting an inter-processor communication link between independently operable processors

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,372,199 B2
- Document ID: US10372199B2
- Status: Granted
- Kind: B2
- Application number: 15/721,200
- Filed: 2017-09-29
- Published: 2018-03-29
- Granted: 2019-08-06
- Earliest claimed: 2014-10-08
- Assignees: Apple Inc.
- Applicants: Apple Inc.
- Inventors: Karan Sanghi; Saurabh Garg; Haining Zhang
- Web page: https://patentgrep.com/patent/US10372199B2

## CPC

- G06F 1/3293: by switching to a less power-consuming processor, e.g. sub-CPU
- G06F 1/3228: Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
- G06F 1/3243: {Power saving in microcontroller unit}
- G06F 1/3287: by switching off individual functional units in the computer system
- G06F 9/4403: {Processor initialisation}
- G06F 9/4405: {Initialisation of multiprocessor systems}
- G06F 9/4411: {Configuring for operating with peripheral devices; Loading of device drivers}
- G06F 11/1471: involving logging of persistent data for recovery
- G06F 13/4282: {on a serial bus, e.g. I2C bus, SPI bus (on daisy chain buses G06F13/4247)}
- G06F 11/1417: {Boot up procedures}
- G06F 11/1474: in transactions (updating of structured data in databases G06F16/23)
- G06F 2201/805: Real-time
- G06F 2201/87: Monitoring of transactions
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

Methods and apparatus for an inter-processor communication (IPC) link between two (or more) independently operable processors. In one aspect, the IPC protocol is based on a “shared” memory interface for run-time processing (i.e., the independently operable processors each share (either virtually or physically) a common memory interface). In another aspect, the IPC communication link is configured to support a host driven boot protocol used during a boot sequence to establish a basic communication path between the peripheral and the host processors. Various other embodiments described herein include sleep procedures (as defined separately for the host and peripheral processors), and error handling.

## Claims

### Claim 1

A non-transitory computer-readable storage apparatus comprising a storage medium, the storage medium comprising computer-readable instructions that are configured to, when executed by a first digital processor apparatus:
prior to transmission of a boot state image to a second digital processor apparatus, determine a current stage of execution for the second digital processor apparatus by a read operation of a shared memory interface by the first digital processor apparatus; and
cause the first digital processor apparatus to transmit the boot stage image to the second digital processor apparatus via a physical bus interface.

### Claim 2 (depends on 1)

The non-transitory computer-readable storage apparatus of claim 1, wherein the computer-readable instructions are further configured to, when executed by the first digital processor apparatus:
prior to transmission of the boot state image to the second digital processor apparatus, detect the physical bus interface and enumerate the second digital processor apparatus;
wherein the enumeration of the second digital processor apparatus comprises an initial query of one or more devices connected to the first digital processor apparatus and an assignment of an address for the second digital processor apparatus.

### Claim 3 (depends on 1)

The non-transitory computer-readable storage apparatus of claim 1, wherein the transmission of the boot stage image to the second digital processor apparatus further comprises a map of the boot state image to the shared memory interface; and
wherein the computer-readable instructions are further configured to, when executed by the first digital processor apparatus:
subsequent to the map of the boot state image to the shared memory interface, perform a write operation to a doorbell register of the shared memory interface, the write operation to the doorbell register comprising a notification of the map of the boot state image to the shared memory interface.

### Claim 4 (depends on 1)

The non-transitory computer-readable storage apparatus of claim 1, wherein the computer-readable instructions is further configured to, when executed by the first digital processor apparatus:
perform a read operation on an image response register; and
determine a completion status for a boot sequence for the second digital processor apparatus based on the performed read operation.

### Claim 5

Integrated circuit apparatus comprising:
a host processor apparatus;
an auxiliary processor apparatus; and
a shared memory interface comprising at least one data storage device, the shared memory interface in data communication with each of the host processor apparatus and the auxiliary processor apparatus, the shared memory interface configured to provide a multi-channel inter-processor communication link configured to enable data transfers between the host processor apparatus and the auxiliary processor apparatus;
wherein the integrated circuit apparatus is further configured to:
prior to transmission of a boot stage image to the auxiliary processor apparatus, determine a current stage of execution for the auxiliary processor apparatus by a read operation of the shared memory interface by the host processor apparatus; and
cause the host processor apparatus to transmit the boot stage image to the auxiliary processor apparatus via a physical bus interface.

### Claim 6 (depends on 5)

The integrated circuit apparatus of claim 5, wherein the shared memory interface is configured to remain functional when one of the host processor apparatus or the auxiliary processor apparatus is asleep.

### Claim 7 (depends on 5)

The integrated circuit apparatus of claim 5, wherein the multi-channel inter-processor communication link supports a host-driven boot protocol that is utilized during a boot sequence for the integrated circuit apparatus.

### Claim 8 (depends on 5)

The integrated circuit apparatus of claim 5, wherein the transmission of the boot stage image to the auxiliary processor apparatus further comprises a map of the boot stage image to the shared memory interface by the host processor apparatus.

### Claim 9 (depends on 8)

The integrated circuit apparatus of claim 8, wherein subsequent to the map of the boot stage image to the shared memory interface, perform a write operation to a doorbell register of the shared memory interface by the host processor apparatus, the write operation to the doorbell register comprising a notification of the map of the boot image to the shared memory interface.

### Claim 10 (depends on 9)

The integrated circuit apparatus of claim 9, wherein subsequent to the write operation to the doorbell register, the host processor apparatus performs a read operation on an image response register, the read operation on the image response register comprising a determination of a completion status for a boot sequence for the auxiliary processor apparatus.

### Claim 11 (depends on 5)

The integrated circuit apparatus of claim 5, wherein the transmission of the boot stage image to the auxiliary processor apparatus comprises provision of a base address and image size for the boot stage image within a contiguous memory space by the host processor apparatus.

### Claim 12 (depends on 11)

The integrated circuit apparatus of claim 11, wherein the determination of the current stage of execution for the auxiliary processor apparatus comprises a read of a register within the shared memory interface by the host processor apparatus.

### Claim 13 (depends on 12)

The integrated circuit apparatus of claim 12, wherein the auxiliary processor apparatus is configured to report a success or failure status for execution of the boot stage image prior to the auxiliary processor apparatus switching to run time operation.

### Claim 14

A peripheral processor apparatus, comprising:
an endpoint apparatus configured to be coupled to a physical bus interface;
a processing element in communication with the endpoint apparatus; and
a communication interface coupled to a shared memory space;
wherein the peripheral processor apparatus is configured to:
cause execution of an initial primary boot sequence;
update a current execution stage for the peripheral processor apparatus by writing to the shared memory space, the update of the current execution stage configured to notify a host processor apparatus of the current execution stage for the peripheral processor apparatus;
responsive to the update of the current execution stage in the shared memory space, receive a notification from the host processor apparatus; and
responsive to receipt of the notification, retrieve a secondary boot image.

### Claim 15 (depends on 14)

The peripheral processor apparatus of claim 14, wherein the receipt of the notification from the host processor apparatus comprises a read operation of a doorbell register associated with the shared memory space between the host processor apparatus and the peripheral processor apparatus.

### Claim 16 (depends on 15)

The peripheral processor apparatus of claim 15, wherein the read operation of the doorbell register comprises a read of an image address register and an image size register of the shared memory space.

### Claim 17 (depends on 14)

The peripheral processor apparatus of claim 14, wherein the peripheral processor apparatus is further configured to verify the secondary boot image using a validation procedure prior to the retrieval of the secondary boot image.

### Claim 18 (depends on 17)

The peripheral processor apparatus of claim 17, wherein subsequent to retrieval of the secondary boot image, the peripheral processor apparatus is configured to write to a notification register on the shared memory space between the host processor apparatus and the peripheral processor apparatus.

### Claim 19 (depends on 18)

The peripheral processor apparatus of claim 18, wherein subsequent to the write of the notification register, the peripheral processor apparatus is configured to execute the secondary boot image.

### Claim 20 (depends on 19)

The peripheral processor apparatus of claim 19, wherein subsequent to the execution of the secondary boot image, the peripheral processor apparatus is configured to notify the host processor apparatus via an interrupt of successful execution of the secondary boot image.
