IP Library Granted Patent US 8,645,594
Granted Patent B2
US 8,645,594 · App. 13/538,221 · Granted Feb 4, 2014

Driver-assisted base address register mapping

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 8,645,594
App. No.
13/538,221
Granted
Feb 4, 2014
Kind
B2
Abstract

Techniques herein include systems and methods for driver-assisted BAR mapping that virtualize PCI functions, but without virtualizing the storage media itself. Such techniques make use of unused BARs (Base Address Registers) of a master (Operating system-facing) device to gain access to other PCIe logical instances, while still exposing only a single PCIe function (connection or channel) to system software. This technique provides a new concept of logical PCIe device instances through BAR mapping by making use of unused BARs to extend access to any number of PCIe instances or memory-mapped I/O devices behind a master device such that only a single PCIe function is exposed to system software. Embodiments can thus extend access to one or more additional storage devices through one level of BAR indirection. As a result, such techniques and embodiments enable the multiplication of storage capacity and performance through the aggregation of multiple, similar hardware components.

Claims (43)

1. A data storage device comprising:

a storage aggregation unit that has multiple memory-mapped input/output (I/O) devices interconnected within the storage aggregation unit, each memory-mapped I/O device has multiple Base Address Registers, the storage aggregation unit includes a physical connection interface configured to connect to a computer bus;

the storage aggregation unit including a processor and a memory coupled to the processor, the memory storing instructions that, when executed by the processor, causes the storage aggregation unit to perform the operations of:

receiving a memory access request at a first memory-mapped I/O device of the storage aggregation unit;

in response to the memory access request identifying a physical address within a first Base Address Register of the first memory-mapped I/O device, executing the memory access request on the first memory-mapped I/O device; and

in response to the memory access request identifying a physical address within a second Base Address Register of the first memory-mapped I/O device, redirecting the memory access request to a second memory-mapped I/O device, of the multiple interconnected memory-mapped I/O devices, and executing the memory access request on the second memory-mapped I/O device.

2. The data storage device of claim 1 , wherein the memory stores further instructions that, when executed by the processor, causes the storage aggregation unit to perform the operation of:

in response to the memory access request identifying a physical address within a third Base Address Register of the first memory-mapped I/O device, redirecting the memory access request to a third memory-mapped I/O device, of the multiple interconnected memory-mapped I/O devices, and executing the memory access request on the second memory-mapped I/O device.

3. The data storage device of claim 2 , wherein the memory stores further instructions that, when executed by the processor, causes the storage aggregation unit to perform the operation of:

in response to receiving a redirected memory access request at the second memory-mapped I/O device, the redirected memory access request identifying a physical address with a first Base Address Register of the second memory-mapped I/O device, executing the memory access request on the second memory-mapped I/O device; and

in response to receiving a redirected memory access request at the second memory-mapped I/O device, the redirected memory access request identifying a physical address with a second Base Address Register of the second memory-mapped I/O device, redirecting the memory access request to a fourth memory-mapped I/O device, of the multiple interconnected memory-mapped I/O devices, and executing the memory access request on the fourth memory-mapped I/O device.

4. The data storage device of claim 1 , wherein the memory stores further instructions that, when executed by the processor, causes the storage aggregation unit to perform the operation of:

in response to receiving a mapping request, at the first memory-mapped I/O device of a storage aggregation device, for Base Address Register information corresponding to the first memory-mapped I/O device, identifying address ranges across three Base Address Registers fro the first memory-mapped I/O device sufficient to map physical data storage addresses from each of the multiple interconnected memory-mapped I/O devices, each additional memory-mapped I/O device identified via one level of Base Address Register indirection.

5. The data storage device of claim 4 , wherein the mapping request is received as part of a boot sequence of an operating system.

6. The data storage device of claim 1 , wherein each of the interconnected memory-mapped I/O devices is a solid-state drive.

7. The data storage device of claim 6 , wherein each solid-state drive is configured with a respective PCIe function.

8. The data storage device of claim 7 , wherein the memory access request is received from a corresponding operating system that recognizes individual memory-mapped I/O device functions without aggregating memory-mapped I/O devices via a central processing unit.

9. The data storage device of claim 1 , wherein the memory access request is a request to write data at a location identified by one of the multiple Base Address Registers, and wherein each memory-mapped I/O device is a Peripheral Component Interconnect Express (PCIe) device.

10. A method comprising:

receiving a memory access request at a first memory-mapped I/O device of a storage aggregation unit, the storage aggregation unit including multiple interconnected memory-mapped I/O devices, each memory-mapped I/O device having multiple Base Address Registers;

in response to the memory access request identifying a physical address within a first Base Address Register of the first memory-mapped I/O device, executing the memory access request on the first memory-mapped I/O device; and

