Block-based storage device with a memory-mapped interface
First Claim
Patent Images
1. An apparatus, comprising:
- a storage array to store data;
a memory-mapped interface having memory-mapped memory space coupled to the storage array, the memory-mapped interface to receive direct access requests to directly access memory-mapped files via the memory-mapped memory space;
a block interface coupled to the storage array, the block interface to receive block requests from a storage driver to access the storage array;
memory-mapped setup logic configured to make regions of the storage array available in the memory-mapped memory space if the regions of the storage array are available, the memory-mapped setup logic configured to determine whether to evict a prior mapping from a vector table if the regions of the storage array are not available, and the memory-mapped setup logic configured to provide an error message if no eviction occurs;
processing logic configured to check whether address space having an address and size is available in the vector table, if no address space is available the processing unit returns an error message, if the address space is available the processing logic determines whether the direct access requests conflict with any block requests for the block interface; and
synchronization logic configured to resolve any conflicts between the direct access requests and any block requests for the block interface determined by the processing logic.
10 Assignments
0 Petitions
Accused Products
Abstract
Described herein are methods for accessing a block-based storage device having a memory-mapped interface and a block interface. In one embodiment, an apparatus (e.g., block-based storage device) includes a storage array to store data and a memory-mapped interface that is coupled to the storage array. The memory-mapped interface includes memory-mapped memory space. The memory-mapped interface receives direct access requests from a host to directly access memory-mapped files. The apparatus also includes a block interface that is coupled to the storage array. The block interface receives block requests from a storage driver to access the storage array.
-
Citations
18 Claims
-
1. An apparatus, comprising:
-
a storage array to store data; a memory-mapped interface having memory-mapped memory space coupled to the storage array, the memory-mapped interface to receive direct access requests to directly access memory-mapped files via the memory-mapped memory space; a block interface coupled to the storage array, the block interface to receive block requests from a storage driver to access the storage array; memory-mapped setup logic configured to make regions of the storage array available in the memory-mapped memory space if the regions of the storage array are available, the memory-mapped setup logic configured to determine whether to evict a prior mapping from a vector table if the regions of the storage array are not available, and the memory-mapped setup logic configured to provide an error message if no eviction occurs; processing logic configured to check whether address space having an address and size is available in the vector table, if no address space is available the processing unit returns an error message, if the address space is available the processing logic determines whether the direct access requests conflict with any block requests for the block interface; and synchronization logic configured to resolve any conflicts between the direct access requests and any block requests for the block interface determined by the processing logic. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A data processing device, comprising:
-
a processing unit having first and second processor cores; system memory coupled to the processing unit, the system memory having an integrated circuit device comprising a storage array to store data; a memory-mapped interface having memory-mapped memory space coupled to the storage array, the memory-mapped interface to receive direct access requests to access memory-mapped files via the memory-mapped memory space; a block interface coupled to the storage array, the block interface to receive block requests to access the storage array; memory-mapped setup logic configured to make regions of the storage array available in the memory-mapped memory space if the regions of the storage array are available, the memory-mapped setup logic configured to determine whether to evict a prior mapping from a vector table if the regions of the storage array are not available, and the memory-mapped setup logic configured to provide an error message if no eviction occurs; processing logic configured to check whether address space having an address and size is available in the vector table, if no address space is available the processing unit returns an error message, if the address space is available the processing logic determines whether the direct access requests conflict with any block requests for the block interface; and synchronization logic configured to resolve any conflicts between the direct access requests and any block requests for the block interface determined by the processing logic. - View Dependent Claims (10, 11, 12, 13, 14)
-
-
15. A method, comprising:
-
determining whether a control signal indicates a request is directed to a memory-mapped interface or a block-based interface, the memory-mapped interface having memory-mapped memory space coupled to a block-based storage device, making regions of the block-based storage device available in the memory-mapped memory space if the regions of the storage array are available; determining whether to evict a prior mapping from a vector table; providing an error message if no eviction occurs; processing the request to access the block-based storage device via the memory-mapped interface if the request is requesting access to the memory-mapped interface; checking whether address space having an address and size is available in the vector table; returning an error message if no address space is available; determining whether the request conflicts with any block requests for the block interface if the address space is available; resolving any conflicts between the request and any block requests for the block interface using interface synchronization logic associated with the block-based storage device. - View Dependent Claims (16, 17)
-
-
18. A non-transitory computer-readable storage medium storing instructions which, when executed by at least one processor, cause the at least one processor to perform operations comprising:
-
determining whether a control signal indicates a request is directed to a memory-mapped interface or a block-based interface, the memory-mapped interface having memory-mapped memory space coupled to a block-based storage device, making regions of the block-based storage device available in the memory-mapped memory space if the regions of the storage array are available; determining whether to evict a prior mapping from a vector table; providing an error message if no eviction occurs; processing the request to access the block-based storage device via the memory-mapped interface if the request is requesting access to the memory-mapped interface; checking whether address space having an address and size is available in the vector table; returning an error message if no address space is available; determining whether the request conflicts with any block requests for the block interface if the address space is available; resolving any conflicts between the request and any block requests for the block interface using interface synchronization logic associated with the block-based storage device.
-
Specification