Memory system and method for controlling nonvolatile memory
According to one embodiment, a memory system determine both of a first block to which data from a host is to be written and a first location of the first block, when receiving a write request to designate a first logical address from the host. The memory system writes the data from the host to the first location of the first block. The memory system notifies the host of the first logical address, a first block number designating the first block, and a first in-block offset indicating an offset from a leading part of the first block to the first location by a multiple of grain having a size different from a page size.
1 . A memory system connectable to a host, comprising:
a nonvolatile memory including a plurality of blocks, each of the plurality of blocks being a unit of a data erase operation; and
a controller electrically connected to the nonvolatile memory and configured to:
manage a plurality of block groups, each of the plurality of block groups including at least one of the plurality of blocks; and
in response to receiving a write command from the host, the write command requesting to write first data and specifying an identifier associated with a write destination block group to which the first data is to be written:
select, based on the specified identifier, a block group corresponding to the specified identifier, from the plurality of block groups,
select a first block from the at least one of the plurality of blocks included in the selected block group, and
write the first data to a first location of the first block.
2 . The memory system according to claim 1 , wherein
the write command further specifies a first logical address associated with the first data, but does not specify an identifier of the first block.
3 . The memory system according to claim 1 , wherein
the controller is further configured to notify the host of the first location by using at least an identifier of the first block.
4 . The memory system according to claim 3 , wherein
the controller is configured to notify the host of the first location by using an offset address in the first block and the identifier of the first block.
5 . The memory system according to claim 4 , wherein
each of the plurality of blocks includes a plurality of pages, each of the plurality of pages being a unit of a write operation, and
the controller is configured to specify the offset address by using a multiple of a grain, a size of the grain being different from a size of each of the plurality of pages.
6 . The memory system according to claim 1 , wherein
each of the plurality of blocks belongs to only one block group among the plurality of block groups.
7 . The memory system according to claim 1 , wherein
the controller is further configured to:
copy second data from the first block to a second block of the plurality of blocks; and
notify the host of at least a second logical address associated with the second data.
8 . The memory system according to claim 7 , wherein
the controller is further configured to notify the host of an identifier of the second block.
9 . The memory system according to claim 7 , wherein
the second block is included in the block group that includes the first block.
10 . The memory system according to claim 7 , wherein
the second block is included in a different block group than the block group that includes the first block.
11 . The memory system according to claim 1 , wherein
the controller is further configured to notify the host of at least a first logical address associated with the first data.
12 . A method of controlling a nonvolatile memory, the nonvolatile memory including a plurality of blocks, each of the plurality of blocks being a unit of a data erase operation, the method comprising:
managing a plurality of block groups, each of the plurality of block groups including at least one of the plurality of blocks; and
in response to receiving a write command from a host, the write command requesting to write first data and specifying an identifier associated with a write destination block group to which the first data is to be written:
selecting, based on the specified identifier, a block group corresponding to the specified identifier, from the plurality of block groups,
selecting a first block from the at least one of the plurality of blocks included in the selected block group, and
writing the first data to a first location of the first block.
13 . The method according to claim 12 , wherein
the write command further specifies a first logical address associated with the first data, but does not specify an identifier of the first block.
14 . The method according to claim 12 , further comprising:
notifying the host of the first location by using at least an identifier of the first block.
15 . The method according to claim 14 , further comprising:
notifying the host of the first location by using an offset address in the first block and the identifier of the first block.
16 . The method according to claim 15 , wherein
each of the plurality of blocks includes a plurality of pages, each of the plurality of pages being a unit of a write operation, and
the offset address is specified by using a multiple of a grain, a size of the grain being different from a size of each of the plurality of pages.
17 . The method according to claim 12 , wherein
each of the plurality of blocks belongs to only one block group among the plurality of block groups.
18 . The method according to claim 12 , further comprising:
copying second data from the first block to a second block of the plurality of blocks; and
notifying the host of at least a second logical address associated with the second data.
19 . The method according to claim 18 , further comprising:
notifying the host of an identifier of the second block.
20 . The method according to claim 18 , wherein
the second block is included in the block group that includes the first block.
21 . The method according to claim 18 , wherein
the second block is included in a different block group than the block group that includes the first block.
22 . The method according to claim 12 , further comprising:
notifying the host of at least a first logical address associated with the first data.
23 . A controller configured to control a nonvolatile memory including a plurality of blocks, each of the plurality of blocks being a unit of a data erase operation, the controller comprising:
circuitry configured to:
communicate with a host;
manage a plurality of block groups, each of the plurality of block groups including at least one of the plurality of blocks; and
in response to receiving a write command from the host, the write command requesting to write first data and specifying an identifier associated with a write destination block group to which the first data is to be written:
select, based on the specified identifier, a block group corresponding to the specified identifier, from the plurality of block groups,
select a first block from the at least one of the plurality of blocks included in the selected block group, and
write the first data to a first location of the first block.
24 . The controller according to claim 23 , wherein
the write command further specifies a first logical address associated with the first data, but does not specify an identifier of the first block.
25 . The controller according to claim 23 , wherein
the circuitry is further configured to notify the host of the first location by using at least an identifier of the first block.
26 . The controller according to claim 25 , wherein
the circuitry is configured to notify the host of the first location by using an offset address in the first block and the identifier of the first block.
27 . The controller according to claim 26 , wherein
each of the plurality of blocks includes a plurality of pages, each of the plurality of pages being a unit of a write operation, and
the circuitry is configured to specify the offset address by using a multiple of a grain, a size of the grain being different from a size of each of the plurality of pages.
28 . The controller according to claim 23 , wherein
each of the plurality of blocks belongs to only one block group among the plurality of block groups.
29 . The controller according to claim 23 , wherein
the circuitry is further configured to:
copy second data from the first block to a second block of the plurality of blocks; and
notify the host of at least a second logical address associated with the second data.
30 . The controller according to claim 29 , wherein
the circuitry is further configured to notify the host of an identifier of the second block.
31 . The controller according to claim 29 , wherein
the second block is included in the block group that includes the first block.
32 . The controller according to claim 29 , wherein
the second block is included in a different block group than the block group that includes the first block.
33 . The controller according to claim 23 , wherein
the circuitry is further configured to notify the host of at least a first logical address associated with the first data.