in response to the memory access request identifying a physical address within a second Base Address Register of the first memory-mapped I/O device, redirecting the memory access request to a second memory-mapped I/O device, of the multiple interconnected memory-mapped I/O devices, and executing the memory access request on the second memory-mapped I/O device.

11. The method of claim 10 , further comprising:

in response to the memory access request identifying a physical address within a third Base Address Register of the first memory-mapped I/O device, redirecting the memory access request to a third memory-mapped I/O device, of the multiple interconnected memory-mapped I/O devices, and executing the memory access request on the second memory-mapped I/O device.

12. The method of claim 11 , further comprising:

in response to receiving a redirected memory access request at the second memory-mapped I/O device, the redirected memory access request identifying a physical address with a first Base Address Register of the second memory-mapped I/O device, executing the memory access request on the second memory-mapped I/O device; and

in response to receiving a redirected memory access request at the second memory-mapped I/O device, the redirected memory access request identifying a physical address with a second Base Address Register of the second memory-mapped I/O device, redirecting the memory access request to a fourth memory-mapped I/O device, of the multiple interconnected memory-mapped I/O devices, and executing the memory access request on the fourth memory-mapped I/O device.

13. The method of claim 10 , further comprising:

in response to receiving a mapping request, at the first memory-mapped I/O device of a storage aggregation device, for Base Address Register information corresponding to the first memory-mapped I/O device, identifying address ranges across three Base Address Registers fro the first memory-mapped I/O device sufficient to map physical data storage addresses from each of the multiple interconnected memory-mapped I/O devices, each additional memory-mapped I/O device identified via one level of Base Address Register indirection.

14. The method of claim 13 , wherein the mapping request is received as part of a boot sequence of a corresponding operating system.

15. The method of claim 10 , wherein each of the interconnected memory-mapped I/O devices are solid-state drives.

16. The method of claim 10 , wherein the memory access request is a request to write data at a location identified by one of the multiple Base Address Registers.

17. A computer program product including a non-transitory computer-storage medium having instructions stored thereon for processing data information, such that the instructions, when carried out by a processing device, cause the processing device to perform the operations of:

receiving a memory access request at a first memory-mapped I/O device of a storage aggregation unit, the storage aggregation unit including multiple interconnected memory-mapped I/O devices, each memory-mapped I/O device having multiple Base Address Registers;

in response to the memory access request identifying a physical address within a first Base Address Register of the first memory-mapped I/O device, executing the memory access request on the first memory-mapped I/O device; and

in response to the memory access request identifying a physical address within a second Base Address Register of the first memory-mapped I/O device, redirecting the memory access request to a second memory-mapped I/O device, of the multiple interconnected memory-mapped I/O devices, and executing the memory access request on the second memory-mapped I/O device.

18. The computer program product of claim 17 , having further instructions that when carried out by a processing device, cause the processing device to perform the operation of:

in response to the memory access request identifying a physical address within a third Base Address Register of the first memory-mapped I/O device, redirecting the memory access request to a third memory-mapped I/O device, of the multiple interconnected memory-mapped I/O devices, and executing the memory access request on the second memory-mapped I/O device.

19. The method of claim 18 , having further instructions that when carried out by a processing device, cause the processing device to perform the operations of:

in response to receiving a redirected memory access request at the second memory-mapped I/O device, the redirected memory access request identifying a physical address with a first Base Address Register of the second memory-mapped I/O device, executing the memory access request on the second memory-mapped I/O device; and

in response to receiving a redirected memory access request at the second memory-mapped I/O device, the redirected memory access request identifying a physical address with a second Base Address Register of the second memory-mapped I/O device, redirecting the memory access request to a fourth memory-mapped I/O device, of the multiple interconnected memory-mapped I/O devices, and executing the memory access request on the fourth memory-mapped I/O device.

20. The method of claim 17 , having further instructions that when carried out by a processing device, cause the processing device to perform the operation of:

in response to receiving a mapping request, at the first memory-mapped I/O device of a storage aggregation device, for Base Address Register information corresponding to the first memory-mapped I/O device, identifying address ranges across three Base Address Registers fro the first memory-mapped I/O device sufficient to map physical data storage addresses from each of the multiple interconnected memory-mapped I/O devices, each additional memory-mapped I/O device identified via one level of Base Address Register indirection.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 10, 2023
From: INTEL CORPORATION
To: SK HYNIX NAND PRODUCT SOLUTIONS CORP.
Reel/Frame 062702/0048 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 13, 2012
From: FOONG, ANNIE; SETO, PAK-LUNG
To: INTEL CORPORATION
Reel/Frame 028952/0885 →