The present invention relates to an information processing device suitable for processing large scale data at high speed by using a nonvolatile memory.
In response to a recent increase in large scale data, it is desired to use a large capacity nonvolatile memory which can inexpensively store the large scale data with low power consumption. Further, a lot of data needs to be read and written to process large scale data; therefore it is also desired to read and write data at high speed.
On the other hand, in a storage device using a conventional nonvolatile memory, a unit (block) for erasing data is larger than a unit for writing data, and even unnecessary data cannot be overwritten. Therefore, if the block is filled with necessary data and unnecessary data, new data cannot be written. If a writable area is insufficient when new data is written in the storage device from a host, the storage device reads physically scattering necessary data from each block, erases the block from which the data has been read, and writes the read data back to the erased block. Accordingly, an area other than the data written back to the erased block is generally secured as a writable area. This process is called a garbage collection.
Further, PTL 1 discloses, with respect to a storage device using a nonvolatile memory, a technique in which a host notifies the storage device of a file name and an address of file data at a stage when the host erases the file data, the storage device invalidates the data at a stage when the storage device is notified from the host that the file data is erased, and the storage device does not perform a garbage collection and simply erases the file data in the case where a block to be erased only includes the invalidated data.
PTL 1: JP 2008-198208 A
A storage device using a nonvolatile memory needs a garbage collection, and while the garbage collection is performed, a host needs to stop reading/writing processing. Accordingly, performance of the storage device is degraded, and since the garbage collection also includes writing processing, a lifetime of the storage device having an upper frequency limit of writing is deteriorated.
Further, in the technique disclosed in the above PTL 1, in the case where an erase block includes only invalidated data, the garbage collection is not needed. However, the erase block is not necessarily filled with the invalidated data; therefore, the garbage collection still might be performed, and an issue of the garbage collection is not solved.
An object of the present invention is to accelerate data reading/writing of a storage device using a nonvolatile memory and extend a lifetime of the storage device by eliminating performance of the garbage collection in an inexpensive and large-capacity nonvolatile memory.
An information processing device according to the present invention includes a host and a memory subsystem. The host issues a write command or an erase command with tag information corresponding to data to the memory subsystem and includes an information processing circuit for processing the data. The memory subsystem includes a first memory, a second memory, and a memory subsystem control circuit. The first memory stores management information for managing the second memory. The second memory has a larger size of a data erase unit than a size of a data write unit and stores the data. The memory subsystem control circuit writes data on the same tag information in the same management unit and writes data on the different tag information in the different management unit, based on the management information in which n times of the data erase unit (“n” is a natural number) is a management unit.
Further, in the information processing device according to the present invention, the host includes the information processing circuit which issues a read command with the tag information to the memory subsystem, and the memory subsystem includes the memory subsystem control circuit which reads data corresponding to the same tag information from the second memory and forwards the data to the host.
In the information processing device according to the present invention, the memory subsystem includes the memory subsystem control circuit which erases the data corresponding to the same tag information from the second memory.
In the information processing device according to the present invention, the memory subsystem includes the first memory and the second memory. The first memory is accessible at a higher speed than that of the second memory. The second memory is a nonvolatile memory.
According to the present invention, a large scale memory space necessary for analyzing a large scale data can be inexpensively provided by a nonvolatile memory, and also in such a case, performance of a garbage collection in the nonvolatile memory can be eliminated since reading, writing, and erasing are performed at a management unit of n times of an erase unit. Accordingly, data can be read and written at a high speed, and also a lifetime of the nonvolatile memory can be extended.
An embodiment of a preferable server (information processing device) will be described in detail below with reference to attached drawings.
First, a configuration of a server (SVR) 0101 will be described with reference to
The host 0102 includes an information processing circuit (CPU) 0105, and one or more memories (DRAM) 0106 connected to the information processing circuit 0105. The information processing circuit 0105 reads information from the memory 0106 and performs a process by writing the information.
Every hosts 0102 can communicate each other via the interconnect 0103. Further, each of the hosts 0102 can communicate with the memory subsystem 0104 connected thereto.
Each of the memory subsystems 0104 includes one memory subsystem control circuit (MSC) 0107, one or more nonvolatile memories (NVM) 0108, and one or more memories (DRAM) 0109. The memory subsystem control circuit 0107 can communicate with the host 0102, the nonvolatile memory 0108, and the memory 0109.
The memory 0109 in the memory subsystem 0104 is a memory for storing management information, and a high speed DRAM is preferably used. However, other than the DRAM, a random access memory may be used, such as an MRAM, a phase change memory, an SRAM, and a NOR flash memory, and a ReRAM. Further, data to be written and data to be read are temporarily stored in the nonvolatile memory 0108 and may be used as a cash of the nonvolatile memory 0108. The nonvolatile memory 0108 stores data written from the host 0102. The nonvolatile memory 0108 is a memory in which a size of a data erase unit of such as a NAND flash memory, a phase change memory, and a ReRAM, which are inexpensive and have a large capacity, is equal to or larger than a size of a data write unit.
The host 0102 applies a tag number to data to be processed by using the memory subsystem 0104. The memory subsystem control circuit 0107 manages an erase unit of the nonvolatile memory 0108 and writes data, in which the same tag numbers are applied, in the same erase unit of the nonvolatile memory 0108. A sequence of this process will be described later by using
The memory subsystem 0104 includes one memory subsystem control circuit 0107, the nonvolatile memories (NVM (1, 1) to NVM (i, j)) 0108, and the memories (DRAM (1) to DRAM (p)) 0109 (i, j, and p are natural numbers). The memory subsystem control circuit 0107 includes a memory access control circuit (DMAC) 0201, a command buffer (C-BF) 0202, a data buffer (D-BF) 0203, an address buffer (A-BF) 0204, a tag buffer (T-BF) 0205, a register (RG) 0206, a garbage collection elimination control block (GCLS_CB) 0207, nonvolatile memory control circuits (NVMC (1) to NVMC (i)) 0208, and DRAM control circuits (DRAMC (1) to DRAMC (p)) 0209.
The memory access control circuit 0201 is connected to the host 0102 illustrated in
The tag buffer 0205 temporarily stores a tag number, such as a group (Gr.) number, a super step (S.S.) number, a writing order (order) number, and a data type identifier (IDX), of data in a read command, a write command, and an erase commend from the host 0102. The group and the super step will be described later with reference to
The register 0206 stores control information necessary for a process of the garbage collection elimination control block 0207 set by the host 0102 and enables to read the information from the garbage collection elimination control block 0207.
The garbage collection elimination control block 0207 communicate with the register 0206, the command buffer 0202, the data buffer 0203, the address buffer 0204, and the tag buffer 0205 and controls the nonvolatile memory control circuit 0208 and the DRAM control circuit 0209.
The nonvolatile memory control circuits (NVMC (1) to NVMC (i)) 0208 are connected to the nonvolatile memories (NVM (i, 1) to NVM (i, j)) 0108 and reads, writes, and erases data in the connected nonvolatile memories 0108. Here, “i” is a natural number of 1 to i and indicates a channel number. Multiple channels 0210 include a data transfer bus (I/O) 0212 which can independently communicate. The data transfer bus 0212 is shared among j nonvolatile memories (NVM (i, 1), NVM (i, 2), . . . , NVM (i, j)) 0108 belonging to one channel i (Ch i) 0210. Further, j nonvolatile memories 0108 belonging to each channel are independent memories and can independently process a command from the nonvolatile memory control circuit 0208. In an order physically close to the nonvolatile memory control circuit 0208, j nonvolatile memories 0108 belong to ways (Way 1, Way 2, . . . , Way j) 0211. The nonvolatile memory control circuit 0208 can determine whether each nonvolatile memory 0108 is processing data, by reading a signal of a ready/busy line (RY/BY) 0213 connected to each nonvolatile memory 0108. The nonvolatile memory control circuit 0208 is connected to the garbage collection elimination control block 0207 and can communicate with each other.
The DRAM control circuits (DRAMC (1) to DRAMC (p)) 0209 are respectively connected to the memories (DRAM (1) to DRAM (p)) 0109 and read data from the memories 0109 and write data in the memories 0109. Further, the DRAM control circuit 0209 is connected to the garbage collection elimination control block 0207 and can communicate with each other.
With reference to
Data stored in the nonvolatile memory 0108 is read at a unit of the page 0302, and the data is written in the nonvolatile memory 0108 at a unit of the page 0302. Data stored in the nonvolatile memory 0108 is erased at a unit of the block 0301. When data is written in the nonvolatile memory 0108, the data cannot be overwritten. Therefore, for example, data can be written in a page (PG_e) 0304 in a block 0303 erased as illustrated in
Characteristic 1: A data size of an erase unit (the block 0301) is equal to or larger than a data size of a write unit (the page 0302).
Characteristic 2: New data cannot be overwritten in such as the page 0305 in which data is already written.
A process of the server 0101 will be described below by exemplifying a large scale graph analysis. First, an example of a graph handled in the server 0101 and an example of an analysis sequence of data of the graph will be described with reference to
Time 1: First, the memory subsystem 0104 reads graph data of a group 1 stored in the nonvolatile memory 0108 (Read Gr. 1) 0501 and sends the data to the host 0102 (Send) 0502.
Time 2: Next, the host 0102 analyzes the graph data in the group 1 sent from the memory subsystem 0104 (Analyze Gr. 1) 0503. In parallel with this, the memory subsystem 0104 reads graph data of a group 2 to be analyzed in the host 0102 next (0504). In parallel with these, the memory subsystem 0104 erases the graph data of the group 1 (0505). The graph data of the group 1 can be erased at this timing since the data is not used again after analysis by the host.
Time 3: Each host 0102 transmits a graph analysis result of the group 1 to other hosts 0102. Each of the hosts 0102 classifies graph analysis results sent from the other hosts 0102 into each group and sends the results to the memory subsystem 0104. The memory subsystem 0104 writes the graph analysis result, which has been sent from the host 0102 and classified for each group, in the nonvolatile memory 0108 (Write Gr. at random) 0506. Specifically, the host 0102 sends data for each page 0302 which is a write unit of the nonvolatile memory 0108 to the memory subsystem 0104 in a random order of group numbers.
The above-described sequence is repeated in the group order. After every groups 1 to M finish processing, synchronization is performed among the host (Host (1) to Host (N)) 0102 for confirming process completion (SYNC). This sequence of the processes and the synchronization of the groups 1 to M are called a super step (S.S.), and the processes are repeated in an order from the group 1 after the synchronization. A graph analysis result written in the memory subsystem 0104 in the previous super step is read in the next super step as graph data. The graph analysis is performed by repeating this super step.
With reference to
When the host 0102 issues a read command of data in the memory subsystem 0104 (Read), the host 0102 sends, to the memory subsystem 0104, a super step (S.S.) number, a group (Gr.) number, and a data type identifier (IDX) of the data to be read. Alternatively, the host 0102 sends a logical address (Adr) and a read data size (size) to the memory subsystem 0104. The data type identifier is additional information to be used when the memory subsystem 0104 classifies various graph data, classifies graph data and graph analysis results, and classifies vertex numbers. The memory subsystem 0104 reads data based on the above information sent from the host 0102 and returns the read data to the host 0102.
When the host 0102 issues a data write command to the memory subsystem 0104 (Write), the host 0102 sends, to the memory subsystem 0104, a super step (S.S.) number, a group (Gr.) number, and a data type identifier (IDX) of write data, and a write order (order) and write data (data) in a group, and as necessary, a logical address (Adr) and a write data size (size). The memory subsystem 0104 writes data in the nonvolatile memory 0108 based on the above information sent from the host 0102. A write order in a group is not necessarily included in a tag number.
When the host 0102 issues an erase command of data in the memory subsystem 0104 (Erase), the host 0102 sends, to the memory subsystem 0104, a super step (S.S.) number, a group (Gr.) number, and a data type identifier (IDX) of data to be erased. Alternatively, the host 0102 sends a logical address (Adr) and a size of data to be erased (size) to the memory subsystem 0104. The memory subsystem 0104 erases data based on the above information sent from the host 0102.
With reference to
A table (GR_PA) 0900, a table (LA_GR) 0910, a table (GR_PTR) 1800, and a table (PBA_ST) 1400, which are stored in the memory 0109, are used for managing by LAunit_host and PAunit_ctrl. First, the table (GR_PA) 0900 and the table (LA_GR) 0910 will be described, and the table (GR_PTR) 1800 and the table (PBA_ST) 1400 will be described later with reference to
Association of a super step number and a group number of data and numbers of a way and a block in which data is stored is managed by the table (GR_PA) 0900 illustrated in
If a super step number, a group number, and a data type identifier (IDX) are provided, the memory subsystem control circuit 0107 can identify, by using the table (GR_PA) 0900, a first way (Way_S) of the nonvolatile memory 0108 including the PAunit_ctrl in which corresponding data is stored, a last way (Way_E) from a first block number (PBA_S) 0903 in the way (Way_S), and a last block number (PBA_E) 0904 in the way (Way_E). In the case where, in
Further, if a logical address of data is provided, the memory subsystem control circuit 0107 can determine a super step number, a group number, and a data type identifier, to which data belong, by using the table (LA_GR) 0910. An entry (LAunit_host) in the table (LA_GR) 0910 is a number of the LAunit_host which is a management unit of a logical address by a host. A super step number and a group number of data corresponding to data of the logical address is indicated by a value of an Order_LA_host.
Next, a data layout in the PAunit_ctrl of the memory subsystem control circuit 0107 will be described with reference to
Similarly, data of order=[i] 1103 is stored in a page 1003 of the same page number (1) of the same block number (PBA_S) in the nonvolatile memory (i, Way_S). The next data of order=[i+1] is stored in a block number (PBA_(S+1)) of the next way (Way_S+1) and the same page number (1). Data by order=[iP] is sequentially stored in the same page number of each block of nonvolatile memories (1104, 1004). However, iP indicates a number of the nonvolatile memory 0108 allocated to one PAunit_ctrl, and the following formula is established: iP=i×(Way_E−Way_S+1). After order=[iP], data is stored in the same order as order=[1] to [iP] in such as a page 1005 which is a page number next to each nonvolatile memory 0108. Since data is stored as regulated above, a page number can be calculated.
The data in which a group number is 1 have been described above. In this case, data of order=[1] is stored in the nonvolatile memory 0108 in the channel (Ch. 1). However, data of a different group number is disposed so as to differentiate a channel number of the nonvolatile memory 0108 in which the data of order=[1] is to be written. For example, in the case where data in which a group number is 3 is stored, data of order=[1] is written from the nonvolatile memory (3, Way_S′) of a channel (Ch. 3) as indicated in an NVM chip 1106 as in
Generally, as illustrated in
In the case where the server 0101 performs graph processing, processing of the memory subsystem 0104 will be described with reference to
(1) The host 0102 which performs an input graph analysis of data necessary for control of a memory subsystem writes data necessary for control of the memory subsystem 0104 in the register 0206 of the memory subsystem 0104 before the graph analysis. The data necessary for control of the memory subsystem 0104 includes the LAunit_host which is a management unit of a logical address by the host 0102, the number of a super step and a group, a graph data size, an identifier of a graph data (necessary for differentiate a graph), and the quantity of vertices and sizes of a graph. In the case of searching the shortest route of a graph, two vertices desired to search the shortest route, specifically information for specifying a starting point and an ending point, are included.
(2) Data Writing Process
Processing of the memory subsystem control circuit 0107 in data writing will be described based on
Next, the garbage collection elimination control block 0207 reads a write order number in a group from the buffer and reads, from the register 0206, the LAunit_host which is a management unit of a logical address determined by the host 0102. As this result, in the case where the logical address LA of data to be written next is a beginning of the LAunit_host which is a management unit of the logical address LA determined by the host 0102 (Step 2 (LAunit_host full) 1302 is Yes), Step 31303 is performed. On the other hand, in the case where a logical address of data to be written next is not a beginning of the LAunit_host (Step 2 (LAunit_host full) 1302 is No), Step 81308 is performed. For example, if a page data size is 8 kB, and the LAunit_host is 1 MB, the formula, 1 MB/8 kB=128, is established, and if the formula, order=[128×n+1] (“n” is a natural number), is established, LAunit_host full in Step 21302 becomes Yes, and it becomes No in other cases.
Next, in Step 31303, the garbage collection elimination control block 0207 reads a write order number in a group from a buffer and reads, from the register 0206, the PAunit_ctrl which is a management unit of a physical address determined by the garbage collection elimination control block 0207. As this result, if data to be written next is a beginning of the PAunit_ctrl (Step 3 (PAunit_ctrl full) 1303 is Yes), Step 41304 is performed. On the other hand, if the data to be written next is not a beginning of the PAunit_ctrl (Step 3 (PAunit_ctrl full) 1303 is No), Step 71307 is performed. For example, if a page data size is 8 kB, and the PAunit_ctrl is 32 MB, the formula, 32 MB/8 kB=4096, is established, and if the formula, order=[4096×n+1] (“n” is a natural number), is established, the PAunit_ctrl full in Step 31303 becomes Yes, and it becomes No in other cases.
Next, the garbage collection elimination control block 0207 sends a read command to the DRAM control circuit 0209 and reads the table (PBA_ST) 1400 stored in the memory 0109 (Step 4 (Read PBA_ST) 1304). As illustrated in
The garbage collection elimination control block 0207 refers to a physical block status (Status of PBA) 1402 of the table (PBA_ST) 1400 and allocates a block, in which data is erased, to anew PAunit_ctrl (Step 5 (Alloc.PAunit_ctrl) 1305).
After Step 51305, the garbage collection elimination control block 0207 issues a data write command to the DRAM control circuit 0209 and updates the physical block status (Status of PBA) 1402 of the table (PBA_ST) 1400 stored in the memory 0109, and the newly allocated physical block is set to “5: secured as a data write destination”. Further, the garbage collection elimination control block 0207 similarly issues a data write command to the DRAM control circuit 0209, updates the table (GR_PA) 0900 illustrated in
In Step 71307, in the case where a logical address of write data is stored in an address buffer, the garbage collection elimination control block 0207 issues a data write command to the DRAM control circuit 0209 and updates the table (LA_GR) 0910 illustrated in
Next, the garbage collection elimination control block 0207 sends a read command to the DRAM control circuit 0209 and reads the table (GR_PA) 0900 stored in the memory 0109 (Step 8 (Read GR_PA) 1308).
After Step 81308, the garbage collection elimination control block 0207 reads a super step number, a group number, and a data type identifier from the tag buffer 0205 and reads a write order number in a group from a buffer. Further, the garbage collection elimination control block 0207 refers to the table (GR_PA) 0900 read in Step 81308 and determines a way, a block and a page of a nonvolatile memory which is a data write destination (Step 9 (Det. Chip_Page) 1309). At the end, the garbage collection elimination control block 0207 issues a data write command to the DRAM control circuit 0209, forwards the data write command from the host 0102 to the memory 0109 from the command buffer 0202, forwards a super step number, a group number, and a data type identifier to the memory 0109 from the tag buffer 0205, and forwards a write order (order) in a group to the memory 0109 from the buffer 05. Together with these, the garbage collection elimination control block 0207 forwards a way, a block, and a page of the nonvolatile memory 0108, which is a data write destination, to the memory 0109. Further, as necessary, the garbage collection elimination control block 0207 forwards write data from the data buffer 0203 to the memory 0109 and forwards a logical address of write data and a write data size from an address buffer to the memory 0109 (Step 10 (To DRAM) 1310).
(3) Data Reading Process
Processing of the memory subsystem control circuit 0207 in data reading will be described based on
The memory access control circuit 0201 in the memory subsystem control circuit 0107 forwards, to the memory subsystem 0104, a data read command stored in the memory 0106 managed by the host 0102, a super step number, a group number, and a data type identifier of read data. Next, the memory access control circuit 0201 stores a read command in the command buffer 0202 and stores a super step number, a group number, and a data type identifier in the tag buffer 0205 (Step 1 (Send to MSS) 1501). Alternatively, first, the memory access control circuit 0201 forwards, to the memory subsystem 0104, a data read command stored in the memory 0106 managed by the host 0102 and a logical address and a data size of read data. Then, the logical address of the read data and a size of the read data are stored in the address buffer 0204 (Step 1 (Send to MSS) 1501).
Next, the garbage collection elimination control block 0207 refers to a tag buffer and confirms whether a super step number, a group number, and a data type identifier of the read data are forwarded from the host 0102 (Step 2 (SS&GR?) 1502). Consequently, if these are stored in the tag buffer 0205, Step 41504 is performed (Step 21502 is Yes). If not, Step 31503 is performed (Step 21502 is No).
In Step 31503, the garbage collection elimination control block 0207 reads a logical address of read data and a size of the read data from the address buffer 0204. After that, the garbage collection elimination control block 0207 issues a data read command to the DRAM control circuit 0209, reads the table (LA_GR) 0910 illustrated in
Next, the garbage collection elimination control block 0207 issues a data read command to the DRAM control circuit 0209 and reads the table (GR_PA) 0900 illustrated in
The garbage collection elimination control block 0207 reads a super step number, a group number, and a data type identifier from the tag buffer 0205. Then, the garbage collection elimination control block 0207 refers to the table (GR_PA) 0900 read in Step 41504 and determines a way, a block and a page of a nonvolatile memory which is a data read destination (Step 5 (Det. Chip_Page) 1505).
At the end, the garbage collection elimination control block 0207 issues a data write command to the DRAM control circuit 0209, forwards the data read command from the host 0102 to the memory 0109 from a command buffer, forwards a super step number, a group number, and a data type identifier to the memory 0109 from the tag buffer 0205. Together with these, the garbage collection elimination control block 0207 forwards a way, a block, and a page of the nonvolatile memory 0108, which is a data read destination, to the memory 0109. Further, as necessary, the garbage collection elimination control block 0207 forwards a logical address and a data size of read data from the address buffer 0204 to the memory 0109 (Step 6 (To DRAM) 1506).
(4) Data Erasing Process
Processing of the memory subsystem control circuit 0107 in data erasing will be described based on
The memory access control circuit 0201 in the memory subsystem control circuit 0107 forwards, to the memory subsystem 0104, a data erase command stored in the memory 0106 managed by the host 0102, and a super step number, a group number, a data type identifier of data to be erased. Next, the memory access control circuit 0201 stores an erase command in the command buffer 0202 and stores a super step number, a group number, and a data type identifier in the tag buffer 0205 (Step 1 (Send to MSS) 1601). Alternatively, first, the memory access control circuit 0201 forwards, to the memory subsystem 0104, a data erase command stored in the memory 0106 managed by the host 0102 and a logical address and a data size of data to be erased. Then, a logical address and a size of data to be erased are stored in an address buffer (Step 1 (Send to MSS) 1601).
Next, the garbage collection elimination control block 0207 refers to the tag buffer 0205 and confirms whether a super step number, a group number, and a data type identifier of the data to be erased are forwarded from the host 0102 (Step 2 (SS&GR?) 1602). Consequently, if these are stored in the tag buffer 0205, Step 41604 is performed (Step 21602 is Yes). If not, Step 31603 is performed (Step 21602 is No).
In Step 31603, the garbage collection elimination control block 0207 reads a logical address and a data size of data to be erased from the address buffer 0204. After that, the garbage collection elimination control block 0207 issues a data read command to the DRAM control circuit 0209, reads the table (LA_GR) 0910 illustrated in
Next, the garbage collection elimination control block 0207 issues a data read command to the DRAM control circuit 0209 and reads the table (GR_PA) 0900 illustrated in
The garbage collection elimination control block 0207 reads a super step number, a group number, and a data type identifier from the tag buffer 0205. Further, the garbage collection elimination control block 0207 refers to the table (GR_PA) 0900 read in Step 41604 and determines a way and a block of a nonvolatile memory which is a data erase destination (Step 5 (Det. Chip_BLK) 1605).
The garbage collection elimination control block 0207 issues a data write command to the DRAM control circuit 0209, forwards the data erase command from the host 0102 to the memory 0109 from a command buffer, forwards a super step number, a group number, and a data type identifier to the memory 0109 from the tag buffer. Together with these, the garbage collection elimination control block 0207 forwards, to the memory 0109, such as a way and a block of the nonvolatile memory 0108 which is a data erase destination. Further, as necessary, the garbage collection elimination control block 0207 forwards a logical address and a data size of data to be erased from the address buffer 0204 to the memory 0109 (Step 6 (To DRAM) 1606).
(5) Data Processing in Nonvolatile Memory
Data processing of the memory subsystem control circuit 0107 in the nonvolatile memory 0108 will be described based on
Based on a result of Step 11701, the garbage collection elimination control block 0207 issues a read command to the DRAM control circuit 0209, and reads, from the memory 0109, a write command, a read command, and an erase command addressed to the nonvolatile memory 0108 in which a process is not performed. The garbage collection elimination control block 0207 selects one command with the highest priority for each nonvolatile memory 0108 (Step 2 (Det. priority) 1702) and sends the command to each nonvolatile memory control circuit 0208 (Step 3 (CMD to NVMC) 1703). In the case of a data write command to the nonvolatile memory 0108, the garbage collection elimination control block 0207 issues a read command to the DRAM control circuit 0209, reads data to be written from the memory 0109, and sends the data to the nonvolatile memory control circuit 0208 with a write command.
The nonvolatile memory control circuit 0208 of each channel 0210 notifies the garbage collection elimination control block 0207 of process completion as soon as the nonvolatile memory control circuit 0208 confirms that a process in the nonvolatile memory 0108 is completed (Step 4 (Receive from NVMC) 1704). In the case of data reading, read data is also sent to the garbage collection elimination control block 0207 from the nonvolatile memory control circuit 0208. The garbage collection elimination control block 0207 sends the read data to the memory access control circuit 0201. Further, as necessary, the garbage collection elimination control block 0207 issues a write command to the DRAM control circuit 0209 and forwards the read data to the memory 0109. After that, the memory access control circuit 0201 sends the read data to the host 0102.
At the end, the garbage collection elimination control block 0207 updates a table stored in the memory 0109 (step 5 (Update table) 1705). A table to be updated differs depending on process contents in the nonvolatile memory 0108. A reading process, a writing process, and an erasing process will be separately described below.
The garbage collection elimination control block 0207 issues a read command to the DRAM control circuit 0209 and reads the table (PBA_ST) 1400 illustrated in
The garbage collection elimination control block 0207 issues a read command to the DRAM control circuit 0209 and reads the table (GR_PTR) 1800 illustrated in
(iii) Update of Table in Data Erasing
The garbage collection elimination control block 0207 issues a read command to the DRAM control circuit 0209, reads the table (GR_PA) 0900, the table (LA_GR) 0910, and the table (PBA_ST) 1400, and reads a super step number, a group number, and a data type identifier of data to be erased. In the case where every data of one super step number and group number is erased, the garbage collection elimination control block 0207 updates the table (GR_PA) 0900 and the table (LA_GR) 0910. Further, the block status (Status of PBA) 1403 corresponding to the table (PBA_ST) 1400 is updated to “1: erased”. The garbage collection elimination control block 0207 issues a write command to the DRAM control circuit 0209 and writes the updated tables (GR_PA) 0900, (LA_GR) 0910, and (PBA_ST) 1400 back in the memory 0109.
Main effects produced by the above-described configuration and processing are as follows.
If an inexpensive and large capacity memory is usable, a large scale memory necessary for processing large scale data can be inexpensively provided, and in such a case, a high speed data access to the memory can be performed. Specifically, in a server which processes large scale data at a high speed, data is stored in a nonvolatile memory such as a NAND flash memory in which a bit cost is more inexpensive than that of a DRAM. In such a case, the nonvolatile memory is controlled by using a tag number corresponding to the data; therefore garbage collection in the nonvolatile memory is eliminated, and a high speed data access becomes possible. Further, even if a host which performs data processing does not specify an address and a size of data, by specifying a tag number, data can be written in the nonvolatile memory, data can be read from the nonvolatile memory and sent to a host, and data in the nonvolatile memory can be erased.
Furthermore, in the above description, a server 0101 is described as an example. The server 0101 includes the host 0102 which performs data processing, the nonvolatile memory 0108, and the memory subsystem control circuit 0107 which manages the nonvolatile memory 0108. The server 0101 may include the host 0102 which manages a data analysis and the nonvolatile memory 0108, the nonvolatile memory 0108, and a memory subsystem control circuit conforming to the management by the host 0102. Further, an example is described in which a large scale graph is analyzed by dividing in to multiple groups (Gr.) in accordance with a vertex number. However, large scale data processing is not limited to the above example, memory processing may be performed similar to the above processing by dividing large scale data (controlled by key and value) into multiple groups (Gr.) in accordance with Key in MapReduce processing. Further, in a large scale database processing application which secures a large layout on a source code, the above memory processing may be performed by recognizing the same layout as the same group (Gr.), and also an application rage of the above processing includes a case of searching a large scale database and performing data extraction. In these processing, large scale data can be read and written at a high speed. Therefore, a large scale data processing can be accelerated.
With reference to attached drawings, an embodiment has been specifically described above. However, a preferable embodiment is not limited to the above description, and can be variously changed within a range of a gist of the embodiment.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/JP2013/069481 | 7/18/2013 | WO | 00 |