Efficient buffer management for media management commands in memory devices
A buffer management component of a memory sub-system configures buffers in a data path associated with a memory device. Available buffers are enabled to store memory associated with an address of the memory device. The buffer management component receives a first command pertaining to a first address of the memory device; responsive to receiving the first command, initiates a first memory operation at the first address using a first available buffer; receives a second command pertaining to a second address of the memory device before the first command has been completed; and responsive to receiving the second command, initiates a second memory operation at the second address of the memory device using a second available buffer.
1 . A method comprising:
enabling, by one or more processing devices responsive to determining that a level of activity in a memory sub-system satisfies a high activity threshold, a first number of buffers of a plurality of buffers in a data path associated with a memory device of the memory sub-system, wherein the first number of buffers comprises at least one previously disabled buffer;
configuring the first number of buffers to receive a plurality of commands pertaining to the memory device;
receiving a first command of the plurality of commands, the first command pertaining to a first address of the memory device;
responsive to receiving the first command, initiating a first memory operation at the first address using a first enabled buffer of the plurality of buffers;
receiving a second command of the plurality of commands, the second command pertaining to a second address of the memory device, wherein the second command is received before the first command has been completed; and
responsive to receiving the second command, initiating a second memory operation at the second address of the memory device using a second enabled buffer of the plurality of buffers.
2 . The method of claim 1 , wherein the first command pertaining to the first address is a first read command to read first data stored at the first address, and the second command is a second read command to read second data stored at the second address.
3 . The method of claim 2 , further comprising:
storing the first data in the first enabled buffer based on first command information identifying the first enabled buffer;
responsive to storing the first data in the first enabled buffer, performing a direct memory access (DMA) operation to move the first data from the first enabled buffer to a local memory location; and
responsive to performing the DMA operation, updating a first buffer status for the first enabled buffer to indicate that the first enabled buffer is available to receive additional data.
4 . The method of claim 1 , wherein the first command pertaining to the first address is a first write command to write first data stored to the first address, and the second command is a second write command to write second data to the second address.
5 . The method of claim 4 , further comprising:
performing a direct memory access (DMA) operation to move the first data from a local memory location to the first enabled buffer;
responsive to performing the DMA operation, performing the first command at the first address of the memory device; and
responsive to performing the first command, updating a first buffer status for the first enabled buffer to indicate that the first enabled buffer is available to receive additional data.
6 . The method of claim 1 , the method further comprising:
configuring a second number of buffers of the plurality of buffers in the data path associated with the memory device of the memory sub-system;
determining that a first buffer of the first number of buffers is disabled;
responsive to determining that the first buffer of the first number of buffers is disabled, determining whether a second buffer of the second number of buffers is enabled; and
responsive to determining that a second buffer of the second number of buffers is enabled, provisioning the second buffer as the first enabled buffer of the plurality of buffers.
7 . The method of claim 6 , wherein the first number of buffers comprises a first number of read buffers, and wherein the second number of buffers comprises a second number of write buffers.
8 . The method of claim 6 , further comprising:
determining whether the second command has been performed;
responsive to determining that the second command has been performed, determining whether a read command has been received to read third data from the memory device; and
responsive to determining that the read command has been received, provisioning a first write buffer of the second number of buffers as a first read buffer to receive the third data for the read command.
9 . The method of claim 6 , further comprising:
determining whether the second command has been performed;
responsive to determining that the second command has been performed, determining whether a write command has been received to write third data to the memory device; and
responsive to determining that the write command has been received, provisioning a first read buffer of the first number of buffers as a first write buffer to receive the third data for the write command.
10 . The method of claim 1 , further comprising:
monitoring the level of activity associated with processing data of the memory device in the memory sub-system; and
determining whether the level of activity satisfies the high activity threshold.
11 . The method of claim 10 , further comprising:
determining whether the level of activity satisfies a low activity threshold; and
responsive to determining that the level of activity satisfies the low activity threshold, disabling one or more additional buffers from the plurality of buffers in the first number of buffers.
12 . The method of claim 10 , wherein the level of activity comprises a level of read activity.
13 . The method of claim 10 , wherein the level of activity comprises a level of write activity.
14 . A system comprising:
a plurality of memory devices; and
one or more processing devices operatively coupled with the plurality of memory devices to perform operations comprising:
enabling, responsive to determining that a level of activity in the system satisfies a high activity threshold a first number of buffers of a plurality of buffers in a data path associated with a memory device of the plurality of memory devices, wherein the first number of buffers comprises at least one previously disabled buffer;
configuring the first number of buffers to receive a plurality of commands pertaining to the memory device;
receiving a first command of the plurality of commands, the first command pertaining to a first address of the memory device;
responsive to receiving the first command, initiating a first memory operation at the first address using a first enabled buffer of the plurality of buffers;
receiving a second command of the plurality of commands, the second command pertaining to a second address of the memory device, wherein the second command is received before the first command has been completed; and
responsive to receiving the second command, initiating a second memory operation at the second address of the memory device using a second enabled buffer of the plurality of buffers.
15 . The system of claim 14 , wherein the first command pertaining to the first address is a first read command to read first data stored at the first address, and the second command is a second read command to read second data stored at the second address.
16 . The system of claim 15 , wherein the one or more processing devices are to perform further operations comprising:
storing the first data in the first enabled buffer based on first command information identifying the first enabled buffer;
responsive to storing the first data in the first enabled buffer, performing a direct memory access (DMA) operation to move the first data from the first enabled buffer to a local memory location; and
responsive to performing the DMA operation, updating a first buffer status for the first enabled buffer to indicate that the first enabled buffer is available to receive additional data.
17 . The system of claim 14 , wherein the first command pertaining to the first address is a first write command to write first data stored to the first address, and the second command is a second write command to write second data to the second address.
18 . The system of claim 17 , wherein the one or more processing devices are to perform further operations comprising:
performing a direct memory access (DMA) operation to move the first data from a local memory location to the first enabled buffer;
responsive to performing the DMA operation, performing the first command at the first address of the memory device; and
responsive to performing the first command, updating a first buffer status for the first enabled buffer to indicate that the first enabled buffer is available to receive additional data.
19 . The system of claim 14 , wherein the one or more processing devices are to perform further operations comprising:
configuring a second number of buffers of the plurality of buffers in the data path associated with the memory device;
determining that a first buffer of the first number of buffers is disabled;
responsive to determining that the first buffer of the first number of buffers is disabled, determining whether a second buffer of the second number of buffers is enabled; and
responsive to determining that a second buffer of the second number of buffers is enabled, provisioning the second buffer as the first enabled buffer of the plurality of buffers.
20 . A non-transitory computer-readable storage medium comprising instructions that, when executed by one or more processing devices, cause the one or more processing devices to perform operations comprising:
enabling, responsive to determining that a level of activity in a memory sub-system satisfies a high activity threshold, a first number of buffers of a plurality of buffers in a data path associated with a memory device of the memory sub-system, wherein the first number of buffers comprises at least one previously disabled buffer;
configuring the first number of buffers to receive a plurality of commands pertaining to the memory device;
receiving a first command of the plurality of commands, the first command pertaining to a first address of the memory device;
responsive to receiving the first command, initiating a first memory operation at the first address using a first enabled buffer of the plurality of buffers;
receiving a second command of the plurality of commands, the second command pertaining to a second address of the memory device, wherein the second command is received before the first command has been completed; and
responsive to receiving the second command, initiating a second memory operation at the second address of the memory device using a second enabled buffer of the plurality of buffers.