Aggregating unaligned sequential write requests
A system component, such as a memory sub-system controller, aggregates multiple sequential write requests. The controller receives an individual write request from a host system to program a set of data and determines that an aggregation cache has space remaining for the set of data. The controller aggregates the set of data into the aggregation cache in response to determining that the aggregation cache has space remaining for the set of data and transfers data stored in the aggregation cache to a portion of a set of memory components instead of modifying a block of data read from the set of memory components in response to determining that an amount of data stored in the aggregation cache has reached a specified size.
1 . A system comprising:
a set of memory components of a memory sub-system; and
a processing device operatively coupled to the set of memory components, the processing device programmed to cause the system to perform operations comprising:
receiving an individual write request from a host system to program a set of data, the individual write request triggering an internal read request;
determining that an aggregation cache has space remaining for the set of data;
aggregating the set of data into the aggregation cache based on determining that the aggregation cache has space remaining for the set of data;
setting the internal read request to a dropped status to prevent completion of the internal read request based on determining that an amount of data stored in the aggregation cache has reached a specified size prior to completing the internal read request; and
transferring data stored in the aggregation cache to a portion of a set of memory components instead of modifying a block of data associated with the internal read request based on determining that amount of data stored in the aggregation cache has reached the specified size.
2 . The system of claim 1 , wherein the memory sub-system comprises a three-dimensional (3D) NAND device.
3 . The system of claim 1 , wherein the set of data comprises 4 KB of data and the specified size comprises 16 KB of data.
4 . The system of claim 1 , wherein the individual write request comprises a first write request, the operations comprising:
generating the internal read request to obtain the block of data from the set of memory components in response to receiving the first write request.
5 . The system of claim 4 , the operations comprising:
storing the set of data in the aggregation cache in response to generating the internal read request.
6 . The system of claim 5 , the operations comprising:
receiving one or more write requests to program an additional set of data prior to completing the internal read request; and
storing the additional set of data in the aggregation cache in response to determining that the aggregation cache has space remaining for the additional set of data.
7 . The system of claim 6 , the operations comprising:
determining that the amount of data stored in the aggregation cache has reached the specified size prior to completing the internal read request.
8 . The system of claim 1 , the operations comprising:
transferring the data stored in the aggregation cache to the portion of the set of memory components without performing a read-modify-write operation in response to determining that the amount of data stored in the aggregation cache has reached the specified size prior to completing the internal read request.
9 . The system of claim 1 , wherein the block of data comprises the specified size.
10 . The system of claim 1 , wherein the specified size corresponds to a bundle unit of the set of memory components.
11 . The system of claim 10 , wherein the bundle unit comprises multiple transfer units.
12 . The system of claim 1 , the operations comprising:
storing a first set of data of a first write request in a first buffer, the first write request comprising the individual write request;
storing a second set of data of a second write request in a second buffer;
storing a third set of data of a third write request in a third buffer; and
combining the second set of data with the third set of data in the third buffer.
13 . The system of claim 12 , the operations comprising:
determining that the amount of data stored in the third buffer failed to reach the specified size prior to completion of reading the block of data;
storing a fourth set of data of a fourth write request in a fourth buffer; and
combining the first set of data with the second set of data, the third set of data, and the fourth set of data in the fourth buffer in response to determining that the amount of data stored in the third buffer failed to reach the specified size prior to completion of reading the block of data.
14 . The system of claim 13 , the operations comprising:
dropping a request to read the block of data; and
transferring data stored in the fourth buffer to the portion of the set of memory components in response to determining that the fourth buffer reached the specified size.
15 . A method comprising:
receiving an individual write request from a host system to program a set of data, the individual write request triggering an internal read request;
determining that an aggregation cache has space remaining for the set of data;
aggregating the set of data into the aggregation cache based on determining that the aggregation cache has space remaining for the set of data;
setting the internal read request to a dropped status to prevent completion of the internal read request based on determining that an amount of data stored in the aggregation cache has reached a specified size prior to completing the internal read request; and
transferring data stored in the aggregation cache to a portion of a set of memory components instead of modifying a block of data read associated with the internal read request based on determining that the amount of data stored in the aggregation cache has reached the specified size.
16 . The method of claim 15 , wherein a memory sub-system comprising the set of memory components comprises a three-dimensional (3D) NAND device.
17 . The method of claim 15 , wherein the set of data comprises 4 KB of data and the specified size comprises 16 KB of data.
18 . The method of claim 15 , wherein the individual write request comprises a first write request, comprising:
generating an internal read request to obtain the block of data from the set of memory components in response to receiving the first write request.
19 . A non-transitory computer-readable storage medium comprising instructions that, when executed by a processing device, cause the processing device to perform operations comprising:
receiving an individual write request from a host system to program a set of data, the individual write request triggering an internal read request;
determining that an aggregation cache has space remaining for the set of data;
aggregating the set of data into the aggregation cache based on determining that the aggregation cache has space remaining for the set of data;
setting the internal read request to a dropped status to prevent completion of the internal read request based on determining that an amount of data stored in the aggregation cache has reached a specified size prior to completing the internal read request; and
transferring data stored in the aggregation cache to a portion of a set of memory components instead of modifying a block of data associated with the internal read request based on determining that the amount of data stored in the aggregation cache has reached the specified size.
20 . The non-transitory computer-readable storage medium of claim 19 , wherein the set of data comprises 4 KB of data and the specified size comrises 16 KB of data.