Parallelizing boot operations
First Claim
Patent Images
1. A method comprising:
- executing, responsive to receiving a packed command from a host driver implemented by a processor of a host device, the packed command effective to initiate reading of multiple boot images that are stored in a first memory of a memory device;
initiating, via a direct memory access (DMA) controller of the memory device and based on a first transfer descriptor of a set of transfer descriptors stored in a second memory of the host device, a first DMA transfer operation transferring a first boot image of the multiple boot images from the first memory of the memory device into the second memory of the host device, the first transfer descriptor configured to cause an interrupt responsive to completion of the first DMA transfer operation;
causing, via the interrupt and after completion of the first DMA transfer operation, initiation of a first validation operation by the processor of the host device to validate the first boot image in the second memory of the host device effective to verify that the first boot image is secure; and
initiating, via the DMA controller of the memory device, without waiting for completion of the first validation operation, and based on a second transfer descriptor of the set of transfer descriptors stored in the second memory of the host device, subsequent DMA transfer operations transferring at least a second boot image of the multiple boot images from the first memory of the memory device into the second memory of the host device, at least a portion of the subsequent DMA transfer operations occurring while the processor of the host device performs the first validation operation of the first boot image in the second memory of the host device.
7 Assignments
0 Petitions
Accused Products
Abstract
The present disclosure describes apparatuses and techniques for parallelizing boot operations. In some aspects, an operation transferring a boot image from a non-volatile memory to a volatile memory is initiated prior to completion an operation validating another boot image previously-transferred into the volatile memory. This can be effective to enable transfer operations and validation operations of boot images to be performed in parallel. By so doing, delays between the transfer and validation operations can be minimized thereby reducing device boot times.
-
Citations
20 Claims
-
1. A method comprising:
-
executing, responsive to receiving a packed command from a host driver implemented by a processor of a host device, the packed command effective to initiate reading of multiple boot images that are stored in a first memory of a memory device; initiating, via a direct memory access (DMA) controller of the memory device and based on a first transfer descriptor of a set of transfer descriptors stored in a second memory of the host device, a first DMA transfer operation transferring a first boot image of the multiple boot images from the first memory of the memory device into the second memory of the host device, the first transfer descriptor configured to cause an interrupt responsive to completion of the first DMA transfer operation; causing, via the interrupt and after completion of the first DMA transfer operation, initiation of a first validation operation by the processor of the host device to validate the first boot image in the second memory of the host device effective to verify that the first boot image is secure; and initiating, via the DMA controller of the memory device, without waiting for completion of the first validation operation, and based on a second transfer descriptor of the set of transfer descriptors stored in the second memory of the host device, subsequent DMA transfer operations transferring at least a second boot image of the multiple boot images from the first memory of the memory device into the second memory of the host device, at least a portion of the subsequent DMA transfer operations occurring while the processor of the host device performs the first validation operation of the first boot image in the second memory of the host device. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method comprising:
-
retrieving, in response to a start of a boot sequence and via a processor of a host device, a header image from a non-volatile memory of a memory device, the header image describing multiple boot images stored in the non-volatile memory; constructing, based on the header image and in a volatile memory of a host device, a packed command describing respective locations of the multiple boot images stored in the non-volatile memory of the memory device; constructing, based on the header image and in the volatile memory of the host device, direct memory access (DMA) descriptors describing respective destination locations of the multiple boot images in the volatile memory of the host device, at least some of the DMA descriptors configured to cause an interrupt responsive to completing a DMA transfer of one of the multiple boot images as specified by the DMA descriptor; and issuing the packed command to a memory controller of the memory device effective to cause the memory controller to; initiate, via a DMA engine of the memory device and based on the DMA descriptors in the volatile memory of the host device, respective DMA transfers of the multiple boot images from the non-volatile memory of the memory device to the volatile memory of the host device; and cause, via the interrupts caused by the DMA descriptors responsive to completing transfers of the multiple boot images into volatile memory of the host device, the processor of the host device to initiate respective validation operations of the multiple boot images, at least one of the respective DMA transfers transferring one of the multiple boot images while the processor of the host device validates a previously-transferred one of the multiple boot images. - View Dependent Claims (10, 11)
-
-
12. A System-on-Chip (SoC) comprising:
-
a processor configured to implement validation operations and other functionalities of a device; a volatile memory configured to receive the multiple boot images; an interface to a memory device that includes; (i) non-volatile memory configured to store multiple boot images; and (ii) a direct memory access (DMA) controller configured to enable access between the volatile memory of the SoC and the non-volatile memory of the memory device; and a boot manager configured to; access a header image stored in the non-volatile memory of the memory device; interpret the header image to provide information describing respective sizes of the multiple boot images, or locations of the multiple boot images in the non-volatile memory, and destination locations for the multiple boot images in the volatile memory; construct, based on the header image, packed commands that specify the respective sizes of the multiple boot images and the locations of the multiple boot images in the non-volatile memory; construct, based on the header image, transfer descriptors that each specify a size of one of the multiple boot images and the destination location of the boot image in the volatile memory, the transfer descriptors including information that describes a DMA interrupt action associated with transferring each of the multiple boot images; issue the packed commands to the memory device effective to initiate reading of the multiple boot images from the non-volatile memory of the memory device; initiate, via the DMA controller and based on a first of the transfer descriptors, a first DMA transfer operation transferring a first of the multiple boot images from the non-volatile memory to the volatile memory; cause, in response to the first transfer descriptor triggering a first DMA interrupt indicating completion of the first DMA transfer operation of the first boot image to the volatile memory, the processor to initiate a validation operation to validate the first boot image in the volatile memory; and initiate, via the DMA controller, based on a second of the transfer descriptors, and without waiting for completion of the validation operation of the first boot image, a second DMA transfer operation transferring a second of the multiple boot images from the non-volatile memory to the volatile memory, at least a portion of the second boot image being transferred via the second DMA transfer while the processor performs the validation operation to validate the first boot image in the volatile memory. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20)
-
Specification