Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
First Claim
1. A method performed by a storage device, comprising:
- receiving, at the storage device, a plurality of input/output (I/O) requests from a host, the plurality of I/O requests including read requests and write requests to be performed in a plurality of regions in a logical address space of the host, wherein each region in the logical address space of the host includes a plurality of logical addresses;
for each read request of the read requests received from the host, mapping an address specified by the read request to a physical address in a non-volatile storage medium of the storage device in accordance with a logical to physical address map maintained by a storage controller of the storage device for mapping logical addresses in the logical address space of the host to physical addresses in the storage device; and
the storage device performing one or more operations for each respective region of the plurality of regions in the logical address space of the host, including;
determining, and storing in a data structure in the storage device, a total number of sequential read requests from the respective region in the logical address space of the host during a predetermined time period, wherein sequential read requests are read requests for sequential logical addresses in the logical address space of the host;
in accordance with the determined total number of sequential read requests from the respective region in the logical address space of the host, determining that the respective region has a history of sequential read requests from the respective region in the logical address space of the host during the predetermined time period, by determining that the determined total number of sequential read requests from the respective region is greater than a count threshold; and
in accordance with determining that the respective region in the logical address space of the host has a history of sequential read requests from the respective region during the predetermined time period, enabling read ahead logic for the respective region in the logical address space of the host, including performing a read ahead operation for a predefined amount of data from the non-volatile storage medium, comprising an entire sub-region of the respective region in the logical address space of the host.
3 Assignments
0 Petitions
Accused Products
Abstract
Systems, methods and/or devices are used to enable using history of I/O sequences to trigger cached read ahead in a non-volatile storage device. In one aspect, the method includes (1) receiving, at a storage device, a plurality of input/output (I/O) requests from a host, the plurality of I/O requests including read requests and write requests to be performed in a plurality of regions in a logical address space of the host, and (2) performing one or more operations for each region of the plurality of regions in the logical address space of the host, including (a) determining whether the region has a history of sequential read requests during a predetermined time period, and (b) in accordance with a determination that the region has a history of sequential read requests during the predetermined time period, enabling read ahead logic for the region.
-
Citations
21 Claims
-
1. A method performed by a storage device, comprising:
-
receiving, at the storage device, a plurality of input/output (I/O) requests from a host, the plurality of I/O requests including read requests and write requests to be performed in a plurality of regions in a logical address space of the host, wherein each region in the logical address space of the host includes a plurality of logical addresses; for each read request of the read requests received from the host, mapping an address specified by the read request to a physical address in a non-volatile storage medium of the storage device in accordance with a logical to physical address map maintained by a storage controller of the storage device for mapping logical addresses in the logical address space of the host to physical addresses in the storage device; and the storage device performing one or more operations for each respective region of the plurality of regions in the logical address space of the host, including; determining, and storing in a data structure in the storage device, a total number of sequential read requests from the respective region in the logical address space of the host during a predetermined time period, wherein sequential read requests are read requests for sequential logical addresses in the logical address space of the host; in accordance with the determined total number of sequential read requests from the respective region in the logical address space of the host, determining that the respective region has a history of sequential read requests from the respective region in the logical address space of the host during the predetermined time period, by determining that the determined total number of sequential read requests from the respective region is greater than a count threshold; and in accordance with determining that the respective region in the logical address space of the host has a history of sequential read requests from the respective region during the predetermined time period, enabling read ahead logic for the respective region in the logical address space of the host, including performing a read ahead operation for a predefined amount of data from the non-volatile storage medium, comprising an entire sub-region of the respective region in the logical address space of the host. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A storage device, comprising:
-
one or more processors; and memory storing one or more programs, which when executed by the one or more processors cause the storage device to; receive, at the storage device, a plurality of input/output (I/O) requests from a host, the plurality of I/O requests including read requests and write requests to be performed in a plurality of regions in a logical address space of the host, wherein each region in the logical address space of the host includes a plurality of logical addresses; for each read request of the read requests received from the host, mapping an address specified by the read request to a physical address in a non-volatile storage medium of the storage device in accordance with a logical to physical address map maintained by a storage controller of the storage device for mapping logical addresses in the logical address space of the host to physical addresses in the storage device; and perform one or more operations for each respective region of the plurality of regions in the logical address space of the host, including; determining, and storing in a data structure in the storage device, a total number of sequential read requests from the respective region in the logical address space of the host during a predetermined time period, wherein sequential read requests are read requests for sequential logical addresses in the logical address space of the host; in accordance with the determined total number of sequential read requests from the respective region in the logical address space of the host, determining whether the respective region has a history of sequential read requests from the respective region in the logical address space of the host during the predetermined time period, by determining that the determined total number of sequential read requests from the respective region is greater than a count threshold; and in accordance with determining that the respective region in the logical address space of the host has a history of sequential read requests from the respective region during the predetermined time period, enabling read ahead logic for the respective region in the logical address space of the host, including performing a read ahead operation for a predefined amount of data from the non-volatile storage medium, comprising an entire sub-region of the respective region in the logical address space of the host. - View Dependent Claims (12, 13, 14, 15)
-
-
16. A storage system, comprising:
-
a storage medium; one or more processors; and memory storing one or more programs, which when executed by the one or more processors cause the storage system to; receive, at a storage device, a plurality of input/output (I/O) requests from a host, the plurality of I/O requests including read requests and write requests to be performed in a plurality of regions in a logical address space of the host, wherein each region in the logical address space of the host includes a plurality of logical addresses; for each read request of the read requests received from the host, mapping an address specified by the read request to a physical address in a non-volatile storage medium of the storage device in accordance with a logical to physical address map maintained by a storage controller of the storage device for mapping logical addresses in the logical address space of the host to physical addresses in the storage device; and perform one or more operations for each respective region of the plurality of regions in the logical address space of the host, including; determining, and storing in a data structure in the storage device, a total number of sequential read requests from the respective region in the logical address space of the host during a predetermined time period, wherein sequential read requests are read requests for sequential logical addresses in the logical address space of the host; in accordance with the determined total number of sequential read requests from the respective region in the logical address space of the host, determining whether the respective region has a history of sequential read requests from the respective region in the logical address space of the host during the predetermined time period, by determining that the determined total number of sequential read requests from the respective region is greater than a count threshold; and in accordance with determining that the respective region in the logical address space of the host has a history of sequential read requests from the respective during the predetermined time period, enabling read ahead logic for the respective region in the logical address space of the host, including performing a read ahead operation for a predefined amount of data from the non-volatile storage medium, comprising an entire sub-region of the respective region in the logical address space of the host.
-
-
17. A non-transitory computer readable storage medium, storing one or more programs configured for execution by one or more processors of a storage device, the one or more programs including instructions for:
-
receiving, at a storage device, a plurality of input/output (I/O) requests from a host, the plurality of I/O requests including read requests and write requests to be performed in a plurality of respective regions in a logical address space of the host, wherein each region in the logical address space of the host includes a plurality of logical addresses; for each read request of the read requests received from the host, mapping an address specified by the read request to a physical address in a non-volatile storage medium of the storage device in accordance with a logical to physical address map maintained by a storage controller of the storage device for mapping logical addresses in the logical address space of the host to physical addresses in the storage device; and the storage device performing one or more operations for each respective region of the plurality of regions in the logical address space of the host, including; determining, and storing in a data structure in the storage device, a total number of sequential read requests from the respective region in the logical address space of the host during a predetermined time period, wherein sequential read requests are read requests for sequential logical addresses in the logical address space of the host; in accordance with the determined total number of sequential read requests from the respective region in the logical address space of the host, determining whether the respective region has a history of sequential read requests from the respective region in the logical address space of the host during the predetermined time period, by determining that the determined total number of sequential read requests from the respective region is greater than a count threshold; and in accordance with determining that the respective region in the logical address space of the host has a history of sequential read requests from the respective region during the predetermined time period, enabling read ahead logic for the respective region in the logical address space of the host, including performing a read ahead operation for a predefined amount of data from the non-volatile storage medium, comprising an entire sub-region of the respective region in the logical address space of the host. - View Dependent Claims (18, 19, 20, 21)
-
Specification