US9804988B1ActiveUtility

Device full memory access through standard PCI express bus

97
Assignee: AMAZON TECH INCPriority: Oct 30, 2015Filed: Oct 30, 2015Granted: Oct 31, 2017
Est. expiryOct 30, 2035(~9.3 yrs left)· nominal 20-yr term from priority
G06F 13/4282G06F 13/28G06F 2213/0024G06F 13/4022G06F 2213/0026G06F 3/0604G06F 13/404
97
PatentIndex Score
69
Cited by
8
References
20
Claims

Abstract

A method of transferring data between a host and a PCI device is disclosed. The method comprises mapping a fixed memory-mapping control block in a host memory of the host to a control register of a memory-mapping unit of the PCI device; mapping a dynamic data-access memory block in the host memory to a default memory block in a memory of the PCI device, wherein the memory-mapping unit translates an address between the dynamic data-access memory block and a memory block in the memory of the PCI device; and dynamically modifying a value in the control register of the memory-mapping unit through the fixed memory-mapping control block such that an address of the dynamic data-access memory block in the host memory is translated to a different address in the memory of the PCI device based on the modified value in the control register of the memory-mapping unit.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. A method of accessing a target memory block in a memory of a Peripheral Component Interconnect (PCI) device by a host, the method comprising:
 reserving a fixed memory-mapping control block in a host memory on the host; 
 mapping the fixed memory-mapping control block to a control register of a memory-mapping unit on the PCI device; 
 reserving a dynamic data-access memory block in the host memory; 
 mapping the dynamic data-access memory block to a default memory block in the memory of the PCI device; 
 determining a value for the fixed memory-mapping control block based on an address of the target memory block in the memory of the PCI device; 
 writing the determined value into the fixed memory-mapping control block; and 
 accessing the dynamic data-access memory block to access the target memory block. 
 
     
     
       2. The method of  claim 1 , wherein the PCI device includes one of a PCIe endpoint, a PCIe switch, or a PCIe bridge. 
     
     
       3. The method of  claim 1 , wherein the fixed memory-mapping control block is less than 100 bytes. 
     
     
       4. The method of  claim 1 , wherein:
 mapping the fixed memory-mapping control block includes setting a first base address register in a configuration register of the PCI device based on an address of the fixed memory-mapping control block, and 
 mapping the dynamic data-access memory block includes setting a second base address register in the configuration register of the PCI device based on an address of the dynamic data-access memory block. 
 
     
     
       5. A method of transferring data between a host and a PCI device, the method comprising:
 mapping a fixed memory-mapping control block in a host memory of the host to a control register of a memory-mapping unit of the PCI device; 
 mapping a dynamic data-access memory block in the host memory to a default memory block in a memory of the PCI device, wherein the memory-mapping unit of the PCI device translates an address between the dynamic data-access memory block and a memory block in the memory of the PCI device; and 
 dynamically modifying a value in the control register of the memory-mapping unit through the fixed memory-mapping control block such that an address of the dynamic data-access memory block in the host memory is translated to a different address in the memory of the PCI device based on the modified value in the control register of the memory-mapping unit. 
 
     
     
       6. The method of  claim 5 , further comprising:
 determining a value for the fixed memory-mapping control block based on an address of a target memory block in the memory of the PCI device; 
 writing the determined value into the fixed memory-mapping control block; and 
 accessing the dynamic data-access memory block to access the target memory block in the memory of the PCI device. 
 
     
     
       7. The method of  claim 6 , wherein accessing the dynamic data-access memory block includes reading from the dynamic data-access memory block and writing into the dynamic data-access memory block. 
     
     
       8. The method of  claim 6 , wherein determining the value for the fixed memory-mapping control block, writing the determined value into the fixed memory-mapping control block, and accessing the dynamic data-access memory block are performed iteratively until all target memory blocks in the memory of the PCI device have been accessed. 
     
     
       9. The method of  claim 5 , wherein the PCI device includes one of a PCIe endpoint, a PCIe switch, or a PCIe bridge. 
     
     
       10. The method of  claim 5 , wherein the fixed memory-mapping control block is less than 100 bytes. 
     
     
       11. The method of  claim 5 , wherein mapping the fixed memory-mapping control block and mapping the dynamic data-access memory block include setting a base address register in a configuration register of the PCI device based on an address of the fixed memory-mapping control block or an address of the dynamic data-access memory block. 
     
     
       12. The method of  claim 5 , wherein:
 mapping the fixed memory-mapping control block includes setting a first base address register in a configuration register of the PCI device based on an address of the fixed memory-mapping control block; and 
 mapping the dynamic data-access memory block includes setting a second base address register in the configuration register of the PCI device based on an address of the dynamic data-access memory block. 
 
     
     
       13. The method of  claim 5 , further comprising:
 determining a value for the fixed memory-mapping control block based on an address of a control register for a hardware component on the PCI device; 
 writing the determined value into the fixed memory-mapping control block; and 
 accessing the dynamic data-access memory block to configure the control register for the hardware component on the PCI device. 
 
     
     
       14. The method of  claim 5 , wherein the dynamic data-access memory block is smaller than the memory of the PCI device. 
     
     
       15. The method of  claim 5 , wherein the dynamic data-access memory block is no larger than 16 megabytes. 
     
     
       16. A computer system, comprising:
 a host including a host memory; 
 a PCI device including a device memory and a memory-mapping unit; and 
 a PCI bus electrically coupling the PCI device to the host; 
 wherein a fixed memory-mapping control block in the host memory is mapped to a control register for the memory-mapping unit of the PCI device; 
 wherein a dynamic data-access memory block in the host memory is mapped to a default memory block in the device memory of the PCI device; and 
 wherein the memory-mapping unit of the PCI device translates an address between the dynamic data-access memory block and a memory block in the device memory of the PCI device. 
 
     
     
       17. The computer system of  claim 16 , wherein the PCI device includes one of a PCIe endpoint, a PCIe switch, or a PCIe bridge. 
     
     
       18. The computer system of  claim 16 , wherein the fixed memory-mapping control block is less than 100 bytes. 
     
     
       19. The computer system of  claim 16 , wherein a base address register in a configuration register of the PCI device includes a start address of the fixed memory-mapping control block or a start address of the dynamic data-access memory block. 
     
     
       20. The computer system of  claim 19 , wherein the dynamic data-access memory block is no larger than 16 megabytes.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.